react-helios 2.9.1 → 2.9.2
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.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -279,6 +279,7 @@ interface SettingsMenuProps {
|
|
|
279
279
|
manualQualityLevels?: ManualQualityLevel[];
|
|
280
280
|
activeManualSrc?: string;
|
|
281
281
|
onManualQualityChange?: (src: string) => void;
|
|
282
|
+
isAudioMode?: boolean;
|
|
282
283
|
}
|
|
283
284
|
declare const SettingsMenu: react.NamedExoticComponent<SettingsMenuProps>;
|
|
284
285
|
|
package/dist/index.d.ts
CHANGED
|
@@ -279,6 +279,7 @@ interface SettingsMenuProps {
|
|
|
279
279
|
manualQualityLevels?: ManualQualityLevel[];
|
|
280
280
|
activeManualSrc?: string;
|
|
281
281
|
onManualQualityChange?: (src: string) => void;
|
|
282
|
+
isAudioMode?: boolean;
|
|
282
283
|
}
|
|
283
284
|
declare const SettingsMenu: react.NamedExoticComponent<SettingsMenuProps>;
|
|
284
285
|
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var Lt=require('react'),be=require('hls.js'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var Lt__default=/*#__PURE__*/_interopDefault(Lt);var be__default=/*#__PURE__*/_interopDefault(be);var wt=Object.defineProperty;var kt=(r,n)=>{for(var o in n)wt(r,o,{get:n[o],enumerable:true});};function ge(r){if(!Number.isFinite(r)||r<0)return "0:00";let n=Math.floor(r),o=Math.floor(n/3600),l=Math.floor(n%3600/60),c=n%60;return o>0?`${o}:${String(l).padStart(2,"0")}:${String(c).padStart(2,"0")}`:`${l}:${String(c).padStart(2,"0")}`}function Le(r){try{return new URL(r,"https://x").pathname.toLowerCase().endsWith(".m3u8")||/\/hls\//i.test(r)||/\/stream\.m3u8/i.test(r)}catch{return r.toLowerCase().includes(".m3u8")}}function xt(r){if(Le(r))return "application/x-mpegURL";let n=r.toLowerCase().split("?")[0];return n.endsWith(".mp4")?"video/mp4":n.endsWith(".webm")?"video/webm":n.endsWith(".ogv")||n.endsWith(".ogg")?"video/ogg":n.endsWith(".mov")?"video/quicktime":"video/mp4"}function nt(r){return r.map((n,o)=>({id:o,height:n.height??0,width:n.width??0,bitrate:n.bitrate??0,name:n.height?`${n.height}p`:`Level ${o+1}`}))}var Nt={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 rt(r,n,o={}){let l=Lt.useRef(null),c=Lt.useRef(null),p=Lt.useRef(null),f=Lt.useRef(1),P=Lt.useRef(0),T=Lt.useRef(0),x=Lt.useRef(n),u=Lt.useRef(o);u.current=o;let[N,h]=Lt.useState({...Nt,isMuted:o.muted??false,volume:o.muted?0:1,isAudioMode:o.defaultAudioMode??false}),w=Lt.useRef(N);w.current=N;let V=Lt.useRef([]),A=Lt.useRef(0),H=Lt.useRef(false),D=Lt.useRef(false),B=Lt.useRef(null),k=Lt.useRef(null),F=Lt.useRef(false),C=Lt.useCallback(()=>{let e=u.current;return w.current.isAudioMode&&e.audioSrc&&e.audioRef?.current?e.audioRef.current:r.current},[r]);Lt.useEffect(()=>{let e=r.current;if(!e)return;let s=false;if(l.current&&(l.current.destroy(),l.current=null),P.current=0,T.current=0,V.current=[],A.current=0,H.current=false,D.current=false,B.current&&(clearTimeout(B.current),B.current=null),k.current&&(clearTimeout(k.current),k.current=null),F.current=false,h(t=>({...t,currentTime:0,duration:0,error:null,isPlaying:false,isBuffering:!!n,isLive:false,qualityLevels:[],currentQualityLevel:-1,isAudioMode:u.current.defaultAudioMode??false})),!n)return ()=>{s=true;};let d=u.current;if(d.enableHLS!==false&&Le(n))if(be__default.default.isSupported()){let t=new be__default.default({autoStartLoad:true,startLevel:-1,capLevelToPlayerSize:true,capLevelOnFPSDrop:true,enableWorker:true,maxBufferLength:30,maxMaxBufferLength:600,maxBufferSize:6e7,liveBackBufferLength:30,liveSyncDurationCount:3,...d.hlsConfig});t.attachMedia(e),t.loadSource(n),t.on(be.Events.MANIFEST_PARSED,(E,y)=>{if(s)return;let i=nt(y.levels);h(v=>({...v,qualityLevels:i,currentQualityLevel:-1})),u.current.autoplay&&e.play().catch(()=>{});}),t.on(be.Events.LEVEL_SWITCHED,(E,y)=>{if(s)return;h(b=>({...b,currentQualityLevel:y.level}));let i=u.current,v=i.audioModeSwitchLevel;v===void 0||v<0||!i.audioSrc||D.current||A.current<3||h(b=>!b.isAudioMode&&y.level<=v?(H.current=true,u.current.onAudioModeChange?.(true),{...b,isAudioMode:true}):b);}),t.on(be.Events.FRAG_LOADED,(E,y)=>{if(s)return;T.current=0;let i=u.current;if(!i.audioSrc)return;A.current+=1;let v=y.stats.loading.end-y.stats.loading.start,b=v>0&&y.stats.total>0?y.stats.total*8/v:0,z=i.audioBandwidthThreshold??300;if(F.current){F.current=false,b>0&&z&&b>z*1.5?(H.current=false,t.startLoad(),u.current.onAudioModeChange?.(false),h(M=>({...M,isAudioMode:false}))):(t.stopLoad(),a());return}if(!z||D.current||b<=0)return;let $=V.current;if($.push(b),$.length>5&&$.shift(),$.length<2)return;let ne=$.reduce((M,W)=>M+W,0)/$.length;h(M=>!M.isAudioMode&&ne<z?(H.current=true,u.current.onAudioModeChange?.(true),{...M,isAudioMode:true}):M);});let a=()=>{k.current&&clearTimeout(k.current);let E=u.current.audioModeRecoveryInterval??3e4;k.current=setTimeout(()=>{!H.current||!w.current.isAudioMode||(F.current=true,t.startLoad());},E);},m=3;t.on(be.Events.ERROR,(E,y)=>{if(!s){if(!y.fatal){console.warn("[hls] non-fatal:",y.details);return}switch(y.type){case be__default.default.ErrorTypes.NETWORK_ERROR:if(P.current<m){P.current+=1;let i=1e3*P.current;console.warn(`[hls] network error \u2013 retry ${P.current}/${m} in ${i}ms`),setTimeout(()=>{l.current===t&&t.startLoad();},i);}else {let i={code:"HLS_NETWORK_ERROR",message:"Failed to load stream after multiple retries."};h(v=>({...v,error:i})),u.current.onError?.(i);}break;case be__default.default.ErrorTypes.MEDIA_ERROR:if(T.current<m)T.current+=1,console.warn(`[hls] media error \u2013 recovery attempt ${T.current}/${m}`),t.recoverMediaError();else {t.destroy(),l.current=null;let i={code:"HLS_FATAL_ERROR",message:"An unrecoverable media error occurred."};h(v=>({...v,error:i})),u.current.onError?.(i);}break;default:{t.destroy(),l.current=null;let i={code:"HLS_FATAL_ERROR",message:"An unrecoverable HLS error occurred."};h(v=>({...v,error:i})),u.current.onError?.(i);break}}}}),l.current=t;}else e.canPlayType("application/vnd.apple.mpegurl")&&(e.src=n,e.load(),d.autoplay&&e.play().catch(()=>{}));else e.src=n,e.load(),d.autoplay&&e.play().catch(()=>{});return ()=>{s=true,l.current&&(l.current.destroy(),l.current=null),B.current&&(clearTimeout(B.current),B.current=null),k.current&&(clearTimeout(k.current),k.current=null),F.current=false,c.current&&(c.current.destroy(),c.current=null);let t=u.current.audioRef?.current;t&&(t.pause(),t.removeAttribute("src"),t.load());}},[n,r]),Lt.useEffect(()=>{let e=r.current;if(!e)return;u.current.muted&&(e.muted=true),u.current.loop&&(e.loop=true);let s=()=>{h(M=>({...M,isPlaying:true})),u.current.onPlay?.();},d=()=>{h(M=>({...M,isPlaying:false})),u.current.onPause?.();},t=()=>{h(M=>({...M,isPlaying:false})),u.current.onEnded?.();},a=()=>{w.current.isAudioMode&&u.current.audioSrc||u.current.onTimeUpdate?.(e.currentTime);},m=()=>{let M=e.duration,W=!Number.isFinite(M);h(ve=>({...ve,duration:W?0:M,isLive:W})),W||u.current.onDurationChange?.(M);},E=()=>{let M=e.volume;M>0&&!e.muted&&(f.current=M),h(W=>({...W,volume:M,isMuted:e.muted||M===0}));},y=()=>{h(M=>({...M,playbackRate:e.playbackRate}));},i=()=>{let M=e.error;if(!M||l.current)return;let ve={code:{1:"MEDIA_ERR_ABORTED",2:"MEDIA_ERR_NETWORK",3:"MEDIA_ERR_DECODE",4:"MEDIA_ERR_SRC_NOT_SUPPORTED"}[M.code]??"UNKNOWN",message:M.message||"Unknown media error"};h(Qe=>({...Qe,error:ve})),u.current.onError?.(ve);},v=()=>{h(M=>({...M,isBuffering:true})),u.current.onBuffering?.(true);},b=()=>{h(M=>({...M,isBuffering:false})),u.current.onBuffering?.(false);},z=()=>h(M=>({...M,isBuffering:false})),$=()=>{let M=!!(document.fullscreenElement||document.webkitFullscreenElement);h(W=>({...W,isFullscreen:M}));},ne=()=>{h(M=>({...M,isPictureInPicture:document.pictureInPictureElement===e}));};return e.addEventListener("play",s),e.addEventListener("pause",d),e.addEventListener("ended",t),e.addEventListener("timeupdate",a),e.addEventListener("durationchange",m),e.addEventListener("volumechange",E),e.addEventListener("ratechange",y),e.addEventListener("error",i),e.addEventListener("waiting",v),e.addEventListener("canplay",b),e.addEventListener("playing",z),document.addEventListener("fullscreenchange",$),document.addEventListener("webkitfullscreenchange",$),e.addEventListener("enterpictureinpicture",ne),e.addEventListener("leavepictureinpicture",ne),()=>{e.removeEventListener("play",s),e.removeEventListener("pause",d),e.removeEventListener("ended",t),e.removeEventListener("timeupdate",a),e.removeEventListener("durationchange",m),e.removeEventListener("volumechange",E),e.removeEventListener("ratechange",y),e.removeEventListener("error",i),e.removeEventListener("waiting",v),e.removeEventListener("canplay",b),e.removeEventListener("playing",z),document.removeEventListener("fullscreenchange",$),document.removeEventListener("webkitfullscreenchange",$),e.removeEventListener("enterpictureinpicture",ne),e.removeEventListener("leavepictureinpicture",ne);}},[r]),Lt.useEffect(()=>{let e=u.current.audioRef?.current;if(!e||!u.current.audioSrc)return;let s=()=>{h(b=>({...b,isPlaying:true})),u.current.onPlay?.();},d=()=>{h(b=>({...b,isPlaying:false})),u.current.onPause?.();},t=()=>{h(b=>({...b,isPlaying:false})),u.current.onEnded?.();},a=()=>{h(b=>({...b,isBuffering:true})),u.current.onBuffering?.(true);},m=()=>{h(b=>({...b,isBuffering:false})),u.current.onBuffering?.(false);},E=()=>h(b=>({...b,isBuffering:false})),y=()=>{w.current.isAudioMode&&u.current.onTimeUpdate?.(e.currentTime);},i=()=>{let b=e.duration;isFinite(b)&&(h(z=>({...z,duration:b})),u.current.onDurationChange?.(b));},v=()=>{if(c.current)return;let b={code:"MEDIA_ERR_NETWORK",message:"Audio source failed to load."};h(z=>({...z,error:b})),u.current.onError?.(b);};return e.addEventListener("play",s),e.addEventListener("pause",d),e.addEventListener("ended",t),e.addEventListener("waiting",a),e.addEventListener("canplay",m),e.addEventListener("playing",E),e.addEventListener("timeupdate",y),e.addEventListener("durationchange",i),e.addEventListener("error",v),()=>{e.removeEventListener("play",s),e.removeEventListener("pause",d),e.removeEventListener("ended",t),e.removeEventListener("waiting",a),e.removeEventListener("canplay",m),e.removeEventListener("playing",E),e.removeEventListener("timeupdate",y),e.removeEventListener("durationchange",i),e.removeEventListener("error",v);}},[n]),Lt.useEffect(()=>{let e=u.current,s=r.current,d=e.audioRef?.current;if(!(!s||!d||!e.audioSrc)){if(x.current!==n){x.current=n;return}if(x.current=n,N.isAudioMode){let t=s.currentTime,a=!s.paused,m=s.volume,E=s.muted,y=s.playbackRate;if(s.pause(),l.current?.stopLoad(),Le(e.audioSrc)&&be__default.default.isSupported())if(c.current)d.currentTime=t,a&&d.play().catch(()=>{});else {let i=new be__default.default({autoStartLoad:true,startLevel:-1,enableWorker:true,maxBufferLength:30,...e.hlsConfig});i.attachMedia(d),i.loadSource(e.audioSrc),i.once(be.Events.MANIFEST_PARSED,()=>{d.currentTime=t,d.volume=m,d.muted=E,d.playbackRate=y,a&&d.play().catch(()=>{});}),c.current=i;}else d.getAttribute("src")||(d.src=e.audioSrc),d.currentTime=t,d.volume=m,d.muted=E,d.playbackRate=y,a&&d.play().catch(()=>{});if(H.current){k.current&&clearTimeout(k.current);let i=e.audioModeRecoveryInterval??3e4;k.current=setTimeout(()=>{!H.current||!w.current.isAudioMode||(F.current=true,l.current?.startLoad());},i);}}else {let t=d.currentTime,a=!d.paused;d.pause(),c.current&&(c.current.destroy(),c.current=null,d.removeAttribute("src"),d.load()),k.current&&(clearTimeout(k.current),k.current=null),F.current=false,l.current?.startLoad(),s.currentTime=t,s.volume=d.volume,a&&s.play().catch(()=>{});}}},[N.isAudioMode,r,n]);let g=Lt.useCallback(async()=>{let e=C();if(e)try{await e.play();}catch(s){s instanceof Error&&s.name!=="AbortError"&&console.error("[player] play() failed:",s);}},[C]),R=Lt.useCallback(()=>{C()?.pause();},[C]),te=Lt.useCallback(e=>{let s=C();s&&(s.currentTime=Math.max(0,Math.min(e,s.duration||e)));},[C]),G=Lt.useCallback(e=>{let s=C();if(!s)return;let d=Math.max(0,Math.min(e,1));d>0&&(f.current=d),s.volume=d,s.muted=d===0;},[C]),de=Lt.useCallback(()=>{let e=C();if(e)if(e.muted||e.volume===0){let s=f.current>0?f.current:1;e.volume=s,e.muted=false;}else f.current=e.volume,e.muted=true;},[C]),ie=Lt.useCallback(e=>{let s=r.current;s&&(s.playbackRate=e);let d=u.current.audioRef?.current;d&&(d.playbackRate=e);},[r]),se=Lt.useCallback(e=>{let s=l.current;s&&(s.currentLevel=e,h(d=>({...d,currentQualityLevel:e})));},[]),_=Lt.useCallback(()=>{let e=l.current,s=r.current;if(!e||!s)return;let d=e.liveSyncPosition;d!=null&&Number.isFinite(d)&&(s.currentTime=d);},[r]),I=Lt.useCallback(async()=>{let e=r.current;if(!e)return;let s=p.current??e.parentElement;if(s)try{!document.fullscreenElement&&!document.webkitFullscreenElement?s.requestFullscreen?await s.requestFullscreen():s.webkitRequestFullscreen?.():document.exitFullscreen?await document.exitFullscreen():document.webkitExitFullscreen?.();}catch(d){console.error("[player] fullscreen toggle failed:",d);}},[r]),le=Lt.useCallback(async()=>{let e=r.current;if(e)try{document.pictureInPictureElement?await document.exitPictureInPicture():await e.requestPictureInPicture();}catch(s){console.error("[player] PiP toggle failed:",s);}},[r]),Y=Lt.useCallback(()=>{let e=!w.current.isTheaterMode;h(s=>({...s,isTheaterMode:e})),u.current.onTheaterModeChange?.(e);},[]),ue=Lt.useCallback(()=>{B.current&&clearTimeout(B.current),H.current=false,D.current=true,B.current=setTimeout(()=>{D.current=false,V.current=[];},6e4);let e=!w.current.isAudioMode;h(s=>({...s,isAudioMode:e})),u.current.onAudioModeChange?.(e);},[]),me=Lt.useCallback(()=>{let e=C(),s=e?.currentTime??0,d=[];if(e)for(let t=0;t<e.buffered.length;t++)d.push({start:e.buffered.start(t),end:e.buffered.end(t)});return {...w.current,currentTime:s,bufferedRanges:d}},[C]),fe=Lt.useCallback(()=>r.current??null,[r]),he=Lt.useMemo(()=>({play:g,pause:R,seek:te,setVolume:G,toggleMute:de,setPlaybackRate:ie,setQualityLevel:se,seekToLive:_,toggleFullscreen:I,togglePictureInPicture:le,toggleTheaterMode:Y,toggleAudioMode:ue,getState:me,getVideoElement:fe}),[g,R,te,G,de,ie,se,_,I,le,Y,ue,me,fe]);return {state:N,ref:he,hlsRef:l,fullscreenContainerRef:p}}var ht={};kt(ht,{ControlElements:()=>re,FullscreenButton:()=>Re,PauseButton:()=>Ce,PiPButton:()=>we,PlayButton:()=>Te,ProgressBar:()=>De,SettingsMenu:()=>Ve,TheaterButton:()=>ke,TimeDisplay:()=>Oe,VolumeControl:()=>Ae});var Te=Lt.memo(({onClick:r})=>jsxRuntime.jsx("button",{onClick:r,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"})})}));Te.displayName="PlayButton";var Ce=Lt.memo(({onClick:r})=>jsxRuntime.jsx("button",{onClick:r,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"})})}));Ce.displayName="PauseButton";var Re=Lt.memo(({onClick:r,isFullscreen:n=false})=>jsxRuntime.jsx("button",{onClick:r,className:"controlButton","aria-label":n?"Exit Fullscreen":"Fullscreen",title:n?"Exit Fullscreen (F)":"Fullscreen (F)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:n?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"})})}));Re.displayName="FullscreenButton";var we=Lt.memo(({onClick:r,isPiP:n=false})=>jsxRuntime.jsx("button",{onClick:r,className:"controlButton","aria-label":n?"Exit Picture-in-Picture":"Picture-in-Picture",title:n?"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"})})}));we.displayName="PiPButton";var ke=Lt.memo(({onClick:r,isTheater:n=false})=>jsxRuntime.jsx("button",{onClick:r,className:"controlButton","aria-label":n?"Exit Theater Mode":"Theater Mode",title:n?"Exit Theater Mode (T)":"Theater Mode (T)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:n?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"})})}));ke.displayName="TheaterButton";var ot=Lt.memo(({volume:r,isMuted:n,onVolumeChange:o,onToggleMute:l})=>{let[c,p]=Lt.useState(false),f=n?0:r,P=f*100,T=Lt.useMemo(()=>`linear-gradient(to right, #60a5fa 0%, #60a5fa ${P}%, rgba(255,255,255,0.3) ${P}%, rgba(255,255,255,0.3) 100%)`,[P]);return jsxRuntime.jsxs("div",{className:"volumeContainer",onMouseEnter:()=>p(true),onMouseLeave:()=>p(false),children:[jsxRuntime.jsx("button",{onClick:l,className:"controlButton","aria-label":n?"Unmute":"Mute",title:n?"Unmute (M)":"Mute (M)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:f===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"}):f<.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"})})}),c&&jsxRuntime.jsx("input",{type:"range",min:"0",max:"100",value:P,onChange:x=>o(Number(x.target.value)/100),className:"volumeSlider",style:{background:T},"aria-label":"Volume","aria-valuenow":Math.round(P)})]})});ot.displayName="VolumeControl";var Ae=ot;function at(r){let n=r.trim().split(":");return n.length===3?+n[0]*3600+ +n[1]*60+parseFloat(n[2]):+n[0]*60+parseFloat(n[1])}function It(r,n,o){if(/^https?:\/\//i.test(n))return n;if(n.startsWith("/")&&o)return o.replace(/\/+$/,"")+n;try{return new URL(n,r).href}catch{return n}}function $e(r,n="",o){let l=[],c=r.replace(/\r\n/g,`
|
|
1
|
+
'use strict';var Tt=require('react'),ye=require('hls.js'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var Tt__default=/*#__PURE__*/_interopDefault(Tt);var ye__default=/*#__PURE__*/_interopDefault(ye);var St=Object.defineProperty;var Bt=(r,n)=>{for(var o in n)St(r,o,{get:n[o],enumerable:true});};function ge(r){if(!Number.isFinite(r)||r<0)return "0:00";let n=Math.floor(r),o=Math.floor(n/3600),l=Math.floor(n%3600/60),c=n%60;return o>0?`${o}:${String(l).padStart(2,"0")}:${String(c).padStart(2,"0")}`:`${l}:${String(c).padStart(2,"0")}`}function Ee(r){try{return new URL(r,"https://x").pathname.toLowerCase().endsWith(".m3u8")||/\/hls\//i.test(r)||/\/stream\.m3u8/i.test(r)}catch{return r.toLowerCase().includes(".m3u8")}}function Nt(r){if(Ee(r))return "application/x-mpegURL";let n=r.toLowerCase().split("?")[0];return n.endsWith(".mp4")?"video/mp4":n.endsWith(".webm")?"video/webm":n.endsWith(".ogv")||n.endsWith(".ogg")?"video/ogg":n.endsWith(".mov")?"video/quicktime":"video/mp4"}function it(r){return r.map((n,o)=>({id:o,height:n.height??0,width:n.width??0,bitrate:n.bitrate??0,name:n.height?`${n.height}p`:`Level ${o+1}`}))}var Ht={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 st(r,n,o={}){let l=Tt.useRef(null),c=Tt.useRef(null),p=Tt.useRef(null),v=Tt.useRef(1),P=Tt.useRef(0),T=Tt.useRef(0),k=Tt.useRef(n),u=Tt.useRef(o);u.current=o;let[R,g]=Tt.useState({...Ht,isMuted:o.muted??false,volume:o.muted?0:1,isAudioMode:o.defaultAudioMode??false}),A=Tt.useRef(R);A.current=R;let N=Tt.useRef([]),H=Tt.useRef(0),V=Tt.useRef(false),S=Tt.useRef(false),B=Tt.useRef(null),w=Tt.useRef(null),F=Tt.useRef(false),C=Tt.useCallback(()=>{let e=u.current;return A.current.isAudioMode&&e.audioSrc&&e.audioRef?.current?e.audioRef.current:r.current},[r]);Tt.useEffect(()=>{let e=r.current;if(!e)return;let s=false;if(l.current&&(l.current.destroy(),l.current=null),P.current=0,T.current=0,N.current=[],H.current=0,V.current=false,S.current=false,B.current&&(clearTimeout(B.current),B.current=null),w.current&&(clearTimeout(w.current),w.current=null),F.current=false,g(t=>({...t,currentTime:0,duration:0,error:null,isPlaying:false,isBuffering:!!n,isLive:false,qualityLevels:[],currentQualityLevel:-1,isAudioMode:u.current.defaultAudioMode??false})),!n)return ()=>{s=true;};let d=u.current;if(d.enableHLS!==false&&Ee(n))if(ye__default.default.isSupported()){let t=new ye__default.default({autoStartLoad:true,startLevel:-1,capLevelToPlayerSize:true,capLevelOnFPSDrop:true,enableWorker:true,maxBufferLength:30,maxMaxBufferLength:600,maxBufferSize:6e7,liveBackBufferLength:30,liveSyncDurationCount:3,...d.hlsConfig});t.attachMedia(e),t.loadSource(n),t.on(ye.Events.MANIFEST_PARSED,(E,y)=>{if(s)return;let i=it(y.levels);g(m=>({...m,qualityLevels:i,currentQualityLevel:-1})),u.current.autoplay&&e.play().catch(()=>{});}),t.on(ye.Events.LEVEL_SWITCHED,(E,y)=>{if(s)return;g(b=>({...b,currentQualityLevel:y.level}));let i=u.current,m=i.audioModeSwitchLevel;m===void 0||m<0||!i.audioSrc||S.current||H.current<3||g(b=>!b.isAudioMode&&y.level<=m?(V.current=true,u.current.onAudioModeChange?.(true),{...b,isAudioMode:true}):b);}),t.on(ye.Events.FRAG_LOADED,(E,y)=>{if(s)return;T.current=0;let i=u.current;if(!i.audioSrc)return;H.current+=1;let m=y.stats.loading.end-y.stats.loading.start,b=m>0&&y.stats.total>0?y.stats.total*8/m:0,z=i.audioBandwidthThreshold??300;if(F.current){F.current=false,b>0&&z&&b>z*1.5?(V.current=false,t.startLoad(),u.current.onAudioModeChange?.(false),g(M=>({...M,isAudioMode:false}))):(t.stopLoad(),a());return}if(!z||S.current||b<=0)return;let K=N.current;if(K.push(b),K.length>5&&K.shift(),K.length<2)return;let ne=K.reduce((M,X)=>M+X,0)/K.length;g(M=>!M.isAudioMode&&ne<z?(V.current=true,u.current.onAudioModeChange?.(true),{...M,isAudioMode:true}):M);});let a=()=>{w.current&&clearTimeout(w.current);let E=u.current.audioModeRecoveryInterval??3e4;w.current=setTimeout(()=>{!V.current||!A.current.isAudioMode||(F.current=true,t.startLoad());},E);},f=3;t.on(ye.Events.ERROR,(E,y)=>{if(!s){if(!y.fatal){console.warn("[hls] non-fatal:",y.details);return}switch(y.type){case ye__default.default.ErrorTypes.NETWORK_ERROR:if(P.current<f){P.current+=1;let i=1e3*P.current;console.warn(`[hls] network error \u2013 retry ${P.current}/${f} in ${i}ms`),setTimeout(()=>{l.current===t&&t.startLoad();},i);}else {let i={code:"HLS_NETWORK_ERROR",message:"Failed to load stream after multiple retries."};g(m=>({...m,error:i})),u.current.onError?.(i);}break;case ye__default.default.ErrorTypes.MEDIA_ERROR:if(T.current<f)T.current+=1,console.warn(`[hls] media error \u2013 recovery attempt ${T.current}/${f}`),t.recoverMediaError();else {t.destroy(),l.current=null;let i={code:"HLS_FATAL_ERROR",message:"An unrecoverable media error occurred."};g(m=>({...m,error:i})),u.current.onError?.(i);}break;default:{t.destroy(),l.current=null;let i={code:"HLS_FATAL_ERROR",message:"An unrecoverable HLS error occurred."};g(m=>({...m,error:i})),u.current.onError?.(i);break}}}}),l.current=t;}else e.canPlayType("application/vnd.apple.mpegurl")&&(e.src=n,e.load(),d.autoplay&&e.play().catch(()=>{}));else e.src=n,e.load(),d.autoplay&&e.play().catch(()=>{});return ()=>{s=true,l.current&&(l.current.destroy(),l.current=null),B.current&&(clearTimeout(B.current),B.current=null),w.current&&(clearTimeout(w.current),w.current=null),F.current=false,c.current&&(c.current.destroy(),c.current=null);let t=u.current.audioRef?.current;t&&(t.pause(),t.removeAttribute("src"),t.load());}},[n,r]),Tt.useEffect(()=>{let e=r.current;if(!e)return;u.current.muted&&(e.muted=true),u.current.loop&&(e.loop=true);let s=()=>{g(M=>({...M,isPlaying:true})),u.current.onPlay?.();},d=()=>{g(M=>({...M,isPlaying:false})),u.current.onPause?.();},t=()=>{g(M=>({...M,isPlaying:false})),u.current.onEnded?.();},a=()=>{A.current.isAudioMode&&u.current.audioSrc||u.current.onTimeUpdate?.(e.currentTime);},f=()=>{let M=e.duration,X=!Number.isFinite(M);g(ae=>({...ae,duration:X?0:M,isLive:X})),X||u.current.onDurationChange?.(M);},E=()=>{let M=e.volume;M>0&&!e.muted&&(v.current=M),g(X=>({...X,volume:M,isMuted:e.muted||M===0}));},y=()=>{g(M=>({...M,playbackRate:e.playbackRate}));},i=()=>{let M=e.error;if(!M||l.current)return;let ae={code:{1:"MEDIA_ERR_ABORTED",2:"MEDIA_ERR_NETWORK",3:"MEDIA_ERR_DECODE",4:"MEDIA_ERR_SRC_NOT_SUPPORTED"}[M.code]??"UNKNOWN",message:M.message||"Unknown media error"};g(Ue=>({...Ue,error:ae})),u.current.onError?.(ae);},m=()=>{g(M=>({...M,isBuffering:true})),u.current.onBuffering?.(true);},b=()=>{g(M=>({...M,isBuffering:false})),u.current.onBuffering?.(false);},z=()=>g(M=>({...M,isBuffering:false})),K=()=>{let M=!!(document.fullscreenElement||document.webkitFullscreenElement);g(X=>({...X,isFullscreen:M}));},ne=()=>{g(M=>({...M,isPictureInPicture:document.pictureInPictureElement===e}));};return e.addEventListener("play",s),e.addEventListener("pause",d),e.addEventListener("ended",t),e.addEventListener("timeupdate",a),e.addEventListener("durationchange",f),e.addEventListener("volumechange",E),e.addEventListener("ratechange",y),e.addEventListener("error",i),e.addEventListener("waiting",m),e.addEventListener("canplay",b),e.addEventListener("playing",z),document.addEventListener("fullscreenchange",K),document.addEventListener("webkitfullscreenchange",K),e.addEventListener("enterpictureinpicture",ne),e.addEventListener("leavepictureinpicture",ne),()=>{e.removeEventListener("play",s),e.removeEventListener("pause",d),e.removeEventListener("ended",t),e.removeEventListener("timeupdate",a),e.removeEventListener("durationchange",f),e.removeEventListener("volumechange",E),e.removeEventListener("ratechange",y),e.removeEventListener("error",i),e.removeEventListener("waiting",m),e.removeEventListener("canplay",b),e.removeEventListener("playing",z),document.removeEventListener("fullscreenchange",K),document.removeEventListener("webkitfullscreenchange",K),e.removeEventListener("enterpictureinpicture",ne),e.removeEventListener("leavepictureinpicture",ne);}},[r]),Tt.useEffect(()=>{let e=u.current.audioRef?.current;if(!e||!u.current.audioSrc)return;let s=()=>{g(b=>({...b,isPlaying:true})),u.current.onPlay?.();},d=()=>{g(b=>({...b,isPlaying:false})),u.current.onPause?.();},t=()=>{g(b=>({...b,isPlaying:false})),u.current.onEnded?.();},a=()=>{g(b=>({...b,isBuffering:true})),u.current.onBuffering?.(true);},f=()=>{g(b=>({...b,isBuffering:false})),u.current.onBuffering?.(false);},E=()=>g(b=>({...b,isBuffering:false})),y=()=>{A.current.isAudioMode&&u.current.onTimeUpdate?.(e.currentTime);},i=()=>{let b=e.duration;isFinite(b)&&(g(z=>({...z,duration:b})),u.current.onDurationChange?.(b));},m=()=>{if(c.current)return;let b={code:"MEDIA_ERR_NETWORK",message:"Audio source failed to load."};g(z=>({...z,error:b})),u.current.onError?.(b);};return e.addEventListener("play",s),e.addEventListener("pause",d),e.addEventListener("ended",t),e.addEventListener("waiting",a),e.addEventListener("canplay",f),e.addEventListener("playing",E),e.addEventListener("timeupdate",y),e.addEventListener("durationchange",i),e.addEventListener("error",m),()=>{e.removeEventListener("play",s),e.removeEventListener("pause",d),e.removeEventListener("ended",t),e.removeEventListener("waiting",a),e.removeEventListener("canplay",f),e.removeEventListener("playing",E),e.removeEventListener("timeupdate",y),e.removeEventListener("durationchange",i),e.removeEventListener("error",m);}},[n]),Tt.useEffect(()=>{let e=u.current,s=r.current,d=e.audioRef?.current;if(!(!s||!d||!e.audioSrc)){if(k.current!==n){k.current=n;return}if(k.current=n,R.isAudioMode){let t=s.currentTime,a=!s.paused,f=s.volume,E=s.muted,y=s.playbackRate;if(s.pause(),l.current?.stopLoad(),Ee(e.audioSrc)&&ye__default.default.isSupported())if(c.current)d.currentTime=t,a&&d.play().catch(()=>{});else {let i=new ye__default.default({autoStartLoad:true,startLevel:-1,enableWorker:true,maxBufferLength:30,...e.hlsConfig});i.attachMedia(d),i.loadSource(e.audioSrc),i.once(ye.Events.MANIFEST_PARSED,()=>{d.currentTime=t,d.volume=f,d.muted=E,d.playbackRate=y,a&&d.play().catch(()=>{});}),c.current=i;}else d.getAttribute("src")||(d.src=e.audioSrc),d.currentTime=t,d.volume=f,d.muted=E,d.playbackRate=y,a&&d.play().catch(()=>{});if(V.current){w.current&&clearTimeout(w.current);let i=e.audioModeRecoveryInterval??3e4;w.current=setTimeout(()=>{!V.current||!A.current.isAudioMode||(F.current=true,l.current?.startLoad());},i);}}else {let t=d.currentTime,a=!d.paused;d.pause(),c.current&&(c.current.destroy(),c.current=null,d.removeAttribute("src"),d.load()),w.current&&(clearTimeout(w.current),w.current=null),F.current=false,l.current?.startLoad(),s.currentTime=t,s.volume=d.volume,a&&s.play().catch(()=>{});}}},[R.isAudioMode,r,n]);let W=Tt.useCallback(async()=>{let e=C();if(e)try{await e.play();}catch(s){s instanceof Error&&s.name!=="AbortError"&&console.error("[player] play() failed:",s);}},[C]),h=Tt.useCallback(()=>{C()?.pause();},[C]),D=Tt.useCallback(e=>{let s=C();s&&(s.currentTime=Math.max(0,Math.min(e,s.duration||e)));},[C]),J=Tt.useCallback(e=>{let s=C();if(!s)return;let d=Math.max(0,Math.min(e,1));d>0&&(v.current=d),s.volume=d,s.muted=d===0;},[C]),me=Tt.useCallback(()=>{let e=C();if(e)if(e.muted||e.volume===0){let s=v.current>0?v.current:1;e.volume=s,e.muted=false;}else v.current=e.volume,e.muted=true;},[C]),se=Tt.useCallback(e=>{let s=r.current;s&&(s.playbackRate=e);let d=u.current.audioRef?.current;d&&(d.playbackRate=e);},[r]),le=Tt.useCallback(e=>{let s=l.current;s&&(s.currentLevel=e,g(d=>({...d,currentQualityLevel:e})));},[]),_=Tt.useCallback(()=>{let e=l.current,s=r.current;if(!e||!s)return;let d=e.liveSyncPosition;d!=null&&Number.isFinite(d)&&(s.currentTime=d);},[r]),I=Tt.useCallback(async()=>{let e=r.current;if(!e)return;let s=p.current??e.parentElement;if(s)try{!document.fullscreenElement&&!document.webkitFullscreenElement?s.requestFullscreen?await s.requestFullscreen():s.webkitRequestFullscreen?.():document.exitFullscreen?await document.exitFullscreen():document.webkitExitFullscreen?.();}catch(d){console.error("[player] fullscreen toggle failed:",d);}},[r]),ue=Tt.useCallback(async()=>{let e=r.current;if(e)try{document.pictureInPictureElement?await document.exitPictureInPicture():await e.requestPictureInPicture();}catch(s){console.error("[player] PiP toggle failed:",s);}},[r]),Z=Tt.useCallback(()=>{let e=!A.current.isTheaterMode;g(s=>({...s,isTheaterMode:e})),u.current.onTheaterModeChange?.(e);},[]),ce=Tt.useCallback(()=>{B.current&&clearTimeout(B.current),V.current=false,S.current=true,B.current=setTimeout(()=>{S.current=false,N.current=[];},6e4);let e=!A.current.isAudioMode;g(s=>({...s,isAudioMode:e})),u.current.onAudioModeChange?.(e);},[]),fe=Tt.useCallback(()=>{let e=C(),s=e?.currentTime??0,d=[];if(e)for(let t=0;t<e.buffered.length;t++)d.push({start:e.buffered.start(t),end:e.buffered.end(t)});return {...A.current,currentTime:s,bufferedRanges:d}},[C]),ve=Tt.useCallback(()=>r.current??null,[r]),he=Tt.useMemo(()=>({play:W,pause:h,seek:D,setVolume:J,toggleMute:me,setPlaybackRate:se,setQualityLevel:le,seekToLive:_,toggleFullscreen:I,togglePictureInPicture:ue,toggleTheaterMode:Z,toggleAudioMode:ce,getState:fe,getVideoElement:ve}),[W,h,D,J,me,se,le,_,I,ue,Z,ce,fe,ve]);return {state:R,ref:he,hlsRef:l,fullscreenContainerRef:p}}var yt={};Bt(yt,{ControlElements:()=>re,FullscreenButton:()=>we,PauseButton:()=>Re,PiPButton:()=>ke,PlayButton:()=>Ce,ProgressBar:()=>Ve,SettingsMenu:()=>Oe,TheaterButton:()=>xe,TimeDisplay:()=>_e,VolumeControl:()=>He});var Ce=Tt.memo(({onClick:r})=>jsxRuntime.jsx("button",{onClick:r,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"})})}));Ce.displayName="PlayButton";var Re=Tt.memo(({onClick:r})=>jsxRuntime.jsx("button",{onClick:r,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"})})}));Re.displayName="PauseButton";var we=Tt.memo(({onClick:r,isFullscreen:n=false})=>jsxRuntime.jsx("button",{onClick:r,className:"controlButton","aria-label":n?"Exit Fullscreen":"Fullscreen",title:n?"Exit Fullscreen (F)":"Fullscreen (F)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:n?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"})})}));we.displayName="FullscreenButton";var ke=Tt.memo(({onClick:r,isPiP:n=false})=>jsxRuntime.jsx("button",{onClick:r,className:"controlButton","aria-label":n?"Exit Picture-in-Picture":"Picture-in-Picture",title:n?"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"})})}));ke.displayName="PiPButton";var xe=Tt.memo(({onClick:r,isTheater:n=false})=>jsxRuntime.jsx("button",{onClick:r,className:"controlButton","aria-label":n?"Exit Theater Mode":"Theater Mode",title:n?"Exit Theater Mode (T)":"Theater Mode (T)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:n?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"})})}));xe.displayName="TheaterButton";var lt=Tt.memo(({volume:r,isMuted:n,onVolumeChange:o,onToggleMute:l})=>{let[c,p]=Tt.useState(false),v=n?0:r,P=v*100,T=Tt.useMemo(()=>`linear-gradient(to right, #60a5fa 0%, #60a5fa ${P}%, rgba(255,255,255,0.3) ${P}%, rgba(255,255,255,0.3) 100%)`,[P]);return jsxRuntime.jsxs("div",{className:"volumeContainer",onMouseEnter:()=>p(true),onMouseLeave:()=>p(false),children:[jsxRuntime.jsx("button",{onClick:l,className:"controlButton","aria-label":n?"Unmute":"Mute",title:n?"Unmute (M)":"Mute (M)",children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor",children:v===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"}):v<.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"})})}),c&&jsxRuntime.jsx("input",{type:"range",min:"0",max:"100",value:P,onChange:k=>o(Number(k.target.value)/100),className:"volumeSlider",style:{background:T},"aria-label":"Volume","aria-valuenow":Math.round(P)})]})});lt.displayName="VolumeControl";var He=lt;function ut(r){let n=r.trim().split(":");return n.length===3?+n[0]*3600+ +n[1]*60+parseFloat(n[2]):+n[0]*60+parseFloat(n[1])}function _t(r,n,o){if(/^https?:\/\//i.test(n))return n;if(n.startsWith("/")&&o)return o.replace(/\/+$/,"")+n;try{return new URL(n,r).href}catch{return n}}function Ke(r,n="",o){let l=[],c=r.replace(/\r\n/g,`
|
|
2
2
|
`).split(`
|
|
3
|
-
`),p=0;for(;p<c.length;){let f=c[p].trim();if(f.includes("-->")){let P=f.indexOf("-->"),T=at(f.slice(0,P)),x=at(f.slice(P+3));for(p++;p<c.length&&!c[p].trim();)p++;if(p<c.length){let u=c[p].trim(),N=u.lastIndexOf("#xywh="),h=u,w=0,V=0,A=160,H=90;if(N!==-1){h=u.slice(0,N);let D=u.slice(N+6).split(",").map(Number);w=D[0]??0,V=D[1]??0,A=D[2]??160,H=D[3]??90;}l.push({start:T,end:x,url:It(n,h,o),x:w,y:V,w:A,h:H});}}p++;}return l}function We(r,n){if(!r.length)return null;let o=0,l=r.length-1;for(;o<=l;){let c=o+l>>1;if(r[c].end<=n)o=c+1;else if(r[c].start>n)l=c-1;else return r[c]}return null}var st=Lt.memo(({videoRef:r,playerRef:n,enablePreview:o=true,thumbnailVtt:l,thumbnailVttBaseUrl:c,isAudioMode:p=false})=>{let f=Lt.useRef(null),P=Lt.useRef(null),T=Lt.useRef(null),x=Lt.useRef(null),u=Lt.useRef(null),N=Lt.useRef(null),h=Lt.useRef(null),w=Lt.useRef(null),V=Lt.useRef(null),[A,H]=Lt.useState([]),D=Lt.useRef(false),B=Lt.useRef(0),k=Lt.useRef(0),F=Lt.useRef(null),C=Lt.useRef([]),g=Lt.useRef(null);Lt.useEffect(()=>{let t=()=>{g.current=null;};return window.addEventListener("resize",t,{passive:true}),()=>window.removeEventListener("resize",t)},[]);let R=Lt.useCallback(()=>(!g.current&&f.current&&(g.current=f.current.getBoundingClientRect()),g.current),[]);Lt.useEffect(()=>{if(!l){C.current=[];return}let t=false;return fetch(l).then(a=>a.text()).then(a=>{t||(C.current=$e(a,l,c));}).catch(()=>{t||(C.current=[]);}),()=>{t=true;}},[l]),Lt.useEffect(()=>{let t=r.current;if(!t)return;let a=()=>{let m=isFinite(t.duration)?t.duration:0,E=t.currentTime,y=m>0?E/m*100:0;P.current&&(P.current.style.width=`${y}%`),T.current&&(T.current.style.left=`${y}%`),w.current&&(w.current.style.clipPath=`inset(0 ${(100-y).toFixed(2)}% 0 0)`),f.current&&(f.current.setAttribute("aria-valuenow",String(Math.round(E))),f.current.setAttribute("aria-valuemax",String(Math.round(m))),f.current.setAttribute("aria-valuetext",ge(E)));};return t.addEventListener("timeupdate",a),t.addEventListener("durationchange",a),t.addEventListener("seeked",a),a(),()=>{t.removeEventListener("timeupdate",a),t.removeEventListener("durationchange",a),t.removeEventListener("seeked",a);}},[r,p]),Lt.useEffect(()=>{let t=r.current;if(!t)return;let a=()=>{let m=[];for(let E=0;E<t.buffered.length;E++)m.push({start:t.buffered.start(E),end:t.buffered.end(E)});if(p||H(m),V.current&&isFinite(t.duration)&&t.duration>0){let y=m.reduce((i,v)=>Math.max(i,v.end),0)/t.duration*100;V.current.style.clipPath=`inset(0 ${(100-y).toFixed(2)}% 0 0)`;}};return t.addEventListener("progress",a),()=>t.removeEventListener("progress",a)},[r,p]);let te=Lt.useCallback(()=>{D.current=true,T.current?.classList.add("dragging");},[]),G=Lt.useCallback(()=>{D.current=false,T.current?.classList.remove("dragging");},[]),de=Lt.useCallback(()=>{!o||p||(g.current=null,x.current&&(x.current.style.display="block"),N.current&&(N.current.style.display="block"));},[o,p]),ie=Lt.useCallback(()=>{x.current&&(x.current.style.display="none"),N.current&&(N.current.style.display="none");},[]),se=Lt.useCallback(t=>{if(!h.current||!C.current.length)return;let a=We(C.current,t);if(F.current=a,!a)return;let m=h.current;m.style.backgroundImage=`url(${a.url})`,m.style.backgroundPosition=`-${a.x}px -${a.y}px`,m.style.width=`${a.w}px`,m.style.height=`${a.h}px`;},[]),_=Lt.useCallback(t=>{let a=R(),m=r.current?.duration;return !a||a.width===0||!m||!isFinite(m)?0:Math.max(0,Math.min(t-a.left,a.width))/a.width*m},[R,r]),I=Lt.useCallback(t=>{let a=R();return a?Math.max(0,Math.min(t-a.left,a.width)):0},[R]),le=Lt.useCallback(t=>{let a=r.current;if(!a)return;let m=a.currentTime,E=isFinite(a.duration)?a.duration:0;switch(t.key){case "ArrowLeft":case "ArrowRight":{t.preventDefault(),t.nativeEvent.stopImmediatePropagation();let y=t.shiftKey?10:5;n.seek(t.key==="ArrowLeft"?Math.max(0,m-y):Math.min(E,m+y));break}case "Home":t.preventDefault(),t.nativeEvent.stopImmediatePropagation(),n.seek(0);break;case "End":E>0&&(t.preventDefault(),t.nativeEvent.stopImmediatePropagation(),n.seek(E));break}},[r,n]),Y=Lt.useCallback(t=>{let a=_(t.clientX),m=I(t.clientX);if(B.current=m,k.current=a,N.current&&(N.current.style.left=`${m}px`),u.current&&(u.current.textContent=ge(a)),se(a),x.current){let E=x.current.offsetWidth,y=R()?.width??0,i=E/2,v=Math.max(i,Math.min(m,y-i));x.current.style.left=`${v}px`;}D.current&&n.seek(a);},[n,se,_,I,R]),ue=Lt.useCallback(()=>{ie(),G();},[ie,G]),me=Lt.useCallback(t=>{t.preventDefault(),te(),n.seek(_(t.clientX));},[te,_,n]),fe=Lt.useCallback(t=>{D.current||n.seek(_(t.clientX));},[_,n]);Lt.useEffect(()=>{let t=f.current;if(!t)return;let a=m=>{D.current&&m.preventDefault();};return t.addEventListener("touchmove",a,{passive:false}),()=>t.removeEventListener("touchmove",a)},[]);let he=Lt.useCallback(t=>{g.current=null,te(),n.seek(_(t.touches[0].clientX));},[te,_,n]),e=Lt.useCallback(t=>{D.current&&n.seek(_(t.touches[0].clientX));},[_,n]);Lt.useEffect(()=>{let t=()=>G();return window.addEventListener("mouseup",t),()=>window.removeEventListener("mouseup",t)},[G]);let s=Lt.useMemo(()=>{let a=[],m=3735928559,E=()=>(m^=m<<13,m^=m>>17,m^=m<<5,(m>>>0)/4294967295);for(let y=0;y<200;y++){let i=y/200*Math.PI*5,v=.15+.55*Math.abs(Math.sin(i))+.3*E();a.push(Math.max(.1,Math.min(1,v)));}return a},[]),d=Lt.useMemo(()=>{let t=r.current,a=t&&isFinite(t.duration)?t.duration:0;return a<=0||!A.length?null:A.map((m,E)=>{let y=m.start/a*100,i=(m.end-m.start)/a*100;return jsxRuntime.jsx("div",{className:"bufferedSegment",style:{left:`${y}%`,width:`${i}%`}},E)})},[A,r]);return jsxRuntime.jsxs("div",{ref:f,className:"progressContainer",onMouseMove:Y,onMouseEnter:de,onMouseLeave:ue,onMouseDown:me,onMouseUp:G,onClick:fe,onTouchStart:he,onTouchMove:e,onTouchEnd:G,onKeyDown:le,role:"slider","aria-label":p?"Audio progress":"Video progress","aria-valuemin":0,"aria-valuemax":0,"aria-valuenow":0,"aria-valuetext":"0:00",tabIndex:0,children:[o&&jsxRuntime.jsxs("div",{ref:x,className:"previewTooltip",style:{left:0,display:"none"},"aria-hidden":"true",children:[l&&jsxRuntime.jsx("div",{ref:h,className:"previewThumbnail"}),jsxRuntime.jsx("div",{ref:u,className:"previewTime"})]}),p?jsxRuntime.jsxs("div",{className:"rvp-waveform","aria-hidden":"true",children:[jsxRuntime.jsx("div",{className:"rvp-waveform-base",children:s.map((t,a)=>jsxRuntime.jsx("div",{className:"rvp-waveform-dot"},a))}),jsxRuntime.jsx("div",{ref:V,className:"rvp-waveform-buffered",style:{clipPath:"inset(0 100% 0 0)"},children:s.map((t,a)=>jsxRuntime.jsx("div",{className:"rvp-waveform-buffered-bar",style:{height:`${Math.round(t*100)}%`}},a))}),jsxRuntime.jsx("div",{ref:w,className:"rvp-waveform-filled",children:s.map((t,a)=>jsxRuntime.jsx("div",{className:"rvp-waveform-bar",style:{height:`${Math.round(t*100)}%`}},a))})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"progressBackground",children:[d,jsxRuntime.jsx("div",{ref:P,className:"progressFilled",style:{width:"0%"}}),o&&jsxRuntime.jsx("div",{ref:N,className:"hoverIndicator",style:{left:0,display:"none"},"aria-hidden":"true"})]}),jsxRuntime.jsx("div",{ref:T,className:"scrubHandle",style:{left:"0%"},"aria-hidden":"true"})]})]})});st.displayName="ProgressBar";var De=st;var Ut=()=>jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M20.38 8.57l-1.23 1.85a8 8 0 0 1-.22 7.58H5.07A8 8 0 0 1 15.58 6.85l1.85-1.23A10 10 0 0 0 3.35 19a2 2 0 0 0 1.72 1h13.85a2 2 0 0 0 1.74-1 10 10 0 0 0-.27-10.44zm-9.79 6.84a2 2 0 0 0 2.83 0l5.66-8.49-8.49 5.66a2 2 0 0 0 0 2.83z"})}),$t=()=>jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z"})}),ct=()=>jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})}),dt=()=>jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"})}),He=()=>jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})}),ft=Lt.memo(({currentRate:r,playbackRates:n,onRateChange:o,qualityLevels:l=[],currentQualityLevel:c=-1,onQualityChange:p,showQualityMenu:f=false,manualQualityLevels:P,activeManualSrc:T,onManualQualityChange:x})=>{let[u,N]=Lt.useState(false),[h,w]=Lt.useState(null),V=Lt.useRef(null),A=l.length>0&&!!p,H=!!P?.length&&!!x,D=A||H||f;Lt.useEffect(()=>{u||w(null);},[u]),Lt.useEffect(()=>{let g=R=>{V.current&&!V.current.contains(R.target)&&N(false);};return u&&document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[u]);let B=Lt.useMemo(()=>[...l].sort((g,R)=>R.bitrate-g.bitrate),[l]),k=r===1?"Normal":`${r}\xD7`,F=Lt.useMemo(()=>H&&T?P.find(g=>g.src===T)?.label??"Auto":A?c===-1?"Auto":l.find(g=>g.id===c)?.name??"Auto":"Auto",[H,A,T,P,l,c]),C=Lt.useMemo(()=>c===-1?null:l.find(g=>g.id===c)?.name??null,[l,c]);return jsxRuntime.jsxs("div",{ref:V,className:"settingsContainer",children:[jsxRuntime.jsx("button",{onClick:()=>N(g=>!g),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:[h===null&&jsxRuntime.jsxs("div",{className:"settingsMainPanel",children:[jsxRuntime.jsxs("button",{className:"settingsRow",onClick:()=>w("speed"),children:[jsxRuntime.jsx("span",{className:"settingsRowIcon",children:jsxRuntime.jsx(Ut,{})}),jsxRuntime.jsx("span",{className:"settingsRowLabel",children:"Playback speed"}),jsxRuntime.jsx("span",{className:"settingsRowValue",children:k}),jsxRuntime.jsx("span",{className:"settingsRowChevron",children:jsxRuntime.jsx(ct,{})})]}),D&&jsxRuntime.jsxs("button",{className:"settingsRow",onClick:()=>w("quality"),children:[jsxRuntime.jsx("span",{className:"settingsRowIcon",children:jsxRuntime.jsx($t,{})}),jsxRuntime.jsx("span",{className:"settingsRowLabel",children:"Quality"}),jsxRuntime.jsx("span",{className:"settingsRowValue",children:F}),jsxRuntime.jsx("span",{className:"settingsRowChevron",children:jsxRuntime.jsx(ct,{})})]})]}),h==="speed"&&jsxRuntime.jsxs("div",{className:"settingsSubPanel",children:[jsxRuntime.jsxs("button",{className:"settingsBackRow",onClick:()=>w(null),children:[jsxRuntime.jsx(dt,{}),jsxRuntime.jsx("span",{children:"Playback speed"})]}),jsxRuntime.jsx("div",{className:"settingsDivider"}),n.map(g=>{let R=r===g;return jsxRuntime.jsxs("button",{onClick:()=>{o(g),w(null);},className:`settingsOption${R?" active":""}`,role:"menuitemradio","aria-checked":R,children:[jsxRuntime.jsx("span",{className:"settingsOptionCheck",children:R&&jsxRuntime.jsx(He,{})}),g===1?"Normal":`${g}\xD7`]},g)})]}),h==="quality"&&jsxRuntime.jsxs("div",{className:"settingsSubPanel",children:[jsxRuntime.jsxs("button",{className:"settingsBackRow",onClick:()=>w(null),children:[jsxRuntime.jsx(dt,{}),jsxRuntime.jsx("span",{children:"Quality"})]}),jsxRuntime.jsx("div",{className:"settingsDivider"}),H&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[P.map(g=>{let R=T===g.src;return jsxRuntime.jsxs("button",{onClick:()=>{x(g.src),w(null);},className:`settingsOption${R?" active":""}`,role:"menuitemradio","aria-checked":R,children:[jsxRuntime.jsx("span",{className:"settingsOptionCheck",children:R&&jsxRuntime.jsx(He,{})}),g.label]},g.src)}),A&&jsxRuntime.jsx("div",{className:"settingsDivider"})]}),A&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("button",{onClick:()=>{p(-1),w(null);},className:`settingsOption${c===-1?" active":""}`,role:"menuitemradio","aria-checked":c===-1,children:[jsxRuntime.jsx("span",{className:"settingsOptionCheck",children:c===-1&&jsxRuntime.jsx(He,{})}),jsxRuntime.jsxs("span",{children:["Auto",C&&jsxRuntime.jsxs("span",{className:"settingsOptionBadge",children:[" (",C,")"]})]})]}),B.map(g=>{let R=c===g.id;return jsxRuntime.jsxs("button",{onClick:()=>{p(g.id),w(null);},className:`settingsOption${R?" active":""}`,role:"menuitemradio","aria-checked":R,children:[jsxRuntime.jsx("span",{className:"settingsOptionCheck",children:R&&jsxRuntime.jsx(He,{})}),jsxRuntime.jsx("span",{style:{flex:1},children:g.name}),g.bitrate>0&&jsxRuntime.jsxs("span",{className:"settingsOptionBadge",children:[Math.round(g.bitrate/1e3)," kbps"]})]},g.id)})]})]})]})]})});ft.displayName="SettingsMenu";var Ve=ft;var pt=Lt.memo(({videoRef:r,isLive:n=false,isAudioMode:o=false})=>{let l=Lt.useRef(null),c=Lt.useRef(null);return Lt.useEffect(()=>{let p=r.current;if(!p)return;let f=()=>{l.current&&(l.current.textContent=ge(p.currentTime));},P=()=>{if(c.current){let T=isFinite(p.duration)?p.duration:0;c.current.textContent=` / ${ge(T)}`;}};return p.addEventListener("timeupdate",f),p.addEventListener("durationchange",P),p.addEventListener("seeked",f),f(),P(),()=>{p.removeEventListener("timeupdate",f),p.removeEventListener("durationchange",P),p.removeEventListener("seeked",f);}},[r,n,o]),n?jsxRuntime.jsx("span",{className:"timeDisplay",style:{opacity:.7},children:jsxRuntime.jsx("span",{ref:l,children:"0:00"})}):jsxRuntime.jsxs("span",{className:"timeDisplay",children:[jsxRuntime.jsx("span",{ref:l,children:"0:00"}),jsxRuntime.jsx("span",{ref:c,style:{opacity:.6},children:" / 0:00"})]})});pt.displayName="TimeDisplay";var Oe=pt;var re={PlayButton:Te,PauseButton:Ce,FullscreenButton:Re,PiPButton:we,TheaterButton:ke,VolumeControl:Ae,ProgressBar:De,SettingsMenu:Ve,TimeDisplay:Oe};var Fe=Lt.memo(function({videoRef:n,playerRef:o,playerContainerRef:l,playbackRates:c,enablePreview:p,thumbnailVtt:f,thumbnailVttBaseUrl:P,isPlaying:T,volume:x,isMuted:u,playbackRate:N,isFullscreen:h,isPictureInPicture:w,isTheaterMode:V,isAudioMode:A,showAudioButton:H,audioModeIcon:D,videoModeIcon:B,audioModeLabel:k,videoModeLabel:F,isLive:C,qualityLevels:g,currentQualityLevel:R,showQualityMenu:te,manualQualityLevels:G,activeManualSrc:de,onManualQualityChange:ie,controlBarItems:se,autoHideControls:_}){let I=Lt.useRef(null),[le,Y]=Lt.useState(true),ue=Lt.useRef({isPlaying:T,volume:x,isMuted:u,isLive:C});ue.current={isPlaying:T,volume:x,isMuted:u,isLive:C},Lt.useEffect(()=>{if(A||!_){Y(true),I.current&&clearTimeout(I.current);return}if(!T){Y(true),I.current&&clearTimeout(I.current);return}let i=l.current;if(!i)return;let v=()=>{Y(true),I.current&&clearTimeout(I.current),I.current=setTimeout(()=>Y(false),3e3);},b=()=>{I.current&&clearTimeout(I.current),Y(false);};return i.addEventListener("mousemove",v),i.addEventListener("mouseenter",v),i.addEventListener("mouseleave",b),i.addEventListener("touchstart",v,{passive:true}),Y(false),()=>{i.removeEventListener("mousemove",v),i.removeEventListener("mouseenter",v),i.removeEventListener("mouseleave",b),i.removeEventListener("touchstart",v),I.current&&clearTimeout(I.current);}},[T,A,_,l]),Lt.useEffect(()=>{let i=v=>{if(!l.current?.contains(document.activeElement))return;let b=v.target;if(b.tagName==="INPUT"||b.tagName==="TEXTAREA"||b.isContentEditable)return;let{isPlaying:z,volume:$,isLive:ne}=ue.current,M=n.current?.currentTime??0,W=n.current?.duration??0;switch(v.code){case "Space":case "KeyK":v.preventDefault(),z?o.pause():o.play();break;case "ArrowLeft":v.preventDefault(),o.seek(Math.max(0,M-5));break;case "ArrowRight":v.preventDefault(),o.seek(Math.min(W||1/0,M+5));break;case "ArrowUp":v.preventDefault(),o.setVolume(Math.min(1,$+.1));break;case "ArrowDown":v.preventDefault(),o.setVolume(Math.max(0,$-.1));break;case "KeyM":v.preventDefault(),o.toggleMute();break;case "KeyF":v.preventDefault(),o.toggleFullscreen();break;case "KeyP":v.preventDefault(),o.togglePictureInPicture();break;case "KeyT":v.preventDefault(),o.toggleTheaterMode();break;case "KeyL":v.preventDefault(),ne&&o.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 ve=Number(v.code.replace("Digit",""))*10;o.seek(W/100*ve);break}}};return window.addEventListener("keydown",i),()=>window.removeEventListener("keydown",i)},[o,l,n]);let me=Lt.useCallback(()=>o.play(),[o]),fe=Lt.useCallback(()=>o.pause(),[o]),he=Lt.useCallback(i=>o.setVolume(i),[o]),e=Lt.useCallback(()=>o.toggleMute(),[o]),s=Lt.useCallback(i=>o.setPlaybackRate(i),[o]),d=Lt.useCallback(i=>o.setQualityLevel(i),[o]),t=Lt.useCallback(()=>o.togglePictureInPicture(),[o]),a=Lt.useCallback(()=>o.toggleTheaterMode(),[o]),m=Lt.useCallback(()=>o.toggleAudioMode(),[o]),E=Lt.useCallback(()=>o.toggleFullscreen(),[o]),y=Lt.useCallback(()=>o.seekToLive(),[o]);return jsxRuntime.jsx("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",justifyContent:"flex-end",opacity:le?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:le?"auto":"none"},role:"region","aria-label":"Video player controls",children:[jsxRuntime.jsx(re.ProgressBar,{videoRef:n,playerRef:o,enablePreview:p,thumbnailVtt:f,thumbnailVttBaseUrl:P,isAudioMode:A}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginTop:4},children:[T?jsxRuntime.jsx(re.PauseButton,{onClick:fe}):jsxRuntime.jsx(re.PlayButton,{onClick:me}),jsxRuntime.jsx(re.VolumeControl,{volume:x,isMuted:u,onVolumeChange:he,onToggleMute:e}),jsxRuntime.jsx(re.TimeDisplay,{videoRef:n,isLive:C,isAudioMode:A}),jsxRuntime.jsx("div",{style:{flex:1}}),C&&jsxRuntime.jsx(Mt,{onClick:y}),H&&jsxRuntime.jsx(yt,{onClick:m,isAudioMode:A,audioModeIcon:D,videoModeIcon:B,audioModeLabel:k,videoModeLabel:F}),jsxRuntime.jsx(re.SettingsMenu,{currentRate:N,playbackRates:c,onRateChange:s,qualityLevels:g,currentQualityLevel:R,onQualityChange:d,showQualityMenu:te,manualQualityLevels:G,activeManualSrc:de,onManualQualityChange:ie}),se?.map(i=>jsxRuntime.jsx("button",{className:"controlButton","aria-label":i.label,title:i.title??i.label,onClick:i.onClick,children:i.icon},i.key)),jsxRuntime.jsx(re.PiPButton,{onClick:t,isPiP:w}),jsxRuntime.jsx(re.TheaterButton,{onClick:a,isTheater:V}),jsxRuntime.jsx(re.FullscreenButton,{onClick:E,isFullscreen:h})]})]})})});Fe.displayName="Controls";var yt=Lt.memo(({onClick:r,isAudioMode:n,audioModeIcon:o,videoModeIcon:l,audioModeLabel:c,videoModeLabel:p})=>{let f=n?p??"Video":c??"Audio";return jsxRuntime.jsxs("button",{onClick:r,className:"rvp-audio-toggle-btn","aria-label":f,title:f,"aria-pressed":n,children:[n?l??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"})}),f]})});yt.displayName="AudioModeButton";var Mt=Lt.memo(({onClick:r})=>jsxRuntime.jsx("button",{onClick:r,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"}));Mt.displayName="GoLiveButton";var Ge=Lt.memo(({x:r,y:n,isPlaying:o,src:l,videoRef:c,playerRef:p,onClose:f,contextMenuItems:P})=>{let T=Lt.useRef(null),[x,u]=Lt.useState(()=>c.current?.loop??false),N=Math.min(r,window.innerWidth-220),h=Math.min(n,window.innerHeight-290);Lt.useEffect(()=>{let B=C=>{T.current&&!T.current.contains(C.target)&&f();},k=C=>{C.key==="Escape"&&f();},F=()=>f();return document.addEventListener("mousedown",B),document.addEventListener("keydown",k),window.addEventListener("scroll",F,true),()=>{document.removeEventListener("mousedown",B),document.removeEventListener("keydown",k),window.removeEventListener("scroll",F,true);}},[f]);let w=Lt.useCallback(()=>{o?p.pause():p.play(),f();},[o,p,f]),V=Lt.useCallback(()=>{let B=c.current;if(!B)return;let k=!x;B.loop=k,u(k);},[c,x]),A=Lt.useCallback(async()=>{try{await navigator.clipboard.writeText(l);}catch{}f();},[l,f]),H=Lt.useCallback(async()=>{let B=Math.floor(c.current?.currentTime??0);try{await navigator.clipboard.writeText(`${l}?t=${B}`);}catch{}f();},[l,c,f]),D=Lt.useCallback(()=>{p.togglePictureInPicture(),f();},[p,f]);return jsxRuntime.jsxs("div",{ref:T,className:"contextMenu",style:{left:N,top:h},children:[jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:w,children:o?"Pause":"Play"}),jsxRuntime.jsxs("button",{className:"contextMenuItem",onClick:V,children:[jsxRuntime.jsx("span",{children:"Loop"}),x&&jsxRuntime.jsx("span",{className:"contextMenuCheck",children:"\u2713"})]}),jsxRuntime.jsx("div",{className:"contextMenuDivider"}),jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:A,children:"Copy video URL"}),jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:H,children:"Copy video URL at current time"}),jsxRuntime.jsx("div",{className:"contextMenuDivider"}),jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:D,children:"Picture-in-Picture"}),P&&P.length>0&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:"contextMenuDivider"}),P.map((B,k)=>jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:()=>{B.onClick(),f();},children:B.label},k))]})]})});Ge.displayName="ContextMenu";var Ye=Lt.memo(function({poster:n,logo:o,audioModeFallback:l,isBuffering:c=false,onOverlayClick:p}){return jsxRuntime.jsxs("div",{className:"rvp-audio-overlay",onClick:p,"data-test":"audio-mode-overlay",children:[n?jsxRuntime.jsx("div",{className:"rvp-audio-artwork-container",children:jsxRuntime.jsx("img",{src:n,alt:"Artwork",className:"rvp-audio-artwork",draggable:false})}):l?jsxRuntime.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center"},children:l}):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"}),c?jsxRuntime.jsx("div",{className:"rvp-audio-buffering-overlay","aria-label":"Buffering",children:jsxRuntime.jsx("div",{className:"rvp-audio-spinner"})}):null]})});Ye.displayName="AudioModeOverlay";var Tt=Lt.forwardRef((r,n)=>{let{src:o,poster:l,className:c,controls:p=true,options:f={}}=r,{autoplay:P=false,muted:T=false,loop:x=false,preload:u="metadata",playbackRates:N=[.25,.5,.75,1,1.25,1.5,1.75,2],enableHLS:h=true,enablePreview:w=true,thumbnailVtt:V,thumbnailVttBaseUrl:A,hlsConfig:H,autoHideControls:D=true,subtitles:B,crossOrigin:k,logo:F,audioModeFallback:C,audioPoster:g,audioSrc:R,showAudioButton:te,audioModeIcon:G,videoModeIcon:de,audioModeLabel:ie,videoModeLabel:se,defaultAudioMode:_,showQualityMenu:I,manualQualityLevels:le,audioBandwidthThreshold:Y,audioModeSwitchLevel:ue,audioModeRecoveryInterval:me,onPlay:fe,onPause:he,onEnded:e,onError:s,onTimeUpdate:d,onDurationChange:t,onBuffering:a,onTheaterModeChange:m,onAudioModeChange:E,contextMenuItems:y,controlBarItems:i}=f,v=Lt.useRef(null),b=Lt.useRef(null),z=Lt.useRef(null),[$,ne]=Lt.useState(void 0),[M,W]=Lt.useState(void 0);Lt.useEffect(()=>{ne(void 0),W(void 0);},[o]);let ve=Lt.useCallback(Z=>{ne(Z),W(Z);},[]),Qe=$??o,{state:S,ref:ce,fullscreenContainerRef:Ze}=rt(v,Qe,{autoplay:P,muted:T,loop:x,playbackRates:N,enableHLS:h,hlsConfig:H,defaultAudioMode:_,audioBandwidthThreshold:Y,audioModeSwitchLevel:ue,audioModeRecoveryInterval:me,onPlay:fe,onPause:he,onEnded:e,onError:s,onTimeUpdate:d,onDurationChange:t,onBuffering:a,onTheaterModeChange:m,onAudioModeChange:E,audioRef:b,audioSrc:R}),Be=Lt.useRef(null);Lt__default.default.useLayoutEffect(()=>{Be.current=S.isAudioMode&&R&&b.current?b.current:v.current;},[S.isAudioMode,R]),Be.current===null&&(Be.current=v.current);let[Ue,et]=Lt.useState(null);Lt.useEffect(()=>{Ze.current=z.current;},[Ze]),Lt__default.default.useImperativeHandle(n,()=>ce,[ce]);let tt=Lt.useCallback(()=>{z.current?.focus(),S.isPlaying?ce.pause():ce.play();},[S.isPlaying,ce]),Ct=Lt.useCallback(()=>{ce.toggleFullscreen();},[ce]),Rt=Lt.useCallback(Z=>{Z.preventDefault(),et({x:Z.clientX,y:Z.clientY});},[]);return jsxRuntime.jsxs("div",{ref:z,tabIndex:0,style:{position:"relative",width:"100%",backgroundColor:"#000",aspectRatio:"16 / 9",userSelect:"none",outline:"none"},className:c,"data-test":"video-player-container","data-theater":S.isTheaterMode?"true":void 0,onContextMenu:Rt,children:[jsxRuntime.jsx("video",{ref:v,poster:l,preload:u,crossOrigin:k,onClick:tt,onDoubleClick:Ct,playsInline:true,style:{width:"100%",height:"100%",display:"block",cursor:"pointer",visibility:S.isAudioMode?"hidden":"visible"},"data-test":"video-element",children:B?.map(Z=>jsxRuntime.jsx("track",{kind:"subtitles",src:Z.src,label:Z.label,srcLang:Z.srclang,default:Z.default},Z.id))}),R&&jsxRuntime.jsx("audio",{ref:b,preload:"none",style:{display:"none"},"aria-hidden":"true"}),S.isAudioMode&&jsxRuntime.jsx(Ye,{poster:g??(C?void 0:l),logo:F,audioModeFallback:C,isBuffering:S.isBuffering,onOverlayClick:tt}),p&&jsxRuntime.jsx(Fe,{videoRef:Be,playerRef:ce,playerContainerRef:z,playbackRates:N,enablePreview:w,thumbnailVtt:S.isAudioMode?void 0:V,thumbnailVttBaseUrl:A,isPlaying:S.isPlaying,volume:S.volume,isMuted:S.isMuted,playbackRate:S.playbackRate,isFullscreen:S.isFullscreen,isPictureInPicture:S.isPictureInPicture,isTheaterMode:S.isTheaterMode,isAudioMode:S.isAudioMode,showAudioButton:te??!!R,audioModeIcon:G,videoModeIcon:de,audioModeLabel:ie,videoModeLabel:se,isLive:S.isLive,qualityLevels:S.qualityLevels,currentQualityLevel:S.currentQualityLevel,showQualityMenu:I,manualQualityLevels:le,activeManualSrc:M,onManualQualityChange:ve,controlBarItems:i,autoHideControls:D}),Ue&&jsxRuntime.jsx(Ge,{x:Ue.x,y:Ue.y,isPlaying:S.isPlaying,src:o,videoRef:v,playerRef:ce,onClose:()=>et(null),contextMenuItems:y}),S.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"}),S.isBuffering&&!S.error&&!S.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"}})}),S.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:S.error.code==="MEDIA_ERR_SRC_NOT_SUPPORTED"?"Unsupported Format":S.error.code.startsWith("HLS")?"Stream Error":"Playback Error"}),jsxRuntime.jsx("p",{style:{margin:0,fontSize:13,opacity:.75},children:S.error.message})]})})]})});Tt.displayName="VideoPlayer";var rn=Tt;var on={EXTREME:100,POOR:300,FAIR:800,GOOD:1500},an={LOWEST:0,SECOND_LOWEST:1,DISABLED:-1};exports.AUDIO_BANDWIDTH_THRESHOLDS=on;exports.AUDIO_SWITCH_LEVELS=an;exports.ControlElements=ht;exports.Controls=Fe;exports.VideoPlayer=rn;exports.findThumbnailCue=We;exports.formatTime=ge;exports.getMimeType=xt;exports.isHLSUrl=Le;exports.parseThumbnailVtt=$e;//# sourceMappingURL=index.js.map
|
|
3
|
+
`),p=0;for(;p<c.length;){let v=c[p].trim();if(v.includes("-->")){let P=v.indexOf("-->"),T=ut(v.slice(0,P)),k=ut(v.slice(P+3));for(p++;p<c.length&&!c[p].trim();)p++;if(p<c.length){let u=c[p].trim(),R=u.lastIndexOf("#xywh="),g=u,A=0,N=0,H=160,V=90;if(R!==-1){g=u.slice(0,R);let S=u.slice(R+6).split(",").map(Number);A=S[0]??0,N=S[1]??0,H=S[2]??160,V=S[3]??90;}l.push({start:T,end:k,url:_t(n,g,o),x:A,y:N,w:H,h:V});}}p++;}return l}function Xe(r,n){if(!r.length)return null;let o=0,l=r.length-1;for(;o<=l;){let c=o+l>>1;if(r[c].end<=n)o=c+1;else if(r[c].start>n)l=c-1;else return r[c]}return null}var dt=Tt.memo(({videoRef:r,playerRef:n,enablePreview:o=true,thumbnailVtt:l,thumbnailVttBaseUrl:c,isAudioMode:p=false})=>{let v=Tt.useRef(null),P=Tt.useRef(null),T=Tt.useRef(null),k=Tt.useRef(null),u=Tt.useRef(null),R=Tt.useRef(null),g=Tt.useRef(null),A=Tt.useRef(null),N=Tt.useRef(null),[H,V]=Tt.useState([]),S=Tt.useRef(false),B=Tt.useRef(0),w=Tt.useRef(0),F=Tt.useRef(null),C=Tt.useRef([]),W=Tt.useRef(null);Tt.useEffect(()=>{let t=()=>{W.current=null;};return window.addEventListener("resize",t,{passive:true}),()=>window.removeEventListener("resize",t)},[]);let h=Tt.useCallback(()=>(!W.current&&v.current&&(W.current=v.current.getBoundingClientRect()),W.current),[]);Tt.useEffect(()=>{if(!l){C.current=[];return}let t=false;return fetch(l).then(a=>a.text()).then(a=>{t||(C.current=Ke(a,l,c));}).catch(()=>{t||(C.current=[]);}),()=>{t=true;}},[l]),Tt.useEffect(()=>{let t=r.current;if(!t)return;let a=()=>{let f=isFinite(t.duration)?t.duration:0,E=t.currentTime,y=f>0?E/f*100:0;P.current&&(P.current.style.width=`${y}%`),T.current&&(T.current.style.left=`${y}%`),A.current&&(A.current.style.clipPath=`inset(0 ${(100-y).toFixed(2)}% 0 0)`),v.current&&(v.current.setAttribute("aria-valuenow",String(Math.round(E))),v.current.setAttribute("aria-valuemax",String(Math.round(f))),v.current.setAttribute("aria-valuetext",ge(E)));};return t.addEventListener("timeupdate",a),t.addEventListener("durationchange",a),t.addEventListener("seeked",a),a(),()=>{t.removeEventListener("timeupdate",a),t.removeEventListener("durationchange",a),t.removeEventListener("seeked",a);}},[r,p]),Tt.useEffect(()=>{let t=r.current;if(!t)return;let a=()=>{let f=[];for(let E=0;E<t.buffered.length;E++)f.push({start:t.buffered.start(E),end:t.buffered.end(E)});if(p||V(f),N.current&&isFinite(t.duration)&&t.duration>0){let y=f.reduce((i,m)=>Math.max(i,m.end),0)/t.duration*100;N.current.style.clipPath=`inset(0 ${(100-y).toFixed(2)}% 0 0)`;}};return t.addEventListener("progress",a),()=>t.removeEventListener("progress",a)},[r,p]);let D=Tt.useCallback(()=>{S.current=true,T.current?.classList.add("dragging");},[]),J=Tt.useCallback(()=>{S.current=false,T.current?.classList.remove("dragging");},[]),me=Tt.useCallback(()=>{!o||p||(W.current=null,k.current&&(k.current.style.display="block"),R.current&&(R.current.style.display="block"));},[o,p]),se=Tt.useCallback(()=>{k.current&&(k.current.style.display="none"),R.current&&(R.current.style.display="none");},[]),le=Tt.useCallback(t=>{if(!g.current||!C.current.length)return;let a=Xe(C.current,t);if(F.current=a,!a)return;let f=g.current;f.style.backgroundImage=`url(${a.url})`,f.style.backgroundPosition=`-${a.x}px -${a.y}px`,f.style.width=`${a.w}px`,f.style.height=`${a.h}px`;},[]),_=Tt.useCallback(t=>{let a=h(),f=r.current?.duration;return !a||a.width===0||!f||!isFinite(f)?0:Math.max(0,Math.min(t-a.left,a.width))/a.width*f},[h,r]),I=Tt.useCallback(t=>{let a=h();return a?Math.max(0,Math.min(t-a.left,a.width)):0},[h]),ue=Tt.useCallback(t=>{let a=r.current;if(!a)return;let f=a.currentTime,E=isFinite(a.duration)?a.duration:0;switch(t.key){case "ArrowLeft":case "ArrowRight":{t.preventDefault(),t.nativeEvent.stopImmediatePropagation();let y=t.shiftKey?10:5;n.seek(t.key==="ArrowLeft"?Math.max(0,f-y):Math.min(E,f+y));break}case "Home":t.preventDefault(),t.nativeEvent.stopImmediatePropagation(),n.seek(0);break;case "End":E>0&&(t.preventDefault(),t.nativeEvent.stopImmediatePropagation(),n.seek(E));break}},[r,n]),Z=Tt.useCallback(t=>{let a=_(t.clientX),f=I(t.clientX);if(B.current=f,w.current=a,R.current&&(R.current.style.left=`${f}px`),u.current&&(u.current.textContent=ge(a)),le(a),k.current){let E=k.current.offsetWidth,y=h()?.width??0,i=E/2,m=Math.max(i,Math.min(f,y-i));k.current.style.left=`${m}px`;}S.current&&n.seek(a);},[n,le,_,I,h]),ce=Tt.useCallback(()=>{se(),J();},[se,J]),fe=Tt.useCallback(t=>{t.preventDefault(),D(),n.seek(_(t.clientX));},[D,_,n]),ve=Tt.useCallback(t=>{S.current||n.seek(_(t.clientX));},[_,n]);Tt.useEffect(()=>{let t=v.current;if(!t)return;let a=f=>{S.current&&f.preventDefault();};return t.addEventListener("touchmove",a,{passive:false}),()=>t.removeEventListener("touchmove",a)},[]);let he=Tt.useCallback(t=>{W.current=null,D(),n.seek(_(t.touches[0].clientX));},[D,_,n]),e=Tt.useCallback(t=>{S.current&&n.seek(_(t.touches[0].clientX));},[_,n]);Tt.useEffect(()=>{let t=()=>J();return window.addEventListener("mouseup",t),()=>window.removeEventListener("mouseup",t)},[J]);let s=Tt.useMemo(()=>{let a=[],f=3735928559,E=()=>(f^=f<<13,f^=f>>17,f^=f<<5,(f>>>0)/4294967295);for(let y=0;y<200;y++){let i=y/200*Math.PI*5,m=.15+.55*Math.abs(Math.sin(i))+.3*E();a.push(Math.max(.1,Math.min(1,m)));}return a},[]),d=Tt.useMemo(()=>{let t=r.current,a=t&&isFinite(t.duration)?t.duration:0;return a<=0||!H.length?null:H.map((f,E)=>{let y=f.start/a*100,i=(f.end-f.start)/a*100;return jsxRuntime.jsx("div",{className:"bufferedSegment",style:{left:`${y}%`,width:`${i}%`}},E)})},[H,r]);return jsxRuntime.jsxs("div",{ref:v,className:"progressContainer",onMouseMove:Z,onMouseEnter:me,onMouseLeave:ce,onMouseDown:fe,onMouseUp:J,onClick:ve,onTouchStart:he,onTouchMove:e,onTouchEnd:J,onKeyDown:ue,role:"slider","aria-label":p?"Audio progress":"Video progress","aria-valuemin":0,"aria-valuemax":0,"aria-valuenow":0,"aria-valuetext":"0:00",tabIndex:0,children:[o&&jsxRuntime.jsxs("div",{ref:k,className:"previewTooltip",style:{left:0,display:"none"},"aria-hidden":"true",children:[l&&jsxRuntime.jsx("div",{ref:g,className:"previewThumbnail"}),jsxRuntime.jsx("div",{ref:u,className:"previewTime"})]}),p?jsxRuntime.jsxs("div",{className:"rvp-waveform","aria-hidden":"true",children:[jsxRuntime.jsx("div",{className:"rvp-waveform-base",children:s.map((t,a)=>jsxRuntime.jsx("div",{className:"rvp-waveform-dot"},a))}),jsxRuntime.jsx("div",{ref:N,className:"rvp-waveform-buffered",style:{clipPath:"inset(0 100% 0 0)"},children:s.map((t,a)=>jsxRuntime.jsx("div",{className:"rvp-waveform-buffered-bar",style:{height:`${Math.round(t*100)}%`}},a))}),jsxRuntime.jsx("div",{ref:A,className:"rvp-waveform-filled",children:s.map((t,a)=>jsxRuntime.jsx("div",{className:"rvp-waveform-bar",style:{height:`${Math.round(t*100)}%`}},a))})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"progressBackground",children:[d,jsxRuntime.jsx("div",{ref:P,className:"progressFilled",style:{width:"0%"}}),o&&jsxRuntime.jsx("div",{ref:R,className:"hoverIndicator",style:{left:0,display:"none"},"aria-hidden":"true"})]}),jsxRuntime.jsx("div",{ref:T,className:"scrubHandle",style:{left:"0%"},"aria-hidden":"true"})]})]})});dt.displayName="ProgressBar";var Ve=dt;var Kt=()=>jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M20.38 8.57l-1.23 1.85a8 8 0 0 1-.22 7.58H5.07A8 8 0 0 1 15.58 6.85l1.85-1.23A10 10 0 0 0 3.35 19a2 2 0 0 0 1.72 1h13.85a2 2 0 0 0 1.74-1 10 10 0 0 0-.27-10.44zm-9.79 6.84a2 2 0 0 0 2.83 0l5.66-8.49-8.49 5.66a2 2 0 0 0 0 2.83z"})}),Xt=()=>jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z"})}),ft=()=>jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})}),vt=()=>jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"})}),Ie=()=>jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})}),ht=Tt.memo(({currentRate:r,playbackRates:n,onRateChange:o,qualityLevels:l=[],currentQualityLevel:c=-1,onQualityChange:p,showQualityMenu:v=false,manualQualityLevels:P,activeManualSrc:T,onManualQualityChange:k,isAudioMode:u=false})=>{let[R,g]=Tt.useState(false),[A,N]=Tt.useState(null),H=Tt.useRef(null),V=l.length>0&&!!p,S=!!P?.length&&!!k,B=!u&&(V||S||v);Tt.useEffect(()=>{R||N(null);},[R]),Tt.useEffect(()=>{u&&N(h=>h==="quality"?null:h);},[u]),Tt.useEffect(()=>{let h=D=>{H.current&&!H.current.contains(D.target)&&g(false);};return R&&document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[R]);let w=Tt.useMemo(()=>[...l].sort((h,D)=>D.bitrate-h.bitrate),[l]),F=r===1?"Normal":`${r}\xD7`,C=Tt.useMemo(()=>S&&T?P.find(h=>h.src===T)?.label??"Auto":V?c===-1?"Auto":l.find(h=>h.id===c)?.name??"Auto":"Auto",[S,V,T,P,l,c]),W=Tt.useMemo(()=>c===-1?null:l.find(h=>h.id===c)?.name??null,[l,c]);return jsxRuntime.jsxs("div",{ref:H,className:"settingsContainer",children:[jsxRuntime.jsx("button",{onClick:()=>g(h=>!h),className:"controlButton","aria-label":"Settings",title:"Settings","aria-expanded":R,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"})})}),R&&jsxRuntime.jsxs("div",{className:"settingsDropdown",role:"menu",children:[A===null&&jsxRuntime.jsxs("div",{className:"settingsMainPanel",children:[jsxRuntime.jsxs("button",{className:"settingsRow",onClick:()=>N("speed"),children:[jsxRuntime.jsx("span",{className:"settingsRowIcon",children:jsxRuntime.jsx(Kt,{})}),jsxRuntime.jsx("span",{className:"settingsRowLabel",children:"Playback speed"}),jsxRuntime.jsx("span",{className:"settingsRowValue",children:F}),jsxRuntime.jsx("span",{className:"settingsRowChevron",children:jsxRuntime.jsx(ft,{})})]}),B&&jsxRuntime.jsxs("button",{className:"settingsRow",onClick:()=>N("quality"),children:[jsxRuntime.jsx("span",{className:"settingsRowIcon",children:jsxRuntime.jsx(Xt,{})}),jsxRuntime.jsx("span",{className:"settingsRowLabel",children:"Quality"}),jsxRuntime.jsx("span",{className:"settingsRowValue",children:C}),jsxRuntime.jsx("span",{className:"settingsRowChevron",children:jsxRuntime.jsx(ft,{})})]})]}),A==="speed"&&jsxRuntime.jsxs("div",{className:"settingsSubPanel",children:[jsxRuntime.jsxs("button",{className:"settingsBackRow",onClick:()=>N(null),children:[jsxRuntime.jsx(vt,{}),jsxRuntime.jsx("span",{children:"Playback speed"})]}),jsxRuntime.jsx("div",{className:"settingsDivider"}),n.map(h=>{let D=r===h;return jsxRuntime.jsxs("button",{onClick:()=>{o(h),N(null);},className:`settingsOption${D?" active":""}`,role:"menuitemradio","aria-checked":D,children:[jsxRuntime.jsx("span",{className:"settingsOptionCheck",children:D&&jsxRuntime.jsx(Ie,{})}),h===1?"Normal":`${h}\xD7`]},h)})]}),A==="quality"&&jsxRuntime.jsxs("div",{className:"settingsSubPanel",children:[jsxRuntime.jsxs("button",{className:"settingsBackRow",onClick:()=>N(null),children:[jsxRuntime.jsx(vt,{}),jsxRuntime.jsx("span",{children:"Quality"})]}),jsxRuntime.jsx("div",{className:"settingsDivider"}),S&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[P.map(h=>{let D=T===h.src;return jsxRuntime.jsxs("button",{onClick:()=>{k(h.src),N(null);},className:`settingsOption${D?" active":""}`,role:"menuitemradio","aria-checked":D,children:[jsxRuntime.jsx("span",{className:"settingsOptionCheck",children:D&&jsxRuntime.jsx(Ie,{})}),h.label]},h.src)}),V&&jsxRuntime.jsx("div",{className:"settingsDivider"})]}),V&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("button",{onClick:()=>{p(-1),N(null);},className:`settingsOption${c===-1?" active":""}`,role:"menuitemradio","aria-checked":c===-1,children:[jsxRuntime.jsx("span",{className:"settingsOptionCheck",children:c===-1&&jsxRuntime.jsx(Ie,{})}),jsxRuntime.jsxs("span",{children:["Auto",W&&jsxRuntime.jsxs("span",{className:"settingsOptionBadge",children:[" (",W,")"]})]})]}),w.map(h=>{let D=c===h.id;return jsxRuntime.jsxs("button",{onClick:()=>{p(h.id),N(null);},className:`settingsOption${D?" active":""}`,role:"menuitemradio","aria-checked":D,children:[jsxRuntime.jsx("span",{className:"settingsOptionCheck",children:D&&jsxRuntime.jsx(Ie,{})}),jsxRuntime.jsx("span",{style:{flex:1},children:h.name}),h.bitrate>0&&jsxRuntime.jsxs("span",{className:"settingsOptionBadge",children:[Math.round(h.bitrate/1e3)," kbps"]})]},h.id)})]})]})]})]})});ht.displayName="SettingsMenu";var Oe=ht;var bt=Tt.memo(({videoRef:r,isLive:n=false,isAudioMode:o=false})=>{let l=Tt.useRef(null),c=Tt.useRef(null);return Tt.useEffect(()=>{let p=r.current;if(!p)return;let v=()=>{l.current&&(l.current.textContent=ge(p.currentTime));},P=()=>{if(c.current){let T=isFinite(p.duration)?p.duration:0;c.current.textContent=` / ${ge(T)}`;}};return p.addEventListener("timeupdate",v),p.addEventListener("durationchange",P),p.addEventListener("seeked",v),v(),P(),()=>{p.removeEventListener("timeupdate",v),p.removeEventListener("durationchange",P),p.removeEventListener("seeked",v);}},[r,n,o]),n?jsxRuntime.jsx("span",{className:"timeDisplay",style:{opacity:.7},children:jsxRuntime.jsx("span",{ref:l,children:"0:00"})}):jsxRuntime.jsxs("span",{className:"timeDisplay",children:[jsxRuntime.jsx("span",{ref:l,children:"0:00"}),jsxRuntime.jsx("span",{ref:c,style:{opacity:.6},children:" / 0:00"})]})});bt.displayName="TimeDisplay";var _e=bt;var re={PlayButton:Ce,PauseButton:Re,FullscreenButton:we,PiPButton:ke,TheaterButton:xe,VolumeControl:He,ProgressBar:Ve,SettingsMenu:Oe,TimeDisplay:_e};var ze=Tt.memo(function({videoRef:n,playerRef:o,playerContainerRef:l,playbackRates:c,enablePreview:p,thumbnailVtt:v,thumbnailVttBaseUrl:P,isPlaying:T,volume:k,isMuted:u,playbackRate:R,isFullscreen:g,isPictureInPicture:A,isTheaterMode:N,isAudioMode:H,showAudioButton:V,audioModeIcon:S,videoModeIcon:B,audioModeLabel:w,videoModeLabel:F,isLive:C,qualityLevels:W,currentQualityLevel:h,showQualityMenu:D,manualQualityLevels:J,activeManualSrc:me,onManualQualityChange:se,controlBarItems:le,autoHideControls:_}){let I=Tt.useRef(null),[ue,Z]=Tt.useState(true),ce=Tt.useRef({isPlaying:T,volume:k,isMuted:u,isLive:C});ce.current={isPlaying:T,volume:k,isMuted:u,isLive:C},Tt.useEffect(()=>{if(H||!_){Z(true),I.current&&clearTimeout(I.current);return}if(!T){Z(true),I.current&&clearTimeout(I.current);return}let i=l.current;if(!i)return;let m=()=>{Z(true),I.current&&clearTimeout(I.current),I.current=setTimeout(()=>Z(false),3e3);},b=()=>{I.current&&clearTimeout(I.current),Z(false);};return i.addEventListener("mousemove",m),i.addEventListener("mouseenter",m),i.addEventListener("mouseleave",b),i.addEventListener("touchstart",m,{passive:true}),Z(false),()=>{i.removeEventListener("mousemove",m),i.removeEventListener("mouseenter",m),i.removeEventListener("mouseleave",b),i.removeEventListener("touchstart",m),I.current&&clearTimeout(I.current);}},[T,H,_,l]),Tt.useEffect(()=>{let i=m=>{if(!l.current?.contains(document.activeElement))return;let b=m.target;if(b.tagName==="INPUT"||b.tagName==="TEXTAREA"||b.isContentEditable)return;let{isPlaying:z,volume:K,isLive:ne}=ce.current,M=n.current?.currentTime??0,X=n.current?.duration??0;switch(m.code){case "Space":case "KeyK":m.preventDefault(),z?o.pause():o.play();break;case "ArrowLeft":m.preventDefault(),o.seek(Math.max(0,M-5));break;case "ArrowRight":m.preventDefault(),o.seek(Math.min(X||1/0,M+5));break;case "ArrowUp":m.preventDefault(),o.setVolume(Math.min(1,K+.1));break;case "ArrowDown":m.preventDefault(),o.setVolume(Math.max(0,K-.1));break;case "KeyM":m.preventDefault(),o.toggleMute();break;case "KeyF":m.preventDefault(),o.toggleFullscreen();break;case "KeyP":m.preventDefault(),o.togglePictureInPicture();break;case "KeyT":m.preventDefault(),o.toggleTheaterMode();break;case "KeyL":m.preventDefault(),ne&&o.seekToLive();break;case "Digit0":case "Digit1":case "Digit2":case "Digit3":case "Digit4":case "Digit5":case "Digit6":case "Digit7":case "Digit8":case "Digit9":{m.preventDefault();let ae=Number(m.code.replace("Digit",""))*10;o.seek(X/100*ae);break}}};return window.addEventListener("keydown",i),()=>window.removeEventListener("keydown",i)},[o,l,n]);let fe=Tt.useCallback(()=>o.play(),[o]),ve=Tt.useCallback(()=>o.pause(),[o]),he=Tt.useCallback(i=>o.setVolume(i),[o]),e=Tt.useCallback(()=>o.toggleMute(),[o]),s=Tt.useCallback(i=>o.setPlaybackRate(i),[o]),d=Tt.useCallback(i=>o.setQualityLevel(i),[o]),t=Tt.useCallback(()=>o.togglePictureInPicture(),[o]),a=Tt.useCallback(()=>o.toggleTheaterMode(),[o]),f=Tt.useCallback(()=>o.toggleAudioMode(),[o]),E=Tt.useCallback(()=>o.toggleFullscreen(),[o]),y=Tt.useCallback(()=>o.seekToLive(),[o]);return jsxRuntime.jsx("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",justifyContent:"flex-end",opacity:ue?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:ue?"auto":"none"},role:"region","aria-label":"Video player controls",children:[jsxRuntime.jsx(re.ProgressBar,{videoRef:n,playerRef:o,enablePreview:p,thumbnailVtt:v,thumbnailVttBaseUrl:P,isAudioMode:H}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginTop:4},children:[T?jsxRuntime.jsx(re.PauseButton,{onClick:ve}):jsxRuntime.jsx(re.PlayButton,{onClick:fe}),jsxRuntime.jsx(re.VolumeControl,{volume:k,isMuted:u,onVolumeChange:he,onToggleMute:e}),jsxRuntime.jsx(re.TimeDisplay,{videoRef:n,isLive:C,isAudioMode:H}),jsxRuntime.jsx("div",{style:{flex:1}}),C&&jsxRuntime.jsx(Pt,{onClick:y}),V&&jsxRuntime.jsx(Et,{onClick:f,isAudioMode:H,audioModeIcon:S,videoModeIcon:B,audioModeLabel:w,videoModeLabel:F}),jsxRuntime.jsx(re.SettingsMenu,{currentRate:R,playbackRates:c,onRateChange:s,qualityLevels:W,currentQualityLevel:h,onQualityChange:d,showQualityMenu:D,manualQualityLevels:J,activeManualSrc:me,onManualQualityChange:se,isAudioMode:H}),le?.map(i=>jsxRuntime.jsx("button",{className:"controlButton","aria-label":i.label,title:i.title??i.label,onClick:i.onClick,children:i.icon},i.key)),jsxRuntime.jsx(re.PiPButton,{onClick:t,isPiP:A}),jsxRuntime.jsx(re.TheaterButton,{onClick:a,isTheater:N}),jsxRuntime.jsx(re.FullscreenButton,{onClick:E,isFullscreen:g})]})]})})});ze.displayName="Controls";var Et=Tt.memo(({onClick:r,isAudioMode:n,audioModeIcon:o,videoModeIcon:l,audioModeLabel:c,videoModeLabel:p})=>{let v=n?p??"Video":c??"Audio";return jsxRuntime.jsxs("button",{onClick:r,className:"rvp-audio-toggle-btn","aria-label":v,title:v,"aria-pressed":n,children:[n?l??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"})}),v]})});Et.displayName="AudioModeButton";var Pt=Tt.memo(({onClick:r})=>jsxRuntime.jsx("button",{onClick:r,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"}));Pt.displayName="GoLiveButton";var Ze=Tt.memo(({x:r,y:n,isPlaying:o,src:l,videoRef:c,playerRef:p,onClose:v,contextMenuItems:P})=>{let T=Tt.useRef(null),[k,u]=Tt.useState(()=>c.current?.loop??false),R=Math.min(r,window.innerWidth-220),g=Math.min(n,window.innerHeight-290);Tt.useEffect(()=>{let B=C=>{T.current&&!T.current.contains(C.target)&&v();},w=C=>{C.key==="Escape"&&v();},F=()=>v();return document.addEventListener("mousedown",B),document.addEventListener("keydown",w),window.addEventListener("scroll",F,true),()=>{document.removeEventListener("mousedown",B),document.removeEventListener("keydown",w),window.removeEventListener("scroll",F,true);}},[v]);let A=Tt.useCallback(()=>{o?p.pause():p.play(),v();},[o,p,v]),N=Tt.useCallback(()=>{let B=c.current;if(!B)return;let w=!k;B.loop=w,u(w);},[c,k]),H=Tt.useCallback(async()=>{try{await navigator.clipboard.writeText(l);}catch{}v();},[l,v]),V=Tt.useCallback(async()=>{let B=Math.floor(c.current?.currentTime??0);try{await navigator.clipboard.writeText(`${l}?t=${B}`);}catch{}v();},[l,c,v]),S=Tt.useCallback(()=>{p.togglePictureInPicture(),v();},[p,v]);return jsxRuntime.jsxs("div",{ref:T,className:"contextMenu",style:{left:R,top:g},children:[jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:A,children:o?"Pause":"Play"}),jsxRuntime.jsxs("button",{className:"contextMenuItem",onClick:N,children:[jsxRuntime.jsx("span",{children:"Loop"}),k&&jsxRuntime.jsx("span",{className:"contextMenuCheck",children:"\u2713"})]}),jsxRuntime.jsx("div",{className:"contextMenuDivider"}),jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:H,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:S,children:"Picture-in-Picture"}),P&&P.length>0&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:"contextMenuDivider"}),P.map((B,w)=>jsxRuntime.jsx("button",{className:"contextMenuItem",onClick:()=>{B.onClick(),v();},children:B.label},w))]})]})});Ze.displayName="ContextMenu";var et=Tt.memo(function({poster:n,logo:o,audioModeFallback:l,isBuffering:c=false,onOverlayClick:p}){return jsxRuntime.jsxs("div",{className:"rvp-audio-overlay",onClick:p,"data-test":"audio-mode-overlay",children:[n?jsxRuntime.jsx("div",{className:"rvp-audio-artwork-container",children:jsxRuntime.jsx("img",{src:n,alt:"Artwork",className:"rvp-audio-artwork",draggable:false})}):l?jsxRuntime.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center"},children:l}):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"}),c?jsxRuntime.jsx("div",{className:"rvp-audio-buffering-overlay","aria-label":"Buffering",children:jsxRuntime.jsx("div",{className:"rvp-audio-spinner"})}):null]})});et.displayName="AudioModeOverlay";var Rt=Tt.forwardRef((r,n)=>{let{src:o,poster:l,className:c,controls:p=true,options:v={}}=r,{autoplay:P=false,muted:T=false,loop:k=false,preload:u="metadata",playbackRates:R=[.25,.5,.75,1,1.25,1.5,1.75,2],enableHLS:g=true,enablePreview:A=true,thumbnailVtt:N,thumbnailVttBaseUrl:H,hlsConfig:V,autoHideControls:S=true,subtitles:B,crossOrigin:w,logo:F,audioModeFallback:C,audioPoster:W,audioSrc:h,showAudioButton:D,audioModeIcon:J,videoModeIcon:me,audioModeLabel:se,videoModeLabel:le,defaultAudioMode:_,showQualityMenu:I,manualQualityLevels:ue,audioBandwidthThreshold:Z,audioModeSwitchLevel:ce,audioModeRecoveryInterval:fe,onPlay:ve,onPause:he,onEnded:e,onError:s,onTimeUpdate:d,onDurationChange:t,onBuffering:a,onTheaterModeChange:f,onAudioModeChange:E,contextMenuItems:y,controlBarItems:i}=v,m=Tt.useRef(null),b=Tt.useRef(null),z=Tt.useRef(null),[K,ne]=Tt.useState(void 0),[M,X]=Tt.useState(void 0),ae=Tt.useRef(null);Tt.useEffect(()=>{ne(void 0),X(void 0);},[o]),Tt.useEffect(()=>{let Q=m.current;if(!Q)return;let be=()=>{let We=ae.current;We&&(ae.current=null,Q.currentTime=We.time,We.playing&&Q.play().catch(()=>{}));};return Q.addEventListener("loadedmetadata",be),()=>Q.removeEventListener("loadedmetadata",be)},[m]);let Ue=Tt.useCallback(Q=>{let be=m.current;ae.current={time:be?.currentTime??0,playing:be?!be.paused:false},ne(Q),X(Q);},[m]),wt=K??o,{state:x,ref:de,fullscreenContainerRef:rt}=st(m,wt,{autoplay:P,muted:T,loop:k,playbackRates:R,enableHLS:g,hlsConfig:V,defaultAudioMode:_,audioBandwidthThreshold:Z,audioModeSwitchLevel:ce,audioModeRecoveryInterval:fe,onPlay:ve,onPause:he,onEnded:e,onError:s,onTimeUpdate:d,onDurationChange:t,onBuffering:a,onTheaterModeChange:f,onAudioModeChange:E,audioRef:b,audioSrc:h}),De=Tt.useRef(null);Tt__default.default.useLayoutEffect(()=>{De.current=x.isAudioMode&&h&&b.current?b.current:m.current;},[x.isAudioMode,h]),De.current===null&&(De.current=m.current);let[$e,ot]=Tt.useState(null);Tt.useEffect(()=>{rt.current=z.current;},[rt]),Tt__default.default.useImperativeHandle(n,()=>de,[de]);let at=Tt.useCallback(()=>{z.current?.focus(),x.isPlaying?de.pause():de.play();},[x.isPlaying,de]),kt=Tt.useCallback(()=>{de.toggleFullscreen();},[de]),xt=Tt.useCallback(Q=>{Q.preventDefault(),ot({x:Q.clientX,y:Q.clientY});},[]);return jsxRuntime.jsxs("div",{ref:z,tabIndex:0,style:{position:"relative",width:"100%",backgroundColor:"#000",aspectRatio:"16 / 9",userSelect:"none",outline:"none"},className:c,"data-test":"video-player-container","data-theater":x.isTheaterMode?"true":void 0,onContextMenu:xt,children:[jsxRuntime.jsx("video",{ref:m,poster:l,preload:u,crossOrigin:w,onClick:at,onDoubleClick:kt,playsInline:true,style:{width:"100%",height:"100%",display:"block",cursor:"pointer",visibility:x.isAudioMode?"hidden":"visible"},"data-test":"video-element",children:B?.map(Q=>jsxRuntime.jsx("track",{kind:"subtitles",src:Q.src,label:Q.label,srcLang:Q.srclang,default:Q.default},Q.id))}),h&&jsxRuntime.jsx("audio",{ref:b,preload:"none",style:{display:"none"},"aria-hidden":"true"}),x.isAudioMode&&jsxRuntime.jsx(et,{poster:W??(C?void 0:l),logo:F,audioModeFallback:C,isBuffering:x.isBuffering,onOverlayClick:at}),p&&jsxRuntime.jsx(ze,{videoRef:De,playerRef:de,playerContainerRef:z,playbackRates:R,enablePreview:A,thumbnailVtt:x.isAudioMode?void 0:N,thumbnailVttBaseUrl:H,isPlaying:x.isPlaying,volume:x.volume,isMuted:x.isMuted,playbackRate:x.playbackRate,isFullscreen:x.isFullscreen,isPictureInPicture:x.isPictureInPicture,isTheaterMode:x.isTheaterMode,isAudioMode:x.isAudioMode,showAudioButton:D??!!h,audioModeIcon:J,videoModeIcon:me,audioModeLabel:se,videoModeLabel:le,isLive:x.isLive,qualityLevels:x.qualityLevels,currentQualityLevel:x.currentQualityLevel,showQualityMenu:I,manualQualityLevels:ue,activeManualSrc:M,onManualQualityChange:Ue,controlBarItems:i,autoHideControls:S}),$e&&jsxRuntime.jsx(Ze,{x:$e.x,y:$e.y,isPlaying:x.isPlaying,src:o,videoRef:m,playerRef:de,onClose:()=>ot(null),contextMenuItems:y}),x.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"}),x.isBuffering&&!x.error&&!x.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"}})}),x.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:x.error.code==="MEDIA_ERR_SRC_NOT_SUPPORTED"?"Unsupported Format":x.error.code.startsWith("HLS")?"Stream Error":"Playback Error"}),jsxRuntime.jsx("p",{style:{margin:0,fontSize:13,opacity:.75},children:x.error.message})]})})]})});Rt.displayName="VideoPlayer";var sn=Rt;var ln={EXTREME:100,POOR:300,FAIR:800,GOOD:1500},un={LOWEST:0,SECOND_LOWEST:1,DISABLED:-1};exports.AUDIO_BANDWIDTH_THRESHOLDS=ln;exports.AUDIO_SWITCH_LEVELS=un;exports.ControlElements=yt;exports.Controls=ze;exports.VideoPlayer=sn;exports.findThumbnailCue=Xe;exports.formatTime=ge;exports.getMimeType=Nt;exports.isHLSUrl=Ee;exports.parseThumbnailVtt=Ke;//# sourceMappingURL=index.js.map
|
|
4
4
|
//# sourceMappingURL=index.js.map
|