@frameset/plex-player 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -4
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react");const r=e=>{if(!isFinite(e)||isNaN(e))return"0:00";const t=Math.floor(e/3600),r=Math.floor(e%3600/60),s=Math.floor(e%60);return t>0?`${t}:${r.toString().padStart(2,"0")}:${s.toString().padStart(2,"0")}`:`${r}:${s.toString().padStart(2,"0")}`},s=(e,t)=>0===t?0:Math.min(100,Math.max(0,e/t*100)),n=(e,t,r)=>Math.min(r,Math.max(t,e)),l=()=>!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled),a=()=>"pictureInPictureEnabled"in document&&document.pictureInPictureEnabled,i=()=>document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||null,c=async e=>{e.requestFullscreen?await e.requestFullscreen():e.webkitRequestFullscreen?await e.webkitRequestFullscreen():e.mozRequestFullScreen?await e.mozRequestFullScreen():e.msRequestFullscreen&&await e.msRequestFullscreen()},o=async()=>{document.exitFullscreen?await document.exitFullscreen():document.webkitExitFullscreen?await document.webkitExitFullscreen():document.mozCancelFullScreen?await document.mozCancelFullScreen():document.msExitFullscreen&&await document.msExitFullscreen()},u=e=>{const t=e.split("?")[0].split(".").pop()?.toLowerCase();return{mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",ogv:"video/ogg",m3u8:"application/x-mpegURL",mpd:"application/dash+xml",mov:"video/quicktime",avi:"video/x-msvideo",mkv:"video/x-matroska"}[t||""]||"video/mp4"},d=e=>{if(0===e.buffered.length)return 0;const t=e.currentTime;for(let r=0;r<e.buffered.length;r++)if(e.buffered.start(r)<=t&&e.buffered.end(r)>=t)return e.buffered.end(r);return e.buffered.end(e.buffered.length-1)},p={isPlaying:!1,isPaused:!0,isEnded:!1,isBuffering:!1,isSeeking:!1,isFullscreen:!1,isPip:!1,isMuted:!1,isAdPlaying:!1,volume:1,currentTime:0,duration:0,buffered:0,playbackRate:1,currentQuality:null,error:null},m=(e={})=>{const{autoPlay:r=!1,muted:s=!1,loop:n=!1,volume:l=1,playbackRate:u=1}=e,m=t.useRef(null),h=t.useRef(null),[v,x]=t.useState({...p,volume:l,isMuted:s,playbackRate:u}),g=t.useCallback(e=>{x(t=>({...t,...e}))},[]),y=t.useCallback(async()=>{const e=m.current;if(e)try{await e.play(),g({isPlaying:!0,isPaused:!1,isEnded:!1})}catch(e){}},[g]),f=t.useCallback(()=>{const e=m.current;e&&(e.pause(),g({isPlaying:!1,isPaused:!0}))},[g]),w=t.useCallback(()=>{v.isPlaying?f():y()},[v.isPlaying,y,f]),k=t.useCallback(e=>{const t=m.current;if(!t)return;const r=Math.max(0,Math.min(e,t.duration||0));t.currentTime=r,g({currentTime:r})},[g]),b=t.useCallback(e=>{const t=m.current;if(!t)return;const r=Math.max(0,Math.min(1,e));t.volume=r,t.muted=0===r,g({volume:r,isMuted:0===r})},[g]),j=t.useCallback(()=>{const e=m.current;e&&(e.muted=!e.muted,g({isMuted:e.muted}))},[g]),C=t.useCallback(e=>{const t=m.current;t&&(t.playbackRate=e,g({playbackRate:e}))},[g]),P=t.useCallback(async()=>{const e=h.current;if(e)try{await c(e),g({isFullscreen:!0})}catch(e){}},[g]),E=t.useCallback(async()=>{try{await o(),g({isFullscreen:!1})}catch(e){}},[g]),_=t.useCallback(async()=>{v.isFullscreen?await E():await P()},[v.isFullscreen,P,E]),N=t.useCallback(async()=>{const e=m.current;if(e&&a())try{await e.requestPictureInPicture(),g({isPip:!0})}catch(e){}},[g]),S=t.useCallback(async()=>{if(document.pictureInPictureElement)try{await document.exitPictureInPicture(),g({isPip:!1})}catch(e){}},[g]),M=t.useCallback(async()=>{v.isPip?await S():await N()},[v.isPip,N,S]);return t.useEffect(()=>{const e=m.current;if(!e)return;e.muted=s,e.volume=l,e.playbackRate=u,e.loop=n;const t={loadedmetadata:()=>{g({duration:e.duration})},timeupdate:()=>{g({currentTime:e.currentTime,buffered:d(e)})},play:()=>{g({isPlaying:!0,isPaused:!1,isEnded:!1})},pause:()=>{g({isPlaying:!1,isPaused:!0})},ended:()=>{g({isPlaying:!1,isPaused:!0,isEnded:!0})},waiting:()=>{g({isBuffering:!0})},canplay:()=>{g({isBuffering:!1})},seeking:()=>{g({isSeeking:!0})},seeked:()=>{g({isSeeking:!1})},volumechange:()=>{g({volume:e.volume,isMuted:e.muted})},ratechange:()=>{g({playbackRate:e.playbackRate})},error:()=>{g({error:e.error})},enterpictureinpicture:()=>{g({isPip:!0})},leavepictureinpicture:()=>{g({isPip:!1})}};return Object.entries(t).forEach(([t,r])=>{e.addEventListener(t,r)}),r&&y(),()=>{Object.entries(t).forEach(([t,r])=>{e.removeEventListener(t,r)})}},[r,s,n,l,u,y,g]),t.useEffect(()=>{const e=()=>{const e=!!i();g({isFullscreen:e})};return document.addEventListener("fullscreenchange",e),document.addEventListener("webkitfullscreenchange",e),document.addEventListener("mozfullscreenchange",e),document.addEventListener("MSFullscreenChange",e),()=>{document.removeEventListener("fullscreenchange",e),document.removeEventListener("webkitfullscreenchange",e),document.removeEventListener("mozfullscreenchange",e),document.removeEventListener("MSFullscreenChange",e)}},[g]),{state:v,videoRef:m,containerRef:h,play:y,pause:f,togglePlay:w,seek:k,setVolume:b,toggleMute:j,setPlaybackRate:C,enterFullscreen:P,exitFullscreen:E,toggleFullscreen:_,enterPip:N,exitPip:S,togglePip:M}},h={play:"Space",mute:"m",fullscreen:"f",pip:"p",seekForward:"ArrowRight",seekBackward:"ArrowLeft",volumeUp:"ArrowUp",volumeDown:"ArrowDown"},v=({enabled:e,hotkeys:r={},onPlay:s,onMute:n,onFullscreen:l,onPip:a,onSeek:i,onVolume:c,containerRef:o})=>{const u={...h,...r},d=t.useCallback(t=>{if(!e)return;const r=t.target;if("INPUT"===r.tagName||"TEXTAREA"===r.tagName||r.isContentEditable)return;const d=o.current;if(!d||!d.contains(document.activeElement))return;switch(t.key){case u.play:case" ":t.preventDefault(),s();break;case u.mute:case"M":t.preventDefault(),n();break;case u.fullscreen:case"F":t.preventDefault(),l();break;case u.pip:case"P":t.preventDefault(),a();break;case u.seekForward:t.preventDefault(),i(t.shiftKey?30:10);break;case u.seekBackward:t.preventDefault(),i(t.shiftKey?-30:-10);break;case u.volumeUp:t.preventDefault(),c(.1);break;case u.volumeDown:t.preventDefault(),c(-.1);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":t.preventDefault(),i(-1/0)}},[e,u,s,n,l,a,i,c,o]);t.useEffect(()=>{if(e)return document.addEventListener("keydown",d),()=>{document.removeEventListener("keydown",d)}},[e,d])},x=e=>{const t=(new DOMParser).parseFromString(e,"text/xml");if(t.querySelector("parsererror"))return{ads:[],error:"Failed to parse VAST XML"};const r=[];return t.querySelectorAll("Ad").forEach(e=>{const t=e.querySelector("InLine");if(!t)return;const s=e.getAttribute("id")||"",n=t.querySelector("AdTitle")?.textContent||"",l=t.querySelector("Description")?.textContent||void 0,a=t.querySelectorAll("Creative");let i,c,o=0;const u=[],d=[],p={};a.forEach(e=>{const t=e.querySelector("Linear");if(!t)return;const r=t.querySelector("Duration")?.textContent;r&&(o=g(r));const s=t.getAttribute("skipoffset");s&&(i=g(s));t.querySelectorAll("MediaFile").forEach(e=>{const t=e.textContent?.trim();t&&d.push({url:t,type:e.getAttribute("type")||"video/mp4",width:parseInt(e.getAttribute("width")||"0",10),height:parseInt(e.getAttribute("height")||"0",10),bitrate:parseInt(e.getAttribute("bitrate")||"0",10)||void 0})});const n=t.querySelector("VideoClicks");n&&(c=n.querySelector("ClickThrough")?.textContent?.trim(),n.querySelectorAll("ClickTracking").forEach(e=>{const t=e.textContent?.trim();t&&u.push(t)}));t.querySelectorAll("TrackingEvents Tracking").forEach(e=>{const t=e.getAttribute("event"),r=e.textContent?.trim();t&&r&&(p[t]||(p[t]=[]),p[t].push(r))})});const m=[];t.querySelectorAll("Impression").forEach(e=>{const t=e.textContent?.trim();t&&m.push(t)}),d.length>0&&r.push({id:s,title:n,description:l,duration:o,skipOffset:i,clickThrough:c,clickTracking:u,impressionUrls:m,mediaFiles:d,trackingEvents:p})}),{ads:r}},g=e=>{if(e.includes("%"))return-1;const t=e.split(":");if(3!==t.length)return 0;return 3600*parseInt(t[0],10)+60*parseInt(t[1],10)+parseFloat(t[2])},y=async e=>{try{const t=await fetch(e.url,{method:"GET",headers:{Accept:"application/xml"}});if(!t.ok)return null;const r=await t.text(),s=x(r);if(s.error||0===s.ads.length)return null;const n=s.ads[0];return void 0!==e.skipDelay&&void 0===n.skipOffset&&(n.skipOffset=e.skipDelay),n}catch(e){return null}},f=e=>{if(0===e.length)return null;const t=document.createElement("video"),r=e.filter(e=>""!==t.canPlayType(e.type));if(0===r.length)return null;r.sort((e,t)=>{const r=e.width*e.height,s=t.width*t.height;return r!==s?s-r:(t.bitrate||0)-(e.bitrate||0)});return/Android|iPhone|iPad|iPod/i.test(navigator.userAgent)&&r.length>1?r[r.length-1]:r[0]},w=e=>{(new Image).src=e},k=e=>{e.forEach(w)},b=e=>({id:e.id,title:e.title,duration:e.duration,skipOffset:e.skipOffset,clickThrough:e.clickThrough}),j=({vastConfig:e,videoRef:r,onAdStart:s,onAdEnd:n,onAdSkip:l,onAdError:a})=>{const[i,c]=t.useState(!1),[o,u]=t.useState(null),[d,p]=t.useState(0),[m,h]=t.useState(!1),v=t.useRef(null),x=t.useRef(""),g=t.useRef(0),w=t.useRef(new Set),j=t.useRef(null),C=Array.isArray(e)?e:e?[e]:[],P=t.useCallback(async e=>{const t=r.current;if(t&&!i)try{const r=await y(e);if(!r)return void a?.(new Error("Failed to fetch VAST ad"));const n=f(r.mediaFiles);if(!n)return void a?.(new Error("No compatible media file found"));x.current=t.currentSrc,g.current=t.currentTime,k(r.impressionUrls),v.current=r,u(b(r)),c(!0),p(r.duration),h(void 0===r.skipOffset||0===r.skipOffset),t.src=n.url,t.currentTime=0,await t.play(),r.trackingEvents.start&&k(r.trackingEvents.start),s?.(b(r)),j.current=window.setInterval(()=>{const e=Math.max(0,r.duration-t.currentTime);p(e),r.skipOffset&&t.currentTime>=r.skipOffset&&h(!0);const s=t.currentTime/r.duration*100;s>=25&&r.trackingEvents.firstQuartile&&k(r.trackingEvents.firstQuartile),s>=50&&r.trackingEvents.midpoint&&k(r.trackingEvents.midpoint),s>=75&&r.trackingEvents.thirdQuartile&&k(r.trackingEvents.thirdQuartile)},250);const l=()=>{r.trackingEvents.complete&&k(r.trackingEvents.complete),E()};t.addEventListener("ended",l,{once:!0})}catch(e){a?.(e instanceof Error?e:new Error("Ad playback failed")),E()}},[r,i,s,a]),E=t.useCallback(()=>{const e=r.current;e&&(j.current&&(clearInterval(j.current),j.current=null),x.current&&(e.src=x.current,e.currentTime=g.current,e.play().catch(()=>{})),c(!1),u(null),p(0),h(!1),v.current=null,n?.())},[r,n]),_=t.useCallback(()=>{if(!m||!v.current)return;const e=v.current;e.trackingEvents.skip&&k(e.trackingEvents.skip),l?.(),E()},[m,E,l]),N=t.useCallback(()=>{if(!v.current)return;const e=v.current;e.clickThrough&&window.open(e.clickThrough,"_blank"),e.clickTracking&&k(e.clickTracking)},[]),S=t.useCallback((e,t)=>{i||0===C.length||C.forEach(r=>{const s=r.position||"preroll",n=`${s}-${r.midrollTime||0}`;if(w.current.has(n))return;let l=!1;switch(s){case"preroll":l=0===e;break;case"midroll":r.midrollTime&&e>=r.midrollTime&&(l=!0);break;case"postroll":l=e>=t-.5}l&&(w.current.add(n),P(r))})},[C,i,P]);return t.useEffect(()=>()=>{j.current&&clearInterval(j.current)},[]),{isAdPlaying:i,currentAd:o,adTimeRemaining:d,canSkip:m,skipAd:_,handleAdClick:N,checkForAd:S}},C=({currentTime:l,duration:a,buffered:i,onSeek:c,thumbnailPreview:o,disabled:u=!1})=>{const d=t.useRef(null),[p,m]=t.useState(!1),[h,v]=t.useState(null),[x,g]=t.useState(0),y=s(l,a),f=s(i,a),w=t.useCallback(e=>{if(!d.current)return 0;const t=d.current.getBoundingClientRect();return n((e-t.left)/t.width,0,1)*a},[a]),k=t.useCallback(e=>{if(!d.current)return;const t=d.current.getBoundingClientRect(),r="clientX"in e?e.clientX:0,s=n(r-t.left,0,t.width),l=w(r);g(s),v(l),p&&c(l)},[p,w,c]),b=t.useCallback(e=>{if(u)return;e.preventDefault(),m(!0);const t=w(e.clientX);c(t)},[u,w,c]),j=t.useCallback(()=>{m(!1)},[]),C=t.useCallback(e=>{const t=w(e.clientX);v(t)},[w]),E=t.useCallback(()=>{v(null)},[]);t.useEffect(()=>{if(p){const e=e=>k(e);return window.addEventListener("mousemove",e),window.addEventListener("mouseup",j),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",j)}}},[p,k,j]);const _=t.useCallback(e=>{if(u)return;e.preventDefault();const t=e.touches[0],r=w(t.clientX);m(!0),c(r)},[u,w,c]),N=t.useCallback(e=>{if(!p)return;const t=e.touches[0],r=w(t.clientX);c(r)},[p,w,c]),S=t.useCallback(()=>{m(!1)},[]);return e.jsxs("div",{ref:d,className:"plex-video-player__progress-container",onMouseDown:b,onMouseEnter:C,onMouseLeave:E,onMouseMove:e=>k(e.nativeEvent),onTouchStart:_,onTouchMove:N,onTouchEnd:S,role:"slider","aria-label":"Video progress","aria-valuemin":0,"aria-valuemax":a,"aria-valuenow":l,"aria-valuetext":r(l),tabIndex:0,children:[e.jsxs("div",{className:"plex-video-player__progress",children:[e.jsx("div",{className:"plex-video-player__progress-buffered",style:{width:`${f}%`}}),e.jsx("div",{className:"plex-video-player__progress-played",style:{width:`${y}%`}}),e.jsx("div",{className:"plex-video-player__progress-handle",style:{left:`${y}%`}})]}),o?.enabled&&null!==h&&e.jsxs("div",{className:"plex-video-player__thumbnail-preview",style:{left:`${x}px`,width:o.width||160,height:o.height||90},children:[o.sprites&&e.jsx("div",{style:{width:"100%",height:"100%",backgroundImage:`url(${o.sprites})`,backgroundPosition:P(h,a,o.interval||10,o.width||160,o.height||90),backgroundSize:"cover"}}),e.jsx("div",{className:"plex-video-player__thumbnail-time",children:r(h)})]}),null!==h&&!o?.enabled&&e.jsx("div",{className:"plex-video-player__thumbnail-preview",style:{left:`${x}px`,width:"auto",height:"auto",padding:"4px 8px"},children:e.jsx("span",{style:{color:"white",fontSize:"12px"},children:r(h)})})]})},P=(e,t,r,s,n)=>{const l=Math.floor(e/r);return`-${l%10*s}px -${Math.floor(l/10)*n}px`},E=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M8 5v14l11-7z"})}),_=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M6 19h4V5H6v14zm8-14v14h4V5h-4z"})}),N=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"})}),S=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M18.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM5 9v6h4l5 5V4L9 9H5z"})}),M=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M7 9v6h4l5 5V4l-5 5H7z"})}),z=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.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.51C20.63 14.91 21 13.5 21 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"})}),T=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"})}),F=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"})}),A=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M19 7h-8v6h8V7zm2-4H3c-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"})}),V=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.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 16H3V5h18v14zM5 7h8v6H5z"})}),R=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.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.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"})}),L=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})}),I=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"})}),q=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})}),B=({volume:r,muted:s,onVolumeChange:n,onToggleMute:l})=>{const a=t.useCallback(e=>{const t=parseFloat(e.target.value);n(t)},[n]);return e.jsxs("div",{className:"plex-video-player__volume-container",children:[e.jsx("button",{className:"plex-video-player__btn",onClick:l,"aria-label":s?"Unmute":"Mute",title:s?"Unmute (M)":"Mute (M)",type:"button",children:s||0===r?e.jsx(z,{}):r<.33?e.jsx(M,{}):r<.66?e.jsx(S,{}):e.jsx(N,{})}),e.jsx("div",{className:"plex-video-player__volume-slider-container",children:e.jsx("input",{type:"range",className:"plex-video-player__volume-slider",min:0,max:1,step:.01,value:s?0:r,onChange:a,"aria-label":"Volume",style:{background:`linear-gradient(to right, var(--plex-primary) 0%, var(--plex-primary) ${100*(s?0:r)}%, var(--plex-progress-bg) ${100*(s?0:r)}%, var(--plex-progress-bg) 100%)`}})})]})},H=({playbackRate:r,playbackSpeeds:s,onPlaybackRateChange:n,qualityEnabled:l,sources:a,currentQuality:i,onQualityChange:c,captionsEnabled:o,textTracks:u,currentTrack:d,onTrackChange:p})=>{const[m,h]=t.useState(!1),[v,x]=t.useState("main"),g=t.useRef(null);t.useEffect(()=>{const e=e=>{g.current&&!g.current.contains(e.target)&&(h(!1),x("main"))};if(m)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[m]);const y=t.useCallback(()=>{h(e=>!e),x("main")},[]),f=t.useCallback(e=>{n(e),x("main")},[n]),w=t.useCallback(e=>{c?.(e),x("main")},[c]),k=t.useCallback(e=>{p?.(e),x("main")},[p]);return e.jsxs("div",{className:"plex-video-player__settings-container",ref:g,children:[e.jsx("button",{className:"plex-video-player__btn",onClick:y,"aria-label":"Settings","aria-expanded":m,title:"Settings",type:"button",children:e.jsx(R,{})}),m&&e.jsxs("div",{className:"plex-video-player__settings-menu "+(m?"plex-video-player__settings-menu--open":""),children:["main"===v&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"plex-video-player__settings-title",children:"Settings"}),e.jsxs("button",{className:"plex-video-player__settings-item",onClick:()=>x("speed"),type:"button",children:[e.jsx("span",{children:"Playback Speed"}),e.jsx("span",{children:1===r?"Normal":`${r}x`})]}),l&&a&&a.length>1&&e.jsxs("button",{className:"plex-video-player__settings-item",onClick:()=>x("quality"),type:"button",children:[e.jsx("span",{children:"Quality"}),e.jsx("span",{children:i||"Auto"})]}),o&&u&&u.length>0&&e.jsxs("button",{className:"plex-video-player__settings-item",onClick:()=>x("captions"),type:"button",children:[e.jsx("span",{children:"Captions"}),e.jsx("span",{children:d||"Off"})]})]}),"speed"===v&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"plex-video-player__settings-title",onClick:()=>x("main"),style:{cursor:"pointer",border:"none",background:"transparent",width:"100%",textAlign:"left"},type:"button",children:"← Playback Speed"}),e.jsx("div",{className:"plex-video-player__speed-menu",children:s.map(t=>e.jsx("button",{className:"plex-video-player__speed-btn "+(r===t?"plex-video-player__speed-btn--active":""),onClick:()=>f(t),type:"button",children:1===t?"Normal":`${t}x`},t))})]}),"quality"===v&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"plex-video-player__settings-title",onClick:()=>x("main"),style:{cursor:"pointer",border:"none",background:"transparent",width:"100%",textAlign:"left"},type:"button",children:"← Quality"}),e.jsx("div",{className:"plex-video-player__quality-menu",children:a?.map(t=>e.jsxs("button",{className:"plex-video-player__settings-item "+(i===t.quality?"plex-video-player__settings-item--active":""),onClick:()=>w(t.quality||t.src),type:"button",children:[e.jsx("span",{children:t.label||t.quality||"Unknown"}),i===t.quality&&e.jsx(q,{size:16})]},t.quality||t.src))})]}),"captions"===v&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"plex-video-player__settings-title",onClick:()=>x("main"),style:{cursor:"pointer",border:"none",background:"transparent",width:"100%",textAlign:"left"},type:"button",children:"← Captions"}),e.jsxs("div",{className:"plex-video-player__quality-menu",children:[e.jsxs("button",{className:"plex-video-player__settings-item "+(d?"":"plex-video-player__settings-item--active"),onClick:()=>k(null),type:"button",children:[e.jsx("span",{children:"Off"}),!d&&e.jsx(q,{size:16})]}),u?.map(t=>e.jsxs("button",{className:"plex-video-player__settings-item "+(d===t.srclang?"plex-video-player__settings-item--active":""),onClick:()=>k(t.srclang),type:"button",children:[e.jsx("span",{children:t.label}),d===t.srclang&&e.jsx(q,{size:16})]},t.srclang))]})]})]})]})},D=({ad:t,timeRemaining:s,canSkip:n,onSkip:l,onClick:a})=>{const i=n?"Skip Ad":`Skip in ${Math.ceil(s)}s`;return e.jsxs("div",{className:"plex-video-player__ad-overlay",onClick:a,children:[e.jsxs("div",{className:"plex-video-player__ad-info",children:[e.jsx("span",{className:"plex-video-player__ad-badge",children:"Ad"}),e.jsxs("span",{children:[r(s)," remaining"]})]}),t.clickThrough&&e.jsxs("button",{className:"plex-video-player__ad-learn-more",onClick:e=>{e.stopPropagation(),a()},type:"button",children:[e.jsx(I,{size:16}),"Learn More"]}),e.jsx("button",{className:"plex-video-player__ad-skip",onClick:e=>{e.stopPropagation(),n&&l()},disabled:!n,type:"button",children:i})]})},$={1:"The video playback was aborted.",2:"A network error occurred while loading the video.",3:"The video format is not supported or cannot be decoded.",4:"The video source is not supported."},O=({error:t,onRetry:r})=>{const s=t?.code||0,n=$[s]||"An unknown error occurred.";return e.jsxs("div",{className:"plex-video-player__error",children:[e.jsx(L,{className:"plex-video-player__error-icon",size:60}),e.jsx("div",{className:"plex-video-player__error-message",children:n}),s>0&&e.jsxs("div",{className:"plex-video-player__error-code",children:["Error Code: ",s]}),e.jsx("button",{className:"plex-video-player__error-retry",onClick:r,type:"button",children:"Try Again"})]})},Q=({visible:t})=>t?e.jsx("div",{className:"plex-video-player__loader",children:e.jsx("div",{className:"plex-video-player__loader-spinner"})}):null,U=[.25,.5,.75,1,1.25,1.5,1.75,2],X=3e3,K=t.forwardRef((s,i)=>{const{src:c,poster:o,autoPlay:d=!1,muted:p=!1,loop:h=!1,preload:x="metadata",width:g="100%",height:y="auto",controls:f=!0,pip:w=!0,fullscreen:k=!0,playbackSpeed:b=!0,playbackSpeeds:P=U,volume:N=!0,initialVolume:S=1,progressBar:M=!0,timeDisplay:z=!0,qualitySelector:R=!0,textTracks:L,vast:I,keyboard:q=!0,hotkeys:$,className:K="",style:G,accentColor:J,theme:W="dark",controlsTimeout:Y=X,doubleClickFullscreen:Z=!0,clickToPlay:ee=!0,thumbnailPreview:te,onPlay:re,onPause:se,onEnded:ne,onTimeUpdate:le,onProgress:ae,onVolumeChange:ie,onSeeking:ce,onSeeked:oe,onRateChange:ue,onQualityChange:de,onFullscreenChange:pe,onPipChange:me,onError:he,onReady:ve,onAdStart:xe,onAdEnd:ge,onAdSkip:ye,onAdError:fe}=s,we=t.useRef(null),ke=t.useRef(null),be=t.useRef(null),[,je]=t.useState(!1),[Ce,Pe]=t.useState(!!o&&!d),[Ee,_e]=t.useState(!0),[Ne,Se]=t.useState(null),[Me,ze]=t.useState(null),{state:Te,play:Fe,pause:Ae,togglePlay:Ve,seek:Re,setVolume:Le,toggleMute:Ie,setPlaybackRate:qe,enterFullscreen:Be,exitFullscreen:He,toggleFullscreen:De,enterPip:$e,exitPip:Oe,togglePip:Qe}=m({autoPlay:d,muted:p,loop:h,volume:S,playbackRate:1}),Ue=j({vastConfig:I,videoRef:we,onAdStart:xe,onAdEnd:ge,onAdSkip:ye,onAdError:fe}),Xe=t.useMemo(()=>"string"==typeof c?[{src:c,type:u(c)}]:c.map(e=>({...e,type:e.type||u(e.src)})),[c]),Ke=t.useMemo(()=>Ne&&Xe.find(e=>e.quality===Ne)||Xe[0],[Xe,Ne]),Ge=t.useCallback(()=>{Te.isPlaying&&!Ue.isAdPlaying&&_e(!1)},[Te.isPlaying,Ue.isAdPlaying]),Je=t.useCallback(()=>{_e(!0),be.current&&clearTimeout(be.current),be.current=window.setTimeout(Ge,Y)},[Ge,Y]),We=t.useCallback(()=>{ee&&!Ue.isAdPlaying&&Ve(),Je()},[ee,Ue.isAdPlaying,Ve,Je]),Ye=t.useCallback(()=>{Z&&!Ue.isAdPlaying&&De()},[Z,Ue.isAdPlaying,De]),Ze=t.useCallback(()=>{Je()},[Je]),et=t.useCallback(()=>{Te.isPlaying&&Ge()},[Te.isPlaying,Ge]),tt=t.useCallback(e=>{Re(e),ce?.(e)},[Re,ce]),rt=t.useCallback(e=>{const t=Xe.find(t=>t.quality===e);if(t&&we.current){const r=we.current.currentTime,s=!we.current.paused;Se(e),we.current.src=t.src,we.current.currentTime=r,s&&we.current.play(),de?.(e)}},[Xe,de]),st=t.useCallback(e=>{if(ze(e),we.current){const t=we.current.textTracks;for(let r=0;r<t.length;r++)t[r].mode=t[r].language===e?"showing":"hidden"}},[]),nt=t.useCallback(()=>{we.current&&(we.current.load(),Fe())},[Fe]),lt=t.useCallback(()=>{Pe(!1),Fe()},[Fe]);v({enabled:q,hotkeys:$,onPlay:Ve,onMute:Ie,onFullscreen:De,onPip:Qe,onSeek:e=>{if(we.current){const t=n(we.current.currentTime+e,0,we.current.duration);Re(t)}},onVolume:e=>{Le(n(Te.volume+e,0,1))},containerRef:ke}),t.useEffect(()=>{const e=we.current;if(!e)return;const t={loadedmetadata:()=>{je(!0),ve?.()},play:()=>{Pe(!1),re?.()},pause:()=>se?.(),ended:()=>ne?.(),timeupdate:()=>{le?.(e.currentTime),Ue.checkForAd(e.currentTime,e.duration)},progress:()=>{e.buffered.length>0&&ae?.(e.buffered.end(e.buffered.length-1))},volumechange:()=>{ie?.(e.volume,e.muted)},seeking:()=>ce?.(e.currentTime),seeked:()=>oe?.(e.currentTime),ratechange:()=>ue?.(e.playbackRate),error:()=>he?.(e.error),enterpictureinpicture:()=>me?.(!0),leavepictureinpicture:()=>me?.(!1)};return Object.entries(t).forEach(([t,r])=>{e.addEventListener(t,r)}),()=>{Object.entries(t).forEach(([t,r])=>{e.removeEventListener(t,r)})}},[re,se,ne,le,ae,ie,ce,oe,ue,he,ve,me,Ue]),t.useEffect(()=>{const e=()=>{const e=!!document.fullscreenElement;pe?.(e)};return document.addEventListener("fullscreenchange",e),()=>{document.removeEventListener("fullscreenchange",e)}},[pe]),t.useEffect(()=>()=>{be.current&&clearTimeout(be.current)},[]),t.useImperativeHandle(i,()=>({play:async()=>{await Fe()},pause:()=>{Ae()},stop:()=>{Ae(),we.current&&(we.current.currentTime=0)},seek:e=>{Re(e)},setVolume:e=>{Le(e)},mute:()=>{we.current&&(we.current.muted=!0)},unmute:()=>{we.current&&(we.current.muted=!1)},toggleMute:()=>{Ie()},enterFullscreen:async()=>{await Be()},exitFullscreen:async()=>{await He()},toggleFullscreen:async()=>{await De()},enterPip:async()=>{await $e()},exitPip:async()=>{await Oe()},togglePip:async()=>{await Qe()},setPlaybackRate:e=>{qe(e)},setQuality:e=>{rt(e)},getCurrentTime:()=>we.current?.currentTime||0,getDuration:()=>we.current?.duration||0,getVolume:()=>we.current?.volume||0,isMuted:()=>we.current?.muted||!1,isPlaying:()=>!we.current?.paused,isFullscreen:()=>Te.isFullscreen,isPip:()=>Te.isPip,getVideoElement:()=>we.current}));const at=t.useMemo(()=>{const e={width:g,height:y,...G};return J&&(e["--plex-primary"]=J),e},[g,y,G,J]),it=["plex-video-player",`plex-video-player--theme-${W}`,Te.isFullscreen&&"plex-video-player--fullscreen",Ee&&"plex-video-player--controls-visible",Ue.isAdPlaying&&"plex-video-player--ad-playing",K].filter(Boolean).join(" ");return e.jsxs("div",{ref:ke,className:it,style:at,onMouseMove:Ze,onMouseLeave:et,tabIndex:0,children:[e.jsxs("video",{ref:we,className:"plex-video-player__video",src:Ke?.src,poster:Ce?void 0:o,preload:x,loop:h,muted:p,playsInline:!0,onClick:We,onDoubleClick:Ye,children:[Xe.map((t,r)=>e.jsx("source",{src:t.src,type:t.type},r)),L?.map((t,r)=>e.jsx("track",{src:t.src,kind:t.kind,srcLang:t.srclang,label:t.label,default:t.default},r))]}),Ce&&o&&e.jsx("div",{className:"plex-video-player__poster",style:{backgroundImage:`url(${o})`},onClick:lt}),e.jsx(Q,{visible:Te.isBuffering&&!Ce}),Te.error&&e.jsx(O,{error:Te.error,onRetry:nt}),Ue.isAdPlaying&&Ue.currentAd&&e.jsx(D,{ad:Ue.currentAd,timeRemaining:Ue.adTimeRemaining,canSkip:Ue.canSkip,onSkip:Ue.skipAd,onClick:Ue.handleAdClick}),f&&!Ce&&!Te.error&&e.jsxs("div",{className:"plex-video-player__controls",children:[M&&e.jsx(C,{currentTime:Te.currentTime,duration:Te.duration,buffered:Te.buffered,onSeek:tt,thumbnailPreview:te,disabled:Ue.isAdPlaying}),e.jsxs("div",{className:"plex-video-player__controls-row",children:[e.jsxs("div",{className:"plex-video-player__controls-left",children:[e.jsx("button",{className:"plex-video-player__btn plex-video-player__btn--play",onClick:Ve,"aria-label":Te.isPlaying?"Pause":"Play",title:Te.isPlaying?"Pause (Space)":"Play (Space)",disabled:Ue.isAdPlaying,type:"button",children:Te.isPlaying?e.jsx(_,{}):e.jsx(E,{})}),N&&e.jsx(B,{volume:Te.volume,muted:Te.isMuted,onVolumeChange:Le,onToggleMute:Ie}),z&&e.jsxs("div",{className:"plex-video-player__time",children:[e.jsx("span",{children:r(Te.currentTime)}),e.jsx("span",{className:"plex-video-player__time-separator",children:"/"}),e.jsx("span",{children:r(Te.duration)})]})]}),e.jsxs("div",{className:"plex-video-player__controls-right",children:[(b||R)&&e.jsx(H,{playbackRate:Te.playbackRate,playbackSpeeds:P,onPlaybackRateChange:qe,qualityEnabled:R,sources:Xe.length>1?Xe:void 0,currentQuality:Ne||void 0,onQualityChange:rt,captionsEnabled:!!L&&L.length>0,textTracks:L,currentTrack:Me||void 0,onTrackChange:st}),w&&a()&&e.jsx("button",{className:"plex-video-player__btn",onClick:Qe,"aria-label":Te.isPip?"Exit Picture-in-Picture":"Picture-in-Picture",title:Te.isPip?"Exit PiP (P)":"Picture-in-Picture (P)",disabled:Ue.isAdPlaying,type:"button",children:Te.isPip?e.jsx(V,{}):e.jsx(A,{})}),k&&l()&&e.jsx("button",{className:"plex-video-player__btn",onClick:De,"aria-label":Te.isFullscreen?"Exit Fullscreen":"Fullscreen",title:Te.isFullscreen?"Exit Fullscreen (F)":"Fullscreen (F)",type:"button",children:Te.isFullscreen?e.jsx(F,{}):e.jsx(T,{})})]})]})]})]})});K.displayName="PlexVideoPlayer",exports.AdOverlay=D,exports.CaptionsIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 7H9.5v-.5h-2v3h2V13H11v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1zm7 0h-1.5v-.5h-2v3h2V13H18v1c0 .55-.45 1-1 1h-3c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1z"})}),exports.CheckIcon=q,exports.ErrorDisplay=O,exports.ErrorIcon=L,exports.ExternalLinkIcon=I,exports.ForwardIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M4 18l8.5-6L4 6v12zm9-12v12l8.5-6L13 6z"})}),exports.FullscreenExitIcon=F,exports.FullscreenIcon=T,exports.Loader=Q,exports.PauseIcon=_,exports.PipExitIcon=V,exports.PipIcon=A,exports.PlayIcon=E,exports.PlexVideoPlayer=K,exports.ProgressBar=C,exports.QualityIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM7.5 13h2v2H7.5zm4.5 0h2v2h-2zm4.5 0h2v2h-2zM7.5 9h2v2H7.5zm4.5 0h2v2h-2zm4.5 0h2v2h-2z"})}),exports.RewindIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M11 18V6l-8.5 6 8.5 6zm.5-6l8.5 6V6l-8.5 6z"})}),exports.SettingsIcon=R,exports.SettingsMenu=H,exports.SkipNextIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z"})}),exports.SkipPrevIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M6 6h2v12H6zm3.5 6l8.5 6V6z"})}),exports.SpeedIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.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"})}),exports.VolumeControl=B,exports.VolumeHighIcon=N,exports.VolumeLowIcon=M,exports.VolumeMediumIcon=S,exports.VolumeMuteIcon=z,exports.canPlayType=e=>{const t=document.createElement("video").canPlayType(e);return"probably"===t||"maybe"===t},exports.clamp=n,exports.convertToAdInfo=b,exports.debounce=(e,t)=>{let r=null;return(...s)=>{r&&clearTimeout(r),r=setTimeout(()=>e(...s),t)}},exports.default=K,exports.detectVideoType=u,exports.exitFullscreen=o,exports.fetchVastAd=y,exports.fireTrackingPixel=w,exports.fireTrackingPixels=k,exports.formatTime=r,exports.generateId=()=>`plex-${Math.random().toString(36).substring(2,11)}`,exports.getBufferedEnd=d,exports.getFullscreenElement=i,exports.isFullscreenSupported=l,exports.isHlsNativelySupported=()=>""!==document.createElement("video").canPlayType("application/vnd.apple.mpegurl"),exports.isMobile=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),exports.isPipSupported=a,exports.isTouchDevice=()=>"ontouchstart"in window||navigator.maxTouchPoints>0,exports.parseTime=e=>{const t=e.split(":").map(Number);return 3===t.length?3600*t[0]+60*t[1]+t[2]:2===t.length?60*t[0]+t[1]:t[0]||0},exports.parseVastXml=x,exports.percentage=s,exports.requestFullscreen=c,exports.selectBestMediaFile=f,exports.throttle=(e,t)=>{let r=!1;return(...s)=>{r||(e(...s),r=!0,setTimeout(()=>r=!1,t))}},exports.useKeyboard=v,exports.usePlayer=m,exports.useVast=j;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react");const r=e=>{if(!isFinite(e)||isNaN(e))return"0:00";const t=Math.floor(e/3600),r=Math.floor(e%3600/60),n=Math.floor(e%60);return t>0?`${t}:${r.toString().padStart(2,"0")}:${n.toString().padStart(2,"0")}`:`${r}:${n.toString().padStart(2,"0")}`},n=(e,t)=>0===t?0:Math.min(100,Math.max(0,e/t*100)),s=(e,t,r)=>Math.min(r,Math.max(t,e)),l=(e,t)=>{let r=!1;return(...n)=>{r||(e(...n),r=!0,setTimeout(()=>r=!1,t))}},a=()=>"pictureInPictureEnabled"in document&&document.pictureInPictureEnabled,i=()=>document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||null,c=async e=>{e.requestFullscreen?await e.requestFullscreen():e.webkitRequestFullscreen?await e.webkitRequestFullscreen():e.mozRequestFullScreen?await e.mozRequestFullScreen():e.msRequestFullscreen&&await e.msRequestFullscreen()},o=async()=>{document.exitFullscreen?await document.exitFullscreen():document.webkitExitFullscreen?await document.webkitExitFullscreen():document.mozCancelFullScreen?await document.mozCancelFullScreen():document.msExitFullscreen&&await document.msExitFullscreen()},u=e=>{if(0===e.buffered.length)return 0;const t=e.currentTime;for(let r=0;r<e.buffered.length;r++)if(e.buffered.start(r)<=t&&e.buffered.end(r)>=t)return e.buffered.end(r);return e.buffered.end(e.buffered.length-1)},d=({currentTime:l,duration:a,buffered:i,onSeek:c,thumbnailPreview:o,disabled:u=!1})=>{const d=t.useRef(null),[m,h]=t.useState(!1),[v,x]=t.useState(null),[g,y]=t.useState(0),f=n(l,a),b=n(i,a),k=t.useCallback(e=>{if(!d.current)return 0;const t=d.current.getBoundingClientRect();return s((e-t.left)/t.width,0,1)*a},[a]),w=t.useCallback(e=>{if(!d.current)return;const t=d.current.getBoundingClientRect(),r="clientX"in e?e.clientX:0,n=s(r-t.left,0,t.width),l=k(r);y(n),x(l),m&&c(l)},[m,k,c]),C=t.useCallback(e=>{if(u)return;e.preventDefault(),h(!0);const t=k(e.clientX);c(t)},[u,k,c]),E=t.useCallback(()=>{h(!1)},[]),j=t.useCallback(e=>{const t=k(e.clientX);x(t)},[k]),_=t.useCallback(()=>{x(null)},[]);t.useEffect(()=>{if(m){const e=e=>w(e);return window.addEventListener("mousemove",e),window.addEventListener("mouseup",E),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",E)}}},[m,w,E]);const N=t.useCallback(e=>{if(u)return;e.preventDefault();const t=e.touches[0],r=k(t.clientX);h(!0),c(r)},[u,k,c]),P=t.useCallback(e=>{if(!m)return;const t=e.touches[0],r=k(t.clientX);c(r)},[m,k,c]),S=t.useCallback(()=>{h(!1)},[]);return e.jsxs("div",{ref:d,className:"plex-video-player__progress-container",onMouseDown:C,onMouseEnter:j,onMouseLeave:_,onMouseMove:e=>w(e.nativeEvent),onTouchStart:N,onTouchMove:P,onTouchEnd:S,role:"slider","aria-label":"Video progress","aria-valuemin":0,"aria-valuemax":a,"aria-valuenow":l,"aria-valuetext":r(l),tabIndex:0,children:[e.jsxs("div",{className:"plex-video-player__progress",children:[e.jsx("div",{className:"plex-video-player__progress-buffered",style:{width:`${b}%`}}),e.jsx("div",{className:"plex-video-player__progress-played",style:{width:`${f}%`}}),e.jsx("div",{className:"plex-video-player__progress-handle",style:{left:`${f}%`}})]}),o?.enabled&&null!==v&&e.jsxs("div",{className:"plex-video-player__thumbnail-preview",style:{left:`${g}px`,width:o.width||160,height:o.height||90},children:[o.sprites&&e.jsx("div",{style:{width:"100%",height:"100%",backgroundImage:`url(${o.sprites})`,backgroundPosition:p(v,a,o.interval||10,o.width||160,o.height||90),backgroundSize:"cover"}}),e.jsx("div",{className:"plex-video-player__thumbnail-time",children:r(v)})]}),null!==v&&!o?.enabled&&e.jsx("div",{className:"plex-video-player__thumbnail-preview",style:{left:`${g}px`,width:"auto",height:"auto",padding:"4px 8px"},children:e.jsx("span",{style:{color:"white",fontSize:"12px"},children:r(v)})})]})},p=(e,t,r,n,s)=>{const l=Math.floor(e/r);return`-${l%10*n}px -${Math.floor(l/10)*s}px`},m=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M8 5v14l11-7z"})}),h=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M6 19h4V5H6v14zm8-14v14h4V5h-4z"})}),v=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.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"})}),x=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M18.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM5 9v6h4l5 5V4L9 9H5z"})}),g=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M7 9v6h4l5 5V4l-5 5H7z"})}),y=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.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.51C20.63 14.91 21 13.5 21 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=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"})}),b=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"})}),k=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M19 7h-8v6h8V7zm2-4H3c-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"})}),w=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.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.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"})}),C=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})}),E=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"})}),j=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})}),_=({volume:r,muted:n,onVolumeChange:s,onToggleMute:l})=>{const a=t.useCallback(e=>{const t=parseFloat(e.target.value);s(t)},[s]);return e.jsxs("div",{className:"plex-video-player__volume-container",children:[e.jsx("button",{className:"plex-video-player__btn",onClick:l,"aria-label":n?"Unmute":"Mute",title:n?"Unmute (M)":"Mute (M)",type:"button",children:n||0===r?e.jsx(y,{}):r<.33?e.jsx(g,{}):r<.66?e.jsx(x,{}):e.jsx(v,{})}),e.jsx("div",{className:"plex-video-player__volume-slider-container",children:e.jsx("input",{type:"range",className:"plex-video-player__volume-slider",min:0,max:1,step:.01,value:n?0:r,onChange:a,"aria-label":"Volume",style:{background:`linear-gradient(to right, var(--plex-primary) 0%, var(--plex-primary) ${100*(n?0:r)}%, var(--plex-progress-bg) ${100*(n?0:r)}%, var(--plex-progress-bg) 100%)`}})})]})},N=({playbackRate:r,playbackSpeeds:n,onPlaybackRateChange:s,qualityEnabled:l,sources:a,currentQuality:i,onQualityChange:c,captionsEnabled:o,textTracks:u,currentTrack:d,onTrackChange:p})=>{const[m,h]=t.useState(!1),[v,x]=t.useState("main"),g=t.useRef(null);t.useEffect(()=>{const e=e=>{g.current&&!g.current.contains(e.target)&&(h(!1),x("main"))};if(m)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[m]);const y=t.useCallback(()=>{h(e=>!e),x("main")},[]),f=t.useCallback(e=>{s(e),x("main")},[s]),b=t.useCallback(e=>{c?.(e),x("main")},[c]),k=t.useCallback(e=>{p?.(e),x("main")},[p]);return e.jsxs("div",{className:"plex-video-player__settings-container",ref:g,children:[e.jsx("button",{className:"plex-video-player__btn",onClick:y,"aria-label":"Settings","aria-expanded":m,title:"Settings",type:"button",children:e.jsx(w,{})}),m&&e.jsxs("div",{className:"plex-video-player__settings-menu "+(m?"plex-video-player__settings-menu--open":""),children:["main"===v&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"plex-video-player__settings-title",children:"Settings"}),e.jsxs("button",{className:"plex-video-player__settings-item",onClick:()=>x("speed"),type:"button",children:[e.jsx("span",{children:"Playback Speed"}),e.jsx("span",{children:1===r?"Normal":`${r}x`})]}),l&&a&&a.length>1&&e.jsxs("button",{className:"plex-video-player__settings-item",onClick:()=>x("quality"),type:"button",children:[e.jsx("span",{children:"Quality"}),e.jsx("span",{children:i||"Auto"})]}),o&&u&&u.length>0&&e.jsxs("button",{className:"plex-video-player__settings-item",onClick:()=>x("captions"),type:"button",children:[e.jsx("span",{children:"Captions"}),e.jsx("span",{children:d||"Off"})]})]}),"speed"===v&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"plex-video-player__settings-title",onClick:()=>x("main"),style:{cursor:"pointer",border:"none",background:"transparent",width:"100%",textAlign:"left"},type:"button",children:"← Playback Speed"}),e.jsx("div",{className:"plex-video-player__speed-menu",children:n.map(t=>e.jsx("button",{className:"plex-video-player__speed-btn "+(r===t?"plex-video-player__speed-btn--active":""),onClick:()=>f(t),type:"button",children:1===t?"Normal":`${t}x`},t))})]}),"quality"===v&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"plex-video-player__settings-title",onClick:()=>x("main"),style:{cursor:"pointer",border:"none",background:"transparent",width:"100%",textAlign:"left"},type:"button",children:"← Quality"}),e.jsx("div",{className:"plex-video-player__quality-menu",children:a?.map(t=>e.jsxs("button",{className:"plex-video-player__settings-item "+(i===t.quality?"plex-video-player__settings-item--active":""),onClick:()=>b(t.quality||t.src),type:"button",children:[e.jsx("span",{children:t.label||t.quality||"Unknown"}),i===t.quality&&e.jsx(j,{size:16})]},t.quality||t.src))})]}),"captions"===v&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"plex-video-player__settings-title",onClick:()=>x("main"),style:{cursor:"pointer",border:"none",background:"transparent",width:"100%",textAlign:"left"},type:"button",children:"← Captions"}),e.jsxs("div",{className:"plex-video-player__quality-menu",children:[e.jsxs("button",{className:"plex-video-player__settings-item "+(d?"":"plex-video-player__settings-item--active"),onClick:()=>k(null),type:"button",children:[e.jsx("span",{children:"Off"}),!d&&e.jsx(j,{size:16})]}),u?.map(t=>e.jsxs("button",{className:"plex-video-player__settings-item "+(d===t.srclang?"plex-video-player__settings-item--active":""),onClick:()=>k(t.srclang),type:"button",children:[e.jsx("span",{children:t.label}),d===t.srclang&&e.jsx(j,{size:16})]},t.srclang))]})]})]})]})},P=({ad:t,timeRemaining:n,canSkip:s,onSkip:l,onClick:a})=>{const i=s?"Skip Ad":`Skip in ${Math.ceil(n)}s`;return e.jsxs("div",{className:"plex-video-player__ad-overlay",onClick:a,children:[e.jsxs("div",{className:"plex-video-player__ad-info",children:[e.jsx("span",{className:"plex-video-player__ad-badge",children:"Ad"}),e.jsxs("span",{children:[r(n)," remaining"]})]}),t.clickThrough&&e.jsxs("button",{className:"plex-video-player__ad-learn-more",onClick:e=>{e.stopPropagation(),a()},type:"button",children:[e.jsx(E,{size:16}),"Learn More"]}),e.jsx("button",{className:"plex-video-player__ad-skip",onClick:e=>{e.stopPropagation(),s&&l()},disabled:!s,type:"button",children:i})]})},S={1:"The video playback was aborted.",2:"A network error occurred while loading the video.",3:"The video format is not supported or cannot be decoded.",4:"The video source is not supported."},M=({error:t,onRetry:r})=>{const n=t?.code||0,s=S[n]||"An unknown error occurred.";return e.jsxs("div",{className:"plex-video-player__error",children:[e.jsx(C,{className:"plex-video-player__error-icon",size:60}),e.jsx("div",{className:"plex-video-player__error-message",children:s}),n>0&&e.jsxs("div",{className:"plex-video-player__error-code",children:["Error Code: ",n]}),e.jsx("button",{className:"plex-video-player__error-retry",onClick:r,type:"button",children:"Try Again"})]})},z=({visible:t})=>t?e.jsx("div",{className:"plex-video-player__loader",children:e.jsx("div",{className:"plex-video-player__loader-spinner"})}):null,T={play:"Space",mute:"m",fullscreen:"f",pip:"p",seekForward:"ArrowRight",seekBackward:"ArrowLeft",volumeUp:"ArrowUp",volumeDown:"ArrowDown"},L=({enabled:e,hotkeys:r={},onPlay:n,onMute:s,onFullscreen:l,onPip:a,onSeek:i,onVolume:c,containerRef:o})=>{const u={...T,...r},d=t.useCallback(t=>{if(!e)return;const r=t.target;if("INPUT"===r.tagName||"TEXTAREA"===r.tagName||r.isContentEditable)return;const d=o.current;if(!d||!d.contains(document.activeElement))return;switch(t.key){case u.play:case" ":t.preventDefault(),n();break;case u.mute:case"M":t.preventDefault(),s();break;case u.fullscreen:case"F":t.preventDefault(),l();break;case u.pip:case"P":t.preventDefault(),a();break;case u.seekForward:t.preventDefault(),i(t.shiftKey?30:10);break;case u.seekBackward:t.preventDefault(),i(t.shiftKey?-30:-10);break;case u.volumeUp:t.preventDefault(),c(.1);break;case u.volumeDown:t.preventDefault(),c(-.1);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":t.preventDefault(),i(-1/0)}},[e,u,n,s,l,a,i,c,o]);t.useEffect(()=>{if(e)return document.addEventListener("keydown",d),()=>{document.removeEventListener("keydown",d)}},[e,d])},F=e=>{const t=(new DOMParser).parseFromString(e,"text/xml");if(t.querySelector("parsererror"))return{ads:[],error:"Failed to parse VAST XML"};const r=[];return t.querySelectorAll("Ad").forEach(e=>{const t=e.querySelector("InLine");if(!t)return;const n=e.getAttribute("id")||"",s=t.querySelector("AdTitle")?.textContent||"",l=t.querySelector("Description")?.textContent||void 0,a=t.querySelectorAll("Creative");let i,c,o=0;const u=[],d=[],p={};a.forEach(e=>{const t=e.querySelector("Linear");if(!t)return;const r=t.querySelector("Duration")?.textContent;r&&(o=A(r));const n=t.getAttribute("skipoffset");n&&(i=A(n));t.querySelectorAll("MediaFile").forEach(e=>{const t=e.textContent?.trim();t&&d.push({url:t,type:e.getAttribute("type")||"video/mp4",width:parseInt(e.getAttribute("width")||"0",10),height:parseInt(e.getAttribute("height")||"0",10),bitrate:parseInt(e.getAttribute("bitrate")||"0",10)||void 0})});const s=t.querySelector("VideoClicks");s&&(c=s.querySelector("ClickThrough")?.textContent?.trim(),s.querySelectorAll("ClickTracking").forEach(e=>{const t=e.textContent?.trim();t&&u.push(t)}));t.querySelectorAll("TrackingEvents Tracking").forEach(e=>{const t=e.getAttribute("event"),r=e.textContent?.trim();t&&r&&(p[t]||(p[t]=[]),p[t].push(r))})});const m=[];t.querySelectorAll("Impression").forEach(e=>{const t=e.textContent?.trim();t&&m.push(t)}),d.length>0&&r.push({id:n,title:s,description:l,duration:o,skipOffset:i,clickThrough:c,clickTracking:u,impressionUrls:m,mediaFiles:d,trackingEvents:p})}),{ads:r}},A=e=>{if(e.includes("%"))return-1;const t=e.split(":");if(3!==t.length)return 0;return 3600*parseInt(t[0],10)+60*parseInt(t[1],10)+parseFloat(t[2])},V=async e=>{try{const t=await fetch(e.url,{method:"GET",headers:{Accept:"application/xml"}});if(!t.ok)return null;const r=await t.text(),n=F(r);if(n.error||0===n.ads.length)return null;const s=n.ads[0];return void 0!==e.skipDelay&&void 0===s.skipOffset&&(s.skipOffset=e.skipDelay),s}catch(e){return null}},R=e=>{if(0===e.length)return null;const t=document.createElement("video"),r=e.filter(e=>""!==t.canPlayType(e.type));if(0===r.length)return null;r.sort((e,t)=>{const r=e.width*e.height,n=t.width*t.height;return r!==n?n-r:(t.bitrate||0)-(e.bitrate||0)});return/Android|iPhone|iPad|iPod/i.test(navigator.userAgent)&&r.length>1?r[r.length-1]:r[0]},I=e=>{(new Image).src=e},q=e=>{e.forEach(I)},B=e=>({id:e.id,title:e.title,duration:e.duration,skipOffset:e.skipOffset,clickThrough:e.clickThrough}),H=({vastConfig:e,videoRef:r,onAdStart:n,onAdEnd:s,onAdSkip:l,onAdError:a})=>{const[i,c]=t.useState(!1),[o,u]=t.useState(null),[d,p]=t.useState(0),[m,h]=t.useState(!1),v=t.useRef(null),x=t.useRef(""),g=t.useRef(0),y=t.useRef(new Set),f=t.useRef(null),b=Array.isArray(e)?e:e?[e]:[],k=t.useCallback(async e=>{const t=r.current;if(t&&!i)try{const r=await V(e);if(!r)return void a?.(new Error("Failed to fetch VAST ad"));const s=R(r.mediaFiles);if(!s)return void a?.(new Error("No compatible media file found"));x.current=t.currentSrc,g.current=t.currentTime,q(r.impressionUrls),v.current=r,u(B(r)),c(!0),p(r.duration),h(void 0===r.skipOffset||0===r.skipOffset),t.src=s.url,t.currentTime=0,await t.play(),r.trackingEvents.start&&q(r.trackingEvents.start),n?.(B(r)),f.current=window.setInterval(()=>{const e=Math.max(0,r.duration-t.currentTime);p(e),r.skipOffset&&t.currentTime>=r.skipOffset&&h(!0);const n=t.currentTime/r.duration*100;n>=25&&r.trackingEvents.firstQuartile&&q(r.trackingEvents.firstQuartile),n>=50&&r.trackingEvents.midpoint&&q(r.trackingEvents.midpoint),n>=75&&r.trackingEvents.thirdQuartile&&q(r.trackingEvents.thirdQuartile)},250);const l=()=>{r.trackingEvents.complete&&q(r.trackingEvents.complete),w()};t.addEventListener("ended",l,{once:!0})}catch(e){a?.(e instanceof Error?e:new Error("Ad playback failed")),w()}},[r,i,n,a]),w=t.useCallback(()=>{const e=r.current;e&&(f.current&&(clearInterval(f.current),f.current=null),x.current&&(e.src=x.current,e.currentTime=g.current,e.play().catch(()=>{})),c(!1),u(null),p(0),h(!1),v.current=null,s?.())},[r,s]),C=t.useCallback(()=>{if(!m||!v.current)return;const e=v.current;e.trackingEvents.skip&&q(e.trackingEvents.skip),l?.(),w()},[m,w,l]),E=t.useCallback(()=>{if(!v.current)return;const e=v.current;e.clickThrough&&window.open(e.clickThrough,"_blank"),e.clickTracking&&q(e.clickTracking)},[]),j=t.useCallback((e,t)=>{i||0===b.length||b.forEach(r=>{const n=r.position||"preroll",s=`${n}-${r.midrollTime||0}`;if(y.current.has(s))return;let l=!1;switch(n){case"preroll":l=0===e;break;case"midroll":r.midrollTime&&e>=r.midrollTime&&(l=!0);break;case"postroll":l=e>=t-.5}l&&(y.current.add(s),k(r))})},[b,i,k]);return t.useEffect(()=>()=>{f.current&&clearInterval(f.current)},[]),{isAdPlaying:i,currentAd:o,adTimeRemaining:d,canSkip:m,skipAd:C,handleAdClick:E,checkForAd:j}},D=t.forwardRef((n,s)=>{const{src:a,poster:i,autoPlay:c=!1,muted:o=!1,loop:u=!1,controls:p=!0,width:v="100%",className:x="",style:g={},pip:y=!0,fullscreen:w=!0,playbackSpeed:C=!0,playbackSpeeds:E=[.25,.5,.75,1,1.25,1.5,1.75,2],volume:j=!0,initialVolume:S=1,progressBar:T=!0,timeDisplay:F=!0,qualitySelector:A=!0,textTracks:V=[],vast:R,keyboard:I=!0,hotkeys:q,accentColor:B="#e50914",controlsTimeout:D=3e3,doubleClickFullscreen:$=!0,clickToPlay:O=!0,preload:Q="metadata",onPlay:U,onPause:X,onEnded:K,onTimeUpdate:G,onProgress:J,onVolumeChange:W,onFullscreenChange:Y,onPipChange:Z,onQualityChange:ee,onError:te,onAdStart:re,onAdEnd:ne,onAdSkip:se,onAdError:le,onReady:ae}=n,ie=t.useRef(null),ce=t.useRef(null),oe=t.useRef(null),ue=t.useRef(0),[de,pe]=t.useState(!1),[me,he]=t.useState(0),[ve,xe]=t.useState(0),[ge,ye]=t.useState(0),[fe,be]=t.useState(o?0:S),[ke,we]=t.useState(o),[Ce,Ee]=t.useState(!1),[je,_e]=t.useState(!1),[Ne,Pe]=t.useState(!0),[Se,Me]=t.useState(null),[ze,Te]=t.useState(!0),[Le,Fe]=t.useState(1),[Ae,Ve]=t.useState("auto"),[Re,Ie]=t.useState(null),qe=t.useMemo(()=>"string"==typeof a?[{src:a,type:"video/mp4"}]:a,[a]),{currentAd:Be,isAdPlaying:He,adTimeRemaining:De,canSkip:$e,skipAd:Oe,handleAdClick:Qe,checkForAd:Ue}=H({vastConfig:R,videoRef:ie,onAdStart:re,onAdEnd:ne,onAdSkip:se,onAdError:le}),Xe=t.useCallback(async()=>{const e=ie.current;if(e)try{await e.play()}catch(e){}},[]),Ke=t.useCallback(()=>{const e=ie.current;e&&e.pause()},[]),Ge=t.useCallback(()=>{const e=ie.current;e&&(e.pause(),e.currentTime=0)},[]),Je=t.useCallback(()=>{const e=ie.current;e&&(e.paused?Xe():Ke())},[Xe,Ke]),We=t.useCallback(e=>{const t=ie.current;t&&(t.currentTime=Math.max(0,Math.min(e,t.duration||0)))},[]),Ye=t.useCallback(e=>{const t=ie.current;if(!t)return;const r=Math.max(0,Math.min(1,e));t.volume=r,t.muted=0===r,be(r),we(0===r)},[]),Ze=t.useCallback(()=>{const e=ie.current;e&&(e.muted=!0,we(!0))},[]),et=t.useCallback(()=>{const e=ie.current;e&&(e.muted=!1,0===e.volume&&(e.volume=.5,be(.5)),we(!1))},[]),tt=t.useCallback(()=>{const e=ie.current;e&&(e.muted?et():Ze())},[Ze,et]),rt=t.useCallback(async()=>{const e=ce.current;if(e)try{await e.requestFullscreen(),Ee(!0)}catch(e){}},[]),nt=t.useCallback(async()=>{try{document.fullscreenElement&&(await document.exitFullscreen(),Ee(!1))}catch(e){}},[]),st=t.useCallback(async()=>{document.fullscreenElement?await nt():await rt()},[rt,nt]),lt=t.useCallback(async()=>{const e=ie.current;if(e&&document.pictureInPictureEnabled)try{await e.requestPictureInPicture(),_e(!0)}catch(e){}},[]),at=t.useCallback(async()=>{try{document.pictureInPictureElement&&(await document.exitPictureInPicture(),_e(!1))}catch(e){}},[]),it=t.useCallback(async()=>{document.pictureInPictureElement?await at():await lt()},[lt,at]),ct=t.useCallback(e=>{const t=ie.current;t&&(t.playbackRate=e,Fe(e))},[]),ot=t.useCallback(e=>{const t=qe.find(t=>t.label===e||t.quality===e);if(t&&ie.current){const r=ie.current,n=!r.paused,s=r.currentTime;r.src=t.src,r.currentTime=s,n&&r.play(),Ve(e),ee?.(e)}},[qe,ee]),ut=t.useCallback(e=>{const t=ie.current;if(t){for(let r=0;r<t.textTracks.length;r++){const n=t.textTracks[r];n.mode=n.label===e?"showing":"hidden"}Ie(e)}},[]),dt=t.useCallback(()=>{de&&Te(!1)},[de]),pt=t.useCallback(()=>{Te(!0),oe.current&&clearTimeout(oe.current),de&&(oe.current=setTimeout(dt,D))},[de,D,dt]),mt=t.useMemo(()=>l(pt,200),[pt]),ht=t.useCallback(()=>{if(!O)return;const e=Date.now();$&&e-ue.current<300?st():Je(),ue.current=e},[O,$,Je,st]);t.useEffect(()=>{const e=ie.current;if(!e)return;const t=()=>{pe(!0),U?.()},r=()=>{pe(!1),X?.()},n=()=>{pe(!1),K?.()},s=()=>{he(e.currentTime),G?.(e.currentTime),Ue(e.currentTime,e.duration)},l=()=>{xe(e.duration)},a=()=>{if(e.buffered.length>0){const t=e.buffered.end(e.buffered.length-1)/e.duration*100;ye(t),J?.(t)}},i=()=>{be(e.volume),we(e.muted),W?.(e.volume,e.muted)},c=()=>{xe(e.duration),Pe(!1),ae?.()},o=()=>{Pe(!0)},u=()=>{Pe(!1)},d=()=>{Pe(!1)},p=()=>{Me(e.error),Pe(!1),te?.(e.error)};return e.addEventListener("play",t),e.addEventListener("pause",r),e.addEventListener("ended",n),e.addEventListener("timeupdate",s),e.addEventListener("durationchange",l),e.addEventListener("progress",a),e.addEventListener("volumechange",i),e.addEventListener("loadedmetadata",c),e.addEventListener("waiting",o),e.addEventListener("playing",u),e.addEventListener("canplay",d),e.addEventListener("error",p),()=>{e.removeEventListener("play",t),e.removeEventListener("pause",r),e.removeEventListener("ended",n),e.removeEventListener("timeupdate",s),e.removeEventListener("durationchange",l),e.removeEventListener("progress",a),e.removeEventListener("volumechange",i),e.removeEventListener("loadedmetadata",c),e.removeEventListener("waiting",o),e.removeEventListener("playing",u),e.removeEventListener("canplay",d),e.removeEventListener("error",p)}},[U,X,K,G,J,W,ae,te,Ue]),t.useEffect(()=>{const e=()=>{const e=!!document.fullscreenElement;Ee(e),Y?.(e)};return document.addEventListener("fullscreenchange",e),()=>{document.removeEventListener("fullscreenchange",e)}},[Y]),t.useEffect(()=>{const e=ie.current;if(!e)return;const t=()=>{_e(!0),Z?.(!0)},r=()=>{_e(!1),Z?.(!1)};return e.addEventListener("enterpictureinpicture",t),e.addEventListener("leavepictureinpicture",r),()=>{e.removeEventListener("enterpictureinpicture",t),e.removeEventListener("leavepictureinpicture",r)}},[Z]),L({enabled:I,containerRef:ce,hotkeys:q,onPlay:Je,onMute:tt,onFullscreen:st,onPip:it,onSeek:e=>We(me+e),onVolume:e=>Ye(fe+e)}),t.useEffect(()=>()=>{oe.current&&clearTimeout(oe.current)},[]);const vt=t.useCallback(()=>{Me(null),ie.current?.load()},[]);t.useImperativeHandle(s,()=>({play:Xe,pause:Ke,stop:Ge,seek:We,setVolume:Ye,mute:Ze,unmute:et,toggleMute:tt,enterFullscreen:rt,exitFullscreen:nt,toggleFullscreen:st,enterPip:lt,exitPip:at,togglePip:it,setPlaybackRate:ct,setQuality:ot,getCurrentTime:()=>ie.current?.currentTime||0,getDuration:()=>ie.current?.duration||0,getVolume:()=>ie.current?.volume||0,isMuted:()=>ie.current?.muted??!0,isPlaying:()=>!ie.current?.paused,isFullscreen:()=>Ce,isPip:()=>je,getVideoElement:()=>ie.current}),[Xe,Ke,Ge,We,Ye,Ze,et,tt,rt,nt,st,lt,at,it,ct,ot,Ce,je]);const xt=qe[0]?.src||"",gt={"--plex-accent-color":B};return e.jsxs("div",{ref:ce,className:`plex-video-player ${Ce?"plex-video-player--fullscreen":""} ${x}`,style:{...gt,width:v,...g},onMouseMove:mt,onMouseLeave:()=>de&&Te(!1),tabIndex:0,children:[e.jsxs("video",{ref:ie,className:"plex-video-player__video",src:xt,poster:i,autoPlay:c,muted:o,loop:u,preload:Q,playsInline:!0,onClick:ht,children:[qe.slice(1).map((t,r)=>e.jsx("source",{src:t.src,type:t.type},r)),V.map((t,r)=>e.jsx("track",{kind:t.kind,src:t.src,srcLang:t.srclang,label:t.label,default:t.default},r))]}),e.jsx(z,{visible:Ne&&!Se}),Se&&e.jsx(M,{error:Se,onRetry:vt}),He&&Be&&e.jsx(P,{ad:Be,timeRemaining:De,canSkip:$e,onSkip:Oe,onClick:Qe}),p&&!He&&e.jsxs("div",{className:"plex-video-player__controls "+(ze?"plex-video-player__controls--visible":""),children:[T&&e.jsx(d,{currentTime:me,duration:ve,buffered:ge,onSeek:We}),e.jsxs("div",{className:"plex-video-player__controls-bottom",children:[e.jsxs("div",{className:"plex-video-player__controls-left",children:[e.jsx("button",{className:"plex-video-player__btn",onClick:Je,"aria-label":de?"Pause":"Play",type:"button",children:de?e.jsx(h,{}):e.jsx(m,{})}),j&&e.jsx(_,{volume:fe,muted:ke,onVolumeChange:Ye,onToggleMute:tt}),F&&e.jsxs("div",{className:"plex-video-player__time",children:[e.jsx("span",{children:r(me)}),e.jsx("span",{children:" / "}),e.jsx("span",{children:r(ve)})]})]}),e.jsxs("div",{className:"plex-video-player__controls-right",children:[C&&e.jsx(N,{playbackRate:Le,playbackSpeeds:E,onPlaybackRateChange:ct,qualityEnabled:A&&qe.length>1,sources:qe,currentQuality:Ae,onQualityChange:ot,captionsEnabled:V.length>0,textTracks:V,currentTrack:Re??void 0,onTrackChange:ut}),y&&document.pictureInPictureEnabled&&e.jsx("button",{className:"plex-video-player__btn",onClick:it,"aria-label":je?"Exit Picture in Picture":"Picture in Picture",type:"button",children:e.jsx(k,{})}),w&&e.jsx("button",{className:"plex-video-player__btn",onClick:st,"aria-label":Ce?"Exit Fullscreen":"Fullscreen",type:"button",children:Ce?e.jsx(b,{}):e.jsx(f,{})})]})]})]}),!de&&!Ne&&!Se&&!He&&e.jsx("button",{className:"plex-video-player__big-play",onClick:Je,"aria-label":"Play",type:"button",children:e.jsx(m,{})})]})});D.displayName="PlexVideoPlayer";const $={isPlaying:!1,isPaused:!0,isEnded:!1,isBuffering:!1,isSeeking:!1,isFullscreen:!1,isPip:!1,isMuted:!1,isAdPlaying:!1,volume:1,currentTime:0,duration:0,buffered:0,playbackRate:1,currentQuality:null,error:null};exports.AdOverlay=P,exports.CaptionsIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 7H9.5v-.5h-2v3h2V13H11v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1zm7 0h-1.5v-.5h-2v3h2V13H18v1c0 .55-.45 1-1 1h-3c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1z"})}),exports.CheckIcon=j,exports.ErrorDisplay=M,exports.ErrorIcon=C,exports.ExternalLinkIcon=E,exports.ForwardIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M4 18l8.5-6L4 6v12zm9-12v12l8.5-6L13 6z"})}),exports.FullscreenExitIcon=b,exports.FullscreenIcon=f,exports.Loader=z,exports.PauseIcon=h,exports.PipExitIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.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 16H3V5h18v14zM5 7h8v6H5z"})}),exports.PipIcon=k,exports.PlayIcon=m,exports.PlexVideoPlayer=D,exports.ProgressBar=d,exports.QualityIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM7.5 13h2v2H7.5zm4.5 0h2v2h-2zm4.5 0h2v2h-2zM7.5 9h2v2H7.5zm4.5 0h2v2h-2zm4.5 0h2v2h-2z"})}),exports.RewindIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M11 18V6l-8.5 6 8.5 6zm.5-6l8.5 6V6l-8.5 6z"})}),exports.SettingsIcon=w,exports.SettingsMenu=N,exports.SkipNextIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z"})}),exports.SkipPrevIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M6 6h2v12H6zm3.5 6l8.5 6V6z"})}),exports.SpeedIcon=({className:t,size:r=24})=>e.jsx("svg",{className:t,width:r,height:r,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:e.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"})}),exports.VolumeControl=_,exports.VolumeHighIcon=v,exports.VolumeLowIcon=g,exports.VolumeMediumIcon=x,exports.VolumeMuteIcon=y,exports.canPlayType=e=>{const t=document.createElement("video").canPlayType(e);return"probably"===t||"maybe"===t},exports.clamp=s,exports.convertToAdInfo=B,exports.debounce=(e,t)=>{let r=null;return(...n)=>{r&&clearTimeout(r),r=setTimeout(()=>e(...n),t)}},exports.default=D,exports.detectVideoType=e=>{const t=e.split("?")[0].split(".").pop()?.toLowerCase();return{mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",ogv:"video/ogg",m3u8:"application/x-mpegURL",mpd:"application/dash+xml",mov:"video/quicktime",avi:"video/x-msvideo",mkv:"video/x-matroska"}[t||""]||"video/mp4"},exports.exitFullscreen=o,exports.fetchVastAd=V,exports.fireTrackingPixel=I,exports.fireTrackingPixels=q,exports.formatTime=r,exports.generateId=()=>`plex-${Math.random().toString(36).substring(2,11)}`,exports.getBufferedEnd=u,exports.getFullscreenElement=i,exports.isFullscreenSupported=()=>!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled),exports.isHlsNativelySupported=()=>""!==document.createElement("video").canPlayType("application/vnd.apple.mpegurl"),exports.isMobile=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),exports.isPipSupported=a,exports.isTouchDevice=()=>"ontouchstart"in window||navigator.maxTouchPoints>0,exports.parseTime=e=>{const t=e.split(":").map(Number);return 3===t.length?3600*t[0]+60*t[1]+t[2]:2===t.length?60*t[0]+t[1]:t[0]||0},exports.parseVastXml=F,exports.percentage=n,exports.requestFullscreen=c,exports.selectBestMediaFile=R,exports.throttle=l,exports.useKeyboard=L,exports.usePlayer=(e={})=>{const{autoPlay:r=!1,muted:n=!1,loop:s=!1,volume:l=1,playbackRate:d=1}=e,p=t.useRef(null),m=t.useRef(null),[h,v]=t.useState({...$,volume:l,isMuted:n,playbackRate:d}),x=t.useCallback(e=>{v(t=>({...t,...e}))},[]),g=t.useCallback(async()=>{const e=p.current;if(e)try{await e.play(),x({isPlaying:!0,isPaused:!1,isEnded:!1})}catch(e){}},[x]),y=t.useCallback(()=>{const e=p.current;e&&(e.pause(),x({isPlaying:!1,isPaused:!0}))},[x]),f=t.useCallback(()=>{h.isPlaying?y():g()},[h.isPlaying,g,y]),b=t.useCallback(e=>{const t=p.current;if(!t)return;const r=Math.max(0,Math.min(e,t.duration||0));t.currentTime=r,x({currentTime:r})},[x]),k=t.useCallback(e=>{const t=p.current;if(!t)return;const r=Math.max(0,Math.min(1,e));t.volume=r,t.muted=0===r,x({volume:r,isMuted:0===r})},[x]),w=t.useCallback(()=>{const e=p.current;e&&(e.muted=!e.muted,x({isMuted:e.muted}))},[x]),C=t.useCallback(e=>{const t=p.current;t&&(t.playbackRate=e,x({playbackRate:e}))},[x]),E=t.useCallback(async()=>{const e=m.current;if(e)try{await c(e),x({isFullscreen:!0})}catch(e){}},[x]),j=t.useCallback(async()=>{try{await o(),x({isFullscreen:!1})}catch(e){}},[x]),_=t.useCallback(async()=>{h.isFullscreen?await j():await E()},[h.isFullscreen,E,j]),N=t.useCallback(async()=>{const e=p.current;if(e&&a())try{await e.requestPictureInPicture(),x({isPip:!0})}catch(e){}},[x]),P=t.useCallback(async()=>{if(document.pictureInPictureElement)try{await document.exitPictureInPicture(),x({isPip:!1})}catch(e){}},[x]),S=t.useCallback(async()=>{h.isPip?await P():await N()},[h.isPip,N,P]);return t.useEffect(()=>{const e=p.current;if(!e)return;e.muted=n,e.volume=l,e.playbackRate=d,e.loop=s;const t={loadedmetadata:()=>{x({duration:e.duration})},timeupdate:()=>{x({currentTime:e.currentTime,buffered:u(e)})},play:()=>{x({isPlaying:!0,isPaused:!1,isEnded:!1})},pause:()=>{x({isPlaying:!1,isPaused:!0})},ended:()=>{x({isPlaying:!1,isPaused:!0,isEnded:!0})},waiting:()=>{x({isBuffering:!0})},canplay:()=>{x({isBuffering:!1})},seeking:()=>{x({isSeeking:!0})},seeked:()=>{x({isSeeking:!1})},volumechange:()=>{x({volume:e.volume,isMuted:e.muted})},ratechange:()=>{x({playbackRate:e.playbackRate})},error:()=>{x({error:e.error})},enterpictureinpicture:()=>{x({isPip:!0})},leavepictureinpicture:()=>{x({isPip:!1})}};return Object.entries(t).forEach(([t,r])=>{e.addEventListener(t,r)}),r&&g(),()=>{Object.entries(t).forEach(([t,r])=>{e.removeEventListener(t,r)})}},[r,n,s,l,d,g,x]),t.useEffect(()=>{const e=()=>{const e=!!i();x({isFullscreen:e})};return document.addEventListener("fullscreenchange",e),document.addEventListener("webkitfullscreenchange",e),document.addEventListener("mozfullscreenchange",e),document.addEventListener("MSFullscreenChange",e),()=>{document.removeEventListener("fullscreenchange",e),document.removeEventListener("webkitfullscreenchange",e),document.removeEventListener("mozfullscreenchange",e),document.removeEventListener("MSFullscreenChange",e)}},[x]),{state:h,videoRef:p,containerRef:m,play:g,pause:y,togglePlay:f,seek:b,setVolume:k,toggleMute:w,setPlaybackRate:C,enterFullscreen:E,exitFullscreen:j,toggleFullscreen:_,enterPip:N,exitPip:P,togglePip:S}},exports.useVast=H;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|