@vindral/web-sdk 4.0.0-105-g107caaa1 → 4.0.0-107-gcc4e82db
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{DqcFFMob.js → BaqinenU.js} +4 -4
- package/{Dz5gbrn2.js → BhWdeSGN.js} +1 -1
- package/{BMbR87FC.js → CQ0pnXvv.js} +4 -2
- package/{BaUeuutp.js → Si-Bbv--.js} +1 -1
- package/core.js +1 -1
- package/legacy.es.js +4 -2
- package/legacy.umd.js +1 -1
- package/package.json +5 -1
- package/player.d.ts +55 -29
- package/player.js +572 -567
- package/react.d.ts +1776 -0
- package/react.js +1 -0
package/legacy.umd.js
CHANGED
|
@@ -46,7 +46,7 @@ void main() {
|
|
|
46
46
|
gl_Position = model * vec4(position, 0.0, 1.0);
|
|
47
47
|
}
|
|
48
48
|
`,El={width:256,codedWidth:256,height:144,codedHeight:144},gl={preserveDrawingBuffer:!1,alpha:!1,depth:!1,stencil:!1,antialias:!1,premultipliedAlpha:!1},BU=class BU extends $A{constructor(){super();i(this,"canvas",document.createElement("canvas"));i(this,"context",ol(this.canvas,gl));i(this,"pixelShader",OQ(this.context,this.context.FRAGMENT_SHADER,rl));i(this,"vertexShader",OQ(this.context,this.context.VERTEX_SHADER,dl));i(this,"buffer",ll(this.context,BU.SQUARE_VERTICES));i(this,"program",qs(this.context,this.vertexShader,this.pixelShader));i(this,"textures",{y:Mt(this.context),u:Mt(this.context),v:Mt(this.context)});i(this,"textRenderer");i(this,"size",El);i(this,"onContextLost",e=>{this.textRenderer=void 0;const t=new Error(e instanceof WebGLContextEvent?e.statusMessage:"webgl context lost");this.emit("context lost",nE(t)),e.preventDefault()});i(this,"onContextRestored",()=>{this.emit("context restored"),this.context=ol(this.canvas,gl),this.pixelShader=OQ(this.context,this.context.FRAGMENT_SHADER,rl),this.vertexShader=OQ(this.context,this.context.VERTEX_SHADER,dl),this.buffer=ll(this.context,BU.SQUARE_VERTICES),this.program=qs(this.context,this.vertexShader,this.pixelShader),this.textures={y:Mt(this.context),u:Mt(this.context),v:Mt(this.context)},this.load()});i(this,"load",()=>{this.context.useProgram(this.program),this.setupPositionVertexAttributes(),this.setSize(El),this.context.uniform1i(this.context.getUniformLocation(this.program,"y_texture"),0),this.context.uniform1i(this.context.getUniformLocation(this.program,"u_texture"),1),this.context.uniform1i(this.context.getUniformLocation(this.program,"v_texture"),2),this.setConversionMatrix(this.rec709())});i(this,"unload",()=>{var t;this.setSize({width:1,height:1,codedHeight:1,codedWidth:1}),[this.textures.y,this.textures.u,this.textures.v].forEach(B=>this.context.deleteTexture(B)),this.context.deleteShader(this.pixelShader),this.context.deleteShader(this.vertexShader),this.context.deleteProgram(this.program),this.context.deleteBuffer(this.buffer),this.canvas.removeEventListener("webglcontextlost",this.onContextLost),this.canvas.removeEventListener("webglcontextrestored",this.onContextRestored),(t=this.context.getExtension("WEBGL_lose_context"))==null||t.loseContext()});i(this,"resetSize",()=>{this.setSize({width:this.size.width/2,height:this.size.height/2,codedHeight:this.size.codedHeight/2,codedWidth:this.size.codedWidth/2})});i(this,"render",(e,t)=>{var B;this.context.useProgram(this.program),this.setSize({width:e.width,height:e.height,codedWidth:e.codedWidth,codedHeight:e.codedHeight}),this.setConversionMatrix(this.rec709()),this.setModelMatrix(this.size.width/this.size.codedWidth,this.size.height/this.size.codedHeight),this.context.activeTexture(this.context.TEXTURE0),this.updateTexture(this.textures.y,this.size.codedWidth,this.size.codedHeight,e.data[0]),this.context.activeTexture(this.context.TEXTURE1),this.updateTexture(this.textures.u,this.size.codedWidth/2,this.size.codedHeight/2,e.data[1]),this.context.activeTexture(this.context.TEXTURE2),this.updateTexture(this.textures.v,this.size.codedWidth/2,this.size.codedHeight/2,e.data[2]),this.context.drawArrays(this.context.TRIANGLE_STRIP,0,4),this.textRenderer&&this.textRenderer.render({width:Math.max(t.clientWidth,960)*window.devicePixelRatio,height:Math.max(t.clientHeight,540)*window.devicePixelRatio,padding:-parseInt((B=t.style.getPropertyValue("--vindral-control-bar-offset"))!=null?B:"0",10)})});i(this,"updateTexture",(e,t,B,F)=>{const s=this.context.LUMINANCE,a=this.context.UNSIGNED_BYTE;this.context.bindTexture(this.context.TEXTURE_2D,e),this.context.texImage2D(this.context.TEXTURE_2D,0,s,t,B,0,s,a,F)});i(this,"setupPositionVertexAttributes",()=>{const e=this.context.getAttribLocation(this.program,"position");this.context.enableVertexAttribArray(e),this.context.vertexAttribPointer(e,2,this.context.FLOAT,!1,0,0)});i(this,"setSize",e=>{Zt(e,this.size)||(this.size=e,this.canvas.setAttribute("width",e.width.toString()),this.canvas.setAttribute("height",e.height.toString()),this.context.viewport(0,0,e.width,e.height),this.setModelMatrix(e.width/e.codedWidth,e.height/e.codedHeight))});i(this,"setModelMatrix",(e,t)=>{const B=this.context.getUniformLocation(this.program,"model");this.context.uniformMatrix4fv(B,!1,this.transformMatrix(e,t))});i(this,"setConversionMatrix",e=>{const t=this.context.getUniformLocation(this.program,"conversion");this.context.uniformMatrix4fv(t,!1,e)});i(this,"transformMatrix",(e,t)=>[2/e,0,0,0,0,-2/t,0,0,0,0,2/1,0,-1,1,0,1]);i(this,"rec709",()=>[1.16438,0,1.79274,-.97295,1.16438,-.21325,-.53291,.30148,1.16438,2.1124,0,-1.1334,0,0,0,1]);i(this,"rec601",()=>[1.16438,0,1.59603,-.87079,1.16438,-.39176,-.81297,.52959,1.16438,2.01723,0,-1.08139,0,0,0,1]);this.canvas.addEventListener("webglcontextlost",this.onContextLost),this.canvas.addEventListener("webglcontextrestored",this.onContextRestored,!1),this.canvas.style.width="100%",this.canvas.style.position="relative"}getTextRenderer(){return this.textRenderer||(this.textRenderer=new kI(this.context)),this.textRenderer}};i(BU,"SQUARE_VERTICES",new Float32Array([0,0,0,1,1,0,1,1]));let _s=BU;const mn=class mn{constructor(A,e,t,B){i(this,"oldTimestampLimit",400);i(this,"pool");i(this,"logger");i(this,"videoRenderer",new _s);i(this,"renderQueue",[]);i(this,"clockSource");i(this,"isFirstFrame",!0);i(this,"animationFrameRequest");i(this,"renderedFrameCount",0);i(this,"rendererDroppedFrameCount",0);i(this,"renderTargetSize");i(this,"load",()=>{this.videoRenderer.load()});i(this,"unload",()=>(this.stopRender(),this.videoRenderer.unload(),Promise.resolve()));i(this,"suspend",()=>{this.renderQueue=[],this.stopRender()});i(this,"unsuspend",()=>{this.animationFrameRequest=requestAnimationFrame(this.render)});i(this,"element",()=>this.videoRenderer.canvas);i(this,"getStatistics",()=>({renderedFrameCount:this.renderedFrameCount,rendererDroppedFrameCount:this.rendererDroppedFrameCount,contextLostCount:0,contextRestoredCount:0}));i(this,"resetSize",()=>{this.videoRenderer.resetSize()});i(this,"setActiveCues",(A,e)=>{this.videoRenderer.getTextRenderer().setActiveCues(A,e)});i(this,"onDecodedFrame",A=>{if(A.type==="video")if(this.isFirstFrame)this.isFirstFrame=!1,requestAnimationFrame(()=>{this.renderSample(A)});else{const e=(this.clockSource.currentTime-this.oldTimestampLimit)/1e3;this.renderQueue=this.renderQueue.filter(t=>{const B=t.timestamp/t.timescale,F=A.timestamp/A.timescale,n=B>e&&B<=F;return n||this.pool.reclaim(t.buffer),n}),this.renderQueue.push(A)}});i(this,"render",()=>{const A=this.clockSource.currentTime;let e=this.renderQueue[0],t,B=0;for(;e&&e.timestamp/e.timescale*1e3<=A;)e=this.renderQueue.shift(),e&&(B++,t&&this.pool.reclaim(t.buffer),t=e),e=this.renderQueue[0];t&&this.renderSample(t),this.rendererDroppedFrameCount+=Math.max(B-1,0),this.animationFrameRequest=requestAnimationFrame(this.render)});i(this,"renderSample",A=>{this.renderedFrameCount++,this.videoRenderer.render(A,this.renderTargetSize),this.pool.reclaim(A.buffer)});i(this,"stopRender",()=>{this.animationFrameRequest&&cancelAnimationFrame(this.animationFrameRequest)});this.logger=A,this.clockSource=e,this.pool=t,this.renderTargetSize=B||this.videoRenderer.canvas}};i(mn,"create",(A,e,t,B)=>new mn(A,e,t,B));let KF=mn;const Wn=class Wn{constructor(A,e,t,B,F){i(this,"logger");i(this,"emitter");i(this,"audioPlayer");i(this,"videoPlayer");i(this,"pool");i(this,"unmuter",new SI);i(this,"_isPaused",!1);i(this,"isDisconnected",!1);i(this,"timers",new mA);i(this,"textTracks",new al);i(this,"playbackRate");i(this,"reset",()=>{});i(this,"load",()=>{this.audioPlayer.useDefaultDestination(),this.emitter.on("decoded frame",this.onDecodedFrame),this.emitter.on("flush buffers",this.flushBuffers),this.videoPlayer.load(),this.timers.setInterval(()=>{if(!this.textTracks.language)return;const A=this.textTracks.getActiveCues(this.currentTime/1e3);this.videoPlayer.setActiveCues(A,{width:this.videoPlayer.element().clientWidth,height:this.videoPlayer.element().clientHeight})},100)});i(this,"unload",()=>{this.emitter.off("decoded frame",this.onDecodedFrame),this.emitter.off("flush buffers",this.flushBuffers),this.audioPlayer.unload(),this.videoPlayer.unload(),this.timers.unload()});i(this,"suspend",()=>{this.videoPlayer.suspend(),this.audioPlayer.suspend()});i(this,"unsuspend",()=>{this.videoPlayer.unsuspend(),this.audioPlayer.unsuspend()});i(this,"element",()=>this.videoPlayer.element());i(this,"getStatistics",()=>this.videoPlayer.getStatistics());i(this,"flushBuffers",()=>{this.audioPlayer.flushBuffer()});i(this,"activateAudioPlayer",()=>(this.isDisconnected&&(this.isDisconnected=!1,this.audioPlayer.useDefaultDestination()),this._isPaused=!1,this.unmuter.unmute(),this.audioPlayer.play()));i(this,"onDecodedFrame",A=>{try{this.audioPlayer.onDecodedFrame(A)}catch(e){e instanceof Error&&this.emitter.emit("error",fo(!1,e))}this.videoPlayer.onDecodedFrame(A)});this.logger=e,this.emitter=A,this.pool=t,this.audioPlayer=XF.create(this.logger.createContext("AudioPlayerModule"),B,{muted:F,reInitWhenStuck:!0}),this.audioPlayer.on("stuck",()=>{this.isDisconnected=!0}),this.audioPlayer.on("state change",()=>{this.emitter.emit("volume state",{volume:this.volume,isMuted:this.muted})}),this.videoPlayer=KF.create(this.logger.createContext("VideoPlayerModule"),this.audioPlayer,this.pool)}get volume(){return this.audioPlayer.volume}set volume(A){this.audioPlayer.volume=A}get muted(){return this.audioPlayer.muted}set muted(A){const e=this.muted;this.audioPlayer.muted=A,!A&&e&&this.activateAudioPlayer().catch(V)}get currentTime(){return this.audioPlayer.currentTime}set currentTime(A){this.audioPlayer.currentTime=A}get isActivated(){return this.audioPlayer.isActivated}set isActivated(A){this.audioPlayer.isActivated=A}get seekTime(){return this.audioPlayer.seekTime}get isPaused(){return this._isPaused}get isSeeking(){return this.audioPlayer.isSeeking}get audioNode(){return this.audioPlayer.audioNode}play(){this.activateAudioPlayer().then(()=>{this.emitter.emit("media element state","playing")}).catch(()=>{this.emitter.emit("needs user input",{forAudio:!0,forVideo:!1})})}pause(){this._isPaused=!0,this.audioPlayer.pause(),this.emitter.emit("media element state","paused")}};i(Wn,"create",(A,e,t,B,F)=>new Wn(A,e,t,B,F));let $s=Wn;const pn=class pn{constructor(A,e,t,B,{muted:F,type:n,poster:s}){i(this,"logger");i(this,"emitter");i(this,"mediaElement");i(this,"audioPlayer");i(this,"videoPlayer");i(this,"pool");i(this,"isDisconnected",!0);i(this,"_userProvidedMuted",!1);i(this,"timers",new mA);i(this,"volumeState");i(this,"textTracks",new al);i(this,"reset",()=>{});i(this,"load",()=>{this.mediaElement.load(),this.emitter.on("decoded frame",this.onDecodedFrame),this.emitter.on("flush buffers",this.flushBuffers),this.emitter.on("ios-hack: reset size",this.resetCanvasSize),this.emitter.on("enter picture in picture",this.onEnterIOSHack),this.emitter.on("exit picture in picture",this.onExitIOSHack),this.element().element.addEventListener("webkitendfullscreen",this.onExitIOSHack),this.element().element.addEventListener("webkitbeginfullscreen",this.onEnterIOSHack),this.videoPlayer.load(),this.timers.setInterval(()=>{if(!this.textTracks.language)return;const A=this.textTracks.getActiveCues(this.currentTime/1e3);this.videoPlayer.setActiveCues(A,{width:this.mediaElement.element.clientWidth,height:this.mediaElement.element.clientHeight})},100)});i(this,"unload",()=>{this.emitter.off("decoded frame",this.onDecodedFrame),this.emitter.off("flush buffers",this.flushBuffers),this.emitter.off("ios-hack: reset size",this.resetCanvasSize),this.emitter.off("enter picture in picture",this.onEnterIOSHack),this.emitter.off("exit picture in picture",this.onExitIOSHack),this.element().element.removeEventListener("webkitendfullscreen",this.onExitIOSHack),this.element().element.removeEventListener("webkitbeginfullscreen",this.onEnterIOSHack),this.mediaElement.unload(),this.timers.unload(),this.audioPlayer.unload(),this.videoPlayer.unload()});i(this,"suspend",()=>{this.videoPlayer.suspend(),this.audioPlayer.suspend()});i(this,"unsuspend",()=>{this.videoPlayer.unsuspend(),this.audioPlayer.unsuspend()});i(this,"element",()=>this.mediaElement);i(this,"getStatistics",()=>this.videoPlayer.getStatistics());i(this,"activateAudioPlayer",()=>(this.isDisconnected&&this.connectStreams(),this.audioPlayer.play()));i(this,"flushBuffers",()=>{this.audioPlayer.flushBuffer()});i(this,"resetCanvasSize",()=>{this.videoPlayer.resetSize()});i(this,"onEnterIOSHack",()=>{this.mediaElement._iosHackEnterPiPMode()});i(this,"onExitIOSHack",()=>{this.mediaElement._iosHackExitPiPMode()});i(this,"onDecodedFrame",A=>{try{this.audioPlayer.onDecodedFrame(A)}catch(e){e instanceof Error&&this.emitter.emit("error",fo(!1,e))}this.videoPlayer.onDecodedFrame(A)});i(this,"connectStreams",()=>{const A=this.videoPlayer.element().captureStream(),e=this.audioPlayer.useMediaStreamDestination().stream,t=[];t.push(...A.getTracks(),...e.getTracks()),this.mediaElement.element.srcObject=new MediaStream(t),this.isDisconnected=!1});i(this,"updateVolumeState",()=>{const A={isMuted:this.muted,volume:this.volume};Zt(A,this.volumeState)||(this.volumeState=A,this.emitter.emit("volume state",this.volumeState))});this.logger=e,this.emitter=A,this.pool=t,this._userProvidedMuted=F,this.mediaElement=new bs({poster:s,type:n,muted:F,autoplay:!1,logger:this.logger.createContext("MediaElement")}),this.mediaElement.on("volume state",a=>{this.updateVolumeState(),!a.isMuted&&!this.audioPlayer.isContextRunning&&this.activateAudioPlayer().catch(V),a.isMuted||(this._userProvidedMuted=!1)}),this.mediaElement.on("media element state",a=>{a==="paused"&&this.audioPlayer.flushBuffer(),this.emitter.emit("media element state",a)}),this.audioPlayer=XF.create(this.logger.createContext("AudioPlayerModule"),B,{muted:!1,reInitWhenStuck:!1}),this.audioPlayer.on("stuck",()=>{this.isDisconnected=!0}),this.audioPlayer.on("state change",a=>{a==="suspended"||a==="interrupted"?this.mediaElement.muted=!0:a==="running"&&(this.mediaElement.muted=this._userProvidedMuted||document.visibilityState==="hidden"),this.updateVolumeState()}),this.videoPlayer=KF.create(this.logger.createContext("VideoPlayerModule"),this.audioPlayer,this.pool,this.mediaElement.element),this.volumeState={volume:this.volume,isMuted:this.muted}}get volume(){return this.mediaElement.volume}set volume(A){this.mediaElement.volume=A}get muted(){return this.mediaElement.muted||this.audioPlayer.muted}set muted(A){const e=this.muted;this._userProvidedMuted=A,this.mediaElement.muted=A,!A&&e&&this.activateAudioPlayer().catch(V)}get currentTime(){return this.audioPlayer.currentTime}set currentTime(A){this.audioPlayer.currentTime=A}get isActivated(){return this.mediaElement.isActivated}set isActivated(A){this.mediaElement.isActivated=A}get seekTime(){return this.mediaElement.seekTime}get isPaused(){return this.mediaElement.isPaused}get isSeeking(){return this.mediaElement.isSeeking}get audioNode(){return this.audioPlayer.audioNode}play(){const A=this._userProvidedMuted;return this.activateAudioPlayer().catch(()=>{A||this.emitter.emit("needs user input",{forAudio:!0,forVideo:!1})}),this.mediaElement.play()}pause(){this.mediaElement.pause()}};i(pn,"create",(A,e,t,B,F)=>new pn(A,e,t,B,F));let Aa=pn;const NI=()=>Q=>Il(Q.buffered.start(0),Q.buffered.end(Q.buffered.length-1)),Il=(Q,A)=>e=>e.remove(Math.max(0,Q),Math.min(Number.POSITIVE_INFINITY,A)),cl=Q=>A=>A.appendBuffer(Q),mI=Q=>A=>A.changeType(Q),WI=Q=>A=>Q(A);class pI{constructor(A){i(this,"commandQueue",[]);i(this,"sourceBuffer");i(this,"currentInit");i(this,"handleQueue",()=>{var A;this.sourceBuffer.updating||(A=this.commandQueue.shift())==null||A.execute(this.sourceBuffer)});i(this,"appendBuffer",(A,e)=>new Promise((t,B)=>{if(e&&this.currentInit!==e){const n=new HQ(cl(e),t,B);this.commandQueue.push(n),this.currentInit=e}const F=new HQ(cl(A),t,B);this.commandQueue.push(F),this.handleQueue()}));i(this,"execute",A=>new Promise((e,t)=>{const B=new HQ(WI(A),e,t);this.commandQueue.push(B),this.handleQueue()}));i(this,"buffered",()=>this.sourceBuffer.buffered);i(this,"removeFromMediaSource",A=>{A.removeSourceBuffer(this.sourceBuffer)});i(this,"changeType",A=>new Promise((e,t)=>{const B=new HQ(mI(A),e,t);this.commandQueue.push(B),this.handleQueue()}));i(this,"removeBuffer",(A,e)=>new Promise((t,B)=>{const F=new HQ(Il(A,e),t,B);this.commandQueue.push(F),this.handleQueue()}));i(this,"flush",()=>new Promise((A,e)=>{const t=new HQ(NI,A,e);this.commandQueue.push(t),this.handleQueue()}));this.sourceBuffer=A,this.sourceBuffer.addEventListener("updateend",this.handleQueue)}}class Cl extends $A{constructor(){super();i(this,"MediaSource",se());i(this,"mediaSource",new this.MediaSource);i(this,"isOpen",()=>this.mediaSource.readyState==="open");i(this,"isClosed",()=>this.mediaSource.readyState==="closed");i(this,"isEnded",()=>this.mediaSource.readyState==="ended");i(this,"createObjectURL",()=>URL.createObjectURL(this.mediaSource));i(this,"attach",e=>{const t=e;if("srcObject"in t)try{t.srcObject=this.mediaSource}catch(B){if(B instanceof Error&&B.name!=="TypeError")throw B;t.src=this.createObjectURL()}else e.src=this.createObjectURL()});i(this,"detach",e=>{if(this.mediaSource&&this.mediaSource.readyState==="open")try{this.mediaSource.endOfStream()}catch(t){}e.srcObject&&(e.srcObject=null),e.src!==""&&(URL.revokeObjectURL(e.src),e.removeAttribute("src")),e.load()});i(this,"addSourceBuffer",e=>{const t=this.mediaSource.addSourceBuffer(e);return new pI(t)});i(this,"removeSourceBuffer",e=>{e.removeFromMediaSource(this.mediaSource)});i(this,"endOfStream",e=>{this.mediaSource.endOfStream(e)});i(this,"onSourceOpen",()=>{this.setDurationIfNeeded(),this.emit("source open")});i(this,"onSourceEnded",()=>this.emit("source ended"));i(this,"onSourceClosed",()=>this.emit("source close"));i(this,"setDurationIfNeeded",()=>{if(Number.isNaN(this.mediaSource.duration)&&this.mediaSource.readyState==="open"){for(let e=0;e<this.mediaSource.sourceBuffers.length;e++){const t=this.mediaSource.sourceBuffers[e];if(t!=null&&t.updating)return}this.mediaSource.duration=Number.POSITIVE_INFINITY}});this.mediaSource.addEventListener("sourceopen",this.onSourceOpen),this.mediaSource.addEventListener("sourceclose",this.onSourceClosed),this.mediaSource.addEventListener("sourceended",this.onSourceEnded)}}i(Cl,"isTypeSupported",e=>{var t,B;return(B=(t=se())==null?void 0:t.isTypeSupported(e))!=null?B:!1});class Rl{constructor(){i(this,"initSegments",new Map);i(this,"set",(A,e,t)=>{var F;const B=(F=this.initSegments.get(A))!=null?F:new Map;B.set(e,t),this.initSegments.set(A,B)});i(this,"get",(A,e)=>{var t;return(t=this.initSegments.get(A))==null?void 0:t.get(e)})}}function DI(Q,{mediaSource:A,mimeType:e}){return K(h({},Q),{state:"initialized",mimeType:e,sourceBuffer:A.addSourceBuffer(e),isWorkingOnPendingSamples:!1,sequenceNumber:0,lastBufferCleanupTime:Date.now()})}function hl({initSegments:Q,pendingSamples:A}){return{state:"uninitialized",initSegments:Q!=null?Q:new Rl,sequenceNumber:0,isWorkingOnPendingSamples:!1,hasFirstSync:!!A,pendingSamples:A!=null?A:[],consecutiveQuotaExceededErrorCount:0,successfulAppendCalls:0}}const Dn=class Dn{constructor(A,e,t){i(this,"maxChunkSize",20);i(this,"minConsecutiveErrorsBeforeEmit",5);i(this,"maxSecondsInBuffer",60);i(this,"logger");i(this,"timers",mA.create());i(this,"emitter");i(this,"mediaElement");i(this,"mediaSource",new Cl);i(this,"trackContexts",new Map);i(this,"autoRecoverFromMediaErrors",!0);i(this,"quotaErrorCount",0);i(this,"recoveredFromErrorCount",0);i(this,"sourceOpenStartTime",Date.now());i(this,"sourceOpenEndTime",Date.now());i(this,"pendingTracksToAddSourceBuffers");i(this,"hasAddedInitialPosterFrame",!0);i(this,"load",()=>{this.emitter.on("init segment",this.init),this.emitter.on("coded sample",this.onCodedSample),this.emitter.on("flush buffers",this.flushBuffers),this.emitter.on("fragment",this.onFragment)});i(this,"unload",()=>{this.logger.debug("Unloading module..."),this.emitter.off("init segment",this.init),this.emitter.off("coded sample",this.onCodedSample),this.emitter.off("flush buffers",this.flushBuffers),this.emitter.off("fragment",this.onFragment),this.mediaSource.off("source ended",this.onSourceEnded),this.mediaSource.off("source open",this.onSourceOpen),this.mediaSource.detach(this.mediaElement),this.trackContexts.forEach(A=>A.pendingSamples=[]),this.timers.unload(),this.logger.debug("Unloaded module")});i(this,"getStatistics",()=>{var e,t,B,F;const A={quotaErrorCount:this.quotaErrorCount,mediaSourceOpenTime:this.sourceOpenEndTime-this.sourceOpenStartTime,successfulAudioAppendsCalls:(e=this.trackContexts.get("audio"))==null?void 0:e.successfulAppendCalls,successfulVideoAppendCalls:(t=this.trackContexts.get("video"))==null?void 0:t.successfulAppendCalls};if(this.mediaElement instanceof HTMLVideoElement){const n=(F=(B=this.mediaElement).getVideoPlaybackQuality)==null?void 0:F.call(B);A.totalVideoFrames=n==null?void 0:n.totalVideoFrames,A.droppedVideoFrames=n==null?void 0:n.droppedVideoFrames}return A});i(this,"flushBuffers",()=>{this.trackContexts.forEach(A=>{A.pendingSamples=[],A.hasFirstSync=!1,A.state!=="uninitialized"&&this.mediaSource.isOpen()&&A.sourceBuffer.removeBuffer(0,Number.POSITIVE_INFINITY).catch(e=>{this.logger.error("Failed to remove buffer",e)})})});i(this,"setTrackContexts",(A=new Map)=>{this.logger.debug("setTrackContexts"),["audio","video"].forEach(t=>{var n,s,a,d;const B=(s=(n=A.get(t))==null?void 0:n.pendingSamples)!=null?s:[],F=(a=A.get(t))==null?void 0:a.initSegments;for(;B.length>0&&!((d=B[0])!=null&&d.isSync);)B.shift();this.trackContexts.set(t,hl({pendingSamples:B,initSegments:F}))})});i(this,"setSourceBuffers",A=>r(this,null,function*(){if(this.mediaSource.isClosed()){this.pendingTracksToAddSourceBuffers=A;return}let e=!0;for(const t of A){const B=this.trackContexts.get(t.type);if(!B||B.state==="uninitialized"||B.mimeType!==t.mimeType){e=!1;break}}if(e){this.logger.debug("Already setup with the correct mime types");return}for(const t of A){let B=this.trackContexts.get(t.type);B||(B=hl({pendingSamples:[],initSegments:new Rl}),this.trackContexts.set(t.type,B)),B.state==="initialized"?t.mimeType!==B.mimeType&&(yield B.sourceBuffer.changeType(t.mimeType)):this.trackContexts.set(t.type,DI(B,{mimeType:t.mimeType,mediaSource:this.mediaSource}))}}));i(this,"getBuffer",A=>{const e=[];if(this.mediaSource.isClosed())return[];const t=this.trackContexts.get(A);if(!t||t.state==="uninitialized")return[];try{const B=t.sourceBuffer.buffered();if(!B)return[];for(let F=0;F<B.length;F++)e.push({start:B.start(F)*1e3,end:B.end(F)*1e3});return e}catch(B){return[]}});i(this,"init",({initSegment:A,mimeType:e})=>{this.logger.debug("Added init segment",{channel:A.channelId,renditionId:A.renditionId});const t=this.trackContexts.get(A.type);if(!t)throw SF(A.type,A.renditionId);t.state==="initialized"&&(t.mimeType=e);const B=Mg(A.codec,A.data,A.timescale);B&&t.initSegments.set(A.channelId,A.renditionId,B)});i(this,"append",(A,e)=>r(this,null,function*(){var s;const t=A[0];if(!t)return;const B=this.trackContexts.get(t.type),F=B==null?void 0:B.initSegments.get(t.channelId,t.renditionId);if(this.mediaSource.isClosed())return;if(!F)throw tE(t.renditionId,t.channelId);if(!B)throw SF(t.type,t.renditionId);if(B.state==="uninitialized")throw Mo(t.type,t.renditionId);if(e){const a=(t.timestamp+((s=t.compositionTimeOffset)!=null?s:0))/t.timescale;yield B.sourceBuffer.removeBuffer(a,Number.POSITIVE_INFINITY);const d=B.previousSample;if(d&&d.codec!==t.codec&&B.sourceBuffer.changeType)try{yield B.sourceBuffer.changeType(B.mimeType)}catch(E){}yield B.sourceBuffer.appendBuffer(F)}const n=Math.max(0,t.timestamp/t.timescale-this.maxSecondsInBuffer);n>0&&Date.now()-B.lastBufferCleanupTime>1e4&&(B.lastBufferCleanupTime=Date.now(),yield B.sourceBuffer.removeBuffer(0,n+10));try{let a=B.sequenceNumber;const d=Xg(A,a++);yield B.sourceBuffer.appendBuffer(d),B.sequenceNumber=a,B.consecutiveQuotaExceededErrorCount=0,B.successfulAppendCalls++}catch(a){throw a instanceof DOMException&&(a.code===DOMException.QUOTA_EXCEEDED_ERR?(this.quotaErrorCount++,B.consecutiveQuotaExceededErrorCount++,this.logger.error("quota exceeded error",{error:a}),B.pendingSamples.unshift(...A)):this.mediaElement.error&&B.pendingSamples.unshift(...A)),a}}));i(this,"onFragment",({fragment:A})=>{const e=A.mediaType();if(!e)return;const t=this.trackContexts.get(e);if(!t)throw SF(e);if(!this.mediaSource.isClosed()){if(t.state==="uninitialized")throw Mo(e);t.sourceBuffer.appendBuffer(A.rawBytes(),A.header().rawBytes()).catch(B=>console.log(B))}});i(this,"onCodedSample",A=>{if(A.duration===0)return;const e=this.trackContexts.get(A.type);if(!e)throw SF(A.type,A.renditionId);if(!(!e.hasFirstSync&&!A.isSync)){if(this.hasAddedInitialPosterFrame&&A.isSync&&A.type==="video"){this.hasAddedInitialPosterFrame=!1;const t=h({},A);t.timestamp=0,e.pendingSamples.push(t)}e.hasFirstSync=!0,e.pendingSamples.push(A),e.state!=="uninitialized"&&(e.isWorkingOnPendingSamples||ZI(e,this.append,this.maxChunkSize).catch(t=>{if(e.isWorkingOnPendingSamples=!1,t instanceof Error){if(this.logger.error("append failed",{message:t.message,name:t.name}),t instanceof DOMException&&t.code===DOMException.QUOTA_EXCEEDED_ERR){if(e.consecutiveQuotaExceededErrorCount>=this.minConsecutiveErrorsBeforeEmit){const B=Go(!1,t,e.consecutiveQuotaExceededErrorCount,A.type);this.emitter.emit("error",B)}}else{const B=Go(!1,t,e.consecutiveQuotaExceededErrorCount,A.type);this.emitter.emit("error",B)}this.mediaElement.error&&this.onSourceEnded()}}))}});i(this,"onSourceOpen",()=>{this.logger.debug("source opened"),this.sourceOpenEndTime=Date.now(),this.pendingTracksToAddSourceBuffers&&(this.setSourceBuffers(this.pendingTracksToAddSourceBuffers),this.pendingTracksToAddSourceBuffers=void 0)});i(this,"onSourceEnded",()=>{const{error:A}=this.mediaElement;if(A){const e=/AUDIO_RENDERER/.test(A.message)||!this.autoRecoverFromMediaErrors,t=eE(e,A);if(this.logger.error("MediaElement error",{error:t}),this.emitter.emit("error",t),!t.isFatal()){this.logger.info("Re-opening MediaSource"),this.emitter.emit("recovered from media error",{error:t,count:this.recoveredFromErrorCount}),this.recoveredFromErrorCount++;const B=!this.mediaElement.paused,F=[];this.trackContexts.forEach((n,s)=>{n.state==="initialized"&&F.push({type:s,mimeType:n.mimeType})}),this.sourceOpenStartTime=Date.now(),this.pendingTracksToAddSourceBuffers=F,this.mediaElement.src="",this.setTrackContexts(this.trackContexts),this.mediaSource.attach(this.mediaElement),B&&this.mediaElement.play().catch(V)}}this.logger.debug("source ended")});this.logger=A,this.mediaElement=t,this.emitter=e}};i(Dn,"create",(A,e,t)=>{const B=new Dn(A,e,t);return B.setTrackContexts(),B.mediaSource.on("source ended",B.onSourceEnded),B.mediaSource.on("source open",B.onSourceOpen),B.mediaSource.attach(t),B});let ea=Dn;const Sl=(Q,A)=>{var s;const e=Q.renditionId!==A.renditionId,t=Q.channelId!==A.channelId,B=((s=Q.timestamp)!=null?s:0)>A.timestamp,F=Q.type==="video"&&A.type==="video"&&Q.levelIdc!==A.levelIdc;let n=!1;return Q.type==="video"&&A.type==="video"&&(n=A.width!==Q.width||A.height!==Q.height),t||e||B||n||F},ZI=(Q,A,e)=>r(this,null,function*(){for(Q.isWorkingOnPendingSamples=!0;Q.pendingSamples.length>0;){const t=[];let B=0;for(let s=0;s<Q.pendingSamples.length;s++){B=s;const a=Q.pendingSamples[s],d=Q.pendingSamples[s+1];if(a&&(t.push(a),d)){if(Sl(a,d))break;const E=(a.timestamp+a.duration)/a.timescale;if(d.timestamp/d.timescale-E>.1)break}if(s===e-1)break}const F=t[0];if(!F)break;const n=Q.previousSample?Sl(Q.previousSample,F):!0;yield A(t,n),Q.pendingSamples=Q.pendingSamples.slice(B+1),Q.previousSample=t[t.length-1]}Q.isWorkingOnPendingSamples=!1}),Zn=class Zn{constructor(A,e){i(this,"logger");i(this,"emitter");i(this,"element");i(this,"pictureInPictureWindow");i(this,"unload",()=>{this.emitter.off("add picture in picture listener",this.onEnablePictureInPicture)});i(this,"onEnablePictureInPicture",A=>{this.element=A.element,A.element.addEventListener("leavepictureinpicture",()=>{this.pictureInPictureWindow=void 0,this.logger.debug("Leave picture in picture"),this.emitter.emit("exit picture in picture")}),A.element.addEventListener("enterpictureinpicture",e=>{this.pictureInPictureWindow=e.pictureInPictureWindow,this.logger.debug("Enter picture in picture"),this.emitter.emit("enter picture in picture",this)}),A.element.autopictureinpicture=!0});i(this,"getPictureInPictureSize",()=>this.pictureInPictureWindow);i(this,"isPictureInPictureActive",()=>this.isWebkitPresentationModeActive()||this.isStandardPictureInPictureActive());i(this,"isPictureInPictureSupported",()=>this.isWebkitPresentationModeSupported()||this.isStandardPictureInPictureSupported());i(this,"requestPictureInPicture",()=>(this.emitter.emit("ios-hack: reset size"),this.isStandardPictureInPictureSupported()?this.requestStandardPictureInPicture():this.isWebkitPresentationModeSupported()?this.requestWebkitPresentationMode("picture-in-picture"):Promise.reject(new Error("Picture in picture is not supported"))));i(this,"exitPictureInPicture",()=>this.isStandardPictureInPictureSupported()?this.exitStandardPictureInPicture():this.isWebkitPresentationModeSupported()?this.requestWebkitPresentationMode("inline"):Promise.reject(new Error("Picture in picture is not supported")));i(this,"getStatistics",()=>({isPictureInPictureActive:this.isPictureInPictureActive()}));i(this,"requestStandardPictureInPicture",()=>r(this,null,function*(){return yield this.element.requestPictureInPicture()}));i(this,"exitStandardPictureInPicture",()=>r(this,null,function*(){return yield document.exitPictureInPicture()}));i(this,"isStandardPictureInPictureSupported",()=>!!this.element&&!!this.element.requestPictureInPicture&&!!document.pictureInPictureEnabled);i(this,"isStandardPictureInPictureActive",()=>!!this.element&&!!document.pictureInPictureElement);i(this,"isWebkitPresentationModeActive",()=>!!this.element&&this.element.webkitPresentationMode==="picture-in-picture");i(this,"requestWebkitPresentationMode",A=>r(this,null,function*(){return this.element.webkitSetPresentationMode(A),Promise.resolve()}));i(this,"isWebkitPresentationModeSupported",()=>!!this.element&&!!this.element.webkitSetPresentationMode);this.emitter=A,this.logger=e,this.emitter.on("add picture in picture listener",this.onEnablePictureInPicture)}};i(Zn,"create",(A,e)=>new Zn(A,e));let ta=Zn;const wn=class wn{constructor(A,e,t,B){i(this,"emitter");i(this,"logger");i(this,"clockSource");i(this,"state","buffering");i(this,"bufferFullness",0);i(this,"targetBufferTime");i(this,"lastBufferStateEvent","drained");i(this,"firstFrameTime");i(this,"currentTimeIsInRange",!1);i(this,"needsInputForAudioCount",0);i(this,"needsInputForVideoCount",0);i(this,"unload",()=>{this.emitter.off("buffer state",this.onBufferedStateChanged),this.emitter.off("needs user input",this.onNeedsUserInput)});i(this,"setTargetBufferTime",A=>void(this.targetBufferTime=A));i(this,"getTargetBufferTime",()=>this.targetBufferTime);i(this,"getBufferFullness",()=>this.bufferFullness);i(this,"getLastBufferStateEvent",()=>this.lastBufferStateEvent);i(this,"getState",()=>this.state);i(this,"getFirstFrameTime",()=>this.firstFrameTime);i(this,"getStatistics",()=>({bufferTime:this.targetBufferTime,needsInputForAudioCount:this.needsInputForAudioCount,needsInputForVideoCount:this.needsInputForVideoCount}));i(this,"onBufferedStateChanged",({buffered:A,isPaused:e})=>{const t=this.clockSource.currentTime,B=A.some(E=>E.start<t&&t<E.end),F=A[A.length-1],n=F?F.end-F.start>=this.targetBufferTime:!1,s=F?Math.max(0,F.end-t)/this.targetBufferTime:0,a=e?"paused":B?"playing":"buffering",d=this.state;this.currentTimeIsInRange!==B&&!B?(this.lastBufferStateEvent="drained",this.emitter.emit("buffer state event",this.lastBufferStateEvent)):B&&n&&this.lastBufferStateEvent==="drained"&&(this.lastBufferStateEvent="filled",this.emitter.emit("buffer state event",this.lastBufferStateEvent)),a==="playing"&&!this.firstFrameTime&&(this.firstFrameTime=Date.now()),this.currentTimeIsInRange=B,this.state=a,this.bufferFullness=B?s:0,d!==a&&this.emitter.emit("playback state",a),this.emitter.emit("buffer fullness",this.bufferFullness)});i(this,"onNeedsUserInput",({forAudio:A,forVideo:e})=>{A&&this.needsInputForAudioCount++,e&&this.needsInputForVideoCount++});this.emitter=A,this.logger=e,this.clockSource=t,this.targetBufferTime=B,this.emitter.on("buffer state",this.onBufferedStateChanged),this.emitter.on("needs user input",this.onNeedsUserInput)}};i(wn,"create",(A,e,t,B)=>new wn(A,e,t,B));let Qa=wn;const ia=()=>({upgradesFromLevel:[],downgradesFromLevel:[],bufferingRanges:[],activeRanges:[],decodeRate:Number.MAX_SAFE_INTEGER}),wI=()=>({levels:{},levelDowngrades:[],levelUpgrades:[],bufferFullness:0,general:ia()}),Tn=class Tn{constructor(A,e){i(this,"minBufferFullnessLengthForRegression",6);i(this,"logger");i(this,"emitter");i(this,"timers",mA.create());i(this,"metrics",wI());i(this,"bufferFullness",new D(30));i(this,"bufferFullnessRegression");i(this,"currentLevel");i(this,"isSuspended",!1);i(this,"_fatalQosCount",0);i(this,"hasAsserted",!1);i(this,"load",()=>{this.emitter.on("playback state",this.onPlaybackState),this.emitter.on("buffer fullness",this.onBufferFullness),this.emitter.on("rendition level changed",this.onRenditionLevelChanged),this.emitter.on("video decode rate",this.onVideoDecodeRate)});i(this,"unload",()=>{this.emitter.off("playback state",this.onPlaybackState),this.emitter.off("buffer fullness",this.onBufferFullness),this.emitter.off("rendition level changed",this.onRenditionLevelChanged),this.emitter.off("video decode rate",this.onVideoDecodeRate),this.suspend()});i(this,"suspend",()=>{this.isSuspended=!0,this.timers.unload(),this.stopBuffering(),this.unsetActive()});i(this,"unsuspend",()=>{this.isSuspended=!1,this.currentLevel&&this.setActive()});i(this,"fatalQosGraceTime",()=>1e4*(this.fatalQosCount+1));i(this,"incrementFatalQosCount",()=>{this._fatalQosCount++});i(this,"getMetrics",()=>this.metrics);i(this,"getLevelStats",A=>{var t,B,F,n;const e=((B=(t=A.video)==null?void 0:t.bitRate)!=null?B:0)+((n=(F=A.audio)==null?void 0:F.bitRate)!=null?n:0);return this.metrics.levels[e]});i(this,"getBufferFullnessRegression",()=>this.bufferFullnessRegression);i(this,"activeRatios",()=>{const A=new Map,e=XQ(this.metrics.general.activeRanges);if(Object.entries(this.metrics.levels).forEach(([t,B])=>{A.set(t,e?XQ(B.activeRanges)/e:0)}),!this.hasAsserted){const t=A.size?Math.abs(Array.from(A.values()).reduce((B,F)=>B+F,0)-1)<=.02:!0;t||(this.hasAsserted=!0,console.assert(t,`Active ratios should be close to 1 - actual: ${Array.from(A.values()).reduce((B,F)=>B+F,0)}`))}return A});i(this,"bufferingRatios",()=>{const A=new Map,e=XQ(this.metrics.general.bufferingRanges);if(Object.entries(this.metrics.levels).forEach(([t,B])=>{A.set(t,e?XQ(B.bufferingRanges)/e:0)}),!this.hasAsserted){const t=Array.from(A.values()).reduce((B,F)=>B+F,0)<=1;t||(this.hasAsserted=!0,console.assert(t,`Buffering ratios should be less than 1 - actual: ${Array.from(A.values()).reduce((B,F)=>B+F,0)}`))}return A});i(this,"bufferingEventsLast",A=>this.metrics.general.bufferingRanges.filter(e=>e.start>=Date.now()-A).length);i(this,"timeSpentBufferingLast",A=>Eo(this.metrics.general.bufferingRanges,A));i(this,"timeSpentActiveLast",A=>Eo(this.metrics.general.activeRanges,A));i(this,"timeSpentPlayingInAtLeastLevelRatio",A=>{var a,d,E,g;const e=this.timeSpentBuffering(),t=this.timeActive(),B=this.bufferingRatios(),F=this.activeRatios(),n=((d=(a=A.video)==null?void 0:a.bitRate)!=null?d:0)+((g=(E=A.audio)==null?void 0:E.bitRate)!=null?g:0),s=e/t;return Object.keys(this.metrics.levels).map(c=>parseInt(c,10)).filter(c=>c>=n).reduce((c,S)=>{var u,p;return((u=F.get(S.toString()))!=null?u:0)-((p=B.get(S.toString()))!=null?p:0)*s+c},0)});i(this,"timeSpentBuffering",()=>XQ(this.metrics.general.bufferingRanges));i(this,"timeActive",()=>XQ(this.metrics.general.activeRanges));i(this,"getStatistics",()=>({timeSpentBuffering:this.timeSpentBuffering(),bufferingEventsCount:this.metrics.general.bufferingRanges.length,timeSpentRatio:[...this.activeRatios()].reduce((A,[e,t])=>(A[e]=t,A),{}),fatalQosCount:this.fatalQosCount}));i(this,"onRenditionLevelChanged",A=>{var F,n,s,a,d,E,g,c,S,u,p,G,y,Z;const e=((s=(n=(F=A.from)==null?void 0:F.video)==null?void 0:n.bitRate)!=null?s:0)+((E=(d=(a=A.from)==null?void 0:a.audio)==null?void 0:d.bitRate)!=null?E:0),t=((S=(c=(g=A.to)==null?void 0:g.video)==null?void 0:c.bitRate)!=null?S:0)+((G=(p=(u=A.to)==null?void 0:u.audio)==null?void 0:p.bitRate)!=null?G:0);this.logger.info("rendition level changed",{fromLevel:e,toLevel:t}),this.metrics.general.activeRanges.length===0&&this.setActive(),A.from&&A.to&&(e<t?this.metrics.general.upgradesFromLevel.push(Date.now()):this.metrics.general.downgradesFromLevel.push(Date.now()));let B=!1;if(A.from){const M=(y=this.metrics.levels[e])!=null?y:ia();e<t?M.upgradesFromLevel.push(Date.now()):M.downgradesFromLevel.push(Date.now()),wt(M.activeRanges);const v=M.bufferingRanges[M.bufferingRanges.length-1];B=!!v&&!v.end,wt(M.bufferingRanges),this.metrics.levels[e]=M}if(A.to){const M=(Z=this.metrics.levels[t])!=null?Z:ia();xQ(M.activeRanges),B&&xQ(M.bufferingRanges),this.metrics.levels[t]=M,this.currentLevel=t}});i(this,"onBufferFullness",A=>{this.bufferFullness.push(A),this.metrics.bufferFullness=A,this.bufferFullness.items().length>=this.minBufferFullnessLengthForRegression&&(this.bufferFullnessRegression=this.calculateLinearRegression())});i(this,"onPlaybackState",A=>{switch(this.logger.info("Playback state",{state:A,currentLevel:this.currentLevel}),A){case"playing":this.stopBuffering();break;case"buffering":this.isSuspended||this.startBuffering();break}});i(this,"onVideoDecodeRate",A=>{var t;if(this.metrics.general.decodeRate=A,!this.currentLevel)return;const e=this.metrics.levels[(t=this.currentLevel)!=null?t:0];e&&(e.decodeRate=A)});i(this,"calculateLinearRegression",()=>Wd(this.bufferFullness.items().map((A,e)=>({x:e,y:A}))));i(this,"stopBuffering",()=>{if(this.currentLevel){const A=this.metrics.levels[this.currentLevel];A&&wt(A.bufferingRanges)}wt(this.metrics.general.bufferingRanges)});i(this,"startBuffering",()=>{if(this.currentLevel){const A=this.metrics.levels[this.currentLevel];A&&xQ(A.bufferingRanges)}xQ(this.metrics.general.bufferingRanges)});i(this,"unsetActive",()=>{if(this.currentLevel){const A=this.metrics.levels[this.currentLevel];A&&wt(A.activeRanges)}wt(this.metrics.general.activeRanges)});this.logger=e,this.emitter=A}get fatalQosCount(){return this._fatalQosCount}setActive(){if(this.currentLevel){const A=this.metrics.levels[this.currentLevel];A&&xQ(A.activeRanges)}xQ(this.metrics.general.activeRanges)}};i(Tn,"create",(A,e)=>new Tn(A,e));let Ba=Tn;const yn=class yn{constructor(A,e){i(this,"renditions",new Map);i(this,"renditionLevels",[]);i(this,"languages",[]);i(this,"emitter");i(this,"subscriptionSource");i(this,"renditionLevelChangeCount",0);i(this,"unload",()=>{this.emitter.off("renditions",this.onRenditions),this.emitter.off("subscription changed",this.onSubscriptionChanged)});i(this,"getRenditionLevels",A=>A?this.createRenditionLevels(A):this.renditionLevels);i(this,"getRenditionLevel",A=>{var s;const e=A!=null?A:this.getCurrentSubscription(),t=A?this.createRenditionLevels(A):this.renditionLevels;if(!e.video)return t.length?t[0]:void 0;const B=e.video.bitRate||Number.MAX_SAFE_INTEGER,F=e.video.width||Number.MAX_SAFE_INTEGER,n=e.video.height||Number.MAX_SAFE_INTEGER;return(s=t.filter(a=>a.video&&e.video?a.video.bitRate<=B&&a.video.width<=F&&a.video.height<=n:!0).pop())!=null?s:t[0]});i(this,"setRenditions",(A,e)=>{this.renditions.set(A,e)});i(this,"getLanguages",()=>this.languages);i(this,"getVideoRendition",(A,e=this.getCurrentSubscription().channelId)=>{const t=this.getRendition(A,e);if(t&&yt(t))return t});i(this,"getAudioRenditions",A=>{const e=this.renditions.get(A);return e==null?void 0:e.filter(B=>bt(B))});i(this,"getVideoRenditions",A=>{const e=this.renditions.get(A);return e==null?void 0:e.filter(B=>yt(B))});i(this,"getAudioRendition",(A,e=this.getCurrentSubscription().channelId)=>{const t=this.getRendition(A,e);if(t&&bt(t))return t});i(this,"getRendition",(A,e=this.getCurrentSubscription().channelId)=>{var t;return(t=this.renditions.get(e))==null?void 0:t.find(B=>B.id===A)});i(this,"getStatistics",()=>{var e,t,B,F,n,s,a,d,E,g;const A=this.getRenditionLevel();return{videoCodec:(e=A==null?void 0:A.video)==null?void 0:e.codec,audioCodec:(t=A==null?void 0:A.audio)==null?void 0:t.codec,videoRenditionId:(B=A==null?void 0:A.video)==null?void 0:B.id,audioRenditionId:(F=A==null?void 0:A.audio)==null?void 0:F.id,videoWidth:(n=A==null?void 0:A.video)==null?void 0:n.width,videoHeight:(s=A==null?void 0:A.video)==null?void 0:s.height,expectedVideoBitRate:(a=A==null?void 0:A.video)==null?void 0:a.bitRate,expectedAudioBitRate:(d=A==null?void 0:A.audio)==null?void 0:d.bitRate,frameRate:(E=A==null?void 0:A.video)==null?void 0:E.frameRate,language:(g=A==null?void 0:A.audio)==null?void 0:g.language,renditionLevelChangeCount:this.renditionLevelChangeCount}});i(this,"onRenditions",A=>{const e=this.subscriptionSource.getCurrentSubscription();this.renditions.set(A.channelId,A.renditions),this.updateRenditionLevels({to:e,from:e})});i(this,"onSubscriptionChanged",A=>{this.updateRenditionLevels(A)});i(this,"updateRenditionLevels",({to:A,from:e})=>{var d;const{channelId:t,initiator:B}=A,F=this.getRenditionLevel(e),n=new Set;((d=this.renditions.get(t))!=null?d:[]).filter(E=>E.codec!=="webvtt").forEach(E=>E.language?n.add(E.language):void 0),this.languages=Array.from(n),this.renditionLevels=this.createRenditionLevels(A);const a=this.getRenditionLevel(A);Zt(F,a)||(this.renditionLevelChangeCount++,this.emitter.emit("rendition level changed",{to:a,from:F,reason:B?"manual":"abr"}))});i(this,"createRenditionLevels",A=>{var E;const{video:e,audio:t,channelId:B}=A,F=(E=this.renditions.get(B))!=null?E:[],n=F.filter(yt).filter(g=>e&&g.codec===e.codec),s=F.filter(bt).filter(g=>t&&g.codec===t.codec&&g.language===t.language),a=Math.max(n.length,s.length),d=[];for(let g=0;g<a;g++){const c=n[Math.min(n.length-1,g)],S=s[Math.min(s.length-1,g)];d.push({audio:S,video:c})}return d});i(this,"getCurrentSubscription",()=>this.subscriptionSource.getCurrentSubscription());this.subscriptionSource=e,this.emitter=A,this.emitter.on("renditions",this.onRenditions),this.emitter.on("subscription changed",this.onSubscriptionChanged)}};i(yn,"create",(A,e)=>new yn(A,e));let Ua=yn;const RB=Q=>JSON.parse(JSON.stringify(Q)),TI=1e4,bn=class bn{constructor(A,e,t){i(this,"logger");i(this,"timers",new mA);i(this,"emitter");i(this,"targetSubscription");i(this,"currentSubscription");i(this,"_isSwitchingSubscription",!1);i(this,"pendingSubscriptionTimeoutId");i(this,"burstMs",0);i(this,"unload",()=>{this.logger.debug("Unloading module..."),this.timers.unload(),this.emitter.off("subscription changed",this.onSubscriptionChanged),this.logger.debug("Unloaded module")});i(this,"isSwitchingSubscription",()=>this._isSwitchingSubscription);i(this,"getTargetSubscription",()=>this.targetSubscription);i(this,"getCurrentSubscription",()=>this.currentSubscription);i(this,"enableBurst",A=>{this.burstMs=A});i(this,"setSize",A=>{this.targetSubscription.video.width=A.width,this.targetSubscription.video.height=A.height,this.scheduleSubscriptionChange()});i(this,"setVideoConstraint",A=>{this.targetSubscription.video=A,this.scheduleSubscriptionChange()});i(this,"setAudioConstraint",A=>{this.targetSubscription.audio=A,this.scheduleSubscriptionChange()});i(this,"setVideoBitRate",A=>{this.targetSubscription.video.bitRate=A,this.scheduleSubscriptionChange()});i(this,"setAudioBitRate",A=>{this.targetSubscription.audio.bitRate=A,this.scheduleSubscriptionChange()});i(this,"setChannelId",A=>{this.targetSubscription.channelId=A,this.scheduleSubscriptionChange()});i(this,"setLanguage",A=>{this.targetSubscription.audio.language=A,this.scheduleSubscriptionChange()});i(this,"setVideoCodec",A=>{this.targetSubscription.video.codec=A,this.scheduleSubscriptionChange()});i(this,"setAudioCodec",A=>{this.targetSubscription.audio.codec=A,this.scheduleSubscriptionChange()});i(this,"setBurst",A=>{A?this.targetSubscription.burstMs=A:delete this.targetSubscription.burstMs});i(this,"isNewSubscription",()=>{const A=["burstMs","meta","initiator","channelGroupId"];return!Zt(ro(this.currentSubscription,A),ro(this.targetSubscription,A))});i(this,"onSubscriptionChanged",({to:A,reset:e})=>{this.logger.debug("onSubscriptionChanged",{to:A,reset:e}),e?this.targetSubscription=RB(this.currentSubscription):this.currentSubscription=RB(A),this._isSwitchingSubscription=this.isNewSubscription()});i(this,"scheduleSubscriptionChange",()=>{this.targetSubscription=RB(this.targetSubscription),this._isSwitchingSubscription=this.isNewSubscription();const A=this.currentSubscription.channelId,e=this.targetSubscription.channelId,t=A!==e;this._isSwitchingSubscription&&(t&&this.burstMs?this.setBurst(this.burstMs):this.setBurst(0),this.pendingSubscriptionTimeoutId&&(this.timers.clearTimeout(this.pendingSubscriptionTimeoutId),this.pendingSubscriptionTimeoutId=void 0),t&&this.timers.setTimeout(()=>{this.currentSubscription.channelId===A&&this.targetSubscription.channelId===e&&(this.logger.warn("Channel switch timeout",e),this.targetSubscription=RB(this.currentSubscription),this.emitter.emit("channel switch timeout",e))},TI),this.pendingSubscriptionTimeoutId=this.timers.setTimeout(()=>this.emitter.emit("send signal",{type:"subscribe",subscription:this.getTargetSubscription()}),0))});this.logger=A,this.targetSubscription=e,this.currentSubscription=RB(e),this.emitter=t,this.emitter.on("subscription changed",this.onSubscriptionChanged)}};i(bn,"create",(A,e,t)=>new bn(A,t,e));let Fa=bn;const Jl=5e3,yI=()=>vQ()||hA()||XA(),Vl=()=>yI()?100:0,ul=Q=>A=>A>Q,fn=class fn{constructor(A,e,t,B,F){i(this,"emitter");i(this,"logger");i(this,"playbackSource");i(this,"bufferSource");i(this,"keyframeTimestamps",new D(10));i(this,"lastSeekTime",Date.now());i(this,"seekCooldownTime",1e3);i(this,"seekTimeoutTime",5e3);i(this,"seekKeyframeOvershoot",50);i(this,"syncMaxBehind");i(this,"syncMaxBehindMultiplierStep",1);i(this,"syncMaxBehindIncreaseEvery",2);i(this,"syncMaxBehindMaximumAllowed",2e3);i(this,"syncMaxBehindMultiplier",1);i(this,"timeshiftOnAudio",!1);i(this,"syncMaxAhead",150);i(this,"timeshiftSync",{enabled:!1,maxBehind:50,multiplier:1,maxBehindAllowed:600,overshoot:Vl(),minOvershootAllowed:Vl(),maxOvershootAllowed:500});i(this,"maxTimeSyncDifferenceTolerance",150);i(this,"timers",mA.create());i(this,"rtt",0);i(this,"channelSyncInfo",new Map);i(this,"driftAdjustmentsCount",0);i(this,"timeshiftDriftAdjustmentCount",0);i(this,"driftAdjustments",[]);i(this,"timeShiftAdjustments",[]);i(this,"timestampOffset");i(this,"currentChannelId");i(this,"highestSeenTimestamps",new Map);i(this,"isSuspended",!1);i(this,"isSyncAdjustmentActivated",!1);i(this,"load",()=>{this.timers.setInterval(this.onSync,100)});i(this,"unload",()=>{this.logger.debug("Unloading module..."),this.emitter.off("rtt",this.updateRtt),this.timers.unload(),this.logger.debug("Unloaded module")});i(this,"suspend",()=>{this.isSuspended=!0});i(this,"unsuspend",()=>{this.resetSyncState(),this.isSuspended=!1});i(this,"deactivateSyncAdjustments",()=>{this.isSyncAdjustmentActivated=!1});i(this,"activateSyncAdjustments",()=>{this.tryApplySyncInfo(0),this.lastSeekTime=Date.now(),this.isSyncAdjustmentActivated=!0});i(this,"reset",()=>{this.logger.info("Reset sync state"),this.currentChannelId=void 0,this.timestampOffset=void 0,this.resetSyncState(),this.highestSeenTimestamps.clear()});i(this,"getTimeshiftOffset",()=>{var A;return(A=this.timestampOffset)!=null?A:0});i(this,"getCurrentChannelId",()=>this.currentChannelId);i(this,"resetSyncState",()=>{this.timeshiftSync.multiplier=1,this.syncMaxBehindMultiplier=1,this.driftAdjustments=[],this.timeShiftAdjustments=[]});i(this,"getLiveEdgeTime",A=>{const e=this.channelSyncInfo.get(A);if(!e)return;const t=Date.now()-e.localTimestamp;return e.timestamp+t});i(this,"getLiveEdgeTimeLatencyAdjusted",A=>{const e=this.getLiveEdgeTime(A);if(e)return e+this.rtt/2});i(this,"getWallclockTime",A=>{const e=this.channelSyncInfo.get(A);if(!e)return;const t=Date.now()-e.localTimestamp;return e.wallclockTime+t});i(this,"getWallclockTimeLatencyAdjusted",A=>{const e=this.getWallclockTime(A);if(e)return e+this.rtt/2});i(this,"processSample",A=>{var B;if(!A.channelId)throw new Error("Sample must be assigned to a channel");this.currentChannelId||(this.currentChannelId=A.channelId),this.timestampOffset||(this.timestampOffset=A.timestamp/A.timescale*1e3-Jl);const e=A.type==="video"&&A.isSync;if(this.currentChannelId!==A.channelId){let F=Number.MAX_SAFE_INTEGER;console.assert(this.highestSeenTimestamps.size!==0,"no known timestamps"),this.highestSeenTimestamps.forEach(s=>{F=Math.min(F,s)});const n=A.timestamp/A.timescale*1e3;this.currentChannelId=A.channelId,this.timestampOffset=n-F}else(e||this.timeshiftOnAudio)&&this.tryTimeshiftSync();const t=this.timestampOffset*A.timescale/1e3;return A.timestamp-=t,e&&this.keyframeTimestamps.push(A.timestamp/A.timescale*1e3),this.highestSeenTimestamps.set(A.type,Math.max((B=this.highestSeenTimestamps.get(A.type))!=null?B:0,A.timestamp/A.timescale*1e3)),A});i(this,"processFragment",(A,e)=>{var n;this.currentChannelId||(this.currentChannelId=A);const t=e.mediaType();if(!t)throw new Error("Fragment must have a media type");this.timestampOffset||(this.timestampOffset=e.baseMediaDecodeTime()/e.timescale()*1e3-Jl);const B=e.mediaType()==="video"&&e.startsWithKeyframe();this.currentChannelId!==A?(console.assert(this.highestSeenTimestamps.size!==0,"no known timestamps"),this.highestSeenTimestamps.forEach(s=>{}),this.currentChannelId=A):(B||this.timeshiftOnAudio)&&this.tryTimeshiftSync();const F=this.timestampOffset*e.timescale()/1e3;return e.updateBaseMediaDecodeTime(e.baseMediaDecodeTime()-F),B&&this.keyframeTimestamps.push(e.baseMediaDecodeTime()/e.timescale()*1e3),this.highestSeenTimestamps.set(t,Math.max((n=this.highestSeenTimestamps.get(t))!=null?n:0,e.baseMediaDecodeTime()/e.timescale()*1e3)),e});i(this,"getStatistics",()=>({drift:this.drift,driftAdjustmentCount:this.driftAdjustmentsCount,timeshiftDriftAdjustmentCount:this.timeshiftDriftAdjustmentCount,seekTime:this.playbackSource.seekTime}));i(this,"updateRtt",A=>void(this.rtt=A));i(this,"isPlaybackSourceReadyToSeek",()=>!this.isSeeking()&&this.isSeekCooldownExpired()&&this.isSyncAdjustmentActivated);i(this,"isSeeking",()=>this.playbackSource.isSeeking?!this.isSeekTimeoutExpired():!1);i(this,"isAllowedToSync",()=>this.isPlaybackSourceReadyToSeek()&&!!this.currentChannelId&&!this.isSuspended&&!this.playbackSource.isPaused);i(this,"isSeekCooldownExpired",()=>Date.now()-this.lastSeekTime>this.seekCooldownTime);i(this,"isSeekTimeoutExpired",()=>Date.now()-this.lastSeekTime>this.seekTimeoutTime);i(this,"currentTimeshiftMaxBehind",()=>Math.min(this.timeshiftSync.maxBehind*this.timeshiftSync.multiplier,this.timeshiftSync.maxBehindAllowed));i(this,"currentSyncMaxBehind",()=>Math.min(this.syncMaxBehindMultiplier*this.syncMaxBehind,this.syncMaxBehindMaximumAllowed));i(this,"currentSyncMaxAhead",()=>this.playbackSource.seekTime>500?Math.max(this.syncMaxAhead*this.syncMaxBehindMultiplier,300):this.syncMaxAhead);i(this,"tryTimeshiftSync",()=>{var F;if(!this.timeshiftSync.enabled||!this.isAllowedToSync())return;const A=(F=this.drift)!=null?F:0;if(A>=this.syncMaxBehind)return;if(A<this.currentTimeshiftMaxBehind()){this.timeshiftSync.overshoot=0;return}if(!this.timestampOffset)return;const e=Date.now()-this.seekTimeoutTime*this.timeshiftSync.multiplier,t=this.timeShiftAdjustments.filter(ul(e)).length;if(t&&this.timeshiftSync.multiplier>2)return this.logger.debug("Too many diff timeShifts within sliding window",{timeShiftsCooldownMs:e,timeShiftsWithinCooldownTime:t}),!1;const B=A+this.timeshiftSync.overshoot;this.logger.info("Adjusting for drift using timeshift",{drift:A,syncAmount:B,currentTime:this.playbackSource.currentTime,rtt:this.rtt,overshoot:this.timeshiftSync.overshoot}),this.timestampOffset+=B,this.lastSeekTime=Date.now(),!this.playbackSource.isPaused&&(this.timeShiftAdjustments.push(this.lastSeekTime),this.timeshiftDriftAdjustmentCount++,this.timeshiftSync.multiplier++,this.timeshiftSync.overshoot=Math.max(this.timeshiftSync.minOvershootAllowed,Math.min(this.timeshiftSync.multiplier*A/2,this.timeshiftSync.maxOvershootAllowed)))});i(this,"onSync",()=>{var s;if(!this.isAllowedToSync())return;const A=(s=this.drift)!=null?s:0;if(A<0&&-A<this.currentSyncMaxAhead()||A>0&&A<this.currentSyncMaxBehind()||Math.abs(A)<1||!this.isSeekCooldownExpired())return;const e=Date.now()-this.seekTimeoutTime*this.syncMaxBehindMultiplier,t=this.driftAdjustments.filter(ul(e)).length;if(t&&this.syncMaxBehindMultiplier>2)return this.logger.debug("Too many diff adjustments within sliding window",{adjustmentsCooldownMs:e,adjustmentsWithinCooldownTime:t}),!1;const B=this.playbackSource.seekTime,F=this.playbackSource.currentTime+A,n=this.findKeyframeCloseToTimestamp(F);if(n||this.keyframeTimestamps.isEmpty()){const a=n?n+this.seekKeyframeOvershoot:F;if(this.logger.info("Adjusting for drift using seek",{drift:A,currentTime:this.playbackSource.currentTime,targetCurrentTime:a,seekTime:B,rtt:this.rtt}),this.lastSeekTime=Date.now(),this.driftAdjustments.push(this.lastSeekTime),this.driftAdjustmentsCount++,this.playbackSource.currentTime=a+B,this.timeshiftSync.overshoot=Math.max(this.timeshiftSync.minOvershootAllowed,this.timeshiftSync.overshoot/2),this.driftAdjustmentsCount%this.syncMaxBehindIncreaseEvery===0&&!this.playbackSource.isPaused){const d=this.currentSyncMaxBehind;this.syncMaxBehindMultiplier+=this.syncMaxBehindMultiplierStep,d!==this.currentSyncMaxBehind&&this.logger.info("Increasing max drift behind allowed",{from:d,to:this.currentSyncMaxBehind})}}});i(this,"findKeyframeCloseToTimestamp",A=>{const e=this.keyframeTimestamps.items();for(const t of e)if(t>=A&&t<=A+200)return t});this.logger=e,this.emitter=A,this.playbackSource=t,this.bufferSource=B,this.timeshiftSync.enabled=F,this.syncMaxBehind=this.timeshiftSync.enabled?1e3:200,this.emitter.on("rtt",this.updateRtt)}updateChannelSyncInfo(A,e){const t=Date.now(),B=this.channelSyncInfo.get(A),F=this.getLiveEdgeTime(A);if(this.isSuspended)return;if(!B||!F){this.logger.info("Initial timing info",{syncInfo:e}),this.channelSyncInfo.set(A,K(h({},e),{localTimestamp:t,timeDifferences:new D(12)}));return}const n=e.wallclockTime-B.wallclockTime,s=e.timestamp-B.timestamp,a=t-B.localTimestamp,d=s-a;if(B.timeDifferences.push(d),this.logger.debug("Timing info",{rtt:this.rtt,channelId:A,syncInfo:e,localTimestamp:t,diffFromEstimated:d,timestampDelta:s,wallclockDelta:n,localWallclockDelta:a}),Math.abs(d)>=this.bufferSource.getTargetBufferTime()*2){this.logger.info("Resetting sync info",{diffFromEstimated:d}),this.channelSyncInfo.set(A,K(h({},e),{localTimestamp:t,timeDifferences:new D(B.timeDifferences.maxSize+1)})),this.currentChannelId&&this.currentChannelId===A&&(this.reset(),this.emitter.emit("channel reset"));return}B.timeDifferences.isFull()&&this.tryApplySyncInfo(this.maxTimeSyncDifferenceTolerance)}tryApplySyncInfo(A){const e=this.getCurrentChannelId();if(!e)return;const t=this.channelSyncInfo.get(e);if(!t)return;const B=YQ(t.timeDifferences.items());Math.abs(B)>A&&(this.logger.info("Adjusting sync info",{averageDifference:B}),t.timestamp+=B,t.timeDifferences.clear())}get serverCurrentTime(){return this.channelCurrentTime-this.getTimeshiftOffset()}get channelCurrentTime(){const A=this.getCurrentChannelId();if(!A)return 0;const e=this.getLiveEdgeTime(A);return e?e-this.bufferSource.getTargetBufferTime():0}get drift(){return this.serverCurrentTime-this.playbackSource.currentTime}};i(fn,"create",(A,e,t,B,F)=>new fn(A,e,t,B,F));let na=fn;const bI={enabled:!0,interval:3e4,includeErrors:!0,includeEvents:!0,includeStats:!0,maxRetries:10,maxErrorReports:50,maxEvents:50},sa=(Q,A)=>K(h({},A),{type:Q,timestamp:new Date().toISOString(),discriminator:"web"}),Gn=class Gn{constructor(A,e,t,B){i(this,"logger");i(this,"timers",new mA);i(this,"emitter");i(this,"options");i(this,"parentContext");i(this,"unsentLines",new D(100));i(this,"retries",0);i(this,"errorCount",0);i(this,"eventCount",0);i(this,"statsCount",0);i(this,"unload",()=>{this.logger.debug("Unloading module..."),window.removeEventListener("error",this.onError),window.removeEventListener("unhandledrejection",this.onRejection),this.timers.unload(),this.emitter.off("error",this.addError),this.emitter.off("visibilitystate",this.onVisibilityChange),this.emitter.off("pagehide",this.onPageHide),this.emitter.off("telemetry event",this.addEvent),this.addStats({isFinal:!0,initiator:"unload"}),this.send("beacon"),this.logger.debug("Unloaded module")});i(this,"load",()=>{window.addEventListener("error",this.onError),window.addEventListener("unhandledrejection",this.onRejection),this.emitter.on("error",this.addError),this.emitter.on("visibilitystate",this.onVisibilityChange),this.emitter.on("pagehide",this.onPageHide),this.emitter.on("telemetry event",this.addEvent),this.timers.setInterval(()=>{this.addStats(),this.send("fetch")},this.options.interval)});i(this,"addStats",({isFinal:A,initiator:e}={isFinal:!1,initiator:"interval"},t={})=>{if(!this.options.includeStats)return;const B=this.parentContext.getStatistics(),F=sa("stats",K(h(h({},t),B),{isFinal:A,initiator:e,count:this.statsCount++}));this.unsentLines.push(F)});i(this,"addEvent",A=>{if(!this.options.includeEvents||this.eventCount>this.options.maxEvents)return;const e=this.parentContext.getStatistics(),t=sa("event",h(h({},e),A));this.eventCount++,this.unsentLines.push(t)});i(this,"getStatistics",()=>({errorCount:this.errorCount}));i(this,"send",A=>r(this,null,function*(){if(this.options.enabled&&!(this.retries>=this.options.maxRetries)&&!this.unsentLines.isEmpty()){this.logger.debug("Sending telemetry",{lines:this.unsentLines.items()});try{const e=this.unsentLines.items().map(t=>JSON.stringify(t)).reverse().join(`
|
|
49
|
-
`);switch(A){case"beacon":navigator.sendBeacon(this.options.url,e);break;case"fetch":default:this.parentContext.connectionState==="connected"?this.emitter.emit("send signal",{type:"telemetry",body:e}):yield Vo(new URL(this.options.url),{body:e,headers:{"Content-Type":"text/plain"}});break}this.retries=0,this.unsentLines.clear()}catch(e){this.retries++}}}));i(this,"onVisibilityChange",A=>{A==="hidden"&&(this.addStats({isFinal:!0,initiator:"visibilitychange"}),this.send("beacon"))});i(this,"onPageHide",A=>{this.addStats({isFinal:!0,initiator:"pagehide"},{persisted:A.persisted}),this.send("beacon")});i(this,"onRejection",A=>this.addError(A.reason));i(this,"onError",A=>this.addError(A.error));i(this,"addError",A=>{const{includeErrors:e,maxErrorReports:t}=this.options;if(e&&A instanceof H){if(this.errorCount++,this.errorCount>t)return;const B=this.parentContext.getStatistics();this.unsentLines.push(sa("error",h(h({},B),A.toStringifiable())))}});this.logger=A,this.emitter=e,this.options=h(h({},bI),t),this.parentContext=B}};i(Gn,"create",(A,e,t,B)=>new Gn(A,e,t,B));let OF=Gn;const Mn=class Mn{constructor(A,e,t){i(this,"logger");i(this,"element");i(this,"documentState");i(this,"timers",new mA);i(this,"unload",()=>{this.timers.unload()});i(this,"unpause",()=>{this.element.userHasProvidedInput&&this.element.isPaused&&this.documentState.isVisible&&this.documentState.isOnline&&(this.logger.debug("Unpause video"),this.element.tryPlay())});this.logger=A,this.element=e,this.documentState=t,this.timers.setInterval(this.unpause,100)}};i(Mn,"create",(A,e,t)=>new Mn(A,e,t));let zF=Mn;const fI=6,GI=Q=>{let A=[Q],e=0,t=0,B=!1;const F=(s,a)=>{var G,y,Z;s.flags&&CB(s.flags)&&(e=(G=s.compositionTimeOffset)!=null?G:0),s.timestamp+=e,s.compositionTimeOffset=((y=s.compositionTimeOffset)!=null?y:0)-e;const d=s.timestamp/s.timescale,g=a.flags&&CB(a.flags)?(Z=a.compositionTimeOffset)!=null?Z:0:e,S=(a.timestamp+g)/a.timescale,u=Math.max(0,Math.round((S-d)*s.timescale));return u>0&&(t=u),K(h({},s),{duration:u>0?u:t})};return(s,a=!1)=>{if(s.flags&&CB(s.flags)&&a&&(B=!B),!(a&&A.length<fI&&B)&&A.length>0){B=!1;let E=s;for(let c=A.length-1;c>0;c--){const S=A[c];if(!S||!E)break;S.timestamp>=E.timestamp?A.splice(c,1):E=S}const g=A.map((c,S)=>F(c,A[S+1]||s));return A=[s],g}return A.push(s),[]}},MI=(Q,A,e)=>{if(yt(A))return h(K(h({},Q),{type:"video",codec:A.codec,isSync:CB(Q.flags),data:Q.payload,duration:0,width:A.width,height:A.height}),e);if(A.codec==="webvtt")throw new Error("WebVTT is not supported");return K(h({},Q),{type:"audio",channels:A.channels,sampleRate:A.sampleRate,codec:A.codec,language:A.language,isSync:CB(Q.flags),data:Q.payload,duration:0})};class vI{constructor(){i(this,"highEntropyValues");var A;(A=self.navigator.userAgentData)==null||A.getHighEntropyValues(["architecture","model","platformVersion","fullVersionList"]).then(e=>{this.highEntropyValues=e})}getUserAgentInformation(){var F,n,s,a,d,E;const A=window.location.origin,t=!A||A=="null"?"":`${window.location.pathname}${window.location.search}`.substring(0,1e3),B={locationOrigin:window.location.origin,locationPath:t,ancestorOrigins:((F=window.location.ancestorOrigins)==null?void 0:F.length)>0?Array.from(window.location.ancestorOrigins):void 0,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory};if(self.navigator.userAgentData&&this.highEntropyValues){const g="1",c=[...(n=this.highEntropyValues.brands)!=null?n:[]];c.sort((Z,M)=>Z.brand.localeCompare(M.brand));const S=[...(s=this.highEntropyValues.fullVersionList)!=null?s:[]];S.sort((Z,M)=>Z.brand.localeCompare(M.brand));const u=S.map(Z=>Z.version),p=c.map(Z=>Z.brand),G=c.map(Z=>Z.version),y=parseInt((d=(a=this.highEntropyValues.platformVersion)==null?void 0:a.split(".")[0])!=null?d:g);return h({userAgentLegacy:window.navigator.userAgent,ua:{browser:{brands:p,fullVersionBrands:u,majorVersions:G},device:this.highEntropyValues.model||"Other",os:{family:this.highEntropyValues.platform||"Other",version:(E=this.highEntropyValues.platformVersion)!=null?E:g,major_version:Number.isFinite(y)?y:0}}},B)}else return h({userAgent:window.navigator.userAgent},B)}}const LI=Q=>{if(typeof Q!="object"||Q===null)throw new Error("not an object");if(!("video"in Q))throw new Error("missing video in subscription");if(!("audio"in Q))throw new Error("missing audio in subscription");if(!("channelId"in Q))throw new Error("missing channelId");return!0},Qe=class Qe extends $A{constructor(e){var qA,MA;super();i(this,"pictureInPicture");i(this,"browser",so());i(this,"options");i(this,"element");i(this,"playbackSource");i(this,"emitter",new $A);i(this,"logger");i(this,"modules");i(this,"clientIp");i(this,"sessionId");i(this,"clientId",co());i(this,"_channels",[]);i(this,"createdAt",Date.now());i(this,"hasCalledConnect",!1);i(this,"latestEmittedLanguages",[]);i(this,"wakeLock");i(this,"pool",new k(Qe.MAX_POOL_SIZE));i(this,"userAgentInformation",new vI);i(this,"encryptedMediaExtensions");o(this,_t,0);o(this,OA,[]);i(this,"sampleProcessingSesssions",new Map);i(this,"sizes",new Map);i(this,"isSuspended",!0);i(this,"disconnectTimeout");o(this,$t);i(this,"attach",e=>{var t;(t=this.wakeLock)==null||t.attach(e),e.appendChild(this.element)});i(this,"getOptions",()=>this.options.getOptions());i(this,"getThumbnailUrl",()=>{let e=this.options.get("edgeUrl")||this.options.get("url");e=e.replace("wss://","https://"),e=e.replace("ws://","http://"),e=e.endsWith("/")?e.slice(0,-1):e;const t=window.devicePixelRatio||1,B=Math.round(window.innerWidth*t),F=Math.round(window.innerHeight*t),n=this.options.get("authenticationToken"),s=n?`&auth.token=${n}`:"";return`${e}/api/thumbnail?channelId=${this.channelId}${s}&width=${B}&height=${F}`});i(this,"updateAuthenticationToken",e=>{this.logger.debug("Got new auth token",{token:e}),this.options.set("authenticationToken",e),this.emitter.emit("send signal",{type:"refresh auth",token:e})});i(this,"connect",()=>{this.hasCalledConnect||(this.play(),this._connect())});i(this,"_connect",()=>{var e,t;this.hasCalledConnect||(this.hasCalledConnect=!0,Object.values(this.modules).forEach(B=>{B&&"load"in B&&B.load()}),this.unsuspend(),this.playbackSource instanceof bs&&((t=(e=this.playbackSource).load)==null||t.call(e)),this.modules.connection.connect())});i(this,"getCastOptions",()=>({url:this.options.get("url"),channelId:this.options.get("channelId"),channelGroupId:this.options.get("channelGroupId"),authenticationToken:this.options.get("authenticationToken"),language:this.options.get("language"),logLevel:this.options.get("logLevel"),minBufferTime:this.options.get("minBufferTime"),tags:this.options.get("tags"),ownerSessionId:this.sessionId,edgeUrl:this.options.get("edgeUrl"),media:this.options.get("media"),drm:this.options.get("drm")}));i(this,"onConnectInfo",e=>r(this,null,function*(){var d;this.sessionId=co();const t=this.modules.subscription.getTargetSubscription(),B=e.channels.find(E=>E.channelId===t.channelId);if(this.emitter.emit("connect info",e),this._channels=e.channels,this.updateTextTracks((d=B==null?void 0:B.renditions)!=null?d:[]),!this.textTrack&&this.options.get("textTrack")&&(this.textTrack=this.options.get("textTrack")),yield Promise.all(e.channels.map(E=>r(this,null,function*(){E.overrides&&this.options.addOverrides(E.channelId,E.overrides),E.renditions=yield this.filterRenditions(E.renditions),this.modules.renditions.setRenditions(E.channelId,E.renditions)}))),!B)throw vo("external");const F=this.options.getOverride("sizeBasedResolutionCapEnabled",this.channelId);F!==void 0&&(this.modules.constraintCap.sizeBasedResolutionCapEnabled=F);const n=this.options.getOverride("minBufferTime",this.channelId),s=this.options.getOverride("maxBufferTime",this.channelId);if((n||s)&&(this.modules.bufferTime.updateConfig({minBufferTime:this.options.get("minBufferTime",this.channelId),maxBufferTime:this.options.get("maxBufferTime",this.channelId)}),this.targetBufferTime=this.options.get("minBufferTime",this.channelId)),this.options.get("burstEnabled",this.channelId)&&this.modules.subscription.enableBurst(this.targetBufferTime),this.emit("is live",B.isLive),!B.isLive)throw new Error("Waiting for channel to go live");this.patchSubscription(B,this.modules.connection.estimatedBandwidth),yield this.initializeDecodingModule(),this.resetModules(),this.emit("rendition levels",this.modules.renditions.getRenditionLevels()),this.emit("channels",this.channels),this.emitLanguagesIfChanged(),this.sampleProcessingSesssions.clear();const a=this.options.get("burstEnabled",this.channelId);return{video:this.targetSubscription.video,audio:this.targetSubscription.audio,burstMs:a?this.targetBufferTime:void 0,sessionId:this.sessionId,clientId:this.clientId,channelId:this.channelId,channelGroupId:this.options.get("channelGroupId"),authToken:this.options.get("authenticationToken"),textTrack:this.textTrack}}));i(this,"emitLanguagesIfChanged",()=>{const e=this.modules.renditions.getLanguages(),t=this.latestEmittedLanguages;e.length==t.length&&e.every(F=>t.includes(F))||(this.logger.debug("Emitting new languages",{currentLanguages:e}),this.latestEmittedLanguages=e,this.emit("languages",this.latestEmittedLanguages))});i(this,"updateTextTracks",e=>{const t=e.filter(B=>B.codec==="webvtt");t.forEach(B=>{if(!U(this,OA).find(n=>n.language===B.language)){if(this.modules.canvasModule){const n=this.modules.canvasModule.textTracks.addTextTrack(B.kind,B.label||B.language||"",B.language||"");U(this,OA).push(n)}else if(this.mediaElement instanceof HTMLVideoElement){const n=this.mediaElement.addTextTrack(B.kind,B.label||B.language,B.language);U(this,OA).push(n)}}});for(const B of U(this,OA))t.find(n=>n.language===B.language)?B.mode==="disabled"&&(B.mode="hidden"):B.mode="disabled";this.emit("text tracks",this.textTracks)});i(this,"cleanupTextTracks",(e=this.currentTime-2e4)=>{U(this,OA).forEach(t=>{if(t.cues)for(const B of t.cues)B.endTime*1e3<e-2e3&&t.removeCue(B)})});i(this,"filterRenditions",e=>r(this,null,function*(){const t=yield Promise.all(e.map(s=>r(this,null,function*(){var E,g,c;if(bt(s))return!0;if(!yt(s)||!this.isSupportedVideoCodecProfile(s.codec,s.codecString))return!1;if(!this.willUseMediaSource()){const S=this.options.get("advanced"),u=(E=S.wasmDecodingConstraint.bitRate)!=null?E:Number.MAX_SAFE_INTEGER,p=(g=S.wasmDecodingConstraint.width)!=null?g:Number.MAX_SAFE_INTEGER,G=(c=S.wasmDecodingConstraint.height)!=null?c:Number.MAX_SAFE_INTEGER;return s.bitRate<=u&&s.width<=p&&s.height<=G}const a=yield iI(s);if(!a.supported||s.codec=="av1"&&!a.smooth&&!a.powerEfficient)return!1;const d=this.options.getOverride("maxVideoBitRate",this.channelId);return d?d>=s.bitRate:!0})));let B=e.filter((s,a)=>t[a]);const F=B.filter(s=>s.codec==="h264").reverse()[0],n=B.filter(s=>s.codec==="av1").reverse()[0];return F&&n&&F.width>n.width&&F.height>n.height&&(B=B.filter(s=>s.codec!=="av1")),B}));i(this,"patchSubscription",(e,t)=>{const B=Math.min(this.options.get("maxVideoBitRate"),Qe.INITIAL_MAX_BIT_RATE,t,this.targetSubscription.video.bitRate),F=Math.min(this.options.get("maxAudioBitRate"),Qe.INITIAL_MAX_BIT_RATE,t,this.targetSubscription.audio.bitRate),n=this.options.get("media")==="audio"?[]:this.options.get("videoCodecs",this.channelId),s=this.supportedAudioCodecs(),a=e.renditions.filter(bt),d=e.renditions.filter(yt),E=s.find(u=>a.find(p=>p.codec===u)!==void 0),g=n.find(u=>d.find(p=>p.codec===u)!==void 0),c=a.map(u=>u.language);if(this.logger.debug("supported and selected codecs",{audioCodecs:s,videoCodecs:n,audioCodec:E,videoCodec:g}),g){const u=this.options.get("maxSize");this.modules.subscription.setVideoConstraint(h({codec:g,bitRate:this.abrEnabled?B:this.options.get("maxVideoBitRate")},u))}E&&(this.modules.subscription.setAudioConstraint({codec:E,bitRate:this.abrEnabled?F:this.options.get("maxAudioBitRate"),language:this.options.get("language")}),(!c.includes(this.options.get("language"))||this.language===void 0)&&this.modules.subscription.setLanguage(c[0])),this.alignSizeAndBitRate(this.targetSubscription);const S=this.modules.subscription.getTargetSubscription();this.emitter.emit("subscription changed",{to:S,from:this.modules.subscription.getCurrentSubscription()})});i(this,"isSupportedVideoCodecProfile",(e,t)=>{if(this.willUseMediaSource()){const B=se();return B?B.isTypeSupported(KQ({codec:e,codecString:t})):!0}if(e==="h264"){const B=!!(t!=null&&t.startsWith("avc1.42")),F=!!(t!=null&&t.startsWith("avc1.66."));return B||F}return e!=="av1"});i(this,"supportedAudioCodecs",()=>{if(this.options.get("media")==="video")return[];const e=[];return(this.browser.supportsMp4Opus&&this.options.get("mseOpusEnabled")||!this.willUseMediaSource())&&e.push("opus"),this.willUseMediaSource()&&e.push("aac"),e});i(this,"initializeDecodingModule",()=>r(this,null,function*(){var B,F;const e=this.currentRenditionLevel,t=[];if(!e)throw new H("No currentRenditionLevel",{code:"no_current_rendition_level",isFatal:!1});if(e!=null&&e.video&&t.push({type:"video",mimeType:KQ(e.video)}),e!=null&&e.audio&&t.push({type:"audio",mimeType:KQ(e.audio)}),t.length===0)throw new H("Can't initialize decoding module without tracks",{code:"no_tracks",isFatal:!1});if(this.willUseMediaSource()&&this.element instanceof HTMLMediaElement)this.emitter.emit("flush buffers"),yield(B=this.modules.mseModule)==null?void 0:B.setSourceBuffers(t);else{const n=yield Ks.create(this.emitter,this.logger.createContext("DecoderModule"),t,this.playbackSource,this.pool);(F=this.modules.decoder)==null||F.unload(),this.modules.decoder=n,this.modules.decoder.load()}}));i(this,"unload",()=>r(this,null,function*(){var e,t,B;this.logger.debug("Unloading modules..."),yield Promise.all(Object.values(this.modules).map(F=>F==null?void 0:F.unload())),(e=this.wakeLock)==null||e.unload(),this.pool=new k(Qe.MAX_POOL_SIZE),(B=(t=this.playbackSource).unload)==null||B.call(t),this.element.remove(),this.emitter.reset(),this.encryptedMediaExtensions.unload(),this.reset(),this.logger.debug("Unloaded modules")}));i(this,"userInput",()=>{this.play()});i(this,"pause",()=>{this.options.get("pauseSupportEnabled")&&this.playbackState!=="paused"&&(this.playbackSource.pause(),this.hasCalledConnect&&this.suspend())});i(this,"registerDebugInstance",()=>{QI(this)});i(this,"play",()=>{var e;this.hasCalledConnect?this.unsuspend():this.playbackState!=="playing"&&(this._connect(),self.addEventListener("__vindral_register_debug__",this.registerDebugInstance),this.modules.timer.setInterval(()=>this.cleanupTextTracks(),Qe.REMOVE_CUE_THRESHOLD)),(e=this.wakeLock)==null||e.enable(),this.playbackState==="paused"&&(this.resetModules(),this.emitter.emit("flush buffers"),this.cleanupTextTracks(Number.MAX_SAFE_INTEGER)),this.playbackSource.play()});i(this,"getStatistics",()=>Object.values(this.modules).reduce((e,t)=>t&&"getStatistics"in t?h(h({},e),t.getStatistics()):e,this.getRuntimeInfo()));i(this,"resetModules",()=>{Object.values(this.modules).forEach(e=>{e&&"reset"in e&&e.reset()}),this.sampleProcessingSesssions.clear(),this.playbackSource.currentTime=0,this.playbackSource.isActivated=!1});i(this,"getRuntimeInfo",()=>{const e=this.modules.canvasModule?this.options.get("iosMediaElementEnabled"):void 0;return h({uptime:Date.now()-this.createdAt,version:"4.0.0-105-g107caaa1",clientId:this.clientId,sessionId:this.sessionId,channelId:this.channelId,channelGroupId:this.options.get("channelGroupId"),ip:this.clientIp,url:this.options.get("url"),timeToFirstFrame:this.timeToFirstFrame(),iosMediaElementEnabled:e},this.userAgentInformation.getUserAgentInformation())});i(this,"onMediaElementState",e=>{this.logger.info("media element state",{state:e}),this.options.get("pauseSupportEnabled")&&(e==="paused"?this.modules.documentState.isVisible&&(this.suspend(),this.modules.connection.disconnect()):(this.unsuspend(),this.modules.connection.getState()==="disconnected"&&this.modules.connection.unsuspend()))});i(this,"onBufferEvent",e=>{var B,F,n,s;this.emit("buffer state event",e);const t=!this.playbackSource.isActivated||this.playbackSource.isPaused;if(e==="filled"&&t){const a=Math.max(this.currentTime,(F=(B=this.videoBufferedRanges[0])==null?void 0:B.start)!=null?F:0,(s=(n=this.audioBufferedRanges[0])==null?void 0:n.start)!=null?s:0);this.logger.info("Buffer filled - starting playback",{currentTime:a}),this.playbackSource.currentTime=a,this.modules.sync.activateSyncAdjustments(),this.playbackSource.isActivated=!0}else e==="drained"&&this.playbackSource.isPaused&&(this.playbackSource.isActivated=!1,this.modules.sync.deactivateSyncAdjustments())});i(this,"timeToFirstFrame",()=>{const e=this.modules.playback.getFirstFrameTime(),t=this.modules.connection.firstConnectionTime;if(t&&e)return e-t});this.options=new tI(h(h({},Xd),sE(e)));const t=["localhost","127.0.0.1"];e.telemetryEnabled===void 0&&t.includes(location.hostname)&&this.options.set("telemetryEnabled",!1);const B={channelId:this.options.get("channelId"),audio:{language:this.options.get("language"),bitRate:this.options.get("maxAudioBitRate")},video:{bitRate:this.options.get("maxVideoBitRate"),width:this.options.get("maxSize").width,height:this.options.get("maxSize").height}},F=NA.get();F.setLevel(this.options.get("logLevel")),F.setDebug(!1),this.logger=F;const n=ta.create(this.emitter,this.logger.createContext("PictureInPictureModule")),s=mA.create(),a=Ys.create(this.emitter,this.logger.createContext("ConnectionModule"),{reconnectHandler:this.options.get("reconnectHandler"),options:this.options,onConnectInfo:this.onConnectInfo}),d=Fa.create(this.logger.createContext("SubscriptionModule"),this.emitter,B),E=Ua.create(this.emitter,d),g=Ba.create(this.emitter,this.logger.createContext("QualityOfServiceModule")),c=Qa.create(this.emitter,this.logger.createContext("PlaybackModule"),this,this.options.get("minBufferTime"));this.encryptedMediaExtensions=new Po(this.emitter,this.logger.createContext("EncryptedMediaExtensions"),(qA=e.drm)==null?void 0:qA.headers,(MA=e.drm)==null?void 0:MA.queryParams);const S=Os.create(this.emitter),u=this.options.get("poster"),p=u===!0?this.getThumbnailUrl():u||void 0;let G,y,Z;if(this.willUseMediaSource()){const J=new bs({type:this.options.get("media")=="audio"?"audio":"video",autoplay:!1,muted:this.options.get("muted")||this.options.get("media")==="video",logger:this.logger.createContext("MediaElement"),poster:p});J.on("buffer state",w=>this.emitter.emit("buffer state",w)),J.on("needs user input",w=>this.emitter.emit("needs user input",w)),J.on("volume state",w=>this.emit("volume state",w)),J.on("media element state",w=>this.onMediaElementState(w)),this.element=J.element,this.playbackSource=J,Po.isSupported()&&this.encryptedMediaExtensions.attach(J.element),G=ea.create(this.logger.createContext("MseModule"),this.emitter,this.element),this.options.get("pauseSupportEnabled")||(y=zF.create(this.logger.createContext("UnpauseModule"),J,S)),this.options.get("pictureInPictureEnabled")&&this.emitter.emit("add picture in picture listener",{element:J.element})}else if(this.browser.platform.iosVersion>=15&&this.options.get("iosMediaElementEnabled")){const J=Aa.create(this.emitter,this.logger.createContext("ModernCanvasModule"),this.pool,this,{type:this.options.get("media")=="audio"?"audio":"video",muted:this.options.get("muted")||this.options.get("media")==="video",poster:p}),w=J.element();this.element=w.element,this.playbackSource=J,Z=J,this.options.get("pictureInPictureEnabled")&&this.browser.platform.iosVersion>15&&this.emitter.emit("add picture in picture listener",{element:this.element}),this.options.get("pauseSupportEnabled")||(y=zF.create(this.logger.createContext("UnpauseModule"),w,S))}else{const J=$s.create(this.emitter,this.logger.createContext("LegacyCanvasModule"),this.pool,this,this.options.get("muted")||this.options.get("media")==="video");this.element=J.element(),this.playbackSource=J,Z=J,this.options.get("iosWakeLockEnabled")&&(this.wakeLock=new _g)}this.emitter.on("channel reset",this.resetModules),this.emitter.on("no data timeout",this.resetModules),this.emitter.on("media element state",J=>this.onMediaElementState(J)),this.emitter.on("volume state",J=>this.emit("volume state",J)),this.options.get("pauseSupportEnabled")||this.emitter.on("exit picture in picture",()=>s.setTimeout(()=>this.play(),0)),this.emitter.on("constraint cap changed",J=>{this.logger.info("new cap set",{cap:J}),this.alignSizeAndBitRate(this.targetSubscription)}),this.pictureInPicture={enter:()=>n.requestPictureInPicture(),exit:()=>n.exitPictureInPicture(),isActive:()=>n.isPictureInPictureActive(),isSupported:()=>n.isPictureInPictureSupported()},this.emitter.on("error",J=>{if(J.type()==="external"&&this.emit("error",J),J.isFatal())return()=>void this.unload()});const M=this.browser.platform.isIOS&&!this.browser.platform.isIpadOS,v=na.create(this.emitter,this.logger.createContext("SyncModule"),this.playbackSource,c,this.willUseMediaSource()&&!M),Y=(this.options.get("edgeUrl")||this.options.get("url")).replace("wss://","https://").replace("ws://","http://").replace("//lb.","//errors."),$=new URL("/telemetry",Y).toString(),TA=OF.create(this.logger.createContext("TelemetryModule"),this.emitter,{url:$,enabled:this.options.get("telemetryEnabled"),includeStats:!1,interval:5e3},this);this.modules={telemetry:TA,bufferTime:vs.create(this.emitter,this.logger.createContext("BufferTimeModule"),g,this,{maxBufferTime:this.options.get("maxBufferTime"),minBufferTime:this.options.get("minBufferTime")}),incomingData:Ps.create(this.emitter),adaptivity:Ms.create(this.emitter,this.logger.createContext("AdaptivityModule"),g,{cooldownTime:Math.max(this.options.get("minBufferTime"),2e3)}),constraintCap:Xs.create(this.emitter,this.element,E,this.options.get("abrEnabled")?this.options.get("sizeBasedResolutionCapEnabled"):!1),event:zs.create(this.emitter,this.logger.createContext("EventModule"),v),sync:v,documentState:S,connection:a,playback:c,pictureInPicture:n,timer:s,subscription:d,renditions:E,qualityOfService:g,mseModule:G,unpause:y,canvasModule:Z},this.modules.adaptivity.isEnabled=this.options.get("abrEnabled"),this.emitter.on("page active",J=>{var w;J&&typeof this.disconnectTimeout=="number"&&(this.modules.timer.clearInterval(this.disconnectTimeout),this.disconnectTimeout=void 0),J?this.playbackSource.isPaused||(this.logger.debug("Unsuspending"),this.unsuspend()):(this.logger.debug("Suspending"),this.suspend(),this.modules.decoder?this.options.get("iosBackgroundPlayEnabled")?(this.modules.decoder.unsuspend(),(w=this.modules.canvasModule)==null||w.unsuspend()):this.modules.connection.disconnect():(this.disconnectTimeout&&this.modules.timer.clearInterval(this.disconnectTimeout),this.disconnectTimeout=this.modules.timer.setInterval(()=>{const BA=this.playbackState==="paused"||this.muted;this.connectionState==="connected"&&BA&&(this.emitter.emit("flush buffers"),this.modules.connection.disconnect("Page inactive timeout"))},Qe.DISCONNECT_TIMEOUT)))});let uA;this.emitter.on("context switch complete",()=>{uA||(uA=window.setTimeout(()=>{window.clearTimeout(uA),uA=void 0,this.emit("context switch","completed"),this.emitLanguagesIfChanged()},this.targetBufferTime))}),this.emitter.on("context switch started",()=>this.emit("context switch","started")),this.emitter.on("needs user input",J=>this.emit("needs user input",J)),this.emitter.on("event",J=>{switch(J.type){case"metadata":this.emit("metadata",J);break;case"channel switch":this.emit("channel switch",{channelId:J.channelId});break;case"language switch":this.emit("language switch",{language:J.language});break}}),this.emitter.on("buffer state event",this.onBufferEvent),this.emitter.on("playback state",J=>this.emit("playback state",J)),this.emitter.on("rendition level changed",({to:J})=>{J&&this.emit("rendition level",J)}),this.emitter.on("connection state",J=>{this.emit("connection state",J)}),this.emitter.on("recovered from media error",()=>{this.modules.adaptivity.reset(this.targetBufferTime*2)}),this.emitter.once("connect info",J=>{var tA,z,O;const BA=((z=(tA=J.telemetry)==null?void 0:tA.probability)!=null?z:1)>=Math.random();J.telemetry&&((O=this.modules.telemetry)==null||O.unload(),this.modules.telemetry=OF.create(this.logger.createContext("TelemetryModule"),this.emitter,K(h({},J.telemetry),{enabled:this.options.get("telemetryEnabled")&&BA}),this),this.modules.telemetry.load())}),this.emitter.on("adapt level",J=>{var x,L,AA,X,UA;this.logger.debug("adapt level",{direction:J});const w=this.modules.renditions.getRenditionLevels(),BA=this.modules.renditions.getRenditionLevel(),tA=w.findIndex(sA=>sA===BA),z=w.length-1;let O=tA;switch(J){case"upgrade":{const sA=Math.min(tA+1,z),vA=w[sA],lF=(x=this.modules.connection.estimatedBandwidth)!=null?x:tt(),ZQ=((AA=(L=vA==null?void 0:vA.audio)==null?void 0:L.bitRate)!=null?AA:0)+((UA=(X=vA==null?void 0:vA.video)==null?void 0:X.bitRate)!=null?UA:0),rF=lF*2>ZQ;vA&&rF&&this.modules.adaptivity.isQoSOk(vA)&&(O=sA)}break;case"downgrade":O=Math.max(tA-1,0);break;case"double downgrade":O=Math.max(tA-2,0);break;case"reconnect":if(tA===0||this.modules.qualityOfService.timeSpentBufferingLast(6e3)>5e3){if(!this.modules.connection.lastConnectionTime||Date.now()-this.modules.connection.lastConnectionTime<this.modules.qualityOfService.fatalQosGraceTime()||this.modules.connection.getState()!=="connected")return;this.modules.qualityOfService.incrementFatalQosCount(),this.logger.info("Reconnecting due to poor qos"),this.modules.connection.reconnect("Fatal QOS"),this.emitter.emit("adapted level");return}else O=0}if(O===tA)return;const N=w[O];this.alignSizeAndBitRate(K(h({},this.targetSubscription),{video:h(h({},this.targetSubscription.video),N==null?void 0:N.video),audio:h(h({},this.targetSubscription.audio),N==null?void 0:N.audio)})),this.emitter.emit("adapted level")}),this.emitter.on("text track data",J=>{const w=U(this,OA).find(O=>O.language===J.language),tA=this.modules.sync.getTimeshiftOffset()/1e3,z=tA-U(this,_t);if(l(this,_t,tA),w){if(w.cues)for(const O of w.cues)O.startTime-=z,O.endTime-=z;for(const O of J.cues){const N=new VTTCue(O.startTime-tA,O.endTime-tA,O.text);w.addCue(N)}}}),this.emitter.on("received signal",J=>{var tA;const w=J,BA=this.modules.subscription.getCurrentSubscription();switch(this.logger.debug("received",h({},w)),w.type){case"client ip":this.clientIp=w.ip;break;case"renditions":this.updateTextTracks(w.renditions),l(this,$t,this.filterRenditions(w.renditions).then(z=>{this.emitter.emit("renditions",{renditions:z,channelId:this.currentSubscription.channelId}),this.emit("rendition levels",this.modules.renditions.getRenditionLevels()),this.emitLanguagesIfChanged()}).finally(()=>{l(this,$t,void 0)}));break;case"subscription changed":try{LI(w.subscription)}catch(z){this.emitter.emit("error",new H("Subscription failed validation",{source:z instanceof Error?z:void 0,isFatal:!1,code:"subscription_failed_validation"}))}this.emitter.emit("subscription changed",{reset:w.reset,to:w.subscription,from:this.modules.subscription.getCurrentSubscription()}),w.reset&&BA.channelId!==w.subscription.channelId&&(this.emit("error",Yo(w.subscription.channelId)),this.emit("channel switch failed",{channelId:BA.channelId})),this.modules.sync.timeshiftOnAudio=!((tA=w.subscription.video)!=null&&tA.codec),this.modules.adaptivity.reset();break;case"timing info":this.modules.sync.updateChannelSyncInfo(w.timingInfo.channelId,w.timingInfo),this.emit("server wallclock time",w.timingInfo.wallclockTime);break}}),this.emitter.on("channel switch timeout",J=>{this.emit("error",Yo(J)),this.emit("channel switch failed",{channelId:this.currentSubscription.channelId})}),this.emitter.on("received data",J=>{const w=this.modules.subscription.getCurrentSubscription(),BA=jg(J);if(!w){this.logger.warn("Received unwanted message",h({},BA));return}fe(K(h({},BA),{channelId:w.channelId}))}),this.emitter.on("received moq data",J=>{var O,N,x;const w=J.payload.mediaType(),BA=J.channelId,tA=J.renditionId,z=this.modules.sync.processFragment(BA,J.payload);if(this.modules.incomingData.add(w,J.payload.rawBytes().byteLength),z.fragment().emsgs.forEach(L=>{if(!L.presentationTime)return;const AA=pE(L.data);AA&&this.modules.event.addEvent({id:L.id,timestamp:L.presentationTime/L.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:AA.txx.value,type:"metadata"})}),this.modules.decoder){const L=(O=z.header().init().moov.traks[0])==null?void 0:O.mdia.minf.stbl.stsd,AA=(N=L==null?void 0:L.avc1)==null?void 0:N.avcC.bytes,X=(x=L==null?void 0:L.codec)!=null?x:"h264";if(AA){const UA=AA.buffer.slice(AA.byteOffset,AA.byteOffset+AA.byteLength);if(w==="text")throw new Error("Subtitles are not supported");this.emitter.emit("init segment",{initSegment:{channelId:BA,renditionId:tA,data:UA,timescale:1e3,type:w,codec:X},mimeType:w})}for(let UA=0;UA<z.samplesCount();UA++){const sA=z.sample(UA);sA&&this.emitter.emit("coded sample",K(h({},sA),{renditionId:tA,channelId:BA,data:sA.data.buffer.slice(sA.data.byteOffset,sA.data.byteOffset+sA.data.byteLength)}))}}else this.emitter.emit("fragment",{fragment:z,channelId:BA})});const kA=this.options.get("container");kA&&this.attach(kA),this.logger.info("Created Vindral instance",{options:this.options});const fe=J=>r(this,null,function*(){const w=J.channelId;U(this,$t)&&(yield U(this,$t));const BA=this.modules.renditions.getRendition(J.renditionId,w);if(!Og(J.flags)){if(zg(J.flags)){const z=new TextDecoder().decode(J.payload),O=this.modules.sync.getTimeshiftOffset();if(J.renditionId!==0){const N=Io(z);if(N&&N.language!==void 0){const L=new nl().parse(N.content||""),AA=O/1e3,X=U(this,OA).find(sA=>sA.language===N.language),UA=AA-U(this,_t);if(l(this,_t,AA),X){if(X.cues)for(const sA of X.cues)sA.startTime-=UA,sA.endTime-=UA;for(const sA of L){const vA=new VTTCue(sA.startTime-AA,sA.endTime-AA,sA.text);X.addCue(vA)}}}}else this.modules.event.addEvent({timestamp:J.timestamp/J.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:z,type:"metadata"})}else if(BA!=null&&BA.codec){const tA=R(BA.codec);if(tA==="text")throw new Error("Subtitles are not supported");if(this.modules.incomingData.add(tA,J.payload.byteLength),Kg(J.flags)){const z=K(h({type:tA,data:J.payload,codec:BA.codec},J),{channelId:w}),O=vg(z.codec,z.payload);O&&this.sizes.set(z.renditionId,O);const N=KQ({codec:BA.codec,codecString:BA.codecString});this.emitter.emit("init segment",{initSegment:z,mimeType:N}),this.emit("initialized media")}else{const z=MI(J,BA,this.sizes.get(J.renditionId));let O=this.sampleProcessingSesssions.get(tA);if(!O)O=GI(this.modules.sync.processSample(z)),this.sampleProcessingSesssions.set(tA,O);else{const N=O(this.modules.sync.processSample(z),this.isSwitchingRenditionLevel&&z.type==="video");let x=z;N.forEach(L=>{this.modules.event.extractEvent(L,x),this.emitter.emit("coded sample",L),x=L})}}}}});this.options.get("maxVideoBitRate")!==Number.MAX_SAFE_INTEGER&&(this.maxVideoBitRate=this.options.get("maxVideoBitRate")),this.options.get("maxAudioBitRate")!==Number.MAX_SAFE_INTEGER&&(this.maxAudioBitRate=this.options.get("maxAudioBitRate")),Zt(this.options.get("maxSize"),hF())||(this.maxSize=this.options.get("maxSize")),this.options.get("burstEnabled")&&d.enableBurst(this.targetBufferTime)}set volume(e){this.playbackSource.volume=e}get volume(){return this.playbackSource.volume}set muted(e){if(e===this.muted)return;const t=this.playbackSource.muted;this.playbackSource.muted=e,!e&&t&&!this.playbackSource.isPaused&&this.playbackSource.play()}get muted(){return this.playbackSource.muted}get media(){return this.options.get("media")}get videoBitRate(){return this.modules.incomingData.averageBitRate("video")}get audioBitRate(){return this.modules.incomingData.averageBitRate("audio")}get connectionState(){return this.modules.connection.getState()}get playbackState(){return this.modules.playback.getState()}get bufferFullness(){return this.modules.playback.getBufferFullness()}get sizeBasedResolutionCapEnabled(){return this.modules.constraintCap.sizeBasedResolutionCapEnabled}set sizeBasedResolutionCapEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e}get abrEnabled(){return this.modules.adaptivity.isEnabled}set abrEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e?this.options.get("sizeBasedResolutionCapEnabled"):!1,this.modules.adaptivity.isEnabled=e,this.alignSizeAndBitRate(this.targetSubscription)}get serverEdgeTime(){return this.modules.sync.getLiveEdgeTimeLatencyAdjusted(this.currentSubscription.channelId)}get serverWallclockTime(){return this.modules.sync.getWallclockTimeLatencyAdjusted(this.currentSubscription.channelId)}get currentTime(){return this.modules.sync.serverCurrentTime}get channelCurrentTime(){return this.modules.sync.channelCurrentTime}get targetBufferTime(){return this.modules.playback.getTargetBufferTime()}set targetBufferTime(e){this.modules.playback.getTargetBufferTime()!==e&&(this.modules.playback.setTargetBufferTime(e),this.playbackSource.currentTime=this.modules.sync.serverCurrentTime,this.options.get("burstEnabled",this.channelId)?this.modules.subscription.enableBurst(this.targetBufferTime):this.modules.subscription.enableBurst(0))}get playbackLatency(){var e;if(this.playbackSource.currentTime!==0)return this.targetBufferTime+((e=this.modules.sync.drift)!=null?e:0)+this.modules.connection.rtt/2}get playbackWallclockTime(){if(!(!this.serverWallclockTime||!this.playbackLatency))return this.serverWallclockTime-this.playbackLatency}get channels(){return this._channels}get languages(){return this.modules.renditions.getLanguages()}get language(){return this.modules.subscription.getTargetSubscription().audio.language}set language(e){this.modules.subscription.setLanguage(e)}set textTrack(e){U(this,OA).forEach(t=>{t.label===e?t.mode="showing":t.mode="hidden"}),this.emitter.emit("text track",e)}get textTracks(){return U(this,OA).filter(e=>e.mode!=="disabled").map(e=>e.label)}get textTrack(){var e;return(e=U(this,OA).find(t=>t.mode==="showing"))==null?void 0:e.label}get channelId(){var e,t;return(t=(e=this.modules)==null?void 0:e.subscription.getTargetSubscription().channelId)!=null?t:this.options.get("channelId")}set channelId(e){if(e===this.channelId)return;this.modules.subscription.setChannelId(e);const t=this.options.get("media")==="audio"?[]:this.options.get("videoCodecs"),B=this.modules.renditions.getAudioRenditions(e),F=this.modules.renditions.getVideoRenditions(e),n=this.targetSubscription.audio.language,s=B==null?void 0:B.some(d=>d.language===n),a=t.find(d=>(F==null?void 0:F.find(E=>E.codec===d))!==void 0);a&&this.modules.subscription.setVideoCodec(a),this.logger.debug("Channel switch - started",{audioRenditions:B,targetSubscriptionLanguage:n,targetHasCurrentLanguage:s}),this.alignSizeAndBitRate(this.targetSubscription)}get maxSize(){var B,F;const{width:e,height:t}=(F=(B=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:B.video)!=null?F:hF();return{width:e,height:t}}set maxSize(e){this.modules.constraintCap.setUserSpecifiedCap({video:{width:e.width,height:e.height}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxVideoBitRate(){var e,t;return(t=(e=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:e.video.bitRate)!=null?t:tt()}set maxVideoBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({video:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxAudioBitRate(){var e,t;return(t=(e=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:e.audio.bitRate)!=null?t:tt()}set maxAudioBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({audio:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get renditionLevels(){return this.modules.renditions.getRenditionLevels()}get currentRenditionLevel(){return this.modules.renditions.getRenditionLevel()}get targetRenditionLevel(){return this.modules.renditions.getRenditionLevel(this.modules.subscription.getTargetSubscription())}get isSwitchingRenditionLevel(){return this.modules.subscription.isSwitchingSubscription()}get videoBufferedRanges(){var e,t,B,F;return(F=(B=(e=this.modules.mseModule)==null?void 0:e.getBuffer("video"))!=null?B:(t=this.modules.decoder)==null?void 0:t.getBuffer("video"))!=null?F:[]}get audioBufferedRanges(){var e,t,B,F;return(F=(B=(e=this.modules.mseModule)==null?void 0:e.getBuffer("audio"))!=null?B:(t=this.modules.decoder)==null?void 0:t.getBuffer("audio"))!=null?F:[]}getApiClient(){return this.modules.connection.apiClient}get lastBufferEvent(){return this.modules.playback.getLastBufferStateEvent()}get activeRatios(){return this.modules.qualityOfService.activeRatios()}get bufferingRatios(){return this.modules.qualityOfService.bufferingRatios()}get timeSpentBuffering(){return this.modules.qualityOfService.timeSpentBuffering()}get timeActive(){return this.modules.qualityOfService.timeActive()}get mediaElement(){return this.element}get audioNode(){var e;return(e=this.modules)!=null&&e.canvasModule?this.modules.canvasModule.audioNode:void 0}get drmStatistics(){var e;return(e=this.encryptedMediaExtensions)==null?void 0:e.getStatistics()}get uptime(){return Date.now()-this.createdAt}suspend(){this.isSuspended||(Object.values(this.modules).forEach(e=>{e&&"suspend"in e&&e.suspend()}),this.isSuspended=!0)}unsuspend(){this.isSuspended&&(Object.values(this.modules).forEach(e=>{e&&"unsuspend"in e&&e.unsuspend()}),this.isSuspended=!1)}alignSizeAndBitRate(e){const t=this.modules.constraintCap.constrainSubscription(K(h({},e),{video:h({},e.video),audio:h({},e.audio)})),B=this.modules.constraintCap.getUserSpecifiedCap();!this.abrEnabled&&B&&(t.audio.bitRate=B.audio.bitRate,t.video.bitRate=B.video.bitRate,t.video.width=B.video.width,t.video.height=B.video.height);const F=this.modules.renditions.getRenditionLevel(t);if(F){if(F.video&&(this.modules.subscription.setVideoBitRate(F.video.bitRate),this.modules.subscription.setSize(F.video)),F.audio)this.modules.subscription.setAudioBitRate(F.audio.bitRate),this.modules.subscription.setLanguage(F.audio.language);else if(t.audio.language){let n=this.modules.renditions.getAudioRenditions(t.channelId);!this.abrEnabled&&B&&(n=n==null?void 0:n.filter(g=>g.bitRate<B.audio.bitRate));const s=t.audio.language,a=n==null?void 0:n.some(g=>g.language===s),d=n==null?void 0:n.find(g=>g.language),E=(n==null?void 0:n.length)&&n[0]||void 0;a||(d?(this.logger.debug("Randomizing language since target did not have current language"),this.modules.subscription.setAudioBitRate(d.bitRate),this.modules.subscription.setLanguage(d.language)):(this.logger.debug("Randomizing audio rendition since target did not have current language"),E!=null&&E.bitRate&&this.modules.subscription.setAudioBitRate(E.bitRate),this.modules.subscription.setLanguage(E==null?void 0:E.language)))}}}get currentSubscription(){return this.modules.subscription.getCurrentSubscription()}get targetSubscription(){return this.modules.subscription.getTargetSubscription()}willUseMediaSource(){return this.browser.supportsMediaSource&&this.options.get("mseEnabled")}};_t=new WeakMap,OA=new WeakMap,$t=new WeakMap,i(Qe,"MAX_POOL_SIZE",10),i(Qe,"INITIAL_MAX_BIT_RATE",2.5*1e3*1e3),i(Qe,"DISCONNECT_TIMEOUT",15*1e3),i(Qe,"REMOVE_CUE_THRESHOLD",1e3*10);let PF=Qe;const jF={buffering:"_buffering_1ccif_1","buffering-fullscreen":"_buffering-fullscreen_1ccif_16",hidden:"_hidden_1ccif_25","buffering-indicator":"_buffering-indicator_1ccif_31",scaleout:"_scaleout_1ccif_1"};class Ae{constructor(A){i(this,"attach",A=>{this.detach(),A.appendChild(this.element)});i(this,"attachBefore",(A,e)=>{this.detach(),A.insertBefore(this.element,e)});i(this,"detach",()=>this.element.remove());this.element=A}}const aa=jF.hidden,HI=jF.buffering,kl=jF["buffering-fullscreen"],YI=jF["buffering-indicator"];class Nl extends Ae{constructor(){super(document.createElement("div"));i(this,"indicator",document.createElement("div"));i(this,"isHidden",()=>this.element.classList.contains(aa));i(this,"setHidden",e=>e?this.hide():this.show());i(this,"hide",()=>this.element.classList.add(aa));i(this,"show",()=>this.element.classList.remove(aa));i(this,"fullscreen",e=>{e?this.element.classList.add(kl):this.element.classList.remove(kl)});this.element.className=HI,this.indicator.className=YI,this.element.appendChild(this.indicator)}}class ml extends $A{constructor(e){super();i(this,"config");i(this,"hlsUrl");i(this,"element");i(this,"connectingTimeout");i(this,"updateAuthenticationToken",e=>{});i(this,"unload",()=>{this.element&&(this.element.removeEventListener("webkitplaybacktargetavailabilitychanged",this.onAirPlayAvailable),this.element.removeEventListener("webkitcurrentplaybacktargetiswirelesschanged",this.onAirPlayPlaybackChanged),this.element.remove())});i(this,"onAirPlayAvailable",e=>{switch(e.availability){case"available":{this.element.src!==this.hlsUrl&&this.checkHlsUrl(this.hlsUrl).then(B=>{B&&(this.element.src=this.hlsUrl,this.emit("available"))});break}}});i(this,"onAirPlayPlaybackChanged",()=>{window.clearTimeout(this.connectingTimeout),this.element.webkitCurrentPlaybackTargetIsWireless?(this.emit("connected"),this.element.style.display="block",this.element.paused&&this.element.play()):(this.emit("disconnected"),this.element.pause(),this.element.src="",this.element.src=this.hlsUrl,this.element.style.display="none")});this.hlsUrl=new URL(`/api/hls?channelId=${e.channelId}`,e.url).toString(),this.config=e,this.element=document.createElement("video"),this.element.style.position="absolute",this.element.style.top="0",this.element.style.bottom="0",this.element.style.left="0",this.element.style.right="0",this.element.style.width="100%",this.element.style.height="100%",this.element.style.zIndex="1001",this.element.style.display="none",this.element.id="vindral-airplay-element",this.element.playsInline=!0,this.element.controls=!0,this.element.preload="metadata",this.element.addEventListener("webkitplaybacktargetavailabilitychanged",this.onAirPlayAvailable),this.element.addEventListener("webkitcurrentplaybacktargetiswirelesschanged",this.onAirPlayPlaybackChanged),this.config.container.appendChild(this.element)}get casting(){return this.element.webkitCurrentPlaybackTargetIsWireless}set channelId(e){}showPlaybackTargetPicker(){this.element.paused&&(this.element.play(),this.connectingTimeout=window.setTimeout(()=>{this.element.webkitCurrentPlaybackTargetIsWireless||(this.element.pause(),this.element.src="",this.element.src=this.hlsUrl)},3e4)),this.element.webkitShowPlaybackTargetPicker()}static isAirPlaySupported(){return!!window.WebKitPlaybackTargetAvailabilityEvent}checkHlsUrl(e){return r(this,null,function*(){try{return(yield fetch(e,{method:"HEAD"})).ok}catch(t){return!1}})}}const Wl={bar:"_bar_zames_1",hidden:"_hidden_zames_45"},hB={"channel-selection-item":"_channel-selection-item_suenn_1","channel-selection-item-selected":"_channel-selection-item-selected_suenn_8","channel-selection-item-image":"_channel-selection-item-image_suenn_13",withThumbnails:"_withThumbnails_suenn_19","hide-on-small":"_hide-on-small_suenn_27"},xI={"icon-button":"_icon-button_5fg7v_1"},pl={enter:{viewBox:"-12 -12 38 38",content:`<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-5.000000, -5.000000)">
|
|
49
|
+
`);switch(A){case"beacon":navigator.sendBeacon(this.options.url,e);break;case"fetch":default:this.parentContext.connectionState==="connected"?this.emitter.emit("send signal",{type:"telemetry",body:e}):yield Vo(new URL(this.options.url),{body:e,headers:{"Content-Type":"text/plain"}});break}this.retries=0,this.unsentLines.clear()}catch(e){this.retries++}}}));i(this,"onVisibilityChange",A=>{A==="hidden"&&(this.addStats({isFinal:!0,initiator:"visibilitychange"}),this.send("beacon"))});i(this,"onPageHide",A=>{this.addStats({isFinal:!0,initiator:"pagehide"},{persisted:A.persisted}),this.send("beacon")});i(this,"onRejection",A=>this.addError(A.reason));i(this,"onError",A=>this.addError(A.error));i(this,"addError",A=>{const{includeErrors:e,maxErrorReports:t}=this.options;if(e&&A instanceof H){if(this.errorCount++,this.errorCount>t)return;const B=this.parentContext.getStatistics();this.unsentLines.push(sa("error",h(h({},B),A.toStringifiable())))}});this.logger=A,this.emitter=e,this.options=h(h({},bI),t),this.parentContext=B}};i(Gn,"create",(A,e,t,B)=>new Gn(A,e,t,B));let OF=Gn;const Mn=class Mn{constructor(A,e,t){i(this,"logger");i(this,"element");i(this,"documentState");i(this,"timers",new mA);i(this,"unload",()=>{this.timers.unload()});i(this,"unpause",()=>{this.element.userHasProvidedInput&&this.element.isPaused&&this.documentState.isVisible&&this.documentState.isOnline&&(this.logger.debug("Unpause video"),this.element.tryPlay())});this.logger=A,this.element=e,this.documentState=t,this.timers.setInterval(this.unpause,100)}};i(Mn,"create",(A,e,t)=>new Mn(A,e,t));let zF=Mn;const fI=6,GI=Q=>{let A=[Q],e=0,t=0,B=!1;const F=(s,a)=>{var G,y,Z;s.flags&&CB(s.flags)&&(e=(G=s.compositionTimeOffset)!=null?G:0),s.timestamp+=e,s.compositionTimeOffset=((y=s.compositionTimeOffset)!=null?y:0)-e;const d=s.timestamp/s.timescale,g=a.flags&&CB(a.flags)?(Z=a.compositionTimeOffset)!=null?Z:0:e,S=(a.timestamp+g)/a.timescale,u=Math.max(0,Math.round((S-d)*s.timescale));return u>0&&(t=u),K(h({},s),{duration:u>0?u:t})};return(s,a=!1)=>{if(s.flags&&CB(s.flags)&&a&&(B=!B),!(a&&A.length<fI&&B)&&A.length>0){B=!1;let E=s;for(let c=A.length-1;c>0;c--){const S=A[c];if(!S||!E)break;S.timestamp>=E.timestamp?A.splice(c,1):E=S}const g=A.map((c,S)=>F(c,A[S+1]||s));return A=[s],g}return A.push(s),[]}},MI=(Q,A,e)=>{if(yt(A))return h(K(h({},Q),{type:"video",codec:A.codec,isSync:CB(Q.flags),data:Q.payload,duration:0,width:A.width,height:A.height}),e);if(A.codec==="webvtt")throw new Error("WebVTT is not supported");return K(h({},Q),{type:"audio",channels:A.channels,sampleRate:A.sampleRate,codec:A.codec,language:A.language,isSync:CB(Q.flags),data:Q.payload,duration:0})};class vI{constructor(){i(this,"highEntropyValues");var A;(A=self.navigator.userAgentData)==null||A.getHighEntropyValues(["architecture","model","platformVersion","fullVersionList"]).then(e=>{this.highEntropyValues=e})}getUserAgentInformation(){var F,n,s,a,d,E;const A=window.location.origin,t=!A||A=="null"?"":`${window.location.pathname}${window.location.search}`.substring(0,1e3),B={locationOrigin:window.location.origin,locationPath:t,ancestorOrigins:((F=window.location.ancestorOrigins)==null?void 0:F.length)>0?Array.from(window.location.ancestorOrigins):void 0,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory};if(self.navigator.userAgentData&&this.highEntropyValues){const g="1",c=[...(n=this.highEntropyValues.brands)!=null?n:[]];c.sort((Z,M)=>Z.brand.localeCompare(M.brand));const S=[...(s=this.highEntropyValues.fullVersionList)!=null?s:[]];S.sort((Z,M)=>Z.brand.localeCompare(M.brand));const u=S.map(Z=>Z.version),p=c.map(Z=>Z.brand),G=c.map(Z=>Z.version),y=parseInt((d=(a=this.highEntropyValues.platformVersion)==null?void 0:a.split(".")[0])!=null?d:g);return h({userAgentLegacy:window.navigator.userAgent,ua:{browser:{brands:p,fullVersionBrands:u,majorVersions:G},device:this.highEntropyValues.model||"Other",os:{family:this.highEntropyValues.platform||"Other",version:(E=this.highEntropyValues.platformVersion)!=null?E:g,major_version:Number.isFinite(y)?y:0}}},B)}else return h({userAgent:window.navigator.userAgent},B)}}const LI=Q=>{if(typeof Q!="object"||Q===null)throw new Error("not an object");if(!("video"in Q))throw new Error("missing video in subscription");if(!("audio"in Q))throw new Error("missing audio in subscription");if(!("channelId"in Q))throw new Error("missing channelId");return!0},Qe=class Qe extends $A{constructor(e){var qA,MA;super();i(this,"pictureInPicture");i(this,"browser",so());i(this,"options");i(this,"element");i(this,"playbackSource");i(this,"emitter",new $A);i(this,"logger");i(this,"modules");i(this,"clientIp");i(this,"sessionId");i(this,"clientId",co());i(this,"_channels",[]);i(this,"createdAt",Date.now());i(this,"hasCalledConnect",!1);i(this,"latestEmittedLanguages",[]);i(this,"wakeLock");i(this,"pool",new k(Qe.MAX_POOL_SIZE));i(this,"userAgentInformation",new vI);i(this,"encryptedMediaExtensions");o(this,_t,0);o(this,OA,[]);i(this,"sampleProcessingSesssions",new Map);i(this,"sizes",new Map);i(this,"isSuspended",!0);i(this,"disconnectTimeout");o(this,$t);i(this,"attach",e=>{var t;(t=this.wakeLock)==null||t.attach(e),e.appendChild(this.element)});i(this,"getOptions",()=>this.options.getOptions());i(this,"getThumbnailUrl",()=>{let e=this.options.get("edgeUrl")||this.options.get("url");e=e.replace("wss://","https://"),e=e.replace("ws://","http://"),e=e.endsWith("/")?e.slice(0,-1):e;const t=window.devicePixelRatio||1,B=Math.round(window.innerWidth*t),F=Math.round(window.innerHeight*t),n=this.options.get("authenticationToken"),s=n?`&auth.token=${n}`:"";return`${e}/api/thumbnail?channelId=${this.channelId}${s}&width=${B}&height=${F}`});i(this,"updateAuthenticationToken",e=>{this.logger.debug("Got new auth token",{token:e}),this.options.set("authenticationToken",e),this.emitter.emit("send signal",{type:"refresh auth",token:e})});i(this,"connect",()=>{this.hasCalledConnect||(this.play(),this._connect())});i(this,"_connect",()=>{var e,t;this.hasCalledConnect||(this.hasCalledConnect=!0,Object.values(this.modules).forEach(B=>{B&&"load"in B&&B.load()}),this.unsuspend(),this.playbackSource instanceof bs&&((t=(e=this.playbackSource).load)==null||t.call(e)),this.modules.connection.connect())});i(this,"getCastOptions",()=>({url:this.options.get("url"),channelId:this.options.get("channelId"),channelGroupId:this.options.get("channelGroupId"),authenticationToken:this.options.get("authenticationToken"),language:this.options.get("language"),logLevel:this.options.get("logLevel"),minBufferTime:this.options.get("minBufferTime"),tags:this.options.get("tags"),ownerSessionId:this.sessionId,edgeUrl:this.options.get("edgeUrl"),media:this.options.get("media"),drm:this.options.get("drm")}));i(this,"onConnectInfo",e=>r(this,null,function*(){var d;this.sessionId=co();const t=this.modules.subscription.getTargetSubscription(),B=e.channels.find(E=>E.channelId===t.channelId);if(this.emitter.emit("connect info",e),this._channels=e.channels,this.updateTextTracks((d=B==null?void 0:B.renditions)!=null?d:[]),!this.textTrack&&this.options.get("textTrack")&&(this.textTrack=this.options.get("textTrack")),yield Promise.all(e.channels.map(E=>r(this,null,function*(){E.overrides&&this.options.addOverrides(E.channelId,E.overrides),E.renditions=yield this.filterRenditions(E.renditions),this.modules.renditions.setRenditions(E.channelId,E.renditions)}))),!B)throw vo("external");const F=this.options.getOverride("sizeBasedResolutionCapEnabled",this.channelId);F!==void 0&&(this.modules.constraintCap.sizeBasedResolutionCapEnabled=F);const n=this.options.getOverride("minBufferTime",this.channelId),s=this.options.getOverride("maxBufferTime",this.channelId);if((n||s)&&(this.modules.bufferTime.updateConfig({minBufferTime:this.options.get("minBufferTime",this.channelId),maxBufferTime:this.options.get("maxBufferTime",this.channelId)}),this.targetBufferTime=this.options.get("minBufferTime",this.channelId)),this.options.get("burstEnabled",this.channelId)&&this.modules.subscription.enableBurst(this.targetBufferTime),this.emit("is live",B.isLive),!B.isLive)throw new Error("Waiting for channel to go live");this.patchSubscription(B,this.modules.connection.estimatedBandwidth),yield this.initializeDecodingModule(),this.resetModules(),this.emit("rendition levels",this.modules.renditions.getRenditionLevels()),this.emit("channels",this.channels),this.emitLanguagesIfChanged(),this.sampleProcessingSesssions.clear();const a=this.options.get("burstEnabled",this.channelId);return{video:this.targetSubscription.video,audio:this.targetSubscription.audio,burstMs:a?this.targetBufferTime:void 0,sessionId:this.sessionId,clientId:this.clientId,channelId:this.channelId,channelGroupId:this.options.get("channelGroupId"),authToken:this.options.get("authenticationToken"),textTrack:this.textTrack}}));i(this,"emitLanguagesIfChanged",()=>{const e=this.modules.renditions.getLanguages(),t=this.latestEmittedLanguages;e.length==t.length&&e.every(F=>t.includes(F))||(this.logger.debug("Emitting new languages",{currentLanguages:e}),this.latestEmittedLanguages=e,this.emit("languages",this.latestEmittedLanguages))});i(this,"updateTextTracks",e=>{const t=e.filter(B=>B.codec==="webvtt");t.forEach(B=>{if(!U(this,OA).find(n=>n.language===B.language)){if(this.modules.canvasModule){const n=this.modules.canvasModule.textTracks.addTextTrack(B.kind,B.label||B.language||"",B.language||"");U(this,OA).push(n)}else if(this.mediaElement instanceof HTMLVideoElement){const n=this.mediaElement.addTextTrack(B.kind,B.label||B.language,B.language);U(this,OA).push(n)}}});for(const B of U(this,OA))t.find(n=>n.language===B.language)?B.mode==="disabled"&&(B.mode="hidden"):B.mode="disabled";this.emit("text tracks",this.textTracks)});i(this,"cleanupTextTracks",(e=this.currentTime-2e4)=>{U(this,OA).forEach(t=>{if(t.cues)for(const B of t.cues)B.endTime*1e3<e-2e3&&t.removeCue(B)})});i(this,"filterRenditions",e=>r(this,null,function*(){const t=yield Promise.all(e.map(s=>r(this,null,function*(){var E,g,c;if(bt(s))return!0;if(!yt(s)||!this.isSupportedVideoCodecProfile(s.codec,s.codecString))return!1;if(!this.willUseMediaSource()){const S=this.options.get("advanced"),u=(E=S.wasmDecodingConstraint.bitRate)!=null?E:Number.MAX_SAFE_INTEGER,p=(g=S.wasmDecodingConstraint.width)!=null?g:Number.MAX_SAFE_INTEGER,G=(c=S.wasmDecodingConstraint.height)!=null?c:Number.MAX_SAFE_INTEGER;return s.bitRate<=u&&s.width<=p&&s.height<=G}const a=yield iI(s);if(!a.supported||s.codec=="av1"&&!a.smooth&&!a.powerEfficient)return!1;const d=this.options.getOverride("maxVideoBitRate",this.channelId);return d?d>=s.bitRate:!0})));let B=e.filter((s,a)=>t[a]);const F=B.filter(s=>s.codec==="h264").reverse()[0],n=B.filter(s=>s.codec==="av1").reverse()[0];return F&&n&&F.width>n.width&&F.height>n.height&&(B=B.filter(s=>s.codec!=="av1")),B}));i(this,"patchSubscription",(e,t)=>{const B=Math.min(this.options.get("maxVideoBitRate"),Qe.INITIAL_MAX_BIT_RATE,t,this.targetSubscription.video.bitRate),F=Math.min(this.options.get("maxAudioBitRate"),Qe.INITIAL_MAX_BIT_RATE,t,this.targetSubscription.audio.bitRate),n=this.options.get("media")==="audio"?[]:this.options.get("videoCodecs",this.channelId),s=this.supportedAudioCodecs(),a=e.renditions.filter(bt),d=e.renditions.filter(yt),E=s.find(u=>a.find(p=>p.codec===u)!==void 0),g=n.find(u=>d.find(p=>p.codec===u)!==void 0),c=a.map(u=>u.language);if(this.logger.debug("supported and selected codecs",{audioCodecs:s,videoCodecs:n,audioCodec:E,videoCodec:g}),g){const u=this.options.get("maxSize");this.modules.subscription.setVideoConstraint(h({codec:g,bitRate:this.abrEnabled?B:this.options.get("maxVideoBitRate")},u))}E&&(this.modules.subscription.setAudioConstraint({codec:E,bitRate:this.abrEnabled?F:this.options.get("maxAudioBitRate"),language:this.options.get("language")}),(!c.includes(this.options.get("language"))||this.language===void 0)&&this.modules.subscription.setLanguage(c[0])),this.alignSizeAndBitRate(this.targetSubscription);const S=this.modules.subscription.getTargetSubscription();this.emitter.emit("subscription changed",{to:S,from:this.modules.subscription.getCurrentSubscription()})});i(this,"isSupportedVideoCodecProfile",(e,t)=>{if(this.willUseMediaSource()){const B=se();return B?B.isTypeSupported(KQ({codec:e,codecString:t})):!0}if(e==="h264"){const B=!!(t!=null&&t.startsWith("avc1.42")),F=!!(t!=null&&t.startsWith("avc1.66."));return B||F}return e!=="av1"});i(this,"supportedAudioCodecs",()=>{if(this.options.get("media")==="video")return[];const e=[];return(this.browser.supportsMp4Opus&&this.options.get("mseOpusEnabled")||!this.willUseMediaSource())&&e.push("opus"),this.willUseMediaSource()&&e.push("aac"),e});i(this,"initializeDecodingModule",()=>r(this,null,function*(){var B,F;const e=this.currentRenditionLevel,t=[];if(!e)throw new H("No currentRenditionLevel",{code:"no_current_rendition_level",isFatal:!1});if(e!=null&&e.video&&t.push({type:"video",mimeType:KQ(e.video)}),e!=null&&e.audio&&t.push({type:"audio",mimeType:KQ(e.audio)}),t.length===0)throw new H("Can't initialize decoding module without tracks",{code:"no_tracks",isFatal:!1});if(this.willUseMediaSource()&&this.element instanceof HTMLMediaElement)this.emitter.emit("flush buffers"),yield(B=this.modules.mseModule)==null?void 0:B.setSourceBuffers(t);else{const n=yield Ks.create(this.emitter,this.logger.createContext("DecoderModule"),t,this.playbackSource,this.pool);(F=this.modules.decoder)==null||F.unload(),this.modules.decoder=n,this.modules.decoder.load()}}));i(this,"unload",()=>r(this,null,function*(){var e,t,B;this.logger.debug("Unloading modules..."),yield Promise.all(Object.values(this.modules).map(F=>F==null?void 0:F.unload())),(e=this.wakeLock)==null||e.unload(),this.pool=new k(Qe.MAX_POOL_SIZE),(B=(t=this.playbackSource).unload)==null||B.call(t),this.element.remove(),this.emitter.reset(),this.encryptedMediaExtensions.unload(),this.reset(),this.logger.debug("Unloaded modules")}));i(this,"userInput",()=>{this.play()});i(this,"pause",()=>{this.options.get("pauseSupportEnabled")&&this.playbackState!=="paused"&&(this.playbackSource.pause(),this.hasCalledConnect&&this.suspend())});i(this,"registerDebugInstance",()=>{QI(this)});i(this,"play",()=>{var e;this.hasCalledConnect?this.unsuspend():this.playbackState!=="playing"&&(this._connect(),self.addEventListener("__vindral_register_debug__",this.registerDebugInstance),this.modules.timer.setInterval(()=>this.cleanupTextTracks(),Qe.REMOVE_CUE_THRESHOLD)),(e=this.wakeLock)==null||e.enable(),this.playbackState==="paused"&&(this.resetModules(),this.emitter.emit("flush buffers"),this.cleanupTextTracks(Number.MAX_SAFE_INTEGER)),this.playbackSource.play()});i(this,"getStatistics",()=>Object.values(this.modules).reduce((e,t)=>t&&"getStatistics"in t?h(h({},e),t.getStatistics()):e,this.getRuntimeInfo()));i(this,"resetModules",()=>{Object.values(this.modules).forEach(e=>{e&&"reset"in e&&e.reset()}),this.sampleProcessingSesssions.clear(),this.playbackSource.currentTime=0,this.playbackSource.isActivated=!1});i(this,"getRuntimeInfo",()=>{const e=this.modules.canvasModule?this.options.get("iosMediaElementEnabled"):void 0;return h({uptime:Date.now()-this.createdAt,version:"4.0.0-107-gcc4e82db",clientId:this.clientId,sessionId:this.sessionId,channelId:this.channelId,channelGroupId:this.options.get("channelGroupId"),ip:this.clientIp,url:this.options.get("url"),timeToFirstFrame:this.timeToFirstFrame(),iosMediaElementEnabled:e},this.userAgentInformation.getUserAgentInformation())});i(this,"onMediaElementState",e=>{this.logger.info("media element state",{state:e}),this.options.get("pauseSupportEnabled")&&(e==="paused"?this.modules.documentState.isVisible&&(this.suspend(),this.modules.connection.disconnect()):(this.unsuspend(),this.modules.connection.getState()==="disconnected"&&this.modules.connection.unsuspend()))});i(this,"onBufferEvent",e=>{var B,F,n,s;this.emit("buffer state event",e);const t=!this.playbackSource.isActivated||this.playbackSource.isPaused;if(e==="filled"&&t){const a=Math.max(this.currentTime,(F=(B=this.videoBufferedRanges[0])==null?void 0:B.start)!=null?F:0,(s=(n=this.audioBufferedRanges[0])==null?void 0:n.start)!=null?s:0);this.logger.info("Buffer filled - starting playback",{currentTime:a}),this.playbackSource.currentTime=a,this.modules.sync.activateSyncAdjustments(),this.playbackSource.isActivated=!0}else e==="drained"&&this.playbackSource.isPaused&&(this.playbackSource.isActivated=!1,this.modules.sync.deactivateSyncAdjustments())});i(this,"timeToFirstFrame",()=>{const e=this.modules.playback.getFirstFrameTime(),t=this.modules.connection.firstConnectionTime;if(t&&e)return e-t});this.options=new tI(h(h({},Xd),sE(e)));const t=["localhost","127.0.0.1"];e.telemetryEnabled===void 0&&t.includes(location.hostname)&&this.options.set("telemetryEnabled",!1);const B={channelId:this.options.get("channelId"),audio:{language:this.options.get("language"),bitRate:this.options.get("maxAudioBitRate")},video:{bitRate:this.options.get("maxVideoBitRate"),width:this.options.get("maxSize").width,height:this.options.get("maxSize").height}},F=NA.get();F.setLevel(this.options.get("logLevel")),F.setDebug(!1),this.logger=F;const n=ta.create(this.emitter,this.logger.createContext("PictureInPictureModule")),s=mA.create(),a=Ys.create(this.emitter,this.logger.createContext("ConnectionModule"),{reconnectHandler:this.options.get("reconnectHandler"),options:this.options,onConnectInfo:this.onConnectInfo}),d=Fa.create(this.logger.createContext("SubscriptionModule"),this.emitter,B),E=Ua.create(this.emitter,d),g=Ba.create(this.emitter,this.logger.createContext("QualityOfServiceModule")),c=Qa.create(this.emitter,this.logger.createContext("PlaybackModule"),this,this.options.get("minBufferTime"));this.encryptedMediaExtensions=new Po(this.emitter,this.logger.createContext("EncryptedMediaExtensions"),(qA=e.drm)==null?void 0:qA.headers,(MA=e.drm)==null?void 0:MA.queryParams);const S=Os.create(this.emitter),u=this.options.get("poster"),p=u===!0?this.getThumbnailUrl():u||void 0;let G,y,Z;if(this.willUseMediaSource()){const J=new bs({type:this.options.get("media")=="audio"?"audio":"video",autoplay:!1,muted:this.options.get("muted")||this.options.get("media")==="video",logger:this.logger.createContext("MediaElement"),poster:p});J.on("buffer state",w=>this.emitter.emit("buffer state",w)),J.on("needs user input",w=>this.emitter.emit("needs user input",w)),J.on("volume state",w=>this.emit("volume state",w)),J.on("media element state",w=>this.onMediaElementState(w)),this.element=J.element,this.playbackSource=J,Po.isSupported()&&this.encryptedMediaExtensions.attach(J.element),G=ea.create(this.logger.createContext("MseModule"),this.emitter,this.element),this.options.get("pauseSupportEnabled")||(y=zF.create(this.logger.createContext("UnpauseModule"),J,S)),this.options.get("pictureInPictureEnabled")&&this.emitter.emit("add picture in picture listener",{element:J.element})}else if(this.browser.platform.iosVersion>=15&&this.options.get("iosMediaElementEnabled")){const J=Aa.create(this.emitter,this.logger.createContext("ModernCanvasModule"),this.pool,this,{type:this.options.get("media")=="audio"?"audio":"video",muted:this.options.get("muted")||this.options.get("media")==="video",poster:p}),w=J.element();this.element=w.element,this.playbackSource=J,Z=J,this.options.get("pictureInPictureEnabled")&&this.browser.platform.iosVersion>15&&this.emitter.emit("add picture in picture listener",{element:this.element}),this.options.get("pauseSupportEnabled")||(y=zF.create(this.logger.createContext("UnpauseModule"),w,S))}else{const J=$s.create(this.emitter,this.logger.createContext("LegacyCanvasModule"),this.pool,this,this.options.get("muted")||this.options.get("media")==="video");this.element=J.element(),this.playbackSource=J,Z=J,this.options.get("iosWakeLockEnabled")&&(this.wakeLock=new _g)}this.emitter.on("channel reset",this.resetModules),this.emitter.on("no data timeout",this.resetModules),this.emitter.on("media element state",J=>this.onMediaElementState(J)),this.emitter.on("volume state",J=>this.emit("volume state",J)),this.options.get("pauseSupportEnabled")||this.emitter.on("exit picture in picture",()=>s.setTimeout(()=>this.play(),0)),this.emitter.on("constraint cap changed",J=>{this.logger.info("new cap set",{cap:J}),this.alignSizeAndBitRate(this.targetSubscription)}),this.pictureInPicture={enter:()=>n.requestPictureInPicture(),exit:()=>n.exitPictureInPicture(),isActive:()=>n.isPictureInPictureActive(),isSupported:()=>n.isPictureInPictureSupported()},this.emitter.on("error",J=>{if(J.type()==="external"&&this.emit("error",J),J.isFatal())return()=>void this.unload()});const M=this.browser.platform.isIOS&&!this.browser.platform.isIpadOS,v=na.create(this.emitter,this.logger.createContext("SyncModule"),this.playbackSource,c,this.willUseMediaSource()&&!M),Y=(this.options.get("edgeUrl")||this.options.get("url")).replace("wss://","https://").replace("ws://","http://").replace("//lb.","//errors."),$=new URL("/telemetry",Y).toString(),TA=OF.create(this.logger.createContext("TelemetryModule"),this.emitter,{url:$,enabled:this.options.get("telemetryEnabled"),includeStats:!1,interval:5e3},this);this.modules={telemetry:TA,bufferTime:vs.create(this.emitter,this.logger.createContext("BufferTimeModule"),g,this,{maxBufferTime:this.options.get("maxBufferTime"),minBufferTime:this.options.get("minBufferTime")}),incomingData:Ps.create(this.emitter),adaptivity:Ms.create(this.emitter,this.logger.createContext("AdaptivityModule"),g,{cooldownTime:Math.max(this.options.get("minBufferTime"),2e3)}),constraintCap:Xs.create(this.emitter,this.element,E,this.options.get("abrEnabled")?this.options.get("sizeBasedResolutionCapEnabled"):!1),event:zs.create(this.emitter,this.logger.createContext("EventModule"),v),sync:v,documentState:S,connection:a,playback:c,pictureInPicture:n,timer:s,subscription:d,renditions:E,qualityOfService:g,mseModule:G,unpause:y,canvasModule:Z},this.modules.adaptivity.isEnabled=this.options.get("abrEnabled"),this.emitter.on("page active",J=>{var w;J&&typeof this.disconnectTimeout=="number"&&(this.modules.timer.clearInterval(this.disconnectTimeout),this.disconnectTimeout=void 0),J?this.playbackSource.isPaused||(this.logger.debug("Unsuspending"),this.unsuspend()):(this.logger.debug("Suspending"),this.suspend(),this.modules.decoder?this.options.get("iosBackgroundPlayEnabled")?(this.modules.decoder.unsuspend(),(w=this.modules.canvasModule)==null||w.unsuspend()):this.modules.connection.disconnect():(this.disconnectTimeout&&this.modules.timer.clearInterval(this.disconnectTimeout),this.disconnectTimeout=this.modules.timer.setInterval(()=>{const BA=this.playbackState==="paused"||this.muted;this.connectionState==="connected"&&BA&&(this.emitter.emit("flush buffers"),this.modules.connection.disconnect("Page inactive timeout"))},Qe.DISCONNECT_TIMEOUT)))});let uA;this.emitter.on("context switch complete",()=>{uA||(uA=window.setTimeout(()=>{window.clearTimeout(uA),uA=void 0,this.emit("context switch","completed"),this.emitLanguagesIfChanged()},this.targetBufferTime))}),this.emitter.on("context switch started",()=>this.emit("context switch","started")),this.emitter.on("needs user input",J=>this.emit("needs user input",J)),this.emitter.on("event",J=>{switch(J.type){case"metadata":this.emit("metadata",J);break;case"channel switch":this.emit("channel switch",{channelId:J.channelId});break;case"language switch":this.emit("language switch",{language:J.language});break}}),this.emitter.on("buffer state event",this.onBufferEvent),this.emitter.on("playback state",J=>this.emit("playback state",J)),this.emitter.on("rendition level changed",({to:J})=>{J&&this.emit("rendition level",J)}),this.emitter.on("connection state",J=>{this.emit("connection state",J)}),this.emitter.on("recovered from media error",()=>{this.modules.adaptivity.reset(this.targetBufferTime*2)}),this.emitter.once("connect info",J=>{var tA,z,O;const BA=((z=(tA=J.telemetry)==null?void 0:tA.probability)!=null?z:1)>=Math.random();J.telemetry&&((O=this.modules.telemetry)==null||O.unload(),this.modules.telemetry=OF.create(this.logger.createContext("TelemetryModule"),this.emitter,K(h({},J.telemetry),{enabled:this.options.get("telemetryEnabled")&&BA}),this),this.modules.telemetry.load())}),this.emitter.on("adapt level",J=>{var x,L,AA,X,UA;this.logger.debug("adapt level",{direction:J});const w=this.modules.renditions.getRenditionLevels(),BA=this.modules.renditions.getRenditionLevel(),tA=w.findIndex(sA=>sA===BA),z=w.length-1;let O=tA;switch(J){case"upgrade":{const sA=Math.min(tA+1,z),vA=w[sA],lF=(x=this.modules.connection.estimatedBandwidth)!=null?x:tt(),ZQ=((AA=(L=vA==null?void 0:vA.audio)==null?void 0:L.bitRate)!=null?AA:0)+((UA=(X=vA==null?void 0:vA.video)==null?void 0:X.bitRate)!=null?UA:0),rF=lF*2>ZQ;vA&&rF&&this.modules.adaptivity.isQoSOk(vA)&&(O=sA)}break;case"downgrade":O=Math.max(tA-1,0);break;case"double downgrade":O=Math.max(tA-2,0);break;case"reconnect":if(tA===0||this.modules.qualityOfService.timeSpentBufferingLast(6e3)>5e3){if(!this.modules.connection.lastConnectionTime||Date.now()-this.modules.connection.lastConnectionTime<this.modules.qualityOfService.fatalQosGraceTime()||this.modules.connection.getState()!=="connected")return;this.modules.qualityOfService.incrementFatalQosCount(),this.logger.info("Reconnecting due to poor qos"),this.modules.connection.reconnect("Fatal QOS"),this.emitter.emit("adapted level");return}else O=0}if(O===tA)return;const N=w[O];this.alignSizeAndBitRate(K(h({},this.targetSubscription),{video:h(h({},this.targetSubscription.video),N==null?void 0:N.video),audio:h(h({},this.targetSubscription.audio),N==null?void 0:N.audio)})),this.emitter.emit("adapted level")}),this.emitter.on("text track data",J=>{const w=U(this,OA).find(O=>O.language===J.language),tA=this.modules.sync.getTimeshiftOffset()/1e3,z=tA-U(this,_t);if(l(this,_t,tA),w){if(w.cues)for(const O of w.cues)O.startTime-=z,O.endTime-=z;for(const O of J.cues){const N=new VTTCue(O.startTime-tA,O.endTime-tA,O.text);w.addCue(N)}}}),this.emitter.on("received signal",J=>{var tA;const w=J,BA=this.modules.subscription.getCurrentSubscription();switch(this.logger.debug("received",h({},w)),w.type){case"client ip":this.clientIp=w.ip;break;case"renditions":this.updateTextTracks(w.renditions),l(this,$t,this.filterRenditions(w.renditions).then(z=>{this.emitter.emit("renditions",{renditions:z,channelId:this.currentSubscription.channelId}),this.emit("rendition levels",this.modules.renditions.getRenditionLevels()),this.emitLanguagesIfChanged()}).finally(()=>{l(this,$t,void 0)}));break;case"subscription changed":try{LI(w.subscription)}catch(z){this.emitter.emit("error",new H("Subscription failed validation",{source:z instanceof Error?z:void 0,isFatal:!1,code:"subscription_failed_validation"}))}this.emitter.emit("subscription changed",{reset:w.reset,to:w.subscription,from:this.modules.subscription.getCurrentSubscription()}),w.reset&&BA.channelId!==w.subscription.channelId&&(this.emit("error",Yo(w.subscription.channelId)),this.emit("channel switch failed",{channelId:BA.channelId})),this.modules.sync.timeshiftOnAudio=!((tA=w.subscription.video)!=null&&tA.codec),this.modules.adaptivity.reset();break;case"timing info":this.modules.sync.updateChannelSyncInfo(w.timingInfo.channelId,w.timingInfo),this.emit("server wallclock time",w.timingInfo.wallclockTime);break}}),this.emitter.on("channel switch timeout",J=>{this.emit("error",Yo(J)),this.emit("channel switch failed",{channelId:this.currentSubscription.channelId})}),this.emitter.on("received data",J=>{const w=this.modules.subscription.getCurrentSubscription(),BA=jg(J);if(!w){this.logger.warn("Received unwanted message",h({},BA));return}fe(K(h({},BA),{channelId:w.channelId}))}),this.emitter.on("received moq data",J=>{var O,N,x;const w=J.payload.mediaType(),BA=J.channelId,tA=J.renditionId,z=this.modules.sync.processFragment(BA,J.payload);if(this.modules.incomingData.add(w,J.payload.rawBytes().byteLength),z.fragment().emsgs.forEach(L=>{if(!L.presentationTime)return;const AA=pE(L.data);AA&&this.modules.event.addEvent({id:L.id,timestamp:L.presentationTime/L.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:AA.txx.value,type:"metadata"})}),this.modules.decoder){const L=(O=z.header().init().moov.traks[0])==null?void 0:O.mdia.minf.stbl.stsd,AA=(N=L==null?void 0:L.avc1)==null?void 0:N.avcC.bytes,X=(x=L==null?void 0:L.codec)!=null?x:"h264";if(AA){const UA=AA.buffer.slice(AA.byteOffset,AA.byteOffset+AA.byteLength);if(w==="text")throw new Error("Subtitles are not supported");this.emitter.emit("init segment",{initSegment:{channelId:BA,renditionId:tA,data:UA,timescale:1e3,type:w,codec:X},mimeType:w})}for(let UA=0;UA<z.samplesCount();UA++){const sA=z.sample(UA);sA&&this.emitter.emit("coded sample",K(h({},sA),{renditionId:tA,channelId:BA,data:sA.data.buffer.slice(sA.data.byteOffset,sA.data.byteOffset+sA.data.byteLength)}))}}else this.emitter.emit("fragment",{fragment:z,channelId:BA})});const kA=this.options.get("container");kA&&this.attach(kA),this.logger.info("Created Vindral instance",{options:this.options});const fe=J=>r(this,null,function*(){const w=J.channelId;U(this,$t)&&(yield U(this,$t));const BA=this.modules.renditions.getRendition(J.renditionId,w);if(!Og(J.flags)){if(zg(J.flags)){const z=new TextDecoder().decode(J.payload),O=this.modules.sync.getTimeshiftOffset();if(J.renditionId!==0){const N=Io(z);if(N&&N.language!==void 0){const L=new nl().parse(N.content||""),AA=O/1e3,X=U(this,OA).find(sA=>sA.language===N.language),UA=AA-U(this,_t);if(l(this,_t,AA),X){if(X.cues)for(const sA of X.cues)sA.startTime-=UA,sA.endTime-=UA;for(const sA of L){const vA=new VTTCue(sA.startTime-AA,sA.endTime-AA,sA.text);X.addCue(vA)}}}}else this.modules.event.addEvent({timestamp:J.timestamp/J.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:z,type:"metadata"})}else if(BA!=null&&BA.codec){const tA=R(BA.codec);if(tA==="text")throw new Error("Subtitles are not supported");if(this.modules.incomingData.add(tA,J.payload.byteLength),Kg(J.flags)){const z=K(h({type:tA,data:J.payload,codec:BA.codec},J),{channelId:w}),O=vg(z.codec,z.payload);O&&this.sizes.set(z.renditionId,O);const N=KQ({codec:BA.codec,codecString:BA.codecString});this.emitter.emit("init segment",{initSegment:z,mimeType:N}),this.emit("initialized media")}else{const z=MI(J,BA,this.sizes.get(J.renditionId));let O=this.sampleProcessingSesssions.get(tA);if(!O)O=GI(this.modules.sync.processSample(z)),this.sampleProcessingSesssions.set(tA,O);else{const N=O(this.modules.sync.processSample(z),this.isSwitchingRenditionLevel&&z.type==="video");let x=z;N.forEach(L=>{this.modules.event.extractEvent(L,x),this.emitter.emit("coded sample",L),x=L})}}}}});this.options.get("maxVideoBitRate")!==Number.MAX_SAFE_INTEGER&&(this.maxVideoBitRate=this.options.get("maxVideoBitRate")),this.options.get("maxAudioBitRate")!==Number.MAX_SAFE_INTEGER&&(this.maxAudioBitRate=this.options.get("maxAudioBitRate")),Zt(this.options.get("maxSize"),hF())||(this.maxSize=this.options.get("maxSize")),this.options.get("burstEnabled")&&d.enableBurst(this.targetBufferTime)}set volume(e){this.playbackSource.volume=e}get volume(){return this.playbackSource.volume}set muted(e){if(e===this.muted)return;const t=this.playbackSource.muted;this.playbackSource.muted=e,!e&&t&&!this.playbackSource.isPaused&&this.playbackSource.play()}get muted(){return this.playbackSource.muted}get media(){return this.options.get("media")}get videoBitRate(){return this.modules.incomingData.averageBitRate("video")}get audioBitRate(){return this.modules.incomingData.averageBitRate("audio")}get connectionState(){return this.modules.connection.getState()}get playbackState(){return this.modules.playback.getState()}get bufferFullness(){return this.modules.playback.getBufferFullness()}get sizeBasedResolutionCapEnabled(){return this.modules.constraintCap.sizeBasedResolutionCapEnabled}set sizeBasedResolutionCapEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e}get abrEnabled(){return this.modules.adaptivity.isEnabled}set abrEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e?this.options.get("sizeBasedResolutionCapEnabled"):!1,this.modules.adaptivity.isEnabled=e,this.alignSizeAndBitRate(this.targetSubscription)}get serverEdgeTime(){return this.modules.sync.getLiveEdgeTimeLatencyAdjusted(this.currentSubscription.channelId)}get serverWallclockTime(){return this.modules.sync.getWallclockTimeLatencyAdjusted(this.currentSubscription.channelId)}get currentTime(){return this.modules.sync.serverCurrentTime}get channelCurrentTime(){return this.modules.sync.channelCurrentTime}get targetBufferTime(){return this.modules.playback.getTargetBufferTime()}set targetBufferTime(e){this.modules.playback.getTargetBufferTime()!==e&&(this.modules.playback.setTargetBufferTime(e),this.playbackSource.currentTime=this.modules.sync.serverCurrentTime,this.options.get("burstEnabled",this.channelId)?this.modules.subscription.enableBurst(this.targetBufferTime):this.modules.subscription.enableBurst(0))}get playbackLatency(){var e;if(this.playbackSource.currentTime!==0)return this.targetBufferTime+((e=this.modules.sync.drift)!=null?e:0)+this.modules.connection.rtt/2}get playbackWallclockTime(){if(!(!this.serverWallclockTime||!this.playbackLatency))return this.serverWallclockTime-this.playbackLatency}get channels(){return this._channels}get languages(){return this.modules.renditions.getLanguages()}get language(){return this.modules.subscription.getTargetSubscription().audio.language}set language(e){this.modules.subscription.setLanguage(e)}set textTrack(e){U(this,OA).forEach(t=>{t.label===e?t.mode="showing":t.mode="hidden"}),this.emitter.emit("text track",e)}get textTracks(){return U(this,OA).filter(e=>e.mode!=="disabled").map(e=>e.label)}get textTrack(){var e;return(e=U(this,OA).find(t=>t.mode==="showing"))==null?void 0:e.label}get channelId(){var e,t;return(t=(e=this.modules)==null?void 0:e.subscription.getTargetSubscription().channelId)!=null?t:this.options.get("channelId")}set channelId(e){if(e===this.channelId)return;this.modules.subscription.setChannelId(e);const t=this.options.get("media")==="audio"?[]:this.options.get("videoCodecs"),B=this.modules.renditions.getAudioRenditions(e),F=this.modules.renditions.getVideoRenditions(e),n=this.targetSubscription.audio.language,s=B==null?void 0:B.some(d=>d.language===n),a=t.find(d=>(F==null?void 0:F.find(E=>E.codec===d))!==void 0);a&&this.modules.subscription.setVideoCodec(a),this.logger.debug("Channel switch - started",{audioRenditions:B,targetSubscriptionLanguage:n,targetHasCurrentLanguage:s}),this.alignSizeAndBitRate(this.targetSubscription)}get maxSize(){var B,F;const{width:e,height:t}=(F=(B=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:B.video)!=null?F:hF();return{width:e,height:t}}set maxSize(e){this.modules.constraintCap.setUserSpecifiedCap({video:{width:e.width,height:e.height}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxVideoBitRate(){var e,t;return(t=(e=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:e.video.bitRate)!=null?t:tt()}set maxVideoBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({video:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxAudioBitRate(){var e,t;return(t=(e=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:e.audio.bitRate)!=null?t:tt()}set maxAudioBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({audio:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get renditionLevels(){return this.modules.renditions.getRenditionLevels()}get currentRenditionLevel(){return this.modules.renditions.getRenditionLevel()}get targetRenditionLevel(){return this.modules.renditions.getRenditionLevel(this.modules.subscription.getTargetSubscription())}get isSwitchingRenditionLevel(){return this.modules.subscription.isSwitchingSubscription()}get videoBufferedRanges(){var e,t,B,F;return(F=(B=(e=this.modules.mseModule)==null?void 0:e.getBuffer("video"))!=null?B:(t=this.modules.decoder)==null?void 0:t.getBuffer("video"))!=null?F:[]}get audioBufferedRanges(){var e,t,B,F;return(F=(B=(e=this.modules.mseModule)==null?void 0:e.getBuffer("audio"))!=null?B:(t=this.modules.decoder)==null?void 0:t.getBuffer("audio"))!=null?F:[]}getApiClient(){return this.modules.connection.apiClient}get lastBufferEvent(){return this.modules.playback.getLastBufferStateEvent()}get activeRatios(){return this.modules.qualityOfService.activeRatios()}get bufferingRatios(){return this.modules.qualityOfService.bufferingRatios()}get timeSpentBuffering(){return this.modules.qualityOfService.timeSpentBuffering()}get timeActive(){return this.modules.qualityOfService.timeActive()}get mediaElement(){return this.element}get audioNode(){var e;return(e=this.modules)!=null&&e.canvasModule?this.modules.canvasModule.audioNode:void 0}get drmStatistics(){var e;return(e=this.encryptedMediaExtensions)==null?void 0:e.getStatistics()}get uptime(){return Date.now()-this.createdAt}suspend(){this.isSuspended||(Object.values(this.modules).forEach(e=>{e&&"suspend"in e&&e.suspend()}),this.isSuspended=!0)}unsuspend(){this.isSuspended&&(Object.values(this.modules).forEach(e=>{e&&"unsuspend"in e&&e.unsuspend()}),this.isSuspended=!1)}alignSizeAndBitRate(e){const t=this.modules.constraintCap.constrainSubscription(K(h({},e),{video:h({},e.video),audio:h({},e.audio)})),B=this.modules.constraintCap.getUserSpecifiedCap();!this.abrEnabled&&B&&(t.audio.bitRate=B.audio.bitRate,t.video.bitRate=B.video.bitRate,t.video.width=B.video.width,t.video.height=B.video.height);const F=this.modules.renditions.getRenditionLevel(t);if(F){if(F.video&&(this.modules.subscription.setVideoBitRate(F.video.bitRate),this.modules.subscription.setSize(F.video)),F.audio)this.modules.subscription.setAudioBitRate(F.audio.bitRate),this.modules.subscription.setLanguage(F.audio.language);else if(t.audio.language){let n=this.modules.renditions.getAudioRenditions(t.channelId);!this.abrEnabled&&B&&(n=n==null?void 0:n.filter(g=>g.bitRate<B.audio.bitRate));const s=t.audio.language,a=n==null?void 0:n.some(g=>g.language===s),d=n==null?void 0:n.find(g=>g.language),E=(n==null?void 0:n.length)&&n[0]||void 0;a||(d?(this.logger.debug("Randomizing language since target did not have current language"),this.modules.subscription.setAudioBitRate(d.bitRate),this.modules.subscription.setLanguage(d.language)):(this.logger.debug("Randomizing audio rendition since target did not have current language"),E!=null&&E.bitRate&&this.modules.subscription.setAudioBitRate(E.bitRate),this.modules.subscription.setLanguage(E==null?void 0:E.language)))}}}get currentSubscription(){return this.modules.subscription.getCurrentSubscription()}get targetSubscription(){return this.modules.subscription.getTargetSubscription()}willUseMediaSource(){return this.browser.supportsMediaSource&&this.options.get("mseEnabled")}};_t=new WeakMap,OA=new WeakMap,$t=new WeakMap,i(Qe,"MAX_POOL_SIZE",10),i(Qe,"INITIAL_MAX_BIT_RATE",2.5*1e3*1e3),i(Qe,"DISCONNECT_TIMEOUT",15*1e3),i(Qe,"REMOVE_CUE_THRESHOLD",1e3*10);let PF=Qe;const jF={buffering:"_buffering_1ccif_1","buffering-fullscreen":"_buffering-fullscreen_1ccif_16",hidden:"_hidden_1ccif_25","buffering-indicator":"_buffering-indicator_1ccif_31",scaleout:"_scaleout_1ccif_1"};class Ae{constructor(A){i(this,"attach",A=>{this.detach(),A.appendChild(this.element)});i(this,"attachBefore",(A,e)=>{this.detach(),A.insertBefore(this.element,e)});i(this,"detach",()=>this.element.remove());this.element=A}}const aa=jF.hidden,HI=jF.buffering,kl=jF["buffering-fullscreen"],YI=jF["buffering-indicator"];class Nl extends Ae{constructor(){super(document.createElement("div"));i(this,"indicator",document.createElement("div"));i(this,"isHidden",()=>this.element.classList.contains(aa));i(this,"setHidden",e=>e?this.hide():this.show());i(this,"hide",()=>this.element.classList.add(aa));i(this,"show",()=>this.element.classList.remove(aa));i(this,"fullscreen",e=>{e?this.element.classList.add(kl):this.element.classList.remove(kl)});this.element.className=HI,this.indicator.className=YI,this.element.appendChild(this.indicator)}}class ml extends $A{constructor(e){super();i(this,"config");i(this,"hlsUrl");i(this,"element");i(this,"connectingTimeout");i(this,"updateAuthenticationToken",e=>{});i(this,"unload",()=>{this.element&&(this.element.removeEventListener("webkitplaybacktargetavailabilitychanged",this.onAirPlayAvailable),this.element.removeEventListener("webkitcurrentplaybacktargetiswirelesschanged",this.onAirPlayPlaybackChanged),this.element.remove())});i(this,"onAirPlayAvailable",e=>{switch(e.availability){case"available":{this.element.src!==this.hlsUrl&&this.checkHlsUrl(this.hlsUrl).then(B=>{B&&(this.element.src=this.hlsUrl,this.emit("available"))});break}}});i(this,"onAirPlayPlaybackChanged",()=>{window.clearTimeout(this.connectingTimeout),this.element.webkitCurrentPlaybackTargetIsWireless?(this.emit("connected"),this.element.style.display="block",this.element.paused&&this.element.play()):(this.emit("disconnected"),this.element.pause(),this.element.src="",this.element.src=this.hlsUrl,this.element.style.display="none")});this.hlsUrl=new URL(`/api/hls?channelId=${e.channelId}`,e.url).toString(),this.config=e,this.element=document.createElement("video"),this.element.style.position="absolute",this.element.style.top="0",this.element.style.bottom="0",this.element.style.left="0",this.element.style.right="0",this.element.style.width="100%",this.element.style.height="100%",this.element.style.zIndex="1001",this.element.style.display="none",this.element.id="vindral-airplay-element",this.element.playsInline=!0,this.element.controls=!0,this.element.preload="metadata",this.element.addEventListener("webkitplaybacktargetavailabilitychanged",this.onAirPlayAvailable),this.element.addEventListener("webkitcurrentplaybacktargetiswirelesschanged",this.onAirPlayPlaybackChanged),this.config.container.appendChild(this.element)}get casting(){return this.element.webkitCurrentPlaybackTargetIsWireless}set channelId(e){}showPlaybackTargetPicker(){this.element.paused&&(this.element.play(),this.connectingTimeout=window.setTimeout(()=>{this.element.webkitCurrentPlaybackTargetIsWireless||(this.element.pause(),this.element.src="",this.element.src=this.hlsUrl)},3e4)),this.element.webkitShowPlaybackTargetPicker()}static isAirPlaySupported(){return!!window.WebKitPlaybackTargetAvailabilityEvent}checkHlsUrl(e){return r(this,null,function*(){try{return(yield fetch(e,{method:"HEAD"})).ok}catch(t){return!1}})}}const Wl={bar:"_bar_zames_1",hidden:"_hidden_zames_45"},hB={"channel-selection-item":"_channel-selection-item_suenn_1","channel-selection-item-selected":"_channel-selection-item-selected_suenn_8","channel-selection-item-image":"_channel-selection-item-image_suenn_13",withThumbnails:"_withThumbnails_suenn_19","hide-on-small":"_hide-on-small_suenn_27"},xI={"icon-button":"_icon-button_5fg7v_1"},pl={enter:{viewBox:"-12 -12 38 38",content:`<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-5.000000, -5.000000)">
|
|
50
50
|
<path d="M6,14 C5.45,14 5,14.45 5,15 L5,18 C5,18.55 5.45,19 6,19 L9,19 C9.55,19 10,18.55 10,18 C10,17.45 9.55,17 9,17 L7,17 L7,15 C7,14.45 6.55,14 6,14 Z M6,10 C6.55,10 7,9.55 7,9 L7,7 L9,7 C9.55,7 10,6.55 10,6 C10,5.45 9.55,5 9,5 L6,5 C5.45,5 5,5.45 5,6 L5,9 C5,9.55 5.45,10 6,10 Z M17,17 L15,17 C14.45,17 14,17.45 14,18 C14,18.55 14.45,19 15,19 L18,19 C18.55,19 19,18.55 19,18 L19,15 C19,14.45 18.55,14 18,14 C17.45,14 17,14.45 17,15 L17,17 Z M14,6 C14,6.55 14.45,7 15,7 L17,7 L17,9 C17,9.55 17.45,10 18,10 C18.55,10 19,9.55 19,9 L19,6 C19,5.45 18.55,5 18,5 L15,5 C14.45,5 14,5.45 14,6 Z" fill="white"></path>
|
|
51
51
|
</g>`},exit:{viewBox:"-12 -12 38 38",content:`<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-5.000000, -5.000000)">
|
|
52
52
|
<path d="M6,16 L8,16 L8,18 C8,18.55 8.45,19 9,19 C9.55,19 10,18.55 10,18 L10,15 C10,14.45 9.55,14 9,14 L6,14 C5.45,14 5,14.45 5,15 C5,15.55 5.45,16 6,16 Z M8,8 L6,8 C5.45,8 5,8.45 5,9 C5,9.55 5.45,10 6,10 L9,10 C9.55,10 10,9.55 10,9 L10,6 C10,5.45 9.55,5 9,5 C8.45,5 8,5.45 8,6 L8,8 Z M15,19 C15.55,19 16,18.55 16,18 L16,16 L18,16 C18.55,16 19,15.55 19,15 C19,14.45 18.55,14 18,14 L15,14 C14.45,14 14,14.45 14,15 L14,18 C14,18.55 14.45,19 15,19 Z M16,8 L16,6 C16,5.45 15.55,5 15,5 C14.45,5 14,5.45 14,6 L14,9 C14,9.55 14.45,10 15,10 L18,10 C18.55,10 19,9.55 19,9 C19,8.45 18.55,8 18,8 L16,8 Z" fill="white"></path>
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "4.0.0-
|
|
2
|
+
"version": "4.0.0-107-gcc4e82db",
|
|
3
3
|
"name": "@vindral/web-sdk",
|
|
4
4
|
"main": "./legacy.umd.js",
|
|
5
5
|
"module": "./legacy.es.js",
|
|
@@ -26,6 +26,10 @@
|
|
|
26
26
|
"types": "./cast-sender.d.ts",
|
|
27
27
|
"default": "./cast-sender.js"
|
|
28
28
|
},
|
|
29
|
+
"./react": {
|
|
30
|
+
"types": "./react.d.ts",
|
|
31
|
+
"default": "./react.js"
|
|
32
|
+
},
|
|
29
33
|
"./style.css": "./style.css"
|
|
30
34
|
},
|
|
31
35
|
"homepage": "https://vindral.com",
|
package/player.d.ts
CHANGED
|
@@ -1395,13 +1395,22 @@ export declare class AirPlayButton extends VindralButton {
|
|
|
1395
1395
|
get isAirPlaying(): boolean;
|
|
1396
1396
|
protected handleClick(_: Event): void;
|
|
1397
1397
|
}
|
|
1398
|
-
|
|
1398
|
+
declare class BufferingIcon extends HTMLElement {
|
|
1399
1399
|
#private;
|
|
1400
1400
|
static observedAttributes: "buffering"[];
|
|
1401
1401
|
constructor();
|
|
1402
1402
|
connectedCallback(): void;
|
|
1403
1403
|
disconnectedCallback(): void;
|
|
1404
1404
|
}
|
|
1405
|
+
export declare class BufferingOverlay extends HTMLElement {
|
|
1406
|
+
#private;
|
|
1407
|
+
static observedAttributes: readonly [
|
|
1408
|
+
"buffering"
|
|
1409
|
+
];
|
|
1410
|
+
constructor();
|
|
1411
|
+
connectedCallback(): void;
|
|
1412
|
+
disconnectedCallback(): void;
|
|
1413
|
+
}
|
|
1405
1414
|
export declare class CastButton extends VindralButton {
|
|
1406
1415
|
#private;
|
|
1407
1416
|
static observedAttributes: string[];
|
|
@@ -1416,7 +1425,10 @@ export declare class CastButton extends VindralButton {
|
|
|
1416
1425
|
type CastOverlayAttributes = (typeof CastOverlay.observedAttributes)[number];
|
|
1417
1426
|
export declare class CastOverlay extends HTMLElement {
|
|
1418
1427
|
#private;
|
|
1419
|
-
static observedAttributes:
|
|
1428
|
+
static observedAttributes: readonly [
|
|
1429
|
+
"is-casting",
|
|
1430
|
+
"cast-receiver-name"
|
|
1431
|
+
];
|
|
1420
1432
|
constructor();
|
|
1421
1433
|
connectedCallback(): void;
|
|
1422
1434
|
disconnectedCallback(): void;
|
|
@@ -1424,7 +1436,13 @@ export declare class CastOverlay extends HTMLElement {
|
|
|
1424
1436
|
}
|
|
1425
1437
|
export declare class ChannelGrid extends HTMLElement {
|
|
1426
1438
|
#private;
|
|
1427
|
-
static observedAttributes:
|
|
1439
|
+
static observedAttributes: readonly [
|
|
1440
|
+
"channels",
|
|
1441
|
+
"channel-id",
|
|
1442
|
+
"authentication-token",
|
|
1443
|
+
"mode",
|
|
1444
|
+
"hidden"
|
|
1445
|
+
];
|
|
1428
1446
|
constructor();
|
|
1429
1447
|
connectedCallback(): void;
|
|
1430
1448
|
disconnectedCallback(): void;
|
|
@@ -1447,7 +1465,13 @@ export declare class ChannelGridButton extends VindralButton {
|
|
|
1447
1465
|
export declare class ChannelGridItem extends HTMLElement {
|
|
1448
1466
|
#private;
|
|
1449
1467
|
lastThumbnailUpdate?: number;
|
|
1450
|
-
static observedAttributes:
|
|
1468
|
+
static observedAttributes: readonly [
|
|
1469
|
+
"url",
|
|
1470
|
+
"title",
|
|
1471
|
+
"offline",
|
|
1472
|
+
"authentication-token",
|
|
1473
|
+
"visible"
|
|
1474
|
+
];
|
|
1451
1475
|
constructor();
|
|
1452
1476
|
attributeChangedCallback(name: string, old: string, value: string): void;
|
|
1453
1477
|
updateThumbnail(): void;
|
|
@@ -1576,7 +1600,7 @@ export declare class PlayButton extends VindralButton {
|
|
|
1576
1600
|
}
|
|
1577
1601
|
export declare class Player extends HTMLElement {
|
|
1578
1602
|
#private;
|
|
1579
|
-
static observedAttributes: ("title" | "poster" | "language" | "channels" | "buffering" | "paused" | "volume" | "muted" | "user-interacting" | "is-casting" | "cast-available" | "cast-receiver-name" | "ui-locked" | "hide-ui-on-pause" | "is-fullscreen" | "is-fullscreen-fallback" | "rendition-levels" | "rendition-level" | "max-video-bit-rate" | "channel-id" | "channel-group-id" | "pip-available" | "is-pip" | "airplay-available" | "is-airplaying" | "media" | "languages" | "text-tracks" | "text-track" | "needs-user-input" | "authentication-token" | "volume-level" | "cast" | "airplay" | "pip" | "fullscreen" | "vu-meter" | "poster-src" | "url" | "advanced" | "offline" | "edge-url" | "target-buffer-time" | "cast-receiver-id" | "cast-background" | "log-level" | "max-size" | "min-buffer-time" | "max-buffer-time" | "max-audio-bit-rate" | "burst-enabled" | "mse-enabled" | "mse-opus-enabled" | "ios-background-play-enabled" | "ios-wake-lock-enabled" | "ios-media-element-enabled" | "abr-enabled" | "size-based-resolution-cap-enabled" | "telemetry-enabled" | "video-codecs" | "drm-headers" | "drm-queryparams" | "webtransport-enabled" | "reconnect-retries" | "auto-instance-enabled" | "refresh-poster-enabled" | "stream-poll-enabled")[];
|
|
1603
|
+
static observedAttributes: readonly ("title" | "poster" | "language" | "channels" | "buffering" | "paused" | "volume" | "muted" | "user-interacting" | "is-casting" | "cast-available" | "cast-receiver-name" | "ui-locked" | "hide-ui-on-pause" | "is-fullscreen" | "is-fullscreen-fallback" | "rendition-levels" | "rendition-level" | "max-video-bit-rate" | "channel-id" | "channel-group-id" | "pip-available" | "is-pip" | "airplay-available" | "is-airplaying" | "media" | "languages" | "text-tracks" | "text-track" | "needs-user-input" | "authentication-token" | "volume-level" | "cast" | "airplay" | "pip" | "fullscreen" | "vu-meter" | "poster-src" | "url" | "advanced" | "offline" | "edge-url" | "target-buffer-time" | "cast-receiver-id" | "cast-background" | "log-level" | "max-size" | "min-buffer-time" | "max-buffer-time" | "max-audio-bit-rate" | "burst-enabled" | "mse-enabled" | "mse-opus-enabled" | "ios-background-play-enabled" | "ios-wake-lock-enabled" | "ios-media-element-enabled" | "abr-enabled" | "size-based-resolution-cap-enabled" | "telemetry-enabled" | "video-codecs" | "drm-headers" | "drm-queryparams" | "webtransport-enabled" | "reconnect-retries" | "auto-instance-enabled" | "refresh-poster-enabled" | "stream-poll-enabled")[];
|
|
1580
1604
|
constructor();
|
|
1581
1605
|
connectedCallback(): void;
|
|
1582
1606
|
disconnectedCallback(): void;
|
|
@@ -1586,7 +1610,12 @@ export declare class Player extends HTMLElement {
|
|
|
1586
1610
|
type PosterOverlayAttributes = (typeof PosterOverlay.observedAttributes)[number];
|
|
1587
1611
|
export declare class PosterOverlay extends HTMLElement {
|
|
1588
1612
|
#private;
|
|
1589
|
-
static observedAttributes:
|
|
1613
|
+
static observedAttributes: readonly [
|
|
1614
|
+
"poster-src",
|
|
1615
|
+
"paused",
|
|
1616
|
+
"disabled",
|
|
1617
|
+
"intersecting"
|
|
1618
|
+
];
|
|
1590
1619
|
constructor();
|
|
1591
1620
|
connectedCallback(): void;
|
|
1592
1621
|
disconnectedCallback(): void;
|
|
@@ -1618,7 +1647,11 @@ export declare class RenditionLevelsMenuList extends HTMLElement {
|
|
|
1618
1647
|
}
|
|
1619
1648
|
export declare class ScrollOverlay extends HTMLElement {
|
|
1620
1649
|
#private;
|
|
1621
|
-
static observedAttributes:
|
|
1650
|
+
static observedAttributes: readonly [
|
|
1651
|
+
"user-interacting",
|
|
1652
|
+
"open",
|
|
1653
|
+
"touch-enabled"
|
|
1654
|
+
];
|
|
1622
1655
|
constructor();
|
|
1623
1656
|
connectedCallback(): void;
|
|
1624
1657
|
disconnectedCallback(): void;
|
|
@@ -1629,58 +1662,51 @@ export declare class ScrollOverlay extends HTMLElement {
|
|
|
1629
1662
|
set visible(value: boolean);
|
|
1630
1663
|
get visible(): boolean;
|
|
1631
1664
|
}
|
|
1632
|
-
declare class
|
|
1665
|
+
declare class VindralPlayOverlay extends HTMLElement {
|
|
1633
1666
|
#private;
|
|
1634
1667
|
static observedAttributes: string[];
|
|
1635
|
-
range: HTMLInputElement;
|
|
1636
1668
|
constructor();
|
|
1637
1669
|
connectedCallback(): void;
|
|
1638
1670
|
disconnectedCallback(): void;
|
|
1639
|
-
attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
|
|
1640
|
-
enable(): void;
|
|
1641
|
-
disable(): void;
|
|
1642
|
-
handleEvent(event: Event): void;
|
|
1643
|
-
updateBar(): void;
|
|
1644
|
-
get keysUsed(): string[];
|
|
1645
1671
|
}
|
|
1646
|
-
|
|
1672
|
+
declare class VindralUserInputPlayOverlay extends VindralPlayOverlay {
|
|
1647
1673
|
#private;
|
|
1648
1674
|
static observedAttributes: string[];
|
|
1649
1675
|
constructor();
|
|
1650
1676
|
connectedCallback(): void;
|
|
1651
1677
|
disconnectedCallback(): void;
|
|
1652
|
-
attributeChangedCallback(name: string, old: string, value: string): void;
|
|
1653
|
-
get volume(): string;
|
|
1654
|
-
get muted(): boolean;
|
|
1655
|
-
}
|
|
1656
|
-
declare class BufferingIcon extends HTMLElement {
|
|
1657
|
-
#private;
|
|
1658
|
-
static observedAttributes: "buffering"[];
|
|
1659
|
-
constructor();
|
|
1660
|
-
connectedCallback(): void;
|
|
1661
|
-
disconnectedCallback(): void;
|
|
1662
1678
|
}
|
|
1663
|
-
declare class
|
|
1679
|
+
declare class VindralMessage extends HTMLElement {
|
|
1664
1680
|
#private;
|
|
1665
1681
|
static observedAttributes: string[];
|
|
1666
1682
|
constructor();
|
|
1667
1683
|
connectedCallback(): void;
|
|
1668
1684
|
disconnectedCallback(): void;
|
|
1685
|
+
attributeChangedCallback(name: string, old: string, value: string): void;
|
|
1669
1686
|
}
|
|
1670
|
-
declare class
|
|
1687
|
+
declare class VindralRange extends HTMLElement {
|
|
1671
1688
|
#private;
|
|
1672
1689
|
static observedAttributes: string[];
|
|
1690
|
+
range: HTMLInputElement;
|
|
1673
1691
|
constructor();
|
|
1674
1692
|
connectedCallback(): void;
|
|
1675
1693
|
disconnectedCallback(): void;
|
|
1694
|
+
attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
|
|
1695
|
+
enable(): void;
|
|
1696
|
+
disable(): void;
|
|
1697
|
+
handleEvent(event: Event): void;
|
|
1698
|
+
updateBar(): void;
|
|
1699
|
+
get keysUsed(): string[];
|
|
1676
1700
|
}
|
|
1677
|
-
declare class
|
|
1701
|
+
export declare class VolumeRange extends VindralRange {
|
|
1678
1702
|
#private;
|
|
1679
1703
|
static observedAttributes: string[];
|
|
1680
1704
|
constructor();
|
|
1681
1705
|
connectedCallback(): void;
|
|
1682
1706
|
disconnectedCallback(): void;
|
|
1683
1707
|
attributeChangedCallback(name: string, old: string, value: string): void;
|
|
1708
|
+
get volume(): string;
|
|
1709
|
+
get muted(): boolean;
|
|
1684
1710
|
}
|
|
1685
1711
|
/**
|
|
1686
1712
|
* Register custom elements for the Vindral player
|