1import{r as y,f0 as i,j as p}from"./index-CNagSlXC.js";import{l as g,q as C}from"./connect-B5-6MHo9.js";import"./loadable-BUkpCPp0.js";import"./Error-D7UaxmAi.js";import"./LoadingCircle-DpTAWnMM.js";import"./VideoPageQuery-C1E57atT.js";import"./ArticleCardContent-BVliUN3a.js";import"./molecules-intl-CGpXOgec.js";import"./PublisherDropzone-intl-D6kZyBaS.js";let c=null;const P=(()=>(c||(c=new Promise((a,e)=>{window.onYouTubeIframeAPIReady=a;const t=document.createElement("script");t.onerror=e,t.async=!0,t.src="https://www.youtube.com/iframe_api",document.body.appendChild(t)})),c)),b=(a,e,t)=>{let s=e.sources;(!s.length||t&&e.stereoSources.length)&&(s=e.stereoSources);const r=s.map(h=>a.canPlayType(h.type)),d=r.indexOf("probably");if(d!==-1)return s[d].href;const o=r.indexOf("maybe");return o!==-1?s[o].href:""},f={id:"",default:!0,langCode:"",sources:[],stereoSources:[]};class I extends y.Component{constructor(){super(...arguments),this.videoWidth=0,this.videoHeight=0,this.track=f,this.playing=!1,this.seeking=!1,this.isReady=!1,this.videoReady=()=>{this.props.tracks&&this.tracksChanged(),this.isReady=!0;const{onMixerReady:e=i}=this.props;e({currentTarget:this})},this.videoPlaying=()=>{this.track.default||(this.video.muted=!0,this.audio.play(),this.audio.currentTime=this.video.currentTime);const{onPlaying:e=i}=this.props;e({currentTarget:this.video})},this.videoPaused=()=>{this.videoInterrupted();const{onPause:e=i}=this.props;e({currentTarget:this.video})},this.videoEnded=()=>{this.videoInterrupted();const{onEnded:e=i}=this.props;e({currentTarget:this.video})},this.videoWaiting=()=>{this.videoInterrupted();const{onWaiting:e=i}=this.props;e({currentTarget:this.video})},this.videoInterrupted=()=>{this.track.default||this.audio.pause()},this.videoSeeking=()=>{this.seeking=!0,this.track.default||(this.audio.currentTime=this.video.currentTime,this.audio.pause())},this.videoSeeked=()=>{this.seeking=!1},this.videoChangingQuality=()=>{this.track.default||(this.audio.pause(),this.audio.currentTime=this.video.currentTime)},this.videoChangedQuality=()=>{!this.track.default&&!this.video.paused&&this.audio.play()},this.audioLoadedMetadata=()=>{const e=this.video,t=this.audio;t.currentTime=e.currentTime,t.volume=this.volume,t.muted=this.muted,this.playing&&e.isReady&&t.readyState>=2&&(e.play(),this.track.default||t.play())},this.audioSeeked=()=>{const{onTrackChange:e=i}=this.props,t=this.video,s=this.audio;if(!this.track.default){const r=s.currentTime-t.currentTime;r>.2||r<-.2?s.currentTime=t.currentTime:!t.paused&&!this.seeking&&this.video.isReady?s.play():this.playing&&t.play()}e({currentTarget:this})},this.refVideo=e=>{this.video=e}}componentDidMount(){this.audio=new Audio,this.audio.addEventListener("loadedmetadata",this.audioLoadedMetadata),this.audio.addEventListener("seeked",this.audioSeeked)}componentDidUpdate(e){this.props.tracks!==e.tracks&&(this.props.tracks?this.tracksChanged():this.stopAudio())}componentWillUnmount(){this.stopAudio(),this.playing=!1,this.seeking=!1,this.isReady=!1,this.track=f}tracksChanged(){const e=this.props.tracks,t=e.find(s=>s.id===this.props.defaultTrack)||e.find(s=>
1s.langCode==="eng")||e.find(s=>s.default);if(!t)throw new Error("No default track found");this.loadTrack(t.id,!0)}stopAudio(){this.audio.src="",this.audio.load()}loadTrack(e,t=!0){const{onTrackChanging:s=i,onTrackChange:r=i,tracks:d}=this.props,o=this.video,h=this.audio,n=d.filter(l=>l.id===e)[0];if(!n)throw new Error(`Could not load track with id ${e}`);if(n.default&&t)this.stopAudio(),o.muted=this.muted,this.track=n,s({currentTarget:this}),r({currentTarget:this});else{const l=b(h,n,t);if(!l)throw new Error(`Could not get source for track with id ${e}`);this.playing=!o.paused,o.muted=!0,o.pause(),h.src=l,h.load(),this.track=n,s({currentTarget:this})}}load(){}play(){this.video.play()}pause(){this.video.pause()}get volume(){return this.video.volume}set volume(e){this.video.volume=e,this.audio.volume=e;const{onVolumeChange:t=i}=this.props;t({currentTarget:this})}get muted(){return this.track.default?this.video.muted:this.audio.muted}set muted(e){this.track.default?this.video.muted=e:this.audio.muted=e;const{onVolumeChange:t=i}=this.props;t({currentTarget:this})}get paused(){return this.video.paused}get duration(){return this.video.duration}get buffered(){return this.video.buffered}get currentTime(){return this.video.currentTime}set currentTime(e){this.video.currentTime=e}get playbackRate(){return 0}set playbackRate(e){}get loop(){return this.video.loop}set loop(e){this.video.loop=e}render(){return p.jsx(this.props.videoComponent,{...this.props,ref:this.refVideo,onReady:this.videoReady,onPlaying:this.videoPlaying,onPause:this.videoPaused,onEnded:this.videoEnded,onWaiting:this.videoWaiting,onError:this.props.onError,onVolumeChange:i})}}const m=(a,e)=>({length:1,start:()=>0,end:()=>a*e});class k extends y.Component{constructor(){super(...arguments),this.videoWidth=0,this.videoHeight=0,this.isReady=!1,this.paused=!0,this.seeking=!1,this.wasPlaying=!1,this.played=!1,this.cleared=!1,this.loop=!1,this._muted=!1,this._volume=1,this.timeInterval=null,this.progressInterval=null,this.playerReady=()=>{this.isReady=!0,this._muted=this.player.isMuted(),this._volume=this.player.getVolume()/100;const{onLoadedMetadata:e=i,onReady:t=i}=this.props;e({currentTarget:this}),t({currentTarget:this}),this.setupIntervals()},this.playerStateChange=e=>{const{onPlaying:t=i,onPause:s=i,onWaiting:r=i,onEnded:d=i,onStateChange:o=i}=this.props;switch(e.data===YT.PlayerState.PLAYING&&!this.played&&(this.played=!0),e.data){case YT.PlayerState.PLAYING:if(this.cleared){this.player.stopVideo();return}if(this.seeking&&(this.seeking=!1,!this.wasPlaying)){this.player.pauseVideo();return}this.paused=!1,t({currentTarget:this});break;case YT.PlayerState.PAUSED:s({currentTarget:this}),this.paused=!0;break;case YT.PlayerState.ENDED:d({currentTarget:this}),this.paused=!0,this.loop&&this.play();break;case YT.PlayerState.BUFFERING:r({currentTarget:this}),this.seeking&&(this.seeking=!1);break;case YT.PlayerState.CUED:g.log("YT video cued"),this.playerReady();break}o(e)},this.refTarget=e=>{e&&(this.target=e)}}setupPlayer(){this.player=new YT.Player(this.target,{videoId:this.props.videoId,playerVars:{autoplay:0,rel:0,modestbranding:this.props.controls?0:1,controls:this.props.controls?1:0,showinfo:this.props.controls?1:0,fs:this.props.controls?1:0},events:{onReady:this.playerReady,onStateChange:this.playerStateChange,onPlaybackQualityChange:()=>{const{onPlaybackQualityChange:e=i}=this.props;e({currentTarget:this})},onError:e=>{g.error("YoutubeVideo encountered an error:",e.data);const{onError:t=i}=this.props;t({code:e.data,description:"",nativeError:e.data})}}})}componentDidMount(){this.setupPlayer()}componentDidUpdate(e){this.props.controls!==e.controls?(this.player.destroy(),this.setupPlayer()):this.props.videoId!==e.videoId&&(this.player?(this.clearIntervals(),this.paused=!0,this.seeking=!1,this.wasPlaying=!1,this.played=!1,this.cleared=!1,this.player.cueVideoById(this.props.videoId)):this.setupPlayer())}componentWillUnmount(){this.clearIntervals(),this.player&&this.player.destroy(),this.isReady=!1,this.paused=!0,this.seeking=!1,this.wasPlaying=!1,this.played=!1,this.cleared=!1}setupIntervals(){this.timeInterval=window.setInterval(()=>{const{onDurationChange:e=i,onTimeUpdate:t=i}=this.props;e({currentTarget:this}),t({currentTarget:this})},300),this.progressInterval=window.setInterval(()=>{const{onProgress:e=i}=this.props;e({currentTarget:this})},800)}clearIntervals(){this.timeInterval&&clearInterval(this.timeInterval),this.progressInterval&&clearInterval(this.progressInterval)}clearVideo(){this.cleared=!0,this.played=!1,this.player.stopVideo()}load(){}play(){this.player.playVideo()}pause(){this.player.pauseVideo()}get muted(){return this._muted}set muted(e){e?this.player.mute():this.player.unMute(),this._muted=e;const{onVolumeChange:t=i}=this.props;t({currentTarget:this})}get volume(){return this._volume}set volume(e){this._volume=e,this.player.setVolume(e*100);const{onVolumeChange:t=i}=this.props;t({currentTarget:this})}get buffered(){return this.isReady?m(this.player.getDuration(),this.player.getVideoLoadedFraction()):m(1,0)}get duration(){return this.isReady?this.player.getDuration():1}get currentTime(){return this.isReady?this.player.getCurrentTime():0}set currentTime(e){this.wasPlaying=this.player.getPlayerState()===YT.PlayerState.PLAYING,this.seeking=!0,this.player.seekTo(e,!0)}get playbackRate(){return 0}set playbackRate(e){}get loaded(){return this.player.getVideoLoadedFraction()}get availableQualityLevels(){return this.player.getAvailableQualityLevels()}get playbackQuality(){return this.player.getPlaybackQuality()}set playbackQuality(e){this.player.setPlaybackQuality(e)}
1render(){return p.jsx("div",{ref:this.refTarget,tabIndex:-1,className:this.props.className})}}const u=!C,V=[["default","Auto"],["auto","Auto"],["highres","Highres"],["hd2160","2160p"],["hd1440","1440p"],["hd1080","1080p"],["hd720","720p"],["large","480p"],["medium","360p"],["small","240p"],["tiny","144p"]],v=new Map(V),T=({format:a,href:e,channels:t})=>({type:`audio/${a}`,href:e,channels:t}),R=a=>{if(!a.asset)return{stereoSources:[],sources:[]};const e=a.asset.representations.filter(t=>t.format==="mp4"||t.format==="opus");return{stereoSources:e.filter(t=>t.channels<=2).map(T),sources:e.filter(t=>t.channels>2).map(T)}};class D extends y.Component{constructor(){super(...arguments),this.state={isReady:!1,tracks:null,defaultTrack:""},this.audioTracks=[],this.onStateChange=({data:e})=>{if(e===YT.PlayerState.PLAYING){const{onVideoTracksUpdated:t=i}=this.props;t(this.videoTracks)}},this.onPlaybackQualityChange=()=>{const{onVideoTracksUpdated:e=i}=this.props;e(this.videoTracks)},this.onAudioTrackChanging=()=>{const{onBufferingChanged:e=i}=this.props;e(!0)},this.onAudioTrackChanged=()=>{const{onAudioTrackChanged:e=i,onBufferingChanged:t=i}=this.props;e(this.audioTrack),t(!1)},this.refMixer=e=>{this.mixer=e,this.ytVideo=e&&e.video},this.refVideo=e=>{this.ytVideo=e}}get video(){return this.mixer||this.ytVideo}async componentDidMount(){const{refPlayer:e}=this.props;e&&(typeof e=="function"?e(this):e.current=this);try{await P()}catch(t){g.error("An error occured while loading YT iframe API:",t);return}u&&this.loadAudioTracks(this.props.video,this.props.videoLang),this.setState({isReady:!0})}componentWillUnmount(){const{refPlayer:e}=this.props;e&&(typeof e=="function"?e(null):e.current=null)}componentDidUpdate(e){const t=this.props.video.id!==e.video.id;u&&t&&this.loadAudioTracks(this.props.video,this.props.videoLang)}loadAudioTracks(e,t){const s=e.tracks.map(n=>({id:n.id,langCode:n.langCode,default:n.id===e.defaultTrackId,...R(n)}));this.audioTracks=s.map(n=>n.langCode);let r="";const d=t||"eng",o=this.audioTracks.indexOf(d),h=this.audioTracks.indexOf(d.split("-")[0]);o!==-1?r=s[o].id:h!==-1&&(r=s[h].id),this.setState({tracks:s,defaultTrack:r}),this.onAudioTracksChanged()}onAudioTracksChanged(){const{onAudioTracksUpdated:e=i,onAudioTrackChanged:t=i}=this.props;e(this.audioTracks),t(this.audioTrack)}loadVideoTrack(e){this.ytVideo.playbackQuality=e.nativeTrack}loadAudioTrack(e){if(!u||!this.state.tracks||!this.mixer)return;const t=this.state.tracks[this.audioTracks.indexOf(e)];t&&this.mixer.loadTrack(t.id,!0)}loadTextTrack(){}get videoTrack(){const e=this.ytVideo.playbackQuality,t=this.ytVideo.availableQualityLevels;return{active:!0,label:v.get(e)||"",width:0,height:0,id:t.indexOf(e),nativeTrack:e,order:t.length-t.indexOf(e)}}get videoTracks(){const e=this.ytVideo.availableQualityLevels;return e.map((t,s)=>({active:t===this.ytVideo.playbackQuality,label:v.get(t)||"",width:0,height:0,id:s,nativeTrack:t,order:e.length-s}))}get audioTrack(){return!u||!this.mixer?"":this.mixer.track.langCode}render(){return!this.props.video.platformId||!this.state.isReady?null:u&&this.state.tracks?p.jsx(I,{videoComponent:k,ref:this.refMixer,defaultTrack:this.state.defaultTrack,tracks:this.state.tracks,onTrackChanging:this.onAudioTrackChanging,onTrackChange:this.onAudioTrackChanged,videoId:this.props.video.platformId,className:this.props.className,controls:this.props.controls,onMixerReady:this.props.onReady,onStateChange:this.onStateChange,onPlaybackQualityChange:this.onPlaybackQualityChange,onError:this.props.onError,onLoadedMetadata:this.props.onLoadedMetadata,onDurationChange:this.props.onDurationChange,onPlaying:this.props.onPlaying,onPause:this.props.onPause,onEnded:this.props.onEnded,onProgress:this.props.onProgress,onTimeUpdate:this.props.onTimeUpdate,onVolumeChange:this.props.onVolumeChange,onWaiting:this.props.onWaiting}):p.jsx(k,{ref:this.refVideo,videoId:this.props.video.platformId,className:this.props.className,controls:this.props.controls,onReady:this.props.onReady,onStateChange:this.onStateChange,onPlaybackQualityChange:this.onPlaybackQualityChange,onError:this.props.onError,onLoadedMetadata:this.props.onLoadedMetadata,onDurationChange:this.props.onDurationChange,onPlaying:this.props.onPlaying,onPause:this.props.onPause,onEnded:this.props.onEnded,onProgress:this.props.onProgress,onTimeUpdate:this.props.onTimeUpdate,onVolumeChange:this.props.onVolumeChange,onWaiting:this.props.onWaiting})}}export{D as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.