{"version":3,"file":"LiquidButton.DRfaOn8d.mjs","names":["useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/o2OalP2DCU1ZPbpY1spD/4EvsnvTBb07mgMvmn2C3/LiquidButton.js"],"sourcesContent":["// Liquid Jelly Button - Interactive button with liquid/jelly animation effect that responds to mouse movement\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useCallback,startTransition,useState,useLayoutEffect}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function LiquidButton(props){const{text=\"Yeah, I need this\",textColor=\"#000000\",font,foregroundColor=\"#000000\",backgroundColor=\"#000000\",gradientStart=\"#32595E\",paddingTop=16,paddingRight=32,paddingBottom=16,paddingLeft=32,foregroundBorderColor=\"#FFFFFF\",foregroundBorderWidth=1,backgroundBorderColor=\"#FFFFFF\",backgroundBorderWidth=1,tension=1,hoverFactor=-.7,gap=.5,forceFactor=.2,layer1MouseForce=100,layer1ForceLimit=2,layer2MouseForce=150,layer2ForceLimit=3,margin=40,pressedScale=.95,pressedOpacity=.8,animationDuration=.3,easingFunction=\"cubic-bezier(0.34, 1.56, 0.64, 1)\",pressedEasing=\"cubic-bezier(0.34, 1.56, 0.64, 1)\",width:customWidth=0,height:customHeight=0,url,ariaLabel,onClick}=props;const svgRef=useRef(null);const layer1PathRef=useRef(null);const layer2PathRef=useRef(null);const textRef=useRef(null);const defsRef=useRef(null);const containerRef=useRef(null);const animationFrameRef=useRef();const layersRef=useRef([]);const touchesRef=useRef([]);const idRef=useRef(Math.random());const isStatic=useIsStaticRenderer();const mountedRef=useRef(false);const[textWidth,setTextWidth]=useState(0);const[containerSize,setContainerSize]=useState({width:0,height:0});const[isHovered,setIsHovered]=useState(false);const[isPressed,setIsPressed]=useState(false);const measureAttemptRef=useRef(0);const noise=0;// Measure container size\nuseLayoutEffect(()=>{if(!containerRef.current)return;const updateSize=()=>{if(containerRef.current){const rect=containerRef.current.getBoundingClientRect();startTransition(()=>{setContainerSize({width:rect.width,height:rect.height});});}};updateSize();const resizeObserver=new ResizeObserver(updateSize);resizeObserver.observe(containerRef.current);return()=>resizeObserver.disconnect();},[]);// Measure text to calculate proper button width\nuseLayoutEffect(()=>{if(textRef.current){try{const bbox=textRef.current.getBBox();if(bbox.width>0){startTransition(()=>{setTextWidth(bbox.width);measureAttemptRef.current=0;});}else if(measureAttemptRef.current<5){// Retry measurement if bbox is not ready\nmeasureAttemptRef.current++;const timer=setTimeout(()=>{if(textRef.current){const retryBbox=textRef.current.getBBox();if(retryBbox.width>0){startTransition(()=>{setTextWidth(retryBbox.width);});}}},50);return()=>clearTimeout(timer);}}catch(e){// Fallback: estimate text width based on character count\nconst estimatedWidth=text.length*10;startTransition(()=>{setTextWidth(estimatedWidth);});}}},[text,font]);// Calculate dimensions based on text and padding, or use container size if custom dimensions not set\nconst baseWidth=customWidth>0?customWidth:Math.max(150,textWidth||150);const width=containerSize.width>0?containerSize.width-margin*2:customWidth>0?customWidth:baseWidth+paddingLeft+paddingRight;const baseHeight=customHeight>0?customHeight:20;const height=containerSize.height>0?containerSize.height-margin*2:customHeight>0?customHeight:baseHeight+paddingTop+paddingBottom;const svgWidth=containerSize.width>0?containerSize.width:width+margin*2;const svgHeight=containerSize.height>0?containerSize.height:height+margin*2;const createPoint=useCallback((x,y)=>{return{x,y,ox:x,oy:y,vx:0,vy:0};},[]);const distance=useCallback((p1,p2)=>{return Math.sqrt(Math.pow(p1.x-p2.x,2)+Math.pow(p1.y-p2.y,2));},[]);const initOrigins=useCallback(()=>{const layers=[{points:[],viscosity:.5,mouseForce:layer1MouseForce,forceLimit:layer1ForceLimit},{points:[],viscosity:0,mouseForce:layer2MouseForce,forceLimit:layer2ForceLimit}];for(let layerIndex=0;layerIndex<layers.length;layerIndex++){const layer=layers[layerIndex];const points=[];// Top edge (left to right)\nfor(let x=~~(height/2);x<width-~~(height/2);x+=gap){points.push(createPoint(x+margin,margin));}// Right curve (top to bottom)\nfor(let alpha=~~(height*1.25);alpha>=0;alpha-=gap){const angle=Math.PI/~~(height*1.25)*alpha;points.push(createPoint(Math.sin(angle)*(height/2)+margin+width-height/2,Math.cos(angle)*(height/2)+margin+height/2));}// Bottom edge (right to left)\nfor(let x=width-~~(height/2)-1;x>=~~(height/2);x-=gap){points.push(createPoint(x+margin,margin+height));}// Left curve (bottom to top)\nfor(let alpha=0;alpha<=~~(height*1.25);alpha+=gap){const angle=Math.PI/~~(height*1.25)*alpha;points.push(createPoint(height-Math.sin(angle)*(height/2)+margin-height/2,Math.cos(angle)*(height/2)+margin+height/2));}layer.points=points;}layersRef.current=layers;},[width,height,margin,gap,layer1MouseForce,layer2MouseForce,layer1ForceLimit,layer2ForceLimit,createPoint]);const update=useCallback(()=>{const layers=layersRef.current;const touches=touchesRef.current;for(let layerIndex=0;layerIndex<layers.length;layerIndex++){const layer=layers[layerIndex];const points=layer.points;for(let pointIndex=0;pointIndex<points.length;pointIndex++){const point=points[pointIndex];const dx=point.ox-point.x+(Math.random()-.5)*noise;const dy=point.oy-point.y+(Math.random()-.5)*noise;const d=Math.sqrt(dx*dx+dy*dy);const f=d*forceFactor;point.vx+=f*(dx/d||0);point.vy+=f*(dy/d||0);for(let touchIndex=0;touchIndex<touches.length;touchIndex++){const touch=touches[touchIndex];let mouseForce=layer.mouseForce;if(touch.x>margin&&touch.x<margin+width&&touch.y>margin&&touch.y<margin+height){mouseForce*=-hoverFactor;}const mx=point.x-touch.x;const my=point.y-touch.y;const md=Math.sqrt(mx*mx+my*my);const mf=Math.max(-layer.forceLimit,Math.min(layer.forceLimit,mouseForce*touch.force/md));// Apply non-linear scaling: larger limits have less dampening effect\nconst scaledLimit=layer.forceLimit*(1+layer.forceLimit*.3);const scaledMf=Math.max(-scaledLimit,Math.min(scaledLimit,mouseForce*touch.force/md));point.vx+=scaledMf*(mx/md||0);point.vy+=scaledMf*(my/md||0);}point.vx*=layer.viscosity;point.vy*=layer.viscosity;point.x+=point.vx;point.y+=point.vy;}for(let pointIndex=0;pointIndex<points.length;pointIndex++){const prev=points[(pointIndex+points.length-1)%points.length];const point=points[pointIndex];const next=points[(pointIndex+points.length+1)%points.length];const dPrev=distance(point,prev);const dNext=distance(point,next);const line={x:next.x-prev.x,y:next.y-prev.y};const dLine=Math.sqrt(line.x*line.x+line.y*line.y);point.cPrev={x:point.x-line.x/dLine*dPrev*tension,y:point.y-line.y/dLine*dPrev*tension};point.cNext={x:point.x+line.x/dLine*dNext*tension,y:point.y+line.y/dLine*dNext*tension};}}},[distance,tension,noise,forceFactor,hoverFactor,margin,width,height]);const draw=useCallback(()=>{const layers=layersRef.current;const touches=touchesRef.current;for(let layerIndex=0;layerIndex<layers.length;layerIndex++){const layer=layers[layerIndex];const pathRef=layerIndex===0?layer1PathRef:layer2PathRef;if(!pathRef.current)continue;if(layerIndex===0){// Foreground layer with gradient\nif(touches.length>0&&defsRef.current){while(defsRef.current.firstChild){defsRef.current.removeChild(defsRef.current.firstChild);}for(let touchIndex=0;touchIndex<touches.length;touchIndex++){const touch=touches[touchIndex];const gradient=document.createElementNS(\"http://www.w3.org/2000/svg\",\"radialGradient\");gradient.id=`liquid-gradient-${idRef.current}-${touchIndex}`;const start=document.createElementNS(\"http://www.w3.org/2000/svg\",\"stop\");start.setAttribute(\"stop-color\",gradientStart);start.setAttribute(\"offset\",\"0%\");const stop=document.createElementNS(\"http://www.w3.org/2000/svg\",\"stop\");stop.setAttribute(\"stop-color\",foregroundColor);stop.setAttribute(\"offset\",\"100%\");gradient.appendChild(start);gradient.appendChild(stop);defsRef.current.appendChild(gradient);gradient.setAttribute(\"cx\",String(touch.x/svgWidth));gradient.setAttribute(\"cy\",String(touch.y/svgHeight));gradient.setAttribute(\"r\",String(touch.force));pathRef.current.style.fill=`url(#${gradient.id})`;}}else{pathRef.current.style.fill=foregroundColor;}pathRef.current.style.stroke=foregroundBorderColor;pathRef.current.style.strokeWidth=String(foregroundBorderWidth);}else{// Background layer\npathRef.current.style.fill=backgroundColor;pathRef.current.style.stroke=backgroundBorderColor;pathRef.current.style.strokeWidth=String(backgroundBorderWidth);}const points=layer.points;const commands=[];if(points.length===0)continue;commands.push(\"M\",points[0].x,points[0].y);for(let pointIndex=1;pointIndex<points.length;pointIndex+=1){const current=points[pointIndex%points.length];const prev=points[(pointIndex-1+points.length)%points.length];if(!prev.cNext||!current.cPrev)continue;commands.push(\"C\",prev.cNext.x,prev.cNext.y,current.cPrev.x,current.cPrev.y,current.x,current.y);}commands.push(\"Z\");pathRef.current.setAttribute(\"d\",commands.join(\" \"));}if(textRef.current){textRef.current.textContent=text;textRef.current.style.fill=textColor;}},[text,textColor,foregroundColor,backgroundColor,gradientStart,foregroundBorderColor,foregroundBorderWidth,backgroundBorderColor,backgroundBorderWidth,svgWidth,svgHeight]);const animate=useCallback(()=>{update();draw();animationFrameRef.current=requestAnimationFrame(animate);},[update,draw]);const handleMouseMove=useCallback(e=>{if(isStatic)return;const rect=e.currentTarget.getBoundingClientRect();const x=e.clientX-rect.left;const y=e.clientY-rect.top;startTransition(()=>{touchesRef.current=[{x,y,force:1}];setIsHovered(true);});},[isStatic]);const handleMouseOut=useCallback(()=>{if(isStatic)return;startTransition(()=>{touchesRef.current=[];setIsHovered(false);setIsPressed(false);});},[isStatic]);const handleMouseDown=useCallback(()=>{if(isStatic)return;startTransition(()=>{setIsPressed(true);});},[isStatic]);const handleMouseUp=useCallback(()=>{if(isStatic)return;startTransition(()=>{setIsPressed(false);});},[isStatic]);const handleTouchStart=useCallback(e=>{if(isStatic)return;e.preventDefault();const rect=e.currentTarget.getBoundingClientRect();const touch=e.touches[0];const x=touch.clientX-rect.left;const y=touch.clientY-rect.top;startTransition(()=>{touchesRef.current=[{x,y,force:1}];setIsHovered(true);setIsPressed(true);});},[isStatic]);const handleTouchMove=useCallback(e=>{if(isStatic)return;e.preventDefault();const rect=e.currentTarget.getBoundingClientRect();const touch=e.touches[0];const x=touch.clientX-rect.left;const y=touch.clientY-rect.top;startTransition(()=>{touchesRef.current=[{x,y,force:1}];setIsHovered(true);});},[isStatic]);const handleTouchEnd=useCallback(()=>{if(isStatic)return;startTransition(()=>{touchesRef.current=[];setIsHovered(false);setIsPressed(false);});},[isStatic]);useEffect(()=>{mountedRef.current=true;return()=>{mountedRef.current=false;};},[]);useEffect(()=>{if(!mountedRef.current)return;initOrigins();update();draw();},[initOrigins,update,draw,textWidth]);useEffect(()=>{if(isStatic||!mountedRef.current)return;animationFrameRef.current=requestAnimationFrame(animate);return()=>{if(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);}};},[animate,isStatic]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsxs(\"svg\",{ref:svgRef,width:\"100%\",height:\"100%\",viewBox:`0 0 ${svgWidth} ${svgHeight}`,preserveAspectRatio:\"xMidYMid slice\",style:{cursor:\"pointer\",display:\"block\",overflow:\"visible\",transform:isPressed?`scale(${pressedScale})`:\"scale(1)\",opacity:isPressed?pressedOpacity:1,transition:`transform ${animationDuration}s ${pressedEasing}, opacity ${animationDuration}s ${pressedEasing}`,touchAction:\"none\"},onMouseMove:handleMouseMove,onMouseOut:handleMouseOut,onMouseDown:handleMouseDown,onMouseUp:handleMouseUp,onTouchStart:handleTouchStart,onTouchMove:handleTouchMove,onTouchEnd:handleTouchEnd,onTouchCancel:handleTouchEnd,onClick:e=>{if(url){window.open(url,\"_self\");}onClick?.();},role:\"button\",\"aria-label\":ariaLabel||text,children:[/*#__PURE__*/_jsx(\"defs\",{ref:defsRef}),/*#__PURE__*/_jsx(\"path\",{ref:layer2PathRef}),/*#__PURE__*/_jsx(\"path\",{ref:layer1PathRef}),/*#__PURE__*/_jsx(\"text\",{ref:textRef,x:\"50%\",y:\"50%\",dy:\"0.35em\",textAnchor:\"middle\",pointerEvents:\"none\",style:{fontFamily:font?.fontFamily||\"Inter\",fontSize:font?.fontSize||\"16px\",fontWeight:font?.fontWeight||500,fontStyle:font?.fontStyle||\"normal\",letterSpacing:font?.letterSpacing||\"normal\",lineHeight:font?.lineHeight||\"normal\",transform:isHovered?\"scale(1.05)\":\"scale(1)\",transformOrigin:\"center\",transformBox:\"fill-box\",transition:`transform 0.3s ${easingFunction}, opacity 0.3s ${easingFunction}`,opacity:isHovered?.9:1},children:text})]})});}addPropertyControls(LiquidButton,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Liquid Button\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#FFFFFF\"},font:{type:ControlType.Font,title:\"Text Font\",controls:\"extended\"},url:{type:ControlType.Link,title:\"Link\"},ariaLabel:{type:ControlType.String,title:\"Aria Label\",placeholder:\"Accessible label for screen readers\"},foregroundColor:{type:ControlType.Color,title:\"Foreground Color\",defaultValue:\"#1A1A1A\"},foregroundBorderColor:{type:ControlType.Color,title:\"Foreground Border Color\",defaultValue:\"#FFFFFF\"},foregroundBorderWidth:{type:ControlType.Number,title:\"Foreground Border Width\",defaultValue:1,min:0,max:20,step:1,unit:\"px\"},backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:\"#000000\"},backgroundBorderColor:{type:ControlType.Color,title:\"Background Border Color\",defaultValue:\"#FFFFFF\"},backgroundBorderWidth:{type:ControlType.Number,title:\"Background Border Width\",defaultValue:1,min:0,max:20,step:1,unit:\"px\"},gradientStart:{type:ControlType.Color,title:\"Gradient Start\",defaultValue:\"#00E1FF\"},paddingTop:{type:ControlType.Number,title:\"Padding Top\",defaultValue:29,min:0,max:500,step:1,unit:\"px\"},paddingRight:{type:ControlType.Number,title:\"Padding Right\",defaultValue:40,min:0,max:500,step:1,unit:\"px\"},paddingBottom:{type:ControlType.Number,title:\"Padding Bottom\",defaultValue:16,min:0,max:500,step:1,unit:\"px\"},paddingLeft:{type:ControlType.Number,title:\"Padding Left\",defaultValue:32,min:0,max:500,step:1,unit:\"px\"},tension:{type:ControlType.Number,title:\"Tension\",defaultValue:0,min:0,max:1,step:.1},hoverFactor:{type:ControlType.Number,title:\"Hover Factor\",defaultValue:-1,min:-1,max:1,step:.1},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:.1,min:.1,max:100,step:.1},forceFactor:{type:ControlType.Number,title:\"Force Factor\",defaultValue:.15,min:0,max:1,step:.05},layer1MouseForce:{type:ControlType.Number,title:\"Layer 1 Mouse Force\",defaultValue:100,min:0,max:1e3,step:10},layer1ForceLimit:{type:ControlType.Number,title:\"Layer 1 Force Limit\",defaultValue:2,min:0,max:10,step:.5},layer2MouseForce:{type:ControlType.Number,title:\"Layer 2 Mouse Force\",defaultValue:150,min:0,max:1e3,step:10},layer2ForceLimit:{type:ControlType.Number,title:\"Layer 2 Force Limit\",defaultValue:5.5,min:0,max:10,step:.5},margin:{type:ControlType.Number,title:\"Margin\",defaultValue:23,min:0,max:100,step:1,unit:\"px\"},pressedScale:{type:ControlType.Number,title:\"Pressed Scale\",defaultValue:.94,min:.5,max:1,step:.01},pressedOpacity:{type:ControlType.Number,title:\"Pressed Opacity\",defaultValue:1,min:0,max:1,step:.05},animationDuration:{type:ControlType.Number,title:\"Animation Duration\",defaultValue:.3,min:.1,max:2,step:.1,unit:\"s\"},easingFunction:{type:ControlType.Enum,title:\"Easing Function\",defaultValue:\"ease\",options:[\"cubic-bezier(0.34, 1.56, 0.64, 1)\",\"cubic-bezier(0.68, -0.55, 0.265, 1.55)\",\"cubic-bezier(0.175, 0.885, 0.32, 1.275)\",\"cubic-bezier(0.6, -0.28, 0.735, 0.045)\",\"cubic-bezier(0.25, 0.46, 0.45, 0.94)\",\"cubic-bezier(0.77, 0, 0.175, 1)\",\"ease\",\"ease-in\",\"ease-out\",\"ease-in-out\",\"linear\"],optionTitles:[\"Bounce\",\"Elastic\",\"Back\",\"Anticipate\",\"Smooth\",\"Sharp\",\"Ease\",\"Ease In\",\"Ease Out\",\"Ease In-Out\",\"Linear\"]},pressedEasing:{type:ControlType.Enum,title:\"Pressed Easing\",defaultValue:\"cubic-bezier(0.25, 0.46, 0.45, 0.94)\",options:[\"cubic-bezier(0.34, 1.56, 0.64, 1)\",\"cubic-bezier(0.68, -0.55, 0.265, 1.55)\",\"cubic-bezier(0.175, 0.885, 0.32, 1.275)\",\"cubic-bezier(0.6, -0.28, 0.735, 0.045)\",\"cubic-bezier(0.25, 0.46, 0.45, 0.94)\",\"cubic-bezier(0.77, 0, 0.175, 1)\",\"ease\",\"ease-in\",\"ease-out\",\"ease-in-out\",\"linear\"],optionTitles:[\"Bounce\",\"Elastic\",\"Back\",\"Anticipate\",\"Smooth\",\"Sharp\",\"Ease\",\"Ease In\",\"Ease Out\",\"Ease In-Out\",\"Linear\"]},onClick:{type:ControlType.EventHandler}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"LiquidButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LiquidButton.map"],"mappings":"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"}