@clickview/lite 0.104.0-rc.2 → 0.104.0-rc.3
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 +510 -510
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{BiUOH1CR.chunk.js → 2p_6pVn6.chunk.js} +2 -2
- package/dist/scripts/{BiUOH1CR.chunk.js.map → 2p_6pVn6.chunk.js.map} +1 -1
- package/dist/scripts/B1hsuVfV2.chunk.js +2 -0
- package/dist/scripts/{BwBWuxjr2.chunk.js.map → B1hsuVfV2.chunk.js.map} +1 -1
- package/dist/scripts/{Df6x5Ekm2.chunk.js → B6GfukUn2.chunk.js} +2 -2
- package/dist/scripts/{Df6x5Ekm2.chunk.js.map → B6GfukUn2.chunk.js.map} +1 -1
- package/dist/scripts/BILyzh0I.chunk.js +1 -0
- package/dist/scripts/{D_uAdX7E2.chunk.js → BTm7hIyP2.chunk.js} +2 -2
- package/dist/scripts/{D_uAdX7E2.chunk.js.map → BTm7hIyP2.chunk.js.map} +1 -1
- package/dist/scripts/{DFlO2qoz2.chunk.js → Bf9r1ZoF2.chunk.js} +2 -2
- package/dist/scripts/{DFlO2qoz2.chunk.js.map → Bf9r1ZoF2.chunk.js.map} +1 -1
- package/dist/scripts/{BgPye7Nd2.chunk.js → C46OeU6w2.chunk.js} +2 -2
- package/dist/scripts/{BgPye7Nd2.chunk.js.map → C46OeU6w2.chunk.js.map} +1 -1
- package/dist/scripts/{C62uevy9.chunk.js → C4OV7pr-.chunk.js} +2 -2
- package/dist/scripts/{C62uevy9.chunk.js.map → C4OV7pr-.chunk.js.map} +1 -1
- package/dist/scripts/{EKwCaE3J2.chunk.js → CNPKh2z72.chunk.js} +2 -2
- package/dist/scripts/{EKwCaE3J2.chunk.js.map → CNPKh2z72.chunk.js.map} +1 -1
- package/dist/scripts/{-7qiRMLt.chunk.js → CW1i-QHv.chunk.js} +2 -2
- package/dist/scripts/{-7qiRMLt.chunk.js.map → CW1i-QHv.chunk.js.map} +1 -1
- package/dist/scripts/{GolowYbA.chunk.js → Cl2FZEIX.chunk.js} +2 -2
- package/dist/scripts/{GolowYbA.chunk.js.map → Cl2FZEIX.chunk.js.map} +1 -1
- package/dist/scripts/{CVL6bQWp.chunk.js → CpzveYo2.chunk.js} +2 -2
- package/dist/scripts/{CVL6bQWp.chunk.js.map → CpzveYo2.chunk.js.map} +1 -1
- package/dist/scripts/{By9Vb8Wn.chunk.js → DFFq-sgD.chunk.js} +2 -2
- package/dist/scripts/{By9Vb8Wn.chunk.js.map → DFFq-sgD.chunk.js.map} +1 -1
- package/dist/scripts/{DICsRDM42.chunk.js → DH_0KtTK2.chunk.js} +2 -2
- package/dist/scripts/{DICsRDM42.chunk.js.map → DH_0KtTK2.chunk.js.map} +1 -1
- package/dist/scripts/{z8IWZ1V1.chunk.js → Ta3cqTAC.chunk.js} +2 -2
- package/dist/scripts/{z8IWZ1V1.chunk.js.map → Ta3cqTAC.chunk.js.map} +1 -1
- package/dist/scripts/{C8tDgg1l2.chunk.js → VJQU9c4G2.chunk.js} +2 -2
- package/dist/scripts/{C8tDgg1l2.chunk.js.map → VJQU9c4G2.chunk.js.map} +1 -1
- package/dist/scripts/{app-CuKrDFuc.js → app-LEZ4B6dG.js} +4 -4
- package/dist/scripts/{app-CuKrDFuc.js.map → app-LEZ4B6dG.js.map} +1 -1
- package/dist/scripts/{uSXjtjlJ.chunk.js → ft2cSH-j.chunk.js} +2 -2
- package/dist/scripts/{uSXjtjlJ.chunk.js.map → ft2cSH-j.chunk.js.map} +1 -1
- package/dist/scripts/jAtAipGN.chunk.js +2 -0
- package/dist/scripts/{CpsbRDII.chunk.js.map → jAtAipGN.chunk.js.map} +1 -1
- package/dist/scripts/{DhdM2yGm.chunk.js → qRLSbnEr.chunk.js} +2 -2
- package/dist/scripts/{DhdM2yGm.chunk.js.map → qRLSbnEr.chunk.js.map} +1 -1
- package/dist/scripts/{CXKdMqPJ.chunk.js → qT_Twe2q.chunk.js} +2 -2
- package/dist/scripts/{CXKdMqPJ.chunk.js.map → qT_Twe2q.chunk.js.map} +1 -1
- package/dist/scripts/{B-k4BlVQ2.chunk.js → x2GB1P6E2.chunk.js} +3 -3
- package/dist/scripts/{B-k4BlVQ2.chunk.js.map → x2GB1P6E2.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/BwBWuxjr2.chunk.js +0 -2
- package/dist/scripts/CCBk_ENs.chunk.js +0 -1
- package/dist/scripts/CpsbRDII.chunk.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.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{l as ee,y as s,z as te}from"./NlCAcBdo.chunk.js";import{t as ne}from"./DGmmTRu72.chunk.js";import{t as c}from"./DZX1tZ-D2.chunk.js";import{t as l}from"./CVHQXNzi2.chunk.js";import{t as u}from"./DbSUQ2A12.chunk.js";import{t as d}from"./BrbeV-Gn2.chunk.js";import{t as f}from"./LoQS6GjP.chunk.js";import{t as p}from"./CqrjHjAN.chunk.js";import{t as m}from"./eoAypzU3.chunk.js";import{t as re}from"./CgCqPbjJ.chunk.js";import{t as ie}from"./7-GJWRH82.chunk.js";import{t as ae}from"./dLd5d3X22.chunk.js";import{t as oe}from"./B2INd6bh.chunk.js";import{t as h}from"./B3gsVN-_.chunk.js";import{i as se}from"./BxjzTnvL2.chunk.js";import{n as g,t as ce}from"./CpFtf-tI2.chunk.js";import{t as _}from"./DBkEQkKm2.chunk.js";import{t as v}from"./C1loT8MD2.chunk.js";import{r as y}from"./CsWeCs8U2.chunk.js";import{n as le}from"./xa4cS6Fq.chunk.js";import{t as b}from"./jAbfamoi.chunk.js";import{t as ue}from"./WvK58Ge12.chunk.js";import{t as x}from"./CpsbRDII.chunk.js";import"./CCBk_ENs.chunk.js";import{t as de}from"./CvHvrB-t.chunk.js";import{l as fe}from"./BOJK8LI1.chunk.js";import{t as S}from"./DzgAvoez.chunk.js";import{n as C}from"./D6bsI9KZ.chunk.js";import{t as pe}from"./BbgQJe-T.chunk.js";import{t as w}from"./BPavmm8c.chunk.js";import{a as me,i as he,n as ge,t as _e}from"./DFlO2qoz2.chunk.js";import{_ as T,a as ve,c as E,d as D,f as O,g as k,h as A,i as j,l as M,m as N,n as P,o as F,p as ye,r as be,s as xe,t as Se,u as Ce}from"./C8tDgg1l2.chunk.js";import{n as we,t as Te}from"./B3p3SaM12.chunk.js";import{n as Ee,r as De}from"./BgOLbASl2.chunk.js";import{t as I}from"./DkxWaE9O.chunk.js";var L={chaptersAndSubtitles(e,t){let n={query:`subtitles[customer],chapters`,permissionFilterOption:u.StripMetadata,contentRegion:t};return{url:c.urlBuilder(`{gateway}/v1/objects/${e}`,n),publicUrl:c.urlBuilder(`/api/objects/${e}/subtitles`,n),key:`videos:${e}:subtitles:chapters:${u.StripMetadata}`,formatData:e=>({subtitles:e.subtitles.data,chapters:e.chapters.data})}},subtitleVtt(e,t){return{url:c.urlBuilder(`{player}/srt-to-vtt`,{url:e,fullSentences:!0}),publicUrl:c.urlBuilder(`/api/player/srt-to-vtt`,{url:e,fullSentences:!0}),key:`subtitle:${e}`,formatData:e=>({...t,vtt:e})}}},R=e(r()),z=b(),B={dropdown:`_dropdown_zu639_1`},V=i(),H=`shared.curriculumLinks`;function Oe(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,V.jsx)(V.Fragment,{}):(0,V.jsxs)(`section`,{id:w.CurriculumLinks,ref:t=>{t&&e.headingRef?.current&&e.headingRef.current.set(w.CurriculumLinks,t)},className:`play-page-section`,children:[(0,V.jsx)(`h2`,{className:`h4 me-2 h-100`,children:(0,V.jsx)(g,{namespace:H,phrase:`heading`})}),(0,V.jsx)(I,{availableCurriculums:n,onChangeCurriculum:a,selectedCurriculum:t,className:B.dropdown}),(0,V.jsx)(`div`,{className:`rounded border position-relative`,children:(0,V.jsx)(z.Scrollbars,{autoHeight:!0,autoHeightMax:e.height,children:(0,V.jsx)(`div`,{className:`p-3`,children:(0,V.jsx)(C,{curriculumLinks:e.curriculums.curriculumLinks,onChangeCurriculum:a,hasCompleted:e.curriculums.hasCompleted,mappedCurriculums:e.curriculums.mappedCurriculums,isFetching:e.curriculums.isFetching,getCodeAppLink:(t,n)=>e.hasNewSearch?x.getSearchAppLink(t,{[y]:n}):null,locationContext:s.PlayPage})})})})]})}var ke=`shared.play`;function U(e){let r=le(),i=r.playerRef.current?.isPaused?.(),o=r.playerRef?.current?.hasStarted?.(),{hasPermissions:c}=h(),u=ne(null),{canConsume:f}=d.getCanBeConsumed(e.video),p=F(e.hasTheatreMode,r),g=P(e.hasTheatreMode,r.mode,r.defaultDisplayMode);function v(e){e||y(!1),r.setDefaultDisplayMode?.(e?`theatre`:`normal`),r.playerRef?.current?.toggleTheatreMode?.(e)}function y(e){r.playerRef?.current?.toggleTranscript?.(e)}let{tableOfContentsActiveId:b,setTableOfContentsActiveId:x,controlledId:C,setControlledId:I,tableOfContentsExpanded:L,onToggleTableOfContents:z}=j(e.tableOfContentsId,e.hasTheatreMode,p),B=k(e.video)&&e.featureAccess.canViewGlance,{headingRef:H,headingElements:U}=be(B),W=U.map(t=>({id:t.id,name:Se.getSectionHeading(t.id,{clips:e.clips,interactives:e.interactives,resources:[...e.video.resources?.data??[],...e.video.links?.data??[]]})})),Ae=d.isVideoTypeArchived(e.video),je=c(n.StudentExperience);De({setActiveId:x,headingElements:U,controlledId:C,setControlledId:I}),Ee(U,C);let G=R.useRef(!1),K=se({settings:u,presentationSlug:e.presentationSlug}),q=K.getResourceAppLink(e.video.id,e.shareId,e.featureAccess.canViewResourceItems);M({resourcePopupId:e.resourcePopupId,resources:e.video.resources?.data,getResourceAppLink:q});function J(){G.current=!r?.playerRef?.current?.isPaused(),r?.playerRef?.current?.pause()}function Y(){G.current&&r?.playerRef?.current?.play()}let X={hasTheatreMode:e.hasTheatreMode,shouldShowSideTableOfContents:e.shouldShowSideTableOfContents,tableOfContentsExpanded:L,theatreMode:g},Me=xe(X),Ne=ve(X),Pe=r.mode===`picture-in-picture`||e.featureAccess.canViewPublicLayout&&!e.video._canBeConsumed.value,[,Z]=ae(re.PLAY_PAGE_CONTAINER_CLASS_NAME),Fe=e.commonVideoProps.getSubTextType?.(e.video),Ie=e.commonVideoProps.getSubTextAppLink(e.video),Q=we(e.video,c(n.StudentExperience)),$=Q.filter(ue.isResource);R.useEffect(()=>{Z(p?E.theatreModePlayPageContainer:``)},[p]),R.useEffect(()=>()=>Z(``),[]);function Le(){t.trigger({action:m.SignUp.SIGN_UP,application:a.SIGN_UP})}function Re(){if(!f)return Le();o||r.playerRef.current?.play(),y(!0),window.scrollTo({top:0,behavior:`smooth`})}function ze(e){r.playerRef.current?.currentTime(e)}function Be(){if($.length===1){de.downloadResource($[0],{videoId:e.video?.id,videoName:e.video.name},{location:s.PlayPage,actionType:te.Download,entity:ee.Resource});return}t.trigger({application:a.VIDEOS,action:m.Videos.RESOURCE_DOWNLOAD,args:[e.video?.id,e.shareId]})}return(0,V.jsx)(ce.Provider,{value:ke,children:(0,V.jsxs)(`div`,{className:`px-4 play-page-sections-container ${e.shouldShowSideTableOfContents?`row g-0`:``}`,children:[(0,V.jsxs)(`main`,{className:`${E.main} ${Me}`,children:[!!e.breadcrumbs?.length&&(0,V.jsx)(`div`,{className:`mb-2`,children:(0,V.jsx)(S,{breadcrumbs:e.breadcrumbs})}),(0,V.jsx)(_e,{restrictions:e.video._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.video.id,objectTypeId:l.Video,canManageVideoAccess:e.canManageVideoAccess}),Ae&&(0,V.jsx)(me,{typeId:e.video.typeId,hasStudentExperience:je}),(0,V.jsxs)(`section`,{id:w.Video,className:`mb-3 ${oe.GLOBAL_PLAYER_SELECTOR}`,ref:e=>{e&&H?.current&&H.current.set(w.Video,e)},children:[f&&(0,V.jsx)(fe,{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,V.jsx)(`div`,{className:Pe?``:`d-none`,children:(0,V.jsx)(Ce,{video:e.video,appLink:{application:a.SIGN_UP,action:m.SignUp.SIGN_UP},type:r.mode===`picture-in-picture`?`pip`:`public`})})]}),(0,V.jsxs)(`div`,{className:Ne,children:[(0,V.jsxs)(`div`,{className:g?`${E.theatreModeLeftContent}`:`w-100`,children:[(0,V.jsx)(D,{presentationSlug:e.presentationSlug,media:e.video,subTextType:Fe,subtextAppLink:Ie,yearGroups:e.commonVideoProps.yearGroups,audiences:e.audiences,featureAccess:e.featureAccess,shareId:e.shareId,showTitlePadlock:!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience}),B?(0,V.jsx)(A,{video:e.video,pointsOfInterest:e.pointsOfInterest,setStartTime:e=>r.playerRef.current?.currentTime(e),getTagAppLink:K.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:B}):(0,V.jsx)(T,{video:e.video,currentUser:e.currentUser,headingRef:H,onLaunchImmersiveReader:J,onExitImmersiveReader:Y,getTagAppLink:K.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,getPartnerProfileAppLink:K.getPartnerProfileAppLink,getPartnerDashboardHubAppLink:K.getPartnerDashboardHubAppLink,getLibraryAppLink:c(n.ViewLibraries)?K.getLibraryAppLink:null,getFolderAppLink:c(n.ViewLibraries)?K.getFolderAppLink:null}),(0,V.jsx)(Oe,{height:368,curriculums:e.curriculums,canViewCurriculumLinks:e.featureAccess.canViewCurriculumLinks,headingRef:H,video:e.video,hasNewSearch:e.hasNewSearch}),(0,V.jsx)(Te,{headingRef:H,video:e.video,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.commonVideoProps.imageCdnUrl,getAppLink:q,analyticsData:{videoId:e.video.id,videoName:e.video.name},resourceThumbnailFallbackUrl:ie.Fallbacks.RESOURCE_THUMBNAIL,onDownloadClick:Be,resources:Q,downloadableResources:$,aboutResourcesAppLink:_.getAboutResourceAppLink()}),(0,V.jsx)(ye,{presentationSlug:e.presentationSlug,headingRef:H,video:e.video,interactives:e.interactives,analyticsData:{videoId:e.video.id,videoName:e.video.name},canViewInteractives:e.featureAccess.canViewInteractives,commonVideoProps:e.commonVideoProps}),(0,V.jsx)(N,{presentationSlug:e.presentationSlug,video:e.video,headingRef:H,clips:e.clips,canViewClips:e.featureAccess.canViewClips,audiences:e.audiences,analyticsData:{videoId:e.video.id,videoName:e.video.name},commonVideoProps:e.commonVideoProps}),B&&(0,V.jsx)(T,{video:e.video,currentUser:e.currentUser,headingRef:H,onLaunchImmersiveReader:J,onExitImmersiveReader:Y,getTagAppLink:K.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0,getPartnerProfileAppLink:K.getPartnerProfileAppLink,getPartnerDashboardHubAppLink:K.getPartnerDashboardHubAppLink,getLibraryAppLink:K.getLibraryAppLink,getFolderAppLink:K.getFolderAppLink}),e.shouldShowTranscript&&(0,V.jsx)(pe,{headingRef:H,video:e.video,subtitles:e.subtitles,vttSubtitles:e.vttSubtitles,chapters:e.chapters,onShowInVideo:Re,signUpLink:{action:m.SignUp.SIGN_UP,application:a.SIGN_UP},setStartTime:ze,isBot:e.isBot,isPaused:i,isAuthenticated:e.currentUser.isAuthenticated,playerApiUrl:e.playerApiUrl}),e.featureAccess.canViewCitations&&(0,V.jsx)(ge,{headingRef:H,media:e.video,contentRegion:e.currentUser.contentRegion,shareId:e.shareId,presentationSlug:e.presentationSlug}),(0,V.jsx)(he,{presentationSlug:e.presentationSlug,currentVideo:e.video,headingRef:H,commonVideoProps:e.commonVideoProps,relatedVideos:e.relatedVideos,currentUser:e.currentUser,getVideoAppLink:(t,n)=>_.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,V.jsx)(O,{isExpanded:L,setIsExpanded:z,toggleTheatreMode:null,items:W,activeId:b,setControlledId:I,analyticsData:{videoId:e.video.id,videoName:e.video.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!0,hasTranscription:e.hasTheatreMode,shouldShow:W.length>=3})]})]}),!p&&(0,V.jsx)(O,{isExpanded:L,setIsExpanded:z,toggleTheatreMode:e.hasTheatreMode?v:null,items:W,activeId:b,setControlledId:I,analyticsData:{videoId:e.video.id,videoName:e.video.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!1,hasTranscription:e.hasTheatreMode,shouldShow:W.length>=3})]})})}function W(e,t){let n=o(p.currentUser()),{canViewTranscript:r}=v({objectId:e,objectTypeId:l.Video}),i=o(t?f.sharedVideo(e,t):f.video(e)),a=r&&!!i.data?._curationTags?.value?.isClickViewCurated;return{shouldShowTranscript:a,shouldFetchTranscript:a&&!n.data?.isAuthenticated}}export{U as n,L as r,W as t};
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.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{l as ee,y as s,z as te}from"./NlCAcBdo.chunk.js";import{t as ne}from"./DGmmTRu72.chunk.js";import{t as c}from"./DZX1tZ-D2.chunk.js";import{t as l}from"./CVHQXNzi2.chunk.js";import{t as u}from"./DbSUQ2A12.chunk.js";import{t as d}from"./BrbeV-Gn2.chunk.js";import{t as f}from"./LoQS6GjP.chunk.js";import{t as p}from"./CqrjHjAN.chunk.js";import{t as m}from"./eoAypzU3.chunk.js";import{t as re}from"./CgCqPbjJ.chunk.js";import{t as ie}from"./7-GJWRH82.chunk.js";import{t as ae}from"./dLd5d3X22.chunk.js";import{t as oe}from"./B2INd6bh.chunk.js";import{t as h}from"./B3gsVN-_.chunk.js";import{i as se}from"./BxjzTnvL2.chunk.js";import{n as g,t as ce}from"./CpFtf-tI2.chunk.js";import{t as _}from"./DBkEQkKm2.chunk.js";import{t as v}from"./C1loT8MD2.chunk.js";import{r as y}from"./CsWeCs8U2.chunk.js";import{n as le}from"./xa4cS6Fq.chunk.js";import{t as b}from"./jAbfamoi.chunk.js";import{t as ue}from"./WvK58Ge12.chunk.js";import{t as x}from"./jAtAipGN.chunk.js";import"./BILyzh0I.chunk.js";import{t as de}from"./CvHvrB-t.chunk.js";import{l as fe}from"./BOJK8LI1.chunk.js";import{t as S}from"./DzgAvoez.chunk.js";import{n as C}from"./D6bsI9KZ.chunk.js";import{t as pe}from"./BbgQJe-T.chunk.js";import{t as w}from"./BPavmm8c.chunk.js";import{a as me,i as he,n as ge,t as _e}from"./Bf9r1ZoF2.chunk.js";import{_ as T,a as ve,c as E,d as D,f as O,g as k,h as A,i as j,l as M,m as N,n as P,o as F,p as ye,r as be,s as xe,t as Se,u as Ce}from"./VJQU9c4G2.chunk.js";import{n as we,t as Te}from"./B3p3SaM12.chunk.js";import{n as Ee,r as De}from"./BgOLbASl2.chunk.js";import{t as I}from"./DkxWaE9O.chunk.js";var L={chaptersAndSubtitles(e,t){let n={query:`subtitles[customer],chapters`,permissionFilterOption:u.StripMetadata,contentRegion:t};return{url:c.urlBuilder(`{gateway}/v1/objects/${e}`,n),publicUrl:c.urlBuilder(`/api/objects/${e}/subtitles`,n),key:`videos:${e}:subtitles:chapters:${u.StripMetadata}`,formatData:e=>({subtitles:e.subtitles.data,chapters:e.chapters.data})}},subtitleVtt(e,t){return{url:c.urlBuilder(`{player}/srt-to-vtt`,{url:e,fullSentences:!0}),publicUrl:c.urlBuilder(`/api/player/srt-to-vtt`,{url:e,fullSentences:!0}),key:`subtitle:${e}`,formatData:e=>({...t,vtt:e})}}},R=e(r()),z=b(),B={dropdown:`_dropdown_zu639_1`},V=i(),H=`shared.curriculumLinks`;function Oe(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,V.jsx)(V.Fragment,{}):(0,V.jsxs)(`section`,{id:w.CurriculumLinks,ref:t=>{t&&e.headingRef?.current&&e.headingRef.current.set(w.CurriculumLinks,t)},className:`play-page-section`,children:[(0,V.jsx)(`h2`,{className:`h4 me-2 h-100`,children:(0,V.jsx)(g,{namespace:H,phrase:`heading`})}),(0,V.jsx)(I,{availableCurriculums:n,onChangeCurriculum:a,selectedCurriculum:t,className:B.dropdown}),(0,V.jsx)(`div`,{className:`rounded border position-relative`,children:(0,V.jsx)(z.Scrollbars,{autoHeight:!0,autoHeightMax:e.height,children:(0,V.jsx)(`div`,{className:`p-3`,children:(0,V.jsx)(C,{curriculumLinks:e.curriculums.curriculumLinks,onChangeCurriculum:a,hasCompleted:e.curriculums.hasCompleted,mappedCurriculums:e.curriculums.mappedCurriculums,isFetching:e.curriculums.isFetching,getCodeAppLink:(t,n)=>e.hasNewSearch?x.getSearchAppLink(t,{[y]:n}):null,locationContext:s.PlayPage})})})})]})}var ke=`shared.play`;function U(e){let r=le(),i=r.playerRef.current?.isPaused?.(),o=r.playerRef?.current?.hasStarted?.(),{hasPermissions:c}=h(),u=ne(null),{canConsume:f}=d.getCanBeConsumed(e.video),p=F(e.hasTheatreMode,r),g=P(e.hasTheatreMode,r.mode,r.defaultDisplayMode);function v(e){e||y(!1),r.setDefaultDisplayMode?.(e?`theatre`:`normal`),r.playerRef?.current?.toggleTheatreMode?.(e)}function y(e){r.playerRef?.current?.toggleTranscript?.(e)}let{tableOfContentsActiveId:b,setTableOfContentsActiveId:x,controlledId:C,setControlledId:I,tableOfContentsExpanded:L,onToggleTableOfContents:z}=j(e.tableOfContentsId,e.hasTheatreMode,p),B=k(e.video)&&e.featureAccess.canViewGlance,{headingRef:H,headingElements:U}=be(B),W=U.map(t=>({id:t.id,name:Se.getSectionHeading(t.id,{clips:e.clips,interactives:e.interactives,resources:[...e.video.resources?.data??[],...e.video.links?.data??[]]})})),Ae=d.isVideoTypeArchived(e.video),je=c(n.StudentExperience);De({setActiveId:x,headingElements:U,controlledId:C,setControlledId:I}),Ee(U,C);let G=R.useRef(!1),K=se({settings:u,presentationSlug:e.presentationSlug}),q=K.getResourceAppLink(e.video.id,e.shareId,e.featureAccess.canViewResourceItems);M({resourcePopupId:e.resourcePopupId,resources:e.video.resources?.data,getResourceAppLink:q});function J(){G.current=!r?.playerRef?.current?.isPaused(),r?.playerRef?.current?.pause()}function Y(){G.current&&r?.playerRef?.current?.play()}let X={hasTheatreMode:e.hasTheatreMode,shouldShowSideTableOfContents:e.shouldShowSideTableOfContents,tableOfContentsExpanded:L,theatreMode:g},Me=xe(X),Ne=ve(X),Pe=r.mode===`picture-in-picture`||e.featureAccess.canViewPublicLayout&&!e.video._canBeConsumed.value,[,Z]=ae(re.PLAY_PAGE_CONTAINER_CLASS_NAME),Fe=e.commonVideoProps.getSubTextType?.(e.video),Ie=e.commonVideoProps.getSubTextAppLink(e.video),Q=we(e.video,c(n.StudentExperience)),$=Q.filter(ue.isResource);R.useEffect(()=>{Z(p?E.theatreModePlayPageContainer:``)},[p]),R.useEffect(()=>()=>Z(``),[]);function Le(){t.trigger({action:m.SignUp.SIGN_UP,application:a.SIGN_UP})}function Re(){if(!f)return Le();o||r.playerRef.current?.play(),y(!0),window.scrollTo({top:0,behavior:`smooth`})}function ze(e){r.playerRef.current?.currentTime(e)}function Be(){if($.length===1){de.downloadResource($[0],{videoId:e.video?.id,videoName:e.video.name},{location:s.PlayPage,actionType:te.Download,entity:ee.Resource});return}t.trigger({application:a.VIDEOS,action:m.Videos.RESOURCE_DOWNLOAD,args:[e.video?.id,e.shareId]})}return(0,V.jsx)(ce.Provider,{value:ke,children:(0,V.jsxs)(`div`,{className:`px-4 play-page-sections-container ${e.shouldShowSideTableOfContents?`row g-0`:``}`,children:[(0,V.jsxs)(`main`,{className:`${E.main} ${Me}`,children:[!!e.breadcrumbs?.length&&(0,V.jsx)(`div`,{className:`mb-2`,children:(0,V.jsx)(S,{breadcrumbs:e.breadcrumbs})}),(0,V.jsx)(_e,{restrictions:e.video._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.video.id,objectTypeId:l.Video,canManageVideoAccess:e.canManageVideoAccess}),Ae&&(0,V.jsx)(me,{typeId:e.video.typeId,hasStudentExperience:je}),(0,V.jsxs)(`section`,{id:w.Video,className:`mb-3 ${oe.GLOBAL_PLAYER_SELECTOR}`,ref:e=>{e&&H?.current&&H.current.set(w.Video,e)},children:[f&&(0,V.jsx)(fe,{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,V.jsx)(`div`,{className:Pe?``:`d-none`,children:(0,V.jsx)(Ce,{video:e.video,appLink:{application:a.SIGN_UP,action:m.SignUp.SIGN_UP},type:r.mode===`picture-in-picture`?`pip`:`public`})})]}),(0,V.jsxs)(`div`,{className:Ne,children:[(0,V.jsxs)(`div`,{className:g?`${E.theatreModeLeftContent}`:`w-100`,children:[(0,V.jsx)(D,{presentationSlug:e.presentationSlug,media:e.video,subTextType:Fe,subtextAppLink:Ie,yearGroups:e.commonVideoProps.yearGroups,audiences:e.audiences,featureAccess:e.featureAccess,shareId:e.shareId,showTitlePadlock:!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience}),B?(0,V.jsx)(A,{video:e.video,pointsOfInterest:e.pointsOfInterest,setStartTime:e=>r.playerRef.current?.currentTime(e),getTagAppLink:K.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:B}):(0,V.jsx)(T,{video:e.video,currentUser:e.currentUser,headingRef:H,onLaunchImmersiveReader:J,onExitImmersiveReader:Y,getTagAppLink:K.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,getPartnerProfileAppLink:K.getPartnerProfileAppLink,getPartnerDashboardHubAppLink:K.getPartnerDashboardHubAppLink,getLibraryAppLink:c(n.ViewLibraries)?K.getLibraryAppLink:null,getFolderAppLink:c(n.ViewLibraries)?K.getFolderAppLink:null}),(0,V.jsx)(Oe,{height:368,curriculums:e.curriculums,canViewCurriculumLinks:e.featureAccess.canViewCurriculumLinks,headingRef:H,video:e.video,hasNewSearch:e.hasNewSearch}),(0,V.jsx)(Te,{headingRef:H,video:e.video,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.commonVideoProps.imageCdnUrl,getAppLink:q,analyticsData:{videoId:e.video.id,videoName:e.video.name},resourceThumbnailFallbackUrl:ie.Fallbacks.RESOURCE_THUMBNAIL,onDownloadClick:Be,resources:Q,downloadableResources:$,aboutResourcesAppLink:_.getAboutResourceAppLink()}),(0,V.jsx)(ye,{presentationSlug:e.presentationSlug,headingRef:H,video:e.video,interactives:e.interactives,analyticsData:{videoId:e.video.id,videoName:e.video.name},canViewInteractives:e.featureAccess.canViewInteractives,commonVideoProps:e.commonVideoProps}),(0,V.jsx)(N,{presentationSlug:e.presentationSlug,video:e.video,headingRef:H,clips:e.clips,canViewClips:e.featureAccess.canViewClips,audiences:e.audiences,analyticsData:{videoId:e.video.id,videoName:e.video.name},commonVideoProps:e.commonVideoProps}),B&&(0,V.jsx)(T,{video:e.video,currentUser:e.currentUser,headingRef:H,onLaunchImmersiveReader:J,onExitImmersiveReader:Y,getTagAppLink:K.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0,getPartnerProfileAppLink:K.getPartnerProfileAppLink,getPartnerDashboardHubAppLink:K.getPartnerDashboardHubAppLink,getLibraryAppLink:K.getLibraryAppLink,getFolderAppLink:K.getFolderAppLink}),e.shouldShowTranscript&&(0,V.jsx)(pe,{headingRef:H,video:e.video,subtitles:e.subtitles,vttSubtitles:e.vttSubtitles,chapters:e.chapters,onShowInVideo:Re,signUpLink:{action:m.SignUp.SIGN_UP,application:a.SIGN_UP},setStartTime:ze,isBot:e.isBot,isPaused:i,isAuthenticated:e.currentUser.isAuthenticated,playerApiUrl:e.playerApiUrl}),e.featureAccess.canViewCitations&&(0,V.jsx)(ge,{headingRef:H,media:e.video,contentRegion:e.currentUser.contentRegion,shareId:e.shareId,presentationSlug:e.presentationSlug}),(0,V.jsx)(he,{presentationSlug:e.presentationSlug,currentVideo:e.video,headingRef:H,commonVideoProps:e.commonVideoProps,relatedVideos:e.relatedVideos,currentUser:e.currentUser,getVideoAppLink:(t,n)=>_.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,V.jsx)(O,{isExpanded:L,setIsExpanded:z,toggleTheatreMode:null,items:W,activeId:b,setControlledId:I,analyticsData:{videoId:e.video.id,videoName:e.video.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!0,hasTranscription:e.hasTheatreMode,shouldShow:W.length>=3})]})]}),!p&&(0,V.jsx)(O,{isExpanded:L,setIsExpanded:z,toggleTheatreMode:e.hasTheatreMode?v:null,items:W,activeId:b,setControlledId:I,analyticsData:{videoId:e.video.id,videoName:e.video.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!1,hasTranscription:e.hasTheatreMode,shouldShow:W.length>=3})]})})}function W(e,t){let n=o(p.currentUser()),{canViewTranscript:r}=v({objectId:e,objectTypeId:l.Video}),i=o(t?f.sharedVideo(e,t):f.video(e)),a=r&&!!i.data?._curationTags?.value?.isClickViewCurated;return{shouldShowTranscript:a,shouldFetchTranscript:a&&!n.data?.isAuthenticated}}export{U as n,L as r,W as t};
|
|
2
|
+
//# sourceMappingURL=ft2cSH-j.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uSXjtjlJ.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 { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\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 { getResources, 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 { DownloadHelper } from 'libs/shared/utils/DownloadHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\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 { 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 { 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 const resources = getResources(props.video, hasPermissions(PermissionName.StudentExperience));\n const downloadableResources = resources.filter(MasterTypeHelper.isResource);\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 function onDownloadClick() {\n if (downloadableResources.length === 1) {\n DownloadHelper.downloadResource(\n downloadableResources[0],\n { videoId: props.video?.id, videoName: props.video.name },\n { location: LocationContext.PlayPage, actionType: UserAction.Download, entity: EntityType.Resource }\n );\n return;\n }\n \n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.RESOURCE_DOWNLOAD,\n args: [ props.video?.id, props.shareId ]\n });\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 onDownloadClick={onDownloadClick}\n resources={resources}\n downloadableResources={downloadableResources}\n aboutResourcesAppLink={VideoAppLinkHelper.getAboutResourceAppLink()}\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
|
+
{"version":3,"file":"ft2cSH-j.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 { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\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 { getResources, 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 { DownloadHelper } from 'libs/shared/utils/DownloadHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\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 { 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 { 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 const resources = getResources(props.video, hasPermissions(PermissionName.StudentExperience));\n const downloadableResources = resources.filter(MasterTypeHelper.isResource);\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 function onDownloadClick() {\n if (downloadableResources.length === 1) {\n DownloadHelper.downloadResource(\n downloadableResources[0],\n { videoId: props.video?.id, videoName: props.video.name },\n { location: LocationContext.PlayPage, actionType: UserAction.Download, entity: EntityType.Resource }\n );\n return;\n }\n \n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.RESOURCE_DOWNLOAD,\n args: [ props.video?.id, props.shareId ]\n });\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 onDownloadClick={onDownloadClick}\n resources={resources}\n downloadableResources={downloadableResources}\n aboutResourcesAppLink={VideoAppLinkHelper.getAboutResourceAppLink()}\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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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{t as n}from"./e57H3T-k.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./BXTI9cmX.chunk.js";import{n as a}from"./BVnMI-dl.chunk.js";import{t as o}from"./C1SLt-ar.chunk.js";import{U as s,d as c,z as l}from"./NlCAcBdo.chunk.js";import{t as u}from"./1LRpIhCn.chunk.js";import{n as d}from"./DTGfiG8Y.chunk.js";import{t as f}from"./eoAypzU3.chunk.js";import{t as p}from"./7-GJWRH82.chunk.js";import{t as m}from"./DpCWroEe2.chunk.js";import{t as h}from"./DYDxLHiV2.chunk.js";import{t as g}from"./DBkEQkKm2.chunk.js";import{t as _}from"./BUoougrH.chunk.js";import{t as v}from"./CzuHD4Ht.chunk.js";import{n as y,o as b,t as x}from"./CsWeCs8U2.chunk.js";import{t as S}from"./BwelEZs92.chunk.js";import{t as C}from"./HT_TXzUd2.chunk.js";import{t as w}from"./DFIgRAfX2.chunk.js";import{t as T}from"./DBHDBu1Y.chunk.js";import{t as E}from"./ryLD1Tv-.chunk.js";var D=e(r(),1),O={getCompanyAppLink(e,t){return{application:i.MOVIES_AND_TV,action:f.MoviesAndTv.COMPANY_DASHBOARD,args:[t,e.id,n.slugify(e.name)]}},getClassificationAppLink(e,t,n){return _.getAppLink(e,t?{moviesAndTv:!0}:{},n)},getCollectionActions(e,t,n,r){return t?[{svg:E,appLink:{application:i.SHARE,action:f.Share.SHARE,args:[e.id],params:{entityType:n}},analyticsData:{id:e.id},analyticsOptions:{...r,actionType:l.Share,workflowPhase:s.Start,eventVersion:c.V3},button:!0}]:[]},getSeriesAppLink(e,t,n){return h.getSeriesAppLink(e,t?{mtv:!0}:{},n)},getPlaylistAppLink(e,t,r){return{application:i.PLAYLISTS,action:f.Playlists.PLAYLIST,args:[r,e.id,n.slugify(e.name)],params:t?{mtv:!0}:null}},getAppLinks(e,t,n,r){return{getVideoAppLink:(e,t)=>g.getAppLink(e,{...t,moviesAndTv:n},r),getPlaylistAppLink:e=>O.getPlaylistAppLink(e,n,r),getSeriesAppLink:e=>O.getSeriesAppLink(e,n,r),getCompanyAppLink:n=>{let r=u.getPresentationSlugByCompany(n,e,t);return O.getCompanyAppLink(n,r)},getClassificationAppLink:e=>O.getClassificationAppLink(e,n,t),getPreviewQuestionsAppLink:e=>v.getPreviewQuestionsAppLink(e),getCollectionActions:O.getCollectionActions,searchSettings:{application:i.SETTINGS,action:f.Settings.PLATFORM_SETTINGS}}},isSearchAppLink(e){return e.application===i.SEARCH&&e.action===f.Search.HOME},useReferrerAppLink(){let e={application:i.DASHBOARD,action:f.Dashboard.HOME,args:[null]},[t,n]=D.useState(e),r=m.getCurrentRoute();return D.useEffect(()=>{O.isSearchAppLink(r.appLink)||n(r.appLink)},[r.appLink.application,r.appLink.action]),t},useOnFilterChange(e,t){let n={...t};delete n.query;let r=Object.keys(n).map(e=>n[e]).sort((e,t)=>e-t);D.useEffect(()=>{e()},[r.join(`:`)])},triggerAppLink(e,r={},o){let s={};r=o?a.omit(r,[`query`]):{},e&&(s.query=n.removeExtraSpace(e)),Object.keys(r).length&&(s={...s,...r}),t.trigger({application:i.SEARCH,action:f.Search.HOME,params:s},{replace:o})},getInitialQuery(){let e=m.getCurrentRoute().appLink;return O.isSearchAppLink(e)?e.params?.query??``:``},isValidSearch(e,t){if(e?.trim())return!0;if(!O.isSearchAppLink(t))return!1;let n=t?.params?.tagOrClassification,r=t?.params?.rating,i=t?.params?.moviesAndTv,a=t?.params?.source,o=t?.params?.scopeId;return Array.isArray(n)?!!n.length:!!n?.length||!!r?.length||!!i?.length||!!a?.length||!!o?.length},getFirstSeries(e){return o.first(e.items)},getFirstPlaylist(e){return o.first(e.items)},getVideoAppLink(e,t){return{application:i.VIDEOS,action:f.Videos.PLAY_VIDEO,args:[t,e.id,n.slugify(e.name)]}},getQuery(e){return e.query?e.query:e.tagOrClassification?(Array.isArray(e.tagOrClassification)?e.tagOrClassification:[e.tagOrClassification]).join(` `):``},getInaccessibleIndices(e){let{isLearner:t,queryParams:n,hasMoviesAndTv:r}=e,i=[];return(t||n.moviesAndTv)&&(i.push(`clip`),i.push(`interactive`)),r||i.push(`company`),i},getFilters(e){let{data:t,inaccessibleIndices:n,tagsAndClassifications:r,_hasNewSearch:i,_hasPartnerProfiles:a,hasCVFilters:o}=e;if(!t.hasDataLoaded||!i&&r&&!r.hasCompleted)return null;let{moviesAndTvDashboard:s,ratings:c,yearGroups:l,userDetails:u,schoolLevels:d,availableTopics:f,libraries:m,currentUser:h,isLearner:g,hasCustomLibraries:_,hasMoviesAndTv:v,isGuest:S,showStreamableSearchResults:T}=t,E=C.IS_XMAS?y.MoviesAndTv(p.MoviesAndTv.XMAS_SOCK,p.MoviesAndTv.XMAS_GIFTS):y.MoviesAndTv(p.MoviesAndTv.POPCORN_BOX,p.MoviesAndTv.POPCORN_BITS),D=C.IS_XMAS?y.MoviesAndTv(p.MoviesAndTv.POPCORN_BOX,p.MoviesAndTv.POPCORN_BITS):null,O=[];o?(v&&s.data?.id?O.push(E):O.push(D),h.data?.isAuthenticated&&O.push(y.Source(b.getOptions({libraries:m,isLearner:g,isGuest:S,hasCustomLibraries:_,liveStreams:T}))),S||O.push(y.Rating(c.data,l.data&&u.data&&w.getStudentMaxRating(l.data,u.data))),O.push(y.HasResources()),O.push(y.ObjectTypes(n,i,a)),i||O.push(y.TagOrClassification(r.data))):h.data?.isAuthenticated&&O.push(y.Source(b.getOptions({libraries:m,isLearner:g,isGuest:S,hasCustomLibraries:_,hideCVLibrary:!0,liveStreams:T})));let k=y.Presentation(d.data?.schoolLevels,i);x.showPresentationFilter(k)&&O.unshift(k);let A=y.Topics(f.data?.topics.map(e=>({name:e.name,id:e.topicIds.join(`:`)})));A.options&&A.options.length>1&&O.unshift(A);let j=[y.ProductionYear(),y.HasSubtitles(),y.IsHD()];return o&&j.push(y.IsClickViewContent()),j.push(y.Duration()),{mainFilters:O.filter(Boolean),moreFilters:x.getMoreFilters(j)}},getSearchAppLink(e,t){return{application:i.SEARCH,action:f.Search.HOME,params:{...t,query:e}}},getBackendFilters(e){if(!e.hasDataLoaded)return null;let{queryParams:t,ratings:n,currentPresentationId:r,isLearner:i,libraries:a,hasMoviesAndTv:o,streamableLibraryId:s,exchangeLibraryId:c,showExchangeSearchResults:l,showStreamableSearchResults:u}=e,d=x.buildBackendFilterParams(t,n.data,[r],i,a,s),f=`${S.FILTER_PARAM_PREFIX}excludeLibraryExclusive`,p=[];s&&!u&&p.push(s),c&&!l&&p.push(c),d[f]=p;let m=O.getInaccessibleIndices({isLearner:i,hasMoviesAndTv:o,queryParams:t});return{queryParams:t,backendFilters:d,appliedIndices:x.getAppliedIndices(e.queryParams).filter(e=>e!==`classification`&&e!==`company`).filter(e=>!m.find(t=>t===e)),inaccessibleIndices:m}},getBackendFiltersV2(e){if(!e.hasDataLoaded)return null;let{queryParams:t,ratings:n,isLearner:r,libraries:i,hasMoviesAndTv:a,streamableLibraryId:o,exchangeLibraryId:s,showExchangeSearchResults:c,availablePresentations:l,showStreamableSearchResults:u}=e,f=x.buildBackendFilterParams(t,n.data,l?.map(e=>e.id),r,i,o),p=[];o&&!u&&p.push(o),s&&!c&&p.push(s);let m=O.getInaccessibleIndices({isLearner:r,hasMoviesAndTv:a,queryParams:t}),h=`${S.FILTER_PARAM_PREFIX}indicesFilters`,g=x.getAppliedIndices(e.queryParams,!0,e.settings.hasPartnerProfiles).filter(e=>!m.find(t=>t===e)),_=l?.map(e=>e.id);return f[h]=g.map(e=>{let t={index:e};if(e===`video`&&p.length)return{...t,filters:{excludeLibraryExclusive:[...p]}};if(e===`classification`){let e={...t,filters:{classificationType:d.Subject,status:[T.Published,T.ComingSoon]}};return l?.length&&(e.filters.presentation=_),e}return e===`company`?{...t,filters:{presentation:_}}:t}),{queryParams:t,backendFilters:f,appliedIndices:g,inaccessibleIndices:m}}};export{O as t};
|
|
2
|
+
//# sourceMappingURL=jAtAipGN.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CpsbRDII.chunk.js","names":[],"sources":["../../src/apps/search/utils/SearchHelper.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsOptions, EventVersion, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { MixedSearchResultAppLinks } from 'libs/shared/apps/search/components/mixed-search-results/MixedSearchResults';\nimport { FilterConstants } from 'libs/shared/apps/search/constants/FilterConstants';\nimport { FilterOption, SearchIndices, SearchResultsObject, TopicResults } from 'libs/shared/apps/search/interfaces';\nimport { FilterHelper, Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { RatingFilterHelper } from 'libs/shared/apps/search/utils/RatingFilterHelper';\nimport { ResultGrouping } from 'libs/shared/apps/search/utils/SharedSearchHelper';\nimport { SourceFilterHelper } from 'libs/shared/apps/search/utils/SourceFilterHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { XmasConstants } from 'libs/shared/constants/XmasConstants';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { ShareSvg } from 'libs/shared/images/svg/actions/ShareSvg';\nimport { Classification, Company, CuratedDashboard, CurrentUser, Library, Playlist, Presentation, Rating, SchoolLevels, Series, User, Video, YearGroup } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ClassificationAppLinkHelper } from 'shared/utils/ClassificationAppLinkHelper';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { LitePresentationHelper } from 'shared/utils/LitePresentationHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\ninterface GetFiltersOptions {\n data: {\n isLearner: boolean,\n moviesAndTvDashboard: Flight.Response<CuratedDashboard>,\n ratings: Flight.Response<Rating[]>,\n yearGroups: Flight.Response<YearGroup[]>,\n userDetails: Flight.Response<User>,\n schoolLevels: Flight.Response<SchoolLevels>,\n availableTopics: Flight.Response<TopicResults>,\n libraries: Library[],\n currentUser: Flight.Response<CurrentUser>,\n hasDataLoaded: boolean,\n hasCustomLibraries: boolean,\n hasMoviesAndTv: boolean,\n isGuest: boolean,\n showStreamableSearchResults: boolean\n };\n inaccessibleIndices: SearchIndices[];\n tagsAndClassifications?: Flight.Response<string[]>;\n hasCVFilters?: boolean;\n /**\n * Incremental changes flag for search v2\n */\n _hasNewSearch?: boolean;\n \n _hasPartnerProfiles?: boolean;\n}\n\nexport const SearchHelper = {\n getCompanyAppLink(company: Company, presentationSlug: string | null): Core.AppLink {\n return {\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.COMPANY_DASHBOARD,\n args: [ presentationSlug, company.id, TextHelper.slugify(company.name) ]\n };\n },\n\n getClassificationAppLink(\n classification: Classification,\n moviesAndTv: boolean,\n availablePresentations: Presentation[]\n ): Core.AppLink {\n return ClassificationAppLinkHelper.getAppLink(\n classification,\n moviesAndTv ? { moviesAndTv: true } : {},\n availablePresentations\n );\n },\n\n getCollectionActions(\n collection: Series | Playlist,\n showActions: boolean,\n collectionType: 'series' | 'playlist',\n baseAnalyticsOptions: AnalyticsOptions\n ): ActionOptions[] {\n if (!showActions)\n return [];\n \n return [{\n svg: ShareSvg,\n appLink: {\n application: AppChannels.SHARE,\n action: Actions.Share.SHARE,\n args: [collection.id],\n params: { entityType: collectionType }\n },\n analyticsData: { id: collection.id },\n analyticsOptions: {\n ...baseAnalyticsOptions,\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Start,\n eventVersion: EventVersion.V3\n },\n button: true\n }];\n },\n\n getSeriesAppLink(series: Series, moviesAndTv: boolean, presentationSlug: string | null): Core.AppLink {\n return SeriesAppLinkHelper.getSeriesAppLink(series, moviesAndTv ? { mtv: true } : {}, presentationSlug);\n },\n\n getPlaylistAppLink(playlist: Playlist, moviesAndTv: boolean, presentationSlug: string | null): Core.AppLink {\n return {\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ presentationSlug, playlist.id, TextHelper.slugify(playlist.name) ],\n params: moviesAndTv ? { mtv: true } : null\n };\n },\n\n getAppLinks(\n presentation: Presentation,\n availablePresentations: Presentation[],\n moviesAndTv: boolean,\n presentationSlug: string | null\n ): MixedSearchResultAppLinks {\n return {\n getVideoAppLink: (video, opts: GetVideoAppLinkOptions) =>\n VideoAppLinkHelper.getAppLink(video, { ...opts, moviesAndTv }, presentationSlug),\n getPlaylistAppLink: playlist => SearchHelper.getPlaylistAppLink(playlist, moviesAndTv, presentationSlug),\n getSeriesAppLink: series => SearchHelper.getSeriesAppLink(series, moviesAndTv, presentationSlug),\n getCompanyAppLink: company => {\n const slug = LitePresentationHelper.getPresentationSlugByCompany(\n company,\n presentation,\n availablePresentations\n );\n return SearchHelper.getCompanyAppLink(company, slug);\n },\n getClassificationAppLink:\n classification => SearchHelper.getClassificationAppLink(classification, moviesAndTv, availablePresentations),\n getPreviewQuestionsAppLink: interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive),\n getCollectionActions: SearchHelper.getCollectionActions,\n searchSettings: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.PLATFORM_SETTINGS\n }\n };\n },\n\n isSearchAppLink(currentAppLink: Core.AppLink): boolean {\n return currentAppLink.application === AppChannels.SEARCH && currentAppLink.action === Actions.Search.HOME;\n },\n\n useReferrerAppLink(): Core.AppLink {\n const defaultReferrerAppLink: Core.AppLink = {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME,\n args: [null as string]\n };\n \n const [ referrerApplink, setReferrerAppLink ] = React.useState<Core.AppLink>(defaultReferrerAppLink);\n \n const currentRoute = ContextService.getCurrentRoute();\n \n React.useEffect(() => {\n if (SearchHelper.isSearchAppLink(currentRoute.appLink))\n return;\n\n setReferrerAppLink(currentRoute.appLink);\n }, [ currentRoute.appLink.application, currentRoute.appLink.action ]);\n \n return referrerApplink;\n },\n\n useOnFilterChange(fetchResults: (cursor?: string) => void, queryParams: HashObject): void {\n const params = { ...queryParams };\n delete params.query;\n\n const sortedValues = Object.keys(params).map(filterName => params[filterName]).sort((a, b) => a - b);\n\n React.useEffect(() => {\n fetchResults();\n }, [sortedValues.join(':')]);\n },\n\n triggerAppLink(query: string, otherQueryParams: HashObject = {}, isOnSearchPage: boolean): void {\n let params: HashObject = {};\n\n otherQueryParams = isOnSearchPage ? ObjectHelper.omit(otherQueryParams, ['query']) : {};\n\n if (query)\n params.query = TextHelper.removeExtraSpace(query);\n\n if (Object.keys(otherQueryParams).length) {\n params = {\n ...params,\n ...otherQueryParams\n };\n }\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params\n }, { replace: isOnSearchPage });\n },\n\n getInitialQuery(): string {\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n \n if (!SearchHelper.isSearchAppLink(currentAppLink))\n return '';\n \n return (currentAppLink.params as HashObject)?.query ?? '';\n },\n\n isValidSearch(query: string, currentAppLink: Core.AppLink): boolean {\n if (query?.trim())\n return true;\n\n if (!SearchHelper.isSearchAppLink(currentAppLink))\n return false;\n\n // If there's no search query, but a tag/topic filter is applied, the search is still valid\n const tagOrClassificationParam = (currentAppLink?.params as HashObject)?.tagOrClassification;\n const ratingParam = (currentAppLink?.params as HashObject)?.rating;\n const moviesAndTvParam = (currentAppLink?.params as HashObject)?.moviesAndTv;\n const source = (currentAppLink?.params as HashObject)?.source;\n const scopeId = (currentAppLink?.params as HashObject)?.scopeId;\n\n if (Array.isArray(tagOrClassificationParam))\n return !!tagOrClassificationParam.length;\n\n return (\n !!tagOrClassificationParam?.length ||\n !!ratingParam?.length ||\n !!moviesAndTvParam?.length ||\n !!source?.length ||\n !!scopeId?.length\n );\n },\n \n getFirstSeries(grouping: ResultGrouping) {\n return ArrayHelper.first(grouping.items) as SearchResultsObject<Series>;\n },\n\n getFirstPlaylist(grouping: ResultGrouping) {\n return ArrayHelper.first(grouping.items) as SearchResultsObject<Playlist>;\n },\n\n getVideoAppLink(video: Video, presentationSlug: string | null) {\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ presentationSlug, video.id, TextHelper.slugify(video.name) ]\n };\n },\n\n /**\n * Companies and Classifications cannot be filtered well by tags.\n * This is especially evident when a user has searched for only a tag,\n * but has passed no query string. In this case, we populate the `query`\n * param with the names of the selected tags.\n */\n getQuery(queryParams: HashObject): string {\n if (queryParams.query)\n return queryParams.query;\n\n if (!queryParams.tagOrClassification)\n return '';\n\n const tagOrClassificationFilter = Array.isArray(queryParams.tagOrClassification) ?\n queryParams.tagOrClassification :\n [queryParams.tagOrClassification];\n\n return tagOrClassificationFilter.join(' ');\n },\n\n getInaccessibleIndices(options: {\n isLearner: boolean,\n queryParams: HashObject,\n hasMoviesAndTv: boolean\n }): SearchIndices[] {\n const { isLearner, queryParams, hasMoviesAndTv } = options;\n \n const inaccessible: SearchIndices[] = [];\n \n if (isLearner || queryParams.moviesAndTv) {\n inaccessible.push('clip');\n inaccessible.push('interactive');\n }\n \n if (!hasMoviesAndTv)\n inaccessible.push('company');\n \n return inaccessible;\n },\n\n getFilters(options: GetFiltersOptions) {\n const {\n data,\n inaccessibleIndices,\n tagsAndClassifications,\n _hasNewSearch,\n _hasPartnerProfiles,\n hasCVFilters\n } = options;\n \n if (!data.hasDataLoaded || (!_hasNewSearch && tagsAndClassifications && !tagsAndClassifications.hasCompleted))\n return null;\n\n const {\n moviesAndTvDashboard,\n ratings,\n yearGroups,\n userDetails,\n schoolLevels,\n availableTopics,\n libraries,\n currentUser,\n isLearner,\n hasCustomLibraries,\n hasMoviesAndTv,\n isGuest,\n showStreamableSearchResults\n } = data;\n\n const mtvOnFilter = XmasConstants.IS_XMAS ?\n Filters.MoviesAndTv(ImageUrls.MoviesAndTv.XMAS_SOCK, ImageUrls.MoviesAndTv.XMAS_GIFTS) :\n Filters.MoviesAndTv(ImageUrls.MoviesAndTv.POPCORN_BOX, ImageUrls.MoviesAndTv.POPCORN_BITS);\n\n const mtvOffFilter = XmasConstants.IS_XMAS ?\n Filters.MoviesAndTv(ImageUrls.MoviesAndTv.POPCORN_BOX, ImageUrls.MoviesAndTv.POPCORN_BITS) :\n null;\n\n const mainFilters = [];\n\n if (hasCVFilters) {\n if (hasMoviesAndTv && moviesAndTvDashboard.data?.id) {\n mainFilters.push(mtvOnFilter);\n } else {\n mainFilters.push(mtvOffFilter);\n }\n\n if (currentUser.data?.isAuthenticated) {\n mainFilters.push(Filters.Source(SourceFilterHelper.getOptions({\n libraries,\n isLearner,\n isGuest,\n hasCustomLibraries,\n liveStreams: showStreamableSearchResults\n })));\n }\n\n if (!isGuest) {\n mainFilters.push(Filters.Rating(\n ratings.data,\n yearGroups.data && userDetails.data &&\n RatingFilterHelper.getStudentMaxRating(yearGroups.data, userDetails.data)\n ));\n }\n\n mainFilters.push(Filters.HasResources());\n mainFilters.push(Filters.ObjectTypes(inaccessibleIndices, _hasNewSearch, _hasPartnerProfiles));\n \n if (!_hasNewSearch) {\n mainFilters.push(Filters.TagOrClassification(tagsAndClassifications.data));\n }\n } else {\n if (currentUser.data?.isAuthenticated) {\n mainFilters.push(Filters.Source(SourceFilterHelper.getOptions({\n libraries,\n isLearner,\n isGuest,\n hasCustomLibraries,\n hideCVLibrary: true,\n liveStreams: showStreamableSearchResults\n })));\n }\n }\n \n const presentationFilter = Filters.Presentation(schoolLevels.data?.schoolLevels, _hasNewSearch);\n const showPresentationFilter = FilterHelper.showPresentationFilter(presentationFilter);\n \n if (showPresentationFilter) {\n mainFilters.unshift(presentationFilter);\n }\n \n const topicsFilter = Filters.Topics(\n availableTopics.data?.topics.map(t => ({ name: t.name, id: t.topicIds.join(':') })) as FilterOption[]\n );\n \n if (topicsFilter.options && topicsFilter.options.length > 1)\n mainFilters.unshift(topicsFilter);\n \n const moreFilters = [\n Filters.ProductionYear(),\n Filters.HasSubtitles(),\n Filters.IsHD()\n ];\n \n if (hasCVFilters)\n moreFilters.push(Filters.IsClickViewContent());\n\n moreFilters.push(Filters.Duration());\n \n return {\n mainFilters: mainFilters.filter(Boolean),\n moreFilters: FilterHelper.getMoreFilters(moreFilters)\n };\n },\n\n getSearchAppLink(query: string, queryParams: HashObject): Core.AppLink {\n return {\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n ...queryParams,\n query\n }\n };\n },\n\n getBackendFilters(options: {\n queryParams: HashObject,\n ratings: Flight.Response<Rating[]>,\n currentPresentationId: string,\n isLearner: boolean,\n hasDataLoaded: boolean,\n libraries: Library[],\n settings: SettingsHash,\n streamableLibraryId: string,\n exchangeLibraryId: string,\n showExchangeSearchResults: boolean,\n hasMoviesAndTv: boolean,\n showStreamableSearchResults: boolean\n }) {\n if (!options.hasDataLoaded)\n return null;\n\n const {\n queryParams,\n ratings,\n currentPresentationId,\n isLearner,\n libraries,\n hasMoviesAndTv,\n streamableLibraryId,\n exchangeLibraryId,\n showExchangeSearchResults,\n showStreamableSearchResults\n } = options;\n \n const backendFilters = FilterHelper.buildBackendFilterParams(\n queryParams,\n ratings.data,\n [currentPresentationId],\n isLearner,\n libraries,\n streamableLibraryId\n );\n\n const excludeLibraryFilter = `${FilterConstants.FILTER_PARAM_PREFIX}excludeLibraryExclusive`;\n const excludeLibraryIds = [];\n\n if (streamableLibraryId && !showStreamableSearchResults) {\n excludeLibraryIds.push(streamableLibraryId);\n }\n\n if (exchangeLibraryId && !showExchangeSearchResults) {\n excludeLibraryIds.push(exchangeLibraryId);\n }\n\n backendFilters[excludeLibraryFilter] = excludeLibraryIds;\n \n const inaccessibleIndices = SearchHelper.getInaccessibleIndices({\n isLearner,\n hasMoviesAndTv,\n queryParams\n });\n \n // Topic search is done separately using `useSearchTopics()`\n // Company search is done separately using `useSearchCompanies()`\n const appliedIndices = FilterHelper.getAppliedIndices(options.queryParams)\n .filter(i => i !== 'classification' && i !== 'company')\n .filter(index => !inaccessibleIndices.find(i => i === index));\n\n return {\n queryParams,\n backendFilters,\n appliedIndices,\n inaccessibleIndices\n };\n },\n\n getBackendFiltersV2(options: {\n queryParams: HashObject,\n ratings: Flight.Response<Rating[]>,\n currentPresentationId: string,\n isLearner: boolean,\n hasDataLoaded: boolean,\n libraries: Library[],\n settings: SettingsHash,\n streamableLibraryId: string,\n exchangeLibraryId: string,\n showExchangeSearchResults: boolean,\n hasMoviesAndTv: boolean,\n availablePresentations: Presentation[],\n showStreamableSearchResults: boolean\n }) {\n if (!options.hasDataLoaded)\n return null;\n\n const {\n queryParams,\n ratings,\n isLearner,\n libraries,\n hasMoviesAndTv,\n streamableLibraryId,\n exchangeLibraryId,\n showExchangeSearchResults,\n availablePresentations,\n showStreamableSearchResults\n } = options;\n\n const backendFilters = FilterHelper.buildBackendFilterParams(\n queryParams,\n ratings.data,\n availablePresentations?.map(p => p.id),\n isLearner,\n libraries,\n streamableLibraryId\n );\n \n const excludeLibraryIds: string[] = [];\n if (streamableLibraryId && !showStreamableSearchResults) {\n excludeLibraryIds.push(streamableLibraryId);\n }\n\n if (exchangeLibraryId && !showExchangeSearchResults) {\n excludeLibraryIds.push(exchangeLibraryId);\n }\n\n const inaccessibleIndices = SearchHelper.getInaccessibleIndices({\n isLearner,\n hasMoviesAndTv,\n queryParams\n });\n\n const indicesFilter = `${FilterConstants.FILTER_PARAM_PREFIX}indicesFilters`;\n\n const appliedIndices = FilterHelper.getAppliedIndices(\n options.queryParams,\n true,\n options.settings.hasPartnerProfiles\n ).filter(index => !inaccessibleIndices.find(i => i === index));\n\n const availablePresentationIds = availablePresentations?.map(p => p.id);\n\n const indicesWithFilters: HashObject[] = appliedIndices.map(index => {\n const indiceFilter = { index };\n \n if (index === 'video' && excludeLibraryIds.length) {\n const indice: HashObject = {\n ...indiceFilter,\n filters: {\n excludeLibraryExclusive: [...excludeLibraryIds]\n }\n };\n\n return indice;\n }\n\n if (index === 'classification') {\n const indice: HashObject = {\n ...indiceFilter,\n filters: {\n classificationType: ClassificationType.Subject,\n status: [ ClassificationStatus.Published, ClassificationStatus.ComingSoon ]\n }\n };\n\n if (availablePresentations?.length) {\n indice.filters.presentation = availablePresentationIds;\n }\n\n return indice;\n }\n\n if (index === 'company') {\n const indice: HashObject = {\n ...indiceFilter,\n filters: {\n presentation: availablePresentationIds\n }\n };\n\n return indice;\n }\n\n return indiceFilter;\n });\n\n backendFilters[indicesFilter] = indicesWithFilters;\n \n return {\n queryParams,\n backendFilters,\n appliedIndices,\n inaccessibleIndices\n };\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jAtAipGN.chunk.js","names":[],"sources":["../../src/apps/search/utils/SearchHelper.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsOptions, EventVersion, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { MixedSearchResultAppLinks } from 'libs/shared/apps/search/components/mixed-search-results/MixedSearchResults';\nimport { FilterConstants } from 'libs/shared/apps/search/constants/FilterConstants';\nimport { FilterOption, SearchIndices, SearchResultsObject, TopicResults } from 'libs/shared/apps/search/interfaces';\nimport { FilterHelper, Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { RatingFilterHelper } from 'libs/shared/apps/search/utils/RatingFilterHelper';\nimport { ResultGrouping } from 'libs/shared/apps/search/utils/SharedSearchHelper';\nimport { SourceFilterHelper } from 'libs/shared/apps/search/utils/SourceFilterHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { XmasConstants } from 'libs/shared/constants/XmasConstants';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { ShareSvg } from 'libs/shared/images/svg/actions/ShareSvg';\nimport { Classification, Company, CuratedDashboard, CurrentUser, Library, Playlist, Presentation, Rating, SchoolLevels, Series, User, Video, YearGroup } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ClassificationAppLinkHelper } from 'shared/utils/ClassificationAppLinkHelper';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { LitePresentationHelper } from 'shared/utils/LitePresentationHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\ninterface GetFiltersOptions {\n data: {\n isLearner: boolean,\n moviesAndTvDashboard: Flight.Response<CuratedDashboard>,\n ratings: Flight.Response<Rating[]>,\n yearGroups: Flight.Response<YearGroup[]>,\n userDetails: Flight.Response<User>,\n schoolLevels: Flight.Response<SchoolLevels>,\n availableTopics: Flight.Response<TopicResults>,\n libraries: Library[],\n currentUser: Flight.Response<CurrentUser>,\n hasDataLoaded: boolean,\n hasCustomLibraries: boolean,\n hasMoviesAndTv: boolean,\n isGuest: boolean,\n showStreamableSearchResults: boolean\n };\n inaccessibleIndices: SearchIndices[];\n tagsAndClassifications?: Flight.Response<string[]>;\n hasCVFilters?: boolean;\n /**\n * Incremental changes flag for search v2\n */\n _hasNewSearch?: boolean;\n \n _hasPartnerProfiles?: boolean;\n}\n\nexport const SearchHelper = {\n getCompanyAppLink(company: Company, presentationSlug: string | null): Core.AppLink {\n return {\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.COMPANY_DASHBOARD,\n args: [ presentationSlug, company.id, TextHelper.slugify(company.name) ]\n };\n },\n\n getClassificationAppLink(\n classification: Classification,\n moviesAndTv: boolean,\n availablePresentations: Presentation[]\n ): Core.AppLink {\n return ClassificationAppLinkHelper.getAppLink(\n classification,\n moviesAndTv ? { moviesAndTv: true } : {},\n availablePresentations\n );\n },\n\n getCollectionActions(\n collection: Series | Playlist,\n showActions: boolean,\n collectionType: 'series' | 'playlist',\n baseAnalyticsOptions: AnalyticsOptions\n ): ActionOptions[] {\n if (!showActions)\n return [];\n \n return [{\n svg: ShareSvg,\n appLink: {\n application: AppChannels.SHARE,\n action: Actions.Share.SHARE,\n args: [collection.id],\n params: { entityType: collectionType }\n },\n analyticsData: { id: collection.id },\n analyticsOptions: {\n ...baseAnalyticsOptions,\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Start,\n eventVersion: EventVersion.V3\n },\n button: true\n }];\n },\n\n getSeriesAppLink(series: Series, moviesAndTv: boolean, presentationSlug: string | null): Core.AppLink {\n return SeriesAppLinkHelper.getSeriesAppLink(series, moviesAndTv ? { mtv: true } : {}, presentationSlug);\n },\n\n getPlaylistAppLink(playlist: Playlist, moviesAndTv: boolean, presentationSlug: string | null): Core.AppLink {\n return {\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ presentationSlug, playlist.id, TextHelper.slugify(playlist.name) ],\n params: moviesAndTv ? { mtv: true } : null\n };\n },\n\n getAppLinks(\n presentation: Presentation,\n availablePresentations: Presentation[],\n moviesAndTv: boolean,\n presentationSlug: string | null\n ): MixedSearchResultAppLinks {\n return {\n getVideoAppLink: (video, opts: GetVideoAppLinkOptions) =>\n VideoAppLinkHelper.getAppLink(video, { ...opts, moviesAndTv }, presentationSlug),\n getPlaylistAppLink: playlist => SearchHelper.getPlaylistAppLink(playlist, moviesAndTv, presentationSlug),\n getSeriesAppLink: series => SearchHelper.getSeriesAppLink(series, moviesAndTv, presentationSlug),\n getCompanyAppLink: company => {\n const slug = LitePresentationHelper.getPresentationSlugByCompany(\n company,\n presentation,\n availablePresentations\n );\n return SearchHelper.getCompanyAppLink(company, slug);\n },\n getClassificationAppLink:\n classification => SearchHelper.getClassificationAppLink(classification, moviesAndTv, availablePresentations),\n getPreviewQuestionsAppLink: interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive),\n getCollectionActions: SearchHelper.getCollectionActions,\n searchSettings: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.PLATFORM_SETTINGS\n }\n };\n },\n\n isSearchAppLink(currentAppLink: Core.AppLink): boolean {\n return currentAppLink.application === AppChannels.SEARCH && currentAppLink.action === Actions.Search.HOME;\n },\n\n useReferrerAppLink(): Core.AppLink {\n const defaultReferrerAppLink: Core.AppLink = {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME,\n args: [null as string]\n };\n \n const [ referrerApplink, setReferrerAppLink ] = React.useState<Core.AppLink>(defaultReferrerAppLink);\n \n const currentRoute = ContextService.getCurrentRoute();\n \n React.useEffect(() => {\n if (SearchHelper.isSearchAppLink(currentRoute.appLink))\n return;\n\n setReferrerAppLink(currentRoute.appLink);\n }, [ currentRoute.appLink.application, currentRoute.appLink.action ]);\n \n return referrerApplink;\n },\n\n useOnFilterChange(fetchResults: (cursor?: string) => void, queryParams: HashObject): void {\n const params = { ...queryParams };\n delete params.query;\n\n const sortedValues = Object.keys(params).map(filterName => params[filterName]).sort((a, b) => a - b);\n\n React.useEffect(() => {\n fetchResults();\n }, [sortedValues.join(':')]);\n },\n\n triggerAppLink(query: string, otherQueryParams: HashObject = {}, isOnSearchPage: boolean): void {\n let params: HashObject = {};\n\n otherQueryParams = isOnSearchPage ? ObjectHelper.omit(otherQueryParams, ['query']) : {};\n\n if (query)\n params.query = TextHelper.removeExtraSpace(query);\n\n if (Object.keys(otherQueryParams).length) {\n params = {\n ...params,\n ...otherQueryParams\n };\n }\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params\n }, { replace: isOnSearchPage });\n },\n\n getInitialQuery(): string {\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n \n if (!SearchHelper.isSearchAppLink(currentAppLink))\n return '';\n \n return (currentAppLink.params as HashObject)?.query ?? '';\n },\n\n isValidSearch(query: string, currentAppLink: Core.AppLink): boolean {\n if (query?.trim())\n return true;\n\n if (!SearchHelper.isSearchAppLink(currentAppLink))\n return false;\n\n // If there's no search query, but a tag/topic filter is applied, the search is still valid\n const tagOrClassificationParam = (currentAppLink?.params as HashObject)?.tagOrClassification;\n const ratingParam = (currentAppLink?.params as HashObject)?.rating;\n const moviesAndTvParam = (currentAppLink?.params as HashObject)?.moviesAndTv;\n const source = (currentAppLink?.params as HashObject)?.source;\n const scopeId = (currentAppLink?.params as HashObject)?.scopeId;\n\n if (Array.isArray(tagOrClassificationParam))\n return !!tagOrClassificationParam.length;\n\n return (\n !!tagOrClassificationParam?.length ||\n !!ratingParam?.length ||\n !!moviesAndTvParam?.length ||\n !!source?.length ||\n !!scopeId?.length\n );\n },\n \n getFirstSeries(grouping: ResultGrouping) {\n return ArrayHelper.first(grouping.items) as SearchResultsObject<Series>;\n },\n\n getFirstPlaylist(grouping: ResultGrouping) {\n return ArrayHelper.first(grouping.items) as SearchResultsObject<Playlist>;\n },\n\n getVideoAppLink(video: Video, presentationSlug: string | null) {\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ presentationSlug, video.id, TextHelper.slugify(video.name) ]\n };\n },\n\n /**\n * Companies and Classifications cannot be filtered well by tags.\n * This is especially evident when a user has searched for only a tag,\n * but has passed no query string. In this case, we populate the `query`\n * param with the names of the selected tags.\n */\n getQuery(queryParams: HashObject): string {\n if (queryParams.query)\n return queryParams.query;\n\n if (!queryParams.tagOrClassification)\n return '';\n\n const tagOrClassificationFilter = Array.isArray(queryParams.tagOrClassification) ?\n queryParams.tagOrClassification :\n [queryParams.tagOrClassification];\n\n return tagOrClassificationFilter.join(' ');\n },\n\n getInaccessibleIndices(options: {\n isLearner: boolean,\n queryParams: HashObject,\n hasMoviesAndTv: boolean\n }): SearchIndices[] {\n const { isLearner, queryParams, hasMoviesAndTv } = options;\n \n const inaccessible: SearchIndices[] = [];\n \n if (isLearner || queryParams.moviesAndTv) {\n inaccessible.push('clip');\n inaccessible.push('interactive');\n }\n \n if (!hasMoviesAndTv)\n inaccessible.push('company');\n \n return inaccessible;\n },\n\n getFilters(options: GetFiltersOptions) {\n const {\n data,\n inaccessibleIndices,\n tagsAndClassifications,\n _hasNewSearch,\n _hasPartnerProfiles,\n hasCVFilters\n } = options;\n \n if (!data.hasDataLoaded || (!_hasNewSearch && tagsAndClassifications && !tagsAndClassifications.hasCompleted))\n return null;\n\n const {\n moviesAndTvDashboard,\n ratings,\n yearGroups,\n userDetails,\n schoolLevels,\n availableTopics,\n libraries,\n currentUser,\n isLearner,\n hasCustomLibraries,\n hasMoviesAndTv,\n isGuest,\n showStreamableSearchResults\n } = data;\n\n const mtvOnFilter = XmasConstants.IS_XMAS ?\n Filters.MoviesAndTv(ImageUrls.MoviesAndTv.XMAS_SOCK, ImageUrls.MoviesAndTv.XMAS_GIFTS) :\n Filters.MoviesAndTv(ImageUrls.MoviesAndTv.POPCORN_BOX, ImageUrls.MoviesAndTv.POPCORN_BITS);\n\n const mtvOffFilter = XmasConstants.IS_XMAS ?\n Filters.MoviesAndTv(ImageUrls.MoviesAndTv.POPCORN_BOX, ImageUrls.MoviesAndTv.POPCORN_BITS) :\n null;\n\n const mainFilters = [];\n\n if (hasCVFilters) {\n if (hasMoviesAndTv && moviesAndTvDashboard.data?.id) {\n mainFilters.push(mtvOnFilter);\n } else {\n mainFilters.push(mtvOffFilter);\n }\n\n if (currentUser.data?.isAuthenticated) {\n mainFilters.push(Filters.Source(SourceFilterHelper.getOptions({\n libraries,\n isLearner,\n isGuest,\n hasCustomLibraries,\n liveStreams: showStreamableSearchResults\n })));\n }\n\n if (!isGuest) {\n mainFilters.push(Filters.Rating(\n ratings.data,\n yearGroups.data && userDetails.data &&\n RatingFilterHelper.getStudentMaxRating(yearGroups.data, userDetails.data)\n ));\n }\n\n mainFilters.push(Filters.HasResources());\n mainFilters.push(Filters.ObjectTypes(inaccessibleIndices, _hasNewSearch, _hasPartnerProfiles));\n \n if (!_hasNewSearch) {\n mainFilters.push(Filters.TagOrClassification(tagsAndClassifications.data));\n }\n } else {\n if (currentUser.data?.isAuthenticated) {\n mainFilters.push(Filters.Source(SourceFilterHelper.getOptions({\n libraries,\n isLearner,\n isGuest,\n hasCustomLibraries,\n hideCVLibrary: true,\n liveStreams: showStreamableSearchResults\n })));\n }\n }\n \n const presentationFilter = Filters.Presentation(schoolLevels.data?.schoolLevels, _hasNewSearch);\n const showPresentationFilter = FilterHelper.showPresentationFilter(presentationFilter);\n \n if (showPresentationFilter) {\n mainFilters.unshift(presentationFilter);\n }\n \n const topicsFilter = Filters.Topics(\n availableTopics.data?.topics.map(t => ({ name: t.name, id: t.topicIds.join(':') })) as FilterOption[]\n );\n \n if (topicsFilter.options && topicsFilter.options.length > 1)\n mainFilters.unshift(topicsFilter);\n \n const moreFilters = [\n Filters.ProductionYear(),\n Filters.HasSubtitles(),\n Filters.IsHD()\n ];\n \n if (hasCVFilters)\n moreFilters.push(Filters.IsClickViewContent());\n\n moreFilters.push(Filters.Duration());\n \n return {\n mainFilters: mainFilters.filter(Boolean),\n moreFilters: FilterHelper.getMoreFilters(moreFilters)\n };\n },\n\n getSearchAppLink(query: string, queryParams: HashObject): Core.AppLink {\n return {\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n ...queryParams,\n query\n }\n };\n },\n\n getBackendFilters(options: {\n queryParams: HashObject,\n ratings: Flight.Response<Rating[]>,\n currentPresentationId: string,\n isLearner: boolean,\n hasDataLoaded: boolean,\n libraries: Library[],\n settings: SettingsHash,\n streamableLibraryId: string,\n exchangeLibraryId: string,\n showExchangeSearchResults: boolean,\n hasMoviesAndTv: boolean,\n showStreamableSearchResults: boolean\n }) {\n if (!options.hasDataLoaded)\n return null;\n\n const {\n queryParams,\n ratings,\n currentPresentationId,\n isLearner,\n libraries,\n hasMoviesAndTv,\n streamableLibraryId,\n exchangeLibraryId,\n showExchangeSearchResults,\n showStreamableSearchResults\n } = options;\n \n const backendFilters = FilterHelper.buildBackendFilterParams(\n queryParams,\n ratings.data,\n [currentPresentationId],\n isLearner,\n libraries,\n streamableLibraryId\n );\n\n const excludeLibraryFilter = `${FilterConstants.FILTER_PARAM_PREFIX}excludeLibraryExclusive`;\n const excludeLibraryIds = [];\n\n if (streamableLibraryId && !showStreamableSearchResults) {\n excludeLibraryIds.push(streamableLibraryId);\n }\n\n if (exchangeLibraryId && !showExchangeSearchResults) {\n excludeLibraryIds.push(exchangeLibraryId);\n }\n\n backendFilters[excludeLibraryFilter] = excludeLibraryIds;\n \n const inaccessibleIndices = SearchHelper.getInaccessibleIndices({\n isLearner,\n hasMoviesAndTv,\n queryParams\n });\n \n // Topic search is done separately using `useSearchTopics()`\n // Company search is done separately using `useSearchCompanies()`\n const appliedIndices = FilterHelper.getAppliedIndices(options.queryParams)\n .filter(i => i !== 'classification' && i !== 'company')\n .filter(index => !inaccessibleIndices.find(i => i === index));\n\n return {\n queryParams,\n backendFilters,\n appliedIndices,\n inaccessibleIndices\n };\n },\n\n getBackendFiltersV2(options: {\n queryParams: HashObject,\n ratings: Flight.Response<Rating[]>,\n currentPresentationId: string,\n isLearner: boolean,\n hasDataLoaded: boolean,\n libraries: Library[],\n settings: SettingsHash,\n streamableLibraryId: string,\n exchangeLibraryId: string,\n showExchangeSearchResults: boolean,\n hasMoviesAndTv: boolean,\n availablePresentations: Presentation[],\n showStreamableSearchResults: boolean\n }) {\n if (!options.hasDataLoaded)\n return null;\n\n const {\n queryParams,\n ratings,\n isLearner,\n libraries,\n hasMoviesAndTv,\n streamableLibraryId,\n exchangeLibraryId,\n showExchangeSearchResults,\n availablePresentations,\n showStreamableSearchResults\n } = options;\n\n const backendFilters = FilterHelper.buildBackendFilterParams(\n queryParams,\n ratings.data,\n availablePresentations?.map(p => p.id),\n isLearner,\n libraries,\n streamableLibraryId\n );\n \n const excludeLibraryIds: string[] = [];\n if (streamableLibraryId && !showStreamableSearchResults) {\n excludeLibraryIds.push(streamableLibraryId);\n }\n\n if (exchangeLibraryId && !showExchangeSearchResults) {\n excludeLibraryIds.push(exchangeLibraryId);\n }\n\n const inaccessibleIndices = SearchHelper.getInaccessibleIndices({\n isLearner,\n hasMoviesAndTv,\n queryParams\n });\n\n const indicesFilter = `${FilterConstants.FILTER_PARAM_PREFIX}indicesFilters`;\n\n const appliedIndices = FilterHelper.getAppliedIndices(\n options.queryParams,\n true,\n options.settings.hasPartnerProfiles\n ).filter(index => !inaccessibleIndices.find(i => i === index));\n\n const availablePresentationIds = availablePresentations?.map(p => p.id);\n\n const indicesWithFilters: HashObject[] = appliedIndices.map(index => {\n const indiceFilter = { index };\n \n if (index === 'video' && excludeLibraryIds.length) {\n const indice: HashObject = {\n ...indiceFilter,\n filters: {\n excludeLibraryExclusive: [...excludeLibraryIds]\n }\n };\n\n return indice;\n }\n\n if (index === 'classification') {\n const indice: HashObject = {\n ...indiceFilter,\n filters: {\n classificationType: ClassificationType.Subject,\n status: [ ClassificationStatus.Published, ClassificationStatus.ComingSoon ]\n }\n };\n\n if (availablePresentations?.length) {\n indice.filters.presentation = availablePresentationIds;\n }\n\n return indice;\n }\n\n if (index === 'company') {\n const indice: HashObject = {\n ...indiceFilter,\n filters: {\n presentation: availablePresentationIds\n }\n };\n\n return indice;\n }\n\n return indiceFilter;\n });\n\n backendFilters[indicesFilter] = indicesWithFilters;\n \n return {\n queryParams,\n backendFilters,\n appliedIndices,\n inaccessibleIndices\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"./DFZS3Ffo.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"./eoAypzU3.chunk.js";import{t as m}from"./D_gWf2lC.chunk.js";import{t as h}from"./CZbN8PTA.chunk.js";import{t as g}from"./_GCZ-60i.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"./CDeqAwMc.chunk.js";import{n as S}from"./OL3Z6Yp62.chunk.js";import{t as C}from"./CCdnFnNP.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"./DFZS3Ffo.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"./eoAypzU3.chunk.js";import{t as m}from"./D_gWf2lC.chunk.js";import{t as h}from"./CZbN8PTA.chunk.js";import{t as g}from"./_GCZ-60i.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"./CDeqAwMc.chunk.js";import{n as S}from"./OL3Z6Yp62.chunk.js";import{t as C}from"./CCdnFnNP.chunk.js";import{t as w}from"./B1hsuVfV2.chunk.js";import{n as T,r as E}from"./DVznXaHs2.chunk.js";import{t as D}from"./BcowK7-k.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"./B7tOc2Li.chunk.js";import{t as F}from"./rC7x7DZa.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=qRLSbnEr.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"qRLSbnEr.chunk.js","names":[],"sources":["../../src/apps/sign-up/hooks/useGetSignUpVariant.ts","../../src/apps/sign-up/views/StartSignUpView.tsx"],"sourcesContent":["import { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { SignUpVariant } from 'libs/shared/enums/SignUpVariant';\n\nimport { useActivePresentation } from 'shared/hooks/presentations/useActivePresentation';\n\nexport function useGetSignUpVariant(): SignUpVariant {\n const { activePresentation } = useActivePresentation();\n\n if (activePresentation?.type === PresentationType.StreamableLearning)\n return SignUpVariant.ClickViewLive;\n\n return SignUpVariant.ClickView;\n}\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/flight';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useInstanceSafe } from 'libs/common/react/hooks/UseInstance';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { MultiStepForm } from 'libs/shared/apps/sign-up/components/multi-step-form/MultiStepForm';\nimport { MultiStepFormTypes } from 'libs/shared/apps/sign-up/enums/MultiStepFormTypes';\nimport { ProspectLookup } from 'libs/shared/apps/sign-up/enums/ProspectLookup';\nimport { SignUpProduct } from 'libs/shared/apps/sign-up/enums/SignUpProduct';\nimport { DataHelper } from 'libs/shared/apps/sign-up/helpers/DataHelper';\nimport { SignUpState } from 'libs/shared/apps/sign-up/hooks/useSignUpSteps/interfaces/SignUpState';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport styles from 'libs/shared/apps/sign-up/layouts/popup-layout/popup-layout.module.scss';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { AuthRequests } from 'libs/shared/flight-requests/AuthRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useGeoLocation } from 'libs/shared/hooks/useGeoLocation';\nimport { useProfileApiClient } from 'libs/shared/hooks/UseProfileApiClient';\nimport { Config } from 'libs/shared/interfaces';\nimport { BrazeClientService } from 'libs/shared/services/BrazeClientService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { LiteBrazeHelper } from 'shared/utils/LiteBrazeHelper';\n\nimport { SignUpImages } from 'apps/sign-up/helpers/SignUpImages';\nimport { useGetSignUpAjaxUrls } from 'apps/sign-up/hooks/useGetSignUpAjaxUrls';\nimport { useGetSignUpVariant } from 'apps/sign-up/hooks/useGetSignUpVariant';\nimport { useTrialAppLink } from 'apps/sign-up/hooks/useTrialAppLink';\n\nimport { UpgradeRequests } from '../flight-requests/UpgradeRequests';\nimport { useSignUpEntry } from '../hooks/useSignUpEntry';\nimport { SignUpHelper } from '../utils/SignUpHelper';\n\ninterface StartSignUpViewProps {\n email?: string;\n closePopup: () => void;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StartSignUpView(props: StartSignUpViewProps): JSX.Element {\n const fetchAsync = useGetFetchAsync();\n const brazeClientService = useInstanceSafe<BrazeClientService>(SharedServices.BrazeClient);\n const { trialAppLinkString } = useTrialAppLink();\n const [ modalSize, setModalSize ] = React.useState<'lg' | 'sm' | 'xl'>('lg');\n const [ data, setData ] = React.useState<SignUpState>();\n const { createOrUpdateProfile } = useProfileApiClient();\n const signupVariant = useGetSignUpVariant();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const geoLocation = useGeoLocation();\n const globalIdps = Flight.useBasicFetch<IdentityProvider[]>(\n geoLocation?.countryCode && AuthRequests.globalIdps(geoLocation.countryCode, ProductId.Primary)\n );\n \n const ajaxUrls = useGetSignUpAjaxUrls();\n const { entryPage } = useSignUpEntry();\n\n async function getCrmIdForProspect(prospectId: string): Promise<string> {\n const response = await fetchAsync<ProspectLookup[]>(UpgradeRequests.getLookups(prospectId));\n return SignUpHelper.getCrmId(response);\n }\n\n function onHide(): void {\n props.closePopup();\n const dataWithoutPII = DataHelper.filterBlacklistedKeys(data);\n AnalyticsHelper.logUserAction(dataWithoutPII || {}, {\n actionType: UserAction.Click,\n location: LocationContext.SignUpPopup,\n entity: EntityType.SignUp,\n descriptor: SignUpDescriptors.ClosePopup,\n workflowPhase: WorkflowPhase.Discard\n });\n }\n\n function onStepUpdate(data: SignUpState) {\n setData(data);\n\n if (data.currentStepId === 'completed') {\n setModalSize(undefined);\n return;\n }\n\n if (modalSize !== 'lg')\n setModalSize('lg');\n }\n\n if (!config.hasCompleted || !geoLocation || !ajaxUrls || !globalIdps.hasCompleted)\n return <></>;\n\n return (\n <Modal\n show\n onHide={onHide}\n size={modalSize}\n >\n <Modal.Body className={`mx-auto p-0 ${styles.modalBody} w-100 position-relative`}>\n <MultiStepForm\n signupVariant={signupVariant}\n initialValues={{ email: props.email }}\n \n onStepUpdate={onStepUpdate}\n pageAppLinkString={trialAppLinkString}\n entryPage={entryPage}\n close={onHide}\n \n type={MultiStepFormTypes.Popup}\n location={LocationContext.SignUpPopup}\n\n googleMapsApiKey={config.data.googleMapsApiKey}\n geoLocation={geoLocation}\n imageUrls={SignUpImages}\n ajaxUrls={ajaxUrls}\n productName={SignUpProduct.Lite}\n getSignInUrl={options => Core.AppLinkHelper.getHref({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params: options\n })}\n globalIdps={globalIdps.data}\n logBrazeEvent={options => LiteBrazeHelper.logBrazeEvent(brazeClientService, options)}\n createOrUpdateProfile={createOrUpdateProfile}\n getCrmIdForProspect={getCrmIdForProspect}\n />\n </Modal.Body>\n </Modal>\n );\n}\n"],"mappings":"qmCAKA,SAAgB,GAAqC,CACnD,GAAM,CAAE,sBAAuB,EAAsB,EAKrD,OAHI,GAAoB,OAAS,EAAiB,mBACzC,EAAc,cAEhB,EAAc,SACvB,WCmCA,SAAgB,EAAgB,EAA0C,CACxE,IAAM,EAAa,EAAiB,EAC9B,EAAqB,EAAoC,EAAe,WAAW,EACnF,CAAE,sBAAuB,EAAgB,EACzC,CAAE,EAAW,GAAA,EAAuB,SAA6B,IAAI,EACrE,CAAE,EAAM,GAAA,EAAkB,SAAsB,EAChD,CAAE,yBAA0B,EAAoB,EAChD,EAAgB,EAAoB,EAEpC,EAAS,EAA6B,EAAe,OAAO,CAAC,EAE7D,EAAc,EAAe,EAC7B,EAAa,EACjB,GAAa,aAAe,EAAa,WAAW,EAAY,YAAa,EAAU,OAAO,CAChG,EAEM,EAAW,EAAqB,EAChC,CAAE,aAAc,EAAe,EAErC,eAAe,EAAoB,EAAqC,CACtE,IAAM,EAAW,MAAM,EAA6B,EAAgB,WAAW,CAAU,CAAC,EAC1F,OAAO,EAAa,SAAS,CAAQ,CACvC,CAEA,SAAS,GAAe,CACtB,EAAM,WAAW,EACjB,IAAM,EAAiB,EAAW,sBAAsB,CAAI,EAC5D,EAAgB,cAAc,GAAkB,CAAC,EAAG,CAClD,WAAY,EAAW,MACvB,SAAU,EAAgB,YAC1B,OAAQ,EAAW,OACnB,WAAY,EAAkB,WAC9B,cAAe,EAAc,OAC/B,CAAC,CACH,CAEA,SAAS,EAAa,EAAmB,CAGvC,GAFA,EAAQ,CAAI,EAER,EAAK,gBAAkB,YAAa,CACtC,EAAa,IAAA,EAAS,EACtB,MACF,CAEI,IAAc,MAChB,EAAa,IAAI,CACrB,CAKA,MAHI,CAAC,EAAO,cAAgB,CAAC,GAAe,CAAC,GAAY,CAAC,EAAW,cAC5D,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,GAGX,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAA,GACQ,SACR,KAAM,YAEN,EAAA,EAAA,IAAA,CAAC,EAAM,KAAP,CAAY,UAAW,eAAe,EAAO,UAAU,oCACrD,EAAA,EAAA,IAAA,CAAC,EAAD,CACiB,gBACf,cAAe,CAAE,MAAO,EAAM,KAAM,EAEtB,eACd,kBAAmB,EACR,YACX,MAAO,EAEP,KAAM,EAAmB,MACzB,SAAU,EAAgB,YAE1B,iBAAkB,EAAO,KAAK,iBACjB,cACb,UAAW,EACD,WACV,YAAa,EAAc,KAC3B,aAAc,GAAA,EAA8B,QAAQ,CAClD,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,UACxB,OAAQ,CACV,CAAC,EACD,WAAY,EAAW,KACvB,cAAe,GAAW,EAAgB,cAAc,EAAoB,CAAO,EAC5D,wBACF,qBACtB,CAAA,CACS,CAAA,CACP,CAAA,CAEX"}
|