@clickview/lite 0.104.0-rc.3 → 0.104.0-rc.5
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 +699 -699
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{CW1i-QHv.chunk.js → -7qiRMLt.chunk.js} +2 -2
- package/dist/scripts/{CW1i-QHv.chunk.js.map → -7qiRMLt.chunk.js.map} +1 -1
- package/dist/scripts/{CXN0_XjU.chunk.js → -KvTbeQV.chunk.js} +2 -2
- package/dist/scripts/{CXN0_XjU.chunk.js.map → -KvTbeQV.chunk.js.map} +1 -1
- package/dist/scripts/{Bu7Sr1dy.chunk.js → 0Fek4oFk.chunk.js} +2 -2
- package/dist/scripts/{Bu7Sr1dy.chunk.js.map → 0Fek4oFk.chunk.js.map} +1 -1
- package/dist/scripts/{CfRQYWGG.chunk.js → 5PKjjI4Y.chunk.js} +2 -2
- package/dist/scripts/{CfRQYWGG.chunk.js.map → 5PKjjI4Y.chunk.js.map} +1 -1
- package/dist/scripts/{Ta3cqTAC.chunk.js → AEOAlemi.chunk.js} +2 -2
- package/dist/scripts/{Ta3cqTAC.chunk.js.map → AEOAlemi.chunk.js.map} +1 -1
- package/dist/scripts/{DBcWjmUy.chunk.js → B1TqilLB.chunk.js} +2 -2
- package/dist/scripts/{DBcWjmUy.chunk.js.map → B1TqilLB.chunk.js.map} +1 -1
- package/dist/scripts/{ft2cSH-j.chunk.js → B3AhKFfz.chunk.js} +2 -2
- package/dist/scripts/{ft2cSH-j.chunk.js.map → B3AhKFfz.chunk.js.map} +1 -1
- package/dist/scripts/{DFFq-sgD.chunk.js → B3y60nT5.chunk.js} +2 -2
- package/dist/scripts/{DFFq-sgD.chunk.js.map → B3y60nT5.chunk.js.map} +1 -1
- package/dist/scripts/{DWJiezgB2.chunk.js → BBWnpWNB2.chunk.js} +2 -2
- package/dist/scripts/{DWJiezgB2.chunk.js.map → BBWnpWNB2.chunk.js.map} +1 -1
- package/dist/scripts/{B6GfukUn2.chunk.js → B_TE5XUR2.chunk.js} +2 -2
- package/dist/scripts/{B6GfukUn2.chunk.js.map → B_TE5XUR2.chunk.js.map} +1 -1
- package/dist/scripts/{BpHA-MkZ.chunk.js → BiWUSyJr.chunk.js} +2 -2
- package/dist/scripts/{BpHA-MkZ.chunk.js.map → BiWUSyJr.chunk.js.map} +1 -1
- package/dist/scripts/{VJQU9c4G2.chunk.js → Bld7iWR52.chunk.js} +2 -2
- package/dist/scripts/{VJQU9c4G2.chunk.js.map → Bld7iWR52.chunk.js.map} +1 -1
- package/dist/scripts/{C_tdgSWS2.chunk.js → Bzk4AwVx2.chunk.js} +2 -2
- package/dist/scripts/{C_tdgSWS2.chunk.js.map → Bzk4AwVx2.chunk.js.map} +1 -1
- package/dist/scripts/{9oMRc0cb2.chunk.js → CAs2Sere2.chunk.js} +2 -2
- package/dist/scripts/{9oMRc0cb2.chunk.js.map → CAs2Sere2.chunk.js.map} +1 -1
- package/dist/scripts/CCBk_ENs.chunk.js +1 -0
- package/dist/scripts/{qT_Twe2q.chunk.js → CMHxOVI7.chunk.js} +2 -2
- package/dist/scripts/{qT_Twe2q.chunk.js.map → CMHxOVI7.chunk.js.map} +1 -1
- package/dist/scripts/{Bm5qACA52.chunk.js → CNfmLVE82.chunk.js} +2 -2
- package/dist/scripts/{Bm5qACA52.chunk.js.map → CNfmLVE82.chunk.js.map} +1 -1
- package/dist/scripts/{CpzveYo2.chunk.js → CVL6bQWp.chunk.js} +2 -2
- package/dist/scripts/{CpzveYo2.chunk.js.map → CVL6bQWp.chunk.js.map} +1 -1
- package/dist/scripts/{CNPKh2z72.chunk.js → CX6c7KRp2.chunk.js} +2 -2
- package/dist/scripts/{CNPKh2z72.chunk.js.map → CX6c7KRp2.chunk.js.map} +1 -1
- package/dist/scripts/{BTm7hIyP2.chunk.js → CaCm4N_d2.chunk.js} +2 -2
- package/dist/scripts/{BTm7hIyP2.chunk.js.map → CaCm4N_d2.chunk.js.map} +1 -1
- package/dist/scripts/{DW_sm5se2.chunk.js → CfNYFxJl2.chunk.js} +2 -2
- package/dist/scripts/{DW_sm5se2.chunk.js.map → CfNYFxJl2.chunk.js.map} +1 -1
- package/dist/scripts/{C4OV7pr-.chunk.js → CmnbQiBA.chunk.js} +2 -2
- package/dist/scripts/{C4OV7pr-.chunk.js.map → CmnbQiBA.chunk.js.map} +1 -1
- package/dist/scripts/CpsbRDII.chunk.js +2 -0
- package/dist/scripts/{jAtAipGN.chunk.js.map → CpsbRDII.chunk.js.map} +1 -1
- package/dist/scripts/{CFduwlo0.chunk.js → Cqq1N9xw.chunk.js} +2 -2
- package/dist/scripts/{CFduwlo0.chunk.js.map → Cqq1N9xw.chunk.js.map} +1 -1
- package/dist/scripts/{UCiRB6cQ.chunk.js → CwFYdvvA.chunk.js} +2 -2
- package/dist/scripts/{UCiRB6cQ.chunk.js.map → CwFYdvvA.chunk.js.map} +1 -1
- package/dist/scripts/{DLcyKjA7.chunk.js → Cyit3dMk.chunk.js} +2 -2
- package/dist/scripts/{DLcyKjA7.chunk.js.map → Cyit3dMk.chunk.js.map} +1 -1
- package/dist/scripts/{BxjzTnvL2.chunk.js → D-iyHqNw2.chunk.js} +3 -3
- package/dist/scripts/{BxjzTnvL2.chunk.js.map → D-iyHqNw2.chunk.js.map} +1 -1
- package/dist/scripts/{x2GB1P6E2.chunk.js → D3ncynN72.chunk.js} +3 -3
- package/dist/scripts/{x2GB1P6E2.chunk.js.map → D3ncynN72.chunk.js.map} +1 -1
- package/dist/scripts/{DH_0KtTK2.chunk.js → DICsRDM42.chunk.js} +2 -2
- package/dist/scripts/{DH_0KtTK2.chunk.js.map → DICsRDM42.chunk.js.map} +1 -1
- package/dist/scripts/{BTcLMVw4.chunk.js → DKDWcWxk.chunk.js} +2 -2
- package/dist/scripts/{BTcLMVw4.chunk.js.map → DKDWcWxk.chunk.js.map} +1 -1
- package/dist/scripts/{2p_6pVn6.chunk.js → DSPMbDdF.chunk.js} +2 -2
- package/dist/scripts/{2p_6pVn6.chunk.js.map → DSPMbDdF.chunk.js.map} +1 -1
- package/dist/scripts/{Bh-26cqn.chunk.js → Dnz8CbEu.chunk.js} +3 -3
- package/dist/scripts/{Bh-26cqn.chunk.js.map → Dnz8CbEu.chunk.js.map} +1 -1
- package/dist/scripts/{CukXgE1z.chunk.js → Dt5731Ay.chunk.js} +2 -2
- package/dist/scripts/{CukXgE1z.chunk.js.map → Dt5731Ay.chunk.js.map} +1 -1
- package/dist/scripts/{DCPsmD1m.chunk.js → Dtag-27K.chunk.js} +2 -2
- package/dist/scripts/{DCPsmD1m.chunk.js.map → Dtag-27K.chunk.js.map} +1 -1
- package/dist/scripts/{DOCHl5Sy.chunk.js → DyE6EUDb.chunk.js} +2 -2
- package/dist/scripts/{DOCHl5Sy.chunk.js.map → DyE6EUDb.chunk.js.map} +1 -1
- package/dist/scripts/{app-LEZ4B6dG.js → app-BzH1hkoU.js} +4 -4
- package/dist/scripts/{app-LEZ4B6dG.js.map → app-BzH1hkoU.js.map} +1 -1
- package/dist/scripts/{DerPQKk6.chunk.js → cDv6zuhh.chunk.js} +2 -2
- package/dist/scripts/{DerPQKk6.chunk.js.map → cDv6zuhh.chunk.js.map} +1 -1
- package/dist/scripts/{Cl2FZEIX.chunk.js → fMgBORUX.chunk.js} +2 -2
- package/dist/scripts/{Cl2FZEIX.chunk.js.map → fMgBORUX.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/BILyzh0I.chunk.js +0 -1
- package/dist/scripts/jAtAipGN.chunk.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../src/shared/hooks/useFetchPointsOfInterest.ts","../../src/shared/hooks/usePlayerIntegrations.ts","../../src/shared/constants/LiteConstants.ts","../../src/shared/components/play-page/PlayPageUtils.ts","../../src/shared/components/stream-limit-overlay/StreamLimitOverlay.tsx","../../src/shared/hooks/usePreventKeyboardScroll.ts","../../src/shared/hooks/useGetRelatedVideos.ts","../../src/shared/views/lite-player/LitePlayerViewHooks.tsx","../../src/shared/views/lite-player/LitePlayerView.tsx"],"sourcesContent":["import { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { EmptySelectAllPagesResult, SelectAllPagesResult, useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\nimport { CurrentUser, PointOfInterest } from 'libs/shared/interfaces';\n\nexport function useFetchPointsOfInterest(\n videoId?: string,\n forceFetch?: boolean\n): SelectAllPagesResult<PointOfInterest> {\n const fetch = Flight.useGetFetch();\n const { hasPermissions } = usePermissions();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const shouldFetch = (currentUser.data?.isAuthenticated || forceFetch) &&\n hasPermissions(PermissionName.ViewVideoPointsOfInterest);\n\n function getRequest(cursor?: string): Flight.Request {\n return VideoRequests.pointsOfInterest(videoId, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetch(getRequest(cursor));\n }\n\n /**\n * This is a big strange, but since we can't conditionally use hooks, instead\n * we null out the videoId so the points of interest never fetch for students.\n */\n if (!shouldFetch)\n videoId = null;\n\n useFetchAll(!!videoId && getRequest, !!videoId && fetchNext);\n\n const result = useSelectAllPages<PointOfInterest>(!!videoId && ((cursor?: string) => getRequest(cursor).key));\n\n /**\n * Then we return a placeholder object that lets anything consuming this behave as if\n * the Points of interest have fetched and there are one.\n */\n if (!shouldFetch)\n return EmptySelectAllPagesResult;\n\n return result;\n}\n","import { LocationUtils } from 'libs/common/backbone/core';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, DevicesDescriptor, EntityType, EventVersion, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { IntegrationStatus } from 'libs/shared/enums/IntegrationStatus';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerIntegrationsRequests } from 'libs/shared/flight-requests/PlayerIntegrationsRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { HasPermissionsFunc, usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser } from 'libs/shared/interfaces';\nimport { CtaContext, PlayerIntegrations } from 'libs/shared/interfaces';\nimport { AppleTvAccessToken, ViviAccessToken } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\ninterface PlayerIntegrationsHash {\n hasCompleted: boolean;\n data: PlayerIntegrations;\n}\n\nexport function usePlayerIntegrations(objectId: string): PlayerIntegrationsHash {\n const {\n hasEnabledViviPlayback,\n hasEnabledAppleTvPlayback,\n hasEnabledViviStudentCasting,\n isLoadingSettings\n } = useSettings(null);\n const { hasProduct, isLoadingProducts } = useProducts();\n const { hasPermissions, isLoaded: permissionsLoaded } = usePermissions();\n const { fetchViviAccessToken, fetchAppleTvAccessToken } = useAccessTokenFetchFunctions();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const ctaOptions = useCtaOptions(hasPermissions);\n\n // Compute derived state\n const isAuthenticated = currentUser.data?.isAuthenticated ?? false;\n const isNotStudent = !hasPermissions(PermissionName.StudentExperience);\n const isNotGuest = !hasPermissions(PermissionName.GuestExperience);\n const hasPrimaryProduct = hasProduct(ProductId.Primary);\n const canUserCastToVivi = isAuthenticated\n && hasPrimaryProduct && (isNotStudent || hasEnabledViviStudentCasting) && isNotGuest;\n const canUserCastToAppleTv = isAuthenticated && hasPrimaryProduct && isNotStudent && isNotGuest;\n const shouldCheckViviStatus = canUserCastToVivi && hasEnabledViviPlayback;\n \n // Fetch the status of the Vivi integration if necessary\n const viviStatus = Flight.useBasicFetch<IntegrationStatus>(\n objectId &&\n shouldCheckViviStatus &&\n PlayerIntegrationsRequests.getViviIntegrationStatus()\n );\n const viviAccountConnected = viviStatus.data === IntegrationStatus.Connected;\n const viviStatusCheckCompleted = shouldCheckViviStatus ? viviStatus.hasCompleted : true;\n\n // Compute the final `hasCompleted` value\n const hasCompleted = isAuthenticated ? (\n currentUser.hasCompleted &&\n config.hasCompleted &&\n viviStatusCheckCompleted &&\n permissionsLoaded &&\n !isLoadingSettings &&\n !isLoadingProducts\n ) : true;\n \n return {\n hasCompleted,\n data: {\n ctaOptions,\n canUserCastToDevices: canUserCastToVivi || canUserCastToAppleTv,\n vivi: {\n accountConnected: viviAccountConnected,\n enabled: canUserCastToVivi && hasEnabledViviPlayback,\n apiUrl: config.data?.viviApiUrl ?? '',\n fetchAccessToken: fetchViviAccessToken\n },\n appleTv: {\n enabled: canUserCastToAppleTv && hasEnabledAppleTvPlayback,\n fetchAccessToken: fetchAppleTvAccessToken\n }\n }\n };\n}\n\nfunction useAccessTokenFetchFunctions() {\n const fetchAsync = Flight.useGetFetchAsync();\n const getResponse = Flight.useGetResponseFunc();\n\n const fetchViviAccessToken = async () => {\n const request = PlayerIntegrationsRequests.getViviAccessToken();\n const tokenResponse = getResponse<ViviAccessToken>(request.key);\n const { token } = tokenResponse.shouldFetch ?\n await fetchAsync<ViviAccessToken>(request) :\n tokenResponse.data;\n \n return token;\n };\n\n const fetchAppleTvAccessToken = () => {\n return fetchAsync<AppleTvAccessToken>(\n PlayerIntegrationsRequests.getAppleTvAccessToken()\n );\n };\n\n return {\n fetchViviAccessToken,\n fetchAppleTvAccessToken\n };\n}\n\nconst VIVI_LEARN_MORE_URL = 'https://clickv.ie/w/WVsx';\nconst APPLE_TV_LEARN_MORE_URL = 'https://clickv.ie/w/PVsx';\n\nfunction useCtaOptions(hasPermissions: HasPermissionsFunc) {\n const [ dismissedModel, setDismissedModel ] = useViewModel<{ dismissed: boolean }>(\n 'devices:cta:dismissed',\n { dismissed: false },\n { storage: StorageType.LocalStorage }\n );\n const isStudent = hasPermissions(PermissionName.StudentExperience);\n const canUserManageIntegrations = hasPermissions(PermissionName.ManageIntegrations);\n const analyticsOptions: Partial<AnalyticsOptions> = {\n entity: EntityType.DevicesCta,\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Complete,\n location: LocationContext.Player\n };\n\n const onDismiss = (context: CtaContext) => {\n AnalyticsHelper.logUserAction({\n canUserManageIntegrations,\n context\n }, {\n ...analyticsOptions,\n descriptor: DevicesDescriptor.Dismiss,\n eventVersion: EventVersion.V1\n });\n\n setDismissedModel({ dismissed: true });\n };\n\n const onInstall = (context: CtaContext) => {\n AnalyticsHelper.logUserAction({\n canUserManageIntegrations,\n context\n }, {\n ...analyticsOptions,\n descriptor: DevicesDescriptor.InstallIntegration,\n eventVersion: EventVersion.V1\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.INTEGRATIONS\n });\n };\n\n const onLearnMore = (context: CtaContext) => {\n AnalyticsHelper.logUserAction({\n canUserManageIntegrations,\n context\n }, {\n ...analyticsOptions,\n descriptor: DevicesDescriptor.LearnMore,\n eventVersion: EventVersion.V1\n });\n\n if (context === 'vivi_and_apple_tv' || context === 'vivi')\n LocationUtils.PageLoad(VIVI_LEARN_MORE_URL, true);\n\n if (context === 'vivi_and_apple_tv' || context === 'apple_tv')\n LocationUtils.PageLoad(APPLE_TV_LEARN_MORE_URL, true);\n };\n\n const onContactSupport = (context: CtaContext) => {\n AnalyticsHelper.logUserAction({\n canUserManageIntegrations,\n context\n }, {\n ...analyticsOptions,\n descriptor: DevicesDescriptor.ContactSupport,\n eventVersion: EventVersion.V1\n });\n\n LocationUtils.PageLoad(ArticleHelper.getSupportRequestUrl(), true);\n };\n\n return {\n hasBeenDismissed: dismissedModel.dismissed || isStudent,\n canUserManageIntegrations,\n onDismiss,\n onInstall,\n onLearnMore,\n onContactSupport\n };\n}\n","// Misc constants\nexport const LiteConstants = {\n VIDEO_START_TIME_CUTOFF: 10, // If the video start time is in the last 10 seconds of the video duration, it's ignored\n PUBLIC_SEARCH_QUERY_DEBOUNCE: 400,\n AUTHENTICATED_SEARCH_QUERY_DEBOUNCE: 200\n};\n","import { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { Category, Company, Library, Link, PartnerProfile, Person, Resource, Series, Tag, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { LiteConstants } from 'shared/constants/LiteConstants';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ContentPartnerAppLinkHelper } from 'shared/utils/ContentPartnerAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nexport const getLibraryAppLink = (library: Library): Core.AppLink => {\n return {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.LIBRARY,\n args: [ library.id.toString(), TextHelper.slugify(library.name) ]\n };\n};\n\nexport const getFolderAppLink = (library: Library, folder: Category): Core.AppLink => {\n return {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.FOLDER,\n args: [ library.id.toString(), folder.id.toString(), TextHelper.slugify(folder.name) ]\n };\n};\n\ninterface GetAppLinksOptions {\n settings: SettingsHash;\n presentationSlug: string | null;\n}\n\nexport function getAppLinks(options: GetAppLinksOptions) {\n const { settings, presentationSlug } = options;\n\n const getTagAppLink = (tag: Tag) => {\n return {\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n };\n };\n\n const getSeriesAppLink = (series: Series, moviesAndTv: boolean): Core.AppLink => {\n return SeriesAppLinkHelper.getSeriesAppLink(series, moviesAndTv ? { mtv: true } : {}, presentationSlug);\n };\n\n const getResourceAppLink = (videoId: string, shareId: string, canViewResource: boolean) =>\n (resource: Resource | Link) => {\n /**\n * We check both the feature access value and the shareId. \n * Resources should always be available if we have a share id, and the backend should control\n * which specific resources are returned - Sha\n */\n if (!canViewResource && !shareId) {\n return {\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n };\n }\n\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PREVIEW_PDF,\n args: [resource.id],\n params: {\n videoId: videoId,\n shareId: shareId\n }\n };\n };\n\n const getPartnerProfileAppLink = (partnerProfile: PartnerProfile) => {\n return ContentPartnerAppLinkHelper.getPartnerDashboardAppLink(partnerProfile);\n };\n\n const getPartnerDashboardHubAppLink = (company: Company | Person) => {\n return ContentPartnerAppLinkHelper.getPartnerDashboardHubAppLink(company);\n };\n\n return {\n getTagAppLink,\n getSeriesAppLink,\n getResourceAppLink,\n getPartnerProfileAppLink: settings?.hasPartnerProfiles ? getPartnerProfileAppLink : null,\n getPartnerDashboardHubAppLink: settings?.hasPartnerProfiles ? getPartnerDashboardHubAppLink : null,\n getLibraryAppLink,\n getFolderAppLink\n };\n}\n\nexport function getStartTime(startTimeParam: string | number, video: Video): number {\n const startTime = Number(startTimeParam);\n\n if (!isNaN(startTime) && startTime >= 0)\n return startTime;\n\n const lastProgressPoint = VideoHelper.getVideoProgress(video);\n\n if (!lastProgressPoint)\n return 0;\n\n if (lastProgressPoint >= (video.duration / 1000 - LiteConstants.VIDEO_START_TIME_CUTOFF))\n return 0;\n\n return lastProgressPoint;\n}\n\nexport function getEndTime(endTimeParam: string | number): number | undefined {\n if (Number.isInteger(+endTimeParam))\n return +endTimeParam;\n\n return undefined;\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { EmbedPlaceHolderHelper } from 'apps/embed/utils/EmbedPlaceholderHelper';\n\nimport styles from './stream-limit-overlay.module.scss';\n\nconst namespace = 'shared.streamLimitOverlay';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StreamLimitOverlayProps {\n posterUrl: string;\n embed: boolean;\n hasStudentExperience: boolean;\n canRedeemMoreReferrals: boolean;\n totalStreamsAvailable: number;\n}\n\nexport function StreamLimitOverlay(props: StreamLimitOverlayProps): JSX.Element {\n const ctaAction = props.canRedeemMoreReferrals ?\n Actions.SignUp.INVITE_COLLEAGUE :\n Actions.SignUp.UPGRADE;\n\n const ctaPhrase = props.canRedeemMoreReferrals ? 'inviteCta' : 'upgradeCta';\n const hideCta = props.embed || props.hasStudentExperience;\n\n let descriptionPhrase: string;\n\n if (hideCta)\n descriptionPhrase = 'basicDescription';\n else if (props.canRedeemMoreReferrals)\n descriptionPhrase = 'referralDescription';\n else\n descriptionPhrase = 'upgradeDescription';\n\n /**\n * Embeds render a server-side splash screen (#embed-placeholder) that covers\n * the React app until the player fires 'cv-playback-data-loaded'. Since the\n * overlay replaces the player, that event never fires — so we need to \n * remove it manually.\n */\n React.useEffect(() => {\n if (props.embed)\n EmbedPlaceHolderHelper.remove();\n }, [props.embed]);\n\n return (\n <div className={`position-relative bg-light overflow-hidden ${props.embed ? 'position-fixed top-0 start-0 end-0 bottom-0' : 'ratio ratio-16x9'}`}>\n {props.posterUrl && (\n <img className={`position-absolute top-0 start-0 w-100 h-100 object-fit-cover ${styles.poster}`} src={props.posterUrl} alt='' />\n )}\n <div className={`position-absolute top-0 start-0 w-100 h-100 ${styles.frost}`} />\n <div className='position-absolute top-0 start-0 w-100 h-100 d-flex flex-column align-items-center justify-content-center text-center p-4'>\n <img\n className={`${styles.image} d-none d-md-block mb-3`}\n src={ImageUrls.SignUp.INVITE_COLLEAGUE}\n alt={getPhrase('heading')}\n />\n <h2 className='h5 mb-2'><Text namespace={namespace} phrase='heading' options={{ smartCount: props.totalStreamsAvailable }} /></h2>\n <p className='text-dark mb-3'>{getPhrase(descriptionPhrase)}</p>\n {!hideCta && (\n <AppLink\n className='btn btn-dark'\n appLink={{ application: AppChannels.SIGN_UP, action: ctaAction }}\n >\n {getPhrase(ctaPhrase)}\n </AppLink>\n )}\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nconst UP_ARROW = 38;\nconst DOWN_ARROW = 40;\n\n/**\n * When this hook is used on a page, it will prevent the page from being scrollable by using\n * the up/down arrow keys.\n * \n * This is helpful on pages with a video playing, as we want the up/down arrow keys to control the\n * player volume without scrolling.\n */\nexport const usePreventKeyboardScroll = () => {\n function preventDefaultForScrollKeys(e: KeyboardEvent): boolean {\n if (e.keyCode === UP_ARROW || e.keyCode === DOWN_ARROW) {\n e.preventDefault();\n return false;\n }\n }\n\n React.useEffect(() => {\n window.addEventListener('keydown', preventDefaultForScrollKeys, false);\n\n return () => {\n window.removeEventListener('keydown', preventDefaultForScrollKeys, false);\n };\n }, []);\n};\n","import { Flight } from 'libs/common/flight';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { CurrentUser, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { useVideoFeatureAccess } from './useVideoFeatureAccess';\n\n/**\n * Poor mans paging explination:\n * \n * This change was made while we were doing performance imrovements in Feb 2024.\n * Because the related videos endpoint does not have paging, we fetch 6 to display 5 videos\n * this will let us know if there is another page. When the user requests the next page\n * we just fetch 25 items.\n * \n * - sHa\n */\nconst RELATED_VIDEOS_FIRST_PAGE = 6;\nconst RELATED_VIDEOS_MAX = 25;\n\nexport interface RelatedVideosHash {\n videos: VideoTypes[];\n hasError: boolean;\n hasCompleted: boolean;\n isFetching: boolean;\n fetchNext: () => void;\n hasMore: boolean;\n}\n\ninterface RelatedVideoOptions {\n video: VideoTypes;\n currentUser: CurrentUser;\n context: RelatedVideosContext;\n contextId: string;\n moviesAndTv: boolean;\n}\n\nexport function useGetRelatedVideos(options: RelatedVideoOptions): RelatedVideosHash {\n const { video, currentUser, moviesAndTv, context, contextId } = options;\n\n const { canViewRelatedVideos } = useVideoFeatureAccess();\n\n const { hasProduct } = useProducts();\n\n const fetch = Flight.useGetFetch();\n\n function getRequest(limit: number): Flight.Request {\n if (!video || !currentUser?.isAuthenticated || !hasProduct(ProductId.Primary) || !canViewRelatedVideos)\n return null;\n\n /**\n * We are no longer fetching related videos unless we have a context\n */\n if (!context && !contextId)\n return null;\n\n return VideoRequests.relatedVideos({\n videoId: video.id,\n context,\n collectionId: contextId,\n moviesAndTv,\n limit\n });\n }\n\n function filterVideos(videos: VideoTypes[]): VideoTypes[] {\n if (!videos) // Might be undefined or null\n return videos;\n\n if (hasMore)\n videos = videos.slice(0, RELATED_VIDEOS_FIRST_PAGE - 1);\n\n return videos.filter(v => VideoHelper.getCanBeConsumed(v)?.canNavigate);\n }\n\n function fetchNext() {\n fetch(getRequest(RELATED_VIDEOS_MAX));\n }\n\n const response = Flight.useBasicFetch<VideoTypes[]>(getRequest(RELATED_VIDEOS_FIRST_PAGE));\n\n const hasMore = response.data?.length === RELATED_VIDEOS_FIRST_PAGE;\n\n return {\n videos: filterVideos(response.data),\n hasCompleted: response.hasCompleted,\n isFetching: response.isFetching,\n hasError: response.hasError,\n hasMore,\n fetchNext\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { PlayerMode } from 'libs/shared/context/player-context/interfaces/PlayerMode';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { ShareActivityStatus } from 'libs/shared/enums/ShareActivityStatus';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { FavouriteRequests } from 'libs/shared/flight-requests/FavouriteRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useActivityStatus } from 'libs/shared/hooks/UseActivityStatus';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config, CurrentUser, PlayerViewKey, ShareLink, UnionShareObject, VideoTypes } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePlayerIntegrations } from 'shared/hooks/usePlayerIntegrations';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nconst THUMBNAIL_SIZE = ImageSize.Medium;\n\nfunction createViewKeyRequest(\n objectId: string,\n shareId: string,\n shareLink: ShareLink\n): Flight.Request {\n if (!shareId)\n return PlayerRequests.createViewKey(objectId, MediaIdType.MasterObject);\n\n if (!shareLink)\n return null;\n\n /**\n * If our share link matches our object id it's just a video share\n */\n if (shareLink.objectId === objectId)\n return PlayerRequests.createViewKey(shareId, MediaIdType.Share);\n\n /**\n * Otherwise we're attempting to watch a video inside of a shared video collection (e.g. A shared playlist)\n */\n return PlayerRequests.createViewKey(objectId, MediaIdType.MasterObject, shareId);\n}\n\ninterface UseGetPlayerDataOptions {\n objectId: string;\n objectTypeId: MasterType;\n shareId: string;\n context: RelatedVideosContext;\n contextId: string;\n moviesAndTv: boolean;\n}\n\nexport function useGetPlayerData(options: UseGetPlayerDataOptions) {\n const { objectId, objectTypeId, shareId, context, contextId, moviesAndTv } = options;\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<VideoTypes>(\n objectId && VideoHelper.getVideoRequest(objectId, objectTypeId, shareId)\n );\n const shareLink = Flight.useBasicFetch<ShareLink>(shareId && ShareRequests.getShareObject(shareId));\n const canHavePointsOfInterest = objectTypeId === MasterType.Video || objectTypeId === MasterType.Clip;\n const pointsOfInterest = useFetchPointsOfInterest(canHavePointsOfInterest && objectId);\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(\n objectId && createViewKeyRequest(objectId, shareId, shareLink.data)\n );\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv,\n currentUser: currentUser.data\n });\n const playerIntegrations = usePlayerIntegrations(objectId);\n \n /**\n * Mix in if our video is favourited\n */\n Flight.useBasicFetch(\n objectId &&\n currentUser.data?.isAuthenticated &&\n FavouriteRequests.isFavourited(currentUser.data.id, [objectId])\n );\n\n const hasCompleted = (\n video.data &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!shareId || shareLink.hasCompleted) &&\n (objectTypeId !== MasterType.Video || pointsOfInterest.hasCompleted) &&\n viewKey.hasCompleted &&\n playerIntegrations.hasCompleted\n );\n\n return {\n hasCompleted,\n config: config.data,\n currentUser: currentUser.data,\n video: video.data,\n shareLink: shareLink.data,\n pointsOfInterest: pointsOfInterest?.items,\n viewKey: viewKey.data,\n relatedVideos: relatedVideos.videos,\n playerIntegrations: playerIntegrations.data\n };\n}\n\nexport function useSetFavourite(player: PlayerReference, video: VideoTypes) {\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.Player);\n const isFavourited = FavouriteHelper.isFavouritedByCurrentUser(video);\n const isArchived = VideoHelper.isVideoTypeArchived(video);\n\n React.useEffect(() => {\n if (!player || !video || !canFavourite(video) || isArchived)\n return;\n\n player.setFavourite?.(isFavourited, (setFav: boolean) => setFavourite(video, setFav));\n }, [ video, player, canFavourite, isArchived ]);\n}\n\nexport function useSetActivityStatus(\n player: PlayerReference,\n video: VideoTypes,\n shareLink: UnionShareObject\n) {\n // Disabling activity status for performance reasons (28/2/24) - Sha\n return;\n\n const setActivityStatus = useActivityStatus(LocationContext.FloatingPlayer);\n const { hasPermissions } = usePermissions();\n\n React.useEffect(() => {\n if (!player || !video || !shareLink)\n return;\n\n if (!hasPermissions(PermissionName.StudentExperience) || !('activityStatus' in shareLink))\n return;\n\n player.setActivityStatus?.(shareLink.activityStatus, () => {\n const newStatus = shareLink.activityStatus === ShareActivityStatus.Complete ?\n ShareActivityStatus.Incomplete :\n ShareActivityStatus.Complete;\n\n setActivityStatus(shareLink.id, video, newStatus);\n });\n }, [ player, video, shareLink ]);\n}\n\nexport function useCreateClip(\n playerRef: React.MutableRefObject<PlayerReference>,\n currentUser: CurrentUser,\n video: VideoTypes,\n embed: boolean,\n allowCreateClip: boolean\n) {\n const { hasProduct } = useProducts();\n const isArchived = VideoHelper.isVideoTypeArchived(video);\n\n const canCreateClip = (\n currentUser.isAuthenticated &&\n VideoHelper.isVideo(video) &&\n video._canCreateChild?.value &&\n hasProduct(ProductId.Primary) &&\n !embed &&\n allowCreateClip &&\n !isArchived\n ) ;\n\n if (!canCreateClip)\n return undefined;\n \n function onClickCreateClip(): void {\n if (!canCreateClip)\n return;\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.CLIPS,\n action: Actions.Clips.CREATE_CLIP,\n args: [video.id],\n params: {\n startTime: playerRef.current?.currentTime?.() ?? undefined\n }\n });\n }\n\n return onClickCreateClip;\n}\n\nexport function usePip(\n currentUser: CurrentUser,\n onRequestPictureInPicture: (isPip: boolean) => void\n) {\n const { hasProduct } = useProducts();\n\n return (\n currentUser.isAuthenticated &&\n hasProduct(ProductId.Primary) &&\n onRequestPictureInPicture\n );\n}\n\ninterface UseSetNextVideoOptions {\n player: PlayerReference;\n relatedVideos: VideoTypes[];\n shareId: string;\n context: RelatedVideosContext;\n contextId: string;\n moviesAndTv: boolean;\n playNext: boolean;\n mode: PlayerMode;\n isAuthenticated: boolean;\n presentationSlug: string | null;\n}\n\nexport function useSetNextVideo(options: UseSetNextVideoOptions): void {\n const {\n player,\n relatedVideos,\n shareId,\n context,\n contextId,\n moviesAndTv,\n playNext,\n mode,\n isAuthenticated,\n presentationSlug\n } = options;\n\n const first = relatedVideos?.[0];\n\n React.useEffect(() => {\n if (!player?.setNextVideo || !first)\n return;\n\n /**\n * We only want to go to the next video if the user is on a play page.\n */\n if (mode !== 'default') {\n player.setNextVideo?.(null, false, null);\n return;\n }\n\n const rawThumbanilUrl = VideoHelper.getThumbnail(first)?.url;\n const nextVideo = {\n name: first.name,\n thumbnailUrl: ImageHelper.createUrl(rawThumbanilUrl, { size: THUMBNAIL_SIZE })\n };\n\n player.setNextVideo?.(nextVideo, playNext, () => {\n Core.AppLinkHelper.trigger(VideoAppLinkHelper.getAppLink(first, {\n shareId,\n context,\n contextId,\n playNext,\n moviesAndTv,\n includeContext: isAuthenticated\n }, presentationSlug));\n });\n }, [\n player,\n first,\n shareId,\n context,\n contextId,\n playNext,\n mode\n ]);\n}\n","import React from 'react';\nimport { HtmlPortalNode } from 'react-reverse-portal';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { DefaultDisplayMode } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { PlayerMode } from 'libs/shared/context/player-context/interfaces/PlayerMode';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, PlayerIntegrations, PlayerViewKey, PointOfInterest, UnionShareObject, VideoTypes } from 'libs/shared/interfaces';\nimport { AuthToken } from 'libs/shared/interfaces/models/AuthToken';\nimport { PlayerAnalyticsTracker } from 'libs/shared/utils/PlayerAnalyticsTracker';\nimport { ShareHelper } from 'libs/shared/utils/ShareHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport type { PlayerOptions } from 'projects/player/players/player';\nimport type { ExternalLinkOptions } from 'projects/player/plugins/open-externally-plugin/interfaces/ExternalLinkOptions';\n\nimport { getEndTime, getStartTime } from 'shared/components/play-page/PlayPageUtils';\nimport { StreamLimitOverlay } from 'shared/components/stream-limit-overlay/StreamLimitOverlay';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePreventKeyboardScroll } from 'shared/hooks/usePreventKeyboardScroll';\nimport { useStreamQuota } from 'shared/hooks/useStreamQuota';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { useCreateClip, usePip, useSetActivityStatus, useSetFavourite, useSetNextVideo } from 'shared/views/lite-player/LitePlayerViewHooks';\n\nimport styles from './lite-player.module.scss';\n\nfunction shouldCollectResults(props: LitePlayerViewProps): boolean {\n if (!props.shareLink)\n return false;\n\n if (props.currentUser.isAuthenticated)\n return true;\n\n return !!props.collectAnonResults;\n}\n\nfunction getExternalLink(\n video: VideoTypes,\n shareLink: UnionShareObject,\n options: ExternalLinkOptions,\n isAuthenticated: boolean,\n presentationSlug: string | null\n): string {\n if (shareLink) {\n return Core.AppLinkHelper.getHref({\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [shareLink.id],\n params: {\n t: options.currentTime,\n a: true\n }\n });\n }\n\n const appLink = VideoAppLinkHelper.getAppLink(video, { includeContext: isAuthenticated }, presentationSlug);\n if (!appLink.params)\n appLink.params = {};\n\n (appLink.params as HashObject).t = options.currentTime;\n (appLink.params as HashObject).a = true;\n return Core.AppLinkHelper.getHref(appLink);\n}\n\nexport interface LitePlayerViewProps {\n // Core data\n config: Config;\n token?: AuthToken;\n video: VideoTypes;\n currentUser: CurrentUser;\n shareLink?: UnionShareObject;\n pointsOfInterest?: PointOfInterest[];\n viewKey: PlayerViewKey;\n relatedVideos?: VideoTypes[];\n presentationSlug: string | null;\n\n // Hook options\n context?: RelatedVideosContext;\n contextId?: string;\n moviesAndTv?: boolean;\n playNext?: boolean;\n mode?: PlayerMode;\n defaultDisplayMode?: DefaultDisplayMode;\n\n allowCreateClip?: boolean;\n allowTheatreMode?: boolean;\n allowTranscript?: boolean;\n\n // Passthrough options\n autoplay?: boolean;\n startTime?: string;\n endTime?: string;\n embed?: boolean;\n showResources?: boolean;\n muted?: boolean;\n\n // Interactive\n summaryPortalNode?: HtmlPortalNode;\n questionListPortalNode?: HtmlPortalNode;\n onShowSummary?: (showing: boolean) => void;\n collectAnonResults?: boolean;\n\n // Devices\n playerIntegrations?: PlayerIntegrations;\n\n onReady?: (player: PlayerReference) => void;\n onRequestPictureInPicture?: (isPip: boolean) => void;\n onRequestTheatreMode?: (isTheatreMode: boolean) => void;\n}\n\n/**\n * Consumers of this view need to opt out of these features.\n */\nLitePlayerView.defaultProps = {\n allowCreateClip: true\n};\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function LitePlayerView(props: LitePlayerViewProps): JSX.Element {\n const playerRef = React.useRef<PlayerReference>(null);\n const analyticsTracker = React.useRef<PlayerAnalyticsTracker>(null);\n\n useSetFavourite(playerRef.current, props.video);\n useSetActivityStatus(playerRef.current, props.video, props.shareLink);\n useSetNextVideo({\n player: playerRef.current,\n relatedVideos: props.relatedVideos,\n shareId: props.shareLink?.id,\n context: props.context,\n contextId: props.contextId,\n moviesAndTv: props.moviesAndTv,\n playNext: props.playNext,\n mode: props.mode,\n isAuthenticated: props.currentUser?.isAuthenticated,\n presentationSlug: props.presentationSlug\n });\n usePreventKeyboardScroll();\n \n const allowPip = usePip(props.currentUser, props.onRequestPictureInPicture);\n\n const { experimentalInteractiveQuestions } = useSettings(null);\n const {\n isLoaded: streamQuotaLoaded,\n hasReachedStreamLimit,\n canRedeemMoreReferrals,\n totalStreamsAvailable\n } = useStreamQuota();\n\n const { hasPermissions } = usePermissions();\n\n const isGuest = hasPermissions(PermissionName.GuestExperience);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n const onClickCreateClip = useCreateClip(\n playerRef,\n props.currentUser,\n props.video,\n props.embed,\n isGuest ? false : props.allowCreateClip\n );\n\n const forceUpdate = useForceUpdate();\n\n function onReady(player: PlayerReference): void {\n playerRef.current = player;\n forceUpdate();\n props.onReady && props.onReady(player);\n setupAnalytics(player);\n }\n\n function setupAnalytics(player: PlayerReference): void {\n analyticsTracker.current = new PlayerAnalyticsTracker({\n player,\n video: props.video,\n analyticsLocation: props.embed ?\n LocationContext.EmbeddedPlayer :\n LocationContext.PlayPage,\n shareId: props.shareLink?.id\n });\n }\n\n let posterUrl = '';\n if ('thumbnail' in props.video)\n posterUrl = props.video.thumbnail?.url;\n if (!posterUrl && '_parentVideo' in props.video)\n posterUrl = props.video._parentVideo?.thumbnail?.url;\n\n const commonProps: PlayerOptions = {\n // Fetched\n viewKey: props.viewKey.viewKey,\n playerApi: new URL(props.config.playerApiUrl),\n imageCdnUrl: props.config.imageCdnUrl,\n\n // Options\n autoplay: props.autoplay,\n startTime: getStartTime(props.startTime, props.video),\n endTime: getEndTime(props.endTime),\n embed: props.embed,\n showResources: props.showResources,\n getExternalLink: props.embed &&\n (options => getExternalLink(\n props.video,\n props.shareLink,\n options,\n props.currentUser?.isAuthenticated,\n props.presentationSlug\n )),\n muted: props.muted,\n splash: props.embed ? {\n title: props.video.name,\n posterUrl,\n ratingCode: VideoHelper.getRating(props.video)?.code,\n ratingValue: VideoHelper.getRating(props.video)?.value,\n seriesName: 'series' in props.video && props.video.series?.name,\n seasonNumber: 'season' in props.video && props.video.season?.number,\n episodeNumber: 'episodeNumber' in props.video && props.video.episodeNumber\n } : undefined,\n // todo remove this once we ship theatre mode for everyone\n allowTheatreMode: props.allowTheatreMode,\n allowLoop: true,\n\n // Static\n hotkeyElQuerySelector: 'body',\n sharerInstanceRegion: props.shareLink?.ownerInstanceRegion\n };\n\n const devicesConfig = props.playerIntegrations ? {\n ...props.playerIntegrations,\n trackingCode: VideoHelper.getTrackingCode(props.video)\n } : undefined;\n\n const isTheatreMode = props.mode === 'default' && props.defaultDisplayMode === 'theatre';\n const isHoverMode = props.mode === 'hover';\n const isInteractive = props.video.typeId === MasterType.Interactive;\n const isPublicShare = ShareHelper.isPublic(props.shareLink);\n const showStreamLimitOverlay = streamQuotaLoaded && hasReachedStreamLimit && !isHoverMode && !isPublicShare;\n\n /**\n * We memoize two React.lazy components (interactive and standard) to avoid Suspense flicker on re-renders.\n * Hooks can't be conditional, so both lazies are created once and we choose which to render at runtime.\n * With default exports, React.lazy infers props, so no casting is required. - Sha\n */\n const InteractivePlayer = React.useMemo(() => React.lazy(() => import('projects/player/react/InteractivePlayer')), []);\n const Player = React.useMemo(() => React.lazy(() => import('projects/player/react/Player')), []);\n \n if (showStreamLimitOverlay) {\n return (\n <StreamLimitOverlay\n posterUrl={posterUrl}\n embed={props.embed}\n hasStudentExperience={hasStudentExperience}\n canRedeemMoreReferrals={canRedeemMoreReferrals}\n totalStreamsAvailable={totalStreamsAvailable}\n />\n );\n }\n\n if (isInteractive) {\n return (\n <React.Suspense fallback={<div className={styles.placeholder} />}>\n <InteractivePlayer\n {...commonProps}\n imageApi={new URL(props.config.imageCdnUrl)}\n currentUser={props.currentUser}\n collectResults={shouldCollectResults(props)}\n shareId={props.shareLink?.id}\n enableImmersiveReader\n summaryPortalNode={props.summaryPortalNode}\n onShowSummary={props.onShowSummary}\n onReady={onReady}\n className={props.embed ? styles.embeddedPlayer : ''}\n furthestVisitedTime={props.video._videoProgress?.furthest}\n questionListPortalNode={props.questionListPortalNode}\n authToken={props.token?.value}\n experimentalInteractiveQuestions={experimentalInteractiveQuestions}\n />\n </React.Suspense>\n );\n }\n\n function getClassName(): string {\n if (props.embed) {\n return styles.embeddedPlayer;\n }\n if (isTheatreMode)\n return 'w-100 h-100';\n return '';\n }\n\n return (\n <React.Suspense fallback={<div className={`${styles.placeholder} ${isTheatreMode ? styles.theatreMode : ''}`} />}>\n <Player\n {...commonProps}\n devicesConfig={devicesConfig}\n className={getClassName()}\n onClickCreateClip={onClickCreateClip}\n pointsOfInterest={props.pointsOfInterest}\n onReady={onReady}\n showResources={props.embed}\n onRequestPictureInPicture={allowPip && props.onRequestPictureInPicture}\n onRequestTheatreMode={props.onRequestTheatreMode}\n theatreMode={isTheatreMode}\n nextDefaultDisplayMode={props.defaultDisplayMode}\n allowTranscript={props.allowTranscript}\n />\n </React.Suspense>\n );\n}\n"],"file":"BxjzTnvL2.chunk.js"}
|
|
1
|
+
{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../src/shared/hooks/useFetchPointsOfInterest.ts","../../src/shared/hooks/usePlayerIntegrations.ts","../../src/shared/constants/LiteConstants.ts","../../src/shared/components/play-page/PlayPageUtils.ts","../../src/shared/components/stream-limit-overlay/StreamLimitOverlay.tsx","../../src/shared/hooks/usePreventKeyboardScroll.ts","../../src/shared/hooks/useGetRelatedVideos.ts","../../src/shared/views/lite-player/LitePlayerViewHooks.tsx","../../src/shared/views/lite-player/LitePlayerView.tsx"],"sourcesContent":["import { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { EmptySelectAllPagesResult, SelectAllPagesResult, useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\nimport { CurrentUser, PointOfInterest } from 'libs/shared/interfaces';\n\nexport function useFetchPointsOfInterest(\n videoId?: string,\n forceFetch?: boolean\n): SelectAllPagesResult<PointOfInterest> {\n const fetch = Flight.useGetFetch();\n const { hasPermissions } = usePermissions();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const shouldFetch = (currentUser.data?.isAuthenticated || forceFetch) &&\n hasPermissions(PermissionName.ViewVideoPointsOfInterest);\n\n function getRequest(cursor?: string): Flight.Request {\n return VideoRequests.pointsOfInterest(videoId, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetch(getRequest(cursor));\n }\n\n /**\n * This is a big strange, but since we can't conditionally use hooks, instead\n * we null out the videoId so the points of interest never fetch for students.\n */\n if (!shouldFetch)\n videoId = null;\n\n useFetchAll(!!videoId && getRequest, !!videoId && fetchNext);\n\n const result = useSelectAllPages<PointOfInterest>(!!videoId && ((cursor?: string) => getRequest(cursor).key));\n\n /**\n * Then we return a placeholder object that lets anything consuming this behave as if\n * the Points of interest have fetched and there are one.\n */\n if (!shouldFetch)\n return EmptySelectAllPagesResult;\n\n return result;\n}\n","import { LocationUtils } from 'libs/common/backbone/core';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, DevicesDescriptor, EntityType, EventVersion, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { IntegrationStatus } from 'libs/shared/enums/IntegrationStatus';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerIntegrationsRequests } from 'libs/shared/flight-requests/PlayerIntegrationsRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { HasPermissionsFunc, usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser } from 'libs/shared/interfaces';\nimport { CtaContext, PlayerIntegrations } from 'libs/shared/interfaces';\nimport { AppleTvAccessToken, ViviAccessToken } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\ninterface PlayerIntegrationsHash {\n hasCompleted: boolean;\n data: PlayerIntegrations;\n}\n\nexport function usePlayerIntegrations(objectId: string): PlayerIntegrationsHash {\n const {\n hasEnabledViviPlayback,\n hasEnabledAppleTvPlayback,\n hasEnabledViviStudentCasting,\n isLoadingSettings\n } = useSettings(null);\n const { hasProduct, isLoadingProducts } = useProducts();\n const { hasPermissions, isLoaded: permissionsLoaded } = usePermissions();\n const { fetchViviAccessToken, fetchAppleTvAccessToken } = useAccessTokenFetchFunctions();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const ctaOptions = useCtaOptions(hasPermissions);\n\n // Compute derived state\n const isAuthenticated = currentUser.data?.isAuthenticated ?? false;\n const isNotStudent = !hasPermissions(PermissionName.StudentExperience);\n const isNotGuest = !hasPermissions(PermissionName.GuestExperience);\n const hasPrimaryProduct = hasProduct(ProductId.Primary);\n const canUserCastToVivi = isAuthenticated\n && hasPrimaryProduct && (isNotStudent || hasEnabledViviStudentCasting) && isNotGuest;\n const canUserCastToAppleTv = isAuthenticated && hasPrimaryProduct && isNotStudent && isNotGuest;\n const shouldCheckViviStatus = canUserCastToVivi && hasEnabledViviPlayback;\n \n // Fetch the status of the Vivi integration if necessary\n const viviStatus = Flight.useBasicFetch<IntegrationStatus>(\n objectId &&\n shouldCheckViviStatus &&\n PlayerIntegrationsRequests.getViviIntegrationStatus()\n );\n const viviAccountConnected = viviStatus.data === IntegrationStatus.Connected;\n const viviStatusCheckCompleted = shouldCheckViviStatus ? viviStatus.hasCompleted : true;\n\n // Compute the final `hasCompleted` value\n const hasCompleted = isAuthenticated ? (\n currentUser.hasCompleted &&\n config.hasCompleted &&\n viviStatusCheckCompleted &&\n permissionsLoaded &&\n !isLoadingSettings &&\n !isLoadingProducts\n ) : true;\n \n return {\n hasCompleted,\n data: {\n ctaOptions,\n canUserCastToDevices: canUserCastToVivi || canUserCastToAppleTv,\n vivi: {\n accountConnected: viviAccountConnected,\n enabled: canUserCastToVivi && hasEnabledViviPlayback,\n apiUrl: config.data?.viviApiUrl ?? '',\n fetchAccessToken: fetchViviAccessToken\n },\n appleTv: {\n enabled: canUserCastToAppleTv && hasEnabledAppleTvPlayback,\n fetchAccessToken: fetchAppleTvAccessToken\n }\n }\n };\n}\n\nfunction useAccessTokenFetchFunctions() {\n const fetchAsync = Flight.useGetFetchAsync();\n const getResponse = Flight.useGetResponseFunc();\n\n const fetchViviAccessToken = async () => {\n const request = PlayerIntegrationsRequests.getViviAccessToken();\n const tokenResponse = getResponse<ViviAccessToken>(request.key);\n const { token } = tokenResponse.shouldFetch ?\n await fetchAsync<ViviAccessToken>(request) :\n tokenResponse.data;\n \n return token;\n };\n\n const fetchAppleTvAccessToken = () => {\n return fetchAsync<AppleTvAccessToken>(\n PlayerIntegrationsRequests.getAppleTvAccessToken()\n );\n };\n\n return {\n fetchViviAccessToken,\n fetchAppleTvAccessToken\n };\n}\n\nconst VIVI_LEARN_MORE_URL = 'https://clickv.ie/w/WVsx';\nconst APPLE_TV_LEARN_MORE_URL = 'https://clickv.ie/w/PVsx';\n\nfunction useCtaOptions(hasPermissions: HasPermissionsFunc) {\n const [ dismissedModel, setDismissedModel ] = useViewModel<{ dismissed: boolean }>(\n 'devices:cta:dismissed',\n { dismissed: false },\n { storage: StorageType.LocalStorage }\n );\n const isStudent = hasPermissions(PermissionName.StudentExperience);\n const canUserManageIntegrations = hasPermissions(PermissionName.ManageIntegrations);\n const analyticsOptions: Partial<AnalyticsOptions> = {\n entity: EntityType.DevicesCta,\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Complete,\n location: LocationContext.Player\n };\n\n const onDismiss = (context: CtaContext) => {\n AnalyticsHelper.logUserAction({\n canUserManageIntegrations,\n context\n }, {\n ...analyticsOptions,\n descriptor: DevicesDescriptor.Dismiss,\n eventVersion: EventVersion.V1\n });\n\n setDismissedModel({ dismissed: true });\n };\n\n const onInstall = (context: CtaContext) => {\n AnalyticsHelper.logUserAction({\n canUserManageIntegrations,\n context\n }, {\n ...analyticsOptions,\n descriptor: DevicesDescriptor.InstallIntegration,\n eventVersion: EventVersion.V1\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.INTEGRATIONS\n });\n };\n\n const onLearnMore = (context: CtaContext) => {\n AnalyticsHelper.logUserAction({\n canUserManageIntegrations,\n context\n }, {\n ...analyticsOptions,\n descriptor: DevicesDescriptor.LearnMore,\n eventVersion: EventVersion.V1\n });\n\n if (context === 'vivi_and_apple_tv' || context === 'vivi')\n LocationUtils.PageLoad(VIVI_LEARN_MORE_URL, true);\n\n if (context === 'vivi_and_apple_tv' || context === 'apple_tv')\n LocationUtils.PageLoad(APPLE_TV_LEARN_MORE_URL, true);\n };\n\n const onContactSupport = (context: CtaContext) => {\n AnalyticsHelper.logUserAction({\n canUserManageIntegrations,\n context\n }, {\n ...analyticsOptions,\n descriptor: DevicesDescriptor.ContactSupport,\n eventVersion: EventVersion.V1\n });\n\n LocationUtils.PageLoad(ArticleHelper.getSupportRequestUrl(), true);\n };\n\n return {\n hasBeenDismissed: dismissedModel.dismissed || isStudent,\n canUserManageIntegrations,\n onDismiss,\n onInstall,\n onLearnMore,\n onContactSupport\n };\n}\n","// Misc constants\nexport const LiteConstants = {\n VIDEO_START_TIME_CUTOFF: 10, // If the video start time is in the last 10 seconds of the video duration, it's ignored\n PUBLIC_SEARCH_QUERY_DEBOUNCE: 400,\n AUTHENTICATED_SEARCH_QUERY_DEBOUNCE: 200\n};\n","import { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { Category, Company, Library, Link, PartnerProfile, Person, Resource, Series, Tag, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { LiteConstants } from 'shared/constants/LiteConstants';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ContentPartnerAppLinkHelper } from 'shared/utils/ContentPartnerAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nexport const getLibraryAppLink = (library: Library): Core.AppLink => {\n return {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.LIBRARY,\n args: [ library.id.toString(), TextHelper.slugify(library.name) ]\n };\n};\n\nexport const getFolderAppLink = (library: Library, folder: Category): Core.AppLink => {\n return {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.FOLDER,\n args: [ library.id.toString(), folder.id.toString(), TextHelper.slugify(folder.name) ]\n };\n};\n\ninterface GetAppLinksOptions {\n settings: SettingsHash;\n presentationSlug: string | null;\n}\n\nexport function getAppLinks(options: GetAppLinksOptions) {\n const { settings, presentationSlug } = options;\n\n const getTagAppLink = (tag: Tag) => {\n return {\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n };\n };\n\n const getSeriesAppLink = (series: Series, moviesAndTv: boolean): Core.AppLink => {\n return SeriesAppLinkHelper.getSeriesAppLink(series, moviesAndTv ? { mtv: true } : {}, presentationSlug);\n };\n\n const getResourceAppLink = (videoId: string, shareId: string, canViewResource: boolean) =>\n (resource: Resource | Link) => {\n /**\n * We check both the feature access value and the shareId. \n * Resources should always be available if we have a share id, and the backend should control\n * which specific resources are returned - Sha\n */\n if (!canViewResource && !shareId) {\n return {\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n };\n }\n\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PREVIEW_PDF,\n args: [resource.id],\n params: {\n videoId: videoId,\n shareId: shareId\n }\n };\n };\n\n const getPartnerProfileAppLink = (partnerProfile: PartnerProfile) => {\n return ContentPartnerAppLinkHelper.getPartnerDashboardAppLink(partnerProfile);\n };\n\n const getPartnerDashboardHubAppLink = (company: Company | Person) => {\n return ContentPartnerAppLinkHelper.getPartnerDashboardHubAppLink(company);\n };\n\n return {\n getTagAppLink,\n getSeriesAppLink,\n getResourceAppLink,\n getPartnerProfileAppLink: settings?.hasPartnerProfiles ? getPartnerProfileAppLink : null,\n getPartnerDashboardHubAppLink: settings?.hasPartnerProfiles ? getPartnerDashboardHubAppLink : null,\n getLibraryAppLink,\n getFolderAppLink\n };\n}\n\nexport function getStartTime(startTimeParam: string | number, video: Video): number {\n const startTime = Number(startTimeParam);\n\n if (!isNaN(startTime) && startTime >= 0)\n return startTime;\n\n const lastProgressPoint = VideoHelper.getVideoProgress(video);\n\n if (!lastProgressPoint)\n return 0;\n\n if (lastProgressPoint >= (video.duration / 1000 - LiteConstants.VIDEO_START_TIME_CUTOFF))\n return 0;\n\n return lastProgressPoint;\n}\n\nexport function getEndTime(endTimeParam: string | number): number | undefined {\n if (Number.isInteger(+endTimeParam))\n return +endTimeParam;\n\n return undefined;\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { EmbedPlaceHolderHelper } from 'apps/embed/utils/EmbedPlaceholderHelper';\n\nimport styles from './stream-limit-overlay.module.scss';\n\nconst namespace = 'shared.streamLimitOverlay';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StreamLimitOverlayProps {\n posterUrl: string;\n embed: boolean;\n hasStudentExperience: boolean;\n canRedeemMoreReferrals: boolean;\n totalStreamsAvailable: number;\n}\n\nexport function StreamLimitOverlay(props: StreamLimitOverlayProps): JSX.Element {\n const ctaAction = props.canRedeemMoreReferrals ?\n Actions.SignUp.INVITE_COLLEAGUE :\n Actions.SignUp.UPGRADE;\n\n const ctaPhrase = props.canRedeemMoreReferrals ? 'inviteCta' : 'upgradeCta';\n const hideCta = props.embed || props.hasStudentExperience;\n\n let descriptionPhrase: string;\n\n if (hideCta)\n descriptionPhrase = 'basicDescription';\n else if (props.canRedeemMoreReferrals)\n descriptionPhrase = 'referralDescription';\n else\n descriptionPhrase = 'upgradeDescription';\n\n /**\n * Embeds render a server-side splash screen (#embed-placeholder) that covers\n * the React app until the player fires 'cv-playback-data-loaded'. Since the\n * overlay replaces the player, that event never fires — so we need to \n * remove it manually.\n */\n React.useEffect(() => {\n if (props.embed)\n EmbedPlaceHolderHelper.remove();\n }, [props.embed]);\n\n return (\n <div className={`position-relative bg-light overflow-hidden ${props.embed ? 'position-fixed top-0 start-0 end-0 bottom-0' : 'ratio ratio-16x9'}`}>\n {props.posterUrl && (\n <img className={`position-absolute top-0 start-0 w-100 h-100 object-fit-cover ${styles.poster}`} src={props.posterUrl} alt='' />\n )}\n <div className={`position-absolute top-0 start-0 w-100 h-100 ${styles.frost}`} />\n <div className='position-absolute top-0 start-0 w-100 h-100 d-flex flex-column align-items-center justify-content-center text-center p-4'>\n <img\n className={`${styles.image} d-none d-md-block mb-3`}\n src={ImageUrls.SignUp.INVITE_COLLEAGUE}\n alt={getPhrase('heading')}\n />\n <h2 className='h5 mb-2'><Text namespace={namespace} phrase='heading' options={{ smartCount: props.totalStreamsAvailable }} /></h2>\n <p className='text-dark mb-3'>{getPhrase(descriptionPhrase)}</p>\n {!hideCta && (\n <AppLink\n className='btn btn-dark'\n appLink={{ application: AppChannels.SIGN_UP, action: ctaAction }}\n >\n {getPhrase(ctaPhrase)}\n </AppLink>\n )}\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nconst UP_ARROW = 38;\nconst DOWN_ARROW = 40;\n\n/**\n * When this hook is used on a page, it will prevent the page from being scrollable by using\n * the up/down arrow keys.\n * \n * This is helpful on pages with a video playing, as we want the up/down arrow keys to control the\n * player volume without scrolling.\n */\nexport const usePreventKeyboardScroll = () => {\n function preventDefaultForScrollKeys(e: KeyboardEvent): boolean {\n if (e.keyCode === UP_ARROW || e.keyCode === DOWN_ARROW) {\n e.preventDefault();\n return false;\n }\n }\n\n React.useEffect(() => {\n window.addEventListener('keydown', preventDefaultForScrollKeys, false);\n\n return () => {\n window.removeEventListener('keydown', preventDefaultForScrollKeys, false);\n };\n }, []);\n};\n","import { Flight } from 'libs/common/flight';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { CurrentUser, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { useVideoFeatureAccess } from './useVideoFeatureAccess';\n\n/**\n * Poor mans paging explination:\n * \n * This change was made while we were doing performance imrovements in Feb 2024.\n * Because the related videos endpoint does not have paging, we fetch 6 to display 5 videos\n * this will let us know if there is another page. When the user requests the next page\n * we just fetch 25 items.\n * \n * - sHa\n */\nconst RELATED_VIDEOS_FIRST_PAGE = 6;\nconst RELATED_VIDEOS_MAX = 25;\n\nexport interface RelatedVideosHash {\n videos: VideoTypes[];\n hasError: boolean;\n hasCompleted: boolean;\n isFetching: boolean;\n fetchNext: () => void;\n hasMore: boolean;\n}\n\ninterface RelatedVideoOptions {\n video: VideoTypes;\n currentUser: CurrentUser;\n context: RelatedVideosContext;\n contextId: string;\n moviesAndTv: boolean;\n}\n\nexport function useGetRelatedVideos(options: RelatedVideoOptions): RelatedVideosHash {\n const { video, currentUser, moviesAndTv, context, contextId } = options;\n\n const { canViewRelatedVideos } = useVideoFeatureAccess();\n\n const { hasProduct } = useProducts();\n\n const fetch = Flight.useGetFetch();\n\n function getRequest(limit: number): Flight.Request {\n if (!video || !currentUser?.isAuthenticated || !hasProduct(ProductId.Primary) || !canViewRelatedVideos)\n return null;\n\n /**\n * We are no longer fetching related videos unless we have a context\n */\n if (!context && !contextId)\n return null;\n\n return VideoRequests.relatedVideos({\n videoId: video.id,\n context,\n collectionId: contextId,\n moviesAndTv,\n limit\n });\n }\n\n function filterVideos(videos: VideoTypes[]): VideoTypes[] {\n if (!videos) // Might be undefined or null\n return videos;\n\n if (hasMore)\n videos = videos.slice(0, RELATED_VIDEOS_FIRST_PAGE - 1);\n\n return videos.filter(v => VideoHelper.getCanBeConsumed(v)?.canNavigate);\n }\n\n function fetchNext() {\n fetch(getRequest(RELATED_VIDEOS_MAX));\n }\n\n const response = Flight.useBasicFetch<VideoTypes[]>(getRequest(RELATED_VIDEOS_FIRST_PAGE));\n\n const hasMore = response.data?.length === RELATED_VIDEOS_FIRST_PAGE;\n\n return {\n videos: filterVideos(response.data),\n hasCompleted: response.hasCompleted,\n isFetching: response.isFetching,\n hasError: response.hasError,\n hasMore,\n fetchNext\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { PlayerMode } from 'libs/shared/context/player-context/interfaces/PlayerMode';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { ShareActivityStatus } from 'libs/shared/enums/ShareActivityStatus';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { FavouriteRequests } from 'libs/shared/flight-requests/FavouriteRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useActivityStatus } from 'libs/shared/hooks/UseActivityStatus';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config, CurrentUser, PlayerViewKey, ShareLink, UnionShareObject, VideoTypes } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePlayerIntegrations } from 'shared/hooks/usePlayerIntegrations';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nconst THUMBNAIL_SIZE = ImageSize.Medium;\n\nfunction createViewKeyRequest(\n objectId: string,\n shareId: string,\n shareLink: ShareLink\n): Flight.Request {\n if (!shareId)\n return PlayerRequests.createViewKey(objectId, MediaIdType.MasterObject);\n\n if (!shareLink)\n return null;\n\n /**\n * If our share link matches our object id it's just a video share\n */\n if (shareLink.objectId === objectId)\n return PlayerRequests.createViewKey(shareId, MediaIdType.Share);\n\n /**\n * Otherwise we're attempting to watch a video inside of a shared video collection (e.g. A shared playlist)\n */\n return PlayerRequests.createViewKey(objectId, MediaIdType.MasterObject, shareId);\n}\n\ninterface UseGetPlayerDataOptions {\n objectId: string;\n objectTypeId: MasterType;\n shareId: string;\n context: RelatedVideosContext;\n contextId: string;\n moviesAndTv: boolean;\n}\n\nexport function useGetPlayerData(options: UseGetPlayerDataOptions) {\n const { objectId, objectTypeId, shareId, context, contextId, moviesAndTv } = options;\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<VideoTypes>(\n objectId && VideoHelper.getVideoRequest(objectId, objectTypeId, shareId)\n );\n const shareLink = Flight.useBasicFetch<ShareLink>(shareId && ShareRequests.getShareObject(shareId));\n const canHavePointsOfInterest = objectTypeId === MasterType.Video || objectTypeId === MasterType.Clip;\n const pointsOfInterest = useFetchPointsOfInterest(canHavePointsOfInterest && objectId);\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(\n objectId && createViewKeyRequest(objectId, shareId, shareLink.data)\n );\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv,\n currentUser: currentUser.data\n });\n const playerIntegrations = usePlayerIntegrations(objectId);\n \n /**\n * Mix in if our video is favourited\n */\n Flight.useBasicFetch(\n objectId &&\n currentUser.data?.isAuthenticated &&\n FavouriteRequests.isFavourited(currentUser.data.id, [objectId])\n );\n\n const hasCompleted = (\n video.data &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!shareId || shareLink.hasCompleted) &&\n (objectTypeId !== MasterType.Video || pointsOfInterest.hasCompleted) &&\n viewKey.hasCompleted &&\n playerIntegrations.hasCompleted\n );\n\n return {\n hasCompleted,\n config: config.data,\n currentUser: currentUser.data,\n video: video.data,\n shareLink: shareLink.data,\n pointsOfInterest: pointsOfInterest?.items,\n viewKey: viewKey.data,\n relatedVideos: relatedVideos.videos,\n playerIntegrations: playerIntegrations.data\n };\n}\n\nexport function useSetFavourite(player: PlayerReference, video: VideoTypes) {\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.Player);\n const isFavourited = FavouriteHelper.isFavouritedByCurrentUser(video);\n const isArchived = VideoHelper.isVideoTypeArchived(video);\n\n React.useEffect(() => {\n if (!player || !video || !canFavourite(video) || isArchived)\n return;\n\n player.setFavourite?.(isFavourited, (setFav: boolean) => setFavourite(video, setFav));\n }, [ video, player, canFavourite, isArchived ]);\n}\n\nexport function useSetActivityStatus(\n player: PlayerReference,\n video: VideoTypes,\n shareLink: UnionShareObject\n) {\n // Disabling activity status for performance reasons (28/2/24) - Sha\n return;\n\n const setActivityStatus = useActivityStatus(LocationContext.FloatingPlayer);\n const { hasPermissions } = usePermissions();\n\n React.useEffect(() => {\n if (!player || !video || !shareLink)\n return;\n\n if (!hasPermissions(PermissionName.StudentExperience) || !('activityStatus' in shareLink))\n return;\n\n player.setActivityStatus?.(shareLink.activityStatus, () => {\n const newStatus = shareLink.activityStatus === ShareActivityStatus.Complete ?\n ShareActivityStatus.Incomplete :\n ShareActivityStatus.Complete;\n\n setActivityStatus(shareLink.id, video, newStatus);\n });\n }, [ player, video, shareLink ]);\n}\n\nexport function useCreateClip(\n playerRef: React.MutableRefObject<PlayerReference>,\n currentUser: CurrentUser,\n video: VideoTypes,\n embed: boolean,\n allowCreateClip: boolean\n) {\n const { hasProduct } = useProducts();\n const isArchived = VideoHelper.isVideoTypeArchived(video);\n\n const canCreateClip = (\n currentUser.isAuthenticated &&\n VideoHelper.isVideo(video) &&\n video._canCreateChild?.value &&\n hasProduct(ProductId.Primary) &&\n !embed &&\n allowCreateClip &&\n !isArchived\n ) ;\n\n if (!canCreateClip)\n return undefined;\n \n function onClickCreateClip(): void {\n if (!canCreateClip)\n return;\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.CLIPS,\n action: Actions.Clips.CREATE_CLIP,\n args: [video.id],\n params: {\n startTime: playerRef.current?.currentTime?.() ?? undefined\n }\n });\n }\n\n return onClickCreateClip;\n}\n\nexport function usePip(\n currentUser: CurrentUser,\n onRequestPictureInPicture: (isPip: boolean) => void\n) {\n const { hasProduct } = useProducts();\n\n return (\n currentUser.isAuthenticated &&\n hasProduct(ProductId.Primary) &&\n onRequestPictureInPicture\n );\n}\n\ninterface UseSetNextVideoOptions {\n player: PlayerReference;\n relatedVideos: VideoTypes[];\n shareId: string;\n context: RelatedVideosContext;\n contextId: string;\n moviesAndTv: boolean;\n playNext: boolean;\n mode: PlayerMode;\n isAuthenticated: boolean;\n presentationSlug: string | null;\n}\n\nexport function useSetNextVideo(options: UseSetNextVideoOptions): void {\n const {\n player,\n relatedVideos,\n shareId,\n context,\n contextId,\n moviesAndTv,\n playNext,\n mode,\n isAuthenticated,\n presentationSlug\n } = options;\n\n const first = relatedVideos?.[0];\n\n React.useEffect(() => {\n if (!player?.setNextVideo || !first)\n return;\n\n /**\n * We only want to go to the next video if the user is on a play page.\n */\n if (mode !== 'default') {\n player.setNextVideo?.(null, false, null);\n return;\n }\n\n const rawThumbanilUrl = VideoHelper.getThumbnail(first)?.url;\n const nextVideo = {\n name: first.name,\n thumbnailUrl: ImageHelper.createUrl(rawThumbanilUrl, { size: THUMBNAIL_SIZE })\n };\n\n player.setNextVideo?.(nextVideo, playNext, () => {\n Core.AppLinkHelper.trigger(VideoAppLinkHelper.getAppLink(first, {\n shareId,\n context,\n contextId,\n playNext,\n moviesAndTv,\n includeContext: isAuthenticated\n }, presentationSlug));\n });\n }, [\n player,\n first,\n shareId,\n context,\n contextId,\n playNext,\n mode\n ]);\n}\n","import React from 'react';\nimport { HtmlPortalNode } from 'react-reverse-portal';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { DefaultDisplayMode } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { PlayerMode } from 'libs/shared/context/player-context/interfaces/PlayerMode';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, PlayerIntegrations, PlayerViewKey, PointOfInterest, UnionShareObject, VideoTypes } from 'libs/shared/interfaces';\nimport { AuthToken } from 'libs/shared/interfaces/models/AuthToken';\nimport { PlayerAnalyticsTracker } from 'libs/shared/utils/PlayerAnalyticsTracker';\nimport { ShareHelper } from 'libs/shared/utils/ShareHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport type { PlayerOptions } from 'projects/player/players/player';\nimport type { ExternalLinkOptions } from 'projects/player/plugins/open-externally-plugin/interfaces/ExternalLinkOptions';\n\nimport { getEndTime, getStartTime } from 'shared/components/play-page/PlayPageUtils';\nimport { StreamLimitOverlay } from 'shared/components/stream-limit-overlay/StreamLimitOverlay';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePreventKeyboardScroll } from 'shared/hooks/usePreventKeyboardScroll';\nimport { useStreamQuota } from 'shared/hooks/useStreamQuota';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { useCreateClip, usePip, useSetActivityStatus, useSetFavourite, useSetNextVideo } from 'shared/views/lite-player/LitePlayerViewHooks';\n\nimport styles from './lite-player.module.scss';\n\nfunction shouldCollectResults(props: LitePlayerViewProps): boolean {\n if (!props.shareLink)\n return false;\n\n if (props.currentUser.isAuthenticated)\n return true;\n\n return !!props.collectAnonResults;\n}\n\nfunction getExternalLink(\n video: VideoTypes,\n shareLink: UnionShareObject,\n options: ExternalLinkOptions,\n isAuthenticated: boolean,\n presentationSlug: string | null\n): string {\n if (shareLink) {\n return Core.AppLinkHelper.getHref({\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [shareLink.id],\n params: {\n t: options.currentTime,\n a: true\n }\n });\n }\n\n const appLink = VideoAppLinkHelper.getAppLink(video, { includeContext: isAuthenticated }, presentationSlug);\n if (!appLink.params)\n appLink.params = {};\n\n (appLink.params as HashObject).t = options.currentTime;\n (appLink.params as HashObject).a = true;\n return Core.AppLinkHelper.getHref(appLink);\n}\n\nexport interface LitePlayerViewProps {\n // Core data\n config: Config;\n token?: AuthToken;\n video: VideoTypes;\n currentUser: CurrentUser;\n shareLink?: UnionShareObject;\n pointsOfInterest?: PointOfInterest[];\n viewKey: PlayerViewKey;\n relatedVideos?: VideoTypes[];\n presentationSlug: string | null;\n\n // Hook options\n context?: RelatedVideosContext;\n contextId?: string;\n moviesAndTv?: boolean;\n playNext?: boolean;\n mode?: PlayerMode;\n defaultDisplayMode?: DefaultDisplayMode;\n\n allowCreateClip?: boolean;\n allowTheatreMode?: boolean;\n allowTranscript?: boolean;\n\n // Passthrough options\n autoplay?: boolean;\n startTime?: string;\n endTime?: string;\n embed?: boolean;\n showResources?: boolean;\n muted?: boolean;\n\n // Interactive\n summaryPortalNode?: HtmlPortalNode;\n questionListPortalNode?: HtmlPortalNode;\n onShowSummary?: (showing: boolean) => void;\n collectAnonResults?: boolean;\n\n // Devices\n playerIntegrations?: PlayerIntegrations;\n\n onReady?: (player: PlayerReference) => void;\n onRequestPictureInPicture?: (isPip: boolean) => void;\n onRequestTheatreMode?: (isTheatreMode: boolean) => void;\n}\n\n/**\n * Consumers of this view need to opt out of these features.\n */\nLitePlayerView.defaultProps = {\n allowCreateClip: true\n};\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function LitePlayerView(props: LitePlayerViewProps): JSX.Element {\n const playerRef = React.useRef<PlayerReference>(null);\n const analyticsTracker = React.useRef<PlayerAnalyticsTracker>(null);\n\n useSetFavourite(playerRef.current, props.video);\n useSetActivityStatus(playerRef.current, props.video, props.shareLink);\n useSetNextVideo({\n player: playerRef.current,\n relatedVideos: props.relatedVideos,\n shareId: props.shareLink?.id,\n context: props.context,\n contextId: props.contextId,\n moviesAndTv: props.moviesAndTv,\n playNext: props.playNext,\n mode: props.mode,\n isAuthenticated: props.currentUser?.isAuthenticated,\n presentationSlug: props.presentationSlug\n });\n usePreventKeyboardScroll();\n \n const allowPip = usePip(props.currentUser, props.onRequestPictureInPicture);\n\n const { experimentalInteractiveQuestions } = useSettings(null);\n const {\n isLoaded: streamQuotaLoaded,\n hasReachedStreamLimit,\n canRedeemMoreReferrals,\n totalStreamsAvailable\n } = useStreamQuota();\n\n const { hasPermissions } = usePermissions();\n\n const isGuest = hasPermissions(PermissionName.GuestExperience);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n const onClickCreateClip = useCreateClip(\n playerRef,\n props.currentUser,\n props.video,\n props.embed,\n isGuest ? false : props.allowCreateClip\n );\n\n const forceUpdate = useForceUpdate();\n\n function onReady(player: PlayerReference): void {\n playerRef.current = player;\n forceUpdate();\n props.onReady && props.onReady(player);\n setupAnalytics(player);\n }\n\n function setupAnalytics(player: PlayerReference): void {\n analyticsTracker.current = new PlayerAnalyticsTracker({\n player,\n video: props.video,\n analyticsLocation: props.embed ?\n LocationContext.EmbeddedPlayer :\n LocationContext.PlayPage,\n shareId: props.shareLink?.id\n });\n }\n\n let posterUrl = '';\n if ('thumbnail' in props.video)\n posterUrl = props.video.thumbnail?.url;\n if (!posterUrl && '_parentVideo' in props.video)\n posterUrl = props.video._parentVideo?.thumbnail?.url;\n\n const commonProps: PlayerOptions = {\n // Fetched\n viewKey: props.viewKey.viewKey,\n playerApi: new URL(props.config.playerApiUrl),\n imageCdnUrl: props.config.imageCdnUrl,\n\n // Options\n autoplay: props.autoplay,\n startTime: getStartTime(props.startTime, props.video),\n endTime: getEndTime(props.endTime),\n embed: props.embed,\n showResources: props.showResources,\n getExternalLink: props.embed &&\n (options => getExternalLink(\n props.video,\n props.shareLink,\n options,\n props.currentUser?.isAuthenticated,\n props.presentationSlug\n )),\n muted: props.muted,\n splash: props.embed ? {\n title: props.video.name,\n posterUrl,\n ratingCode: VideoHelper.getRating(props.video)?.code,\n ratingValue: VideoHelper.getRating(props.video)?.value,\n seriesName: 'series' in props.video && props.video.series?.name,\n seasonNumber: 'season' in props.video && props.video.season?.number,\n episodeNumber: 'episodeNumber' in props.video && props.video.episodeNumber\n } : undefined,\n // todo remove this once we ship theatre mode for everyone\n allowTheatreMode: props.allowTheatreMode,\n allowLoop: true,\n\n // Static\n hotkeyElQuerySelector: 'body',\n sharerInstanceRegion: props.shareLink?.ownerInstanceRegion\n };\n\n const devicesConfig = props.playerIntegrations ? {\n ...props.playerIntegrations,\n trackingCode: VideoHelper.getTrackingCode(props.video)\n } : undefined;\n\n const isTheatreMode = props.mode === 'default' && props.defaultDisplayMode === 'theatre';\n const isHoverMode = props.mode === 'hover';\n const isInteractive = props.video.typeId === MasterType.Interactive;\n const isPublicShare = ShareHelper.isPublic(props.shareLink);\n const showStreamLimitOverlay = streamQuotaLoaded && hasReachedStreamLimit && !isHoverMode && !isPublicShare;\n\n /**\n * We memoize two React.lazy components (interactive and standard) to avoid Suspense flicker on re-renders.\n * Hooks can't be conditional, so both lazies are created once and we choose which to render at runtime.\n * With default exports, React.lazy infers props, so no casting is required. - Sha\n */\n const InteractivePlayer = React.useMemo(() => React.lazy(() => import('projects/player/react/InteractivePlayer')), []);\n const Player = React.useMemo(() => React.lazy(() => import('projects/player/react/Player')), []);\n \n if (showStreamLimitOverlay) {\n return (\n <StreamLimitOverlay\n posterUrl={posterUrl}\n embed={props.embed}\n hasStudentExperience={hasStudentExperience}\n canRedeemMoreReferrals={canRedeemMoreReferrals}\n totalStreamsAvailable={totalStreamsAvailable}\n />\n );\n }\n\n if (isInteractive) {\n return (\n <React.Suspense fallback={<div className={styles.placeholder} />}>\n <InteractivePlayer\n {...commonProps}\n imageApi={new URL(props.config.imageCdnUrl)}\n currentUser={props.currentUser}\n collectResults={shouldCollectResults(props)}\n shareId={props.shareLink?.id}\n enableImmersiveReader\n summaryPortalNode={props.summaryPortalNode}\n onShowSummary={props.onShowSummary}\n onReady={onReady}\n className={props.embed ? styles.embeddedPlayer : ''}\n furthestVisitedTime={props.video._videoProgress?.furthest}\n questionListPortalNode={props.questionListPortalNode}\n authToken={props.token?.value}\n experimentalInteractiveQuestions={experimentalInteractiveQuestions}\n />\n </React.Suspense>\n );\n }\n\n function getClassName(): string {\n if (props.embed) {\n return styles.embeddedPlayer;\n }\n if (isTheatreMode)\n return 'w-100 h-100';\n return '';\n }\n\n return (\n <React.Suspense fallback={<div className={`${styles.placeholder} ${isTheatreMode ? styles.theatreMode : ''}`} />}>\n <Player\n {...commonProps}\n devicesConfig={devicesConfig}\n className={getClassName()}\n onClickCreateClip={onClickCreateClip}\n pointsOfInterest={props.pointsOfInterest}\n onReady={onReady}\n showResources={props.embed}\n onRequestPictureInPicture={allowPip && props.onRequestPictureInPicture}\n onRequestTheatreMode={props.onRequestTheatreMode}\n theatreMode={isTheatreMode}\n nextDefaultDisplayMode={props.defaultDisplayMode}\n allowTranscript={props.allowTranscript}\n />\n </React.Suspense>\n );\n}\n"],"file":"D-iyHqNw2.chunk.js"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["scripts/DFFq-sgD.chunk.js","scripts/DAXXjFlN.chunk.js","scripts/B785hxeE.chunk.js","scripts/C2w0pmFW.chunk.js","scripts/wrLrTezN.chunk.js","scripts/BX0wDJmp.chunk.js","scripts/CMDJWWg3.chunk.js","scripts/DMnm3Ewv.chunk.js","scripts/BVnMI-dl.chunk.js","scripts/BruX4yYB.chunk.js","scripts/C1SLt-ar.chunk.js","scripts/NlCAcBdo.chunk.js","scripts/DGmmTRu72.chunk.js","scripts/BftnFbcr.chunk.js","scripts/DPtsihFR.chunk.js","scripts/B_BV48Fy.chunk.js","scripts/CqrjHjAN.chunk.js","scripts/DZX1tZ-D2.chunk.js","scripts/Ky1--4w3.chunk.js","scripts/CZgWQFsJ.chunk.js","scripts/_GCZ-60i.chunk.js","scripts/DFZS3Ffo.chunk.js","scripts/DZssmXj6.chunk.js","scripts/BB6YslUc2.chunk.js","scripts/DbSUQ2A12.chunk.js","scripts/BC8PeYqm.chunk.js","scripts/LoQS6GjP.chunk.js","scripts/BDwjs8qz2.chunk.js","scripts/CVHQXNzi2.chunk.js","scripts/Bt61LQbp.chunk.js","scripts/BYSskNbK.chunk.js","scripts/D_gWf2lC.chunk.js","scripts/CZbN8PTA.chunk.js","scripts/CQyJ7YGa.chunk.js","scripts/e57H3T-k.chunk.js","scripts/ChzgIDQv.chunk.js","scripts/Ct1xqbFp.chunk.js","scripts/BXTI9cmX.chunk.js","scripts/CjA4Q5pm.chunk.js","scripts/FAs_d-DP.chunk.js","scripts/Bzihudtn.chunk.js","scripts/BFXddaSP.chunk.js","scripts/B3TDTJSl.chunk.js","scripts/YjWbDb2Y.chunk.js","scripts/1LRpIhCn.chunk.js","scripts/DIqO2TFN.chunk.js","scripts/Byg072EM.chunk.js","scripts/CbfkmRJL.chunk.js","scripts/DTGfiG8Y.chunk.js","scripts/BxbRBSiP.chunk.js","scripts/CmcCVXi32.chunk.js","scripts/Kx-r9MXT.chunk.js","scripts/M97_Ztsu.chunk.js","scripts/XIE88U01.chunk.js","scripts/7-GJWRH82.chunk.js","scripts/C5j5LRut2.chunk.js","scripts/Bneb37232.chunk.js","scripts/C1PTqhPY2.chunk.js","scripts/xwiwWcv12.chunk.js","scripts/eoAypzU3.chunk.js","scripts/CgCqPbjJ.chunk.js","scripts/ckbu5kCm.chunk.js","scripts/CtzJ01m0.chunk.js","scripts/dQS4_Xmg2.chunk.js","scripts/Hem_wKUK2.chunk.js","scripts/BrbeV-Gn2.chunk.js","scripts/C2qMXdv9.chunk.js","scripts/DQgG9njb.chunk.js","css/ovkTsYMl.chunk.css","scripts/dLd5d3X22.chunk.js","scripts/BDthD6uY2.chunk.js","scripts/D5U6AgIt2.chunk.js","scripts/f7KnU-Ey2.chunk.js","scripts/D7gF8PAd2.chunk.js","scripts/B4PsTQs82.chunk.js","scripts/CZc2Wh_b2.chunk.js","scripts/B7fTfFj62.chunk.js","scripts/CRTrHgUu2.chunk.js","scripts/DaJi_iy42.chunk.js","scripts/BK089B4C2.chunk.js","scripts/Bs2PKr1I2.chunk.js","scripts/BRcHS92O2.chunk.js","scripts/Dbr8pRhX2.chunk.js","css/0ZFm8qBN.chunk.css","scripts/CaHxeG5Y2.chunk.js","scripts/TTO6HcNP.chunk.js","scripts/odtNXW-p.chunk.js","scripts/B_N30_Kb.chunk.js","scripts/DwIQKUd9.chunk.js","scripts/C9RwIAEU.chunk.js","scripts/Bj85BGmx.chunk.js","scripts/DlFHFcJP.chunk.js","scripts/DruDe9vI.chunk.js","scripts/BDu69--Y.chunk.js","scripts/D7t5_of1.chunk.js","scripts/Bsc7roaB.chunk.js","scripts/CsF4wDV1.chunk.js","scripts/sb8Be8SQ.chunk.js","scripts/BocITs4B.chunk.js","scripts/DpCWroEe2.chunk.js","scripts/C4TNMYS42.chunk.js","scripts/DB_BawmH2.chunk.js","scripts/B3gsVN-_.chunk.js","scripts/CW2ZZdWs.chunk.js","scripts/BsetgQYp.chunk.js","scripts/C7GcQtj3.chunk.js","scripts/C6-aC3vu.chunk.js","scripts/BGGL8m_U.chunk.js","scripts/FFbkHQcg.chunk.js","scripts/B2INd6bh.chunk.js","css/DXwbT8Tl.chunk.css","scripts/7LGxCHGV.chunk.js","scripts/e_p5kSFR2.chunk.js","scripts/QCFxJYkI2.chunk.js","scripts/DFSQj00S.chunk.js","scripts/BxZ7b_Nn.chunk.js","scripts/Bbv3vbm7.chunk.js","scripts/BxjzTnvL2.chunk.js","scripts/CduNFx13.chunk.js","scripts/Bbp2U9GK.chunk.js","css/9awfngRG.chunk.css","scripts/BGhJ8TEx.chunk.js","scripts/DWLFYiMu.chunk.js","scripts/DDLr4JCi.chunk.js","scripts/BDif2ytg2.chunk.js","scripts/CbzENe5-2.chunk.js","scripts/Dfw0sxVt2.chunk.js","scripts/tzcygo702.chunk.js","scripts/rVRhgtHY2.chunk.js","scripts/6UdHSMo02.chunk.js","scripts/BSYDOevb2.chunk.js","scripts/B9EhHD852.chunk.js","scripts/BugRosaL2.chunk.js","scripts/DYDxLHiV2.chunk.js","scripts/CpFtf-tI2.chunk.js","scripts/BTd65Rcb2.chunk.js","scripts/D6vGqwTy2.chunk.js","scripts/DdwKMgn92.chunk.js","scripts/BDsN9PWe2.chunk.js","scripts/B8J64DHS2.chunk.js","scripts/DBkEQkKm2.chunk.js","scripts/dkL70h2W2.chunk.js","scripts/Bmh0Fxsl2.chunk.js","scripts/iZ7EqNA72.chunk.js","scripts/CXnhm0VS2.chunk.js","scripts/OL3Z6Yp62.chunk.js","scripts/BUDCkU2S2.chunk.js","scripts/lhZ5v-iN2.chunk.js","scripts/C1loT8MD2.chunk.js","scripts/B_rKniXe2.chunk.js","css/Cq6P0UxT.chunk.css","scripts/B_-pJtOI2.chunk.js","scripts/CpKc1O_Y.chunk.js","scripts/ChnNWPOK2.chunk.js","scripts/DMaQV7L2.chunk.js","scripts/CCb14vhF.chunk.js","scripts/BnuuRu_J2.chunk.js","scripts/CC5Dr9aG.chunk.js","scripts/D6Cj2lob2.chunk.js","scripts/DNuJUXpr2.chunk.js","scripts/1pA_p8rV2.chunk.js","scripts/VJQU9c4G2.chunk.js","scripts/snXCXfT6.chunk.js","scripts/Dr3Lux2e.chunk.js","scripts/wdQVW3s5.chunk.js","scripts/rPN1bfU12.chunk.js","scripts/BIzu5ufQ.chunk.js","scripts/BMKh-xhT2.chunk.js","scripts/Cr6TXzQQ2.chunk.js","scripts/BcibGFe42.chunk.js","scripts/WvK58Ge12.chunk.js","scripts/BJUbYu222.chunk.js","scripts/BBDxSGT52.chunk.js","scripts/5ONJSThP.chunk.js","scripts/C7HU4huj.chunk.js","scripts/BlGyXBAH2.chunk.js","scripts/Dc1hYuQ12.chunk.js","scripts/jL1owusF.chunk.js","scripts/C-THHyTP.chunk.js","scripts/Dg1mFtY2.chunk.js","css/BM1mrJH4.chunk.css","scripts/_42F7SIA2.chunk.js","scripts/Cy6lZVxk.chunk.js","scripts/DYKH_3un.chunk.js","scripts/CunDpHqX2.chunk.js","css/0ZqRj7up.chunk.css","scripts/7TVnHsGg2.chunk.js","scripts/KmDyjq5W2.chunk.js","css/D1t0PpMS.chunk.css","scripts/qT_Twe2q.chunk.js","scripts/qR0lgBrT.chunk.js","scripts/D9w5fgSe2.chunk.js","scripts/C3q_xvci.chunk.js","scripts/Ce8kGUCD2.chunk.js","scripts/DlEtkSBj2.chunk.js","scripts/BxYKQEUG2.chunk.js","scripts/CbqdME7V2.chunk.js","scripts/C4P0fr5N.chunk.js","scripts/C-oZxdla2.chunk.js","css/JvwYHocG.chunk.css","scripts/C9a9PaRW2.chunk.js","scripts/C0exjRXJ.chunk.js","scripts/BvmO1d4u.chunk.js","scripts/ss6ZpC3s.chunk.js","scripts/CYSDN6kj.chunk.js","scripts/CVqxBe99.chunk.js","scripts/CNxJMwxC.chunk.js","scripts/CQRza4Ga.chunk.js","scripts/ByIC_M_8.chunk.js","scripts/Epqx0J1v.chunk.js","scripts/CDeqAwMc.chunk.js","scripts/GvIHspQt.chunk.js","scripts/BUnh3rN0.chunk.js","css/zFl67mql.chunk.css","scripts/Diu_gSvw.chunk.js","scripts/BJZXCSV9.chunk.js","css/B27vnbEi.chunk.css","scripts/C13eKcAl.chunk.js","scripts/2L3jD0XO.chunk.js","scripts/CpoRsMKu.chunk.js","scripts/DtBVLzzL2.chunk.js","scripts/gEYsxARL.chunk.js","scripts/BdNi1E8r2.chunk.js","scripts/DMVY8Y3J.chunk.js","scripts/CEtJop-5.chunk.js","scripts/BUoougrH.chunk.js","scripts/Dl2HqObu.chunk.js","css/FUAcQhsk.chunk.css","scripts/pWSEJIR4.chunk.js","scripts/CsWeCs8U2.chunk.js","scripts/Dat7ugzw2.chunk.js","scripts/PXIPIL8z.chunk.js","scripts/BLm6PYXX.chunk.js","scripts/BM2EJL9g.chunk.js","scripts/DqXpeRGy.chunk.js","scripts/CHUhp3aW.chunk.js","scripts/2AIpru28.chunk.js","scripts/DLXZNpMc.chunk.js","scripts/E5Pmu4O7.chunk.js","scripts/mIzlMVvp.chunk.js","scripts/BP_ivKVo.chunk.js","scripts/BiK2I_VY.chunk.js","scripts/D0Jec0hb.chunk.js","scripts/DH2Z2vbl.chunk.js","css/De40Dg3O.chunk.css","scripts/C7_5k1dQ2.chunk.js","scripts/CKOWgMyj2.chunk.js","scripts/D5yUWL7p2.chunk.js","scripts/CCrnRkGN2.chunk.js","scripts/BwelEZs92.chunk.js","scripts/DW24qN_e2.chunk.js","scripts/CFfjCXef2.chunk.js","scripts/HT_TXzUd2.chunk.js","scripts/DFIgRAfX2.chunk.js","css/DGerDKqO.chunk.css","scripts/CNm7AdhJ2.chunk.js","scripts/ClpxGEGl.chunk.js","scripts/CvNHBl0q.chunk.js","scripts/6ZXIO06e.chunk.js","scripts/CnsLb4V9.chunk.js","scripts/Dhx_Wqdc.chunk.js","scripts/DaT2nTfp.chunk.js","scripts/C-k6FY-f.chunk.js","scripts/CXVBjdpb.chunk.js","scripts/gl4k7dtw.chunk.js","scripts/CQ0MgG2c.chunk.js","scripts/ByoSSidB.chunk.js","scripts/De16zmhB.chunk.js","scripts/3SzX073C.chunk.js","scripts/C58qLDx-2.chunk.js","scripts/tYviAM3E2.chunk.js","scripts/C2uC_ups2.chunk.js","scripts/Yh8_3xNt2.chunk.js","scripts/itcPVJmN.chunk.js","scripts/D2jl5vrv.chunk.js","scripts/BGswYbRT.chunk.js","scripts/DtG0IH13.chunk.js","css/BFARciSU.chunk.css","scripts/BihfmPAZ.chunk.js","scripts/CxEHETCC.chunk.js","scripts/xa4cS6Fq.chunk.js","scripts/DIpRziwi.chunk.js","scripts/D0szf-0g.chunk.js","scripts/GlXL-aEw.chunk.js","scripts/C4SwJrBy.chunk.js","scripts/D1UCk2Gf.chunk.js","scripts/Bv4_l1OV.chunk.js","scripts/DFZuEEeD.chunk.js","scripts/jAbfamoi.chunk.js","scripts/9kSpxveW.chunk.js","scripts/CWYDa3Ok.chunk.js","scripts/DDJBf9pK2.chunk.js","scripts/BzbZUZa-2.chunk.js","scripts/BRrNQXpU2.chunk.js","css/DVhPtkT7.chunk.css","css/C1NkrNqQ.chunk.css","scripts/DUXPuDp72.chunk.js","scripts/Q0fOIAoj2.chunk.js","scripts/DXADbFxE2.chunk.js","scripts/CmssK8uN2.chunk.js","css/qDyfky2o.chunk.css","scripts/B9VCwo3g2.chunk.js","scripts/B9iz7_rU2.chunk.js","scripts/vsyhrSK92.chunk.js","scripts/C9JFcwr12.chunk.js","css/DS10jU9V.chunk.css","scripts/BmCPW8H12.chunk.js","scripts/D2-L8f1x2.chunk.js","scripts/DsBWAM3I2.chunk.js","scripts/DXSI-XXz2.chunk.js","scripts/D3-wtcxf2.chunk.js","scripts/DoJIQb_L2.chunk.js","scripts/Chgge8yX2.chunk.js","scripts/BiqmNDlz2.chunk.js","css/CuSUr3Gp.chunk.css","scripts/Dp6QHgBL.chunk.js","scripts/DJJ_eKiD.chunk.js","scripts/C5uTRLOC2.chunk.js","scripts/BteVhTv7.chunk.js","scripts/DdBOZ1oh.chunk.js","css/QlN9xNpq.chunk.css","scripts/Cvh-7L5i.chunk.js","scripts/ByszCPst.chunk.js","scripts/BDBRrgHv.chunk.js","scripts/DsbcGrr4.chunk.js","scripts/jAtAipGN.chunk.js","scripts/CzuHD4Ht.chunk.js","scripts/DBHDBu1Y.chunk.js","scripts/ryLD1Tv-.chunk.js","scripts/BILyzh0I.chunk.js","scripts/Dsv4OsIs.chunk.js","scripts/CUIoIkRt.chunk.js","scripts/ss-hkhJP.chunk.js","scripts/DSlUluza.chunk.js","scripts/Bv998y2z.chunk.js","scripts/BsyAY6Vz.chunk.js","scripts/CjNVxyvt.chunk.js","css/8irsgQJA.chunk.css","scripts/BvQPudhO.chunk.js","scripts/BZu_LcDb.chunk.js","css/W-kt2nNQ.chunk.css","scripts/D1-ppP1Y.chunk.js","scripts/DLM8Yrib.chunk.js","scripts/1IFtXPNY.chunk.js","scripts/DewCxv4i.chunk.js","scripts/BQZMENs6.chunk.js","scripts/ipemOAXD.chunk.js","scripts/DPZ7V-5u.chunk.js","scripts/B8gP8YoA.chunk.js","scripts/B2DPLPW5.chunk.js","scripts/Bfz3IcRF.chunk.js","scripts/CfwSprmF.chunk.js","scripts/CdYjo8_g2.chunk.js","scripts/DtyWwr3N2.chunk.js","scripts/B44BW79X2.chunk.js","scripts/C4CcxMnx2.chunk.js","css/BdZAqx9q.chunk.css","scripts/BINRgRNJ2.chunk.js","scripts/CF981jTE2.chunk.js","css/9hiQ_mdl.chunk.css","scripts/BZvo5BYo2.chunk.js","css/C2BdWnV1.chunk.css","scripts/Z4RlHaVG.chunk.js","scripts/BU5CGdBX.chunk.js","css/BPdg7JW4.chunk.css","scripts/9kh0Xx2n2.chunk.js","scripts/BOJK8LI1.chunk.js","scripts/rXj0f9tP.chunk.js","scripts/DlAOGdRl.chunk.js","css/Dkh9W5Kv.chunk.css","scripts/DEZqrbCm.chunk.js","scripts/BBEIIgZ6.chunk.js","css/BgzV9aK4.chunk.css","css/CjXi_-dH.chunk.css","scripts/tnBD84bg2.chunk.js","scripts/DELN_PAD2.chunk.js","scripts/DzgAvoez.chunk.js","scripts/CfwcyO2N.chunk.js","scripts/OtQaFdir.chunk.js","scripts/Dopg0SXC.chunk.js","scripts/RjGIOTdP.chunk.js","scripts/CvtZ8ZFA2.chunk.js","scripts/CtrxbtlT2.chunk.js","scripts/B3fF5gkg.chunk.js","scripts/DXhChD7q.chunk.js","scripts/DIENjKhZ.chunk.js","scripts/B3xkRGwm2.chunk.js","scripts/ILW-TVyd2.chunk.js","scripts/CHL4nrKG.chunk.js","scripts/Bz3-ThVx.chunk.js","scripts/yk6K0dmz2.chunk.js","scripts/BiRgdaWH2.chunk.js","scripts/ChDKWvzE2.chunk.js","scripts/B5XaBzZh.chunk.js","css/D2t3ESms.chunk.css","scripts/BPavmm8c.chunk.js","scripts/IqGr9V7u2.chunk.js","css/ChavoTyg.chunk.css","scripts/Bf9r1ZoF2.chunk.js","scripts/B1Q9Fyu9.chunk.js","css/DDnpOnVB.chunk.css","scripts/CpgHBpMp.chunk.js","scripts/U8dlpUbv.chunk.js","scripts/CpcpPu9H.chunk.js","scripts/CLOak4u5.chunk.js","scripts/CWMwyVGJ2.chunk.js","scripts/QVHuXdWQ2.chunk.js","scripts/BINgMltM.chunk.js","scripts/A2-_B2N4.chunk.js","scripts/BzfCWDOl2.chunk.js","scripts/BIMvMi5v2.chunk.js","scripts/4thdKXE92.chunk.js","scripts/XBYhZGTN.chunk.js","css/jCkhZLwg.chunk.css","scripts/lPQgHDFT.chunk.js","scripts/B6mbiaAe.chunk.js","css/C0oMpmDK.chunk.css","scripts/pP_cpHCu2.chunk.js","scripts/DT8J1fGP.chunk.js","scripts/BLBtFc2V2.chunk.js","scripts/C3znHRYL2.chunk.js","css/BkC_YdWP.chunk.css","scripts/7I0L5W4N2.chunk.js","scripts/B6zmIqIU2.chunk.js","css/Xwy4vqMD.chunk.css","scripts/DusJhHeW2.chunk.js","scripts/UkK4dkBz2.chunk.js","css/BtfuP1Ql.chunk.css","scripts/CLjADRa42.chunk.js","scripts/BgOLbASl2.chunk.js","scripts/BM5QQdzk.chunk.js","css/BS_E5Dg8.chunk.css","css/Cy7NKnX4.chunk.css","scripts/ft2cSH-j.chunk.js","scripts/CvHvrB-t.chunk.js","scripts/D6bsI9KZ.chunk.js","css/BH6hCmvU.chunk.css","scripts/BbgQJe-T.chunk.js","scripts/B_9JhhOa.chunk.js","css/DnhOr8Y7.chunk.css","scripts/B3p3SaM12.chunk.js","scripts/B1r_1ubU.chunk.js","scripts/C5f0lBCw2.chunk.js","scripts/DFA7yKHu.chunk.js","css/Cfojuplq.chunk.css","scripts/CSNdQCNe2.chunk.js","scripts/BicQH0Al.chunk.js","css/D5JKYURg.chunk.css","scripts/D2NJvKT22.chunk.js","css/DPKl5ITe.chunk.css","css/SIofVEpH.chunk.css","scripts/DkxWaE9O.chunk.js","css/CBPl-SLD.chunk.css","scripts/Ta3cqTAC.chunk.js","scripts/CdI1ZlaQ.chunk.js","scripts/leJinMoS2.chunk.js","scripts/DbyH1eEj.chunk.js","scripts/BdF2BgJh.chunk.js","scripts/C9XBZFiR.chunk.js","scripts/DcmBU1rQ.chunk.js","scripts/CTGm5EOr.chunk.js","scripts/BYaCUOEW2.chunk.js","scripts/DJXt6rKd2.chunk.js","css/C2QK928M.chunk.css","scripts/CNPKh2z72.chunk.js","scripts/2p_6pVn6.chunk.js","scripts/B6GfukUn2.chunk.js","css/DQ_caKUF.chunk.css","scripts/C7vzxJTN.chunk.js","scripts/DEmA_y7H2.chunk.js","scripts/YmXEsLuD.chunk.js","scripts/DaTWNmwD.chunk.js","scripts/BVeF-Kak.chunk.js","scripts/Dv4x3RID.chunk.js","css/Crx9BPxO.chunk.css","scripts/CY_30Xdt.chunk.js","scripts/11tE0tcu.chunk.js","scripts/BfGmSsjS2.chunk.js","css/Cbi3KYBa.chunk.css","scripts/DHslo6At.chunk.js","css/XD2hD8t1.chunk.css","css/n2o1aWTK.chunk.css","scripts/C50tKiyZ2.chunk.js","css/BQo3NAc1.chunk.css","scripts/BjdMDTdw.chunk.js","scripts/BnFIrBPz.chunk.js","scripts/BTjs3x5b.chunk.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./C2w0pmFW.chunk.js";import{t as n}from"./wrLrTezN.chunk.js";import{u as r}from"./BX0wDJmp.chunk.js";import{t as i}from"./CVHQXNzi2.chunk.js";import{t as a}from"./CZgWQFsJ.chunk.js";import{t as o}from"./DruDe9vI.chunk.js";var s=e(t()),c=(e,t)=>{let[n,r]=s.useState();return s.useEffect(()=>{n&&r(null)},[t.videoId]),s.useEffect(()=>{if(!e||n)return;let{objectTypeId:o}=e;switch(t.videoId?o=i.Video:t.clipId?o=i.Clip:t.interactiveId&&(o=i.Interactive),o){case i.Video:{let e=s.lazy(async()=>{let{PlaySharedVideoView:e}=await a(async()=>{let{PlaySharedVideoView:e}=await import(`./
|
|
3
|
-
//# sourceMappingURL=
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["scripts/B3y60nT5.chunk.js","scripts/DAXXjFlN.chunk.js","scripts/B785hxeE.chunk.js","scripts/C2w0pmFW.chunk.js","scripts/wrLrTezN.chunk.js","scripts/BX0wDJmp.chunk.js","scripts/CMDJWWg3.chunk.js","scripts/DMnm3Ewv.chunk.js","scripts/BVnMI-dl.chunk.js","scripts/BruX4yYB.chunk.js","scripts/C1SLt-ar.chunk.js","scripts/NlCAcBdo.chunk.js","scripts/DGmmTRu72.chunk.js","scripts/BftnFbcr.chunk.js","scripts/DPtsihFR.chunk.js","scripts/B_BV48Fy.chunk.js","scripts/CqrjHjAN.chunk.js","scripts/DZX1tZ-D2.chunk.js","scripts/Ky1--4w3.chunk.js","scripts/CZgWQFsJ.chunk.js","scripts/_GCZ-60i.chunk.js","scripts/DFZS3Ffo.chunk.js","scripts/DZssmXj6.chunk.js","scripts/BB6YslUc2.chunk.js","scripts/DbSUQ2A12.chunk.js","scripts/BC8PeYqm.chunk.js","scripts/LoQS6GjP.chunk.js","scripts/BDwjs8qz2.chunk.js","scripts/CVHQXNzi2.chunk.js","scripts/Bt61LQbp.chunk.js","scripts/BYSskNbK.chunk.js","scripts/D_gWf2lC.chunk.js","scripts/CZbN8PTA.chunk.js","scripts/CQyJ7YGa.chunk.js","scripts/e57H3T-k.chunk.js","scripts/ChzgIDQv.chunk.js","scripts/Ct1xqbFp.chunk.js","scripts/BXTI9cmX.chunk.js","scripts/CjA4Q5pm.chunk.js","scripts/FAs_d-DP.chunk.js","scripts/Bzihudtn.chunk.js","scripts/BFXddaSP.chunk.js","scripts/B3TDTJSl.chunk.js","scripts/YjWbDb2Y.chunk.js","scripts/1LRpIhCn.chunk.js","scripts/DIqO2TFN.chunk.js","scripts/Byg072EM.chunk.js","scripts/CbfkmRJL.chunk.js","scripts/DTGfiG8Y.chunk.js","scripts/BxbRBSiP.chunk.js","scripts/CmcCVXi32.chunk.js","scripts/Kx-r9MXT.chunk.js","scripts/M97_Ztsu.chunk.js","scripts/XIE88U01.chunk.js","scripts/7-GJWRH82.chunk.js","scripts/C5j5LRut2.chunk.js","scripts/Bneb37232.chunk.js","scripts/C1PTqhPY2.chunk.js","scripts/xwiwWcv12.chunk.js","scripts/eoAypzU3.chunk.js","scripts/CgCqPbjJ.chunk.js","scripts/ckbu5kCm.chunk.js","scripts/CtzJ01m0.chunk.js","scripts/dQS4_Xmg2.chunk.js","scripts/Hem_wKUK2.chunk.js","scripts/BrbeV-Gn2.chunk.js","scripts/C2qMXdv9.chunk.js","scripts/DQgG9njb.chunk.js","css/ovkTsYMl.chunk.css","scripts/dLd5d3X22.chunk.js","scripts/BDthD6uY2.chunk.js","scripts/D5U6AgIt2.chunk.js","scripts/f7KnU-Ey2.chunk.js","scripts/D7gF8PAd2.chunk.js","scripts/B4PsTQs82.chunk.js","scripts/CZc2Wh_b2.chunk.js","scripts/B7fTfFj62.chunk.js","scripts/CRTrHgUu2.chunk.js","scripts/DaJi_iy42.chunk.js","scripts/BK089B4C2.chunk.js","scripts/Bs2PKr1I2.chunk.js","scripts/BRcHS92O2.chunk.js","scripts/Dbr8pRhX2.chunk.js","css/0ZFm8qBN.chunk.css","scripts/CaHxeG5Y2.chunk.js","scripts/TTO6HcNP.chunk.js","scripts/odtNXW-p.chunk.js","scripts/B_N30_Kb.chunk.js","scripts/DwIQKUd9.chunk.js","scripts/C9RwIAEU.chunk.js","scripts/Bj85BGmx.chunk.js","scripts/DlFHFcJP.chunk.js","scripts/DruDe9vI.chunk.js","scripts/BDu69--Y.chunk.js","scripts/D7t5_of1.chunk.js","scripts/Bsc7roaB.chunk.js","scripts/CsF4wDV1.chunk.js","scripts/sb8Be8SQ.chunk.js","scripts/BocITs4B.chunk.js","scripts/DpCWroEe2.chunk.js","scripts/C4TNMYS42.chunk.js","scripts/DB_BawmH2.chunk.js","scripts/B3gsVN-_.chunk.js","scripts/CW2ZZdWs.chunk.js","scripts/BsetgQYp.chunk.js","scripts/C7GcQtj3.chunk.js","scripts/C6-aC3vu.chunk.js","scripts/BGGL8m_U.chunk.js","scripts/FFbkHQcg.chunk.js","scripts/B2INd6bh.chunk.js","css/DXwbT8Tl.chunk.css","scripts/7LGxCHGV.chunk.js","scripts/e_p5kSFR2.chunk.js","scripts/QCFxJYkI2.chunk.js","scripts/DFSQj00S.chunk.js","scripts/BxZ7b_Nn.chunk.js","scripts/Bbv3vbm7.chunk.js","scripts/D-iyHqNw2.chunk.js","scripts/CduNFx13.chunk.js","scripts/Bbp2U9GK.chunk.js","css/9awfngRG.chunk.css","scripts/BGhJ8TEx.chunk.js","scripts/DWLFYiMu.chunk.js","scripts/DDLr4JCi.chunk.js","scripts/BDif2ytg2.chunk.js","scripts/CbzENe5-2.chunk.js","scripts/Dfw0sxVt2.chunk.js","scripts/tzcygo702.chunk.js","scripts/rVRhgtHY2.chunk.js","scripts/6UdHSMo02.chunk.js","scripts/BSYDOevb2.chunk.js","scripts/B9EhHD852.chunk.js","scripts/BugRosaL2.chunk.js","scripts/DYDxLHiV2.chunk.js","scripts/CpFtf-tI2.chunk.js","scripts/BTd65Rcb2.chunk.js","scripts/D6vGqwTy2.chunk.js","scripts/DdwKMgn92.chunk.js","scripts/BDsN9PWe2.chunk.js","scripts/B8J64DHS2.chunk.js","scripts/DBkEQkKm2.chunk.js","scripts/dkL70h2W2.chunk.js","scripts/Bmh0Fxsl2.chunk.js","scripts/iZ7EqNA72.chunk.js","scripts/CXnhm0VS2.chunk.js","scripts/OL3Z6Yp62.chunk.js","scripts/BUDCkU2S2.chunk.js","scripts/lhZ5v-iN2.chunk.js","scripts/C1loT8MD2.chunk.js","scripts/B_rKniXe2.chunk.js","css/Cq6P0UxT.chunk.css","scripts/B_-pJtOI2.chunk.js","scripts/CpKc1O_Y.chunk.js","scripts/ChnNWPOK2.chunk.js","scripts/DMaQV7L2.chunk.js","scripts/CCb14vhF.chunk.js","scripts/BnuuRu_J2.chunk.js","scripts/CC5Dr9aG.chunk.js","scripts/D6Cj2lob2.chunk.js","scripts/DNuJUXpr2.chunk.js","scripts/1pA_p8rV2.chunk.js","scripts/Bld7iWR52.chunk.js","scripts/snXCXfT6.chunk.js","scripts/Dr3Lux2e.chunk.js","scripts/wdQVW3s5.chunk.js","scripts/rPN1bfU12.chunk.js","scripts/BIzu5ufQ.chunk.js","scripts/BMKh-xhT2.chunk.js","scripts/Cr6TXzQQ2.chunk.js","scripts/BcibGFe42.chunk.js","scripts/WvK58Ge12.chunk.js","scripts/BJUbYu222.chunk.js","scripts/BBDxSGT52.chunk.js","scripts/5ONJSThP.chunk.js","scripts/C7HU4huj.chunk.js","scripts/BlGyXBAH2.chunk.js","scripts/Dc1hYuQ12.chunk.js","scripts/jL1owusF.chunk.js","scripts/C-THHyTP.chunk.js","scripts/Dg1mFtY2.chunk.js","css/BM1mrJH4.chunk.css","scripts/_42F7SIA2.chunk.js","scripts/Cy6lZVxk.chunk.js","scripts/DYKH_3un.chunk.js","scripts/CunDpHqX2.chunk.js","css/0ZqRj7up.chunk.css","scripts/7TVnHsGg2.chunk.js","scripts/KmDyjq5W2.chunk.js","css/D1t0PpMS.chunk.css","scripts/CMHxOVI7.chunk.js","scripts/qR0lgBrT.chunk.js","scripts/D9w5fgSe2.chunk.js","scripts/C3q_xvci.chunk.js","scripts/Ce8kGUCD2.chunk.js","scripts/DlEtkSBj2.chunk.js","scripts/BxYKQEUG2.chunk.js","scripts/CbqdME7V2.chunk.js","scripts/C4P0fr5N.chunk.js","scripts/C-oZxdla2.chunk.js","css/JvwYHocG.chunk.css","scripts/C9a9PaRW2.chunk.js","scripts/C0exjRXJ.chunk.js","scripts/BvmO1d4u.chunk.js","scripts/ss6ZpC3s.chunk.js","scripts/CYSDN6kj.chunk.js","scripts/CVqxBe99.chunk.js","scripts/CNxJMwxC.chunk.js","scripts/CQRza4Ga.chunk.js","scripts/ByIC_M_8.chunk.js","scripts/Epqx0J1v.chunk.js","scripts/CDeqAwMc.chunk.js","scripts/GvIHspQt.chunk.js","scripts/BUnh3rN0.chunk.js","css/zFl67mql.chunk.css","scripts/Diu_gSvw.chunk.js","scripts/BJZXCSV9.chunk.js","css/B27vnbEi.chunk.css","scripts/C13eKcAl.chunk.js","scripts/2L3jD0XO.chunk.js","scripts/CpoRsMKu.chunk.js","scripts/DtBVLzzL2.chunk.js","scripts/gEYsxARL.chunk.js","scripts/BdNi1E8r2.chunk.js","scripts/DMVY8Y3J.chunk.js","scripts/CEtJop-5.chunk.js","scripts/BUoougrH.chunk.js","scripts/Dl2HqObu.chunk.js","css/FUAcQhsk.chunk.css","scripts/pWSEJIR4.chunk.js","scripts/CsWeCs8U2.chunk.js","scripts/Dat7ugzw2.chunk.js","scripts/PXIPIL8z.chunk.js","scripts/BLm6PYXX.chunk.js","scripts/BM2EJL9g.chunk.js","scripts/DqXpeRGy.chunk.js","scripts/CHUhp3aW.chunk.js","scripts/2AIpru28.chunk.js","scripts/DLXZNpMc.chunk.js","scripts/E5Pmu4O7.chunk.js","scripts/mIzlMVvp.chunk.js","scripts/BP_ivKVo.chunk.js","scripts/BiK2I_VY.chunk.js","scripts/D0Jec0hb.chunk.js","scripts/DH2Z2vbl.chunk.js","css/De40Dg3O.chunk.css","scripts/C7_5k1dQ2.chunk.js","scripts/CKOWgMyj2.chunk.js","scripts/D5yUWL7p2.chunk.js","scripts/CCrnRkGN2.chunk.js","scripts/BwelEZs92.chunk.js","scripts/DW24qN_e2.chunk.js","scripts/CFfjCXef2.chunk.js","scripts/HT_TXzUd2.chunk.js","scripts/DFIgRAfX2.chunk.js","css/DGerDKqO.chunk.css","scripts/CNm7AdhJ2.chunk.js","scripts/ClpxGEGl.chunk.js","scripts/CvNHBl0q.chunk.js","scripts/6ZXIO06e.chunk.js","scripts/CnsLb4V9.chunk.js","scripts/Dhx_Wqdc.chunk.js","scripts/DaT2nTfp.chunk.js","scripts/C-k6FY-f.chunk.js","scripts/CXVBjdpb.chunk.js","scripts/gl4k7dtw.chunk.js","scripts/CQ0MgG2c.chunk.js","scripts/ByoSSidB.chunk.js","scripts/De16zmhB.chunk.js","scripts/3SzX073C.chunk.js","scripts/C58qLDx-2.chunk.js","scripts/tYviAM3E2.chunk.js","scripts/C2uC_ups2.chunk.js","scripts/Yh8_3xNt2.chunk.js","scripts/itcPVJmN.chunk.js","scripts/D2jl5vrv.chunk.js","scripts/BGswYbRT.chunk.js","scripts/DtG0IH13.chunk.js","css/BFARciSU.chunk.css","scripts/BihfmPAZ.chunk.js","scripts/CxEHETCC.chunk.js","scripts/xa4cS6Fq.chunk.js","scripts/DIpRziwi.chunk.js","scripts/D0szf-0g.chunk.js","scripts/GlXL-aEw.chunk.js","scripts/C4SwJrBy.chunk.js","scripts/D1UCk2Gf.chunk.js","scripts/Bv4_l1OV.chunk.js","scripts/DFZuEEeD.chunk.js","scripts/jAbfamoi.chunk.js","scripts/9kSpxveW.chunk.js","scripts/CWYDa3Ok.chunk.js","scripts/DDJBf9pK2.chunk.js","scripts/BzbZUZa-2.chunk.js","scripts/BRrNQXpU2.chunk.js","css/DVhPtkT7.chunk.css","css/C1NkrNqQ.chunk.css","scripts/DUXPuDp72.chunk.js","scripts/Q0fOIAoj2.chunk.js","scripts/DXADbFxE2.chunk.js","scripts/CmssK8uN2.chunk.js","css/qDyfky2o.chunk.css","scripts/B9VCwo3g2.chunk.js","scripts/B9iz7_rU2.chunk.js","scripts/vsyhrSK92.chunk.js","scripts/C9JFcwr12.chunk.js","css/DS10jU9V.chunk.css","scripts/BmCPW8H12.chunk.js","scripts/D2-L8f1x2.chunk.js","scripts/DsBWAM3I2.chunk.js","scripts/DXSI-XXz2.chunk.js","scripts/D3-wtcxf2.chunk.js","scripts/DoJIQb_L2.chunk.js","scripts/Chgge8yX2.chunk.js","scripts/BiqmNDlz2.chunk.js","css/CuSUr3Gp.chunk.css","scripts/Dp6QHgBL.chunk.js","scripts/DJJ_eKiD.chunk.js","scripts/C5uTRLOC2.chunk.js","scripts/BteVhTv7.chunk.js","scripts/DdBOZ1oh.chunk.js","css/QlN9xNpq.chunk.css","scripts/Cvh-7L5i.chunk.js","scripts/ByszCPst.chunk.js","scripts/BDBRrgHv.chunk.js","scripts/DsbcGrr4.chunk.js","scripts/CpsbRDII.chunk.js","scripts/CzuHD4Ht.chunk.js","scripts/DBHDBu1Y.chunk.js","scripts/ryLD1Tv-.chunk.js","scripts/CCBk_ENs.chunk.js","scripts/Dsv4OsIs.chunk.js","scripts/CUIoIkRt.chunk.js","scripts/ss-hkhJP.chunk.js","scripts/DSlUluza.chunk.js","scripts/Bv998y2z.chunk.js","scripts/BsyAY6Vz.chunk.js","scripts/CjNVxyvt.chunk.js","css/8irsgQJA.chunk.css","scripts/BvQPudhO.chunk.js","scripts/BZu_LcDb.chunk.js","css/W-kt2nNQ.chunk.css","scripts/D1-ppP1Y.chunk.js","scripts/DLM8Yrib.chunk.js","scripts/1IFtXPNY.chunk.js","scripts/DewCxv4i.chunk.js","scripts/BQZMENs6.chunk.js","scripts/ipemOAXD.chunk.js","scripts/DPZ7V-5u.chunk.js","scripts/B8gP8YoA.chunk.js","scripts/B2DPLPW5.chunk.js","scripts/Bfz3IcRF.chunk.js","scripts/CfwSprmF.chunk.js","scripts/CdYjo8_g2.chunk.js","scripts/DtyWwr3N2.chunk.js","scripts/B44BW79X2.chunk.js","scripts/C4CcxMnx2.chunk.js","css/BdZAqx9q.chunk.css","scripts/BINRgRNJ2.chunk.js","scripts/CF981jTE2.chunk.js","css/9hiQ_mdl.chunk.css","scripts/BZvo5BYo2.chunk.js","css/C2BdWnV1.chunk.css","scripts/Z4RlHaVG.chunk.js","scripts/BU5CGdBX.chunk.js","css/BPdg7JW4.chunk.css","scripts/9kh0Xx2n2.chunk.js","scripts/BOJK8LI1.chunk.js","scripts/rXj0f9tP.chunk.js","scripts/DlAOGdRl.chunk.js","css/Dkh9W5Kv.chunk.css","scripts/DEZqrbCm.chunk.js","scripts/BBEIIgZ6.chunk.js","css/BgzV9aK4.chunk.css","css/CjXi_-dH.chunk.css","scripts/tnBD84bg2.chunk.js","scripts/DELN_PAD2.chunk.js","scripts/DzgAvoez.chunk.js","scripts/CfwcyO2N.chunk.js","scripts/OtQaFdir.chunk.js","scripts/Dopg0SXC.chunk.js","scripts/RjGIOTdP.chunk.js","scripts/CvtZ8ZFA2.chunk.js","scripts/CtrxbtlT2.chunk.js","scripts/B3fF5gkg.chunk.js","scripts/DXhChD7q.chunk.js","scripts/DIENjKhZ.chunk.js","scripts/B3xkRGwm2.chunk.js","scripts/ILW-TVyd2.chunk.js","scripts/CHL4nrKG.chunk.js","scripts/Bz3-ThVx.chunk.js","scripts/yk6K0dmz2.chunk.js","scripts/BiRgdaWH2.chunk.js","scripts/ChDKWvzE2.chunk.js","scripts/B5XaBzZh.chunk.js","css/D2t3ESms.chunk.css","scripts/BPavmm8c.chunk.js","scripts/IqGr9V7u2.chunk.js","css/ChavoTyg.chunk.css","scripts/Bf9r1ZoF2.chunk.js","scripts/B1Q9Fyu9.chunk.js","css/DDnpOnVB.chunk.css","scripts/CpgHBpMp.chunk.js","scripts/U8dlpUbv.chunk.js","scripts/CpcpPu9H.chunk.js","scripts/CLOak4u5.chunk.js","scripts/CWMwyVGJ2.chunk.js","scripts/QVHuXdWQ2.chunk.js","scripts/BINgMltM.chunk.js","scripts/A2-_B2N4.chunk.js","scripts/BzfCWDOl2.chunk.js","scripts/BIMvMi5v2.chunk.js","scripts/4thdKXE92.chunk.js","scripts/XBYhZGTN.chunk.js","css/jCkhZLwg.chunk.css","scripts/lPQgHDFT.chunk.js","scripts/B6mbiaAe.chunk.js","css/C0oMpmDK.chunk.css","scripts/pP_cpHCu2.chunk.js","scripts/DT8J1fGP.chunk.js","scripts/BLBtFc2V2.chunk.js","scripts/C3znHRYL2.chunk.js","css/BkC_YdWP.chunk.css","scripts/7I0L5W4N2.chunk.js","scripts/B6zmIqIU2.chunk.js","css/Xwy4vqMD.chunk.css","scripts/DusJhHeW2.chunk.js","scripts/UkK4dkBz2.chunk.js","css/BtfuP1Ql.chunk.css","scripts/CLjADRa42.chunk.js","scripts/BgOLbASl2.chunk.js","scripts/BM5QQdzk.chunk.js","css/BS_E5Dg8.chunk.css","css/Cy7NKnX4.chunk.css","scripts/B3AhKFfz.chunk.js","scripts/CvHvrB-t.chunk.js","scripts/D6bsI9KZ.chunk.js","css/BH6hCmvU.chunk.css","scripts/BbgQJe-T.chunk.js","scripts/B_9JhhOa.chunk.js","css/DnhOr8Y7.chunk.css","scripts/B3p3SaM12.chunk.js","scripts/B1r_1ubU.chunk.js","scripts/C5f0lBCw2.chunk.js","scripts/DFA7yKHu.chunk.js","css/Cfojuplq.chunk.css","scripts/CSNdQCNe2.chunk.js","scripts/BicQH0Al.chunk.js","css/D5JKYURg.chunk.css","scripts/D2NJvKT22.chunk.js","css/DPKl5ITe.chunk.css","css/SIofVEpH.chunk.css","scripts/DkxWaE9O.chunk.js","css/CBPl-SLD.chunk.css","scripts/AEOAlemi.chunk.js","scripts/CdI1ZlaQ.chunk.js","scripts/leJinMoS2.chunk.js","scripts/DbyH1eEj.chunk.js","scripts/BdF2BgJh.chunk.js","scripts/C9XBZFiR.chunk.js","scripts/DcmBU1rQ.chunk.js","scripts/CTGm5EOr.chunk.js","scripts/BYaCUOEW2.chunk.js","scripts/DJXt6rKd2.chunk.js","css/C2QK928M.chunk.css","scripts/CX6c7KRp2.chunk.js","scripts/DSPMbDdF.chunk.js","scripts/B_TE5XUR2.chunk.js","css/DQ_caKUF.chunk.css","scripts/C7vzxJTN.chunk.js","scripts/DEmA_y7H2.chunk.js","scripts/YmXEsLuD.chunk.js","scripts/DaTWNmwD.chunk.js","scripts/BVeF-Kak.chunk.js","scripts/Dv4x3RID.chunk.js","css/Crx9BPxO.chunk.css","scripts/CY_30Xdt.chunk.js","scripts/11tE0tcu.chunk.js","scripts/BfGmSsjS2.chunk.js","css/Cbi3KYBa.chunk.css","scripts/DHslo6At.chunk.js","css/XD2hD8t1.chunk.css","css/n2o1aWTK.chunk.css","scripts/C50tKiyZ2.chunk.js","css/BQo3NAc1.chunk.css","scripts/BjdMDTdw.chunk.js","scripts/BnFIrBPz.chunk.js","scripts/BTjs3x5b.chunk.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./C2w0pmFW.chunk.js";import{t as n}from"./wrLrTezN.chunk.js";import{u as r}from"./BX0wDJmp.chunk.js";import{t as i}from"./CVHQXNzi2.chunk.js";import{t as a}from"./CZgWQFsJ.chunk.js";import{t as o}from"./DruDe9vI.chunk.js";var s=e(t()),c=(e,t)=>{let[n,r]=s.useState();return s.useEffect(()=>{n&&r(null)},[t.videoId]),s.useEffect(()=>{if(!e||n)return;let{objectTypeId:o}=e;switch(t.videoId?o=i.Video:t.clipId?o=i.Clip:t.interactiveId&&(o=i.Interactive),o){case i.Video:{let e=s.lazy(async()=>{let{PlaySharedVideoView:e}=await a(async()=>{let{PlaySharedVideoView:e}=await import(`./B3y60nT5.chunk.js`);return{PlaySharedVideoView:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452]));return{default:e}});r(e);break}case i.Interactive:{let e=s.lazy(async()=>{let{SharedInteractiveView:e}=await a(async()=>{let{SharedInteractiveView:e}=await import(`./AEOAlemi.chunk.js`);return{SharedInteractiveView:e}},__vite__mapDeps([453,1,2,3,4,5,6,7,8,9,10,11,58,17,28,25,23,24,16,18,19,31,92,106,13,14,21,33,34,38,94,52,107,108,20,109,110,121,111,35,36,65,27,66,67,68,22,26,29,30,112,46,113,114,115,116,102,51,97,69,70,117,37,12,15,59,54,81,80,118,119,120,122,87,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,99,96,139,140,141,91,142,143,144,145,85,146,147,148,45,149,150,454,455,456,457,152,153,60,64,71,72,73,74,75,48,76,77,78,79,82,83,458,459,53,460,156,32,39,40,41,42,43,44,47,49,50,55,56,57,61,62,63,84,86,88,89,90,93,95,98,100,101,103,104,105,461,154,159,160,462,463,464,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,248,275,280,362,212,201,213,256,363,364,366,217,367,368,369,226,227,241,276,277,292,293,294,295,296,307,308,309,240,250,310,311,312,313,314,317,316,315,318,319,320,357,365,370,267,371,372,373,376,289,377,381,382,238,228,297,301,328,336,343,269,270,271,354,383,384,385,386,387,388,389,390,349,391,392,417,398,151,326,399,246,400,401,234,402,245,403,208,207,404,405,406,379,380,407,408,409,410,374,411,412,413,414,415,416,395,418,419,420,421,422,423,322,424]));return{default:e}});r(e);break}case i.Clip:{let e=s.lazy(async()=>{let{PlaySharedClipView:e}=await a(async()=>{let{PlaySharedClipView:e}=await import(`./DSPMbDdF.chunk.js`);return{PlaySharedClipView:e}},__vite__mapDeps([465,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,106,33,34,38,94,52,107,108,109,110,111,35,36,65,66,67,68,112,46,113,114,115,116,102,51,97,69,70,117,37,59,31,92,54,81,80,118,119,120,121,122,87,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,99,96,139,140,141,91,142,143,144,145,85,146,147,148,45,149,150,153,60,64,71,72,73,74,75,48,76,77,78,79,82,83,156,58,32,39,40,41,42,43,44,47,49,50,53,55,56,57,61,62,63,84,86,88,89,90,93,95,98,100,101,103,104,105,157,158,461,154,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,151,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,155,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,466,434,440,441,442,443,444,445,446,447,448,449,450,467]));return{default:e}});r(e);break}case i.Playlist:{let e=s.lazy(async()=>{let{SharedPlaylistView:e}=await a(async()=>{let{SharedPlaylistView:e}=await import(`./C7vzxJTN.chunk.js`);return{SharedPlaylistView:e}},__vite__mapDeps([468,1,3,4,469,162,34,8,6,163,164,107,87,165,166,13,14,7,21,2,33,37,5,9,10,38,11,72,73,74,17,23,27,28,24,65,66,67,68,22,25,26,29,30,58,16,18,19,59,31,32,15,35,36,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,12,20,55,56,57,60,61,62,63,64,69,70,71,75,76,77,78,79,80,81,82,83,84,85,86,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,112,113,382,215,201,118,119,120,212,213,216,106,108,109,110,151,149,134,140,144,143,145,470,224,326,238,228,471,174,289,302,153,317,315,267,154,271,355,217,356,399,182,246,176,400,472,122,387,374,376,178,377,458,459,114,460,388,473,366,141,367,368,369,226,227,241,171,172,275,276,277,280,292,293,294,295,296,307,308,309,240,250,310,311,312,313,175,314,316,318,319,320,357,365,370,371,372,373,474,156,133,142,126,127,475,208,207,476,173,278,362,256,363,364,477,478,378,479,480,481,401,234,402,245,403,404,405,406,379,380,407,408,409,410,411,412,413,414,415,416,157,158,390,349,381,130,131,136,137,138,139,297,301,328,336,343,269,270,354,383,384,385,386,389,391,392,159,160,482,483]));return{default:e}});r(e);break}case i.Series:{let e=s.lazy(async()=>{let{SharedSeriesView:e}=await a(async()=>{let{SharedSeriesView:e}=await import(`./BjdMDTdw.chunk.js`);return{SharedSeriesView:e}},__vite__mapDeps([484,1,3,4,485,13,6,14,7,21,2,33,34,35,37,5,8,9,10,11,26,17,23,27,28,24,29,30,16,18,19,59,31,54,75,48,76,71,72,73,74,65,38,66,67,68,22,25,77,15,78,64,60,51,69,70,79,80,81,82,83,382,215,87,20,201,118,119,120,212,162,163,164,107,165,166,213,216,106,94,52,108,109,110,102,97,151,44,45,46,47,49,50,53,43,149,133,134,140,326,228,153,91,92,99,96,317,267,399,182,246,176,400,472,122,387,57,376,174,289,178,377,458,459,36,114,460,156,12,58,32,39,40,41,42,55,56,61,62,63,84,85,86,88,89,90,93,95,98,100,101,103,104,105,142,113,126,127,141,143,144,145,475,208,207,476,173,278,313,175,314,315,362,256,363,364,477,478,378,479,480,481,401,234,402,245,171,172,292,293,294,295,366,217,367,368,369,226,227,241,275,276,277,280,296,307,308,309,240,250,310,311,312,316,318,319,320,357,365,370,371,372,373,403,404,405,406,379,380,407,408,409,410,374,411,412,413,414,415,416,157,158,390,349,381,130,131,136,137,138,139,238,297,301,328,336,343,269,270,271,354,383,384,385,386,388,389,391,392,461,154,159,160,422,423,322,424,486]));return{default:e}});r(e);break}}},[e,n]),n},l=n();function u({shareId:e,queryParams:t}){let n=r(e&&o.getShareObject(e)),i=c(n.data,t);if(!i)return(0,l.jsx)(l.Fragment,{});function a(){return t.videoId?t.videoId:t.clipId?t.clipId:t.interactiveId?t.interactiveId:n.data.objectId}let u={shareId:e,queryParams:t,objectId:a()};return(0,l.jsx)(s.Suspense,{fallback:(0,l.jsx)(l.Fragment,{}),children:(0,l.jsx)(i,{...u})})}export{u as BaseShareLinkView};
|
|
3
|
+
//# sourceMappingURL=D3ncynN72.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":";iSAaa,GACX,EACA,IACiB,CACjB,GAAM,CAAE,EAAU,KAAsB,SAAuB,EA4E/D,OA1EA,EAAM,cAAgB,CACf,GAGL,EAAY,IAAI,CAClB,EAAG,CAAC,EAAY,OAAO,CAAC,EAExB,EAAM,cAAgB,CACpB,GAAI,CAAC,GAAa,EAChB,OAEF,GAAI,CAAE,gBAAiB,EAUvB,OARI,EAAY,QACd,EAAe,EAAW,MACnB,EAAY,OACnB,EAAe,EAAW,KACnB,EAAY,gBACnB,EAAe,EAAW,aAGpB,EAAR,CACE,KAAK,EAAW,MAAO,CACrB,IAAM,IAAsB,KAAK,SAAY,CAC3C,GAAM,CAAE,4CAAF,CAAE,uBAAwB,MAAM,OAAO,gvDAC7C,MAAO,CAAE,QAAS,CAAoB,CACxC,CAAC,EAED,EAAY,CAAa,EACzB,KACF,CAEA,KAAK,EAAW,YAAa,CAC3B,IAAM,IAA4B,KAAK,SAAY,CACjD,GAAM,CAAE,8CAAF,CAAE,yBAA0B,MAAM,OAAO,orCAC/C,MAAO,CAAE,QAAS,CAAsB,CAC1C,CAAC,EAED,EAAY,CAAmB,EAC/B,KACF,CAEA,KAAK,EAAW,KAAM,CACpB,IAAM,IAAqB,KAAK,SAAY,CAC1C,GAAM,CAAE,2CAAF,CAAE,sBAAuB,MAAM,OAAO,ytDAC5C,MAAO,CAAE,QAAS,CAAmB,CACvC,CAAC,EAED,EAAY,CAAY,EACxB,KACF,CAEA,KAAK,EAAW,SAAU,CACxB,IAAM,IAAyB,KAAK,SAAY,CAC9C,GAAM,CAAE,2CAAF,CAAE,sBAAuB,MAAM,OAAO,ykCAC5C,MAAO,CAAE,QAAS,CAAmB,CACvC,CAAC,EAED,EAAY,CAAgB,EAC5B,KACF,CAEA,KAAK,EAAW,OAAQ,CACtB,IAAM,IAAuB,KAAK,SAAY,CAC5C,GAAM,CAAE,yCAAF,CAAE,oBAAqB,MAAM,OAAO,mjCAC1C,MAAO,CAAE,QAAS,CAAiB,CACrC,CAAC,EAED,EAAY,CAAc,EAC1B,KACF,CACF,CACF,EAAG,CAAE,EAAW,CAAS,CAAC,EAEnB,CACT,QC3EA,SAAgB,EAAkB,CAAE,UAAS,eAAoD,CAC/F,IAAM,EAAY,EAAuC,GAAW,EAAc,eAAe,CAAO,CAAC,EAEnG,EAAW,EAAyB,EAAU,KAAM,CAAW,EAErE,GAAI,CAAC,EACH,OAAO,qBAAI,GAEb,SAAS,GAAsB,CAU7B,OATI,EAAY,QACP,EAAY,QAEjB,EAAY,OACP,EAAY,OAEjB,EAAY,cACP,EAAY,cAEd,EAAU,KAAK,QACxB,CAGA,IAAM,EAAgC,CACpC,UACA,cACA,SAAU,EAAY,CACxB,EAEA,OACE,WAAO,SAAP,CAAgB,UAAU,qBAAI,aAC5B,SAAC,EAAD,CAAU,GAAI,CAAY,EACZ,EAEpB","names":[],"ignoreList":[],"sources":["../../src/apps/share/hooks/useLazyLoadShareLinkView.ts","../../src/apps/share/views/base-share-link/BaseShareLinkView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UnionShareObject } from 'libs/shared/interfaces';\n\nimport { ShareLinkQueryParams, ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\ntype LazyViewType = React.LazyExoticComponent<(props: ShareLinkViewProps) => React.ReactElement>;\n\n/**\n * Takes any share link, and returns the lazy view for it\n */\n \nexport const useLazyLoadShareLinkView = (\n shareLink: UnionShareObject,\n queryParams: ShareLinkQueryParams\n): LazyViewType => {\n const [ LazyView, setLazyView ] = React.useState<LazyViewType>();\n\n React.useEffect(() => {\n if (!LazyView)\n return;\n\n setLazyView(null);\n }, [queryParams.videoId]);\n\n React.useEffect(() => {\n if (!shareLink || LazyView)\n return;\n\n let { objectTypeId } = shareLink;\n\n if (queryParams.videoId)\n objectTypeId = MasterType.Video;\n else if (queryParams.clipId)\n objectTypeId = MasterType.Clip;\n else if (queryParams.interactiveId)\n objectTypeId = MasterType.Interactive;\n\n // TODO: Views for topics\n switch (objectTypeId) {\n case MasterType.Video: {\n const LazyVideoView = React.lazy(async () => {\n const { PlaySharedVideoView } = await import('apps/share/views/play-shared-video/PlaySharedVideoView');\n return { default: PlaySharedVideoView };\n });\n\n setLazyView(LazyVideoView);\n break;\n }\n\n case MasterType.Interactive: {\n const LazyInteractiveView = React.lazy(async () => {\n const { SharedInteractiveView } = await import('apps/share/views/shared-interactive/SharedInteractiveView');\n return { default: SharedInteractiveView };\n });\n\n setLazyView(LazyInteractiveView);\n break;\n }\n\n case MasterType.Clip: {\n const LazyClipView = React.lazy(async () => {\n const { PlaySharedClipView } = await import('apps/share/views/play-shared-clip/PlaySharedClipView');\n return { default: PlaySharedClipView };\n });\n\n setLazyView(LazyClipView);\n break;\n }\n\n case MasterType.Playlist: {\n const LazyPlaylistView = React.lazy(async () => {\n const { SharedPlaylistView } = await import('apps/share/views/shared-playlist/SharedPlaylistView');\n return { default: SharedPlaylistView };\n });\n\n setLazyView(LazyPlaylistView);\n break;\n }\n\n case MasterType.Series: {\n const LazySeriesView = React.lazy(async () => {\n const { SharedSeriesView } = await import('apps/share/views/shared-series/SharedSeriesView');\n return { default: SharedSeriesView };\n });\n\n setLazyView(LazySeriesView);\n break;\n }\n }\n }, [ shareLink, LazyView ]);\n\n return LazyView;\n};\n","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { UnionShareObject } from 'libs/shared/interfaces';\n\nimport { useLazyLoadShareLinkView } from 'apps/share/hooks/useLazyLoadShareLinkView';\nimport { ShareLinkQueryParams, ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\ninterface BaseShareLinkViewProps {\n shareId: string;\n queryParams: ShareLinkQueryParams;\n}\n\n/**\n * All share link validation and error handling is handled by `ShareLinkFilter`\n */\n// eslint-disable-next-line rulesdir/require-view-title\nexport function BaseShareLinkView({ shareId, queryParams }: BaseShareLinkViewProps): JSX.Element {\n const shareLink = Flight.useBasicFetch<UnionShareObject>(shareId && ShareRequests.getShareObject(shareId));\n\n const LazyView = useLazyLoadShareLinkView(shareLink.data, queryParams);\n\n if (!LazyView)\n return <></>;\n\n function getObjectId(): string {\n if (queryParams.videoId)\n return queryParams.videoId;\n\n if (queryParams.clipId)\n return queryParams.clipId;\n\n if (queryParams.interactiveId)\n return queryParams.interactiveId;\n\n return shareLink.data.objectId;\n }\n\n // At this time, all data will be fetched, as `isValid` won't be `true` until it is.\n const viewProps: ShareLinkViewProps = {\n shareId,\n queryParams,\n objectId: getObjectId()\n };\n\n return (\n <React.Suspense fallback={<></>}>\n <LazyView {...viewProps} />\n </React.Suspense>\n );\n}\n"],"file":"
|
|
1
|
+
{"version":3,"mappings":";iSAaa,GACX,EACA,IACiB,CACjB,GAAM,CAAE,EAAU,KAAsB,SAAuB,EA4E/D,OA1EA,EAAM,cAAgB,CACf,GAGL,EAAY,IAAI,CAClB,EAAG,CAAC,EAAY,OAAO,CAAC,EAExB,EAAM,cAAgB,CACpB,GAAI,CAAC,GAAa,EAChB,OAEF,GAAI,CAAE,gBAAiB,EAUvB,OARI,EAAY,QACd,EAAe,EAAW,MACnB,EAAY,OACnB,EAAe,EAAW,KACnB,EAAY,gBACnB,EAAe,EAAW,aAGpB,EAAR,CACE,KAAK,EAAW,MAAO,CACrB,IAAM,IAAsB,KAAK,SAAY,CAC3C,GAAM,CAAE,4CAAF,CAAE,uBAAwB,MAAM,OAAO,gvDAC7C,MAAO,CAAE,QAAS,CAAoB,CACxC,CAAC,EAED,EAAY,CAAa,EACzB,KACF,CAEA,KAAK,EAAW,YAAa,CAC3B,IAAM,IAA4B,KAAK,SAAY,CACjD,GAAM,CAAE,8CAAF,CAAE,yBAA0B,MAAM,OAAO,orCAC/C,MAAO,CAAE,QAAS,CAAsB,CAC1C,CAAC,EAED,EAAY,CAAmB,EAC/B,KACF,CAEA,KAAK,EAAW,KAAM,CACpB,IAAM,IAAqB,KAAK,SAAY,CAC1C,GAAM,CAAE,2CAAF,CAAE,sBAAuB,MAAM,OAAO,ytDAC5C,MAAO,CAAE,QAAS,CAAmB,CACvC,CAAC,EAED,EAAY,CAAY,EACxB,KACF,CAEA,KAAK,EAAW,SAAU,CACxB,IAAM,IAAyB,KAAK,SAAY,CAC9C,GAAM,CAAE,2CAAF,CAAE,sBAAuB,MAAM,OAAO,ykCAC5C,MAAO,CAAE,QAAS,CAAmB,CACvC,CAAC,EAED,EAAY,CAAgB,EAC5B,KACF,CAEA,KAAK,EAAW,OAAQ,CACtB,IAAM,IAAuB,KAAK,SAAY,CAC5C,GAAM,CAAE,yCAAF,CAAE,oBAAqB,MAAM,OAAO,mjCAC1C,MAAO,CAAE,QAAS,CAAiB,CACrC,CAAC,EAED,EAAY,CAAc,EAC1B,KACF,CACF,CACF,EAAG,CAAE,EAAW,CAAS,CAAC,EAEnB,CACT,QC3EA,SAAgB,EAAkB,CAAE,UAAS,eAAoD,CAC/F,IAAM,EAAY,EAAuC,GAAW,EAAc,eAAe,CAAO,CAAC,EAEnG,EAAW,EAAyB,EAAU,KAAM,CAAW,EAErE,GAAI,CAAC,EACH,OAAO,qBAAI,GAEb,SAAS,GAAsB,CAU7B,OATI,EAAY,QACP,EAAY,QAEjB,EAAY,OACP,EAAY,OAEjB,EAAY,cACP,EAAY,cAEd,EAAU,KAAK,QACxB,CAGA,IAAM,EAAgC,CACpC,UACA,cACA,SAAU,EAAY,CACxB,EAEA,OACE,WAAO,SAAP,CAAgB,UAAU,qBAAI,aAC5B,SAAC,EAAD,CAAU,GAAI,CAAY,EACZ,EAEpB","names":[],"ignoreList":[],"sources":["../../src/apps/share/hooks/useLazyLoadShareLinkView.ts","../../src/apps/share/views/base-share-link/BaseShareLinkView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UnionShareObject } from 'libs/shared/interfaces';\n\nimport { ShareLinkQueryParams, ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\ntype LazyViewType = React.LazyExoticComponent<(props: ShareLinkViewProps) => React.ReactElement>;\n\n/**\n * Takes any share link, and returns the lazy view for it\n */\n \nexport const useLazyLoadShareLinkView = (\n shareLink: UnionShareObject,\n queryParams: ShareLinkQueryParams\n): LazyViewType => {\n const [ LazyView, setLazyView ] = React.useState<LazyViewType>();\n\n React.useEffect(() => {\n if (!LazyView)\n return;\n\n setLazyView(null);\n }, [queryParams.videoId]);\n\n React.useEffect(() => {\n if (!shareLink || LazyView)\n return;\n\n let { objectTypeId } = shareLink;\n\n if (queryParams.videoId)\n objectTypeId = MasterType.Video;\n else if (queryParams.clipId)\n objectTypeId = MasterType.Clip;\n else if (queryParams.interactiveId)\n objectTypeId = MasterType.Interactive;\n\n // TODO: Views for topics\n switch (objectTypeId) {\n case MasterType.Video: {\n const LazyVideoView = React.lazy(async () => {\n const { PlaySharedVideoView } = await import('apps/share/views/play-shared-video/PlaySharedVideoView');\n return { default: PlaySharedVideoView };\n });\n\n setLazyView(LazyVideoView);\n break;\n }\n\n case MasterType.Interactive: {\n const LazyInteractiveView = React.lazy(async () => {\n const { SharedInteractiveView } = await import('apps/share/views/shared-interactive/SharedInteractiveView');\n return { default: SharedInteractiveView };\n });\n\n setLazyView(LazyInteractiveView);\n break;\n }\n\n case MasterType.Clip: {\n const LazyClipView = React.lazy(async () => {\n const { PlaySharedClipView } = await import('apps/share/views/play-shared-clip/PlaySharedClipView');\n return { default: PlaySharedClipView };\n });\n\n setLazyView(LazyClipView);\n break;\n }\n\n case MasterType.Playlist: {\n const LazyPlaylistView = React.lazy(async () => {\n const { SharedPlaylistView } = await import('apps/share/views/shared-playlist/SharedPlaylistView');\n return { default: SharedPlaylistView };\n });\n\n setLazyView(LazyPlaylistView);\n break;\n }\n\n case MasterType.Series: {\n const LazySeriesView = React.lazy(async () => {\n const { SharedSeriesView } = await import('apps/share/views/shared-series/SharedSeriesView');\n return { default: SharedSeriesView };\n });\n\n setLazyView(LazySeriesView);\n break;\n }\n }\n }, [ shareLink, LazyView ]);\n\n return LazyView;\n};\n","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { UnionShareObject } from 'libs/shared/interfaces';\n\nimport { useLazyLoadShareLinkView } from 'apps/share/hooks/useLazyLoadShareLinkView';\nimport { ShareLinkQueryParams, ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\ninterface BaseShareLinkViewProps {\n shareId: string;\n queryParams: ShareLinkQueryParams;\n}\n\n/**\n * All share link validation and error handling is handled by `ShareLinkFilter`\n */\n// eslint-disable-next-line rulesdir/require-view-title\nexport function BaseShareLinkView({ shareId, queryParams }: BaseShareLinkViewProps): JSX.Element {\n const shareLink = Flight.useBasicFetch<UnionShareObject>(shareId && ShareRequests.getShareObject(shareId));\n\n const LazyView = useLazyLoadShareLinkView(shareLink.data, queryParams);\n\n if (!LazyView)\n return <></>;\n\n function getObjectId(): string {\n if (queryParams.videoId)\n return queryParams.videoId;\n\n if (queryParams.clipId)\n return queryParams.clipId;\n\n if (queryParams.interactiveId)\n return queryParams.interactiveId;\n\n return shareLink.data.objectId;\n }\n\n // At this time, all data will be fetched, as `isValid` won't be `true` until it is.\n const viewProps: ShareLinkViewProps = {\n shareId,\n queryParams,\n objectId: getObjectId()\n };\n\n return (\n <React.Suspense fallback={<></>}>\n <LazyView {...viewProps} />\n </React.Suspense>\n );\n}\n"],"file":"D3ncynN72.chunk.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./snXCXfT6.chunk.js";import{u as n,y as r}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{n as i}from"./B785hxeE.chunk.js";import{t as a}from"./CQyJ7YGa.chunk.js";import{t as o}from"./e57H3T-k.chunk.js";import{t as s}from"./C2w0pmFW.chunk.js";import{t as c}from"./wrLrTezN.chunk.js";import{t as l}from"./BXTI9cmX.chunk.js";import{i as u}from"./BYSskNbK.chunk.js";import{C as d,u as f}from"./BX0wDJmp.chunk.js";import{n as p}from"./BVnMI-dl.chunk.js";import{t as m}from"./C1SLt-ar.chunk.js";import{l as h,y as g}from"./NlCAcBdo.chunk.js";import{n as _,r as v}from"./1LRpIhCn.chunk.js";import{t as y}from"./RjGIOTdP.chunk.js";import{t as b}from"./DTGfiG8Y.chunk.js";import{t as x}from"./BxbRBSiP.chunk.js";import{i as S,n as C,t as w}from"./Cr6TXzQQ2.chunk.js";import{n as T}from"./CmcCVXi32.chunk.js";import{t as E}from"./DGmmTRu72.chunk.js";import{t as D}from"./DZX1tZ-D2.chunk.js";import{t as O}from"./xwiwWcv12.chunk.js";import{n as k}from"./BB6YslUc2.chunk.js";import{t as A}from"./CqrjHjAN.chunk.js";import{t as j}from"./eoAypzU3.chunk.js";import{t as M}from"./Kx-r9MXT.chunk.js";import{t as ee}from"./D_gWf2lC.chunk.js";import{t as N}from"./CZbN8PTA.chunk.js";import{t as P}from"./M97_Ztsu.chunk.js";import{t as F}from"./7-GJWRH82.chunk.js";import{t as te}from"./dLd5d3X22.chunk.js";import{t as ne}from"./CZc2Wh_b2.chunk.js";import{t as re}from"./B7fTfFj62.chunk.js";import{t as ie}from"./C4TNMYS42.chunk.js";import{t as ae}from"./QCFxJYkI2.chunk.js";import{n as oe,t as se}from"./e_p5kSFR2.chunk.js";import{t as ce}from"./CduNFx13.chunk.js";import{t as I}from"./BJZXCSV9.chunk.js";import{n as le,t as ue}from"./C6-aC3vu.chunk.js";import{t as de}from"./B3gsVN-_.chunk.js";import{t as L}from"./Dfw0sxVt2.chunk.js";import{t as fe}from"./BugRosaL2.chunk.js";import{t as pe}from"./DYDxLHiV2.chunk.js";import{n as R,t as z}from"./CpFtf-tI2.chunk.js";import{t as B}from"./DBkEQkKm2.chunk.js";import{t as me}from"./BUoougrH.chunk.js";import{t as he}from"./CzuHD4Ht.chunk.js";import{a as ge,r as V,t as H}from"./CsWeCs8U2.chunk.js";import{t as U}from"./BwelEZs92.chunk.js";import{n as W,r as G}from"./BcibGFe42.chunk.js";import{t as _e}from"./DW24qN_e2.chunk.js";import{t as ve}from"./BxYKQEUG2.chunk.js";import{t as ye}from"./5ONJSThP.chunk.js";import{t as K}from"./C7GcQtj3.chunk.js";import{t as be}from"./vsyhrSK92.chunk.js";import{t as xe}from"./WvK58Ge12.chunk.js";import{t as Se}from"./DsbcGrr4.chunk.js";import{t as Ce}from"./jAtAipGN.chunk.js";import"./BILyzh0I.chunk.js";import{t as we}from"./1IFtXPNY.chunk.js";import"./CCb14vhF.chunk.js";import{t as Te}from"./B8gP8YoA.chunk.js";import{t as Ee}from"./BZvo5BYo2.chunk.js";import{t as De}from"./Nw0EY4wG2.chunk.js";import{r as Oe,t as ke}from"./BoPQx4nu2.chunk.js";import{t as Ae}from"./CX7ot_FG2.chunk.js";import{n as je,t as Me}from"./CMZa2RMP2.chunk.js";import{t as Ne}from"./BnuuRu_J2.chunk.js";import{o as Pe}from"./CpgHBpMp.chunk.js";import{n as Fe,t as Ie}from"./CvtZ8ZFA2.chunk.js";import{t as Le}from"./BCqRKj1E2.chunk.js";import{t as Re}from"./BYaCUOEW2.chunk.js";import{n as ze}from"./DNuJUXpr2.chunk.js";import{t as Be}from"./DNzVTsKN.chunk.js";import{t as Ve}from"./BLKgsTNL.chunk.js";var q=e(s()),J=c(),He=a.encloseNamespace(`search.searchWidgetTooltip`);function Ue(e,t){return{[S.SearchRelevantTopics]:`relevantTopicsTooltip`,[S.SearchCompanies]:`studiosAndChannelsTooltip`,[S.SearchTopResults]:`topResultsTooltip`,[S.SearchSeries]:`seriesTooltip`,[S.SearchPlaylists]:`playlistsTooltip`,[S.SearchMyVideosFolder]:`myVideosFoldersTooltip`,[S.SearchMySchoolLibraryFolder]:t?`mySchoolFoldersTooltipTertiary`:`mySchoolFoldersTooltip`,[S.SearchMyVideos]:`myVideosTooltip`,[S.SearchMySchoolLibraryVideos]:t?`mySchoolVideosTooltipTertiary`:`mySchoolVideosTooltip`,[S.SearchExchangeArchive]:`exchangeArchiveTooltip`,[S.SearchClickViewLive]:`clickViewLiveTooltip`,[S.SearchRelatedResults]:`relatedResultsTooltip`,[S.SearchContentPartners]:`channelsTooltip`}[e]}function We(e){let n=Ue(e.widgetId,e.isTertiary);return n?(0,J.jsx)(t,{className:`svg-container text-secondary`,svg:ve,title:He(n),tooltipPlacement:`top`,tooltipSpanHack:!0,tooltipSpanHackClassName:`ms-2`}):(0,J.jsx)(J.Fragment,{})}var Ge={searchResultsWidgetsContainer:`_searchResultsWidgetsContainer_13lfz_1`},Ke=a.encloseNamespace(`search.mixedWidgetSearchResults`);function qe(e,t){return e.widgetId===S.SearchMySchoolLibraryFolder?t?Ke(`tertiaryFolderHeading`):e.name:e.widgetId===S.SearchMySchoolLibraryVideos&&t?Ke(`tertiaryLibraryVideoHeading`):e.name}function Je(e){return e.widgetId===S.SearchCurriculumCode?{curriculumLeafName:e.content?.name,curriculumLeafDescription:e.content?.description}:{}}function Ye(e){if(e.widgetId===S.SearchSeries)return`search-series-widget`}function Xe(e){return[S.SearchTags].includes(e.widgetId)}function Ze(e){return!e.data||!e.data.length?(0,J.jsx)(J.Fragment,{}):(0,J.jsx)(`div`,{className:Ge.searchResultsWidgetsContainer,children:e.data.map((t,n)=>{let r=e.data.length-1===n;return(0,J.jsxs)(q.Fragment,{children:[(0,J.jsx)(Le,{index:n,item:t,dashboardTarget:T.Search,getName:t=>qe(t,e.isTertiary),getWidgetMetadata:e=>Je(e),infiniteFetch:r,getCursor:e=>e.content?.cursor,getRequest:n=>e.getRequest(t.widgetId,n),getPartialLoadingPredicate:()=>Xe(t),getBadgeComponent:t=>(0,J.jsx)(We,{widgetId:t.widgetId,isTertiary:e.isTertiary}),audiences:e.audiences,currentUser:e.currentUser,appLinks:e.widgetAppLinks,appLinkOptions:e.widgetAppLinkOptions,commonVideoProps:e.commonVideoProps,availablePresentations:e.availablePresentations,settingsHash:e.settingsHash,hasPermissions:e.hasPermissions,getWidgetClassName:Ye,getAnalyticsData:e.getAnalyticsData,getSelectedItems:e.getSelectedItems,hasLocalPermissions:e.hasLocalPermissions,getSeeMoreAppLink:t=>e.getSeeMoreAppLink(t,r),setIsEmpty:n=>e.setIsEmpty(t.widgetId,n),resultsTransformers:e.searchResultsTransformers,widgetItemTransformers:e.widgetItemTransformers,onLoadWidgetsTriggers:e.onLoadWidgetsTriggers}),t.name===`Tags`&&e.children]},t.widgetId)})})}var Qe={video:k.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:${x.Curation}}`,clip:k.CLIP_COLLECTION,interactive:k.INTERACTIVE_COLLECTION,company:`logo`,category:`libraries[_logo],thumbnail`,partner_profile:k.PARTNER_PROFILE};function $e(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:ge.mapMaxScoreToSearchResults(n,r)}}function Y(e){return Object.entries(e).reduce((e,[,t])=>{let n=t;return typeof t==`object`?n=Y(t):[`number`,`boolean`,`string`].includes(typeof t)&&(n=t.toString()),e.length?`${e},${n}`:n},``)}function et(e,t){return Object.entries(e).reduce((e,[n,r])=>{let i=n.replace(U.FILTER_PARAM_PREFIX,``);return i===`presentation`&&t!==S.SearchTopResults&&t!==S.SearchRelatedResults&&t!==S.SearchSeries?e:{...e,[i]:r}},{})}var tt={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])}:${Y(t)}`,{[`${U.FILTER_PARAM_PREFIX}indicesFilters`]:i,isLearner:a,...o}=t,s={widgets:n,indices:i,filters:et(o,null),query:e,includeAllIndices:!1,isLearner:!!a};return{url:`{gateway}/v5/search/widgets`,publicUrl:`/api/search/v5/widgets`,type:d.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])}:${Y(n)}`,{[`${U.FILTER_PARAM_PREFIX}indicesFilters`]:a,isLearner:o,excludeVideoIds:s,...c}=n,l={widgets:r,indices:a,filters:et(c,e),query:t,includeAllIndices:!1,isLearner:!!o,ogql:Qe,excludeVideoIds:s};return{url:`{gateway}/v5/search/widgets/${e}`,publicUrl:`/api/search/v5/widgets/${e}`,type:d.POST,data:l,key:i,formatData:e=>e&&{...e,content:e.content?.data?{...e.content,data:e.content.data.map(re.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])}:${Y(t)}`,{[`${U.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:Qe};return{url:`{gateway}/v5/search`,publicUrl:`/api/search/v5`,type:d.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{[`${U.FILTER_PARAM_PREFIX}excludeLibraryExclusive`]:l,isLearner:u,...f}=r,p={searchType:`content`,indices:n.map(e=>e!==`video`||!l?{index:e}:{index:e,filters:{excludeLibraryExclusive:l}}),filters:Object.entries(f).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:d.POST,data:p,key:c,formatData:$e}},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:D.urlBuilder(`{gateway}/v3/search`,u),publicUrl:D.urlBuilder(`/api/search`,u),key:l,formatData:$e,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:D.urlBuilder(`{gateway}/v3/search/tags-and-classifications`,o),publicUrl:D.urlBuilder(`/api/search/tags-and-classifications`,o),key:s,success:i,error:a,normalize:!1}}};function nt(e){let{hasPermissions:t}=de(),n=t(i.StudentExperience),{availablePresentations:r,hasCompleted:a}=K();function o(){return n?e?[e?.id]:null:r?.map(e=>e.id)}let s=o();return f(a&&s&&Se.schoolLevels(s))}function rt(){let e=f(A.currentUser()),t=L(),n=E(null),{upsellPresentationType:r}=ie(),i=f(we.streamableLearning()),a=i.data?.objectId,o=n.clickViewLive&&r!==b.StreamableLearning,s=t.hasProduct(ae.Exchange)&&n.showExchangeSearchResults,c=f(e.data?.isAuthenticated&&we.domainLibraries([`sharedLibrary`,`customLibrary`,`workspace`,`hostedLibrary`,`exchange`])),l=c.data??[],u=l?.findIndex(e=>e.type===_e.Exchange),d=l[u]?.id;if(s||(l=[...l.slice(0,u),...l.slice(u+1)]),a&&!o){let e=l?.findIndex(e=>e.id.toString()===a.toString());l=[...l.slice(0,e),...l.slice(e+1)]}return{hasLibrariesCompleted:i.hasCompleted&&(!e.data?.isAuthenticated||c.hasCompleted),libraries:l,exchangeLibraryId:d,streamableLibraryId:a,showExchangeSearchResults:s,showStreamableSearchResults:o}}function it(){let e=f(A.currentUser()),t=f(Ve.ratings(e.data?.countryCode)),{activePresentation:n}=N(),{availablePresentations:r,hasCompleted:i}=K();return!i||r?.length>1||!n||_.getMappedPresentationLevel(n.learningLevel)!==v.Level_1?t:{...t,data:t.data?.filter(e=>e.code&&e.value<64)}}function at(e){let t=f(A.currentUser()),n=f(t.data?.id&&A.user(t.data.id)),r=f(ee.config()),a=f(t.data?.isAuthenticated&&O.yearGroups(t.data.customerId)),o=L(),s=E(null),c=be(),{hasLibrariesCompleted:l,libraries:u,exchangeLibraryId:d,streamableLibraryId:p,showExchangeSearchResults:m,showStreamableSearchResults:h}=rt(),{activePresentation:g}=N(),{availablePresentations:_,hasCompleted:v}=K(),y=g?.id,b=Re(),x=nt(g),S=x.data?.schoolLevels?.map(e=>e.id),C=f(x?.data&&ne.topicsFromAllAvailablePresentations(S)),w=it(),{hasPermissions:D,hasLocalPermissions:k}=de(),j=D(i.StudentExperience),M=D(i.ViewLibraries),P=D(i.ViewMoviesTv),F=D(i.GuestExperience),{dashboard:te}=Te({targetType:T.MoviesAndTv,queryParams:e});return{queryParams:e,currentUser:t,userDetails:n,yearGroups:a,products:o,settings:s,audiences:b,schoolLevels:x,currentPresentation:g,availablePresentations:_,availableTopics:C,ratings:w,moviesAndTvDashboard:te,currentPresentationId:y,isLearner:j,isGuest:F,libraries:u,hasDataLoaded:b.hasCompleted&&v&&t.hasCompleted&&(!t.data?.isAuthenticated||n.hasCompleted)&&w.hasCompleted&&r.hasCompleted&&_&&(!t.data?.isAuthenticated||!o.isLoadingProducts)&&!s.isLoadingSettings&&l,exchangeLibraryId:d,streamableLibraryId:p,showExchangeSearchResults:m,hasPermissions:D,hasLocalPermissions:k,hasCustomLibraries:M,showStreamableSearchResults:h,hasMoviesAndTv:P,isTertiary:c}}function ot(e){return(0,J.jsx)(`svg`,{...e,children:(0,J.jsx)(`path`,{fill:`currentColor`,fillRule:`evenodd`,d:`M17.437 8.5a2 2 0 0 0-3.874 0H4.5a.5.5 0 0 0 0 1h9.063a2 2 0 0 0 3.874 0H19.5a.5.5 0 0 0 0-1zM16.5 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-12 5.5a.5.5 0 0 0 0 1h3.063a2 2 0 0 0 3.874 0H19.5a.5.5 0 0 0 0-1h-8.063a2 2 0 0 0-3.874 0zm5-.5a1 1 0 1 1 0 2 1 1 0 0 1 0-2`,clipRule:`evenodd`})})}var st=[`a[href]`,`button:not([disabled])`,`input:not([disabled])`,`select:not([disabled])`,`textarea:not([disabled])`,`[tabindex]:not([tabindex="-1"])`].join(`,`);function ct(e){let t=q.useRef(null),[n,r]=q.useState(!1);function i(){return!!t.current}function a(){t.current&&(t.current.focus(),r(!0))}function o(n){if(n.key===`Escape`){e();return}if(n.key!==`Tab`||!t.current)return;let r=Array.from(t.current.querySelectorAll(st));if(r.length===0){n.preventDefault(),t.current.focus();return}let i=r[0],a=r[r.length-1],o=document.activeElement;n.shiftKey&&o===i?(n.preventDefault(),a.focus()):!n.shiftKey&&o===a&&(n.preventDefault(),i.focus())}return q.useEffect(()=>{!i()||n||a()},[t.current,n]),{focusRef:t,onKeyDown:o}}var lt={openInAppPrompt:`_openInAppPrompt_cnr4k_1`,slideUp:`_slideUp_cnr4k_1`,mask:`_mask_cnr4k_6`};function ut(e){let{focusRef:t,onKeyDown:n}=ct(e.onClose);return(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`div`,{className:`modal-backdrop show ${lt.mask}`,onClick:e.onClose}),(0,J.jsx)(`div`,{className:`position-fixed w-100 bg-white pb-3 px-3 bottom-0 start-0 rounded-top-3 overflow-auto ${lt.openInAppPrompt}`,ref:t,role:`dialog`,"aria-label":`Action sheet`,"aria-modal":`true`,tabIndex:-1,onKeyDown:n,children:e.children})]})}function dt(e){let{filterState:t}=e,n=e.isMoreFilter?t.moreFilters[e.filter.id]:t[e.filter.id],[r,i]=q.useState(n);function a(t){i(t),e.setParentDraftState(e.filter.id,t)}let o=q.useMemo(()=>e.filter.customComponent?e.filter.customComponent:H.mapTypeToComponent(e.filter.type),[e.filter.type]);return(0,J.jsxs)(`div`,{className:e.className||``,children:[(0,J.jsx)(`hr`,{className:`hr`}),(0,J.jsx)(o,{filter:e.filter,draftState:r,setDraftState:a,filterState:t,isExpandable:!0})]})}var ft=`search.smallScreenSearchFilters`;function pt(e){let{queryParams:t,appLink:n,isFetchingOptions:r,constantIndices:i=[]}=e,o=q.useMemo(()=>H.deriveInitialStateFromQuery(t,e.mainFilters,e.moreFilters,n),[t,r,e.mainFilters,e.moreFilters,n]),s=q.useRef(p.deepClone(o)),c=(e,t)=>s.current[e]=t,l=(e,t)=>s.current.moreFilters[e]=t,u=m.uniq([...H.getAppliedIndices(t,!0,e._hasPartnerProfiles),...i]),{mainFilters:d,moreFilters:f}=H.mixinDisabledFields(o,u,e.mainFilters,e.moreFilters),h=d.filter(e=>e.type!==`tag`);function g(){let r=p.omit(s.current,[`appLink`,`moreFilters`]),i=p.omit(s.current?.moreFilters,[`appLink`]);H.applyFilter([...h,...f?.filters??[]],o,{...r,...i},n),e.analyticsOptions&&H.logFilterEvent(e.mainFilters,e.moreFilters,o,t.query,e.analyticsOptions),e.closeFilter()}return q.useEffect(()=>(document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=``}),[]),(0,J.jsx)(ut,{onClose:e.closeFilter,children:(0,J.jsxs)(z.Provider,{value:ft,children:[(0,J.jsx)(`div`,{className:`pt-3 mb-0 h4`,children:(0,J.jsx)(R,{phrase:`heading`})}),h.map(e=>(0,J.jsx)(dt,{className:`mb-4`,filter:e,filterState:o,setParentDraftState:c},e.id)),f&&f.filters?.map(e=>(0,J.jsx)(dt,{className:`mb-4`,filter:e,filterState:o,setParentDraftState:l,isMoreFilter:!0},e.id)),(0,J.jsxs)(`div`,{className:`position-fixed bottom-0 start-0 p-3 d-flex justify-content-between flex-row-reverse bg-white w-100`,children:[(0,J.jsx)(`button`,{className:`btn btn-dark justify-item-end`,onClick:g,children:a.getPhrase(ft,`apply`)}),H.hasActiveFilters(t)&&(0,J.jsx)(Oe,{mainFilters:e.mainFilters,moreFilters:e.moreFilters,currentQueryParam:t.query,analyticsOptions:e.analyticsOptions,alignLeft:e.alignResetButtonLeft,filterState:o,onClick:e.closeFilter})]})]})})}var mt={filterButtonContainer:`_filterButtonContainer_1n0p0_1`,filterButton:`_filterButton_1n0p0_1`},ht=`search.searchResultsFilter`;function gt(e){let{searchData:n,queryParams:r,filters:i,hideDivider:o}=e,s=ye(),[c,u]=q.useState(!1);return(0,J.jsxs)(J.Fragment,{children:[!!n.audiences.data&&!!n.ratings.data&&!!n.availableTopics.data&&(s.xs?(0,J.jsx)(`div`,{className:`position-sticky bg-white ${mt.filterButtonContainer}`,children:(0,J.jsxs)(`button`,{className:`btn btn-dark w-100 mb-3 ${mt.filterButton}`,onClick:()=>u(!0),children:[(0,J.jsx)(t,{svg:ot}),(0,J.jsx)(`span`,{className:`ms-1`,children:a.getPhrase(ht,`filterText`)})]})}):(0,J.jsx)(ke,{queryParams:r,mainFilters:i?.mainFilters,moreFilters:i?.moreFilters,analyticsOptions:{entity:h.SearchResults,location:g.SearchFilters},appLink:{application:l.SEARCH,action:j.Search.HOME},hideDivider:o,_hasPartnerProfiles:n.settings.hasPartnerProfiles})),s.xs&&c&&(0,J.jsx)(pt,{queryParams:r,mainFilters:i?.mainFilters,moreFilters:i?.moreFilters,analyticsOptions:{entity:h.SearchResults,location:g.SearchFilters},appLink:{application:l.SEARCH,action:j.Search.HOME},closeFilter:()=>u(!1),_hasPartnerProfiles:n.settings?.hasPartnerProfiles})]})}var _t=`search.searchResultsRequestVideo`;function vt(e){let{skipBeforeRequestingVideoStep:t=!0}=e;return(0,J.jsxs)(`div`,{className:`d-flex flex-column align-items-center justify-content-center gap-3 mb-3`,children:[e.description?(0,J.jsx)(`span`,{children:e.description}):(0,J.jsx)(R,{phrase:`description`,namespace:_t}),(0,J.jsx)(ce,{appLink:{application:l.DEFAULT,action:j.Default.GIVE_FEEDBACK,params:{selectedOption:De.REQUEST_VIDEO,skipBeforeRequestingVideoStep:!!t}},className:`btn btn-outline-dark`,children:(0,J.jsx)(R,{phrase:`requestVideo`,namespace:_t})})]})}var yt=`search.searchResultsEmptyStateV2`,bt=a.encloseNamespace(yt);function xt(e){let t=e.scotland&&e.query?.trim()?.toLowerCase()===`nessie`?F.EmptyStates.Search.RESULTS_SCOTLAND:F.EmptyStates.Search.RESULTS;return(0,J.jsxs)(z.Provider,{value:yt,children:[(0,J.jsxs)(I,{children:[(0,J.jsx)(I.Image,{src:t}),(0,J.jsx)(I.Heading,{children:e.query?(0,J.jsx)(R,{phrase:`headingWithQuery`,options:{query:e.query}}):(0,J.jsx)(R,{phrase:`headingWithoutQuery`})}),(0,J.jsxs)(I.Info,{className:`w-50 m-0`,children:[(0,J.jsx)(R,{phrase:`info`}),(0,J.jsx)(ce,{className:`info-link`,appLink:{application:l.SUBJECT,action:j.Subjects.PRESENTATION_TOPICS,args:[null]},children:(0,J.jsx)(R,{phrase:`topicsAppLink`})})]})]}),!e.hideRequestVideo&&(0,J.jsx)(vt,{description:bt(`requestVideoInfo`)})]})}function St(e){let t=e.data;!t||!t.length||t.forEach(t=>{if(t.widgetId!==S.SearchCurriculumCode)return;let n=!!t?.content?.name&&!!t?.content?.description;if(e.isCurriculumCodeSearch&&!n){r.trigger({...r.getCurrentAppLink(),params:{...r.getCurrentAppLink().params||{},[V]:void 0}},{replace:!0});return}if(!e.isCurriculumCodeSearch&&n){r.trigger({...r.getCurrentAppLink(),params:{...r.getCurrentAppLink().params||{},[V]:!0}},{replace:!0});return}})}function Ct(e){let t=e.data;if(!t||!t.length)return;let n=t.reduce((e,t)=>t.content.data.reduce((e,t)=>[...e,t],e),[]);n.length&&e.fetchObjects(n)}function wt(e){return[t=>St({data:t,...e}),t=>Ct({data:t,...e})]}function Tt(e){let{data:t}=e;if(!t)return e;let n=w.mergeWidgets(t,(e,t)=>{e.content.data=[...e.content.data||[],...t.content.data]});return{...e,data:n}}function Et(e){if(!e.data)throw new n(`Data is not defined in the options`);return e.data}function Dt(){return[e=>Et(Tt({data:e}))]}function Ot(e){if(e.data.widgetId!==S.SearchRelevantTopics)return e;function t(t,n){return _.sortByLearningLevel(t,n,e.availablePresentations)}let n=e.data.content.data.slice(0,6),r=e.data.content.data.slice(6),i=[],a=[];n.forEach(t=>{if(xe.isClassification(t)){if(t?.name?.toLowerCase()===e.query?.toLowerCase()){i.push(t);return}a.push(t)}}),i.sort(t),a.sort(t);let o={...e.data,content:{...e.data.content,data:[...i,...a,...r]}};return e={...e,data:o},e}function kt(e){if(e.data.widgetId!==S.SearchTags)return e;let t=e.data.content.data.map(e=>({id:e.name,...e}));return e.data={...e.data,content:{...e.data.content,data:t}},e}function X(e){if(!e.data)throw new n(`Data is not defined in the options`);return e.data}function At(e){return[t=>X(kt({data:t,...e})),t=>X(Ot({data:t,...e}))]}var jt=[S.SearchRelevantTopics,S.SearchCompanies,S.SearchPlaylists,S.SearchSeries,S.SearchTopResults,S.SearchMyVideos,S.SearchMyVideosFolder,S.SearchMySchoolLibraryVideos,S.SearchMySchoolLibraryFolder,S.SearchExchangeArchive,S.SearchClickViewLive,S.SearchRelatedResults,S.SearchCurriculumCode,S.SearchContentPartners];function Z(e){let t=e.queryParams?.[e.key];return typeof t==`string`?t===e.value:Array.isArray(t)?t.includes(e.value):!1}function Mt(e,t){if(!e?.focus)return;let n;if(typeof e.focus==`string`&&(n=jt.find(t=>t===e.focus)),Array.isArray(e.focus)&&e.focus.length===1&&(n=jt.find(t=>t===e.focus[0])),n&&C[n]?.predicate?.({targetType:T.Search,settingsHash:t.settingsHash}))return n}function Nt(e,t){let n=[],r=Mt(e,t);return r?[r,S.SearchTags]:(Z({key:`type`,value:G.Classification,queryParams:e})&&n.push(S.SearchRelevantTopics),Z({key:`type`,value:G.Company,queryParams:e})&&n.push(S.SearchCompanies),t.settingsHash?.hasPartnerProfiles&&Z({key:`type`,value:G.PartnerProfile,queryParams:e})&&n.push(S.SearchContentPartners),Z({key:`type`,value:G.Series,queryParams:e})&&n.push(S.SearchSeries),Z({key:`type`,value:G.Playlist,queryParams:e})&&n.push(S.SearchPlaylists),Z({key:`type`,value:G.Category,queryParams:e})&&n.push(S.SearchMySchoolLibraryFolder,S.SearchMyVideosFolder),Z({key:`source`,value:W.ExchangeArchive,queryParams:e})&&n.push(S.SearchExchangeArchive),t?.settingsHash?.clickViewLive&&Z({key:`source`,value:W.LiveStreams,queryParams:e})&&n.push(S.SearchClickViewLive),Z({key:`source`,value:W.MyVideos,queryParams:e})&&n.push(S.SearchMyVideos,S.SearchMyVideosFolder),Z({key:`source`,value:W.ClickView,queryParams:e})&&n.push(S.SearchTopResults,S.SearchRelatedResults),Z({key:`source`,value:W.School,queryParams:e})&&n.push(S.SearchMySchoolLibraryVideos,S.SearchMySchoolLibraryFolder),(Z({key:`type`,value:G.Video,queryParams:e})||Z({key:`type`,value:G.Clip,queryParams:e})||Z({key:`type`,value:G.Interactive,queryParams:e}))&&n.push(S.SearchTopResults,S.SearchRelatedResults,S.SearchMySchoolLibraryVideos,S.SearchMyVideos,S.SearchExchangeArchive,S.SearchClickViewLive,S.SearchCurriculumCode),n.length&&(n.push(S.SearchTopResults),n.push(S.SearchTags)),m.uniq(n))}var Q={isOnlyActiveWidget(e,t){let n=t?.focus;return typeof n==`string`?n.toLowerCase()===e.toLowerCase():!Array.isArray(n)||n.length!==1?!1:!!n.find(t=>t.toLowerCase()===e.toLowerCase())},getActiveWidgetFilters(e,t){return Nt(e,t).map(e=>({id:e}))},getWidgetFilters(e){let{queryParams:t,widgetTypeId:n,cursor:r,options:i}=e;return r?[{id:n,cursor:r}]:Nt(t,i).map(e=>({id:e}))},getSelectedTagOrClassification(e){return typeof e?.tagOrClassification==`string`?[{id:e.tagOrClassification,name:e.tagOrClassification}]:Array.isArray(e?.tagOrClassification)?e.tagOrClassification.map(e=>({id:e,name:e})):[]},getSearchWidgetSelectedItems(e,t){return t===S.SearchTags?Q.getSelectedTagOrClassification(e):[]}};function Pt(e){return!!e.content.cursor}var Ft={getSearchWidgetAppLinks(e,t,n,r){return{partner:fe.getPartnerDashboardAppLink,classification:e=>{let r={...t,moviesAndTv:_.isMtv(e)};return me.getAppLink(e,r,n)},videoType:(e,t)=>B.getAppLink(e,{...t,includeContext:!1},r),series:e=>pe.getSeriesAppLink(e,{},r),playlist:e=>({application:l.PLAYLISTS,action:j.Playlists.PLAYLIST,args:[null,e.id,o.slugify(e.name)]}),company:e=>({application:l.MOVIES_AND_TV,action:j.MoviesAndTv.COMPANY_DASHBOARD,args:[null,e.id,o.slugify(e.name)]}),folder:(e,t)=>t?.libraryId?Be(t?.libraryId,e,null):{application:l.MY_VIDEOS,action:j.MyVideos.MY_VIDEOS_FOLDER,args:[e.id,o.slugify(e.name)]},searchSettings:()=>({application:l.SETTINGS,action:j.Settings.PLATFORM_SETTINGS}),searchHome:(t,n)=>{let r={...t};return n?.replace||(r={...e,...r}),{application:l.SEARCH,action:j.Search.HOME,args:[],params:r}},tag:t=>{let n=Q.getSelectedTagOrClassification(e).map(e=>e.name);return n.includes(t.name)?n=n.filter(e=>e!==t.name):n.push(t.name),{action:j.Search.HOME,application:l.SEARCH,params:{...e,tagOrClassification:n}}},getPreviewQuestionsAppLink:e=>he.getPreviewQuestionsAppLink(e)}},getSeeMoreAppLink(e){if(!Pt(e.widget))return;let t=C[e.widget.widgetId]?.getCollectionAppLink;if(!(!t||Q.isOnlyActiveWidget(e.widget.widgetId,e.queryParams))&&!e.isLastWidget)return t(e.appLinks)}},$=a.encloseNamespace(`search.searchResultsV2`);function It(e){let{queryParams:t={}}=e,[n,r]=q.useState({}),{appLink:i}=Ee(),{shouldShowVideo:a,tutorialVideo:o,hasDismissedVideoHighlight:s,dismissVideoHighlight:c}=Me(je.SearchAndDiscover),l=ze();function d(e,t){r(n=>({...n,[e]:t}))}ue(le.getDefaultMetadata({title:t.query??``,phraseContext:{phraseHandler:$,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},allowIndexing:!1}));let[p]=te(M.AUDIENCE_FILTER,void 0,{storage:u.SessionStorage}),m=Fe({location:Ie.VideoItem,presentationSlug:null}),{commonVideoProps:h}=Ne({locationContext:g.VideoThumbnail,mtv:t.moviesAndTv}),_=at(t),v=Ce.getBackendFiltersV2(_),b=f(_.hasDataLoaded&&tt.searchDashboard(t.query,v.backendFilters,Q.getActiveWidgetFilters(t,{settingsHash:_.settings}))),x=b.data?.filter(e=>!n[e.widgetId]),{activePresentation:C}=N(),{availablePresentations:w,hasLivePresentationOnly:T}=K(),E=Ce.getFilters({data:_,inaccessibleIndices:v?.inaccessibleIndices,_hasNewSearch:!0,_hasPartnerProfiles:_.settings.hasPartnerProfiles,hasCVFilters:!T}),D=_.hasDataLoaded&&E,O=b.hasCompleted&&!!E&&!!x&&x.length,k=!O&&!b.isFetching,A=!b.hasCompleted&&b.isFetching||O&&!!x.find(e=>e.widgetId===S.SearchTags),j=Ft.getSearchWidgetAppLinks(t,y.getAudienceParams(p),w,C?.vanitySlug);function ee(e,n){if(_.hasDataLoaded)return tt.searchDashboardWidget(e,t.query,v.backendFilters,Q.getWidgetFilters({queryParams:t,widgetTypeId:e,cursor:n,options:{settingsHash:_.settings}}))}let F=Dt(),ne=At({query:t.query,availablePresentations:_.availablePresentations}),re=wt({fetchObjects:l.fetchObjects,isCurriculumCodeSearch:!!t[V]});return q.useEffect(()=>{r({})},[b.data]),D?(0,J.jsxs)(`div`,{className:`px-4`,children:[(0,J.jsx)(gt,{searchData:_,queryParams:t,filters:E,hideDivider:A}),k?(0,J.jsx)(xt,{query:t.query,scotland:_.currentUser.data?.contentRegion===P.SCOT,hideRequestVideo:_.isLearner}):(0,J.jsx)(`section`,{children:(0,J.jsxs)(Pe.Provider,{value:m,children:[(0,J.jsx)(Ze,{data:x,widgetAppLinks:j,isTertiary:_.isTertiary,commonVideoProps:h,audiences:_.audiences.data,currentUser:_.currentUser.data,availablePresentations:_.availablePresentations,settingsHash:_.settings,setIsEmpty:d,getRequest:ee,hasPermissions:_.hasPermissions,hasLocalPermissions:_.hasLocalPermissions,getSeeMoreAppLink:(e,n)=>Ft.getSeeMoreAppLink({widget:e,queryParams:t,isLastWidget:n,appLinks:j}),getAnalyticsData:(e,n,r)=>({widgetId:e.widgetId,widgetName:e.name,templateId:e.templateId,widgetIndex:n,itemIndex:r,search:{query:t.query||``}}),getSelectedItems:e=>Q.getSearchWidgetSelectedItems(t,e),onLoadWidgetsTriggers:re,widgetItemTransformers:ne,searchResultsTransformers:F,children:a&&o?.data&&!s&&(0,J.jsx)(`div`,{className:`mb-3`,children:(0,J.jsx)(Ae,{video:o?.data,subtitle:$(`videoHighlightSubtitle`),description:$(`videoHighlightDescription`),bgColorClassName:`bg-light-green`,appLink:B.getAppLink(o?.data,{},null),locationContext:g.SearchBar,commonVideoProps:h,sharedPlaylistAppLink:i,supportArticle:se.getLiteArticle(oe.SearchAndDiscover),onDismiss:c})})}),!_.isLearner&&!b.isFetching&&(0,J.jsx)(vt,{})]})})]}):(0,J.jsx)(J.Fragment,{})}export{It as SearchResultsViewV2};
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./snXCXfT6.chunk.js";import{u as n,y as r}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{n as i}from"./B785hxeE.chunk.js";import{t as a}from"./CQyJ7YGa.chunk.js";import{t as o}from"./e57H3T-k.chunk.js";import{t as s}from"./C2w0pmFW.chunk.js";import{t as c}from"./wrLrTezN.chunk.js";import{t as l}from"./BXTI9cmX.chunk.js";import{i as u}from"./BYSskNbK.chunk.js";import{C as d,u as f}from"./BX0wDJmp.chunk.js";import{n as p}from"./BVnMI-dl.chunk.js";import{t as m}from"./C1SLt-ar.chunk.js";import{l as h,y as g}from"./NlCAcBdo.chunk.js";import{n as _,r as v}from"./1LRpIhCn.chunk.js";import{t as y}from"./RjGIOTdP.chunk.js";import{t as b}from"./DTGfiG8Y.chunk.js";import{t as x}from"./BxbRBSiP.chunk.js";import{i as S,n as C,t as w}from"./Cr6TXzQQ2.chunk.js";import{n as T}from"./CmcCVXi32.chunk.js";import{t as E}from"./DGmmTRu72.chunk.js";import{t as D}from"./DZX1tZ-D2.chunk.js";import{t as O}from"./xwiwWcv12.chunk.js";import{n as k}from"./BB6YslUc2.chunk.js";import{t as A}from"./CqrjHjAN.chunk.js";import{t as j}from"./eoAypzU3.chunk.js";import{t as M}from"./Kx-r9MXT.chunk.js";import{t as ee}from"./D_gWf2lC.chunk.js";import{t as N}from"./CZbN8PTA.chunk.js";import{t as P}from"./M97_Ztsu.chunk.js";import{t as F}from"./7-GJWRH82.chunk.js";import{t as te}from"./dLd5d3X22.chunk.js";import{t as ne}from"./CZc2Wh_b2.chunk.js";import{t as re}from"./B7fTfFj62.chunk.js";import{t as ie}from"./C4TNMYS42.chunk.js";import{t as ae}from"./QCFxJYkI2.chunk.js";import{n as oe,t as se}from"./e_p5kSFR2.chunk.js";import{t as ce}from"./CduNFx13.chunk.js";import{t as I}from"./BJZXCSV9.chunk.js";import{n as le,t as ue}from"./C6-aC3vu.chunk.js";import{t as de}from"./B3gsVN-_.chunk.js";import{t as L}from"./Dfw0sxVt2.chunk.js";import{t as fe}from"./BugRosaL2.chunk.js";import{t as pe}from"./DYDxLHiV2.chunk.js";import{n as R,t as z}from"./CpFtf-tI2.chunk.js";import{t as B}from"./DBkEQkKm2.chunk.js";import{t as me}from"./BUoougrH.chunk.js";import{t as he}from"./CzuHD4Ht.chunk.js";import{a as ge,r as V,t as H}from"./CsWeCs8U2.chunk.js";import{t as U}from"./BwelEZs92.chunk.js";import{n as W,r as G}from"./BcibGFe42.chunk.js";import{t as _e}from"./DW24qN_e2.chunk.js";import{t as ve}from"./BxYKQEUG2.chunk.js";import{t as ye}from"./5ONJSThP.chunk.js";import{t as K}from"./C7GcQtj3.chunk.js";import{t as be}from"./vsyhrSK92.chunk.js";import{t as xe}from"./WvK58Ge12.chunk.js";import{t as Se}from"./DsbcGrr4.chunk.js";import{t as Ce}from"./CpsbRDII.chunk.js";import"./CCBk_ENs.chunk.js";import{t as we}from"./1IFtXPNY.chunk.js";import"./CCb14vhF.chunk.js";import{t as Te}from"./B8gP8YoA.chunk.js";import{t as Ee}from"./BZvo5BYo2.chunk.js";import{t as De}from"./Nw0EY4wG2.chunk.js";import{r as Oe,t as ke}from"./BoPQx4nu2.chunk.js";import{t as Ae}from"./CX7ot_FG2.chunk.js";import{n as je,t as Me}from"./CMZa2RMP2.chunk.js";import{t as Ne}from"./BnuuRu_J2.chunk.js";import{o as Pe}from"./CpgHBpMp.chunk.js";import{n as Fe,t as Ie}from"./CvtZ8ZFA2.chunk.js";import{t as Le}from"./BCqRKj1E2.chunk.js";import{t as Re}from"./BYaCUOEW2.chunk.js";import{n as ze}from"./DNuJUXpr2.chunk.js";import{t as Be}from"./DNzVTsKN.chunk.js";import{t as Ve}from"./BLKgsTNL.chunk.js";var q=e(s()),J=c(),He=a.encloseNamespace(`search.searchWidgetTooltip`);function Ue(e,t){return{[S.SearchRelevantTopics]:`relevantTopicsTooltip`,[S.SearchCompanies]:`studiosAndChannelsTooltip`,[S.SearchTopResults]:`topResultsTooltip`,[S.SearchSeries]:`seriesTooltip`,[S.SearchPlaylists]:`playlistsTooltip`,[S.SearchMyVideosFolder]:`myVideosFoldersTooltip`,[S.SearchMySchoolLibraryFolder]:t?`mySchoolFoldersTooltipTertiary`:`mySchoolFoldersTooltip`,[S.SearchMyVideos]:`myVideosTooltip`,[S.SearchMySchoolLibraryVideos]:t?`mySchoolVideosTooltipTertiary`:`mySchoolVideosTooltip`,[S.SearchExchangeArchive]:`exchangeArchiveTooltip`,[S.SearchClickViewLive]:`clickViewLiveTooltip`,[S.SearchRelatedResults]:`relatedResultsTooltip`,[S.SearchContentPartners]:`channelsTooltip`}[e]}function We(e){let n=Ue(e.widgetId,e.isTertiary);return n?(0,J.jsx)(t,{className:`svg-container text-secondary`,svg:ve,title:He(n),tooltipPlacement:`top`,tooltipSpanHack:!0,tooltipSpanHackClassName:`ms-2`}):(0,J.jsx)(J.Fragment,{})}var Ge={searchResultsWidgetsContainer:`_searchResultsWidgetsContainer_13lfz_1`},Ke=a.encloseNamespace(`search.mixedWidgetSearchResults`);function qe(e,t){return e.widgetId===S.SearchMySchoolLibraryFolder?t?Ke(`tertiaryFolderHeading`):e.name:e.widgetId===S.SearchMySchoolLibraryVideos&&t?Ke(`tertiaryLibraryVideoHeading`):e.name}function Je(e){return e.widgetId===S.SearchCurriculumCode?{curriculumLeafName:e.content?.name,curriculumLeafDescription:e.content?.description}:{}}function Ye(e){if(e.widgetId===S.SearchSeries)return`search-series-widget`}function Xe(e){return[S.SearchTags].includes(e.widgetId)}function Ze(e){return!e.data||!e.data.length?(0,J.jsx)(J.Fragment,{}):(0,J.jsx)(`div`,{className:Ge.searchResultsWidgetsContainer,children:e.data.map((t,n)=>{let r=e.data.length-1===n;return(0,J.jsxs)(q.Fragment,{children:[(0,J.jsx)(Le,{index:n,item:t,dashboardTarget:T.Search,getName:t=>qe(t,e.isTertiary),getWidgetMetadata:e=>Je(e),infiniteFetch:r,getCursor:e=>e.content?.cursor,getRequest:n=>e.getRequest(t.widgetId,n),getPartialLoadingPredicate:()=>Xe(t),getBadgeComponent:t=>(0,J.jsx)(We,{widgetId:t.widgetId,isTertiary:e.isTertiary}),audiences:e.audiences,currentUser:e.currentUser,appLinks:e.widgetAppLinks,appLinkOptions:e.widgetAppLinkOptions,commonVideoProps:e.commonVideoProps,availablePresentations:e.availablePresentations,settingsHash:e.settingsHash,hasPermissions:e.hasPermissions,getWidgetClassName:Ye,getAnalyticsData:e.getAnalyticsData,getSelectedItems:e.getSelectedItems,hasLocalPermissions:e.hasLocalPermissions,getSeeMoreAppLink:t=>e.getSeeMoreAppLink(t,r),setIsEmpty:n=>e.setIsEmpty(t.widgetId,n),resultsTransformers:e.searchResultsTransformers,widgetItemTransformers:e.widgetItemTransformers,onLoadWidgetsTriggers:e.onLoadWidgetsTriggers}),t.name===`Tags`&&e.children]},t.widgetId)})})}var Qe={video:k.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:${x.Curation}}`,clip:k.CLIP_COLLECTION,interactive:k.INTERACTIVE_COLLECTION,company:`logo`,category:`libraries[_logo],thumbnail`,partner_profile:k.PARTNER_PROFILE};function $e(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:ge.mapMaxScoreToSearchResults(n,r)}}function Y(e){return Object.entries(e).reduce((e,[,t])=>{let n=t;return typeof t==`object`?n=Y(t):[`number`,`boolean`,`string`].includes(typeof t)&&(n=t.toString()),e.length?`${e},${n}`:n},``)}function et(e,t){return Object.entries(e).reduce((e,[n,r])=>{let i=n.replace(U.FILTER_PARAM_PREFIX,``);return i===`presentation`&&t!==S.SearchTopResults&&t!==S.SearchRelatedResults&&t!==S.SearchSeries?e:{...e,[i]:r}},{})}var tt={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])}:${Y(t)}`,{[`${U.FILTER_PARAM_PREFIX}indicesFilters`]:i,isLearner:a,...o}=t,s={widgets:n,indices:i,filters:et(o,null),query:e,includeAllIndices:!1,isLearner:!!a};return{url:`{gateway}/v5/search/widgets`,publicUrl:`/api/search/v5/widgets`,type:d.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])}:${Y(n)}`,{[`${U.FILTER_PARAM_PREFIX}indicesFilters`]:a,isLearner:o,excludeVideoIds:s,...c}=n,l={widgets:r,indices:a,filters:et(c,e),query:t,includeAllIndices:!1,isLearner:!!o,ogql:Qe,excludeVideoIds:s};return{url:`{gateway}/v5/search/widgets/${e}`,publicUrl:`/api/search/v5/widgets/${e}`,type:d.POST,data:l,key:i,formatData:e=>e&&{...e,content:e.content?.data?{...e.content,data:e.content.data.map(re.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])}:${Y(t)}`,{[`${U.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:Qe};return{url:`{gateway}/v5/search`,publicUrl:`/api/search/v5`,type:d.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{[`${U.FILTER_PARAM_PREFIX}excludeLibraryExclusive`]:l,isLearner:u,...f}=r,p={searchType:`content`,indices:n.map(e=>e!==`video`||!l?{index:e}:{index:e,filters:{excludeLibraryExclusive:l}}),filters:Object.entries(f).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:d.POST,data:p,key:c,formatData:$e}},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:D.urlBuilder(`{gateway}/v3/search`,u),publicUrl:D.urlBuilder(`/api/search`,u),key:l,formatData:$e,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:D.urlBuilder(`{gateway}/v3/search/tags-and-classifications`,o),publicUrl:D.urlBuilder(`/api/search/tags-and-classifications`,o),key:s,success:i,error:a,normalize:!1}}};function nt(e){let{hasPermissions:t}=de(),n=t(i.StudentExperience),{availablePresentations:r,hasCompleted:a}=K();function o(){return n?e?[e?.id]:null:r?.map(e=>e.id)}let s=o();return f(a&&s&&Se.schoolLevels(s))}function rt(){let e=f(A.currentUser()),t=L(),n=E(null),{upsellPresentationType:r}=ie(),i=f(we.streamableLearning()),a=i.data?.objectId,o=n.clickViewLive&&r!==b.StreamableLearning,s=t.hasProduct(ae.Exchange)&&n.showExchangeSearchResults,c=f(e.data?.isAuthenticated&&we.domainLibraries([`sharedLibrary`,`customLibrary`,`workspace`,`hostedLibrary`,`exchange`])),l=c.data??[],u=l?.findIndex(e=>e.type===_e.Exchange),d=l[u]?.id;if(s||(l=[...l.slice(0,u),...l.slice(u+1)]),a&&!o){let e=l?.findIndex(e=>e.id.toString()===a.toString());l=[...l.slice(0,e),...l.slice(e+1)]}return{hasLibrariesCompleted:i.hasCompleted&&(!e.data?.isAuthenticated||c.hasCompleted),libraries:l,exchangeLibraryId:d,streamableLibraryId:a,showExchangeSearchResults:s,showStreamableSearchResults:o}}function it(){let e=f(A.currentUser()),t=f(Ve.ratings(e.data?.countryCode)),{activePresentation:n}=N(),{availablePresentations:r,hasCompleted:i}=K();return!i||r?.length>1||!n||_.getMappedPresentationLevel(n.learningLevel)!==v.Level_1?t:{...t,data:t.data?.filter(e=>e.code&&e.value<64)}}function at(e){let t=f(A.currentUser()),n=f(t.data?.id&&A.user(t.data.id)),r=f(ee.config()),a=f(t.data?.isAuthenticated&&O.yearGroups(t.data.customerId)),o=L(),s=E(null),c=be(),{hasLibrariesCompleted:l,libraries:u,exchangeLibraryId:d,streamableLibraryId:p,showExchangeSearchResults:m,showStreamableSearchResults:h}=rt(),{activePresentation:g}=N(),{availablePresentations:_,hasCompleted:v}=K(),y=g?.id,b=Re(),x=nt(g),S=x.data?.schoolLevels?.map(e=>e.id),C=f(x?.data&&ne.topicsFromAllAvailablePresentations(S)),w=it(),{hasPermissions:D,hasLocalPermissions:k}=de(),j=D(i.StudentExperience),M=D(i.ViewLibraries),P=D(i.ViewMoviesTv),F=D(i.GuestExperience),{dashboard:te}=Te({targetType:T.MoviesAndTv,queryParams:e});return{queryParams:e,currentUser:t,userDetails:n,yearGroups:a,products:o,settings:s,audiences:b,schoolLevels:x,currentPresentation:g,availablePresentations:_,availableTopics:C,ratings:w,moviesAndTvDashboard:te,currentPresentationId:y,isLearner:j,isGuest:F,libraries:u,hasDataLoaded:b.hasCompleted&&v&&t.hasCompleted&&(!t.data?.isAuthenticated||n.hasCompleted)&&w.hasCompleted&&r.hasCompleted&&_&&(!t.data?.isAuthenticated||!o.isLoadingProducts)&&!s.isLoadingSettings&&l,exchangeLibraryId:d,streamableLibraryId:p,showExchangeSearchResults:m,hasPermissions:D,hasLocalPermissions:k,hasCustomLibraries:M,showStreamableSearchResults:h,hasMoviesAndTv:P,isTertiary:c}}function ot(e){return(0,J.jsx)(`svg`,{...e,children:(0,J.jsx)(`path`,{fill:`currentColor`,fillRule:`evenodd`,d:`M17.437 8.5a2 2 0 0 0-3.874 0H4.5a.5.5 0 0 0 0 1h9.063a2 2 0 0 0 3.874 0H19.5a.5.5 0 0 0 0-1zM16.5 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-12 5.5a.5.5 0 0 0 0 1h3.063a2 2 0 0 0 3.874 0H19.5a.5.5 0 0 0 0-1h-8.063a2 2 0 0 0-3.874 0zm5-.5a1 1 0 1 1 0 2 1 1 0 0 1 0-2`,clipRule:`evenodd`})})}var st=[`a[href]`,`button:not([disabled])`,`input:not([disabled])`,`select:not([disabled])`,`textarea:not([disabled])`,`[tabindex]:not([tabindex="-1"])`].join(`,`);function ct(e){let t=q.useRef(null),[n,r]=q.useState(!1);function i(){return!!t.current}function a(){t.current&&(t.current.focus(),r(!0))}function o(n){if(n.key===`Escape`){e();return}if(n.key!==`Tab`||!t.current)return;let r=Array.from(t.current.querySelectorAll(st));if(r.length===0){n.preventDefault(),t.current.focus();return}let i=r[0],a=r[r.length-1],o=document.activeElement;n.shiftKey&&o===i?(n.preventDefault(),a.focus()):!n.shiftKey&&o===a&&(n.preventDefault(),i.focus())}return q.useEffect(()=>{!i()||n||a()},[t.current,n]),{focusRef:t,onKeyDown:o}}var lt={openInAppPrompt:`_openInAppPrompt_cnr4k_1`,slideUp:`_slideUp_cnr4k_1`,mask:`_mask_cnr4k_6`};function ut(e){let{focusRef:t,onKeyDown:n}=ct(e.onClose);return(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`div`,{className:`modal-backdrop show ${lt.mask}`,onClick:e.onClose}),(0,J.jsx)(`div`,{className:`position-fixed w-100 bg-white pb-3 px-3 bottom-0 start-0 rounded-top-3 overflow-auto ${lt.openInAppPrompt}`,ref:t,role:`dialog`,"aria-label":`Action sheet`,"aria-modal":`true`,tabIndex:-1,onKeyDown:n,children:e.children})]})}function dt(e){let{filterState:t}=e,n=e.isMoreFilter?t.moreFilters[e.filter.id]:t[e.filter.id],[r,i]=q.useState(n);function a(t){i(t),e.setParentDraftState(e.filter.id,t)}let o=q.useMemo(()=>e.filter.customComponent?e.filter.customComponent:H.mapTypeToComponent(e.filter.type),[e.filter.type]);return(0,J.jsxs)(`div`,{className:e.className||``,children:[(0,J.jsx)(`hr`,{className:`hr`}),(0,J.jsx)(o,{filter:e.filter,draftState:r,setDraftState:a,filterState:t,isExpandable:!0})]})}var ft=`search.smallScreenSearchFilters`;function pt(e){let{queryParams:t,appLink:n,isFetchingOptions:r,constantIndices:i=[]}=e,o=q.useMemo(()=>H.deriveInitialStateFromQuery(t,e.mainFilters,e.moreFilters,n),[t,r,e.mainFilters,e.moreFilters,n]),s=q.useRef(p.deepClone(o)),c=(e,t)=>s.current[e]=t,l=(e,t)=>s.current.moreFilters[e]=t,u=m.uniq([...H.getAppliedIndices(t,!0,e._hasPartnerProfiles),...i]),{mainFilters:d,moreFilters:f}=H.mixinDisabledFields(o,u,e.mainFilters,e.moreFilters),h=d.filter(e=>e.type!==`tag`);function g(){let r=p.omit(s.current,[`appLink`,`moreFilters`]),i=p.omit(s.current?.moreFilters,[`appLink`]);H.applyFilter([...h,...f?.filters??[]],o,{...r,...i},n),e.analyticsOptions&&H.logFilterEvent(e.mainFilters,e.moreFilters,o,t.query,e.analyticsOptions),e.closeFilter()}return q.useEffect(()=>(document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=``}),[]),(0,J.jsx)(ut,{onClose:e.closeFilter,children:(0,J.jsxs)(z.Provider,{value:ft,children:[(0,J.jsx)(`div`,{className:`pt-3 mb-0 h4`,children:(0,J.jsx)(R,{phrase:`heading`})}),h.map(e=>(0,J.jsx)(dt,{className:`mb-4`,filter:e,filterState:o,setParentDraftState:c},e.id)),f&&f.filters?.map(e=>(0,J.jsx)(dt,{className:`mb-4`,filter:e,filterState:o,setParentDraftState:l,isMoreFilter:!0},e.id)),(0,J.jsxs)(`div`,{className:`position-fixed bottom-0 start-0 p-3 d-flex justify-content-between flex-row-reverse bg-white w-100`,children:[(0,J.jsx)(`button`,{className:`btn btn-dark justify-item-end`,onClick:g,children:a.getPhrase(ft,`apply`)}),H.hasActiveFilters(t)&&(0,J.jsx)(Oe,{mainFilters:e.mainFilters,moreFilters:e.moreFilters,currentQueryParam:t.query,analyticsOptions:e.analyticsOptions,alignLeft:e.alignResetButtonLeft,filterState:o,onClick:e.closeFilter})]})]})})}var mt={filterButtonContainer:`_filterButtonContainer_1n0p0_1`,filterButton:`_filterButton_1n0p0_1`},ht=`search.searchResultsFilter`;function gt(e){let{searchData:n,queryParams:r,filters:i,hideDivider:o}=e,s=ye(),[c,u]=q.useState(!1);return(0,J.jsxs)(J.Fragment,{children:[!!n.audiences.data&&!!n.ratings.data&&!!n.availableTopics.data&&(s.xs?(0,J.jsx)(`div`,{className:`position-sticky bg-white ${mt.filterButtonContainer}`,children:(0,J.jsxs)(`button`,{className:`btn btn-dark w-100 mb-3 ${mt.filterButton}`,onClick:()=>u(!0),children:[(0,J.jsx)(t,{svg:ot}),(0,J.jsx)(`span`,{className:`ms-1`,children:a.getPhrase(ht,`filterText`)})]})}):(0,J.jsx)(ke,{queryParams:r,mainFilters:i?.mainFilters,moreFilters:i?.moreFilters,analyticsOptions:{entity:h.SearchResults,location:g.SearchFilters},appLink:{application:l.SEARCH,action:j.Search.HOME},hideDivider:o,_hasPartnerProfiles:n.settings.hasPartnerProfiles})),s.xs&&c&&(0,J.jsx)(pt,{queryParams:r,mainFilters:i?.mainFilters,moreFilters:i?.moreFilters,analyticsOptions:{entity:h.SearchResults,location:g.SearchFilters},appLink:{application:l.SEARCH,action:j.Search.HOME},closeFilter:()=>u(!1),_hasPartnerProfiles:n.settings?.hasPartnerProfiles})]})}var _t=`search.searchResultsRequestVideo`;function vt(e){let{skipBeforeRequestingVideoStep:t=!0}=e;return(0,J.jsxs)(`div`,{className:`d-flex flex-column align-items-center justify-content-center gap-3 mb-3`,children:[e.description?(0,J.jsx)(`span`,{children:e.description}):(0,J.jsx)(R,{phrase:`description`,namespace:_t}),(0,J.jsx)(ce,{appLink:{application:l.DEFAULT,action:j.Default.GIVE_FEEDBACK,params:{selectedOption:De.REQUEST_VIDEO,skipBeforeRequestingVideoStep:!!t}},className:`btn btn-outline-dark`,children:(0,J.jsx)(R,{phrase:`requestVideo`,namespace:_t})})]})}var yt=`search.searchResultsEmptyStateV2`,bt=a.encloseNamespace(yt);function xt(e){let t=e.scotland&&e.query?.trim()?.toLowerCase()===`nessie`?F.EmptyStates.Search.RESULTS_SCOTLAND:F.EmptyStates.Search.RESULTS;return(0,J.jsxs)(z.Provider,{value:yt,children:[(0,J.jsxs)(I,{children:[(0,J.jsx)(I.Image,{src:t}),(0,J.jsx)(I.Heading,{children:e.query?(0,J.jsx)(R,{phrase:`headingWithQuery`,options:{query:e.query}}):(0,J.jsx)(R,{phrase:`headingWithoutQuery`})}),(0,J.jsxs)(I.Info,{className:`w-50 m-0`,children:[(0,J.jsx)(R,{phrase:`info`}),(0,J.jsx)(ce,{className:`info-link`,appLink:{application:l.SUBJECT,action:j.Subjects.PRESENTATION_TOPICS,args:[null]},children:(0,J.jsx)(R,{phrase:`topicsAppLink`})})]})]}),!e.hideRequestVideo&&(0,J.jsx)(vt,{description:bt(`requestVideoInfo`)})]})}function St(e){let t=e.data;!t||!t.length||t.forEach(t=>{if(t.widgetId!==S.SearchCurriculumCode)return;let n=!!t?.content?.name&&!!t?.content?.description;if(e.isCurriculumCodeSearch&&!n){r.trigger({...r.getCurrentAppLink(),params:{...r.getCurrentAppLink().params||{},[V]:void 0}},{replace:!0});return}if(!e.isCurriculumCodeSearch&&n){r.trigger({...r.getCurrentAppLink(),params:{...r.getCurrentAppLink().params||{},[V]:!0}},{replace:!0});return}})}function Ct(e){let t=e.data;if(!t||!t.length)return;let n=t.reduce((e,t)=>t.content.data.reduce((e,t)=>[...e,t],e),[]);n.length&&e.fetchObjects(n)}function wt(e){return[t=>St({data:t,...e}),t=>Ct({data:t,...e})]}function Tt(e){let{data:t}=e;if(!t)return e;let n=w.mergeWidgets(t,(e,t)=>{e.content.data=[...e.content.data||[],...t.content.data]});return{...e,data:n}}function Et(e){if(!e.data)throw new n(`Data is not defined in the options`);return e.data}function Dt(){return[e=>Et(Tt({data:e}))]}function Ot(e){if(e.data.widgetId!==S.SearchRelevantTopics)return e;function t(t,n){return _.sortByLearningLevel(t,n,e.availablePresentations)}let n=e.data.content.data.slice(0,6),r=e.data.content.data.slice(6),i=[],a=[];n.forEach(t=>{if(xe.isClassification(t)){if(t?.name?.toLowerCase()===e.query?.toLowerCase()){i.push(t);return}a.push(t)}}),i.sort(t),a.sort(t);let o={...e.data,content:{...e.data.content,data:[...i,...a,...r]}};return e={...e,data:o},e}function kt(e){if(e.data.widgetId!==S.SearchTags)return e;let t=e.data.content.data.map(e=>({id:e.name,...e}));return e.data={...e.data,content:{...e.data.content,data:t}},e}function X(e){if(!e.data)throw new n(`Data is not defined in the options`);return e.data}function At(e){return[t=>X(kt({data:t,...e})),t=>X(Ot({data:t,...e}))]}var jt=[S.SearchRelevantTopics,S.SearchCompanies,S.SearchPlaylists,S.SearchSeries,S.SearchTopResults,S.SearchMyVideos,S.SearchMyVideosFolder,S.SearchMySchoolLibraryVideos,S.SearchMySchoolLibraryFolder,S.SearchExchangeArchive,S.SearchClickViewLive,S.SearchRelatedResults,S.SearchCurriculumCode,S.SearchContentPartners];function Z(e){let t=e.queryParams?.[e.key];return typeof t==`string`?t===e.value:Array.isArray(t)?t.includes(e.value):!1}function Mt(e,t){if(!e?.focus)return;let n;if(typeof e.focus==`string`&&(n=jt.find(t=>t===e.focus)),Array.isArray(e.focus)&&e.focus.length===1&&(n=jt.find(t=>t===e.focus[0])),n&&C[n]?.predicate?.({targetType:T.Search,settingsHash:t.settingsHash}))return n}function Nt(e,t){let n=[],r=Mt(e,t);return r?[r,S.SearchTags]:(Z({key:`type`,value:G.Classification,queryParams:e})&&n.push(S.SearchRelevantTopics),Z({key:`type`,value:G.Company,queryParams:e})&&n.push(S.SearchCompanies),t.settingsHash?.hasPartnerProfiles&&Z({key:`type`,value:G.PartnerProfile,queryParams:e})&&n.push(S.SearchContentPartners),Z({key:`type`,value:G.Series,queryParams:e})&&n.push(S.SearchSeries),Z({key:`type`,value:G.Playlist,queryParams:e})&&n.push(S.SearchPlaylists),Z({key:`type`,value:G.Category,queryParams:e})&&n.push(S.SearchMySchoolLibraryFolder,S.SearchMyVideosFolder),Z({key:`source`,value:W.ExchangeArchive,queryParams:e})&&n.push(S.SearchExchangeArchive),t?.settingsHash?.clickViewLive&&Z({key:`source`,value:W.LiveStreams,queryParams:e})&&n.push(S.SearchClickViewLive),Z({key:`source`,value:W.MyVideos,queryParams:e})&&n.push(S.SearchMyVideos,S.SearchMyVideosFolder),Z({key:`source`,value:W.ClickView,queryParams:e})&&n.push(S.SearchTopResults,S.SearchRelatedResults),Z({key:`source`,value:W.School,queryParams:e})&&n.push(S.SearchMySchoolLibraryVideos,S.SearchMySchoolLibraryFolder),(Z({key:`type`,value:G.Video,queryParams:e})||Z({key:`type`,value:G.Clip,queryParams:e})||Z({key:`type`,value:G.Interactive,queryParams:e}))&&n.push(S.SearchTopResults,S.SearchRelatedResults,S.SearchMySchoolLibraryVideos,S.SearchMyVideos,S.SearchExchangeArchive,S.SearchClickViewLive,S.SearchCurriculumCode),n.length&&(n.push(S.SearchTopResults),n.push(S.SearchTags)),m.uniq(n))}var Q={isOnlyActiveWidget(e,t){let n=t?.focus;return typeof n==`string`?n.toLowerCase()===e.toLowerCase():!Array.isArray(n)||n.length!==1?!1:!!n.find(t=>t.toLowerCase()===e.toLowerCase())},getActiveWidgetFilters(e,t){return Nt(e,t).map(e=>({id:e}))},getWidgetFilters(e){let{queryParams:t,widgetTypeId:n,cursor:r,options:i}=e;return r?[{id:n,cursor:r}]:Nt(t,i).map(e=>({id:e}))},getSelectedTagOrClassification(e){return typeof e?.tagOrClassification==`string`?[{id:e.tagOrClassification,name:e.tagOrClassification}]:Array.isArray(e?.tagOrClassification)?e.tagOrClassification.map(e=>({id:e,name:e})):[]},getSearchWidgetSelectedItems(e,t){return t===S.SearchTags?Q.getSelectedTagOrClassification(e):[]}};function Pt(e){return!!e.content.cursor}var Ft={getSearchWidgetAppLinks(e,t,n,r){return{partner:fe.getPartnerDashboardAppLink,classification:e=>{let r={...t,moviesAndTv:_.isMtv(e)};return me.getAppLink(e,r,n)},videoType:(e,t)=>B.getAppLink(e,{...t,includeContext:!1},r),series:e=>pe.getSeriesAppLink(e,{},r),playlist:e=>({application:l.PLAYLISTS,action:j.Playlists.PLAYLIST,args:[null,e.id,o.slugify(e.name)]}),company:e=>({application:l.MOVIES_AND_TV,action:j.MoviesAndTv.COMPANY_DASHBOARD,args:[null,e.id,o.slugify(e.name)]}),folder:(e,t)=>t?.libraryId?Be(t?.libraryId,e,null):{application:l.MY_VIDEOS,action:j.MyVideos.MY_VIDEOS_FOLDER,args:[e.id,o.slugify(e.name)]},searchSettings:()=>({application:l.SETTINGS,action:j.Settings.PLATFORM_SETTINGS}),searchHome:(t,n)=>{let r={...t};return n?.replace||(r={...e,...r}),{application:l.SEARCH,action:j.Search.HOME,args:[],params:r}},tag:t=>{let n=Q.getSelectedTagOrClassification(e).map(e=>e.name);return n.includes(t.name)?n=n.filter(e=>e!==t.name):n.push(t.name),{action:j.Search.HOME,application:l.SEARCH,params:{...e,tagOrClassification:n}}},getPreviewQuestionsAppLink:e=>he.getPreviewQuestionsAppLink(e)}},getSeeMoreAppLink(e){if(!Pt(e.widget))return;let t=C[e.widget.widgetId]?.getCollectionAppLink;if(!(!t||Q.isOnlyActiveWidget(e.widget.widgetId,e.queryParams))&&!e.isLastWidget)return t(e.appLinks)}},$=a.encloseNamespace(`search.searchResultsV2`);function It(e){let{queryParams:t={}}=e,[n,r]=q.useState({}),{appLink:i}=Ee(),{shouldShowVideo:a,tutorialVideo:o,hasDismissedVideoHighlight:s,dismissVideoHighlight:c}=Me(je.SearchAndDiscover),l=ze();function d(e,t){r(n=>({...n,[e]:t}))}ue(le.getDefaultMetadata({title:t.query??``,phraseContext:{phraseHandler:$,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},allowIndexing:!1}));let[p]=te(M.AUDIENCE_FILTER,void 0,{storage:u.SessionStorage}),m=Fe({location:Ie.VideoItem,presentationSlug:null}),{commonVideoProps:h}=Ne({locationContext:g.VideoThumbnail,mtv:t.moviesAndTv}),_=at(t),v=Ce.getBackendFiltersV2(_),b=f(_.hasDataLoaded&&tt.searchDashboard(t.query,v.backendFilters,Q.getActiveWidgetFilters(t,{settingsHash:_.settings}))),x=b.data?.filter(e=>!n[e.widgetId]),{activePresentation:C}=N(),{availablePresentations:w,hasLivePresentationOnly:T}=K(),E=Ce.getFilters({data:_,inaccessibleIndices:v?.inaccessibleIndices,_hasNewSearch:!0,_hasPartnerProfiles:_.settings.hasPartnerProfiles,hasCVFilters:!T}),D=_.hasDataLoaded&&E,O=b.hasCompleted&&!!E&&!!x&&x.length,k=!O&&!b.isFetching,A=!b.hasCompleted&&b.isFetching||O&&!!x.find(e=>e.widgetId===S.SearchTags),j=Ft.getSearchWidgetAppLinks(t,y.getAudienceParams(p),w,C?.vanitySlug);function ee(e,n){if(_.hasDataLoaded)return tt.searchDashboardWidget(e,t.query,v.backendFilters,Q.getWidgetFilters({queryParams:t,widgetTypeId:e,cursor:n,options:{settingsHash:_.settings}}))}let F=Dt(),ne=At({query:t.query,availablePresentations:_.availablePresentations}),re=wt({fetchObjects:l.fetchObjects,isCurriculumCodeSearch:!!t[V]});return q.useEffect(()=>{r({})},[b.data]),D?(0,J.jsxs)(`div`,{className:`px-4`,children:[(0,J.jsx)(gt,{searchData:_,queryParams:t,filters:E,hideDivider:A}),k?(0,J.jsx)(xt,{query:t.query,scotland:_.currentUser.data?.contentRegion===P.SCOT,hideRequestVideo:_.isLearner}):(0,J.jsx)(`section`,{children:(0,J.jsxs)(Pe.Provider,{value:m,children:[(0,J.jsx)(Ze,{data:x,widgetAppLinks:j,isTertiary:_.isTertiary,commonVideoProps:h,audiences:_.audiences.data,currentUser:_.currentUser.data,availablePresentations:_.availablePresentations,settingsHash:_.settings,setIsEmpty:d,getRequest:ee,hasPermissions:_.hasPermissions,hasLocalPermissions:_.hasLocalPermissions,getSeeMoreAppLink:(e,n)=>Ft.getSeeMoreAppLink({widget:e,queryParams:t,isLastWidget:n,appLinks:j}),getAnalyticsData:(e,n,r)=>({widgetId:e.widgetId,widgetName:e.name,templateId:e.templateId,widgetIndex:n,itemIndex:r,search:{query:t.query||``}}),getSelectedItems:e=>Q.getSearchWidgetSelectedItems(t,e),onLoadWidgetsTriggers:re,widgetItemTransformers:ne,searchResultsTransformers:F,children:a&&o?.data&&!s&&(0,J.jsx)(`div`,{className:`mb-3`,children:(0,J.jsx)(Ae,{video:o?.data,subtitle:$(`videoHighlightSubtitle`),description:$(`videoHighlightDescription`),bgColorClassName:`bg-light-green`,appLink:B.getAppLink(o?.data,{},null),locationContext:g.SearchBar,commonVideoProps:h,sharedPlaylistAppLink:i,supportArticle:se.getLiteArticle(oe.SearchAndDiscover),onDismiss:c})})}),!_.isLearner&&!b.isFetching&&(0,J.jsx)(vt,{})]})})]}):(0,J.jsx)(J.Fragment,{})}export{It as SearchResultsViewV2};
|
|
2
|
+
//# sourceMappingURL=DICsRDM42.chunk.js.map
|