1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4186],{44186:function(e,t,s){s.r(t),s.d(t,{GoogleCastProvider:function(){return c}});var a=s(72082),i=s(4413),r=s(4774);s(2784);class n{#e;constructor(e){this.#e=new chrome.cast.media.MediaInfo(e.src,e.type)}build(){return this.#e}setStreamType(e){return e.includes("live")?this.#e.streamType=chrome.cast.media.StreamType.LIVE:this.#e.streamType=chrome.cast.media.StreamType.BUFFERED,this}setTracks(e){return this.#e.tracks=e.map(this.#t),this}setMetadata(e,t){return this.#e.metadata=new chrome.cast.media.GenericMediaMetadata,this.#e.metadata.title=e,this.#e.metadata.images=[{url:t}],this}#t(e,t){let s=new chrome.cast.media.Track(t,chrome.cast.media.TrackType.TEXT);return s.name=e.label,s.trackContentId=e.src,s.trackContentType="text/vtt",s.language=e.language,s.subtype=e.kind.toUpperCase(),s}}class o{#s;#a;#i;constructor(e,t,s){this.#s=e,this.#a=t,this.#i=s}setup(){let e=this.syncRemoteActiveIds.bind(this);(0,a.listenEvent)(this.#a.audioTracks,"change",e),(0,a.listenEvent)(this.#a.textTracks,"mode-change",e),(0,a.effect)(this.#r.bind(this))}getLocalTextTracks(){return this.#a.$state.textTracks().filter(e=>e.src&&"vtt"===e.type)}#n(){return this.#a.$state.audioTracks()}#o(e){let t=this.#s.mediaInfo?.tracks??[];return e?t.filter(t=>t.type===e):t}#c(){let e=[],t=this.#n().find(e=>e.selected),s=this.getLocalTextTracks().filter(e=>"showing"===e.mode);if(t){let s=this.#o(chrome.cast.media.TrackType.AUDIO),a=this.#h(s,t);a&&e.push(a.trackId)}if(s?.length){let t=this.#o(chrome.cast.media.TrackType.TEXT);if(t.length)for(let a of s){let s=this.#h(t,a);s&&e.push(s.trackId)}}return e}#r(){let e=this.getLocalTextTracks();if(!this.#s.isMediaLoaded)return;let t=this.#o(chrome.cast.media.TrackType.TEXT);for(let s of e)if(!this.#h(t,s)){(0,a.untrack)(()=>this.#i?.());break}}syncRemoteTracks(e){if(!this.#s.isMediaLoaded)return;let t=this.#n(),s=this.getLocalTextTracks(),a=this.#o(chrome.cast.media.TrackType.AUDIO),r=this.#o(chrome.cast.media.TrackType.TEXT);for(let s of a){if(this.#l(t,s))continue;let a={id:s.trackId.toString(),label:s.name,language:s.language,kind:s.subtype??"main",selected:!1};this.#a.audioTracks[i.HV.add](a,e)}for(let t of r){if(this.#l(s,t))continue;let a={id:t.trackId.toString(),src:t.trackContentId,label:t.name,language:t.language,kind:t.subtype.toLowerCase()};this.#a.textTracks.add(a,e)}}syncRemoteActiveIds(e){if(!this.#s.isMediaLoaded)return;let t=this.#c(),s=new chrome.cast.media.EditTracksInfoRequest(t);this.#d(s).catch(e=>{})}#d(e){let t=(0,r.getCastSessionMedia)();return new Promise((s,a)=>t?.editTracksInfo(e,s,a))}#l(e,t){return e.find(e=>this.#u(e,t))}#h(e,t){return e.find(e=>this.#u(t,e))}#u(e,t){return t.name===e.label&&t.language===e.language&&t.subtype.toLowerCase()===e.kind.toLowerCase()}}class c{$$PROVIDER_TYPE="GOOGLE_CAST";scope=(0,a.createScope)();#m;#a;#y;#p=null;#f="disconnected";#T=0;#g=0;#k=new i.tn(0,0);#C=new i.LK(this.#E.bind(this));#v;#S=null;#x=!1;constructor(e,t){this.#m=e,this.#a=t,this.#y=new o(e,t,this.#i.bind(this))}get type(){return"google-cast"}get currentSrc(){return this.#p}get player(){return this.#m}get cast(){return(0,r.getCastContext)()}get session(){return(0,r.getCastSession)()}get media(){return(0,r.getCastSessionMedia)()}get hasActiveSession(){return(0,r.hasActiveCastSession)(this.#p)}setup(){this.#L(),this.#I(),this.#y.setup(),this.#a.notify("provider-setup",this)}#L(){(0,r.listenCastContextEvent)(cast.framework.CastContextEventType.CAST_STATE_CHANGED,this.#A.bind(this))}#I(){let e=cast.framework.RemotePlayerEventType,t={[e.IS_CONNECTED_CHANGED]:this.#A,[e.IS_MEDIA_LOADED_CHANGED]:this.#R,[e.CAN_CONTROL_VOLUME_CHANGED]:this.#b,[e.CAN_SEEK_CHANGED]:this.#w,[e.DURATION_CHANGED]:this.#M,[e.IS_MUTED_CHANGED]:this.#D,[e.VOLUME_LEVEL_CHANGED]:this.#D,[e.IS_PAUSED_CHANGED]:this.#N,[e.LIVE_SEEKABLE_RANGE_CHANGED]:this.#_,[e.PLAYER_STATE_CHANGED]:this.#P};this.#v=t;let s=this.#O.bind(this);for(let e of(0,a.keysOf)(t))this.#m.controller.addEventListener(e,s);(0,a.onDispose)(()=>{for(let e of(0,a.keysOf)(t))this.#m.controller.removeEventListener(e,s)})}async play(){if(this.#m.isPaused||this.#x){if(this.#x){await this.#G(!1,0);return}this.#m.controller?.playOrPause()}}async pause(){this.#m.isPaused||this.#m.controller?.playOrPause()}getMediaStatus(e){return new Promise((t,s)=>{this.media?.getStatus(e,t,s)})}setMuted(e){(e&&!this.#m.isMuted||!e&&this.#m.isMuted)&&this.#m.controller?.muteOr
1Unmute()}setCurrentTime(e){this.#m.currentTime=e,this.#a.notify("seeking",e),this.#m.controller?.seek()}setVolume(e){this.#m.volumeLevel=e,this.#m.controller?.setVolumeLevel()}async loadSource(e){if(this.#S?.src!==e&&(this.#S=null),(0,r.hasActiveCastSession)(e)){this.#V(),this.#p=e;return}this.#a.notify("load-start");let t=this.#$(e),s=await this.session.loadMedia(t);if(s){this.#p=null,this.#a.notify("error",Error((0,r.getCastErrorMessage)(s)));return}this.#p=e}destroy(){this.#H(),this.#U()}#H(){this.#S||(this.#g=0,this.#k=new i.tn(0,0)),this.#C.stop(),this.#T=0,this.#S=null}#V(){let e=new a.DOMEvent("resume-session",{detail:this.session});this.#R(e);let{muted:t,volume:s,savedState:i}=this.#a.$state,r=i();this.setCurrentTime(Math.max(this.#m.currentTime,r?.currentTime??0)),this.setMuted(t()),this.setVolume(s()),r?.paused===!1&&this.play()}#U(){this.cast.endCurrentSession(!0);let{remotePlaybackLoader:e}=this.#a.$state;e.set(null)}#F(){let{savedState:e}=this.#a.$state;e.set({paused:this.#m.isPaused,currentTime:this.#m.currentTime}),this.#U()}#E(){this.#X()}#O(e){this.#v[e.type].call(this,e)}#A(e){let t=this.cast.getCastState(),s=t===cast.framework.CastState.CONNECTED?"connected":t===cast.framework.CastState.CONNECTING?"connecting":"disconnected";if(this.#f===s)return;let a=this.#q(e);this.#f=s,this.#a.notify("remote-playback-change",{type:"google-cast",state:s},a),"disconnected"===s&&this.#F()}#R(e){if(!this.#m.isMediaLoaded)return;let t=(0,a.peek)(this.#a.$state.source);Promise.resolve().then(()=>{if(t!==(0,a.peek)(this.#a.$state.source)||!this.#m.isMediaLoaded)return;this.#H();let s=this.#m.duration;this.#k=new i.tn(0,s);let r={provider:this,duration:s,buffered:new i.tn(0,0),seekable:this.#B()},n=this.#q(e);this.#a.notify("loaded-metadata",void 0,n),this.#a.notify("loaded-data",void 0,n),this.#a.notify("can-play",r,n),this.#b(),this.#w(e);let{volume:o,muted:c}=this.#a.$state;this.setVolume(o()),this.setMuted(c()),this.#C.start(),this.#y.syncRemoteTracks(n),this.#y.syncRemoteActiveIds(n)})}#b(){this.#a.$state.canSetVolume.set(this.#m.canControlVolume)}#w(e){let t=this.#q(e);this.#a.notify("stream-type-change",this.#K(),t)}#K(){return this.#m.mediaInfo?.streamType===chrome.cast.media.StreamType.LIVE?this.#m.canSeek?"live:dvr":"live":"on-demand"}#X(){if(this.#S)return;let e=this.#m.currentTime;e!==this.#T&&(this.#a.notify("time-change",e),e>this.#g&&(this.#g=e,this.#_()),this.#a.$state.seeking()&&this.#a.notify("seeked",e),this.#T=e)}#M(e){if(!this.#m.isMediaLoaded||this.#S)return;let t=this.#m.duration,s=this.#q(e);this.#k=new i.tn(0,t),this.#a.notify("duration-change",t,s)}#D(e){if(!this.#m.isMediaLoaded)return;let t={muted:this.#m.isMuted,volume:this.#m.volumeLevel},s=this.#q(e);this.#a.notify("volume-change",t,s)}#N(e){let t=this.#q(e);this.#m.isPaused?this.#a.notify("pause",void 0,t):this.#a.notify("play",void 0,t)}#_(e){let t={seekable:this.#B(),buffered:new i.tn(0,this.#g)},s=e?this.#q(e):void 0;this.#a.notify("progress",t,s)}#P(e){let t=this.#m.playerState,s=chrome.cast.media.PlayerState;if(this.#x=t===s.IDLE,t===s.PAUSED)return;let a=this.#q(e);switch(t){case s.PLAYING:this.#a.notify("playing",void 0,a);break;case s.BUFFERING:this.#a.notify("waiting",void 0,a);break;case s.IDLE:this.#C.stop(),this.#a.notify("pause"),this.#a.notify("end")}}#B(){return this.#m.liveSeekableRange?new i.tn(this.#m.liveSeekableRange.start,this.#m.liveSeekableRange.end):this.#k}#q(e){return e instanceof Event?e:new a.DOMEvent(e.type,{detail:e})}#Y(e){let{streamType:t,title:s,poster:a}=this.#a.$state;return new n(e).setMetadata(s(),a()).setStreamType(t()).setTracks(this.#y.getLocalTextTracks()).build()}#$(e){let t=this.#Y(e),s=new chrome.cast.media.LoadRequest(t),a=this.#a.$state.savedState();return s.autoplay=(this.#S?.paused??a?.paused)===!1,s.currentTime=this.#S?.time??a?.currentTime??0,s}async #G(e,t){let s=(0,a.peek)(this.#a.$state.source);this.#S={src:s,paused:e,time:t},await this.loadSource(s)}#i(){this.#G(this.#m.isPaused,this.#m.currentTime).catch(e=>{})}}}}]); 2//# sourceMappingURL=4186.9636d0d258c04078.js.map
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.