@clickview/streamable-learning 0.48.0-rc.0 → 0.48.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/.vite/manifest.json +646 -646
  2. package/dist/bundles.json +1 -1
  3. package/dist/css/DU3tPCD_.chunk.css +12 -0
  4. package/dist/en.json +1 -1
  5. package/dist/scripts/{m9QbGES0.chunk.js → ACTQklJQ.chunk.js} +2 -2
  6. package/dist/scripts/{m9QbGES0.chunk.js.map → ACTQklJQ.chunk.js.map} +1 -1
  7. package/dist/scripts/{B7if0Lk52.chunk.js → B-qOny0I2.chunk.js} +2 -2
  8. package/dist/scripts/{B7if0Lk52.chunk.js.map → B-qOny0I2.chunk.js.map} +1 -1
  9. package/dist/scripts/{BSjm_rCE.chunk.js → B5jBIPaP.chunk.js} +2 -2
  10. package/dist/scripts/{BSjm_rCE.chunk.js.map → B5jBIPaP.chunk.js.map} +1 -1
  11. package/dist/scripts/{CPkKuTSK2.chunk.js → B703cBe72.chunk.js} +2 -2
  12. package/dist/scripts/{CPkKuTSK2.chunk.js.map → B703cBe72.chunk.js.map} +1 -1
  13. package/dist/scripts/{DNNNPLMp.chunk.js → B7iwtSij.chunk.js} +2 -2
  14. package/dist/scripts/{DNNNPLMp.chunk.js.map → B7iwtSij.chunk.js.map} +1 -1
  15. package/dist/scripts/{CXNve4Wq2.chunk.js → BCBfXCYM2.chunk.js} +2 -2
  16. package/dist/scripts/{CXNve4Wq2.chunk.js.map → BCBfXCYM2.chunk.js.map} +1 -1
  17. package/dist/scripts/{CoYNU7We2.chunk.js → BKnxYKDu2.chunk.js} +2 -2
  18. package/dist/scripts/{CoYNU7We2.chunk.js.map → BKnxYKDu2.chunk.js.map} +1 -1
  19. package/dist/scripts/{BoxedFO8.chunk.js → BLrjbrp8.chunk.js} +2 -2
  20. package/dist/scripts/{BoxedFO8.chunk.js.map → BLrjbrp8.chunk.js.map} +1 -1
  21. package/dist/scripts/{CibcLNJP2.chunk.js → BTYwcYPL2.chunk.js} +2 -2
  22. package/dist/scripts/{CibcLNJP2.chunk.js.map → BTYwcYPL2.chunk.js.map} +1 -1
  23. package/dist/scripts/{CwI-7tep2.chunk.js → BXJetawx2.chunk.js} +2 -2
  24. package/dist/scripts/{CwI-7tep2.chunk.js.map → BXJetawx2.chunk.js.map} +1 -1
  25. package/dist/scripts/{BV74ZRR22.chunk.js → BZOcEcTA2.chunk.js} +2 -2
  26. package/dist/scripts/{BV74ZRR22.chunk.js.map → BZOcEcTA2.chunk.js.map} +1 -1
  27. package/dist/scripts/{DxsW8K0n2.chunk.js → BaMNOAYj2.chunk.js} +2 -2
  28. package/dist/scripts/{DxsW8K0n2.chunk.js.map → BaMNOAYj2.chunk.js.map} +1 -1
  29. package/dist/scripts/{DrDQfaFN2.chunk.js → BihZ4r0z2.chunk.js} +3 -3
  30. package/dist/scripts/{DrDQfaFN2.chunk.js.map → BihZ4r0z2.chunk.js.map} +1 -1
  31. package/dist/scripts/{CK6c6uHp2.chunk.js → BpgHKWR52.chunk.js} +2 -2
  32. package/dist/scripts/{CK6c6uHp2.chunk.js.map → BpgHKWR52.chunk.js.map} +1 -1
  33. package/dist/scripts/{JtFbyaXc.chunk.js → Br0Uc4GG.chunk.js} +2 -2
  34. package/dist/scripts/{JtFbyaXc.chunk.js.map → Br0Uc4GG.chunk.js.map} +1 -1
  35. package/dist/scripts/{Dd8r1SE32.chunk.js → BsAo7Lri2.chunk.js} +2 -2
  36. package/dist/scripts/{Dd8r1SE32.chunk.js.map → BsAo7Lri2.chunk.js.map} +1 -1
  37. package/dist/scripts/{BMjES83N2.chunk.js → BvJXPFoz2.chunk.js} +2 -2
  38. package/dist/scripts/{BMjES83N2.chunk.js.map → BvJXPFoz2.chunk.js.map} +1 -1
  39. package/dist/scripts/{CpFOQcL7.chunk.js → BxypZGPK.chunk.js} +2 -2
  40. package/dist/scripts/{CpFOQcL7.chunk.js.map → BxypZGPK.chunk.js.map} +1 -1
  41. package/dist/scripts/C4MLxDS-.chunk.js +1 -0
  42. package/dist/scripts/{DLp7yHzT2.chunk.js → C5i1HsPp2.chunk.js} +2 -2
  43. package/dist/scripts/{DLp7yHzT2.chunk.js.map → C5i1HsPp2.chunk.js.map} +1 -1
  44. package/dist/scripts/{Bkv1Tbyu.chunk.js → CCoZQmgX.chunk.js} +2 -2
  45. package/dist/scripts/{Bkv1Tbyu.chunk.js.map → CCoZQmgX.chunk.js.map} +1 -1
  46. package/dist/scripts/{Clh6wBrg.chunk.js → CGxa1Jzq.chunk.js} +2 -2
  47. package/dist/scripts/{Clh6wBrg.chunk.js.map → CGxa1Jzq.chunk.js.map} +1 -1
  48. package/dist/scripts/{DAvXFgC62.chunk.js → CKdklY2o2.chunk.js} +2 -2
  49. package/dist/scripts/{DAvXFgC62.chunk.js.map → CKdklY2o2.chunk.js.map} +1 -1
  50. package/dist/scripts/{CeWjJPIz.chunk.js → CN8PeBwg.chunk.js} +2 -2
  51. package/dist/scripts/{CeWjJPIz.chunk.js.map → CN8PeBwg.chunk.js.map} +1 -1
  52. package/dist/scripts/{B1jitqYS2.chunk.js → CNJrD44-2.chunk.js} +2 -2
  53. package/dist/scripts/{B1jitqYS2.chunk.js.map → CNJrD44-2.chunk.js.map} +1 -1
  54. package/dist/scripts/{DIHDe4Sg.chunk.js → CNmmq34f.chunk.js} +2 -2
  55. package/dist/scripts/{DIHDe4Sg.chunk.js.map → CNmmq34f.chunk.js.map} +1 -1
  56. package/dist/scripts/{CikSQKH-.chunk.js → CUUUI6pl.chunk.js} +2 -2
  57. package/dist/scripts/{CikSQKH-.chunk.js.map → CUUUI6pl.chunk.js.map} +1 -1
  58. package/dist/scripts/{DNO0KpY72.chunk.js → CWFInhB82.chunk.js} +2 -2
  59. package/dist/scripts/{DNO0KpY72.chunk.js.map → CWFInhB82.chunk.js.map} +1 -1
  60. package/dist/scripts/{i2-k6ULv2.chunk.js → CbLL7dIz2.chunk.js} +2 -2
  61. package/dist/scripts/{i2-k6ULv2.chunk.js.map → CbLL7dIz2.chunk.js.map} +1 -1
  62. package/dist/scripts/{KCdpQ8qv2.chunk.js → Ce1TZZdV2.chunk.js} +2 -2
  63. package/dist/scripts/{KCdpQ8qv2.chunk.js.map → Ce1TZZdV2.chunk.js.map} +1 -1
  64. package/dist/scripts/{NV4_mMU8.chunk.js → Ces-KTwe.chunk.js} +2 -2
  65. package/dist/scripts/{NV4_mMU8.chunk.js.map → Ces-KTwe.chunk.js.map} +1 -1
  66. package/dist/scripts/{0xQRFMBY.chunk.js → CkYqp83j.chunk.js} +2 -2
  67. package/dist/scripts/{0xQRFMBY.chunk.js.map → CkYqp83j.chunk.js.map} +1 -1
  68. package/dist/scripts/{DvL3J2BU.chunk.js → CrCAJmt6.chunk.js} +2 -2
  69. package/dist/scripts/{DvL3J2BU.chunk.js.map → CrCAJmt6.chunk.js.map} +1 -1
  70. package/dist/scripts/{CcDgbmw52.chunk.js → CsC3VVvE2.chunk.js} +2 -2
  71. package/dist/scripts/{CcDgbmw52.chunk.js.map → CsC3VVvE2.chunk.js.map} +1 -1
  72. package/dist/scripts/{C9UjF0q6.chunk.js → D0SYGnyF.chunk.js} +2 -2
  73. package/dist/scripts/{C9UjF0q6.chunk.js.map → D0SYGnyF.chunk.js.map} +1 -1
  74. package/dist/scripts/{BqO6i89w2.chunk.js → D7tastET2.chunk.js} +2 -2
  75. package/dist/scripts/{BqO6i89w2.chunk.js.map → D7tastET2.chunk.js.map} +1 -1
  76. package/dist/scripts/{CeI-LCE-.chunk.js → DIavEegC.chunk.js} +2 -2
  77. package/dist/scripts/{CeI-LCE-.chunk.js.map → DIavEegC.chunk.js.map} +1 -1
  78. package/dist/scripts/{BKbKu9Rp.chunk.js → DK3xia1t.chunk.js} +2 -2
  79. package/dist/scripts/{BKbKu9Rp.chunk.js.map → DK3xia1t.chunk.js.map} +1 -1
  80. package/dist/scripts/{BCdnm1Nn.chunk.js → DKnZ8BaN.chunk.js} +2 -2
  81. package/dist/scripts/{BCdnm1Nn.chunk.js.map → DKnZ8BaN.chunk.js.map} +1 -1
  82. package/dist/scripts/{awemA_vU2.chunk.js → DO8_mR5i2.chunk.js} +2 -2
  83. package/dist/scripts/{awemA_vU2.chunk.js.map → DO8_mR5i2.chunk.js.map} +1 -1
  84. package/dist/scripts/{DlQrdOls.chunk.js → DR80oZtZ.chunk.js} +2 -2
  85. package/dist/scripts/{DlQrdOls.chunk.js.map → DR80oZtZ.chunk.js.map} +1 -1
  86. package/dist/scripts/{DMq5Gp-U2.chunk.js → DU1SE31v2.chunk.js} +2 -2
  87. package/dist/scripts/{DMq5Gp-U2.chunk.js.map → DU1SE31v2.chunk.js.map} +1 -1
  88. package/dist/scripts/{XnBhLH-02.chunk.js → Dj4AeYQQ2.chunk.js} +2 -2
  89. package/dist/scripts/{XnBhLH-02.chunk.js.map → Dj4AeYQQ2.chunk.js.map} +1 -1
  90. package/dist/scripts/{CmrPRojb.chunk.js → DnSy_Myx.chunk.js} +2 -2
  91. package/dist/scripts/{CmrPRojb.chunk.js.map → DnSy_Myx.chunk.js.map} +1 -1
  92. package/dist/scripts/{D0vsmyva.chunk.js → Dr1flAez.chunk.js} +2 -2
  93. package/dist/scripts/{D0vsmyva.chunk.js.map → Dr1flAez.chunk.js.map} +1 -1
  94. package/dist/scripts/{BXT8nHry2.chunk.js → DwzBzBlI2.chunk.js} +2 -2
  95. package/dist/scripts/{BXT8nHry2.chunk.js.map → DwzBzBlI2.chunk.js.map} +1 -1
  96. package/dist/scripts/{CvqqZmNo2.chunk.js → DyT1OGvP2.chunk.js} +2 -2
  97. package/dist/scripts/{CvqqZmNo2.chunk.js.map → DyT1OGvP2.chunk.js.map} +1 -1
  98. package/dist/scripts/{E9tNds1l.chunk.js → Llxar-VU.chunk.js} +2 -2
  99. package/dist/scripts/{E9tNds1l.chunk.js.map → Llxar-VU.chunk.js.map} +1 -1
  100. package/dist/scripts/{app-B1XBsz23.js → app-BIigh9wv.js} +4 -4
  101. package/dist/scripts/{app-B1XBsz23.js.map → app-BIigh9wv.js.map} +1 -1
  102. package/dist/scripts/{BMl02f_62.chunk.js → bycmewy72.chunk.js} +2 -2
  103. package/dist/scripts/{BMl02f_62.chunk.js.map → bycmewy72.chunk.js.map} +1 -1
  104. package/dist/scripts/{DmfbtOlu.chunk.js → jWpq99N3.chunk.js} +2 -2
  105. package/dist/scripts/{DmfbtOlu.chunk.js.map → jWpq99N3.chunk.js.map} +1 -1
  106. package/dist/scripts/{BDliRFoa.chunk.js → oTYyWWB-.chunk.js} +2 -2
  107. package/dist/scripts/{BDliRFoa.chunk.js.map → oTYyWWB-.chunk.js.map} +1 -1
  108. package/dist/scripts/{lokG7Sha2.chunk.js → qcrBN1zR2.chunk.js} +2 -2
  109. package/dist/scripts/{lokG7Sha2.chunk.js.map → qcrBN1zR2.chunk.js.map} +1 -1
  110. package/dist/scripts/{UAcFqQzZ.chunk.js → smdLElLq.chunk.js} +2 -2
  111. package/dist/scripts/{UAcFqQzZ.chunk.js.map → smdLElLq.chunk.js.map} +1 -1
  112. package/dist/scripts/{D8_5yfHY2.chunk.js → tYi-sUb22.chunk.js} +2 -2
  113. package/dist/scripts/{D8_5yfHY2.chunk.js.map → tYi-sUb22.chunk.js.map} +1 -1
  114. package/package.json +1 -1
  115. package/dist/scripts/D5Jnyjf8.chunk.js +0 -1
@@ -1,2 +1,2 @@
1
- import{b as e,gt as t}from"./Dp9qJj1C.chunk.js";import{a as n,n as r,t as i}from"./BJvPfCvt.chunk.js";import{t as a}from"./ImQRQGZr.chunk.js";import{j as o,lt as s,ut as c}from"./Dun43GrB.chunk.js";import{t as l}from"./CFXUbsBS.chunk.js";import{n as u}from"./D86qrFLE.chunk.js";import{t as d}from"./Ca1QPe-q2.chunk.js";import{t as f}from"./Cz6swPXe2.chunk.js";import{n as p}from"./D7d5XFW82.chunk.js";import{a as m,i as h,r as g,t as _}from"./D2om474U2.chunk.js";import{N as v,P as y}from"./app-B1XBsz23.js";import{t as b}from"./xFUSLNcp.chunk.js";import{t as ee}from"./CikSQKH-.chunk.js";import{t as x}from"./DXfGdqxs.chunk.js";import{t as S}from"./CyxOxJjg2.chunk.js";import{t as C}from"./Bt57Tmef2.chunk.js";import{n as w,r as te}from"./UAcFqQzZ.chunk.js";import{r as T,t as E}from"./BBWlVBxr.chunk.js";import{t as D}from"./etRy6yC_.chunk.js";import{i as ne}from"./ClGIvvk6.chunk.js";var O=t(o()),k={renderInPortalIfExists(e,t){return t?(0,O.createPortal)(e,t):e}},A=t(c()),j=s(),M=`shared.backButton`;N.defaultProps={color:`black`,extraClasses:``};function N(e){let{backToName:t,appLink:n,color:o,extraClasses:s,textShadow:c}={textShadow:!0,...e},l=t?a.getPhrase(M,`backTo`,{backToName:t}):a.getPhrase(M,`back`);return(0,j.jsxs)(d,{appLink:n,className:`d-inline-flex align-items-center h5 mb-0 ${s} ${o===`black`?``:`text-white`} ${c?`text-shadow`:``}`,children:[(0,j.jsx)(i,{svg:x,size:r.Medium}),(0,j.jsx)(`span`,{className:`ms-1`,children:l})]})}var re=`${D[h.Banners].width}:${D[h.Banners].height}`,P=1200,F=1920;function I(e){return e.xxl?F:P}function L(e,t,n,r){let i={className:`banner banner-header ${n}`,style:t?{backgroundImage:`url('${t}')`}:{}};return!e&&r&&(delete i.style,i.className+=` ${r}`),i}function R(e){let{heading:t,banner:n,logo:r,imageCdnUrl:i,bannerClassName:a,blockColourClass:o}=e,s=v(),c=A.useContext(y),l=I(s),u=e.bannerImageOptions||{width:l,ratio:re,resizeType:m.Cover},d=n&&i?_.createBannerUrl(n,{fallbackBaseUrl:i,fallbackCategoryName:t,type:h.Banners},u):void 0,f=E(t,T);return{logoUrl:r&&i?_.createUrl(r.url,{size:g.Medium}):void 0,bannerUrl:d,containerProps:L(n,d,a,o),portalContainerContext:c,logoFallbackBgClassName:f}}var z={bannerContent:`_bannerContent_168u8_1`,actionsContainer:`_actionsContainer_168u8_9`,bannerContentWithLogo:`_bannerContentWithLogo_168u8_18`,container:`_container_168u8_22`,logoContainer:`_logoContainer_168u8_26`,logoContainerLeft:`_logoContainerLeft_168u8_37`,logoHeading:`_logoHeading_168u8_41`,specialEventContainer:`_specialEventContainer_168u8_44`,headingLarge:`_headingLarge_168u8_68`,heading:`_heading_168u8_68`};function B(e){return e.length<160?`h1`:z.headingLarge}var V=`shared.defaultBannerHeader`,H=A.memo(function(e){let{heading:t,banner:n,imageCdnUrl:r,actions:i,sortComponent:a,blockColourClass:o,specialEvent:s}=e,{logoUrl:c,portalContainerContext:u,logoFallbackBgClassName:d,containerProps:f}=R({heading:t,banner:n,blockColourClass:o,bannerClassName:e.bannerClassName,imageCdnUrl:r,logo:e.logo,bannerImageOptions:e.imageOptions}),m=A.useMemo(()=>{if(!s||e.showComingSoon)return!1;let t=l.format(new Date,`YYYY-MM-DD`);return s.endDate?s.startDate<=t&&s.endDate>=t:s.startDate===t},[s]);function h(e){return!e.endDate||l.isSame(e.startDate,e.endDate,`month`)?l.format(e.startDate,`MMMM`):`${l.format(e.startDate,`MMM`)} - ${l.format(e.endDate,`MMM`)}`}let g=e.detailsComponent;return k.renderInPortalIfExists((0,j.jsx)(`header`,{...f,children:(0,j.jsxs)(`div`,{className:`container ${z.container} position-relative inner-banner`,children:[e.backButtonAppLink&&(0,j.jsx)(`div`,{className:`pt-3`,children:(0,j.jsx)(N,{appLink:e.backButtonAppLink,backToName:e.backButtonText,extraClasses:e.backButtonClasses,color:`white`})}),(0,j.jsxs)(`div`,{className:`${e.alignLogoLeft?`position-absolute top-50 start-0 translate-middle-y w-100 ps-4`:`${z.bannerContent} px-2 ${e.logo?.url?z.bannerContentWithLogo:``}`}`,children:[!!s&&(0,j.jsx)(`div`,{className:`position-relative ${z.specialEventContainer}`,children:(0,j.jsx)(te,{body:{type:s.endDate?`range`:`day`,text:s.endDate?`${l.format(s.startDate,`DD`)}-${l.format(s.endDate,`DD`)}`:l.format(s.startDate,`DD`)},month:h(s),theme:e.calendarTheme})}),(0,j.jsxs)(`div`,{children:[m&&(0,j.jsx)(`div`,{className:`rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block`,children:(0,j.jsx)(p,{namespace:V,phrase:`onToday`})}),e.showComingSoon&&(0,j.jsx)(S,{className:`pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap`}),(0,j.jsxs)(`div`,{className:`d-flex align-items-center`,children:[e.alignLogoLeft&&e.logo?.url&&(0,j.jsx)(`div`,{className:`${z.logoContainerLeft} d-none d-md-block rounded-circle overflow-hidden me-3 ${d}`,children:(0,j.jsx)(C,{src:c,style:{backgroundColor:e.logoBgColour}})}),(0,j.jsxs)(`h1`,{className:`text-white text-shadow pe-3 position-static ${z.heading} ${B(t)} ${e.alignLogoLeft?`w-50`:``}`,children:[t,g&&(0,j.jsx)(g,{})]})]})]}),!!i&&(0,j.jsx)(`div`,{className:z.actionsContainer,children:(0,j.jsx)(ee,{actions:i,sortComponent:a,actionsDropdownClassName:e.actionsDropdownClassName})})]}),!e.alignLogoLeft&&!!e.logo?.url&&(0,j.jsx)(`div`,{className:z.logoContainer,children:(0,j.jsx)(`img`,{src:c,className:`rounded-circle`})})]})}),u?.container)},(e,t)=>e.actions===t.actions&&e.heading===t.heading&&e.logo?.url===t.logo?.url);function U(){let e=A.useContext(y);return k.renderInPortalIfExists((0,j.jsx)(`div`,{className:`partial-banner partial-loading-background ${z.banner}`}),e?.container)}function W(e){let t=A.useRef(null),[n,r]=A.useState({loaded:!1,isPlaying:!1,isFinished:!1});function i(e,t){r(n=>({...n,[e]:t}))}let a={loadstart:()=>{e?.onInit?.()},canplay:()=>{typeof e?.addDelayOnLoad==`number`?(s(),t.current?.autoplay&&(t.current.autoplay=!1),setTimeout(()=>{i(`loaded`,!0),o()},e.addDelayOnLoad)):i(`loaded`,!0)},play:()=>{i(`isPlaying`,!0),e?.onPlay?.()},pause:()=>{i(`isPlaying`,!1),e?.onPause?.()},ended:()=>{r(e=>({...e,isPlaying:!1,isFinished:!0})),e?.onEnd?.()}};A.useEffect(()=>{if(Object.keys(a).length)return Object.entries(a).forEach(([e,n])=>{t.current?.addEventListener(e,n)}),()=>{Object.entries(a).forEach(([e,n])=>{t.current?.removeEventListener(e,n)})}},[t.current]);function o(){n.isPlaying||(t.current?.play(),r(e=>({...e,isPlaying:!0,isFinished:!1})))}function s(){n.isPlaying&&(t.current?.pause(),i(`isPlaying`,!1))}function c(){n.isPlaying?(s(),e?.log?.({type:`click-video-banner-controls`,control:`pause`})):(o(),e?.log?.({type:`click-video-banner-controls`,control:`play`}))}function l(){t.current&&(t.current.loop=!0)}return{videoRef:t,...n,play:o,pause:s,togglePlayPause:c,loop:l}}var G=A.forwardRef((e,t)=>{let{autoPlay:n=!1,muted:r=!0,loop:i=!1,controls:a=!1,disablePictureInPicture:o=!0,disableRemotePlayback:s=!0,...c}=e;return(0,j.jsx)(`video`,{ref:t,autoPlay:n,muted:r,loop:i,controls:a,disablePictureInPicture:o,disableRemotePlayback:s,...c})});function K(e){return(0,j.jsx)(`svg`,{...e,children:(0,j.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M9.5 6C8.67157 6 8 6.67157 8 7.5V16.5C8 17.3284 8.67157 18 9.5 18C10.3284 18 11 17.3284 11 16.5V7.5C11 6.67157 10.3284 6 9.5 6ZM15.5 6C14.6716 6 14 6.67157 14 7.5V16.5C14 17.3284 14.6716 18 15.5 18C16.3284 18 17 17.3284 17 16.5V7.5C17 6.67157 16.3284 6 15.5 6Z`})})}var q=function(e){return e.PlayPause=`play-pause`,e.WebsiteLink=`website-link`,e}({}),J=[q.PlayPause,q.WebsiteLink],Y={getBannerHeaderContentType(e){let t=`text`;return e.logoUrl&&(t=`logo`),!e.isAuthenticated&&e.showVideoBanner&&(t=`sign-up`),t},showWebsiteLinkControls(e,t,n){return n?!1:!!t&&e.includes(q.WebsiteLink)}},X={videoBannerRadius:`_videoBannerRadius_v1xjp_1`,nowrap:`_nowrap_v1xjp_9`,hasLogo:`_hasLogo_v1xjp_12`,logoPosition:`_logoPosition_v1xjp_15`,logoContainer:`_logoContainer_v1xjp_18`,container:`_container_v1xjp_22`,signUpContainer:`_signUpContainer_v1xjp_26`,signUpContent:`_signUpContent_v1xjp_31`,signUpHeading:`_signUpHeading_v1xjp_39`,emailInput:`_emailInput_v1xjp_48`,videoControls:`_videoControls_v1xjp_52`,videoContent:`_videoContent_v1xjp_57`,videoVisible:`_videoVisible_v1xjp_61`},Z=a.encloseNamespace(`bannerHeader.partnerProfileBannerHeader`);function ie(e){return(0,j.jsx)(`div`,{className:n(`container position-relative inner-banner`,X.container),children:(0,j.jsx)(`div`,{className:`position-absolute bottom-0 start-0 mb-3 w-100 px-4`,children:(0,j.jsx)(`div`,{className:`d-flex align-items-center`,children:(0,j.jsx)(`h1`,{className:`text-white text-shadow pe-3 position-static mb-0`,children:e.name})})})})}function ae(e){return(0,j.jsx)(`div`,{className:n(`container position-relative inner-banner`,X.container),children:(0,j.jsx)(`div`,{className:n(`position-absolute start-0 px-4`,X.logoPosition),children:(0,j.jsx)(`div`,{className:X.logoContainer,children:(0,j.jsx)(w,{logoUrl:e.logoUrl,bgColor:e.bgColor,name:e.name,classNames:{container:`border border-white`}})})})})}function oe(e){let[t,r]=A.useState(``);function i(n){n.preventDefault(),e.onClickSignUp(t)}return(0,j.jsxs)(`div`,{className:n(`container position-relative inner-banner`,X.container),children:[(0,j.jsx)(`div`,{className:n(`position-absolute start-0 px-4 `,X.logoPosition),children:(0,j.jsx)(`div`,{className:X.logoContainer,children:(0,j.jsx)(w,{logoUrl:e.logoUrl,bgColor:e.bgColor,name:e.name,classNames:{container:`border border-white`}})})}),(0,j.jsx)(`div`,{className:n(`position-absolute bottom-0 pb-2 pb-md-3 px-0 px-sm-3 d-none d-xl-block`,X.signUpContainer),children:(0,j.jsxs)(`div`,{className:n(`d-flex align-items-center justify-content-between gap-2 flex-wrap rounded-3 p-3`,X.signUpContent),children:[(0,j.jsx)(`div`,{className:`d-sm-flex align-items-center gap-2 `,children:(0,j.jsx)(`h4`,{className:n(`text-white text-shadow mb-0`,X.signUpHeading),children:Z(`description`)})}),(0,j.jsxs)(`form`,{className:`d-flex align-items-center gap-2 flex-grow-1 flex-md-grow-0`,onSubmit:i,children:[(0,j.jsx)(`input`,{type:`email`,className:n(`form-control w-100`,X.emailInput),placeholder:Z(`emailPlaceholder`),value:t,onChange:e=>r(e.target.value)}),(0,j.jsx)(u,{type:`submit`,variant:`dark`,className:X.nowrap,children:Z(`cta`)})]})]})})]})}var se={logo:ae,"sign-up":oe,text:ie};function ce(e){let t=se[e.type];return(0,j.jsx)(t,{...e})}var Q=a.encloseNamespace(`bannerHeader.partnerProfileBannerHeader`);function le(e){return(0,j.jsx)(`div`,{className:n(`position-absolute top-0 start-0 w-100 h-100 overflow-hidden`,e.className,X.videoBannerRadius),children:(0,j.jsx)(G,{ref:e.videoRef,autoPlay:!0,muted:!0,controls:!1,loop:e.loop,className:`w-100 h-100 object-fit-cover position-relative`,children:(0,j.jsx)(`source`,{src:e.videoUrl,type:`video/mp4`})})})}function ue(t){let i=t.isPlaying?K:ne;function a(){t.websiteUrl&&(e.PageLoad(t.websiteUrl,!0),t.log?.({type:`click-video-banner-controls`,control:`website-link`}))}let o=t.controls||J,s=Y.showWebsiteLinkControls(o,t.websiteUrl,t.isStudent);return(0,j.jsxs)(`div`,{className:n(X.videoControls,`position-absolute d-flex gap-2 `,t.isPlaying&&`banner-header-video--controls`,t.className),children:[s&&(0,j.jsx)(f,{svg:b,svgSize:r.Standard,className:`bg-gray-200 rounded-circle cursor-pointer`,onClick:a,ariaLabel:Q(`viewWebsite`),role:`button`,tooltip:Q(`viewWebsite`),tooltipTrigger:[`hover`,`focus`]}),o.includes(q.PlayPause)&&(0,j.jsx)(f,{svg:i,svgSize:r.Standard,className:`bg-gray-200 rounded-circle cursor-pointer`,onClick:t.togglePlayPause,ariaLabel:t.isPlaying?Q(`pause`):Q(`play`),role:`button`,tooltip:t.isPlaying?Q(`pause`):Q(`play`),tooltipTrigger:[`hover`,`focus`]})]})}function de(){let e=A.useContext(y);return k.renderInPortalIfExists((0,j.jsx)(`div`,{className:`partial-banner partial-loading-background`}),e?.container)}var fe=1920,pe=`1200:330`;function me(e){let{heading:t,isAuthenticated:r,partnerBannerType:i=`static`,websiteUrl:a}=e,{videoRef:o,isPlaying:s,isFinished:c,loaded:l,togglePlayPause:u}=W({addDelayOnLoad:2500,log:e.log}),d=i===`video`&&!!e.videoUrl,f=l&&!c,{containerProps:p,portalContainerContext:h,logoUrl:g}=R({heading:t,banner:e.banner,logo:e.logo,imageCdnUrl:e.imageCdnUrl,blockColourClass:e.blockColourClass,bannerClassName:n(d&&`banner-header-video position-relative`,d&&X.videoBannerRadius),bannerImageOptions:d?{width:fe,ratio:pe,resizeType:m.Cover}:null}),_=Y.getBannerHeaderContentType({logoUrl:g,isAuthenticated:r,showVideoBanner:d}),v=_===`logo`||_===`sign-up`,y=f?J:[q.PlayPause,q.WebsiteLink];return k.renderInPortalIfExists((0,j.jsx)(`header`,{className:n(X.header,d&&`px-0 px-xl-3 pt-xl-3 `,v&&X.hasLogo),children:(0,j.jsxs)(`div`,{...p,children:[d&&(0,j.jsx)(le,{videoUrl:e.videoUrl,videoRef:o,className:n(X.videoContent,f&&X.videoVisible),loop:!e.banner}),(0,j.jsx)(ce,{type:_,name:t,logoUrl:g,bgColor:e.logoBgColour,onClickSignUp:e.onClickSignUp}),d&&(0,j.jsx)(ue,{isPlaying:s,togglePlayPause:u,controls:y,websiteUrl:a,isStudent:e.isStudent,log:e.log})]})}),h?.container)}var $={default:{Component:H,PartialComponent:U},"partner-profile":{Component:me,PartialComponent:de}};function he(e){let{type:t=`default`}=e,n=$[t].Component;return(0,j.jsx)(n,{...e})}function ge(e){let{type:t=`default`}=e,n=$[t].PartialComponent;return(0,j.jsx)(n,{...e})}export{ge as n,he as t};
2
- //# sourceMappingURL=BSjm_rCE.chunk.js.map
1
+ import{b as e,gt as t}from"./Dp9qJj1C.chunk.js";import{a as n,n as r,t as i}from"./BJvPfCvt.chunk.js";import{t as a}from"./ImQRQGZr.chunk.js";import{j as o,lt as s,ut as c}from"./Dun43GrB.chunk.js";import{t as l}from"./CFXUbsBS.chunk.js";import{n as u}from"./D86qrFLE.chunk.js";import{t as d}from"./Ca1QPe-q2.chunk.js";import{t as f}from"./Cz6swPXe2.chunk.js";import{n as p}from"./D7d5XFW82.chunk.js";import{a as m,i as h,r as g,t as _}from"./D2om474U2.chunk.js";import{N as v,P as y}from"./app-BIigh9wv.js";import{t as b}from"./xFUSLNcp.chunk.js";import{t as ee}from"./CUUUI6pl.chunk.js";import{t as x}from"./DXfGdqxs.chunk.js";import{t as S}from"./CyxOxJjg2.chunk.js";import{t as C}from"./Bt57Tmef2.chunk.js";import{n as w,r as te}from"./smdLElLq.chunk.js";import{r as T,t as E}from"./BBWlVBxr.chunk.js";import{t as D}from"./etRy6yC_.chunk.js";import{i as ne}from"./ClGIvvk6.chunk.js";var O=t(o()),k={renderInPortalIfExists(e,t){return t?(0,O.createPortal)(e,t):e}},A=t(c()),j=s(),M=`shared.backButton`;N.defaultProps={color:`black`,extraClasses:``};function N(e){let{backToName:t,appLink:n,color:o,extraClasses:s,textShadow:c}={textShadow:!0,...e},l=t?a.getPhrase(M,`backTo`,{backToName:t}):a.getPhrase(M,`back`);return(0,j.jsxs)(d,{appLink:n,className:`d-inline-flex align-items-center h5 mb-0 ${s} ${o===`black`?``:`text-white`} ${c?`text-shadow`:``}`,children:[(0,j.jsx)(i,{svg:x,size:r.Medium}),(0,j.jsx)(`span`,{className:`ms-1`,children:l})]})}var re=`${D[h.Banners].width}:${D[h.Banners].height}`,P=1200,F=1920;function I(e){return e.xxl?F:P}function L(e,t,n,r){let i={className:`banner banner-header ${n}`,style:t?{backgroundImage:`url('${t}')`}:{}};return!e&&r&&(delete i.style,i.className+=` ${r}`),i}function R(e){let{heading:t,banner:n,logo:r,imageCdnUrl:i,bannerClassName:a,blockColourClass:o}=e,s=v(),c=A.useContext(y),l=I(s),u=e.bannerImageOptions||{width:l,ratio:re,resizeType:m.Cover},d=n&&i?_.createBannerUrl(n,{fallbackBaseUrl:i,fallbackCategoryName:t,type:h.Banners},u):void 0,f=E(t,T);return{logoUrl:r&&i?_.createUrl(r.url,{size:g.Medium}):void 0,bannerUrl:d,containerProps:L(n,d,a,o),portalContainerContext:c,logoFallbackBgClassName:f}}var z={bannerContent:`_bannerContent_168u8_1`,actionsContainer:`_actionsContainer_168u8_9`,bannerContentWithLogo:`_bannerContentWithLogo_168u8_18`,container:`_container_168u8_22`,logoContainer:`_logoContainer_168u8_26`,logoContainerLeft:`_logoContainerLeft_168u8_37`,logoHeading:`_logoHeading_168u8_41`,specialEventContainer:`_specialEventContainer_168u8_44`,headingLarge:`_headingLarge_168u8_68`,heading:`_heading_168u8_68`};function B(e){return e.length<160?`h1`:z.headingLarge}var V=`shared.defaultBannerHeader`,H=A.memo(function(e){let{heading:t,banner:n,imageCdnUrl:r,actions:i,sortComponent:a,blockColourClass:o,specialEvent:s}=e,{logoUrl:c,portalContainerContext:u,logoFallbackBgClassName:d,containerProps:f}=R({heading:t,banner:n,blockColourClass:o,bannerClassName:e.bannerClassName,imageCdnUrl:r,logo:e.logo,bannerImageOptions:e.imageOptions}),m=A.useMemo(()=>{if(!s||e.showComingSoon)return!1;let t=l.format(new Date,`YYYY-MM-DD`);return s.endDate?s.startDate<=t&&s.endDate>=t:s.startDate===t},[s]);function h(e){return!e.endDate||l.isSame(e.startDate,e.endDate,`month`)?l.format(e.startDate,`MMMM`):`${l.format(e.startDate,`MMM`)} - ${l.format(e.endDate,`MMM`)}`}let g=e.detailsComponent;return k.renderInPortalIfExists((0,j.jsx)(`header`,{...f,children:(0,j.jsxs)(`div`,{className:`container ${z.container} position-relative inner-banner`,children:[e.backButtonAppLink&&(0,j.jsx)(`div`,{className:`pt-3`,children:(0,j.jsx)(N,{appLink:e.backButtonAppLink,backToName:e.backButtonText,extraClasses:e.backButtonClasses,color:`white`})}),(0,j.jsxs)(`div`,{className:`${e.alignLogoLeft?`position-absolute top-50 start-0 translate-middle-y w-100 ps-4`:`${z.bannerContent} px-2 ${e.logo?.url?z.bannerContentWithLogo:``}`}`,children:[!!s&&(0,j.jsx)(`div`,{className:`position-relative ${z.specialEventContainer}`,children:(0,j.jsx)(te,{body:{type:s.endDate?`range`:`day`,text:s.endDate?`${l.format(s.startDate,`DD`)}-${l.format(s.endDate,`DD`)}`:l.format(s.startDate,`DD`)},month:h(s),theme:e.calendarTheme})}),(0,j.jsxs)(`div`,{children:[m&&(0,j.jsx)(`div`,{className:`rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block`,children:(0,j.jsx)(p,{namespace:V,phrase:`onToday`})}),e.showComingSoon&&(0,j.jsx)(S,{className:`pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap`}),(0,j.jsxs)(`div`,{className:`d-flex align-items-center`,children:[e.alignLogoLeft&&e.logo?.url&&(0,j.jsx)(`div`,{className:`${z.logoContainerLeft} d-none d-md-block rounded-circle overflow-hidden me-3 ${d}`,children:(0,j.jsx)(C,{src:c,style:{backgroundColor:e.logoBgColour}})}),(0,j.jsxs)(`h1`,{className:`text-white text-shadow pe-3 position-static ${z.heading} ${B(t)} ${e.alignLogoLeft?`w-50`:``}`,children:[t,g&&(0,j.jsx)(g,{})]})]})]}),!!i&&(0,j.jsx)(`div`,{className:z.actionsContainer,children:(0,j.jsx)(ee,{actions:i,sortComponent:a,actionsDropdownClassName:e.actionsDropdownClassName})})]}),!e.alignLogoLeft&&!!e.logo?.url&&(0,j.jsx)(`div`,{className:z.logoContainer,children:(0,j.jsx)(`img`,{src:c,className:`rounded-circle`})})]})}),u?.container)},(e,t)=>e.actions===t.actions&&e.heading===t.heading&&e.logo?.url===t.logo?.url);function U(){let e=A.useContext(y);return k.renderInPortalIfExists((0,j.jsx)(`div`,{className:`partial-banner partial-loading-background ${z.banner}`}),e?.container)}function W(e){let t=A.useRef(null),[n,r]=A.useState({loaded:!1,isPlaying:!1,isFinished:!1});function i(e,t){r(n=>({...n,[e]:t}))}let a={loadstart:()=>{e?.onInit?.()},canplay:()=>{typeof e?.addDelayOnLoad==`number`?(s(),t.current?.autoplay&&(t.current.autoplay=!1),setTimeout(()=>{i(`loaded`,!0),o()},e.addDelayOnLoad)):i(`loaded`,!0)},play:()=>{i(`isPlaying`,!0),e?.onPlay?.()},pause:()=>{i(`isPlaying`,!1),e?.onPause?.()},ended:()=>{r(e=>({...e,isPlaying:!1,isFinished:!0})),e?.onEnd?.()}};A.useEffect(()=>{if(Object.keys(a).length)return Object.entries(a).forEach(([e,n])=>{t.current?.addEventListener(e,n)}),()=>{Object.entries(a).forEach(([e,n])=>{t.current?.removeEventListener(e,n)})}},[t.current]);function o(){n.isPlaying||(t.current?.play(),r(e=>({...e,isPlaying:!0,isFinished:!1})))}function s(){n.isPlaying&&(t.current?.pause(),i(`isPlaying`,!1))}function c(){n.isPlaying?(s(),e?.log?.({type:`click-video-banner-controls`,control:`pause`})):(o(),e?.log?.({type:`click-video-banner-controls`,control:`play`}))}function l(){t.current&&(t.current.loop=!0)}return{videoRef:t,...n,play:o,pause:s,togglePlayPause:c,loop:l}}var G=A.forwardRef((e,t)=>{let{autoPlay:n=!1,muted:r=!0,loop:i=!1,controls:a=!1,disablePictureInPicture:o=!0,disableRemotePlayback:s=!0,...c}=e;return(0,j.jsx)(`video`,{ref:t,autoPlay:n,muted:r,loop:i,controls:a,disablePictureInPicture:o,disableRemotePlayback:s,...c})});function K(e){return(0,j.jsx)(`svg`,{...e,children:(0,j.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M9.5 6C8.67157 6 8 6.67157 8 7.5V16.5C8 17.3284 8.67157 18 9.5 18C10.3284 18 11 17.3284 11 16.5V7.5C11 6.67157 10.3284 6 9.5 6ZM15.5 6C14.6716 6 14 6.67157 14 7.5V16.5C14 17.3284 14.6716 18 15.5 18C16.3284 18 17 17.3284 17 16.5V7.5C17 6.67157 16.3284 6 15.5 6Z`})})}var q=function(e){return e.PlayPause=`play-pause`,e.WebsiteLink=`website-link`,e}({}),J=[q.PlayPause,q.WebsiteLink],Y={getBannerHeaderContentType(e){let t=`text`;return e.logoUrl&&(t=`logo`),!e.isAuthenticated&&e.showVideoBanner&&(t=`sign-up`),t},showWebsiteLinkControls(e,t,n){return n?!1:!!t&&e.includes(q.WebsiteLink)}},X={videoBannerRadius:`_videoBannerRadius_v1xjp_1`,nowrap:`_nowrap_v1xjp_9`,hasLogo:`_hasLogo_v1xjp_12`,logoPosition:`_logoPosition_v1xjp_15`,logoContainer:`_logoContainer_v1xjp_18`,container:`_container_v1xjp_22`,signUpContainer:`_signUpContainer_v1xjp_26`,signUpContent:`_signUpContent_v1xjp_31`,signUpHeading:`_signUpHeading_v1xjp_39`,emailInput:`_emailInput_v1xjp_48`,videoControls:`_videoControls_v1xjp_52`,videoContent:`_videoContent_v1xjp_57`,videoVisible:`_videoVisible_v1xjp_61`},Z=a.encloseNamespace(`bannerHeader.partnerProfileBannerHeader`);function ie(e){return(0,j.jsx)(`div`,{className:n(`container position-relative inner-banner`,X.container),children:(0,j.jsx)(`div`,{className:`position-absolute bottom-0 start-0 mb-3 w-100 px-4`,children:(0,j.jsx)(`div`,{className:`d-flex align-items-center`,children:(0,j.jsx)(`h1`,{className:`text-white text-shadow pe-3 position-static mb-0`,children:e.name})})})})}function ae(e){return(0,j.jsx)(`div`,{className:n(`container position-relative inner-banner`,X.container),children:(0,j.jsx)(`div`,{className:n(`position-absolute start-0 px-4`,X.logoPosition),children:(0,j.jsx)(`div`,{className:X.logoContainer,children:(0,j.jsx)(w,{logoUrl:e.logoUrl,bgColor:e.bgColor,name:e.name,classNames:{container:`border border-white`}})})})})}function oe(e){let[t,r]=A.useState(``);function i(n){n.preventDefault(),e.onClickSignUp(t)}return(0,j.jsxs)(`div`,{className:n(`container position-relative inner-banner`,X.container),children:[(0,j.jsx)(`div`,{className:n(`position-absolute start-0 px-4 `,X.logoPosition),children:(0,j.jsx)(`div`,{className:X.logoContainer,children:(0,j.jsx)(w,{logoUrl:e.logoUrl,bgColor:e.bgColor,name:e.name,classNames:{container:`border border-white`}})})}),(0,j.jsx)(`div`,{className:n(`position-absolute bottom-0 pb-2 pb-md-3 px-0 px-sm-3 d-none d-xl-block`,X.signUpContainer),children:(0,j.jsxs)(`div`,{className:n(`d-flex align-items-center justify-content-between gap-2 flex-wrap rounded-3 p-3`,X.signUpContent),children:[(0,j.jsx)(`div`,{className:`d-sm-flex align-items-center gap-2 `,children:(0,j.jsx)(`h4`,{className:n(`text-white text-shadow mb-0`,X.signUpHeading),children:Z(`description`)})}),(0,j.jsxs)(`form`,{className:`d-flex align-items-center gap-2 flex-grow-1 flex-md-grow-0`,onSubmit:i,children:[(0,j.jsx)(`input`,{type:`email`,className:n(`form-control w-100`,X.emailInput),placeholder:Z(`emailPlaceholder`),value:t,onChange:e=>r(e.target.value)}),(0,j.jsx)(u,{type:`submit`,variant:`dark`,className:X.nowrap,children:Z(`cta`)})]})]})})]})}var se={logo:ae,"sign-up":oe,text:ie};function ce(e){let t=se[e.type];return(0,j.jsx)(t,{...e})}var Q=a.encloseNamespace(`bannerHeader.partnerProfileBannerHeader`);function le(e){return(0,j.jsx)(`div`,{className:n(`position-absolute top-0 start-0 w-100 h-100 overflow-hidden`,e.className,X.videoBannerRadius),children:(0,j.jsx)(G,{ref:e.videoRef,autoPlay:!0,muted:!0,controls:!1,loop:e.loop,className:`w-100 h-100 object-fit-cover position-relative`,children:(0,j.jsx)(`source`,{src:e.videoUrl,type:`video/mp4`})})})}function ue(t){let i=t.isPlaying?K:ne;function a(){t.websiteUrl&&(e.PageLoad(t.websiteUrl,!0),t.log?.({type:`click-video-banner-controls`,control:`website-link`}))}let o=t.controls||J,s=Y.showWebsiteLinkControls(o,t.websiteUrl,t.isStudent);return(0,j.jsxs)(`div`,{className:n(X.videoControls,`position-absolute d-flex gap-2 `,t.isPlaying&&`banner-header-video--controls`,t.className),children:[s&&(0,j.jsx)(f,{svg:b,svgSize:r.Standard,className:`bg-gray-200 rounded-circle cursor-pointer`,onClick:a,ariaLabel:Q(`viewWebsite`),role:`button`,tooltip:Q(`viewWebsite`),tooltipTrigger:[`hover`,`focus`]}),o.includes(q.PlayPause)&&(0,j.jsx)(f,{svg:i,svgSize:r.Standard,className:`bg-gray-200 rounded-circle cursor-pointer`,onClick:t.togglePlayPause,ariaLabel:t.isPlaying?Q(`pause`):Q(`play`),role:`button`,tooltip:t.isPlaying?Q(`pause`):Q(`play`),tooltipTrigger:[`hover`,`focus`]})]})}function de(){let e=A.useContext(y);return k.renderInPortalIfExists((0,j.jsx)(`div`,{className:`partial-banner partial-loading-background`}),e?.container)}var fe=1920,pe=`1200:330`;function me(e){let{heading:t,isAuthenticated:r,partnerBannerType:i=`static`,websiteUrl:a}=e,{videoRef:o,isPlaying:s,isFinished:c,loaded:l,togglePlayPause:u}=W({addDelayOnLoad:2500,log:e.log}),d=i===`video`&&!!e.videoUrl,f=l&&!c,{containerProps:p,portalContainerContext:h,logoUrl:g}=R({heading:t,banner:e.banner,logo:e.logo,imageCdnUrl:e.imageCdnUrl,blockColourClass:e.blockColourClass,bannerClassName:n(d&&`banner-header-video position-relative`,d&&X.videoBannerRadius),bannerImageOptions:d?{width:fe,ratio:pe,resizeType:m.Cover}:null}),_=Y.getBannerHeaderContentType({logoUrl:g,isAuthenticated:r,showVideoBanner:d}),v=_===`logo`||_===`sign-up`,y=f?J:[q.PlayPause,q.WebsiteLink];return k.renderInPortalIfExists((0,j.jsx)(`header`,{className:n(X.header,d&&`px-0 px-xl-3 pt-xl-3 `,v&&X.hasLogo),children:(0,j.jsxs)(`div`,{...p,children:[d&&(0,j.jsx)(le,{videoUrl:e.videoUrl,videoRef:o,className:n(X.videoContent,f&&X.videoVisible),loop:!e.banner}),(0,j.jsx)(ce,{type:_,name:t,logoUrl:g,bgColor:e.logoBgColour,onClickSignUp:e.onClickSignUp}),d&&(0,j.jsx)(ue,{isPlaying:s,togglePlayPause:u,controls:y,websiteUrl:a,isStudent:e.isStudent,log:e.log})]})}),h?.container)}var $={default:{Component:H,PartialComponent:U},"partner-profile":{Component:me,PartialComponent:de}};function he(e){let{type:t=`default`}=e,n=$[t].Component;return(0,j.jsx)(n,{...e})}function ge(e){let{type:t=`default`}=e,n=$[t].PartialComponent;return(0,j.jsx)(n,{...e})}export{ge as n,he as t};
2
+ //# sourceMappingURL=B5jBIPaP.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BSjm_rCE.chunk.js","names":[],"sources":["../../../../libs/common/src/react/utils/PortalHelper.ts","../../../../libs/shared/src/components/back-button/BackButton.tsx","../../../../libs/shared/src/components/banner-header/hooks/useBannerHeader.ts","../../../../libs/shared/src/components/banner-header/default-banner-header/default-banner-header.module.scss","../../../../libs/shared/src/components/banner-header/default-banner-header/DefaultBannerHeader.tsx","../../../../libs/shared/src/components/video/Video.tsx","../../../../libs/shared/src/images/svg/actions/PauseSvg.tsx","../../../../libs/shared/src/components/banner-header/enums/VideoBannerControlOption.ts","../../../../libs/shared/src/components/banner-header/utils/PartnerProfileBannerHeaderHelper.ts","../../../../libs/shared/src/components/banner-header/partner-profile-banner-header/partner-profile-banner-header.module.scss","../../../../libs/shared/src/components/banner-header/partner-profile-banner-header/PartnerProfileBannerHeaderContent.tsx","../../../../libs/shared/src/components/banner-header/partner-profile-banner-header/PartnerProfileBannerHeader.tsx","../../../../libs/shared/src/components/banner-header/BannerHeader.tsx"],"sourcesContent":["import React from 'react';\nimport { createPortal } from 'react-dom';\n\nexport const PortalHelper = {\n renderInPortalIfExists(component: React.ReactElement, portalContainer: Element | null): React.ReactElement {\n if (portalContainer)\n return createPortal(component, portalContainer);\n\n return component;\n }\n};\n","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ChevronLeftSvg } from 'libs/shared/images/svg/arrows/ChevronLeftSvg';\n\nconst namespace = 'shared.backButton';\n\ninterface BackButtonProps {\n appLink: Core.AppLink;\n backToName?: string;\n color?: 'black' | 'white';\n extraClasses?: string;\n /**\n * Whether or not the button text has a text shadow. Defaults to true\n */\n textShadow?: boolean;\n}\n\nBackButton.defaultProps = {\n color: 'black',\n extraClasses: ''\n};\n\nexport function BackButton(props: BackButtonProps): React.ReactElement {\n const { backToName, appLink, color, extraClasses, textShadow } = {\n textShadow: true,\n ...props\n };\n\n const backPhrase = backToName ?\n LanguageService.getPhrase(namespace, 'backTo', { backToName }) :\n LanguageService.getPhrase(namespace, 'back');\n\n const colorClass = color === 'black' ? '' : 'text-white';\n const textShadowClass = textShadow ? 'text-shadow' : '';\n\n return (\n <AppLink\n appLink={appLink}\n className={`d-inline-flex align-items-center h5 mb-0 ${extraClasses} ${colorClass} ${textShadowClass}`}\n >\n <SvgContainer svg={ChevronLeftSvg} size={SvgContainerSize.Medium} />\n <span className='ms-1'>{backPhrase}</span>\n </AppLink>\n );\n}\n","import React from 'react';\n\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\nimport { BannerPortalContext } from 'libs/shared/context/BannerPortalContext';\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { Breakpoints, useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Banner, Logo } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nconst RATIO = `${ImageMinDimensions[ImageType.Banners].width}:${ImageMinDimensions[ImageType.Banners].height}`;\nconst DEFAULT_WIDTH = 1200; // This is ImageSize.Large for a Banner.\nconst LARGE_SCREEN_WIDTH = 1920;\n\nfunction getImageWidth(breakpoints: Breakpoints): number {\n if (breakpoints.xxl) return LARGE_SCREEN_WIDTH;\n\n return DEFAULT_WIDTH;\n}\n\ntype ContainerProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;\n\nfunction getContainerProps(\n banner?: Banner,\n bannerUrl?: string,\n bannerClassName?: string,\n blockColourClass?: string\n): ContainerProps {\n const containerProps: ContainerProps = {\n className: `banner banner-header ${bannerClassName}`,\n style: bannerUrl ? { backgroundImage: `url('${bannerUrl}')` } : {}\n };\n\n if (!banner && blockColourClass) {\n delete containerProps.style;\n containerProps.className += ` ${blockColourClass}`;\n }\n\n return containerProps;\n}\n\ninterface UseBannerHeaderOptions {\n heading: string;\n\n logo?: Logo;\n banner?: Banner;\n imageCdnUrl?: string;\n bannerImageOptions?: ImageOptions;\n bannerClassName?: string;\n blockColourClass?: string;\n}\n\nexport function useBannerHeader(options: UseBannerHeaderOptions) {\n const { heading, banner, logo, imageCdnUrl, bannerClassName, blockColourClass } = options;\n\n const breakpoints = useBreakpoints();\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n const imageWidth = getImageWidth(breakpoints);\n\n const bannerImageOptions = options.bannerImageOptions || {\n width: imageWidth,\n ratio: RATIO,\n resizeType: ResizeType.Cover\n };\n\n const bannerUrl =\n !!banner && !!imageCdnUrl ?\n ImageHelper.createBannerUrl(\n banner,\n {\n fallbackBaseUrl: imageCdnUrl,\n fallbackCategoryName: heading,\n type: ImageType.Banners\n },\n bannerImageOptions\n ) :\n undefined;\n\n const logoFallbackBgClassName = getBgColorClass(heading, BG_COLOUR_CLASS_NAMES);\n const logoUrl = !!logo && !!imageCdnUrl ? ImageHelper.createUrl(logo.url, { size: ImageSize.Medium }) : undefined;\n const containerProps = getContainerProps(banner, bannerUrl, bannerClassName, blockColourClass);\n\n return {\n logoUrl,\n bannerUrl,\n containerProps,\n portalContainerContext,\n logoFallbackBgClassName\n };\n}\n","@import '~styles/utils/mixins';\n@import '~styles/utils/include-media';\n:local {\n .bannerContent {\n position: absolute;\n bottom: map-get($spacers, 3);\n right: map-get($spacers, 3);\n left: map-get($spacers, 3);\n display: flex;\n align-items: flex-end;\n\n .actionsContainer {\n margin-left: auto;\n padding-left: map-get($spacers, 2);\n }\n\n @include media('<=md') {\n bottom: 1rem;\n }\n }\n\n .bannerContentWithLogo {\n right: 7rem + map-get($spacers, 3);\n }\n\n .container {\n @include media('<=xl') {\n max-width: 100%;\n }\n }\n\n .logoContainer {\n position: absolute;\n top: 50%;\n right: map-get($spacers, 3);\n transform: translateY(-50%);\n height: 60%;\n max-height: 7.5rem;\n\n img {\n height: 100%;\n }\n }\n\n .logoContainerLeft {\n width: 8rem;\n aspect-ratio: 1 / 1;\n }\n\n .logoHeading {\n max-width: 32.5rem;\n }\n\n .specialEventContainer {\n font-size: 0.8rem;\n min-width: 7rem;\n margin-right: map-get($spacers, 3);\n\n @include media('<=lg') {\n min-width: 6rem;\n font-size: 0.7rem;\n margin-right: map-get($spacers, 2);\n }\n\n @include media('<=md') {\n min-width: 5.5rem;\n font-size: 0.65rem;\n }\n\n @include media('<=sm') {\n min-width: 5rem;\n font-size: 0.6rem;\n }\n }\n\n .headingLarge {\n @include clamp(5);\n font-size: $h3-font-size;\n\n @include media(\"<xl\") {\n font-size: $h4-font-size;\n }\n\n @include media(\"<lg\") {\n @include clamp(4);\n font-size: $h5-font-size;\n }\n\n @include media(\"<md\") {\n font-size: $h6-font-size;\n }\n }\n .heading {\n @include clamp(4);\n \n @include media(\"<=sm\") {\n @include clamp(2);\n }\n \n }\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { ComingSoonTag } from 'libs/shared/apps/calendar/components/coming-soon-tag/ComingSoonTag';\nimport { GenericCalendarDate } from 'libs/shared/apps/calendar/components/generic-calendar-date/GenericCalendarDate';\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { BackButton } from 'libs/shared/components/back-button/BackButton';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BannerPortalContext } from 'libs/shared/context/BannerPortalContext';\nimport { Banner, CalendarEvent, Logo } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport { useBannerHeader } from '../hooks/useBannerHeader';\n\nimport styles from './default-banner-header.module.scss';\n\nfunction getSizeClass(heading: string): string {\n if (heading.length < 160)\n return 'h1';\n\n return styles.headingLarge;\n}\n\nexport interface DefaultBannerHeaderProps {\n heading: string;\n banner?: Banner;\n bannerClassName?: string;\n imageCdnUrl?: string;\n logo?: Logo;\n logoBgColour?: string;\n actions?: ActionOptions[];\n specialEvent?: CalendarEvent;\n backButtonAppLink?: Core.AppLink;\n backButtonText?: string;\n backButtonClasses?: string;\n sortComponent?: JSX.Element;\n blockColourClass?: string;\n actionsDropdownClassName?: string;\n detailsComponent?: () => React.ReactElement;\n imageOptions?: ImageOptions;\n showComingSoon?: boolean;\n alignLogoLeft?: boolean;\n calendarTheme?: CalendarTheme;\n}\n\nconst namespace = 'shared.defaultBannerHeader';\n\nexport const DefaultBannerHeader =\n React.memo(function(props: React.PropsWithChildren<DefaultBannerHeaderProps>): React.ReactElement {\n const { heading, banner, imageCdnUrl, actions, sortComponent, blockColourClass, specialEvent } = props;\n\n const {\n logoUrl,\n portalContainerContext,\n logoFallbackBgClassName,\n containerProps\n } = useBannerHeader({\n heading,\n banner,\n blockColourClass,\n bannerClassName: props.bannerClassName,\n imageCdnUrl,\n logo: props.logo,\n bannerImageOptions: props.imageOptions\n });\n\n const specialEventIsToday = React.useMemo(() => {\n if (!specialEvent || props.showComingSoon)\n return false;\n\n const today = DateHelper.format(new Date(), 'YYYY-MM-DD');\n\n if (!specialEvent.endDate)\n return specialEvent.startDate === today;\n\n return specialEvent.startDate <= today && specialEvent.endDate >= today;\n }, [specialEvent]);\n\n function getSpecialEventMonthText(specialEvent: CalendarEvent): string {\n if (!specialEvent.endDate)\n return DateHelper.format(specialEvent.startDate, 'MMMM');\n\n if (DateHelper.isSame(specialEvent.startDate, specialEvent.endDate, 'month'))\n return DateHelper.format(specialEvent.startDate, 'MMMM');\n\n return `${DateHelper.format(specialEvent.startDate, 'MMM')} - ${DateHelper.format(specialEvent.endDate, 'MMM')}`;\n }\n\n const DetailsComponent = props.detailsComponent;\n\n return PortalHelper.renderInPortalIfExists(\n // \"banner\" is used in playlists in Online. banner-header is used by all other projects\n <header {...containerProps}>\n <div className={`container ${styles.container} position-relative inner-banner`}>\n {props.backButtonAppLink && (\n <div className='pt-3'>\n <BackButton\n appLink={props.backButtonAppLink}\n backToName={props.backButtonText}\n extraClasses={props.backButtonClasses}\n color='white'\n />\n </div>\n )}\n \n <div className={`${props.alignLogoLeft ? 'position-absolute top-50 start-0 translate-middle-y w-100 ps-4' : `${styles.bannerContent} px-2 ${props.logo?.url ? styles.bannerContentWithLogo : ''}`}`}>\n {!!specialEvent && (\n <div className={`position-relative ${styles.specialEventContainer}`}>\n <GenericCalendarDate\n body={{\n type: specialEvent.endDate ? 'range' : 'day',\n text: specialEvent.endDate ?\n `${DateHelper.format(specialEvent.startDate, 'DD')}-${DateHelper.format(specialEvent.endDate, 'DD')}` :\n DateHelper.format(specialEvent.startDate, 'DD')\n }}\n month={getSpecialEventMonthText(specialEvent)}\n theme={props.calendarTheme}\n />\n </div>\n )}\n <div>\n {specialEventIsToday && (\n <div className='rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block'>\n <Text namespace={namespace} phrase='onToday' />\n </div>\n )}\n {props.showComingSoon && (\n <ComingSoonTag className='pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap' />\n )}\n <div className='d-flex align-items-center'>\n {props.alignLogoLeft && props.logo?.url &&\n <div className={`${styles.logoContainerLeft} d-none d-md-block rounded-circle overflow-hidden me-3 ${logoFallbackBgClassName}`}>\n <LazyImage\n src={logoUrl}\n style={{ backgroundColor: props.logoBgColour }}\n />\n </div>\n }\n <h1 className={`text-white text-shadow pe-3 position-static ${styles.heading} ${getSizeClass(heading)} ${props.alignLogoLeft ? 'w-50' : ''}`}>\n {heading}\n {DetailsComponent && <DetailsComponent />}\n </h1>\n </div>\n </div>\n {!!actions && (\n <div className={styles.actionsContainer}>\n <Actions\n actions={actions}\n sortComponent={sortComponent}\n actionsDropdownClassName={props.actionsDropdownClassName}\n />\n </div>\n )}\n </div>\n {!props.alignLogoLeft && !!props.logo?.url &&\n <div className={styles.logoContainer}>\n <img\n src={logoUrl}\n className='rounded-circle'\n />\n </div>\n }\n </div>\n </header>,\n portalContainerContext?.container\n );\n }, (prevProps, nextProps): boolean => (\n prevProps.actions === nextProps.actions\n && prevProps.heading === nextProps.heading\n && prevProps.logo?.url === nextProps.logo?.url\n ));\n\nexport function PartialDefaultBannerHeader(): JSX.Element {\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n return PortalHelper.renderInPortalIfExists(\n <div className={`partial-banner partial-loading-background ${styles.banner}`} />,\n portalContainerContext?.container\n );\n}\n","import React from 'react';\n\nimport { ContentPartnerEventLoggerFn } from 'libs/shared/apps/content-partners/utils/get-content-partner-event-logger/getContentPartnerEventLogger';\n\ninterface VideoState {\n loaded: boolean;\n isPlaying: boolean;\n isFinished: boolean;\n}\n\ninterface VideoControlsProps {\n onPlay?: () => void;\n onPause?: () => void;\n onEnd?: () => void;\n onInit?: () => void;\n onMute?: () => void;\n onUnmute?: () => void;\n /**\n * Milliseconds to delay the the `loaded` state being set to true.\n */\n addDelayOnLoad?: number;\n log?: ContentPartnerEventLoggerFn;\n}\n\nexport function useVideoControls(options?: VideoControlsProps) {\n const ref = React.useRef<HTMLVideoElement>(null);\n\n const [ videoState, setVideoState ] = React.useState<VideoState>({\n loaded: false,\n isPlaying: false,\n // Note: If `loop` is set to true, then `isFinished` will never be true.\n isFinished: false\n });\n\n function setVideoStateProperty<K extends keyof VideoState>(key: K, value: VideoState[K]) {\n setVideoState(prevState => ({ ...prevState, [key]: value }));\n }\n\n const videoEventListenerMap: {[key in keyof HTMLVideoElementEventMap]?: (event: Event) => void } = {\n loadstart: () => {\n options?.onInit?.();\n },\n canplay: () => {\n if (typeof options?.addDelayOnLoad === 'number') {\n pause();\n if (ref.current?.autoplay)\n ref.current.autoplay = false;\n \n setTimeout(() => {\n setVideoStateProperty('loaded', true);\n play();\n }, options.addDelayOnLoad);\n } else {\n setVideoStateProperty('loaded', true);\n }\n },\n play: () => {\n setVideoStateProperty('isPlaying', true);\n options?.onPlay?.();\n },\n pause: () => {\n setVideoStateProperty('isPlaying', false);\n options?.onPause?.();\n },\n ended: () => {\n setVideoState(prevState => ({ ...prevState, isPlaying: false, isFinished: true }));\n options?.onEnd?.();\n }\n };\n\n React.useEffect(() => {\n if (!Object.keys(videoEventListenerMap).length)\n return;\n\n Object.entries(videoEventListenerMap).forEach(([ event, handler ]) => {\n ref.current?.addEventListener(event, handler);\n });\n\n return () => {\n Object.entries(videoEventListenerMap).forEach(([ event, handler ]) => {\n ref.current?.removeEventListener(event, handler);\n });\n };\n }, [ref.current]);\n\n function play() {\n if (videoState.isPlaying)\n return;\n \n ref.current?.play();\n setVideoState(prevState => ({ ...prevState, isPlaying: true, isFinished: false }));\n }\n\n function pause() {\n if (!videoState.isPlaying)\n return;\n \n ref.current?.pause();\n setVideoStateProperty('isPlaying', false);\n }\n\n function togglePlayPause() {\n if (videoState.isPlaying) {\n pause();\n options?.log?.({\n type: 'click-video-banner-controls',\n control: 'pause'\n });\n } else {\n play();\n options?.log?.({\n type: 'click-video-banner-controls',\n control: 'play'\n });\n }\n }\n\n function loop() {\n if (!ref.current)\n return;\n \n ref.current.loop = true;\n }\n\n return {\n videoRef: ref,\n ...videoState,\n play,\n pause,\n togglePlayPause,\n loop\n };\n}\n\ninterface VideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> {\n}\n\nexport const Video = React.forwardRef<HTMLVideoElement, VideoProps>((props, ref) => {\n const {\n autoPlay = false,\n muted = true,\n loop = false,\n controls = false,\n disablePictureInPicture = true,\n disableRemotePlayback = true,\n ...otherProps\n } = props;\n\n return (\n <video\n ref={ref}\n autoPlay={autoPlay}\n muted={muted}\n loop={loop}\n controls={controls}\n disablePictureInPicture={disablePictureInPicture}\n disableRemotePlayback={disableRemotePlayback}\n {...otherProps}\n />\n );\n});\n","import React from 'react';\n\nexport function PauseSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M9.5 6C8.67157 6 8 6.67157 8 7.5V16.5C8 17.3284 8.67157 18 9.5 18C10.3284 18 11 17.3284 11 16.5V7.5C11 6.67157 10.3284 6 9.5 6ZM15.5 6C14.6716 6 14 6.67157 14 7.5V16.5C14 17.3284 14.6716 18 15.5 18C16.3284 18 17 17.3284 17 16.5V7.5C17 6.67157 16.3284 6 15.5 6Z'\n />\n </svg>\n\n );\n}\n","export enum VideoBannerControlOption {\n PlayPause = 'play-pause',\n WebsiteLink = 'website-link'\n}\n\nexport const AllVideoBannerControlOptions: VideoBannerControlOption[] = [\n VideoBannerControlOption.PlayPause,\n VideoBannerControlOption.WebsiteLink\n];\n","import { VideoBannerControlOption } from '../enums/VideoBannerControlOption';\n\nexport type PartnerProfileBannerHeaderContentType = 'text' | 'logo' | 'sign-up';\n\ninterface GetBannerHeaderContentTypeOptions {\n logoUrl?: string;\n isAuthenticated: boolean;\n showVideoBanner: boolean;\n}\n\nexport const PartnerProfileBannerHeaderHelper = {\n getBannerHeaderContentType(\n options: GetBannerHeaderContentTypeOptions\n ): PartnerProfileBannerHeaderContentType {\n let contentType: PartnerProfileBannerHeaderContentType = 'text';\n \n if (options.logoUrl)\n contentType = 'logo';\n\n if (!options.isAuthenticated && options.showVideoBanner)\n contentType = 'sign-up';\n \n return contentType;\n },\n\n showWebsiteLinkControls(controls: VideoBannerControlOption[], websiteUrl: string, isStudent: boolean) {\n if (isStudent)\n return false;\n\n return !!websiteUrl && controls.includes(VideoBannerControlOption.WebsiteLink);\n }\n};\n","@import '~styles/utils/mixins';\n@import '~styles/utils/include-media';\n\n:local {\n $logoContainerWidth: 13.75rem; // 220px From design and what looks good\n $logoPositionBottomOffset: 1rem; // 16px offset\n\n .videoBannerRadius {\n border-radius: 0;\n\n @include media('>=xl') {\n border-radius: $border-radius-lg;\n }\n }\n\n .nowrap {\n white-space: nowrap;\n }\n\n\n .hasLogo {\n padding-bottom: $logoPositionBottomOffset;\n }\n\n .logoPosition {\n bottom: -$logoPositionBottomOffset;\n }\n\n .logoContainer {\n width: $logoContainerWidth;\n }\n\n .container {\n @include media('<=xl') {\n max-width: 100%;\n }\n }\n\n .signUpContainer {\n $leftOffset: $logoContainerWidth + map-get($spacers, 4);\n left: calc(#{$leftOffset});\n width: calc(100% - #{$leftOffset} - map-get($spacers, 1));\n z-index: 1;\n }\n\n .signUpContent {\n background: rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(10px);\n -webkit-backdrop-filter: blur(10px);\n border: 1px solid rgba(255, 255, 255, 0.35);\n border-left: none;\n border-right: none;\n }\n\n .signUpHeading {\n white-space: nowrap;\n\n @include media('<=md') {\n white-space: normal;\n }\n }\n\n .emailInput {\n @include media('>=md') {\n min-width: 19.375rem; // from design\n }\n }\n\n .videoControls {\n top: 1rem;\n right: 1rem;\n transition: opacity 0.5s ease-in-out;\n }\n\n .videoContent {\n opacity: 0;\n transition: opacity 0.5s ease-in-out;\n }\n\n .videoVisible {\n opacity: 1;\n }\n}","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { RectangularLogo } from 'libs/shared/components/rectangular-logo/RectangularLogo';\n\nimport { PartnerProfileBannerHeaderContentType } from '../utils/PartnerProfileBannerHeaderHelper';\n\nimport styles from './partner-profile-banner-header.module.scss';\n\nconst namespace = 'bannerHeader.partnerProfileBannerHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PartnerProfileBannerHeaderContentProps {\n type: PartnerProfileBannerHeaderContentType;\n name: string;\n onClickSignUp: (email: string) => void;\n logoUrl?: string;\n bgColor?: string;\n}\n\nfunction BannerWithText(props: PartnerProfileBannerHeaderContentProps): JSX.Element {\n return (\n <div className={classNames('container position-relative inner-banner', styles.container)}>\n <div className='position-absolute bottom-0 start-0 mb-3 w-100 px-4'>\n <div className='d-flex align-items-center'>\n <h1 className='text-white text-shadow pe-3 position-static mb-0'>{props.name}</h1>\n </div>\n </div>\n </div>\n );\n}\n\nfunction BannerWithLogo(props: PartnerProfileBannerHeaderContentProps): JSX.Element {\n return (\n <div className={classNames('container position-relative inner-banner', styles.container)}>\n <div className={classNames('position-absolute start-0 px-4', styles.logoPosition)}>\n <div className={styles.logoContainer}>\n <RectangularLogo\n logoUrl={props.logoUrl}\n bgColor={props.bgColor}\n name={props.name}\n classNames={{\n container: 'border border-white'\n }}\n />\n </div>\n </div>\n </div>\n );\n}\n\nfunction BannerWithSignUp(props: PartnerProfileBannerHeaderContentProps): JSX.Element {\n const [ email, setEmail ] = React.useState('');\n\n function onSubmit(e: React.FormEvent<HTMLFormElement>): void {\n e.preventDefault();\n props.onClickSignUp(email);\n }\n\n return (\n <div className={classNames('container position-relative inner-banner', styles.container)}>\n <div className={classNames('position-absolute start-0 px-4 ', styles.logoPosition)}>\n <div className={styles.logoContainer}>\n <RectangularLogo\n logoUrl={props.logoUrl}\n bgColor={props.bgColor}\n name={props.name}\n classNames={{\n container: 'border border-white'\n }}\n />\n </div>\n </div>\n <div\n className={classNames(\n 'position-absolute bottom-0 pb-2 pb-md-3 px-0 px-sm-3 d-none d-xl-block',\n styles.signUpContainer\n )}\n >\n <div\n className={classNames(\n 'd-flex align-items-center justify-content-between gap-2 flex-wrap rounded-3 p-3',\n styles.signUpContent\n )}\n >\n <div className='d-sm-flex align-items-center gap-2 '>\n <h4 className={classNames('text-white text-shadow mb-0', styles.signUpHeading)}>\n {getPhrase('description')}\n </h4>\n </div>\n <form className='d-flex align-items-center gap-2 flex-grow-1 flex-md-grow-0' onSubmit={onSubmit}>\n <input\n type='email'\n className={classNames('form-control w-100', styles.emailInput)}\n placeholder={getPhrase('emailPlaceholder')}\n value={email}\n onChange={e => setEmail(e.target.value)}\n />\n <Button type='submit' variant='dark' className={styles.nowrap}>\n {getPhrase('cta')}\n </Button>\n </form>\n </div>\n </div>\n </div>\n );\n}\n\nconst HeaderTypeContentMap: Record<\n PartnerProfileBannerHeaderContentType,\n React.ComponentType<PartnerProfileBannerHeaderContentProps>\n> = {\n 'logo': BannerWithLogo,\n 'sign-up': BannerWithSignUp,\n 'text': BannerWithText\n};\n\nexport function PartnerProfileBannerHeaderContent(props: PartnerProfileBannerHeaderContentProps): JSX.Element {\n const ContentComponent = HeaderTypeContentMap[props.type];\n return <ContentComponent {...props} />;\n}\n","import React from 'react';\n\nimport { LocationUtils } from 'libs/common/backbone/core';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { ContentPartnerEventLoggerFn } from 'libs/shared/apps/content-partners/utils/get-content-partner-event-logger/getContentPartnerEventLogger';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useVideoControls, Video } from 'libs/shared/components/video/Video';\nimport { BannerPortalContext } from 'libs/shared/context/BannerPortalContext';\nimport { ResizeType } from 'libs/shared/enums/Images';\nimport { PauseSvg } from 'libs/shared/images/svg/actions/PauseSvg';\nimport { PlaySvg } from 'libs/shared/images/svg/actions/PlaySvg';\nimport { LinkSvg } from 'libs/shared/images/svg/objects/LinkSvg';\nimport { Banner, Logo } from 'libs/shared/interfaces';\n\nimport { AllVideoBannerControlOptions, VideoBannerControlOption } from '../enums/VideoBannerControlOption';\nimport { useBannerHeader } from '../hooks/useBannerHeader';\nimport { PartnerProfileBannerHeaderHelper } from '../utils/PartnerProfileBannerHeaderHelper';\n\nimport { PartnerProfileBannerHeaderContent } from './PartnerProfileBannerHeaderContent';\n\nimport styles from './partner-profile-banner-header.module.scss';\n\nconst namespace = 'bannerHeader.partnerProfileBannerHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoBannerContentProps {\n videoUrl: string;\n className?: string;\n videoRef: React.RefObject<HTMLVideoElement>;\n loop?: boolean;\n}\n\nfunction VideoBannerContent(props: VideoBannerContentProps): JSX.Element {\n return (\n <div className={classNames('position-absolute top-0 start-0 w-100 h-100 overflow-hidden', props.className, styles.videoBannerRadius)}>\n <Video ref={props.videoRef} autoPlay muted controls={false} loop={props.loop} className='w-100 h-100 object-fit-cover position-relative'>\n <source src={props.videoUrl} type='video/mp4' />\n </Video>\n </div>\n );\n}\n\ninterface VideoBannerControlsProps {\n isPlaying: boolean;\n togglePlayPause: () => void;\n className?: string;\n controls?: VideoBannerControlOption[];\n websiteUrl?: string;\n isStudent: boolean;\n log?: ContentPartnerEventLoggerFn;\n}\n\nfunction VideoBannerControls(props: VideoBannerControlsProps): JSX.Element {\n const PlayPauseIcon = props.isPlaying ? PauseSvg : PlaySvg;\n\n function onClickWebsiteLink(): void {\n if (!props.websiteUrl) return;\n LocationUtils.PageLoad(props.websiteUrl, true);\n props.log?.({\n type: 'click-video-banner-controls',\n control: 'website-link'\n });\n }\n \n const controls = props.controls || AllVideoBannerControlOptions;\n const showWebsiteLinkControls = PartnerProfileBannerHeaderHelper.showWebsiteLinkControls(\n controls,\n props.websiteUrl,\n props.isStudent\n );\n\n return (\n <div className={classNames(\n styles.videoControls,\n 'position-absolute d-flex gap-2 ',\n props.isPlaying && 'banner-header-video--controls',\n props.className\n )}>\n {showWebsiteLinkControls && (\n <IconButton\n svg={LinkSvg}\n svgSize={SvgContainerSize.Standard}\n className='bg-gray-200 rounded-circle cursor-pointer'\n onClick={onClickWebsiteLink}\n ariaLabel={getPhrase('viewWebsite')}\n role='button'\n tooltip={getPhrase('viewWebsite')}\n tooltipTrigger={[ 'hover', 'focus' ]}\n />\n )}\n {controls.includes(VideoBannerControlOption.PlayPause) && (\n <IconButton\n svg={PlayPauseIcon}\n svgSize={SvgContainerSize.Standard}\n className='bg-gray-200 rounded-circle cursor-pointer'\n onClick={props.togglePlayPause}\n ariaLabel={props.isPlaying ? getPhrase('pause') : getPhrase('play')}\n role='button'\n tooltip={props.isPlaying ? getPhrase('pause') : getPhrase('play')}\n tooltipTrigger={[ 'hover', 'focus' ]}\n />\n )}\n </div>\n );\n}\n\nexport function PartialPartnerProfileBannerHeader(): JSX.Element {\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n return PortalHelper.renderInPortalIfExists(\n <div className='partial-banner partial-loading-background' />,\n portalContainerContext?.container\n );\n}\n\nexport type PartnerBannerHeaderType = 'static' | 'video';\n\nexport interface PartnerProfileBannerHeaderProps {\n heading: string;\n onClickSignUp: (email: string) => void;\n isAuthenticated: boolean;\n isStudent: boolean;\n partnerBannerType?: PartnerBannerHeaderType;\n banner?: Banner;\n logo?: Logo;\n videoUrl?: string;\n imageCdnUrl?: string;\n logoBgColour?: string;\n actions?: ActionOptions[];\n blockColourClass?: string;\n websiteUrl?: string;\n log?: ContentPartnerEventLoggerFn;\n}\n\nconst VIDEO_BANNER_WIDTH = 1920;\nconst VIDEO_BANNER_RATIO = '1200:330';\n\nexport function PartnerProfileBannerHeader(props: PartnerProfileBannerHeaderProps): JSX.Element {\n const { heading, isAuthenticated, partnerBannerType = 'static', websiteUrl } = props;\n\n const {\n videoRef,\n isPlaying,\n isFinished,\n loaded,\n togglePlayPause\n } = useVideoControls({\n addDelayOnLoad: 2500,\n log: props.log\n });\n\n const showVideoBanner = partnerBannerType === 'video' && !!props.videoUrl;\n const isVideoVisible = loaded && !isFinished;\n\n const { containerProps, portalContainerContext, logoUrl } = useBannerHeader({\n heading,\n banner: props.banner,\n logo: props.logo,\n imageCdnUrl: props.imageCdnUrl,\n blockColourClass: props.blockColourClass,\n bannerClassName: classNames(\n showVideoBanner && 'banner-header-video position-relative',\n showVideoBanner && styles.videoBannerRadius\n ),\n bannerImageOptions: showVideoBanner ? {\n width: VIDEO_BANNER_WIDTH,\n ratio: VIDEO_BANNER_RATIO,\n resizeType: ResizeType.Cover\n } : null\n });\n\n const contentType = PartnerProfileBannerHeaderHelper.getBannerHeaderContentType({\n logoUrl,\n isAuthenticated,\n showVideoBanner\n });\n\n const showLogo = contentType === 'logo' || contentType === 'sign-up';\n const controls = isVideoVisible ?\n AllVideoBannerControlOptions :\n [ VideoBannerControlOption.PlayPause, VideoBannerControlOption.WebsiteLink ];\n \n return PortalHelper.renderInPortalIfExists(\n <header className={classNames(\n styles.header,\n showVideoBanner && 'px-0 px-xl-3 pt-xl-3 ',\n showLogo && styles.hasLogo\n )}>\n <div {...containerProps}>\n {showVideoBanner && (\n <VideoBannerContent\n videoUrl={props.videoUrl}\n videoRef={videoRef}\n className={classNames(styles.videoContent, isVideoVisible && styles.videoVisible)}\n // If loop is true then isFinished will never be true.\n loop={!props.banner}\n />\n )}\n <PartnerProfileBannerHeaderContent\n type={contentType}\n name={heading}\n logoUrl={logoUrl}\n bgColor={props.logoBgColour}\n onClickSignUp={props.onClickSignUp}\n />\n {showVideoBanner && (\n <VideoBannerControls\n isPlaying={isPlaying}\n togglePlayPause={togglePlayPause}\n controls={controls}\n websiteUrl={websiteUrl}\n isStudent={props.isStudent}\n log={props.log}\n />\n )}\n </div>\n </header>,\n portalContainerContext?.container\n );\n}\n","import React from 'react';\n\nimport {\n DefaultBannerHeader,\n DefaultBannerHeaderProps,\n PartialDefaultBannerHeader\n} from './default-banner-header/DefaultBannerHeader';\nimport {\n PartialPartnerProfileBannerHeader,\n PartnerProfileBannerHeader,\n PartnerProfileBannerHeaderProps\n} from './partner-profile-banner-header/PartnerProfileBannerHeader';\n\ntype InternalDefaultBannerHeaderProps = DefaultBannerHeaderProps & {\n type?: 'default'\n};\n\ntype InternalPartnerProfileBannerHeaderProps = PartnerProfileBannerHeaderProps & {\n type?: 'partner-profile'\n};\n\ntype BannerHeaderProps = InternalDefaultBannerHeaderProps | InternalPartnerProfileBannerHeaderProps;\n\ntype BannerType = BannerHeaderProps['type'];\ntype BannerTypeOptions = {\n Component: React.ComponentType<any>,\n PartialComponent: React.ComponentType<any>\n};\n\nconst bannerTypeMap: Record<BannerType, BannerTypeOptions> = {\n 'default': {\n Component: DefaultBannerHeader,\n PartialComponent: PartialDefaultBannerHeader\n },\n 'partner-profile': {\n Component: PartnerProfileBannerHeader,\n PartialComponent: PartialPartnerProfileBannerHeader\n }\n};\n\nexport function BannerHeader(props: BannerHeaderProps): JSX.Element {\n const { type = 'default' } = props;\n\n const Component = bannerTypeMap[type].Component;\n return <Component {...props} />;\n}\n\ninterface PartialBannerHeaderProps {\n type?: BannerType;\n}\n\nexport function PartialBannerHeader(props: PartialBannerHeaderProps): JSX.Element {\n const { type = 'default' } = props;\n\n const PartialComponent = bannerTypeMap[type].PartialComponent;\n return <PartialComponent {...props} />;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"B5jBIPaP.chunk.js","names":[],"sources":["../../../../libs/common/src/react/utils/PortalHelper.ts","../../../../libs/shared/src/components/back-button/BackButton.tsx","../../../../libs/shared/src/components/banner-header/hooks/useBannerHeader.ts","../../../../libs/shared/src/components/banner-header/default-banner-header/default-banner-header.module.scss","../../../../libs/shared/src/components/banner-header/default-banner-header/DefaultBannerHeader.tsx","../../../../libs/shared/src/components/video/Video.tsx","../../../../libs/shared/src/images/svg/actions/PauseSvg.tsx","../../../../libs/shared/src/components/banner-header/enums/VideoBannerControlOption.ts","../../../../libs/shared/src/components/banner-header/utils/PartnerProfileBannerHeaderHelper.ts","../../../../libs/shared/src/components/banner-header/partner-profile-banner-header/partner-profile-banner-header.module.scss","../../../../libs/shared/src/components/banner-header/partner-profile-banner-header/PartnerProfileBannerHeaderContent.tsx","../../../../libs/shared/src/components/banner-header/partner-profile-banner-header/PartnerProfileBannerHeader.tsx","../../../../libs/shared/src/components/banner-header/BannerHeader.tsx"],"sourcesContent":["import React from 'react';\nimport { createPortal } from 'react-dom';\n\nexport const PortalHelper = {\n renderInPortalIfExists(component: React.ReactElement, portalContainer: Element | null): React.ReactElement {\n if (portalContainer)\n return createPortal(component, portalContainer);\n\n return component;\n }\n};\n","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ChevronLeftSvg } from 'libs/shared/images/svg/arrows/ChevronLeftSvg';\n\nconst namespace = 'shared.backButton';\n\ninterface BackButtonProps {\n appLink: Core.AppLink;\n backToName?: string;\n color?: 'black' | 'white';\n extraClasses?: string;\n /**\n * Whether or not the button text has a text shadow. Defaults to true\n */\n textShadow?: boolean;\n}\n\nBackButton.defaultProps = {\n color: 'black',\n extraClasses: ''\n};\n\nexport function BackButton(props: BackButtonProps): React.ReactElement {\n const { backToName, appLink, color, extraClasses, textShadow } = {\n textShadow: true,\n ...props\n };\n\n const backPhrase = backToName ?\n LanguageService.getPhrase(namespace, 'backTo', { backToName }) :\n LanguageService.getPhrase(namespace, 'back');\n\n const colorClass = color === 'black' ? '' : 'text-white';\n const textShadowClass = textShadow ? 'text-shadow' : '';\n\n return (\n <AppLink\n appLink={appLink}\n className={`d-inline-flex align-items-center h5 mb-0 ${extraClasses} ${colorClass} ${textShadowClass}`}\n >\n <SvgContainer svg={ChevronLeftSvg} size={SvgContainerSize.Medium} />\n <span className='ms-1'>{backPhrase}</span>\n </AppLink>\n );\n}\n","import React from 'react';\n\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\nimport { BannerPortalContext } from 'libs/shared/context/BannerPortalContext';\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { Breakpoints, useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Banner, Logo } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nconst RATIO = `${ImageMinDimensions[ImageType.Banners].width}:${ImageMinDimensions[ImageType.Banners].height}`;\nconst DEFAULT_WIDTH = 1200; // This is ImageSize.Large for a Banner.\nconst LARGE_SCREEN_WIDTH = 1920;\n\nfunction getImageWidth(breakpoints: Breakpoints): number {\n if (breakpoints.xxl) return LARGE_SCREEN_WIDTH;\n\n return DEFAULT_WIDTH;\n}\n\ntype ContainerProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;\n\nfunction getContainerProps(\n banner?: Banner,\n bannerUrl?: string,\n bannerClassName?: string,\n blockColourClass?: string\n): ContainerProps {\n const containerProps: ContainerProps = {\n className: `banner banner-header ${bannerClassName}`,\n style: bannerUrl ? { backgroundImage: `url('${bannerUrl}')` } : {}\n };\n\n if (!banner && blockColourClass) {\n delete containerProps.style;\n containerProps.className += ` ${blockColourClass}`;\n }\n\n return containerProps;\n}\n\ninterface UseBannerHeaderOptions {\n heading: string;\n\n logo?: Logo;\n banner?: Banner;\n imageCdnUrl?: string;\n bannerImageOptions?: ImageOptions;\n bannerClassName?: string;\n blockColourClass?: string;\n}\n\nexport function useBannerHeader(options: UseBannerHeaderOptions) {\n const { heading, banner, logo, imageCdnUrl, bannerClassName, blockColourClass } = options;\n\n const breakpoints = useBreakpoints();\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n const imageWidth = getImageWidth(breakpoints);\n\n const bannerImageOptions = options.bannerImageOptions || {\n width: imageWidth,\n ratio: RATIO,\n resizeType: ResizeType.Cover\n };\n\n const bannerUrl =\n !!banner && !!imageCdnUrl ?\n ImageHelper.createBannerUrl(\n banner,\n {\n fallbackBaseUrl: imageCdnUrl,\n fallbackCategoryName: heading,\n type: ImageType.Banners\n },\n bannerImageOptions\n ) :\n undefined;\n\n const logoFallbackBgClassName = getBgColorClass(heading, BG_COLOUR_CLASS_NAMES);\n const logoUrl = !!logo && !!imageCdnUrl ? ImageHelper.createUrl(logo.url, { size: ImageSize.Medium }) : undefined;\n const containerProps = getContainerProps(banner, bannerUrl, bannerClassName, blockColourClass);\n\n return {\n logoUrl,\n bannerUrl,\n containerProps,\n portalContainerContext,\n logoFallbackBgClassName\n };\n}\n","@import '~styles/utils/mixins';\n@import '~styles/utils/include-media';\n:local {\n .bannerContent {\n position: absolute;\n bottom: map-get($spacers, 3);\n right: map-get($spacers, 3);\n left: map-get($spacers, 3);\n display: flex;\n align-items: flex-end;\n\n .actionsContainer {\n margin-left: auto;\n padding-left: map-get($spacers, 2);\n }\n\n @include media('<=md') {\n bottom: 1rem;\n }\n }\n\n .bannerContentWithLogo {\n right: 7rem + map-get($spacers, 3);\n }\n\n .container {\n @include media('<=xl') {\n max-width: 100%;\n }\n }\n\n .logoContainer {\n position: absolute;\n top: 50%;\n right: map-get($spacers, 3);\n transform: translateY(-50%);\n height: 60%;\n max-height: 7.5rem;\n\n img {\n height: 100%;\n }\n }\n\n .logoContainerLeft {\n width: 8rem;\n aspect-ratio: 1 / 1;\n }\n\n .logoHeading {\n max-width: 32.5rem;\n }\n\n .specialEventContainer {\n font-size: 0.8rem;\n min-width: 7rem;\n margin-right: map-get($spacers, 3);\n\n @include media('<=lg') {\n min-width: 6rem;\n font-size: 0.7rem;\n margin-right: map-get($spacers, 2);\n }\n\n @include media('<=md') {\n min-width: 5.5rem;\n font-size: 0.65rem;\n }\n\n @include media('<=sm') {\n min-width: 5rem;\n font-size: 0.6rem;\n }\n }\n\n .headingLarge {\n @include clamp(5);\n font-size: $h3-font-size;\n\n @include media(\"<xl\") {\n font-size: $h4-font-size;\n }\n\n @include media(\"<lg\") {\n @include clamp(4);\n font-size: $h5-font-size;\n }\n\n @include media(\"<md\") {\n font-size: $h6-font-size;\n }\n }\n .heading {\n @include clamp(4);\n \n @include media(\"<=sm\") {\n @include clamp(2);\n }\n \n }\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { ComingSoonTag } from 'libs/shared/apps/calendar/components/coming-soon-tag/ComingSoonTag';\nimport { GenericCalendarDate } from 'libs/shared/apps/calendar/components/generic-calendar-date/GenericCalendarDate';\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { BackButton } from 'libs/shared/components/back-button/BackButton';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BannerPortalContext } from 'libs/shared/context/BannerPortalContext';\nimport { Banner, CalendarEvent, Logo } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport { useBannerHeader } from '../hooks/useBannerHeader';\n\nimport styles from './default-banner-header.module.scss';\n\nfunction getSizeClass(heading: string): string {\n if (heading.length < 160)\n return 'h1';\n\n return styles.headingLarge;\n}\n\nexport interface DefaultBannerHeaderProps {\n heading: string;\n banner?: Banner;\n bannerClassName?: string;\n imageCdnUrl?: string;\n logo?: Logo;\n logoBgColour?: string;\n actions?: ActionOptions[];\n specialEvent?: CalendarEvent;\n backButtonAppLink?: Core.AppLink;\n backButtonText?: string;\n backButtonClasses?: string;\n sortComponent?: JSX.Element;\n blockColourClass?: string;\n actionsDropdownClassName?: string;\n detailsComponent?: () => React.ReactElement;\n imageOptions?: ImageOptions;\n showComingSoon?: boolean;\n alignLogoLeft?: boolean;\n calendarTheme?: CalendarTheme;\n}\n\nconst namespace = 'shared.defaultBannerHeader';\n\nexport const DefaultBannerHeader =\n React.memo(function(props: React.PropsWithChildren<DefaultBannerHeaderProps>): React.ReactElement {\n const { heading, banner, imageCdnUrl, actions, sortComponent, blockColourClass, specialEvent } = props;\n\n const {\n logoUrl,\n portalContainerContext,\n logoFallbackBgClassName,\n containerProps\n } = useBannerHeader({\n heading,\n banner,\n blockColourClass,\n bannerClassName: props.bannerClassName,\n imageCdnUrl,\n logo: props.logo,\n bannerImageOptions: props.imageOptions\n });\n\n const specialEventIsToday = React.useMemo(() => {\n if (!specialEvent || props.showComingSoon)\n return false;\n\n const today = DateHelper.format(new Date(), 'YYYY-MM-DD');\n\n if (!specialEvent.endDate)\n return specialEvent.startDate === today;\n\n return specialEvent.startDate <= today && specialEvent.endDate >= today;\n }, [specialEvent]);\n\n function getSpecialEventMonthText(specialEvent: CalendarEvent): string {\n if (!specialEvent.endDate)\n return DateHelper.format(specialEvent.startDate, 'MMMM');\n\n if (DateHelper.isSame(specialEvent.startDate, specialEvent.endDate, 'month'))\n return DateHelper.format(specialEvent.startDate, 'MMMM');\n\n return `${DateHelper.format(specialEvent.startDate, 'MMM')} - ${DateHelper.format(specialEvent.endDate, 'MMM')}`;\n }\n\n const DetailsComponent = props.detailsComponent;\n\n return PortalHelper.renderInPortalIfExists(\n // \"banner\" is used in playlists in Online. banner-header is used by all other projects\n <header {...containerProps}>\n <div className={`container ${styles.container} position-relative inner-banner`}>\n {props.backButtonAppLink && (\n <div className='pt-3'>\n <BackButton\n appLink={props.backButtonAppLink}\n backToName={props.backButtonText}\n extraClasses={props.backButtonClasses}\n color='white'\n />\n </div>\n )}\n \n <div className={`${props.alignLogoLeft ? 'position-absolute top-50 start-0 translate-middle-y w-100 ps-4' : `${styles.bannerContent} px-2 ${props.logo?.url ? styles.bannerContentWithLogo : ''}`}`}>\n {!!specialEvent && (\n <div className={`position-relative ${styles.specialEventContainer}`}>\n <GenericCalendarDate\n body={{\n type: specialEvent.endDate ? 'range' : 'day',\n text: specialEvent.endDate ?\n `${DateHelper.format(specialEvent.startDate, 'DD')}-${DateHelper.format(specialEvent.endDate, 'DD')}` :\n DateHelper.format(specialEvent.startDate, 'DD')\n }}\n month={getSpecialEventMonthText(specialEvent)}\n theme={props.calendarTheme}\n />\n </div>\n )}\n <div>\n {specialEventIsToday && (\n <div className='rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block'>\n <Text namespace={namespace} phrase='onToday' />\n </div>\n )}\n {props.showComingSoon && (\n <ComingSoonTag className='pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap' />\n )}\n <div className='d-flex align-items-center'>\n {props.alignLogoLeft && props.logo?.url &&\n <div className={`${styles.logoContainerLeft} d-none d-md-block rounded-circle overflow-hidden me-3 ${logoFallbackBgClassName}`}>\n <LazyImage\n src={logoUrl}\n style={{ backgroundColor: props.logoBgColour }}\n />\n </div>\n }\n <h1 className={`text-white text-shadow pe-3 position-static ${styles.heading} ${getSizeClass(heading)} ${props.alignLogoLeft ? 'w-50' : ''}`}>\n {heading}\n {DetailsComponent && <DetailsComponent />}\n </h1>\n </div>\n </div>\n {!!actions && (\n <div className={styles.actionsContainer}>\n <Actions\n actions={actions}\n sortComponent={sortComponent}\n actionsDropdownClassName={props.actionsDropdownClassName}\n />\n </div>\n )}\n </div>\n {!props.alignLogoLeft && !!props.logo?.url &&\n <div className={styles.logoContainer}>\n <img\n src={logoUrl}\n className='rounded-circle'\n />\n </div>\n }\n </div>\n </header>,\n portalContainerContext?.container\n );\n }, (prevProps, nextProps): boolean => (\n prevProps.actions === nextProps.actions\n && prevProps.heading === nextProps.heading\n && prevProps.logo?.url === nextProps.logo?.url\n ));\n\nexport function PartialDefaultBannerHeader(): JSX.Element {\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n return PortalHelper.renderInPortalIfExists(\n <div className={`partial-banner partial-loading-background ${styles.banner}`} />,\n portalContainerContext?.container\n );\n}\n","import React from 'react';\n\nimport { ContentPartnerEventLoggerFn } from 'libs/shared/apps/content-partners/utils/get-content-partner-event-logger/getContentPartnerEventLogger';\n\ninterface VideoState {\n loaded: boolean;\n isPlaying: boolean;\n isFinished: boolean;\n}\n\ninterface VideoControlsProps {\n onPlay?: () => void;\n onPause?: () => void;\n onEnd?: () => void;\n onInit?: () => void;\n onMute?: () => void;\n onUnmute?: () => void;\n /**\n * Milliseconds to delay the the `loaded` state being set to true.\n */\n addDelayOnLoad?: number;\n log?: ContentPartnerEventLoggerFn;\n}\n\nexport function useVideoControls(options?: VideoControlsProps) {\n const ref = React.useRef<HTMLVideoElement>(null);\n\n const [ videoState, setVideoState ] = React.useState<VideoState>({\n loaded: false,\n isPlaying: false,\n // Note: If `loop` is set to true, then `isFinished` will never be true.\n isFinished: false\n });\n\n function setVideoStateProperty<K extends keyof VideoState>(key: K, value: VideoState[K]) {\n setVideoState(prevState => ({ ...prevState, [key]: value }));\n }\n\n const videoEventListenerMap: {[key in keyof HTMLVideoElementEventMap]?: (event: Event) => void } = {\n loadstart: () => {\n options?.onInit?.();\n },\n canplay: () => {\n if (typeof options?.addDelayOnLoad === 'number') {\n pause();\n if (ref.current?.autoplay)\n ref.current.autoplay = false;\n \n setTimeout(() => {\n setVideoStateProperty('loaded', true);\n play();\n }, options.addDelayOnLoad);\n } else {\n setVideoStateProperty('loaded', true);\n }\n },\n play: () => {\n setVideoStateProperty('isPlaying', true);\n options?.onPlay?.();\n },\n pause: () => {\n setVideoStateProperty('isPlaying', false);\n options?.onPause?.();\n },\n ended: () => {\n setVideoState(prevState => ({ ...prevState, isPlaying: false, isFinished: true }));\n options?.onEnd?.();\n }\n };\n\n React.useEffect(() => {\n if (!Object.keys(videoEventListenerMap).length)\n return;\n\n Object.entries(videoEventListenerMap).forEach(([ event, handler ]) => {\n ref.current?.addEventListener(event, handler);\n });\n\n return () => {\n Object.entries(videoEventListenerMap).forEach(([ event, handler ]) => {\n ref.current?.removeEventListener(event, handler);\n });\n };\n }, [ref.current]);\n\n function play() {\n if (videoState.isPlaying)\n return;\n \n ref.current?.play();\n setVideoState(prevState => ({ ...prevState, isPlaying: true, isFinished: false }));\n }\n\n function pause() {\n if (!videoState.isPlaying)\n return;\n \n ref.current?.pause();\n setVideoStateProperty('isPlaying', false);\n }\n\n function togglePlayPause() {\n if (videoState.isPlaying) {\n pause();\n options?.log?.({\n type: 'click-video-banner-controls',\n control: 'pause'\n });\n } else {\n play();\n options?.log?.({\n type: 'click-video-banner-controls',\n control: 'play'\n });\n }\n }\n\n function loop() {\n if (!ref.current)\n return;\n \n ref.current.loop = true;\n }\n\n return {\n videoRef: ref,\n ...videoState,\n play,\n pause,\n togglePlayPause,\n loop\n };\n}\n\ninterface VideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> {\n}\n\nexport const Video = React.forwardRef<HTMLVideoElement, VideoProps>((props, ref) => {\n const {\n autoPlay = false,\n muted = true,\n loop = false,\n controls = false,\n disablePictureInPicture = true,\n disableRemotePlayback = true,\n ...otherProps\n } = props;\n\n return (\n <video\n ref={ref}\n autoPlay={autoPlay}\n muted={muted}\n loop={loop}\n controls={controls}\n disablePictureInPicture={disablePictureInPicture}\n disableRemotePlayback={disableRemotePlayback}\n {...otherProps}\n />\n );\n});\n","import React from 'react';\n\nexport function PauseSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M9.5 6C8.67157 6 8 6.67157 8 7.5V16.5C8 17.3284 8.67157 18 9.5 18C10.3284 18 11 17.3284 11 16.5V7.5C11 6.67157 10.3284 6 9.5 6ZM15.5 6C14.6716 6 14 6.67157 14 7.5V16.5C14 17.3284 14.6716 18 15.5 18C16.3284 18 17 17.3284 17 16.5V7.5C17 6.67157 16.3284 6 15.5 6Z'\n />\n </svg>\n\n );\n}\n","export enum VideoBannerControlOption {\n PlayPause = 'play-pause',\n WebsiteLink = 'website-link'\n}\n\nexport const AllVideoBannerControlOptions: VideoBannerControlOption[] = [\n VideoBannerControlOption.PlayPause,\n VideoBannerControlOption.WebsiteLink\n];\n","import { VideoBannerControlOption } from '../enums/VideoBannerControlOption';\n\nexport type PartnerProfileBannerHeaderContentType = 'text' | 'logo' | 'sign-up';\n\ninterface GetBannerHeaderContentTypeOptions {\n logoUrl?: string;\n isAuthenticated: boolean;\n showVideoBanner: boolean;\n}\n\nexport const PartnerProfileBannerHeaderHelper = {\n getBannerHeaderContentType(\n options: GetBannerHeaderContentTypeOptions\n ): PartnerProfileBannerHeaderContentType {\n let contentType: PartnerProfileBannerHeaderContentType = 'text';\n \n if (options.logoUrl)\n contentType = 'logo';\n\n if (!options.isAuthenticated && options.showVideoBanner)\n contentType = 'sign-up';\n \n return contentType;\n },\n\n showWebsiteLinkControls(controls: VideoBannerControlOption[], websiteUrl: string, isStudent: boolean) {\n if (isStudent)\n return false;\n\n return !!websiteUrl && controls.includes(VideoBannerControlOption.WebsiteLink);\n }\n};\n","@import '~styles/utils/mixins';\n@import '~styles/utils/include-media';\n\n:local {\n $logoContainerWidth: 13.75rem; // 220px From design and what looks good\n $logoPositionBottomOffset: 1rem; // 16px offset\n\n .videoBannerRadius {\n border-radius: 0;\n\n @include media('>=xl') {\n border-radius: $border-radius-lg;\n }\n }\n\n .nowrap {\n white-space: nowrap;\n }\n\n\n .hasLogo {\n padding-bottom: $logoPositionBottomOffset;\n }\n\n .logoPosition {\n bottom: -$logoPositionBottomOffset;\n }\n\n .logoContainer {\n width: $logoContainerWidth;\n }\n\n .container {\n @include media('<=xl') {\n max-width: 100%;\n }\n }\n\n .signUpContainer {\n $leftOffset: $logoContainerWidth + map-get($spacers, 4);\n left: calc(#{$leftOffset});\n width: calc(100% - #{$leftOffset} - map-get($spacers, 1));\n z-index: 1;\n }\n\n .signUpContent {\n background: rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(10px);\n -webkit-backdrop-filter: blur(10px);\n border: 1px solid rgba(255, 255, 255, 0.35);\n border-left: none;\n border-right: none;\n }\n\n .signUpHeading {\n white-space: nowrap;\n\n @include media('<=md') {\n white-space: normal;\n }\n }\n\n .emailInput {\n @include media('>=md') {\n min-width: 19.375rem; // from design\n }\n }\n\n .videoControls {\n top: 1rem;\n right: 1rem;\n transition: opacity 0.5s ease-in-out;\n }\n\n .videoContent {\n opacity: 0;\n transition: opacity 0.5s ease-in-out;\n }\n\n .videoVisible {\n opacity: 1;\n }\n}","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { RectangularLogo } from 'libs/shared/components/rectangular-logo/RectangularLogo';\n\nimport { PartnerProfileBannerHeaderContentType } from '../utils/PartnerProfileBannerHeaderHelper';\n\nimport styles from './partner-profile-banner-header.module.scss';\n\nconst namespace = 'bannerHeader.partnerProfileBannerHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PartnerProfileBannerHeaderContentProps {\n type: PartnerProfileBannerHeaderContentType;\n name: string;\n onClickSignUp: (email: string) => void;\n logoUrl?: string;\n bgColor?: string;\n}\n\nfunction BannerWithText(props: PartnerProfileBannerHeaderContentProps): JSX.Element {\n return (\n <div className={classNames('container position-relative inner-banner', styles.container)}>\n <div className='position-absolute bottom-0 start-0 mb-3 w-100 px-4'>\n <div className='d-flex align-items-center'>\n <h1 className='text-white text-shadow pe-3 position-static mb-0'>{props.name}</h1>\n </div>\n </div>\n </div>\n );\n}\n\nfunction BannerWithLogo(props: PartnerProfileBannerHeaderContentProps): JSX.Element {\n return (\n <div className={classNames('container position-relative inner-banner', styles.container)}>\n <div className={classNames('position-absolute start-0 px-4', styles.logoPosition)}>\n <div className={styles.logoContainer}>\n <RectangularLogo\n logoUrl={props.logoUrl}\n bgColor={props.bgColor}\n name={props.name}\n classNames={{\n container: 'border border-white'\n }}\n />\n </div>\n </div>\n </div>\n );\n}\n\nfunction BannerWithSignUp(props: PartnerProfileBannerHeaderContentProps): JSX.Element {\n const [ email, setEmail ] = React.useState('');\n\n function onSubmit(e: React.FormEvent<HTMLFormElement>): void {\n e.preventDefault();\n props.onClickSignUp(email);\n }\n\n return (\n <div className={classNames('container position-relative inner-banner', styles.container)}>\n <div className={classNames('position-absolute start-0 px-4 ', styles.logoPosition)}>\n <div className={styles.logoContainer}>\n <RectangularLogo\n logoUrl={props.logoUrl}\n bgColor={props.bgColor}\n name={props.name}\n classNames={{\n container: 'border border-white'\n }}\n />\n </div>\n </div>\n <div\n className={classNames(\n 'position-absolute bottom-0 pb-2 pb-md-3 px-0 px-sm-3 d-none d-xl-block',\n styles.signUpContainer\n )}\n >\n <div\n className={classNames(\n 'd-flex align-items-center justify-content-between gap-2 flex-wrap rounded-3 p-3',\n styles.signUpContent\n )}\n >\n <div className='d-sm-flex align-items-center gap-2 '>\n <h4 className={classNames('text-white text-shadow mb-0', styles.signUpHeading)}>\n {getPhrase('description')}\n </h4>\n </div>\n <form className='d-flex align-items-center gap-2 flex-grow-1 flex-md-grow-0' onSubmit={onSubmit}>\n <input\n type='email'\n className={classNames('form-control w-100', styles.emailInput)}\n placeholder={getPhrase('emailPlaceholder')}\n value={email}\n onChange={e => setEmail(e.target.value)}\n />\n <Button type='submit' variant='dark' className={styles.nowrap}>\n {getPhrase('cta')}\n </Button>\n </form>\n </div>\n </div>\n </div>\n );\n}\n\nconst HeaderTypeContentMap: Record<\n PartnerProfileBannerHeaderContentType,\n React.ComponentType<PartnerProfileBannerHeaderContentProps>\n> = {\n 'logo': BannerWithLogo,\n 'sign-up': BannerWithSignUp,\n 'text': BannerWithText\n};\n\nexport function PartnerProfileBannerHeaderContent(props: PartnerProfileBannerHeaderContentProps): JSX.Element {\n const ContentComponent = HeaderTypeContentMap[props.type];\n return <ContentComponent {...props} />;\n}\n","import React from 'react';\n\nimport { LocationUtils } from 'libs/common/backbone/core';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { ContentPartnerEventLoggerFn } from 'libs/shared/apps/content-partners/utils/get-content-partner-event-logger/getContentPartnerEventLogger';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useVideoControls, Video } from 'libs/shared/components/video/Video';\nimport { BannerPortalContext } from 'libs/shared/context/BannerPortalContext';\nimport { ResizeType } from 'libs/shared/enums/Images';\nimport { PauseSvg } from 'libs/shared/images/svg/actions/PauseSvg';\nimport { PlaySvg } from 'libs/shared/images/svg/actions/PlaySvg';\nimport { LinkSvg } from 'libs/shared/images/svg/objects/LinkSvg';\nimport { Banner, Logo } from 'libs/shared/interfaces';\n\nimport { AllVideoBannerControlOptions, VideoBannerControlOption } from '../enums/VideoBannerControlOption';\nimport { useBannerHeader } from '../hooks/useBannerHeader';\nimport { PartnerProfileBannerHeaderHelper } from '../utils/PartnerProfileBannerHeaderHelper';\n\nimport { PartnerProfileBannerHeaderContent } from './PartnerProfileBannerHeaderContent';\n\nimport styles from './partner-profile-banner-header.module.scss';\n\nconst namespace = 'bannerHeader.partnerProfileBannerHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoBannerContentProps {\n videoUrl: string;\n className?: string;\n videoRef: React.RefObject<HTMLVideoElement>;\n loop?: boolean;\n}\n\nfunction VideoBannerContent(props: VideoBannerContentProps): JSX.Element {\n return (\n <div className={classNames('position-absolute top-0 start-0 w-100 h-100 overflow-hidden', props.className, styles.videoBannerRadius)}>\n <Video ref={props.videoRef} autoPlay muted controls={false} loop={props.loop} className='w-100 h-100 object-fit-cover position-relative'>\n <source src={props.videoUrl} type='video/mp4' />\n </Video>\n </div>\n );\n}\n\ninterface VideoBannerControlsProps {\n isPlaying: boolean;\n togglePlayPause: () => void;\n className?: string;\n controls?: VideoBannerControlOption[];\n websiteUrl?: string;\n isStudent: boolean;\n log?: ContentPartnerEventLoggerFn;\n}\n\nfunction VideoBannerControls(props: VideoBannerControlsProps): JSX.Element {\n const PlayPauseIcon = props.isPlaying ? PauseSvg : PlaySvg;\n\n function onClickWebsiteLink(): void {\n if (!props.websiteUrl) return;\n LocationUtils.PageLoad(props.websiteUrl, true);\n props.log?.({\n type: 'click-video-banner-controls',\n control: 'website-link'\n });\n }\n \n const controls = props.controls || AllVideoBannerControlOptions;\n const showWebsiteLinkControls = PartnerProfileBannerHeaderHelper.showWebsiteLinkControls(\n controls,\n props.websiteUrl,\n props.isStudent\n );\n\n return (\n <div className={classNames(\n styles.videoControls,\n 'position-absolute d-flex gap-2 ',\n props.isPlaying && 'banner-header-video--controls',\n props.className\n )}>\n {showWebsiteLinkControls && (\n <IconButton\n svg={LinkSvg}\n svgSize={SvgContainerSize.Standard}\n className='bg-gray-200 rounded-circle cursor-pointer'\n onClick={onClickWebsiteLink}\n ariaLabel={getPhrase('viewWebsite')}\n role='button'\n tooltip={getPhrase('viewWebsite')}\n tooltipTrigger={[ 'hover', 'focus' ]}\n />\n )}\n {controls.includes(VideoBannerControlOption.PlayPause) && (\n <IconButton\n svg={PlayPauseIcon}\n svgSize={SvgContainerSize.Standard}\n className='bg-gray-200 rounded-circle cursor-pointer'\n onClick={props.togglePlayPause}\n ariaLabel={props.isPlaying ? getPhrase('pause') : getPhrase('play')}\n role='button'\n tooltip={props.isPlaying ? getPhrase('pause') : getPhrase('play')}\n tooltipTrigger={[ 'hover', 'focus' ]}\n />\n )}\n </div>\n );\n}\n\nexport function PartialPartnerProfileBannerHeader(): JSX.Element {\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n return PortalHelper.renderInPortalIfExists(\n <div className='partial-banner partial-loading-background' />,\n portalContainerContext?.container\n );\n}\n\nexport type PartnerBannerHeaderType = 'static' | 'video';\n\nexport interface PartnerProfileBannerHeaderProps {\n heading: string;\n onClickSignUp: (email: string) => void;\n isAuthenticated: boolean;\n isStudent: boolean;\n partnerBannerType?: PartnerBannerHeaderType;\n banner?: Banner;\n logo?: Logo;\n videoUrl?: string;\n imageCdnUrl?: string;\n logoBgColour?: string;\n actions?: ActionOptions[];\n blockColourClass?: string;\n websiteUrl?: string;\n log?: ContentPartnerEventLoggerFn;\n}\n\nconst VIDEO_BANNER_WIDTH = 1920;\nconst VIDEO_BANNER_RATIO = '1200:330';\n\nexport function PartnerProfileBannerHeader(props: PartnerProfileBannerHeaderProps): JSX.Element {\n const { heading, isAuthenticated, partnerBannerType = 'static', websiteUrl } = props;\n\n const {\n videoRef,\n isPlaying,\n isFinished,\n loaded,\n togglePlayPause\n } = useVideoControls({\n addDelayOnLoad: 2500,\n log: props.log\n });\n\n const showVideoBanner = partnerBannerType === 'video' && !!props.videoUrl;\n const isVideoVisible = loaded && !isFinished;\n\n const { containerProps, portalContainerContext, logoUrl } = useBannerHeader({\n heading,\n banner: props.banner,\n logo: props.logo,\n imageCdnUrl: props.imageCdnUrl,\n blockColourClass: props.blockColourClass,\n bannerClassName: classNames(\n showVideoBanner && 'banner-header-video position-relative',\n showVideoBanner && styles.videoBannerRadius\n ),\n bannerImageOptions: showVideoBanner ? {\n width: VIDEO_BANNER_WIDTH,\n ratio: VIDEO_BANNER_RATIO,\n resizeType: ResizeType.Cover\n } : null\n });\n\n const contentType = PartnerProfileBannerHeaderHelper.getBannerHeaderContentType({\n logoUrl,\n isAuthenticated,\n showVideoBanner\n });\n\n const showLogo = contentType === 'logo' || contentType === 'sign-up';\n const controls = isVideoVisible ?\n AllVideoBannerControlOptions :\n [ VideoBannerControlOption.PlayPause, VideoBannerControlOption.WebsiteLink ];\n \n return PortalHelper.renderInPortalIfExists(\n <header className={classNames(\n styles.header,\n showVideoBanner && 'px-0 px-xl-3 pt-xl-3 ',\n showLogo && styles.hasLogo\n )}>\n <div {...containerProps}>\n {showVideoBanner && (\n <VideoBannerContent\n videoUrl={props.videoUrl}\n videoRef={videoRef}\n className={classNames(styles.videoContent, isVideoVisible && styles.videoVisible)}\n // If loop is true then isFinished will never be true.\n loop={!props.banner}\n />\n )}\n <PartnerProfileBannerHeaderContent\n type={contentType}\n name={heading}\n logoUrl={logoUrl}\n bgColor={props.logoBgColour}\n onClickSignUp={props.onClickSignUp}\n />\n {showVideoBanner && (\n <VideoBannerControls\n isPlaying={isPlaying}\n togglePlayPause={togglePlayPause}\n controls={controls}\n websiteUrl={websiteUrl}\n isStudent={props.isStudent}\n log={props.log}\n />\n )}\n </div>\n </header>,\n portalContainerContext?.container\n );\n}\n","import React from 'react';\n\nimport {\n DefaultBannerHeader,\n DefaultBannerHeaderProps,\n PartialDefaultBannerHeader\n} from './default-banner-header/DefaultBannerHeader';\nimport {\n PartialPartnerProfileBannerHeader,\n PartnerProfileBannerHeader,\n PartnerProfileBannerHeaderProps\n} from './partner-profile-banner-header/PartnerProfileBannerHeader';\n\ntype InternalDefaultBannerHeaderProps = DefaultBannerHeaderProps & {\n type?: 'default'\n};\n\ntype InternalPartnerProfileBannerHeaderProps = PartnerProfileBannerHeaderProps & {\n type?: 'partner-profile'\n};\n\ntype BannerHeaderProps = InternalDefaultBannerHeaderProps | InternalPartnerProfileBannerHeaderProps;\n\ntype BannerType = BannerHeaderProps['type'];\ntype BannerTypeOptions = {\n Component: React.ComponentType<any>,\n PartialComponent: React.ComponentType<any>\n};\n\nconst bannerTypeMap: Record<BannerType, BannerTypeOptions> = {\n 'default': {\n Component: DefaultBannerHeader,\n PartialComponent: PartialDefaultBannerHeader\n },\n 'partner-profile': {\n Component: PartnerProfileBannerHeader,\n PartialComponent: PartialPartnerProfileBannerHeader\n }\n};\n\nexport function BannerHeader(props: BannerHeaderProps): JSX.Element {\n const { type = 'default' } = props;\n\n const Component = bannerTypeMap[type].Component;\n return <Component {...props} />;\n}\n\ninterface PartialBannerHeaderProps {\n type?: BannerType;\n}\n\nexport function PartialBannerHeader(props: PartialBannerHeaderProps): JSX.Element {\n const { type = 'default' } = props;\n\n const PartialComponent = bannerTypeMap[type].PartialComponent;\n return <PartialComponent {...props} />;\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{gt as e,mt as t}from"./Dp9qJj1C.chunk.js";import{a as n,i as r}from"./BJvPfCvt.chunk.js";import{C as i,a,lt as o,ut as s,x as c}from"./Dun43GrB.chunk.js";import{y as l}from"./BQ5XMoHG.chunk.js";import{t as u}from"./epZn2FwZ.chunk.js";import{t as d}from"./CEsevkum.chunk.js";import{n as f,t as p}from"./C_llN0lX.chunk.js";import{t as m}from"./B20k2DA32.chunk.js";import{n as h}from"./Ca1QPe-q2.chunk.js";import{t as g}from"./DIVzVtlg.chunk.js";import{t as _}from"./DZUGjRSP.chunk.js";import{y as v}from"./app-B1XBsz23.js";import{t as y}from"./D6RH5IPj.chunk.js";var b=e(t(((e,t)=>{(function(n){if(typeof e==`object`)t.exports=n();else if(typeof define==`function`&&define.amd)define(n);else{var r;try{r=window}catch{r=self}r.SparkMD5=n()}})(function(e){var t=[`0`,`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`a`,`b`,`c`,`d`,`e`,`f`];function n(e,t){var n=e[0],r=e[1],i=e[2],a=e[3];n+=(r&i|~r&a)+t[0]-680876936|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+t[1]-389564586|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+t[2]+606105819|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+t[3]-1044525330|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+t[4]-176418897|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+t[5]+1200080426|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+t[6]-1473231341|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+t[7]-45705983|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+t[8]+1770035416|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+t[9]-1958414417|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+t[10]-42063|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+t[11]-1990404162|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+t[12]+1804603682|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+t[13]-40341101|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+t[14]-1502002290|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+t[15]+1236535329|0,r=(r<<22|r>>>10)+i|0,n+=(r&a|i&~a)+t[1]-165796510|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+t[6]-1069501632|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+t[11]+643717713|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+t[0]-373897302|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+t[5]-701558691|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+t[10]+38016083|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+t[15]-660478335|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+t[4]-405537848|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+t[9]+568446438|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+t[14]-1019803690|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+t[3]-187363961|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+t[8]+1163531501|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+t[13]-1444681467|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+t[2]-51403784|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+t[7]+1735328473|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+t[12]-1926607734|0,r=(r<<20|r>>>12)+i|0,n+=(r^i^a)+t[5]-378558|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+t[8]-2022574463|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+t[11]+1839030562|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+t[14]-35309556|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+t[1]-1530992060|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+t[4]+1272893353|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+t[7]-155497632|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+t[10]-1094730640|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+t[13]+681279174|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+t[0]-358537222|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+t[3]-722521979|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+t[6]+76029189|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+t[9]-640364487|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+t[12]-421815835|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+t[15]+530742520|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+t[2]-995338651|0,r=(r<<23|r>>>9)+i|0,n+=(i^(r|~a))+t[0]-198630844|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+t[7]+1126891415|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+t[14]-1416354905|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+t[5]-57434055|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+t[12]+1700485571|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+t[3]-1894986606|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+t[10]-1051523|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+t[1]-2054922799|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+t[8]+1873313359|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+t[15]-30611744|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+t[6]-1560198380|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+t[13]+1309151649|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+t[4]-145523070|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+t[11]-1120210379|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+t[2]+718787259|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+t[9]-343485551|0,r=(r<<21|r>>>11)+i|0,e[0]=n+e[0]|0,e[1]=r+e[1]|0,e[2]=i+e[2]|0,e[3]=a+e[3]|0}function r(e){var t=[],n;for(n=0;n<64;n+=4)t[n>>2]=e.charCodeAt(n)+(e.charCodeAt(n+1)<<8)+(e.charCodeAt(n+2)<<16)+(e.charCodeAt(n+3)<<24);return t}function i(e){var t=[],n;for(n=0;n<64;n+=4)t[n>>2]=e[n]+(e[n+1]<<8)+(e[n+2]<<16)+(e[n+3]<<24);return t}function a(e){var t=e.length,i=[1732584193,-271733879,-1732584194,271733878],a,o,s,c,l,u;for(a=64;a<=t;a+=64)n(i,r(e.substring(a-64,a)));for(e=e.substring(a-64),o=e.length,s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],a=0;a<o;a+=1)s[a>>2]|=e.charCodeAt(a)<<(a%4<<3);if(s[a>>2]|=128<<(a%4<<3),a>55)for(n(i,s),a=0;a<16;a+=1)s[a]=0;return c=t*8,c=c.toString(16).match(/(.*?)(.{0,8})$/),l=parseInt(c[2],16),u=parseInt(c[1],16)||0,s[14]=l,s[15]=u,n(i,s),i}function o(e){var t=e.length,r=[1732584193,-271733879,-1732584194,271733878],a,o,s,c,l,u;for(a=64;a<=t;a+=64)n(r,i(e.subarray(a-64,a)));for(e=a-64<t?e.subarray(a-64):new Uint8Array,o=e.length,s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],a=0;a<o;a+=1)s[a>>2]|=e[a]<<(a%4<<3);if(s[a>>2]|=128<<(a%4<<3),a>55)for(n(r,s),a=0;a<16;a+=1)s[a]=0;return c=t*8,c=c.toString(16).match(/(.*?)(.{0,8})$/),l=parseInt(c[2],16),u=parseInt(c[1],16)||0,s[14]=l,s[15]=u,n(r,s),r}function s(e){var n=``,r;for(r=0;r<4;r+=1)n+=t[e>>r*8+4&15]+t[e>>r*8&15];return n}function c(e){var t;for(t=0;t<e.length;t+=1)e[t]=s(e[t]);return e.join(``)}c(a(`hello`)),typeof ArrayBuffer<`u`&&!ArrayBuffer.prototype.slice&&(function(){function t(e,t){return e=e|0||0,e<0?Math.max(e+t,0):Math.min(e,t)}ArrayBuffer.prototype.slice=function(n,r){var i=this.byteLength,a=t(n,i),o=i,s,c,l,u;return r!==e&&(o=t(r,i)),a>o?new ArrayBuffer(0):(s=o-a,c=new ArrayBuffer(s),l=new Uint8Array(c),u=new Uint8Array(this,a,s),l.set(u),c)}})();function l(e){return/[\u0080-\uFFFF]/.test(e)&&(e=unescape(encodeURIComponent(e))),e}function u(e,t){var n=e.length,r=new ArrayBuffer(n),i=new Uint8Array(r),a;for(a=0;a<n;a+=1)i[a]=e.charCodeAt(a);return t?i:r}function d(e){return String.fromCharCode.apply(null,new Uint8Array(e))}function f(e,t,n){var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e)),r.set(new Uint8Array(t),e.byteLength),n?r:r.buffer}function p(e){var t=[],n=e.length,r;for(r=0;r<n-1;r+=2)t.push(parseInt(e.substr(r,2),16));return String.fromCharCode.apply(String,t)}function m(){this.reset()}return m.prototype.append=function(e){return this.appendBinary(l(e)),this},m.prototype.appendBinary=function(e){this._buff+=e,this._length+=e.length;var t=this._buff.length,i;for(i=64;i<=t;i+=64)n(this._hash,r(this._buff.substring(i-64,i)));return this._buff=this._buff.substring(i-64),this},m.prototype.end=function(e){var t=this._buff,n=t.length,r,i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],a;for(r=0;r<n;r+=1)i[r>>2]|=t.charCodeAt(r)<<(r%4<<3);return this._finish(i,n),a=c(this._hash),e&&(a=p(a)),this.reset(),a},m.prototype.reset=function(){return this._buff=``,this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},m.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},m.prototype.setState=function(e){return this._buff=e.buff,this._length=e.length,this._hash=e.hash,this},m.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},m.prototype._finish=function(e,t){var r=t,i,a,o;if(e[r>>2]|=128<<(r%4<<3),r>55)for(n(this._hash,e),r=0;r<16;r+=1)e[r]=0;i=this._length*8,i=i.toString(16).match(/(.*?)(.{0,8})$/),a=parseInt(i[2],16),o=parseInt(i[1],16)||0,e[14]=a,e[15]=o,n(this._hash,e)},m.hash=function(e,t){return m.hashBinary(l(e),t)},m.hashBinary=function(e,t){var n=c(a(e));return t?p(n):n},m.ArrayBuffer=function(){this.reset()},m.ArrayBuffer.prototype.append=function(e){var t=f(this._buff.buffer,e,!0),r=t.length,a;for(this._length+=e.byteLength,a=64;a<=r;a+=64)n(this._hash,i(t.subarray(a-64,a)));return this._buff=a-64<r?new Uint8Array(t.buffer.slice(a-64)):new Uint8Array,this},m.ArrayBuffer.prototype.end=function(e){var t=this._buff,n=t.length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],i,a;for(i=0;i<n;i+=1)r[i>>2]|=t[i]<<(i%4<<3);return this._finish(r,n),a=c(this._hash),e&&(a=p(a)),this.reset(),a},m.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array,this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},m.ArrayBuffer.prototype.getState=function(){var e=m.prototype.getState.call(this);return e.buff=d(e.buff),e},m.ArrayBuffer.prototype.setState=function(e){return e.buff=u(e.buff,!0),m.prototype.setState.call(this,e)},m.ArrayBuffer.prototype.destroy=m.prototype.destroy,m.ArrayBuffer.prototype._finish=m.prototype._finish,m.ArrayBuffer.hash=function(e,t){var n=c(o(new Uint8Array(e)));return t?p(n):n},m})}))()),x={secondary:{label:`Secondary`,isTertiary:!1},"primary & secondary":{label:`Primary & Secondary`,isTertiary:!1},k12:{label:`Primary & Secondary`,isTertiary:!1},primary:{label:`Primary`,isTertiary:!1},special:{label:`Special`,isTertiary:!1},university:{label:`University`,isTertiary:!0},middle:{label:`Middle`,isTertiary:!1},"fe college":{label:`FE College`,isTertiary:!0},"high school":{label:`Secondary`,isTertiary:!1},elementary:{label:`Primary`,isTertiary:!1},"middle school":{label:`Middle`,isTertiary:!1},tafe:{label:`TAFE`,isTertiary:!0},college:{label:`FE College`,isTertiary:!0},"sixth form college":{label:`Sixth Form College`,isTertiary:!0}},S={england:`ENG`,scotland:`SCT`,wales:`WLS`,"northern ireland":`NIR`},C={hashedEmail(e){let t=e.trim().toLowerCase();return b.default.hash(t)},removeEmptyKeys(e){if(Array.isArray(e))return e;let t={...e};return Object.entries(t).filter(([,e])=>!(e==null||typeof e==`string`&&!e.length)).reduce((e,[t,n])=>({...e,[t]:n===Object(n)?C.removeEmptyKeys(n):n}),{})},Conversions:{TRIAL_UPGRADE_REQUEST:`Request - Trial Upgrade`,FREE_TRIAL_REQUEST:`Request - Free Trial`,OLYMPICS_SPECIAL_OFFER_REQUEST:`Request - Olympics Special Offer`},Sources:{CV_PRODUCT_TRIAL_REQUESTED:`cv_product_trial_requested`,CV_PRODUCT_BDM_TRIAL_REQUESTED:`cv_product_bdm_trial_requested`,CV_PRODUCT_TRIAL_UPGRADE_REQUESTED:`cv_product_trial_upgrade_requested`},getSchoolType(e){if(!e)return;let t=e.toLowerCase();return[`unknown`,`other`].includes(t)?void 0:x[t]?.label||e},isTertiarySchool(e){return x[e?.toLowerCase()]?.isTertiary||!1},parseProvince(e){return e.length?S[e.toLowerCase()]||e:``}},w={checkEmail(e){return{url:`/api/braze/check-email`,key:`braze:check:email:${e}`,type:l.POST,data:{email:e}}},prospectLookups(e){return{url:`{gateway}/v1/prospects/${e}/lookups`,key:`prospect:lookup:${e}`}}};function T(){return{createOrUpdateProfile:p(a.ProfileApiClient).createOrUpdate}}var E=function(e){return e.ContactUs=`Contact - Contact Us`,e.LivestreamBooking=`Submit - Livestream Booking`,e}({}),D=function(e){return e.LivestreamBooking=`sl_product_livestream`,e.ContactUs=`sl_marketing_form_contact_us`,e}({});function O(e,t){return{...e,custom:{...e?.custom,source:t.source},event:{...e?.event,conversion:t.conversion}}}function k(){let e=f(u.BrazeClient);function t({user:t,additionalData:n,source:r,eventType:i,conversion:a,productType:o,callback:s}){let c=O(t,{source:r,conversion:a});e.setUserInit(c),e.logFormEvent({eventType:i,additionalData:n,callback:s,internalOptions:{subscriptionGroups:o}})}return{client:e,logFormSubmission:t}}function A(){return k()}var j=[`Teacher`,`Librarian / Teacher Librarian`,`Curriculum Coordinator`,`Digital Technology Coordinator`,`SSO / SLSO`,`IT`,`Head of Department`,`Head of Subject`,`Assistant Principal`,`Deputy Principal`,`Principal`,`Business Manager`],M=[`Teacher`,`Librarian / Teacher Librarian`,`IT/LRC`,`e-Learning/ICT Coordinator`,`Head of Key Stage`,`Head of Department`,`Subject Lead`,`Assistant Head Teacher`,`Deputy Head Teacher`,`Head Teacher`],N=[`Teacher`,`Librarian / Teacher Librarian`,`Head of Department`,`Instructional Technology Specialist`,`Curriculum Coordinator`,`School Leadership`,`District Leadership`,`Academic Coach`,`Principal`,`IT / IT Specialist`],ee=[`Teacher`,`Librarian / Teacher Librarian`,`Curriculum Leader`,`e-Learning Coordinator`,`IT`,`Head of Department`,`Head of Faculty`,`Learning Support`,`Learning Assistant`,`Deputy Principal`,`Assistant Principal`,`Principal`],P=[`Teacher`,`Librarian / Teacher Librarian`,`Educational Assistant (EA)`,`Learning Support Teacher / Resource Teacher`,`Department Head / Manager`,`Curriculum Coordinator / Consultant`,`School Counsellor / Guidance Counsellor`,`Vice-Principal`,`Principal`,`Superintendent`,`Director of Education`],F=[`Professor`,`Lecturer`,`Course Coordinator / Administrator`,`Digital Learning Manager`,`Tutor`,`Teaching Fellow`,`Librarian`,`Learning Technologist`,`Teaching Assistant`,`Researcher`,`IT`],te=[`Professor`,`Lecturer`,`Course Coordinator / Administrator`,`Digital Learning Manager`,`Tutor`,`Teaching Fellow`,`Librarian`,`Learning Technologist`,`Teacher`,`Teaching Assistant`,`Researcher`,`IT`],ne={[g.AU]:j,[g.NZ]:ee,[g.UK]:M,[g.US]:N,[g.CA]:P},re={[g.AU]:F,[g.UK]:te};function ie(e){let t=e.countryCode?.toLowerCase();return e.isTertiary?re[t]||F:ne[t]||N}var I=e(s()),L=o(),R=`OTHER`;function z(e,t){return t.includes(e)?e:e?R:``}function ae(e){let{error:t,onChange:n,countryCode:r,isTertiary:i}=e,a=ie({countryCode:r,isTertiary:i}),o=z(e.initialValue,a),[s,c]=I.useState(o),[l,u]=I.useState(o===R?e.initialValue:``);I.useEffect(()=>{c(z(e.initialValue,a))},[e.initialValue]);function d(e){c(e.target.value),u(``),n(e.target.value===R?``:e.target.value)}function f(e){u(e.target.value),n(e.target.value)}let p=s===R;return(0,L.jsxs)(`div`,{className:`form-group`,children:[(0,L.jsxs)(`label`,{htmlFor:e.id,className:e.labelClassName,children:[`Job title`,e.required&&(0,L.jsx)(`span`,{className:`text-danger`,children:`*`})]}),(0,L.jsxs)(`div`,{className:`mb-2`,children:[(0,L.jsxs)(`select`,{id:e.id,name:e.id,className:`form-select ${e.size===`lg`?`form-select-lg`:``} ${s.length?`text-dark`:`text-secondary`} ${!!t&&`is-invalid`}`,value:s,placeholder:`Role`,onChange:d,children:[(0,L.jsx)(`option`,{value:``,disabled:!0,className:`text-secondary`,children:e.placeholder?e.placeholder:(0,L.jsx)(L.Fragment,{children:`What do you do?`})}),a.map((e,t)=>(0,L.jsx)(`option`,{value:e,className:`text-dark`,children:e},t)),(0,L.jsx)(`option`,{value:R,className:`text-dark`,children:`Other`})]}),!!t&&!p&&(0,L.jsx)(y,{name:e.id,children:t})]}),p&&(0,L.jsxs)(`div`,{className:`mb-3`,children:[(0,L.jsx)(`input`,{className:`form-control ${e.size===`lg`?`form-select-lg`:``} ${!!t&&`is-invalid`}`,type:`text`,value:l,placeholder:`What do you do?`,autoFocus:!0,onChange:f}),!!t&&(0,L.jsx)(y,{name:e.id,children:t})]})]})}function oe(){return(0,L.jsx)(`svg`,{viewBox:`0 0 24 24`,children:(0,L.jsx)(`path`,{d:`M11.959 10.641l4.402-4.296a.964.964 0 0 1 1.358 0 .951.951 0 0 1 0 1.35l-4.403 4.297 4.403 4.378a.951.951 0 0 1 0 1.35.964.964 0 0 1-1.358 0l-4.402-4.378-4.32 4.378a.964.964 0 0 1-1.358 0 .951.951 0 0 1 0-1.35l4.32-4.378-4.32-4.362a.951.951 0 0 1 0-1.35.964.964 0 0 1 1.358 0l4.32 4.361z`})})}var B={clearInput:`_clearInput_1l19p_1`,clearableInput:`_clearableInput_1l19p_8`},V=I.forwardRef((e,t)=>{let{onClickClear:n,showClearButton:r,clearClassName:i,...a}=e;return(0,L.jsxs)(`div`,{className:`position-relative`,children:[(0,L.jsx)(`input`,{...a,ref:t,className:`${e.className} ${B.clearableInput}`}),(!!e.value||r)&&(0,L.jsx)(`span`,{className:`${B.clearInput} position-absolute cursor-pointer text-secondary ${i||``}`,role:`button`,onClick:n,onKeyDown:e=>e.key===`Enter`&&n(),tabIndex:0,children:(0,L.jsx)(`div`,{className:`d-inline-block svg-container md`,children:(0,L.jsx)(oe,{})})})]})}),se=function e(t,n){if(t===n)return!0;if(t&&n&&typeof t==`object`&&typeof n==`object`){if(t.constructor!==n.constructor)return!1;var r,i,a;if(Array.isArray(t)){if(r=t.length,r!=n.length)return!1;for(i=r;i--!==0;)if(!e(t[i],n[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if(a=Object.keys(t),r=a.length,r!==Object.keys(n).length)return!1;for(i=r;i--!==0;)if(!Object.prototype.hasOwnProperty.call(n,a[i]))return!1;for(i=r;i--!==0;){var o=a[i];if(!e(t[o],n[o]))return!1}return!0}return t!==t&&n!==n},ce=`__googleMapsScriptId`,H;(function(e){e[e.INITIALIZED=0]=`INITIALIZED`,e[e.LOADING=1]=`LOADING`,e[e.SUCCESS=2]=`SUCCESS`,e[e.FAILURE=3]=`FAILURE`})(H||={});var le=class e{constructor({apiKey:t,authReferrerPolicy:n,channel:r,client:i,id:a=ce,language:o,libraries:s=[],mapIds:c,nonce:l,region:u,retries:d=3,url:f=`https://maps.googleapis.com/maps/api/js`,version:p}){if(this.CALLBACK=`__googleMapsCallback`,this.callbacks=[],this.done=!1,this.loading=!1,this.errors=[],this.apiKey=t,this.authReferrerPolicy=n,this.channel=r,this.client=i,this.id=a||`__googleMapsScriptId`,this.language=o,this.libraries=s,this.mapIds=c,this.nonce=l,this.region=u,this.retries=d,this.url=f,this.version=p,e.instance){if(!se(this.options,e.instance.options))throw Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(e.instance.options)}`);return e.instance}e.instance=this}get options(){return{version:this.version,apiKey:this.apiKey,channel:this.channel,client:this.client,id:this.id,libraries:this.libraries,language:this.language,region:this.region,mapIds:this.mapIds,nonce:this.nonce,url:this.url,authReferrerPolicy:this.authReferrerPolicy}}get status(){return this.errors.length?H.FAILURE:this.done?H.SUCCESS:this.loading?H.LOADING:H.INITIALIZED}get failed(){return this.done&&!this.loading&&this.errors.length>=this.retries+1}createUrl(){let e=this.url;return e+=`?callback=${this.CALLBACK}`,this.apiKey&&(e+=`&key=${this.apiKey}`),this.channel&&(e+=`&channel=${this.channel}`),this.client&&(e+=`&client=${this.client}`),this.libraries.length>0&&(e+=`&libraries=${this.libraries.join(`,`)}`),this.language&&(e+=`&language=${this.language}`),this.region&&(e+=`&region=${this.region}`),this.version&&(e+=`&v=${this.version}`),this.mapIds&&(e+=`&map_ids=${this.mapIds.join(`,`)}`),this.authReferrerPolicy&&(e+=`&auth_referrer_policy=${this.authReferrerPolicy}`),e}deleteScript(){let e=document.getElementById(this.id);e&&e.remove()}load(){return this.loadPromise()}loadPromise(){return new Promise((e,t)=>{this.loadCallback(n=>{n?t(n.error):e(window.google)})})}loadCallback(e){this.callbacks.push(e),this.execute()}setScript(){if(document.getElementById(this.id)){this.callback();return}let e=this.createUrl(),t=document.createElement(`script`);t.id=this.id,t.type=`text/javascript`,t.src=e,t.onerror=this.loadErrorCallback.bind(this),t.defer=!0,t.async=!0,this.nonce&&(t.nonce=this.nonce),document.head.appendChild(t)}reset(){this.deleteScript(),this.done=!1,this.loading=!1,this.errors=[],this.onerrorEvent=null}resetIfRetryingFailed(){this.failed&&this.reset()}loadErrorCallback(e){if(this.errors.push(e),this.errors.length<=this.retries){let e=this.errors.length*2**this.errors.length;console.log(`Failed to load Google Maps script, retrying in ${e} ms.`),setTimeout(()=>{this.deleteScript(),this.setScript()},e)}else this.onerrorEvent=e,this.callback()}setCallback(){window.__googleMapsCallback=this.callback.bind(this)}callback(){this.done=!0,this.loading=!1,this.callbacks.forEach(e=>{e(this.onerrorEvent)}),this.callbacks=[]}execute(){if(this.resetIfRetryingFailed(),this.done)this.callback();else{if(window.google&&window.google.maps&&window.google.maps.version){console.warn(`Google Maps already loaded outside @googlemaps/js-api-loader.This may result in undesirable behavior as options and script parameters may not match.`),this.callback();return}this.loading||(this.loading=!0,this.setCallback(),this.setScript())}}};function U(e){return new le({apiKey:e.apiKey,version:`weekly`,libraries:e.libraries,retries:3})}function W(e){let t={apiKey:e.apiKey,libraries:e.libraries||[`places`]},[n,r]=I.useState(!1),[i,a]=I.useState(U(t));I.useEffect(()=>{o()},[]);function o(e,n){if(!i){a(U(t));return}i.loadCallback(t=>{if(t){r(!1),n&&n(t);return}r(!0),e&&e()})}return{loader:i,scriptLoaded:n,onGoogleApiReady:o}}function G(e){let{scriptLoaded:t}=W({apiKey:e.googleApiKey}),[n,r]=I.useState();return I.useEffect(()=>{t&&r(new google.maps.places.AutocompleteService)},[t]),n}var K=`us`,q=`country:placeholder:text`;function ue(e){let t=_.getLocalizedLocalityPlaceholderText(e?.countryCode);if(t)return t;let n=d.cacheGet(`${q}:${e?.countryCode}`);if(n)return n}function de(){return String.fromCharCode(96+r.getRandomInt(26))}function fe({apiKey:e,geoLocation:t,makeRequest:n=!0,template:i=`E.g. [placeholder]`,templateKey:a=`[placeholder]`}){let o=G({googleApiKey:e}),[s,c]=I.useState(()=>ue(t));I.useEffect(()=>{if(s||!o||!n)return;let e=t?.countryCode||K,r={input:de(),types:[`(cities)`],region:e,componentRestrictions:{country:e}};o.getPlacePredictions(r,(t,n)=>u(t,n,e))},[s,o,t,n]);function l(e,t){d.cacheSet(`${q}:${t}`,e,86400),c(e)}function u(e,t,n){if(t!==google.maps.places.PlacesServiceStatus.OK||!e){l(_.getLocalizedLocalityPlaceholderText(K),n);return}let o=e[r.getRandomInt(e.length)].description;l(i.replace(a,o),n)}return s}function J(e){let[t,n]=I.useState(0),r=I.useRef(null),[i,a]=I.useState(!!e.hideInitially);function o(){r.current&&r.current.children[t-1]?.scrollIntoView({block:`center`})}function s(r){if(e.hideOnEnter&&a(!1),r.code===`ArrowDown`){r.stopPropagation(),r.preventDefault();let i=t+1;i>e.itemCount&&(i=1),n(i),o();return}if(r.code===`ArrowUp`){r.stopPropagation(),r.preventDefault();let i=t-1;i<=0&&(i=e.itemCount),n(i),o();return}if(r.code===`Enter`&&t>0){r.stopPropagation(),r.preventDefault(),e.onSelected(t-1),e.hideOnEnter&&a(!0);return}n(0)}function c(){e.hideOnBlur&&a(!1)}function l(){e.hideOnBlur&&a(!0)}return{selectedIndex:t,onKeyDown:s,containerRef:r,hide:i,onFocus:c,onBlur:l}}var Y={getPlaceDetails(e){let t,n,r,i,a=e.formatted_address;for(let a of e.address_components)for(let e of a.types)e===`locality`&&(t=a.short_name),e===`administrative_area_level_1`&&(n=a.short_name),e===`postal_code`&&(i=a.short_name),e===`country`&&(r=a.short_name);return{locality:a,country:r,postalCode:i,city:t,province:n}}},pe={1:`geocoderPermissionDenied`,2:`geocoderUnavailable`,3:`geocoderTimeout`};function me(e){let[t,n]=I.useState({}),{onGoogleApiReady:r}=W(e);function i(){r(()=>{window.navigator.geolocation.getCurrentPosition(a,o)})}function a(e){let{latitude:t,longitude:r}=e.coords,i=new google.maps.LatLng(t,r);new google.maps.Geocoder().geocode({location:i},(e,i)=>{if(i!==google.maps.GeocoderStatus.OK)return;let a=e.find(e=>e.types.includes(`locality`)||e.types.includes(`administrative_area_level_2`));n({...Y.getPlaceDetails(a),longitude:r,latitude:t})})}function o(t){let n=pe[t.code];n||=`geocoderUnknown`,e.onPositionError(`We are unable to access your location. Please try again later.`)}return{placeDetails:t,onClickGetCurrentLocation:i}}function he({search:e,makePredicition:t,geoLocation:n,apiKey:r}){let i=G({googleApiKey:r}),a=v(e,300),[o,s]=I.useState();I.useEffect(()=>{if(!i)return;if(a?.length===0||!t){s(void 0);return}let e=n?.countryCode||`us`;i.getPlacePredictions({input:a,componentRestrictions:n?.isFallback?void 0:{country:e},region:e,types:[`locality`,`sublocality`,`postal_code`]},c)},[a,t,i]);function c(e,t){if(t!==google.maps.places.PlacesServiceStatus.OK||!e){s(void 0);return}s(e)}function l(e,t,r){new google.maps.places.PlacesService(t.current).getDetails({placeId:e.place_id,fields:[`geometry`,`address_components`,`formatted_address`],region:n.countryCode},(e,t)=>{if(t!==google.maps.places.PlacesServiceStatus.OK)return;let n=e.geometry.location.lng(),i=e.geometry.location.lat(),{locality:a,country:o,postalCode:s,city:c,province:l}=Y.getPlaceDetails(e);r({longitude:n,latitude:i,locality:a,country:o,city:c,postalCode:s,province:l})})}return{localityPredicitions:o,getPlaceInfo:l}}function X(){return(0,L.jsx)(`svg`,{viewBox:`0 0 24 24`,children:(0,L.jsx)(`path`,{d:`m12.00559,20.40189c4.60881,0 8.37242,-3.78424 8.37242,-8.40189c0,-4.61764 -3.76361,-8.40187 -8.37242,-8.40187c-4.62002,0 -8.38365,3.78422 -8.38365,8.40187c0,4.61765 3.76364,8.40189 8.38365,8.40189zm0,-1.65557c-3.75235,0 -6.67085,-2.96208 -6.67085,-6.74632c0,-3.7842 2.91851,-6.74625 6.67085,-6.74625c3.74105,0 6.67084,2.96206 6.67084,6.74625c0,3.78424 -2.92978,6.74632 -6.67084,6.74632zm-10.14151,-6.02552l6.01731,0c0.40566,0 0.72118,-0.31536 0.72118,-0.7208c0,-0.40544 -0.31552,-0.7208 -0.72118,-0.7208l-6.01731,0c-0.40566,0 -0.72117,0.31536 -0.72117,0.7208c0,0.40544 0.31551,0.7208 0.72118,0.7208l-0.00001,0zm14.25442,0l6.0174,0c0.40565,0 0.72118,-0.31536 0.72118,-0.7208c0,-0.40544 -0.31553,-0.7208 -0.72118,-0.7208l-6.0174,0c-0.40565,0 -0.72118,0.31536 -0.72118,0.7208c0,0.40544 0.31553,0.7208 0.72118,0.7208zm-4.12417,-4.1221c0.40566,0 0.72118,-0.31534 0.72118,-0.70952l0,-6.02547c0,-0.40544 -0.31552,-0.7208 -0.72118,-0.7208c-0.3944,0 -0.7099,0.31536 -0.7099,0.7208l0,6.02547c0,0.39418 0.31551,0.70952 0.7099,0.70952zm0,14.25838c0.40566,0 0.72118,-0.3154 0.72118,-0.72077l0,-6.02541c0,-0.39425 -0.31552,-0.70965 -0.72118,-0.70965c-0.3944,0 -0.7099,0.3154 -0.7099,0.70965l0,6.02541c0,0.40538 0.31551,0.72077 0.7099,0.72077z`})})}var Z={baseText:`_baseText_bmazz_1`,dropdown:`_dropdown_bmazz_4`,suggestionContainer:`_suggestionContainer_bmazz_7`,suggestionContainerInner:`_suggestionContainerInner_bmazz_13`,suggestionItem:`_suggestionItem_bmazz_18`,suggestionLoading:`_suggestionLoading_bmazz_18`,noSuggestion:`_noSuggestion_bmazz_18`,large:`_large_bmazz_22`,selected:`_selected_bmazz_32`,useMyLocation:`_useMyLocation_bmazz_36`};function ge(e){let{predictions:t,getPlaceInfo:n,selectedIndex:r}=e;return(0,L.jsx)(L.Fragment,{children:t.map((e,t)=>(0,L.jsx)(h,{className:`${Z.suggestionItem} ${r-1===t?Z.selected:``}`,onKeyDown:t=>t.key===`Enter`&&n(e),onMouseDown:()=>n(e),onClick:()=>n(e),children:e.description},e.place_id))})}function _e(e){let t=I.useRef(null),[r,a]=I.useState(e.data?.schoolLocality||``),[o,s]=I.useState(!1),l=fe({apiKey:e.googleMapsApiKey,geoLocation:e.geoLocation}),{localityPredicitions:u,getPlaceInfo:d}=he({search:r,makePredicition:o,geoLocation:e.geoLocation,apiKey:e.googleMapsApiKey}),{placeDetails:f,onClickGetCurrentLocation:p}=me({apiKey:e.googleMapsApiKey,onPositionError:w}),m=window.navigator.geolocation?1:0,{selectedIndex:g,onKeyDown:_,containerRef:v,hide:y,onBlur:b,onFocus:x}=J({onSelected:D,itemCount:(u?.length??0)+m,hideOnBlur:e.hideOnBlur}),[S,C]=I.useState();I.useEffect(()=>{O(f)},[f]);function w(e){s(!0),C(e)}function T(t){S&&C(void 0),o||s(!0),(e.data?.longitude||e.data?.latitude||e.data?.schoolLocality)&&e.clearData(),a(t)}function E(){T(``),t.current.focus()}function D(e){if(!u)return;if(e===u.length){A();return}let t=u[e];t&&k(t)}function O(t){e.setData({schoolLocality:t.locality,country:t.country,province:t.province,schoolPostCode:t.postalCode,longitude:t.longitude,latitude:t.latitude}),t.locality&&a(t.locality)}function k(e){o&&s(!1),d(e,t,O)}function A(t){t?.preventDefault(),s(!1),p(),e.logUserAction?.({},{actionType:i.Click,descriptor:c.UseMyLocation})}function j(){let t=`form-control`;return e.size===`lg`&&(t+=` form-control-lg`),t}let M=u?.length&&!e.data?.schoolLocality?.length,N=window.navigator.geolocation&&!e.data?.schoolLocality?.length,ee=e.labelClassName||`d-block text-center mb-3 fw-normal ${Z.baseText}`,P=`form-group position-relative`;return e.size===`lg`&&(P+=` ${Z.large}`),(0,L.jsxs)(`div`,{className:P,children:[(0,L.jsxs)(`label`,{className:ee,htmlFor:`locality-input`,children:[`ZIP code or city`,e.required&&(0,L.jsx)(`span`,{className:`text-danger`,children:`*`})]}),(0,L.jsx)(V,{type:`text`,value:r,onChange:e=>T(e.currentTarget.value),id:`locality-input`,className:j(),ref:t,autoComplete:`off`,placeholder:l||`Loading...`,disabled:e.disabled||!l,autoFocus:e?.autoFocus,onClickClear:E,onKeyDown:_,onFocus:x,onBlur:b}),(0,L.jsxs)(`div`,{className:`position-absolute z-1 w-100 ${Z.dropdown} ${y?`d-none`:``}`,children:[!!M&&(0,L.jsx)(`div`,{className:Z.suggestionContainer,children:(0,L.jsxs)(`div`,{className:Z.suggestionContainerInner,ref:v,children:[(0,L.jsx)(ge,{predictions:u,getPlaceInfo:k,selectedIndex:g}),window.navigator.geolocation&&e.useGeoLocationApi&&(0,L.jsx)(h,{className:n(Z.suggestionItem,`px-1`,g-1===u.length?Z.selected:``),onClick:A,children:(0,L.jsxs)(`div`,{className:`btn btn-link info-link btn-with-icon bg-transparent py-0 pe-1`,children:[(0,L.jsx)(X,{}),`Use my current location`]})})]})}),N&&!M&&e.useGeoLocationApi&&(0,L.jsx)(`div`,{className:`d-flex ${Z.useMyLocation}`,children:(0,L.jsxs)(`button`,{onClick:A,className:`btn btn-link info-link bg-white btn-with-icon`,children:[(0,L.jsx)(X,{}),`Use my current location`]})}),!!S&&(0,L.jsx)(`div`,{className:`text-danger p-2`,children:S})]})]})}var ve=class extends Error{constructor(e,t=`Error`){super(t),this.body=e}},ye={prepareQuery(e,t){let n=e;return Object.keys(t).forEach((e,r)=>{t[e]&&(r===0?n+=`?`:n+=`&`,n+=`${e}=${encodeURIComponent(t[e])}`)}),n}};function Q(e){let t={method:l.GET,headers:{"Content-type":`application/json`}};e.method&&(t={...t,method:e.method}),e.init&&(t={...t,...e.init});let n=e.url;return t.method===l.GET&&e.data?n=ye.prepareQuery(n,e.data):e.data&&(t={...t,body:JSON.stringify(e.data)}),{init:t,url:n}}var $={async asyncFetch(e){let t=Q(e),n=await fetch(t.url,t.init);if(!n.ok)throw new ve(await n.json());if(n.status!==204)return await n.json()},async asyncFetchPlain(e){let t=Q(e),n=await fetch(t.url,t.init);if(n.ok)return await n.text()},fetch(e){let t=Q(e);return fetch(t.url,t.init).then(e=>{if(e.status!==204)return e.json()}).then(t=>(e.success&&e.success(t),t)).catch(t=>(e.error&&e.error(),t)).finally(()=>{e.always&&e.always()})}},be={search(e,t,n,r,i){let a={longitude:t.longitude,latitude:t.latitude};t.query&&(a.query=t.query),$.fetch({url:e,data:a,success:n,error:r,always:i})},async create(e,t){return $.asyncFetch({url:e.createProspect,method:l.POST,data:t})},getLookups(e,t){return $.asyncFetch({url:e.prospectLookups(t)})}},xe=50;function Se(e){return e.toLowerCase().split(` `).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function Ce(e){let t=[];return e.city&&t.push(Se(e.city)),e.province&&t.push(e.province),e.postCode&&t.push(e.postCode),t.join(` `)}function we(e){let{filteredSchoolsList:t,getSchoolName:n,onSchoolSuggestionClick:r,selectedIndex:i}=e;return(0,L.jsx)(L.Fragment,{children:t.map((e,t)=>(0,L.jsxs)(h,{className:`${Z.suggestionItem} ${i-1===t?Z.selected:``}`,onKeyDown:t=>t.key===`Enter`&&r(e),onMouseDown:()=>r(e),onClick:()=>r(e),children:[n(e),` `,(0,L.jsx)(`br`,{}),(0,L.jsx)(`small`,{className:`text-secondary`,children:Ce(e)})]},e.id))})}function Te(e){return(0,L.jsx)(`div`,{className:`info-link ${Z.suggestionItem} ${Z.noSuggestion} ${e.selected?Z.selected:``}`,onKeyDown:t=>t.key===`Enter`&&e.handleNoSuggestion(),onMouseDown:e.handleNoSuggestion,onClick:e.handleNoSuggestion,children:`Can't find your school?`})}function Ee(e){let t=I.useRef(null),[n,r]=I.useState(!0),[i,a]=I.useState(e.data.schoolName&&e.data.schoolPostCode?e.data.schoolName+`, `+e.data.schoolPostCode:e.data.schoolName?e.data.schoolName:``),[o,s]=I.useState(),c=v(i,250),{selectedIndex:l,onKeyDown:u,containerRef:d,hide:f,onBlur:p,onFocus:h}=J({onSelected:g,itemCount:(o?.length??0)+1,hideOnBlur:e.hideOnBlur});function g(t){if(!o&&!t)return;if(t===o.length){e.onClickNoSuggestions(i);return}let n=o[t];n&&T(n)}let _=!!e.data?.prospectId,y=n&&!_,b=!n&&!_&&o?.length<xe,x=o?.length&&!_;I.useEffect(()=>{if(!_){if(!c.length){w();return}if(!_&&c.length>1&&c===i){w(c);return}}},[c,_]);function S(t){(e.data.schoolName||e.data.prospectId)&&e.clearData(),t!==i&&a(t)}function C(){S(``),t.current.focus()}function w(t){if(!e.data.latitude&&!e.data.longitude){r(!1);return}r(!0);let n={latitude:e.data.latitude,longitude:e.data.longitude};t&&t.length&&(n.query=t),be.search(e.searchUrl,n,e=>s(e),null,()=>r(!1))}function T(t){a(E(t)),e.setData({prospectId:t.id,schoolName:t.name,schoolPostCode:t.postCode,schoolType:t.prospectType,province:t.province,city:t.city,country:t.countryCode})}function E(e){return e.name}let D=(x||y||b)&&!e.disabled&&!f,O=!y&&!b&&o?.length>=xe,k=`form-control`,A=`form-group position-relative`;return e.size===`lg`&&(k+=` form-control-lg`,A+=` ${Z.large}`),(0,L.jsxs)(`div`,{className:A,children:[(0,L.jsxs)(`label`,{className:e.labelClassName,htmlFor:`school-input`,children:[`School`,e.required&&(0,L.jsx)(`span`,{className:`text-danger`,children:`*`})]}),(0,L.jsx)(V,{id:`school-input`,value:i,onChange:e=>S(e.currentTarget.value),ref:t,className:k,type:`text`,autoComplete:`off`,placeholder:e.placeholder||`Search for your school`,disabled:e.disabled,autoFocus:!0,onClickClear:C,onKeyDown:u,onFocus:h,onBlur:p}),(0,L.jsx)(`div`,{className:`position-absolute z-1 w-100 ${Z.dropdown} ${f?`d-none`:``}`,children:(0,L.jsx)(`div`,{className:`${Z.suggestionContainer} ${D?``:`d-none`}`,children:(0,L.jsxs)(`div`,{className:Z.suggestionContainerInner,ref:d,children:[x?(0,L.jsx)(we,{filteredSchoolsList:o,onSchoolSuggestionClick:T,getSchoolName:E,selectedIndex:l}):y&&(0,L.jsx)(`div`,{className:`${Z.suggestionLoading} py-4 d-flex justify-content-center`,children:(0,L.jsx)(m,{animation:`border`})}),O&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`hr`,{className:`my-0`}),(0,L.jsx)(`div`,{className:`${Z.suggestionItem} ${Z.noSuggestion} text-secondary text-center`,children:(0,L.jsxs)(`small`,{children:[`Can't find your school? `,(0,L.jsx)(`br`,{}),` Try searching to narrow the results`]})})]}),!y&&b&&(0,L.jsx)(Te,{selected:l===o.length+1,handleNoSuggestion:()=>{e.onClickNoSuggestions(i)}})]})})})]})}export{D as a,w as c,A as i,C as l,_e as n,E as o,ae as r,T as s,Ee as t};
2
- //# sourceMappingURL=CPkKuTSK2.chunk.js.map
1
+ import{gt as e,mt as t}from"./Dp9qJj1C.chunk.js";import{a as n,i as r}from"./BJvPfCvt.chunk.js";import{C as i,a,lt as o,ut as s,x as c}from"./Dun43GrB.chunk.js";import{y as l}from"./BQ5XMoHG.chunk.js";import{t as u}from"./epZn2FwZ.chunk.js";import{t as d}from"./CEsevkum.chunk.js";import{n as f,t as p}from"./C_llN0lX.chunk.js";import{t as m}from"./B20k2DA32.chunk.js";import{n as h}from"./Ca1QPe-q2.chunk.js";import{t as g}from"./DIVzVtlg.chunk.js";import{t as _}from"./DZUGjRSP.chunk.js";import{y as v}from"./app-BIigh9wv.js";import{t as y}from"./D6RH5IPj.chunk.js";var b=e(t(((e,t)=>{(function(n){if(typeof e==`object`)t.exports=n();else if(typeof define==`function`&&define.amd)define(n);else{var r;try{r=window}catch{r=self}r.SparkMD5=n()}})(function(e){var t=[`0`,`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`a`,`b`,`c`,`d`,`e`,`f`];function n(e,t){var n=e[0],r=e[1],i=e[2],a=e[3];n+=(r&i|~r&a)+t[0]-680876936|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+t[1]-389564586|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+t[2]+606105819|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+t[3]-1044525330|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+t[4]-176418897|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+t[5]+1200080426|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+t[6]-1473231341|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+t[7]-45705983|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+t[8]+1770035416|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+t[9]-1958414417|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+t[10]-42063|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+t[11]-1990404162|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+t[12]+1804603682|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+t[13]-40341101|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+t[14]-1502002290|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+t[15]+1236535329|0,r=(r<<22|r>>>10)+i|0,n+=(r&a|i&~a)+t[1]-165796510|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+t[6]-1069501632|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+t[11]+643717713|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+t[0]-373897302|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+t[5]-701558691|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+t[10]+38016083|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+t[15]-660478335|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+t[4]-405537848|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+t[9]+568446438|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+t[14]-1019803690|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+t[3]-187363961|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+t[8]+1163531501|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+t[13]-1444681467|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+t[2]-51403784|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+t[7]+1735328473|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+t[12]-1926607734|0,r=(r<<20|r>>>12)+i|0,n+=(r^i^a)+t[5]-378558|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+t[8]-2022574463|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+t[11]+1839030562|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+t[14]-35309556|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+t[1]-1530992060|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+t[4]+1272893353|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+t[7]-155497632|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+t[10]-1094730640|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+t[13]+681279174|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+t[0]-358537222|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+t[3]-722521979|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+t[6]+76029189|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+t[9]-640364487|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+t[12]-421815835|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+t[15]+530742520|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+t[2]-995338651|0,r=(r<<23|r>>>9)+i|0,n+=(i^(r|~a))+t[0]-198630844|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+t[7]+1126891415|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+t[14]-1416354905|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+t[5]-57434055|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+t[12]+1700485571|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+t[3]-1894986606|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+t[10]-1051523|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+t[1]-2054922799|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+t[8]+1873313359|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+t[15]-30611744|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+t[6]-1560198380|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+t[13]+1309151649|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+t[4]-145523070|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+t[11]-1120210379|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+t[2]+718787259|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+t[9]-343485551|0,r=(r<<21|r>>>11)+i|0,e[0]=n+e[0]|0,e[1]=r+e[1]|0,e[2]=i+e[2]|0,e[3]=a+e[3]|0}function r(e){var t=[],n;for(n=0;n<64;n+=4)t[n>>2]=e.charCodeAt(n)+(e.charCodeAt(n+1)<<8)+(e.charCodeAt(n+2)<<16)+(e.charCodeAt(n+3)<<24);return t}function i(e){var t=[],n;for(n=0;n<64;n+=4)t[n>>2]=e[n]+(e[n+1]<<8)+(e[n+2]<<16)+(e[n+3]<<24);return t}function a(e){var t=e.length,i=[1732584193,-271733879,-1732584194,271733878],a,o,s,c,l,u;for(a=64;a<=t;a+=64)n(i,r(e.substring(a-64,a)));for(e=e.substring(a-64),o=e.length,s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],a=0;a<o;a+=1)s[a>>2]|=e.charCodeAt(a)<<(a%4<<3);if(s[a>>2]|=128<<(a%4<<3),a>55)for(n(i,s),a=0;a<16;a+=1)s[a]=0;return c=t*8,c=c.toString(16).match(/(.*?)(.{0,8})$/),l=parseInt(c[2],16),u=parseInt(c[1],16)||0,s[14]=l,s[15]=u,n(i,s),i}function o(e){var t=e.length,r=[1732584193,-271733879,-1732584194,271733878],a,o,s,c,l,u;for(a=64;a<=t;a+=64)n(r,i(e.subarray(a-64,a)));for(e=a-64<t?e.subarray(a-64):new Uint8Array,o=e.length,s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],a=0;a<o;a+=1)s[a>>2]|=e[a]<<(a%4<<3);if(s[a>>2]|=128<<(a%4<<3),a>55)for(n(r,s),a=0;a<16;a+=1)s[a]=0;return c=t*8,c=c.toString(16).match(/(.*?)(.{0,8})$/),l=parseInt(c[2],16),u=parseInt(c[1],16)||0,s[14]=l,s[15]=u,n(r,s),r}function s(e){var n=``,r;for(r=0;r<4;r+=1)n+=t[e>>r*8+4&15]+t[e>>r*8&15];return n}function c(e){var t;for(t=0;t<e.length;t+=1)e[t]=s(e[t]);return e.join(``)}c(a(`hello`)),typeof ArrayBuffer<`u`&&!ArrayBuffer.prototype.slice&&(function(){function t(e,t){return e=e|0||0,e<0?Math.max(e+t,0):Math.min(e,t)}ArrayBuffer.prototype.slice=function(n,r){var i=this.byteLength,a=t(n,i),o=i,s,c,l,u;return r!==e&&(o=t(r,i)),a>o?new ArrayBuffer(0):(s=o-a,c=new ArrayBuffer(s),l=new Uint8Array(c),u=new Uint8Array(this,a,s),l.set(u),c)}})();function l(e){return/[\u0080-\uFFFF]/.test(e)&&(e=unescape(encodeURIComponent(e))),e}function u(e,t){var n=e.length,r=new ArrayBuffer(n),i=new Uint8Array(r),a;for(a=0;a<n;a+=1)i[a]=e.charCodeAt(a);return t?i:r}function d(e){return String.fromCharCode.apply(null,new Uint8Array(e))}function f(e,t,n){var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e)),r.set(new Uint8Array(t),e.byteLength),n?r:r.buffer}function p(e){var t=[],n=e.length,r;for(r=0;r<n-1;r+=2)t.push(parseInt(e.substr(r,2),16));return String.fromCharCode.apply(String,t)}function m(){this.reset()}return m.prototype.append=function(e){return this.appendBinary(l(e)),this},m.prototype.appendBinary=function(e){this._buff+=e,this._length+=e.length;var t=this._buff.length,i;for(i=64;i<=t;i+=64)n(this._hash,r(this._buff.substring(i-64,i)));return this._buff=this._buff.substring(i-64),this},m.prototype.end=function(e){var t=this._buff,n=t.length,r,i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],a;for(r=0;r<n;r+=1)i[r>>2]|=t.charCodeAt(r)<<(r%4<<3);return this._finish(i,n),a=c(this._hash),e&&(a=p(a)),this.reset(),a},m.prototype.reset=function(){return this._buff=``,this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},m.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},m.prototype.setState=function(e){return this._buff=e.buff,this._length=e.length,this._hash=e.hash,this},m.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},m.prototype._finish=function(e,t){var r=t,i,a,o;if(e[r>>2]|=128<<(r%4<<3),r>55)for(n(this._hash,e),r=0;r<16;r+=1)e[r]=0;i=this._length*8,i=i.toString(16).match(/(.*?)(.{0,8})$/),a=parseInt(i[2],16),o=parseInt(i[1],16)||0,e[14]=a,e[15]=o,n(this._hash,e)},m.hash=function(e,t){return m.hashBinary(l(e),t)},m.hashBinary=function(e,t){var n=c(a(e));return t?p(n):n},m.ArrayBuffer=function(){this.reset()},m.ArrayBuffer.prototype.append=function(e){var t=f(this._buff.buffer,e,!0),r=t.length,a;for(this._length+=e.byteLength,a=64;a<=r;a+=64)n(this._hash,i(t.subarray(a-64,a)));return this._buff=a-64<r?new Uint8Array(t.buffer.slice(a-64)):new Uint8Array,this},m.ArrayBuffer.prototype.end=function(e){var t=this._buff,n=t.length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],i,a;for(i=0;i<n;i+=1)r[i>>2]|=t[i]<<(i%4<<3);return this._finish(r,n),a=c(this._hash),e&&(a=p(a)),this.reset(),a},m.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array,this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},m.ArrayBuffer.prototype.getState=function(){var e=m.prototype.getState.call(this);return e.buff=d(e.buff),e},m.ArrayBuffer.prototype.setState=function(e){return e.buff=u(e.buff,!0),m.prototype.setState.call(this,e)},m.ArrayBuffer.prototype.destroy=m.prototype.destroy,m.ArrayBuffer.prototype._finish=m.prototype._finish,m.ArrayBuffer.hash=function(e,t){var n=c(o(new Uint8Array(e)));return t?p(n):n},m})}))()),x={secondary:{label:`Secondary`,isTertiary:!1},"primary & secondary":{label:`Primary & Secondary`,isTertiary:!1},k12:{label:`Primary & Secondary`,isTertiary:!1},primary:{label:`Primary`,isTertiary:!1},special:{label:`Special`,isTertiary:!1},university:{label:`University`,isTertiary:!0},middle:{label:`Middle`,isTertiary:!1},"fe college":{label:`FE College`,isTertiary:!0},"high school":{label:`Secondary`,isTertiary:!1},elementary:{label:`Primary`,isTertiary:!1},"middle school":{label:`Middle`,isTertiary:!1},tafe:{label:`TAFE`,isTertiary:!0},college:{label:`FE College`,isTertiary:!0},"sixth form college":{label:`Sixth Form College`,isTertiary:!0}},S={england:`ENG`,scotland:`SCT`,wales:`WLS`,"northern ireland":`NIR`},C={hashedEmail(e){let t=e.trim().toLowerCase();return b.default.hash(t)},removeEmptyKeys(e){if(Array.isArray(e))return e;let t={...e};return Object.entries(t).filter(([,e])=>!(e==null||typeof e==`string`&&!e.length)).reduce((e,[t,n])=>({...e,[t]:n===Object(n)?C.removeEmptyKeys(n):n}),{})},Conversions:{TRIAL_UPGRADE_REQUEST:`Request - Trial Upgrade`,FREE_TRIAL_REQUEST:`Request - Free Trial`,OLYMPICS_SPECIAL_OFFER_REQUEST:`Request - Olympics Special Offer`},Sources:{CV_PRODUCT_TRIAL_REQUESTED:`cv_product_trial_requested`,CV_PRODUCT_BDM_TRIAL_REQUESTED:`cv_product_bdm_trial_requested`,CV_PRODUCT_TRIAL_UPGRADE_REQUESTED:`cv_product_trial_upgrade_requested`},getSchoolType(e){if(!e)return;let t=e.toLowerCase();return[`unknown`,`other`].includes(t)?void 0:x[t]?.label||e},isTertiarySchool(e){return x[e?.toLowerCase()]?.isTertiary||!1},parseProvince(e){return e.length?S[e.toLowerCase()]||e:``}},w={checkEmail(e){return{url:`/api/braze/check-email`,key:`braze:check:email:${e}`,type:l.POST,data:{email:e}}},prospectLookups(e){return{url:`{gateway}/v1/prospects/${e}/lookups`,key:`prospect:lookup:${e}`}}};function T(){return{createOrUpdateProfile:p(a.ProfileApiClient).createOrUpdate}}var E=function(e){return e.ContactUs=`Contact - Contact Us`,e.LivestreamBooking=`Submit - Livestream Booking`,e}({}),D=function(e){return e.LivestreamBooking=`sl_product_livestream`,e.ContactUs=`sl_marketing_form_contact_us`,e}({});function O(e,t){return{...e,custom:{...e?.custom,source:t.source},event:{...e?.event,conversion:t.conversion}}}function k(){let e=f(u.BrazeClient);function t({user:t,additionalData:n,source:r,eventType:i,conversion:a,productType:o,callback:s}){let c=O(t,{source:r,conversion:a});e.setUserInit(c),e.logFormEvent({eventType:i,additionalData:n,callback:s,internalOptions:{subscriptionGroups:o}})}return{client:e,logFormSubmission:t}}function A(){return k()}var j=[`Teacher`,`Librarian / Teacher Librarian`,`Curriculum Coordinator`,`Digital Technology Coordinator`,`SSO / SLSO`,`IT`,`Head of Department`,`Head of Subject`,`Assistant Principal`,`Deputy Principal`,`Principal`,`Business Manager`],M=[`Teacher`,`Librarian / Teacher Librarian`,`IT/LRC`,`e-Learning/ICT Coordinator`,`Head of Key Stage`,`Head of Department`,`Subject Lead`,`Assistant Head Teacher`,`Deputy Head Teacher`,`Head Teacher`],N=[`Teacher`,`Librarian / Teacher Librarian`,`Head of Department`,`Instructional Technology Specialist`,`Curriculum Coordinator`,`School Leadership`,`District Leadership`,`Academic Coach`,`Principal`,`IT / IT Specialist`],ee=[`Teacher`,`Librarian / Teacher Librarian`,`Curriculum Leader`,`e-Learning Coordinator`,`IT`,`Head of Department`,`Head of Faculty`,`Learning Support`,`Learning Assistant`,`Deputy Principal`,`Assistant Principal`,`Principal`],P=[`Teacher`,`Librarian / Teacher Librarian`,`Educational Assistant (EA)`,`Learning Support Teacher / Resource Teacher`,`Department Head / Manager`,`Curriculum Coordinator / Consultant`,`School Counsellor / Guidance Counsellor`,`Vice-Principal`,`Principal`,`Superintendent`,`Director of Education`],F=[`Professor`,`Lecturer`,`Course Coordinator / Administrator`,`Digital Learning Manager`,`Tutor`,`Teaching Fellow`,`Librarian`,`Learning Technologist`,`Teaching Assistant`,`Researcher`,`IT`],te=[`Professor`,`Lecturer`,`Course Coordinator / Administrator`,`Digital Learning Manager`,`Tutor`,`Teaching Fellow`,`Librarian`,`Learning Technologist`,`Teacher`,`Teaching Assistant`,`Researcher`,`IT`],ne={[g.AU]:j,[g.NZ]:ee,[g.UK]:M,[g.US]:N,[g.CA]:P},re={[g.AU]:F,[g.UK]:te};function ie(e){let t=e.countryCode?.toLowerCase();return e.isTertiary?re[t]||F:ne[t]||N}var I=e(s()),L=o(),R=`OTHER`;function z(e,t){return t.includes(e)?e:e?R:``}function ae(e){let{error:t,onChange:n,countryCode:r,isTertiary:i}=e,a=ie({countryCode:r,isTertiary:i}),o=z(e.initialValue,a),[s,c]=I.useState(o),[l,u]=I.useState(o===R?e.initialValue:``);I.useEffect(()=>{c(z(e.initialValue,a))},[e.initialValue]);function d(e){c(e.target.value),u(``),n(e.target.value===R?``:e.target.value)}function f(e){u(e.target.value),n(e.target.value)}let p=s===R;return(0,L.jsxs)(`div`,{className:`form-group`,children:[(0,L.jsxs)(`label`,{htmlFor:e.id,className:e.labelClassName,children:[`Job title`,e.required&&(0,L.jsx)(`span`,{className:`text-danger`,children:`*`})]}),(0,L.jsxs)(`div`,{className:`mb-2`,children:[(0,L.jsxs)(`select`,{id:e.id,name:e.id,className:`form-select ${e.size===`lg`?`form-select-lg`:``} ${s.length?`text-dark`:`text-secondary`} ${!!t&&`is-invalid`}`,value:s,placeholder:`Role`,onChange:d,children:[(0,L.jsx)(`option`,{value:``,disabled:!0,className:`text-secondary`,children:e.placeholder?e.placeholder:(0,L.jsx)(L.Fragment,{children:`What do you do?`})}),a.map((e,t)=>(0,L.jsx)(`option`,{value:e,className:`text-dark`,children:e},t)),(0,L.jsx)(`option`,{value:R,className:`text-dark`,children:`Other`})]}),!!t&&!p&&(0,L.jsx)(y,{name:e.id,children:t})]}),p&&(0,L.jsxs)(`div`,{className:`mb-3`,children:[(0,L.jsx)(`input`,{className:`form-control ${e.size===`lg`?`form-select-lg`:``} ${!!t&&`is-invalid`}`,type:`text`,value:l,placeholder:`What do you do?`,autoFocus:!0,onChange:f}),!!t&&(0,L.jsx)(y,{name:e.id,children:t})]})]})}function oe(){return(0,L.jsx)(`svg`,{viewBox:`0 0 24 24`,children:(0,L.jsx)(`path`,{d:`M11.959 10.641l4.402-4.296a.964.964 0 0 1 1.358 0 .951.951 0 0 1 0 1.35l-4.403 4.297 4.403 4.378a.951.951 0 0 1 0 1.35.964.964 0 0 1-1.358 0l-4.402-4.378-4.32 4.378a.964.964 0 0 1-1.358 0 .951.951 0 0 1 0-1.35l4.32-4.378-4.32-4.362a.951.951 0 0 1 0-1.35.964.964 0 0 1 1.358 0l4.32 4.361z`})})}var B={clearInput:`_clearInput_1l19p_1`,clearableInput:`_clearableInput_1l19p_8`},V=I.forwardRef((e,t)=>{let{onClickClear:n,showClearButton:r,clearClassName:i,...a}=e;return(0,L.jsxs)(`div`,{className:`position-relative`,children:[(0,L.jsx)(`input`,{...a,ref:t,className:`${e.className} ${B.clearableInput}`}),(!!e.value||r)&&(0,L.jsx)(`span`,{className:`${B.clearInput} position-absolute cursor-pointer text-secondary ${i||``}`,role:`button`,onClick:n,onKeyDown:e=>e.key===`Enter`&&n(),tabIndex:0,children:(0,L.jsx)(`div`,{className:`d-inline-block svg-container md`,children:(0,L.jsx)(oe,{})})})]})}),se=function e(t,n){if(t===n)return!0;if(t&&n&&typeof t==`object`&&typeof n==`object`){if(t.constructor!==n.constructor)return!1;var r,i,a;if(Array.isArray(t)){if(r=t.length,r!=n.length)return!1;for(i=r;i--!==0;)if(!e(t[i],n[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if(a=Object.keys(t),r=a.length,r!==Object.keys(n).length)return!1;for(i=r;i--!==0;)if(!Object.prototype.hasOwnProperty.call(n,a[i]))return!1;for(i=r;i--!==0;){var o=a[i];if(!e(t[o],n[o]))return!1}return!0}return t!==t&&n!==n},ce=`__googleMapsScriptId`,H;(function(e){e[e.INITIALIZED=0]=`INITIALIZED`,e[e.LOADING=1]=`LOADING`,e[e.SUCCESS=2]=`SUCCESS`,e[e.FAILURE=3]=`FAILURE`})(H||={});var le=class e{constructor({apiKey:t,authReferrerPolicy:n,channel:r,client:i,id:a=ce,language:o,libraries:s=[],mapIds:c,nonce:l,region:u,retries:d=3,url:f=`https://maps.googleapis.com/maps/api/js`,version:p}){if(this.CALLBACK=`__googleMapsCallback`,this.callbacks=[],this.done=!1,this.loading=!1,this.errors=[],this.apiKey=t,this.authReferrerPolicy=n,this.channel=r,this.client=i,this.id=a||`__googleMapsScriptId`,this.language=o,this.libraries=s,this.mapIds=c,this.nonce=l,this.region=u,this.retries=d,this.url=f,this.version=p,e.instance){if(!se(this.options,e.instance.options))throw Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(e.instance.options)}`);return e.instance}e.instance=this}get options(){return{version:this.version,apiKey:this.apiKey,channel:this.channel,client:this.client,id:this.id,libraries:this.libraries,language:this.language,region:this.region,mapIds:this.mapIds,nonce:this.nonce,url:this.url,authReferrerPolicy:this.authReferrerPolicy}}get status(){return this.errors.length?H.FAILURE:this.done?H.SUCCESS:this.loading?H.LOADING:H.INITIALIZED}get failed(){return this.done&&!this.loading&&this.errors.length>=this.retries+1}createUrl(){let e=this.url;return e+=`?callback=${this.CALLBACK}`,this.apiKey&&(e+=`&key=${this.apiKey}`),this.channel&&(e+=`&channel=${this.channel}`),this.client&&(e+=`&client=${this.client}`),this.libraries.length>0&&(e+=`&libraries=${this.libraries.join(`,`)}`),this.language&&(e+=`&language=${this.language}`),this.region&&(e+=`&region=${this.region}`),this.version&&(e+=`&v=${this.version}`),this.mapIds&&(e+=`&map_ids=${this.mapIds.join(`,`)}`),this.authReferrerPolicy&&(e+=`&auth_referrer_policy=${this.authReferrerPolicy}`),e}deleteScript(){let e=document.getElementById(this.id);e&&e.remove()}load(){return this.loadPromise()}loadPromise(){return new Promise((e,t)=>{this.loadCallback(n=>{n?t(n.error):e(window.google)})})}loadCallback(e){this.callbacks.push(e),this.execute()}setScript(){if(document.getElementById(this.id)){this.callback();return}let e=this.createUrl(),t=document.createElement(`script`);t.id=this.id,t.type=`text/javascript`,t.src=e,t.onerror=this.loadErrorCallback.bind(this),t.defer=!0,t.async=!0,this.nonce&&(t.nonce=this.nonce),document.head.appendChild(t)}reset(){this.deleteScript(),this.done=!1,this.loading=!1,this.errors=[],this.onerrorEvent=null}resetIfRetryingFailed(){this.failed&&this.reset()}loadErrorCallback(e){if(this.errors.push(e),this.errors.length<=this.retries){let e=this.errors.length*2**this.errors.length;console.log(`Failed to load Google Maps script, retrying in ${e} ms.`),setTimeout(()=>{this.deleteScript(),this.setScript()},e)}else this.onerrorEvent=e,this.callback()}setCallback(){window.__googleMapsCallback=this.callback.bind(this)}callback(){this.done=!0,this.loading=!1,this.callbacks.forEach(e=>{e(this.onerrorEvent)}),this.callbacks=[]}execute(){if(this.resetIfRetryingFailed(),this.done)this.callback();else{if(window.google&&window.google.maps&&window.google.maps.version){console.warn(`Google Maps already loaded outside @googlemaps/js-api-loader.This may result in undesirable behavior as options and script parameters may not match.`),this.callback();return}this.loading||(this.loading=!0,this.setCallback(),this.setScript())}}};function U(e){return new le({apiKey:e.apiKey,version:`weekly`,libraries:e.libraries,retries:3})}function W(e){let t={apiKey:e.apiKey,libraries:e.libraries||[`places`]},[n,r]=I.useState(!1),[i,a]=I.useState(U(t));I.useEffect(()=>{o()},[]);function o(e,n){if(!i){a(U(t));return}i.loadCallback(t=>{if(t){r(!1),n&&n(t);return}r(!0),e&&e()})}return{loader:i,scriptLoaded:n,onGoogleApiReady:o}}function G(e){let{scriptLoaded:t}=W({apiKey:e.googleApiKey}),[n,r]=I.useState();return I.useEffect(()=>{t&&r(new google.maps.places.AutocompleteService)},[t]),n}var K=`us`,q=`country:placeholder:text`;function ue(e){let t=_.getLocalizedLocalityPlaceholderText(e?.countryCode);if(t)return t;let n=d.cacheGet(`${q}:${e?.countryCode}`);if(n)return n}function de(){return String.fromCharCode(96+r.getRandomInt(26))}function fe({apiKey:e,geoLocation:t,makeRequest:n=!0,template:i=`E.g. [placeholder]`,templateKey:a=`[placeholder]`}){let o=G({googleApiKey:e}),[s,c]=I.useState(()=>ue(t));I.useEffect(()=>{if(s||!o||!n)return;let e=t?.countryCode||K,r={input:de(),types:[`(cities)`],region:e,componentRestrictions:{country:e}};o.getPlacePredictions(r,(t,n)=>u(t,n,e))},[s,o,t,n]);function l(e,t){d.cacheSet(`${q}:${t}`,e,86400),c(e)}function u(e,t,n){if(t!==google.maps.places.PlacesServiceStatus.OK||!e){l(_.getLocalizedLocalityPlaceholderText(K),n);return}let o=e[r.getRandomInt(e.length)].description;l(i.replace(a,o),n)}return s}function J(e){let[t,n]=I.useState(0),r=I.useRef(null),[i,a]=I.useState(!!e.hideInitially);function o(){r.current&&r.current.children[t-1]?.scrollIntoView({block:`center`})}function s(r){if(e.hideOnEnter&&a(!1),r.code===`ArrowDown`){r.stopPropagation(),r.preventDefault();let i=t+1;i>e.itemCount&&(i=1),n(i),o();return}if(r.code===`ArrowUp`){r.stopPropagation(),r.preventDefault();let i=t-1;i<=0&&(i=e.itemCount),n(i),o();return}if(r.code===`Enter`&&t>0){r.stopPropagation(),r.preventDefault(),e.onSelected(t-1),e.hideOnEnter&&a(!0);return}n(0)}function c(){e.hideOnBlur&&a(!1)}function l(){e.hideOnBlur&&a(!0)}return{selectedIndex:t,onKeyDown:s,containerRef:r,hide:i,onFocus:c,onBlur:l}}var Y={getPlaceDetails(e){let t,n,r,i,a=e.formatted_address;for(let a of e.address_components)for(let e of a.types)e===`locality`&&(t=a.short_name),e===`administrative_area_level_1`&&(n=a.short_name),e===`postal_code`&&(i=a.short_name),e===`country`&&(r=a.short_name);return{locality:a,country:r,postalCode:i,city:t,province:n}}},pe={1:`geocoderPermissionDenied`,2:`geocoderUnavailable`,3:`geocoderTimeout`};function me(e){let[t,n]=I.useState({}),{onGoogleApiReady:r}=W(e);function i(){r(()=>{window.navigator.geolocation.getCurrentPosition(a,o)})}function a(e){let{latitude:t,longitude:r}=e.coords,i=new google.maps.LatLng(t,r);new google.maps.Geocoder().geocode({location:i},(e,i)=>{if(i!==google.maps.GeocoderStatus.OK)return;let a=e.find(e=>e.types.includes(`locality`)||e.types.includes(`administrative_area_level_2`));n({...Y.getPlaceDetails(a),longitude:r,latitude:t})})}function o(t){let n=pe[t.code];n||=`geocoderUnknown`,e.onPositionError(`We are unable to access your location. Please try again later.`)}return{placeDetails:t,onClickGetCurrentLocation:i}}function he({search:e,makePredicition:t,geoLocation:n,apiKey:r}){let i=G({googleApiKey:r}),a=v(e,300),[o,s]=I.useState();I.useEffect(()=>{if(!i)return;if(a?.length===0||!t){s(void 0);return}let e=n?.countryCode||`us`;i.getPlacePredictions({input:a,componentRestrictions:n?.isFallback?void 0:{country:e},region:e,types:[`locality`,`sublocality`,`postal_code`]},c)},[a,t,i]);function c(e,t){if(t!==google.maps.places.PlacesServiceStatus.OK||!e){s(void 0);return}s(e)}function l(e,t,r){new google.maps.places.PlacesService(t.current).getDetails({placeId:e.place_id,fields:[`geometry`,`address_components`,`formatted_address`],region:n.countryCode},(e,t)=>{if(t!==google.maps.places.PlacesServiceStatus.OK)return;let n=e.geometry.location.lng(),i=e.geometry.location.lat(),{locality:a,country:o,postalCode:s,city:c,province:l}=Y.getPlaceDetails(e);r({longitude:n,latitude:i,locality:a,country:o,city:c,postalCode:s,province:l})})}return{localityPredicitions:o,getPlaceInfo:l}}function X(){return(0,L.jsx)(`svg`,{viewBox:`0 0 24 24`,children:(0,L.jsx)(`path`,{d:`m12.00559,20.40189c4.60881,0 8.37242,-3.78424 8.37242,-8.40189c0,-4.61764 -3.76361,-8.40187 -8.37242,-8.40187c-4.62002,0 -8.38365,3.78422 -8.38365,8.40187c0,4.61765 3.76364,8.40189 8.38365,8.40189zm0,-1.65557c-3.75235,0 -6.67085,-2.96208 -6.67085,-6.74632c0,-3.7842 2.91851,-6.74625 6.67085,-6.74625c3.74105,0 6.67084,2.96206 6.67084,6.74625c0,3.78424 -2.92978,6.74632 -6.67084,6.74632zm-10.14151,-6.02552l6.01731,0c0.40566,0 0.72118,-0.31536 0.72118,-0.7208c0,-0.40544 -0.31552,-0.7208 -0.72118,-0.7208l-6.01731,0c-0.40566,0 -0.72117,0.31536 -0.72117,0.7208c0,0.40544 0.31551,0.7208 0.72118,0.7208l-0.00001,0zm14.25442,0l6.0174,0c0.40565,0 0.72118,-0.31536 0.72118,-0.7208c0,-0.40544 -0.31553,-0.7208 -0.72118,-0.7208l-6.0174,0c-0.40565,0 -0.72118,0.31536 -0.72118,0.7208c0,0.40544 0.31553,0.7208 0.72118,0.7208zm-4.12417,-4.1221c0.40566,0 0.72118,-0.31534 0.72118,-0.70952l0,-6.02547c0,-0.40544 -0.31552,-0.7208 -0.72118,-0.7208c-0.3944,0 -0.7099,0.31536 -0.7099,0.7208l0,6.02547c0,0.39418 0.31551,0.70952 0.7099,0.70952zm0,14.25838c0.40566,0 0.72118,-0.3154 0.72118,-0.72077l0,-6.02541c0,-0.39425 -0.31552,-0.70965 -0.72118,-0.70965c-0.3944,0 -0.7099,0.3154 -0.7099,0.70965l0,6.02541c0,0.40538 0.31551,0.72077 0.7099,0.72077z`})})}var Z={baseText:`_baseText_bmazz_1`,dropdown:`_dropdown_bmazz_4`,suggestionContainer:`_suggestionContainer_bmazz_7`,suggestionContainerInner:`_suggestionContainerInner_bmazz_13`,suggestionItem:`_suggestionItem_bmazz_18`,suggestionLoading:`_suggestionLoading_bmazz_18`,noSuggestion:`_noSuggestion_bmazz_18`,large:`_large_bmazz_22`,selected:`_selected_bmazz_32`,useMyLocation:`_useMyLocation_bmazz_36`};function ge(e){let{predictions:t,getPlaceInfo:n,selectedIndex:r}=e;return(0,L.jsx)(L.Fragment,{children:t.map((e,t)=>(0,L.jsx)(h,{className:`${Z.suggestionItem} ${r-1===t?Z.selected:``}`,onKeyDown:t=>t.key===`Enter`&&n(e),onMouseDown:()=>n(e),onClick:()=>n(e),children:e.description},e.place_id))})}function _e(e){let t=I.useRef(null),[r,a]=I.useState(e.data?.schoolLocality||``),[o,s]=I.useState(!1),l=fe({apiKey:e.googleMapsApiKey,geoLocation:e.geoLocation}),{localityPredicitions:u,getPlaceInfo:d}=he({search:r,makePredicition:o,geoLocation:e.geoLocation,apiKey:e.googleMapsApiKey}),{placeDetails:f,onClickGetCurrentLocation:p}=me({apiKey:e.googleMapsApiKey,onPositionError:w}),m=window.navigator.geolocation?1:0,{selectedIndex:g,onKeyDown:_,containerRef:v,hide:y,onBlur:b,onFocus:x}=J({onSelected:D,itemCount:(u?.length??0)+m,hideOnBlur:e.hideOnBlur}),[S,C]=I.useState();I.useEffect(()=>{O(f)},[f]);function w(e){s(!0),C(e)}function T(t){S&&C(void 0),o||s(!0),(e.data?.longitude||e.data?.latitude||e.data?.schoolLocality)&&e.clearData(),a(t)}function E(){T(``),t.current.focus()}function D(e){if(!u)return;if(e===u.length){A();return}let t=u[e];t&&k(t)}function O(t){e.setData({schoolLocality:t.locality,country:t.country,province:t.province,schoolPostCode:t.postalCode,longitude:t.longitude,latitude:t.latitude}),t.locality&&a(t.locality)}function k(e){o&&s(!1),d(e,t,O)}function A(t){t?.preventDefault(),s(!1),p(),e.logUserAction?.({},{actionType:i.Click,descriptor:c.UseMyLocation})}function j(){let t=`form-control`;return e.size===`lg`&&(t+=` form-control-lg`),t}let M=u?.length&&!e.data?.schoolLocality?.length,N=window.navigator.geolocation&&!e.data?.schoolLocality?.length,ee=e.labelClassName||`d-block text-center mb-3 fw-normal ${Z.baseText}`,P=`form-group position-relative`;return e.size===`lg`&&(P+=` ${Z.large}`),(0,L.jsxs)(`div`,{className:P,children:[(0,L.jsxs)(`label`,{className:ee,htmlFor:`locality-input`,children:[`ZIP code or city`,e.required&&(0,L.jsx)(`span`,{className:`text-danger`,children:`*`})]}),(0,L.jsx)(V,{type:`text`,value:r,onChange:e=>T(e.currentTarget.value),id:`locality-input`,className:j(),ref:t,autoComplete:`off`,placeholder:l||`Loading...`,disabled:e.disabled||!l,autoFocus:e?.autoFocus,onClickClear:E,onKeyDown:_,onFocus:x,onBlur:b}),(0,L.jsxs)(`div`,{className:`position-absolute z-1 w-100 ${Z.dropdown} ${y?`d-none`:``}`,children:[!!M&&(0,L.jsx)(`div`,{className:Z.suggestionContainer,children:(0,L.jsxs)(`div`,{className:Z.suggestionContainerInner,ref:v,children:[(0,L.jsx)(ge,{predictions:u,getPlaceInfo:k,selectedIndex:g}),window.navigator.geolocation&&e.useGeoLocationApi&&(0,L.jsx)(h,{className:n(Z.suggestionItem,`px-1`,g-1===u.length?Z.selected:``),onClick:A,children:(0,L.jsxs)(`div`,{className:`btn btn-link info-link btn-with-icon bg-transparent py-0 pe-1`,children:[(0,L.jsx)(X,{}),`Use my current location`]})})]})}),N&&!M&&e.useGeoLocationApi&&(0,L.jsx)(`div`,{className:`d-flex ${Z.useMyLocation}`,children:(0,L.jsxs)(`button`,{onClick:A,className:`btn btn-link info-link bg-white btn-with-icon`,children:[(0,L.jsx)(X,{}),`Use my current location`]})}),!!S&&(0,L.jsx)(`div`,{className:`text-danger p-2`,children:S})]})]})}var ve=class extends Error{constructor(e,t=`Error`){super(t),this.body=e}},ye={prepareQuery(e,t){let n=e;return Object.keys(t).forEach((e,r)=>{t[e]&&(r===0?n+=`?`:n+=`&`,n+=`${e}=${encodeURIComponent(t[e])}`)}),n}};function Q(e){let t={method:l.GET,headers:{"Content-type":`application/json`}};e.method&&(t={...t,method:e.method}),e.init&&(t={...t,...e.init});let n=e.url;return t.method===l.GET&&e.data?n=ye.prepareQuery(n,e.data):e.data&&(t={...t,body:JSON.stringify(e.data)}),{init:t,url:n}}var $={async asyncFetch(e){let t=Q(e),n=await fetch(t.url,t.init);if(!n.ok)throw new ve(await n.json());if(n.status!==204)return await n.json()},async asyncFetchPlain(e){let t=Q(e),n=await fetch(t.url,t.init);if(n.ok)return await n.text()},fetch(e){let t=Q(e);return fetch(t.url,t.init).then(e=>{if(e.status!==204)return e.json()}).then(t=>(e.success&&e.success(t),t)).catch(t=>(e.error&&e.error(),t)).finally(()=>{e.always&&e.always()})}},be={search(e,t,n,r,i){let a={longitude:t.longitude,latitude:t.latitude};t.query&&(a.query=t.query),$.fetch({url:e,data:a,success:n,error:r,always:i})},async create(e,t){return $.asyncFetch({url:e.createProspect,method:l.POST,data:t})},getLookups(e,t){return $.asyncFetch({url:e.prospectLookups(t)})}},xe=50;function Se(e){return e.toLowerCase().split(` `).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function Ce(e){let t=[];return e.city&&t.push(Se(e.city)),e.province&&t.push(e.province),e.postCode&&t.push(e.postCode),t.join(` `)}function we(e){let{filteredSchoolsList:t,getSchoolName:n,onSchoolSuggestionClick:r,selectedIndex:i}=e;return(0,L.jsx)(L.Fragment,{children:t.map((e,t)=>(0,L.jsxs)(h,{className:`${Z.suggestionItem} ${i-1===t?Z.selected:``}`,onKeyDown:t=>t.key===`Enter`&&r(e),onMouseDown:()=>r(e),onClick:()=>r(e),children:[n(e),` `,(0,L.jsx)(`br`,{}),(0,L.jsx)(`small`,{className:`text-secondary`,children:Ce(e)})]},e.id))})}function Te(e){return(0,L.jsx)(`div`,{className:`info-link ${Z.suggestionItem} ${Z.noSuggestion} ${e.selected?Z.selected:``}`,onKeyDown:t=>t.key===`Enter`&&e.handleNoSuggestion(),onMouseDown:e.handleNoSuggestion,onClick:e.handleNoSuggestion,children:`Can't find your school?`})}function Ee(e){let t=I.useRef(null),[n,r]=I.useState(!0),[i,a]=I.useState(e.data.schoolName&&e.data.schoolPostCode?e.data.schoolName+`, `+e.data.schoolPostCode:e.data.schoolName?e.data.schoolName:``),[o,s]=I.useState(),c=v(i,250),{selectedIndex:l,onKeyDown:u,containerRef:d,hide:f,onBlur:p,onFocus:h}=J({onSelected:g,itemCount:(o?.length??0)+1,hideOnBlur:e.hideOnBlur});function g(t){if(!o&&!t)return;if(t===o.length){e.onClickNoSuggestions(i);return}let n=o[t];n&&T(n)}let _=!!e.data?.prospectId,y=n&&!_,b=!n&&!_&&o?.length<xe,x=o?.length&&!_;I.useEffect(()=>{if(!_){if(!c.length){w();return}if(!_&&c.length>1&&c===i){w(c);return}}},[c,_]);function S(t){(e.data.schoolName||e.data.prospectId)&&e.clearData(),t!==i&&a(t)}function C(){S(``),t.current.focus()}function w(t){if(!e.data.latitude&&!e.data.longitude){r(!1);return}r(!0);let n={latitude:e.data.latitude,longitude:e.data.longitude};t&&t.length&&(n.query=t),be.search(e.searchUrl,n,e=>s(e),null,()=>r(!1))}function T(t){a(E(t)),e.setData({prospectId:t.id,schoolName:t.name,schoolPostCode:t.postCode,schoolType:t.prospectType,province:t.province,city:t.city,country:t.countryCode})}function E(e){return e.name}let D=(x||y||b)&&!e.disabled&&!f,O=!y&&!b&&o?.length>=xe,k=`form-control`,A=`form-group position-relative`;return e.size===`lg`&&(k+=` form-control-lg`,A+=` ${Z.large}`),(0,L.jsxs)(`div`,{className:A,children:[(0,L.jsxs)(`label`,{className:e.labelClassName,htmlFor:`school-input`,children:[`School`,e.required&&(0,L.jsx)(`span`,{className:`text-danger`,children:`*`})]}),(0,L.jsx)(V,{id:`school-input`,value:i,onChange:e=>S(e.currentTarget.value),ref:t,className:k,type:`text`,autoComplete:`off`,placeholder:e.placeholder||`Search for your school`,disabled:e.disabled,autoFocus:!0,onClickClear:C,onKeyDown:u,onFocus:h,onBlur:p}),(0,L.jsx)(`div`,{className:`position-absolute z-1 w-100 ${Z.dropdown} ${f?`d-none`:``}`,children:(0,L.jsx)(`div`,{className:`${Z.suggestionContainer} ${D?``:`d-none`}`,children:(0,L.jsxs)(`div`,{className:Z.suggestionContainerInner,ref:d,children:[x?(0,L.jsx)(we,{filteredSchoolsList:o,onSchoolSuggestionClick:T,getSchoolName:E,selectedIndex:l}):y&&(0,L.jsx)(`div`,{className:`${Z.suggestionLoading} py-4 d-flex justify-content-center`,children:(0,L.jsx)(m,{animation:`border`})}),O&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`hr`,{className:`my-0`}),(0,L.jsx)(`div`,{className:`${Z.suggestionItem} ${Z.noSuggestion} text-secondary text-center`,children:(0,L.jsxs)(`small`,{children:[`Can't find your school? `,(0,L.jsx)(`br`,{}),` Try searching to narrow the results`]})})]}),!y&&b&&(0,L.jsx)(Te,{selected:l===o.length+1,handleNoSuggestion:()=>{e.onClickNoSuggestions(i)}})]})})})]})}export{D as a,w as c,A as i,C as l,_e as n,E as o,ae as r,T as s,Ee as t};
2
+ //# sourceMappingURL=B703cBe72.chunk.js.map