{"version":3,"file":"MouseTextEffect.C2V0W6LS.mjs","names":["React.useState","React.useRef","React.useCallback","React.useMemo"],"sources":["https:/framerusercontent.com/modules/eJRGx3XtNHOvsewjucUT/ibzteRIivtvpXUT3XNGy/MouseTextEffect.js"],"sourcesContent":["// User request: Framer code component for a large text with interactive, multi-layered blurred shadow effect, inspired by the provided HTML/CSS/JS. Mouse position controls shadow direction. Font: UnifrakturMaguntia. All Framer best practices applied.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,useIsOnFramerCanvas}from\"framer\";/**\n * MouseTextEffect\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */function MouseTextEffect(props){// Property controls\nconst{text=\"Light\",copies=100,textColor=\"#FFFFFF\",backgroundColor=\"#111111\",font={fontFamily:\"UnifrakturMaguntia, system-ui\",fontSize:160,fontWeight:400,fontStyle:\"normal\",letterSpacing:0,lineHeight:1.1},shadowColor=\"#FFFFFF\",useGradientGlow=false,glowStartColor=\"#FFFFFF\",glowEndColor=\"#BB1111\",shadowScaleFactor=.01}=props;// Mouse state\nconst[direction,setDirection]=React.useState({horizontal:1,vertical:1});const[pulse,setPulse]=React.useState(1);const[isHovering,setIsHovering]=React.useState(false);const containerRef=React.useRef(null);const isOnCanvas=useIsOnFramerCanvas();// Throttle updates with requestAnimationFrame\nconst rafRef=React.useRef();const centerAnimRef=React.useRef();// Animate pulse if enabled\nReact.useEffect(()=>{if(!props.animateGlow||isOnCanvas)return;let frame,start;function animate(ts){if(!start)start=ts;const t=(ts-start)/1e3;// Pulsate between 0.95 and 1.05\nsetPulse(.95+.1*(.5+.5*Math.sin(t*2)));frame=requestAnimationFrame(animate);}frame=requestAnimationFrame(animate);return()=>cancelAnimationFrame(frame);},[props.animateGlow,isOnCanvas]);// Mouse/touch handler\nconst handlePointer=React.useCallback(e=>{if(isOnCanvas)return;setIsHovering(true);if(centerAnimRef.current)cancelAnimationFrame(centerAnimRef.current);const rect=containerRef.current.getBoundingClientRect();let clientX,clientY;if(e.touches&&e.touches.length>0){clientX=e.touches[0].clientX;clientY=e.touches[0].clientY;}else{clientX=e.clientX;clientY=e.clientY;}const x=clientX-rect.left;const y=clientY-rect.top;let horizontal,vertical;if(x>rect.width/2){horizontal=(x-rect.width/2)/(rect.width/2)*-1;}else{horizontal=(rect.width/2-x)/(rect.width/2);}if(y>rect.height/2){vertical=(y-rect.height/2)/(rect.height/2)*-1;}else{vertical=(rect.height/2-y)/(rect.height/2);}// Clamp to [-1, 1]\nhorizontal=Math.max(-1,Math.min(1,horizontal));vertical=Math.max(-1,Math.min(1,vertical));// Throttle with RAF\nif(rafRef.current)cancelAnimationFrame(rafRef.current);rafRef.current=requestAnimationFrame(()=>{setDirection({horizontal,vertical});});},[isOnCanvas]);// Mouse leave handler: animate back to center\nconst handlePointerLeave=React.useCallback(()=>{setIsHovering(false);if(centerAnimRef.current)cancelAnimationFrame(centerAnimRef.current);function animateBack(){setDirection(prev=>{const speed=.18;const h=prev.horizontal+(1-prev.horizontal)*speed;const v=prev.vertical+(1-prev.vertical)*speed;if(Math.abs(h-1)<.01&&Math.abs(v-1)<.01){// Snap exactly to center and stop animating\nif(centerAnimRef.current)cancelAnimationFrame(centerAnimRef.current);return{horizontal:1,vertical:1};}else{centerAnimRef.current=requestAnimationFrame(animateBack);return{horizontal:h,vertical:v};}});}centerAnimRef.current=requestAnimationFrame(animateBack);},[]);// Attach listeners\nReact.useEffect(()=>{if(!containerRef.current||isOnCanvas)return;const el=containerRef.current;el.addEventListener(\"mousemove\",handlePointer);el.addEventListener(\"touchmove\",handlePointer);el.addEventListener(\"mouseleave\",handlePointerLeave);el.addEventListener(\"touchend\",handlePointerLeave);return()=>{el.removeEventListener(\"mousemove\",handlePointer);el.removeEventListener(\"touchmove\",handlePointer);el.removeEventListener(\"mouseleave\",handlePointerLeave);el.removeEventListener(\"touchend\",handlePointerLeave);};},[handlePointer,handlePointerLeave,isOnCanvas]);// Set CSS variables for direction\nReact.useEffect(()=>{if(!containerRef.current)return;containerRef.current.style.setProperty(\"--horizontal\",direction.horizontal);containerRef.current.style.setProperty(\"--vertical\",direction.vertical);},[direction]);// Helper: robust color parser (hex, rgb, rgba)\nfunction parseColor(input){if(!input)return{r:255,g:255,b:255};if(input.startsWith(\"rgb\")){// rgb or rgba\nconst match=input.match(/rgba?\\(([^)]+)\\)/);if(match){const parts=match[1].split(\",\").map(Number);return{r:parts[0]||255,g:parts[1]||255,b:parts[2]||255};}}else if(input.startsWith(\"#\")){let c=input.replace(\"#\",\"\");if(c.length===3){c=c[0]+c[0]+c[1]+c[1]+c[2]+c[2];}if(c.length===6){// Pad with zeros if needed\nc=c.padStart(6,\"0\");const r=parseInt(c.slice(0,2),16);const g=parseInt(c.slice(2,4),16);const b=parseInt(c.slice(4,6),16);return{r,g,b};}// 8-digit hex (with alpha)\nif(c.length===8){c=c.padStart(8,\"0\");const r=parseInt(c.slice(0,2),16);const g=parseInt(c.slice(2,4),16);const b=parseInt(c.slice(4,6),16);// ignore alpha for now\nreturn{r,g,b};}}// fallback: white\nreturn{r:255,g:255,b:255};}// Helper: interpolate between two colors\nfunction lerpColor(a,b,t){return{r:Math.round(a.r+(b.r-a.r)*t),g:Math.round(a.g+(b.g-a.g)*t),b:Math.round(a.b+(b.b-a.b)*t)};}const shadowRGB=parseColor(shadowColor);const startRGB=parseColor(glowStartColor);const endRGB=parseColor(glowEndColor);// Precompute shadow color strings for all copies (memoized)\nconst shadowColorStrings=React.useMemo(()=>{const arr=[];for(let i=1;i<=copies;i++){let rgb;if(useGradientGlow){const t=(i-1)/(copies-1);rgb=lerpColor(startRGB,endRGB,t);}else{rgb=shadowRGB;}arr.push(`rgba(${rgb.r},${rgb.g},${rgb.b},${1/i})`);}return arr;},[copies,useGradientGlow,startRGB,endRGB,shadowRGB]);// Generate shadow copies (static, only update CSS vars for transform)\nconst shadowCopies=React.useMemo(()=>{const arr=[];for(let i=1;i<=copies;i++){arr.push(/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",className:\"mouse-text-shadow-copy\",style:{\"--index\":i,\"--shadow-color\":shadowColorStrings[i-1],pointerEvents:\"none\",zIndex:0},children:text},i));}return arr;},[copies,text,shadowColorStrings]);// Main text style\n// Compute glow color for text-shadow\nlet glowColor=shadowColor;if(useGradientGlow){glowColor=glowStartColor;}// Parse glow color for alpha\nconst glowRGB=parseColor(glowColor);const glowAlpha=typeof props.glowOpacity===\"number\"?props.glowOpacity:1;const glowBlur=typeof props.glowBlur===\"number\"?props.glowBlur:32;const glowColorWithAlpha=`rgba(${glowRGB.r},${glowRGB.g},${glowRGB.b},${glowAlpha})`;// Use a strong and soft blur for glow\n// Move the glow slightly with mouse direction\nconst glowOffset=.7*(typeof font.fontSize===\"number\"?font.fontSize:parseInt(font.fontSize)||160)/160// scale with font size\n;const x1=(direction.horizontal||0)*glowOffset;const y1=(direction.vertical||0)*glowOffset;const x2=(direction.horizontal||0)*glowOffset*2;const y2=(direction.vertical||0)*glowOffset*2;const x3=(direction.horizontal||0)*glowOffset*.5;const y3=(direction.vertical||0)*glowOffset*.5;const mainTextStyle={position:\"absolute\",left:\"50%\",top:\"50%\",transform:\"translate(-50%, -50%)\",fontFamily:font.fontFamily,fontSize:font.fontSize,color:textColor,fontWeight:font.fontWeight,fontStyle:font.fontStyle,letterSpacing:font.letterSpacing,lineHeight:font.lineHeight,zIndex:1,userSelect:\"none\",whiteSpace:\"pre\",textAlign:\"center\",pointerEvents:\"auto\",transition:undefined,textShadow:`\n            ${x1}px ${y1}px ${glowBlur}px ${glowColorWithAlpha},\n            ${x2}px ${y2}px ${glowBlur*2}px ${glowColorWithAlpha},\n            ${x3}px ${y3}px ${Math.round(glowBlur/4)}px ${glowColorWithAlpha}\n        `};// Container style\nconst containerStyle={position:\"relative\",width:\"100%\",height:\"100%\",minWidth:10,minHeight:10,background:backgroundColor,overflow:\"hidden\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",touchAction:\"none\",cursor:isOnCanvas?\"default\":\"pointer\",WebkitUserSelect:\"none\",userSelect:\"none\"};// Inject static CSS for shadow copies (only once)\nReact.useEffect(()=>{if(typeof window===\"undefined\")return;if(document.getElementById(\"mouse-text-shadow-style\"))return;const style=document.createElement(\"style\");style.id=\"mouse-text-shadow-style\";style.innerHTML=`\n        .mouse-text-shadow-copy {\n            position: absolute;\n            left: 50%;\n            top: 50%;\n            transform: translate(-50%, -50%) translate(calc(var(--index, 1) * var(--horizontal, 1) * 0.1rem), calc(var(--index, 1) * var(--vertical, 1) * 0.1rem)) scale(calc(1 + var(--index, 1) * var(--shadow-scale, 0.01)));\n            color: var(--shadow-color, #fff);\n            filter: blur(0.1rem);\n            user-select: none;\n            white-space: pre;\n            text-align: center;\n            font-family: inherit;\n            font-size: inherit;\n            font-weight: inherit;\n            font-style: inherit;\n            letter-spacing: inherit;\n            line-height: inherit;\n            will-change: transform;\n        }\n        `;document.head.appendChild(style);},[]);// Set CSS vars for font and scale on container\nconst cssVars={\"--horizontal\":direction.horizontal,\"--vertical\":direction.vertical,\"--shadow-scale\":shadowScaleFactor*pulse,fontFamily:font.fontFamily,fontSize:font.fontSize,fontWeight:font.fontWeight,fontStyle:font.fontStyle,letterSpacing:font.letterSpacing,lineHeight:font.lineHeight};return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{...containerStyle,...cssVars},children:[shadowCopies,/*#__PURE__*/_jsx(\"div\",{role:\"heading\",\"aria-level\":1,style:mainTextStyle,children:text})]});}addPropertyControls(MouseTextEffect,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Light\",placeholder:\"Type text…\"},copies:{type:ControlType.Number,title:\"Shadow Copies\",defaultValue:100,min:10,max:200,step:1,displayStepper:true},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#FFFFFF\"},shadowColor:{type:ControlType.Color,title:\"Shadow Color\",defaultValue:\"#FFFFFF\",hidden:props=>!!props.useGradientGlow},useGradientGlow:{type:ControlType.Boolean,title:\"Gradient Glow\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},glowStartColor:{type:ControlType.Color,title:\"Glow Start\",defaultValue:\"#FFFFFF\",hidden:props=>!props.useGradientGlow},glowEndColor:{type:ControlType.Color,title:\"Glow End\",defaultValue:\"#BB1111\",hidden:props=>!props.useGradientGlow},shadowScaleFactor:{type:ControlType.Number,title:\"Shadow Scale\",defaultValue:.01,min:.001,max:.1,step:.001,displayStepper:true,description:\"How much the shadow expands as it moves away from the main text.\"},animateGlow:{type:ControlType.Boolean,title:\"Animate Glow\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},glowBlur:{type:ControlType.Number,title:\"Glow Blur\",defaultValue:32,min:0,max:128,step:1,displayStepper:true,description:\"Blur radius of the main text glow.\"},glowOpacity:{type:ControlType.Number,title:\"Glow Opacity\",defaultValue:1,min:0,max:1,step:.01,displayStepper:true,description:\"Opacity of the main text glow.\"},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontFamily:\"UnifrakturMaguntia, system-ui\",fontSize:160,fontWeight:400,fontStyle:\"normal\",letterSpacing:0,lineHeight:1.1},controls:\"extended\",defaultFontType:\"sans-serif\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#111111\"}});export default MouseTextEffect;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MouseTextEffect\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MouseTextEffect.map"],"mappings":"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"}