@clickview/lite 0.105.0-rc.0 → 0.105.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/.vite/manifest.json +676 -676
  2. package/dist/bundles.json +1 -1
  3. package/dist/en.json +1 -1
  4. package/dist/scripts/{CsGcvd52.chunk.js → 7lrVefxF.chunk.js} +2 -2
  5. package/dist/scripts/{CsGcvd52.chunk.js.map → 7lrVefxF.chunk.js.map} +1 -1
  6. package/dist/scripts/{CHZLAcZ_2.chunk.js → B-V5u42C2.chunk.js} +3 -3
  7. package/dist/scripts/{CHZLAcZ_2.chunk.js.map → B-V5u42C2.chunk.js.map} +1 -1
  8. package/dist/scripts/{CKh-VEMl.chunk.js → B1rSJN7u.chunk.js} +2 -2
  9. package/dist/scripts/{CKh-VEMl.chunk.js.map → B1rSJN7u.chunk.js.map} +1 -1
  10. package/dist/scripts/{Dfo4EB26.chunk.js → BMSgkYr_.chunk.js} +2 -2
  11. package/dist/scripts/{Dfo4EB26.chunk.js.map → BMSgkYr_.chunk.js.map} +1 -1
  12. package/dist/scripts/{CUiXvqkf2.chunk.js → BNAB3zGE2.chunk.js} +2 -2
  13. package/dist/scripts/{CUiXvqkf2.chunk.js.map → BNAB3zGE2.chunk.js.map} +1 -1
  14. package/dist/scripts/{DMefg444.chunk.js → BObH8Qah.chunk.js} +2 -2
  15. package/dist/scripts/{DMefg444.chunk.js.map → BObH8Qah.chunk.js.map} +1 -1
  16. package/dist/scripts/{kjKFfyCC2.chunk.js → BS-WKys42.chunk.js} +2 -2
  17. package/dist/scripts/{kjKFfyCC2.chunk.js.map → BS-WKys42.chunk.js.map} +1 -1
  18. package/dist/scripts/{qhSE4Eld.chunk.js → BUdIzi2I.chunk.js} +2 -2
  19. package/dist/scripts/{qhSE4Eld.chunk.js.map → BUdIzi2I.chunk.js.map} +1 -1
  20. package/dist/scripts/{Bg-NmCOq.chunk.js → B_Au77Ey.chunk.js} +2 -2
  21. package/dist/scripts/{Bg-NmCOq.chunk.js.map → B_Au77Ey.chunk.js.map} +1 -1
  22. package/dist/scripts/{BNMFIMSB.chunk.js → B_v9mBnF.chunk.js} +2 -2
  23. package/dist/scripts/{BNMFIMSB.chunk.js.map → B_v9mBnF.chunk.js.map} +1 -1
  24. package/dist/scripts/{BT2nvPyG.chunk.js → BaN7PH04.chunk.js} +2 -2
  25. package/dist/scripts/{BT2nvPyG.chunk.js.map → BaN7PH04.chunk.js.map} +1 -1
  26. package/dist/scripts/{BfK63iLm2.chunk.js → BuzAbtqC2.chunk.js} +2 -2
  27. package/dist/scripts/{BfK63iLm2.chunk.js.map → BuzAbtqC2.chunk.js.map} +1 -1
  28. package/dist/scripts/{DyERxRJT2.chunk.js → Bz3CmGse2.chunk.js} +3 -3
  29. package/dist/scripts/{DyERxRJT2.chunk.js.map → Bz3CmGse2.chunk.js.map} +1 -1
  30. package/dist/scripts/{Bpgrfq1W2.chunk.js → C7sAao1u2.chunk.js} +2 -2
  31. package/dist/scripts/{Bpgrfq1W2.chunk.js.map → C7sAao1u2.chunk.js.map} +1 -1
  32. package/dist/scripts/{kitbrI3y.chunk.js → CH2FOD_Y.chunk.js} +2 -2
  33. package/dist/scripts/{kitbrI3y.chunk.js.map → CH2FOD_Y.chunk.js.map} +1 -1
  34. package/dist/scripts/{a9yj-pru.chunk.js → CIpKTjTa.chunk.js} +2 -2
  35. package/dist/scripts/{a9yj-pru.chunk.js.map → CIpKTjTa.chunk.js.map} +1 -1
  36. package/dist/scripts/{Bqi3bvPn.chunk.js → CMIWX3sc.chunk.js} +2 -2
  37. package/dist/scripts/{Bqi3bvPn.chunk.js.map → CMIWX3sc.chunk.js.map} +1 -1
  38. package/dist/scripts/{CLYwJpCJ.chunk.js → CyKAODDv.chunk.js} +2 -2
  39. package/dist/scripts/{CLYwJpCJ.chunk.js.map → CyKAODDv.chunk.js.map} +1 -1
  40. package/dist/scripts/{C35iCvXx2.chunk.js → Cys9_W-O2.chunk.js} +2 -2
  41. package/dist/scripts/{C35iCvXx2.chunk.js.map → Cys9_W-O2.chunk.js.map} +1 -1
  42. package/dist/scripts/{BnR_Hzcf.chunk.js → D9P9eNbi.chunk.js} +2 -2
  43. package/dist/scripts/{BnR_Hzcf.chunk.js.map → D9P9eNbi.chunk.js.map} +1 -1
  44. package/dist/scripts/{iEP6nnLh2.chunk.js → D9POCoFw2.chunk.js} +2 -2
  45. package/dist/scripts/{iEP6nnLh2.chunk.js.map → D9POCoFw2.chunk.js.map} +1 -1
  46. package/dist/scripts/{B6I8Vh8n.chunk.js → DB8xYV5H.chunk.js} +2 -2
  47. package/dist/scripts/{B6I8Vh8n.chunk.js.map → DB8xYV5H.chunk.js.map} +1 -1
  48. package/dist/scripts/{CTpJ4vP62.chunk.js → DT8lKxmy2.chunk.js} +2 -2
  49. package/dist/scripts/{CTpJ4vP62.chunk.js.map → DT8lKxmy2.chunk.js.map} +1 -1
  50. package/dist/scripts/{ByLl4bms2.chunk.js → DWQkljeD2.chunk.js} +2 -2
  51. package/dist/scripts/{ByLl4bms2.chunk.js.map → DWQkljeD2.chunk.js.map} +1 -1
  52. package/dist/scripts/{DQNW-R2Y.chunk.js → DdVzer9F.chunk.js} +2 -2
  53. package/dist/scripts/{DQNW-R2Y.chunk.js.map → DdVzer9F.chunk.js.map} +1 -1
  54. package/dist/scripts/{cu48iYhG.chunk.js → DkA7_vQC.chunk.js} +3 -3
  55. package/dist/scripts/{cu48iYhG.chunk.js.map → DkA7_vQC.chunk.js.map} +1 -1
  56. package/dist/scripts/{CecBf_FP.chunk.js → DqZVK9mn.chunk.js} +2 -2
  57. package/dist/scripts/{CecBf_FP.chunk.js.map → DqZVK9mn.chunk.js.map} +1 -1
  58. package/dist/scripts/{CB13vtRK.chunk.js → DuFYtiN6.chunk.js} +2 -2
  59. package/dist/scripts/{CB13vtRK.chunk.js.map → DuFYtiN6.chunk.js.map} +1 -1
  60. package/dist/scripts/{DcWcozji.chunk.js → DwNluqCs.chunk.js} +2 -2
  61. package/dist/scripts/{DcWcozji.chunk.js.map → DwNluqCs.chunk.js.map} +1 -1
  62. package/dist/scripts/{P9unbQX_2.chunk.js → FxuURp3k2.chunk.js} +2 -2
  63. package/dist/scripts/{P9unbQX_2.chunk.js.map → FxuURp3k2.chunk.js.map} +1 -1
  64. package/dist/scripts/{D_Txk-Lv.chunk.js → WDOpswDS.chunk.js} +2 -2
  65. package/dist/scripts/{D_Txk-Lv.chunk.js.map → WDOpswDS.chunk.js.map} +1 -1
  66. package/dist/scripts/{app-uVIoLFQW.js → app-Bsq2dxSw.js} +4 -4
  67. package/dist/scripts/{app-uVIoLFQW.js.map → app-Bsq2dxSw.js.map} +1 -1
  68. package/dist/scripts/{CZGYNiTy2.chunk.js → oqpijUVC2.chunk.js} +2 -2
  69. package/dist/scripts/{CZGYNiTy2.chunk.js.map → oqpijUVC2.chunk.js.map} +1 -1
  70. package/package.json +1 -1
@@ -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"./e57H3T-k.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{l as ee,y as te,z as ne}from"./BHvdJc9z.chunk.js";import{t as re}from"./CVHQXNzi2.chunk.js";import{t as s}from"./quMwO3lt2.chunk.js";import{t as c}from"./CVtvY0gg.chunk.js";import{t as l}from"./CgCqPbjJ.chunk.js";import{t as u}from"./BYQ4R4H_2.chunk.js";import{t as ie}from"./QCFxJYkI2.chunk.js";import{t as ae}from"./B2INd6bh.chunk.js";import{t as d}from"./BKSSWxpx2.chunk.js";import{a as f,o as p}from"./CHZLAcZ_2.chunk.js";import{n as m}from"./CpFtf-tI2.chunk.js";import{t as h}from"./C9JLrtps2.chunk.js";import{t as g}from"./vPOnUpnP.chunk.js";import{n as oe}from"./DAcNgjTQ.chunk.js";import{t as se}from"./WvK58Ge12.chunk.js";import{t as ce}from"./DvqomG3B.chunk.js";import{l as le}from"./BcrXhug9.chunk.js";import{t as ue}from"./BTFvVc1Z.chunk.js";import{o as _,r as v}from"./Cx3ZYDKo.chunk.js";import{n as y,t as b}from"./DLpjTXb22.chunk.js";import{t as x}from"./BAkU_szZ.chunk.js";import{a as de,i as fe,n as pe,t as me}from"./C1SMWeap2.chunk.js";import{_ as he,a as ge,d as _e,f as ve,g as ye,h as be,i as xe,l as Se,m as S,n as Ce,o as C,p as w,r as T,s as E,t as D,u as O,v as k,y as A}from"./kjKFfyCC2.chunk.js";import{n as we,t as Te}from"./DqlcyPD1.chunk.js";import{n as Ee,r as De}from"./CafgzmZf.chunk.js";import{t as Oe}from"./ItTple-a.chunk.js";var j=e(i()),M=a(),N=`shared.playClip`;function ke(e){let{hasPermissions:t}=d(),n=y({location:b.VideoItem,presentationSlug:null});return(0,M.jsxs)(`section`,{className:`play-page-section`,id:x.ClippedFrom,ref:t=>{t&&e.headingRef?.current&&e.headingRef.current.set(x.ClippedFrom,t)},children:[(0,M.jsx)(`h2`,{className:`h4 mb-0`,children:(0,M.jsx)(m,{namespace:N,phrase:`clippedFrom`})}),(0,M.jsx)(_.Provider,{value:n,children:(0,M.jsx)(v,{videos:[e.originalVideo],getVideoAppLink:(t,n)=>h.getAppLink(t,{...n,context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv,includeContext:e.currentUser?.isAuthenticated},null),hasPermissions:t,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:e=>g.getPreviewQuestionsAppLink(e),commonVideoProps:e.commonVideoProps})})]})}var P={main:`_main_1ujkn_1`,expandedToc:`_expandedToc_1ujkn_1`,theatreMode:`_theatreMode_1ujkn_4`,theatreModeContent:`_theatreModeContent_1ujkn_7`,theatreModePlayPageContainer:`_theatreModePlayPageContainer_1ujkn_17`,theatreModeLeftContent:`_theatreModeLeftContent_1ujkn_21`},Ae=(e,t,n)=>r=>n?{application:o.VIDEOS,action:c.Videos.PREVIEW_PDF,args:[r.id],params:{videoId:e,shareId:t}}:{application:o.SIGN_UP,action:c.SignUp.SIGN_UP};function F(e){let i=oe(),{hasPermissions:a}=d(),{canConsume:m}=s.getCanBeConsumed(e.clip),g=C(e.hasTheatreMode,i),_=Ce(e.hasTheatreMode,i.mode,i.defaultDisplayMode);function v(e){i.playerRef?.current?.toggleTheatreMode?.(e)}let{tableOfContentsActiveId:y,setTableOfContentsActiveId:b,controlledId:N,setControlledId:F,tableOfContentsExpanded:I,onToggleTableOfContents:L}=xe(e.tableOfContentsId,e.hasTheatreMode,g),R=k(e.clip)&&e.featureAccess.canViewGlance,{headingRef:z,headingElements:B}=T(R),V=B.map(t=>({id:t.id,name:D.getSectionHeading(t.id,{clips:e.clips,interactives:e.interactives,resources:e.clip.resources?.data,isPlayClipPage:!0})}));De({setActiveId:b,headingElements:B,controlledId:N,setControlledId:F}),Ee(B,N);let je=s.isVideoTypeArchived(e.clip),H=a(n.StudentExperience),U=j.useRef(!1),W=Ae(e.clip.id,e.shareId,e.featureAccess.canViewResourceItems);Se({resourcePopupId:e.queryParams?.resourceId,resources:e.clip.resources?.data,getResourceAppLink:W});function G(){U.current=!i?.playerRef?.current?.isPaused(),i?.playerRef?.current?.pause()}function K(){U.current&&i?.playerRef?.current?.play()}function q(){return!(!e.clip._parentVideo||!e.clip._canBeConsumed?.value||!e.currentUser?.isAuthenticated||!e.hasProduct(ie.Primary)||H)}function Me(){return q()?{application:o.VIDEOS,action:c.Videos.PLAY_VIDEO,args:[null,e.clip._parentVideo.id,r.slugify(e.clip._parentVideo.name)]}:null}let Ne=i.mode===`picture-in-picture`||e.featureAccess.canViewPublicLayout,Pe=e.clips?.filter(t=>t.id.toString()!==e.clip.id.toString())??[],J={hasTheatreMode:e.hasTheatreMode,shouldShowSideTableOfContents:e.shouldShowSideTableOfContents,tableOfContentsExpanded:I,theatreMode:g},Y=E(J),Fe=ge(J),[,X]=u(l.PLAY_PAGE_CONTAINER_CLASS_NAME),Z=we(e.clip,a(n.StudentExperience)),Q=Z.filter(se.isResource),$=e.shouldShowSideTableOfContents&&e.relatedTopics?.length>0,Ie=!e.shouldShowSideTableOfContents&&e.relatedTopics?.length>0;function Le(){if(Q.length===1){ce.downloadResource(Q[0],{clipId:e.clip.id,clipName:e.clip.name},{location:te.PlayClip,actionType:ne.Download,entity:ee.Resource});return}t.trigger({application:o.VIDEOS,action:c.Videos.RESOURCE_DOWNLOAD,args:[e.clip?.id,e.shareId]})}return j.useEffect(()=>{X(g?P.theatreModePlayPageContainer:``)},[g]),j.useEffect(()=>()=>X(``),[]),(0,M.jsxs)(`div`,{className:`px-4 play-page-sections-container ${e.shouldShowSideTableOfContents?`row g-0`:``}`,children:[(0,M.jsxs)(`main`,{className:`${P.main} ${Y}`,children:[!!e.breadcrumbs?.length&&(0,M.jsx)(`div`,{className:`mb-2`,children:(0,M.jsx)(ue,{breadcrumbs:e.breadcrumbs})}),(0,M.jsx)(me,{restrictions:e.clip._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.clip.id,objectTypeId:re.Clip,canManageVideoAccess:e.canManageVideoAccess}),je&&(0,M.jsx)(de,{typeId:e.clip.typeId,hasStudentExperience:H}),(0,M.jsxs)(`section`,{id:x.Video,className:`mb-2 ${ae.GLOBAL_PLAYER_SELECTOR}`,ref:e=>{e&&z?.current&&z.current.set(x.Video,e)},children:[m&&(0,M.jsx)(le,{objectId:e.clip.id,objectTypeId:e.clip.typeId,shareId:e.shareId,context:e.queryParams?.context,contextId:e.queryParams?.contextId,moviesAndTv:e.queryParams?.mtv,playNext:e.queryParams?.playNext,startTime:e.queryParams?.t??e.queryParams?.startTime,mode:`default`,location:`play-page`},e.clip.id),(0,M.jsx)(`div`,{className:Ne?``:`d-none`,children:(0,M.jsx)(ve,{video:e.clip,type:`pip`})})]}),(0,M.jsxs)(`div`,{className:Fe,children:[(0,M.jsxs)(`div`,{className:_?`${P.theatreModeLeftContent}`:`w-100`,children:[(0,M.jsx)(w,{presentationSlug:null,media:e.clip,yearGroups:e.commonVideoProps.yearGroups,audiences:e.audiences,originalVideoAppLink:Me(),featureAccess:e.featureAccess,shareId:e.shareId,showTitlePadlock:!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience}),R?(0,M.jsx)(he,{video:e.clip,pointsOfInterest:e.pointsOfInterest,setStartTime:e=>i.playerRef.current?.currentTime(e),getTagAppLink:e=>({application:o.SEARCH,action:c.Search.HOME,params:{tagOrClassification:e.name}}),suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:R}):(0,M.jsx)(A,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:G,onExitImmersiveReader:K,getTagAppLink:e=>({application:o.SEARCH,action:c.Search.HOME,params:{tagOrClassification:e.name}}),headingRef:z,suppressInteractivity:e.featureAccess.canViewPublicLayout,getLibraryAppLink:p,getFolderAppLink:f}),(0,M.jsx)(Te,{video:e.clip,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.commonVideoProps.imageCdnUrl,getAppLink:W,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},getImageThumbnailFallbackUrl:Oe.getImageThumbnailFallbackUrl,headingRef:z,onDownloadClick:Le,resources:Z,downloadableResources:Q,aboutResourcesAppLink:h.getAboutResourceAppLink()}),(0,M.jsx)(be,{presentationSlug:null,video:e.clip,interactives:e.interactives,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},canViewInteractives:e.featureAccess.canViewInteractives,headingRef:z,commonVideoProps:e.commonVideoProps}),(0,M.jsx)(ye,{presentationSlug:null,clips:Pe||[],video:e.clip,canViewClips:e.featureAccess.canViewClips,audiences:e.audiences,headingRef:z,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},commonVideoProps:e.commonVideoProps}),R&&(0,M.jsx)(A,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:G,onExitImmersiveReader:K,getTagAppLink:e=>({application:o.SEARCH,action:c.Search.HOME,params:{tagOrClassification:e.name}}),headingRef:z,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0,getLibraryAppLink:a(n.ViewLibraries)?p:null,getFolderAppLink:a(n.ViewLibraries)?f:null}),!!q()&&(0,M.jsx)(ke,{originalVideo:e.clip._parentVideo,shareId:e.shareId,queryParams:e.queryParams,audiences:e.audiences,headingRef:z,currentUser:e.currentUser,commonVideoProps:e.commonVideoProps}),!s.isUgc(e.clip._parentVideo)&&(0,M.jsx)(pe,{headingRef:z,media:e.clip,parentVideo:e.clip._parentVideo,contentRegion:e.currentUser.contentRegion,shareId:e.shareId,presentationSlug:null}),Ie&&(0,M.jsx)(_e,{topics:e.relatedTopics,getAppLink:e.getRelatedTopicAppLink}),(0,M.jsx)(fe,{presentationSlug:null,currentVideo:e.clip,relatedVideos:e.relatedVideos,currentUser:e.currentUser,audiences:e.audiences,getVideoAppLink:(t,n)=>h.getAppLink(t,{...n,context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv,includeContext:e.currentUser?.isAuthenticated},null),moviesAndTv:e.queryParams.mtv,commonVideoProps:e.commonVideoProps})]}),g&&(0,M.jsx)(S,{isExpanded:I,setIsExpanded:L,toggleTheatreMode:null,items:V,activeId:y,setControlledId:F,analyticsData:{videoId:e.clip.id,videoName:e.clip.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!0,hasTranscription:e.hasTheatreMode,shouldShowToc:V.length>=3,additionalComponents:[$?(0,M.jsx)(O,{className:`mt-2`,topics:e.relatedTopics,getAppLink:e.getRelatedTopicAppLink}):void 0]})]})]}),!g&&(0,M.jsx)(S,{isExpanded:I,setIsExpanded:L,toggleTheatreMode:e.hasTheatreMode?v:null,items:V,activeId:y,setControlledId:F,analyticsData:{videoId:e.clip.id,videoName:e.clip.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!1,hasTranscription:e.hasTheatreMode,shouldShowToc:V.length>=3,additionalComponents:[$?(0,M.jsx)(O,{className:`mt-2`,topics:e.relatedTopics,getAppLink:e.getRelatedTopicAppLink}):void 0]})]})}export{F as t};
2
- //# sourceMappingURL=CLYwJpCJ.chunk.js.map
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"./e57H3T-k.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{l as ee,y as te,z as ne}from"./BHvdJc9z.chunk.js";import{t as re}from"./CVHQXNzi2.chunk.js";import{t as s}from"./quMwO3lt2.chunk.js";import{t as c}from"./CVtvY0gg.chunk.js";import{t as l}from"./CgCqPbjJ.chunk.js";import{t as u}from"./BYQ4R4H_2.chunk.js";import{t as ie}from"./QCFxJYkI2.chunk.js";import{t as ae}from"./B2INd6bh.chunk.js";import{t as d}from"./BKSSWxpx2.chunk.js";import{a as f,o as p}from"./B-V5u42C2.chunk.js";import{n as m}from"./CpFtf-tI2.chunk.js";import{t as h}from"./C9JLrtps2.chunk.js";import{t as g}from"./vPOnUpnP.chunk.js";import{n as oe}from"./DAcNgjTQ.chunk.js";import{t as se}from"./WvK58Ge12.chunk.js";import{t as ce}from"./DvqomG3B.chunk.js";import{l as le}from"./BcrXhug9.chunk.js";import{t as ue}from"./BTFvVc1Z.chunk.js";import{o as _,r as v}from"./Cx3ZYDKo.chunk.js";import{n as y,t as b}from"./DLpjTXb22.chunk.js";import{t as x}from"./BAkU_szZ.chunk.js";import{a as de,i as fe,n as pe,t as me}from"./C1SMWeap2.chunk.js";import{_ as he,a as ge,d as _e,f as ve,g as ye,h as be,i as xe,l as Se,m as S,n as Ce,o as C,p as w,r as T,s as E,t as D,u as O,v as k,y as A}from"./BS-WKys42.chunk.js";import{n as we,t as Te}from"./DqlcyPD1.chunk.js";import{n as Ee,r as De}from"./CafgzmZf.chunk.js";import{t as Oe}from"./ItTple-a.chunk.js";var j=e(i()),M=a(),N=`shared.playClip`;function ke(e){let{hasPermissions:t}=d(),n=y({location:b.VideoItem,presentationSlug:null});return(0,M.jsxs)(`section`,{className:`play-page-section`,id:x.ClippedFrom,ref:t=>{t&&e.headingRef?.current&&e.headingRef.current.set(x.ClippedFrom,t)},children:[(0,M.jsx)(`h2`,{className:`h4 mb-0`,children:(0,M.jsx)(m,{namespace:N,phrase:`clippedFrom`})}),(0,M.jsx)(_.Provider,{value:n,children:(0,M.jsx)(v,{videos:[e.originalVideo],getVideoAppLink:(t,n)=>h.getAppLink(t,{...n,context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv,includeContext:e.currentUser?.isAuthenticated},null),hasPermissions:t,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:e=>g.getPreviewQuestionsAppLink(e),commonVideoProps:e.commonVideoProps})})]})}var P={main:`_main_1ujkn_1`,expandedToc:`_expandedToc_1ujkn_1`,theatreMode:`_theatreMode_1ujkn_4`,theatreModeContent:`_theatreModeContent_1ujkn_7`,theatreModePlayPageContainer:`_theatreModePlayPageContainer_1ujkn_17`,theatreModeLeftContent:`_theatreModeLeftContent_1ujkn_21`},Ae=(e,t,n)=>r=>n?{application:o.VIDEOS,action:c.Videos.PREVIEW_PDF,args:[r.id],params:{videoId:e,shareId:t}}:{application:o.SIGN_UP,action:c.SignUp.SIGN_UP};function F(e){let i=oe(),{hasPermissions:a}=d(),{canConsume:m}=s.getCanBeConsumed(e.clip),g=C(e.hasTheatreMode,i),_=Ce(e.hasTheatreMode,i.mode,i.defaultDisplayMode);function v(e){i.playerRef?.current?.toggleTheatreMode?.(e)}let{tableOfContentsActiveId:y,setTableOfContentsActiveId:b,controlledId:N,setControlledId:F,tableOfContentsExpanded:I,onToggleTableOfContents:L}=xe(e.tableOfContentsId,e.hasTheatreMode,g),R=k(e.clip)&&e.featureAccess.canViewGlance,{headingRef:z,headingElements:B}=T(R),V=B.map(t=>({id:t.id,name:D.getSectionHeading(t.id,{clips:e.clips,interactives:e.interactives,resources:e.clip.resources?.data,isPlayClipPage:!0})}));De({setActiveId:b,headingElements:B,controlledId:N,setControlledId:F}),Ee(B,N);let je=s.isVideoTypeArchived(e.clip),H=a(n.StudentExperience),U=j.useRef(!1),W=Ae(e.clip.id,e.shareId,e.featureAccess.canViewResourceItems);Se({resourcePopupId:e.queryParams?.resourceId,resources:e.clip.resources?.data,getResourceAppLink:W});function G(){U.current=!i?.playerRef?.current?.isPaused(),i?.playerRef?.current?.pause()}function K(){U.current&&i?.playerRef?.current?.play()}function q(){return!(!e.clip._parentVideo||!e.clip._canBeConsumed?.value||!e.currentUser?.isAuthenticated||!e.hasProduct(ie.Primary)||H)}function Me(){return q()?{application:o.VIDEOS,action:c.Videos.PLAY_VIDEO,args:[null,e.clip._parentVideo.id,r.slugify(e.clip._parentVideo.name)]}:null}let Ne=i.mode===`picture-in-picture`||e.featureAccess.canViewPublicLayout,Pe=e.clips?.filter(t=>t.id.toString()!==e.clip.id.toString())??[],J={hasTheatreMode:e.hasTheatreMode,shouldShowSideTableOfContents:e.shouldShowSideTableOfContents,tableOfContentsExpanded:I,theatreMode:g},Y=E(J),Fe=ge(J),[,X]=u(l.PLAY_PAGE_CONTAINER_CLASS_NAME),Z=we(e.clip,a(n.StudentExperience)),Q=Z.filter(se.isResource),$=e.shouldShowSideTableOfContents&&e.relatedTopics?.length>0,Ie=!e.shouldShowSideTableOfContents&&e.relatedTopics?.length>0;function Le(){if(Q.length===1){ce.downloadResource(Q[0],{clipId:e.clip.id,clipName:e.clip.name},{location:te.PlayClip,actionType:ne.Download,entity:ee.Resource});return}t.trigger({application:o.VIDEOS,action:c.Videos.RESOURCE_DOWNLOAD,args:[e.clip?.id,e.shareId]})}return j.useEffect(()=>{X(g?P.theatreModePlayPageContainer:``)},[g]),j.useEffect(()=>()=>X(``),[]),(0,M.jsxs)(`div`,{className:`px-4 play-page-sections-container ${e.shouldShowSideTableOfContents?`row g-0`:``}`,children:[(0,M.jsxs)(`main`,{className:`${P.main} ${Y}`,children:[!!e.breadcrumbs?.length&&(0,M.jsx)(`div`,{className:`mb-2`,children:(0,M.jsx)(ue,{breadcrumbs:e.breadcrumbs})}),(0,M.jsx)(me,{restrictions:e.clip._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.clip.id,objectTypeId:re.Clip,canManageVideoAccess:e.canManageVideoAccess}),je&&(0,M.jsx)(de,{typeId:e.clip.typeId,hasStudentExperience:H}),(0,M.jsxs)(`section`,{id:x.Video,className:`mb-2 ${ae.GLOBAL_PLAYER_SELECTOR}`,ref:e=>{e&&z?.current&&z.current.set(x.Video,e)},children:[m&&(0,M.jsx)(le,{objectId:e.clip.id,objectTypeId:e.clip.typeId,shareId:e.shareId,context:e.queryParams?.context,contextId:e.queryParams?.contextId,moviesAndTv:e.queryParams?.mtv,playNext:e.queryParams?.playNext,startTime:e.queryParams?.t??e.queryParams?.startTime,mode:`default`,location:`play-page`},e.clip.id),(0,M.jsx)(`div`,{className:Ne?``:`d-none`,children:(0,M.jsx)(ve,{video:e.clip,type:`pip`})})]}),(0,M.jsxs)(`div`,{className:Fe,children:[(0,M.jsxs)(`div`,{className:_?`${P.theatreModeLeftContent}`:`w-100`,children:[(0,M.jsx)(w,{presentationSlug:null,media:e.clip,yearGroups:e.commonVideoProps.yearGroups,audiences:e.audiences,originalVideoAppLink:Me(),featureAccess:e.featureAccess,shareId:e.shareId,showTitlePadlock:!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience}),R?(0,M.jsx)(he,{video:e.clip,pointsOfInterest:e.pointsOfInterest,setStartTime:e=>i.playerRef.current?.currentTime(e),getTagAppLink:e=>({application:o.SEARCH,action:c.Search.HOME,params:{tagOrClassification:e.name}}),suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:R}):(0,M.jsx)(A,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:G,onExitImmersiveReader:K,getTagAppLink:e=>({application:o.SEARCH,action:c.Search.HOME,params:{tagOrClassification:e.name}}),headingRef:z,suppressInteractivity:e.featureAccess.canViewPublicLayout,getLibraryAppLink:p,getFolderAppLink:f}),(0,M.jsx)(Te,{video:e.clip,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.commonVideoProps.imageCdnUrl,getAppLink:W,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},getImageThumbnailFallbackUrl:Oe.getImageThumbnailFallbackUrl,headingRef:z,onDownloadClick:Le,resources:Z,downloadableResources:Q,aboutResourcesAppLink:h.getAboutResourceAppLink()}),(0,M.jsx)(be,{presentationSlug:null,video:e.clip,interactives:e.interactives,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},canViewInteractives:e.featureAccess.canViewInteractives,headingRef:z,commonVideoProps:e.commonVideoProps}),(0,M.jsx)(ye,{presentationSlug:null,clips:Pe||[],video:e.clip,canViewClips:e.featureAccess.canViewClips,audiences:e.audiences,headingRef:z,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},commonVideoProps:e.commonVideoProps}),R&&(0,M.jsx)(A,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:G,onExitImmersiveReader:K,getTagAppLink:e=>({application:o.SEARCH,action:c.Search.HOME,params:{tagOrClassification:e.name}}),headingRef:z,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0,getLibraryAppLink:a(n.ViewLibraries)?p:null,getFolderAppLink:a(n.ViewLibraries)?f:null}),!!q()&&(0,M.jsx)(ke,{originalVideo:e.clip._parentVideo,shareId:e.shareId,queryParams:e.queryParams,audiences:e.audiences,headingRef:z,currentUser:e.currentUser,commonVideoProps:e.commonVideoProps}),!s.isUgc(e.clip._parentVideo)&&(0,M.jsx)(pe,{headingRef:z,media:e.clip,parentVideo:e.clip._parentVideo,contentRegion:e.currentUser.contentRegion,shareId:e.shareId,presentationSlug:null}),Ie&&(0,M.jsx)(_e,{topics:e.relatedTopics,getAppLink:e.getRelatedTopicAppLink}),(0,M.jsx)(fe,{presentationSlug:null,currentVideo:e.clip,relatedVideos:e.relatedVideos,currentUser:e.currentUser,audiences:e.audiences,getVideoAppLink:(t,n)=>h.getAppLink(t,{...n,context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv,includeContext:e.currentUser?.isAuthenticated},null),moviesAndTv:e.queryParams.mtv,commonVideoProps:e.commonVideoProps})]}),g&&(0,M.jsx)(S,{isExpanded:I,setIsExpanded:L,toggleTheatreMode:null,items:V,activeId:y,setControlledId:F,analyticsData:{videoId:e.clip.id,videoName:e.clip.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!0,hasTranscription:e.hasTheatreMode,shouldShowToc:V.length>=3,additionalComponents:[$?(0,M.jsx)(O,{className:`mt-2`,topics:e.relatedTopics,getAppLink:e.getRelatedTopicAppLink}):void 0]})]})]}),!g&&(0,M.jsx)(S,{isExpanded:I,setIsExpanded:L,toggleTheatreMode:e.hasTheatreMode?v:null,items:V,activeId:y,setControlledId:F,analyticsData:{videoId:e.clip.id,videoName:e.clip.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!1,hasTranscription:e.hasTheatreMode,shouldShowToc:V.length>=3,additionalComponents:[$?(0,M.jsx)(O,{className:`mt-2`,topics:e.relatedTopics,getAppLink:e.getRelatedTopicAppLink}):void 0]})]})}export{F as t};
2
+ //# sourceMappingURL=CyKAODDv.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CLYwJpCJ.chunk.js","names":[],"sources":["../../src/shared/views/play-clip/components/clipped-from/ClippedFrom.tsx","../../src/shared/views/play-clip/components/play-clip/play-clip.module.scss","../../src/shared/views/play-clip/components/play-clip/PlayClip.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser, PresentationAudience, VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\n\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nconst namespace = 'shared.playClip';\n\ninterface ClippedFromProps {\n originalVideo: VideoTypes;\n queryParams: PlayViewQueryParams;\n audiences: PresentationAudience[];\n shareId?: string;\n headingRef: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n currentUser: CurrentUser;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function ClippedFrom(props: ClippedFromProps) {\n const { hasPermissions } = usePermissions();\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem, presentationSlug: null });\n\n return (\n <section\n className='play-page-section'\n id={PlayPageAnchor.ClippedFrom}\n ref={el => {\n (el && props.headingRef?.current) && props.headingRef.current.set(PlayPageAnchor.ClippedFrom, el);\n }}\n >\n <h2 className='h4 mb-0'><Text namespace={namespace} phrase='clippedFrom' /></h2>\n <VideoActionsContext.Provider value={videoActions}>\n <VideoList\n videos={[props.originalVideo]}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv,\n includeContext: props.currentUser?.isAuthenticated\n }, null)}\n hasPermissions={hasPermissions}\n presentationAudiences={props.audiences}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n commonVideoProps={props.commonVideoProps}\n />\n </VideoActionsContext.Provider>\n </section>\n );\n}\n","@import '~styles/utils/include-media';\n:local {\n .main.expandedToc {\n width: calc(100% - 15rem); //minus sidebar toc width and margin\n }\n\n .main.theatreMode {\n width: 100% !important;\n }\n\n .theatreModeContent {\n display: flex;\n margin: auto !important;\n\n @include media('<=xl') {\n max-width: 100%;\n }\n }\n\n .theatreModePlayPageContainer {\n //override TeacherLayoutComponent container style\n @media (min-width: 1200px) {\n max-width: none !important;\n }\n }\n\n .theatreModeLeftContent {\n width: calc(100% - 15rem);\n @include media('<=lg') {\n width: 100%;\n }\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\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 { 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 { ProductId } from 'libs/shared/enums/ProductId';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { HasProductFunc } from 'libs/shared/hooks/UseProducts';\nimport { useTableOfContentsActiveHeading } from 'libs/shared/hooks/useTableOfContentsActiveHeading';\nimport { useTableOfContentsScroll } from 'libs/shared/hooks/useTableOfContentsScroll';\nimport { Classification, Clip, CurrentUser, InteractiveMetadata, Link, PointOfInterest, PresentationAudience, RelatedClassification, Resource } from 'libs/shared/interfaces';\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 { PlayPageInteractives } from 'shared/components/play-page/components/play-page-interactives/PlayPageInteractives';\nimport { PlayPageSidePanel } from 'shared/components/play-page/components/side-panel/PlayPageSidePanel';\nimport { 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 { getFolderAppLink, getLibraryAppLink } from 'shared/components/play-page/PlayPageUtils';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { PlayerPlaceholder } from 'shared/components/player-placeholder/PlayerPlaceholder';\nimport { MobileRelatedTopics } from 'shared/components/related-topics/MobileRelatedTopics';\nimport { RelatedTopics } from 'shared/components/related-topics/RelatedTopics';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\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 { ResourceHelper } from 'shared/utils/ResourceHelper';\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';\nimport { ClippedFrom } from 'shared/views/play-clip/components/clipped-from/ClippedFrom';\n\nimport styles from './play-clip.module.scss';\n\nconst getResourceAppLink = (videoId: string, shareId: string, canViewResource: boolean) =>\n (resource: Resource | Link) => {\n if (!canViewResource) {\n return {\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n };\n }\n\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PREVIEW_PDF,\n args: [resource.id],\n params: {\n videoId: videoId,\n shareId: shareId\n }\n };\n };\n\ninterface PlayClipProps {\n clip: Clip;\n clips: Clip[];\n interactives: InteractiveMetadata[];\n currentUser: CurrentUser;\n relatedVideos: RelatedVideosHash;\n queryParams: PlayViewQueryParams;\n hasProduct: HasProductFunc;\n audiences: PresentationAudience[];\n shareId?: string;\n canManageVideoAccess: boolean;\n pointsOfInterest?: PointOfInterest[];\n featureAccess: VideoFeaturesHash;\n tableOfContentsId: string;\n shouldShowSideTableOfContents: boolean;\n hasTopicDirectories: boolean;\n hasTheatreMode: boolean;\n breadcrumbs?: Breadcrumb[];\n commonVideoProps: CommonVideoProps;\n relatedTopics?: RelatedClassification[];\n getRelatedTopicAppLink?: (classification: Classification) => Core.AppLink;\n}\n\nexport function PlayClip(props: PlayClipProps): JSX.Element {\n const playerContext = usePlayerContext();\n\n const { hasPermissions } = usePermissions();\n const { canConsume } = VideoHelper.getCanBeConsumed(props.clip);\n \n const theatreMode = getIsTheatreMode(props.hasTheatreMode, playerContext);\n const shouldUseTheareModeStyle = useTheatreModeStyle(\n props.hasTheatreMode,\n playerContext.mode,\n playerContext.defaultDisplayMode\n );\n\n function toggleTheatreMode(value: boolean) {\n playerContext.playerRef?.current?.toggleTheatreMode?.(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.clip) && props.featureAccess.canViewGlance;\n\n const { headingRef, headingElements } = useSectionHeadings(hasGlance);\n const items = headingElements.map(ele => {\n return {\n id: ele.id as PlayPageAnchor,\n name: PlayPageUtils.getSectionHeading(\n ele.id as PlayPageAnchor,\n {\n clips: props.clips,\n interactives: props.interactives,\n resources: props.clip.resources?.data,\n isPlayClipPage: true\n }\n )\n };\n });\n\n useTableOfContentsActiveHeading({\n setActiveId: setTableOfContentsActiveId,\n headingElements,\n controlledId,\n setControlledId\n });\n\n useTableOfContentsScroll(headingElements, controlledId);\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.clip);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\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 clipResourceAppLink = getResourceAppLink(\n props.clip.id,\n props.shareId,\n props.featureAccess.canViewResourceItems\n );\n\n useResourcePopup({\n resourcePopupId: props.queryParams?.resourceId,\n resources: props.clip.resources?.data,\n getResourceAppLink: clipResourceAppLink\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 function canAccessOriginal(): boolean {\n if (!props.clip._parentVideo || !props.clip._canBeConsumed?.value)\n return false;\n\n if (!props.currentUser?.isAuthenticated)\n return false;\n\n if (!props.hasProduct(ProductId.Primary))\n return false;\n\n if (hasStudentExperience)\n return false;\n\n return true;\n }\n\n function getOriginalVideoAppLink(): Core.AppLink {\n if (!canAccessOriginal())\n return null;\n \n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [\n null,\n props.clip._parentVideo.id,\n TextHelper.slugify(props.clip._parentVideo.name)\n ]\n };\n }\n\n const showPlayerPlaceholder = playerContext.mode === 'picture-in-picture' || props.featureAccess.canViewPublicLayout;\n\n const otherClips = props.clips?.filter(c => c.id.toString() !== props.clip.id.toString()) ?? [];\n\n const calcClassNameProps = {\n hasTheatreMode: props.hasTheatreMode,\n shouldShowSideTableOfContents: props.shouldShowSideTableOfContents,\n tableOfContentsExpanded,\n theatreMode\n };\n const mainClassName = getMainClassName(calcClassNameProps);\n const contentClassName = getContentClassName(calcClassNameProps);\n\n const [ , setContainerClassName ] = useViewModel(ViewModelKeys.PLAY_PAGE_CONTAINER_CLASS_NAME);\n\n const resources = getResources(props.clip, hasPermissions(PermissionName.StudentExperience));\n const downloadableResources = resources.filter(MasterTypeHelper.isResource);\n\n const showRelatedTopics = props.shouldShowSideTableOfContents && props.relatedTopics?.length > 0;\n const showMobileRelatedTopics = !props.shouldShowSideTableOfContents && props.relatedTopics?.length > 0;\n\n function onDownloadClick() {\n if (downloadableResources.length === 1) {\n DownloadHelper.downloadResource(\n downloadableResources[0],\n { clipId: props.clip.id, clipName: props.clip.name },\n { location: LocationContext.PlayClip, 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.clip?.id, props.shareId ]\n });\n }\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 return (\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.clip._restrictions}\n yearGroups={props.commonVideoProps.yearGroups}\n objectId={props.clip.id}\n objectTypeId={MasterType.Clip}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n {isArchived && (\n <ArchivedBanner\n typeId={props.clip.typeId}\n hasStudentExperience={hasStudentExperience}\n />\n )}\n\n <section\n id={PlayPageAnchor.Video}\n className={`mb-2 ${SeoConstants.GLOBAL_PLAYER_SELECTOR}`}\n ref={el => { (el && headingRef?.current) && headingRef.current.set(PlayPageAnchor.Video, el); }}\n >\n {canConsume && (\n <GlobalPlayerConsumer\n key={props.clip.id}\n objectId={props.clip.id}\n objectTypeId={props.clip.typeId}\n shareId={props.shareId}\n context={props.queryParams?.context}\n contextId={props.queryParams?.contextId}\n moviesAndTv={props.queryParams?.mtv}\n playNext={props.queryParams?.playNext}\n startTime={props.queryParams?.t ?? props.queryParams?.startTime}\n mode='default'\n location='play-page'\n />\n )}\n\n <div className={showPlayerPlaceholder ? '' : 'd-none'}>\n <PlayerPlaceholder\n video={props.clip}\n type='pip'\n />\n </div>\n </section>\n\n <div className={contentClassName}>\n <div className={shouldUseTheareModeStyle ? `${styles.theatreModeLeftContent}` : 'w-100'}>\n <PlayPageTitleAndActions\n presentationSlug={null}\n media={props.clip}\n yearGroups={props.commonVideoProps.yearGroups}\n audiences={props.audiences}\n originalVideoAppLink={getOriginalVideoAppLink()}\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.clip}\n pointsOfInterest={props.pointsOfInterest}\n setStartTime={(time: number) => playerContext.playerRef.current?.currentTime(time)}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n canViewGlance={hasGlance}\n />\n ) : (\n <VideoDetailsWithScrollbarV2\n video={props.clip}\n currentUser={props.currentUser}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n headingRef={headingRef}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n getLibraryAppLink={getLibraryAppLink}\n getFolderAppLink={getFolderAppLink}\n />\n )}\n\n <PlayPageResources\n video={props.clip}\n canViewResources={props.featureAccess.canViewResourceItems}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n getAppLink={clipResourceAppLink}\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n getImageThumbnailFallbackUrl={ResourceHelper.getImageThumbnailFallbackUrl}\n headingRef={headingRef}\n onDownloadClick={onDownloadClick}\n resources={resources}\n downloadableResources={downloadableResources}\n aboutResourcesAppLink={VideoAppLinkHelper.getAboutResourceAppLink()}\n />\n\n <PlayPageInteractives\n presentationSlug={null}\n video={props.clip}\n interactives={props.interactives}\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n canViewInteractives={props.featureAccess.canViewInteractives}\n headingRef={headingRef}\n commonVideoProps={props.commonVideoProps}\n />\n\n <PlayPageClips\n presentationSlug={null}\n clips={otherClips || []}\n video={props.clip}\n canViewClips={props.featureAccess.canViewClips}\n audiences={props.audiences}\n headingRef={headingRef}\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n commonVideoProps={props.commonVideoProps}\n />\n\n {/* if has glance, render video details here */}\n {hasGlance && (\n <VideoDetailsWithScrollbarV2\n video={props.clip}\n currentUser={props.currentUser}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n headingRef={headingRef}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n showHeading\n getLibraryAppLink={hasPermissions(PermissionName.ViewLibraries) ? getLibraryAppLink : null}\n getFolderAppLink={hasPermissions(PermissionName.ViewLibraries) ? getFolderAppLink : null}\n />\n )}\n \n {!!canAccessOriginal() && (\n <ClippedFrom\n originalVideo={props.clip._parentVideo}\n shareId={props.shareId}\n queryParams={props.queryParams}\n audiences={props.audiences}\n headingRef={headingRef}\n currentUser={props.currentUser}\n commonVideoProps={props.commonVideoProps}\n />\n )}\n\n {!VideoHelper.isUgc(props.clip._parentVideo) && (\n <CitationWidget\n headingRef={headingRef}\n media={props.clip}\n parentVideo={props.clip._parentVideo}\n contentRegion={props.currentUser.contentRegion}\n shareId={props.shareId}\n presentationSlug={null}\n />\n )}\n\n {showMobileRelatedTopics &&\n <MobileRelatedTopics\n topics={props.relatedTopics}\n getAppLink={props.getRelatedTopicAppLink}\n />\n }\n\n <RelatedVideos\n presentationSlug={null}\n currentVideo={props.clip}\n relatedVideos={props.relatedVideos}\n currentUser={props.currentUser}\n audiences={props.audiences}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv,\n includeContext: props.currentUser?.isAuthenticated\n }, null)}\n moviesAndTv={props.queryParams.mtv}\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n {theatreMode && (\n <PlayPageSidePanel\n isExpanded={tableOfContentsExpanded}\n setIsExpanded={onToggleTableOfContents}\n toggleTheatreMode={ null}\n items={items}\n activeId={tableOfContentsActiveId}\n setControlledId={setControlledId}\n analyticsData={{ videoId: props.clip.id, videoName: props.clip.name }}\n showInSide={props.shouldShowSideTableOfContents}\n isTheatreMode={true}\n hasTranscription={props.hasTheatreMode}\n shouldShowToc={items.length >= TOC_IGNORE_BOUNDARY}\n additionalComponents={[\n showRelatedTopics ? (\n <RelatedTopics className='mt-2' topics={props.relatedTopics} getAppLink={props.getRelatedTopicAppLink}/>\n ) : undefined\n ]}\n />\n )}\n </div>\n </main>\n\n {!theatreMode && (\n <PlayPageSidePanel\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.clip.id, videoName: props.clip.name }}\n showInSide={props.shouldShowSideTableOfContents}\n isTheatreMode={false}\n hasTranscription={props.hasTheatreMode}\n shouldShowToc={items.length >= TOC_IGNORE_BOUNDARY}\n additionalComponents={[\n showRelatedTopics ? (\n <RelatedTopics className='mt-2' topics={props.relatedTopics} getAppLink={props.getRelatedTopicAppLink}/>\n ) : undefined\n ]}\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CyKAODDv.chunk.js","names":[],"sources":["../../src/shared/views/play-clip/components/clipped-from/ClippedFrom.tsx","../../src/shared/views/play-clip/components/play-clip/play-clip.module.scss","../../src/shared/views/play-clip/components/play-clip/PlayClip.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser, PresentationAudience, VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\n\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nconst namespace = 'shared.playClip';\n\ninterface ClippedFromProps {\n originalVideo: VideoTypes;\n queryParams: PlayViewQueryParams;\n audiences: PresentationAudience[];\n shareId?: string;\n headingRef: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n currentUser: CurrentUser;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function ClippedFrom(props: ClippedFromProps) {\n const { hasPermissions } = usePermissions();\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem, presentationSlug: null });\n\n return (\n <section\n className='play-page-section'\n id={PlayPageAnchor.ClippedFrom}\n ref={el => {\n (el && props.headingRef?.current) && props.headingRef.current.set(PlayPageAnchor.ClippedFrom, el);\n }}\n >\n <h2 className='h4 mb-0'><Text namespace={namespace} phrase='clippedFrom' /></h2>\n <VideoActionsContext.Provider value={videoActions}>\n <VideoList\n videos={[props.originalVideo]}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv,\n includeContext: props.currentUser?.isAuthenticated\n }, null)}\n hasPermissions={hasPermissions}\n presentationAudiences={props.audiences}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n commonVideoProps={props.commonVideoProps}\n />\n </VideoActionsContext.Provider>\n </section>\n );\n}\n","@import '~styles/utils/include-media';\n:local {\n .main.expandedToc {\n width: calc(100% - 15rem); //minus sidebar toc width and margin\n }\n\n .main.theatreMode {\n width: 100% !important;\n }\n\n .theatreModeContent {\n display: flex;\n margin: auto !important;\n\n @include media('<=xl') {\n max-width: 100%;\n }\n }\n\n .theatreModePlayPageContainer {\n //override TeacherLayoutComponent container style\n @media (min-width: 1200px) {\n max-width: none !important;\n }\n }\n\n .theatreModeLeftContent {\n width: calc(100% - 15rem);\n @include media('<=lg') {\n width: 100%;\n }\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\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 { 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 { ProductId } from 'libs/shared/enums/ProductId';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { HasProductFunc } from 'libs/shared/hooks/UseProducts';\nimport { useTableOfContentsActiveHeading } from 'libs/shared/hooks/useTableOfContentsActiveHeading';\nimport { useTableOfContentsScroll } from 'libs/shared/hooks/useTableOfContentsScroll';\nimport { Classification, Clip, CurrentUser, InteractiveMetadata, Link, PointOfInterest, PresentationAudience, RelatedClassification, Resource } from 'libs/shared/interfaces';\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 { PlayPageInteractives } from 'shared/components/play-page/components/play-page-interactives/PlayPageInteractives';\nimport { PlayPageSidePanel } from 'shared/components/play-page/components/side-panel/PlayPageSidePanel';\nimport { 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 { getFolderAppLink, getLibraryAppLink } from 'shared/components/play-page/PlayPageUtils';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { PlayerPlaceholder } from 'shared/components/player-placeholder/PlayerPlaceholder';\nimport { MobileRelatedTopics } from 'shared/components/related-topics/MobileRelatedTopics';\nimport { RelatedTopics } from 'shared/components/related-topics/RelatedTopics';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\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 { ResourceHelper } from 'shared/utils/ResourceHelper';\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';\nimport { ClippedFrom } from 'shared/views/play-clip/components/clipped-from/ClippedFrom';\n\nimport styles from './play-clip.module.scss';\n\nconst getResourceAppLink = (videoId: string, shareId: string, canViewResource: boolean) =>\n (resource: Resource | Link) => {\n if (!canViewResource) {\n return {\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n };\n }\n\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PREVIEW_PDF,\n args: [resource.id],\n params: {\n videoId: videoId,\n shareId: shareId\n }\n };\n };\n\ninterface PlayClipProps {\n clip: Clip;\n clips: Clip[];\n interactives: InteractiveMetadata[];\n currentUser: CurrentUser;\n relatedVideos: RelatedVideosHash;\n queryParams: PlayViewQueryParams;\n hasProduct: HasProductFunc;\n audiences: PresentationAudience[];\n shareId?: string;\n canManageVideoAccess: boolean;\n pointsOfInterest?: PointOfInterest[];\n featureAccess: VideoFeaturesHash;\n tableOfContentsId: string;\n shouldShowSideTableOfContents: boolean;\n hasTopicDirectories: boolean;\n hasTheatreMode: boolean;\n breadcrumbs?: Breadcrumb[];\n commonVideoProps: CommonVideoProps;\n relatedTopics?: RelatedClassification[];\n getRelatedTopicAppLink?: (classification: Classification) => Core.AppLink;\n}\n\nexport function PlayClip(props: PlayClipProps): JSX.Element {\n const playerContext = usePlayerContext();\n\n const { hasPermissions } = usePermissions();\n const { canConsume } = VideoHelper.getCanBeConsumed(props.clip);\n \n const theatreMode = getIsTheatreMode(props.hasTheatreMode, playerContext);\n const shouldUseTheareModeStyle = useTheatreModeStyle(\n props.hasTheatreMode,\n playerContext.mode,\n playerContext.defaultDisplayMode\n );\n\n function toggleTheatreMode(value: boolean) {\n playerContext.playerRef?.current?.toggleTheatreMode?.(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.clip) && props.featureAccess.canViewGlance;\n\n const { headingRef, headingElements } = useSectionHeadings(hasGlance);\n const items = headingElements.map(ele => {\n return {\n id: ele.id as PlayPageAnchor,\n name: PlayPageUtils.getSectionHeading(\n ele.id as PlayPageAnchor,\n {\n clips: props.clips,\n interactives: props.interactives,\n resources: props.clip.resources?.data,\n isPlayClipPage: true\n }\n )\n };\n });\n\n useTableOfContentsActiveHeading({\n setActiveId: setTableOfContentsActiveId,\n headingElements,\n controlledId,\n setControlledId\n });\n\n useTableOfContentsScroll(headingElements, controlledId);\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.clip);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\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 clipResourceAppLink = getResourceAppLink(\n props.clip.id,\n props.shareId,\n props.featureAccess.canViewResourceItems\n );\n\n useResourcePopup({\n resourcePopupId: props.queryParams?.resourceId,\n resources: props.clip.resources?.data,\n getResourceAppLink: clipResourceAppLink\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 function canAccessOriginal(): boolean {\n if (!props.clip._parentVideo || !props.clip._canBeConsumed?.value)\n return false;\n\n if (!props.currentUser?.isAuthenticated)\n return false;\n\n if (!props.hasProduct(ProductId.Primary))\n return false;\n\n if (hasStudentExperience)\n return false;\n\n return true;\n }\n\n function getOriginalVideoAppLink(): Core.AppLink {\n if (!canAccessOriginal())\n return null;\n \n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [\n null,\n props.clip._parentVideo.id,\n TextHelper.slugify(props.clip._parentVideo.name)\n ]\n };\n }\n\n const showPlayerPlaceholder = playerContext.mode === 'picture-in-picture' || props.featureAccess.canViewPublicLayout;\n\n const otherClips = props.clips?.filter(c => c.id.toString() !== props.clip.id.toString()) ?? [];\n\n const calcClassNameProps = {\n hasTheatreMode: props.hasTheatreMode,\n shouldShowSideTableOfContents: props.shouldShowSideTableOfContents,\n tableOfContentsExpanded,\n theatreMode\n };\n const mainClassName = getMainClassName(calcClassNameProps);\n const contentClassName = getContentClassName(calcClassNameProps);\n\n const [ , setContainerClassName ] = useViewModel(ViewModelKeys.PLAY_PAGE_CONTAINER_CLASS_NAME);\n\n const resources = getResources(props.clip, hasPermissions(PermissionName.StudentExperience));\n const downloadableResources = resources.filter(MasterTypeHelper.isResource);\n\n const showRelatedTopics = props.shouldShowSideTableOfContents && props.relatedTopics?.length > 0;\n const showMobileRelatedTopics = !props.shouldShowSideTableOfContents && props.relatedTopics?.length > 0;\n\n function onDownloadClick() {\n if (downloadableResources.length === 1) {\n DownloadHelper.downloadResource(\n downloadableResources[0],\n { clipId: props.clip.id, clipName: props.clip.name },\n { location: LocationContext.PlayClip, 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.clip?.id, props.shareId ]\n });\n }\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 return (\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.clip._restrictions}\n yearGroups={props.commonVideoProps.yearGroups}\n objectId={props.clip.id}\n objectTypeId={MasterType.Clip}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n {isArchived && (\n <ArchivedBanner\n typeId={props.clip.typeId}\n hasStudentExperience={hasStudentExperience}\n />\n )}\n\n <section\n id={PlayPageAnchor.Video}\n className={`mb-2 ${SeoConstants.GLOBAL_PLAYER_SELECTOR}`}\n ref={el => { (el && headingRef?.current) && headingRef.current.set(PlayPageAnchor.Video, el); }}\n >\n {canConsume && (\n <GlobalPlayerConsumer\n key={props.clip.id}\n objectId={props.clip.id}\n objectTypeId={props.clip.typeId}\n shareId={props.shareId}\n context={props.queryParams?.context}\n contextId={props.queryParams?.contextId}\n moviesAndTv={props.queryParams?.mtv}\n playNext={props.queryParams?.playNext}\n startTime={props.queryParams?.t ?? props.queryParams?.startTime}\n mode='default'\n location='play-page'\n />\n )}\n\n <div className={showPlayerPlaceholder ? '' : 'd-none'}>\n <PlayerPlaceholder\n video={props.clip}\n type='pip'\n />\n </div>\n </section>\n\n <div className={contentClassName}>\n <div className={shouldUseTheareModeStyle ? `${styles.theatreModeLeftContent}` : 'w-100'}>\n <PlayPageTitleAndActions\n presentationSlug={null}\n media={props.clip}\n yearGroups={props.commonVideoProps.yearGroups}\n audiences={props.audiences}\n originalVideoAppLink={getOriginalVideoAppLink()}\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.clip}\n pointsOfInterest={props.pointsOfInterest}\n setStartTime={(time: number) => playerContext.playerRef.current?.currentTime(time)}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n canViewGlance={hasGlance}\n />\n ) : (\n <VideoDetailsWithScrollbarV2\n video={props.clip}\n currentUser={props.currentUser}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n headingRef={headingRef}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n getLibraryAppLink={getLibraryAppLink}\n getFolderAppLink={getFolderAppLink}\n />\n )}\n\n <PlayPageResources\n video={props.clip}\n canViewResources={props.featureAccess.canViewResourceItems}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n getAppLink={clipResourceAppLink}\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n getImageThumbnailFallbackUrl={ResourceHelper.getImageThumbnailFallbackUrl}\n headingRef={headingRef}\n onDownloadClick={onDownloadClick}\n resources={resources}\n downloadableResources={downloadableResources}\n aboutResourcesAppLink={VideoAppLinkHelper.getAboutResourceAppLink()}\n />\n\n <PlayPageInteractives\n presentationSlug={null}\n video={props.clip}\n interactives={props.interactives}\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n canViewInteractives={props.featureAccess.canViewInteractives}\n headingRef={headingRef}\n commonVideoProps={props.commonVideoProps}\n />\n\n <PlayPageClips\n presentationSlug={null}\n clips={otherClips || []}\n video={props.clip}\n canViewClips={props.featureAccess.canViewClips}\n audiences={props.audiences}\n headingRef={headingRef}\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n commonVideoProps={props.commonVideoProps}\n />\n\n {/* if has glance, render video details here */}\n {hasGlance && (\n <VideoDetailsWithScrollbarV2\n video={props.clip}\n currentUser={props.currentUser}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n headingRef={headingRef}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n showHeading\n getLibraryAppLink={hasPermissions(PermissionName.ViewLibraries) ? getLibraryAppLink : null}\n getFolderAppLink={hasPermissions(PermissionName.ViewLibraries) ? getFolderAppLink : null}\n />\n )}\n \n {!!canAccessOriginal() && (\n <ClippedFrom\n originalVideo={props.clip._parentVideo}\n shareId={props.shareId}\n queryParams={props.queryParams}\n audiences={props.audiences}\n headingRef={headingRef}\n currentUser={props.currentUser}\n commonVideoProps={props.commonVideoProps}\n />\n )}\n\n {!VideoHelper.isUgc(props.clip._parentVideo) && (\n <CitationWidget\n headingRef={headingRef}\n media={props.clip}\n parentVideo={props.clip._parentVideo}\n contentRegion={props.currentUser.contentRegion}\n shareId={props.shareId}\n presentationSlug={null}\n />\n )}\n\n {showMobileRelatedTopics &&\n <MobileRelatedTopics\n topics={props.relatedTopics}\n getAppLink={props.getRelatedTopicAppLink}\n />\n }\n\n <RelatedVideos\n presentationSlug={null}\n currentVideo={props.clip}\n relatedVideos={props.relatedVideos}\n currentUser={props.currentUser}\n audiences={props.audiences}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv,\n includeContext: props.currentUser?.isAuthenticated\n }, null)}\n moviesAndTv={props.queryParams.mtv}\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n {theatreMode && (\n <PlayPageSidePanel\n isExpanded={tableOfContentsExpanded}\n setIsExpanded={onToggleTableOfContents}\n toggleTheatreMode={ null}\n items={items}\n activeId={tableOfContentsActiveId}\n setControlledId={setControlledId}\n analyticsData={{ videoId: props.clip.id, videoName: props.clip.name }}\n showInSide={props.shouldShowSideTableOfContents}\n isTheatreMode={true}\n hasTranscription={props.hasTheatreMode}\n shouldShowToc={items.length >= TOC_IGNORE_BOUNDARY}\n additionalComponents={[\n showRelatedTopics ? (\n <RelatedTopics className='mt-2' topics={props.relatedTopics} getAppLink={props.getRelatedTopicAppLink}/>\n ) : undefined\n ]}\n />\n )}\n </div>\n </main>\n\n {!theatreMode && (\n <PlayPageSidePanel\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.clip.id, videoName: props.clip.name }}\n showInSide={props.shouldShowSideTableOfContents}\n isTheatreMode={false}\n hasTranscription={props.hasTheatreMode}\n shouldShowToc={items.length >= TOC_IGNORE_BOUNDARY}\n additionalComponents={[\n showRelatedTopics ? (\n <RelatedTopics className='mt-2' topics={props.relatedTopics} getAppLink={props.getRelatedTopicAppLink}/>\n ) : undefined\n ]}\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import"./DAXXjFlN.chunk.js";import{t as e}from"./DMnm3Ewv.chunk.js";import{n as t}from"./B785hxeE.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{d as i}from"./CEamUdnf.chunk.js";import{y as a}from"./BHvdJc9z.chunk.js";import{t as o}from"./Bo5OB-YD2.chunk.js";import{t as s}from"./DbSUQ2A12.chunk.js";import{t as c}from"./C5kGxy6G.chunk.js";import{t as l}from"./Bjt_-lTs.chunk.js";import{t as u}from"./D_gWf2lC.chunk.js";import{n as d,t as f}from"./Dy8J1lcl.chunk.js";import{n as p,t as m}from"./BWWumAle.chunk.js";import{t as h}from"./BQAs90Va.chunk.js";import{t as g}from"./Ctbl-14w.chunk.js";import{t as _}from"./BKSSWxpx2.chunk.js";import{r as v}from"./CHZLAcZ_2.chunk.js";import{t as y}from"./CgW21-1J.chunk.js";import{n as b}from"./CuwbnVWn2.chunk.js";import{t as x}from"./C9XBZFiR.chunk.js";import{t as S}from"./7E_Q1-g92.chunk.js";import{t as C}from"./CC5Dr9aG2.chunk.js";import{t as w}from"./C87okfG_2.chunk.js";import{t as T}from"./MBoxVxPO2.chunk.js";import{n as E,r as D,t as O}from"./CTpJ4vP62.chunk.js";n();var k=r(),A={notFound:y,forbidden:{privacy:g}};function j(e){return e?._parentClip||e?._parentVideo}function M(n){let{hasPermissions:r}=_(),g=i(u.config()),y=i(l.token()),M=i(l.currentUser()),N=i(M.data?.isAuthenticated&&o.yearGroups(M.data.customerId)),P=i(c.interactiveMetadata(n.id)),F=D(),I=i(P.statusCode===e.Forbidden&&c.interactiveMetadata(n.id,s.StripMetadata)),L=i(F&&P.data&&c.interactive(P.data.interactiveId)),R=i(F&&P.data&&c.videoInteractives(j(P.data).id)),z=w(),B=i(m.createViewKey(n.id,p.MasterObject)),V=v({video:P.data,context:n.queryParams.context,contextId:n.queryParams.contextId,moviesAndTv:n.queryParams.mtv,currentUser:M.data}),{commonVideoProps:H,hasCommonVideoPropsCompleted:U}=S({locationContext:F?a.PreviewInteractive:a.PlayInteractive,mtv:n.queryParams.mtv});b({id:n.id,app:`interactives`}),x(P,A,{forbidden:!0}),h(I),f(d.getInteractiveMetadata({content:P.data})),T(V.videos??[]);let W=C({name:P.data?.name});return P.data&&g.hasCompleted&&M.hasCompleted&&(!F||L.hasCompleted)&&B.hasCompleted&&y.hasCompleted&&U?F?(0,k.jsx)(O,{currentUser:M.data,queryParams:n.queryParams,interactive:P.data,interactives:R.data?.data,isPreviewPreventScrubbingEnabled:L.data.preventScrubbing,audiences:z.data,relatedVideos:V,canManageVideoAccess:r(t.ManageVideoAccess),breadcrumbs:W,token:y.data,commonVideoProps:H}):(0,k.jsx)(E,{interactive:P.data,currentUser:M.data,config:g.data,yearGroups:N.data,audiences:z.data,queryParams:n.queryParams,viewKey:B.data,relatedVideos:V,startTime:n.queryParams?.t??n.queryParams?.startTime,token:y.data,commonVideoProps:H}):(0,k.jsx)(k.Fragment,{})}export{M as InteractiveView};
2
- //# sourceMappingURL=C35iCvXx2.chunk.js.map
1
+ import"./DAXXjFlN.chunk.js";import{t as e}from"./DMnm3Ewv.chunk.js";import{n as t}from"./B785hxeE.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{d as i}from"./CEamUdnf.chunk.js";import{y as a}from"./BHvdJc9z.chunk.js";import{t as o}from"./Bo5OB-YD2.chunk.js";import{t as s}from"./DbSUQ2A12.chunk.js";import{t as c}from"./C5kGxy6G.chunk.js";import{t as l}from"./Bjt_-lTs.chunk.js";import{t as u}from"./D_gWf2lC.chunk.js";import{n as d,t as f}from"./Dy8J1lcl.chunk.js";import{n as p,t as m}from"./BWWumAle.chunk.js";import{t as h}from"./BQAs90Va.chunk.js";import{t as g}from"./Ctbl-14w.chunk.js";import{t as _}from"./BKSSWxpx2.chunk.js";import{r as v}from"./B-V5u42C2.chunk.js";import{t as y}from"./CgW21-1J.chunk.js";import{n as b}from"./CuwbnVWn2.chunk.js";import{t as x}from"./C9XBZFiR.chunk.js";import{t as S}from"./7E_Q1-g92.chunk.js";import{t as C}from"./CC5Dr9aG2.chunk.js";import{t as w}from"./C87okfG_2.chunk.js";import{t as T}from"./MBoxVxPO2.chunk.js";import{n as E,r as D,t as O}from"./DT8lKxmy2.chunk.js";n();var k=r(),A={notFound:y,forbidden:{privacy:g}};function j(e){return e?._parentClip||e?._parentVideo}function M(n){let{hasPermissions:r}=_(),g=i(u.config()),y=i(l.token()),M=i(l.currentUser()),N=i(M.data?.isAuthenticated&&o.yearGroups(M.data.customerId)),P=i(c.interactiveMetadata(n.id)),F=D(),I=i(P.statusCode===e.Forbidden&&c.interactiveMetadata(n.id,s.StripMetadata)),L=i(F&&P.data&&c.interactive(P.data.interactiveId)),R=i(F&&P.data&&c.videoInteractives(j(P.data).id)),z=w(),B=i(m.createViewKey(n.id,p.MasterObject)),V=v({video:P.data,context:n.queryParams.context,contextId:n.queryParams.contextId,moviesAndTv:n.queryParams.mtv,currentUser:M.data}),{commonVideoProps:H,hasCommonVideoPropsCompleted:U}=S({locationContext:F?a.PreviewInteractive:a.PlayInteractive,mtv:n.queryParams.mtv});b({id:n.id,app:`interactives`}),x(P,A,{forbidden:!0}),h(I),f(d.getInteractiveMetadata({content:P.data})),T(V.videos??[]);let W=C({name:P.data?.name});return P.data&&g.hasCompleted&&M.hasCompleted&&(!F||L.hasCompleted)&&B.hasCompleted&&y.hasCompleted&&U?F?(0,k.jsx)(O,{currentUser:M.data,queryParams:n.queryParams,interactive:P.data,interactives:R.data?.data,isPreviewPreventScrubbingEnabled:L.data.preventScrubbing,audiences:z.data,relatedVideos:V,canManageVideoAccess:r(t.ManageVideoAccess),breadcrumbs:W,token:y.data,commonVideoProps:H}):(0,k.jsx)(E,{interactive:P.data,currentUser:M.data,config:g.data,yearGroups:N.data,audiences:z.data,queryParams:n.queryParams,viewKey:B.data,relatedVideos:V,startTime:n.queryParams?.t??n.queryParams?.startTime,token:y.data,commonVideoProps:H}):(0,k.jsx)(k.Fragment,{})}export{M as InteractiveView};
2
+ //# sourceMappingURL=Cys9_W-O2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"C35iCvXx2.chunk.js","names":[],"sources":["../../src/apps/interactives/views/interactive-view/InteractiveView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, Config, CurrentUser, Interactive, InteractiveCollection, InteractiveMetadata, PlayerViewKey, Video, YearGroup } from 'libs/shared/interfaces';\nimport { AuthToken } from 'libs/shared/interfaces/models/AuthToken';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useShouldPreviewInteractive } from 'shared/hooks/useShouldPreviewInteractive';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { PlayInteractive } from 'apps/interactives/components/play-interactive/PlayInteractive';\nimport { PreviewInteractive } from 'apps/interactives/components/preview-interactive/PreviewInteractive';\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nfunction getSourceVideo(interactive?: InteractiveMetadata): Clip | Video {\n return interactive?._parentClip || interactive?._parentVideo;\n}\ninterface InteractiveViewProps {\n id: string;\n queryParams: PlayViewQueryParams;\n}\n\nexport function InteractiveView(props: InteractiveViewProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const token = Flight.useBasicFetch<AuthToken>(UserRequests.token());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.id)\n );\n const shouldPreviewInteractive = useShouldPreviewInteractive();\n const strippedInteractiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n interactiveMetadata.statusCode === HttpStatus.Forbidden &&\n InteractiveRequests.interactiveMetadata(props.id, PermissionFilterOption.StripMetadata)\n );\n const interactive = Flight.useBasicFetch<Interactive>(\n shouldPreviewInteractive && interactiveMetadata.data &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n shouldPreviewInteractive && interactiveMetadata.data &&\n InteractiveRequests.videoInteractives(getSourceVideo(interactiveMetadata.data).id)\n );\n \n const audiences = usePresentationAudiences();\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(PlayerRequests.createViewKey(props.id, MediaIdType.MasterObject));\n\n const relatedVideos = useGetRelatedVideos({\n video: interactiveMetadata.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n\n const locationContext = shouldPreviewInteractive ?\n LocationContext.PreviewInteractive :\n LocationContext.PlayInteractive;\n \n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext, mtv: props.queryParams.mtv });\n\n useDeepLinks({ id: props.id, app: 'interactives' });\n\n useHandleObjectError(interactiveMetadata, videoErrors, { forbidden: true });\n useCannotConsumeError(strippedInteractiveMetadata);\n useSetPageMetadata(PageMetadataHelper.getInteractiveMetadata({ content: interactiveMetadata.data }));\n\n useVideoMixin(relatedVideos.videos ?? []);\n\n const breadcrumbs = useBreadcrumbs({ name: interactiveMetadata.data?.name });\n\n const hasLoaded = (\n interactiveMetadata.data &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!shouldPreviewInteractive || interactive.hasCompleted) &&\n viewKey.hasCompleted &&\n token.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n if (shouldPreviewInteractive) {\n return (\n <PreviewInteractive\n currentUser={currentUser.data}\n queryParams={props.queryParams}\n interactive={interactiveMetadata.data}\n interactives={interactives.data?.data}\n isPreviewPreventScrubbingEnabled={interactive.data.preventScrubbing}\n audiences={audiences.data}\n relatedVideos={relatedVideos}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n breadcrumbs={breadcrumbs}\n token={token.data}\n commonVideoProps={commonVideoProps}\n />\n );\n }\n\n return (\n <PlayInteractive\n interactive={interactiveMetadata.data}\n currentUser={currentUser.data}\n config={config.data}\n yearGroups={yearGroups.data}\n audiences={audiences.data}\n queryParams={props.queryParams}\n viewKey={viewKey.data}\n relatedVideos={relatedVideos}\n startTime={props.queryParams?.t ?? props.queryParams?.startTime}\n token={token.data}\n commonVideoProps={commonVideoProps}\n />\n );\n}\n"],"mappings":"wjCAqCM,EAAc,CAClB,SAAU,EACV,UAAW,CACT,QAAS,CACX,CACF,EAEA,SAAS,EAAe,EAAiD,CACvE,OAAO,GAAa,aAAe,GAAa,YAClD,CAMA,SAAgB,EAAgB,EAA0C,CACxE,GAAM,CAAE,kBAAmB,EAAe,EAEpC,EAAS,EAA6B,EAAe,OAAO,CAAC,EAC7D,EAAQ,EAAgC,EAAa,MAAM,CAAC,EAC5D,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAa,EACjB,EAAY,MAAM,iBAAmB,EAAiB,WAAW,EAAY,KAAK,UAAU,CAC9F,EAEM,EAAsB,EAC1B,EAAoB,oBAAoB,EAAM,EAAE,CAClD,EACM,EAA2B,EAA4B,EACvD,EAA8B,EAClC,EAAoB,aAAe,EAAW,WAC5C,EAAoB,oBAAoB,EAAM,GAAI,EAAuB,aAAa,CAC1F,EACM,EAAc,EAClB,GAA4B,EAAoB,MAChD,EAAoB,YAAY,EAAoB,KAAK,aAAa,CACxE,EACM,EAAe,EACnB,GAA4B,EAAoB,MAChD,EAAoB,kBAAkB,EAAe,EAAoB,IAAI,CAAC,CAAC,EAAE,CACnF,EAEM,EAAY,EAAyB,EACrC,EAAU,EAAoC,EAAe,cAAc,EAAM,GAAI,EAAY,YAAY,CAAC,EAE9G,EAAgB,EAAoB,CACxC,MAAO,EAAoB,KAC3B,QAAS,EAAM,YAAY,QAC3B,UAAW,EAAM,YAAY,UAC7B,YAAa,EAAM,YAAY,IAC/B,YAAa,EAAY,IAC3B,CAAC,EAMK,CACJ,mBACA,gCACE,EAAoB,CAAE,gBAPF,EACtB,EAAgB,mBAChB,EAAgB,gBAKyB,IAAK,EAAM,YAAY,GAAI,CAAC,EAEvE,EAAa,CAAE,GAAI,EAAM,GAAI,IAAK,cAAe,CAAC,EAElD,EAAqB,EAAqB,EAAa,CAAE,UAAW,EAAK,CAAC,EAC1E,EAAsB,CAA2B,EACjD,EAAmB,EAAmB,uBAAuB,CAAE,QAAS,EAAoB,IAAK,CAAC,CAAC,EAEnG,EAAc,EAAc,QAAU,CAAC,CAAC,EAExC,IAAM,EAAc,EAAe,CAAE,KAAM,EAAoB,MAAM,IAAK,CAAC,EAiC3E,OA9BE,EAAoB,MACpB,EAAO,cACP,EAAY,eACX,CAAC,GAA4B,EAAY,eAC1C,EAAQ,cACR,EAAM,cACN,EAME,GAEA,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAa,EAAY,KACzB,YAAa,EAAM,YACnB,YAAa,EAAoB,KACjC,aAAc,EAAa,MAAM,KACjC,iCAAkC,EAAY,KAAK,iBACnD,UAAW,EAAU,KACN,gBACf,qBAAsB,EAAe,EAAe,iBAAiB,EACxD,cACb,MAAO,EAAM,KACK,kBACnB,CAAA,GAKH,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAa,EAAoB,KACjC,YAAa,EAAY,KACzB,OAAQ,EAAO,KACf,WAAY,EAAW,KACvB,UAAW,EAAU,KACrB,YAAa,EAAM,YACnB,QAAS,EAAQ,KACF,gBACf,UAAW,EAAM,aAAa,GAAK,EAAM,aAAa,UACtD,MAAO,EAAM,KACK,kBACnB,CAAA,GAjCM,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAmCf"}
1
+ {"version":3,"file":"Cys9_W-O2.chunk.js","names":[],"sources":["../../src/apps/interactives/views/interactive-view/InteractiveView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, Config, CurrentUser, Interactive, InteractiveCollection, InteractiveMetadata, PlayerViewKey, Video, YearGroup } from 'libs/shared/interfaces';\nimport { AuthToken } from 'libs/shared/interfaces/models/AuthToken';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useShouldPreviewInteractive } from 'shared/hooks/useShouldPreviewInteractive';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { PlayInteractive } from 'apps/interactives/components/play-interactive/PlayInteractive';\nimport { PreviewInteractive } from 'apps/interactives/components/preview-interactive/PreviewInteractive';\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nfunction getSourceVideo(interactive?: InteractiveMetadata): Clip | Video {\n return interactive?._parentClip || interactive?._parentVideo;\n}\ninterface InteractiveViewProps {\n id: string;\n queryParams: PlayViewQueryParams;\n}\n\nexport function InteractiveView(props: InteractiveViewProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const token = Flight.useBasicFetch<AuthToken>(UserRequests.token());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.id)\n );\n const shouldPreviewInteractive = useShouldPreviewInteractive();\n const strippedInteractiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n interactiveMetadata.statusCode === HttpStatus.Forbidden &&\n InteractiveRequests.interactiveMetadata(props.id, PermissionFilterOption.StripMetadata)\n );\n const interactive = Flight.useBasicFetch<Interactive>(\n shouldPreviewInteractive && interactiveMetadata.data &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n shouldPreviewInteractive && interactiveMetadata.data &&\n InteractiveRequests.videoInteractives(getSourceVideo(interactiveMetadata.data).id)\n );\n \n const audiences = usePresentationAudiences();\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(PlayerRequests.createViewKey(props.id, MediaIdType.MasterObject));\n\n const relatedVideos = useGetRelatedVideos({\n video: interactiveMetadata.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n\n const locationContext = shouldPreviewInteractive ?\n LocationContext.PreviewInteractive :\n LocationContext.PlayInteractive;\n \n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext, mtv: props.queryParams.mtv });\n\n useDeepLinks({ id: props.id, app: 'interactives' });\n\n useHandleObjectError(interactiveMetadata, videoErrors, { forbidden: true });\n useCannotConsumeError(strippedInteractiveMetadata);\n useSetPageMetadata(PageMetadataHelper.getInteractiveMetadata({ content: interactiveMetadata.data }));\n\n useVideoMixin(relatedVideos.videos ?? []);\n\n const breadcrumbs = useBreadcrumbs({ name: interactiveMetadata.data?.name });\n\n const hasLoaded = (\n interactiveMetadata.data &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!shouldPreviewInteractive || interactive.hasCompleted) &&\n viewKey.hasCompleted &&\n token.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n if (shouldPreviewInteractive) {\n return (\n <PreviewInteractive\n currentUser={currentUser.data}\n queryParams={props.queryParams}\n interactive={interactiveMetadata.data}\n interactives={interactives.data?.data}\n isPreviewPreventScrubbingEnabled={interactive.data.preventScrubbing}\n audiences={audiences.data}\n relatedVideos={relatedVideos}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n breadcrumbs={breadcrumbs}\n token={token.data}\n commonVideoProps={commonVideoProps}\n />\n );\n }\n\n return (\n <PlayInteractive\n interactive={interactiveMetadata.data}\n currentUser={currentUser.data}\n config={config.data}\n yearGroups={yearGroups.data}\n audiences={audiences.data}\n queryParams={props.queryParams}\n viewKey={viewKey.data}\n relatedVideos={relatedVideos}\n startTime={props.queryParams?.t ?? props.queryParams?.startTime}\n token={token.data}\n commonVideoProps={commonVideoProps}\n />\n );\n}\n"],"mappings":"wjCAqCM,EAAc,CAClB,SAAU,EACV,UAAW,CACT,QAAS,CACX,CACF,EAEA,SAAS,EAAe,EAAiD,CACvE,OAAO,GAAa,aAAe,GAAa,YAClD,CAMA,SAAgB,EAAgB,EAA0C,CACxE,GAAM,CAAE,kBAAmB,EAAe,EAEpC,EAAS,EAA6B,EAAe,OAAO,CAAC,EAC7D,EAAQ,EAAgC,EAAa,MAAM,CAAC,EAC5D,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAa,EACjB,EAAY,MAAM,iBAAmB,EAAiB,WAAW,EAAY,KAAK,UAAU,CAC9F,EAEM,EAAsB,EAC1B,EAAoB,oBAAoB,EAAM,EAAE,CAClD,EACM,EAA2B,EAA4B,EACvD,EAA8B,EAClC,EAAoB,aAAe,EAAW,WAC5C,EAAoB,oBAAoB,EAAM,GAAI,EAAuB,aAAa,CAC1F,EACM,EAAc,EAClB,GAA4B,EAAoB,MAChD,EAAoB,YAAY,EAAoB,KAAK,aAAa,CACxE,EACM,EAAe,EACnB,GAA4B,EAAoB,MAChD,EAAoB,kBAAkB,EAAe,EAAoB,IAAI,CAAC,CAAC,EAAE,CACnF,EAEM,EAAY,EAAyB,EACrC,EAAU,EAAoC,EAAe,cAAc,EAAM,GAAI,EAAY,YAAY,CAAC,EAE9G,EAAgB,EAAoB,CACxC,MAAO,EAAoB,KAC3B,QAAS,EAAM,YAAY,QAC3B,UAAW,EAAM,YAAY,UAC7B,YAAa,EAAM,YAAY,IAC/B,YAAa,EAAY,IAC3B,CAAC,EAMK,CACJ,mBACA,gCACE,EAAoB,CAAE,gBAPF,EACtB,EAAgB,mBAChB,EAAgB,gBAKyB,IAAK,EAAM,YAAY,GAAI,CAAC,EAEvE,EAAa,CAAE,GAAI,EAAM,GAAI,IAAK,cAAe,CAAC,EAElD,EAAqB,EAAqB,EAAa,CAAE,UAAW,EAAK,CAAC,EAC1E,EAAsB,CAA2B,EACjD,EAAmB,EAAmB,uBAAuB,CAAE,QAAS,EAAoB,IAAK,CAAC,CAAC,EAEnG,EAAc,EAAc,QAAU,CAAC,CAAC,EAExC,IAAM,EAAc,EAAe,CAAE,KAAM,EAAoB,MAAM,IAAK,CAAC,EAiC3E,OA9BE,EAAoB,MACpB,EAAO,cACP,EAAY,eACX,CAAC,GAA4B,EAAY,eAC1C,EAAQ,cACR,EAAM,cACN,EAME,GAEA,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAa,EAAY,KACzB,YAAa,EAAM,YACnB,YAAa,EAAoB,KACjC,aAAc,EAAa,MAAM,KACjC,iCAAkC,EAAY,KAAK,iBACnD,UAAW,EAAU,KACN,gBACf,qBAAsB,EAAe,EAAe,iBAAiB,EACxD,cACb,MAAO,EAAM,KACK,kBACnB,CAAA,GAKH,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAa,EAAoB,KACjC,YAAa,EAAY,KACzB,OAAQ,EAAO,KACf,WAAY,EAAW,KACvB,UAAW,EAAU,KACrB,YAAa,EAAM,YACnB,QAAS,EAAQ,KACF,gBACf,UAAW,EAAM,aAAa,GAAK,EAAM,aAAa,UACtD,MAAO,EAAM,KACK,kBACnB,CAAA,GAjCM,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAmCf"}
@@ -1,2 +1,2 @@
1
- import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./B_BV48Fy.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./wrLrTezN.chunk.js";import{d as a}from"./CEamUdnf.chunk.js";import{I as o,l as s,y as c,z as l}from"./BHvdJc9z.chunk.js";import{t as u}from"./DIqO2TFN.chunk.js";import{t as d}from"./DTGfiG8Y.chunk.js";import{t as f}from"./Dn1hp1IN2.chunk.js";import{t as p}from"./C9a9PaRW2.chunk.js";import{t as m}from"./By12qobm.chunk.js";import{t as h}from"./Bjt_-lTs.chunk.js";import{t as g}from"./D_gWf2lC.chunk.js";import{t as _}from"./hQ9iY4r0.chunk.js";import{t as v}from"./DB_BawmH2.chunk.js";import{t as y}from"./Bqm7BykF2.chunk.js";import{n as b,t as x}from"./BWWumAle.chunk.js";import{t as S}from"./CHZLAcZ_2.chunk.js";import{t as C}from"./CXnhm0VS2.chunk.js";import{t as w}from"./C2sWe2wE.chunk.js";import{t as T}from"./sn3PPl9K.chunk.js";var E=e(r()),D=i(),O=n.encloseNamespace(`signUp.upsellStartTrial`);function k(e){let{upsellPresentationType:t,config:n,currentUser:r}=e;if(!t||!n||!r)return null;let i=t===d.Subject?`welcomeToClickView`:`welcomeToClickViewLive`,a=n?.liteUrl.includes(`staging`)?u.TutorialVideoHighlight[i].staging:u.TutorialVideoHighlight[i].production,o=r?.instanceRegion;return a?.[o]}function A(e){let[n,r]=E.useState(!1),i=C(),u=y(),{updateUserSettingAsync:A}=f(c.UpsellRequestForm),j=a(g.config()),M=a(h.currentUser()),N=a(M.data?.id&&h.user(M.data.id)),P=k({upsellPresentationType:u.upsellPresentationType,config:j.data,currentUser:M.data}),F=a(P&&m.sharedVideo(P.VIDEO,P.SHARE)),I=a(P&&x.createViewKey(P.SHARE,b.Share));async function L(){r(!0);try{let n=u.upsellPresentationType===d.Subject?v.ClickView:v.ClickViewLive;_.logUserAction({id:M.data?.id,jobTitle:N.data?.userProfile?.metadata?.jobTitle,variant:n},{actionType:l.Submit,entity:s.User,descriptor:o.TeacherRequestUpsell,location:c.UpsellRequestForm}),await A({name:t.SignUpVariant,value:v.Bundle,kind:p.Setting}),i.success(O(`successMessage`)),r(!1),e.closePopup()}catch{r(!1),i.error(O(`errorMessage`))}}let R=!!M.data&&!!j.data&&!!F.data&&!!I.data;return(0,D.jsxs)(w,{closePopup:e.closePopup,animation:e.animate,title:O(`title`),size:`lg`,bodyClassName:`d-flex flex-column gap-3`,showLoadingSpinner:!R,children:[(0,D.jsx)(`div`,{children:(0,D.jsx)(S,{config:j.data,currentUser:M.data,video:F.data,viewKey:I.data,presentationSlug:null,autoplay:!0})}),(0,D.jsx)(`p`,{className:`mb-0`,children:O(`description`)}),(0,D.jsx)(T,{onClickSecondary:e.closePopup,onClickPrimary:L,text:{primary:O(`startTrial`),secondary:O(`cancel`)},loading:n})]})}export{A as UpsellStartTrialView};
2
- //# sourceMappingURL=BnR_Hzcf.chunk.js.map
1
+ import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./B_BV48Fy.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./wrLrTezN.chunk.js";import{d as a}from"./CEamUdnf.chunk.js";import{I as o,l as s,y as c,z as l}from"./BHvdJc9z.chunk.js";import{t as u}from"./DIqO2TFN.chunk.js";import{t as d}from"./DTGfiG8Y.chunk.js";import{t as f}from"./Dn1hp1IN2.chunk.js";import{t as p}from"./C9a9PaRW2.chunk.js";import{t as m}from"./By12qobm.chunk.js";import{t as h}from"./Bjt_-lTs.chunk.js";import{t as g}from"./D_gWf2lC.chunk.js";import{t as _}from"./hQ9iY4r0.chunk.js";import{t as v}from"./DB_BawmH2.chunk.js";import{t as y}from"./Bqm7BykF2.chunk.js";import{n as b,t as x}from"./BWWumAle.chunk.js";import{t as S}from"./B-V5u42C2.chunk.js";import{t as C}from"./CXnhm0VS2.chunk.js";import{t as w}from"./C2sWe2wE.chunk.js";import{t as T}from"./sn3PPl9K.chunk.js";var E=e(r()),D=i(),O=n.encloseNamespace(`signUp.upsellStartTrial`);function k(e){let{upsellPresentationType:t,config:n,currentUser:r}=e;if(!t||!n||!r)return null;let i=t===d.Subject?`welcomeToClickView`:`welcomeToClickViewLive`,a=n?.liteUrl.includes(`staging`)?u.TutorialVideoHighlight[i].staging:u.TutorialVideoHighlight[i].production,o=r?.instanceRegion;return a?.[o]}function A(e){let[n,r]=E.useState(!1),i=C(),u=y(),{updateUserSettingAsync:A}=f(c.UpsellRequestForm),j=a(g.config()),M=a(h.currentUser()),N=a(M.data?.id&&h.user(M.data.id)),P=k({upsellPresentationType:u.upsellPresentationType,config:j.data,currentUser:M.data}),F=a(P&&m.sharedVideo(P.VIDEO,P.SHARE)),I=a(P&&x.createViewKey(P.SHARE,b.Share));async function L(){r(!0);try{let n=u.upsellPresentationType===d.Subject?v.ClickView:v.ClickViewLive;_.logUserAction({id:M.data?.id,jobTitle:N.data?.userProfile?.metadata?.jobTitle,variant:n},{actionType:l.Submit,entity:s.User,descriptor:o.TeacherRequestUpsell,location:c.UpsellRequestForm}),await A({name:t.SignUpVariant,value:v.Bundle,kind:p.Setting}),i.success(O(`successMessage`)),r(!1),e.closePopup()}catch{r(!1),i.error(O(`errorMessage`))}}let R=!!M.data&&!!j.data&&!!F.data&&!!I.data;return(0,D.jsxs)(w,{closePopup:e.closePopup,animation:e.animate,title:O(`title`),size:`lg`,bodyClassName:`d-flex flex-column gap-3`,showLoadingSpinner:!R,children:[(0,D.jsx)(`div`,{children:(0,D.jsx)(S,{config:j.data,currentUser:M.data,video:F.data,viewKey:I.data,presentationSlug:null,autoplay:!0})}),(0,D.jsx)(`p`,{className:`mb-0`,children:O(`description`)}),(0,D.jsx)(T,{onClickSecondary:e.closePopup,onClickPrimary:L,text:{primary:O(`startTrial`),secondary:O(`cancel`)},loading:n})]})}export{A as UpsellStartTrialView};
2
+ //# sourceMappingURL=D9P9eNbi.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BnR_Hzcf.chunk.js","names":[],"sources":["../../src/apps/sign-up/views/upsell-start-trial/UpsellStartTrialView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UpgradeBannerDescriptors, UserAction } from 'libs/analytics/interfaces';\n\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { SignUpVariant } from 'libs/shared/enums/SignUpVariant';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, PlayerViewKey, User, VideoTypes } from 'libs/shared/interfaces';\n\nimport { useUpsellContext } from 'shared/hooks/useUpsellContext';\nimport { LitePlayerView } from 'shared/views/lite-player/LitePlayerView';\n\nimport { RequestFlowControls } from 'apps/sign-up/components/request-flow-controls/RequestFlowControls';\n\nconst namespace = 'signUp.upsellStartTrial';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetTutorialVideoDetailOptions {\n upsellPresentationType: PresentationType;\n config: Config;\n currentUser: CurrentUser;\n}\n\nfunction getTutorialVideoDetail(options: GetTutorialVideoDetailOptions) {\n const { upsellPresentationType, config, currentUser } = options;\n if (!upsellPresentationType || !config || !currentUser)\n return null;\n \n const videoType = upsellPresentationType === PresentationType.Subject ? 'welcomeToClickView' : 'welcomeToClickViewLive';\n const instanceRegionVideoIds = config?.liteUrl.includes('staging') ?\n HardCoded.TutorialVideoHighlight[videoType].staging :\n HardCoded.TutorialVideoHighlight[videoType].production;\n const instanceRegion = currentUser?.instanceRegion;\n return instanceRegionVideoIds?.[instanceRegion as keyof typeof instanceRegionVideoIds];\n}\n\nexport interface UpsellStartTrialViewProps extends MultiStepPopupViewProps {}\n\nexport function UpsellStartTrialView(props: UpsellStartTrialViewProps) {\n const [ submitting, setSubmitting ] = React.useState(false);\n\n const alerts = useAlerts();\n \n const upsellContext = useUpsellContext();\n const { updateUserSettingAsync } = useSettings(LocationContext.UpsellRequestForm);\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const detailCurrentUser = Flight.useBasicFetch<User>(currentUser.data?.id && UserRequests.user(currentUser.data.id));\n\n const tutorialVideoDetail = getTutorialVideoDetail({\n upsellPresentationType: upsellContext.upsellPresentationType,\n config: config.data,\n currentUser: currentUser.data\n });\n\n const tutorialVideo = Flight.useBasicFetch<VideoTypes>(\n tutorialVideoDetail && VideoRequests.sharedVideo(tutorialVideoDetail.VIDEO, tutorialVideoDetail.SHARE)\n );\n \n const viewKey = Flight.useBasicFetch<PlayerViewKey>(\n tutorialVideoDetail && PlayerRequests.createViewKey(tutorialVideoDetail.SHARE, MediaIdType.Share)\n );\n\n async function onStartTrial() {\n setSubmitting(true);\n\n try {\n const variant = upsellContext.upsellPresentationType === PresentationType.Subject ?\n SignUpVariant.ClickView : SignUpVariant.ClickViewLive;\n\n AnalyticsHelper.logUserAction(\n {\n id: currentUser.data?.id,\n jobTitle: detailCurrentUser.data?.userProfile?.metadata?.jobTitle,\n variant\n },\n {\n actionType: UserAction.Submit,\n entity: EntityType.User,\n descriptor: UpgradeBannerDescriptors.TeacherRequestUpsell,\n location: LocationContext.UpsellRequestForm\n }\n );\n \n await updateUserSettingAsync({\n name: SettingName.SignUpVariant,\n value: SignUpVariant.Bundle,\n kind: SettingKind.Setting\n });\n\n alerts.success(getPhrase('successMessage'));\n setSubmitting(false);\n props.closePopup();\n } catch {\n setSubmitting(false);\n alerts.error(getPhrase('errorMessage'));\n }\n }\n\n const loaded = !!currentUser.data && !!config.data && !!tutorialVideo.data && !!viewKey.data;\n \n return (\n <Popup\n closePopup={props.closePopup}\n animation={props.animate}\n title={getPhrase('title')}\n size='lg'\n bodyClassName='d-flex flex-column gap-3'\n showLoadingSpinner={!loaded}\n >\n <div>\n <LitePlayerView\n config={config.data}\n currentUser={currentUser.data}\n video={tutorialVideo.data}\n viewKey={viewKey.data}\n presentationSlug={null}\n autoplay\n />\n </div>\n <p className='mb-0'>{getPhrase('description')}</p>\n <RequestFlowControls\n onClickSecondary={props.closePopup}\n onClickPrimary={onStartTrial}\n text={{\n primary: getPhrase('startTrial'),\n secondary: getPhrase('cancel')\n }}\n loading={submitting}\n />\n </Popup>\n );\n}\n"],"mappings":"g6BA8BM,EAAY,EAAgB,iBAAiB,yBAAS,EAQ5D,SAAS,EAAuB,EAAwC,CACtE,GAAM,CAAE,yBAAwB,SAAQ,eAAgB,EACxD,GAAI,CAAC,GAA0B,CAAC,GAAU,CAAC,EACzC,OAAO,KAET,IAAM,EAAY,IAA2B,EAAiB,QAAU,qBAAuB,yBACzF,EAAyB,GAAQ,QAAQ,SAAS,SAAS,EAC/D,EAAU,uBAAuB,EAAU,CAAC,QAC5C,EAAU,uBAAuB,EAAU,CAAC,WACxC,EAAiB,GAAa,eACpC,OAAO,IAAyB,EAClC,CAIA,SAAgB,EAAqB,EAAkC,CACrE,GAAM,CAAE,EAAY,GAAA,EAAwB,SAAS,EAAK,EAEpD,EAAS,EAAU,EAEnB,EAAgB,EAAiB,EACjC,CAAE,0BAA2B,EAAY,EAAgB,iBAAiB,EAC1E,EAAS,EAA6B,EAAe,OAAO,CAAC,EAC7D,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAoB,EAA2B,EAAY,MAAM,IAAM,EAAa,KAAK,EAAY,KAAK,EAAE,CAAC,EAE7G,EAAsB,EAAuB,CACjD,uBAAwB,EAAc,uBACtC,OAAQ,EAAO,KACf,YAAa,EAAY,IAC3B,CAAC,EAEK,EAAgB,EACpB,GAAuB,EAAc,YAAY,EAAoB,MAAO,EAAoB,KAAK,CACvG,EAEM,EAAU,EACd,GAAuB,EAAe,cAAc,EAAoB,MAAO,EAAY,KAAK,CAClG,EAEA,eAAe,GAAe,CAC5B,EAAc,EAAI,EAElB,GAAI,CACF,IAAM,EAAU,EAAc,yBAA2B,EAAiB,QACxE,EAAc,UAAY,EAAc,cAE1C,EAAgB,cACd,CACE,GAAI,EAAY,MAAM,GACtB,SAAU,EAAkB,MAAM,aAAa,UAAU,SACzD,SACF,EACA,CACE,WAAY,EAAW,OACvB,OAAQ,EAAW,KACnB,WAAY,EAAyB,qBACrC,SAAU,EAAgB,iBAC5B,CACF,EAEA,MAAM,EAAuB,CAC3B,KAAM,EAAY,cAClB,MAAO,EAAc,OACrB,KAAM,EAAY,OACpB,CAAC,EAED,EAAO,QAAQ,EAAU,gBAAgB,CAAC,EAC1C,EAAc,EAAK,EACnB,EAAM,WAAW,CACnB,MAAQ,CACN,EAAc,EAAK,EACnB,EAAO,MAAM,EAAU,cAAc,CAAC,CACxC,CACF,CAEA,IAAM,EAAS,CAAC,CAAC,EAAY,MAAQ,CAAC,CAAC,EAAO,MAAQ,CAAC,CAAC,EAAc,MAAQ,CAAC,CAAC,EAAQ,KAExF,OACE,EAAA,EAAA,KAAA,CAAC,EAAD,CACE,WAAY,EAAM,WAClB,UAAW,EAAM,QACjB,MAAO,EAAU,OAAO,EACxB,KAAK,KACL,cAAc,2BACd,mBAAoB,CAAC,WANvB,EAQE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,OAAQ,EAAO,KACf,YAAa,EAAY,KACzB,MAAO,EAAc,KACrB,QAAS,EAAQ,KACjB,iBAAkB,KAClB,SAAA,EACD,CAAA,CACE,CAAA,GACL,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,gBAAQ,EAAU,aAAa,CAAK,CAAA,GACjD,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,iBAAkB,EAAM,WACxB,eAAgB,EAChB,KAAM,CACJ,QAAS,EAAU,YAAY,EAC/B,UAAW,EAAU,QAAQ,CAC/B,EACA,QAAS,CACV,CAAA,CACI,GAEX"}
1
+ {"version":3,"file":"D9P9eNbi.chunk.js","names":[],"sources":["../../src/apps/sign-up/views/upsell-start-trial/UpsellStartTrialView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UpgradeBannerDescriptors, UserAction } from 'libs/analytics/interfaces';\n\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { SignUpVariant } from 'libs/shared/enums/SignUpVariant';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, PlayerViewKey, User, VideoTypes } from 'libs/shared/interfaces';\n\nimport { useUpsellContext } from 'shared/hooks/useUpsellContext';\nimport { LitePlayerView } from 'shared/views/lite-player/LitePlayerView';\n\nimport { RequestFlowControls } from 'apps/sign-up/components/request-flow-controls/RequestFlowControls';\n\nconst namespace = 'signUp.upsellStartTrial';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetTutorialVideoDetailOptions {\n upsellPresentationType: PresentationType;\n config: Config;\n currentUser: CurrentUser;\n}\n\nfunction getTutorialVideoDetail(options: GetTutorialVideoDetailOptions) {\n const { upsellPresentationType, config, currentUser } = options;\n if (!upsellPresentationType || !config || !currentUser)\n return null;\n \n const videoType = upsellPresentationType === PresentationType.Subject ? 'welcomeToClickView' : 'welcomeToClickViewLive';\n const instanceRegionVideoIds = config?.liteUrl.includes('staging') ?\n HardCoded.TutorialVideoHighlight[videoType].staging :\n HardCoded.TutorialVideoHighlight[videoType].production;\n const instanceRegion = currentUser?.instanceRegion;\n return instanceRegionVideoIds?.[instanceRegion as keyof typeof instanceRegionVideoIds];\n}\n\nexport interface UpsellStartTrialViewProps extends MultiStepPopupViewProps {}\n\nexport function UpsellStartTrialView(props: UpsellStartTrialViewProps) {\n const [ submitting, setSubmitting ] = React.useState(false);\n\n const alerts = useAlerts();\n \n const upsellContext = useUpsellContext();\n const { updateUserSettingAsync } = useSettings(LocationContext.UpsellRequestForm);\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const detailCurrentUser = Flight.useBasicFetch<User>(currentUser.data?.id && UserRequests.user(currentUser.data.id));\n\n const tutorialVideoDetail = getTutorialVideoDetail({\n upsellPresentationType: upsellContext.upsellPresentationType,\n config: config.data,\n currentUser: currentUser.data\n });\n\n const tutorialVideo = Flight.useBasicFetch<VideoTypes>(\n tutorialVideoDetail && VideoRequests.sharedVideo(tutorialVideoDetail.VIDEO, tutorialVideoDetail.SHARE)\n );\n \n const viewKey = Flight.useBasicFetch<PlayerViewKey>(\n tutorialVideoDetail && PlayerRequests.createViewKey(tutorialVideoDetail.SHARE, MediaIdType.Share)\n );\n\n async function onStartTrial() {\n setSubmitting(true);\n\n try {\n const variant = upsellContext.upsellPresentationType === PresentationType.Subject ?\n SignUpVariant.ClickView : SignUpVariant.ClickViewLive;\n\n AnalyticsHelper.logUserAction(\n {\n id: currentUser.data?.id,\n jobTitle: detailCurrentUser.data?.userProfile?.metadata?.jobTitle,\n variant\n },\n {\n actionType: UserAction.Submit,\n entity: EntityType.User,\n descriptor: UpgradeBannerDescriptors.TeacherRequestUpsell,\n location: LocationContext.UpsellRequestForm\n }\n );\n \n await updateUserSettingAsync({\n name: SettingName.SignUpVariant,\n value: SignUpVariant.Bundle,\n kind: SettingKind.Setting\n });\n\n alerts.success(getPhrase('successMessage'));\n setSubmitting(false);\n props.closePopup();\n } catch {\n setSubmitting(false);\n alerts.error(getPhrase('errorMessage'));\n }\n }\n\n const loaded = !!currentUser.data && !!config.data && !!tutorialVideo.data && !!viewKey.data;\n \n return (\n <Popup\n closePopup={props.closePopup}\n animation={props.animate}\n title={getPhrase('title')}\n size='lg'\n bodyClassName='d-flex flex-column gap-3'\n showLoadingSpinner={!loaded}\n >\n <div>\n <LitePlayerView\n config={config.data}\n currentUser={currentUser.data}\n video={tutorialVideo.data}\n viewKey={viewKey.data}\n presentationSlug={null}\n autoplay\n />\n </div>\n <p className='mb-0'>{getPhrase('description')}</p>\n <RequestFlowControls\n onClickSecondary={props.closePopup}\n onClickPrimary={onStartTrial}\n text={{\n primary: getPhrase('startTrial'),\n secondary: getPhrase('cancel')\n }}\n loading={submitting}\n />\n </Popup>\n );\n}\n"],"mappings":"g6BA8BM,EAAY,EAAgB,iBAAiB,yBAAS,EAQ5D,SAAS,EAAuB,EAAwC,CACtE,GAAM,CAAE,yBAAwB,SAAQ,eAAgB,EACxD,GAAI,CAAC,GAA0B,CAAC,GAAU,CAAC,EACzC,OAAO,KAET,IAAM,EAAY,IAA2B,EAAiB,QAAU,qBAAuB,yBACzF,EAAyB,GAAQ,QAAQ,SAAS,SAAS,EAC/D,EAAU,uBAAuB,EAAU,CAAC,QAC5C,EAAU,uBAAuB,EAAU,CAAC,WACxC,EAAiB,GAAa,eACpC,OAAO,IAAyB,EAClC,CAIA,SAAgB,EAAqB,EAAkC,CACrE,GAAM,CAAE,EAAY,GAAA,EAAwB,SAAS,EAAK,EAEpD,EAAS,EAAU,EAEnB,EAAgB,EAAiB,EACjC,CAAE,0BAA2B,EAAY,EAAgB,iBAAiB,EAC1E,EAAS,EAA6B,EAAe,OAAO,CAAC,EAC7D,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAoB,EAA2B,EAAY,MAAM,IAAM,EAAa,KAAK,EAAY,KAAK,EAAE,CAAC,EAE7G,EAAsB,EAAuB,CACjD,uBAAwB,EAAc,uBACtC,OAAQ,EAAO,KACf,YAAa,EAAY,IAC3B,CAAC,EAEK,EAAgB,EACpB,GAAuB,EAAc,YAAY,EAAoB,MAAO,EAAoB,KAAK,CACvG,EAEM,EAAU,EACd,GAAuB,EAAe,cAAc,EAAoB,MAAO,EAAY,KAAK,CAClG,EAEA,eAAe,GAAe,CAC5B,EAAc,EAAI,EAElB,GAAI,CACF,IAAM,EAAU,EAAc,yBAA2B,EAAiB,QACxE,EAAc,UAAY,EAAc,cAE1C,EAAgB,cACd,CACE,GAAI,EAAY,MAAM,GACtB,SAAU,EAAkB,MAAM,aAAa,UAAU,SACzD,SACF,EACA,CACE,WAAY,EAAW,OACvB,OAAQ,EAAW,KACnB,WAAY,EAAyB,qBACrC,SAAU,EAAgB,iBAC5B,CACF,EAEA,MAAM,EAAuB,CAC3B,KAAM,EAAY,cAClB,MAAO,EAAc,OACrB,KAAM,EAAY,OACpB,CAAC,EAED,EAAO,QAAQ,EAAU,gBAAgB,CAAC,EAC1C,EAAc,EAAK,EACnB,EAAM,WAAW,CACnB,MAAQ,CACN,EAAc,EAAK,EACnB,EAAO,MAAM,EAAU,cAAc,CAAC,CACxC,CACF,CAEA,IAAM,EAAS,CAAC,CAAC,EAAY,MAAQ,CAAC,CAAC,EAAO,MAAQ,CAAC,CAAC,EAAc,MAAQ,CAAC,CAAC,EAAQ,KAExF,OACE,EAAA,EAAA,KAAA,CAAC,EAAD,CACE,WAAY,EAAM,WAClB,UAAW,EAAM,QACjB,MAAO,EAAU,OAAO,EACxB,KAAK,KACL,cAAc,2BACd,mBAAoB,CAAC,WANvB,EAQE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,OAAQ,EAAO,KACf,YAAa,EAAY,KACzB,MAAO,EAAc,KACrB,QAAS,EAAQ,KACjB,iBAAkB,KAClB,SAAA,EACD,CAAA,CACE,CAAA,GACL,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,gBAAQ,EAAU,aAAa,CAAK,CAAA,GACjD,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,iBAAkB,EAAM,WACxB,eAAgB,EAChB,KAAM,CACJ,QAAS,EAAU,YAAY,EAC/B,UAAW,EAAU,QAAQ,CAC/B,EACA,QAAS,CACV,CAAA,CACI,GAEX"}
@@ -1,4 +1,4 @@
1
- import{o as e}from"./DAXXjFlN.chunk.js";import{x as t}from"./BftnFbcr.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{C as i,U as a,d as o,l as s,z as c}from"./BHvdJc9z.chunk.js";import{t as l}from"./BHNi8JGM.chunk.js";import{a as u,c as d,d as f,f as p,m,n as h,o as g,p as _,s as v,t as ee,u as te}from"./D_Txk-Lv.chunk.js";import{t as y}from"./CnnDkGmK.chunk.js";import{n as b}from"./BfGWS3N1.chunk.js";import"./CB13vtRK.chunk.js";import"./CecBf_FP.chunk.js";import{t as x}from"./BiKac8UT2.chunk.js";import"./P9unbQX_2.chunk.js";import{a as S,i as C,n as w,o as T,r as E,s as D,t as O}from"./_jJAx6fU.chunk.js";import{t as ne}from"./CLjADRa42.chunk.js";var k=e(n()),re=m.getComponent(`Button`),A=class extends re{constructor(...e){super(...e),this.alwaysCollapsed=!1,this.isCollapsed=!1,this.isCollabsible=!0}buildCSSClass(){return`cv-create-clip-button`}getCollabsibleName(){return this.controlText_}getCollabsibleValue(){return``}showInCollabsibleMenu(){return!0}showCollapsibleMenu(){super.handleClick(null)}};A.prototype.controlText_=`Create clip`,m.registerComponent(`CreateClipButton`,A);var ie=m.getPlugin(`plugin`),ae=class extends ie{constructor(e,t){super(e,t),this.options=t,e.ready(()=>this.onReady())}onReady(){let e=this.player.getChild(`collapserator`);e&&e.addChild(`CreateClipButton`,{clickHandler:this.options.onClick})}};m.registerPlugin(`createClipButtonPlugin`,ae);var oe=m.getComponent(`PictureInPictureToggle`),se=class extends oe{handlePictureInPictureEnabledChange(){this.enable()}};m.registerComponent(`PictureInPictureToggle`,se);var ce=m.getComponent(`PlayToggle`),le=m.getPlugin(`plugin`),ue=800,de=class extends le{constructor(e,t){super(e,t),this.options=t,this.bindFunctions(),e.ready(()=>this.initialize())}bindFunctions(){this.requestPictureInPicture=this.requestPictureInPicture.bind(this),this.exitPictureInPicture=this.exitPictureInPicture.bind(this),this.onPlayerResize=this.onPlayerResize.bind(this),this.playerRequestPictureInPictureFn=this.player.requestPictureInPicture,this.playerExitPictureInPictureFn=this.player.exitPictureInPicture,this.player.requestPictureInPicture=this.requestPictureInPicture,this.player.exitPictureInPicture=this.exitPictureInPicture}initialize(){let e=this.player.getChild(`collapserator`);this.toggle=e.addChild(`pictureInPictureToggle`,{}),this.toggle.enable(),this.player.on(`playerresize`,this.onPlayerResize),this.player.on(`dispose`,()=>{this.player?.off(`playerresize`,this.onPlayerResize)})}togglePictureInPicture(e){if(e===this.player.isInPictureInPicture())return;let t=e?`enterpictureinpicture`:`leavepictureinpicture`;this.player.isInPictureInPicture(e),this.player.trigger(t),e?this.addPipStyles():this.removePipStyles()}onPlayerResize(){if(this.player.isInPictureInPicture())return;let e=this.player.el().getBoundingClientRect();e.width!==0&&(e.width<ue?this.toggle?.hide():this.toggle?.show())}addPipStyles(){this.player.addClass(`cv-picture-in-picture`),this.playToggle=new ce(this.player),this.playToggle.addClass(`cv-pip-play-toggle`),this.player.addChild(this.playToggle),this.player.paused()?this.playToggle.handlePause():this.playToggle.handlePlay()}removePipStyles(){this.player.removeClass(`cv-picture-in-picture`),this.player.removeChild(this.playToggle),delete this.playToggle}requestPictureInPicture(){this.togglePictureInPicture(!0),typeof this.options?.onRequestPictureInPicture==`function`&&this.options.onRequestPictureInPicture(!0)}async exitPictureInPicture(){this.togglePictureInPicture(!1),this.options.onRequestPictureInPicture(!1),this.removePipStyles()}dispose(){this.player.requestPictureInPicture=this.playerRequestPictureInPictureFn,this.player.exitPictureInPicture=this.playerExitPictureInPictureFn,super.dispose()}};m.registerPlugin(`pictureInPicture`,de);var fe=m.getComponent(`Component`),pe=class extends fe{constructor(e,t){super(e,t),this.hasBuffered=!1,this.hasPlayed=!1,this.eventsService=ne,this.pointOfInterest=t.pointOfInterest,this.onMouseOver=this.onMouseOver.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.onGlancePointOfInterestMouseEnter=this.onGlancePointOfInterestMouseEnter.bind(this),this.onGlancePointOfInterestMouseLeave=this.onGlancePointOfInterestMouseLeave.bind(this),this.initialize()}initialize(){this.setPosition(),this.bindListeners()}buildCSSClass(){return`cv-point-of-interest-indicator ${super.buildCSSClass()}`}createEl(e,t,n){return super.createEl(e,{...t,className:this.buildCSSClass()},n)}bindListeners(){this.on(`mouseover`,this.onMouseOver),this.on(`mouseleave`,this.onMouseLeave),this.eventsService.subscribe(`glance:poi:mouseover`,this.onGlancePointOfInterestMouseEnter),this.eventsService.subscribe(`glance:poi:mouseleave`,this.onGlancePointOfInterestMouseLeave)}dispose(){this.eventsService.unsubscribe(`glance:poi:mouseover`,this.onGlancePointOfInterestMouseEnter),this.eventsService.unsubscribe(`glance:poi:mouseleave`,this.onGlancePointOfInterestMouseLeave)}getPointOfInterestTime(){return this.pointOfInterest.startTime}setPosition(){let e=this.player().duration();this.el_.style.left=this.getPointOfInterestTime()/e*100+`%`}updateBuffered(e){let t=this.getPointOfInterestTime()<=e;if(t===this.hasBuffered)return;this.hasBuffered=t;let n=`cv-point-of-interest-indicator-buffered`;this.hasBuffered?this.addClass(n):this.removeClass(n)}updatePlaybackProgress(e){let t=this.getPointOfInterestTime()<=e;if(t===this.hasPlayed)return;this.hasPlayed=t;let n=`cv-point-of-interest-indicator-played`;t?this.addClass(n):this.removeClass(n)}toggleVisibility(e){let t=`cv-point-of-interest-indicator-hidden`;e?this.removeClass(t):this.addClass(t)}onMouseOver(){this.setTimeTooltipText(),this.eventsService.trigger(`player:poi:mouseover`,this.pointOfInterest)}onMouseLeave(){this.clearTimeTooltipText(),this.eventsService.trigger(`player:poi:mouseleave`)}onGlancePointOfInterestMouseEnter(e){e.id===this.pointOfInterest.id&&(this.addClass(`cv-point-of-interest-indicator-highlight`),this.setTimeTooltipTime(),this.setTimeTooltipText(),this.positionMouseTimeDisplay(),this.showMouseTimeDisplay())}onGlancePointOfInterestMouseLeave(){this.removeClass(`cv-point-of-interest-indicator-highlight`),this.hideMouseTimeDisplay()}setTimeTooltipText(){this.getTimeTooltip()?.setCustomChapterText(this.pointOfInterest.description)}clearTimeTooltipText(){this.getTimeTooltip()?.setCustomChapterText()}setTimeTooltipTime(){this.getTimeTooltip()?.updateTime(this.getPointOfInterestTime())}positionMouseTimeDisplay(){let e=this.getSeekBar()?.el();if(!e)return;let t=m.dom.findPosition(e),n=this.getPointOfInterestTime()/this.player().duration();this.getMouseTimeDisplay()?.update(t,n)}showMouseTimeDisplay(){this.getMouseTimeDisplay()?.forceShow()}hideMouseTimeDisplay(){this.getMouseTimeDisplay()?.removeForceShow()}getSeekBar(){return this.player().controlBar.getChild(`ProgressControl`)?.getChild(`SeekBar`)}getMouseTimeDisplay(){return this.getSeekBar()?.getChild(`MouseTimeDisplay`)}getTimeTooltip(){return this.getMouseTimeDisplay()?.getChild(`TimeTooltip`)}},me=m.getComponent(`MenuItem`),j=class extends me{constructor(e,t){super(e,t),this.pointsOfInterestVisible=t.pointsOfInterestVisible,this.toggle(this.pointsOfInterestVisible)}handleToggle(){this.toggle(!this.pointsOfInterestVisible)}toggle(e){e?this.toggleOn():this.toggleOff()}toggleOn(){m.dom.addClass(this.toggleEl,`on`),m.dom.setAttribute(this.toggleEl,`aria-checked`,`true`),this.pointsOfInterestVisible=!0,this.player().pointsOfInterestPlugin().togglePointsOfInterest(this.pointsOfInterestVisible)}toggleOff(){m.dom.removeClass(this.toggleEl,`on`),m.dom.setAttribute(this.toggleEl,`aria-checked`,`false`),this.pointsOfInterestVisible=!1,this.player().pointsOfInterestPlugin().togglePointsOfInterest(this.pointsOfInterestVisible)}handleClick(e){e.stopImmediatePropagation()}createEl(e,t,n){this.handlerBound||=(this.handleToggle=this.handleToggle.bind(this),!0),this.toggleEl&&this.toggleEl.removeEventListener(`click`,this.handleToggle),this.toggleEl=m.dom.createEl(`div`,{className:`custom-toggle custom-toggle-info toggle-option float-end`,innerHTML:`<span class="handle"></span></div>`}),m.dom.setAttribute(this.toggleEl,`id`,`poi-toggle`),m.dom.setAttribute(this.toggleEl,`role`,`switch`),this.toggleEl.addEventListener(`click`,this.handleToggle);let r=super.createEl(e,{className:`vjs-menu-item cv-cog-menu-item cv-poi-toggle`,innerHTML:`
1
+ import{o as e}from"./DAXXjFlN.chunk.js";import{x as t}from"./BftnFbcr.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{C as i,U as a,d as o,l as s,z as c}from"./BHvdJc9z.chunk.js";import{t as l}from"./BHNi8JGM.chunk.js";import{a as u,c as d,d as f,f as p,m,n as h,o as g,p as _,s as v,t as ee,u as te}from"./WDOpswDS.chunk.js";import{t as y}from"./CnnDkGmK.chunk.js";import{n as b}from"./BfGWS3N1.chunk.js";import"./DuFYtiN6.chunk.js";import"./DqZVK9mn.chunk.js";import{t as x}from"./BiKac8UT2.chunk.js";import"./FxuURp3k2.chunk.js";import{a as S,i as C,n as w,o as T,r as E,s as D,t as O}from"./_jJAx6fU.chunk.js";import{t as ne}from"./CLjADRa42.chunk.js";var k=e(n()),re=m.getComponent(`Button`),A=class extends re{constructor(...e){super(...e),this.alwaysCollapsed=!1,this.isCollapsed=!1,this.isCollabsible=!0}buildCSSClass(){return`cv-create-clip-button`}getCollabsibleName(){return this.controlText_}getCollabsibleValue(){return``}showInCollabsibleMenu(){return!0}showCollapsibleMenu(){super.handleClick(null)}};A.prototype.controlText_=`Create clip`,m.registerComponent(`CreateClipButton`,A);var ie=m.getPlugin(`plugin`),ae=class extends ie{constructor(e,t){super(e,t),this.options=t,e.ready(()=>this.onReady())}onReady(){let e=this.player.getChild(`collapserator`);e&&e.addChild(`CreateClipButton`,{clickHandler:this.options.onClick})}};m.registerPlugin(`createClipButtonPlugin`,ae);var oe=m.getComponent(`PictureInPictureToggle`),se=class extends oe{handlePictureInPictureEnabledChange(){this.enable()}};m.registerComponent(`PictureInPictureToggle`,se);var ce=m.getComponent(`PlayToggle`),le=m.getPlugin(`plugin`),ue=800,de=class extends le{constructor(e,t){super(e,t),this.options=t,this.bindFunctions(),e.ready(()=>this.initialize())}bindFunctions(){this.requestPictureInPicture=this.requestPictureInPicture.bind(this),this.exitPictureInPicture=this.exitPictureInPicture.bind(this),this.onPlayerResize=this.onPlayerResize.bind(this),this.playerRequestPictureInPictureFn=this.player.requestPictureInPicture,this.playerExitPictureInPictureFn=this.player.exitPictureInPicture,this.player.requestPictureInPicture=this.requestPictureInPicture,this.player.exitPictureInPicture=this.exitPictureInPicture}initialize(){let e=this.player.getChild(`collapserator`);this.toggle=e.addChild(`pictureInPictureToggle`,{}),this.toggle.enable(),this.player.on(`playerresize`,this.onPlayerResize),this.player.on(`dispose`,()=>{this.player?.off(`playerresize`,this.onPlayerResize)})}togglePictureInPicture(e){if(e===this.player.isInPictureInPicture())return;let t=e?`enterpictureinpicture`:`leavepictureinpicture`;this.player.isInPictureInPicture(e),this.player.trigger(t),e?this.addPipStyles():this.removePipStyles()}onPlayerResize(){if(this.player.isInPictureInPicture())return;let e=this.player.el().getBoundingClientRect();e.width!==0&&(e.width<ue?this.toggle?.hide():this.toggle?.show())}addPipStyles(){this.player.addClass(`cv-picture-in-picture`),this.playToggle=new ce(this.player),this.playToggle.addClass(`cv-pip-play-toggle`),this.player.addChild(this.playToggle),this.player.paused()?this.playToggle.handlePause():this.playToggle.handlePlay()}removePipStyles(){this.player.removeClass(`cv-picture-in-picture`),this.player.removeChild(this.playToggle),delete this.playToggle}requestPictureInPicture(){this.togglePictureInPicture(!0),typeof this.options?.onRequestPictureInPicture==`function`&&this.options.onRequestPictureInPicture(!0)}async exitPictureInPicture(){this.togglePictureInPicture(!1),this.options.onRequestPictureInPicture(!1),this.removePipStyles()}dispose(){this.player.requestPictureInPicture=this.playerRequestPictureInPictureFn,this.player.exitPictureInPicture=this.playerExitPictureInPictureFn,super.dispose()}};m.registerPlugin(`pictureInPicture`,de);var fe=m.getComponent(`Component`),pe=class extends fe{constructor(e,t){super(e,t),this.hasBuffered=!1,this.hasPlayed=!1,this.eventsService=ne,this.pointOfInterest=t.pointOfInterest,this.onMouseOver=this.onMouseOver.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.onGlancePointOfInterestMouseEnter=this.onGlancePointOfInterestMouseEnter.bind(this),this.onGlancePointOfInterestMouseLeave=this.onGlancePointOfInterestMouseLeave.bind(this),this.initialize()}initialize(){this.setPosition(),this.bindListeners()}buildCSSClass(){return`cv-point-of-interest-indicator ${super.buildCSSClass()}`}createEl(e,t,n){return super.createEl(e,{...t,className:this.buildCSSClass()},n)}bindListeners(){this.on(`mouseover`,this.onMouseOver),this.on(`mouseleave`,this.onMouseLeave),this.eventsService.subscribe(`glance:poi:mouseover`,this.onGlancePointOfInterestMouseEnter),this.eventsService.subscribe(`glance:poi:mouseleave`,this.onGlancePointOfInterestMouseLeave)}dispose(){this.eventsService.unsubscribe(`glance:poi:mouseover`,this.onGlancePointOfInterestMouseEnter),this.eventsService.unsubscribe(`glance:poi:mouseleave`,this.onGlancePointOfInterestMouseLeave)}getPointOfInterestTime(){return this.pointOfInterest.startTime}setPosition(){let e=this.player().duration();this.el_.style.left=this.getPointOfInterestTime()/e*100+`%`}updateBuffered(e){let t=this.getPointOfInterestTime()<=e;if(t===this.hasBuffered)return;this.hasBuffered=t;let n=`cv-point-of-interest-indicator-buffered`;this.hasBuffered?this.addClass(n):this.removeClass(n)}updatePlaybackProgress(e){let t=this.getPointOfInterestTime()<=e;if(t===this.hasPlayed)return;this.hasPlayed=t;let n=`cv-point-of-interest-indicator-played`;t?this.addClass(n):this.removeClass(n)}toggleVisibility(e){let t=`cv-point-of-interest-indicator-hidden`;e?this.removeClass(t):this.addClass(t)}onMouseOver(){this.setTimeTooltipText(),this.eventsService.trigger(`player:poi:mouseover`,this.pointOfInterest)}onMouseLeave(){this.clearTimeTooltipText(),this.eventsService.trigger(`player:poi:mouseleave`)}onGlancePointOfInterestMouseEnter(e){e.id===this.pointOfInterest.id&&(this.addClass(`cv-point-of-interest-indicator-highlight`),this.setTimeTooltipTime(),this.setTimeTooltipText(),this.positionMouseTimeDisplay(),this.showMouseTimeDisplay())}onGlancePointOfInterestMouseLeave(){this.removeClass(`cv-point-of-interest-indicator-highlight`),this.hideMouseTimeDisplay()}setTimeTooltipText(){this.getTimeTooltip()?.setCustomChapterText(this.pointOfInterest.description)}clearTimeTooltipText(){this.getTimeTooltip()?.setCustomChapterText()}setTimeTooltipTime(){this.getTimeTooltip()?.updateTime(this.getPointOfInterestTime())}positionMouseTimeDisplay(){let e=this.getSeekBar()?.el();if(!e)return;let t=m.dom.findPosition(e),n=this.getPointOfInterestTime()/this.player().duration();this.getMouseTimeDisplay()?.update(t,n)}showMouseTimeDisplay(){this.getMouseTimeDisplay()?.forceShow()}hideMouseTimeDisplay(){this.getMouseTimeDisplay()?.removeForceShow()}getSeekBar(){return this.player().controlBar.getChild(`ProgressControl`)?.getChild(`SeekBar`)}getMouseTimeDisplay(){return this.getSeekBar()?.getChild(`MouseTimeDisplay`)}getTimeTooltip(){return this.getMouseTimeDisplay()?.getChild(`TimeTooltip`)}},me=m.getComponent(`MenuItem`),j=class extends me{constructor(e,t){super(e,t),this.pointsOfInterestVisible=t.pointsOfInterestVisible,this.toggle(this.pointsOfInterestVisible)}handleToggle(){this.toggle(!this.pointsOfInterestVisible)}toggle(e){e?this.toggleOn():this.toggleOff()}toggleOn(){m.dom.addClass(this.toggleEl,`on`),m.dom.setAttribute(this.toggleEl,`aria-checked`,`true`),this.pointsOfInterestVisible=!0,this.player().pointsOfInterestPlugin().togglePointsOfInterest(this.pointsOfInterestVisible)}toggleOff(){m.dom.removeClass(this.toggleEl,`on`),m.dom.setAttribute(this.toggleEl,`aria-checked`,`false`),this.pointsOfInterestVisible=!1,this.player().pointsOfInterestPlugin().togglePointsOfInterest(this.pointsOfInterestVisible)}handleClick(e){e.stopImmediatePropagation()}createEl(e,t,n){this.handlerBound||=(this.handleToggle=this.handleToggle.bind(this),!0),this.toggleEl&&this.toggleEl.removeEventListener(`click`,this.handleToggle),this.toggleEl=m.dom.createEl(`div`,{className:`custom-toggle custom-toggle-info toggle-option float-end`,innerHTML:`<span class="handle"></span></div>`}),m.dom.setAttribute(this.toggleEl,`id`,`poi-toggle`),m.dom.setAttribute(this.toggleEl,`role`,`switch`),this.toggleEl.addEventListener(`click`,this.handleToggle);let r=super.createEl(e,{className:`vjs-menu-item cv-cog-menu-item cv-poi-toggle`,innerHTML:`
2
2
  <span for="poi-toggle" class="vjs-menu-item-text">Points of Interest</span>
3
3
  <span class="cv-toggle-container"></span>`},n);return r.children[1].appendChild(this.toggleEl),r}};m.registerComponent(`PointsOfInterestMenuItem`,j);var M=m.getPlugin(`plugin`),N=`cvplayer-points-of-interest`,P=class extends M{constructor(e,t){super(e),this.pointOfInterestIndicators=[],this.enabled=!0,this.pointsOfInterest=t?.pointsOfInterest,this.initialize=this.initialize.bind(this),this.updateBuffered=this.updateBuffered.bind(this),this.updatePlaybackProgress=this.updatePlaybackProgress.bind(this),this.player.one(`loadedmetadata`,()=>this.player.ready(this.initialize))}initialize(){this.pointsOfInterest&&(b.hasLocalStorage()&&b.get(N)===`false`&&(this.enabled=!1),this.setupTrack(),this.createPointOfInterestIndicators(),this.addMenuItem(),this.bindListeners())}bindListeners(){this.player.on(`progress`,this.updateBuffered),this.player.on(`timeupdate`,this.updatePlaybackProgress),this.player.on(`dispose`,()=>{this.player?.off(`progress`,this.updateBuffered),this.player?.off(`timeupdate`,this.updatePlaybackProgress)})}togglePointsOfInterest(e){b.set(N,e.toString()),this.pointOfInterestIndicators.forEach(t=>t.toggleVisibility(e))}setupTrack(){let e=this.player.addTextTrack(`metadata`,`pointsofinterest`);this.pointsOfInterest.forEach(t=>{e.addCue({startTime:t.startTime,endTime:t.endTime,text:t.description})}),e.trigger({type:`loadeddata`,target:e})}createPointOfInterestIndicators(){let e=this.player.controlBar.getChild(`ProgressControl`)?.getChild(`SeekBar`);this.pointsOfInterest.forEach(t=>{let n=new pe(this.player,{pointOfInterest:t});this.pointOfInterestIndicators.push(n),e.addChild(n)})}addMenuItem(){(this.player.getChild(`collapserator`)?.getChild(`cogButton`)).addItem({ctor:j,name:`PointsOfInterestMenuItem`,options:{pointsOfInterestVisible:this.enabled}})}updateBuffered(){this.pointOfInterestIndicators.forEach(e=>e.updateBuffered(u(this.player)))}updatePlaybackProgress(){this.pointOfInterestIndicators.forEach(e=>e.updatePlaybackProgress(this.player.currentTime()))}};m.registerPlugin(`pointsOfInterestPlugin`,P);var F=m.getComponent(`Component`),I=class extends F{constructor(e,t){super(e,t),this.initialize()}initialize(){this.setPosition()}buildCSSClass(){return`cv-range-indicator ${super.buildCSSClass()}`}createEl(e,t,n){return super.createEl(e,{...t,className:this.buildCSSClass()},n)}setPosition(){let e=this.player().duration();this.el_.style.left=this.options_.time/e*100+`%`}},L=m.getComponent(`ClickableComponent`),R=class extends L{constructor(e,t){super(e,t)}buildCSSClass(){return`cv-replay-view-button ${super.buildCSSClass()}`}createEl(e,t,n){return super.createEl(e,{...t,innerHTML:`<span class="${this.options_.iconClassName}"></span><span>${this.options_.label}</span>`,className:this.buildCSSClass()},n)}handleClick(){this.options_.onPress()}},z=m.getComponent(`Component`),he=class extends z{constructor(e,t){super(e,t)}buildCSSClass(){return`cv-replay-view ${super.buildCSSClass()}`}createEl(e,t,n){let r=super.createEl(e,{...t,className:this.buildCSSClass()},n),i=m.dom.createEl(`h5`,{innerHTML:this.localize(`This clip has finished`),className:`cv-replay-heading`}),a=m.dom.createEl(`div`,{className:`cv-button-container`}),o=new R(this.player_,{label:this.localize(`Replay clip`),iconClassName:`cv-replay-icon`,onPress:this.options_.onReplayPress}),s=new R(this.player_,{label:this.localize(`Continue watching`),iconClassName:`cv-continue-icon`,onPress:this.options_.onContinuePress});return r.appendChild(i),r.appendChild(a),a.appendChild(o.el()),a.appendChild(s.el()),r}},ge=m.getPlugin(`plugin`),_e=class extends ge{constructor(e,t){if(super(e,t),this.startTime=parseFloat(t.startTime.toPrecision(4)),this.endTime=parseFloat(t.endTime.toPrecision(4)),this.dismissed=!1,this.startTime>this.endTime)throw Error(`Range start cannot be greater than range end`);this.bindFunctions(),this.initialize()}bindFunctions(){this.onReady=this.onReady.bind(this),this.onTimeUpdateOrSeeked=this.onTimeUpdateOrSeeked.bind(this),this.onReplayPress=this.onReplayPress.bind(this),this.onContinuePress=this.onContinuePress.bind(this)}initialize(){this.player.one(`loadedmetadata`,()=>this.player.ready(this.onReady)),this.player.on(`timeupdate`,this.onTimeUpdateOrSeeked),this.player.on(`seeked`,this.onTimeUpdateOrSeeked)}onReady(){this.addCssClasses(),this.showRangeIndicators(),this.addMaskToProgressBar()}onTimeUpdateOrSeeked(){if(this.dismissed)return;let e=this.player.currentTime();if(e<this.startTime){this.player.currentTime(this.startTime);return}if(e>this.endTime){this.showReplayView(),this.disablePlayToggle(),this.player.pause(),this.player.currentTime(this.endTime);return}}onReplayPress(){this.player.currentTime(this.startTime),this.player.play(),this.hideReplayView(),this.enablePlayToggle()}onContinuePress(){this.dismissed=!0,this.player.play(),this.hideRangeIndicators(),this.removeMaskFromProgressBar(),this.hideReplayView(),this.enablePlayToggle(),this.removeCssClasses()}showRangeIndicators(){let e=this.player.controlBar.getChild(`ProgressControl`)?.getChild(`SeekBar`);this.startTimeIndicator||(this.startTimeIndicator=new I(this.player,{time:this.startTime}),e?.addChild(this.startTimeIndicator)),this.endTimeIndicator||(this.endTimeIndicator=new I(this.player,{time:this.endTime}),e?.addChild(this.endTimeIndicator))}hideRangeIndicators(){this.startTimeIndicator?.hide(),this.endTimeIndicator?.hide()}addMaskToProgressBar(){let e=(this.player.controlBar.getChild(`ProgressControl`)?.getChild(`SeekBar`))?.el().getElementsByClassName(`cv-chapter-bar-items`);if(e&&e.length){let t=e[0],n=this.player.duration(),r=this.startTime/n*100,i=100-this.endTime/n*100;t.style.clipPath=`inset(-5em ${i}% -5em ${r}%)`}}removeMaskFromProgressBar(){let e=(this.player.controlBar.getChild(`ProgressControl`)?.getChild(`SeekBar`))?.el().getElementsByClassName(`cv-chapter-bar-items`);if(e&&e.length){let t=e[0];t.style.clipPath=``}}showReplayView(){this.replayView||(this.replayView=new he(this.player,{onContinuePress:this.onContinuePress,onReplayPress:this.onReplayPress}),this.player.addChild(this.replayView)),this.replayView.show()}hideReplayView(){this.replayView?.hide()}getPlayToggle(){return this.player.getChild(`collapserator`)?.getChild(`PlayToggle`)}enablePlayToggle(){let e=this.getPlayToggle();e&&e.enable()}disablePlayToggle(){let e=this.getPlayToggle();e&&e.disable()}addCssClasses(){this.player.addClass(`cv-range-indicator-plugin`)}removeCssClasses(){this.player.removeClass(`cv-range-indicator-plugin`)}dispose(){this.removeCssClasses(),this.player.off(`timeupdate`,this.onTimeUpdateOrSeeked),this.player.off(`seeked`,this.onTimeUpdateOrSeeked),this.startTimeIndicator?.dispose(),this.endTimeIndicator?.dispose(),this.replayView?.dispose(),super.dispose()}};m.registerPlugin(`rangeIndicatorPlugin`,_e);var B={generateRandomId:()=>window.crypto?.randomUUID?.()??Math.random().toString()},ve=class extends ee{constructor(e,t){super(e,t)}getPlayerOptions(){let e=super.getPlayerOptions();return this.options.allowTranscript&&(e.allowTranscript=!0),e.devicesConfig?.canUserCastToDevices?{...e,techOrder:[`devices`,...e.techOrder],devices:{instanceId:B.generateRandomId()}}:e}configurePlugins(){try{this.options.onClickCreateClip&&this.player.createClipButtonPlugin({onClick:this.options.onClickCreateClip}),this.options.onRequestPictureInPicture&&this.player.pictureInPicture({onRequestPictureInPicture:this.options.onRequestPictureInPicture}),this.options.pointsOfInterest?.length&&this.player.pointsOfInterestPlugin({pointsOfInterest:this.options.pointsOfInterest}),this.player.loopVideoPlugin({allowLoop:this.options.allowLoop})}catch(e){console.log(`failed to register plugins`,e)}}setNextVideo(e,t,n){this.player.nextVideoPlugin&&this.player.nextVideoPlugin().setNextVideo(e,t,n)}togglePictureInPicture(e){let t=this.player.pictureInPicture();t&&t.togglePictureInPicture(e)}toggleTheatreMode(e){let t=this.player.theatreModePlugin();t&&t.toggleTheatreMode(e,{shouldLog:!0})}toggleTranscript(e){if(!this.player.viewTranscriptPlugin)return;let t=this.player.viewTranscriptPlugin();t&&t.toggleTranscript(e)}hasStarted(){return this.player.hasStarted()}async additionalSetup(e){if(this.options.onRequestTheatreMode&&this.options.allowTheatreMode&&this.player.theatreModePlugin&&this.player.theatreModePlugin({onRequestTheatreMode:this.options.onRequestTheatreMode,theatreMode:this.options.theatreMode,playbackObject:e}),super.additionalSetup(e),this.options.showResources&&e.resources&&this.player.resourcesPlugin&&this.player.resourcesPlugin({resources:e.resources.list,imageCdnUrl:this.options.imageCdnUrl}),e.mediaType===`MasterClip`){let t=e.additionalData;if(t===null)throw Error(`Invalid clip data`);this.player.clipPlugin({startTime:t.startTime,endTime:t.endTime})}e.mediaType===`MasterVideo`&&this.options.startTime&&this.options.endTime&&this.player.rangeIndicatorPlugin({startTime:this.options.startTime,endTime:this.options.endTime})}setupAnalyticsDependentPlugins(e){super.setupAnalyticsDependentPlugins(e),this.options.allowTranscript&&this.player.viewTranscriptPlugin().registerAnalytics(this.analyticsService,e),this.options.onRequestTheatreMode&&this.options.allowTheatreMode&&this.player.theatreModePlugin&&this.player.theatreModePlugin().registerAnalytics(this.analyticsService),this.options.devicesConfig?.canUserCastToDevices&&this.player.devicesPlugin&&this.player.devicesPlugin({...this.options.devicesConfig,userId:parseInt(e.viewerId),title:e.title,analyticsService:this.analyticsService})}setActivityStatus(e,t){this.player.activityStatusPlugin().setActivityStatus(e,t)}useCurrentTranscript(e,t){p.useMetadataTracks(this.player,`transcript`,e,t)}useChapters(e){p.useChapters(this.player,e)}},V={reconnectIntervalInMilliseconds:3e3,heartbeatEnabled:!1,heartbeatIntervalInMillseconds:1e4,heartbeatMessage:``},ye=class{constructor(e,t=V){this.bindFunctions(),this.url=e,this.options={...V,...t},this.webSocket=this.connect(),this.heartbeat=new E().schedule(()=>this.send(this.options.heartbeatMessage)).every(this.options.heartbeatIntervalInMillseconds)}bindFunctions(){this.cleanup=this.cleanup.bind(this),this.handleOpen=this.handleOpen.bind(this),this.handleMessage=this.handleMessage.bind(this),this.handleClose=this.handleClose.bind(this),this.handleError=this.handleError.bind(this),this.connect=this.connect.bind(this),this.send=this.send.bind(this),this.dipose=this.dipose.bind(this)}cleanup(){this.heartbeat.stop(),this.webSocket.removeEventListener(`error`,this.handleError),this.webSocket.removeEventListener(`message`,this.handleMessage),this.webSocket.removeEventListener(`open`,this.handleOpen),this.webSocket.removeEventListener(`close`,this.handleClose)}handleOpen(e){this.onOpen?.(e),this.options.heartbeatEnabled&&this.heartbeat.start()}handleMessage(e){this.onMessage?.(e)}handleClose(e){this.onClose?.(e),this.cleanup(),setTimeout(()=>{this.webSocket=this.connect()},this.options.reconnectIntervalInMilliseconds)}handleError(e){this.onError?.(e),this.handleClose()}connect(){let e=new WebSocket(this.url);return e.addEventListener(`open`,this.handleOpen),e.addEventListener(`message`,this.handleMessage),e.addEventListener(`close`,this.handleClose),e.addEventListener(`error`,this.handleError),e}send(e){this.webSocket.send(e)}dipose(){this.cleanup(),this.webSocket.close()}},be=2e3,xe=class{constructor(e,t){return this._timerStartedAt=0,this.position=0,this.duration=void 0,this.playing=!1,this.mute=!1,this.videoSource=``,this.subtitleSource=``,this.subtitles=!1,this.volume=0,this.title=e,this.device=t,this.ready=!1,this.playbackFinished=!1,this.debounced=w.withDebouncedSetters(this,be),w.withTimestampedSetters(this)}get position(){return this._position+this.getTimerDurationInSeconds()}set position(e){this._position=e,this.restartTimer()}get playing(){return this._playing}set playing(e){this._playing=e,e?this.restartTimer():(this._position+=this.getTimerDurationInSeconds(),this.stopTimer())}restartTimer(){this._timerStartedAt=Date.now()}stopTimer(){this._timerStartedAt=0}getTimerDurationInSeconds(){return this._timerStartedAt?(Date.now()-this._timerStartedAt)/1e3:0}},H=function(e){return e.Update=`update`,e.Volume=`volume`,e.Playing=`playing`,e.Paused=`paused`,e.NewChapter=`new_chapter`,e.Stopped=`stopped`,e.Ready=`ready`,e.Mute=`mute`,e.Finished=`finished`,e.Subtitles=`subtitles`,e}({}),Se=class extends S{constructor(e,t){super(),this.client=e,this.localState=new xe(t.title,t.device),this.bindFunctions(),this.initialize()}bindFunctions(){this.initialize=this.initialize.bind(this),this.dispose=this.dispose.bind(this),this.handleClientConnected=this.handleClientConnected.bind(this),this.handleDisconnectMessage=this.handleDisconnectMessage.bind(this),this.handleAllVideoMessages=this.handleAllVideoMessages.bind(this),this.handleUpdateMessage=this.handleUpdateMessage.bind(this),this.handleVolumeMessage=this.handleVolumeMessage.bind(this),this.handlePlayingMessage=this.handlePlayingMessage.bind(this),this.handlePausedMessage=this.handlePausedMessage.bind(this),this.handleFinishedMessage=this.handleFinishedMessage.bind(this),this.handleNewChapterMessage=this.handleNewChapterMessage.bind(this),this.handleStoppedMessage=this.handleStoppedMessage.bind(this),this.loadSource=this.loadSource.bind(this),this.play=this.play.bind(this),this.pause=this.pause.bind(this),this.seek=this.seek.bind(this),this.setVolume=this.setVolume.bind(this),this.isPlaying=this.isPlaying.bind(this),this.getPosition=this.getPosition.bind(this),this.getDuration=this.getDuration.bind(this),this.getVolume=this.getVolume.bind(this)}initialize(){this.client.on(`dispose`,this.dispose),this.client.on(`connected`,this.handleClientConnected),this.client.on(`message`,this.handleDisconnectMessage).filter(e=>e.source===this.getDevice().id&&e.message.type===`disconnect`),this.client.on(`message`,this.handleAllVideoMessages).filter(e=>e.source===this.getDevice().id&&e.message.type===`video_event`)}dispose(){this.client.off(`dispose`,this.dispose),this.client.off(`connected`,this.handleClientConnected),this.client.off(`message`,this.handleDisconnectMessage),this.client.off(`message`,this.handleAllVideoMessages),this.client.stop(this.getDevice().id).catch(e=>console.error(e)),super.dispose()}async handleClientConnected(){try{await this.client.joinRoom(this.getDevice().id)}catch(e){this.trigger(`error`,e)}}handleDisconnectMessage(){this.dispose()}handleAllVideoMessages(e){let t=this.localState.debounced,n=e.message.payload.params||{};switch(e.message.payload.event){case H.Update:this.handleUpdateMessage(t,n);break;case H.NewChapter:this.handleNewChapterMessage(t,n);break;case H.Volume:this.handleVolumeMessage(t,n);break;case H.Playing:this.handlePlayingMessage(t);break;case H.Paused:this.handlePausedMessage(t);break;case H.Finished:this.handleFinishedMessage(t);break;case H.Stopped:this.handleStoppedMessage();break}}handleUpdateMessage(e,t){e.duration!==t.duration&&(e.duration=t.duration,this.trigger(`durationchange`,C.void)),e.position!==t.position&&(e.position=t.position,this.trigger(`positionchange`,C.void)),e.subtitles!==t.subtitles&&(e.subtitles=t.subtitles,this.trigger(`subtitleschange`,C.void))}handleVolumeMessage(e,t){e.volume!==t.level&&(e.volume=t.level,e.mute=t.level===0,this.trigger(`volumechange`,C.void))}handlePlayingMessage(e){e.playing!==!0&&(e.playing=!0,e.playbackFinished=!1,this.trigger(`playingchange`,C.void))}handlePausedMessage(e){e.playing!==!1&&(e.playing=!1,this.trigger(`playingchange`,C.void))}handleFinishedMessage(e){e.playbackFinished!==!0&&(e.playing=!1,e.playbackFinished=!0,this.trigger(`playingchange`,C.void))}handleNewChapterMessage(e,t){let n=(t.queue??[]).find(t=>t.url===e.videoSource);if(!n){console.info(`The device is no longer playing the source we loaded - disposing the session`),this.dispose();return}e.subtitleSource!==n.suburl&&(e.subtitleSource=n.suburl,this.trigger(`subtitleschange`,C.void))}handleStoppedMessage(){this.dispose()}async loadSource(e,t){if(!(this.localState.videoSource===e&&this.localState.subtitleSource===t))try{let n=this.getDevice().id,r=this.getPosition();this.localState.videoSource=e,this.localState.subtitleSource=t,this.localState.ready=!1,await this.client.joinRoom(n),await this.client.loadQueue({title:this.getTitle(),roomId:n,videoSource:e,subtitleSource:t}),this.localState.ready=!0,this.trigger(`sourceloaded`,C.void),r>0&&this.seek(r),t&&this.setSubtitles(t)}catch(e){console.error(e),this.trigger(`error`,Error(`Could not load video on Vivi device`))}}play(){this.localState.ready&&this.localState.playing!==!0&&(this.localState.playing=!0,this.client.play(this.getDevice().id),this.trigger(`playingchange`,C.void))}pause(){this.localState.ready&&this.localState.playing!==!1&&(this.localState.playing=!1,this.client.pause(this.getDevice().id),this.trigger(`playingchange`,C.void))}seek(e){this.localState.ready&&this.localState.position!==e&&(this.localState.position=e,this.client.seek(this.getDevice().id,e),this.trigger(`positionchange`,C.void))}setVolume(e){this.localState.ready&&this.localState.volume!==e&&(this.localState.volume=e,this.client.setVolume(this.getDevice().id,e),this.trigger(`volumechange`,C.void))}setMuted(e){this.localState.ready&&this.localState.mute!==e&&(this.localState.mute=e,this.client.setMuted(this.getDevice().id,e),this.trigger(`volumechange`,C.void))}async setSubtitles(e){if(!this.localState.ready)return;e&&await this.loadSource(this.localState.videoSource,e);let t=!!e;this.localState.subtitles!==t&&(this.localState.subtitles=t,this.client.setSubtitles(this.getDevice().id,t),this.trigger(`subtitleschange`,C.void))}isPlaying(){return this.localState.playing}isPlaybackFinished(){return this.localState.playbackFinished}getPosition(){return this.localState.position}getDuration(){return this.localState.duration}getVolume(){return this.localState.volume}getMuted(){return this.localState.mute}getSubtitles(){if(this.localState.subtitles)return this.localState.subtitleSource}getDevice(){return this.localState.device}getTitle(){return this.localState.title}},U=1e4,Ce=500,we=1e4,W=class e extends S{constructor(e){super(),this.options=e,this.accessToken=``,this.devices=[],this.devicesFingerprint=``,this.deviceDiscovery=new E,this.bindFunctions(),this.initialize()}bindFunctions(){this.initialize=this.initialize.bind(this),this.sendMessage=this.sendMessage.bind(this),this.sendMessageDebounced=y(this.sendMessage,Ce,!0),this.beginDeviceDiscovery=this.beginDeviceDiscovery.bind(this),this.dispose=this.dispose.bind(this),this.canCastToDevice=this.canCastToDevice.bind(this),this.getDevices=this.getDevices.bind(this),this.startCastSession=this.startCastSession.bind(this),this.authenticateWithVivi=this.authenticateWithVivi.bind(this),this.getRoomList=this.getRoomList.bind(this),this.joinRoom=this.joinRoom.bind(this),this.query=this.query.bind(this),this.loadQueue=this.loadQueue.bind(this),this.play=this.play.bind(this),this.pause=this.pause.bind(this),this.stop=this.stop.bind(this),this.seek=this.seek.bind(this),this.setVolume=this.setVolume.bind(this),this.setMuted=this.setMuted.bind(this),this.setSubtitles=this.setSubtitles.bind(this)}initialize(){this.webSocket=new ye(this.options.url),this.webSocket.onMessage=e=>this.trigger(`message`,JSON.parse(e.data)),this.webSocket.onOpen=async()=>{try{this.accessToken=await this.options.fetchAccessToken(),await this.authenticateWithVivi(),this.beginDeviceDiscovery(),this.trigger(`connected`,C.void)}catch(e){console.error(e),this.trigger(`error`,Error(`Could not connect to Vivi`))}}}sendMessage(e){this.webSocket?.send(JSON.stringify(e))}beginDeviceDiscovery(){this.deviceDiscovery.every(we).schedule(async()=>{try{let t=await this.getRoomList(),n=e.calculateFingerprint(t);if(n===this.devicesFingerprint)return;let r=new Set(t.map(e=>e.organisation??``)).size,i=new Set(t.map(e=>e.location??``)).size;this.devices=t.map(e=>({id:e.id,name:e.name,schoolName:r>1?e.organisation:``,description:i>1?e.location:``,type:D.Vivi,status:T.Available})),this.devicesFingerprint=n,this.trigger(`deviceschange`,C.void)}catch(e){console.warn(e)}}).trigger().start()}dispose(){this.deviceDiscovery.stop(),this.webSocket?.dipose(),super.dispose()}canCastToDevice(e){return e===D.Vivi}getDevices(){return this.devices}startCastSession(e){return new Se(this,e)}async authenticateWithVivi(){this.sendMessage({destination:`relay`,message:{token:this.accessToken,type:`identify_video_api`}}),await this.one(`message`,e=>e.message.type===`video_api_identified`).timeout(U).catch(()=>{throw Error(`Failed to authenticate with Vivi`)})}async getRoomList(){return this.sendMessage({destination:`relay`,message:{type:`video_api_rooms`}}),(await this.one(`message`,e=>e.message.type===`video_api_rooms`).timeout(U).catch(()=>{throw Error(`Failed to fetch rooms`)})).message.rooms||[]}async joinRoom(e){this.sendMessage({destination:`relay`,message:{destination_type:`box`,new_destination:e,token:this.accessToken,type:`connect`}}),await this.one(`message`,t=>{if(t.source===e&&t.message.type===`connect`||t.message.type===`error`&&t.message.error_type===`already_connected`)return!0}).timeout(U).catch(()=>{throw Error(`Failed to join room`)})}async query(t){let n=e.createAckId();return this.sendMessage({destination:t,message:{type:`message_with_ack`,ack_id:n,name:`query`}}),await this.one(`message`,e=>e.message.ack_id===n).timeout(U).catch(()=>{throw Error(`Failed to fetch query`)})}async loadQueue({roomId:t,title:n,videoSource:r,subtitleSource:i}){this.sendMessage({destination:t,message:{type:`message_with_ack`,ack_id:e.createAckId(),name:`queue_load`,payload:{urls:[{title:n,url:r,suburl:i}]}}}),await this.one(`message`,e=>e.source===t&&e.message.payload?.event===`ready`).timeout(U).catch(()=>{throw Error(`Failed to load media`)})}async play(e){this.sendMessage({destination:e,message:{type:`message`,name:`video_play`,payload:{}}}),await this.one(`message`,t=>t.source===e&&t.message.payload?.event===`playing`).timeout(U).catch(()=>{throw Error(`Failed to play video`)})}async pause(e){this.sendMessage({destination:e,message:{type:`message`,name:`video_pause`}}),await this.one(`message`,t=>t.source===e&&t.message.payload?.event===`paused`).timeout(U).catch(()=>{throw Error(`Failed to pause video`)})}async stop(e){this.sendMessage({destination:e,message:{type:`message`,name:`video_stop`}}),await this.one(`message`,t=>t.source===e&&t.message.payload?.event===`stopped`).timeout(U).catch(()=>{throw Error(`Failed to stop video`)})}async seek(e,t){this.sendMessageDebounced({destination:e,message:{type:`message`,name:`video_seek`,payload:{position:t}}})&&await this.one(`message`,t=>t.source===e&&t.message.payload?.event===`playing`).timeout(U).catch(()=>{throw Error(`Failed to seek video`)})}async setVolume(e,t){this.sendMessageDebounced({destination:e,message:{type:`message`,name:`set_volume`,payload:{volume:t}}})&&await this.one(`message`,t=>t.source===e&&t.message.payload?.event===`volume`).timeout(U).catch(()=>{throw Error(`Failed to set volume`)})}async setMuted(e,t){this.sendMessage({destination:e,message:{type:`message`,name:`set_mute`,payload:{mute:t}}}),await this.one(`message`,t=>t.source===e&&t.message.payload?.event===`mute`).timeout(U).catch(()=>{throw Error(`Failed to set mute`)})}async setSubtitles(t,n){let r=e.createAckId();this.sendMessage({destination:t,message:{type:`message_with_ack`,ack_id:r,name:`set_subtitles`,payload:{subtitles:n}}}),await this.one(`message`,e=>e.source===t&&e.message.payload?.event===`subtitles`).timeout(U).catch(()=>{throw Error(`Failed to set subtitles`)})}static createAckId(){return B.generateRandomId()}static calculateFingerprint(e){return e.map(e=>e.id).sort().join(`,`)}},G=class e extends S{constructor(e){super(),this.instanceId=e,this.clients=[],this.bindFunctions()}bindFunctions(){this.addClient=this.addClient.bind(this),this.hasInstanceOfClient=this.hasInstanceOfClient.bind(this),this.startCastSession=this.startCastSession.bind(this),this.gatherAndPublishDevices=this.gatherAndPublishDevices.bind(this),this.dispose=this.dispose.bind(this)}addClient(e){e.on(`deviceschange`,this.gatherAndPublishDevices),e.on(`error`,e=>this.trigger(`error`,e)),this.clients.push(e)}hasInstanceOfClient(e){return this.clients.some(t=>t instanceof e)}startCastSession(e){if(this.castSession)if(this.castSession.getDevice().id!==e.device.id)this.castSession.dispose();else{console.info(`A session with device ${e.device.id} already exists - this is a no-op`);return}let t=this.clients.find(t=>t.canCastToDevice(e.device.type));t&&(this.castSession=t.startCastSession(e),this.castSession.on(`error`,e=>{this.castSession.dispose(),this.trigger(`error`,e)}),this.castSession.on(`dispose`,()=>{this.castSession=void 0,this.trigger(`castsessionchange`,void 0)}),this.trigger(`castsessionchange`,this.castSession))}getCastSession(){return this.castSession}gatherAndPublishDevices(){let e=this.clients.map(e=>e.getDevices()).reduce((e,t)=>[...e,...t],[]);this.trigger(`deviceschange`,e)}dispose(){this.castSession?.dispose(),this.clients.forEach(e=>e.dispose()),this.castSession=void 0,this.clients=[],super.dispose()}static{this.instances={}}static getOrCreateInstance(t){if(!t)throw Error(`instanceId is required`);return this.instances[t]||(this.instances[t]=new e(t)),this.instances[t]}static disposeAndRemoveInstance(e){e.dispose(),delete this.instances[e.instanceId]}static isActive(){return Object.keys(this.instances).length>0}},Te=m.getComponent(`MenuItem`),K=class extends Te{constructor(e,t){super(e,t),this.isVisible=this.isVisible.bind(this)}createEl(){let e={vivi:`cv-vivi-icon`,"apple-tv":`cv-apple-icon`},t=super.createEl(`li`,{className:`vjs-menu-item cv-device-menu-item`}),n=m.dom.createEl(`div`,{className:`cv-device-menu-item-body`,innerHTML:`
4
4
  <span class="cv-device-icon ${e[this.options_.type]}"></span>
@@ -14,4 +14,4 @@ import{o as e}from"./DAXXjFlN.chunk.js";import{x as t}from"./BftnFbcr.chunk.js";
14
14
  </div>
15
15
  <div class="cv-devices-background" style="background-image: url(${this.poster})"></div>
16
16
  `;let t=document.createElement(`button`),n=e=>{e.stopPropagation(),this.options_.onStopCasting()};t.onclick=n,t.ontouchstart=n,t.className=`stop-casting-button`,t.innerHTML=this.localize(`Stop casting`),this.el_.querySelector(`.cv-devices-content`).appendChild(t)}play(){}},Fe=m.getComponent(`Tech`),Ie=class extends Fe{constructor(e,t){super(e,t),this.featuresVolumeControl=!0,this.featuresPlaybackRate=!1,this.movingMediaElementInDOM=!1,this.featuresFullscreenResize=!0,this.featuresTimeupdateEvents=!0,this.featuresProgressEvents=!1,this.featuresNativeTextTracks=!1,this.featuresNativeAudioTracks=!1,this.featuresNativeVideoTracks=!1,this.featuresMuteControl=!0,this.featuresSourceset=!1,this.videojsPlayer=m(this.options_.playerId),this.bindFunctions(),this.bindEventListeners(),this.ready(()=>{this.setSource(this.options_.source)}),this.triggerReady()}bindFunctions(){this.bindEventListeners=this.bindEventListeners.bind(this),this.onTextTrackChanged=this.onTextTrackChanged.bind(this),this.getSelectedTextTrack=this.getSelectedTextTrack.bind(this),this.setSelectedTextTrack=this.setSelectedTextTrack.bind(this),this.showUI=this.showUI.bind(this),this.hideUI=this.hideUI.bind(this),this.dispose=this.dispose.bind(this),this.setSource=this.setSource.bind(this),this.getCastSession=this.getCastSession.bind(this)}bindEventListeners(){let e=this.getCastSession();e&&(this.textTracks().on(`change`,this.onTextTrackChanged),this.videojsPlayer.one(`ended`,()=>{e.dispose()}),e.on(`durationchange`,()=>{this.trigger(`durationchange`)}),e.on(`dispose`,()=>{this.trigger(`ended`),this.hideUI()}),e.on(`playingchange`,()=>{e.isPlaying()?(this.trigger(`play`),this.trigger(`playing`)):this.trigger(`pause`)}),e.on(`volumechange`,()=>{this.trigger(`volumechange`)}),e.on(`sourceloaded`,()=>{this.trigger(`loadeddata`)}),e.on(`subtitleschange`,()=>{this.setSelectedTextTrack(e.getSubtitles())}))}onTextTrackChanged(){let e=this.getSelectedTextTrack();this.getCastSession()?.setSubtitles(e?.src)}getSelectedTextTrack(){return p.findTrackByPredicate(this.videojsPlayer.player_,e=>e.mode===`showing`&&!!e.src)}setSelectedTextTrack(e){p.forEachTrack(this.videojsPlayer.player_,t=>{t.kind===`subtitles`&&(t.src===e?t.mode=`showing`:t.mode=`disabled`)})}showUI(e){this.ui&&(this.ui.setPoster(this.options_.poster),this.ui.setDevice(e),this.ui.show())}hideUI(){this.ui?.hide()}dispose(){this.textTracks().off(`change`,this.onTextTrackChanged);let e=this.getCastSession();e&&e.dispose(),super.cleanupAutoTextTracks(),super.dispose()}createEl(){return this.ui=this.ui||new Pe({onStopCasting:()=>{this.getCastSession()?.dispose()}}),this.ui.el()}setSource(e){let t=this.getCastSession();if(!t)return;this.showUI(t.getDevice()),this.trigger(`loadstart`);let n=this.getSelectedTextTrack();t.loadSource(d.getOriginalUrl(e.src),n?.src)}addRemoteTextTrack(e){return super.addRemoteTextTrack(e,!0)}getCastSession(){return G.getOrCreateInstance(this.options_.instanceId??``).getCastSession()}play(){this.getCastSession()?.play()}pause(){this.getCastSession()?.pause()}paused(){return this.getCastSession()?.isPlaying()===!1}ended(){return this.getCastSession()?.isPlaybackFinished()??!1}setCurrentTime(e){this.getCastSession()?.seek(e??0)}currentTime(){return this.getCastSession()?.getPosition()??0}duration(){return this.getCastSession()?.getDuration()??this.videojsPlayer.duration()}volume(){return this.getCastSession()?.getVolume()??1}setVolume(e){this.getCastSession()?.setVolume(e)}muted(){return this.getCastSession()?.getMuted()??!1}setMuted(e){this.getCastSession()?.setMuted(e)}buffered(){}seekable(){return m.createTimeRanges(0,this.duration())}playbackRate(){return 1}readyState(){return 4}controls(){return!1}playsinline(){return!0}supportsFullScreen(){return!0}setAutoplay(){}preload(){}load(){}setPlaybackRate(){}static canPlayType(){return``}static canPlaySource(e,t){return e.type!==`application/dash+xml`&&!!G.getOrCreateInstance(t?.instanceId??``).getCastSession()}static isSupported(){return G.isActive()}};m.registerTech(`devices`,Ie);var Z=m.getPlugin(`plugin`),Le=class extends Z{constructor(e,t){super(e,t),this.options=t,this.instanceId=this.player.options_.devices?.instanceId??``,this.bindFunctions(),this.initialize()}bindFunctions(){this.initialize=this.initialize.bind(this),this.onReady=this.onReady.bind(this),this.onDevicesChanged=this.onDevicesChanged.bind(this),this.onCastSessionChanged=this.onCastSessionChanged.bind(this),this.onDevicesError=this.onDevicesError.bind(this),this.addViviClient=this.addViviClient.bind(this),this.addAppleTvClient=this.addAppleTvClient.bind(this),this.reloadTech=this.reloadTech.bind(this),this.getSessionManager=this.getSessionManager.bind(this),this.dispose=this.dispose.bind(this)}initialize(){this.player.ready(this.onReady)}onReady(){let e=this.player.getChild(`collapserator`),t=this.getSessionManager();if(!e||!t)return;t.on(`deviceschange`,this.onDevicesChanged),t.on(`castsessionchange`,this.onCastSessionChanged),t.on(`error`,this.onDevicesError);let n=()=>{this.addViviClient(t),this.addAppleTvClient(t)},r=(e,n)=>{t.startCastSession({device:n,title:this.options.title}),this.options.analyticsService?.logUserAction(n,{actionType:c.Select,workflowPhase:a.Complete,descriptor:i.ChangeDevice,entity:s.Device,eventVersion:o.V3})},l=this.options.ctaOptions,u=this.options.vivi,d=this.options.appleTv,f=[];d.enabled||f.push(D.AppleTv),(!u.enabled||!u.accountConnected)&&f.push(D.Vivi);let p={onClick:n,onDeviceMenuItemClick:r,ctaOptions:{...l,inactiveIntegrations:f}};this.devicesButton=e.addChild(`DevicesButton`,p)}onDevicesChanged(e){this.devicesButton?.setDevices(e)}onCastSessionChanged(e){this.devicesButton?.setCastSession(e),this.reloadTech(),e?(this.player.addClass(`cv-device-casting`),this.player.addClass(`cv-device-${e.getDevice().type}`),this.player.isFullscreen()&&this.player.exitFullscreen()):(this.player.removeClass(`cv-device-casting`),this.player.removeClass(`cv-device-${D.AppleTv}`),this.player.removeClass(`cv-device-${D.Vivi}`))}onDevicesError(e){this.player.error(e.message),this.player.pause()}addViviClient(e){if(!this.options.vivi.enabled||!this.options.vivi.accountConnected||!this.options.vivi.apiUrl||e.hasInstanceOfClient(W))return;let t=new W({url:this.options.vivi.apiUrl,fetchAccessToken:this.options.vivi.fetchAccessToken});e.addClient(t)}addAppleTvClient(e){if(!this.options.appleTv.enabled||!this.options.trackingCode||!this.options.userId||e.hasInstanceOfClient(O))return;let t=new O({fetchAccessToken:this.options.appleTv.fetchAccessToken,trackingCode:this.options.trackingCode,userId:this.options.userId});e.addClient(t)}reloadTech(){let e=this.player,t=e.currentSources(),n=e.volume(),r=e.muted(),i=e.currentTime(),a=e.paused();e.src(t),e.one(`playing`,()=>{e.volume(n),e.muted(r),e.currentTime(i),a?e.pause():e.play()})}getSessionManager(){if(this.instanceId)return G.getOrCreateInstance(this.instanceId)}dispose(){let e=this.getSessionManager();e&&(e.off(`deviceschange`,this.onDevicesChanged),e.off(`castsessionchange`,this.onCastSessionChanged),e.off(`error`,this.onDevicesError),G.disposeAndRemoveInstance(e),super.dispose())}};m.registerPlugin(`devicesPlugin`,Le);function Re(e){return(0,J.jsx)(`div`,{className:`cv-resource-item`,children:(0,J.jsx)(l,{data:e.resource,imageCdnUrl:e.imageCdnUrl,titlePosition:`above`,hideTypeBadge:!0})})}var ze=h((e,t)=>(0,J.jsx)(Re,{...t})),Be=m.getComponent(`MenuItem`),Ve=class extends Be{constructor(e,t){super(e,t);let n=new ze(e,{resource:t.resource,imageCdnUrl:t.imageCdnUrl});this.addChild(n)}createEl(e,t={},n){return super.createEl(e,{...t,className:`${t.className} cv-resource-menu-item`},n)}handleClick(e){e.stopImmediatePropagation(),this.options_.downloadResource(this.options_.resource)}},He=m.getComponent(`MenuButton`),Q=class extends He{constructor(...e){super(...e),this.alwaysCollapsed=!1,this.isCollapsed=!1,this.isCollabsible=!0}buildWrapperCSSClass(){return`cv-menu-small cv-resources-button-wrapper ${super.buildWrapperCSSClass()}`}buildCSSClass(){return`cv-resources-button ${super.buildCSSClass()}`}update(){super.update()}createItems(){let e=[];return e.push(new _(this.player_,{label:`Resources`})),this.options_.resources.forEach(t=>{let n=new Ve(this.player(),{resource:t,imageCdnUrl:this.options_.imageCdnUrl,downloadResource:e=>this.downloadResource(e),label:t.name});e.push(n)}),e}downloadResource(e){if(e.type===`link`){t.PageLoad(e.url,!0);return}this.getDownloadIframe().src=e.url}getDownloadIframe(){return this.downloadIframe?this.downloadIframe:(this.downloadIframe=m.dom.createEl(`iframe`),this.downloadIframe.style.display=`none`,m.dom.appendContent(m.dom.$(`body`),this.downloadIframe),this.downloadIframe)}getCollabsibleName(){return this.controlText_}getCollabsibleValue(){return``}showInCollabsibleMenu(){return!0}showCollapsibleMenu(){super.handleClick(null)}};Q.prototype.controlText_=`Resources`,m.registerComponent(`ResourcesButton`,Q);var Ue=m.getPlugin(`plugin`),We=class extends Ue{constructor(e,t){super(e,t),this.options=t,e.ready(()=>this.onReady())}onReady(){this.options.resources.length&&this.player.getChild(`collapserator`).addChild(`ResourcesButton`,{resources:this.options.resources,imageCdnUrl:this.options.imageCdnUrl})}};m.registerPlugin(`resourcesPlugin`,We);function $(e){let{className:t=``,playerApi:n,onReady:r,onDispose:i,...a}=e,o=k.useRef(null);return k.useEffect(()=>{if(!o)return;let e=new ve(o.current,{...a,playerApi:n});return r&&e.ready(()=>{r(x(e))}),i&&e.one(`dispose`,i),()=>{e?.dispose()}},[e.viewKey]),(0,J.jsx)(`div`,{ref:o,className:t})}export{$ as ClickViewPlayer,$ as default};
17
- //# sourceMappingURL=iEP6nnLh2.chunk.js.map
17
+ //# sourceMappingURL=D9POCoFw2.chunk.js.map