{"version":3,"file":"FlowPlay_Custom_Videos.DNkfmCOn.mjs","names":["useRef","useState","useMemo","useCallback","_Fragment"],"sources":["https:/framerusercontent.com/modules/5hCH0yEyh6JRHF0XdZb9/JKW818qOGrPUpLI8QyL1/FlowPlay_Custom_Videos.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useState,useRef,useEffect,useMemo,useCallback,cloneElement,isValidElement}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{motion,AnimatePresence}from\"framer-motion\";import{useVideoStore}from\"https://framer.com/m/VidStore-UIeQ.js@qErBa8F3a3y8M7HDVLe9\";/**\n * FramePlay\n * By Dan Marek\n *\n * @framerDisableUnlink\n *\n */// ==============================\n// SegmentedChapterTimeline.tsx\n// ==============================\n/**\n * @typedef {Object} Chapter\n * @property {string} title\n * @property {number} [start] - backwards compatibility\n * @property {number} [minutes]\n * @property {number} [seconds]\n *//**\n * @param {Object} props\n * @param {number} props.duration\n * @param {number} props.progress\n * @param {Chapter[]} props.chapters\n * @param {function(number): void} props.onSeek\n * @param {string} [props.color=\"#FF0000\"]\n * @param {string} [props.bg=\"rgba(255,255,255,0.18)\"]\n * @param {number} [props.height=6]\n * @param {number} [props.radius=999]\n * @param {number} [props.hoverHeight=10] - height ONLY on hover (px)\n * @param {number} [props.segmentGap=1] - gap between segments (px)\n */function SegmentedChapterTimeline({duration,progress,chapters,onSeek,color=\"#FF0000\",bg=\"rgba(255,255,255,0.18)\",height=6,radius=999,hoverHeight=10,segmentGap=1}){const ref=useRef(null);const[hover,setHover]=useState(null);const[dragging,setDragging]=useState(false);const clamp=(n,min,max)=>Math.max(min,Math.min(max,n));// Convert chapters to have consistent start times in seconds\nconst normalizedChapters=useMemo(()=>{return chapters.map(chapter=>({...chapter,start:chapter.start??(chapter.minutes??0)*60+(chapter.seconds??0)}));},[chapters]);const pct=sec=>{const effectiveDuration=duration>0?duration:normalizedChapters.length>0?Math.max(...normalizedChapters.map(c=>c.start))+60:0;return effectiveDuration?sec/effectiveDuration*100:0;};// Build contiguous segments from chapter starts\nconst segments=useMemo(()=>{// For YouTube, use the last chapter's start time + 60 seconds as fallback duration\nconst effectiveDuration=duration>0?duration:normalizedChapters.length>0?Math.max(...normalizedChapters.map(c=>c.start))+60:0;if(!effectiveDuration||effectiveDuration<=0)return[];const sorted=[...normalizedChapters].filter(c=>c.start<effectiveDuration).sort((a,b)=>a.start-b.start);const starts=sorted.map(c=>c.start);if(starts[0]!==0)starts.unshift(0);if(starts[starts.length-1]!==effectiveDuration)starts.push(effectiveDuration);const segs=[];for(let i=0;i<starts.length-1;i++){const start=starts[i];const end=starts[i+1];const title=sorted.find(c=>c.start===start)?.title??`Chapter ${i+1}`;segs.push({start,end,title});}return segs;},[normalizedChapters,duration]);const seekFromClientX=clientX=>{const el=ref.current;const effectiveDuration=duration>0?duration:normalizedChapters.length>0?Math.max(...normalizedChapters.map(c=>c.start))+60:0;if(!el||!effectiveDuration)return;const rect=el.getBoundingClientRect();const rel=clamp(clientX-rect.left,0,rect.width);const t=rel/rect.width*effectiveDuration;onSeek(t);};const handlePointerDown=e=>{e.target.setPointerCapture?.(e.pointerId);setDragging(true);seekFromClientX(e.clientX);};const handlePointerMove=e=>{const effectiveDuration=duration>0?duration:normalizedChapters.length>0?Math.max(...normalizedChapters.map(c=>c.start))+60:0;if(!ref.current||!effectiveDuration)return;const rect=ref.current.getBoundingClientRect();const x=clamp(e.clientX-rect.left,0,rect.width);const t=x/rect.width*effectiveDuration;// More robust segment finding\nlet idx=-1;for(let i=0;i<segments.length;i++){if(t>=segments[i].start&&(t<segments[i].end||i===segments.length-1&&t<=segments[i].end)){idx=i;break;}}// If still not found, find the closest segment\nif(idx===-1&&segments.length>0){idx=0;for(let i=1;i<segments.length;i++){if(Math.abs(t-segments[i].start)<Math.abs(t-segments[idx].start)){idx=i;}}}if(idx>=0){setHover({x,idx});}if(dragging)seekFromClientX(e.clientX);};const handlePointerUp=()=>setDragging(false);return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\"},children:[hover&&segments[hover.idx]&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:hover.x,bottom:height+12,transform:\"translateX(-50%)\",background:\"rgba(28,28,30,0.92)\",color:\"#fff\",fontSize:12,padding:\"6px 8px\",borderRadius:8,border:\"1px solid rgba(255,255,255,0.15)\",whiteSpace:\"nowrap\",pointerEvents:\"none\",zIndex:2},children:segments[hover.idx].title}),/*#__PURE__*/_jsx(\"div\",{ref:ref,role:\"slider\",\"aria-valuemin\":0,\"aria-valuemax\":Math.floor(duration>0?duration:normalizedChapters.length>0?Math.max(...normalizedChapters.map(c=>c.start))+60:0),\"aria-valuenow\":Math.floor(progress||0),tabIndex:0,onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp:handlePointerUp,onPointerCancel:handlePointerUp,onPointerLeave:()=>setHover(null),onKeyDown:e=>{const effectiveDuration=duration>0?duration:normalizedChapters.length>0?Math.max(...normalizedChapters.map(c=>c.start))+60:0;if(!effectiveDuration)return;if(e.key===\"ArrowLeft\")onSeek(Math.max(0,progress-5));if(e.key===\"ArrowRight\")onSeek(Math.min(effectiveDuration,progress+5));if(e.key===\"Home\")onSeek(0);if(e.key===\"End\")onSeek(effectiveDuration);},style:{position:\"relative\",width:\"100%\",height:hover?hoverHeight:height,cursor:\"pointer\",userSelect:\"none\",touchAction:\"none\",outline:\"none\",transition:\"height 120ms ease\",display:\"flex\"},children:segments.map((s,i)=>{const widthPct=`${pct(s.end-s.start)}%`;const playedPctWithin=progress<=s.start?0:progress>=s.end?100:(progress-s.start)/(s.end-s.start)*100;// Direct hover detection - no reversal needed\nconst isHover=hover?.idx===i;return /*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:widthPct,height:\"100%\",paddingLeft:i>0?`${segmentGap}px`:\"0\"},onClick:e=>{const el=e.currentTarget;const rect=el.getBoundingClientRect();const x=clamp(e.clientX-rect.left,0,rect.width);const t=s.start+x/rect.width*(s.end-s.start);onSeek(t);},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:i>0?`${segmentGap}px`:\"0\",right:0,top:\"50%\",transform:`translateY(-50%)`,height:isHover?hoverHeight:height,background:bg,borderRadius:radius,overflow:\"hidden\",transition:\"height 120ms ease\"},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:0,bottom:0,width:`${playedPctWithin}%`,background:color,transition:dragging?\"none\":\"width 80ms linear\"}})})},i);})})]});}export default function CustomVideoPlayer(props){// State Management\nconst[state,setState]=useState({isPlaying:false,isInView:false,userInteracted:false,hasPlayedOnce:false,muted:props.defaultSettings?.muted||false,speed:props.defaultSettings?.speed||1,volume:props.defaultSettings?.volume||1,progress:0,duration:0,fileUrl:null,hovering:false,fullscreen:false,loading:true,isPiP:false,loop:props.loop||false,currentVideoIndex:0,totalVideos:1,isPlaylistComplete:false,volumeHover:false,showPlayPauseFeedback:false,feedbackIcon:null,isTransitioning:false});// Add store hook for chapter sync\nconst[videoStore,setVideoStore]=useVideoStore();const[isDragging,setIsDragging]=useState(false);const[pipSupported,setPipSupported]=useState(false);const[isVimeoReady,setIsVimeoReady]=useState(false);const[hasAudio,setHasAudio]=useState(true)// Assume true until we can detect\n;const vimeoPlayer=useRef(null);const preloadVideoRef=useRef(null)// For preloading next video\n;const refs={video:useRef(null),container:useRef(null)};const controlsRef=useRef(null);const clickLock=useRef(false);// --- Glow refs/state + helpers ---\nconst canvasRef=useRef(null);const[glowColor,setGlowColor]=useState(\"rgba(100,100,100,0.3)\");const isBlobUrl=u=>typeof u===\"string\"&&u.startsWith(\"blob:\");const[canSample,setCanSample]=useState(false);const isMediaUrl=u=>typeof u===\"string\"&&(u.startsWith(\"blob:\")||u.startsWith(\"data:video/\")||/\\.(mp4|webm|ogg)(\\?.*)?$/i.test(u||\"\"));const usingVideoForUrl=props.sourceType===\"url\"&&isMediaUrl(props.videoUrl);const usingVideoTag=props.sourceType===\"file\"||usingVideoForUrl;const cornerRadius=props.style?.cornerRadius||0;const glowEnabled=!!props.glow?.enabled;const glowIntensity=props.glow?.intensity??.6;const glowBlur=props.glow?.blur??50;const glowSpread=props.glow?.spread??20;// Move iframeRef here (before it's used)\nconst iframeRef=useRef(null);const youtubePlayer=useRef(null);const progressInterval=useRef(null);// MOVE PLAYLIST HELPER FUNCTIONS HERE - Before any effects that use them\n// Get current video source with detailed logging\nconst getCurrentVideoSource=useCallback(()=>{console.log(\"[Playlist Debug] getCurrentVideoSource called\");console.log(\"[Playlist Debug] Mode:\",props.mode);console.log(\"[Playlist Debug] Source type:\",props.sourceType);console.log(\"[Playlist Debug] Current index:\",state.currentVideoIndex);let source=null;if(props.mode===\"single\"){console.log(\"[Playlist Debug] Single mode - using direct props\");switch(props.sourceType){case\"file\":source=props.videoFile;break;case\"url\":source=props.videoUrl;break;case\"youtube\":source=props.youtubeId;break;case\"vimeo\":source=props.vimeoId;break;default:source=props.videoFile;}}else{console.log(\"[Playlist Debug] Multiple mode - using array props\");const currentIndex=state.currentVideoIndex;console.log(\"[Playlist Debug] Array lengths:\",{videoFiles:props.videoFiles?.length||0,videoUrls:props.videoUrls?.length||0,youtubeIds:props.youtubeIds?.length||0,vimeoIds:props.vimeoIds?.length||0});switch(props.sourceType){case\"file\":source=props.videoFiles?.[currentIndex];console.log(\"[Playlist Debug] File source at index\",currentIndex,\":\",source);break;case\"url\":source=props.videoUrls?.[currentIndex];console.log(\"[Playlist Debug] URL source at index\",currentIndex,\":\",source);break;case\"youtube\":source=props.youtubeIds?.[currentIndex];console.log(\"[Playlist Debug] YouTube source at index\",currentIndex,\":\",source);break;case\"vimeo\":source=props.vimeoIds?.[currentIndex];console.log(\"[Playlist Debug] Vimeo source at index\",currentIndex,\":\",source);break;default:console.warn(\"[Playlist Debug] Unknown source type:\",props.sourceType);source=null;}}console.log(\"[Playlist Debug] Final source:\",source);return source;},[props.mode,props.sourceType,state.currentVideoIndex,props.videoFile,props.videoUrl,props.youtubeId,props.vimeoId,props.videoFiles,props.videoUrls,props.youtubeIds,props.vimeoIds]);// Get total number of videos in current mode\nconst getTotalVideos=useCallback(()=>{console.log(\"[Playlist Debug] getTotalVideos called\");console.log(\"[Playlist Debug] Mode:\",props.mode);console.log(\"[Playlist Debug] Source type:\",props.sourceType);if(props.mode===\"single\"){console.log(\"[Playlist Debug] Single mode - returning 1\");return 1;}let total=0;switch(props.sourceType){case\"file\":total=props.videoFiles?.length||0;console.log(\"[Playlist Debug] File mode - total videos:\",total,\"| array:\",props.videoFiles);break;case\"url\":total=props.videoUrls?.length||0;console.log(\"[Playlist Debug] URL mode - total videos:\",total,\"| array:\",props.videoUrls);break;case\"youtube\":total=props.youtubeIds?.length||0;console.log(\"[Playlist Debug] YouTube mode - total videos:\",total,\"| array:\",props.youtubeIds);break;case\"vimeo\":total=props.vimeoIds?.length||0;console.log(\"[Playlist Debug] Vimeo mode - total videos:\",total,\"| array:\",props.vimeoIds);break;default:console.warn(\"[Playlist Debug] Unknown source type:\",props.sourceType);total=0;}console.log(\"[Playlist Debug] Final total videos:\",total);return total;},[props.mode,props.sourceType,props.videoFiles,props.videoUrls,props.youtubeIds,props.vimeoIds]);// Advance to next video in playlist\nconst advanceToNextVideo=useCallback(()=>{console.log(\"[Playlist Debug] advanceToNextVideo() called\");console.log(\"[Playlist Debug] Current state:\",{currentVideoIndex:state.currentVideoIndex,isPlaying:state.isPlaying,mode:props.mode,sourceType:props.sourceType,loop:props.loop});// Start fade-out transition\nsetState(prev=>({...prev,isTransitioning:true}));// Wait for fade-out animation before switching videos\nsetTimeout(()=>{const totalVideos=getTotalVideos();const nextIndex=state.currentVideoIndex+1;console.log(\"[Playlist Debug] Video counts:\",{totalVideos,currentIndex:state.currentVideoIndex,nextIndex,willAdvance:nextIndex<totalVideos});if(nextIndex>=totalVideos){// End of playlist\nconsole.log(\"[Playlist Debug] End of playlist reached\");if(props.loop){// Loop entire playlist - restart from beginning and continue playing\nconsole.log(\"[Playlist Debug] Looping playlist - restarting from beginning\");setState(prev=>({...prev,currentVideoIndex:0,progress:0,isPlaylistComplete:false,isPlaying:true,hasPlayedOnce:true,isTransitioning:false}));// Auto-play will be handled by the useEffect hook\n}else{// No loop - reset to first video but stay paused\nconsole.log(\"[Playlist Debug] Playlist complete - resetting to first video (paused)\");setState(prev=>({...prev,currentVideoIndex:0,progress:0,isPlaying:false,isPlaylistComplete:true,isTransitioning:false}));}}else{// Move to next video and continue playing\nconsole.log(`[Playlist Debug] Advancing to video ${nextIndex+1}/${totalVideos}`);setState(prev=>({...prev,currentVideoIndex:nextIndex,progress:0,duration:0,isPlaying:true,isPlaylistComplete:false,hasPlayedOnce:true,isTransitioning:false}));// Auto-play will be handled by the useEffect hook\n}},150)// 150ms fade-out duration\n;},[state.currentVideoIndex,getTotalVideos,props.loop,props.sourceType]);// Video end event handlers with enhanced logging\nconst handleVideoEnded=useCallback(()=>{console.log(\"[Playlist Debug] handleVideoEnded called\");console.log(\"[Playlist Debug] Current mode:\",props.mode);console.log(\"[Playlist Debug] Current video index:\",state.currentVideoIndex);advanceToNextVideo();},[advanceToNextVideo,props.mode,state.currentVideoIndex]);const handleVideoError=useCallback(error=>{console.warn(\"[Playlist Debug] handleVideoError called:\",error);console.log(\"[Playlist Debug] Current video index:\",state.currentVideoIndex);console.log(\"[Playlist Debug] Will skip to next video\");advanceToNextVideo()// Skip to next video on error\n;},[advanceToNextVideo,state.currentVideoIndex]);const hexToRgba=(hex,a=1)=>{if(!hex)return`rgba(0,0,0,${a})`;let c=hex.replace(\"#\",\"\");if(c.length===3)c=c.split(\"\").map(x=>x+x).join(\"\");const n=parseInt(c,16);const r=n>>16&255,g=n>>8&255,b=n&255;return`rgba(${r}, ${g}, ${b}, ${a})`;};const withAlpha=(color,a=1)=>{if(!color)return`rgba(0,0,0,${a})`;if(color.startsWith(\"#\"))return hexToRgba(color,a);if(color.startsWith(\"rgba(\")){const parts=color.slice(5,-1).split(\",\").map(s=>s.trim());return`rgba(${parts[0]}, ${parts[1]}, ${parts[2]}, ${a})`;}if(color.startsWith(\"rgb(\")){return`rgba(${color.slice(4,-1)}, ${a})`;}return color;};const fallbackGlowBase=props.controlsStyle?.progressColor||\"#FF0000\";const fallbackGlowColor=withAlpha(fallbackGlowBase,glowIntensity);// File = sampled glow; others = fallback color\nconst effectiveGlowColor=usingVideoTag&&canSample?glowColor:fallbackGlowColor;const mediaBoxShadow=glowEnabled?`0 0 ${glowBlur}px ${glowSpread}px ${effectiveGlowColor}`:\"none\";useEffect(()=>{console.log(\"[Glow] props.glow =\",props.glow);console.log(\"[Glow] glowEnabled =\",glowEnabled,\"| intensity =\",glowIntensity,\"| blur =\",glowBlur,\"| spread =\",glowSpread);console.log(\"[Glow] effectiveGlowColor =\",effectiveGlowColor);console.log(\"[Glow] mediaBoxShadow =\",mediaBoxShadow);},[props.glow,glowEnabled,glowIntensity,glowBlur,glowSpread,effectiveGlowColor,mediaBoxShadow]);useEffect(()=>{const cont=refs.container.current;if(!cont)return;const cs=window.getComputedStyle(cont);console.log(\"[Glow] container overflow =\",cs.overflow,\"| glowEnabled =\",glowEnabled);},[glowEnabled]);useEffect(()=>{console.log(\"[Glow] glowColor updated =\",glowColor);},[glowColor]);useEffect(()=>{if(!glowEnabled)return;const el=usingVideoTag?refs.video.current:iframeRef.current;if(!el){console.log(\"[Glow] no media element for computedStyle check\");return;}const cs=window.getComputedStyle(el);console.log(\"[Glow] computed boxShadow =\",cs.boxShadow);},[glowEnabled,mediaBoxShadow,usingVideoTag]);useEffect(()=>{const video=refs.video.current;if(video&&props.mode===\"single\"){// Only apply to single mode\nconsole.log(\"Loop effect triggered, props.loop:\",props.loop);video.loop=props.loop;console.log(\"Video loop property set to:\",video.loop);setState(prev=>({...prev,loop:props.loop}));}else if(video&&props.mode===\"multiple\"){// Ensure loop is always false in multiple mode\nvideo.loop=false;console.log(\"Multiple mode: Video loop forced to false\");}},[props.loop,props.mode]);useEffect(()=>{if(props.sourceType!==\"vimeo\"||!iframeRef.current)return;function loadVimeoAPI(){if(window.Vimeo){initializeVimeoPlayer();}else if(!document.querySelector(\"#vimeo-player-script\")){const script=document.createElement(\"script\");script.id=\"vimeo-player-script\";script.src=\"https://player.vimeo.com/api/player.js\";script.async=true;script.onload=initializeVimeoPlayer;document.body.appendChild(script);}}function initializeVimeoPlayer(){if(!iframeRef.current||!window.Vimeo)return;vimeoPlayer.current=new window.Vimeo.Player(iframeRef.current);vimeoPlayer.current.on(\"play\",()=>setState(prev=>({...prev,isPlaying:true,hasPlayedOnce:true})));vimeoPlayer.current.on(\"pause\",()=>setState(prev=>({...prev,isPlaying:false})));vimeoPlayer.current.on(\"ended\",()=>{console.log(\"[Playlist Debug] Vimeo video ended\");console.log(\"[Playlist Debug] Mode:\",props.mode);console.log(\"[Playlist Debug] Current index:\",state.currentVideoIndex);if(props.mode===\"multiple\"){console.log(\"[Playlist Debug] Multiple mode - calling advanceToNextVideo\");advanceToNextVideo();}else if(props.loop){console.log(\"[Playlist Debug] Single mode with loop - replaying\");vimeoPlayer.current.play();}else{console.log(\"[Playlist Debug] Single mode without loop - ended\");}});vimeoPlayer.current.on(\"error\",error=>{console.warn(\"[Playlist Debug] Vimeo error:\",error);console.log(\"[Playlist Debug] Mode:\",props.mode);console.log(\"[Playlist Debug] Current index:\",state.currentVideoIndex);if(props.mode===\"multiple\"){console.log(\"[Playlist Debug] Multiple mode - calling advanceToNextVideo due to error\");advanceToNextVideo();}});vimeoPlayer.current.on(\"timeupdate\",data=>{setState(prev=>({...prev,progress:data.seconds,duration:data.duration}));});vimeoPlayer.current.on(\"volumechange\",data=>{setState(prev=>({...prev,volume:data.volume,muted:data.volume===0}));});// Fix for live sites: Try to unmute if autoplay is off and muted is off\nvimeoPlayer.current.on(\"loaded\",()=>{if(!props.autoPlay&&!props.defaultSettings?.muted){setTimeout(()=>{vimeoPlayer.current.setVolume(state.volume||1).catch(()=>{// Silently handle if unmuting fails due to browser policies\n});},100);}});setIsVimeoReady(true);}loadVimeoAPI();return()=>{if(vimeoPlayer.current){vimeoPlayer.current.destroy().catch(()=>{});}};},[props.sourceType,props.vimeoId,props.autoPlay,props.loop]);const controlEmbeddedVideo=action=>{if(!vimeoPlayer.current)return;const vimeoActions={play:()=>vimeoPlayer.current.play(),pause:()=>vimeoPlayer.current.pause(),mute:()=>vimeoPlayer.current.setVolume(0),unmute:()=>vimeoPlayer.current.setVolume(state.volume||1),seek:()=>vimeoPlayer.current.setCurrentTime(state.progress)};try{vimeoActions[action]?.();}catch(error){console.error(\"Vimeo control error:\",error);}};useEffect(()=>{if(!props.showControls&&props.autoPlay){const observer=new IntersectionObserver(([entry])=>{setState(prev=>({...prev,isInView:entry.isIntersecting}));},{threshold:.5});if(refs.container.current){observer.observe(refs.container.current);}return()=>{if(refs.container.current){observer.unobserve(refs.container.current);}};}},[props.showControls,props.autoPlay]);useEffect(()=>{const video=refs.video.current;if(!video)return;const attemptPlay=async()=>{try{await video.play();setState(prev=>({...prev,isPlaying:true,hasPlayedOnce:true}));}catch(error){video.muted=true// Mute to allow autoplay\n;setState(prev=>({...prev,muted:true}));await video.play();setState(prev=>({...prev,isPlaying:true,hasPlayedOnce:true}));}};if(!state.userInteracted&&props.autoPlay&&state.isInView){attemptPlay();}},[state.isInView,props.autoPlay,state.userInteracted]);useEffect(()=>{const thumbSize=props.controlsStyle?.thumbSize||12;const trackHeight=4// Adjust this if needed\n;const style=document.createElement(\"style\");style.textContent=`\n            input[type='range'] {\n                -webkit-appearance: none;\n                appearance: none;\n                width: 100%;\n                background: transparent;\n                position: relative;\n            }\n            \n            input[type='range']::-webkit-slider-runnable-track {\n                width: 100%;\n                height: ${trackHeight}px;\n                border-radius: ${trackHeight/2}px;\n                background: rgba(255, 255, 255, 0.2);\n                cursor: pointer;\n            }\n\n            input[type='range']::-webkit-slider-thumb {\n                -webkit-appearance: none;\n                appearance: none;\n                width: ${thumbSize}px;\n                height: ${thumbSize}px;\n                background-color: ${props.controlsStyle?.thumbColor||\"#FFFFFF\"};\n                border: ${props.controlsStyle?.thumbBorder||\"none\"};\n                border-radius: 50%;\n                cursor: pointer;\n                margin-top: -${(thumbSize-trackHeight)/2}px; /* Ensures proper centering */\n            }\n\n            input[type='range']::-moz-range-track {\n                width: 100%;\n                height: ${trackHeight}px;\n                border-radius: ${trackHeight/2}px;\n                background: rgba(255, 255, 255, 0.2);\n                cursor: pointer;\n            }\n\n            input[type='range']::-moz-range-thumb {\n                width: ${thumbSize}px;\n                height: ${thumbSize}px;\n                background-color: ${props.controlsStyle?.thumbColor||\"#FFFFFF\"};\n                border: ${props.controlsStyle?.thumbBorder||\"none\"};\n                border-radius: 50%;\n                cursor: pointer;\n            }\n        `;document.head.appendChild(style);return()=>document.head.removeChild(style);},[props.controlsStyle?.thumbSize,props.controlsStyle?.thumbColor,props.controlsStyle?.thumbBorder]);// Add focus styles for accessibility\nuseEffect(()=>{const focusStyles=`\n            .video-player-button:focus {\n                outline: none; /* Remove outline */\n                opacity: 1;\n            }\n            \n            .video-player-button:focus:not(:focus-visible) {\n                outline: none;\n            }\n            \n            .video-player-button:focus-visible {\n                outline: none; /* Remove outline */\n            }\n            \n            .video-player-play-button:focus {\n                outline: none; /* Remove outline */\n                transform: translate(-50%, -50%) scale(1.05);\n            }\n\n            .video-player-container:focus {\n                outline: none; /* Remove outline */\n            }\n\n            .video-player-container:focus:not(:focus-visible) {\n                outline: none;\n            }\n\n            .video-player-container:focus-visible {\n                outline: none; /* Remove outline */\n            }\n        `;const styleElement=document.createElement(\"style\");styleElement.textContent=focusStyles;document.head.appendChild(styleElement);return()=>document.head.removeChild(styleElement);},[]);// Common Styles\nconst styles={rangeInput:{WebkitAppearance:\"none\",appearance:\"none\",height:\"4px\",borderRadius:\"2px\",cursor:\"pointer\",background:\"rgba(255, 255, 255, 0.2)\",position:\"relative\",margin:0,padding:0},button:{background:\"none\",border:\"none\",minWidth:\"44px\",minHeight:\"44px\",padding:\"8px\",cursor:\"pointer\",color:props.style?.controlsColor||\"#FFF\",opacity:.9,transition:\"all 0.2s ease\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",borderRadius:\"4px\",position:\"relative\"},playButton:{background:props.buttonStyle?.playButtonBackgroundColor,borderRadius:props.buttonStyle?.playButtonBorderRadius,padding:props.buttonStyle?.playButtonSize/10,width:props.buttonStyle?.playButtonSize,height:props.buttonStyle?.playButtonSize,backdropFilter:`blur(${props.buttonStyle?.playButtonBlur}px)`,cursor:\"pointer\",border:\"none\"},controlsStyle:{position:state.fullscreen?\"fixed\":\"absolute\",bottom:\"16px\",left:\"16px\",right:\"16px\",padding:\"12px 16px\",backdropFilter:\"blur(16px)\",backgroundColor:`rgba(28, 28, 30, ${props.style?.controlsOpacity||.6})`,borderRadius:\"12px\",display:\"flex\",alignItems:\"center\",gap:\"12px\",boxShadow:\"0 4px 12px rgba(0, 0, 0, 0.1)\",border:\"1px solid rgba(255, 255, 255, 0.1)\",zIndex:\"10000\"}};// Effects\nuseEffect(()=>{setPipSupported(document.pictureInPictureEnabled||document.webkitSupportsPresentationMode&&document.webkitSupportsPresentationMode(\"picture-in-picture\"));},[]);// Video source effect (updated for playlist support)\nuseEffect(()=>{const currentSource=getCurrentVideoSource();console.log(\"[Glow] current source =\",currentSource,\"| is File =\",currentSource instanceof File);console.log(\"[Playlist Debug] Video source effect - mode:\",props.mode,\"| index:\",state.currentVideoIndex);if(currentSource instanceof File){const objectURL=URL.createObjectURL(currentSource);console.log(\"[Glow] created objectURL =\",objectURL);setState(prev=>({...prev,fileUrl:objectURL}));return()=>{console.log(\"[Glow] revoke objectURL =\",objectURL);URL.revokeObjectURL(objectURL);};}else{// Handle DIRECT URL mode similarly when it's a real media file\nif(props.sourceType===\"url\"&&isMediaUrl(currentSource)){// For CDN URLs that commonly have CORS issues, skip fetch entirely\nconst corsProblematicDomains=[\"cdn.shopify.com\",\"assets.shopifycdn.com\",\"cdn.jsdelivr.net\",\"unpkg.com\",\"amazonaws.com\",\"cloudfront.net\",\"googleusercontent.com\",\"github.io\",\"netlify.app\"];const hasCorsIssues=corsProblematicDomains.some(domain=>currentSource.includes(domain));if(hasCorsIssues){console.log(\"[Glow] (url) skipping fetch for CORS-problematic domain, using direct URL\");setState(prev=>({...prev,fileUrl:currentSource}));return;}(async()=>{try{console.log(\"[Glow] (url) trying to fetch video to blob:\",currentSource);const res=await fetch(currentSource,{mode:\"cors\"});if(!res.ok)throw new Error(`HTTP ${res.status}`);const blob=await res.blob();const objectURL=URL.createObjectURL(blob);console.log(\"[Glow] (url) fetched blob, objectURL =\",objectURL);setState(prev=>({...prev,fileUrl:objectURL}));}catch(err){console.warn(\"[Glow] (url) fetch->blob failed; using direct URL (no sampling):\",err);setState(prev=>({...prev,fileUrl:currentSource}));}})();return;}// Original file mode\nif(props.sourceType===\"file\"&&typeof currentSource===\"string\"&&currentSource){(async()=>{try{console.log(\"[Glow] trying to fetch video to blob:\",currentSource);const res=await fetch(currentSource,{mode:\"cors\"});if(!res.ok)throw new Error(`HTTP ${res.status}`);const blob=await res.blob();const objectURL=URL.createObjectURL(blob);console.log(\"[Glow] fetched blob, objectURL =\",objectURL);setState(prev=>({...prev,fileUrl:objectURL}));}catch(err){console.warn(\"[Glow] fetch->blob failed; using direct URL (no sampling):\",err);setState(prev=>({...prev,fileUrl:currentSource}));}})();}else{console.log(\"[Glow] using direct URL =\",currentSource);setState(prev=>({...prev,fileUrl:currentSource}));}}},[getCurrentVideoSource,props.sourceType,props.mode,state.currentVideoIndex])// Add dependency on current video\n;useEffect(()=>{console.log(\"[Glow] state.fileUrl set to =\",state.fileUrl);setCanSample(isBlobUrl(state.fileUrl||\"\"));console.log(\"[Glow] canSample =\",isBlobUrl(state.fileUrl||\"\"),\"| url =\",state.fileUrl);},[state.fileUrl]);// Update total videos when playlist changes\nuseEffect(()=>{const totalVideos=getTotalVideos();setState(prev=>({...prev,totalVideos,// Reset to first video if current index is out of bounds\n    currentVideoIndex:prev.currentVideoIndex>=totalVideos?0:prev.currentVideoIndex,isPlaylistComplete:false}));},[getTotalVideos]);// Auto-play when video source changes in playlist mode\nuseEffect(()=>{if(props.mode!==\"multiple\")return;// Skip on initial mount (index 0, before first play)\nif(state.currentVideoIndex===0&&!state.hasPlayedOnce)return;const shouldAutoPlay=state.isPlaying&&!state.isPlaylistComplete;if(shouldAutoPlay){console.log(\"[Playlist Debug] Auto-play effect triggered for index:\",state.currentVideoIndex);const currentSource=getCurrentVideoSource();console.log(\"[Playlist Debug] Current source:\",currentSource);// Small delay to ensure new video is loaded\nconst timer=setTimeout(()=>{if(props.sourceType===\"youtube\"&&youtubePlayer.current){console.log(\"[Playlist Debug] Auto-playing YouTube video\");youtubePlayer.current.playVideo();}else if(props.sourceType===\"vimeo\"&&vimeoPlayer.current){console.log(\"[Playlist Debug] Auto-playing Vimeo video\");vimeoPlayer.current.play();}else if(refs.video.current){console.log(\"[Playlist Debug] Auto-playing HTML5 video\");refs.video.current.play().catch(error=>{console.warn(\"[Playlist] Auto-play on source change failed:\",error);});}},100)// Reduced delay since we're preloading videos now\n;return()=>clearTimeout(timer);}},[props.mode,state.currentVideoIndex,state.isPlaying,state.isPlaylistComplete,state.hasPlayedOnce,props.sourceType,getCurrentVideoSource]);// Preload next video in playlist for smooth transitions\nuseEffect(()=>{if(props.mode!==\"multiple\")return;if(props.sourceType!==\"file\"&&props.sourceType!==\"url\")return;const nextIndex=state.currentVideoIndex+1;const totalVideos=getTotalVideos();// Get next video source\nlet nextSource=null;if(nextIndex<totalVideos){if(props.sourceType===\"file\"){nextSource=props.videoFiles?.[nextIndex];}else if(props.sourceType===\"url\"){nextSource=props.videoUrls?.[nextIndex];}}else if(props.loop&&totalVideos>0){// If looping, preload first video\nif(props.sourceType===\"file\"){nextSource=props.videoFiles?.[0];}else if(props.sourceType===\"url\"){nextSource=props.videoUrls?.[0];}}if(nextSource){console.log(\"[Playlist Debug] Preloading next video:\",nextSource);// Create or update preload video element\nif(!preloadVideoRef.current){preloadVideoRef.current=document.createElement(\"video\");preloadVideoRef.current.style.display=\"none\";preloadVideoRef.current.preload=\"auto\";document.body.appendChild(preloadVideoRef.current);}preloadVideoRef.current.src=nextSource;preloadVideoRef.current.load();}// Cleanup\nreturn()=>{if(preloadVideoRef.current&&preloadVideoRef.current.parentNode){preloadVideoRef.current.pause();preloadVideoRef.current.src=\"\";}};},[props.mode,state.currentVideoIndex,props.sourceType,props.videoFiles,props.videoUrls,props.loop,getTotalVideos]);// Watch for state changes\nuseEffect(()=>{console.log(\"[Playlist Debug] State changed - currentVideoIndex:\",state.currentVideoIndex);console.log(\"[Playlist Debug] State changed - isPlaying:\",state.isPlaying);console.log(\"[Playlist Debug] State changed - progress:\",state.progress);console.log(\"[Playlist Debug] State changed - duration:\",state.duration);},[state.currentVideoIndex,state.isPlaying,state.progress,state.duration]);// Cleanup preload element on unmount\nuseEffect(()=>{return()=>{if(preloadVideoRef.current&&preloadVideoRef.current.parentNode){console.log(\"[Playlist Debug] Cleaning up preload video element\");preloadVideoRef.current.pause();preloadVideoRef.current.src=\"\";document.body.removeChild(preloadVideoRef.current);preloadVideoRef.current=null;}};},[]);// Watch for video source changes\nuseEffect(()=>{const currentSource=getCurrentVideoSource();console.log(\"[Playlist Debug] Video source effect triggered\");console.log(\"[Playlist Debug] Current source:\",currentSource);console.log(\"[Playlist Debug] Current video index:\",state.currentVideoIndex);// ... rest of existing video source effect logic\n},[getCurrentVideoSource,props.sourceType,state.currentVideoIndex]);// Track video src changes\nuseEffect(()=>{const video=refs.video.current;if(!video)return;console.log(\"[Playlist Debug] Video src effect - checking source\");console.log(\"[Playlist Debug] Expected source (fileUrl):\",state.fileUrl);console.log(\"[Playlist Debug] Actual video currentSrc:\",video.currentSrc);console.log(\"[Playlist Debug] Video readyState:\",video.readyState);console.log(\"[Playlist Debug] Current index:\",state.currentVideoIndex);// Check if the video source matches what we expect\nconst expectedSource=getCurrentVideoSource();if(video.currentSrc&&!video.currentSrc.includes(\"blob:\")&&expectedSource){const matches=video.currentSrc.includes(expectedSource)||typeof expectedSource===\"string\"&&expectedSource.includes(video.currentSrc);console.log(\"[Playlist Debug] Source matching check:\",{expected:expectedSource,actual:video.currentSrc,matches});}},[state.fileUrl,state.currentVideoIndex]);// Debug effect to check for multiple video elements\nuseEffect(()=>{const videos=document.querySelectorAll(\"video\");console.log(\"[Playlist Debug] Total video elements on page:\",videos.length);videos.forEach((video,index)=>{console.log(`[Playlist Debug] Video ${index}:`,{src:video.currentSrc,paused:video.paused,ended:video.ended,currentTime:video.currentTime,duration:video.duration});});},[state.currentVideoIndex]);// Probe once on load to allow sampling from CORS-enabled direct URLs\nuseEffect(()=>{if(!glowEnabled||!usingVideoTag)return;const video=refs.video.current;const canvas=canvasRef.current;if(!video||!canvas)return;const ctx=canvas.getContext(\"2d\",{willReadFrequently:true});if(!ctx)return;const tryProbe=()=>{if(video.readyState<2)return;try{canvas.width=1;canvas.height=1;ctx.drawImage(video,0,0,1,1);ctx.getImageData(0,0,1,1)// if this succeeds, we can sample\n;setCanSample(true);console.log(\"[Glow] probe success: sampling enabled (CORS OK)\");}catch(e){console.log(\"[Glow] probe failed: sampling disabled (likely CORS)\");setCanSample(isBlobUrl(state.fileUrl||\"\"))// keep blob-only if any\n;}};video.addEventListener(\"loadeddata\",tryProbe,{once:true});return()=>video.removeEventListener(\"loadeddata\",tryProbe);},[glowEnabled,usingVideoTag,state.fileUrl]);const videoStyle={width:\"100%\",height:\"100%\",objectFit:props.style?.videoFit||\"cover\",position:\"absolute\",top:0,left:0};// Ensure \"fill\" truly fills without gaps\nif(props.style?.videoFit===\"fill\"){videoStyle.width=\"100vw\"// Forces full width\n;videoStyle.height=\"100vh\"// Forces full height\n;}useEffect(()=>{const video=refs.video.current;if(!video)return;const handlePlay=()=>{setPipSupported(document.pictureInPictureEnabled);// If PiP is enabled for future use\nif(document.pictureInPictureEnabled){video.disablePictureInPicture=false;}};video.addEventListener(\"play\",handlePlay);return()=>video.removeEventListener(\"play\",handlePlay);},[]);useEffect(()=>{const observer=new IntersectionObserver(async([entry])=>{const video=refs.video.current;if(!video)return;setState(prev=>({...prev,isInView:entry.isIntersecting}));// Handle play/pause based on visibility\nif(entry.isIntersecting){if(state.isPlaying){try{await video.play();}catch(error){console.error(\"Play failed:\",error);}}// Exit PiP if active\nif(document.pictureInPictureElement){try{await document.exitPictureInPicture();}catch(error){console.error(\"Exit PiP failed:\",error);}}}else{// When out of view\nif(state.isPlaying){if(props.controls?.showPictureInPicture&&document.pictureInPictureEnabled){try{await video.requestPictureInPicture();}catch(error){console.error(\"PiP failed:\",error);// If PiP fails, pause the video\nvideo.pause();setState(prev=>({...prev,isPlaying:false}));}}else{// If PiP not enabled, just pause\nvideo.pause();setState(prev=>({...prev,isPlaying:false}));}}}},{threshold:.5}// Adjust threshold for smoother transitions\n);if(refs.container.current){observer.observe(refs.container.current);return()=>observer.disconnect();}},[state.isPlaying,props.controls?.showPictureInPicture]);// PiP change effect\nuseEffect(()=>{const video=refs.video.current;if(!video)return;const handleEnteredPiP=()=>{console.log(\"Entering PiP, setting loop to:\",props.mode===\"single\"?props.loop:false);video.loop=props.mode===\"single\"?props.loop:false;console.log(\"PiP video loop property:\",video.loop);};video.addEventListener(\"enterpictureinpicture\",handleEnteredPiP);return()=>{video.removeEventListener(\"enterpictureinpicture\",handleEnteredPiP);};},[props.loop]);// Helper Functions\nconst formatTime=seconds=>{if(!seconds)return\"0:00\";const minutes=Math.floor(seconds/60);const remainingSeconds=Math.floor(seconds%60);return`${minutes}:${remainingSeconds.toString().padStart(2,\"0\")}`;};// Event Handlers (moved up)\nconst handleTimeUpdate=()=>{if(!isDragging&&refs.video.current){const currentTime=refs.video.current.currentTime;const duration=refs.video.current.duration;// Log when we're near the end of a video\nif(duration>0&&currentTime>duration-1){console.log(\"[Playlist Debug] Video near end:\",{currentVideoIndex:state.currentVideoIndex,currentTime,duration,timeRemaining:duration-currentTime});}setState(prev=>({...prev,progress:currentTime,duration:duration}));}};const handleLoadedData=()=>{setState(prev=>({...prev,loading:false,duration:refs.video.current.duration}));};// Show play/pause feedback\nconst showPlayPauseFeedback=useCallback(icon=>{setState(prev=>({...prev,showPlayPauseFeedback:true,feedbackIcon:icon}));setTimeout(()=>{setState(prev=>({...prev,showPlayPauseFeedback:false,feedbackIcon:null}));},500)// Show for 500ms like Wistia\n;},[]);const handlePlayPause=useCallback(async()=>{console.log(\"[FramePlay] handlePlayPause() fired\",{sourceType:props.sourceType,stateIsPlaying:state.isPlaying});if(props.sourceType===\"vimeo\"&&vimeoPlayer.current){try{const isPaused=await vimeoPlayer.current.getPaused();console.log(\"[FramePlay] Vimeo current paused?\",isPaused);if(isPaused){await vimeoPlayer.current.play();console.log(\"[FramePlay] Vimeo -> play()\");setState(prev=>({...prev,isPlaying:true,hasPlayedOnce:true}));showPlayPauseFeedback(\"play\");}else{await vimeoPlayer.current.pause();console.log(\"[FramePlay] Vimeo -> pause()\");setState(prev=>({...prev,isPlaying:false}));showPlayPauseFeedback(\"pause\");}}catch(error){console.error(\"[FramePlay] Vimeo play/pause error:\",error);}}else if(props.sourceType===\"youtube\"){try{const player=youtubePlayer.current;if(player?.getPlayerState){const YTState=window.YT?.PlayerState||{};const code=player.getPlayerState();const isCurrentlyPlaying=code===YTState.PLAYING||code===YTState.BUFFERING;if(isCurrentlyPlaying){player.pauseVideo();showPlayPauseFeedback(\"pause\");}else{player.playVideo();showPlayPauseFeedback(\"play\");}// Do NOT set isPlaying here. onStateChange will update UI.\n}else if(iframeRef.current){// Fallback if API not ready yet\nconst message={event:\"command\",func:state.isPlaying?\"pauseVideo\":\"playVideo\"};iframeRef.current.contentWindow.postMessage(JSON.stringify(message),\"*\");}}catch(error){console.error(\"[FramePlay] YouTube play/pause error:\",error);}}else{const video=refs.video.current;if(!video){console.warn(\"[FramePlay] <video> ref missing\");return;}try{if(state.isPlaying){console.log(\"[FramePlay] HTML5 -> pause()\");video.pause();showPlayPauseFeedback(\"pause\");}else{console.log(\"[FramePlay] HTML5 -> play()\");await video.play();setState(prev=>({...prev,hasPlayedOnce:true}));showPlayPauseFeedback(\"play\");}}catch(err){console.error(\"[FramePlay] HTML5 play/pause error:\",err);}}},[props.sourceType,state.isPlaying,showPlayPauseFeedback]);const safeToggle=useCallback(()=>{if(clickLock.current){console.log(\"[FramePlay] safeToggle: locked, skipping\");return;}clickLock.current=true;console.log(\"[FramePlay] safeToggle: toggling\");Promise.resolve(handlePlayPause()).finally(()=>{setTimeout(()=>{clickLock.current=false;console.log(\"[FramePlay] safeToggle: unlocked\");},120)// short guard\n;});},[handlePlayPause]);const handleMute=useCallback(async()=>{if(props.sourceType===\"vimeo\"&&vimeoPlayer.current){try{const currentVolume=await vimeoPlayer.current.getVolume();if(currentVolume>0){await vimeoPlayer.current.setVolume(0);setState(prev=>({...prev,muted:true}));}else{await vimeoPlayer.current.setVolume(state.volume||1);setState(prev=>({...prev,muted:false}));}}catch(error){console.error(\"Vimeo mute/unmute error:\",error);}}else if(props.sourceType===\"youtube\"&&youtubePlayer.current){try{const currentlyMuted=youtubePlayer.current.isMuted();if(currentlyMuted)youtubePlayer.current.unMute();else youtubePlayer.current.mute();const muted=youtubePlayer.current.isMuted();const volume=youtubePlayer.current.getVolume()/100;setState(prev=>({...prev,muted,volume}));}catch(error){console.error(\"YouTube mute/unmute error:\",error);}}else if(props.sourceType===\"youtube\"&&iframeRef.current){// Fallback if YT Player instance isn't ready\ntry{const message={event:\"command\",func:state.muted?\"unMute\":\"mute\"};iframeRef.current.contentWindow.postMessage(JSON.stringify(message),\"*\");}catch(error){console.error(\"YouTube mute/unmute error:\",error);}// We'll resync on next polling tick\n}else{const video=refs.video.current;if(video)video.muted=!video.muted;setState(prev=>({...prev,muted:!prev.muted}));}},[props.sourceType,state.muted,state.volume]);const toggleFullscreen=useCallback(async()=>{const container=refs.container.current;if(!container)return;try{if(!document.fullscreenElement){await container.requestFullscreen();}else{await document.exitFullscreen();}setState(prev=>({...prev,fullscreen:!prev.fullscreen}));}catch(error){console.error(\"Fullscreen failed:\",error);}},[state.fullscreen]);// Enhanced keyboard handler with YouTube support\nconst handleKeyDown=useCallback(e=>{// Don't handle if user is typing in an input\nif(e.target.tagName===\"INPUT\"||e.target.tagName===\"TEXTAREA\"){return;}// Prevent default for these specific keys\nif([\" \",\"ArrowLeft\",\"ArrowRight\",\"ArrowUp\",\"ArrowDown\",\"KeyM\",\"KeyF\"].includes(e.code)){e.preventDefault();e.stopPropagation();}const video=refs.video.current;switch(e.code){case\"Space\":handlePlayPause();break;case\"ArrowLeft\":const skipBackTime=Math.max(0,state.progress-10);if(props.sourceType===\"youtube\"&&youtubePlayer.current?.seekTo){youtubePlayer.current.seekTo(skipBackTime,true);}else if(props.sourceType===\"vimeo\"&&vimeoPlayer.current?.setCurrentTime){vimeoPlayer.current.setCurrentTime(skipBackTime).catch(()=>{});}else if(video){video.currentTime=skipBackTime;}setState(prev=>({...prev,progress:skipBackTime}));break;case\"ArrowRight\":const skipForwardTime=Math.min(state.duration||0,state.progress+10);if(props.sourceType===\"youtube\"&&youtubePlayer.current?.seekTo){youtubePlayer.current.seekTo(skipForwardTime,true);}else if(props.sourceType===\"vimeo\"&&vimeoPlayer.current?.setCurrentTime){vimeoPlayer.current.setCurrentTime(skipForwardTime).catch(()=>{});}else if(video){video.currentTime=skipForwardTime;}setState(prev=>({...prev,progress:skipForwardTime}));break;case\"ArrowUp\":const newVolumeUp=Math.min(1,state.volume+.1);if(props.sourceType===\"youtube\"&&youtubePlayer.current){youtubePlayer.current.setVolume(Math.round(newVolumeUp*100));}else if(props.sourceType===\"vimeo\"&&vimeoPlayer.current?.setVolume){vimeoPlayer.current.setVolume(newVolumeUp).catch(()=>{});}else if(video){video.volume=newVolumeUp;}setState(prev=>({...prev,volume:newVolumeUp,muted:newVolumeUp===0}));break;case\"ArrowDown\":const newVolumeDown=Math.max(0,state.volume-.1);if(props.sourceType===\"youtube\"&&youtubePlayer.current){youtubePlayer.current.setVolume(Math.round(newVolumeDown*100));}else if(props.sourceType===\"vimeo\"&&vimeoPlayer.current?.setVolume){vimeoPlayer.current.setVolume(newVolumeDown).catch(()=>{});}else if(video){video.volume=newVolumeDown;}setState(prev=>({...prev,volume:newVolumeDown,muted:newVolumeDown===0}));break;case\"KeyM\":handleMute();break;case\"KeyF\":if(props.controls?.showFullscreen){toggleFullscreen();}break;case\"Home\":if(props.sourceType===\"youtube\"&&youtubePlayer.current?.seekTo){youtubePlayer.current.seekTo(0,true);}else if(props.sourceType===\"vimeo\"&&vimeoPlayer.current?.setCurrentTime){vimeoPlayer.current.setCurrentTime(0).catch(()=>{});}else if(video){video.currentTime=0;}setState(prev=>({...prev,progress:0}));break;case\"End\":const endTime=state.duration||0;if(props.sourceType===\"youtube\"&&youtubePlayer.current?.seekTo){youtubePlayer.current.seekTo(endTime,true);}else if(props.sourceType===\"vimeo\"&&vimeoPlayer.current?.setCurrentTime){vimeoPlayer.current.setCurrentTime(endTime).catch(()=>{});}else if(video){video.currentTime=endTime;}setState(prev=>({...prev,progress:endTime}));break;default:if(e.code>=\"Digit0\"&&e.code<=\"Digit9\"){e.preventDefault();const digit=parseInt(e.code.slice(-1));const percentage=digit/10;const seekTime=(state.duration||0)*percentage;if(props.sourceType===\"youtube\"&&youtubePlayer.current?.seekTo){youtubePlayer.current.seekTo(seekTime,true);}else if(props.sourceType===\"vimeo\"&&vimeoPlayer.current?.setCurrentTime){vimeoPlayer.current.setCurrentTime(seekTime).catch(()=>{});}else if(video){video.currentTime=seekTime;}setState(prev=>({...prev,progress:seekTime}));}break;}},[props.sourceType,state.progress,state.volume,state.duration,props.controls?.showFullscreen,handlePlayPause,handleMute,toggleFullscreen]);// Final Fix for Vimeo ESC Issue (Controls Still Showing)\nuseEffect(()=>{const handleFullscreenChange=()=>{if(!document.fullscreenElement){setState(prev=>({...prev,fullscreen:false,hovering:false}));}};const handleEscKey=event=>{if(event.key===\"Escape\"){setState(prev=>({...prev,fullscreen:false,hovering:false}));}};document.addEventListener(\"fullscreenchange\",handleFullscreenChange);document.addEventListener(\"keydown\",handleEscKey);return()=>{document.removeEventListener(\"fullscreenchange\",handleFullscreenChange);document.removeEventListener(\"keydown\",handleEscKey);};},[props.sourceType]);// Move utility functions inside\nconst getYoutubeId=url=>{if(!url)return\"\";// Handle different YouTube URL formats\nconst regExp=/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;const match=url.match(regExp);return match&&match[2].length===11?match[2]:url// Return original string if no match (might be direct video ID)\n;};const getVideoSource=sourceType=>{const currentSource=getCurrentVideoSource()// Use new helper\n;const origin=typeof window!==\"undefined\"?window.location.origin:\"\";switch(sourceType){case\"file\":return currentSource;case\"url\":return currentSource;case\"youtube\":const ytOrigin=typeof window!==\"undefined\"?encodeURIComponent(window.location.origin):\"\";return`https://www.youtube.com/embed/${getYoutubeId(currentSource)}?enablejsapi=1&origin=${ytOrigin}&controls=0&modestbranding=1&playsinline=1&rel=0&showinfo=0&iv_load_policy=3&cc_load_policy=0&disablekb=1&fs=1&end_screen=0&pause_screen=0&annotations=false&autoplay=${props.autoPlay?1:0}&loop=${props.mode===\"multiple\"?0:props.loop?1:0}&mute=${props.defaultSettings?.muted?1:0}`// Enable YouTube fullscreen\n;case\"vimeo\":const vimeoMuted=props.autoPlay?1:props.defaultSettings?.muted?1:0;const vimeoParams=[`autoplay=${props.autoPlay?1:0}`,`loop=${props.mode===\"multiple\"?0:props.loop?1:0}`,`muted=${vimeoMuted}`,\"fullscreen=1\",\"controls=0\",\"title=0\",\"byline=0\",\"portrait=0\",\"dnt=1\",\"background=0\",\"transparent=0\"].join(\"&\");return`https://player.vimeo.com/video/${currentSource}?${vimeoParams}`;default:return currentSource;}};const isEmbeddedVideo=sourceType=>{return sourceType===\"youtube\"||sourceType===\"vimeo\";};// Load YouTube IFrame API and initialize player\nuseEffect(()=>{if(props.sourceType===\"youtube\"&&iframeRef.current){const tag=document.createElement(\"script\");tag.src=\"https://www.youtube.com/iframe_api\";document.body.appendChild(tag);window.onYouTubeIframeAPIReady=()=>{youtubePlayer.current=new window.YT.Player(iframeRef.current,{events:{onReady:event=>{// apply desired mute first\nif(props.defaultSettings?.muted)event.target.mute();else event.target.unMute();if(props.autoPlay)event.target.playVideo();const muted=event.target.isMuted();const volume=event.target.getVolume()/100;const duration=event.target.getDuration();const code=youtubePlayer.current?.getPlayerState?.();const YTState=window.YT?.PlayerState||{};const playing=code===YTState.PLAYING||code===YTState.BUFFERING;setState(prev=>({...prev,duration,muted,volume,isPlaying:playing}));},onStateChange:event=>{const YTState=window.YT.PlayerState;const code=event.data;const playing=code===YTState.PLAYING||code===YTState.BUFFERING;console.log(\"[Playlist Debug] YouTube state change:\",{code,state:Object.keys(YTState).find(key=>YTState[key]===code),playing,mode:props.mode});// Handle video end for playlist\nif(code===YTState.ENDED){console.log(\"[Playlist Debug] YouTube video ended\");console.log(\"[Playlist Debug] Mode:\",props.mode);console.log(\"[Playlist Debug] Current index:\",state.currentVideoIndex);if(props.mode===\"multiple\"){console.log(\"[Playlist Debug] Multiple mode - calling advanceToNextVideo\");advanceToNextVideo();return;// Don't process further if advancing\n}else{console.log(\"[Playlist Debug] Single mode - normal behavior\");}}if(playing){if(!progressInterval.current){progressInterval.current=setInterval(()=>{const currentTime=youtubePlayer.current.getCurrentTime();const volume=youtubePlayer.current.getVolume()/100;const isMuted=youtubePlayer.current?.isMuted?.()??volume===0;setState(prev=>({...prev,progress:currentTime,volume,muted:isMuted}));},1e3);}}else{clearInterval(progressInterval.current);progressInterval.current=null;}setState(prev=>({...prev,isPlaying:playing,...playing?{hasPlayedOnce:true}:{}}));}}});};return()=>clearInterval(progressInterval.current);}},[props.sourceType]);// Add effect to handle changes to autoplay and loop settings\nuseEffect(()=>{if(props.sourceType===\"youtube\"&&iframeRef.current){const player=iframeRef.current;if(player.getIframe){// Check if player is initialized\n// In playlist mode, individual videos should never loop\nif(props.mode===\"multiple\"){player.setLoop(false);}else if(props.loop){player.setLoop(true);}else{player.setLoop(false);}}}},[props.loop,props.mode]);// Add a listener for YouTube's response to our mute state query\nuseEffect(()=>{if(props.sourceType===\"youtube\"){const handleYoutubeMessage=event=>{try{const data=JSON.parse(event.data);if(data.event===\"onMuteStateChange\"){setState(prev=>({...prev,muted:data.muted}));}}catch(error){// Ignore parse errors from other messages\n}};window.addEventListener(\"message\",handleYoutubeMessage);return()=>window.removeEventListener(\"message\",handleYoutubeMessage);}},[props.sourceType]);// Enhanced effect for YouTube keyboard control integration\nuseEffect(()=>{if(props.sourceType===\"youtube\"&&iframeRef.current){const iframe=iframeRef.current;const container=refs.container.current;// Prevent YouTube's default keyboard shortcuts when container is focused\nconst handleIframeKeydown=e=>{if(document.activeElement===container){e.preventDefault();e.stopPropagation();return false;}};// Add event listener to capture keyboard events before they reach iframe\nconst handleContainerKeydown=e=>{// Ensure our handler gets priority over YouTube's\nhandleKeyDown(e);};if(container){container.addEventListener(\"keydown\",handleContainerKeydown,true);}return()=>{if(container){container.removeEventListener(\"keydown\",handleContainerKeydown,true);}};}},[props.sourceType,handleKeyDown]);// Additional Event Handlers\nconst handleProgressChange=async event=>{const newTime=parseFloat(event.target.value);setState(prev=>({...prev,progress:newTime}));if(props.sourceType===\"vimeo\"&&vimeoPlayer.current){try{await vimeoPlayer.current.setCurrentTime(newTime);}catch(error){console.error(\"Vimeo seek error:\",error);}}};const handleProgressEnd=()=>{setIsDragging(false);if(props.sourceType===\"youtube\"&&youtubePlayer.current){youtubePlayer.current.seekTo(state.progress,true);}};const handleVolumeChange=async event=>{const newVolume=parseFloat(event.target.value);if(props.sourceType===\"youtube\"&&youtubePlayer.current){try{youtubePlayer.current.setVolume(Math.round(newVolume*100));// If user raises volume, make sure we unmute\nif(newVolume>0&&youtubePlayer.current.isMuted()){youtubePlayer.current.unMute();}const muted=youtubePlayer.current.isMuted();setState(prev=>({...prev,volume:newVolume,muted}));}catch(error){console.error(\"YouTube volume error:\",error);}return;}else if(props.sourceType===\"vimeo\"&&vimeoPlayer.current){try{await vimeoPlayer.current.setVolume(newVolume);}catch(error){console.error(\"Vimeo volume error:\",error);}}else{const video=refs.video.current;if(video)video.volume=newVolume;}setState(prev=>({...prev,volume:newVolume,muted:newVolume===0}));};const handleSpeedChange=event=>{const video=refs.video.current;const newSpeed=parseFloat(event.target.value);if(video){video.playbackRate=newSpeed;setState(prev=>({...prev,speed:newSpeed}));}};const handleLoop=()=>{const video=refs.video.current;if(video){const shouldLoop=props.mode===\"single\"?props.loop:false;video.loop=shouldLoop;setState(prev=>({...prev,loop:shouldLoop}));}};const togglePictureInPicture=async()=>{const video=refs.video.current;if(!video||!document.pictureInPictureEnabled)return;try{console.log(\"Before PiP toggle - Loop state:\",video.loop);if(document.pictureInPictureElement){await document.exitPictureInPicture();setState(prev=>({...prev,isPiP:false}));}else{await video.requestPictureInPicture();setState(prev=>({...prev,isPiP:true}));}// Always ensure loop state is maintained (respect playlist mode)\nvideo.loop=props.mode===\"single\"?props.loop:false;console.log(\"After PiP toggle - Loop state:\",video.loop,\"props.loop:\",props.loop);}catch(error){console.error(\"PiP failed:\",error);}};const pipStyles={position:\"fixed\",bottom:\"10px\",right:\"10px\",width:\"auto\",height:\"auto\",transform:\"scale(0.5)\",transformOrigin:\"bottom right\",zIndex:9999};// Modify Property Controls to Hide Speed Control\nconst showSpeedControl=props.sourceType===\"file\"||props.sourceType===\"url\";const speedControl={showSpeed:{type:ControlType.Boolean,title:\"Speed Control\",defaultValue:true,hidden:props=>props.sourceType!==\"file\"&&props.sourceType!==\"url\"}};// JSX\nconst controlsVisible=(state.hovering||!state.isPlaying||state.fullscreen)&&!(props.useCustomPlayButton&&!state.hasPlayedOnce);const showChapterTimeline=props.chaptersMode===\"embedded\"&&(props.manualChapters?.length??0)>0&&((state.duration||0)>0||props.sourceType===\"youtube\");const shouldShowOverlay=!(state.isPlaying||props.sourceType===\"youtube\"&&!props.autoPlay&&!state.userInteracted&&state.progress===0||props.sourceType===\"youtube\"&&props.autoPlay||props.showPlayButtonOnlyOnInitial&&state.hasPlayedOnce);// Optional small renderer to normalize the custom instance positioning\nconst renderCustomPlay=()=>{const inst=props.customPlayButton;if(/*#__PURE__*/isValidElement(inst)){const prev=inst.props?.style||{};return /*#__PURE__*/cloneElement(inst,{style:{...prev,// 1) Remove canvas positioning/frame\nposition:\"relative\",left:\"auto\",top:\"auto\",right:\"auto\",bottom:\"auto\",inset:\"unset\",transform:\"none\",margin:0,// 2) Size to content so its own center is true center\nwidth:\"max-content\",height:\"max-content\",// 3) Center its own internal content too\ndisplay:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",transformOrigin:\"center center\",verticalAlign:\"middle\"},onClick:undefined});}return /*#__PURE__*/_jsx(\"div\",{style:{display:\"contents\"},children:inst});};const handleContainerClickCapture=useCallback(e=>{const target=e.target;const inControls=!!(controlsRef.current&&controlsRef.current.contains(target));const interactiveSel='input, select, textarea, button, a, [role=\"button\"], [contenteditable=\"true\"]';const closestInteractive=target.closest(interactiveSel);let isInteractive=false;if(closestInteractive){// Ignore hidden/disabled-by-pointer-events interactives (like our hidden overlay)\nconst pe=window.getComputedStyle(closestInteractive).pointerEvents;isInteractive=pe!==\"none\";}// If the click is within our play overlay container while it's hidden, don't treat as interactive\nconst inPlayOverlay=!!target.closest('[data-overlay=\"play\"]');if(!shouldShowOverlay&&inPlayOverlay){isInteractive=false;}console.log(\"[FramePlay] onClickCapture\",{targetTag:target?.tagName,inControls,isInteractive,sourceType:props.sourceType,shouldShowOverlay,statePlaying:state.isPlaying});// Embedded players: Vimeo handled by overlay div; YT handled via its own UI\nif(props.sourceType===\"youtube\")return;if(props.sourceType===\"vimeo\")return;if(inControls||isInteractive){console.log(\"[FramePlay] Click ignored (controls/interactive)\");return;}// If overlay visible, its own handler runs & stops propagation\nif(shouldShowOverlay){console.log(\"[FramePlay] Overlay visible – container will not toggle\");return;}// Otherwise toggle here\nconsole.log(\"[FramePlay] Container toggling play/pause\");safeToggle();},[props.sourceType,shouldShowOverlay,safeToggle,state.isPlaying]);// Mark that the user interacted at least once (affects overlay logic on YouTube, etc.)\nconst markUserInteracted=useCallback(()=>{setState(prev=>{if(!prev.userInteracted){console.log(\"[FramePlay] markUserInteracted -> true\");return{...prev,userInteracted:true};}return prev;});},[]);// Watch state changes with logging\nuseEffect(()=>{console.log(\"[FramePlay] isPlaying changed:\",state.isPlaying);},[state.isPlaying]);useEffect(()=>{console.log(\"[FramePlay] shouldShowOverlay:\",shouldShowOverlay,{isPlaying:state.isPlaying,userInteracted:state.userInteracted,source:props.sourceType,progress:state.progress,autoPlay:props.autoPlay});},[shouldShowOverlay,state.isPlaying,state.userInteracted,props.sourceType,state.progress,props.autoPlay]);useEffect(()=>{console.log(\"[Glow] sampler effect mount | glowEnabled =\",glowEnabled,\"| sourceType =\",props.sourceType,\"| canSample =\",canSample);if(!glowEnabled)return;if(!usingVideoTag||!canSample)return;const video=refs.video.current;const canvas=canvasRef.current;if(!video||!canvas){console.log(\"[Glow] missing elements | video =\",!!video,\"| canvas =\",!!canvas);return;}const ctx=canvas.getContext(\"2d\",{willReadFrequently:true});if(!ctx){console.log(\"[Glow] 2d context unavailable\");return;}let intervalId;const extract=()=>{if(video.readyState<2){console.log(\"[Glow] extract skipped; readyState =\",video.readyState,\"(need >= 2)\");return;}try{canvas.width=1;canvas.height=1;ctx.drawImage(video,0,0,1,1);const d=ctx.getImageData(0,0,1,1).data;const col=`rgba(${d[0]}, ${d[1]}, ${d[2]}, ${glowIntensity})`;console.log(\"[Glow] sampled RGBA =\",d[0],d[1],d[2],\"| color =\",col);setGlowColor(col);}catch(err){console.warn(\"[Glow] sampling failed (likely CORS if not Blob URL):\",err);}};const start=()=>{clearInterval(intervalId);extract();intervalId=setInterval(extract,80);console.log(\"[Glow] sampler started\");};const stop=()=>{clearInterval(intervalId);console.log(\"[Glow] sampler stopped\");};const onPlay=()=>{console.log(\"[Glow] video play -> start sampler\");start();};const onPause=()=>{console.log(\"[Glow] video pause -> stop sampler\");stop();};const onEnded=()=>{console.log(\"[Glow] video ended -> stop sampler\");stop();};const onLoaded=()=>{console.log(\"[Glow] loadeddata | readyState =\",video.readyState);extract();};console.log(\"[Glow] attaching listeners | src =\",video.currentSrc||state.fileUrl);video.addEventListener(\"play\",onPlay);video.addEventListener(\"pause\",onPause);video.addEventListener(\"ended\",onEnded);video.addEventListener(\"loadeddata\",onLoaded);if(!video.paused)start();return()=>{stop();console.log(\"[Glow] detach listeners\");video.removeEventListener(\"play\",onPlay);video.removeEventListener(\"pause\",onPause);video.removeEventListener(\"ended\",onEnded);video.removeEventListener(\"loadeddata\",onLoaded);};},[glowEnabled,glowIntensity,props.sourceType,state.fileUrl,canSample]);// Sync chapters to store\nuseEffect(()=>{if(props.chaptersMode!==\"external\")return;// Only sync if external mode\nconst normalizedChapters=(props.manualChapters||[]).map(chapter=>({...chapter,start:(chapter.minutes??0)*60+(chapter.seconds??0)}));setVideoStore({chapters:normalizedChapters});},[props.manualChapters,props.chaptersMode]);// Sync playback state to store\nuseEffect(()=>{if(props.chaptersMode!==\"external\")return;setVideoStore({isPlaying:state.isPlaying,progress:state.progress,duration:state.duration});},[state.isPlaying,state.progress,state.duration,props.chaptersMode]);// Update active chapter based on progress\nuseEffect(()=>{if(props.chaptersMode!==\"external\")return;const chapters=videoStore.chapters;if(chapters.length===0)return;let activeIndex=0;for(let i=chapters.length-1;i>=0;i--){if(state.progress>=(chapters[i].start??0)){activeIndex=i;break;}}if(activeIndex!==videoStore.activeChapterIndex){setVideoStore({activeChapterIndex:activeIndex});}},[state.progress,videoStore.chapters,props.chaptersMode]);// Expose control functions to store\nuseEffect(()=>{if(props.chaptersMode!==\"external\")return;setVideoStore({seekTo:time=>{if(props.sourceType===\"youtube\"&&youtubePlayer.current?.seekTo){youtubePlayer.current.seekTo(time,true);}else if(props.sourceType===\"vimeo\"&&vimeoPlayer.current?.setCurrentTime){vimeoPlayer.current.setCurrentTime(time).catch(()=>{});}else if(refs.video.current){refs.video.current.currentTime=time;}setState(prev=>({...prev,progress:time}));},togglePlayPause:handlePlayPause});},[handlePlayPause,props.sourceType,props.chaptersMode]);return /*#__PURE__*/_jsxs(\"div\",{ref:refs.container,className:\"video-player-container\",style:{width:\"100%\",height:\"100%\",position:\"relative\",backgroundColor:props.style?.backgroundColor||\"#000\",borderRadius:props.style?.cornerRadius||0,overflow:glowEnabled?\"visible\":\"hidden\"},onMouseEnter:()=>setState(prev=>({...prev,hovering:true})),onMouseLeave:()=>setState(prev=>({...prev,hovering:false})),onPointerDown:markUserInteracted,onKeyDown:e=>{markUserInteracted();handleKeyDown(e);},onClickCapture:handleContainerClickCapture,tabIndex:0,role:\"region\",\"aria-label\":props.accessibility?.title||\"Video player\",\"aria-describedby\":props.accessibility?.description?\"video-description\":undefined,children:[props.accessibility?.description&&/*#__PURE__*/_jsxs(\"div\",{id:\"video-description\",style:{position:\"absolute\",left:\"-10000px\",width:\"1px\",height:\"1px\",overflow:\"hidden\"},children:[props.accessibility.description,props.accessibility.hasSubtitles&&\" This video includes subtitles.\",props.accessibility.hasAudioDescription&&\" This video includes audio description.\"]}),props.sourceType===\"file\"?/*#__PURE__*/_jsx(\"video\",{ref:refs.video,src:state.fileUrl,poster:props.posterImage||undefined,style:{width:\"100%\",height:\"100%\",objectFit:props.style?.videoFit||\"cover\",borderRadius:props.style?.cornerRadius||0,boxShadow:mediaBoxShadow,opacity:state.isTransitioning?0:1,transition:glowEnabled?\"box-shadow 0.25s ease, opacity 0.15s ease-out\":\"opacity 0.15s ease-out\"},onTimeUpdate:handleTimeUpdate,onLoadedData:()=>{const v=refs.video.current;console.log(\"[Playlist Debug] onLoadedData called\");console.log(\"[Playlist Debug] Video readyState:\",v?.readyState);console.log(\"[Playlist Debug] Video duration:\",v?.duration);console.log(\"[Playlist Debug] Current index:\",state.currentVideoIndex);console.log(\"[Playlist Debug] Event handlers attached:\",{onEnded:!!handleVideoEnded,onError:!!handleVideoError});console.log(\"[Glow] onLoadedData | readyState =\",v?.readyState,\"| src =\",v?.currentSrc);handleLoadedData();},onLoadedMetadata:()=>{const video=refs.video.current;if(video){// Detect if video has audio\nconst audioDetected=video.audioTracks&&video.audioTracks.length>0||video.mozHasAudio||Boolean(video.webkitAudioDecodedByteCount)||Boolean(video.audioTracks?.length);setHasAudio(audioDetected);console.log(\"[FramePlay] Audio detected:\",audioDetected);}},onPlay:()=>{console.log(\"[Playlist Debug] onPlay fired for video at index:\",state.currentVideoIndex);console.log(\"[Playlist Debug] Video src:\",refs.video.current?.currentSrc);console.log(\"[FramePlay] <video> onPlay fired\");setState(prev=>({...prev,isPlaying:true,hasPlayedOnce:true}));console.log(\"[Glow] play | computed boxShadow should be:\",mediaBoxShadow);},onPause:()=>{console.log(\"[Playlist Debug] onPause fired for video at index:\",state.currentVideoIndex);console.log(\"[FramePlay] <video> onPause fired\");setState(prev=>({...prev,isPlaying:false}));},onEnded:e=>{console.log(\"[Playlist Debug] onEnded event fired!\");console.log(\"[Playlist Debug] Current video index:\",state.currentVideoIndex);console.log(\"[Playlist Debug] Event target:\",e.target);console.log(\"[Playlist Debug] Video currentTime:\",e.target.currentTime);console.log(\"[Playlist Debug] Video duration:\",e.target.duration);console.log(\"[Playlist Debug] Calling handleVideoEnded...\");handleVideoEnded();},onError:e=>{console.log(\"[Playlist Debug] onError event fired!\");console.log(\"[Playlist Debug] Error:\",e);console.log(\"[Playlist Debug] Current video index:\",state.currentVideoIndex);console.log(\"[Playlist Debug] Calling handleVideoError...\");handleVideoError(e);},onClick:e=>{console.log(\"[FramePlay] <video> direct click\");e.stopPropagation();safeToggle();},loop:props.mode===\"single\"?props.loop:false,muted:state.muted,playsInline:true,\"webkit-playsinline\":\"true\",\"x-webkit-airplay\":\"allow\",allowFullScreen:true,\"aria-label\":props.accessibility?.title||\"Video\",\"aria-describedby\":props.accessibility?.description?\"video-description\":undefined,lang:props.accessibility?.language||\"en\"}):props.sourceType===\"url\"&&usingVideoForUrl?/*#__PURE__*/_jsx(\"video\",{ref:refs.video,src:state.fileUrl,poster:props.posterImage||undefined,style:{width:\"100%\",height:\"100%\",objectFit:props.style?.videoFit||\"cover\",borderRadius:props.style?.cornerRadius||0,boxShadow:mediaBoxShadow,opacity:state.isTransitioning?0:1,transition:glowEnabled?\"box-shadow 0.25s ease, opacity 0.15s ease-out\":\"opacity 0.15s ease-out\"},onTimeUpdate:handleTimeUpdate,onLoadedData:()=>{const v=refs.video.current;console.log(\"[Playlist Debug] onLoadedData called (URL media)\");console.log(\"[Playlist Debug] Video readyState:\",v?.readyState);console.log(\"[Playlist Debug] Video duration:\",v?.duration);console.log(\"[Playlist Debug] Current index:\",state.currentVideoIndex);console.log(\"[Playlist Debug] Event handlers attached:\",{onEnded:!!handleVideoEnded,onError:!!handleVideoError});console.log(\"[Glow] onLoadedData (URL media) | readyState =\",v?.readyState,\"| src =\",v?.currentSrc);handleLoadedData();},onLoadedMetadata:()=>{const video=refs.video.current;if(video){// Detect if video has audio\nconst audioDetected=video.audioTracks&&video.audioTracks.length>0||video.mozHasAudio||Boolean(video.webkitAudioDecodedByteCount)||Boolean(video.audioTracks?.length);setHasAudio(audioDetected);console.log(\"[FramePlay] Audio detected (URL):\",audioDetected);}},onPlay:()=>{console.log(\"[Playlist Debug] onPlay fired for video at index:\",state.currentVideoIndex,\"(URL media)\");console.log(\"[Playlist Debug] Video src:\",refs.video.current?.currentSrc);console.log(\"[FramePlay] <video:url> onPlay fired\");setState(prev=>({...prev,isPlaying:true,hasPlayedOnce:true}));console.log(\"[Glow] play | computed boxShadow should be:\",mediaBoxShadow);},onPause:()=>{console.log(\"[Playlist Debug] onPause fired for video at index:\",state.currentVideoIndex,\"(URL media)\");console.log(\"[FramePlay] <video:url> onPause fired\");setState(prev=>({...prev,isPlaying:false}));},onEnded:e=>{console.log(\"[Playlist Debug] onEnded event fired! (URL media)\");console.log(\"[Playlist Debug] Current video index:\",state.currentVideoIndex);console.log(\"[Playlist Debug] Event target:\",e.target);console.log(\"[Playlist Debug] Video currentTime:\",e.target.currentTime);console.log(\"[Playlist Debug] Video duration:\",e.target.duration);console.log(\"[Playlist Debug] Calling handleVideoEnded...\");handleVideoEnded();},onError:e=>{console.log(\"[Playlist Debug] onError event fired! (URL media)\");console.log(\"[Playlist Debug] Error:\",e);console.log(\"[Playlist Debug] Current video index:\",state.currentVideoIndex);console.log(\"[Playlist Debug] Calling handleVideoError...\");handleVideoError(e);},onClick:e=>{e.stopPropagation();safeToggle();},loop:props.mode===\"single\"?props.loop:false,muted:state.muted,playsInline:true,allowFullScreen:true,\"aria-label\":props.accessibility?.title||\"Video\",\"aria-describedby\":props.accessibility?.description?\"video-description\":undefined,lang:props.accessibility?.language||\"en\"}):props.sourceType===\"url\"?// Non-media URL fallback -> iframe\n/*#__PURE__*/_jsx(\"iframe\",{ref:iframeRef,src:state.fileUrl,style:{width:\"100%\",height:\"100%\",border:\"none\",objectFit:props.style?.videoFit||\"cover\",borderRadius:props.style?.cornerRadius||0,boxShadow:mediaBoxShadow,transition:glowEnabled?\"box-shadow 0.25s ease\":undefined},allow:\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\",allowFullScreen:true,title:props.accessibility?.title||\"Embedded content\",\"aria-label\":props.accessibility?.title||\"Embedded content\"}):props.sourceType===\"youtube\"?/*#__PURE__*/_jsx(\"iframe\",{id:\"youtube-player\",ref:iframeRef,src:getVideoSource(\"youtube\"),style:{width:\"100%\",height:\"100%\",border:\"none\",objectFit:props.style?.videoFit||\"cover\",borderRadius:props.style?.cornerRadius||0,boxShadow:mediaBoxShadow,transition:glowEnabled?\"box-shadow 0.25s ease\":undefined},allow:\"autoplay; fullscreen\",allowFullScreen:true,frameBorder:\"0\",title:props.accessibility?.title||\"YouTube video player\",\"aria-label\":props.accessibility?.title||\"YouTube video\"}):props.sourceType===\"vimeo\"?/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",height:\"100%\"},children:[/*#__PURE__*/_jsx(\"iframe\",{ref:iframeRef,src:getVideoSource(\"vimeo\"),style:{width:\"100%\",height:\"100%\",border:\"none\",objectFit:props.style?.videoFit||\"cover\",borderRadius:props.style?.cornerRadius||0,pointerEvents:\"none\"},allow:\"autoplay; fullscreen\",allowFullScreen:true,title:props.accessibility?.title||\"Vimeo video player\",\"aria-label\":props.accessibility?.title||\"Vimeo video\"}),/*#__PURE__*/_jsx(\"div\",{onClick:e=>{console.log(\"[FramePlay] Vimeo transparent overlay click\");e.stopPropagation();safeToggle();},style:{position:\"absolute\",top:0,left:0,width:\"100%\",height:\"100%\",borderRadius:cornerRadius,overflow:\"hidden\",clipPath:cornerRadius?`inset(0 round ${cornerRadius}px)`:undefined,cursor:\"pointer\"}})]}):null,glowEnabled&&/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,width:1,height:1,style:{display:\"none\"}}),/*#__PURE__*/_jsx(motion.div,{initial:false,animate:{opacity:props.playOverlay?.enabled&&shouldShowOverlay?1:0},transition:{duration:.18},style:{position:\"absolute\",inset:0,borderRadius:cornerRadius,overflow:\"hidden\",clipPath:cornerRadius?`inset(0 round ${cornerRadius}px)`:undefined,background:props.playOverlay?.enabled?props.playOverlay?.color||\"rgba(255,255,255,0.12)\"// use alpha here\n:\"transparent\",backdropFilter:props.playOverlay?.enabled&&(props.playOverlay?.blur??0)>0?`blur(${props.playOverlay?.blur||0}px)`:\"none\",WebkitBackdropFilter:props.playOverlay?.enabled&&(props.playOverlay?.blur??0)>0?`blur(${props.playOverlay?.blur||0}px)`:\"none\",pointerEvents:\"none\",zIndex:1e4}}),shouldShowOverlay&&/*#__PURE__*/_jsx(\"div\",{\"data-overlay\":\"play\",style:{position:\"absolute\",inset:0,borderRadius:cornerRadius,overflow:\"hidden\",clipPath:cornerRadius?`inset(0 round ${cornerRadius}px)`:undefined,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",zIndex:10001,pointerEvents:\"auto\"},children:/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,scale:.98},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.98},transition:{duration:.18},onClick:e=>{console.log(\"[FramePlay] Overlay click\");e.stopPropagation();safeToggle();},role:\"button\",\"aria-label\":\"Play video\",tabIndex:0,onKeyDown:e=>{if(e.key===\" \"||e.key===\"Enter\"){console.log(\"[FramePlay] Overlay keydown\",e.key);e.preventDefault();e.stopPropagation();safeToggle();}},style:{pointerEvents:\"auto\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",// Only apply native styling when NOT using a custom button\n...props.useCustomPlayButton?{}:{background:props.buttonStyle?.playButtonBackgroundColor,borderRadius:props.buttonStyle?.playButtonBorderRadius,padding:props.buttonStyle?.playButtonSize/10,width:props.buttonStyle?.playButtonSize,height:props.buttonStyle?.playButtonSize,backdropFilter:`blur(${props.buttonStyle?.playButtonBlur}px)`,WebkitBackdropFilter:`blur(${props.buttonStyle?.playButtonBlur}px)`}},children:props.useCustomPlayButton&&props.customPlayButton?// Render the custom instance; no transforms/absolute so it stays centered.\n// pointerEvents off so the wrapper gets the click.\n/*#__PURE__*/_jsx(\"div\",{style:{pointerEvents:\"none\",display:\"inline-flex\"},children:props.customPlayButton}):props.customPlayIcon?/*#__PURE__*/_jsx(\"img\",{src:props.customPlayIcon,alt:\"Play Icon\",style:{width:props.buttonStyle?.playIconSize,height:props.buttonStyle?.playIconSize,objectFit:\"contain\",pointerEvents:\"none\"}}):/*#__PURE__*/_jsx(\"svg\",{width:props.buttonStyle?.playIconSize,height:props.buttonStyle?.playIconSize,viewBox:\"0 0 24 24\",xmlns:\"http://www.w3.org/2000/svg\",style:{pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M6 4.83167C6 4.0405 6.87525 3.56266 7.54076 3.99049L18.6915 11.1588C19.3038 11.5525 19.3038 12.4475 18.6915 12.8412L7.54076 20.0095C6.87525 20.4373 6 19.9595 6 19.1683V4.83167Z\",fill:props.buttonStyle?.playIconColor})})})}),/*#__PURE__*/_jsx(AnimatePresence,{children:state.showPlayPauseFeedback&&state.feedbackIcon&&/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,scale:.8,filter:\"blur(0px)\"},animate:{opacity:1,scale:1,filter:\"blur(0px)\"},exit:{opacity:0,scale:1.1,filter:\"blur(8px)\"},transition:{duration:.2,ease:\"easeOut\"},style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",pointerEvents:\"none\",zIndex:10002},children:/*#__PURE__*/_jsx(motion.div,{initial:{scale:.8},animate:{scale:1},exit:{scale:1.2},transition:{duration:.3,ease:\"easeOut\"},style:{background:\"rgba(0, 0, 0, 0.4)\",backdropFilter:\"blur(10px)\",borderRadius:\"50%\",width:\"80px\",height:\"80px\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsx(\"svg\",{width:\"40\",height:\"40\",viewBox:\"0 0 24 24\",fill:\"white\",children:state.feedbackIcon===\"play\"?/*#__PURE__*/_jsx(\"path\",{d:\"M8 5v14l11-7z\"}):/*#__PURE__*/_jsx(\"path\",{d:\"M6 4h4v16H6V4zm8 0h4v16h-4V4z\"})})})},\"play-pause-feedback\")}),props.showControls&&/*#__PURE__*/_jsx(motion.div,{ref:controlsRef,initial:{opacity:0},animate:{opacity:controlsVisible?1:0,y:controlsVisible?0:10},transition:{duration:.2},style:{...styles.controlsStyle,...props.controlsMode===\"minimal\"&&{justifyContent:\"space-between\",gap:0,padding:0,bottom:0,left:0,right:0,border:\"none\",borderRadius:0,backgroundColor:\"transparent\",backdropFilter:\"none\",boxShadow:\"none\"}},children:props.controlsMode===\"minimal\"?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",gap:0,alignItems:\"center\"},children:props.controls?.showPlayPause&&/*#__PURE__*/_jsx(\"button\",{onClick:e=>{e.stopPropagation();safeToggle();},className:\"video-player-button minimal-button\",style:{background:\"rgba(0, 0, 0, 0.6)\",backdropFilter:\"blur(10px)\",border:\"none\",borderRadius:0,padding:\"12px\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transition:\"background 0.2s ease\",height:\"44px\"},onMouseEnter:e=>{e.currentTarget.style.background=\"rgba(0, 0, 0, 0.75)\";},onMouseLeave:e=>{e.currentTarget.style.background=\"rgba(0, 0, 0, 0.6)\";},onKeyDown:e=>{if(e.key===\" \"||e.key===\"Enter\"){e.preventDefault();handlePlayPause();}},\"aria-label\":state.isPlaying?\"Pause video\":\"Play video\",\"aria-pressed\":state.isPlaying,tabIndex:0,children:/*#__PURE__*/_jsx(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",fill:props.controlsStyle?.controlsColor||\"#FFF\",\"aria-hidden\":\"true\",children:state.isPlaying?/*#__PURE__*/_jsx(\"path\",{d:\"M6 4h4v16H6V4zm8 0h4v16h-4V4z\"}):/*#__PURE__*/_jsx(\"path\",{d:\"M8 5v14l11-7z\"})})})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:0,alignItems:\"center\"},children:[props.controls?.showVolume&&hasAudio&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",display:\"flex\",alignItems:\"center\"},onMouseEnter:e=>{setState(prev=>({...prev,volumeHover:true}));},onMouseLeave:e=>{setState(prev=>({...prev,volumeHover:false}));},children:[state.volumeHover&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",bottom:\"100%\",left:\"50%\",transform:\"translateX(-50%)\",paddingBottom:\"8px\"},onMouseEnter:e=>{setState(prev=>({...prev,volumeHover:true}));},children:/*#__PURE__*/_jsxs(\"div\",{style:{background:\"rgba(0, 0, 0, 0.9)\",backdropFilter:\"blur(10px)\",borderRadius:\"8px\",padding:\"16px 12px\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",zIndex:10003,boxShadow:\"0 4px 12px rgba(0, 0, 0, 0.3)\"},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                                                        .volume-slider-vertical {\n                                                            -webkit-appearance: none;\n                                                            appearance: none;\n                                                            width: 6px;\n                                                            height: 100px;\n                                                            background: transparent;\n                                                            outline: none;\n                                                            cursor: pointer;\n                                                            writing-mode: vertical-lr;\n                                                            direction: rtl;\n                                                        }\n                                                        \n                                                        /* Track - Webkit/Blink */\n                                                        .volume-slider-vertical::-webkit-slider-runnable-track {\n                                                            width: 6px;\n                                                            height: 100px;\n                                                            background: rgba(255, 255, 255, 0.2);\n                                                            border-radius: 3px;\n                                                        }\n                                                        \n                                                        /* Track - Firefox */\n                                                        .volume-slider-vertical::-moz-range-track {\n                                                            width: 6px;\n                                                            height: 100px;\n                                                            background: rgba(255, 255, 255, 0.2);\n                                                            border-radius: 3px;\n                                                        }\n                                                        \n                                                        /* Thumb - Webkit/Blink */\n                                                        .volume-slider-vertical::-webkit-slider-thumb {\n                                                            -webkit-appearance: none;\n                                                            appearance: none;\n                                                            width: 14px;\n                                                            height: 14px;\n                                                            background: white;\n                                                            border-radius: 50%;\n                                                            cursor: pointer;\n                                                            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n                                                            transition: transform 0.1s ease;\n                                                            margin-left: -4px;\n                                                        }\n                                                        \n                                                        .volume-slider-vertical::-webkit-slider-thumb:hover {\n                                                            transform: scale(1.15);\n                                                        }\n                                                        \n                                                        /* Thumb - Firefox */\n                                                        .volume-slider-vertical::-moz-range-thumb {\n                                                            width: 14px;\n                                                            height: 14px;\n                                                            background: white;\n                                                            border: none;\n                                                            border-radius: 50%;\n                                                            cursor: pointer;\n                                                            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n                                                            transition: transform 0.1s ease;\n                                                        }\n                                                        \n                                                        .volume-slider-vertical::-moz-range-thumb:hover {\n                                                            transform: scale(1.15);\n                                                        }\n                                                        \n                                                        /* Progress fill - Firefox */\n                                                        .volume-slider-vertical::-moz-range-progress {\n                                                            background: ${props.controlsStyle?.progressColor||\"#FFF\"};\n                                                            border-radius: 3px;\n                                                        }\n                                                    `}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"6px\",height:\"100px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",bottom:0,left:0,width:\"6px\",height:`${state.volume*100}%`,background:props.controlsStyle?.progressColor||\"#FFF\",borderRadius:\"3px\",pointerEvents:\"none\",transition:\"height 0.1s ease\"}}),/*#__PURE__*/_jsx(\"input\",{type:\"range\",className:\"volume-slider-vertical\",min:0,max:1,step:.01,value:state.volume,onChange:handleVolumeChange,onClick:e=>e.stopPropagation(),onMouseDown:e=>e.stopPropagation(),\"aria-label\":`Volume: ${Math.round(state.volume*100)}%`,\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-valuenow\":Math.round(state.volume*100)})]})]})}),/*#__PURE__*/_jsx(\"button\",{onClick:e=>{e.stopPropagation();handleMute();},className:\"video-player-button minimal-button\",style:{background:\"rgba(0, 0, 0, 0.6)\",backdropFilter:\"blur(10px)\",border:\"none\",borderRadius:0,padding:\"12px\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transition:\"background 0.2s ease\",height:\"44px\"},onMouseEnter:e=>{e.currentTarget.style.background=\"rgba(0, 0, 0, 0.75)\";},onMouseLeave:e=>{e.currentTarget.style.background=\"rgba(0, 0, 0, 0.6)\";},\"aria-label\":state.muted?\"Unmute\":\"Mute\",\"aria-pressed\":state.muted,tabIndex:0,children:/*#__PURE__*/_jsx(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",fill:props.controlsStyle?.controlsColor||\"#FFF\",\"aria-hidden\":\"true\",children:state.muted||state.volume===0?/*#__PURE__*/_jsx(\"path\",{d:\"M3.63 3.63a.996.996 0 000 1.41L7.29 8.7 7 9H4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h3l3.29 3.29c.63.63 1.71.18 1.71-.71v-4.17l4.18 4.18c-.49.37-1.02.68-1.6.91-.36.15-.58.53-.58.92 0 .72.73 1.18 1.39.91.8-.33 1.55-.77 2.22-1.31l1.34 1.34a.996.996 0 101.41-1.41L5.05 3.63c-.39-.39-1.02-.39-1.42 0zM19 12c0 .82-.15 1.61-.41 2.34l1.53 1.53c.56-1.17.88-2.48.88-3.87 0-3.83-2.4-7.11-5.78-8.4-.59-.23-1.22.23-1.22.86v.19c0 .38.25.71.61.85C17.18 6.54 19 9.06 19 12zm-8.71-6.29l-.17.17L12 7.76V6.41c0-.89-1.08-1.33-1.71-.7zM16.5 12A4.5 4.5 0 0014 7.97v1.79l2.48 2.48c.01-.08.02-.16.02-.24z\"}):state.volume<.5?/*#__PURE__*/_jsx(\"path\",{d:\"M7 9v6h4l5 5V4l-5 5H7z\"}):/*#__PURE__*/_jsx(\"path\",{d:\"M3 9v6h4l5 5V4L7 9H3zm13.5 3A4.5 4.5 0 0014 7.97v8.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\"})})})]}),props.controls?.showSpeed&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\"},children:[/*#__PURE__*/_jsxs(\"button\",{onClick:e=>{e.stopPropagation();setState(prev=>({...prev,showSpeedMenu:!prev.showSpeedMenu}));},className:\"video-player-button minimal-button\",style:{background:\"rgba(0, 0, 0, 0.6)\",backdropFilter:\"blur(10px)\",border:\"none\",borderRadius:0,padding:\"12px\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transition:\"background 0.2s ease\",fontSize:\"12px\",fontWeight:\"bold\",minWidth:\"50px\",color:props.controlsStyle?.controlsColor||\"#FFF\",height:\"44px\"},onMouseEnter:e=>{e.currentTarget.style.background=\"rgba(0, 0, 0, 0.75)\";},onMouseLeave:e=>{e.currentTarget.style.background=\"rgba(0, 0, 0, 0.6)\";},\"aria-label\":\"Playback speed\",tabIndex:0,children:[state.speed,\"x\"]}),state.showSpeedMenu&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",bottom:\"100%\",right:0,marginBottom:8,background:\"rgba(0, 0, 0, 0.9)\",borderRadius:8,padding:8,zIndex:10003},children:[.25,.5,.75,1,1.25,1.5,1.75,2].map(speed=>/*#__PURE__*/_jsxs(\"button\",{onClick:e=>{e.stopPropagation();handleSpeedChange({target:{value:speed}});setState(prev=>({...prev,showSpeedMenu:false}));},style:{display:\"block\",width:\"100%\",padding:\"8px 16px\",background:state.speed===speed?\"rgba(255, 255, 255, 0.2)\":\"transparent\",border:\"none\",color:\"#FFF\",cursor:\"pointer\",fontSize:\"14px\",borderRadius:4},children:[speed,\"x\"]},speed))})]}),props.controls?.showPictureInPicture&&props.sourceType!==\"youtube\"&&props.sourceType!==\"vimeo\"&&/*#__PURE__*/_jsx(\"button\",{onClick:e=>{e.stopPropagation();togglePictureInPicture();},className:\"video-player-button minimal-button\",style:{background:\"rgba(0, 0, 0, 0.6)\",backdropFilter:\"blur(10px)\",border:\"none\",borderRadius:0,padding:\"12px\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transition:\"background 0.2s ease\",height:\"44px\"},onMouseEnter:e=>{e.currentTarget.style.background=\"rgba(0, 0, 0, 0.75)\";},onMouseLeave:e=>{e.currentTarget.style.background=\"rgba(0, 0, 0, 0.6)\";},\"aria-label\":\"Picture in Picture\",tabIndex:0,children:/*#__PURE__*/_jsx(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",fill:props.controlsStyle?.controlsColor||\"#FFF\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M19 7h-8v6h8V7zm2-4H3c-1.1 0-2 .9-2 2v14c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98V5c0-1.1-.9-2-2-2zm0 16.01H3V4.98h18v14.03z\"})})}),props.controls?.showFullscreen&&/*#__PURE__*/_jsx(\"button\",{onClick:e=>{e.stopPropagation();toggleFullscreen();},className:\"video-player-button minimal-button\",style:{background:\"rgba(0, 0, 0, 0.6)\",backdropFilter:\"blur(10px)\",border:\"none\",borderRadius:0,padding:\"12px\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transition:\"background 0.2s ease\",height:\"44px\"},onMouseEnter:e=>{e.currentTarget.style.background=\"rgba(0, 0, 0, 0.75)\";},onMouseLeave:e=>{e.currentTarget.style.background=\"rgba(0, 0, 0, 0.6)\";},\"aria-label\":state.fullscreen?\"Exit fullscreen\":\"Fullscreen\",tabIndex:0,children:/*#__PURE__*/_jsx(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",fill:props.controlsStyle?.controlsColor||\"#FFF\",\"aria-hidden\":\"true\",children:state.fullscreen?/*#__PURE__*/_jsx(\"path\",{d:\"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z\"}):/*#__PURE__*/_jsx(\"path\",{d:\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"})})})]})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[props.controls?.showPlayPause&&/*#__PURE__*/_jsx(\"button\",{onClick:e=>{e.stopPropagation();safeToggle();},className:\"video-player-button\",style:styles.button,onKeyDown:e=>{if(e.key===\" \"||e.key===\"Enter\"){e.preventDefault();handlePlayPause();}},\"aria-label\":state.isPlaying?\"Pause video\":\"Play video\",\"aria-pressed\":state.isPlaying,tabIndex:0,children:/*#__PURE__*/_jsx(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:props.controlsStyle?.controlsColor||\"#FFF\",\"aria-hidden\":\"true\",children:state.isPlaying?/*#__PURE__*/_jsx(\"path\",{d:\"M6 4h4v16H6V4zm8 0h4v16h-4V4z\"}):/*#__PURE__*/_jsx(\"path\",{d:\"M8 5v14l11-7z\"})})}),props.controls?.showProgress&&/*#__PURE__*/_jsx(\"div\",{style:{flex:1,position:\"relative\",display:\"flex\",flexDirection:\"column\",gap:8},children:showChapterTimeline?/*#__PURE__*/_jsx(SegmentedChapterTimeline,{duration:state.duration||0,progress:state.progress||0,chapters:props.manualChapters||[],onSeek:sec=>{if(props.sourceType===\"youtube\"&&youtubePlayer.current?.seekTo){youtubePlayer.current.seekTo(sec,true);}else if(props.sourceType===\"vimeo\"&&vimeoPlayer.current?.setCurrentTime){vimeoPlayer.current.setCurrentTime(sec).catch(()=>{});}else if(refs.video.current){refs.video.current.currentTime=sec;}setState(p=>({...p,progress:sec}));},color:props.controlsStyle?.progressColor||\"#FF0000\",bg:\"rgba(255,255,255,0.2)\",height:6,hoverHeight:10,segmentGap:props.controlsStyle?.segmentGap||1}):/* Fallback: your original progress slider *//*#__PURE__*/_jsx(\"input\",{type:\"range\",min:\"0\",max:state.duration||100,value:state.progress,onChange:handleProgressChange,onMouseUp:handleProgressEnd,onTouchEnd:handleProgressEnd,style:{...styles.rangeInput,width:\"100%\",background:`linear-gradient(to right, ${props.controlsStyle?.progressColor||\"#FF0000\"} ${state.progress/(state.duration||1)*100}%, rgba(255,255,255,0.2) ${state.progress/(state.duration||1)*100}%)`}})}),props.controls?.showTime&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:\"2px\"},children:[/*#__PURE__*/_jsxs(\"span\",{style:{color:props.style?.controlsColor||\"#FFF\",fontSize:\"14px\",userSelect:\"none\",fontFamily:\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"},children:[formatTime(state.progress),\" /\",\" \",formatTime(state.duration)]}),props.mode===\"multiple\"&&/*#__PURE__*/_jsxs(\"span\",{style:{color:props.style?.controlsColor||\"#FFF\",fontSize:\"12px\",opacity:.8,userSelect:\"none\",fontFamily:\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"},children:[state.currentVideoIndex+1,\" of\",\" \",state.totalVideos]})]}),props.controls?.showVolume&&hasAudio&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:\"8px\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:handleMute,className:\"video-player-button\",style:styles.button,onKeyDown:e=>{if(e.key===\" \"||e.key===\"Enter\"){e.preventDefault();handleMute();}},\"aria-label\":state.muted?\"Unmute video\":\"Mute video\",\"aria-pressed\":state.muted,tabIndex:0,children:/*#__PURE__*/_jsx(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",fill:props.controlsStyle?.controlsColor||\"#FFF\",\"aria-hidden\":\"true\",children:state.muted?/*#__PURE__*/_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\"}):/*#__PURE__*/_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\"})})}),/*#__PURE__*/_jsx(\"input\",{type:\"range\",min:0,max:1,step:.1,value:state.volume,onChange:handleVolumeChange,style:{...styles.rangeInput,width:\"80px\",background:`linear-gradient(to right, ${props.controlsStyle?.progressColor||\"#FF0000\"} ${state.volume*100}%, rgba(255,255,255,0.2) ${state.volume*100}%)`},\"aria-label\":`Volume: ${Math.round(state.volume*100)}%`,\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-valuenow\":Math.round(state.volume*100)})]}),showSpeedControl&&props.controls?.showSpeed&&/*#__PURE__*/_jsx(\"select\",{value:state.speed,onChange:handleSpeedChange,style:{background:\"none\",border:\"none\",color:props.style?.controlsColor||\"#FFF\",fontSize:\"14px\",cursor:\"pointer\",padding:\"4px 8px\",borderRadius:\"6px\",fontFamily:\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"},children:[.25,.5,.75,1,1.25,1.5,2].map(speed=>/*#__PURE__*/_jsxs(\"option\",{value:speed,children:[speed,\"x\"]},speed))}),props.controls?.showPictureInPicture&&pipSupported&&props.sourceType!==\"youtube\"&&props.sourceType!==\"vimeo\"&&/*#__PURE__*/_jsx(\"button\",{onClick:togglePictureInPicture,className:\"video-player-button\",style:styles.button,onKeyDown:e=>{if(e.key===\" \"||e.key===\"Enter\"){e.preventDefault();togglePictureInPicture();}},\"aria-label\":!state.isPiP?\"Enable Picture-in-Picture\":\"Disable Picture-in-Picture\",\"aria-pressed\":state.isPiP,tabIndex:0,title:!state.isPiP?\"Click to enable Picture-in-Picture\":\"Picture-in-Picture\",children:/*#__PURE__*/_jsx(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",fill:props.controlsStyle?.controlsColor||\"#FFF\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M19 7h-8v6h8V7zm2-4H3c-1.1 0-2 .9-2 2v14c0 1.1.9 1.9 2 1.9h18c1.1 0 2-.9 2-1.9V5c0-1.1-.9-2-2-2zm0 16.01H3V4.99h18v14.02z\"})})}),props.controls?.showFullscreen&&/*#__PURE__*/_jsx(\"button\",{onClick:toggleFullscreen,className:\"video-player-button\",style:styles.button,onKeyDown:e=>{if(e.key===\" \"||e.key===\"Enter\"){e.preventDefault();toggleFullscreen();}},\"aria-label\":state.fullscreen?\"Exit fullscreen\":\"Enter fullscreen\",\"aria-pressed\":state.fullscreen,tabIndex:0,children:/*#__PURE__*/_jsx(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",fill:props.controlsStyle?.controlsColor||\"#FFF\",\"aria-hidden\":\"true\",children:state.fullscreen?/*#__PURE__*/_jsx(\"path\",{d:\"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z\"}):/*#__PURE__*/_jsx(\"path\",{d:\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"})})})]})})]});}// Property Controls\naddPropertyControls(CustomVideoPlayer,{// Source Type Control (unchanged)\nsourceType:{type:ControlType.Enum,title:\"Source Type\",options:[\"file\",\"url\",\"youtube\",\"vimeo\"],optionTitles:[\"File Upload\",\"Direct URL\",\"YouTube\",\"Vimeo\"],defaultValue:\"file\"},// NEW: Mode Control\nmode:{type:ControlType.Enum,title:\"Mode\",options:[\"single\",\"multiple\"],optionTitles:[\"Single Video\",\"Playlist\"],defaultValue:\"single\"},// SINGLE MODE CONTROLS (existing, now conditional)\nvideoFile:{type:ControlType.File,title:\"Video File\",allowedFileTypes:[\"mp4\",\"webm\",\"ogg\"],hidden:props=>props.sourceType!==\"file\"||props.mode!==\"single\"},videoUrl:{type:ControlType.String,title:\"Video URL\",defaultValue:\"\",hidden:props=>props.sourceType!==\"url\"||props.mode!==\"single\"},youtubeId:{type:ControlType.String,title:\"YouTube URL/ID\",defaultValue:\"\",hidden:props=>props.sourceType!==\"youtube\"||props.mode!==\"single\",description:\"Paste YouTube URL or video ID\"},vimeoId:{type:ControlType.String,title:\"Vimeo Video ID\",defaultValue:\"\",hidden:props=>props.sourceType!==\"vimeo\"||props.mode!==\"single\",description:\"Enter Vimeo video ID (e.g., 123456789)\"},// NEW: MULTIPLE MODE CONTROLS (playlist arrays)\nvideoFiles:{type:ControlType.Array,title:\"Video Files\",propertyControl:{type:ControlType.File,allowedFileTypes:[\"mp4\",\"webm\",\"ogg\"]},hidden:props=>props.sourceType!==\"file\"||props.mode!==\"multiple\",description:\"Add multiple video files to create a playlist\"},videoUrls:{type:ControlType.Array,title:\"Video URLs\",propertyControl:{type:ControlType.String},hidden:props=>props.sourceType!==\"url\"||props.mode!==\"multiple\",description:\"Add multiple video URLs to create a playlist\"},youtubeIds:{type:ControlType.Array,title:\"YouTube Videos\",propertyControl:{type:ControlType.String},hidden:props=>props.sourceType!==\"youtube\"||props.mode!==\"multiple\",description:\"Add multiple YouTube URLs or video IDs\"},vimeoIds:{type:ControlType.Array,title:\"Vimeo Videos\",propertyControl:{type:ControlType.String},hidden:props=>props.sourceType!==\"vimeo\"||props.mode!==\"multiple\",description:\"Add multiple Vimeo video IDs\"},// Main Controls Toggle\nshowControls:{type:ControlType.Boolean,title:\"Show Controls\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},// Controls Mode\ncontrolsMode:{type:ControlType.Enum,title:\"Controls Mode\",defaultValue:\"default\",options:[\"default\",\"minimal\"],optionTitles:[\"Default\",\"Minimal\"],hidden:props=>!props.showControls,description:\"Choose between full controls or minimal Wistia-style controls\"},// Loop Control (move to top level)\nloop:{type:ControlType.Boolean,title:\"Loop Video\",defaultValue:false},// Autoplay Setting\nautoPlay:{type:ControlType.Boolean,title:\"Auto Play\",defaultValue:false},// Manual Chapters\nmanualChapters:{type:ControlType.Array,title:\"Chapters\",propertyControl:{type:ControlType.Object,controls:{title:{type:ControlType.String,title:\"Title\",defaultValue:\"Intro\"},minutes:{type:ControlType.Number,title:\"Minutes\",defaultValue:0,min:0,// Remove max: 999 limitation\nstep:1},seconds:{type:ControlType.Number,title:\"Seconds\",defaultValue:0,min:0,max:59,step:1}}},hidden:props=>!props.showControls||props.mode===\"multiple\",description:\"Add chapters with start times (minutes:seconds)\"},// Add this after manualChapters in your property controls\nchaptersMode:{type:ControlType.Enum,title:\"Chapters Mode\",options:[\"embedded\",\"external\"],optionTitles:[\"Embedded\",\"External\"],defaultValue:\"embedded\",hidden:props=>!props.showControls||props.mode===\"multiple\",description:\"Embedded shows chapters in video timeline, External syncs with separate chapter component\"},// Controls Settings (only shown if showControls is true)\ncontrols:{type:ControlType.Object,title:\"Controls\",hidden:props=>!props.showControls,controls:{showPlayPause:{type:ControlType.Boolean,title:\"Play/Pause\",defaultValue:true},showProgress:{type:ControlType.Boolean,title:\"Progress\",defaultValue:true},showTime:{type:ControlType.Boolean,title:\"Time\",defaultValue:true},showVolume:{type:ControlType.Boolean,title:\"Volume\",defaultValue:true},showSpeed:{type:ControlType.Boolean,title:\"Speed\",defaultValue:true},showFullscreen:{type:ControlType.Boolean,title:\"Fullscreen\",defaultValue:true},showPictureInPicture:{type:ControlType.Boolean,title:\"PiP\",defaultValue:true,description:\"Picture-in-Picture mode\",hidden:props=>props.sourceType===\"youtube\"||props.sourceType===\"vimeo\"}},description:\"Toggle individual control buttons\"},// Poster Image\nposterImage:{type:ControlType.File,title:\"Poster Image\",allowedFileTypes:[\"jpg\",\"jpeg\",\"png\",\"webp\"],description:\"Thumbnail image shown before video plays\"},// Accessibility\naccessibility:{type:ControlType.Object,title:\"A11y\",controls:{title:{type:ControlType.String,title:\"Title\",defaultValue:\"\"},description:{type:ControlType.String,title:\"Desc\",defaultValue:\"\"},language:{type:ControlType.String,title:\"Lang\",defaultValue:\"en\"},hasSubtitles:{type:ControlType.Boolean,title:\"Subtitles\",defaultValue:false},hasAudioDescription:{type:ControlType.Boolean,title:\"Audio Desc\",defaultValue:false}},description:\"Screen reader & accessibility settings\"},// Video Style Settings\nstyle:{type:ControlType.Object,title:\"Style\",controls:{backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},cornerRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:8,min:0,// Remove max: 32 limitation\nstep:1,unit:\"px\"},videoFit:{type:ControlType.Enum,title:\"Video Fit\",defaultValue:\"cover\",options:[\"cover\",\"contain\",\"fill\"],optionTitles:[\"Cover\",\"Contain\",\"Fill\"]}}},// Controls Style (only shown if showControls is true)\ncontrolsStyle:{type:ControlType.Object,title:\"Controls Style\",hidden:props=>!props.showControls,controls:{controlsColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"#FFFFFF\"},progressColor:{type:ControlType.Color,title:\"Progress\",defaultValue:\"#FF0000\"},controlsOpacity:{type:ControlType.Number,title:\"Opacity\",defaultValue:.6,min:0,max:1,step:.1},segmentGap:{type:ControlType.Number,title:\"Chapter Gap\",defaultValue:1,min:0,// Remove max: 5 limitation\nstep:.5,unit:\"px\"}}},// Playback Settings\ndefaultSettings:{type:ControlType.Object,title:\"Defaults\",controls:{muted:{type:ControlType.Boolean,title:\"Start Muted\",defaultValue:false},volume:{type:ControlType.Number,title:\"Volume\",defaultValue:1,min:0,max:1,step:.1},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:1,min:.25,max:2,step:.25}}},// Custom Play Button\nuseCustomPlayButton:{type:ControlType.Boolean,title:\"Custom Play\",defaultValue:false},customPlayButton:{type:ControlType.ComponentInstance,title:\"Play Button\",hidden:props=>!props.useCustomPlayButton,description:\"Pick any canvas layer/component to use as the play button\"},showPlayButtonOnlyOnInitial:{type:ControlType.Boolean,title:\"Only on Initial\",defaultValue:true,hidden:props=>!props.useCustomPlayButton,description:\"Show custom play button only before first play (recommended for autoplay-disabled videos)\"},// Pause Overlay\nplayOverlay:{type:ControlType.Object,title:\"Pause Overlay\",controls:{enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:true},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"rgba(255,255,255,0.12)\"},blur:{type:ControlType.Number,title:\"Blur\",defaultValue:6,min:0,step:1,unit:\"px\"}}},// Button Style Settings\nbuttonStyle:{type:ControlType.Object,title:\"Play Button\",controls:{playButtonSize:{type:ControlType.Number,title:\"Size\",defaultValue:50,min:44,// Remove max: 100 limitation\nstep:5,unit:\"px\"},playIconSize:{type:ControlType.Number,title:\"Icon Size\",defaultValue:24,min:10,// Remove max: 50 limitation\nstep:2,unit:\"px\"},playIconColor:{type:ControlType.Color,title:\"Icon Color\",defaultValue:\"#FFFFFF\"},playButtonBackgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"rgba(0, 0, 0, 0.5)\"},playButtonBlur:{type:ControlType.Number,title:\"Blur\",defaultValue:10,min:0,// Remove max: 20 limitation\nstep:1,unit:\"px\"},playButtonBorderRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:8,min:0,// Remove max: 50 limitation\nstep:1,unit:\"px\"},customPlayIcon:{type:ControlType.File,title:\"Custom Icon\",allowedFileTypes:[\"png\",\"jpg\",\"svg\"]}},description:\"Style the main play button overlay\"},// Glow\nglow:{type:ControlType.Object,title:\"Glow\",controls:{enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:false},intensity:{type:ControlType.Number,title:\"Intensity\",defaultValue:.6,min:0,max:1,step:.05},blur:{type:ControlType.Number,title:\"Blur\",defaultValue:50,min:0,max:150,step:2,unit:\"px\"},spread:{type:ControlType.Number,title:\"Spread\",defaultValue:20,min:0,max:80,step:2,unit:\"px\"}},description:\"Ambient glow sampled from video (file only). YouTube/Vimeo use progress color fallback.\"}});// Default Props\nCustomVideoPlayer.defaultProps={sourceType:\"file\",mode:\"single\",videoFile:\"https://example.com/video.mp4\",videoUrl:\"\",youtubeId:\"\",vimeoId:\"\",videoFiles:[],videoUrls:[],youtubeIds:[],vimeoIds:[],autoPlay:false,showControls:true,controlsMode:\"default\",loop:false,manualChapters:[],chaptersMode:\"embedded\",posterImage:null,useCustomPlayButton:false,customPlayButton:null,showPlayButtonOnlyOnInitial:true,playOverlay:{enabled:true,color:\"rgba(255,255,255,0.12)\",blur:6},accessibility:{title:\"\",description:\"\",language:\"en\",hasSubtitles:false,hasAudioDescription:false},style:{backgroundColor:\"#000000\",cornerRadius:8,videoFit:\"cover\"},controlsStyle:{controlsColor:\"#FFFFFF\",progressColor:\"#FF0000\",controlsOpacity:.6,segmentGap:1},controls:{showPlayPause:true,showProgress:true,showTime:true,showVolume:true,showSpeed:true,showFullscreen:true,showPictureInPicture:true},defaultSettings:{muted:false,volume:1,speed:1},buttonStyle:{playButtonSize:50,playIconSize:24,playIconColor:\"#FFFFFF\",playButtonBackgroundColor:\"rgba(0, 0, 0, 0.5)\",playButtonBlur:10,playButtonBorderRadius:8,customPlayIcon:null},glow:{enabled:false,intensity:.6,blur:50,spread:20}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CustomVideoPlayer\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FlowPlay_Custom_Videos.map"],"mappings":"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"}