{
  "version": 3,
  "sources": ["ssg: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": "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",
  "names": ["ParallaxFloating", "props", "distance", "direction", "smoothing", "enabled", "isCanvas", "RenderTarget", "id", "generateInstanceId", "transition", "mapRange", "offset", "mouseX", "useMotionValue", "mouseY", "x", "y", "springX", "useSpring", "springY", "ref", "pe", "parentRef", "transformRef", "styleRef", "hasSpringRef", "previousXRef", "previousYRef", "previousStyleTransformRef", "ue", "unsubscribeX", "v", "unsubscribeY", "animationFrameId", "updateTransform", "xValue", "yValue", "computedStyle", "window", "transform", "calculateTransform", "container", "parent", "handleMouseMove", "event", "mouseXPos", "mouseYPos", "centerX", "centerY", "normalizedX", "normalizedY", "p", "addPropertyControls", "ControlType", "CHARACTERS", "se", "result", "i", "value", "fromLow", "fromHigh", "toLow", "toHigh", "percentage", "element", "previousX", "previousY", "previousStyleTransform", "computedTransform", "styleTransform", "finalX", "finalY", "translateTransform", "invertTransform", "transformString", "func", "valuesString", "values", "invertNumber", "_", "sign", "num", "unit", "rotateValues"]
}
