1import{a as E,T as k,l as v,p as T}from"../chunks/vidstack-iVd4LOBv.js";import{I as w,i as L}from"../chunks/vidstack-Dwg3iDYo.js";import{VideoProvider as S}from"./vidstack-video.js";import{p as b,l as f,e as C,D as o,b as l,v as A,h as m,W as D}from"../chunks/vidstack-DDS6k7mb.js";import{Q as p}from"../chunks/vidstack-DJbJpIrk.js";import{L as g}from"../chunks/vidstack-UVfmP_-r.js";import{R as I}from"../chunks/vidstack-BopiEIrS.js";import{c as $}from"../chunks/vidstack-Crcwig_k.js";import"./vidstack-html.js";import"../chunks/vidstack-jCQlkS5k.js";const R=r=>A(r);class _{constructor(t,s){this.m=t,this.b=s,this.g=null,this.nd=null,this.od={},this.pd=new Set,this.yk=-1}get instance(){return this.g}setup(t){const{streamType:s}=this.b.$state,i=b(s).includes("live"),n=b(s).includes("ll-");this.g=new t({lowLatencyMode:n,backBufferLength:n?4:i?8:void 0,renderTextTracksNatively:!1,...this.od});const e=this.Sg.bind(this);for(const a of Object.values(t.Events))this.g.on(a,e);this.g.on(t.Events.ERROR,this.U.bind(this));for(const a of this.pd)a(this.g);this.b.player.dispatch("hls-instance",{detail:this.g}),this.g.attachMedia(this.m),this.g.on(t.Events.FRAG_LOADING,this.Bk.bind(this)),this.g.on(t.Events.AUDIO_TRACK_SWITCHED,this.Tg.bind(this)),this.g.on(t.Events.LEVEL_SWITCHED,this.Ug.bind(this)),this.g.on(t.Events.LEVEL_LOADED,this.Vg.bind(this)),this.g.on(t.Events.NON_NATIVE_TEXT_TRACKS_FOUND,this.Wg.bind(this)),this.g.on(t.Events.CUES_PARSED,this.Xg.bind(this)),this.b.qualities[p.Za]=this.Yg.bind(this),f(this.b.qualities,"change",this.fb.bind(this)),f(this.b.audioTracks,"change",this.Zg.bind(this)),this.nd=C(this.tt.bind(this))}tt(){if(!this.b.$state.live())return;const t=new I(this.$g.bind(this));return t.Bb(),t.ra.bind(t)}$g(){this.b.$state.liveSyncPosition.set(this.g?.liveSyncPosition??1/0)}Sg(t,s){this.b.player?.dispatch(new o(R(t),{detail:s}))}Wg(t,s){const i=new o(t,{detail:s});let n=-1;for(let e=0;e<s.tracks.length;e++){const a=s.tracks[e],d=a.subtitleTrack??a.closedCaptions,c=new E({id:`hls-${a.kind}${e}`,src:d?.url,label:a.label,language:d?.lang,kind:a.kind,default:a.default});c[k.M]=2,c[k.Ua]=()=>{c.mode==="showing"?(this.g.subtitleTrack=e,n=e):n===e&&(this.g.subtitleTrack=-1,n=-1)},this.b.textTracks.add(c,i)}}Xg(t,s){const i=this.b.textTracks.getById(`hls-${s.track}`);if(!i)return;const n=new o(t,{detail:s});for(const e of s.cues)e.positionAlign="auto",i.addCue(e,n)}Tg(t,s){const i=this.b.audioTracks[s.id];if(i){const n=new o(t,{detail:s});this.b.audioTracks[g.pa](i,!0,n)}}Ug(t,s){const i=this.b.qualities[s.level];if(i){const n=new o(t,{detail:s});this.b.qualities[g.pa](i,!0,n)}}Vg(t,s){if(this.b.$state.canPlay())return;const{type:i,live:n,totalduration:e,targetduration:a}=s.details,d=new o(t,{detail:s});this.b.delegate.c("stream-type-change",n?i==="EVENT"&&Number.isFinite(e)&&a>=10?"live:dvr":"live":"on-demand",d),this.b.delegate.c("duration-change",e,d);const c=this.g.media;this.g.currentLevel===-1&&this.b.qualities[p.Ya](!0,d);for(const h of this.g.audioTracks){const u={id:h.id.toString(),label:h.name,language:h.lang||"",kind:"main"};this.b.audioTracks[g.oa](u,d)}for(const h of this.g.levels){const u={id:h.id?.toString()??h.height+"p",width:h.width,height:h.height,codec:h.codecSet,bitrate:h.bitrate};this.b.qualities[g.oa](u,d)}c.dispatchEvent(new o("canplay",{trigger:d}))}U(t,s){if(s.fatal)switch(s.type){case"networkError":this.Ck(s.error);break;case"mediaError":this.g?.recoverMediaError();break;default:this.Ak(s.error);break}}Bk(){this.yk>=0&&this.zk()}Ck(t){this.zk(),this.g?.startLoad(),this.yk=window.setTimeout(()=>{this.yk=-1,this.Ak(t)},5e3)}zk(){clearTimeout(this.yk),this.yk=-1}Ak(t){this.g?.destroy(),this.g=null,this.b.delegate.c("error",{message:t.message,code:1,error:t})}Yg(){this.g&&(this.g.currentLevel=-1)}fb(){const{qualities:t}=this.b;!this.g||t.auto||(this.g[t.switch+"Level"]=t.selectedIndex,w&&(this.m.currentTime=this.m.currentTime))}Zg(){const{audioTracks:t}=this.b;this.g&&this.g.audioTrack!==t.selectedIndex&&(this.g.audioTrack=t.selectedIndex)}Dk(t){l(t.src)&&(this.zk(),this.g?.loadSource(t.src))}ah(){this.zk(),this.b&&(this.b.qualities[p.Za]=void 0),this.g?.destroy(),this.g=null,this.nd?.(),this.nd=null}}class x{constructor(t,s,i){this.W=t,this.b=s,this.Ca=i,this.bh()}async bh(){const t={onLoadStart:this.Ea.bind(this),onLoaded:this.qd.bind(this),onLoadError:this.ch.bind(this)};let s=await H(this.W,t);return m(s)&&!l(this.W)&&(s=await q(this.W,t)),s?s.isSupported()?s:(this.b.player.dis
1patch(new o("hls-unsupported")),this.b.delegate.c("error",{message:"[vidstack] `hls.js` is not supported in this environment",code:4}),null):null}Ea(){this.b.player.dispatch(new o("hls-lib-load-start"))}qd(t){this.b.player.dispatch(new o("hls-lib-loaded",{detail:t})),this.Ca(t)}ch(t){const s=$(t);this.b.player.dispatch(new o("hls-lib-load-error",{detail:s})),this.b.delegate.c("error",{message:s.message,code:4,error:s})}}async function q(r,t={}){if(!m(r)){if(t.onLoadStart?.(),r.prototype&&r.prototype!==Function)return t.onLoaded?.(r),r;try{const s=(await r())?.default;if(s&&s.isSupported)t.onLoaded?.(s);else throw Error("");return s}catch(s){t.onLoadError?.(s)}}}async function H(r,t={}){if(l(r)){t.onLoadStart?.();try{if(await v(r),!D(window.Hls))throw Error("");const s=window.Hls;return t.onLoaded?.(s),s}catch(s){t.onLoadError?.(s)}}}const O="https://cdn.jsdelivr.net";class y extends S{constructor(){super(...arguments),this.$$PROVIDER_TYPE="HLS",this.Xe=null,this.d=new _(this.video,this.b),this.Gb=`${O}/npm/hls.js@^1.5.0/dist/hls.min.js`}get ctor(){return this.Xe}get instance(){return this.d.instance}get type(){return"hls"}get canLiveSync(){return!0}get config(){return this.d.od}set config(t){this.d.od=t}get library(){return this.Gb}set library(t){this.Gb=t}preconnect(){l(this.Gb)&&T(this.Gb)}setup(){super.setup(),new x(this.Gb,this.b,t=>{this.Xe=t,this.d.setup(t),this.b.delegate.c("provider-setup",this);const s=b(this.b.$state.source);s&&this.loadSource(s)})}async loadSource(t,s){if(!l(t.src)){this.Bn();return}this.a.preload=s||"",this.yn(t,"application/x-mpegurl"),this.d.Dk(t),this.V=t}onInstance(t){const s=this.d.instance;return s&&t(s),this.d.pd.add(t),()=>this.d.pd.delete(t)}destroy(){this.d.ah()}}y.supported=L();export{y as HLSProvider};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.