@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/5940-511beff2ee-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/playlists/components/playlist-list/PartialPlaylistList.tsx","file:///app/packages/libs/shared/src/apps/playlists/components/playlist-count/playlist-count.scss","file:///app/packages/libs/shared/src/apps/playlists/components/playlist-count/PlaylistCount.tsx","file:///app/packages/libs/shared/src/apps/playlists/components/playlist-list/PlaylistOwnerAvatar.tsx","file:///app/packages/libs/shared/src/apps/playlists/components/playlist-list/PlaylistItem.tsx","file:///app/packages/libs/shared/src/apps/playlists/components/playlist-list/PlaylistList.tsx","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/audience-label/AudienceLabel.tsx","file:///app/packages/libs/shared/src/components/infinite-scroll-footer/infinite-scroll-footer.scss","file:///app/packages/libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/libs/shared/src/hooks/UseMergeAudiences.ts","file:///app/packages/libs/shared/src/utils/audience-helper/AudienceStringBuilders.ts","file:///app/packages/libs/shared/src/utils/audience-helper/AudienceHelper.ts","file:///app/packages/libs/shared/src/apps/playlists/components/sort-select/PlaylistSortSelect.tsx","file:///app/packages/projects/lite/src/apps/playlists/components/favourites-playlist-item/favourites-playlist-item.scss","file:///app/packages/projects/lite/src/apps/playlists/components/favourites-playlist-item/FavouritesPlaylistItem.tsx","file:///app/packages/projects/lite/src/apps/playlists/views/playlists/empty-state/PlaylistsEmptyState.tsx","file:///app/packages/projects/lite/src/apps/playlists/views/playlists/PlaylistsView.tsx","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/views/favourites/hooks/useFavouritesCount.ts","file:///app/packages/libs/shared/src/apps/playlists/components/playlist-list/playlist.scss","file:///app/node_modules/react-bootstrap/esm/Row.js","file:///app/node_modules/timeago.js/esm/lang/en_US.js","file:///app/node_modules/timeago.js/esm/lang/zh_CN.js","file:///app/node_modules/timeago.js/esm/register.js","file:///app/node_modules/timeago.js/esm/utils/date.js","file:///app/node_modules/timeago.js/esm/format.js","file:///app/node_modules/timeago.js/esm/index.js"],"sourcesContent":["import * as React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport styles from './playlist.scss';\n\ninterface PartialPlaylistListProps {\n numItems?: number;\n itemClassName?: string;\n showHeading?: boolean;\n}\n\nPartialPlaylistList.defaultProps = {\n numItems: 8\n};\n\nexport function PartialPlaylistList(props: PartialPlaylistListProps): JSX.Element {\n const PARTIAL_PLAYLISTS = [...Array(props.numItems)];\n\n const className = props.itemClassName || '';\n\n return (\n <>\n {props.showHeading && <div className={`${styles.partialHeading} mb-1 partial-loading-background`} />}\n <Row className='mx-n1 mb-n2'>\n {PARTIAL_PLAYLISTS.map((p, idx) => (\n <Col key={idx} xs={6} sm={4} lg={3} className={`${className} px-1 pb-2`}>\n <div className={`${styles.playlistItem} partial-loading-background rounded-3`} />\n </Col>\n ))}\n </Row>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"fontSmall\":\"OYBRp\"};","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Playlist } from 'libs/shared/interfaces';\n\nimport styles from './playlist-count.scss';\n\nconst namespace = 'playlists.playlistCount';\n\nfunction getCount(playlist: Playlist): number | false {\n if (!playlist)\n return false;\n\n const videos = playlist.videos?.count ?? 0;\n const interactives = playlist.interactives?.count ?? 0;\n const clips = playlist.clips?.count ?? 0;\n\n return videos + interactives + clips;\n}\n\ninterface PlaylistCountProps {\n playlist: Playlist;\n}\n\nexport function PlaylistCount(props: PlaylistCountProps): JSX.Element {\n const count = getCount(props.playlist);\n\n if (count === false || Number.isNaN(count))\n return <></>;\n\n return (\n <span className={styles.fontSmall}>\n <Text namespace={namespace} phrase='count' options={{ smartCount: count }} />\n </span>\n );\n}","import * as React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { ClickViewAvatar } from 'libs/shared/components/clickview-avatar/ClickViewAvatar';\nimport { CurrentUser, Playlist } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\ninterface PlaylistOwnerAvatarProps {\n playlist: Playlist;\n imageCdnUrl: string;\n currentUser?: CurrentUser;\n}\n\nexport function PlaylistOwnerAvatar(props: PlaylistOwnerAvatarProps): JSX.Element {\n const { _liteOwner } = props.playlist;\n\n if (props.playlist._isClickViewCurated?.value)\n return (\n <ClickViewAvatar />\n );\n\n if (!_liteOwner?.id || !props.currentUser?.id)\n return <></>;\n\n const currentUserIsOwner = _liteOwner.id.toString() === props.currentUser.id.toString();\n\n if (currentUserIsOwner)\n return <></>;\n\n const url = typeof _liteOwner.avatar === 'string' ? _liteOwner.avatar : _liteOwner.avatar?.url;\n\n return (\n <Avatar\n imageUrl={url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(_liteOwner.name, _liteOwner.surname)}\n />\n );\n}","import * as React from 'react';\nimport { format } from 'timeago.js';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsOptions, EntityType, HashObject } from 'libs/analytics/interfaces';\n\nimport { PlaylistCount } from 'libs/shared/apps/playlists/components/playlist-count/PlaylistCount';\nimport { PlaylistOwnerAvatar } from 'libs/shared/apps/playlists/components/playlist-list/PlaylistOwnerAvatar';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ResizeType } from 'libs/shared/enums/Images';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { CurrentUser, Playlist, PresentationAudience } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './playlist.scss';\n\nconst namespace = 'playlists.playlistList';\n\nexport type PlaylistItemStyle = 'square' | 'round' | 'round-left';\n\nexport interface PlaylistItemProps {\n data: Playlist;\n appLink: Core.AppLink;\n currentUser?: CurrentUser;\n presentationAudiences?: PresentationAudience[];\n bgColourClassNames?: string[];\n titleClassName?: string;\n imageCdnUrl?: string;\n itemStyle?: PlaylistItemStyle;\n showCount?: boolean;\n showOwner?: boolean;\n showFallbackImage?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n audienceLabelClass?: string;\n}\n\nPlaylistItem.defaultProps = {\n itemStyle: 'square'\n};\n\nexport function PlaylistItem(props: PlaylistItemProps): JSX.Element {\n const imageUrl = ImageHelper.createUrl(props.data.cover && props.data.cover.url, {\n size: ImageSize.Medium,\n resizeType: ResizeType.Cover\n });\n\n const audiences = props.data.subjectPresentationAudiences &&\n props.data.subjectPresentationAudiences.data;\n\n const mergedAudience = useMergeAudiences(audiences, props.presentationAudiences);\n\n let className = styles.playlistItem;\n\n const showImage = !!imageUrl || !!props.showFallbackImage;\n\n if (showImage)\n className += ` ${styles.playlistItemGradient}`;\n\n if (!showImage && props.bgColourClassNames)\n className += ` ${styles.playlistItem} ${getBgColorClass(props.data.name, props.bgColourClassNames)}`;\n\n if (props.itemStyle === 'round')\n className += ` rounded-3 overflow-hidden`;\n\n if (props.itemStyle === 'round-left')\n className += ` rounded-start-lg overflow-hidden`;\n\n const analyticsData = { ...props.analyticsData,\n id: props.data?.id,\n name: props.data?.name\n };\n\n const analyticsOptions = {\n ...props.analyticsOptions,\n entity: EntityType.Playlist\n };\n\n const getTitle = () => {\n if (!props.data.contentModifiedDate || props.data._isClickViewCurated?.value)\n return '';\n\n return LanguageService.getPhrase(namespace, 'lastUpdated', {\n timeago: format(DateHelper.convertUTCToLocal(props.data.contentModifiedDate))\n });\n };\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n title={getTitle()}\n >\n <BaseImage data={imageUrl} alt={props.data.name} className={className}>\n {!!props.showFallbackImage && <ImageFallback type={ImageFallbackType.Playlist} />}\n <div className={`text-white ${styles.playlistMetadata}`}>\n {!!props.showCount && (\n <PlaylistCount playlist={props.data} />\n )}\n <h5 className={`mb-0 ${props.titleClassName || ''}`}><span className='clamp-2'>{props.data.name}</span></h5>\n {!!audiences && !!audiences.length && !!mergedAudience &&\n <AudienceLabel\n className={`${props.audienceLabelClass ? props.audienceLabelClass : ''} mt-1`}\n audience={mergedAudience}\n border='white'\n />\n }\n </div>\n {!!props.showOwner && !!props.imageCdnUrl &&\n <div className={styles.ownerAvatarContainer}>\n <PlaylistOwnerAvatar\n playlist={props.data}\n currentUser={props.currentUser}\n imageCdnUrl={props.imageCdnUrl}\n />\n </div>\n }\n </BaseImage>\n </AppLink>\n );\n}","import * as React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { CurrentUser, Playlist, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { PlaylistItem, PlaylistItemStyle } from './PlaylistItem';\n\ninterface PlaylistListProps {\n playlists: Playlist[];\n getPlaylistAppLink: (playlist: Playlist) => Core.AppLink;\n currentUser?: CurrentUser;\n presentationAudiences?: PresentationAudience[];\n itemContainerClassName?: string;\n itemTitleClassName?: string;\n bgColourClassNames?: string[];\n itemStyle?: PlaylistItemStyle;\n imageCdnUrl?: string;\n showCount?: boolean;\n showOwner?: boolean;\n showFallbackImage?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n extraPlaylistItem?: JSX.Element;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Playlist,\n location: LocationContext.PlaylistListItem,\n descriptor: ClickDescriptor.Cover\n};\n\nexport function PlaylistList(props: PlaylistListProps): JSX.Element {\n return (\n <Row className='mx-n1'>\n {props.extraPlaylistItem && (\n <Col key='extra-playlist-item' xs={6} sm={4} lg={3} className={`mb-2 px-1 ${props.itemContainerClassName ? props.itemContainerClassName : ''}`}>\n {props.extraPlaylistItem}\n </Col>\n )}\n\n {props.playlists.map(p => (\n <Col key={p.id} xs={6} sm={4} lg={3} className={`mb-2 px-1 ${props.itemContainerClassName ? props.itemContainerClassName : ''}`}>\n <PlaylistItem\n data={p}\n appLink={props.getPlaylistAppLink(p)}\n imageCdnUrl={props.imageCdnUrl}\n currentUser={props.currentUser}\n presentationAudiences={props.presentationAudiences}\n bgColourClassNames={props.bgColourClassNames}\n showCount={props.showCount}\n showOwner={props.showOwner}\n showFallbackImage={props.showFallbackImage}\n titleClassName={props.itemTitleClassName}\n itemStyle={props.itemStyle}\n analyticsData={props.analyticsData}\n analyticsOptions={{ ...props.analyticsOptions, ...analyticsOptions }}\n />\n </Col>\n ))}\n </Row>\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 showBorder?: boolean; // only works for button without text label\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 showBorder={a.showBorder}\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 { Audience } from 'libs/shared/interfaces';\n\nimport styles from './audience-label.scss';\n\ntype AudienceBorderColour = 'dark' | 'white';\n\ninterface AudienceLabelProps {\n audience: Audience;\n border: AudienceBorderColour;\n className?: string;\n}\n\nexport function AudienceLabel(props: AudienceLabelProps): JSX.Element {\n if (!props.audience)\n return <></>;\n\n // Note: the audience-label class is applied so that parent components can override styling, and Online can style this component\n return (\n <div\n className={`audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ${'border-' + props.border} ${props.className ? props.className : ''}`}\n >\n {props.audience.name}\n </div>\n );\n}\n\ninterface AudienceLabelListProps {\n audiences: Audience[];\n border: AudienceBorderColour;\n}\n\nexport function AudienceLabelList(props: AudienceLabelListProps): JSX.Element {\n if (!props.audiences || !props.audiences.length)\n return <></>;\n\n return (\n <>\n {props.audiences.map((a, idx) => (\n <span key={idx} className={styles.audienceLabelListItem}>\n <AudienceLabel audience={a} border={props.border} />\n </span>\n ))}\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"VwD1b\",\"spinner\":\"eJ85e\"};","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './infinite-scroll-footer.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`} ref={ref}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <SvgContainer\n svgName={cvSvgLibrary.ChevronDown}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n )\n }\n </div>\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 { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import React from 'react';\n\nimport { Audience, PresentationAudience } from '../interfaces';\nimport { AudienceHelper } from '../utils/audience-helper/AudienceHelper';\n\nexport function useMergeAudiences(\n audiences: Audience[],\n presentationAudiences: PresentationAudience[]\n): PresentationAudience {\n // Memoize the audience functions as they are somewhat expensive and the result shouldn't change\n const sortedAudiences = React.useMemo(() => {\n if (!audiences?.length || !presentationAudiences || !AudienceHelper.shouldShowAudiences(presentationAudiences))\n return null;\n\n return AudienceHelper.getSortedPresentationAudiences(audiences, presentationAudiences);\n }, [audiences]);\n\n const mergedAudience = React.useMemo(() => {\n if (!sortedAudiences?.length)\n return null;\n\n return AudienceHelper.getMergedPresentationAudienceString(sortedAudiences);\n }, [sortedAudiences]);\n\n return mergedAudience;\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nconst HAS_NUMBER_REGEX = /\\d/;\nconst COUNT_OFFSET = 1;\n\nexport const AudienceStringBuilders = {\n /**\n * Handles audience sets like:\n * - Year 7, Year 8, etc\n * - Kindergarten, Grade 1, Grade 2, etc\n */\n yearsAndGradesBuilder(audiences: PresentationAudience[]): string {\n /**\n * Create a string with all of the audiences\n */\n const combinedNames = audiences.map(a => a.name).join(' ');\n\n /**\n * Extract all the numbers and matches from the string\n */\n const numberList = combinedNames.split(' ').filter(name => !isNaN(+name)).map(num => +num) || [];\n const wordList = combinedNames.split(' ').filter(name => isNaN(+name)) || [];\n\n // Find an audience that doesn't have a number, like \"Kindergarten\" or \"Foundation\".\n const audienceWithoutNum = audiences.find(p => {\n return !HAS_NUMBER_REGEX.test(p.name);\n });\n\n // Get audience label prefix\n let prefix = wordList.find(name => name !== audienceWithoutNum?.name);\n\n // Pluralise the prefix is there are multiple audiences\n if (audiences.length > 1)\n prefix += 's';\n\n if (audienceWithoutNum && numberList.length)\n return `${prefix} ${audienceWithoutNum.name.charAt(0)} - ${numberList.pop()}`;\n\n /**\n * Build set of logical audience ranges\n */\n const audienceRange = processAudienceRanges(numberList);\n\n return `${prefix} ${audienceRange.join(', ')}`;\n },\n\n /**\n * Handles audience sets like:\n * - Early Level, First Level, etc\n * - Lower Primary, Middle Primary, etc\n */\n wordyLevelsBuilder(audiences: PresentationAudience[]): string {\n const audienceNames = audiences.map(a => a.name);\n\n const commonWordsAndTheirPositions: { [word: string]: 'start' | 'end' } = {};\n\n /**\n * Go through each audience name, and find the words that are common between _all_ of the audiences.\n * For example, if the audiences are \"Early Level\", \"First Level\", and \"Second Level\", the common\n * word will be \"Level\".\n * We will also save whether the common word appears at the beginning or the end of the audience name.\n */\n audienceNames.forEach((name, index) => {\n if (index === 0) {\n const wordsInName = name.split(' ');\n wordsInName.forEach((word, index) => {\n commonWordsAndTheirPositions[word] = index === 0 ? 'start' : 'end';\n });\n\n return;\n }\n\n const wordsInName = name.split(' ');\n\n Object.keys(commonWordsAndTheirPositions).forEach(word => {\n if (!wordsInName.includes(word))\n delete commonWordsAndTheirPositions[word];\n });\n });\n\n // This function currently only handles audience names with 1 common word.\n const commonWord = Object.keys(commonWordsAndTheirPositions)[0];\n const commonWordPosition = commonWordsAndTheirPositions[commonWord];\n\n if (!commonWord)\n return audiences[0].name;\n\n /**\n * At this point, we will have a common word and the position of that word.\n * We now need to build out the rest of the audience name by merging the unique words.\n * For example, if the audiences are \"Early Level\", \"First Level\", and \"Second Level\", we will get\n * \"Early - Second\"\n */\n\n const firstAudienceName = audiences[0].name;\n const lastAudienceName = audiences[audiences.length - 1].name;\n\n // Function to strip the common word out of the audience name\n const stripOutCommonWord = (name: string) => name.split(commonWord)[0];\n\n const mergedWord = `${stripOutCommonWord(firstAudienceName)} - ${stripOutCommonWord(lastAudienceName)}`;\n\n const finalName = commonWordPosition === 'start'\n ? `${commonWord} ${mergedWord}`\n : `${mergedWord} ${commonWord}`;\n\n return finalName;\n },\n\n /**\n * Handles the english secondary audiences, which can be: Lower Secondary, Upper Secondary, and Advanced\n */\n englishSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Advanced') {\n const [level] = firstAudience.name.split(' ');\n\n if (level.toLowerCase() === 'lower')\n return 'Lower Sec - Adv';\n\n return 'Upper Sec - Adv';\n }\n\n return 'Lower - Upper Sec';\n },\n\n scottishSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Senior Phase')\n return `${firstAudience.name} - Senior`;\n\n return 'Third - Fourth Level';\n },\n\n /**\n * Handles the audience set: Reception, Key Stage 1, Lower Key Stage 2, and Upper Key Stage 2\n */\n keyStagesBuilder(audiences: PresentationAudience[]): string {\n // The first and last audience will build out the range\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n // The first word in the strings will either be \"Upper\", \"Lower\", \"Key\", or \"Reception\"\n const firstAudienceFirstWord = ArrayHelper.first(firstAudience.name.split(' '));\n const lastAudienceFirstWord = ArrayHelper.first(lastAudience.name.split(' '));\n\n // Each audience in this set except for \"Reception\" has a number. Get the numbers for the first and last audiences\n const firstAudienceNumber = firstAudience.name.split(' ').find(word => !isNaN(+word));\n const lastAudienceNumber = lastAudience.name.split(' ').find(word => !isNaN(+word));\n\n // If there's only one audience on the video:\n if (firstAudience === lastAudience) {\n // For these 2 audiences, return the full name as it's short enough already\n if (firstAudienceFirstWord === 'Key' || firstAudienceFirstWord === 'Reception')\n return firstAudience.name;\n\n // For the Upper/Lower key stage audiences, abbreviate the \"key stage\" part to KS1/KS2\n return `${firstAudienceFirstWord} KS${firstAudienceNumber}`;\n }\n\n /**\n * Handle when the object has >1 audience\n */\n\n let firstAudienceString = '';\n let lastAudienceString = '';\n\n // Reception is always shortened to \"R\" when in a range\n if (firstAudienceFirstWord === 'Reception') {\n firstAudienceString = 'R';\n } else {\n // All other audiences will be abbreviated to \"KS1/KS2\"\n firstAudienceString = `KS${firstAudienceNumber}`;\n }\n\n // The last audience will always be a key stage, so abbreviate this too\n lastAudienceString = `KS${lastAudienceNumber}`;\n\n // If the audience range contains both the \"Lower\" and \"Upper\" audiences, abbreviate those and return\n if (firstAudienceFirstWord === 'Lower' && lastAudienceFirstWord === 'Upper') {\n return `L ${firstAudienceString} - U ${lastAudienceString}`;\n }\n\n // Add \"Lower\" and \"Upper\" to the strings if it's needed\n if (firstAudienceFirstWord === 'Lower') {\n firstAudienceString = `Lower ${firstAudienceString}`;\n }\n\n if (lastAudienceFirstWord === 'Upper') {\n lastAudienceString = `Upper ${lastAudienceString}`;\n }\n\n // This handles a case where the range is Reception - Key Stage 1. In which case we don't abbreviate the key stage part to KS1.\n if (lastAudienceFirstWord === 'Key') {\n lastAudienceString = lastAudience.name;\n }\n\n return `${firstAudienceString} - ${lastAudienceString}`;\n }\n};\n\nfunction processAudienceRanges(audienceValues: number[]): string[] {\n /**\n * Lookahead by increments of offset\n */\n const offset = COUNT_OFFSET;\n\n let initialVal; let nextVal;\n let isContinguous: boolean = false;\n\n const ranges: string[] = [];\n\n // Audience values need to be in ascending order\n audienceValues = audienceValues.sort((a, b) => a - b);\n\n let i; let j;\n\n for (i = 0; i < audienceValues.length; i++) {\n j = i + 1;\n\n // Set our lower boundary to compare against\n if (!isContinguous)\n initialVal = audienceValues[i];\n\n nextVal = audienceValues[j];\n\n /**\n * Where the next number is also the next incremental value\n * we're going to continue iterating until the next value\n * is no longer contiguos.\n */\n if (audienceValues[i] + offset === nextVal) {\n isContinguous = true;\n } else if (isContinguous) {\n /**\n * Where we were tracking a contiguous set, format appropriately \n * and store the vals\n */\n\n ranges.push(`${initialVal} - ${audienceValues[i]}`);\n isContinguous = false;\n } else {\n /**\n * Where the values arent contiguous, just store the current value\n */\n\n ranges.push(`${audienceValues[i]}`);\n isContinguous = false;\n }\n }\n\n return ranges;\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { Audience, BaseObject, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { AudienceStringBuilders } from './AudienceStringBuilders';\n\nconst DIGIT_REGEX = /([0-9]+)/ig;\nconst SPACE_REGEX = /\\s|\\+/ig;\n\n/**\n * Where there is 1 or less audiences on a presentation, it provides little value to\n * the user's experience, so we'll hide audiences altogether.\n */\nconst MIN_AUDIENCE_THRESHOLD = 1;\n\nexport const AudienceHelper = {\n /**\n * This is needed to sort an object's audiences, as they are not sorted by the backend.\n * To do this, we take the presentation audiences (sorted) and filter them by the object's\n * audiences, leaving behind a sorted array of object audiences.\n */\n getSortedPresentationAudiences(\n objectAudiences: Audience[],\n presentationAudiences: PresentationAudience[]\n ): PresentationAudience[] {\n /**\n * Atm there is a bug in flight's optimize, around multiple parts of the page \n * fetching the same object with a different response. We are filtering out\n * falsey values in our object audience ids until that's fixed. - Sha\n */\n const objectAudienceIds = objectAudiences\n .filter(v => !!v)\n .map(audience => audience.id.toString());\n\n /**\n * Remove audiences that aren't relevant for the user's current presentation\n */\n const filteredAudiences = presentationAudiences.filter(presAudience => {\n return objectAudienceIds.includes(presAudience.masterId.toString());\n });\n\n return filteredAudiences;\n },\n\n /**\n * This function accepts a set of presentation audiences, and returns a single\n * audience where the name is a merged string of the names of all of the audiences passed in.\n *\n * As we add more presentations that have different audience sets, we'll need to extend the `switch`\n * statement below to either include new string builder functions, or to include new presentation IDs\n * for existing string builder functions.\n */\n getMergedPresentationAudienceString(presentationAudiences: PresentationAudience[]): PresentationAudience {\n const { presentationId } = ArrayHelper.first(presentationAudiences);\n\n let mergedAudienceString = '';\n\n switch (+presentationId) {\n // Generic `Name Number`. Sometimes has just name. Examples: Year 12, Grade 4, Kindergarten\n case HardCoded.PresentationIds.DEFAULT:\n case HardCoded.PresentationIds.AU_SECONDARY:\n case HardCoded.PresentationIds.US_ELEMENTARY:\n case HardCoded.PresentationIds.AU_PRIMARY:\n case HardCoded.PresentationIds.STREAMABLE_LEARNING:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n mergedAudienceString = AudienceStringBuilders.yearsAndGradesBuilder(presentationAudiences);\n break;\n\n // Early Level, First Level, Second Level, etc.\n case HardCoded.PresentationIds.SCOTLAND_PRIMARY:\n case HardCoded.PresentationIds.INTERNATIONAL_PRIMARY:\n case HardCoded.PresentationIds.INTERNATIONAL_SECONDARY:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n mergedAudienceString = AudienceStringBuilders.wordyLevelsBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.ENGLISH_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.englishSecondaryBuilder(presentationAudiences);\n break;\n\n \n case HardCoded.PresentationIds.SCOTLAND_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.scottishSecondaryBuilder(presentationAudiences);\n break;\n\n // Key Stage 1, Lower Key Stage 2, etc.\n case HardCoded.PresentationIds.ENGLAND_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.keyStagesBuilder(presentationAudiences);\n break;\n\n // These presentations only have 1 audience mapped. These are never shown as badges in the product.\n case HardCoded.PresentationIds.US_MIDDLE:\n case HardCoded.PresentationIds.US_HIGH:\n default:\n break;\n }\n\n if (!mergedAudienceString)\n return null;\n\n return { name: mergedAudienceString } as PresentationAudience;\n },\n\n /**\n * This function assumes the members array passed in is ordered by `name`.\n */\n sortMembersWithDuplicateNamesByAudience(members: BaseObject[]): BaseObject[] {\n // Returns the lowest level audience out of an array of audience objects by looking at the name\n const getLowestAudience = (audiences: Audience[]) => {\n if (!audiences.length)\n return null;\n\n let lowestAudience: Audience;\n let lowestAudienceDigit: number;\n\n audiences.forEach(audience => {\n const digit = +ArrayHelper.first(audience.name.match(DIGIT_REGEX));\n\n if (!lowestAudience) {\n lowestAudience = audience;\n lowestAudienceDigit = digit;\n return;\n }\n\n if (digit < lowestAudienceDigit)\n lowestAudience = audience;\n });\n\n return lowestAudience;\n };\n\n // This is used to track how many times a member's name appears in the collection\n const nameCountMap: HashObject<number> = {};\n\n let sorted: BaseObject[] = [];\n\n members.forEach(member => {\n if (!nameCountMap[member.name]) {\n nameCountMap[member.name] = 1;\n sorted.push(member);\n return;\n }\n\n sorted.push(member);\n nameCountMap[member.name]++;\n\n // Take the slice of duplicates that we want to sort by audience\n const slice = sorted.splice(sorted.length - nameCountMap[member.name]);\n\n // Sort the slice by lowest audience\n const sortedSlice = slice.sort((a: any, b: any) => {\n const firstObjLowestAudience = getLowestAudience(a.subjectPresentationAudiences.data);\n const secondObjLowestAudience = getLowestAudience(b.subjectPresentationAudiences.data);\n\n if (!firstObjLowestAudience && secondObjLowestAudience)\n return 1;\n\n if (!secondObjLowestAudience)\n return -1;\n\n const comparison = firstObjLowestAudience.name.localeCompare(secondObjLowestAudience.name);\n\n if (comparison === 0) return comparison;\n\n return comparison > 0 ? -1 : 1;\n });\n\n sorted = sorted.concat(sortedSlice);\n });\n\n return sorted;\n },\n\n getActiveAudiencesFromParams(audiences: PresentationAudience[], params: HashObject = {}): PresentationAudience[] {\n if (!ObjectHelper.isObject(params) || ObjectHelper.isEmpty(params))\n return;\n\n if (!audiences || !audiences.length)\n return;\n\n if (!AudienceHelper.shouldShowAudiences(audiences))\n return;\n\n // 'a' is shorthand for audience\n let { a } = params;\n\n if (!a)\n return;\n\n // Only a single query param was passed, we'll wrap it in an array\n if (typeof a === 'string')\n a = [a];\n\n const normalizeAudienceName = (audienceName: string) => {\n return audienceName.replace(SPACE_REGEX, '').toLowerCase();\n };\n\n // Build an audience lookup\n const audienceLookup = a.reduce((state: HashObject, audienceStr: string) => {\n state[normalizeAudienceName(audienceStr)] = audienceStr;\n return state;\n }, {});\n\n // Filter out our active audience based on whether their name matches the lookup object\n return audiences.filter((audience: PresentationAudience) => {\n return audienceLookup[normalizeAudienceName(audience.name)];\n });\n },\n\n getAudienceParams(audiences: PresentationAudience[]): HashObject {\n if (!audiences?.length)\n return null;\n\n return { a: audiences.map(a => a.name) };\n },\n\n shouldShowAudiences(audiences: PresentationAudience[] = []): boolean {\n if (!audiences)\n return false;\n\n return audiences.length > MIN_AUDIENCE_THRESHOLD;\n }\n};\n","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nconst namespace = 'playlists.playlistSortSelect';\n\nconst getSortTypes = FunctionHelper.memoize(() => {\n return {\n [PlaylistSortType.RecentlyUpdated]: {\n name: LanguageService.getPhrase(namespace, 'recentlyUpdated')\n },\n [PlaylistSortType.AtoZ]: {\n name: LanguageService.getPhrase(namespace, 'atoz')\n },\n [PlaylistSortType.ZtoA]: {\n name: LanguageService.getPhrase(namespace, 'ztoa')\n },\n [PlaylistSortType.Newest]: {\n name: LanguageService.getPhrase(namespace, 'newest')\n },\n [PlaylistSortType.Oldest]: {\n name: LanguageService.getPhrase(namespace, 'oldest')\n }\n };\n});\n\ninterface PlaylistSortSelectProps {\n type: PlaylistSortType;\n getSortAppLink: (sort: PlaylistSortType) => Core.AppLink;\n variant?: ButtonProps['variant'];\n}\n\nPlaylistSortSelect.defaultProps = {\n variant: 'light'\n};\n\nexport function PlaylistSortSelect(props: PlaylistSortSelectProps): JSX.Element {\n const { type, getSortAppLink, variant } = props;\n const sortTypes = getSortTypes();\n\n return (\n <div className='dropdown'>\n <a className={`btn btn-${variant} ms-2 dropdown-toggle`} type='button' id='sort-select' data-bs-toggle='dropdown' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>\n {sortTypes[type].name}\n </a>\n <div className='dropdown-menu dropdown-menu-end dropdown-menu-right' aria-labelledby='sort-select'>\n {Object.values(PlaylistSortType).map(k => {\n let className = 'dropdown-item';\n\n if (k === type)\n className += ' active';\n\n return (\n <AppLink\n key={k}\n className={className}\n appLink={getSortAppLink(k)}\n analyticsData={{\n sort: sortTypes[k].name\n }}\n analyticsOptions={{\n location: LocationContext.PlaylistListHeader,\n entity: EntityType.Playlists,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n >\n {sortTypes[k].name}\n </AppLink>\n );\n })}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"playlistMetadata\":\"vv8fW\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport styles from './favourites-playlist-item.scss';\n\nconst namespace = 'playlists.favouritesPlaylistItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FavouritesPlaylistItemProps {\n data: VideoTypes[];\n count: number;\n isLoadingCount: boolean;\n}\n\nexport function FavouritesPlaylistItem(props: FavouritesPlaylistItemProps): JSX.Element {\n const analyticsData = {\n name: 'Favourites',\n extraItem: 'user-favourites'\n };\n\n const analyticsOptions = {\n entity: EntityType.Playlist,\n actionType: UserAction.Click,\n location: LocationContext.PlaylistListItem\n };\n\n const coverUrl = ImageUrls.FAVOURITES_PLAYLIST.FAV_PLAYLIST_COVER ;\n const appLink = {\n application: AppChannels.MY_FAVOURITES,\n action: Actions.MyFavourites.MY_FAVOURITES\n };\n\n return (\n <AppLink\n appLink={appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n title={getPhrase('favouritesTitle')}\n >\n <div className='position-relative'>\n <div className={`text-white ${styles.playlistMetadata}`}>\n {!props.isLoadingCount && (\n <span>\n <Text namespace={namespace} phrase='count' options={{ smartCount: props.count }} />\n </span>\n )}\n <h5 className={`mb-0`}><span className='clamp-2'>{getPhrase('favouritesTitle')}</span></h5>\n </div>\n \n <img src={coverUrl} className='w-100 h-100 rounded-3'/>\n </div>\n </AppLink>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'playlists.playlistsEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PlaylistEmptyStateProps {\n isStudent: boolean;\n}\n\nexport function PlaylistsEmptyState(props: PlaylistEmptyStateProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Playlists.PLAYLISTS} altText={getPhrase('info')} />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase={props.isStudent ? 'studentInfo' : 'info'} /></EmptyState.Info>\n\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'cta')}\n icon={cvSvgLibrary.Plus}\n appLink={{\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.NEW_PLAYLIST\n }}\n />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n\nexport function PlaylistsPublicEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Playlists.PLAYLISTS_PUBLIC} altText={getPhrase('info')} />\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'publicCta')}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.PlaylistsLanding,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { PartialPlaylistList } from 'libs/shared/apps/playlists/components/playlist-list/PartialPlaylistList';\nimport { PlaylistList } from 'libs/shared/apps/playlists/components/playlist-list/PlaylistList';\nimport { PlaylistSortSelect } from 'libs/shared/apps/playlists/components/sort-select/PlaylistSortSelect';\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\nimport { PlaylistType } from 'libs/shared/apps/playlists/enums/PlaylistType';\nimport { PlaylistCollectionIdentifier } from 'libs/shared/apps/playlists/interfaces/identifiers/PlaylistCollectionIdentifier';\nimport { PlaylistSortHelper } from 'libs/shared/apps/playlists/utils/PlaylistSortHelper';\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Playlist } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useFavouritesCount } from 'shared/views/favourites/hooks/useFavouritesCount';\n\nimport { FavouritesPlaylistItem } from 'apps/playlists/components/favourites-playlist-item/FavouritesPlaylistItem';\n\nimport { PlaylistsEmptyState, PlaylistsPublicEmptyState } from './empty-state/PlaylistsEmptyState';\n\nconst namespace = 'playlists.playlists';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSortAppLink(sort: PlaylistSortType): Core.AppLink {\n return {\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.HOME,\n params: {\n sort: sort\n }\n };\n}\n\ninterface PlaylistsViewProps {\n getPlaylistAppLink: (playlist: Playlist) => Core.AppLink;\n sort?: PlaylistSortType;\n}\n\nexport function PlaylistsView(props: PlaylistsViewProps): React.ReactElement {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const { hasLocalPermissions, hasPermissions, isLoaded } = usePermissions();\n\n const isStudent = hasPermissions(PermissionName.StudentExperience);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const user = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n \n const audiences = usePresentationAudiences();\n\n const sort = !!user.data && PlaylistSortHelper.getOrSetSortType(user.data.id, props.sort);\n\n const { count, favourites, isLoading } = useFavouritesCount(user.data?.id);\n\n const favouritesPlaylist = {\n count,\n isLoadingCount: isLoading,\n data: favourites\n };\n\n const getPlaylistRequest = !!sort && ((cursor?: string) =>\n PlaylistRequests.getUserPlaylists(new PlaylistCollectionIdentifier(sort, cursor, PlaylistType.All)));\n\n const fetchNext = !!getPlaylistRequest && ((cursor?: string) => {\n Flight.getFetch(dispatch)(getPlaylistRequest(cursor));\n });\n\n useSetPageMetadata({\n title: getPhrase('pageTitle'),\n description: getPhrase('pageDescription')\n });\n\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewPlaylistsLanding) && sort;\n\n const {\n items: playlists,\n hasMore,\n isFetching\n } = useInfiniteList<Playlist>(shouldFetch ? getPlaylistRequest : false, fetchNext, onError);\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(getPhrase('error'));\n }\n\n const actions = [\n {\n label: getPhrase('createPlaylist'),\n appLink: { application: AppChannels.PLAYLISTS, action: Actions.Playlists.NEW_PLAYLIST },\n svgName: cvSvgLibrary.Plus,\n className: 'btn btn-outline-dark',\n button: true,\n analyticsData: {},\n analyticsOptions: {\n location: LocationContext.Banner,\n entity: EntityType.Playlist,\n workflowPhase: WorkflowPhase.Start,\n actionType: UserAction.Create\n }\n }\n ];\n\n const dataLoaded = (\n !!playlists &&\n !!user.data &&\n !!config.data &&\n (!!audiences.data || audiences.hasError) &&\n !!isLoaded\n );\n\n if (hasLocalPermissions(LocalPermissionName.ViewPlaylistsLanding))\n return <PlaylistsPublicEmptyState />;\n\n if (dataLoaded && !favouritesPlaylist.count && !playlists?.length)\n return <PlaylistsEmptyState isStudent={isStudent} />;\n\n return (\n <div className='bg-white px-3'>\n <div className='d-flex justify-content-between align-items-end pb-3'>\n <h1 className='h2 mb-0'><Text namespace={namespace} phrase='headerTitle' /></h1>\n {!!sort &&\n <ActionsComponent\n actions={actions}\n sortComponent={(\n <PlaylistSortSelect\n variant='outline-dark'\n type={sort}\n getSortAppLink={getSortAppLink}\n />\n )}\n />\n }\n </div>\n {dataLoaded\n ? (\n <PlaylistList\n playlists={playlists}\n getPlaylistAppLink={props.getPlaylistAppLink}\n imageCdnUrl={config.data.imageCdnUrl}\n currentUser={user.data}\n presentationAudiences={audiences.data || []}\n bgColourClassNames={BG_COLOUR_CLASS_NAMES}\n itemContainerClassName='columns-of-five'\n itemStyle='round'\n showCount\n showOwner\n extraPlaylistItem={\n favouritesPlaylist.count\n ? <FavouritesPlaylistItem {...favouritesPlaylist}/>\n : null\n }\n />\n ) : <PartialPlaylistList itemClassName='columns-of-five' />\n }\n {(dataLoaded && (hasMore || isFetching)) &&\n <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} />\n }\n </div>\n );\n}\n","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","\nimport { Flight } from 'libs/common/flight';\n\nimport { FavouriteRequests } from 'libs/shared/flight-requests/FavouriteRequests';\nimport { FavouritesCountResponse } from 'libs/shared/interfaces';\n\nexport function useFavouritesCount(userId?: string) {\n// todo there is a beckend bug that we cannot group fetch these three number\n const favouriteVideosCount = Flight.useBasicFetch<FavouritesCountResponse>(userId &&\n FavouriteRequests.getFavouritesVideosCount(userId));\n const favouriteClipsCount = Flight.useBasicFetch<FavouritesCountResponse>(userId &&\n FavouriteRequests.getFavouritesClipsCount(userId));\n const favouriteInteractivesCount = Flight.useBasicFetch<FavouritesCountResponse>(userId &&\n FavouriteRequests.getFavouritesInteractivesCount(userId));\n \n const totalCount = favouriteVideosCount.data?.count\n + favouriteInteractivesCount.data?.count\n + favouriteClipsCount.data?.count;\n\n const favourites = [\n ...(favouriteVideosCount.data?.data || []),\n ...(favouriteClipsCount.data?.data || []),\n ...(favouriteInteractivesCount.data?.data || [])\n ];\n\n return {\n count: totalCount,\n favourites,\n isLoading: !favouriteVideosCount.data?.data\n || !favouriteClipsCount.data?.data\n || !favouriteInteractivesCount.data?.data\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"playlistItem\":\"CaRJx\",\"playlistItemGradient\":\"BI7p2\",\"playlistMetadata\":\"eDk1l\",\"partialHeading\":\"w4lWh\",\"ownerAvatarContainer\":\"JImqE\"};","\"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;","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', '小时', '天', '周', '个月', '年'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻后'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map"],"names":["PartialPlaylistList","props","PARTIAL_PLAYLISTS","Array","numItems","className","itemClassName","showHeading","map","p","idx","key","xs","sm","lg","defaultProps","namespace","PlaylistCount","count","playlist","videos","interactives","clips","getCount","Number","isNaN","Text","phrase","options","smartCount","PlaylistOwnerAvatar","_liteOwner","_isClickViewCurated","value","ClickViewAvatar","id","currentUser","toString","url","avatar","Avatar","imageUrl","imageCdnUrl","initials","UserHelper","name","surname","PlaylistItem","ImageHelper","data","cover","size","resizeType","audiences","subjectPresentationAudiences","mergedAudience","presentationAudiences","showImage","showFallbackImage","bgColourClassNames","getBgColorClass","itemStyle","analyticsData","analyticsOptions","entity","AppLink","appLink","title","contentModifiedDate","LanguageService","timeago","DateHelper","getTitle","BaseImage","alt","ImageFallback","type","showCount","titleClassName","length","AudienceLabel","audienceLabelClass","audience","border","showOwner","actionType","location","descriptor","PlaylistList","extraPlaylistItem","itemContainerClassName","playlists","getPlaylistAppLink","itemTitleClassName","Actions","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","label","href","onClick","svgName","tooltip","showSpinner","openInNewTab","disabled","iconButton","showBorder","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","dropdownToggleSvgSize","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","SvgContainer","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","showDivider","undefined","group","Tooltip","S","InfiniteScrollFooter","ref","inView","fetchOnScroll","isFetching","fetchNext","nextCursor","Spinner","as","animation","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","SCROLL_TOLERANCE","useInfiniteList","getRequest","onError","getItems","getCursor","scrollContainer","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","fetchNextPage","currentVal","hasMore","getBoundingClientRect","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","addEventListener","removeEventListener","shouldInitialFetch","httpStatusClass","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","useMergeAudiences","sortedAudiences","HAS_NUMBER_REGEX","AudienceStringBuilders","firstAudience","ArrayHelper","lastAudience","split","toLowerCase","DIGIT_REGEX","SPACE_REGEX","AudienceHelper","getSortedPresentationAudiences","objectAudiences","objectAudienceIds","filter","v","presAudience","includes","masterId","getMergedPresentationAudienceString","mergedAudienceString","presentationId","HardCoded","combinedNames","join","numberList","num","wordList","audienceWithoutNum","find","test","prefix","charAt","pop","audienceRange","audienceValues","initialVal","nextVal","i","j","isContinguous","ranges","processAudienceRanges","audienceNames","commonWordsAndTheirPositions","index","wordsInName","Object","keys","word","commonWord","commonWordPosition","firstAudienceName","lastAudienceName","stripOutCommonWord","mergedWord","firstAudienceFirstWord","lastAudienceFirstWord","firstAudienceNumber","lastAudienceNumber","firstAudienceString","lastAudienceString","sortMembersWithDuplicateNamesByAudience","members","getLowestAudience","digit","match","lowestAudience","lowestAudienceDigit","nameCountMap","sorted","member","sortedSlice","splice","firstObjLowestAudience","secondObjLowestAudience","comparison","localeCompare","concat","getActiveAudiencesFromParams","params","ObjectHelper","shouldShowAudiences","normalizeAudienceName","audienceName","replace","audienceLookup","reduce","state","audienceStr","getAudienceParams","getSortTypes","PlaylistSortType","PlaylistSortSelect","getSortAppLink","variant","sortTypes","values","k","workflowPhase","getPhrase","FavouritesPlaylistItem","coverUrl","ImageUrls","application","extraItem","isLoadingCount","src","PlaylistsEmptyState","EmptyState","altText","isStudent","text","icon","PlaylistsPublicEmptyState","SignUp","PlaylistsView","dispatch","alerts","usePermissions","hasLocalPermissions","hasPermissions","isLoaded","PermissionName","config","ConfigRequests","user","UserRequests","usePresentationAudiences","PlaylistSortHelper","useFavouritesCount","favourites","favouritesPlaylist","isLoading","getPlaylistRequest","PlaylistRequests","PlaylistCollectionIdentifier","PlaylistType","useSetPageMetadata","description","shouldFetch","pageNumber","httpStatus","error","dataLoaded","hasError","P","redirectOnError","activePresentation","getFallbackPresentation","presentation","userId","favouriteVideosCount","favouriteClipsCount","favouriteInteractivesCount","Row","bsPrefix","Component","decoratedBsPrefix","breakpoints","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","displayName","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","Date","parseInt","trim","format","date","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","floor","unit"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[610],{29014:e=>{window,e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Disable=0]="Disable",e[e.Enable=1]="Enable"}(t.CookiePolicy||(t.CookiePolicy={}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2);t.renderButtons=r.renderButtons;var o=n(3);t.close=o.close,t.launchAsync=o.launchAsync;var a=n(0);t.CookiePolicy=a.CookiePolicy,window.addEventListener("load",(function(){var e;window.hasOwnProperty("Promise")||("https://contentstorage.onenote.office.net/onenoteltir/permanent-static-resources/promise-polyfill.min.js",(e=document.createElement("script")).src="https://contentstorage.onenote.office.net/onenoteltir/permanent-static-resources/promise-polyfill.min.js",document.head.appendChild(e)),r.renderButtons()}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={af:"Indompelende leser",am:"በህያው ስሜት ፈጣሪ ዕይታ አንባቢ",ar:"القارئ الشامل",as:"ইমাৰচিভ ৰিডাৰ",az:"İmmersiv Oxuyucu",be:"Імерсіўны чытальнік",bg:"Концентриран четец",bn:"মনোগ্রাহী পাঠক","bn-bd":"ইমার্সিভ পাঠক",bs:"Koncentrirani čitalac",ca:"Lector immersiu",cs:"Asistivní čtečka","cy-gb":"Darllenydd Ymdrwythol",da:"Forenklet læser",de:"Plastischer Reader",el:"Προηγμένο πρόγραμμα ανάγνωσης",en:"Immersive Reader",es:"Lector inmersivo",et:"Süvaluger",eu:"Irakurgailu murgiltzailea",fa:"خواننده همه‌جانبه",fi:"Syventävä lukuohjelma",fil:"Immersive Reader",fr:"Lecteur immersif","ga-ie":"Léitheoir tumthach",gd:"An leughadair ùr-nòsach",gl:"Lector avanzado",gu:"ઇમર્સિવ રીડર",ha:"Mai karatu Mai barbazawa",he:"תצוגת קריאה מודרנית",hi:"इमर्सिव रीडर",hr:"Stopljeni čitač",hu:"Modern olvasó",hy:"Խորասուզված ընթերցիչ",id:"Pembaca Imersif",ig:"Ọgụụ Kenzipụtara",is:"Aðgengilegt lestrarumhverfi",it:"Strumento di lettura immersiva",ja:"イマーシブ リーダー",ka:"იმერსიული წამკითხველი",kk:"Иммерсивті оқу құралы",km:"កម្មវិធីអានពណ៌រំលេចនៅលើអេក្រង់",kn:"ಇಮ್ಮರ್ಸಿವ್ ಓದುಗ",ko:"몰입형 리더",kok:"तंद्री लागिल्लो वाचक","ku-arab":"خوێنەری پڕ",ky:"Курчаган Окугуч",lb:"Immersive Reader",lo:"ຕົວອ່ານອິມເມີສີບ",lt:"Įtraukianti skaitytuvė",lv:"Tīrskata lasītājs",mi:"Pūpānui Rumaki",mk:"Сеопфатен читач",ml:"ഇമ്മേഴ്‌സീവ് റീഡർ",mn:"Идэвхтэй уншигч",mr:"इमर्सिव्ह वाचक",ms:"Pembaca Imersif",mt:"Qarrej Immersiv",ne:"इमेर्सिभ रिडर",nl:"Insluitende lezer","nn-no":"Engasjerande lesar",no:"Engasjerende leser",nso:"Go Bala ka Mongwalo o Mokoto",or:"ଇମରସିଭ୍ ରିଡର୍",pa:"ਇਮਰਸਿਵ ਰੀਡਰ","pa-arab":"گھیرن آلا مطالعہ کار",pl:"Czytnik immersyjny",prs:"خواننده نمایش",pt:"Leitura Avançada",quc:"Nim ucholajil sik'inel uwach",quz:"Wankisqa Ñawiq",ro:"Immersive Reader",ru:"Иммерсивное средство чтения",rw:"Insakazasoma",sd:"امرسو ريڊر",si:"ගිලෙන සුළු කියවනය",sk:"Imerzná čítačka",sl:"Potopni bralnik",sq:"Lexuesi kredhës","sr-cyrl-ba":"Концентрисани читалац","sr-cyrl-rs":"Концентрисани читалац","sr-latn-rs":"Koncentrisani čitalac",sv:"Avancerad läsare",sw:"Kisomaji cha Kuzamisha",ta:"அற்புதமான ரீடர்",te:"మంత్రముగ్ధులను చేసే పఠన సాధనం","tg-cyrl-tj":"Хонандаи фарогир",th:"โปรแกรมช่วยอ่าน",ti:"ኣንባቢ ሕሉው ስምዒት ፈጣሪ",tk:"Giňişleýin okaýjy",tn:"Sebadi sa Imesife",tr:"Tam Ekran Okuyucu",tt:"Чолгап алучы уку чарасы","ug-cn":"چۆكمە ئوقۇغۇچ",uk:"Занурення в текст",ur:"امرسیو مطالعہ کار",uz:"Immersiv mutolaa vositasi",vi:"Trình đọc Chân thực",wo:"Jàngukaay bu Rafet",xh:"Isifundi Esikhulu",yo:"Ìwò Alámùtán",zh:"沉浸式阅读器","zh-hant":"沈浸式閱讀程式",zu:"Isifundi Sokuzizwisa"};function o(e){var t=document.createElement("img");t.src="https://contentstorage.onenote.office.net/onenoteltir/permanent-static-resources/immersive-reader-icon.svg";var n=e.getAttribute("data-icon-px-size")||"20";t.style.height=t.style.width=n+"px",t.style.verticalAlign="middle",t.style.marginTop="-2px";var r=e.getAttribute("data-locale")||"en";t.alt=s(r),e.appendChild(t)}function a(e){var t=document.createElement("span");t.style.marginLeft="8px",e.appendChild(t)}function i(e){var t=document.createElement("span"),n=e.getAttribute("data-locale")||"en";t.textContent=s(n),e.appendChild(t)}function s(e){return e=e.toLowerCase(),r[e]?r[e]:"zh-hk"===e||"zh-mo"===e||"zh-tw"===e?r["zh-hant"]:(e=e.substring(0,e.lastIndexOf("-")),r[e]?r[e]:(e=e.substring(0,e.lastIndexOf("-")),r[e]?r[e]:r.en))}t.renderButtons=function(e){var t=document.createElement("style");t.innerHTML=".immersive-reader-button{cursor:pointer;display:inline-block;padding:5px;} .immersive-reader-button:hover{background:rgba(0,0,0,.05);border-radius:2px",document.head.appendChild(t);var n=[].slice.call(document.getElementsByClassName("immersive-reader-button"));e&&e.elements&&(n=e.elements);for(var r=0,l=n;r<l.length;r++){var u=l[r];u.setAttribute("role","button");var c=u.getAttribute("data-locale")||"en";switch(u.setAttribute("aria-label",s(c)),u.getAttribute("data-button-style")||"icon"){case"icon":o(u);break;case"text":i(u);break;case"iconAndText":o(u),a(u),i(u)}}}},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0});var o=n(0),a=n(4),i={};function s(e){return!!e&&new RegExp("^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])$").test(e)}i[a.ErrorCode.TokenExpired]="The access token supplied is expired.",i[a.ErrorCode.Throttled]="You have exceeded your quota.",i[a.ErrorCode.ServerError]="An error occurred when calling the server to process the text.",i[a.ErrorCode.InvalidSubdomain]="The subdomain supplied is invalid.",t.launchAsync=function(e,t,n,l){return new Promise((function(u,c){if(e)if(n)if(n.chunks)if(n.chunks.length)if(s(t)||l&&l.customDomain){var d=Date.now();(l=r({uiZIndex:1e3,timeout:15e3,useWebview:!1,allowFullscreen:!0,hideExitButton:!1,cookiePolicy:o.CookiePolicy.Disable},l)).uiZIndex&&"number"==typeof l.uiZIndex||(l.uiZIndex=1e3);var m=null,f=document.createElement("div"),p=l.useWebview?document.createElement("webview"):document.createElement("iframe"),v=document.createElement("style");v.innerHTML="body{height:100%;overflow:hidden;}";var g=function(){m&&(window.clearTimeout(m),m=null)},h=function(){document.body.contains(f)&&document.body.removeChild(f),window.removeEventListener("message",b),g(),v.parentNode&&v.parentNode.removeChild(v)},y=function(){h(),l.onExit&&l.onExit()};h();var b=function(r){if(r&&r.data)if("ImmersiveReader-ReadyForContent"===r.data){g();var o={cogSvcsAccessToken:e,cogSvcsSubdomain:t,request:n,launchToPostMessageSentDurationInMs:Date.now()-d};p.contentWindow.postMessage(JSON.stringify({messageType:"Content",messageValue:o}),"*")}else if("ImmersiveReader-Exit"===r.data)y();else if(r.data.startsWith("ImmersiveReader-LaunchResponse:")){var s=null,l=null,m=null;try{m=JSON.parse(r.data.substring(31))}catch(e){}m&&m.success?s={container:f,sessionId:m.sessionId}:l=m&&!m.success?{code:m.errorCode,message:i[m.errorCode],sessionId:m.sessionId}:{code:a.ErrorCode.ServerError,message:i[a.ErrorCode.ServerError]},s?(g(),u(s)):l&&(y(),c(l))}};window.addEventListener("message",b),m=window.setTimeout((function(){h(),c({code:a.ErrorCode.Timeout,message:"Page failed to load after timeout ("+l.timeout+" ms)"})}),l.timeout),l.allowFullscreen&&p.setAttribute("allowfullscreen",""),p.style.cssText="position: static; width: 100vw; height: 100vh; left: 0; top: 0; border-width: 0",l.useWebview&&p.addEventListener("loadstop",(function(){p.contentWindow.postMessage(JSON.stringify({messageType:"WebviewHost"}),"*")}));var k=(l.customDomain?l.customDomain:"https://"+t+".cognitiveservices.azure.com/immersivereader/webapp/v1.0/")+"reader?exitCallback=ImmersiveReader-Exit&sdkPlatform=js&sdkVersion=1.0.0";k+="&cookiePolicy="+(l.cookiePolicy===o.CookiePolicy.Enable?"enable":"disable"),l.hideExitButton&&(k+="&hideExitButton=true"),l.uiLang&&(k+="&omkt="+l.uiLang),p.src=k,f.style.cssText="position: fixed; width: 100vw; height: 100vh; left: 0; top: 0; border-width: 0; -webkit-perspective: 1px; z-index: "+l.uiZIndex+"; background: white; overflow: hidden",f.appendChild(p),document.body.appendChild(f),document.head.appendChild(v)}else c({code:a.ErrorCode.InvalidSubdomain,message:i[a.ErrorCode.InvalidSubdomain]});else c({code:a.ErrorCode.BadArgument,message:"Chunks must not be empty"});else c({code:a.ErrorCode.BadArgument,message:"Chunks must not be null"});else c({code:a.ErrorCode.BadArgument,message:"Content must not be null"});else c({code:a.ErrorCode.BadArgument,message:"Token must not be null"})}))},t.close=function(){window.postMessage("ImmersiveReader-Exit","*")},t.isValidSubdomain=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.BadArgument="BadArgument",e.Timeout="Timeout",e.TokenExpired="TokenExpired",e.Throttled="Throttled",e.ServerError="ServerError",e.InvalidSubdomain="InvalidSubdomain"}(t.ErrorCode||(t.ErrorCode={}))}])},25723:(e,t,n)=>{"use strict";n.d(t,{m:()=>v});var r=n(32735),o=n(29014),a=n(99940),i=n(23481),s=n(91967),l=n(44704),u=n(49985);const c={button:"nckQw"};function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var m=null,f=!1,p="shared.immersiveReader";function v(e){var t,n,v=(t=r.useState(m),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 r,o,a,i,s=[],l=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){u=!0,o=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return s}}(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.")}()),g=v[0],h=v[1];return m||f||(f=!0,(0,l.ajaxRequest)({resource:"/api/integrations/token/immersive-reader",type:a.k.GET,success:function(e){m=e,h(e),window.setTimeout((function(){m=null,f=!1}),9e5)},error:function(){}})),g?(e.title||(e.title=i.T.getPhrase(p,"titleFallback")),r.createElement("span",{className:"".concat(c.button," ").concat(e.className||""),onClick:function(){s.q.isFunction(e.onLaunch)&&e.onLaunch(),u.k.logUserAction(e.analyticsData,e.analyticsOptions);var t={title:e.title,chunks:[{content:e.text,mimeType:e.html?"text/html":"text/plain"}]},n=g.subdomain,r=g.token,a={uiZIndex:5e3,onExit:function(){s.q.isFunction(e.onExit)&&e.onExit()}};o.launchAsync(r,n,t,a)}},r.createElement("svg",{viewBox:"0 0 40 37"},r.createElement("path",{d:"M37.4,0.9 L37.4,9.6 L35.4,9.6 L35.4,2.9 L24.4,2.9 C22.9,3.3 20,4.5 20,6 L20,17.2 L18,17.2 L18,6 C18,5 15.6,3.6 13.8,2.9 L2,2.9 L2,29 L12.4,29 L12.4,31 L0,31 L0,0.9 L14.1,0.9 L14.3,1 C15,1.2 17.5,2.2 18.9,3.7 C20.5,1.9 23.5,1.1 23.9,1 L24.1,1 L37.4,1 L37.4,0.9 Z",fill:"#000000"}),r.createElement("path",{d:"M27.4,37 L25.8,37 L18.4,29.4 L14,29.4 L14,21 L18.4,20.9 L26.1,13 L27.4,13 L27.4,37 Z M16,27.4 L19.2,27.4 L25.3,33.7 L25.3,16.6 L19.2,22.9 L15.9,22.9 L15.9,27.4 L16,27.4 Z",fill:"#0197F2"}),r.createElement("path",{d:"M31.3,32.7 L29.6,31.7 C29.6,31.7 31.7,28.3 31.7,25.2 C31.7,21.9 29.6,18.5 29.6,18.4 L31.3,17.4 C31.4,17.6 33.7,21.3 33.7,25.2 C33.7,28.8 31.4,32.6 31.3,32.7 Z",fill:"#0197F2"}),r.createElement("path",{d:"M36.4,36.2 L34.8,35 C34.8,35 38,30.8 38,25.2 C38,19.6 34.8,15.4 34.8,15.4 L36.4,14.2 C36.5,14.4 40,19 40,25.3 C40,31.5 36.5,36 36.4,36.2 Z",fill:"#0197F2"})))):r.createElement(r.Fragment,null)}},87311:(e,t,n)=>{"use strict";n.d(t,{G:()=>o});var r=n(81886),o={getTagActionProps:function(e,t,n){return n?{onClick:function(n){t&&t();var o=e?e(n):null;if(o)return r.Q.C$.trigger(o)}}:{getAppLink:function(t){return e?e(t):null},onClick:t}}}},16035:(e,t,n)=>{"use strict";n.d(t,{z:()=>s});var r=n(32735),o=n(36848),a=n(44829),i=n(91807);function s(e){var t,n,s=e.tag,l=e.appLink,u=e.onClick,c=e.disabled,d=e.tagClass,m=void 0===d?"tag":d,f=s.name.toLowerCase(),p=null===(t=s.tagType)||void 0===t?void 0:t.toLowerCase(),v="rounded-pill py-1 px-2 my-1 me-1 ".concat(m," ").concat(function(e){switch(e){case a.Q.Pedagogy:case a.Q.Skill:return"pedagogy-tag text-white";case a.Q.Hidden:return"hidden-tag";case a.Q.Normal:default:return""}}(p)),g=p===a.Q.Normal&&!!(null===(n=e.themeColours)||void 0===n?void 0:n.secondary);g&&(v+=" text-white"),!l&&!u||c||(v+=" cursor-pointer"),c&&(v+=" "+i.Z.disabled),e.onRemove&&(v+=" "+i.Z.badge),l||(v+=" d-inline-block");var h=g?{backgroundColor:e.themeColours.secondary}:{};return l?r.createElement(o.F,{onClick:u,appLink:l,className:v,title:f,style:h},r.createElement("span",{className:"text-truncate text-nowrap"},f)):r.createElement("span",{onClick:u,className:v,title:f,style:h},r.createElement("span",{className:"text-truncate text-nowrap"},f,e.onRemove&&r.createElement("button",{onClick:e.onRemove,className:"".concat(i.Z.close," btn-close font-size-normal"),role:"button","aria-label":"Close"})))}},91743:(e,t,n)=>{"use strict";n.d(t,{P:()=>u});var r=n(32735),o=n(16035),a=n(44829),i=n(91807);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function l(e){var t;switch(null===(t=e.tagType)||void 0===t?void 0:t.toLowerCase()){case a.Q.Pedagogy:return 0;case a.Q.Skill:return 1;default:return 2}}function u(e){if(!e.tags)return r.createElement(r.Fragment,null);var t,n=(t=e.tags,function(e){if(Array.isArray(e))return s(e)}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||function(e,t){if(e){if("string"==typeof e)return s(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)?s(e,t):void 0}}(t)||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.")}()).sort((function(e,t){return l(e)-l(t)}));return r.createElement("div",{className:"".concat(i.Z.tagList," ").concat(e.className)},n.map((function(t){var n="function"==typeof e.getAppLink?e.getAppLink(t):null,a="function"==typeof e.onRemove?function(){return e.onRemove(t)}:null,i="function"==typeof e.onClick?function(){return e.onClick(t)}:null;return r.createElement(o.z,{key:t.id||t.name,tag:t,appLink:n,themeColours:e.themeColours,onRemove:a,onClick:i})})))}},8730:(e,t,n)=>{"use strict";n.d(t,{_:()=>c});var r=n(1048),o=n(66090);function a(e){return function(e){if(Array.isArray(e))return i(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 i(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)?i(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.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function s(e){var t=e.page,n=e.totalPages,a=o.O.isNumber(t)&&t>0&&t<n&&t+1,i=o.O.isNumber(t)&&t>1&&t-1,s={};if(a&&a<=n&&(s.next=a.toString()),i&&(s.previous=i.toString()),!r.t.isEmpty(s))return s}var l={isEmpty:function(e){return e&&!(e.data&&e.data.length)},length:function(e){return e&&e.data&&e.data.length},at:function(e,t){if(e&&e.data&&e.data.length&&!(t>e.data.length))return e.data[t]},get:function(e,t){if(e&&e.data&&e.data.length)return e.data.find((function(e){return e.id&&e.id.toString()===t}))},flattenCollections:function(e){if(e&&e.length){var t=[];return e.forEach((function(e){t=[].concat(a(t),a(e.data))})),t}},getNextCursor:function(e){return e.pagination&&e.pagination.cursors&&e.pagination.cursors.next},convertLegacyPaginatedCollection:function(e){if(e)return{data:e.data,pagination:{cursors:s(e.pagination),limit:e.pagination.pageSize}}},hasData:function(e){return!l.isEmpty(e)}},u=n(31908);function c(e){var t=l.hasData,n=function(e){return u.M.isVideo(e)?e:u.M.isClip(e)?e._parentVideo:null}(e);return!!n&&(t(n.productionCompanies)||t(n.producers)||t(n.distributors)||t(n.directors))}},40178:(e,t,n)=>{"use strict";n.d(t,{x:()=>r});var r=368},44829:(e,t,n)=>{"use strict";var r,o;n.d(t,{Q:()=>r}),function(e){e.Normal="normal",e.Pedagogy="pedagogy",e.Hidden="hidden",e.Skill="skill",e.Curation="curation"}(r||(r={})),function(e){e[e.Normal=0]="Normal",e[e.Pedagogy=1]="Pedagogy",e[e.Hidden=2]="Hidden",e[e.Skill=3]="Skill",e[e.Curation=4]="Curation"}(o||(o={}))},91807:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r={tagList:"Zw6d9",disabled:"jlL1c",partialTag:"too_N",badge:"OjtN8",close:"X9joI"}}}]);
2
- //# sourceMappingURL=610-27e5444f01-lite.chunk.js.map
1
+ (self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[610],{29014:e=>{window,e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Disable=0]="Disable",e[e.Enable=1]="Enable"}(t.CookiePolicy||(t.CookiePolicy={}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2);t.renderButtons=r.renderButtons;var o=n(3);t.close=o.close,t.launchAsync=o.launchAsync;var a=n(0);t.CookiePolicy=a.CookiePolicy,window.addEventListener("load",(function(){var e;window.hasOwnProperty("Promise")||("https://contentstorage.onenote.office.net/onenoteltir/permanent-static-resources/promise-polyfill.min.js",(e=document.createElement("script")).src="https://contentstorage.onenote.office.net/onenoteltir/permanent-static-resources/promise-polyfill.min.js",document.head.appendChild(e)),r.renderButtons()}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={af:"Indompelende leser",am:"በህያው ስሜት ፈጣሪ ዕይታ አንባቢ",ar:"القارئ الشامل",as:"ইমাৰচিভ ৰিডাৰ",az:"İmmersiv Oxuyucu",be:"Імерсіўны чытальнік",bg:"Концентриран четец",bn:"মনোগ্রাহী পাঠক","bn-bd":"ইমার্সিভ পাঠক",bs:"Koncentrirani čitalac",ca:"Lector immersiu",cs:"Asistivní čtečka","cy-gb":"Darllenydd Ymdrwythol",da:"Forenklet læser",de:"Plastischer Reader",el:"Προηγμένο πρόγραμμα ανάγνωσης",en:"Immersive Reader",es:"Lector inmersivo",et:"Süvaluger",eu:"Irakurgailu murgiltzailea",fa:"خواننده همه‌جانبه",fi:"Syventävä lukuohjelma",fil:"Immersive Reader",fr:"Lecteur immersif","ga-ie":"Léitheoir tumthach",gd:"An leughadair ùr-nòsach",gl:"Lector avanzado",gu:"ઇમર્સિવ રીડર",ha:"Mai karatu Mai barbazawa",he:"תצוגת קריאה מודרנית",hi:"इमर्सिव रीडर",hr:"Stopljeni čitač",hu:"Modern olvasó",hy:"Խորասուզված ընթերցիչ",id:"Pembaca Imersif",ig:"Ọgụụ Kenzipụtara",is:"Aðgengilegt lestrarumhverfi",it:"Strumento di lettura immersiva",ja:"イマーシブ リーダー",ka:"იმერსიული წამკითხველი",kk:"Иммерсивті оқу құралы",km:"កម្មវិធីអានពណ៌រំលេចនៅលើអេក្រង់",kn:"ಇಮ್ಮರ್ಸಿವ್ ಓದುಗ",ko:"몰입형 리더",kok:"तंद्री लागिल्लो वाचक","ku-arab":"خوێنەری پڕ",ky:"Курчаган Окугуч",lb:"Immersive Reader",lo:"ຕົວອ່ານອິມເມີສີບ",lt:"Įtraukianti skaitytuvė",lv:"Tīrskata lasītājs",mi:"Pūpānui Rumaki",mk:"Сеопфатен читач",ml:"ഇമ്മേഴ്‌സീവ് റീഡർ",mn:"Идэвхтэй уншигч",mr:"इमर्सिव्ह वाचक",ms:"Pembaca Imersif",mt:"Qarrej Immersiv",ne:"इमेर्सिभ रिडर",nl:"Insluitende lezer","nn-no":"Engasjerande lesar",no:"Engasjerende leser",nso:"Go Bala ka Mongwalo o Mokoto",or:"ଇମରସିଭ୍ ରିଡର୍",pa:"ਇਮਰਸਿਵ ਰੀਡਰ","pa-arab":"گھیرن آلا مطالعہ کار",pl:"Czytnik immersyjny",prs:"خواننده نمایش",pt:"Leitura Avançada",quc:"Nim ucholajil sik'inel uwach",quz:"Wankisqa Ñawiq",ro:"Immersive Reader",ru:"Иммерсивное средство чтения",rw:"Insakazasoma",sd:"امرسو ريڊر",si:"ගිලෙන සුළු කියවනය",sk:"Imerzná čítačka",sl:"Potopni bralnik",sq:"Lexuesi kredhës","sr-cyrl-ba":"Концентрисани читалац","sr-cyrl-rs":"Концентрисани читалац","sr-latn-rs":"Koncentrisani čitalac",sv:"Avancerad läsare",sw:"Kisomaji cha Kuzamisha",ta:"அற்புதமான ரீடர்",te:"మంత్రముగ్ధులను చేసే పఠన సాధనం","tg-cyrl-tj":"Хонандаи фарогир",th:"โปรแกรมช่วยอ่าน",ti:"ኣንባቢ ሕሉው ስምዒት ፈጣሪ",tk:"Giňişleýin okaýjy",tn:"Sebadi sa Imesife",tr:"Tam Ekran Okuyucu",tt:"Чолгап алучы уку чарасы","ug-cn":"چۆكمە ئوقۇغۇچ",uk:"Занурення в текст",ur:"امرسیو مطالعہ کار",uz:"Immersiv mutolaa vositasi",vi:"Trình đọc Chân thực",wo:"Jàngukaay bu Rafet",xh:"Isifundi Esikhulu",yo:"Ìwò Alámùtán",zh:"沉浸式阅读器","zh-hant":"沈浸式閱讀程式",zu:"Isifundi Sokuzizwisa"};function o(e){var t=document.createElement("img");t.src="https://contentstorage.onenote.office.net/onenoteltir/permanent-static-resources/immersive-reader-icon.svg";var n=e.getAttribute("data-icon-px-size")||"20";t.style.height=t.style.width=n+"px",t.style.verticalAlign="middle",t.style.marginTop="-2px";var r=e.getAttribute("data-locale")||"en";t.alt=s(r),e.appendChild(t)}function a(e){var t=document.createElement("span");t.style.marginLeft="8px",e.appendChild(t)}function i(e){var t=document.createElement("span"),n=e.getAttribute("data-locale")||"en";t.textContent=s(n),e.appendChild(t)}function s(e){return e=e.toLowerCase(),r[e]?r[e]:"zh-hk"===e||"zh-mo"===e||"zh-tw"===e?r["zh-hant"]:(e=e.substring(0,e.lastIndexOf("-")),r[e]?r[e]:(e=e.substring(0,e.lastIndexOf("-")),r[e]?r[e]:r.en))}t.renderButtons=function(e){var t=document.createElement("style");t.innerHTML=".immersive-reader-button{cursor:pointer;display:inline-block;padding:5px;} .immersive-reader-button:hover{background:rgba(0,0,0,.05);border-radius:2px",document.head.appendChild(t);var n=[].slice.call(document.getElementsByClassName("immersive-reader-button"));e&&e.elements&&(n=e.elements);for(var r=0,l=n;r<l.length;r++){var u=l[r];u.setAttribute("role","button");var c=u.getAttribute("data-locale")||"en";switch(u.setAttribute("aria-label",s(c)),u.getAttribute("data-button-style")||"icon"){case"icon":o(u);break;case"text":i(u);break;case"iconAndText":o(u),a(u),i(u)}}}},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0});var o=n(0),a=n(4),i={};function s(e){return!!e&&new RegExp("^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])$").test(e)}i[a.ErrorCode.TokenExpired]="The access token supplied is expired.",i[a.ErrorCode.Throttled]="You have exceeded your quota.",i[a.ErrorCode.ServerError]="An error occurred when calling the server to process the text.",i[a.ErrorCode.InvalidSubdomain]="The subdomain supplied is invalid.",t.launchAsync=function(e,t,n,l){return new Promise((function(u,c){if(e)if(n)if(n.chunks)if(n.chunks.length)if(s(t)||l&&l.customDomain){var d=Date.now();(l=r({uiZIndex:1e3,timeout:15e3,useWebview:!1,allowFullscreen:!0,hideExitButton:!1,cookiePolicy:o.CookiePolicy.Disable},l)).uiZIndex&&"number"==typeof l.uiZIndex||(l.uiZIndex=1e3);var m=null,f=document.createElement("div"),p=l.useWebview?document.createElement("webview"):document.createElement("iframe"),g=document.createElement("style");g.innerHTML="body{height:100%;overflow:hidden;}";var v=function(){m&&(window.clearTimeout(m),m=null)},h=function(){document.body.contains(f)&&document.body.removeChild(f),window.removeEventListener("message",b),v(),g.parentNode&&g.parentNode.removeChild(g)},y=function(){h(),l.onExit&&l.onExit()};h();var b=function(r){if(r&&r.data)if("ImmersiveReader-ReadyForContent"===r.data){v();var o={cogSvcsAccessToken:e,cogSvcsSubdomain:t,request:n,launchToPostMessageSentDurationInMs:Date.now()-d};p.contentWindow.postMessage(JSON.stringify({messageType:"Content",messageValue:o}),"*")}else if("ImmersiveReader-Exit"===r.data)y();else if(r.data.startsWith("ImmersiveReader-LaunchResponse:")){var s=null,l=null,m=null;try{m=JSON.parse(r.data.substring(31))}catch(e){}m&&m.success?s={container:f,sessionId:m.sessionId}:l=m&&!m.success?{code:m.errorCode,message:i[m.errorCode],sessionId:m.sessionId}:{code:a.ErrorCode.ServerError,message:i[a.ErrorCode.ServerError]},s?(v(),u(s)):l&&(y(),c(l))}};window.addEventListener("message",b),m=window.setTimeout((function(){h(),c({code:a.ErrorCode.Timeout,message:"Page failed to load after timeout ("+l.timeout+" ms)"})}),l.timeout),l.allowFullscreen&&p.setAttribute("allowfullscreen",""),p.style.cssText="position: static; width: 100vw; height: 100vh; left: 0; top: 0; border-width: 0",l.useWebview&&p.addEventListener("loadstop",(function(){p.contentWindow.postMessage(JSON.stringify({messageType:"WebviewHost"}),"*")}));var k=(l.customDomain?l.customDomain:"https://"+t+".cognitiveservices.azure.com/immersivereader/webapp/v1.0/")+"reader?exitCallback=ImmersiveReader-Exit&sdkPlatform=js&sdkVersion=1.0.0";k+="&cookiePolicy="+(l.cookiePolicy===o.CookiePolicy.Enable?"enable":"disable"),l.hideExitButton&&(k+="&hideExitButton=true"),l.uiLang&&(k+="&omkt="+l.uiLang),p.src=k,f.style.cssText="position: fixed; width: 100vw; height: 100vh; left: 0; top: 0; border-width: 0; -webkit-perspective: 1px; z-index: "+l.uiZIndex+"; background: white; overflow: hidden",f.appendChild(p),document.body.appendChild(f),document.head.appendChild(g)}else c({code:a.ErrorCode.InvalidSubdomain,message:i[a.ErrorCode.InvalidSubdomain]});else c({code:a.ErrorCode.BadArgument,message:"Chunks must not be empty"});else c({code:a.ErrorCode.BadArgument,message:"Chunks must not be null"});else c({code:a.ErrorCode.BadArgument,message:"Content must not be null"});else c({code:a.ErrorCode.BadArgument,message:"Token must not be null"})}))},t.close=function(){window.postMessage("ImmersiveReader-Exit","*")},t.isValidSubdomain=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.BadArgument="BadArgument",e.Timeout="Timeout",e.TokenExpired="TokenExpired",e.Throttled="Throttled",e.ServerError="ServerError",e.InvalidSubdomain="InvalidSubdomain"}(t.ErrorCode||(t.ErrorCode={}))}])},25723:(e,t,n)=>{"use strict";n.d(t,{m:()=>g});var r=n(32735),o=n(29014),a=n(99940),i=n(23481),s=n(91967),l=n(44704),u=n(49985);const c={button:"nckQw"};function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var m=null,f=!1,p="shared.immersiveReader";function g(e){var t,n,g=(t=r.useState(m),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 r,o,a,i,s=[],l=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){u=!0,o=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return s}}(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.")}()),v=g[0],h=g[1];return m||f||(f=!0,(0,l.ajaxRequest)({resource:"/api/integrations/token/immersive-reader",type:a.k.GET,success:function(e){m=e,h(e),window.setTimeout((function(){m=null,f=!1}),9e5)},error:function(){}})),v?(e.title||(e.title=i.T.getPhrase(p,"titleFallback")),r.createElement("span",{className:"".concat(c.button," ").concat(e.className||""),onClick:function(){s.q.isFunction(e.onLaunch)&&e.onLaunch(),u.k.logUserAction(e.analyticsData,e.analyticsOptions);var t={title:e.title,chunks:[{content:e.text,mimeType:e.html?"text/html":"text/plain"}]},n=v.subdomain,r=v.token,a={uiZIndex:5e3,onExit:function(){s.q.isFunction(e.onExit)&&e.onExit()}};o.launchAsync(r,n,t,a)}},r.createElement("svg",{viewBox:"0 0 40 37"},r.createElement("path",{d:"M37.4,0.9 L37.4,9.6 L35.4,9.6 L35.4,2.9 L24.4,2.9 C22.9,3.3 20,4.5 20,6 L20,17.2 L18,17.2 L18,6 C18,5 15.6,3.6 13.8,2.9 L2,2.9 L2,29 L12.4,29 L12.4,31 L0,31 L0,0.9 L14.1,0.9 L14.3,1 C15,1.2 17.5,2.2 18.9,3.7 C20.5,1.9 23.5,1.1 23.9,1 L24.1,1 L37.4,1 L37.4,0.9 Z",fill:"#000000"}),r.createElement("path",{d:"M27.4,37 L25.8,37 L18.4,29.4 L14,29.4 L14,21 L18.4,20.9 L26.1,13 L27.4,13 L27.4,37 Z M16,27.4 L19.2,27.4 L25.3,33.7 L25.3,16.6 L19.2,22.9 L15.9,22.9 L15.9,27.4 L16,27.4 Z",fill:"#0197F2"}),r.createElement("path",{d:"M31.3,32.7 L29.6,31.7 C29.6,31.7 31.7,28.3 31.7,25.2 C31.7,21.9 29.6,18.5 29.6,18.4 L31.3,17.4 C31.4,17.6 33.7,21.3 33.7,25.2 C33.7,28.8 31.4,32.6 31.3,32.7 Z",fill:"#0197F2"}),r.createElement("path",{d:"M36.4,36.2 L34.8,35 C34.8,35 38,30.8 38,25.2 C38,19.6 34.8,15.4 34.8,15.4 L36.4,14.2 C36.5,14.4 40,19 40,25.3 C40,31.5 36.5,36 36.4,36.2 Z",fill:"#0197F2"})))):r.createElement(r.Fragment,null)}},87311:(e,t,n)=>{"use strict";n.d(t,{G:()=>o});var r=n(81886),o={getTagActionProps:function(e,t,n){return n?{onClick:function(n){t&&t();var o=e?e(n):null;if(o)return r.Q.C$.trigger(o)}}:{getAppLink:function(t){return e?e(t):null},onClick:t}}}},16035:(e,t,n)=>{"use strict";n.d(t,{z:()=>s});var r=n(32735),o=n(36848),a=n(44829),i=n(91807);function s(e){var t,n,s=e.tag,l=e.appLink,u=e.onClick,c=e.disabled,d=e.tagClass,m=void 0===d?"tag":d,f=s.name.toLowerCase(),p=null===(t=s.tagType)||void 0===t?void 0:t.toLowerCase(),g=p===a.Q.Normal&&e.themeColours&&!!(null===(n=e.themeColours)||void 0===n?void 0:n.secondary),v="rounded-pill py-1 px-2 my-1 me-1 ".concat(m," ").concat(function(e,t){switch(e){case a.Q.Pedagogy:case a.Q.Skill:return"pedagogy-tag text-white";case a.Q.Hidden:return"hidden-tag fw-normal";case a.Q.Normal:return t?"":"bg-gray-100 fw-normal";default:return""}}(p,g));g&&(v+=" text-white"),!l&&!u||c||(v+=" cursor-pointer"),c&&(v+=" "+i.Z.disabled),e.onRemove&&(v+=" "+i.Z.badge),l||(v+=" d-inline-block");var h=g?{backgroundColor:e.themeColours.secondary}:{};return l?r.createElement(o.F,{onClick:u,appLink:l,className:v,title:f,style:h},r.createElement("span",{className:"text-truncate text-nowrap"},f)):r.createElement("span",{onClick:u,className:v,title:f,style:h},r.createElement("span",{className:"text-truncate text-nowrap"},f,e.onRemove&&r.createElement("button",{onClick:e.onRemove,className:"".concat(i.Z.close," btn-close font-size-normal"),role:"button","aria-label":"Close"})))}},91743:(e,t,n)=>{"use strict";n.d(t,{P:()=>u});var r=n(32735),o=n(16035),a=n(44829),i=n(91807);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function l(e){var t;switch(null===(t=e.tagType)||void 0===t?void 0:t.toLowerCase()){case a.Q.Pedagogy:return 0;case a.Q.Skill:return 1;default:return 2}}function u(e){if(!e.tags)return r.createElement(r.Fragment,null);var t,n=(t=e.tags,function(e){if(Array.isArray(e))return s(e)}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||function(e,t){if(e){if("string"==typeof e)return s(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)?s(e,t):void 0}}(t)||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.")}()).sort((function(e,t){return l(e)-l(t)}));return r.createElement("div",{className:"".concat(i.Z.tagList," ").concat(e.className)},n.map((function(t){var n="function"==typeof e.getAppLink?e.getAppLink(t):null,a="function"==typeof e.onRemove?function(){return e.onRemove(t)}:null,i="function"==typeof e.onClick?function(){return e.onClick(t)}:null;return r.createElement(o.z,{key:t.id||t.name,tag:t,appLink:n,themeColours:e.themeColours,onRemove:a,onClick:i})})))}},8730:(e,t,n)=>{"use strict";n.d(t,{_:()=>c});var r=n(1048),o=n(66090);function a(e){return function(e){if(Array.isArray(e))return i(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 i(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)?i(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.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function s(e){var t=e.page,n=e.totalPages,a=o.O.isNumber(t)&&t>0&&t<n&&t+1,i=o.O.isNumber(t)&&t>1&&t-1,s={};if(a&&a<=n&&(s.next=a.toString()),i&&(s.previous=i.toString()),!r.t.isEmpty(s))return s}var l={isEmpty:function(e){return e&&!(e.data&&e.data.length)},length:function(e){return e&&e.data&&e.data.length},at:function(e,t){if(e&&e.data&&e.data.length&&!(t>e.data.length))return e.data[t]},get:function(e,t){if(e&&e.data&&e.data.length)return e.data.find((function(e){return e.id&&e.id.toString()===t}))},flattenCollections:function(e){if(e&&e.length){var t=[];return e.forEach((function(e){t=[].concat(a(t),a(e.data))})),t}},getNextCursor:function(e){return e.pagination&&e.pagination.cursors&&e.pagination.cursors.next},convertLegacyPaginatedCollection:function(e){if(e)return{data:e.data,pagination:{cursors:s(e.pagination),limit:e.pagination.pageSize}}},hasData:function(e){return!l.isEmpty(e)}},u=n(31908);function c(e){var t=l.hasData,n=function(e){return u.M.isVideo(e)?e:u.M.isClip(e)?e._parentVideo:null}(e);return!!n&&(t(n.productionCompanies)||t(n.producers)||t(n.distributors)||t(n.directors))}},40178:(e,t,n)=>{"use strict";n.d(t,{x:()=>r});var r=368},44829:(e,t,n)=>{"use strict";var r,o;n.d(t,{Q:()=>r}),function(e){e.Normal="normal",e.Pedagogy="pedagogy",e.Hidden="hidden",e.Skill="skill",e.Curation="curation"}(r||(r={})),function(e){e[e.Normal=0]="Normal",e[e.Pedagogy=1]="Pedagogy",e[e.Hidden=2]="Hidden",e[e.Skill=3]="Skill",e[e.Curation=4]="Curation"}(o||(o={}))},91807:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r={tagList:"Zw6d9",disabled:"jlL1c",partialTag:"too_N",badge:"OjtN8",close:"X9joI"}}}]);
2
+ //# sourceMappingURL=610-6dbeb5cd21-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/610-6dbeb5cd21-lite.chunk.js","mappings":"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","sources":["file:///app/node_modules/@microsoft/immersive-reader-sdk/lib/immersive-reader-sdk.js","file:///app/packages/libs/shared/src/components/immersive-reader/immersive-reader.scss","file:///app/packages/libs/shared/src/components/immersive-reader/ImmersiveReader.tsx","file:///app/packages/libs/shared/src/components/tags/TagHelper.ts","file:///app/packages/libs/shared/src/components/tags/TagItem.tsx","file:///app/packages/libs/shared/src/components/tags/TagList.tsx","file:///app/packages/libs/shared/src/utils/CollectionHelper.ts","file:///app/packages/libs/shared/src/components/video-details/VideoDetailsUtils.ts","file:///app/packages/libs/shared/src/constants/MinimumGlanceHeight.ts","file:///app/packages/libs/shared/src/enums/TagType.ts","file:///app/packages/libs/shared/src/components/tags/tags.scss"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.ImmersiveReader=t():e.ImmersiveReader=t()}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=1)}([function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.Disable=0]=\"Disable\",e[e.Enable=1]=\"Enable\"}(t.CookiePolicy||(t.CookiePolicy={}))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=r(2);t.renderButtons=n.renderButtons;var o=r(3);t.close=o.close,t.launchAsync=o.launchAsync;var i=r(0);t.CookiePolicy=i.CookiePolicy,window.addEventListener(\"load\",(function(){var e,t;window.hasOwnProperty(\"Promise\")||(e=\"https://contentstorage.onenote.office.net/onenoteltir/permanent-static-resources/promise-polyfill.min.js\",(t=document.createElement(\"script\")).src=e,document.head.appendChild(t)),n.renderButtons()}))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n={af:\"Indompelende leser\",am:\"በህያው ስሜት ፈጣሪ ዕይታ አንባቢ\",ar:\"القارئ الشامل\",as:\"ইমাৰচিভ ৰিডাৰ\",az:\"İmmersiv Oxuyucu\",be:\"Імерсіўны чытальнік\",bg:\"Концентриран четец\",bn:\"মনোগ্রাহী পাঠক\",\"bn-bd\":\"ইমার্সিভ পাঠক\",bs:\"Koncentrirani čitalac\",ca:\"Lector immersiu\",cs:\"Asistivní čtečka\",\"cy-gb\":\"Darllenydd Ymdrwythol\",da:\"Forenklet læser\",de:\"Plastischer Reader\",el:\"Προηγμένο πρόγραμμα ανάγνωσης\",en:\"Immersive Reader\",es:\"Lector inmersivo\",et:\"Süvaluger\",eu:\"Irakurgailu murgiltzailea\",fa:\"خواننده همه‌جانبه\",fi:\"Syventävä lukuohjelma\",fil:\"Immersive Reader\",fr:\"Lecteur immersif\",\"ga-ie\":\"Léitheoir tumthach\",gd:\"An leughadair ùr-nòsach\",gl:\"Lector avanzado\",gu:\"ઇમર્સિવ રીડર\",ha:\"Mai karatu Mai barbazawa\",he:\"תצוגת קריאה מודרנית\",hi:\"इमर्सिव रीडर\",hr:\"Stopljeni čitač\",hu:\"Modern olvasó\",hy:\"Խորասուզված ընթերցիչ\",id:\"Pembaca Imersif\",ig:\"Ọgụụ Kenzipụtara\",is:\"Aðgengilegt lestrarumhverfi\",it:\"Strumento di lettura immersiva\",ja:\"イマーシブ リーダー\",ka:\"იმერსიული წამკითხველი\",kk:\"Иммерсивті оқу құралы\",km:\"កម្មវិធីអានពណ៌រំលេចនៅលើអេក្រង់\",kn:\"ಇಮ್ಮರ್ಸಿವ್ ಓದುಗ\",ko:\"몰입형 리더\",kok:\"तंद्री लागिल्लो वाचक\",\"ku-arab\":\"خوێنەری پڕ\",ky:\"Курчаган Окугуч\",lb:\"Immersive Reader\",lo:\"ຕົວອ່ານອິມເມີສີບ\",lt:\"Įtraukianti skaitytuvė\",lv:\"Tīrskata lasītājs\",mi:\"Pūpānui Rumaki\",mk:\"Сеопфатен читач\",ml:\"ഇമ്മേഴ്‌സീവ് റീഡർ\",mn:\"Идэвхтэй уншигч\",mr:\"इमर्सिव्ह वाचक\",ms:\"Pembaca Imersif\",mt:\"Qarrej Immersiv\",ne:\"इमेर्सिभ रिडर\",nl:\"Insluitende lezer\",\"nn-no\":\"Engasjerande lesar\",no:\"Engasjerende leser\",nso:\"Go Bala ka Mongwalo o Mokoto\",or:\"ଇମରସିଭ୍ ରିଡର୍\",pa:\"ਇਮਰਸਿਵ ਰੀਡਰ\",\"pa-arab\":\"گھیرن آلا مطالعہ کار\",pl:\"Czytnik immersyjny\",prs:\"خواننده نمایش\",pt:\"Leitura Avançada\",quc:\"Nim ucholajil sik'inel uwach\",quz:\"Wankisqa Ñawiq\",ro:\"Immersive Reader\",ru:\"Иммерсивное средство чтения\",rw:\"Insakazasoma\",sd:\"امرسو ريڊر\",si:\"ගිලෙන සුළු කියවනය\",sk:\"Imerzná čítačka\",sl:\"Potopni bralnik\",sq:\"Lexuesi kredhës\",\"sr-cyrl-ba\":\"Концентрисани читалац\",\"sr-cyrl-rs\":\"Концентрисани читалац\",\"sr-latn-rs\":\"Koncentrisani čitalac\",sv:\"Avancerad läsare\",sw:\"Kisomaji cha Kuzamisha\",ta:\"அற்புதமான ரீடர்\",te:\"మంత్రముగ్ధులను చేసే పఠన సాధనం\",\"tg-cyrl-tj\":\"Хонандаи фарогир\",th:\"โปรแกรมช่วยอ่าน\",ti:\"ኣንባቢ ሕሉው ስምዒት ፈጣሪ\",tk:\"Giňişleýin okaýjy\",tn:\"Sebadi sa Imesife\",tr:\"Tam Ekran Okuyucu\",tt:\"Чолгап алучы уку чарасы\",\"ug-cn\":\"چۆكمە ئوقۇغۇچ\",uk:\"Занурення в текст\",ur:\"امرسیو مطالعہ کار\",uz:\"Immersiv mutolaa vositasi\",vi:\"Trình đọc Chân thực\",wo:\"Jàngukaay bu Rafet\",xh:\"Isifundi Esikhulu\",yo:\"Ìwò Alámùtán\",zh:\"沉浸式阅读器\",\"zh-hant\":\"沈浸式閱讀程式\",zu:\"Isifundi Sokuzizwisa\"};function o(e){var t=document.createElement(\"img\");t.src=\"https://contentstorage.onenote.office.net/onenoteltir/permanent-static-resources/immersive-reader-icon.svg\";var r=e.getAttribute(\"data-icon-px-size\")||\"20\";t.style.height=t.style.width=r+\"px\",t.style.verticalAlign=\"middle\",t.style.marginTop=\"-2px\";var n=e.getAttribute(\"data-locale\")||\"en\";t.alt=s(n),e.appendChild(t)}function i(e){var t=document.createElement(\"span\");t.style.marginLeft=\"8px\",e.appendChild(t)}function a(e){var t=document.createElement(\"span\"),r=e.getAttribute(\"data-locale\")||\"en\";t.textContent=s(r),e.appendChild(t)}function s(e){return e=e.toLowerCase(),n[e]?n[e]:\"zh-hk\"===e||\"zh-mo\"===e||\"zh-tw\"===e?n[\"zh-hant\"]:(e=e.substring(0,e.lastIndexOf(\"-\")),n[e]?n[e]:(e=e.substring(0,e.lastIndexOf(\"-\")),n[e]?n[e]:n.en))}t.renderButtons=function(e){var t=document.createElement(\"style\");t.innerHTML=\".immersive-reader-button{cursor:pointer;display:inline-block;padding:5px;} .immersive-reader-button:hover{background:rgba(0,0,0,.05);border-radius:2px\",document.head.appendChild(t);var r=[].slice.call(document.getElementsByClassName(\"immersive-reader-button\"));e&&e.elements&&(r=e.elements);for(var n=0,u=r;n<u.length;n++){var d=u[n];d.setAttribute(\"role\",\"button\");var l=d.getAttribute(\"data-locale\")||\"en\";switch(d.setAttribute(\"aria-label\",s(l)),d.getAttribute(\"data-button-style\")||\"icon\"){case\"icon\":o(d);break;case\"text\":a(d);break;case\"iconAndText\":o(d),i(d),a(d)}}}},function(e,t,r){\"use strict\";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};Object.defineProperty(t,\"__esModule\",{value:!0});var o=r(0),i=r(4),a={};function s(e){if(!e)return!1;return new RegExp(\"^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])$\").test(e)}a[i.ErrorCode.TokenExpired]=\"The access token supplied is expired.\",a[i.ErrorCode.Throttled]=\"You have exceeded your quota.\",a[i.ErrorCode.ServerError]=\"An error occurred when calling the server to process the text.\",a[i.ErrorCode.InvalidSubdomain]=\"The subdomain supplied is invalid.\",t.launchAsync=function(e,t,r,u){return new Promise((function(d,l){if(e)if(r)if(r.chunks)if(r.chunks.length)if(s(t)||u&&u.customDomain){var c=Date.now();(u=n({uiZIndex:1e3,timeout:15e3,useWebview:!1,allowFullscreen:!0,hideExitButton:!1,cookiePolicy:o.CookiePolicy.Disable},u)).uiZIndex&&\"number\"==typeof u.uiZIndex||(u.uiZIndex=1e3);var m=null,v=document.createElement(\"div\"),p=u.useWebview?document.createElement(\"webview\"):document.createElement(\"iframe\"),f=document.createElement(\"style\");f.innerHTML=\"body{height:100%;overflow:hidden;}\";var h=function(){m&&(window.clearTimeout(m),m=null)},b=function(){document.body.contains(v)&&document.body.removeChild(v),window.removeEventListener(\"message\",y),h(),f.parentNode&&f.parentNode.removeChild(f)},g=function(){b(),u.onExit&&u.onExit()};b();var y=function(n){if(n&&n.data)if(\"ImmersiveReader-ReadyForContent\"===n.data){h();var o={cogSvcsAccessToken:e,cogSvcsSubdomain:t,request:r,launchToPostMessageSentDurationInMs:Date.now()-c};p.contentWindow.postMessage(JSON.stringify({messageType:\"Content\",messageValue:o}),\"*\")}else if(\"ImmersiveReader-Exit\"===n.data)g();else if(n.data.startsWith(\"ImmersiveReader-LaunchResponse:\")){var s=null,u=null,m=null;try{m=JSON.parse(n.data.substring(\"ImmersiveReader-LaunchResponse:\".length))}catch(e){}m&&m.success?s={container:v,sessionId:m.sessionId}:u=m&&!m.success?{code:m.errorCode,message:a[m.errorCode],sessionId:m.sessionId}:{code:i.ErrorCode.ServerError,message:a[i.ErrorCode.ServerError]},s?(h(),d(s)):u&&(g(),l(u))}};window.addEventListener(\"message\",y),m=window.setTimeout((function(){b(),l({code:i.ErrorCode.Timeout,message:\"Page failed to load after timeout (\"+u.timeout+\" ms)\"})}),u.timeout),u.allowFullscreen&&p.setAttribute(\"allowfullscreen\",\"\"),p.style.cssText=\"position: static; width: 100vw; height: 100vh; left: 0; top: 0; border-width: 0\",u.useWebview&&p.addEventListener(\"loadstop\",(function(){p.contentWindow.postMessage(JSON.stringify({messageType:\"WebviewHost\"}),\"*\")}));var k=(u.customDomain?u.customDomain:\"https://\"+t+\".cognitiveservices.azure.com/immersivereader/webapp/v1.0/\")+\"reader?exitCallback=ImmersiveReader-Exit&sdkPlatform=js&sdkVersion=1.0.0\";k+=\"&cookiePolicy=\"+(u.cookiePolicy===o.CookiePolicy.Enable?\"enable\":\"disable\"),u.hideExitButton&&(k+=\"&hideExitButton=true\"),u.uiLang&&(k+=\"&omkt=\"+u.uiLang),p.src=k,v.style.cssText=\"position: fixed; width: 100vw; height: 100vh; left: 0; top: 0; border-width: 0; -webkit-perspective: 1px; z-index: \"+u.uiZIndex+\"; background: white; overflow: hidden\",v.appendChild(p),document.body.appendChild(v),document.head.appendChild(f)}else l({code:i.ErrorCode.InvalidSubdomain,message:a[i.ErrorCode.InvalidSubdomain]});else l({code:i.ErrorCode.BadArgument,message:\"Chunks must not be empty\"});else l({code:i.ErrorCode.BadArgument,message:\"Chunks must not be null\"});else l({code:i.ErrorCode.BadArgument,message:\"Content must not be null\"});else l({code:i.ErrorCode.BadArgument,message:\"Token must not be null\"})}))},t.close=function(){window.postMessage(\"ImmersiveReader-Exit\",\"*\")},t.isValidSubdomain=s},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e.BadArgument=\"BadArgument\",e.Timeout=\"Timeout\",e.TokenExpired=\"TokenExpired\",e.Throttled=\"Throttled\",e.ServerError=\"ServerError\",e.InvalidSubdomain=\"InvalidSubdomain\"}(t.ErrorCode||(t.ErrorCode={}))}])}));","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"nckQw\"};","import * as React from 'react';\nimport * as ImmersiveReaderSdk from '@microsoft/immersive-reader-sdk';\n\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { ajaxRequest } from 'libs/common/react/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\n\nimport styles from './immersive-reader.scss';\n\n/**\n * Caching stuff globally across all usages of ImmersiveReader\n */\nlet globalImmersiveReader: ImmersiveReaderResponse = null;\nlet fetched = false;\n\nconst namespace = 'shared.immersiveReader';\n\ninterface ImmersiveReaderResponse {\n token: string;\n subdomain: string;\n}\n\ntype ImmersiveReaderProps = PropsWithAnalyticsOptions<{\n text: string;\n title?: string;\n className?: string;\n onLaunch?: () => void;\n onExit?: () => void;\n\n analyticsData: {\n id: string;\n type: string\n },\n html?: boolean\n}>;\n\nexport function ImmersiveReader(props: ImmersiveReaderProps): JSX.Element {\n const [ immersiveReader, setImmersiveReader ] = React.useState(globalImmersiveReader);\n\n if (!globalImmersiveReader && !fetched) {\n fetched = true;\n ajaxRequest({\n resource: '/api/integrations/token/immersive-reader',\n type: HttpVerbs.GET,\n success: onFetched,\n error: () => {}\n });\n }\n\n function onFetched(data: ImmersiveReaderResponse): void {\n globalImmersiveReader = data;\n setImmersiveReader(data);\n window.setTimeout(() => {\n globalImmersiveReader = null;\n fetched = false;\n }, 900000); // 15 minutes\n }\n\n if (!immersiveReader)\n return <></>;\n\n if (!props.title)\n props.title = LanguageService.getPhrase(namespace, 'titleFallback');\n\n function launchImmersiveReader(): void {\n if (FunctionHelper.isFunction(props.onLaunch))\n props.onLaunch();\n\n AnalyticsHelper.logUserAction(props.analyticsData, props.analyticsOptions);\n\n const content = {\n title: props.title,\n chunks: [{\n content: props.text,\n mimeType: props.html ? 'text/html' : 'text/plain'\n }]\n };\n\n const { subdomain, token } = immersiveReader;\n\n const options = {\n uiZIndex: 5000, // Should always appear above our content\n onExit: () => {\n if (FunctionHelper.isFunction(props.onExit))\n props.onExit();\n }\n };\n\n ImmersiveReaderSdk.launchAsync(token, subdomain, content, options);\n }\n\n return (\n <span className={`${styles.button} ${props.className || ''}`} onClick={launchImmersiveReader}>\n <svg viewBox='0 0 40 37'>\n <path d='M37.4,0.9 L37.4,9.6 L35.4,9.6 L35.4,2.9 L24.4,2.9 C22.9,3.3 20,4.5 20,6 L20,17.2 L18,17.2 L18,6 C18,5 15.6,3.6 13.8,2.9 L2,2.9 L2,29 L12.4,29 L12.4,31 L0,31 L0,0.9 L14.1,0.9 L14.3,1 C15,1.2 17.5,2.2 18.9,3.7 C20.5,1.9 23.5,1.1 23.9,1 L24.1,1 L37.4,1 L37.4,0.9 Z' fill='#000000'></path>\n <path d='M27.4,37 L25.8,37 L18.4,29.4 L14,29.4 L14,21 L18.4,20.9 L26.1,13 L27.4,13 L27.4,37 Z M16,27.4 L19.2,27.4 L25.3,33.7 L25.3,16.6 L19.2,22.9 L15.9,22.9 L15.9,27.4 L16,27.4 Z' fill='#0197F2'></path>\n <path d='M31.3,32.7 L29.6,31.7 C29.6,31.7 31.7,28.3 31.7,25.2 C31.7,21.9 29.6,18.5 29.6,18.4 L31.3,17.4 C31.4,17.6 33.7,21.3 33.7,25.2 C33.7,28.8 31.4,32.6 31.3,32.7 Z' fill='#0197F2'></path>\n <path d='M36.4,36.2 L34.8,35 C34.8,35 38,30.8 38,25.2 C38,19.6 34.8,15.4 34.8,15.4 L36.4,14.2 C36.5,14.4 40,19 40,25.3 C40,31.5 36.5,36 36.4,36.2 Z' fill='#0197F2'></path>\n </svg>\n </span>\n );\n}","import { Core } from 'libs/common/core';\n\nimport { Tag } from 'libs/shared/interfaces';\n\nexport const TagHelper = {\n /**\n * This helper allows tag appLinks to be triggered manually for use in a public context.\n * \n * For public pages, all anchors will be crawled by bots. Given then number of tags we have\n * this will chew through crawl budget unnecessarily. \n * \n * The consuming project can opt-in for this behaviour. By default, tags will always be rendered\n * as anchors.\n */\n getTagActionProps: (\n getTagAppLink: (tag: Tag) => Core.AppLink,\n onClick: () => void,\n renderAsSpan?: boolean\n ) => {\n if (renderAsSpan) {\n return {\n onClick: (tag: Tag) => {\n if (onClick)\n onClick();\n\n const appLink = getTagAppLink ? getTagAppLink(tag) : null;\n\n if (!appLink)\n return;\n\n return Core.AppLinkHelper.trigger(appLink);\n }\n };\n }\n\n return {\n getAppLink: (tag: Tag) => {\n return getTagAppLink\n ? getTagAppLink(tag)\n : null;\n },\n onClick\n };\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { TagType } from 'libs/shared/enums/TagType';\nimport { Tag, ThemeColours } from 'libs/shared/interfaces';\n\nimport styles from './tags.scss';\n\ninterface TagItemProps {\n tag: Tag;\n themeColours?: ThemeColours;\n appLink?: Core.AppLink;\n onClick?: () => void;\n onRemove?: () => void;\n disabled?: boolean;\n tagClass?: string;\n}\n\nfunction getTagTypeClass(tagType: TagType, hasThemeColour: boolean): string {\n switch (tagType) {\n case TagType.Pedagogy:\n case TagType.Skill:\n return 'pedagogy-tag text-white';\n\n case TagType.Hidden:\n return 'hidden-tag fw-normal';\n\n case TagType.Normal:\n if (!hasThemeColour)\n return 'bg-gray-100 fw-normal';\n return '';\n\n default:\n return '';\n }\n}\n\nexport function TagItem(props: TagItemProps): JSX.Element {\n const { tag, appLink, onClick, disabled, tagClass = 'tag' } = props;\n\n const name = tag.name.toLowerCase();\n const tagType = tag.tagType?.toLowerCase() as TagType;\n\n const hasThemeColour = (tagType === TagType.Normal && props.themeColours) && !!props.themeColours?.secondary;\n let classNames = `rounded-pill py-1 px-2 my-1 me-1 ${tagClass} ${getTagTypeClass(tagType, hasThemeColour)}`;\n\n if (hasThemeColour)\n classNames += ' text-white';\n\n if ((appLink || onClick) && !disabled)\n classNames += ' cursor-pointer';\n\n if (disabled)\n classNames += ' ' + styles.disabled;\n\n if (props.onRemove)\n classNames += ' ' + styles.badge;\n\n if (!appLink)\n classNames += ' d-inline-block';\n\n const style: React.CSSProperties = hasThemeColour\n ? { backgroundColor: props.themeColours.secondary }\n : {};\n\n if (appLink) {\n return (\n <AppLink\n onClick={onClick}\n appLink={appLink}\n className={classNames}\n title={name}\n style={style}\n >\n <span className='text-truncate text-nowrap'>{name}</span>\n </AppLink>\n );\n }\n\n return (\n <span\n onClick={onClick}\n className={classNames}\n title={name}\n style={style}\n >\n <span className='text-truncate text-nowrap'>\n {name}\n {props.onRemove &&\n <button\n onClick={props.onRemove}\n className={`${styles.close} btn-close font-size-normal`}\n role='button'\n aria-label='Close'\n />\n }\n </span>\n </span>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { TagItem } from 'libs/shared/components/tags/TagItem';\nimport { TagType } from 'libs/shared/enums/TagType';\nimport { Tag, ThemeColours } from 'libs/shared/interfaces';\n\nimport styles from './tags.scss';\n\n/**\n * TODO: this will eventually handle ClickView and Customer tag types.\n */\nfunction getTagSortValue(tag: Tag): number {\n switch (tag.tagType?.toLowerCase()) {\n case TagType.Pedagogy:\n return 0;\n\n case TagType.Skill:\n return 1;\n\n default:\n return 2;\n }\n}\n\ninterface TagListProps {\n tags: Tag[];\n themeColours?: ThemeColours;\n onClick?: (tag: Tag) => void;\n onRemove?: (tag: Tag) => void;\n getAppLink?: (tag: Tag) => Core.AppLink;\n className?: string;\n}\n\nexport function TagList(props: TagListProps): JSX.Element {\n if (!props.tags)\n return <></>;\n\n const sortedTags = [...props.tags].sort((a, b) => getTagSortValue(a) - getTagSortValue(b));\n\n return (\n <div className={`${styles.tagList} ${props.className}`}>\n {sortedTags.map((tag: Tag) => {\n const appLink = typeof props.getAppLink === 'function'\n ? props.getAppLink(tag)\n : null;\n\n const onRemove = typeof props.onRemove === 'function'\n ? () => props.onRemove(tag)\n : null;\n\n const onClick = typeof props.onClick === 'function'\n ? () => props.onClick(tag)\n : null;\n\n return (\n <TagItem\n key={tag.id || tag.name}\n tag={tag}\n appLink={appLink}\n themeColours={props.themeColours}\n onRemove={onRemove}\n onClick={onClick}\n />\n );\n })}\n </div>\n );\n}","import { Cursors, LegacyPagination } from 'libs/common/backbone/interfaces';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\nimport { TypeHelper } from 'libs/common/react/utils/TypeHelper';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\ninterface LegacyPaginatedCollection {\n data: BaseObject[];\n pagination: LegacyPagination;\n}\n\nfunction convertLegacyPaginationToCursors(pagination: LegacyPagination): Cursors {\n const { page, totalPages } = pagination;\n\n const nextPage = TypeHelper.isNumber(page) && page > 0 && page < totalPages && page + 1;\n const prevPage = TypeHelper.isNumber(page) && page > 1 && page - 1;\n\n const cursors: HashObject = {};\n\n if (nextPage && nextPage <= totalPages)\n cursors.next = nextPage.toString();\n\n if (prevPage)\n cursors.previous = prevPage.toString();\n\n if (ObjectHelper.isEmpty(cursors))\n return;\n\n return cursors as Cursors;\n}\n\nexport const CollectionHelper = {\n isEmpty(collection: BasePaginatedCollection<BaseObject>): boolean {\n return collection && !(collection.data && collection.data.length);\n },\n\n length(collection: BasePaginatedCollection<BaseObject>): number {\n return collection && collection.data && collection.data.length;\n },\n\n at<T extends BaseObject>(collection: BasePaginatedCollection<T>, idx: number): T {\n if (!collection || !collection.data || !collection.data.length || idx > collection.data.length)\n return;\n\n return collection.data[idx];\n },\n\n get<T extends BaseObject>(collection: BasePaginatedCollection<T>, id: string): T {\n if (!collection || !collection.data || !collection.data.length)\n return;\n\n return collection.data.find(c => c.id && c.id.toString() === id);\n },\n\n flattenCollections<T extends BaseObject, U extends BasePaginatedCollection<T>>(collections: U[]): T[] {\n if (!collections || !collections.length)\n return;\n\n let flattened: T[] = [];\n\n collections.forEach(c => {\n flattened = [ ...flattened, ...c.data ];\n });\n\n return flattened;\n },\n\n getNextCursor<T extends BaseObject, U extends BasePaginatedCollection<T>>(collection: U): string {\n return collection.pagination && collection.pagination.cursors && collection.pagination.cursors.next;\n },\n\n convertLegacyPaginatedCollection(collection: LegacyPaginatedCollection): BasePaginatedCollection<BaseObject> {\n if (!collection)\n return;\n\n return {\n data: collection.data,\n pagination: {\n cursors: convertLegacyPaginationToCursors(collection.pagination),\n limit: collection.pagination.pageSize\n }\n };\n },\n\n hasData(collection: BasePaginatedCollection<BaseObject>): boolean {\n return !CollectionHelper.isEmpty(collection);\n }\n};","import { Video, VideoTypes } from 'libs/shared/interfaces';\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nfunction getVideo(media: VideoTypes): Video {\n if (VideoHelper.isVideo(media))\n return media;\n\n if (VideoHelper.isClip(media))\n return media._parentVideo;\n\n // For interactives, we don't display PPDD info\n return null;\n}\n\nexport function hasPPDD(media: VideoTypes): boolean {\n const hasData = CollectionHelper.hasData;\n\n const video = getVideo(media);\n\n if (!video)\n return false;\n\n return hasData(video.productionCompanies) ||\n hasData(video.producers) ||\n hasData(video.distributors) ||\n hasData(video.directors);\n}","// 368 is the min height of Video at a glance which is defined as $glanceHeight in synopsis.scss\nexport const MINIMUM_GLANCE_HEIGHT = 368; // px","export enum TagType {\n Normal = 'normal',\n Pedagogy = 'pedagogy',\n Hidden = 'hidden',\n Skill = 'skill',\n Curation = 'curation'\n}\n\n/**\n * This should **only** be used to create new tags in master (as it only accepts enum values).\n * Use the string enum above for all other cases.\n */\nexport enum TagTypeNumber {\n Normal = 0,\n Pedagogy = 1,\n Hidden = 2,\n Skill = 3,\n Curation = 4\n}","// extracted by mini-css-extract-plugin\nexport default {\"tagList\":\"Zw6d9\",\"disabled\":\"jlL1c\",\"partialTag\":\"too_N\",\"badge\":\"OjtN8\",\"close\":\"X9joI\"};"],"names":["window","module","exports","e","t","r","n","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","Disable","Enable","CookiePolicy","renderButtons","close","launchAsync","addEventListener","document","createElement","src","head","appendChild","af","am","ar","as","az","be","bg","bn","bs","ca","cs","da","de","el","en","es","et","eu","fa","fi","fil","fr","gd","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","ka","kk","km","kn","ko","kok","ky","lb","lo","lt","lv","mi","mk","ml","mn","mr","ms","mt","ne","nl","no","nso","or","pa","pl","prs","pt","quc","quz","ro","ru","rw","sd","si","sk","sl","sq","sv","sw","ta","te","th","ti","tk","tn","tr","tt","uk","ur","uz","vi","wo","xh","yo","zh","zu","getAttribute","style","height","width","verticalAlign","marginTop","alt","marginLeft","a","textContent","toLowerCase","substring","lastIndexOf","innerHTML","slice","getElementsByClassName","elements","u","length","setAttribute","this","__assign","assign","arguments","apply","RegExp","test","ErrorCode","TokenExpired","Throttled","ServerError","InvalidSubdomain","Promise","chunks","customDomain","Date","now","uiZIndex","timeout","useWebview","allowFullscreen","hideExitButton","cookiePolicy","v","f","h","clearTimeout","b","body","contains","removeChild","removeEventListener","y","parentNode","g","onExit","data","cogSvcsAccessToken","cogSvcsSubdomain","request","launchToPostMessageSentDurationInMs","contentWindow","postMessage","JSON","stringify","messageType","messageValue","startsWith","parse","success","container","sessionId","code","errorCode","message","setTimeout","Timeout","cssText","k","uiLang","BadArgument","isValidSubdomain","globalImmersiveReader","fetched","namespace","ImmersiveReader","props","immersiveReader","setImmersiveReader","ajaxRequest","resource","type","HttpVerbs","error","title","LanguageService","className","onClick","FunctionHelper","onLaunch","AnalyticsHelper","analyticsData","analyticsOptions","content","text","mimeType","html","subdomain","token","options","viewBox","fill","TagHelper","getTagActionProps","getTagAppLink","renderAsSpan","tag","appLink","getAppLink","TagItem","disabled","tagClass","name","tagType","hasThemeColour","themeColours","secondary","classNames","getTagTypeClass","onRemove","backgroundColor","role","getTagSortValue","TagList","tags","sortedTags","sort","map","key","convertLegacyPaginationToCursors","pagination","page","totalPages","nextPage","TypeHelper","prevPage","cursors","next","toString","previous","ObjectHelper","CollectionHelper","isEmpty","collection","at","idx","find","flattenCollections","collections","flattened","forEach","getNextCursor","convertLegacyPaginatedCollection","limit","pageSize","hasData","hasPPDD","media","video","VideoHelper","_parentVideo","getVideo","productionCompanies","producers","distributors","directors","MINIMUM_GLANCE_HEIGHT","TagType","TagTypeNumber"],"sourceRoot":""}