@clickview/streamable-learning 0.34.1-dev.2 → 0.35.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/103-streamable-learning-5060b6cda5.chunk.css +7 -0
  3. package/dist/css/1269-streamable-learning-a12c4ebc99.chunk.css +2 -0
  4. package/dist/css/1457-streamable-learning-c8c8b3b9b1.chunk.css +50 -0
  5. package/dist/css/2334-streamable-learning-de03ae073a.chunk.css +2 -0
  6. package/dist/css/3322-streamable-learning-510e1aa3f3.chunk.css +34 -0
  7. package/dist/css/3838-streamable-learning-da10685fe8.chunk.css +22 -0
  8. package/dist/css/4254-streamable-learning-e493f4a027.chunk.css +2 -0
  9. package/dist/css/4607-streamable-learning-2605302fc2.chunk.css +90 -0
  10. package/dist/css/4772-streamable-learning-f83b838d71.chunk.css +9 -0
  11. package/dist/css/5003-streamable-learning-b38d2ddbbe.chunk.css +98 -0
  12. package/dist/css/5565-streamable-learning-0caae3809b.chunk.css +13 -0
  13. package/dist/css/6017-streamable-learning-098a205d01.chunk.css +6 -0
  14. package/dist/css/6356-streamable-learning-8c5b220bf6.chunk.css +1 -0
  15. package/dist/css/6987-streamable-learning-8f682301c6.chunk.css +1 -0
  16. package/dist/css/7317-streamable-learning-b5d226bbb6.chunk.css +5 -0
  17. package/dist/css/8058-streamable-learning-539cf7be18.chunk.css +12 -0
  18. package/dist/css/8294-streamable-learning-c797263ac2.chunk.css +1 -0
  19. package/dist/css/8496-streamable-learning-ce19f6ca52.chunk.css +13 -0
  20. package/dist/css/8601-streamable-learning-f525210660.chunk.css +6 -0
  21. package/dist/css/9514-streamable-learning-251703c6d1.chunk.css +2 -0
  22. package/dist/css/9766-streamable-learning-31650ffe5d.chunk.css +8 -0
  23. package/dist/css/9842-streamable-learning-24729103f7.chunk.css +4 -0
  24. package/dist/css/9899-streamable-learning-0338f8d2dc.chunk.css +4 -0
  25. package/dist/css/streamable-learning-dd0c1095d5.css +23 -0
  26. package/dist/languages/en.json +1 -0
  27. package/dist/scripts/103-aceced8961-streamable-learning.chunk.js +1 -0
  28. package/dist/scripts/1097-680a971192-streamable-learning.chunk.js +2 -0
  29. package/dist/scripts/1097-680a971192-streamable-learning.chunk.js.LICENSE.txt +105 -0
  30. package/dist/scripts/1269-2d0b903343-streamable-learning.chunk.js +2 -0
  31. package/dist/scripts/1269-2d0b903343-streamable-learning.chunk.js.LICENSE.txt +1 -0
  32. package/dist/scripts/1457-899f40d09a-streamable-learning.chunk.js +1 -0
  33. package/dist/scripts/1482-b1dd75897c-streamable-learning.chunk.js +1 -0
  34. package/dist/scripts/1934-fc017df0da-streamable-learning.chunk.js +2 -0
  35. package/dist/scripts/1934-fc017df0da-streamable-learning.chunk.js.LICENSE.txt +9 -0
  36. package/dist/scripts/2042-d51622d63e-streamable-learning.chunk.js +1 -0
  37. package/dist/scripts/2087-eba9033b1c-streamable-learning.chunk.js +1 -0
  38. package/dist/scripts/2245-8cd3224e1b-streamable-learning.chunk.js +1 -0
  39. package/dist/scripts/2334-00b028191d-streamable-learning.chunk.js +1 -0
  40. package/dist/scripts/2676-c842ec7e8d-streamable-learning.chunk.js +2 -0
  41. package/dist/scripts/2676-c842ec7e8d-streamable-learning.chunk.js.LICENSE.txt +1 -0
  42. package/dist/scripts/2877-5ffc9711f6-streamable-learning.chunk.js +1 -0
  43. package/dist/scripts/2911-2ec3a6600a-streamable-learning.chunk.js +1 -0
  44. package/dist/scripts/3057-731a8ca978-streamable-learning.chunk.js +1 -0
  45. package/dist/scripts/3093-efbcc927ea-streamable-learning.chunk.js +1 -0
  46. package/dist/scripts/3186-d1a6ccffde-streamable-learning.chunk.js +1 -0
  47. package/dist/scripts/3322-33c015dec9-streamable-learning.chunk.js +1 -0
  48. package/dist/scripts/3472-50ca92bde3-streamable-learning.chunk.js +1 -0
  49. package/dist/scripts/3838-4a38f33dc2-streamable-learning.chunk.js +1 -0
  50. package/dist/scripts/3941-2ef15ca9ac-streamable-learning.chunk.js +1 -0
  51. package/dist/scripts/4254-ef581b8105-streamable-learning.chunk.js +1 -0
  52. package/dist/scripts/4607-a4edb06dba-streamable-learning.chunk.js +2 -0
  53. package/dist/scripts/4607-a4edb06dba-streamable-learning.chunk.js.LICENSE.txt +1 -0
  54. package/dist/scripts/4772-3cb280f959-streamable-learning.chunk.js +2 -0
  55. package/dist/scripts/4772-3cb280f959-streamable-learning.chunk.js.LICENSE.txt +1 -0
  56. package/dist/scripts/4951-df701c6a8d-streamable-learning.chunk.js +1 -0
  57. package/dist/scripts/5003-7468a75d64-streamable-learning.chunk.js +2 -0
  58. package/dist/scripts/5003-7468a75d64-streamable-learning.chunk.js.LICENSE.txt +1 -0
  59. package/dist/scripts/5088-2e09e1ba6e-streamable-learning.chunk.js +1 -0
  60. package/dist/scripts/5173-a800a17d0d-streamable-learning.chunk.js +1 -0
  61. package/dist/scripts/5446-2cbe9f9d1b-streamable-learning.chunk.js +1 -0
  62. package/dist/scripts/5543-205aaa36a6-streamable-learning.chunk.js +1 -0
  63. package/dist/scripts/5565-224d86dc1b-streamable-learning.chunk.js +1 -0
  64. package/dist/scripts/578-2cc99f46f7-streamable-learning.chunk.js +1 -0
  65. package/dist/scripts/6017-5bd6f9bf7a-streamable-learning.chunk.js +2 -0
  66. package/dist/scripts/6017-5bd6f9bf7a-streamable-learning.chunk.js.LICENSE.txt +1 -0
  67. package/dist/scripts/6356-eefa3ff22e-streamable-learning.chunk.js +1 -0
  68. package/dist/scripts/6979-ef9a3931a2-streamable-learning.chunk.js +2 -0
  69. package/dist/scripts/6979-ef9a3931a2-streamable-learning.chunk.js.LICENSE.txt +1 -0
  70. package/dist/scripts/6987-e58de31cfe-streamable-learning.chunk.js +1 -0
  71. package/dist/scripts/7317-6b7186c85d-streamable-learning.chunk.js +1 -0
  72. package/dist/scripts/7347-772848ba8a-streamable-learning.chunk.js +1 -0
  73. package/dist/scripts/7570-cd4f70ff52-streamable-learning.chunk.js +2 -0
  74. package/dist/scripts/7570-cd4f70ff52-streamable-learning.chunk.js.LICENSE.txt +1 -0
  75. package/dist/scripts/7904-96574373ca-streamable-learning.chunk.js +1 -0
  76. package/dist/scripts/7925-1e1cfa2a04-streamable-learning.chunk.js +1 -0
  77. package/dist/scripts/8058-51c4b442d6-streamable-learning.chunk.js +1 -0
  78. package/dist/scripts/8126-9d09959b28-streamable-learning.chunk.js +2 -0
  79. package/dist/scripts/8126-9d09959b28-streamable-learning.chunk.js.LICENSE.txt +60 -0
  80. package/dist/scripts/8397-39ce77876d-streamable-learning.chunk.js +1 -0
  81. package/dist/scripts/8496-1b2519f9fd-streamable-learning.chunk.js +2 -0
  82. package/dist/scripts/8496-1b2519f9fd-streamable-learning.chunk.js.LICENSE.txt +1 -0
  83. package/dist/scripts/8599-b74e1ab6e3-streamable-learning.chunk.js +1 -0
  84. package/dist/scripts/8601-37783cf18b-streamable-learning.chunk.js +1 -0
  85. package/dist/scripts/8819-2a50dd6a9b-streamable-learning.chunk.js +1 -0
  86. package/dist/scripts/8937-5103db88d8-streamable-learning.chunk.js +1 -0
  87. package/dist/scripts/9390-bbaf07ad0f-streamable-learning.chunk.js +1 -0
  88. package/dist/scripts/9514-a31ca9af06-streamable-learning.chunk.js +1 -0
  89. package/dist/scripts/9766-48d72d9285-streamable-learning.chunk.js +2 -0
  90. package/dist/scripts/9766-48d72d9285-streamable-learning.chunk.js.LICENSE.txt +1 -0
  91. package/dist/scripts/9842-36d830ee87-streamable-learning.chunk.js +1 -0
  92. package/dist/scripts/9899-f33e8f1d43-streamable-learning.chunk.js +2 -0
  93. package/dist/scripts/9899-f33e8f1d43-streamable-learning.chunk.js.LICENSE.txt +1 -0
  94. package/dist/scripts/bundle-7ea4deeaa8.min.js +2 -0
  95. package/dist/scripts/bundle-7ea4deeaa8.min.js.LICENSE.txt +108 -0
  96. package/dist/scripts/pdf.worker.entry-a2092a6670.min.worker.js +2 -0
  97. package/dist/scripts/pdf.worker.entry-a2092a6670.min.worker.js.LICENSE.txt +21 -0
  98. package/package.json +3 -5
  99. package/typings/utils/imports.d.ts +1 -2
  100. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  101. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  102. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  103. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  104. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  105. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  106. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  107. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  108. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  109. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  110. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  111. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  112. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  113. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  114. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  115. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  116. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  117. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  118. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  119. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  120. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  121. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  122. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  123. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  124. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  125. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  126. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  127. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  128. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  129. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  130. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  131. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  132. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  133. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  134. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  135. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  136. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  137. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  138. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  139. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  140. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  141. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  142. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  143. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  144. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  145. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  146. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  147. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  148. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  149. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  150. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  151. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  152. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  153. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  154. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  155. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  156. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  157. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  158. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  159. package/dist/css/B-attovs.chunk.css +0 -9
  160. package/dist/css/B1NucFMn.chunk.css +0 -1
  161. package/dist/css/BPdg7JW4.chunk.css +0 -1
  162. package/dist/css/BPrUSCaY.chunk.css +0 -1
  163. package/dist/css/BR0fUt9D.chunk.css +0 -1
  164. package/dist/css/BhYm6SRm.chunk.css +0 -1
  165. package/dist/css/BiRz4h1c.chunk.css +0 -1
  166. package/dist/css/Bq1ChJn4.chunk.css +0 -1
  167. package/dist/css/Bt85j9js.chunk.css +0 -1
  168. package/dist/css/BuYrqi9E.chunk.css +0 -1
  169. package/dist/css/BugV1Bpa.chunk.css +0 -1
  170. package/dist/css/BuuVPl7n.chunk.css +0 -1
  171. package/dist/css/C1NkrNqQ.chunk.css +0 -1
  172. package/dist/css/C1qv5jz5.chunk.css +0 -1
  173. package/dist/css/C7XoyEPr.chunk.css +0 -1
  174. package/dist/css/C7_MDu56.chunk.css +0 -1
  175. package/dist/css/CC5F5C8O.chunk.css +0 -1
  176. package/dist/css/CChSC6Ta.chunk.css +0 -1
  177. package/dist/css/CCsCPLDG.chunk.css +0 -1
  178. package/dist/css/CD1qrI1T.chunk.css +0 -1
  179. package/dist/css/CKqvCBj4.chunk.css +0 -1
  180. package/dist/css/CLZ0Ycds.chunk.css +0 -1
  181. package/dist/css/CO7M4rZW.chunk.css +0 -1
  182. package/dist/css/CY0yvCW4.chunk.css +0 -1
  183. package/dist/css/CYGsw8FT.chunk.css +0 -1
  184. package/dist/css/Cbi3KYBa.chunk.css +0 -1
  185. package/dist/css/CliS8Q8r.chunk.css +0 -1
  186. package/dist/css/D-kQKsZN.chunk.css +0 -1
  187. package/dist/css/D2NwUVrK.chunk.css +0 -1
  188. package/dist/css/D4g1IoUU.chunk.css +0 -1
  189. package/dist/css/DBgpcO3T.chunk.css +0 -1
  190. package/dist/css/DDnpOnVB.chunk.css +0 -1
  191. package/dist/css/DZJSONGP.chunk.css +0 -1
  192. package/dist/css/Dc0zNt2E.chunk.css +0 -1
  193. package/dist/css/DeAfaPiD.chunk.css +0 -1
  194. package/dist/css/Dj731zLm.chunk.css +0 -1
  195. package/dist/css/DjPPxa0A.chunk.css +0 -1
  196. package/dist/css/DlOtoSz0.chunk.css +0 -1
  197. package/dist/css/DwduQat7.chunk.css +0 -1
  198. package/dist/css/Dzuu2GTx.chunk.css +0 -1
  199. package/dist/css/JAvsJreH.chunk.css +0 -1
  200. package/dist/css/NKlFYVOc.chunk.css +0 -1
  201. package/dist/css/VZd8qGtK.chunk.css +0 -1
  202. package/dist/css/Y7U--2na.chunk.css +0 -1
  203. package/dist/css/ir3IcK_l.chunk.css +0 -1
  204. package/dist/css/jbMisi9r.chunk.css +0 -1
  205. package/dist/css/kS5aDtIJ.chunk.css +0 -1
  206. package/dist/css/mqCL1o7m.chunk.css +0 -1
  207. package/dist/css/qZzkUeZk.chunk.css +0 -1
  208. package/dist/css/sC_H3yXE.chunk.css +0 -1
  209. package/dist/css/wR_6C_NV.chunk.css +0 -1
  210. package/dist/en.json +0 -1
  211. package/dist/scripts/7tlnqdEj.chunk.js +0 -2
  212. package/dist/scripts/7tlnqdEj.chunk.js.map +0 -1
  213. package/dist/scripts/82OY25pR.chunk.js +0 -2
  214. package/dist/scripts/82OY25pR.chunk.js.map +0 -1
  215. package/dist/scripts/8JOxjlae.chunk.js +0 -15
  216. package/dist/scripts/8JOxjlae.chunk.js.map +0 -1
  217. package/dist/scripts/B-_Kgmt0.chunk.js +0 -2
  218. package/dist/scripts/B-_Kgmt0.chunk.js.map +0 -1
  219. package/dist/scripts/B0KMLOp5.chunk.js +0 -2
  220. package/dist/scripts/B0KMLOp5.chunk.js.map +0 -1
  221. package/dist/scripts/B1QWJfPw.chunk.js +0 -3
  222. package/dist/scripts/B1QWJfPw.chunk.js.map +0 -1
  223. package/dist/scripts/B26T27lj.chunk.js +0 -2
  224. package/dist/scripts/B26T27lj.chunk.js.map +0 -1
  225. package/dist/scripts/B32lL5ga.chunk.js +0 -2
  226. package/dist/scripts/B32lL5ga.chunk.js.map +0 -1
  227. package/dist/scripts/B5lCwpXp.chunk.js +0 -2
  228. package/dist/scripts/B5lCwpXp.chunk.js.map +0 -1
  229. package/dist/scripts/B8qPNVvK.chunk.js +0 -2
  230. package/dist/scripts/B8qPNVvK.chunk.js.map +0 -1
  231. package/dist/scripts/BBnDr_iy.chunk.js +0 -2
  232. package/dist/scripts/BBnDr_iy.chunk.js.map +0 -1
  233. package/dist/scripts/BCQ0kOEO.chunk.js +0 -6
  234. package/dist/scripts/BCQ0kOEO.chunk.js.map +0 -1
  235. package/dist/scripts/BCyuhFou.chunk.js +0 -2
  236. package/dist/scripts/BCyuhFou.chunk.js.map +0 -1
  237. package/dist/scripts/BF7Uu3LW.chunk.js +0 -2
  238. package/dist/scripts/BF7Uu3LW.chunk.js.map +0 -1
  239. package/dist/scripts/BG6_Ss4G.chunk.js +0 -2
  240. package/dist/scripts/BG6_Ss4G.chunk.js.map +0 -1
  241. package/dist/scripts/BMrWb7Ku.chunk.js +0 -2
  242. package/dist/scripts/BMrWb7Ku.chunk.js.map +0 -1
  243. package/dist/scripts/BQH1xd9z.chunk.js +0 -2
  244. package/dist/scripts/BQH1xd9z.chunk.js.map +0 -1
  245. package/dist/scripts/BW1iqZG2.chunk.js +0 -2
  246. package/dist/scripts/BW1iqZG2.chunk.js.map +0 -1
  247. package/dist/scripts/BdHxGaRy.chunk.js +0 -2
  248. package/dist/scripts/BdHxGaRy.chunk.js.map +0 -1
  249. package/dist/scripts/BdniDID_.chunk.js +0 -2
  250. package/dist/scripts/BdniDID_.chunk.js.map +0 -1
  251. package/dist/scripts/BeTQIGnj.chunk.js +0 -2
  252. package/dist/scripts/BeTQIGnj.chunk.js.map +0 -1
  253. package/dist/scripts/Bf3WCYXw.chunk.js +0 -8
  254. package/dist/scripts/Bf3WCYXw.chunk.js.map +0 -1
  255. package/dist/scripts/Bh4NsrSi.chunk.js +0 -2
  256. package/dist/scripts/Bh4NsrSi.chunk.js.map +0 -1
  257. package/dist/scripts/BjOv-usB.chunk.js +0 -2
  258. package/dist/scripts/BjOv-usB.chunk.js.map +0 -1
  259. package/dist/scripts/BkGt8Gr1.chunk.js +0 -2
  260. package/dist/scripts/BkGt8Gr1.chunk.js.map +0 -1
  261. package/dist/scripts/BlFiywl_.chunk.js +0 -2
  262. package/dist/scripts/BlFiywl_.chunk.js.map +0 -1
  263. package/dist/scripts/BoNyBWaZ.chunk.js +0 -2
  264. package/dist/scripts/BoNyBWaZ.chunk.js.map +0 -1
  265. package/dist/scripts/Bvum7-8x.chunk.js +0 -8
  266. package/dist/scripts/Bvum7-8x.chunk.js.map +0 -1
  267. package/dist/scripts/BwDmMfAz.chunk.js +0 -2
  268. package/dist/scripts/BwDmMfAz.chunk.js.map +0 -1
  269. package/dist/scripts/BwgQZkdi.chunk.js +0 -2
  270. package/dist/scripts/BwgQZkdi.chunk.js.map +0 -1
  271. package/dist/scripts/C-7yn3rc.chunk.js +0 -2
  272. package/dist/scripts/C-7yn3rc.chunk.js.map +0 -1
  273. package/dist/scripts/C-pJ0Wi3.chunk.js +0 -2
  274. package/dist/scripts/C-pJ0Wi3.chunk.js.map +0 -1
  275. package/dist/scripts/C35NlkUr.chunk.js +0 -2
  276. package/dist/scripts/C35NlkUr.chunk.js.map +0 -1
  277. package/dist/scripts/C36-3UWl.chunk.js +0 -2
  278. package/dist/scripts/C36-3UWl.chunk.js.map +0 -1
  279. package/dist/scripts/C3fMNXil.chunk.js +0 -2
  280. package/dist/scripts/C3fMNXil.chunk.js.map +0 -1
  281. package/dist/scripts/C8Br2CdQ.chunk.js +0 -2
  282. package/dist/scripts/C8Br2CdQ.chunk.js.map +0 -1
  283. package/dist/scripts/CEmtkty-.chunk.js +0 -2
  284. package/dist/scripts/CEmtkty-.chunk.js.map +0 -1
  285. package/dist/scripts/CFs3kdQx.chunk.js +0 -53
  286. package/dist/scripts/CFs3kdQx.chunk.js.map +0 -1
  287. package/dist/scripts/CGNCg1fO.chunk.js +0 -2
  288. package/dist/scripts/CGNCg1fO.chunk.js.map +0 -1
  289. package/dist/scripts/CPXlV0fg.chunk.js +0 -2
  290. package/dist/scripts/CPXlV0fg.chunk.js.map +0 -1
  291. package/dist/scripts/CSoZBG8v.chunk.js +0 -2
  292. package/dist/scripts/CSoZBG8v.chunk.js.map +0 -1
  293. package/dist/scripts/CW7x8M-z.chunk.js +0 -2
  294. package/dist/scripts/CW7x8M-z.chunk.js.map +0 -1
  295. package/dist/scripts/CWHjB5Ye.chunk.js +0 -2
  296. package/dist/scripts/CWHjB5Ye.chunk.js.map +0 -1
  297. package/dist/scripts/CXslDtbb.chunk.js +0 -2
  298. package/dist/scripts/CXslDtbb.chunk.js.map +0 -1
  299. package/dist/scripts/CZLZ0bbA.chunk.js +0 -2
  300. package/dist/scripts/CZLZ0bbA.chunk.js.map +0 -1
  301. package/dist/scripts/CZafJWQk.chunk.js +0 -2
  302. package/dist/scripts/CZafJWQk.chunk.js.map +0 -1
  303. package/dist/scripts/CbFIe2Y6.chunk.js +0 -2
  304. package/dist/scripts/CbFIe2Y6.chunk.js.map +0 -1
  305. package/dist/scripts/Cg8SIDnK.chunk.js +0 -8
  306. package/dist/scripts/Cg8SIDnK.chunk.js.map +0 -1
  307. package/dist/scripts/Cib9o4sK.chunk.js +0 -2
  308. package/dist/scripts/Cib9o4sK.chunk.js.map +0 -1
  309. package/dist/scripts/Ciyuu-YU.chunk.js +0 -356
  310. package/dist/scripts/Ciyuu-YU.chunk.js.map +0 -1
  311. package/dist/scripts/CkMhHhda.chunk.js +0 -2
  312. package/dist/scripts/CkMhHhda.chunk.js.map +0 -1
  313. package/dist/scripts/CmAQo6rx.chunk.js +0 -2
  314. package/dist/scripts/CmAQo6rx.chunk.js.map +0 -1
  315. package/dist/scripts/CmcmWGL0.chunk.js +0 -2
  316. package/dist/scripts/CmcmWGL0.chunk.js.map +0 -1
  317. package/dist/scripts/Cmu1J2M7.chunk.js +0 -262
  318. package/dist/scripts/Cmu1J2M7.chunk.js.map +0 -1
  319. package/dist/scripts/CrkRNOU9.chunk.js +0 -2
  320. package/dist/scripts/CrkRNOU9.chunk.js.map +0 -1
  321. package/dist/scripts/CskJerl_.chunk.js +0 -2
  322. package/dist/scripts/CskJerl_.chunk.js.map +0 -1
  323. package/dist/scripts/Ct_IIxaS.chunk.js +0 -2
  324. package/dist/scripts/Ct_IIxaS.chunk.js.map +0 -1
  325. package/dist/scripts/Cuuw0EUi.chunk.js +0 -8
  326. package/dist/scripts/Cuuw0EUi.chunk.js.map +0 -1
  327. package/dist/scripts/Cz45aonc.chunk.js +0 -2
  328. package/dist/scripts/Cz45aonc.chunk.js.map +0 -1
  329. package/dist/scripts/D-I94wdL.chunk.js +0 -7
  330. package/dist/scripts/D-I94wdL.chunk.js.map +0 -1
  331. package/dist/scripts/D0UlXsF8.chunk.js +0 -2
  332. package/dist/scripts/D0UlXsF8.chunk.js.map +0 -1
  333. package/dist/scripts/D0cZC7S-.chunk.js +0 -2
  334. package/dist/scripts/D0cZC7S-.chunk.js.map +0 -1
  335. package/dist/scripts/D1D6Gqx1.chunk.js +0 -2
  336. package/dist/scripts/D1D6Gqx1.chunk.js.map +0 -1
  337. package/dist/scripts/D3tziVkG.chunk.js +0 -2
  338. package/dist/scripts/D3tziVkG.chunk.js.map +0 -1
  339. package/dist/scripts/D4MOOnR6.chunk.js +0 -2
  340. package/dist/scripts/D4MOOnR6.chunk.js.map +0 -1
  341. package/dist/scripts/D83kc0Wf.chunk.js +0 -2
  342. package/dist/scripts/D83kc0Wf.chunk.js.map +0 -1
  343. package/dist/scripts/D8dAIhzO.chunk.js +0 -2
  344. package/dist/scripts/D8dAIhzO.chunk.js.map +0 -1
  345. package/dist/scripts/DBp0J6X9.chunk.js +0 -2
  346. package/dist/scripts/DBp0J6X9.chunk.js.map +0 -1
  347. package/dist/scripts/DCds0mCy.chunk.js +0 -2
  348. package/dist/scripts/DCds0mCy.chunk.js.map +0 -1
  349. package/dist/scripts/DEwFBSVv.chunk.js +0 -2
  350. package/dist/scripts/DEwFBSVv.chunk.js.map +0 -1
  351. package/dist/scripts/DF55CDS8.chunk.js +0 -2
  352. package/dist/scripts/DF55CDS8.chunk.js.map +0 -1
  353. package/dist/scripts/DFw_xy-Y.chunk.js +0 -2
  354. package/dist/scripts/DFw_xy-Y.chunk.js.map +0 -1
  355. package/dist/scripts/DIGYepWa.chunk.js +0 -2
  356. package/dist/scripts/DIGYepWa.chunk.js.map +0 -1
  357. package/dist/scripts/DKeFeMvi.chunk.js +0 -2
  358. package/dist/scripts/DKeFeMvi.chunk.js.map +0 -1
  359. package/dist/scripts/DKqLfL60.chunk.js +0 -5
  360. package/dist/scripts/DKqLfL60.chunk.js.map +0 -1
  361. package/dist/scripts/DLJB8vZh.chunk.js +0 -2
  362. package/dist/scripts/DLJB8vZh.chunk.js.map +0 -1
  363. package/dist/scripts/DNtSrq_L.chunk.js +0 -2
  364. package/dist/scripts/DNtSrq_L.chunk.js.map +0 -1
  365. package/dist/scripts/DOHPsm0Q.chunk.js +0 -2
  366. package/dist/scripts/DOHPsm0Q.chunk.js.map +0 -1
  367. package/dist/scripts/DP-ErTOD.chunk.js +0 -2
  368. package/dist/scripts/DP-ErTOD.chunk.js.map +0 -1
  369. package/dist/scripts/DUwkrIwb.chunk.js +0 -2
  370. package/dist/scripts/DUwkrIwb.chunk.js.map +0 -1
  371. package/dist/scripts/DUyJfVnL.chunk.js +0 -2
  372. package/dist/scripts/DUyJfVnL.chunk.js.map +0 -1
  373. package/dist/scripts/DVfbSloY.chunk.js +0 -2
  374. package/dist/scripts/DVfbSloY.chunk.js.map +0 -1
  375. package/dist/scripts/DWvpibWQ.chunk.js +0 -2
  376. package/dist/scripts/DWvpibWQ.chunk.js.map +0 -1
  377. package/dist/scripts/DYmgSjx-.chunk.js +0 -10
  378. package/dist/scripts/DYmgSjx-.chunk.js.map +0 -1
  379. package/dist/scripts/D_EfITTc.chunk.js +0 -2
  380. package/dist/scripts/D_EfITTc.chunk.js.map +0 -1
  381. package/dist/scripts/DayWKE6G.chunk.js +0 -2
  382. package/dist/scripts/DayWKE6G.chunk.js.map +0 -1
  383. package/dist/scripts/DcOpKno_.chunk.js +0 -2
  384. package/dist/scripts/DcOpKno_.chunk.js.map +0 -1
  385. package/dist/scripts/DgMPP2NS.chunk.js +0 -2
  386. package/dist/scripts/DgMPP2NS.chunk.js.map +0 -1
  387. package/dist/scripts/DhWvZ3GP.chunk.js +0 -2
  388. package/dist/scripts/DhWvZ3GP.chunk.js.map +0 -1
  389. package/dist/scripts/Digrmnl9.chunk.js +0 -2
  390. package/dist/scripts/Digrmnl9.chunk.js.map +0 -1
  391. package/dist/scripts/DjWOPQVv.chunk.js +0 -2
  392. package/dist/scripts/DjWOPQVv.chunk.js.map +0 -1
  393. package/dist/scripts/DkSHJqHu.chunk.js +0 -2
  394. package/dist/scripts/DkSHJqHu.chunk.js.map +0 -1
  395. package/dist/scripts/Dpq10cRY.chunk.js +0 -2
  396. package/dist/scripts/Dpq10cRY.chunk.js.map +0 -1
  397. package/dist/scripts/DrsDxQ8i.chunk.js +0 -2
  398. package/dist/scripts/DrsDxQ8i.chunk.js.map +0 -1
  399. package/dist/scripts/DrsVPpSl.chunk.js +0 -3
  400. package/dist/scripts/DrsVPpSl.chunk.js.map +0 -1
  401. package/dist/scripts/DvDdiDQN.chunk.js +0 -7
  402. package/dist/scripts/DvDdiDQN.chunk.js.map +0 -1
  403. package/dist/scripts/DwU9lZgg.chunk.js +0 -2
  404. package/dist/scripts/DwU9lZgg.chunk.js.map +0 -1
  405. package/dist/scripts/I8EoNmf8.chunk.js +0 -2
  406. package/dist/scripts/I8EoNmf8.chunk.js.map +0 -1
  407. package/dist/scripts/Im8afRMN.chunk.js +0 -2
  408. package/dist/scripts/Im8afRMN.chunk.js.map +0 -1
  409. package/dist/scripts/N_QgBckB.chunk.js +0 -2
  410. package/dist/scripts/N_QgBckB.chunk.js.map +0 -1
  411. package/dist/scripts/SnHtKbiQ.chunk.js +0 -2
  412. package/dist/scripts/SnHtKbiQ.chunk.js.map +0 -1
  413. package/dist/scripts/U-eF69sj.chunk.js +0 -2
  414. package/dist/scripts/U-eF69sj.chunk.js.map +0 -1
  415. package/dist/scripts/XarUQJMp.chunk.js +0 -2
  416. package/dist/scripts/XarUQJMp.chunk.js.map +0 -1
  417. package/dist/scripts/ZYx7Po5r.chunk.js +0 -2
  418. package/dist/scripts/ZYx7Po5r.chunk.js.map +0 -1
  419. package/dist/scripts/app-DfSv_-O3.js +0 -220
  420. package/dist/scripts/app-DfSv_-O3.js.map +0 -1
  421. package/dist/scripts/awsfwCdu.chunk.js +0 -2
  422. package/dist/scripts/awsfwCdu.chunk.js.map +0 -1
  423. package/dist/scripts/b1pZWz43.chunk.js +0 -2
  424. package/dist/scripts/b1pZWz43.chunk.js.map +0 -1
  425. package/dist/scripts/cvX-F_mx.chunk.js +0 -2
  426. package/dist/scripts/cvX-F_mx.chunk.js.map +0 -1
  427. package/dist/scripts/lBHPAFYv.chunk.js +0 -2
  428. package/dist/scripts/lBHPAFYv.chunk.js.map +0 -1
  429. package/dist/scripts/mP-Ymt5z.chunk.js +0 -2
  430. package/dist/scripts/mP-Ymt5z.chunk.js.map +0 -1
  431. package/dist/scripts/nay4aGaa.chunk.js +0 -2
  432. package/dist/scripts/nay4aGaa.chunk.js.map +0 -1
  433. package/dist/scripts/pkzD5BEm.chunk.js +0 -2
  434. package/dist/scripts/pkzD5BEm.chunk.js.map +0 -1
  435. package/dist/scripts/tHf2V3t0.chunk.js +0 -2
  436. package/dist/scripts/tHf2V3t0.chunk.js.map +0 -1
  437. package/vite.config.ts +0 -6
@@ -1 +0,0 @@
1
- {"version":3,"file":"CFs3kdQx.chunk.js","sources":["../../../../libs/shared/src/interfaces/models/interactive/InteractionTypeId.ts","../../../../libs/shared/src/components/svgs/clickview-logo/ClickViewLogo.tsx","../../../../../node_modules/@dnd-kit/utilities/dist/utilities.esm.js","../../../../../node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js","../../../../../node_modules/@dnd-kit/core/dist/core.esm.js","../../../../libs/shared/src/components/drag-drop-move/DragDropMoveWrapper.tsx","../../../../libs/shared/src/components/pagination/Pagination.tsx","../../../../../node_modules/@dnd-kit/modifiers/dist/modifiers.esm.js","../../../../../node_modules/@dnd-kit/sortable/dist/sortable.esm.js","../../../../libs/shared/src/components/sortable/SortableContainerWrapper.tsx","../../../../libs/shared/src/components/sortable/SortableItemWrapper.tsx","../../../../libs/shared/src/images/svg/objects/HeartOutlineSvg.tsx","../../../../libs/shared/src/images/svg/objects/HeartSvg.tsx","../../../../libs/shared/src/utils/FavouriteHelpers.ts","../../../../libs/shared/src/components/favourite-button/FavouriteButton.tsx","../../../../libs/shared/src/components/thumbnails/bottom-bar/videos/VideoWatchProgressBar.tsx","../../../../libs/shared/src/components/thumbnails/bottom-bar/VideoThumbnailBottomBar.tsx","../../../../libs/shared/src/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar.tsx","../../../../libs/shared/src/components/thumbnails/plugin-hover/PluginHover.tsx","../../../../libs/shared/src/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock.tsx","../../../../libs/shared/src/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo.tsx","../../../../libs/shared/src/components/video-type-badge/VideoTypeBadge.tsx","../../../../libs/shared/src/context/player-context/components/GlobalPlayerConsumer.tsx","../../../../libs/shared/src/components/thumbnails/video/expandable/ExpandableVideoThumbnail.tsx","../../../../libs/shared/src/components/thumbnails/thumbnail-badges/VideoThumbnailBadges.tsx","../../../../libs/shared/src/components/video-list/components/restriction-padlock/RestrictionPadlock.tsx","../../../../libs/shared/src/components/video-title/VideoTitle.tsx","../../../../libs/shared/src/components/thumbnails/thumbnail-text/ThumbnailText.tsx","../../../../libs/shared/src/components/video-guidance/tag/VideoGuidanceTag.tsx","../../../../libs/shared/src/components/video-guidance/classroom-guide/ClassroomGuideTag.tsx","../../../../libs/shared/src/components/video-guidance/interactives/InteractivesTag.tsx","../../../../libs/shared/src/components/video-guidance/resources/ResourcesTag.tsx","../../../../libs/shared/src/components/video-list/components/video-guidance/VideoItemGuidance.tsx","../../../../libs/shared/src/components/thumbnails/remove-button/RemoveVideoButton.tsx","../../../../libs/shared/src/components/thumbnails/video/popout/PopoutVideoThumbnail.tsx","../../../../libs/shared/src/components/mask/Mask.tsx","../../../../libs/shared/src/images/svg/status/TickSvg.tsx","../../../../libs/shared/src/components/check-mark-button/CheckMarkButton.tsx","../../../../libs/shared/src/components/thumbnails/thumbnail-actions/VideoThumbnailActions.tsx","../../../../libs/shared/src/enums/ThumbnailTextPosition.ts","../../../../libs/shared/src/components/thumbnails/video/static/StaticVideoThumbnail.tsx","../../../../libs/shared/src/components/thumbnails/video/VideoThumbnail.tsx","../../../../libs/shared/src/components/video-list/components/video-item-description/VideoItemDescription.tsx","../../../../libs/shared/src/images/svg/objects/HandleSvg.tsx","../../../../libs/shared/src/components/video-list/components/video-item-left-content/VideoItemLeftContent.tsx","../../../../libs/shared/src/components/video-list/components/video-item-restriction-badge/RestrictionBadge.tsx","../../../../libs/shared/src/components/video-list/components/video-item-restriction-badge/VideoItemRestrictionBadge.tsx","../../../../libs/shared/src/components/video-list/components/video-item-title/VideoItemTitle.tsx","../../../../libs/shared/src/components/sign-in-to-watch/SignInToWatch.tsx","../../../../libs/shared/src/context/VideoActionsContext.tsx","../../../../libs/shared/src/components/video-list/components/video-item-actions/VideoItemActions.tsx","../../../../libs/shared/src/components/video-list/components/video-item-top-right/VideoItemTopRight.tsx","../../../../libs/shared/src/components/video-list/VideoListHelper.tsx","../../../../libs/shared/src/components/video-list/clip-item/ClipItem.tsx","../../../../libs/shared/src/components/svgs/interaction-types/InteractionTypes.tsx","../../../../libs/shared/src/utils/interaction-type-helper/InteractionTypeHelper.tsx","../../../../libs/shared/src/components/interactive-questions/formatAnnotationText.ts","../../../../libs/shared/src/components/interactive-questions/InteractionLabel.tsx","../../../../libs/shared/src/components/video-list/interactive-item/InteractiveItemQuestions.tsx","../../../../libs/shared/src/components/video-list/interactive-item/InteractiveItem.tsx","../../../../libs/shared/src/components/video-list/video-item/VideoItem.tsx","../../../../libs/shared/src/components/video-list/VideoList.tsx"],"sourcesContent":["export enum InteractionTypeId {\n MultipleChoice = 1,\n ShortAnswer = 2,\n TrueOrFalse = 3,\n Annotation = 4,\n Image = 5,\n MissingWord = 6,\n Illustration = 7\n}\n\nexport const ExperimentalInteractionTypes: Partial<Record<InteractionTypeId, boolean>> = {\n [InteractionTypeId.Illustration]: true\n};","import React from 'react';\n\nexport function ClickViewLogo(): React.ReactElement {\n return (\n <svg viewBox='0 0 434 71'>\n <g>\n <path fill='#000000' d='M114.44 56.57l3.5 3.5a32.87 32.87 0 0 1-25.16 11.26c-19.63 0-33.62-15.54-33.62-35.16C59.16 16.55 73.16 1 92.78 1a32.31 32.31 0 0 1 24.19 10.4l-3.6 3.3a27.32 27.32 0 0 0-20.59-8.74c-16.91 0-28.39 13.5-28.39 30.21s11.48 30.21 28.39 30.21a28.08 28.08 0 0 0 21.66-9.81zM126.64 1h4.55v70.22h-4.73L126.64 1zm17.3 10.6a3.7 3.7 0 1 1 0 7.4 3.7 3.7 0 0 1 0-7.4zm-2.41 15.07h4.81v44.56h-4.81V26.67zm48 33.15l3.33 3.15a21.8 21.8 0 0 1-17.31 8.61c-12.59 0-21.76-10-21.76-22.22 0-12.22 9.17-22.22 21.76-22.22a21.84 21.84 0 0 1 16.85 8l-3.43 3.06a17.15 17.15 0 0 0-13.42-6.3c-10.09 0-16.76 8.15-16.76 17.5s6.67 17.5 16.76 17.5a17.38 17.38 0 0 0 13.98-7.08zm14.99-9.33v20.74h-4.73V1.01h4.73v47.75l20.74-19.02h6.64l-21.56 19.84L234 71.23h-7.01l-22.47-20.74z'/>\n <path fill='#F8981D' d='M304.09 19.4a5.56 5.56 0 1 1 0-11.12 5.56 5.56 0 0 1 0 11.12zm-5.56 7.27h11.11v44.56h-11.11V26.67zm61.42 22.15c0 .81 0 2.42-.09 4h-31.75c.8 3.77 5.2 8.61 11.93 8.61a17.11 17.11 0 0 0 11.66-4.31l5.38 8.16a27.23 27.23 0 0 1-17 6.1c-12.92 0-22.88-9.87-22.88-22.34s9.06-22.33 21.35-22.33c11.62-.04 21.4 9.02 21.4 22.11zm-10.77-3.76c-.18-3.68-3.58-8.62-10.67-8.62-6.91 0-10.05 4.85-10.4 8.62h21.07zM385.92 71h-6.42l-19.64-44.37h13.97l9.16 23.98 9.72-23.98h8.31l9.63 23.98 9.16-23.98h13.97L414.24 71h-6.52l-10.85-23.7L385.92 71zm-120.22.35h-6L226.11 1.01h17.01l19.42 44.18 18.08-44.18h16.91L265.7 71.35zM0 1l41 35L0 71V1z'/>\n </g>\n </svg>\n );\n}\n\nexport function ClickViewLogoInverted(): React.ReactElement {\n return (\n <svg viewBox='0 0 434 71'>\n <g>\n <path fill='#FFFFFF' d='M114.44 56.57l3.5 3.5a32.87 32.87 0 0 1-25.16 11.26c-19.63 0-33.62-15.54-33.62-35.16C59.16 16.55 73.16 1 92.78 1a32.31 32.31 0 0 1 24.19 10.4l-3.6 3.3a27.32 27.32 0 0 0-20.59-8.74c-16.91 0-28.39 13.5-28.39 30.21s11.48 30.21 28.39 30.21a28.08 28.08 0 0 0 21.66-9.81zM126.64 1h4.55v70.22h-4.73L126.64 1zm17.3 10.6a3.7 3.7 0 1 1 0 7.4 3.7 3.7 0 0 1 0-7.4zm-2.41 15.07h4.81v44.56h-4.81V26.67zm48 33.15l3.33 3.15a21.8 21.8 0 0 1-17.31 8.61c-12.59 0-21.76-10-21.76-22.22 0-12.22 9.17-22.22 21.76-22.22a21.84 21.84 0 0 1 16.85 8l-3.43 3.06a17.15 17.15 0 0 0-13.42-6.3c-10.09 0-16.76 8.15-16.76 17.5s6.67 17.5 16.76 17.5a17.38 17.38 0 0 0 13.98-7.08zm14.99-9.33v20.74h-4.73V1.01h4.73v47.75l20.74-19.02h6.64l-21.56 19.84L234 71.23h-7.01l-22.47-20.74z'/>\n <path fill='#F8981D' d='M304.09 19.4a5.56 5.56 0 1 1 0-11.12 5.56 5.56 0 0 1 0 11.12zm-5.56 7.27h11.11v44.56h-11.11V26.67zm61.42 22.15c0 .81 0 2.42-.09 4h-31.75c.8 3.77 5.2 8.61 11.93 8.61a17.11 17.11 0 0 0 11.66-4.31l5.38 8.16a27.23 27.23 0 0 1-17 6.1c-12.92 0-22.88-9.87-22.88-22.34s9.06-22.33 21.35-22.33c11.62-.04 21.4 9.02 21.4 22.11zm-10.77-3.76c-.18-3.68-3.58-8.62-10.67-8.62-6.91 0-10.05 4.85-10.4 8.62h21.07zM385.92 71h-6.42l-19.64-44.37h13.97l9.16 23.98 9.72-23.98h8.31l9.63 23.98 9.16-23.98h13.97L414.24 71h-6.52l-10.85-23.7L385.92 71zm-120.22.35h-6L226.11 1.01h17.01l19.42 44.18 18.08-44.18h16.91L265.7 71.35zM0 1l41 35L0 71V1z'/>\n </g>\n </svg>\n );\n}\n\nexport function ClickViewPlayLogo(): React.ReactElement {\n return (\n <svg viewBox='0 0 41 70'>\n <g>\n <path fill='#F8981D' d='M 0 0 41 35 0 70z'/>\n </g>\n </svg>\n );\n}\n\nexport function ClickViewPrimaryLogo(): React.ReactElement {\n return (\n <svg viewBox='0 0 120 120'>\n <g id='Auth' stroke='none' strokeWidth='1' fill='none' fillRule='evenodd'>\n <g id='Launchpad' transform='translate(-1595.000000, -374.000000)'>\n <g id='Primary---Square' transform='translate(1595.000000, 374.000000)'>\n <rect id='Rectangle' fill='#FFFFFF' x='0' y='0' width='120' height='120' rx='10'></rect>\n <path d='M6,0 L60,0 L60,0 L60,60 L0,60 L0,6 C-4.05812251e-16,2.6862915 2.6862915,6.08718376e-16 6,0 Z' id='Rectangle' fill='#37A2E8'></path>\n <path d='M0,60 L60,60 L60,120 L6,120 C2.6862915,120 4.05812251e-16,117.313708 0,114 L0,60 L0,60 Z' id='Rectangle-Copy-2' fill='#40C3BB'></path>\n <path d='M60,60 L120,60 L120,114 C120,117.313708 117.313708,120 114,120 L60,120 L60,120 L60,60 Z' id='Rectangle-Copy-3' fill='#F7847B'></path>\n <path d='M60,0 L114,0 C117.313708,-6.08718376e-16 120,2.6862915 120,6 L120,60 L120,60 L60,60 L60,0 Z' id='Rectangle-Copy' fill='#B679C8'></path>\n <rect id='Rectangle' fill='#FFFFFF' x='12' y='11' width='97' height='97' rx='4'></rect>\n <polygon id='Fill-1' fill='#F8981D' points='43.6 27.2 43.6 91.0980958 81.3551099 59.1472'></polygon>\n </g>\n </g>\n </g>\n </svg>\n );\n}\n\nexport function ClickViewLogoXmas(): React.ReactElement {\n return (\n <svg width='1201' height='195' viewBox='0 0 1201 195' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path d='M322.156 152.932L331.788 162.564C315.469 181.554 290.893 193.58 262.547 193.58C208.551 193.58 170.05 150.813 170.05 96.7901C170.05 42.7671 208.551 0 262.547 0C289.82 0 312.799 10.9532 329.119 28.5939L319.239 37.6758C305.616 22.7045 285.829 13.6227 262.574 13.6227C216.064 13.6227 184.498 50.7756 184.498 96.7626C184.498 142.75 216.037 179.902 262.574 179.902C287.425 179.902 308.836 168.949 322.184 152.905L322.156 152.932Z' fill='#231F20'/>\n <path d='M355.732 0H368.254V193.277H355.236L355.732 0Z' fill='#231F20'/>\n <path d='M403.343 29.1719C408.957 29.1719 413.525 33.7678 413.525 39.3545C413.525 44.9412 408.93 49.5372 403.343 49.5372C397.756 49.5372 393.16 44.9412 393.16 39.3545C393.16 33.7678 397.756 29.1719 403.343 29.1719Z' fill='#231F20'/>\n <path d='M409.948 70.6455H396.71V193.277H409.948V70.6455Z' fill='#231F20'/>\n <path d='M528.809 161.904L537.974 170.573C537.974 170.573 521.929 194.269 490.336 194.269C455.687 194.269 430.451 166.748 430.451 133.118C430.451 99.4875 455.687 71.9668 490.336 71.9668C520.663 71.9668 536.708 93.8732 536.708 93.8732L527.268 102.295C527.268 102.295 514.774 84.9565 490.308 84.9565C462.54 84.9565 444.183 107.386 444.183 133.118C444.183 158.849 462.54 181.279 490.308 181.279C516.04 181.279 528.782 161.904 528.782 161.904H528.809Z' fill='#231F20'/>\n <path d='M570.063 136.172V193.277H557.045V0H570.063V131.439L627.14 79.0943H645.414L586.08 133.668L651.193 193.277H631.902L570.063 136.172Z' fill='#231F20'/>\n <path d='M859.359 70.6455H828.784V193.277H859.359V70.6455Z' fill='#F8981D'/>\n <path d='M997.815 131.631C997.815 133.861 997.815 138.291 997.568 142.75H910.19C912.419 153.125 924.5 166.445 943.022 166.445C963.497 166.445 975.111 154.584 975.111 154.584L989.917 176.793C989.917 176.793 971.395 193.58 943.022 193.58C907.465 193.58 880.082 166.417 880.082 132.127C880.082 97.836 905.016 70.6731 938.839 70.6731C972.661 70.6731 997.843 95.6068 997.843 131.631H997.815ZM968.203 121.256C967.708 111.128 958.323 97.5608 938.839 97.5608C919.354 97.5608 911.18 110.881 910.217 121.256H968.231H968.203Z' fill='#F8981D'/>\n <path d='M1069.29 192.645H1051.62L997.567 70.5354H1036.01L1061.22 136.53L1087.97 70.5354H1110.84L1137.34 136.53L1162.55 70.5354H1201L1147.22 192.645H1129.31L1099.42 127.421L1069.29 192.645Z' fill='#F8981D'/>\n <path d='M738.433 193.608H721.949L629.507 0H676.292L729.737 121.614L779.494 0H826.031L738.433 193.608Z' fill='#F8981D'/>\n <path d='M844.085 50.6381C852.536 50.6381 859.387 43.7874 859.387 35.3366C859.387 26.8859 852.536 20.0352 844.085 20.0352C835.634 20.0352 828.784 26.8859 828.784 35.3366C828.784 43.7874 835.634 50.6381 844.085 50.6381Z' fill='#F8981D'/>\n <g clipPath='url(#clip0_7378_7845)'>\n <path d='M90.9047 160.041L93.8194 184.344C93.9563 185.463 93.7048 186.595 93.107 187.55C92.5093 188.505 91.6015 189.226 90.5356 189.592C82.1161 192.461 68.1215 192.468 59.6835 189.592C58.6176 189.226 57.7098 188.505 57.112 187.55C56.5143 186.595 56.2628 185.463 56.3997 184.344L59.2555 160.533L90.9047 160.041Z' fill='#885651'/>\n <path d='M123.608 124.956V124.96C129.827 131.888 141.986 149.802 141.986 155.59C141.986 159.008 138.962 161.438 135.201 161.438C128.994 161.438 120.772 158.543 120.772 158.543C120.722 158.556 114.217 168.265 96.081 161.496C94.8237 162.987 93.263 164.192 91.5031 165.031C87.989 166.761 82.4853 167.745 75.1095 163.917C67.7294 167.745 62.2132 166.757 58.7158 165.031C56.9495 164.202 55.3867 162.995 54.1379 161.496C36.0019 168.265 29.4972 158.556 29.4469 158.543C29.4469 158.543 21.225 161.438 15.0177 161.438C11.2565 161.438 8.23242 159.008 8.23242 155.59C8.23242 149.802 20.3915 131.888 26.6114 124.96V124.956L75.1308 94.168L123.608 124.956Z' fill='#5DC786'/>\n <path d='M102.912 86.0957C103.691 86.9083 127.716 112.906 127.716 119.189C127.718 120.797 127.082 122.34 125.949 123.48C124.815 124.621 123.276 125.266 121.668 125.275C121.128 125.275 118.129 125.178 112.877 123.679C112.923 123.67 105.212 131.888 92.035 125.295C92.081 125.283 87.4779 132.378 75.1094 126.82C62.6404 132.424 58.2467 125.308 58.1839 125.295C45.0028 131.888 37.3882 123.687 37.3421 123.679C32.0898 125.178 29.0909 125.275 28.5506 125.275C26.9426 125.266 25.4034 124.621 24.2699 123.48C23.1364 122.34 22.5009 120.797 22.5024 119.189C22.5024 112.931 46.5148 86.9292 47.3065 86.0999L76.5108 70.782L102.912 86.0957Z' fill='#5DC786'/>\n <path d='M43.6582 80.8518C43.6582 68.3074 69.279 33.8113 75.1093 33.8113C80.9396 33.8113 106.56 68.3074 106.56 80.8518C106.56 85.0815 102.291 87.0465 98.4767 87.0465C91.993 87.0465 85.3375 81.9534 85.3375 81.9534C78.2855 86.9209 71.1421 87.8347 64.8811 81.9534C64.8811 81.9534 58.2256 87.0465 51.7419 87.0465C47.8976 87.0465 43.6582 85.0835 43.6582 80.8518Z' fill='#5DC786'/>\n <path d='M92.5209 106.845C95.6623 106.845 98.2088 104.299 98.2088 101.157C98.2088 98.016 95.6623 95.4695 92.5209 95.4695C89.3796 95.4695 86.833 98.016 86.833 101.157C86.833 104.299 89.3796 106.845 92.5209 106.845Z' fill='#F8981D'/>\n <path d='M105.178 153.697C108.32 153.697 110.866 151.151 110.866 148.009C110.866 144.868 108.32 142.322 105.178 142.322C102.037 142.322 99.4902 144.868 99.4902 148.009C99.4902 151.151 102.037 153.697 105.178 153.697Z' fill='#7A76E8'/>\n <path d='M53.4511 112.533C56.5924 112.533 59.139 109.987 59.139 106.845C59.139 103.704 56.5924 101.157 53.4511 101.157C50.3097 101.157 47.7632 103.704 47.7632 106.845C47.7632 109.987 50.3097 112.533 53.4511 112.533Z' fill='#38A2E8'/>\n <path d='M47.7631 148.009C50.9045 148.009 53.451 145.463 53.451 142.321C53.451 139.18 50.9045 136.634 47.7631 136.634C44.6218 136.634 42.0752 139.18 42.0752 142.321C42.0752 145.463 44.6218 148.009 47.7631 148.009Z' fill='#40C2BB'/>\n <path d='M70.745 67.0843C73.8864 67.0843 76.433 64.5378 76.433 61.3964C76.433 58.2551 73.8864 55.7085 70.745 55.7085C67.6037 55.7085 65.0571 58.2551 65.0571 61.3964C65.0571 64.5378 67.6037 67.0843 70.745 67.0843Z' fill='#F7847B'/>\n <path d='M88.169 14.4187C92.3742 14.4187 94.125 19.8051 90.7198 22.2805L87.7586 24.4333C87.0159 24.9716 86.463 25.7314 86.1793 26.6036C85.8956 27.4759 85.8956 28.4156 86.1795 29.2877L87.3104 32.7725C87.5941 33.6451 87.5943 34.585 87.311 35.4577C87.0276 36.3304 86.4753 37.0909 85.7331 37.6303C84.9909 38.1698 84.097 38.4604 83.1795 38.4605C82.262 38.4607 81.368 38.1703 80.6256 37.6311L77.6644 35.4783C76.9215 34.9392 76.0272 34.649 75.1094 34.649C74.1916 34.649 73.2973 34.9392 72.5545 35.4783L69.5932 37.6311C68.8509 38.1703 67.9569 38.4607 67.0394 38.4605C66.1219 38.4604 65.228 38.1698 64.4858 37.6303C63.7436 37.0909 63.1912 36.3304 62.9079 35.4577C62.6245 34.585 62.6247 33.6451 62.9085 32.7725L64.0394 29.2877C64.3232 28.4156 64.3233 27.4759 64.0396 26.6036C63.7559 25.7314 63.203 24.9716 62.4603 24.4333L59.4991 22.2805C56.0939 19.8051 57.8446 14.4187 62.0498 14.4187H65.7147C66.6321 14.4187 67.5259 14.128 68.2678 13.5885C69.0098 13.049 69.5617 12.2883 69.8445 11.4156L70.9754 7.935C71.2592 7.06208 71.812 6.30138 72.5546 5.76191C73.2972 5.22244 74.1915 4.93188 75.1094 4.93188C76.0273 4.93188 76.9216 5.22244 77.6643 5.76191C78.4069 6.30138 78.9597 7.06208 79.2434 7.935L80.3743 11.4156C80.6571 12.2883 81.2091 13.049 81.951 13.5885C82.693 14.128 83.5868 14.4187 84.5041 14.4187H88.169Z' fill='#FFCD52'/>\n <path d='M53.4524 114.627C54.9915 114.627 56.4961 114.171 57.7758 113.316C59.0556 112.461 60.053 111.245 60.642 109.823C61.231 108.402 61.3851 106.837 61.0848 105.327C60.7846 103.818 60.0434 102.431 58.9551 101.343C57.8667 100.254 56.4801 99.5133 54.9706 99.213C53.461 98.9127 51.8963 99.0668 50.4743 99.6558C49.0524 100.245 47.837 101.242 46.9819 102.522C46.1268 103.802 45.6704 105.306 45.6704 106.845C45.6728 108.909 46.4934 110.887 47.9523 112.346C49.4112 113.804 51.3892 114.625 53.4524 114.627ZM53.4524 103.252C54.1631 103.252 54.8579 103.463 55.4488 103.858C56.0398 104.252 56.5004 104.814 56.7724 105.47C57.0443 106.127 57.1155 106.849 56.9769 107.547C56.8382 108.244 56.4959 108.884 55.9934 109.386C55.4908 109.889 54.8505 110.231 54.1534 110.37C53.4564 110.509 52.7338 110.437 52.0772 110.165C51.4206 109.893 50.8593 109.433 50.4645 108.842C50.0696 108.251 49.8589 107.556 49.8589 106.845C49.8599 105.893 50.2389 104.979 50.9125 104.306C51.5862 103.632 52.4996 103.253 53.4524 103.252Z' fill='#222123'/>\n <path d='M47.7649 134.538C46.2257 134.538 44.7212 134.994 43.4414 135.85C42.1617 136.705 41.1643 137.92 40.5753 139.342C39.9863 140.764 39.8322 142.329 40.1324 143.838C40.4327 145.348 41.1739 146.734 42.2622 147.823C43.3505 148.911 44.7372 149.652 46.2467 149.952C47.7563 150.253 49.321 150.099 50.7429 149.51C52.1649 148.921 53.3803 147.923 54.2354 146.643C55.0905 145.364 55.5469 143.859 55.5469 142.32C55.5445 140.257 54.7239 138.279 53.265 136.82C51.8061 135.361 49.8281 134.54 47.7649 134.538ZM47.7649 145.914C47.0541 145.914 46.3594 145.703 45.7684 145.308C45.1775 144.913 44.7169 144.352 44.4449 143.695C44.1729 143.039 44.1017 142.316 44.2404 141.619C44.3791 140.922 44.7213 140.282 45.2239 139.779C45.7264 139.276 46.3667 138.934 47.0638 138.796C47.7609 138.657 48.4834 138.728 49.14 139C49.7967 139.272 50.3579 139.733 50.7528 140.324C51.1476 140.915 51.3584 141.609 51.3584 142.32C51.3573 143.273 50.9784 144.186 50.3047 144.86C49.631 145.534 48.7176 145.913 47.7649 145.914Z' fill='#222123'/>\n <path d='M105.178 140.226C103.639 140.226 102.135 140.682 100.855 141.537C99.5753 142.392 98.5779 143.608 97.9889 145.03C97.3999 146.452 97.2457 148.016 97.546 149.526C97.8463 151.036 98.5874 152.422 99.6758 153.51C100.764 154.599 102.151 155.34 103.66 155.64C105.17 155.941 106.735 155.786 108.156 155.197C109.578 154.608 110.794 153.611 111.649 152.331C112.504 151.051 112.96 149.547 112.96 148.008C112.958 145.945 112.137 143.967 110.679 142.508C109.22 141.049 107.242 140.228 105.178 140.226ZM105.178 151.601C104.468 151.601 103.773 151.391 103.182 150.996C102.591 150.601 102.13 150.04 101.858 149.383C101.586 148.726 101.515 148.004 101.654 147.307C101.793 146.61 102.135 145.969 102.637 145.467C103.14 144.964 103.78 144.622 104.477 144.483C105.174 144.345 105.897 144.416 106.554 144.688C107.21 144.96 107.772 145.42 108.166 146.011C108.561 146.602 108.772 147.297 108.772 148.008C108.771 148.961 108.392 149.874 107.718 150.548C107.045 151.221 106.131 151.6 105.178 151.601Z' fill='#222123'/>\n <path d='M70.7458 69.178C72.285 69.178 73.7895 68.7216 75.0693 67.8665C76.349 67.0114 77.3464 65.796 77.9354 64.374C78.5244 62.9521 78.6786 61.3874 78.3783 59.8778C78.078 58.3683 77.3369 56.9816 76.2485 55.8933C75.1602 54.805 73.7736 54.0638 72.264 53.7635C70.7545 53.4633 69.1898 53.6174 67.7678 54.2064C66.3458 54.7954 65.1305 55.7928 64.2754 57.0726C63.4203 58.3523 62.9639 59.8569 62.9639 61.396C62.9662 63.4592 63.7869 65.4372 65.2458 66.8961C66.7047 68.355 68.6827 69.1756 70.7458 69.178ZM70.7458 57.8025C71.4566 57.8025 72.1513 58.0132 72.7423 58.4081C73.3332 58.803 73.7938 59.3642 74.0658 60.0208C74.3378 60.6774 74.409 61.4 74.2703 62.0971C74.1317 62.7941 73.7894 63.4344 73.2868 63.937C72.7843 64.4396 72.144 64.7818 71.4469 64.9205C70.7498 65.0591 70.0273 64.988 69.3707 64.716C68.714 64.444 68.1528 63.9834 67.7579 63.3924C67.3631 62.8015 67.1523 62.1067 67.1523 61.396C67.1534 60.4433 67.5323 59.5298 68.206 58.8562C68.8797 58.1825 69.7931 57.8035 70.7458 57.8025Z' fill='#222123'/>\n <path d='M92.5203 108.94C94.0594 108.94 95.5639 108.483 96.8437 107.628C98.1234 106.773 99.1209 105.558 99.7099 104.136C100.299 102.714 100.453 101.149 100.153 99.6395C99.8524 98.13 99.1113 96.7434 98.0229 95.655C96.9346 94.5667 95.548 93.8255 94.0384 93.5253C92.5289 93.225 90.9642 93.3791 89.5422 93.9681C88.1203 94.5571 86.9049 95.5545 86.0498 96.8343C85.1947 98.114 84.7383 99.6186 84.7383 101.158C84.7406 103.221 85.5613 105.199 87.0202 106.658C88.4791 108.117 90.4571 108.937 92.5203 108.94ZM92.5203 97.5642C93.231 97.5642 93.9258 97.7749 94.5167 98.1698C95.1077 98.5647 95.5683 99.1259 95.8402 99.7825C96.1122 100.439 96.1834 101.162 96.0447 101.859C95.9061 102.556 95.5638 103.196 95.0613 103.699C94.5587 104.201 93.9184 104.544 93.2213 104.682C92.5242 104.821 91.8017 104.75 91.1451 104.478C90.4884 104.206 89.9272 103.745 89.5324 103.154C89.1375 102.563 88.9267 101.868 88.9267 101.158C88.9278 100.205 89.3067 99.2916 89.9804 98.6179C90.6541 97.9442 91.5675 97.5652 92.5203 97.5642Z' fill='#222123'/>\n <path d='M126.83 125.51C127.763 124.741 128.514 123.776 129.029 122.683C129.545 121.589 129.812 120.395 129.811 119.187C129.811 112.631 110.652 91.4729 106.13 86.501C106.943 85.8052 107.591 84.9373 108.028 83.9601C108.464 82.983 108.678 81.9211 108.654 80.8512C108.654 71.9972 98.0008 56.0894 94.7359 51.4249C91.8182 47.2335 88.6725 43.2056 85.313 39.3593C86.9069 38.8101 88.22 37.6544 88.9671 36.1431C89.7142 34.6317 89.835 32.8867 89.3034 31.2868L88.1718 27.8043C88.024 27.3523 88.0236 26.8651 88.1705 26.4128C88.3175 25.9606 88.6042 25.5667 88.9895 25.2879L91.9521 23.1354C96.9944 19.4718 94.4096 11.4869 88.1671 11.4869H84.5053C84.0298 11.4878 83.5664 11.3377 83.1817 11.0582C82.797 10.7788 82.511 10.3844 82.3648 9.93199L81.2333 6.44931C79.3067 0.521528 70.9147 0.512267 68.9853 6.44931L67.8537 9.93197C67.7076 10.3844 67.4216 10.7788 67.0369 11.0582C66.6522 11.3377 66.1887 11.4878 65.7133 11.4869H62.0515C55.8187 11.4869 53.2162 19.4659 58.2665 23.1356L61.2291 25.2877C61.6143 25.5666 61.9011 25.9605 62.048 26.4128C62.195 26.865 62.1945 27.3523 62.0468 27.8043L60.9152 31.2868C60.3836 32.8867 60.5044 34.6317 61.2515 36.143C61.9986 37.6544 63.3116 38.8101 64.9056 39.3593C61.546 43.2056 58.4003 47.2335 55.4827 51.4249C52.2178 56.0894 41.565 71.9972 41.565 80.8512C41.5407 81.9212 41.7545 82.9833 42.191 83.9605C42.6275 84.9377 43.2758 85.8057 44.0889 86.5016C39.6511 91.3842 20.4078 112.648 20.4078 119.187C20.407 120.395 20.6739 121.589 21.1892 122.683C21.7046 123.776 22.4556 124.741 23.3885 125.51C17.0863 133.178 6.13867 149.365 6.13867 155.592C6.13867 160.119 9.95593 163.532 15.0179 163.532C20.0377 163.532 26.1314 161.803 28.7968 160.963C31.4986 163.669 38.9919 168.894 53.5316 163.935C54.4244 164.794 55.409 165.553 56.4676 166.197L54.3184 184.095C54.1319 185.688 54.4946 187.298 55.3467 188.657C56.1988 190.017 57.4891 191.045 59.0046 191.572C67.8362 194.593 82.3688 194.598 91.2138 191.572C92.7293 191.045 94.0197 190.017 94.8718 188.657C95.7239 187.298 96.0867 185.688 95.9002 184.095L93.7437 166.137C94.7891 165.504 95.7651 164.762 96.6555 163.924C111.201 168.896 118.702 163.682 121.42 160.962C124.085 161.803 130.18 163.532 135.201 163.532C140.263 163.532 144.08 160.119 144.08 155.592C144.08 149.365 133.132 133.178 126.83 125.51ZM63.691 21.8991L60.7285 19.747C60.3434 19.4679 60.0567 19.074 59.9095 18.6218C59.7623 18.1695 59.7621 17.6823 59.9091 17.23C60.056 16.7777 60.3425 16.3836 60.7275 16.1043C61.1124 15.825 61.5759 15.6748 62.0515 15.6753H65.7133C67.0737 15.6778 68.3997 15.2483 69.5003 14.4487C70.6009 13.6491 71.4192 12.5207 71.8373 11.2261L72.9688 7.74366C73.1152 7.2912 73.4012 6.89676 73.7858 6.61699C74.1703 6.33721 74.6337 6.18649 75.1092 6.18647C75.5848 6.18644 76.0481 6.33712 76.4327 6.61686C76.8173 6.8966 77.1033 7.29101 77.2497 7.74346L78.3813 11.2261C78.7994 12.5207 79.6177 13.6491 80.7183 14.4487C81.8189 15.2483 83.1449 15.6778 84.5053 15.6753H88.1671C88.6427 15.6748 89.1062 15.8249 89.4911 16.1042C89.876 16.3835 90.1625 16.7776 90.3095 17.2299C90.4564 17.6822 90.4563 18.1694 90.3091 18.6216C90.1619 19.0738 89.8752 19.4677 89.4901 19.7468L86.5275 21.8993C85.4255 22.697 84.6052 23.8239 84.1848 25.1177C83.7644 26.4115 83.7656 27.8054 84.1883 29.0985L85.3199 32.5809C85.4672 33.033 85.4676 33.5201 85.3209 33.9724C85.1741 34.4247 84.8879 34.8189 84.5033 35.0984C84.1186 35.3779 83.6553 35.5284 83.1798 35.5282C82.7043 35.5281 82.2411 35.3773 81.8566 35.0975L78.8938 32.9448C77.7947 32.1433 76.4694 31.7115 75.1091 31.7115C73.7488 31.7116 72.4236 32.1435 71.3245 32.945L68.3619 35.0975C67.9775 35.3771 67.5143 35.5278 67.0388 35.528C66.5634 35.5281 66.1002 35.3776 65.7155 35.0981C65.3309 34.8186 65.0447 34.4245 64.898 33.9723C64.7512 33.5201 64.7515 33.033 64.8987 32.5809L66.0303 29.0985C66.4529 27.8054 66.4541 26.4115 66.0337 25.1176C65.6133 23.8238 64.7931 22.6968 63.691 21.8991ZM58.5974 54.2809C66.5389 42.8467 73.2388 36.3158 75.1093 35.9108C76.9798 36.3158 83.6797 42.8467 91.6212 54.2809C99.4236 65.5145 104.465 75.9439 104.465 80.8512C104.465 84.9065 98.535 84.9534 98.475 84.9534C92.7977 84.9534 86.6707 80.3344 86.6114 80.2892C86.2511 80.0202 85.815 79.8721 85.3654 79.8662C84.9158 79.8603 84.4759 79.9968 84.1087 80.2563C77.955 84.5929 71.867 85.6386 66.3139 80.425C65.952 80.0853 65.4812 79.8851 64.9855 79.8602C64.4897 79.8354 64.0012 79.9874 63.6072 80.2892C63.5462 80.3359 57.4505 84.9534 51.7435 84.9534C51.6836 84.9534 45.7535 84.9065 45.7535 80.8512C45.7535 75.9439 50.795 65.5145 58.5974 54.2809ZM47.895 88.548C53.5068 90.2845 59.821 87.8027 64.7406 84.5977C71.1421 89.6769 78.5474 88.9433 85.3262 84.4983C90.2616 87.7529 96.6623 90.3016 102.327 88.5468C105.532 92.0443 125.622 114.412 125.622 119.187C125.625 120.24 125.21 121.252 124.469 122C123.728 122.749 122.721 123.174 121.667 123.182C121.549 123.182 118.704 123.164 113.453 121.664C113.07 121.555 112.664 121.557 112.282 121.67C111.9 121.784 111.559 122.003 111.297 122.304C110.897 122.706 104.261 129.07 92.9726 123.422C92.4999 123.186 91.9554 123.137 91.4481 123.285C90.9408 123.433 90.5083 123.768 90.2374 124.221C89.8824 124.71 86.0894 129.458 75.9676 124.91C75.6977 124.789 75.4052 124.726 75.1093 124.726C74.8134 124.726 74.5208 124.789 74.2509 124.91C64.7134 129.196 60.8605 125.373 59.9065 124.099C59.6178 123.686 59.1904 123.39 58.702 123.266C58.2137 123.142 57.6969 123.197 57.246 123.422C46.4742 128.812 40.0244 123.362 38.8411 122.214C38.5765 121.944 38.2441 121.751 37.8788 121.654C37.5135 121.557 37.1288 121.561 36.7653 121.664C31.5148 123.164 28.6698 123.182 28.5512 123.182C27.4978 123.174 26.4904 122.749 25.7493 122C25.0082 121.252 24.5936 120.24 24.5963 119.187C24.5963 114.431 44.6693 92.0723 47.895 88.548ZM91.7416 184.594C91.8177 185.236 91.6725 185.884 91.33 186.433C90.9875 186.981 90.4683 187.396 89.8581 187.609C81.9032 190.331 68.3233 190.333 60.3603 187.609C59.7502 187.396 59.2309 186.981 58.8885 186.433C58.5461 185.884 58.4009 185.236 58.477 184.594L60.4727 167.976C65.4367 169.447 70.472 168.468 75.1097 166.255C81.1383 169.127 86.0497 169.026 89.7393 167.921L91.7416 184.594ZM135.201 159.344C129.432 159.344 121.544 156.596 121.465 156.568C121.039 156.419 120.577 156.411 120.146 156.545C119.715 156.679 119.339 156.948 119.074 157.312C118.024 158.679 112.021 165.209 96.8126 159.533C96.392 159.379 95.9335 159.363 95.5031 159.487C95.0728 159.61 94.6929 159.867 94.4181 160.221C94.161 160.551 87.9843 168.241 76.0744 162.057C75.7763 161.902 75.4452 161.821 75.1093 161.821C74.7734 161.821 74.4423 161.902 74.1442 162.057C62.3979 168.156 56.181 160.695 55.7757 160.189C55.5005 159.844 55.1231 159.595 54.6975 159.477C54.2719 159.359 53.8198 159.378 53.406 159.533C38.1971 165.209 32.194 158.679 31.1451 157.312C30.8792 156.948 30.5032 156.679 30.0725 156.545C29.6418 156.411 29.1794 156.419 28.7537 156.568C28.6747 156.596 20.7862 159.344 15.0179 159.344C12.3436 159.344 10.3271 157.731 10.3271 155.592C10.3271 151.046 20.7398 135.003 27.3694 127.274C29.877 127.643 34.3536 126.649 36.8072 125.997C42.0159 130.209 49.4632 131.442 57.6656 127.85C62.3528 132.3 69.127 131.602 75.1099 129.102C84.9812 133.214 90.4579 129.798 92.5621 127.854C103.547 132.655 110.947 128.008 113.427 126.001C115.874 126.651 120.343 127.643 122.849 127.274C129.479 135.003 139.891 151.046 139.891 155.592C139.891 157.731 137.875 159.344 135.201 159.344Z' fill='#222123'/>\n </g>\n <defs>\n <clipPath id='clip0_7378_7845'>\n <rect width='138.219' height='192.25' fill='white' transform='translate(6 2)'/>\n </clipPath>\n </defs>\n </svg>\n );\n}","import { useMemo, useLayoutEffect, useEffect, useRef, useCallback } from 'react';\n\nfunction useCombinedRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n return useMemo(() => node => {\n refs.forEach(ref => ref(node));\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n refs);\n}\n\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nconst canUseDOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\nfunction isWindow(element) {\n const elementString = Object.prototype.toString.call(element);\n return elementString === '[object Window]' || // In Electron context the Window object serializes to [object global]\n elementString === '[object global]';\n}\n\nfunction isNode(node) {\n return 'nodeType' in node;\n}\n\nfunction getWindow(target) {\n var _target$ownerDocument, _target$ownerDocument2;\n\n if (!target) {\n return window;\n }\n\n if (isWindow(target)) {\n return target;\n }\n\n if (!isNode(target)) {\n return window;\n }\n\n return (_target$ownerDocument = (_target$ownerDocument2 = target.ownerDocument) == null ? void 0 : _target$ownerDocument2.defaultView) != null ? _target$ownerDocument : window;\n}\n\nfunction isDocument(node) {\n const {\n Document\n } = getWindow(node);\n return node instanceof Document;\n}\n\nfunction isHTMLElement(node) {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n\nfunction isSVGElement(node) {\n return node instanceof getWindow(node).SVGElement;\n}\n\nfunction getOwnerDocument(target) {\n if (!target) {\n return document;\n }\n\n if (isWindow(target)) {\n return target.document;\n }\n\n if (!isNode(target)) {\n return document;\n }\n\n if (isDocument(target)) {\n return target;\n }\n\n if (isHTMLElement(target) || isSVGElement(target)) {\n return target.ownerDocument;\n }\n\n return document;\n}\n\n/**\r\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\r\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\r\n */\n\nconst useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;\n\nfunction useEvent(handler) {\n const handlerRef = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n handlerRef.current = handler;\n });\n return useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return handlerRef.current == null ? void 0 : handlerRef.current(...args);\n }, []);\n}\n\nfunction useInterval() {\n const intervalRef = useRef(null);\n const set = useCallback((listener, duration) => {\n intervalRef.current = setInterval(listener, duration);\n }, []);\n const clear = useCallback(() => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n return [set, clear];\n}\n\nfunction useLatestValue(value, dependencies) {\n if (dependencies === void 0) {\n dependencies = [value];\n }\n\n const valueRef = useRef(value);\n useIsomorphicLayoutEffect(() => {\n if (valueRef.current !== value) {\n valueRef.current = value;\n }\n }, dependencies);\n return valueRef;\n}\n\nfunction useLazyMemo(callback, dependencies) {\n const valueRef = useRef();\n return useMemo(() => {\n const newValue = callback(valueRef.current);\n valueRef.current = newValue;\n return newValue;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [...dependencies]);\n}\n\nfunction useNodeRef(onChange) {\n const onChangeHandler = useEvent(onChange);\n const node = useRef(null);\n const setNodeRef = useCallback(element => {\n if (element !== node.current) {\n onChangeHandler == null ? void 0 : onChangeHandler(element, node.current);\n }\n\n node.current = element;\n }, //eslint-disable-next-line\n []);\n return [node, setNodeRef];\n}\n\nfunction usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nlet ids = {};\nfunction useUniqueId(prefix, value) {\n return useMemo(() => {\n if (value) {\n return value;\n }\n\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n return prefix + \"-\" + id;\n }, [prefix, value]);\n}\n\nfunction createAdjustmentFn(modifier) {\n return function (object) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((accumulator, adjustment) => {\n const entries = Object.entries(adjustment);\n\n for (const [key, valueAdjustment] of entries) {\n const value = accumulator[key];\n\n if (value != null) {\n accumulator[key] = value + modifier * valueAdjustment;\n }\n }\n\n return accumulator;\n }, { ...object\n });\n };\n}\n\nconst add = /*#__PURE__*/createAdjustmentFn(1);\nconst subtract = /*#__PURE__*/createAdjustmentFn(-1);\n\nfunction hasViewportRelativeCoordinates(event) {\n return 'clientX' in event && 'clientY' in event;\n}\n\nfunction isKeyboardEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n KeyboardEvent\n } = getWindow(event.target);\n return KeyboardEvent && event instanceof KeyboardEvent;\n}\n\nfunction isTouchEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n TouchEvent\n } = getWindow(event.target);\n return TouchEvent && event instanceof TouchEvent;\n}\n\n/**\r\n * Returns the normalized x and y coordinates for mouse and touch events.\r\n */\n\nfunction getEventCoordinates(event) {\n if (isTouchEvent(event)) {\n if (event.touches && event.touches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.touches[0];\n return {\n x,\n y\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.changedTouches[0];\n return {\n x,\n y\n };\n }\n }\n\n if (hasViewportRelativeCoordinates(event)) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n }\n\n return null;\n}\n\nconst CSS = /*#__PURE__*/Object.freeze({\n Translate: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n x,\n y\n } = transform;\n return \"translate3d(\" + (x ? Math.round(x) : 0) + \"px, \" + (y ? Math.round(y) : 0) + \"px, 0)\";\n }\n\n },\n Scale: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n scaleX,\n scaleY\n } = transform;\n return \"scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\";\n }\n\n },\n Transform: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n return [CSS.Translate.toString(transform), CSS.Scale.toString(transform)].join(' ');\n }\n\n },\n Transition: {\n toString(_ref) {\n let {\n property,\n duration,\n easing\n } = _ref;\n return property + \" \" + duration + \"ms \" + easing;\n }\n\n }\n});\n\nconst SELECTOR = 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\nfunction findFirstFocusableNode(element) {\n if (element.matches(SELECTOR)) {\n return element;\n }\n\n return element.querySelector(SELECTOR);\n}\n\nexport { CSS, add, canUseDOM, findFirstFocusableNode, getEventCoordinates, getOwnerDocument, getWindow, hasViewportRelativeCoordinates, isDocument, isHTMLElement, isKeyboardEvent, isNode, isSVGElement, isTouchEvent, isWindow, subtract, useCombinedRefs, useEvent, useInterval, useIsomorphicLayoutEffect, useLatestValue, useLazyMemo, useNodeRef, usePrevious, useUniqueId };\n//# sourceMappingURL=utilities.esm.js.map\n","import React, { useState, useCallback } from 'react';\n\nconst hiddenStyles = {\n display: 'none'\n};\nfunction HiddenText(_ref) {\n let {\n id,\n value\n } = _ref;\n return React.createElement(\"div\", {\n id: id,\n style: hiddenStyles\n }, value);\n}\n\nfunction LiveRegion(_ref) {\n let {\n id,\n announcement,\n ariaLiveType = \"assertive\"\n } = _ref;\n // Hide element visually but keep it readable by screen readers\n const visuallyHidden = {\n position: 'fixed',\n top: 0,\n left: 0,\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(100%)',\n whiteSpace: 'nowrap'\n };\n return React.createElement(\"div\", {\n id: id,\n style: visuallyHidden,\n role: \"status\",\n \"aria-live\": ariaLiveType,\n \"aria-atomic\": true\n }, announcement);\n}\n\nfunction useAnnouncement() {\n const [announcement, setAnnouncement] = useState('');\n const announce = useCallback(value => {\n if (value != null) {\n setAnnouncement(value);\n }\n }, []);\n return {\n announce,\n announcement\n };\n}\n\nexport { HiddenText, LiveRegion, useAnnouncement };\n//# sourceMappingURL=accessibility.esm.js.map\n","import React, { createContext, useContext, useEffect, useState, useCallback, useMemo, useRef, useReducer, memo, cloneElement, forwardRef } from 'react';\nimport { createPortal, unstable_batchedUpdates } from 'react-dom';\nimport { useUniqueId, getEventCoordinates, getWindow, isDocument, isHTMLElement, isSVGElement, canUseDOM, isWindow, isNode, getOwnerDocument, add, isKeyboardEvent, subtract, useLazyMemo, useInterval, usePrevious, useLatestValue, useEvent, useIsomorphicLayoutEffect, useNodeRef, findFirstFocusableNode, CSS } from '@dnd-kit/utilities';\nimport { useAnnouncement, HiddenText, LiveRegion } from '@dnd-kit/accessibility';\n\nconst DndMonitorContext = /*#__PURE__*/createContext(null);\n\nfunction useDndMonitor(listener) {\n const registerListener = useContext(DndMonitorContext);\n useEffect(() => {\n if (!registerListener) {\n throw new Error('useDndMonitor must be used within a children of <DndContext>');\n }\n\n const unsubscribe = registerListener(listener);\n return unsubscribe;\n }, [listener, registerListener]);\n}\n\nfunction useDndMonitorProvider() {\n const [listeners] = useState(() => new Set());\n const registerListener = useCallback(listener => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }, [listeners]);\n const dispatch = useCallback(_ref => {\n let {\n type,\n event\n } = _ref;\n listeners.forEach(listener => {\n var _listener$type;\n\n return (_listener$type = listener[type]) == null ? void 0 : _listener$type.call(listener, event);\n });\n }, [listeners]);\n return [dispatch, registerListener];\n}\n\nconst defaultScreenReaderInstructions = {\n draggable: \"\\n To pick up a draggable item, press the space bar.\\n While dragging, use the arrow keys to move the item.\\n Press space again to drop the item in its new position, or press escape to cancel.\\n \"\n};\nconst defaultAnnouncements = {\n onDragStart(_ref) {\n let {\n active\n } = _ref;\n return \"Picked up draggable item \" + active.id + \".\";\n },\n\n onDragOver(_ref2) {\n let {\n active,\n over\n } = _ref2;\n\n if (over) {\n return \"Draggable item \" + active.id + \" was moved over droppable area \" + over.id + \".\";\n }\n\n return \"Draggable item \" + active.id + \" is no longer over a droppable area.\";\n },\n\n onDragEnd(_ref3) {\n let {\n active,\n over\n } = _ref3;\n\n if (over) {\n return \"Draggable item \" + active.id + \" was dropped over droppable area \" + over.id;\n }\n\n return \"Draggable item \" + active.id + \" was dropped.\";\n },\n\n onDragCancel(_ref4) {\n let {\n active\n } = _ref4;\n return \"Dragging was cancelled. Draggable item \" + active.id + \" was dropped.\";\n }\n\n};\n\nfunction Accessibility(_ref) {\n let {\n announcements = defaultAnnouncements,\n container,\n hiddenTextDescribedById,\n screenReaderInstructions = defaultScreenReaderInstructions\n } = _ref;\n const {\n announce,\n announcement\n } = useAnnouncement();\n const liveRegionId = useUniqueId(\"DndLiveRegion\");\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n setMounted(true);\n }, []);\n useDndMonitor(useMemo(() => ({\n onDragStart(_ref2) {\n let {\n active\n } = _ref2;\n announce(announcements.onDragStart({\n active\n }));\n },\n\n onDragMove(_ref3) {\n let {\n active,\n over\n } = _ref3;\n\n if (announcements.onDragMove) {\n announce(announcements.onDragMove({\n active,\n over\n }));\n }\n },\n\n onDragOver(_ref4) {\n let {\n active,\n over\n } = _ref4;\n announce(announcements.onDragOver({\n active,\n over\n }));\n },\n\n onDragEnd(_ref5) {\n let {\n active,\n over\n } = _ref5;\n announce(announcements.onDragEnd({\n active,\n over\n }));\n },\n\n onDragCancel(_ref6) {\n let {\n active,\n over\n } = _ref6;\n announce(announcements.onDragCancel({\n active,\n over\n }));\n }\n\n }), [announce, announcements]));\n\n if (!mounted) {\n return null;\n }\n\n const markup = React.createElement(React.Fragment, null, React.createElement(HiddenText, {\n id: hiddenTextDescribedById,\n value: screenReaderInstructions.draggable\n }), React.createElement(LiveRegion, {\n id: liveRegionId,\n announcement: announcement\n }));\n return container ? createPortal(markup, container) : markup;\n}\n\nvar Action;\n\n(function (Action) {\n Action[\"DragStart\"] = \"dragStart\";\n Action[\"DragMove\"] = \"dragMove\";\n Action[\"DragEnd\"] = \"dragEnd\";\n Action[\"DragCancel\"] = \"dragCancel\";\n Action[\"DragOver\"] = \"dragOver\";\n Action[\"RegisterDroppable\"] = \"registerDroppable\";\n Action[\"SetDroppableDisabled\"] = \"setDroppableDisabled\";\n Action[\"UnregisterDroppable\"] = \"unregisterDroppable\";\n})(Action || (Action = {}));\n\nfunction noop() {}\n\nfunction useSensor(sensor, options) {\n return useMemo(() => ({\n sensor,\n options: options != null ? options : {}\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [sensor, options]);\n}\n\nfunction useSensors() {\n for (var _len = arguments.length, sensors = new Array(_len), _key = 0; _key < _len; _key++) {\n sensors[_key] = arguments[_key];\n }\n\n return useMemo(() => [...sensors].filter(sensor => sensor != null), // eslint-disable-next-line react-hooks/exhaustive-deps\n [...sensors]);\n}\n\nconst defaultCoordinates = /*#__PURE__*/Object.freeze({\n x: 0,\n y: 0\n});\n\n/**\r\n * Returns the distance between two points\r\n */\nfunction distanceBetween(p1, p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n}\n\nfunction getRelativeTransformOrigin(event, rect) {\n const eventCoordinates = getEventCoordinates(event);\n\n if (!eventCoordinates) {\n return '0 0';\n }\n\n const transformOrigin = {\n x: (eventCoordinates.x - rect.left) / rect.width * 100,\n y: (eventCoordinates.y - rect.top) / rect.height * 100\n };\n return transformOrigin.x + \"% \" + transformOrigin.y + \"%\";\n}\n\n/**\r\n * Sort collisions from smallest to greatest value\r\n */\nfunction sortCollisionsAsc(_ref, _ref2) {\n let {\n data: {\n value: a\n }\n } = _ref;\n let {\n data: {\n value: b\n }\n } = _ref2;\n return a - b;\n}\n/**\r\n * Sort collisions from greatest to smallest value\r\n */\n\nfunction sortCollisionsDesc(_ref3, _ref4) {\n let {\n data: {\n value: a\n }\n } = _ref3;\n let {\n data: {\n value: b\n }\n } = _ref4;\n return b - a;\n}\n/**\r\n * Returns the coordinates of the corners of a given rectangle:\r\n * [TopLeft {x, y}, TopRight {x, y}, BottomLeft {x, y}, BottomRight {x, y}]\r\n */\n\nfunction cornersOfRectangle(_ref5) {\n let {\n left,\n top,\n height,\n width\n } = _ref5;\n return [{\n x: left,\n y: top\n }, {\n x: left + width,\n y: top\n }, {\n x: left,\n y: top + height\n }, {\n x: left + width,\n y: top + height\n }];\n}\nfunction getFirstCollision(collisions, property) {\n if (!collisions || collisions.length === 0) {\n return null;\n }\n\n const [firstCollision] = collisions;\n return property ? firstCollision[property] : firstCollision;\n}\n\n/**\r\n * Returns the coordinates of the center of a given ClientRect\r\n */\n\nfunction centerOfRectangle(rect, left, top) {\n if (left === void 0) {\n left = rect.left;\n }\n\n if (top === void 0) {\n top = rect.top;\n }\n\n return {\n x: left + rect.width * 0.5,\n y: top + rect.height * 0.5\n };\n}\n/**\r\n * Returns the closest rectangles from an array of rectangles to the center of a given\r\n * rectangle.\r\n */\n\n\nconst closestCenter = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const centerRect = centerOfRectangle(collisionRect, collisionRect.left, collisionRect.top);\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const distBetween = distanceBetween(centerOfRectangle(rect), centerRect);\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: distBetween\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\n/**\r\n * Returns the closest rectangles from an array of rectangles to the corners of\r\n * another rectangle.\r\n */\n\nconst closestCorners = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const corners = cornersOfRectangle(collisionRect);\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const rectCorners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner, index) => {\n return accumulator + distanceBetween(rectCorners[index], corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: effectiveDistance\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\n/**\r\n * Returns the intersecting rectangle area between two rectangles\r\n */\n\nfunction getIntersectionRatio(entry, target) {\n const top = Math.max(target.top, entry.top);\n const left = Math.max(target.left, entry.left);\n const right = Math.min(target.left + target.width, entry.left + entry.width);\n const bottom = Math.min(target.top + target.height, entry.top + entry.height);\n const width = right - left;\n const height = bottom - top;\n\n if (left < right && top < bottom) {\n const targetArea = target.width * target.height;\n const entryArea = entry.width * entry.height;\n const intersectionArea = width * height;\n const intersectionRatio = intersectionArea / (targetArea + entryArea - intersectionArea);\n return Number(intersectionRatio.toFixed(4));\n } // Rectangles do not overlap, or overlap has an area of zero (edge/corner overlap)\n\n\n return 0;\n}\n/**\r\n * Returns the rectangles that has the greatest intersection area with a given\r\n * rectangle in an array of rectangles.\r\n */\n\nconst rectIntersection = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const intersectionRatio = getIntersectionRatio(rect, collisionRect);\n\n if (intersectionRatio > 0) {\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: intersectionRatio\n }\n });\n }\n }\n }\n\n return collisions.sort(sortCollisionsDesc);\n};\n\n/**\r\n * Check if a given point is contained within a bounding rectangle\r\n */\n\nfunction isPointWithinRect(point, rect) {\n const {\n top,\n left,\n bottom,\n right\n } = rect;\n return top <= point.y && point.y <= bottom && left <= point.x && point.x <= right;\n}\n/**\r\n * Returns the rectangles that the pointer is hovering over\r\n */\n\n\nconst pointerWithin = _ref => {\n let {\n droppableContainers,\n droppableRects,\n pointerCoordinates\n } = _ref;\n\n if (!pointerCoordinates) {\n return [];\n }\n\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect && isPointWithinRect(pointerCoordinates, rect)) {\n /* There may be more than a single rectangle intersecting\r\n * with the pointer coordinates. In order to sort the\r\n * colliding rectangles, we measure the distance between\r\n * the pointer and the corners of the intersecting rectangle\r\n */\n const corners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner) => {\n return accumulator + distanceBetween(pointerCoordinates, corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: effectiveDistance\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\nfunction adjustScale(transform, rect1, rect2) {\n return { ...transform,\n scaleX: rect1 && rect2 ? rect1.width / rect2.width : 1,\n scaleY: rect1 && rect2 ? rect1.height / rect2.height : 1\n };\n}\n\nfunction getRectDelta(rect1, rect2) {\n return rect1 && rect2 ? {\n x: rect1.left - rect2.left,\n y: rect1.top - rect2.top\n } : defaultCoordinates;\n}\n\nfunction createRectAdjustmentFn(modifier) {\n return function adjustClientRect(rect) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((acc, adjustment) => ({ ...acc,\n top: acc.top + modifier * adjustment.y,\n bottom: acc.bottom + modifier * adjustment.y,\n left: acc.left + modifier * adjustment.x,\n right: acc.right + modifier * adjustment.x\n }), { ...rect\n });\n };\n}\nconst getAdjustedRect = /*#__PURE__*/createRectAdjustmentFn(1);\n\nfunction parseTransform(transform) {\n if (transform.startsWith('matrix3d(')) {\n const transformArray = transform.slice(9, -1).split(/, /);\n return {\n x: +transformArray[12],\n y: +transformArray[13],\n scaleX: +transformArray[0],\n scaleY: +transformArray[5]\n };\n } else if (transform.startsWith('matrix(')) {\n const transformArray = transform.slice(7, -1).split(/, /);\n return {\n x: +transformArray[4],\n y: +transformArray[5],\n scaleX: +transformArray[0],\n scaleY: +transformArray[3]\n };\n }\n\n return null;\n}\n\nfunction inverseTransform(rect, transform, transformOrigin) {\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return rect;\n }\n\n const {\n scaleX,\n scaleY,\n x: translateX,\n y: translateY\n } = parsedTransform;\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y = rect.top - translateY - (1 - scaleY) * parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x\n };\n}\n\nconst defaultOptions = {\n ignoreTransform: false\n};\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n */\n\nfunction getClientRect(element, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n let rect = element.getBoundingClientRect();\n\n if (options.ignoreTransform) {\n const {\n getComputedStyle\n } = getWindow(element);\n const {\n transform,\n transformOrigin\n } = getComputedStyle(element);\n\n if (transform) {\n rect = inverseTransform(rect, transform, transformOrigin);\n }\n }\n\n const {\n top,\n left,\n width,\n height,\n bottom,\n right\n } = rect;\n return {\n top,\n left,\n width,\n height,\n bottom,\n right\n };\n}\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n *\r\n * @remarks\r\n * The ClientRect returned by this method does not take into account transforms\r\n * applied to the element it measures.\r\n *\r\n */\n\nfunction getTransformAgnosticClientRect(element) {\n return getClientRect(element, {\n ignoreTransform: true\n });\n}\n\nfunction getWindowClientRect(element) {\n const width = element.innerWidth;\n const height = element.innerHeight;\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height\n };\n}\n\nfunction isFixed(node, computedStyle) {\n if (computedStyle === void 0) {\n computedStyle = getWindow(node).getComputedStyle(node);\n }\n\n return computedStyle.position === 'fixed';\n}\n\nfunction isScrollable(element, computedStyle) {\n if (computedStyle === void 0) {\n computedStyle = getWindow(element).getComputedStyle(element);\n }\n\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n return properties.some(property => {\n const value = computedStyle[property];\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n });\n}\n\nfunction getScrollableAncestors(element, limit) {\n const scrollParents = [];\n\n function findScrollableAncestors(node) {\n if (limit != null && scrollParents.length >= limit) {\n return scrollParents;\n }\n\n if (!node) {\n return scrollParents;\n }\n\n if (isDocument(node) && node.scrollingElement != null && !scrollParents.includes(node.scrollingElement)) {\n scrollParents.push(node.scrollingElement);\n return scrollParents;\n }\n\n if (!isHTMLElement(node) || isSVGElement(node)) {\n return scrollParents;\n }\n\n if (scrollParents.includes(node)) {\n return scrollParents;\n }\n\n const {\n getComputedStyle\n } = getWindow(node);\n const computedStyle = getComputedStyle(node);\n\n if (node !== element) {\n if (isScrollable(node, computedStyle)) {\n scrollParents.push(node);\n }\n }\n\n if (isFixed(node, computedStyle)) {\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\nfunction getFirstScrollableAncestor(node) {\n const [firstScrollableAncestor] = getScrollableAncestors(node, 1);\n return firstScrollableAncestor != null ? firstScrollableAncestor : null;\n}\n\nfunction getScrollableElement(element) {\n if (!canUseDOM || !element) {\n return null;\n }\n\n if (isWindow(element)) {\n return element;\n }\n\n if (!isNode(element)) {\n return null;\n }\n\n if (isDocument(element) || element === getOwnerDocument(element).scrollingElement) {\n return window;\n }\n\n if (isHTMLElement(element)) {\n return element;\n }\n\n return null;\n}\n\nfunction getScrollXCoordinate(element) {\n if (isWindow(element)) {\n return element.scrollX;\n }\n\n return element.scrollLeft;\n}\nfunction getScrollYCoordinate(element) {\n if (isWindow(element)) {\n return element.scrollY;\n }\n\n return element.scrollTop;\n}\nfunction getScrollCoordinates(element) {\n return {\n x: getScrollXCoordinate(element),\n y: getScrollYCoordinate(element)\n };\n}\n\nvar Direction;\n\n(function (Direction) {\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n\nfunction isDocumentScrollingElement(element) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === document.scrollingElement;\n}\n\nfunction getScrollPosition(scrollingContainer) {\n const minScroll = {\n x: 0,\n y: 0\n };\n const dimensions = isDocumentScrollingElement(scrollingContainer) ? {\n height: window.innerHeight,\n width: window.innerWidth\n } : {\n height: scrollingContainer.clientHeight,\n width: scrollingContainer.clientWidth\n };\n const maxScroll = {\n x: scrollingContainer.scrollWidth - dimensions.width,\n y: scrollingContainer.scrollHeight - dimensions.height\n };\n const isTop = scrollingContainer.scrollTop <= minScroll.y;\n const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n return {\n isTop,\n isLeft,\n isBottom,\n isRight,\n maxScroll,\n minScroll\n };\n}\n\nconst defaultThreshold = {\n x: 0.2,\n y: 0.2\n};\nfunction getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, _ref, acceleration, thresholdPercentage) {\n let {\n top,\n left,\n right,\n bottom\n } = _ref;\n\n if (acceleration === void 0) {\n acceleration = 10;\n }\n\n if (thresholdPercentage === void 0) {\n thresholdPercentage = defaultThreshold;\n }\n\n const {\n isTop,\n isBottom,\n isLeft,\n isRight\n } = getScrollPosition(scrollContainer);\n const direction = {\n x: 0,\n y: 0\n };\n const speed = {\n x: 0,\n y: 0\n };\n const threshold = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x\n };\n\n if (!isTop && top <= scrollContainerRect.top + threshold.height) {\n // Scroll Up\n direction.y = Direction.Backward;\n speed.y = acceleration * Math.abs((scrollContainerRect.top + threshold.height - top) / threshold.height);\n } else if (!isBottom && bottom >= scrollContainerRect.bottom - threshold.height) {\n // Scroll Down\n direction.y = Direction.Forward;\n speed.y = acceleration * Math.abs((scrollContainerRect.bottom - threshold.height - bottom) / threshold.height);\n }\n\n if (!isRight && right >= scrollContainerRect.right - threshold.width) {\n // Scroll Right\n direction.x = Direction.Forward;\n speed.x = acceleration * Math.abs((scrollContainerRect.right - threshold.width - right) / threshold.width);\n } else if (!isLeft && left <= scrollContainerRect.left + threshold.width) {\n // Scroll Left\n direction.x = Direction.Backward;\n speed.x = acceleration * Math.abs((scrollContainerRect.left + threshold.width - left) / threshold.width);\n }\n\n return {\n direction,\n speed\n };\n}\n\nfunction getScrollElementRect(element) {\n if (element === document.scrollingElement) {\n const {\n innerWidth,\n innerHeight\n } = window;\n return {\n top: 0,\n left: 0,\n right: innerWidth,\n bottom: innerHeight,\n width: innerWidth,\n height: innerHeight\n };\n }\n\n const {\n top,\n left,\n right,\n bottom\n } = element.getBoundingClientRect();\n return {\n top,\n left,\n right,\n bottom,\n width: element.clientWidth,\n height: element.clientHeight\n };\n}\n\nfunction getScrollOffsets(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return add(acc, getScrollCoordinates(node));\n }, defaultCoordinates);\n}\nfunction getScrollXOffset(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return acc + getScrollXCoordinate(node);\n }, 0);\n}\nfunction getScrollYOffset(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return acc + getScrollYCoordinate(node);\n }, 0);\n}\n\nfunction scrollIntoViewIfNeeded(element, measure) {\n if (measure === void 0) {\n measure = getClientRect;\n }\n\n if (!element) {\n return;\n }\n\n const {\n top,\n left,\n bottom,\n right\n } = measure(element);\n const firstScrollableAncestor = getFirstScrollableAncestor(element);\n\n if (!firstScrollableAncestor) {\n return;\n }\n\n if (bottom <= 0 || right <= 0 || top >= window.innerHeight || left >= window.innerWidth) {\n element.scrollIntoView({\n block: 'center',\n inline: 'center'\n });\n }\n}\n\nconst properties = [['x', ['left', 'right'], getScrollXOffset], ['y', ['top', 'bottom'], getScrollYOffset]];\nclass Rect {\n constructor(rect, element) {\n this.rect = void 0;\n this.width = void 0;\n this.height = void 0;\n this.top = void 0;\n this.bottom = void 0;\n this.right = void 0;\n this.left = void 0;\n const scrollableAncestors = getScrollableAncestors(element);\n const scrollOffsets = getScrollOffsets(scrollableAncestors);\n this.rect = { ...rect\n };\n this.width = rect.width;\n this.height = rect.height;\n\n for (const [axis, keys, getScrollOffset] of properties) {\n for (const key of keys) {\n Object.defineProperty(this, key, {\n get: () => {\n const currentOffsets = getScrollOffset(scrollableAncestors);\n const scrollOffsetsDeltla = scrollOffsets[axis] - currentOffsets;\n return this.rect[key] + scrollOffsetsDeltla;\n },\n enumerable: true\n });\n }\n }\n\n Object.defineProperty(this, 'rect', {\n enumerable: false\n });\n }\n\n}\n\nclass Listeners {\n constructor(target) {\n this.target = void 0;\n this.listeners = [];\n\n this.removeAll = () => {\n this.listeners.forEach(listener => {\n var _this$target;\n\n return (_this$target = this.target) == null ? void 0 : _this$target.removeEventListener(...listener);\n });\n };\n\n this.target = target;\n }\n\n add(eventName, handler, options) {\n var _this$target2;\n\n (_this$target2 = this.target) == null ? void 0 : _this$target2.addEventListener(eventName, handler, options);\n this.listeners.push([eventName, handler, options]);\n }\n\n}\n\nfunction getEventListenerTarget(target) {\n // If the `event.target` element is removed from the document events will still be targeted\n // at it, and hence won't always bubble up to the window or document anymore.\n // If there is any risk of an element being removed while it is being dragged,\n // the best practice is to attach the event listeners directly to the target.\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget\n const {\n EventTarget\n } = getWindow(target);\n return target instanceof EventTarget ? target : getOwnerDocument(target);\n}\n\nfunction hasExceededDistance(delta, measurement) {\n const dx = Math.abs(delta.x);\n const dy = Math.abs(delta.y);\n\n if (typeof measurement === 'number') {\n return Math.sqrt(dx ** 2 + dy ** 2) > measurement;\n }\n\n if ('x' in measurement && 'y' in measurement) {\n return dx > measurement.x && dy > measurement.y;\n }\n\n if ('x' in measurement) {\n return dx > measurement.x;\n }\n\n if ('y' in measurement) {\n return dy > measurement.y;\n }\n\n return false;\n}\n\nvar EventName;\n\n(function (EventName) {\n EventName[\"Click\"] = \"click\";\n EventName[\"DragStart\"] = \"dragstart\";\n EventName[\"Keydown\"] = \"keydown\";\n EventName[\"ContextMenu\"] = \"contextmenu\";\n EventName[\"Resize\"] = \"resize\";\n EventName[\"SelectionChange\"] = \"selectionchange\";\n EventName[\"VisibilityChange\"] = \"visibilitychange\";\n})(EventName || (EventName = {}));\n\nfunction preventDefault(event) {\n event.preventDefault();\n}\nfunction stopPropagation(event) {\n event.stopPropagation();\n}\n\nvar KeyboardCode;\n\n(function (KeyboardCode) {\n KeyboardCode[\"Space\"] = \"Space\";\n KeyboardCode[\"Down\"] = \"ArrowDown\";\n KeyboardCode[\"Right\"] = \"ArrowRight\";\n KeyboardCode[\"Left\"] = \"ArrowLeft\";\n KeyboardCode[\"Up\"] = \"ArrowUp\";\n KeyboardCode[\"Esc\"] = \"Escape\";\n KeyboardCode[\"Enter\"] = \"Enter\";\n})(KeyboardCode || (KeyboardCode = {}));\n\nconst defaultKeyboardCodes = {\n start: [KeyboardCode.Space, KeyboardCode.Enter],\n cancel: [KeyboardCode.Esc],\n end: [KeyboardCode.Space, KeyboardCode.Enter]\n};\nconst defaultKeyboardCoordinateGetter = (event, _ref) => {\n let {\n currentCoordinates\n } = _ref;\n\n switch (event.code) {\n case KeyboardCode.Right:\n return { ...currentCoordinates,\n x: currentCoordinates.x + 25\n };\n\n case KeyboardCode.Left:\n return { ...currentCoordinates,\n x: currentCoordinates.x - 25\n };\n\n case KeyboardCode.Down:\n return { ...currentCoordinates,\n y: currentCoordinates.y + 25\n };\n\n case KeyboardCode.Up:\n return { ...currentCoordinates,\n y: currentCoordinates.y - 25\n };\n }\n\n return undefined;\n};\n\nclass KeyboardSensor {\n constructor(props) {\n this.props = void 0;\n this.autoScrollEnabled = false;\n this.referenceCoordinates = void 0;\n this.listeners = void 0;\n this.windowListeners = void 0;\n this.props = props;\n const {\n event: {\n target\n }\n } = props;\n this.props = props;\n this.listeners = new Listeners(getOwnerDocument(target));\n this.windowListeners = new Listeners(getWindow(target));\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.attach();\n }\n\n attach() {\n this.handleStart();\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));\n }\n\n handleStart() {\n const {\n activeNode,\n onStart\n } = this.props;\n const node = activeNode.node.current;\n\n if (node) {\n scrollIntoViewIfNeeded(node);\n }\n\n onStart(defaultCoordinates);\n }\n\n handleKeyDown(event) {\n if (isKeyboardEvent(event)) {\n const {\n active,\n context,\n options\n } = this.props;\n const {\n keyboardCodes = defaultKeyboardCodes,\n coordinateGetter = defaultKeyboardCoordinateGetter,\n scrollBehavior = 'smooth'\n } = options;\n const {\n code\n } = event;\n\n if (keyboardCodes.end.includes(code)) {\n this.handleEnd(event);\n return;\n }\n\n if (keyboardCodes.cancel.includes(code)) {\n this.handleCancel(event);\n return;\n }\n\n const {\n collisionRect\n } = context.current;\n const currentCoordinates = collisionRect ? {\n x: collisionRect.left,\n y: collisionRect.top\n } : defaultCoordinates;\n\n if (!this.referenceCoordinates) {\n this.referenceCoordinates = currentCoordinates;\n }\n\n const newCoordinates = coordinateGetter(event, {\n active,\n context: context.current,\n currentCoordinates\n });\n\n if (newCoordinates) {\n const coordinatesDelta = subtract(newCoordinates, currentCoordinates);\n const scrollDelta = {\n x: 0,\n y: 0\n };\n const {\n scrollableAncestors\n } = context.current;\n\n for (const scrollContainer of scrollableAncestors) {\n const direction = event.code;\n const {\n isTop,\n isRight,\n isLeft,\n isBottom,\n maxScroll,\n minScroll\n } = getScrollPosition(scrollContainer);\n const scrollElementRect = getScrollElementRect(scrollContainer);\n const clampedCoordinates = {\n x: Math.min(direction === KeyboardCode.Right ? scrollElementRect.right - scrollElementRect.width / 2 : scrollElementRect.right, Math.max(direction === KeyboardCode.Right ? scrollElementRect.left : scrollElementRect.left + scrollElementRect.width / 2, newCoordinates.x)),\n y: Math.min(direction === KeyboardCode.Down ? scrollElementRect.bottom - scrollElementRect.height / 2 : scrollElementRect.bottom, Math.max(direction === KeyboardCode.Down ? scrollElementRect.top : scrollElementRect.top + scrollElementRect.height / 2, newCoordinates.y))\n };\n const canScrollX = direction === KeyboardCode.Right && !isRight || direction === KeyboardCode.Left && !isLeft;\n const canScrollY = direction === KeyboardCode.Down && !isBottom || direction === KeyboardCode.Up && !isTop;\n\n if (canScrollX && clampedCoordinates.x !== newCoordinates.x) {\n const newScrollCoordinates = scrollContainer.scrollLeft + coordinatesDelta.x;\n const canScrollToNewCoordinates = direction === KeyboardCode.Right && newScrollCoordinates <= maxScroll.x || direction === KeyboardCode.Left && newScrollCoordinates >= minScroll.x;\n\n if (canScrollToNewCoordinates && !coordinatesDelta.y) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n left: newScrollCoordinates,\n behavior: scrollBehavior\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.x = scrollContainer.scrollLeft - newScrollCoordinates;\n } else {\n scrollDelta.x = direction === KeyboardCode.Right ? scrollContainer.scrollLeft - maxScroll.x : scrollContainer.scrollLeft - minScroll.x;\n }\n\n if (scrollDelta.x) {\n scrollContainer.scrollBy({\n left: -scrollDelta.x,\n behavior: scrollBehavior\n });\n }\n\n break;\n } else if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n const newScrollCoordinates = scrollContainer.scrollTop + coordinatesDelta.y;\n const canScrollToNewCoordinates = direction === KeyboardCode.Down && newScrollCoordinates <= maxScroll.y || direction === KeyboardCode.Up && newScrollCoordinates >= minScroll.y;\n\n if (canScrollToNewCoordinates && !coordinatesDelta.x) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n top: newScrollCoordinates,\n behavior: scrollBehavior\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.y = scrollContainer.scrollTop - newScrollCoordinates;\n } else {\n scrollDelta.y = direction === KeyboardCode.Down ? scrollContainer.scrollTop - maxScroll.y : scrollContainer.scrollTop - minScroll.y;\n }\n\n if (scrollDelta.y) {\n scrollContainer.scrollBy({\n top: -scrollDelta.y,\n behavior: scrollBehavior\n });\n }\n\n break;\n }\n }\n\n this.handleMove(event, add(subtract(newCoordinates, this.referenceCoordinates), scrollDelta));\n }\n }\n }\n\n handleMove(event, coordinates) {\n const {\n onMove\n } = this.props;\n event.preventDefault();\n onMove(coordinates);\n }\n\n handleEnd(event) {\n const {\n onEnd\n } = this.props;\n event.preventDefault();\n this.detach();\n onEnd();\n }\n\n handleCancel(event) {\n const {\n onCancel\n } = this.props;\n event.preventDefault();\n this.detach();\n onCancel();\n }\n\n detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll();\n }\n\n}\nKeyboardSensor.activators = [{\n eventName: 'onKeyDown',\n handler: (event, _ref, _ref2) => {\n let {\n keyboardCodes = defaultKeyboardCodes,\n onActivation\n } = _ref;\n let {\n active\n } = _ref2;\n const {\n code\n } = event.nativeEvent;\n\n if (keyboardCodes.start.includes(code)) {\n const activator = active.activatorNode.current;\n\n if (activator && event.target !== activator) {\n return false;\n }\n\n event.preventDefault();\n onActivation == null ? void 0 : onActivation({\n event: event.nativeEvent\n });\n return true;\n }\n\n return false;\n }\n}];\n\nfunction isDistanceConstraint(constraint) {\n return Boolean(constraint && 'distance' in constraint);\n}\n\nfunction isDelayConstraint(constraint) {\n return Boolean(constraint && 'delay' in constraint);\n}\n\nclass AbstractPointerSensor {\n constructor(props, events, listenerTarget) {\n var _getEventCoordinates;\n\n if (listenerTarget === void 0) {\n listenerTarget = getEventListenerTarget(props.event.target);\n }\n\n this.props = void 0;\n this.events = void 0;\n this.autoScrollEnabled = true;\n this.document = void 0;\n this.activated = false;\n this.initialCoordinates = void 0;\n this.timeoutId = null;\n this.listeners = void 0;\n this.documentListeners = void 0;\n this.windowListeners = void 0;\n this.props = props;\n this.events = events;\n const {\n event\n } = props;\n const {\n target\n } = event;\n this.props = props;\n this.events = events;\n this.document = getOwnerDocument(target);\n this.documentListeners = new Listeners(this.document);\n this.listeners = new Listeners(listenerTarget);\n this.windowListeners = new Listeners(getWindow(target));\n this.initialCoordinates = (_getEventCoordinates = getEventCoordinates(event)) != null ? _getEventCoordinates : defaultCoordinates;\n this.handleStart = this.handleStart.bind(this);\n this.handleMove = this.handleMove.bind(this);\n this.handleEnd = this.handleEnd.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleKeydown = this.handleKeydown.bind(this);\n this.removeTextSelection = this.removeTextSelection.bind(this);\n this.attach();\n }\n\n attach() {\n const {\n events,\n props: {\n options: {\n activationConstraint\n }\n }\n } = this;\n this.listeners.add(events.move.name, this.handleMove, {\n passive: false\n });\n this.listeners.add(events.end.name, this.handleEnd);\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.DragStart, preventDefault);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n this.windowListeners.add(EventName.ContextMenu, preventDefault);\n this.documentListeners.add(EventName.Keydown, this.handleKeydown);\n\n if (activationConstraint) {\n if (isDistanceConstraint(activationConstraint)) {\n return;\n }\n\n if (isDelayConstraint(activationConstraint)) {\n this.timeoutId = setTimeout(this.handleStart, activationConstraint.delay);\n return;\n }\n }\n\n this.handleStart();\n }\n\n detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll(); // Wait until the next event loop before removing document listeners\n // This is necessary because we listen for `click` and `selection` events on the document\n\n setTimeout(this.documentListeners.removeAll, 50);\n\n if (this.timeoutId !== null) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n\n handleStart() {\n const {\n initialCoordinates\n } = this;\n const {\n onStart\n } = this.props;\n\n if (initialCoordinates) {\n this.activated = true; // Stop propagation of click events once activation constraints are met\n\n this.documentListeners.add(EventName.Click, stopPropagation, {\n capture: true\n }); // Remove any text selection from the document\n\n this.removeTextSelection(); // Prevent further text selection while dragging\n\n this.documentListeners.add(EventName.SelectionChange, this.removeTextSelection);\n onStart(initialCoordinates);\n }\n }\n\n handleMove(event) {\n var _getEventCoordinates2;\n\n const {\n activated,\n initialCoordinates,\n props\n } = this;\n const {\n onMove,\n options: {\n activationConstraint\n }\n } = props;\n\n if (!initialCoordinates) {\n return;\n }\n\n const coordinates = (_getEventCoordinates2 = getEventCoordinates(event)) != null ? _getEventCoordinates2 : defaultCoordinates;\n const delta = subtract(initialCoordinates, coordinates);\n\n if (!activated && activationConstraint) {\n // Constraint validation\n if (isDelayConstraint(activationConstraint)) {\n if (hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n\n return;\n }\n\n if (isDistanceConstraint(activationConstraint)) {\n if (activationConstraint.tolerance != null && hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n\n if (hasExceededDistance(delta, activationConstraint.distance)) {\n return this.handleStart();\n }\n\n return;\n }\n }\n\n if (event.cancelable) {\n event.preventDefault();\n }\n\n onMove(coordinates);\n }\n\n handleEnd() {\n const {\n onEnd\n } = this.props;\n this.detach();\n onEnd();\n }\n\n handleCancel() {\n const {\n onCancel\n } = this.props;\n this.detach();\n onCancel();\n }\n\n handleKeydown(event) {\n if (event.code === KeyboardCode.Esc) {\n this.handleCancel();\n }\n }\n\n removeTextSelection() {\n var _this$document$getSel;\n\n (_this$document$getSel = this.document.getSelection()) == null ? void 0 : _this$document$getSel.removeAllRanges();\n }\n\n}\n\nconst events = {\n move: {\n name: 'pointermove'\n },\n end: {\n name: 'pointerup'\n }\n};\nclass PointerSensor extends AbstractPointerSensor {\n constructor(props) {\n const {\n event\n } = props; // Pointer events stop firing if the target is unmounted while dragging\n // Therefore we attach listeners to the owner document instead\n\n const listenerTarget = getOwnerDocument(event.target);\n super(props, events, listenerTarget);\n }\n\n}\nPointerSensor.activators = [{\n eventName: 'onPointerDown',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n\n if (!event.isPrimary || event.button !== 0) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nconst events$1 = {\n move: {\n name: 'mousemove'\n },\n end: {\n name: 'mouseup'\n }\n};\nvar MouseButton;\n\n(function (MouseButton) {\n MouseButton[MouseButton[\"RightClick\"] = 2] = \"RightClick\";\n})(MouseButton || (MouseButton = {}));\n\nclass MouseSensor extends AbstractPointerSensor {\n constructor(props) {\n super(props, events$1, getOwnerDocument(props.event.target));\n }\n\n}\nMouseSensor.activators = [{\n eventName: 'onMouseDown',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n\n if (event.button === MouseButton.RightClick) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nconst events$2 = {\n move: {\n name: 'touchmove'\n },\n end: {\n name: 'touchend'\n }\n};\nclass TouchSensor extends AbstractPointerSensor {\n constructor(props) {\n super(props, events$2);\n }\n\n static setup() {\n // Adding a non-capture and non-passive `touchmove` listener in order\n // to force `event.preventDefault()` calls to work in dynamically added\n // touchmove event handlers. This is required for iOS Safari.\n window.addEventListener(events$2.move.name, noop, {\n capture: false,\n passive: false\n });\n return function teardown() {\n window.removeEventListener(events$2.move.name, noop);\n }; // We create a new handler because the teardown function of another sensor\n // could remove our event listener if we use a referentially equal listener.\n\n function noop() {}\n }\n\n}\nTouchSensor.activators = [{\n eventName: 'onTouchStart',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n const {\n touches\n } = event;\n\n if (touches.length > 1) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nvar AutoScrollActivator;\n\n(function (AutoScrollActivator) {\n AutoScrollActivator[AutoScrollActivator[\"Pointer\"] = 0] = \"Pointer\";\n AutoScrollActivator[AutoScrollActivator[\"DraggableRect\"] = 1] = \"DraggableRect\";\n})(AutoScrollActivator || (AutoScrollActivator = {}));\n\nvar TraversalOrder;\n\n(function (TraversalOrder) {\n TraversalOrder[TraversalOrder[\"TreeOrder\"] = 0] = \"TreeOrder\";\n TraversalOrder[TraversalOrder[\"ReversedTreeOrder\"] = 1] = \"ReversedTreeOrder\";\n})(TraversalOrder || (TraversalOrder = {}));\n\nfunction useAutoScroller(_ref) {\n let {\n acceleration,\n activator = AutoScrollActivator.Pointer,\n canScroll,\n draggingRect,\n enabled,\n interval = 5,\n order = TraversalOrder.TreeOrder,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects,\n delta,\n threshold\n } = _ref;\n const scrollIntent = useScrollIntent({\n delta,\n disabled: !enabled\n });\n const [setAutoScrollInterval, clearAutoScrollInterval] = useInterval();\n const scrollSpeed = useRef({\n x: 0,\n y: 0\n });\n const scrollDirection = useRef({\n x: 0,\n y: 0\n });\n const rect = useMemo(() => {\n switch (activator) {\n case AutoScrollActivator.Pointer:\n return pointerCoordinates ? {\n top: pointerCoordinates.y,\n bottom: pointerCoordinates.y,\n left: pointerCoordinates.x,\n right: pointerCoordinates.x\n } : null;\n\n case AutoScrollActivator.DraggableRect:\n return draggingRect;\n }\n }, [activator, draggingRect, pointerCoordinates]);\n const scrollContainerRef = useRef(null);\n const autoScroll = useCallback(() => {\n const scrollContainer = scrollContainerRef.current;\n\n if (!scrollContainer) {\n return;\n }\n\n const scrollLeft = scrollSpeed.current.x * scrollDirection.current.x;\n const scrollTop = scrollSpeed.current.y * scrollDirection.current.y;\n scrollContainer.scrollBy(scrollLeft, scrollTop);\n }, []);\n const sortedScrollableAncestors = useMemo(() => order === TraversalOrder.TreeOrder ? [...scrollableAncestors].reverse() : scrollableAncestors, [order, scrollableAncestors]);\n useEffect(() => {\n if (!enabled || !scrollableAncestors.length || !rect) {\n clearAutoScrollInterval();\n return;\n }\n\n for (const scrollContainer of sortedScrollableAncestors) {\n if ((canScroll == null ? void 0 : canScroll(scrollContainer)) === false) {\n continue;\n }\n\n const index = scrollableAncestors.indexOf(scrollContainer);\n const scrollContainerRect = scrollableAncestorRects[index];\n\n if (!scrollContainerRect) {\n continue;\n }\n\n const {\n direction,\n speed\n } = getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, rect, acceleration, threshold);\n\n for (const axis of ['x', 'y']) {\n if (!scrollIntent[axis][direction[axis]]) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n\n if (speed.x > 0 || speed.y > 0) {\n clearAutoScrollInterval();\n scrollContainerRef.current = scrollContainer;\n setAutoScrollInterval(autoScroll, interval);\n scrollSpeed.current = speed;\n scrollDirection.current = direction;\n return;\n }\n }\n\n scrollSpeed.current = {\n x: 0,\n y: 0\n };\n scrollDirection.current = {\n x: 0,\n y: 0\n };\n clearAutoScrollInterval();\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [acceleration, autoScroll, canScroll, clearAutoScrollInterval, enabled, interval, // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(rect), // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(scrollIntent), setAutoScrollInterval, scrollableAncestors, sortedScrollableAncestors, scrollableAncestorRects, // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold)]);\n}\nconst defaultScrollIntent = {\n x: {\n [Direction.Backward]: false,\n [Direction.Forward]: false\n },\n y: {\n [Direction.Backward]: false,\n [Direction.Forward]: false\n }\n};\n\nfunction useScrollIntent(_ref2) {\n let {\n delta,\n disabled\n } = _ref2;\n const previousDelta = usePrevious(delta);\n return useLazyMemo(previousIntent => {\n if (disabled || !previousDelta || !previousIntent) {\n // Reset scroll intent tracking when auto-scrolling is disabled\n return defaultScrollIntent;\n }\n\n const direction = {\n x: Math.sign(delta.x - previousDelta.x),\n y: Math.sign(delta.y - previousDelta.y)\n }; // Keep track of the user intent to scroll in each direction for both axis\n\n return {\n x: {\n [Direction.Backward]: previousIntent.x[Direction.Backward] || direction.x === -1,\n [Direction.Forward]: previousIntent.x[Direction.Forward] || direction.x === 1\n },\n y: {\n [Direction.Backward]: previousIntent.y[Direction.Backward] || direction.y === -1,\n [Direction.Forward]: previousIntent.y[Direction.Forward] || direction.y === 1\n }\n };\n }, [disabled, delta, previousDelta]);\n}\n\nfunction useCachedNode(draggableNodes, id) {\n const draggableNode = id !== null ? draggableNodes.get(id) : undefined;\n const node = draggableNode ? draggableNode.node.current : null;\n return useLazyMemo(cachedNode => {\n var _ref;\n\n if (id === null) {\n return null;\n } // In some cases, the draggable node can unmount while dragging\n // This is the case for virtualized lists. In those situations,\n // we fall back to the last known value for that node.\n\n\n return (_ref = node != null ? node : cachedNode) != null ? _ref : null;\n }, [node, id]);\n}\n\nfunction useCombineActivators(sensors, getSyntheticHandler) {\n return useMemo(() => sensors.reduce((accumulator, sensor) => {\n const {\n sensor: Sensor\n } = sensor;\n const sensorActivators = Sensor.activators.map(activator => ({\n eventName: activator.eventName,\n handler: getSyntheticHandler(activator.handler, sensor)\n }));\n return [...accumulator, ...sensorActivators];\n }, []), [sensors, getSyntheticHandler]);\n}\n\nvar MeasuringStrategy;\n\n(function (MeasuringStrategy) {\n MeasuringStrategy[MeasuringStrategy[\"Always\"] = 0] = \"Always\";\n MeasuringStrategy[MeasuringStrategy[\"BeforeDragging\"] = 1] = \"BeforeDragging\";\n MeasuringStrategy[MeasuringStrategy[\"WhileDragging\"] = 2] = \"WhileDragging\";\n})(MeasuringStrategy || (MeasuringStrategy = {}));\n\nvar MeasuringFrequency;\n\n(function (MeasuringFrequency) {\n MeasuringFrequency[\"Optimized\"] = \"optimized\";\n})(MeasuringFrequency || (MeasuringFrequency = {}));\n\nconst defaultValue = /*#__PURE__*/new Map();\nfunction useDroppableMeasuring(containers, _ref) {\n let {\n dragging,\n dependencies,\n config\n } = _ref;\n const [containerIdsScheduledForMeasurement, setContainerIdsScheduledForMeasurement] = useState(null);\n const measuringScheduled = containerIdsScheduledForMeasurement != null;\n const {\n frequency,\n measure,\n strategy\n } = config;\n const containersRef = useRef(containers);\n const disabled = isDisabled();\n const disabledRef = useLatestValue(disabled);\n const measureDroppableContainers = useCallback(function (ids) {\n if (ids === void 0) {\n ids = [];\n }\n\n if (disabledRef.current) {\n return;\n }\n\n setContainerIdsScheduledForMeasurement(value => value ? value.concat(ids) : ids);\n }, [disabledRef]);\n const timeoutId = useRef(null);\n const droppableRects = useLazyMemo(previousValue => {\n if (disabled && !dragging) {\n return defaultValue;\n }\n\n const ids = containerIdsScheduledForMeasurement;\n\n if (!previousValue || previousValue === defaultValue || containersRef.current !== containers || ids != null) {\n const map = new Map();\n\n for (let container of containers) {\n if (!container) {\n continue;\n }\n\n if (ids && ids.length > 0 && !ids.includes(container.id) && container.rect.current) {\n // This container does not need to be re-measured\n map.set(container.id, container.rect.current);\n continue;\n }\n\n const node = container.node.current;\n const rect = node ? new Rect(measure(node), node) : null;\n container.rect.current = rect;\n\n if (rect) {\n map.set(container.id, rect);\n }\n }\n\n return map;\n }\n\n return previousValue;\n }, [containers, containerIdsScheduledForMeasurement, dragging, disabled, measure]);\n useEffect(() => {\n containersRef.current = containers;\n }, [containers]);\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n requestAnimationFrame(() => measureDroppableContainers());\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [dragging, disabled]);\n useEffect(() => {\n if (measuringScheduled) {\n setContainerIdsScheduledForMeasurement(null);\n }\n }, [measuringScheduled]);\n useEffect(() => {\n if (disabled || typeof frequency !== 'number' || timeoutId.current !== null) {\n return;\n }\n\n timeoutId.current = setTimeout(() => {\n measureDroppableContainers();\n timeoutId.current = null;\n }, frequency);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [frequency, disabled, measureDroppableContainers, ...dependencies]);\n return {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled\n };\n\n function isDisabled() {\n switch (strategy) {\n case MeasuringStrategy.Always:\n return false;\n\n case MeasuringStrategy.BeforeDragging:\n return dragging;\n\n default:\n return !dragging;\n }\n }\n}\n\nfunction useInitialValue(value, computeFn) {\n return useLazyMemo(previousValue => {\n if (!value) {\n return null;\n }\n\n if (previousValue) {\n return previousValue;\n }\n\n return typeof computeFn === 'function' ? computeFn(value) : value;\n }, [computeFn, value]);\n}\n\nfunction useInitialRect(node, measure) {\n return useInitialValue(node, measure);\n}\n\n/**\r\n * Returns a new MutationObserver instance.\r\n * If `MutationObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\nfunction useMutationObserver(_ref) {\n let {\n callback,\n disabled\n } = _ref;\n const handleMutations = useEvent(callback);\n const mutationObserver = useMemo(() => {\n if (disabled || typeof window === 'undefined' || typeof window.MutationObserver === 'undefined') {\n return undefined;\n }\n\n const {\n MutationObserver\n } = window;\n return new MutationObserver(handleMutations);\n }, [handleMutations, disabled]);\n useEffect(() => {\n return () => mutationObserver == null ? void 0 : mutationObserver.disconnect();\n }, [mutationObserver]);\n return mutationObserver;\n}\n\n/**\r\n * Returns a new ResizeObserver instance bound to the `onResize` callback.\r\n * If `ResizeObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\nfunction useResizeObserver(_ref) {\n let {\n callback,\n disabled\n } = _ref;\n const handleResize = useEvent(callback);\n const resizeObserver = useMemo(() => {\n if (disabled || typeof window === 'undefined' || typeof window.ResizeObserver === 'undefined') {\n return undefined;\n }\n\n const {\n ResizeObserver\n } = window;\n return new ResizeObserver(handleResize);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [disabled]);\n useEffect(() => {\n return () => resizeObserver == null ? void 0 : resizeObserver.disconnect();\n }, [resizeObserver]);\n return resizeObserver;\n}\n\nfunction defaultMeasure(element) {\n return new Rect(getClientRect(element), element);\n}\n\nfunction useRect(element, measure, fallbackRect) {\n if (measure === void 0) {\n measure = defaultMeasure;\n }\n\n const [rect, measureRect] = useReducer(reducer, null);\n const mutationObserver = useMutationObserver({\n callback(records) {\n if (!element) {\n return;\n }\n\n for (const record of records) {\n const {\n type,\n target\n } = record;\n\n if (type === 'childList' && target instanceof HTMLElement && target.contains(element)) {\n measureRect();\n break;\n }\n }\n }\n\n });\n const resizeObserver = useResizeObserver({\n callback: measureRect\n });\n useIsomorphicLayoutEffect(() => {\n measureRect();\n\n if (element) {\n resizeObserver == null ? void 0 : resizeObserver.observe(element);\n mutationObserver == null ? void 0 : mutationObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n } else {\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n }\n }, [element]);\n return rect;\n\n function reducer(currentRect) {\n if (!element) {\n return null;\n }\n\n if (element.isConnected === false) {\n var _ref;\n\n // Fall back to last rect we measured if the element is\n // no longer connected to the DOM.\n return (_ref = currentRect != null ? currentRect : fallbackRect) != null ? _ref : null;\n }\n\n const newRect = measure(element);\n\n if (JSON.stringify(currentRect) === JSON.stringify(newRect)) {\n return currentRect;\n }\n\n return newRect;\n }\n}\n\nfunction useRectDelta(rect) {\n const initialRect = useInitialValue(rect);\n return getRectDelta(rect, initialRect);\n}\n\nconst defaultValue$1 = [];\nfunction useScrollableAncestors(node) {\n const previousNode = useRef(node);\n const ancestors = useLazyMemo(previousValue => {\n if (!node) {\n return defaultValue$1;\n }\n\n if (previousValue && previousValue !== defaultValue$1 && node && previousNode.current && node.parentNode === previousNode.current.parentNode) {\n return previousValue;\n }\n\n return getScrollableAncestors(node);\n }, [node]);\n useEffect(() => {\n previousNode.current = node;\n }, [node]);\n return ancestors;\n}\n\nfunction useScrollOffsets(elements) {\n const [scrollCoordinates, setScrollCoordinates] = useState(null);\n const prevElements = useRef(elements); // To-do: Throttle the handleScroll callback\n\n const handleScroll = useCallback(event => {\n const scrollingElement = getScrollableElement(event.target);\n\n if (!scrollingElement) {\n return;\n }\n\n setScrollCoordinates(scrollCoordinates => {\n if (!scrollCoordinates) {\n return null;\n }\n\n scrollCoordinates.set(scrollingElement, getScrollCoordinates(scrollingElement));\n return new Map(scrollCoordinates);\n });\n }, []);\n useEffect(() => {\n const previousElements = prevElements.current;\n\n if (elements !== previousElements) {\n cleanup(previousElements);\n const entries = elements.map(element => {\n const scrollableElement = getScrollableElement(element);\n\n if (scrollableElement) {\n scrollableElement.addEventListener('scroll', handleScroll, {\n passive: true\n });\n return [scrollableElement, getScrollCoordinates(scrollableElement)];\n }\n\n return null;\n }).filter(entry => entry != null);\n setScrollCoordinates(entries.length ? new Map(entries) : null);\n prevElements.current = elements;\n }\n\n return () => {\n cleanup(elements);\n cleanup(previousElements);\n };\n\n function cleanup(elements) {\n elements.forEach(element => {\n const scrollableElement = getScrollableElement(element);\n scrollableElement == null ? void 0 : scrollableElement.removeEventListener('scroll', handleScroll);\n });\n }\n }, [handleScroll, elements]);\n return useMemo(() => {\n if (elements.length) {\n return scrollCoordinates ? Array.from(scrollCoordinates.values()).reduce((acc, coordinates) => add(acc, coordinates), defaultCoordinates) : getScrollOffsets(elements);\n }\n\n return defaultCoordinates;\n }, [elements, scrollCoordinates]);\n}\n\nfunction useScrollOffsetsDelta(scrollOffsets, dependencies) {\n if (dependencies === void 0) {\n dependencies = [];\n }\n\n const initialScrollOffsets = useRef(null);\n useEffect(() => {\n initialScrollOffsets.current = null;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n dependencies);\n useEffect(() => {\n const hasScrollOffsets = scrollOffsets !== defaultCoordinates;\n\n if (hasScrollOffsets && !initialScrollOffsets.current) {\n initialScrollOffsets.current = scrollOffsets;\n }\n\n if (!hasScrollOffsets && initialScrollOffsets.current) {\n initialScrollOffsets.current = null;\n }\n }, [scrollOffsets]);\n return initialScrollOffsets.current ? subtract(scrollOffsets, initialScrollOffsets.current) : defaultCoordinates;\n}\n\nfunction useSensorSetup(sensors) {\n useEffect(() => {\n if (!canUseDOM) {\n return;\n }\n\n const teardownFns = sensors.map(_ref => {\n let {\n sensor\n } = _ref;\n return sensor.setup == null ? void 0 : sensor.setup();\n });\n return () => {\n for (const teardown of teardownFns) {\n teardown == null ? void 0 : teardown();\n }\n };\n }, // TO-DO: Sensors length could theoretically change which would not be a valid dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n sensors.map(_ref2 => {\n let {\n sensor\n } = _ref2;\n return sensor;\n }));\n}\n\nfunction useSyntheticListeners(listeners, id) {\n return useMemo(() => {\n return listeners.reduce((acc, _ref) => {\n let {\n eventName,\n handler\n } = _ref;\n\n acc[eventName] = event => {\n handler(event, id);\n };\n\n return acc;\n }, {});\n }, [listeners, id]);\n}\n\nfunction useWindowRect(element) {\n return useMemo(() => element ? getWindowClientRect(element) : null, [element]);\n}\n\nconst defaultValue$2 = [];\nfunction useRects(elements, measure) {\n if (measure === void 0) {\n measure = getClientRect;\n }\n\n const [firstElement] = elements;\n const windowRect = useWindowRect(firstElement ? getWindow(firstElement) : null);\n const [rects, measureRects] = useReducer(reducer, defaultValue$2);\n const resizeObserver = useResizeObserver({\n callback: measureRects\n });\n\n if (elements.length > 0 && rects === defaultValue$2) {\n measureRects();\n }\n\n useIsomorphicLayoutEffect(() => {\n if (elements.length) {\n elements.forEach(element => resizeObserver == null ? void 0 : resizeObserver.observe(element));\n } else {\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n measureRects();\n }\n }, [elements]);\n return rects;\n\n function reducer() {\n if (!elements.length) {\n return defaultValue$2;\n }\n\n return elements.map(element => isDocumentScrollingElement(element) ? windowRect : new Rect(measure(element), element));\n }\n}\n\nfunction getMeasurableNode(node) {\n if (!node) {\n return null;\n }\n\n if (node.children.length > 1) {\n return node;\n }\n\n const firstChild = node.children[0];\n return isHTMLElement(firstChild) ? firstChild : node;\n}\n\nfunction useDragOverlayMeasuring(_ref) {\n let {\n measure\n } = _ref;\n const [rect, setRect] = useState(null);\n const handleResize = useCallback(entries => {\n for (const {\n target\n } of entries) {\n if (isHTMLElement(target)) {\n setRect(rect => {\n const newRect = measure(target);\n return rect ? { ...rect,\n width: newRect.width,\n height: newRect.height\n } : newRect;\n });\n break;\n }\n }\n }, [measure]);\n const resizeObserver = useResizeObserver({\n callback: handleResize\n });\n const handleNodeChange = useCallback(element => {\n const node = getMeasurableNode(element);\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n\n if (node) {\n resizeObserver == null ? void 0 : resizeObserver.observe(node);\n }\n\n setRect(node ? measure(node) : null);\n }, [measure, resizeObserver]);\n const [nodeRef, setRef] = useNodeRef(handleNodeChange);\n return useMemo(() => ({\n nodeRef,\n rect,\n setRef\n }), [rect, nodeRef, setRef]);\n}\n\nconst defaultSensors = [{\n sensor: PointerSensor,\n options: {}\n}, {\n sensor: KeyboardSensor,\n options: {}\n}];\nconst defaultData = {\n current: {}\n};\nconst defaultMeasuringConfiguration = {\n draggable: {\n measure: getTransformAgnosticClientRect\n },\n droppable: {\n measure: getTransformAgnosticClientRect,\n strategy: MeasuringStrategy.WhileDragging,\n frequency: MeasuringFrequency.Optimized\n },\n dragOverlay: {\n measure: getClientRect\n }\n};\n\nclass DroppableContainersMap extends Map {\n get(id) {\n var _super$get;\n\n return id != null ? (_super$get = super.get(id)) != null ? _super$get : undefined : undefined;\n }\n\n toArray() {\n return Array.from(this.values());\n }\n\n getEnabled() {\n return this.toArray().filter(_ref => {\n let {\n disabled\n } = _ref;\n return !disabled;\n });\n }\n\n getNodeFor(id) {\n var _this$get$node$curren, _this$get;\n\n return (_this$get$node$curren = (_this$get = this.get(id)) == null ? void 0 : _this$get.node.current) != null ? _this$get$node$curren : undefined;\n }\n\n}\n\nconst defaultPublicContext = {\n activatorEvent: null,\n active: null,\n activeNode: null,\n activeNodeRect: null,\n collisions: null,\n containerNodeRect: null,\n draggableNodes: /*#__PURE__*/new Map(),\n droppableRects: /*#__PURE__*/new Map(),\n droppableContainers: /*#__PURE__*/new DroppableContainersMap(),\n over: null,\n dragOverlay: {\n nodeRef: {\n current: null\n },\n rect: null,\n setRef: noop\n },\n scrollableAncestors: [],\n scrollableAncestorRects: [],\n measuringConfiguration: defaultMeasuringConfiguration,\n measureDroppableContainers: noop,\n windowRect: null,\n measuringScheduled: false\n};\nconst defaultInternalContext = {\n activatorEvent: null,\n activators: [],\n active: null,\n activeNodeRect: null,\n ariaDescribedById: {\n draggable: ''\n },\n dispatch: noop,\n draggableNodes: /*#__PURE__*/new Map(),\n over: null,\n measureDroppableContainers: noop\n};\nconst InternalContext = /*#__PURE__*/createContext(defaultInternalContext);\nconst PublicContext = /*#__PURE__*/createContext(defaultPublicContext);\n\nfunction getInitialState() {\n return {\n draggable: {\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n nodes: new Map(),\n translate: {\n x: 0,\n y: 0\n }\n },\n droppable: {\n containers: new DroppableContainersMap()\n }\n };\n}\nfunction reducer(state, action) {\n switch (action.type) {\n case Action.DragStart:\n return { ...state,\n draggable: { ...state.draggable,\n initialCoordinates: action.initialCoordinates,\n active: action.active\n }\n };\n\n case Action.DragMove:\n if (!state.draggable.active) {\n return state;\n }\n\n return { ...state,\n draggable: { ...state.draggable,\n translate: {\n x: action.coordinates.x - state.draggable.initialCoordinates.x,\n y: action.coordinates.y - state.draggable.initialCoordinates.y\n }\n }\n };\n\n case Action.DragEnd:\n case Action.DragCancel:\n return { ...state,\n draggable: { ...state.draggable,\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n translate: {\n x: 0,\n y: 0\n }\n }\n };\n\n case Action.RegisterDroppable:\n {\n const {\n element\n } = action;\n const {\n id\n } = element;\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, element);\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n case Action.SetDroppableDisabled:\n {\n const {\n id,\n key,\n disabled\n } = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, { ...element,\n disabled\n });\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n case Action.UnregisterDroppable:\n {\n const {\n id,\n key\n } = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.delete(id);\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n default:\n {\n return state;\n }\n }\n}\n\nfunction RestoreFocus(_ref) {\n let {\n disabled\n } = _ref;\n const {\n active,\n activatorEvent,\n draggableNodes\n } = useContext(InternalContext);\n const previousActivatorEvent = usePrevious(activatorEvent);\n const previousActiveId = usePrevious(active == null ? void 0 : active.id); // Restore keyboard focus on the activator node\n\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n if (!activatorEvent && previousActivatorEvent && previousActiveId != null) {\n if (!isKeyboardEvent(previousActivatorEvent)) {\n return;\n }\n\n if (document.activeElement === previousActivatorEvent.target) {\n // No need to restore focus\n return;\n }\n\n const draggableNode = draggableNodes.get(previousActiveId);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n activatorNode,\n node\n } = draggableNode;\n\n if (!activatorNode.current && !node.current) {\n return;\n }\n\n requestAnimationFrame(() => {\n for (const element of [activatorNode.current, node.current]) {\n if (!element) {\n continue;\n }\n\n const focusableNode = findFirstFocusableNode(element);\n\n if (focusableNode) {\n focusableNode.focus();\n break;\n }\n }\n });\n }\n }, [activatorEvent, disabled, draggableNodes, previousActiveId, previousActivatorEvent]);\n return null;\n}\n\nfunction applyModifiers(modifiers, _ref) {\n let {\n transform,\n ...args\n } = _ref;\n return modifiers != null && modifiers.length ? modifiers.reduce((accumulator, modifier) => {\n return modifier({\n transform: accumulator,\n ...args\n });\n }, transform) : transform;\n}\n\nfunction useMeasuringConfiguration(config) {\n return useMemo(() => ({\n draggable: { ...defaultMeasuringConfiguration.draggable,\n ...(config == null ? void 0 : config.draggable)\n },\n droppable: { ...defaultMeasuringConfiguration.droppable,\n ...(config == null ? void 0 : config.droppable)\n },\n dragOverlay: { ...defaultMeasuringConfiguration.dragOverlay,\n ...(config == null ? void 0 : config.dragOverlay)\n }\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [config == null ? void 0 : config.draggable, config == null ? void 0 : config.droppable, config == null ? void 0 : config.dragOverlay]);\n}\n\nfunction useLayoutShiftScrollCompensation(_ref) {\n let {\n activeNode,\n measure,\n initialRect,\n config = true\n } = _ref;\n const initialized = useRef(false);\n const {\n x,\n y\n } = typeof config === 'boolean' ? {\n x: config,\n y: config\n } : config;\n useIsomorphicLayoutEffect(() => {\n const disabled = !x && !y;\n\n if (disabled || !activeNode) {\n initialized.current = false;\n return;\n }\n\n if (initialized.current || !initialRect) {\n // Return early if layout shift scroll compensation was already attempted\n // or if there is no initialRect to compare to.\n return;\n } // Get the most up to date node ref for the active draggable\n\n\n const node = activeNode == null ? void 0 : activeNode.node.current;\n\n if (!node || node.isConnected === false) {\n // Return early if there is no attached node ref or if the node is\n // disconnected from the document.\n return;\n }\n\n const rect = measure(node);\n const rectDelta = getRectDelta(rect, initialRect);\n\n if (!x) {\n rectDelta.x = 0;\n }\n\n if (!y) {\n rectDelta.y = 0;\n } // Only perform layout shift scroll compensation once\n\n\n initialized.current = true;\n\n if (Math.abs(rectDelta.x) > 0 || Math.abs(rectDelta.y) > 0) {\n const firstScrollableAncestor = getFirstScrollableAncestor(node);\n\n if (firstScrollableAncestor) {\n firstScrollableAncestor.scrollBy({\n top: rectDelta.y,\n left: rectDelta.x\n });\n }\n }\n }, [activeNode, x, y, initialRect, measure]);\n}\n\nconst ActiveDraggableContext = /*#__PURE__*/createContext({ ...defaultCoordinates,\n scaleX: 1,\n scaleY: 1\n});\nvar Status;\n\n(function (Status) {\n Status[Status[\"Uninitialized\"] = 0] = \"Uninitialized\";\n Status[Status[\"Initializing\"] = 1] = \"Initializing\";\n Status[Status[\"Initialized\"] = 2] = \"Initialized\";\n})(Status || (Status = {}));\n\nconst DndContext = /*#__PURE__*/memo(function DndContext(_ref) {\n var _sensorContext$curren, _dragOverlay$nodeRef$, _dragOverlay$rect, _over$rect;\n\n let {\n id,\n accessibility,\n autoScroll = true,\n children,\n sensors = defaultSensors,\n collisionDetection = rectIntersection,\n measuring,\n modifiers,\n ...props\n } = _ref;\n const store = useReducer(reducer, undefined, getInitialState);\n const [state, dispatch] = store;\n const [dispatchMonitorEvent, registerMonitorListener] = useDndMonitorProvider();\n const [status, setStatus] = useState(Status.Uninitialized);\n const isInitialized = status === Status.Initialized;\n const {\n draggable: {\n active: activeId,\n nodes: draggableNodes,\n translate\n },\n droppable: {\n containers: droppableContainers\n }\n } = state;\n const node = activeId ? draggableNodes.get(activeId) : null;\n const activeRects = useRef({\n initial: null,\n translated: null\n });\n const active = useMemo(() => {\n var _node$data;\n\n return activeId != null ? {\n id: activeId,\n // It's possible for the active node to unmount while dragging\n data: (_node$data = node == null ? void 0 : node.data) != null ? _node$data : defaultData,\n rect: activeRects\n } : null;\n }, [activeId, node]);\n const activeRef = useRef(null);\n const [activeSensor, setActiveSensor] = useState(null);\n const [activatorEvent, setActivatorEvent] = useState(null);\n const latestProps = useLatestValue(props, Object.values(props));\n const draggableDescribedById = useUniqueId(\"DndDescribedBy\", id);\n const enabledDroppableContainers = useMemo(() => droppableContainers.getEnabled(), [droppableContainers]);\n const measuringConfiguration = useMeasuringConfiguration(measuring);\n const {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled\n } = useDroppableMeasuring(enabledDroppableContainers, {\n dragging: isInitialized,\n dependencies: [translate.x, translate.y],\n config: measuringConfiguration.droppable\n });\n const activeNode = useCachedNode(draggableNodes, activeId);\n const activationCoordinates = useMemo(() => activatorEvent ? getEventCoordinates(activatorEvent) : null, [activatorEvent]);\n const autoScrollOptions = getAutoScrollerOptions();\n const initialActiveNodeRect = useInitialRect(activeNode, measuringConfiguration.draggable.measure);\n useLayoutShiftScrollCompensation({\n activeNode: activeId ? draggableNodes.get(activeId) : null,\n config: autoScrollOptions.layoutShiftCompensation,\n initialRect: initialActiveNodeRect,\n measure: measuringConfiguration.draggable.measure\n });\n const activeNodeRect = useRect(activeNode, measuringConfiguration.draggable.measure, initialActiveNodeRect);\n const containerNodeRect = useRect(activeNode ? activeNode.parentElement : null);\n const sensorContext = useRef({\n activatorEvent: null,\n active: null,\n activeNode,\n collisionRect: null,\n collisions: null,\n droppableRects,\n draggableNodes,\n draggingNode: null,\n draggingNodeRect: null,\n droppableContainers,\n over: null,\n scrollableAncestors: [],\n scrollAdjustedTranslate: null\n });\n const overNode = droppableContainers.getNodeFor((_sensorContext$curren = sensorContext.current.over) == null ? void 0 : _sensorContext$curren.id);\n const dragOverlay = useDragOverlayMeasuring({\n measure: measuringConfiguration.dragOverlay.measure\n }); // Use the rect of the drag overlay if it is mounted\n\n const draggingNode = (_dragOverlay$nodeRef$ = dragOverlay.nodeRef.current) != null ? _dragOverlay$nodeRef$ : activeNode;\n const draggingNodeRect = isInitialized ? (_dragOverlay$rect = dragOverlay.rect) != null ? _dragOverlay$rect : activeNodeRect : null;\n const usesDragOverlay = Boolean(dragOverlay.nodeRef.current && dragOverlay.rect); // The delta between the previous and new position of the draggable node\n // is only relevant when there is no drag overlay\n\n const nodeRectDelta = useRectDelta(usesDragOverlay ? null : activeNodeRect); // Get the window rect of the dragging node\n\n const windowRect = useWindowRect(draggingNode ? getWindow(draggingNode) : null); // Get scrollable ancestors of the dragging node\n\n const scrollableAncestors = useScrollableAncestors(isInitialized ? overNode != null ? overNode : activeNode : null);\n const scrollableAncestorRects = useRects(scrollableAncestors); // Apply modifiers\n\n const modifiedTranslate = applyModifiers(modifiers, {\n transform: {\n x: translate.x - nodeRectDelta.x,\n y: translate.y - nodeRectDelta.y,\n scaleX: 1,\n scaleY: 1\n },\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect,\n over: sensorContext.current.over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect\n });\n const pointerCoordinates = activationCoordinates ? add(activationCoordinates, translate) : null;\n const scrollOffsets = useScrollOffsets(scrollableAncestors); // Represents the scroll delta since dragging was initiated\n\n const scrollAdjustment = useScrollOffsetsDelta(scrollOffsets); // Represents the scroll delta since the last time the active node rect was measured\n\n const activeNodeScrollDelta = useScrollOffsetsDelta(scrollOffsets, [activeNodeRect]);\n const scrollAdjustedTranslate = add(modifiedTranslate, scrollAdjustment);\n const collisionRect = draggingNodeRect ? getAdjustedRect(draggingNodeRect, modifiedTranslate) : null;\n const collisions = active && collisionRect ? collisionDetection({\n active,\n collisionRect,\n droppableRects,\n droppableContainers: enabledDroppableContainers,\n pointerCoordinates\n }) : null;\n const overId = getFirstCollision(collisions, 'id');\n const [over, setOver] = useState(null); // When there is no drag overlay used, we need to account for the\n // window scroll delta\n\n const appliedTranslate = usesDragOverlay ? modifiedTranslate : add(modifiedTranslate, activeNodeScrollDelta);\n const transform = adjustScale(appliedTranslate, (_over$rect = over == null ? void 0 : over.rect) != null ? _over$rect : null, activeNodeRect);\n const instantiateSensor = useCallback((event, _ref2) => {\n let {\n sensor: Sensor,\n options\n } = _ref2;\n\n if (activeRef.current == null) {\n return;\n }\n\n const activeNode = draggableNodes.get(activeRef.current);\n\n if (!activeNode) {\n return;\n }\n\n const activatorEvent = event.nativeEvent;\n const sensorInstance = new Sensor({\n active: activeRef.current,\n activeNode,\n event: activatorEvent,\n options,\n // Sensors need to be instantiated with refs for arguments that change over time\n // otherwise they are frozen in time with the stale arguments\n context: sensorContext,\n\n onStart(initialCoordinates) {\n const id = activeRef.current;\n\n if (id == null) {\n return;\n }\n\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n onDragStart\n } = latestProps.current;\n const event = {\n active: {\n id,\n data: draggableNode.data,\n rect: activeRects\n }\n };\n unstable_batchedUpdates(() => {\n onDragStart == null ? void 0 : onDragStart(event);\n setStatus(Status.Initializing);\n dispatch({\n type: Action.DragStart,\n initialCoordinates,\n active: id\n });\n dispatchMonitorEvent({\n type: 'onDragStart',\n event\n });\n });\n },\n\n onMove(coordinates) {\n dispatch({\n type: Action.DragMove,\n coordinates\n });\n },\n\n onEnd: createHandler(Action.DragEnd),\n onCancel: createHandler(Action.DragCancel)\n });\n unstable_batchedUpdates(() => {\n setActiveSensor(sensorInstance);\n setActivatorEvent(event.nativeEvent);\n });\n\n function createHandler(type) {\n return async function handler() {\n const {\n active,\n collisions,\n over,\n scrollAdjustedTranslate\n } = sensorContext.current;\n let event = null;\n\n if (active && scrollAdjustedTranslate) {\n const {\n cancelDrop\n } = latestProps.current;\n event = {\n activatorEvent,\n active: active,\n collisions,\n delta: scrollAdjustedTranslate,\n over\n };\n\n if (type === Action.DragEnd && typeof cancelDrop === 'function') {\n const shouldCancel = await Promise.resolve(cancelDrop(event));\n\n if (shouldCancel) {\n type = Action.DragCancel;\n }\n }\n }\n\n activeRef.current = null;\n unstable_batchedUpdates(() => {\n dispatch({\n type\n });\n setStatus(Status.Uninitialized);\n setOver(null);\n setActiveSensor(null);\n setActivatorEvent(null);\n const eventName = type === Action.DragEnd ? 'onDragEnd' : 'onDragCancel';\n\n if (event) {\n const handler = latestProps.current[eventName];\n handler == null ? void 0 : handler(event);\n dispatchMonitorEvent({\n type: eventName,\n event\n });\n }\n });\n };\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes]);\n const bindActivatorToSensorInstantiator = useCallback((handler, sensor) => {\n return (event, active) => {\n const nativeEvent = event.nativeEvent;\n const activeDraggableNode = draggableNodes.get(active);\n\n if ( // Another sensor is already instantiating\n activeRef.current !== null || // No active draggable\n !activeDraggableNode || // Event has already been captured\n nativeEvent.dndKit || nativeEvent.defaultPrevented) {\n return;\n }\n\n const activationContext = {\n active: activeDraggableNode\n };\n const shouldActivate = handler(event, sensor.options, activationContext);\n\n if (shouldActivate === true) {\n nativeEvent.dndKit = {\n capturedBy: sensor.sensor\n };\n activeRef.current = active;\n instantiateSensor(event, sensor);\n }\n };\n }, [draggableNodes, instantiateSensor]);\n const activators = useCombineActivators(sensors, bindActivatorToSensorInstantiator);\n useSensorSetup(sensors);\n useIsomorphicLayoutEffect(() => {\n if (activeNodeRect && status === Status.Initializing) {\n setStatus(Status.Initialized);\n }\n }, [activeNodeRect, status]);\n useEffect(() => {\n const {\n onDragMove\n } = latestProps.current;\n const {\n active,\n activatorEvent,\n collisions,\n over\n } = sensorContext.current;\n\n if (!active || !activatorEvent) {\n return;\n }\n\n const event = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y\n },\n over\n };\n unstable_batchedUpdates(() => {\n onDragMove == null ? void 0 : onDragMove(event);\n dispatchMonitorEvent({\n type: 'onDragMove',\n event\n });\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollAdjustedTranslate.x, scrollAdjustedTranslate.y]);\n useEffect(() => {\n const {\n active,\n activatorEvent,\n collisions,\n droppableContainers,\n scrollAdjustedTranslate\n } = sensorContext.current;\n\n if (!active || activeRef.current == null || !activatorEvent || !scrollAdjustedTranslate) {\n return;\n }\n\n const {\n onDragOver\n } = latestProps.current;\n const overContainer = droppableContainers.get(overId);\n const over = overContainer && overContainer.rect.current ? {\n id: overContainer.id,\n rect: overContainer.rect.current,\n data: overContainer.data,\n disabled: overContainer.disabled\n } : null;\n const event = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y\n },\n over\n };\n unstable_batchedUpdates(() => {\n setOver(over);\n onDragOver == null ? void 0 : onDragOver(event);\n dispatchMonitorEvent({\n type: 'onDragOver',\n event\n });\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [overId]);\n useIsomorphicLayoutEffect(() => {\n sensorContext.current = {\n activatorEvent,\n active,\n activeNode,\n collisionRect,\n collisions,\n droppableRects,\n draggableNodes,\n draggingNode,\n draggingNodeRect,\n droppableContainers,\n over,\n scrollableAncestors,\n scrollAdjustedTranslate\n };\n activeRects.current = {\n initial: draggingNodeRect,\n translated: collisionRect\n };\n }, [active, activeNode, collisions, collisionRect, draggableNodes, draggingNode, draggingNodeRect, droppableRects, droppableContainers, over, scrollableAncestors, scrollAdjustedTranslate]);\n useAutoScroller({ ...autoScrollOptions,\n delta: translate,\n draggingRect: collisionRect,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects\n });\n const publicContext = useMemo(() => {\n const context = {\n active,\n activeNode,\n activeNodeRect,\n activatorEvent,\n collisions,\n containerNodeRect,\n dragOverlay,\n draggableNodes,\n droppableContainers,\n droppableRects,\n over,\n measureDroppableContainers,\n scrollableAncestors,\n scrollableAncestorRects,\n measuringConfiguration,\n measuringScheduled,\n windowRect\n };\n return context;\n }, [active, activeNode, activeNodeRect, activatorEvent, collisions, containerNodeRect, dragOverlay, draggableNodes, droppableContainers, droppableRects, over, measureDroppableContainers, scrollableAncestors, scrollableAncestorRects, measuringConfiguration, measuringScheduled, windowRect]);\n const internalContext = useMemo(() => {\n const context = {\n activatorEvent,\n activators,\n active,\n activeNodeRect,\n ariaDescribedById: {\n draggable: draggableDescribedById\n },\n dispatch,\n draggableNodes,\n over,\n measureDroppableContainers\n };\n return context;\n }, [activatorEvent, activators, active, activeNodeRect, dispatch, draggableDescribedById, draggableNodes, over, measureDroppableContainers]);\n return React.createElement(DndMonitorContext.Provider, {\n value: registerMonitorListener\n }, React.createElement(InternalContext.Provider, {\n value: internalContext\n }, React.createElement(PublicContext.Provider, {\n value: publicContext\n }, React.createElement(ActiveDraggableContext.Provider, {\n value: transform\n }, children)), React.createElement(RestoreFocus, {\n disabled: (accessibility == null ? void 0 : accessibility.restoreFocus) === false\n })), React.createElement(Accessibility, { ...accessibility,\n hiddenTextDescribedById: draggableDescribedById\n }));\n\n function getAutoScrollerOptions() {\n const activeSensorDisablesAutoscroll = (activeSensor == null ? void 0 : activeSensor.autoScrollEnabled) === false;\n const autoScrollGloballyDisabled = typeof autoScroll === 'object' ? autoScroll.enabled === false : autoScroll === false;\n const enabled = isInitialized && !activeSensorDisablesAutoscroll && !autoScrollGloballyDisabled;\n\n if (typeof autoScroll === 'object') {\n return { ...autoScroll,\n enabled\n };\n }\n\n return {\n enabled\n };\n }\n});\n\nconst NullContext = /*#__PURE__*/createContext(null);\nconst defaultRole = 'button';\nconst ID_PREFIX = 'Droppable';\nfunction useDraggable(_ref) {\n let {\n id,\n data,\n disabled = false,\n attributes\n } = _ref;\n const key = useUniqueId(ID_PREFIX);\n const {\n activators,\n activatorEvent,\n active,\n activeNodeRect,\n ariaDescribedById,\n draggableNodes,\n over\n } = useContext(InternalContext);\n const {\n role = defaultRole,\n roleDescription = 'draggable',\n tabIndex = 0\n } = attributes != null ? attributes : {};\n const isDragging = (active == null ? void 0 : active.id) === id;\n const transform = useContext(isDragging ? ActiveDraggableContext : NullContext);\n const [node, setNodeRef] = useNodeRef();\n const [activatorNode, setActivatorNodeRef] = useNodeRef();\n const listeners = useSyntheticListeners(activators, id);\n const dataRef = useLatestValue(data);\n useIsomorphicLayoutEffect(() => {\n draggableNodes.set(id, {\n id,\n key,\n node,\n activatorNode,\n data: dataRef\n });\n return () => {\n const node = draggableNodes.get(id);\n\n if (node && node.key === key) {\n draggableNodes.delete(id);\n }\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes, id]);\n const memoizedAttributes = useMemo(() => ({\n role,\n tabIndex,\n 'aria-disabled': disabled,\n 'aria-pressed': isDragging && role === defaultRole ? true : undefined,\n 'aria-roledescription': roleDescription,\n 'aria-describedby': ariaDescribedById.draggable\n }), [disabled, role, tabIndex, isDragging, roleDescription, ariaDescribedById.draggable]);\n return {\n active,\n activatorEvent,\n activeNodeRect,\n attributes: memoizedAttributes,\n isDragging,\n listeners: disabled ? undefined : listeners,\n node,\n over,\n setNodeRef,\n setActivatorNodeRef,\n transform\n };\n}\n\nfunction useDndContext() {\n return useContext(PublicContext);\n}\n\nconst ID_PREFIX$1 = 'Droppable';\nconst defaultResizeObserverConfig = {\n timeout: 25\n};\nfunction useDroppable(_ref) {\n let {\n data,\n disabled = false,\n id,\n resizeObserverConfig\n } = _ref;\n const key = useUniqueId(ID_PREFIX$1);\n const {\n active,\n dispatch,\n over,\n measureDroppableContainers\n } = useContext(InternalContext);\n const previous = useRef({\n disabled\n });\n const resizeObserverConnected = useRef(false);\n const rect = useRef(null);\n const callbackId = useRef(null);\n const {\n disabled: resizeObserverDisabled,\n updateMeasurementsFor,\n timeout: resizeObserverTimeout\n } = { ...defaultResizeObserverConfig,\n ...resizeObserverConfig\n };\n const ids = useLatestValue(updateMeasurementsFor != null ? updateMeasurementsFor : id);\n const handleResize = useCallback(() => {\n if (!resizeObserverConnected.current) {\n // ResizeObserver invokes the `handleResize` callback as soon as `observe` is called,\n // assuming the element is rendered and displayed.\n resizeObserverConnected.current = true;\n return;\n }\n\n if (callbackId.current != null) {\n clearTimeout(callbackId.current);\n }\n\n callbackId.current = setTimeout(() => {\n measureDroppableContainers(Array.isArray(ids.current) ? ids.current : [ids.current]);\n callbackId.current = null;\n }, resizeObserverTimeout);\n }, //eslint-disable-next-line react-hooks/exhaustive-deps\n [resizeObserverTimeout]);\n const resizeObserver = useResizeObserver({\n callback: handleResize,\n disabled: resizeObserverDisabled || !active\n });\n const handleNodeChange = useCallback((newElement, previousElement) => {\n if (!resizeObserver) {\n return;\n }\n\n if (previousElement) {\n resizeObserver.unobserve(previousElement);\n resizeObserverConnected.current = false;\n }\n\n if (newElement) {\n resizeObserver.observe(newElement);\n }\n }, [resizeObserver]);\n const [nodeRef, setNodeRef] = useNodeRef(handleNodeChange);\n const dataRef = useLatestValue(data);\n useEffect(() => {\n if (!resizeObserver || !nodeRef.current) {\n return;\n }\n\n resizeObserver.disconnect();\n resizeObserverConnected.current = false;\n resizeObserver.observe(nodeRef.current);\n }, [nodeRef, resizeObserver]);\n useIsomorphicLayoutEffect(() => {\n dispatch({\n type: Action.RegisterDroppable,\n element: {\n id,\n key,\n disabled,\n node: nodeRef,\n rect,\n data: dataRef\n }\n });\n return () => dispatch({\n type: Action.UnregisterDroppable,\n key,\n id\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [id]);\n useEffect(() => {\n if (disabled !== previous.current.disabled) {\n dispatch({\n type: Action.SetDroppableDisabled,\n id,\n key,\n disabled\n });\n previous.current.disabled = disabled;\n }\n }, [id, key, disabled, dispatch]);\n return {\n active,\n rect,\n isOver: (over == null ? void 0 : over.id) === id,\n node: nodeRef,\n over,\n setNodeRef\n };\n}\n\nfunction AnimationManager(_ref) {\n let {\n animation,\n children\n } = _ref;\n const [clonedChildren, setClonedChildren] = useState(null);\n const [element, setElement] = useState(null);\n const previousChildren = usePrevious(children);\n\n if (!children && !clonedChildren && previousChildren) {\n setClonedChildren(previousChildren);\n }\n\n useIsomorphicLayoutEffect(() => {\n if (!element) {\n return;\n }\n\n const key = clonedChildren == null ? void 0 : clonedChildren.key;\n const id = clonedChildren == null ? void 0 : clonedChildren.props.id;\n\n if (key == null || id == null) {\n setClonedChildren(null);\n return;\n }\n\n Promise.resolve(animation(id, element)).then(() => {\n setClonedChildren(null);\n });\n }, [animation, clonedChildren, element]);\n return React.createElement(React.Fragment, null, children, clonedChildren ? cloneElement(clonedChildren, {\n ref: setElement\n }) : null);\n}\n\nconst defaultTransform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1\n};\nfunction NullifiedContextProvider(_ref) {\n let {\n children\n } = _ref;\n return React.createElement(InternalContext.Provider, {\n value: defaultInternalContext\n }, React.createElement(ActiveDraggableContext.Provider, {\n value: defaultTransform\n }, children));\n}\n\nconst baseStyles = {\n position: 'fixed',\n touchAction: 'none'\n};\n\nconst defaultTransition = activatorEvent => {\n const isKeyboardActivator = isKeyboardEvent(activatorEvent);\n return isKeyboardActivator ? 'transform 250ms ease' : undefined;\n};\n\nconst PositionedOverlay = /*#__PURE__*/forwardRef((_ref, ref) => {\n let {\n as,\n activatorEvent,\n adjustScale,\n children,\n className,\n rect,\n style,\n transform,\n transition = defaultTransition\n } = _ref;\n\n if (!rect) {\n return null;\n }\n\n const scaleAdjustedTransform = adjustScale ? transform : { ...transform,\n scaleX: 1,\n scaleY: 1\n };\n const styles = { ...baseStyles,\n width: rect.width,\n height: rect.height,\n top: rect.top,\n left: rect.left,\n transform: CSS.Transform.toString(scaleAdjustedTransform),\n transformOrigin: adjustScale && activatorEvent ? getRelativeTransformOrigin(activatorEvent, rect) : undefined,\n transition: typeof transition === 'function' ? transition(activatorEvent) : transition,\n ...style\n };\n return React.createElement(as, {\n className,\n style: styles,\n ref\n }, children);\n});\n\nconst defaultDropAnimationSideEffects = options => _ref => {\n let {\n active,\n dragOverlay\n } = _ref;\n const originalStyles = {};\n const {\n styles,\n className\n } = options;\n\n if (styles != null && styles.active) {\n for (const [key, value] of Object.entries(styles.active)) {\n if (value === undefined) {\n continue;\n }\n\n originalStyles[key] = active.node.style.getPropertyValue(key);\n active.node.style.setProperty(key, value);\n }\n }\n\n if (styles != null && styles.dragOverlay) {\n for (const [key, value] of Object.entries(styles.dragOverlay)) {\n if (value === undefined) {\n continue;\n }\n\n dragOverlay.node.style.setProperty(key, value);\n }\n }\n\n if (className != null && className.active) {\n active.node.classList.add(className.active);\n }\n\n if (className != null && className.dragOverlay) {\n dragOverlay.node.classList.add(className.dragOverlay);\n }\n\n return function cleanup() {\n for (const [key, value] of Object.entries(originalStyles)) {\n active.node.style.setProperty(key, value);\n }\n\n if (className != null && className.active) {\n active.node.classList.remove(className.active);\n }\n };\n};\n\nconst defaultKeyframeResolver = _ref2 => {\n let {\n transform: {\n initial,\n final\n }\n } = _ref2;\n return [{\n transform: CSS.Transform.toString(initial)\n }, {\n transform: CSS.Transform.toString(final)\n }];\n};\n\nconst defaultDropAnimationConfiguration = {\n duration: 250,\n easing: 'ease',\n keyframes: defaultKeyframeResolver,\n sideEffects: /*#__PURE__*/defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0'\n }\n }\n })\n};\nfunction useDropAnimation(_ref3) {\n let {\n config,\n draggableNodes,\n droppableContainers,\n measuringConfiguration\n } = _ref3;\n return useEvent((id, node) => {\n if (config === null) {\n return;\n }\n\n const activeDraggable = draggableNodes.get(id);\n\n if (!activeDraggable) {\n return;\n }\n\n const activeNode = activeDraggable.node.current;\n\n if (!activeNode) {\n return;\n }\n\n const measurableNode = getMeasurableNode(node);\n\n if (!measurableNode) {\n return;\n }\n\n const {\n transform\n } = getWindow(node).getComputedStyle(node);\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return;\n }\n\n const animation = typeof config === 'function' ? config : createDefaultDropAnimation(config);\n scrollIntoViewIfNeeded(activeNode, measuringConfiguration.draggable.measure);\n return animation({\n active: {\n id,\n data: activeDraggable.data,\n node: activeNode,\n rect: measuringConfiguration.draggable.measure(activeNode)\n },\n draggableNodes,\n dragOverlay: {\n node,\n rect: measuringConfiguration.dragOverlay.measure(measurableNode)\n },\n droppableContainers,\n measuringConfiguration,\n transform: parsedTransform\n });\n });\n}\n\nfunction createDefaultDropAnimation(options) {\n const {\n duration,\n easing,\n sideEffects,\n keyframes\n } = { ...defaultDropAnimationConfiguration,\n ...options\n };\n return _ref4 => {\n let {\n active,\n dragOverlay,\n transform,\n ...rest\n } = _ref4;\n\n if (!duration) {\n // Do not animate if animation duration is zero.\n return;\n }\n\n const delta = {\n x: dragOverlay.rect.left - active.rect.left,\n y: dragOverlay.rect.top - active.rect.top\n };\n const scale = {\n scaleX: transform.scaleX !== 1 ? active.rect.width * transform.scaleX / dragOverlay.rect.width : 1,\n scaleY: transform.scaleY !== 1 ? active.rect.height * transform.scaleY / dragOverlay.rect.height : 1\n };\n const finalTransform = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n ...scale\n };\n const animationKeyframes = keyframes({ ...rest,\n active,\n dragOverlay,\n transform: {\n initial: transform,\n final: finalTransform\n }\n });\n const [firstKeyframe] = animationKeyframes;\n const lastKeyframe = animationKeyframes[animationKeyframes.length - 1];\n\n if (JSON.stringify(firstKeyframe) === JSON.stringify(lastKeyframe)) {\n // The start and end keyframes are the same, infer that there is no animation needed.\n return;\n }\n\n const cleanup = sideEffects == null ? void 0 : sideEffects({\n active,\n dragOverlay,\n ...rest\n });\n const animation = dragOverlay.node.animate(animationKeyframes, {\n duration,\n easing,\n fill: 'forwards'\n });\n return new Promise(resolve => {\n animation.onfinish = () => {\n cleanup == null ? void 0 : cleanup();\n resolve();\n };\n });\n };\n}\n\nlet key = 0;\nfunction useKey(id) {\n return useMemo(() => {\n if (id == null) {\n return;\n }\n\n key++;\n return key;\n }, [id]);\n}\n\nconst DragOverlay = /*#__PURE__*/React.memo(_ref => {\n let {\n adjustScale = false,\n children,\n dropAnimation: dropAnimationConfig,\n style,\n transition,\n modifiers,\n wrapperElement = 'div',\n className,\n zIndex = 999\n } = _ref;\n const {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggableNodes,\n droppableContainers,\n dragOverlay,\n over,\n measuringConfiguration,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect\n } = useDndContext();\n const transform = useContext(ActiveDraggableContext);\n const key = useKey(active == null ? void 0 : active.id);\n const modifiedTransform = applyModifiers(modifiers, {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect: dragOverlay.rect,\n over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n transform,\n windowRect\n });\n const initialRect = useInitialValue(activeNodeRect);\n const dropAnimation = useDropAnimation({\n config: dropAnimationConfig,\n draggableNodes,\n droppableContainers,\n measuringConfiguration\n }); // We need to wait for the active node to be measured before connecting the drag overlay ref\n // otherwise collisions can be computed against a mispositioned drag overlay\n\n const ref = initialRect ? dragOverlay.setRef : undefined;\n return React.createElement(NullifiedContextProvider, null, React.createElement(AnimationManager, {\n animation: dropAnimation\n }, active && key ? React.createElement(PositionedOverlay, {\n key: key,\n id: active.id,\n ref: ref,\n as: wrapperElement,\n activatorEvent: activatorEvent,\n adjustScale: adjustScale,\n className: className,\n transition: transition,\n rect: initialRect,\n style: {\n zIndex,\n ...style\n },\n transform: modifiedTransform\n }, children) : null));\n});\n\nexport { AutoScrollActivator, DndContext, DragOverlay, KeyboardCode, KeyboardSensor, MeasuringFrequency, MeasuringStrategy, MouseSensor, PointerSensor, TouchSensor, TraversalOrder, applyModifiers, closestCenter, closestCorners, defaultAnnouncements, defaultCoordinates, defaultDropAnimationConfiguration as defaultDropAnimation, defaultDropAnimationSideEffects, defaultScreenReaderInstructions, getClientRect, getFirstCollision, getScrollableAncestors, pointerWithin, rectIntersection, useDndContext, useDndMonitor, useDraggable, useDroppable, useSensor, useSensors };\n//# sourceMappingURL=core.esm.js.map\n","import React from 'react';\nimport { useDraggable, UseDraggableArguments, useDroppable, UseDroppableArguments } from '@dnd-kit/core';\n\ninterface DragDropMoveWrapperProps extends React.PropsWithChildren {\n droppable?: UseDroppableArguments,\n draggable?: UseDraggableArguments\n dragStyle?: string;\n dropStye?: string;\n setIsDragging?: React.Dispatch<React.SetStateAction<boolean>>\n isDragging?: boolean;\n}\n\nexport function DragDropMoveWrapper(props: DragDropMoveWrapperProps) {\n const {\n active: dragActive,\n isDragging,\n attributes,\n listeners,\n setNodeRef: draggableRef\n } = useDraggable({ ...props.draggable, disabled: !props.draggable, attributes: { role: 'drag', tabIndex: -1 } });\n const {\n isOver,\n over,\n active: dropActive,\n setNodeRef: droppableRef\n } = useDroppable({ ...props.droppable, disabled: !props.droppable });\n\n React.useEffect(() => {\n const data = props.draggable?.data;\n if (Array.isArray(data) && data?.includes(dragActive?.id.toString())) {\n props.setIsDragging?.(isDragging);\n } else {\n props.setIsDragging?.(false);\n }\n }, [isDragging]);\n\n function isSelected() {\n const data = props.draggable?.data;\n return Array.isArray(data) && data.includes(props.draggable.id.toString());\n }\n\n return (\n <div\n ref={draggableRef}\n {...listeners}\n {...attributes}\n className={`${props.draggable ? 'cursor-grab' : 'cursor-default'} ${(isDragging && dragActive) || (props.isDragging && isSelected()) ? props.dragStyle : null}`}\n >\n <div\n ref={droppableRef}\n className={(dropActive && isOver && dragActive?.id !== over?.id) ? props.dropStye : null}\n >\n {props.children}\n </div>\n </div>\n );\n}","import * as React from 'react';\nimport { Button, ButtonProps } from 'react-bootstrap';\n\nimport { Cursors } from 'libs/common/backbone/interfaces';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nfunction buildCursor(appLink: Core.AppLink, cursorParam: string, prevHack?: boolean): Core.AppLink {\n if (!cursorParam)\n return null;\n\n const currentParams = appLink.params as HashObject ?? {};\n /* \n Currently the pagination for My Videos shows the previous cursor in the first page cursor,\n so instead of using the previous cursor from the response, the current cursor is being passed\n as the previous cursor in the app link\n */\n\n if (prevHack) {\n if (!currentParams?.previous) {\n return {\n application: appLink.application,\n action: appLink.action,\n args: appLink.args,\n params: {\n ...currentParams,\n cursor: null,\n previous: null\n }\n };\n }\n return {\n application: appLink.application,\n action: appLink.action,\n args: appLink.args,\n params: {\n ...currentParams,\n cursor: currentParams?.previous,\n previous: null\n }\n };\n }\n\n return {\n application: appLink.application,\n action: appLink.action,\n args: appLink.args,\n params: {\n ...currentParams,\n cursor: cursorParam,\n previous: currentParams.cursor\n }\n };\n}\n\ninterface CursorPaginationProps {\n cursors: Cursors;\n appLink?: Core.AppLink;\n className?: string;\n buttonVariant?: ButtonProps['variant'];\n prevHack?: boolean;\n scrollTop?: boolean;\n onClick?: (cursor: string) => void;\n}\n\nPagination.defaultProps = {\n className: 'py-2',\n buttonVariant: 'secondary'\n};\n\nexport function Pagination(\n { appLink, cursors, className, buttonVariant, prevHack, scrollTop, onClick }: CursorPaginationProps\n): JSX.Element {\n function onClickButton(page: 'next' | 'previous'): void {\n if (appLink && scrollTop === false)\n ScrollHelper.preventScrollTop();\n\n AnalyticsHelper.logUserAction({ page }, {\n location: LocationContext.Pagination,\n entity: EntityType.Pagination,\n actionType: UserAction.Navigate\n });\n\n if (onClick)\n onClick(cursors[page]);\n }\n\n if (appLink) {\n return (\n <LanguageNamespaceContext.Provider value='shared.pagination'>\n <div className={className}>\n <AppLink\n appLink={buildCursor(appLink, cursors.previous, prevHack)}\n className={`btn btn-${buttonVariant} me-1 ${!cursors.previous ? 'disabled' : ''}`}\n onClick={() => onClickButton('previous')}\n // make sure disabled button and clickable button looks the same\n style={{ display: 'inline-block' }}\n >\n <Text phrase='previous' />\n </AppLink>\n \n <AppLink\n appLink={buildCursor(appLink, cursors.next)}\n className={`btn btn-${buttonVariant} ${!cursors.next ? 'disabled' : ''}`}\n onClick={() => onClickButton('next')}\n // make sure disabled button and clickable button looks the same\n style={{ display: 'inline-block' }}\n >\n <Text phrase='next' />\n </AppLink>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n }\n \n return (\n <LanguageNamespaceContext.Provider value='shared.pagination'>\n <div className={className}>\n <Button\n variant={buttonVariant}\n className={`me-1 ${!cursors.previous ? 'disabled' : ''}`}\n onClick={() => onClickButton('previous')}\n >\n <Text phrase='previous' />\n </Button>\n <Button\n variant={buttonVariant}\n className={`btn ${!cursors.next ? 'disabled' : ''}`}\n onClick={() => onClickButton('next')}\n >\n <Text phrase='next' />\n </Button>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import { getEventCoordinates } from '@dnd-kit/utilities';\n\nfunction createSnapModifier(gridSize) {\n return ({\n transform\n }) => ({ ...transform,\n x: Math.ceil(transform.x / gridSize) * gridSize,\n y: Math.ceil(transform.y / gridSize) * gridSize\n });\n}\n\nconst restrictToHorizontalAxis = ({\n transform\n}) => {\n return { ...transform,\n y: 0\n };\n};\n\nfunction restrictToBoundingRect(transform, rect, boundingRect) {\n const value = { ...transform\n };\n\n if (rect.top + transform.y <= boundingRect.top) {\n value.y = boundingRect.top - rect.top;\n } else if (rect.bottom + transform.y >= boundingRect.top + boundingRect.height) {\n value.y = boundingRect.top + boundingRect.height - rect.bottom;\n }\n\n if (rect.left + transform.x <= boundingRect.left) {\n value.x = boundingRect.left - rect.left;\n } else if (rect.right + transform.x >= boundingRect.left + boundingRect.width) {\n value.x = boundingRect.left + boundingRect.width - rect.right;\n }\n\n return value;\n}\n\nconst restrictToParentElement = ({\n containerNodeRect,\n draggingNodeRect,\n transform\n}) => {\n if (!draggingNodeRect || !containerNodeRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, containerNodeRect);\n};\n\nconst restrictToFirstScrollableAncestor = ({\n draggingNodeRect,\n transform,\n scrollableAncestorRects\n}) => {\n const firstScrollableAncestorRect = scrollableAncestorRects[0];\n\n if (!draggingNodeRect || !firstScrollableAncestorRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, firstScrollableAncestorRect);\n};\n\nconst restrictToVerticalAxis = ({\n transform\n}) => {\n return { ...transform,\n x: 0\n };\n};\n\nconst restrictToWindowEdges = ({\n transform,\n draggingNodeRect,\n windowRect\n}) => {\n if (!draggingNodeRect || !windowRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, windowRect);\n};\n\nconst snapCenterToCursor = ({\n activatorEvent,\n draggingNodeRect,\n transform\n}) => {\n if (draggingNodeRect && activatorEvent) {\n const activatorCoordinates = getEventCoordinates(activatorEvent);\n\n if (!activatorCoordinates) {\n return transform;\n }\n\n const offsetX = activatorCoordinates.x - draggingNodeRect.left;\n const offsetY = activatorCoordinates.y - draggingNodeRect.top;\n return { ...transform,\n x: transform.x + offsetX - draggingNodeRect.width / 2,\n y: transform.y + offsetY - draggingNodeRect.height / 2\n };\n }\n\n return transform;\n};\n\nexport { createSnapModifier, restrictToFirstScrollableAncestor, restrictToHorizontalAxis, restrictToParentElement, restrictToVerticalAxis, restrictToWindowEdges, snapCenterToCursor };\n//# sourceMappingURL=modifiers.esm.js.map\n","import React, { useMemo, useRef, useEffect, useState, useContext } from 'react';\nimport { useDndContext, getClientRect, useDroppable, useDraggable, closestCorners, getFirstCollision, getScrollableAncestors, KeyboardCode } from '@dnd-kit/core';\nimport { useUniqueId, useIsomorphicLayoutEffect, CSS, useCombinedRefs, isKeyboardEvent, subtract } from '@dnd-kit/utilities';\n\n/**\r\n * Move an array item to a different position. Returns a new array with the item moved to the new position.\r\n */\nfunction arrayMove(array, from, to) {\n const newArray = array.slice();\n newArray.splice(to < 0 ? newArray.length + to : to, 0, newArray.splice(from, 1)[0]);\n return newArray;\n}\n\n/**\r\n * Swap an array item to a different position. Returns a new array with the item swapped to the new position.\r\n */\nfunction arraySwap(array, from, to) {\n const newArray = array.slice();\n newArray[from] = array[to];\n newArray[to] = array[from];\n return newArray;\n}\n\nfunction getSortedRects(items, rects) {\n return items.reduce((accumulator, id, index) => {\n const rect = rects.get(id);\n\n if (rect) {\n accumulator[index] = rect;\n }\n\n return accumulator;\n }, Array(items.length));\n}\n\nfunction isValidIndex(index) {\n return index !== null && index >= 0;\n}\n\nfunction itemsEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction normalizeDisabled(disabled) {\n if (typeof disabled === 'boolean') {\n return {\n draggable: disabled,\n droppable: disabled\n };\n }\n\n return disabled;\n}\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n scaleX: 1,\n scaleY: 1\n};\nconst horizontalListSortingStrategy = _ref => {\n var _rects$activeIndex;\n\n let {\n rects,\n activeNodeRect: fallbackActiveRect,\n activeIndex,\n overIndex,\n index\n } = _ref;\n const activeNodeRect = (_rects$activeIndex = rects[activeIndex]) != null ? _rects$activeIndex : fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n const itemGap = getItemGap(rects, index, activeIndex);\n\n if (index === activeIndex) {\n const newIndexRect = rects[overIndex];\n\n if (!newIndexRect) {\n return null;\n }\n\n return {\n x: activeIndex < overIndex ? newIndexRect.left + newIndexRect.width - (activeNodeRect.left + activeNodeRect.width) : newIndexRect.left - activeNodeRect.left,\n y: 0,\n ...defaultScale\n };\n }\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: -activeNodeRect.width - itemGap,\n y: 0,\n ...defaultScale\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: activeNodeRect.width + itemGap,\n y: 0,\n ...defaultScale\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale\n };\n};\n\nfunction getItemGap(rects, index, activeIndex) {\n const currentRect = rects[index];\n const previousRect = rects[index - 1];\n const nextRect = rects[index + 1];\n\n if (!currentRect || !previousRect && !nextRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect ? currentRect.left - (previousRect.left + previousRect.width) : nextRect.left - (currentRect.left + currentRect.width);\n }\n\n return nextRect ? nextRect.left - (currentRect.left + currentRect.width) : currentRect.left - (previousRect.left + previousRect.width);\n}\n\nconst rectSortingStrategy = _ref => {\n let {\n rects,\n activeIndex,\n overIndex,\n index\n } = _ref;\n const newRects = arrayMove(rects, overIndex, activeIndex);\n const oldRect = rects[index];\n const newRect = newRects[index];\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height\n };\n};\n\nconst rectSwappingStrategy = _ref => {\n let {\n activeIndex,\n index,\n rects,\n overIndex\n } = _ref;\n let oldRect;\n let newRect;\n\n if (index === activeIndex) {\n oldRect = rects[index];\n newRect = rects[overIndex];\n }\n\n if (index === overIndex) {\n oldRect = rects[index];\n newRect = rects[activeIndex];\n }\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height\n };\n};\n\n// To-do: We should be calculating scale transformation\nconst defaultScale$1 = {\n scaleX: 1,\n scaleY: 1\n};\nconst verticalListSortingStrategy = _ref => {\n var _rects$activeIndex;\n\n let {\n activeIndex,\n activeNodeRect: fallbackActiveRect,\n index,\n rects,\n overIndex\n } = _ref;\n const activeNodeRect = (_rects$activeIndex = rects[activeIndex]) != null ? _rects$activeIndex : fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n if (index === activeIndex) {\n const overIndexRect = rects[overIndex];\n\n if (!overIndexRect) {\n return null;\n }\n\n return {\n x: 0,\n y: activeIndex < overIndex ? overIndexRect.top + overIndexRect.height - (activeNodeRect.top + activeNodeRect.height) : overIndexRect.top - activeNodeRect.top,\n ...defaultScale$1\n };\n }\n\n const itemGap = getItemGap$1(rects, index, activeIndex);\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: 0,\n y: -activeNodeRect.height - itemGap,\n ...defaultScale$1\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: 0,\n y: activeNodeRect.height + itemGap,\n ...defaultScale$1\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale$1\n };\n};\n\nfunction getItemGap$1(clientRects, index, activeIndex) {\n const currentRect = clientRects[index];\n const previousRect = clientRects[index - 1];\n const nextRect = clientRects[index + 1];\n\n if (!currentRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect ? currentRect.top - (previousRect.top + previousRect.height) : nextRect ? nextRect.top - (currentRect.top + currentRect.height) : 0;\n }\n\n return nextRect ? nextRect.top - (currentRect.top + currentRect.height) : previousRect ? currentRect.top - (previousRect.top + previousRect.height) : 0;\n}\n\nconst ID_PREFIX = 'Sortable';\nconst Context = /*#__PURE__*/React.createContext({\n activeIndex: -1,\n containerId: ID_PREFIX,\n disableTransforms: false,\n items: [],\n overIndex: -1,\n useDragOverlay: false,\n sortedRects: [],\n strategy: rectSortingStrategy,\n disabled: {\n draggable: false,\n droppable: false\n }\n});\nfunction SortableContext(_ref) {\n let {\n children,\n id,\n items: userDefinedItems,\n strategy = rectSortingStrategy,\n disabled: disabledProp = false\n } = _ref;\n const {\n active,\n dragOverlay,\n droppableRects,\n over,\n measureDroppableContainers,\n measuringScheduled\n } = useDndContext();\n const containerId = useUniqueId(ID_PREFIX, id);\n const useDragOverlay = Boolean(dragOverlay.rect !== null);\n const items = useMemo(() => userDefinedItems.map(item => typeof item === 'object' && 'id' in item ? item.id : item), [userDefinedItems]);\n const isDragging = active != null;\n const activeIndex = active ? items.indexOf(active.id) : -1;\n const overIndex = over ? items.indexOf(over.id) : -1;\n const previousItemsRef = useRef(items);\n const itemsHaveChanged = !itemsEqual(items, previousItemsRef.current);\n const disableTransforms = overIndex !== -1 && activeIndex === -1 || itemsHaveChanged;\n const disabled = normalizeDisabled(disabledProp);\n useIsomorphicLayoutEffect(() => {\n if (itemsHaveChanged && isDragging && !measuringScheduled) {\n measureDroppableContainers(items);\n }\n }, [itemsHaveChanged, items, isDragging, measureDroppableContainers, measuringScheduled]);\n useEffect(() => {\n previousItemsRef.current = items;\n }, [items]);\n const contextValue = useMemo(() => ({\n activeIndex,\n containerId,\n disabled,\n disableTransforms,\n items,\n overIndex,\n useDragOverlay,\n sortedRects: getSortedRects(items, droppableRects),\n strategy\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [activeIndex, containerId, disabled.draggable, disabled.droppable, disableTransforms, items, overIndex, droppableRects, useDragOverlay, strategy]);\n return React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nconst defaultNewIndexGetter = _ref => {\n let {\n id,\n items,\n activeIndex,\n overIndex\n } = _ref;\n return arrayMove(items, activeIndex, overIndex).indexOf(id);\n};\nconst defaultAnimateLayoutChanges = _ref2 => {\n let {\n containerId,\n isSorting,\n wasDragging,\n index,\n items,\n newIndex,\n previousItems,\n previousContainerId,\n transition\n } = _ref2;\n\n if (!transition || !wasDragging) {\n return false;\n }\n\n if (previousItems !== items && index === newIndex) {\n return false;\n }\n\n if (isSorting) {\n return true;\n }\n\n return newIndex !== index && containerId === previousContainerId;\n};\nconst defaultTransition = {\n duration: 200,\n easing: 'ease'\n};\nconst transitionProperty = 'transform';\nconst disabledTransition = /*#__PURE__*/CSS.Transition.toString({\n property: transitionProperty,\n duration: 0,\n easing: 'linear'\n});\nconst defaultAttributes = {\n roleDescription: 'sortable'\n};\n\n/*\r\n * When the index of an item changes while sorting,\r\n * we need to temporarily disable the transforms\r\n */\n\nfunction useDerivedTransform(_ref) {\n let {\n disabled,\n index,\n node,\n rect\n } = _ref;\n const [derivedTransform, setDerivedtransform] = useState(null);\n const previousIndex = useRef(index);\n useIsomorphicLayoutEffect(() => {\n if (!disabled && index !== previousIndex.current && node.current) {\n const initial = rect.current;\n\n if (initial) {\n const current = getClientRect(node.current, {\n ignoreTransform: true\n });\n const delta = {\n x: initial.left - current.left,\n y: initial.top - current.top,\n scaleX: initial.width / current.width,\n scaleY: initial.height / current.height\n };\n\n if (delta.x || delta.y) {\n setDerivedtransform(delta);\n }\n }\n }\n\n if (index !== previousIndex.current) {\n previousIndex.current = index;\n }\n }, [disabled, index, node, rect]);\n useEffect(() => {\n if (derivedTransform) {\n requestAnimationFrame(() => {\n setDerivedtransform(null);\n });\n }\n }, [derivedTransform]);\n return derivedTransform;\n}\n\nfunction useSortable(_ref) {\n let {\n animateLayoutChanges = defaultAnimateLayoutChanges,\n attributes: userDefinedAttributes,\n disabled: localDisabled,\n data: customData,\n getNewIndex = defaultNewIndexGetter,\n id,\n strategy: localStrategy,\n resizeObserverConfig,\n transition = defaultTransition\n } = _ref;\n const {\n items,\n containerId,\n activeIndex,\n disabled: globalDisabled,\n disableTransforms,\n sortedRects,\n overIndex,\n useDragOverlay,\n strategy: globalStrategy\n } = useContext(Context);\n const disabled = normalizeLocalDisabled(localDisabled, globalDisabled);\n const index = items.indexOf(id);\n const data = useMemo(() => ({\n sortable: {\n containerId,\n index,\n items\n },\n ...customData\n }), [containerId, customData, index, items]);\n const itemsAfterCurrentSortable = useMemo(() => items.slice(items.indexOf(id)), [items, id]);\n const {\n rect,\n node,\n isOver,\n setNodeRef: setDroppableNodeRef\n } = useDroppable({\n id,\n data,\n disabled: disabled.droppable,\n resizeObserverConfig: {\n updateMeasurementsFor: itemsAfterCurrentSortable,\n ...resizeObserverConfig\n }\n });\n const {\n active,\n activatorEvent,\n activeNodeRect,\n attributes,\n setNodeRef: setDraggableNodeRef,\n listeners,\n isDragging,\n over,\n setActivatorNodeRef,\n transform\n } = useDraggable({\n id,\n data,\n attributes: { ...defaultAttributes,\n ...userDefinedAttributes\n },\n disabled: disabled.draggable\n });\n const setNodeRef = useCombinedRefs(setDroppableNodeRef, setDraggableNodeRef);\n const isSorting = Boolean(active);\n const displaceItem = isSorting && !disableTransforms && isValidIndex(activeIndex) && isValidIndex(overIndex);\n const shouldDisplaceDragSource = !useDragOverlay && isDragging;\n const dragSourceDisplacement = shouldDisplaceDragSource && displaceItem ? transform : null;\n const strategy = localStrategy != null ? localStrategy : globalStrategy;\n const finalTransform = displaceItem ? dragSourceDisplacement != null ? dragSourceDisplacement : strategy({\n rects: sortedRects,\n activeNodeRect,\n activeIndex,\n overIndex,\n index\n }) : null;\n const newIndex = isValidIndex(activeIndex) && isValidIndex(overIndex) ? getNewIndex({\n id,\n items,\n activeIndex,\n overIndex\n }) : index;\n const activeId = active == null ? void 0 : active.id;\n const previous = useRef({\n activeId,\n items,\n newIndex,\n containerId\n });\n const itemsHaveChanged = items !== previous.current.items;\n const shouldAnimateLayoutChanges = animateLayoutChanges({\n active,\n containerId,\n isDragging,\n isSorting,\n id,\n index,\n items,\n newIndex: previous.current.newIndex,\n previousItems: previous.current.items,\n previousContainerId: previous.current.containerId,\n transition,\n wasDragging: previous.current.activeId != null\n });\n const derivedTransform = useDerivedTransform({\n disabled: !shouldAnimateLayoutChanges,\n index,\n node,\n rect\n });\n useEffect(() => {\n if (isSorting && previous.current.newIndex !== newIndex) {\n previous.current.newIndex = newIndex;\n }\n\n if (containerId !== previous.current.containerId) {\n previous.current.containerId = containerId;\n }\n\n if (items !== previous.current.items) {\n previous.current.items = items;\n }\n }, [isSorting, newIndex, containerId, items]);\n useEffect(() => {\n if (activeId === previous.current.activeId) {\n return;\n }\n\n if (activeId && !previous.current.activeId) {\n previous.current.activeId = activeId;\n return;\n }\n\n const timeoutId = setTimeout(() => {\n previous.current.activeId = activeId;\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [activeId]);\n return {\n active,\n activeIndex,\n attributes,\n data,\n rect,\n index,\n newIndex,\n items,\n isOver,\n isSorting,\n isDragging,\n listeners,\n node,\n overIndex,\n over,\n setNodeRef,\n setActivatorNodeRef,\n setDroppableNodeRef,\n setDraggableNodeRef,\n transform: derivedTransform != null ? derivedTransform : finalTransform,\n transition: getTransition()\n };\n\n function getTransition() {\n if ( // Temporarily disable transitions for a single frame to set up derived transforms\n derivedTransform || // Or to prevent items jumping to back to their \"new\" position when items change\n itemsHaveChanged && previous.current.newIndex === index) {\n return disabledTransition;\n }\n\n if (shouldDisplaceDragSource && !isKeyboardEvent(activatorEvent) || !transition) {\n return undefined;\n }\n\n if (isSorting || shouldAnimateLayoutChanges) {\n return CSS.Transition.toString({ ...transition,\n property: transitionProperty\n });\n }\n\n return undefined;\n }\n}\n\nfunction normalizeLocalDisabled(localDisabled, globalDisabled) {\n var _localDisabled$dragga, _localDisabled$droppa;\n\n if (typeof localDisabled === 'boolean') {\n return {\n draggable: localDisabled,\n // Backwards compatibility\n droppable: false\n };\n }\n\n return {\n draggable: (_localDisabled$dragga = localDisabled == null ? void 0 : localDisabled.draggable) != null ? _localDisabled$dragga : globalDisabled.draggable,\n droppable: (_localDisabled$droppa = localDisabled == null ? void 0 : localDisabled.droppable) != null ? _localDisabled$droppa : globalDisabled.droppable\n };\n}\n\nfunction hasSortableData(entry) {\n if (!entry) {\n return false;\n }\n\n const data = entry.data.current;\n\n if (data && 'sortable' in data && typeof data.sortable === 'object' && 'containerId' in data.sortable && 'items' in data.sortable && 'index' in data.sortable) {\n return true;\n }\n\n return false;\n}\n\nconst directions = [KeyboardCode.Down, KeyboardCode.Right, KeyboardCode.Up, KeyboardCode.Left];\nconst sortableKeyboardCoordinates = (event, _ref) => {\n let {\n context: {\n active,\n collisionRect,\n droppableRects,\n droppableContainers,\n over,\n scrollableAncestors\n }\n } = _ref;\n\n if (directions.includes(event.code)) {\n event.preventDefault();\n\n if (!active || !collisionRect) {\n return;\n }\n\n const filteredContainers = [];\n droppableContainers.getEnabled().forEach(entry => {\n if (!entry || entry != null && entry.disabled) {\n return;\n }\n\n const rect = droppableRects.get(entry.id);\n\n if (!rect) {\n return;\n }\n\n switch (event.code) {\n case KeyboardCode.Down:\n if (collisionRect.top < rect.top) {\n filteredContainers.push(entry);\n }\n\n break;\n\n case KeyboardCode.Up:\n if (collisionRect.top > rect.top) {\n filteredContainers.push(entry);\n }\n\n break;\n\n case KeyboardCode.Left:\n if (collisionRect.left > rect.left) {\n filteredContainers.push(entry);\n }\n\n break;\n\n case KeyboardCode.Right:\n if (collisionRect.left < rect.left) {\n filteredContainers.push(entry);\n }\n\n break;\n }\n });\n const collisions = closestCorners({\n active,\n collisionRect: collisionRect,\n droppableRects,\n droppableContainers: filteredContainers,\n pointerCoordinates: null\n });\n let closestId = getFirstCollision(collisions, 'id');\n\n if (closestId === (over == null ? void 0 : over.id) && collisions.length > 1) {\n closestId = collisions[1].id;\n }\n\n if (closestId != null) {\n const activeDroppable = droppableContainers.get(active.id);\n const newDroppable = droppableContainers.get(closestId);\n const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;\n const newNode = newDroppable == null ? void 0 : newDroppable.node.current;\n\n if (newNode && newRect && activeDroppable && newDroppable) {\n const newScrollAncestors = getScrollableAncestors(newNode);\n const hasDifferentScrollAncestors = newScrollAncestors.some((element, index) => scrollableAncestors[index] !== element);\n const hasSameContainer = isSameContainer(activeDroppable, newDroppable);\n const isAfterActive = isAfter(activeDroppable, newDroppable);\n const offset = hasDifferentScrollAncestors || !hasSameContainer ? {\n x: 0,\n y: 0\n } : {\n x: isAfterActive ? collisionRect.width - newRect.width : 0,\n y: isAfterActive ? collisionRect.height - newRect.height : 0\n };\n const rectCoordinates = {\n x: newRect.left,\n y: newRect.top\n };\n const newCoordinates = offset.x && offset.y ? rectCoordinates : subtract(rectCoordinates, offset);\n return newCoordinates;\n }\n }\n }\n\n return undefined;\n};\n\nfunction isSameContainer(a, b) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n return a.data.current.sortable.containerId === b.data.current.sortable.containerId;\n}\n\nfunction isAfter(a, b) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n if (!isSameContainer(a, b)) {\n return false;\n }\n\n return a.data.current.sortable.index < b.data.current.sortable.index;\n}\n\nexport { SortableContext, arrayMove, arraySwap, defaultAnimateLayoutChanges, defaultNewIndexGetter, hasSortableData, horizontalListSortingStrategy, rectSortingStrategy, rectSwappingStrategy, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy };\n//# sourceMappingURL=sortable.esm.js.map\n","import React from 'react';\nimport {\n closestCenter,\n DndContext,\n DragEndEvent,\n DragOverlay,\n DragStartEvent,\n DropAnimation,\n KeyboardSensor,\n Modifiers,\n PointerSensor,\n useSensor,\n useSensors } from '@dnd-kit/core';\nimport {\n restrictToVerticalAxis\n} from '@dnd-kit/modifiers';\nimport {\n rectSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n SortingStrategy,\n verticalListSortingStrategy } from '@dnd-kit/sortable';\n\ninterface SortableContainerWrapperProps {\n ids: string[];\n getDragOverlay: (id: string) => JSX.Element;\n onSortEnd: (event: DragEndEvent) => void;\n onSortStart?: (event: DragStartEvent) => void;\n dropAnimation?: DropAnimation;\n disabled?: boolean;\n vertical?: boolean;\n}\n\nSortableContainerWrapper.defaultProps = {\n dropAnimation: { duration: 250, easing: 'ease' },\n vertical: true\n};\n\nexport function SortableContainerWrapper(\n props: React.PropsWithChildren<SortableContainerWrapperProps>\n): JSX.Element {\n const [ activeId, setActiveId ] = React.useState(null);\n\n function onSortStart(event: DragStartEvent): void {\n setActiveId(event.active.id);\n props.onSortStart?.(event);\n }\n\n function onSortEnd(event: DragEndEvent): void {\n setActiveId(null);\n props.onSortEnd(event);\n }\n\n function getModifiers(): Modifiers {\n if (!props.vertical)\n return [];\n\n return [restrictToVerticalAxis];\n }\n\n function getSortingStrategy(): SortingStrategy {\n if (props.vertical)\n return verticalListSortingStrategy;\n\n return rectSortingStrategy;\n }\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 10\n }\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n \n if (props.disabled)\n return <>{props.children}</>;\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={onSortStart}\n onDragEnd={onSortEnd}\n modifiers={getModifiers()}\n >\n <SortableContext\n items={props.ids}\n strategy={getSortingStrategy()}\n >\n {props.children}\n </SortableContext>\n\n <DragOverlay dropAnimation={props.dropAnimation}>\n {activeId ? props.getDragOverlay(activeId) : null}\n </DragOverlay>\n </DndContext>\n );\n}","import React from 'react';\nimport { DraggableAttributes } from '@dnd-kit/core';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\ntype DragDirection = 'up' | 'down';\n\nexport type PropsWithSortableItemProps<T> = T & {\n dragAttributes?: DraggableAttributes;\n dragListeners?: HashObject;\n dragDirection?: DragDirection;\n};\n\ninterface SortableItemWrapperProps<TProps> {\n id: string;\n childProps: TProps;\n childComponent: (props: PropsWithSortableItemProps<TProps>) => JSX.Element;\n}\n\nfunction getDragDirection(index: number, activeIndex: number, overIndex: number): DragDirection {\n if (activeIndex !== index)\n return null;\n\n if (overIndex > activeIndex)\n return 'down';\n\n if (overIndex < activeIndex)\n return 'up';\n\n return null;\n}\n\nexport function SortableItemWrapper<TProps>(props: SortableItemWrapperProps<TProps>): JSX.Element {\n const {\n setNodeRef,\n transform,\n transition,\n isSorting,\n listeners,\n attributes,\n activeIndex,\n overIndex,\n index\n } = useSortable({ id: props.id });\n\n const style: HashObject = {\n transform: CSS.Transform.toString(transform),\n transition,\n touchAction: 'none',\n position: 'relative'\n };\n\n if (isSorting && index === activeIndex) {\n style.visibility = 'hidden';\n }\n\n const Children = props.childComponent;\n const dragDirection = getDragDirection(index, activeIndex, overIndex);\n\n return (\n <Children\n {...props.childProps}\n ref={setNodeRef}\n style={style}\n dragListeners={listeners}\n dragAttributes={attributes}\n dragDirection={dragDirection}\n />\n );\n}","import React from 'react';\n\nexport function HeartOutlineSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M11.67 19.376a.5.5 0 0 0 .66 0c.732-.64 1.435-1.239 2.1-1.805 1.453-1.235 2.722-2.314 3.703-3.335 1.443-1.504 2.367-2.984 2.367-4.812 0-2.588-1.83-4.866-4.517-4.866-1.736 0-2.865 1.008-3.535 1.954a7 7 0 0 0-.448.733 7 7 0 0 0-.448-.733c-.67-.946-1.8-1.954-3.535-1.954C5.33 4.558 3.5 6.836 3.5 9.424c0 1.828.924 3.308 2.367 4.812.98 1.02 2.25 2.1 3.703 3.335.665.566 1.368 1.165 2.1 1.805m.812-10.7.001-.004.007-.022.03-.097a5.83 5.83 0 0 1 .744-1.463c.565-.798 1.428-1.532 2.72-1.532 2.03 0 3.516 1.72 3.516 3.866 0 1.445-.713 2.686-2.089 4.119-.944.984-2.151 2.01-3.579 3.224-.575.49-1.187 1.01-1.832 1.57-.645-.56-1.257-1.08-1.832-1.57-1.428-1.214-2.635-2.24-3.58-3.224C5.214 12.11 4.5 10.869 4.5 9.423c0-2.146 1.487-3.865 3.517-3.865 1.29 0 2.154.734 2.719 1.532a5.8 5.8 0 0 1 .774 1.56l.007.022v.004a.5.5 0 0 0 .965 0'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function HeartSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillOpacity={0.9}\n d='M11.67 19.376a.5.5 0 0 0 .66 0c.732-.64 1.435-1.239 2.1-1.805 1.453-1.235 2.722-2.314 3.703-3.335 1.443-1.504 2.367-2.984 2.367-4.812 0-2.588-1.83-4.866-4.517-4.866-1.736 0-2.865 1.008-3.535 1.954a7 7 0 0 0-.448.733 7 7 0 0 0-.448-.733c-.67-.946-1.8-1.954-3.535-1.954C5.33 4.558 3.5 6.836 3.5 9.424c0 1.828.924 3.308 2.367 4.812.98 1.02 2.25 2.1 3.703 3.335.665.566 1.368 1.165 2.1 1.805'\n />\n </svg>\n );\n}\n","import { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CurrentUser, User, Video, VideoTypes } from 'libs/shared/interfaces';\n\nimport { VideoHelper } from './VideoHelper';\n\nexport const FavouriteHelper = {\n\n /**\n * This helper is based on a *critical* assumption that the with statement\n * retrieving the favouritedBy collection uses a filter for the current user's id.\n * \n * The reason we're not passing the current user as an arg is that we would need to \n * drill the user object all the way down to low level componenets.\n * \n * @param object \n */\n isFavouritedByCurrentUser(object: HashObject): boolean {\n return !!(object?.favouritedBy?.data.length === 1);\n },\n\n /**\n * Determine whether the user has favourited the object\n * \n * @param object \n */\n isFavouritedByUser(object: HashObject, user: User): boolean {\n return !!(ArrayHelper.findWhere(object?.favouritedBy?.data, { id: user?.id }));\n },\n\n updateVideoState(video: VideoTypes, user: CurrentUser | User, shouldFavourite: boolean): VideoTypes {\n return {\n id: video.id,\n favouritedBy: {\n data: shouldFavourite ? [{ id: user.id } as User] : [],\n pagination: { limit: 25, cursors: { next: '', previous: '' } }\n }\n };\n },\n\n showFavouriteButton(video: Video, isHovering: boolean): boolean {\n if (!VideoHelper.getCanBeConsumed(video)?.canConsume)\n return false;\n\n if (isHovering)\n return true;\n\n if (UserAgentHelper.isTabletOrMobile())\n return true;\n\n if (FavouriteHelper.isFavouritedByCurrentUser(video))\n return true;\n\n return false;\n }\n};\n","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { HeartOutlineSvg } from 'libs/shared/images/svg/objects/HeartOutlineSvg';\nimport { HeartSvg } from 'libs/shared/images/svg/objects/HeartSvg';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './favourite-button.module.scss';\n\nconst namespace = 'shared.favouriteButton';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FavouriteButtonProps {\n video: VideoTypes;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n className?: string;\n analyticsData?: HashObject,\n analyticsOptions?: AnalyticsOptions\n preventFocus?: boolean;\n}\n\nexport function FavouriteButton(props: FavouriteButtonProps): JSX.Element {\n const alerts = useAlerts();\n\n const initialState = FavouriteHelper.isFavouritedByCurrentUser(props.video);\n\n // Use local state so that changes are reflected immediately.\n const [ isFavourite, setIsFavourite ] = React.useState(initialState);\n\n React.useEffect(() => {\n setIsFavourite(initialState);\n }, [initialState]);\n\n const flexClasses = 'd-flex align-items-center justify-content-center';\n let className = `${flexClasses} cursor-pointer ${styles.favouriteButton} ${isFavourite ? styles.favourited : ''}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n function onClick(): void {\n const shouldFavourite = !isFavourite;\n\n function onError(): void {\n function getErrorPhraseKey(): string {\n if (VideoHelper.isClip(props.video))\n return shouldFavourite ? 'favouriteClipError' : 'unfavouriteClipError';\n\n if (VideoHelper.isInteractive(props.video))\n return shouldFavourite ? 'favouriteInteractiveError' : 'unfavouriteInteractiveError';\n\n return shouldFavourite ? 'favouriteVideoError' : 'unfavouriteVideoError';\n }\n\n alerts.error(getPhrase(getErrorPhraseKey()));\n setIsFavourite(!shouldFavourite);\n }\n\n setIsFavourite(shouldFavourite);\n props.setFavourite(props.video, shouldFavourite, null, onError, props.analyticsData, props.analyticsOptions);\n }\n\n if (!FunctionHelper.isFunction(props.setFavourite) || !FunctionHelper.isFunction(props.canFavourite))\n return <></>;\n\n // Don't render until we know the state of isFavourite\n if (!props.canFavourite(props.video))\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick} tabIndex={props.preventFocus ? -1 : undefined}>\n {/* We have the two svgs because they get swapped out on hover by the styles */}\n <SvgContainer\n svg={HeartSvg}\n className={`svg-container ${styles.heart}`}\n />\n <SvgContainer\n svg={HeartOutlineSvg}\n className={`svg-container ${styles.heartOutline}`}\n />\n </DivButton>\n );\n}","import * as React from 'react';\n\nimport { Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoWatchProgressBarProps {\n video: Video;\n}\n\nexport function VideoWatchProgressBar(props: VideoWatchProgressBarProps): JSX.Element {\n const progress = VideoHelper.getVideoProgress(props.video);\n\n const watchPercentage = progress && props.video.duration\n && progress / props.video.duration * 100000;\n\n if (!watchPercentage)\n return <></>;\n\n return <div className='bg-primary h-100' style={{ width: `${watchPercentage}%` }} />;\n}","import React from 'react';\n\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { VideoWatchProgressBar } from './videos/VideoWatchProgressBar';\n\nimport styles from './video-thumbnail-bottom-bar.module.scss';\n\ninterface VideoThumbnailBottomBarProps {\n video: VideoTypes;\n}\n\nexport function VideoThumbnailBottomBar(props: VideoThumbnailBottomBarProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video)) {\n return <></>;\n }\n\n return (\n <div className={styles.bottomBar}>\n <VideoWatchProgressBar video={props.video} />\n </div>\n );\n}","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { ClickViewPlayLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './lite-owner-avatar.module.scss';\n\ninterface LiteOwnerAvatarProps {\n video: VideoTypes;\n imageCdnUrl: string;\n size?: VideoItemSize;\n}\n\nexport function LiteOwnerAvatar(props: LiteOwnerAvatarProps): JSX.Element {\n if (!VideoHelper.isInteractive(props.video) && !VideoHelper.isClip(props.video))\n return <></>;\n\n if (!props.video._liteOwner && !props.video._isClickViewCurated?.value)\n return <></>;\n\n if (props.video._isClickViewCurated?.value) {\n return (\n <div className={`${props.size === 'sm' ? styles.sm : styles.std} me-1 rounded-circle position-relative bg-white`}>\n <SvgContainer2 className={`me-1 ${props.size === 'sm' ? styles.smIcon : styles.stdIcon}`}>\n <ClickViewPlayLogo />\n </SvgContainer2>\n </div>\n );\n }\n\n return (\n <div className={`${props.size === 'sm' ? styles.sm : styles.std} me-1`}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.video._liteOwner.name, props.video._liteOwner.surname)}\n imageUrl={props.video._liteOwner.avatar?.url}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './plugin-hover.module.scss';\n\nconst namespace = 'shared.pluginHover';\n\ninterface PluginHoverProps {\n isPlugin: boolean;\n isPluginPopup: boolean;\n className?: string;\n onClick?: () => void;\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function PluginHover(props: PluginHoverProps): JSX.Element {\n if (!props.isPlugin || props.isPluginPopup)\n return <></>;\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n onClick={props.onClick}\n className={`\n position-absolute top-0 start-0 end-0 bottom-0 opacity-0 cursor-pointer\n ${styles.pluginHover}\n ${props.className ? props.className : ''}\n `}\n >\n <span className='position-absolute top-50 start-50 translate-middle text-nowrap h4 text-white'>\n <Text namespace={namespace} phrase='embed' />\n </span>\n </AppLink>\n );\n}","import React from 'react';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { LockSvg } from 'libs/shared/images/svg/status/LockSvg';\n\nimport styles from './thumbnail-padlock.module.scss';\n\ninterface ThumbnailPadlockProps {\n size?: VideoItemSize;\n}\n\nexport function ThumbnailPadlock(props: ThumbnailPadlockProps): JSX.Element {\n const svgSize = props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard;\n\n return (\n <div className={`${styles.padlock} ${props.size === 'sm' ? styles.sm : ''} bg-white cursor-default d-flex align-items-center justify-content-center`}>\n <SvgContainer svg={LockSvg} size={svgSize} />\n </div>\n );\n}","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Tooltip } from '../../tooltip/Tooltip';\n\nimport styles from './thumbnail-company-logo.module.scss';\n\ninterface ThumbnailCompanyLogoProps {\n companyLogoFallbackUrl: string;\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nThumbnailCompanyLogo.defaultProps = {\n size: 'md'\n};\n\nexport function ThumbnailCompanyLogo(props: ThumbnailCompanyLogoProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video) || !props.companyLogoFallbackUrl)\n return <></>;\n\n const company = props.video.productionCompanies?.data?.[0];\n const url = ImageHelper.createUrl(company?.logo?.url ?? props.companyLogoFallbackUrl, { size: ImageSize.Small });\n const logoFallbackBgClassName = getBgColorClass(company.name, BG_COLOUR_CLASS_NAMES);\n \n if (!url)\n return <></>;\n\n return (\n <div>\n <Tooltip\n title={company?.name}\n spanHack\n >\n <div\n className={`${styles.logo} ${props.size === 'sm' ? styles.sm : ''} ${!company?.metadata?.colour && logoFallbackBgClassName}`}\n style={{\n backgroundImage: `url(${url})`,\n backgroundColor: company?.metadata?.colour\n }}\n />\n </Tooltip>\n </div>\n );\n}","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces/VideoTypes';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { TypeBadge } from '../type-badge/TypeBadge';\n\ninterface VideoTypeBadgeProps {\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nVideoTypeBadge.default = {\n size: 'md'\n};\n\nexport function VideoTypeBadge(props: VideoTypeBadgeProps): JSX.Element {\n if (VideoHelper.isClip(props.video))\n return <TypeBadge typeId={MasterType.Clip} size={props.size} inContainer />;\n\n if (VideoHelper.isInteractive(props.video))\n return (\n <TypeBadge\n typeId={MasterType.Interactive}\n status={props.video.status}\n size={props.size}\n inContainer\n />\n );\n\n return <></>;\n}","import React from 'react';\nimport { OutPortal } from 'react-reverse-portal';\n\nimport { PlayerInitializationData } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\n\nimport styles from './global-player-consumer.module.scss';\n\ninterface GlobalPlayerConsumerOptions extends PlayerInitializationData {\n location?: 'popout-video' | 'play-page';\n}\n\nexport function GlobalPlayerConsumer(props: GlobalPlayerConsumerOptions): JSX.Element {\n const playerContext = usePlayerContext();\n\n playerContext.useInitialize?.(props);\n\n if (!playerContext.hasProvider)\n return <></>;\n\n if (playerContext.mode === 'picture-in-picture')\n return <></>;\n\n if (props.mode === 'hover' && playerContext.isOnPlayPage)\n return <></>;\n \n if (props.location === 'play-page') {\n // we don't want to add theatreModeOn style for interactive preview\n const theatreMode = playerContext.mode === 'theatre' && props.objectTypeId !== MasterType.Interactive;\n return (\n <div className={theatreMode ? `w-100 h-100 ${styles.theatreModeOn}` : ''}>\n <OutPortal node={playerContext.portalNode} />\n </div>\n );\n }\n\n /**\n * When hovering, we don't want to show the player until the video has started playing.\n */\n const shouldShow = playerContext.started;\n\n let rounding = 'rounded-3';\n if (props.location === 'popout-video')\n rounding = 'rounded-top-3';\n\n const className = `${styles.hoverContainer} ${shouldShow ? styles.hovering : ''} ${rounding} overflow-hidden`;\n\n return (\n <div className={className}>\n <OutPortal node={playerContext.portalNode} />\n </div>\n );\n}","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { LiteOwnerAvatar } from 'libs/shared/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { ExpandableVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { PlayCircleSvg } from 'libs/shared/images/svg/actions/PlayCircleSvg';\nimport { CloseCaptionBadgeSvg } from 'libs/shared/images/svg/status/CloseCaptionBadgeSvg';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './expandable-video-thumbnail.module.scss';\n\nfunction getTitleClass(hovering: boolean): string {\n let className = 'mb-1';\n\n if (hovering) {\n className += styles.downScale;\n }\n \n return className;\n}\n\nexport function ExpandableVideoThumbnail(props: ExpandableVideoThumbnailProps): JSX.Element {\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n const appLinkParams = ObjectHelper.isObject(props.appLink?.params) ? props.appLink?.params as HashObject : {};\n\n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(props.video)\n };\n\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, props.hovering);\n const isVideo = VideoHelper.isVideo(props.video);\n\n const rating = VideoHelper.getRating(props.video);\n\n const [ thumbnailHoverRef, isThumbnailHovering ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n\n const showThumbnailPreviewVideo = isThumbnailHovering && canConsume && props.hoverToPlay;\n\n const analyticsData = {\n ...props.analyticsData,\n id: props.video.id,\n name: props.video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <div className='position-relative rounded-3 overflow-hidden' ref={thumbnailHoverRef}>\n <PluginHover\n isPlugin={props.commonVideoProps.isPlugin}\n isPluginPopup={props.commonVideoProps.isPluginPopup}\n className='rounded-3'\n appLink={canNavigate ? props.appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n\n {showFavouriteButton &&\n <div className={styles.topRightContainer}>\n <FavouriteButton\n setFavourite={props.commonVideoProps.setFavourite}\n canFavourite={props.commonVideoProps.canFavourite}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n />\n </div>\n }\n {/* top right */}\n {!canNavigate && (\n <div className={styles.topRightContainer}>\n <ThumbnailPadlock />\n </div>\n )}\n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {props.showOwner && <LiteOwnerAvatar video={props.video} imageCdnUrl={props.commonVideoProps.imageCdnUrl} />}\n\n <VideoTypeBadge video={props.video} />\n\n <ThumbnailCompanyLogo\n video={props.video}\n companyLogoFallbackUrl={props.commonVideoProps.companyLogoFallbackUrl}\n />\n </div>\n\n <BaseImage\n data={VideoHelper.getThumbnail(props.video)}\n appLink={canNavigate ? props.appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={props.imageOptions}\n preload={props.preload}\n className={styles.gradient}\n alt={('series' in props.video && props.video.series?.name ? `${props.video.series.name}: ` : '') + props.video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {!!(props.hovering && canNavigate) && (\n <SvgContainer className={styles.playIcon} svg={PlayCircleSvg} />\n )}\n\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n <div className={styles.overlay}>\n <div className={`${getTitleClass(props.hovering)} ${styles.title}`}>\n {isVideo && (\n <VideoSubText\n type={props.commonVideoProps.subTextType}\n className='text-shadow clamp-1'\n video={props.video}\n appLink={null}\n analyticsOptions={null}\n />\n )}\n\n <span className='h6 text-reset text-shadow clamp-1'>\n {VideoHelper.getTitle(props.video)}\n </span>\n </div>\n\n <VideoThumbnailBottomBar video={props.video} />\n\n {props.hovering && (\n <BadgeListContainer className='mt-1'>\n {VideoHelper.isVideo(props.video) && (\n <>\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n {props.video.hasSubtitle && (\n <span className='badge p-0'>\n <SvgContainer svg={CloseCaptionBadgeSvg} />\n </span>\n )}\n <Badge\n type={BadgeType.Interactive}\n data={props.video.hasInteractives}\n />\n <Badge\n type={BadgeType.DurationExact}\n data={VideoHelper.getDuration(props.video)}\n />\n </>\n )}\n </BadgeListContainer>\n )}\n </div>\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n </div>\n </Tooltip>\n );\n}","import React from 'react';\n\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Audience, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './video-thumbnail-badges.module.scss';\n\ninterface VideoThumbnailBadgesProps {\n video?: Video;\n audience?: Audience;\n hideRating?: boolean;\n hideDuration?: boolean;\n newDurationStyle?: boolean;\n size?: VideoItemSize;\n duration?: number;\n}\n\nVideoThumbnailBadges.defaultProps = {\n newDurationStyle: true,\n size: 'md'\n};\n\nexport function VideoThumbnailBadges(props: VideoThumbnailBadgesProps): JSX.Element {\n const rating = VideoHelper.getRating(props.video);\n\n const showAudience = !!props.audience && props.size !== 'sm';\n const showRating = !showAudience && !props.hideRating && !!rating && props.size !== 'sm';\n\n if (props.hideDuration && !showAudience && !showRating)\n return <></>;\n\n return (\n <BadgeListContainer className={`${styles.badgeContainer} ${props.size === 'sm' ? styles.sm : ''}`}>\n {showAudience && (\n <AudienceLabel\n audience={props.audience}\n className='bg-white text-dark'\n border='dark'\n />\n )}\n {showRating && (\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n )}\n {!props.hideDuration && (\n <Badge\n type={props.newDurationStyle ? BadgeType.DurationApproximate : BadgeType.DurationExact}\n data={props.duration || VideoHelper.getDuration(props.video)}\n />\n )}\n </BadgeListContainer>\n );\n}","import React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { LockSvg } from 'libs/shared/images/svg/status/LockSvg';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface RestrictionPadlockProps {\n tooltip?: string;\n className?: string;\n tooltipPlacement?: Placement\n size?: VideoItemSize;\n video: VideoTypes;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionPadlock(props: RestrictionPadlockProps): JSX.Element {\n if (!props.yearGroups)\n return <></>;\n\n const title = RestrictionHelper.mapRestrictionToText(props.video._restrictions, props.yearGroups);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canConsume || !title)\n return <></>;\n\n return (\n <Tooltip\n spanHack\n spanHackClassName={props.className || 'd-inline-block ps-1'}\n title={title}\n placement={props.tooltipPlacement || 'top'}\n >\n <SvgContainer\n svg={LockSvg}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n />\n </Tooltip>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { Video, YearGroup } from 'libs/shared/interfaces';\n\nimport styles from './video-title.module.scss';\n\nconst namespace = 'shared.videoTitle';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst TODAY = new Date();\n\nexport type VideoTitleSizes = 'h4' | 'h5' | 'h6';\n\ninterface VideoTitleProps {\n video: Video;\n yearGroups?: YearGroup[];\n showNewVideoIndicator?: boolean;\n title?: string;\n showPadlock: boolean;\n\n lockSize?: 'sm' | 'md';\n titleSize?: VideoTitleSizes;\n className?: string;\n}\n\nfunction isDateInCurrentMonth(target: string) {\n return DateHelper.isSame(target, TODAY, 'year') && DateHelper.isSame(target, TODAY, 'month');\n}\n\nVideoTitle.defaultProps = {\n titleSize: 'h6',\n className: ''\n};\n\nexport function VideoTitle(props: VideoTitleProps): JSX.Element {\n const dateRelease = props.video.dateReleased;\n const isCurrentMonth = dateRelease && isDateInCurrentMonth(dateRelease);\n\n const shouldShowNewVideoIndicator = props.showNewVideoIndicator\n && isCurrentMonth\n && props.video._isClickViewCurated?.value;\n\n return (\n <>\n <Tooltip\n title={`${shouldShowNewVideoIndicator ? getPhrase('newVideo') : ''}`}\n spanHack\n spanHackClassName='d-inline-block'\n >\n {shouldShowNewVideoIndicator && (\n <span className={`rounded-circle bg-green d-inline-block me-1 ${styles.dot} ${props.titleSize === 'h6' ? styles.smallText : ''}`} />\n )}\n </Tooltip>\n\n <h2 className={`${props.titleSize} ${styles.title} ${props.className} d-inline`}>\n {props.title || props.video.name}\n </h2>\n\n {props.showPadlock && (\n <RestrictionPadlock\n video={props.video}\n yearGroups={props.yearGroups}\n size={props.lockSize}\n />\n )}\n </>\n );\n}\n\n","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PopoutVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTitle } from 'libs/shared/components/video-title/VideoTitle';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './thumbnail-text.module.scss';\n\ntype VideoThumbnailTextProps = Pick<PopoutVideoThumbnailProps, 'video'|'appLink'|'commonVideoProps'>\n\nexport function ThumbnailText(props: VideoThumbnailTextProps): JSX.Element {\n const { video, appLink } = props;\n const { canNavigate } = VideoHelper.getCanBeConsumed(video);\n\n return (\n <div className={`mt-2 ${styles.container}`}>\n <div className={`d-flex flex-column ${styles.titleContainer}`}>\n {VideoHelper.isVideo(video) && (\n <VideoSubText\n type={props.commonVideoProps.subTextType}\n className='text-truncate'\n video={video}\n appLink={props.commonVideoProps.getSubTextAppLink?.(props.video)}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n )}\n <AppLink className='text-reset clamp-2 align-middle' appLink={canNavigate ? appLink : null}>\n <VideoTitle\n video={props.video}\n yearGroups={props.commonVideoProps.yearGroups}\n lockSize='sm'\n showNewVideoIndicator={props.commonVideoProps.showNewVideoIndicator}\n showPadlock={!props.commonVideoProps.hasStudentExperience && !props.commonVideoProps.hasGuestExperience}\n />\n </AppLink>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { AppLink } from '../../app-link/AppLink';\n\nimport styles from './video-guidance-tag.module.scss';\n\ninterface VideoGuidanceTagProps {\n text: string;\n svg: SvgIcon;\n iconVariant: string;\n active?: boolean;\n appLink?: Core.AppLink;\n appLinkAnalyticsData?: HashObject;\n appLinkAnalyticsOptions?: AnalyticsOptions;\n theme?: {\n tabLabel?: string;\n container?: string;\n }\n}\n\nfunction ContainerWrapper(props: VideoGuidanceTagProps): JSX.Element {\n if (props.appLink) {\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.appLinkAnalyticsData}\n analyticsOptions={props.appLinkAnalyticsOptions}\n className={`\n p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer\n text-decoration-none ${props.theme?.container} ${styles.tag} ${props.active ? styles.active : ''}\n `}\n >\n <VideoGuidanceTag {...props} />\n </AppLink>\n );\n }\n\n return (\n <div\n className={`p-1 pe-2 rounded-pill d-inline-flex align-items-center ${props.theme?.container} ${styles.tag} ${styles.disabled}`}\n >\n <VideoGuidanceTag {...props} />\n </div>\n );\n}\n\nfunction VideoGuidanceTag(props: VideoGuidanceTagProps): JSX.Element {\n return (\n <>\n <SvgContainer\n className={`${styles.icon} rounded-circle bg-${props.iconVariant} text-white`}\n svg={props.svg}\n />\n\n <span className={`ps-1 text-nowrap user-select-none ${props.theme?.tabLabel}`}>\n {props.text}\n </span>\n </>\n );\n}\n\nexport { ContainerWrapper as VideoGuidanceTag };","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { GraduationCapSvg } from 'libs/shared/images/svg/objects/GraduationCapSvg';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.classroomGuideTag';\n\ninterface ClassroomGuideTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ClassroomGuideTag(props: ClassroomGuideTagProps): JSX.Element {\n if (!props.video || VideoHelper.isInteractive(props.video) || VideoHelper.isClip(props.video))\n return <></>;\n\n if (!props.video._hasCurriculumLinks?.value)\n return <></>;\n\n return (\n <VideoGuidanceTag\n theme={{\n container: 'classroom-guide-tag',\n tabLabel: 'classroom-guide-tag-label'\n }}\n svg={GraduationCapSvg}\n iconVariant='navy'\n text={LanguageService.getPhrase(namespace, 'curriculum')}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'curriculum',\n ...VideoHelper.getAnalyticsData(props.video),\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { InteractiveSvg } from 'libs/shared/images/svg/objects/InteractiveSvg';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.interactivesTag';\n\ninterface InteractivesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function InteractivesTag(props: InteractivesTagProps): JSX.Element {\n if (!VideoHelper.showInteractivesGuidance(props.video))\n return <></>;\n \n const interactiveCount = !VideoHelper.isInteractive(props.video) && (props.video.interactives?.data.length || 0);\n\n return (\n <VideoGuidanceTag\n svg={InteractiveSvg}\n iconVariant='green'\n text={LanguageService.getPhrase(namespace, 'interactives', { smartCount: interactiveCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'interactive',\n videoGuidanceTotalItems: interactiveCount,\n ...VideoHelper.getAnalyticsData(props.video),\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { ResourcesSvg } from 'libs/shared/images/svg/objects/ResourcesSvg';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.resourcesTag';\n\nfunction getResourceCount(video: VideoTypes): number {\n if (VideoHelper.isInteractive(video))\n return 0;\n\n return (\n (video.resources?.data.length || 0) +\n (video.links?.data.length || 0)\n );\n}\n\ninterface ResourcesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ResourcesTag(props: ResourcesTagProps): JSX.Element {\n if (!VideoHelper.showResourcesGuidance(props.video))\n return <></>;\n\n const resourceCount = getResourceCount(props.video);\n\n return (\n <VideoGuidanceTag\n svg={ResourcesSvg}\n iconVariant='indigo'\n text={LanguageService.getPhrase(namespace, 'resources', { smartCount: resourceCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'resource',\n videoGuidanceTotalItems: resourceCount,\n ...VideoHelper.getAnalyticsData(props.video),\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { ClassroomGuideTag } from 'libs/shared/components/video-guidance/classroom-guide/ClassroomGuideTag';\nimport { InteractivesTag } from 'libs/shared/components/video-guidance/interactives/InteractivesTag';\nimport { ResourcesTag } from 'libs/shared/components/video-guidance/resources/ResourcesTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemGuidanceProps {\n video: VideoTypes;\n getVideoAppLink?: (video: VideoTypes, opts: GetVideoAppLinkOptions) => Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n containerClassName: string;\n responsiveClassName?: string;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function VideoItemGuidance(props: VideoItemGuidanceProps): JSX.Element {\n const showingResourcesAndInteractives = (\n VideoHelper.showInteractivesGuidance(props.video) &&\n VideoHelper.showResourcesGuidance(props.video)\n );\n\n return (\n <div className={`${props.containerClassName} ${showingResourcesAndInteractives ? props.responsiveClassName : ''}`}>\n <ClassroomGuideTag\n appLink={props.commonVideoProps.getClassroomGuideAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n <ResourcesTag\n appLink={props.commonVideoProps.getResourceGuidanceAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n <InteractivesTag\n appLink={props.commonVideoProps.getInteractiveGuidanceAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\n\nimport { DivButton } from '../../div-button/DivButton';\nimport { SvgContainer } from '../../svg-container/SvgContainer';\nimport { Tooltip } from '../../tooltip/Tooltip';\n\nimport styles from './remove-video-button.module.scss';\n\nconst namespace = 'shared.removeVideoButton';\n\ninterface RemoveVideoButtonProps {\n onClickRemove: (e: React.MouseEvent<HTMLButtonElement>) => void;\n removeButtonTooltip?: string;\n preventFocus?: boolean;\n}\n\nexport function RemoveVideoButton(props: RemoveVideoButtonProps): JSX.Element {\n const tooltip = props.removeButtonTooltip || LanguageService.getPhrase(namespace, 'removeFromRow');\n\n return (\n <div className='me-2'>\n <Tooltip title={tooltip} spanHack>\n <DivButton\n onClick={props.onClickRemove}\n className={`d-flex align-items-center justify-content-center ${styles.button}`}\n tabIndex={props.preventFocus ? -1 : undefined}\n >\n <SvgContainer\n svg={CloseSvg}\n className={`svg-container ${styles.heart}`}\n />\n </DivButton>\n </Tooltip>\n </div>\n );\n}","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { HoverableProps, HoverToPortalContainer } from 'libs/shared/components/hover-to-portal-container/HoverToPortalContainer';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { LiteOwnerAvatar } from 'libs/shared/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailText } from 'libs/shared/components/thumbnails/thumbnail-text/ThumbnailText';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoItemGuidance } from 'libs/shared/components/video-list/components/video-guidance/VideoItemGuidance';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { RemoveVideoButton } from '../../remove-button/RemoveVideoButton';\nimport { ThumbnailCompanyLogo } from '../../thumbnail-company/ThumbnailCompanyLogo';\nimport { PopoutVideoThumbnailProps } from '../VideoThumbnail';\n\nimport styles from './popout-video-thumbnail.module.scss';\n\ntype PopoutVideoProps = HoverableProps & PopoutVideoThumbnailProps;\n\nconst PopoutVideo = (props: PopoutVideoProps): JSX.Element => {\n const {\n video, appLink, imageOptions, preload,\n isHovering, hoverToPlay\n } = props;\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n React.useEffect(() => {\n return () => {\n props.cleanPortalNode?.();\n };\n }, []);\n\n function onClickRemove(e: React.MouseEvent<HTMLButtonElement>) {\n e.preventDefault();\n props.onClickRemove?.();\n }\n\n let className = 'position-relative bg-white';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n if (isHovering)\n className += ` rounded-3 shadow-lg`;\n \n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showThumbnailPreviewVideo = props.isHovering && canConsume && hoverToPlay;\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, isHovering);\n\n function showRemoveButton() {\n if (!FunctionHelper.isFunction(props.onClickRemove))\n return false;\n\n if (UserAgentHelper.isTabletOrMobile())\n return true;\n\n return isHovering;\n }\n\n const analyticsData = {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <div className={className}>\n <div className={styles.topRightContainer}>\n {showRemoveButton() && (\n <RemoveVideoButton\n onClickRemove={onClickRemove}\n removeButtonTooltip={props.removeButtonTooltip}\n preventFocus\n />\n )}\n\n {showFavouriteButton && (\n <FavouriteButton\n setFavourite={props.commonVideoProps.setFavourite}\n canFavourite={props.commonVideoProps.canFavourite}\n video={video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n preventFocus\n />\n )}\n\n {!canNavigate && (\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <ThumbnailPadlock />\n </Tooltip>\n )}\n </div>\n\n <div className='position-relative'>\n <PluginHover\n isPlugin={props.commonVideoProps.isPlugin}\n isPluginPopup={props.commonVideoProps.isPluginPopup}\n className={isHovering ? 'rounded-top-3' : 'rounded-3'}\n onClick={() => props.cleanPortalNode?.()}\n appLink={canNavigate ? appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n <BaseImage\n onClick={() => props.cleanPortalNode?.()}\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus={!props.hideTitle}\n appLinkClassName={`position-absolute top-0 start-0 h-100 w-100 overflow-hidden ${isHovering ? 'rounded-top-3' : 'rounded-3'}`}\n imageClassName={isHovering ? 'rounded-top-3' : 'rounded-3'}\n >\n <ImageFallback type={ImageFallbackType.Video} />\n <div className='p-absolute w-100 h-100 text-white'>\n\n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {props.showOwner && <LiteOwnerAvatar video={video} imageCdnUrl={props.commonVideoProps.imageCdnUrl} />}\n \n <VideoTypeBadge video={video} />\n \n <ThumbnailCompanyLogo\n video={video}\n companyLogoFallbackUrl={props.commonVideoProps.companyLogoFallbackUrl}\n />\n </div>\n\n {/* bottom right */}\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n />\n\n {/* bottom */}\n <VideoThumbnailBottomBar video={video} />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n location='popout-video'\n />\n }\n </div>\n\n {!isHovering && !props.hideTitle && (\n <ThumbnailText {...props}/>\n )}\n \n <div className={`${styles.details} ${isHovering ? `${styles.isHovering} box-shadow` : ''}`}>\n {isHovering && (\n <>\n <div className={`${isHovering ? styles.videoGuidanceTags : ''}`}>\n <ThumbnailText {...props}/>\n\n {(props.showVideoGuidance && isHovering) && (\n <VideoItemGuidance\n commonVideoProps={props.commonVideoProps}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n responsiveClassName={styles.responsiveGuidance}\n containerClassName={`d-flex justify-content-start align-items-center pt-2`}\n />\n )}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n\n\nexport function PopoutVideoThumbnail(props: PopoutVideoThumbnailProps): JSX.Element {\n return (\n <>\n <HoverToPortalContainer<PopoutVideoThumbnailProps>\n hoverableComponent={PopoutVideo}\n componentProps={props}\n fixedHoverWidth={400}\n minHoverWidth={400}\n analyticsData={{\n ...props.analyticsData,\n id: props.video.id,\n name: props.video.name\n }}\n analyticsOptions={{\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(props.video)\n }}\n />\n </>\n );\n}","import * as React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { PlayCircleSvg } from 'libs/shared/images/svg/actions/PlayCircleSvg';\n\nimport styles from './mask.module.scss';\n\nexport enum MaskType {\n Video,\n Playlist,\n Series\n}\n\nfunction getClassByType(type: MaskType): string {\n if (type === MaskType.Video)\n return styles.video;\n\n if (type === MaskType.Playlist)\n return styles.playlist;\n\n return '';\n}\n\nfunction getSvg(type: MaskType) {\n if (type === MaskType.Video)\n return PlayCircleSvg;\n\n return null;\n}\n\ntype MaskSize = 'sm' | 'md';\n\ninterface MaskProps {\n type: MaskType;\n size?: MaskSize;\n}\n\nMask.defaults = {\n size: 'md'\n};\n\nexport function Mask(props: MaskProps): JSX.Element {\n const { type, size } = props;\n\n const typeClass = getClassByType(type);\n const svg = getSvg(type);\n\n return (\n <div className={`${styles.maskContainer} ${size === 'sm' ? styles.small : ''}`}>\n <div className={ styles.mask }></div>\n <SvgContainer svg={svg} className={ typeClass } />\n </div>\n );\n}","import React from 'react';\n\nexport function TickSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M18.783 5.192c.264.283.291.775.06 1.098l-8.91 12.444a.6.6 0 0 1-.457.266.58.58 0 0 1-.471-.228l-3.819-4.666a.905.905 0 0 1 0-1.1c.249-.304.652-.304.9 0l3.338 4.078 8.46-11.818c.232-.324.634-.356.899-.074'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TickSvg } from 'libs/shared/images/svg/status/TickSvg';\n\nimport { DivButton } from '../div-button/DivButton';\n\nimport styles from './check-mark-button.module.scss';\n\nexport enum CheckMarkStatus {\n None = 'None',\n Complete = 'Complete',\n Incomplete = 'Incomplete'\n}\n\nexport type SetCheckMarkStatusFunc = (status: CheckMarkStatus) => Promise<void>;\n\ninterface CheckMarkButtonProps {\n setStatus: SetCheckMarkStatusFunc;\n status: CheckMarkStatus;\n style?: 'outline' | 'filled';\n className?: string;\n disabled?: boolean;\n}\n\nCheckMarkButton.defaultProps = {\n style: 'filled'\n};\n\nexport function CheckMarkButton(props: CheckMarkButtonProps): JSX.Element {\n // Use local state so that changes are reflected immediately.\n const [ isComplete, setIsComplete ] = React.useState(props.status === CheckMarkStatus.Complete);\n\n React.useEffect(() => {\n setIsComplete(props.status === CheckMarkStatus.Complete);\n }, [props.status]);\n\n let className = `cursor-pointer rounded-circle ${isComplete ? styles.checked : styles.unchecked}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (props.style === 'outline')\n className += ` ${styles.outline}`;\n\n function shouldRender(): boolean {\n return (\n !!props.status &&\n props.status !== CheckMarkStatus.None &&\n FunctionHelper.isFunction(props.setStatus)\n );\n }\n\n function onClick(): void {\n const shouldComplete = !isComplete;\n\n setIsComplete(shouldComplete);\n\n const newStatus = shouldComplete ? CheckMarkStatus.Complete : CheckMarkStatus.Incomplete;\n\n props.setStatus(newStatus).catch(() => {\n setIsComplete(!shouldComplete);\n });\n }\n\n if (!shouldRender())\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick} disabled={props.disabled}>\n <SvgContainer\n svg={TickSvg}\n className={`svg-container ${styles.checkMark}`}\n />\n </DivButton>\n );\n}","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { CheckMarkButton, CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ThumbnailPadlock } from './padlock/ThumbnailPadlock';\n\nimport styles from './video-thumbnail-actions.module.scss';\n\nfunction hasActions(props: VideoThumbnailActionsProps): boolean {\n if (!VideoHelper.getCanBeConsumed(props.video)?.canConsume)\n return true;\n\n if (FunctionHelper.isFunction(props.setFavourite) && FunctionHelper.isFunction(props.canFavourite))\n return true;\n\n if (FunctionHelper.isFunction(props.setCheckMarkStatus))\n return true;\n\n return false;\n}\n\ninterface VideoThumbnailActionsProps {\n video: VideoTypes;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n checkMarkStatus?: CheckMarkStatus;\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n size?: VideoItemSize;\n}\n\nexport function VideoThumbnailActions(props: VideoThumbnailActionsProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canNavigate) {\n return (\n <div className={styles.container}>\n <ThumbnailPadlock size={props.size} />\n </div>\n );\n }\n \n if (!hasActions(props))\n return <></>;\n\n return (\n <div className={`${styles.container} d-flex align-items-center`}>\n <FavouriteButton\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n video={props.video}\n className={styles.action}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n preventFocus\n />\n\n <CheckMarkButton\n status={props.checkMarkStatus}\n setStatus={props.setCheckMarkStatus}\n className={styles.action}\n />\n </div>\n );\n}","export enum ThumbnailTextPosition {\n Below = 1,\n Overlay = 2,\n Independent = 3\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, LocationContext, UserAction } from 'libs/analytics/interfaces';\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 { Mask, MaskType } from 'libs/shared/components/mask/Mask';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { LiteOwnerAvatar } from 'libs/shared/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { VideoThumbnailActions } from 'libs/shared/components/thumbnails/thumbnail-actions/VideoThumbnailActions';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTitle } from 'libs/shared/components/video-title/VideoTitle';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useHover, useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { CosmeticVideoThumbnailProps, StaticVideoThumbnailProps } from '../VideoThumbnail';\n\nimport styles from './static-video-thumbnail.module.scss';\n\nconst namespace = 'shared.staticVideoThumbnail';\n\ntype CombinedProps = StaticVideoThumbnailProps | CosmeticVideoThumbnailProps;\n\nfunction ThumbnailText(props: CombinedProps): JSX.Element {\n const { type, video, textPosition } = props;\n\n const isStatic = type === 'static';\n\n const textIsOverlayed = textPosition === ThumbnailTextPosition.Overlay;\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n let className = '';\n\n if (textIsOverlayed) {\n className = styles.titleOverlay;\n\n if (canNavigate) {\n if (VideoHelper.isClip(video))\n className += ' ' + styles.clip;\n if (VideoHelper.isInteractive(video))\n className += ' ' + styles.interactive;\n }\n } else {\n className = styles.titleBelow;\n }\n\n return (\n <div className={className}>\n {VideoHelper.isVideo(video) &&\n <VideoSubText\n type={isStatic ? props.commonVideoProps.subTextType : 'series'}\n className={textIsOverlayed ? 'text-shadow clamp-1' : 'clamp-2'}\n video={video}\n appLink={isStatic && !textIsOverlayed ? props.commonVideoProps.getSubTextAppLink?.(props.video) : null}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n }\n\n {(textIsOverlayed || !canNavigate || !isStatic)\n ? (\n <span className={`h6 text-reset clamp-1`}>\n <VideoTitle\n video={video}\n title={video.name ?? LanguageService.getPhrase(namespace, 'videoUnavailable')}\n showNewVideoIndicator={isStatic && props.commonVideoProps.showNewVideoIndicator}\n showPadlock={isStatic\n && !props.commonVideoProps.hasStudentExperience\n && !props.commonVideoProps.hasGuestExperience}\n />\n </span>\n ) : (\n <AppLink className='h6 text-reset clamp-2' appLink={props.appLink}>\n <VideoTitle\n video={video}\n showNewVideoIndicator={props.commonVideoProps.showNewVideoIndicator}\n showPadlock={!props.commonVideoProps.hasStudentExperience && !props.commonVideoProps.hasGuestExperience}\n />\n </AppLink>\n )\n }\n </div>\n );\n}\n\nexport function StaticVideoThumbnail(props: CombinedProps): JSX.Element {\n const { type, video, textPosition, imageOptions, preload } = props;\n\n const isStatic = type === 'static';\n\n const appLinkParams = isStatic && ObjectHelper.isObject(props.appLink?.params)\n ? props.appLink?.params as HashObject :\n {};\n\n const [ hoverRef, isHovering ] = useHover<HTMLDivElement>();\n const [ hoverIntentRef, isHoveringIntentionally ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n function setHoverRefs(r: HTMLDivElement) {\n hoverRef.current = r;\n hoverIntentRef.current = r;\n }\n\n const showThumbnailPreviewVideo = isStatic && isHoveringIntentionally && canConsume && props.hoverToPlay;\n\n function canFavourite(): boolean {\n if (!isStatic)\n return;\n\n return !props.disableFavourite &&\n props.commonVideoProps.canFavourite?.(props.video) &&\n FavouriteHelper.showFavouriteButton(video, isHovering);\n }\n\n function getContainerClass(): string {\n let className = 'position-relative';\n\n className += (isStatic && props.appLink && canNavigate) ? ' cursor-pointer' : '';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` rounded overflow-hidden`;\n\n return className;\n }\n\n function getThumbnailClass(): string {\n let className = `overflow-hidden ${props.size === 'sm' ? 'rounded' : 'rounded-3'}`;\n\n if (props.imageClassName)\n className += ` ${props.imageClassName}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` ${styles.gradient}`;\n \n return className;\n }\n\n const eventAnalyticsOptions = isStatic ? {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n } : {};\n\n const showMask = isStatic && !!props.appLink && !props.hideMask && canNavigate;\n const tooltip = isStatic\n ? VideoHelper.getPrivacyReasoning(props.video, props.showSignIn)\n : '';\n\n const analyticsData = isStatic ? {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n } : {};\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <Tooltip title={tooltip} spanHack spanHackClassName=''>\n <div className={getContainerClass()} ref={setHoverRefs}>\n {isStatic &&\n <PluginHover\n isPlugin={props.commonVideoProps.isPlugin}\n isPluginPopup={props.commonVideoProps.isPluginPopup}\n className={props.size === 'sm' ? 'rounded' : 'rounded-3'}\n appLink={canNavigate ? props.appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n }\n \n\n <VideoThumbnailActions\n video={video}\n checkMarkStatus={!isStatic && props.checkMarkStatus}\n setCheckMarkStatus={!isStatic && props.setCheckMarkStatus}\n setFavourite={isStatic && props.commonVideoProps.setFavourite}\n canFavourite={canFavourite}\n analyticsData={isStatic && props.analyticsData}\n analyticsOptions={isStatic && eventAnalyticsOptions}\n size={props.size}\n />\n\n <BaseImage\n data={VideoHelper.getThumbnail(video)}\n appLink={isStatic && canNavigate ? props.appLink : null}\n onClick={isStatic && canNavigate ? props.onClick : undefined}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={getThumbnailClass()}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {showMask && (\n <Mask type={MaskType.Video} size={props.size} />\n )}\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n {/* overlay */}\n {textPosition === ThumbnailTextPosition.Overlay && <ThumbnailText {...props} />}\n \n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {isStatic && props.showOwner &&\n <LiteOwnerAvatar video={video} imageCdnUrl={props.commonVideoProps.imageCdnUrl} />\n }\n \n {!props.hideVideoTypeBadge && <VideoTypeBadge video={video} size={props.size} />}\n\n {isStatic &&\n <ThumbnailCompanyLogo\n video={video}\n companyLogoFallbackUrl={props.commonVideoProps.companyLogoFallbackUrl}\n size={props.size}\n />\n }\n </div>\n\n {/* bottom */}\n {!props.hideBottomBar &&\n <VideoThumbnailBottomBar video={video} />\n }\n \n {/* bottom right */}\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n newDurationStyle={props.newDurationStyle}\n size={props.size}\n />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n\n {textPosition === ThumbnailTextPosition.Below && <ThumbnailText {...props} />}\n </div>\n </Tooltip>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Audience, VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport { ExpandableVideoThumbnail } from './expandable/ExpandableVideoThumbnail';\nimport { PopoutVideoThumbnail } from './popout/PopoutVideoThumbnail';\nimport { StaticVideoThumbnail } from './static/StaticVideoThumbnail';\n\ninterface BaseCommonVideoThumbnailProps {\n video: VideoTypes;\n imageOptions: ImageOptions;\n preload?: boolean;\n}\n\ninterface BasePlayableVideoThumbnailProps extends BaseCommonVideoThumbnailProps {\n appLink: Core.AppLink;\n onClick?: () => void;\n hoverToPlay?: boolean;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Location context required\n \n /**\n * TODO: Fix whatever this used to do in playlists\n */\n canRemovePrivateVideos?: boolean;\n showSignIn?: boolean;\n \n showOwner?: boolean;\n\n commonVideoProps: CommonVideoProps;\n}\n\nexport interface ExpandableVideoThumbnailProps extends BasePlayableVideoThumbnailProps {\n type: 'expandable'\n newDurationStyle?: boolean;\n hovering: boolean;\n}\n\nexport interface PopoutVideoThumbnailProps extends BasePlayableVideoThumbnailProps {\n type: 'popout'\n hideDuration: boolean;\n extraClasses?: string;\n hideRating?: boolean;\n hideTitle?: boolean;\n showVideoGuidance: boolean;\n onClickRemove: () => void;\n removeButtonTooltip?: string;\n audience: Audience;\n}\n\ninterface BaseStaticVideoThumbnailProps {\n textPosition?: ThumbnailTextPosition;\n extraClasses?: string;\n imageClassName?: string;\n size: 'sm' | 'md';\n hideMask?: boolean;\n videoTypeBadgeSize?: 'sm' | 'std';\n hideDuration?: boolean;\n audience?: Audience;\n newDurationStyle?: boolean;\n hideRating?: boolean;\n hideVideoTypeBadge?: boolean;\n hideBottomBar?: boolean;\n}\n\nexport interface StaticVideoThumbnailProps extends BaseStaticVideoThumbnailProps, BasePlayableVideoThumbnailProps {\n type: 'static'\n disableFavourite?: boolean;\n}\n\n/**\n * If you need any of the following, you should be using static:\n * - Favourite button\n * - Applink to link to the video\n * - Hover to play\n * - Analytics data\n * - Showing the owner\n * - Showing sign in\n * \n * Cosmetic should just be for displaying a thumbnail that is not interacted with, or the <AppLink />\n * is outside of the thumbnail like in shares.\n * \n * - Sha\n */\nexport interface CosmeticVideoThumbnailProps extends BaseCommonVideoThumbnailProps, BaseStaticVideoThumbnailProps{\n type: 'cosmetic';\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n checkMarkStatus?: CheckMarkStatus;\n}\n\nexport type VideoThumbnailProps =\n ExpandableVideoThumbnailProps |\n PopoutVideoThumbnailProps |\n StaticVideoThumbnailProps |\n CosmeticVideoThumbnailProps;\n\nVideoThumbnail.defaultProps = {\n hideRating: true,\n size: 'md',\n hoverToPlay: false,\n showOwner: true\n};\n\nexport function VideoThumbnail(props: VideoThumbnailProps): JSX.Element {\n switch (props.type) {\n case 'static':\n return <StaticVideoThumbnail {...props} />;\n case 'cosmetic':\n // No hover to play for cosmetic use of VideoThumbnail\n return <StaticVideoThumbnail {...props} />;\n case 'expandable':\n // Expandable thumbnails show metadata on hover. Static display the duration and don't expand on hover\n return <ExpandableVideoThumbnail {...props} />;\n case 'popout':\n return <PopoutVideoThumbnail {...props} />;\n default:\n return;\n }\n}\n","import * as React from 'react';\n\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { RestrictionType } from 'libs/shared/enums/RestrictionType';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { Video } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './video-item-description.module.scss';\n\ninterface InnerContentProps {\n video: Video;\n showSignIn: boolean;\n}\n\nfunction InnerContent(props: InnerContentProps): JSX.Element {\n if (!props.video.description && !VideoHelper.getCanBeConsumed(props.video)?.canNavigate) {\n return (\n <em>{VideoHelper.getPrivacyReasoning(props.video, props.showSignIn)}</em>\n );\n }\n\n const hasCaptions = !!props.video?.subtitles?.data?.length;\n\n return (\n <>\n {hasCaptions && (\n <span className={`d-inline-block align-middle ${styles.captionsBadge}`}>\n <Badge type={BadgeType.Captions} data={props.video?.subtitles} />\n </span>\n )}\n {!!props.video?.productionYear && (\n <span className='fw-semibold align-middle'>\n {hasCaptions ? ' \\u2022 ' : ''}{props.video.productionYear}\n </span>\n )}\n {!!props.video.description && (\n <span\n className='align-middle'\n dangerouslySetInnerHTML={{\n __html: `${(props.video.productionYear || hasCaptions) ? ' \\u2022 ' : ''}${LinkifyHelper.linkifyText(props.video.description)}`\n }}\n />\n )}\n </>\n );\n}\n\ninterface VideoItemDescriptionProps {\n video: Video;\n showSignIn?: boolean;\n hasStudentExperience?: boolean;\n hasGuestExperience?: boolean;\n}\n\nexport function VideoItemDescription(props: VideoItemDescriptionProps): JSX.Element {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n const hasUserRestrictions = !!RestrictionHelper.getRestrictionByType(props.video, RestrictionType.User);\n\n if (isMobile)\n return <></>;\n\n if (hasUserRestrictions && !props.hasStudentExperience && !props.hasGuestExperience)\n return <></>;\n\n return (\n <div className={`position-relative overflow-hidden clamp-2`}>\n <p className='m-0'>\n <InnerContent\n video={props.video}\n showSignIn={props.showSignIn}\n />\n </p>\n </div>\n );\n}","import React from 'react';\n\nexport function HandleSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props} viewBox='0 0 16 16'>\n <path\n d='M1 0h14a1 1 0 0 1 1 1v1.2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1m0 6.4h14a1 1 0 0 1 1 1v1.2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7.4a1 1 0 0 1 1-1m0 6.4h14a1 1 0 0 1 1 1V15a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1v-1.2a1 1 0 0 1 1-1'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\nimport { Col } from 'react-bootstrap';\n\nimport { PropsWithSortableItemProps } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { HandleSvg } from 'libs/shared/images/svg/objects/HandleSvg';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './video-item-left-content.module.scss';\n\ninterface VideoItemLeftContentProps {\n index: number;\n showDragHandle: boolean;\n showIndexes: boolean;\n dragHandleIcon: SvgIcon;\n dragHandleIconSize: SvgContainerSize;\n}\n\nfunction getClassName(showDragHandle: boolean): string {\n const baseClassName = 'd-flex justify-content-center align-items-center';\n if (!showDragHandle) return baseClassName;\n\n return `${baseClassName} cursor-pointer ${styles.dragHandleContainer}`;\n}\n\nexport function VideoItemLeftContent(props: PropsWithSortableItemProps<VideoItemLeftContentProps>): JSX.Element {\n const dragProps = props.showDragHandle ? { ...props.dragAttributes, ...props.dragListeners } : {};\n const className = getClassName(props.showDragHandle);\n\n if (!props.showDragHandle && !props.showIndexes) return <></>;\n\n return (\n <Col\n xs={2}\n className={className}\n {...dragProps}\n >\n {!!props.showDragHandle &&\n <SvgContainer svg={props.dragHandleIcon} size={props.dragHandleIconSize} />\n }\n {!!props.showIndexes &&\n <span className='fw-semibold'>{props.index + 1}</span>\n }\n </Col>\n );\n}\n\nVideoItemLeftContent.defaultProps = {\n dragHandleIcon: HandleSvg,\n dragHandleIconSize: SvgContainerSize.Small\n};","import React from 'react';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { Restrictions, YearGroup } from 'libs/shared/interfaces';\n\ninterface RestrictionBadgeProps {\n restrictions: Restrictions;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionBadge(props: RestrictionBadgeProps): JSX.Element {\n return (\n <Badge\n type={BadgeType.Restriction}\n data={{ restrictions: props.restrictions, yearGroups: props.yearGroups }}\n inline\n />\n );\n}","import React from 'react';\n\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { RestrictionBadge } from 'libs/shared/components/video-list/components/video-item-restriction-badge/RestrictionBadge';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemRestrictionBadgeProps {\n video: VideoTypes;\n yearGroups: YearGroup[];\n className?: string;\n}\n\nexport function VideoItemRestrictionBadge(props: VideoItemRestrictionBadgeProps): JSX.Element {\n const hasRestrictions = RestrictionHelper.hasRestrictions(props.video);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!hasRestrictions || !props.yearGroups || !canConsume)\n return <></>;\n \n return (\n <BadgeListContainer className={props.className || 'pt-1'}>\n <RestrictionBadge restrictions={props.video._restrictions} yearGroups={props.yearGroups} />\n </BadgeListContainer>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTitle, VideoTitleSizes } from 'libs/shared/components/video-title/VideoTitle';\nimport { Video, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemTitleProps {\n video: Video;\n appLink: Core.AppLink;\n onClickAppLink?: () => void;\n size?: VideoItemSize;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions;\n yearGroups: YearGroup[];\n showNewVideoIndicator?: boolean;\n showPadlock: boolean;\n\n linkClassName?: string;\n titleSize?: VideoTitleSizes;\n titleClassName?: string;\n clampLevel?: number;\n}\n\nVideoItemTitle.defaultProps = {\n clampLevel: 1\n};\n\nexport function VideoItemTitle(props: VideoItemTitleProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n const title = VideoHelper.getTitle(props.video);\n\n const analyticsData: HashObject = {\n ...props.analyticsData,\n id: props.video?.id,\n name: props.video?.name\n };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Title\n };\n\n function getTitleSize(): VideoTitleSizes {\n if (props.titleSize)\n return props.titleSize;\n\n if (props.size === 'md')\n return 'h4';\n\n return 'h5';\n }\n\n return (\n <AppLink\n className={props.linkClassName}\n appLink={canNavigate ? props.appLink : null}\n onClick={canNavigate ? props.onClickAppLink : null}\n analyticsOptions={analyticsOptions}\n analyticsData={analyticsData}\n >\n <div className={`clamp-${props.clampLevel} align-middle`} title={props.video.name ?? ''}>\n <VideoTitle\n video={props.video}\n title={title}\n yearGroups={props.yearGroups}\n lockSize={props.size}\n titleSize={getTitleSize()}\n className={props.titleClassName}\n showNewVideoIndicator={props.showNewVideoIndicator}\n showPadlock={props.showPadlock}\n />\n </div>\n </AppLink>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.signInToWatch';\n\ninterface SignInToWatchProps {\n appLink: Core.AppLink\n className: string;\n}\n\nexport function SignInToWatch(props: SignInToWatchProps): React.ReactElement {\n return (\n <AppLink appLink={props.appLink} className={props.className}>\n <Text namespace={namespace} phrase='signInToWatch'></Text>\n </AppLink>\n );\n}","import * as React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface VideoActionsOptions {\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\ntype GetVideoActions = (video: VideoTypes, options: VideoActionsOptions) => ActionOptions[];\ntype FetchMoreActions = (video: VideoTypes) => void;\n\ninterface VideoActionsContextData {\n getVideoActions: GetVideoActions;\n fetchMoreActions?: FetchMoreActions;\n}\n\nexport const VideoActionsContext = React.createContext<VideoActionsContextData>(null);","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { Video } from 'libs/shared/interfaces';\n\ninterface VideoItemActionsProps {\n video: Video;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function VideoItemActions(props: VideoItemActionsProps): JSX.Element {\n const videoActions = React.useContext(VideoActionsContext);\n\n if (!FunctionHelper.isFunction(videoActions?.getVideoActions))\n return <></>;\n\n const actions = videoActions.getVideoActions(props.video, {\n analyticsData: props.analyticsData,\n analyticsOptions: props.analyticsOptions\n });\n\n return (\n <Actions\n actions={actions}\n className='align-items-start gap-2'\n actionsDropdownClassName='btn btn-link py-0'\n dropdownToggleSvgSize={SvgContainerSize.Standard}\n fetchMore={videoActions.fetchMoreActions ? () => videoActions.fetchMoreActions(props.video) : null}\n customSize\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { SignInToWatch } from 'libs/shared/components/sign-in-to-watch/SignInToWatch';\nimport { VideoItemActions } from 'libs/shared/components/video-list/components/video-item-actions/VideoItemActions';\nimport { Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemTopRightProps {\n video: Video;\n showSignIn: boolean;\n signInAppLink?: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function VideoItemTopRight(props: VideoItemTopRightProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n if (props.showSignIn && !canNavigate)\n return <SignInToWatch appLink={props.signInAppLink} className='btn btn-outline-dark align-self-start' />;\n\n return (\n <VideoItemActions\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n );\n}","import { ColProps } from 'react-bootstrap';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nexport const VideoListHelper = {\n getThumbnailColumns(): ColProps {\n return {\n xs: 12,\n sm: 5,\n lg: 3\n };\n },\n\n getDetailsColumns(): ColProps {\n return {\n xs: 12,\n sm: 7,\n lg: 9\n };\n },\n\n getSize(breakpoints: Breakpoints, size: VideoItemSize): VideoItemSize {\n if (breakpoints.sm)\n return 'sm';\n \n return size || 'md';\n },\n\n getThumbnailColSize(hasDragHandle: boolean): number {\n return hasDragHandle ? 10 : 12;\n }\n};","import * as React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BaseVideoItemProps } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoItemGuidance } from 'libs/shared/components/video-list/components/video-guidance/VideoItemGuidance';\nimport { VideoItemDescription } from 'libs/shared/components/video-list/components/video-item-description/VideoItemDescription';\nimport { VideoItemLeftContent } from 'libs/shared/components/video-list/components/video-item-left-content/VideoItemLeftContent';\nimport { VideoItemRestrictionBadge } from 'libs/shared/components/video-list/components/video-item-restriction-badge/VideoItemRestrictionBadge';\nimport { VideoItemTitle } from 'libs/shared/components/video-list/components/video-item-title/VideoItemTitle';\nimport { VideoItemTopRight } from 'libs/shared/components/video-list/components/video-item-top-right/VideoItemTopRight';\nimport { SortableVideoListContext } from 'libs/shared/components/video-list/VideoList';\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useHover } from 'libs/shared/hooks/UseHover';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { Clip } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './clip-item.module.scss';\n\nexport type ClipItemProps = BaseVideoItemProps<Clip>;\n\nexport const ClipItem = React.forwardRef((props: ClipItemProps, ref: React.LegacyRef<HTMLDivElement>) => {\n const breakpoints = useBreakpoints();\n const [ hoverRef, hovered ] = useHover<HTMLDivElement>();\n \n const size = VideoListHelper.getSize(breakpoints, props.size);\n const isSmall = size === 'sm';\n\n const { isSortable } = React.useContext(SortableVideoListContext);\n\n const mergedAudience = useMergeAudiences(props.video.subjectPresentationAudiences?.data, props.presentationAudiences);\n\n const showDragHandle = isSortable && !breakpoints.xs && (hovered || typeof props.index === 'undefined' || !props.showIndexes);\n const showIndexes = (props.showIndexes && !showDragHandle) && !breakpoints.xs;\n const hasIconOrIndex = (showDragHandle || props.showIndexes) && !breakpoints.xs;\n\n const appLink = props.getVideoAppLink(props.video, {});\n const analyticsProps = {\n analyticsData: props.analyticsData,\n analyticsOptions: {\n entity: EntityType.Clip,\n location: LocationContext.ClipListItem\n }\n };\n\n return (\n <div ref={hoverRef} className='w-100'>\n <div className={`row g-0 ${isSmall ? '' : 'py-2'}`} ref={ref} style={props.style}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-2` : 'mb-1 px-2'}`}>\n <Row>\n <VideoItemLeftContent\n index={props.index}\n showDragHandle={showDragHandle}\n showIndexes={showIndexes}\n dragHandleIcon={props.dragHandleIcon}\n dragHandleIconSize={props.dragHandleIconSize}\n dragAttributes={props.dragAttributes}\n dragListeners={props.dragListeners}\n />\n \n <Col xs={VideoListHelper.getThumbnailColSize(hasIconOrIndex)}>\n <VideoThumbnail\n {...analyticsProps}\n video={props.video}\n appLink={appLink}\n audience={mergedAudience}\n imageOptions={{ size: ImageSize.Medium }}\n textPosition={ThumbnailTextPosition.Independent}\n type='static'\n commonVideoProps={{\n ...props.commonVideoProps,\n subTextType: 'none'\n }}\n />\n </Col>\n </Row>\n </Col>\n\n <Col\n {...VideoListHelper.getDetailsColumns()}\n className={`${isSmall ? 'pb-2' : 'px-2'} d-flex position-relative flex-column`}\n >\n <div className='d-flex justify-content-between'>\n <VideoItemTitle\n video={props.video}\n appLink={appLink}\n size={size}\n yearGroups={props.commonVideoProps.yearGroups}\n showPadlock={!props.commonVideoProps.hasStudentExperience && !props.commonVideoProps.hasGuestExperience}\n linkClassName='flex-grow-1'\n {...analyticsProps}\n />\n \n <VideoItemTopRight\n {...analyticsProps}\n video={props.video}\n showSignIn={props.showSignIn}\n signInAppLink={props.getSignInAppLink?.(appLink)}\n />\n </div>\n\n <div>\n {!isSmall && (\n <VideoItemDescription\n video={props.video}\n showSignIn={props.showSignIn}\n hasStudentExperience={props.commonVideoProps.hasStudentExperience}\n hasGuestExperience={props.commonVideoProps.hasGuestExperience}\n />\n )}\n {!props.commonVideoProps.hasStudentExperience && !props.commonVideoProps.hasGuestExperience && (\n <VideoItemRestrictionBadge video={props.video} yearGroups={props.commonVideoProps.yearGroups}/>\n )}\n </div>\n\n {VideoHelper.showVideoGuidance(props.hasPermissions) && (\n <VideoItemGuidance\n video={props.video}\n getVideoAppLink={props.getVideoAppLink}\n containerClassName={`d-flex justify-content-start align-items-center pt-sm-1 gap-1`}\n responsiveClassName={styles.responsiveGuidance}\n commonVideoProps={props.commonVideoProps}\n {...analyticsProps}\n />\n )}\n </Col>\n </div>\n </div>\n );\n});\n\ntype SortableClipItemProps = ClipItemProps & {\n index: number;\n};\n\nexport const SortableClipItem = (props: SortableClipItemProps) => {\n return (\n <SortableItemWrapper id={props.video.id} childComponent={ClipItem} childProps={props} />\n );\n};","export function TrueOrFalseSvg(): string {\n return `\n <svg viewBox='0 0 24 24'>\n <g transform='translate(1.000000, 1.000000)'>\n <g transform='translate(5.000000, 3.000000)'>\n <path d='M5.129,4.52970994e-14 C5.80434375,4.52970994e-14 6.35378125,0.5494375 6.35378125,1.22478125 L6.35378125,1.22478125 L6.35378125,4.12053125 C6.35378125,4.795875 5.80434375,5.3453125 5.129,5.3453125 L5.129,5.3453125 L5.01765625,5.3453125 L5.01765625,5.7625625 C5.14371875,5.7230625 5.2778125,5.70175 5.4166875,5.70175 C5.8579375,5.70175 6.24996875,5.9166875 6.4935,6.24740625 C6.6880625,6.13675 6.9129375,6.0735 7.15228125,6.0735 C7.61575,6.0735 8.024875,6.31059375 8.26471875,6.6699375 C8.450875,6.57140625 8.6629375,6.51559375 8.88784375,6.51559375 C9.6248125,6.51559375 10.2244688,7.11515625 10.2244688,7.85209375 L10.2244688,7.85209375 L10.2239688,11.0194063 C10.22375,12.719125 9.73003125,14.3683438 8.79625,15.7887188 C8.7095625,15.9205625 8.562375,15.9999688 8.4045625,15.9999688 L8.4045625,15.9999688 L3.1323125,15.9999688 C3.0124375,15.9999688 2.897125,15.9540625 2.8100625,15.8716563 C2.80745313,15.8691864 2.80274841,15.8647056 2.79608533,15.8582606 L2.73370254,15.7963915 C2.38498908,15.4434944 0.983540179,13.9211451 0.6698125,11.95725 L0.6698125,11.95725 L0.0538125,9.3209375 C-0.03209375,8.95328125 0.043625,8.5848125 0.261625,8.3100625 C0.46915625,8.04846875 0.78865625,7.89309375 1.14465625,7.8788125 C1.47575,7.8150625 1.81340625,7.8773125 2.10134375,8.0561875 C2.19071875,8.1116875 2.272125,8.17646875 2.34459375,8.24915625 L2.34459375,8.24915625 L2.34459375,5.34534375 L2.23325,5.34534375 C1.55790625,5.34534375 1.00846875,4.79590625 1.00846875,4.1205625 L1.00846875,4.1205625 L1.00846875,1.22478125 C1.00846875,0.5494375 1.55790625,4.52970994e-14 2.23325,4.52970994e-14 L2.23325,4.52970994e-14 Z M3.6810625,3.4381875 C3.46103125,3.4381875 3.282,3.61721875 3.282,3.83725 L3.282,3.83725 L3.282,11.2870938 C3.282,11.4215625 3.22428125,11.5495625 3.12346875,11.6385313 C3.02265625,11.7275 2.88853125,11.7689063 2.7550625,11.7522188 L2.7550625,11.7522188 L2.7175,11.7475313 C2.5228125,11.7231875 2.36390625,11.580125 2.31925,11.3890625 L2.31925,11.3890625 L1.78459375,9.10071875 C1.76034375,8.9969375 1.69715625,8.9088125 1.60659375,8.8525625 C1.51603125,8.7963125 1.407,8.78928125 1.30065625,8.79571875 C1.2585,8.79828125 1.23959375,8.8036875 1.194,8.80803125 C1.10340625,8.81665625 1.035625,8.84275 0.996,8.89271875 C0.956375,8.9426875 0.94596875,9.019 0.96665625,9.107625 L0.96665625,9.107625 L1.58653125,11.7605625 C1.5891875,11.7719063 1.59140625,11.7833438 1.59321875,11.794875 C1.83815625,13.3630313 2.95146875,14.6606563 3.32925,15.0625 L3.32925,15.0625 L8.1469375,15.0625 C8.893,13.8445 9.28625,12.4519688 9.2864375,11.0193125 L9.2864375,11.0193125 L9.2869375,7.85203125 C9.2869375,7.63209375 9.10790625,7.4530625 8.887875,7.4530625 C8.66784375,7.4530625 8.4888125,7.63209375 8.4888125,7.852125 L8.4888125,7.852125 L8.4888125,8.61359375 C8.4888125,8.87246875 8.2789375,9.08234375 8.0200625,9.08234375 C7.7611875,9.08234375 7.5513125,8.87246875 7.5513125,8.61359375 L7.5513125,8.61359375 L7.5513125,7.4100625 C7.5513125,7.19003125 7.3723125,7.011 7.15228125,7.011 C6.93225,7.011 6.75321875,7.19003125 6.75321875,7.4100625 L6.75321875,7.4100625 L6.75321875,8.28625 C6.75321875,8.545125 6.54334375,8.755 6.28446875,8.755 C6.02559375,8.755 5.81571875,8.545125 5.81571875,8.28625 L5.81571875,8.28625 L5.81571875,7.0383125 C5.81571875,6.81828125 5.6366875,6.63928125 5.41665625,6.63928125 C5.196625,6.63928125 5.017625,6.81828125 5.017625,7.0383125 L5.017625,7.0383125 L5.017625,8.232875 C5.017625,8.49175 4.80775,8.701625 4.548875,8.701625 C4.29,8.701625 4.080125,8.49175 4.080125,8.232875 L4.080125,8.232875 L4.080125,3.83725 C4.080125,3.61721875 3.90109375,3.4381875 3.6810625,3.4381875 Z M11.131,-1.59872116e-14 C11.8064063,-1.59872116e-14 12.3558125,0.5494375 12.3558125,1.22478125 L12.3558125,1.22478125 L12.3558125,4.1205625 C12.3558125,4.79590625 11.806375,5.34534375 11.131,5.34534375 L11.131,5.34534375 L8.23525,5.34534375 C7.55990625,5.34534375 7.01046875,4.79590625 7.01046875,4.1205625 L7.01046875,4.1205625 L7.01046875,1.22478125 C7.01046875,0.5494375 7.55990625,-1.59872116e-14 8.23525,-1.59872116e-14 L8.23525,-1.59872116e-14 Z M11.1310313,0.9375 L8.23528125,0.9375 C8.076875,0.9375 7.948,1.066375 7.948,1.22478125 L7.948,1.22478125 L7.948,4.1205625 C7.948,4.27896875 8.076875,4.40784375 8.23528125,4.40784375 L8.23528125,4.40784375 L11.1310313,4.40784375 C11.2894375,4.40784375 11.4183438,4.27896875 11.4183438,4.1205625 L11.4183438,4.1205625 L11.4183438,1.22478125 C11.4183438,1.066375 11.2894375,0.9375 11.1310313,0.9375 L11.1310313,0.9375 Z M5.129,0.9375 L2.23325,0.9375 C2.07484375,0.9375 1.94596875,1.066375 1.94596875,1.22478125 L1.94596875,1.22478125 L1.94596875,4.1205625 C1.94596875,4.27896875 2.07484375,4.40784375 2.2331875,4.40784375 L2.2331875,4.40784375 L2.34453125,4.40784375 L2.34453125,3.83721875 C2.34453125,3.10025 2.944125,2.50065625 3.68109375,2.50065625 C4.4180625,2.50065625 5.01765625,3.10025 5.01765625,3.83721875 L5.01765625,3.83721875 L5.01765625,4.40784375 L5.129,4.40784375 C5.28740625,4.40784375 5.41628125,4.27896875 5.41628125,4.1205625 L5.41628125,4.1205625 L5.41628125,1.22478125 C5.41628125,1.066375 5.28740625,0.9375 5.129,0.9375 L5.129,0.9375 Z'></path>\n </g>\n </g>\n </svg>\n `;\n}\n\nexport function ShortAnswerSvg(): string {\n return `\n <svg viewBox='0 0 24 24'>\n <g transform='translate(1.000000, 1.000000)'>\n <path d='M16.5547082,3.66666667 C17.0307547,3.66666667 17.4166667,4.10561087 17.4166667,4.65176211 L17.4166667,17.3482379 C17.4166667,17.8922911 17.0325905,18.3333333 16.5547082,18.3333333 L5.44529184,18.3333333 C4.9692453,18.3333333 4.58333333,17.8943891 4.58333333,17.3482379 L4.58333333,4.65176211 C4.58333333,4.10770892 4.96740951,3.66666667 5.44529184,3.66666667 L16.5547082,3.66666667 Z M6.64149485,4.58362946 L5.39188119,4.58333333 L5.39188119,4.58333333 L5.39140886,4.63124366 C5.39133174,4.64701901 5.39125542,4.66659213 5.39117991,4.68981696 L5.39052172,4.99349248 C5.39045096,5.0373129 5.39038099,5.08434682 5.39031181,5.13444817 L5.38951907,5.87355262 C5.38945612,5.94585631 5.38939393,6.02064317 5.38933252,6.09776711 L5.38846857,7.41164942 C5.38841476,7.50849255 5.38836171,7.60694243 5.3883094,7.706853 L5.38744819,9.63144592 C5.38740476,9.7436262 5.38736207,9.85639075 5.3873201,9.96959351 L5.38636125,13.0260679 C5.38633211,13.1353268 5.38630366,13.2437094 5.38627591,13.3510694 L5.38541667,17.4092786 L5.38541667,17.4092786 C5.38541667,17.4094727 5.40139773,17.4096625 5.43215374,17.4098483 L5.66621602,17.410657 C5.70239956,17.4107438 5.74182455,17.4108296 5.78434021,17.4109144 L6.24635879,17.4116506 C6.30606164,17.4117294 6.36840286,17.4118072 6.43323171,17.411884 L7.07978636,17.412549 C7.15818403,17.4126199 7.23861702,17.4126899 7.32093458,17.4127589 L8.38955516,17.4135407 C8.48453695,17.413602 8.58080025,17.4136624 8.67819428,17.4137218 L10.2050643,17.4145426 C10.3099966,17.4145926 10.4153058,17.4146418 10.5208411,17.41469 L12.7186143,17.4155682 C12.8199282,17.4156037 12.9204129,17.4156383 13.0199177,17.4156721 L16.5962838,17.4166643 C16.6041235,17.4166659 16.6081188,17.4166667 16.6081188,17.4166667 L16.6083574,17.404543 L16.6083574,17.404543 L16.6092636,17.1281822 C16.609336,17.0909349 16.6094075,17.0503279 16.6094783,17.0065075 L16.6102897,16.3357629 C16.6103542,16.2685716 16.610418,16.1987511 16.6104809,16.1264474 L16.6111995,15.1489598 C16.6112564,15.059128 16.6113124,14.9673972 16.6113678,14.8739137 L16.6122825,13.0334559 C16.6123288,12.924197 16.6123745,12.8140617 16.6124193,12.703196 L16.6132553,10.3177583 C16.6132901,10.2038252 16.6133242,10.0901843 16.6133575,9.97698153 L16.6143069,6.10515513 C16.6143225,6.02803119 16.6143373,5.95324434 16.6143515,5.88094064 L16.6145833,4.59072136 L16.6145833,4.59072136 L16.6027483,4.59043343 L16.6027483,4.59043343 L16.5107818,4.58987601 C16.4881671,4.58978515 16.4620094,4.5896953 16.4324595,4.58960647 L16.0789915,4.58883422 C16.0304453,4.58875142 15.9789591,4.58866963 15.9246838,4.58858883 L15.1491499,4.58766678 C15.0749737,4.58759388 14.9986113,4.58752196 14.9202136,4.58745101 L14.1637515,4.58683864 C14.0744988,4.5867735 13.983663,4.58670932 13.891395,4.58664609 L12.4188002,4.58576887 C12.3159787,4.5857151 12.2124787,4.58566226 12.108451,4.58561036 L10.2115288,4.58477559 C10.1065966,4.58473469 10.0020412,4.58469469 9.89801354,4.5846556 L6.8573146,4.58368638 C6.78313834,4.58366655 6.71114817,4.58364758 6.64149485,4.58362946 Z M9.80280172,11.9166667 C10.0210177,11.9166667 10.1979167,12.1218695 10.1979167,12.375 C10.1979167,12.6281305 10.0210177,12.8333333 9.80280172,12.8333333 L9.80280172,12.8333333 L7.38469828,12.8333333 C7.16648232,12.8333333 6.98958333,12.6281305 6.98958333,12.375 C6.98958333,12.1218695 7.16648232,11.9166667 7.38469828,11.9166667 L7.38469828,11.9166667 Z M14.5678761,9.16666667 C14.8122845,9.16666667 15.0104167,9.37186949 15.0104167,9.625 C15.0104167,9.87813051 14.8122845,10.0833333 14.5678761,10.0833333 L14.5678761,10.0833333 L7.4321239,10.0833333 C7.18771549,10.0833333 6.98958333,9.87813051 6.98958333,9.625 C6.98958333,9.37186949 7.18771549,9.16666667 7.4321239,9.16666667 L7.4321239,9.16666667 Z M14.5678761,6.41666667 C14.8122845,6.41666667 15.0104167,6.62186949 15.0104167,6.875 C15.0104167,7.12813051 14.8122845,7.33333333 14.5678761,7.33333333 L14.5678761,7.33333333 L7.4321239,7.33333333 C7.18771549,7.33333333 6.98958333,7.12813051 6.98958333,6.875 C6.98958333,6.62186949 7.18771549,6.41666667 7.4321239,6.41666667 L7.4321239,6.41666667 Z'></path>\n </g>\n </svg>\n `;\n}\n\nexport function MissingWordSvg(): string {\n return `\n <svg viewBox='0 0 24 24'>\n <g transform='translate(2.000000, 2.000000)'>\n <g transform='translate(3.500000, 2.000000)'>\n <path d='M10.78125,7.53125 C11.0285625,7.53125 11.2715937,7.59621875 11.4840312,7.71909375 C11.7963125,7.89971875 12.1875,7.6735625 12.1875,7.31334375 L12.1875,3.3125 C12.1875,3.053625 11.977625,2.84375 11.71875,2.84375 L8.38675,2.84375 C8.42015625,2.680125 8.4375,2.51184375 8.4375,2.34375 C8.4375,1.05140625 7.38609375,0 6.09375,0 C4.80140625,0 3.75,1.05140625 3.75,2.34375 C3.75,2.51184375 3.76734375,2.680125 3.80075,2.84375 L0.46875,2.84375 C0.209875,2.84375 0,3.053625 0,3.3125 L0,7.31334375 C0,7.674125 0.391625,7.899375 0.70346875,7.71909375 C0.91590625,7.59621875 1.1589375,7.53125 1.40625,7.53125 C2.18165625,7.53125 2.8125,8.16209375 2.8125,8.9375 C2.8125,9.71290625 2.18165625,10.34375 1.40625,10.34375 C1.1589375,10.34375 0.91590625,10.2787812 0.70346875,10.1559062 C0.3911875,9.9753125 0,10.2013437 0,10.5616563 L0,15.53125 C0,15.790125 0.209875,16 0.46875,16 L4.46959375,16 C4.8303125,16 5.05578125,15.608375 4.8753125,15.2965312 C4.7524375,15.0840937 4.6875,14.8410938 4.6875,14.59375 C4.6875,13.8183438 5.31834375,13.1875 6.09375,13.1875 C6.86915625,13.1875 7.5,13.8183438 7.5,14.59375 C7.5,14.8410938 7.4350625,15.0840937 7.31215625,15.2965312 C7.13146875,15.6087812 7.3576875,16 7.717875,16 L11.71875,16 C11.977625,16 12.1875,15.790125 12.1875,15.53125 L12.1875,10.5616563 C12.1875,10.2009375 11.7959375,9.97553125 11.4840312,10.1559063 C11.2715937,10.2787812 11.0285625,10.34375 10.78125,10.34375 C10.0058438,10.34375 9.375,9.71290625 9.375,8.9375 C9.375,8.16209375 10.0058438,7.53125 10.78125,7.53125 Z M10.78125,11.28125 C10.9393125,11.28125 11.096375,11.2652812 11.25,11.234 L11.25,15.0625 L8.39021875,15.0625 C8.42153125,14.9088438 8.4375,14.7518125 8.4375,14.59375 C8.4375,13.3014062 7.38609375,12.25 6.09375,12.25 C4.80140625,12.25 3.75,13.3014062 3.75,14.59375 C3.75,14.7518125 3.76596875,14.9088438 3.79728125,15.0625 L0.9375,15.0625 L0.9375,11.234 C1.091125,11.2652812 1.2481875,11.28125 1.40625,11.28125 C2.69859375,11.28125 3.75,10.2298438 3.75,8.9375 C3.75,7.64515625 2.69859375,6.59375 1.40625,6.59375 C1.2481875,6.59375 1.091125,6.60971875 0.9375,6.641 L0.9375,3.78125 L4.46959375,3.78125 C4.8303125,3.78125 5.05578125,3.389625 4.8753125,3.07778125 C4.75596875,2.87140625 4.6875,2.603875 4.6875,2.34375 C4.6875,1.56834375 5.31834375,0.9375 6.09375,0.9375 C6.86915625,0.9375 7.5,1.56834375 7.5,2.34375 C7.5,2.603875 7.43153125,2.87140625 7.31215625,3.07778125 C7.13146875,3.39003125 7.3576875,3.78125 7.717875,3.78125 L11.25,3.78125 L11.25,6.641 C11.096375,6.60971875 10.9393125,6.59375 10.78125,6.59375 C9.48890625,6.59375 8.4375,7.64515625 8.4375,8.9375 C8.4375,10.2298438 9.48890625,11.28125 10.78125,11.28125 Z'></path>\n </g>\n </g>\n </svg>\n `;\n}\n\nexport function MultipleChoiceSvg(): string {\n return `\n <svg viewBox='0 0 24 24'>\n <g transform='translate(1.000000, 1.000000)'>\n <path d='M15.125,3.66666667 C16.8969136,3.66666667 18.3333333,5.10308643 18.3333333,6.875 L18.3333333,15.125 C18.3333333,16.8969136 16.8969136,18.3333333 15.125,18.3333333 L6.875,18.3333333 C5.10308643,18.3333333 3.66666667,16.8969136 3.66666667,15.125 L3.66666667,6.875 C3.66666667,5.10308643 5.10308643,3.66666667 6.875,3.66666667 L15.125,3.66666667 Z M15.125,4.58333333 L6.875,4.58333333 C5.60934745,4.58333333 4.58333333,5.60934745 4.58333333,6.875 L4.58333333,15.125 C4.58333333,16.3906526 5.60934745,17.4166667 6.875,17.4166667 L15.125,17.4166667 C16.3906526,17.4166667 17.4166667,16.3906526 17.4166667,15.125 L17.4166667,6.875 C17.4166667,5.60934745 16.3906526,4.58333333 15.125,4.58333333 Z M7.33333333,13.2916667 C7.83959435,13.2916667 8.25,13.7020723 8.25,14.2083333 C8.25,14.7145944 7.83959435,15.125 7.33333333,15.125 C6.82707231,15.125 6.41666667,14.7145944 6.41666667,14.2083333 C6.41666667,13.7020723 6.82707231,13.2916667 7.33333333,13.2916667 Z M15.0349223,13.75 C15.2880528,13.75 15.4932556,13.9552028 15.4932556,14.2083333 C15.4932556,14.4614638 15.2880528,14.6666667 15.0349223,14.6666667 L9.625,14.6666667 C9.37186949,14.6666667 9.16666667,14.4614638 9.16666667,14.2083333 C9.16666667,13.9552028 9.37186949,13.75 9.625,13.75 L15.0349223,13.75 Z M7.33333333,10.0833333 C7.83959435,10.0833333 8.25,10.493739 8.25,11 C8.25,11.506261 7.83959435,11.9166667 7.33333333,11.9166667 C6.82707231,11.9166667 6.41666667,11.506261 6.41666667,11 C6.41666667,10.493739 6.82707231,10.0833333 7.33333333,10.0833333 Z M15.125,10.5416667 C15.3781305,10.5416667 15.5833333,10.7468695 15.5833333,11 C15.5833333,11.2531305 15.3781305,11.4583333 15.125,11.4583333 L9.625,11.4583333 C9.37186949,11.4583333 9.16666667,11.2531305 9.16666667,11 C9.16666667,10.7468695 9.37186949,10.5416667 9.625,10.5416667 L15.125,10.5416667 Z M7.33333333,6.875 C7.83959435,6.875 8.25,7.28540565 8.25,7.79166667 C8.25,8.29792769 7.83959435,8.70833333 7.33333333,8.70833333 C6.82707231,8.70833333 6.41666667,8.29792769 6.41666667,7.79166667 C6.41666667,7.28540565 6.82707231,6.875 7.33333333,6.875 Z M15.125,7.33333333 C15.3781305,7.33333333 15.5833333,7.53853616 15.5833333,7.79166667 C15.5833333,8.04479718 15.3781305,8.25 15.125,8.25 L9.625,8.25 C9.37186949,8.25 9.16666667,8.04479718 9.16666667,7.79166667 C9.16666667,7.53853616 9.37186949,7.33333333 9.625,7.33333333 L15.125,7.33333333 Z'></path>\n </g>\n </svg>\n `;\n}\n\nexport function ImageSvg(): string {\n return `\n <svg viewBox='0 0 24 24'>\n <path d='M19,5 C19.5522847,5 20,5.44771525 20,6 L20,18 C20,18.5522847 19.5522847,19 19,19 L5,19 C4.44771525,19 4,18.5522847 4,18 L4,6 C4,5.44771525 4.44771525,5 5,5 L19,5 Z M19,6 L5,6 L5,18 L19,18 L19,6 Z M13.5270821,8.72788029 L17.419465,14.7278803 C17.5697525,14.9595444 17.5037838,15.2691774 17.2721197,15.419465 C17.0404556,15.5697525 16.7308226,15.5037838 16.580535,15.2721197 L13.0911139,9.89327406 L11.4091273,12.2874279 C11.2306031,12.5415408 10.866042,12.5731488 10.6464466,12.3535534 L10.0540971,11.7612039 L7.4,15.3 C7.23431458,15.5209139 6.9209139,15.5656854 6.7,15.4 C6.4790861,15.2343146 6.43431458,14.9209139 6.6,14.7 L9.6,10.7 C9.7825648,10.4565803 10.1383987,10.4312919 10.3535534,10.6464466 L10.9328729,11.2257661 L12.6984898,8.71257207 C12.9021272,8.42271292 13.3342903,8.43069712 13.5270821,8.72788029 Z M8,7.5 C8.82842712,7.5 9.5,8.17157288 9.5,9 C9.5,9.82842712 8.82842712,10.5 8,10.5 C7.17157288,10.5 6.5,9.82842712 6.5,9 C6.5,8.17157288 7.17157288,7.5 8,7.5 Z M8,8.5 C7.72385763,8.5 7.5,8.72385763 7.5,9 C7.5,9.27614237 7.72385763,9.5 8,9.5 C8.27614237,9.5 8.5,9.27614237 8.5,9 C8.5,8.72385763 8.27614237,8.5 8,8.5 Z'></path>\n </svg>\n `;\n}\n\nexport function AnnotationSvg(): string {\n return `\n <svg viewBox='0 0 24 24'>\n <path d='M16.8002 15.5516C16.5657 15.84 16.5105 16.2347 16.6569 16.5764L17.145 17.7153L15.6723 17.0841C15.4046 16.9694 15.1 16.9771 14.8384 17.1053L14.756 17.1457C13.9034 17.5634 12.9645 17.7835 11.9918 17.7835C8.51692 17.7835 5.7 14.9666 5.7 11.4918C5.7 8.01692 8.51692 5.2 11.9918 5.2C15.4666 5.2 18.2835 8.01692 18.2835 11.4918C18.2835 12.958 17.7819 14.3442 16.8765 15.4578L16.8002 15.5516ZM17.1319 19.0152C17.9616 19.3708 18.8005 18.5319 18.4449 17.7021L17.8075 16.2148C18.8554 14.926 19.4835 13.2823 19.4835 11.4918C19.4835 7.35418 16.1294 4 11.9918 4C7.85418 4 4.5 7.35418 4.5 11.4918C4.5 15.6294 7.85418 18.9835 11.9918 18.9835C13.173 18.9835 14.2903 18.7102 15.284 18.2233L17.1319 19.0152Z' />\n </svg>\n `;\n}\n\nexport function IllustrationSvg(): string {\n return `\n <svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path fill-rule='evenodd' clip-rule='evenodd' d='M18.2411 13.7881C18.2887 13.5157 18.0395 13.2465 17.6953 13.3346C17.3344 13.4271 16.9508 13.4506 16.5627 13.3938C15.8185 14.404 15.232 15.0693 14.7556 15.4771C14.9397 15.8591 14.9223 16.3164 14.7953 16.7237C14.663 17.148 14.3965 17.5746 14.004 17.9197C13.1974 18.6288 11.9124 18.9538 10.252 18.3555L9.6361 18.1336L10.8248 16.4403C10.8536 16.3994 10.895 16.2797 10.948 15.9967C10.9568 15.9502 10.9658 15.8998 10.9752 15.8466L10.9753 15.846L10.9754 15.8459L10.9754 15.8459C11.0141 15.6287 11.0613 15.3639 11.1335 15.1223C11.2242 14.8188 11.3771 14.4637 11.6835 14.2095C11.9817 13.9622 12.3608 13.8619 12.8023 13.9024C13.0571 13.2864 13.5182 12.476 14.2494 11.3987L14.2357 11.357C14.2007 11.2488 14.1511 11.0868 14.119 10.8858C14.0536 10.4764 14.0643 9.9266 14.3604 9.29657C14.4494 9.10715 14.5146 8.91445 14.5573 8.72168C14.8536 7.38674 14.077 6.0484 12.7163 5.76998C12.6531 5.75701 12.5892 5.74486 12.5246 5.73347C8.70188 5.05944 5.05659 7.61193 4.38254 11.4346C3.70848 15.2574 6.26101 18.9027 10.0837 19.5768C13.9064 20.2508 17.5518 17.6983 18.2258 13.8756L18.2411 13.7881ZM15.8626 12.6572C15.8947 12.5723 15.9481 12.5005 16.0149 12.4463C16.091 12.34 16.1692 12.2296 16.2493 12.1152C17.2716 10.6552 18.1315 9.27136 18.6754 8.22122C18.8855 7.81559 19.042 7.47194 19.1431 7.19994C18.9065 7.38016 18.6161 7.63896 18.2839 7.97168C17.4465 8.81052 16.4034 10.0589 15.3866 11.5111C14.5179 12.7517 14.0214 13.6064 13.7659 14.1913L14.285 14.5548C14.6757 14.1827 15.1887 13.5831 15.8626 12.6572ZM17.4471 12.3659C17.3881 12.381 17.3282 12.3933 17.2674 12.4027C18.2189 11.0249 19.029 9.71286 19.5633 8.68114C19.8471 8.13334 20.0641 7.64372 20.1787 7.25589C20.2351 7.06519 20.2765 6.8674 20.2745 6.68479C20.2725 6.51587 20.2295 6.23216 19.9736 6.05296C19.7244 5.87848 19.4469 5.92652 19.2885 5.97523C19.1139 6.02893 18.9362 6.12717 18.7674 6.23956C18.4249 6.46764 18.0169 6.82379 17.5762 7.26518C16.8442 7.99842 15.9806 9.00929 15.1147 10.1778C15.1398 10.0455 15.1836 9.90125 15.2542 9.74611L15.2654 9.72185C16.2163 7.69819 15.1756 5.25268 12.9173 4.7904C12.8445 4.77544 12.7715 4.76158 12.6983 4.74868C8.33172 3.97872 4.16769 6.89438 3.39773 11.261C2.62777 15.6276 5.54347 19.7916 9.91006 20.5616C14.2767 21.3315 18.4407 18.4159 19.2106 14.0492L19.2262 13.9606C19.4123 12.8961 18.4178 12.1172 17.4471 12.3659ZM11.6433 17.0149C11.8176 16.7665 11.8855 16.4229 11.9309 16.1811C11.9432 16.1158 11.9545 16.0525 11.9655 15.9909C12.0033 15.7804 12.0374 15.5901 12.0916 15.4086C12.161 15.1765 12.2405 15.0468 12.3219 14.9792C12.3717 14.9379 12.4608 14.8871 12.649 14.894L13.8774 15.9774C13.9004 16.0738 13.9028 16.2267 13.8406 16.426C13.7637 16.6728 13.6001 16.9432 13.3438 17.1686C12.934 17.5288 12.2479 17.8037 11.2342 17.5976L11.6433 17.0149ZM7 14.5C7 14.7761 7.22386 15 7.5 15C7.77614 15 8 14.7761 8 14.5C8 14.2239 7.77614 14 7.5 14C7.22386 14 7 14.2239 7 14.5ZM9 14.5C9 15.3284 8.32843 16 7.5 16C6.67157 16 6 15.3284 6 14.5C6 13.6716 6.67157 13 7.5 13C8.32843 13 9 13.6716 9 14.5ZM11.6 8.5C11.6 8.77614 11.3761 9 11.1 9C10.8238 9 10.6 8.77614 10.6 8.5C10.6 8.22386 10.8238 8 11.1 8C11.3761 8 11.6 8.22386 11.6 8.5ZM9.59998 8.5C9.59998 9.32843 10.2715 10 11.1 10C11.9284 10 12.6 9.32843 12.6 8.5C12.6 7.67157 11.9284 7 11.1 7C10.2715 7 9.59998 7.67157 9.59998 8.5ZM7.70007 11C7.42393 11 7.20007 10.7761 7.20007 10.5C7.20007 10.2239 7.42393 10 7.70007 10C7.97622 10 8.20007 10.2239 8.20007 10.5C8.20007 10.7761 7.97622 11 7.70007 11ZM7.70007 12C8.5285 12 9.20007 11.3284 9.20007 10.5C9.20007 9.67157 8.5285 9 7.70007 9C6.87165 9 6.20007 9.67157 6.20007 10.5C6.20007 11.3284 6.87165 12 7.70007 12Z' />\n </svg>\n `;\n}","import React from 'react';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AnnotationSvg, IllustrationSvg, ImageSvg, MissingWordSvg, MultipleChoiceSvg, ShortAnswerSvg, TrueOrFalseSvg } from 'libs/shared/components/svgs/interaction-types/InteractionTypes';\nimport { InteractionTypeId } from 'libs/shared/interfaces';\n\nconst internalGetPhrase = LanguageService.encloseNamespace('shared.interactionTypes');\nconst getPhrase = (phrase: string, fallback: string) => {\n if (!LanguageService.isInitialised())\n return fallback;\n return internalGetPhrase(phrase);\n};\n\ninterface InteractionTypeInfo {\n name: string;\n prompt?: string;\n bgClassName: string;\n Svg: React.FC;\n svgEl?: string\n /**\n * Used for anlaytics\n */\n typeName: string;\n}\n\n\nfunction parseSvgElement(svg: string): React.ReactElement {\n return (\n <div dangerouslySetInnerHTML={{ __html: svg }}></div>\n );\n}\n\nconst interactionTypeDefaults = {\n [InteractionTypeId.Annotation](): InteractionTypeInfo {\n return {\n name: getPhrase('annotationName', 'Annotation'),\n bgClassName: 'bg-pink',\n Svg: () => parseSvgElement(AnnotationSvg()),\n svgEl: AnnotationSvg(),\n typeName: 'annotation'\n };\n },\n [InteractionTypeId.Image](): InteractionTypeInfo {\n return {\n name: getPhrase('imageName', 'Image'),\n bgClassName: 'bg-orange',\n Svg: () => parseSvgElement(ImageSvg()),\n svgEl: ImageSvg(),\n typeName: 'image'\n };\n },\n [InteractionTypeId.MissingWord](): InteractionTypeInfo {\n return {\n name: getPhrase('missingWordName', 'Fill in the blank'),\n prompt: getPhrase('missingWordPrompt', 'Fill in the blank by typing the missing word(s)'),\n bgClassName: 'bg-teal',\n Svg: () => parseSvgElement(MissingWordSvg()),\n svgEl: MissingWordSvg(),\n typeName: 'missing-word'\n };\n },\n [InteractionTypeId.MultipleChoice](): InteractionTypeInfo {\n return {\n name: getPhrase('multipleChoiceName', 'Multiple choice'),\n prompt: getPhrase('multipleChoicePrompt', 'Choose the correct answer(s)'),\n bgClassName: 'bg-blue',\n Svg: () => parseSvgElement(MultipleChoiceSvg()),\n svgEl: MultipleChoiceSvg(),\n typeName: 'multiple-choice'\n };\n },\n [InteractionTypeId.ShortAnswer](): InteractionTypeInfo {\n return {\n name: getPhrase('shortAnswerName', 'Short answer'),\n prompt: getPhrase('shortAnswerPrompt', 'Type in your answer to the question'),\n bgClassName: 'bg-green',\n Svg: () => parseSvgElement(ShortAnswerSvg()),\n svgEl: ShortAnswerSvg(),\n typeName: 'short-answer'\n };\n },\n [InteractionTypeId.TrueOrFalse](): InteractionTypeInfo {\n return {\n name: getPhrase('trueOrFalseName', 'True or false'),\n prompt: getPhrase('trueOrFalsePrompt', 'Choose the correct answer'),\n bgClassName: 'bg-purple',\n Svg: () => parseSvgElement(TrueOrFalseSvg()),\n svgEl: TrueOrFalseSvg(),\n typeName: 'true-or-false'\n };\n },\n [InteractionTypeId.Illustration](): InteractionTypeInfo {\n return {\n name: getPhrase('illustrationName', 'Illustrate'),\n prompt: getPhrase('illustrationPrompt', 'Draw the answer'),\n bgClassName: 'bg-indigo',\n Svg: () => parseSvgElement(IllustrationSvg()),\n svgEl: IllustrationSvg(),\n typeName: 'illustration'\n };\n }\n};\n\nexport const InteractionTypeHelper = {\n getTypeInfo: (typeId: InteractionTypeId) => {\n const func = interactionTypeDefaults[typeId];\n\n if (!func) {\n Core.ErrorHelper.throw(new DevError(`No type info defined for typeId: ${typeId}`));\n return;\n }\n\n return func();\n }\n};","function stripTag(text: string, tag: string, newLine: boolean) {\n return text\n .replace(new RegExp(`<${tag}.*?>`, 'gi'), '')\n .replace(new RegExp(`</${tag}>`, 'gi'), newLine ? '<br>' : '');\n}\n\nfunction stripTags(text: string, tags: string[], newLine: boolean = false): string {\n if (!text || !tags.length)\n return text;\n\n return tags.reduce((text, tag) => stripTag(text, tag, newLine), text);\n}\n\nexport function formatAnnotationText(text: string): string {\n if (!text) return;\n\n text = stripTags(text, [ 'ul', 'ol', 'b', 'i', 'u', 'old', 'em', 'strong', 'sup', 'sub', 'a', 'span' ]);\n text = stripTags(text, [ 'li', 'p', 'div' ], true);\n\n return text.split('<br>')?.filter(t => !!t)[0]?.trim() || 'Annotation';\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Interaction, InteractionTypeId } from 'libs/shared/interfaces';\nimport { InteractionTypeHelper } from 'libs/shared/utils/interaction-type-helper/InteractionTypeHelper';\n\nimport { formatAnnotationText } from './formatAnnotationText';\n\ninterface InteractionLabelProps {\n interaction: Interaction;\n smallIcon?: boolean;\n showIcon?: boolean;\n showTypeName?: boolean;\n showQuestion?: boolean;\n iconClassName?: string;\n typeNameClassName?: string;\n questionClassName?: string;\n containerClassName?: string;\n questionNumber?: string | number;\n appLink?: Core.AppLink;\n onClick?: () => void;\n}\n\nInteractionLabel.defaultProps = {\n showIcon: true,\n showQuestion: true\n};\n\nexport function InteractionLabel(props: InteractionLabelProps): JSX.Element {\n const { name, bgClassName, Svg } = InteractionTypeHelper.getTypeInfo(props.interaction.typeId);\n\n const questionNumber = props.questionNumber ? `${props.questionNumber}. ` : '';\n\n let iconClassName = `interaction-type-icon flex-shrink-0 ${bgClassName}`;\n\n if (props.smallIcon)\n iconClassName += ' sm';\n\n if (props.showQuestion || props.showTypeName)\n iconClassName += props.smallIcon\n ? ' me-1'\n : ' me-2';\n\n if (props.iconClassName)\n iconClassName += ` ${props.iconClassName}`;\n\n return (\n <span className={props.containerClassName}>\n {!!props.showIcon &&\n <span className={iconClassName}>\n <Svg />\n </span>\n }\n <AppLink appLink={props.appLink} onClick={props.onClick}>\n {!!props.showTypeName &&\n <span className={props.typeNameClassName}><strong>{questionNumber}{name}</strong></span>\n }\n {!!props.showQuestion &&\n <span className={props.questionClassName}>\n {props.interaction.typeId === InteractionTypeId.Annotation\n ? <span dangerouslySetInnerHTML={{\n __html: formatAnnotationText(props.interaction.data.annotation)\n }} />\n : props.interaction.name\n }\n </span>\n }\n </AppLink>\n </span>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\nimport { ExperimentalInteractionTypes, Interaction, InteractionTypeId, Timepoint } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.interactiveItem';\n\nfunction useGetQuestionDisplayLimit(totalToDisplay: number): number {\n const mediaQuery = useGetMediaQueryString();\n\n if (typeof totalToDisplay === 'number')\n return totalToDisplay;\n \n if (mediaQuery === MediaQueryStrings.XS)\n return 3;\n\n if (mediaQuery === MediaQueryStrings.SM)\n return 1;\n\n if (mediaQuery === MediaQueryStrings.MD || mediaQuery === MediaQueryStrings.LG)\n return 2;\n\n return 3;\n}\n\ninterface InteractiveItemQuestionsProps {\n timepoints: Timepoint[];\n appLink?: Core.AppLink;\n onClickAppLink?: () => void;\n previewAppLink: Core.AppLink;\n totalToDisplay?: number;\n}\n\nexport function InteractiveItemQuestions(props: InteractiveItemQuestionsProps): JSX.Element {\n const questionDisplayLimit = useGetQuestionDisplayLimit(props.totalToDisplay);\n\n if (!props.timepoints?.length)\n return <></>;\n\n const interactionsToShow: Interaction[] = [];\n let interactionCount: number = 0;\n\n props.timepoints.forEach(timepoint => {\n timepoint?.interactions.forEach(interaction => {\n if (ExperimentalInteractionTypes[interaction.typeId])\n return;\n\n if (interactionCount >= questionDisplayLimit)\n return;\n\n interactionCount++;\n\n // When displaying an annotation interaction, we display the \"data\" field, which may be a JSON string\n // For other interactions we display the \"name\" field, so we don't need to parse those.\n const interactionData = interaction.typeId === InteractionTypeId.Annotation && typeof(interaction.data) === 'string'\n ? JSON.parse(interaction.data)\n : interaction.data;\n\n const interactionToShow = {\n ...interaction,\n data: {\n ...interactionData,\n // Add interactive time to applink and convert to seconds\n appLink: props.appLink && { ...props.appLink, params: { t: Math.floor(timepoint.visibleAt / 1000) } }\n }\n };\n \n interactionsToShow.push(interactionToShow);\n });\n });\n \n const totalInteractions = props.timepoints.reduce((acc, timepoint) => {\n const totalInteractions = timepoint?.interactions?.length ?? 0;\n acc += totalInteractions;\n\n return acc;\n }, 0);\n\n if (!interactionsToShow.length)\n return <></>;\n\n return (\n <>\n {interactionsToShow.map((interaction, i) => {\n return (\n <div key={i} className='d-flex align-items-center mb-1'>\n <div className='clamp-1'>\n <InteractionLabel\n interaction={interaction}\n appLink={interaction.data?.appLink}\n onClick={interaction.data?.appLink ? props.onClickAppLink : null}\n smallIcon\n />\n </div>\n </div>\n );\n })}\n <div className='mb-1 text-link'>\n <AppLink\n className='cursor-pointer hover-text-underline'\n appLink={props.previewAppLink}\n onClick={props.onClickAppLink}\n >\n <Text\n namespace={namespace}\n phrase='previewQuestions'\n options={{\n questionsShown: interactionsToShow.length,\n smartCount: totalInteractions\n }}\n />\n </AppLink>\n </div>\n </>\n );\n}","import * as React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BaseVideoItemProps } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoItemDescription } from 'libs/shared/components/video-list/components/video-item-description/VideoItemDescription';\nimport { VideoItemLeftContent } from 'libs/shared/components/video-list/components/video-item-left-content/VideoItemLeftContent';\nimport { VideoItemRestrictionBadge } from 'libs/shared/components/video-list/components/video-item-restriction-badge/VideoItemRestrictionBadge';\nimport { VideoItemTitle } from 'libs/shared/components/video-list/components/video-item-title/VideoItemTitle';\nimport { VideoItemTopRight } from 'libs/shared/components/video-list/components/video-item-top-right/VideoItemTopRight';\nimport { InteractiveItemQuestions } from 'libs/shared/components/video-list/interactive-item/InteractiveItemQuestions';\nimport { SortableVideoListContext } from 'libs/shared/components/video-list/VideoList';\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useHover } from 'libs/shared/hooks/UseHover';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { InteractiveMetadata } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nexport interface InteractiveItemProps extends BaseVideoItemProps<InteractiveMetadata> {\n getPreviewQuestionsAppLink: (interactive: InteractiveMetadata) => Core.AppLink;\n}\n\nexport const InteractiveItem = React.forwardRef((props: InteractiveItemProps, ref: React.LegacyRef<HTMLDivElement>) => {\n const breakpoints = useBreakpoints();\n const [ hoverRef, hovered ] = useHover<HTMLDivElement>();\n\n const size = VideoListHelper.getSize(breakpoints, props.size);\n const isSmall = size === 'sm';\n\n const { isSortable } = React.useContext(SortableVideoListContext);\n\n const mergedAudience = useMergeAudiences(props.video.subjectPresentationAudiences?.data, props.presentationAudiences);\n\n const showDragHandle = isSortable && !breakpoints.xs && (hovered || typeof props.index === 'undefined' || !props.showIndexes);\n const showIndexes = (props.showIndexes && !showDragHandle) && !breakpoints.xs;\n const hasIconOrIndex = (showDragHandle || props.showIndexes) && !breakpoints.xs;\n\n const appLink = props.getVideoAppLink(props.video, {});\n const analyticsProps = {\n analyticsData: props.analyticsData,\n analyticsOptions: {\n entity: EntityType.Interactive,\n location: LocationContext.InteractiveListItem\n }\n };\n\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n return (\n <div ref={hoverRef} className='w-100'>\n <div className='row g-0 py-2' ref={ref} style={props.style}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-2` : 'mb-1 px-2'}`}>\n <Row>\n <VideoItemLeftContent\n index={props.index}\n showDragHandle={showDragHandle}\n showIndexes={showIndexes}\n dragHandleIcon={props.dragHandleIcon}\n dragHandleIconSize={props.dragHandleIconSize}\n dragAttributes={props.dragAttributes}\n dragListeners={props.dragListeners}\n />\n \n <Col xs={VideoListHelper.getThumbnailColSize(hasIconOrIndex)}>\n <VideoThumbnail\n {...analyticsProps}\n video={props.video}\n appLink={appLink}\n audience={mergedAudience}\n imageOptions={{ size: ImageSize.Medium }}\n textPosition={ThumbnailTextPosition.Independent}\n type='static'\n hideDuration={isSmall}\n commonVideoProps={{\n ...props.commonVideoProps,\n subTextType: 'none'\n }}\n />\n </Col>\n </Row>\n </Col>\n\n <Col {...VideoListHelper.getDetailsColumns()} className={`position-relative ${isSmall ? 'pb-2' : 'px-2'}`}>\n <div className='d-flex justify-content-between'>\n <VideoItemTitle\n video={props.video}\n appLink={appLink}\n size={size}\n yearGroups={props.commonVideoProps.yearGroups}\n showPadlock={!props.commonVideoProps.hasStudentExperience && !props.commonVideoProps.hasGuestExperience}\n linkClassName='flex-grow-1'\n {...analyticsProps}\n />\n <VideoItemTopRight\n {...analyticsProps}\n video={props.video}\n showSignIn={props.showSignIn}\n signInAppLink={props.getSignInAppLink?.(appLink)}\n />\n </div>\n\n {canNavigate ? (\n <div className='pt-sm-1 pt-md-0'>\n <InteractiveItemQuestions\n timepoints={props.video._timepoints?.value}\n appLink={appLink}\n previewAppLink={props.getPreviewQuestionsAppLink(props.video)}\n />\n </div>\n ) : (\n <VideoItemDescription\n video={props.video}\n showSignIn={props.showSignIn}\n hasStudentExperience={props.commonVideoProps.hasStudentExperience}\n hasGuestExperience={props.commonVideoProps.hasGuestExperience}\n />\n )}\n\n {!props.commonVideoProps.hasStudentExperience && !props.commonVideoProps.hasGuestExperience && (\n <VideoItemRestrictionBadge video={props.video} yearGroups={props.commonVideoProps.yearGroups}/>\n )}\n </Col>\n </div>\n </div>\n );\n});\n\ntype SortableInteractiveItemProps = InteractiveItemProps & {\n index: number;\n}\n\nexport const SortableInteractiveItem = (props: SortableInteractiveItemProps) => {\n return (\n <SortableItemWrapper id={props.video.id} childComponent={InteractiveItem} childProps={props} />\n );\n};","import * as React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BaseVideoItemProps } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoItemGuidance } from 'libs/shared/components/video-list/components/video-guidance/VideoItemGuidance';\nimport { VideoItemDescription } from 'libs/shared/components/video-list/components/video-item-description/VideoItemDescription';\nimport { VideoItemLeftContent } from 'libs/shared/components/video-list/components/video-item-left-content/VideoItemLeftContent';\nimport { VideoItemRestrictionBadge } from 'libs/shared/components/video-list/components/video-item-restriction-badge/VideoItemRestrictionBadge';\nimport { VideoItemTitle } from 'libs/shared/components/video-list/components/video-item-title/VideoItemTitle';\nimport { VideoItemTopRight } from 'libs/shared/components/video-list/components/video-item-top-right/VideoItemTopRight';\nimport { SortableVideoListContext } from 'libs/shared/components/video-list/VideoList';\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useHover } from 'libs/shared/hooks/UseHover';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { HandleSvg } from 'libs/shared/images/svg/objects/HandleSvg';\nimport { Video } from 'libs/shared/interfaces';\n\nimport styles from './video-item.module.scss';\n\nexport interface VideoItemProps extends BaseVideoItemProps<Video> {}\n\nexport const VideoItem = React.forwardRef((props: VideoItemProps, ref: React.LegacyRef<HTMLDivElement>) => {\n const breakpoints = useBreakpoints();\n const [ hoverRef, hovered ] = useHover<HTMLDivElement>();\n\n const size = VideoListHelper.getSize(breakpoints, props.size);\n\n const isSmall = size === 'sm';\n\n const { isSortable } = React.useContext(SortableVideoListContext);\n\n const videoAudiences = props.video?.subjectPresentationAudiences?.data;\n const mergedAudience = useMergeAudiences(videoAudiences, props.presentationAudiences);\n\n const showDragHandle = isSortable && !breakpoints.xs && (hovered || typeof props.index === 'undefined' || !props.showIndexes);\n const showIndexes = (props.showIndexes && !showDragHandle) && !breakpoints.xs;\n const hasIconOrIndex = (showDragHandle || props.showIndexes) && !breakpoints.xs;\n\n const appLink = props.getVideoAppLink?.(props.video, {});\n\n function getSubTextAppLink(): Core.AppLink {\n return props.commonVideoProps.getSubTextAppLink?.(props.video);\n }\n\n const subTextAppLink = getSubTextAppLink();\n const analyticsProps = {\n analyticsData: props.analyticsData,\n analyticsOptions: props.analyticsOptions ?? {\n entity: EntityType.Video,\n location: LocationContext.VideoListItem\n }\n };\n\n return (\n <div ref={hoverRef} className='w-100'>\n <div className={`row g-0 ${isSmall ? '' : 'py-2'}`} style={props.style} ref={ref}>\n <Col\n {...VideoListHelper.getThumbnailColumns()}\n className={`flex-column align-items-flex-start mb-1 mb-sm-0 pb-sm-2 pe-sm-2 px-md-2 pb-md-0`}\n >\n <Row>\n <VideoItemLeftContent\n index={props.index}\n showDragHandle={showDragHandle}\n showIndexes={showIndexes}\n dragHandleIcon={props.dragHandleIcon}\n dragHandleIconSize={props.dragHandleIconSize}\n dragAttributes={props.dragAttributes}\n dragListeners={props.dragListeners}\n />\n \n <Col xs={VideoListHelper.getThumbnailColSize(hasIconOrIndex)}>\n <VideoThumbnail\n {...analyticsProps}\n video={props.video}\n appLink={appLink}\n audience={mergedAudience}\n imageOptions={{ size: hasIconOrIndex ? ImageSize.Small : ImageSize.Medium }}\n textPosition={ThumbnailTextPosition.Independent}\n type='static'\n hideRating={false}\n commonVideoProps={props.commonVideoProps}\n />\n </Col>\n </Row>\n </Col>\n <Col\n {...VideoListHelper.getDetailsColumns()}\n className={`d-flex position-relative flex-column px-0 px-md-2 pb-0 pb-sm-2 pb-md-0 justify-content-md-between`}\n >\n <div>\n <div className='d-flex justify-content-between'>\n <div className='flex-grow-1'>\n <VideoSubText\n {...analyticsProps}\n video={props.video}\n appLink={subTextAppLink}\n type={props.commonVideoProps.subTextType}\n />\n <VideoItemTitle\n {...analyticsProps}\n video={props.video}\n appLink={appLink}\n size={size}\n yearGroups={props.commonVideoProps.yearGroups}\n showNewVideoIndicator={props.commonVideoProps.showNewVideoIndicator}\n showPadlock={!props.commonVideoProps.hasStudentExperience\n && !props.commonVideoProps.hasGuestExperience}\n titleClassName='mb-0'\n />\n </div>\n <VideoItemTopRight\n {...analyticsProps}\n video={props.video}\n showSignIn={props.showSignIn}\n signInAppLink={props.getSignInAppLink?.(appLink)}\n />\n </div>\n\n {!isSmall && (\n <VideoItemDescription\n video={props.video}\n showSignIn={props.showSignIn}\n hasStudentExperience={props.commonVideoProps.hasStudentExperience}\n hasGuestExperience={props.commonVideoProps.hasGuestExperience}\n />\n )}\n\n {!props.commonVideoProps.hasStudentExperience && !props.commonVideoProps.hasGuestExperience && (\n <VideoItemRestrictionBadge video={props.video} yearGroups={props.commonVideoProps.yearGroups}/>\n )}\n </div>\n\n {!props.hideVideoGuidance && (\n <VideoItemGuidance\n video={props.video}\n getVideoAppLink={props.getVideoAppLink}\n commonVideoProps={props.commonVideoProps}\n containerClassName={`d-flex justify-content-start align-items-center pt-sm-1 gap-1`}\n responsiveClassName={styles.responsiveGuidance}\n {...analyticsProps}\n />\n )}\n </Col>\n </div>\n </div>\n );\n});\n\nVideoItem.defaultProps = {\n dragHandleIcon: HandleSvg,\n dragHandleIconSize: SvgContainerSize.Small,\n size: 'md'\n};\n\ntype SortableVideoItemProps = VideoItemProps & {\n index: number;\n};\n\nexport const SortableVideoItem = (props: SortableVideoItemProps) => {\n return (\n <SortableItemWrapper id={props.video.id} childComponent={VideoItem} childProps={props} />\n );\n};","import * as React from 'react';\nimport { DragEndEvent, DragStartEvent } from '@dnd-kit/core';\n\nimport { Cursors } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { SearchIndices } from 'libs/shared/apps/search/interfaces';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { DragDropMoveWrapper } from 'libs/shared/components/drag-drop-move/DragDropMoveWrapper';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { BulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { InteractiveMetadata, PresentationAudience, VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ClipItem, ClipItemProps, SortableClipItem } from './clip-item/ClipItem';\nimport { InteractiveItem, InteractiveItemProps, SortableInteractiveItem } from './interactive-item/InteractiveItem';\nimport { SortableVideoItem, VideoItem, VideoItemProps } from './video-item/VideoItem';\n\nimport styles from './video-list.module.scss';\n\nconst namespace = 'shared.videoList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype ItemComponent = (props: ClipItemProps | InteractiveItemProps | VideoItemProps) => JSX.Element;\n\nfunction getItemComponent(video: VideoTypes, isSortable: boolean): ItemComponent {\n if (VideoHelper.isClip(video))\n return isSortable ? SortableClipItem : ClipItem;\n\n if (VideoHelper.isInteractive(video))\n return isSortable ? SortableInteractiveItem : InteractiveItem;\n\n return isSortable ? SortableVideoItem : VideoItem;\n}\n\ninterface SortableVideoListContextProps {\n isSortable: boolean;\n currentSortingIndex?: number;\n}\n\nexport const SortableVideoListContext = React.createContext<SortableVideoListContextProps>({\n isSortable: false\n});\n\nexport interface VideoListProps {\n videos: VideoTypes[];\n getVideoAppLink: (video: VideoTypes, options: GetVideoAppLinkOptions) => Core.AppLink;\n getSignInAppLink?: (appLink: Core.AppLink) => Core.AppLink;\n getPreviewQuestionsAppLink?: (interactive: InteractiveMetadata) => Core.AppLink;\n hideVideoGuidance?: boolean;\n cursors?: Cursors;\n dragHandleIcon?: SvgIcon;\n dragHandleIconSize?: SvgContainerSize;\n showSignIn?: boolean;\n showIndexes?: boolean;\n startingPositionIndex?: number;\n canRemovePrivateVideos?: boolean;\n presentationAudiences?: PresentationAudience[];\n allowBulkAction?: boolean;\n getVideosBulkAction?: (items: string[]) => ActionOptions[];\n drag?: boolean;\n typeFilter?: SearchIndices | SearchIndices[];\n checkboxHelper?: BulkCheckboxManager;\n hasPermissions: HasPermissionsFunc;\n showOwner?: boolean;\n getAnalyticsData?: (itemIndex: number) => HashObject;\n analyticsOptions?: AnalyticsOptions;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function VideoList(props: VideoListProps): JSX.Element {\n const { isSortable } = React.useContext(SortableVideoListContext);\n const [ isDragging, setIsDragging ] = React.useState<boolean>(false);\n const { checkboxHelper: CheckboxHelper } = props;\n \n const currentAppLink = Core.AppLinkHelper.getCurrentAppLink();\n\n return (\n <>\n <div className={`position-relative ${styles.videoList}`}>\n \n {props.videos.map((v, idx) => {\n const Component = getItemComponent(v, isSortable);\n \n /**\n * Where we're provided with a starting position index by the parent, \n * we'll use that as the starting position instead of the local index.\n */\n const pagePositionStartingIndex = Number.isInteger(props.startingPositionIndex)\n ? props.startingPositionIndex\n : 0;\n\n const dragData = CheckboxHelper && CheckboxHelper.getSelectedCount() > 1 && CheckboxHelper.isChecked(v.id)\n ? CheckboxHelper.getSelected()\n : v;\n\n const analyticsData = typeof props.getAnalyticsData === 'function'\n ? props.getAnalyticsData(idx)\n : {\n pagePositionIndex: pagePositionStartingIndex + idx\n };\n\n return (\n <DragDropMoveWrapper\n draggable={(props.drag && !isSortable) && ({ id: v.id, data: dragData })}\n dragStyle={styles.dragStyle}\n isDragging={isDragging}\n setIsDragging={setIsDragging}\n key={`${v.id}:${idx}`}\n >\n <div className='d-flex flex-row align-items-center'>\n {props.allowBulkAction && (\n <Checkbox\n className='mx-0 mx-md-2'\n id={v.id}\n ariaLabel={`${getPhrase('ariaBulkAction')}: ${v.name}`}\n onChange={() => CheckboxHelper.onToggleItem(v.id)}\n checked={CheckboxHelper.isChecked(v.id)}\n />\n )}\n <Component\n video={v}\n index={idx}\n getVideoAppLink={props.getVideoAppLink}\n dragHandleIcon={props.dragHandleIcon}\n dragHandleIconSize={props.dragHandleIconSize}\n showSignIn={props.showSignIn}\n getSignInAppLink={props.getSignInAppLink}\n analyticsData={analyticsData}\n hasPermissions={props.hasPermissions}\n canRemovePrivateVideos={props.canRemovePrivateVideos}\n presentationAudiences={props.presentationAudiences}\n showIndexes={props.showIndexes}\n getPreviewQuestionsAppLink={props.getPreviewQuestionsAppLink}\n hideVideoGuidance={props.hideVideoGuidance}\n showOwner={props.showOwner}\n commonVideoProps={props.commonVideoProps}\n analyticsOptions={props.analyticsOptions}\n />\n </div>\n </DragDropMoveWrapper>\n );\n })}\n </div>\n\n {props.cursors &&\n <Pagination appLink={currentAppLink} cursors={props.cursors} />\n }\n </>\n );\n}\n\ninterface SortableVideoListProps extends VideoListProps {\n currentSortingIndex?: number;\n onSortEnd: (event: DragEndEvent) => void;\n onSortStart: (event: DragStartEvent) => void;\n\n}\n\nexport const SortableVideoList = (props: SortableVideoListProps) => {\n const ids = props.videos.map(v => v.id);\n\n const getDragOverlay = (id: string) => {\n const video = props.videos.find(v => v.id === id);\n const Component = getItemComponent(video, true);\n\n return (\n <div className={`bg-white ${styles.sortableVideo}`}>\n <SortableVideoListContext.Provider value={{ isSortable: true }}>\n <Component\n video={video}\n getVideoAppLink={props.getVideoAppLink}\n dragHandleIcon={props.dragHandleIcon}\n dragHandleIconSize={props.dragHandleIconSize}\n showSignIn={props.showSignIn}\n getSignInAppLink={props.getSignInAppLink}\n hasPermissions={props.hasPermissions}\n hideVideoGuidance={props.hideVideoGuidance}\n getPreviewQuestionsAppLink={props.getPreviewQuestionsAppLink}\n commonVideoProps={props.commonVideoProps}\n />\n </SortableVideoListContext.Provider>\n </div>\n );\n };\n\n return (\n <SortableContainerWrapper\n ids={ids}\n getDragOverlay={getDragOverlay}\n onSortEnd={props.onSortEnd}\n onSortStart={props.onSortStart}\n >\n <SortableVideoListContext.Provider value={{ isSortable: true, currentSortingIndex: props.currentSortingIndex }}>\n <VideoList {...props} />\n </SortableVideoListContext.Provider>\n </SortableContainerWrapper>\n );\n};"],"names":["InteractionTypeId","ExperimentalInteractionTypes","ClickViewPlayLogo","jsx","useCombinedRefs","_len","refs","_key","useMemo","node","ref","canUseDOM","isWindow","element","elementString","isNode","getWindow","target","_target$ownerDocument","_target$ownerDocument2","isDocument","Document","isHTMLElement","isSVGElement","getOwnerDocument","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","useEvent","handler","handlerRef","useRef","useCallback","args","useInterval","intervalRef","set","listener","duration","clear","useLatestValue","value","dependencies","valueRef","useLazyMemo","callback","newValue","useNodeRef","onChange","onChangeHandler","setNodeRef","usePrevious","ids","useUniqueId","prefix","id","createAdjustmentFn","modifier","object","adjustments","accumulator","adjustment","entries","key","valueAdjustment","add","subtract","hasViewportRelativeCoordinates","event","isKeyboardEvent","KeyboardEvent","isTouchEvent","TouchEvent","getEventCoordinates","x","y","CSS","transform","scaleX","scaleY","_ref","property","easing","SELECTOR","findFirstFocusableNode","hiddenStyles","HiddenText","React","LiveRegion","announcement","ariaLiveType","visuallyHidden","useAnnouncement","setAnnouncement","useState","DndMonitorContext","createContext","useDndMonitor","registerListener","useContext","useDndMonitorProvider","listeners","type","_listener$type","defaultScreenReaderInstructions","defaultAnnouncements","active","_ref2","over","_ref3","_ref4","Accessibility","announcements","container","hiddenTextDescribedById","screenReaderInstructions","announce","liveRegionId","mounted","setMounted","_ref5","_ref6","markup","createPortal","Action","noop","useSensor","sensor","options","useSensors","sensors","defaultCoordinates","distanceBetween","p1","p2","getRelativeTransformOrigin","rect","eventCoordinates","transformOrigin","sortCollisionsAsc","a","b","sortCollisionsDesc","cornersOfRectangle","left","top","height","width","getFirstCollision","collisions","firstCollision","centerOfRectangle","closestCenter","collisionRect","droppableRects","droppableContainers","centerRect","droppableContainer","distBetween","closestCorners","corners","rectCorners","distances","corner","index","effectiveDistance","getIntersectionRatio","entry","right","bottom","targetArea","entryArea","intersectionArea","intersectionRatio","rectIntersection","adjustScale","rect1","rect2","getRectDelta","createRectAdjustmentFn","acc","getAdjustedRect","parseTransform","transformArray","inverseTransform","parsedTransform","translateX","translateY","w","h","defaultOptions","getClientRect","getComputedStyle","getTransformAgnosticClientRect","getWindowClientRect","isFixed","computedStyle","isScrollable","overflowRegex","getScrollableAncestors","limit","scrollParents","findScrollableAncestors","getFirstScrollableAncestor","firstScrollableAncestor","getScrollableElement","getScrollXCoordinate","getScrollYCoordinate","getScrollCoordinates","Direction","isDocumentScrollingElement","getScrollPosition","scrollingContainer","minScroll","dimensions","maxScroll","isTop","isLeft","isBottom","isRight","defaultThreshold","getScrollDirectionAndSpeed","scrollContainer","scrollContainerRect","acceleration","thresholdPercentage","direction","speed","threshold","getScrollElementRect","innerWidth","innerHeight","getScrollOffsets","scrollableAncestors","getScrollXOffset","getScrollYOffset","scrollIntoViewIfNeeded","measure","properties","Rect","scrollOffsets","axis","keys","getScrollOffset","currentOffsets","scrollOffsetsDeltla","Listeners","_this$target","eventName","_this$target2","getEventListenerTarget","EventTarget","hasExceededDistance","delta","measurement","dx","dy","EventName","preventDefault","stopPropagation","KeyboardCode","defaultKeyboardCodes","defaultKeyboardCoordinateGetter","currentCoordinates","KeyboardSensor","props","activeNode","onStart","context","keyboardCodes","coordinateGetter","scrollBehavior","code","newCoordinates","coordinatesDelta","scrollDelta","scrollElementRect","clampedCoordinates","canScrollX","canScrollY","newScrollCoordinates","canScrollToNewCoordinates","coordinates","onMove","onEnd","onCancel","onActivation","activator","isDistanceConstraint","constraint","isDelayConstraint","AbstractPointerSensor","events","listenerTarget","_getEventCoordinates","activationConstraint","initialCoordinates","_getEventCoordinates2","activated","_this$document$getSel","PointerSensor","events$1","MouseButton","MouseSensor","events$2","TouchSensor","touches","AutoScrollActivator","TraversalOrder","useAutoScroller","canScroll","draggingRect","enabled","interval","order","pointerCoordinates","scrollableAncestorRects","scrollIntent","useScrollIntent","setAutoScrollInterval","clearAutoScrollInterval","scrollSpeed","scrollDirection","scrollContainerRef","autoScroll","scrollLeft","scrollTop","sortedScrollableAncestors","defaultScrollIntent","disabled","previousDelta","previousIntent","useCachedNode","draggableNodes","draggableNode","cachedNode","useCombineActivators","getSyntheticHandler","Sensor","sensorActivators","MeasuringStrategy","MeasuringFrequency","defaultValue","useDroppableMeasuring","containers","dragging","config","containerIdsScheduledForMeasurement","setContainerIdsScheduledForMeasurement","measuringScheduled","frequency","strategy","containersRef","isDisabled","disabledRef","measureDroppableContainers","timeoutId","previousValue","map","useInitialValue","computeFn","useInitialRect","useMutationObserver","handleMutations","mutationObserver","MutationObserver","useResizeObserver","handleResize","resizeObserver","ResizeObserver","defaultMeasure","useRect","fallbackRect","measureRect","useReducer","reducer","records","record","currentRect","newRect","useRectDelta","initialRect","defaultValue$1","useScrollableAncestors","previousNode","ancestors","useScrollOffsets","elements","scrollCoordinates","setScrollCoordinates","prevElements","handleScroll","scrollingElement","previousElements","cleanup","scrollableElement","useScrollOffsetsDelta","initialScrollOffsets","hasScrollOffsets","useSensorSetup","teardownFns","teardown","useSyntheticListeners","useWindowRect","defaultValue$2","useRects","firstElement","windowRect","rects","measureRects","getMeasurableNode","firstChild","useDragOverlayMeasuring","setRect","handleNodeChange","nodeRef","setRef","defaultSensors","defaultData","defaultMeasuringConfiguration","DroppableContainersMap","_super$get","_this$get$node$curren","_this$get","defaultPublicContext","defaultInternalContext","InternalContext","PublicContext","getInitialState","state","action","RestoreFocus","activatorEvent","previousActivatorEvent","previousActiveId","activatorNode","focusableNode","applyModifiers","modifiers","useMeasuringConfiguration","useLayoutShiftScrollCompensation","initialized","rectDelta","ActiveDraggableContext","Status","DndContext","memo","_sensorContext$curren","_dragOverlay$nodeRef$","_dragOverlay$rect","_over$rect","accessibility","children","collisionDetection","measuring","store","dispatch","dispatchMonitorEvent","registerMonitorListener","status","setStatus","isInitialized","activeId","translate","activeRects","_node$data","activeRef","activeSensor","setActiveSensor","setActivatorEvent","latestProps","draggableDescribedById","enabledDroppableContainers","measuringConfiguration","activationCoordinates","autoScrollOptions","getAutoScrollerOptions","initialActiveNodeRect","activeNodeRect","containerNodeRect","sensorContext","overNode","dragOverlay","draggingNode","draggingNodeRect","usesDragOverlay","nodeRectDelta","modifiedTranslate","scrollAdjustment","activeNodeScrollDelta","scrollAdjustedTranslate","overId","setOver","appliedTranslate","instantiateSensor","sensorInstance","onDragStart","unstable_batchedUpdates","createHandler","cancelDrop","bindActivatorToSensorInstantiator","nativeEvent","activeDraggableNode","activationContext","activators","onDragMove","onDragOver","overContainer","publicContext","internalContext","activeSensorDisablesAutoscroll","autoScrollGloballyDisabled","NullContext","defaultRole","ID_PREFIX","useDraggable","data","attributes","ariaDescribedById","role","roleDescription","tabIndex","isDragging","setActivatorNodeRef","dataRef","memoizedAttributes","useDndContext","ID_PREFIX$1","defaultResizeObserverConfig","useDroppable","resizeObserverConfig","previous","resizeObserverConnected","callbackId","resizeObserverDisabled","updateMeasurementsFor","resizeObserverTimeout","newElement","previousElement","AnimationManager","animation","clonedChildren","setClonedChildren","setElement","previousChildren","cloneElement","defaultTransform","NullifiedContextProvider","baseStyles","defaultTransition","PositionedOverlay","forwardRef","as","className","style","transition","scaleAdjustedTransform","styles","defaultDropAnimationSideEffects","originalStyles","defaultKeyframeResolver","initial","final","defaultDropAnimationConfiguration","useDropAnimation","activeDraggable","measurableNode","createDefaultDropAnimation","sideEffects","keyframes","rest","scale","finalTransform","animationKeyframes","firstKeyframe","lastKeyframe","resolve","useKey","DragOverlay","dropAnimationConfig","wrapperElement","zIndex","modifiedTransform","dropAnimation","DragDropMoveWrapper","dragActive","draggableRef","isOver","dropActive","droppableRef","_a","_b","_c","isSelected","buildCursor","appLink","cursorParam","prevHack","currentParams","Pagination","cursors","buttonVariant","onClick","onClickButton","page","ScrollHelper","AnalyticsHelper","LocationContext","EntityType","UserAction","LanguageNamespaceContext","jsxs","AppLink","Text","Button","restrictToVerticalAxis","arrayMove","array","from","to","newArray","getSortedRects","items","isValidIndex","itemsEqual","i","normalizeDisabled","rectSortingStrategy","activeIndex","overIndex","newRects","oldRect","defaultScale$1","verticalListSortingStrategy","_rects$activeIndex","fallbackActiveRect","overIndexRect","itemGap","getItemGap$1","clientRects","previousRect","nextRect","Context","SortableContext","userDefinedItems","disabledProp","containerId","useDragOverlay","item","previousItemsRef","itemsHaveChanged","disableTransforms","contextValue","defaultNewIndexGetter","defaultAnimateLayoutChanges","isSorting","wasDragging","newIndex","previousItems","previousContainerId","transitionProperty","disabledTransition","defaultAttributes","useDerivedTransform","derivedTransform","setDerivedtransform","previousIndex","current","useSortable","animateLayoutChanges","userDefinedAttributes","localDisabled","customData","getNewIndex","localStrategy","globalDisabled","sortedRects","globalStrategy","normalizeLocalDisabled","itemsAfterCurrentSortable","setDroppableNodeRef","setDraggableNodeRef","displaceItem","shouldDisplaceDragSource","dragSourceDisplacement","shouldAnimateLayoutChanges","getTransition","_localDisabled$dragga","_localDisabled$droppa","hasSortableData","directions","sortableKeyboardCoordinates","filteredContainers","closestId","activeDroppable","newDroppable","newNode","hasDifferentScrollAncestors","hasSameContainer","isSameContainer","isAfterActive","isAfter","offset","rectCoordinates","SortableContainerWrapper","setActiveId","onSortStart","onSortEnd","getModifiers","getSortingStrategy","Fragment","getDragDirection","SortableItemWrapper","Children","dragDirection","HeartOutlineSvg","HeartSvg","FavouriteHelper","user","ArrayHelper","video","shouldFavourite","isHovering","VideoHelper","UserAgentHelper","namespace","getPhrase","LanguageService","FavouriteButton","alerts","useAlerts","initialState","isFavourite","setIsFavourite","React.useState","React.useEffect","onError","getErrorPhraseKey","FunctionHelper","DivButton","SvgContainer","VideoWatchProgressBar","progress","watchPercentage","VideoThumbnailBottomBar","LiteOwnerAvatar","SvgContainer2","Avatar","UserHelper","PluginHover","ThumbnailPadlock","svgSize","SvgContainerSize","LockSvg","ThumbnailCompanyLogo","company","url","ImageHelper","ImageSize","logoFallbackBgClassName","getBgColorClass","BG_COLOUR_CLASS_NAMES","Tooltip","_d","_e","VideoTypeBadge","TypeBadge","MasterType","GlobalPlayerConsumer","playerContext","usePlayerContext","theatreMode","OutPortal","shouldShow","rounding","getTitleClass","hovering","ExpandableVideoThumbnail","canNavigate","canConsume","appLinkParams","ObjectHelper","eventAnalyticsOptions","showFavouriteButton","isVideo","rating","thumbnailHoverRef","isThumbnailHovering","useHoverIntent","showThumbnailPreviewVideo","analyticsData","analyticsOptions","ClickDescriptor","BaseImage","ImageType","PlayCircleSvg","ImageFallback","ImageFallbackType","VideoSubText","BadgeListContainer","Badge","BadgeType","CloseCaptionBadgeSvg","VideoThumbnailBadges","showAudience","showRating","AudienceLabel","RestrictionPadlock","title","RestrictionHelper","TODAY","isDateInCurrentMonth","DateHelper","VideoTitle","dateRelease","isCurrentMonth","shouldShowNewVideoIndicator","ThumbnailText","ContainerWrapper","VideoGuidanceTag","ClassroomGuideTag","GraduationCapSvg","InteractivesTag","interactiveCount","InteractiveSvg","getResourceCount","ResourcesTag","resourceCount","ResourcesSvg","VideoItemGuidance","showingResourcesAndInteractives","_f","RemoveVideoButton","tooltip","CloseSvg","PopoutVideo","imageOptions","preload","hoverToPlay","onClickRemove","e","showRemoveButton","PopoutVideoThumbnail","HoverToPortalContainer","MaskType","getClassByType","getSvg","Mask","size","typeClass","svg","TickSvg","CheckMarkButton","isComplete","setIsComplete","shouldRender","shouldComplete","newStatus","hasActions","VideoThumbnailActions","ThumbnailTextPosition","textPosition","isStatic","textIsOverlayed","StaticVideoThumbnail","hoverRef","useHover","hoverIntentRef","isHoveringIntentionally","setHoverRefs","r","canFavourite","getContainerClass","getThumbnailClass","showMask","VideoThumbnail","InnerContent","hasCaptions","LinkifyHelper","VideoItemDescription","isMobile","useMediaQuery","MediaQueryStrings","hasUserRestrictions","RestrictionType","HandleSvg","getClassName","showDragHandle","baseClassName","VideoItemLeftContent","dragProps","Col","RestrictionBadge","VideoItemRestrictionBadge","hasRestrictions","VideoItemTitle","getTitleSize","SignInToWatch","VideoActionsContext","React.createContext","VideoItemActions","videoActions","React.useContext","actions","Actions","VideoItemTopRight","VideoListHelper","breakpoints","hasDragHandle","ClipItem","React.forwardRef","useBreakpoints","hovered","isSmall","isSortable","SortableVideoListContext","mergedAudience","useMergeAudiences","showIndexes","hasIconOrIndex","analyticsProps","Row","SortableClipItem","TrueOrFalseSvg","ShortAnswerSvg","MissingWordSvg","MultipleChoiceSvg","ImageSvg","AnnotationSvg","IllustrationSvg","internalGetPhrase","phrase","fallback","parseSvgElement","interactionTypeDefaults","InteractionTypeHelper","typeId","func","Core.ErrorHelper","DevError","stripTag","text","tag","newLine","stripTags","tags","formatAnnotationText","t","InteractionLabel","name","bgClassName","Svg","questionNumber","iconClassName","useGetQuestionDisplayLimit","totalToDisplay","mediaQuery","useGetMediaQueryString","InteractiveItemQuestions","questionDisplayLimit","interactionsToShow","interactionCount","timepoint","interaction","interactionData","interactionToShow","totalInteractions","InteractiveItem","SortableInteractiveItem","VideoItem","videoAudiences","getSubTextAppLink","subTextAppLink","SortableVideoItem","getItemComponent","VideoList","setIsDragging","CheckboxHelper","currentAppLink","Core.AppLinkHelper","v","idx","Component","pagePositionStartingIndex","dragData","Checkbox"],"mappings":"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","x_google_ignoreList":[2,3,4,7,8]}