{"version":3,"file":"ParallaxFloating_Prod.DdpuKyAX.mjs","names":["useRef","useMemo"],"sources":["https:/framerusercontent.com/modules/FJ6Tdhm43j9BNWb0QHUP/qCxOZNMh6LjmV7fYTxS5/ParallaxFloating_Prod.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useRef,useMemo}from\"react\";import{useMotionValue,useSpring}from\"framer-motion\";/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n *\n * @framerDisableUnlink\n */export default function ParallaxFloating(props){const{distance,direction,smoothing,enabled}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const id=generateInstanceId();const transition={damping:100,stiffness:mapRange(smoothing,0,100,2e3,50)};const offset=distance*(direction===\"away\"?-1:1);const mouseX=useMotionValue(0);const mouseY=useMotionValue(0);const x=useMotionValue(0);const y=useMotionValue(0);const springX=useSpring(x,transition);const springY=useSpring(y,transition);const ref=useRef(null);const parentRef=useRef(null);const transformRef=useRef(null);const styleRef=useRef(null);const hasSpringRef=useRef(smoothing!==0);const previousXRef=useRef(null);const previousYRef=useRef(null);const previousStyleTransformRef=useRef(null);useEffect(()=>{const unsubscribeX=mouseX.onChange(v=>x.set(enabled?v:0));const unsubscribeY=mouseY.onChange(v=>y.set(enabled?v:0));return()=>{unsubscribeX();unsubscribeY();};},[enabled,mouseX,mouseY,x,y]);useEffect(()=>{x.set(enabled?mouseX.get():0);y.set(enabled?mouseY.get():0);},[enabled]);useEffect(()=>{hasSpringRef.current=smoothing!==0;},[smoothing]);useEffect(()=>{let animationFrameId;const updateTransform=()=>{if(isCanvas){return;}animationFrameId=requestAnimationFrame(updateTransform);if(!parentRef.current||!styleRef.current){return;}const xValue=(hasSpringRef.current?springX.get():x.get()).toFixed(3);const yValue=(hasSpringRef.current?springY.get():y.get()).toFixed(3);// Get computed styles to capture all existing transforms\nconst computedStyle=window.getComputedStyle(parentRef.current);const transform=calculateTransform(parentRef.current,computedStyle,xValue,yValue,previousXRef.current,previousYRef.current,previousStyleTransformRef.current);transformRef.current=transform;styleRef.current.textContent=`\n\t\t\t\t[data-parallaxfloating=\"${id}\"] { transform: ${transform} !important }\n\t\t\t`;// console.log(transform)\npreviousXRef.current=xValue;previousYRef.current=yValue;previousStyleTransformRef.current=parentRef.current.style.transform;};if(ref.current){const container=ref.current.parentElement;if(container){const parent=container.parentElement;if(parent){parentRef.current=parent;parent.setAttribute(\"data-parallaxfloating\",id);}}}// Start the animation loop\nupdateTransform();// Cleanup function\nreturn()=>{if(animationFrameId){cancelAnimationFrame(animationFrameId);}};},[]);useEffect(()=>{const handleMouseMove=event=>{const mouseXPos=event.clientX;const mouseYPos=event.clientY;const centerX=window.innerWidth/2;const centerY=window.innerHeight/2;const normalizedX=(mouseXPos-centerX)/centerX*offset;const normalizedY=(mouseYPos-centerY)/centerY*offset;mouseX.set(normalizedX);mouseY.set(normalizedY);};window.addEventListener(\"mousemove\",handleMouseMove);return()=>window.removeEventListener(\"mousemove\",handleMouseMove);},[offset,smoothing,enabled]);return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...props.style},children:/*#__PURE__*/_jsx(\"style\",{ref:styleRef})});}ParallaxFloating.displayName=\"Parallax Floating\";addPropertyControls(ParallaxFloating,{enabled:{type:ControlType.Boolean,defaultValue:true},direction:{type:ControlType.Enum,defaultValue:\"away\",options:[\"toward\",\"away\"],optionTitles:[\"Toward\",\"Away\"],displaySegmentedControl:true},distance:{type:ControlType.Number,title:\"Speed\",defaultValue:25,min:0,step:1,hidden:props=>!props.enabled},smoothing:{type:ControlType.Number,defaultValue:50,min:0,max:100,step:1,description:\"More components at [Framer University](https://frameruni.link/cc).\"}});const CHARACTERS=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";const generateInstanceId=()=>{const id=useMemo(()=>{let result=\"\";for(let i=0;i<13;i++){result+=CHARACTERS.charAt(Math.floor(Math.random()*CHARACTERS.length));}return result;},[]);return id;};function mapRange(value,fromLow,fromHigh,toLow,toHigh){if(fromLow===fromHigh){return toLow;}const percentage=(value-fromLow)/(fromHigh-fromLow);return toLow+percentage*(toHigh-toLow);}function calculateTransform(element,computedStyle,xValue,yValue,previousX,previousY,previousStyleTransform){xValue=xValue||0;yValue=yValue||0;previousX=previousX||0;previousY=previousY||0;// Get transform\nconst computedTransform=computedStyle.transform;const styleTransform=element.style.transform;// Subtract previous values from current values for a single transform\nconst finalX=xValue-previousX;const finalY=yValue-previousY;const translateTransform=`translate(${finalX}px, ${finalY}px)`;let transform=translateTransform;if(styleTransform&&styleTransform!==\"none\"){if(previousStyleTransform&&previousStyleTransform!==\"none\"){transform=`${translateTransform} ${invertTransform(previousStyleTransform)} ${styleTransform}`;}else{transform=`${translateTransform} ${styleTransform}`;}}return computedTransform&&computedTransform!==\"none\"?`${transform} ${computedTransform}`:transform;}function invertTransform(transformString){const transforms=transformString.match(/\\w+\\([^)]+\\)/g)||[];const invertedTransforms=transforms.reverse().map(transform=>{const[func,valuesString]=transform.match(/(\\w+)\\(([^)]+)\\)/).slice(1);const values=valuesString.split(\",\").map(v=>v.trim());const invertNumber=v=>{const[_,sign,num,unit]=v.match(/^(-?)(\\d*\\.?\\d+)(\\D*)$/);return`${sign?\"\":\"-\"}${num}${unit}`;};switch(func.toLowerCase()){case\"translate\":case\"translate3d\":case\"translatex\":case\"translatey\":case\"translatez\":return`${func}(${values.map(invertNumber).join(\", \")})`;case\"scale\":case\"scale3d\":return`${func}(${values.map(v=>1/parseFloat(v)).join(\", \")})`;case\"scalex\":case\"scaley\":case\"scalez\":return`${func}(${1/parseFloat(values[0])})`;case\"rotate\":case\"rotatex\":case\"rotatey\":case\"rotatez\":return`${func}(${invertNumber(values[0])})`;case\"rotate3d\":const rotateValues=values.map(parseFloat);return`${func}(${rotateValues[0]}, ${rotateValues[1]}, ${rotateValues[2]}, ${invertNumber(values[3])})`;case\"skew\":case\"skewx\":case\"skewy\":return`${func}(${values.map(invertNumber).join(\", \")})`;case\"matrix\":case\"matrix3d\":console.warn(`Inverting ${func} is not supported. Returning original.`);return transform;default:console.warn(`Unknown transform function: ${func}. Returning original.`);return transform;}});return invertedTransforms.join(\" \");}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ParallaxFloating\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ParallaxFloating_Prod.map"],"mappings":"wQAKG,SAAwB,EAAiB,EAAM,CAAC,GAAK,CAAC,WAAS,YAAU,YAAU,WAAS,EAAY,EAAS,EAAa,QAAQ,IAAI,EAAa,OAAa,EAAG,EAAmB,EAAQ,EAAW,CAAC,QAAQ,IAAI,UAAU,EAAS,EAAU,EAAE,IAAI,IAAI,EAAE,CAAC,EAAQ,EAAO,GAAU,IAAY,OAAO,GAAG,GAAS,EAAO,EAAe,CAAC,EAAQ,EAAO,EAAe,CAAC,EAAQ,EAAE,EAAe,CAAC,EAAQ,EAAE,EAAe,CAAC,EAAQ,EAAQ,EAAU,EAAE,CAAU,EAAQ,EAAQ,EAAU,EAAE,CAAU,EAAQ,EAAIA,EAAO,IAAI,EAAQ,EAAUA,EAAO,IAAI,EAAQ,EAAaA,EAAO,IAAI,EAAQ,EAASA,EAAO,IAAI,EAAQ,EAAaA,EAAO,IAAY,CAAC,EAAQ,EAAaA,EAAO,IAAI,EAAQ,EAAaA,EAAO,IAAI,EAAQ,EAA0BA,EAAO,IAAI,EAM5M,OAN8M,MAAc,CAAC,IAAM,EAAa,EAAO,SAAS,GAAG,EAAE,IAAI,EAAQ,EAAE,CAAC,CAAC,EAAQ,EAAa,EAAO,SAAS,GAAG,EAAE,IAAI,EAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,EAAa,EAAE,EAAa,CAAE,CAAE,EAAE,CAAC,EAAQ,EAAO,EAAO,EAAE,CAAC,CAAC,EAAE,MAAc,CAAC,EAAE,IAAI,EAAQ,EAAO,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAQ,EAAO,IAAI,EAAE,CAAC,CAAE,EAAE,CAAC,CAAO,CAAC,EAAE,MAAc,CAAC,EAAa,QAAQ,IAAY,CAAE,EAAE,CAAC,CAAS,CAAC,EAAE,MAAc,CAAC,IAAI,EAAuB,MAAoB,CAA8E,GAA1E,IAAkB,EAAiB,sBAAsB,CAAe,EAAK,CAAC,EAAU,SAAS,CAAC,EAAS,SAAS,OAAQ,IAAM,GAAQ,EAAa,QAAQ,EAAQ,IAAI,EAAE,EAAE,IAAI,EAAA,CAAG,QAAQ,CAAC,EAAQ,GAAQ,EAAa,QAAQ,EAAQ,IAAI,EAAE,EAAE,IAAI,EAAA,CAAG,QAAQ,CAAC,EACn6C,EAAc,EAAO,iBAAiB,EAAU,OAAO,EAAQ,EAAU,EAAmB,EAAU,QAAQ,EAAc,EAAO,EAAO,EAAa,QAAQ,EAAa,QAAQ,EAA0B,OAAO,EAAE,EAAa,QAAQ,EAAU,EAAS,QAAQ,YAAY;8BAC3P,EAAG,kBAAkB,EAAU;KAE7D,EAAa,QAAQ,EAAO,EAAa,QAAQ,EAAO,EAA0B,QAAQ,EAAU,QAAQ,MAAM,SAAU,EAAE,GAAG,EAAI,QAAQ,CAAC,IAAM,EAAU,EAAI,QAAQ,cAAc,GAAG,EAAU,CAAC,IAAM,EAAO,EAAU,cAAiB,IAAQ,EAAU,QAAQ,EAAO,EAAO,aAAa,wBAAwB,CAAE,EAAG,CAAC,CAEjU,OADA,EAAgB,MACN,CAAI,GAAkB,qBAAqB,CAAgB,CAAG,CAAE,EAAE,CAAC,CAAC,EAAE,MAAc,CAAC,IAAM,EAAgB,GAAO,CAAC,IAAM,EAAU,EAAM,QAAc,EAAU,EAAM,QAAc,EAAQ,EAAO,WAAW,EAAQ,EAAQ,EAAO,YAAY,EAAQ,GAAa,EAAU,GAAS,EAAQ,EAAa,GAAa,EAAU,GAAS,EAAQ,EAAO,EAAO,IAAI,CAAW,EAAE,EAAO,IAAI,CAAW,CAAE,EAAuD,OAArD,EAAO,iBAAiB,YAAY,CAAe,MAAY,EAAO,oBAAoB,YAAY,CAAe,CAAE,EAAE,CAAC,EAAO,EAAU,CAAO,CAAC,EAAsB,EAAK,MAAM,CAAK,MAAI,MAAM,CAAC,GAAG,EAAM,KAAK,EAAE,SAAsB,EAAK,QAAQ,CAAC,IAAI,CAAQ,CAAC,CAAC,CAAC,CAAE,CAAwyB,SAAS,EAAS,EAAM,EAAQ,EAAS,EAAM,EAAO,CAA0F,OAAtF,IAAU,EAAiB,EAAkE,GAAzC,EAAM,IAAU,EAAS,IAAkC,EAAO,EAAO,CAAC,SAAS,EAAmB,EAAQ,EAAc,EAAO,EAAO,EAAU,EAAU,EAAuB,CAAC,IAAe,EAAE,IAAe,EAAE,IAAqB,EAAE,IAAqB,EAC7zD,IAAM,EAAkB,EAAc,UAAgB,EAAe,EAAQ,MAAM,UACjB,EAAmB,aAAxE,EAAO,EAAqF,MAA9D,EAAO,EAAoE,KAAS,EAAU,EAAsR,OAAhQ,GAAgB,IAAiB,SAAQ,AAAiK,EAA9J,GAAwB,IAAyB,OAAkB,GAAG,EAAmB,GAAG,EAAgB,CAAsB,EAAE,GAAG,IAAiC,GAAG,EAAmB,GAAG,KAA0B,GAAmB,IAAoB,OAAO,GAAG,EAAU,GAAG,IAAoB,CAAU,CAAC,SAAS,EAAgB,EAAgB,CAA0vC,OAAxuC,EAAgB,MAAM,eAAe,GAAG,CAAC,EAAA,CAAsC,QAAQ,CAAC,CAAC,IAAI,GAAW,CAAC,GAAK,CAAC,EAAK,GAAc,EAAU,MAAM,kBAAkB,CAAC,CAAC,MAAM,CAAC,EAAQ,EAAO,EAAa,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,EAAQ,EAAa,GAAG,CAAC,GAAK,CAAC,EAAE,EAAK,EAAI,GAAM,EAAE,MAAM,wBAAwB,EAAE,MAAM,GAAG,EAAK,GAAG,MAAM,IAAM,GAAO,EAAE,OAAO,EAAK,YAAY,EAAxB,CAA2B,IAAI,YAAY,IAAI,cAAc,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,MAAM,GAAG,EAAK,GAAG,EAAO,IAAI,CAAY,CAAC,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,QAAQ,IAAI,UAAU,MAAM,GAAG,EAAK,GAAG,EAAO,IAAI,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,MAAM,GAAG,EAAK,GAAG,EAAE,WAAW,EAAO,EAAE,EAAE,GAAG,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,MAAM,GAAG,EAAK,GAAG,EAAa,EAAO,EAAE,EAAE,GAAG,IAAI,WAAW,IAAM,EAAa,EAAO,IAAI,UAAU,EAAE,MAAM,GAAG,EAAK,GAAG,EAAa,GAAG,IAAI,EAAa,GAAG,IAAI,EAAa,GAAG,IAAI,EAAa,EAAO,EAAE,EAAE,GAAG,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,MAAM,GAAG,EAAK,GAAG,EAAO,IAAI,CAAY,CAAC,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,SAAS,IAAI,WAAmF,OAAxE,QAAQ,KAAK,aAAa,EAAK,uCAAuC,EAAS,EAAU,QAAiF,OAAzE,QAAQ,KAAK,+BAA+B,EAAK,sBAAsB,EAAS,CAAU,CAAC,CAA2B,CAAC,CAAC,KAAK,GAAG,CAAE,yBAbhyD,IAAiE,IAA4C,IAAoD,EAWyd,EAAiB,YAAY,oBAAoB,EAAoB,EAAiB,CAAC,QAAQ,CAAC,KAAK,EAAY,QAAQ,aAAa,EAAI,EAAE,UAAU,CAAC,KAAK,EAAY,KAAK,aAAa,OAAO,QAAQ,CAAC,SAAS,MAAM,EAAE,aAAa,CAAC,SAAS,MAAM,EAAE,wBAAwB,EAAI,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,GAAO,CAAC,EAAM,OAAO,EAAE,UAAU,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,YAAY,oEAAoE,CAAC,CAAC,EAAQ,EAAW,uDAA6D,MAAiCC,MAAY,CAAC,IAAI,EAAO,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,GAAG,IAAK,GAAQ,EAAW,OAAO,KAAK,MAAM,KAAK,OAAO,EAAE,EAAiB,CAAC,EAAG,OAAO,CAAO,EAAE,CAAC,CAAW"}