{"version":3,"file":"ProximityTextFX.b5o7oYVN.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/ct6qGRnSlgUUQFhmSiDc/sbriCUwvLxw9BlcfNnX1/ProximityTextFX.js"],"sourcesContent":["// Variable Proximity Text - Wrapped version\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useRef,useEffect}from\"react\";import{motion}from\"framer-motion\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";function useAnimationFrame(callback){useEffect(()=>{let frameId;const loop=()=>{callback();frameId=requestAnimationFrame(loop);};frameId=requestAnimationFrame(loop);return()=>cancelAnimationFrame(frameId);},[callback]);}function useMousePositionRef(){const positionRef=useRef({x:0,y:0});useEffect(()=>{const handleMouseMove=e=>{positionRef.current={x:e.clientX,y:e.clientY};};const handleTouchMove=e=>{const t=e.touches[0];if(t)positionRef.current={x:t.clientX,y:t.clientY};};window.addEventListener(\"mousemove\",handleMouseMove);window.addEventListener(\"touchmove\",handleTouchMove);return()=>{window.removeEventListener(\"mousemove\",handleMouseMove);window.removeEventListener(\"touchmove\",handleTouchMove);};},[]);return positionRef;}function VariableProximity(props){const{label,scaleFrom,scaleTo,shadowIntensity,letterSpacingFrom,letterSpacingTo,radius,falloff,font,style,colorFrom,colorTo,fontSizeFrom,fontSizeTo}=props;const containerRef=useRef(null);const letterRefs=useRef([]);const mousePositionRef=useMousePositionRef();const lastPos=useRef({x:null,y:null});// Only allow editing in building mode\nconst isBuilding=RenderTarget.current()===RenderTarget.canvas;// Extract font weight and style from variant\nconst variantToWeight={\"Thin\":100,\"Extra Light\":200,\"Light\":300,\"Regular\":400,\"Medium\":500,\"Semibold\":600,\"Bold\":700,\"Extra Bold\":800,\"Black\":900,\"Thin Italic\":100,\"Extra Light Italic\":200,\"Light Italic\":300,\"Italic\":400,\"Medium Italic\":500,\"Semibold Italic\":600,\"Bold Italic\":700,\"Extra Bold Italic\":800,\"Black Italic\":900,\"Regular Italic\":400};const fontWeight=font?.variant?variantToWeight[font.variant]||400:400;const fontStyle=font?.variant?.includes(\"Italic\")?\"italic\":\"normal\";const calculateDistance=(x1,y1,x2,y2)=>Math.sqrt((x2-x1)**2+(y2-y1)**2);const calculateFalloff=distance=>{const norm=Math.min(Math.max(1-distance/radius,0),1);switch(falloff){case\"exponential\":return norm**2;case\"gaussian\":return Math.exp(-((distance/(radius/2))**2)/2);default:return norm;}};useAnimationFrame(()=>{const{x,y}=mousePositionRef.current;if(x===lastPos.current.x&&y===lastPos.current.y)return;lastPos.current={x,y};const containerRect=containerRef.current?.getBoundingClientRect();if(!containerRect)return;letterRefs.current.forEach(ref=>{if(!ref)return;const rect=ref.getBoundingClientRect();const dist=calculateDistance(x,y,rect.left+rect.width/2,rect.top+rect.height/2);if(dist>=radius){ref.style.transform=`scale(${scaleFrom})`;ref.style.textShadow=\"none\";ref.style.letterSpacing=`${letterSpacingFrom}em`;ref.style.color=colorFrom;ref.style.fontSize=`${fontSizeFrom}px`;return;}const f=calculateFalloff(dist);// Animate scale\nconst scale=scaleFrom+(scaleTo-scaleFrom)*f;ref.style.transform=`scale(${scale})`;// Animate text shadow\nconst shadowBlur=shadowIntensity*f;const shadowAlpha=.3*f;ref.style.textShadow=shadowBlur>0?`0 0 ${shadowBlur}px rgba(0, 0, 0, ${shadowAlpha})`:\"none\";// Animate letter spacing\nconst spacing=letterSpacingFrom+(letterSpacingTo-letterSpacingFrom)*f;ref.style.letterSpacing=`${spacing}em`;// Animate color\nconst fromColor=parseColor(colorFrom);const toColor=parseColor(colorTo);const r=Math.round(fromColor.r+(toColor.r-fromColor.r)*f);const g=Math.round(fromColor.g+(toColor.g-fromColor.g)*f);const b=Math.round(fromColor.b+(toColor.b-fromColor.b)*f);ref.style.color=`rgb(${r}, ${g}, ${b})`;// Animate font size\nconst fontSize=fontSizeFrom+(fontSizeTo-fontSizeFrom)*f;ref.style.fontSize=`${fontSize}px`;});});let i=0;return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",...style},tabIndex:0,children:[/*#__PURE__*/_jsx(\"link\",{href:\"https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap\",rel:\"stylesheet\"}),/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",fontFamily:font?.fontFamily||'\"Roboto Flex\", sans-serif',fontSize:font?.fontSize,letterSpacing:font?.letterSpacing,lineHeight:font?.lineHeight,textAlign:props.textAlign??font?.textAlign,color:props.color??font?.color,fontWeight:fontWeight,fontStyle:fontStyle,wordWrap:\"break-word\",overflowWrap:\"break-word\",whiteSpace:\"normal\",cursor:isBuilding?\"text\":\"pointer\"},children:label.split(/(\\s+)/).map((word,idx)=>word.trim()===\"\"?word// keep spaces\n    :/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",whiteSpace:\"pre\"},children:word.split(\"\").map((char,cidx)=>/*#__PURE__*/_jsx(motion.span,{ref:el=>{const globIdx=idx*1e3+cidx;letterRefs.current[globIdx]=el;},style:{display:\"inline-block\",transform:`scale(${scaleFrom})`,letterSpacing:`${letterSpacingFrom}em`,color:colorFrom,fontSize:`${fontSizeFrom}px`},children:char},cidx))},idx))})]});}// Helper function to parse color strings\nfunction parseColor(color){// Handle hex colors\nif(color.startsWith(\"#\")){const hex=color.slice(1);const r=parseInt(hex.slice(0,2),16);const g=parseInt(hex.slice(2,4),16);const b=parseInt(hex.slice(4,6),16);return{r,g,b};}// Handle rgb/rgba colors\nconst match=color.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/);if(match){return{r:parseInt(match[1]),g:parseInt(match[2]),b:parseInt(match[3])};}// Default to black\nreturn{r:0,g:0,b:0};}// --- Framer Controls ---\naddPropertyControls(VariableProximity,{label:{type:ControlType.String,title:\"Text\",defaultValue:\"Hover over me to see interactive text animation that works with any font.\",displayTextArea:true},colorFrom:{type:ControlType.Color,title:\"Color From\",defaultValue:\"#000000\"},colorTo:{type:ControlType.Color,title:\"Color To\",defaultValue:\"#0099FF\"},fontSizeFrom:{type:ControlType.Number,title:\"Font Size From\",defaultValue:32,min:8,max:200,step:1,unit:\"px\"},fontSizeTo:{type:ControlType.Number,title:\"Font Size To\",defaultValue:40,min:8,max:200,step:1,unit:\"px\"},scaleFrom:{type:ControlType.Number,title:\"Scale From\",defaultValue:1,min:.5,max:2,step:.05},scaleTo:{type:ControlType.Number,title:\"Scale To\",defaultValue:1.3,min:.5,max:2,step:.05},shadowIntensity:{type:ControlType.Number,title:\"Shadow Intensity\",defaultValue:8,min:0,max:20,step:1,unit:\"px\"},letterSpacingFrom:{type:ControlType.Number,title:\"Letter Spacing From\",defaultValue:0,min:-.1,max:.5,step:.01,unit:\"em\"},letterSpacingTo:{type:ControlType.Number,title:\"Letter Spacing To\",defaultValue:.05,min:-.1,max:.5,step:.01,unit:\"em\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:100,min:10,max:500,step:10,unit:\"px\"},falloff:{type:ControlType.Enum,title:\"Falloff Type\",options:[\"linear\",\"exponential\",\"gaussian\"],optionTitles:[\"Linear\",\"Exponential\",\"Gaussian\"],defaultValue:\"linear\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"32px\",variant:\"Regular\",letterSpacing:\"-0.01em\",lineHeight:\"1.2em\",textAlign:\"center\"},description:\"More Components at [DiverseKit](https://framer.link/se2heI4)\",displayTextAlignment:true},textAlign:{type:ControlType.Enum,title:\"Text Align\",options:[\"left\",\"center\",\"right\",\"justify\",\"start\",\"end\"],optionTitles:[\"Left\",\"Center\",\"Right\",\"Justify\",\"Start\",\"End\"],defaultValue:\"center\",hidden:false},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\",hidden:true}});export default VariableProximity;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"VariableProximity\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProximityTextFX.map"],"mappings":"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"}