{"version":3,"file":"shared-lib.B19bUI_Y.mjs","names":["useState","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/3ryAjMnpl01Cp0rJEWh7/zgnbgzwX0CdmwOrPRHvf/RippleEffect.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{forwardRef,startTransition,useCallback,useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * User request:\n * Create a new Framer code override file named RippleEffect.tsx that exports a code override\n * (a Higher Order Component function named `withRipple`) implementing the classic Android/\n * Google Material Design ripple effect with configurable color, duration, and centered mode.\n */export function withRipple(Component){const RippleWrapper=/*#__PURE__*/forwardRef(function RippleWrapper(props,ref){const{auto=true,color=\"rgba(255,255,255,0.5)\",duration=600,centered=false,hoverOpacity=.03,style,children,onPointerDown,onPointerEnter,onPointerLeave,...rest}=props;const[ripples,setRipples]=useState([]);const[isHovering,setIsHovering]=useState(false);const[resolvedRippleColor,setResolvedRippleColor]=useState(auto?\"rgba(0,0,0,0.5)\":color);const[resolvedHoverColor,setResolvedHoverColor]=useState(auto?\"rgba(0,0,0,0.03)\":color);const nextId=useRef(0);const cleanupTimers=useRef([]);const elementRef=useRef(null);const parseRGB=useCallback(value=>{const normalized=value.trim().toLowerCase();if(normalized===\"transparent\")return null;const match=normalized.match(/^rgba?\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)(?:\\s*,\\s*([0-9]*\\.?[0-9]+))?\\s*\\)$/);if(!match)return null;const r=Number(match[1]);const g=Number(match[2]);const b=Number(match[3]);const a=match[4]===undefined?1:Number(match[4]);if([r,g,b,a].some(num=>Number.isNaN(num)))return null;return{r,g,b,a};},[]);const getBackgroundColorChain=useCallback(startElement=>{if(typeof window===\"undefined\"||!startElement)return[];const colors=[];let element=startElement;while(element){const backgroundColor=window.getComputedStyle(element).backgroundColor?.trim();if(backgroundColor){const parsed=parseRGB(backgroundColor);if(parsed){colors.push(parsed);}}element=element.parentElement;}return colors;},[parseRGB]);const compositeColor=useCallback((src,dst)=>{if(src.a<=0)return dst;const nextA=src.a+dst.a*(1-src.a);const nextR=src.r*src.a+dst.r*(1-src.a);const nextG=src.g*src.a+dst.g*(1-src.a);const nextB=src.b*src.a+dst.b*(1-src.a);return{r:nextR,g:nextG,b:nextB,a:nextA};},[]);const compositeBackgroundChain=useCallback(startElement=>{const chain=getBackgroundColorChain(startElement);// Start with an opaque white canvas fallback.\nlet resultR=255;let resultG=255;let resultB=255;let resultA=1;// Composite from furthest ancestor down to target element.\nfor(let i=chain.length-1;i>=0;i--){const src=chain[i];const next=compositeColor(src,{r:resultR,g:resultG,b:resultB,a:resultA});resultR=next.r;resultG=next.g;resultB=next.b;resultA=next.a;}return{r:resultR,g:resultG,b:resultB,a:resultA};},[compositeColor,getBackgroundColorChain]);const getLargestSignificantDescendantBackground=useCallback(startElement=>{if(typeof window===\"undefined\"||!startElement)return null;const wrapperRect=startElement.getBoundingClientRect();const wrapperArea=wrapperRect.width*wrapperRect.height;if(!(wrapperArea>0))return null;const descendants=startElement.querySelectorAll(\"*\");let best=null;descendants.forEach(node=>{const element=node;const backgroundColor=window.getComputedStyle(element).backgroundColor?.trim();if(!backgroundColor)return;const parsed=parseRGB(backgroundColor);if(!parsed||parsed.a<=0)return;const rect=element.getBoundingClientRect();const area=rect.width*rect.height;if(area<wrapperArea*.5)return;if(!best||area>best.area){best={color:parsed,area};}});return best?.color??null;},[parseRGB]);const resolveEffectiveBackground=useCallback(startElement=>{const ancestorComposite=compositeBackgroundChain(startElement);if(typeof window===\"undefined\"||!startElement){return ancestorComposite;}const ownBackground=parseRGB(window.getComputedStyle(startElement).backgroundColor?.trim()??\"\");if(ownBackground&&ownBackground.a>0)return ancestorComposite;const descendantBackground=getLargestSignificantDescendantBackground(startElement);if(!descendantBackground)return ancestorComposite;return compositeColor(descendantBackground,ancestorComposite);},[compositeBackgroundChain,compositeColor,getLargestSignificantDescendantBackground,parseRGB]);const applyAlpha=useCallback((sourceColor,alpha)=>{const parsed=parseRGB(sourceColor);if(!parsed)return sourceColor;const clampedAlpha=Math.min(1,Math.max(0,alpha));return`rgba(${Math.round(parsed.r)},${Math.round(parsed.g)},${Math.round(parsed.b)},${clampedAlpha})`;},[parseRGB]);const syncRippleColorFromBackground=useCallback(startElement=>{if(!auto){startTransition(()=>setResolvedRippleColor(color));startTransition(()=>setResolvedHoverColor(applyAlpha(color,hoverOpacity)));return;}const effective=resolveEffectiveBackground(startElement);const luminance=.2126*effective.r+.7152*effective.g+.0722*effective.b;const nextRippleColor=luminance>140?\"rgba(0,0,0,0.5)\":\"rgba(255,255,255,0.5)\";const nextHoverColor=luminance>140?`rgba(0,0,0,${Math.min(1,Math.max(0,hoverOpacity))})`:`rgba(255,255,255,${Math.min(1,Math.max(0,hoverOpacity))})`;startTransition(()=>setResolvedRippleColor(nextRippleColor));startTransition(()=>setResolvedHoverColor(nextHoverColor));},[applyAlpha,auto,color,hoverOpacity,resolveEffectiveBackground]);const setRefs=useCallback(node=>{elementRef.current=node;if(typeof ref===\"function\"){ref(node);}else if(ref){ref.current=node;}},[ref]);useEffect(()=>{return()=>{cleanupTimers.current.forEach(timer=>{if(typeof window!==\"undefined\"){window.clearTimeout(timer);}});cleanupTimers.current=[];};},[]);useEffect(()=>{syncRippleColorFromBackground(elementRef.current);},[syncRippleColorFromBackground]);const handlePointerDown=useCallback(event=>{if(onPointerDown)onPointerDown(event);const target=event.currentTarget;if(!target)return;syncRippleColorFromBackground(target);const rect=target.getBoundingClientRect();const maxDimension=Math.max(rect.width,rect.height);const size=maxDimension*2;const x=centered?rect.width/2:event.clientX-rect.left;const y=centered?rect.height/2:event.clientY-rect.top;const id=nextId.current++;const ripple={id,x,y,size};startTransition(()=>{setRipples(prev=>[...prev,ripple]);});if(typeof window!==\"undefined\"){const timer=window.setTimeout(()=>{startTransition(()=>{setRipples(prev=>prev.filter(item=>item.id!==id));});},Math.max(100,duration));cleanupTimers.current.push(timer);}},[centered,duration,onPointerDown,syncRippleColorFromBackground]);const handlePointerEnter=useCallback(event=>{if(onPointerEnter)onPointerEnter(event);syncRippleColorFromBackground(event.currentTarget);startTransition(()=>setIsHovering(true));},[onPointerEnter,syncRippleColorFromBackground]);const handlePointerLeave=useCallback(event=>{if(onPointerLeave)onPointerLeave(event);startTransition(()=>setIsHovering(false));},[onPointerLeave]);return /*#__PURE__*/_jsxs(Component,{...rest,ref:setRefs,onPointerDown:handlePointerDown,onPointerEnter:handlePointerEnter,onPointerLeave:handlePointerLeave,style:{...style,position:style?.position??\"relative\",overflow:\"hidden\"},children:[children,/*#__PURE__*/_jsx(\"style\",{children:`\n                        @keyframes framer-material-ripple {\n                            0% {\n                                transform: translate(-50%, -50%) scale(0);\n                                opacity: 0.35;\n                            }\n                            100% {\n                                transform: translate(-50%, -50%) scale(1);\n                                opacity: 0;\n                            }\n                        }\n                    `}),/*#__PURE__*/_jsxs(\"span\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,pointerEvents:\"none\",borderRadius:\"inherit\",overflow:\"hidden\",display:\"block\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",inset:0,background:resolvedHoverColor,opacity:isHovering?1:0,transition:\"opacity 160ms ease-out\",pointerEvents:\"none\",borderRadius:\"inherit\"}}),ripples.map(ripple=>/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",left:ripple.x,top:ripple.y,width:ripple.size,height:ripple.size,borderRadius:\"50%\",background:resolvedRippleColor,transform:\"translate(-50%, -50%) scale(0)\",animationName:\"framer-material-ripple\",animationDuration:`${duration}ms`,animationTimingFunction:\"ease-out\",animationFillMode:\"forwards\",willChange:\"transform, opacity\"}},ripple.id))]})]});});addPropertyControls(RippleWrapper,{auto:{type:ControlType.Boolean,title:\"Auto Color\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"rgba(255,255,255,0.5)\",hidden(props){return props.auto!==false;}},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:600,min:100,max:2e3,step:10,unit:\"ms\"},centered:{type:ControlType.Boolean,title:\"Centered\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},hoverOpacity:{type:ControlType.Number,title:\"Hover\",defaultValue:.03,min:0,max:1,step:.01}});return RippleWrapper;}\nexport const __FramerMetadata__ = {\"exports\":{\"withRipple\":{\"type\":\"reactHoc\",\"name\":\"withRipple\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RippleEffect.map"],"mappings":"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"}