@mux/mux-video 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +3 -1
- package/dist/index.cjs.js.map +2 -2
- package/dist/index.mjs +3 -1
- package/dist/index.mjs.map +2 -2
- package/dist/mux-video.js +3 -1
- package/dist/mux-video.js.map +2 -2
- package/dist/mux-video.mjs +3 -1
- package/dist/mux-video.mjs.map +2 -2
- package/package.json +2 -2
package/dist/mux-video.mjs
CHANGED
|
@@ -26,7 +26,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
26
26
|
`,s.parse()),s.state==="INITIAL"||s.state==="BADWEBVTT")throw new Error("Malformed WebVTT signature.")}catch(e){s.onparsingerror&&s.onparsingerror(e)}return s.onflush&&s.onflush(),this},x}()},"./src/utils/webvtt-parser.ts":function(B,P,n){"use strict";n.r(P),n.d(P,"generateCueId",function(){return D}),n.d(P,"parseWebVTT",function(){return g});var R=n("./src/polyfills/number.ts"),m=n("./src/utils/vttparser.ts"),S=n("./src/demux/id3.ts"),I=n("./src/utils/timescale-conversion.ts"),T=n("./src/remux/mp4-remuxer.ts"),b=/\r\n|\n\r|\n|\r/g,_=function(s,e,o){return o===void 0&&(o=0),s.slice(o,o+e.length)===e},E=function(s){var e=parseInt(s.slice(-3)),o=parseInt(s.slice(-6,-4)),f=parseInt(s.slice(-9,-7)),a=s.length>9?parseInt(s.substring(0,s.indexOf(":"))):0;if(!Object(R.isFiniteNumber)(e)||!Object(R.isFiniteNumber)(o)||!Object(R.isFiniteNumber)(f)||!Object(R.isFiniteNumber)(a))throw Error("Malformed X-TIMESTAMP-MAP: Local:"+s);return e+=1e3*o,e+=60*1e3*f,e+=60*60*1e3*a,e},A=function(s){for(var e=5381,o=s.length;o;)e=e*33^s.charCodeAt(--o);return(e>>>0).toString()};function D(y,s,e){return A(y.toString())+A(s.toString())+A(e)}var x=function(s,e,o){var f=s[e],a=s[f.prevCC];if(!a||!a.new&&f.new){s.ccOffset=s.presentationOffset=f.start,f.new=!1;return}for(;(i=a)!==null&&i!==void 0&&i.new;){var i;s.ccOffset+=f.start-a.start,f.new=!1,f=a,a=s[f.prevCC]}s.presentationOffset=o};function g(y,s,e,o,f,a,i,t){var u=new m.VTTParser,c=Object(S.utf8ArrayToStr)(new Uint8Array(y)).trim().replace(b,`
|
|
27
27
|
`).split(`
|
|
28
28
|
`),r=[],h=Object(I.toMpegTsClockFromTimescale)(s,e),d="00:00.000",l=0,v=0,p,L=!0;u.oncue=function(O){var M=o[f],F=o.ccOffset,w=(l-h)/9e4;M!=null&&M.new&&(v!==void 0?F=o.ccOffset=M.start:x(o,f,w)),w&&(F=w-o.presentationOffset);var C=O.endTime-O.startTime,k=Object(T.normalizePts)((O.startTime+F-v)*9e4,a*9e4)/9e4;O.startTime=Math.max(k,0),O.endTime=Math.max(k+C,0);var U=O.text.trim();O.text=decodeURIComponent(encodeURIComponent(U)),O.id||(O.id=D(O.startTime,O.endTime,U)),O.endTime>0&&r.push(O)},u.onparsingerror=function(O){p=O},u.onflush=function(){if(p){t(p);return}i(r)},c.forEach(function(O){if(L)if(_(O,"X-TIMESTAMP-MAP=")){L=!1,O.slice(16).split(",").forEach(function(M){_(M,"LOCAL:")?d=M.slice(6):_(M,"MPEGTS:")&&(l=parseInt(M.slice(7)))});try{v=E(d)/1e3}catch(M){p=M}return}else O===""&&(L=!1);u.parse(O+`
|
|
29
|
-
`)}),u.flush()}},"./src/utils/xhr-loader.ts":function(B,P,n){"use strict";n.r(P);var R=n("./src/utils/logger.ts"),m=n("./src/loader/load-stats.ts"),S=/^age:\s*[\d.]+\s*$/m,I=function(){function T(_){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=void 0,this.loader=null,this.stats=void 0,this.xhrSetup=_?_.xhrSetup:null,this.stats=new m.LoadStats,this.retryDelay=0}var b=T.prototype;return b.destroy=function(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null},b.abortInternal=function(){var E=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),E&&(E.onreadystatechange=null,E.onprogress=null,E.readyState!==4&&(this.stats.aborted=!0,E.abort()))},b.abort=function(){var E;this.abortInternal(),(E=this.callbacks)!==null&&E!==void 0&&E.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)},b.load=function(E,A,D){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=E,this.config=A,this.callbacks=D,this.retryDelay=A.retryDelay,this.loadInternal()},b.loadInternal=function(){var E=this.config,A=this.context;if(!!E){var D=this.loader=new self.XMLHttpRequest,x=this.stats;x.loading.first=0,x.loaded=0;var g=this.xhrSetup;try{if(g)try{g(D,A.url)}catch{D.open("GET",A.url,!0),g(D,A.url)}D.readyState||D.open("GET",A.url,!0);var y=this.context.headers;if(y)for(var s in y)D.setRequestHeader(s,y[s])}catch(e){this.callbacks.onError({code:D.status,text:e.message},A,D);return}A.rangeEnd&&D.setRequestHeader("Range","bytes="+A.rangeStart+"-"+(A.rangeEnd-1)),D.onreadystatechange=this.readystatechange.bind(this),D.onprogress=this.loadprogress.bind(this),D.responseType=A.responseType,self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),E.timeout),D.send()}},b.readystatechange=function(){var E=this.context,A=this.loader,D=this.stats;if(!(!E||!A)){var x=A.readyState,g=this.config;if(!D.aborted&&x>=2)if(self.clearTimeout(this.requestTimeout),D.loading.first===0&&(D.loading.first=Math.max(self.performance.now(),D.loading.start)),x===4){A.onreadystatechange=null,A.onprogress=null;var y=A.status;if(y>=200&&y<300){D.loading.end=Math.max(self.performance.now(),D.loading.first);var s,e;if(E.responseType==="arraybuffer"?(s=A.response,e=s.byteLength):(s=A.responseText,e=s.length),D.loaded=D.total=e,!this.callbacks)return;var o=this.callbacks.onProgress;if(o&&o(D,E,s,A),!this.callbacks)return;var f={url:A.responseURL,data:s};this.callbacks.onSuccess(f,D,E,A)}else D.retry>=g.maxRetry||y>=400&&y<499?(R.logger.error(y+" while loading "+E.url),this.callbacks.onError({code:y,text:A.statusText},E,A)):(R.logger.warn(y+" while loading "+E.url+", retrying in "+this.retryDelay+"..."),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,g.maxRetryDelay),D.retry++)}else self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),g.timeout)}},b.loadtimeout=function(){R.logger.warn("timeout while loading "+this.context.url);var E=this.callbacks;E&&(this.abortInternal(),E.onTimeout(this.stats,this.context,this.loader))},b.loadprogress=function(E){var A=this.stats;A.loaded=E.loaded,E.lengthComputable&&(A.total=E.total)},b.getCacheAge=function(){var E=null;if(this.loader&&S.test(this.loader.getAllResponseHeaders())){var A=this.loader.getResponseHeader("age");E=A?parseFloat(A):null}return E},T}();P.default=I}}).default})});var Qe=class{addEventListener(){}removeEventListener(){}dispatchEvent(P){return!0}};if(typeof DocumentFragment=="undefined"){class B extends Qe{}globalThis.DocumentFragment=B}var st=class extends Qe{},Pt=class extends Qe{},wr={get(B){},define(B,P,n){},upgrade(B){},whenDefined(B){return Promise.resolve(st)}},ot,It=class{constructor(P,n={}){ve(this,ot,void 0);Pe(this,ot,n==null?void 0:n.detail)}get detail(){return ne(this,ot)}initCustomEvent(){}};ot=new WeakMap;function kr(B,P){return new st}var $t={document:{createElement:kr},DocumentFragment,customElements:wr,CustomEvent:It,EventTarget:Qe,HTMLElement:st,HTMLVideoElement:Pt},Jt=typeof window=="undefined"||typeof globalThis.customElements=="undefined",we=Jt?$t:globalThis,Mt=Jt?$t.document:globalThis.document;var jt=Et(Zt(),1),Ge=Et(St(),1),kt=Et(St(),1),$e=Et(St(),1),ut=class extends Error{constructor(B,P=ut.MEDIA_ERR_CUSTOM,n){var R;super(B),this.name="MediaError",this.code=P,this.fatal=n!=null?n:P>=ut.MEDIA_ERR_NETWORK&&P<=ut.MEDIA_ERR_ENCRYPTED,this.message||(this.message=(R=ut.defaultMessages[this.code])!=null?R:"")}},Fe=ut;Fe.MEDIA_ERR_ABORTED=1,Fe.MEDIA_ERR_NETWORK=2,Fe.MEDIA_ERR_DECODE=3,Fe.MEDIA_ERR_SRC_NOT_SUPPORTED=4,Fe.MEDIA_ERR_ENCRYPTED=5,Fe.MEDIA_ERR_CUSTOM=100,Fe.defaultMessages={1:"You aborted the media playback",2:"A network error caused the media download to fail.",3:"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.",4:"An unsupported error occurred. The server or network failed, or your browser does not support this format.",5:"The media is encrypted and there are no keys to decrypt it."};var nr=(B,P)=>B in P,Ut={ANY:"any",MUTED:"muted"},xt={VOD:"on-demand",ON_DEMAND:"on-demand",LIVE:"live",LL_LIVE:"ll-live",DVR:"live:dvr",LL_DVR:"ll-live:dvr"},He={MSE:"mse",NATIVE:"native"},Je={M3U8:"application/vnd.apple.mpegurl",MP4:"video/mp4"},Bt={HLS:Je.M3U8},ui=Object.keys(Bt),fi=[...Object.values(Je),"hls","HLS"],ft=(B,P,n,R)=>{B.addEventListener(P,n,R),B.addEventListener("teardown",()=>{B.removeEventListener(P,n)},{once:!0})};function Ur(B,P,n){P&&n>P&&(n=P);for(let R=0;R<B.length;R++)if(B.start(R)<=n&&B.end(R)>=n)return!0;return!1}var Br=B=>{let P=B.indexOf("?");if(P<0)return[B];let n=B.slice(0,P),R=B.slice(P);return[n,R]},ar=B=>{let P=B.type;if(P){let R=P.toUpperCase();return nr(R,Bt)?Bt[R]:P}let{src:n}=B;return n?Nr(n):""},Nr=B=>{let P="";try{P=new URL(B).pathname}catch{console.error("invalid url")}let n=P.lastIndexOf(".");if(n<0)return"";let R=P.slice(n+1).toUpperCase();return nr(R,Je)?Je[R]:""},jr=Object.values(Ut),qt=B=>typeof B=="boolean"||typeof B=="string"&&jr.includes(B),Kr=({autoplay:B},P,n)=>{if(!P)return()=>{};let R=!1,m=!1,S=qt(B)?B:!!B,I=()=>{R||ft(P,"playing",()=>{R=!0},{once:!0})};if(I(),ft(P,"loadstart",()=>{R=!1,I(),wt(P,S)},{once:!0}),ft(P,"loadstart",()=>{n||(m=!Number.isFinite(P.duration)),wt(P,S)},{once:!0}),n&&n.once(kt.default.Events.LEVEL_LOADED,(T,b)=>{var _;m=(_=b.details.live)!=null?_:!1}),!S){let T=()=>{!m||(n!=null&&n.liveSyncPosition?P.currentTime=n.liveSyncPosition:Number.isFinite(P.seekable.end(0))&&(P.currentTime=P.seekable.end(0)))};n&&ft(P,"play",()=>{P.preload==="metadata"?n.once(kt.default.Events.LEVEL_UPDATED,T):T()},{once:!0})}return T=>{R||(S=qt(T)?T:!!T,wt(P,S))}},wt=(B,P)=>{if(!P)return;let n=B.muted,R=()=>B.muted=n;switch(P){case Ut.ANY:B.play().catch(()=>{B.muted=!0,B.play().catch(R)});break;case Ut.MUTED:B.muted=!0,B.play().catch(R);break;default:B.play().catch(()=>{});break}},Wr=({preload:B,src:P},n,R)=>{if(!n)return()=>{};let m=A=>{A!=null&&["","none","metadata","auto"].includes(A)?n.setAttribute("preload",A):n.removeAttribute("preload")};if(!R)return m(B),m;let S=!1,I=!1,T=R.config.maxBufferLength,b=R.config.maxBufferSize,_=A=>{m(A);let D=A!=null?A:n.preload;I||D==="none"||(D==="metadata"?(R.config.maxBufferLength=1,R.config.maxBufferSize=1):(R.config.maxBufferLength=T,R.config.maxBufferSize=b),E())},E=()=>{!S&&P&&(S=!0,R.loadSource(P))};return ft(n,"play",()=>{I=!0,R.config.maxBufferLength=T,R.config.maxBufferSize=b,E()},{once:!0}),_(B),_};function Gr(B,P){P.on($e.default.Events.NON_NATIVE_TEXT_TRACKS_FOUND,(m,{tracks:S})=>{S.forEach(I=>{var T;let b=(T=I.subtitleTrack)!=null?T:I.closedCaptions,_=P.subtitleTracks.findIndex(({lang:E,name:A,type:D})=>E==(b==null?void 0:b.lang)&&A===I.label&&D.toLowerCase()===I.kind);Hr(B,I.kind,I.label,b==null?void 0:b.lang,`${I.kind}${_}`)})});let n=()=>{var m;if(!P.subtitleTracks.length)return;let S=Array.from(B.textTracks).find(T=>T.id&&T.mode==="showing"&&["subtitles","captions"].includes(T.kind)),I=`${(m=P.subtitleTracks[P.subtitleTrack])==null?void 0:m.type.toLowerCase()}${P.subtitleTrack}`;if(S&&(P.subtitleTrack<0||(S==null?void 0:S.id)!==I)){let T=P.subtitleTracks.findIndex(({lang:b,name:_,type:E})=>b==S.language&&_===S.label&&E.toLowerCase()===S.kind);P.subtitleTrack=T}S&&(S==null?void 0:S.id)===I&&S.cues&&Array.from(S.cues).forEach(T=>{S.addCue(T)})};B.textTracks.addEventListener("change",n),P.on($e.default.Events.CUES_PARSED,(m,{track:S,cues:I})=>{let T=B.textTracks.getTrackById(S);if(!T)return;let b=T.mode==="disabled";b&&(T.mode="hidden"),I.forEach(_=>{var E;(E=T.cues)!=null&&E.getCueById(_.id)||T.addCue(_)}),b&&(T.mode="disabled")}),P.once($e.default.Events.DESTROYING,()=>{B.textTracks.removeEventListener("change",n),B.querySelectorAll("track[data-removeondestroy]").forEach(m=>{m.remove()})});let R=()=>{Array.from(B.textTracks).forEach(m=>{var S,I;if(!["subtitles","caption"].includes(m.kind)&&m.label==="thumbnails"){if(!((S=m.cues)!=null&&S.length)){let T=B.querySelector('track[label="thumbnails"]'),b=(I=T==null?void 0:T.getAttribute("src"))!=null?I:"";T==null||T.removeAttribute("src"),setTimeout(()=>{T==null||T.setAttribute("src",b)},0)}m.mode!=="hidden"&&(m.mode="hidden")}})};P.once($e.default.Events.MANIFEST_LOADED,R),P.once($e.default.Events.MEDIA_ATTACHED,R)}function Hr(B,P,n,R,m){let S=document.createElement("track");return S.kind=P,S.label=n,R&&(S.srclang=R),m&&(S.id=m),S.track.mode="disabled",S.setAttribute("data-removeondestroy",""),B.append(S),S.track}var er,tr,Vr=(tr=(er=globalThis==null?void 0:globalThis.navigator)==null?void 0:er.userAgent)!=null?tr:"",Yr=Vr.toLowerCase().indexOf("android")!==-1,Ze=new WeakMap,sr="mux.com",rr,ir,or=(ir=(rr=Ge.default).isSupported)==null?void 0:ir.call(rr),zr=Yr,lr=()=>jt.default.utils.now(),ur=(B,{domain:P=sr}={})=>{if(!B)return;let[n,R=""]=Br(B);return`https://stream.${P}/${n}.m3u8${R}`},fr=B=>{var P;return(P=Ze.get(B))==null?void 0:P.error},dr=(B,P,n)=>{Kt(P,n),Ze.set(P,{});let R=Xr(B,P);Jr(B,P,R),Zr(B,P,R);let m=Kr(B,P,R),S=Wr(B,P,R);return{engine:R,setAutoplay:m,setPreload:S}},Kt=(B,P)=>{let n=P==null?void 0:P.engine;n&&(n.detachMedia(),n.destroy()),(B==null?void 0:B.mux)&&!B.mux.deleted&&(B.mux.destroy(),delete B.mux),B&&(B.removeAttribute("src"),B.load(),B.removeEventListener("error",vr),B.removeEventListener("error",Nt),B.removeEventListener("durationchange",hr),Ze.delete(B),B.dispatchEvent(new Event("teardown")))};function cr(B,P){var n;let R=ar(B);if(R!==Je.M3U8)return!0;let m=!R||((n=P==null?void 0:P.canPlayType(R))!=null?n:!0),{preferPlayback:S}=B,I=S===He.MSE,T=S===He.NATIVE;return m&&(T||!(or&&(I||zr)))}var Xr=(B,P)=>{let{debug:n,streamType:R,startTime:m=-1}=B,S=ar(B)===Je.M3U8,I=cr(B,P);if(S&&!I&&or){let T={backBufferLength:30,renderTextTracksNatively:!1,liveDurationInfinity:!0},b=Qr(R);return new Ge.default({debug:n,startPosition:m,...T,...b})}},Qr=B=>[xt.LIVE,xt.DVR].includes(B)?{backBufferLength:8}:[xt.LL_LIVE,xt.LL_DVR].includes(B)?{backBufferLength:4,maxFragLookUpTolerance:.001}:{},$r=({playbackId:B,src:P,customDomain:n})=>{if(B)return!0;if(typeof P!="string")return!1;let R=window==null?void 0:window.location.href,m=new URL(P,R).hostname.toLocaleLowerCase();return m.includes(sr)||!!n&&m.includes(n.toLocaleLowerCase())},Jr=(B,P,n)=>{let{envKey:R}=B,m=$r(B);if((R||m)&&P){let{playerInitTime:S,playerSoftwareName:I,playerSoftwareVersion:T,beaconCollectionDomain:b,metadata:_,debug:E}=B,A=D=>typeof D.player_error_code=="string"?!1:typeof B.errorTranslator=="function"?B.errorTranslator(D):D;jt.default.monitor(P,{debug:E,beaconCollectionDomain:b,hlsjs:n,Hls:n?Ge.default:void 0,automaticErrorTracking:!1,errorTranslator:A,data:{...R?{env_key:R}:{},player_software_name:I,player_software:I,player_software_version:T,player_init_time:S,..._}})}},Zr=(B,P,n)=>{var R;if(!P){console.warn("attempting to load media before mediaEl exists");return}let m=cr(B,P),{src:S}=B;P&&m?(typeof S=="string"?(P.setAttribute("src",S),B.startTime&&(((R=Ze.get(P))!=null?R:{}).startTime=B.startTime,P.addEventListener("durationchange",hr,{once:!0}))):P.removeAttribute("src"),P.addEventListener("error",vr),P.addEventListener("error",Nt)):n&&S?(n.on(Ge.default.Events.ERROR,(I,T)=>{let b={[Ge.default.ErrorTypes.NETWORK_ERROR]:Fe.MEDIA_ERR_NETWORK,[Ge.default.ErrorTypes.MEDIA_ERROR]:Fe.MEDIA_ERR_DECODE},_=new Fe("",b[T.type]);_.fatal=T.fatal,_.data=T,P.dispatchEvent(new CustomEvent("error",{detail:_}))}),P.addEventListener("error",Nt),Gr(P,n),n.attachMedia(P)):console.error("It looks like the video you're trying to play will not work on this system! If possible, try upgrading to the newest versions of your browser or software.")};function hr(B){var P;let n=B.target,R=(P=Ze.get(n))==null?void 0:P.startTime;if(!!R&&Ur(n.seekable,n.duration,R)){let m=n.preload==="auto";m&&(n.preload="none"),n.currentTime=R,m&&(n.preload="auto")}}async function vr(B){if(!B.isTrusted)return;B.stopImmediatePropagation();let P=B.target;if(!(P!=null&&P.error))return;let{message:n,code:R}=P.error,m=new Fe(n,R);if(P.src&&(R!==Fe.MEDIA_ERR_DECODE||R!==void 0))try{let{status:S}=await fetch(P.src);m.data={response:{code:S}}}catch{}P.dispatchEvent(new CustomEvent("error",{detail:m}))}function Nt(B){var P,n;if(!(B instanceof CustomEvent)||!(B.detail instanceof Fe))return;let R=B.target,m=B.detail;!m||!m.fatal||(((P=Ze.get(R))!=null?P:{}).error=m,(n=R.mux)==null||n.emit("error",{player_error_code:m.code,player_error_message:m.message}))}var qr=()=>{try{return"0.9.0"}catch{}return"UNKNOWN"},ei=qr(),gr=()=>ei;var ti=B=>{var P,n,R,m,S,mr,T,At,_,ke,A,Dt,x,_t,y,pr,e,yr,f,Wt,i,t,u,c,r,h,d,dt,v,Er,L,Gt,M,Tr,w,Ht,k,Sr,j,Vt;return P=class extends B{constructor(){super();ve(this,d);ve(this,v);ve(this,L);ve(this,M);ve(this,w);ve(this,k);ve(this,j);at(this,"castEnabled",!1);ve(this,i,{paused:!1});ve(this,t,void 0);ve(this,u,{});ve(this,c,void 0);ve(this,r,void 0);ve(this,h,void 0);P.instances.add(this),Oe(this,w,Ht).call(this)}static get castElement(){return ne(P,n)}static get castEnabled(){return ne(P,R)}static get castState(){var K;return(K=ne(P,_,ke))==null?void 0:K.getCastState()}static async exitCast(){try{await ne(P,_,ke).endCurrentSession(!0)}catch(H){console.error(H);return}}get castPlayer(){if(P.castElement===this)return ne(this,t)}attributeChangedCallback(K){if(!!this.castPlayer)switch(K){case"cast-stream-type":case"cast-src":this.load();break}}async requestCast(K={}){var H;Oe(H=P,f,Wt).call(H,K),Pe(P,n,this),Object.entries(ne(this,u)).forEach(([z,$])=>{ne(this,t).controller.addEventListener(z,$)});try{await ne(P,_,ke).requestSession()}catch{Pe(P,n,void 0);return}ne(this,i).paused=super.paused,super.pause(),this.muted=super.muted;try{await this.load()}catch(z){console.error(z)}}async load(){var J,te;if(!this.castPlayer)return super.load();let K=new chrome.cast.media.MediaInfo(this.castSrc,this.castContentType),H=[...this.querySelectorAll("track")].filter(({kind:Q,src:ae})=>ae&&(Q==="subtitles"||Q==="captions")),z=[],$=0;H.length&&(K.tracks=H.map(Q=>{let ae=++$;z.length===0&&Q.track.mode==="showing"&&z.push(ae);let se=new chrome.cast.media.Track(ae,chrome.cast.media.TrackType.TEXT);return se.trackContentId=Q.src,se.trackContentType="text/vtt",se.subtype=Q.kind==="captions"?chrome.cast.media.TextTrackType.CAPTIONS:chrome.cast.media.TextTrackType.SUBTITLES,se.name=Q.label,se.language=Q.srclang,se})),this.castStreamType==="live"?K.streamType=chrome.cast.media.StreamType.LIVE:K.streamType=chrome.cast.media.StreamType.BUFFERED,K.metadata=new chrome.cast.media.GenericMediaMetadata,K.metadata.title=this.title,K.metadata.images=[{url:this.poster}];let X=new chrome.cast.media.LoadRequest(K);X.currentTime=(J=super.currentTime)!=null?J:0,X.autoplay=!ne(this,i).paused,X.activeTrackIds=z,await((te=ne(P,A,Dt))==null?void 0:te.loadMedia(X)),this.dispatchEvent(new Event("volumechange"))}play(){var K;if(this.castPlayer){this.castPlayer.isPaused&&((K=this.castPlayer.controller)==null||K.playOrPause());return}return super.play()}pause(){var K;if(this.castPlayer){this.castPlayer.isPaused||(K=this.castPlayer.controller)==null||K.playOrPause();return}super.pause()}get castSrc(){var K,H,z;return(z=(H=this.getAttribute("cast-src"))!=null?H:(K=this.querySelector("source"))==null?void 0:K.src)!=null?z:this.currentSrc}set castSrc(K){this.castSrc!=K&&this.setAttribute("cast-src",`${K}`)}get castContentType(){var K;return(K=this.getAttribute("cast-content-type"))!=null?K:void 0}set castContentType(K){this.setAttribute("cast-content-type",`${K}`)}get castStreamType(){var K;return(K=this.getAttribute("cast-stream-type"))!=null?K:void 0}set castStreamType(K){this.setAttribute("cast-stream-type",`${K}`)}get readyState(){if(this.castPlayer)switch(this.castPlayer.playerState){case chrome.cast.media.PlayerState.IDLE:return 0;case chrome.cast.media.PlayerState.BUFFERING:return 2;default:return 3}return super.readyState}get paused(){return this.castPlayer?this.castPlayer.isPaused:super.paused}get muted(){var K;return this.castPlayer?(K=this.castPlayer)==null?void 0:K.isMuted:super.muted}set muted(K){var H;if(this.castPlayer){(K&&!this.castPlayer.isMuted||!K&&this.castPlayer.isMuted)&&((H=this.castPlayer.controller)==null||H.muteOrUnmute());return}super.muted=K}get volume(){var K,H;return this.castPlayer?(H=(K=this.castPlayer)==null?void 0:K.volumeLevel)!=null?H:1:super.volume}set volume(K){var H;if(this.castPlayer){this.castPlayer.volumeLevel=K,(H=this.castPlayer.controller)==null||H.setVolumeLevel();return}super.volume=K}get duration(){var K,H;return this.castPlayer&&ne(this,d,dt)?(H=(K=this.castPlayer)==null?void 0:K.duration)!=null?H:NaN:super.duration}get currentTime(){var K,H;return this.castPlayer&&ne(this,d,dt)?(H=(K=this.castPlayer)==null?void 0:K.currentTime)!=null?H:0:super.currentTime}set currentTime(K){var H;if(this.castPlayer){this.castPlayer.currentTime=K,(H=this.castPlayer.controller)==null||H.seek();return}super.currentTime=K}get onentercast(){return ne(this,c)}set onentercast(K){ne(this,c)&&(this.removeEventListener("entercast",ne(this,c)),Pe(this,c,null)),typeof K=="function"&&(Pe(this,c,K),this.addEventListener("entercast",K))}get onleavecast(){return ne(this,r)}set onleavecast(K){ne(this,r)&&(this.removeEventListener("leavecast",ne(this,r)),Pe(this,r,null)),typeof K=="function"&&(Pe(this,r,K),this.addEventListener("leavecast",K))}get oncastchange(){return ne(this,h)}set oncastchange(K){ne(this,h)&&(this.removeEventListener("castchange",ne(this,h)),Pe(this,h,null)),typeof K=="function"&&(Pe(this,h,K),this.addEventListener("castchange",K))}},n=new WeakMap,R=new WeakMap,m=new WeakMap,S=new WeakSet,mr=function(){return typeof chrome!="undefined"&&chrome.cast&&chrome.cast.isAvailable},T=new WeakSet,At=function(){return typeof cast!="undefined"&&cast.framework},_=new WeakSet,ke=function(){if(ne(P,T,At))return cast.framework.CastContext.getInstance()},A=new WeakSet,Dt=function(){var K;return(K=ne(P,_,ke))==null?void 0:K.getCurrentSession()},x=new WeakSet,_t=function(){var K;return(K=ne(P,A,Dt))==null?void 0:K.getSessionObj().media[0]},y=new WeakSet,pr=function(K){return new Promise((H,z)=>{ne(P,x,_t).editTracksInfo(K,H,z)})},e=new WeakSet,yr=function(K){return new Promise((H,z)=>{ne(P,x,_t).getStatus(K,H,z)})},f=new WeakSet,Wt=function(K){return ne(P,_,ke).setOptions({receiverApplicationId:chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,autoJoinPolicy:chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED,androidReceiverCompatible:!1,language:"en-US",resumeSavedSession:!0,...K})},i=new WeakMap,t=new WeakMap,u=new WeakMap,c=new WeakMap,r=new WeakMap,h=new WeakMap,d=new WeakSet,dt=function(){var K;return(K=this.castPlayer)==null?void 0:K.isMediaLoaded},v=new WeakSet,Er=function(){ne(P,n)===this&&(Object.entries(ne(this,u)).forEach(([K,H])=>{ne(this,t).controller.removeEventListener(K,H)}),Pe(P,n,void 0),this.muted=ne(this,t).isMuted,this.currentTime=ne(this,t).savedPlayerState.currentTime,ne(this,t).savedPlayerState.isPaused===!1&&this.play())},L=new WeakSet,Gt=function(){this.dispatchEvent(new CustomEvent("castchange",{detail:ne(P,_,ke).getCastState()}))},M=new WeakSet,Tr=async function(){var H,z;let{SESSION_RESUMED:K}=cast.framework.SessionState;if(ne(P,_,ke).getSessionState()===K&&this.castSrc===((H=ne(P,x,_t))==null?void 0:H.media.contentId)){Pe(P,n,this),Object.entries(ne(this,u)).forEach(([$,X])=>{ne(this,t).controller.addEventListener($,X)});try{await Oe(z=P,e,yr).call(z,new chrome.cast.media.GetStatusRequest)}catch($){console.error($)}ne(this,u)[cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED](),ne(this,u)[cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED]()}},w=new WeakSet,Ht=function(){var K;!ne(P,T,At)||this.castEnabled||(this.castEnabled=!0,Oe(K=P,f,Wt).call(K),this.textTracks.addEventListener("change",Oe(this,j,Vt).bind(this)),Oe(this,L,Gt).call(this),Pe(this,t,new cast.framework.RemotePlayer),new cast.framework.RemotePlayerController(ne(this,t)),Pe(this,u,{[cast.framework.RemotePlayerEventType.IS_CONNECTED_CHANGED]:({value:H})=>{H===!1&&Oe(this,v,Er).call(this),this.dispatchEvent(new Event(H?"entercast":"leavecast"))},[cast.framework.RemotePlayerEventType.DURATION_CHANGED]:()=>{this.dispatchEvent(new Event("durationchange"))},[cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED]:()=>{this.dispatchEvent(new Event("volumechange"))},[cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED]:()=>{this.dispatchEvent(new Event("volumechange"))},[cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED]:()=>{!ne(this,d,dt)||this.dispatchEvent(new Event("timeupdate"))},[cast.framework.RemotePlayerEventType.VIDEO_INFO_CHANGED]:()=>{this.dispatchEvent(new Event("resize"))},[cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED]:()=>{this.dispatchEvent(new Event(this.paused?"pause":"play"))},[cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED]:()=>{var H,z;((H=this.castPlayer)==null?void 0:H.playerState)!==chrome.cast.media.PlayerState.PAUSED&&this.dispatchEvent(new Event({[chrome.cast.media.PlayerState.PLAYING]:"playing",[chrome.cast.media.PlayerState.BUFFERING]:"waiting",[chrome.cast.media.PlayerState.IDLE]:"emptied"}[(z=this.castPlayer)==null?void 0:z.playerState]))},[cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED]:async()=>{!ne(this,d,dt)||(await Promise.resolve(),Oe(this,k,Sr).call(this))}}))},k=new WeakSet,Sr=function(){Oe(this,j,Vt).call(this)},j=new WeakSet,Vt=async function(){var re,ee,Z,q,fe,ge;if(!this.castPlayer)return;let H=((ee=(re=ne(this,t).mediaInfo)==null?void 0:re.tracks)!=null?ee:[]).filter(({type:ie})=>ie===chrome.cast.media.TrackType.TEXT),z=[...this.textTracks].filter(({kind:ie})=>ie==="subtitles"||ie==="captions"),$=H.map(({language:ie,name:me,trackId:ye})=>{var oe;let{mode:Te}=(oe=z.find(de=>de.language===ie&&de.label===me))!=null?oe:{};return Te?{mode:Te,trackId:ye}:!1}).filter(Boolean),J=$.filter(({mode:ie})=>ie!=="showing").map(({trackId:ie})=>ie),te=$.find(({mode:ie})=>ie==="showing"),Q=(fe=(q=(Z=ne(P,A,Dt))==null?void 0:Z.getSessionObj().media[0])==null?void 0:q.activeTrackIds)!=null?fe:[],ae=Q;if(Q.length&&(ae=ae.filter(ie=>!J.includes(ie))),te!=null&&te.trackId&&(ae=[...ae,te.trackId]),ae=[...new Set(ae)],!((ie,me)=>ie.length===me.length&&ie.every(ye=>me.includes(ye)))(Q,ae))try{let ie=new chrome.cast.media.EditTracksInfoRequest(ae);await Oe(ge=P,y,pr).call(ge,ie)}catch(ie){console.error(ie)}},ve(P,S),ve(P,T),ve(P,_),ve(P,A),ve(P,x),ve(P,y),ve(P,e),ve(P,f),at(P,"observedAttributes",["cast-src","cast-content-type","cast-stream-type"]),at(P,"instances",new Set),ve(P,n,void 0),ve(P,R,!1),at(P,"initCast",()=>{var K;ne(P,S,mr)?ne(P,T,At)?ne(K=P,m).call(K,chrome.cast.isAvailable):customElements.whenDefined("google-cast-button").then(()=>{var H;return ne(H=P,m).call(H,chrome.cast.isAvailable)}):globalThis.__onGCastApiAvailable=()=>{customElements.whenDefined("google-cast-button").then(()=>{var H;return ne(H=P,m).call(H,chrome.cast.isAvailable)})}}),ve(P,m,K=>{if(K){Pe(P,R,!0);let{CAST_STATE_CHANGED:H}=cast.framework.CastContextEventType;ne(P,_,ke).addEventListener(H,$=>{P.instances.forEach(X=>{var J;return Oe(J=X,L,Gt).call(J,$)})});let{SESSION_STATE_CHANGED:z}=cast.framework.CastContextEventType;ne(P,_,ke).addEventListener(z,$=>{P.instances.forEach(X=>{var J;return Oe(J=X,M,Tr).call(J,$)})}),P.instances.forEach($=>{var X;return Oe(X=$,w,Ht).call(X)})}}),P};if(globalThis.HTMLVideoElement&&globalThis.customElements){let B=ti(HTMLVideoElement);globalThis.customElements.get("castable-video")||(globalThis.customElements.define("castable-video",B,{extends:"video"}),globalThis.CastableVideoElement=B),B.initCast()}var xr=["abort","canplay","canplaythrough","durationchange","emptied","encrypted","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting","waitingforkey","resize","enterpictureinpicture","leavepictureinpicture","castchange","entercast","leavecast"],Ar=Mt.createElement("template");Ar.innerHTML=`
|
|
29
|
+
`)}),u.flush()}},"./src/utils/xhr-loader.ts":function(B,P,n){"use strict";n.r(P);var R=n("./src/utils/logger.ts"),m=n("./src/loader/load-stats.ts"),S=/^age:\s*[\d.]+\s*$/m,I=function(){function T(_){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=void 0,this.loader=null,this.stats=void 0,this.xhrSetup=_?_.xhrSetup:null,this.stats=new m.LoadStats,this.retryDelay=0}var b=T.prototype;return b.destroy=function(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null},b.abortInternal=function(){var E=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),E&&(E.onreadystatechange=null,E.onprogress=null,E.readyState!==4&&(this.stats.aborted=!0,E.abort()))},b.abort=function(){var E;this.abortInternal(),(E=this.callbacks)!==null&&E!==void 0&&E.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)},b.load=function(E,A,D){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=E,this.config=A,this.callbacks=D,this.retryDelay=A.retryDelay,this.loadInternal()},b.loadInternal=function(){var E=this.config,A=this.context;if(!!E){var D=this.loader=new self.XMLHttpRequest,x=this.stats;x.loading.first=0,x.loaded=0;var g=this.xhrSetup;try{if(g)try{g(D,A.url)}catch{D.open("GET",A.url,!0),g(D,A.url)}D.readyState||D.open("GET",A.url,!0);var y=this.context.headers;if(y)for(var s in y)D.setRequestHeader(s,y[s])}catch(e){this.callbacks.onError({code:D.status,text:e.message},A,D);return}A.rangeEnd&&D.setRequestHeader("Range","bytes="+A.rangeStart+"-"+(A.rangeEnd-1)),D.onreadystatechange=this.readystatechange.bind(this),D.onprogress=this.loadprogress.bind(this),D.responseType=A.responseType,self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),E.timeout),D.send()}},b.readystatechange=function(){var E=this.context,A=this.loader,D=this.stats;if(!(!E||!A)){var x=A.readyState,g=this.config;if(!D.aborted&&x>=2)if(self.clearTimeout(this.requestTimeout),D.loading.first===0&&(D.loading.first=Math.max(self.performance.now(),D.loading.start)),x===4){A.onreadystatechange=null,A.onprogress=null;var y=A.status;if(y>=200&&y<300){D.loading.end=Math.max(self.performance.now(),D.loading.first);var s,e;if(E.responseType==="arraybuffer"?(s=A.response,e=s.byteLength):(s=A.responseText,e=s.length),D.loaded=D.total=e,!this.callbacks)return;var o=this.callbacks.onProgress;if(o&&o(D,E,s,A),!this.callbacks)return;var f={url:A.responseURL,data:s};this.callbacks.onSuccess(f,D,E,A)}else D.retry>=g.maxRetry||y>=400&&y<499?(R.logger.error(y+" while loading "+E.url),this.callbacks.onError({code:y,text:A.statusText},E,A)):(R.logger.warn(y+" while loading "+E.url+", retrying in "+this.retryDelay+"..."),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,g.maxRetryDelay),D.retry++)}else self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),g.timeout)}},b.loadtimeout=function(){R.logger.warn("timeout while loading "+this.context.url);var E=this.callbacks;E&&(this.abortInternal(),E.onTimeout(this.stats,this.context,this.loader))},b.loadprogress=function(E){var A=this.stats;A.loaded=E.loaded,E.lengthComputable&&(A.total=E.total)},b.getCacheAge=function(){var E=null;if(this.loader&&S.test(this.loader.getAllResponseHeaders())){var A=this.loader.getResponseHeader("age");E=A?parseFloat(A):null}return E},T}();P.default=I}}).default})});var Qe=class{addEventListener(){}removeEventListener(){}dispatchEvent(P){return!0}};if(typeof DocumentFragment=="undefined"){class B extends Qe{}globalThis.DocumentFragment=B}var st=class extends Qe{},Pt=class extends Qe{},wr={get(B){},define(B,P,n){},upgrade(B){},whenDefined(B){return Promise.resolve(st)}},ot,It=class{constructor(P,n={}){ve(this,ot,void 0);Pe(this,ot,n==null?void 0:n.detail)}get detail(){return ne(this,ot)}initCustomEvent(){}};ot=new WeakMap;function kr(B,P){return new st}var $t={document:{createElement:kr},DocumentFragment,customElements:wr,CustomEvent:It,EventTarget:Qe,HTMLElement:st,HTMLVideoElement:Pt},Jt=typeof window=="undefined"||typeof globalThis.customElements=="undefined",we=Jt?$t:globalThis,Mt=Jt?$t.document:globalThis.document;var jt=Et(Zt(),1),Ge=Et(St(),1),kt=Et(St(),1),$e=Et(St(),1),ut=class extends Error{constructor(B,P=ut.MEDIA_ERR_CUSTOM,n){var R;super(B),this.name="MediaError",this.code=P,this.fatal=n!=null?n:P>=ut.MEDIA_ERR_NETWORK&&P<=ut.MEDIA_ERR_ENCRYPTED,this.message||(this.message=(R=ut.defaultMessages[this.code])!=null?R:"")}},Fe=ut;Fe.MEDIA_ERR_ABORTED=1,Fe.MEDIA_ERR_NETWORK=2,Fe.MEDIA_ERR_DECODE=3,Fe.MEDIA_ERR_SRC_NOT_SUPPORTED=4,Fe.MEDIA_ERR_ENCRYPTED=5,Fe.MEDIA_ERR_CUSTOM=100,Fe.defaultMessages={1:"You aborted the media playback",2:"A network error caused the media download to fail.",3:"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.",4:"An unsupported error occurred. The server or network failed, or your browser does not support this format.",5:"The media is encrypted and there are no keys to decrypt it."};var nr=(B,P)=>B in P,Ut={ANY:"any",MUTED:"muted"},xt={VOD:"on-demand",ON_DEMAND:"on-demand",LIVE:"live",LL_LIVE:"ll-live",DVR:"live:dvr",LL_DVR:"ll-live:dvr"},He={MSE:"mse",NATIVE:"native"},Je={M3U8:"application/vnd.apple.mpegurl",MP4:"video/mp4"},Bt={HLS:Je.M3U8},ui=Object.keys(Bt),fi=[...Object.values(Je),"hls","HLS"],ft=(B,P,n,R)=>{B.addEventListener(P,n,R),B.addEventListener("teardown",()=>{B.removeEventListener(P,n)},{once:!0})};function Ur(B,P,n){P&&n>P&&(n=P);for(let R=0;R<B.length;R++)if(B.start(R)<=n&&B.end(R)>=n)return!0;return!1}var Br=B=>{let P=B.indexOf("?");if(P<0)return[B];let n=B.slice(0,P),R=B.slice(P);return[n,R]},ar=B=>{let P=B.type;if(P){let R=P.toUpperCase();return nr(R,Bt)?Bt[R]:P}let{src:n}=B;return n?Nr(n):""},Nr=B=>{let P="";try{P=new URL(B).pathname}catch{console.error("invalid url")}let n=P.lastIndexOf(".");if(n<0)return"";let R=P.slice(n+1).toUpperCase();return nr(R,Je)?Je[R]:""},jr=Object.values(Ut),qt=B=>typeof B=="boolean"||typeof B=="string"&&jr.includes(B),Kr=({autoplay:B},P,n)=>{if(!P)return()=>{};let R=!1,m=!1,S=qt(B)?B:!!B,I=()=>{R||ft(P,"playing",()=>{R=!0},{once:!0})};if(I(),ft(P,"loadstart",()=>{R=!1,I(),wt(P,S)},{once:!0}),ft(P,"loadstart",()=>{n||(m=!Number.isFinite(P.duration)),wt(P,S)},{once:!0}),n&&n.once(kt.default.Events.LEVEL_LOADED,(T,b)=>{var _;m=(_=b.details.live)!=null?_:!1}),!S){let T=()=>{!m||(n!=null&&n.liveSyncPosition?P.currentTime=n.liveSyncPosition:Number.isFinite(P.seekable.end(0))&&(P.currentTime=P.seekable.end(0)))};n&&ft(P,"play",()=>{P.preload==="metadata"?n.once(kt.default.Events.LEVEL_UPDATED,T):T()},{once:!0})}return T=>{R||(S=qt(T)?T:!!T,wt(P,S))}},wt=(B,P)=>{if(!P)return;let n=B.muted,R=()=>B.muted=n;switch(P){case Ut.ANY:B.play().catch(()=>{B.muted=!0,B.play().catch(R)});break;case Ut.MUTED:B.muted=!0,B.play().catch(R);break;default:B.play().catch(()=>{});break}},Wr=({preload:B,src:P},n,R)=>{if(!n)return()=>{};let m=A=>{A!=null&&["","none","metadata","auto"].includes(A)?n.setAttribute("preload",A):n.removeAttribute("preload")};if(!R)return m(B),m;let S=!1,I=!1,T=R.config.maxBufferLength,b=R.config.maxBufferSize,_=A=>{m(A);let D=A!=null?A:n.preload;I||D==="none"||(D==="metadata"?(R.config.maxBufferLength=1,R.config.maxBufferSize=1):(R.config.maxBufferLength=T,R.config.maxBufferSize=b),E())},E=()=>{!S&&P&&(S=!0,R.loadSource(P))};return ft(n,"play",()=>{I=!0,R.config.maxBufferLength=T,R.config.maxBufferSize=b,E()},{once:!0}),_(B),_};function Gr(B,P){P.on($e.default.Events.NON_NATIVE_TEXT_TRACKS_FOUND,(m,{tracks:S})=>{S.forEach(I=>{var T;let b=(T=I.subtitleTrack)!=null?T:I.closedCaptions,_=P.subtitleTracks.findIndex(({lang:E,name:A,type:D})=>E==(b==null?void 0:b.lang)&&A===I.label&&D.toLowerCase()===I.kind);Hr(B,I.kind,I.label,b==null?void 0:b.lang,`${I.kind}${_}`)})});let n=()=>{var m;if(!P.subtitleTracks.length)return;let S=Array.from(B.textTracks).find(T=>T.id&&T.mode==="showing"&&["subtitles","captions"].includes(T.kind)),I=`${(m=P.subtitleTracks[P.subtitleTrack])==null?void 0:m.type.toLowerCase()}${P.subtitleTrack}`;if(S&&(P.subtitleTrack<0||(S==null?void 0:S.id)!==I)){let T=P.subtitleTracks.findIndex(({lang:b,name:_,type:E})=>b==S.language&&_===S.label&&E.toLowerCase()===S.kind);P.subtitleTrack=T}S&&(S==null?void 0:S.id)===I&&S.cues&&Array.from(S.cues).forEach(T=>{S.addCue(T)})};B.textTracks.addEventListener("change",n),P.on($e.default.Events.CUES_PARSED,(m,{track:S,cues:I})=>{let T=B.textTracks.getTrackById(S);if(!T)return;let b=T.mode==="disabled";b&&(T.mode="hidden"),I.forEach(_=>{var E;(E=T.cues)!=null&&E.getCueById(_.id)||T.addCue(_)}),b&&(T.mode="disabled")}),P.once($e.default.Events.DESTROYING,()=>{B.textTracks.removeEventListener("change",n),B.querySelectorAll("track[data-removeondestroy]").forEach(m=>{m.remove()})});let R=()=>{Array.from(B.textTracks).forEach(m=>{var S,I;if(!["subtitles","caption"].includes(m.kind)&&m.label==="thumbnails"){if(!((S=m.cues)!=null&&S.length)){let T=B.querySelector('track[label="thumbnails"]'),b=(I=T==null?void 0:T.getAttribute("src"))!=null?I:"";T==null||T.removeAttribute("src"),setTimeout(()=>{T==null||T.setAttribute("src",b)},0)}m.mode!=="hidden"&&(m.mode="hidden")}})};P.once($e.default.Events.MANIFEST_LOADED,R),P.once($e.default.Events.MEDIA_ATTACHED,R)}function Hr(B,P,n,R,m){let S=document.createElement("track");return S.kind=P,S.label=n,R&&(S.srclang=R),m&&(S.id=m),S.track.mode="disabled",S.setAttribute("data-removeondestroy",""),B.append(S),S.track}var er,tr,Vr=(tr=(er=globalThis==null?void 0:globalThis.navigator)==null?void 0:er.userAgent)!=null?tr:"",Yr=Vr.toLowerCase().indexOf("android")!==-1,Ze=new WeakMap,sr="mux.com",rr,ir,or=(ir=(rr=Ge.default).isSupported)==null?void 0:ir.call(rr),zr=Yr,lr=()=>jt.default.utils.now(),ur=(B,{domain:P=sr}={})=>{if(!B)return;let[n,R=""]=Br(B);return`https://stream.${P}/${n}.m3u8${R}`},fr=B=>{var P;return(P=Ze.get(B))==null?void 0:P.error},dr=(B,P,n)=>{Kt(P,n),Ze.set(P,{});let R=Xr(B,P);Jr(B,P,R),Zr(B,P,R);let m=Kr(B,P,R),S=Wr(B,P,R);return{engine:R,setAutoplay:m,setPreload:S}},Kt=(B,P)=>{let n=P==null?void 0:P.engine;n&&(n.detachMedia(),n.destroy()),(B==null?void 0:B.mux)&&!B.mux.deleted&&(B.mux.destroy(),delete B.mux),B&&(B.removeAttribute("src"),B.load(),B.removeEventListener("error",vr),B.removeEventListener("error",Nt),B.removeEventListener("durationchange",hr),Ze.delete(B),B.dispatchEvent(new Event("teardown")))};function cr(B,P){var n;let R=ar(B);if(R!==Je.M3U8)return!0;let m=!R||((n=P==null?void 0:P.canPlayType(R))!=null?n:!0),{preferPlayback:S}=B,I=S===He.MSE,T=S===He.NATIVE;return m&&(T||!(or&&(I||zr)))}var Xr=(B,P)=>{let{debug:n,streamType:R,startTime:m=-1}=B,S=ar(B)===Je.M3U8,I=cr(B,P);if(S&&!I&&or){let T={backBufferLength:30,renderTextTracksNatively:!1,liveDurationInfinity:!0},b=Qr(R);return new Ge.default({debug:n,startPosition:m,...T,...b})}},Qr=B=>[xt.LIVE,xt.DVR].includes(B)?{backBufferLength:8}:[xt.LL_LIVE,xt.LL_DVR].includes(B)?{backBufferLength:4,maxFragLookUpTolerance:.001}:{},$r=({playbackId:B,src:P,customDomain:n})=>{if(B)return!0;if(typeof P!="string")return!1;let R=window==null?void 0:window.location.href,m=new URL(P,R).hostname.toLocaleLowerCase();return m.includes(sr)||!!n&&m.includes(n.toLocaleLowerCase())},Jr=(B,P,n)=>{let{envKey:R}=B,m=$r(B);if((R||m)&&P){let{playerInitTime:S,playerSoftwareName:I,playerSoftwareVersion:T,beaconCollectionDomain:b,metadata:_,debug:E}=B,A=D=>typeof D.player_error_code=="string"?!1:typeof B.errorTranslator=="function"?B.errorTranslator(D):D;jt.default.monitor(P,{debug:E,beaconCollectionDomain:b,hlsjs:n,Hls:n?Ge.default:void 0,automaticErrorTracking:!1,errorTranslator:A,data:{...R?{env_key:R}:{},player_software_name:I,player_software:I,player_software_version:T,player_init_time:S,..._}})}},Zr=(B,P,n)=>{var R;if(!P){console.warn("attempting to load media before mediaEl exists");return}let m=cr(B,P),{src:S}=B;P&&m?(typeof S=="string"?(P.setAttribute("src",S),B.startTime&&(((R=Ze.get(P))!=null?R:{}).startTime=B.startTime,P.addEventListener("durationchange",hr,{once:!0}))):P.removeAttribute("src"),P.addEventListener("error",vr),P.addEventListener("error",Nt)):n&&S?(n.on(Ge.default.Events.ERROR,(I,T)=>{let b={[Ge.default.ErrorTypes.NETWORK_ERROR]:Fe.MEDIA_ERR_NETWORK,[Ge.default.ErrorTypes.MEDIA_ERROR]:Fe.MEDIA_ERR_DECODE},_=new Fe("",b[T.type]);_.fatal=T.fatal,_.data=T,P.dispatchEvent(new CustomEvent("error",{detail:_}))}),P.addEventListener("error",Nt),Gr(P,n),n.attachMedia(P)):console.error("It looks like the video you're trying to play will not work on this system! If possible, try upgrading to the newest versions of your browser or software.")};function hr(B){var P;let n=B.target,R=(P=Ze.get(n))==null?void 0:P.startTime;if(!!R&&Ur(n.seekable,n.duration,R)){let m=n.preload==="auto";m&&(n.preload="none"),n.currentTime=R,m&&(n.preload="auto")}}async function vr(B){if(!B.isTrusted)return;B.stopImmediatePropagation();let P=B.target;if(!(P!=null&&P.error))return;let{message:n,code:R}=P.error,m=new Fe(n,R);if(P.src&&(R!==Fe.MEDIA_ERR_DECODE||R!==void 0))try{let{status:S}=await fetch(P.src);m.data={response:{code:S}}}catch{}P.dispatchEvent(new CustomEvent("error",{detail:m}))}function Nt(B){var P,n;if(!(B instanceof CustomEvent)||!(B.detail instanceof Fe))return;let R=B.target,m=B.detail;!m||!m.fatal||(((P=Ze.get(R))!=null?P:{}).error=m,(n=R.mux)==null||n.emit("error",{player_error_code:m.code,player_error_message:m.message}))}var qr=()=>{try{return"0.9.1"}catch{}return"UNKNOWN"},ei=qr(),gr=()=>ei;var ti=B=>{var P,n,R,m,S,mr,T,At,_,ke,A,Dt,x,_t,y,pr,e,yr,f,Wt,i,t,u,c,r,h,d,dt,v,Er,L,Gt,M,Tr,w,Ht,k,Sr,j,Vt;return P=class extends B{constructor(){super();ve(this,d);ve(this,v);ve(this,L);ve(this,M);ve(this,w);ve(this,k);ve(this,j);at(this,"castEnabled",!1);ve(this,i,{paused:!1});ve(this,t,void 0);ve(this,u,{});ve(this,c,void 0);ve(this,r,void 0);ve(this,h,void 0);P.instances.add(this),Oe(this,w,Ht).call(this)}static get castElement(){return ne(P,n)}static get castEnabled(){return ne(P,R)}static get castState(){var K;return(K=ne(P,_,ke))==null?void 0:K.getCastState()}static async exitCast(){try{await ne(P,_,ke).endCurrentSession(!0)}catch(H){console.error(H);return}}get castPlayer(){if(P.castElement===this)return ne(this,t)}attributeChangedCallback(K){if(!!this.castPlayer)switch(K){case"cast-stream-type":case"cast-src":this.load();break}}async requestCast(K={}){var H;Oe(H=P,f,Wt).call(H,K),Pe(P,n,this),Object.entries(ne(this,u)).forEach(([z,$])=>{ne(this,t).controller.addEventListener(z,$)});try{await ne(P,_,ke).requestSession()}catch{Pe(P,n,void 0);return}ne(this,i).paused=super.paused,super.pause(),this.muted=super.muted;try{await this.load()}catch(z){console.error(z)}}async load(){var J,te;if(!this.castPlayer)return super.load();let K=new chrome.cast.media.MediaInfo(this.castSrc,this.castContentType),H=[...this.querySelectorAll("track")].filter(({kind:Q,src:ae})=>ae&&(Q==="subtitles"||Q==="captions")),z=[],$=0;H.length&&(K.tracks=H.map(Q=>{let ae=++$;z.length===0&&Q.track.mode==="showing"&&z.push(ae);let se=new chrome.cast.media.Track(ae,chrome.cast.media.TrackType.TEXT);return se.trackContentId=Q.src,se.trackContentType="text/vtt",se.subtype=Q.kind==="captions"?chrome.cast.media.TextTrackType.CAPTIONS:chrome.cast.media.TextTrackType.SUBTITLES,se.name=Q.label,se.language=Q.srclang,se})),this.castStreamType==="live"?K.streamType=chrome.cast.media.StreamType.LIVE:K.streamType=chrome.cast.media.StreamType.BUFFERED,K.metadata=new chrome.cast.media.GenericMediaMetadata,K.metadata.title=this.title,K.metadata.images=[{url:this.poster}];let X=new chrome.cast.media.LoadRequest(K);X.currentTime=(J=super.currentTime)!=null?J:0,X.autoplay=!ne(this,i).paused,X.activeTrackIds=z,await((te=ne(P,A,Dt))==null?void 0:te.loadMedia(X)),this.dispatchEvent(new Event("volumechange"))}play(){var K;if(this.castPlayer){this.castPlayer.isPaused&&((K=this.castPlayer.controller)==null||K.playOrPause());return}return super.play()}pause(){var K;if(this.castPlayer){this.castPlayer.isPaused||(K=this.castPlayer.controller)==null||K.playOrPause();return}super.pause()}get castSrc(){var K,H,z;return(z=(H=this.getAttribute("cast-src"))!=null?H:(K=this.querySelector("source"))==null?void 0:K.src)!=null?z:this.currentSrc}set castSrc(K){this.castSrc!=K&&this.setAttribute("cast-src",`${K}`)}get castContentType(){var K;return(K=this.getAttribute("cast-content-type"))!=null?K:void 0}set castContentType(K){this.setAttribute("cast-content-type",`${K}`)}get castStreamType(){var K;return(K=this.getAttribute("cast-stream-type"))!=null?K:void 0}set castStreamType(K){this.setAttribute("cast-stream-type",`${K}`)}get readyState(){if(this.castPlayer)switch(this.castPlayer.playerState){case chrome.cast.media.PlayerState.IDLE:return 0;case chrome.cast.media.PlayerState.BUFFERING:return 2;default:return 3}return super.readyState}get paused(){return this.castPlayer?this.castPlayer.isPaused:super.paused}get muted(){var K;return this.castPlayer?(K=this.castPlayer)==null?void 0:K.isMuted:super.muted}set muted(K){var H;if(this.castPlayer){(K&&!this.castPlayer.isMuted||!K&&this.castPlayer.isMuted)&&((H=this.castPlayer.controller)==null||H.muteOrUnmute());return}super.muted=K}get volume(){var K,H;return this.castPlayer?(H=(K=this.castPlayer)==null?void 0:K.volumeLevel)!=null?H:1:super.volume}set volume(K){var H;if(this.castPlayer){this.castPlayer.volumeLevel=K,(H=this.castPlayer.controller)==null||H.setVolumeLevel();return}super.volume=K}get duration(){var K,H;return this.castPlayer&&ne(this,d,dt)?(H=(K=this.castPlayer)==null?void 0:K.duration)!=null?H:NaN:super.duration}get currentTime(){var K,H;return this.castPlayer&&ne(this,d,dt)?(H=(K=this.castPlayer)==null?void 0:K.currentTime)!=null?H:0:super.currentTime}set currentTime(K){var H;if(this.castPlayer){this.castPlayer.currentTime=K,(H=this.castPlayer.controller)==null||H.seek();return}super.currentTime=K}get onentercast(){return ne(this,c)}set onentercast(K){ne(this,c)&&(this.removeEventListener("entercast",ne(this,c)),Pe(this,c,null)),typeof K=="function"&&(Pe(this,c,K),this.addEventListener("entercast",K))}get onleavecast(){return ne(this,r)}set onleavecast(K){ne(this,r)&&(this.removeEventListener("leavecast",ne(this,r)),Pe(this,r,null)),typeof K=="function"&&(Pe(this,r,K),this.addEventListener("leavecast",K))}get oncastchange(){return ne(this,h)}set oncastchange(K){ne(this,h)&&(this.removeEventListener("castchange",ne(this,h)),Pe(this,h,null)),typeof K=="function"&&(Pe(this,h,K),this.addEventListener("castchange",K))}},n=new WeakMap,R=new WeakMap,m=new WeakMap,S=new WeakSet,mr=function(){return typeof chrome!="undefined"&&chrome.cast&&chrome.cast.isAvailable},T=new WeakSet,At=function(){return typeof cast!="undefined"&&cast.framework},_=new WeakSet,ke=function(){if(ne(P,T,At))return cast.framework.CastContext.getInstance()},A=new WeakSet,Dt=function(){var K;return(K=ne(P,_,ke))==null?void 0:K.getCurrentSession()},x=new WeakSet,_t=function(){var K;return(K=ne(P,A,Dt))==null?void 0:K.getSessionObj().media[0]},y=new WeakSet,pr=function(K){return new Promise((H,z)=>{ne(P,x,_t).editTracksInfo(K,H,z)})},e=new WeakSet,yr=function(K){return new Promise((H,z)=>{ne(P,x,_t).getStatus(K,H,z)})},f=new WeakSet,Wt=function(K){return ne(P,_,ke).setOptions({receiverApplicationId:chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,autoJoinPolicy:chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED,androidReceiverCompatible:!1,language:"en-US",resumeSavedSession:!0,...K})},i=new WeakMap,t=new WeakMap,u=new WeakMap,c=new WeakMap,r=new WeakMap,h=new WeakMap,d=new WeakSet,dt=function(){var K;return(K=this.castPlayer)==null?void 0:K.isMediaLoaded},v=new WeakSet,Er=function(){ne(P,n)===this&&(Object.entries(ne(this,u)).forEach(([K,H])=>{ne(this,t).controller.removeEventListener(K,H)}),Pe(P,n,void 0),this.muted=ne(this,t).isMuted,this.currentTime=ne(this,t).savedPlayerState.currentTime,ne(this,t).savedPlayerState.isPaused===!1&&this.play())},L=new WeakSet,Gt=function(){this.dispatchEvent(new CustomEvent("castchange",{detail:ne(P,_,ke).getCastState()}))},M=new WeakSet,Tr=async function(){var H,z;let{SESSION_RESUMED:K}=cast.framework.SessionState;if(ne(P,_,ke).getSessionState()===K&&this.castSrc===((H=ne(P,x,_t))==null?void 0:H.media.contentId)){Pe(P,n,this),Object.entries(ne(this,u)).forEach(([$,X])=>{ne(this,t).controller.addEventListener($,X)});try{await Oe(z=P,e,yr).call(z,new chrome.cast.media.GetStatusRequest)}catch($){console.error($)}ne(this,u)[cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED](),ne(this,u)[cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED]()}},w=new WeakSet,Ht=function(){var K;!ne(P,T,At)||this.castEnabled||(this.castEnabled=!0,Oe(K=P,f,Wt).call(K),this.textTracks.addEventListener("change",Oe(this,j,Vt).bind(this)),Oe(this,L,Gt).call(this),Pe(this,t,new cast.framework.RemotePlayer),new cast.framework.RemotePlayerController(ne(this,t)),Pe(this,u,{[cast.framework.RemotePlayerEventType.IS_CONNECTED_CHANGED]:({value:H})=>{H===!1&&Oe(this,v,Er).call(this),this.dispatchEvent(new Event(H?"entercast":"leavecast"))},[cast.framework.RemotePlayerEventType.DURATION_CHANGED]:()=>{this.dispatchEvent(new Event("durationchange"))},[cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED]:()=>{this.dispatchEvent(new Event("volumechange"))},[cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED]:()=>{this.dispatchEvent(new Event("volumechange"))},[cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED]:()=>{!ne(this,d,dt)||this.dispatchEvent(new Event("timeupdate"))},[cast.framework.RemotePlayerEventType.VIDEO_INFO_CHANGED]:()=>{this.dispatchEvent(new Event("resize"))},[cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED]:()=>{this.dispatchEvent(new Event(this.paused?"pause":"play"))},[cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED]:()=>{var H,z;((H=this.castPlayer)==null?void 0:H.playerState)!==chrome.cast.media.PlayerState.PAUSED&&this.dispatchEvent(new Event({[chrome.cast.media.PlayerState.PLAYING]:"playing",[chrome.cast.media.PlayerState.BUFFERING]:"waiting",[chrome.cast.media.PlayerState.IDLE]:"emptied"}[(z=this.castPlayer)==null?void 0:z.playerState]))},[cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED]:async()=>{!ne(this,d,dt)||(await Promise.resolve(),Oe(this,k,Sr).call(this))}}))},k=new WeakSet,Sr=function(){Oe(this,j,Vt).call(this)},j=new WeakSet,Vt=async function(){var re,ee,Z,q,fe,ge;if(!this.castPlayer)return;let H=((ee=(re=ne(this,t).mediaInfo)==null?void 0:re.tracks)!=null?ee:[]).filter(({type:ie})=>ie===chrome.cast.media.TrackType.TEXT),z=[...this.textTracks].filter(({kind:ie})=>ie==="subtitles"||ie==="captions"),$=H.map(({language:ie,name:me,trackId:ye})=>{var oe;let{mode:Te}=(oe=z.find(de=>de.language===ie&&de.label===me))!=null?oe:{};return Te?{mode:Te,trackId:ye}:!1}).filter(Boolean),J=$.filter(({mode:ie})=>ie!=="showing").map(({trackId:ie})=>ie),te=$.find(({mode:ie})=>ie==="showing"),Q=(fe=(q=(Z=ne(P,A,Dt))==null?void 0:Z.getSessionObj().media[0])==null?void 0:q.activeTrackIds)!=null?fe:[],ae=Q;if(Q.length&&(ae=ae.filter(ie=>!J.includes(ie))),te!=null&&te.trackId&&(ae=[...ae,te.trackId]),ae=[...new Set(ae)],!((ie,me)=>ie.length===me.length&&ie.every(ye=>me.includes(ye)))(Q,ae))try{let ie=new chrome.cast.media.EditTracksInfoRequest(ae);await Oe(ge=P,y,pr).call(ge,ie)}catch(ie){console.error(ie)}},ve(P,S),ve(P,T),ve(P,_),ve(P,A),ve(P,x),ve(P,y),ve(P,e),ve(P,f),at(P,"observedAttributes",["cast-src","cast-content-type","cast-stream-type"]),at(P,"instances",new Set),ve(P,n,void 0),ve(P,R,!1),at(P,"initCast",()=>{var K;ne(P,S,mr)?ne(P,T,At)?ne(K=P,m).call(K,chrome.cast.isAvailable):customElements.whenDefined("google-cast-button").then(()=>{var H;return ne(H=P,m).call(H,chrome.cast.isAvailable)}):globalThis.__onGCastApiAvailable=()=>{customElements.whenDefined("google-cast-button").then(()=>{var H;return ne(H=P,m).call(H,chrome.cast.isAvailable)})}}),ve(P,m,K=>{if(K){Pe(P,R,!0);let{CAST_STATE_CHANGED:H}=cast.framework.CastContextEventType;ne(P,_,ke).addEventListener(H,$=>{P.instances.forEach(X=>{var J;return Oe(J=X,L,Gt).call(J,$)})});let{SESSION_STATE_CHANGED:z}=cast.framework.CastContextEventType;ne(P,_,ke).addEventListener(z,$=>{P.instances.forEach(X=>{var J;return Oe(J=X,M,Tr).call(J,$)})}),P.instances.forEach($=>{var X;return Oe(X=$,w,Ht).call(X)})}}),P};if(globalThis.HTMLVideoElement&&globalThis.customElements){let B=ti(HTMLVideoElement);globalThis.customElements.get("castable-video")||(globalThis.customElements.define("castable-video",B,{extends:"video"}),globalThis.CastableVideoElement=B),B.initCast()}var xr=["abort","canplay","canplaythrough","durationchange","emptied","encrypted","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting","waitingforkey","resize","enterpictureinpicture","leavepictureinpicture","castchange","entercast","leavecast"],Ar=Mt.createElement("template");Ar.innerHTML=`
|
|
30
30
|
<style>
|
|
31
31
|
:host {
|
|
32
32
|
display: inline-block;
|
|
@@ -40,6 +40,8 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
40
40
|
max-height: 100%;
|
|
41
41
|
min-width: 100%;
|
|
42
42
|
min-height: 100%;
|
|
43
|
+
object-fit: var(--media-object-fit);
|
|
44
|
+
object-position: var(--media-object-position);
|
|
43
45
|
}
|
|
44
46
|
</style>
|
|
45
47
|
<video is="castable-video" part="video" crossorigin></video>
|