react-helios 2.4.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';var St=require('react'),ye=require('hls.js'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var St__default=/*#__PURE__*/_interopDefault(St);var ye__default=/*#__PURE__*/_interopDefault(ye);var nt=Object.defineProperty;var ot=(t,e)=>{for(var c in e)nt(t,c,{get:e[c],enumerable:true});};function oe(t){if(!Number.isFinite(t)||t<0)return "0:00";let e=Math.floor(t),c=Math.floor(e/3600),s=Math.floor(e%3600/60),o=e%60;return c>0?`${c}:${String(s).padStart(2,"0")}:${String(o).padStart(2,"0")}`:`${s}:${String(o).padStart(2,"0")}`}function be(t){try{return new URL(t,"https://x").pathname.toLowerCase().endsWith(".m3u8")||/\/hls\//i.test(t)||/\/stream\.m3u8/i.test(t)}catch{return t.toLowerCase().includes(".m3u8")}}function it(t){if(be(t))return "application/x-mpegURL";let e=t.toLowerCase().split("?")[0];return e.endsWith(".mp4")?"video/mp4":e.endsWith(".webm")?"video/webm":e.endsWith(".ogv")||e.endsWith(".ogg")?"video/ogg":e.endsWith(".mov")?"video/quicktime":"video/mp4"}function Ae(t){return t.map((e,c)=>({id:c,height:e.height??0,width:e.width??0,bitrate:e.bitrate??0,name:e.height?`${e.height}p`:`Level ${c+1}`}))}var lt={isPlaying:false,currentTime:0,duration:0,volume:1,isMuted:false,playbackRate:1,isFullscreen:false,isPictureInPicture:false,isTheaterMode:false,isAudioMode:false,isBuffering:false,bufferedRanges:[],error:null,isLive:false,qualityLevels:[],currentQualityLevel:-1};function Ie(t,e,c={}){let s=St.useRef(null),o=St.useRef(null),g=St.useRef(1),u=St.useRef(0),a=St.useRef(c);a.current=c;let[x,d]=St.useState({...lt,isMuted:c.muted??false,volume:c.muted?0:1,isAudioMode:c.defaultAudioMode??false}),k=St.useRef(x);k.current=x;let w=St.useRef([]),B=St.useRef(false),T=St.useRef(false),p=St.useRef(null);St.useEffect(()=>{let r=t.current;if(!r||(s.current&&(s.current.destroy(),s.current=null),u.current=0,w.current=[],B.current=false,T.current=false,p.current&&(clearTimeout(p.current),p.current=null),d(f=>({...f,currentTime:0,duration:0,error:null,isBuffering:false,isLive:false,qualityLevels:[],currentQualityLevel:-1,isAudioMode:a.current.defaultAudioMode??false})),!e))return;let l=a.current;if(l.enableHLS!==false&&be(e)){if(r.canPlayType("application/vnd.apple.mpegurl"))r.src=e,r.load(),l.autoplay&&r.play().catch(()=>{});else if(ye__default.default.isSupported()){let f=new ye__default.default({autoStartLoad:true,startLevel:-1,capLevelToPlayerSize:true,capLevelOnFPSDrop:true,enableWorker:true,maxBufferLength:30,maxMaxBufferLength:600,maxBufferSize:6e7,liveBackBufferLength:30,liveSyncDurationCount:3,...l.hlsConfig});f.attachMedia(r),f.loadSource(e),f.on(ye.Events.MANIFEST_PARSED,(m,v)=>{let E=Ae(v.levels);d(D=>({...D,qualityLevels:E,currentQualityLevel:-1})),a.current.autoplay&&r.play().catch(()=>{});}),f.on(ye.Events.LEVEL_SWITCHED,(m,v)=>{d(E=>({...E,currentQualityLevel:v.level}));}),f.on(ye.Events.FRAG_LOADED,()=>{let m=a.current.audioBandwidthThreshold??300;if(!m||T.current)return;let v=f.bandwidthEstimate/1e3;if(v<=0)return;let E=w.current;if(E.push(v),E.length>5&&E.shift(),E.length<3)return;let D=E.reduce((n,i)=>n+i,0)/E.length;d(n=>!n.isAudioMode&&D<m?(B.current=true,a.current.onAudioModeChange?.(true),{...n,isAudioMode:true}):n.isAudioMode&&B.current&&D>m*1.5?(B.current=false,a.current.onAudioModeChange?.(false),{...n,isAudioMode:false}):n);});let h=3;f.on(ye.Events.ERROR,(m,v)=>{if(!v.fatal){console.warn("[hls] non-fatal:",v.details);return}switch(v.type){case ye__default.default.ErrorTypes.NETWORK_ERROR:if(u.current<h){u.current+=1;let E=1e3*u.current;console.warn(`[hls] network error \u2013 retry ${u.current}/${h} in ${E}ms`),setTimeout(()=>{s.current===f&&f.startLoad();},E);}else {let E={code:"HLS_NETWORK_ERROR",message:"Failed to load stream after multiple retries."};d(D=>({...D,error:E})),a.current.onError?.(E);}break;case ye__default.default.ErrorTypes.MEDIA_ERROR:console.warn("[hls] media error \u2013 recovering"),f.recoverMediaError();break;default:{f.destroy(),s.current=null;let E={code:"HLS_FATAL_ERROR",message:"An unrecoverable HLS error occurred."};d(D=>({...D,error:E})),a.current.onError?.(E);break}}}),s.current=f;}}else r.src=e,r.load(),l.autoplay&&r.play().catch(()=>{});return ()=>{s.current&&(s.current.destroy(),s.current=null),p.current&&(clearTimeout(p.current),p.current=null);}},[e,t]),St.useEffect(()=>{let r=t.current;if(!r)return;a.current.muted&&(r.muted=true),a.current.loop&&(r.loop=true);let l=()=>{d(P=>({...P,isPlaying:true})),a.current.onPlay?.();},f=()=>{d(P=>({...P,isPlaying:false})),a.current.onPause?.();},h=()=>{d(P=>({...P,isPlaying:false})),a.current.onEnded?.();},m=()=>{a.current.onTimeUpdate?.(r.currentTime);},v=()=>{let P=r.duration,te=!Number.isFinite(P);d(ge=>({...ge,duration:te?0:P,isLive:te})),te||a.current.onDurationChange?.(P);},E=()=>{let P=r.volume;P>0&&!r.muted&&(g.current=P),d(te=>({...te,volume:P,isMuted:r.muted||P===0}));},D=()=>{d(P=>({...P,playbackRate:r.playbackRate}));},n=()=>{let P=r.error;if(!P)return;let ge={code:{1:"MEDIA_ERR_ABORTED",2:"MEDIA_ERR_NETWORK",3:"MEDIA_ERR_DECODE",4:"MEDIA_ERR_SRC_NOT_SUPPORTED"}[P.code]??"UNKNOWN",message:P.message||"Unknown media error"};d(rt=>({...rt,error:ge})),a.current.onError?.(ge);},i=()=>{d(P=>({...P,isBuffering:true})),a.current.onBuffering?.(true);},b=()=>{d(P=>({...P,isBuffering:false})),a.current.onBuffering?.(false);},y=()=>d(P=>({...P,isBuffering:false})),F=()=>{},Y=()=>{let P=!!(document.fullscreenElement||document.webkitFullscreenElement);d(te=>({...te,isFullscreen:P}));},ae=()=>{d(P=>({...P,isPictureInPicture:document.pictureInPictureElement===r}));};return r.addEventListener("play",l),r.addEventListener("pause",f),r.addEventListener("ended",h),r.addEventListener("timeupdate",m),r.addEventListener("durationchange",v),r.addEventListener("volumechange",E),r.addEventListener("ratechange",D),r.addEventListener("error",n),r.addEventListener("waiting",i),r.addEventListener("canplay",b),r.addEventListener("playing",y),r.addEventListener("progress",F),document.addEventListener("fullscreenchange",Y),document.addEventListener("webkitfullscreenchange",Y),r.addEventListener("enterpictureinpicture",ae),r.addEventListener("leavepictureinpicture",ae),()=>{r.removeEventListener("play",l),r.removeEventListener("pause",f),r.removeEventListener("ended",h),r.removeEventListener("timeupdate",m),r.removeEventListener("durationchange",v),r.removeEventListener("volumechange",E),r.removeEventListener("ratechange",D),r.removeEventListener("error",n),r.removeEventListener("waiting",i),r.removeEventListener("canplay",b),r.removeEventListener("playing",y),r.removeEventListener("progress",F),document.removeEventListener("fullscreenchange",Y),document.removeEventListener("webkitfullscreenchange",Y),r.removeEventListener("enterpictureinpicture",ae),r.removeEventListener("leavepictureinpicture",ae);}},[t]);let R=St.useCallback(async()=>{let r=t.current;if(r)try{await r.play();}catch(l){l instanceof Error&&l.name!=="AbortError"&&console.error("[player] play() failed:",l);}},[t]),V=St.useCallback(()=>{t.current?.pause();},[t]),O=St.useCallback(r=>{let l=t.current;l&&(l.currentTime=Math.max(0,Math.min(r,l.duration||r)));},[t]),M=St.useCallback(r=>{let l=t.current;if(!l)return;let f=Math.max(0,Math.min(r,1));f>0&&(g.current=f),l.volume=f,l.muted=f===0;},[t]),L=St.useCallback(()=>{let r=t.current;if(r)if(r.muted||r.volume===0){let l=g.current>0?g.current:1;r.volume=l,r.muted=false;}else g.current=r.volume,r.muted=true;},[t]),I=St.useCallback(r=>{let l=t.current;l&&(l.playbackRate=r);},[t]),C=St.useCallback(r=>{let l=s.current;l&&(l.currentLevel=r,d(f=>({...f,currentQualityLevel:r})));},[]),W=St.useCallback(()=>{let r=s.current,l=t.current;if(!r||!l)return;let f=r.liveSyncPosition;f!=null&&Number.isFinite(f)&&(l.currentTime=f);},[t]),X=St.useCallback(async()=>{let r=t.current;if(!r)return;let l=o.current??r.parentElement;if(l)try{!document.fullscreenElement&&!document.webkitFullscreenElement?l.requestFullscreen?await l.requestFullscreen():l.webkitRequestFullscreen?.():document.exitFullscreen?await document.exitFullscreen():document.webkitExitFullscreen?.();}catch(f){console.error("[player] fullscreen toggle failed:",f);}},[t]),j=St.useCallback(async()=>{let r=t.current;if(r)try{document.pictureInPictureElement?await document.exitPictureInPicture():await r.requestPictureInPicture();}catch(l){console.error("[player] PiP toggle failed:",l);}},[t]),H=St.useCallback(()=>{let r=!k.current.isTheaterMode;d(l=>({...l,isTheaterMode:r})),a.current.onTheaterModeChange?.(r);},[]),G=St.useCallback(()=>{p.current&&clearTimeout(p.current),B.current=false,T.current=true,p.current=setTimeout(()=>{T.current=false,w.current=[];},6e4);let r=!k.current.isAudioMode;d(l=>({...l,isAudioMode:r})),a.current.onAudioModeChange?.(r);},[]),Z=St.useCallback(()=>{let r=t.current,l=r?.currentTime??0,f=[];if(r)for(let h=0;h<r.buffered.length;h++)f.push({start:r.buffered.start(h),end:r.buffered.end(h)});return {...k.current,currentTime:l,bufferedRanges:f}},[t]),ee=St.useCallback(()=>t.current??null,[t]),ne=St.useMemo(()=>({play:R,pause:V,seek:O,setVolume:M,toggleMute:L,setPlaybackRate:I,setQualityLevel:C,seekToLive:W,toggleFullscreen:X,togglePictureInPicture:j,toggleTheaterMode:H,toggleAudioMode:G,getState:Z,getVideoElement:ee}),[R,V,O,M,L,I,C,W,X,j,H,G,Z,ee]);return {state:x,ref:ne,hlsRef:s,fullscreenContainerRef:o}}var Ke={};ot(Ke,{ControlElements:()=>q,FullscreenButton:()=>pe,PauseButton:()=>me,PiPButton:()=>ve,PlayButton:()=>de,ProgressBar:()=>Le,SettingsMenu:()=>xe,TheaterButton:()=>fe,TimeDisplay:()=>Te,VolumeControl:()=>Pe});var de=St.memo(({onClick:t})=>jsxRuntime.jsx("button",{onClick:t,className:"controlButton","aria-label":"Play",title:"Play (Space)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M8 5v14l11-7z"})})}));de.displayName="PlayButton";var me=St.memo(({onClick:t})=>jsxRuntime.jsx("button",{onClick:t,className:"controlButton","aria-label":"Pause",title:"Pause (Space)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M6 4h4v16H6V4zm8 0h4v16h-4V4z"})})}));me.displayName="PauseButton";var pe=St.memo(({onClick:t,isFullscreen:e=false})=>jsxRuntime.jsx("button",{onClick:t,className:"controlButton","aria-label":e?"Exit Fullscreen":"Fullscreen",title:e?"Exit Fullscreen (F)":"Fullscreen (F)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:e?jsxRuntime.jsx("path",{d:"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"}):jsxRuntime.jsx("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"})})}));pe.displayName="FullscreenButton";var ve=St.memo(({onClick:t,isPiP:e=false})=>jsxRuntime.jsx("button",{onClick:t,className:"controlButton","aria-label":e?"Exit Picture-in-Picture":"Picture-in-Picture",title:e?"Exit Picture-in-Picture (P)":"Picture-in-Picture (P)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M19 11h-8v6h8v-6zm4 8V4.98C23 3.88 22.1 3 21 3H3c-1.1 0-2 .88-2 1.98V19c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2zm-2 .02H3V5h18v14.02z"})})}));ve.displayName="PiPButton";var fe=St.memo(({onClick:t,isTheater:e=false})=>jsxRuntime.jsx("button",{onClick:t,className:"controlButton","aria-label":e?"Exit Theater Mode":"Theater Mode",title:e?"Exit Theater Mode (T)":"Theater Mode (T)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:e?jsxRuntime.jsx("path",{d:"M19 7H5c-1.1 0-2 .9-2 2v6c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2zm0 8H5V9h14v6z"}):jsxRuntime.jsx("path",{d:"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h18v14z"})})}));fe.displayName="TheaterButton";var Oe=St.memo(({volume:t,isMuted:e,onVolumeChange:c,onToggleMute:s})=>{let[o,g]=St.useState(false),u=e?0:t,a=u*100,x=St.useMemo(()=>`linear-gradient(to right, #60a5fa 0%, #60a5fa ${a}%, rgba(255,255,255,0.3) ${a}%, rgba(255,255,255,0.3) 100%)`,[a]);return jsxRuntime.jsxs("div",{className:"volumeContainer",onMouseEnter:()=>g(true),onMouseLeave:()=>g(false),children:[jsxRuntime.jsx("button",{onClick:s,className:"controlButton","aria-label":e?"Unmute":"Mute",title:e?"Unmute (M)":"Mute (M)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:u===0?jsxRuntime.jsx("path",{d:"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C23.16 14.42 24 13.3 24 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z"}):u<.5?jsxRuntime.jsx("path",{d:"M7 9v6h4l5 5V4l-5 5H7z"}):jsxRuntime.jsx("path",{d:"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"})})}),o&&jsxRuntime.jsx("input",{type:"range",min:"0",max:"100",value:a,onChange:d=>c(Number(d.target.value)/100),className:"volumeSlider",style:{background:x},"aria-label":"Volume","aria-valuenow":Math.round(a)})]})});Oe.displayName="VolumeControl";var Pe=Oe;function Fe(t){let e=t.trim().split(":");return e.length===3?+e[0]*3600+ +e[1]*60+parseFloat(e[2]):+e[0]*60+parseFloat(e[1])}function pt(t,e){if(/^https?:\/\//i.test(e))return e;try{return new URL(e,t).href}catch{return e}}function ke(t,e=""){let c=[],s=t.replace(/\r\n/g,`
1
+ 'use strict';var ot=require('react'),Ce=require('hls.js'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ot__default=/*#__PURE__*/_interopDefault(ot);var Ce__default=/*#__PURE__*/_interopDefault(Ce);var lt=Object.defineProperty;var ct=(i,r)=>{for(var o in r)lt(i,o,{get:r[o],enumerable:true});};function ce(i){if(!Number.isFinite(i)||i<0)return "0:00";let r=Math.floor(i),o=Math.floor(r/3600),u=Math.floor(r%3600/60),s=r%60;return o>0?`${o}:${String(u).padStart(2,"0")}:${String(s).padStart(2,"0")}`:`${u}:${String(s).padStart(2,"0")}`}function Pe(i){try{return new URL(i,"https://x").pathname.toLowerCase().endsWith(".m3u8")||/\/hls\//i.test(i)||/\/stream\.m3u8/i.test(i)}catch{return i.toLowerCase().includes(".m3u8")}}function dt(i){if(Pe(i))return "application/x-mpegURL";let r=i.toLowerCase().split("?")[0];return r.endsWith(".mp4")?"video/mp4":r.endsWith(".webm")?"video/webm":r.endsWith(".ogv")||r.endsWith(".ogg")?"video/ogg":r.endsWith(".mov")?"video/quicktime":"video/mp4"}function Ue(i){return i.map((r,o)=>({id:o,height:r.height??0,width:r.width??0,bitrate:r.bitrate??0,name:r.height?`${r.height}p`:`Level ${o+1}`}))}var vt={isPlaying:false,currentTime:0,duration:0,volume:1,isMuted:false,playbackRate:1,isFullscreen:false,isPictureInPicture:false,isTheaterMode:false,isAudioMode:false,isBuffering:false,bufferedRanges:[],error:null,isLive:false,qualityLevels:[],currentQualityLevel:-1};function $e(i,r,o={}){let u=ot.useRef(null),s=ot.useRef(null),h=ot.useRef(1),d=ot.useRef(0),a=ot.useRef(o);a.current=o;let[L,l]=ot.useState({...vt,isMuted:o.muted??false,volume:o.muted?0:1,isAudioMode:o.defaultAudioMode??false}),T=ot.useRef(L);T.current=L;let S=ot.useRef([]),F=ot.useRef(0),C=ot.useRef(false),p=ot.useRef(false),x=ot.useRef(null),P=ot.useRef(null),A=ot.useRef(false),b=ot.useCallback(()=>{let e=a.current;return T.current.isAudioMode&&e.audioSrc&&e.audioRef?.current?e.audioRef.current:i.current},[i]);ot.useEffect(()=>{let e=i.current;if(!e||(u.current&&(u.current.destroy(),u.current=null),d.current=0,S.current=[],F.current=0,C.current=false,p.current=false,x.current&&(clearTimeout(x.current),x.current=null),P.current&&(clearTimeout(P.current),P.current=null),A.current=false,l(n=>({...n,currentTime:0,duration:0,error:null,isBuffering:false,isLive:false,qualityLevels:[],currentQualityLevel:-1,isAudioMode:a.current.defaultAudioMode??false})),!r))return;let t=a.current;if(t.enableHLS!==false&&Pe(r)){if(e.canPlayType("application/vnd.apple.mpegurl"))e.src=r,e.load(),t.autoplay&&e.play().catch(()=>{});else if(Ce__default.default.isSupported()){let n=new Ce__default.default({autoStartLoad:true,startLevel:-1,capLevelToPlayerSize:true,capLevelOnFPSDrop:true,enableWorker:true,maxBufferLength:30,maxMaxBufferLength:600,maxBufferSize:6e7,liveBackBufferLength:30,liveSyncDurationCount:3,...t.hlsConfig});n.attachMedia(e),n.loadSource(r),n.on(Ce.Events.MANIFEST_PARSED,(k,c)=>{let f=Ue(c.levels);l(M=>({...M,qualityLevels:f,currentQualityLevel:-1})),a.current.autoplay&&e.play().catch(()=>{});}),n.on(Ce.Events.LEVEL_SWITCHED,(k,c)=>{l(w=>({...w,currentQualityLevel:c.level}));let f=a.current,M=f.audioModeSwitchLevel;M===void 0||M<0||!f.audioSrc||p.current||F.current<3||l(w=>!w.isAudioMode&&c.level<=M?(C.current=true,a.current.onAudioModeChange?.(true),{...w,isAudioMode:true}):w);}),n.on(Ce.Events.FRAG_LOADED,(k,c)=>{let f=a.current;if(!f.audioSrc)return;F.current+=1;let M=c.stats.loading.end-c.stats.loading.start,w=M>0&&c.stats.total>0?c.stats.total*8/M:0,E=f.audioBandwidthThreshold??300;if(A.current){A.current=false,w>0&&E&&w>E*1.5?(C.current=false,n.startLoad(),a.current.onAudioModeChange?.(false),l(V=>({...V,isAudioMode:false}))):(n.stopLoad(),m());return}if(!E||p.current||w<=0)return;let v=S.current;if(v.push(w),v.length>5&&v.shift(),v.length<2)return;let N=v.reduce((V,g)=>V+g,0)/v.length;l(V=>!V.isAudioMode&&N<E?(C.current=true,a.current.onAudioModeChange?.(true),{...V,isAudioMode:true}):V);});let m=()=>{P.current&&clearTimeout(P.current);let k=a.current.audioModeRecoveryInterval??3e4;P.current=setTimeout(()=>{!C.current||!T.current.isAudioMode||(A.current=true,n.startLoad());},k);},y=3;n.on(Ce.Events.ERROR,(k,c)=>{if(!c.fatal){console.warn("[hls] non-fatal:",c.details);return}switch(c.type){case Ce__default.default.ErrorTypes.NETWORK_ERROR:if(d.current<y){d.current+=1;let f=1e3*d.current;console.warn(`[hls] network error \u2013 retry ${d.current}/${y} in ${f}ms`),setTimeout(()=>{u.current===n&&n.startLoad();},f);}else {let f={code:"HLS_NETWORK_ERROR",message:"Failed to load stream after multiple retries."};l(M=>({...M,error:f})),a.current.onError?.(f);}break;case Ce__default.default.ErrorTypes.MEDIA_ERROR:console.warn("[hls] media error \u2013 recovering"),n.recoverMediaError();break;default:{n.destroy(),u.current=null;let f={code:"HLS_FATAL_ERROR",message:"An unrecoverable HLS error occurred."};l(M=>({...M,error:f})),a.current.onError?.(f);break}}}),u.current=n;}}else e.src=r,e.load(),t.autoplay&&e.play().catch(()=>{});return ()=>{u.current&&(u.current.destroy(),u.current=null),x.current&&(clearTimeout(x.current),x.current=null),P.current&&(clearTimeout(P.current),P.current=null),A.current=false;let n=a.current.audioRef?.current;n&&(n.pause(),n.removeAttribute("src"),n.load());}},[r,i]),ot.useEffect(()=>{let e=i.current;if(!e)return;a.current.muted&&(e.muted=true),a.current.loop&&(e.loop=true);let t=()=>{l(g=>({...g,isPlaying:true})),a.current.onPlay?.();},n=()=>{l(g=>({...g,isPlaying:false})),a.current.onPause?.();},m=()=>{l(g=>({...g,isPlaying:false})),a.current.onEnded?.();},y=()=>{T.current.isAudioMode&&a.current.audioSrc||a.current.onTimeUpdate?.(e.currentTime);},k=()=>{let g=e.duration,Q=!Number.isFinite(g);l(le=>({...le,duration:Q?0:g,isLive:Q})),Q||a.current.onDurationChange?.(g);},c=()=>{let g=e.volume;g>0&&!e.muted&&(h.current=g),l(Q=>({...Q,volume:g,isMuted:e.muted||g===0}));},f=()=>{l(g=>({...g,playbackRate:e.playbackRate}));},M=()=>{let g=e.error;if(!g)return;let le={code:{1:"MEDIA_ERR_ABORTED",2:"MEDIA_ERR_NETWORK",3:"MEDIA_ERR_DECODE",4:"MEDIA_ERR_SRC_NOT_SUPPORTED"}[g.code]??"UNKNOWN",message:g.message||"Unknown media error"};l(Le=>({...Le,error:le})),a.current.onError?.(le);},w=()=>{l(g=>({...g,isBuffering:true})),a.current.onBuffering?.(true);},E=()=>{l(g=>({...g,isBuffering:false})),a.current.onBuffering?.(false);},v=()=>l(g=>({...g,isBuffering:false})),N=()=>{let g=!!(document.fullscreenElement||document.webkitFullscreenElement);l(Q=>({...Q,isFullscreen:g}));},V=()=>{l(g=>({...g,isPictureInPicture:document.pictureInPictureElement===e}));};return e.addEventListener("play",t),e.addEventListener("pause",n),e.addEventListener("ended",m),e.addEventListener("timeupdate",y),e.addEventListener("durationchange",k),e.addEventListener("volumechange",c),e.addEventListener("ratechange",f),e.addEventListener("error",M),e.addEventListener("waiting",w),e.addEventListener("canplay",E),e.addEventListener("playing",v),document.addEventListener("fullscreenchange",N),document.addEventListener("webkitfullscreenchange",N),e.addEventListener("enterpictureinpicture",V),e.addEventListener("leavepictureinpicture",V),()=>{e.removeEventListener("play",t),e.removeEventListener("pause",n),e.removeEventListener("ended",m),e.removeEventListener("timeupdate",y),e.removeEventListener("durationchange",k),e.removeEventListener("volumechange",c),e.removeEventListener("ratechange",f),e.removeEventListener("error",M),e.removeEventListener("waiting",w),e.removeEventListener("canplay",E),e.removeEventListener("playing",v),document.removeEventListener("fullscreenchange",N),document.removeEventListener("webkitfullscreenchange",N),e.removeEventListener("enterpictureinpicture",V),e.removeEventListener("leavepictureinpicture",V);}},[i]),ot.useEffect(()=>{let e=a.current.audioRef?.current;if(!e||!a.current.audioSrc)return;let t=()=>{l(E=>({...E,isPlaying:true})),a.current.onPlay?.();},n=()=>{l(E=>({...E,isPlaying:false})),a.current.onPause?.();},m=()=>{l(E=>({...E,isPlaying:false})),a.current.onEnded?.();},y=()=>{l(E=>({...E,isBuffering:true})),a.current.onBuffering?.(true);},k=()=>{l(E=>({...E,isBuffering:false})),a.current.onBuffering?.(false);},c=()=>l(E=>({...E,isBuffering:false})),f=()=>{T.current.isAudioMode&&a.current.onTimeUpdate?.(e.currentTime);},M=()=>{let E=e.duration;isFinite(E)&&(l(v=>({...v,duration:E})),a.current.onDurationChange?.(E));},w=()=>{let E={code:"MEDIA_ERR_NETWORK",message:"Audio source failed to load."};l(v=>({...v,error:E})),a.current.onError?.(E);};return e.addEventListener("play",t),e.addEventListener("pause",n),e.addEventListener("ended",m),e.addEventListener("waiting",y),e.addEventListener("canplay",k),e.addEventListener("playing",c),e.addEventListener("timeupdate",f),e.addEventListener("durationchange",M),e.addEventListener("error",w),()=>{e.removeEventListener("play",t),e.removeEventListener("pause",n),e.removeEventListener("ended",m),e.removeEventListener("waiting",y),e.removeEventListener("canplay",k),e.removeEventListener("playing",c),e.removeEventListener("timeupdate",f),e.removeEventListener("durationchange",M),e.removeEventListener("error",w);}},[r]),ot.useEffect(()=>{let e=a.current,t=i.current,n=e.audioRef?.current;if(!(!t||!n||!e.audioSrc))if(L.isAudioMode){let m=t.currentTime,y=!t.paused;if(t.pause(),u.current?.stopLoad(),n.getAttribute("src")||(n.src=e.audioSrc),n.currentTime=m,n.volume=t.volume,n.muted=t.muted,n.playbackRate=t.playbackRate,y&&n.play().catch(()=>{}),C.current){P.current&&clearTimeout(P.current);let k=e.audioModeRecoveryInterval??3e4;P.current=setTimeout(()=>{!C.current||!T.current.isAudioMode||(A.current=true,u.current?.startLoad());},k);}}else {let m=n.currentTime,y=!n.paused;n.pause(),P.current&&(clearTimeout(P.current),P.current=null),A.current=false,u.current?.startLoad(),t.currentTime=m,t.volume=n.volume,y&&t.play().catch(()=>{});}},[L.isAudioMode,i]);let B=ot.useCallback(async()=>{let e=b();if(e)try{await e.play();}catch(t){t instanceof Error&&t.name!=="AbortError"&&console.error("[player] play() failed:",t);}},[b]),I=ot.useCallback(()=>{b()?.pause();},[b]),D=ot.useCallback(e=>{let t=b();t&&(t.currentTime=Math.max(0,Math.min(e,t.duration||e)));},[b]),te=ot.useCallback(e=>{let t=b();if(!t)return;let n=Math.max(0,Math.min(e,1));n>0&&(h.current=n),t.volume=n,t.muted=n===0;},[b]),J=ot.useCallback(()=>{let e=b();if(e)if(e.muted||e.volume===0){let t=h.current>0?h.current:1;e.volume=t,e.muted=false;}else h.current=e.volume,e.muted=true;},[b]),j=ot.useCallback(e=>{let t=i.current;t&&(t.playbackRate=e);let n=a.current.audioRef?.current;n&&(n.playbackRate=e);},[i]),R=ot.useCallback(e=>{let t=u.current;t&&(t.currentLevel=e,l(n=>({...n,currentQualityLevel:e})));},[]),G=ot.useCallback(()=>{let e=u.current,t=i.current;if(!e||!t)return;let n=e.liveSyncPosition;n!=null&&Number.isFinite(n)&&(t.currentTime=n);},[i]),W=ot.useCallback(async()=>{let e=i.current;if(!e)return;let t=s.current??e.parentElement;if(t)try{!document.fullscreenElement&&!document.webkitFullscreenElement?t.requestFullscreen?await t.requestFullscreen():t.webkitRequestFullscreen?.():document.exitFullscreen?await document.exitFullscreen():document.webkitExitFullscreen?.();}catch(n){console.error("[player] fullscreen toggle failed:",n);}},[i]),Z=ot.useCallback(async()=>{let e=i.current;if(e)try{document.pictureInPictureElement?await document.exitPictureInPicture():await e.requestPictureInPicture();}catch(t){console.error("[player] PiP toggle failed:",t);}},[i]),ne=ot.useCallback(()=>{let e=!T.current.isTheaterMode;l(t=>({...t,isTheaterMode:e})),a.current.onTheaterModeChange?.(e);},[]),re=ot.useCallback(()=>{x.current&&clearTimeout(x.current),C.current=false,p.current=true,x.current=setTimeout(()=>{p.current=false,S.current=[];},6e4);let e=!T.current.isAudioMode;l(t=>({...t,isAudioMode:e})),a.current.onAudioModeChange?.(e);},[]),oe=ot.useCallback(()=>{let e=b(),t=e?.currentTime??0,n=[];if(e)for(let m=0;m<e.buffered.length;m++)n.push({start:e.buffered.start(m),end:e.buffered.end(m)});return {...T.current,currentTime:t,bufferedRanges:n}},[b]),ie=ot.useCallback(()=>i.current??null,[i]),ue=ot.useMemo(()=>({play:B,pause:I,seek:D,setVolume:te,toggleMute:J,setPlaybackRate:j,setQualityLevel:R,seekToLive:G,toggleFullscreen:W,togglePictureInPicture:Z,toggleTheaterMode:ne,toggleAudioMode:re,getState:oe,getVideoElement:ie}),[B,I,D,te,J,j,R,G,W,Z,ne,re,oe,ie]);return {state:L,ref:ue,hlsRef:u,fullscreenContainerRef:s}}var Ze={};ct(Ze,{ControlElements:()=>q,FullscreenButton:()=>be,PauseButton:()=>ge,PiPButton:()=>ye,PlayButton:()=>he,ProgressBar:()=>xe,SettingsMenu:()=>we,TheaterButton:()=>Ee,TimeDisplay:()=>Be,VolumeControl:()=>ke});var he=ot.memo(({onClick:i})=>jsxRuntime.jsx("button",{onClick:i,className:"controlButton","aria-label":"Play",title:"Play (Space)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M8 5v14l11-7z"})})}));he.displayName="PlayButton";var ge=ot.memo(({onClick:i})=>jsxRuntime.jsx("button",{onClick:i,className:"controlButton","aria-label":"Pause",title:"Pause (Space)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M6 4h4v16H6V4zm8 0h4v16h-4V4z"})})}));ge.displayName="PauseButton";var be=ot.memo(({onClick:i,isFullscreen:r=false})=>jsxRuntime.jsx("button",{onClick:i,className:"controlButton","aria-label":r?"Exit Fullscreen":"Fullscreen",title:r?"Exit Fullscreen (F)":"Fullscreen (F)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:r?jsxRuntime.jsx("path",{d:"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"}):jsxRuntime.jsx("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"})})}));be.displayName="FullscreenButton";var ye=ot.memo(({onClick:i,isPiP:r=false})=>jsxRuntime.jsx("button",{onClick:i,className:"controlButton","aria-label":r?"Exit Picture-in-Picture":"Picture-in-Picture",title:r?"Exit Picture-in-Picture (P)":"Picture-in-Picture (P)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M19 11h-8v6h8v-6zm4 8V4.98C23 3.88 22.1 3 21 3H3c-1.1 0-2 .88-2 1.98V19c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2zm-2 .02H3V5h18v14.02z"})})}));ye.displayName="PiPButton";var Ee=ot.memo(({onClick:i,isTheater:r=false})=>jsxRuntime.jsx("button",{onClick:i,className:"controlButton","aria-label":r?"Exit Theater Mode":"Theater Mode",title:r?"Exit Theater Mode (T)":"Theater Mode (T)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:r?jsxRuntime.jsx("path",{d:"M19 7H5c-1.1 0-2 .9-2 2v6c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2zm0 8H5V9h14v6z"}):jsxRuntime.jsx("path",{d:"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h18v14z"})})}));Ee.displayName="TheaterButton";var Ke=ot.memo(({volume:i,isMuted:r,onVolumeChange:o,onToggleMute:u})=>{let[s,h]=ot.useState(false),d=r?0:i,a=d*100,L=ot.useMemo(()=>`linear-gradient(to right, #60a5fa 0%, #60a5fa ${a}%, rgba(255,255,255,0.3) ${a}%, rgba(255,255,255,0.3) 100%)`,[a]);return jsxRuntime.jsxs("div",{className:"volumeContainer",onMouseEnter:()=>h(true),onMouseLeave:()=>h(false),children:[jsxRuntime.jsx("button",{onClick:u,className:"controlButton","aria-label":r?"Unmute":"Mute",title:r?"Unmute (M)":"Mute (M)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:d===0?jsxRuntime.jsx("path",{d:"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C23.16 14.42 24 13.3 24 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z"}):d<.5?jsxRuntime.jsx("path",{d:"M7 9v6h4l5 5V4l-5 5H7z"}):jsxRuntime.jsx("path",{d:"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"})})}),s&&jsxRuntime.jsx("input",{type:"range",min:"0",max:"100",value:a,onChange:l=>o(Number(l.target.value)/100),className:"volumeSlider",style:{background:L},"aria-label":"Volume","aria-valuenow":Math.round(a)})]})});Ke.displayName="VolumeControl";var ke=Ke;function Qe(i){let r=i.trim().split(":");return r.length===3?+r[0]*3600+ +r[1]*60+parseFloat(r[2]):+r[0]*60+parseFloat(r[1])}function yt(i,r){if(/^https?:\/\//i.test(r))return r;try{return new URL(r,i).href}catch{return r}}function Ne(i,r=""){let o=[],u=i.replace(/\r\n/g,`
2
2
  `).split(`
3
- `),o=0;for(;o<s.length;){let g=s[o].trim();if(g.includes("-->")){let u=g.indexOf("-->"),a=Fe(g.slice(0,u)),x=Fe(g.slice(u+3));for(o++;o<s.length&&!s[o].trim();)o++;if(o<s.length){let d=s[o].trim(),k=d.lastIndexOf("#xywh="),w=d,B=0,T=0,p=160,R=90;if(k!==-1){w=d.slice(0,k);let V=d.slice(k+6).split(",").map(Number);B=V[0]??0,T=V[1]??0,p=V[2]??160,R=V[3]??90;}c.push({start:a,end:x,url:pt(e,w),x:B,y:T,w:p,h:R});}}o++;}return c}function we(t,e){if(!t.length)return null;let c=0,s=t.length-1;for(;c<=s;){let o=c+s>>1;if(t[o].end<=e)c=o+1;else if(t[o].start>e)s=o-1;else return t[o]}return null}var _e=St.memo(({videoRef:t,playerRef:e,enablePreview:c=true,thumbnailVtt:s})=>{let o=St.useRef(null),g=St.useRef(null),u=St.useRef(null),a=St.useRef(null),x=St.useRef(null),d=St.useRef(null),k=St.useRef(null),[w,B]=St.useState([]),T=St.useRef(false),p=St.useRef(0),R=St.useRef(0),V=St.useRef(null),O=St.useRef([]),M=St.useRef(null);St.useEffect(()=>{let n=()=>{M.current=null;};return window.addEventListener("resize",n,{passive:true}),()=>window.removeEventListener("resize",n)},[]);let L=St.useCallback(()=>(!M.current&&o.current&&(M.current=o.current.getBoundingClientRect()),M.current),[]);St.useEffect(()=>{if(!s){O.current=[];return}let n=false;return fetch(s).then(i=>i.text()).then(i=>{n||(O.current=ke(i,s));}).catch(()=>{n||(O.current=[]);}),()=>{n=true;}},[s]),St.useEffect(()=>{let n=t.current;if(!n)return;let i=()=>{let b=isFinite(n.duration)?n.duration:0,y=n.currentTime,F=b>0?y/b*100:0;g.current&&(g.current.style.width=`${F}%`),u.current&&(u.current.style.left=`${F}%`),o.current&&(o.current.setAttribute("aria-valuenow",String(Math.round(y))),o.current.setAttribute("aria-valuemax",String(Math.round(b))),o.current.setAttribute("aria-valuetext",oe(y)));};return n.addEventListener("timeupdate",i),n.addEventListener("durationchange",i),n.addEventListener("seeked",i),i(),()=>{n.removeEventListener("timeupdate",i),n.removeEventListener("durationchange",i),n.removeEventListener("seeked",i);}},[t]),St.useEffect(()=>{let n=t.current;if(!n)return;let i=()=>{let b=[];for(let y=0;y<n.buffered.length;y++)b.push({start:n.buffered.start(y),end:n.buffered.end(y)});B(b);};return n.addEventListener("progress",i),()=>n.removeEventListener("progress",i)},[t]);let I=St.useCallback(()=>{T.current=true,u.current?.classList.add("dragging");},[]),C=St.useCallback(()=>{T.current=false,u.current?.classList.remove("dragging");},[]),W=St.useCallback(()=>{c&&(M.current=null,a.current&&(a.current.style.display="block"),d.current&&(d.current.style.display="block"));},[c]),X=St.useCallback(()=>{a.current&&(a.current.style.display="none"),d.current&&(d.current.style.display="none");},[]),j=St.useCallback(n=>{if(!k.current||!O.current.length)return;let i=we(O.current,n);if(V.current=i,!i)return;let b=k.current;b.style.backgroundImage=`url(${i.url})`,b.style.backgroundPosition=`-${i.x}px -${i.y}px`,b.style.width=`${i.w}px`,b.style.height=`${i.h}px`;},[]),H=St.useCallback(n=>{let i=L(),b=t.current?.duration;return !i||i.width===0||!b||!isFinite(b)?0:Math.max(0,Math.min(n-i.left,i.width))/i.width*b},[L,t]),G=St.useCallback(n=>{let i=L();return i?Math.max(0,Math.min(n-i.left,i.width)):0},[L]),Z=St.useCallback(n=>{let i=t.current;if(!i)return;let b=i.currentTime,y=isFinite(i.duration)?i.duration:0;switch(n.key){case "ArrowLeft":case "ArrowRight":{n.preventDefault(),n.nativeEvent.stopImmediatePropagation();let F=n.shiftKey?10:5;e.seek(n.key==="ArrowLeft"?Math.max(0,b-F):Math.min(y,b+F));break}case "Home":n.preventDefault(),n.nativeEvent.stopImmediatePropagation(),e.seek(0);break;case "End":y>0&&(n.preventDefault(),n.nativeEvent.stopImmediatePropagation(),e.seek(y));break}},[t,e]),ee=St.useCallback(n=>{let i=H(n.clientX),b=G(n.clientX);if(p.current=b,R.current=i,d.current&&(d.current.style.left=`${b}px`),x.current&&(x.current.textContent=oe(i)),j(i),a.current){let y=a.current.offsetWidth,F=L()?.width??0,Y=y/2,ae=Math.max(Y,Math.min(b,F-Y));a.current.style.left=`${ae}px`;}T.current&&e.seek(i);},[e,j,H,G,L]),ne=St.useCallback(()=>{W();},[W]),r=St.useCallback(()=>{X(),C();},[X,C]),l=St.useCallback(n=>{n.preventDefault(),I(),e.seek(H(n.clientX));},[I,H,e]),f=St.useCallback(()=>C(),[C]),h=St.useCallback(n=>{T.current||e.seek(H(n.clientX));},[H,e]);St.useEffect(()=>{let n=o.current;if(!n)return;let i=b=>{T.current&&b.preventDefault();};return n.addEventListener("touchmove",i,{passive:false}),()=>n.removeEventListener("touchmove",i)},[]);let m=St.useCallback(n=>{M.current=null,I(),e.seek(H(n.touches[0].clientX));},[I,H,e]),v=St.useCallback(n=>{T.current&&e.seek(H(n.touches[0].clientX));},[H,e]),E=St.useCallback(()=>C(),[C]);St.useEffect(()=>{let n=()=>C();return window.addEventListener("mouseup",n),()=>window.removeEventListener("mouseup",n)},[C]);let D=St.useMemo(()=>{let n=t.current,i=n&&isFinite(n.duration)?n.duration:0;return i<=0||!w.length?null:w.map((b,y)=>{let F=b.start/i*100,Y=(b.end-b.start)/i*100;return jsxRuntime.jsx("div",{className:"bufferedSegment",style:{left:`${F}%`,width:`${Y}%`}},y)})},[w,t]);return jsxRuntime.jsxs("div",{ref:o,className:"progressContainer",onMouseMove:ee,onMouseEnter:ne,onMouseLeave:r,onMouseDown:l,onMouseUp:f,onClick:h,onTouchStart:m,onTouchMove:v,onTouchEnd:E,onKeyDown:Z,role:"slider","aria-label":"Video progress","aria-valuemin":0,"aria-valuemax":0,"aria-valuenow":0,"aria-valuetext":"0:00",tabIndex:0,children:[c&&jsxRuntime.jsxs("div",{ref:a,className:"previewTooltip",style:{left:0,display:"none"},"aria-hidden":"true",children:[s&&jsxRuntime.jsx("div",{ref:k,className:"previewThumbnail"}),jsxRuntime.jsx("div",{ref:x,className:"previewTime"})]}),jsxRuntime.jsxs("div",{className:"progressBackground",children:[D,jsxRuntime.jsx("div",{ref:g,className:"progressFilled",style:{width:"0%"}}),c&&jsxRuntime.jsx("div",{ref:d,className:"hoverIndicator",style:{left:0,display:"none"},"aria-hidden":"true"})]}),jsxRuntime.jsx("div",{ref:u,className:"scrubHandle",style:{left:"0%"},"aria-hidden":"true"})]})});_e.displayName="ProgressBar";var Le=_e;var qe=St.memo(({currentRate:t,playbackRates:e,onRateChange:c,qualityLevels:s=[],currentQualityLevel:o=-1,onQualityChange:g})=>{let[u,a]=St.useState(false),[x,d]=St.useState("speed"),k=St.useRef(null),w=s.length>0&&!!g;St.useEffect(()=>{let p=R=>{k.current&&!k.current.contains(R.target)&&a(false);};return u&&document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)},[u]);let B=St.useMemo(()=>[...s].sort((p,R)=>R.bitrate-p.bitrate),[s]),T=St.useMemo(()=>o===-1?"Auto":s.find(p=>p.id===o)?.name??"Auto",[s,o]);return jsxRuntime.jsxs("div",{ref:k,className:"settingsContainer",children:[jsxRuntime.jsx("button",{onClick:()=>a(p=>!p),className:"controlButton","aria-label":"Settings",title:"Settings","aria-expanded":u,children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94s-.02-.64-.07-.94l2.03-1.58a.49.49 0 0 0 .12-.61l-1.92-3.32a.49.49 0 0 0-.59-.22l-2.39.96a7.02 7.02 0 0 0-1.62-.94l-.36-2.54a.484.484 0 0 0-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54a6.88 6.88 0 0 0-1.61.94l-2.39-.96a.488.488 0 0 0-.59.22L2.74 8.87a.48.48 0 0 0 .12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58a.49.49 0 0 0-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54a6.88 6.88 0 0 0 1.61-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32a.47.47 0 0 0-.12-.61l-2.01-1.58zM12 15.6A3.6 3.6 0 0 1 8.4 12 3.6 3.6 0 0 1 12 8.4a3.6 3.6 0 0 1 3.6 3.6 3.6 3.6 0 0 1-3.6 3.6z"})})}),u&&jsxRuntime.jsxs("div",{className:"settingsDropdown",role:"menu",children:[w&&jsxRuntime.jsxs("div",{className:"settingsTabs",children:[jsxRuntime.jsx("button",{className:`settingsTab${x==="speed"?" active":""}`,onClick:()=>d("speed"),children:"Speed"}),jsxRuntime.jsx("button",{className:`settingsTab${x==="quality"?" active":""}`,onClick:()=>d("quality"),children:"Quality"})]}),(!w||x==="speed")&&jsxRuntime.jsxs("div",{children:[!w&&jsxRuntime.jsx("div",{className:"settingsPanelLabel",children:"Playback Speed"}),e.map(p=>jsxRuntime.jsx("button",{onClick:()=>{c(p),a(false);},className:`settingsOption${t===p?" active":""}`,role:"menuitemradio","aria-checked":t===p,children:p===1?"Normal":`${p}\xD7`},p))]}),w&&x==="quality"&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("button",{onClick:()=>{g(-1),a(false);},className:`settingsOption${o===-1?" active":""}`,role:"menuitemradio","aria-checked":o===-1,children:["Auto ",o===-1&&T!=="Auto"?`(${T})`:""]}),B.map(p=>jsxRuntime.jsxs("button",{onClick:()=>{g(p.id),a(false);},className:`settingsOption${o===p.id?" active":""}`,role:"menuitemradio","aria-checked":o===p.id,children:[p.name,p.bitrate>0&&jsxRuntime.jsxs("span",{className:"settingsOptionBadge",children:[Math.round(p.bitrate/1e3)," kbps"]})]},p.id))]})]})]})});qe.displayName="SettingsMenu";var xe=qe;var We=St.memo(({videoRef:t,isLive:e=false})=>{let c=St.useRef(null),s=St.useRef(null);return St.useEffect(()=>{let o=t.current;if(!o)return;let g=()=>{c.current&&(c.current.textContent=oe(o.currentTime));},u=()=>{if(s.current){let a=isFinite(o.duration)?o.duration:0;s.current.textContent=` / ${oe(a)}`;}};return o.addEventListener("timeupdate",g),o.addEventListener("durationchange",u),o.addEventListener("seeked",g),g(),u(),()=>{o.removeEventListener("timeupdate",g),o.removeEventListener("durationchange",u),o.removeEventListener("seeked",g);}},[t,e]),e?jsxRuntime.jsx("span",{className:"timeDisplay",style:{opacity:.7},children:jsxRuntime.jsx("span",{ref:c,children:"0:00"})}):jsxRuntime.jsxs("span",{className:"timeDisplay",children:[jsxRuntime.jsx("span",{ref:c,children:"0:00"}),jsxRuntime.jsx("span",{ref:s,style:{opacity:.6},children:" / 0:00"})]})});We.displayName="TimeDisplay";var Te=We;var q={PlayButton:de,PauseButton:me,FullscreenButton:pe,PiPButton:ve,TheaterButton:fe,VolumeControl:Pe,ProgressBar:Le,SettingsMenu:xe,TimeDisplay:Te};var Re=({videoRef:t,playerRef:e,playerContainerRef:c,playbackRates:s,enablePreview:o,thumbnailVtt:g,isPlaying:u,volume:a,isMuted:x,playbackRate:d,isFullscreen:k,isPictureInPicture:w,isTheaterMode:B,isAudioMode:T,showAudioButton:p,isLive:R,qualityLevels:V,currentQualityLevel:O,controlBarItems:M})=>{let L=St.useRef(null),[I,C]=St.useState(true),W=St.useRef({isPlaying:u,volume:a,isMuted:x,isLive:R});W.current={isPlaying:u,volume:a,isMuted:x,isLive:R},St.useEffect(()=>{if(!u){C(true),L.current&&clearTimeout(L.current);return}let m=()=>{C(true),L.current&&clearTimeout(L.current),L.current=setTimeout(()=>C(false),3e3);},v=c.current;return v&&(v.addEventListener("mousemove",m),v.addEventListener("mouseenter",m),v.addEventListener("mouseleave",()=>{L.current&&clearTimeout(L.current);}),v.addEventListener("touchstart",m,{passive:true})),m(),()=>{v&&(v.removeEventListener("mousemove",m),v.removeEventListener("mouseenter",m),v.removeEventListener("mouseleave",()=>{}),v.removeEventListener("touchstart",m)),L.current&&clearTimeout(L.current);}},[u,c]),St.useEffect(()=>{let m=v=>{if(!c.current?.contains(document.activeElement))return;let E=v.target;if(E.tagName==="INPUT"||E.tagName==="TEXTAREA"||E.isContentEditable)return;let{isPlaying:D,volume:n,isLive:i}=W.current,b=t.current?.currentTime??0,y=t.current?.duration??0;switch(v.code){case "Space":case "KeyK":v.preventDefault(),D?e.pause():e.play();break;case "ArrowLeft":v.preventDefault(),e.seek(Math.max(0,b-5));break;case "ArrowRight":v.preventDefault(),e.seek(Math.min(y||1/0,b+5));break;case "ArrowUp":v.preventDefault(),e.setVolume(Math.min(1,n+.1));break;case "ArrowDown":v.preventDefault(),e.setVolume(Math.max(0,n-.1));break;case "KeyM":v.preventDefault(),e.toggleMute();break;case "KeyF":v.preventDefault(),e.toggleFullscreen();break;case "KeyP":v.preventDefault(),e.togglePictureInPicture();break;case "KeyT":v.preventDefault(),e.toggleTheaterMode();break;case "KeyL":v.preventDefault(),i&&e.seekToLive();break;case "Digit0":case "Digit1":case "Digit2":case "Digit3":case "Digit4":case "Digit5":case "Digit6":case "Digit7":case "Digit8":case "Digit9":{v.preventDefault();let F=Number(v.code.replace("Digit",""))*10;e.seek(y/100*F);break}}};return window.addEventListener("keydown",m),()=>window.removeEventListener("keydown",m)},[e,c,t]);let X=St.useCallback(()=>e.play(),[e]),j=St.useCallback(()=>e.pause(),[e]),H=St.useCallback(m=>e.setVolume(m),[e]),G=St.useCallback(()=>e.toggleMute(),[e]),Z=St.useCallback(m=>e.setPlaybackRate(m),[e]),ee=St.useCallback(m=>e.setQualityLevel(m),[e]),ne=St.useCallback(()=>e.togglePictureInPicture(),[e]),r=St.useCallback(()=>e.toggleTheaterMode(),[e]),l=St.useCallback(()=>e.toggleAudioMode(),[e]),f=St.useCallback(()=>e.toggleFullscreen(),[e]),h=St.useCallback(()=>e.seekToLive(),[e]);return jsxRuntime.jsx("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",justifyContent:"flex-end",opacity:I?1:0,transition:"opacity 0.3s",pointerEvents:"none"},children:jsxRuntime.jsxs("div",{style:{background:"linear-gradient(to top, rgba(0,0,0,0.75) 0%, rgba(0,0,0,0.2) 60%, transparent 100%)",padding:"48px 12px 12px",pointerEvents:I?"auto":"none"},role:"region","aria-label":"Video player controls",children:[jsxRuntime.jsx(q.ProgressBar,{videoRef:t,playerRef:e,enablePreview:o,thumbnailVtt:g}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginTop:4},children:[u?jsxRuntime.jsx(q.PauseButton,{onClick:j}):jsxRuntime.jsx(q.PlayButton,{onClick:X}),jsxRuntime.jsx(q.VolumeControl,{volume:a,isMuted:x,onVolumeChange:H,onToggleMute:G}),jsxRuntime.jsx(q.TimeDisplay,{videoRef:t,isLive:R}),jsxRuntime.jsx("div",{style:{flex:1}}),R&&jsxRuntime.jsx(Je,{onClick:h}),jsxRuntime.jsx(q.SettingsMenu,{currentRate:d,playbackRates:s,onRateChange:Z,qualityLevels:V,currentQualityLevel:O,onQualityChange:ee}),M?.map(m=>jsxRuntime.jsx("button",{className:"controlButton","aria-label":m.label,title:m.title??m.label,onClick:m.onClick,children:m.icon},m.key)),p&&jsxRuntime.jsx(Ye,{onClick:l,isAudioMode:T}),jsxRuntime.jsx(q.PiPButton,{onClick:ne,isPiP:w}),jsxRuntime.jsx(q.TheaterButton,{onClick:r,isTheater:B}),jsxRuntime.jsx(q.FullscreenButton,{onClick:f,isFullscreen:k})]})]})})},Ye=St.memo(({onClick:t,isAudioMode:e})=>jsxRuntime.jsx("button",{onClick:t,className:"controlButton","aria-label":e?"Exit audio mode":"Audio only mode",title:e?"Exit audio mode":"Audio only mode","aria-pressed":e,children:e?jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"})}):jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M12 3a9 9 0 0 0-9 9v7c0 1.1.9 2 2 2h1a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H4v-1a8 8 0 0 1 16 0v1h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h1a3 3 0 0 0 3-3v-4c0-4.97-4.03-9-9-9z"})})}));Ye.displayName="AudioModeButton";var Je=St.memo(({onClick:t})=>jsxRuntime.jsx("button",{onClick:t,style:{background:"none",border:"1px solid rgba(255,255,255,0.6)",color:"#fff",borderRadius:3,padding:"2px 8px",fontSize:11,fontWeight:700,cursor:"pointer",letterSpacing:"0.06em"},title:"Go to live (L)",children:"GO LIVE"}));Je.displayName="GoLiveButton";var Be=St.memo(({x:t,y:e,isPlaying:c,src:s,videoRef:o,playerRef:g,onClose:u,contextMenuItems:a})=>{let x=St.useRef(null),[d,k]=St.useState(()=>o.current?.loop??false),w=Math.min(t,window.innerWidth-220),B=Math.min(e,window.innerHeight-290);St.useEffect(()=>{let M=C=>{x.current&&!x.current.contains(C.target)&&u();},L=C=>{C.key==="Escape"&&u();},I=()=>u();return document.addEventListener("mousedown",M),document.addEventListener("keydown",L),window.addEventListener("scroll",I,true),()=>{document.removeEventListener("mousedown",M),document.removeEventListener("keydown",L),window.removeEventListener("scroll",I,true);}},[u]);let T=St.useCallback(()=>{c?g.pause():g.play(),u();},[c,g,u]),p=St.useCallback(()=>{let M=o.current;if(!M)return;let L=!d;M.loop=L,k(L);},[o,d]),R=St.useCallback(async()=>{try{await navigator.clipboard.writeText(s);}catch{}u();},[s,u]),V=St.useCallback(async()=>{let M=Math.floor(o.current?.currentTime??0);try{await navigator.clipboard.writeText(`${s}?t=${M}`);}catch{}u();},[s,o,u]),O=St.useCallback(()=>{g.togglePictureInPicture(),u();},[g,u]);return jsxRuntime.jsxs("div",{ref:x,className:"contextMenu",style:{left:w,top:B},children:[jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:T,children:c?"Pause":"Play"}),jsxRuntime.jsxs("button",{className:"contextMenuItem",onClick:p,children:[jsxRuntime.jsx("span",{children:"Loop"}),d&&jsxRuntime.jsx("span",{className:"contextMenuCheck",children:"\u2713"})]}),jsxRuntime.jsx("div",{className:"contextMenuDivider"}),jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:R,children:"Copy video URL"}),jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:V,children:"Copy video URL at current time"}),jsxRuntime.jsx("div",{className:"contextMenuDivider"}),jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:O,children:"Picture-in-Picture"}),a&&a.length>0&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:"contextMenuDivider"}),a.map((M,L)=>jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:()=>{M.onClick(),u();},children:M.label},L))]})]})});Be.displayName="ContextMenu";var Rt=Array.from({length:20},(t,e)=>e),De=({poster:t,logo:e,isPlaying:c})=>{let s=t?jsxRuntime.jsx("img",{src:t,alt:"Video artwork",className:"rvp-audio-artwork",draggable:false}):e?typeof e=="string"?jsxRuntime.jsx("img",{src:e,alt:"Logo",className:"rvp-audio-logo",draggable:false}):jsxRuntime.jsx("div",{className:"rvp-audio-logo-node",children:e}):null;return jsxRuntime.jsx("div",{className:"rvp-audio-overlay","data-test":"audio-mode-overlay",children:jsxRuntime.jsxs("div",{className:"rvp-audio-content",children:[s&&jsxRuntime.jsx("div",{className:"rvp-audio-artwork-wrapper",children:s}),jsxRuntime.jsxs("div",{className:"rvp-audio-badge","aria-label":"Audio only mode",children:[jsxRuntime.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:jsxRuntime.jsx("path",{d:"M12 3a9 9 0 0 0-9 9v7c0 1.1.9 2 2 2h1a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H4v-1a8 8 0 0 1 16 0v1h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h1a3 3 0 0 0 3-3v-4c0-4.97-4.03-9-9-9z"})}),"Audio Only"]}),jsxRuntime.jsx("div",{className:`rvp-audio-equalizer${c?" rvp-audio-equalizer--playing":""}`,"aria-hidden":"true",children:Rt.map(o=>jsxRuntime.jsx("div",{className:"rvp-audio-bar",style:{"--bar-index":o}},o))})]})})};De.displayName="AudioModeOverlay";var tt=St.forwardRef(({src:t,poster:e,autoplay:c=false,muted:s=false,loop:o=false,controls:g=true,preload:u="metadata",playbackRates:a=[.25,.5,.75,1,1.25,1.5,1.75,2],className:x,enableHLS:d=true,enablePreview:k=true,thumbnailVtt:w,hlsConfig:B,subtitles:T,crossOrigin:p,logo:R,showAudioButton:V=true,defaultAudioMode:O,audioBandwidthThreshold:M,onPlay:L,onPause:I,onEnded:C,onError:W,onTimeUpdate:X,onDurationChange:j,onBuffering:H,onTheaterModeChange:G,onAudioModeChange:Z,contextMenuItems:ee,controlBarItems:ne},r)=>{let l=St.useRef(null),f=St.useRef(null),{state:h,ref:m,fullscreenContainerRef:v}=Ie(l,t,{autoplay:c,muted:s,loop:o,playbackRates:a,enableHLS:d,hlsConfig:B,defaultAudioMode:O,audioBandwidthThreshold:M,onPlay:L,onPause:I,onEnded:C,onError:W,onTimeUpdate:X,onDurationChange:j,onBuffering:H,onTheaterModeChange:G,onAudioModeChange:Z}),[E,D]=St.useState(null);St.useEffect(()=>{v.current=f.current;},[v]),St__default.default.useImperativeHandle(r,()=>m,[m]);let n=St.useCallback(()=>{f.current?.focus(),h.isPlaying?m.pause():m.play();},[h.isPlaying,m]),i=St.useCallback(()=>{m.toggleFullscreen();},[m]),b=St.useCallback(y=>{y.preventDefault(),D({x:y.clientX,y:y.clientY});},[]);return jsxRuntime.jsxs("div",{ref:f,tabIndex:0,style:{position:"relative",width:"100%",backgroundColor:"#000",aspectRatio:"16 / 9",userSelect:"none",outline:"none"},className:x,"data-test":"video-player-container","data-theater":h.isTheaterMode?"true":void 0,onContextMenu:b,children:[jsxRuntime.jsx("video",{ref:l,poster:e,preload:u,crossOrigin:p,onClick:n,onDoubleClick:i,playsInline:true,style:{width:"100%",height:"100%",display:"block",cursor:"pointer",visibility:h.isAudioMode?"hidden":"visible"},"data-test":"video-element",children:T?.map(y=>jsxRuntime.jsx("track",{kind:"subtitles",src:y.src,label:y.label,srcLang:y.srclang,default:y.default},y.id))}),h.isAudioMode&&jsxRuntime.jsx(De,{poster:e,logo:R,isPlaying:h.isPlaying}),g&&jsxRuntime.jsx(Re,{videoRef:l,playerRef:m,playerContainerRef:f,playbackRates:a,enablePreview:k,thumbnailVtt:w,isPlaying:h.isPlaying,volume:h.volume,isMuted:h.isMuted,playbackRate:h.playbackRate,isFullscreen:h.isFullscreen,isPictureInPicture:h.isPictureInPicture,isTheaterMode:h.isTheaterMode,isAudioMode:h.isAudioMode,showAudioButton:V,isLive:h.isLive,qualityLevels:h.qualityLevels,currentQualityLevel:h.currentQualityLevel,controlBarItems:ne}),E&&jsxRuntime.jsx(Be,{x:E.x,y:E.y,isPlaying:h.isPlaying,src:t,videoRef:l,playerRef:m,onClose:()=>D(null),contextMenuItems:ee}),h.isLive&&jsxRuntime.jsx("div",{style:{position:"absolute",top:12,left:12,backgroundColor:"#e53935",color:"#fff",fontSize:11,fontWeight:700,letterSpacing:"0.08em",padding:"2px 8px",borderRadius:3,pointerEvents:"none"},children:"LIVE"}),h.isBuffering&&!h.error&&jsxRuntime.jsxs("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,color:"#fff",pointerEvents:"none"},"data-test":"buffering-indicator",children:[jsxRuntime.jsx("div",{style:{width:48,height:48,border:"4px solid rgba(255,255,255,0.25)",borderTop:"4px solid #fff",borderRadius:"50%",animation:"rvp-spin 0.8s linear infinite"}}),jsxRuntime.jsx("style",{children:"@keyframes rvp-spin { to { transform: rotate(360deg); } }"})]}),h.error&&jsxRuntime.jsx("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0,0,0,0.85)",color:"#fff",padding:24},"data-test":"error-overlay",children:jsxRuntime.jsxs("div",{style:{textAlign:"center",maxWidth:400},children:[jsxRuntime.jsx("div",{style:{fontSize:36,marginBottom:12},children:"\u26A0"}),jsxRuntime.jsx("h3",{style:{margin:"0 0 8px",fontSize:18},children:h.error.code==="MEDIA_ERR_SRC_NOT_SUPPORTED"?"Unsupported Format":h.error.code.startsWith("HLS")?"Stream Error":"Playback Error"}),jsxRuntime.jsx("p",{style:{margin:0,fontSize:13,opacity:.75},children:h.error.message})]})})]})});tt.displayName="VideoPlayer";var Ht=tt;var At={EXTREME:100,POOR:300,FAIR:700,GOOD:1500};exports.AUDIO_BANDWIDTH_THRESHOLDS=At;exports.ControlElements=Ke;exports.Controls=Re;exports.VideoPlayer=Ht;exports.findThumbnailCue=we;exports.formatTime=oe;exports.getMimeType=it;exports.isHLSUrl=be;exports.parseThumbnailVtt=ke;//# sourceMappingURL=index.js.map
3
+ `),s=0;for(;s<u.length;){let h=u[s].trim();if(h.includes("-->")){let d=h.indexOf("-->"),a=Qe(h.slice(0,d)),L=Qe(h.slice(d+3));for(s++;s<u.length&&!u[s].trim();)s++;if(s<u.length){let l=u[s].trim(),T=l.lastIndexOf("#xywh="),S=l,F=0,C=0,p=160,x=90;if(T!==-1){S=l.slice(0,T);let P=l.slice(T+6).split(",").map(Number);F=P[0]??0,C=P[1]??0,p=P[2]??160,x=P[3]??90;}o.push({start:a,end:L,url:yt(r,S),x:F,y:C,w:p,h:x});}}s++;}return o}function He(i,r){if(!i.length)return null;let o=0,u=i.length-1;for(;o<=u;){let s=o+u>>1;if(i[s].end<=r)o=s+1;else if(i[s].start>r)u=s-1;else return i[s]}return null}var qe=ot.memo(({videoRef:i,playerRef:r,enablePreview:o=true,thumbnailVtt:u})=>{let s=ot.useRef(null),h=ot.useRef(null),d=ot.useRef(null),a=ot.useRef(null),L=ot.useRef(null),l=ot.useRef(null),T=ot.useRef(null),[S,F]=ot.useState([]),C=ot.useRef(false),p=ot.useRef(0),x=ot.useRef(0),P=ot.useRef(null),A=ot.useRef([]),b=ot.useRef(null);ot.useEffect(()=>{let t=()=>{b.current=null;};return window.addEventListener("resize",t,{passive:true}),()=>window.removeEventListener("resize",t)},[]);let B=ot.useCallback(()=>(!b.current&&s.current&&(b.current=s.current.getBoundingClientRect()),b.current),[]);ot.useEffect(()=>{if(!u){A.current=[];return}let t=false;return fetch(u).then(n=>n.text()).then(n=>{t||(A.current=Ne(n,u));}).catch(()=>{t||(A.current=[]);}),()=>{t=true;}},[u]),ot.useEffect(()=>{let t=i.current;if(!t)return;let n=()=>{let m=isFinite(t.duration)?t.duration:0,y=t.currentTime,k=m>0?y/m*100:0;h.current&&(h.current.style.width=`${k}%`),d.current&&(d.current.style.left=`${k}%`),s.current&&(s.current.setAttribute("aria-valuenow",String(Math.round(y))),s.current.setAttribute("aria-valuemax",String(Math.round(m))),s.current.setAttribute("aria-valuetext",ce(y)));};return t.addEventListener("timeupdate",n),t.addEventListener("durationchange",n),t.addEventListener("seeked",n),n(),()=>{t.removeEventListener("timeupdate",n),t.removeEventListener("durationchange",n),t.removeEventListener("seeked",n);}},[i]),ot.useEffect(()=>{let t=i.current;if(!t)return;let n=()=>{let m=[];for(let y=0;y<t.buffered.length;y++)m.push({start:t.buffered.start(y),end:t.buffered.end(y)});F(m);};return t.addEventListener("progress",n),()=>t.removeEventListener("progress",n)},[i]);let I=ot.useCallback(()=>{C.current=true,d.current?.classList.add("dragging");},[]),D=ot.useCallback(()=>{C.current=false,d.current?.classList.remove("dragging");},[]),te=ot.useCallback(()=>{o&&(b.current=null,a.current&&(a.current.style.display="block"),l.current&&(l.current.style.display="block"));},[o]),J=ot.useCallback(()=>{a.current&&(a.current.style.display="none"),l.current&&(l.current.style.display="none");},[]),j=ot.useCallback(t=>{if(!T.current||!A.current.length)return;let n=He(A.current,t);if(P.current=n,!n)return;let m=T.current;m.style.backgroundImage=`url(${n.url})`,m.style.backgroundPosition=`-${n.x}px -${n.y}px`,m.style.width=`${n.w}px`,m.style.height=`${n.h}px`;},[]),R=ot.useCallback(t=>{let n=B(),m=i.current?.duration;return !n||n.width===0||!m||!isFinite(m)?0:Math.max(0,Math.min(t-n.left,n.width))/n.width*m},[B,i]),G=ot.useCallback(t=>{let n=B();return n?Math.max(0,Math.min(t-n.left,n.width)):0},[B]),W=ot.useCallback(t=>{let n=i.current;if(!n)return;let m=n.currentTime,y=isFinite(n.duration)?n.duration:0;switch(t.key){case "ArrowLeft":case "ArrowRight":{t.preventDefault(),t.nativeEvent.stopImmediatePropagation();let k=t.shiftKey?10:5;r.seek(t.key==="ArrowLeft"?Math.max(0,m-k):Math.min(y,m+k));break}case "Home":t.preventDefault(),t.nativeEvent.stopImmediatePropagation(),r.seek(0);break;case "End":y>0&&(t.preventDefault(),t.nativeEvent.stopImmediatePropagation(),r.seek(y));break}},[i,r]),Z=ot.useCallback(t=>{let n=R(t.clientX),m=G(t.clientX);if(p.current=m,x.current=n,l.current&&(l.current.style.left=`${m}px`),L.current&&(L.current.textContent=ce(n)),j(n),a.current){let y=a.current.offsetWidth,k=B()?.width??0,c=y/2,f=Math.max(c,Math.min(m,k-c));a.current.style.left=`${f}px`;}C.current&&r.seek(n);},[r,j,R,G,B]),ne=ot.useCallback(()=>{J(),D();},[J,D]),re=ot.useCallback(t=>{t.preventDefault(),I(),r.seek(R(t.clientX));},[I,R,r]),oe=ot.useCallback(t=>{C.current||r.seek(R(t.clientX));},[R,r]);ot.useEffect(()=>{let t=s.current;if(!t)return;let n=m=>{C.current&&m.preventDefault();};return t.addEventListener("touchmove",n,{passive:false}),()=>t.removeEventListener("touchmove",n)},[]);let ie=ot.useCallback(t=>{b.current=null,I(),r.seek(R(t.touches[0].clientX));},[I,R,r]),ue=ot.useCallback(t=>{C.current&&r.seek(R(t.touches[0].clientX));},[R,r]);ot.useEffect(()=>{let t=()=>D();return window.addEventListener("mouseup",t),()=>window.removeEventListener("mouseup",t)},[D]);let e=ot.useMemo(()=>{let t=i.current,n=t&&isFinite(t.duration)?t.duration:0;return n<=0||!S.length?null:S.map((m,y)=>{let k=m.start/n*100,c=(m.end-m.start)/n*100;return jsxRuntime.jsx("div",{className:"bufferedSegment",style:{left:`${k}%`,width:`${c}%`}},y)})},[S,i]);return jsxRuntime.jsxs("div",{ref:s,className:"progressContainer",onMouseMove:Z,onMouseEnter:te,onMouseLeave:ne,onMouseDown:re,onMouseUp:D,onClick:oe,onTouchStart:ie,onTouchMove:ue,onTouchEnd:D,onKeyDown:W,role:"slider","aria-label":"Video progress","aria-valuemin":0,"aria-valuemax":0,"aria-valuenow":0,"aria-valuetext":"0:00",tabIndex:0,children:[o&&jsxRuntime.jsxs("div",{ref:a,className:"previewTooltip",style:{left:0,display:"none"},"aria-hidden":"true",children:[u&&jsxRuntime.jsx("div",{ref:T,className:"previewThumbnail"}),jsxRuntime.jsx("div",{ref:L,className:"previewTime"})]}),jsxRuntime.jsxs("div",{className:"progressBackground",children:[e,jsxRuntime.jsx("div",{ref:h,className:"progressFilled",style:{width:"0%"}}),o&&jsxRuntime.jsx("div",{ref:l,className:"hoverIndicator",style:{left:0,display:"none"},"aria-hidden":"true"})]}),jsxRuntime.jsx("div",{ref:d,className:"scrubHandle",style:{left:"0%"},"aria-hidden":"true"})]})});qe.displayName="ProgressBar";var xe=qe;var Ge=ot.memo(({currentRate:i,playbackRates:r,onRateChange:o,qualityLevels:u=[],currentQualityLevel:s=-1,onQualityChange:h})=>{let[d,a]=ot.useState(false),[L,l]=ot.useState("speed"),T=ot.useRef(null),S=u.length>0&&!!h;ot.useEffect(()=>{let p=x=>{T.current&&!T.current.contains(x.target)&&a(false);};return d&&document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)},[d]);let F=ot.useMemo(()=>[...u].sort((p,x)=>x.bitrate-p.bitrate),[u]),C=ot.useMemo(()=>s===-1?"Auto":u.find(p=>p.id===s)?.name??"Auto",[u,s]);return jsxRuntime.jsxs("div",{ref:T,className:"settingsContainer",children:[jsxRuntime.jsx("button",{onClick:()=>a(p=>!p),className:"controlButton","aria-label":"Settings",title:"Settings","aria-expanded":d,children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94s-.02-.64-.07-.94l2.03-1.58a.49.49 0 0 0 .12-.61l-1.92-3.32a.49.49 0 0 0-.59-.22l-2.39.96a7.02 7.02 0 0 0-1.62-.94l-.36-2.54a.484.484 0 0 0-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54a6.88 6.88 0 0 0-1.61.94l-2.39-.96a.488.488 0 0 0-.59.22L2.74 8.87a.48.48 0 0 0 .12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58a.49.49 0 0 0-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54a6.88 6.88 0 0 0 1.61-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32a.47.47 0 0 0-.12-.61l-2.01-1.58zM12 15.6A3.6 3.6 0 0 1 8.4 12 3.6 3.6 0 0 1 12 8.4a3.6 3.6 0 0 1 3.6 3.6 3.6 3.6 0 0 1-3.6 3.6z"})})}),d&&jsxRuntime.jsxs("div",{className:"settingsDropdown",role:"menu",children:[S&&jsxRuntime.jsxs("div",{className:"settingsTabs",children:[jsxRuntime.jsx("button",{className:`settingsTab${L==="speed"?" active":""}`,onClick:()=>l("speed"),children:"Speed"}),jsxRuntime.jsx("button",{className:`settingsTab${L==="quality"?" active":""}`,onClick:()=>l("quality"),children:"Quality"})]}),(!S||L==="speed")&&jsxRuntime.jsxs("div",{children:[!S&&jsxRuntime.jsx("div",{className:"settingsPanelLabel",children:"Playback Speed"}),r.map(p=>jsxRuntime.jsx("button",{onClick:()=>{o(p),a(false);},className:`settingsOption${i===p?" active":""}`,role:"menuitemradio","aria-checked":i===p,children:p===1?"Normal":`${p}\xD7`},p))]}),S&&L==="quality"&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("button",{onClick:()=>{h(-1),a(false);},className:`settingsOption${s===-1?" active":""}`,role:"menuitemradio","aria-checked":s===-1,children:["Auto ",s===-1&&C!=="Auto"?`(${C})`:""]}),F.map(p=>jsxRuntime.jsxs("button",{onClick:()=>{h(p.id),a(false);},className:`settingsOption${s===p.id?" active":""}`,role:"menuitemradio","aria-checked":s===p.id,children:[p.name,p.bitrate>0&&jsxRuntime.jsxs("span",{className:"settingsOptionBadge",children:[Math.round(p.bitrate/1e3)," kbps"]})]},p.id))]})]})]})});Ge.displayName="SettingsMenu";var we=Ge;var Je=ot.memo(({videoRef:i,isLive:r=false})=>{let o=ot.useRef(null),u=ot.useRef(null);return ot.useEffect(()=>{let s=i.current;if(!s)return;let h=()=>{o.current&&(o.current.textContent=ce(s.currentTime));},d=()=>{if(u.current){let a=isFinite(s.duration)?s.duration:0;u.current.textContent=` / ${ce(a)}`;}};return s.addEventListener("timeupdate",h),s.addEventListener("durationchange",d),s.addEventListener("seeked",h),h(),d(),()=>{s.removeEventListener("timeupdate",h),s.removeEventListener("durationchange",d),s.removeEventListener("seeked",h);}},[i,r]),r?jsxRuntime.jsx("span",{className:"timeDisplay",style:{opacity:.7},children:jsxRuntime.jsx("span",{ref:o,children:"0:00"})}):jsxRuntime.jsxs("span",{className:"timeDisplay",children:[jsxRuntime.jsx("span",{ref:o,children:"0:00"}),jsxRuntime.jsx("span",{ref:u,style:{opacity:.6},children:" / 0:00"})]})});Je.displayName="TimeDisplay";var Be=Je;var q={PlayButton:he,PauseButton:ge,FullscreenButton:be,PiPButton:ye,TheaterButton:Ee,VolumeControl:ke,ProgressBar:xe,SettingsMenu:we,TimeDisplay:Be};var De=ot.memo(function({videoRef:r,playerRef:o,playerContainerRef:u,playbackRates:s,enablePreview:h,thumbnailVtt:d,isPlaying:a,volume:L,isMuted:l,playbackRate:T,isFullscreen:S,isPictureInPicture:F,isTheaterMode:C,isAudioMode:p,showAudioButton:x,audioModeIcon:P,videoModeIcon:A,audioModeLabel:b,videoModeLabel:B,isLive:I,qualityLevels:D,currentQualityLevel:te,controlBarItems:J,autoHideControls:j}){let R=ot.useRef(null),[G,W]=ot.useState(true),Z=ot.useRef({isPlaying:a,volume:L,isMuted:l,isLive:I});Z.current={isPlaying:a,volume:L,isMuted:l,isLive:I},ot.useEffect(()=>{if(p||!j){W(true),R.current&&clearTimeout(R.current);return}if(!a){W(true),R.current&&clearTimeout(R.current);return}let c=u.current;if(!c)return;let f=()=>{W(true),R.current&&clearTimeout(R.current),R.current=setTimeout(()=>W(false),3e3);},M=()=>{R.current&&clearTimeout(R.current),W(false);};return c.addEventListener("mousemove",f),c.addEventListener("mouseenter",f),c.addEventListener("mouseleave",M),c.addEventListener("touchstart",f,{passive:true}),W(false),()=>{c.removeEventListener("mousemove",f),c.removeEventListener("mouseenter",f),c.removeEventListener("mouseleave",M),c.removeEventListener("touchstart",f),R.current&&clearTimeout(R.current);}},[a,p,j,u]),ot.useEffect(()=>{let c=f=>{if(!u.current?.contains(document.activeElement))return;let M=f.target;if(M.tagName==="INPUT"||M.tagName==="TEXTAREA"||M.isContentEditable)return;let{isPlaying:w,volume:E,isLive:v}=Z.current,N=r.current?.currentTime??0,V=r.current?.duration??0;switch(f.code){case "Space":case "KeyK":f.preventDefault(),w?o.pause():o.play();break;case "ArrowLeft":f.preventDefault(),o.seek(Math.max(0,N-5));break;case "ArrowRight":f.preventDefault(),o.seek(Math.min(V||1/0,N+5));break;case "ArrowUp":f.preventDefault(),o.setVolume(Math.min(1,E+.1));break;case "ArrowDown":f.preventDefault(),o.setVolume(Math.max(0,E-.1));break;case "KeyM":f.preventDefault(),o.toggleMute();break;case "KeyF":f.preventDefault(),o.toggleFullscreen();break;case "KeyP":f.preventDefault(),o.togglePictureInPicture();break;case "KeyT":f.preventDefault(),o.toggleTheaterMode();break;case "KeyL":f.preventDefault(),v&&o.seekToLive();break;case "Digit0":case "Digit1":case "Digit2":case "Digit3":case "Digit4":case "Digit5":case "Digit6":case "Digit7":case "Digit8":case "Digit9":{f.preventDefault();let g=Number(f.code.replace("Digit",""))*10;o.seek(V/100*g);break}}};return window.addEventListener("keydown",c),()=>window.removeEventListener("keydown",c)},[o,u,r]);let ne=ot.useCallback(()=>o.play(),[o]),re=ot.useCallback(()=>o.pause(),[o]),oe=ot.useCallback(c=>o.setVolume(c),[o]),ie=ot.useCallback(()=>o.toggleMute(),[o]),ue=ot.useCallback(c=>o.setPlaybackRate(c),[o]),e=ot.useCallback(c=>o.setQualityLevel(c),[o]),t=ot.useCallback(()=>o.togglePictureInPicture(),[o]),n=ot.useCallback(()=>o.toggleTheaterMode(),[o]),m=ot.useCallback(()=>o.toggleAudioMode(),[o]),y=ot.useCallback(()=>o.toggleFullscreen(),[o]),k=ot.useCallback(()=>o.seekToLive(),[o]);return jsxRuntime.jsx("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",justifyContent:"flex-end",opacity:G?1:0,transition:"opacity 0.3s",pointerEvents:"none",zIndex:2},children:jsxRuntime.jsxs("div",{style:{background:"linear-gradient(to top, rgba(0,0,0,0.75) 0%, rgba(0,0,0,0.2) 60%, transparent 100%)",padding:"48px 12px 12px",pointerEvents:G?"auto":"none"},role:"region","aria-label":"Video player controls",children:[jsxRuntime.jsx(q.ProgressBar,{videoRef:r,playerRef:o,enablePreview:h,thumbnailVtt:d}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginTop:4},children:[a?jsxRuntime.jsx(q.PauseButton,{onClick:re}):jsxRuntime.jsx(q.PlayButton,{onClick:ne}),jsxRuntime.jsx(q.VolumeControl,{volume:L,isMuted:l,onVolumeChange:oe,onToggleMute:ie}),jsxRuntime.jsx(q.TimeDisplay,{videoRef:r,isLive:I}),jsxRuntime.jsx("div",{style:{flex:1}}),I&&jsxRuntime.jsx(rt,{onClick:k}),x&&jsxRuntime.jsx(nt,{onClick:m,isAudioMode:p,audioModeIcon:P,videoModeIcon:A,audioModeLabel:b,videoModeLabel:B}),jsxRuntime.jsx(q.SettingsMenu,{currentRate:T,playbackRates:s,onRateChange:ue,qualityLevels:D,currentQualityLevel:te,onQualityChange:e}),J?.map(c=>jsxRuntime.jsx("button",{className:"controlButton","aria-label":c.label,title:c.title??c.label,onClick:c.onClick,children:c.icon},c.key)),jsxRuntime.jsx(q.PiPButton,{onClick:t,isPiP:F}),jsxRuntime.jsx(q.TheaterButton,{onClick:n,isTheater:C}),jsxRuntime.jsx(q.FullscreenButton,{onClick:y,isFullscreen:S})]})]})})});De.displayName="Controls";var nt=ot.memo(({onClick:i,isAudioMode:r,audioModeIcon:o,videoModeIcon:u,audioModeLabel:s,videoModeLabel:h})=>{let d=r?h??"Video":s??"Audio";return jsxRuntime.jsxs("button",{onClick:i,className:"rvp-audio-toggle-btn","aria-label":d,title:d,"aria-pressed":r,children:[r?u??jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"})}):o??jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M12 3a9 9 0 0 0-9 9v7c0 1.1.9 2 2 2h1a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H4v-1a8 8 0 0 1 16 0v1h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h1a3 3 0 0 0 3-3v-4c0-4.97-4.03-9-9-9z"})}),d]})});nt.displayName="AudioModeButton";var rt=ot.memo(({onClick:i})=>jsxRuntime.jsx("button",{onClick:i,style:{background:"none",border:"1px solid rgba(255,255,255,0.6)",color:"#fff",borderRadius:3,padding:"2px 8px",fontSize:11,fontWeight:700,cursor:"pointer",letterSpacing:"0.06em"},title:"Go to live (L)",children:"GO LIVE"}));rt.displayName="GoLiveButton";var _e=ot.memo(({x:i,y:r,isPlaying:o,src:u,videoRef:s,playerRef:h,onClose:d,contextMenuItems:a})=>{let L=ot.useRef(null),[l,T]=ot.useState(()=>s.current?.loop??false),S=Math.min(i,window.innerWidth-220),F=Math.min(r,window.innerHeight-290);ot.useEffect(()=>{let b=D=>{L.current&&!L.current.contains(D.target)&&d();},B=D=>{D.key==="Escape"&&d();},I=()=>d();return document.addEventListener("mousedown",b),document.addEventListener("keydown",B),window.addEventListener("scroll",I,true),()=>{document.removeEventListener("mousedown",b),document.removeEventListener("keydown",B),window.removeEventListener("scroll",I,true);}},[d]);let C=ot.useCallback(()=>{o?h.pause():h.play(),d();},[o,h,d]),p=ot.useCallback(()=>{let b=s.current;if(!b)return;let B=!l;b.loop=B,T(B);},[s,l]),x=ot.useCallback(async()=>{try{await navigator.clipboard.writeText(u);}catch{}d();},[u,d]),P=ot.useCallback(async()=>{let b=Math.floor(s.current?.currentTime??0);try{await navigator.clipboard.writeText(`${u}?t=${b}`);}catch{}d();},[u,s,d]),A=ot.useCallback(()=>{h.togglePictureInPicture(),d();},[h,d]);return jsxRuntime.jsxs("div",{ref:L,className:"contextMenu",style:{left:S,top:F},children:[jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:C,children:o?"Pause":"Play"}),jsxRuntime.jsxs("button",{className:"contextMenuItem",onClick:p,children:[jsxRuntime.jsx("span",{children:"Loop"}),l&&jsxRuntime.jsx("span",{className:"contextMenuCheck",children:"\u2713"})]}),jsxRuntime.jsx("div",{className:"contextMenuDivider"}),jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:x,children:"Copy video URL"}),jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:P,children:"Copy video URL at current time"}),jsxRuntime.jsx("div",{className:"contextMenuDivider"}),jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:A,children:"Picture-in-Picture"}),a&&a.length>0&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:"contextMenuDivider"}),a.map((b,B)=>jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:()=>{b.onClick(),d();},children:b.label},B))]})]})});_e.displayName="ContextMenu";var ze=ot.memo(function({poster:r,logo:o,audioModeFallback:u,isBuffering:s=false,onOverlayClick:h}){return jsxRuntime.jsxs("div",{className:"rvp-audio-overlay",onClick:h,"data-test":"audio-mode-overlay",children:[r?jsxRuntime.jsx("div",{className:"rvp-audio-artwork-container",children:jsxRuntime.jsx("img",{src:r,alt:"Artwork",className:"rvp-audio-artwork",draggable:false})}):u?jsxRuntime.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center"},children:u}):o?typeof o=="string"?jsxRuntime.jsx("img",{src:o,alt:"Logo",className:"rvp-audio-logo",draggable:false}):jsxRuntime.jsx("div",{className:"rvp-audio-logo-node",children:o}):null,jsxRuntime.jsx("span",{className:"rvp-audio-label",children:"Audio Mode"}),s?jsxRuntime.jsx("div",{className:"rvp-audio-buffering-overlay","aria-label":"Buffering",children:jsxRuntime.jsx("div",{className:"rvp-audio-spinner"})}):null]})});ze.displayName="AudioModeOverlay";var at=ot.forwardRef((i,r)=>{let{src:o,poster:u,className:s,controls:h=true,options:d={}}=i,{autoplay:a=false,muted:L=false,loop:l=false,preload:T="metadata",playbackRates:S=[.25,.5,.75,1,1.25,1.5,1.75,2],enableHLS:F=true,enablePreview:C=true,thumbnailVtt:p,hlsConfig:x,autoHideControls:P=true,subtitles:A,crossOrigin:b,logo:B,audioModeFallback:I,audioSrc:D,showAudioButton:te,audioModeIcon:J,videoModeIcon:j,audioModeLabel:R,videoModeLabel:G,defaultAudioMode:W,audioBandwidthThreshold:Z,audioModeSwitchLevel:ne,audioModeRecoveryInterval:re,onPlay:oe,onPause:ie,onEnded:ue,onError:e,onTimeUpdate:t,onDurationChange:n,onBuffering:m,onTheaterModeChange:y,onAudioModeChange:k,contextMenuItems:c,controlBarItems:f}=d,M=ot.useRef(null),w=ot.useRef(null),E=ot.useRef(null),{state:v,ref:N,fullscreenContainerRef:V}=$e(M,o,{autoplay:a,muted:L,loop:l,playbackRates:S,enableHLS:F,hlsConfig:x,defaultAudioMode:W,audioBandwidthThreshold:Z,audioModeSwitchLevel:ne,audioModeRecoveryInterval:re,onPlay:oe,onPause:ie,onEnded:ue,onError:e,onTimeUpdate:t,onDurationChange:n,onBuffering:m,onTheaterModeChange:y,onAudioModeChange:k,audioRef:w,audioSrc:D}),g=ot.useRef(null);ot__default.default.useLayoutEffect(()=>{g.current=v.isAudioMode&&D&&w.current?w.current:M.current;},[v.isAudioMode,D]),g.current===null&&(g.current=M.current);let[Q,le]=ot.useState(null);ot.useEffect(()=>{V.current=E.current;},[V]),ot__default.default.useImperativeHandle(r,()=>N,[N]);let Le=ot.useCallback(()=>{E.current?.focus(),v.isPlaying?N.pause():N.play();},[v.isPlaying,N]),st=ot.useCallback(()=>{N.toggleFullscreen();},[N]),ut=ot.useCallback(ee=>{ee.preventDefault(),le({x:ee.clientX,y:ee.clientY});},[]);return jsxRuntime.jsxs("div",{ref:E,tabIndex:0,style:{position:"relative",width:"100%",backgroundColor:"#000",aspectRatio:"16 / 9",userSelect:"none",outline:"none"},className:s,"data-test":"video-player-container","data-theater":v.isTheaterMode?"true":void 0,onContextMenu:ut,children:[jsxRuntime.jsx("video",{ref:M,poster:u,preload:T,crossOrigin:b,onClick:Le,onDoubleClick:st,playsInline:true,style:{width:"100%",height:"100%",display:"block",cursor:"pointer",visibility:v.isAudioMode?"hidden":"visible"},"data-test":"video-element",children:A?.map(ee=>jsxRuntime.jsx("track",{kind:"subtitles",src:ee.src,label:ee.label,srcLang:ee.srclang,default:ee.default},ee.id))}),D&&jsxRuntime.jsx("audio",{ref:w,preload:"none",style:{display:"none"},"aria-hidden":"true"}),v.isAudioMode&&jsxRuntime.jsx(ze,{poster:u,logo:B,audioModeFallback:I,isBuffering:v.isBuffering,onOverlayClick:Le}),h&&jsxRuntime.jsx(De,{videoRef:g,playerRef:N,playerContainerRef:E,playbackRates:S,enablePreview:C,thumbnailVtt:v.isAudioMode?void 0:p,isPlaying:v.isPlaying,volume:v.volume,isMuted:v.isMuted,playbackRate:v.playbackRate,isFullscreen:v.isFullscreen,isPictureInPicture:v.isPictureInPicture,isTheaterMode:v.isTheaterMode,isAudioMode:v.isAudioMode,showAudioButton:te??!!D,audioModeIcon:J,videoModeIcon:j,audioModeLabel:R,videoModeLabel:G,isLive:v.isLive,qualityLevels:v.qualityLevels,currentQualityLevel:v.currentQualityLevel,controlBarItems:f,autoHideControls:P}),Q&&jsxRuntime.jsx(_e,{x:Q.x,y:Q.y,isPlaying:v.isPlaying,src:o,videoRef:M,playerRef:N,onClose:()=>le(null),contextMenuItems:c}),v.isLive&&jsxRuntime.jsx("div",{style:{position:"absolute",top:12,left:12,backgroundColor:"#e53935",color:"#fff",fontSize:11,fontWeight:700,letterSpacing:"0.08em",padding:"2px 8px",borderRadius:3,pointerEvents:"none"},children:"LIVE"}),v.isBuffering&&!v.error&&!v.isAudioMode&&jsxRuntime.jsx("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,color:"#fff",pointerEvents:"none"},"data-test":"buffering-indicator",children:jsxRuntime.jsx("div",{style:{width:48,height:48,border:"4px solid rgba(255,255,255,0.25)",borderTop:"4px solid #fff",borderRadius:"50%",animation:"rvp-spin 0.8s linear infinite"}})}),v.error&&jsxRuntime.jsx("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0,0,0,0.85)",color:"#fff",padding:24},"data-test":"error-overlay",children:jsxRuntime.jsxs("div",{style:{textAlign:"center",maxWidth:400},children:[jsxRuntime.jsx("div",{style:{fontSize:36,marginBottom:12},children:"\u26A0"}),jsxRuntime.jsx("h3",{style:{margin:"0 0 8px",fontSize:18},children:v.error.code==="MEDIA_ERR_SRC_NOT_SUPPORTED"?"Unsupported Format":v.error.code.startsWith("HLS")?"Stream Error":"Playback Error"}),jsxRuntime.jsx("p",{style:{margin:0,fontSize:13,opacity:.75},children:v.error.message})]})})]})});at.displayName="VideoPlayer";var _t=at;var zt={EXTREME:100,POOR:300,FAIR:800,GOOD:1500},Wt={LOWEST:0,SECOND_LOWEST:1,DISABLED:-1};exports.AUDIO_BANDWIDTH_THRESHOLDS=zt;exports.AUDIO_SWITCH_LEVELS=Wt;exports.ControlElements=Ze;exports.Controls=De;exports.VideoPlayer=_t;exports.findThumbnailCue=He;exports.formatTime=ce;exports.getMimeType=dt;exports.isHLSUrl=Pe;exports.parseThumbnailVtt=Ne;//# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map