{"version":3,"file":"FullScreenOverlay.DXs3TcSl.mjs","names":["useState","useRef","startTransition","_Fragment"],"sources":["https:/framerusercontent.com/modules/jL8BkeShHF8IrGtslUyt/iB2Vkp0fBFuAzQEZl9wx/FullScreenOverlay.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{startTransition,useEffect,useRef,useState}from\"react\";import{createPortal}from\"react-dom\";export default function FullScreenOverlay(){const[state,setState]=useState({open:false,images:[],currentIndex:0});const overlayRef=useRef(null);const inertedRef=useRef([]);const triggerRef=useRef(null);useEffect(()=>{const handler=e=>{const detail=e.detail??{};triggerRef.current=detail.trigger??null;const gallery=Array.isArray(detail.images)?detail.images.filter(item=>item&&typeof item.src===\"string\").map(item=>({src:item.src,alt:item.alt??\"\"})).filter(item=>item.src.trim().length>0):[];const fallbackSrc=typeof detail.src===\"string\"?detail.src.trim():\"\";const fallbackAlt=typeof detail.alt===\"string\"?detail.alt:\"\";const images=gallery.length>0?gallery:fallbackSrc?[{src:fallbackSrc,alt:fallbackAlt}]:[];const initialIndex=gallery.length>0&&Number.isFinite(detail.initialIndex)&&detail.initialIndex>=0&&detail.initialIndex<gallery.length?detail.initialIndex:0;startTransition(()=>setState({open:images.length>0,images,currentIndex:initialIndex}));};document.addEventListener(\"vm-fullscreen-open\",handler);return()=>document.removeEventListener(\"vm-fullscreen-open\",handler);},[]);useEffect(()=>{if(!state.open)return;const overlay=overlayRef.current;if(!overlay)return;const targets=[];Array.from(document.body.children).forEach(child=>{const el=child;if(el!==overlay&&!el.hasAttribute(\"inert\")){el.setAttribute(\"inert\",\"\");targets.push(el);}});inertedRef.current=targets;const rafId=requestAnimationFrame(()=>requestAnimationFrame(()=>{overlay.querySelector(\"button\")?.focus();}));return()=>{cancelAnimationFrame(rafId);inertedRef.current.forEach(c=>c.removeAttribute(\"inert\"));inertedRef.current=[];triggerRef.current?.focus();triggerRef.current=null;};},[state.open]);const close=()=>startTransition(()=>setState(s=>({...s,open:false})));const hasGallery=state.images.length>1;const activeImage=state.images[state.currentIndex]??{src:\"\",alt:\"\"};const goToPrevious=()=>{if(!hasGallery)return;startTransition(()=>setState(s=>({...s,currentIndex:(s.currentIndex-1+s.images.length)%s.images.length})));};const goToNext=()=>{if(!hasGallery)return;startTransition(()=>setState(s=>({...s,currentIndex:(s.currentIndex+1)%s.images.length})));};const handleKeyDown=e=>{if(e.key===\"Escape\"){e.preventDefault();close();return;}if(hasGallery&&e.key===\"ArrowLeft\"){e.preventDefault();goToPrevious();return;}if(hasGallery&&e.key===\"ArrowRight\"){e.preventDefault();goToNext();return;}if(e.key===\"Tab\"){const el=overlayRef.current;if(!el)return;const nodes=Array.from(el.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'));if(nodes.length===0)return;if(e.shiftKey&&document.activeElement===nodes[0]){e.preventDefault();nodes[nodes.length-1].focus();}else if(!e.shiftKey&&document.activeElement===nodes[nodes.length-1]){e.preventDefault();nodes[0].focus();}}};// Zero-size placeholder keeps the component mounted so the event listener is always live.\n// The actual overlay portals directly to document.body.\nreturn /*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",width:0,height:0,overflow:\"hidden\"},\"aria-hidden\":\"true\",children:state.open&&typeof document!==\"undefined\"&&/*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{ref:overlayRef,role:\"dialog\",\"aria-modal\":\"true\",\"aria-label\":\"Full screen image\",onKeyDown:handleKeyDown,style:{position:\"fixed\",inset:0,zIndex:9999,backgroundColor:\"rgba(0,0,0,0.92)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:close,\"aria-label\":\"Close full screen image\",style:{position:\"absolute\",top:20,right:20,background:\"none\",border:\"none\",color:\"white\",fontSize:28,lineHeight:1,cursor:\"pointer\",padding:\"8px\"},children:\"✕\"}),hasGallery&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"button\",{onClick:goToPrevious,\"aria-label\":\"Previous image\",style:{position:\"absolute\",left:20,top:\"50%\",transform:\"translateY(-50%)\",background:\"rgba(255,255,255,0.18)\",border:\"none\",color:\"white\",fontSize:28,lineHeight:1,cursor:\"pointer\",padding:\"8px 12px\",borderRadius:6},children:\"‹\"}),/*#__PURE__*/_jsx(\"button\",{onClick:goToNext,\"aria-label\":\"Next image\",style:{position:\"absolute\",right:20,top:\"50%\",transform:\"translateY(-50%)\",background:\"rgba(255,255,255,0.18)\",border:\"none\",color:\"white\",fontSize:28,lineHeight:1,cursor:\"pointer\",padding:\"8px 12px\",borderRadius:6},children:\"›\"}),/*#__PURE__*/_jsxs(\"div\",{\"aria-live\":\"polite\",\"aria-atomic\":\"true\",style:{position:\"absolute\",bottom:20,left:\"50%\",transform:\"translateX(-50%)\",color:\"white\",background:\"rgba(0,0,0,0.35)\",fontSize:12,lineHeight:1,padding:\"8px 10px\",borderRadius:999},children:[state.currentIndex+1,\" / \",state.images.length]})]}),/*#__PURE__*/_jsx(\"img\",{src:activeImage.src,alt:activeImage.alt,style:{maxWidth:\"90vw\",maxHeight:\"90vh\",objectFit:\"contain\",display:\"block\"}})]}),document.body)});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FullScreenOverlay\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FullScreenOverlay.map"],"mappings":"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"}