+
{{ include.description | strip | markdownify }}
{% endif %}
diff --git a/assets/js/vendor/vidstack-player/chunks/vidstack-PxFj4GI7.js b/assets/js/vendor/vidstack-player/chunks/vidstack-BfdttQuo.js
similarity index 88%
rename from assets/js/vendor/vidstack-player/chunks/vidstack-PxFj4GI7.js
rename to assets/js/vendor/vidstack-player/chunks/vidstack-BfdttQuo.js
index 50d10d7..7b48a1c 100644
--- a/assets/js/vendor/vidstack-player/chunks/vidstack-PxFj4GI7.js
+++ b/assets/js/vendor/vidstack-player/chunks/vidstack-BfdttQuo.js
@@ -1,9 +1,9 @@
-import{u as I,c as rt,V as st,e as l,s as y,E as q,p as f,l as G,i as C,a as Y,b as Yt,S as ft,f as wt,t as dt,d as aa,D as K,w as na,o as P,g as Xt,h as ks,j as Ft,k as xe,m as g,n as Ss,q as ra,r as Pe,v as Jt,x as Z,y as oa,z as ct,A as _,B as la,C as da,F as ca,G as Zt,H as ua,I as ot,J as Tt,K as Ce,L as k,M as x,N as O,O as X,P as Ee,Q as Ht,R as T,T as Ae,U as $,W as xs,X as ha,Y as pa,Z as Ps,_ as ma,$ as Me,a0 as te,a1 as h,a2 as fa,a3 as ee,a4 as se,a5 as ga,a6 as ba,a7 as ya,a8 as va,a9 as Cs,aa as kt,ab as ie,ac as $a,ad as Es,ae as wa,af as Ta,ag as J,ah as ka,ai as Sa,aj as Mt,ak as xa,al as Pa,am as Ca}from"./vidstack-ClmE_LDk.js";import{c as As,I as Ms,a as Ea,b as Aa,d as Ma,e as La,i as qa,f as _a,g as Da,h as Ia,j as Va,k as Le,l as Ls,m as qe}from"./vidstack-tiQh4UD3.js";import{T as ae,g as qs,a as St,u as Ra}from"./vidstack-BFul-1yb.js";import{i as U,T as Q,a as ne,w as re,b as Oa,c as Na}from"./vidstack-BqbADcDA.js";import{L as A}from"./vidstack-C_AxqLKV.js";import{Q as it}from"./vidstack-DRH_1tFW.js";import{c as _e,a as ut}from"./vidstack-BfBBPhXV.js";import{p as Bt,g as oe,a as _s,b as Ds}from"./vidstack-DB4QmL2O.js";import{c as De,r as H,g as Fa}from"./vidstack-Bxv1Qnxe.js";import"/assets/js/vendor/media-icons/lazy.min.js";const Ie=Symbol(0),Ha=["autoPlay","canAirPlay","canFullscreen","canGoogleCast","canLoad","canLoadPoster","canPictureInPicture","canPlay","canSeek","ended","fullscreen","isAirPlayConnected","isGoogleCastConnected","live","liveEdge","loop","mediaType","muted","paused","pictureInPicture","playing","playsInline","remotePlaybackState","remotePlaybackType","seeking","started","streamType","viewType","waiting"],Is=rt();function b(){return I(Is)}function z(){return b().$state}function Ba(a){return a instanceof HTMLAudioElement}function Ga(a){return a instanceof HTMLVideoElement}function Ka(a){return Ba(a)||Ga(a)}class xt extends st{}const Wa={togglePaused:"k Space",toggleMuted:"m",toggleFullscreen:"f",togglePictureInPicture:"i",toggleCaptions:"c",seekBackward:"j J ArrowLeft",seekForward:"l L ArrowRight",volumeUp:"ArrowUp",volumeDown:"ArrowDown",speedUp:"> ]",slowDown:"< ["},Gt=new Set(["Shift","Alt","Meta","Ctrl"]),Ua='button, [role="button"]',Vs='input, textarea, select, [contenteditable], [role^="menuitem"], [role="timer"]';class Qa extends xt{#t;constructor(t){super(),this.#t=t}onConnect(){l(this.#e.bind(this))}#e(){const{keyDisabled:t,keyTarget:e}=this.$props;if(t())return;const s=e()==="player"?this.el:document,i=y(!1);s===this.el?new q(this.el).add("focusin",()=>i.set(!0)).add("focusout",n=>{this.el.contains(n.target)||i.set(!1)}):(f(i)||i.set(document.querySelector("[data-media-player]")===this.el),G(document,"focusin",n=>{const r=n.composedPath().find(o=>o instanceof Element&&o.localName==="media-player");r!==void 0&&i.set(this.el===r)})),l(()=>{i()&&new q(s).add("keyup",this.#s.bind(this)).add("keydown",this.#i.bind(this)).add("keydown",this.#a.bind(this),{capture:!0})})}#s(t){const e=document.activeElement;if(!t.key||!this.$state.canSeek()||e?.matches(Vs))return;let{method:s,value:i}=this.#n(t);if(!C(i)&&!Y(i)){i?.onKeyUp?.({event:t,player:this.#t.player,remote:this.#t.remote}),i?.callback?.(t,this.#t.remote);return}s?.startsWith("seek")&&(t.preventDefault(),t.stopPropagation(),this.#l?(this.#c(t,s==="seekForward"),this.#l=null):(this.#t.remote.seek(this.#r,t),this.#r=void 0)),s?.startsWith("volume")&&this.el.querySelector("[data-media-volume-slider]")?.dispatchEvent(new KeyboardEvent("keyup",{key:s==="volumeUp"?"Up":"Down",shiftKey:t.shiftKey,trigger:t}))}#i(t){if(!t.key||Gt.has(t.key))return;const e=document.activeElement;if(e?.matches(Vs)||Yt(t)&&e?.matches(Ua))return;let{method:s,value:i}=this.#n(t),n=!t.metaKey&&/^[0-9]$/.test(t.key);if(!C(i)&&!Y(i)&&!n){i?.onKeyDown?.({event:t,player:this.#t.player,remote:this.#t.remote}),i?.callback?.(t,this.#t.remote);return}if(!s&&n&&!Ya(t)){t.preventDefault(),t.stopPropagation(),this.#t.remote.seek(this.$state.duration()/10*Number(t.key),t);return}if(s){switch(t.preventDefault(),t.stopPropagation(),s){case"seekForward":case"seekBackward":this.#u(t,s,s==="seekForward");break;case"volumeUp":case"volumeDown":const r=this.el.querySelector("[data-media-volume-slider]");if(r)r.dispatchEvent(new KeyboardEvent("keydown",{key:s==="volumeUp"?"Up":"Down",shiftKey:t.shiftKey,trigger:t}));else{const d=t.shiftKey?.1:.05;this.#t.remote.changeVolume(this.$state.volume()+(s==="volumeUp"?+d:-d),t)}break;case"toggleFullscreen":this.#t.remote.toggleFullscreen("prefer-media",t);break;case"speedUp":case"slowDown":const o=this.$state.playbackRate();this.#t.remote.changePlaybackRate(Math.max(.25,Math.min(2,o+(s==="speedUp"?.25:-.25))),t);break;default:this.#t.remote[s]?.(t)}this.$state.lastKeyboardAction.set({action:s,event:t})}}#a(t){Ka(t.target)&&this.#n(t).method&&t.preventDefault()}#n(t){const e={...this.$props.keyShortcuts(),...this.#t.ariaKeys},s=Object.keys(e).find(i=>{const n=e[i],r=Y(n)?n.join(" "):C(n)?n:n?.keys;return(Y(r)?r:r?.split(" "))?.map(d=>ja(d).replace(/Control/g,"Ctrl").split("+"))?.some(d=>{const c=new Set(d.filter(u=>Gt.has(u)));"<>".includes(t.key)&&c.add("Shift");for(const u of Gt){const p=u.toLowerCase()+"Key";if(!c.has(u)&&t[p])return!1}return d.every(u=>Gt.has(u)?t[u.toLowerCase()+"Key"]:t.key===u.replace("Space"," "))})});return{method:s,value:s?e[s]:null}}#r;#o(t,e){const s=t.shiftKey?10:5;return this.#r=Math.max(0,Math.min((this.#r??this.$state.currentTime())+(e==="seekForward"?+s:-s),this.$state.duration()))}#l=null;#c(t,e){this.#l?.dispatchEvent(new KeyboardEvent(t.type,{key:e?"Right":"Left",shiftKey:t.shiftKey,trigger:t}))}#u(t,e,s){this.$state.canSeek()&&(this.#l||(this.#l=this.el.querySelector("[data-media-time-slider]")),this.#l?this.#c(t,s):this.#t.remote.seeking(this.#o(t,e),t))}}const za=["!","@","#","$","%","^","&","*","(",")"];function ja(a){return a.replace(/Shift\+(\d)/g,(t,e)=>za[e-1])}function Ya(a){for(const t of Gt)if(a[t.toLowerCase()+"Key"])return!0;return!1}const Xa={artist:"",artwork:null,autoplay:!1,autoPlay:!1,clipStartTime:0,clipEndTime:0,controls:!1,currentTime:0,crossorigin:null,crossOrigin:null,duration:-1,fullscreenOrientation:"landscape",googleCast:{},load:"visible",posterLoad:"visible",logLevel:"silent",loop:!1,muted:!1,paused:!0,playsinline:!1,playsInline:!1,playbackRate:1,poster:"",preload:"metadata",preferNativeHLS:!1,src:"",title:"",controlsDelay:1e3,hideControlsOnMouseLeave:!1,viewType:"unknown",streamType:"unknown",volume:1,liveEdgeTolerance:10,minLiveDVRWindow:60,keyDisabled:!1,keyTarget:"player",keyShortcuts:Wa,storage:null},Rs=new ft({artist:"",artwork:null,audioTrack:null,audioTracks:[],autoPlay:!1,autoPlayError:null,audioGain:null,buffered:new ae,canLoad:!1,canLoadPoster:!1,canFullscreen:!1,canOrientScreen:As(),canPictureInPicture:!1,canPlay:!1,clipStartTime:0,clipEndTime:0,controls:!1,get iOSControls(){return Ms&&this.mediaType==="video"&&(!this.playsInline||!wt.fullscreenEnabled&&this.fullscreen)},get nativeControls(){return this.controls||this.iOSControls},controlsVisible:!1,get controlsHidden(){return!this.controlsVisible},crossOrigin:null,ended:!1,error:null,fullscreen:!1,get loop(){return this.providedLoop||this.userPrefersLoop},logLevel:"silent",mediaType:"unknown",muted:!1,paused:!0,played:new ae,playing:!1,playsInline:!1,pictureInPicture:!1,preload:"metadata",playbackRate:1,qualities:[],quality:null,autoQuality:!1,canSetQuality:!0,canSetPlaybackRate:!0,canSetVolume:!1,canSetAudioGain:!1,seekable:new ae,seeking:!1,source:{src:"",type:""},sources:[],started:!1,textTracks:[],textTrack:null,get hasCaptions(){return this.textTracks.filter(U).length>0},volume:1,waiting:!1,realCurrentTime:0,get currentTime(){return this.ended?this.duration:this.clipStartTime>0?Math.max(0,Math.min(this.realCurrentTime-this.clipStartTime,this.duration)):this.realCurrentTime},providedDuration:-1,intrinsicDuration:0,get duration(){return this.seekableWindow},get title(){return this.providedTitle||this.inferredTitle},get poster(){return this.providedPoster||this.inferredPoster},get viewType(){return this.providedViewType!=="unknown"?this.providedViewType:this.inferredViewType},get streamType(){return this.providedStreamType!=="unknown"?this.providedStreamType:this.inferredStreamType},get currentSrc(){return this.source},get bufferedStart(){const a=qs(this.buffered)??0;return Math.max(a,this.clipStartTime)},get bufferedEnd(){const a=St(this.buffered)??0;return Math.min(this.seekableEnd,Math.max(0,a-this.clipStartTime))},get bufferedWindow(){return Math.max(0,this.bufferedEnd-this.bufferedStart)},get seekableStart(){if(this.isLiveDVR&&this.liveDVRWindow>0)return Math.max(0,this.seekableEnd-this.liveDVRWindow);const a=qs(this.seekable)??0;return Math.max(a,this.clipStartTime)},get seekableEnd(){if(this.providedDuration>0)return this.providedDuration;const a=this.liveSyncPosition>0?this.liveSyncPosition:this.canPlay?St(this.seekable)??1/0:0;return this.clipEndTime>0?Math.min(this.clipEndTime,a):a},get seekableWindow(){const a=this.seekableEnd-this.seekableStart;return isNaN(a)?1/0:Math.max(0,a)},canAirPlay:!1,canGoogleCast:!1,remotePlaybackState:"disconnected",remotePlaybackType:"none",remotePlaybackLoader:null,remotePlaybackInfo:null,get isAirPlayConnected(){return this.remotePlaybackType==="airplay"&&this.remotePlaybackState==="connected"},get isGoogleCastConnected(){return this.remotePlaybackType==="google-cast"&&this.remotePlaybackState==="connected"},pointer:"fine",orientation:"landscape",width:0,height:0,mediaWidth:0,mediaHeight:0,lastKeyboardAction:null,userBehindLiveEdge:!1,liveEdgeTolerance:10,minLiveDVRWindow:60,get canSeek(){return/unknown|on-demand|:dvr/.test(this.streamType)&&Number.isFinite(this.duration)&&(!this.isLiveDVR||this.duration>=this.liveDVRWindow)},get live(){return this.streamType.includes("live")||!Number.isFinite(this.duration)},get liveEdgeStart(){return this.live&&Number.isFinite(this.seekableEnd)?Math.max(0,this.seekableEnd-this.liveEdgeTolerance):0},get liveEdge(){return this.live&&(!this.canSeek||!this.userBehindLiveEdge&&this.currentTime>=this.liveEdgeStart)},get liveEdgeWindow(){return this.live&&Number.isFinite(this.seekableEnd)?this.seekableEnd-this.liveEdgeStart:0},get isLiveDVR(){return/:dvr/.test(this.streamType)},get liveDVRWindow(){return Math.max(this.inferredLiveDVRWindow,this.minLiveDVRWindow)},autoPlaying:!1,providedTitle:"",inferredTitle:"",providedLoop:!1,userPrefersLoop:!1,providedPoster:"",inferredPoster:"",inferredViewType:"unknown",providedViewType:"unknown",providedStreamType:"unknown",inferredStreamType:"unknown",liveSyncPosition:null,inferredLiveDVRWindow:0,savedState:null}),Os=new Set(["autoPlayError","autoPlaying","buffered","canPlay","error","paused","played","playing","seekable","seeking","waiting"]),Ja=new Set([...Os,"ended","inferredPoster","inferredStreamType","inferredTitle","intrinsicDuration","inferredLiveDVRWindow","liveSyncPosition","realCurrentTime","savedState","started","userBehindLiveEdge"]);function Ns(a,t=!1){const e=t?Os:Ja;Rs.reset(a,s=>e.has(s)),dt()}function Fs(a,t){const e=a+t.clipStartTime(),s=Math.floor(a)===Math.floor(t.seekableStart()),i=Math.floor(e)===Math.floor(t.seekableEnd());return s?t.seekableStart():i?t.seekableEnd():t.isLiveDVR()&&t.liveDVRWindow()>0&&e
e.id===t)??null}toArray(){return[...this.items]}[Symbol.iterator](){return this.items.values()}[A.add](t,e){const s=this.items.length;""+s in this||Object.defineProperty(this,s,{get(){return this.items[s]}}),!this.items.includes(t)&&(this.items.push(t),this.dispatchEvent(new K("add",{detail:t,trigger:e})))}[A.remove](t,e){const s=this.items.indexOf(t);s>=0&&(this[A.onRemove]?.(t,e),this.items.splice(s,1),this.dispatchEvent(new K("remove",{detail:t,trigger:e})))}[A.reset](t){for(const e of[...this.items])this[A.remove](e,t);this.items=[],this[A.setReadonly](!1,t),this[A.onReset]?.()}[A.setReadonly](t,e){this[A.readonly]!==t&&(this[A.readonly]=t,this.dispatchEvent(new K("readonly-change",{detail:t,trigger:e})))}}const Kt=Symbol(0);class Bs extends Hs{get selected(){return this.items.find(t=>t.selected)??null}get selectedIndex(){return this.items.findIndex(t=>t.selected)}[A.onRemove](t,e){this[A.select](t,!1,e)}[A.add](t,e){t[Kt]=!1,Object.defineProperty(t,"selected",{get(){return this[Kt]},set:s=>{this.readonly||(this[A.onUserSelect]?.(),this[A.select](t,s))}}),super[A.add](t,e)}[A.select](t,e,s){if(e===t?.[Kt])return;const i=this.selected;t&&(t[Kt]=e),(e?i!==t:i===t)&&(i&&(i[Kt]=!1),this.dispatchEvent(new K("change",{detail:{prev:i,current:this.selected},trigger:s})))}}class Za extends Bs{#t=!1;switch="current";get auto(){return this.#t||this.readonly}[it.enableAuto];[A.onUserSelect](){this[it.setAuto](!1)}[A.onReset](t){this[it.enableAuto]=void 0,this[it.setAuto](!1,t)}autoSelect(t){this.readonly||this.#t||!this[it.enableAuto]||(this[it.enableAuto]?.(t),this[it.setAuto](!0,t))}getBySrc(t){return this.items.find(e=>e.src===t)}[it.setAuto](t,e){this.#t!==t&&(this.#t=t,this.dispatchEvent(new K("auto-change",{detail:t,trigger:e})))}}class Gs extends xt{#t;#e;constructor(t,e){super(),this.#t=t,this.#e=e}async onAttach(t){const e=this.$props[this.#t]();if(e==="eager")requestAnimationFrame(this.#e);else if(e==="idle")na(this.#e);else if(e==="visible"){let s,i=new IntersectionObserver(n=>{this.scope&&n[0].isIntersecting&&(s?.(),s=void 0,this.#e())});i.observe(t),s=P(()=>i.disconnect())}}}class tn{#t;#e;constructor(t,e){this.#t=t,this.#e=e}notify(t,...e){this.#t(new K(t,{detail:e?.[0],trigger:e?.[1]}))}async ready(t,e){return Xt(async()=>{this.#e;const{autoPlay:s,canPlay:i,started:n,duration:r,seekable:o,buffered:d,remotePlaybackInfo:c,playsInline:u,savedState:p,source:v}=this.#e.$state;if(i())return;const w={duration:t?.duration??r(),seekable:t?.seekable??o(),buffered:t?.buffered??d(),provider:this.#e.$provider()};this.notify("can-play",w,e),dt();let S=this.#e.$provider(),{storage:N,qualities:F}=this.#e,{muted:nt,volume:$t,clipStartTime:Vt,playbackRate:lt}=this.#e.$props;await N?.onLoad?.(v());const Rt=p()?.currentTime,Ot=p()?.paused,Se=await N?.getTime(),$s=Rt??Se??Vt(),ia=Ot===!1||Ot!==!0&&!n()&&s();if(S){S.setVolume(await N?.getVolume()??$t()),S.setMuted(nt()||!!await N?.getMuted());const At=await N?.getAudioGain()??1;At>1&&S.audioGain?.setGain?.(At),S.setPlaybackRate?.(await N?.getPlaybackRate()??lt()),S.setPlaysInline?.(u()),$s>0&&S.setCurrentTime($s)}const Nt=await N?.getVideoQuality();if(Nt&&F.length){let At=null,ws=1/0;for(const jt of F){const Ts=Math.abs(Nt.width-jt.width)+Math.abs(Nt.height-jt.height)+(Nt.bitrate?Math.abs(Nt.bitrate-(jt.bitrate??0)):0);Ts0&&this.notify("started",void 0,e),c.set(null)})}async#s(t){const{player:e,$state:{autoPlaying:s,muted:i}}=this.#e;s.set(!0);const n=new K("auto-play-attempt",{trigger:t});try{await e.play(n)}catch{}}}const Ve=wt.fullscreenEnabled;class en extends st{#t=!1;#e=!1;get active(){return this.#e}get supported(){return Ve}onConnect(){new q(wt).add("fullscreenchange",this.#i.bind(this)).add("fullscreenerror",this.#a.bind(this)),P(this.#s.bind(this))}async#s(){Ve&&await this.exit()}#i(t){const e=Re(this.el);e!==this.#e&&(e||(this.#t=!1),this.#e=e,this.dispatch("fullscreen-change",{detail:e,trigger:t}))}#a(t){this.#t&&(this.dispatch("fullscreen-error",{detail:null,trigger:t}),this.#t=!1)}async enter(){try{return this.#t=!0,!this.el||Re(this.el)?void 0:(Ks(),wt.requestFullscreen(this.el))}catch(t){throw this.#t=!1,t}}async exit(){if(!(!this.el||!Re(this.el)))return Ks(),wt.exitFullscreen()}}function Re(a){if(wt.fullscreenElement===a)return!0;try{return a.matches(wt.fullscreenPseudoClass)}catch{return!1}}function Ks(){if(!Ve)throw Error("[vidstack] no fullscreen API")}class ke extends st{#t=y(this.#r());#e=y(!1);#s;get type(){return this.#t()}get locked(){return this.#e()}get portrait(){return this.#t().startsWith("portrait")}get landscape(){return this.#t().startsWith("landscape")}static supported=As();get supported(){return ke.supported}onConnect(){if(this.supported)G(screen.orientation,"change",this.#a.bind(this));else{const t=window.matchMedia("(orientation: landscape)");t.onchange=this.#a.bind(this),P(()=>t.onchange=null)}P(this.#i.bind(this))}async#i(){this.supported&&this.#e()&&await this.unlock()}#a(t){this.#t.set(this.#r()),this.dispatch("orientation-change",{detail:{orientation:f(this.#t),lock:this.#s},trigger:t})}async lock(t){f(this.#e)||this.#s===t||(this.#n(),await screen.orientation.lock(t),this.#e.set(!0),this.#s=t)}async unlock(){f(this.#e)&&(this.#n(),this.#s=void 0,await screen.orientation.unlock(),this.#e.set(!1))}#n(){if(!this.supported)throw Error("[vidstack] no orientation API")}#r(){return this.supported?window.screen.orientation.type:window.innerWidth>=window.innerHeight?"landscape-primary":"portrait-primary"}}class sn{#t=new Map;enqueue(t,e){this.#t.set(t,e)}serve(t){const e=this.peek(t);return this.#t.delete(t),e}peek(t){return this.#t.get(t)}delete(t){this.#t.delete(t)}clear(){this.#t.clear()}}class Ws{#t=!1;#e=ks();#s=new Map;get size(){return this.#s.size}get isServing(){return this.#t}async waitForFlush(){this.#t||await this.#e.promise}enqueue(t,e){if(this.#t){e();return}this.#s.delete(t),this.#s.set(t,e)}serve(t){this.#s.get(t)?.(),this.#s.delete(t)}start(){this.#i(),this.#t=!0,this.#s.size>0&&this.#i()}stop(){this.#t=!1}reset(){this.stop(),this.#s.clear(),this.#a()}#i(){for(const t of this.#s.keys())this.serve(t);this.#a()}#a(){this.#e.resolve(),this.#e=ks()}}function Us(a,t){const e=t.composedPath()[0];return Ss(e)&&a.contains(e)}const Oe=new Set;{let a=function(){for(const t of Oe)try{t()}catch{}window.requestAnimationFrame(a)};a()}function an(a){return Oe.add(a),()=>Oe.delete(a)}function L(a,t,e){a.hasAttribute(t)||a.setAttribute(t,e)}function gt(a,t){if(a.hasAttribute("aria-label")||a.hasAttribute("data-no-label"))return;if(!xe(t)){g(a,"aria-label",t);return}function e(){g(a,"aria-label",t())}l(e)}function Qs(a){const t=getComputedStyle(a);return t.display!=="none"&&parseInt(t.opacity)>0}function nn(a){return!!a&&("checkVisibility"in a?a.checkVisibility({checkOpacity:!0,checkVisibilityCSS:!0}):Qs(a))}function zs(a,t){return an(()=>t(nn(a)))}function js(a,t,e){for(;t;){if(t===a)return!0;if(e?.(t))break;t=t.parentElement}return!1}function bt(a,t){return new q(a).add("pointerup",e=>{e.button===0&&!e.defaultPrevented&&t(e)}).add("keydown",e=>{Yt(e)&&t(e)})}function Ne(a){return Jt(a)&&(a.touches.length>1||a.changedTouches.length>1)}function ht(a){let t=ra(),e=window.requestAnimationFrame(()=>{Ft(a,t),e=-1});return()=>void window.cancelAnimationFrame(e)}function Fe(a,t,e){let s,i=a,n=a.parentElement,r=a.content.firstElementChild,o=[];!r&&a.firstElementChild&&(a.innerHTML=a.firstElementChild.outerHTML,a.firstElementChild.remove(),r=a.content.firstElementChild);for(let d=0;d{for(let d=0;de.includes("left")?`calc(-1 * ${p})`:p,u=p=>d?`calc(-1 * ${p})`:p;return oa(t,a,()=>{la(t,a,{placement:o,middleware:[...r.middleware??[],da({fallbackAxisSideDirection:"start",crossAxis:!1}),ca()],...r}).then(({x:p,y:v,middlewareData:w})=>{const S=!!w.flip?.index;d=e.includes(S?"bottom":"top"),a.setAttribute("data-placement",S?e.startsWith("top")?e.replace("top","bottom"):e.replace("bottom","top"):e),Object.assign(a.style,{top:`calc(${v+"px"} + ${u(n?n+"px":`var(--${s}-y-offset, 0px)`)})`,left:`calc(${p+"px"} + ${c(i?i+"px":`var(--${s}-x-offset, 0px)`)})`})})})}function rn(a){return getComputedStyle(a).animationName!=="none"}function on(a){const t=document.createElement("slot");return t.name=a,t}function ln(a){const t=y(!1);return l(()=>{const e=a();e&&new q(e).add("transitionstart",()=>t.set(!0)).add("transitionend",()=>t.set(!1))}),t}function Xs(a,t){function e(){const s=a();if(!s)return;t();const i=new ResizeObserver(ct(t));return i.observe(s),()=>i.disconnect()}l(e)}function dn(a){const t=cn(a),e=un(a);let s=!1;return _(()=>{const i=t();return s&&!i?!1:(s=i,i||e())})}function cn(a){const t=y(!1);return l(()=>{const e=a();if(!e){t.set(!1);return}new q(e).add("mouseenter",()=>t.set(!0)).add("mouseleave",()=>t.set(!1))}),t}function un(a){const t=y(!1);return l(()=>{const e=a();if(!e){t.set(!1);return}new q(e).add("focusin",()=>t.set(!0)).add("focusout",()=>t.set(!1))}),t}function yt(a){return a instanceof HTMLElement}function hn(){return y("light")}function Js(a,t){l(()=>{const s=t();if(s==="system"){const i=hn();l(()=>e(i()));return}e(s)});function e(s){Pe(a,"light",s==="light"),Pe(a,"dark",s==="dark")}}class pn extends xt{#t=-2;#e=!1;#s=y(!1);#i=y(!1);#a=null;#n=y(!0);defaultDelay=1e3;get canIdle(){return this.#n()}set canIdle(t){this.#n.set(t)}get hideOnMouseLeave(){const{hideControlsOnMouseLeave:t}=this.$props;return this.#s()||t()}set hideOnMouseLeave(t){this.#s.set(t)}get showing(){return this.$state.controlsVisible()}show(t=0,e){this.#m(),this.#e||this.#g(!0,t,e)}hide(t=this.defaultDelay,e){this.#m(),this.#e||this.#g(!1,t,e)}pause(t){this.#e=!0,this.#m(),this.#g(!0,0,t)}resume(t){this.#e=!1,!this.$state.paused()&&this.#g(!1,this.defaultDelay,t)}onConnect(){l(this.#r.bind(this))}#r(){const{viewType:t}=this.$state;if(!this.el||!this.#n())return;if(t()==="audio"){this.show();return}l(this.#o.bind(this)),l(this.#l.bind(this));const e=this.#c.bind(this),s=this.#u.bind(this),i=this.#h.bind(this);new q(this.el).add("can-play",n=>this.show(0,n)).add("play",e).add("pause",s).add("end",i).add("auto-play-fail",s)}#o(){if(!this.el)return;const{started:t,pointer:e,paused:s}=this.$state;if(!t()||e()!=="fine")return;const i=new q(this.el),n=this.hideOnMouseLeave;(!n||!this.#i())&&l(()=>{s()||i.add("pointermove",this.#b.bind(this))}),n&&i.add("mouseenter",this.#d.bind(this)).add("mouseleave",this.#p.bind(this))}#l(){const{paused:t,started:e,autoPlayError:s}=this.$state;if(t()||s()&&!e())return;const i=this.#b.bind(this);l(()=>{if(!this.el)return;const n=this.$state.pointer(),r=n==="coarse",o=new q(this.el),d=[r?"touchend":"pointerup","keydown"];for(const c of d)o.add(c,i,{passive:!1})})}#c(t){t.triggers.hasType("ended")||(this.show(0,t),this.hide(void 0,t))}#u(t){this.show(0,t)}#h(t){const{loop:e}=this.$state;e()&&this.hide(0,t)}#d(t){this.#i.set(!1),this.show(0,t),this.hide(void 0,t)}#p(t){this.#i.set(!0),this.hide(0,t)}#m(){window.clearTimeout(this.#t),this.#t=-1}#b(t){t.MEDIA_GESTURE||this.#e||Ne(t)||(Zt(t)&&(t.key==="Escape"?(this.el?.focus(),this.#a=null):this.#a&&(t.preventDefault(),requestAnimationFrame(()=>{this.#a?.focus(),this.#a=null}))),this.show(0,t),this.hide(this.defaultDelay,t))}#g(t,e,s){if(e===0){this.#y(t,s);return}this.#t=window.setTimeout(()=>{this.scope&&this.#y(t&&!this.#e,s)},e)}#y(t,e){this.$state.controlsVisible()!==t&&(this.$state.controlsVisible.set(t),!t&&document.activeElement&&this.el?.contains(document.activeElement)&&(this.#a=document.activeElement,requestAnimationFrame(()=>{this.el?.focus({preventScroll:!0})})),this.dispatch("controls-change",{detail:t,trigger:e}))}}class mn extends xt{#t;#e;#s;controls;#i;#a;#n;#r=new Ws;constructor(t,e,s){super(),this.#t=t,this.#e=e,this.#s=s,this.#n=s.$provider,this.controls=new pn,this.#i=new en,this.#a=new ke}onAttach(){this.listen("fullscreen-change",this.#x.bind(this))}onConnect(t){const e=Object.getOwnPropertyNames(Object.getPrototypeOf(this)),s=new q(t),i=this.#c.bind(this);for(const n of e)n.startsWith("media-")&&s.add(n,i);this.#o(),l(this.#l.bind(this)),l(this.#m.bind(this)),l(this.#b.bind(this)),l(this.#g.bind(this)),l(this.#y.bind(this)),l(this.#$.bind(this)),l(this.#w.bind(this))}onDestroy(){try{const t=this.createEvent("destroy"),{pictureInPicture:e,fullscreen:s}=this.$state;s()&&this.exitFullscreen("prefer-media",t),e()&&this.exitPictureInPicture(t)}catch{}this.#r.reset()}#o(){const{load:t}=this.$props,{canLoad:e}=this.$state;if(t()!=="play"||e())return;const s=this.listen("media-play-request",i=>{this.#u(i),s()})}#l(){const t=this.#n(),e=this.$state.canPlay();return t&&e&&this.#r.start(),()=>{this.#r.stop()}}#c(t){t.stopPropagation(),!t.defaultPrevented&&this[t.type]&&(f(this.#n)?this[t.type](t):this.#r.enqueue(t.type,()=>{f(this.#n)&&this[t.type](t)}))}async play(t){const{canPlay:e,paused:s,autoPlaying:i}=this.$state;if(this.#u(t)||!f(s))return;t&&this.#e.queue.enqueue("media-play-request",t);const n=f(i);try{const r=f(this.#n);return Ge(r,f(e)),await r.play()}catch(r){const o=this.createEvent("play-fail",{detail:_e(r),trigger:t});throw o.autoPlay=n,this.#t.handle(o),r}}#u(t){const{load:e}=this.$props,{canLoad:s}=this.$state;if(e()==="play"&&!s()){const i=this.createEvent("media-start-loading",{trigger:t});return this.dispatchEvent(i),this.#r.enqueue("media-play-request",async()=>{try{await this.play(i)}catch{}}),!0}return!1}async pause(t){const{canPlay:e,paused:s}=this.$state;if(!f(s)){t&&this.#e.queue.enqueue("media-pause-request",t);try{const i=f(this.#n);return Ge(i,f(e)),await i.pause()}catch(i){throw this.#e.queue.delete("media-pause-request"),i}}}setAudioGain(t,e){const{audioGain:s,canSetAudioGain:i}=this.$state;if(s()===t)return;const n=this.#n();if(!n?.audioGain||!i())throw Error("[vidstack] audio gain api not available");e&&this.#e.queue.enqueue("media-audio-gain-change-request",e),n.audioGain.setGain(t)}seekToLiveEdge(t){const{canPlay:e,live:s,liveEdge:i,canSeek:n,liveSyncPosition:r,seekableEnd:o,userBehindLiveEdge:d}=this.$state;if(d.set(!1),f(()=>!s()||i()||!n()))return;const c=f(this.#n);Ge(c,f(e)),t&&this.#e.queue.enqueue("media-seek-request",t);const u=o()-2;c.setCurrentTime(Math.min(u,r()??u))}#h=!1;async enterFullscreen(t="prefer-media",e){const s=this.#d(t);if(Zs(t,s),!s.active)return f(this.$state.pictureInPicture)&&(this.#h=!0,await this.exitPictureInPicture(e)),e&&this.#e.queue.enqueue("media-enter-fullscreen-request",e),s.enter()}async exitFullscreen(t="prefer-media",e){const s=this.#d(t);if(Zs(t,s),!!s.active){e&&this.#e.queue.enqueue("media-exit-fullscreen-request",e);try{const i=await s.exit();return this.#h&&f(this.$state.canPictureInPicture)&&await this.enterPictureInPicture(),i}finally{this.#h=!1}}}#d(t){const e=f(this.#n);return t==="prefer-media"&&this.#i.supported||t==="media"?this.#i:e?.fullscreen}async enterPictureInPicture(t){if(this.#p(),!this.$state.pictureInPicture())return t&&this.#e.queue.enqueue("media-enter-pip-request",t),await this.#n().pictureInPicture.enter()}async exitPictureInPicture(t){if(this.#p(),!!this.$state.pictureInPicture())return t&&this.#e.queue.enqueue("media-exit-pip-request",t),await this.#n().pictureInPicture.exit()}#p(){if(!this.$state.canPictureInPicture())throw Error("[vidstack] no pip support")}#m(){this.controls.defaultDelay=this.$props.controlsDelay()}#b(){const{canSetAudioGain:t}=this.$state,e=!!this.#n()?.audioGain?.supported;t.set(e)}#g(){const{canAirPlay:t}=this.$state,e=!!this.#n()?.airPlay?.supported;t.set(e)}#y(){const{canGoogleCast:t,source:e}=this.$state,s=Ea&&!Aa&&Ma(e());t.set(s)}#$(){const{canFullscreen:t}=this.$state,e=this.#i.supported||!!this.#n()?.fullscreen?.supported;t.set(e)}#w(){const{canPictureInPicture:t}=this.$state,e=!!this.#n()?.pictureInPicture?.supported;t.set(e)}async"media-airplay-request"(t){try{await this.requestAirPlay(t)}catch{}}async requestAirPlay(t){try{const e=this.#n()?.airPlay;if(!e?.supported)throw Error("No AirPlay adapter.");return t&&this.#e.queue.enqueue("media-airplay-request",t),await e.prompt()}catch(e){throw this.#e.queue.delete("media-airplay-request"),e}}async"media-google-cast-request"(t){try{await this.requestGoogleCast(t)}catch{}}#v;async requestGoogleCast(t){try{const{canGoogleCast:e}=this.$state;if(!f(e)){const i=Error("Cast not available.");throw i.code="CAST_NOT_AVAILABLE",i}if(Bt("https://www.gstatic.com"),!this.#v){const i=await import("./vidstack-Bwp7eOqU.js");this.#v=new i.GoogleCastLoader}await this.#v.prompt(this.#s),t&&this.#e.queue.enqueue("media-google-cast-request",t);const s=f(this.$state.remotePlaybackState)!=="disconnected";s&&this.$state.savedState.set({paused:f(this.$state.paused),currentTime:f(this.$state.currentTime)}),this.$state.remotePlaybackLoader.set(s?this.#v:null)}catch(e){throw this.#e.queue.delete("media-google-cast-request"),e}}"media-clip-start-change-request"(t){const{clipStartTime:e}=this.$state;e.set(t.detail)}"media-clip-end-change-request"(t){const{clipEndTime:e}=this.$state;e.set(t.detail),this.dispatch("duration-change",{detail:t.detail,trigger:t})}"media-duration-change-request"(t){const{providedDuration:e,clipEndTime:s}=this.$state;e.set(t.detail),s()<=0&&this.dispatch("duration-change",{detail:t.detail,trigger:t})}"media-audio-track-change-request"(t){const{logger:e,audioTracks:s}=this.#s;if(s.readonly)return;const i=t.detail,n=s[i];if(n){const r=t.type;this.#e.queue.enqueue(r,t),n.selected=!0}}async"media-enter-fullscreen-request"(t){try{await this.enterFullscreen(t.detail,t)}catch(e){this.#f(e,t)}}async"media-exit-fullscreen-request"(t){try{await this.exitFullscreen(t.detail,t)}catch(e){this.#f(e,t)}}async#x(t){const e=f(this.$props.fullscreenOrientation),s=t.detail;if(!(ua(e)||e==="none"||!this.#a.supported))if(s){if(this.#a.locked)return;this.dispatch("media-orientation-lock-request",{detail:e,trigger:t})}else this.#a.locked&&this.dispatch("media-orientation-unlock-request",{trigger:t})}#f(t,e){this.#t.handle(this.createEvent("fullscreen-error",{detail:_e(t)}))}async"media-orientation-lock-request"(t){const e=t.type;try{this.#e.queue.enqueue(e,t),await this.#a.lock(t.detail)}catch{this.#e.queue.delete(e)}}async"media-orientation-unlock-request"(t){const e=t.type;try{this.#e.queue.enqueue(e,t),await this.#a.unlock()}catch{this.#e.queue.delete(e)}}async"media-enter-pip-request"(t){try{await this.enterPictureInPicture(t)}catch(e){this.#T(e,t)}}async"media-exit-pip-request"(t){try{await this.exitPictureInPicture(t)}catch(e){this.#T(e,t)}}#T(t,e){this.#t.handle(this.createEvent("picture-in-picture-error",{detail:_e(t)}))}"media-live-edge-request"(t){const{live:e,liveEdge:s,canSeek:i}=this.$state;if(!(!e()||s()||!i())){this.#e.queue.enqueue("media-seek-request",t);try{this.seekToLiveEdge()}catch{this.#e.queue.delete("media-seek-request")}}}async"media-loop-request"(t){try{this.#e.looping=!0,this.#e.replaying=!0,await this.play(t)}catch{this.#e.looping=!1}}"media-user-loop-change-request"(t){this.$state.userPrefersLoop.set(t.detail)}async"media-pause-request"(t){if(!this.$state.paused())try{await this.pause(t)}catch{}}async"media-play-request"(t){if(this.$state.paused())try{await this.play(t)}catch{}}"media-rate-change-request"(t){const{playbackRate:e,canSetPlaybackRate:s}=this.$state;if(e()===t.detail||!s())return;const i=this.#n();i?.setPlaybackRate&&(this.#e.queue.enqueue("media-rate-change-request",t),i.setPlaybackRate(t.detail))}"media-audio-gain-change-request"(t){try{this.setAudioGain(t.detail,t)}catch{}}"media-quality-change-request"(t){const{qualities:e,storage:s,logger:i}=this.#s;if(e.readonly)return;this.#e.queue.enqueue("media-quality-change-request",t);const n=t.detail;if(n<0)e.autoSelect(t),t.isOriginTrusted&&s?.setVideoQuality?.(null);else{const r=e[n];r&&(r.selected=!0,t.isOriginTrusted&&s?.setVideoQuality?.({id:r.id,width:r.width,height:r.height,bitrate:r.bitrate}))}}"media-pause-controls-request"(t){const e=t.type;this.#e.queue.enqueue(e,t),this.controls.pause(t)}"media-resume-controls-request"(t){const e=t.type;this.#e.queue.enqueue(e,t),this.controls.resume(t)}"media-seek-request"(t){const{canSeek:e,ended:s,live:i,seekableEnd:n,userBehindLiveEdge:r}=this.$state,o=t.detail;s()&&(this.#e.replaying=!0);const d=t.type;this.#e.seeking=!1,this.#e.queue.delete(d);const c=Fs(o,this.$state);!Number.isFinite(c)||!e()||(this.#e.queue.enqueue(d,t),this.#n().setCurrentTime(c),i()&&t.isOriginTrusted&&Math.abs(n()-c)>=2&&r.set(!0))}"media-seeking-request"(t){const e=t.type;this.#e.queue.enqueue(e,t),this.$state.seeking.set(!0),this.#e.seeking=!0}"media-start-loading"(t){if(this.$state.canLoad())return;const e=t.type;this.#e.queue.enqueue(e,t),this.#t.handle(this.createEvent("can-load"))}"media-poster-start-loading"(t){if(this.$state.canLoadPoster())return;const e=t.type;this.#e.queue.enqueue(e,t),this.#t.handle(this.createEvent("can-load-poster"))}"media-text-track-change-request"(t){const{index:e,mode:s}=t.detail,i=this.#s.textTracks[e];if(i){const n=t.type;this.#e.queue.enqueue(n,t),i.setMode(s,t)}}"media-mute-request"(t){if(this.$state.muted())return;const e=t.type;this.#e.queue.enqueue(e,t),this.#n().setMuted(!0)}"media-unmute-request"(t){const{muted:e,volume:s}=this.$state;if(!e())return;const i=t.type;this.#e.queue.enqueue(i,t),this.#s.$provider().setMuted(!1),s()===0&&(this.#e.queue.enqueue(i,t),this.#n().setVolume(.25))}"media-volume-change-request"(t){const{muted:e,volume:s}=this.$state,i=t.detail;if(s()===i)return;const n=t.type;this.#e.queue.enqueue(n,t),this.#n().setVolume(i),i>0&&e()&&(this.#e.queue.enqueue(n,t),this.#n().setMuted(!1))}#k(t,e,s){}}function Ge(a,t){if(!(a&&t))throw Error("[vidstack] media not ready")}function Zs(a,t){if(!t?.supported)throw Error("[vidstack] no fullscreen support")}class fn{seeking=!1;looping=!1;replaying=!1;queue=new sn}function Ke(a){return!C(a)&&"width"in a&&"height"in a&&ot(a.width)&&ot(a.height)}const gn=new Set(["auto-play","auto-play-fail","can-load","sources-change","source-change","load-start","abort","error","loaded-metadata","loaded-data","can-play","play","play-fail","pause","playing","seeking","seeked","waiting"]);class bn extends xt{#t;#e;#s=new Map;#i=!1;#a=[];#n=[-1,-1];#r=!1;#o;constructor(t,e){super(),this.#t=t,this.#e=e}onAttach(t){t.setAttribute("aria-busy","true"),new q(this).add("fullscreen-change",this["fullscreen-change"].bind(this)).add("fullscreen-error",this["fullscreen-error"].bind(this)).add("orientation-change",this["orientation-change"].bind(this))}onConnect(t){l(this.#E.bind(this)),this.#p(),this.#m(),this.#b(),this.#c(),P(this.#u.bind(this))}onDestroy(){const{audioTracks:t,qualities:e,textTracks:s}=this.#e;t[A.reset](),e[A.reset](),s[A.reset](),this.#S()}handle(t){if(!this.scope)return;const e=t.type;Xt(()=>this[t.type]?.(t)),gn.has(e)&&this.#s.set(e,t),this.dispatch(t)}#l=!1;#c(){this.#l&&(requestAnimationFrame(()=>{this.scope&&this.#e.remote.play(new K("dom-connect"))}),this.#l=!1)}#u(){this.#l||(this.#l=!this.$state.paused(),this.#e.$provider()?.pause())}#h(){this.#I(),this.#i=!1,this.#t.replaying=!1,this.#t.looping=!1,this.#r=!1,this.#o=void 0,this.#s.clear()}#d(t,e){const s=this.#t.queue.serve(t);s&&(e.request=s,e.triggers.add(s))}#p(){this.#g(),this.#y();const t=this.#e.textTracks;new q(t).add("add",this.#g.bind(this)).add("remove",this.#g.bind(this)).add("mode-change",this.#y.bind(this))}#m(){const t=this.#e.qualities;new q(t).add("add",this.#v.bind(this)).add("remove",this.#v.bind(this)).add("change",this.#x.bind(this)).add("auto-change",this.#f.bind(this)).add("readonly-change",this.#P.bind(this))}#b(){const t=this.#e.audioTracks;new q(t).add("add",this.#$.bind(this)).add("remove",this.#$.bind(this)).add("change",this.#w.bind(this))}#g(t){const{textTracks:e}=this.$state;e.set(this.#e.textTracks.toArray()),this.dispatch("text-tracks-change",{detail:e(),trigger:t})}#y(t){t&&this.#d("media-text-track-change-request",t);const e=this.#e.textTracks.selected,{textTrack:s}=this.$state;s()!==e&&(s.set(e),this.dispatch("text-track-change",{detail:e,trigger:t}))}#$(t){const{audioTracks:e}=this.$state;e.set(this.#e.audioTracks.toArray()),this.dispatch("audio-tracks-change",{detail:e(),trigger:t})}#w(t){const{audioTrack:e}=this.$state;e.set(this.#e.audioTracks.selected),t&&this.#d("media-audio-track-change-request",t),this.dispatch("audio-track-change",{detail:e(),trigger:t})}#v(t){const{qualities:e}=this.$state;e.set(this.#e.qualities.toArray()),this.dispatch("qualities-change",{detail:e(),trigger:t})}#x(t){const{quality:e}=this.$state;e.set(this.#e.qualities.selected),t&&this.#d("media-quality-change-request",t),this.dispatch("quality-change",{detail:e(),trigger:t})}#f(){const{qualities:t}=this.#e,e=t.auto;this.$state.autoQuality.set(e),e||this.#S()}#T=null;#k(){this.#S(),this.#T=l(()=>{const{qualities:t}=this.#e,{mediaWidth:e,mediaHeight:s}=this.$state,i=e(),n=s();if(i===0||n===0)return;let r=null,o=1/0;for(const d of t){const c=Math.abs(d.width-i)+Math.abs(d.height-n);c{requestAnimationFrame(()=>{this.scope&&(this.$state.inferredViewType.set(t.detail),this.dispatch("view-type-change",{detail:n,trigger:t}))})},0)}"stream-type-change"(t){const e=this.#s.get("source-change");e&&t.triggers.add(e);const{streamType:s,inferredStreamType:i}=this.$state;i.set(t.detail),t.detail=s()}"rate-change"(t){const{storage:e}=this.#e,{canPlay:s}=this.$state;this.$state.playbackRate.set(t.detail),this.#d("media-rate-change-request",t),s()&&e?.setPlaybackRate?.(t.detail)}"remote-playback-change"(t){const{remotePlaybackState:e,remotePlaybackType:s}=this.$state,{type:i,state:n}=t.detail,r=n==="connected";s.set(i),e.set(n);const o=i==="airplay"?"media-airplay-request":"media-google-cast-request";if(r)this.#d(o,t);else{const d=this.#t.queue.peek(o);d&&(t.request=d,t.triggers.add(d))}}"sources-change"(t){const e=this.$state.sources(),s=t.detail;this.$state.sources.set(s),this.#A(e,s,t)}#A(t,e,s){let{qualities:i}=this.#e,n=!1,r=!1;for(const o of t){if(!Ke(o))continue;if(!e.some(c=>c.src===o.src)){const c=i.getBySrc(o.src);c&&(i[A.remove](c,s),r=!0)}}r&&!i.length&&(this.$state.savedState.set(null),i[A.reset](s));for(const o of e){if(!Ke(o)||i.getBySrc(o.src))continue;const d={id:o.id??o.height+"p",bitrate:null,codec:null,...o,selected:!1};i[A.add](d,s),n=!0}n&&!i[it.enableAuto]&&(this.#k(),i[it.enableAuto]=this.#k.bind(this),i[it.setAuto](!0,s))}"source-change"(t){t.isQualityChange=t.originEvent?.type==="quality-change";const e=t.detail;this.#C(t,t.isQualityChange),this.#s.set(t.type,t),this.$state.source.set(e),this.el?.setAttribute("aria-busy","true")}#C(t,e=!1){const{audioTracks:s,qualities:i}=this.#e;if(!e){this.#a=[],this.#n=[-1,-1],s[A.reset](t),i[A.reset](t),Ns(this.$state,e),this.#h();return}Ns(this.$state,e),this.#h()}abort(t){const e=this.#s.get("source-change");e&&t.triggers.add(e);const s=this.#s.get("can-load");s&&!t.triggers.hasType("can-load")&&t.triggers.add(s)}"load-start"(t){const e=this.#s.get("source-change");e&&t.triggers.add(e)}error(t){this.$state.error.set(t.detail);const e=this.#s.get("abort");e&&t.triggers.add(e)}"loaded-metadata"(t){const e=this.#s.get("load-start");e&&t.triggers.add(e)}"loaded-data"(t){const e=this.#s.get("load-start");e&&t.triggers.add(e)}"can-play"(t){const e=this.#s.get("loaded-metadata");e&&t.triggers.add(e),this.#M(t.detail),this.el?.setAttribute("aria-busy","false")}"can-play-through"(t){this.#M(t.detail);const e=this.#s.get("can-play");e&&t.triggers.add(e)}#M(t){const{seekable:e,buffered:s,intrinsicDuration:i,canPlay:n}=this.$state;n.set(!0),s.set(t.buffered),e.set(t.seekable);const r=St(t.seekable)??1/0;i.set(r)}"duration-change"(t){const{live:e,intrinsicDuration:s,providedDuration:i,clipEndTime:n,ended:r}=this.$state,o=t.detail;if(!e()){const d=Number.isNaN(o)?0:o;s.set(d),r()&&this.#_(t)}(i()>0||n()>0)&&t.stopImmediatePropagation()}progress(t){const{buffered:e,seekable:s}=this.$state,{buffered:i,seekable:n}=t.detail,r=St(i),o=i.length!==e().length,d=r!==St(e()),c=St(n),u=n.length!==s().length,p=c!==St(s());(o||d)&&e.set(i),(u||p)&&s.set(n)}play(t){const{paused:e,autoPlayError:s,ended:i,autoPlaying:n,playsInline:r,pointer:o,muted:d,viewType:c,live:u,userBehindLiveEdge:p}=this.$state;if(this.#q(),!e()){t.stopImmediatePropagation();return}t.autoPlay=n();const v=this.#s.get("waiting");v&&t.triggers.add(v),this.#d("media-play-request",t),this.#s.set("play",t),e.set(!1),s.set(null),t.autoPlay&&(this.handle(this.createEvent("auto-play",{detail:{muted:d()},trigger:t})),n.set(!1)),(i()||this.#t.replaying)&&(this.#t.replaying=!1,i.set(!1),this.handle(this.createEvent("replay",{trigger:t}))),!r()&&c()==="video"&&o()==="coarse"&&this.#e.remote.enterFullscreen("prefer-media",t),u()&&!p()&&this.#e.remote.seekToLiveEdge(t)}#q(t){if(!f(this.#e.$provider))return;const{ended:s,seekableStart:i,clipEndTime:n,currentTime:r,realCurrentTime:o,duration:d}=this.$state,c=s()||o()0&&o()>=n()||Math.abs(r()-d())<.1;return c&&this.dispatch("media-seek-request",{detail:i(),trigger:t}),c}"play-fail"(t){const{muted:e,autoPlaying:s}=this.$state,i=this.#s.get("play");i&&t.triggers.add(i),this.#d("media-play-request",t);const{paused:n,playing:r}=this.$state;n.set(!0),r.set(!1),this.#h(),this.#s.set("play-fail",t),t.autoPlay&&(this.handle(this.createEvent("auto-play-fail",{detail:{muted:e(),error:t.detail},trigger:t})),s.set(!1))}playing(t){const e=this.#s.get("play"),s=this.#s.get("seeked");e?t.triggers.add(e):s&&t.triggers.add(s),setTimeout(()=>this.#h(),0);const{paused:i,playing:n,live:r,liveSyncPosition:o,seekableEnd:d,started:c,currentTime:u,seeking:p,ended:v}=this.$state;if(i.set(!1),n.set(!0),p.set(!1),v.set(!1),this.#t.looping){this.#t.looping=!1;return}if(r()&&!c()&&u()===0){const w=o()??d()-2;Number.isFinite(w)&&this.#e.$provider().setCurrentTime(w)}this.started(t)}started(t){const{started:e}=this.$state;e()||(e.set(!0),this.handle(this.createEvent("started",{trigger:t})))}pause(t){this.el?.isConnected||(this.#l=!0),this.#d("media-pause-request",t);const e=this.#s.get("seeked");e&&t.triggers.add(e);const{paused:s,playing:i}=this.$state;s.set(!0),i.set(!1),this.#i&&setTimeout(()=>{this.handle(this.createEvent("end",{trigger:t})),this.#i=!1},0),this.#h()}"time-change"(t){if(this.#t.looping){t.stopImmediatePropagation();return}let{waiting:e,played:s,clipEndTime:i,realCurrentTime:n,currentTime:r}=this.$state,o=t.detail,d=i();n.set(o),this.#D(),e.set(!1);for(const c of this.#e.textTracks)c[Q.updateActiveCues](o,t);d>0&&o>=d&&(this.#i=!0,this.dispatch("media-pause-request",{trigger:t})),this.#V(),this.dispatch("time-update",{detail:{currentTime:r(),played:s()},trigger:t})}#D(){const{currentTime:t,played:e,paused:s}=this.$state;s()||(this.#n=Ra(this.#a,this.#n,t()),e.set(new ae(this.#a)))}#_(t){const{clipStartTime:e,clipEndTime:s,duration:i}=this.$state;e()>0||s()>0||this.handle(this.createEvent("time-change",{detail:i(),trigger:t}))}#V(){const{storage:t}=this.#e,{canPlay:e,realCurrentTime:s}=this.$state;e()&&t?.setTime?.(s())}"audio-gain-change"(t){const{storage:e}=this.#e,{canPlay:s,audioGain:i}=this.$state;i.set(t.detail),this.#d("media-audio-gain-change-request",t),s()&&e?.setAudioGain?.(i())}"volume-change"(t){const{storage:e}=this.#e,{volume:s,muted:i,canPlay:n}=this.$state,r=t.detail;s.set(r.volume),i.set(r.muted||r.volume===0),this.#d("media-volume-change-request",t),this.#d(r.muted?"media-mute-request":"media-unmute-request",t),n()&&(e?.setVolume?.(s()),e?.setMuted?.(i()))}seeking=Tt(t=>{const{seeking:e,realCurrentTime:s,paused:i}=this.$state;e.set(!0),s.set(t.detail),this.#d("media-seeking-request",t),i()&&(this.#o=t,this.#L()),this.#n=[-1,-1]},150,{leading:!0});seeked(t){const{seeking:e,currentTime:s,realCurrentTime:i,paused:n,seekableEnd:r,ended:o,live:d}=this.$state;if(this.#t.seeking)e.set(!0),t.stopImmediatePropagation();else if(e()){const c=this.#s.get("waiting");c&&t.triggers.add(c);const u=this.#s.get("seeking");u&&!t.triggers.has(u)&&t.triggers.add(u),n()&&this.#I(),e.set(!1),i.set(t.detail),this.#d("media-seek-request",t);const p=t?.originEvent;p?.isTrusted&&!(p instanceof MessageEvent)&&!/seek/.test(p.type)&&this.started(t)}d()||(Math.floor(s())!==Math.floor(r())?o.set(!1):this.end(t))}waiting(t){this.#r||this.#t.seeking||(t.stopImmediatePropagation(),this.#o=t,this.#L())}#L=Ce(()=>{if(!this.#o)return;this.#r=!0;const{waiting:t,playing:e}=this.$state;t.set(!0),e.set(!1);const s=this.createEvent("waiting",{trigger:this.#o});this.#s.set("waiting",s),this.dispatch(s),this.#o=void 0,this.#r=!1},300);end(t){const{loop:e,ended:s}=this.$state;if(!(!e()&&s())){if(e()){setTimeout(()=>{requestAnimationFrame(()=>{this.#q(t),this.dispatch("media-loop-request",{trigger:t})})},10);return}setTimeout(()=>this.#R(t),0)}}#R(t){const{storage:e}=this.#e,{paused:s,seeking:i,ended:n,duration:r}=this.$state;this.#_(t),s()||this.dispatch("pause",{trigger:t}),i()&&this.dispatch("seeked",{detail:r(),trigger:t}),n.set(!0),this.#h(),e?.setTime?.(r(),!0),this.dispatch("ended",{trigger:t})}#I(){this.#L.cancel(),this.$state.waiting.set(!1)}"fullscreen-change"(t){const e=t.detail;this.$state.fullscreen.set(e),this.#d(e?"media-enter-fullscreen-request":"media-exit-fullscreen-request",t)}"fullscreen-error"(t){this.#d("media-enter-fullscreen-request",t),this.#d("media-exit-fullscreen-request",t)}"orientation-change"(t){const e=t.detail.lock;this.#d(e?"media-orientation-lock-request":"media-orientation-unlock-request",t)}"picture-in-picture-change"(t){const e=t.detail;this.$state.pictureInPicture.set(e),this.#d(e?"media-enter-pip-request":"media-exit-pip-request",t)}"picture-in-picture-error"(t){this.#d("media-enter-pip-request",t),this.#d("media-exit-pip-request",t)}"title-change"(t){t.trigger&&(t.stopImmediatePropagation(),this.$state.inferredTitle.set(t.detail))}"poster-change"(t){t.trigger&&(t.stopImmediatePropagation(),this.$state.inferredPoster.set(t.detail))}}class yn extends xt{onSetup(){this.#t();const t=[this.#i,this.#n,this.#d,this.#p,this.#o,this.#c,this.#u,this.#m,this.#g,this.#b,this.#r,this.#h,this.#l,this.#e,this.#a];for(const e of t)l(e.bind(this))}#t(){const t={duration:"providedDuration",loop:"providedLoop",poster:"providedPoster",streamType:"providedStreamType",title:"providedTitle",viewType:"providedViewType"},e=new Set(["currentTime","paused","playbackRate","volume"]);for(const s of Object.keys(this.$props))e.has(s)||this.$state[t[s]??s]?.set(this.$props[s]());this.$state.muted.set(this.$props.muted()||this.$props.volume()===0)}#e(){const{viewType:t,streamType:e,title:s,poster:i,loop:n}=this.$props,r=this.$state;r.providedPoster.set(i()),r.providedStreamType.set(e()),r.providedViewType.set(t()),r.providedTitle.set(s()),r.providedLoop.set(n())}#s(){}#i(){const{artist:t,artwork:e}=this.$props;this.$state.artist.set(t()),this.$state.artwork.set(e())}#a(){const{title:t}=this.$state;this.dispatch("title-change",{detail:t()})}#n(){const t=this.$props.autoPlay()||this.$props.autoplay();this.$state.autoPlay.set(t),this.dispatch("auto-play-change",{detail:t})}#r(){const t=this.$state.loop();this.dispatch("loop-change",{detail:t})}#o(){const t=this.$props.controls();this.$state.controls.set(t)}#l(){const{poster:t}=this.$state;this.dispatch("poster-change",{detail:t()})}#c(){const t=this.$props.crossOrigin()??this.$props.crossorigin(),e=t===!0?"":t;this.$state.crossOrigin.set(e)}#u(){const{duration:t}=this.$props;this.dispatch("media-duration-change-request",{detail:t()})}#h(){const t=this.$props.playsInline()||this.$props.playsinline();this.$state.playsInline.set(t),this.dispatch("plays-inline-change",{detail:t})}#d(){const{clipStartTime:t}=this.$props;this.dispatch("media-clip-start-change-request",{detail:t()})}#p(){const{clipEndTime:t}=this.$props;this.dispatch("media-clip-end-change-request",{detail:t()})}#m(){this.dispatch("live-change",{detail:this.$state.live()})}#b(){this.$state.liveEdgeTolerance.set(this.$props.liveEdgeTolerance()),this.$state.minLiveDVRWindow.set(this.$props.minLiveDVRWindow())}#g(){this.dispatch("live-edge-change",{detail:this.$state.liveEdge()})}}class vn{playerId="vds-player";mediaId=null;#t={volume:null,muted:null,audioGain:null,time:null,lang:null,captions:null,rate:null,quality:null};async getVolume(){return this.#t.volume}async setVolume(t){this.#t.volume=t,this.save()}async getMuted(){return this.#t.muted}async setMuted(t){this.#t.muted=t,this.save()}async getTime(){return this.#t.time}async setTime(t,e){const s=t<0;this.#t.time=s?null:t,s||e?this.saveTime():this.saveTimeThrottled()}async getLang(){return this.#t.lang}async setLang(t){this.#t.lang=t,this.save()}async getCaptions(){return this.#t.captions}async setCaptions(t){this.#t.captions=t,this.save()}async getPlaybackRate(){return this.#t.rate}async setPlaybackRate(t){this.#t.rate=t,this.save()}async getAudioGain(){return this.#t.audioGain}async setAudioGain(t){this.#t.audioGain=t,this.save()}async getVideoQuality(){return this.#t.quality}async setVideoQuality(t){this.#t.quality=t,this.save()}onChange(t,e,s="vds-player"){const i=s?localStorage.getItem(s):null,n=e?localStorage.getItem(e):null;this.playerId=s,this.mediaId=e,this.#t={volume:null,muted:null,audioGain:null,lang:null,captions:null,rate:null,quality:null,...i?JSON.parse(i):{},time:n?+n:null}}save(){if(!this.playerId)return;const t=JSON.stringify({...this.#t,time:void 0});localStorage.setItem(this.playerId,t)}saveTimeThrottled=Tt(this.saveTime.bind(this),1e3);saveTime(){if(!this.mediaId)return;const t=(this.#t.time??0).toString();localStorage.setItem(this.mediaId,t)}}const ti=["play","pause","seekforward","seekbackward","seekto"];class $n extends xt{onConnect(){l(this.#e.bind(this)),l(this.#s.bind(this));const t=this.#i.bind(this);for(const e of ti)navigator.mediaSession.setActionHandler(e,t);P(this.#t.bind(this))}#t(){for(const t of ti)navigator.mediaSession.setActionHandler(t,null)}#e(){const{title:t,artist:e,artwork:s,poster:i}=this.$state;navigator.mediaSession.metadata=new MediaMetadata({title:t(),artist:e(),artwork:s()??[{src:i()}]})}#s(){const{canPlay:t,paused:e}=this.$state;navigator.mediaSession.playbackState=t()?e()?"paused":"playing":"none"}#i(t){const e=new K("media-session-action",{detail:t});switch(t.action){case"play":this.dispatch("media-play-request",{trigger:e});break;case"pause":this.dispatch("media-pause-request",{trigger:e});break;case"seekto":case"seekforward":case"seekbackward":this.dispatch("media-seek-request",{detail:ot(t.seekTime)?t.seekTime:this.$state.currentTime()+(t.seekOffset??(t.action==="seekforward"?10:-10)),trigger:e});break}}}class wn{#t=null;#e=null;#s=-1;#i;constructor(t=void 0){this.#i=t}setTarget(t){this.#t=t}getPlayer(t){return this.#e?this.#e:((t??this.#t)?.dispatchEvent(new K("find-media-player",{detail:e=>void(this.#e=e),bubbles:!0,composed:!0})),this.#e)}setPlayer(t){this.#e=t}startLoading(t){this.#a("media-start-loading",t)}startLoadingPoster(t){this.#a("media-poster-start-loading",t)}requestAirPlay(t){this.#a("media-airplay-request",t)}requestGoogleCast(t){this.#a("media-google-cast-request",t)}play(t){this.#a("media-play-request",t)}pause(t){this.#a("media-pause-request",t)}mute(t){this.#a("media-mute-request",t)}unmute(t){this.#a("media-unmute-request",t)}enterFullscreen(t,e){this.#a("media-enter-fullscreen-request",e,t)}exitFullscreen(t,e){this.#a("media-exit-fullscreen-request",e,t)}lockScreenOrientation(t,e){this.#a("media-orientation-lock-request",e,t)}unlockScreenOrientation(t){this.#a("media-orientation-unlock-request",t)}enterPictureInPicture(t){this.#a("media-enter-pip-request",t)}exitPictureInPicture(t){this.#a("media-exit-pip-request",t)}seeking(t,e){this.#a("media-seeking-request",e,t)}seek(t,e){this.#a("media-seek-request",e,t)}seekToLiveEdge(t){this.#a("media-live-edge-request",t)}changeDuration(t,e){this.#a("media-duration-change-request",e,t)}changeClipStart(t,e){this.#a("media-clip-start-change-request",e,t)}changeClipEnd(t,e){this.#a("media-clip-end-change-request",e,t)}changeVolume(t,e){this.#a("media-volume-change-request",e,Math.max(0,Math.min(1,t)))}changeAudioTrack(t,e){this.#a("media-audio-track-change-request",e,t)}changeQuality(t,e){this.#a("media-quality-change-request",e,t)}requestAutoQuality(t){this.changeQuality(-1,t)}changeTextTrackMode(t,e,s){this.#a("media-text-track-change-request",s,{index:t,mode:e})}changePlaybackRate(t,e){this.#a("media-rate-change-request",e,t)}changeAudioGain(t,e){this.#a("media-audio-gain-change-request",e,t)}resumeControls(t){this.#a("media-resume-controls-request",t)}pauseControls(t){this.#a("media-pause-controls-request",t)}togglePaused(t){const e=this.getPlayer(t?.target);e&&(e.state.paused?this.play(t):this.pause(t))}toggleControls(t){const e=this.getPlayer(t?.target);e&&(e.controls.showing?e.controls.hide(0,t):e.controls.show(0,t))}toggleMuted(t){const e=this.getPlayer(t?.target);e&&(e.state.muted?this.unmute(t):this.mute(t))}toggleFullscreen(t,e){const s=this.getPlayer(e?.target);s&&(s.state.fullscreen?this.exitFullscreen(t,e):this.enterFullscreen(t,e))}togglePictureInPicture(t){const e=this.getPlayer(t?.target);e&&(e.state.pictureInPicture?this.exitPictureInPicture(t):this.enterPictureInPicture(t))}showCaptions(t){const e=this.getPlayer(t?.target);if(!e)return;let s=e.state.textTracks,i=this.#s;(!s[i]||!U(s[i]))&&(i=-1),i===-1&&(i=s.findIndex(n=>U(n)&&n.default)),i===-1&&(i=s.findIndex(n=>U(n))),i>=0&&this.changeTextTrackMode(i,"showing",t),this.#s=-1}disableCaptions(t){const e=this.getPlayer(t?.target);if(!e)return;const s=e.state.textTracks,i=e.state.textTrack;if(i){const n=s.indexOf(i);this.changeTextTrackMode(n,"disabled",t),this.#s=n}}toggleCaptions(t){const e=this.getPlayer(t?.target);e&&(e.state.textTrack?this.disableCaptions():this.showCaptions())}userPrefersLoopChange(t,e){this.#a("media-user-loop-change-request",e,t)}#a(t,e,s){const i=new K(t,{bubbles:!0,composed:!0,cancelable:!0,detail:s,trigger:e});let n=e?.target||null;n&&n instanceof k&&(n=n.el),n=!n||n===document||n===window||n===document.body||this.#e?.el&&n instanceof Node&&!this.#e.el.contains(n)?this.#t??this.getPlayer()?.el:n??this.#t,this.#e?t==="media-play-request"&&!this.#e.state.canLoad?n?.dispatchEvent(i):this.#e.canPlayQueue.enqueue(t,()=>n?.dispatchEvent(i)):n?.dispatchEvent(i)}#n(t){}}class Tn extends Bs{}class kn{priority=0;#t=!0;#e=null;#s=null;#i=new Set;canRender(t,e){return!!e}attach(t){this.#e=t,t&&(t.textTracks.onchange=this.#o.bind(this))}addTrack(t){this.#i.add(t),this.#a(t)}removeTrack(t){t[Q.native]?.remove?.(),t[Q.native]=null,this.#i.delete(t)}changeTrack(t){const e=t?.[Q.native];e&&e.track.mode!=="showing"&&(e.track.mode="showing"),this.#s=t}setDisplay(t){this.#t=t,this.#o()}detach(){this.#e&&(this.#e.textTracks.onchange=null);for(const t of this.#i)this.removeTrack(t);this.#i.clear(),this.#e=null,this.#s=null}#a(t){if(!this.#e)return;const e=t[Q.native]??=this.#n(t);yt(e)&&(this.#e.append(e),e.track.mode=e.default?"showing":"disabled")}#n(t){const e=document.createElement("track"),s=t.default||t.mode==="showing",i=t.src&&t.type==="vtt";return e.id=t.id,e.src=i?t.src:"",e.label=t.label,e.kind=t.kind,e.default=s,t.language&&(e.srclang=t.language),s&&!i&&this.#r(t,e.track),e}#r(t,e){if(!(t.src&&t.type==="vtt"||e.cues?.length))for(const s of t.cues)e.addCue(s)}#o(t){for(const e of this.#i){const s=e[Q.native];if(!s)continue;if(!this.#t){s.track.mode=s.managed?"hidden":"disabled";continue}const i=s.track.mode==="showing";i&&this.#r(e,s.track),e.setMode(i?"showing":"disabled",t)}}}class Sn{#t=null;#e;#s=[];#i;#a=!1;#n=null;#r=null;constructor(t){this.#i=t;const e=t.textTracks;this.#e=e,l(this.#o.bind(this)),P(this.#p.bind(this)),new q(e).add("add",this.#u.bind(this)).add("remove",this.#h.bind(this)).add("mode-change",this.#d.bind(this))}#o(){const{nativeControls:t}=this.#i.$state;this.#a=t(),this.#d()}add(t){this.#s.push(t),Xt(this.#d.bind(this))}remove(t){t.detach(),this.#s.splice(this.#s.indexOf(t),1),Xt(this.#d.bind(this))}attachVideo(t){requestAnimationFrame(()=>{if(this.#t=t,t){this.#n=new kn,this.#n.attach(t);for(const e of this.#e)this.#l(e)}this.#d()})}#l(t){U(t)&&this.#n?.addTrack(t)}#c(t){U(t)&&this.#n?.removeTrack(t)}#u(t){this.#l(t.detail)}#h(t){this.#c(t.detail)}#d(){const t=this.#e.selected;if(this.#t&&(this.#a||t?.[Q.nativeHLS])){this.#r?.changeTrack(null),this.#n?.setDisplay(!0),this.#n?.changeTrack(t);return}if(this.#n?.setDisplay(!1),this.#n?.changeTrack(null),!t){this.#r?.changeTrack(null);return}const e=this.#s.sort((s,i)=>s.priority-i.priority).find(s=>s.canRender(t,this.#t));this.#r!==e&&(this.#r?.detach(),e?.attach(this.#t),this.#r=e??null),e?.changeTrack(t)}#p(){this.#n?.detach(),this.#n=null,this.#r?.detach(),this.#r=null}}class xn extends Hs{#t=!1;#e={};#s=null;#i=null;[Q.crossOrigin];constructor(){super()}get selected(){return this.items.find(e=>e.mode==="showing"&&U(e))??null}get selectedIndex(){const t=this.selected;return t?this.indexOf(t):-1}get preferredLang(){return this.#i}set preferredLang(t){this.#i=t,this.#c(t)}add(t,e){const s=t instanceof ne,i=s?t:new ne(t),n=t.kind==="captions"||t.kind==="subtitles"?"captions":t.kind;return this.#e[n]&&t.default&&delete t.default,i.addEventListener("mode-change",this.#r),this[A.add](i,e),i[Q.crossOrigin]=this[Q.crossOrigin],this.#t&&i[Q.canLoad](),t.default&&(this.#e[n]=i),this.#a(),this}remove(t,e){if(this.#n=t,!!this.items.includes(t))return t===this.#e[t.kind]&&delete this.#e[t.kind],t.mode="disabled",t[Q.onModeChange]=null,t.removeEventListener("mode-change",this.#r),this[A.remove](t,e),this.#n=null,this}clear(t){for(const e of[...this.items])this.remove(e,t);return this}getByKind(t){const e=Array.isArray(t)?t:[t];return this.items.filter(s=>e.includes(s.kind))}[Q.canLoad](){if(!this.#t){for(const t of this.items)t[Q.canLoad]();this.#t=!0,this.#a()}}#a=Ce(async()=>{if(!this.#t)return;!this.#i&&this.#s&&(this.#i=await this.#s.getLang());const t=await this.#s?.getCaptions(),e=[["captions","subtitles"],"chapters","descriptions","metadata"];for(const s of e){const i=this.getByKind(s);if(i.find(c=>c.mode==="showing"))continue;const n=this.#i?i.find(c=>c.language===this.#i):null,r=Y(s)?this.#e[s.find(c=>this.#e[c])||""]:this.#e[s],o=n??r,d=o&&U(o);o&&(!d||t!==!1)&&(o.mode="showing",d&&this.#l(o))}},300);#n=null;#r=this.#o.bind(this);#o(t){const e=t.detail;if(this.#s&&U(e)&&e!==this.#n&&this.#l(e),e.mode==="showing"){const s=U(e)?["captions","subtitles"]:[e.kind];for(const i of this.items)i.mode==="showing"&&i!=e&&s.includes(i.kind)&&(i.mode="disabled")}this.dispatchEvent(new K("mode-change",{detail:t.detail,trigger:t}))}#l(t){t.mode!=="disabled"&&this.#c(t.language),this.#s?.setCaptions?.(t.mode==="showing")}#c(t){this.#s?.setLang?.(this.#i=t)}setStorage(t){this.#s=t}}let le=y(!1);G(document,"pointerdown",()=>{le.set(!1)}),G(document,"keydown",a=>{a.metaKey||a.altKey||a.ctrlKey||le.set(!0)});class at extends st{#t=y(!1);onConnect(t){l(()=>{const e=new q(t);if(!le()){this.#t.set(!1),de(t,!1),e.add("pointerenter",this.#i.bind(this)).add("pointerleave",this.#a.bind(this));return}const s=document.activeElement===t;this.#t.set(s),de(t,s),e.add("focus",this.#e.bind(this)).add("blur",this.#s.bind(this))})}focused(){return this.#t()}#e(){this.#t.set(!0),de(this.el,!0)}#s(){this.#t.set(!1),de(this.el,!1)}#i(){ei(this.el,!0)}#a(){ei(this.el,!1)}}function de(a,t){g(a,"data-focus",t),g(a,"data-hocus",t)}function ei(a,t){g(a,"data-hocus",t),g(a,"data-hover",t)}class It extends k{static props=Xa;static state=Rs;#t;#e;#s;canPlayQueue=new Ws;remoteControl;get#i(){return this.#t.$provider()}get#a(){return this.$props}constructor(){super(),new yn;const t={player:this,qualities:new Za,audioTracks:new Tn,storage:null,$provider:y(null),$providerSetup:y(!1),$props:this.$props,$state:this.$state};t.remote=this.remoteControl=new wn(void 0),t.remote.setPlayer(this),t.textTracks=new xn,t.textTracks[Q.crossOrigin]=this.$state.crossOrigin,t.textRenderers=new Sn(t),t.ariaKeys={},this.#t=t,X(Is,t),this.orientation=new ke,new at,new Qa(t);const e=new fn;this.#e=new bn(e,t),this.#s=new mn(this.#e,e,t),t.delegate=new tn(this.#e.handle.bind(this.#e),t),t.notify=t.delegate.notify.bind(t.delegate),typeof navigator<"u"&&"mediaSession"in navigator&&new $n,new Gs("load",this.startLoading.bind(this)),new Gs("posterLoad",this.startLoadingPoster.bind(this))}onSetup(){this.#c(),l(this.#l.bind(this)),l(this.#b.bind(this)),l(this.#p.bind(this)),l(this.#w.bind(this)),l(this.#y.bind(this)),l(this.#T.bind(this)),l(this.#x.bind(this))}onAttach(t){t.setAttribute("data-media-player",""),L(t,"tabindex","0"),L(t,"role","region"),l(this.#S.bind(this)),l(this.#r.bind(this)),l(this.#o.bind(this)),G(t,"find-media-player",this.#u.bind(this))}onConnect(t){Ms&&g(t,"data-iphone","");const e=window.matchMedia("(pointer: coarse)");this.#d(e),e.onchange=this.#d.bind(this);const s=new ResizeObserver(ct(this.#h.bind(this)));s.observe(t),l(this.#h.bind(this)),this.dispatch("media-player-connect",{detail:this,bubbles:!0,composed:!0}),P(()=>{s.disconnect(),e.onchange=null})}onDestroy(){this.#t.player=null,this.canPlayQueue.reset()}#n=!1;#r(){const t=this.$el,{title:e,live:s,viewType:i,providedTitle:n}=this.$state,r=s(),o=Ee(i()),d=o!=="Unknown"?`${r?"Live ":""}${o}`:r?"Live":"Media",c=e();g(this.el,"aria-label",`${d} Player`+(c?` - ${c}`:"")),t?.hasAttribute("title")&&(this.#n=!0,t?.removeAttribute("title"))}#o(){const t=this.orientation.landscape?"landscape":"portrait";this.$state.orientation.set(t),g(this.el,"data-orientation",t),this.#h()}#l(){this.$state.canPlay()&&this.#i?this.canPlayQueue.start():this.canPlayQueue.stop()}#c(){if(It[Ie]){this.setAttributes(It[Ie]);return}const t={"data-load":function(){return this.$props.load()},"data-captions":function(){const s=this.$state.textTrack();return!!s&&U(s)},"data-ios-controls":function(){return this.$state.iOSControls()},"data-controls":function(){return this.controls.showing},"data-buffering":function(){const{canLoad:s,canPlay:i,waiting:n}=this.$state;return s()&&(!i()||n())},"data-error":function(){const{error:s}=this.$state;return!!s()},"data-autoplay-error":function(){const{autoPlayError:s}=this.$state;return!!s()}},e={autoPlay:"autoplay",canAirPlay:"can-airplay",canPictureInPicture:"can-pip",pictureInPicture:"pip",playsInline:"playsinline",remotePlaybackState:"remote-state",remotePlaybackType:"remote-type",isAirPlayConnected:"airplay",isGoogleCastConnected:"google-cast"};for(const s of Ha){const i="data-"+(e[s]??Ht(s));t[i]=function(){return this.$state[s]()}}delete t.title,It[Ie]=t,this.setAttributes(t)}#u(t){t.detail(this)}#h(){if(!this.el)return;const t=this.el.clientWidth,e=this.el.clientHeight;this.$state.width.set(t),this.$state.height.set(e),Z(this.el,"--player-width",t+"px"),Z(this.el,"--player-height",e+"px")}#d(t){const e=t.matches?"coarse":"fine";g(this.el,"data-pointer",e),this.$state.pointer.set(e),this.#h()}get provider(){return this.#i}get controls(){return this.#s.controls}set controls(t){this.#a.controls.set(t)}orientation;get title(){return f(this.$state.title)}set title(t){if(this.#n){this.#n=!1;return}this.#a.title.set(t)}get qualities(){return this.#t.qualities}get audioTracks(){return this.#t.audioTracks}get textTracks(){return this.#t.textTracks}get textRenderers(){return this.#t.textRenderers}get duration(){return this.$state.duration()}set duration(t){this.#a.duration.set(t)}get paused(){return f(this.$state.paused)}set paused(t){this.#m(t)}#p(){this.#m(this.$props.paused())}#m(t){t?this.canPlayQueue.enqueue("paused",()=>this.#s.pause()):this.canPlayQueue.enqueue("paused",()=>this.#s.play())}get muted(){return f(this.$state.muted)}set muted(t){this.#g(t)}#b(){this.#g(this.$props.muted())}#g(t){this.canPlayQueue.enqueue("muted",()=>{this.#i&&this.#i.setMuted(t)})}get currentTime(){return f(this.$state.currentTime)}set currentTime(t){this.#$(t)}#y(){this.#$(this.$props.currentTime())}#$(t){this.canPlayQueue.enqueue("currentTime",()=>{const{currentTime:e}=this.$state;t!==f(e)&&f(()=>{if(!this.#i)return;const s=Fs(t,this.$state);Number.isFinite(s)&&this.#i.setCurrentTime(s)})})}get volume(){return f(this.$state.volume)}set volume(t){this.#v(t)}#w(){this.#v(this.$props.volume())}#v(t){const e=De(0,t,1);this.canPlayQueue.enqueue("volume",()=>{this.#i&&this.#i.setVolume(e)})}get playbackRate(){return f(this.$state.playbackRate)}set playbackRate(t){this.#f(t)}#x(){this.#f(this.$props.playbackRate())}#f(t){this.canPlayQueue.enqueue("rate",()=>{this.#i&&this.#i.setPlaybackRate?.(t)})}#T(){this.#k(this.$props.playsInline())}#k(t){this.canPlayQueue.enqueue("playsinline",()=>{this.#i&&this.#i.setPlaysInline?.(t)})}#S(){let t=this.$props.storage(),e=C(t)?new vn:t;if(e?.onChange){const{source:s}=this.$state,i=C(t)?t:this.el?.id,n=_(this.#P.bind(this));l(()=>e.onChange(s(),n(),i||void 0))}this.#t.storage=e,this.#t.textTracks.setStorage(e),P(()=>{e?.onDestroy?.(),this.#t.storage=null,this.#t.textTracks.setStorage(null)})}#P(){const{clipStartTime:t,clipEndTime:e}=this.$props,{source:s}=this.$state,i=s();return i.src?`${i.src}:${t()}:${e()}`:null}async play(t){return this.#s.play(t)}async pause(t){return this.#s.pause(t)}async enterFullscreen(t,e){return this.#s.enterFullscreen(t,e)}async exitFullscreen(t,e){return this.#s.exitFullscreen(t,e)}enterPictureInPicture(t){return this.#s.enterPictureInPicture(t)}exitPictureInPicture(t){return this.#s.exitPictureInPicture(t)}seekToLiveEdge(t){this.#s.seekToLiveEdge(t)}startLoading(t){this.#t.notify("can-load",void 0,t)}startLoadingPoster(t){this.#t.notify("can-load-poster",void 0,t)}requestAirPlay(t){return this.#s.requestAirPlay(t)}requestGoogleCast(t){return this.#s.requestGoogleCast(t)}setAudioGain(t,e){return this.#s.setAudioGain(t,e)}destroy(){super.destroy(),this.#t.remote.setPlayer(null),this.dispatch("destroy")}}const D=It.prototype;x(D,"canPlayQueue"),x(D,"remoteControl"),x(D,"provider"),x(D,"controls"),x(D,"orientation"),x(D,"title"),x(D,"qualities"),x(D,"audioTracks"),x(D,"textTracks"),x(D,"textRenderers"),x(D,"duration"),x(D,"paused"),x(D,"muted"),x(D,"currentTime"),x(D,"volume"),x(D,"playbackRate"),O(D,"play"),O(D,"pause"),O(D,"enterFullscreen"),O(D,"exitFullscreen"),O(D,"enterPictureInPicture"),O(D,"exitPictureInPicture"),O(D,"seekToLiveEdge"),O(D,"startLoading"),O(D,"startLoadingPoster"),O(D,"requestAirPlay"),O(D,"requestGoogleCast"),O(D,"setAudioGain");class Pn extends T(HTMLElement,It){static tagName="media-player";static attrs={autoPlay:"autoplay",crossOrigin:"crossorigin",playsInline:"playsinline",preferNativeHLS:"prefer-native-hls",minLiveDVRWindow:"min-live-dvr-window"}}class Cn{name="audio";target;canPlay(t){return qa(t)?!C(t.src)||t.type==="?"||_a(this.target,t.type):!1}mediaType(){return"audio"}async load(t){return new(await import("../providers/vidstack-audio-C0VqKUGx.js")).AudioProvider(this.target,t)}}class We{name="video";target;canPlay(t){return Da(t)?!C(t.src)||t.type==="?"||Ia(this.target,t.type):!1}mediaType(){return"video"}async load(t){return new(await import("../providers/vidstack-video-Bvb0MdiM.js")).VideoProvider(this.target,t)}}class bs extends We{static supported=Va();name="dash";canPlay(t){return bs.supported&&Le(t)}async load(t){return new(await import("../providers/vidstack-dash-Ch9Z4CGa.js")).DASHProvider(this.target,t)}}class ys extends We{static supported=Ls();name="hls";canPlay(t){return ys.supported&&qe(t)}async load(t){return new(await import("../providers/vidstack-hls-CR_RbCTl.js")).HLSProvider(this.target,t)}}class En{name="vimeo";target;preconnect(){const t=["https://i.vimeocdn.com","https://f.vimeocdn.com","https://fresnel.vimeocdn.com"];for(const e of t)Bt(e)}canPlay(t){return C(t.src)&&t.type==="video/vimeo"}mediaType(){return"video"}async load(t){return new(await import("../providers/vidstack-vimeo-ClR8pShM.js")).VimeoProvider(this.target,t)}async loadPoster(t,e,s){const{resolveVimeoVideoId:i,getVimeoVideoInfo:n}=await import("./vidstack-2f5gzOW6.js");if(!C(t.src))return null;const{videoId:r,hash:o}=i(t.src);return r?n(r,s,o).then(d=>d?d.poster:null):null}}class An{name="youtube";target;preconnect(){const t=["https://www.google.com","https://i.ytimg.com","https://googleads.g.doubleclick.net","https://static.doubleclick.net"];for(const e of t)Bt(e)}canPlay(t){return C(t.src)&&t.type==="video/youtube"}mediaType(){return"video"}async load(t){return new(await import("../providers/vidstack-youtube-DhHUVzYC.js")).YouTubeProvider(this.target,t)}async loadPoster(t,e,s){const{findYouTubePoster:i,resolveYouTubeVideoId:n}=await import("./vidstack-DDBvyCKL.js"),r=C(t.src)&&n(t.src);return r?i(r,s):null}}function Mn(a,t){return fetch(a,t).then(e=>e.text()).then(e=>/type="static"/.test(e)?"on-demand":"live")}function si(a,t){return fetch(a,t).then(e=>e.text()).then(e=>{const s=Ln(e);if(s)return si(/^https?:/.test(s)?s:new URL(s,a).href,t);const i=/EXT-X-PLAYLIST-TYPE:\s*VOD/.test(e)?"on-demand":"live";return i==="live"&&qn(e)>=10&&(/#EXT-X-DVR-ENABLED:\s*true/.test(e)||e.includes("#EXT-X-DISCONTINUITY"))?"live:dvr":i})}function Ln(a){const t=a.match(/#EXT-X-STREAM-INF:[^\n]+(\n[^\n]+)*/g);return t?t[0].split(`
+import{u as I,c as rt,V as st,e as l,s as y,E as q,p as f,l as G,i as C,a as Y,b as Yt,S as ft,f as wt,t as dt,d as aa,D as K,w as na,o as P,g as Xt,h as ks,j as Ft,k as xe,m as g,n as Ss,q as ra,r as Pe,v as Jt,x as Z,y as oa,z as ct,A as _,B as la,C as da,F as ca,G as Zt,H as ua,I as ot,J as Tt,K as Ce,L as k,M as x,N as O,O as X,P as Ee,Q as Ht,R as T,T as Ae,U as $,W as xs,X as ha,Y as pa,Z as Ps,_ as ma,$ as Me,a0 as te,a1 as h,a2 as fa,a3 as ee,a4 as se,a5 as ga,a6 as ba,a7 as ya,a8 as va,a9 as Cs,aa as kt,ab as ie,ac as $a,ad as Es,ae as wa,af as Ta,ag as J,ah as ka,ai as Sa,aj as Mt,ak as xa,al as Pa,am as Ca}from"./vidstack-ClmE_LDk.js";import{c as As,I as Ms,a as Ea,b as Aa,d as Ma,e as La,i as qa,f as _a,g as Da,h as Ia,j as Va,k as Le,l as Ls,m as qe}from"./vidstack-tiQh4UD3.js";import{T as ae,g as qs,a as St,u as Ra}from"./vidstack-BFul-1yb.js";import{i as W,T as Q,a as ne,w as re,b as Oa,c as Na}from"./vidstack-BqbADcDA.js";import{L as A}from"./vidstack-C_AxqLKV.js";import{Q as it}from"./vidstack-DRH_1tFW.js";import{c as _e,a as ut}from"./vidstack-BfBBPhXV.js";import{p as Bt,g as oe,a as _s,b as Ds}from"./vidstack-DB4QmL2O.js";import{c as De,r as H,g as Fa}from"./vidstack-Bxv1Qnxe.js";import"/assets/js/vendor/media-icons/lazy.min.js";const Ie=Symbol(0),Ha=["autoPlay","canAirPlay","canFullscreen","canGoogleCast","canLoad","canLoadPoster","canPictureInPicture","canPlay","canSeek","ended","fullscreen","isAirPlayConnected","isGoogleCastConnected","live","liveEdge","loop","mediaType","muted","paused","pictureInPicture","playing","playsInline","remotePlaybackState","remotePlaybackType","seeking","started","streamType","viewType","waiting"],Is=rt();function b(){return I(Is)}function z(){return b().$state}function Ba(a){return a instanceof HTMLAudioElement}function Ga(a){return a instanceof HTMLVideoElement}function Ka(a){return Ba(a)||Ga(a)}class xt extends st{}const Ua={togglePaused:"k Space",toggleMuted:"m",toggleFullscreen:"f",togglePictureInPicture:"i",toggleCaptions:"c",seekBackward:"j J ArrowLeft",seekForward:"l L ArrowRight",volumeUp:"ArrowUp",volumeDown:"ArrowDown",speedUp:"> ]",slowDown:"< ["},Gt=new Set(["Shift","Alt","Meta","Ctrl"]),Wa='button, [role="button"]',Vs='input, textarea, select, [contenteditable], [role^="menuitem"], [role="timer"]';class Qa extends xt{#t;constructor(t){super(),this.#t=t}onConnect(){l(this.#e.bind(this))}#e(){const{keyDisabled:t,keyTarget:e}=this.$props;if(t())return;const s=e()==="player"?this.el:document,i=y(!1);s===this.el?new q(this.el).add("focusin",()=>i.set(!0)).add("focusout",n=>{this.el.contains(n.target)||i.set(!1)}):(f(i)||i.set(document.querySelector("[data-media-player]")===this.el),G(document,"focusin",n=>{const r=n.composedPath().find(o=>o instanceof Element&&o.localName==="media-player");r!==void 0&&i.set(this.el===r)})),l(()=>{i()&&new q(s).add("keyup",this.#s.bind(this)).add("keydown",this.#i.bind(this)).add("keydown",this.#a.bind(this),{capture:!0})})}#s(t){const e=document.activeElement;if(!t.key||!this.$state.canSeek()||e?.matches(Vs))return;let{method:s,value:i}=this.#n(t);if(!C(i)&&!Y(i)){i?.onKeyUp?.({event:t,player:this.#t.player,remote:this.#t.remote}),i?.callback?.(t,this.#t.remote);return}s?.startsWith("seek")&&(t.preventDefault(),t.stopPropagation(),this.#l?(this.#c(t,s==="seekForward"),this.#l=null):(this.#t.remote.seek(this.#r,t),this.#r=void 0)),s?.startsWith("volume")&&this.el.querySelector("[data-media-volume-slider]")?.dispatchEvent(new KeyboardEvent("keyup",{key:s==="volumeUp"?"Up":"Down",shiftKey:t.shiftKey,trigger:t}))}#i(t){if(!t.key||Gt.has(t.key))return;const e=document.activeElement;if(e?.matches(Vs)||Yt(t)&&e?.matches(Wa))return;let{method:s,value:i}=this.#n(t),n=!t.metaKey&&/^[0-9]$/.test(t.key);if(!C(i)&&!Y(i)&&!n){i?.onKeyDown?.({event:t,player:this.#t.player,remote:this.#t.remote}),i?.callback?.(t,this.#t.remote);return}if(!s&&n&&!Ya(t)){t.preventDefault(),t.stopPropagation(),this.#t.remote.seek(this.$state.duration()/10*Number(t.key),t);return}if(s){switch(t.preventDefault(),t.stopPropagation(),s){case"seekForward":case"seekBackward":this.#u(t,s,s==="seekForward");break;case"volumeUp":case"volumeDown":const r=this.el.querySelector("[data-media-volume-slider]");if(r)r.dispatchEvent(new KeyboardEvent("keydown",{key:s==="volumeUp"?"Up":"Down",shiftKey:t.shiftKey,trigger:t}));else{const d=t.shiftKey?.1:.05;this.#t.remote.changeVolume(this.$state.volume()+(s==="volumeUp"?+d:-d),t)}break;case"toggleFullscreen":this.#t.remote.toggleFullscreen("prefer-media",t);break;case"speedUp":case"slowDown":const o=this.$state.playbackRate();this.#t.remote.changePlaybackRate(Math.max(.25,Math.min(2,o+(s==="speedUp"?.25:-.25))),t);break;default:this.#t.remote[s]?.(t)}this.$state.lastKeyboardAction.set({action:s,event:t})}}#a(t){Ka(t.target)&&this.#n(t).method&&t.preventDefault()}#n(t){const e={...this.$props.keyShortcuts(),...this.#t.ariaKeys},s=Object.keys(e).find(i=>{const n=e[i],r=Y(n)?n.join(" "):C(n)?n:n?.keys;return(Y(r)?r:r?.split(" "))?.map(d=>ja(d).replace(/Control/g,"Ctrl").split("+"))?.some(d=>{const c=new Set(d.filter(u=>Gt.has(u)));"<>".includes(t.key)&&c.add("Shift");for(const u of Gt){const p=u.toLowerCase()+"Key";if(!c.has(u)&&t[p])return!1}return d.every(u=>Gt.has(u)?t[u.toLowerCase()+"Key"]:t.key===u.replace("Space"," "))})});return{method:s,value:s?e[s]:null}}#r;#o(t,e){const s=t.shiftKey?10:5;return this.#r=Math.max(0,Math.min((this.#r??this.$state.currentTime())+(e==="seekForward"?+s:-s),this.$state.duration()))}#l=null;#c(t,e){this.#l?.dispatchEvent(new KeyboardEvent(t.type,{key:e?"Right":"Left",shiftKey:t.shiftKey,trigger:t}))}#u(t,e,s){this.$state.canSeek()&&(this.#l||(this.#l=this.el.querySelector("[data-media-time-slider]")),this.#l?this.#c(t,s):this.#t.remote.seeking(this.#o(t,e),t))}}const za=["!","@","#","$","%","^","&","*","(",")"];function ja(a){return a.replace(/Shift\+(\d)/g,(t,e)=>za[e-1])}function Ya(a){for(const t of Gt)if(a[t.toLowerCase()+"Key"])return!0;return!1}const Xa={artist:"",artwork:null,autoplay:!1,autoPlay:!1,clipStartTime:0,clipEndTime:0,controls:!1,currentTime:0,crossorigin:null,crossOrigin:null,duration:-1,fullscreenOrientation:"landscape",googleCast:{},load:"visible",posterLoad:"visible",logLevel:"silent",loop:!1,muted:!1,paused:!0,playsinline:!1,playsInline:!1,playbackRate:1,poster:"",preload:"metadata",preferNativeHLS:!1,src:"",title:"",controlsDelay:1e3,hideControlsOnMouseLeave:!1,viewType:"unknown",streamType:"unknown",volume:1,liveEdgeTolerance:10,minLiveDVRWindow:60,keyDisabled:!1,keyTarget:"player",keyShortcuts:Ua,storage:null},Rs=new ft({artist:"",artwork:null,audioTrack:null,audioTracks:[],autoPlay:!1,autoPlayError:null,audioGain:null,buffered:new ae,canLoad:!1,canLoadPoster:!1,canFullscreen:!1,canOrientScreen:As(),canPictureInPicture:!1,canPlay:!1,clipStartTime:0,clipEndTime:0,controls:!1,get iOSControls(){return Ms&&this.mediaType==="video"&&(!this.playsInline||!wt.fullscreenEnabled&&this.fullscreen)},get nativeControls(){return this.controls||this.iOSControls},controlsVisible:!1,get controlsHidden(){return!this.controlsVisible},crossOrigin:null,ended:!1,error:null,fullscreen:!1,get loop(){return this.providedLoop||this.userPrefersLoop},logLevel:"silent",mediaType:"unknown",muted:!1,paused:!0,played:new ae,playing:!1,playsInline:!1,pictureInPicture:!1,preload:"metadata",playbackRate:1,qualities:[],quality:null,autoQuality:!1,canSetQuality:!0,canSetPlaybackRate:!0,canSetVolume:!1,canSetAudioGain:!1,seekable:new ae,seeking:!1,source:{src:"",type:""},sources:[],started:!1,textTracks:[],textTrack:null,get hasCaptions(){return this.textTracks.filter(W).length>0},volume:1,waiting:!1,realCurrentTime:0,get currentTime(){return this.ended?this.duration:this.clipStartTime>0?Math.max(0,Math.min(this.realCurrentTime-this.clipStartTime,this.duration)):this.realCurrentTime},providedDuration:-1,intrinsicDuration:0,get duration(){return this.seekableWindow},get title(){return this.providedTitle||this.inferredTitle},get poster(){return this.providedPoster||this.inferredPoster},get viewType(){return this.providedViewType!=="unknown"?this.providedViewType:this.inferredViewType},get streamType(){return this.providedStreamType!=="unknown"?this.providedStreamType:this.inferredStreamType},get currentSrc(){return this.source},get bufferedStart(){const a=qs(this.buffered)??0;return Math.max(a,this.clipStartTime)},get bufferedEnd(){const a=St(this.buffered)??0;return Math.min(this.seekableEnd,Math.max(0,a-this.clipStartTime))},get bufferedWindow(){return Math.max(0,this.bufferedEnd-this.bufferedStart)},get seekableStart(){if(this.isLiveDVR&&this.liveDVRWindow>0)return Math.max(0,this.seekableEnd-this.liveDVRWindow);const a=qs(this.seekable)??0;return Math.max(a,this.clipStartTime)},get seekableEnd(){if(this.providedDuration>0)return this.providedDuration;const a=this.liveSyncPosition>0?this.liveSyncPosition:this.canPlay?St(this.seekable)??1/0:0;return this.clipEndTime>0?Math.min(this.clipEndTime,a):a},get seekableWindow(){const a=this.seekableEnd-this.seekableStart;return isNaN(a)?1/0:Math.max(0,a)},canAirPlay:!1,canGoogleCast:!1,remotePlaybackState:"disconnected",remotePlaybackType:"none",remotePlaybackLoader:null,remotePlaybackInfo:null,get isAirPlayConnected(){return this.remotePlaybackType==="airplay"&&this.remotePlaybackState==="connected"},get isGoogleCastConnected(){return this.remotePlaybackType==="google-cast"&&this.remotePlaybackState==="connected"},pointer:"fine",orientation:"landscape",width:0,height:0,mediaWidth:0,mediaHeight:0,lastKeyboardAction:null,userBehindLiveEdge:!1,liveEdgeTolerance:10,minLiveDVRWindow:60,get canSeek(){return/unknown|on-demand|:dvr/.test(this.streamType)&&Number.isFinite(this.duration)&&(!this.isLiveDVR||this.duration>=this.liveDVRWindow)},get live(){return this.streamType.includes("live")||!Number.isFinite(this.duration)},get liveEdgeStart(){return this.live&&Number.isFinite(this.seekableEnd)?Math.max(0,this.seekableEnd-this.liveEdgeTolerance):0},get liveEdge(){return this.live&&(!this.canSeek||!this.userBehindLiveEdge&&this.currentTime>=this.liveEdgeStart)},get liveEdgeWindow(){return this.live&&Number.isFinite(this.seekableEnd)?this.seekableEnd-this.liveEdgeStart:0},get isLiveDVR(){return/:dvr/.test(this.streamType)},get liveDVRWindow(){return Math.max(this.inferredLiveDVRWindow,this.minLiveDVRWindow)},autoPlaying:!1,providedTitle:"",inferredTitle:"",providedLoop:!1,userPrefersLoop:!1,providedPoster:"",inferredPoster:"",inferredViewType:"unknown",providedViewType:"unknown",providedStreamType:"unknown",inferredStreamType:"unknown",liveSyncPosition:null,inferredLiveDVRWindow:0,savedState:null}),Os=new Set(["autoPlayError","autoPlaying","buffered","canPlay","error","paused","played","playing","seekable","seeking","waiting"]),Ja=new Set([...Os,"ended","inferredPoster","inferredStreamType","inferredTitle","intrinsicDuration","inferredLiveDVRWindow","liveSyncPosition","realCurrentTime","savedState","started","userBehindLiveEdge"]);function Ns(a,t=!1){const e=t?Os:Ja;Rs.reset(a,s=>e.has(s)),dt()}function Fs(a,t){const e=a+t.clipStartTime(),s=Math.floor(a)===Math.floor(t.seekableStart()),i=Math.floor(e)===Math.floor(t.seekableEnd());return s?t.seekableStart():i?t.seekableEnd():t.isLiveDVR()&&t.liveDVRWindow()>0&&ee.id===t)??null}toArray(){return[...this.items]}[Symbol.iterator](){return this.items.values()}[A.add](t,e){const s=this.items.length;""+s in this||Object.defineProperty(this,s,{get(){return this.items[s]}}),!this.items.includes(t)&&(this.items.push(t),this.dispatchEvent(new K("add",{detail:t,trigger:e})))}[A.remove](t,e){const s=this.items.indexOf(t);s>=0&&(this[A.onRemove]?.(t,e),this.items.splice(s,1),this.dispatchEvent(new K("remove",{detail:t,trigger:e})))}[A.reset](t){for(const e of[...this.items])this[A.remove](e,t);this.items=[],this[A.setReadonly](!1,t),this[A.onReset]?.()}[A.setReadonly](t,e){this[A.readonly]!==t&&(this[A.readonly]=t,this.dispatchEvent(new K("readonly-change",{detail:t,trigger:e})))}}const Kt=Symbol(0);class Bs extends Hs{get selected(){return this.items.find(t=>t.selected)??null}get selectedIndex(){return this.items.findIndex(t=>t.selected)}[A.onRemove](t,e){this[A.select](t,!1,e)}[A.add](t,e){t[Kt]=!1,Object.defineProperty(t,"selected",{get(){return this[Kt]},set:s=>{this.readonly||(this[A.onUserSelect]?.(),this[A.select](t,s))}}),super[A.add](t,e)}[A.select](t,e,s){if(e===t?.[Kt])return;const i=this.selected;t&&(t[Kt]=e),(e?i!==t:i===t)&&(i&&(i[Kt]=!1),this.dispatchEvent(new K("change",{detail:{prev:i,current:this.selected},trigger:s})))}}class Za extends Bs{#t=!1;switch="current";get auto(){return this.#t||this.readonly}[it.enableAuto];[A.onUserSelect](){this[it.setAuto](!1)}[A.onReset](t){this[it.enableAuto]=void 0,this[it.setAuto](!1,t)}autoSelect(t){this.readonly||this.#t||!this[it.enableAuto]||(this[it.enableAuto]?.(t),this[it.setAuto](!0,t))}getBySrc(t){return this.items.find(e=>e.src===t)}[it.setAuto](t,e){this.#t!==t&&(this.#t=t,this.dispatchEvent(new K("auto-change",{detail:t,trigger:e})))}}class Gs extends xt{#t;#e;constructor(t,e){super(),this.#t=t,this.#e=e}async onAttach(t){const e=this.$props[this.#t]();if(e==="eager")requestAnimationFrame(this.#e);else if(e==="idle")na(this.#e);else if(e==="visible"){let s,i=new IntersectionObserver(n=>{this.scope&&n[0].isIntersecting&&(s?.(),s=void 0,this.#e())});i.observe(t),s=P(()=>i.disconnect())}}}class tn{#t;#e;constructor(t,e){this.#t=t,this.#e=e}notify(t,...e){this.#t(new K(t,{detail:e?.[0],trigger:e?.[1]}))}async ready(t,e){return Xt(async()=>{this.#e;const{autoPlay:s,canPlay:i,started:n,duration:r,seekable:o,buffered:d,remotePlaybackInfo:c,playsInline:u,savedState:p,source:v}=this.#e.$state;if(i())return;const w={duration:t?.duration??r(),seekable:t?.seekable??o(),buffered:t?.buffered??d(),provider:this.#e.$provider()};this.notify("can-play",w,e),dt();let S=this.#e.$provider(),{storage:N,qualities:F}=this.#e,{muted:nt,volume:$t,clipStartTime:Vt,playbackRate:lt}=this.#e.$props;await N?.onLoad?.(v());const Rt=p()?.currentTime,Ot=p()?.paused,Se=await N?.getTime(),$s=Rt??Se??Vt(),ia=Ot===!1||Ot!==!0&&!n()&&s();if(S){S.setVolume(await N?.getVolume()??$t()),S.setMuted(nt()||!!await N?.getMuted());const At=await N?.getAudioGain()??1;At>1&&S.audioGain?.setGain?.(At),S.setPlaybackRate?.(await N?.getPlaybackRate()??lt()),S.setPlaysInline?.(u()),$s>0&&S.setCurrentTime($s)}const Nt=await N?.getVideoQuality();if(Nt&&F.length){let At=null,ws=1/0;for(const jt of F){const Ts=Math.abs(Nt.width-jt.width)+Math.abs(Nt.height-jt.height)+(Nt.bitrate?Math.abs(Nt.bitrate-(jt.bitrate??0)):0);Ts0&&this.notify("started",void 0,e),c.set(null)})}async#s(t){const{player:e,$state:{autoPlaying:s,muted:i}}=this.#e;s.set(!0);const n=new K("auto-play-attempt",{trigger:t});try{await e.play(n)}catch{}}}const Ve=wt.fullscreenEnabled;class en extends st{#t=!1;#e=!1;get active(){return this.#e}get supported(){return Ve}onConnect(){new q(wt).add("fullscreenchange",this.#i.bind(this)).add("fullscreenerror",this.#a.bind(this)),P(this.#s.bind(this))}async#s(){Ve&&await this.exit()}#i(t){const e=Re(this.el);e!==this.#e&&(e||(this.#t=!1),this.#e=e,this.dispatch("fullscreen-change",{detail:e,trigger:t}))}#a(t){this.#t&&(this.dispatch("fullscreen-error",{detail:null,trigger:t}),this.#t=!1)}async enter(){try{return this.#t=!0,!this.el||Re(this.el)?void 0:(Ks(),wt.requestFullscreen(this.el))}catch(t){throw this.#t=!1,t}}async exit(){if(!(!this.el||!Re(this.el)))return Ks(),wt.exitFullscreen()}}function Re(a){if(wt.fullscreenElement===a)return!0;try{return a.matches(wt.fullscreenPseudoClass)}catch{return!1}}function Ks(){if(!Ve)throw Error("[vidstack] no fullscreen API")}class ke extends st{#t=y(this.#r());#e=y(!1);#s;get type(){return this.#t()}get locked(){return this.#e()}get portrait(){return this.#t().startsWith("portrait")}get landscape(){return this.#t().startsWith("landscape")}static supported=As();get supported(){return ke.supported}onConnect(){if(this.supported)G(screen.orientation,"change",this.#a.bind(this));else{const t=window.matchMedia("(orientation: landscape)");t.onchange=this.#a.bind(this),P(()=>t.onchange=null)}P(this.#i.bind(this))}async#i(){this.supported&&this.#e()&&await this.unlock()}#a(t){this.#t.set(this.#r()),this.dispatch("orientation-change",{detail:{orientation:f(this.#t),lock:this.#s},trigger:t})}async lock(t){f(this.#e)||this.#s===t||(this.#n(),await screen.orientation.lock(t),this.#e.set(!0),this.#s=t)}async unlock(){f(this.#e)&&(this.#n(),this.#s=void 0,await screen.orientation.unlock(),this.#e.set(!1))}#n(){if(!this.supported)throw Error("[vidstack] no orientation API")}#r(){return this.supported?window.screen.orientation.type:window.innerWidth>=window.innerHeight?"landscape-primary":"portrait-primary"}}class sn{#t=new Map;enqueue(t,e){this.#t.set(t,e)}serve(t){const e=this.peek(t);return this.#t.delete(t),e}peek(t){return this.#t.get(t)}delete(t){this.#t.delete(t)}clear(){this.#t.clear()}}class Us{#t=!1;#e=ks();#s=new Map;get size(){return this.#s.size}get isServing(){return this.#t}async waitForFlush(){this.#t||await this.#e.promise}enqueue(t,e){if(this.#t){e();return}this.#s.delete(t),this.#s.set(t,e)}serve(t){this.#s.get(t)?.(),this.#s.delete(t)}start(){this.#i(),this.#t=!0,this.#s.size>0&&this.#i()}stop(){this.#t=!1}reset(){this.stop(),this.#s.clear(),this.#a()}#i(){for(const t of this.#s.keys())this.serve(t);this.#a()}#a(){this.#e.resolve(),this.#e=ks()}}function Ws(a,t){const e=t.composedPath()[0];return Ss(e)&&a.contains(e)}const Oe=new Set;{let a=function(){for(const t of Oe)try{t()}catch{}window.requestAnimationFrame(a)};a()}function an(a){return Oe.add(a),()=>Oe.delete(a)}function L(a,t,e){a.hasAttribute(t)||a.setAttribute(t,e)}function gt(a,t){if(a.hasAttribute("aria-label")||a.hasAttribute("data-no-label"))return;if(!xe(t)){g(a,"aria-label",t);return}function e(){g(a,"aria-label",t())}l(e)}function Qs(a){const t=getComputedStyle(a);return t.display!=="none"&&parseInt(t.opacity)>0}function nn(a){return!!a&&("checkVisibility"in a?a.checkVisibility({checkOpacity:!0,checkVisibilityCSS:!0}):Qs(a))}function zs(a,t){return an(()=>t(nn(a)))}function js(a,t,e){for(;t;){if(t===a)return!0;if(e?.(t))break;t=t.parentElement}return!1}function bt(a,t){return new q(a).add("pointerup",e=>{e.button===0&&!e.defaultPrevented&&t(e)}).add("keydown",e=>{Yt(e)&&t(e)})}function Ne(a){return Jt(a)&&(a.touches.length>1||a.changedTouches.length>1)}function ht(a){let t=ra(),e=window.requestAnimationFrame(()=>{Ft(a,t),e=-1});return()=>void window.cancelAnimationFrame(e)}function Fe(a,t,e){let s,i=a,n=a.parentElement,r=a.content.firstElementChild,o=[];!r&&a.firstElementChild&&(a.innerHTML=a.firstElementChild.outerHTML,a.firstElementChild.remove(),r=a.content.firstElementChild);for(let d=0;d{for(let d=0;de.includes("left")?`calc(-1 * ${p})`:p,u=p=>d?`calc(-1 * ${p})`:p;return oa(t,a,()=>{la(t,a,{placement:o,middleware:[...r.middleware??[],da({fallbackAxisSideDirection:"start",crossAxis:!1}),ca()],...r}).then(({x:p,y:v,middlewareData:w})=>{const S=!!w.flip?.index;d=e.includes(S?"bottom":"top"),a.setAttribute("data-placement",S?e.startsWith("top")?e.replace("top","bottom"):e.replace("bottom","top"):e),Object.assign(a.style,{top:`calc(${v+"px"} + ${u(n?n+"px":`var(--${s}-y-offset, 0px)`)})`,left:`calc(${p+"px"} + ${c(i?i+"px":`var(--${s}-x-offset, 0px)`)})`})})})}function rn(a){return getComputedStyle(a).animationName!=="none"}function on(a){const t=document.createElement("slot");return t.name=a,t}function ln(a){const t=y(!1);return l(()=>{const e=a();e&&new q(e).add("transitionstart",()=>t.set(!0)).add("transitionend",()=>t.set(!1))}),t}function Xs(a,t){function e(){const s=a();if(!s)return;t();const i=new ResizeObserver(ct(t));return i.observe(s),()=>i.disconnect()}l(e)}function dn(a){const t=cn(a),e=un(a);let s=!1;return _(()=>{const i=t();return s&&!i?!1:(s=i,i||e())})}function cn(a){const t=y(!1);return l(()=>{const e=a();if(!e){t.set(!1);return}new q(e).add("mouseenter",()=>t.set(!0)).add("mouseleave",()=>t.set(!1))}),t}function un(a){const t=y(!1);return l(()=>{const e=a();if(!e){t.set(!1);return}new q(e).add("focusin",()=>t.set(!0)).add("focusout",()=>t.set(!1))}),t}function yt(a){return a instanceof HTMLElement}function hn(){return y("light")}function Js(a,t){l(()=>{const s=t();if(s==="system"){const i=hn();l(()=>e(i()));return}e(s)});function e(s){Pe(a,"light",s==="light"),Pe(a,"dark",s==="dark")}}class pn extends xt{#t=-2;#e=!1;#s=y(!1);#i=y(!1);#a=null;#n=y(!0);defaultDelay=1e3;get canIdle(){return this.#n()}set canIdle(t){this.#n.set(t)}get hideOnMouseLeave(){const{hideControlsOnMouseLeave:t}=this.$props;return this.#s()||t()}set hideOnMouseLeave(t){this.#s.set(t)}get showing(){return this.$state.controlsVisible()}show(t=0,e){this.#m(),this.#e||this.#g(!0,t,e)}hide(t=this.defaultDelay,e){this.#m(),this.#e||this.#g(!1,t,e)}pause(t){this.#e=!0,this.#m(),this.#g(!0,0,t)}resume(t){this.#e=!1,!this.$state.paused()&&this.#g(!1,this.defaultDelay,t)}onConnect(){l(this.#r.bind(this))}#r(){const{viewType:t}=this.$state;if(!this.el||!this.#n())return;if(t()==="audio"){this.show();return}l(this.#o.bind(this)),l(this.#l.bind(this));const e=this.#c.bind(this),s=this.#u.bind(this),i=this.#h.bind(this);new q(this.el).add("can-play",n=>this.show(0,n)).add("play",e).add("pause",s).add("end",i).add("auto-play-fail",s)}#o(){if(!this.el)return;const{started:t,pointer:e,paused:s}=this.$state;if(!t()||e()!=="fine")return;const i=new q(this.el),n=this.hideOnMouseLeave;(!n||!this.#i())&&l(()=>{s()||i.add("pointermove",this.#b.bind(this))}),n&&i.add("mouseenter",this.#d.bind(this)).add("mouseleave",this.#p.bind(this))}#l(){const{paused:t,started:e,autoPlayError:s}=this.$state;if(t()||s()&&!e())return;const i=this.#b.bind(this);l(()=>{if(!this.el)return;const n=this.$state.pointer(),r=n==="coarse",o=new q(this.el),d=[r?"touchend":"pointerup","keydown"];for(const c of d)o.add(c,i,{passive:!1})})}#c(t){t.triggers.hasType("ended")||(this.show(0,t),this.hide(void 0,t))}#u(t){this.show(0,t)}#h(t){const{loop:e}=this.$state;e()&&this.hide(0,t)}#d(t){this.#i.set(!1),this.show(0,t),this.hide(void 0,t)}#p(t){this.#i.set(!0),this.hide(0,t)}#m(){window.clearTimeout(this.#t),this.#t=-1}#b(t){t.MEDIA_GESTURE||this.#e||Ne(t)||(Zt(t)&&(t.key==="Escape"?(this.el?.focus(),this.#a=null):this.#a&&(t.preventDefault(),requestAnimationFrame(()=>{this.#a?.focus(),this.#a=null}))),this.show(0,t),this.hide(this.defaultDelay,t))}#g(t,e,s){if(e===0){this.#y(t,s);return}this.#t=window.setTimeout(()=>{this.scope&&this.#y(t&&!this.#e,s)},e)}#y(t,e){this.$state.controlsVisible()!==t&&(this.$state.controlsVisible.set(t),!t&&document.activeElement&&this.el?.contains(document.activeElement)&&(this.#a=document.activeElement,requestAnimationFrame(()=>{this.el?.focus({preventScroll:!0})})),this.dispatch("controls-change",{detail:t,trigger:e}))}}class mn extends xt{#t;#e;#s;controls;#i;#a;#n;#r=new Us;constructor(t,e,s){super(),this.#t=t,this.#e=e,this.#s=s,this.#n=s.$provider,this.controls=new pn,this.#i=new en,this.#a=new ke}onAttach(){this.listen("fullscreen-change",this.#x.bind(this))}onConnect(t){const e=Object.getOwnPropertyNames(Object.getPrototypeOf(this)),s=new q(t),i=this.#c.bind(this);for(const n of e)n.startsWith("media-")&&s.add(n,i);this.#o(),l(this.#l.bind(this)),l(this.#m.bind(this)),l(this.#b.bind(this)),l(this.#g.bind(this)),l(this.#y.bind(this)),l(this.#$.bind(this)),l(this.#w.bind(this))}onDestroy(){try{const t=this.createEvent("destroy"),{pictureInPicture:e,fullscreen:s}=this.$state;s()&&this.exitFullscreen("prefer-media",t),e()&&this.exitPictureInPicture(t)}catch{}this.#r.reset()}#o(){const{load:t}=this.$props,{canLoad:e}=this.$state;if(t()!=="play"||e())return;const s=this.listen("media-play-request",i=>{this.#u(i),s()})}#l(){const t=this.#n(),e=this.$state.canPlay();return t&&e&&this.#r.start(),()=>{this.#r.stop()}}#c(t){t.stopPropagation(),!t.defaultPrevented&&this[t.type]&&(f(this.#n)?this[t.type](t):this.#r.enqueue(t.type,()=>{f(this.#n)&&this[t.type](t)}))}async play(t){const{canPlay:e,paused:s,autoPlaying:i}=this.$state;if(this.#u(t)||!f(s))return;t&&this.#e.queue.enqueue("media-play-request",t);const n=f(i);try{const r=f(this.#n);return Ge(r,f(e)),await r.play()}catch(r){const o=this.createEvent("play-fail",{detail:_e(r),trigger:t});throw o.autoPlay=n,this.#t.handle(o),r}}#u(t){const{load:e}=this.$props,{canLoad:s}=this.$state;if(e()==="play"&&!s()){const i=this.createEvent("media-start-loading",{trigger:t});return this.dispatchEvent(i),this.#r.enqueue("media-play-request",async()=>{try{await this.play(i)}catch{}}),!0}return!1}async pause(t){const{canPlay:e,paused:s}=this.$state;if(!f(s)){t&&this.#e.queue.enqueue("media-pause-request",t);try{const i=f(this.#n);return Ge(i,f(e)),await i.pause()}catch(i){throw this.#e.queue.delete("media-pause-request"),i}}}setAudioGain(t,e){const{audioGain:s,canSetAudioGain:i}=this.$state;if(s()===t)return;const n=this.#n();if(!n?.audioGain||!i())throw Error("[vidstack] audio gain api not available");e&&this.#e.queue.enqueue("media-audio-gain-change-request",e),n.audioGain.setGain(t)}seekToLiveEdge(t){const{canPlay:e,live:s,liveEdge:i,canSeek:n,liveSyncPosition:r,seekableEnd:o,userBehindLiveEdge:d}=this.$state;if(d.set(!1),f(()=>!s()||i()||!n()))return;const c=f(this.#n);Ge(c,f(e)),t&&this.#e.queue.enqueue("media-seek-request",t);const u=o()-2;c.setCurrentTime(Math.min(u,r()??u))}#h=!1;async enterFullscreen(t="prefer-media",e){const s=this.#d(t);if(Zs(t,s),!s.active)return f(this.$state.pictureInPicture)&&(this.#h=!0,await this.exitPictureInPicture(e)),e&&this.#e.queue.enqueue("media-enter-fullscreen-request",e),s.enter()}async exitFullscreen(t="prefer-media",e){const s=this.#d(t);if(Zs(t,s),!!s.active){e&&this.#e.queue.enqueue("media-exit-fullscreen-request",e);try{const i=await s.exit();return this.#h&&f(this.$state.canPictureInPicture)&&await this.enterPictureInPicture(),i}finally{this.#h=!1}}}#d(t){const e=f(this.#n);return t==="prefer-media"&&this.#i.supported||t==="media"?this.#i:e?.fullscreen}async enterPictureInPicture(t){if(this.#p(),!this.$state.pictureInPicture())return t&&this.#e.queue.enqueue("media-enter-pip-request",t),await this.#n().pictureInPicture.enter()}async exitPictureInPicture(t){if(this.#p(),!!this.$state.pictureInPicture())return t&&this.#e.queue.enqueue("media-exit-pip-request",t),await this.#n().pictureInPicture.exit()}#p(){if(!this.$state.canPictureInPicture())throw Error("[vidstack] no pip support")}#m(){this.controls.defaultDelay=this.$props.controlsDelay()}#b(){const{canSetAudioGain:t}=this.$state,e=!!this.#n()?.audioGain?.supported;t.set(e)}#g(){const{canAirPlay:t}=this.$state,e=!!this.#n()?.airPlay?.supported;t.set(e)}#y(){const{canGoogleCast:t,source:e}=this.$state,s=Ea&&!Aa&&Ma(e());t.set(s)}#$(){const{canFullscreen:t}=this.$state,e=this.#i.supported||!!this.#n()?.fullscreen?.supported;t.set(e)}#w(){const{canPictureInPicture:t}=this.$state,e=!!this.#n()?.pictureInPicture?.supported;t.set(e)}async"media-airplay-request"(t){try{await this.requestAirPlay(t)}catch{}}async requestAirPlay(t){try{const e=this.#n()?.airPlay;if(!e?.supported)throw Error("No AirPlay adapter.");return t&&this.#e.queue.enqueue("media-airplay-request",t),await e.prompt()}catch(e){throw this.#e.queue.delete("media-airplay-request"),e}}async"media-google-cast-request"(t){try{await this.requestGoogleCast(t)}catch{}}#v;async requestGoogleCast(t){try{const{canGoogleCast:e}=this.$state;if(!f(e)){const i=Error("Cast not available.");throw i.code="CAST_NOT_AVAILABLE",i}if(Bt("https://www.gstatic.com"),!this.#v){const i=await import("./vidstack-Bwp7eOqU.js");this.#v=new i.GoogleCastLoader}await this.#v.prompt(this.#s),t&&this.#e.queue.enqueue("media-google-cast-request",t);const s=f(this.$state.remotePlaybackState)!=="disconnected";s&&this.$state.savedState.set({paused:f(this.$state.paused),currentTime:f(this.$state.currentTime)}),this.$state.remotePlaybackLoader.set(s?this.#v:null)}catch(e){throw this.#e.queue.delete("media-google-cast-request"),e}}"media-clip-start-change-request"(t){const{clipStartTime:e}=this.$state;e.set(t.detail)}"media-clip-end-change-request"(t){const{clipEndTime:e}=this.$state;e.set(t.detail),this.dispatch("duration-change",{detail:t.detail,trigger:t})}"media-duration-change-request"(t){const{providedDuration:e,clipEndTime:s}=this.$state;e.set(t.detail),s()<=0&&this.dispatch("duration-change",{detail:t.detail,trigger:t})}"media-audio-track-change-request"(t){const{logger:e,audioTracks:s}=this.#s;if(s.readonly)return;const i=t.detail,n=s[i];if(n){const r=t.type;this.#e.queue.enqueue(r,t),n.selected=!0}}async"media-enter-fullscreen-request"(t){try{await this.enterFullscreen(t.detail,t)}catch(e){this.#f(e,t)}}async"media-exit-fullscreen-request"(t){try{await this.exitFullscreen(t.detail,t)}catch(e){this.#f(e,t)}}async#x(t){const e=f(this.$props.fullscreenOrientation),s=t.detail;if(!(ua(e)||e==="none"||!this.#a.supported))if(s){if(this.#a.locked)return;this.dispatch("media-orientation-lock-request",{detail:e,trigger:t})}else this.#a.locked&&this.dispatch("media-orientation-unlock-request",{trigger:t})}#f(t,e){this.#t.handle(this.createEvent("fullscreen-error",{detail:_e(t)}))}async"media-orientation-lock-request"(t){const e=t.type;try{this.#e.queue.enqueue(e,t),await this.#a.lock(t.detail)}catch{this.#e.queue.delete(e)}}async"media-orientation-unlock-request"(t){const e=t.type;try{this.#e.queue.enqueue(e,t),await this.#a.unlock()}catch{this.#e.queue.delete(e)}}async"media-enter-pip-request"(t){try{await this.enterPictureInPicture(t)}catch(e){this.#T(e,t)}}async"media-exit-pip-request"(t){try{await this.exitPictureInPicture(t)}catch(e){this.#T(e,t)}}#T(t,e){this.#t.handle(this.createEvent("picture-in-picture-error",{detail:_e(t)}))}"media-live-edge-request"(t){const{live:e,liveEdge:s,canSeek:i}=this.$state;if(!(!e()||s()||!i())){this.#e.queue.enqueue("media-seek-request",t);try{this.seekToLiveEdge()}catch{this.#e.queue.delete("media-seek-request")}}}async"media-loop-request"(t){try{this.#e.looping=!0,this.#e.replaying=!0,await this.play(t)}catch{this.#e.looping=!1}}"media-user-loop-change-request"(t){this.$state.userPrefersLoop.set(t.detail)}async"media-pause-request"(t){if(!this.$state.paused())try{await this.pause(t)}catch{}}async"media-play-request"(t){if(this.$state.paused())try{await this.play(t)}catch{}}"media-rate-change-request"(t){const{playbackRate:e,canSetPlaybackRate:s}=this.$state;if(e()===t.detail||!s())return;const i=this.#n();i?.setPlaybackRate&&(this.#e.queue.enqueue("media-rate-change-request",t),i.setPlaybackRate(t.detail))}"media-audio-gain-change-request"(t){try{this.setAudioGain(t.detail,t)}catch{}}"media-quality-change-request"(t){const{qualities:e,storage:s,logger:i}=this.#s;if(e.readonly)return;this.#e.queue.enqueue("media-quality-change-request",t);const n=t.detail;if(n<0)e.autoSelect(t),t.isOriginTrusted&&s?.setVideoQuality?.(null);else{const r=e[n];r&&(r.selected=!0,t.isOriginTrusted&&s?.setVideoQuality?.({id:r.id,width:r.width,height:r.height,bitrate:r.bitrate}))}}"media-pause-controls-request"(t){const e=t.type;this.#e.queue.enqueue(e,t),this.controls.pause(t)}"media-resume-controls-request"(t){const e=t.type;this.#e.queue.enqueue(e,t),this.controls.resume(t)}"media-seek-request"(t){const{canSeek:e,ended:s,live:i,seekableEnd:n,userBehindLiveEdge:r}=this.$state,o=t.detail;s()&&(this.#e.replaying=!0);const d=t.type;this.#e.seeking=!1,this.#e.queue.delete(d);const c=Fs(o,this.$state);!Number.isFinite(c)||!e()||(this.#e.queue.enqueue(d,t),this.#n().setCurrentTime(c),i()&&t.isOriginTrusted&&Math.abs(n()-c)>=2&&r.set(!0))}"media-seeking-request"(t){const e=t.type;this.#e.queue.enqueue(e,t),this.$state.seeking.set(!0),this.#e.seeking=!0}"media-start-loading"(t){if(this.$state.canLoad())return;const e=t.type;this.#e.queue.enqueue(e,t),this.#t.handle(this.createEvent("can-load"))}"media-poster-start-loading"(t){if(this.$state.canLoadPoster())return;const e=t.type;this.#e.queue.enqueue(e,t),this.#t.handle(this.createEvent("can-load-poster"))}"media-text-track-change-request"(t){const{index:e,mode:s}=t.detail,i=this.#s.textTracks[e];if(i){const n=t.type;this.#e.queue.enqueue(n,t),i.setMode(s,t)}}"media-mute-request"(t){if(this.$state.muted())return;const e=t.type;this.#e.queue.enqueue(e,t),this.#n().setMuted(!0)}"media-unmute-request"(t){const{muted:e,volume:s}=this.$state;if(!e())return;const i=t.type;this.#e.queue.enqueue(i,t),this.#s.$provider().setMuted(!1),s()===0&&(this.#e.queue.enqueue(i,t),this.#n().setVolume(.25))}"media-volume-change-request"(t){const{muted:e,volume:s}=this.$state,i=t.detail;if(s()===i)return;const n=t.type;this.#e.queue.enqueue(n,t),this.#n().setVolume(i),i>0&&e()&&(this.#e.queue.enqueue(n,t),this.#n().setMuted(!1))}#k(t,e,s){}}function Ge(a,t){if(!(a&&t))throw Error("[vidstack] media not ready")}function Zs(a,t){if(!t?.supported)throw Error("[vidstack] no fullscreen support")}class fn{seeking=!1;looping=!1;replaying=!1;queue=new sn}function Ke(a){return!C(a)&&"width"in a&&"height"in a&&ot(a.width)&&ot(a.height)}const gn=new Set(["auto-play","auto-play-fail","can-load","sources-change","source-change","load-start","abort","error","loaded-metadata","loaded-data","can-play","play","play-fail","pause","playing","seeking","seeked","waiting"]);class bn extends xt{#t;#e;#s=new Map;#i=!1;#a=[];#n=[-1,-1];#r=!1;#o;constructor(t,e){super(),this.#t=t,this.#e=e}onAttach(t){t.setAttribute("aria-busy","true"),new q(this).add("fullscreen-change",this["fullscreen-change"].bind(this)).add("fullscreen-error",this["fullscreen-error"].bind(this)).add("orientation-change",this["orientation-change"].bind(this))}onConnect(t){l(this.#E.bind(this)),this.#p(),this.#m(),this.#b(),this.#c(),P(this.#u.bind(this))}onDestroy(){const{audioTracks:t,qualities:e,textTracks:s}=this.#e;t[A.reset](),e[A.reset](),s[A.reset](),this.#S()}handle(t){if(!this.scope)return;const e=t.type;Xt(()=>this[t.type]?.(t)),gn.has(e)&&this.#s.set(e,t),this.dispatch(t)}#l=!1;#c(){this.#l&&(requestAnimationFrame(()=>{this.scope&&this.#e.remote.play(new K("dom-connect"))}),this.#l=!1)}#u(){this.#l||(this.#l=!this.$state.paused(),this.#e.$provider()?.pause())}#h(){this.#I(),this.#i=!1,this.#t.replaying=!1,this.#t.looping=!1,this.#r=!1,this.#o=void 0,this.#s.clear()}#d(t,e){const s=this.#t.queue.serve(t);s&&(e.request=s,e.triggers.add(s))}#p(){this.#g(),this.#y();const t=this.#e.textTracks;new q(t).add("add",this.#g.bind(this)).add("remove",this.#g.bind(this)).add("mode-change",this.#y.bind(this))}#m(){const t=this.#e.qualities;new q(t).add("add",this.#v.bind(this)).add("remove",this.#v.bind(this)).add("change",this.#x.bind(this)).add("auto-change",this.#f.bind(this)).add("readonly-change",this.#P.bind(this))}#b(){const t=this.#e.audioTracks;new q(t).add("add",this.#$.bind(this)).add("remove",this.#$.bind(this)).add("change",this.#w.bind(this))}#g(t){const{textTracks:e}=this.$state;e.set(this.#e.textTracks.toArray()),this.dispatch("text-tracks-change",{detail:e(),trigger:t})}#y(t){t&&this.#d("media-text-track-change-request",t);const e=this.#e.textTracks.selected,{textTrack:s}=this.$state;s()!==e&&(s.set(e),this.dispatch("text-track-change",{detail:e,trigger:t}))}#$(t){const{audioTracks:e}=this.$state;e.set(this.#e.audioTracks.toArray()),this.dispatch("audio-tracks-change",{detail:e(),trigger:t})}#w(t){const{audioTrack:e}=this.$state;e.set(this.#e.audioTracks.selected),t&&this.#d("media-audio-track-change-request",t),this.dispatch("audio-track-change",{detail:e(),trigger:t})}#v(t){const{qualities:e}=this.$state;e.set(this.#e.qualities.toArray()),this.dispatch("qualities-change",{detail:e(),trigger:t})}#x(t){const{quality:e}=this.$state;e.set(this.#e.qualities.selected),t&&this.#d("media-quality-change-request",t),this.dispatch("quality-change",{detail:e(),trigger:t})}#f(){const{qualities:t}=this.#e,e=t.auto;this.$state.autoQuality.set(e),e||this.#S()}#T=null;#k(){this.#S(),this.#T=l(()=>{const{qualities:t}=this.#e,{mediaWidth:e,mediaHeight:s}=this.$state,i=e(),n=s();if(i===0||n===0)return;let r=null,o=1/0;for(const d of t){const c=Math.abs(d.width-i)+Math.abs(d.height-n);c{requestAnimationFrame(()=>{this.scope&&(this.$state.inferredViewType.set(t.detail),this.dispatch("view-type-change",{detail:n,trigger:t}))})},0)}"stream-type-change"(t){const e=this.#s.get("source-change");e&&t.triggers.add(e);const{streamType:s,inferredStreamType:i}=this.$state;i.set(t.detail),t.detail=s()}"rate-change"(t){const{storage:e}=this.#e,{canPlay:s}=this.$state;this.$state.playbackRate.set(t.detail),this.#d("media-rate-change-request",t),s()&&e?.setPlaybackRate?.(t.detail)}"remote-playback-change"(t){const{remotePlaybackState:e,remotePlaybackType:s}=this.$state,{type:i,state:n}=t.detail,r=n==="connected";s.set(i),e.set(n);const o=i==="airplay"?"media-airplay-request":"media-google-cast-request";if(r)this.#d(o,t);else{const d=this.#t.queue.peek(o);d&&(t.request=d,t.triggers.add(d))}}"sources-change"(t){const e=this.$state.sources(),s=t.detail;this.$state.sources.set(s),this.#A(e,s,t)}#A(t,e,s){let{qualities:i}=this.#e,n=!1,r=!1;for(const o of t){if(!Ke(o))continue;if(!e.some(c=>c.src===o.src)){const c=i.getBySrc(o.src);c&&(i[A.remove](c,s),r=!0)}}r&&!i.length&&(this.$state.savedState.set(null),i[A.reset](s));for(const o of e){if(!Ke(o)||i.getBySrc(o.src))continue;const d={id:o.id??o.height+"p",bitrate:null,codec:null,...o,selected:!1};i[A.add](d,s),n=!0}n&&!i[it.enableAuto]&&(this.#k(),i[it.enableAuto]=this.#k.bind(this),i[it.setAuto](!0,s))}"source-change"(t){t.isQualityChange=t.originEvent?.type==="quality-change";const e=t.detail;this.#C(t,t.isQualityChange),this.#s.set(t.type,t),this.$state.source.set(e),this.el?.setAttribute("aria-busy","true")}#C(t,e=!1){const{audioTracks:s,qualities:i}=this.#e;if(!e){this.#a=[],this.#n=[-1,-1],s[A.reset](t),i[A.reset](t),Ns(this.$state,e),this.#h();return}Ns(this.$state,e),this.#h()}abort(t){const e=this.#s.get("source-change");e&&t.triggers.add(e);const s=this.#s.get("can-load");s&&!t.triggers.hasType("can-load")&&t.triggers.add(s)}"load-start"(t){const e=this.#s.get("source-change");e&&t.triggers.add(e)}error(t){this.$state.error.set(t.detail);const e=this.#s.get("abort");e&&t.triggers.add(e)}"loaded-metadata"(t){const e=this.#s.get("load-start");e&&t.triggers.add(e)}"loaded-data"(t){const e=this.#s.get("load-start");e&&t.triggers.add(e)}"can-play"(t){const e=this.#s.get("loaded-metadata");e&&t.triggers.add(e),this.#M(t.detail),this.el?.setAttribute("aria-busy","false")}"can-play-through"(t){this.#M(t.detail);const e=this.#s.get("can-play");e&&t.triggers.add(e)}#M(t){const{seekable:e,buffered:s,intrinsicDuration:i,canPlay:n}=this.$state;n.set(!0),s.set(t.buffered),e.set(t.seekable);const r=St(t.seekable)??1/0;i.set(r)}"duration-change"(t){const{live:e,intrinsicDuration:s,providedDuration:i,clipEndTime:n,ended:r}=this.$state,o=t.detail;if(!e()){const d=Number.isNaN(o)?0:o;s.set(d),r()&&this.#_(t)}(i()>0||n()>0)&&t.stopImmediatePropagation()}progress(t){const{buffered:e,seekable:s}=this.$state,{buffered:i,seekable:n}=t.detail,r=St(i),o=i.length!==e().length,d=r!==St(e()),c=St(n),u=n.length!==s().length,p=c!==St(s());(o||d)&&e.set(i),(u||p)&&s.set(n)}play(t){const{paused:e,autoPlayError:s,ended:i,autoPlaying:n,playsInline:r,pointer:o,muted:d,viewType:c,live:u,userBehindLiveEdge:p}=this.$state;if(this.#q(),!e()){t.stopImmediatePropagation();return}t.autoPlay=n();const v=this.#s.get("waiting");v&&t.triggers.add(v),this.#d("media-play-request",t),this.#s.set("play",t),e.set(!1),s.set(null),t.autoPlay&&(this.handle(this.createEvent("auto-play",{detail:{muted:d()},trigger:t})),n.set(!1)),(i()||this.#t.replaying)&&(this.#t.replaying=!1,i.set(!1),this.handle(this.createEvent("replay",{trigger:t}))),!r()&&c()==="video"&&o()==="coarse"&&this.#e.remote.enterFullscreen("prefer-media",t),u()&&!p()&&this.#e.remote.seekToLiveEdge(t)}#q(t){if(!f(this.#e.$provider))return;const{ended:s,seekableStart:i,clipEndTime:n,currentTime:r,realCurrentTime:o,duration:d}=this.$state,c=s()||o()0&&o()>=n()||Math.abs(r()-d())<.1;return c&&this.dispatch("media-seek-request",{detail:i(),trigger:t}),c}"play-fail"(t){const{muted:e,autoPlaying:s}=this.$state,i=this.#s.get("play");i&&t.triggers.add(i),this.#d("media-play-request",t);const{paused:n,playing:r}=this.$state;n.set(!0),r.set(!1),this.#h(),this.#s.set("play-fail",t),t.autoPlay&&(this.handle(this.createEvent("auto-play-fail",{detail:{muted:e(),error:t.detail},trigger:t})),s.set(!1))}playing(t){const e=this.#s.get("play"),s=this.#s.get("seeked");e?t.triggers.add(e):s&&t.triggers.add(s),setTimeout(()=>this.#h(),0);const{paused:i,playing:n,live:r,liveSyncPosition:o,seekableEnd:d,started:c,currentTime:u,seeking:p,ended:v}=this.$state;if(i.set(!1),n.set(!0),p.set(!1),v.set(!1),this.#t.looping){this.#t.looping=!1;return}if(r()&&!c()&&u()===0){const w=o()??d()-2;Number.isFinite(w)&&this.#e.$provider().setCurrentTime(w)}this.started(t)}started(t){const{started:e}=this.$state;e()||(e.set(!0),this.handle(this.createEvent("started",{trigger:t})))}pause(t){this.el?.isConnected||(this.#l=!0),this.#d("media-pause-request",t);const e=this.#s.get("seeked");e&&t.triggers.add(e);const{paused:s,playing:i}=this.$state;s.set(!0),i.set(!1),this.#i&&setTimeout(()=>{this.handle(this.createEvent("end",{trigger:t})),this.#i=!1},0),this.#h()}"time-change"(t){if(this.#t.looping){t.stopImmediatePropagation();return}let{waiting:e,played:s,clipEndTime:i,realCurrentTime:n,currentTime:r}=this.$state,o=t.detail,d=i();n.set(o),this.#D(),e.set(!1);for(const c of this.#e.textTracks)c[Q.updateActiveCues](o,t);d>0&&o>=d&&(this.#i=!0,this.dispatch("media-pause-request",{trigger:t})),this.#V(),this.dispatch("time-update",{detail:{currentTime:r(),played:s()},trigger:t})}#D(){const{currentTime:t,played:e,paused:s}=this.$state;s()||(this.#n=Ra(this.#a,this.#n,t()),e.set(new ae(this.#a)))}#_(t){const{clipStartTime:e,clipEndTime:s,duration:i}=this.$state;e()>0||s()>0||this.handle(this.createEvent("time-change",{detail:i(),trigger:t}))}#V(){const{storage:t}=this.#e,{canPlay:e,realCurrentTime:s}=this.$state;e()&&t?.setTime?.(s())}"audio-gain-change"(t){const{storage:e}=this.#e,{canPlay:s,audioGain:i}=this.$state;i.set(t.detail),this.#d("media-audio-gain-change-request",t),s()&&e?.setAudioGain?.(i())}"volume-change"(t){const{storage:e}=this.#e,{volume:s,muted:i,canPlay:n}=this.$state,r=t.detail;s.set(r.volume),i.set(r.muted||r.volume===0),this.#d("media-volume-change-request",t),this.#d(r.muted?"media-mute-request":"media-unmute-request",t),n()&&(e?.setVolume?.(s()),e?.setMuted?.(i()))}seeking=Tt(t=>{const{seeking:e,realCurrentTime:s,paused:i}=this.$state;e.set(!0),s.set(t.detail),this.#d("media-seeking-request",t),i()&&(this.#o=t,this.#L()),this.#n=[-1,-1]},150,{leading:!0});seeked(t){const{seeking:e,currentTime:s,realCurrentTime:i,paused:n,seekableEnd:r,ended:o,live:d}=this.$state;if(this.#t.seeking)e.set(!0),t.stopImmediatePropagation();else if(e()){const c=this.#s.get("waiting");c&&t.triggers.add(c);const u=this.#s.get("seeking");u&&!t.triggers.has(u)&&t.triggers.add(u),n()&&this.#I(),e.set(!1),i.set(t.detail),this.#d("media-seek-request",t);const p=t?.originEvent;p?.isTrusted&&!(p instanceof MessageEvent)&&!/seek/.test(p.type)&&this.started(t)}d()||(Math.floor(s())!==Math.floor(r())?o.set(!1):this.end(t))}waiting(t){this.#r||this.#t.seeking||(t.stopImmediatePropagation(),this.#o=t,this.#L())}#L=Ce(()=>{if(!this.#o)return;this.#r=!0;const{waiting:t,playing:e}=this.$state;t.set(!0),e.set(!1);const s=this.createEvent("waiting",{trigger:this.#o});this.#s.set("waiting",s),this.dispatch(s),this.#o=void 0,this.#r=!1},300);end(t){const{loop:e,ended:s}=this.$state;if(!(!e()&&s())){if(e()){setTimeout(()=>{requestAnimationFrame(()=>{this.#q(t),this.dispatch("media-loop-request",{trigger:t})})},10);return}setTimeout(()=>this.#R(t),0)}}#R(t){const{storage:e}=this.#e,{paused:s,seeking:i,ended:n,duration:r}=this.$state;this.#_(t),s()||this.dispatch("pause",{trigger:t}),i()&&this.dispatch("seeked",{detail:r(),trigger:t}),n.set(!0),this.#h(),e?.setTime?.(r(),!0),this.dispatch("ended",{trigger:t})}#I(){this.#L.cancel(),this.$state.waiting.set(!1)}"fullscreen-change"(t){const e=t.detail;this.$state.fullscreen.set(e),this.#d(e?"media-enter-fullscreen-request":"media-exit-fullscreen-request",t)}"fullscreen-error"(t){this.#d("media-enter-fullscreen-request",t),this.#d("media-exit-fullscreen-request",t)}"orientation-change"(t){const e=t.detail.lock;this.#d(e?"media-orientation-lock-request":"media-orientation-unlock-request",t)}"picture-in-picture-change"(t){const e=t.detail;this.$state.pictureInPicture.set(e),this.#d(e?"media-enter-pip-request":"media-exit-pip-request",t)}"picture-in-picture-error"(t){this.#d("media-enter-pip-request",t),this.#d("media-exit-pip-request",t)}"title-change"(t){t.trigger&&(t.stopImmediatePropagation(),this.$state.inferredTitle.set(t.detail))}"poster-change"(t){t.trigger&&(t.stopImmediatePropagation(),this.$state.inferredPoster.set(t.detail))}}class yn extends xt{onSetup(){this.#t();const t=[this.#i,this.#n,this.#d,this.#p,this.#o,this.#c,this.#u,this.#m,this.#g,this.#b,this.#r,this.#h,this.#l,this.#e,this.#a];for(const e of t)l(e.bind(this))}#t(){const t={duration:"providedDuration",loop:"providedLoop",poster:"providedPoster",streamType:"providedStreamType",title:"providedTitle",viewType:"providedViewType"},e=new Set(["currentTime","paused","playbackRate","volume"]);for(const s of Object.keys(this.$props))e.has(s)||this.$state[t[s]??s]?.set(this.$props[s]());this.$state.muted.set(this.$props.muted()||this.$props.volume()===0)}#e(){const{viewType:t,streamType:e,title:s,poster:i,loop:n}=this.$props,r=this.$state;r.providedPoster.set(i()),r.providedStreamType.set(e()),r.providedViewType.set(t()),r.providedTitle.set(s()),r.providedLoop.set(n())}#s(){}#i(){const{artist:t,artwork:e}=this.$props;this.$state.artist.set(t()),this.$state.artwork.set(e())}#a(){const{title:t}=this.$state;this.dispatch("title-change",{detail:t()})}#n(){const t=this.$props.autoPlay()||this.$props.autoplay();this.$state.autoPlay.set(t),this.dispatch("auto-play-change",{detail:t})}#r(){const t=this.$state.loop();this.dispatch("loop-change",{detail:t})}#o(){const t=this.$props.controls();this.$state.controls.set(t)}#l(){const{poster:t}=this.$state;this.dispatch("poster-change",{detail:t()})}#c(){const t=this.$props.crossOrigin()??this.$props.crossorigin(),e=t===!0?"":t;this.$state.crossOrigin.set(e)}#u(){const{duration:t}=this.$props;this.dispatch("media-duration-change-request",{detail:t()})}#h(){const t=this.$props.playsInline()||this.$props.playsinline();this.$state.playsInline.set(t),this.dispatch("plays-inline-change",{detail:t})}#d(){const{clipStartTime:t}=this.$props;this.dispatch("media-clip-start-change-request",{detail:t()})}#p(){const{clipEndTime:t}=this.$props;this.dispatch("media-clip-end-change-request",{detail:t()})}#m(){this.dispatch("live-change",{detail:this.$state.live()})}#b(){this.$state.liveEdgeTolerance.set(this.$props.liveEdgeTolerance()),this.$state.minLiveDVRWindow.set(this.$props.minLiveDVRWindow())}#g(){this.dispatch("live-edge-change",{detail:this.$state.liveEdge()})}}class vn{playerId="vds-player";mediaId=null;#t={volume:null,muted:null,audioGain:null,time:null,lang:null,captions:null,rate:null,quality:null};async getVolume(){return this.#t.volume}async setVolume(t){this.#t.volume=t,this.save()}async getMuted(){return this.#t.muted}async setMuted(t){this.#t.muted=t,this.save()}async getTime(){return this.#t.time}async setTime(t,e){const s=t<0;this.#t.time=s?null:t,s||e?this.saveTime():this.saveTimeThrottled()}async getLang(){return this.#t.lang}async setLang(t){this.#t.lang=t,this.save()}async getCaptions(){return this.#t.captions}async setCaptions(t){this.#t.captions=t,this.save()}async getPlaybackRate(){return this.#t.rate}async setPlaybackRate(t){this.#t.rate=t,this.save()}async getAudioGain(){return this.#t.audioGain}async setAudioGain(t){this.#t.audioGain=t,this.save()}async getVideoQuality(){return this.#t.quality}async setVideoQuality(t){this.#t.quality=t,this.save()}onChange(t,e,s="vds-player"){const i=s?localStorage.getItem(s):null,n=e?localStorage.getItem(new URL(e).pathname):null;this.playerId=s,this.mediaId=e,this.#t={volume:null,muted:null,audioGain:null,lang:null,captions:null,rate:null,quality:null,...i?JSON.parse(i):{},time:n?+n:null}}save(){if(!this.playerId)return;const t=JSON.stringify({...this.#t,time:void 0});localStorage.setItem(this.playerId,t)}saveTimeThrottled=Tt(this.saveTime.bind(this),1e3);saveTime(){if(!this.mediaId)return;const t=(this.#t.time??0).toString();localStorage.setItem(new URL(this.mediaId).pathname,t)}}const ti=["play","pause","seekforward","seekbackward","seekto"];class $n extends xt{onConnect(){l(this.#e.bind(this)),l(this.#s.bind(this));const t=this.#i.bind(this);for(const e of ti)navigator.mediaSession.setActionHandler(e,t);P(this.#t.bind(this))}#t(){for(const t of ti)navigator.mediaSession.setActionHandler(t,null)}#e(){const{title:t,artist:e,artwork:s,poster:i}=this.$state;navigator.mediaSession.metadata=new MediaMetadata({title:t(),artist:e(),artwork:s()??[{src:i()}]})}#s(){const{canPlay:t,paused:e}=this.$state;navigator.mediaSession.playbackState=t()?e()?"paused":"playing":"none"}#i(t){const e=new K("media-session-action",{detail:t});switch(t.action){case"play":this.dispatch("media-play-request",{trigger:e});break;case"pause":this.dispatch("media-pause-request",{trigger:e});break;case"seekto":case"seekforward":case"seekbackward":this.dispatch("media-seek-request",{detail:ot(t.seekTime)?t.seekTime:this.$state.currentTime()+(t.seekOffset??(t.action==="seekforward"?10:-10)),trigger:e});break}}}class wn{#t=null;#e=null;#s=-1;#i;constructor(t=void 0){this.#i=t}setTarget(t){this.#t=t}getPlayer(t){return this.#e?this.#e:((t??this.#t)?.dispatchEvent(new K("find-media-player",{detail:e=>void(this.#e=e),bubbles:!0,composed:!0})),this.#e)}setPlayer(t){this.#e=t}startLoading(t){this.#a("media-start-loading",t)}startLoadingPoster(t){this.#a("media-poster-start-loading",t)}requestAirPlay(t){this.#a("media-airplay-request",t)}requestGoogleCast(t){this.#a("media-google-cast-request",t)}play(t){this.#a("media-play-request",t)}pause(t){this.#a("media-pause-request",t)}mute(t){this.#a("media-mute-request",t)}unmute(t){this.#a("media-unmute-request",t)}enterFullscreen(t,e){this.#a("media-enter-fullscreen-request",e,t)}exitFullscreen(t,e){this.#a("media-exit-fullscreen-request",e,t)}lockScreenOrientation(t,e){this.#a("media-orientation-lock-request",e,t)}unlockScreenOrientation(t){this.#a("media-orientation-unlock-request",t)}enterPictureInPicture(t){this.#a("media-enter-pip-request",t)}exitPictureInPicture(t){this.#a("media-exit-pip-request",t)}seeking(t,e){this.#a("media-seeking-request",e,t)}seek(t,e){this.#a("media-seek-request",e,t)}seekToLiveEdge(t){this.#a("media-live-edge-request",t)}changeDuration(t,e){this.#a("media-duration-change-request",e,t)}changeClipStart(t,e){this.#a("media-clip-start-change-request",e,t)}changeClipEnd(t,e){this.#a("media-clip-end-change-request",e,t)}changeVolume(t,e){this.#a("media-volume-change-request",e,Math.max(0,Math.min(1,t)))}changeAudioTrack(t,e){this.#a("media-audio-track-change-request",e,t)}changeQuality(t,e){this.#a("media-quality-change-request",e,t)}requestAutoQuality(t){this.changeQuality(-1,t)}changeTextTrackMode(t,e,s){this.#a("media-text-track-change-request",s,{index:t,mode:e})}changePlaybackRate(t,e){this.#a("media-rate-change-request",e,t)}changeAudioGain(t,e){this.#a("media-audio-gain-change-request",e,t)}resumeControls(t){this.#a("media-resume-controls-request",t)}pauseControls(t){this.#a("media-pause-controls-request",t)}togglePaused(t){const e=this.getPlayer(t?.target);e&&(e.state.paused?this.play(t):this.pause(t))}toggleControls(t){const e=this.getPlayer(t?.target);e&&(e.controls.showing?e.controls.hide(0,t):e.controls.show(0,t))}toggleMuted(t){const e=this.getPlayer(t?.target);e&&(e.state.muted?this.unmute(t):this.mute(t))}toggleFullscreen(t,e){const s=this.getPlayer(e?.target);s&&(s.state.fullscreen?this.exitFullscreen(t,e):this.enterFullscreen(t,e))}togglePictureInPicture(t){const e=this.getPlayer(t?.target);e&&(e.state.pictureInPicture?this.exitPictureInPicture(t):this.enterPictureInPicture(t))}showCaptions(t){const e=this.getPlayer(t?.target);if(!e)return;let s=e.state.textTracks,i=this.#s;(!s[i]||!W(s[i]))&&(i=-1),i===-1&&(i=s.findIndex(n=>W(n)&&n.default)),i===-1&&(i=s.findIndex(n=>W(n))),i>=0&&this.changeTextTrackMode(i,"showing",t),this.#s=-1}disableCaptions(t){const e=this.getPlayer(t?.target);if(!e)return;const s=e.state.textTracks,i=e.state.textTrack;if(i){const n=s.indexOf(i);this.changeTextTrackMode(n,"disabled",t),this.#s=n}}toggleCaptions(t){const e=this.getPlayer(t?.target);e&&(e.state.textTrack?this.disableCaptions():this.showCaptions())}userPrefersLoopChange(t,e){this.#a("media-user-loop-change-request",e,t)}#a(t,e,s){const i=new K(t,{bubbles:!0,composed:!0,cancelable:!0,detail:s,trigger:e});let n=e?.target||null;n&&n instanceof k&&(n=n.el),n=!n||n===document||n===window||n===document.body||this.#e?.el&&n instanceof Node&&!this.#e.el.contains(n)?this.#t??this.getPlayer()?.el:n??this.#t,this.#e?t==="media-play-request"&&!this.#e.state.canLoad?n?.dispatchEvent(i):this.#e.canPlayQueue.enqueue(t,()=>n?.dispatchEvent(i)):n?.dispatchEvent(i)}#n(t){}}class Tn extends Bs{}class kn{priority=0;#t=!0;#e=null;#s=null;#i=new Set;canRender(t,e){return!!e}attach(t){this.#e=t,t&&(t.textTracks.onchange=this.#o.bind(this))}addTrack(t){this.#i.add(t),this.#a(t)}removeTrack(t){t[Q.native]?.remove?.(),t[Q.native]=null,this.#i.delete(t)}changeTrack(t){const e=t?.[Q.native];e&&e.track.mode!=="showing"&&(e.track.mode="showing"),this.#s=t}setDisplay(t){this.#t=t,this.#o()}detach(){this.#e&&(this.#e.textTracks.onchange=null);for(const t of this.#i)this.removeTrack(t);this.#i.clear(),this.#e=null,this.#s=null}#a(t){if(!this.#e)return;const e=t[Q.native]??=this.#n(t);yt(e)&&(this.#e.append(e),e.track.mode=e.default?"showing":"disabled")}#n(t){const e=document.createElement("track"),s=t.default||t.mode==="showing",i=t.src&&t.type==="vtt";return e.id=t.id,e.src=i?t.src:"",e.label=t.label,e.kind=t.kind,e.default=s,t.language&&(e.srclang=t.language),s&&!i&&this.#r(t,e.track),e}#r(t,e){if(!(t.src&&t.type==="vtt"||e.cues?.length))for(const s of t.cues)e.addCue(s)}#o(t){for(const e of this.#i){const s=e[Q.native];if(!s)continue;if(!this.#t){s.track.mode=s.managed?"hidden":"disabled";continue}const i=s.track.mode==="showing";i&&this.#r(e,s.track),e.setMode(i?"showing":"disabled",t)}}}class Sn{#t=null;#e;#s=[];#i;#a=!1;#n=null;#r=null;constructor(t){this.#i=t;const e=t.textTracks;this.#e=e,l(this.#o.bind(this)),P(this.#p.bind(this)),new q(e).add("add",this.#u.bind(this)).add("remove",this.#h.bind(this)).add("mode-change",this.#d.bind(this))}#o(){const{nativeControls:t}=this.#i.$state;this.#a=t(),this.#d()}add(t){this.#s.push(t),Xt(this.#d.bind(this))}remove(t){t.detach(),this.#s.splice(this.#s.indexOf(t),1),Xt(this.#d.bind(this))}attachVideo(t){requestAnimationFrame(()=>{if(this.#t=t,t){this.#n=new kn,this.#n.attach(t);for(const e of this.#e)this.#l(e)}this.#d()})}#l(t){W(t)&&this.#n?.addTrack(t)}#c(t){W(t)&&this.#n?.removeTrack(t)}#u(t){this.#l(t.detail)}#h(t){this.#c(t.detail)}#d(){const t=this.#e.selected;if(this.#t&&(this.#a||t?.[Q.nativeHLS])){this.#r?.changeTrack(null),this.#n?.setDisplay(!0),this.#n?.changeTrack(t);return}if(this.#n?.setDisplay(!1),this.#n?.changeTrack(null),!t){this.#r?.changeTrack(null);return}const e=this.#s.sort((s,i)=>s.priority-i.priority).find(s=>s.canRender(t,this.#t));this.#r!==e&&(this.#r?.detach(),e?.attach(this.#t),this.#r=e??null),e?.changeTrack(t)}#p(){this.#n?.detach(),this.#n=null,this.#r?.detach(),this.#r=null}}class xn extends Hs{#t=!1;#e={};#s=null;#i=null;[Q.crossOrigin];constructor(){super()}get selected(){return this.items.find(e=>e.mode==="showing"&&W(e))??null}get selectedIndex(){const t=this.selected;return t?this.indexOf(t):-1}get preferredLang(){return this.#i}set preferredLang(t){this.#i=t,this.#c(t)}add(t,e){const s=t instanceof ne,i=s?t:new ne(t),n=t.kind==="captions"||t.kind==="subtitles"?"captions":t.kind;return this.#e[n]&&t.default&&delete t.default,i.addEventListener("mode-change",this.#r),this[A.add](i,e),i[Q.crossOrigin]=this[Q.crossOrigin],this.#t&&i[Q.canLoad](),t.default&&(this.#e[n]=i),this.#a(),this}remove(t,e){if(this.#n=t,!!this.items.includes(t))return t===this.#e[t.kind]&&delete this.#e[t.kind],t.mode="disabled",t[Q.onModeChange]=null,t.removeEventListener("mode-change",this.#r),this[A.remove](t,e),this.#n=null,this}clear(t){for(const e of[...this.items])this.remove(e,t);return this}getByKind(t){const e=Array.isArray(t)?t:[t];return this.items.filter(s=>e.includes(s.kind))}[Q.canLoad](){if(!this.#t){for(const t of this.items)t[Q.canLoad]();this.#t=!0,this.#a()}}#a=Ce(async()=>{if(!this.#t)return;!this.#i&&this.#s&&(this.#i=await this.#s.getLang());const t=await this.#s?.getCaptions(),e=[["captions","subtitles"],"chapters","descriptions","metadata"];for(const s of e){const i=this.getByKind(s);if(i.find(c=>c.mode==="showing"))continue;const n=this.#i?i.find(c=>c.language===this.#i):null,r=Y(s)?this.#e[s.find(c=>this.#e[c])||""]:this.#e[s],o=n??r,d=o&&W(o);o&&(!d||t!==!1)&&(o.mode="showing",d&&this.#l(o))}},300);#n=null;#r=this.#o.bind(this);#o(t){const e=t.detail;if(this.#s&&W(e)&&e!==this.#n&&this.#l(e),e.mode==="showing"){const s=W(e)?["captions","subtitles"]:[e.kind];for(const i of this.items)i.mode==="showing"&&i!=e&&s.includes(i.kind)&&(i.mode="disabled")}this.dispatchEvent(new K("mode-change",{detail:t.detail,trigger:t}))}#l(t){t.mode!=="disabled"&&this.#c(t.language),this.#s?.setCaptions?.(t.mode==="showing")}#c(t){this.#s?.setLang?.(this.#i=t)}setStorage(t){this.#s=t}}let le=y(!1);G(document,"pointerdown",()=>{le.set(!1)}),G(document,"keydown",a=>{a.metaKey||a.altKey||a.ctrlKey||le.set(!0)});class at extends st{#t=y(!1);onConnect(t){l(()=>{const e=new q(t);if(!le()){this.#t.set(!1),de(t,!1),e.add("pointerenter",this.#i.bind(this)).add("pointerleave",this.#a.bind(this));return}const s=document.activeElement===t;this.#t.set(s),de(t,s),e.add("focus",this.#e.bind(this)).add("blur",this.#s.bind(this))})}focused(){return this.#t()}#e(){this.#t.set(!0),de(this.el,!0)}#s(){this.#t.set(!1),de(this.el,!1)}#i(){ei(this.el,!0)}#a(){ei(this.el,!1)}}function de(a,t){g(a,"data-focus",t),g(a,"data-hocus",t)}function ei(a,t){g(a,"data-hocus",t),g(a,"data-hover",t)}class It extends k{static props=Xa;static state=Rs;#t;#e;#s;canPlayQueue=new Us;remoteControl;get#i(){return this.#t.$provider()}get#a(){return this.$props}constructor(){super(),new yn;const t={player:this,qualities:new Za,audioTracks:new Tn,storage:null,$provider:y(null),$providerSetup:y(!1),$props:this.$props,$state:this.$state};t.remote=this.remoteControl=new wn(void 0),t.remote.setPlayer(this),t.textTracks=new xn,t.textTracks[Q.crossOrigin]=this.$state.crossOrigin,t.textRenderers=new Sn(t),t.ariaKeys={},this.#t=t,X(Is,t),this.orientation=new ke,new at,new Qa(t);const e=new fn;this.#e=new bn(e,t),this.#s=new mn(this.#e,e,t),t.delegate=new tn(this.#e.handle.bind(this.#e),t),t.notify=t.delegate.notify.bind(t.delegate),typeof navigator<"u"&&"mediaSession"in navigator&&new $n,new Gs("load",this.startLoading.bind(this)),new Gs("posterLoad",this.startLoadingPoster.bind(this))}onSetup(){this.#c(),l(this.#l.bind(this)),l(this.#b.bind(this)),l(this.#p.bind(this)),l(this.#w.bind(this)),l(this.#y.bind(this)),l(this.#T.bind(this)),l(this.#x.bind(this))}onAttach(t){t.setAttribute("data-media-player",""),L(t,"tabindex","0"),L(t,"role","region"),l(this.#S.bind(this)),l(this.#r.bind(this)),l(this.#o.bind(this)),G(t,"find-media-player",this.#u.bind(this))}onConnect(t){Ms&&g(t,"data-iphone","");const e=window.matchMedia("(pointer: coarse)");this.#d(e),e.onchange=this.#d.bind(this);const s=new ResizeObserver(ct(this.#h.bind(this)));s.observe(t),l(this.#h.bind(this)),this.dispatch("media-player-connect",{detail:this,bubbles:!0,composed:!0}),P(()=>{s.disconnect(),e.onchange=null})}onDestroy(){this.#t.player=null,this.canPlayQueue.reset()}#n=!1;#r(){const t=this.$el,{title:e,live:s,viewType:i,providedTitle:n}=this.$state,r=s(),o=Ee(i()),d=o!=="Unknown"?`${r?"Live ":""}${o}`:r?"Live":"Media",c=e();g(this.el,"aria-label",`${d} Player`+(c?` - ${c}`:"")),t?.hasAttribute("title")&&(this.#n=!0,t?.removeAttribute("title"))}#o(){const t=this.orientation.landscape?"landscape":"portrait";this.$state.orientation.set(t),g(this.el,"data-orientation",t),this.#h()}#l(){this.$state.canPlay()&&this.#i?this.canPlayQueue.start():this.canPlayQueue.stop()}#c(){if(It[Ie]){this.setAttributes(It[Ie]);return}const t={"data-load":function(){return this.$props.load()},"data-captions":function(){const s=this.$state.textTrack();return!!s&&W(s)},"data-ios-controls":function(){return this.$state.iOSControls()},"data-controls":function(){return this.controls.showing},"data-buffering":function(){const{canLoad:s,canPlay:i,waiting:n}=this.$state;return s()&&(!i()||n())},"data-error":function(){const{error:s}=this.$state;return!!s()},"data-autoplay-error":function(){const{autoPlayError:s}=this.$state;return!!s()}},e={autoPlay:"autoplay",canAirPlay:"can-airplay",canPictureInPicture:"can-pip",pictureInPicture:"pip",playsInline:"playsinline",remotePlaybackState:"remote-state",remotePlaybackType:"remote-type",isAirPlayConnected:"airplay",isGoogleCastConnected:"google-cast"};for(const s of Ha){const i="data-"+(e[s]??Ht(s));t[i]=function(){return this.$state[s]()}}delete t.title,It[Ie]=t,this.setAttributes(t)}#u(t){t.detail(this)}#h(){if(!this.el)return;const t=this.el.clientWidth,e=this.el.clientHeight;this.$state.width.set(t),this.$state.height.set(e),Z(this.el,"--player-width",t+"px"),Z(this.el,"--player-height",e+"px")}#d(t){const e=t.matches?"coarse":"fine";g(this.el,"data-pointer",e),this.$state.pointer.set(e),this.#h()}get provider(){return this.#i}get controls(){return this.#s.controls}set controls(t){this.#a.controls.set(t)}orientation;get title(){return f(this.$state.title)}set title(t){if(this.#n){this.#n=!1;return}this.#a.title.set(t)}get qualities(){return this.#t.qualities}get audioTracks(){return this.#t.audioTracks}get textTracks(){return this.#t.textTracks}get textRenderers(){return this.#t.textRenderers}get duration(){return this.$state.duration()}set duration(t){this.#a.duration.set(t)}get paused(){return f(this.$state.paused)}set paused(t){this.#m(t)}#p(){this.#m(this.$props.paused())}#m(t){t?this.canPlayQueue.enqueue("paused",()=>this.#s.pause()):this.canPlayQueue.enqueue("paused",()=>this.#s.play())}get muted(){return f(this.$state.muted)}set muted(t){this.#g(t)}#b(){this.#g(this.$props.muted())}#g(t){this.canPlayQueue.enqueue("muted",()=>{this.#i&&this.#i.setMuted(t)})}get currentTime(){return f(this.$state.currentTime)}set currentTime(t){this.#$(t)}#y(){this.#$(this.$props.currentTime())}#$(t){this.canPlayQueue.enqueue("currentTime",()=>{const{currentTime:e}=this.$state;t!==f(e)&&f(()=>{if(!this.#i)return;const s=Fs(t,this.$state);Number.isFinite(s)&&this.#i.setCurrentTime(s)})})}get volume(){return f(this.$state.volume)}set volume(t){this.#v(t)}#w(){this.#v(this.$props.volume())}#v(t){const e=De(0,t,1);this.canPlayQueue.enqueue("volume",()=>{this.#i&&this.#i.setVolume(e)})}get playbackRate(){return f(this.$state.playbackRate)}set playbackRate(t){this.#f(t)}#x(){this.#f(this.$props.playbackRate())}#f(t){this.canPlayQueue.enqueue("rate",()=>{this.#i&&this.#i.setPlaybackRate?.(t)})}#T(){this.#k(this.$props.playsInline())}#k(t){this.canPlayQueue.enqueue("playsinline",()=>{this.#i&&this.#i.setPlaysInline?.(t)})}#S(){let t=this.$props.storage(),e=C(t)?new vn:t;if(e?.onChange){const{source:s}=this.$state,i=C(t)?t:this.el?.id,n=_(this.#P.bind(this));l(()=>e.onChange(s(),n(),i||void 0))}this.#t.storage=e,this.#t.textTracks.setStorage(e),P(()=>{e?.onDestroy?.(),this.#t.storage=null,this.#t.textTracks.setStorage(null)})}#P(){const{clipStartTime:t,clipEndTime:e}=this.$props,{source:s}=this.$state,i=s();return i.src?`${i.src}:${t()}:${e()}`:null}async play(t){return this.#s.play(t)}async pause(t){return this.#s.pause(t)}async enterFullscreen(t,e){return this.#s.enterFullscreen(t,e)}async exitFullscreen(t,e){return this.#s.exitFullscreen(t,e)}enterPictureInPicture(t){return this.#s.enterPictureInPicture(t)}exitPictureInPicture(t){return this.#s.exitPictureInPicture(t)}seekToLiveEdge(t){this.#s.seekToLiveEdge(t)}startLoading(t){this.#t.notify("can-load",void 0,t)}startLoadingPoster(t){this.#t.notify("can-load-poster",void 0,t)}requestAirPlay(t){return this.#s.requestAirPlay(t)}requestGoogleCast(t){return this.#s.requestGoogleCast(t)}setAudioGain(t,e){return this.#s.setAudioGain(t,e)}destroy(){super.destroy(),this.#t.remote.setPlayer(null),this.dispatch("destroy")}}const D=It.prototype;x(D,"canPlayQueue"),x(D,"remoteControl"),x(D,"provider"),x(D,"controls"),x(D,"orientation"),x(D,"title"),x(D,"qualities"),x(D,"audioTracks"),x(D,"textTracks"),x(D,"textRenderers"),x(D,"duration"),x(D,"paused"),x(D,"muted"),x(D,"currentTime"),x(D,"volume"),x(D,"playbackRate"),O(D,"play"),O(D,"pause"),O(D,"enterFullscreen"),O(D,"exitFullscreen"),O(D,"enterPictureInPicture"),O(D,"exitPictureInPicture"),O(D,"seekToLiveEdge"),O(D,"startLoading"),O(D,"startLoadingPoster"),O(D,"requestAirPlay"),O(D,"requestGoogleCast"),O(D,"setAudioGain");class Pn extends T(HTMLElement,It){static tagName="media-player";static attrs={autoPlay:"autoplay",crossOrigin:"crossorigin",playsInline:"playsinline",preferNativeHLS:"prefer-native-hls",minLiveDVRWindow:"min-live-dvr-window"}}class Cn{name="audio";target;canPlay(t){return qa(t)?!C(t.src)||t.type==="?"||_a(this.target,t.type):!1}mediaType(){return"audio"}async load(t){return new(await import("../providers/vidstack-audio-C0VqKUGx.js")).AudioProvider(this.target,t)}}class Ue{name="video";target;canPlay(t){return Da(t)?!C(t.src)||t.type==="?"||Ia(this.target,t.type):!1}mediaType(){return"video"}async load(t){return new(await import("../providers/vidstack-video-Bvb0MdiM.js")).VideoProvider(this.target,t)}}class bs extends Ue{static supported=Va();name="dash";canPlay(t){return bs.supported&&Le(t)}async load(t){return new(await import("../providers/vidstack-dash-Ch9Z4CGa.js")).DASHProvider(this.target,t)}}class ys extends Ue{static supported=Ls();name="hls";canPlay(t){return ys.supported&&qe(t)}async load(t){return new(await import("../providers/vidstack-hls-CR_RbCTl.js")).HLSProvider(this.target,t)}}class En{name="vimeo";target;preconnect(){const t=["https://i.vimeocdn.com","https://f.vimeocdn.com","https://fresnel.vimeocdn.com"];for(const e of t)Bt(e)}canPlay(t){return C(t.src)&&t.type==="video/vimeo"}mediaType(){return"video"}async load(t){return new(await import("../providers/vidstack-vimeo-ClR8pShM.js")).VimeoProvider(this.target,t)}async loadPoster(t,e,s){const{resolveVimeoVideoId:i,getVimeoVideoInfo:n}=await import("./vidstack-2f5gzOW6.js");if(!C(t.src))return null;const{videoId:r,hash:o}=i(t.src);return r?n(r,s,o).then(d=>d?d.poster:null):null}}class An{name="youtube";target;preconnect(){const t=["https://www.google.com","https://i.ytimg.com","https://googleads.g.doubleclick.net","https://static.doubleclick.net"];for(const e of t)Bt(e)}canPlay(t){return C(t.src)&&t.type==="video/youtube"}mediaType(){return"video"}async load(t){return new(await import("../providers/vidstack-youtube-DhHUVzYC.js")).YouTubeProvider(this.target,t)}async loadPoster(t,e,s){const{findYouTubePoster:i,resolveYouTubeVideoId:n}=await import("./vidstack-DDBvyCKL.js"),r=C(t.src)&&n(t.src);return r?i(r,s):null}}function Mn(a,t){return fetch(a,t).then(e=>e.text()).then(e=>/type="static"/.test(e)?"on-demand":"live")}function si(a,t){return fetch(a,t).then(e=>e.text()).then(e=>{const s=Ln(e);if(s)return si(/^https?:/.test(s)?s:new URL(s,a).href,t);const i=/EXT-X-PLAYLIST-TYPE:\s*VOD/.test(e)?"on-demand":"live";return i==="live"&&qn(e)>=10&&(/#EXT-X-DVR-ENABLED:\s*true/.test(e)||e.includes("#EXT-X-DISCONTINUITY"))?"live:dvr":i})}function Ln(a){const t=a.match(/#EXT-X-STREAM-INF:[^\n]+(\n[^\n]+)*/g);return t?t[0].split(`
`)[1].trim():null}function qn(a){const t=a.split(`
-`);for(const e of t)if(e.startsWith("#EXT-X-TARGETDURATION")){const s=parseFloat(e.split(":")[1]);if(!isNaN(s))return s}return-1}const Ue=new Map;class _n{#t=!1;#e;#s;#i;#a;constructor(t,e,s,i=[]){this.#s=t,this.#i=e,this.#a=s;const n=new bs,r=new ys,o=new We,d=new Cn,c=new An,u=new En,p=[c,u];this.#e=_(()=>{const w=e.$state.remotePlaybackLoader(),S=e.$props.preferNativeHLS()?[o,d,n,r,...p,...i]:[r,o,d,n,...p,...i];return w?[w,...S]:S});const{$state:v}=e;v.sources.set(ii(e.$props.src()));for(const w of v.sources()){const S=this.#e().find(F=>F.canPlay(w));if(!S)continue;const N=S.mediaType(w);e.$state.source.set(w),e.$state.mediaType.set(N),e.$state.inferredViewType.set(N),this.#a.set(S),this.#t=!0;break}}connect(){const t=this.#a();this.#t&&(this.#l(this.#i.$state.source(),t),this.#c(t),this.#t=!1),l(this.#n.bind(this)),l(this.#r.bind(this)),l(this.#u.bind(this)),l(this.#h.bind(this)),l(this.#d.bind(this))}#n(){this.#i.notify("sources-change",[...ii(this.#i.$props.src()),...this.#s()])}#r(){const{$state:t}=this.#i,e=t.sources(),s=f(t.source),i=this.#o(s,e);if(e[0]?.src&&!i.src&&!i.type){const{crossOrigin:r}=t,o=oe(r()),d=new AbortController;return Promise.all(e.map(c=>C(c.src)&&c.type==="?"?fetch(c.src,{method:"HEAD",credentials:o,signal:d.signal}).then(u=>(c.type=u.headers.get("content-type")||"??",Ue.set(c.src,c.type),c)).catch(()=>c):c)).then(c=>{if(d.signal.aborted)return;const u=this.#o(f(t.source),c);dt(),u.src||this.#i.notify("error",{message:"Failed to load resource.",code:4})}),()=>d.abort()}dt()}#o(t,e){let s={src:"",type:""},i=null,n=new K("sources-change",{detail:{sources:e}}),r=this.#e(),{started:o,paused:d,currentTime:c,quality:u,savedState:p}=this.#i.$state;for(const v of e){const w=r.find(S=>S.canPlay(v));if(w){s=v,i=w;break}}if(Ke(s)){const v=u(),w=e.find(S=>S.src===v?.src);f(o)?p.set({paused:f(d),currentTime:f(c)}):p.set(null),w&&(s=w,n=new K("quality-change",{detail:{quality:v}}))}return ni(t,s)||this.#l(s,i,n),i!==f(this.#a)&&this.#c(i,n),s}#l(t,e,s){this.#i.notify("source-change",t,s),this.#i.notify("media-type-change",e?.mediaType(t)||"unknown",s)}#c(t,e){this.#i.$providerSetup.set(!1),this.#i.notify("provider-change",null,e),t&&f(()=>t.preconnect?.(this.#i)),this.#a.set(t),this.#i.notify("provider-loader-change",t,e)}#u(){const t=this.#i.$provider();if(!(!t||f(this.#i.$providerSetup))){if(this.#i.$state.canLoad()){Ft(()=>t.setup(),t.scope),this.#i.$providerSetup.set(!0);return}f(()=>t.preconnect?.())}}#h(){if(!this.#i.$providerSetup())return;const t=this.#i.$provider(),e=this.#i.$state.source(),s=f(this.#i.$state.crossOrigin),i=f(this.#i.$props.preferNativeHLS);if(!ni(t?.currentSrc,e)){if(this.#i.$state.canLoad()){const n=new AbortController;return qe(e)?(i||!Ls())&&si(e.src,{credentials:oe(s),signal:n.signal}).then(r=>{this.#i.notify("stream-type-change",r)}).catch(Ae):Le(e)?Mn(e.src,{credentials:oe(s),signal:n.signal}).then(r=>{this.#i.notify("stream-type-change",r)}).catch(Ae):this.#i.notify("stream-type-change","on-demand"),f(()=>{const r=f(this.#i.$state.preload);return t?.loadSource(e,r).catch(o=>{})}),()=>n.abort()}try{C(e.src)&&Bt(new URL(e.src).origin)}catch{}}}#d(){const t=this.#a(),{providedPoster:e,source:s,canLoadPoster:i}=this.#i.$state;if(!t||!t.loadPoster||!s()||!i()||e())return;const n=new AbortController,r=new K("source-change",{detail:s});return t.loadPoster(s(),this.#i,n).then(o=>{this.#i.notify("poster-change",o||"",r)}).catch(()=>{this.#i.notify("poster-change","",r)}),()=>{n.abort()}}}function ii(a){return(Y(a)?a:[a]).map(t=>C(t)?{src:t,type:ai(t)}:{...t,type:ai(t.src,t.type)})}function ai(a,t){return C(t)&&t.length?t:C(a)&&Ue.has(a)?Ue.get(a):!t&&qe({src:a,type:""})?"application/x-mpegurl":!t&&Le({src:a,type:""})?"application/dash+xml":!C(a)||a.startsWith("blob:")?"video/object":a.includes("youtube")||a.includes("youtu.be")?"video/youtube":a.includes("vimeo")&&!a.includes("progressive_redirect")&&!a.includes(".m3u8")?"video/vimeo":"?"}function ni(a,t){return a?.src===t?.src&&a?.type===t?.type}class Dn{#t;#e;#s=[];constructor(t,e){this.#t=t,this.#e=e,l(this.#i.bind(this))}#i(){const t=this.#t();for(const e of this.#s)if(!t.some(s=>s.id===e.id)){const s=e.id&&this.#e.textTracks.getById(e.id);s&&this.#e.textTracks.remove(s)}for(const e of t){const s=e.id||ne.createId(e);this.#e.textTracks.getById(s)||(e.id=s,this.#e.textTracks.add(e))}this.#s=t}}class ri extends k{static props={loaders:[]};static state=new ft({loader:null});#t;#e;#s=y([]);#i=y([]);#a=null;onSetup(){this.#t=b(),this.#e=new _n(this.#s,this.#t,this.$state.loader,this.$props.loaders())}onAttach(t){t.setAttribute("data-media-provider","")}onConnect(t){this.#e.connect(),new Dn(this.#i,this.#t);const e=new ResizeObserver(ct(this.#l.bind(this)));e.observe(t);const s=new MutationObserver(this.#c.bind(this));s.observe(t,{attributes:!0,childList:!0}),this.#l(),this.#c(),P(()=>{e.disconnect(),s.disconnect()})}#n=-1;load(t){t?.setAttribute("aria-hidden","true"),window.cancelAnimationFrame(this.#n),this.#n=requestAnimationFrame(()=>this.#r(t)),P(()=>{window.cancelAnimationFrame(this.#n)})}#r(t){if(!this.scope)return;const e=this.$state.loader(),{$provider:s}=this.#t;this.#a===e&&e?.target===t&&f(s)||(this.#o(),this.#a=e,e&&(e.target=t||null),!(!e||!t)&&e.load(this.#t).then(i=>{this.scope&&f(this.$state.loader)===e&&this.#t.notify("provider-change",i)}))}onDestroy(){this.#a=null,this.#o()}#o(){this.#t?.notify("provider-change",null)}#l(){if(!this.el)return;const{player:t,$state:e}=this.#t,s=this.el.offsetWidth,i=this.el.offsetHeight;t&&(e.mediaWidth.set(s),e.mediaHeight.set(i),t.el&&(Z(t.el,"--media-width",s+"px"),Z(t.el,"--media-height",i+"px")))}#c(){const t=[],e=[],s=this.el.children;for(const i of s)if(!i.hasAttribute("data-vds")){if(i instanceof HTMLSourceElement){const n={id:i.id,src:i.src,type:i.type};for(const r of["id","src","width","height","bitrate","codec"]){const o=i.getAttribute(`data-${r}`);C(o)&&(n[r]=/id|src|codec/.test(r)?o:Number(o))}t.push(n)}else if(i instanceof HTMLTrackElement){const n={src:i.src,kind:i.track.kind,language:i.srclang,label:i.label,default:i.default,type:i.getAttribute("data-type")};e.push({id:i.id||ne.createId(n),...n})}}this.#s.set(t),this.#i.set(e),dt()}}const In=ri.prototype;O(In,"load");class Vn extends T(HTMLElement,ri){static tagName="media-provider";#t;#e=null;#s=null;onSetup(){this.#t=b(),this.setAttribute("keep-alive","")}onDestroy(){this.#s?.remove(),this.#s=null,this.#e?.remove(),this.#e=null}onConnect(){l(()=>{const t=this.$state.loader(),e=t?.name==="youtube",s=t?.name==="vimeo",i=e||s,n=t?.name==="google-cast",r=t?n?this.#r():i?this.#n():t.mediaType()==="audio"?this.#i():this.#a():null;if(this.#e!==r){const o=this.#e?.parentElement??this;this.#e?.remove(),this.#e=r,r&&o.prepend(r),i&&r&&l(()=>{const{nativeControls:d,viewType:c}=this.#t.$state,u=d(),p=c()==="audio";!u&&!p?(this.#s=this.querySelector(".vds-blocker"),this.#s||(this.#s=document.createElement("div"),this.#s.classList.add("vds-blocker"),r.after(this.#s))):(this.#s?.remove(),this.#s=null),g(r,"data-no-controls",!u)})}e?r?.classList.add("vds-youtube"):s&&r?.classList.add("vds-vimeo"),i||(this.#s?.remove(),this.#s=null),this.load(r)})}#i(){const t=this.#e instanceof HTMLAudioElement?this.#e:document.createElement("audio"),{controls:e,crossOrigin:s}=this.#t.$state;return l(()=>{g(t,"controls",e()),g(t,"crossorigin",s())}),t}#a(){const t=this.#e instanceof HTMLVideoElement?this.#e:document.createElement("video"),{crossOrigin:e,poster:s,nativeControls:i}=this.#t.$state,n=_(()=>i()?"true":null),r=_(()=>s()&&i()?s():null);return l(()=>{g(t,"controls",n()),g(t,"crossorigin",e()),g(t,"poster",r())}),t}#n(){const t=this.#e instanceof HTMLIFrameElement?this.#e:document.createElement("iframe"),{nativeControls:e}=this.#t.$state;return l(()=>g(t,"tabindex",e()?null:-1)),t}#r(){if(this.#e?.classList.contains("vds-google-cast"))return this.#e;const t=document.createElement("div");return t.classList.add("vds-google-cast"),import("./vidstack-8IHwm4sy.js").then(({insertContent:e})=>{e(t,this.#t.$state)}),t}}$(Pn),$(Vn);const oi=rt();function E(){return I(oi)}const Rn={colorScheme:"system",download:null,customIcons:!1,disableTimeSlider:!1,menuContainer:null,menuGroup:"bottom",noAudioGain:!1,noGestures:!1,noKeyboardAnimations:!1,noModal:!1,noScrubGesture:!1,playbackRates:{min:0,max:2,step:.25},audioGains:{min:0,max:300,step:25},seekStep:10,sliderChaptersMinWidth:325,hideQualityBitrate:!1,smallWhen:!1,thumbnails:null,translations:null,when:!1};class Qe extends k{static props=Rn;#t;#e=_(()=>{const t=this.$props.when();return this.#i(t)});#s=_(()=>{const t=this.$props.smallWhen();return this.#i(t)});get isMatch(){return this.#e()}get isSmallLayout(){return this.#s()}onSetup(){this.#t=b(),this.setAttributes({"data-match":this.#e,"data-sm":()=>this.#s()?"":null,"data-lg":()=>this.#s()?null:"","data-size":()=>this.#s()?"sm":"lg","data-no-scrub-gesture":this.$props.noScrubGesture}),X(oi,{...this.$props,when:this.#e,smallWhen:this.#s,userPrefersAnnouncements:y(!0),userPrefersKeyboardAnimations:y(!0),menuPortal:y(null)})}onAttach(t){Js(t,this.$props.colorScheme)}#i(t){return t!=="never"&&(xs(t)?t:_(()=>t(this.#t.player.state))())}}const li=Qe.prototype;x(li,"isMatch"),x(li,"isSmallLayout");let On=class extends Qe{static props={...super.props,when:({viewType:t})=>t==="audio",smallWhen:({width:t})=>t<576}};class Nn extends pa{#t=null;#e=!1;#s=null;constructor(t){super(t),this.#e=t.type===Ps.ATTRIBUTE||t.type===Ps.BOOLEAN_ATTRIBUTE}render(t){return t!==this.#t&&(this.disconnected(),this.#t=t,this.isConnected&&this.#i()),this.#t?this.#a(f(this.#t)):ma}reconnected(){this.#i()}disconnected(){this.#s?.(),this.#s=null}#i(){this.#t&&(this.#s=l(this.#r.bind(this)))}#a(t){return this.#e?Me(t):t}#n(t){this.setValue(this.#a(t))}#r(){this.#n(this.#t?.())}}function m(a){return ha(Nn)(_(a))}class ce extends HTMLElement{rootPart=null;connectedCallback(){this.rootPart=te(this.render(),this,{renderBefore:this.firstChild}),this.rootPart.setConnected(!0)}disconnectedCallback(){this.rootPart?.setConnected(!1),this.rootPart=null,te(null,this)}}function di(a,t){l(()=>{const{player:e}=b(),s=e.el;return s&&g(s,"data-layout",t()&&a),()=>s?.removeAttribute("data-layout")})}class ci{#t;#e;elements=new Set;constructor(t,e){this.#t=t,this.#e=e}connect(){this.#i();const t=new MutationObserver(this.#s);for(const e of this.#t)t.observe(e,{childList:!0,subtree:!0});P(()=>t.disconnect()),P(this.disconnect.bind(this))}disconnect(){this.elements.clear()}assign(t,e){Ss(t)?(e.textContent="",e.append(t)):(te(null,e),te(t,e)),e.style.display||(e.style.display="contents");const s=e.firstElementChild;if(!s)return;const i=e.getAttribute("data-class");i&&s.classList.add(...i.split(" "))}#s=ct(this.#i.bind(this));#i(t){if(t&&!t.some(i=>i.addedNodes.length))return;let e=!1,s=this.#t.flatMap(i=>[...i.querySelectorAll("slot")]);for(const i of s)!i.hasAttribute("name")||this.elements.has(i)||(this.elements.add(i),e=!0);e&&this.#e(this.elements)}}let Fn=0,ue="data-slot-id";class ze{#t;slots;constructor(t){this.#t=t,this.slots=new ci(t,this.#s.bind(this))}connect(){this.slots.connect(),this.#s();const t=new MutationObserver(this.#e);for(const e of this.#t)t.observe(e,{childList:!0});P(()=>t.disconnect())}#e=ct(this.#s.bind(this));#s(){for(const t of this.#t)for(const e of t.children){if(e.nodeType!==1)continue;const s=e.getAttribute("slot");if(!s)continue;e.style.display="none";let i=e.getAttribute(ue);i||e.setAttribute(ue,i=++Fn+"");for(const n of this.slots.elements){if(n.getAttribute("name")!==s||n.getAttribute(ue)===i)continue;const r=document.importNode(e,!0);s.includes("-icon")&&r.classList.add("vds-icon"),r.style.display="",r.removeAttribute("slot"),this.slots.assign(r,n),n.setAttribute(ue,i)}}}}function Lt(a,t,e){const{smallWhen:s}=E();return(e&&!s()?`(${e}) `:"")+t}function je(){return m(()=>{const{translations:a,userPrefersAnnouncements:t}=E();return t()?h``:null})}function tt(a,t=""){return h`{const w=e.$state.remotePlaybackLoader(),S=e.$props.preferNativeHLS()?[o,d,n,r,...p,...i]:[r,o,d,n,...p,...i];return w?[w,...S]:S});const{$state:v}=e;v.sources.set(ii(e.$props.src()));for(const w of v.sources()){const S=this.#e().find(F=>F.canPlay(w));if(!S)continue;const N=S.mediaType(w);e.$state.source.set(w),e.$state.mediaType.set(N),e.$state.inferredViewType.set(N),this.#a.set(S),this.#t=!0;break}}connect(){const t=this.#a();this.#t&&(this.#l(this.#i.$state.source(),t),this.#c(t),this.#t=!1),l(this.#n.bind(this)),l(this.#r.bind(this)),l(this.#u.bind(this)),l(this.#h.bind(this)),l(this.#d.bind(this))}#n(){this.#i.notify("sources-change",[...ii(this.#i.$props.src()),...this.#s()])}#r(){const{$state:t}=this.#i,e=t.sources(),s=f(t.source),i=this.#o(s,e);if(e[0]?.src&&!i.src&&!i.type){const{crossOrigin:r}=t,o=oe(r()),d=new AbortController;return Promise.all(e.map(c=>C(c.src)&&c.type==="?"?fetch(c.src,{method:"HEAD",credentials:o,signal:d.signal}).then(u=>(c.type=u.headers.get("content-type")||"??",We.set(c.src,c.type),c)).catch(()=>c):c)).then(c=>{if(d.signal.aborted)return;const u=this.#o(f(t.source),c);dt(),u.src||this.#i.notify("error",{message:"Failed to load resource.",code:4})}),()=>d.abort()}dt()}#o(t,e){let s={src:"",type:""},i=null,n=new K("sources-change",{detail:{sources:e}}),r=this.#e(),{started:o,paused:d,currentTime:c,quality:u,savedState:p}=this.#i.$state;for(const v of e){const w=r.find(S=>S.canPlay(v));if(w){s=v,i=w;break}}if(Ke(s)){const v=u(),w=e.find(S=>S.src===v?.src);f(o)?p.set({paused:f(d),currentTime:f(c)}):p.set(null),w&&(s=w,n=new K("quality-change",{detail:{quality:v}}))}return ni(t,s)||this.#l(s,i,n),i!==f(this.#a)&&this.#c(i,n),s}#l(t,e,s){this.#i.notify("source-change",t,s),this.#i.notify("media-type-change",e?.mediaType(t)||"unknown",s)}#c(t,e){this.#i.$providerSetup.set(!1),this.#i.notify("provider-change",null,e),t&&f(()=>t.preconnect?.(this.#i)),this.#a.set(t),this.#i.notify("provider-loader-change",t,e)}#u(){const t=this.#i.$provider();if(!(!t||f(this.#i.$providerSetup))){if(this.#i.$state.canLoad()){Ft(()=>t.setup(),t.scope),this.#i.$providerSetup.set(!0);return}f(()=>t.preconnect?.())}}#h(){if(!this.#i.$providerSetup())return;const t=this.#i.$provider(),e=this.#i.$state.source(),s=f(this.#i.$state.crossOrigin),i=f(this.#i.$props.preferNativeHLS);if(!ni(t?.currentSrc,e)){if(this.#i.$state.canLoad()){const n=new AbortController;return qe(e)?(i||!Ls())&&si(e.src,{credentials:oe(s),signal:n.signal}).then(r=>{this.#i.notify("stream-type-change",r)}).catch(Ae):Le(e)?Mn(e.src,{credentials:oe(s),signal:n.signal}).then(r=>{this.#i.notify("stream-type-change",r)}).catch(Ae):this.#i.notify("stream-type-change","on-demand"),f(()=>{const r=f(this.#i.$state.preload);return t?.loadSource(e,r).catch(o=>{})}),()=>n.abort()}try{C(e.src)&&Bt(new URL(e.src).origin)}catch{}}}#d(){const t=this.#a(),{providedPoster:e,source:s,canLoadPoster:i}=this.#i.$state;if(!t||!t.loadPoster||!s()||!i()||e())return;const n=new AbortController,r=new K("source-change",{detail:s});return t.loadPoster(s(),this.#i,n).then(o=>{this.#i.notify("poster-change",o||"",r)}).catch(()=>{this.#i.notify("poster-change","",r)}),()=>{n.abort()}}}function ii(a){return(Y(a)?a:[a]).map(t=>C(t)?{src:t,type:ai(t)}:{...t,type:ai(t.src,t.type)})}function ai(a,t){return C(t)&&t.length?t:C(a)&&We.has(a)?We.get(a):!t&&qe({src:a,type:""})?"application/x-mpegurl":!t&&Le({src:a,type:""})?"application/dash+xml":!C(a)||a.startsWith("blob:")?"video/object":a.includes("youtube")||a.includes("youtu.be")?"video/youtube":a.includes("vimeo")&&!a.includes("progressive_redirect")&&!a.includes(".m3u8")?"video/vimeo":"?"}function ni(a,t){return a?.src===t?.src&&a?.type===t?.type}class Dn{#t;#e;#s=[];constructor(t,e){this.#t=t,this.#e=e,l(this.#i.bind(this))}#i(){const t=this.#t();for(const e of this.#s)if(!t.some(s=>s.id===e.id)){const s=e.id&&this.#e.textTracks.getById(e.id);s&&this.#e.textTracks.remove(s)}for(const e of t){const s=e.id||ne.createId(e);this.#e.textTracks.getById(s)||(e.id=s,this.#e.textTracks.add(e))}this.#s=t}}class ri extends k{static props={loaders:[]};static state=new ft({loader:null});#t;#e;#s=y([]);#i=y([]);#a=null;onSetup(){this.#t=b(),this.#e=new _n(this.#s,this.#t,this.$state.loader,this.$props.loaders())}onAttach(t){t.setAttribute("data-media-provider","")}onConnect(t){this.#e.connect(),new Dn(this.#i,this.#t);const e=new ResizeObserver(ct(this.#l.bind(this)));e.observe(t);const s=new MutationObserver(this.#c.bind(this));s.observe(t,{attributes:!0,childList:!0}),this.#l(),this.#c(),P(()=>{e.disconnect(),s.disconnect()})}#n=-1;load(t){t?.setAttribute("aria-hidden","true"),window.cancelAnimationFrame(this.#n),this.#n=requestAnimationFrame(()=>this.#r(t)),P(()=>{window.cancelAnimationFrame(this.#n)})}#r(t){if(!this.scope)return;const e=this.$state.loader(),{$provider:s}=this.#t;this.#a===e&&e?.target===t&&f(s)||(this.#o(),this.#a=e,e&&(e.target=t||null),!(!e||!t)&&e.load(this.#t).then(i=>{this.scope&&f(this.$state.loader)===e&&this.#t.notify("provider-change",i)}))}onDestroy(){this.#a=null,this.#o()}#o(){this.#t?.notify("provider-change",null)}#l(){if(!this.el)return;const{player:t,$state:e}=this.#t,s=this.el.offsetWidth,i=this.el.offsetHeight;t&&(e.mediaWidth.set(s),e.mediaHeight.set(i),t.el&&(Z(t.el,"--media-width",s+"px"),Z(t.el,"--media-height",i+"px")))}#c(){const t=[],e=[],s=this.el.children;for(const i of s)if(!i.hasAttribute("data-vds")){if(i instanceof HTMLSourceElement){const n={id:i.id,src:i.src,type:i.type};for(const r of["id","src","width","height","bitrate","codec"]){const o=i.getAttribute(`data-${r}`);C(o)&&(n[r]=/id|src|codec/.test(r)?o:Number(o))}t.push(n)}else if(i instanceof HTMLTrackElement){const n={src:i.src,kind:i.track.kind,language:i.srclang,label:i.label,default:i.default,type:i.getAttribute("data-type")};e.push({id:i.id||ne.createId(n),...n})}}this.#s.set(t),this.#i.set(e),dt()}}const In=ri.prototype;O(In,"load");class Vn extends T(HTMLElement,ri){static tagName="media-provider";#t;#e=null;#s=null;onSetup(){this.#t=b(),this.setAttribute("keep-alive","")}onDestroy(){this.#s?.remove(),this.#s=null,this.#e?.remove(),this.#e=null}onConnect(){l(()=>{const t=this.$state.loader(),e=t?.name==="youtube",s=t?.name==="vimeo",i=e||s,n=t?.name==="google-cast",r=t?n?this.#r():i?this.#n():t.mediaType()==="audio"?this.#i():this.#a():null;if(this.#e!==r){const o=this.#e?.parentElement??this;this.#e?.remove(),this.#e=r,r&&o.prepend(r),i&&r&&l(()=>{const{nativeControls:d,viewType:c}=this.#t.$state,u=d(),p=c()==="audio";!u&&!p?(this.#s=this.querySelector(".vds-blocker"),this.#s||(this.#s=document.createElement("div"),this.#s.classList.add("vds-blocker"),r.after(this.#s))):(this.#s?.remove(),this.#s=null),g(r,"data-no-controls",!u)})}e?r?.classList.add("vds-youtube"):s&&r?.classList.add("vds-vimeo"),i||(this.#s?.remove(),this.#s=null),this.load(r)})}#i(){const t=this.#e instanceof HTMLAudioElement?this.#e:document.createElement("audio"),{controls:e,crossOrigin:s}=this.#t.$state;return l(()=>{g(t,"controls",e()),g(t,"crossorigin",s())}),t}#a(){const t=this.#e instanceof HTMLVideoElement?this.#e:document.createElement("video"),{crossOrigin:e,poster:s,nativeControls:i}=this.#t.$state,n=_(()=>i()?"true":null),r=_(()=>s()&&i()?s():null);return l(()=>{g(t,"controls",n()),g(t,"crossorigin",e()),g(t,"poster",r())}),t}#n(){const t=this.#e instanceof HTMLIFrameElement?this.#e:document.createElement("iframe"),{nativeControls:e}=this.#t.$state;return l(()=>g(t,"tabindex",e()?null:-1)),t}#r(){if(this.#e?.classList.contains("vds-google-cast"))return this.#e;const t=document.createElement("div");return t.classList.add("vds-google-cast"),import("./vidstack-CqQtTnlu.js").then(({insertContent:e})=>{e(t,this.#t.$state)}),t}}$(Pn),$(Vn);const oi=rt();function E(){return I(oi)}const Rn={colorScheme:"system",download:null,customIcons:!1,disableTimeSlider:!1,menuContainer:null,menuGroup:"bottom",noAudioGain:!1,noGestures:!1,noKeyboardAnimations:!1,noModal:!1,noScrubGesture:!1,playbackRates:{min:0,max:2,step:.25},audioGains:{min:0,max:300,step:25},seekStep:10,sliderChaptersMinWidth:325,hideQualityBitrate:!1,smallWhen:!1,thumbnails:null,translations:null,when:!1};class Qe extends k{static props=Rn;#t;#e=_(()=>{const t=this.$props.when();return this.#i(t)});#s=_(()=>{const t=this.$props.smallWhen();return this.#i(t)});get isMatch(){return this.#e()}get isSmallLayout(){return this.#s()}onSetup(){this.#t=b(),this.setAttributes({"data-match":this.#e,"data-sm":()=>this.#s()?"":null,"data-lg":()=>this.#s()?null:"","data-size":()=>this.#s()?"sm":"lg","data-no-scrub-gesture":this.$props.noScrubGesture}),X(oi,{...this.$props,when:this.#e,smallWhen:this.#s,userPrefersAnnouncements:y(!0),userPrefersKeyboardAnimations:y(!0),menuPortal:y(null)})}onAttach(t){Js(t,this.$props.colorScheme)}#i(t){return t!=="never"&&(xs(t)?t:_(()=>t(this.#t.player.state))())}}const li=Qe.prototype;x(li,"isMatch"),x(li,"isSmallLayout");let On=class extends Qe{static props={...super.props,when:({viewType:t})=>t==="audio",smallWhen:({width:t})=>t<576}};class Nn extends pa{#t=null;#e=!1;#s=null;constructor(t){super(t),this.#e=t.type===Ps.ATTRIBUTE||t.type===Ps.BOOLEAN_ATTRIBUTE}render(t){return t!==this.#t&&(this.disconnected(),this.#t=t,this.isConnected&&this.#i()),this.#t?this.#a(f(this.#t)):ma}reconnected(){this.#i()}disconnected(){this.#s?.(),this.#s=null}#i(){this.#t&&(this.#s=l(this.#r.bind(this)))}#a(t){return this.#e?Me(t):t}#n(t){this.setValue(this.#a(t))}#r(){this.#n(this.#t?.())}}function m(a){return ha(Nn)(_(a))}class ce extends HTMLElement{rootPart=null;connectedCallback(){this.rootPart=te(this.render(),this,{renderBefore:this.firstChild}),this.rootPart.setConnected(!0)}disconnectedCallback(){this.rootPart?.setConnected(!1),this.rootPart=null,te(null,this)}}function di(a,t){l(()=>{const{player:e}=b(),s=e.el;return s&&g(s,"data-layout",t()&&a),()=>s?.removeAttribute("data-layout")})}class ci{#t;#e;elements=new Set;constructor(t,e){this.#t=t,this.#e=e}connect(){this.#i();const t=new MutationObserver(this.#s);for(const e of this.#t)t.observe(e,{childList:!0,subtree:!0});P(()=>t.disconnect()),P(this.disconnect.bind(this))}disconnect(){this.elements.clear()}assign(t,e){Ss(t)?(e.textContent="",e.append(t)):(te(null,e),te(t,e)),e.style.display||(e.style.display="contents");const s=e.firstElementChild;if(!s)return;const i=e.getAttribute("data-class");i&&s.classList.add(...i.split(" "))}#s=ct(this.#i.bind(this));#i(t){if(t&&!t.some(i=>i.addedNodes.length))return;let e=!1,s=this.#t.flatMap(i=>[...i.querySelectorAll("slot")]);for(const i of s)!i.hasAttribute("name")||this.elements.has(i)||(this.elements.add(i),e=!0);e&&this.#e(this.elements)}}let Fn=0,ue="data-slot-id";class ze{#t;slots;constructor(t){this.#t=t,this.slots=new ci(t,this.#s.bind(this))}connect(){this.slots.connect(),this.#s();const t=new MutationObserver(this.#e);for(const e of this.#t)t.observe(e,{childList:!0});P(()=>t.disconnect())}#e=ct(this.#s.bind(this));#s(){for(const t of this.#t)for(const e of t.children){if(e.nodeType!==1)continue;const s=e.getAttribute("slot");if(!s)continue;e.style.display="none";let i=e.getAttribute(ue);i||e.setAttribute(ue,i=++Fn+"");for(const n of this.slots.elements){if(n.getAttribute("name")!==s||n.getAttribute(ue)===i)continue;const r=document.importNode(e,!0);s.includes("-icon")&&r.classList.add("vds-icon"),r.style.display="",r.removeAttribute("slot"),this.slots.assign(r,n),n.setAttribute(ue,i)}}}}function Lt(a,t,e){const{smallWhen:s}=E();return(e&&!s()?`(${e}) `:"")+t}function je(){return m(()=>{const{translations:a,userPrefersAnnouncements:t}=E();return t()?h``:null})}function tt(a,t=""){return h``}function Wt(a){return a.map(t=>tt(t))}function M(a,t,e){return m(()=>Lt(a,t,e))}function Ye({tooltip:a}){const{translations:t}=E(),{remotePlaybackState:e}=z(),s=m(()=>{const n=Lt(t,"AirPlay"),r=Ee(e());return`${n} ${r}`}),i=M(t,"AirPlay");return h`
+ >`}function Ut(a){return a.map(t=>tt(t))}function M(a,t,e){return m(()=>Lt(a,t,e))}function Ye({tooltip:a}){const{translations:t}=E(),{remotePlaybackState:e}=z(),s=m(()=>{const n=Lt(t,"AirPlay"),r=Ee(e());return`${n} ${r}`}),i=M(t,"AirPlay");return h`
@@ -32,7 +32,7 @@ import{u as I,c as rt,V as st,e as l,s as y,E as q,p as f,l as G,i as C,a as Y,b
class="vds-play-button vds-button"
aria-label=${M(t,"Play")}
>
- ${Wt(["play","pause","replay"])}
+ ${Ut(["play","pause","replay"])}
@@ -48,7 +48,7 @@ import{u as I,c as rt,V as st,e as l,s as y,E as q,p as f,l as G,i as C,a as Y,b
aria-label=${M(e,"Mute")}
${ee(t)}
>
- ${Wt(["mute","volume-low","volume-high"])}
+ ${Ut(["mute","volume-low","volume-high"])}
@@ -63,7 +63,7 @@ import{u as I,c as rt,V as st,e as l,s as y,E as q,p as f,l as G,i as C,a as Y,b
class="vds-caption-button vds-button"
aria-label=${M(t,"Captions")}
>
- ${Wt(["cc-on","cc-off"])}
+ ${Ut(["cc-on","cc-off"])}
@@ -78,7 +78,7 @@ import{u as I,c as rt,V as st,e as l,s as y,E as q,p as f,l as G,i as C,a as Y,b
class="vds-pip-button vds-button"
aria-label=${M(a,"Picture-in-Picture")}
>
- ${Wt(["pip-enter","pip-exit"])}
+ ${Ut(["pip-enter","pip-exit"])}
@@ -93,7 +93,7 @@ import{u as I,c as rt,V as st,e as l,s as y,E as q,p as f,l as G,i as C,a as Y,b
class="vds-fullscreen-button vds-button"
aria-label=${M(t,"Fullscreen")}
>
- ${Wt(["fs-enter","fs-exit"])}
+ ${Ut(["fs-enter","fs-exit"])}
@@ -191,7 +191,7 @@ import{u as I,c as rt,V as st,e as l,s as y,E as q,p as f,l as G,i as C,a as Y,b
${e?gi(d,$t):$t}
- `}function ts(a){const{style:t}=new Option;return t.color=a,t.color.match(/\((.*?)\)/)[1].replace(/,/g," ")}const es={fontFamily:"pro-sans",fontSize:"100%",textColor:"#ffffff",textOpacity:"100%",textShadow:"none",textBg:"#000000",textBgOpacity:"100%",displayBg:"#000000",displayBgOpacity:"0%"},pe=Object.keys(es).reduce((a,t)=>({...a,[t]:y(es[t])}),{});for(const a of Object.keys(pe)){const t=localStorage.getItem(`vds-player:${Ht(a)}`);C(t)&&pe[a].set(t)}let vi=!1,ss=new Set;function Bn(){const{player:a}=b();ss.add(a),P(()=>ss.delete(a)),vi||(Ft(()=>{for(const t of ga(pe)){const e=pe[t],s=es[t],i=`--media-user-${Ht(t)}`,n=`vds-player:${Ht(t)}`;l(()=>{const r=e(),o=r===s,d=o?null:Gn(a,t,r);for(const c of ss)c.el?.style.setProperty(i,d);o?localStorage.removeItem(n):localStorage.setItem(n,r)})}},null),vi=!0)}function Gn(a,t,e){switch(t){case"fontFamily":const s=e==="capitals"?"small-caps":"";return a.el?.style.setProperty("--media-user-font-variant",s),Wn(e);case"fontSize":case"textOpacity":case"textBgOpacity":case"displayBgOpacity":return Kn(e);case"textColor":return`rgb(${ts(e)} / var(--media-user-text-opacity, 1))`;case"textShadow":return Un(e);case"textBg":return`rgb(${ts(e)} / var(--media-user-text-bg-opacity, 1))`;case"displayBg":return`rgb(${ts(e)} / var(--media-user-display-bg-opacity, 1))`}}function Kn(a){return(parseInt(a)/100).toString()}function Wn(a){switch(a){case"mono-serif":return'"Courier New", Courier, "Nimbus Mono L", "Cutive Mono", monospace';case"mono-sans":return'"Deja Vu Sans Mono", "Lucida Console", Monaco, Consolas, "PT Mono", monospace';case"pro-sans":return'Roboto, "Arial Unicode Ms", Arial, Helvetica, Verdana, "PT Sans Caption", sans-serif';case"casual":return'"Comic Sans MS", Impact, Handlee, fantasy';case"cursive":return'"Monotype Corsiva", "URW Chancery L", "Apple Chancery", "Dancing Script", cursive';case"capitals":return'"Arial Unicode Ms", Arial, Helvetica, Verdana, "Marcellus SC", sans-serif + font-variant=small-caps';default:return'"Times New Roman", Times, Georgia, Cambria, "PT Serif Caption", serif'}}function Un(a){switch(a){case"drop shadow":return"rgb(34, 34, 34) 1.86389px 1.86389px 2.79583px, rgb(34, 34, 34) 1.86389px 1.86389px 3.72778px, rgb(34, 34, 34) 1.86389px 1.86389px 4.65972px";case"raised":return"rgb(34, 34, 34) 1px 1px, rgb(34, 34, 34) 2px 2px";case"depressed":return"rgb(204, 204, 204) 1px 1px, rgb(34, 34, 34) -1px -1px";case"outline":return"rgb(34, 34, 34) 0px 0px 1.86389px, rgb(34, 34, 34) 0px 0px 1.86389px, rgb(34, 34, 34) 0px 0px 1.86389px, rgb(34, 34, 34) 0px 0px 1.86389px, rgb(34, 34, 34) 0px 0px 1.86389px";default:return""}}let Qn=0;function zn({label:a="",value:t="",children:e}){if(!a)return h`
+ `}function ts(a){const{style:t}=new Option;return t.color=a,t.color.match(/\((.*?)\)/)[1].replace(/,/g," ")}const es={fontFamily:"pro-sans",fontSize:"100%",textColor:"#ffffff",textOpacity:"100%",textShadow:"none",textBg:"#000000",textBgOpacity:"100%",displayBg:"#000000",displayBgOpacity:"0%"},pe=Object.keys(es).reduce((a,t)=>({...a,[t]:y(es[t])}),{});for(const a of Object.keys(pe)){const t=localStorage.getItem(`vds-player:${Ht(a)}`);C(t)&&pe[a].set(t)}let vi=!1,ss=new Set;function Bn(){const{player:a}=b();ss.add(a),P(()=>ss.delete(a)),vi||(Ft(()=>{for(const t of ga(pe)){const e=pe[t],s=es[t],i=`--media-user-${Ht(t)}`,n=`vds-player:${Ht(t)}`;l(()=>{const r=e(),o=r===s,d=o?null:Gn(a,t,r);for(const c of ss)c.el?.style.setProperty(i,d);o?localStorage.removeItem(n):localStorage.setItem(n,r)})}},null),vi=!0)}function Gn(a,t,e){switch(t){case"fontFamily":const s=e==="capitals"?"small-caps":"";return a.el?.style.setProperty("--media-user-font-variant",s),Un(e);case"fontSize":case"textOpacity":case"textBgOpacity":case"displayBgOpacity":return Kn(e);case"textColor":return`rgb(${ts(e)} / var(--media-user-text-opacity, 1))`;case"textShadow":return Wn(e);case"textBg":return`rgb(${ts(e)} / var(--media-user-text-bg-opacity, 1))`;case"displayBg":return`rgb(${ts(e)} / var(--media-user-display-bg-opacity, 1))`}}function Kn(a){return(parseInt(a)/100).toString()}function Un(a){switch(a){case"mono-serif":return'"Courier New", Courier, "Nimbus Mono L", "Cutive Mono", monospace';case"mono-sans":return'"Deja Vu Sans Mono", "Lucida Console", Monaco, Consolas, "PT Mono", monospace';case"pro-sans":return'Roboto, "Arial Unicode Ms", Arial, Helvetica, Verdana, "PT Sans Caption", sans-serif';case"casual":return'"Comic Sans MS", Impact, Handlee, fantasy';case"cursive":return'"Monotype Corsiva", "URW Chancery L", "Apple Chancery", "Dancing Script", cursive';case"capitals":return'"Arial Unicode Ms", Arial, Helvetica, Verdana, "Marcellus SC", sans-serif + font-variant=small-caps';default:return'"Times New Roman", Times, Georgia, Cambria, "PT Serif Caption", serif'}}function Wn(a){switch(a){case"drop shadow":return"rgb(34, 34, 34) 1.86389px 1.86389px 2.79583px, rgb(34, 34, 34) 1.86389px 1.86389px 3.72778px, rgb(34, 34, 34) 1.86389px 1.86389px 4.65972px";case"raised":return"rgb(34, 34, 34) 1px 1px, rgb(34, 34, 34) 2px 2px";case"depressed":return"rgb(204, 204, 204) 1px 1px, rgb(34, 34, 34) -1px -1px";case"outline":return"rgb(34, 34, 34) 0px 0px 1.86389px, rgb(34, 34, 34) 0px 0px 1.86389px, rgb(34, 34, 34) 0px 0px 1.86389px, rgb(34, 34, 34) 0px 0px 1.86389px, rgb(34, 34, 34) 0px 0px 1.86389px";default:return""}}let Qn=0;function zn({label:a="",value:t="",children:e}){if(!a)return h`
@@ -228,7 +228,7 @@ import{u as I,c as rt,V as st,e as l,s as y,E as q,p as f,l as G,i as C,a as Y,b
- `:null})}function wi(a,t){return[...a].sort(t?Xn:Yn)}function Yn(a,t){return a.height===t.height?(a.bitrate??0)-(t.bitrate??0):a.height-t.height}function Xn(a,t){return t.height===a.height?(t.bitrate??0)-(a.bitrate??0):t.height-a.height}function Jn(a){return a?"true":"false"}function W(a){return()=>Jn(a())}function Zn(){return h`
+ `:null})}function wi(a,t){return[...a].sort(t?Xn:Yn)}function Yn(a,t){return a.height===t.height?(a.bitrate??0)-(t.bitrate??0):a.height-t.height}function Xn(a,t){return t.height===a.height?(t.bitrate??0)-(a.bitrate??0):t.height-a.height}function Jn(a){return a?"true":"false"}function U(a){return()=>Jn(a())}function Zn(){return h`
@@ -470,7 +470,7 @@ import{u as I,c as rt,V as st,e as l,s as y,E as q,p as f,l as G,i as C,a as Y,b
class="plyr__preview-scrubbing"
time=${m(()=>t())}
>
- `}function Vi(){const a=b(),{poster:t}=a.$state,e=m(()=>`background-image: url("${t()}");`);return h``}function _r(){const a=new Set(["captions","pip","airplay","fullscreen"]),{controls:t}=V(),e=m(()=>t().filter(s=>!a.has(s)).map(Ri));return h`${e}
`}function Dr(){const{controls:a}=V(),t=m(()=>a().map(Ri));return h`${t}
`}function Ri(a){switch(a){case"airplay":return Ir();case"captions":return Vr();case"current-time":return Qr();case"download":return zr();case"duration":return Oi();case"fast-forward":return Gr();case"fullscreen":return Rr();case"mute":case"volume":case"mute+volume":return Wr(a);case"pip":return Nr();case"play":return Fr();case"progress":return Kr();case"restart":return Hr();case"rewind":return Br();case"settings":return Xr();default:return null}}function Ir(){const{translations:a}=V();return h`
+ `}function Vi(){const a=b(),{poster:t}=a.$state,e=m(()=>`background-image: url("${t()}");`);return h``}function _r(){const a=new Set(["captions","pip","airplay","fullscreen"]),{controls:t}=V(),e=m(()=>t().filter(s=>!a.has(s)).map(Ri));return h`${e}
`}function Dr(){const{controls:a}=V(),t=m(()=>a().map(Ri));return h`${t}
`}function Ri(a){switch(a){case"airplay":return Ir();case"captions":return Vr();case"current-time":return Qr();case"download":return zr();case"duration":return Oi();case"fast-forward":return Gr();case"fullscreen":return Rr();case"mute":case"volume":case"mute+volume":return Ur(a);case"pip":return Nr();case"play":return Fr();case"progress":return Kr();case"restart":return Hr();case"rewind":return Br();case"settings":return Xr();default:return null}}function Ir(){const{translations:a}=V();return h`
${R(a,"AirPlay")}
@@ -589,11 +589,11 @@ import{u as I,c as rt,V as st,e as l,s as y,E as q,p as f,l as G,i as C,a as Y,b