@clickview/lite 0.50.1-rc.0 → 0.50.1-rc.2

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 (201) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/{1313-lite-b05099b818.chunk.css → 1313-lite-6b1a20b3fe.chunk.css} +1 -1
  3. package/dist/css/{1402-lite-9489903efd.chunk.css → 1402-lite-8a07733b96.chunk.css} +1 -1
  4. package/dist/css/{3588-lite-f083d46330.chunk.css → 1407-lite-be6668ef3a.chunk.css} +1 -1
  5. package/dist/css/{5725-lite-789978250c.chunk.css → 1539-lite-a5772fefdb.chunk.css} +1 -1
  6. package/dist/css/{5769-lite-16efb24b77.chunk.css → 1567-lite-2ab4d6f863.chunk.css} +1 -1
  7. package/dist/css/{1602-lite-90df7cca5c.chunk.css → 1602-lite-8fb6cea449.chunk.css} +1 -1
  8. package/dist/css/{1820-lite-ebb89eab7a.chunk.css → 1820-lite-8008c78ef7.chunk.css} +1 -1
  9. package/dist/css/{9818-lite-dca6b9e86d.chunk.css → 1850-lite-e9e8c03964.chunk.css} +1 -1
  10. package/dist/css/{2120-lite-dd1595051d.chunk.css → 2120-lite-b1876117b4.chunk.css} +1 -1
  11. package/dist/css/{2137-lite-7045732fc8.chunk.css → 2137-lite-6e9d11bd5b.chunk.css} +1 -1
  12. package/dist/css/{2446-lite-6b11bdfdc1.chunk.css → 2446-lite-dfc41ecbea.chunk.css} +1 -1
  13. package/dist/css/{9211-lite-f00eb0266e.chunk.css → 2507-lite-9516182bdb.chunk.css} +1 -1
  14. package/dist/css/{2724-lite-24da60896e.chunk.css → 2724-lite-669b5b8120.chunk.css} +1 -1
  15. package/dist/css/{2795-lite-1641e6fbf9.chunk.css → 2795-lite-34f8ca5018.chunk.css} +1 -1
  16. package/dist/css/{3070-lite-c0909f46f3.chunk.css → 3070-lite-6af4bd0c76.chunk.css} +1 -1
  17. package/dist/css/{3397-lite-dfab7385b6.chunk.css → 3397-lite-5b25e3a686.chunk.css} +1 -1
  18. package/dist/css/{3403-lite-4b92798a0c.chunk.css → 3403-lite-89bcc16133.chunk.css} +1 -1
  19. package/dist/css/{458-lite-c8a3139b8b.chunk.css → 3515-lite-10695a1950.chunk.css} +2 -2
  20. package/dist/css/{1407-lite-f083d46330.chunk.css → 3588-lite-be6668ef3a.chunk.css} +1 -1
  21. package/dist/css/{3895-lite-b05099b818.chunk.css → 3895-lite-6b1a20b3fe.chunk.css} +1 -1
  22. package/dist/css/{4151-lite-fcc0fc8753.chunk.css → 4151-lite-9cbe9bba57.chunk.css} +1 -1
  23. package/dist/css/{3515-lite-c8a3139b8b.chunk.css → 458-lite-10695a1950.chunk.css} +2 -2
  24. package/dist/css/{5114-lite-38330c6187.chunk.css → 5114-lite-06a1ac179b.chunk.css} +1 -1
  25. package/dist/css/{5242-lite-58cdcd1ec4.chunk.css → 5242-lite-30642a9642.chunk.css} +2 -2
  26. package/dist/css/{5364-lite-93bfe767eb.chunk.css → 5364-lite-e8c416fe79.chunk.css} +1 -1
  27. package/dist/css/{5446-lite-ae2395342f.chunk.css → 5446-lite-2e956685f4.chunk.css} +1 -1
  28. package/dist/css/{1539-lite-789978250c.chunk.css → 5725-lite-a5772fefdb.chunk.css} +1 -1
  29. package/dist/css/{6759-lite-16efb24b77.chunk.css → 5769-lite-2ab4d6f863.chunk.css} +1 -1
  30. package/dist/css/{5803-lite-d1315afce2.chunk.css → 5803-lite-625e484692.chunk.css} +1 -1
  31. package/dist/css/{5810-lite-ba174cfe3d.chunk.css → 5810-lite-1224500e4d.chunk.css} +1 -1
  32. package/dist/css/{6181-lite-7558375a74.chunk.css → 6181-lite-ca9f6aeba1.chunk.css} +1 -1
  33. package/dist/css/{6189-lite-4c33c1b5c4.chunk.css → 6189-lite-20e4d47423.chunk.css} +1 -1
  34. package/dist/css/{6309-lite-a23dc59ecd.chunk.css → 6309-lite-bd0968a2c8.chunk.css} +1 -1
  35. package/dist/css/{6531-lite-9431296610.chunk.css → 6531-lite-1f6f3c392c.chunk.css} +1 -1
  36. package/dist/css/{1567-lite-16efb24b77.chunk.css → 6759-lite-2ab4d6f863.chunk.css} +1 -1
  37. package/dist/css/{6803-lite-16efb24b77.chunk.css → 6803-lite-2ab4d6f863.chunk.css} +1 -1
  38. package/dist/css/{6850-lite-769c93cb9e.chunk.css → 6850-lite-0bf8514497.chunk.css} +3 -3
  39. package/dist/css/{7533-lite-d0ae59ec54.chunk.css → 7533-lite-206fce5dbd.chunk.css} +1 -1
  40. package/dist/css/{7777-lite-8067dea624.chunk.css → 7777-lite-48d916f95c.chunk.css} +1 -1
  41. package/dist/css/{7987-lite-94679244a2.chunk.css → 7987-lite-fd431fbaf2.chunk.css} +1 -1
  42. package/dist/css/{8218-lite-fe8c54917b.chunk.css → 8218-lite-f54139cf27.chunk.css} +1 -1
  43. package/dist/css/{8316-lite-9083a6565c.chunk.css → 8316-lite-6036f465f0.chunk.css} +1 -1
  44. package/dist/css/{8354-lite-bc431d9d01.chunk.css → 8354-lite-8228cb401d.chunk.css} +1 -1
  45. package/dist/css/{8987-lite-95b3d79328.chunk.css → 8987-lite-6cd15b48d2.chunk.css} +1 -1
  46. package/dist/css/{9068-lite-c0341005e4.chunk.css → 9068-lite-c3a9ace963.chunk.css} +1 -1
  47. package/dist/css/{2507-lite-f00eb0266e.chunk.css → 9211-lite-9516182bdb.chunk.css} +1 -1
  48. package/dist/css/{9329-lite-a259b19412.chunk.css → 9329-lite-5f15379e31.chunk.css} +1 -1
  49. package/dist/css/{9417-lite-9083a6565c.chunk.css → 9417-lite-6036f465f0.chunk.css} +1 -1
  50. package/dist/css/{9620-lite-d77e9ad59b.chunk.css → 9620-lite-111c825071.chunk.css} +1 -1
  51. package/dist/css/{1850-lite-dca6b9e86d.chunk.css → 9818-lite-e9e8c03964.chunk.css} +1 -1
  52. package/dist/css/{lite-app-28b7b96628.css → lite-app-212404ee3a.css} +1 -1
  53. package/dist/scripts/1169-5a0d974a94-lite.chunk.js +2 -0
  54. package/dist/scripts/1169-5a0d974a94-lite.chunk.js.map +1 -0
  55. package/dist/scripts/{1313-455608bc46-lite.chunk.js → 1313-5a7170fb69-lite.chunk.js} +1 -1
  56. package/dist/scripts/{1313-455608bc46-lite.chunk.js.map → 1313-5a7170fb69-lite.chunk.js.map} +1 -1
  57. package/dist/scripts/{1402-d40dc88741-lite.chunk.js → 1402-39cb29d725-lite.chunk.js} +1 -1
  58. package/dist/scripts/{1402-d40dc88741-lite.chunk.js.map → 1402-39cb29d725-lite.chunk.js.map} +1 -1
  59. package/dist/scripts/{1407-3592ec24f2-lite.chunk.js → 1407-3bab3f00f6-lite.chunk.js} +1 -1
  60. package/dist/scripts/{1407-3592ec24f2-lite.chunk.js.map → 1407-3bab3f00f6-lite.chunk.js.map} +1 -1
  61. package/dist/scripts/{1567-edcff759b1-lite.chunk.js → 1567-b3141bc14f-lite.chunk.js} +1 -1
  62. package/dist/scripts/{1567-edcff759b1-lite.chunk.js.map → 1567-b3141bc14f-lite.chunk.js.map} +1 -1
  63. package/dist/scripts/{1602-173a4f272a-lite.chunk.js → 1602-dfe6928d65-lite.chunk.js} +1 -1
  64. package/dist/scripts/{1602-173a4f272a-lite.chunk.js.map → 1602-dfe6928d65-lite.chunk.js.map} +1 -1
  65. package/dist/scripts/{1820-68114ca994-lite.chunk.js → 1820-9a1f618969-lite.chunk.js} +2 -2
  66. package/dist/scripts/1820-9a1f618969-lite.chunk.js.map +1 -0
  67. package/dist/scripts/{2120-88f6dd6652-lite.chunk.js → 2120-82a7b90997-lite.chunk.js} +1 -1
  68. package/dist/scripts/{2120-88f6dd6652-lite.chunk.js.map → 2120-82a7b90997-lite.chunk.js.map} +1 -1
  69. package/dist/scripts/{2137-093f479ff9-lite.chunk.js → 2137-2e78e535ad-lite.chunk.js} +1 -1
  70. package/dist/scripts/{2137-093f479ff9-lite.chunk.js.map → 2137-2e78e535ad-lite.chunk.js.map} +1 -1
  71. package/dist/scripts/{2446-acc94130ed-lite.chunk.js → 2446-eaa1d2ee7d-lite.chunk.js} +2 -2
  72. package/dist/scripts/{2446-acc94130ed-lite.chunk.js.map → 2446-eaa1d2ee7d-lite.chunk.js.map} +1 -1
  73. package/dist/scripts/{2507-bb4e17b1b3-lite.chunk.js → 2507-fc744cab62-lite.chunk.js} +1 -1
  74. package/dist/scripts/{2507-bb4e17b1b3-lite.chunk.js.map → 2507-fc744cab62-lite.chunk.js.map} +1 -1
  75. package/dist/scripts/{2724-ee3a51e0c9-lite.chunk.js → 2724-060fdde41c-lite.chunk.js} +1 -1
  76. package/dist/scripts/{2724-ee3a51e0c9-lite.chunk.js.map → 2724-060fdde41c-lite.chunk.js.map} +1 -1
  77. package/dist/scripts/{2795-0616748349-lite.chunk.js → 2795-eb3a51adc2-lite.chunk.js} +1 -1
  78. package/dist/scripts/{2795-0616748349-lite.chunk.js.map → 2795-eb3a51adc2-lite.chunk.js.map} +1 -1
  79. package/dist/scripts/3070-63e0a6b63e-lite.chunk.js +2 -0
  80. package/dist/scripts/3070-63e0a6b63e-lite.chunk.js.map +1 -0
  81. package/dist/scripts/{3397-bb32e2287f-lite.chunk.js → 3397-cd6acb96c4-lite.chunk.js} +1 -1
  82. package/dist/scripts/{3397-bb32e2287f-lite.chunk.js.map → 3397-cd6acb96c4-lite.chunk.js.map} +1 -1
  83. package/dist/scripts/{3403-12c460d3f6-lite.chunk.js → 3403-d42b7125ae-lite.chunk.js} +1 -1
  84. package/dist/scripts/{3403-12c460d3f6-lite.chunk.js.map → 3403-d42b7125ae-lite.chunk.js.map} +1 -1
  85. package/dist/scripts/{3515-4de2fd7070-lite.chunk.js → 3515-72a31e0bbd-lite.chunk.js} +1 -1
  86. package/dist/scripts/{3515-4de2fd7070-lite.chunk.js.map → 3515-72a31e0bbd-lite.chunk.js.map} +1 -1
  87. package/dist/scripts/{3588-62e61bc526-lite.chunk.js → 3588-1c1c264291-lite.chunk.js} +2 -2
  88. package/dist/scripts/{3588-62e61bc526-lite.chunk.js.map → 3588-1c1c264291-lite.chunk.js.map} +1 -1
  89. package/dist/scripts/{3895-a54621a8c4-lite.chunk.js → 3895-cbeb003a0a-lite.chunk.js} +1 -1
  90. package/dist/scripts/{3895-a54621a8c4-lite.chunk.js.map → 3895-cbeb003a0a-lite.chunk.js.map} +1 -1
  91. package/dist/scripts/{4151-ad0c6f107f-lite.chunk.js → 4151-bb1e8aafcb-lite.chunk.js} +1 -1
  92. package/dist/scripts/{4151-ad0c6f107f-lite.chunk.js.map → 4151-bb1e8aafcb-lite.chunk.js.map} +1 -1
  93. package/dist/scripts/{458-35c635a2ce-lite.chunk.js → 458-1ca8abf829-lite.chunk.js} +1 -1
  94. package/dist/scripts/{458-35c635a2ce-lite.chunk.js.map → 458-1ca8abf829-lite.chunk.js.map} +1 -1
  95. package/dist/scripts/4718-b3cfb276a7-lite.chunk.js +2 -0
  96. package/dist/scripts/4718-b3cfb276a7-lite.chunk.js.map +1 -0
  97. package/dist/scripts/{5114-fcfd260e0b-lite.chunk.js → 5114-15c4180b16-lite.chunk.js} +1 -1
  98. package/dist/scripts/{5114-fcfd260e0b-lite.chunk.js.map → 5114-15c4180b16-lite.chunk.js.map} +1 -1
  99. package/dist/scripts/{5242-2d752ff85e-lite.chunk.js → 5242-e5cc8311eb-lite.chunk.js} +1 -1
  100. package/dist/scripts/{5242-2d752ff85e-lite.chunk.js.map → 5242-e5cc8311eb-lite.chunk.js.map} +1 -1
  101. package/dist/scripts/{5364-b081f5e1ca-lite.chunk.js → 5364-fe4a00711f-lite.chunk.js} +1 -1
  102. package/dist/scripts/{5364-b081f5e1ca-lite.chunk.js.map → 5364-fe4a00711f-lite.chunk.js.map} +1 -1
  103. package/dist/scripts/{5446-1ef1639ef6-lite.chunk.js → 5446-5a2f719a6f-lite.chunk.js} +1 -1
  104. package/dist/scripts/{5446-1ef1639ef6-lite.chunk.js.map → 5446-5a2f719a6f-lite.chunk.js.map} +1 -1
  105. package/dist/scripts/{5725-6792ca3e92-lite.chunk.js → 5725-1592727a8f-lite.chunk.js} +1 -1
  106. package/dist/scripts/{5725-6792ca3e92-lite.chunk.js.map → 5725-1592727a8f-lite.chunk.js.map} +1 -1
  107. package/dist/scripts/{5769-34ad224f5f-lite.chunk.js → 5769-e9f596e2b2-lite.chunk.js} +1 -1
  108. package/dist/scripts/{5769-34ad224f5f-lite.chunk.js.map → 5769-e9f596e2b2-lite.chunk.js.map} +1 -1
  109. package/dist/scripts/{5803-0005a9eb66-lite.chunk.js → 5803-7db6af5411-lite.chunk.js} +1 -1
  110. package/dist/scripts/{5803-0005a9eb66-lite.chunk.js.map → 5803-7db6af5411-lite.chunk.js.map} +1 -1
  111. package/dist/scripts/{5810-a652483b8e-lite.chunk.js → 5810-c81d69aea8-lite.chunk.js} +2 -2
  112. package/dist/scripts/{5810-a652483b8e-lite.chunk.js.map → 5810-c81d69aea8-lite.chunk.js.map} +1 -1
  113. package/dist/scripts/{5940-511beff2ee-lite.chunk.js → 5940-5731abccf3-lite.chunk.js} +2 -2
  114. package/dist/scripts/5940-5731abccf3-lite.chunk.js.map +1 -0
  115. package/dist/scripts/{6102-f1851eca08-lite.chunk.js → 6102-38e3abf2fa-lite.chunk.js} +3 -3
  116. package/dist/scripts/{6102-f1851eca08-lite.chunk.js.map → 6102-38e3abf2fa-lite.chunk.js.map} +1 -1
  117. package/dist/scripts/{6181-7a4fc8e1e1-lite.chunk.js → 6181-55d2689d74-lite.chunk.js} +1 -1
  118. package/dist/scripts/{6181-7a4fc8e1e1-lite.chunk.js.map → 6181-55d2689d74-lite.chunk.js.map} +1 -1
  119. package/dist/scripts/{6189-ce9f0eeb31-lite.chunk.js → 6189-b45080fab7-lite.chunk.js} +1 -1
  120. package/dist/scripts/{6189-ce9f0eeb31-lite.chunk.js.map → 6189-b45080fab7-lite.chunk.js.map} +1 -1
  121. package/dist/scripts/6309-f5bb1c14dc-lite.chunk.js +3 -0
  122. package/dist/scripts/6309-f5bb1c14dc-lite.chunk.js.map +1 -0
  123. package/dist/scripts/{6415-9d8b88c713-lite.chunk.js → 6415-5ac1a71471-lite.chunk.js} +1 -1
  124. package/dist/scripts/{6415-9d8b88c713-lite.chunk.js.map → 6415-5ac1a71471-lite.chunk.js.map} +1 -1
  125. package/dist/scripts/6450-2745feb746-lite.chunk.js +2 -0
  126. package/dist/scripts/6450-2745feb746-lite.chunk.js.map +1 -0
  127. package/dist/scripts/{6531-597262a181-lite.chunk.js → 6531-1325be9fb1-lite.chunk.js} +1 -1
  128. package/dist/scripts/{6531-597262a181-lite.chunk.js.map → 6531-1325be9fb1-lite.chunk.js.map} +1 -1
  129. package/dist/scripts/{6759-3f36472a49-lite.chunk.js → 6759-a7e1119553-lite.chunk.js} +1 -1
  130. package/dist/scripts/{6759-3f36472a49-lite.chunk.js.map → 6759-a7e1119553-lite.chunk.js.map} +1 -1
  131. package/dist/scripts/{6803-2275c83d96-lite.chunk.js → 6803-222bfeea55-lite.chunk.js} +1 -1
  132. package/dist/scripts/{6803-2275c83d96-lite.chunk.js.map → 6803-222bfeea55-lite.chunk.js.map} +1 -1
  133. package/dist/scripts/6850-393de993b8-lite.chunk.js +3 -0
  134. package/dist/scripts/6850-393de993b8-lite.chunk.js.map +1 -0
  135. package/dist/scripts/{6948-84a5f8d76f-lite.chunk.js → 6948-23ec6a6370-lite.chunk.js} +2 -2
  136. package/dist/scripts/6948-23ec6a6370-lite.chunk.js.map +1 -0
  137. package/dist/scripts/{7533-e079b2af18-lite.chunk.js → 7533-9edee544c6-lite.chunk.js} +1 -1
  138. package/dist/scripts/{7533-e079b2af18-lite.chunk.js.map → 7533-9edee544c6-lite.chunk.js.map} +1 -1
  139. package/dist/scripts/{7777-f0937ef1f5-lite.chunk.js → 7777-1c3490134e-lite.chunk.js} +1 -1
  140. package/dist/scripts/{7777-f0937ef1f5-lite.chunk.js.map → 7777-1c3490134e-lite.chunk.js.map} +1 -1
  141. package/dist/scripts/{7987-db0037709c-lite.chunk.js → 7987-ff7de6531f-lite.chunk.js} +1 -1
  142. package/dist/scripts/{7987-db0037709c-lite.chunk.js.map → 7987-ff7de6531f-lite.chunk.js.map} +1 -1
  143. package/dist/scripts/{8218-f3b81c7287-lite.chunk.js → 8218-088530bdf7-lite.chunk.js} +1 -1
  144. package/dist/scripts/{8218-f3b81c7287-lite.chunk.js.map → 8218-088530bdf7-lite.chunk.js.map} +1 -1
  145. package/dist/scripts/8316-ba6bae1f29-lite.chunk.js +2 -0
  146. package/dist/scripts/8316-ba6bae1f29-lite.chunk.js.map +1 -0
  147. package/dist/scripts/{8354-e30261b594-lite.chunk.js → 8354-d07c3bef5a-lite.chunk.js} +1 -1
  148. package/dist/scripts/{8354-e30261b594-lite.chunk.js.map → 8354-d07c3bef5a-lite.chunk.js.map} +1 -1
  149. package/dist/scripts/{8987-32190552fa-lite.chunk.js → 8987-c0c2790aab-lite.chunk.js} +1 -1
  150. package/dist/scripts/{8987-32190552fa-lite.chunk.js.map → 8987-c0c2790aab-lite.chunk.js.map} +1 -1
  151. package/dist/scripts/9016-0c078a39cb-lite.chunk.js +3 -0
  152. package/dist/scripts/9016-0c078a39cb-lite.chunk.js.map +1 -0
  153. package/dist/scripts/{9068-562c30f718-lite.chunk.js → 9068-554aa0d22b-lite.chunk.js} +1 -1
  154. package/dist/scripts/{9068-562c30f718-lite.chunk.js.map → 9068-554aa0d22b-lite.chunk.js.map} +1 -1
  155. package/dist/scripts/{9211-d4c7016679-lite.chunk.js → 9211-0381d3e715-lite.chunk.js} +1 -1
  156. package/dist/scripts/{9211-d4c7016679-lite.chunk.js.map → 9211-0381d3e715-lite.chunk.js.map} +1 -1
  157. package/dist/scripts/{9329-5cf6baab9d-lite.chunk.js → 9329-798d826fc4-lite.chunk.js} +1 -1
  158. package/dist/scripts/{9329-5cf6baab9d-lite.chunk.js.map → 9329-798d826fc4-lite.chunk.js.map} +1 -1
  159. package/dist/scripts/9417-aa8d198d40-lite.chunk.js +2 -0
  160. package/dist/scripts/9417-aa8d198d40-lite.chunk.js.map +1 -0
  161. package/dist/scripts/9620-d0f04eeccd-lite.chunk.js +3 -0
  162. package/dist/scripts/9620-d0f04eeccd-lite.chunk.js.map +1 -0
  163. package/dist/scripts/{9818-f63bdbbac4-lite.chunk.js → 9818-a2fa140139-lite.chunk.js} +1 -1
  164. package/dist/scripts/{9818-f63bdbbac4-lite.chunk.js.map → 9818-a2fa140139-lite.chunk.js.map} +1 -1
  165. package/dist/scripts/bundle-815f926b0f.min.js +3 -0
  166. package/dist/scripts/bundle-815f926b0f.min.js.map +1 -0
  167. package/package.json +1 -1
  168. package/dist/scripts/1169-3df974a8eb-lite.chunk.js +0 -2
  169. package/dist/scripts/1169-3df974a8eb-lite.chunk.js.map +0 -1
  170. package/dist/scripts/1820-68114ca994-lite.chunk.js.map +0 -1
  171. package/dist/scripts/3070-fb8eb47716-lite.chunk.js +0 -2
  172. package/dist/scripts/3070-fb8eb47716-lite.chunk.js.map +0 -1
  173. package/dist/scripts/4718-2b58aa560d-lite.chunk.js +0 -2
  174. package/dist/scripts/4718-2b58aa560d-lite.chunk.js.map +0 -1
  175. package/dist/scripts/5940-511beff2ee-lite.chunk.js.map +0 -1
  176. package/dist/scripts/6309-dd3a8e7f21-lite.chunk.js +0 -3
  177. package/dist/scripts/6309-dd3a8e7f21-lite.chunk.js.map +0 -1
  178. package/dist/scripts/6450-6819d42c15-lite.chunk.js +0 -2
  179. package/dist/scripts/6450-6819d42c15-lite.chunk.js.map +0 -1
  180. package/dist/scripts/6850-8770bfeefb-lite.chunk.js +0 -3
  181. package/dist/scripts/6850-8770bfeefb-lite.chunk.js.map +0 -1
  182. package/dist/scripts/6948-84a5f8d76f-lite.chunk.js.map +0 -1
  183. package/dist/scripts/8316-dad1824a5f-lite.chunk.js +0 -2
  184. package/dist/scripts/8316-dad1824a5f-lite.chunk.js.map +0 -1
  185. package/dist/scripts/9016-c359251f82-lite.chunk.js +0 -3
  186. package/dist/scripts/9016-c359251f82-lite.chunk.js.map +0 -1
  187. package/dist/scripts/9417-70c6489c67-lite.chunk.js +0 -2
  188. package/dist/scripts/9417-70c6489c67-lite.chunk.js.map +0 -1
  189. package/dist/scripts/9620-630f9e6344-lite.chunk.js +0 -3
  190. package/dist/scripts/9620-630f9e6344-lite.chunk.js.map +0 -1
  191. package/dist/scripts/bundle-d20cb66d1a.min.js +0 -3
  192. package/dist/scripts/bundle-d20cb66d1a.min.js.map +0 -1
  193. /package/dist/scripts/{2446-acc94130ed-lite.chunk.js.LICENSE.txt → 2446-eaa1d2ee7d-lite.chunk.js.LICENSE.txt} +0 -0
  194. /package/dist/scripts/{3588-62e61bc526-lite.chunk.js.LICENSE.txt → 3588-1c1c264291-lite.chunk.js.LICENSE.txt} +0 -0
  195. /package/dist/scripts/{5810-a652483b8e-lite.chunk.js.LICENSE.txt → 5810-c81d69aea8-lite.chunk.js.LICENSE.txt} +0 -0
  196. /package/dist/scripts/{6102-f1851eca08-lite.chunk.js.LICENSE.txt → 6102-38e3abf2fa-lite.chunk.js.LICENSE.txt} +0 -0
  197. /package/dist/scripts/{6309-dd3a8e7f21-lite.chunk.js.LICENSE.txt → 6309-f5bb1c14dc-lite.chunk.js.LICENSE.txt} +0 -0
  198. /package/dist/scripts/{6850-8770bfeefb-lite.chunk.js.LICENSE.txt → 6850-393de993b8-lite.chunk.js.LICENSE.txt} +0 -0
  199. /package/dist/scripts/{9016-c359251f82-lite.chunk.js.LICENSE.txt → 9016-0c078a39cb-lite.chunk.js.LICENSE.txt} +0 -0
  200. /package/dist/scripts/{9620-630f9e6344-lite.chunk.js.LICENSE.txt → 9620-d0f04eeccd-lite.chunk.js.LICENSE.txt} +0 -0
  201. /package/dist/scripts/{bundle-d20cb66d1a.min.js.LICENSE.txt → bundle-815f926b0f.min.js.LICENSE.txt} +0 -0
@@ -1,3 +0,0 @@
1
- /*! For license information please see 6309-dd3a8e7f21-lite.chunk.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6309],{49602:(e,t,n)=>{var r;n.d(t,{b:()=>i}),function(e){e[e.None=0]="None",e[e.AllSubjects=1]="AllSubjects",e[e.AllLevels=2]="AllLevels",e[e.AllSubjectsAndAllLevels=3]="AllSubjectsAndAllLevels"}(r||(r={}));var a=n(25925),i={hasManyPresentationTypes:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=0,n=0;return null==e||e.forEach((function(e){e.type===a.R.Subject?t++:e.type===a.R.Curriculum&&n++})),{hasManySubjectPresentations:t>1,hasManyCurriculumPresentations:n>1}},getBulkPreferencesState:function(e){return e===r.AllSubjectsAndAllLevels?{levels:!0,subjects:!0}:{levels:e===r.AllLevels,subjects:e===r.AllSubjects}},hasBulkSelectedLevels:function(e){return e===r.AllLevels||e===r.AllSubjectsAndAllLevels},hasBulkSelectedTopics:function(e){return e===r.AllSubjects||e===r.AllSubjectsAndAllLevels},getNextBulkState:function(e,t){var n=r.None,a=r.AllSubjects,i=r.AllLevels,o=r.AllSubjectsAndAllLevels,c="topics"===t;switch(e){case n:default:return c?a:i;case a:return c?n:o;case i:return c?o:n;case o:return c?i:a}}}},80143:(e,t,n)=>{n.d(t,{n:()=>i});var r=n(32735),a=n(69454);function i(e,t){var n=r.useMemo((function(){return(null==e?void 0:e.length)&&t&&a.T.shouldShowAudiences(t)?a.T.getSortedPresentationAudiences(e,t):null}),[e]);return r.useMemo((function(){return(null==n?void 0:n.length)?a.T.getMergedPresentationAudienceString(n):null}),[n])}},69454:(e,t,n)=>{n.d(t,{T:()=>d});var r=n(75896),a=n(1048),i=n(55171);function o(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 c=/\d/,l=function(e){var t,n,a=r.m.first(e),i=r.m.last(e);return a.name===i.name?a.name:"Advanced"===i.name?"lower"===(t=a.name.split(" "),n=1,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,a,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return o(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)?o(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.")}())[0].toLowerCase()?"Lower Sec - Adv":"Upper Sec - Adv":"Lower - Upper Sec"},s=/([0-9]+)/gi,u=/\s|\+/gi,d={getSortedPresentationAudiences:function(e,t){var n=e.filter((function(e){return!!e})).map((function(e){return e.id.toString()}));return t.filter((function(e){return n.includes(e.masterId.toString())}))},getMergedPresentationAudienceString:function(e){var t,n,a,o="";switch(+r.m.first(e).presentationId){case i.e.PresentationIds.DEFAULT:case i.e.PresentationIds.AU_SECONDARY:case i.e.PresentationIds.US_ELEMENTARY:case i.e.PresentationIds.AU_PRIMARY:case i.e.PresentationIds.STREAMABLE_LEARNING:if(1===e.length)return e[0];o=function(e){var t=e.map((function(e){return e.name})).join(" "),n=t.split(" ").filter((function(e){return!isNaN(+e)})).map((function(e){return+e}))||[],r=t.split(" ").filter((function(e){return isNaN(+e)}))||[],a=e.find((function(e){return!c.test(e.name)})),i=r.find((function(e){return e!==(null==a?void 0:a.name)}));if(e.length>1&&(i+="s"),a&&n.length)return"".concat(i," ").concat(a.name.charAt(0)," - ").concat(n.pop());var o=function(e){var t,n,r,a,i=!1,o=[];for(e=e.sort((function(e,t){return e-t})),r=0;r<e.length;r++)a=r+1,i||(t=e[r]),n=e[a],e[r]+1===n?i=!0:i?(o.push("".concat(t," - ").concat(e[r])),i=!1):(o.push("".concat(e[r])),i=!1);return o}(n);return"".concat(i," ").concat(o.join(", "))}(e);break;case i.e.PresentationIds.SCOTLAND_PRIMARY:case i.e.PresentationIds.INTERNATIONAL_PRIMARY:case i.e.PresentationIds.INTERNATIONAL_SECONDARY:if(1===e.length)return e[0];o=function(e){var t=e.map((function(e){return e.name})),n={};t.forEach((function(e,t){if(0!==t){var r=e.split(" ");Object.keys(n).forEach((function(e){r.includes(e)||delete n[e]}))}else e.split(" ").forEach((function(e,t){n[e]=0===t?"start":"end"}))}));var r=Object.keys(n)[0],a=n[r];if(!r)return e[0].name;var i=e[0].name,o=e[e.length-1].name,c=function(e){return e.split(r)[0]},l="".concat(c(i)," - ").concat(c(o));return"start"===a?"".concat(r," ").concat(l):"".concat(l," ").concat(r)}(e);break;case i.e.PresentationIds.ENGLISH_SECONDARY:o=l(e);break;case i.e.PresentationIds.SCOTLAND_SECONDARY:t=e,n=r.m.first(t),a=r.m.last(t),o=n.name===a.name?n.name:"Senior Phase"===a.name?"".concat(n.name," - Senior"):"Third - Fourth Level";break;case i.e.PresentationIds.ENGLAND_PRIMARY:o=function(e){var t=r.m.first(e),n=r.m.last(e),a=r.m.first(t.name.split(" ")),i=r.m.first(n.name.split(" ")),o=t.name.split(" ").find((function(e){return!isNaN(+e)})),c=n.name.split(" ").find((function(e){return!isNaN(+e)}));if(t===n)return"Key"===a||"Reception"===a?t.name:"".concat(a," KS").concat(o);var l="",s="";return l="Reception"===a?"R":"KS".concat(o),s="KS".concat(c),"Lower"===a&&"Upper"===i?"L ".concat(l," - U ").concat(s):("Lower"===a&&(l="Lower ".concat(l)),"Upper"===i&&(s="Upper ".concat(s)),"Key"===i&&(s=n.name),"".concat(l," - ").concat(s))}(e);case i.e.PresentationIds.US_MIDDLE:case i.e.PresentationIds.US_HIGH:}return o?{name:o}:null},sortMembersWithDuplicateNamesByAudience:function(e){var t=function(e){return e.length?(e.forEach((function(e){var a=+r.m.first(e.name.match(s));if(!t)return t=e,void(n=a);a<n&&(t=e)})),t):null;var t,n},n={},a=[];return e.forEach((function(e){if(!n[e.name])return n[e.name]=1,void a.push(e);a.push(e),n[e.name]++;var r=a.splice(a.length-n[e.name]).sort((function(e,n){var r=t(e.subjectPresentationAudiences.data),a=t(n.subjectPresentationAudiences.data);if(!r&&a)return 1;if(!a)return-1;var i=r.name.localeCompare(a.name);return 0===i?i:i>0?-1:1}));a=a.concat(r)})),a},getActiveAudiencesFromParams:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(a.t.isObject(t)&&!a.t.isEmpty(t)&&e&&e.length&&d.shouldShowAudiences(e)){var n=t.a;if(n){"string"==typeof n&&(n=[n]);var r=function(e){return e.replace(u,"").toLowerCase()},i=n.reduce((function(e,t){return e[r(t)]=t,e}),{});return e.filter((function(e){return i[r(e.name)]}))}}},getAudienceParams:function(e){return(null==e?void 0:e.length)?{a:e.map((function(e){return e.name}))}:null},shouldShowAudiences:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return!!e&&e.length>1}}},75919:(e,t,n)=>{n.d(t,{N:()=>i});var r=n(32735);const a={annotation:"LkdHB",above:"ROdbm",below:"OzyHx",left:"W9EBF",right:"zhio2",divider:"cdR_p",imageContainer:"QZZMF"};function i(e){return r.createElement("div",{className:(t="d-flex align-items-center text-center position-relative w-100 ".concat(a.imageContainer),"center"===e.contentPosition&&(t+=" px-5 justify-content-center"),"right"===e.contentPosition&&(t+=" me-n5 justify-content-end"),t)},!!e.annotationUrl&&r.createElement("div",{className:function(){var t=a.annotation;switch(e.annotationPosition){case"top-left":t+=" ".concat(a.above," ").concat(a.left);break;case"top-right":t+=" ".concat(a.above," ").concat(a.right);break;case"bottom-left":t+=" ".concat(a.below," ").concat(a.left);break;case"bottom-right":t+=" ".concat(a.below," ").concat(a.right)}return e.annotationClassName&&(t+=" ".concat(e.annotationClassName)),t}()},r.createElement("img",{className:"img-fluid",src:e.annotationUrl})),e.children,"right"===e.contentPosition&&r.createElement("div",{className:a.divider}));var t}i.defaultProps={contentPosition:"center"}},63478:(e,t,n)=>{n.d(t,{B:()=>a});var r=n(32735);function a(e){return r.createElement("div",{className:"w-100 h-100 position-fixed bg-".concat(e.variant)},e.children)}},52588:(e,t,n)=>{n.d(t,{R:()=>u});var r=n(32735),a=n(75896),i=n(55171),o=n(54610),c=n(79967),l=n(67453);function s(e,t){return"mobile"===t?function(e){var t=e%10,n={top:"".concat(4*e,"%")};switch(t){case 0:return n.left="12.5%",n.animationDelay="0.5s",n;case 1:return n.right="7.5%",n.animationDelay="1s",n;case 2:return n.left="10%",n;case 3:return n.right="2.5%",n.animationDelay="0.5s",n;case 4:return n.left="2.5%",n.animationDelay="1.5s",n;case 5:return n.right="10%",n;case 6:return n.left="12.5%",n.animationDelay="1.5s",n;case 7:return n.right="7.5%",n.animationDelay="0.5s",n;case 8:return n.left="5%",n.animationDelay="1s",n;case 9:return n.right="2.5%",n.animationDelay="1s",n;default:return n.left="10%",n.animationDelay="1.5s",n}}(e):"50%"===t?function(e){var t=e%10,n={top:"".concat(4*e,"%")};switch(t){case 0:return n.left="25%",n.animationDelay="0.5s",n;case 1:return n.right="15%",n.animationDelay="1s",n;case 2:return n.left="20%",n;case 3:return n.right="5%",n.animationDelay="0.5s",n;case 4:return n.left="5%",n.animationDelay="1.5s",n;case 5:return n.right="20%",n;case 6:return n.left="25%",n.animationDelay="1.5s",n;case 7:return n.right="15%",n.animationDelay="0.5s",n;case 8:return n.left="10%",n.animationDelay="1s",n;case 9:return n.right="5%",n.animationDelay="1s",n;default:return n.left="20%",n.animationDelay="1.5s",n}}(e):function(e){var t=e%10,n={top:"".concat(4*e,"%")};switch(t){case 0:return n.left="25%",n.animationDelay="0.5s",n;case 1:return n.right="30%",n.animationDelay="1s",n;case 2:return n.left="40%",n;case 3:return n.right="10%",n.animationDelay="0.5s",n;case 4:return n.left="10%",n.animationDelay="1.5s",n;case 5:return n.right="40%",n;case 6:return n.left="30%",n.animationDelay="1.5s",n;case 7:return n.right="30%",n.animationDelay="0.5s",n;case 8:return n.left="10%",n.animationDelay="1s",n;case 9:return n.right="10%",n.animationDelay="1s",n;default:return n.left="40%",n.animationDelay="1.5s",n}}(e)}var u=r.memo((function(e){var t=a.m.shuffle(i.e.Onboarding.LOADING_THUMBNAILS),n=(0,c.k)();return r.createElement("div",{className:"".concat("n2Qe4"," ").concat("50%"===e.screenSize?"w-50":"w-100")},t.map((function(t,a){return r.createElement("div",{key:a,className:"".concat("ZlA2t"," position-absolute rounded-3 overflow-hidden"),style:s(a,n.xs?"mobile":e.screenSize)},!e.hideThumbnailMask&&r.createElement("div",{className:"".concat("jNop3"," ").concat("blue"===e.variant?"jVOWE":"YNfFq")}),r.createElement("img",{className:"img-fluid",src:l.j.createUrl(t,{size:o.h2.Small})}))})))}))},2248:(e,t,n)=>{n.d(t,{L:()=>h});var r=n(32735),a=n(60376),i=n(83914),o=n(2786),c=n(83345),l=n(72639),s=n(79967),u=n(35223),d=n(87114);const m={dot:"AlRQD",logo:"L42gR",blackBar:"ESCxm",topNav:"a3G_4",leftNav:"YxGVV",belowHeader:"jc_cg",leftNavIcon:"U6i6r",leftNavText:"LnYlW",presentationPlaceholderIcon:"Ljaju",presentationIcon:"QdwPq",presentationPlaceholderText:"af06V",curriculumIcon:"N7T4T",curriculumIconSmall:"_6xrUg",curriculumContainer:"Z65qX",iconPlaceholder:"CKOXL",shadow:"zygeJ",presentationName:"Oj7Dt"};var f="onboarding.mockLayout";function v(){return r.createElement("div",{className:"d-flex align-items-center justify-content-center mb-2 px-3"},r.createElement("div",{className:"".concat(m.leftNavIcon," rounded-circle")}),r.createElement("div",{className:"".concat(m.leftNavText," rounded-pill")}))}function h(e){var t,n,h=(0,s.k)();return r.createElement("div",{className:"border border-dark border-2 bg-white rounded-3 user-select-none overflow-hidden position-relative h-100 w-100"},!!e.editingCurriculum&&r.createElement("div",{className:"w-100 h-100 position-absolute ".concat(m.shadow)},r.createElement("div",{className:"d-flex align-items-center h-100 w-50 ".concat(m.curriculumContainer)},r.createElement("div",{className:"bg-white rounded-3 border p-3 w-100"},r.createElement("h2",{className:"h6 text-start"},r.createElement(c.x,{namespace:f,phrase:"curriculum"})),e.curriculum?r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"".concat(m.curriculumIcon," rounded-circle me-2 border")},r.createElement(a.f,{imageUrl:null===(t=e.curriculum.cover)||void 0===t?void 0:t.url})),r.createElement("div",{className:"text-start"},e.curriculum.name)):r.createElement("div",{className:"d-flex align-items-center text-secondary"},r.createElement("div",{className:"me-2 rounded-circle p-1 ".concat(m.iconPlaceholder)},r.createElement(a.f,{svgSize:i.S.Large,textVariant:"secondary",svgName:u.vn.GraduationCap})),r.createElement(c.x,{namespace:f,phrase:"selectCurriculum"}))))),r.createElement("div",{className:"bg-dark d-flex px-3 py-2 ".concat(m.blackBar)},r.createElement("div",{className:"rounded-circle me-2 ".concat(m.dot)}),r.createElement("div",{className:"rounded-circle me-2 ".concat(m.dot)}),r.createElement("div",{className:"rounded-circle ".concat(m.dot)})),r.createElement("div",{className:"border-bottom px-3 py-2 d-flex align-items-center ".concat(m.topNav)},r.createElement("div",{className:"".concat(m.logo," me-4")},h.xs?r.createElement(o.bc,null):r.createElement(o.$S,null)),r.createElement("div",{className:"form-control w-75 d-flex justify-content-start"},r.createElement(i.x,{svgName:u.vn.Search})),!!e.curriculum&&r.createElement("div",{className:"".concat(m.curriculumIconSmall," rounded-circle ms-2 me-n1 border")},r.createElement(a.f,{imageUrl:null===(n=e.curriculum.cover)||void 0===n?void 0:n.url}))),r.createElement("div",{className:"d-flex ".concat(m.belowHeader)},r.createElement("div",{className:"".concat(m.leftNav," border-end")},r.createElement("div",{className:"d-flex flex-column pt-3 h-100"},r.createElement(v,null),r.createElement(v,null),r.createElement(v,null),r.createElement(v,null),r.createElement(v,null),r.createElement("div",{className:"d-flex align-items-end h-100 w-100"},r.createElement("div",{className:"border-top p-3 w-100"},r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"".concat(function(){if(!e.presentation)return m.presentationPlaceholderIcon;switch(d.i.getMappedPresentationLevel(e.presentation.learningLevel)){case l.p.Level_1:return"bg-indigo ".concat(m.presentationIcon);case l.p.Level_3:return"bg-blue ".concat(m.presentationIcon);default:case l.p.Level_2:return"bg-green ".concat(m.presentationIcon)}}()," text-white rounded")},r.createElement(i.x,{svgName:u.vn.School,size:i.S.Large})),e.presentation?r.createElement("span",{className:"fw-semibold text-truncate ".concat(m.presentationName)},e.presentation.name):r.createElement("div",{className:"".concat(m.presentationPlaceholderText," fw-semibold")},r.createElement(c.x,{namespace:f,phrase:"schoolLevel"}))))))),r.createElement("div",{className:"w-100 h-100 overflow-hidden"},e.children)))}},62007:(e,t,n)=>{n.d(t,{u:()=>u});var r=n(32735),a=n(5465),i=n(89118),o=n(54610),c=n(2248);const l={banner:"CQxNy",title:"NzV5V",description1:"kjCZi",description2:"cBeyJ",placeholder:"Ks_Tl",playlistName:"eFPqz",thumbnailCol:"dgCQ7",videoInfoCol:"pzfE2"};function s(e){return r.createElement("li",{className:"row mb-2"},r.createElement("div",{className:"col-lg-4 col-5 ".concat(l.thumbnailCol)},e.video?r.createElement(i.u,{video:e.video,type:"cosmetic",hideDuration:!0,imageOptions:{size:o.h2.Medium}}):r.createElement(a.oy,{type:a.mS.Video,extraClasses:"position-relative rounded-3 ".concat(l.placeholder)})),r.createElement("div",{className:"col-lg-8 col-7 ".concat(l.videoInfoCol)},r.createElement("div",{className:"".concat(l.title," rounded-pill bg-grey mb-1")}),r.createElement("div",{className:"".concat(l.description1," rounded-pill bg-grey mb-1")}),r.createElement("div",{className:"".concat(l.description2," rounded-pill bg-grey mb-1")})))}function u(e){var t,n,a,i=e.hidePlaceholders?0:Math.max(6-(null!==(n=null===(t=e.videos)||void 0===t?void 0:t.length)&&void 0!==n?n:0),0);return r.createElement(c.L,{presentation:e.presentation,curriculum:e.curriculum},r.createElement("div",{className:"bg-teal ".concat(l.banner," position-relative")},e.name&&r.createElement("div",{className:"h5 text-white mb-0 ".concat(l.playlistName)},e.name)),r.createElement("ul",{className:"list-unstyled mb-0 w-100 p-2"},null===(a=e.videos)||void 0===a?void 0:a.map((function(e){return r.createElement(s,{key:e.id,video:e})})),new Array(i).fill(0).map((function(e,t){return r.createElement(s,{key:t})}))))}},14495:(e,t,n)=>{n.r(t),n.d(t,{ONBOARDING_MAX_VIDEOS:()=>ne,OnboardingSelectVideosView:()=>ae});var r=n(32735),a=n(57900),i=n(2948),o=n(20354),c=n(65858),l=n(83345),s=n(89454),u=n(79967),d=n(84703),m=n(99742),f=n(86702),v=n(82817),h=n(86698),p=n(23481),g=n(89682),y=n(11607),b=n(89118),E=n(76177),N=n(54610),S=n(80143);const w={selected:"ZG5MR"};var x="onboarding.classificationVideos";function A(e){var t,n=(0,S.n)(null===(t=e.video.subjectPresentationAudiences)||void 0===t?void 0:t.data,e.audiences),a="border border-2 rounded-3 overflow-hidden";return e.isSelected?a+=" border-success":a+=" border-transparent",r.createElement(y.L,{onClick:function(){return e.onSelectVideo(e.video)},disabled:e.disabled},r.createElement(b.u,{type:"cosmetic",video:e.video,imageOptions:{size:N.h2.Medium},audience:n,checkMarkStatus:e.isSelected?g.h.Complete:g.h.Incomplete,setCheckMarkStatus:e.disabled?null:function(){return e.onSelectVideo(e.video),Promise.resolve()},extraClasses:a,imageClassName:e.isSelected?"".concat(w.selected):"",hideDuration:!0}))}function I(e){function t(t,n){return t?e.onSelectAll(n):e.onDeselectAll(n),Promise.resolve()}var n=e.totalSelected>=ne;return r.createElement("ul",{className:"list-unstyled"},e.classificationVideosGrouping.map((function(a){var i=a.videos.filter((function(t){return e.isSelected(t.id)})),o=i.length===a.videos.length,c=!o&&e.totalSelected+a.videos.length-i.length>ne;return r.createElement("li",{key:a.classificationId,className:"pb-3"},r.createElement("div",{className:"d-flex justify-content-between align-items-center mb-2"},r.createElement("h2",{className:"h5 mb-1 align-self-end"},a.classificationName),r.createElement(E.u,{title:c?p.T.getPhrase(x,"maxVideos",{limit:ne}):"",spanHack:!0,spanHackClassName:""},r.createElement("div",{className:"d-flex align-items-center"},r.createElement(y.L,{disabled:c,onClick:function(){return t(!o,a)},className:"me-2 text-nowrap ".concat(c?"text-secondary":"")},r.createElement(l.x,{namespace:x,phrase:"selectAll"})),r.createElement(g.I,{status:o?g.h.Complete:g.h.Incomplete,setStatus:function(e){return t(e===g.h.Complete,a)},style:"outline",disabled:c})))),r.createElement("ul",{className:"row list-unstyled g-2"},a.videos.map((function(t){var i=e.isSelected(t.id),o=n&&!i;return r.createElement("li",{key:t.id,className:"col-sm-6 col-md-4 col-lg-6 col-xl-6"},r.createElement(E.u,{title:o?p.T.getPhrase(x,"maxVideos",{limit:ne}):"",spanHack:!0,spanHackClassName:""},r.createElement(A,{video:t,onSelectVideo:function(t){return e.onSelectVideo(t,a.classificationId,a.classificationName)},audiences:e.audiences,isSelected:e.isSelected(t.id),disabled:o})))}))))})))}var j=n(75359),L=n(12058),k=n(40695),O=n(75919),P=n(63478),C=n(52588),D=n(62007),T=n(75896),_=n(60736),R=n(49602),V=n(61699),M=n(1575),U=n(37802);function B(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(e,t)||G(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function G(e,t){if(e){if("string"==typeof e)return z(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)?z(e,t):void 0}}function z(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 F=n(73190),H=n(90815);const Y={loaderText:"pg4Oj",annotation:"D3Acz"};function K(e){return K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},K(e)}function W(){W=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var i=t&&t.prototype instanceof g?t:g,o=Object.create(i.prototype),c=new O(r||[]);return a(o,"_invoke",{value:I(e,n,c)}),o}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var m="suspendedStart",f="suspendedYield",v="executing",h="completed",p={};function g(){}function y(){}function b(){}var E={};s(E,o,(function(){return this}));var N=Object.getPrototypeOf,S=N&&N(N(P([])));S&&S!==n&&r.call(S,o)&&(E=S);var w=b.prototype=g.prototype=Object.create(E);function x(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function A(e,t){function n(a,i,o,c){var l=d(e[a],e,i);if("throw"!==l.type){var s=l.arg,u=s.value;return u&&"object"==K(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,o,c)}),(function(e){n("throw",e,o,c)})):t.resolve(u).then((function(e){s.value=e,o(s)}),(function(e){return n("throw",e,o,c)}))}c(l.arg)}var i;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return i=i?i.then(a,a):a()}})}function I(t,n,r){var a=m;return function(i,o){if(a===v)throw Error("Generator is already running");if(a===h){if("throw"===i)throw o;return{value:e,done:!0}}for(r.method=i,r.arg=o;;){var c=r.delegate;if(c){var l=j(c,r);if(l){if(l===p)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===m)throw a=h,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=v;var s=d(t,n,r);if("normal"===s.type){if(a=r.done?h:f,s.arg===p)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(a=h,r.method="throw",r.arg=s.arg)}}}function j(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,j(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),p;var i=d(a,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,p;var o=i.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,p):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function L(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function P(t){if(t||""===t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,i=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return i.next=i}}throw new TypeError(K(t)+" is not iterable")}return y.prototype=b,a(w,"constructor",{value:b,configurable:!0}),a(b,"constructor",{value:y,configurable:!0}),y.displayName=s(b,l,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,s(e,l,"GeneratorFunction")),e.prototype=Object.create(w),e},t.awrap=function(e){return{__await:e}},x(A.prototype),s(A.prototype,c,(function(){return this})),t.AsyncIterator=A,t.async=function(e,n,r,a,i){void 0===i&&(i=Promise);var o=new A(u(e,n,r,a),i);return t.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},x(w),s(w,l,"Generator"),s(w,o,(function(){return this})),s(w,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=P,O.prototype={constructor:O,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(k),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],c=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var l=r.call(o,"catchLoc"),s=r.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return a(o.catchLoc,!0);if(this.prev<o.finallyLoc)return a(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return a(o.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return a(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var i=a;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,p):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),p},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;k(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:P(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),p}},t}function Q(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=K(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=K(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==K(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Z(e){return function(e){if(Array.isArray(e))return $(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||X(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 q(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(e,t)||X(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function X(e,t){if(e){if("string"==typeof e)return $(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)?$(e,t):void 0}}function $(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 J=function(e,t,n,r){return new(n||(n=Promise))((function(a,i){function o(e){try{l(r.next(e))}catch(e){i(e)}}function c(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,c)}l((r=r.apply(e,t||[])).next())}))},ee=6e3,te=3,ne=100,re="onboarding.selectVideos";function ae(e){var t=(0,F.Q)(e.redirectUrl),n=t.onClickBack,p=t.exitOnboarding,g=t.completeStepAsync,y=t.onSaveError,b=(0,H.H)().logEvent,E=q((0,i.D)(f.y.ONBOARDING_VIDEOS_V2,[],{storage:a.Z1.LocalStorage}),2),N=E[0],S=E[1],w=o.a.useBasicFetch(s.O.presentationAudiences()),x=(0,h.y)().preferredPresentation,A=(0,v.M)().preferredCurriculum,K=function(){var e,t,n=(0,h.y)().preferredPresentation,r=(0,U.r)(null),a=r.bulkOnboardingPreferencesState,i=r.isLoadingSettings,c=o.a.useBasicFetch(V.o.mySubjectPreferences()),l=_.A[n.id]||{},s=Object.entries(l).reduce((function(e,t){var n=B(t,2),r=n[0],a=n[1].name;return e[r]=a,e}),{}),u=R.b.hasBulkSelectedTopics(a)?l:null!==(t=null===(e=c.data)||void 0===e?void 0:e.reduce((function(e,t){return l[t.id]?(e[t.id]=l[t.id],e):e}),{}))&&void 0!==t?t:{};Object.keys(u).length||(u=l);var d=[],m={};Object.entries(u).forEach((function(e){var t,n=B(e,2),r=n[0],a=n[1];d.push.apply(d,function(e){if(Array.isArray(e))return z(e)}(t=a.videoIds)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||G(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.")}()),a.videoIds.forEach((function(e){m[e]||(m[e]=[]),m[e].push(r)}))}));var f=o.a.useBasicFetchAll(T.m.chunk(T.m.uniq(d),25).map((function(e){return M.R.videos(e)}))),v=T.m.flatten(f.data||[]),p={};return null==v||v.forEach((function(e){m[e.id].forEach((function(t){p[t]||(p[t]={classificationId:t,classificationName:s[t],videos:[]}),p[t].videos.push(e)}))})),{hasCompleted:c.hasCompleted&&f.hasCompleted&&!i,data:Object.values(p)}}(),X=q(r.useState(K.hasCompleted),2),$=X[0],ae=X[1],ie=(0,u.k)(),oe=ie.lg||ie.xl||ie.xxl,ce=(0,d.n)();r.useEffect((function(){var e=window.setTimeout((function(){ae(!0)}),ee);return function(){window.clearTimeout(e)}}),[]);var le=K.hasCompleted&&w.hasCompleted,se=!$||!le,ue=se?{hasCustomButtons:!0}:{hasCustomButtons:!1,onClickNext:function(){return J(this,void 0,void 0,W().mark((function e(){return W().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return b(c.Vw.Click,c.Ix.Next,{videos:N.map((function(e){var t;return{id:e.data.id,name:e.data.name,thumbnailUrl:null===(t=e.data.thumbnail)||void 0===t?void 0:t.url,videoSubjectId:e.classificationId,videoSubjectName:e.classificationName}})),presentationId:x.id,presentationName:x.name,presentationDescription:x.description}),e.prev=1,e.next=4,g();case 4:e.next=10;break;case 6:return e.prev=6,e.t0=e.catch(1),y(),e.abrupt("return",Promise.reject());case 10:case"end":return e.stop()}}),e,null,[[1,6]])})))},onClickBack:n,onClickComeBackLater:p,disableNext:N.length<te||N.length>ne};return se&&!oe?r.createElement(P.B,{variant:"dark-blue"},r.createElement("div",{className:"w-100 d-flex align-items-center px-4 text-center flex-column text-white ".concat(Y.loaderText)},r.createElement("h1",{className:"h3 mb-4"},r.createElement(l.x,{namespace:re,phrase:"loadingHeading"})),r.createElement("p",{className:"h6 text-center"},r.createElement(l.x,{namespace:re,phrase:"searching"}))),r.createElement(C.R,{variant:"dark-blue",screenSize:"100%",hideThumbnailMask:!0})):r.createElement(k.z,{namespace:re},r.createElement(k.z.Left,{className:"bg-dark-blue d-flex flex-column align-items-end justify-content-center"},se?r.createElement(C.R,{variant:"dark-blue",screenSize:"50%"}):r.createElement(O.N,{contentPosition:"right",annotationUrl:N.length>=te?m.W.OnboardingV2.SelectVideos.LOOKING_GOOD:m.W.OnboardingV2.SelectVideos.BEFORE_SELECTION,annotationPosition:N.length>=te?"bottom-left":"top-left",annotationClassName:Y.annotation},r.createElement(D.u,{presentation:x,curriculum:A,videos:N.map((function(e){return e.data}))}))),r.createElement(k.z.Right,Object.assign({},ue),se?r.createElement(r.Fragment,null,r.createElement(j.W,{className:"text-center"},r.createElement(l.x,{phrase:ce?"loadingHeadingKdm":"loadingHeading"})),r.createElement("p",{className:"text-center"},r.createElement(l.x,{phrase:"searching"}))):r.createElement(r.Fragment,null,r.createElement(j.W,null,r.createElement(l.x,{phrase:ce?"headingKdm":"heading"})),r.createElement(L.X,null,r.createElement(l.x,{phrase:"info"})),r.createElement(I,{classificationVideosGrouping:K.data,onSelectVideo:function(e,t,n){b(c.Vw.Select,c.Ix.SelectVideo,{videoId:e.id,videoName:e.name,videoSubjectId:t,videoSubjectName:n,presentationId:x.id,presentationName:x.name,presentationDescription:x.description}),N.some((function(t){return t.data.id.toString()===e.id.toString()}))?S(N.filter((function(t){return t.data.id.toString()!==e.id.toString()}))):S([].concat(Z(N),[{data:e,classificationId:t,classificationName:n}]))},audiences:w.data,onSelectAll:function(e){b(c.Vw.Click,c.Ix.SelectAllVideos,{subjectId:e.classificationId,subjectName:e.classificationName,videos:e.videos.map((function(t){var n;return{id:t.id,name:t.name,thumbnailUrl:null===(n=t.thumbnail)||void 0===n?void 0:n.url,videoSubjectId:e.classificationId,videoSubjectName:e.classificationName}})),presentationId:x.id,presentationDescription:x.description});var t=N.reduce((function(e,t){return Object.assign(Object.assign({},e),Q({},t.data.id,!0))}),{});S([].concat(Z(N),Z(e.videos.filter((function(e){return!t[e.id]})).map((function(t){return{data:t,classificationId:e.classificationId,classificationName:e.classificationName}})))))},onDeselectAll:function(e){b(c.Vw.Click,c.Ix.DeselectAllVideos,{subjectId:e.classificationId,subjectName:e.classificationName,videos:e.videos.map((function(t){var n;return{id:t.id,name:t.name,thumbnailUrl:null===(n=t.thumbnail)||void 0===n?void 0:n.url,videoSubjectId:e.classificationId,videoSubjectName:e.classificationName}})),presentationId:x.id,presentationDescription:x.description});var t=e.videos.reduce((function(e,t){return Object.assign(Object.assign({},e),Q({},t.id,!0))}),{});S(N.filter((function(e){return!t[e.data.id]})))},isSelected:function(e){return N.some((function(t){return t.data.id.toString()===e.toString()}))},totalSelected:N.length}))))}}}]);
3
- //# sourceMappingURL=6309-dd3a8e7f21-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/6309-dd3a8e7f21-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/enums/BulkOnboardingPreferencesState.ts","file:///app/packages/libs/shared/src/apps/subjects/utils/OnboardingHelper.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/projects/lite/src/apps/onboarding/components/left-panel-item/left-panel-item.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/left-panel-item/LeftPanelItem.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/loaders/primitives/OnboardingLoaderContainer.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/loaders/videos-loader/getOnboardingLoaderVideos.ts","file:///app/packages/projects/lite/src/apps/onboarding/components/loaders/videos-loader/OnboardingVideosLoader.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/loaders/videos-loader/videos-loader.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/layout/mock-layout.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/layout/MockLayout.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/playlist/mock-playlist.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/playlist/MockPlaylist.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/classification-videos/classification-videos.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/classification-videos/OnboardingClassificationVideos.tsx","file:///app/packages/projects/lite/src/apps/onboarding/views/select-videos/select-videos.scss","file:///app/packages/projects/lite/src/apps/onboarding/views/select-videos/OnboardingSelectVideosView.tsx","file:///app/packages/projects/lite/src/apps/onboarding/hooks/useGetSuggestedVideos.ts"],"sourcesContent":["export enum BulkOnboardingPreferencesState {\n None = 0,\n AllSubjects = 1,\n AllLevels = 2,\n AllSubjectsAndAllLevels = 3\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { BulkOnboardingPreferencesState } from 'libs/shared/enums/BulkOnboardingPreferencesState';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { Presentation } from 'libs/shared/interfaces';\n\n/**\n * These are all the valid preference steps in the onboarding worflow\n * Steps are displayed in full workflow order from left to right.\n * \n * Important: Not all customers/users will be required to compelete all steps.\n * \n * School-level = presentation selection for K12\n */\nexport type OnboardingStep = 'welcome' | 'school-level' | 'curriculum' | 'audiences' | 'topics' | 'summary' ;\n\nexport const OnboardingHelper = {\n hasManyPresentationTypes(presentations: Presentation[] = []): HashObject {\n let totalAvailableSubjectPresentations = 0;\n let totalAvailableCurriculumPresentations = 0;\n\n presentations?.forEach(p => {\n if (p.type === PresentationType.Subject)\n totalAvailableSubjectPresentations++;\n\n else if (p.type === PresentationType.Curriculum)\n totalAvailableCurriculumPresentations++;\n });\n\n /**\n * The checks for \"> 1\" are done because we _only_ want to display presentation selectors\n * if the user has more than 1 presentation to select from. If they only have 1 available,\n * then that will always be used by default and they don't have to make any decisions.\n */\n return {\n hasManySubjectPresentations: totalAvailableSubjectPresentations > 1,\n hasManyCurriculumPresentations: totalAvailableCurriculumPresentations > 1\n };\n },\n\n getBulkPreferencesState(state: BulkOnboardingPreferencesState): { [key in 'levels' | 'subjects']: boolean } {\n if (state === BulkOnboardingPreferencesState.AllSubjectsAndAllLevels)\n return {\n levels: true,\n subjects: true\n };\n\n return {\n levels: state === BulkOnboardingPreferencesState.AllLevels,\n subjects: state === BulkOnboardingPreferencesState.AllSubjects\n };\n },\n\n hasBulkSelectedLevels(bulkState: BulkOnboardingPreferencesState): boolean {\n return (\n bulkState === BulkOnboardingPreferencesState.AllLevels ||\n bulkState === BulkOnboardingPreferencesState.AllSubjectsAndAllLevels\n );\n },\n\n hasBulkSelectedTopics(bulkState: BulkOnboardingPreferencesState): boolean {\n return (\n bulkState === BulkOnboardingPreferencesState.AllSubjects ||\n bulkState === BulkOnboardingPreferencesState.AllSubjectsAndAllLevels\n );\n },\n\n getNextBulkState(current: BulkOnboardingPreferencesState, managing: 'topics' | 'audiences'): BulkOnboardingPreferencesState {\n const { None, AllSubjects, AllLevels, AllSubjectsAndAllLevels } = BulkOnboardingPreferencesState;\n\n const isManagingTopics = managing === 'topics';\n\n switch (current) {\n case None:\n default:\n return isManagingTopics ? AllSubjects : AllLevels;\n case AllSubjects:\n return isManagingTopics ? None : AllSubjectsAndAllLevels;\n case AllLevels:\n return isManagingTopics ? AllSubjectsAndAllLevels : None;\n case AllSubjectsAndAllLevels:\n return isManagingTopics ? AllLevels : AllSubjects;\n }\n }\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","// extracted by mini-css-extract-plugin\nexport default {\"annotation\":\"LkdHB\",\"above\":\"ROdbm\",\"below\":\"OzyHx\",\"left\":\"W9EBF\",\"right\":\"zhio2\",\"divider\":\"cdR_p\",\"imageContainer\":\"QZZMF\"};","import React from 'react';\n\nimport styles from './left-panel-item.scss';\n\ninterface LeftPanelItemProps {\n contentPosition?: 'center' | 'right';\n annotationUrl?: string;\n annotationPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n annotationClassName?: string;\n}\n\nLeftPanelItem.defaultProps = {\n contentPosition: 'center'\n};\n\nexport function LeftPanelItem(props: React.PropsWithChildren<LeftPanelItemProps>): JSX.Element {\n function getAnnotationClassName(): string {\n let className = styles.annotation;\n\n switch (props.annotationPosition) {\n case 'top-left': {\n className += ` ${styles.above} ${styles.left}`;\n break;\n }\n\n case 'top-right': {\n className += ` ${styles.above} ${styles.right}`;\n break;\n }\n\n case 'bottom-left': {\n className += ` ${styles.below} ${styles.left}`;\n break;\n }\n\n case 'bottom-right': {\n className += ` ${styles.below} ${styles.right}`;\n break;\n }\n }\n\n if (props.annotationClassName)\n className += ` ${props.annotationClassName}`;\n\n return className;\n }\n\n function getContainerClassName(): string {\n let className = `d-flex align-items-center text-center position-relative w-100 ${styles.imageContainer}`;\n\n if (props.contentPosition === 'center')\n className += ' px-5 justify-content-center';\n\n if (props.contentPosition === 'right')\n className += ' me-n5 justify-content-end';\n\n return className;\n }\n\n return (\n <div className={getContainerClassName()}>\n {!!props.annotationUrl && (\n <div className={getAnnotationClassName()}>\n <img className={`img-fluid`} src={props.annotationUrl} />\n </div>\n )}\n\n {props.children}\n {props.contentPosition === 'right' && (\n <div className={styles.divider} />\n )}\n </div>\n );\n}","import React from 'react';\n\ninterface OnboardingLoaderContainerProps {\n variant: 'blue' | 'dark-blue'\n}\n\nexport function OnboardingLoaderContainer(props: React.PropsWithChildren<OnboardingLoaderContainerProps>): JSX.Element {\n return (\n <div className={`w-100 h-100 position-fixed bg-${props.variant}`}>\n {props.children}\n </div>\n );\n}","function mobile(index: number): React.CSSProperties {\n const indexPositionId = index % 10;\n\n const styles: React.CSSProperties = { top: `${index * 4}%` };\n\n /**\n * This is pretty much random to make the loader look nicer.\n */\n switch (indexPositionId) {\n case 0: {\n styles.left = '12.5%';\n styles.animationDelay = '0.5s';\n return styles;\n }\n\n case 1: {\n styles.right = '7.5%';\n styles.animationDelay = '1s';\n return styles;\n }\n\n case 2: {\n styles.left = '10%';\n return styles;\n }\n\n case 3: {\n styles.right = '2.5%';\n styles.animationDelay = '0.5s';\n return styles;\n }\n\n case 4: {\n styles.left = '2.5%';\n styles.animationDelay = '1.5s';\n return styles;\n }\n\n case 5: {\n styles.right = '10%';\n return styles;\n }\n\n case 6: {\n styles.left = '12.5%';\n styles.animationDelay = '1.5s';\n return styles;\n }\n\n case 7: {\n styles.right = '7.5%';\n styles.animationDelay = '0.5s';\n return styles;\n }\n\n case 8: {\n styles.left = '5%';\n styles.animationDelay = '1s';\n return styles;\n }\n\n case 9: {\n styles.right = '2.5%';\n styles.animationDelay = '1s';\n return styles;\n }\n\n default: {\n styles.left = '10%';\n styles.animationDelay = '1.5s';\n return styles;\n }\n }\n}\n\nfunction halfScreen(index: number): React.CSSProperties {\n const indexPositionId = index % 10;\n\n const styles: React.CSSProperties = { top: `${index * 4}%` };\n\n /**\n * This is pretty much random to make the loader look nicer.\n */\n switch (indexPositionId) {\n case 0: {\n styles.left = '25%';\n styles.animationDelay = '0.5s';\n return styles;\n }\n\n case 1: {\n styles.right = '15%';\n styles.animationDelay = '1s';\n return styles;\n }\n\n case 2: {\n styles.left = '20%';\n return styles;\n }\n\n case 3: {\n styles.right = '5%';\n styles.animationDelay = '0.5s';\n return styles;\n }\n\n case 4: {\n styles.left = '5%';\n styles.animationDelay = '1.5s';\n return styles;\n }\n\n case 5: {\n styles.right = '20%';\n return styles;\n }\n\n case 6: {\n styles.left = '25%';\n styles.animationDelay = '1.5s';\n return styles;\n }\n\n case 7: {\n styles.right = '15%';\n styles.animationDelay = '0.5s';\n return styles;\n }\n\n case 8: {\n styles.left = '10%';\n styles.animationDelay = '1s';\n return styles;\n }\n\n case 9: {\n styles.right = '5%';\n styles.animationDelay = '1s';\n return styles;\n }\n\n default: {\n styles.left = '20%';\n styles.animationDelay = '1.5s';\n return styles;\n }\n }\n}\n\nfunction fullScreen(index: number): React.CSSProperties {\n const indexPositionId = index % 10;\n\n const styles: React.CSSProperties = { top: `${index * 4}%` };\n\n /**\n * This is pretty much random to make the loader look nicer.\n */\n switch (indexPositionId) {\n case 0: {\n styles.left = '25%';\n styles.animationDelay = '0.5s';\n return styles;\n }\n\n case 1: {\n styles.right = '30%';\n styles.animationDelay = '1s';\n return styles;\n }\n\n case 2: {\n styles.left = '40%';\n return styles;\n }\n\n case 3: {\n styles.right = '10%';\n styles.animationDelay = '0.5s';\n return styles;\n }\n\n case 4: {\n styles.left = '10%';\n styles.animationDelay = '1.5s';\n return styles;\n }\n\n case 5: {\n styles.right = '40%';\n return styles;\n }\n\n case 6: {\n styles.left = '30%';\n styles.animationDelay = '1.5s';\n return styles;\n }\n\n case 7: {\n styles.right = '30%';\n styles.animationDelay = '0.5s';\n return styles;\n }\n\n case 8: {\n styles.left = '10%';\n styles.animationDelay = '1s';\n return styles;\n }\n\n case 9: {\n styles.right = '10%';\n styles.animationDelay = '1s';\n return styles;\n }\n\n default: {\n styles.left = '40%';\n styles.animationDelay = '1.5s';\n return styles;\n }\n }\n}\n\n// 2 columns means the images are more off to the sides\n// 3 columns means they approach the center more\nexport function getOnboardingLoaderVideoStyles(index: number, screenSize: '50%' | '100%' | 'mobile'): React.CSSProperties {\n if (screenSize === 'mobile')\n return mobile(index);\n\n if (screenSize === '50%')\n return halfScreen(index);\n\n return fullScreen(index);\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { getOnboardingLoaderVideoStyles } from 'apps/onboarding/components/loaders/videos-loader/getOnboardingLoaderVideos';\n\nimport styles from './videos-loader.scss';\n\ninterface OnboardingVideosLoaderProps {\n screenSize: '50%' | '100%';\n variant: 'dark-blue' | 'blue';\n hideThumbnailMask?: boolean;\n}\n\nexport const OnboardingVideosLoader = React.memo((props: OnboardingVideosLoaderProps) => {\n const thumbnails = ArrayHelper.shuffle(HardCoded.Onboarding.LOADING_THUMBNAILS);\n\n const breakpoints = useBreakpoints();\n\n function getScreenSize(): 'mobile' | OnboardingVideosLoaderProps['screenSize'] {\n if (breakpoints.xs) {\n return 'mobile';\n }\n\n return props.screenSize;\n }\n\n return (\n <div className={`${styles.loading} ${props.screenSize === '50%' ? 'w-50' : 'w-100'}`}>\n {thumbnails.map((thumbnail, index) => {\n return (\n <div\n key={index}\n className={`${styles.loadingImageContainer} position-absolute rounded-3 overflow-hidden`}\n style={getOnboardingLoaderVideoStyles(index, getScreenSize())}\n >\n {!props.hideThumbnailMask && (\n <div className={`${styles.loadingImageMask} ${props.variant === 'blue' ? styles.blue : styles.darkBlue}`} />\n )}\n <img className='img-fluid' src={ImageHelper.createUrl(thumbnail, { size: ImageSize.Small })} />\n </div>\n );\n })}\n </div>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"loadingImageContainer\":\"ZlA2t\",\"fadeIn\":\"YmTa1\",\"loadingImageMask\":\"jNop3\",\"darkBlue\":\"YNfFq\",\"blue\":\"jVOWE\",\"loading\":\"n2Qe4\",\"loader\":\"BqV36\"};","// extracted by mini-css-extract-plugin\nexport default {\"dot\":\"AlRQD\",\"logo\":\"L42gR\",\"blackBar\":\"ESCxm\",\"topNav\":\"a3G_4\",\"leftNav\":\"YxGVV\",\"belowHeader\":\"jc_cg\",\"leftNavIcon\":\"U6i6r\",\"leftNavText\":\"LnYlW\",\"presentationPlaceholderIcon\":\"Ljaju\",\"presentationIcon\":\"QdwPq\",\"presentationPlaceholderText\":\"af06V\",\"curriculumIcon\":\"N7T4T\",\"curriculumIconSmall\":\"_6xrUg\",\"curriculumContainer\":\"Z65qX\",\"iconPlaceholder\":\"CKOXL\",\"shadow\":\"zygeJ\",\"presentationName\":\"Oj7Dt\"};","import React from 'react';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ClickViewLogo, ClickViewPrimaryLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport styles from './mock-layout.scss';\n\nconst namespace = 'onboarding.mockLayout';\n\nfunction LeftNavItem(): JSX.Element {\n return (\n <div className='d-flex align-items-center justify-content-center mb-2 px-3'>\n <div className={`${styles.leftNavIcon} rounded-circle`} />\n <div className={`${styles.leftNavText} rounded-pill`} />\n </div>\n );\n}\n\ninterface MockLayoutProps {\n editingCurriculum?: boolean;\n curriculum?: Presentation;\n presentation?: Presentation;\n}\n\nexport function MockLayout(props: React.PropsWithChildren<MockLayoutProps>): JSX.Element {\n const breakpoints = useBreakpoints();\n \n function getPresentationClass(): string {\n if (!props.presentation)\n return styles.presentationPlaceholderIcon;\n\n switch (TopicsHelper.getMappedPresentationLevel(props.presentation.learningLevel)) {\n case PresentationLearningLevel.Level_1:\n return `bg-indigo ${styles.presentationIcon}`;\n\n case PresentationLearningLevel.Level_3:\n return `bg-blue ${styles.presentationIcon}`;\n\n default:\n case PresentationLearningLevel.Level_2:\n return `bg-green ${styles.presentationIcon}`;\n }\n }\n\n return (\n <div className={`border border-dark border-2 bg-white rounded-3 user-select-none overflow-hidden position-relative h-100 w-100`}>\n {!!props.editingCurriculum && (\n <div className={`w-100 h-100 position-absolute ${styles.shadow}`}>\n <div className={`d-flex align-items-center h-100 w-50 ${styles.curriculumContainer}`}>\n <div className='bg-white rounded-3 border p-3 w-100'>\n <h2 className='h6 text-start'><Text namespace={namespace} phrase='curriculum' /></h2>\n\n {props.curriculum ? (\n <div className='d-flex align-items-center'>\n <div className={`${styles.curriculumIcon} rounded-circle me-2 border`}>\n <IconCircle imageUrl={props.curriculum.cover?.url} />\n </div>\n <div className='text-start'>{props.curriculum.name}</div>\n </div>\n ) : (\n <div className='d-flex align-items-center text-secondary'>\n <div className={`me-2 rounded-circle p-1 ${styles.iconPlaceholder}`}>\n <IconCircle svgSize={SvgContainerSize.Large} textVariant='secondary' svgName={cvSvgLibrary.GraduationCap} />\n </div>\n <Text namespace={namespace} phrase='selectCurriculum' />\n </div>\n )}\n </div>\n </div>\n </div>\n )}\n\n {/* Black bar */}\n <div className={`bg-dark d-flex px-3 py-2 ${styles.blackBar}`}>\n <div className={`rounded-circle me-2 ${styles.dot}`} />\n <div className={`rounded-circle me-2 ${styles.dot}`} />\n <div className={`rounded-circle ${styles.dot}`} />\n </div>\n\n {/* Header */}\n <div className={`border-bottom px-3 py-2 d-flex align-items-center ${styles.topNav}`}>\n <div className={`${styles.logo} me-4`}>\n {breakpoints.xs ? (\n <ClickViewPrimaryLogo />\n ) : (\n <ClickViewLogo />\n )}\n </div>\n <div className='form-control w-75 d-flex justify-content-start'>\n <SvgContainer svgName={cvSvgLibrary.Search} />\n </div>\n {!!props.curriculum && (\n <div className={`${styles.curriculumIconSmall} rounded-circle ms-2 me-n1 border`}>\n <IconCircle imageUrl={props.curriculum.cover?.url} />\n </div>\n )}\n </div>\n\n <div className={`d-flex ${styles.belowHeader}`}>\n {/* Left nav */}\n <div className={`${styles.leftNav} border-end`}>\n <div className='d-flex flex-column pt-3 h-100'>\n <LeftNavItem />\n <LeftNavItem />\n <LeftNavItem />\n <LeftNavItem />\n <LeftNavItem />\n\n {/* Presentation */}\n <div className='d-flex align-items-end h-100 w-100'>\n <div className='border-top p-3 w-100'>\n <div className='d-flex align-items-center'>\n <div className={`${getPresentationClass()} text-white rounded`}>\n <SvgContainer svgName={cvSvgLibrary.School} size={SvgContainerSize.Large} />\n </div>\n\n {!props.presentation ? (\n <div className={`${styles.presentationPlaceholderText} fw-semibold`}>\n <Text namespace={namespace} phrase='schoolLevel' />\n </div>\n ) : (\n <span className={`fw-semibold text-truncate ${styles.presentationName}`}>{props.presentation.name}</span>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {/* Main content */}\n <div className={`w-100 h-100 overflow-hidden`}>\n {props.children}\n </div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"banner\":\"CQxNy\",\"title\":\"NzV5V\",\"description1\":\"kjCZi\",\"description2\":\"cBeyJ\",\"placeholder\":\"Ks_Tl\",\"playlistName\":\"eFPqz\",\"thumbnailCol\":\"dgCQ7\",\"videoInfoCol\":\"pzfE2\"};","import React from 'react';\n\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Presentation, Video } from 'libs/shared/interfaces';\n\nimport { MockLayout } from 'apps/onboarding/components/mock-views/layout/MockLayout';\n\nimport styles from './mock-playlist.scss';\n\ninterface VideoPlaceholderProps {\n video?: Video;\n}\n\nfunction VideoPlaceholder(props: VideoPlaceholderProps): JSX.Element {\n return (\n <li className='row mb-2'>\n <div className={`col-lg-4 col-5 ${styles.thumbnailCol}`}>\n {props.video ? (\n <VideoThumbnail video={props.video} type='cosmetic' hideDuration imageOptions={{ size: ImageSize.Medium }} />\n ) : (\n <ImageFallback type={ImageFallbackType.Video} extraClasses={`position-relative rounded-3 ${styles.placeholder}`} />\n )}\n </div>\n\n <div className={`col-lg-8 col-7 ${styles.videoInfoCol}`}>\n <div className={`${styles.title} rounded-pill bg-grey mb-1`} />\n <div className={`${styles.description1} rounded-pill bg-grey mb-1`} />\n <div className={`${styles.description2} rounded-pill bg-grey mb-1`} />\n </div>\n </li>\n );\n}\n\ninterface MockPlaylistProps {\n name?: string;\n presentation?: Presentation;\n curriculum?: Presentation;\n videos: Video[];\n hidePlaceholders?: boolean;\n}\n\nexport function MockPlaylist(props: MockPlaylistProps): JSX.Element {\n const placeholderVideos = props.hidePlaceholders ? 0 : Math.max(6 - (props.videos?.length ?? 0), 0);\n\n return (\n <MockLayout presentation={props.presentation} curriculum={props.curriculum}>\n {/* Banner */}\n <div className={`bg-teal ${styles.banner} position-relative`}>\n {props.name && (\n <div className={`h5 text-white mb-0 ${styles.playlistName}`}>{props.name}</div>\n )}\n </div>\n\n {/* Videos */}\n <ul className='list-unstyled mb-0 w-100 p-2'>\n {props.videos?.map(video => {\n return (\n <VideoPlaceholder key={video.id} video={video} />\n );\n })}\n {new Array(placeholderVideos).fill(0).map((_, index) => {\n return (\n <VideoPlaceholder key={index} />\n );\n })}\n </ul>\n </MockLayout>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"selected\":\"ZG5MR\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { CheckMarkButton, CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { PresentationAudience, Video } from 'libs/shared/interfaces';\n\nimport { OnboardingClassificationVideosGrouping } from 'apps/onboarding/hooks/useGetSuggestedVideos';\nimport { ONBOARDING_MAX_VIDEOS } from 'apps/onboarding/views/select-videos/OnboardingSelectVideosView';\n\nimport styles from './classification-videos.scss';\n\nconst namespace = 'onboarding.classificationVideos';\n\ninterface VideoItemProps {\n video: Video;\n onSelectVideo: (video: Video) => void;\n audiences: PresentationAudience[];\n isSelected: boolean;\n disabled?: boolean;\n}\n\nfunction VideoItem(props: VideoItemProps): JSX.Element {\n const audience = useMergeAudiences(props.video.subjectPresentationAudiences?.data, props.audiences);\n\n let className = 'border border-2 rounded-3 overflow-hidden';\n\n if (props.isSelected)\n className += ' border-success';\n else\n className += ' border-transparent';\n\n return (\n <DivButton\n onClick={() => props.onSelectVideo(props.video)}\n disabled={props.disabled}\n >\n <VideoThumbnail\n type='cosmetic'\n video={props.video}\n imageOptions={{ size: ImageSize.Medium }}\n audience={audience}\n checkMarkStatus={props.isSelected ? CheckMarkStatus.Complete : CheckMarkStatus.Incomplete}\n setCheckMarkStatus={!props.disabled ? () => {\n props.onSelectVideo(props.video);\n return Promise.resolve();\n } : null}\n extraClasses={className}\n imageClassName={props.isSelected ? `${styles.selected}` : ''}\n hideDuration\n />\n </DivButton>\n );\n}\n\ninterface OnboardingClassificationVideosProps {\n classificationVideosGrouping: OnboardingClassificationVideosGrouping[];\n onSelectVideo: (video: Video, classificationId: string, classificationName: string) => void;\n onSelectAll: (classificationGrouping: OnboardingClassificationVideosGrouping) => void;\n onDeselectAll: (classificationGrouping: OnboardingClassificationVideosGrouping) => void;\n audiences: PresentationAudience[];\n isSelected: (videoId: string) => boolean;\n totalSelected: number;\n}\n\nexport function OnboardingClassificationVideos(props: OnboardingClassificationVideosProps): JSX.Element {\n function onSelectAll(\n shouldSelect: boolean,\n classification: OnboardingClassificationVideosGrouping\n ): Promise<void> {\n if (shouldSelect) {\n props.onSelectAll(classification);\n } else {\n props.onDeselectAll(classification);\n }\n\n return Promise.resolve();\n }\n\n const isAtLimit = props.totalSelected >= ONBOARDING_MAX_VIDEOS;\n\n return (\n <ul className='list-unstyled'>\n {props.classificationVideosGrouping.map(classification => {\n const selectedVideos = classification.videos.filter(video => props.isSelected(video.id));\n const allSelected = selectedVideos.length === classification.videos.length;\n\n const disabled = (\n !allSelected &&\n (props.totalSelected + classification.videos.length - selectedVideos.length) > ONBOARDING_MAX_VIDEOS\n );\n\n return (\n <li key={classification.classificationId} className='pb-3'>\n <div className='d-flex justify-content-between align-items-center mb-2'>\n <h2 className='h5 mb-1 align-self-end'>{classification.classificationName}</h2>\n\n <Tooltip\n title={disabled\n ? LanguageService.getPhrase(namespace, 'maxVideos', { limit: ONBOARDING_MAX_VIDEOS })\n : ''\n }\n spanHack\n spanHackClassName=''\n >\n <div className='d-flex align-items-center'>\n <DivButton\n disabled={disabled}\n onClick={() => onSelectAll(!allSelected, classification)}\n className={`me-2 text-nowrap ${disabled ? 'text-secondary' : ''}`}\n >\n <Text namespace={namespace} phrase='selectAll' />\n </DivButton>\n <CheckMarkButton\n status={allSelected ? CheckMarkStatus.Complete : CheckMarkStatus.Incomplete}\n setStatus={status => onSelectAll(status === CheckMarkStatus.Complete, classification)}\n style='outline'\n disabled={disabled}\n />\n </div>\n </Tooltip>\n </div>\n\n <ul className='row list-unstyled g-2'>\n {classification.videos.map(video => {\n const isSelected = props.isSelected(video.id);\n const disabled = isAtLimit && !isSelected;\n\n return (\n <li key={video.id} className='col-sm-6 col-md-4 col-lg-6 col-xl-6'>\n <Tooltip\n title={disabled\n ? LanguageService.getPhrase(namespace, 'maxVideos', { limit: ONBOARDING_MAX_VIDEOS })\n : ''\n }\n spanHack\n spanHackClassName=''\n >\n <VideoItem\n video={video}\n onSelectVideo={vid => {\n return props.onSelectVideo(\n vid,\n classification.classificationId,\n classification.classificationName\n );\n }}\n audiences={props.audiences}\n isSelected={props.isSelected(video.id)}\n disabled={disabled}\n />\n </Tooltip>\n </li>\n );\n })}\n </ul>\n </li>\n );\n })}\n </ul>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"loaderText\":\"pg4Oj\",\"annotation\":\"D3Acz\"};","import React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { OnboardingDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useIsKDM } from 'libs/shared/hooks/UseIsKdm';\nimport { PresentationAudience, Video } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nimport { OnboardingClassificationVideos } from 'apps/onboarding/components/classification-videos/OnboardingClassificationVideos';\nimport { OnboardingScreenHeading } from 'apps/onboarding/components/heading/OnboardingScreenHeading';\nimport { OnboardingScreenInfo } from 'apps/onboarding/components/info/OnboardingScreenInfo';\nimport { OnboardingLayout, OnboardingRightPanelProps } from 'apps/onboarding/components/layout/OnboardingLayout';\nimport { LeftPanelItem } from 'apps/onboarding/components/left-panel-item/LeftPanelItem';\nimport { OnboardingLoaderContainer } from 'apps/onboarding/components/loaders/primitives/OnboardingLoaderContainer';\nimport { OnboardingVideosLoader } from 'apps/onboarding/components/loaders/videos-loader/OnboardingVideosLoader';\nimport { MockPlaylist } from 'apps/onboarding/components/mock-views/playlist/MockPlaylist';\nimport { OnboardingClassificationVideosGrouping, useGetSuggestedVideos } from 'apps/onboarding/hooks/useGetSuggestedVideos';\nimport { useOnboardingCallbacks } from 'apps/onboarding/hooks/useOnboardingCallbacks';\nimport { useOnboardingEventLogger } from 'apps/onboarding/hooks/useOnboardingEventLogger';\nimport { OnboardingViewProps } from 'apps/onboarding/interfaces/OnboardingViewProps';\n\nimport styles from './select-videos.scss';\n\nconst FAKE_LOADER_MIN_DURATION = 6000;\nconst MIN_VIDEOS = 3;\nexport const ONBOARDING_MAX_VIDEOS = 100;\n\nconst namespace = 'onboarding.selectVideos';\n\nexport interface SavedOnboardingVideo {\n data: Video;\n classificationId: string;\n classificationName: string;\n}\n\nexport function OnboardingSelectVideosView(props: OnboardingViewProps): JSX.Element {\n const { onClickBack, exitOnboarding, completeStepAsync, onSaveError } = useOnboardingCallbacks(props.redirectUrl);\n const { logEvent } = useOnboardingEventLogger();\n\n const [ videos, setVideos ] = useViewModel<SavedOnboardingVideo[]>(\n ViewModelKeys.ONBOARDING_VIDEOS_V2,\n [],\n { storage: StorageType.LocalStorage }\n );\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(AudienceRequests.presentationAudiences());\n const { preferredPresentation } = usePresentation();\n const { preferredCurriculum } = useCurriculums();\n\n const classificationVideosGrouping = useGetSuggestedVideos();\n\n const [ hasFakeLoaded, setHasFakeLoaded ] = React.useState(classificationVideosGrouping.hasCompleted);\n\n const breakpoints = useBreakpoints();\n \n const halfScreen = breakpoints.lg || breakpoints.xl || breakpoints.xxl;\n\n const isKdm = useIsKDM();\n\n React.useEffect(() => {\n const timeout = window.setTimeout(() => {\n setHasFakeLoaded(true);\n }, FAKE_LOADER_MIN_DURATION);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, []);\n\n function onSelectVideo(video: Video, classificationId: string, classificationName: string): void {\n logEvent(UserAction.Select, OnboardingDescriptor.SelectVideo, {\n videoId: video.id,\n videoName: video.name,\n videoSubjectId: classificationId,\n videoSubjectName: classificationName,\n presentationId: preferredPresentation.id,\n presentationName: preferredPresentation.name,\n presentationDescription: preferredPresentation.description\n });\n\n if (videos.some(v => v.data.id.toString() === video.id.toString())) {\n setVideos(videos.filter(v => v.data.id.toString() !== video.id.toString()));\n } else {\n setVideos([ ...videos, { data: video, classificationId, classificationName }]);\n }\n }\n\n /**\n * TODO: Update onboarding analytics documentation\n */\n function onSelectAll(classificationVideos: OnboardingClassificationVideosGrouping): void {\n logEvent(UserAction.Click, OnboardingDescriptor.SelectAllVideos, {\n subjectId: classificationVideos.classificationId,\n subjectName: classificationVideos.classificationName,\n videos: classificationVideos.videos.map(v => ({\n id: v.id,\n name: v.name,\n thumbnailUrl: v.thumbnail?.url,\n videoSubjectId: classificationVideos.classificationId,\n videoSubjectName: classificationVideos.classificationName\n })),\n presentationId: preferredPresentation.id,\n presentationDescription: preferredPresentation.description\n });\n\n const currentVideoMap = videos.reduce<Record<string, boolean>>((acc, v) => {\n return {\n ...acc,\n [v.data.id]: true\n };\n }, {});\n\n setVideos([\n ...videos,\n ...classificationVideos.videos\n .filter(v => !currentVideoMap[v.id])\n .map(v => ({\n data: v,\n classificationId: classificationVideos.classificationId,\n classificationName: classificationVideos.classificationName\n }))\n ]);\n }\n\n /**\n * TODO: Update onboarding analytics documentation\n */\n function onDeselectAll(classificationVideos: OnboardingClassificationVideosGrouping): void {\n logEvent(UserAction.Click, OnboardingDescriptor.DeselectAllVideos, {\n subjectId: classificationVideos.classificationId,\n subjectName: classificationVideos.classificationName,\n videos: classificationVideos.videos.map(v => ({\n id: v.id,\n name: v.name,\n thumbnailUrl: v.thumbnail?.url,\n videoSubjectId: classificationVideos.classificationId,\n videoSubjectName: classificationVideos.classificationName\n })),\n presentationId: preferredPresentation.id,\n presentationDescription: preferredPresentation.description\n });\n\n const deselectedVideoMap = classificationVideos.videos.reduce<Record<string, boolean>>((acc, v) => {\n return {\n ...acc,\n [v.id]: true\n };\n }, {});\n\n setVideos(videos.filter(v => !deselectedVideoMap[v.data.id]));\n }\n\n async function onClickNext(): Promise<void> {\n logEvent(UserAction.Click, OnboardingDescriptor.Next, {\n videos: videos.map(v => ({\n id: v.data.id,\n name: v.data.name,\n thumbnailUrl: v.data.thumbnail?.url,\n videoSubjectId: v.classificationId,\n videoSubjectName: v.classificationName\n })),\n presentationId: preferredPresentation.id,\n presentationName: preferredPresentation.name,\n presentationDescription: preferredPresentation.description\n });\n \n try {\n await completeStepAsync();\n } catch {\n onSaveError();\n return Promise.reject();\n }\n }\n\n const dataFetched = classificationVideosGrouping.hasCompleted && audiences.hasCompleted;\n const showLoadingScreen = !hasFakeLoaded || !dataFetched;\n\n const rightPanelProps: OnboardingRightPanelProps = showLoadingScreen ? {\n hasCustomButtons: true\n } : {\n hasCustomButtons: false,\n onClickNext: onClickNext,\n onClickBack: onClickBack,\n onClickComeBackLater: exitOnboarding,\n disableNext: videos.length < MIN_VIDEOS || videos.length > ONBOARDING_MAX_VIDEOS\n };\n\n if (showLoadingScreen && !halfScreen) {\n return (\n <OnboardingLoaderContainer variant='dark-blue'>\n <div className={`w-100 d-flex align-items-center px-4 text-center flex-column text-white ${styles.loaderText}`}>\n <h1 className='h3 mb-4'>\n <Text namespace={namespace} phrase='loadingHeading' />\n </h1>\n <p className='h6 text-center'>\n <Text namespace={namespace} phrase='searching' />\n </p>\n </div>\n <OnboardingVideosLoader variant='dark-blue' screenSize='100%' hideThumbnailMask />\n </OnboardingLoaderContainer>\n );\n }\n\n return (\n <OnboardingLayout namespace={namespace}>\n <OnboardingLayout.Left className='bg-dark-blue d-flex flex-column align-items-end justify-content-center'>\n {showLoadingScreen ? (\n <OnboardingVideosLoader variant='dark-blue' screenSize='50%' />\n ) : (\n <LeftPanelItem\n contentPosition='right'\n annotationUrl={videos.length >= MIN_VIDEOS\n ? ImageUrls.OnboardingV2.SelectVideos.LOOKING_GOOD\n : ImageUrls.OnboardingV2.SelectVideos.BEFORE_SELECTION}\n annotationPosition={videos.length >= MIN_VIDEOS ? 'bottom-left' : 'top-left'}\n annotationClassName={styles.annotation}\n >\n <MockPlaylist\n presentation={preferredPresentation}\n curriculum={preferredCurriculum}\n videos={videos.map(v => v.data)}\n />\n </LeftPanelItem>\n )}\n </OnboardingLayout.Left>\n\n <OnboardingLayout.Right {...rightPanelProps}>\n {showLoadingScreen ? (\n <>\n <OnboardingScreenHeading className='text-center'>\n <Text phrase={isKdm ? 'loadingHeadingKdm' : 'loadingHeading'} />\n </OnboardingScreenHeading>\n <p className='text-center'>\n <Text phrase='searching' />\n </p>\n </>\n ) : (\n <>\n <OnboardingScreenHeading>\n <Text phrase={isKdm ? 'headingKdm' : 'heading'} />\n </OnboardingScreenHeading>\n\n <OnboardingScreenInfo>\n <Text phrase='info' />\n </OnboardingScreenInfo>\n\n <OnboardingClassificationVideos\n classificationVideosGrouping={classificationVideosGrouping.data}\n onSelectVideo={onSelectVideo}\n audiences={audiences.data}\n onSelectAll={onSelectAll}\n onDeselectAll={onDeselectAll}\n isSelected={videoId => videos.some(v => v.data.id.toString() === videoId.toString())}\n totalSelected={videos.length}\n />\n </>\n )}\n </OnboardingLayout.Right>\n </OnboardingLayout>\n );\n}","import { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ClassificationVideosMap } from 'libs/shared/apps/onboarding/constants/ClassificationVideos';\nimport { OnboardingHelper } from 'libs/shared/apps/subjects/utils/OnboardingHelper';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Classification, Video } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport interface OnboardingClassificationVideosGrouping {\n classificationId: string;\n classificationName: string;\n videos: Video[];\n}\n\ninterface SuggestedVideosResponse {\n hasCompleted: boolean;\n data: OnboardingClassificationVideosGrouping[];\n}\n\nexport function useGetSuggestedVideos(): SuggestedVideosResponse {\n const { preferredPresentation } = usePresentation();\n const { bulkOnboardingPreferencesState, isLoadingSettings } = useSettings(null);\n const preferences = Flight.useBasicFetch<Classification[]>(PreferenceRequests.mySubjectPreferences());\n\n const presentationSubjects = ClassificationVideosMap[preferredPresentation.id] || {};\n\n const subjectIdNameMapping = Object.entries(presentationSubjects).reduce((acc, [ id, { name }]) => {\n acc[id] = name;\n return acc;\n }, {} as Record<string, string>);\n\n let selectedPresentationSubjects = OnboardingHelper.hasBulkSelectedTopics(bulkOnboardingPreferencesState)\n ? presentationSubjects\n : preferences.data?.reduce((acc, preference) => {\n if (!presentationSubjects[preference.id])\n return acc;\n\n acc[preference.id] = presentationSubjects[preference.id];\n return acc;\n }, {} as typeof presentationSubjects) ?? {};\n\n if (!Object.keys(selectedPresentationSubjects).length)\n selectedPresentationSubjects = presentationSubjects;\n\n const suggestedVideoIds: string[] = [];\n\n const videoToSubjectMapping: Record<string, string[]> = {};\n\n Object.entries(selectedPresentationSubjects).forEach(([ subjectId, subjectData ]) => {\n suggestedVideoIds.push(...subjectData.videoIds);\n\n subjectData.videoIds.forEach(videoId => {\n if (!videoToSubjectMapping[videoId]) {\n videoToSubjectMapping[videoId] = [];\n }\n\n videoToSubjectMapping[videoId].push(subjectId);\n });\n });\n \n const suggestedVideosResponse = Flight.useBasicFetchAll<Video[]>(\n ArrayHelper.chunk<string>(ArrayHelper.uniq(suggestedVideoIds), 25).map(videoIds => VideoRequests.videos(videoIds))\n );\n\n const suggestedVideos = ArrayHelper.flatten(suggestedVideosResponse.data || []);\n\n const groupings: Record<string, OnboardingClassificationVideosGrouping> = {};\n \n suggestedVideos?.forEach(video => {\n const subjects = videoToSubjectMapping[video.id];\n\n subjects.forEach(subject => {\n if (!groupings[subject]) {\n groupings[subject] = {\n classificationId: subject,\n classificationName: subjectIdNameMapping[subject],\n videos: []\n };\n }\n\n groupings[subject].videos.push(video);\n });\n });\n\n return {\n hasCompleted: preferences.hasCompleted && suggestedVideosResponse.hasCompleted && !isLoadingSettings,\n data: Object.values(groupings)\n };\n}"],"names":["BulkOnboardingPreferencesState","OnboardingHelper","hasManyPresentationTypes","presentations","totalAvailableSubjectPresentations","totalAvailableCurriculumPresentations","forEach","p","type","PresentationType","hasManySubjectPresentations","hasManyCurriculumPresentations","getBulkPreferencesState","state","AllSubjectsAndAllLevels","levels","subjects","AllLevels","AllSubjects","hasBulkSelectedLevels","bulkState","hasBulkSelectedTopics","getNextBulkState","current","managing","None","isManagingTopics","useMergeAudiences","audiences","presentationAudiences","sortedAudiences","length","HAS_NUMBER_REGEX","AudienceStringBuilders","firstAudience","ArrayHelper","lastAudience","name","split","toLowerCase","DIGIT_REGEX","SPACE_REGEX","AudienceHelper","getSortedPresentationAudiences","objectAudiences","objectAudienceIds","filter","v","map","audience","id","toString","presAudience","includes","masterId","getMergedPresentationAudienceString","mergedAudienceString","presentationId","HardCoded","combinedNames","a","join","numberList","isNaN","num","wordList","audienceWithoutNum","find","test","prefix","charAt","pop","audienceRange","audienceValues","initialVal","nextVal","i","j","isContinguous","ranges","sort","b","push","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","subjectPresentationAudiences","data","secondObjLowestAudience","comparison","localeCompare","concat","getActiveAudiencesFromParams","params","ObjectHelper","shouldShowAudiences","normalizeAudienceName","audienceName","replace","audienceLookup","reduce","audienceStr","getAudienceParams","LeftPanelItem","props","className","contentPosition","annotationUrl","annotationPosition","annotationClassName","getAnnotationClassName","src","children","defaultProps","OnboardingLoaderContainer","variant","getOnboardingLoaderVideoStyles","screenSize","indexPositionId","styles","top","left","animationDelay","right","mobile","halfScreen","fullScreen","OnboardingVideosLoader","thumbnails","breakpoints","useBreakpoints","thumbnail","key","style","xs","hideThumbnailMask","ImageHelper","size","namespace","LeftNavItem","MockLayout","editingCurriculum","Text","phrase","curriculum","IconCircle","imageUrl","cover","url","svgSize","SvgContainer","S","textVariant","svgName","ClickViewLogo","presentation","TopicsHelper","learningLevel","PresentationLearningLevel","getPresentationClass","VideoPlaceholder","video","VideoThumbnail","hideDuration","imageOptions","ImageFallback","extraClasses","MockPlaylist","placeholderVideos","hidePlaceholders","Math","max","videos","Array","fill","_","VideoItem","isSelected","DivButton","onClick","onSelectVideo","disabled","checkMarkStatus","setCheckMarkStatus","Promise","resolve","imageClassName","OnboardingClassificationVideos","onSelectAll","shouldSelect","classification","onDeselectAll","isAtLimit","totalSelected","ONBOARDING_MAX_VIDEOS","classificationVideosGrouping","selectedVideos","allSelected","classificationId","classificationName","Tooltip","title","LanguageService","limit","spanHack","spanHackClassName","CheckMarkButton","status","setStatus","vid","FAKE_LOADER_MIN_DURATION","MIN_VIDEOS","OnboardingSelectVideosView","useOnboardingCallbacks","redirectUrl","onClickBack","exitOnboarding","completeStepAsync","onSaveError","logEvent","useOnboardingEventLogger","storage","setVideos","AudienceRequests","preferredPresentation","usePresentation","preferredCurriculum","useCurriculums","useSettings","bulkOnboardingPreferencesState","isLoadingSettings","preferences","PreferenceRequests","presentationSubjects","ClassificationVideos","subjectIdNameMapping","entries","acc","selectedPresentationSubjects","preference","suggestedVideoIds","videoToSubjectMapping","subjectId","subjectData","videoIds","videoId","suggestedVideosResponse","VideoRequests","suggestedVideos","groupings","subject","hasCompleted","values","useGetSuggestedVideos","hasFakeLoaded","setHasFakeLoaded","lg","xl","xxl","isKdm","timeout","window","setTimeout","clearTimeout","dataFetched","showLoadingScreen","rightPanelProps","hasCustomButtons","onClickNext","thumbnailUrl","videoSubjectId","videoSubjectName","presentationName","presentationDescription","description","reject","onClickComeBackLater","disableNext","OnboardingLayout","ImageUrls","OnboardingScreenHeading","OnboardingScreenInfo","videoName","some","classificationVideos","subjectName","currentVideoMap","deselectedVideoMap"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6450],{16450:(t,e,n)=>{n.d(e,{e:()=>R,Q:()=>x});var i=n(32735),r=n(91967),a=n(82182),o=n(75896),l=n(1048),s=n(49985),c=n(88513),u=n(43872),f=n(16930),d=n(31069),m=n(10841),g=n(81514),p=n(65294),h=n(10038),y=n(5859),v=n(49542),b=function(t,e,n){return function(){t.container.current&&(t.container.current.style.transition=""),e({type:m.n.Resize,payload:{elementRefs:t,mediaQuery:n}})}},E=function(t){return function(){t.current&&(t.current.style.transition="transform .4s ease-in-out")}},O=function(t,e,n,i,r){return function(a){var o=a.clientX,l=i;l||(l=Object.assign(Object.assign({},e),{initialMouseX:o}),r(l),t.current.style.transition=""),n({type:m.n.Drag,payload:{widgetSnapshot:l,currentMouseX:o}})}},S=function(t,e){return function(){t.current.style.transition="transform .4s ease-in-out",e(null)}},P=n(14244);const j={itemSpacing:"fDc_6",mobileScroll:"aLSzv",leftGradient:"YheD1",leftButton:"ISepF",rightGradient:"i9XEE",rightButton:"OxM84"};function L(t){return function(t){if(Array.isArray(t))return C(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||B(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.")}()}function A(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,o,l=[],s=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;s=!1}else for(;!(s=(i=a.call(n)).done)&&(l.push(i.value),l.length!==e);s=!0);}catch(t){c=!0,r=t}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(t,e)||B(t,e)||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.")}()}function B(t,e){if(t){if("string"==typeof t)return C(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(t,e):void 0}}function C(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=Array(e);n<e;n++)i[n]=t[n];return i}function R(t){var e=t.childComponent,n=t.staticChildren,y=t.getWidgetItemAnalyticsData,B=void 0===y?function(){}:y,C=A(i.useReducer(P.E,P.C),2),R=C[0],w=C[1],k=A(i.useState(null),2),N=k[0],D=k[1],I={container:i.useRef(null),firstElement:i.useRef(null),lastElement:i.useRef(null)},M=(0,g.V)(),G=a.V.isTabletOrMobile();(0,h.H)(b(I,w,M),E(I.container),[M]);var W=(0,p.Y)({prevent:!t.lazyLoad}),X=W.ref,Q=W.inView,T=t.collection;if(!t.collection&&r.q.isFunction(t.fetch)){var _=t.fetch(Q);T=_.data}i.useEffect((function(){T&&!l.t.isEmpty(T)&&w({type:m.n.Init,payload:{elementRefs:I,mediaQuery:M}})}),[T]);var z=i.useMemo((function(){var r,a;if(T){var l=null!==(r=null==n?void 0:n.filter((function(t){return"start"===t.position})))&&void 0!==r?r:[],s=null!==(a=null==n?void 0:n.filter((function(t){return"end"===t.position})))&&void 0!==a?a:[],c=T.map((function(n,r){var a;n===o.m.first(T)&&(null==l?void 0:l.length)&&(a=I.firstElement),n!==o.m.last(T)||(null==s?void 0:s.length)||(a=I.lastElement);var c=r+1===T.length;return i.createElement("div",{key:n.id,ref:a,className:"".concat(j.itemSpacing," ").concat(t.childClassName||""," ").concat(c&&G?"pe-4":"")},i.createElement(e,{getChildAppLink:t.getChildAppLink,data:n,getSubtitle:t.getSubtitle,analyticsData:Object.assign(Object.assign({itemIndex:r},t.analyticsData),B(n)),analyticsOptions:Object.assign(Object.assign({},null==t?void 0:t.analyticsOptions),v.d.getSliderItemAnalyticsOptions())}))}));return l.length&&(c=[].concat(L(l.map((function(e,n){var r=e.component;return i.createElement("div",{key:"first-widget-component:".concat(n),ref:0===n?I.firstElement:null,className:"".concat(j.itemSpacing," ").concat(t.childClassName||"")},i.createElement(r,null))}))),L(c))),s.length&&(c=[].concat(L(c),L(s.map((function(e,n){var r=e.component;return i.createElement("div",{key:"end-widget-component:".concat(n),ref:n===s.length-1?I.lastElement:null,className:"".concat(j.itemSpacing," ").concat(t.childClassName||"")},i.createElement(r,null))}))))),i.createElement(i.Fragment,null,c)}}),[T].concat(L(t.widgetDataDeps||[])));if(T&&!T.length&&!(null==n?void 0:n.length))return i.createElement(i.Fragment,null);if(!T||l.t.isEmpty(T))return i.createElement("div",{ref:X},i.createElement(x,{partialLoadingComponent:t.partialLoadingComponent,partialLoadingOptions:t.partialLoadingOptions}));var F=function(e){return Object.assign(Object.assign({},t.analyticsData),{name:t.heading,direction:e===m.n.Next?"right":"left"})},U=G||t.hideButtons;return i.createElement("div",{className:"mx-n4"},i.createElement("div",{className:"px-4"},i.createElement(c.B,{name:t.heading,description:t.description,appLink:t.headingAppLink})),i.createElement("div",{className:"position-relative"},i.createElement("div",{className:"px-4 py-3 my-n3 position-relative ".concat(G?j.mobileScroll:"overflow-hidden-x")},i.createElement("div",{className:"position-relative ".concat(t.hideButtons?"overflow-hidden-x":"")},!U&&i.createElement(f.W,{direction:f.f.Left,onClick:function(){w({type:m.n.Previous}),s.k.logUserAction(F(m.n.Previous),v.d.getSliderAnalyticsOptions())},leftButtonClassName:j.leftButton,leftGradientClassName:j.leftGradient,hide:R.hideLeftButton,useGradientBackdrop:!0}),i.createElement(u.V,{position:R.offset,positionType:d.C.Pixels,onDrag:O(I.container,R,w,N,D),onDragEnd:S(I.container,D),ref:I.container},z),!U&&i.createElement(f.W,{direction:f.f.Right,onClick:function(){w({type:m.n.Next}),s.k.logUserAction(F(m.n.Next),v.d.getSliderAnalyticsOptions())},hide:R.hideRightButton,rightButtonClassName:j.rightButton,rightGradientClassName:j.rightGradient,useGradientBackdrop:!0})))))}R.defaultProps={heading:"",description:""};var x=function(t){var e=t.partialLoadingComponent,n=t.partialLoadingOptions;return i.createElement("div",{className:"d-flex flex-nowrap overflow-hidden"},y.u.getPartialLoadingItems(n).map((function(t,n){return i.createElement(e,{key:n})})))}},14244:(t,e,n)=>{n.d(e,{C:()=>o,E:()=>d});var i=n(86764),r=n(10841);function a(t){return t===i.r.XS?200:t===i.r.SM||t===i.r.MD?350:500}var o={offset:0,containerLeftPosition:null,containerRightPosition:null,firstElementPosition:null,lastElementPosition:null,hideLeftButton:!0,hideRightButton:!0,maxSlideDistance:0,leftOffsetLimit:null},l=function(t){var e=t.elementRefs,n=e.container,i=e.lastElement;if(!(null==n?void 0:n.current)||!(null==i?void 0:i.current))return o;var r=n.current.getBoundingClientRect(),l=r.left,s=r.right,c=l,u=i.current.getBoundingClientRect().right,f=s-u;return Object.assign(Object.assign({},o),{containerLeftPosition:l,containerRightPosition:s,firstElementPosition:c,lastElementPosition:u,hideRightButton:u<s,leftOffsetLimit:f,maxSlideDistance:a(t.mediaQuery)})},s=function(t){var e=l(Object.assign(Object.assign({},t),t.elementRefs));return Object.assign(Object.assign({},e),{maxSlideDistance:a(t.mediaQuery)})},c=function(t){var e=t.firstElementPosition,n=t.lastElementPosition,i=t.maxSlideDistance,r=t.offset,a=t.containerRightPosition,o=n-a>=i?i:n-a;return{firstElementPosition:e-o,lastElementPosition:n-o,offset:r-o,hideRightButton:n-o===a,hideLeftButton:!1}},u=function(t){var e=t.containerLeftPosition,n=t.firstElementPosition,i=t.lastElementPosition,r=t.maxSlideDistance,a=t.offset,o=n+r<=e,l=o?r:Math.abs(a);return{firstElementPosition:n+l,lastElementPosition:i+l,offset:a+l,hideLeftButton:!o||n+l===e,hideRightButton:!1}},f=function(t,e){var n=e.widgetSnapshot,i=e.currentMouseX;if(n.hideLeftButton&&n.hideRightButton)return{};var r=n.initialMouseX-i,a=n.offset-r,o=n.firstElementPosition-r,l=n.lastElementPosition-r,s=!1,c=!1;return o>t.containerLeftPosition&&(a=0,o=t.containerLeftPosition,l=t.lastElementPosition,s=!0),l<=t.containerRightPosition&&(a=t.leftOffsetLimit,o=t.containerLeftPosition-Math.abs(t.leftOffsetLimit),l=n.containerRightPosition,c=!0),{offset:a,firstElementPosition:o,lastElementPosition:l,hideLeftButton:s,hideRightButton:c}};function d(t,e){switch(e.type){case r.n.Init:return Object.assign(Object.assign({},t),l(e.payload));case r.n.Resize:return Object.assign(Object.assign({},t),s(e.payload));case r.n.Next:return Object.assign(Object.assign({},t),c(t));case r.n.Previous:return Object.assign(Object.assign({},t),u(t));case r.n.Drag:return Object.assign(Object.assign({},t),f(t,e.payload));default:return t}}},5859:(t,e,n)=>{function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=Array(e);n<e;n++)i[n]=t[n];return i}n.d(e,{u:()=>a});var r={numItems:5,minWidth:50,maxWidth:100},a={getPartialLoadingItems:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign(Object.assign({},r),e);return(t=Array(n.numItems),function(t){if(Array.isArray(t))return i(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return i(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(t,e):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.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth),"px")}}))}}}}]);
2
- //# sourceMappingURL=6450-6819d42c15-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/6450-6819d42c15-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/widgets/dynamic-widget/DynamicWidgetEventHandlers.ts","file:///app/packages/libs/shared/src/components/widgets/dynamic-widget/dynamic-widget.scss","file:///app/packages/libs/shared/src/components/widgets/dynamic-widget/DynamicWidget.tsx","file:///app/packages/libs/shared/src/components/widgets/dynamic-widget/DynamicWidgetReducer.tsx","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts"],"sourcesContent":["import { ReducerActions } from 'libs/common/react/interfaces';\n\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { WidgetInteraction } from 'libs/shared/enums/WidgetInteraction';\nimport { SlidingListRefs } from 'libs/shared/interfaces/SlidingListRefs';\n\nimport { DynamicWidgetState } from './DynamicWidgetReducer';\n\ninterface WidgetSnapshot extends DynamicWidgetState {\n initialMouseX: number;\n}\n\n/**\n * Resize events\n */\nexport const getResizeHandler = (\n elementRefs: SlidingListRefs,\n dispatch: React.Dispatch<ReducerActions<WidgetInteraction>>,\n mediaQuery: MediaQueryStrings\n) => () => {\n if (elementRefs.container.current)\n elementRefs.container.current.style.transition = '';\n\n dispatch({\n type: WidgetInteraction.Resize,\n payload: {\n elementRefs,\n mediaQuery\n }\n });\n};\n\nexport const getResizeEndHandler = (containerRef: React.MutableRefObject<HTMLDivElement>) => () => {\n if (containerRef.current)\n containerRef.current.style.transition = 'transform .4s ease-in-out';\n};\n\nexport const getDragHandler = (\n containerRef: React.MutableRefObject<HTMLDivElement>,\n widgetState: DynamicWidgetState,\n dispatch: React.Dispatch<ReducerActions<WidgetInteraction>>,\n widgetSnapshot: WidgetSnapshot,\n setWidgetSnapshot: React.Dispatch<WidgetSnapshot>\n) => (event: React.DragEvent<HTMLDivElement>): void => {\n const mouseX = event.clientX;\n\n let snapshot = widgetSnapshot;\n\n if (!snapshot) {\n snapshot = { ...widgetState, initialMouseX: mouseX };\n setWidgetSnapshot(snapshot);\n containerRef.current.style.transition = '';\n }\n\n dispatch({\n type: WidgetInteraction.Drag,\n payload: {\n widgetSnapshot: snapshot,\n currentMouseX: mouseX\n }\n });\n};\n\nexport const getDragEndHandler = (\n containerRef: React.MutableRefObject<HTMLDivElement>,\n setWidgetSnapshot: React.Dispatch<WidgetSnapshot>\n) => () => {\n containerRef.current.style.transition = 'transform .4s ease-in-out';\n setWidgetSnapshot(null);\n};","// extracted by mini-css-extract-plugin\nexport default {\"itemSpacing\":\"fDc_6\",\"mobileScroll\":\"aLSzv\",\"leftGradient\":\"YheD1\",\"leftButton\":\"ISepF\",\"rightGradient\":\"i9XEE\",\"rightButton\":\"OxM84\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\nimport { Core } from 'libs/common/core';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { WidgetHeader } from 'libs/shared/components/widgets/curated-widgets/components/header/WidgetHeader';\nimport { SlidingListContainer } from 'libs/shared/components/widgets/sliding-list/SlidingListContainer';\nimport { WidgetButton, WidgetButtonDirection } from 'libs/shared/components/widgets/widget-button/WidgetButton';\nimport { CssMeasurement } from 'libs/shared/enums/CssMeasurement';\nimport { WidgetInteraction } from 'libs/shared/enums/WidgetInteraction';\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\nimport { useResizeListener } from 'libs/shared/hooks/UseResizeListener';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { SlidingListRefs } from 'libs/shared/interfaces/SlidingListRefs';\nimport { PartialLoadingHelper, PartialLoadingOptions } from 'libs/shared/utils/PartialLoadingHelper';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport { getDragEndHandler, getDragHandler, getResizeEndHandler, getResizeHandler } from './DynamicWidgetEventHandlers';\nimport { DynamicWidgetReducer, DynamicWidgetState, initialSliderState } from './DynamicWidgetReducer';\n\nimport styles from './dynamic-widget.scss';\n\ninterface WidgetSnapshot extends DynamicWidgetState {\n initialMouseX: number;\n}\n\ninterface StaticChild {\n position: 'start' | 'end';\n component: React.ElementType;\n}\n\ninterface DynamicWidgetProps {\n childComponent: React.ElementType;\n partialLoadingComponent: React.ElementType;\n partialLoadingOptions?: PartialLoadingOptions;\n\n widgetDataDeps?: (any)[];\n getChildAppLink?: (data: any) => Core.AppLink;\n\n staticChildren?: StaticChild[];\n collection?: BaseObject[];\n fetch?: (...args: any[]) => any;\n lazyLoad?: boolean;\n\n heading?: string;\n headingAppLink?: Core.AppLink;\n description?: string;\n getSubtitle?: (data: any) => string\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n getWidgetItemAnalyticsData?: (data: any) => HashObject;\n hideButtons?: boolean;\n childClassName?: string;\n}\n\nDynamicWidget.defaultProps = {\n heading: '',\n description: ''\n};\n\nexport function DynamicWidget(props: DynamicWidgetProps): JSX.Element {\n const { childComponent: WidgetItemComponent, staticChildren, getWidgetItemAnalyticsData = () => {} } = props;\n\n const [ state, dispatch ] = React.useReducer(DynamicWidgetReducer, initialSliderState);\n\n // A snapshot of the widget state is captured on the very first `Drag` event as a point of reference\n const [ widgetSnapshot, setWidgetSnapshot ] = React.useState<WidgetSnapshot>(null);\n\n const elementRefs: SlidingListRefs = {\n container: React.useRef(null),\n firstElement: React.useRef(null),\n lastElement: React.useRef(null)\n };\n\n const mediaQuery = useGetMediaQueryString();\n const isTouchScreen = UserAgentHelper.isTabletOrMobile();\n\n useResizeListener(\n getResizeHandler(elementRefs, dispatch, mediaQuery),\n getResizeEndHandler(elementRefs.container),\n [mediaQuery]\n );\n\n const { ref, inView } = useLazyLoad({ prevent: !props.lazyLoad });\n\n let widgetData = props.collection;\n\n if (!props.collection && FunctionHelper.isFunction(props.fetch)) {\n const request = props.fetch(inView);\n widgetData = request.data;\n }\n\n /**\n * Once the widget data has been set, we can initialize the reducer. This is because\n * the reducer depends on the refs being set, but they don't get set until the markup has been loaded.\n */\n React.useEffect(() => {\n if (!widgetData || ObjectHelper.isEmpty(widgetData))\n return;\n\n dispatch({\n type: WidgetInteraction.Init,\n payload: {\n elementRefs,\n mediaQuery\n }\n });\n }, [widgetData]);\n\n function getWidgetItems(): JSX.Element {\n if (!widgetData)\n return;\n\n const firstChildren = staticChildren?.filter(child => child.position === 'start') ?? [];\n const lastChildren = staticChildren?.filter(child => child.position === 'end') ?? [];\n\n let items = widgetData.map((widgetItem, index) => {\n let itemRef: React.MutableRefObject<HTMLDivElement>;\n\n if (widgetItem === ArrayHelper.first(widgetData) && firstChildren?.length)\n itemRef = elementRefs.firstElement;\n\n if (widgetItem === ArrayHelper.last(widgetData) && !lastChildren?.length)\n itemRef = elementRefs.lastElement;\n\n const isLast = index + 1 === widgetData.length;\n\n return (\n <div key={widgetItem.id} ref={itemRef} className={`${styles.itemSpacing} ${props.childClassName || ''} ${(isLast && isTouchScreen) ? 'pe-4' : ''}`}>\n <WidgetItemComponent\n getChildAppLink={props.getChildAppLink}\n data={widgetItem}\n getSubtitle={props.getSubtitle}\n analyticsData={{\n itemIndex: index,\n ...props.analyticsData,\n ...getWidgetItemAnalyticsData(widgetItem)\n }}\n analyticsOptions={{ ...props?.analyticsOptions, ...WidgetHelper.getSliderItemAnalyticsOptions() }}\n />\n </div>\n );\n });\n\n if (firstChildren.length) {\n items = [\n ...firstChildren.map((child, i) => {\n const Component = child.component;\n\n return (\n <div\n key={`first-widget-component:${i}`}\n ref={i === 0 ? elementRefs.firstElement : null}\n className={`${styles.itemSpacing} ${props.childClassName || ''}`}\n >\n <Component />\n </div>\n );\n }),\n ...items\n ];\n }\n\n if (lastChildren.length) {\n items = [\n ...items,\n ...lastChildren.map((child, i) => {\n const Component = child.component;\n\n return (\n <div\n key={`end-widget-component:${i}`}\n ref={i === lastChildren.length - 1 ? elementRefs.lastElement : null}\n className={`${styles.itemSpacing} ${props.childClassName || ''}`}\n >\n <Component />\n </div>\n );\n })\n ];\n }\n\n return <>{items}</>;\n }\n const widgetItems = React.useMemo(getWidgetItems, [\n widgetData, ...props.widgetDataDeps || []\n ]);\n\n if (widgetData && !widgetData.length && !staticChildren?.length)\n return <></>;\n\n if (!widgetData || ObjectHelper.isEmpty(widgetData)) {\n return (\n <div ref={ref}>\n <PartialDynamicWidget\n partialLoadingComponent={props.partialLoadingComponent}\n partialLoadingOptions={props.partialLoadingOptions}\n />\n </div>\n );\n }\n\n const getSliderAnalyticsData = (type: WidgetInteraction) => ({\n ...props.analyticsData,\n name: props.heading,\n direction: type === WidgetInteraction.Next ? 'right' : 'left'\n });\n\n const hideButtons = isTouchScreen || props.hideButtons;\n\n return (\n <div className='mx-n4'>\n <div className='px-4'>\n <WidgetHeader name={props.heading} description={props.description} appLink={props.headingAppLink} />\n </div>\n\n <div className='position-relative'>\n <div className={`px-4 py-3 my-n3 position-relative ${isTouchScreen ? styles.mobileScroll : 'overflow-hidden-x'}`}>\n <div className={`position-relative ${props.hideButtons ? 'overflow-hidden-x' : ''}`}>\n {!hideButtons && (\n <WidgetButton\n direction={WidgetButtonDirection.Left}\n onClick={() => {\n dispatch({ type: WidgetInteraction.Previous });\n AnalyticsHelper.logUserAction(\n getSliderAnalyticsData(WidgetInteraction.Previous),\n WidgetHelper.getSliderAnalyticsOptions()\n );\n }}\n leftButtonClassName={styles.leftButton}\n leftGradientClassName={styles.leftGradient}\n hide={state.hideLeftButton}\n useGradientBackdrop\n />\n )}\n\n <SlidingListContainer\n position={state.offset}\n positionType={CssMeasurement.Pixels}\n onDrag={getDragHandler(elementRefs.container, state, dispatch, widgetSnapshot, setWidgetSnapshot)}\n onDragEnd={getDragEndHandler(elementRefs.container, setWidgetSnapshot)}\n ref={elementRefs.container}\n >\n {widgetItems}\n </SlidingListContainer>\n\n {!hideButtons && (\n <WidgetButton\n direction={WidgetButtonDirection.Right}\n onClick={() => {\n dispatch({ type: WidgetInteraction.Next });\n AnalyticsHelper.logUserAction(\n getSliderAnalyticsData(WidgetInteraction.Next),\n WidgetHelper.getSliderAnalyticsOptions()\n );\n }}\n hide={state.hideRightButton}\n rightButtonClassName={styles.rightButton}\n rightGradientClassName={styles.rightGradient}\n useGradientBackdrop\n />\n )}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\ntype PartialDynamicWidgetProps = Pick<DynamicWidgetProps, 'partialLoadingComponent'> & {\n partialLoadingOptions?: PartialLoadingOptions;\n}\n\nexport const PartialDynamicWidget = (props: PartialDynamicWidgetProps) => {\n const { partialLoadingComponent: Component, partialLoadingOptions } = props;\n\n return (\n <div className='d-flex flex-nowrap overflow-hidden'>\n {PartialLoadingHelper.getPartialLoadingItems(partialLoadingOptions).map((item, idx) => <Component key={idx} />)}\n </div>\n );\n};","import { ReducerActions } from 'libs/common/react/interfaces';\n\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { WidgetInteraction } from 'libs/shared/enums/WidgetInteraction';\nimport { SlidingListRefs } from 'libs/shared/interfaces/SlidingListRefs';\n\nexport interface DynamicWidgetState {\n /**\n * X-position argument for `translate3d()` to determine where the slider is positioned.\n */\n offset: number;\n\n /**\n * Left position of the slider container.\n * Set on `Init`, and updated on `Resize`.\n * Used for calculations on `Previous`, or for dragging to the right.\n */\n containerLeftPosition: number;\n\n /**\n * Right position of the slider container.\n * Set on Init, and updated on Resize.\n * Used for calculations on `Next`, or for dragging to the left.\n */\n containerRightPosition: number;\n\n /**\n * The position of the left edge of the very first element in the slider list.\n * Initially this will always be equal to `containerLeftPosition`.\n */\n firstElementPosition: number;\n\n /**\n * The position of the right edge of the very last element in the slider list.\n */\n lastElementPosition: number;\n\n /**\n * True when `firstElementPosition === containerLeftPosition`.\n */\n hideLeftButton: boolean;\n\n /**\n * True when `lastElementPositon === containerRightPosition`.\n */\n hideRightButton: boolean;\n\n /**\n * When clicking left or right, this number is the max distance in pixels that the slider.\n * will move.\n * Default 300.\n * Can only be set once on `Init` action.\n */\n maxSlideDistance: number;\n\n /**\n * This is calculated on `Init`, and is the lowest number the `offset` state can ever be.\n * This is needed for the `Drag` event, as the `Drag` event can only calculate whole numbers.\n * 99% of the time, the leftOffsetLimit is a very specific decimal number, so we calculate it\n * on `Init` and reference it on `Drag` events when necessary.\n */\n leftOffsetLimit: number;\n}\n\nfunction getMaxSlideDistance(mediaQuery: MediaQueryStrings): number {\n if (mediaQuery === MediaQueryStrings.XS)\n return 200;\n\n if (mediaQuery === MediaQueryStrings.SM || mediaQuery === MediaQueryStrings.MD)\n return 350;\n\n return 500;\n}\n\n/**\n * `null` values are initialized in the `Init` action. This is dispatched\n * later, because it uses JQuery elements that aren't immediately available\n * when `useReducer` is called.\n */\nexport const initialSliderState: DynamicWidgetState = {\n offset: 0,\n containerLeftPosition: null,\n containerRightPosition: null,\n firstElementPosition: null,\n lastElementPosition: null,\n hideLeftButton: true,\n hideRightButton: true,\n maxSlideDistance: 0,\n leftOffsetLimit: null\n};\n\ninterface InitPayload {\n elementRefs: SlidingListRefs;\n mediaQuery: MediaQueryStrings;\n}\n\nconst onInit = (payload: InitPayload): DynamicWidgetState => {\n const { container, lastElement } = payload.elementRefs;\n\n if (!container?.current || !lastElement?.current)\n return initialSliderState;\n\n const containerRect = container.current.getBoundingClientRect();\n const containerLeftPosition = containerRect.left;\n const containerRightPosition = containerRect.right;\n\n const firstElementPosition = containerLeftPosition;\n const lastElementPosition = lastElement.current.getBoundingClientRect().right;\n const leftOffsetLimit = containerRightPosition - lastElementPosition;\n\n return {\n ...initialSliderState,\n containerLeftPosition,\n containerRightPosition,\n firstElementPosition,\n lastElementPosition,\n hideRightButton: lastElementPosition < containerRightPosition,\n leftOffsetLimit,\n maxSlideDistance: getMaxSlideDistance(payload.mediaQuery)\n };\n};\n\ninterface ResizePayload {\n elementRefs: SlidingListRefs;\n mediaQuery: MediaQueryStrings;\n}\n\nconst onResize = (payload: ResizePayload): DynamicWidgetState => {\n const initialState = onInit({\n ...payload,\n ...payload.elementRefs\n });\n\n return {\n ...initialState,\n maxSlideDistance: getMaxSlideDistance(payload.mediaQuery)\n };\n};\n\nconst onNext = (prevState: DynamicWidgetState): Partial<DynamicWidgetState> => {\n const { firstElementPosition, lastElementPosition, maxSlideDistance, offset, containerRightPosition } = prevState;\n\n /**\n * The distance in pixels that the slider will move along the x-axis.\n * This will be the `maxSlideDistance` constant value, or if that value is too large we calculate\n * the remaining overflowing space and only slide by that amount.\n */\n const slideDistance = lastElementPosition - containerRightPosition >= maxSlideDistance\n ? maxSlideDistance\n : lastElementPosition - containerRightPosition;\n\n return {\n firstElementPosition: firstElementPosition - slideDistance,\n lastElementPosition: lastElementPosition - slideDistance,\n offset: offset - slideDistance,\n hideRightButton: lastElementPosition - slideDistance === containerRightPosition,\n hideLeftButton: false\n };\n};\n\nconst onPrevious = (prevState: DynamicWidgetState): Partial<DynamicWidgetState> => {\n const { containerLeftPosition, firstElementPosition, lastElementPosition, maxSlideDistance, offset } = prevState;\n\n const fullSlide = firstElementPosition + maxSlideDistance <= containerLeftPosition;\n const slideDistance = fullSlide ? maxSlideDistance : Math.abs(offset);\n\n return {\n firstElementPosition: firstElementPosition + slideDistance,\n lastElementPosition: lastElementPosition + slideDistance,\n offset: offset + slideDistance,\n hideLeftButton: !fullSlide || firstElementPosition + slideDistance === containerLeftPosition,\n hideRightButton: false\n };\n};\n\nconst onDrag = (prevState: DynamicWidgetState, payload: any): Partial<DynamicWidgetState> => {\n const { widgetSnapshot, currentMouseX } = payload;\n\n // Disable dragging if the slider isn't long enough\n if (widgetSnapshot.hideLeftButton && widgetSnapshot.hideRightButton)\n return {};\n\n // The distance from the initial `MouseDown` event x-coordinate, to the present x-coordinate\n const dragDistance = widgetSnapshot.initialMouseX - currentMouseX;\n\n let offset = widgetSnapshot.offset - dragDistance;\n let firstElementPosition = widgetSnapshot.firstElementPosition - dragDistance;\n let lastElementPosition = widgetSnapshot.lastElementPosition - dragDistance;\n let hideLeftButton = false;\n let hideRightButton = false;\n\n if (firstElementPosition > prevState.containerLeftPosition) {\n offset = 0;\n firstElementPosition = prevState.containerLeftPosition;\n lastElementPosition = prevState.lastElementPosition;\n hideLeftButton = true;\n }\n\n if (lastElementPosition <= prevState.containerRightPosition) {\n offset = prevState.leftOffsetLimit;\n firstElementPosition = prevState.containerLeftPosition - Math.abs(prevState.leftOffsetLimit);\n lastElementPosition = widgetSnapshot.containerRightPosition;\n hideRightButton = true;\n }\n\n return {\n offset,\n firstElementPosition,\n lastElementPosition,\n hideLeftButton,\n hideRightButton\n };\n};\n\nexport function DynamicWidgetReducer(\n prevState: DynamicWidgetState,\n action: ReducerActions<WidgetInteraction>\n): DynamicWidgetState {\n switch (action.type) {\n case WidgetInteraction.Init:\n return {\n ...prevState,\n ...onInit(action.payload)\n };\n\n case WidgetInteraction.Resize:\n return {\n ...prevState,\n ...onResize(action.payload)\n };\n\n case WidgetInteraction.Next:\n return {\n ...prevState,\n ...onNext(prevState)\n };\n\n case WidgetInteraction.Previous:\n return {\n ...prevState,\n ...onPrevious(prevState)\n };\n\n case WidgetInteraction.Drag:\n return {\n ...prevState,\n ...onDrag(prevState, action.payload)\n };\n\n default:\n return prevState;\n }\n}","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};"],"names":["getResizeHandler","elementRefs","dispatch","mediaQuery","container","current","style","transition","type","WidgetInteraction","payload","getResizeEndHandler","containerRef","getDragHandler","widgetState","widgetSnapshot","setWidgetSnapshot","event","mouseX","clientX","snapshot","initialMouseX","currentMouseX","getDragEndHandler","DynamicWidget","props","WidgetItemComponent","childComponent","staticChildren","getWidgetItemAnalyticsData","DynamicWidgetReducer","state","firstElement","lastElement","isTouchScreen","UserAgentHelper","prevent","lazyLoad","ref","inView","widgetData","collection","FunctionHelper","fetch","request","data","ObjectHelper","widgetItems","firstChildren","filter","child","position","lastChildren","items","map","widgetItem","index","itemRef","ArrayHelper","length","isLast","key","id","className","childClassName","getChildAppLink","getSubtitle","analyticsData","itemIndex","analyticsOptions","WidgetHelper","i","Component","component","widgetDataDeps","PartialDynamicWidget","partialLoadingComponent","partialLoadingOptions","getSliderAnalyticsData","name","heading","direction","hideButtons","WidgetHeader","description","appLink","headingAppLink","WidgetButton","W","onClick","AnalyticsHelper","leftButtonClassName","leftGradientClassName","hide","hideLeftButton","useGradientBackdrop","SlidingListContainer","offset","positionType","CssMeasurement","C","onDrag","onDragEnd","hideRightButton","rightButtonClassName","rightGradientClassName","defaultProps","PartialLoadingHelper","item","idx","getMaxSlideDistance","initialSliderState","containerLeftPosition","containerRightPosition","firstElementPosition","lastElementPosition","maxSlideDistance","leftOffsetLimit","onInit","containerRect","getBoundingClientRect","left","right","onResize","initialState","onNext","prevState","slideDistance","onPrevious","fullSlide","Math","abs","dragDistance","action","DEFAULT_PARTIAL_LOADING_OPTIONS","numItems","minWidth","maxWidth","getPartialLoadingItems","options","opts","Array","width","max","floor","random"],"sourceRoot":""}