@clickview/streamable-learning 0.48.0-rc.1 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +605 -605
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{CN8PeBwg.chunk.js → BIisq8ZO.chunk.js} +2 -2
- package/dist/scripts/{CN8PeBwg.chunk.js.map → BIisq8ZO.chunk.js.map} +1 -1
- package/dist/scripts/{BaMNOAYj2.chunk.js → BWU6_pPN2.chunk.js} +2 -2
- package/dist/scripts/{BaMNOAYj2.chunk.js.map → BWU6_pPN2.chunk.js.map} +1 -1
- package/dist/scripts/{BvJXPFoz2.chunk.js → BcZFo9Vw2.chunk.js} +2 -2
- package/dist/scripts/{BvJXPFoz2.chunk.js.map → BcZFo9Vw2.chunk.js.map} +1 -1
- package/dist/scripts/Bd2bbHru.chunk.js +1 -0
- package/dist/scripts/{CkYqp83j.chunk.js → BfNy0Hvk.chunk.js} +2 -2
- package/dist/scripts/{CkYqp83j.chunk.js.map → BfNy0Hvk.chunk.js.map} +1 -1
- package/dist/scripts/{D0SYGnyF.chunk.js → BivP7X20.chunk.js} +2 -2
- package/dist/scripts/{D0SYGnyF.chunk.js.map → BivP7X20.chunk.js.map} +1 -1
- package/dist/scripts/{BihZ4r0z2.chunk.js → BjbY4Fbp2.chunk.js} +3 -3
- package/dist/scripts/{BihZ4r0z2.chunk.js.map → BjbY4Fbp2.chunk.js.map} +1 -1
- package/dist/scripts/{DO8_mR5i2.chunk.js → BmxcE73n2.chunk.js} +2 -2
- package/dist/scripts/{DO8_mR5i2.chunk.js.map → BmxcE73n2.chunk.js.map} +1 -1
- package/dist/scripts/{bycmewy72.chunk.js → BnEMhkEE2.chunk.js} +2 -2
- package/dist/scripts/{bycmewy72.chunk.js.map → BnEMhkEE2.chunk.js.map} +1 -1
- package/dist/scripts/{jWpq99N3.chunk.js → Buc8GegC.chunk.js} +2 -2
- package/dist/scripts/{jWpq99N3.chunk.js.map → Buc8GegC.chunk.js.map} +1 -1
- package/dist/scripts/{CrCAJmt6.chunk.js → Byczy1lS.chunk.js} +2 -2
- package/dist/scripts/{CrCAJmt6.chunk.js.map → Byczy1lS.chunk.js.map} +1 -1
- package/dist/scripts/{BZOcEcTA2.chunk.js → C2itEpvc2.chunk.js} +2 -2
- package/dist/scripts/{BZOcEcTA2.chunk.js.map → C2itEpvc2.chunk.js.map} +1 -1
- package/dist/scripts/{smdLElLq.chunk.js → CEFKXxac.chunk.js} +2 -2
- package/dist/scripts/{smdLElLq.chunk.js.map → CEFKXxac.chunk.js.map} +1 -1
- package/dist/scripts/{B-qOny0I2.chunk.js → CEYjJAp52.chunk.js} +2 -2
- package/dist/scripts/{B-qOny0I2.chunk.js.map → CEYjJAp52.chunk.js.map} +1 -1
- package/dist/scripts/{CNJrD44-2.chunk.js → CJSc4YDq2.chunk.js} +2 -2
- package/dist/scripts/{CNJrD44-2.chunk.js.map → CJSc4YDq2.chunk.js.map} +1 -1
- package/dist/scripts/{Br0Uc4GG.chunk.js → CKUA5J3R.chunk.js} +2 -2
- package/dist/scripts/{Br0Uc4GG.chunk.js.map → CKUA5J3R.chunk.js.map} +1 -1
- package/dist/scripts/{CWFInhB82.chunk.js → CYrzupmS2.chunk.js} +2 -2
- package/dist/scripts/{CWFInhB82.chunk.js.map → CYrzupmS2.chunk.js.map} +1 -1
- package/dist/scripts/{Llxar-VU.chunk.js → CcGYZb9f.chunk.js} +2 -2
- package/dist/scripts/{Llxar-VU.chunk.js.map → CcGYZb9f.chunk.js.map} +1 -1
- package/dist/scripts/{BTYwcYPL2.chunk.js → CeQGaFi-2.chunk.js} +2 -2
- package/dist/scripts/{BTYwcYPL2.chunk.js.map → CeQGaFi-2.chunk.js.map} +1 -1
- package/dist/scripts/{D7tastET2.chunk.js → Cr3Blj6H2.chunk.js} +2 -2
- package/dist/scripts/{D7tastET2.chunk.js.map → Cr3Blj6H2.chunk.js.map} +1 -1
- package/dist/scripts/{Dr1flAez.chunk.js → CxCkwLio.chunk.js} +2 -2
- package/dist/scripts/{Dr1flAez.chunk.js.map → CxCkwLio.chunk.js.map} +1 -1
- package/dist/scripts/{DyT1OGvP2.chunk.js → Cxj75Dqe2.chunk.js} +2 -2
- package/dist/scripts/{DyT1OGvP2.chunk.js.map → Cxj75Dqe2.chunk.js.map} +1 -1
- package/dist/scripts/{CsC3VVvE2.chunk.js → D-VNmhoM2.chunk.js} +2 -2
- package/dist/scripts/{CsC3VVvE2.chunk.js.map → D-VNmhoM2.chunk.js.map} +1 -1
- package/dist/scripts/{CKdklY2o2.chunk.js → D2FqnK9m2.chunk.js} +2 -2
- package/dist/scripts/{CKdklY2o2.chunk.js.map → D2FqnK9m2.chunk.js.map} +1 -1
- package/dist/scripts/{qcrBN1zR2.chunk.js → D3sdyN2Q2.chunk.js} +2 -2
- package/dist/scripts/{qcrBN1zR2.chunk.js.map → D3sdyN2Q2.chunk.js.map} +1 -1
- package/dist/scripts/{Ce1TZZdV2.chunk.js → D6IzS-bj2.chunk.js} +2 -2
- package/dist/scripts/{Ce1TZZdV2.chunk.js.map → D6IzS-bj2.chunk.js.map} +1 -1
- package/dist/scripts/{B703cBe72.chunk.js → D8g6nOG92.chunk.js} +2 -2
- package/dist/scripts/{B703cBe72.chunk.js.map → D8g6nOG92.chunk.js.map} +1 -1
- package/dist/scripts/{CCoZQmgX.chunk.js → DCKKwz9L.chunk.js} +2 -2
- package/dist/scripts/{CCoZQmgX.chunk.js.map → DCKKwz9L.chunk.js.map} +1 -1
- package/dist/scripts/{DIavEegC.chunk.js → DL4UFxRK.chunk.js} +2 -2
- package/dist/scripts/{DIavEegC.chunk.js.map → DL4UFxRK.chunk.js.map} +1 -1
- package/dist/scripts/{C5i1HsPp2.chunk.js → DLofRa642.chunk.js} +2 -2
- package/dist/scripts/{C5i1HsPp2.chunk.js.map → DLofRa642.chunk.js.map} +1 -1
- package/dist/scripts/{B5jBIPaP.chunk.js → DMZ--ok1.chunk.js} +2 -2
- package/dist/scripts/{B5jBIPaP.chunk.js.map → DMZ--ok1.chunk.js.map} +1 -1
- package/dist/scripts/{CUUUI6pl.chunk.js → DQFcbMMk.chunk.js} +2 -2
- package/dist/scripts/{CUUUI6pl.chunk.js.map → DQFcbMMk.chunk.js.map} +1 -1
- package/dist/scripts/{Dj4AeYQQ2.chunk.js → DVeqPzBe2.chunk.js} +2 -2
- package/dist/scripts/{Dj4AeYQQ2.chunk.js.map → DVeqPzBe2.chunk.js.map} +1 -1
- package/dist/scripts/{CGxa1Jzq.chunk.js → DWerltCT.chunk.js} +2 -2
- package/dist/scripts/{CGxa1Jzq.chunk.js.map → DWerltCT.chunk.js.map} +1 -1
- package/dist/scripts/{CbLL7dIz2.chunk.js → DatscYpA2.chunk.js} +2 -2
- package/dist/scripts/{CbLL7dIz2.chunk.js.map → DatscYpA2.chunk.js.map} +1 -1
- package/dist/scripts/{DwzBzBlI2.chunk.js → DkaGC5IU2.chunk.js} +2 -2
- package/dist/scripts/{DwzBzBlI2.chunk.js.map → DkaGC5IU2.chunk.js.map} +1 -1
- package/dist/scripts/{BLrjbrp8.chunk.js → DqZWSPDJ.chunk.js} +2 -2
- package/dist/scripts/{BLrjbrp8.chunk.js.map → DqZWSPDJ.chunk.js.map} +1 -1
- package/dist/scripts/{BKnxYKDu2.chunk.js → Dql-1E6g2.chunk.js} +2 -2
- package/dist/scripts/{BKnxYKDu2.chunk.js.map → Dql-1E6g2.chunk.js.map} +1 -1
- package/dist/scripts/{B7iwtSij.chunk.js → DuBHin02.chunk.js} +2 -2
- package/dist/scripts/{B7iwtSij.chunk.js.map → DuBHin02.chunk.js.map} +1 -1
- package/dist/scripts/{BpgHKWR52.chunk.js → QMuFwiiF2.chunk.js} +2 -2
- package/dist/scripts/{BpgHKWR52.chunk.js.map → QMuFwiiF2.chunk.js.map} +1 -1
- package/dist/scripts/{Ces-KTwe.chunk.js → U_sIlzAD.chunk.js} +2 -2
- package/dist/scripts/{Ces-KTwe.chunk.js.map → U_sIlzAD.chunk.js.map} +1 -1
- package/dist/scripts/{ACTQklJQ.chunk.js → WLyOm9Lj.chunk.js} +2 -2
- package/dist/scripts/{ACTQklJQ.chunk.js.map → WLyOm9Lj.chunk.js.map} +1 -1
- package/dist/scripts/{DR80oZtZ.chunk.js → Ymq7JLkU.chunk.js} +2 -2
- package/dist/scripts/{DR80oZtZ.chunk.js.map → Ymq7JLkU.chunk.js.map} +1 -1
- package/dist/scripts/{app-BIigh9wv.js → app-gjHxcZG3.js} +4 -4
- package/dist/scripts/app-gjHxcZG3.js.map +1 -0
- package/dist/scripts/{CNmmq34f.chunk.js → djRnI462.chunk.js} +2 -2
- package/dist/scripts/{CNmmq34f.chunk.js.map → djRnI462.chunk.js.map} +1 -1
- package/dist/scripts/{oTYyWWB-.chunk.js → e2K2YU7z.chunk.js} +2 -2
- package/dist/scripts/{oTYyWWB-.chunk.js.map → e2K2YU7z.chunk.js.map} +1 -1
- package/dist/scripts/{BxypZGPK.chunk.js → fnfhCa1P.chunk.js} +2 -2
- package/dist/scripts/{BxypZGPK.chunk.js.map → fnfhCa1P.chunk.js.map} +1 -1
- package/dist/scripts/{BsAo7Lri2.chunk.js → iyIL3kim2.chunk.js} +2 -2
- package/dist/scripts/{BsAo7Lri2.chunk.js.map → iyIL3kim2.chunk.js.map} +1 -1
- package/dist/scripts/{DK3xia1t.chunk.js → kfFYr9dc.chunk.js} +2 -2
- package/dist/scripts/{DK3xia1t.chunk.js.map → kfFYr9dc.chunk.js.map} +1 -1
- package/dist/scripts/{BXJetawx2.chunk.js → kts5xiiM2.chunk.js} +2 -2
- package/dist/scripts/{BXJetawx2.chunk.js.map → kts5xiiM2.chunk.js.map} +1 -1
- package/dist/scripts/{tYi-sUb22.chunk.js → lLAYbgAy2.chunk.js} +2 -2
- package/dist/scripts/{tYi-sUb22.chunk.js.map → lLAYbgAy2.chunk.js.map} +1 -1
- package/dist/scripts/{BCBfXCYM2.chunk.js → p9ukva5a2.chunk.js} +2 -2
- package/dist/scripts/{BCBfXCYM2.chunk.js.map → p9ukva5a2.chunk.js.map} +1 -1
- package/dist/scripts/{DKnZ8BaN.chunk.js → wOeN2ls0.chunk.js} +2 -2
- package/dist/scripts/{DKnZ8BaN.chunk.js.map → wOeN2ls0.chunk.js.map} +1 -1
- package/dist/scripts/{DU1SE31v2.chunk.js → zp2BHOp82.chunk.js} +2 -2
- package/dist/scripts/{DU1SE31v2.chunk.js.map → zp2BHOp82.chunk.js.map} +1 -1
- package/dist/scripts/{DnSy_Myx.chunk.js → zyVwH8JF.chunk.js} +2 -2
- package/dist/scripts/{DnSy_Myx.chunk.js.map → zyVwH8JF.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/C4MLxDS-.chunk.js +0 -1
- package/dist/scripts/app-BIigh9wv.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BXJetawx2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/streamable-learning/components/livestream-details/livestream-details.module.scss","../../../../libs/shared/src/apps/streamable-learning/components/livestream-details/LivestreamDetails.tsx","../../../../libs/shared/src/apps/streamable-learning/flight-requests/BookingRequests.ts","../../src/apps/livestreams/components/livestream-booking-success/livestream-booking-success.module.scss","../../src/apps/livestreams/components/livestream-booking-success/LivestreamBookingSuccess.tsx","../../src/apps/livestreams/components/livestream-boooking-error/livestream-booking-error.module.scss","../../src/apps/livestreams/components/livestream-boooking-error/LivestreamBookingError.tsx","../../src/apps/livestreams/components/livestream-cover-image/LivestreamCoverImage.tsx","../../src/apps/livestreams/components/livestream-form/LivestreamForm.tsx","../../src/apps/livestreams/views/livestream.module.scss","../../src/apps/livestreams/views/LivestreamView.tsx"],"sourcesContent":[":local {\n .logoContainer {\n width: 3.75rem;\n height: 3.75rem;\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { Timezone, TIMEZONES_US } from 'libs/shared/apps/streamable-learning/constants/Timezones';\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { CalendarCheckSvg } from 'libs/shared/images/svg/objects/CalendarCheckSvg';\nimport { CalendarSvg } from 'libs/shared/images/svg/objects/CalendarSvg';\nimport { GlobeSvg } from 'libs/shared/images/svg/objects/GlobeSvg';\nimport { TimerSvg } from 'libs/shared/images/svg/status/TimerSvg';\nimport { Audience, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './livestream-details.module.scss';\n\nconst namespace = 'streamable.livestreamDetails';\n\ninterface LivestreamDetailsProps {\n logoUrl?: string;\n logoBgColour?: string;\n companyId?: string;\n companyName?: string;\n companyAppLink?: Core.AppLink;\n eventName: string;\n audiences?: Audience[];\n startTime: string;\n endTime: string;\n timezone: Timezone;\n description?: string;\n isPastLivestream?: boolean;\n}\n\nexport function LivestreamDetails(props: LivestreamDetailsProps) {\n function getDuration() {\n return `${DateHelper.diffBetween(props.endTime, props.startTime, 'minutes')}m`;\n }\n\n function getTimezoneDateTime(dateTime: string): Date {\n return TimezoneHelper.convertUTCToTimezoneDate(dateTime);\n }\n\n function getTime(time: string): string {\n return DateHelper.format(getTimezoneDateTime(time), 'h:mma');\n }\n\n function getDate(date: string): string {\n return DateHelper.format(getTimezoneDateTime(date), 'Do MMMM');\n }\n\n function getDisplayTimezone(timezone: Timezone): string {\n return TIMEZONES_US[timezone]?.name;\n }\n\n function getMergedAudienceName(): string {\n return AudienceHelper.getMergedPresentationAudienceString(props.audiences as PresentationAudience[])?.name;\n }\n\n const logoFallbackBgClassName = getBgColorClass(props.companyName, BG_COLOUR_CLASS_NAMES);\n\n return (\n <>\n <div className='d-flex align-items-center mb-2'>\n {props.logoUrl && (\n <AppLink\n appLink={props.companyAppLink}\n >\n <div className={`${styles.logoContainer} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background me-2`}>\n <BaseImage\n data={ImageHelper.createUrl(props.logoUrl, { size: ImageSize.Small })}\n alt={props.companyName}\n className={!props.logoBgColour && logoFallbackBgClassName}\n imageStyle={{\n backgroundColor: props.logoBgColour\n }}\n preload\n />\n </div>\n </AppLink>\n\n )}\n <div className='d-flex flex-column justify-content-between'>\n {props.companyName &&\n <AppLink\n appLink={props.companyAppLink}\n className='text-uppercase text-wrap d-block text-truncate mb-0'\n title={props.companyName}\n >\n {props.companyName}\n </AppLink>\n }\n <h1 className='h4 mb-0'>{props.eventName}</h1>\n </div>\n </div>\n\n <div className='d-flex gap-2 mb-3'>\n {!!props.audiences?.length && (\n <div className='rounded-pill border border-dark px-2'>\n {getMergedAudienceName()}\n </div>\n )}\n <div className='rounded-pill fw-semibold bg-dark text-white px-2'>\n <span className='align-middle'>{getDuration()}</span>\n </div>\n </div>\n\n {props.isPastLivestream && (\n <div className='d-inline-block bg-light-green rounded-pill mb-3'>\n <SvgContainer svg={CalendarCheckSvg} />\n <p className='d-inline ms-1 mb-0'><Text namespace={namespace} phrase='pastEvent' /></p>\n </div>\n )}\n\n {!props.isPastLivestream && (\n <>\n <p className='mb-2'>\n <SvgContainer svg={TimerSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{getTime(props.startTime)}</span>\n </p>\n <p className='mb-2'>\n <SvgContainer svg={CalendarSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{getDate(props.startTime)}</span>\n </p>\n <p className='mb-3'>\n <SvgContainer svg={GlobeSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{getDisplayTimezone(props.timezone)}</span>\n </p>\n </>\n )}\n\n {props.description && <p className='mb-3 pre-wrap text-break' dangerouslySetInnerHTML={{ __html: LinkifyHelper.linkifyText(props.description) }} />}\n </>\n );\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { CreateBookingRequest } from 'libs/shared/apps/streamable-learning/requests/CreateBookingRequest';\n\nexport const BookingRequests = {\n createBooking(data: CreateBookingRequest): Flight.PublicRequest {\n return {\n publicUrl: '/api/integrations/api/v1/bookings',\n url: '{gateway}/v1/events/booking',\n key: `streamable:create:booking`,\n type: HttpVerbs.POST,\n data\n };\n }\n};\n",":local {\n .logo {\n height: 9.25rem;\n width: 9.25rem;\n }\n}","import React from 'react';\n\nimport { LivestreamDetails } from 'libs/shared/apps/streamable-learning/components/livestream-details/LivestreamDetails';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { CheckCircleSvg } from 'libs/shared/images/svg/status/CheckCircleSvg';\nimport { Livestream } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './livestream-booking-success.module.scss';\n\nconst namespace = 'streamable.bookingSuccess';\n\ninterface LivestreamBookingSuccessProps {\n livestream: Livestream;\n}\n\nexport function LivestreamBookingSuccess(props: LivestreamBookingSuccessProps) {\n return (\n <>\n <div\n className={`${styles.logo} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background mx-auto mb-3`}\n >\n <BaseImage\n data={ImageHelper.createUrl(props.livestream.company.logo?.url, { size: ImageSize.Small })}\n alt={props.livestream.company.name}\n preload\n />\n </div>\n <div className='d-flex align-items-center justify-content-center mb-3 gap-1'>\n <SvgContainer svg={CheckCircleSvg} className='svg-container std text-success' />\n <h1 className='h3 mb-0 fw-semibold'><Text namespace={namespace} phrase='booked' /></h1>\n </div>\n <div className='my-3'>\n <LivestreamDetails\n companyId={props.livestream.company.id}\n companyName={props.livestream.company.name}\n eventName={props.livestream.name}\n audiences={props.livestream.audiences}\n startTime={props.livestream.startDateTime}\n endTime={props.livestream.endDateTime}\n timezone={props.livestream.timezone}\n />\n </div>\n <p><Text namespace={namespace} phrase='emailReminder' /></p>\n </>\n );\n}\n",":local {\n .image {\n height: 9.25rem;\n width: 9.25rem;\n }\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './livestream-booking-error.module.scss';\n\nconst namespace = 'streamable.bookingError';\n\ninterface LivestreamBookingErrorProps {\n onTryAgain: () => void;\n}\n\nexport function LivestreamBookingError(props: LivestreamBookingErrorProps) {\n return (\n <div className='d-flex flex-column justify-content-center'>\n <div\n className={`${styles.logo} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background mx-auto mb-3`}\n >\n <img\n className={styles.image}\n src={ImageUrls.General.LOST_MESSAGE_BOTTLE}\n />\n </div>\n <h3 className='text-center mb-3'><Text namespace={namespace} phrase='heading' /></h3>\n <p className='text-center mb-3'><Text namespace={namespace} phrase='description' /></p>\n <button className='btn btn-dark' onClick={props.onTryAgain}><Text namespace={namespace} phrase='buttonLabel' /></button>\n </div>\n );\n}\n","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\ninterface LivestreamCoverImageProps {\n coverImageUrl: string;\n className?: string;\n}\n\nexport function LivestreamCoverImage(props: LivestreamCoverImageProps) {\n return (\n <div\n className={`${props.className}`}\n style={props.coverImageUrl && { backgroundImage: `url(${ImageHelper._createUrl(props.coverImageUrl, { size: ImageSize.Large })})` }}\n />\n );\n}\n","import React from 'react';\nimport { Form } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { JobTitleInput } from 'libs/shared/apps/sign-up/components/steps/add-to-braze-step-item/JobTitleInput';\nimport { SearchLocalityInput } from 'libs/shared/apps/sign-up/components/steps/search-school-step-item/SearchLocalityInput';\nimport { SearchSchoolInput } from 'libs/shared/apps/sign-up/components/steps/search-school-step-item/SearchSchoolInput';\nimport { SearchSchoolData } from 'libs/shared/apps/sign-up/interfaces/SearchSchoolData';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper, useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\n\nconst namespace = 'streamable.livestreamView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst baseValidationSchema = Yup.object({\n firstName: Yup.string().required(getPhrase('firstNameRequired')),\n lastName: Yup.string().required(getPhrase('lastNameRequired')),\n email: Yup.string().email(getPhrase('emailValid')).required(getPhrase('emailRequired')),\n attendees: Yup.string().required(getPhrase('attendeesRequired'))\n});\n\nconst guestValidationSchema = baseValidationSchema.concat(Yup.object({\n schoolOrDistrict: Yup.string().required(getPhrase('schoolOrDistrictRequired')),\n jobTitle: Yup.string().required(getPhrase('jobTitleRequired')),\n phoneNumber: Yup.string().required(getPhrase('phoneNumberRequired')).matches(/^[0-9]+$/, getPhrase('phoneNumberValid'))\n}));\n\ninterface LivestreamFormFieldsProps {\n isAuthenticated: boolean;\n showSpinner: boolean;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n emailAddress: string;\n}\n\nfunction LivestreamFormFields(props: LivestreamFormFieldsProps) {\n const formikProps = useFormikContextWrapper<LivestreamBookingFormValues>();\n\n const [ searchSchoolData, setSearchSchoolData ] = React.useState<SearchSchoolData>({});\n const [ cantFindSchool, setCantFindSchool ] = React.useState<boolean>(false);\n\n function clearFormikSchoolData() {\n formikProps.setFieldValue('schoolOrDistrict', '');\n formikProps.setFieldValue('country', '');\n formikProps.setFieldValue('province', '');\n formikProps.setFieldValue('prospectId', '');\n triggerValidation();\n }\n\n function setLocalityData(data: SearchSchoolData): void {\n setSearchSchoolData({ ...searchSchoolData, ...data });\n clearFormikSchoolData();\n }\n\n function clearLocalityData(): void {\n setSearchSchoolData({});\n clearFormikSchoolData();\n }\n\n function setSchoolData(data: SearchSchoolData): void {\n setSearchSchoolData({ ...searchSchoolData, ...data });\n\n formikProps.setFieldValue('schoolOrDistrict', data.schoolName);\n formikProps.setFieldValue('country', data.country);\n formikProps.setFieldValue('province', data.province);\n formikProps.setFieldValue('prospectId', data.prospectId);\n\n triggerValidation();\n }\n\n function clearSchooldata(): void {\n setSearchSchoolData({\n ...searchSchoolData,\n prospectId: undefined,\n schoolName: undefined,\n schoolPostCode: undefined\n });\n clearFormikSchoolData();\n }\n\n function onClickNoSuggestions(name: string) {\n setCantFindSchool(true);\n\n formikProps.setFieldValue('schoolOrDistrict', name);\n\n triggerValidation();\n }\n\n function triggerValidation() {\n // For whatever reason, forcing the form the validate needs to happen in a setTimeout to work\n // I genuinely have no idea why - Sha\n window.setTimeout(() => formikProps.validateForm(), 0);\n }\n\n return (\n <Form>\n <div className='row my-3'>\n <div className='col-12 col-sm-6'>\n <FormField\n label={getPhrase('firstName')}\n name='firstName'\n placeholder={getPhrase('firstNamePlaceholder')}\n value={formikProps.values?.firstName}\n disabled={props.isAuthenticated}\n showRequiredStar={!props.isAuthenticated}\n />\n </div>\n <div className='col-12 col-sm-6'>\n <FormField\n label={getPhrase('lastName')}\n name='lastName'\n placeholder={getPhrase('lastNamePlaceholder')}\n value={formikProps.values?.lastName}\n disabled={props.isAuthenticated}\n showRequiredStar={!props.isAuthenticated}\n />\n </div>\n <div className='col-12'>\n <FormField\n label={getPhrase('email')}\n name='email'\n placeholder={getPhrase('emailPlaceholder')}\n value={formikProps.values?.email}\n disabled={props.isAuthenticated && !!props.emailAddress}\n showRequiredStar={!props.isAuthenticated || !props.emailAddress}\n />\n </div>\n {!props.isAuthenticated &&\n <>\n <div className='col-12'>\n {!cantFindSchool ?\n <>\n <SearchLocalityInput\n data={searchSchoolData}\n setData={setLocalityData}\n clearData={clearLocalityData}\n labelClassName='form-label'\n geoLocation={{ countryCode: 'US' }}\n googleMapsApiKey={props.googleMapsApiKey}\n required\n hideOnBlur\n />\n <SearchSchoolInput\n data={searchSchoolData}\n setData={setSchoolData}\n clearData={clearSchooldata}\n disabled={!searchSchoolData.schoolLocality}\n searchUrl={props.searchProspectsUrl}\n onClickNoSuggestions={onClickNoSuggestions}\n required\n placeholder={!searchSchoolData.schoolLocality && getPhrase('schoolPlaceholder')}\n hideOnBlur\n />\n </> :\n <FormField\n label={getPhrase('schoolOrDistrict')}\n name='schoolOrDistrict'\n value={formikProps.values?.schoolOrDistrict}\n showRequiredStar={true}\n placeholder={getPhrase('schoolOrDistrictPlaceholder')}\n autoFocus\n />\n }\n </div>\n <div className='col-12'>\n <JobTitleInput\n id='job-title'\n error={formikProps.touched?.jobTitle && formikProps.errors?.jobTitle}\n countryCode={CountryCode.US}\n initialValue={formikProps.values?.jobTitle}\n onChange={jobTitle => formikProps.setFieldValue('jobTitle', jobTitle, false)}\n labelClassName='form-label'\n isTertiary={false}\n required\n />\n </div>\n </>\n }\n <div className='col-12 col-sm-6 col-xl-4'>\n <FormField\n type='number'\n label={getPhrase('attendees')}\n name='attendees'\n placeholder={getPhrase('attendeesPlaceholder')}\n min={1}\n value={formikProps.values?.attendees}\n showRequiredStar\n />\n </div>\n {!props.isAuthenticated && (\n <div className='col'>\n <FormField\n label={getPhrase('phoneNumber')}\n name='phoneNumber'\n placeholder={getPhrase('phoneNumberPlaceholder')}\n value={formikProps.values?.phoneNumber}\n showRequiredStar\n />\n </div>\n )}\n </div>\n <SpinnerButton type='submit' className='w-100' variant='dark' showSpinner={props.showSpinner} disabled={!formikProps.isValid} >\n <Text namespace={namespace} phrase='book' />\n </SpinnerButton>\n </Form>\n );\n}\n\nexport interface LivestreamBookingFormValues {\n firstName: string;\n lastName: string;\n email: string;\n attendees: string;\n schoolOrDistrict: string;\n jobTitle: string;\n phoneNumber: string;\n country: string;\n province: string;\n prospectId: string;\n}\n\ninterface LivestreamFormProps {\n initialValues: LivestreamBookingFormValues;\n isAuthenticated: boolean;\n showSpinner: boolean;\n onSubmit: (values: LivestreamBookingFormValues) => void;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n emailAddress: string;\n}\n\nexport function LivestreamForm(props: LivestreamFormProps) {\n return (\n <FormWrapper<LivestreamBookingFormValues>\n initialValues={props.initialValues}\n validationSchema={props.isAuthenticated ? baseValidationSchema : guestValidationSchema}\n validateOnMount={true}\n onSubmit={props.onSubmit}>\n <LivestreamFormFields\n emailAddress={props.emailAddress}\n isAuthenticated={props.isAuthenticated}\n showSpinner={props.showSpinner}\n googleMapsApiKey={props.googleMapsApiKey}\n searchProspectsUrl={props.searchProspectsUrl}\n />\n </FormWrapper>\n );\n}\n","@import '~styles/utils/include-media';\n:local {\n .noRecording {\n background-color: $gray-100;\n }\n\n .coverImage {\n height: 100px;\n background-position: center 40%;\n background-size: cover;\n\n &.popup {\n @include media('>lg') {\n height: 100%;\n }\n }\n\n &.page {\n @include media('>md') {\n height: 100%;\n }\n }\n }\n}","import React from 'react';\nimport { type BrazeUser, StreamableFormEvent } from '@clickview/braze-client';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LivestreamBookingDescriptor, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ProspectLookup } from 'libs/shared/apps/sign-up/enums/ProspectLookup';\nimport { BrazeCheckEmailResponse, BrazeHelper } from 'libs/shared/apps/sign-up/helpers/BrazeHelper';\nimport { LivestreamDetails } from 'libs/shared/apps/streamable-learning/components/livestream-details/LivestreamDetails';\nimport { BookingRequests } from 'libs/shared/apps/streamable-learning/flight-requests/BookingRequests';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurationStatusString } from 'libs/shared/enums/CurationStatus';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { BrazeRequests } from 'libs/shared/flight-requests/BrazeRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProfileApiClient } from 'libs/shared/hooks/UseProfileApiClient';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Livestream } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { StreamableConstants } from 'shared/constants/StreamableConstants';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\nimport { BrazeConversion } from 'shared/enums/BrazeConversion';\nimport { BrazeSource } from 'shared/enums/BrazeSource';\nimport { PUBLIC_ORIGIN_VIEW_MODEL_KEY, PublicOriginViewModel } from 'shared/filters/OriginFilter';\nimport { LivestreamRequests } from 'shared/flight-requests/LivestreamRequests';\nimport { useStreamableBrazeClientService } from 'shared/hooks/useStreamableBrazeClientService';\nimport { StreamableAppLinks } from 'shared/utils/StreamableAppLinks';\nimport { SeoHelper } from 'shared/utils/StreamableSeoHelper';\n\nimport { LivestreamBookingSuccess } from 'apps/livestreams/components/livestream-booking-success/LivestreamBookingSuccess';\nimport { LivestreamBookingError } from 'apps/livestreams/components/livestream-boooking-error/LivestreamBookingError';\nimport { LivestreamCoverImage } from 'apps/livestreams/components/livestream-cover-image/LivestreamCoverImage';\nimport { LivestreamBookingFormValues, LivestreamForm } from 'apps/livestreams/components/livestream-form/LivestreamForm';\n\nimport styles from './livestream.module.scss';\n\nconst namespace = 'streamable.livestreamView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LivestreamBookingProps {\n livestream: Livestream;\n formStage: boolean;\n initialValues: LivestreamBookingFormValues;\n isAuthenticated: boolean;\n isStudent: boolean;\n success: boolean;\n error: boolean;\n isPastLivestream: boolean;\n showSpinner: boolean;\n origin?: PublicOriginViewModel;\n onSubmit: (values: LivestreamBookingFormValues) => void;\n onTryAgain: () => void;\n setFormStage: React.Dispatch<React.SetStateAction<boolean>>;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n emailAddress: string;\n}\n\nfunction LivestreamContent(props: LivestreamBookingProps) {\n const redirectUrl = Core.AppLinkHelper.getHref(Core.AppLinkHelper.getCurrentAppLink());\n const signInParams = redirectUrl !== '/' ? { redirectUrl } : {};\n const originNewsletter = props.origin === 'newsletter';\n const showSignInLink = !props.isAuthenticated && !originNewsletter && !props.livestream.recording;\n const showBook =\n !props.isPastLivestream &&\n !props.formStage &&\n ((props.isAuthenticated && !props.isStudent) || originNewsletter);\n\n const signInLink = {\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params: signInParams\n };\n\n const companyAppLink = {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.COMPANY_DASHBOARD,\n args: [ props.livestream.company.id, TextHelper.slugify(props.livestream.company.name) ]\n };\n\n return (\n <>\n {!props.success && !props.error && (\n <>\n <LivestreamDetails\n logoUrl={props.livestream.company.logo?.url}\n logoBgColour={props.livestream.company.metadata?.colour}\n companyId={props.livestream.company.id}\n companyName={props.livestream.company.name}\n eventName={props.livestream.name}\n audiences={props.livestream.audiences}\n startTime={props.livestream.startDateTime}\n endTime={props.livestream.endDateTime}\n timezone={props.livestream.timezone}\n description={!props.formStage && props.livestream.description}\n isPastLivestream={props.isPastLivestream}\n companyAppLink={companyAppLink}\n />\n {props.formStage && (\n <LivestreamForm\n emailAddress={props.emailAddress}\n initialValues={props.initialValues}\n isAuthenticated={props.isAuthenticated}\n showSpinner={props.showSpinner}\n onSubmit={props.onSubmit}\n googleMapsApiKey={props.googleMapsApiKey}\n searchProspectsUrl={props.searchProspectsUrl}\n />\n )}\n {showBook && (\n <button\n className='btn btn-dark w-100'\n onClick={() => props.setFormStage(true)}\n >\n <Text namespace={namespace} phrase='book' />\n </button>\n )}\n {props.isPastLivestream && !props.livestream.recording &&\n <div className={`${styles.noRecording} p-2 rounded`}>\n <Text namespace={namespace} phrase='noRecording' />\n </div>\n }\n {props.livestream.recording &&\n <AppLink\n appLink={{\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ props.livestream.recording.id, TextHelper.slugify(props.livestream.recording.name) ]\n }}>\n <button className='btn btn-outline-dark w-100'><Text namespace={namespace} phrase='recording' /></button>\n </AppLink>\n }\n {showSignInLink &&\n <>\n <AppLink\n className='mt-3 btn btn-dark w-100'\n appLink={signInLink}\n >\n <Text namespace={namespace} phrase='signInButton' />\n </AppLink>\n <AppLink\n className='d-flex justify-content-center align-items-center mt-3 text-info'\n appLink={{\n application: AppChannels.DEFAULT,\n action: Actions.Default.CONTACT_US_POPUP\n }}\n >\n <Text namespace={namespace} phrase='contactUsLink' />\n </AppLink>\n </>\n }\n </>\n )}\n {props.success && (\n <LivestreamBookingSuccess livestream={props.livestream} />\n )}\n {props.error && (\n <LivestreamBookingError onTryAgain={props.onTryAgain} />\n )}\n </>\n );\n}\n\ninterface LivestreamPopupProps extends LivestreamBookingProps {\n closePopup: () => void;\n}\n\nfunction LivestreamPopup(props: LivestreamPopupProps) {\n function onClose() {\n props.closePopup();\n\n ScrollHelper.preventScrollTop();\n\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n const isLivestreamAppLink =\n currentAppLink.application === AppChannels.LIVESTREAMS &&\n currentAppLink.action === Actions.Livestreams.LIVESTREAM;\n if (isLivestreamAppLink)\n Core.AppLinkHelper.trigger(ContextService.getPreviousRoute()?.appLink);\n }\n\n return (\n <Popup\n size='xl'\n bodyClassName='rounded-3 overflow-hidden p-0'\n closePopup={onClose}\n >\n <button className='btn-close position-absolute top-0 end-0 p-3' onClick={onClose} />\n\n <div className='row g-0'>\n <div className='col-12 col-lg-6'>\n <LivestreamCoverImage className={`${styles.coverImage} ${styles.popup}`} coverImageUrl={props.livestream.company.cover?.url} />\n </div>\n <div className='col-12 col-lg p-4 m-lg-2'>\n <LivestreamContent {...props} />\n </div>\n </div>\n </Popup>\n );\n}\n\ninterface LivestreamPageProps extends LivestreamBookingProps { }\n\nfunction LivestreamPage(props: LivestreamPageProps) {\n return (\n <div className='row g-0 px-3'>\n <div className='col-12 col-md-6 col-lg-5'>\n <LivestreamCoverImage className={`${styles.coverImage} ${styles.page} rounded`} coverImageUrl={props.livestream.company.cover?.url} />\n </div>\n <div className='col-12 col-md px-md-3 pt-2 pt-md-0'>\n <LivestreamContent {...props} />\n </div>\n </div>\n );\n}\n\ninterface LivestreamViewProps extends PopupProps {\n id: string;\n fromPageLoad: boolean;\n}\n\nexport function LivestreamView(props: LivestreamViewProps) {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const fetchAsync = useGetFetchAsync();\n const braze = useStreamableBrazeClientService();\n const [ formStage, _setFormStage ] = React.useState(false);\n const [ success, setSuccess ] = React.useState(false);\n const [ error, setError ] = React.useState(false);\n const [ submitting, setSubmitting ] = React.useState(false);\n const [ initialValues, setInitialValues ] = React.useState<LivestreamBookingFormValues>({\n firstName: '',\n lastName: '',\n email: '',\n attendees: '',\n schoolOrDistrict: '',\n jobTitle: '',\n phoneNumber: '',\n country: '',\n province: '',\n prospectId: ''\n });\n\n const { createOrUpdateProfile } = useProfileApiClient();\n\n const [origin] = useViewModel<PublicOriginViewModel>(\n PUBLIC_ORIGIN_VIEW_MODEL_KEY,\n null,\n { storage: StorageType.SessionStorage }\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const livestream = Flight.useBasicFetch<Livestream>(LivestreamRequests.livestream(props.id));\n\n const { hasPermissions } = usePermissions();\n const isStudent = hasPermissions(PermissionName.StudentExperience);\n\n const pageMetadata = PageMetadataHelper.getDefaultMetadata({\n title: livestream.data?.name,\n description: livestream.data?.description,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n customAppLink: StreamableAppLinks.livestream(livestream.data)\n }),\n allowIndexing: true,\n product: StreamableConstants.PRODUCT_NAME\n });\n\n useSetPageMetadata({\n ...pageMetadata,\n _isPopupUp: !props.fromPageLoad\n });\n\n useHandleObjectError(livestream);\n\n React.useEffect(() => {\n if (!livestream.data || livestream.data?.status === CurationStatusString.Published) return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [livestream.data?.status]);\n\n React.useEffect(() => {\n if (!currentUser.data?.isAuthenticated) return;\n\n setInitialValues({\n ...initialValues,\n firstName: currentUser.data.givenName,\n lastName: currentUser.data.familyName,\n email: currentUser.data.email\n });\n }, [currentUser.data?.isAuthenticated]);\n\n async function onSubmit(values: LivestreamBookingFormValues) {\n try {\n setSubmitting(true);\n setInitialValues(values);\n\n await fetchAsync(BookingRequests.createBooking({\n eventId: livestream.data.id,\n eventType: 'Livestream',\n firstName: values.firstName,\n lastName: values.lastName,\n email: values.email,\n attendees: values.attendees,\n status: 1\n }));\n\n if (!currentUser.data?.isAuthenticated) {\n createOrUpdateProfile({\n email: values.email,\n firstName: values.firstName,\n lastName: values.lastName,\n phone: values.phoneNumber,\n countryCode: values.country\n });\n }\n\n logAnalyticsEvent(WorkflowPhase.Complete);\n logBrazeEvent(values);\n\n setSuccess(true);\n } catch {\n setError(true);\n _setFormStage(false);\n } finally {\n setSubmitting(false);\n }\n }\n\n function onTryAgain() {\n setError(false);\n _setFormStage(true);\n }\n\n function setFormStage() {\n _setFormStage(true);\n logAnalyticsEvent(WorkflowPhase.Start);\n }\n\n function logAnalyticsEvent(workflowPhase: WorkflowPhase) {\n AnalyticsHelper.logUserAction({\n id: livestream.data.id,\n name: livestream.data.name\n }, {\n entity: EntityType.Livestream,\n actionType: UserAction.Submit,\n location: LocationContext.LivestreamBookingForm,\n descriptor: props.fromPageLoad ?\n LivestreamBookingDescriptor.FullPage :\n LivestreamBookingDescriptor.Popup,\n workflowPhase\n });\n }\n\n async function logBrazeEvent(values: LivestreamBookingFormValues) {\n try {\n const checkEmail = await fetchAsync<BrazeCheckEmailResponse>(BrazeRequests.checkEmail(values.email));\n\n let crmId: string;\n\n if (values.prospectId) {\n const prospectLookups = await fetchAsync<ProspectLookup[]>(BrazeRequests.prospectLookups(values.prospectId));\n crmId = prospectLookups?.find(l => l.type === 'crm_id')?.externalId;\n }\n\n const brazeUser: BrazeUser = {\n email: values.email,\n firstName: values.firstName,\n lastName: values.lastName,\n phone: values.phoneNumber,\n custom: {\n accountAddress: values?.province ? {\n countryCode: values?.country,\n province: BrazeHelper.parseProvince(values?.province || '')\n } : undefined,\n accountName: values.schoolOrDistrict,\n jobTitle: values.jobTitle,\n syncToCrm: checkEmail?.users?.length ? undefined : true,\n crmId: crmId || undefined\n }\n };\n\n braze.logFormSubmission({\n eventType: StreamableFormEvent.LivestreamBookingFormSubmit,\n source: BrazeSource.LivestreamBooking,\n conversion: BrazeConversion.LivestreamBooking,\n user: brazeUser,\n productType: 'sl'\n });\n } catch (err) {\n console.error('Failed to log submission event to Braze', err);\n }\n }\n\n const hasLoaded = (\n livestream.hasCompleted &&\n config.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n const livestreamBookingProps: LivestreamBookingProps = {\n livestream: livestream.data,\n formStage,\n initialValues,\n isAuthenticated: currentUser.data?.isAuthenticated,\n isStudent,\n success,\n error,\n isPastLivestream: DateHelper.isBefore(livestream.data.endDateTime, new Date()),\n showSpinner: submitting,\n origin,\n onSubmit,\n onTryAgain,\n setFormStage,\n googleMapsApiKey: config.data.googleMapsApiKey,\n searchProspectsUrl: UrlHelper.safeUrlConcat(config.data.gatewayApiUrl, '/v1/search/prospects'),\n emailAddress: currentUser.data?.email\n };\n\n if (props.fromPageLoad) {\n return (\n <LivestreamPage {...livestreamBookingProps} />\n );\n }\n\n return <LivestreamPopup {...livestreamBookingProps} closePopup={props.closePopup} />;\n}\n"],"mappings":"q6DCyBM,GAAY,+BAiBlB,SAAgB,EAAkB,EAA+B,CAC/D,SAAS,GAAc,CACrB,MAAO,GAAG,EAAW,YAAY,EAAM,QAAS,EAAM,UAAW,UAAU,CAAC,GAG9E,SAAS,EAAoB,EAAwB,CACnD,OAAO,EAAe,yBAAyB,EAAS,CAG1D,SAAS,EAAQ,EAAsB,CACrC,OAAO,EAAW,OAAO,EAAoB,EAAK,CAAE,QAAQ,CAG9D,SAAS,EAAQ,EAAsB,CACrC,OAAO,EAAW,OAAO,EAAoB,EAAK,CAAE,UAAU,CAGhE,SAAS,EAAmB,EAA4B,CACtD,OAAO,EAAa,IAAW,KAGjC,SAAS,GAAgC,CACvC,OAAO,GAAe,oCAAoC,EAAM,UAAoC,EAAE,KAGxG,IAAM,EAA0B,GAAgB,EAAM,YAAa,GAAsB,CAEzF,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,0CAAf,CACG,EAAM,UACL,EAAA,EAAA,KAAC,EAAD,CACE,QAAS,EAAM,yBAEf,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,GAAO,cAAc,yFACtC,EAAA,EAAA,KAAC,EAAD,CACE,KAAM,EAAY,UAAU,EAAM,QAAS,CAAE,KAAM,EAAU,MAAO,CAAC,CACrE,IAAK,EAAM,YACX,UAAW,CAAC,EAAM,cAAgB,EAClC,WAAY,CACV,gBAAiB,EAAM,aACxB,CACD,QAAA,GACA,CAAA,CACE,CAAA,CACE,CAAA,EAGZ,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sDAAf,CACG,EAAM,cACL,EAAA,EAAA,KAAC,EAAD,CACE,QAAS,EAAM,eACf,UAAU,sDACV,MAAO,EAAM,qBAEZ,EAAM,YACC,CAAA,EAEZ,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,mBAAW,EAAM,UAAe,CAAA,CAAA,OAIlD,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,6BAAf,CACG,CAAC,CAAC,EAAM,WAAW,SAClB,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDACZ,GAAA,CACG,CAAA,EAER,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,6DACb,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,wBAAgB,GAAA,CAAqB,CAAA,CACjD,CAAA,CAAA,GAGP,EAAM,mBACL,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,2DAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAc,IAAK,GAAoB,CAAA,EACvC,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,+BAAqB,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,GAAW,OAAO,YAAc,CAAA,CAAI,CAAA,CAAA,GAI1F,CAAC,EAAM,mBACN,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,MAAC,IAAD,CAAG,UAAU,gBAAb,EACE,EAAA,EAAA,KAAC,EAAD,CAAc,IAAK,GAAU,KAAM,EAAiB,MAAS,CAAA,EAC7D,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,gBAAQ,EAAQ,EAAM,UAAA,CAAkB,CAAA,CAAA,IAE1D,EAAA,EAAA,MAAC,IAAD,CAAG,UAAU,gBAAb,EACE,EAAA,EAAA,KAAC,EAAD,CAAc,IAAK,GAAa,KAAM,EAAiB,MAAS,CAAA,EAChE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,gBAAQ,EAAQ,EAAM,UAAA,CAAkB,CAAA,CAAA,IAE1D,EAAA,EAAA,MAAC,IAAD,CAAG,UAAU,gBAAb,EACE,EAAA,EAAA,KAAC,EAAD,CAAc,IAAK,GAAU,KAAM,EAAiB,MAAS,CAAA,EAC7D,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,gBAAQ,EAAmB,EAAM,SAAA,CAAiB,CAAA,CAAA,GAEnE,CAAA,CAAA,CAGJ,EAAM,cAAe,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,2BAA2B,wBAAyB,CAAE,OAAQ,EAAc,YAAY,EAAM,YAAY,CAAA,CAAM,CAAA,CAClJ,CAAA,CAAA,CCvIP,IAAa,GAAkB,CAC7B,cAAc,EAAkD,CAC9D,MAAO,CACL,UAAW,oCACX,IAAK,8BACL,IAAK,4BACL,KAAM,EAAU,KAChB,OACD,EAEJ,2BEFK,EAAY,4BAMlB,SAAgB,GAAyB,EAAsC,CAC7E,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,GAAG,GAAO,KAAK,iGAE1B,EAAA,EAAA,KAAC,EAAD,CACE,KAAM,EAAY,UAAU,EAAM,WAAW,QAAQ,MAAM,IAAK,CAAE,KAAM,EAAU,MAAO,CAAC,CAC1F,IAAK,EAAM,WAAW,QAAQ,KAC9B,QAAA,GACA,CAAA,CACE,CAAA,EACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,uEAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAc,IAAK,EAAgB,UAAU,iCAAmC,CAAA,EAChF,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,gCAAsB,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,EAAW,OAAO,SAAW,CAAA,CAAK,CAAA,CAAA,IAEzF,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iBACb,EAAA,EAAA,KAAC,EAAD,CACE,UAAW,EAAM,WAAW,QAAQ,GACpC,YAAa,EAAM,WAAW,QAAQ,KACtC,UAAW,EAAM,WAAW,KAC5B,UAAW,EAAM,WAAW,UAC5B,UAAW,EAAM,WAAW,cAC5B,QAAS,EAAM,WAAW,YAC1B,SAAU,EAAM,WAAW,SAC3B,CAAA,CACE,CAAA,EACN,EAAA,EAAA,KAAC,IAAD,CAAA,UAAG,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,EAAW,OAAO,gBAAkB,CAAA,CAAI,CAAA,CAC3D,CAAA,CAAA,gCEvCD,EAAY,0BAMlB,SAAgB,GAAuB,EAAoC,CACzE,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,qDAAf,EACE,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,GAAG,EAAO,KAAK,iGAE1B,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,EAAO,MAClB,IAAK,EAAU,QAAQ,oBACvB,CAAA,CACE,CAAA,EACN,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,6BAAmB,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,EAAW,OAAO,UAAY,CAAA,CAAK,CAAA,EACrF,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,6BAAmB,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,EAAW,OAAO,cAAgB,CAAA,CAAI,CAAA,EACvF,EAAA,EAAA,KAAC,SAAD,CAAQ,UAAU,eAAe,QAAS,EAAM,qBAAY,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,EAAW,OAAO,cAAgB,CAAA,CAAS,CAAA,ICjB9H,SAAgB,EAAqB,EAAkC,CACrE,OACE,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,GAAG,EAAM,YACpB,MAAO,EAAM,eAAiB,CAAE,gBAAiB,OAAO,EAAY,WAAW,EAAM,cAAe,CAAE,KAAM,EAAU,MAAO,CAAC,CAAC,GAAA,CAC/H,CAAA,eCCA,EAAY,4BACZ,EAAY,EAAgB,iBAAiB,EAAU,CAEvD,EAAA,EAA2B,OAAO,CACtC,UAAA,EAAe,QAAQ,CAAC,SAAS,EAAU,oBAAoB,CAAC,CAChE,SAAA,EAAc,QAAQ,CAAC,SAAS,EAAU,mBAAmB,CAAC,CAC9D,MAAA,EAAW,QAAQ,CAAC,MAAM,EAAU,aAAa,CAAC,CAAC,SAAS,EAAU,gBAAgB,CAAC,CACvF,UAAA,EAAe,QAAQ,CAAC,SAAS,EAAU,oBAAoB,CAAA,CAChE,CAAC,CAEI,GAAwB,EAAqB,OAAA,EAAW,OAAO,CACnE,iBAAA,EAAsB,QAAQ,CAAC,SAAS,EAAU,2BAA2B,CAAC,CAC9E,SAAA,EAAc,QAAQ,CAAC,SAAS,EAAU,mBAAmB,CAAC,CAC9D,YAAA,EAAiB,QAAQ,CAAC,SAAS,EAAU,sBAAsB,CAAC,CAAC,QAAQ,WAAY,EAAU,mBAAmB,CAAA,CACvH,CAAC,CAAC,CAUH,SAAS,GAAqB,EAAkC,CAC9D,IAAM,EAAc,GAAsD,CAEpE,CAAE,EAAkB,GAAA,EAA8B,SAA2B,EAAE,CAAC,CAChF,CAAE,EAAgB,GAAA,EAA4B,SAAkB,GAAM,CAE5E,SAAS,GAAwB,CAC/B,EAAY,cAAc,mBAAoB,GAAG,CACjD,EAAY,cAAc,UAAW,GAAG,CACxC,EAAY,cAAc,WAAY,GAAG,CACzC,EAAY,cAAc,aAAc,GAAG,CAC3C,GAAmB,CAGrB,SAAS,EAAgB,EAA8B,CACrD,EAAoB,CAAE,GAAG,EAAkB,GAAG,EAAM,CAAC,CACrD,GAAuB,CAGzB,SAAS,GAA0B,CACjC,EAAoB,EAAE,CAAC,CACvB,GAAuB,CAGzB,SAAS,EAAc,EAA8B,CACnD,EAAoB,CAAE,GAAG,EAAkB,GAAG,EAAM,CAAC,CAErD,EAAY,cAAc,mBAAoB,EAAK,WAAW,CAC9D,EAAY,cAAc,UAAW,EAAK,QAAQ,CAClD,EAAY,cAAc,WAAY,EAAK,SAAS,CACpD,EAAY,cAAc,aAAc,EAAK,WAAW,CAExD,GAAmB,CAGrB,SAAS,GAAwB,CAC/B,EAAoB,CAClB,GAAG,EACH,WAAY,IAAA,GACZ,WAAY,IAAA,GACZ,eAAgB,IAAA,GACjB,CAAC,CACF,GAAuB,CAGzB,SAAS,EAAqB,EAAc,CAC1C,EAAkB,GAAK,CAEvB,EAAY,cAAc,mBAAoB,EAAK,CAEnD,GAAmB,CAGrB,SAAS,GAAoB,CAG3B,OAAO,eAAiB,EAAY,cAAc,CAAE,EAAE,CAGxD,OACE,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,oBAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,4BACb,EAAA,EAAA,KAAC,EAAD,CACE,MAAO,EAAU,YAAY,CAC7B,KAAK,YACL,YAAa,EAAU,uBAAuB,CAC9C,MAAO,EAAY,QAAQ,UAC3B,SAAU,EAAM,gBAChB,iBAAkB,CAAC,EAAM,gBACzB,CAAA,CACE,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,4BACb,EAAA,EAAA,KAAC,EAAD,CACE,MAAO,EAAU,WAAW,CAC5B,KAAK,WACL,YAAa,EAAU,sBAAsB,CAC7C,MAAO,EAAY,QAAQ,SAC3B,SAAU,EAAM,gBAChB,iBAAkB,CAAC,EAAM,gBACzB,CAAA,CACE,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,mBACb,EAAA,EAAA,KAAC,EAAD,CACE,MAAO,EAAU,QAAQ,CACzB,KAAK,QACL,YAAa,EAAU,mBAAmB,CAC1C,MAAO,EAAY,QAAQ,MAC3B,SAAU,EAAM,iBAAmB,CAAC,CAAC,EAAM,aAC3C,iBAAkB,CAAC,EAAM,iBAAmB,CAAC,EAAM,aACnD,CAAA,CACE,CAAA,CACL,CAAC,EAAM,kBACN,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,kBACX,GAwBA,EAAA,EAAA,KAAC,EAAD,CACE,MAAO,EAAU,mBAAmB,CACpC,KAAK,mBACL,MAAO,EAAY,QAAQ,iBAC3B,iBAAkB,GAClB,YAAa,EAAU,8BAA8B,CACrD,UAAA,GACA,CAAA,EA9BF,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,GAAD,CACE,KAAM,EACN,QAAS,EACT,UAAW,EACX,eAAe,aACf,YAAa,CAAE,YAAa,KAAM,CAClC,iBAAkB,EAAM,iBACxB,SAAA,GACA,WAAA,GACA,CAAA,EACF,EAAA,EAAA,KAAC,EAAD,CACE,KAAM,EACN,QAAS,EACT,UAAW,EACX,SAAU,CAAC,EAAiB,eAC5B,UAAW,EAAM,mBACK,uBACtB,SAAA,GACA,YAAa,CAAC,EAAiB,gBAAkB,EAAU,oBAAoB,CAC/E,WAAA,GACA,CAAA,CACD,CAAA,CAAA,CAUD,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,mBACb,EAAA,EAAA,KAAC,GAAD,CACE,GAAG,YACH,MAAO,EAAY,SAAS,UAAY,EAAY,QAAQ,SAC5D,YAAa,EAAY,GACzB,aAAc,EAAY,QAAQ,SAClC,SAAU,GAAY,EAAY,cAAc,WAAY,EAAU,GAAM,CAC5E,eAAe,aACf,WAAY,GACZ,SAAA,GACA,CAAA,CACE,CAAA,CACL,CAAA,CAAA,EAEL,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,qCACb,EAAA,EAAA,KAAC,EAAD,CACE,KAAK,SACL,MAAO,EAAU,YAAY,CAC7B,KAAK,YACL,YAAa,EAAU,uBAAuB,CAC9C,IAAK,EACL,MAAO,EAAY,QAAQ,UAC3B,iBAAA,GACA,CAAA,CACE,CAAA,CACL,CAAC,EAAM,kBACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gBACb,EAAA,EAAA,KAAC,EAAD,CACE,MAAO,EAAU,cAAc,CAC/B,KAAK,cACL,YAAa,EAAU,yBAAyB,CAChD,MAAO,EAAY,QAAQ,YAC3B,iBAAA,GACA,CAAA,CACE,CAAA,KAGV,EAAA,EAAA,KAAC,EAAD,CAAe,KAAK,SAAS,UAAU,QAAQ,QAAQ,OAAO,YAAa,EAAM,YAAa,SAAU,CAAC,EAAY,kBACnH,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,EAAW,OAAO,OAAS,CAAA,CAC9B,CAAA,CACX,CAAA,CAAA,CA2BX,SAAgB,GAAe,EAA4B,CACzD,OACE,EAAA,EAAA,KAAC,GAAD,CACE,cAAe,EAAM,cACrB,iBAAkB,EAAM,gBAAkB,EAAuB,GACjE,gBAAiB,GACjB,SAAU,EAAM,mBAChB,EAAA,EAAA,KAAC,GAAD,CACE,aAAc,EAAM,aACpB,gBAAiB,EAAM,gBACvB,YAAa,EAAM,YACnB,iBAAkB,EAAM,iBACxB,mBAAoB,EAAM,mBAC1B,CAAA,CACU,CAAA,2HElMZ,EAAY,4BACZ,GAAY,EAAgB,iBAAiB,EAAU,CAqB7D,SAAS,EAAkB,EAA+B,CACxD,IAAM,EAAA,EAAiC,QAAA,EAA2B,mBAAmB,CAAC,CAChF,EAAe,IAAgB,IAAwB,EAAE,CAApB,CAAE,cAAa,CACpD,EAAmB,EAAM,SAAW,aACpC,EAAiB,CAAC,EAAM,iBAAmB,CAAC,GAAoB,CAAC,EAAM,WAAW,UAClF,EACJ,CAAC,EAAM,kBACP,CAAC,EAAM,YACL,EAAM,iBAAmB,CAAC,EAAM,WAAc,GAE5C,EAAa,CACjB,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,UACxB,OAAQ,EACT,CAEK,EAAiB,CACrB,YAAa,EAAY,UACzB,OAAQ,EAAQ,UAAU,kBAC1B,KAAM,CAAE,EAAM,WAAW,QAAQ,GAAI,EAAW,QAAQ,EAAM,WAAW,QAAQ,KAAK,CAAA,CACvF,CAED,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,EAAM,SAAW,CAAC,EAAM,QACxB,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAD,CACE,QAAS,EAAM,WAAW,QAAQ,MAAM,IACxC,aAAc,EAAM,WAAW,QAAQ,UAAU,OACjD,UAAW,EAAM,WAAW,QAAQ,GACpC,YAAa,EAAM,WAAW,QAAQ,KACtC,UAAW,EAAM,WAAW,KAC5B,UAAW,EAAM,WAAW,UAC5B,UAAW,EAAM,WAAW,cAC5B,QAAS,EAAM,WAAW,YAC1B,SAAU,EAAM,WAAW,SAC3B,YAAa,CAAC,EAAM,WAAa,EAAM,WAAW,YAClD,iBAAkB,EAAM,iBACR,iBAChB,CAAA,CACD,EAAM,YACL,EAAA,EAAA,KAAC,GAAD,CACE,aAAc,EAAM,aACpB,cAAe,EAAM,cACrB,gBAAiB,EAAM,gBACvB,YAAa,EAAM,YACnB,SAAU,EAAM,SAChB,iBAAkB,EAAM,iBACxB,mBAAoB,EAAM,mBAC1B,CAAA,CAEH,IACC,EAAA,EAAA,KAAC,SAAD,CACE,UAAU,qBACV,YAAe,EAAM,aAAa,GAAK,WAEvC,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,OAAS,CAAA,CACrC,CAAA,CAEV,EAAM,kBAAoB,CAAC,EAAM,WAAW,YAC3C,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,YAAY,wBACpC,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,cAAgB,CAAA,CAC/C,CAAA,CAEP,EAAM,WAAW,YAChB,EAAA,EAAA,KAAC,EAAD,CACE,QAAS,CACP,YAAa,EAAY,OACzB,OAAQ,EAAQ,OAAO,WACvB,KAAM,CAAE,EAAM,WAAW,UAAU,GAAI,EAAW,QAAQ,EAAM,WAAW,UAAU,KAAK,CAAA,CAC3F,WACD,EAAA,EAAA,KAAC,SAAD,CAAQ,UAAU,uCAA6B,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,YAAc,CAAA,CAAS,CAAA,CACjG,CAAA,CAEX,IACC,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAD,CACE,UAAU,0BACV,QAAS,YAET,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,eAAiB,CAAA,CAC5C,CAAA,EACV,EAAA,EAAA,KAAC,EAAD,CACE,UAAU,kEACV,QAAS,CACP,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,iBACzB,WAED,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,gBAAkB,CAAA,CAC7C,CAAA,CACT,CAAA,CAAA,CAEJ,CAAA,CAAA,CAEJ,EAAM,UACL,EAAA,EAAA,KAAC,GAAD,CAA0B,WAAY,EAAM,WAAc,CAAA,CAE3D,EAAM,QACL,EAAA,EAAA,KAAC,GAAD,CAAwB,WAAY,EAAM,WAAc,CAAA,CAEzD,CAAA,CAAA,CAQP,SAAS,GAAgB,EAA6B,CACpD,SAAS,GAAU,CACjB,EAAM,YAAY,CAElB,GAAa,kBAAkB,CAE/B,IAAM,EAAiB,EAAe,iBAAiB,CAAC,QAEtD,EAAe,cAAgB,EAAY,aAC3C,EAAe,SAAW,EAAQ,YAAY,YAE9C,EAAmB,QAAQ,EAAe,kBAAkB,EAAE,QAAQ,CAG1E,OACE,EAAA,EAAA,MAAC,EAAD,CACE,KAAK,KACL,cAAc,gCACd,WAAY,WAHd,EAKE,EAAA,EAAA,KAAC,SAAD,CAAQ,UAAU,8CAA8C,QAAS,EAAW,CAAA,EAEpF,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mBAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,4BACb,EAAA,EAAA,KAAC,EAAD,CAAsB,UAAW,GAAG,EAAO,WAAW,GAAG,EAAO,QAAS,cAAe,EAAM,WAAW,QAAQ,OAAO,IAAO,CAAA,CAC3H,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,qCACb,EAAA,EAAA,KAAC,EAAD,CAAmB,GAAI,EAAS,CAAA,CAC5B,CAAA,CAAA,MAQd,SAAS,GAAe,EAA4B,CAClD,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,wBAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,qCACb,EAAA,EAAA,KAAC,EAAD,CAAsB,UAAW,GAAG,EAAO,WAAW,GAAG,EAAO,KAAK,UAAW,cAAe,EAAM,WAAW,QAAQ,OAAO,IAAO,CAAA,CAClI,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,+CACb,EAAA,EAAA,KAAC,EAAD,CAAmB,GAAI,EAAS,CAAA,CAC5B,CAAA,CAAA,GAUZ,SAAgB,GAAe,EAA4B,CACzD,IAAM,EAAS,EAA6B,GAAe,QAAQ,CAAC,CAE9D,EAAa,IAAkB,CAC/B,EAAQ,IAAiC,CACzC,CAAE,EAAW,GAAA,EAAwB,SAAS,GAAM,CACpD,CAAE,EAAS,GAAA,EAAqB,SAAS,GAAM,CAC/C,CAAE,EAAO,GAAA,EAAmB,SAAS,GAAM,CAC3C,CAAE,EAAY,GAAA,EAAwB,SAAS,GAAM,CACrD,CAAE,EAAe,GAAA,EAA2B,SAAsC,CACtF,UAAW,GACX,SAAU,GACV,MAAO,GACP,UAAW,GACX,iBAAkB,GAClB,SAAU,GACV,YAAa,GACb,QAAS,GACT,SAAU,GACV,WAAY,GACb,CAAC,CAEI,CAAE,yBAA0B,IAAqB,CAEjD,CAAC,GAAU,GACf,GACA,KACA,CAAE,QAAS,GAAY,eAAgB,CACxC,CAEK,EAAc,EAAkC,GAAa,aAAa,CAAC,CAC3E,EAAa,EAAiC,GAAmB,WAAW,EAAM,GAAG,CAAC,CAEtF,CAAE,kBAAmB,IAAgB,CACrC,EAAY,EAAe,GAAe,kBAAkB,CAiBlE,GAAmB,CACjB,GAhBmB,GAAmB,mBAAmB,CACzD,MAAO,EAAW,MAAM,KACxB,YAAa,EAAW,MAAM,YAC9B,cAAe,CACb,cAAe,GACf,YAAa,YACb,kBAAmB,kBACpB,CACD,cAAe,GAAU,iBAAiB,CACxC,cAAe,GAAmB,WAAW,EAAW,KAAK,CAC9D,CAAC,CACF,cAAe,GACf,QAAS,GAAoB,aAC9B,CAAC,CAIA,WAAY,CAAC,EAAM,aACpB,CAAC,CAEF,GAAqB,EAAW,CAEhC,EAAM,cAAgB,CAChB,CAAC,EAAW,MAAQ,EAAW,MAAM,SAAW,GAAqB,WAEzE,EAAiB,MAAM,IAAI,GAAgB,EAC1C,CAAC,EAAW,MAAM,OAAO,CAAC,CAE7B,EAAM,cAAgB,CACf,EAAY,MAAM,iBAEvB,EAAiB,CACf,GAAG,EACH,UAAW,EAAY,KAAK,UAC5B,SAAU,EAAY,KAAK,WAC3B,MAAO,EAAY,KAAK,MACzB,CAAC,EACD,CAAC,EAAY,MAAM,gBAAgB,CAAC,CAEvC,eAAe,EAAS,EAAqC,CAC3D,GAAI,CACF,EAAc,GAAK,CACnB,EAAiB,EAAO,CAExB,MAAM,EAAW,GAAgB,cAAc,CAC7C,QAAS,EAAW,KAAK,GACzB,UAAW,aACX,UAAW,EAAO,UAClB,SAAU,EAAO,SACjB,MAAO,EAAO,MACd,UAAW,EAAO,UAClB,OAAQ,EACT,CAAC,CAAC,CAEE,EAAY,MAAM,iBACrB,EAAsB,CACpB,MAAO,EAAO,MACd,UAAW,EAAO,UAClB,SAAU,EAAO,SACjB,MAAO,EAAO,YACd,YAAa,EAAO,QACrB,CAAC,CAGJ,EAAkB,EAAc,SAAS,CACzC,EAAc,EAAO,CAErB,EAAW,GAAK,MACV,CACN,EAAS,GAAK,CACd,EAAc,GAAM,QACZ,CACR,EAAc,GAAM,EAIxB,SAAS,GAAa,CACpB,EAAS,GAAM,CACf,EAAc,GAAK,CAGrB,SAAS,GAAe,CACtB,EAAc,GAAK,CACnB,EAAkB,EAAc,MAAM,CAGxC,SAAS,EAAkB,EAA8B,CACvD,EAAgB,cAAc,CAC5B,GAAI,EAAW,KAAK,GACpB,KAAM,EAAW,KAAK,KACvB,CAAE,CACD,OAAQ,EAAW,WACnB,WAAY,EAAW,OACvB,SAAU,EAAgB,sBAC1B,WAAY,EAAM,aAChB,EAA4B,SAC5B,EAA4B,MAC9B,gBACD,CAAC,CAGJ,eAAe,EAAc,EAAqC,CAChE,GAAI,CACF,IAAM,EAAa,MAAM,EAAoC,EAAc,WAAW,EAAO,MAAM,CAAC,CAEhG,EAEA,EAAO,aAET,GADwB,MAAM,EAA6B,EAAc,gBAAgB,EAAO,WAAW,CAAC,GACnF,KAAK,GAAK,EAAE,OAAS,SAAS,EAAE,YAG3D,IAAM,EAAuB,CAC3B,MAAO,EAAO,MACd,UAAW,EAAO,UAClB,SAAU,EAAO,SACjB,MAAO,EAAO,YACd,OAAQ,CACN,eAAgB,GAAQ,SAAW,CACjC,YAAa,GAAQ,QACrB,SAAU,GAAY,cAAc,GAAQ,UAAY,GAAA,CACzD,CAAG,IAAA,GACJ,YAAa,EAAO,iBACpB,SAAU,EAAO,SACjB,UAAW,GAAY,OAAO,OAAS,IAAA,GAAY,GACnD,MAAO,GAAS,IAAA,IAEnB,CAED,EAAM,kBAAkB,CACtB,UAAW,GAAA,oBAAoB,4BAC/B,OAAQ,GAAY,kBACpB,WAAY,GAAgB,kBAC5B,KAAM,EACN,YAAa,KACd,CAAC,OACK,EAAK,CACZ,QAAQ,MAAM,0CAA2C,EAAI,EASjE,GAAI,EAJF,EAAW,cACX,EAAO,cAIP,OAAO,EAAA,EAAA,KAAA,EAAA,SAAA,EAAK,CAAA,CAEd,IAAM,EAAiD,CACrD,WAAY,EAAW,KACvB,YACA,gBACA,gBAAiB,EAAY,MAAM,gBACnC,YACA,UACA,QACA,iBAAkB,EAAW,SAAS,EAAW,KAAK,YAAa,IAAI,KAAO,CAC9E,YAAa,EACb,SACA,WACA,aACA,eACA,iBAAkB,EAAO,KAAK,iBAC9B,mBAAoB,GAAU,cAAc,EAAO,KAAK,cAAe,uBAAuB,CAC9F,aAAc,EAAY,MAAM,MACjC,CAQD,OANI,EAAM,cAEN,EAAA,EAAA,KAAC,GAAD,CAAgB,GAAI,EAA0B,CAAA,EAI3C,EAAA,EAAA,KAAC,GAAD,CAAiB,GAAI,EAAwB,WAAY,EAAM,WAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"kts5xiiM2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/streamable-learning/components/livestream-details/livestream-details.module.scss","../../../../libs/shared/src/apps/streamable-learning/components/livestream-details/LivestreamDetails.tsx","../../../../libs/shared/src/apps/streamable-learning/flight-requests/BookingRequests.ts","../../src/apps/livestreams/components/livestream-booking-success/livestream-booking-success.module.scss","../../src/apps/livestreams/components/livestream-booking-success/LivestreamBookingSuccess.tsx","../../src/apps/livestreams/components/livestream-boooking-error/livestream-booking-error.module.scss","../../src/apps/livestreams/components/livestream-boooking-error/LivestreamBookingError.tsx","../../src/apps/livestreams/components/livestream-cover-image/LivestreamCoverImage.tsx","../../src/apps/livestreams/components/livestream-form/LivestreamForm.tsx","../../src/apps/livestreams/views/livestream.module.scss","../../src/apps/livestreams/views/LivestreamView.tsx"],"sourcesContent":[":local {\n .logoContainer {\n width: 3.75rem;\n height: 3.75rem;\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { Timezone, TIMEZONES_US } from 'libs/shared/apps/streamable-learning/constants/Timezones';\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { CalendarCheckSvg } from 'libs/shared/images/svg/objects/CalendarCheckSvg';\nimport { CalendarSvg } from 'libs/shared/images/svg/objects/CalendarSvg';\nimport { GlobeSvg } from 'libs/shared/images/svg/objects/GlobeSvg';\nimport { TimerSvg } from 'libs/shared/images/svg/status/TimerSvg';\nimport { Audience, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './livestream-details.module.scss';\n\nconst namespace = 'streamable.livestreamDetails';\n\ninterface LivestreamDetailsProps {\n logoUrl?: string;\n logoBgColour?: string;\n companyId?: string;\n companyName?: string;\n companyAppLink?: Core.AppLink;\n eventName: string;\n audiences?: Audience[];\n startTime: string;\n endTime: string;\n timezone: Timezone;\n description?: string;\n isPastLivestream?: boolean;\n}\n\nexport function LivestreamDetails(props: LivestreamDetailsProps) {\n function getDuration() {\n return `${DateHelper.diffBetween(props.endTime, props.startTime, 'minutes')}m`;\n }\n\n function getTimezoneDateTime(dateTime: string): Date {\n return TimezoneHelper.convertUTCToTimezoneDate(dateTime);\n }\n\n function getTime(time: string): string {\n return DateHelper.format(getTimezoneDateTime(time), 'h:mma');\n }\n\n function getDate(date: string): string {\n return DateHelper.format(getTimezoneDateTime(date), 'Do MMMM');\n }\n\n function getDisplayTimezone(timezone: Timezone): string {\n return TIMEZONES_US[timezone]?.name;\n }\n\n function getMergedAudienceName(): string {\n return AudienceHelper.getMergedPresentationAudienceString(props.audiences as PresentationAudience[])?.name;\n }\n\n const logoFallbackBgClassName = getBgColorClass(props.companyName, BG_COLOUR_CLASS_NAMES);\n\n return (\n <>\n <div className='d-flex align-items-center mb-2'>\n {props.logoUrl && (\n <AppLink\n appLink={props.companyAppLink}\n >\n <div className={`${styles.logoContainer} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background me-2`}>\n <BaseImage\n data={ImageHelper.createUrl(props.logoUrl, { size: ImageSize.Small })}\n alt={props.companyName}\n className={!props.logoBgColour && logoFallbackBgClassName}\n imageStyle={{\n backgroundColor: props.logoBgColour\n }}\n preload\n />\n </div>\n </AppLink>\n\n )}\n <div className='d-flex flex-column justify-content-between'>\n {props.companyName &&\n <AppLink\n appLink={props.companyAppLink}\n className='text-uppercase text-wrap d-block text-truncate mb-0'\n title={props.companyName}\n >\n {props.companyName}\n </AppLink>\n }\n <h1 className='h4 mb-0'>{props.eventName}</h1>\n </div>\n </div>\n\n <div className='d-flex gap-2 mb-3'>\n {!!props.audiences?.length && (\n <div className='rounded-pill border border-dark px-2'>\n {getMergedAudienceName()}\n </div>\n )}\n <div className='rounded-pill fw-semibold bg-dark text-white px-2'>\n <span className='align-middle'>{getDuration()}</span>\n </div>\n </div>\n\n {props.isPastLivestream && (\n <div className='d-inline-block bg-light-green rounded-pill mb-3'>\n <SvgContainer svg={CalendarCheckSvg} />\n <p className='d-inline ms-1 mb-0'><Text namespace={namespace} phrase='pastEvent' /></p>\n </div>\n )}\n\n {!props.isPastLivestream && (\n <>\n <p className='mb-2'>\n <SvgContainer svg={TimerSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{getTime(props.startTime)}</span>\n </p>\n <p className='mb-2'>\n <SvgContainer svg={CalendarSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{getDate(props.startTime)}</span>\n </p>\n <p className='mb-3'>\n <SvgContainer svg={GlobeSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{getDisplayTimezone(props.timezone)}</span>\n </p>\n </>\n )}\n\n {props.description && <p className='mb-3 pre-wrap text-break' dangerouslySetInnerHTML={{ __html: LinkifyHelper.linkifyText(props.description) }} />}\n </>\n );\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { CreateBookingRequest } from 'libs/shared/apps/streamable-learning/requests/CreateBookingRequest';\n\nexport const BookingRequests = {\n createBooking(data: CreateBookingRequest): Flight.PublicRequest {\n return {\n publicUrl: '/api/integrations/api/v1/bookings',\n url: '{gateway}/v1/events/booking',\n key: `streamable:create:booking`,\n type: HttpVerbs.POST,\n data\n };\n }\n};\n",":local {\n .logo {\n height: 9.25rem;\n width: 9.25rem;\n }\n}","import React from 'react';\n\nimport { LivestreamDetails } from 'libs/shared/apps/streamable-learning/components/livestream-details/LivestreamDetails';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { CheckCircleSvg } from 'libs/shared/images/svg/status/CheckCircleSvg';\nimport { Livestream } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './livestream-booking-success.module.scss';\n\nconst namespace = 'streamable.bookingSuccess';\n\ninterface LivestreamBookingSuccessProps {\n livestream: Livestream;\n}\n\nexport function LivestreamBookingSuccess(props: LivestreamBookingSuccessProps) {\n return (\n <>\n <div\n className={`${styles.logo} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background mx-auto mb-3`}\n >\n <BaseImage\n data={ImageHelper.createUrl(props.livestream.company.logo?.url, { size: ImageSize.Small })}\n alt={props.livestream.company.name}\n preload\n />\n </div>\n <div className='d-flex align-items-center justify-content-center mb-3 gap-1'>\n <SvgContainer svg={CheckCircleSvg} className='svg-container std text-success' />\n <h1 className='h3 mb-0 fw-semibold'><Text namespace={namespace} phrase='booked' /></h1>\n </div>\n <div className='my-3'>\n <LivestreamDetails\n companyId={props.livestream.company.id}\n companyName={props.livestream.company.name}\n eventName={props.livestream.name}\n audiences={props.livestream.audiences}\n startTime={props.livestream.startDateTime}\n endTime={props.livestream.endDateTime}\n timezone={props.livestream.timezone}\n />\n </div>\n <p><Text namespace={namespace} phrase='emailReminder' /></p>\n </>\n );\n}\n",":local {\n .image {\n height: 9.25rem;\n width: 9.25rem;\n }\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './livestream-booking-error.module.scss';\n\nconst namespace = 'streamable.bookingError';\n\ninterface LivestreamBookingErrorProps {\n onTryAgain: () => void;\n}\n\nexport function LivestreamBookingError(props: LivestreamBookingErrorProps) {\n return (\n <div className='d-flex flex-column justify-content-center'>\n <div\n className={`${styles.logo} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background mx-auto mb-3`}\n >\n <img\n className={styles.image}\n src={ImageUrls.General.LOST_MESSAGE_BOTTLE}\n />\n </div>\n <h3 className='text-center mb-3'><Text namespace={namespace} phrase='heading' /></h3>\n <p className='text-center mb-3'><Text namespace={namespace} phrase='description' /></p>\n <button className='btn btn-dark' onClick={props.onTryAgain}><Text namespace={namespace} phrase='buttonLabel' /></button>\n </div>\n );\n}\n","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\ninterface LivestreamCoverImageProps {\n coverImageUrl: string;\n className?: string;\n}\n\nexport function LivestreamCoverImage(props: LivestreamCoverImageProps) {\n return (\n <div\n className={`${props.className}`}\n style={props.coverImageUrl && { backgroundImage: `url(${ImageHelper._createUrl(props.coverImageUrl, { size: ImageSize.Large })})` }}\n />\n );\n}\n","import React from 'react';\nimport { Form } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { JobTitleInput } from 'libs/shared/apps/sign-up/components/steps/add-to-braze-step-item/JobTitleInput';\nimport { SearchLocalityInput } from 'libs/shared/apps/sign-up/components/steps/search-school-step-item/SearchLocalityInput';\nimport { SearchSchoolInput } from 'libs/shared/apps/sign-up/components/steps/search-school-step-item/SearchSchoolInput';\nimport { SearchSchoolData } from 'libs/shared/apps/sign-up/interfaces/SearchSchoolData';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper, useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\n\nconst namespace = 'streamable.livestreamView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst baseValidationSchema = Yup.object({\n firstName: Yup.string().required(getPhrase('firstNameRequired')),\n lastName: Yup.string().required(getPhrase('lastNameRequired')),\n email: Yup.string().email(getPhrase('emailValid')).required(getPhrase('emailRequired')),\n attendees: Yup.string().required(getPhrase('attendeesRequired'))\n});\n\nconst guestValidationSchema = baseValidationSchema.concat(Yup.object({\n schoolOrDistrict: Yup.string().required(getPhrase('schoolOrDistrictRequired')),\n jobTitle: Yup.string().required(getPhrase('jobTitleRequired')),\n phoneNumber: Yup.string().required(getPhrase('phoneNumberRequired')).matches(/^[0-9]+$/, getPhrase('phoneNumberValid'))\n}));\n\ninterface LivestreamFormFieldsProps {\n isAuthenticated: boolean;\n showSpinner: boolean;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n emailAddress: string;\n}\n\nfunction LivestreamFormFields(props: LivestreamFormFieldsProps) {\n const formikProps = useFormikContextWrapper<LivestreamBookingFormValues>();\n\n const [ searchSchoolData, setSearchSchoolData ] = React.useState<SearchSchoolData>({});\n const [ cantFindSchool, setCantFindSchool ] = React.useState<boolean>(false);\n\n function clearFormikSchoolData() {\n formikProps.setFieldValue('schoolOrDistrict', '');\n formikProps.setFieldValue('country', '');\n formikProps.setFieldValue('province', '');\n formikProps.setFieldValue('prospectId', '');\n triggerValidation();\n }\n\n function setLocalityData(data: SearchSchoolData): void {\n setSearchSchoolData({ ...searchSchoolData, ...data });\n clearFormikSchoolData();\n }\n\n function clearLocalityData(): void {\n setSearchSchoolData({});\n clearFormikSchoolData();\n }\n\n function setSchoolData(data: SearchSchoolData): void {\n setSearchSchoolData({ ...searchSchoolData, ...data });\n\n formikProps.setFieldValue('schoolOrDistrict', data.schoolName);\n formikProps.setFieldValue('country', data.country);\n formikProps.setFieldValue('province', data.province);\n formikProps.setFieldValue('prospectId', data.prospectId);\n\n triggerValidation();\n }\n\n function clearSchooldata(): void {\n setSearchSchoolData({\n ...searchSchoolData,\n prospectId: undefined,\n schoolName: undefined,\n schoolPostCode: undefined\n });\n clearFormikSchoolData();\n }\n\n function onClickNoSuggestions(name: string) {\n setCantFindSchool(true);\n\n formikProps.setFieldValue('schoolOrDistrict', name);\n\n triggerValidation();\n }\n\n function triggerValidation() {\n // For whatever reason, forcing the form the validate needs to happen in a setTimeout to work\n // I genuinely have no idea why - Sha\n window.setTimeout(() => formikProps.validateForm(), 0);\n }\n\n return (\n <Form>\n <div className='row my-3'>\n <div className='col-12 col-sm-6'>\n <FormField\n label={getPhrase('firstName')}\n name='firstName'\n placeholder={getPhrase('firstNamePlaceholder')}\n value={formikProps.values?.firstName}\n disabled={props.isAuthenticated}\n showRequiredStar={!props.isAuthenticated}\n />\n </div>\n <div className='col-12 col-sm-6'>\n <FormField\n label={getPhrase('lastName')}\n name='lastName'\n placeholder={getPhrase('lastNamePlaceholder')}\n value={formikProps.values?.lastName}\n disabled={props.isAuthenticated}\n showRequiredStar={!props.isAuthenticated}\n />\n </div>\n <div className='col-12'>\n <FormField\n label={getPhrase('email')}\n name='email'\n placeholder={getPhrase('emailPlaceholder')}\n value={formikProps.values?.email}\n disabled={props.isAuthenticated && !!props.emailAddress}\n showRequiredStar={!props.isAuthenticated || !props.emailAddress}\n />\n </div>\n {!props.isAuthenticated &&\n <>\n <div className='col-12'>\n {!cantFindSchool ?\n <>\n <SearchLocalityInput\n data={searchSchoolData}\n setData={setLocalityData}\n clearData={clearLocalityData}\n labelClassName='form-label'\n geoLocation={{ countryCode: 'US' }}\n googleMapsApiKey={props.googleMapsApiKey}\n required\n hideOnBlur\n />\n <SearchSchoolInput\n data={searchSchoolData}\n setData={setSchoolData}\n clearData={clearSchooldata}\n disabled={!searchSchoolData.schoolLocality}\n searchUrl={props.searchProspectsUrl}\n onClickNoSuggestions={onClickNoSuggestions}\n required\n placeholder={!searchSchoolData.schoolLocality && getPhrase('schoolPlaceholder')}\n hideOnBlur\n />\n </> :\n <FormField\n label={getPhrase('schoolOrDistrict')}\n name='schoolOrDistrict'\n value={formikProps.values?.schoolOrDistrict}\n showRequiredStar={true}\n placeholder={getPhrase('schoolOrDistrictPlaceholder')}\n autoFocus\n />\n }\n </div>\n <div className='col-12'>\n <JobTitleInput\n id='job-title'\n error={formikProps.touched?.jobTitle && formikProps.errors?.jobTitle}\n countryCode={CountryCode.US}\n initialValue={formikProps.values?.jobTitle}\n onChange={jobTitle => formikProps.setFieldValue('jobTitle', jobTitle, false)}\n labelClassName='form-label'\n isTertiary={false}\n required\n />\n </div>\n </>\n }\n <div className='col-12 col-sm-6 col-xl-4'>\n <FormField\n type='number'\n label={getPhrase('attendees')}\n name='attendees'\n placeholder={getPhrase('attendeesPlaceholder')}\n min={1}\n value={formikProps.values?.attendees}\n showRequiredStar\n />\n </div>\n {!props.isAuthenticated && (\n <div className='col'>\n <FormField\n label={getPhrase('phoneNumber')}\n name='phoneNumber'\n placeholder={getPhrase('phoneNumberPlaceholder')}\n value={formikProps.values?.phoneNumber}\n showRequiredStar\n />\n </div>\n )}\n </div>\n <SpinnerButton type='submit' className='w-100' variant='dark' showSpinner={props.showSpinner} disabled={!formikProps.isValid} >\n <Text namespace={namespace} phrase='book' />\n </SpinnerButton>\n </Form>\n );\n}\n\nexport interface LivestreamBookingFormValues {\n firstName: string;\n lastName: string;\n email: string;\n attendees: string;\n schoolOrDistrict: string;\n jobTitle: string;\n phoneNumber: string;\n country: string;\n province: string;\n prospectId: string;\n}\n\ninterface LivestreamFormProps {\n initialValues: LivestreamBookingFormValues;\n isAuthenticated: boolean;\n showSpinner: boolean;\n onSubmit: (values: LivestreamBookingFormValues) => void;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n emailAddress: string;\n}\n\nexport function LivestreamForm(props: LivestreamFormProps) {\n return (\n <FormWrapper<LivestreamBookingFormValues>\n initialValues={props.initialValues}\n validationSchema={props.isAuthenticated ? baseValidationSchema : guestValidationSchema}\n validateOnMount={true}\n onSubmit={props.onSubmit}>\n <LivestreamFormFields\n emailAddress={props.emailAddress}\n isAuthenticated={props.isAuthenticated}\n showSpinner={props.showSpinner}\n googleMapsApiKey={props.googleMapsApiKey}\n searchProspectsUrl={props.searchProspectsUrl}\n />\n </FormWrapper>\n );\n}\n","@import '~styles/utils/include-media';\n:local {\n .noRecording {\n background-color: $gray-100;\n }\n\n .coverImage {\n height: 100px;\n background-position: center 40%;\n background-size: cover;\n\n &.popup {\n @include media('>lg') {\n height: 100%;\n }\n }\n\n &.page {\n @include media('>md') {\n height: 100%;\n }\n }\n }\n}","import React from 'react';\nimport { type BrazeUser, StreamableFormEvent } from '@clickview/braze-client';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LivestreamBookingDescriptor, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ProspectLookup } from 'libs/shared/apps/sign-up/enums/ProspectLookup';\nimport { BrazeCheckEmailResponse, BrazeHelper } from 'libs/shared/apps/sign-up/helpers/BrazeHelper';\nimport { LivestreamDetails } from 'libs/shared/apps/streamable-learning/components/livestream-details/LivestreamDetails';\nimport { BookingRequests } from 'libs/shared/apps/streamable-learning/flight-requests/BookingRequests';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurationStatusString } from 'libs/shared/enums/CurationStatus';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { BrazeRequests } from 'libs/shared/flight-requests/BrazeRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProfileApiClient } from 'libs/shared/hooks/UseProfileApiClient';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Livestream } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { StreamableConstants } from 'shared/constants/StreamableConstants';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\nimport { BrazeConversion } from 'shared/enums/BrazeConversion';\nimport { BrazeSource } from 'shared/enums/BrazeSource';\nimport { PUBLIC_ORIGIN_VIEW_MODEL_KEY, PublicOriginViewModel } from 'shared/filters/OriginFilter';\nimport { LivestreamRequests } from 'shared/flight-requests/LivestreamRequests';\nimport { useStreamableBrazeClientService } from 'shared/hooks/useStreamableBrazeClientService';\nimport { StreamableAppLinks } from 'shared/utils/StreamableAppLinks';\nimport { SeoHelper } from 'shared/utils/StreamableSeoHelper';\n\nimport { LivestreamBookingSuccess } from 'apps/livestreams/components/livestream-booking-success/LivestreamBookingSuccess';\nimport { LivestreamBookingError } from 'apps/livestreams/components/livestream-boooking-error/LivestreamBookingError';\nimport { LivestreamCoverImage } from 'apps/livestreams/components/livestream-cover-image/LivestreamCoverImage';\nimport { LivestreamBookingFormValues, LivestreamForm } from 'apps/livestreams/components/livestream-form/LivestreamForm';\n\nimport styles from './livestream.module.scss';\n\nconst namespace = 'streamable.livestreamView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LivestreamBookingProps {\n livestream: Livestream;\n formStage: boolean;\n initialValues: LivestreamBookingFormValues;\n isAuthenticated: boolean;\n isStudent: boolean;\n success: boolean;\n error: boolean;\n isPastLivestream: boolean;\n showSpinner: boolean;\n origin?: PublicOriginViewModel;\n onSubmit: (values: LivestreamBookingFormValues) => void;\n onTryAgain: () => void;\n setFormStage: React.Dispatch<React.SetStateAction<boolean>>;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n emailAddress: string;\n}\n\nfunction LivestreamContent(props: LivestreamBookingProps) {\n const redirectUrl = Core.AppLinkHelper.getHref(Core.AppLinkHelper.getCurrentAppLink());\n const signInParams = redirectUrl !== '/' ? { redirectUrl } : {};\n const originNewsletter = props.origin === 'newsletter';\n const showSignInLink = !props.isAuthenticated && !originNewsletter && !props.livestream.recording;\n const showBook =\n !props.isPastLivestream &&\n !props.formStage &&\n ((props.isAuthenticated && !props.isStudent) || originNewsletter);\n\n const signInLink = {\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params: signInParams\n };\n\n const companyAppLink = {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.COMPANY_DASHBOARD,\n args: [ props.livestream.company.id, TextHelper.slugify(props.livestream.company.name) ]\n };\n\n return (\n <>\n {!props.success && !props.error && (\n <>\n <LivestreamDetails\n logoUrl={props.livestream.company.logo?.url}\n logoBgColour={props.livestream.company.metadata?.colour}\n companyId={props.livestream.company.id}\n companyName={props.livestream.company.name}\n eventName={props.livestream.name}\n audiences={props.livestream.audiences}\n startTime={props.livestream.startDateTime}\n endTime={props.livestream.endDateTime}\n timezone={props.livestream.timezone}\n description={!props.formStage && props.livestream.description}\n isPastLivestream={props.isPastLivestream}\n companyAppLink={companyAppLink}\n />\n {props.formStage && (\n <LivestreamForm\n emailAddress={props.emailAddress}\n initialValues={props.initialValues}\n isAuthenticated={props.isAuthenticated}\n showSpinner={props.showSpinner}\n onSubmit={props.onSubmit}\n googleMapsApiKey={props.googleMapsApiKey}\n searchProspectsUrl={props.searchProspectsUrl}\n />\n )}\n {showBook && (\n <button\n className='btn btn-dark w-100'\n onClick={() => props.setFormStage(true)}\n >\n <Text namespace={namespace} phrase='book' />\n </button>\n )}\n {props.isPastLivestream && !props.livestream.recording &&\n <div className={`${styles.noRecording} p-2 rounded`}>\n <Text namespace={namespace} phrase='noRecording' />\n </div>\n }\n {props.livestream.recording &&\n <AppLink\n appLink={{\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ props.livestream.recording.id, TextHelper.slugify(props.livestream.recording.name) ]\n }}>\n <button className='btn btn-outline-dark w-100'><Text namespace={namespace} phrase='recording' /></button>\n </AppLink>\n }\n {showSignInLink &&\n <>\n <AppLink\n className='mt-3 btn btn-dark w-100'\n appLink={signInLink}\n >\n <Text namespace={namespace} phrase='signInButton' />\n </AppLink>\n <AppLink\n className='d-flex justify-content-center align-items-center mt-3 text-info'\n appLink={{\n application: AppChannels.DEFAULT,\n action: Actions.Default.CONTACT_US_POPUP\n }}\n >\n <Text namespace={namespace} phrase='contactUsLink' />\n </AppLink>\n </>\n }\n </>\n )}\n {props.success && (\n <LivestreamBookingSuccess livestream={props.livestream} />\n )}\n {props.error && (\n <LivestreamBookingError onTryAgain={props.onTryAgain} />\n )}\n </>\n );\n}\n\ninterface LivestreamPopupProps extends LivestreamBookingProps {\n closePopup: () => void;\n}\n\nfunction LivestreamPopup(props: LivestreamPopupProps) {\n function onClose() {\n props.closePopup();\n\n ScrollHelper.preventScrollTop();\n\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n const isLivestreamAppLink =\n currentAppLink.application === AppChannels.LIVESTREAMS &&\n currentAppLink.action === Actions.Livestreams.LIVESTREAM;\n if (isLivestreamAppLink)\n Core.AppLinkHelper.trigger(ContextService.getPreviousRoute()?.appLink);\n }\n\n return (\n <Popup\n size='xl'\n bodyClassName='rounded-3 overflow-hidden p-0'\n closePopup={onClose}\n >\n <button className='btn-close position-absolute top-0 end-0 p-3' onClick={onClose} />\n\n <div className='row g-0'>\n <div className='col-12 col-lg-6'>\n <LivestreamCoverImage className={`${styles.coverImage} ${styles.popup}`} coverImageUrl={props.livestream.company.cover?.url} />\n </div>\n <div className='col-12 col-lg p-4 m-lg-2'>\n <LivestreamContent {...props} />\n </div>\n </div>\n </Popup>\n );\n}\n\ninterface LivestreamPageProps extends LivestreamBookingProps { }\n\nfunction LivestreamPage(props: LivestreamPageProps) {\n return (\n <div className='row g-0 px-3'>\n <div className='col-12 col-md-6 col-lg-5'>\n <LivestreamCoverImage className={`${styles.coverImage} ${styles.page} rounded`} coverImageUrl={props.livestream.company.cover?.url} />\n </div>\n <div className='col-12 col-md px-md-3 pt-2 pt-md-0'>\n <LivestreamContent {...props} />\n </div>\n </div>\n );\n}\n\ninterface LivestreamViewProps extends PopupProps {\n id: string;\n fromPageLoad: boolean;\n}\n\nexport function LivestreamView(props: LivestreamViewProps) {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const fetchAsync = useGetFetchAsync();\n const braze = useStreamableBrazeClientService();\n const [ formStage, _setFormStage ] = React.useState(false);\n const [ success, setSuccess ] = React.useState(false);\n const [ error, setError ] = React.useState(false);\n const [ submitting, setSubmitting ] = React.useState(false);\n const [ initialValues, setInitialValues ] = React.useState<LivestreamBookingFormValues>({\n firstName: '',\n lastName: '',\n email: '',\n attendees: '',\n schoolOrDistrict: '',\n jobTitle: '',\n phoneNumber: '',\n country: '',\n province: '',\n prospectId: ''\n });\n\n const { createOrUpdateProfile } = useProfileApiClient();\n\n const [origin] = useViewModel<PublicOriginViewModel>(\n PUBLIC_ORIGIN_VIEW_MODEL_KEY,\n null,\n { storage: StorageType.SessionStorage }\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const livestream = Flight.useBasicFetch<Livestream>(LivestreamRequests.livestream(props.id));\n\n const { hasPermissions } = usePermissions();\n const isStudent = hasPermissions(PermissionName.StudentExperience);\n\n const pageMetadata = PageMetadataHelper.getDefaultMetadata({\n title: livestream.data?.name,\n description: livestream.data?.description,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n customAppLink: StreamableAppLinks.livestream(livestream.data)\n }),\n allowIndexing: true,\n product: StreamableConstants.PRODUCT_NAME\n });\n\n useSetPageMetadata({\n ...pageMetadata,\n _isPopupUp: !props.fromPageLoad\n });\n\n useHandleObjectError(livestream);\n\n React.useEffect(() => {\n if (!livestream.data || livestream.data?.status === CurationStatusString.Published) return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [livestream.data?.status]);\n\n React.useEffect(() => {\n if (!currentUser.data?.isAuthenticated) return;\n\n setInitialValues({\n ...initialValues,\n firstName: currentUser.data.givenName,\n lastName: currentUser.data.familyName,\n email: currentUser.data.email\n });\n }, [currentUser.data?.isAuthenticated]);\n\n async function onSubmit(values: LivestreamBookingFormValues) {\n try {\n setSubmitting(true);\n setInitialValues(values);\n\n await fetchAsync(BookingRequests.createBooking({\n eventId: livestream.data.id,\n eventType: 'Livestream',\n firstName: values.firstName,\n lastName: values.lastName,\n email: values.email,\n attendees: values.attendees,\n status: 1\n }));\n\n if (!currentUser.data?.isAuthenticated) {\n createOrUpdateProfile({\n email: values.email,\n firstName: values.firstName,\n lastName: values.lastName,\n phone: values.phoneNumber,\n countryCode: values.country\n });\n }\n\n logAnalyticsEvent(WorkflowPhase.Complete);\n logBrazeEvent(values);\n\n setSuccess(true);\n } catch {\n setError(true);\n _setFormStage(false);\n } finally {\n setSubmitting(false);\n }\n }\n\n function onTryAgain() {\n setError(false);\n _setFormStage(true);\n }\n\n function setFormStage() {\n _setFormStage(true);\n logAnalyticsEvent(WorkflowPhase.Start);\n }\n\n function logAnalyticsEvent(workflowPhase: WorkflowPhase) {\n AnalyticsHelper.logUserAction({\n id: livestream.data.id,\n name: livestream.data.name\n }, {\n entity: EntityType.Livestream,\n actionType: UserAction.Submit,\n location: LocationContext.LivestreamBookingForm,\n descriptor: props.fromPageLoad ?\n LivestreamBookingDescriptor.FullPage :\n LivestreamBookingDescriptor.Popup,\n workflowPhase\n });\n }\n\n async function logBrazeEvent(values: LivestreamBookingFormValues) {\n try {\n const checkEmail = await fetchAsync<BrazeCheckEmailResponse>(BrazeRequests.checkEmail(values.email));\n\n let crmId: string;\n\n if (values.prospectId) {\n const prospectLookups = await fetchAsync<ProspectLookup[]>(BrazeRequests.prospectLookups(values.prospectId));\n crmId = prospectLookups?.find(l => l.type === 'crm_id')?.externalId;\n }\n\n const brazeUser: BrazeUser = {\n email: values.email,\n firstName: values.firstName,\n lastName: values.lastName,\n phone: values.phoneNumber,\n custom: {\n accountAddress: values?.province ? {\n countryCode: values?.country,\n province: BrazeHelper.parseProvince(values?.province || '')\n } : undefined,\n accountName: values.schoolOrDistrict,\n jobTitle: values.jobTitle,\n syncToCrm: checkEmail?.users?.length ? undefined : true,\n crmId: crmId || undefined\n }\n };\n\n braze.logFormSubmission({\n eventType: StreamableFormEvent.LivestreamBookingFormSubmit,\n source: BrazeSource.LivestreamBooking,\n conversion: BrazeConversion.LivestreamBooking,\n user: brazeUser,\n productType: 'sl'\n });\n } catch (err) {\n console.error('Failed to log submission event to Braze', err);\n }\n }\n\n const hasLoaded = (\n livestream.hasCompleted &&\n config.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n const livestreamBookingProps: LivestreamBookingProps = {\n livestream: livestream.data,\n formStage,\n initialValues,\n isAuthenticated: currentUser.data?.isAuthenticated,\n isStudent,\n success,\n error,\n isPastLivestream: DateHelper.isBefore(livestream.data.endDateTime, new Date()),\n showSpinner: submitting,\n origin,\n onSubmit,\n onTryAgain,\n setFormStage,\n googleMapsApiKey: config.data.googleMapsApiKey,\n searchProspectsUrl: UrlHelper.safeUrlConcat(config.data.gatewayApiUrl, '/v1/search/prospects'),\n emailAddress: currentUser.data?.email\n };\n\n if (props.fromPageLoad) {\n return (\n <LivestreamPage {...livestreamBookingProps} />\n );\n }\n\n return <LivestreamPopup {...livestreamBookingProps} closePopup={props.closePopup} />;\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{gt as e,v as t}from"./Dp9qJj1C.chunk.js";import{t as n}from"./ImQRQGZr.chunk.js";import{lt as r,ut as i}from"./Dun43GrB.chunk.js";import{t as a}from"./B-OL6Vs7.chunk.js";import{y as o}from"./BQ5XMoHG.chunk.js";import{t as s}from"./DeldjYRc.chunk.js";import{n as c}from"./D2om474U2.chunk.js";import{M as l}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{gt as e,v as t}from"./Dp9qJj1C.chunk.js";import{t as n}from"./ImQRQGZr.chunk.js";import{lt as r,ut as i}from"./Dun43GrB.chunk.js";import{t as a}from"./B-OL6Vs7.chunk.js";import{y as o}from"./BQ5XMoHG.chunk.js";import{t as s}from"./DeldjYRc.chunk.js";import{n as c}from"./D2om474U2.chunk.js";import{M as l}from"./app-gjHxcZG3.js";import{t as u}from"./CxCkwLio.chunk.js";import{t as d}from"./DatscYpA2.chunk.js";var f=e(i()),p=r(),m=`settings.settingsLayout`,h=e=>{let{hasPermissions:n}=l(),r=d();if(e)return n(e);let i=t.getCurrentAppLink();return i.application===a.SETTINGS?r.some(e=>e.modules.some(e=>`appLink`in e?e.appLink.action===i.action:!1)):!0};function g(e){let r=h(e.requiredPermissions);if(f.useEffect(()=>{r||t.trigger({application:a.SETTINGS,action:s.Settings.HOME},{replace:!0})},[r]),!r)return(0,p.jsx)(p.Fragment,{});let i=e.breadcrumbs.map((t,n)=>({name:t,appLink:{application:a.SETTINGS,action:s.Settings.HOME},active:n===e.breadcrumbs.length-1}));return(0,p.jsxs)(`div`,{className:`px-3`,children:[(0,p.jsxs)(`div`,{className:`d-flex align-items-center justify-content-between`,children:[(0,p.jsx)(`h1`,{className:`h2`,children:e.heading}),e.headingButton?.()]}),(0,p.jsx)(`div`,{className:`pb-3`,children:(0,p.jsx)(u,{breadcrumbs:[{name:n.getPhrase(m,`settingsBreadcrumb`),appLink:{application:a.SETTINGS,action:s.Settings.HOME}},...i]})}),e.description&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(`p`,{children:e.description}),(0,p.jsx)(`hr`,{})]}),e.children]})}var _={getUser(e){return{url:`{gateway}/v1/users/${e}?query=avatar`,key:`school:users:${e}`}},updateUser(e,t,n,r,i){return{url:`{gateway}/v1/users/me/profile`,key:`edit:user`,type:o.PUT,data:e,invalidationKeys:[`search:aggregation`,`school:users:${t}`],success:n,error:r,always:i}},updateAvatar(e,t,n,r){return{url:`{gateway}/v1/users/me/avatar`,key:`update:avatar`,type:o.PUT,invalidationKeys:[`currentuser`,`school:users:${t}`],data:{fileId:e,fileIdType:c.ImageAPIv2},success:n,error:r}},deleteAvatar(e,t,n,r){return{url:`{gateway}/v1/users/me/avatar/${e}`,key:`delete:avatar`,type:o.DELETE,updateState:{keys:[`school:users:${t}`,`currentuser`],updateData:e=>{let n=e[`school:users:${t}`],r=e.currentuser;return n.avatar=null,r.avatar=null,{[`school:users:${t}`]:n,currentuser:r}}},success:n,error:r}},changeEmail(e,t,n,r){return{url:`{gateway}/v1/users/me/email`,key:`change:email`,type:o.PUT,data:{email:e},success:t,error:n,always:r}},changePassword(e,t,n,r){return{url:`{gateway}/v1/users/me/password`,key:`change:password`,type:o.PUT,data:{currentPassword:e.currentPassword,newPassword:e.newPassword},success:t,error:n,always:r}},changeUserPassword(e,t,n,r,i,a,s){return{url:`{gateway}/v1/users/admin/change-password`,key:`change:password:${t}:${e}`,type:o.PUT,data:{userId:e,newPassword:n,changeOnNextLogin:r},success:i,error:a,always:s}},resendActivationEmail(e,t,n){return{url:`{gateway}/v1/users/admin/activation`,key:`send:activation:email`,type:o.POST,data:{userId:e},success:t,error:n}},sendPasswordResetEmail(e,t,n,r){return{url:`{gateway}/v1/users/admin/account-reminder`,key:`send:password:reset:email`,type:o.POST,data:{userIds:[e],customerId:t},success:n,error:r}},resendVerificationEmail(e,t,n,r){return{url:`{gateway}/v1/users/admin/email-verification`,key:`send:verification:email`,type:o.POST,data:{userId:e,customerId:t},success:n,error:r}}};export{g as n,_ as t};
|
|
2
|
+
//# sourceMappingURL=lLAYbgAy2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tYi-sUb22.chunk.js","names":[],"sources":["../../src/apps/settings/components/settings-layout/SettingsLayout.tsx","../../src/apps/settings/flight-requests/UserManagerRequests.ts"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { ChangePasswordRequest, EditCurrentUserDetails } from 'libs/shared/apps/user-manager/interfaces';\nimport { FileIdType } from 'libs/shared/enums/Images';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { User } from 'libs/shared/interfaces';\n\nexport const UserManagerRequests = {\n getUser(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/users/${id}?query=avatar`,\n key: `school:users:${id}`\n };\n },\n\n updateUser(\n details: EditCurrentUserDetails,\n id: string,\n success?: (updatedUser?: User) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/users/me/profile',\n key: 'edit:user',\n type: HttpVerbs.PUT,\n data: details,\n invalidationKeys: [ 'search:aggregation', `school:users:${id}` ],\n success,\n error,\n always\n };\n },\n\n /**\n * Avatar requests\n */\n updateAvatar(imageId: string, userId: string, success?: () => void, error?: () => void): Flight.Request {\n return {\n url: '{gateway}/v1/users/me/avatar',\n key: 'update:avatar',\n type: HttpVerbs.PUT,\n invalidationKeys: [ 'currentuser', `school:users:${userId}` ],\n data: {\n fileId: imageId,\n fileIdType: FileIdType.ImageAPIv2\n },\n success,\n error\n };\n },\n\n deleteAvatar(avatarId: string, userId: string, success?: () => void, error?: () => void): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/avatar/${avatarId}`,\n key: 'delete:avatar',\n type: HttpVerbs.DELETE,\n updateState: {\n keys: [ `school:users:${userId}`, 'currentuser' ],\n updateData: (data: HashObject) => {\n const userObj = data[`school:users:${userId}`];\n const currentUserObj = data.currentuser;\n\n userObj.avatar = null;\n currentUserObj.avatar = null;\n\n return {\n [`school:users:${userId}`]: userObj,\n ['currentuser']: currentUserObj\n };\n }\n },\n success,\n error\n };\n },\n\n /**\n * Account settings\n */\n changeEmail(\n email: string,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/email`,\n key: 'change:email',\n type: HttpVerbs.PUT,\n data: {\n email\n },\n success,\n error,\n always\n };\n },\n\n changePassword(\n passwordModel: ChangePasswordRequest,\n success?: () => void,\n error?: (jqXHR: JQuery.jqXHR) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/password`,\n key: 'change:password',\n type: HttpVerbs.PUT,\n data: {\n currentPassword: passwordModel.currentPassword,\n newPassword: passwordModel.newPassword\n },\n success,\n error,\n always\n };\n },\n\n changeUserPassword(\n userId: string,\n userType: UserGroup,\n newPassword: string,\n changeOnNextLogin: boolean,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/users/admin/change-password`,\n key: `change:password:${userType}:${userId}`,\n type: HttpVerbs.PUT,\n data: {\n userId,\n newPassword,\n changeOnNextLogin\n },\n success,\n error,\n always\n };\n },\n\n resendActivationEmail(userId: string, success?: () => void, error?: () => void): Flight.Request {\n return {\n url: '{gateway}/v1/users/admin/activation',\n key: 'send:activation:email',\n type: HttpVerbs.POST,\n data: { userId },\n success,\n error\n };\n },\n\n sendPasswordResetEmail(userId: string, customerId: string, success?: () => void, error?: () => void): Flight.Request {\n return {\n url: '{gateway}/v1/users/admin/account-reminder',\n key: 'send:password:reset:email',\n type: HttpVerbs.POST,\n data: { userIds: [userId], customerId },\n success,\n error\n };\n },\n\n resendVerificationEmail(\n userId: string,\n customerId: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/users/admin/email-verification',\n key: 'send:verification:email',\n type: HttpVerbs.POST,\n data: { userId, customerId },\n success,\n error\n };\n }\n};\n\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lLAYbgAy2.chunk.js","names":[],"sources":["../../src/apps/settings/components/settings-layout/SettingsLayout.tsx","../../src/apps/settings/flight-requests/UserManagerRequests.ts"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { ChangePasswordRequest, EditCurrentUserDetails } from 'libs/shared/apps/user-manager/interfaces';\nimport { FileIdType } from 'libs/shared/enums/Images';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { User } from 'libs/shared/interfaces';\n\nexport const UserManagerRequests = {\n getUser(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/users/${id}?query=avatar`,\n key: `school:users:${id}`\n };\n },\n\n updateUser(\n details: EditCurrentUserDetails,\n id: string,\n success?: (updatedUser?: User) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/users/me/profile',\n key: 'edit:user',\n type: HttpVerbs.PUT,\n data: details,\n invalidationKeys: [ 'search:aggregation', `school:users:${id}` ],\n success,\n error,\n always\n };\n },\n\n /**\n * Avatar requests\n */\n updateAvatar(imageId: string, userId: string, success?: () => void, error?: () => void): Flight.Request {\n return {\n url: '{gateway}/v1/users/me/avatar',\n key: 'update:avatar',\n type: HttpVerbs.PUT,\n invalidationKeys: [ 'currentuser', `school:users:${userId}` ],\n data: {\n fileId: imageId,\n fileIdType: FileIdType.ImageAPIv2\n },\n success,\n error\n };\n },\n\n deleteAvatar(avatarId: string, userId: string, success?: () => void, error?: () => void): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/avatar/${avatarId}`,\n key: 'delete:avatar',\n type: HttpVerbs.DELETE,\n updateState: {\n keys: [ `school:users:${userId}`, 'currentuser' ],\n updateData: (data: HashObject) => {\n const userObj = data[`school:users:${userId}`];\n const currentUserObj = data.currentuser;\n\n userObj.avatar = null;\n currentUserObj.avatar = null;\n\n return {\n [`school:users:${userId}`]: userObj,\n ['currentuser']: currentUserObj\n };\n }\n },\n success,\n error\n };\n },\n\n /**\n * Account settings\n */\n changeEmail(\n email: string,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/email`,\n key: 'change:email',\n type: HttpVerbs.PUT,\n data: {\n email\n },\n success,\n error,\n always\n };\n },\n\n changePassword(\n passwordModel: ChangePasswordRequest,\n success?: () => void,\n error?: (jqXHR: JQuery.jqXHR) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/password`,\n key: 'change:password',\n type: HttpVerbs.PUT,\n data: {\n currentPassword: passwordModel.currentPassword,\n newPassword: passwordModel.newPassword\n },\n success,\n error,\n always\n };\n },\n\n changeUserPassword(\n userId: string,\n userType: UserGroup,\n newPassword: string,\n changeOnNextLogin: boolean,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/users/admin/change-password`,\n key: `change:password:${userType}:${userId}`,\n type: HttpVerbs.PUT,\n data: {\n userId,\n newPassword,\n changeOnNextLogin\n },\n success,\n error,\n always\n };\n },\n\n resendActivationEmail(userId: string, success?: () => void, error?: () => void): Flight.Request {\n return {\n url: '{gateway}/v1/users/admin/activation',\n key: 'send:activation:email',\n type: HttpVerbs.POST,\n data: { userId },\n success,\n error\n };\n },\n\n sendPasswordResetEmail(userId: string, customerId: string, success?: () => void, error?: () => void): Flight.Request {\n return {\n url: '{gateway}/v1/users/admin/account-reminder',\n key: 'send:password:reset:email',\n type: HttpVerbs.POST,\n data: { userIds: [userId], customerId },\n success,\n error\n };\n },\n\n resendVerificationEmail(\n userId: string,\n customerId: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/users/admin/email-verification',\n key: 'send:verification:email',\n type: HttpVerbs.POST,\n data: { userId, customerId },\n success,\n error\n };\n }\n};\n\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{gt as e,v as t}from"./Dp9qJj1C.chunk.js";import{t as n}from"./ImQRQGZr.chunk.js";import{C as r,M as i,c as a,l as o,lt as s,m as c,ut as l,y as u}from"./Dun43GrB.chunk.js";import{t as d}from"./B-OL6Vs7.chunk.js";import{f,l as p,u as m,y as h}from"./BQ5XMoHG.chunk.js";import{n as g}from"./CAEQvGr_.chunk.js";import{n as _}from"./LVrVQvKT.chunk.js";import{t as ee}from"./ibuOpDkQ.chunk.js";import{t as v}from"./DeldjYRc.chunk.js";import{t as te}from"./BVWg3YHX.chunk.js";import{t as ne}from"./BYYiNmLB.chunk.js";import{t as re}from"./H6wjCesG.chunk.js";import{t as y}from"./D86qrFLE.chunk.js";import{a as ie,c as b,t as x}from"./8W5MLvcf.chunk.js";import{n as S}from"./Da5tDmIW2.chunk.js";import{t as C}from"./Ca1QPe-q2.chunk.js";import{n as w,t as ae}from"./D7d5XFW82.chunk.js";import{n as oe,t as T}from"./DjIdG9LL2.chunk.js";import{n as se,t as ce}from"./CL1ST5J62.chunk.js";import{i as le}from"./D2om474U2.chunk.js";import{n as ue}from"./DDn2E2a72.chunk.js";import{a as E,h as D,i as de,m as fe,n as O,r as pe,s as me}from"./BpgHKWR52.chunk.js";import{i as k}from"./B8R4YVaF2.chunk.js";import{t as A}from"./CoualKDX.chunk.js";import{t as j}from"./iTHYgnO8.chunk.js";import{I as he,N as M,X as ge,Y as _e,q as ve,v as N}from"./app-BIigh9wv.js";import{t as P}from"./BRiYVLuz.chunk.js";import{t as F}from"./DlFudnBx.chunk.js";import{t as ye}from"./CZb3E982.chunk.js";import{t as be}from"./Bg4Ri2TO.chunk.js";import{t as xe}from"./CUUUI6pl.chunk.js";import{t as I}from"./DDKwae_D2.chunk.js";import{t as Se}from"./DrgVCnQA2.chunk.js";import{t as Ce}from"./LdxNQaUZ2.chunk.js";import{t as we}from"./BaMNOAYj2.chunk.js";import{n as Te}from"./DnwEQ4qU2.chunk.js";import{n as L,t as R}from"./CeyqMjfq.chunk.js";import{r as Ee}from"./BBWlVBxr.chunk.js";import{n as z,t as De}from"./ClGIvvk6.chunk.js";import{c as Oe,l as ke,o as Ae,t as je}from"./DIavEegC.chunk.js";import{i as Me,r as Ne}from"./CIGsvs1s.chunk.js";import{n as Pe,r as Fe,t as Ie}from"./DR80oZtZ.chunk.js";import{t as Le}from"./BA8QDRzp.chunk.js";import{t as Re}from"./jWpq99N3.chunk.js";import{t as ze}from"./Blj1z_g2.chunk.js";import{t as Be}from"./CUOEhUTb2.chunk.js";var B=e(l()),V=s();function Ve(e){let t={...e.analyticsData,id:e.data?.id,name:e.data?.name},n={location:c.ClassificationListItem,...e.analyticsOptions,actionType:r.Click,entity:o.Company,descriptor:a.Cover};return(0,V.jsx)(Me,{...e,analyticsData:t,analyticsOptions:n,coverUrl:e.data.logo?.url,coverBgColor:e.data.metadata?.colour})}function He(e){return(0,V.jsx)(y,{as:`li`,sm:6,md:e.useLargeStyle?6:4,lg:e.useLargeStyle?4:3,children:(0,V.jsx)(`div`,{className:`position-relative px-1 mb-2`,children:(0,V.jsx)(Ve,{data:e.item,getChildAppLink:e.appLinks.getCompanyAppLink,getChildAppLinkOptions:()=>e.appLinks.getCompanyAppLinkOptions?.(e.item),analyticsData:{itemIndex:e.itemIndex,search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:0},isLarge:e.useLargeStyle})})})}var H={videoList:`_videoList_14pgo_1`},U=`search.exchangeVideoGroup`,W=3;function Ue(e){let n=e.item.showCount>=W?W:e.item.showCount;function i(){return e.pagePositionIndex===0?`border-bottom pb-1 mb-3`:`border-top border-bottom pt-3 mt-2 pb-1 mb-3`}let s=t.getCurrentAppLink(),l=s.params??{},d=l?.source??[];d&&!Array.isArray(d)&&(d=[d]);let f={...s,params:{...l,source:[...d,ue.ExchangeArchive]}},p={query:e.queryParams.query,itemIndex:e.itemIndex,pagePositionIndex:e.pagePositionIndex},m={entity:o.SearchResults,location:c.ExchangeSearchGroupItem,actionType:r.Click,descriptor:u.ExchangeArchive};return(0,V.jsxs)(`div`,{className:i(),children:[(0,V.jsx)(C,{appLink:f,analyticsData:p,analyticsOptions:m,children:(0,V.jsx)(`h2`,{className:`h4`,children:(0,V.jsx)(w,{namespace:U,phrase:`heading`})})}),(0,V.jsxs)(`p`,{children:[(0,V.jsx)(w,{namespace:U,phrase:`message`}),`\xA0`,(0,V.jsx)(C,{appLink:e.appLinks.searchSettings,className:`text-info`,analyticsData:p,analyticsOptions:{...m,descriptor:a.Settings},children:(0,V.jsx)(w,{namespace:U,phrase:`searchSettings`})}),`.`]}),(0,V.jsx)(`div`,{className:`position-relative ${H.videoList}`,children:e.item.videos.slice(0,n).map((t,n)=>(0,V.jsx)(O,{video:t,getVideoAppLink:e.appLinks.getVideoAppLink,presentationAudiences:e.audiences,analyticsData:{search:{query:e.queryParams.query,score:t._score,maxScore:t._maxScore,featured:t._featured},pagePositionIndex:e.pagePositionIndex},hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps},n))}),(0,V.jsx)(`div`,{className:`text-center py-2`,children:(0,V.jsx)(C,{className:`text-secondary`,appLink:f,analyticsData:p,analyticsOptions:m,children:(0,V.jsx)(w,{namespace:U,phrase:`seeMore`})})})]})}function We(e){return(0,V.jsx)(`div`,{className:`pb-3`,children:(0,V.jsx)(Ie,{video:e.item,presentationAudiences:e.audiences,getVideoAppLink:(t,n)=>e.appLinks.getVideoAppLink(t,n),analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},hideInteractiveBadge:!0,showVideoGuidance:I.showVideoGuidance(e.hasPermissions),commonVideoProps:e.commonVideoProps})})}var Ge={videoList:`_videoList_182nk_1`},Ke=`search.playlistWithVideos`;function qe(){let e=M();return e.xl||e.xxl?3:2}function Je(e){let t=qe(),n=e.playlist.videos.data.slice(0,t),i={actionType:r.Click,entity:o.Playlist,location:c.PlaylistWithVideos},s={...e.analyticsData,id:e.playlist.id,name:e.playlist.name};return(0,V.jsx)(`div`,{className:`ps-2 py-2`,children:(0,V.jsxs)(S,{className:`g-0 border rounded-3`,children:[(0,V.jsx)(y,{xs:4,lg:3,className:`pe-3`,children:(0,V.jsx)(Fe,{appLink:e.playlistAppLink,analyticsData:e.analyticsData,analyticsOptions:{...i,descriptor:a.Cover},data:e.playlist,presentationAudiences:e.presentationAudiences,bgColourClassNames:Ee,itemStyle:`round-left`,imageCdnUrl:e.commonVideoProps.imageCdnUrl,currentUser:e.currentUser,showCount:!1,showOwner:!0})}),(0,V.jsx)(y,{xs:8,lg:9,children:(0,V.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,V.jsx)(`div`,{className:`pt-3 mb-n2 ${Ge.videoList}`,children:n?.map(t=>{let n={...s,videoId:t.id,videoName:t.name};return(0,V.jsx)(`div`,{className:`mb-2`,children:(0,V.jsx)(O,{video:t,getVideoAppLink:e.getVideoAppLink,analyticsData:n,analyticsOptions:{entity:o.Video,location:c.PlaylistWithVideos},size:`sm`,hasPermissions:e.hasPermissions,hideVideoGuidance:!0,commonVideoProps:e.commonVideoProps})},t.id)})}),(0,V.jsx)(`div`,{className:`text-end pt-3 pe-3`,children:(0,V.jsx)(C,{className:`info-link fw-semibold`,appLink:e.playlistAppLink,analyticsData:s,analyticsOptions:{...i,descriptor:a.Link},children:(0,V.jsx)(w,{namespace:Ke,phrase:`seeAllVideos`})})})]})})]})})}function Ye(e){return(0,V.jsx)(`div`,{className:`mx-n2`,children:(0,V.jsx)(Je,{playlist:e.item,playlistAppLink:e.appLinks.getPlaylistAppLink(e.item),presentationAudiences:e.audiences,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},currentUser:e.currentUser,preloadImage:!0,getVideoAppLink:e.appLinks.getVideoAppLink,hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps})})}var Xe={videoList:`_videoList_182nk_1`},Ze=`search.seriesWithVideos`;function Qe(){let e=M();return e.xl||e.xxl?5:e.lg||e.md?4:3}function $e(e){let t=Qe(),n=e.series.videos.data.slice(0,t),i={actionType:r.Click,entity:o.Series,location:c.SeriesWithVideos},s={...e.analyticsData,id:e.series.id,name:e.series.name};return(0,V.jsx)(`div`,{className:`ps-2 py-2`,children:(0,V.jsxs)(S,{className:`g-0 border rounded-3`,children:[(0,V.jsx)(y,{xs:4,lg:3,className:`pe-3`,children:(0,V.jsx)(C,{appLink:e.seriesAppLink,className:`position-relative`,analyticsData:s,analyticsOptions:{...i,descriptor:a.TallPoster},children:(0,V.jsx)(Pe,{series:e.series,presentationAudiences:e.presentationAudiences,preloadImage:e.preloadImage,imageClass:`rounded-start-lg`})})}),(0,V.jsx)(y,{xs:8,lg:9,children:(0,V.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,V.jsx)(`div`,{className:`pt-3 mb-n2 ${Xe.videoList}`,children:n?.map(t=>{let n={...s,videoId:t.id,videoName:t.name};return t={...t,series:e.series},(0,V.jsx)(`div`,{className:`mb-2`,children:(0,V.jsx)(O,{video:t,getVideoAppLink:e.getVideoAppLink,analyticsData:n,analyticsOptions:{entity:o.Video,location:c.SeriesWithVideos},size:`sm`,hasPermissions:e.hasPermissions,hideVideoGuidance:!0,commonVideoProps:e.commonVideoProps})},t.id)})}),(0,V.jsx)(`div`,{className:`text-end pt-3 pe-3`,children:(0,V.jsx)(C,{className:`info-link fw-semibold`,appLink:e.seriesAppLink,analyticsData:s,analyticsOptions:{...i,descriptor:a.Link},children:(0,V.jsx)(w,{namespace:Ze,phrase:`seeAllVideos`})})})]})})]})})}function et(e){return(0,V.jsx)(`div`,{className:`mx-n2`,children:(0,V.jsx)($e,{presentationAudiences:e.audiences,series:e.item,seriesAppLink:e.appLinks.getSeriesAppLink(e.item),getVideoAppLink:e.appLinks.getVideoAppLink,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},preloadImage:!0,hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps})})}var tt=`search.collectionVideoList`;function nt(){let e=M();return e.xs?2:e.sm?1:3}function rt(e){let t=nt(),n={analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions};return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`ul`,{className:`list-unstyled my-1`,children:e.videos.slice(0,t).map(t=>{let r=!!t.episodeNumber&&!!t.season?.id;return(0,V.jsx)(`li`,{className:`d-flex align-items-center`,children:(0,V.jsxs)(C,{...n,className:`clamp-1`,appLink:e.getVideoAppLink(t),children:[r&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Ae,{video:t}),`\xA0`]}),t.name]})},`${e.collectionId}:${t.id}`)})}),(0,V.jsx)(C,{...n,className:`info-link`,appLink:e.appLink,children:(0,V.jsx)(w,{namespace:tt,phrase:`seeAll`})})]})}var it={overlayContainer:`_overlayContainer_1tsto_1`,overlay:`_overlay_1tsto_1`},at=`search.collectionThumbnail`;function G(e){let t=M(),n=E.getSize(t,`md`)===`sm`,r=!!e.collection.videos?.data?.length,i=r&&e.collection.videos.data.find(e=>!!e.thumbnail?.url);function o(){let t={...e.analyticsData,id:e.collection.id,name:e.collection.name};return i&&(t.videoId=i.id,t.videoName=i.name),t}let s=o(),c=e.collectionType===`series`;return(0,V.jsxs)(`div`,{className:`row g-0 ${n?``:`py-2`}`,children:[(0,V.jsx)(y,{...E.getThumbnailColumns(),className:`flex-column align-items-flex-start ${n?`pb-2 pe-2`:`mb-1 px-2`}`,children:(0,V.jsx)(`div`,{className:`position-relative overflow-hidden ${n?`rounded`:`rounded-3`}`,children:(0,V.jsxs)(Ce,{data:i?.thumbnail,appLink:e.appLink,imageType:le.Thumbnails,analyticsData:s,analyticsOptions:{...e.analyticsOptions,descriptor:a.Thumbnail},children:[(0,V.jsx)(fe,{type:e.maskType}),(0,V.jsx)(De,{type:e.imageFallbackType}),(0,V.jsx)(`div`,{className:`d-flex flex-column align-items-center justify-content-center text-white h-100 ${it.overlay}`,children:(0,V.jsx)(w,{namespace:at,phrase:`seeAll`})})]})})}),(0,V.jsxs)(y,{...E.getDetailsColumns(),className:n?`pb-2`:`px-2`,children:[!e.isPlugin&&(0,V.jsx)(xe,{actions:e.getCollectionActions(e.collection,e.showActions,e.collectionType,e.analyticsOptions),className:`float-end mt-n1`,actionsDropdownClassName:`btn btn-link ms-1`}),(0,V.jsx)(C,{appLink:e.appLink,analyticsData:s,analyticsOptions:{...e.analyticsOptions,descriptor:a.Title},children:(0,V.jsx)(`h5`,{className:`m-0 mb-1`,children:(0,V.jsx)(`span`,{className:`clamp-1`,children:e.collection.name})})}),c&&!e.hideBadges&&(0,V.jsxs)(ke,{children:[(0,V.jsx)(R,{type:L.Rating,data:Oe.getRating(e.collection)}),(0,V.jsx)(R,{type:L.ProductionYear,data:e.collection.metadata?.year})]}),r&&(0,V.jsx)(rt,{collectionId:e.collection.id,videos:e.collection.videos.data,appLink:e.appLink,analyticsData:s,analyticsOptions:{...e.analyticsOptions,descriptor:a.Link},getVideoAppLink:e.getVideoAppLink})]})]})}function ot(e){return(0,V.jsx)(`div`,{className:`position-relative ${H.videoList}`,children:(0,V.jsx)(G,{analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},analyticsOptions:{entity:o.Playlist,actionType:r.Click,location:c.PlaylistListItem},appLink:e.appLinks.getPlaylistAppLink(e.item),showActions:e.showActions,collection:e.item,collectionType:`playlist`,maskType:D.Playlist,imageFallbackType:z.PlaylistThumbnail,isPlugin:e.commonVideoProps.isPlugin,getVideoAppLink:e.appLinks.getVideoAppLink,getCollectionActions:e.appLinks.getCollectionActions})})}function st(e){return(0,V.jsx)(`div`,{className:`position-relative ${H.videoList}`,children:(0,V.jsx)(G,{analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},analyticsOptions:{entity:o.Series,actionType:r.Click,location:c.SeriesListItem},appLink:e.appLinks.getSeriesAppLink(e.item),collectionType:`series`,collection:e.item,showActions:e.showActions,maskType:D.Series,imageFallbackType:z.SeriesThumbnail,hideBadges:!0,isPlugin:e.commonVideoProps.isPlugin,getVideoAppLink:e.appLinks.getVideoAppLink,getCollectionActions:e.appLinks.getCollectionActions})})}function ct(e){return(0,V.jsx)(y,{as:`li`,sm:6,md:e.useLargeStyle?6:4,lg:e.useLargeStyle?4:3,children:(0,V.jsx)(`div`,{className:`position-relative px-1 mb-2`,children:(0,V.jsx)(Ne,{data:e.item,getChildAppLink:e.appLinks.getClassificationAppLink,getChildAppLinkOptions:()=>e.appLinks.getClassificationAppLinkOptions?.(e.item),availablePresentations:e.availablePresentations,analyticsData:{itemIndex:e.itemIndex,search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:0},isLarge:e.useLargeStyle,highlightOnHover:e.commonVideoProps.showNewVideoIndicator})})})}function lt(e){function t(e){return I.isClip(e)?de:I.isInteractive(e)?pe:O}let n=t(e.item);return(0,V.jsx)(`div`,{className:`position-relative ${H.videoList}`,children:(0,V.jsx)(n,{video:e.item,getVideoAppLink:e.appLinks.getVideoAppLink,getPreviewQuestionsAppLink:e.appLinks.getPreviewQuestionsAppLink,presentationAudiences:e.audiences,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps})})}var ut=`shared.mixedSearchResults`,dt=8,ft=B.memo(function(e){let t=M(),n=t.xs||t.sm;if(!e.results?.length&&!e.topics?.totalResults&&!e.companies?.totalResults)return(0,V.jsx)(V.Fragment,{});let r=[...e.companies?.results??[],...e.topics?.results??[]],i={useLargeStyle:r.length<4,...e};return(0,V.jsxs)(`div`,{className:`position-relative`,children:[(0,V.jsx)(`p`,{role:`status`,className:`visually-hidden`,children:(0,V.jsx)(w,{namespace:ut,phrase:`ariaSearch`})}),!!r.length&&(0,V.jsx)(S,{as:`ul`,className:`list-unstyled g-0 pb-3 mx-n1`,children:r.slice(0,dt).map((e,t)=>{switch(e.type.toLowerCase()){case`company`:return(0,V.jsx)(He,{item:e,itemIndex:t,...i},t);case`subject`:return(0,V.jsx)(ct,{item:e,itemIndex:t,...i},t)}})}),e.results?.map((e,t)=>{let a=r.length?t+1:t;if(`isExchangeVideoGroup`in e&&e.isExchangeVideoGroup)return(0,V.jsx)(Ue,{item:e,pagePositionIndex:a,...i},t);switch(e.type?.toLowerCase()){case`interactive`:case`clip`:case`video`:return t===0&&e._featured&&I.isVideo(e)?(0,V.jsx)(We,{item:e,pagePositionIndex:a,...i},t):(0,V.jsx)(lt,{item:e,pagePositionIndex:a,...i},t);case`playlist`:return n?(0,V.jsx)(ot,{item:e,pagePositionIndex:a,...i},t):(0,V.jsx)(Ye,{item:e,pagePositionIndex:a,...i},t);case`series`:return n||!e.tallPoster?.id?(0,V.jsx)(st,{item:e,pagePositionIndex:a,...i},t):(0,V.jsx)(et,{item:e,pagePositionIndex:a,...i},t)}})]})}),K=`search.searchSubstitute`;function pt(e){return e.substitute?(0,V.jsxs)(`div`,{className:`pb-3`,children:[(0,V.jsxs)(`p`,{className:`mb-1 h6`,children:[(0,V.jsx)(w,{namespace:K,phrase:`showingFor`}),`\xA0`,(0,V.jsx)(C,{className:`info-link`,appLink:e.getAppLink(e.substitute,e.queryParams),appLinkOptions:{replace:!0},children:e.substitute})]}),(0,V.jsxs)(`p`,{className:`mb-0 h6 fw-normal`,children:[(0,V.jsx)(w,{namespace:K,phrase:`searchInsteadFor`}),(0,V.jsx)(C,{className:`info-link`,appLink:e.getAppLink(e.queryParams.query,{...e.queryParams,allowSubstitute:`false`}),children:e.queryParams.query}),(0,V.jsx)(w,{namespace:K,phrase:`endOriginal`})]})]}):(0,V.jsx)(V.Fragment,{})}var mt=`search.searchSuggestions`;q.defaultProps={suggestions:[],queryParams:{}};function q(e){return e.suggestions?.length?(0,V.jsxs)(`div`,{className:`d-flex align-items-center mb-3`,children:[(0,V.jsx)(w,{namespace:mt,phrase:`didYouMean`}),`\xA0`,e.suggestions.map((t,n)=>(0,V.jsxs)(B.Fragment,{children:[n!==0&&(0,V.jsx)(`span`,{className:`mx-1`,children:`•`}),(0,V.jsx)(C,{className:`info-link`,appLink:e.getAppLink(t,e.queryParams),appLinkOptions:{replace:!0},children:t})]},`${t}:${n}`))]}):(0,V.jsx)(V.Fragment,{})}var ht={search(e,t,n={},r,i,a){let o=`search:${e}:${t}:${r}`;o+=Object.keys(n).map(e=>n[e]).join(`;`);let s=Object.assign({},{index:t,cursor:r??void 0,query:e,...n});return{url:g.urlBuilder(`{gateway}/v1/search`,s),publicUrl:g.urlBuilder(`/api/search`,s),key:o,success:i,error:a}},schoolLevels(e){let t={filterType:`schoolLevels`,presentationId:e};return{url:g.urlBuilder(`{gateway}/v1/search/filters`,t),publicUrl:g.urlBuilder(`/api/search/filters`,t),key:`school-levels`}}};function gt(e){return p(e&&ht.schoolLevels([e]))}var J={video:_.VIDEO_COLLECTION,series:`rating,tallPoster`,playlist:`videos[count(),thumbnail]{limit:1},interactives[count(),_thumbnail]{limit:1},clips[count(),_thumbnail]{limit:1}`,classification:`_theme[banner,cover,tallposter,thumbnail,icon],cover,thumbnail,tags{tagtype:${Te.Curation}}`,clip:_.CLIP_COLLECTION,interactive:_.INTERACTIVE_COLLECTION,company:`logo`,category:`libraries[_logo],thumbnail`,partner_profile:_.PARTNER_PROFILE};function Y(e){let t=e.totalResults,n=e?.results?.filter(e=>{if(e._index!==`series`&&e._index!==`playlist`)return!0;if(e._index===`playlist`){let n=e;return n.clips?.data?.length||n.interactives?.data?.length||n.videos?.data?.length?!0:(t--,!1)}return e.videos?.data?.length===0?(t--,!1):!0})??[];e.results=n,e.totalResults=t;let r=n[0]?._score;return{...e,results:ie.mapMaxScoreToSearchResults(n,r)}}function X(e){return Object.entries(e).reduce((e,[,t])=>{let n=t;return typeof t==`object`?n=X(t):[`number`,`boolean`,`string`].includes(typeof t)&&(n=t.toString()),e.length?`${e},${n}`:n},``)}function Z(e,t){return Object.entries(e).reduce((e,[n,r])=>{let i=n.replace(b.FILTER_PARAM_PREFIX,``);return i===`presentation`&&t!==k.SearchTopResults&&t!==k.SearchRelatedResults&&t!==k.SearchSeries?e:{...e,[i]:r}},{})}var Q={searchDashboard(e,t,n=[]){let r=`search:v5:dashboard:${e}:${n.sort((e,t)=>e.id.localeCompare(t.id)).map(e=>[e.id,e?.cursor])}:${X(t)}`,{[`${b.FILTER_PARAM_PREFIX}indicesFilters`]:i,isLearner:a,...o}=t,s={widgets:n,indices:i,filters:Z(o,null),query:e,includeAllIndices:!1,isLearner:!!a};return{url:`{gateway}/v5/search/widgets`,publicUrl:`/api/search/v5/widgets`,type:h.POST,data:s,key:r}},searchDashboardWidget(e,t,n,r=[]){let i=`search:v5:dashboard:${e}:widget:${t}:${r.sort((e,t)=>e.id.localeCompare(t.id)).map(e=>[e.id,e?.cursor])}:${X(n)}`,{[`${b.FILTER_PARAM_PREFIX}indicesFilters`]:a,isLearner:o,excludeVideoIds:s,...c}=n,l={widgets:r,indices:a,filters:Z(c,e),query:t,includeAllIndices:!1,isLearner:!!o,ogql:J,excludeVideoIds:s};return{url:`{gateway}/v5/search/widgets/${e}`,publicUrl:`/api/search/v5/widgets/${e}`,type:h.POST,data:l,key:i,formatData:e=>e&&{...e,content:e.content?.data?{...e.content,data:e.content.data.map(be.applyThemeToClassification)}:e.content}}},searchV5(e,t,n=[]){let r=`search:v5:${e}:${n.sort((e,t)=>e.id.localeCompare(t.id)).map(e=>[e.id,e?.cursor])}:${X(t)}`,{[`${b.FILTER_PARAM_PREFIX}indicesFilters`]:i,isLearner:a,...o}=t,s={widgets:n,indices:i,filters:Object.entries(o).reduce((e,[t,n])=>({...e,[t.replace(`filters.`,``)]:n}),{}),query:e,includeAllIndices:!1,isLearner:!!a,ogql:J};return{url:`{gateway}/v5/search`,publicUrl:`/api/search/v5`,type:h.POST,data:s,key:r}},searchV4(e){let{query:t,indices:n,filters:r={},sorts:i={},allowSubstitute:a=!0,cursor:o,limit:s}=e,c=`search:v4:${t}:${a}:${n}:${o}`;c+=Object.keys(r).map(e=>{let t=r[e];return Array.isArray(t)?t.join(`;`):t}).join(`;`);let{[`${b.FILTER_PARAM_PREFIX}excludeLibraryExclusive`]:l,isLearner:u,...d}=r,f={searchType:`content`,indices:n.map(e=>e!==`video`||!l?{index:e}:{index:e,filters:{excludeLibraryExclusive:l}}),filters:Object.entries(d).reduce((e,[t,n])=>({...e,[t.replace(`filters.`,``)]:n}),{}),sorts:i,query:t,allowSubstitute:a,cursor:o??void 0,isLearner:!!u,limit:s};return{url:`{gateway}/v4/search`,publicUrl:`/api/search/v4`,type:h.POST,data:f,key:c,formatData:Y}},search(e){let{query:t,indices:n,filters:r,allowSubstitute:i,cursor:a,limit:o,success:s,error:c}=e,l=`search:${t}:${i}:${n}:${a}`;l+=Object.keys(r).map(e=>{let t=r[e];return Array.isArray(t)?t.join(`;`):t}).join(`;`);let u=Object.assign({},{index:n,cursor:a??void 0,query:t,allowSubstitute:i,limit:o,...r});return{url:g.urlBuilder(`{gateway}/v3/search`,u),publicUrl:g.urlBuilder(`/api/search`,u),key:l,formatData:Y,success:s,error:c}},tagsAndClassifications(e,t,n={},r,i,a){let o={index:t,cursor:r,query:e,...n},s=`filter:options:${e}:${t.join(`:`)}:${r}`;return s+=Object.keys(n).map(e=>{let t=n[e];return Array.isArray(t)?t.join(`;`):t}).join(`;`),{url:g.urlBuilder(`{gateway}/v3/search/tags-and-classifications`,o),publicUrl:g.urlBuilder(`/api/search/tags-and-classifications`,o),key:s,success:i,error:a,normalize:!1}}};function _t(e,t){let n=x.buildBackendFilterParams(e,null,[t],!1,[])||{};return n[`filters.presentation`]=t,p(Q.search({query:N.getQuery(e),indices:[`company`],filters:n,allowSubstitute:e.allowSubstitute!==`false`}))}function vt(e,t){let n=x.buildBackendFilterParams(e,null,[t],!1,[]),r=i.pick(n,[`filters.classification`,`filters.presentation`]);r[`filters.classificationType`]=ye.Subject,r[`filters.status`]=Se.Published,r[`filters.presentation`]=t;let a=!x.getAppliedIndices(e).includes(`classification`),o=Q.search({query:N.getQuery(e),indices:[`classification`],filters:r,allowSubstitute:e.allowSubstitute!==`false`}),s=!a,c=p(s&&o);return s?c:null}function $(e){let t=p(ee.currentUser()),n=p(ge.config()),r=p(ve.streamablePresentation()),i=r.data,a=p(_e.streamableLearning()).data?.objectId,o=i?.id,s=p(r.data&&P.presentationAudiences(te.StreamableLearning,r.data.id)),c=gt(r.data?.id),l=c.data?.schoolLevels?.map(e=>e.id);return{queryParams:e,currentUser:t,config:n,audiences:s,schoolLevels:c,availableTopics:p(c.data&&F.topicsFromAllAvailablePresentations(l)),topics:vt(e,o),companies:_t(e,o),currentPresentationId:o,streamableLibraryId:a,hasDataLoaded:s.hasCompleted&&t.hasCompleted&&n.hasCompleted}}var yt=`search.utils`;function bt(e){let{queryParams:t,appliedIndices:r,backendFilters:i}=e,a=re(),o=m(),s=f(c()?.key);function c(n){return e.hasDataLoaded&&!!r?.length&&Q.searchV4({query:t.query,indices:r,filters:i,allowSubstitute:t.allowSubstitute!==`false`,cursor:n})}function l(e){o(c(e))}function u(e,t){if(e===1)return Re(t);a.error(n.getPhrase(yt,`error`))}let d=ze(c,l,u,e=>e.results);return{...d,hasFirstPageCompleted:d.hasFirstPageCompleted||!e.hasDataLoaded||!r?.length,fetchNext:l,substituteQuery:s.data?.substituteQuery,suggestions:s.data?.suggestions}}function xt(e){return p(e&&Q.tagsAndClassifications(e.queryParams.query,e.appliedIndices,e.backendFilters))}function St(e){let[t,n]=se(ce.SHOW_SEARCH_MASK,!0);B.useEffect(()=>{t&&e&&n(!1)},[e])}var Ct=`search.searchResultsEmptyState`;function wt(e){let t=ne.EmptyStates.SEARCH;return(0,V.jsx)(ae.Provider,{value:Ct,children:(0,V.jsxs)(j,{children:[(0,V.jsx)(j.Image,{src:t}),(0,V.jsx)(j.Heading,{children:e.query?(0,V.jsx)(w,{phrase:`headingWithQuery`,options:{query:e.query}}):(0,V.jsx)(w,{phrase:`headingWithoutQuery`})}),(0,V.jsxs)(j.Info,{children:[(0,V.jsx)(w,{phrase:`info`}),(0,V.jsx)(C,{className:`info-link`,appLink:{application:d.SUBJECTS,action:v.Subjects.CLASSIFICATION_ALL},children:(0,V.jsx)(w,{phrase:`topicsAppLink`})})]})]})})}var Tt=n.encloseNamespace(`search.searchResults`);function Et(e){let{queryParams:t={}}=e,{commonVideoProps:n}=je(),r=Be(`video-list`),i=$(t),a=N.getBackendFilters(i),s=xt(a),l=bt({...a,...i}),u=N.getFilters(i,s);T(oe.getDefaultMetadata({title:t.query??``,phraseContext:{phraseHandler:Tt,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},allowIndexing:!1,product:he.PRODUCT_NAME}));let f=i.hasDataLoaded&&u,p=l.hasFirstPageCompleted&&(!i.topics||i.topics.hasCompleted)&&(!i.companies||i.companies.hasCompleted)&&s.hasCompleted&&!!u,m=l.items?.length||i.topics?.data?.totalResults||i.companies?.data?.totalResults;return St(p),f?(0,V.jsxs)(`div`,{className:`px-4`,children:[(0,V.jsx)(pt,{substitute:l.substituteQuery,queryParams:t,getAppLink:A.search}),!l.substituteQuery&&(0,V.jsx)(q,{suggestions:l.suggestions,queryParams:t,getAppLink:A.search}),!!i.audiences.data&&!!i.availableTopics.data&&(0,V.jsx)(we,{queryParams:t,mainFilters:u?.mainFilters,analyticsOptions:{entity:o.SearchResults,location:c.SearchFilters},appLink:{application:d.SEARCH,action:v.Search.HOME},isFetchingOptions:s.isFetching}),p&&(0,V.jsxs)(`section`,{children:[m?(0,V.jsx)(me.Provider,{value:{getVideoActions:r},children:(0,V.jsx)(ft,{queryParams:t,results:l.items,topics:i.topics?.data,companies:i.companies?.data,audiences:!t.moviesAndTv&&i.audiences.data,currentUser:i.currentUser.data,availablePresentations:null,showActions:!0,appLinks:N.getAppLinks(),hasPermissions:()=>!1,commonVideoProps:n})}):(0,V.jsx)(wt,{query:t.query}),(l.hasMore||l.isFetching)&&(0,V.jsx)(Le,{isFetching:l.isFetching,fetchNext:l.fetchNext,nextCursor:l.nextCursor,fetchOnScroll:!0})]})]}):(0,V.jsx)(V.Fragment,{})}export{Et as SearchResultsView};
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{gt as e,v as t}from"./Dp9qJj1C.chunk.js";import{t as n}from"./ImQRQGZr.chunk.js";import{C as r,M as i,c as a,l as o,lt as s,m as c,ut as l,y as u}from"./Dun43GrB.chunk.js";import{t as d}from"./B-OL6Vs7.chunk.js";import{f,l as p,u as m,y as h}from"./BQ5XMoHG.chunk.js";import{n as g}from"./CAEQvGr_.chunk.js";import{n as _}from"./LVrVQvKT.chunk.js";import{t as ee}from"./ibuOpDkQ.chunk.js";import{t as v}from"./DeldjYRc.chunk.js";import{t as te}from"./BVWg3YHX.chunk.js";import{t as ne}from"./BYYiNmLB.chunk.js";import{t as re}from"./H6wjCesG.chunk.js";import{t as y}from"./D86qrFLE.chunk.js";import{a as ie,c as b,t as x}from"./8W5MLvcf.chunk.js";import{n as S}from"./Da5tDmIW2.chunk.js";import{t as C}from"./Ca1QPe-q2.chunk.js";import{n as w,t as ae}from"./D7d5XFW82.chunk.js";import{n as oe,t as T}from"./DjIdG9LL2.chunk.js";import{n as se,t as ce}from"./CL1ST5J62.chunk.js";import{i as le}from"./D2om474U2.chunk.js";import{n as ue}from"./DDn2E2a72.chunk.js";import{a as E,h as D,i as de,m as fe,n as O,r as pe,s as me}from"./QMuFwiiF2.chunk.js";import{i as k}from"./B8R4YVaF2.chunk.js";import{t as A}from"./CoualKDX.chunk.js";import{t as j}from"./iTHYgnO8.chunk.js";import{I as he,N as M,X as ge,Y as _e,q as ve,v as N}from"./app-gjHxcZG3.js";import{t as P}from"./BRiYVLuz.chunk.js";import{t as F}from"./DlFudnBx.chunk.js";import{t as ye}from"./CZb3E982.chunk.js";import{t as be}from"./Bg4Ri2TO.chunk.js";import{t as xe}from"./DQFcbMMk.chunk.js";import{t as I}from"./DDKwae_D2.chunk.js";import{t as Se}from"./DrgVCnQA2.chunk.js";import{t as Ce}from"./LdxNQaUZ2.chunk.js";import{t as we}from"./BWU6_pPN2.chunk.js";import{n as Te}from"./DnwEQ4qU2.chunk.js";import{n as L,t as R}from"./CeyqMjfq.chunk.js";import{r as Ee}from"./BBWlVBxr.chunk.js";import{n as z,t as De}from"./ClGIvvk6.chunk.js";import{c as Oe,l as ke,o as Ae,t as je}from"./DL4UFxRK.chunk.js";import{i as Me,r as Ne}from"./CIGsvs1s.chunk.js";import{n as Pe,r as Fe,t as Ie}from"./Ymq7JLkU.chunk.js";import{t as Le}from"./BA8QDRzp.chunk.js";import{t as Re}from"./Buc8GegC.chunk.js";import{t as ze}from"./Blj1z_g2.chunk.js";import{t as Be}from"./CUOEhUTb2.chunk.js";var B=e(l()),V=s();function Ve(e){let t={...e.analyticsData,id:e.data?.id,name:e.data?.name},n={location:c.ClassificationListItem,...e.analyticsOptions,actionType:r.Click,entity:o.Company,descriptor:a.Cover};return(0,V.jsx)(Me,{...e,analyticsData:t,analyticsOptions:n,coverUrl:e.data.logo?.url,coverBgColor:e.data.metadata?.colour})}function He(e){return(0,V.jsx)(y,{as:`li`,sm:6,md:e.useLargeStyle?6:4,lg:e.useLargeStyle?4:3,children:(0,V.jsx)(`div`,{className:`position-relative px-1 mb-2`,children:(0,V.jsx)(Ve,{data:e.item,getChildAppLink:e.appLinks.getCompanyAppLink,getChildAppLinkOptions:()=>e.appLinks.getCompanyAppLinkOptions?.(e.item),analyticsData:{itemIndex:e.itemIndex,search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:0},isLarge:e.useLargeStyle})})})}var H={videoList:`_videoList_14pgo_1`},U=`search.exchangeVideoGroup`,W=3;function Ue(e){let n=e.item.showCount>=W?W:e.item.showCount;function i(){return e.pagePositionIndex===0?`border-bottom pb-1 mb-3`:`border-top border-bottom pt-3 mt-2 pb-1 mb-3`}let s=t.getCurrentAppLink(),l=s.params??{},d=l?.source??[];d&&!Array.isArray(d)&&(d=[d]);let f={...s,params:{...l,source:[...d,ue.ExchangeArchive]}},p={query:e.queryParams.query,itemIndex:e.itemIndex,pagePositionIndex:e.pagePositionIndex},m={entity:o.SearchResults,location:c.ExchangeSearchGroupItem,actionType:r.Click,descriptor:u.ExchangeArchive};return(0,V.jsxs)(`div`,{className:i(),children:[(0,V.jsx)(C,{appLink:f,analyticsData:p,analyticsOptions:m,children:(0,V.jsx)(`h2`,{className:`h4`,children:(0,V.jsx)(w,{namespace:U,phrase:`heading`})})}),(0,V.jsxs)(`p`,{children:[(0,V.jsx)(w,{namespace:U,phrase:`message`}),`\xA0`,(0,V.jsx)(C,{appLink:e.appLinks.searchSettings,className:`text-info`,analyticsData:p,analyticsOptions:{...m,descriptor:a.Settings},children:(0,V.jsx)(w,{namespace:U,phrase:`searchSettings`})}),`.`]}),(0,V.jsx)(`div`,{className:`position-relative ${H.videoList}`,children:e.item.videos.slice(0,n).map((t,n)=>(0,V.jsx)(O,{video:t,getVideoAppLink:e.appLinks.getVideoAppLink,presentationAudiences:e.audiences,analyticsData:{search:{query:e.queryParams.query,score:t._score,maxScore:t._maxScore,featured:t._featured},pagePositionIndex:e.pagePositionIndex},hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps},n))}),(0,V.jsx)(`div`,{className:`text-center py-2`,children:(0,V.jsx)(C,{className:`text-secondary`,appLink:f,analyticsData:p,analyticsOptions:m,children:(0,V.jsx)(w,{namespace:U,phrase:`seeMore`})})})]})}function We(e){return(0,V.jsx)(`div`,{className:`pb-3`,children:(0,V.jsx)(Ie,{video:e.item,presentationAudiences:e.audiences,getVideoAppLink:(t,n)=>e.appLinks.getVideoAppLink(t,n),analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},hideInteractiveBadge:!0,showVideoGuidance:I.showVideoGuidance(e.hasPermissions),commonVideoProps:e.commonVideoProps})})}var Ge={videoList:`_videoList_182nk_1`},Ke=`search.playlistWithVideos`;function qe(){let e=M();return e.xl||e.xxl?3:2}function Je(e){let t=qe(),n=e.playlist.videos.data.slice(0,t),i={actionType:r.Click,entity:o.Playlist,location:c.PlaylistWithVideos},s={...e.analyticsData,id:e.playlist.id,name:e.playlist.name};return(0,V.jsx)(`div`,{className:`ps-2 py-2`,children:(0,V.jsxs)(S,{className:`g-0 border rounded-3`,children:[(0,V.jsx)(y,{xs:4,lg:3,className:`pe-3`,children:(0,V.jsx)(Fe,{appLink:e.playlistAppLink,analyticsData:e.analyticsData,analyticsOptions:{...i,descriptor:a.Cover},data:e.playlist,presentationAudiences:e.presentationAudiences,bgColourClassNames:Ee,itemStyle:`round-left`,imageCdnUrl:e.commonVideoProps.imageCdnUrl,currentUser:e.currentUser,showCount:!1,showOwner:!0})}),(0,V.jsx)(y,{xs:8,lg:9,children:(0,V.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,V.jsx)(`div`,{className:`pt-3 mb-n2 ${Ge.videoList}`,children:n?.map(t=>{let n={...s,videoId:t.id,videoName:t.name};return(0,V.jsx)(`div`,{className:`mb-2`,children:(0,V.jsx)(O,{video:t,getVideoAppLink:e.getVideoAppLink,analyticsData:n,analyticsOptions:{entity:o.Video,location:c.PlaylistWithVideos},size:`sm`,hasPermissions:e.hasPermissions,hideVideoGuidance:!0,commonVideoProps:e.commonVideoProps})},t.id)})}),(0,V.jsx)(`div`,{className:`text-end pt-3 pe-3`,children:(0,V.jsx)(C,{className:`info-link fw-semibold`,appLink:e.playlistAppLink,analyticsData:s,analyticsOptions:{...i,descriptor:a.Link},children:(0,V.jsx)(w,{namespace:Ke,phrase:`seeAllVideos`})})})]})})]})})}function Ye(e){return(0,V.jsx)(`div`,{className:`mx-n2`,children:(0,V.jsx)(Je,{playlist:e.item,playlistAppLink:e.appLinks.getPlaylistAppLink(e.item),presentationAudiences:e.audiences,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},currentUser:e.currentUser,preloadImage:!0,getVideoAppLink:e.appLinks.getVideoAppLink,hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps})})}var Xe={videoList:`_videoList_182nk_1`},Ze=`search.seriesWithVideos`;function Qe(){let e=M();return e.xl||e.xxl?5:e.lg||e.md?4:3}function $e(e){let t=Qe(),n=e.series.videos.data.slice(0,t),i={actionType:r.Click,entity:o.Series,location:c.SeriesWithVideos},s={...e.analyticsData,id:e.series.id,name:e.series.name};return(0,V.jsx)(`div`,{className:`ps-2 py-2`,children:(0,V.jsxs)(S,{className:`g-0 border rounded-3`,children:[(0,V.jsx)(y,{xs:4,lg:3,className:`pe-3`,children:(0,V.jsx)(C,{appLink:e.seriesAppLink,className:`position-relative`,analyticsData:s,analyticsOptions:{...i,descriptor:a.TallPoster},children:(0,V.jsx)(Pe,{series:e.series,presentationAudiences:e.presentationAudiences,preloadImage:e.preloadImage,imageClass:`rounded-start-lg`})})}),(0,V.jsx)(y,{xs:8,lg:9,children:(0,V.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,V.jsx)(`div`,{className:`pt-3 mb-n2 ${Xe.videoList}`,children:n?.map(t=>{let n={...s,videoId:t.id,videoName:t.name};return t={...t,series:e.series},(0,V.jsx)(`div`,{className:`mb-2`,children:(0,V.jsx)(O,{video:t,getVideoAppLink:e.getVideoAppLink,analyticsData:n,analyticsOptions:{entity:o.Video,location:c.SeriesWithVideos},size:`sm`,hasPermissions:e.hasPermissions,hideVideoGuidance:!0,commonVideoProps:e.commonVideoProps})},t.id)})}),(0,V.jsx)(`div`,{className:`text-end pt-3 pe-3`,children:(0,V.jsx)(C,{className:`info-link fw-semibold`,appLink:e.seriesAppLink,analyticsData:s,analyticsOptions:{...i,descriptor:a.Link},children:(0,V.jsx)(w,{namespace:Ze,phrase:`seeAllVideos`})})})]})})]})})}function et(e){return(0,V.jsx)(`div`,{className:`mx-n2`,children:(0,V.jsx)($e,{presentationAudiences:e.audiences,series:e.item,seriesAppLink:e.appLinks.getSeriesAppLink(e.item),getVideoAppLink:e.appLinks.getVideoAppLink,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},preloadImage:!0,hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps})})}var tt=`search.collectionVideoList`;function nt(){let e=M();return e.xs?2:e.sm?1:3}function rt(e){let t=nt(),n={analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions};return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`ul`,{className:`list-unstyled my-1`,children:e.videos.slice(0,t).map(t=>{let r=!!t.episodeNumber&&!!t.season?.id;return(0,V.jsx)(`li`,{className:`d-flex align-items-center`,children:(0,V.jsxs)(C,{...n,className:`clamp-1`,appLink:e.getVideoAppLink(t),children:[r&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Ae,{video:t}),`\xA0`]}),t.name]})},`${e.collectionId}:${t.id}`)})}),(0,V.jsx)(C,{...n,className:`info-link`,appLink:e.appLink,children:(0,V.jsx)(w,{namespace:tt,phrase:`seeAll`})})]})}var it={overlayContainer:`_overlayContainer_1tsto_1`,overlay:`_overlay_1tsto_1`},at=`search.collectionThumbnail`;function G(e){let t=M(),n=E.getSize(t,`md`)===`sm`,r=!!e.collection.videos?.data?.length,i=r&&e.collection.videos.data.find(e=>!!e.thumbnail?.url);function o(){let t={...e.analyticsData,id:e.collection.id,name:e.collection.name};return i&&(t.videoId=i.id,t.videoName=i.name),t}let s=o(),c=e.collectionType===`series`;return(0,V.jsxs)(`div`,{className:`row g-0 ${n?``:`py-2`}`,children:[(0,V.jsx)(y,{...E.getThumbnailColumns(),className:`flex-column align-items-flex-start ${n?`pb-2 pe-2`:`mb-1 px-2`}`,children:(0,V.jsx)(`div`,{className:`position-relative overflow-hidden ${n?`rounded`:`rounded-3`}`,children:(0,V.jsxs)(Ce,{data:i?.thumbnail,appLink:e.appLink,imageType:le.Thumbnails,analyticsData:s,analyticsOptions:{...e.analyticsOptions,descriptor:a.Thumbnail},children:[(0,V.jsx)(fe,{type:e.maskType}),(0,V.jsx)(De,{type:e.imageFallbackType}),(0,V.jsx)(`div`,{className:`d-flex flex-column align-items-center justify-content-center text-white h-100 ${it.overlay}`,children:(0,V.jsx)(w,{namespace:at,phrase:`seeAll`})})]})})}),(0,V.jsxs)(y,{...E.getDetailsColumns(),className:n?`pb-2`:`px-2`,children:[!e.isPlugin&&(0,V.jsx)(xe,{actions:e.getCollectionActions(e.collection,e.showActions,e.collectionType,e.analyticsOptions),className:`float-end mt-n1`,actionsDropdownClassName:`btn btn-link ms-1`}),(0,V.jsx)(C,{appLink:e.appLink,analyticsData:s,analyticsOptions:{...e.analyticsOptions,descriptor:a.Title},children:(0,V.jsx)(`h5`,{className:`m-0 mb-1`,children:(0,V.jsx)(`span`,{className:`clamp-1`,children:e.collection.name})})}),c&&!e.hideBadges&&(0,V.jsxs)(ke,{children:[(0,V.jsx)(R,{type:L.Rating,data:Oe.getRating(e.collection)}),(0,V.jsx)(R,{type:L.ProductionYear,data:e.collection.metadata?.year})]}),r&&(0,V.jsx)(rt,{collectionId:e.collection.id,videos:e.collection.videos.data,appLink:e.appLink,analyticsData:s,analyticsOptions:{...e.analyticsOptions,descriptor:a.Link},getVideoAppLink:e.getVideoAppLink})]})]})}function ot(e){return(0,V.jsx)(`div`,{className:`position-relative ${H.videoList}`,children:(0,V.jsx)(G,{analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},analyticsOptions:{entity:o.Playlist,actionType:r.Click,location:c.PlaylistListItem},appLink:e.appLinks.getPlaylistAppLink(e.item),showActions:e.showActions,collection:e.item,collectionType:`playlist`,maskType:D.Playlist,imageFallbackType:z.PlaylistThumbnail,isPlugin:e.commonVideoProps.isPlugin,getVideoAppLink:e.appLinks.getVideoAppLink,getCollectionActions:e.appLinks.getCollectionActions})})}function st(e){return(0,V.jsx)(`div`,{className:`position-relative ${H.videoList}`,children:(0,V.jsx)(G,{analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},analyticsOptions:{entity:o.Series,actionType:r.Click,location:c.SeriesListItem},appLink:e.appLinks.getSeriesAppLink(e.item),collectionType:`series`,collection:e.item,showActions:e.showActions,maskType:D.Series,imageFallbackType:z.SeriesThumbnail,hideBadges:!0,isPlugin:e.commonVideoProps.isPlugin,getVideoAppLink:e.appLinks.getVideoAppLink,getCollectionActions:e.appLinks.getCollectionActions})})}function ct(e){return(0,V.jsx)(y,{as:`li`,sm:6,md:e.useLargeStyle?6:4,lg:e.useLargeStyle?4:3,children:(0,V.jsx)(`div`,{className:`position-relative px-1 mb-2`,children:(0,V.jsx)(Ne,{data:e.item,getChildAppLink:e.appLinks.getClassificationAppLink,getChildAppLinkOptions:()=>e.appLinks.getClassificationAppLinkOptions?.(e.item),availablePresentations:e.availablePresentations,analyticsData:{itemIndex:e.itemIndex,search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:0},isLarge:e.useLargeStyle,highlightOnHover:e.commonVideoProps.showNewVideoIndicator})})})}function lt(e){function t(e){return I.isClip(e)?de:I.isInteractive(e)?pe:O}let n=t(e.item);return(0,V.jsx)(`div`,{className:`position-relative ${H.videoList}`,children:(0,V.jsx)(n,{video:e.item,getVideoAppLink:e.appLinks.getVideoAppLink,getPreviewQuestionsAppLink:e.appLinks.getPreviewQuestionsAppLink,presentationAudiences:e.audiences,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps})})}var ut=`shared.mixedSearchResults`,dt=8,ft=B.memo(function(e){let t=M(),n=t.xs||t.sm;if(!e.results?.length&&!e.topics?.totalResults&&!e.companies?.totalResults)return(0,V.jsx)(V.Fragment,{});let r=[...e.companies?.results??[],...e.topics?.results??[]],i={useLargeStyle:r.length<4,...e};return(0,V.jsxs)(`div`,{className:`position-relative`,children:[(0,V.jsx)(`p`,{role:`status`,className:`visually-hidden`,children:(0,V.jsx)(w,{namespace:ut,phrase:`ariaSearch`})}),!!r.length&&(0,V.jsx)(S,{as:`ul`,className:`list-unstyled g-0 pb-3 mx-n1`,children:r.slice(0,dt).map((e,t)=>{switch(e.type.toLowerCase()){case`company`:return(0,V.jsx)(He,{item:e,itemIndex:t,...i},t);case`subject`:return(0,V.jsx)(ct,{item:e,itemIndex:t,...i},t)}})}),e.results?.map((e,t)=>{let a=r.length?t+1:t;if(`isExchangeVideoGroup`in e&&e.isExchangeVideoGroup)return(0,V.jsx)(Ue,{item:e,pagePositionIndex:a,...i},t);switch(e.type?.toLowerCase()){case`interactive`:case`clip`:case`video`:return t===0&&e._featured&&I.isVideo(e)?(0,V.jsx)(We,{item:e,pagePositionIndex:a,...i},t):(0,V.jsx)(lt,{item:e,pagePositionIndex:a,...i},t);case`playlist`:return n?(0,V.jsx)(ot,{item:e,pagePositionIndex:a,...i},t):(0,V.jsx)(Ye,{item:e,pagePositionIndex:a,...i},t);case`series`:return n||!e.tallPoster?.id?(0,V.jsx)(st,{item:e,pagePositionIndex:a,...i},t):(0,V.jsx)(et,{item:e,pagePositionIndex:a,...i},t)}})]})}),K=`search.searchSubstitute`;function pt(e){return e.substitute?(0,V.jsxs)(`div`,{className:`pb-3`,children:[(0,V.jsxs)(`p`,{className:`mb-1 h6`,children:[(0,V.jsx)(w,{namespace:K,phrase:`showingFor`}),`\xA0`,(0,V.jsx)(C,{className:`info-link`,appLink:e.getAppLink(e.substitute,e.queryParams),appLinkOptions:{replace:!0},children:e.substitute})]}),(0,V.jsxs)(`p`,{className:`mb-0 h6 fw-normal`,children:[(0,V.jsx)(w,{namespace:K,phrase:`searchInsteadFor`}),(0,V.jsx)(C,{className:`info-link`,appLink:e.getAppLink(e.queryParams.query,{...e.queryParams,allowSubstitute:`false`}),children:e.queryParams.query}),(0,V.jsx)(w,{namespace:K,phrase:`endOriginal`})]})]}):(0,V.jsx)(V.Fragment,{})}var mt=`search.searchSuggestions`;q.defaultProps={suggestions:[],queryParams:{}};function q(e){return e.suggestions?.length?(0,V.jsxs)(`div`,{className:`d-flex align-items-center mb-3`,children:[(0,V.jsx)(w,{namespace:mt,phrase:`didYouMean`}),`\xA0`,e.suggestions.map((t,n)=>(0,V.jsxs)(B.Fragment,{children:[n!==0&&(0,V.jsx)(`span`,{className:`mx-1`,children:`•`}),(0,V.jsx)(C,{className:`info-link`,appLink:e.getAppLink(t,e.queryParams),appLinkOptions:{replace:!0},children:t})]},`${t}:${n}`))]}):(0,V.jsx)(V.Fragment,{})}var ht={search(e,t,n={},r,i,a){let o=`search:${e}:${t}:${r}`;o+=Object.keys(n).map(e=>n[e]).join(`;`);let s=Object.assign({},{index:t,cursor:r??void 0,query:e,...n});return{url:g.urlBuilder(`{gateway}/v1/search`,s),publicUrl:g.urlBuilder(`/api/search`,s),key:o,success:i,error:a}},schoolLevels(e){let t={filterType:`schoolLevels`,presentationId:e};return{url:g.urlBuilder(`{gateway}/v1/search/filters`,t),publicUrl:g.urlBuilder(`/api/search/filters`,t),key:`school-levels`}}};function gt(e){return p(e&&ht.schoolLevels([e]))}var J={video:_.VIDEO_COLLECTION,series:`rating,tallPoster`,playlist:`videos[count(),thumbnail]{limit:1},interactives[count(),_thumbnail]{limit:1},clips[count(),_thumbnail]{limit:1}`,classification:`_theme[banner,cover,tallposter,thumbnail,icon],cover,thumbnail,tags{tagtype:${Te.Curation}}`,clip:_.CLIP_COLLECTION,interactive:_.INTERACTIVE_COLLECTION,company:`logo`,category:`libraries[_logo],thumbnail`,partner_profile:_.PARTNER_PROFILE};function Y(e){let t=e.totalResults,n=e?.results?.filter(e=>{if(e._index!==`series`&&e._index!==`playlist`)return!0;if(e._index===`playlist`){let n=e;return n.clips?.data?.length||n.interactives?.data?.length||n.videos?.data?.length?!0:(t--,!1)}return e.videos?.data?.length===0?(t--,!1):!0})??[];e.results=n,e.totalResults=t;let r=n[0]?._score;return{...e,results:ie.mapMaxScoreToSearchResults(n,r)}}function X(e){return Object.entries(e).reduce((e,[,t])=>{let n=t;return typeof t==`object`?n=X(t):[`number`,`boolean`,`string`].includes(typeof t)&&(n=t.toString()),e.length?`${e},${n}`:n},``)}function Z(e,t){return Object.entries(e).reduce((e,[n,r])=>{let i=n.replace(b.FILTER_PARAM_PREFIX,``);return i===`presentation`&&t!==k.SearchTopResults&&t!==k.SearchRelatedResults&&t!==k.SearchSeries?e:{...e,[i]:r}},{})}var Q={searchDashboard(e,t,n=[]){let r=`search:v5:dashboard:${e}:${n.sort((e,t)=>e.id.localeCompare(t.id)).map(e=>[e.id,e?.cursor])}:${X(t)}`,{[`${b.FILTER_PARAM_PREFIX}indicesFilters`]:i,isLearner:a,...o}=t,s={widgets:n,indices:i,filters:Z(o,null),query:e,includeAllIndices:!1,isLearner:!!a};return{url:`{gateway}/v5/search/widgets`,publicUrl:`/api/search/v5/widgets`,type:h.POST,data:s,key:r}},searchDashboardWidget(e,t,n,r=[]){let i=`search:v5:dashboard:${e}:widget:${t}:${r.sort((e,t)=>e.id.localeCompare(t.id)).map(e=>[e.id,e?.cursor])}:${X(n)}`,{[`${b.FILTER_PARAM_PREFIX}indicesFilters`]:a,isLearner:o,excludeVideoIds:s,...c}=n,l={widgets:r,indices:a,filters:Z(c,e),query:t,includeAllIndices:!1,isLearner:!!o,ogql:J,excludeVideoIds:s};return{url:`{gateway}/v5/search/widgets/${e}`,publicUrl:`/api/search/v5/widgets/${e}`,type:h.POST,data:l,key:i,formatData:e=>e&&{...e,content:e.content?.data?{...e.content,data:e.content.data.map(be.applyThemeToClassification)}:e.content}}},searchV5(e,t,n=[]){let r=`search:v5:${e}:${n.sort((e,t)=>e.id.localeCompare(t.id)).map(e=>[e.id,e?.cursor])}:${X(t)}`,{[`${b.FILTER_PARAM_PREFIX}indicesFilters`]:i,isLearner:a,...o}=t,s={widgets:n,indices:i,filters:Object.entries(o).reduce((e,[t,n])=>({...e,[t.replace(`filters.`,``)]:n}),{}),query:e,includeAllIndices:!1,isLearner:!!a,ogql:J};return{url:`{gateway}/v5/search`,publicUrl:`/api/search/v5`,type:h.POST,data:s,key:r}},searchV4(e){let{query:t,indices:n,filters:r={},sorts:i={},allowSubstitute:a=!0,cursor:o,limit:s}=e,c=`search:v4:${t}:${a}:${n}:${o}`;c+=Object.keys(r).map(e=>{let t=r[e];return Array.isArray(t)?t.join(`;`):t}).join(`;`);let{[`${b.FILTER_PARAM_PREFIX}excludeLibraryExclusive`]:l,isLearner:u,...d}=r,f={searchType:`content`,indices:n.map(e=>e!==`video`||!l?{index:e}:{index:e,filters:{excludeLibraryExclusive:l}}),filters:Object.entries(d).reduce((e,[t,n])=>({...e,[t.replace(`filters.`,``)]:n}),{}),sorts:i,query:t,allowSubstitute:a,cursor:o??void 0,isLearner:!!u,limit:s};return{url:`{gateway}/v4/search`,publicUrl:`/api/search/v4`,type:h.POST,data:f,key:c,formatData:Y}},search(e){let{query:t,indices:n,filters:r,allowSubstitute:i,cursor:a,limit:o,success:s,error:c}=e,l=`search:${t}:${i}:${n}:${a}`;l+=Object.keys(r).map(e=>{let t=r[e];return Array.isArray(t)?t.join(`;`):t}).join(`;`);let u=Object.assign({},{index:n,cursor:a??void 0,query:t,allowSubstitute:i,limit:o,...r});return{url:g.urlBuilder(`{gateway}/v3/search`,u),publicUrl:g.urlBuilder(`/api/search`,u),key:l,formatData:Y,success:s,error:c}},tagsAndClassifications(e,t,n={},r,i,a){let o={index:t,cursor:r,query:e,...n},s=`filter:options:${e}:${t.join(`:`)}:${r}`;return s+=Object.keys(n).map(e=>{let t=n[e];return Array.isArray(t)?t.join(`;`):t}).join(`;`),{url:g.urlBuilder(`{gateway}/v3/search/tags-and-classifications`,o),publicUrl:g.urlBuilder(`/api/search/tags-and-classifications`,o),key:s,success:i,error:a,normalize:!1}}};function _t(e,t){let n=x.buildBackendFilterParams(e,null,[t],!1,[])||{};return n[`filters.presentation`]=t,p(Q.search({query:N.getQuery(e),indices:[`company`],filters:n,allowSubstitute:e.allowSubstitute!==`false`}))}function vt(e,t){let n=x.buildBackendFilterParams(e,null,[t],!1,[]),r=i.pick(n,[`filters.classification`,`filters.presentation`]);r[`filters.classificationType`]=ye.Subject,r[`filters.status`]=Se.Published,r[`filters.presentation`]=t;let a=!x.getAppliedIndices(e).includes(`classification`),o=Q.search({query:N.getQuery(e),indices:[`classification`],filters:r,allowSubstitute:e.allowSubstitute!==`false`}),s=!a,c=p(s&&o);return s?c:null}function $(e){let t=p(ee.currentUser()),n=p(ge.config()),r=p(ve.streamablePresentation()),i=r.data,a=p(_e.streamableLearning()).data?.objectId,o=i?.id,s=p(r.data&&P.presentationAudiences(te.StreamableLearning,r.data.id)),c=gt(r.data?.id),l=c.data?.schoolLevels?.map(e=>e.id);return{queryParams:e,currentUser:t,config:n,audiences:s,schoolLevels:c,availableTopics:p(c.data&&F.topicsFromAllAvailablePresentations(l)),topics:vt(e,o),companies:_t(e,o),currentPresentationId:o,streamableLibraryId:a,hasDataLoaded:s.hasCompleted&&t.hasCompleted&&n.hasCompleted}}var yt=`search.utils`;function bt(e){let{queryParams:t,appliedIndices:r,backendFilters:i}=e,a=re(),o=m(),s=f(c()?.key);function c(n){return e.hasDataLoaded&&!!r?.length&&Q.searchV4({query:t.query,indices:r,filters:i,allowSubstitute:t.allowSubstitute!==`false`,cursor:n})}function l(e){o(c(e))}function u(e,t){if(e===1)return Re(t);a.error(n.getPhrase(yt,`error`))}let d=ze(c,l,u,e=>e.results);return{...d,hasFirstPageCompleted:d.hasFirstPageCompleted||!e.hasDataLoaded||!r?.length,fetchNext:l,substituteQuery:s.data?.substituteQuery,suggestions:s.data?.suggestions}}function xt(e){return p(e&&Q.tagsAndClassifications(e.queryParams.query,e.appliedIndices,e.backendFilters))}function St(e){let[t,n]=se(ce.SHOW_SEARCH_MASK,!0);B.useEffect(()=>{t&&e&&n(!1)},[e])}var Ct=`search.searchResultsEmptyState`;function wt(e){let t=ne.EmptyStates.SEARCH;return(0,V.jsx)(ae.Provider,{value:Ct,children:(0,V.jsxs)(j,{children:[(0,V.jsx)(j.Image,{src:t}),(0,V.jsx)(j.Heading,{children:e.query?(0,V.jsx)(w,{phrase:`headingWithQuery`,options:{query:e.query}}):(0,V.jsx)(w,{phrase:`headingWithoutQuery`})}),(0,V.jsxs)(j.Info,{children:[(0,V.jsx)(w,{phrase:`info`}),(0,V.jsx)(C,{className:`info-link`,appLink:{application:d.SUBJECTS,action:v.Subjects.CLASSIFICATION_ALL},children:(0,V.jsx)(w,{phrase:`topicsAppLink`})})]})]})})}var Tt=n.encloseNamespace(`search.searchResults`);function Et(e){let{queryParams:t={}}=e,{commonVideoProps:n}=je(),r=Be(`video-list`),i=$(t),a=N.getBackendFilters(i),s=xt(a),l=bt({...a,...i}),u=N.getFilters(i,s);T(oe.getDefaultMetadata({title:t.query??``,phraseContext:{phraseHandler:Tt,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},allowIndexing:!1,product:he.PRODUCT_NAME}));let f=i.hasDataLoaded&&u,p=l.hasFirstPageCompleted&&(!i.topics||i.topics.hasCompleted)&&(!i.companies||i.companies.hasCompleted)&&s.hasCompleted&&!!u,m=l.items?.length||i.topics?.data?.totalResults||i.companies?.data?.totalResults;return St(p),f?(0,V.jsxs)(`div`,{className:`px-4`,children:[(0,V.jsx)(pt,{substitute:l.substituteQuery,queryParams:t,getAppLink:A.search}),!l.substituteQuery&&(0,V.jsx)(q,{suggestions:l.suggestions,queryParams:t,getAppLink:A.search}),!!i.audiences.data&&!!i.availableTopics.data&&(0,V.jsx)(we,{queryParams:t,mainFilters:u?.mainFilters,analyticsOptions:{entity:o.SearchResults,location:c.SearchFilters},appLink:{application:d.SEARCH,action:v.Search.HOME},isFetchingOptions:s.isFetching}),p&&(0,V.jsxs)(`section`,{children:[m?(0,V.jsx)(me.Provider,{value:{getVideoActions:r},children:(0,V.jsx)(ft,{queryParams:t,results:l.items,topics:i.topics?.data,companies:i.companies?.data,audiences:!t.moviesAndTv&&i.audiences.data,currentUser:i.currentUser.data,availablePresentations:null,showActions:!0,appLinks:N.getAppLinks(),hasPermissions:()=>!1,commonVideoProps:n})}):(0,V.jsx)(wt,{query:t.query}),(l.hasMore||l.isFetching)&&(0,V.jsx)(Le,{isFetching:l.isFetching,fetchNext:l.fetchNext,nextCursor:l.nextCursor,fetchOnScroll:!0})]})]}):(0,V.jsx)(V.Fragment,{})}export{Et as SearchResultsView};
|
|
2
|
+
//# sourceMappingURL=p9ukva5a2.chunk.js.map
|