{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/60DeIFrjO5PJzxf4nyqv/fw1q9h6TYS18M3hAm2gR/Scroll_reveal_1.js"],
  "sourcesContent": ["import{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useEffect,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";export default function StickyBlurReveal(props){const{text=\"\",color,font,fontSize,lineHeight,fullRevealDistance,initialBlur,initialOpacity}=props;const containerRef=useRef(null);const words=(text||\"\").split(\" \");const[scrollProgress,setScrollProgress]=useState(0);const[isVisible,setIsVisible]=useState(false);const isCanvas=RenderTarget.current()===RenderTarget.canvas;useEffect(()=>{if(isCanvas)return;let startPosition=0;let endPosition=0;let containerHeight=0;const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting){setIsVisible(true);const rect=entry.boundingClientRect;startPosition=window.scrollY+rect.top;containerHeight=rect.height;endPosition=startPosition+fullRevealDistance;handleScroll();}else{setIsVisible(false);}},{threshold:[0]});if(containerRef.current){observer.observe(containerRef.current);}const handleScroll=()=>{if(!isVisible)return;const currentScroll=window.scrollY;const elementTop=startPosition-currentScroll;const visibleHeight=window.innerHeight-elementTop;const progress=(visibleHeight-containerHeight)/(fullRevealDistance-containerHeight);setScrollProgress(Math.max(0,Math.min(1,progress)));};window.addEventListener(\"scroll\",handleScroll,{passive:true});return()=>{window.removeEventListener(\"scroll\",handleScroll);if(containerRef.current){observer.unobserve(containerRef.current);}};},[fullRevealDistance,isCanvas,isVisible]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{position:\"sticky\",top:0,color:color,fontFamily:font===null||font===void 0?void 0:font.fontFamily,fontWeight:font===null||font===void 0?void 0:font.fontWeight,fontSize:`${fontSize}px`,lineHeight:lineHeight,opacity:isVisible||isCanvas?1:0},children:words.map((word,index)=>{const wordProgress=isCanvas?1:(scrollProgress-index/words.length)*words.length;const progress=Math.max(0,Math.min(1,wordProgress));const blurAmount=initialBlur*(1-progress);const opacity=initialOpacity+(1-initialOpacity)*progress;return /*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",marginRight:\"0.25em\",filter:`blur(${blurAmount}px)`,opacity:opacity,transition:\"filter 0.2s ease-out, opacity 0.2s ease-out\"},children:word},index);})});}StickyBlurReveal.defaultProps={text:\"This text unblurs and fades in word by word as you scroll\",color:\"#000000\",font:{fontFamily:\"Inter\",fontWeight:400},fontSize:24,lineHeight:1.5,fullRevealDistance:1e3,initialBlur:3,initialOpacity:.1};addPropertyControls(StickyBlurReveal,{text:{type:ControlType.String,title:\"Text\"},color:{type:ControlType.Color,title:\"Color\"},font:{type:ControlType.Font,title:\"Font\"},fontSize:{type:ControlType.Number,title:\"Font Size\",min:1,max:100},lineHeight:{type:ControlType.Number,title:\"Line Height\",min:.5,max:3,step:.1},fullRevealDistance:{type:ControlType.Number,title:\"Full Reveal Distance\",min:100,max:5e3,step:10},initialBlur:{type:ControlType.Number,title:\"Initial Blur\",min:0,max:10,step:.5},initialOpacity:{type:ControlType.Number,title:\"Initial Opacity\",min:0,max:1,step:.05}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"StickyBlurReveal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Scroll_reveal_1.map"],
  "mappings": "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",
  "names": ["StickyBlurReveal", "props", "text", "color", "font", "fontSize", "lineHeight", "fullRevealDistance", "initialBlur", "initialOpacity", "containerRef", "pe", "words", "scrollProgress", "setScrollProgress", "ye", "isVisible", "setIsVisible", "isCanvas", "RenderTarget", "ue", "startPosition", "endPosition", "containerHeight", "observer", "entry", "rect", "window", "handleScroll", "currentScroll", "elementTop", "progress", "p", "word", "index", "wordProgress", "blurAmount", "opacity", "addPropertyControls", "ControlType"]
}
