{"version":3,"file":"GridPatternOverlay.BJxs1wi1.mjs","names":["useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/S7yp1o9LlIsvdC4BiV1z/Rbo81MGUvCfA7AM5qGPl/GridPatternOverlay.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useState,useEffect,useRef,useCallback}from\"react\";import{addPropertyControls,ControlType}from\"framer\";function GridPatternOverlay(props){const{gridColor=\"rgb(225, 224, 218)\",lineWidth=1,gridSpacing=40,gridOpacity=.12,fadeMask=false,fadeX=25,fadeHeaderY=35,fadeHeaderRadiusX=240,fadeHeaderRadiusY=110,fadeBodyY=62,fadeBodyRadiusX=280,fadeBodyRadiusY=150,fadeSoftness=60,fadeEmbed=false,fadeEmbedX=50,fadeEmbedY=75,fadeEmbedRadiusX=520,fadeEmbedRadiusY=320,fadeEmbedSoftness=92,style}=props;const wrapperRef=useRef(null);const[dims,setDims]=useState({x:0,y:0,w:0,h:0});// False until the section has been measured. While false the grid layer is\n// not painted, so it can never register as a layout shift.\nconst[measured,setMeasured]=useState(false);const forceOverflowVisible=useCallback(()=>{const el=wrapperRef.current;if(!el)return;let node=el.parentElement;for(let i=0;i<10;i++){if(!node)break;const style=window.getComputedStyle(node);if(style.overflow===\"hidden\"||style.overflow===\"clip\"||style.overflowX===\"hidden\"||style.overflowY===\"hidden\"){// Only force overflow on tiny Framer wrappers (height < 10px),\n// not on section-level containers which need overflow hidden for mobile\nif(node.offsetHeight<10){node.style.overflow=\"visible\";}}// Stop at any container with meaningful height (section-level)\nif(node.offsetHeight>=100){break;}node=node.parentElement;}},[]);const findSection=useCallback(()=>{const el=wrapperRef.current;if(!el)return null;let node=el;while(node&&node.parentElement){node=node.parentElement;if(node.offsetWidth>=300&&node.offsetHeight>=200){return node;}}return null;},[]);const reposition=useCallback(()=>{const el=wrapperRef.current;if(!el)return;forceOverflowVisible();const sectionEl=findSection();if(!sectionEl)return;const sectionRect=sectionEl.getBoundingClientRect();const elRect=el.getBoundingClientRect();setDims({x:sectionRect.left-elRect.left,y:sectionRect.top-elRect.top,w:sectionRect.width,h:sectionRect.height});setMeasured(true);},[findSection,forceOverflowVisible]);useEffect(()=>{if(typeof window===\"undefined\")return;// Measure straight away so the grid appears on the next frame.\nreposition();const t1=setTimeout(reposition,100);const t2=setTimeout(reposition,300);const t3=setTimeout(reposition,800);const t4=setTimeout(reposition,2e3);let observer=null;try{observer=new ResizeObserver(()=>reposition());if(wrapperRef.current?.parentElement){observer.observe(wrapperRef.current.parentElement);}}catch(e){// no-op\n}window.addEventListener(\"resize\",reposition);const overflowTimer=window.setInterval(forceOverflowVisible,3e3);return()=>{clearTimeout(t1);clearTimeout(t2);clearTimeout(t3);clearTimeout(t4);observer?.disconnect();window.removeEventListener(\"resize\",reposition);clearInterval(overflowTimer);};},[reposition,forceOverflowVisible]);// Build a CSS mask that fades the grid out where the header text and\n// the body text sit, and fades it back in everywhere else. Two radial\n// gradients are intersected so each one carves a soft hole.\n// When fadeMask is false, no mask styles are applied at all, so this\n// change is fully reversible and a no-op for every other instance.\n// When fadeEmbed is true a third gradient is added that carves out\n// the area where an embedded component (e.g. Cal.com) sits, so the\n// grid never appears on top of the embed. fadeEmbed defaults to false\n// so existing instances are unaffected.\nconst softnessClamped=Math.max(0,Math.min(95,fadeSoftness));const innerStop=`${softnessClamped}%`;const headerGradient=`radial-gradient(ellipse ${fadeHeaderRadiusX}px ${fadeHeaderRadiusY}px at ${fadeX}% ${fadeHeaderY}%, transparent 0%, transparent ${innerStop}, black 100%)`;const bodyGradient=`radial-gradient(ellipse ${fadeBodyRadiusX}px ${fadeBodyRadiusY}px at ${fadeX}% ${fadeBodyY}%, transparent 0%, transparent ${innerStop}, black 100%)`;const embedSoftnessClamped=Math.max(0,Math.min(99,fadeEmbedSoftness));const embedInnerStop=`${embedSoftnessClamped}%`;const embedGradient=`radial-gradient(ellipse ${fadeEmbedRadiusX}px ${fadeEmbedRadiusY}px at ${fadeEmbedX}% ${fadeEmbedY}%, transparent 0%, transparent ${embedInnerStop}, black 100%)`;const maskImageValue=fadeEmbed?`${headerGradient}, ${bodyGradient}, ${embedGradient}`:`${headerGradient}, ${bodyGradient}`;const maskSizeValue=fadeEmbed?\"100% 100%, 100% 100%, 100% 100%\":\"100% 100%, 100% 100%\";const maskStyle=fadeMask?{WebkitMaskImage:maskImageValue,maskImage:maskImageValue,WebkitMaskComposite:\"source-in\",maskComposite:\"intersect\",WebkitMaskRepeat:\"no-repeat\",maskRepeat:\"no-repeat\",WebkitMaskSize:maskSizeValue,maskSize:maskSizeValue}:{};return /*#__PURE__*/_jsx(\"div\",{ref:wrapperRef,style:{position:\"relative\",width:0,height:0,overflow:\"visible\",pointerEvents:\"none\",...style},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:dims.x,top:dims.y,width:dims.w||\"100vw\",height:dims.h||\"100vh\",// Not painted until measured => never a layout-shift source.\nvisibility:measured?\"visible\":\"hidden\",backgroundImage:`linear-gradient(to right, ${gridColor} ${lineWidth}px, transparent ${lineWidth}px), linear-gradient(to bottom, ${gridColor} ${lineWidth}px, transparent ${lineWidth}px)`,backgroundSize:`${gridSpacing}px ${gridSpacing}px`,backgroundPosition:`0px 0px`,opacity:gridOpacity,pointerEvents:\"none\",zIndex:0,...maskStyle}})});}addPropertyControls(GridPatternOverlay,{gridColor:{title:\"Grid Color\",type:ControlType.Color,defaultValue:\"rgb(225, 224, 218)\"},lineWidth:{title:\"Line Width\",type:ControlType.Number,defaultValue:1,min:.5,max:4,step:.5},gridSpacing:{title:\"Grid Spacing\",type:ControlType.Number,defaultValue:40,min:8,max:120,step:1},gridOpacity:{title:\"Opacity\",type:ControlType.Number,defaultValue:.12,min:0,max:1,step:.01},fadeMask:{title:\"Fade Mask\",type:ControlType.Boolean,defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},fadeX:{title:\"Fade X %\",type:ControlType.Number,defaultValue:25,min:0,max:100,step:1,hidden:props=>!props.fadeMask},fadeHeaderY:{title:\"Header Y %\",type:ControlType.Number,defaultValue:35,min:0,max:100,step:1,hidden:props=>!props.fadeMask},fadeHeaderRadiusX:{title:\"Header RX\",type:ControlType.Number,defaultValue:240,min:20,max:1e3,step:1,hidden:props=>!props.fadeMask},fadeHeaderRadiusY:{title:\"Header RY\",type:ControlType.Number,defaultValue:110,min:20,max:600,step:1,hidden:props=>!props.fadeMask},fadeBodyY:{title:\"Body Y %\",type:ControlType.Number,defaultValue:62,min:0,max:100,step:1,hidden:props=>!props.fadeMask},fadeBodyRadiusX:{title:\"Body RX\",type:ControlType.Number,defaultValue:280,min:20,max:1e3,step:1,hidden:props=>!props.fadeMask},fadeBodyRadiusY:{title:\"Body RY\",type:ControlType.Number,defaultValue:150,min:20,max:600,step:1,hidden:props=>!props.fadeMask},fadeSoftness:{title:\"Softness %\",type:ControlType.Number,defaultValue:60,min:0,max:95,step:1,hidden:props=>!props.fadeMask},fadeEmbed:{title:\"Fade Embed\",type:ControlType.Boolean,defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:props=>!props.fadeMask},fadeEmbedX:{title:\"Embed X %\",type:ControlType.Number,defaultValue:50,min:0,max:100,step:1,hidden:props=>!props.fadeMask||!props.fadeEmbed},fadeEmbedY:{title:\"Embed Y %\",type:ControlType.Number,defaultValue:75,min:0,max:100,step:1,hidden:props=>!props.fadeMask||!props.fadeEmbed},fadeEmbedRadiusX:{title:\"Embed RX\",type:ControlType.Number,defaultValue:520,min:20,max:2e3,step:1,hidden:props=>!props.fadeMask||!props.fadeEmbed},fadeEmbedRadiusY:{title:\"Embed RY\",type:ControlType.Number,defaultValue:320,min:20,max:1500,step:1,hidden:props=>!props.fadeMask||!props.fadeEmbed},fadeEmbedSoftness:{title:\"Embed Softness %\",type:ControlType.Number,defaultValue:92,min:0,max:99,step:1,hidden:props=>!props.fadeMask||!props.fadeEmbed}});export default GridPatternOverlay;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"GridPatternOverlay\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GridPatternOverlay.map"],"mappings":"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"}