{"version":3,"file":"yd3VTLwF2.CbmdUOx0.mjs","names":["useRef","useState","_Fragment","fonts","css","className"],"sources":["https:/framerusercontent.com/modules/tswzGBKzmyIsfiGN8vdG/ukYuvPQrzKZH5efRNF5Z/HoverVideo.js","https:/framerusercontent.com/modules/74SpXP4RVK4sidsOg221/klh15aAQ4KGsZ4HUGmaG/AhPY33xAW.js","https:/framerusercontent.com/modules/zwz9CjcJ0pqaPxipnMdf/Va8AMHOivT8aqDMcjBoz/yd3VTLwF2.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useRef,useState,useEffect}from\"react\";// @ts-ignore — react-dom is provided by Framer at runtime\nimport{createPortal}from\"react-dom\";/**\n * HoverVideo — Two behaviors on the parent tile:\n *  - Hover: plays a muted looping preview video.\n *  - Click: opens a polished full-screen modal with the same video starting\n *    muted (so it doesn't blast audio). User unmutes via the native video\n *    controls. Close via X, backdrop click, or Esc.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function HoverVideo(props){const{video,borderRadius=16}=props;const previewVideoRef=useRef(null);const wrapperRef=useRef(null);const[isHovering,setIsHovering]=useState(false);const[isModalOpen,setIsModalOpen]=useState(false);const[isModalVisible,setIsModalVisible]=useState(false);useEffect(()=>{let el=wrapperRef.current?.parentElement||null;let tile=null;for(let i=0;i<8&&el;i++){const style=window.getComputedStyle(el);const w=el.offsetWidth;const br=parseFloat(style.borderRadius||\"0\");if(w>=350&&br>=8){tile=el;break;}el=el.parentElement;}if(!tile)return;const handleEnter=()=>{setIsHovering(true);const v=previewVideoRef.current;if(v&&video){v.play().catch(()=>{});}};const handleLeave=()=>{setIsHovering(false);const v=previewVideoRef.current;if(v&&video){v.pause();v.currentTime=0;}};const handleClick=e=>{if(!video)return;e.preventDefault();e.stopPropagation();const v=previewVideoRef.current;if(v){v.pause();v.currentTime=0;}setIsHovering(false);setIsModalOpen(true);};tile.addEventListener(\"mouseenter\",handleEnter);tile.addEventListener(\"mouseleave\",handleLeave);tile.addEventListener(\"click\",handleClick,true);const originalCursor=tile.style.cursor;if(video)tile.style.cursor=\"pointer\";return()=>{tile.removeEventListener(\"mouseenter\",handleEnter);tile.removeEventListener(\"mouseleave\",handleLeave);tile.removeEventListener(\"click\",handleClick,true);tile.style.cursor=originalCursor;};},[video]);useEffect(()=>{if(isModalOpen){const t=window.setTimeout(()=>setIsModalVisible(true),10);const previousOverflow=document.body.style.overflow;document.body.style.overflow=\"hidden\";const onKey=e=>{if(e.key===\"Escape\")handleClose();};window.addEventListener(\"keydown\",onKey);return()=>{window.clearTimeout(t);document.body.style.overflow=previousOverflow;window.removeEventListener(\"keydown\",onKey);};}},[isModalOpen]);const handleClose=()=>{setIsModalVisible(false);window.setTimeout(()=>setIsModalOpen(false),220);};const renderModal=()=>{if(!isModalOpen||!video)return null;return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{onClick:handleClose,style:{position:\"fixed\",inset:0,background:\"rgba(0,0,0,0.92)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",zIndex:9999,padding:\"64px 48px\",opacity:isModalVisible?1:0,transition:\"opacity 220ms cubic-bezier(0.4, 0, 0.2, 1)\"},children:[/*#__PURE__*/_jsx(\"video\",{onClick:e=>e.stopPropagation(),src:video,autoPlay:true,muted:true,playsInline:true,controls:true,style:{maxWidth:\"100%\",maxHeight:\"100%\",width:\"auto\",height:\"auto\",display:\"block\",borderRadius:8,boxShadow:\"0 24px 80px rgba(0,0,0,0.6)\",transform:isModalVisible?\"scale(1)\":\"scale(0.96)\",transition:\"transform 220ms cubic-bezier(0.4, 0, 0.2, 1)\"}}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:e=>{e.stopPropagation();handleClose();},\"aria-label\":\"Close\",style:{position:\"fixed\",top:20,right:20,width:40,height:40,borderRadius:20,border:\"none\",background:\"rgba(255,255,255,0.08)\",color:\"rgba(255,255,255,0.85)\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:0,transition:\"background 150ms ease-out\"},onMouseEnter:e=>{e.currentTarget.style.background=\"rgba(255,255,255,0.16)\";},onMouseLeave:e=>{e.currentTarget.style.background=\"rgba(255,255,255,0.08)\";},children:/*#__PURE__*/_jsx(\"svg\",{width:\"14\",height:\"14\",viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M1 1L13 13M13 1L1 13\",stroke:\"currentColor\",strokeWidth:\"1.5\",strokeLinecap:\"round\"})})})]}),document.body);};return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{ref:wrapperRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",borderRadius:`${borderRadius}px`,overflow:\"hidden\",pointerEvents:\"none\"},children:video&&/*#__PURE__*/_jsx(\"video\",{ref:previewVideoRef,src:video,muted:true,loop:true,playsInline:true,preload:\"metadata\",style:{position:\"absolute\",top:0,left:0,width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\",opacity:isHovering?1:0,transition:\"opacity 0.4s ease-out\"}})}),renderModal()]});}addPropertyControls(HoverVideo,{video:{type:ControlType.File,allowedFileTypes:[\"mp4\",\"webm\",\"mov\"],title:\"Video\"},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:16,min:0,max:40,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"HoverVideo\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HoverVideo.map","// Generated by Framer (c54c588)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOMV2;Proxima Nova Semibold\",\"CUSTOMV2;Proxima Nova Bold\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Proxima Nova Semibold\",source:\"custom\",style:\"normal\",uiFamilyName:\"Proxima Nova\",url:\"https://framerusercontent.com/assets/jRxsxJBtdDRmOSKCGjXBihhOmjU.woff2\",weight:\"600\"},{cssFamilyName:\"Proxima Nova Bold\",source:\"custom\",style:\"normal\",uiFamilyName:\"Proxima Nova\",url:\"https://framerusercontent.com/assets/r15fQ56NQVyaTf4cHPia4P6glcg.woff2\",weight:\"700\"}]}];export const css=[\".framer-uw7cf .framer-styles-preset-an4txm:not(.rich-text-wrapper), .framer-uw7cf .framer-styles-preset-an4txm.rich-text-wrapper h3 { --framer-font-family: \\\"Proxima Nova Semibold\\\", \\\"Proxima Nova Semibold Placeholder\\\", sans-serif; --framer-font-family-bold: \\\"Proxima Nova Bold\\\", \\\"Proxima Nova Bold Placeholder\\\", sans-serif; --framer-font-open-type-features: 'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on; --framer-font-size: 22px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-variation-axes: normal; --framer-font-weight: 600; --framer-font-weight-bold: 700; --framer-letter-spacing: -0.01em; --framer-line-height: 1.2em; --framer-paragraph-spacing: 40px; --framer-text-alignment: left; --framer-text-color: #ffffff; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }\"];export const className=\"framer-uw7cf\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (c54c588)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOMV2;Proxima Nova Regular\",\"CUSTOMV2;Proxima Nova Bold\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Proxima Nova Regular\",source:\"custom\",style:\"normal\",uiFamilyName:\"Proxima Nova\",url:\"https://framerusercontent.com/assets/3oqp1Y7dsogsZFBU15B3rOZuc.woff2\",weight:\"400\"},{cssFamilyName:\"Proxima Nova Bold\",source:\"custom\",style:\"normal\",uiFamilyName:\"Proxima Nova\",url:\"https://framerusercontent.com/assets/r15fQ56NQVyaTf4cHPia4P6glcg.woff2\",weight:\"700\"}]}];export const css=[\".framer-ICypS .framer-styles-preset-kk04ot:not(.rich-text-wrapper), .framer-ICypS .framer-styles-preset-kk04ot.rich-text-wrapper p { --framer-font-family: \\\"Proxima Nova Regular\\\", \\\"Proxima Nova Regular Placeholder\\\", sans-serif; --framer-font-family-bold: \\\"Proxima Nova Bold\\\", \\\"Proxima Nova Bold Placeholder\\\", sans-serif; --framer-font-open-type-features: 'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on; --framer-font-size: 12px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-letter-spacing: 0.08em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: left; --framer-text-color: #ffffff; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: uppercase; }\"];export const className=\"framer-ICypS\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}