@clickview/lite 0.103.0 → 0.103.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +392 -392
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{BTXOoJko2.chunk.js → BFH_tnSb2.chunk.js} +3 -3
- package/dist/scripts/{BTXOoJko2.chunk.js.map → BFH_tnSb2.chunk.js.map} +1 -1
- package/dist/scripts/{Dvl1XgHV2.chunk.js → BeW5XQTb2.chunk.js} +2 -2
- package/dist/scripts/{Dvl1XgHV2.chunk.js.map → BeW5XQTb2.chunk.js.map} +1 -1
- package/dist/scripts/C8l37H7t2.chunk.js +2 -0
- package/dist/scripts/{Cj_F4Lv92.chunk.js.map → C8l37H7t2.chunk.js.map} +1 -1
- package/dist/scripts/{BoT5D3IL.chunk.js → CIzlhCeS.chunk.js} +2 -2
- package/dist/scripts/{BoT5D3IL.chunk.js.map → CIzlhCeS.chunk.js.map} +1 -1
- package/dist/scripts/{BTr5dJhb.chunk.js → CfrfHGSh.chunk.js} +2 -2
- package/dist/scripts/{BTr5dJhb.chunk.js.map → CfrfHGSh.chunk.js.map} +1 -1
- package/dist/scripts/{BTugVIIN2.chunk.js → CsCjBSq62.chunk.js} +2 -2
- package/dist/scripts/{BTugVIIN2.chunk.js.map → CsCjBSq62.chunk.js.map} +1 -1
- package/dist/scripts/{CvSpUZcJ2.chunk.js → Dd23z1_x2.chunk.js} +2 -2
- package/dist/scripts/{CvSpUZcJ2.chunk.js.map → Dd23z1_x2.chunk.js.map} +1 -1
- package/dist/scripts/{CWCtYUUU.chunk.js → Drh1bb9z.chunk.js} +2 -2
- package/dist/scripts/{CWCtYUUU.chunk.js.map → Drh1bb9z.chunk.js.map} +1 -1
- package/dist/scripts/{Cc9f2ux0.chunk.js → Drx3PvJj.chunk.js} +2 -2
- package/dist/scripts/{Cc9f2ux0.chunk.js.map → Drx3PvJj.chunk.js.map} +1 -1
- package/dist/scripts/QVwuOts3.chunk.js +12 -0
- package/dist/scripts/QVwuOts3.chunk.js.map +1 -0
- package/dist/scripts/{app-k0jrat-b.js → app-BHlllGhO.js} +4 -4
- package/dist/scripts/{app-k0jrat-b.js.map → app-BHlllGhO.js.map} +1 -1
- package/dist/scripts/{BQNOt7_Q2.chunk.js → kLCNzxrH2.chunk.js} +2 -2
- package/dist/scripts/{BQNOt7_Q2.chunk.js.map → kLCNzxrH2.chunk.js.map} +1 -1
- package/dist/scripts/{DXkvlC_92.chunk.js → wpRpI9h02.chunk.js} +2 -2
- package/dist/scripts/{DXkvlC_92.chunk.js.map → wpRpI9h02.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/Cj_F4Lv92.chunk.js +0 -2
- package/dist/scripts/DFleEz5_.chunk.js +0 -12
- package/dist/scripts/DFleEz5_.chunk.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import{n}from"./B785hxeE.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./wrLrTezN.chunk.js";import{t as a}from"./BXTI9cmX.chunk.js";import{u as o}from"./BX0wDJmp.chunk.js";import{y as s}from"./NlCAcBdo.chunk.js";import{t as c}from"./oPIkfKWW2.chunk.js";import{t as ee}from"./CcDvlSWl2.chunk.js";import{t as l}from"./DZX1tZ-D2.chunk.js";import{t as u}from"./CVHQXNzi2.chunk.js";import{t as d}from"./DbSUQ2A12.chunk.js";import{t as f}from"./YakGe6vv2.chunk.js";import{t as p}from"./DsXWD-Sn.chunk.js";import{t as m}from"./DdsRCMkN.chunk.js";import{t as te}from"./CgCqPbjJ.chunk.js";import{t as ne}from"./PgzMrOyM.chunk.js";import{t as re}from"./C5rBgkQH.chunk.js";import{t as ie}from"./B2INd6bh.chunk.js";import{t as ae}from"./BQKcAczf.chunk.js";import{i as oe}from"./_Cm5O72d.chunk.js";import{n as h,t as g}from"./CpFtf-tI2.chunk.js";import{t as se}from"./DW51cSV_2.chunk.js";import{t as _}from"./CmV-znIi2.chunk.js";import{r as v}from"./CE2wLoIp.chunk.js";import{n as ce}from"./Dy3xpenS.chunk.js";import{t as y}from"./DqM363Cd.chunk.js";import{t as b}from"./BD_YlxPJ.chunk.js";import"./C2s0ZcC4.chunk.js";import{u as le}from"./DW4eUMeA.chunk.js";import{t as ue}from"./C2pEjcxD.chunk.js";import{n as x}from"./BZ45p2V7.chunk.js";import{t as de}from"./CF6KXSqn.chunk.js";import{t as S}from"./BPavmm8c.chunk.js";import{a as fe,i as pe,n as me,t as he}from"./02GiL0bJ2.chunk.js";import{_ as ge,a as _e,c as C,d as ve,f as w,g as T,h as E,i as D,l as O,m as k,n as A,o as j,p as M,r as N,s as P,t as F,u as ye,v as I}from"./DXkvlC_92.chunk.js";import{i as be,r as xe,t as Se}from"./BgblOoyL2.chunk.js";import{t as L}from"./DkxWaE9O2.chunk.js";var R={chaptersAndSubtitles(e,t){let n={query:`subtitles[customer],chapters`,permissionFilterOption:d.StripMetadata,contentRegion:t};return{url:l.urlBuilder(`{gateway}/v1/objects/${e}`,n),publicUrl:l.urlBuilder(`/api/objects/${e}/subtitles`,n),key:`videos:${e}:subtitles:chapters:${d.StripMetadata}`,formatData:e=>({subtitles:e.subtitles.data,chapters:e.chapters.data})}},subtitleVtt(e,t){return{url:l.urlBuilder(`{player}/srt-to-vtt`,{url:e,fullSentences:!0}),publicUrl:l.urlBuilder(`/api/player/srt-to-vtt`,{url:e,fullSentences:!0}),key:`subtitle:${e}`,formatData:e=>({...t,vtt:e})}}},z=e(r()),B=y(),V={dropdown:`_dropdown_zu639_1`},H=i(),U=`shared.curriculumLinks`;function Ce(e){let{preferredCurriculum:t,availableCurriculums:n,curriculumLinks:r,updateCurriculum:i}=e.curriculums;function a(t){i(t,{shouldLog:!0,locationContext:s.PlayPage,video:e.video})}return!e.canViewCurriculumLinks||!r?.length&&!e.curriculums.mappedCurriculums.length?(0,H.jsx)(H.Fragment,{}):(0,H.jsxs)(`section`,{id:S.CurriculumLinks,ref:t=>{t&&e.headingRef?.current&&e.headingRef.current.set(S.CurriculumLinks,t)},className:`play-page-section`,children:[(0,H.jsx)(`h2`,{className:`h4 me-2 h-100`,children:(0,H.jsx)(h,{namespace:U,phrase:`heading`})}),(0,H.jsx)(L,{availableCurriculums:n,onChangeCurriculum:a,selectedCurriculum:t,className:V.dropdown}),(0,H.jsx)(`div`,{className:`rounded border position-relative`,children:(0,H.jsx)(B.Scrollbars,{autoHeight:!0,autoHeightMax:e.height,children:(0,H.jsx)(`div`,{className:`p-3`,children:(0,H.jsx)(x,{curriculumLinks:e.curriculums.curriculumLinks,onChangeCurriculum:a,hasCompleted:e.curriculums.hasCompleted,mappedCurriculums:e.curriculums.mappedCurriculums,isFetching:e.curriculums.isFetching,getCodeAppLink:(t,n)=>e.hasNewSearch?b.getSearchAppLink(t,{[v]:n}):null,locationContext:s.PlayPage})})})})]})}var we=`shared.play`;function W(e){let r=ce(),i=r.playerRef.current?.isPaused?.(),o=r.playerRef?.current?.hasStarted?.(),{hasPermissions:s}=ae(),c=ee(null),l=Se(),{canConsume:d}=f.getCanBeConsumed(e.video),p=j(e.hasTheatreMode,r),h=A(e.hasTheatreMode,r.mode,r.defaultDisplayMode);function _(e){e||v(!1),r.setDefaultDisplayMode?.(e?`theatre`:`normal`),r.playerRef?.current?.toggleTheatreMode?.(e)}function v(e){r.playerRef?.current?.toggleTranscript?.(e)}let{tableOfContentsActiveId:y,setTableOfContentsActiveId:b,controlledId:x,setControlledId:L,tableOfContentsExpanded:R,onToggleTableOfContents:B}=D(e.tableOfContentsId,e.hasTheatreMode,p),V=ge(e.video)&&e.featureAccess.canViewGlance,{headingRef:U,headingElements:W}=N(V),G=W.map(t=>({id:t.id,name:F.getSectionHeading(t.id,{clips:e.clips,interactives:e.interactives,resources:[...e.video.resources?.data??[],...e.video.links?.data??[]]})})),Te=f.isVideoTypeArchived(e.video),Ee=s(n.StudentExperience);be({setActiveId:b,headingElements:W,controlledId:x,setControlledId:L}),xe(W,x);let K=z.useRef(!1),q=oe({settings:c,presentationSlug:e.presentationSlug}),J=q.getResourceAppLink(e.video.id,e.shareId,e.featureAccess.canViewResourceItems);O({resourcePopupId:e.resourcePopupId,resources:e.video.resources?.data,getResourceAppLink:J});function Y(){K.current=!r?.playerRef?.current?.isPaused(),r?.playerRef?.current?.pause()}function X(){K.current&&r?.playerRef?.current?.play()}let Z={hasTheatreMode:e.hasTheatreMode,shouldShowSideTableOfContents:e.shouldShowSideTableOfContents,tableOfContentsExpanded:R,theatreMode:h},De=P(Z),Oe=_e(Z),ke=r.mode===`picture-in-picture`||e.featureAccess.canViewPublicLayout&&!e.video._canBeConsumed.value,[,Q]=re(te.PLAY_PAGE_CONTAINER_CLASS_NAME),Ae=e.commonVideoProps.getSubTextType?.(e.video),$=e.commonVideoProps.getSubTextAppLink(e.video);z.useEffect(()=>{Q(p?C.theatreModePlayPageContainer:``)},[p]),z.useEffect(()=>()=>Q(``),[]);function je(){t.trigger({action:m.SignUp.SIGN_UP,application:a.SIGN_UP})}function Me(){if(!d)return je();o||r.playerRef.current?.play(),v(!0),window.scrollTo({top:0,behavior:`smooth`})}function Ne(e){r.playerRef.current?.currentTime(e)}return(0,H.jsx)(g.Provider,{value:we,children:(0,H.jsxs)(`div`,{className:`px-4 play-page-sections-container ${e.shouldShowSideTableOfContents?`row g-0`:``}`,children:[(0,H.jsxs)(`main`,{className:`${C.main} ${De}`,children:[!!e.breadcrumbs?.length&&(0,H.jsx)(`div`,{className:`mb-2`,children:(0,H.jsx)(ue,{breadcrumbs:e.breadcrumbs})}),(0,H.jsx)(he,{restrictions:e.video._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.video.id,objectTypeId:u.Video,canManageVideoAccess:e.canManageVideoAccess}),Te&&(0,H.jsx)(fe,{typeId:e.video.typeId,hasStudentExperience:Ee}),(0,H.jsxs)(`section`,{id:S.Video,className:`mb-3 ${ie.GLOBAL_PLAYER_SELECTOR}`,ref:e=>{e&&U?.current&&U.current.set(S.Video,e)},children:[d&&(0,H.jsx)(le,{objectId:e.video.id,objectTypeId:e.video.typeId,shareId:e.shareId,context:e.params?.context,contextId:e.params?.contextId,playNext:e.params?.playNext,moviesAndTv:e.params?.mtv,startTime:e.params?.t??e.params?.startTime,endTime:e.params?.endTime,mode:`default`,location:`play-page`},e.video.id),(0,H.jsx)(`div`,{className:ke?``:`d-none`,children:(0,H.jsx)(ye,{video:e.video,appLink:{application:a.SIGN_UP,action:m.SignUp.SIGN_UP},type:r.mode===`picture-in-picture`?`pip`:`public`})})]}),(0,H.jsxs)(`div`,{className:Oe,children:[(0,H.jsxs)(`div`,{className:h?`${C.theatreModeLeftContent}`:`w-100`,children:[(0,H.jsx)(ve,{presentationSlug:e.presentationSlug,media:e.video,subTextType:Ae,subtextAppLink:$,yearGroups:e.commonVideoProps.yearGroups,audiences:e.audiences,featureAccess:e.featureAccess,shareId:e.shareId,showTitlePadlock:!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience}),V?(0,H.jsx)(T,{video:e.video,pointsOfInterest:e.pointsOfInterest,setStartTime:e=>r.playerRef.current?.currentTime(e),getTagAppLink:q.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:V}):(0,H.jsx)(I,{video:e.video,currentUser:e.currentUser,headingRef:U,onLaunchImmersiveReader:Y,onExitImmersiveReader:X,getTagAppLink:q.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,getPartnerProfileAppLink:q.getPartnerProfileAppLink,getPartnerDashboardHubAppLink:q.getPartnerDashboardHubAppLink,getLibraryAppLink:s(n.ViewLibraries)?q.getLibraryAppLink:null,getFolderAppLink:s(n.ViewLibraries)?q.getFolderAppLink:null}),(0,H.jsx)(Ce,{height:368,curriculums:e.curriculums,canViewCurriculumLinks:e.featureAccess.canViewCurriculumLinks,headingRef:U,video:e.video,hasNewSearch:e.hasNewSearch}),(0,H.jsx)(E,{headingRef:U,video:e.video,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.commonVideoProps.imageCdnUrl,getAppLink:J,analyticsData:{videoId:e.video.id,videoName:e.video.name},resourceThumbnailFallbackUrl:ne.Fallbacks.RESOURCE_THUMBNAIL,onDownloadAllClick:l}),(0,H.jsx)(M,{presentationSlug:e.presentationSlug,headingRef:U,video:e.video,interactives:e.interactives,analyticsData:{videoId:e.video.id,videoName:e.video.name},canViewInteractives:e.featureAccess.canViewInteractives,commonVideoProps:e.commonVideoProps}),(0,H.jsx)(k,{presentationSlug:e.presentationSlug,video:e.video,headingRef:U,clips:e.clips,canViewClips:e.featureAccess.canViewClips,audiences:e.audiences,analyticsData:{videoId:e.video.id,videoName:e.video.name},commonVideoProps:e.commonVideoProps}),V&&(0,H.jsx)(I,{video:e.video,currentUser:e.currentUser,headingRef:U,onLaunchImmersiveReader:Y,onExitImmersiveReader:X,getTagAppLink:q.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0,getPartnerProfileAppLink:q.getPartnerProfileAppLink,getPartnerDashboardHubAppLink:q.getPartnerDashboardHubAppLink,getLibraryAppLink:q.getLibraryAppLink,getFolderAppLink:q.getFolderAppLink}),e.shouldShowTranscript&&(0,H.jsx)(de,{headingRef:U,video:e.video,subtitles:e.subtitles,vttSubtitles:e.vttSubtitles,chapters:e.chapters,onShowInVideo:Me,signUpLink:{action:m.SignUp.SIGN_UP,application:a.SIGN_UP},setStartTime:Ne,isBot:e.isBot,isPaused:i,isAuthenticated:e.currentUser.isAuthenticated,playerApiUrl:e.playerApiUrl}),e.featureAccess.canViewCitations&&(0,H.jsx)(me,{headingRef:U,media:e.video,contentRegion:e.currentUser.contentRegion,shareId:e.shareId,presentationSlug:e.presentationSlug}),(0,H.jsx)(pe,{presentationSlug:e.presentationSlug,currentVideo:e.video,headingRef:U,commonVideoProps:e.commonVideoProps,relatedVideos:e.relatedVideos,currentUser:e.currentUser,getVideoAppLink:(t,n)=>se.getAppLink(t,{...n,context:e.params.context,contextId:e.params.contextId,playNext:e.params.playNext,shareId:e.shareId,moviesAndTv:e.params.mtv,includeContext:e.currentUser?.isAuthenticated},e.presentationSlug),audiences:e.audiences,moviesAndTv:e.params.mtv})]}),p&&(0,H.jsx)(w,{isExpanded:R,setIsExpanded:B,toggleTheatreMode:null,items:G,activeId:y,setControlledId:L,analyticsData:{videoId:e.video.id,videoName:e.video.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!0,hasTranscription:e.hasTheatreMode,shouldShow:G.length>=3})]})]}),!p&&(0,H.jsx)(w,{isExpanded:R,setIsExpanded:B,toggleTheatreMode:e.hasTheatreMode?_:null,items:G,activeId:y,setControlledId:L,analyticsData:{videoId:e.video.id,videoName:e.video.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!1,hasTranscription:e.hasTheatreMode,shouldShow:G.length>=3})]})})}function G(e,t){let n=o(c.currentUser()),{canViewTranscript:r}=_({objectId:e,objectTypeId:u.Video}),i=o(t?p.sharedVideo(e,t):p.video(e)),a=r&&!!i.data?._curationTags?.value?.isClickViewCurated;return{shouldShowTranscript:a,shouldFetchTranscript:a&&!n.data?.isAuthenticated}}export{W as n,R as r,G as t};
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import{n}from"./B785hxeE.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./wrLrTezN.chunk.js";import{t as a}from"./BXTI9cmX.chunk.js";import{u as o}from"./BX0wDJmp.chunk.js";import{y as s}from"./NlCAcBdo.chunk.js";import{t as c}from"./oPIkfKWW2.chunk.js";import{t as ee}from"./CcDvlSWl2.chunk.js";import{t as l}from"./DZX1tZ-D2.chunk.js";import{t as u}from"./CVHQXNzi2.chunk.js";import{t as d}from"./DbSUQ2A12.chunk.js";import{t as f}from"./YakGe6vv2.chunk.js";import{t as p}from"./DsXWD-Sn.chunk.js";import{t as m}from"./DdsRCMkN.chunk.js";import{t as te}from"./CgCqPbjJ.chunk.js";import{t as ne}from"./PgzMrOyM.chunk.js";import{t as re}from"./C5rBgkQH.chunk.js";import{t as ie}from"./B2INd6bh.chunk.js";import{t as ae}from"./BQKcAczf.chunk.js";import{i as oe}from"./_Cm5O72d.chunk.js";import{n as h,t as g}from"./CpFtf-tI2.chunk.js";import{t as se}from"./DW51cSV_2.chunk.js";import{t as _}from"./CmV-znIi2.chunk.js";import{r as v}from"./CE2wLoIp.chunk.js";import{n as ce}from"./Dy3xpenS.chunk.js";import{t as y}from"./DqM363Cd.chunk.js";import{t as b}from"./BD_YlxPJ.chunk.js";import"./C2s0ZcC4.chunk.js";import{u as le}from"./DW4eUMeA.chunk.js";import{t as ue}from"./C2pEjcxD.chunk.js";import{n as x}from"./BZ45p2V7.chunk.js";import{t as de}from"./CF6KXSqn.chunk.js";import{t as S}from"./BPavmm8c.chunk.js";import{a as fe,i as pe,n as me,t as he}from"./02GiL0bJ2.chunk.js";import{_ as ge,a as _e,c as C,d as ve,f as w,g as T,h as E,i as D,l as O,m as k,n as A,o as j,p as M,r as N,s as P,t as F,u as ye,v as I}from"./wpRpI9h02.chunk.js";import{i as be,r as xe,t as Se}from"./BgblOoyL2.chunk.js";import{t as L}from"./DkxWaE9O2.chunk.js";var R={chaptersAndSubtitles(e,t){let n={query:`subtitles[customer],chapters`,permissionFilterOption:d.StripMetadata,contentRegion:t};return{url:l.urlBuilder(`{gateway}/v1/objects/${e}`,n),publicUrl:l.urlBuilder(`/api/objects/${e}/subtitles`,n),key:`videos:${e}:subtitles:chapters:${d.StripMetadata}`,formatData:e=>({subtitles:e.subtitles.data,chapters:e.chapters.data})}},subtitleVtt(e,t){return{url:l.urlBuilder(`{player}/srt-to-vtt`,{url:e,fullSentences:!0}),publicUrl:l.urlBuilder(`/api/player/srt-to-vtt`,{url:e,fullSentences:!0}),key:`subtitle:${e}`,formatData:e=>({...t,vtt:e})}}},z=e(r()),B=y(),V={dropdown:`_dropdown_zu639_1`},H=i(),U=`shared.curriculumLinks`;function Ce(e){let{preferredCurriculum:t,availableCurriculums:n,curriculumLinks:r,updateCurriculum:i}=e.curriculums;function a(t){i(t,{shouldLog:!0,locationContext:s.PlayPage,video:e.video})}return!e.canViewCurriculumLinks||!r?.length&&!e.curriculums.mappedCurriculums.length?(0,H.jsx)(H.Fragment,{}):(0,H.jsxs)(`section`,{id:S.CurriculumLinks,ref:t=>{t&&e.headingRef?.current&&e.headingRef.current.set(S.CurriculumLinks,t)},className:`play-page-section`,children:[(0,H.jsx)(`h2`,{className:`h4 me-2 h-100`,children:(0,H.jsx)(h,{namespace:U,phrase:`heading`})}),(0,H.jsx)(L,{availableCurriculums:n,onChangeCurriculum:a,selectedCurriculum:t,className:V.dropdown}),(0,H.jsx)(`div`,{className:`rounded border position-relative`,children:(0,H.jsx)(B.Scrollbars,{autoHeight:!0,autoHeightMax:e.height,children:(0,H.jsx)(`div`,{className:`p-3`,children:(0,H.jsx)(x,{curriculumLinks:e.curriculums.curriculumLinks,onChangeCurriculum:a,hasCompleted:e.curriculums.hasCompleted,mappedCurriculums:e.curriculums.mappedCurriculums,isFetching:e.curriculums.isFetching,getCodeAppLink:(t,n)=>e.hasNewSearch?b.getSearchAppLink(t,{[v]:n}):null,locationContext:s.PlayPage})})})})]})}var we=`shared.play`;function W(e){let r=ce(),i=r.playerRef.current?.isPaused?.(),o=r.playerRef?.current?.hasStarted?.(),{hasPermissions:s}=ae(),c=ee(null),l=Se(),{canConsume:d}=f.getCanBeConsumed(e.video),p=j(e.hasTheatreMode,r),h=A(e.hasTheatreMode,r.mode,r.defaultDisplayMode);function _(e){e||v(!1),r.setDefaultDisplayMode?.(e?`theatre`:`normal`),r.playerRef?.current?.toggleTheatreMode?.(e)}function v(e){r.playerRef?.current?.toggleTranscript?.(e)}let{tableOfContentsActiveId:y,setTableOfContentsActiveId:b,controlledId:x,setControlledId:L,tableOfContentsExpanded:R,onToggleTableOfContents:B}=D(e.tableOfContentsId,e.hasTheatreMode,p),V=ge(e.video)&&e.featureAccess.canViewGlance,{headingRef:U,headingElements:W}=N(V),G=W.map(t=>({id:t.id,name:F.getSectionHeading(t.id,{clips:e.clips,interactives:e.interactives,resources:[...e.video.resources?.data??[],...e.video.links?.data??[]]})})),Te=f.isVideoTypeArchived(e.video),Ee=s(n.StudentExperience);be({setActiveId:b,headingElements:W,controlledId:x,setControlledId:L}),xe(W,x);let K=z.useRef(!1),q=oe({settings:c,presentationSlug:e.presentationSlug}),J=q.getResourceAppLink(e.video.id,e.shareId,e.featureAccess.canViewResourceItems);O({resourcePopupId:e.resourcePopupId,resources:e.video.resources?.data,getResourceAppLink:J});function Y(){K.current=!r?.playerRef?.current?.isPaused(),r?.playerRef?.current?.pause()}function X(){K.current&&r?.playerRef?.current?.play()}let Z={hasTheatreMode:e.hasTheatreMode,shouldShowSideTableOfContents:e.shouldShowSideTableOfContents,tableOfContentsExpanded:R,theatreMode:h},De=P(Z),Oe=_e(Z),ke=r.mode===`picture-in-picture`||e.featureAccess.canViewPublicLayout&&!e.video._canBeConsumed.value,[,Q]=re(te.PLAY_PAGE_CONTAINER_CLASS_NAME),Ae=e.commonVideoProps.getSubTextType?.(e.video),$=e.commonVideoProps.getSubTextAppLink(e.video);z.useEffect(()=>{Q(p?C.theatreModePlayPageContainer:``)},[p]),z.useEffect(()=>()=>Q(``),[]);function je(){t.trigger({action:m.SignUp.SIGN_UP,application:a.SIGN_UP})}function Me(){if(!d)return je();o||r.playerRef.current?.play(),v(!0),window.scrollTo({top:0,behavior:`smooth`})}function Ne(e){r.playerRef.current?.currentTime(e)}return(0,H.jsx)(g.Provider,{value:we,children:(0,H.jsxs)(`div`,{className:`px-4 play-page-sections-container ${e.shouldShowSideTableOfContents?`row g-0`:``}`,children:[(0,H.jsxs)(`main`,{className:`${C.main} ${De}`,children:[!!e.breadcrumbs?.length&&(0,H.jsx)(`div`,{className:`mb-2`,children:(0,H.jsx)(ue,{breadcrumbs:e.breadcrumbs})}),(0,H.jsx)(he,{restrictions:e.video._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.video.id,objectTypeId:u.Video,canManageVideoAccess:e.canManageVideoAccess}),Te&&(0,H.jsx)(fe,{typeId:e.video.typeId,hasStudentExperience:Ee}),(0,H.jsxs)(`section`,{id:S.Video,className:`mb-3 ${ie.GLOBAL_PLAYER_SELECTOR}`,ref:e=>{e&&U?.current&&U.current.set(S.Video,e)},children:[d&&(0,H.jsx)(le,{objectId:e.video.id,objectTypeId:e.video.typeId,shareId:e.shareId,context:e.params?.context,contextId:e.params?.contextId,playNext:e.params?.playNext,moviesAndTv:e.params?.mtv,startTime:e.params?.t??e.params?.startTime,endTime:e.params?.endTime,mode:`default`,location:`play-page`},e.video.id),(0,H.jsx)(`div`,{className:ke?``:`d-none`,children:(0,H.jsx)(ye,{video:e.video,appLink:{application:a.SIGN_UP,action:m.SignUp.SIGN_UP},type:r.mode===`picture-in-picture`?`pip`:`public`})})]}),(0,H.jsxs)(`div`,{className:Oe,children:[(0,H.jsxs)(`div`,{className:h?`${C.theatreModeLeftContent}`:`w-100`,children:[(0,H.jsx)(ve,{presentationSlug:e.presentationSlug,media:e.video,subTextType:Ae,subtextAppLink:$,yearGroups:e.commonVideoProps.yearGroups,audiences:e.audiences,featureAccess:e.featureAccess,shareId:e.shareId,showTitlePadlock:!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience}),V?(0,H.jsx)(T,{video:e.video,pointsOfInterest:e.pointsOfInterest,setStartTime:e=>r.playerRef.current?.currentTime(e),getTagAppLink:q.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:V}):(0,H.jsx)(I,{video:e.video,currentUser:e.currentUser,headingRef:U,onLaunchImmersiveReader:Y,onExitImmersiveReader:X,getTagAppLink:q.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,getPartnerProfileAppLink:q.getPartnerProfileAppLink,getPartnerDashboardHubAppLink:q.getPartnerDashboardHubAppLink,getLibraryAppLink:s(n.ViewLibraries)?q.getLibraryAppLink:null,getFolderAppLink:s(n.ViewLibraries)?q.getFolderAppLink:null}),(0,H.jsx)(Ce,{height:368,curriculums:e.curriculums,canViewCurriculumLinks:e.featureAccess.canViewCurriculumLinks,headingRef:U,video:e.video,hasNewSearch:e.hasNewSearch}),(0,H.jsx)(E,{headingRef:U,video:e.video,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.commonVideoProps.imageCdnUrl,getAppLink:J,analyticsData:{videoId:e.video.id,videoName:e.video.name},resourceThumbnailFallbackUrl:ne.Fallbacks.RESOURCE_THUMBNAIL,onDownloadAllClick:l}),(0,H.jsx)(M,{presentationSlug:e.presentationSlug,headingRef:U,video:e.video,interactives:e.interactives,analyticsData:{videoId:e.video.id,videoName:e.video.name},canViewInteractives:e.featureAccess.canViewInteractives,commonVideoProps:e.commonVideoProps}),(0,H.jsx)(k,{presentationSlug:e.presentationSlug,video:e.video,headingRef:U,clips:e.clips,canViewClips:e.featureAccess.canViewClips,audiences:e.audiences,analyticsData:{videoId:e.video.id,videoName:e.video.name},commonVideoProps:e.commonVideoProps}),V&&(0,H.jsx)(I,{video:e.video,currentUser:e.currentUser,headingRef:U,onLaunchImmersiveReader:Y,onExitImmersiveReader:X,getTagAppLink:q.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0,getPartnerProfileAppLink:q.getPartnerProfileAppLink,getPartnerDashboardHubAppLink:q.getPartnerDashboardHubAppLink,getLibraryAppLink:q.getLibraryAppLink,getFolderAppLink:q.getFolderAppLink}),e.shouldShowTranscript&&(0,H.jsx)(de,{headingRef:U,video:e.video,subtitles:e.subtitles,vttSubtitles:e.vttSubtitles,chapters:e.chapters,onShowInVideo:Me,signUpLink:{action:m.SignUp.SIGN_UP,application:a.SIGN_UP},setStartTime:Ne,isBot:e.isBot,isPaused:i,isAuthenticated:e.currentUser.isAuthenticated,playerApiUrl:e.playerApiUrl}),e.featureAccess.canViewCitations&&(0,H.jsx)(me,{headingRef:U,media:e.video,contentRegion:e.currentUser.contentRegion,shareId:e.shareId,presentationSlug:e.presentationSlug}),(0,H.jsx)(pe,{presentationSlug:e.presentationSlug,currentVideo:e.video,headingRef:U,commonVideoProps:e.commonVideoProps,relatedVideos:e.relatedVideos,currentUser:e.currentUser,getVideoAppLink:(t,n)=>se.getAppLink(t,{...n,context:e.params.context,contextId:e.params.contextId,playNext:e.params.playNext,shareId:e.shareId,moviesAndTv:e.params.mtv,includeContext:e.currentUser?.isAuthenticated},e.presentationSlug),audiences:e.audiences,moviesAndTv:e.params.mtv})]}),p&&(0,H.jsx)(w,{isExpanded:R,setIsExpanded:B,toggleTheatreMode:null,items:G,activeId:y,setControlledId:L,analyticsData:{videoId:e.video.id,videoName:e.video.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!0,hasTranscription:e.hasTheatreMode,shouldShow:G.length>=3})]})]}),!p&&(0,H.jsx)(w,{isExpanded:R,setIsExpanded:B,toggleTheatreMode:e.hasTheatreMode?_:null,items:G,activeId:y,setControlledId:L,analyticsData:{videoId:e.video.id,videoName:e.video.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!1,hasTranscription:e.hasTheatreMode,shouldShow:G.length>=3})]})})}function G(e,t){let n=o(c.currentUser()),{canViewTranscript:r}=_({objectId:e,objectTypeId:u.Video}),i=o(t?p.sharedVideo(e,t):p.video(e)),a=r&&!!i.data?._curationTags?.value?.isClickViewCurated;return{shouldShowTranscript:a,shouldFetchTranscript:a&&!n.data?.isAuthenticated}}export{W as n,R as r,G as t};
|
|
2
|
+
//# sourceMappingURL=CsCjBSq62.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BTugVIIN2.chunk.js","names":[],"sources":["../../src/shared/flight-requests/TranscriptRequests.ts","../../src/shared/components/play-page/components/play-page-curriculum-links/curriculum-links.module.scss","../../src/shared/components/play-page/components/play-page-curriculum-links/PlayPageCurriculumLinks.tsx","../../src/shared/views/play/components/play-page/PlayPage.tsx","../../src/shared/views/play/hooks/useShowVideoTranscript.ts"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { Chapter, Subtitle } from 'libs/shared/interfaces';\n\nexport interface TranscriptResponse {\n subtitles: Subtitle[];\n chapters: Chapter[];\n}\n\nexport const TranscriptRequests = {\n chaptersAndSubtitles(videoId: string, contentRegion?: string): Flight.PublicRequest {\n const queryStringObj = {\n query: 'subtitles[customer],chapters',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n contentRegion\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${videoId}/subtitles`, queryStringObj),\n key: `videos:${videoId}:subtitles:chapters:${PermissionFilterOption.StripMetadata}`,\n formatData: (data: any) => {\n return { subtitles: data.subtitles.data, chapters: data.chapters.data };\n }\n };\n },\n\n subtitleVtt(url: string, subtitleObj: Subtitle): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{player}/srt-to-vtt`, {\n url,\n fullSentences: true\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/player/srt-to-vtt`, {\n url,\n fullSentences: true\n }),\n key: `subtitle:${url}`,\n formatData: (data: any) => {\n return {\n ...subtitleObj,\n vtt: data\n };\n }\n };\n }\n};\n","@import '~styles/utils/include-media';\n:local {\n .dropdown {\n width: 75%;\n \n @include media(\">=md\") {\n width: 50%;\n }\n }\n}","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SEARCH_CURRICULUM_CODE_PARAM } from 'libs/shared/apps/search/utils/SharedSearchHelper';\nimport { CurriculumDropdown } from 'libs/shared/components/curriculum-links/CurriculumDropdown';\nimport { CurriculumLinks } from 'libs/shared/components/curriculum-links/CurriculumLinks';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurriculumData, Video } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\n\nimport { SearchHelper } from 'apps/search/utils';\n\nimport styles from './curriculum-links.module.scss';\n\nconst namespace = 'shared.curriculumLinks';\n\ninterface PlayPageCurriculumLinksProps {\n curriculums: CurriculumData;\n height: number;\n canViewCurriculumLinks: boolean;\n video: Video;\n headingRef: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n hasNewSearch: boolean;\n}\n\nexport function PlayPageCurriculumLinks(props: PlayPageCurriculumLinksProps): JSX.Element {\n const {\n preferredCurriculum,\n availableCurriculums,\n curriculumLinks,\n updateCurriculum\n } = props.curriculums;\n\n function onChangeCurriculum(curriculumId: string): void {\n updateCurriculum(curriculumId, {\n shouldLog: true,\n locationContext: LocationContext.PlayPage,\n video: props.video\n });\n }\n\n if (!props.canViewCurriculumLinks || (!curriculumLinks?.length && !props.curriculums.mappedCurriculums.length))\n return <></>;\n\n return (\n <section\n id={PlayPageAnchor.CurriculumLinks}\n ref={el => {\n (el && props.headingRef?.current) && props.headingRef.current.set(PlayPageAnchor.CurriculumLinks, el);\n }}\n className='play-page-section'\n >\n <h2 className='h4 me-2 h-100'>\n <Text namespace={namespace} phrase='heading' />\n </h2>\n <CurriculumDropdown\n availableCurriculums={availableCurriculums}\n onChangeCurriculum={onChangeCurriculum}\n selectedCurriculum={preferredCurriculum}\n className={styles.dropdown}\n />\n\n <div className='rounded border position-relative'>\n <Scrollbars autoHeight autoHeightMax={props.height}>\n <div className='p-3'>\n <CurriculumLinks\n curriculumLinks={props.curriculums.curriculumLinks}\n onChangeCurriculum={onChangeCurriculum}\n hasCompleted={props.curriculums.hasCompleted}\n mappedCurriculums={props.curriculums.mappedCurriculums}\n isFetching={props.curriculums.isFetching}\n getCodeAppLink={(query, isCode) => {\n if (!props.hasNewSearch)\n return null;\n \n return SearchHelper.getSearchAppLink(query, { [SEARCH_CURRICULUM_CODE_PARAM]: isCode });\n }}\n locationContext={LocationContext.PlayPage}\n />\n </div>\n </Scrollbars>\n </div>\n </section>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { VideoDetailsWithScrollbarV2 } from 'libs/shared/components/play-page/details/VideoDetailsV2';\nimport { hasGlanceData } from 'libs/shared/components/play-page/glance/VideoAtAGlanceUtilsV2';\nimport { VideoAtAGlanceV2 } from 'libs/shared/components/play-page/glance/VideoAtAGlanceV2';\nimport { PlayPageResources } from 'libs/shared/components/play-page/resources-widget/PlayPageResources';\nimport { PlayPageTranscription } from 'libs/shared/components/play-page/transcription/PlayPageTranscription';\nimport { LanguageNamespaceContext } from 'libs/shared/components/text/Text';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { useTableOfContentsActiveHeading } from 'libs/shared/hooks/useTableOfContentsActiveHeading';\nimport { useTableOfContentsScroll } from 'libs/shared/hooks/useTableOfContentsScroll';\nimport { Clip, CurrentUser, CurriculumData, InteractiveMetadata, PointOfInterest, PresentationAudience, Subtitle, Video, VttSubtitleResponse } from 'libs/shared/interfaces';\nimport { Chapter } from 'libs/shared/interfaces/Chapter';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { CitationWidget } from 'shared/components/citations/CitationWidget';\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { PlayPageClips } from 'shared/components/play-page/components/play-page-clips/PlayPageClips';\nimport { PlayPageCurriculumLinks } from 'shared/components/play-page/components/play-page-curriculum-links/PlayPageCurriculumLinks';\nimport { PlayPageInteractives } from 'shared/components/play-page/components/play-page-interactives/PlayPageInteractives';\nimport { TableOfContentsContainer, TOC_IGNORE_BOUNDARY } from 'shared/components/play-page/components/table-of-contents/TableOfContents';\nimport { PlayPageTitleAndActions } from 'shared/components/play-page/components/title-and-actions/PlayPageTitleAndActions';\nimport { getAppLinks } from 'shared/components/play-page/PlayPageUtils';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { PlayerPlaceholder } from 'shared/components/player-placeholder/PlayerPlaceholder';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { useDownloadAllResources } from 'shared/hooks/useDownloadAllResources';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoFeaturesHash } from 'shared/hooks/useVideoFeatureAccess';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { useResourcePopup } from 'shared/views/play/components/play-page/hooks/useResourcePopup';\nimport { getContentClassName, getIsTheatreMode, getMainClassName } from 'shared/views/play/components/play-page/PlayPageUtils';\nimport { usePlayPageTableOfContent } from 'shared/views/play/hooks/usePlayPageTableOfContent';\nimport { useSectionHeadings } from 'shared/views/play/hooks/useSectionHeadings';\nimport { useTheatreModeStyle } from 'shared/views/play/hooks/useTheatreStyle';\nimport { PlayPageUtils } from 'shared/views/play/PlayPageUtil';\n\nimport styles from './play-page.module.scss';\n\nconst namespace = 'shared.play';\n\ninterface PlayPageProps {\n presentationSlug: string | null;\n video: Video;\n clips: Clip[];\n interactives: InteractiveMetadata[];\n relatedVideos: RelatedVideosHash;\n audiences: PresentationAudience[];\n currentUser: CurrentUser;\n pointsOfInterest?: PointOfInterest[];\n playNext: boolean;\n shareId?: string;\n curriculums: CurriculumData;\n featureAccess: VideoFeaturesHash;\n params?: PlayViewQueryParams;\n canManageVideoAccess: boolean;\n tableOfContentsId: string;\n shouldShowSideTableOfContents: boolean;\n hasTheatreMode: boolean;\n shouldShowTranscript: boolean;\n hasNewSearch: boolean;\n breadcrumbs?: Breadcrumb[];\n vttSubtitles: VttSubtitleResponse[];\n subtitles: Subtitle[];\n chapters: Chapter[];\n commonVideoProps: CommonVideoProps;\n isBot: boolean;\n playerApiUrl: string;\n liteUrl: string;\n resourcePopupId?: string;\n}\n\nexport function PlayPage(props: PlayPageProps): JSX.Element {\n const playerContext = usePlayerContext();\n const isPaused = playerContext.playerRef.current?.isPaused?.();\n const hasStarted = playerContext.playerRef?.current?.hasStarted?.();\n\n const { hasPermissions } = usePermissions();\n const settings = useSettings(null);\n const onDownloadAllClick = useDownloadAllResources();\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n const theatreMode = getIsTheatreMode(props.hasTheatreMode, playerContext);\n const shouldUseTheatreModeStyle = useTheatreModeStyle(\n props.hasTheatreMode,\n playerContext.mode,\n playerContext.defaultDisplayMode\n );\n\n function toggleTheatreMode(value: boolean) {\n // when exit theatre mode turn off transcript\n if (!value) {\n toggleTranscript(false);\n }\n\n playerContext.setDefaultDisplayMode?.(value ? 'theatre' : 'normal');\n playerContext.playerRef?.current?.toggleTheatreMode?.(value);\n }\n\n function toggleTranscript(value: boolean) {\n playerContext.playerRef?.current?.toggleTranscript?.(value);\n }\n\n const {\n tableOfContentsActiveId,\n setTableOfContentsActiveId,\n controlledId,\n setControlledId,\n tableOfContentsExpanded,\n onToggleTableOfContents\n } = usePlayPageTableOfContent(props.tableOfContentsId, props.hasTheatreMode, theatreMode);\n\n const hasGlance = hasGlanceData(props.video) && props.featureAccess.canViewGlance;\n\n const { headingRef, headingElements } = useSectionHeadings(hasGlance);\n const items = headingElements.map(el => {\n return {\n id: el.id as PlayPageAnchor,\n name: PlayPageUtils.getSectionHeading(\n el.id as PlayPageAnchor,\n {\n clips: props.clips,\n interactives: props.interactives,\n resources: [ ...(props.video.resources?.data ?? []), ...(props.video.links?.data ?? []) ]\n }\n )\n };\n });\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.video);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n useTableOfContentsActiveHeading({\n setActiveId: setTableOfContentsActiveId,\n headingElements,\n controlledId,\n setControlledId\n });\n\n useTableOfContentsScroll(headingElements, controlledId);\n\n /**\n * Need to use a ref because if we use state, onExitImmersiveReader will have a stale\n * reference of the state. This is because the state is changed in onLaunchImmersiveReader\n * which is passed in at the same time as onExitImmersiveReader\n */\n const shouldPlayOnExitImmersiveReader = React.useRef(false);\n\n const appLinkFns = getAppLinks({ settings, presentationSlug: props.presentationSlug });\n\n const getResourceAppLink = appLinkFns.getResourceAppLink(\n props.video.id,\n props.shareId,\n props.featureAccess.canViewResourceItems\n );\n\n useResourcePopup({\n resourcePopupId: props.resourcePopupId,\n resources: props.video.resources?.data,\n getResourceAppLink\n });\n\n function onLaunchImmersiveReader(): void {\n shouldPlayOnExitImmersiveReader.current = !playerContext?.playerRef?.current?.isPaused();\n playerContext?.playerRef?.current?.pause();\n }\n\n function onExitImmersiveReader(): void {\n if (!shouldPlayOnExitImmersiveReader.current)\n return;\n\n playerContext?.playerRef?.current?.play();\n }\n\n const calcClassNameProps = {\n hasTheatreMode: props.hasTheatreMode,\n shouldShowSideTableOfContents: props.shouldShowSideTableOfContents,\n tableOfContentsExpanded,\n theatreMode: shouldUseTheatreModeStyle\n };\n const mainClassName = getMainClassName(calcClassNameProps);\n const contentClassName = getContentClassName(calcClassNameProps);\n\n const showPlayerPlaceholder = playerContext.mode === 'picture-in-picture' || (props.featureAccess.canViewPublicLayout && !props.video._canBeConsumed.value);\n \n const [ , setContainerClassName ] = useViewModel(ViewModelKeys.PLAY_PAGE_CONTAINER_CLASS_NAME);\n\n const subTextType = props.commonVideoProps.getSubTextType?.(props.video);\n const getSubtextAppLink = props.commonVideoProps.getSubTextAppLink(props.video);\n\n React.useEffect(() => {\n if (!theatreMode) {\n setContainerClassName('');\n } else {\n setContainerClassName(styles.theatreModePlayPageContainer);\n }\n }, [theatreMode]);\n\n React.useEffect(() => {\n return () => setContainerClassName('');\n }, []);\n\n function goToSignUp() {\n Core.AppLinkHelper.trigger({ action: Actions.SignUp.SIGN_UP, application: AppChannels.SIGN_UP });\n }\n\n function onShowTranscriptInVideo() {\n if (!canConsume)\n return goToSignUp();\n\n if (!hasStarted)\n playerContext.playerRef.current?.play();\n\n toggleTranscript(true);\n\n window.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n function setStartTime(time: number) {\n playerContext.playerRef.current?.currentTime(time);\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className={`px-4 play-page-sections-container ${props.shouldShowSideTableOfContents ? 'row g-0' : ''}`}>\n <main className={`${styles.main} ${mainClassName}`}>\n {!!props.breadcrumbs?.length && (\n <div className='mb-2'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n )}\n \n <RestrictionBanner\n restrictions={props.video._restrictions}\n yearGroups={props.commonVideoProps.yearGroups}\n objectId={props.video.id}\n objectTypeId={MasterType.Video}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n {isArchived && <ArchivedBanner typeId={props.video.typeId} hasStudentExperience={hasStudentExperience} />}\n\n <section\n id={PlayPageAnchor.Video}\n className={`mb-3 ${SeoConstants.GLOBAL_PLAYER_SELECTOR}`}\n ref={el => { (el && headingRef?.current) && headingRef.current.set(PlayPageAnchor.Video, el); }}\n >\n {canConsume && (\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n shareId={props.shareId}\n context={props.params?.context}\n contextId={props.params?.contextId}\n playNext={props.params?.playNext}\n moviesAndTv={props.params?.mtv}\n startTime={props.params?.t ?? props.params?.startTime}\n endTime={props.params?.endTime}\n mode='default'\n location='play-page'\n />\n )}\n \n <div className={showPlayerPlaceholder ? '' : 'd-none'}>\n <PlayerPlaceholder\n video={props.video}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n type={playerContext.mode === 'picture-in-picture' ? 'pip' : 'public'}\n />\n </div>\n </section>\n\n <div className={contentClassName}>\n <div className={shouldUseTheatreModeStyle ? `${styles.theatreModeLeftContent}` : 'w-100'}>\n <PlayPageTitleAndActions\n presentationSlug={props.presentationSlug}\n media={props.video}\n subTextType={subTextType}\n subtextAppLink={getSubtextAppLink}\n yearGroups={props.commonVideoProps.yearGroups}\n audiences={props.audiences}\n featureAccess={props.featureAccess}\n shareId={props.shareId}\n showTitlePadlock={!props.commonVideoProps.hasStudentExperience\n && !props.commonVideoProps.hasGuestExperience}\n />\n\n {/* if no glance render video details here */}\n {hasGlance ? (\n <VideoAtAGlanceV2\n video={props.video}\n pointsOfInterest={props.pointsOfInterest}\n setStartTime={(time: number) => playerContext.playerRef.current?.currentTime(time)}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n canViewGlance={hasGlance}\n />\n ) : (\n <VideoDetailsWithScrollbarV2\n video={props.video}\n currentUser={props.currentUser}\n headingRef={headingRef}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n getPartnerProfileAppLink={appLinkFns.getPartnerProfileAppLink}\n getPartnerDashboardHubAppLink={appLinkFns.getPartnerDashboardHubAppLink}\n getLibraryAppLink={hasPermissions(PermissionName.ViewLibraries) ? appLinkFns.getLibraryAppLink : null}\n getFolderAppLink={hasPermissions(PermissionName.ViewLibraries) ? appLinkFns.getFolderAppLink : null}\n />\n )}\n\n <PlayPageCurriculumLinks\n height={MINIMUM_GLANCE_HEIGHT}\n curriculums={props.curriculums}\n canViewCurriculumLinks={props.featureAccess.canViewCurriculumLinks}\n headingRef={headingRef}\n video={props.video}\n hasNewSearch={props.hasNewSearch}\n />\n\n <PlayPageResources\n headingRef={headingRef}\n video={props.video}\n canViewResources={props.featureAccess.canViewResourceItems}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n getAppLink={getResourceAppLink}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n resourceThumbnailFallbackUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n onDownloadAllClick={onDownloadAllClick}\n />\n\n <PlayPageInteractives\n presentationSlug={props.presentationSlug}\n headingRef={headingRef}\n video={props.video}\n interactives={props.interactives}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n canViewInteractives={props.featureAccess.canViewInteractives}\n commonVideoProps={props.commonVideoProps}\n />\n\n <PlayPageClips\n presentationSlug={props.presentationSlug}\n video={props.video}\n headingRef={headingRef}\n clips={props.clips}\n canViewClips={props.featureAccess.canViewClips}\n audiences={props.audiences}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n commonVideoProps={props.commonVideoProps}\n />\n\n {/* if has glance, render video details here */}\n {hasGlance && (\n <VideoDetailsWithScrollbarV2\n video={props.video}\n currentUser={props.currentUser}\n headingRef={headingRef}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n showHeading\n getPartnerProfileAppLink={appLinkFns.getPartnerProfileAppLink}\n getPartnerDashboardHubAppLink={appLinkFns.getPartnerDashboardHubAppLink}\n getLibraryAppLink={appLinkFns.getLibraryAppLink}\n getFolderAppLink={appLinkFns.getFolderAppLink}\n />\n )}\n\n {props.shouldShowTranscript && (\n <PlayPageTranscription\n headingRef={headingRef}\n video={props.video}\n subtitles={props.subtitles}\n vttSubtitles={props.vttSubtitles}\n chapters={props.chapters}\n onShowInVideo={onShowTranscriptInVideo}\n signUpLink={{ action: Actions.SignUp.SIGN_UP, application: AppChannels.SIGN_UP }}\n setStartTime={setStartTime}\n isBot={props.isBot}\n isPaused={isPaused}\n isAuthenticated={props.currentUser.isAuthenticated}\n playerApiUrl={props.playerApiUrl}\n />\n )}\n\n {props.featureAccess.canViewCitations && (\n <CitationWidget\n headingRef={headingRef}\n media={props.video}\n contentRegion={props.currentUser.contentRegion}\n shareId={props.shareId}\n presentationSlug={props.presentationSlug}\n />\n )}\n\n <RelatedVideos\n presentationSlug={props.presentationSlug}\n currentVideo={props.video}\n headingRef={headingRef}\n commonVideoProps={props.commonVideoProps}\n relatedVideos={props.relatedVideos}\n currentUser={props.currentUser}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.params.context,\n contextId: props.params.contextId,\n playNext: props.params.playNext,\n shareId: props.shareId,\n moviesAndTv: props.params.mtv,\n includeContext: props.currentUser?.isAuthenticated\n }, props.presentationSlug)}\n audiences={props.audiences}\n moviesAndTv={props.params.mtv}\n />\n </div>\n {theatreMode && (\n <TableOfContentsContainer\n isExpanded={tableOfContentsExpanded}\n setIsExpanded={onToggleTableOfContents}\n toggleTheatreMode={ null}\n items={items}\n activeId={tableOfContentsActiveId}\n setControlledId={setControlledId}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n showInSide={props.shouldShowSideTableOfContents}\n isTheatreMode={true}\n hasTranscription={props.hasTheatreMode}\n shouldShow={items.length >= TOC_IGNORE_BOUNDARY}\n />\n )}\n </div>\n </main>\n\n {!theatreMode && (\n <TableOfContentsContainer\n isExpanded={tableOfContentsExpanded}\n setIsExpanded={onToggleTableOfContents}\n toggleTheatreMode={props.hasTheatreMode ? toggleTheatreMode : null}\n items={items}\n activeId={tableOfContentsActiveId}\n setControlledId={setControlledId}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n showInSide={props.shouldShowSideTableOfContents}\n isTheatreMode={false}\n hasTranscription={props.hasTheatreMode}\n shouldShow={items.length >= TOC_IGNORE_BOUNDARY}\n />\n )}\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import { Flight } from 'libs/common/react/index';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { CurrentUser, Video } from 'libs/shared/interfaces';\n\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\n\nexport function useShowTranscriptForVideo(videoId: string, shareId?: string) {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const { canViewTranscript } = useVideoFeatureAccess({\n objectId: videoId,\n objectTypeId: MasterType.Video\n });\n\n const video = Flight.useBasicFetch<Video>(\n shareId ? VideoRequests.sharedVideo(videoId, shareId) : VideoRequests.video(videoId)\n );\n\n const shouldShowTranscript = canViewTranscript && !!video.data?._curationTags?.value?.isClickViewCurated;\n return {\n shouldShowTranscript,\n shouldFetchTranscript: shouldShowTranscript && !currentUser.data?.isAuthenticated\n };\n}\n"],"mappings":"4sDAWA,IAAa,EAAqB,CAChC,qBAAqB,EAAiB,EAA8C,CAClF,IAAM,EAAiB,CACrB,MAAO,+BACP,uBAAwB,EAAuB,cAC/C,eACF,EAEA,MAAO,CACL,IAAK,EAAU,WAAW,wBAAwB,IAAW,CAAc,EAC3E,UAAW,EAAU,WAAW,gBAAgB,EAAQ,YAAa,CAAc,EACnF,IAAK,UAAU,EAAQ,sBAAsB,EAAuB,gBACpE,WAAa,IACJ,CAAE,UAAW,EAAK,UAAU,KAAM,SAAU,EAAK,SAAS,IAAK,EAE1E,CACF,EAEA,YAAY,EAAa,EAA6C,CACpE,MAAO,CACL,IAAK,EAAU,WAAW,sBAAuB,CAC/C,MACA,cAAe,EACjB,CAAC,EACD,UAAW,EAAU,WAAW,yBAA0B,CACxD,MACA,cAAe,EACjB,CAAC,EACD,IAAK,YAAY,IACjB,WAAa,IACJ,CACL,GAAG,EACH,IAAK,CACP,EAEJ,CACF,CACF,wDEhCM,EAAY,yBAWlB,SAAgB,GAAwB,EAAkD,CACxF,GAAM,CACJ,sBACA,uBACA,kBACA,oBACE,EAAM,YAEV,SAAS,EAAmB,EAA4B,CACtD,EAAiB,EAAc,CAC7B,UAAW,GACX,gBAAiB,EAAgB,SACjC,MAAO,EAAM,KACf,CAAC,CACH,CAKA,MAHI,CAAC,EAAM,wBAA2B,CAAC,GAAiB,QAAU,CAAC,EAAM,YAAY,kBAAkB,QAC9F,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,GAGX,EAAA,EAAA,KAAA,CAAC,UAAD,CACE,GAAI,EAAe,gBACnB,IAAK,GAAM,CACT,GAAO,EAAM,YAAY,SAAY,EAAM,WAAW,QAAQ,IAAI,EAAe,gBAAiB,CAAE,CACtG,EACA,UAAU,6BALZ,EAOE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,0BACZ,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,UAAA,EAAW,OAAO,SAAW,CAAA,CAC5C,CAAA,GACJ,EAAA,EAAA,IAAA,CAAC,EAAD,CACwB,uBACF,qBACpB,mBAAoB,EACpB,UAAW,EAAO,QACnB,CAAA,GAED,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6CACb,EAAA,EAAA,IAAA,CAAC,EAAA,WAAD,CAAY,WAAA,GAAW,cAAe,EAAM,iBAC1C,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,gBACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,gBAAiB,EAAM,YAAY,gBACf,qBACpB,aAAc,EAAM,YAAY,aAChC,kBAAmB,EAAM,YAAY,kBACrC,WAAY,EAAM,YAAY,WAC9B,gBAAiB,EAAO,IACjB,EAAM,aAGJ,EAAa,iBAAiB,EAAO,EAAG,GAA+B,CAAO,CAAC,EAF7E,KAIX,gBAAiB,EAAgB,QAClC,CAAA,CACE,CAAA,CACK,CAAA,CACT,CAAA,CACE,GAEb,CC7BA,IAAM,GAAY,cAiClB,SAAgB,EAAS,EAAmC,CAC1D,IAAM,EAAgB,GAAiB,EACjC,EAAW,EAAc,UAAU,SAAS,WAAW,EACvD,EAAa,EAAc,WAAW,SAAS,aAAa,EAE5D,CAAE,kBAAmB,GAAe,EACpC,EAAW,GAAY,IAAI,EAC3B,EAAqB,GAAwB,EAC7C,CAAE,cAAe,EAAY,iBAAiB,EAAM,KAAK,EAEzD,EAAc,EAAiB,EAAM,eAAgB,CAAa,EAClE,EAA4B,EAChC,EAAM,eACN,EAAc,KACd,EAAc,kBAChB,EAEA,SAAS,EAAkB,EAAgB,CAEpC,GACH,EAAiB,EAAK,EAGxB,EAAc,wBAAwB,EAAQ,UAAY,QAAQ,EAClE,EAAc,WAAW,SAAS,oBAAoB,CAAK,CAC7D,CAEA,SAAS,EAAiB,EAAgB,CACxC,EAAc,WAAW,SAAS,mBAAmB,CAAK,CAC5D,CAEA,GAAM,CACJ,0BACA,6BACA,eACA,kBACA,0BACA,2BACE,EAA0B,EAAM,kBAAmB,EAAM,eAAgB,CAAW,EAElF,EAAY,GAAc,EAAM,KAAK,GAAK,EAAM,cAAc,cAE9D,CAAE,aAAY,mBAAoB,EAAmB,CAAS,EAC9D,EAAQ,EAAgB,IAAI,IACzB,CACL,GAAI,EAAG,GACP,KAAM,EAAc,kBAClB,EAAG,GACH,CACE,MAAO,EAAM,MACb,aAAc,EAAM,aACpB,UAAW,CAAE,GAAI,EAAM,MAAM,WAAW,MAAQ,CAAC,EAAI,GAAI,EAAM,MAAM,OAAO,MAAQ,CAAC,CAAG,CAC1F,CACF,CACF,EACD,EAEK,GAAa,EAAY,oBAAoB,EAAM,KAAK,EACxD,GAAuB,EAAe,EAAe,iBAAiB,EAE5E,GAAgC,CAC9B,YAAa,EACb,kBACA,eACA,iBACF,CAAC,EAED,GAAyB,EAAiB,CAAY,EAOtD,IAAM,EAAA,EAAwC,OAAO,EAAK,EAEpD,EAAa,GAAY,CAAE,WAAU,iBAAkB,EAAM,gBAAiB,CAAC,EAE/E,EAAqB,EAAW,mBACpC,EAAM,MAAM,GACZ,EAAM,QACN,EAAM,cAAc,oBACtB,EAEA,EAAiB,CACf,gBAAiB,EAAM,gBACvB,UAAW,EAAM,MAAM,WAAW,KAClC,oBACF,CAAC,EAED,SAAS,GAAgC,CACvC,EAAgC,QAAU,CAAC,GAAe,WAAW,SAAS,SAAS,EACvF,GAAe,WAAW,SAAS,MAAM,CAC3C,CAEA,SAAS,GAA8B,CAChC,EAAgC,SAGrC,GAAe,WAAW,SAAS,KAAK,CAC1C,CAEA,IAAM,EAAqB,CACzB,eAAgB,EAAM,eACtB,8BAA+B,EAAM,8BACrC,0BACA,YAAa,CACf,EACM,GAAgB,EAAiB,CAAkB,EACnD,GAAmB,GAAoB,CAAkB,EAEzD,GAAwB,EAAc,OAAS,sBAAyB,EAAM,cAAc,qBAAuB,CAAC,EAAM,MAAM,eAAe,MAE/I,EAAI,GAA0B,GAAa,GAAc,8BAA8B,EAEvF,GAAc,EAAM,iBAAiB,iBAAiB,EAAM,KAAK,EACjE,EAAoB,EAAM,iBAAiB,kBAAkB,EAAM,KAAK,EAE9E,EAAM,cAAgB,CAIlB,EAHG,EAGmB,EAAO,6BAFP,EAEmC,CAE7D,EAAG,CAAC,CAAW,CAAC,EAEhB,EAAM,kBACS,EAAsB,EAAE,EACpC,CAAC,CAAC,EAEL,SAAS,IAAa,CACpB,EAAmB,QAAQ,CAAE,OAAQ,EAAQ,OAAO,QAAS,YAAa,EAAY,OAAQ,CAAC,CACjG,CAEA,SAAS,IAA0B,CACjC,GAAI,CAAC,EACH,OAAO,GAAW,EAEf,GACH,EAAc,UAAU,SAAS,KAAK,EAExC,EAAiB,EAAI,EAErB,OAAO,SAAS,CAAE,IAAK,EAAG,SAAU,QAAS,CAAC,CAChD,CAEA,SAAS,GAAa,EAAc,CAClC,EAAc,UAAU,SAAS,YAAY,CAAI,CACnD,CAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAyB,SAA1B,CAAmC,MAAO,aACxC,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,qCAAqC,EAAM,8BAAgC,UAAY,cAAvG,EACE,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,UAAW,GAAG,EAAO,KAAK,GAAG,cAAnC,CACG,CAAC,CAAC,EAAM,aAAa,SACpB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,iBACb,EAAA,EAAA,IAAA,CAAC,GAAD,CAAa,YAAa,EAAM,WAAc,CAAA,CAC3C,CAAA,GAGP,EAAA,EAAA,IAAA,CAAC,GAAD,CACE,aAAc,EAAM,MAAM,cAC1B,WAAY,EAAM,iBAAiB,WACnC,SAAU,EAAM,MAAM,GACtB,aAAc,EAAW,MACzB,qBAAsB,EAAM,oBAC7B,CAAA,EAEA,KAAc,EAAA,EAAA,IAAA,CAAC,GAAD,CAAgB,OAAQ,EAAM,MAAM,OAA8B,uBAAuB,CAAA,GAExG,EAAA,EAAA,KAAA,CAAC,UAAD,CACE,GAAI,EAAe,MACnB,UAAW,QAAQ,GAAa,yBAChC,IAAK,GAAM,CAAE,GAAO,GAAY,SAAY,EAAW,QAAQ,IAAI,EAAe,MAAO,CAAE,CAAG,WAHhG,CAKG,IACC,EAAA,EAAA,IAAA,CAAC,GAAD,CAEE,SAAU,EAAM,MAAM,GACtB,aAAc,EAAM,MAAM,OAC1B,QAAS,EAAM,QACf,QAAS,EAAM,QAAQ,QACvB,UAAW,EAAM,QAAQ,UACzB,SAAU,EAAM,QAAQ,SACxB,YAAa,EAAM,QAAQ,IAC3B,UAAW,EAAM,QAAQ,GAAK,EAAM,QAAQ,UAC5C,QAAS,EAAM,QAAQ,QACvB,KAAK,UACL,SAAS,WACV,EAZM,EAAM,MAAM,EAYlB,GAGH,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,GAAwB,GAAK,mBAC3C,EAAA,EAAA,IAAA,CAAC,GAAD,CACE,MAAO,EAAM,MACb,QAAS,CACP,YAAa,EAAY,QACzB,OAAQ,EAAQ,OAAO,OACzB,EACA,KAAM,EAAc,OAAS,qBAAuB,MAAQ,QAC7D,CAAA,CACE,CAAA,CACE,KAET,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,YAAhB,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAA4B,GAAG,EAAO,yBAA2B,iBAAjF,EACE,EAAA,EAAA,IAAA,CAAC,GAAD,CACE,iBAAkB,EAAM,iBACxB,MAAO,EAAM,MACA,eACb,eAAgB,EAChB,WAAY,EAAM,iBAAiB,WACnC,UAAW,EAAM,UACjB,cAAe,EAAM,cACrB,QAAS,EAAM,QACf,iBAAkB,CAAC,EAAM,iBAAiB,sBACrC,CAAC,EAAM,iBAAiB,kBAC9B,CAAA,EAGA,GACC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAO,EAAM,MACb,iBAAkB,EAAM,iBACxB,aAAe,GAAiB,EAAc,UAAU,SAAS,YAAY,CAAI,EACjF,cAAe,EAAW,cAC1B,sBAAuB,EAAM,cAAc,oBAC3C,cAAe,CAChB,CAAA,GAED,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAO,EAAM,MACb,YAAa,EAAM,YACP,aACa,0BACF,wBACvB,cAAe,EAAW,cAC1B,sBAAuB,EAAM,cAAc,oBAC3C,yBAA0B,EAAW,yBACrC,8BAA+B,EAAW,8BAC1C,kBAAmB,EAAe,EAAe,aAAa,EAAI,EAAW,kBAAoB,KACjG,iBAAkB,EAAe,EAAe,aAAa,EAAI,EAAW,iBAAmB,IAChG,CAAA,GAGH,EAAA,EAAA,IAAA,CAAC,GAAD,CACE,OAAA,IACA,YAAa,EAAM,YACnB,uBAAwB,EAAM,cAAc,uBAChC,aACZ,MAAO,EAAM,MACb,aAAc,EAAM,YACrB,CAAA,GAED,EAAA,EAAA,IAAA,CAAC,EAAD,CACc,aACZ,MAAO,EAAM,MACb,iBAAkB,EAAM,cAAc,qBACtC,YAAa,EAAM,iBAAiB,YACpC,WAAY,EACZ,cAAe,CAAE,QAAS,EAAM,MAAM,GAAI,UAAW,EAAM,MAAM,IAAK,EACtE,6BAA8B,GAAU,UAAU,mBAC9B,oBACrB,CAAA,GAED,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,iBAAkB,EAAM,iBACZ,aACZ,MAAO,EAAM,MACb,aAAc,EAAM,aACpB,cAAe,CAAE,QAAS,EAAM,MAAM,GAAI,UAAW,EAAM,MAAM,IAAK,EACtE,oBAAqB,EAAM,cAAc,oBACzC,iBAAkB,EAAM,gBACzB,CAAA,GAED,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,iBAAkB,EAAM,iBACxB,MAAO,EAAM,MACD,aACZ,MAAO,EAAM,MACb,aAAc,EAAM,cAAc,aAClC,UAAW,EAAM,UACjB,cAAe,CAAE,QAAS,EAAM,MAAM,GAAI,UAAW,EAAM,MAAM,IAAK,EACtE,iBAAkB,EAAM,gBACzB,CAAA,EAGA,IACC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAO,EAAM,MACb,YAAa,EAAM,YACP,aACa,0BACF,wBACvB,cAAe,EAAW,cAC1B,sBAAuB,EAAM,cAAc,oBAC3C,YAAA,GACA,yBAA0B,EAAW,yBACrC,8BAA+B,EAAW,8BAC1C,kBAAmB,EAAW,kBAC9B,iBAAkB,EAAW,gBAC9B,CAAA,EAGF,EAAM,uBACL,EAAA,EAAA,IAAA,CAAC,GAAD,CACc,aACZ,MAAO,EAAM,MACb,UAAW,EAAM,UACjB,aAAc,EAAM,aACpB,SAAU,EAAM,SAChB,cAAe,GACf,WAAY,CAAE,OAAQ,EAAQ,OAAO,QAAS,YAAa,EAAY,OAAQ,EACjE,gBACd,MAAO,EAAM,MACH,WACV,gBAAiB,EAAM,YAAY,gBACnC,aAAc,EAAM,YACrB,CAAA,EAGF,EAAM,cAAc,mBACnB,EAAA,EAAA,IAAA,CAAC,GAAD,CACc,aACZ,MAAO,EAAM,MACb,cAAe,EAAM,YAAY,cACjC,QAAS,EAAM,QACf,iBAAkB,EAAM,gBACzB,CAAA,GAGH,EAAA,EAAA,IAAA,CAAC,GAAD,CACE,iBAAkB,EAAM,iBACxB,aAAc,EAAM,MACR,aACZ,iBAAkB,EAAM,iBACxB,cAAe,EAAM,cACrB,YAAa,EAAM,YACnB,iBAAkB,EAAG,IAAS,GAAmB,WAAW,EAAG,CAC7D,GAAG,EACH,QAAS,EAAM,OAAO,QACtB,UAAW,EAAM,OAAO,UACxB,SAAU,EAAM,OAAO,SACvB,QAAS,EAAM,QACf,YAAa,EAAM,OAAO,IAC1B,eAAgB,EAAM,aAAa,eACrC,EAAG,EAAM,gBAAgB,EACzB,UAAW,EAAM,UACjB,YAAa,EAAM,OAAO,GAC3B,CAAA,CACE,IACJ,IACC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,WAAY,EACZ,cAAe,EACf,kBAAoB,KACb,QACP,SAAU,EACO,kBACjB,cAAe,CAAE,QAAS,EAAM,MAAM,GAAI,UAAW,EAAM,MAAM,IAAK,EACtE,WAAY,EAAM,8BAClB,cAAe,GACf,iBAAkB,EAAM,eACxB,WAAY,EAAM,QAAA,CACnB,CAAA,CAEA,GACD,IAEL,CAAC,IACA,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,WAAY,EACZ,cAAe,EACf,kBAAmB,EAAM,eAAiB,EAAoB,KACvD,QACP,SAAU,EACO,kBACjB,cAAe,CAAE,QAAS,EAAM,MAAM,GAAI,UAAW,EAAM,MAAM,IAAK,EACtE,WAAY,EAAM,8BAClB,cAAe,GACf,iBAAkB,EAAM,eACxB,WAAY,EAAM,QAAA,CACnB,CAAA,CAEA,GAC4B,CAAA,CAEvC,CCpdA,SAAgB,EAA0B,EAAiB,EAAkB,CAC3E,IAAM,EAAc,EAAkC,EAAa,YAAY,CAAC,EAE1E,CAAE,qBAAsB,EAAsB,CAClD,SAAU,EACV,aAAc,EAAW,KAC3B,CAAC,EAEK,EAAQ,EACZ,EAAU,EAAc,YAAY,EAAS,CAAO,EAAI,EAAc,MAAM,CAAO,CACrF,EAEM,EAAuB,GAAqB,CAAC,CAAC,EAAM,MAAM,eAAe,OAAO,mBACtF,MAAO,CACL,uBACA,sBAAuB,GAAwB,CAAC,EAAY,MAAM,eACpE,CACF"}
|
|
1
|
+
{"version":3,"file":"CsCjBSq62.chunk.js","names":[],"sources":["../../src/shared/flight-requests/TranscriptRequests.ts","../../src/shared/components/play-page/components/play-page-curriculum-links/curriculum-links.module.scss","../../src/shared/components/play-page/components/play-page-curriculum-links/PlayPageCurriculumLinks.tsx","../../src/shared/views/play/components/play-page/PlayPage.tsx","../../src/shared/views/play/hooks/useShowVideoTranscript.ts"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { Chapter, Subtitle } from 'libs/shared/interfaces';\n\nexport interface TranscriptResponse {\n subtitles: Subtitle[];\n chapters: Chapter[];\n}\n\nexport const TranscriptRequests = {\n chaptersAndSubtitles(videoId: string, contentRegion?: string): Flight.PublicRequest {\n const queryStringObj = {\n query: 'subtitles[customer],chapters',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n contentRegion\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${videoId}/subtitles`, queryStringObj),\n key: `videos:${videoId}:subtitles:chapters:${PermissionFilterOption.StripMetadata}`,\n formatData: (data: any) => {\n return { subtitles: data.subtitles.data, chapters: data.chapters.data };\n }\n };\n },\n\n subtitleVtt(url: string, subtitleObj: Subtitle): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{player}/srt-to-vtt`, {\n url,\n fullSentences: true\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/player/srt-to-vtt`, {\n url,\n fullSentences: true\n }),\n key: `subtitle:${url}`,\n formatData: (data: any) => {\n return {\n ...subtitleObj,\n vtt: data\n };\n }\n };\n }\n};\n","@import '~styles/utils/include-media';\n:local {\n .dropdown {\n width: 75%;\n \n @include media(\">=md\") {\n width: 50%;\n }\n }\n}","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SEARCH_CURRICULUM_CODE_PARAM } from 'libs/shared/apps/search/utils/SharedSearchHelper';\nimport { CurriculumDropdown } from 'libs/shared/components/curriculum-links/CurriculumDropdown';\nimport { CurriculumLinks } from 'libs/shared/components/curriculum-links/CurriculumLinks';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurriculumData, Video } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\n\nimport { SearchHelper } from 'apps/search/utils';\n\nimport styles from './curriculum-links.module.scss';\n\nconst namespace = 'shared.curriculumLinks';\n\ninterface PlayPageCurriculumLinksProps {\n curriculums: CurriculumData;\n height: number;\n canViewCurriculumLinks: boolean;\n video: Video;\n headingRef: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n hasNewSearch: boolean;\n}\n\nexport function PlayPageCurriculumLinks(props: PlayPageCurriculumLinksProps): JSX.Element {\n const {\n preferredCurriculum,\n availableCurriculums,\n curriculumLinks,\n updateCurriculum\n } = props.curriculums;\n\n function onChangeCurriculum(curriculumId: string): void {\n updateCurriculum(curriculumId, {\n shouldLog: true,\n locationContext: LocationContext.PlayPage,\n video: props.video\n });\n }\n\n if (!props.canViewCurriculumLinks || (!curriculumLinks?.length && !props.curriculums.mappedCurriculums.length))\n return <></>;\n\n return (\n <section\n id={PlayPageAnchor.CurriculumLinks}\n ref={el => {\n (el && props.headingRef?.current) && props.headingRef.current.set(PlayPageAnchor.CurriculumLinks, el);\n }}\n className='play-page-section'\n >\n <h2 className='h4 me-2 h-100'>\n <Text namespace={namespace} phrase='heading' />\n </h2>\n <CurriculumDropdown\n availableCurriculums={availableCurriculums}\n onChangeCurriculum={onChangeCurriculum}\n selectedCurriculum={preferredCurriculum}\n className={styles.dropdown}\n />\n\n <div className='rounded border position-relative'>\n <Scrollbars autoHeight autoHeightMax={props.height}>\n <div className='p-3'>\n <CurriculumLinks\n curriculumLinks={props.curriculums.curriculumLinks}\n onChangeCurriculum={onChangeCurriculum}\n hasCompleted={props.curriculums.hasCompleted}\n mappedCurriculums={props.curriculums.mappedCurriculums}\n isFetching={props.curriculums.isFetching}\n getCodeAppLink={(query, isCode) => {\n if (!props.hasNewSearch)\n return null;\n \n return SearchHelper.getSearchAppLink(query, { [SEARCH_CURRICULUM_CODE_PARAM]: isCode });\n }}\n locationContext={LocationContext.PlayPage}\n />\n </div>\n </Scrollbars>\n </div>\n </section>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { VideoDetailsWithScrollbarV2 } from 'libs/shared/components/play-page/details/VideoDetailsV2';\nimport { hasGlanceData } from 'libs/shared/components/play-page/glance/VideoAtAGlanceUtilsV2';\nimport { VideoAtAGlanceV2 } from 'libs/shared/components/play-page/glance/VideoAtAGlanceV2';\nimport { PlayPageResources } from 'libs/shared/components/play-page/resources-widget/PlayPageResources';\nimport { PlayPageTranscription } from 'libs/shared/components/play-page/transcription/PlayPageTranscription';\nimport { LanguageNamespaceContext } from 'libs/shared/components/text/Text';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { useTableOfContentsActiveHeading } from 'libs/shared/hooks/useTableOfContentsActiveHeading';\nimport { useTableOfContentsScroll } from 'libs/shared/hooks/useTableOfContentsScroll';\nimport { Clip, CurrentUser, CurriculumData, InteractiveMetadata, PointOfInterest, PresentationAudience, Subtitle, Video, VttSubtitleResponse } from 'libs/shared/interfaces';\nimport { Chapter } from 'libs/shared/interfaces/Chapter';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { CitationWidget } from 'shared/components/citations/CitationWidget';\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { PlayPageClips } from 'shared/components/play-page/components/play-page-clips/PlayPageClips';\nimport { PlayPageCurriculumLinks } from 'shared/components/play-page/components/play-page-curriculum-links/PlayPageCurriculumLinks';\nimport { PlayPageInteractives } from 'shared/components/play-page/components/play-page-interactives/PlayPageInteractives';\nimport { TableOfContentsContainer, TOC_IGNORE_BOUNDARY } from 'shared/components/play-page/components/table-of-contents/TableOfContents';\nimport { PlayPageTitleAndActions } from 'shared/components/play-page/components/title-and-actions/PlayPageTitleAndActions';\nimport { getAppLinks } from 'shared/components/play-page/PlayPageUtils';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { PlayerPlaceholder } from 'shared/components/player-placeholder/PlayerPlaceholder';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { useDownloadAllResources } from 'shared/hooks/useDownloadAllResources';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoFeaturesHash } from 'shared/hooks/useVideoFeatureAccess';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { useResourcePopup } from 'shared/views/play/components/play-page/hooks/useResourcePopup';\nimport { getContentClassName, getIsTheatreMode, getMainClassName } from 'shared/views/play/components/play-page/PlayPageUtils';\nimport { usePlayPageTableOfContent } from 'shared/views/play/hooks/usePlayPageTableOfContent';\nimport { useSectionHeadings } from 'shared/views/play/hooks/useSectionHeadings';\nimport { useTheatreModeStyle } from 'shared/views/play/hooks/useTheatreStyle';\nimport { PlayPageUtils } from 'shared/views/play/PlayPageUtil';\n\nimport styles from './play-page.module.scss';\n\nconst namespace = 'shared.play';\n\ninterface PlayPageProps {\n presentationSlug: string | null;\n video: Video;\n clips: Clip[];\n interactives: InteractiveMetadata[];\n relatedVideos: RelatedVideosHash;\n audiences: PresentationAudience[];\n currentUser: CurrentUser;\n pointsOfInterest?: PointOfInterest[];\n playNext: boolean;\n shareId?: string;\n curriculums: CurriculumData;\n featureAccess: VideoFeaturesHash;\n params?: PlayViewQueryParams;\n canManageVideoAccess: boolean;\n tableOfContentsId: string;\n shouldShowSideTableOfContents: boolean;\n hasTheatreMode: boolean;\n shouldShowTranscript: boolean;\n hasNewSearch: boolean;\n breadcrumbs?: Breadcrumb[];\n vttSubtitles: VttSubtitleResponse[];\n subtitles: Subtitle[];\n chapters: Chapter[];\n commonVideoProps: CommonVideoProps;\n isBot: boolean;\n playerApiUrl: string;\n liteUrl: string;\n resourcePopupId?: string;\n}\n\nexport function PlayPage(props: PlayPageProps): JSX.Element {\n const playerContext = usePlayerContext();\n const isPaused = playerContext.playerRef.current?.isPaused?.();\n const hasStarted = playerContext.playerRef?.current?.hasStarted?.();\n\n const { hasPermissions } = usePermissions();\n const settings = useSettings(null);\n const onDownloadAllClick = useDownloadAllResources();\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n const theatreMode = getIsTheatreMode(props.hasTheatreMode, playerContext);\n const shouldUseTheatreModeStyle = useTheatreModeStyle(\n props.hasTheatreMode,\n playerContext.mode,\n playerContext.defaultDisplayMode\n );\n\n function toggleTheatreMode(value: boolean) {\n // when exit theatre mode turn off transcript\n if (!value) {\n toggleTranscript(false);\n }\n\n playerContext.setDefaultDisplayMode?.(value ? 'theatre' : 'normal');\n playerContext.playerRef?.current?.toggleTheatreMode?.(value);\n }\n\n function toggleTranscript(value: boolean) {\n playerContext.playerRef?.current?.toggleTranscript?.(value);\n }\n\n const {\n tableOfContentsActiveId,\n setTableOfContentsActiveId,\n controlledId,\n setControlledId,\n tableOfContentsExpanded,\n onToggleTableOfContents\n } = usePlayPageTableOfContent(props.tableOfContentsId, props.hasTheatreMode, theatreMode);\n\n const hasGlance = hasGlanceData(props.video) && props.featureAccess.canViewGlance;\n\n const { headingRef, headingElements } = useSectionHeadings(hasGlance);\n const items = headingElements.map(el => {\n return {\n id: el.id as PlayPageAnchor,\n name: PlayPageUtils.getSectionHeading(\n el.id as PlayPageAnchor,\n {\n clips: props.clips,\n interactives: props.interactives,\n resources: [ ...(props.video.resources?.data ?? []), ...(props.video.links?.data ?? []) ]\n }\n )\n };\n });\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.video);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n useTableOfContentsActiveHeading({\n setActiveId: setTableOfContentsActiveId,\n headingElements,\n controlledId,\n setControlledId\n });\n\n useTableOfContentsScroll(headingElements, controlledId);\n\n /**\n * Need to use a ref because if we use state, onExitImmersiveReader will have a stale\n * reference of the state. This is because the state is changed in onLaunchImmersiveReader\n * which is passed in at the same time as onExitImmersiveReader\n */\n const shouldPlayOnExitImmersiveReader = React.useRef(false);\n\n const appLinkFns = getAppLinks({ settings, presentationSlug: props.presentationSlug });\n\n const getResourceAppLink = appLinkFns.getResourceAppLink(\n props.video.id,\n props.shareId,\n props.featureAccess.canViewResourceItems\n );\n\n useResourcePopup({\n resourcePopupId: props.resourcePopupId,\n resources: props.video.resources?.data,\n getResourceAppLink\n });\n\n function onLaunchImmersiveReader(): void {\n shouldPlayOnExitImmersiveReader.current = !playerContext?.playerRef?.current?.isPaused();\n playerContext?.playerRef?.current?.pause();\n }\n\n function onExitImmersiveReader(): void {\n if (!shouldPlayOnExitImmersiveReader.current)\n return;\n\n playerContext?.playerRef?.current?.play();\n }\n\n const calcClassNameProps = {\n hasTheatreMode: props.hasTheatreMode,\n shouldShowSideTableOfContents: props.shouldShowSideTableOfContents,\n tableOfContentsExpanded,\n theatreMode: shouldUseTheatreModeStyle\n };\n const mainClassName = getMainClassName(calcClassNameProps);\n const contentClassName = getContentClassName(calcClassNameProps);\n\n const showPlayerPlaceholder = playerContext.mode === 'picture-in-picture' || (props.featureAccess.canViewPublicLayout && !props.video._canBeConsumed.value);\n \n const [ , setContainerClassName ] = useViewModel(ViewModelKeys.PLAY_PAGE_CONTAINER_CLASS_NAME);\n\n const subTextType = props.commonVideoProps.getSubTextType?.(props.video);\n const getSubtextAppLink = props.commonVideoProps.getSubTextAppLink(props.video);\n\n React.useEffect(() => {\n if (!theatreMode) {\n setContainerClassName('');\n } else {\n setContainerClassName(styles.theatreModePlayPageContainer);\n }\n }, [theatreMode]);\n\n React.useEffect(() => {\n return () => setContainerClassName('');\n }, []);\n\n function goToSignUp() {\n Core.AppLinkHelper.trigger({ action: Actions.SignUp.SIGN_UP, application: AppChannels.SIGN_UP });\n }\n\n function onShowTranscriptInVideo() {\n if (!canConsume)\n return goToSignUp();\n\n if (!hasStarted)\n playerContext.playerRef.current?.play();\n\n toggleTranscript(true);\n\n window.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n function setStartTime(time: number) {\n playerContext.playerRef.current?.currentTime(time);\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className={`px-4 play-page-sections-container ${props.shouldShowSideTableOfContents ? 'row g-0' : ''}`}>\n <main className={`${styles.main} ${mainClassName}`}>\n {!!props.breadcrumbs?.length && (\n <div className='mb-2'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n )}\n \n <RestrictionBanner\n restrictions={props.video._restrictions}\n yearGroups={props.commonVideoProps.yearGroups}\n objectId={props.video.id}\n objectTypeId={MasterType.Video}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n {isArchived && <ArchivedBanner typeId={props.video.typeId} hasStudentExperience={hasStudentExperience} />}\n\n <section\n id={PlayPageAnchor.Video}\n className={`mb-3 ${SeoConstants.GLOBAL_PLAYER_SELECTOR}`}\n ref={el => { (el && headingRef?.current) && headingRef.current.set(PlayPageAnchor.Video, el); }}\n >\n {canConsume && (\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n shareId={props.shareId}\n context={props.params?.context}\n contextId={props.params?.contextId}\n playNext={props.params?.playNext}\n moviesAndTv={props.params?.mtv}\n startTime={props.params?.t ?? props.params?.startTime}\n endTime={props.params?.endTime}\n mode='default'\n location='play-page'\n />\n )}\n \n <div className={showPlayerPlaceholder ? '' : 'd-none'}>\n <PlayerPlaceholder\n video={props.video}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n type={playerContext.mode === 'picture-in-picture' ? 'pip' : 'public'}\n />\n </div>\n </section>\n\n <div className={contentClassName}>\n <div className={shouldUseTheatreModeStyle ? `${styles.theatreModeLeftContent}` : 'w-100'}>\n <PlayPageTitleAndActions\n presentationSlug={props.presentationSlug}\n media={props.video}\n subTextType={subTextType}\n subtextAppLink={getSubtextAppLink}\n yearGroups={props.commonVideoProps.yearGroups}\n audiences={props.audiences}\n featureAccess={props.featureAccess}\n shareId={props.shareId}\n showTitlePadlock={!props.commonVideoProps.hasStudentExperience\n && !props.commonVideoProps.hasGuestExperience}\n />\n\n {/* if no glance render video details here */}\n {hasGlance ? (\n <VideoAtAGlanceV2\n video={props.video}\n pointsOfInterest={props.pointsOfInterest}\n setStartTime={(time: number) => playerContext.playerRef.current?.currentTime(time)}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n canViewGlance={hasGlance}\n />\n ) : (\n <VideoDetailsWithScrollbarV2\n video={props.video}\n currentUser={props.currentUser}\n headingRef={headingRef}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n getPartnerProfileAppLink={appLinkFns.getPartnerProfileAppLink}\n getPartnerDashboardHubAppLink={appLinkFns.getPartnerDashboardHubAppLink}\n getLibraryAppLink={hasPermissions(PermissionName.ViewLibraries) ? appLinkFns.getLibraryAppLink : null}\n getFolderAppLink={hasPermissions(PermissionName.ViewLibraries) ? appLinkFns.getFolderAppLink : null}\n />\n )}\n\n <PlayPageCurriculumLinks\n height={MINIMUM_GLANCE_HEIGHT}\n curriculums={props.curriculums}\n canViewCurriculumLinks={props.featureAccess.canViewCurriculumLinks}\n headingRef={headingRef}\n video={props.video}\n hasNewSearch={props.hasNewSearch}\n />\n\n <PlayPageResources\n headingRef={headingRef}\n video={props.video}\n canViewResources={props.featureAccess.canViewResourceItems}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n getAppLink={getResourceAppLink}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n resourceThumbnailFallbackUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n onDownloadAllClick={onDownloadAllClick}\n />\n\n <PlayPageInteractives\n presentationSlug={props.presentationSlug}\n headingRef={headingRef}\n video={props.video}\n interactives={props.interactives}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n canViewInteractives={props.featureAccess.canViewInteractives}\n commonVideoProps={props.commonVideoProps}\n />\n\n <PlayPageClips\n presentationSlug={props.presentationSlug}\n video={props.video}\n headingRef={headingRef}\n clips={props.clips}\n canViewClips={props.featureAccess.canViewClips}\n audiences={props.audiences}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n commonVideoProps={props.commonVideoProps}\n />\n\n {/* if has glance, render video details here */}\n {hasGlance && (\n <VideoDetailsWithScrollbarV2\n video={props.video}\n currentUser={props.currentUser}\n headingRef={headingRef}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n showHeading\n getPartnerProfileAppLink={appLinkFns.getPartnerProfileAppLink}\n getPartnerDashboardHubAppLink={appLinkFns.getPartnerDashboardHubAppLink}\n getLibraryAppLink={appLinkFns.getLibraryAppLink}\n getFolderAppLink={appLinkFns.getFolderAppLink}\n />\n )}\n\n {props.shouldShowTranscript && (\n <PlayPageTranscription\n headingRef={headingRef}\n video={props.video}\n subtitles={props.subtitles}\n vttSubtitles={props.vttSubtitles}\n chapters={props.chapters}\n onShowInVideo={onShowTranscriptInVideo}\n signUpLink={{ action: Actions.SignUp.SIGN_UP, application: AppChannels.SIGN_UP }}\n setStartTime={setStartTime}\n isBot={props.isBot}\n isPaused={isPaused}\n isAuthenticated={props.currentUser.isAuthenticated}\n playerApiUrl={props.playerApiUrl}\n />\n )}\n\n {props.featureAccess.canViewCitations && (\n <CitationWidget\n headingRef={headingRef}\n media={props.video}\n contentRegion={props.currentUser.contentRegion}\n shareId={props.shareId}\n presentationSlug={props.presentationSlug}\n />\n )}\n\n <RelatedVideos\n presentationSlug={props.presentationSlug}\n currentVideo={props.video}\n headingRef={headingRef}\n commonVideoProps={props.commonVideoProps}\n relatedVideos={props.relatedVideos}\n currentUser={props.currentUser}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.params.context,\n contextId: props.params.contextId,\n playNext: props.params.playNext,\n shareId: props.shareId,\n moviesAndTv: props.params.mtv,\n includeContext: props.currentUser?.isAuthenticated\n }, props.presentationSlug)}\n audiences={props.audiences}\n moviesAndTv={props.params.mtv}\n />\n </div>\n {theatreMode && (\n <TableOfContentsContainer\n isExpanded={tableOfContentsExpanded}\n setIsExpanded={onToggleTableOfContents}\n toggleTheatreMode={ null}\n items={items}\n activeId={tableOfContentsActiveId}\n setControlledId={setControlledId}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n showInSide={props.shouldShowSideTableOfContents}\n isTheatreMode={true}\n hasTranscription={props.hasTheatreMode}\n shouldShow={items.length >= TOC_IGNORE_BOUNDARY}\n />\n )}\n </div>\n </main>\n\n {!theatreMode && (\n <TableOfContentsContainer\n isExpanded={tableOfContentsExpanded}\n setIsExpanded={onToggleTableOfContents}\n toggleTheatreMode={props.hasTheatreMode ? toggleTheatreMode : null}\n items={items}\n activeId={tableOfContentsActiveId}\n setControlledId={setControlledId}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n showInSide={props.shouldShowSideTableOfContents}\n isTheatreMode={false}\n hasTranscription={props.hasTheatreMode}\n shouldShow={items.length >= TOC_IGNORE_BOUNDARY}\n />\n )}\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import { Flight } from 'libs/common/react/index';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { CurrentUser, Video } from 'libs/shared/interfaces';\n\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\n\nexport function useShowTranscriptForVideo(videoId: string, shareId?: string) {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const { canViewTranscript } = useVideoFeatureAccess({\n objectId: videoId,\n objectTypeId: MasterType.Video\n });\n\n const video = Flight.useBasicFetch<Video>(\n shareId ? VideoRequests.sharedVideo(videoId, shareId) : VideoRequests.video(videoId)\n );\n\n const shouldShowTranscript = canViewTranscript && !!video.data?._curationTags?.value?.isClickViewCurated;\n return {\n shouldShowTranscript,\n shouldFetchTranscript: shouldShowTranscript && !currentUser.data?.isAuthenticated\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./D8uRDrkd.chunk.js";import{_ as n,y as r}from"./BftnFbcr.chunk.js";import{n as i}from"./B785hxeE.chunk.js";import{t as a}from"./CQyJ7YGa.chunk.js";import{t as o}from"./C2w0pmFW.chunk.js";import{t as s}from"./wrLrTezN.chunk.js";import{t as c}from"./BXTI9cmX.chunk.js";import{u as l}from"./BX0wDJmp.chunk.js";import{t as u}from"./C1SLt-ar.chunk.js";import{U as d,l as f,o as p,y as m,z as h}from"./NlCAcBdo.chunk.js";import{i as g,n as _,r as v,t as y}from"./Cr6TXzQQ2.chunk.js";import{t as b}from"./oPIkfKWW2.chunk.js";import{n as x,t as S}from"./CmcCVXi32.chunk.js";import{t as ee}from"./CcDvlSWl2.chunk.js";import{t as C}from"./DZX1tZ-D2.chunk.js";import{t as w}from"./DdsRCMkN.chunk.js";import{t as T}from"./BWaKdG0l.chunk.js";import{t as te}from"./PgzMrOyM.chunk.js";import{t as E}from"./Vp01-r6R.chunk.js";import{n as D,t as O}from"./A8xLZrSw.chunk.js";import{t as k}from"./BQKcAczf.chunk.js";import{t as A}from"./DR9DEoQL.chunk.js";import{n as j}from"./CpFtf-tI2.chunk.js";import{t as ne}from"./D0bhWkNM.chunk.js";import{t as M}from"./De16zmhB.chunk.js";import{t as re}from"./DewCxv4i.chunk.js";import{t as ie}from"./NVkf8UeY.chunk.js";import{t as ae}from"./BXU-68zb2.chunk.js";import{t as N}from"./B97Lnms-.chunk.js";import{t as P}from"./C2pEjcxD.chunk.js";import{t as F}from"./BmR4qY-v2.chunk.js";import{t as I}from"./DDiorDZl.chunk.js";import{t as L}from"./y3q_PHh_.chunk.js";import{o as R}from"./YcLj4o6h.chunk.js";import{n as z,t as B}from"./Bp_pLLKM.chunk.js";import{t as V}from"./cX5MHowe.chunk.js";import{r as H}from"./CHQUozwb.chunk.js";import{n as U,t as W}from"./DWeyYfUG.chunk.js";import{t as G}from"./kMWvzbRv2.chunk.js";import{t as K}from"./DFrZwydG2.chunk.js";import{t as q}from"./BpiZZWnJ2.chunk.js";import{t as oe}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./D8uRDrkd.chunk.js";import{_ as n,y as r}from"./BftnFbcr.chunk.js";import{n as i}from"./B785hxeE.chunk.js";import{t as a}from"./CQyJ7YGa.chunk.js";import{t as o}from"./C2w0pmFW.chunk.js";import{t as s}from"./wrLrTezN.chunk.js";import{t as c}from"./BXTI9cmX.chunk.js";import{u as l}from"./BX0wDJmp.chunk.js";import{t as u}from"./C1SLt-ar.chunk.js";import{U as d,l as f,o as p,y as m,z as h}from"./NlCAcBdo.chunk.js";import{i as g,n as _,r as v,t as y}from"./Cr6TXzQQ2.chunk.js";import{t as b}from"./oPIkfKWW2.chunk.js";import{n as x,t as S}from"./CmcCVXi32.chunk.js";import{t as ee}from"./CcDvlSWl2.chunk.js";import{t as C}from"./DZX1tZ-D2.chunk.js";import{t as w}from"./DdsRCMkN.chunk.js";import{t as T}from"./BWaKdG0l.chunk.js";import{t as te}from"./PgzMrOyM.chunk.js";import{t as E}from"./Vp01-r6R.chunk.js";import{n as D,t as O}from"./A8xLZrSw.chunk.js";import{t as k}from"./BQKcAczf.chunk.js";import{t as A}from"./DR9DEoQL.chunk.js";import{n as j}from"./CpFtf-tI2.chunk.js";import{t as ne}from"./D0bhWkNM.chunk.js";import{t as M}from"./De16zmhB.chunk.js";import{t as re}from"./DewCxv4i.chunk.js";import{t as ie}from"./NVkf8UeY.chunk.js";import{t as ae}from"./BXU-68zb2.chunk.js";import{t as N}from"./B97Lnms-.chunk.js";import{t as P}from"./C2pEjcxD.chunk.js";import{t as F}from"./BmR4qY-v2.chunk.js";import{t as I}from"./DDiorDZl.chunk.js";import{t as L}from"./y3q_PHh_.chunk.js";import{o as R}from"./YcLj4o6h.chunk.js";import{n as z,t as B}from"./Bp_pLLKM.chunk.js";import{t as V}from"./cX5MHowe.chunk.js";import{r as H}from"./CHQUozwb.chunk.js";import{n as U,t as W}from"./DWeyYfUG.chunk.js";import{t as G}from"./kMWvzbRv2.chunk.js";import{t as K}from"./DFrZwydG2.chunk.js";import{t as q}from"./BpiZZWnJ2.chunk.js";import{t as oe}from"./C8l37H7t2.chunk.js";var se=e(o()),J=s();function ce(e){let n=I.getPartnerLinkByType(e.partnerProfile?.links,`website`,I.makeUTMs({slug:e.partnerProfile._slug.value})),r=C.getHostname(n)??n;return(0,J.jsx)(`div`,{className:`mt-3`,children:(0,J.jsx)(K,{children:()=>(0,J.jsxs)(`p`,{className:`mb-0`,children:[n&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`a`,{href:n,target:`_blank`,rel:`noopener noreferrer`,className:`position-relative d-inline-block ps-4 mb-2 me-2`,children:[(0,J.jsx)(t,{svg:M,className:`svg-container position-absolute top-50 start-0 translate-middle-y`}),(0,J.jsx)(`span`,{className:`ps-1`,children:r})]}),(0,J.jsx)(`span`,{className:`mb-2 me-2`,children:`•`})]}),e.partnerProfile.description]})})})}var Y=`contentPartners.contentPartnerDashboardComingSoon`,le=a.encloseNamespace(Y);function ue(e){return(0,J.jsxs)(E,{children:[(0,J.jsx)(E.Image,{src:e.comingSoonImageUrl,altText:le(`description`,{partnerName:e.partnerName})}),(0,J.jsx)(E.Heading,{children:(0,J.jsx)(j,{namespace:Y,phrase:`heading`})}),(0,J.jsx)(E.Info,{children:(0,J.jsx)(j,{namespace:Y,phrase:`description`,options:{partnerName:e.partnerName}})})]})}var X=`contentPartners.contentPartnerDashboardContentRegion`,Z=a.encloseNamespace(X);function de(e){return(0,J.jsxs)(E,{children:[(0,J.jsx)(E.Image,{src:e.contentRegionImageUrl,altText:Z(`imageAlt`)}),(0,J.jsx)(E.Heading,{children:(0,J.jsx)(j,{namespace:X,phrase:`heading`})}),(0,J.jsx)(E.Cta,{text:Z(`cta`),appLink:e.contentRegionButtonLink,className:`btn btn-dark`})]})}var Q=`contentPartners.contentPartnerDashboardNoContent`,fe=a.encloseNamespace(Q);function $(e){return(0,J.jsxs)(E,{children:[(0,J.jsx)(E.Image,{src:e.noContentImageUrl,altText:fe(`description`)}),(0,J.jsx)(E.Heading,{children:(0,J.jsx)(j,{namespace:Q,phrase:`heading`})}),(0,J.jsx)(E.Info,{children:(0,J.jsx)(j,{namespace:Q,phrase:`description`})})]})}var pe={"coming-soon":ue,"content-region":de,"no-content":$};function me(e){let t=pe[e.type];return(0,J.jsx)(t,{...e})}var he=[g.ContentPartnerVideos];function ge(e,t){let n=e[t];return n?he.includes(n.widgetId)&&t===e.length-1:!1}function _e(e){let t=u.sortBy(e.dashboard?.widgets,`index`),{emptyWidgets:n,setEmptyWidget:r}=z(t);function a(t,n,r,i){let a=v.getWidgetParams(n,r,v.getDashboardTargetType(e.dashboard));return e.getWidgetContentRequest(t,a,r,void 0,i)}function o(){if(!e.isInContentRegion)return`content-region`;if(e.isComingSoon||e.dashboard.status===S.Archived&&!e.isReadonly)return`coming-soon`;if(e.dashboard.status===S.Draft&&!e.isPreviewing)return!1;if(!t?.length)return`no-content`;let r=Object.values(n);return r.length>0&&r.every(e=>!!e)?`no-content`:!1}let s=I.getPartnerBannerInfo(e.partnerProfile),c=o(),l=(!c||c===`content-region`)&&e.partnerProfile.description;return(0,J.jsxs)(J.Fragment,{children:[!!t.length&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(L,{type:`partner-profile`,partnerBannerType:I.getPartnerBannerType(e.partnerProfile),heading:s.heading,blockColourClass:s.blockColourClass,logo:s.logo,logoBgColour:s.logoBgColour,banner:s.banner,imageCdnUrl:e.commonVideoProps.imageCdnUrl,actions:e.getBannerActions?.(),onClickSignUp:e.onClickSignUp,isAuthenticated:e.isAuthenticated,videoUrl:e.partnerProfile._videobanner?.value?.url,websiteUrl:I.getPartnerLinkByType(e.partnerProfile?.links,`website`,I.makeUTMs({slug:e.partnerProfile._slug.value})),isStudent:e.hasPermissions(i.StudentExperience),log:e.log}),(0,J.jsxs)(`div`,{className:`py-3 mb-3 border-bottom`,children:[(0,J.jsx)(P,{breadcrumbs:e.breadcrumbs}),l&&(0,J.jsx)(ce,{partnerProfile:e.partnerProfile})]}),(0,J.jsx)(`div`,{className:`mt-3`,children:!c&&t.map((n,i)=>(0,J.jsx)(G,{dashboardTarget:x.PartnerProfile,index:i,item:n,infiniteFetch:ge(t,i),getName:e=>e.name,getWidgetMetadata:e=>e.metadata,appLinks:e.widgetAppLinks,hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps,audiences:e.audiences,setIsEmpty:e=>r(n.id,e),getCursor:e=>e.cursor,getRequest:e=>a(n.id,n.widgetId,n.templateId,e),hasLocalPermissions:e.hasLocalPermissions,settingsHash:e.settings,getContent:e=>e.content,resultsTransformers:y.getWidgetResultsTransformers(),onClickSearchAllVideos:e.onClickSearchAllVideos,getSeeMoreAppLink:e.getSeeMoreAppLink,isEmptyPredicate:e=>Array.isArray(e)&&Array.isArray(e[0]?.content)&&!e[0]?.content?.length,getSelectedItems:null,appLinkOptions:null},n.id))})]}),c&&(0,J.jsx)(me,{type:c,partnerName:e.partnerProfile.name,comingSoonImageUrl:e.emptyImageUrl,contentRegionImageUrl:e.emptyImageUrl,contentRegionButtonLink:e.widgetAppLinks?.partnerHome?.(),noContentImageUrl:e.emptyImageUrl})]})}function ve(){return{"click-video-banner-controls":{isValid:()=>!0,analyticsOptions:{actionType:h.Click,entity:f.PartnerProfile,descriptor:p.VideoBannerControls,location:m.ContentPartnerDashboardVideoBanner}},"click-video-banner-sign-up":{isValid:()=>!0,analyticsOptions:{actionType:h.Click,entity:f.PartnerProfile,workflowPhase:d.Start,descriptor:p.VideoBannerSignUp,location:m.ContentPartnerDashboardVideoBanner}}}}function ye(e){let{getData:t,log:n}=N({analyticsOptions:e.analyticsOptions,baseData:e.data,config:ve(),shouldLog:e.shouldLog??!0});return{log:n,getData:t}}var be=a.encloseNamespace(`contentPartners.dashboard`);function xe(e){let t=l(b.currentUser()),i=ae(e.slug),a=U({location:W.VideoItem,presentationSlug:null}),{log:o}=ye({data:{entity:{id:i.data?.id,name:i.data?.name,contentRegion:t.data?.contentRegion}},analyticsOptions:{entity:f.PartnerProfile,location:m.ContentPartnerDashboard}});oe({app:`channels`,id:i.data?.id,metadata:{conversionSuffix:i.data?.name}});let{openInCurationStudioLabel:s,isUserCurator:u,getOpenInCurationStudioLink:d}=H(),{commonVideoProps:p}=F({locationContext:m.VideoThumbnail}),{hasPermissions:h,hasLocalPermissions:g}=k(),v=ee(null),{dashboard:y,isPreviewing:S}=ie({targetType:x.PartnerProfile,partnerProfileSlug:e.slug,queryParams:e.queryParams});O(D.getDefaultMetadata({title:i.data?.name,phraseContext:{phraseHandler:be,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},allowIndexing:!0}));let C=V({name:i.data?.name});se.useEffect(()=>{!y.hasCompleted||y.data||n.throw(new T)},[y.data,y.hasCompleted]);let E=B(t.data,{channelId:i.data?.id,presentationSlug:null});function j(){return u?[{label:s,href:d(y.data?.typeId,y.data?.id),openInNewTab:!0}]:[]}function M(e,t,n,r,i){return re.dashboardWidgetContent(e,t,n,r,{cursor:i})}function N(e){return _[e.widgetId]?.getCollectionAppLink?.(E,e.content)??null}function P(e){o?.({type:`click-video-banner-sign-up`,email:e}),r.trigger(ne.getSignUpAppLink({email:e}))}let L=i.hasCompleted&&y.hasCompleted,z=A.isBot(),G=S?!0:I.isInContentRegion(i.data,t.data?.contentRegion,t.data?.isAuthenticated);function K(){r.trigger({application:c.SEARCH,action:w.Search.HOME,params:{scopeId:i.data?.id}})}return L?(0,J.jsx)(`div`,{className:`bg-white px-4 position-relative`,children:(0,J.jsxs)(R.Provider,{value:a,children:[!!(S&&y.data)&&(0,J.jsx)(q,{status:y.data.status,type:`channel`}),(0,J.jsx)(_e,{dashboard:y.data,partnerProfile:i.data,getWidgetContentRequest:M,commonVideoProps:p,breadcrumbs:C,getBannerActions:j,hasPermissions:h,hasLocalPermissions:g,settings:v,widgetAppLinks:E,emptyImageUrl:te.EmptyStates.WATCH_HISTORY,isBot:z,lazyLoad:!z,isAuthenticated:t.data?.isAuthenticated,isInContentRegion:G,onClickSignUp:P,isPreviewing:S,onClickSearchAllVideos:K,getSeeMoreAppLink:N,log:o})]})}):(0,J.jsx)(J.Fragment,{})}export{xe as ContentPartnersDashboardView};
|
|
2
|
+
//# sourceMappingURL=Dd23z1_x2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CvSpUZcJ2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/channel-dashboard-description/ChannelDashboardDescription.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-dashboard-coming-soon/ContentPartnerDashboardComingSoon.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-dashboard-content-region/ContentPartnerDashboardContentRegion.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-dashboard-no-content/ContentPartnerDashboardNoContent.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-empty-state/ContentPartnerEmptyState.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/ContentPartnerDashboard.tsx","../../../../libs/shared/src/apps/content-partners/utils/get-content-partner-event-logger/getContentPartnerEventLogger.ts","../../src/apps/content-partners/views/content-partners-dashboard/ContentPartnersDashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { ExpandableTextInline } from 'libs/shared/components/expandable-text-inline/ExpandableTextInline';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { LinkSvg } from 'libs/shared/images/svg/objects/LinkSvg';\nimport { PartnerProfile } from 'libs/shared/interfaces';\n\ninterface ChannelDashboardDescriptionProps {\n partnerProfile: PartnerProfile;\n}\n\nexport function ChannelDashboardDescription(props: ChannelDashboardDescriptionProps): JSX.Element {\n const websiteLink = ContentPartnersHelper.getPartnerLinkByType(\n props.partnerProfile?.links,\n 'website',\n ContentPartnersHelper.makeUTMs({ slug: props.partnerProfile._slug.value })\n );\n\n const displayWebsiteLink = UrlHelper.getHostname(websiteLink) ?? websiteLink;\n\n return (\n <div className='mt-3'>\n <ExpandableTextInline>\n {() => (\n <p className='mb-0'>\n {websiteLink && (\n <>\n <a\n href={websiteLink}\n target='_blank'\n rel='noopener noreferrer'\n className='position-relative d-inline-block ps-4 mb-2 me-2'\n >\n <SvgContainer svg={LinkSvg} className='svg-container position-absolute top-50 start-0 translate-middle-y' />\n <span className='ps-1'>{displayWebsiteLink}</span>\n </a>\n <span className='mb-2 me-2'>•</span>\n </>\n )}\n {props.partnerProfile.description}\n </p>\n )}\n </ExpandableTextInline>\n </div>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'contentPartners.contentPartnerDashboardComingSoon';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ContentPartnerDashboardComingSoonProps {\n partnerName: string;\n comingSoonImageUrl: string;\n}\n\nexport function ContentPartnerDashboardComingSoon(props: ContentPartnerDashboardComingSoonProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image\n src={props.comingSoonImageUrl}\n altText={getPhrase('description', { partnerName: props.partnerName })}\n />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='description' options={{ partnerName: props.partnerName }} />\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'contentPartners.contentPartnerDashboardContentRegion';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ContentPartnerDashboardContentRegionProps {\n contentRegionImageUrl: string;\n contentRegionButtonLink: Core.AppLink;\n}\n\nexport function ContentPartnerDashboardContentRegion(props: ContentPartnerDashboardContentRegionProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={props.contentRegionImageUrl} altText={getPhrase('imageAlt')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Cta text={getPhrase('cta')} appLink={props.contentRegionButtonLink} className='btn btn-dark' />\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'contentPartners.contentPartnerDashboardNoContent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ContentPartnerDashboardNoContentProps {\n noContentImageUrl: string;\n}\n\nexport function ContentPartnerDashboardNoContent(props: ContentPartnerDashboardNoContentProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image\n src={props.noContentImageUrl}\n altText={getPhrase('description')}\n />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='description' />\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport {\n ContentPartnerDashboardComingSoon,\n ContentPartnerDashboardComingSoonProps\n} from '../content-partner-dashboard-coming-soon/ContentPartnerDashboardComingSoon';\nimport {\n ContentPartnerDashboardContentRegion,\n ContentPartnerDashboardContentRegionProps\n} from '../content-partner-dashboard-content-region/ContentPartnerDashboardContentRegion';\nimport {\n ContentPartnerDashboardNoContent,\n ContentPartnerDashboardNoContentProps\n} from '../content-partner-dashboard-no-content/ContentPartnerDashboardNoContent';\n\nexport type ContentPartnerEmptyStateType = 'coming-soon' | 'content-region' | 'no-content';\n\nconst ContentParterEmptyStateTypes: Record<ContentPartnerEmptyStateType, React.ComponentType<any>> = {\n 'coming-soon': ContentPartnerDashboardComingSoon,\n 'content-region': ContentPartnerDashboardContentRegion,\n 'no-content': ContentPartnerDashboardNoContent\n};\n\ntype EmptyStateType<TType extends ContentPartnerEmptyStateType, TProps> = TProps & {\n type: TType\n};\n\ntype ContentPartnerEmptyStateProps =\n EmptyStateType<'coming-soon', ContentPartnerDashboardComingSoonProps> |\n EmptyStateType<'content-region', ContentPartnerDashboardContentRegionProps> |\n EmptyStateType<'no-content', ContentPartnerDashboardNoContentProps>;\n\nexport function ContentPartnerEmptyState(props: ContentPartnerEmptyStateProps): JSX.Element {\n const Component = ContentParterEmptyStateTypes[props.type];\n\n return <Component {...props} />;\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { InfiniteWidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/InfiniteWidgetContainerView';\nimport { AllPartnerProfileWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { useEmptyWidgets } from 'libs/shared/hooks/useEmptyWidgets';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CuratedDashboard, CuratedWidget, CuratedWidgetQueryParams, CurrentUser, DashboardStatus, DashboardTargetType, PartnerProfile, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport { ContentPartnerEventLoggerFn } from '../../utils/get-content-partner-event-logger/getContentPartnerEventLogger';\n\nimport { ChannelDashboardDescription } from './channel-dashboard-description/ChannelDashboardDescription';\nimport { ContentPartnerEmptyState, ContentPartnerEmptyStateType } from './empty-state/content-partner-empty-state/ContentPartnerEmptyState';\n\nconst InfiniteFetchWidgetIds: WidgetTypeId[] = [WidgetTypeId.ContentPartnerVideos];\n\nfunction shouldInfiniteFetch(widgets: CuratedWidget[], index: number): boolean {\n const currentWidget = widgets[index];\n\n if (!currentWidget) return false;\n \n return InfiniteFetchWidgetIds.includes(currentWidget.widgetId) && index === widgets.length - 1;\n}\n\nexport interface ContentPartnerDashboardProps {\n dashboard: CuratedDashboard;\n partnerProfile: PartnerProfile;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate,\n presentation?: Presentation,\n cursor?: string\n ) => Flight.Request;\n commonVideoProps: CommonVideoProps;\n getBannerActions?: () => ActionOptions[];\n breadcrumbs?: Breadcrumb[];\n isReadonly?: boolean;\n widgetAppLinks?: AllPartnerProfileWidgetTemplates['appLinks'];\n scrollToWidgetId?: string;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n settings?: AllPartnerProfileWidgetTemplates['settings'];\n audiences?: PresentationAudience[];\n currentUser?: CurrentUser;\n emptyImageUrl?: string;\n lazyLoad?: boolean;\n isBot?: boolean;\n isComingSoon?: boolean;\n isPreviewing?: boolean;\n isAuthenticated?: boolean;\n isInContentRegion: boolean;\n onClickSignUp: (email: string) => void;\n onClickSearchAllVideos?: () => void;\n getSeeMoreAppLink?: (widget: CuratedWidget) => Core.AppLink;\n log?: ContentPartnerEventLoggerFn;\n}\n\nexport function ContentPartnerDashboard(props: ContentPartnerDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const { emptyWidgets, setEmptyWidget } = useEmptyWidgets(widgets);\n\n function getWidgetContentRequest(\n id: string,\n widgetTypeId: WidgetTypeId,\n template: WidgetTemplate,\n cursor?: string\n ): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template, undefined, cursor);\n }\n\n function getEmptyStateType(): ContentPartnerEmptyStateType | false {\n if (!props.isInContentRegion)\n return 'content-region';\n \n if (props.isComingSoon)\n return 'coming-soon';\n \n if (props.dashboard.status === DashboardStatus.Archived && !props.isReadonly)\n return 'coming-soon';\n \n if (props.dashboard.status === DashboardStatus.Draft && !props.isPreviewing)\n return false;\n\n if (!widgets?.length)\n return 'no-content';\n \n const emptyValues = Object.values(emptyWidgets);\n \n if (emptyValues.length > 0 && emptyValues.every(state => !!state))\n return 'no-content';\n\n return false;\n }\n\n const bannerInfo = ContentPartnersHelper.getPartnerBannerInfo(props.partnerProfile);\n\n const emptyState = getEmptyStateType();\n const showExpandableDescription = (!emptyState || emptyState === 'content-region') && props.partnerProfile.description;\n\n return (\n <>\n {!!widgets.length &&\n <>\n <BannerHeader\n type='partner-profile'\n partnerBannerType={ContentPartnersHelper.getPartnerBannerType(props.partnerProfile)}\n heading={bannerInfo.heading}\n blockColourClass={bannerInfo.blockColourClass}\n logo={bannerInfo.logo}\n logoBgColour={bannerInfo.logoBgColour}\n banner={bannerInfo.banner}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n actions={props.getBannerActions?.()}\n onClickSignUp={props.onClickSignUp}\n isAuthenticated={props.isAuthenticated}\n videoUrl={props.partnerProfile._videobanner?.value?.url}\n websiteUrl={ContentPartnersHelper.getPartnerLinkByType(\n props.partnerProfile?.links,\n 'website',\n ContentPartnersHelper.makeUTMs({ slug: props.partnerProfile._slug.value })\n )}\n isStudent={props.hasPermissions(PermissionName.StudentExperience)}\n log={props.log}\n />\n \n <div className='py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n {showExpandableDescription && (\n <ChannelDashboardDescription partnerProfile={props.partnerProfile} />\n )}\n </div>\n\n <div className='mt-3'>\n {!emptyState && widgets.map((widget, idx) => (\n <InfiniteWidgetContainerView<CuratedWidget, CuratedWidget, AllPartnerProfileWidgetTemplates>\n dashboardTarget={DashboardTargetType.PartnerProfile}\n key={widget.id}\n index={idx}\n item={widget}\n infiniteFetch={shouldInfiniteFetch(widgets, idx)}\n getName={widget => widget.name}\n getWidgetMetadata={w => w.metadata}\n appLinks={props.widgetAppLinks}\n hasPermissions={props.hasPermissions}\n commonVideoProps={props.commonVideoProps}\n audiences={props.audiences}\n setIsEmpty={isEmpty => setEmptyWidget(widget.id, isEmpty)}\n getCursor={w => w.cursor}\n getRequest={cursor => getWidgetContentRequest(widget.id, widget.widgetId, widget.templateId, cursor)}\n hasLocalPermissions={props.hasLocalPermissions}\n settingsHash={props.settings}\n getContent={w => w.content}\n resultsTransformers={WidgetHelper.getWidgetResultsTransformers()}\n onClickSearchAllVideos={props.onClickSearchAllVideos}\n getSeeMoreAppLink={props.getSeeMoreAppLink}\n isEmptyPredicate={items => (\n Array.isArray(items) && Array.isArray(items[0]?.content) && !items[0]?.content?.length\n )}\n\n getSelectedItems={null}\n appLinkOptions={null}\n />\n ))}\n </div>\n </>\n }\n\n {emptyState && <ContentPartnerEmptyState\n type={emptyState}\n // Coming soon empty state props\n partnerName={props.partnerProfile.name}\n comingSoonImageUrl={props.emptyImageUrl}\n // Content region empty state props\n contentRegionImageUrl={props.emptyImageUrl}\n contentRegionButtonLink={props.widgetAppLinks?.partnerHome?.()}\n // No content empty state props\n noContentImageUrl={props.emptyImageUrl}\n />}\n </>\n );\n}\n","import { AnalyticsOptions, ContentPartnerDescriptors, EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EventLogConfig, getEventLogger } from 'libs/shared/utils/get-event-logger/getEventLogger';\n\nimport { BaseContentPartnerData, ContentPartnerData } from './interfaces/GetContentPartnerEventLogger';\n\ninterface ContentPartnerEventLoggerOptions {\n data: BaseContentPartnerData;\n analyticsOptions: AnalyticsOptions;\n shouldLog?: boolean;\n}\n\nexport type ContentPartnerEventLoggerFn = ReturnType<typeof getContentPartnerEventLogger>['log'];\n\nfunction getLogDataConfig(): EventLogConfig<ContentPartnerData> {\n return {\n 'click-video-banner-controls': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.PartnerProfile,\n descriptor: ContentPartnerDescriptors.VideoBannerControls,\n location: LocationContext.ContentPartnerDashboardVideoBanner\n }\n },\n 'click-video-banner-sign-up': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.PartnerProfile,\n workflowPhase: WorkflowPhase.Start,\n descriptor: ContentPartnerDescriptors.VideoBannerSignUp,\n location: LocationContext.ContentPartnerDashboardVideoBanner\n }\n }\n };\n}\n\nexport function getContentPartnerEventLogger(options: ContentPartnerEventLoggerOptions) {\n const { getData, log } = getEventLogger({\n analyticsOptions: options.analyticsOptions,\n baseData: options.data,\n config: getLogDataConfig(),\n shouldLog: options.shouldLog ?? true\n });\n\n return {\n log,\n getData\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { ContentPartnerDashboard } from 'libs/shared/apps/content-partners/components/content-partner-dashboard/ContentPartnerDashboard';\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { getContentPartnerEventLogger } from 'libs/shared/apps/content-partners/utils/get-content-partner-event-logger/getContentPartnerEventLogger';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { WidgetTypeIdConfig } from 'libs/shared/constants/WidgetTypeIdConfig';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CuratedWidget, CuratedWidgetQueryParams, CurrentUser, DashboardTargetType, Presentation } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePartnerProfile } from 'shared/hooks/usePartnerProfile';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { getContentPartnerWidgetAppLinks } from 'apps/content-partners/utils/getContentPartnerWidgetAppLinks';\nimport { useSignUpEntry } from 'apps/sign-up/hooks/useSignUpEntry';\nimport { SignUpHelper } from 'apps/sign-up/utils/SignUpHelper';\n\nconst namespace = 'contentPartners.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ContentPartnersDashboardViewProps {\n slug: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function ContentPartnersDashboardView(props: ContentPartnersDashboardViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const partnerProfile = usePartnerProfile(props.slug);\n const videoActions = useVideoActions({\n location: VideoActionsLocation.VideoItem,\n presentationSlug: null\n });\n\n const { log } = getContentPartnerEventLogger({\n data: {\n entity: {\n id: partnerProfile.data?.id,\n name: partnerProfile.data?.name,\n contentRegion: currentUser.data?.contentRegion\n }\n },\n analyticsOptions: {\n entity: EntityType.PartnerProfile,\n location: LocationContext.ContentPartnerDashboard\n }\n });\n\n useSignUpEntry({\n app: 'channels',\n id: partnerProfile.data?.id,\n metadata: { conversionSuffix: partnerProfile.data?.name }\n });\n\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n\n const { commonVideoProps } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail\n });\n\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n\n const settings = useSettings(null);\n\n const { dashboard, isPreviewing } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.PartnerProfile,\n partnerProfileSlug: props.slug,\n queryParams: props.queryParams\n });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: partnerProfile.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n allowIndexing: true\n }));\n\n const breadcrumbs = useBreadcrumbs({ name: partnerProfile.data?.name });\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n const widgetAppLinks = getContentPartnerWidgetAppLinks(\n currentUser.data,\n { channelId: partnerProfile.data?.id, presentationSlug: null }\n );\n\n function getBannerActions(): ActionOptions[] {\n if (!isUserCurator)\n return [];\n\n return [{\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(dashboard.data?.typeId, dashboard.data?.id),\n openInNewTab: true\n }];\n }\n\n function getWidgetContentRequest(\n id: string,\n params: CuratedWidgetQueryParams,\n template: WidgetTemplate,\n presentation?: Presentation,\n cursor?: string\n ): Flight.Request {\n return DashboardRequests.dashboardWidgetContent(\n id,\n params,\n template,\n presentation,\n { cursor }\n );\n }\n\n function getSeeMoreAppLink(widget: CuratedWidget): Core.AppLink {\n return WidgetTypeIdConfig[widget.widgetId]\n ?.getCollectionAppLink?.(widgetAppLinks, widget.content) ?? null;\n }\n\n function onClickSignUp(email: string): void {\n log?.({\n type: 'click-video-banner-sign-up',\n email: email\n });\n Core.AppLinkHelper.trigger(\n SignUpHelper.getSignUpAppLink({\n email\n })\n );\n }\n\n const loaded = partnerProfile.hasCompleted && dashboard.hasCompleted;\n const isBot = SeoHelper.isBot();\n\n const isInContentRegion = isPreviewing ?\n true : // skip content region check if previewing\n ContentPartnersHelper.isInContentRegion(\n partnerProfile.data,\n currentUser.data?.contentRegion,\n currentUser.data?.isAuthenticated\n );\n\n function onClickSearchAllVideos() {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n scopeId: partnerProfile.data?.id\n }\n });\n }\n\n if (!loaded)\n return <></>;\n \n return (\n <div className='bg-white px-4 position-relative'>\n <VideoActionsContext.Provider value={videoActions}>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='channel' />}\n\n <ContentPartnerDashboard\n dashboard={dashboard.data}\n partnerProfile={partnerProfile.data}\n getWidgetContentRequest={getWidgetContentRequest}\n commonVideoProps={commonVideoProps}\n breadcrumbs={breadcrumbs}\n getBannerActions={getBannerActions}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n settings={settings}\n widgetAppLinks={widgetAppLinks}\n emptyImageUrl={ImageUrls.EmptyStates.WATCH_HISTORY}\n isBot={isBot}\n // Only lazy load if its an actual user\n lazyLoad={!isBot}\n isAuthenticated={currentUser.data?.isAuthenticated}\n isInContentRegion={isInContentRegion}\n onClickSignUp={onClickSignUp}\n isPreviewing={isPreviewing}\n onClickSearchAllVideos={onClickSearchAllVideos}\n getSeeMoreAppLink={getSeeMoreAppLink}\n log={log}\n />\n </VideoActionsContext.Provider>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dd23z1_x2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/channel-dashboard-description/ChannelDashboardDescription.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-dashboard-coming-soon/ContentPartnerDashboardComingSoon.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-dashboard-content-region/ContentPartnerDashboardContentRegion.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-dashboard-no-content/ContentPartnerDashboardNoContent.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-empty-state/ContentPartnerEmptyState.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/ContentPartnerDashboard.tsx","../../../../libs/shared/src/apps/content-partners/utils/get-content-partner-event-logger/getContentPartnerEventLogger.ts","../../src/apps/content-partners/views/content-partners-dashboard/ContentPartnersDashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { ExpandableTextInline } from 'libs/shared/components/expandable-text-inline/ExpandableTextInline';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { LinkSvg } from 'libs/shared/images/svg/objects/LinkSvg';\nimport { PartnerProfile } from 'libs/shared/interfaces';\n\ninterface ChannelDashboardDescriptionProps {\n partnerProfile: PartnerProfile;\n}\n\nexport function ChannelDashboardDescription(props: ChannelDashboardDescriptionProps): JSX.Element {\n const websiteLink = ContentPartnersHelper.getPartnerLinkByType(\n props.partnerProfile?.links,\n 'website',\n ContentPartnersHelper.makeUTMs({ slug: props.partnerProfile._slug.value })\n );\n\n const displayWebsiteLink = UrlHelper.getHostname(websiteLink) ?? websiteLink;\n\n return (\n <div className='mt-3'>\n <ExpandableTextInline>\n {() => (\n <p className='mb-0'>\n {websiteLink && (\n <>\n <a\n href={websiteLink}\n target='_blank'\n rel='noopener noreferrer'\n className='position-relative d-inline-block ps-4 mb-2 me-2'\n >\n <SvgContainer svg={LinkSvg} className='svg-container position-absolute top-50 start-0 translate-middle-y' />\n <span className='ps-1'>{displayWebsiteLink}</span>\n </a>\n <span className='mb-2 me-2'>•</span>\n </>\n )}\n {props.partnerProfile.description}\n </p>\n )}\n </ExpandableTextInline>\n </div>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'contentPartners.contentPartnerDashboardComingSoon';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ContentPartnerDashboardComingSoonProps {\n partnerName: string;\n comingSoonImageUrl: string;\n}\n\nexport function ContentPartnerDashboardComingSoon(props: ContentPartnerDashboardComingSoonProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image\n src={props.comingSoonImageUrl}\n altText={getPhrase('description', { partnerName: props.partnerName })}\n />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='description' options={{ partnerName: props.partnerName }} />\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'contentPartners.contentPartnerDashboardContentRegion';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ContentPartnerDashboardContentRegionProps {\n contentRegionImageUrl: string;\n contentRegionButtonLink: Core.AppLink;\n}\n\nexport function ContentPartnerDashboardContentRegion(props: ContentPartnerDashboardContentRegionProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={props.contentRegionImageUrl} altText={getPhrase('imageAlt')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Cta text={getPhrase('cta')} appLink={props.contentRegionButtonLink} className='btn btn-dark' />\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'contentPartners.contentPartnerDashboardNoContent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ContentPartnerDashboardNoContentProps {\n noContentImageUrl: string;\n}\n\nexport function ContentPartnerDashboardNoContent(props: ContentPartnerDashboardNoContentProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image\n src={props.noContentImageUrl}\n altText={getPhrase('description')}\n />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='description' />\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport {\n ContentPartnerDashboardComingSoon,\n ContentPartnerDashboardComingSoonProps\n} from '../content-partner-dashboard-coming-soon/ContentPartnerDashboardComingSoon';\nimport {\n ContentPartnerDashboardContentRegion,\n ContentPartnerDashboardContentRegionProps\n} from '../content-partner-dashboard-content-region/ContentPartnerDashboardContentRegion';\nimport {\n ContentPartnerDashboardNoContent,\n ContentPartnerDashboardNoContentProps\n} from '../content-partner-dashboard-no-content/ContentPartnerDashboardNoContent';\n\nexport type ContentPartnerEmptyStateType = 'coming-soon' | 'content-region' | 'no-content';\n\nconst ContentParterEmptyStateTypes: Record<ContentPartnerEmptyStateType, React.ComponentType<any>> = {\n 'coming-soon': ContentPartnerDashboardComingSoon,\n 'content-region': ContentPartnerDashboardContentRegion,\n 'no-content': ContentPartnerDashboardNoContent\n};\n\ntype EmptyStateType<TType extends ContentPartnerEmptyStateType, TProps> = TProps & {\n type: TType\n};\n\ntype ContentPartnerEmptyStateProps =\n EmptyStateType<'coming-soon', ContentPartnerDashboardComingSoonProps> |\n EmptyStateType<'content-region', ContentPartnerDashboardContentRegionProps> |\n EmptyStateType<'no-content', ContentPartnerDashboardNoContentProps>;\n\nexport function ContentPartnerEmptyState(props: ContentPartnerEmptyStateProps): JSX.Element {\n const Component = ContentParterEmptyStateTypes[props.type];\n\n return <Component {...props} />;\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { InfiniteWidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/InfiniteWidgetContainerView';\nimport { AllPartnerProfileWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { useEmptyWidgets } from 'libs/shared/hooks/useEmptyWidgets';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CuratedDashboard, CuratedWidget, CuratedWidgetQueryParams, CurrentUser, DashboardStatus, DashboardTargetType, PartnerProfile, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport { ContentPartnerEventLoggerFn } from '../../utils/get-content-partner-event-logger/getContentPartnerEventLogger';\n\nimport { ChannelDashboardDescription } from './channel-dashboard-description/ChannelDashboardDescription';\nimport { ContentPartnerEmptyState, ContentPartnerEmptyStateType } from './empty-state/content-partner-empty-state/ContentPartnerEmptyState';\n\nconst InfiniteFetchWidgetIds: WidgetTypeId[] = [WidgetTypeId.ContentPartnerVideos];\n\nfunction shouldInfiniteFetch(widgets: CuratedWidget[], index: number): boolean {\n const currentWidget = widgets[index];\n\n if (!currentWidget) return false;\n \n return InfiniteFetchWidgetIds.includes(currentWidget.widgetId) && index === widgets.length - 1;\n}\n\nexport interface ContentPartnerDashboardProps {\n dashboard: CuratedDashboard;\n partnerProfile: PartnerProfile;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate,\n presentation?: Presentation,\n cursor?: string\n ) => Flight.Request;\n commonVideoProps: CommonVideoProps;\n getBannerActions?: () => ActionOptions[];\n breadcrumbs?: Breadcrumb[];\n isReadonly?: boolean;\n widgetAppLinks?: AllPartnerProfileWidgetTemplates['appLinks'];\n scrollToWidgetId?: string;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n settings?: AllPartnerProfileWidgetTemplates['settings'];\n audiences?: PresentationAudience[];\n currentUser?: CurrentUser;\n emptyImageUrl?: string;\n lazyLoad?: boolean;\n isBot?: boolean;\n isComingSoon?: boolean;\n isPreviewing?: boolean;\n isAuthenticated?: boolean;\n isInContentRegion: boolean;\n onClickSignUp: (email: string) => void;\n onClickSearchAllVideos?: () => void;\n getSeeMoreAppLink?: (widget: CuratedWidget) => Core.AppLink;\n log?: ContentPartnerEventLoggerFn;\n}\n\nexport function ContentPartnerDashboard(props: ContentPartnerDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const { emptyWidgets, setEmptyWidget } = useEmptyWidgets(widgets);\n\n function getWidgetContentRequest(\n id: string,\n widgetTypeId: WidgetTypeId,\n template: WidgetTemplate,\n cursor?: string\n ): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template, undefined, cursor);\n }\n\n function getEmptyStateType(): ContentPartnerEmptyStateType | false {\n if (!props.isInContentRegion)\n return 'content-region';\n \n if (props.isComingSoon)\n return 'coming-soon';\n \n if (props.dashboard.status === DashboardStatus.Archived && !props.isReadonly)\n return 'coming-soon';\n \n if (props.dashboard.status === DashboardStatus.Draft && !props.isPreviewing)\n return false;\n\n if (!widgets?.length)\n return 'no-content';\n \n const emptyValues = Object.values(emptyWidgets);\n \n if (emptyValues.length > 0 && emptyValues.every(state => !!state))\n return 'no-content';\n\n return false;\n }\n\n const bannerInfo = ContentPartnersHelper.getPartnerBannerInfo(props.partnerProfile);\n\n const emptyState = getEmptyStateType();\n const showExpandableDescription = (!emptyState || emptyState === 'content-region') && props.partnerProfile.description;\n\n return (\n <>\n {!!widgets.length &&\n <>\n <BannerHeader\n type='partner-profile'\n partnerBannerType={ContentPartnersHelper.getPartnerBannerType(props.partnerProfile)}\n heading={bannerInfo.heading}\n blockColourClass={bannerInfo.blockColourClass}\n logo={bannerInfo.logo}\n logoBgColour={bannerInfo.logoBgColour}\n banner={bannerInfo.banner}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n actions={props.getBannerActions?.()}\n onClickSignUp={props.onClickSignUp}\n isAuthenticated={props.isAuthenticated}\n videoUrl={props.partnerProfile._videobanner?.value?.url}\n websiteUrl={ContentPartnersHelper.getPartnerLinkByType(\n props.partnerProfile?.links,\n 'website',\n ContentPartnersHelper.makeUTMs({ slug: props.partnerProfile._slug.value })\n )}\n isStudent={props.hasPermissions(PermissionName.StudentExperience)}\n log={props.log}\n />\n \n <div className='py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n {showExpandableDescription && (\n <ChannelDashboardDescription partnerProfile={props.partnerProfile} />\n )}\n </div>\n\n <div className='mt-3'>\n {!emptyState && widgets.map((widget, idx) => (\n <InfiniteWidgetContainerView<CuratedWidget, CuratedWidget, AllPartnerProfileWidgetTemplates>\n dashboardTarget={DashboardTargetType.PartnerProfile}\n key={widget.id}\n index={idx}\n item={widget}\n infiniteFetch={shouldInfiniteFetch(widgets, idx)}\n getName={widget => widget.name}\n getWidgetMetadata={w => w.metadata}\n appLinks={props.widgetAppLinks}\n hasPermissions={props.hasPermissions}\n commonVideoProps={props.commonVideoProps}\n audiences={props.audiences}\n setIsEmpty={isEmpty => setEmptyWidget(widget.id, isEmpty)}\n getCursor={w => w.cursor}\n getRequest={cursor => getWidgetContentRequest(widget.id, widget.widgetId, widget.templateId, cursor)}\n hasLocalPermissions={props.hasLocalPermissions}\n settingsHash={props.settings}\n getContent={w => w.content}\n resultsTransformers={WidgetHelper.getWidgetResultsTransformers()}\n onClickSearchAllVideos={props.onClickSearchAllVideos}\n getSeeMoreAppLink={props.getSeeMoreAppLink}\n isEmptyPredicate={items => (\n Array.isArray(items) && Array.isArray(items[0]?.content) && !items[0]?.content?.length\n )}\n\n getSelectedItems={null}\n appLinkOptions={null}\n />\n ))}\n </div>\n </>\n }\n\n {emptyState && <ContentPartnerEmptyState\n type={emptyState}\n // Coming soon empty state props\n partnerName={props.partnerProfile.name}\n comingSoonImageUrl={props.emptyImageUrl}\n // Content region empty state props\n contentRegionImageUrl={props.emptyImageUrl}\n contentRegionButtonLink={props.widgetAppLinks?.partnerHome?.()}\n // No content empty state props\n noContentImageUrl={props.emptyImageUrl}\n />}\n </>\n );\n}\n","import { AnalyticsOptions, ContentPartnerDescriptors, EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EventLogConfig, getEventLogger } from 'libs/shared/utils/get-event-logger/getEventLogger';\n\nimport { BaseContentPartnerData, ContentPartnerData } from './interfaces/GetContentPartnerEventLogger';\n\ninterface ContentPartnerEventLoggerOptions {\n data: BaseContentPartnerData;\n analyticsOptions: AnalyticsOptions;\n shouldLog?: boolean;\n}\n\nexport type ContentPartnerEventLoggerFn = ReturnType<typeof getContentPartnerEventLogger>['log'];\n\nfunction getLogDataConfig(): EventLogConfig<ContentPartnerData> {\n return {\n 'click-video-banner-controls': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.PartnerProfile,\n descriptor: ContentPartnerDescriptors.VideoBannerControls,\n location: LocationContext.ContentPartnerDashboardVideoBanner\n }\n },\n 'click-video-banner-sign-up': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.PartnerProfile,\n workflowPhase: WorkflowPhase.Start,\n descriptor: ContentPartnerDescriptors.VideoBannerSignUp,\n location: LocationContext.ContentPartnerDashboardVideoBanner\n }\n }\n };\n}\n\nexport function getContentPartnerEventLogger(options: ContentPartnerEventLoggerOptions) {\n const { getData, log } = getEventLogger({\n analyticsOptions: options.analyticsOptions,\n baseData: options.data,\n config: getLogDataConfig(),\n shouldLog: options.shouldLog ?? true\n });\n\n return {\n log,\n getData\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { ContentPartnerDashboard } from 'libs/shared/apps/content-partners/components/content-partner-dashboard/ContentPartnerDashboard';\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { getContentPartnerEventLogger } from 'libs/shared/apps/content-partners/utils/get-content-partner-event-logger/getContentPartnerEventLogger';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { WidgetTypeIdConfig } from 'libs/shared/constants/WidgetTypeIdConfig';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CuratedWidget, CuratedWidgetQueryParams, CurrentUser, DashboardTargetType, Presentation } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePartnerProfile } from 'shared/hooks/usePartnerProfile';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { getContentPartnerWidgetAppLinks } from 'apps/content-partners/utils/getContentPartnerWidgetAppLinks';\nimport { useSignUpEntry } from 'apps/sign-up/hooks/useSignUpEntry';\nimport { SignUpHelper } from 'apps/sign-up/utils/SignUpHelper';\n\nconst namespace = 'contentPartners.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ContentPartnersDashboardViewProps {\n slug: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function ContentPartnersDashboardView(props: ContentPartnersDashboardViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const partnerProfile = usePartnerProfile(props.slug);\n const videoActions = useVideoActions({\n location: VideoActionsLocation.VideoItem,\n presentationSlug: null\n });\n\n const { log } = getContentPartnerEventLogger({\n data: {\n entity: {\n id: partnerProfile.data?.id,\n name: partnerProfile.data?.name,\n contentRegion: currentUser.data?.contentRegion\n }\n },\n analyticsOptions: {\n entity: EntityType.PartnerProfile,\n location: LocationContext.ContentPartnerDashboard\n }\n });\n\n useSignUpEntry({\n app: 'channels',\n id: partnerProfile.data?.id,\n metadata: { conversionSuffix: partnerProfile.data?.name }\n });\n\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n\n const { commonVideoProps } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail\n });\n\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n\n const settings = useSettings(null);\n\n const { dashboard, isPreviewing } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.PartnerProfile,\n partnerProfileSlug: props.slug,\n queryParams: props.queryParams\n });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: partnerProfile.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n allowIndexing: true\n }));\n\n const breadcrumbs = useBreadcrumbs({ name: partnerProfile.data?.name });\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n const widgetAppLinks = getContentPartnerWidgetAppLinks(\n currentUser.data,\n { channelId: partnerProfile.data?.id, presentationSlug: null }\n );\n\n function getBannerActions(): ActionOptions[] {\n if (!isUserCurator)\n return [];\n\n return [{\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(dashboard.data?.typeId, dashboard.data?.id),\n openInNewTab: true\n }];\n }\n\n function getWidgetContentRequest(\n id: string,\n params: CuratedWidgetQueryParams,\n template: WidgetTemplate,\n presentation?: Presentation,\n cursor?: string\n ): Flight.Request {\n return DashboardRequests.dashboardWidgetContent(\n id,\n params,\n template,\n presentation,\n { cursor }\n );\n }\n\n function getSeeMoreAppLink(widget: CuratedWidget): Core.AppLink {\n return WidgetTypeIdConfig[widget.widgetId]\n ?.getCollectionAppLink?.(widgetAppLinks, widget.content) ?? null;\n }\n\n function onClickSignUp(email: string): void {\n log?.({\n type: 'click-video-banner-sign-up',\n email: email\n });\n Core.AppLinkHelper.trigger(\n SignUpHelper.getSignUpAppLink({\n email\n })\n );\n }\n\n const loaded = partnerProfile.hasCompleted && dashboard.hasCompleted;\n const isBot = SeoHelper.isBot();\n\n const isInContentRegion = isPreviewing ?\n true : // skip content region check if previewing\n ContentPartnersHelper.isInContentRegion(\n partnerProfile.data,\n currentUser.data?.contentRegion,\n currentUser.data?.isAuthenticated\n );\n\n function onClickSearchAllVideos() {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n scopeId: partnerProfile.data?.id\n }\n });\n }\n\n if (!loaded)\n return <></>;\n \n return (\n <div className='bg-white px-4 position-relative'>\n <VideoActionsContext.Provider value={videoActions}>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='channel' />}\n\n <ContentPartnerDashboard\n dashboard={dashboard.data}\n partnerProfile={partnerProfile.data}\n getWidgetContentRequest={getWidgetContentRequest}\n commonVideoProps={commonVideoProps}\n breadcrumbs={breadcrumbs}\n getBannerActions={getBannerActions}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n settings={settings}\n widgetAppLinks={widgetAppLinks}\n emptyImageUrl={ImageUrls.EmptyStates.WATCH_HISTORY}\n isBot={isBot}\n // Only lazy load if its an actual user\n lazyLoad={!isBot}\n isAuthenticated={currentUser.data?.isAuthenticated}\n isInContentRegion={isInContentRegion}\n onClickSignUp={onClickSignUp}\n isPreviewing={isPreviewing}\n onClickSearchAllVideos={onClickSearchAllVideos}\n getSeeMoreAppLink={getSeeMoreAppLink}\n log={log}\n />\n </VideoActionsContext.Provider>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./DAXXjFlN.chunk.js";import{_ as t}from"./BftnFbcr.chunk.js";import{t as n}from"./DMnm3Ewv.chunk.js";import{n as ee}from"./B785hxeE.chunk.js";import{t as r}from"./CQyJ7YGa.chunk.js";import{t as te}from"./e57H3T-k.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{d as ne,u as s}from"./BX0wDJmp.chunk.js";import{y as re}from"./NlCAcBdo.chunk.js";import{t as ie}from"./oPIkfKWW2.chunk.js";import{t as ae}from"./CcDvlSWl2.chunk.js";import{t as oe}from"./DbSUQ2A12.chunk.js";import{t as se}from"./DtGDVg4O2.chunk.js";import{t as c}from"./8U-YTgZd.chunk.js";import{t as l}from"./DsXWD-Sn.chunk.js";import{t as u}from"./DdsRCMkN.chunk.js";import{t as d}from"./D_gWf2lC.chunk.js";import{t as f}from"./ZwDDc8Zd.chunk.js";import{t as p}from"./BWaKdG0l.chunk.js";import{n as ce,t as le}from"./A8xLZrSw.chunk.js";import{t as ue}from"./CMLErBju.chunk.js";import{t as m}from"./POQS3gV6.chunk.js";import{t as de}from"./BQKcAczf.chunk.js";import{l as h,r as g}from"./_Cm5O72d.chunk.js";import{t as _}from"./DR9DEoQL.chunk.js";import{t as v}from"./DW51cSV_2.chunk.js";import{t as y}from"./CmV-znIi2.chunk.js";import{t as b}from"./CjGfwvo12.chunk.js";import{n as x}from"./B-eFTZdx2.chunk.js";import{t as S}from"./DMZ_X3HL.chunk.js";import{t as C}from"./DMaQV7L2.chunk.js";import{t as w}from"./CETzluXN.chunk.js";import{t as T}from"./D0n6BTgT.chunk.js";import{t as E}from"./BmR4qY-v2.chunk.js";import{t as D}from"./cX5MHowe.chunk.js";import{t as O}from"./BIO-5Tfr2.chunk.js";import{y as k}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{_ as t}from"./BftnFbcr.chunk.js";import{t as n}from"./DMnm3Ewv.chunk.js";import{n as ee}from"./B785hxeE.chunk.js";import{t as r}from"./CQyJ7YGa.chunk.js";import{t as te}from"./e57H3T-k.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{d as ne,u as s}from"./BX0wDJmp.chunk.js";import{y as re}from"./NlCAcBdo.chunk.js";import{t as ie}from"./oPIkfKWW2.chunk.js";import{t as ae}from"./CcDvlSWl2.chunk.js";import{t as oe}from"./DbSUQ2A12.chunk.js";import{t as se}from"./DtGDVg4O2.chunk.js";import{t as c}from"./8U-YTgZd.chunk.js";import{t as l}from"./DsXWD-Sn.chunk.js";import{t as u}from"./DdsRCMkN.chunk.js";import{t as d}from"./D_gWf2lC.chunk.js";import{t as f}from"./ZwDDc8Zd.chunk.js";import{t as p}from"./BWaKdG0l.chunk.js";import{n as ce,t as le}from"./A8xLZrSw.chunk.js";import{t as ue}from"./CMLErBju.chunk.js";import{t as m}from"./POQS3gV6.chunk.js";import{t as de}from"./BQKcAczf.chunk.js";import{l as h,r as g}from"./_Cm5O72d.chunk.js";import{t as _}from"./DR9DEoQL.chunk.js";import{t as v}from"./DW51cSV_2.chunk.js";import{t as y}from"./CmV-znIi2.chunk.js";import{t as b}from"./CjGfwvo12.chunk.js";import{n as x}from"./B-eFTZdx2.chunk.js";import{t as S}from"./DMZ_X3HL.chunk.js";import{t as C}from"./DMaQV7L2.chunk.js";import{t as w}from"./CETzluXN.chunk.js";import{t as T}from"./D0n6BTgT.chunk.js";import{t as E}from"./BmR4qY-v2.chunk.js";import{t as D}from"./cX5MHowe.chunk.js";import{t as O}from"./BIO-5Tfr2.chunk.js";import{y as k}from"./wpRpI9h02.chunk.js";import{n as A,r as j,t as M}from"./CsCjBSq62.chunk.js";var N=e(i()),P=a(),F=r.encloseNamespace(`shared.play`),I={notFound:b,forbidden:{privacy:m}};L.defaultProps={queryParams:{}};function L(e){let{context:r,contextId:i,playNext:a,mtv:m,resourceId:b}=e.queryParams,{commonVideoProps:L,hasCommonVideoPropsCompleted:R}=E({locationContext:re.PlayPage,mtv:m}),{hasPermissions:fe}=de(),{activePresentation:z}=f(),{hasPlayPageTranscript:B,hasNewSearch:V,clickViewLive:H}=ae(null),U=s(S.streamableLearning()),W=s(ie.currentUser()),G=s(l.video(e.id)),K=y({objectId:G.data?.id,objectTypeId:G.data?.typeId}),pe=s(K.canViewClips&&se.videoClips(e.id)),me=s(K.canViewInteractives&&c.videoInteractives(e.id)),he=s(z&&C.audiencesByPresentationId(z.id)),{shouldFetchTranscript:q,shouldShowTranscript:ge}=M(e.id),{subtitles:_e,chapters:ve}=s(q&&W.data?.contentRegion&&j.chaptersAndSubtitles(e.id,W.data.contentRegion))?.data||{},J=_e?.filter(e=>!e.customer),Y=ne(J&&J.length>0?J.map(e=>j.subtitleVtt(e.url,e)):[]),ye=J?.filter(e=>Y.data.find(t=>t.id===e.id))||[],X=s(d.config()),be=k(),xe=s(G.statusCode===n.Forbidden&&l.video(e.id,oe.StripMetadata)),Se=w(e.id),Z=g({video:G.data,context:r,contextId:i,moviesAndTv:m,currentUser:W.data}),Q=h(e.id,!0),$=s(l.regionAlternatives(e.id)),Ce=D({name:G.data?.name});return le(ce.getVideoMetadata({content:G.data,regionAlternatives:$.data,phraseContext:{phraseHandler:F,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},canonicalLink:_.getCanonicalLink({stripPresentationSlug:!0,customAppLink:v.getAppLink(G.data,{},e.presentationSlug)}),allowIndexing:_.allowIndexing(),hrefLang:_.getContentHrefLang($.data,(e,t)=>({application:o.VIDEOS,action:u.Videos.PLAY_VIDEO,args:[null,e,te.slugify(t)]}))})),T(G,I,{forbidden:!0}),O(Z.videos??[]),x({id:e.id,app:`videos`}),ue(xe),N.useEffect(()=>{H||!G.data||!U.data||!H&&G.data.libraries?.data.find(e=>e.id===U.data.objectId)&&t.throw(new p)},[G.hasCompleted,U.hasCompleted,H]),G.data&&W.hasCompleted&&Q.hasCompleted&&R?(0,P.jsx)(A,{presentationSlug:e.presentationSlug,video:G.data,clips:pe.data?.data,interactives:me.data?.data,curriculums:Se,relatedVideos:Z,currentUser:W.data,pointsOfInterest:Q.items,playNext:a,featureAccess:K,audiences:he.data,params:e.queryParams,canManageVideoAccess:fe(ee.ManageVideoAccess),shouldShowSideTableOfContents:be,tableOfContentsId:e.queryParams?.tocId,breadcrumbs:Ce,commonVideoProps:L,hasTheatreMode:B,shouldShowTranscript:ge&&(!q||Y.data?.length>0),vttSubtitles:Y.data||[],subtitles:ye,chapters:ve,isBot:_.isBot(),playerApiUrl:X.data?.playerApiUrl,hasNewSearch:V,liteUrl:X.data.liteUrl,resourcePopupId:b}):(0,P.jsx)(P.Fragment,{})}export{L as PlayView};
|
|
2
|
+
//# sourceMappingURL=Drh1bb9z.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CWCtYUUU.chunk.js","names":[],"sources":["../../src/shared/views/play/PlayView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { ClipCollection, Config, CurrentUser, InteractiveCollection, PresentationAudience, RegionAlternative, Video, VttSubtitleResponse } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { TranscriptRequests, TranscriptResponse } from 'shared/flight-requests/TranscriptRequests';\nimport { useActivePresentation } from 'shared/hooks/presentations/useActivePresentation';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\nimport { useShowTranscriptForVideo } from 'shared/views/play/hooks/useShowVideoTranscript';\n\nimport { PlayPage } from './components/play-page/PlayPage';\n\nconst namespace = 'shared.play';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nexport interface PlayViewProps {\n presentationSlug: string;\n id: string;\n queryParams?: PlayViewQueryParams;\n}\n\nPlayView.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayView(props: PlayViewProps): React.ReactElement {\n const { context, contextId, playNext, mtv, resourceId } = props.queryParams;\n\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext: LocationContext.PlayPage, mtv });\n\n const { hasPermissions } = usePermissions();\n\n const { activePresentation } = useActivePresentation();\n const { hasPlayPageTranscript, hasNewSearch, clickViewLive } = useSettings(null);\n\n const streamableLibrary = Flight.useBasicFetch<HashObject>(LibraryRequests.streamableLearning());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n\n const featureAccess = useVideoFeatureAccess({\n objectId: video.data?.id,\n objectTypeId: video.data?.typeId\n });\n \n const clips = Flight.useBasicFetch<ClipCollection>(\n featureAccess.canViewClips && ClipRequests.videoClips(props.id)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.id)\n );\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n\n const { shouldFetchTranscript, shouldShowTranscript } = useShowTranscriptForVideo(props.id);\n const transcript = Flight.useBasicFetch<TranscriptResponse>(\n shouldFetchTranscript && currentUser.data?.contentRegion &&\n TranscriptRequests.chaptersAndSubtitles(props.id, currentUser.data.contentRegion)\n );\n const { subtitles: allSubtitles, chapters } = transcript?.data || {};\n // only show transcript for ClickView produced subtitle\n const subtitles = allSubtitles?.filter(subtitle => !subtitle.customer);\n\n const captionsRequests = (subtitles && subtitles.length > 0) ?\n subtitles.map(subtitle => TranscriptRequests.subtitleVtt(subtitle.url, subtitle)) :\n [];\n const captions = Flight.useBasicFetchAll<VttSubtitleResponse>(captionsRequests);\n const filteredSubtitles = subtitles?.filter(\n subtitle => captions.data.find(caption => caption.id === subtitle.id)\n ) || [];\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const strippedVideo = Flight.useBasicFetch<Video>(video.statusCode === HttpStatus.Forbidden &&\n VideoRequests.video(props.id, PermissionFilterOption.StripMetadata));\n\n const curriculums = useCurriculums(props.id);\n\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n\n const regionAlternatives = Flight.useBasicFetch<RegionAlternative[]>(\n VideoRequests.regionAlternatives(props.id)\n );\n\n const breadcrumbs = useBreadcrumbs({ name: video.data?.name });\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n regionAlternatives: regionAlternatives.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n stripPresentationSlug: true,\n customAppLink: VideoAppLinkHelper.getAppLink(video.data, {}, props.presentationSlug)\n }),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getContentHrefLang(regionAlternatives.data, (id: string, name: string) => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ null, id, TextHelper.slugify(name) ]\n }))\n }));\n\n useHandleObjectError(video, videoErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useDeepLinks({ id: props.id, app: 'videos' });\n useCannotConsumeError(strippedVideo);\n\n React.useEffect(() => {\n if (clickViewLive)\n return;\n\n if (!video.data || !streamableLibrary.data)\n return;\n \n if (!clickViewLive && video.data.libraries?.data.find(library => library.id === streamableLibrary.data.objectId))\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ video.hasCompleted, streamableLibrary.hasCompleted, clickViewLive ]);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <PlayPage\n presentationSlug={props.presentationSlug}\n video={video.data}\n clips={clips.data?.data}\n interactives={interactives.data?.data}\n curriculums={curriculums}\n relatedVideos={relatedVideos}\n currentUser={currentUser.data}\n pointsOfInterest={pointsOfInterest.items}\n playNext={playNext}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n tableOfContentsId={props.queryParams?.tocId}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n hasTheatreMode={hasPlayPageTranscript}\n shouldShowTranscript={shouldShowTranscript && (!shouldFetchTranscript || captions.data?.length > 0)}\n vttSubtitles={captions.data || []}\n subtitles={filteredSubtitles}\n chapters={chapters}\n isBot={SeoHelper.isBot()}\n playerApiUrl={config.data?.playerApiUrl}\n hasNewSearch={hasNewSearch}\n liteUrl={config.data.liteUrl}\n resourcePopupId={resourceId}\n />\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Drh1bb9z.chunk.js","names":[],"sources":["../../src/shared/views/play/PlayView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { ClipCollection, Config, CurrentUser, InteractiveCollection, PresentationAudience, RegionAlternative, Video, VttSubtitleResponse } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { TranscriptRequests, TranscriptResponse } from 'shared/flight-requests/TranscriptRequests';\nimport { useActivePresentation } from 'shared/hooks/presentations/useActivePresentation';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\nimport { useShowTranscriptForVideo } from 'shared/views/play/hooks/useShowVideoTranscript';\n\nimport { PlayPage } from './components/play-page/PlayPage';\n\nconst namespace = 'shared.play';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nexport interface PlayViewProps {\n presentationSlug: string;\n id: string;\n queryParams?: PlayViewQueryParams;\n}\n\nPlayView.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayView(props: PlayViewProps): React.ReactElement {\n const { context, contextId, playNext, mtv, resourceId } = props.queryParams;\n\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext: LocationContext.PlayPage, mtv });\n\n const { hasPermissions } = usePermissions();\n\n const { activePresentation } = useActivePresentation();\n const { hasPlayPageTranscript, hasNewSearch, clickViewLive } = useSettings(null);\n\n const streamableLibrary = Flight.useBasicFetch<HashObject>(LibraryRequests.streamableLearning());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n\n const featureAccess = useVideoFeatureAccess({\n objectId: video.data?.id,\n objectTypeId: video.data?.typeId\n });\n \n const clips = Flight.useBasicFetch<ClipCollection>(\n featureAccess.canViewClips && ClipRequests.videoClips(props.id)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.id)\n );\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n\n const { shouldFetchTranscript, shouldShowTranscript } = useShowTranscriptForVideo(props.id);\n const transcript = Flight.useBasicFetch<TranscriptResponse>(\n shouldFetchTranscript && currentUser.data?.contentRegion &&\n TranscriptRequests.chaptersAndSubtitles(props.id, currentUser.data.contentRegion)\n );\n const { subtitles: allSubtitles, chapters } = transcript?.data || {};\n // only show transcript for ClickView produced subtitle\n const subtitles = allSubtitles?.filter(subtitle => !subtitle.customer);\n\n const captionsRequests = (subtitles && subtitles.length > 0) ?\n subtitles.map(subtitle => TranscriptRequests.subtitleVtt(subtitle.url, subtitle)) :\n [];\n const captions = Flight.useBasicFetchAll<VttSubtitleResponse>(captionsRequests);\n const filteredSubtitles = subtitles?.filter(\n subtitle => captions.data.find(caption => caption.id === subtitle.id)\n ) || [];\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const strippedVideo = Flight.useBasicFetch<Video>(video.statusCode === HttpStatus.Forbidden &&\n VideoRequests.video(props.id, PermissionFilterOption.StripMetadata));\n\n const curriculums = useCurriculums(props.id);\n\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n\n const regionAlternatives = Flight.useBasicFetch<RegionAlternative[]>(\n VideoRequests.regionAlternatives(props.id)\n );\n\n const breadcrumbs = useBreadcrumbs({ name: video.data?.name });\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n regionAlternatives: regionAlternatives.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n stripPresentationSlug: true,\n customAppLink: VideoAppLinkHelper.getAppLink(video.data, {}, props.presentationSlug)\n }),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getContentHrefLang(regionAlternatives.data, (id: string, name: string) => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ null, id, TextHelper.slugify(name) ]\n }))\n }));\n\n useHandleObjectError(video, videoErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useDeepLinks({ id: props.id, app: 'videos' });\n useCannotConsumeError(strippedVideo);\n\n React.useEffect(() => {\n if (clickViewLive)\n return;\n\n if (!video.data || !streamableLibrary.data)\n return;\n \n if (!clickViewLive && video.data.libraries?.data.find(library => library.id === streamableLibrary.data.objectId))\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ video.hasCompleted, streamableLibrary.hasCompleted, clickViewLive ]);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <PlayPage\n presentationSlug={props.presentationSlug}\n video={video.data}\n clips={clips.data?.data}\n interactives={interactives.data?.data}\n curriculums={curriculums}\n relatedVideos={relatedVideos}\n currentUser={currentUser.data}\n pointsOfInterest={pointsOfInterest.items}\n playNext={playNext}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n tableOfContentsId={props.queryParams?.tocId}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n hasTheatreMode={hasPlayPageTranscript}\n shouldShowTranscript={shouldShowTranscript && (!shouldFetchTranscript || captions.data?.length > 0)}\n vttSubtitles={captions.data || []}\n subtitles={filteredSubtitles}\n chapters={chapters}\n isBot={SeoHelper.isBot()}\n playerApiUrl={config.data?.playerApiUrl}\n hasNewSearch={hasNewSearch}\n liteUrl={config.data.liteUrl}\n resourcePopupId={resourceId}\n />\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{t as i}from"./BXTI9cmX.chunk.js";import{p as a,u as o}from"./BX0wDJmp.chunk.js";import{N as s,U as c,l,y as u,z as d}from"./NlCAcBdo.chunk.js";import{t as f}from"./DTGfiG8Y.chunk.js";import{t as p}from"./DdsRCMkN.chunk.js";import{t as m}from"./D_gWf2lC.chunk.js";import{t as h}from"./ZwDDc8Zd.chunk.js";import{t as g}from"./CYEpX3hx.chunk.js";import{n as _}from"./CsF4wDV1.chunk.js";import{t as v}from"./BocITs4B.chunk.js";import{t as y}from"./DB_BawmH2.chunk.js";import{t as b}from"./QCFxJYkI2.chunk.js";import{t as x}from"./BDpRhbS0.chunk.js";import{n as S}from"./OL3Z6Yp62.chunk.js";import{t as C}from"./D0bhWkNM.chunk.js";import{t as w}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{t as i}from"./BXTI9cmX.chunk.js";import{p as a,u as o}from"./BX0wDJmp.chunk.js";import{N as s,U as c,l,y as u,z as d}from"./NlCAcBdo.chunk.js";import{t as f}from"./DTGfiG8Y.chunk.js";import{t as p}from"./DdsRCMkN.chunk.js";import{t as m}from"./D_gWf2lC.chunk.js";import{t as h}from"./ZwDDc8Zd.chunk.js";import{t as g}from"./CYEpX3hx.chunk.js";import{n as _}from"./CsF4wDV1.chunk.js";import{t as v}from"./BocITs4B.chunk.js";import{t as y}from"./DB_BawmH2.chunk.js";import{t as b}from"./QCFxJYkI2.chunk.js";import{t as x}from"./BDpRhbS0.chunk.js";import{n as S}from"./OL3Z6Yp62.chunk.js";import{t as C}from"./D0bhWkNM.chunk.js";import{t as w}from"./C8l37H7t2.chunk.js";import{n as T,r as E}from"./DVznXaHs2.chunk.js";import{t as D}from"./BAYgSUMz2.chunk.js";import{a as O,i as k,n as A,o as j,r as M,s as N,t as P}from"./BDflGGTj.chunk.js";import{t as F}from"./CuzqCIXw.chunk.js";import{t as I}from"./c5Sk9vVu.chunk.js";var L=e(n());function R(){let{activePresentation:e}=h();return e?.type===f.StreamableLearning?y.ClickViewLive:y.ClickView}var z=r();function B(e){let n=a(),r=S(_.BrazeClient),{trialAppLinkString:f}=D(),[h,y]=L.useState(`lg`),[B,V]=L.useState(),{createOrUpdateProfile:H}=F(),U=R(),W=o(m.config()),G=T(),K=o(G?.countryCode&&E.globalIdps(G.countryCode,b.Primary)),q=P(),{entryPage:J}=w();async function Y(e){let t=await n(I.getLookups(e));return C.getCrmId(t)}function X(){e.closePopup();let t=k.filterBlacklistedKeys(B);g.logUserAction(t||{},{actionType:d.Click,location:u.SignUpPopup,entity:l.SignUp,descriptor:s.ClosePopup,workflowPhase:c.Discard})}function Z(e){if(V(e),e.currentStepId===`completed`){y(void 0);return}h!==`lg`&&y(`lg`)}return!W.hasCompleted||!G||!q||!K.hasCompleted?(0,z.jsx)(z.Fragment,{}):(0,z.jsx)(x,{show:!0,onHide:X,size:h,children:(0,z.jsx)(x.Body,{className:`mx-auto p-0 ${O.modalBody} w-100 position-relative`,children:(0,z.jsx)(M,{signupVariant:U,initialValues:{email:e.email},onStepUpdate:Z,pageAppLinkString:f,entryPage:J,close:X,type:j.Popup,location:u.SignUpPopup,googleMapsApiKey:W.data.googleMapsApiKey,geoLocation:G,imageUrls:A,ajaxUrls:q,productName:N.Lite,getSignInUrl:e=>t.getHref({application:i.DEFAULT,action:p.Default.CHALLENGE,params:e}),globalIdps:K.data,logBrazeEvent:e=>v.logBrazeEvent(r,e),createOrUpdateProfile:H,getCrmIdForProspect:Y})})})}export{B as StartSignUpView};
|
|
2
|
+
//# sourceMappingURL=Drx3PvJj.chunk.js.map
|