@clickview/lite 0.50.0 → 0.50.1-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/{6846-lite-db93efd058.chunk.css → 1850-lite-dca6b9e86d.chunk.css} +1 -0
  3. package/dist/css/{2137-lite-6d16d5d7c2.chunk.css → 2137-lite-7045732fc8.chunk.css} +2 -2
  4. package/dist/css/{2795-lite-1e800fdd04.chunk.css → 2795-lite-1641e6fbf9.chunk.css} +2 -2
  5. package/dist/css/{458-lite-ecaf4729d3.chunk.css → 3515-lite-c8a3139b8b.chunk.css} +2 -2
  6. package/dist/css/{8960-lite-a80ad92ea7.chunk.css → 4489-lite-7d5d204d0c.chunk.css} +8 -7
  7. package/dist/css/{3515-lite-ecaf4729d3.chunk.css → 458-lite-c8a3139b8b.chunk.css} +2 -2
  8. package/dist/css/{5242-lite-512783e2fb.chunk.css → 5242-lite-58cdcd1ec4.chunk.css} +2 -2
  9. package/dist/css/{5446-lite-b68e159c6c.chunk.css → 5446-lite-ae2395342f.chunk.css} +2 -2
  10. package/dist/css/6102-lite-6e94a699ed.chunk.css +39 -0
  11. package/dist/css/{1437-lite-b847c9e2b6.chunk.css → 6415-lite-707657102b.chunk.css} +1 -1
  12. package/dist/css/{9839-lite-53b02845a4.chunk.css → 6850-lite-769c93cb9e.chunk.css} +16 -16
  13. package/dist/css/{7987-lite-7006eb4ded.chunk.css → 7987-lite-94679244a2.chunk.css} +2 -2
  14. package/dist/css/{355-lite-e474c8ddce.chunk.css → 8192-lite-8721e2ed68.chunk.css} +8 -7
  15. package/dist/css/{8316-lite-f60e236048.chunk.css → 8316-lite-9083a6565c.chunk.css} +2 -2
  16. package/dist/css/{9417-lite-f60e236048.chunk.css → 9417-lite-9083a6565c.chunk.css} +2 -2
  17. package/dist/css/{9620-lite-b202aa1d5c.chunk.css → 9620-lite-d77e9ad59b.chunk.css} +1 -1
  18. package/dist/css/{7187-lite-db93efd058.chunk.css → 9818-lite-dca6b9e86d.chunk.css} +1 -0
  19. package/dist/css/{8139-lite-5511af77bf.chunk.css → 986-lite-3bf6e93049.chunk.css} +1 -0
  20. package/dist/css/{lite-app-cf9b57ee91.css → lite-app-28b7b96628.css} +8 -6
  21. package/dist/languages/en.json +1 -1
  22. package/dist/scripts/{1080-d6dfc36c03-lite.chunk.js → 1080-362271a654-lite.chunk.js} +2 -2
  23. package/dist/scripts/{1080-d6dfc36c03-lite.chunk.js.map → 1080-362271a654-lite.chunk.js.map} +1 -1
  24. package/dist/scripts/1169-3df974a8eb-lite.chunk.js +2 -0
  25. package/dist/scripts/1169-3df974a8eb-lite.chunk.js.map +1 -0
  26. package/dist/scripts/{1285-1ba9b0640e-lite.chunk.js → 1285-818f4ed377-lite.chunk.js} +1 -1
  27. package/dist/scripts/{1285-1ba9b0640e-lite.chunk.js.map → 1285-818f4ed377-lite.chunk.js.map} +1 -1
  28. package/dist/scripts/1313-455608bc46-lite.chunk.js +2 -0
  29. package/dist/scripts/1313-455608bc46-lite.chunk.js.map +1 -0
  30. package/dist/scripts/{1379-2ee86e6e68-lite.chunk.js → 1379-3a1ba4b4d9-lite.chunk.js} +3 -3
  31. package/dist/scripts/{1379-2ee86e6e68-lite.chunk.js.map → 1379-3a1ba4b4d9-lite.chunk.js.map} +1 -1
  32. package/dist/scripts/{1518-be314d1248-lite.chunk.js → 1518-b808d8043f-lite.chunk.js} +2 -2
  33. package/dist/scripts/1518-b808d8043f-lite.chunk.js.map +1 -0
  34. package/dist/scripts/{1617-3cf9199cb1-lite.chunk.js → 1617-e1735deb2a-lite.chunk.js} +1 -1
  35. package/dist/scripts/{1617-3cf9199cb1-lite.chunk.js.map → 1617-e1735deb2a-lite.chunk.js.map} +1 -1
  36. package/dist/scripts/1672-672f298d82-lite.chunk.js +3 -0
  37. package/dist/scripts/1672-672f298d82-lite.chunk.js.map +1 -0
  38. package/dist/scripts/1750-a525866169-lite.chunk.js +2 -0
  39. package/dist/scripts/1750-a525866169-lite.chunk.js.map +1 -0
  40. package/dist/scripts/1818-74a3d26afd-lite.chunk.js +2 -0
  41. package/dist/scripts/1818-74a3d26afd-lite.chunk.js.map +1 -0
  42. package/dist/scripts/1820-68114ca994-lite.chunk.js +2 -0
  43. package/dist/scripts/1820-68114ca994-lite.chunk.js.map +1 -0
  44. package/dist/scripts/{1863-a6e7446cd8-lite.chunk.js → 1863-618c9bd7af-lite.chunk.js} +1 -1
  45. package/dist/scripts/{1863-a6e7446cd8-lite.chunk.js.map → 1863-618c9bd7af-lite.chunk.js.map} +1 -1
  46. package/dist/scripts/1905-af9a8f8824-lite.chunk.js +2 -0
  47. package/dist/scripts/1905-af9a8f8824-lite.chunk.js.map +1 -0
  48. package/dist/scripts/2004-4e2d98041c-lite.chunk.js +3 -0
  49. package/dist/scripts/2004-4e2d98041c-lite.chunk.js.map +1 -0
  50. package/dist/scripts/{209-148abe2aa1-lite.chunk.js → 209-4a54845452-lite.chunk.js} +2 -2
  51. package/dist/scripts/209-4a54845452-lite.chunk.js.map +1 -0
  52. package/dist/scripts/2137-093f479ff9-lite.chunk.js +2 -0
  53. package/dist/scripts/2137-093f479ff9-lite.chunk.js.map +1 -0
  54. package/dist/scripts/2199-cfc0ff4e1e-lite.chunk.js +2 -0
  55. package/dist/scripts/2199-cfc0ff4e1e-lite.chunk.js.map +1 -0
  56. package/dist/scripts/2703-64f709f0d0-lite.chunk.js +2 -0
  57. package/dist/scripts/2703-64f709f0d0-lite.chunk.js.map +1 -0
  58. package/dist/scripts/{2795-b3f0673e3e-lite.chunk.js → 2795-0616748349-lite.chunk.js} +1 -1
  59. package/dist/scripts/{2795-b3f0673e3e-lite.chunk.js.map → 2795-0616748349-lite.chunk.js.map} +1 -1
  60. package/dist/scripts/2877-40bb796d59-lite.chunk.js +2 -0
  61. package/dist/scripts/2877-40bb796d59-lite.chunk.js.map +1 -0
  62. package/dist/scripts/3020-2b9042238c-lite.chunk.js +2 -0
  63. package/dist/scripts/3020-2b9042238c-lite.chunk.js.map +1 -0
  64. package/dist/scripts/{3070-47e46e0d89-lite.chunk.js → 3070-fb8eb47716-lite.chunk.js} +1 -1
  65. package/dist/scripts/{3070-47e46e0d89-lite.chunk.js.map → 3070-fb8eb47716-lite.chunk.js.map} +1 -1
  66. package/dist/scripts/3231-65bbddef35-lite.chunk.js +2 -0
  67. package/dist/scripts/3231-65bbddef35-lite.chunk.js.map +1 -0
  68. package/dist/scripts/3403-12c460d3f6-lite.chunk.js +2 -0
  69. package/dist/scripts/3403-12c460d3f6-lite.chunk.js.map +1 -0
  70. package/dist/scripts/3515-4de2fd7070-lite.chunk.js +2 -0
  71. package/dist/scripts/3515-4de2fd7070-lite.chunk.js.map +1 -0
  72. package/dist/scripts/3645-72ca9f63df-lite.chunk.js +3 -0
  73. package/dist/scripts/3645-72ca9f63df-lite.chunk.js.map +1 -0
  74. package/dist/scripts/3895-a54621a8c4-lite.chunk.js +2 -0
  75. package/dist/scripts/3895-a54621a8c4-lite.chunk.js.map +1 -0
  76. package/dist/scripts/458-35c635a2ce-lite.chunk.js +2 -0
  77. package/dist/scripts/458-35c635a2ce-lite.chunk.js.map +1 -0
  78. package/dist/scripts/4690-d77e912b9b-lite.chunk.js +2 -0
  79. package/dist/scripts/4690-d77e912b9b-lite.chunk.js.map +1 -0
  80. package/dist/scripts/{4718-6df54d3039-lite.chunk.js → 4718-2b58aa560d-lite.chunk.js} +1 -1
  81. package/dist/scripts/{4718-6df54d3039-lite.chunk.js.map → 4718-2b58aa560d-lite.chunk.js.map} +1 -1
  82. package/dist/scripts/5143-b6896dad98-lite.chunk.js +2 -0
  83. package/dist/scripts/5143-b6896dad98-lite.chunk.js.map +1 -0
  84. package/dist/scripts/5229-036b4d7a22-lite.chunk.js +2 -0
  85. package/dist/scripts/5229-036b4d7a22-lite.chunk.js.map +1 -0
  86. package/dist/scripts/{5242-e8f004818c-lite.chunk.js → 5242-2d752ff85e-lite.chunk.js} +1 -1
  87. package/dist/scripts/{5242-e8f004818c-lite.chunk.js.map → 5242-2d752ff85e-lite.chunk.js.map} +1 -1
  88. package/dist/scripts/5385-57d7021be7-lite.chunk.js +2 -0
  89. package/dist/scripts/5385-57d7021be7-lite.chunk.js.map +1 -0
  90. package/dist/scripts/{5446-de55c3df38-lite.chunk.js → 5446-1ef1639ef6-lite.chunk.js} +1 -1
  91. package/dist/scripts/{5446-de55c3df38-lite.chunk.js.map → 5446-1ef1639ef6-lite.chunk.js.map} +1 -1
  92. package/dist/scripts/5595-f33ed220ce-lite.chunk.js +2 -0
  93. package/dist/scripts/5595-f33ed220ce-lite.chunk.js.map +1 -0
  94. package/dist/scripts/{5936-4cac311002-lite.chunk.js → 5936-1d99b03e7b-lite.chunk.js} +2 -2
  95. package/dist/scripts/5936-1d99b03e7b-lite.chunk.js.map +1 -0
  96. package/dist/scripts/5940-511beff2ee-lite.chunk.js +2 -0
  97. package/dist/scripts/5940-511beff2ee-lite.chunk.js.map +1 -0
  98. package/dist/scripts/{610-27e5444f01-lite.chunk.js → 610-6dbeb5cd21-lite.chunk.js} +2 -2
  99. package/dist/scripts/610-6dbeb5cd21-lite.chunk.js.map +1 -0
  100. package/dist/scripts/6102-f1851eca08-lite.chunk.js +3 -0
  101. package/dist/scripts/6102-f1851eca08-lite.chunk.js.map +1 -0
  102. package/dist/scripts/6189-ce9f0eeb31-lite.chunk.js +2 -0
  103. package/dist/scripts/6189-ce9f0eeb31-lite.chunk.js.map +1 -0
  104. package/dist/scripts/{624-010454cb12-lite.chunk.js → 624-7df7efd486-lite.chunk.js} +3 -3
  105. package/dist/scripts/{624-010454cb12-lite.chunk.js.map → 624-7df7efd486-lite.chunk.js.map} +1 -1
  106. package/dist/scripts/6263-d74b5b3529-lite.chunk.js +2 -0
  107. package/dist/scripts/6263-d74b5b3529-lite.chunk.js.map +1 -0
  108. package/dist/scripts/{6274-46a7af05d7-lite.chunk.js → 6274-15e61b83dc-lite.chunk.js} +1 -1
  109. package/dist/scripts/{6274-46a7af05d7-lite.chunk.js.map → 6274-15e61b83dc-lite.chunk.js.map} +1 -1
  110. package/dist/scripts/6415-9d8b88c713-lite.chunk.js +2 -0
  111. package/dist/scripts/6415-9d8b88c713-lite.chunk.js.map +1 -0
  112. package/dist/scripts/{6433-fe9efef305-lite.chunk.js → 6433-8dd152d999-lite.chunk.js} +2 -2
  113. package/dist/scripts/{6433-fe9efef305-lite.chunk.js.map → 6433-8dd152d999-lite.chunk.js.map} +1 -1
  114. package/dist/scripts/6470-6216086d63-lite.chunk.js +2 -0
  115. package/dist/scripts/6470-6216086d63-lite.chunk.js.map +1 -0
  116. package/dist/scripts/6531-597262a181-lite.chunk.js +2 -0
  117. package/dist/scripts/6531-597262a181-lite.chunk.js.map +1 -0
  118. package/dist/scripts/6572-4dda098022-lite.chunk.js +2 -0
  119. package/dist/scripts/6572-4dda098022-lite.chunk.js.map +1 -0
  120. package/dist/scripts/6587-08d5d85b71-lite.chunk.js +2 -0
  121. package/dist/scripts/6587-08d5d85b71-lite.chunk.js.map +1 -0
  122. package/dist/scripts/671-36d34edbf3-lite.chunk.js +2 -0
  123. package/dist/scripts/671-36d34edbf3-lite.chunk.js.map +1 -0
  124. package/dist/scripts/{6725-23b09d47ae-lite.chunk.js → 6725-20b1e8b1d2-lite.chunk.js} +2 -2
  125. package/dist/scripts/6725-20b1e8b1d2-lite.chunk.js.map +1 -0
  126. package/dist/scripts/6741-ff3e4a33a5-lite.chunk.js +3 -0
  127. package/dist/scripts/6741-ff3e4a33a5-lite.chunk.js.map +1 -0
  128. package/dist/scripts/6752-1a9837a40f-lite.chunk.js +2 -0
  129. package/dist/scripts/6752-1a9837a40f-lite.chunk.js.map +1 -0
  130. package/dist/scripts/6850-8770bfeefb-lite.chunk.js +3 -0
  131. package/dist/scripts/6850-8770bfeefb-lite.chunk.js.map +1 -0
  132. package/dist/scripts/{6863-f04753549c-lite.chunk.js → 6863-b606b8b1e7-lite.chunk.js} +2 -2
  133. package/dist/scripts/{6863-f04753549c-lite.chunk.js.map → 6863-b606b8b1e7-lite.chunk.js.map} +1 -1
  134. package/dist/scripts/{6930-0a5d94f8b5-lite.chunk.js → 6930-1a681d42fd-lite.chunk.js} +1 -1
  135. package/dist/scripts/{6930-0a5d94f8b5-lite.chunk.js.map → 6930-1a681d42fd-lite.chunk.js.map} +1 -1
  136. package/dist/scripts/6948-84a5f8d76f-lite.chunk.js +2 -0
  137. package/dist/scripts/6948-84a5f8d76f-lite.chunk.js.map +1 -0
  138. package/dist/scripts/7097-b9a9a0a4ce-lite.chunk.js +2 -0
  139. package/dist/scripts/7097-b9a9a0a4ce-lite.chunk.js.map +1 -0
  140. package/dist/scripts/714-9ab1608522-lite.chunk.js +2 -0
  141. package/dist/scripts/714-9ab1608522-lite.chunk.js.map +1 -0
  142. package/dist/scripts/7533-e079b2af18-lite.chunk.js +2 -0
  143. package/dist/scripts/7533-e079b2af18-lite.chunk.js.map +1 -0
  144. package/dist/scripts/7715-2146591c84-lite.chunk.js +2 -0
  145. package/dist/scripts/7715-2146591c84-lite.chunk.js.map +1 -0
  146. package/dist/scripts/7855-92e790c403-lite.chunk.js +2 -0
  147. package/dist/scripts/7855-92e790c403-lite.chunk.js.map +1 -0
  148. package/dist/scripts/{7987-1f9189c4c1-lite.chunk.js → 7987-db0037709c-lite.chunk.js} +1 -1
  149. package/dist/scripts/{7987-1f9189c4c1-lite.chunk.js.map → 7987-db0037709c-lite.chunk.js.map} +1 -1
  150. package/dist/scripts/{8046-1943b1d32b-lite.chunk.js → 8046-836d3b8e04-lite.chunk.js} +1 -1
  151. package/dist/scripts/{8046-1943b1d32b-lite.chunk.js.map → 8046-836d3b8e04-lite.chunk.js.map} +1 -1
  152. package/dist/scripts/{2877-db49c758e9-lite.chunk.js → 8157-521ad0f974-lite.chunk.js} +2 -2
  153. package/dist/scripts/{2877-db49c758e9-lite.chunk.js.map → 8157-521ad0f974-lite.chunk.js.map} +1 -1
  154. package/dist/scripts/8192-ec320614d9-lite.chunk.js +2 -0
  155. package/dist/scripts/8192-ec320614d9-lite.chunk.js.map +1 -0
  156. package/dist/scripts/8218-f3b81c7287-lite.chunk.js +2 -0
  157. package/dist/scripts/8218-f3b81c7287-lite.chunk.js.map +1 -0
  158. package/dist/scripts/8316-dad1824a5f-lite.chunk.js +2 -0
  159. package/dist/scripts/8316-dad1824a5f-lite.chunk.js.map +1 -0
  160. package/dist/scripts/8354-e30261b594-lite.chunk.js +2 -0
  161. package/dist/scripts/8354-e30261b594-lite.chunk.js.map +1 -0
  162. package/dist/scripts/8772-42c022effc-lite.chunk.js +2 -0
  163. package/dist/scripts/8772-42c022effc-lite.chunk.js.map +1 -0
  164. package/dist/scripts/8800-c88fefeace-lite.chunk.js +2 -0
  165. package/dist/scripts/8800-c88fefeace-lite.chunk.js.map +1 -0
  166. package/dist/scripts/8830-452a71751f-lite.chunk.js +2 -0
  167. package/dist/scripts/8830-452a71751f-lite.chunk.js.map +1 -0
  168. package/dist/scripts/8987-32190552fa-lite.chunk.js +2 -0
  169. package/dist/scripts/8987-32190552fa-lite.chunk.js.map +1 -0
  170. package/dist/scripts/9016-c359251f82-lite.chunk.js +3 -0
  171. package/dist/scripts/9016-c359251f82-lite.chunk.js.map +1 -0
  172. package/dist/scripts/{9226-4cff4347a9-lite.chunk.js → 9226-c236c0eeb1-lite.chunk.js} +2 -2
  173. package/dist/scripts/9226-c236c0eeb1-lite.chunk.js.map +1 -0
  174. package/dist/scripts/9230-d731020b59-lite.chunk.js +3 -0
  175. package/dist/scripts/9230-d731020b59-lite.chunk.js.map +1 -0
  176. package/dist/scripts/{9395-8ad1f28459-lite.chunk.js → 9395-9175b9efcc-lite.chunk.js} +3 -3
  177. package/dist/scripts/{9395-8ad1f28459-lite.chunk.js.map → 9395-9175b9efcc-lite.chunk.js.map} +1 -1
  178. package/dist/scripts/9417-70c6489c67-lite.chunk.js +2 -0
  179. package/dist/scripts/9417-70c6489c67-lite.chunk.js.map +1 -0
  180. package/dist/scripts/{9478-5a0abba4f7-lite.chunk.js → 9478-9b168ddc36-lite.chunk.js} +3 -3
  181. package/dist/scripts/{9478-5a0abba4f7-lite.chunk.js.map → 9478-9b168ddc36-lite.chunk.js.map} +1 -1
  182. package/dist/scripts/{953-b56e03bb19-lite.chunk.js → 953-85fc5f8dbf-lite.chunk.js} +3 -3
  183. package/dist/scripts/{953-b56e03bb19-lite.chunk.js.map → 953-85fc5f8dbf-lite.chunk.js.map} +1 -1
  184. package/dist/scripts/9620-630f9e6344-lite.chunk.js +3 -0
  185. package/dist/scripts/9620-630f9e6344-lite.chunk.js.map +1 -0
  186. package/dist/scripts/9818-f63bdbbac4-lite.chunk.js +2 -0
  187. package/dist/scripts/9818-f63bdbbac4-lite.chunk.js.map +1 -0
  188. package/dist/scripts/9829-097052a2c6-lite.chunk.js +2 -0
  189. package/dist/scripts/9829-097052a2c6-lite.chunk.js.map +1 -0
  190. package/dist/scripts/{9843-a3fe640adb-lite.chunk.js → 9843-ec032b6388-lite.chunk.js} +2 -2
  191. package/dist/scripts/9843-ec032b6388-lite.chunk.js.map +1 -0
  192. package/dist/scripts/986-ea6d103647-lite.chunk.js +3 -0
  193. package/dist/scripts/986-ea6d103647-lite.chunk.js.map +1 -0
  194. package/dist/scripts/bundle-d20cb66d1a.min.js +3 -0
  195. package/dist/scripts/bundle-d20cb66d1a.min.js.map +1 -0
  196. package/package.json +1 -1
  197. package/dist/css/6102-lite-4c795e86b6.chunk.css +0 -39
  198. package/dist/scripts/1169-5dc443f0f1-lite.chunk.js +0 -2
  199. package/dist/scripts/1169-5dc443f0f1-lite.chunk.js.map +0 -1
  200. package/dist/scripts/1313-4fb9d38bc0-lite.chunk.js +0 -2
  201. package/dist/scripts/1313-4fb9d38bc0-lite.chunk.js.map +0 -1
  202. package/dist/scripts/1437-5b1889cf0d-lite.chunk.js +0 -2
  203. package/dist/scripts/1437-5b1889cf0d-lite.chunk.js.map +0 -1
  204. package/dist/scripts/1518-be314d1248-lite.chunk.js.map +0 -1
  205. package/dist/scripts/1672-e792631d8e-lite.chunk.js +0 -3
  206. package/dist/scripts/1672-e792631d8e-lite.chunk.js.map +0 -1
  207. package/dist/scripts/1750-b8e1fca13a-lite.chunk.js +0 -2
  208. package/dist/scripts/1750-b8e1fca13a-lite.chunk.js.map +0 -1
  209. package/dist/scripts/1818-ca1e552c00-lite.chunk.js +0 -2
  210. package/dist/scripts/1818-ca1e552c00-lite.chunk.js.map +0 -1
  211. package/dist/scripts/1820-2fa6cf6cb2-lite.chunk.js +0 -2
  212. package/dist/scripts/1820-2fa6cf6cb2-lite.chunk.js.map +0 -1
  213. package/dist/scripts/1905-a01549439f-lite.chunk.js +0 -2
  214. package/dist/scripts/1905-a01549439f-lite.chunk.js.map +0 -1
  215. package/dist/scripts/209-148abe2aa1-lite.chunk.js.map +0 -1
  216. package/dist/scripts/2137-a993d13a9a-lite.chunk.js +0 -2
  217. package/dist/scripts/2137-a993d13a9a-lite.chunk.js.map +0 -1
  218. package/dist/scripts/2199-22d8809e5e-lite.chunk.js +0 -2
  219. package/dist/scripts/2199-22d8809e5e-lite.chunk.js.map +0 -1
  220. package/dist/scripts/2703-aebc378d71-lite.chunk.js +0 -2
  221. package/dist/scripts/2703-aebc378d71-lite.chunk.js.map +0 -1
  222. package/dist/scripts/3020-9f647705a0-lite.chunk.js +0 -2
  223. package/dist/scripts/3020-9f647705a0-lite.chunk.js.map +0 -1
  224. package/dist/scripts/3231-7e9965499c-lite.chunk.js +0 -2
  225. package/dist/scripts/3231-7e9965499c-lite.chunk.js.map +0 -1
  226. package/dist/scripts/3355-e65e88adaa-lite.chunk.js +0 -2
  227. package/dist/scripts/3355-e65e88adaa-lite.chunk.js.map +0 -1
  228. package/dist/scripts/3403-a2111c4df8-lite.chunk.js +0 -2
  229. package/dist/scripts/3403-a2111c4df8-lite.chunk.js.map +0 -1
  230. package/dist/scripts/3515-925a7caeac-lite.chunk.js +0 -2
  231. package/dist/scripts/3515-925a7caeac-lite.chunk.js.map +0 -1
  232. package/dist/scripts/355-3bb5ae2ea4-lite.chunk.js +0 -2
  233. package/dist/scripts/355-3bb5ae2ea4-lite.chunk.js.map +0 -1
  234. package/dist/scripts/3645-720267b321-lite.chunk.js +0 -3
  235. package/dist/scripts/3645-720267b321-lite.chunk.js.map +0 -1
  236. package/dist/scripts/3895-f7f4926229-lite.chunk.js +0 -2
  237. package/dist/scripts/3895-f7f4926229-lite.chunk.js.map +0 -1
  238. package/dist/scripts/458-b99f17e0a1-lite.chunk.js +0 -2
  239. package/dist/scripts/458-b99f17e0a1-lite.chunk.js.map +0 -1
  240. package/dist/scripts/4690-774e3c0e2a-lite.chunk.js +0 -2
  241. package/dist/scripts/4690-774e3c0e2a-lite.chunk.js.map +0 -1
  242. package/dist/scripts/5143-b77fb12d6a-lite.chunk.js +0 -2
  243. package/dist/scripts/5143-b77fb12d6a-lite.chunk.js.map +0 -1
  244. package/dist/scripts/5229-f683f705ab-lite.chunk.js +0 -2
  245. package/dist/scripts/5229-f683f705ab-lite.chunk.js.map +0 -1
  246. package/dist/scripts/5385-50d4828b70-lite.chunk.js +0 -2
  247. package/dist/scripts/5385-50d4828b70-lite.chunk.js.map +0 -1
  248. package/dist/scripts/5595-c622318cd2-lite.chunk.js +0 -2
  249. package/dist/scripts/5595-c622318cd2-lite.chunk.js.map +0 -1
  250. package/dist/scripts/5936-4cac311002-lite.chunk.js.map +0 -1
  251. package/dist/scripts/5940-d841fd31d8-lite.chunk.js +0 -2
  252. package/dist/scripts/5940-d841fd31d8-lite.chunk.js.map +0 -1
  253. package/dist/scripts/610-27e5444f01-lite.chunk.js.map +0 -1
  254. package/dist/scripts/6102-30960404a9-lite.chunk.js +0 -3
  255. package/dist/scripts/6102-30960404a9-lite.chunk.js.map +0 -1
  256. package/dist/scripts/6189-13009e2ba9-lite.chunk.js +0 -2
  257. package/dist/scripts/6189-13009e2ba9-lite.chunk.js.map +0 -1
  258. package/dist/scripts/6263-82ae071643-lite.chunk.js +0 -2
  259. package/dist/scripts/6263-82ae071643-lite.chunk.js.map +0 -1
  260. package/dist/scripts/6470-2cefcc8abd-lite.chunk.js +0 -2
  261. package/dist/scripts/6470-2cefcc8abd-lite.chunk.js.map +0 -1
  262. package/dist/scripts/6531-835c743f1b-lite.chunk.js +0 -2
  263. package/dist/scripts/6531-835c743f1b-lite.chunk.js.map +0 -1
  264. package/dist/scripts/6572-0aa0696621-lite.chunk.js +0 -2
  265. package/dist/scripts/6572-0aa0696621-lite.chunk.js.map +0 -1
  266. package/dist/scripts/671-300e93ac50-lite.chunk.js +0 -2
  267. package/dist/scripts/671-300e93ac50-lite.chunk.js.map +0 -1
  268. package/dist/scripts/6725-23b09d47ae-lite.chunk.js.map +0 -1
  269. package/dist/scripts/6741-937ae1865f-lite.chunk.js +0 -3
  270. package/dist/scripts/6741-937ae1865f-lite.chunk.js.map +0 -1
  271. package/dist/scripts/6846-08b00decd8-lite.chunk.js +0 -2
  272. package/dist/scripts/6846-08b00decd8-lite.chunk.js.map +0 -1
  273. package/dist/scripts/6948-4ab91f77dc-lite.chunk.js +0 -2
  274. package/dist/scripts/6948-4ab91f77dc-lite.chunk.js.map +0 -1
  275. package/dist/scripts/7052-4c36846f80-lite.chunk.js +0 -3
  276. package/dist/scripts/7052-4c36846f80-lite.chunk.js.map +0 -1
  277. package/dist/scripts/7097-af8c032133-lite.chunk.js +0 -2
  278. package/dist/scripts/7097-af8c032133-lite.chunk.js.map +0 -1
  279. package/dist/scripts/714-2e52398bb7-lite.chunk.js +0 -2
  280. package/dist/scripts/714-2e52398bb7-lite.chunk.js.map +0 -1
  281. package/dist/scripts/7187-414ac79d42-lite.chunk.js +0 -2
  282. package/dist/scripts/7187-414ac79d42-lite.chunk.js.map +0 -1
  283. package/dist/scripts/7533-f2e71bd0dd-lite.chunk.js +0 -2
  284. package/dist/scripts/7533-f2e71bd0dd-lite.chunk.js.map +0 -1
  285. package/dist/scripts/7630-72099a7a26-lite.chunk.js +0 -2
  286. package/dist/scripts/7630-72099a7a26-lite.chunk.js.map +0 -1
  287. package/dist/scripts/7715-255bbe16ef-lite.chunk.js +0 -2
  288. package/dist/scripts/7715-255bbe16ef-lite.chunk.js.map +0 -1
  289. package/dist/scripts/7855-04bc8e52e3-lite.chunk.js +0 -2
  290. package/dist/scripts/7855-04bc8e52e3-lite.chunk.js.map +0 -1
  291. package/dist/scripts/8085-cde67e66df-lite.chunk.js +0 -2
  292. package/dist/scripts/8085-cde67e66df-lite.chunk.js.map +0 -1
  293. package/dist/scripts/8139-01ccbc0539-lite.chunk.js +0 -3
  294. package/dist/scripts/8139-01ccbc0539-lite.chunk.js.map +0 -1
  295. package/dist/scripts/8218-70b601169b-lite.chunk.js +0 -2
  296. package/dist/scripts/8218-70b601169b-lite.chunk.js.map +0 -1
  297. package/dist/scripts/8316-7ab8f108de-lite.chunk.js +0 -2
  298. package/dist/scripts/8316-7ab8f108de-lite.chunk.js.map +0 -1
  299. package/dist/scripts/8354-a03785518e-lite.chunk.js +0 -2
  300. package/dist/scripts/8354-a03785518e-lite.chunk.js.map +0 -1
  301. package/dist/scripts/8772-05879c5e99-lite.chunk.js +0 -2
  302. package/dist/scripts/8772-05879c5e99-lite.chunk.js.map +0 -1
  303. package/dist/scripts/8830-0d2766a50f-lite.chunk.js +0 -2
  304. package/dist/scripts/8830-0d2766a50f-lite.chunk.js.map +0 -1
  305. package/dist/scripts/8987-12841dd69c-lite.chunk.js +0 -2
  306. package/dist/scripts/8987-12841dd69c-lite.chunk.js.map +0 -1
  307. package/dist/scripts/9016-df37abbca9-lite.chunk.js +0 -3
  308. package/dist/scripts/9016-df37abbca9-lite.chunk.js.map +0 -1
  309. package/dist/scripts/9226-4cff4347a9-lite.chunk.js.map +0 -1
  310. package/dist/scripts/9230-c79353d3ee-lite.chunk.js +0 -3
  311. package/dist/scripts/9230-c79353d3ee-lite.chunk.js.map +0 -1
  312. package/dist/scripts/9417-7313907916-lite.chunk.js +0 -2
  313. package/dist/scripts/9417-7313907916-lite.chunk.js.map +0 -1
  314. package/dist/scripts/9620-8814c74837-lite.chunk.js +0 -3
  315. package/dist/scripts/9620-8814c74837-lite.chunk.js.map +0 -1
  316. package/dist/scripts/9839-5befd54d51-lite.chunk.js +0 -3
  317. package/dist/scripts/9839-5befd54d51-lite.chunk.js.map +0 -1
  318. package/dist/scripts/9843-a3fe640adb-lite.chunk.js.map +0 -1
  319. package/dist/scripts/bundle-48ad415564.min.js +0 -3
  320. package/dist/scripts/bundle-48ad415564.min.js.map +0 -1
  321. package/dist/css/{7422-lite-22ea72f8e3.chunk.css → 7422-lite-c999db664b.chunk.css} +1 -1
  322. /package/dist/scripts/{1379-2ee86e6e68-lite.chunk.js.LICENSE.txt → 1379-3a1ba4b4d9-lite.chunk.js.LICENSE.txt} +0 -0
  323. /package/dist/scripts/{1672-e792631d8e-lite.chunk.js.LICENSE.txt → 1672-672f298d82-lite.chunk.js.LICENSE.txt} +0 -0
  324. /package/dist/scripts/{3645-720267b321-lite.chunk.js.LICENSE.txt → 2004-4e2d98041c-lite.chunk.js.LICENSE.txt} +0 -0
  325. /package/dist/scripts/{6102-30960404a9-lite.chunk.js.LICENSE.txt → 3645-72ca9f63df-lite.chunk.js.LICENSE.txt} +0 -0
  326. /package/dist/scripts/{624-010454cb12-lite.chunk.js.LICENSE.txt → 6102-f1851eca08-lite.chunk.js.LICENSE.txt} +0 -0
  327. /package/dist/scripts/{6433-fe9efef305-lite.chunk.js.LICENSE.txt → 624-7df7efd486-lite.chunk.js.LICENSE.txt} +0 -0
  328. /package/dist/scripts/{6741-937ae1865f-lite.chunk.js.LICENSE.txt → 6433-8dd152d999-lite.chunk.js.LICENSE.txt} +0 -0
  329. /package/dist/scripts/{7052-4c36846f80-lite.chunk.js.LICENSE.txt → 6741-ff3e4a33a5-lite.chunk.js.LICENSE.txt} +0 -0
  330. /package/dist/scripts/{8139-01ccbc0539-lite.chunk.js.LICENSE.txt → 6850-8770bfeefb-lite.chunk.js.LICENSE.txt} +0 -0
  331. /package/dist/scripts/{9016-df37abbca9-lite.chunk.js.LICENSE.txt → 9016-c359251f82-lite.chunk.js.LICENSE.txt} +0 -0
  332. /package/dist/scripts/{9230-c79353d3ee-lite.chunk.js.LICENSE.txt → 9230-d731020b59-lite.chunk.js.LICENSE.txt} +0 -0
  333. /package/dist/scripts/{9395-8ad1f28459-lite.chunk.js.LICENSE.txt → 9395-9175b9efcc-lite.chunk.js.LICENSE.txt} +0 -0
  334. /package/dist/scripts/{9478-5a0abba4f7-lite.chunk.js.LICENSE.txt → 9478-9b168ddc36-lite.chunk.js.LICENSE.txt} +0 -0
  335. /package/dist/scripts/{953-b56e03bb19-lite.chunk.js.LICENSE.txt → 953-85fc5f8dbf-lite.chunk.js.LICENSE.txt} +0 -0
  336. /package/dist/scripts/{9620-8814c74837-lite.chunk.js.LICENSE.txt → 9620-630f9e6344-lite.chunk.js.LICENSE.txt} +0 -0
  337. /package/dist/scripts/{9839-5befd54d51-lite.chunk.js.LICENSE.txt → 986-ea6d103647-lite.chunk.js.LICENSE.txt} +0 -0
  338. /package/dist/scripts/{bundle-48ad415564.min.js.LICENSE.txt → bundle-d20cb66d1a.min.js.LICENSE.txt} +0 -0
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3020],{83657:(e,t,n)=>{n.d(t,{e:()=>l});var a=n(32735),r=n(91967),o=n(10874),i=n(76177),c=n(42735),s=n(86509);function l(e){var t=a.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),n=[],l=[];t.forEach((function(e){e.button?n.push(e):l.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),n.length||l.length?a.createElement("div",{className:u},a.createElement(a.Fragment,null,a.createElement("span",{className:"d-flex align-items-center"},n.length?n.map((function(e,t){return a.createElement(a.Fragment,{key:t},function(){if(e.label){var t=r.q.isFunction(e.label)?e.label:function(){return a.createElement(a.Fragment,null,e.label)};return a.createElement(c.K,{appLink:e.appLink,href:e.href,onClick:e.onClick,svgName:e.svgName,className:e.className,tooltip:e.tooltip,showSpinner:e.showSpinner,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,openInNewTab:e.openInNewTab,disabled:e.disabled},t())}var n=a.createElement(o.h,{appLink:e.appLink,href:e.href,onClick:e.onClick,svgName:e.svgName,className:e.className,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,openInNewTab:e.openInNewTab,disabled:e.disabled});return e.tooltip?a.createElement(i.u,{title:e.tooltip,spanHack:!0},n):n}())})):a.createElement(a.Fragment,null),e.sortComponent&&e.sortComponent,l.length?a.createElement(s.m,{actions:l,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):a.createElement(a.Fragment,null)))):a.createElement(a.Fragment,null)}},86509:(e,t,n)=>{n.d(t,{m:()=>g});var a=n(32735),r=n(91967),o=n(81886),i=n(45157),c=n(49985),s=n(36848),l=n(83914),u=n(76177),m=n(35223);const d={dropdownToggle:"UCAnJ"};function p(){return a.createElement(a.Fragment,null,a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function f(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function b(e){var t=r.q.isFunction(e.action.label)?e.action.label:function(){return a.createElement(a.Fragment,null,e.action.label)};if(e.action.appLink)return a.createElement(s.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:f(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&a.createElement(l.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),a.createElement("span",{className:"align-middle"},t()));function n(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&c.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),r.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&o.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?a.createElement("a",{className:f(e.action.className),onClick:n,href:e.action.href},e.action.svgName&&a.createElement(l.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),a.createElement("span",{className:"align-middle"},t())):a.createElement("span",{className:"cursor-pointer ".concat(f(e.action.className)),onClick:n,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&n(e)}},e.action.svgName&&a.createElement(l.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function g(e){if(!e.actions||!e.actions.length)return a.createElement(a.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),n="dropdown";e.className&&(n+=" ".concat(e.className));var r,o="actions-dropdown-".concat(i.Y.getRandomInt()),c="dropdown-toggle px-0 ".concat(d.dropdownToggle);return e.dropdownToggleClassName&&(c+=" ".concat(e.dropdownToggleClassName)),a.createElement("div",{className:n},a.createElement("button",{className:c,type:"button",id:o,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",onClick:t?e.fetchMore:null},a.createElement(l.x,{svgName:m.vn.More,size:e.dropdownToggleSvgSize})),a.createElement("div",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right","aria-labelledby":o},t?a.createElement(p,null):e.actions.map((function(e,t){var n=void 0!==r&&r!==e.group;return r=e.group,e.tooltip?a.createElement(a.Fragment,{key:t},n&&a.createElement("hr",{className:"dropdown-divider",role:"separator"}),a.createElement(u.u,{title:e.tooltip,spanHack:!0},a.createElement(b,{action:e}))):a.createElement(a.Fragment,{key:t},n&&a.createElement("hr",{className:"dropdown-divider",role:"separator"}),a.createElement(b,{action:e}))}))))}g.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:l.S.Small}},49935:(e,t,n)=>{n.d(t,{Oo:()=>m,b2:()=>d});var a=n(32735),r=n(36848),o=n(86764),i=n(3747),c=n(5859),s=n(35223),l=n(83914),u=function(e){var t=e.breadcrumb,n=t.name,o=t.appLink,i=t.active,c=e.withBackIcon;return a.createElement("li",{className:"breadcrumb-item".concat(i?" active":"")},i?a.createElement("strong",null,n):a.createElement(r.F,{appLink:o},c&&a.createElement(l.x,{svgName:s.vn.ChevronLeft,size:l.S.Small}),a.createElement("span",{className:c?"ms-2":""},n)))},m=function(e){var t=e.breadcrumbs,n=(0,i.a)(o.r.XS),r=null==t?void 0:t.length;return!r||n&&r<2?a.createElement(a.Fragment,null):n?a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},a.createElement(u,{breadcrumb:t[r-2],withBackIcon:!0}))):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},t.map((function(e,t){return a.createElement(u,{key:t,breadcrumb:e})}))))},d=a.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,i.a)(o.r.XS)?a.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},c.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return a.createElement("li",{key:t,className:"breadcrumb-item"},a.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},38502:(e,t,n)=>{n.d(t,{r:()=>m});var a=n(32735),r=n(49985),o=n(36848),i=n(18559),c=n(11607),s=n(83914),l=n(87432);function u(e){return a.createElement(a.Fragment,null,!!e.tab.svgName&&a.createElement("div",{className:e.tab.name?"pe-1":""},a.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&a.createElement("div",{className:"ps-2"},a.createElement(i.C,{type:i.g.Count,data:e.tab.count})))}function m(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:""},a.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(l.Z.pillTabSelector,"\n ").concat(e.borderRadius?l.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return a.createElement("li",{className:"\n p-0 ".concat(l.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?l.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?a.createElement(o.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n ")},a.createElement(u,{tab:e})):a.createElement(c.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ".concat(l.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},a.createElement(u,{tab:e})))}))))}m.defaultProps={borderRadius:"lg"}},5062:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(32735),r=n(87432);const o={partialSize:"ntGsj"};function i(){return a.createElement("div",{className:"partial-loading-background ".concat(r.Z.pillTabSelector," ").concat(o.partialSize)})}},94644:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(50242),r=n(81886),o=n(67058),i=n(14553),c=n(49267),s=n(49075),l={notFound:o.d,forbidden:{rating:i.q,yearLevel:i.q,region:c.a,privacy:i.q},badRequest:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var i=Object.assign(Object.assign({},l),t);o&&r.Q.Ry.isStatusCodeError(o)&&(o!==a.o.NotFound?o!==a.o.Forbidden?n.badRequest||r.Q.Ry.throw(new i.badRequest):n.forbidden||r.Q.Ry.throw(new i.forbidden.privacy):n.notFound||r.Q.Ry.throw(new i.notFound))}}},91286:(e,t,n)=>{n.d(t,{v:()=>i});var a=n(32735),r=n(94644);function o(e){return e.map((function(e){return e.statusCode})).join(":")}function i(e,t,n){var i=Array.isArray(e)?e:[e];(0,a.useEffect)((function(){i.forEach((function(e){(0,r.r)(e.statusCode,t,n)}))}),[o(i),t,n])}},53036:(e,t,n)=>{n.d(t,{h:()=>r});var a=n(32045),r={getStatusAsString:function(e){if("string"==typeof e)return e;if("number"==typeof e){if(0===e)return a.w.Disabled;if(1===e)return a.w.Active;if(2===e)return a.w.Inactive}return null},getStatusAsNumber:function(e){if("number"==typeof e)return e;if("string"==typeof e){if(e===a.w.Disabled)return 0;if(e===a.w.Active)return 1;if(e===a.w.Inactive)return 2}return null}}},5859:(e,t,n)=>{function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}n.d(t,{u:()=>o});var r={numItems:5,minWidth:50,maxWidth:100},o={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign(Object.assign({},r),t);return(e=Array(n.numItems),function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return a(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth),"px")}}))}}},62691:(e,t,n)=>{n.d(t,{m:()=>b});var a=n(32735),r=n(23481),o=n(49985),i=n(65858),c=n(11607),s=n(83914),l=n(69883),u=n(1643),m=n(35223);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var p=r.T.encloseNamespace("classrooms.classroomStar"),f=function(e){return u.h.isFavouritedByCurrentUser(e)};function b(e){var t,n,r=(t=a.useState(f(e.classroom)),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,i,c=[],s=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=o.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw r}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=r[0],b=r[1],g=(0,l.Z)();return a.useEffect((function(){f(e.classroom)!==u&&b(!u)}),[f(e.classroom)]),a.createElement(c.L,{onClick:function(){b(!u),e.onToggle(!u,(function(){return function(t){if(t)return o.k.logUserAction({id:e.classroom.id},{location:e.locationContext,actionType:i.Vw.Favourite,descriptor:i.DL.On,entity:i.py.Classroom,workflowPhase:i.eu.Complete}),void g.success(p("pinSuccess",{classroomName:e.classroom.name,escapeText:!0}));o.k.logUserAction({id:e.classroom.id},{location:e.locationContext,actionType:i.Vw.Favourite,descriptor:i.DL.Off,entity:i.py.Classroom,workflowPhase:i.eu.Complete}),g.success(p("unpinSuccess",{classroomName:e.classroom.name,escapeText:!0}))}(!u)}),(function(){return b(t=u),void(t?g.error(p("unpinError",{classroomName:e.classroom.name,escapeText:!0})):g.error(p("pinError",{classroomName:e.classroom.name,escapeText:!0})));var t}))},className:u?"text-yellow":""},a.createElement(s.x,{svgName:u?m.vn.Star:m.vn.StarOutline,size:s.S.Medium}))}},46009:(e,t,n)=>{n.d(t,{p:()=>s});var a=n(20354),r=n(16714),o=n(31949),i=n(22902),c=n(88630),s=function(e){var t,n=(0,(0,i.T)().hasPermissions)(r.C.ManageAllClassrooms),s=a.a.useBasicFetch(o.N.currentUser()),l=a.a.useBasicFetch(!n&&(null===(t=s.data)||void 0===t?void 0:t.customerId)&&c.F.getClassroomStaff(e,s.data.customerId)),u=a.a.useBasicFetch(!n&&c.F.getClassroomOwners(e));if(n)return{isLoading:!1,isOwner:!0,isTeacher:!0};if(!l.hasCompleted||!u.hasCompleted||!s.hasCompleted)return{isLoading:!0};var m=s.data.id.toString(),d=!!u.data.find((function(e){return e.id.toString()===m})),p=!!l.data.find((function(e){return e.id.toString()===m}));return{isLoading:!1,isTeacher:d||p,isOwner:d}}},31491:(e,t,n)=>{n.d(t,{_:()=>A});var a=n(16714),r=n(67058),o=n(91286),i=n(22902),c=n(23481),s=n(64364),l=n(14070),u=n(97291);function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function d(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,p(a.key),a)}}function p(e){var t=function(e,t){if("object"!=m(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=m(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==m(t)?t:t+""}function f(e,t,n){return t=g(t),function(e,t){if(t&&("object"==m(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,b()?Reflect.construct(t,n||[],g(e).constructor):t.apply(e,n))}function b(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(b=function(){return!!e})()}function g(e){return g=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},g(e)}function y(e,t){return y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},y(e,t)}var v="classrooms.cannotAccessClassroomError",h=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),f(this,t,["Cannot access classroom"])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&y(e,t)}(t,e),n=t,(a=[{key:"name",get:function(){return"CannotAccessClassroomError"}},{key:"heading",get:function(){return c.T.getPhrase(v,"heading")}},{key:"description",get:function(){return c.T.getPhrase(v,"description")}},{key:"cta",get:function(){return{text:c.T.getPhrase(v,"cta"),appLink:{application:u.O.CLASSROOMS,action:l.e.Classrooms.HOME}}}}])&&d(n.prototype,a),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,a}(s.H);function E(e){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E(e)}function O(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,S(a.key),a)}}function S(e){var t=function(e,t){if("object"!=E(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=E(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==E(t)?t:t+""}function w(e,t,n){return t=C(t),function(e,t){if(t&&("object"==E(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,N()?Reflect.construct(t,n||[],C(e).constructor):t.apply(e,n))}function N(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(N=function(){return!!e})()}function C(e){return C=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},C(e)}function k(e,t){return k=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},k(e,t)}var T="classrooms.classroomNotFoundError",L=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),w(this,t,["Classroom doesn't exist"])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&k(e,t)}(t,e),n=t,(a=[{key:"name",get:function(){return"ClassroomNotFoundError"}},{key:"heading",get:function(){return c.T.getPhrase(T,"heading")}},{key:"description",get:function(){return c.T.getPhrase(T,"description")}},{key:"cta",get:function(){return{text:c.T.getPhrase(T,"cta"),appLink:{application:u.O.CLASSROOMS,action:l.e.Classrooms.HOME}}}}])&&O(n.prototype,a),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,a}(s.H),A=function(e){var t=(0,i.T)().hasPermissions;(0,o.v)(e,{notFound:L,forbidden:{privacy:t(a.C.ViewClassrooms)?h:r.d}})}},5289:(e,t,n)=>{n.d(t,{R:()=>N});var a=n(32735),r=n(23481),o=n(81886),i=n(65858),c=n(83657),s=n(49935),l=n(38502),u=n(32045),m=n(53036),d=n(14070),p=n(97291),f=n(62691),b=n(86764),g=n(86613),y=n(3747),v=n(35223),h=n(46009),E="classrooms.hooks",O=function(e,t,n){var a=(0,y.a)(b.r.SMDown),o=(0,h.p)(e),c={id:e},s={entity:i.py.Classroom,workflowPhase:i.eu.Start,location:i.LZ.Classroom},l="btn btn-outline-dark me-2",u=[];return o.isOwner&&u.push({order:0,label:r.T.getPhrase(E,"editClassroom"),appLink:{application:p.O.CLASSROOMS,action:d.e.Classrooms.EDIT_CLASSROOM,args:[e]},disabled:n,tooltip:n?r.T.getPhrase(E,"disabledByRostering"):"",analyticsData:c,analyticsOptions:Object.assign(Object.assign({},s),{actionType:i.Vw.Edit}),svgName:v.vn.Edit,button:!a,className:n?"disabled ".concat(l):a?"":l}),u.push({order:10,label:r.T.getPhrase(E,"generateJoinLink"),appLink:{application:p.O.CLASSROOMS,action:d.e.Classrooms.GENERATE_JOIN_LINK,args:[e]},disabled:n,tooltip:n?r.T.getPhrase(E,"disabledByRostering"):"",button:!a&&!o.isOwner,className:n?"disabled":a||o.isOwner?"":l}),o.isOwner&&u.push({order:20,label:r.T.getPhrase(E,"archive"),analyticsData:c,disabled:n,tooltip:n?r.T.getPhrase(E,"disabledByRostering"):"",analyticsOptions:Object.assign(Object.assign({},s),{actionType:i.Vw.Archive,descriptor:i.DL.On}),appLink:{application:p.O.CLASSROOMS,action:d.e.Classrooms.ARCHIVE_CLASSROOM,args:[e]},className:n?"disabled":""}),(o.isOwner||o.isTeacher)&&t.role!==g.i.Admin&&u.push({order:30,label:r.T.getPhrase(E,"leaveClassroom"),disabled:n,tooltip:n?r.T.getPhrase(E,"disabledByRostering"):"",className:n?"disabled":"text-danger",analyticsData:Object.assign(Object.assign({},c),{teacherId:t.id}),analyticsOptions:Object.assign(Object.assign({},s),{actionType:i.Vw.Dissociate,descriptor:i.iF.User}),appLink:{application:p.O.CLASSROOMS,action:d.e.Classrooms.REMOVE_TEACHERS,args:[e],params:{teacherIds:[t.id]}}}),u};const S={actionsContainer:"uYv5Z"};var w=r.T.encloseNamespace("classrooms.classroomLayout");function N(e){var t=(0,h.p)(e.classroom.id),n=O(e.classroom.id,e.currentUser,e.isRostered),r=m.h.getStatusAsString(e.classroom.status),b=[{name:w("students"),appLink:{application:p.O.CLASSROOMS,action:d.e.Classrooms.CLASSROOM_STUDENTS,args:[e.classroom.id]},active:"students"===e.activeTab},{name:w("groups"),appLink:{application:p.O.CLASSROOMS,action:d.e.Classrooms.CLASSROOM_GROUPS,args:[e.classroom.id]},active:"groups"===e.activeTab},{name:w("teachers"),appLink:{application:p.O.CLASSROOMS,action:d.e.Classrooms.CLASSROOM_TEACHERS,args:[e.classroom.id]},active:"teachers"===e.activeTab}].filter((function(t){return!e.isRostered||t.name!==w("groups")}));return a.useEffect((function(){r!==u.w.Active&&o.Q.C$.trigger({application:p.O.CLASSROOMS,action:d.e.Classrooms.HOME},{replace:!0})}),[e.classroom.status]),!t.isLoading&&!t.isTeacher||r!==u.w.Active?a.createElement(a.Fragment,null):a.createElement("div",{className:"px-3 position-relative"},a.createElement("div",{className:"d-flex"},a.createElement("div",{className:"mt-1 me-1"},a.createElement(f.m,{classroom:e.classroom,onToggle:e.onTogglePin,locationContext:i.LZ.Classroom})),a.createElement("h1",{className:"mb-0"},e.classroom.name)),!!n.length&&a.createElement("div",{className:S.actionsContainer},a.createElement(c.e,{actions:n,actionsDropdownClassName:"btn btn-outline-dark"})),a.createElement("div",{className:"pb-3 pt-1"},a.createElement(s.Oo,{breadcrumbs:[{name:w("classroomsBreadcrumb"),appLink:{application:p.O.CLASSROOMS,action:d.e.Classrooms.HOME}},{name:e.classroom.name,active:!0}]})),a.createElement("div",{className:"pb-2"},a.createElement(l.r,{tabs:b})),e.children)}},87432:(e,t,n)=>{n.d(t,{Z:()=>a});const a={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
2
- //# sourceMappingURL=3020-9f647705a0-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/3020-9f647705a0-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/components/actions/actions.scss","file:///app/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/partial-loading/partial-pill-tab-selector.scss","file:///app/packages/libs/shared/src/components/pill-tab-selector/partial-loading/PartialPillTabSelector.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/utils/ObjectStatusHelper.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-star/ClassroomStar.tsx","file:///app/packages/projects/lite/src/apps/classrooms/hooks/useClassroomPermissions.ts","file:///app/packages/projects/lite/src/apps/classrooms/errors/cannot-access-classroom/CannotAccessClassroomError.ts","file:///app/packages/projects/lite/src/apps/classrooms/errors/classroom-not-found/ClassroomNotFoundError.ts","file:///app/packages/projects/lite/src/apps/classrooms/hooks/useHandleClassroomErrors.ts","file:///app/packages/projects/lite/src/apps/classrooms/hooks/useClassroomActions.ts","file:///app/packages/projects/lite/src/apps/classrooms/layouts/classroom-layout.scss","file:///app/packages/projects/lite/src/apps/classrooms/layouts/ClassroomLayout.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n <>\n <span className='d-flex align-items-center'>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n \n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </span>\n </>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dropdownToggle\":\"UCAnJ\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label\n : () => <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2' />}\n {label()}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <div className='dropdown-menu dropdown-menu-end dropdown-menu-right' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <React.Fragment key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </React.Fragment>\n );\n }\n \n return (\n <React.Fragment key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </React.Fragment>\n );\n })\n }\n </div>\n </div>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length;\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {breadcrumbs.map((b, idx) => <BreadcrumbItem key={idx} breadcrumb={b} />)}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: '&nbsp' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"partialSize\":\"ntGsj\"};","import React from 'react';\n\nimport styles from '../pill-tab-selector.scss';\nimport partialStyles from './partial-pill-tab-selector.scss';\n\nexport function PartialPillTabSelector(): JSX.Element {\n return (\n <div className={`partial-loading-background ${styles.pillTabSelector} ${partialStyles.partialSize}`} />\n );\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\n\n/**\n * Some of our APIs return enum values as a string, and others return enum values as a number.\n * \n * This means if a HTTP request to one API returns an object with it's enum values in string\n * form, and another HTTP request returns that same object with it's enum values in number form,\n * Flight will cache the object with it's enum values in number form.\n * \n * This can cause bugs in our frontend code where we're doing checks like `(obj.status === ObjectStatus.Active)`\n * because TypeScript enums only handle one data type (number or string). Even if the object is active, if the\n * it's cached as a data type that doesn't match what our TypeScript `ObjectStatus` enum's data type is, then\n * that check would return false, introducing bugs.\n * \n * A prime example of this is Classroom objects being returned from User API with string enums, but being returned\n * from Classroom API with number enums.\n * \n * For that reason, we sadly need to check object status with this helper. Hopefully one day this can be deleted\n * when all of our APIs return enum values consistently as 1 data type.\n * \n * Example of a bug introduced by this inconsistency: https://clickview.atlassian.net/browse/INBOX-3024\n */\nexport const ObjectStatusHelper = {\n getStatusAsString(status: ObjectStatus): ObjectStatus {\n if (typeof (status) === 'string')\n return status;\n\n if (typeof (status) === 'number') {\n if (status === 0)\n return ObjectStatus.Disabled;\n\n if (status === 1)\n return ObjectStatus.Active;\n\n if (status === 2)\n return ObjectStatus.Inactive;\n }\n\n return null;\n },\n\n getStatusAsNumber(status: ObjectStatus): 0 | 1 | 2 {\n if (typeof (status) === 'number')\n return status;\n\n if (typeof (status) === 'string') {\n if (status === ObjectStatus.Disabled)\n return 0;\n\n if (status === ObjectStatus.Active)\n return 1;\n\n if (status === ObjectStatus.Inactive)\n return 2;\n }\n\n return null;\n }\n};","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'classrooms.classroomStar';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst getIsPinned = (classroom: Classroom) => {\n return FavouriteHelper.isFavouritedByCurrentUser(classroom);\n};\n\ninterface ClassroomStarProps {\n classroom: Classroom;\n onToggle: (shouldPin: boolean, onSuccess: () => void, onError: () => void) => void;\n locationContext: LocationContext;\n}\n\nexport function ClassroomStar(props: ClassroomStarProps): JSX.Element {\n // Local state is used to provide instant feedback when the user clicks on the star.\n const [ isPinned, setIsPinned ] = React.useState(getIsPinned(props.classroom));\n\n const alerts = useAlerts();\n\n React.useEffect(() => {\n if (getIsPinned(props.classroom) === isPinned)\n return;\n\n setIsPinned(!isPinned);\n }, [getIsPinned(props.classroom)]);\n\n function onToggle(): void {\n setIsPinned(!isPinned);\n\n props.onToggle(!isPinned, () => onSuccess(!isPinned), () => onError(isPinned));\n }\n\n function onSuccess(isPinned: boolean): void {\n if (isPinned) {\n AnalyticsHelper.logUserAction({ id: props.classroom.id }, {\n location: props.locationContext,\n actionType: UserAction.Favourite,\n descriptor: ToggleDescriptor.On,\n entity: EntityType.Classroom,\n workflowPhase: WorkflowPhase.Complete\n });\n \n alerts.success(getPhrase('pinSuccess', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n \n return;\n }\n\n AnalyticsHelper.logUserAction({ id: props.classroom.id }, {\n location: props.locationContext,\n actionType: UserAction.Favourite,\n descriptor: ToggleDescriptor.Off,\n entity: EntityType.Classroom,\n workflowPhase: WorkflowPhase.Complete\n });\n\n alerts.success(getPhrase('unpinSuccess', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n }\n\n function onError(prevState: boolean): void {\n setIsPinned(prevState);\n\n if (prevState) {\n alerts.error(getPhrase('unpinError', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n\n return;\n }\n\n alerts.error(getPhrase('pinError', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n }\n\n return (\n <DivButton onClick={onToggle} className={isPinned ? 'text-yellow' : ''}>\n <SvgContainer\n svgName={isPinned ? cvSvgLibrary.Star : cvSvgLibrary.StarOutline}\n size={SvgContainerSize.Medium}\n />\n </DivButton>\n );\n}","import { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser, User } from 'libs/shared/interfaces';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\n\nexport const useCheckClassroomPermissions = (classroomId: string) => {\n const { hasPermissions } = usePermissions();\n\n /**\n * This is the highest-level permission that overrides all other permissions\n */\n const canManageAllClassrooms = hasPermissions(PermissionName.ManageAllClassrooms);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n /**\n * If the user has permission to manage all classrooms, there's no need to check if they're owner/invitee\n * as these permissions no longer matter.\n */\n const staff = Flight.useBasicFetch<User[]>(!canManageAllClassrooms && currentUser.data?.customerId &&\n ClassroomRequests.getClassroomStaff(classroomId, currentUser.data.customerId));\n const owners = Flight.useBasicFetch<User[]>(!canManageAllClassrooms &&\n ClassroomRequests.getClassroomOwners(classroomId));\n\n // Has full classroom management power.\n if (canManageAllClassrooms) {\n return {\n isLoading: false,\n isOwner: true,\n isTeacher: true\n };\n }\n\n if (!staff.hasCompleted || !owners.hasCompleted || !currentUser.hasCompleted)\n return { isLoading: true };\n\n const currentUserId = currentUser.data.id.toString();\n\n const isClassroomOwner = !!owners.data.find(owner => owner.id.toString() === currentUserId);\n const isClassroomTeacher = !!staff.data.find(staff => staff.id.toString() === currentUserId);\n\n return {\n isLoading: false,\n isTeacher: isClassroomOwner || isClassroomTeacher, // All owners are also teachers\n isOwner: isClassroomOwner\n };\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorCta, ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'classrooms.cannotAccessClassroomError';\n\nexport class CannotAccessClassroomError extends ErrorPageError {\n constructor() {\n super('Cannot access classroom');\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannotAccessClassroomError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n\n // @ts-ignore\n public get cta(): ErrorCta {\n return {\n text: LanguageService.getPhrase(namespace, 'cta'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.HOME\n }\n };\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorCta, ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'classrooms.classroomNotFoundError';\n\nexport class ClassroomNotFoundError extends ErrorPageError {\n constructor() {\n super('Classroom doesn\\'t exist');\n }\n\n // @ts-ignore\n public get name(): string {\n return 'ClassroomNotFoundError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n\n // @ts-ignore\n public get cta(): ErrorCta {\n return {\n text: LanguageService.getPhrase(namespace, 'cta'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.HOME\n }\n };\n }\n}","import { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { CannotAccessClassroomError } from 'apps/classrooms/errors/cannot-access-classroom/CannotAccessClassroomError';\nimport { ClassroomNotFoundError } from 'apps/classrooms/errors/classroom-not-found/ClassroomNotFoundError';\n\nexport const useHandleClassroomErrors = (classroom: Flight.Response<Classroom>) => {\n const { hasPermissions } = usePermissions();\n\n useHandleObjectError(classroom, {\n notFound: ClassroomNotFoundError,\n forbidden: {\n privacy: hasPermissions(PermissionName.ViewClassrooms) ? CannotAccessClassroomError : NotFoundError\n }\n });\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnalyticsOptions, AssocDescriptor, EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useCheckClassroomPermissions } from 'apps/classrooms/hooks/useClassroomPermissions';\n\nconst namespace = 'classrooms.hooks';\n\nexport const useClassroomActions = (classroomId: string, currentUser: CurrentUser, readOnly?: boolean) => {\n const isMobile = useMediaQuery(MediaQueryStrings.SMDown);\n const accessCheck = useCheckClassroomPermissions(classroomId);\n\n const analyticsData = { id: classroomId };\n\n const baseAnalyticsOptions: AnalyticsOptions = {\n entity: EntityType.Classroom,\n workflowPhase: WorkflowPhase.Start,\n location: LocationContext.Classroom\n };\n\n const buttonClass = 'btn btn-outline-dark me-2';\n\n const actions: ActionOptions[] = [];\n\n if (accessCheck.isOwner) {\n actions.push({\n order: 0,\n label: LanguageService.getPhrase(namespace, 'editClassroom'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.EDIT_CLASSROOM,\n args: [classroomId]\n },\n disabled: readOnly,\n tooltip: readOnly ? LanguageService.getPhrase(namespace, 'disabledByRostering') : '',\n analyticsData,\n analyticsOptions: {\n ...baseAnalyticsOptions,\n actionType: UserAction.Edit\n },\n svgName: cvSvgLibrary.Edit,\n button: !isMobile,\n className: readOnly ? `disabled ${buttonClass}` : !isMobile ? buttonClass : ''\n });\n }\n\n actions.push({\n order: 10,\n label: LanguageService.getPhrase(namespace, 'generateJoinLink'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.GENERATE_JOIN_LINK,\n args: [classroomId]\n },\n disabled: readOnly,\n tooltip: readOnly ? LanguageService.getPhrase(namespace, 'disabledByRostering') : '',\n button: (!isMobile && !accessCheck.isOwner),\n className: readOnly ? 'disabled' : (!isMobile && !accessCheck.isOwner) ? buttonClass : ''\n });\n\n if (accessCheck.isOwner) {\n actions.push({\n order: 20,\n label: LanguageService.getPhrase(namespace, 'archive'),\n analyticsData,\n disabled: readOnly,\n tooltip: readOnly ? LanguageService.getPhrase(namespace, 'disabledByRostering') : '',\n analyticsOptions: {\n ...baseAnalyticsOptions,\n actionType: UserAction.Archive,\n descriptor: ToggleDescriptor.On\n },\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.ARCHIVE_CLASSROOM,\n args: [classroomId]\n },\n className: readOnly ? 'disabled' : ''\n });\n }\n\n if ((accessCheck.isOwner || accessCheck.isTeacher) && currentUser.role !== UserRole.Admin) {\n actions.push({\n order: 30,\n label: LanguageService.getPhrase(namespace, 'leaveClassroom'),\n disabled: readOnly,\n tooltip: readOnly ? LanguageService.getPhrase(namespace, 'disabledByRostering') : '',\n className: readOnly ? 'disabled' : 'text-danger',\n analyticsData: {\n ...analyticsData,\n teacherId: currentUser.id\n },\n analyticsOptions: {\n ...baseAnalyticsOptions,\n actionType: UserAction.Dissociate,\n descriptor: AssocDescriptor.User\n },\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.REMOVE_TEACHERS,\n args: [classroomId],\n params: {\n teacherIds: [currentUser.id]\n }\n }\n });\n }\n\n return actions;\n};","// extracted by mini-css-extract-plugin\nexport default {\"actionsContainer\":\"uYv5Z\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\nimport { Classroom, CurrentUser } from 'libs/shared/interfaces';\nimport { ObjectStatusHelper } from 'libs/shared/utils/ObjectStatusHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomStar } from 'apps/classrooms/components/classroom-star/ClassroomStar';\nimport { useClassroomActions } from 'apps/classrooms/hooks/useClassroomActions';\nimport { useCheckClassroomPermissions } from 'apps/classrooms/hooks/useClassroomPermissions';\n\nimport styles from './classroom-layout.scss';\n\nconst namespace = 'classrooms.classroomLayout';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ClassroomLayoutProps {\n classroom: Classroom;\n currentUser: CurrentUser;\n onTogglePin: (shouldPin: boolean, onSuccess: () => void, onError: () => void) => void;\n activeTab: 'students' | 'groups' | 'teachers';\n isRostered?: boolean;\n}\n\nexport function ClassroomLayout(props: React.PropsWithChildren<ClassroomLayoutProps>): JSX.Element {\n const accessCheck = useCheckClassroomPermissions(props.classroom.id);\n\n const actions = useClassroomActions(props.classroom.id, props.currentUser, props.isRostered);\n\n const classroomStatus = ObjectStatusHelper.getStatusAsString(props.classroom.status);\n\n const tabs: PillTab[] = [{\n name: getPhrase('students'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.CLASSROOM_STUDENTS,\n args: [props.classroom.id]\n },\n active: props.activeTab === 'students'\n }, {\n name: getPhrase('groups'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.CLASSROOM_GROUPS,\n args: [props.classroom.id]\n },\n active: props.activeTab === 'groups'\n }, {\n name: getPhrase('teachers'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.CLASSROOM_TEACHERS,\n args: [props.classroom.id]\n },\n active: props.activeTab === 'teachers'\n }]\n // todo we hide groups for rostered classroom for v1\n .filter(tab => !props.isRostered || tab.name !== getPhrase('groups'));\n\n // Redirect away if classroom isn't published\n React.useEffect(() => {\n if (classroomStatus === ObjectStatus.Active)\n return;\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.HOME\n }, { replace: true });\n }, [props.classroom.status]);\n\n if ((!accessCheck.isLoading && !accessCheck.isTeacher) || classroomStatus !== ObjectStatus.Active)\n return <></>;\n\n return (\n <div className='px-3 position-relative'>\n <div className='d-flex'>\n <div className='mt-1 me-1'>\n <ClassroomStar\n classroom={props.classroom}\n onToggle={props.onTogglePin}\n locationContext={LocationContext.Classroom}\n />\n </div>\n <h1 className='mb-0'>{props.classroom.name}</h1>\n </div>\n\n {!!actions.length && (\n <div className={styles.actionsContainer}>\n <ActionsComponent\n actions={actions}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n </div>\n )}\n\n <div className='pb-3 pt-1'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: getPhrase('classroomsBreadcrumb'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.HOME\n }\n },\n { name: props.classroom.name, active: true }\n ]}\n />\n </div>\n\n <div className='pb-2'>\n <PillTabSelector tabs={tabs} />\n </div>\n\n {props.children}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["Actions","props","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","className","length","map","idx","key","label","appLink","href","onClick","svgName","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","title","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","dropdownToggleSvgSize","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","AppLink","SvgContainer","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","type","id","size","showDivider","undefined","group","Tooltip","defaultProps","S","BreadcrumbItem","breadcrumb","name","active","withBackIcon","Breadcrumbs","breadcrumbs","isMobile","PartialBreadcrumbs","numItems","dangerouslySetInnerHTML","__html","TabContents","tab","count","data","PillTabSelector","borderRadius","listClassName","tabs","index","onSelect","onSelectTab","PartialPillTabSelector","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","ObjectStatusHelper","getStatusAsString","getStatusAsNumber","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Math","max","floor","random","getPhrase","getIsPinned","classroom","ClassroomStar","isPinned","setIsPinned","alerts","onToggle","location","locationContext","actionType","descriptor","entity","workflowPhase","success","classroomName","escapeText","onSuccess","prevState","error","useCheckClassroomPermissions","classroomId","canManageAllClassrooms","hasPermissions","currentUser","staff","customerId","owners","isLoading","isOwner","isTeacher","hasCompleted","currentUserId","toString","isClassroomOwner","find","owner","isClassroomTeacher","namespace","CannotAccessClassroomError","LanguageService","text","application","ErrorPageError","ClassroomNotFoundError","useHandleClassroomErrors","usePermissions","PermissionName","NotFoundError","useClassroomActions","readOnly","accessCheck","baseAnalyticsOptions","buttonClass","args","UserRole","teacherId","params","teacherIds","ClassroomLayout","isRostered","classroomStatus","activeTab","filter","ObjectStatus","replace","onTogglePin","children"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3231],{92869:(e,n,t)=>{t.d(n,{t:()=>r});var a=t(48088),i=t(95846),r={preventScrollTop:function(){a.Radio.channel(i.G.SHELL).trigger("prevent:scroll:top")}}},83657:(e,n,t)=>{t.d(n,{e:()=>c});var a=t(32735),i=t(91967),r=t(10874),o=t(76177),l=t(42735),s=t(86509);function c(e){var n=a.useMemo((function(){return e.actions.sort((function(e,n){return e.order-n.order}))}),[e.actions]),t=[],c=[];n.forEach((function(e){e.button?t.push(e):c.push(e)}));var d="d-flex";return e.className&&(d+=" ".concat(e.className)),t.length||c.length?a.createElement("div",{className:d},a.createElement(a.Fragment,null,a.createElement("span",{className:"d-flex align-items-center"},t.length?t.map((function(e,n){return a.createElement(a.Fragment,{key:n},function(){if(e.label){var n=i.q.isFunction(e.label)?e.label:function(){return a.createElement(a.Fragment,null,e.label)};return a.createElement(l.K,{appLink:e.appLink,href:e.href,onClick:e.onClick,svgName:e.svgName,className:e.className,tooltip:e.tooltip,showSpinner:e.showSpinner,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,openInNewTab:e.openInNewTab,disabled:e.disabled},n())}var t=a.createElement(r.h,{appLink:e.appLink,href:e.href,onClick:e.onClick,svgName:e.svgName,className:e.className,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,openInNewTab:e.openInNewTab,disabled:e.disabled});return e.tooltip?a.createElement(o.u,{title:e.tooltip,spanHack:!0},t):t}())})):a.createElement(a.Fragment,null),e.sortComponent&&e.sortComponent,c.length?a.createElement(s.m,{actions:c,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):a.createElement(a.Fragment,null)))):a.createElement(a.Fragment,null)}},86509:(e,n,t)=>{t.d(n,{m:()=>f});var a=t(32735),i=t(91967),r=t(81886),o=t(45157),l=t(49985),s=t(36848),c=t(83914),d=t(76177),u=t(35223);const m={dropdownToggle:"UCAnJ"};function p(){return a.createElement(a.Fragment,null,a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function g(e){var n="dropdown-item";return e&&(n+=" ".concat(e)),n}function v(e){var n=i.q.isFunction(e.action.label)?e.action.label:function(){return a.createElement(a.Fragment,null,e.action.label)};if(e.action.appLink)return a.createElement(s.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:g(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&a.createElement(c.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),a.createElement("span",{className:"align-middle"},n()));function t(n){n.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&l.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),i.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&r.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?a.createElement("a",{className:g(e.action.className),onClick:t,href:e.action.href},e.action.svgName&&a.createElement(c.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),a.createElement("span",{className:"align-middle"},n())):a.createElement("span",{className:"cursor-pointer ".concat(g(e.action.className)),onClick:t,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&t(e)}},e.action.svgName&&a.createElement(c.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),n())}function f(e){if(!e.actions||!e.actions.length)return a.createElement(a.Fragment,null);var n=e.actions.some((function(e){return e.lazyPlaceholder})),t="dropdown";e.className&&(t+=" ".concat(e.className));var i,r="actions-dropdown-".concat(o.Y.getRandomInt()),l="dropdown-toggle px-0 ".concat(m.dropdownToggle);return e.dropdownToggleClassName&&(l+=" ".concat(e.dropdownToggleClassName)),a.createElement("div",{className:t},a.createElement("button",{className:l,type:"button",id:r,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",onClick:n?e.fetchMore:null},a.createElement(c.x,{svgName:u.vn.More,size:e.dropdownToggleSvgSize})),a.createElement("div",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right","aria-labelledby":r},n?a.createElement(p,null):e.actions.map((function(e,n){var t=void 0!==i&&i!==e.group;return i=e.group,e.tooltip?a.createElement(a.Fragment,{key:n},t&&a.createElement("hr",{className:"dropdown-divider",role:"separator"}),a.createElement(d.u,{title:e.tooltip,spanHack:!0},a.createElement(v,{action:e}))):a.createElement(a.Fragment,{key:n},t&&a.createElement("hr",{className:"dropdown-divider",role:"separator"}),a.createElement(v,{action:e}))}))))}f.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:c.S.Small}},88711:(e,n,t)=>{t.d(n,{j:()=>r});var a=t(32735),i=t(20455);function r(e){var n,t,r=(0,i.O1)(Object.assign(Object.assign({},e.draggable),{disabled:!e.draggable})),o=r.active,l=r.isDragging,s=r.attributes,c=r.listeners,d=r.setNodeRef,u=(0,i.Zj)(Object.assign(Object.assign({},e.droppable),{disabled:!e.droppable})),m=u.isOver,p=u.over,g=u.active,v=u.setNodeRef;return a.useEffect((function(){var n,t,a,i=null===(n=e.draggable)||void 0===n?void 0:n.data;Array.isArray(i)&&(null==i?void 0:i.includes(null==o?void 0:o.id.toString()))?null===(t=e.setIsDragging)||void 0===t||t.call(e,l):null===(a=e.setIsDragging)||void 0===a||a.call(e,!1)}),[l]),a.createElement("div",Object.assign({ref:d},c,s,{className:"".concat(e.draggable?"cursor-grab":"cursor-default"," ").concat(l&&o||e.isDragging&&(t=null===(n=e.draggable)||void 0===n?void 0:n.data,Array.isArray(t)&&t.includes(e.draggable.id.toString()))?e.dragStyle:null)}),a.createElement("div",{ref:v,className:g&&m&&(null==o?void 0:o.id)!==(null==p?void 0:p.id)?e.dropStye:null},e.children))}},37395:(e,n,t)=>{t.d(n,{t:()=>u});var a=t(32735),i=t(98269),r=t(92869),o=t(49985),l=t(65858),s=t(36848),c=t(83345);function d(e,n,t){var a;if(!n)return null;var i=null!==(a=e.params)&&void 0!==a?a:{};return t?(null==i?void 0:i.previous)?{application:e.application,action:e.action,args:e.args,params:Object.assign(Object.assign({},i),{cursor:null==i?void 0:i.previous,previous:null})}:{application:e.application,action:e.action,args:e.args,params:Object.assign(Object.assign({},i),{cursor:null,previous:null})}:{application:e.application,action:e.action,args:e.args,params:Object.assign(Object.assign({},i),{cursor:n,previous:i.cursor})}}function u(e){var n=e.appLink,t=e.cursors,u=e.className,m=e.buttonVariant,p=e.prevHack,g=e.scrollTop,v=e.onClick;function f(e){n&&!g&&r.t.preventScrollTop(),o.k.logUserAction({page:e},{location:l.LZ.Pagination,entity:l.py.Pagination,actionType:l.Vw.Navigate}),v&&v(t[e])}return n?a.createElement(c.D.Provider,{value:"shared.pagination"},a.createElement("div",{className:u},a.createElement(s.F,{appLink:d(n,t.previous,p),className:"btn btn-".concat(m," me-1 ").concat(t.previous?"":"disabled"),onClick:function(){return f("previous")},style:{display:"inline-block"}},a.createElement(c.x,{phrase:"previous"})),a.createElement(s.F,{appLink:d(n,t.next),className:"btn btn-".concat(m," ").concat(t.next?"":"disabled"),onClick:function(){return f("next")},style:{display:"inline-block"}},a.createElement(c.x,{phrase:"next"})))):a.createElement(c.D.Provider,{value:"shared.pagination"},a.createElement("div",{className:u},a.createElement(i.Z,{variant:m,className:"me-1 ".concat(t.previous?"":"disabled"),onClick:function(){return f("previous")}},a.createElement(c.x,{phrase:"previous"})),a.createElement(i.Z,{variant:m,className:"btn ".concat(t.next?"":"disabled"),onClick:function(){return f("next")}},a.createElement(c.x,{phrase:"next"}))))}u.defaultProps={className:"py-2",buttonVariant:"secondary"}},17808:(e,n,t)=>{t.d(n,{Q:()=>s});var a=t(32735),i=t(20455),r=t(95339),o=t(67445);function l(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=Array(n);t<n;t++)a[t]=e[t];return a}function s(e){var n,t,s=(n=a.useState(null),t=2,function(e){if(Array.isArray(e))return e}(n)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,i,r,o,l=[],s=!0,c=!1;try{if(r=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;s=!1}else for(;!(s=(a=r.call(t)).done)&&(l.push(a.value),l.length!==n);s=!0);}catch(e){c=!0,i=e}finally{try{if(!s&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(c)throw i}}return l}}(n,t)||function(e,n){if(e){if("string"==typeof e)return l(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?l(e,n):void 0}}(n,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=s[0],d=s[1],u=(0,i.Dy)((0,i.VT)(i.we,{activationConstraint:{distance:10}}),(0,i.VT)(i.Lg,{coordinateGetter:o.is}));return e.disabled?a.createElement(a.Fragment,null,e.children):a.createElement(i.LB,{sensors:u,collisionDetection:i.pE,onDragStart:function(n){var t;d(n.active.id),null===(t=e.onSortStart)||void 0===t||t.call(e,n)},onDragEnd:function(n){d(null),e.onSortEnd(n)},modifiers:e.vertical?[r.DL]:[]},a.createElement(o.Fo,{items:e.ids,strategy:e.vertical?o.qw:o.U2},e.children),a.createElement(i.y9,{dropAnimation:e.dropAnimation},c?e.getDragOverlay(c):null))}s.defaultProps={dropAnimation:{duration:250,easing:"ease"},vertical:!0}},1287:(e,n,t)=>{t.d(n,{W:()=>o});var a=t(32735),i=t(67445),r=t(17592);function o(e){var n=(0,i.nB)({id:e.id}),t=n.setNodeRef,o=n.transform,l=n.transition,s=n.isSorting,c=n.listeners,d=n.attributes,u=n.activeIndex,m=n.overIndex,p=n.index,g={transform:r.ux.Transform.toString(o),transition:l,touchAction:"none",position:"relative"};s&&p===u&&(g.visibility="hidden");var v=e.childComponent,f=function(e,n,t){return n!==e?null:t>n?"down":t<n?"up":null}(p,u,m);return a.createElement(v,Object.assign({},e.childProps,{ref:t,style:g,dragListeners:c,dragAttributes:d,dragDirection:f}))}},13231:(e,n,t)=>{t.d(n,{NB:()=>y,BR:()=>f,E4:()=>b});var a=t(32735),i=t(81886),r=t(88711),o=t(89965),l=t(37395),s=t(17808),c=t(31908),d=t(34550),u=t(66133),m=t(82072);const p={sortableVideo:"xaH09",videoList:"kO5Q0",badgeContainer:"FP8l5",dragStyle:"HF8j1"};function g(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=Array(n);t<n;t++)a[t]=e[t];return a}function v(e,n){return c.M.isClip(e)?n?d.s:d.I:c.M.isInteractive(e)?n?u.n:u.H:n?m.o:m.m}var f=a.createContext({isSortable:!1});function b(e){var n,t,s=a.useContext(f).isSortable,c=(n=a.useState(!1),t=2,function(e){if(Array.isArray(e))return e}(n)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,i,r,o,l=[],s=!0,c=!1;try{if(r=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;s=!1}else for(;!(s=(a=r.call(t)).done)&&(l.push(a.value),l.length!==n);s=!0);}catch(e){c=!0,i=e}finally{try{if(!s&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(c)throw i}}return l}}(n,t)||function(e,n){if(e){if("string"==typeof e)return g(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?g(e,n):void 0}}(n,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=c[0],u=c[1],m=e.checkboxHelper,b=i.Q.C$.getCurrentAppLink();return a.createElement(a.Fragment,null,a.createElement("div",{className:"position-relative ".concat(p.videoList)},e.videos.map((function(n,t){var i=v(n,s),l=Number.isInteger(e.startingPositionIndex)?e.startingPositionIndex:0,c=m&&m.getSelectedCount()>1&&m.isChecked(n.id)?m.getSelected():n;return a.createElement(r.j,{draggable:e.drag&&!s&&{id:n.id,data:c},dragStyle:p.dragStyle,isDragging:d,setIsDragging:u,key:"".concat(n.id,":").concat(t)},a.createElement("div",{className:"d-flex flex-row align-items-center"},e.allowBulkAction&&a.createElement("div",null,a.createElement(o.X,{className:"mx-0 mx-md-2",id:n.id,onChange:function(){return m.onToggleItem(n.id)},checked:m.isChecked(n.id)})),a.createElement(i,{video:n,yearGroups:e.yearGroups,index:t,getVideoAppLink:e.getVideoAppLink,getSubTextAppLink:e.getSubTextAppLink,setFavourite:e.setFavourite,canFavourite:e.canFavourite,dragHandleIcon:e.dragHandleIcon,dragHandleIconSize:e.dragHandleIconSize,showSignIn:e.showSignIn,getSignInAppLink:e.getSignInAppLink,analyticsData:{pagePositionIndex:l+t},hasPermissions:e.hasPermissions,canRemovePrivateVideos:e.canRemovePrivateVideos,presentationAudiences:e.presentationAudiences,showIndexes:e.showIndexes,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,getPreviewQuestionsAppLink:e.getPreviewQuestionsAppLink,imageCdnUrl:e.imageCdnUrl,isPlugin:e.isPlugin,getClassroomGuideAppLink:e.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:e.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:e.getResourceGuidanceAppLink,hideVideoGuidance:e.hideVideoGuidance})))}))),e.cursors&&a.createElement(l.t,{appLink:b,cursors:e.cursors}))}var y=function(e){var n=e.videos.map((function(e){return e.id}));return a.createElement(s.Q,{ids:n,getDragOverlay:function(n){var t=e.videos.find((function(e){return e.id===n})),i=v(t,!0);return a.createElement("div",{className:"bg-white ".concat(p.sortableVideo)},a.createElement(f.Provider,{value:{isSortable:!0}},a.createElement(i,{video:t,yearGroups:e.yearGroups,getVideoAppLink:e.getVideoAppLink,getSubTextAppLink:e.getSubTextAppLink,setFavourite:e.setFavourite,canFavourite:e.canFavourite,dragHandleIcon:e.dragHandleIcon,dragHandleIconSize:e.dragHandleIconSize,showSignIn:e.showSignIn,getSignInAppLink:e.getSignInAppLink,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,hasPermissions:e.hasPermissions,imageCdnUrl:e.imageCdnUrl,isPlugin:e.isPlugin,getClassroomGuideAppLink:e.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:e.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:e.getResourceGuidanceAppLink,hideVideoGuidance:e.hideVideoGuidance})))},onSortEnd:e.onSortEnd,onSortStart:e.onSortStart},a.createElement(f.Provider,{value:{isSortable:!0,currentSortingIndex:e.currentSortingIndex}},a.createElement(b,Object.assign({},e))))}},9977:(e,n,t)=>{t.d(n,{O:()=>a});var a={getThumbnailColumns:function(){return{xs:12,sm:5,lg:3}},getDetailsColumns:function(){return{xs:12,sm:7,lg:9}},getSize:function(e,n){return e.sm?"sm":n||"md"},getThumbnailColSize:function(e){return e?10:12}}},34550:(e,n,t)=>{t.d(n,{I:()=>w,s:()=>x});var a=t(32735),i=t(69111),r=t(68050),o=t(65858),l=t(1287),s=t(89118),c=t(60318),d=t(51685),u=t(74289),m=t(94696),p=t(70872),g=t(40138),v=t(13231),f=t(9977),b=t(54610),y=t(68626),h=t(79967),E=t(49439),k=t(80143),I=t(31908);function S(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=Array(n);t<n;t++)a[t]=e[t];return a}var w=a.forwardRef((function(e,n){var t,l,w,x,A=(0,h.k)(),L=(w=(0,E.X)(),x=2,function(e){if(Array.isArray(e))return e}(w)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,i,r,o,l=[],s=!0,c=!1;try{if(r=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;s=!1}else for(;!(s=(a=r.call(t)).done)&&(l.push(a.value),l.length!==n);s=!0);}catch(e){c=!0,i=e}finally{try{if(!s&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(c)throw i}}return l}}(w,x)||function(e,n){if(e){if("string"==typeof e)return S(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?S(e,n):void 0}}(w,x)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),N=L[0],C=L[1],O=f.O.getSize(A,e.size),j="sm"===O,T=a.useContext(v.BR).isSortable,P=(0,k.n)(null===(t=e.video.subjectPresentationAudiences)||void 0===t?void 0:t.data,e.presentationAudiences),F=T&&!A.xs&&(C||void 0===e.index||!e.showIndexes),D=e.showIndexes&&!F&&!A.xs,H=(F||e.showIndexes)&&!A.xs,G=e.getVideoAppLink(e.video,{}),z={analyticsData:e.analyticsData,analyticsOptions:{entity:o.py.Clip,location:o.LZ.ClipListItem}};return a.createElement("div",{ref:N,className:"w-100"},a.createElement("div",{className:"row g-0 ".concat(j?"":"py-2"),ref:n,style:e.style},a.createElement(i.Z,Object.assign({},f.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(j?"pb-2 pe-2":"mb-1 px-2")}),a.createElement(r.Z,null,a.createElement(u.r,{index:e.index,showDragHandle:F,showIndexes:D,dragHandleIcon:e.dragHandleIcon,dragHandleIconSize:e.dragHandleIconSize,dragAttributes:e.dragAttributes,dragListeners:e.dragListeners}),a.createElement(i.Z,{xs:f.O.getThumbnailColSize(H)},a.createElement(s.u,Object.assign({},z,{video:e.video,appLink:G,audience:P,imageOptions:{size:b.h2.Medium},textPosition:y.z.Independent,type:"static",setFavourite:e.setFavourite,canFavourite:e.canFavourite,canRemovePrivateVideos:e.canRemovePrivateVideos,showSignIn:e.showSignIn,subTextType:"none",imageCdnUrl:e.imageCdnUrl,isPlugin:e.isPlugin}))))),a.createElement(i.Z,Object.assign({},f.O.getDetailsColumns(),{className:"".concat(j?"pb-2":"px-2"," d-flex flex-column justify-content-between")}),a.createElement("div",null,a.createElement(g.H,Object.assign({},z,{video:e.video,showSignIn:e.showSignIn,signInAppLink:null===(l=e.getSignInAppLink)||void 0===l?void 0:l.call(e,G)})),a.createElement(p.u,Object.assign({video:e.video,appLink:G,size:O,yearGroups:e.yearGroups},z)),!j&&a.createElement(d.g,{video:e.video,showSignIn:e.showSignIn}),a.createElement(m.B,{video:e.video,yearGroups:e.yearGroups})),I.M.showVideoGuidance(e.hasPermissions)&&a.createElement(c.u,Object.assign({video:e.video,getVideoAppLink:e.getVideoAppLink,getClassroomGuideAppLink:e.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:e.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:e.getResourceGuidanceAppLink,containerClassName:"d-flex justify-content-start align-items-center pt-sm-1 gap-1",responsiveClassName:"_4ms1w"},z)))))})),x=function(e){return a.createElement(l.W,{id:e.video.id,childComponent:w,childProps:e})}},85784:(e,n,t)=>{t.d(n,{Q:()=>l});var a=t(32735),i=t(91967),r=t(83657),o=t(51365);function l(e){var n=a.useContext(o.M);if(!i.q.isFunction(null==n?void 0:n.getVideoActions))return a.createElement(a.Fragment,null);var t=n.getVideoActions(e.video,{analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions});return a.createElement(r.e,{actions:t,className:"float-end mt-n1",actionsDropdownClassName:"btn btn-link ms-1",fetchMore:n.fetchMoreActions?function(){return n.fetchMoreActions(e.video)}:null})}},74289:(e,n,t)=>{t.d(n,{r:()=>s});var a=t(32735),i=t(69111),r=t(83914),o=t(35223);const l={dragHandleContainer:"mcAFC"};function s(e){var n,t=e.showDragHandle?Object.assign(Object.assign({},e.dragAttributes),e.dragListeners):{},o=(n="d-flex justify-content-center align-items-center",e.showDragHandle?"".concat(n," cursor-pointer ").concat(l.dragHandleContainer):n);return e.showDragHandle||e.showIndexes?a.createElement(i.Z,Object.assign({xs:2,className:o},t),!!e.showDragHandle&&a.createElement(r.x,{svgName:e.dragHandleIcon,size:e.dragHandleIconSize}),!!e.showIndexes&&a.createElement("span",{className:"fw-semibold"},e.index+1)):a.createElement(a.Fragment,null)}s.defaultProps={dragHandleIcon:o.vn.Handle,dragHandleIconSize:r.S.Small}},40138:(e,n,t)=>{t.d(n,{H:()=>d});var a=t(32735),i=t(36848),r=t(83345),o="shared.signInToWatch";function l(e){return a.createElement(i.F,{appLink:e.appLink,className:e.className},a.createElement(r.x,{namespace:o,phrase:"signInToWatch"}))}var s=t(85784),c=t(31908);function d(e){var n=c.M.getCanBeConsumed(e.video).canNavigate;return e.showSignIn&&!n?a.createElement(l,{appLink:e.signInAppLink,className:"btn btn-outline-dark float-end"}):a.createElement(s.Q,{video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions})}},66133:(e,n,t)=>{t.d(n,{H:()=>w,n:()=>x});var a=t(32735),i=t(69111),r=t(68050),o=t(65858),l=t(1287),s=t(89118),c=t(51685),d=t(74289),u=t(94696),m=t(70872),p=t(40138),g=t(15469),v=t(13231),f=t(9977),b=t(54610),y=t(68626),h=t(79967),E=t(49439),k=t(80143),I=t(31908);function S(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=Array(n);t<n;t++)a[t]=e[t];return a}var w=a.forwardRef((function(e,n){var t,l,w,x,A,L=(0,h.k)(),N=(x=(0,E.X)(),A=2,function(e){if(Array.isArray(e))return e}(x)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,i,r,o,l=[],s=!0,c=!1;try{if(r=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;s=!1}else for(;!(s=(a=r.call(t)).done)&&(l.push(a.value),l.length!==n);s=!0);}catch(e){c=!0,i=e}finally{try{if(!s&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(c)throw i}}return l}}(x,A)||function(e,n){if(e){if("string"==typeof e)return S(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?S(e,n):void 0}}(x,A)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),C=N[0],O=N[1],j=f.O.getSize(L,e.size),T="sm"===j,P=a.useContext(v.BR).isSortable,F=(0,k.n)(null===(t=e.video.subjectPresentationAudiences)||void 0===t?void 0:t.data,e.presentationAudiences),D=P&&!L.xs&&(O||void 0===e.index||!e.showIndexes),H=e.showIndexes&&!D&&!L.xs,G=(D||e.showIndexes)&&!L.xs,z=e.getVideoAppLink(e.video,{}),V={analyticsData:e.analyticsData,analyticsOptions:{entity:o.py.Interactive,location:o.LZ.InteractiveListItem}},R=I.M.getCanBeConsumed(e.video).canNavigate;return a.createElement("div",{ref:C,className:"w-100"},a.createElement("div",{className:"row g-0 py-2",ref:n,style:e.style},a.createElement(i.Z,Object.assign({},f.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(T?"pb-2 pe-2":"mb-1 px-2")}),a.createElement(r.Z,null,a.createElement(d.r,{index:e.index,showDragHandle:D,showIndexes:H,dragHandleIcon:e.dragHandleIcon,dragHandleIconSize:e.dragHandleIconSize,dragAttributes:e.dragAttributes,dragListeners:e.dragListeners}),a.createElement(i.Z,{xs:f.O.getThumbnailColSize(G)},a.createElement(s.u,Object.assign({},V,{video:e.video,appLink:z,audience:F,imageOptions:{size:b.h2.Medium},textPosition:y.z.Independent,type:"static",setFavourite:e.setFavourite,canFavourite:e.canFavourite,canRemovePrivateVideos:e.canRemovePrivateVideos,showSignIn:e.showSignIn,subTextType:"none",hideDuration:T,imageCdnUrl:e.imageCdnUrl,isPlugin:e.isPlugin}))))),a.createElement(i.Z,Object.assign({},f.O.getDetailsColumns(),{className:T?"pb-2":"px-2"}),a.createElement(p.H,Object.assign({},V,{video:e.video,showSignIn:e.showSignIn,signInAppLink:null===(l=e.getSignInAppLink)||void 0===l?void 0:l.call(e,z)})),a.createElement(m.u,Object.assign({video:e.video,appLink:z,size:j,yearGroups:e.yearGroups},V)),R?a.createElement("div",{className:"pt-sm-1 pt-md-0"},a.createElement(g.r,{timepoints:null===(w=e.video._timepoints)||void 0===w?void 0:w.value,appLink:z,previewAppLink:e.getPreviewQuestionsAppLink(e.video)})):a.createElement(c.g,{video:e.video,showSignIn:e.showSignIn}),a.createElement(u.B,{video:e.video,yearGroups:e.yearGroups}))))})),x=function(e){return a.createElement(l.W,{id:e.video.id,childComponent:w,childProps:e})}},82072:(e,n,t)=>{t.d(n,{o:()=>L,m:()=>A});var a=t(32735),i=t(69111),r=t(68050),o=t(65858),l=t(1287),s=t(83914),c=t(89118),d=t(60318),u=t(51685),m=t(74289),p=t(94696),g=t(70872),v=t(40138),f=t(13231),b=t(9977),y=t(11882),h=t(54610),E=t(68626),k=t(79967),I=t(49439),S=t(80143),w=t(35223);function x(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=Array(n);t<n;t++)a[t]=e[t];return a}var A=a.forwardRef((function(e,n){var t,l,s,w,A,L,N,C=(0,k.k)(),O=(L=(0,I.X)(),N=2,function(e){if(Array.isArray(e))return e}(L)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,i,r,o,l=[],s=!0,c=!1;try{if(r=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;s=!1}else for(;!(s=(a=r.call(t)).done)&&(l.push(a.value),l.length!==n);s=!0);}catch(e){c=!0,i=e}finally{try{if(!s&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(c)throw i}}return l}}(L,N)||function(e,n){if(e){if("string"==typeof e)return x(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?x(e,n):void 0}}(L,N)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),j=O[0],T=O[1],P=b.O.getSize(C,e.size),F="sm"===P,D=a.useContext(f.BR).isSortable,H=null===(l=null===(t=e.video)||void 0===t?void 0:t.subjectPresentationAudiences)||void 0===l?void 0:l.data,G=(0,S.n)(H,e.presentationAudiences),z=D&&!C.xs&&(T||void 0===e.index||!e.showIndexes),V=e.showIndexes&&!z&&!C.xs,R=(z||e.showIndexes)&&!C.xs,M=null===(s=e.getVideoAppLink)||void 0===s?void 0:s.call(e,e.video,{}),U=function(){var n;return null===(n=e.getSubTextAppLink)||void 0===n?void 0:n.call(e,e.video)}(),Z={analyticsData:e.analyticsData,analyticsOptions:null!==(w=e.analyticsOptions)&&void 0!==w?w:{entity:o.py.Video,location:o.LZ.VideoListItem}};return a.createElement("div",{ref:j,className:"w-100"},a.createElement("div",{className:"row g-0 ".concat(F?"":"py-2"),style:e.style,ref:n},a.createElement(i.Z,Object.assign({},b.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start mb-1 mb-sm-0 pb-sm-2 pe-sm-2 px-md-2 pb-md-0"}),a.createElement(r.Z,null,a.createElement(m.r,{index:e.index,showDragHandle:z,showIndexes:V,dragHandleIcon:e.dragHandleIcon,dragHandleIconSize:e.dragHandleIconSize,dragAttributes:e.dragAttributes,dragListeners:e.dragListeners}),a.createElement(i.Z,{xs:b.O.getThumbnailColSize(R)},a.createElement(c.u,Object.assign({},Z,{video:e.video,appLink:M,audience:G,imageOptions:{size:R?h.h2.Small:h.h2.Medium},textPosition:E.z.Independent,setFavourite:e.setFavourite,canFavourite:e.canFavourite,type:"static",canRemovePrivateVideos:e.canRemovePrivateVideos,showSignIn:e.showSignIn,hideRating:!1,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:"none",isPlugin:e.isPlugin}))))),a.createElement(i.Z,Object.assign({},b.O.getDetailsColumns(),{className:"d-flex flex-column px-0 px-md-2 pb-0 pb-sm-2 pb-md-0 justify-content-md-between"}),a.createElement("div",null,a.createElement(v.H,Object.assign({},Z,{video:e.video,showSignIn:e.showSignIn,signInAppLink:null===(A=e.getSignInAppLink)||void 0===A?void 0:A.call(e,M)})),a.createElement(y.$,Object.assign({},Z,{video:e.video,appLink:U,type:e.subTextType})),a.createElement(g.u,Object.assign({video:e.video,appLink:M,size:P,yearGroups:e.yearGroups},Z)),!F&&a.createElement(u.g,{video:e.video,showSignIn:e.showSignIn}),a.createElement(p.B,{video:e.video,yearGroups:e.yearGroups})),!e.hideVideoGuidance&&a.createElement(d.u,Object.assign({video:e.video,getVideoAppLink:e.getVideoAppLink,getClassroomGuideAppLink:e.getClassroomGuideAppLink,getResourceGuidanceAppLink:e.getResourceGuidanceAppLink,getInteractiveGuidanceAppLink:e.getInteractiveGuidanceAppLink,containerClassName:"d-flex justify-content-start align-items-center pt-sm-1 gap-1",responsiveClassName:"ggZzR"},Z)))))}));A.defaultProps={dragHandleIcon:w.vn.Handle,dragHandleIconSize:s.S.Small,size:"md"};var L=function(e){return a.createElement(l.W,{id:e.video.id,childComponent:A,childProps:e})}},51365:(e,n,t)=>{t.d(n,{M:()=>a});var a=t(32735).createContext(null)},68050:(e,n,t)=>{t.d(n,{Z:()=>c});var a=t(95685),i=t.n(a),r=t(32735),o=t(46304),l=t(74512);const s=r.forwardRef((({bsPrefix:e,className:n,as:t="div",...a},r)=>{const s=(0,o.vE)(e,"row"),c=(0,o.pi)(),d=(0,o.zG)(),u=`${s}-cols`,m=[];return c.forEach((e=>{const n=a[e];let t;delete a[e],null!=n&&"object"==typeof n?({cols:t}=n):t=n;const i=e!==d?`-${e}`:"";null!=t&&m.push(`${u}${i}-${t}`)})),(0,l.jsx)(t,{ref:r,...a,className:i()(n,s,...m)})}));s.displayName="Row";const c=s}}]);
2
- //# sourceMappingURL=3231-7e9965499c-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/3231-7e9965499c-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/backbone/utils/ScrollHelper.ts","file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/components/actions/actions.scss","file:///app/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","file:///app/packages/libs/shared/src/components/drag-drop-move/DragDropMoveWrapper.tsx","file:///app/packages/libs/shared/src/components/pagination/Pagination.tsx","file:///app/packages/libs/shared/src/components/sortable/SortableContainerWrapper.tsx","file:///app/packages/libs/shared/src/components/sortable/SortableItemWrapper.tsx","file:///app/packages/libs/shared/src/components/video-list/video-list.scss","file:///app/packages/libs/shared/src/components/video-list/VideoList.tsx","file:///app/packages/libs/shared/src/components/video-list/VideoListHelper.tsx","file:///app/packages/libs/shared/src/components/video-list/clip-item/ClipItem.tsx","file:///app/packages/libs/shared/src/components/video-list/clip-item/clip-item.scss","file:///app/packages/libs/shared/src/components/video-list/components/video-item-actions/VideoItemActions.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-left-content/video-item-left-content.scss","file:///app/packages/libs/shared/src/components/video-list/components/video-item-left-content/VideoItemLeftContent.tsx","file:///app/packages/libs/shared/src/components/sign-in-to-watch/SignInToWatch.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-top-right/VideoItemTopRight.tsx","file:///app/packages/libs/shared/src/components/video-list/interactive-item/InteractiveItem.tsx","file:///app/packages/libs/shared/src/components/video-list/video-item/VideoItem.tsx","file:///app/packages/libs/shared/src/components/video-list/video-item/video-item.scss","file:///app/packages/libs/shared/src/context/VideoActionsContext.tsx","file:///app/node_modules/react-bootstrap/esm/Row.js"],"sourcesContent":["import { Radio } from 'backbone';\n\nimport { CommonChannels } from '../constants/CommonChannels';\n\nexport const ScrollHelper = {\n // Will prevent scrolling to the top of the page when applinks are triggered\n preventScrollTop(): void {\n Radio.channel(CommonChannels.SHELL).trigger('prevent:scroll:top');\n }\n};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n <>\n <span className='d-flex align-items-center'>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n \n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </span>\n </>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dropdownToggle\":\"UCAnJ\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label\n : () => <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2' />}\n {label()}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <div className='dropdown-menu dropdown-menu-end dropdown-menu-right' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <React.Fragment key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </React.Fragment>\n );\n }\n \n return (\n <React.Fragment key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </React.Fragment>\n );\n })\n }\n </div>\n </div>\n );\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 });\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)\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 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}","// extracted by mini-css-extract-plugin\nexport default {\"sortableVideo\":\"xaH09\",\"videoList\":\"kO5Q0\",\"badgeContainer\":\"FP8l5\",\"dragStyle\":\"HF8j1\"};","import * as React from 'react';\nimport { DragEndEvent, DragStartEvent } from '@dnd-kit/core';\n\nimport { Cursors } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\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 { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, FavouriteFunc, InteractiveMetadata, PresentationAudience, Video, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\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.scss';\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 yearGroups?: YearGroup[];\n getVideoAppLink: (video: VideoTypes, options: GetVideoAppLinkOptions) => Core.AppLink;\n getSignInAppLink?: (appLink: Core.AppLink) => Core.AppLink;\n getPreviewQuestionsAppLink?: (interactive: InteractiveMetadata) => Core.AppLink;\n getSubTextAppLink?: (video: Video) => Core.AppLink;\n getInteractiveGuidanceAppLink?: (id: string, type: MasterType) => Core.AppLink;\n getResourceGuidanceAppLink?: (id: string, type: MasterType) => Core.AppLink;\n getClassroomGuideAppLink?: (id: string, type: MasterType) => Core.AppLink;\n hideVideoGuidance?: boolean;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n cursors?: Cursors;\n dragHandleIcon?: string;\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 companyLogoFallbackUrl?: string;\n subTextType?: VideoSubTextType;\n hasPermissions: HasPermissionsFunc;\n imageCdnUrl?: string;\n isPlugin: boolean;\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 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 <div>\n <Checkbox\n className='mx-0 mx-md-2'\n id={v.id}\n onChange={() => CheckboxHelper.onToggleItem(v.id)}\n checked={CheckboxHelper.isChecked(v.id)}\n />\n \n </div>\n )}\n <Component\n video={v}\n yearGroups={props.yearGroups}\n index={idx}\n getVideoAppLink={props.getVideoAppLink}\n getSubTextAppLink={props.getSubTextAppLink}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n dragHandleIcon={props.dragHandleIcon}\n dragHandleIconSize={props.dragHandleIconSize}\n showSignIn={props.showSignIn}\n getSignInAppLink={props.getSignInAppLink}\n analyticsData={{\n pagePositionIndex: pagePositionStartingIndex + idx\n }}\n hasPermissions={props.hasPermissions}\n canRemovePrivateVideos={props.canRemovePrivateVideos}\n presentationAudiences={props.presentationAudiences}\n showIndexes={props.showIndexes}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n getPreviewQuestionsAppLink={props.getPreviewQuestionsAppLink}\n imageCdnUrl={props.imageCdnUrl}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={props.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={props.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={props.getResourceGuidanceAppLink}\n hideVideoGuidance={props.hideVideoGuidance}\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 yearGroups={props.yearGroups}\n getVideoAppLink={props.getVideoAppLink}\n getSubTextAppLink={props.getSubTextAppLink}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n dragHandleIcon={props.dragHandleIcon}\n dragHandleIconSize={props.dragHandleIconSize}\n showSignIn={props.showSignIn}\n getSignInAppLink={props.getSignInAppLink}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n hasPermissions={props.hasPermissions}\n imageCdnUrl={props.imageCdnUrl}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={props.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={props.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={props.getResourceGuidanceAppLink}\n hideVideoGuidance={props.hideVideoGuidance}\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};","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.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 setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n canRemovePrivateVideos={props.canRemovePrivateVideos}\n showSignIn={props.showSignIn}\n subTextType='none'\n imageCdnUrl={props.imageCdnUrl}\n isPlugin={props.isPlugin}\n />\n </Col>\n </Row>\n </Col>\n\n <Col\n {...VideoListHelper.getDetailsColumns()}\n className={`${isSmall ? 'pb-2' : 'px-2'} d-flex flex-column justify-content-between`}\n >\n <div>\n <VideoItemTopRight\n {...analyticsProps}\n video={props.video}\n showSignIn={props.showSignIn}\n signInAppLink={props.getSignInAppLink?.(appLink)}\n />\n\n <VideoItemTitle\n video={props.video}\n appLink={appLink}\n size={size}\n yearGroups={props.yearGroups}\n {...analyticsProps}\n />\n\n {!isSmall && (\n <VideoItemDescription video={props.video} showSignIn={props.showSignIn} />\n )}\n\n <VideoItemRestrictionBadge video={props.video} yearGroups={props.yearGroups}/>\n </div>\n\n {VideoHelper.showVideoGuidance(props.hasPermissions) && (\n <VideoItemGuidance\n video={props.video}\n getVideoAppLink={props.getVideoAppLink}\n getClassroomGuideAppLink={props.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={props.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={props.getResourceGuidanceAppLink}\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\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};","// extracted by mini-css-extract-plugin\nexport default {\"responsiveGuidance\":\"_4ms1w\"};","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 { 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='float-end mt-n1'\n actionsDropdownClassName='btn btn-link ms-1'\n fetchMore={videoActions.fetchMoreActions ? () => videoActions.fetchMoreActions(props.video) : null}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dragHandleContainer\":\"mcAFC\"};","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 { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './video-item-left-content.scss';\n\ninterface VideoItemLeftContentProps {\n index: number;\n showDragHandle: boolean;\n showIndexes: boolean;\n dragHandleIcon: string;\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 svgName={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: cvSvgLibrary.Handle,\n dragHandleIconSize: SvgContainerSize.Small\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 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 float-end' />;\n\n return (\n <VideoItemActions\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\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 type InteractiveItemProps = BaseVideoItemProps<InteractiveMetadata> & {\n getPreviewQuestionsAppLink: (interactive: InteractiveMetadata) => Core.AppLink;\n imageCdnUrl?: string;\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 setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n canRemovePrivateVideos={props.canRemovePrivateVideos}\n showSignIn={props.showSignIn}\n subTextType='none'\n hideDuration={isSmall}\n imageCdnUrl={props.imageCdnUrl}\n isPlugin={props.isPlugin}\n />\n </Col>\n </Row>\n </Col>\n\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <VideoItemTopRight\n {...analyticsProps}\n video={props.video}\n showSignIn={props.showSignIn}\n signInAppLink={props.getSignInAppLink?.(appLink)}\n />\n\n <VideoItemTitle\n video={props.video}\n appLink={appLink}\n size={size}\n yearGroups={props.yearGroups}\n {...analyticsProps}\n />\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 video={props.video} showSignIn={props.showSignIn} />\n )}\n\n <VideoItemRestrictionBadge video={props.video} yearGroups={props.yearGroups}/>\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, VideoSubTextType } 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 { Video } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './video-item.scss';\n\nexport type VideoItemProps = BaseVideoItemProps<Video> & {\n getSubTextAppLink: (video: Video) => Core.AppLink;\n subTextType?: VideoSubTextType;\n isPlugin: boolean;\n};\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.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 setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n type='static'\n canRemovePrivateVideos={props.canRemovePrivateVideos}\n showSignIn={props.showSignIn}\n hideRating={false}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType='none'\n isPlugin={props.isPlugin}\n />\n </Col>\n </Row>\n </Col>\n <Col\n {...VideoListHelper.getDetailsColumns()}\n className={`d-flex flex-column px-0 px-md-2 pb-0 pb-sm-2 pb-md-0 justify-content-md-between`}\n >\n <div>\n <VideoItemTopRight\n {...analyticsProps}\n video={props.video}\n showSignIn={props.showSignIn}\n signInAppLink={props.getSignInAppLink?.(appLink)}\n />\n\n <VideoSubText\n {...analyticsProps}\n video={props.video}\n appLink={subTextAppLink}\n type={props.subTextType}\n />\n\n <VideoItemTitle\n video={props.video}\n appLink={appLink}\n size={size}\n yearGroups={props.yearGroups}\n {...analyticsProps}\n />\n\n {!isSmall && (\n <VideoItemDescription video={props.video} showSignIn={props.showSignIn} />\n )}\n\n <VideoItemRestrictionBadge video={props.video} yearGroups={props.yearGroups}/>\n </div>\n\n {!props.hideVideoGuidance && (\n <VideoItemGuidance\n video={props.video}\n getVideoAppLink={props.getVideoAppLink}\n getClassroomGuideAppLink={props.getClassroomGuideAppLink}\n getResourceGuidanceAppLink={props.getResourceGuidanceAppLink}\n getInteractiveGuidanceAppLink={props.getInteractiveGuidanceAppLink}\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: cvSvgLibrary.Handle,\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};","// extracted by mini-css-extract-plugin\nexport default {\"responsiveGuidance\":\"ggZzR\"};","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);","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;"],"names":["ScrollHelper","preventScrollTop","Radio","trigger","Actions","props","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","className","length","map","idx","key","label","appLink","href","onClick","svgName","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","title","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","dropdownToggleSvgSize","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","AppLink","SvgContainer","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","type","id","size","showDivider","undefined","group","Tooltip","defaultProps","S","DragDropMoveWrapper","data","draggable","dragActive","active","isDragging","attributes","listeners","draggableRef","setNodeRef","droppable","isOver","over","dropActive","droppableRef","Array","isArray","includes","toString","setIsDragging","ref","dragStyle","dropStye","children","buildCursor","cursorParam","prevHack","currentParams","params","previous","application","args","cursor","Pagination","cursors","buttonVariant","scrollTop","onClickButton","page","location","entity","actionType","value","display","phrase","next","variant","SortableContainerWrapper","activeId","setActiveId","sensors","activationConstraint","distance","coordinateGetter","collisionDetection","onDragStart","event","onSortStart","onDragEnd","onSortEnd","modifiers","vertical","items","ids","strategy","dropAnimation","getDragOverlay","duration","easing","SortableItemWrapper","transform","transition","isSorting","activeIndex","overIndex","index","touchAction","position","visibility","Children","childComponent","dragDirection","getDragDirection","childProps","dragListeners","dragAttributes","getItemComponent","video","isSortable","VideoHelper","ClipItem","InteractiveItem","VideoItem","SortableVideoListContext","VideoList","CheckboxHelper","checkboxHelper","currentAppLink","videos","v","Component","pagePositionStartingIndex","Number","isInteger","startingPositionIndex","dragData","getSelectedCount","isChecked","getSelected","drag","allowBulkAction","Checkbox","onChange","onToggleItem","checked","yearGroups","getVideoAppLink","getSubTextAppLink","setFavourite","canFavourite","dragHandleIcon","dragHandleIconSize","showSignIn","getSignInAppLink","pagePositionIndex","hasPermissions","canRemovePrivateVideos","presentationAudiences","showIndexes","companyLogoFallbackUrl","subTextType","getPreviewQuestionsAppLink","imageCdnUrl","isPlugin","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","hideVideoGuidance","SortableVideoList","find","Provider","currentSortingIndex","VideoListHelper","getThumbnailColumns","xs","sm","lg","getDetailsColumns","getSize","breakpoints","getThumbnailColSize","hasDragHandle","useBreakpoints","hoverRef","hovered","isSmall","mergedAudience","subjectPresentationAudiences","showDragHandle","hasIconOrIndex","analyticsProps","Col","Row","VideoItemLeftContent","VideoThumbnail","audience","imageOptions","textPosition","ThumbnailTextPosition","VideoItemTopRight","signInAppLink","VideoItemTitle","VideoItemDescription","VideoItemRestrictionBadge","VideoItemGuidance","containerClassName","responsiveClassName","SortableClipItem","VideoItemActions","videoActions","getVideoActions","fetchMoreActions","baseClassName","dragProps","namespace","SignInToWatch","Text","canNavigate","hideDuration","timepoints","_timepoints","previewAppLink","SortableInteractiveItem","videoAudiences","subTextAppLink","hideRating","VideoSubText","SortableVideoItem","VideoActionsContext","bsPrefix","as","decoratedBsPrefix","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","displayName"],"sourceRoot":""}