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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/103-streamable-learning-5060b6cda5.chunk.css +7 -0
  3. package/dist/css/1269-streamable-learning-a12c4ebc99.chunk.css +2 -0
  4. package/dist/css/1457-streamable-learning-c8c8b3b9b1.chunk.css +50 -0
  5. package/dist/css/2334-streamable-learning-de03ae073a.chunk.css +2 -0
  6. package/dist/css/3322-streamable-learning-510e1aa3f3.chunk.css +34 -0
  7. package/dist/css/3838-streamable-learning-da10685fe8.chunk.css +22 -0
  8. package/dist/css/4254-streamable-learning-e493f4a027.chunk.css +2 -0
  9. package/dist/css/4607-streamable-learning-2605302fc2.chunk.css +90 -0
  10. package/dist/css/4772-streamable-learning-f83b838d71.chunk.css +9 -0
  11. package/dist/css/5003-streamable-learning-b38d2ddbbe.chunk.css +98 -0
  12. package/dist/css/5565-streamable-learning-0caae3809b.chunk.css +13 -0
  13. package/dist/css/6017-streamable-learning-098a205d01.chunk.css +6 -0
  14. package/dist/css/6356-streamable-learning-8c5b220bf6.chunk.css +1 -0
  15. package/dist/css/6987-streamable-learning-8f682301c6.chunk.css +1 -0
  16. package/dist/css/7317-streamable-learning-b5d226bbb6.chunk.css +5 -0
  17. package/dist/css/8058-streamable-learning-539cf7be18.chunk.css +12 -0
  18. package/dist/css/8294-streamable-learning-c797263ac2.chunk.css +1 -0
  19. package/dist/css/8496-streamable-learning-ce19f6ca52.chunk.css +13 -0
  20. package/dist/css/8601-streamable-learning-f525210660.chunk.css +6 -0
  21. package/dist/css/9514-streamable-learning-251703c6d1.chunk.css +2 -0
  22. package/dist/css/9766-streamable-learning-31650ffe5d.chunk.css +8 -0
  23. package/dist/css/9842-streamable-learning-24729103f7.chunk.css +4 -0
  24. package/dist/css/9899-streamable-learning-0338f8d2dc.chunk.css +4 -0
  25. package/dist/css/streamable-learning-dd0c1095d5.css +23 -0
  26. package/dist/languages/en.json +1 -0
  27. package/dist/scripts/103-aceced8961-streamable-learning.chunk.js +1 -0
  28. package/dist/scripts/1097-680a971192-streamable-learning.chunk.js +2 -0
  29. package/dist/scripts/1097-680a971192-streamable-learning.chunk.js.LICENSE.txt +105 -0
  30. package/dist/scripts/1269-2d0b903343-streamable-learning.chunk.js +2 -0
  31. package/dist/scripts/1269-2d0b903343-streamable-learning.chunk.js.LICENSE.txt +1 -0
  32. package/dist/scripts/1457-899f40d09a-streamable-learning.chunk.js +1 -0
  33. package/dist/scripts/1482-b1dd75897c-streamable-learning.chunk.js +1 -0
  34. package/dist/scripts/1934-fc017df0da-streamable-learning.chunk.js +2 -0
  35. package/dist/scripts/1934-fc017df0da-streamable-learning.chunk.js.LICENSE.txt +9 -0
  36. package/dist/scripts/2042-d51622d63e-streamable-learning.chunk.js +1 -0
  37. package/dist/scripts/2087-eba9033b1c-streamable-learning.chunk.js +1 -0
  38. package/dist/scripts/2245-8cd3224e1b-streamable-learning.chunk.js +1 -0
  39. package/dist/scripts/2334-00b028191d-streamable-learning.chunk.js +1 -0
  40. package/dist/scripts/2676-c842ec7e8d-streamable-learning.chunk.js +2 -0
  41. package/dist/scripts/2676-c842ec7e8d-streamable-learning.chunk.js.LICENSE.txt +1 -0
  42. package/dist/scripts/2877-5ffc9711f6-streamable-learning.chunk.js +1 -0
  43. package/dist/scripts/2911-2ec3a6600a-streamable-learning.chunk.js +1 -0
  44. package/dist/scripts/3057-731a8ca978-streamable-learning.chunk.js +1 -0
  45. package/dist/scripts/3093-efbcc927ea-streamable-learning.chunk.js +1 -0
  46. package/dist/scripts/3186-d1a6ccffde-streamable-learning.chunk.js +1 -0
  47. package/dist/scripts/3322-33c015dec9-streamable-learning.chunk.js +1 -0
  48. package/dist/scripts/3472-50ca92bde3-streamable-learning.chunk.js +1 -0
  49. package/dist/scripts/3838-4a38f33dc2-streamable-learning.chunk.js +1 -0
  50. package/dist/scripts/3941-2ef15ca9ac-streamable-learning.chunk.js +1 -0
  51. package/dist/scripts/4254-ef581b8105-streamable-learning.chunk.js +1 -0
  52. package/dist/scripts/4607-a4edb06dba-streamable-learning.chunk.js +2 -0
  53. package/dist/scripts/4607-a4edb06dba-streamable-learning.chunk.js.LICENSE.txt +1 -0
  54. package/dist/scripts/4772-3cb280f959-streamable-learning.chunk.js +2 -0
  55. package/dist/scripts/4772-3cb280f959-streamable-learning.chunk.js.LICENSE.txt +1 -0
  56. package/dist/scripts/4951-df701c6a8d-streamable-learning.chunk.js +1 -0
  57. package/dist/scripts/5003-7468a75d64-streamable-learning.chunk.js +2 -0
  58. package/dist/scripts/5003-7468a75d64-streamable-learning.chunk.js.LICENSE.txt +1 -0
  59. package/dist/scripts/5088-2e09e1ba6e-streamable-learning.chunk.js +1 -0
  60. package/dist/scripts/5173-a800a17d0d-streamable-learning.chunk.js +1 -0
  61. package/dist/scripts/5446-2cbe9f9d1b-streamable-learning.chunk.js +1 -0
  62. package/dist/scripts/5543-205aaa36a6-streamable-learning.chunk.js +1 -0
  63. package/dist/scripts/5565-224d86dc1b-streamable-learning.chunk.js +1 -0
  64. package/dist/scripts/578-2cc99f46f7-streamable-learning.chunk.js +1 -0
  65. package/dist/scripts/6017-5bd6f9bf7a-streamable-learning.chunk.js +2 -0
  66. package/dist/scripts/6017-5bd6f9bf7a-streamable-learning.chunk.js.LICENSE.txt +1 -0
  67. package/dist/scripts/6356-eefa3ff22e-streamable-learning.chunk.js +1 -0
  68. package/dist/scripts/6979-ef9a3931a2-streamable-learning.chunk.js +2 -0
  69. package/dist/scripts/6979-ef9a3931a2-streamable-learning.chunk.js.LICENSE.txt +1 -0
  70. package/dist/scripts/6987-e58de31cfe-streamable-learning.chunk.js +1 -0
  71. package/dist/scripts/7317-6b7186c85d-streamable-learning.chunk.js +1 -0
  72. package/dist/scripts/7347-772848ba8a-streamable-learning.chunk.js +1 -0
  73. package/dist/scripts/7570-cd4f70ff52-streamable-learning.chunk.js +2 -0
  74. package/dist/scripts/7570-cd4f70ff52-streamable-learning.chunk.js.LICENSE.txt +1 -0
  75. package/dist/scripts/7904-96574373ca-streamable-learning.chunk.js +1 -0
  76. package/dist/scripts/7925-1e1cfa2a04-streamable-learning.chunk.js +1 -0
  77. package/dist/scripts/8058-51c4b442d6-streamable-learning.chunk.js +1 -0
  78. package/dist/scripts/8126-9d09959b28-streamable-learning.chunk.js +2 -0
  79. package/dist/scripts/8126-9d09959b28-streamable-learning.chunk.js.LICENSE.txt +60 -0
  80. package/dist/scripts/8397-39ce77876d-streamable-learning.chunk.js +1 -0
  81. package/dist/scripts/8496-1b2519f9fd-streamable-learning.chunk.js +2 -0
  82. package/dist/scripts/8496-1b2519f9fd-streamable-learning.chunk.js.LICENSE.txt +1 -0
  83. package/dist/scripts/8599-b74e1ab6e3-streamable-learning.chunk.js +1 -0
  84. package/dist/scripts/8601-37783cf18b-streamable-learning.chunk.js +1 -0
  85. package/dist/scripts/8819-2a50dd6a9b-streamable-learning.chunk.js +1 -0
  86. package/dist/scripts/8937-5103db88d8-streamable-learning.chunk.js +1 -0
  87. package/dist/scripts/9390-bbaf07ad0f-streamable-learning.chunk.js +1 -0
  88. package/dist/scripts/9514-a31ca9af06-streamable-learning.chunk.js +1 -0
  89. package/dist/scripts/9766-48d72d9285-streamable-learning.chunk.js +2 -0
  90. package/dist/scripts/9766-48d72d9285-streamable-learning.chunk.js.LICENSE.txt +1 -0
  91. package/dist/scripts/9842-36d830ee87-streamable-learning.chunk.js +1 -0
  92. package/dist/scripts/9899-f33e8f1d43-streamable-learning.chunk.js +2 -0
  93. package/dist/scripts/9899-f33e8f1d43-streamable-learning.chunk.js.LICENSE.txt +1 -0
  94. package/dist/scripts/bundle-7ea4deeaa8.min.js +2 -0
  95. package/dist/scripts/bundle-7ea4deeaa8.min.js.LICENSE.txt +108 -0
  96. package/dist/scripts/pdf.worker.entry-a2092a6670.min.worker.js +2 -0
  97. package/dist/scripts/pdf.worker.entry-a2092a6670.min.worker.js.LICENSE.txt +21 -0
  98. package/package.json +3 -5
  99. package/typings/utils/imports.d.ts +1 -2
  100. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  101. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  102. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  103. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  104. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  105. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  106. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  107. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  108. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  109. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  110. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  111. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  112. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  113. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  114. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  115. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  116. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  117. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  118. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  119. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  120. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  121. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  122. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  123. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  124. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  125. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  126. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  127. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  128. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  129. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  130. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  131. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  132. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  133. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  134. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  135. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  136. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  137. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  138. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  139. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  140. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  141. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  142. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  143. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  144. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  145. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  146. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  147. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  148. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  149. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  150. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  151. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  152. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  153. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  154. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  155. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  156. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  157. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  158. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  159. package/dist/css/B-attovs.chunk.css +0 -9
  160. package/dist/css/B1NucFMn.chunk.css +0 -1
  161. package/dist/css/BPdg7JW4.chunk.css +0 -1
  162. package/dist/css/BPrUSCaY.chunk.css +0 -1
  163. package/dist/css/BR0fUt9D.chunk.css +0 -1
  164. package/dist/css/BhYm6SRm.chunk.css +0 -1
  165. package/dist/css/BiRz4h1c.chunk.css +0 -1
  166. package/dist/css/Bq1ChJn4.chunk.css +0 -1
  167. package/dist/css/Bt85j9js.chunk.css +0 -1
  168. package/dist/css/BuYrqi9E.chunk.css +0 -1
  169. package/dist/css/BugV1Bpa.chunk.css +0 -1
  170. package/dist/css/BuuVPl7n.chunk.css +0 -1
  171. package/dist/css/C1NkrNqQ.chunk.css +0 -1
  172. package/dist/css/C1qv5jz5.chunk.css +0 -1
  173. package/dist/css/C7XoyEPr.chunk.css +0 -1
  174. package/dist/css/C7_MDu56.chunk.css +0 -1
  175. package/dist/css/CC5F5C8O.chunk.css +0 -1
  176. package/dist/css/CChSC6Ta.chunk.css +0 -1
  177. package/dist/css/CCsCPLDG.chunk.css +0 -1
  178. package/dist/css/CD1qrI1T.chunk.css +0 -1
  179. package/dist/css/CKqvCBj4.chunk.css +0 -1
  180. package/dist/css/CLZ0Ycds.chunk.css +0 -1
  181. package/dist/css/CO7M4rZW.chunk.css +0 -1
  182. package/dist/css/CY0yvCW4.chunk.css +0 -1
  183. package/dist/css/CYGsw8FT.chunk.css +0 -1
  184. package/dist/css/Cbi3KYBa.chunk.css +0 -1
  185. package/dist/css/CliS8Q8r.chunk.css +0 -1
  186. package/dist/css/D-kQKsZN.chunk.css +0 -1
  187. package/dist/css/D2NwUVrK.chunk.css +0 -1
  188. package/dist/css/D4g1IoUU.chunk.css +0 -1
  189. package/dist/css/DBgpcO3T.chunk.css +0 -1
  190. package/dist/css/DDnpOnVB.chunk.css +0 -1
  191. package/dist/css/DZJSONGP.chunk.css +0 -1
  192. package/dist/css/Dc0zNt2E.chunk.css +0 -1
  193. package/dist/css/DeAfaPiD.chunk.css +0 -1
  194. package/dist/css/Dj731zLm.chunk.css +0 -1
  195. package/dist/css/DjPPxa0A.chunk.css +0 -1
  196. package/dist/css/DlOtoSz0.chunk.css +0 -1
  197. package/dist/css/DwduQat7.chunk.css +0 -1
  198. package/dist/css/Dzuu2GTx.chunk.css +0 -1
  199. package/dist/css/JAvsJreH.chunk.css +0 -1
  200. package/dist/css/NKlFYVOc.chunk.css +0 -1
  201. package/dist/css/VZd8qGtK.chunk.css +0 -1
  202. package/dist/css/Y7U--2na.chunk.css +0 -1
  203. package/dist/css/ir3IcK_l.chunk.css +0 -1
  204. package/dist/css/jbMisi9r.chunk.css +0 -1
  205. package/dist/css/kS5aDtIJ.chunk.css +0 -1
  206. package/dist/css/mqCL1o7m.chunk.css +0 -1
  207. package/dist/css/qZzkUeZk.chunk.css +0 -1
  208. package/dist/css/sC_H3yXE.chunk.css +0 -1
  209. package/dist/css/wR_6C_NV.chunk.css +0 -1
  210. package/dist/en.json +0 -1
  211. package/dist/scripts/7tlnqdEj.chunk.js +0 -2
  212. package/dist/scripts/7tlnqdEj.chunk.js.map +0 -1
  213. package/dist/scripts/82OY25pR.chunk.js +0 -2
  214. package/dist/scripts/82OY25pR.chunk.js.map +0 -1
  215. package/dist/scripts/8JOxjlae.chunk.js +0 -15
  216. package/dist/scripts/8JOxjlae.chunk.js.map +0 -1
  217. package/dist/scripts/B-_Kgmt0.chunk.js +0 -2
  218. package/dist/scripts/B-_Kgmt0.chunk.js.map +0 -1
  219. package/dist/scripts/B0KMLOp5.chunk.js +0 -2
  220. package/dist/scripts/B0KMLOp5.chunk.js.map +0 -1
  221. package/dist/scripts/B1QWJfPw.chunk.js +0 -3
  222. package/dist/scripts/B1QWJfPw.chunk.js.map +0 -1
  223. package/dist/scripts/B26T27lj.chunk.js +0 -2
  224. package/dist/scripts/B26T27lj.chunk.js.map +0 -1
  225. package/dist/scripts/B32lL5ga.chunk.js +0 -2
  226. package/dist/scripts/B32lL5ga.chunk.js.map +0 -1
  227. package/dist/scripts/B5lCwpXp.chunk.js +0 -2
  228. package/dist/scripts/B5lCwpXp.chunk.js.map +0 -1
  229. package/dist/scripts/B8qPNVvK.chunk.js +0 -2
  230. package/dist/scripts/B8qPNVvK.chunk.js.map +0 -1
  231. package/dist/scripts/BBnDr_iy.chunk.js +0 -2
  232. package/dist/scripts/BBnDr_iy.chunk.js.map +0 -1
  233. package/dist/scripts/BCQ0kOEO.chunk.js +0 -6
  234. package/dist/scripts/BCQ0kOEO.chunk.js.map +0 -1
  235. package/dist/scripts/BCyuhFou.chunk.js +0 -2
  236. package/dist/scripts/BCyuhFou.chunk.js.map +0 -1
  237. package/dist/scripts/BF7Uu3LW.chunk.js +0 -2
  238. package/dist/scripts/BF7Uu3LW.chunk.js.map +0 -1
  239. package/dist/scripts/BG6_Ss4G.chunk.js +0 -2
  240. package/dist/scripts/BG6_Ss4G.chunk.js.map +0 -1
  241. package/dist/scripts/BMrWb7Ku.chunk.js +0 -2
  242. package/dist/scripts/BMrWb7Ku.chunk.js.map +0 -1
  243. package/dist/scripts/BQH1xd9z.chunk.js +0 -2
  244. package/dist/scripts/BQH1xd9z.chunk.js.map +0 -1
  245. package/dist/scripts/BW1iqZG2.chunk.js +0 -2
  246. package/dist/scripts/BW1iqZG2.chunk.js.map +0 -1
  247. package/dist/scripts/BdHxGaRy.chunk.js +0 -2
  248. package/dist/scripts/BdHxGaRy.chunk.js.map +0 -1
  249. package/dist/scripts/BdniDID_.chunk.js +0 -2
  250. package/dist/scripts/BdniDID_.chunk.js.map +0 -1
  251. package/dist/scripts/BeTQIGnj.chunk.js +0 -2
  252. package/dist/scripts/BeTQIGnj.chunk.js.map +0 -1
  253. package/dist/scripts/Bf3WCYXw.chunk.js +0 -8
  254. package/dist/scripts/Bf3WCYXw.chunk.js.map +0 -1
  255. package/dist/scripts/Bh4NsrSi.chunk.js +0 -2
  256. package/dist/scripts/Bh4NsrSi.chunk.js.map +0 -1
  257. package/dist/scripts/BjOv-usB.chunk.js +0 -2
  258. package/dist/scripts/BjOv-usB.chunk.js.map +0 -1
  259. package/dist/scripts/BkGt8Gr1.chunk.js +0 -2
  260. package/dist/scripts/BkGt8Gr1.chunk.js.map +0 -1
  261. package/dist/scripts/BlFiywl_.chunk.js +0 -2
  262. package/dist/scripts/BlFiywl_.chunk.js.map +0 -1
  263. package/dist/scripts/BoNyBWaZ.chunk.js +0 -2
  264. package/dist/scripts/BoNyBWaZ.chunk.js.map +0 -1
  265. package/dist/scripts/Bvum7-8x.chunk.js +0 -8
  266. package/dist/scripts/Bvum7-8x.chunk.js.map +0 -1
  267. package/dist/scripts/BwDmMfAz.chunk.js +0 -2
  268. package/dist/scripts/BwDmMfAz.chunk.js.map +0 -1
  269. package/dist/scripts/BwgQZkdi.chunk.js +0 -2
  270. package/dist/scripts/BwgQZkdi.chunk.js.map +0 -1
  271. package/dist/scripts/C-7yn3rc.chunk.js +0 -2
  272. package/dist/scripts/C-7yn3rc.chunk.js.map +0 -1
  273. package/dist/scripts/C-pJ0Wi3.chunk.js +0 -2
  274. package/dist/scripts/C-pJ0Wi3.chunk.js.map +0 -1
  275. package/dist/scripts/C35NlkUr.chunk.js +0 -2
  276. package/dist/scripts/C35NlkUr.chunk.js.map +0 -1
  277. package/dist/scripts/C36-3UWl.chunk.js +0 -2
  278. package/dist/scripts/C36-3UWl.chunk.js.map +0 -1
  279. package/dist/scripts/C3fMNXil.chunk.js +0 -2
  280. package/dist/scripts/C3fMNXil.chunk.js.map +0 -1
  281. package/dist/scripts/C8Br2CdQ.chunk.js +0 -2
  282. package/dist/scripts/C8Br2CdQ.chunk.js.map +0 -1
  283. package/dist/scripts/CEmtkty-.chunk.js +0 -2
  284. package/dist/scripts/CEmtkty-.chunk.js.map +0 -1
  285. package/dist/scripts/CFs3kdQx.chunk.js +0 -53
  286. package/dist/scripts/CFs3kdQx.chunk.js.map +0 -1
  287. package/dist/scripts/CGNCg1fO.chunk.js +0 -2
  288. package/dist/scripts/CGNCg1fO.chunk.js.map +0 -1
  289. package/dist/scripts/CPXlV0fg.chunk.js +0 -2
  290. package/dist/scripts/CPXlV0fg.chunk.js.map +0 -1
  291. package/dist/scripts/CSoZBG8v.chunk.js +0 -2
  292. package/dist/scripts/CSoZBG8v.chunk.js.map +0 -1
  293. package/dist/scripts/CW7x8M-z.chunk.js +0 -2
  294. package/dist/scripts/CW7x8M-z.chunk.js.map +0 -1
  295. package/dist/scripts/CWHjB5Ye.chunk.js +0 -2
  296. package/dist/scripts/CWHjB5Ye.chunk.js.map +0 -1
  297. package/dist/scripts/CXslDtbb.chunk.js +0 -2
  298. package/dist/scripts/CXslDtbb.chunk.js.map +0 -1
  299. package/dist/scripts/CZLZ0bbA.chunk.js +0 -2
  300. package/dist/scripts/CZLZ0bbA.chunk.js.map +0 -1
  301. package/dist/scripts/CZafJWQk.chunk.js +0 -2
  302. package/dist/scripts/CZafJWQk.chunk.js.map +0 -1
  303. package/dist/scripts/CbFIe2Y6.chunk.js +0 -2
  304. package/dist/scripts/CbFIe2Y6.chunk.js.map +0 -1
  305. package/dist/scripts/Cg8SIDnK.chunk.js +0 -8
  306. package/dist/scripts/Cg8SIDnK.chunk.js.map +0 -1
  307. package/dist/scripts/Cib9o4sK.chunk.js +0 -2
  308. package/dist/scripts/Cib9o4sK.chunk.js.map +0 -1
  309. package/dist/scripts/Ciyuu-YU.chunk.js +0 -356
  310. package/dist/scripts/Ciyuu-YU.chunk.js.map +0 -1
  311. package/dist/scripts/CkMhHhda.chunk.js +0 -2
  312. package/dist/scripts/CkMhHhda.chunk.js.map +0 -1
  313. package/dist/scripts/CmAQo6rx.chunk.js +0 -2
  314. package/dist/scripts/CmAQo6rx.chunk.js.map +0 -1
  315. package/dist/scripts/CmcmWGL0.chunk.js +0 -2
  316. package/dist/scripts/CmcmWGL0.chunk.js.map +0 -1
  317. package/dist/scripts/Cmu1J2M7.chunk.js +0 -262
  318. package/dist/scripts/Cmu1J2M7.chunk.js.map +0 -1
  319. package/dist/scripts/CrkRNOU9.chunk.js +0 -2
  320. package/dist/scripts/CrkRNOU9.chunk.js.map +0 -1
  321. package/dist/scripts/CskJerl_.chunk.js +0 -2
  322. package/dist/scripts/CskJerl_.chunk.js.map +0 -1
  323. package/dist/scripts/Ct_IIxaS.chunk.js +0 -2
  324. package/dist/scripts/Ct_IIxaS.chunk.js.map +0 -1
  325. package/dist/scripts/Cuuw0EUi.chunk.js +0 -8
  326. package/dist/scripts/Cuuw0EUi.chunk.js.map +0 -1
  327. package/dist/scripts/Cz45aonc.chunk.js +0 -2
  328. package/dist/scripts/Cz45aonc.chunk.js.map +0 -1
  329. package/dist/scripts/D-I94wdL.chunk.js +0 -7
  330. package/dist/scripts/D-I94wdL.chunk.js.map +0 -1
  331. package/dist/scripts/D0UlXsF8.chunk.js +0 -2
  332. package/dist/scripts/D0UlXsF8.chunk.js.map +0 -1
  333. package/dist/scripts/D0cZC7S-.chunk.js +0 -2
  334. package/dist/scripts/D0cZC7S-.chunk.js.map +0 -1
  335. package/dist/scripts/D1D6Gqx1.chunk.js +0 -2
  336. package/dist/scripts/D1D6Gqx1.chunk.js.map +0 -1
  337. package/dist/scripts/D3tziVkG.chunk.js +0 -2
  338. package/dist/scripts/D3tziVkG.chunk.js.map +0 -1
  339. package/dist/scripts/D4MOOnR6.chunk.js +0 -2
  340. package/dist/scripts/D4MOOnR6.chunk.js.map +0 -1
  341. package/dist/scripts/D83kc0Wf.chunk.js +0 -2
  342. package/dist/scripts/D83kc0Wf.chunk.js.map +0 -1
  343. package/dist/scripts/D8dAIhzO.chunk.js +0 -2
  344. package/dist/scripts/D8dAIhzO.chunk.js.map +0 -1
  345. package/dist/scripts/DBp0J6X9.chunk.js +0 -2
  346. package/dist/scripts/DBp0J6X9.chunk.js.map +0 -1
  347. package/dist/scripts/DCds0mCy.chunk.js +0 -2
  348. package/dist/scripts/DCds0mCy.chunk.js.map +0 -1
  349. package/dist/scripts/DEwFBSVv.chunk.js +0 -2
  350. package/dist/scripts/DEwFBSVv.chunk.js.map +0 -1
  351. package/dist/scripts/DF55CDS8.chunk.js +0 -2
  352. package/dist/scripts/DF55CDS8.chunk.js.map +0 -1
  353. package/dist/scripts/DFw_xy-Y.chunk.js +0 -2
  354. package/dist/scripts/DFw_xy-Y.chunk.js.map +0 -1
  355. package/dist/scripts/DIGYepWa.chunk.js +0 -2
  356. package/dist/scripts/DIGYepWa.chunk.js.map +0 -1
  357. package/dist/scripts/DKeFeMvi.chunk.js +0 -2
  358. package/dist/scripts/DKeFeMvi.chunk.js.map +0 -1
  359. package/dist/scripts/DKqLfL60.chunk.js +0 -5
  360. package/dist/scripts/DKqLfL60.chunk.js.map +0 -1
  361. package/dist/scripts/DLJB8vZh.chunk.js +0 -2
  362. package/dist/scripts/DLJB8vZh.chunk.js.map +0 -1
  363. package/dist/scripts/DNtSrq_L.chunk.js +0 -2
  364. package/dist/scripts/DNtSrq_L.chunk.js.map +0 -1
  365. package/dist/scripts/DOHPsm0Q.chunk.js +0 -2
  366. package/dist/scripts/DOHPsm0Q.chunk.js.map +0 -1
  367. package/dist/scripts/DP-ErTOD.chunk.js +0 -2
  368. package/dist/scripts/DP-ErTOD.chunk.js.map +0 -1
  369. package/dist/scripts/DUwkrIwb.chunk.js +0 -2
  370. package/dist/scripts/DUwkrIwb.chunk.js.map +0 -1
  371. package/dist/scripts/DUyJfVnL.chunk.js +0 -2
  372. package/dist/scripts/DUyJfVnL.chunk.js.map +0 -1
  373. package/dist/scripts/DVfbSloY.chunk.js +0 -2
  374. package/dist/scripts/DVfbSloY.chunk.js.map +0 -1
  375. package/dist/scripts/DWvpibWQ.chunk.js +0 -2
  376. package/dist/scripts/DWvpibWQ.chunk.js.map +0 -1
  377. package/dist/scripts/DYmgSjx-.chunk.js +0 -10
  378. package/dist/scripts/DYmgSjx-.chunk.js.map +0 -1
  379. package/dist/scripts/D_EfITTc.chunk.js +0 -2
  380. package/dist/scripts/D_EfITTc.chunk.js.map +0 -1
  381. package/dist/scripts/DayWKE6G.chunk.js +0 -2
  382. package/dist/scripts/DayWKE6G.chunk.js.map +0 -1
  383. package/dist/scripts/DcOpKno_.chunk.js +0 -2
  384. package/dist/scripts/DcOpKno_.chunk.js.map +0 -1
  385. package/dist/scripts/DgMPP2NS.chunk.js +0 -2
  386. package/dist/scripts/DgMPP2NS.chunk.js.map +0 -1
  387. package/dist/scripts/DhWvZ3GP.chunk.js +0 -2
  388. package/dist/scripts/DhWvZ3GP.chunk.js.map +0 -1
  389. package/dist/scripts/Digrmnl9.chunk.js +0 -2
  390. package/dist/scripts/Digrmnl9.chunk.js.map +0 -1
  391. package/dist/scripts/DjWOPQVv.chunk.js +0 -2
  392. package/dist/scripts/DjWOPQVv.chunk.js.map +0 -1
  393. package/dist/scripts/DkSHJqHu.chunk.js +0 -2
  394. package/dist/scripts/DkSHJqHu.chunk.js.map +0 -1
  395. package/dist/scripts/Dpq10cRY.chunk.js +0 -2
  396. package/dist/scripts/Dpq10cRY.chunk.js.map +0 -1
  397. package/dist/scripts/DrsDxQ8i.chunk.js +0 -2
  398. package/dist/scripts/DrsDxQ8i.chunk.js.map +0 -1
  399. package/dist/scripts/DrsVPpSl.chunk.js +0 -3
  400. package/dist/scripts/DrsVPpSl.chunk.js.map +0 -1
  401. package/dist/scripts/DvDdiDQN.chunk.js +0 -7
  402. package/dist/scripts/DvDdiDQN.chunk.js.map +0 -1
  403. package/dist/scripts/DwU9lZgg.chunk.js +0 -2
  404. package/dist/scripts/DwU9lZgg.chunk.js.map +0 -1
  405. package/dist/scripts/I8EoNmf8.chunk.js +0 -2
  406. package/dist/scripts/I8EoNmf8.chunk.js.map +0 -1
  407. package/dist/scripts/Im8afRMN.chunk.js +0 -2
  408. package/dist/scripts/Im8afRMN.chunk.js.map +0 -1
  409. package/dist/scripts/N_QgBckB.chunk.js +0 -2
  410. package/dist/scripts/N_QgBckB.chunk.js.map +0 -1
  411. package/dist/scripts/SnHtKbiQ.chunk.js +0 -2
  412. package/dist/scripts/SnHtKbiQ.chunk.js.map +0 -1
  413. package/dist/scripts/U-eF69sj.chunk.js +0 -2
  414. package/dist/scripts/U-eF69sj.chunk.js.map +0 -1
  415. package/dist/scripts/XarUQJMp.chunk.js +0 -2
  416. package/dist/scripts/XarUQJMp.chunk.js.map +0 -1
  417. package/dist/scripts/ZYx7Po5r.chunk.js +0 -2
  418. package/dist/scripts/ZYx7Po5r.chunk.js.map +0 -1
  419. package/dist/scripts/app-DfSv_-O3.js +0 -220
  420. package/dist/scripts/app-DfSv_-O3.js.map +0 -1
  421. package/dist/scripts/awsfwCdu.chunk.js +0 -2
  422. package/dist/scripts/awsfwCdu.chunk.js.map +0 -1
  423. package/dist/scripts/b1pZWz43.chunk.js +0 -2
  424. package/dist/scripts/b1pZWz43.chunk.js.map +0 -1
  425. package/dist/scripts/cvX-F_mx.chunk.js +0 -2
  426. package/dist/scripts/cvX-F_mx.chunk.js.map +0 -1
  427. package/dist/scripts/lBHPAFYv.chunk.js +0 -2
  428. package/dist/scripts/lBHPAFYv.chunk.js.map +0 -1
  429. package/dist/scripts/mP-Ymt5z.chunk.js +0 -2
  430. package/dist/scripts/mP-Ymt5z.chunk.js.map +0 -1
  431. package/dist/scripts/nay4aGaa.chunk.js +0 -2
  432. package/dist/scripts/nay4aGaa.chunk.js.map +0 -1
  433. package/dist/scripts/pkzD5BEm.chunk.js +0 -2
  434. package/dist/scripts/pkzD5BEm.chunk.js.map +0 -1
  435. package/dist/scripts/tHf2V3t0.chunk.js +0 -2
  436. package/dist/scripts/tHf2V3t0.chunk.js.map +0 -1
  437. package/vite.config.ts +0 -6
@@ -1 +0,0 @@
1
- {"version":3,"file":"Digrmnl9.chunk.js","sources":["../../../../libs/shared/src/components/curriculum-links/partial-loading/PartialCurriculumLinks.tsx","../../../../libs/shared/src/enums/CurriculumType.ts","../../../../libs/shared/src/components/curriculum-links/CurriculumCodeTag.tsx","../../../../libs/shared/src/components/curriculum-links/CurriculumLinkItem.tsx","../../../../libs/shared/src/components/curriculum-links/CurriculumLinks.tsx","../../../../libs/shared/src/flight-requests/PreferenceRequests.ts"],"sourcesContent":["import React from 'react';\n\nimport styles from './partial-curriculum-links.module.scss';\n\nconst PartialCurriculumLinkSection = () => (\n <>\n <div className={`partial-loading-background rounded-pill py-1 px-2 d-inline-block me-1 mb-2 ${styles.audience}`} />\n <div>\n <div className={`partial-loading-background mb-1 ${styles.area}`} />\n\n <div className='mb-2 d-flex'>\n <div className={`me-1 align-self-start ${styles.code}`}>\n <div className={`partial-loading-background rounded-pill py-1 px-2 d-inline-block w-100 h-100`} />\n </div>\n \n <div className={`partial-loading-background ${styles.description}`} />\n </div>\n </div>\n </>\n);\n\nexport function PartialCurriculumLinks(): JSX.Element {\n return (\n <div>\n <div className='mb-3'>\n <PartialCurriculumLinkSection />\n </div>\n\n <div className='mb-3'>\n <PartialCurriculumLinkSection />\n </div>\n\n <div>\n <PartialCurriculumLinkSection />\n </div>\n </div>\n );\n}","export enum CurriculumType {\n Subject = 'CurriculumSubject',\n Audience = 'CurriculumAudience',\n Area = 'CurriculumArea',\n Leaf = 'CurriculumLeaf'\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from '../app-link/AppLink';\n\nimport styles from './curriculum-links.module.scss';\n\ninterface CurriculumCodeTagProps {\n id: string;\n code: string;\n description: string;\n locationContext: LocationContext;\n faded?: boolean;\n as?: React.ElementType;\n className?: string;\n appLink?: Core.AppLink;\n}\n\nexport const CurriculumCodeTag = React.forwardRef((props: CurriculumCodeTagProps, ref: React.Ref<HTMLElement>) => {\n let className = classNames(\n 'text-nowrap font-size-normal rounded-pill py-1 px-2 my-0 d-inline-block fw-semibold bg-white border',\n props.faded ? 'border-secondary text-secondary' : 'border-dark',\n props.className\n );\n\n if (props.appLink) {\n className = classNames(className, `text-decoration-none ${styles.codeAppLink}`);\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={{\n id: props.id,\n code: props.code,\n description: props.description\n }}\n analyticsOptions={{\n location: props.locationContext,\n entity: EntityType.CurriculumCode,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Search\n }}\n className={className}\n ref={ref}\n >\n {props.code}\n </AppLink>\n );\n }\n\n const Component = props.as || 'div';\n\n return (\n <Component className={className} ref={ref}>\n {props.code}\n </Component>\n );\n});","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './curriculum-links.module.scss';\n\nconst namespace = 'shared.curriculumLinks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CurriculumLinkItemProps {\n data: Presentation;\n onChangeCurriculum: (id: string) => any;\n selected: boolean;\n}\n\nexport function CurriculumLinkItem(props: CurriculumLinkItemProps): JSX.Element {\n const { data: curriculumTag } = props;\n\n return (\n <DivButton\n className={`p-1 pe-2 rounded-pill d-inline-flex align-items-center ${styles.tag} ${props.selected ? styles.selected : ''}`}\n onClick={() => props.onChangeCurriculum(curriculumTag.id.toString())}\n aria-label={`${getPhrase('ariaFilter')} ${curriculumTag.name}`}\n >\n {curriculumTag.cover?.url && (\n <div className={`bg-white ${styles.cover} rounded-circle border`}>\n <img\n src={ImageHelper.createUrl(curriculumTag.cover.url, { size: ImageSize.Small })}\n alt={curriculumTag.name}\n className='rounded-circle'\n />\n </div>\n )}\n <div className='ms-2'>\n {curriculumTag.name}\n </div>\n </DivButton>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PartialCurriculumLinks } from 'libs/shared/components/curriculum-links/partial-loading/PartialCurriculumLinks';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurriculumType } from 'libs/shared/enums/CurriculumType';\nimport { Curriculum, Presentation } from 'libs/shared/interfaces';\n\nimport { AppLink } from '../app-link/AppLink';\n\nimport { CurriculumCodeTag } from './CurriculumCodeTag';\nimport { CurriculumLinkItem } from './CurriculumLinkItem';\n\nimport styles from './curriculum-links.module.scss';\n\nconst BRACKET_SEGMENT_REGEX = /(.*)\\s\\((.*)?\\)/i;\n\nconst namespace = 'shared.curriculumLinks';\n\nconst BASE_PILL_CLASS = 'text-nowrap font-size-normal rounded-pill py-1 px-2 my-0 d-inline-block fw-semibold';\n\ninterface CurriculumStructure {\n [CurriculumType.Subject]: Curriculum<CurriculumType.Subject>;\n [CurriculumType.Audience]: Curriculum<CurriculumType.Audience>;\n areasAndLeaves: Array<{\n [CurriculumType.Area]: Curriculum<CurriculumType.Area>[];\n [CurriculumType.Leaf]: Curriculum<CurriculumType.Leaf>[];\n }>;\n}\n\ninterface CurriculumLeafProps {\n id: string;\n code: string;\n description: string;\n locationContext: LocationContext;\n codeWidth?: number;\n trySetMaxCodeWidth?: (width: number) => void;\n uiContainsCodes?: boolean;\n getCodeAppLink?: (query: string, isCode: boolean) => Core.AppLink;\n}\n\nexport function CurriculumLeaf(props: CurriculumLeafProps): JSX.Element {\n const codeRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!codeRef.current || !props.trySetMaxCodeWidth)\n return;\n\n const { width } = codeRef.current.getBoundingClientRect();\n\n props.trySetMaxCodeWidth(width);\n }, [codeRef.current]);\n\n if (!props.code && !props.description)\n return <></>;\n\n /**\n * The most ideal case (and most common) is that we have both a code\n * and a description to display for it.\n */\n if (props.code && props.description) {\n return (\n <div className='d-flex'>\n <div\n className='me-2 align-self-start'\n style={{ minWidth: props.codeWidth ? `${props.codeWidth}px` : 'auto' }}\n >\n <CurriculumCodeTag\n ref={codeRef}\n id={props.id}\n code={props.code}\n description={props.description}\n appLink={props.getCodeAppLink?.(props.code, true)}\n locationContext={props.locationContext}\n />\n </div>\n <p className='m-0 align-self-center' dangerouslySetInnerHTML={{ __html: props.description }} />\n </div>\n );\n }\n\n /**\n * If a leaf has no code but the rest of the UI has leaf nodes\n * with codes, we show a special \"No code\" pill. Example: https://imgur.com/3L1Ela3\n */\n if (!props.code && props.uiContainsCodes) {\n return (\n <div className='d-flex'>\n <div\n className='me-2 align-self-start'\n style={{ minWidth: props.codeWidth ? `${props.codeWidth}px` : 'auto' }}\n >\n <CurriculumCodeTag\n ref={codeRef}\n id={props.id}\n code={LanguageService.getPhrase(namespace, 'noCode')}\n description={props.description}\n locationContext={props.locationContext}\n faded\n />\n </div>\n <p className='m-0 align-self-center' dangerouslySetInnerHTML={{ __html: props.description }} />\n </div>\n );\n }\n\n /**\n * In this scenario, either the code or the description fields have been populated with\n * some text. In this case we just render the text like a bullet point.\n */\n const text = props.code || props.description;\n\n return (\n <div className='d-flex'>\n <div className='ms-2 me-1'>&bull;</div>\n <AppLink appLink={props.getCodeAppLink?.(text, false)}>\n <p className='mb-0' dangerouslySetInnerHTML={{ __html: text }} />\n </AppLink>\n </div>\n );\n}\n\ninterface CurriculumSubjectProps {\n linkSet: CurriculumStructure;\n codeWidth: number;\n trySetMaxCodeWidth: React.Dispatch<React.SetStateAction<number>>;\n locationContext: LocationContext;\n getCodeAppLink?: (query: string, isCode: boolean) => Core.AppLink;\n}\n\nfunction CurriculumSubject(props: CurriculumSubjectProps): JSX.Element {\n const areaAndLeafSets: { [areaText: string]: Curriculum<CurriculumType.Leaf>[]; } = {};\n\n let uiContainsCodes = false;\n\n props.linkSet.areasAndLeaves.forEach(areaAndLeafSet => {\n const areaText = areaAndLeafSet[CurriculumType.Area].map(ca => ca.name).join(' - ');\n\n if (areaAndLeafSets[areaText]) {\n areaAndLeafSet[CurriculumType.Leaf].forEach(leaf => {\n if (!areaAndLeafSets[areaText].find(l => l.name === leaf.name)) {\n areaAndLeafSets[areaText].push(leaf);\n\n // We need the info on if _any_ leaf node has a code in it. See why in the comments in `<CurriculumLeaf />`\n if (leaf.name)\n uiContainsCodes = true;\n }\n });\n\n return;\n }\n\n areaAndLeafSets[areaText] = areaAndLeafSet[CurriculumType.Leaf];\n });\n\n function getAudienceText(): string {\n const audienceSegment = props.linkSet[CurriculumType.Audience].name;\n const subjectSegment = props.linkSet[CurriculumType.Subject].name;\n\n /**\n * In some curriculums, such as the UK curriculum, the audience string may contain a year level\n * in brackets. For example, it may be \"Lower Key Stage 2 (Year 4)\".\n * This regex will pull that segment out if it exists.\n */\n const audienceBracketSegments = audienceSegment.match(BRACKET_SEGMENT_REGEX);\n\n if (audienceBracketSegments)\n return `${audienceBracketSegments[1]} • ${audienceBracketSegments[2]} • ${subjectSegment}`;\n\n return `${audienceSegment} • ${subjectSegment}`;\n }\n\n function getLeafStyleClass(leaf: Curriculum<CurriculumType.Leaf>): string {\n const className = 'mb-2';\n\n if (!leaf.name && !uiContainsCodes)\n return className + ' ms-4 ' + styles.leafDescriptionOnly;\n\n return className;\n }\n\n return (\n <>\n <h3 className={`${BASE_PILL_CLASS} text-white bg-ultramarine fw-normal me-1 mb-2`}>\n {getAudienceText()}\n </h3>\n\n <div className={`me-2 ${styles.curriculumSubject}`}>\n {Object.keys(areaAndLeafSets).map((areaText, i) => {\n return (\n <div key={i} className={styles.areaLeafSet} >\n {areaText && <h4 className='mb-1 font-size-normal'>{areaText}</h4>}\n <ul className='list-unstyled'>\n {areaAndLeafSets[areaText].map(leaf => (\n <li key={leaf.id} className={getLeafStyleClass(leaf)}>\n <CurriculumLeaf\n id={leaf.id}\n code={leaf.name}\n description={leaf.description}\n codeWidth={props.codeWidth}\n trySetMaxCodeWidth={props.trySetMaxCodeWidth}\n uiContainsCodes={uiContainsCodes}\n getCodeAppLink={props.getCodeAppLink}\n locationContext={props.locationContext}\n />\n </li>\n ))}\n </ul>\n </div>\n );\n })}\n </div>\n </>\n );\n}\n\ninterface CurriculumLinksSet {\n [subjectAndAudienceIdKey: string]: CurriculumStructure\n}\n\ninterface CurriculumLinksProps {\n curriculumLinks: Curriculum[][];\n mappedCurriculums: Presentation[];\n onChangeCurriculum: (id: string) => void;\n hasCompleted: boolean;\n isFetching: boolean;\n getCodeAppLink?: (query: string, isCode: boolean) => Core.AppLink;\n locationContext: LocationContext;\n}\n\nexport function CurriculumLinks(props: CurriculumLinksProps): JSX.Element {\n const [ codeWidth, setCodeWidth ] = React.useState(0);\n\n const showOtherCurriculums = !props.curriculumLinks.length && props.mappedCurriculums.length > 0;\n\n function trySetMaxCodeWidth(width: number): void {\n /**\n * The width of the curriculum code column should be identical for each leaf node, meaning\n * the leaf description text will be perfectly vertically aligned all the way down.\n * See here for example: https://imgur.com/MbganZf\n * \n * This is achieved by us setting the state for the maximum code width, and forcing all\n * smaller codes to abide by that max width.\n * \n * This value is used in the `<CurriculumLeaf />` component.\n */\n setCodeWidth(currentVal => {\n if (currentVal >= width)\n return currentVal;\n\n return width;\n });\n }\n\n /**\n * Here, we're taking the structure of links from the backend, and restructuring it in a way\n * that resembles the structure of our UI more closely. The general idea is:\n * \n * CurriculumAudience - CurriculumSubject\n * CurriculumAreas\n * CurriculumLeaves\n */\n const curriculumLinkSets = React.useMemo(() => {\n const newSet: CurriculumLinksSet = {};\n\n props.curriculumLinks?.forEach(linkSet => {\n let subject: Curriculum<CurriculumType.Subject> = null;\n let audience: Curriculum<CurriculumType.Audience> = null;\n const areas: Curriculum<CurriculumType.Area>[] = [];\n const leaves: Curriculum<CurriculumType.Leaf>[] = [];\n \n linkSet.forEach(curriculumObj => {\n switch (curriculumObj.type) {\n case CurriculumType.Subject:\n subject = curriculumObj as Curriculum<CurriculumType.Subject>;\n break;\n case CurriculumType.Audience:\n audience = curriculumObj as Curriculum<CurriculumType.Audience>;\n break;\n case CurriculumType.Area:\n areas.push(curriculumObj as Curriculum<CurriculumType.Area>);\n break;\n case CurriculumType.Leaf:\n leaves.push(curriculumObj as Curriculum<CurriculumType.Leaf>);\n break;\n default:\n break;\n }\n });\n\n if (!subject || !audience)\n return;\n \n const key = `${subject.id}:${audience.id}`;\n \n if (newSet[key]) {\n newSet[key].areasAndLeaves.push({\n [CurriculumType.Area]: areas,\n [CurriculumType.Leaf]: leaves\n });\n \n return;\n }\n \n newSet[key] = {\n [CurriculumType.Subject]: subject,\n [CurriculumType.Audience]: audience,\n areasAndLeaves: [{\n [CurriculumType.Area]: areas,\n [CurriculumType.Leaf]: leaves\n }]\n };\n });\n\n return newSet;\n }, [props.curriculumLinks]);\n\n if (!props.hasCompleted || props.isFetching)\n return <PartialCurriculumLinks />;\n \n if (showOtherCurriculums) {\n return (\n <div>\n <div className='mb-3'>\n <Text namespace={namespace} phrase='currentEmpty' />\n </div>\n <div className='mb-3'>\n <Text namespace={namespace} phrase='currentEmptyInfo' />\n </div>\n <ul className='list-unstyled mb-n2 d-flex flex-wrap'>\n {props.mappedCurriculums.map(curriculum => (\n <li key={curriculum.id} className='mb-2 me-2'>\n <CurriculumLinkItem\n data={curriculum}\n onChangeCurriculum={props.onChangeCurriculum}\n selected={false}\n />\n </li>\n ))}\n </ul>\n </div>\n );\n }\n\n return (\n <ul className='list-unstyled m-0'>\n {Object.keys(curriculumLinkSets).map((linkSetKey, i) => (\n <li key={`linkset-${i}`} className={styles.curriculumSet}>\n <CurriculumSubject\n linkSet={curriculumLinkSets[linkSetKey]}\n trySetMaxCodeWidth={trySetMaxCodeWidth}\n codeWidth={codeWidth}\n getCodeAppLink={props.getCodeAppLink}\n locationContext={props.locationContext}\n />\n </li>\n ))}\n </ul>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { Presentation, PresentationAudience } from 'libs/shared/interfaces';\n\nconst classificationQuery = SharedWithStatements.CLASSIFICATION_COLLECTION;\n\nconst endpoints = {\n // Subjects\n allSubjectPreferences: () => `{gateway}/v1/users/me/classifications/preferences?query=${classificationQuery}&type=subject`,\n mySubjectPreferences: () => `{gateway}/v1/users/me/classifications/following?query=${classificationQuery}`,\n followSubjects: () => '{gateway}/v1/users/me/classifications/following',\n unfollowSubjects: (ids: string[]) => UrlHelper.urlBuilder('{gateway}/v1/users/me/classifications/following', { id: ids }),\n\n // Levels\n allLevelPreferences: () => `{gateway}/v1/users/me/audiences?type=subject`,\n myLevelPreferences: () => `{gateway}/v1/users/me/audiences/following`,\n followLevels: () => `{gateway}/v1/users/me/audiences/following`,\n unfollowLevels: (ids: string[]) => UrlHelper.urlBuilder('{gateway}/v1/users/me/audiences/following', { id: ids }),\n\n getCurrentPresentations: (type?: PresentationType) =>\n `{gateway}/v1/users/me/presentations${type ? `?type=${type}` : ''}`,\n getAvailablePresentations: (type?: PresentationType) =>\n `{gateway}/v1/users/me/presentations/available${type ? `?type=${type}` : ''}`,\n setPresentation: (id: string) => `{gateway}/v1/users/me/presentations/${id}`\n};\n\nexport const PreferenceRequests = {\n /**\n * Presentations\n */\n\n availablePresentations(type?: PresentationType): Flight.Request {\n return {\n url: endpoints.getAvailablePresentations(type),\n key: `available:presentations:${type}`,\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n setPresentation(\n presentation: Presentation,\n type: PresentationType,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: endpoints.setPresentation(presentation.id),\n key: `set:${type}:presentation`,\n type: HttpVerbs.POST,\n data: {},\n normalizeOptions: {\n namespace: 'presentation'\n },\n invalidationKeys: [\n `current:presentation:${type.toLocaleLowerCase()}`,\n 'subject:preference:options',\n 'my:subject:preferences',\n 'level:preference:options',\n 'my:level:preferences',\n 'classifications',\n 'presentation:audiences',\n 'widgets:v3',\n 'content:update:videos',\n 'content:updates'\n ],\n success,\n error\n };\n },\n\n /**\n * Subjects\n */\n allSubjectPreferences(): Flight.Request {\n return {\n url: endpoints.allSubjectPreferences(),\n key: `subject:preference:options`\n };\n },\n\n mySubjectPreferences(success?: (data: any) => void): Flight.Request {\n return {\n url: endpoints.mySubjectPreferences(),\n key: `my:subject:preferences`,\n normalize: false,\n success\n };\n },\n\n followSubjects(\n subjectIds: string[],\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: endpoints.followSubjects(),\n key: `follow:subjects`,\n data: subjectIds,\n type: HttpVerbs.POST,\n success,\n error,\n always,\n invalidationKeys: [ ...subjectIds.map(id => `classification:${id}`), 'my:subject:preferences', 'classifications', 'content:updates' ]\n };\n },\n\n unfollowSubjects(\n subjectIds: string[],\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: endpoints.unfollowSubjects(subjectIds),\n key: `unfollow:subjects`,\n type: HttpVerbs.DELETE,\n success,\n error,\n always,\n invalidationKeys: [ ...subjectIds.map(id => `classification:${id}`), 'my:subject:preferences', 'classifications', 'content:updates' ]\n };\n },\n\n /**\n * Levels\n */\n allLevelPreferences(): Flight.Request {\n return {\n url: endpoints.allLevelPreferences(),\n key: `level:preference:options`,\n normalize: false\n };\n },\n\n myLevelPreferences(success?: (data: any) => void): Flight.Request {\n return {\n url: endpoints.myLevelPreferences(),\n key: `my:level:preferences`,\n normalizeOptions: {\n idAttribute: 'masterId'\n },\n success\n };\n },\n\n followLevels(\n levels: PresentationAudience[],\n success: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: endpoints.followLevels(),\n key: `follow:levels`,\n data: levels.map(l => l.masterId),\n normalize: false,\n // Update the store to immediately reflect changes\n updateState: {\n keys: 'my:level:preferences',\n updateData: storeData => {\n const preferences = storeData['my:level:preferences'] ?? [] as PresentationAudience[];\n\n levels.forEach(newLevel => {\n if (preferences.find((p: PresentationAudience) => p.masterId === newLevel.masterId))\n return;\n\n preferences.push(newLevel);\n });\n\n return {\n 'my:level:preferences': preferences\n };\n }\n },\n type: HttpVerbs.POST,\n success,\n error,\n always\n };\n },\n\n unfollowLevels(\n levels: PresentationAudience[],\n success: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: endpoints.unfollowLevels(levels.map(l => l.masterId)),\n key: `unfollow:levels`,\n normalize: false,\n // Update the store to immediately reflect changes\n updateState: {\n keys: 'my:level:preferences',\n updateData: storeData => {\n let preferences = storeData['my:level:preferences'] ?? [] as PresentationAudience[];\n\n levels.forEach(oldLevel => {\n if (!preferences.find((p: PresentationAudience) => p.masterId === oldLevel.masterId))\n return;\n\n const idxOfValue = preferences.findIndex((p: PresentationAudience) => p.masterId === oldLevel.masterId);\n\n preferences = [ ...preferences.slice(0, idxOfValue), ...preferences.slice(idxOfValue + 1) ];\n });\n\n return {\n 'my:level:preferences': preferences\n };\n }\n },\n type: HttpVerbs.DELETE,\n success,\n error,\n always\n };\n }\n};"],"names":["PartialCurriculumLinkSection","jsxs","Fragment","jsx","styles","PartialCurriculumLinks","CurriculumType","CurriculumCodeTag","React","props","ref","className","classNames","AppLink","EntityType","UserAction","ClickDescriptor","Component","namespace","getPhrase","LanguageService","CurriculumLinkItem","curriculumTag","DivButton","_a","ImageHelper","ImageSize","BRACKET_SEGMENT_REGEX","BASE_PILL_CLASS","CurriculumLeaf","codeRef","width","text","_b","CurriculumSubject","areaAndLeafSets","uiContainsCodes","areaAndLeafSet","areaText","ca","leaf","l","getAudienceText","audienceSegment","subjectSegment","audienceBracketSegments","getLeafStyleClass","i","CurriculumLinks","codeWidth","setCodeWidth","showOtherCurriculums","trySetMaxCodeWidth","currentVal","curriculumLinkSets","newSet","linkSet","subject","audience","areas","leaves","curriculumObj","key","Text","curriculum","linkSetKey","classificationQuery","SharedWithStatements","endpoints","ids","UrlHelper","type","id","PreferenceRequests","presentation","success","error","HttpVerbs","subjectIds","always","levels","storeData","preferences","newLevel","p","oldLevel","idxOfValue"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{j as a,L as I,E as c,c as p,T as L,Y as O,g as W,R as x,h as w,i as q,Z as N,e as F,W as R,X as B,a0 as U,o as f,s as M,t as V,v as z,w as _,x as $,a1 as Y,a2 as G,V as Q,O as X,$ as Z}from"./app-DfSv_-O3.js";import{L as J}from"./DKqLfL60.chunk.js";import{P as K}from"./82OY25pR.chunk.js";import{D as ee,a as v}from"./BdHxGaRy.chunk.js";import{A as ae,P as te}from"./mP-Ymt5z.chunk.js";import{B as ie,P as se}from"./N_QgBckB.chunk.js";import{B as ne}from"./b1pZWz43.chunk.js";import{E as oe,W as re,u as me}from"./Bvum7-8x.chunk.js";import{g as de,B as ce}from"./BBnDr_iy.chunk.js";import{C as T}from"./DCds0mCy.chunk.js";import{A as le}from"./CWHjB5Ye.chunk.js";import{D as ue}from"./ZYx7Po5r.chunk.js";import{A as he}from"./BwDmMfAz.chunk.js";import{C as ge}from"./CrkRNOU9.chunk.js";import{u as pe}from"./B1QWJfPw.chunk.js";import{S as j}from"./B-_Kgmt0.chunk.js";import"./CPXlV0fg.chunk.js";import"./BCQ0kOEO.chunk.js";import"./CW7x8M-z.chunk.js";import"./C35NlkUr.chunk.js";import"./D83kc0Wf.chunk.js";import"./DwU9lZgg.chunk.js";import"./CZafJWQk.chunk.js";import"./BeTQIGnj.chunk.js";import"./BCyuhFou.chunk.js";import"./DrsVPpSl.chunk.js";import"./XarUQJMp.chunk.js";import"./CbFIe2Y6.chunk.js";import"./CskJerl_.chunk.js";import"./B32lL5ga.chunk.js";import"./nay4aGaa.chunk.js";import"./BlFiywl_.chunk.js";import"./CZLZ0bbA.chunk.js";import"./DBp0J6X9.chunk.js";import"./C-7yn3rc.chunk.js";import"./C36-3UWl.chunk.js";import"./BQH1xd9z.chunk.js";import"./Bf3WCYXw.chunk.js";import"./DNtSrq_L.chunk.js";import"./D8dAIhzO.chunk.js";import"./cvX-F_mx.chunk.js";import"./DLJB8vZh.chunk.js";import"./C8Br2CdQ.chunk.js";import"./CEmtkty-.chunk.js";import"./Bh4NsrSi.chunk.js";import"./D1D6Gqx1.chunk.js";import"./lBHPAFYv.chunk.js";import"./CFs3kdQx.chunk.js";import"./Cib9o4sK.chunk.js";import"./awsfwCdu.chunk.js";import"./C-pJ0Wi3.chunk.js";import"./pkzD5BEm.chunk.js";import"./I8EoNmf8.chunk.js";import"./DF55CDS8.chunk.js";import"./C3fMNXil.chunk.js";import"./Dpq10cRY.chunk.js";import"./DOHPsm0Q.chunk.js";import"./D3tziVkG.chunk.js";import"./Digrmnl9.chunk.js";import"./BdniDID_.chunk.js";import"./BjOv-usB.chunk.js";import"./B0KMLOp5.chunk.js";import"./DhWvZ3GP.chunk.js";import"./tHf2V3t0.chunk.js";import"./DIGYepWa.chunk.js";const l="streamable.companyDashboardEmptyState",be=p.encloseNamespace(l);function ye(e){var o,s;const i=((o=e.dashboard)==null?void 0:o.status)===ee.Archived;return a.jsx(I.Provider,{value:l,children:a.jsxs(c,{children:[a.jsx(c.Image,{src:e.imageUrl,altText:be("headingForStreamable")}),e.isReadOnly?a.jsxs(a.Fragment,{children:[a.jsx(c.Heading,{children:a.jsx(L,{namespace:l,phrase:"headingForCurator"})}),a.jsx(c.Info,{children:a.jsx(L,{namespace:l,phrase:"info"})}),a.jsx(O,{title:i?p.getPhrase(l,"archivedCtaTooltip"):"",spanHack:!0,children:a.jsx(c.Cta,{text:p.getPhrase(l,"add"),appLink:(s=e.addWidgetApplink)==null?void 0:s.call(e),className:"btn btn-dark",icon:K,disabled:i})})]}):a.jsx(c.Heading,{children:a.jsx(L,{phrase:"headingForStreamable"})})]})})}const Ce="streamable.companyDashboard",fe=p.encloseNamespace(Ce);function xe(e){var b,y,A,h,g,S;const i=W.sortBy((b=e.dashboard)==null?void 0:b.widgets,"index"),o=x.useMemo(()=>i.reduce((t,d)=>(t[d.id]=!1,t),{}),[i==null?void 0:i.length]),[s,r]=x.useState(o);function u(t,d,C){var D;const E=T.getWidgetParams(d,C,T.getDashboardTargetType(e.dashboard),(D=e.activeAudiences)==null?void 0:D.map(H=>H.masterId));return e.getWidgetContentRequest(t,E,C)}const P=x.useCallback((t,d)=>{if(s[t]===d)return;const C={...s,[t]:d};r(C)},[s,i]);function m(){return i!=null&&i.length?Object.values(s).every(t=>!!t):!0}const n=m();return a.jsxs(a.Fragment,{children:[!!i.length&&a.jsxs(a.Fragment,{children:[e.company?a.jsx(ie,{heading:e.company.name,logo:e.company.logo,logoBgColour:(y=e.company.metadata)==null?void 0:y.colour,alignLogoLeft:!!e.company.logo||!!e.company.cover,banner:e.company.banner,imageCdnUrl:e.commonVideoProps.imageCdnUrl,blockColourClass:de(e.company.name,ce),actions:(A=e.getBannerActions)==null?void 0:A.call(e),actionsDropdownClassName:"btn btn-outline-dark"}):a.jsx(se,{}),a.jsxs("div",{className:"d-flex flex-column row-gap-3 py-3 mb-3 border-bottom",children:[a.jsx(ne,{breadcrumbs:(h=e.getBreadcrumbs)==null?void 0:h.call(e)}),a.jsx(ae,{audiences:e.audiences,activeAudiences:e.activeAudiences,disabled:e.isReadOnly,appLink:(g=e.widgetAppLinks)==null?void 0:g.audience()})]}),e.company.description&&a.jsx("div",{className:"mb-5",children:a.jsx(oe,{id:(S=e.company)==null?void 0:S.id,question:fe("aboutUs"),answer:J.linkifyText(e.company.description),isBot:e.isBot,analyticsOptions:{entity:q.Company,location:w.Dashboard}})}),a.jsx("div",{children:i.map(t=>a.jsx(re,{widgetCollection:v.Company,dashboardTarget:v.Company,id:t.id,getContentRequest:u,audiences:e.audiences,name:t.name,description:t.description,templateId:t.templateId,metadata:t.metadata,setIsEmpty:P,appLinks:e.widgetAppLinks,isScrollToTargetWidget:(e==null?void 0:e.scrollToWidgetId)===t.id,widgetTypeId:t.widgetId,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,isPreviewing:e.isReadOnly,lazyLoad:e.lazyLoad,contentType:N.Livestream,imageCdnUrl:e.commonVideoProps.imageCdnUrl,commonVideoProps:e.commonVideoProps,classification:null,seeMoreLink:void 0,hasTableOfContents:!1,onClickRemoveItem:void 0,settings:{hasTopicDirectories:!1},badgeComponent:null},t.id))})]}),n&&a.jsx(ye,{dashboard:e.dashboard,isReadOnly:e.isReadOnly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.widgetAppLinks.widgetWizard})]})}function Pe(e,i){return{...U,audience:()=>({application:B.DASHBOARD,action:R.Dashboard.COMPANY_DASHBOARD,args:[e==null?void 0:e.id,F.slugify(e==null?void 0:e.name)],params:i}),series:()=>null,classificationLatestReleases:()=>null,playlist:()=>null,watchHistory:()=>null,widgetWizard:()=>null,searchSettings:()=>null,searchHome:()=>null}}const Ae="dashboard.companyDashboard",k=p.encloseNamespace(Ae);function Ia(e){return e?X.pick(e,["a","dashboardId"]):{}}function Oa(e){var h,g;const{commonVideoProps:i}=pe(),o=f(Z.config()),s=f(ge.company(e.companyId,{query:"banner,logo"})),r=f(M.streamablePresentation()),u=f(r.data&&le.presentationAudiences(r.data.id,V.StreamableLearning)),P=he.getActiveAudiencesFromParams(u.data,e.queryParams),m=s.data&&Pe(s.data,e.queryParams),{dashboard:n,isPreviewing:b}=me({targetType:v.Company,companyId:e.companyId,dashboardId:(h=e.queryParams)==null?void 0:h.dashboardId});z(_.getDefaultMetadata({title:(g=s.data)==null?void 0:g.name,phraseContext:{phraseHandler:k,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:j.getCanonicalLink({customAppLink:m==null?void 0:m.audience()}),allowIndexing:!0,product:$.PRODUCT_NAME}));function y(){return s.hasCompleted?[{name:k("discover"),appLink:{application:B.DASHBOARD,action:R.Dashboard.HOME}},{name:s.data.name,active:!0}]:[]}return x.useEffect(()=>{!n.hasCompleted||n.data||Y.throw(new G)},[n.data,n.hasCompleted]),o.hasCompleted&&n.hasCompleted&&r.hasCompleted&&u.hasCompleted&&s.hasCompleted?a.jsxs("div",{className:"position-relative px-4",children:[!!(b&&n.data)&&a.jsx(te,{status:n.data.status,type:"company"}),a.jsx(xe,{company:s.data,dashboard:n.data,getWidgetContentRequest:ue.dashboardWidgetContent,presentation:r.data,widgetAppLinks:m,getBreadcrumbs:y,hasPermissions:()=>!1,hasLocalPermissions:()=>!1,audiences:u.data,activeAudiences:P,emptyImageUrl:Q.EmptyStates.Topics.TOPIC,isBot:j.isBot(),lazyLoad:!j.isBot(),commonVideoProps:i})]}):a.jsx(a.Fragment,{})}export{Oa as CompanyDashboardView,Ia as sanitizeDashboardParams};
2
- //# sourceMappingURL=DjWOPQVv.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DjWOPQVv.chunk.js","sources":["../../../../libs/shared/src/apps/streamable-learning/components/company-dashboard/empty-state/StreamableCompanyDashboardEmptyState.tsx","../../../../libs/shared/src/apps/streamable-learning/components/company-dashboard/StreamableCompanyDashboard.tsx","../../src/apps/dashboard/views/company-dashboard/CompanyDashboardViewUtils.ts","../../src/apps/dashboard/views/company-dashboard/CompanyDashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\n\n\nconst namespace = 'streamable.companyDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StreamableCompanyDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadOnly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function StreamableCompanyDashboardEmptyState(props: StreamableCompanyDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('headingForStreamable')} />\n {!props.isReadOnly ? (\n <EmptyState.Heading>\n <Text phrase='headingForStreamable' />\n </EmptyState.Heading>\n ) : (\n <>\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='headingForCurator' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={PlusSvg}\n disabled={isArchived}\n />\n </Tooltip>\n </>\n )}\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { StreamableCompanyDashboardEmptyState } from 'libs/shared/apps/streamable-learning/components/company-dashboard/empty-state/StreamableCompanyDashboardEmptyState';\nimport { AudienceFilter } from 'libs/shared/apps/subjects/components/audience-filter/AudienceFilter';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { ExpandableQuestion } from 'libs/shared/components/expandable-question/ExpandableQuestion';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllCompanyWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CalendarEventContentType, Company, CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\nconst namespace = 'streamable.companyDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface StreamableCompanyDashboardProps {\n dashboard: CuratedDashboard;\n company: Company;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n audiences?: PresentationAudience[];\n activeAudiences?: PresentationAudience[];\n emptyImageUrl?: string;\n presentation: Presentation;\n widgetAppLinks?: AllCompanyWidgetTemplates['appLinks'] & {\n audience: () => Core.AppLink;\n widgetWizard: () => Core.AppLink;\n };\n scrollToWidgetId?: string;\n isReadOnly?: boolean;\n getBreadcrumbs?: () => Breadcrumb[];\n getBannerActions?: () => ActionOptions[];\n isBot?: boolean;\n lazyLoad?: boolean;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function StreamableCompanyDashboard(props: StreamableCompanyDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const initialEmptyWidgets = React.useMemo(() => {\n return widgets.reduce((acc: HashObject<boolean>, widget) => {\n acc[widget.id] = false;\n return acc;\n }, {});\n }, [widgets?.length]);\n \n const [ emptyWidgets, setEmptyWidgets ] = React.useState(initialEmptyWidgets);\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard),\n props.activeAudiences?.map(a => a.masterId)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const onSetIsEmpty = React.useCallback((widgetId: string, isEmpty: boolean) => {\n if (emptyWidgets[widgetId] === isEmpty)\n return;\n\n const newEmptyState = {\n ...emptyWidgets,\n [widgetId]: isEmpty\n };\n\n setEmptyWidgets(newEmptyState);\n }, [ emptyWidgets, widgets ]);\n\n function shouldShowEmptyState(): boolean {\n if (!widgets?.length)\n return true;\n\n return Object.values(emptyWidgets).every(state => !!state);\n }\n\n const showEmptyState = shouldShowEmptyState();\n\n return (\n <>\n {!!widgets.length &&\n <>\n {props.company\n ? (\n <BannerHeader\n heading={props.company.name}\n logo={props.company.logo}\n logoBgColour={props.company.metadata?.colour}\n alignLogoLeft={!!props.company.logo || !!props.company.cover}\n banner={props.company.banner}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n blockColourClass={getBgColorClass(props.company.name, BG_COLOUR_CLASS_NAMES)}\n actions={props.getBannerActions?.()}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n ) : <PartialBannerHeader />\n }\n\n <div className='d-flex flex-column row-gap-3 py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.getBreadcrumbs?.()} />\n\n <AudienceFilter\n audiences={props.audiences}\n activeAudiences={props.activeAudiences}\n disabled={props.isReadOnly}\n appLink={props.widgetAppLinks?.audience()}\n />\n </div>\n\n {props.company.description && (\n <div className='mb-5'>\n <ExpandableQuestion\n id={props.company?.id}\n question={getPhrase('aboutUs')}\n answer={LinkifyHelper.linkifyText(props.company.description)}\n isBot={props.isBot}\n analyticsOptions={{\n entity: EntityType.Company,\n location: LocationContext.Dashboard\n }}\n />\n </div>\n )}\n\n <div>\n {widgets.map(widget => {\n return (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.Company}\n dashboardTarget={DashboardTargetType.Company}\n key={widget.id}\n id={widget.id}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n setIsEmpty={onSetIsEmpty}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadOnly}\n lazyLoad={props.lazyLoad}\n contentType={CalendarEventContentType.Livestream}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n commonVideoProps={props.commonVideoProps}\n\n // TODO: Ideally we don't have to do this\n classification={null}\n seeMoreLink={undefined}\n hasTableOfContents={false}\n onClickRemoveItem={undefined}\n settings={{\n hasTopicDirectories: false\n }}\n badgeComponent={null}\n />\n );\n })}\n </div>\n </>\n }\n\n {showEmptyState && (\n <StreamableCompanyDashboardEmptyState\n dashboard={props.dashboard}\n isReadOnly={props.isReadOnly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}","import { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { StreamableCompanyDashboardProps } from 'libs/shared/apps/streamable-learning/components/company-dashboard/StreamableCompanyDashboard';\nimport { Company } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\nimport { StreamableAppLinks } from 'shared/utils/StreamableAppLinks';\n\nexport function getCompanyAppLinks(\n company: Company,\n params: HashObject\n): StreamableCompanyDashboardProps['widgetAppLinks'] {\n return {\n ...StreamableAppLinks,\n audience: () => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.COMPANY_DASHBOARD,\n args: [ company?.id, TextHelper.slugify(company?.name) ],\n params\n }),\n\n // TODO: Find a nice way around having to pass these in\n series: () => null,\n classificationLatestReleases: () => null,\n playlist: () => null,\n watchHistory: () => null,\n widgetWizard: () => null,\n searchSettings: () => null,\n searchHome: () => null\n };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { StreamableCompanyDashboard } from 'libs/shared/apps/streamable-learning/components/company-dashboard/StreamableCompanyDashboard';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Company, Config, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { StreamableConstants } from 'shared/constants/StreamableConstants';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\nimport { CompanyRequests } from 'shared/flight-requests/CompanyRequests';\nimport { PresentationRequests } from 'shared/flight-requests/PresentationRequests';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useFetchDashboard } from 'shared/hooks/useFetchDashboard';\nimport { SeoHelper } from 'shared/utils/StreamableSeoHelper';\n\nimport { getCompanyAppLinks } from 'apps/dashboard/views/company-dashboard/CompanyDashboardViewUtils';\n\nconst namespace = 'dashboard.companyDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n/**\n * NOTE: Ensure any keys added here are also added\n * to sanitizeDashboardParams below.\n */\nexport interface CompanyDashboardViewQueryParams {\n a?: string[];\n dashboardId?: string;\n}\n\nexport function sanitizeDashboardParams(queryParams: CompanyDashboardViewQueryParams): CompanyDashboardViewQueryParams {\n if (!queryParams)\n return {};\n\n return ObjectHelper.pick(queryParams, [ 'a', 'dashboardId' ]);\n}\n\n\ninterface CompanyDashboardViewProps {\n companyId: string;\n queryParams?: CompanyDashboardViewQueryParams;\n}\n\nexport function CompanyDashboardView(props: CompanyDashboardViewProps): JSX.Element {\n const { commonVideoProps } = useCommonVideoProps();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const company = Flight.useBasicFetch<Company>(CompanyRequests.company(props.companyId, { query: 'banner,logo' }));\n\n const presentation = Flight.useBasicFetch<Presentation>(\n PresentationRequests.streamablePresentation()\n );\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(presentation.data &&\n AudienceRequests.presentationAudiences(presentation.data.id, PresentationType.StreamableLearning));\n\n const activeAudiences = AudienceHelper.getActiveAudiencesFromParams(audiences.data, props.queryParams);\n\n const companyAppLinks = company.data && getCompanyAppLinks(company.data, props.queryParams);\n\n const {\n dashboard,\n isPreviewing\n } = useFetchDashboard({\n targetType: DashboardTargetType.Company,\n companyId: props.companyId,\n dashboardId: props.queryParams?.dashboardId\n });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: company.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n customAppLink: companyAppLinks?.audience()\n }),\n allowIndexing: true,\n product: StreamableConstants.PRODUCT_NAME\n }));\n\n function getBreadcrumbs(): Breadcrumb[] {\n if (!company.hasCompleted)\n return [];\n\n return [{\n name: getPhrase('discover'),\n appLink: {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }\n }, {\n name: company.data.name,\n active: true\n }];\n }\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n const hasLoaded = (\n config.hasCompleted &&\n dashboard.hasCompleted &&\n presentation.hasCompleted &&\n audiences.hasCompleted &&\n company.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <div className='position-relative px-4'>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='company' />}\n <StreamableCompanyDashboard\n company={company.data}\n dashboard={dashboard.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n presentation={presentation.data}\n widgetAppLinks={companyAppLinks}\n getBreadcrumbs={getBreadcrumbs}\n hasPermissions={() => false}\n hasLocalPermissions={() => false}\n audiences={audiences.data}\n activeAudiences={activeAudiences}\n emptyImageUrl={ImageUrls.EmptyStates.Topics.TOPIC}\n isBot={SeoHelper.isBot()}\n lazyLoad={!SeoHelper.isBot()}\n commonVideoProps={commonVideoProps}\n />\n </div>\n );\n}\n"],"names":["namespace","getPhrase","LanguageService","StreamableCompanyDashboardEmptyState","props","isArchived","_a","DashboardStatus","LanguageNamespaceContext","EmptyState","jsx","jsxs","Fragment","Text","Tooltip","_b","PlusSvg","StreamableCompanyDashboard","widgets","ArrayHelper","initialEmptyWidgets","React","acc","widget","emptyWidgets","setEmptyWidgets","getWidgetContentRequest","id","widgetTypeId","template","params","CuratedDashboardHelper","a","onSetIsEmpty","widgetId","isEmpty","newEmptyState","shouldShowEmptyState","state","showEmptyState","BannerHeader","getBgColorClass","BG_COLOUR_CLASS_NAMES","_c","PartialBannerHeader","Breadcrumbs","_d","AudienceFilter","_e","ExpandableQuestion","_f","LinkifyHelper","EntityType","LocationContext","WidgetContainerView","DashboardTargetType","CalendarEventContentType","getCompanyAppLinks","company","StreamableAppLinks","AppChannels","Actions","TextHelper","sanitizeDashboardParams","queryParams","ObjectHelper","CompanyDashboardView","commonVideoProps","useCommonVideoProps","config","Flight.useBasicFetch","ConfigRequests","CompanyRequests","presentation","PresentationRequests","audiences","AudienceRequests","PresentationType","activeAudiences","AudienceHelper","companyAppLinks","dashboard","isPreviewing","useFetchDashboard","useSetPageMetadata","PageMetadataHelper","SeoHelper","StreamableConstants","getBreadcrumbs","Core.ErrorHelper","NotFoundError","PreviewBanner","DashboardRequests","ImageUrls"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{j as a,d as C,z,F as H,l as L,T as d,m as V,D as B,N as Ne,Q as je,a5 as Se,aZ as ye,V as Le,c as me,R as x,aB as Ae,ac as ke,aW as Ce,o as q,aC as Te,p as Pe,q as we,a_ as De,r as Fe,P as Ie,w as Ue,x as _e,a0 as Be,v as Ee,a1 as Re,a2 as Ve,a6 as qe,aE as Oe,$ as Me,aK as se,G as ze,n as M,e as ie,W as A,X as k,M as He,a$ as ne,h as $e,k as Ke,i as Ge,aX as re}from"./app-DfSv_-O3.js";import{a as We}from"./DvDdiDQN.chunk.js";import{S as Ye}from"./Cib9o4sK.chunk.js";import{S as Je,a as Xe,J as Ze,u as Qe,b as ea,B as oe,c as aa,d as ta,e as sa}from"./CmAQo6rx.chunk.js";import{L as ia}from"./DKqLfL60.chunk.js";import{B as de}from"./DLJB8vZh.chunk.js";import{g as na,B as ra}from"./BBnDr_iy.chunk.js";import{C as oa,L as la}from"./B8qPNVvK.chunk.js";import{C as ca}from"./BG6_Ss4G.chunk.js";import{G as ma}from"./BwgQZkdi.chunk.js";import{T as da}from"./CZafJWQk.chunk.js";import{A as ua}from"./BwDmMfAz.chunk.js";import{C as ga}from"./CEmtkty-.chunk.js";import{u as ha}from"./BoNyBWaZ.chunk.js";import{S as xa}from"./B-_Kgmt0.chunk.js";import{a as pa,l as p,u as va,F as j}from"./BCQ0kOEO.chunk.js";import"./DP-ErTOD.chunk.js";import"./C-7yn3rc.chunk.js";import"./C36-3UWl.chunk.js";import"./CXslDtbb.chunk.js";import"./CW7x8M-z.chunk.js";import"./C35NlkUr.chunk.js";const fa="_logoContainer_vn3gg_1",ba={logoContainer:fa},Na="streamable.livestreamDetails";function ue(e){var h;function t(){return`${B.diffBetween(e.endTime,e.startTime,"minutes")}m`}function n(r){return je.convertUTCToTimezoneDate(r)}function l(r){return B.format(n(r),"h:mma")}function v(r){return B.format(n(r),"Do MMMM")}function m(r){var b;return(b=Ne[r])==null?void 0:b.name}function g(){var r;return(r=ua.getMergedPresentationAudienceString(e.audiences))==null?void 0:r.name}const f=na(e.companyName,ra);return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"d-flex align-items-center mb-2",children:[e.logoUrl&&a.jsx(C,{appLink:e.companyAppLink,children:a.jsx("div",{className:`${ba.logoContainer} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background me-2`,children:a.jsx(de,{data:z.createUrl(e.logoUrl,{size:H.Small}),alt:e.companyName,className:!e.logoBgColour&&f,imageStyle:{backgroundColor:e.logoBgColour},preload:!0})})}),a.jsxs("div",{className:"d-flex flex-column justify-content-between",children:[e.companyName&&a.jsx(C,{appLink:e.companyAppLink,className:"text-uppercase text-wrap d-block text-truncate mb-0",title:e.companyName,children:e.companyName}),a.jsx("h1",{className:"h4 mb-0",children:e.eventName})]})]}),a.jsxs("div",{className:"d-flex gap-2 mb-3",children:[!!((h=e.audiences)!=null&&h.length)&&a.jsx("div",{className:"rounded-pill border border-dark px-2",children:g()}),a.jsx("div",{className:"rounded-pill fw-semibold bg-dark text-white px-2",children:a.jsx("span",{className:"align-middle",children:t()})})]}),e.isPastLivestream&&a.jsxs("div",{className:"d-inline-block bg-light-green rounded-pill mb-3",children:[a.jsx(L,{svg:oa}),a.jsx("p",{className:"d-inline ms-1 mb-0",children:a.jsx(d,{namespace:Na,phrase:"pastEvent"})})]}),!e.isPastLivestream&&a.jsxs(a.Fragment,{children:[a.jsxs("p",{className:"mb-2",children:[a.jsx(L,{svg:da,size:V.Small}),a.jsx("span",{className:"ms-1",children:l(e.startTime)})]}),a.jsxs("p",{className:"mb-2",children:[a.jsx(L,{svg:ca,size:V.Small}),a.jsx("span",{className:"ms-1",children:v(e.startTime)})]}),a.jsxs("p",{className:"mb-3",children:[a.jsx(L,{svg:ma,size:V.Small}),a.jsx("span",{className:"ms-1",children:m(e.timezone)})]})]}),e.description&&a.jsx("p",{className:"mb-3 pre-wrap text-break",dangerouslySetInnerHTML:{__html:ia.linkifyText(e.description)}})]})}const ja={createBooking(e){return{publicUrl:"/api/integrations/api/v1/bookings",url:"{gateway}/v1/events/booking",key:"streamable:create:booking",type:Se.POST,data:e}}},Sa="_logo_1uhpx_1",ya={logo:Sa},le="streamable.bookingSuccess";function La(e){var t;return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:`${ya.logo} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background mx-auto mb-3`,children:a.jsx(de,{data:z.createUrl((t=e.livestream.company.logo)==null?void 0:t.url,{size:H.Small}),alt:e.livestream.company.name,preload:!0})}),a.jsxs("div",{className:"d-flex align-items-center justify-content-center mb-3 gap-1",children:[a.jsx(L,{svg:ye,className:"svg-container std text-success"}),a.jsx("h1",{className:"h3 mb-0 fw-semibold",children:a.jsx(d,{namespace:le,phrase:"booked"})})]}),a.jsx("div",{className:"my-3",children:a.jsx(ue,{companyId:e.livestream.company.id,companyName:e.livestream.company.name,eventName:e.livestream.name,audiences:e.livestream.audiences,startTime:e.livestream.startDateTime,endTime:e.livestream.endDateTime,timezone:e.livestream.timezone})}),a.jsx("p",{children:a.jsx(d,{namespace:le,phrase:"emailReminder"})})]})}const Aa="_image_e4ebg_1",ce={image:Aa},O="streamable.bookingError";function ka(e){return a.jsxs("div",{className:"d-flex flex-column justify-content-center",children:[a.jsx("div",{className:`${ce.logo} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background mx-auto mb-3`,children:a.jsx("img",{className:ce.image,src:Le.General.LOST_MESSAGE_BOTTLE})}),a.jsx("h3",{className:"text-center mb-3",children:a.jsx(d,{namespace:O,phrase:"heading"})}),a.jsx("p",{className:"text-center mb-3",children:a.jsx(d,{namespace:O,phrase:"description"})}),a.jsx("button",{className:"btn btn-dark",onClick:e.onTryAgain,children:a.jsx(d,{namespace:O,phrase:"buttonLabel"})})]})}function ge(e){return a.jsx("div",{className:`${e.className}`,style:e.coverImageUrl&&{backgroundImage:`url(${z._createUrl(e.coverImageUrl,{size:H.Large})})`}})}const he="streamable.livestreamView",i=me.encloseNamespace(he),xe=p.object({firstName:p.string().required(i("firstNameRequired")),lastName:p.string().required(i("lastNameRequired")),email:p.string().email(i("emailValid")).required(i("emailRequired")),attendees:p.string().required(i("attendeesRequired"))}),Ca=xe.concat(p.object({schoolOrDistrict:p.string().required(i("schoolOrDistrictRequired")),jobTitle:p.string().required(i("jobTitleRequired")),phoneNumber:p.string().required(i("phoneNumberRequired")).matches(/^[0-9]+$/,i("phoneNumberValid"))}));function Ta(e){var y,w,D,u,o,F,I,U,_;const t=va(),[n,l]=x.useState({}),[v,m]=x.useState(!1);function g(){t.setFieldValue("schoolOrDistrict",""),t.setFieldValue("country",""),t.setFieldValue("province",""),t.setFieldValue("prospectId",""),N()}function f(c){l({...n,...c}),g()}function h(){l({}),g()}function r(c){l({...n,...c}),t.setFieldValue("schoolOrDistrict",c.schoolName),t.setFieldValue("country",c.country),t.setFieldValue("province",c.province),t.setFieldValue("prospectId",c.prospectId),N()}function b(){l({...n,prospectId:void 0,schoolName:void 0,schoolPostCode:void 0}),g()}function P(c){m(!0),t.setFieldValue("schoolOrDistrict",c),N()}function N(){window.setTimeout(()=>t.validateForm(),0)}return a.jsxs(Ae,{children:[a.jsxs("div",{className:"row my-3",children:[a.jsx("div",{className:"col-12 col-sm-6",children:a.jsx(j,{label:i("firstName"),name:"firstName",placeholder:i("firstNamePlaceholder"),value:(y=t.values)==null?void 0:y.firstName,disabled:e.isAuthenticated,showRequiredStar:!e.isAuthenticated})}),a.jsx("div",{className:"col-12 col-sm-6",children:a.jsx(j,{label:i("lastName"),name:"lastName",placeholder:i("lastNamePlaceholder"),value:(w=t.values)==null?void 0:w.lastName,disabled:e.isAuthenticated,showRequiredStar:!e.isAuthenticated})}),a.jsx("div",{className:"col-12",children:a.jsx(j,{label:i("email"),name:"email",placeholder:i("emailPlaceholder"),value:(D=t.values)==null?void 0:D.email,disabled:e.isAuthenticated&&!!e.emailAddress,showRequiredStar:!e.isAuthenticated||!e.emailAddress})}),!e.isAuthenticated&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"col-12",children:v?a.jsx(j,{label:i("schoolOrDistrict"),name:"schoolOrDistrict",value:(u=t.values)==null?void 0:u.schoolOrDistrict,showRequiredStar:!0,placeholder:i("schoolOrDistrictPlaceholder"),autoFocus:!0}):a.jsxs(a.Fragment,{children:[a.jsx(Je,{data:n,setData:f,clearData:h,labelClassName:"form-label",geoLocation:{countryCode:"US"},googleMapsApiKey:e.googleMapsApiKey,required:!0,hideOnBlur:!0}),a.jsx(Xe,{data:n,setData:r,clearData:b,disabled:!n.schoolLocality,searchUrl:e.searchProspectsUrl,onClickNoSuggestions:P,required:!0,placeholder:!n.schoolLocality&&i("schoolPlaceholder"),hideOnBlur:!0})]})}),a.jsx("div",{className:"col-12",children:a.jsx(Ze,{id:"job-title",error:((o=t.touched)==null?void 0:o.jobTitle)&&((F=t.errors)==null?void 0:F.jobTitle),countryCode:ke.US,initialValue:(I=t.values)==null?void 0:I.jobTitle,onChange:c=>t.setFieldValue("jobTitle",c,!1),labelClassName:"form-label",isTertiary:!1,required:!0})})]}),a.jsx("div",{className:"col-12 col-sm-6 col-xl-4",children:a.jsx(j,{type:"number",label:i("attendees"),name:"attendees",placeholder:i("attendeesPlaceholder"),min:1,value:(U=t.values)==null?void 0:U.attendees,showRequiredStar:!0})}),!e.isAuthenticated&&a.jsx("div",{className:"col",children:a.jsx(j,{label:i("phoneNumber"),name:"phoneNumber",placeholder:i("phoneNumberPlaceholder"),value:(_=t.values)==null?void 0:_.phoneNumber,showRequiredStar:!0})})]}),a.jsx(Ce,{type:"submit",className:"w-100",variant:"dark",showSpinner:e.showSpinner,disabled:!t.isValid,children:a.jsx(d,{namespace:he,phrase:"book"})})]})}function Pa(e){return a.jsx(pa,{initialValues:e.initialValues,validationSchema:e.isAuthenticated?xe:Ca,validateOnMount:!0,onSubmit:e.onSubmit,children:a.jsx(Ta,{emailAddress:e.emailAddress,isAuthenticated:e.isAuthenticated,showSpinner:e.showSpinner,googleMapsApiKey:e.googleMapsApiKey,searchProspectsUrl:e.searchProspectsUrl})})}const wa="_noRecording_uwnqe_1",Da="_coverImage_uwnqe_4",Fa="_popup_uwnqe_10",Ia="_page_uwnqe_15",T={noRecording:wa,coverImage:Da,popup:Fa,page:Ia},S="streamable.livestreamView",Ua=me.encloseNamespace(S);function pe(e){var h,r;const t=M.getHref(M.getCurrentAppLink()),n=t!=="/"?{redirectUrl:t}:{},l=e.origin==="newsletter",v=!e.isAuthenticated&&!l&&!e.livestream.recording,m=!e.isPastLivestream&&!e.formStage&&(e.isAuthenticated&&!e.isStudent||l),g={application:k.DEFAULT,action:A.Default.CHALLENGE,params:n},f={application:k.DASHBOARD,action:A.Dashboard.COMPANY_DASHBOARD,args:[e.livestream.company.id,ie.slugify(e.livestream.company.name)]};return a.jsxs(a.Fragment,{children:[!e.success&&!e.error&&a.jsxs(a.Fragment,{children:[a.jsx(ue,{logoUrl:(h=e.livestream.company.logo)==null?void 0:h.url,logoBgColour:(r=e.livestream.company.metadata)==null?void 0:r.colour,companyId:e.livestream.company.id,companyName:e.livestream.company.name,eventName:e.livestream.name,audiences:e.livestream.audiences,startTime:e.livestream.startDateTime,endTime:e.livestream.endDateTime,timezone:e.livestream.timezone,description:!e.formStage&&e.livestream.description,isPastLivestream:e.isPastLivestream,companyAppLink:f}),e.formStage&&a.jsx(Pa,{emailAddress:e.emailAddress,initialValues:e.initialValues,isAuthenticated:e.isAuthenticated,showSpinner:e.showSpinner,onSubmit:e.onSubmit,googleMapsApiKey:e.googleMapsApiKey,searchProspectsUrl:e.searchProspectsUrl}),m&&a.jsx("button",{className:"btn btn-dark w-100",onClick:()=>e.setFormStage(!0),children:a.jsx(d,{namespace:S,phrase:"book"})}),e.isPastLivestream&&!e.livestream.recording&&a.jsx("div",{className:`${T.noRecording} p-2 rounded`,children:a.jsx(d,{namespace:S,phrase:"noRecording"})}),e.livestream.recording&&a.jsx(C,{appLink:{application:k.VIDEOS,action:A.Videos.PLAY_VIDEO,args:[e.livestream.recording.id,ie.slugify(e.livestream.recording.name)]},children:a.jsx("button",{className:"btn btn-outline-dark w-100",children:a.jsx(d,{namespace:S,phrase:"recording"})})}),v&&a.jsxs(a.Fragment,{children:[a.jsx(C,{className:"mt-3 btn btn-dark w-100",appLink:g,children:a.jsx(d,{namespace:S,phrase:"signInButton"})}),a.jsx(C,{className:"d-flex justify-content-center align-items-center mt-3 text-info",appLink:{application:k.DEFAULT,action:A.Default.CONTACT_US_POPUP},children:a.jsx(d,{namespace:S,phrase:"contactUsLink"})})]})]}),e.success&&a.jsx(La,{livestream:e.livestream}),e.error&&a.jsx(ka,{onTryAgain:e.onTryAgain})]})}function _a(e){var n;function t(){var m;e.closePopup(),Ye.preventScrollTop();const l=re.getCurrentRoute().appLink;l.application===k.LIVESTREAMS&&l.action===A.Livestreams.LIVESTREAM&&M.trigger((m=re.getPreviousRoute())==null?void 0:m.appLink)}return a.jsxs(ze,{size:"xl",bodyClassName:"rounded-3 overflow-hidden p-0",closePopup:t,children:[a.jsx("button",{className:"btn-close position-absolute top-0 end-0 p-3",onClick:t}),a.jsxs("div",{className:"row g-0",children:[a.jsx("div",{className:"col-12 col-lg-6",children:a.jsx(ge,{className:`${T.coverImage} ${T.popup}`,coverImageUrl:(n=e.livestream.company.cover)==null?void 0:n.url})}),a.jsx("div",{className:"col-12 col-lg p-4 m-lg-2",children:a.jsx(pe,{...e})})]})]})}function Ba(e){var t;return a.jsxs("div",{className:"row g-0 px-3",children:[a.jsx("div",{className:"col-12 col-md-6 col-lg-5",children:a.jsx(ge,{className:`${T.coverImage} ${T.page} rounded`,coverImageUrl:(t=e.livestream.company.cover)==null?void 0:t.url})}),a.jsx("div",{className:"col-12 col-md px-md-3 pt-2 pt-md-0",children:a.jsx(pe,{...e})})]})}function rt(e){var G,W,Y,J,X,Z;const t=q(Me.config()),n=Te(),l=Qe(),[v,m]=x.useState(!1),[g,f]=x.useState(!1),[h,r]=x.useState(!1),[b,P]=x.useState(!1),[N,y]=x.useState({firstName:"",lastName:"",email:"",attendees:"",schoolOrDistrict:"",jobTitle:"",phoneNumber:"",country:"",province:"",prospectId:""}),{createOrUpdateProfile:w}=ea(),[D]=Pe(De,null,{storage:we.SessionStorage}),u=q(Oe.currentUser()),o=q(la.livestream(e.id)),{hasPermissions:F}=Fe(),I=F(Ie.StudentExperience),U=Ue.getDefaultMetadata({title:(G=o.data)==null?void 0:G.name,description:(W=o.data)==null?void 0:W.description,phraseContext:{phraseHandler:Ua,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:xa.getCanonicalLink({customAppLink:Be.livestream(o.data)}),allowIndexing:!0,product:_e.PRODUCT_NAME});Ee({...U,_isPopupUp:!e.fromPageLoad}),ha(o),x.useEffect(()=>{var s;!o.data||((s=o.data)==null?void 0:s.status)===ga.Published||Re.throw(new Ve)},[(Y=o.data)==null?void 0:Y.status]),x.useEffect(()=>{var s;(s=u.data)!=null&&s.isAuthenticated&&y({...N,firstName:u.data.givenName,lastName:u.data.familyName,email:u.data.email})},[(J=u.data)==null?void 0:J.isAuthenticated]);async function _(s){var Q,ee,ae;try{if(P(!0),y(s),await n(ja.createBooking({eventId:o.data.id,eventType:"Livestream",firstName:s.firstName,lastName:s.lastName,email:s.email,attendees:s.attendees,status:1})),$(se.Complete),!((Q=u.data)!=null&&Q.isAuthenticated)){const E=await n(oe.checkEmail(s.email));let te;if(s.prospectId){const R=await n(oe.prospectLookups(s.prospectId));te=(ee=R==null?void 0:R.find(be=>be.type==="crm_id"))==null?void 0:ee.externalId}w({email:s.email,firstName:s.firstName,lastName:s.lastName,phone:s.phoneNumber,countryCode:s.country});const fe={email:s.email,firstName:s.firstName,lastName:s.lastName,phone:s.phoneNumber,custom:{accountAddress:s!=null&&s.province?{countryCode:s==null?void 0:s.country,province:aa.parseProvince((s==null?void 0:s.province)||"")}:void 0,accountName:s.schoolOrDistrict,jobTitle:s.jobTitle,syncToCrm:(ae=E==null?void 0:E.users)!=null&&ae.length?void 0:!0,crmId:te||void 0}};l.logFormSubmission({eventType:We.StreamableFormEvent.LivestreamBookingFormSubmit,source:sa.LivestreamBooking,topic:ta.LivestreamBooking,user:fe,productType:"sl"})}f(!0)}catch{r(!0),m(!1)}finally{P(!1)}}function c(){r(!1),m(!0)}function ve(){m(!0),$(se.Start)}function $(s){He.logUserAction({id:o.data.id,name:o.data.name},{entity:Ge.Livestream,actionType:Ke.Submit,location:$e.LivestreamBookingForm,descriptor:e.fromPageLoad?ne.FullPage:ne.Popup,workflowPhase:s})}if(!(o.hasCompleted&&t.hasCompleted))return a.jsx(a.Fragment,{});const K={livestream:o.data,formStage:v,initialValues:N,isAuthenticated:(X=u.data)==null?void 0:X.isAuthenticated,isStudent:I,success:g,error:h,isPastLivestream:B.isBefore(o.data.endDateTime,new Date),showSpinner:b,origin:D,onSubmit:_,onTryAgain:c,setFormStage:ve,googleMapsApiKey:t.data.googleMapsApiKey,searchProspectsUrl:qe.safeUrlConcat(t.data.gatewayApiUrl,"/v1/search/prospects"),emailAddress:(Z=u.data)==null?void 0:Z.email};return e.fromPageLoad?a.jsx(Ba,{...K}):a.jsx(_a,{...K,closePopup:e.closePopup})}export{rt as LivestreamView};
2
- //# sourceMappingURL=DkSHJqHu.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DkSHJqHu.chunk.js","sources":["../../../../libs/shared/src/apps/streamable-learning/components/livestream-details/LivestreamDetails.tsx","../../../../libs/shared/src/apps/streamable-learning/flight-requests/BookingRequests.ts","../../src/apps/livestreams/components/livestream-booking-success/LivestreamBookingSuccess.tsx","../../src/apps/livestreams/components/livestream-boooking-error/LivestreamBookingError.tsx","../../src/apps/livestreams/components/livestream-cover-image/LivestreamCoverImage.tsx","../../src/apps/livestreams/components/livestream-form/LivestreamForm.tsx","../../src/apps/livestreams/views/LivestreamView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { Timezone, TIMEZONES_US } from 'libs/shared/apps/streamable-learning/constants/Timezones';\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { CalendarCheckSvg } from 'libs/shared/images/svg/objects/CalendarCheckSvg';\nimport { CalendarSvg } from 'libs/shared/images/svg/objects/CalendarSvg';\nimport { GlobeSvg } from 'libs/shared/images/svg/objects/GlobeSvg';\nimport { TimerSvg } from 'libs/shared/images/svg/status/TimerSvg';\nimport { Audience, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './livestream-details.module.scss';\n\nconst namespace = 'streamable.livestreamDetails';\n\ninterface LivestreamDetailsProps {\n logoUrl?: string;\n logoBgColour?: string;\n companyId?: string;\n companyName?: string;\n companyAppLink?: Core.AppLink;\n eventName: string;\n audiences?: Audience[];\n startTime: string;\n endTime: string;\n timezone: Timezone;\n description?: string;\n isPastLivestream?: boolean;\n}\n\nexport function LivestreamDetails(props: LivestreamDetailsProps) {\n function getDuration() {\n return `${DateHelper.diffBetween(props.endTime, props.startTime, 'minutes')}m`;\n }\n\n function getTimezoneDateTime(dateTime: string): Date {\n return TimezoneHelper.convertUTCToTimezoneDate(dateTime);\n }\n\n function getTime(time: string): string {\n return DateHelper.format(getTimezoneDateTime(time), 'h:mma');\n }\n\n function getDate(date: string): string {\n return DateHelper.format(getTimezoneDateTime(date), 'Do MMMM');\n }\n\n function getDisplayTimezone(timezone: Timezone): string {\n return TIMEZONES_US[timezone]?.name;\n }\n\n function getMergedAudienceName(): string {\n return AudienceHelper.getMergedPresentationAudienceString(props.audiences as PresentationAudience[])?.name;\n }\n\n const logoFallbackBgClassName = getBgColorClass(props.companyName, BG_COLOUR_CLASS_NAMES);\n\n return (\n <>\n <div className='d-flex align-items-center mb-2'>\n {props.logoUrl && (\n <AppLink\n appLink={props.companyAppLink}\n >\n <div className={`${styles.logoContainer} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background me-2`}>\n <BaseImage\n data={ImageHelper.createUrl(props.logoUrl, { size: ImageSize.Small })}\n alt={props.companyName}\n className={!props.logoBgColour && logoFallbackBgClassName}\n imageStyle={{\n backgroundColor: props.logoBgColour\n }}\n preload\n />\n </div>\n </AppLink>\n\n )}\n <div className='d-flex flex-column justify-content-between'>\n {props.companyName &&\n <AppLink\n appLink={props.companyAppLink}\n className='text-uppercase text-wrap d-block text-truncate mb-0'\n title={props.companyName}\n >\n {props.companyName}\n </AppLink>\n }\n <h1 className='h4 mb-0'>{props.eventName}</h1>\n </div>\n </div>\n\n <div className='d-flex gap-2 mb-3'>\n {!!props.audiences?.length && (\n <div className='rounded-pill border border-dark px-2'>\n {getMergedAudienceName()}\n </div>\n )}\n <div className='rounded-pill fw-semibold bg-dark text-white px-2'>\n <span className='align-middle'>{getDuration()}</span>\n </div>\n </div>\n\n {props.isPastLivestream && (\n <div className='d-inline-block bg-light-green rounded-pill mb-3'>\n <SvgContainer svg={CalendarCheckSvg} />\n <p className='d-inline ms-1 mb-0'><Text namespace={namespace} phrase='pastEvent' /></p>\n </div>\n )}\n\n {!props.isPastLivestream && (\n <>\n <p className='mb-2'>\n <SvgContainer svg={TimerSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{getTime(props.startTime)}</span>\n </p>\n <p className='mb-2'>\n <SvgContainer svg={CalendarSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{getDate(props.startTime)}</span>\n </p>\n <p className='mb-3'>\n <SvgContainer svg={GlobeSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{getDisplayTimezone(props.timezone)}</span>\n </p>\n </>\n )}\n\n {props.description && <p className='mb-3 pre-wrap text-break' dangerouslySetInnerHTML={{ __html: LinkifyHelper.linkifyText(props.description) }} />}\n </>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { CreateBookingRequest } from 'libs/shared/apps/streamable-learning/requests/CreateBookingRequest';\n\nexport const BookingRequests = {\n createBooking(data: CreateBookingRequest): Flight.PublicRequest {\n return {\n publicUrl: '/api/integrations/api/v1/bookings',\n url: '{gateway}/v1/events/booking',\n key: `streamable:create:booking`,\n type: HttpVerbs.POST,\n data\n };\n }\n};","import React from 'react';\n\nimport { LivestreamDetails } from 'libs/shared/apps/streamable-learning/components/livestream-details/LivestreamDetails';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { CheckCircleSvg } from 'libs/shared/images/svg/status/CheckCircleSvg';\nimport { Livestream } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './livestream-booking-success.module.scss';\n\nconst namespace = 'streamable.bookingSuccess';\n\ninterface LivestreamBookingSuccessProps {\n livestream: Livestream;\n}\n\nexport function LivestreamBookingSuccess(props: LivestreamBookingSuccessProps) {\n return (\n <>\n <div\n className={`${styles.logo} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background mx-auto mb-3`}\n >\n <BaseImage\n data={ImageHelper.createUrl(props.livestream.company.logo?.url, { size: ImageSize.Small })}\n alt={props.livestream.company.name}\n preload\n />\n </div>\n <div className='d-flex align-items-center justify-content-center mb-3 gap-1'>\n <SvgContainer svg={CheckCircleSvg} className='svg-container std text-success' />\n <h1 className='h3 mb-0 fw-semibold'><Text namespace={namespace} phrase='booked' /></h1>\n </div>\n <div className='my-3'>\n <LivestreamDetails\n companyId={props.livestream.company.id}\n companyName={props.livestream.company.name}\n eventName={props.livestream.name}\n audiences={props.livestream.audiences}\n startTime={props.livestream.startDateTime}\n endTime={props.livestream.endDateTime}\n timezone={props.livestream.timezone}\n />\n </div>\n <p><Text namespace={namespace} phrase='emailReminder' /></p>\n </>\n );\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './livestream-booking-error.module.scss';\n\nconst namespace = 'streamable.bookingError';\n\ninterface LivestreamBookingErrorProps {\n onTryAgain: () => void\n}\n\nexport function LivestreamBookingError(props: LivestreamBookingErrorProps) {\n return (\n <div className='d-flex flex-column justify-content-center'>\n <div\n className={`${styles.logo} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background mx-auto mb-3`}\n >\n <img\n className={styles.image}\n src={ImageUrls.General.LOST_MESSAGE_BOTTLE}\n />\n </div>\n <h3 className='text-center mb-3'><Text namespace={namespace} phrase='heading' /></h3>\n <p className='text-center mb-3'><Text namespace={namespace} phrase='description' /></p>\n <button className='btn btn-dark' onClick={props.onTryAgain}><Text namespace={namespace} phrase='buttonLabel' /></button>\n </div>\n );\n}","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\ninterface LivestreamCoverImageProps {\n coverImageUrl: string;\n className?: string;\n}\n\nexport function LivestreamCoverImage(props: LivestreamCoverImageProps) {\n return (\n <div\n className={`${props.className}`}\n style={props.coverImageUrl && { backgroundImage: `url(${ImageHelper._createUrl(props.coverImageUrl, { size: ImageSize.Large })})` }}\n />\n );\n}","import React from 'react';\nimport { Form } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { JobTitleInput } from 'libs/shared/apps/sign-up/components/steps/add-to-braze-step-item/JobTitleInput';\nimport { SearchLocalityInput } from 'libs/shared/apps/sign-up/components/steps/search-school-step-item/SearchLocalityInput';\nimport { SearchSchoolInput } from 'libs/shared/apps/sign-up/components/steps/search-school-step-item/SearchSchoolInput';\nimport { SearchSchoolData } from 'libs/shared/apps/sign-up/interfaces/SearchSchoolData';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper, useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\n\nconst namespace = 'streamable.livestreamView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst baseValidationSchema = Yup.object({\n firstName: Yup.string().required(getPhrase('firstNameRequired')),\n lastName: Yup.string().required(getPhrase('lastNameRequired')),\n email: Yup.string().email(getPhrase('emailValid')).required(getPhrase('emailRequired')),\n attendees: Yup.string().required(getPhrase('attendeesRequired'))\n});\n\nconst guestValidationSchema = baseValidationSchema.concat(Yup.object({\n schoolOrDistrict: Yup.string().required(getPhrase('schoolOrDistrictRequired')),\n jobTitle: Yup.string().required(getPhrase('jobTitleRequired')),\n phoneNumber: Yup.string().required(getPhrase('phoneNumberRequired')).matches(/^[0-9]+$/, getPhrase('phoneNumberValid'))\n}));\n\ninterface LivestreamFormFieldsProps {\n isAuthenticated: boolean;\n showSpinner: boolean;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n emailAddress: string;\n}\n\nfunction LivestreamFormFields(props: LivestreamFormFieldsProps) {\n const formikProps = useFormikContextWrapper<LivestreamBookingFormValues>();\n\n const [ searchSchoolData, setSearchSchoolData ] = React.useState<SearchSchoolData>({});\n const [ cantFindSchool, setCantFindSchool ] = React.useState<boolean>(false);\n\n function clearFormikSchoolData() {\n formikProps.setFieldValue('schoolOrDistrict', '');\n formikProps.setFieldValue('country', '');\n formikProps.setFieldValue('province', '');\n formikProps.setFieldValue('prospectId', '');\n triggerValidation();\n }\n\n function setLocalityData(data: SearchSchoolData): void {\n setSearchSchoolData({ ...searchSchoolData, ...data });\n clearFormikSchoolData();\n }\n\n function clearLocalityData(): void {\n setSearchSchoolData({});\n clearFormikSchoolData();\n }\n\n function setSchoolData(data: SearchSchoolData): void {\n setSearchSchoolData({ ...searchSchoolData, ...data });\n\n formikProps.setFieldValue('schoolOrDistrict', data.schoolName);\n formikProps.setFieldValue('country', data.country);\n formikProps.setFieldValue('province', data.province);\n formikProps.setFieldValue('prospectId', data.prospectId);\n\n triggerValidation();\n }\n\n function clearSchooldata(): void {\n setSearchSchoolData({\n ...searchSchoolData,\n prospectId: undefined,\n schoolName: undefined,\n schoolPostCode: undefined\n });\n clearFormikSchoolData();\n }\n\n function onClickNoSuggestions(name: string) {\n setCantFindSchool(true);\n\n formikProps.setFieldValue('schoolOrDistrict', name);\n\n triggerValidation();\n }\n\n function triggerValidation() {\n // For whatever reason, forcing the form the validate needs to happen in a setTimeout to work\n // I genuinely have no idea why - Sha\n window.setTimeout(() => formikProps.validateForm(), 0);\n }\n\n return (\n <Form>\n <div className='row my-3'>\n <div className='col-12 col-sm-6'>\n <FormField\n label={getPhrase('firstName')}\n name='firstName'\n placeholder={getPhrase('firstNamePlaceholder')}\n value={formikProps.values?.firstName}\n disabled={props.isAuthenticated}\n showRequiredStar={!props.isAuthenticated}\n />\n </div>\n <div className='col-12 col-sm-6'>\n <FormField\n label={getPhrase('lastName')}\n name='lastName'\n placeholder={getPhrase('lastNamePlaceholder')}\n value={formikProps.values?.lastName}\n disabled={props.isAuthenticated}\n showRequiredStar={!props.isAuthenticated}\n />\n </div>\n <div className='col-12'>\n <FormField\n label={getPhrase('email')}\n name='email'\n placeholder={getPhrase('emailPlaceholder')}\n value={formikProps.values?.email}\n disabled={props.isAuthenticated && !!props.emailAddress}\n showRequiredStar={!props.isAuthenticated || !props.emailAddress}\n />\n </div>\n {!props.isAuthenticated &&\n <>\n <div className='col-12'>\n {!cantFindSchool ?\n <>\n <SearchLocalityInput\n data={searchSchoolData}\n setData={setLocalityData}\n clearData={clearLocalityData}\n labelClassName='form-label'\n geoLocation={{ countryCode: 'US' }}\n googleMapsApiKey={props.googleMapsApiKey}\n required\n hideOnBlur\n />\n <SearchSchoolInput\n data={searchSchoolData}\n setData={setSchoolData}\n clearData={clearSchooldata}\n disabled={!searchSchoolData.schoolLocality}\n searchUrl={props.searchProspectsUrl}\n onClickNoSuggestions={onClickNoSuggestions}\n required\n placeholder={!searchSchoolData.schoolLocality && getPhrase('schoolPlaceholder')}\n hideOnBlur\n />\n </> :\n <FormField\n label={getPhrase('schoolOrDistrict')}\n name='schoolOrDistrict'\n value={formikProps.values?.schoolOrDistrict}\n showRequiredStar={true}\n placeholder={getPhrase('schoolOrDistrictPlaceholder')}\n autoFocus\n />\n }\n </div>\n <div className='col-12'>\n <JobTitleInput\n id='job-title'\n error={formikProps.touched?.jobTitle && formikProps.errors?.jobTitle}\n countryCode={CountryCode.US}\n initialValue={formikProps.values?.jobTitle}\n onChange={jobTitle => formikProps.setFieldValue('jobTitle', jobTitle, false)}\n labelClassName='form-label'\n isTertiary={false}\n required\n />\n </div>\n </>\n }\n <div className='col-12 col-sm-6 col-xl-4'>\n <FormField\n type='number'\n label={getPhrase('attendees')}\n name='attendees'\n placeholder={getPhrase('attendeesPlaceholder')}\n min={1}\n value={formikProps.values?.attendees}\n showRequiredStar\n />\n </div>\n {!props.isAuthenticated && (\n <div className='col'>\n <FormField\n label={getPhrase('phoneNumber')}\n name='phoneNumber'\n placeholder={getPhrase('phoneNumberPlaceholder')}\n value={formikProps.values?.phoneNumber}\n showRequiredStar\n />\n </div>\n )}\n </div>\n <SpinnerButton type='submit' className='w-100' variant='dark' showSpinner={props.showSpinner} disabled={!formikProps.isValid} >\n <Text namespace={namespace} phrase='book' />\n </SpinnerButton>\n </Form>\n );\n}\n\nexport interface LivestreamBookingFormValues {\n firstName: string;\n lastName: string;\n email: string;\n attendees: string;\n schoolOrDistrict: string;\n jobTitle: string;\n phoneNumber: string;\n country: string;\n province: string;\n prospectId: string;\n}\n\ninterface LivestreamFormProps {\n initialValues: LivestreamBookingFormValues;\n isAuthenticated: boolean;\n showSpinner: boolean;\n onSubmit: (values: LivestreamBookingFormValues) => void;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n emailAddress: string;\n}\n\nexport function LivestreamForm(props: LivestreamFormProps) {\n return (\n <FormWrapper<LivestreamBookingFormValues>\n initialValues={props.initialValues}\n validationSchema={props.isAuthenticated ? baseValidationSchema : guestValidationSchema}\n validateOnMount={true}\n onSubmit={props.onSubmit}>\n <LivestreamFormFields\n emailAddress={props.emailAddress}\n isAuthenticated={props.isAuthenticated}\n showSpinner={props.showSpinner}\n googleMapsApiKey={props.googleMapsApiKey}\n searchProspectsUrl={props.searchProspectsUrl}\n />\n </FormWrapper>\n );\n}","import React from 'react';\nimport { type BrazeUser, StreamableFormEvent } from '@clickview/braze-client';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LivestreamBookingDescriptor, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ProspectLookup } from 'libs/shared/apps/sign-up/enums/ProspectLookup';\nimport { BrazeCheckEmailResponse, BrazeHelper } from 'libs/shared/apps/sign-up/helpers/BrazeHelper';\nimport { LivestreamDetails } from 'libs/shared/apps/streamable-learning/components/livestream-details/LivestreamDetails';\nimport { BookingRequests } from 'libs/shared/apps/streamable-learning/flight-requests/BookingRequests';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurationStatusString } from 'libs/shared/enums/CurationStatus';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { BrazeRequests } from 'libs/shared/flight-requests/BrazeRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProfileApiClient } from 'libs/shared/hooks/UseProfileApiClient';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Livestream } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { StreamableConstants } from 'shared/constants/StreamableConstants';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\nimport { BrazeSource } from 'shared/enums/BrazeSource';\nimport { BrazeTopic } from 'shared/enums/BrazeTopic';\nimport { PUBLIC_ORIGIN_VIEW_MODEL_KEY, PublicOriginViewModel } from 'shared/filters/OriginFilter';\nimport { LivestreamRequests } from 'shared/flight-requests/LivestreamRequests';\nimport { useStreamableBrazeClientService } from 'shared/hooks/useStreamableBrazeClientService';\nimport { StreamableAppLinks } from 'shared/utils/StreamableAppLinks';\nimport { SeoHelper } from 'shared/utils/StreamableSeoHelper';\n\nimport { LivestreamBookingSuccess } from 'apps/livestreams/components/livestream-booking-success/LivestreamBookingSuccess';\nimport { LivestreamBookingError } from 'apps/livestreams/components/livestream-boooking-error/LivestreamBookingError';\nimport { LivestreamCoverImage } from 'apps/livestreams/components/livestream-cover-image/LivestreamCoverImage';\nimport { LivestreamBookingFormValues, LivestreamForm } from 'apps/livestreams/components/livestream-form/LivestreamForm';\n\nimport styles from './livestream.module.scss';\n\nconst namespace = 'streamable.livestreamView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LivestreamBookingProps {\n livestream: Livestream;\n formStage: boolean;\n initialValues: LivestreamBookingFormValues;\n isAuthenticated: boolean;\n isStudent: boolean;\n success: boolean;\n error: boolean;\n isPastLivestream: boolean;\n showSpinner: boolean;\n origin?: PublicOriginViewModel;\n onSubmit: (values: LivestreamBookingFormValues) => void;\n onTryAgain: () => void;\n setFormStage: React.Dispatch<React.SetStateAction<boolean>>\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n emailAddress: string;\n}\n\nfunction LivestreamContent(props: LivestreamBookingProps) {\n const redirectUrl = Core.AppLinkHelper.getHref(Core.AppLinkHelper.getCurrentAppLink());\n const signInParams = redirectUrl !== '/' ? { redirectUrl } : {};\n const originNewsletter = props.origin === 'newsletter';\n const showSignInLink = !props.isAuthenticated && !originNewsletter && !props.livestream.recording;\n const showBook =\n !props.isPastLivestream &&\n !props.formStage &&\n ((props.isAuthenticated && !props.isStudent) || originNewsletter);\n\n const signInLink = {\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params: signInParams\n };\n\n const companyAppLink = {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.COMPANY_DASHBOARD,\n args: [ props.livestream.company.id, TextHelper.slugify(props.livestream.company.name) ]\n };\n\n return (\n <>\n {!props.success && !props.error && (\n <>\n <LivestreamDetails\n logoUrl={props.livestream.company.logo?.url}\n logoBgColour={props.livestream.company.metadata?.colour}\n companyId={props.livestream.company.id}\n companyName={props.livestream.company.name}\n eventName={props.livestream.name}\n audiences={props.livestream.audiences}\n startTime={props.livestream.startDateTime}\n endTime={props.livestream.endDateTime}\n timezone={props.livestream.timezone}\n description={!props.formStage && props.livestream.description}\n isPastLivestream={props.isPastLivestream}\n companyAppLink={companyAppLink}\n />\n {props.formStage && (\n <LivestreamForm\n emailAddress={props.emailAddress}\n initialValues={props.initialValues}\n isAuthenticated={props.isAuthenticated}\n showSpinner={props.showSpinner}\n onSubmit={props.onSubmit}\n googleMapsApiKey={props.googleMapsApiKey}\n searchProspectsUrl={props.searchProspectsUrl}\n />\n )}\n {showBook && (\n <button\n className='btn btn-dark w-100'\n onClick={() => props.setFormStage(true)}\n >\n <Text namespace={namespace} phrase='book' />\n </button>\n )}\n {props.isPastLivestream && !props.livestream.recording &&\n <div className={`${styles.noRecording} p-2 rounded`}>\n <Text namespace={namespace} phrase='noRecording' />\n </div>\n }\n {props.livestream.recording &&\n <AppLink\n appLink={{\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ props.livestream.recording.id, TextHelper.slugify(props.livestream.recording.name) ]\n }}>\n <button className='btn btn-outline-dark w-100'><Text namespace={namespace} phrase='recording' /></button>\n </AppLink>\n }\n {showSignInLink &&\n <>\n <AppLink\n className='mt-3 btn btn-dark w-100'\n appLink={signInLink}\n >\n <Text namespace={namespace} phrase='signInButton' />\n </AppLink>\n <AppLink\n className='d-flex justify-content-center align-items-center mt-3 text-info'\n appLink={{\n application: AppChannels.DEFAULT,\n action: Actions.Default.CONTACT_US_POPUP\n }}\n >\n <Text namespace={namespace} phrase='contactUsLink' />\n </AppLink>\n </>\n }\n </>\n )}\n {props.success && (\n <LivestreamBookingSuccess livestream={props.livestream} />\n )}\n {props.error && (\n <LivestreamBookingError onTryAgain={props.onTryAgain} />\n )}\n </>\n );\n}\n\ninterface LivestreamPopupProps extends LivestreamBookingProps {\n closePopup: () => void;\n}\n\nfunction LivestreamPopup(props: LivestreamPopupProps) {\n function onClose() {\n props.closePopup();\n\n ScrollHelper.preventScrollTop();\n\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n const isLivestreamAppLink =\n currentAppLink.application === AppChannels.LIVESTREAMS &&\n currentAppLink.action === Actions.Livestreams.LIVESTREAM;\n if (isLivestreamAppLink)\n Core.AppLinkHelper.trigger(ContextService.getPreviousRoute()?.appLink);\n }\n\n return (\n <Popup\n size='xl'\n bodyClassName='rounded-3 overflow-hidden p-0'\n closePopup={onClose}\n >\n <button className='btn-close position-absolute top-0 end-0 p-3' onClick={onClose} />\n\n <div className={`row g-0`}>\n <div className='col-12 col-lg-6'>\n <LivestreamCoverImage className={`${styles.coverImage} ${styles.popup}`} coverImageUrl={props.livestream.company.cover?.url} />\n </div>\n <div className={`col-12 col-lg p-4 m-lg-2`}>\n <LivestreamContent {...props} />\n </div>\n </div>\n </Popup>\n );\n}\n\ninterface LivestreamPageProps extends LivestreamBookingProps { }\n\nfunction LivestreamPage(props: LivestreamPageProps) {\n return (\n <div className={`row g-0 px-3`}>\n <div className='col-12 col-md-6 col-lg-5'>\n <LivestreamCoverImage className={`${styles.coverImage} ${styles.page} rounded`} coverImageUrl={props.livestream.company.cover?.url} />\n </div>\n <div className={`col-12 col-md px-md-3 pt-2 pt-md-0`}>\n <LivestreamContent {...props} />\n </div>\n </div>\n );\n}\n\ninterface LivestreamViewProps extends PopupProps {\n id: string;\n fromPageLoad: boolean;\n}\n\nexport function LivestreamView(props: LivestreamViewProps) {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const fetchAsync = useGetFetchAsync();\n const braze = useStreamableBrazeClientService();\n const [ formStage, _setFormStage ] = React.useState(false);\n const [ success, setSuccess ] = React.useState(false);\n const [ error, setError ] = React.useState(false);\n const [ submitting, setSubmitting ] = React.useState(false);\n const [ initialValues, setInitialValues ] = React.useState<LivestreamBookingFormValues>({\n firstName: '',\n lastName: '',\n email: '',\n attendees: '',\n schoolOrDistrict: '',\n jobTitle: '',\n phoneNumber: '',\n country: '',\n province: '',\n prospectId: ''\n });\n\n const { createOrUpdateProfile } = useProfileApiClient();\n\n const [origin] = useViewModel<PublicOriginViewModel>(\n PUBLIC_ORIGIN_VIEW_MODEL_KEY,\n null,\n { storage: StorageType.SessionStorage }\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const livestream = Flight.useBasicFetch<Livestream>(LivestreamRequests.livestream(props.id));\n\n const { hasPermissions } = usePermissions();\n const isStudent = hasPermissions(PermissionName.StudentExperience);\n\n const pageMetadata = PageMetadataHelper.getDefaultMetadata({\n title: livestream.data?.name,\n description: livestream.data?.description,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n customAppLink: StreamableAppLinks.livestream(livestream.data)\n }),\n allowIndexing: true,\n product: StreamableConstants.PRODUCT_NAME\n });\n\n useSetPageMetadata({\n ...pageMetadata,\n _isPopupUp: !props.fromPageLoad\n });\n\n useHandleObjectError(livestream);\n\n React.useEffect(() => {\n if (!livestream.data || livestream.data?.status === CurationStatusString.Published) return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [livestream.data?.status]);\n\n React.useEffect(() => {\n if (!currentUser.data?.isAuthenticated) return;\n\n setInitialValues({\n ...initialValues,\n firstName: currentUser.data.givenName,\n lastName: currentUser.data.familyName,\n email: currentUser.data.email\n });\n }, [currentUser.data?.isAuthenticated]);\n\n async function onSubmit(values: LivestreamBookingFormValues) {\n try {\n setSubmitting(true);\n setInitialValues(values);\n\n await fetchAsync(BookingRequests.createBooking({\n eventId: livestream.data.id,\n eventType: 'Livestream',\n firstName: values.firstName,\n lastName: values.lastName,\n email: values.email,\n attendees: values.attendees,\n status: 1\n }));\n\n logEvent(WorkflowPhase.Complete);\n\n if (!currentUser.data?.isAuthenticated) {\n const checkEmail = await fetchAsync<BrazeCheckEmailResponse>(BrazeRequests.checkEmail(values.email));\n\n let crmId: string;\n if (values.prospectId) {\n const prospectLookups = await fetchAsync<ProspectLookup[]>(BrazeRequests.prospectLookups(values.prospectId));\n crmId = prospectLookups?.find(l => l.type === 'crm_id')?.externalId;\n }\n\n createOrUpdateProfile({\n email: values.email,\n firstName: values.firstName,\n lastName: values.lastName,\n phone: values.phoneNumber,\n countryCode: values.country\n });\n\n const brazeUser: BrazeUser = {\n email: values.email,\n firstName: values.firstName,\n lastName: values.lastName,\n phone: values.phoneNumber,\n custom: {\n accountAddress: values?.province ? {\n countryCode: values?.country,\n province: BrazeHelper.parseProvince(values?.province || '')\n } : undefined,\n accountName: values.schoolOrDistrict,\n jobTitle: values.jobTitle,\n syncToCrm: checkEmail?.users?.length ? undefined : true,\n crmId: crmId || undefined\n }\n };\n\n braze.logFormSubmission({\n eventType: StreamableFormEvent.LivestreamBookingFormSubmit,\n source: BrazeSource.LivestreamBooking,\n topic: BrazeTopic.LivestreamBooking,\n user: brazeUser,\n productType: 'sl'\n });\n }\n\n setSuccess(true);\n } catch {\n setError(true);\n _setFormStage(false);\n } finally {\n setSubmitting(false);\n }\n }\n\n function onTryAgain() {\n setError(false);\n _setFormStage(true);\n }\n\n function setFormStage() {\n _setFormStage(true);\n logEvent(WorkflowPhase.Start);\n }\n\n function logEvent(workflowPhase: WorkflowPhase) {\n AnalyticsHelper.logUserAction({\n id: livestream.data.id,\n name: livestream.data.name\n }, {\n entity: EntityType.Livestream,\n actionType: UserAction.Submit,\n location: LocationContext.LivestreamBookingForm,\n descriptor: props.fromPageLoad ?\n LivestreamBookingDescriptor.FullPage :\n LivestreamBookingDescriptor.Popup,\n workflowPhase\n });\n }\n\n const hasLoaded = (\n livestream.hasCompleted &&\n config.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n const livestreamBookingProps: LivestreamBookingProps = {\n livestream: livestream.data,\n formStage,\n initialValues,\n isAuthenticated: currentUser.data?.isAuthenticated,\n isStudent,\n success,\n error,\n isPastLivestream: DateHelper.isBefore(livestream.data.endDateTime, new Date()),\n showSpinner: submitting,\n origin,\n onSubmit,\n onTryAgain,\n setFormStage,\n googleMapsApiKey: config.data.googleMapsApiKey,\n searchProspectsUrl: UrlHelper.safeUrlConcat(config.data.gatewayApiUrl, '/v1/search/prospects'),\n emailAddress: currentUser.data?.email\n };\n\n if (props.fromPageLoad) {\n return (\n <LivestreamPage {...livestreamBookingProps} />\n );\n }\n\n return <LivestreamPopup {...livestreamBookingProps} closePopup={props.closePopup} />;\n}"],"names":["namespace","LivestreamDetails","props","getDuration","DateHelper","getTimezoneDateTime","dateTime","TimezoneHelper","getTime","time","getDate","date","getDisplayTimezone","timezone","_a","TIMEZONES_US","getMergedAudienceName","AudienceHelper","logoFallbackBgClassName","getBgColorClass","BG_COLOUR_CLASS_NAMES","jsxs","Fragment","jsx","AppLink","styles","BaseImage","ImageHelper","ImageSize","SvgContainer","CalendarCheckSvg","Text","TimerSvg","SvgContainerSize","CalendarSvg","GlobeSvg","LinkifyHelper","BookingRequests","data","HttpVerbs","LivestreamBookingSuccess","CheckCircleSvg","LivestreamBookingError","ImageUrls","LivestreamCoverImage","getPhrase","LanguageService","baseValidationSchema","Yup.object","Yup.string","guestValidationSchema","LivestreamFormFields","formikProps","useFormikContextWrapper","searchSchoolData","setSearchSchoolData","React","cantFindSchool","setCantFindSchool","clearFormikSchoolData","triggerValidation","setLocalityData","clearLocalityData","setSchoolData","clearSchooldata","onClickNoSuggestions","name","Form","FormField","_b","_c","_d","SearchLocalityInput","SearchSchoolInput","JobTitleInput","_e","_f","CountryCode","_g","jobTitle","_h","_i","SpinnerButton","LivestreamForm","FormWrapper","LivestreamContent","redirectUrl","Core.AppLinkHelper","signInParams","originNewsletter","showSignInLink","showBook","signInLink","AppChannels","Actions","companyAppLink","TextHelper","LivestreamPopup","onClose","ScrollHelper","currentAppLink","ContextService","Popup","LivestreamPage","LivestreamView","config","Flight.useBasicFetch","ConfigRequests","fetchAsync","useGetFetchAsync","braze","useStreamableBrazeClientService","formStage","_setFormStage","success","setSuccess","error","setError","submitting","setSubmitting","initialValues","setInitialValues","createOrUpdateProfile","useProfileApiClient","origin","useViewModel","PUBLIC_ORIGIN_VIEW_MODEL_KEY","StorageType","currentUser","UserRequests","livestream","LivestreamRequests","hasPermissions","usePermissions","isStudent","PermissionName","pageMetadata","PageMetadataHelper","SeoHelper","StreamableAppLinks","StreamableConstants","useSetPageMetadata","useHandleObjectError","CurationStatusString","Core.ErrorHelper","NotFoundError","onSubmit","values","logEvent","WorkflowPhase","checkEmail","BrazeRequests","crmId","prospectLookups","l","brazeUser","BrazeHelper","StreamableFormEvent","BrazeSource","BrazeTopic","onTryAgain","setFormStage","workflowPhase","AnalyticsHelper","EntityType","UserAction","LocationContext","LivestreamBookingDescriptor","livestreamBookingProps","UrlHelper"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{m as p,as as u,j as n,Y as S}from"./app-DfSv_-O3.js";const g="d-inline-block svg-container",x="span";function C(a){const{children:t,className:c=g,tagName:r=x,size:l=p.Standard,onClick:o,title:s,tooltipPlacement:m="right"}=a,e=r,i={className:`${c} svg-container ${l}`,onClick:u.isFunction(o)?o:null};return s?n.jsx(S,{title:s,placement:m,children:n.jsx(e,{...i,children:t})}):n.jsx(e,{...i,children:t})}export{C as S};
2
- //# sourceMappingURL=Dpq10cRY.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Dpq10cRY.chunk.js","sources":["../../../../libs/shared/src/components/svg-container/SvgContainer2.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nimport { SvgContainerSize } from './SvgContainer'; // TODO: Move this enum in here\n\nconst DEFAULT_CLASS_NAME = 'd-inline-block svg-container';\nconst DEFAULT_TAG_NAME = 'span';\n\ninterface SvgContainerProps2 {\n size?: SvgContainerSize;\n className?: string;\n tagName?: React.ElementType;\n onClick?: (...args: any[]) => void;\n title?: string;\n tooltipPlacement?: Placement;\n}\n\n/**\n * @deprecated please use SvgContainer instead. This component will be removed in the future\n * whenever someone gets around to it (that could be you!)\n */\nexport function SvgContainer2(props: React.PropsWithChildren<SvgContainerProps2>): React.ReactElement {\n const {\n children,\n className = DEFAULT_CLASS_NAME,\n tagName = DEFAULT_TAG_NAME,\n size = SvgContainerSize.Standard,\n onClick,\n title,\n tooltipPlacement = 'right'\n } = props;\n\n const Container = tagName;\n\n const containerProps = {\n className: `${className} svg-container ${size}`,\n onClick: FunctionHelper.isFunction(onClick) ? onClick : null\n };\n\n if (!title)\n return <Container {...containerProps}>{children}</Container>;\n\n return (\n <Tooltip title={title} placement={tooltipPlacement}>\n <Container {...containerProps}>\n {children}\n </Container>\n </Tooltip>\n );\n}"],"names":["DEFAULT_CLASS_NAME","DEFAULT_TAG_NAME","SvgContainer2","props","children","className","tagName","size","SvgContainerSize","onClick","title","tooltipPlacement","Container","containerProps","FunctionHelper","jsx","Tooltip"],"mappings":"4DASA,MAAMA,EAAqB,+BACrBC,EAAmB,OAelB,SAASC,EAAcC,EAAwE,CACpG,KAAM,CACJ,SAAAC,EACA,UAAAC,EAAYL,EACZ,QAAAM,EAAUL,EACV,KAAAM,EAAOC,EAAiB,SACxB,QAAAC,EACA,MAAAC,EACA,iBAAAC,EAAmB,OAAA,EACjBR,EAEES,EAAYN,EAEZO,EAAiB,CACrB,UAAW,GAAGR,CAAS,kBAAkBE,CAAI,GAC7C,QAASO,EAAe,WAAWL,CAAO,EAAIA,EAAU,IAAA,EAG1D,OAAKC,EAIHK,EAAAA,IAACC,EAAA,CAAQ,MAAAN,EAAc,UAAWC,EAChC,eAACC,EAAA,CAAW,GAAGC,EACZ,SAAAT,CAAA,CACH,CAAA,CACF,EAPOW,EAAAA,IAACH,EAAA,CAAW,GAAGC,EAAiB,SAAAT,CAAA,CAAS,CASpD"}
@@ -1,2 +0,0 @@
1
- import{dq as o,cR as n}from"./app-DfSv_-O3.js";const p={},u=Object.freeze(Object.defineProperty({__proto__:null,default:p},Symbol.toStringTag,{value:"Module"})),i=o(u);function a(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&n(t,e)}function r(t){return r=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},r(t)}export{r as _,a,i as r};
2
- //# sourceMappingURL=DrsDxQ8i.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DrsDxQ8i.chunk.js","sources":["../../__vite-browser-external","../../../../../node_modules/@babel/runtime/helpers/esm/inherits.js","../../../../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"],"sourcesContent":["export default {}","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };"],"names":["__viteBrowserExternal","_inherits","setPrototypeOf","_getPrototypeOf","t"],"mappings":"+CAAA,MAAAA,EAAe,CAAA,gHCCf,SAASC,EAAU,EAAG,EAAG,CACvB,GAAkB,OAAO,GAArB,YAAmC,IAAT,KAAY,MAAM,IAAI,UAAU,oDAAoD,EAClH,EAAE,UAAY,OAAO,OAAO,GAAK,EAAE,UAAW,CAC5C,YAAa,CACX,MAAO,EACP,SAAU,GACV,aAAc,EACpB,CACA,CAAG,EAAG,OAAO,eAAe,EAAG,YAAa,CACxC,SAAU,EACd,CAAG,EAAG,GAAKC,EAAe,EAAG,CAAC,CAC9B,CCZA,SAASC,EAAgB,EAAG,CAC1B,OAAOA,EAAkB,OAAO,eAAiB,OAAO,eAAe,KAAI,EAAK,SAAUC,EAAG,CAC3F,OAAOA,EAAE,WAAa,OAAO,eAAeA,CAAC,CAC/C,EAAGD,EAAgB,CAAC,CACtB","x_google_ignoreList":[1,2]}
@@ -1,3 +0,0 @@
1
- import{j as a,d as v,z as b,F as S,b4 as w,m as T,av as $,T as y,ai as M,b7 as m,k as r,i as g,h as O,cD as H}from"./app-DfSv_-O3.js";import{I as D,C as F}from"./XarUQJMp.chunk.js";import{I as P,a as U}from"./CbFIe2Y6.chunk.js";import{g as B,B as A}from"./BBnDr_iy.chunk.js";import{M as E}from"./B32lL5ga.chunk.js";import{C as V}from"./nay4aGaa.chunk.js";const z="_appLink_1diix_1",R="_name_1diix_4",W="_selectedMask_1diix_7",G="_widgetItem_1diix_15",q="_hasThemeColor_1diix_19",J="_text_1diix_26",K="_imagePanel_1diix_29",Q="_partialLargeImage_1diix_29",X="_selected_1diix_7",Y="_image_1diix_29",Z="_dragHandle_1diix_55",p="_large_1diix_59",ee="_comingSoonPanel_1diix_69",ae="_newVideos_1diix_75",te="_draggingItem_1diix_94",ie="_partialLargeFallback_1diix_102",ne="_partialIcon_1diix_106",n={appLink:z,name:R,selectedMask:W,widgetItem:G,hasThemeColor:q,text:J,imagePanel:K,partialLargeImage:Q,selected:X,image:Y,dragHandle:Z,large:p,comingSoonPanel:ee,newVideos:ae,draggingItem:te,partialLargeFallback:ie,partialIcon:ne},L="shared.subjectWidgetItem",le=({name:e,multiline:t,noUnderLine:i})=>{let s=`${n.comingSoonPanel}
2
- d-flex flex-column align-items-center justify-content-center px-3 text-center`,l="";return t?l+=` ${n.clamped} clamp-2`:(s+=" text-nowrap",l+=" text-truncate"),a.jsxs("div",{className:s,children:[a.jsx("small",{className:"text-secondary",children:a.jsx(y,{namespace:L,phrase:"comingSoon"})}),a.jsx("p",{className:`${i?"":n.name} h6`,children:a.jsx("span",{className:l,children:e})})]})},se=({name:e,multiline:t,subtitle:i,noUnderLine:s,newVideosCount:l})=>{let d="px-3 d-flex flex-column justify-content-center",c=`${s?"":n.name} h6`;return t?c+=` ${l?"clamp-2":"clamp-3"} text-start`:(d+=" text-nowrap text-truncate",c+=" text-truncate mb-0"),a.jsxs("div",{className:d,children:[i&&a.jsx("div",{className:`text-secondary clamp-1 ${n.text}`,children:i}),a.jsx("div",{className:c,title:e,children:e}),!!l&&a.jsx("div",{className:`fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ${n.newVideos}`,children:a.jsx(y,{namespace:L,phrase:"newVideos",options:{smartCount:l}})})]})};o.defaultProps={showFallbackBackgroundColour:!0};function o(e){var c;const t=b.createUrl(e.coverUrl,{size:e.isLarge?S.Medium:S.Small});let i;E.isClassification(e.data)&&(i=e.data);const s={name:e.data.name,multiline:e.isLarge||e.multiline,subtitle:e.subtitle,noUnderLine:e.highlightOnHover,newVideosCount:e.showNewVideosCount?(c=i==null?void 0:i.externalMetadata)==null?void 0:c.childDashboardNewVideoCount:0},l={backgroundImage:t?`url('${t}')`:null,backgroundColor:e.coverBgColor},d=B(e.data.name,A);return a.jsxs("div",{className:`${e.themeColor?n.hasThemeColor:"border"} d-flex position-relative ${e.className} ${n.widgetItem} ${e.isSelected?"border-success border-2":""} ${e.highlightOnHover&&!e.themeColor?"bg-light-blue-hover":""}`,style:e.themeColor?{"--themeColor":e.themeColor}:{},id:`${e.data.id}-${w.getRandomInt()}`,children:[e.isSelected&&a.jsx("div",{className:`${n.selectedMask} border-2`}),a.jsxs("div",{className:`${n.imagePanel} ${e.isLarge?n.large:""}`,children:[e.isSelected&&!e.hideCheckmark&&a.jsx("div",{className:n.selected,children:a.jsx(D,{svg:F,svgSize:T.Large,textVariant:"white",variant:"green"})}),t&&a.jsx("div",{className:$(n.image,e.imageClassName,!e.coverBgColor&&e.showFallbackBackgroundColour&&d),style:l}),!e.hideFallback&&a.jsx(P,{type:U.Subject,extraClasses:e.isLarge?n.large:""})]}),e.isComingSoon?a.jsx(le,{...s}):a.jsx(se,{...s})]})}function ce(e){var i;const t=e.getChildAppLink?e.getChildAppLink(e.data):null;return a.jsx(a.Fragment,{children:t?a.jsx(v,{className:n.appLink,appLink:t,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,appLinkOptions:(i=e.getChildAppLinkOptions)==null?void 0:i.call(e),children:a.jsx(o,{...e})}):a.jsx(o,{...e})})}function de(e,t){var s;if((t==null?void 0:t.length)>=H.MULTI_PRESENTATION_THRESHOLD)return(s=t==null?void 0:t.find(l=>l.id===e))==null?void 0:s.name}function oe(e){var d,c,x,h,C,_,u,k,N,j,I,f;const t=((d=e.data)==null?void 0:d.status)===V.ComingSoon,i=de(e.data.presentationId,e==null?void 0:e.availablePresentations),s={...e.analyticsData,id:((c=e.analyticsData)==null?void 0:c.id)||((x=e.data)==null?void 0:x.id),name:(h=e.data)==null?void 0:h.name,presentationId:((C=e.analyticsData)==null?void 0:C.presentationId)||e.data.presentationId,comingSoon:!!t},l={location:O.ClassificationListItem,entity:g.Classification,...e.analyticsOptions,actionType:r.Click,descriptor:m.Cover};return a.jsx(ce,{...e,analyticsData:s,analyticsOptions:l,coverUrl:(_=e.data.cover)==null?void 0:_.url,coverBgColor:(k=(u=e.data)==null?void 0:u.metadata)==null?void 0:k.backgroundColor,subtitle:((N=e.getSubtitle)==null?void 0:N.call(e,e.data))||i,isComingSoon:t,themeColor:(j=e.shouldHighlight)!=null&&j.call(e,e.data)?((f=(I=e.data)==null?void 0:I.metadata)==null?void 0:f.backgroundColor)??"":""})}const _e=M.memo(oe);r.Click,g.UserSetting,m.Tile;r.Click,g.Url,m.Tile;export{ce as C,_e as M,n as s};
3
- //# sourceMappingURL=DrsVPpSl.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DrsVPpSl.chunk.js","sources":["../../../../libs/shared/src/components/widgets/items/subject-widget-item/CoverPill.tsx","../../../../libs/shared/src/components/widgets/items/subject-widget-item/SubjectWidgetItem.tsx","../../../../libs/shared/src/components/widgets/items/subject-widget-item/EditSubjectsWidgetLink.tsx","../../../../libs/shared/src/components/widgets/items/subject-widget-item/AllSubjectsWidgetLink.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { CheckSvg } from 'libs/shared/images/svg/status/CheckSvg';\nimport { BaseObject, Classification, Presentation } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport styles from './cover-pill.module.scss';\n\nconst namespace = 'shared.subjectWidgetItem';\n\ninterface NamePanelProps {\n name: string;\n multiline?: boolean;\n subtitle?: string;\n noUnderLine?: boolean;\n newVideosCount?: number;\n}\n\nconst ComingSoonNamePanel = ({ name, multiline, noUnderLine }: NamePanelProps) => {\n let wrapperClassName = `${styles.comingSoonPanel} \n d-flex flex-column align-items-center justify-content-center px-3 text-center`;\n\n let textClassName = '';\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap';\n textClassName += ' text-truncate';\n } else {\n textClassName += ` ${styles.clamped} clamp-2`;\n }\n\n return (\n <div className={wrapperClassName}>\n <small className='text-secondary'><Text namespace={namespace} phrase='comingSoon' /></small>\n <p className={`${noUnderLine ? '' : styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle, noUnderLine, newVideosCount }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${noUnderLine ? '' : styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0';\n } else {\n textClassName += ` ${newVideosCount ? 'clamp-2' : 'clamp-3'} text-start`;\n }\n\n return (\n <div className={wrapperClassName}>\n {subtitle && <div className={`text-secondary clamp-1 ${styles.text}`}>{subtitle}</div>}\n <div className={textClassName} title={name}>{name}</div>\n {!!newVideosCount && (\n <div className={`fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ${styles.newVideos}`}>\n <Text namespace={namespace} phrase='newVideos' options={{ smartCount: newVideosCount }} />\n </div>\n )}\n </div>\n );\n};\n\nexport interface CoverPillWidgetItemProps<T extends BaseObject> {\n data: T;\n getChildAppLink?: (data: T) => Core.AppLink;\n getChildAppLinkOptions?: () => Core.AppLinkOptions;\n isLarge?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n availablePresentations?: Presentation[];\n getSubtitle?: (data: T) => string;\n multiline?: boolean;\n // set to true it will highlight on hover and also remove the hover text underline\n highlightOnHover?: boolean;\n showNewVideosCount?: boolean;\n shouldHighlight?: (data: T) => boolean;\n showFallbackBackgroundColour?: boolean;\n}\n\nCoverPillWidgetContent.defaultProps = {\n showFallbackBackgroundColour: true\n};\n\ninterface CoverPillWidgetContentProps<T> extends CoverPillWidgetItemProps<T> {\n coverUrl?: string;\n coverBgColor?: string;\n subtitle?: string;\n isComingSoon?: boolean;\n className?: string;\n imageClassName?: string;\n isSelected?: boolean;\n hideFallback?: boolean;\n hideCheckmark?: boolean;\n themeColor?: string;\n}\n\nexport function CoverPillWidgetContent(props: CoverPillWidgetContentProps<BaseObject>): JSX.Element {\n const coverUrl = ImageHelper.createUrl(props.coverUrl, { size: props.isLarge ? ImageSize.Medium : ImageSize.Small });\n\n let classification: Classification | undefined = undefined;\n if (MasterTypeHelper.isClassification(props.data)) {\n classification = props.data;\n }\n\n const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle,\n noUnderLine: props.highlightOnHover,\n newVideosCount: props.showNewVideosCount ? classification?.externalMetadata?.childDashboardNewVideoCount : 0\n };\n\n const coverStyle: React.CSSProperties = {\n backgroundImage: coverUrl ? `url('${coverUrl}')` : null,\n backgroundColor: props.coverBgColor\n };\n\n const fallbackCoverBgClassName = getBgColorClass(props.data.name, BG_COLOUR_CLASS_NAMES);\n\n return (\n <div\n className={`${props.themeColor ? styles.hasThemeColor : 'border'} d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''} ${props.highlightOnHover && !props.themeColor ? 'bg-light-blue-hover' : ''}`}\n style={props.themeColor ? { '--themeColor': props.themeColor } as unknown as React.CSSProperties : {}}\n id={`${props.data.id}-${RandomHelper.getRandomInt()}`}\n >\n {props.isSelected && (\n <div className={`${styles.selectedMask} border-2`} />\n )}\n\n <div className={`${styles.imagePanel} ${props.isLarge ? styles.large : ''}`}>\n {props.isSelected && !props.hideCheckmark && (\n <div className={styles.selected}>\n <IconCircle svg={CheckSvg} svgSize={SvgContainerSize.Large} textVariant='white' variant='green' />\n </div>\n )}\n\n {coverUrl &&\n <div\n className={classNames(\n styles.image,\n props.imageClassName,\n !props.coverBgColor && props.showFallbackBackgroundColour && fallbackCoverBgClassName\n )}\n style={coverStyle}\n />\n }\n {!props.hideFallback && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={props.isLarge ? styles.large : ''}\n />\n )}\n </div>\n\n {props.isComingSoon\n ? <ComingSoonNamePanel {...childProps} />\n : <NormalNamePanel {...childProps} />\n }\n </div>\n );\n}\n\nexport function CoverPillWidgetContentWrapper(props: CoverPillWidgetContentProps<BaseObject>) {\n const appLink = props.getChildAppLink ? props.getChildAppLink(props.data) : null;\n\n return (\n <>\n {appLink ? (\n <AppLink\n className={styles.appLink}\n appLink={appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n appLinkOptions={props.getChildAppLinkOptions?.()}\n >\n <CoverPillWidgetContent {...props} />\n </AppLink>\n ) : (<CoverPillWidgetContent {...props} />)\n }\n </>\n );\n}","import * as React from 'react';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { CoverPillWidgetContentWrapper, CoverPillWidgetItemProps } from 'libs/shared/components/widgets/items/subject-widget-item/CoverPill';\nimport { TopicsConstants } from 'libs/shared/constants/TopicsConstants';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\n\nfunction usePresentationName(presentationId: string, availablePresentations: Presentation[]): string {\n const showPresentationName = availablePresentations?.length >= TopicsConstants.MULTI_PRESENTATION_THRESHOLD;\n\n if (!showPresentationName) {\n return undefined;\n }\n\n return availablePresentations?.find(p => p.id === presentationId)?.name;\n}\n\nfunction SubjectWidgetItem(props: CoverPillWidgetItemProps<Classification>): JSX.Element {\n const isComingSoon = props.data?.status === ClassificationStatus.ComingSoon;\n const presentationName = usePresentationName(props.data.presentationId, props?.availablePresentations);\n\n const analyticsData = {\n ...props.analyticsData,\n id: props.analyticsData?.id || props.data?.id,\n name: props.data?.name,\n presentationId: props.analyticsData?.presentationId || props.data.presentationId,\n comingSoon: !!isComingSoon\n };\n\n const analyticsOptions = {\n location: LocationContext.ClassificationListItem,\n entity: EntityType.Classification,\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Cover\n };\n\n return (\n <CoverPillWidgetContentWrapper\n {...props}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n coverUrl={props.data.cover?.url}\n coverBgColor={props.data?.metadata?.backgroundColor}\n subtitle={props.getSubtitle?.(props.data) || presentationName}\n isComingSoon={isComingSoon}\n themeColor={props.shouldHighlight?.(props.data) ? props.data?.metadata?.backgroundColor ?? '' : ''}\n />\n );\n}\n\nconst Memoized = React.memo(SubjectWidgetItem);\n\nexport { Memoized as SubjectWidgetItem };","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { EditSvg } from 'libs/shared/images/svg/actions/EditSvg';\n\nimport styles from './cover-pill.module.scss';\n\ninterface EditSubjectsWidgetLinkProps {\n appLink: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.UserSetting,\n descriptor: ClickDescriptor.Tile\n};\n\nexport function EditSubjectsWidgetLink(props: EditSubjectsWidgetLinkProps): JSX.Element {\n const className =\n `${styles.editSubjectsItem} d-flex position-relative px-3 justify-content-center align-items-center`;\n\n return (\n <AppLink\n appLink={props.appLink}\n className='text-decoration-none'\n analyticsData={{ ...props.analyticsData, type: 'subject-preference' }}\n analyticsOptions={ { ...props.analyticsOptions, ...analyticsOptions }}\n >\n <div className={className}>\n <SvgContainer svg={EditSvg} className='me-2 align-middle d-inline-block svg-container' />\n <p className='h6 align-middle text-truncate'><Text namespace='shared.subjectWidgetItem' phrase='edit' /></p>\n </div>\n </AppLink>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { ClickViewLogoInverted } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './cover-pill.module.scss';\n\ninterface AllSubjectsWidgetLinkProps {\n appLink: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n descriptor: ClickDescriptor.Tile\n};\n\nexport function AllSubjectsWidgetLink(props: AllSubjectsWidgetLinkProps): JSX.Element {\n const className =\n `${styles.allSubjectsItem}\n d-flex flex-column position-relative px-2\n align-items-center justify-content-center text-nowrap bg-navy`;\n\n return (\n <AppLink\n appLink={props.appLink}\n className='text-decoration-none'\n analyticsData={{ ...props.analyticsData, type: 'subject-all' }}\n analyticsOptions={ { ...props.analyticsOptions, ...analyticsOptions }}\n >\n <div className={className}>\n <div className={styles.logoContainer}>\n <ClickViewLogoInverted />\n </div>\n <p className='h6 pt-2 px-3 mb-0'><Text namespace='shared.subjectWidgetItem' phrase='all' /></p>\n </div>\n </AppLink>\n );\n}\n"],"names":["namespace","ComingSoonNamePanel","name","multiline","noUnderLine","wrapperClassName","styles","textClassName","jsxs","jsx","Text","NormalNamePanel","subtitle","newVideosCount","CoverPillWidgetContent","props","coverUrl","ImageHelper","ImageSize","classification","MasterTypeHelper","childProps","_a","coverStyle","fallbackCoverBgClassName","getBgColorClass","BG_COLOUR_CLASS_NAMES","RandomHelper","IconCircle","CheckSvg","SvgContainerSize","classNames","ImageFallback","ImageFallbackType","CoverPillWidgetContentWrapper","appLink","AppLink","usePresentationName","presentationId","availablePresentations","TopicsConstants","p","SubjectWidgetItem","isComingSoon","ClassificationStatus","presentationName","analyticsData","_b","_c","_d","_e","analyticsOptions","LocationContext","EntityType","UserAction","ClickDescriptor","_f","_h","_g","_i","_j","_l","_k","Memoized","React.memo"],"mappings":"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"}