{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/Ii18lS8XioDtdQQTSISw/VS4kaGpGHJlj3UMtjzk7/MousePositionStore.js", "ssg:https://framerusercontent.com/modules/Ag43IGvTe7kWUgmxShxw/1jQ1i4b9tJR8kzbNJdOh/CursorOrientation.js"],
  "sourcesContent": ["// *! required for the mouse move effects !*\n// global state for mouse position to use for hover effects\n// this is an optimization of the hover effect, to only use 1 event listener for the whole page instead of on for each element, improving performance\nimport{jsx as _jsx,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect}from\"react\";import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";/*\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export const useStore=createStore({mousePosition:{x:0,y:0}});function throttle(callback,delay){let throttleTimeout=null;let storedEvent=null;const throttledEventHandler=event=>{storedEvent=event;const shouldCall=!throttleTimeout;if(shouldCall){callback(storedEvent);storedEvent=null;throttleTimeout=setTimeout(()=>{throttleTimeout=null;if(storedEvent){throttledEventHandler(storedEvent);}},delay);}};return throttledEventHandler;}export default function MousePositionStore(props){const[store,setStore]=useStore();useEffect(()=>{const handleMouseMove=throttle(event=>{setStore({mousePosition:{x:event.clientX,y:event.clientY}});},100);window.addEventListener(\"mousemove\",handleMouseMove);return()=>{window.removeEventListener(\"mousemove\",handleMouseMove);};},[]);return /*#__PURE__*/_jsx(_Fragment,{});}\nexport const __FramerMetadata__ = {\"exports\":{\"useStore\":{\"type\":\"variable\",\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"auto\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"MousePositionStore\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MousePositionStore.map", "// Cusor orientation effects (offset + 3d rotation) -> 5 levels with increasing intensity\n// They are different functions because code overrides functions can't receive arguments\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useEffect}from\"react\";import{motion,useMotionValue,useSpring}from\"framer-motion\";import{useStore}from\"https://framerusercontent.com/modules/Ii18lS8XioDtdQQTSISw/VS4kaGpGHJlj3UMtjzk7/MousePositionStore.js\";const transition={type:\"spring\",stiffness:500,damping:100};function clamp(value,min,max){return Math.min(Math.max(value,min),max);}export function withCursorOrientation1(Component){return props=>{const componentRef=useRef(null);const x=useMotionValue(0);const y=useMotionValue(0);const rotateX=useMotionValue(0);const rotateY=useMotionValue(0);const xSpring=useSpring(x,transition);const ySpring=useSpring(y,transition);const rotateXSpring=useSpring(rotateX,transition);const rotateYSpring=useSpring(rotateY,transition);const[store,setStore]=useStore();const{mousePosition}=store;useEffect(()=>{const updateEffect=()=>{if(componentRef.current){const rect=componentRef.current.getBoundingClientRect();const centerX=rect.left+rect.width/2;const centerY=rect.top+rect.height/2;const distanceX=clamp(mousePosition.x-centerX,-500,500);const distanceY=clamp(mousePosition.y-centerY,-500,500);const distanceFromCenter=Math.sqrt(distanceX*distanceX+distanceY*distanceY);const rotationScale=1/(distanceFromCenter+1)*5;rotateX.set(distanceY*-rotationScale);rotateY.set(distanceX*rotationScale);const movementScale=.02;x.set(distanceX*movementScale);y.set(distanceY*movementScale);}};updateEffect();},[mousePosition.x,mousePosition.y]);return /*#__PURE__*/_jsx(motion.div,{style:{perspective:\"20000px\",transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(motion.div,{ref:componentRef,style:{width:\"auto\",height:\"auto\",x:xSpring,y:ySpring,rotateX:rotateXSpring,rotateY:rotateYSpring,transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(Component,{...props})})});};}export function withCursorOrientation2(Component){return props=>{const componentRef=useRef(null);const x=useMotionValue(0);const y=useMotionValue(0);const rotateX=useMotionValue(0);const rotateY=useMotionValue(0);const xSpring=useSpring(x,transition);const ySpring=useSpring(y,transition);const rotateXSpring=useSpring(rotateX,transition);const rotateYSpring=useSpring(rotateY,transition);const[store,setStore]=useStore();const{mousePosition}=store;useEffect(()=>{const updateEffect=()=>{if(componentRef.current){const rect=componentRef.current.getBoundingClientRect();const centerX=rect.left+rect.width/2;const centerY=rect.top+rect.height/2;const distanceX=clamp(mousePosition.x-centerX,-500,500);const distanceY=clamp(mousePosition.y-centerY,-500,500);const distanceFromCenter=Math.sqrt(distanceX*distanceX+distanceY*distanceY);const rotationScale=1/(distanceFromCenter+1)*6;rotateX.set(distanceY*-rotationScale);rotateY.set(distanceX*rotationScale);const movementScale=.03;x.set(distanceX*movementScale);y.set(distanceY*movementScale);}};updateEffect();},[mousePosition.x,mousePosition.y]);return /*#__PURE__*/_jsx(motion.div,{style:{perspective:\"20000px\",transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(motion.div,{ref:componentRef,style:{width:\"auto\",height:\"auto\",x:xSpring,y:ySpring,rotateX:rotateXSpring,rotateY:rotateYSpring,transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(Component,{...props})})});};}export function withCursorOrientation3(Component){return props=>{const componentRef=useRef(null);const x=useMotionValue(0);const y=useMotionValue(0);const rotateX=useMotionValue(0);const rotateY=useMotionValue(0);const xSpring=useSpring(x,transition);const ySpring=useSpring(y,transition);const rotateXSpring=useSpring(rotateX,transition);const rotateYSpring=useSpring(rotateY,transition);const[store,setStore]=useStore();const{mousePosition}=store;useEffect(()=>{const updateEffect=()=>{if(componentRef.current){const rect=componentRef.current.getBoundingClientRect();const centerX=rect.left+rect.width/2;const centerY=rect.top+rect.height/2;const distanceX=clamp(mousePosition.x-centerX,-500,500);const distanceY=clamp(mousePosition.y-centerY,-500,500);const distanceFromCenter=Math.sqrt(distanceX*distanceX+distanceY*distanceY);const rotationScale=1/(distanceFromCenter+1)*7;rotateX.set(distanceY*-rotationScale);rotateY.set(distanceX*rotationScale);const movementScale=.04;x.set(distanceX*movementScale);y.set(distanceY*movementScale);}};updateEffect();},[mousePosition.x,mousePosition.y]);return /*#__PURE__*/_jsx(motion.div,{style:{perspective:\"20000px\",transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(motion.div,{ref:componentRef,style:{width:\"auto\",height:\"auto\",x:xSpring,y:ySpring,rotateX:rotateXSpring,rotateY:rotateYSpring,transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(Component,{...props})})});};}export function withCursorOrientation4(Component){return props=>{const componentRef=useRef(null);const x=useMotionValue(0);const y=useMotionValue(0);const rotateX=useMotionValue(0);const rotateY=useMotionValue(0);const xSpring=useSpring(x,transition);const ySpring=useSpring(y,transition);const rotateXSpring=useSpring(rotateX,transition);const rotateYSpring=useSpring(rotateY,transition);const[store,setStore]=useStore();const{mousePosition}=store;useEffect(()=>{const updateEffect=()=>{if(componentRef.current){const rect=componentRef.current.getBoundingClientRect();const centerX=rect.left+rect.width/2;const centerY=rect.top+rect.height/2;const distanceX=clamp(mousePosition.x-centerX,-500,500);const distanceY=clamp(mousePosition.y-centerY,-500,500);const distanceFromCenter=Math.sqrt(distanceX*distanceX+distanceY*distanceY);const rotationScale=1/(distanceFromCenter+1)*8;rotateX.set(distanceY*-rotationScale);rotateY.set(distanceX*rotationScale);const movementScale=.05;x.set(distanceX*movementScale);y.set(distanceY*movementScale);}};updateEffect();},[mousePosition.x,mousePosition.y]);return /*#__PURE__*/_jsx(motion.div,{style:{perspective:\"20000px\",transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(motion.div,{ref:componentRef,style:{width:\"auto\",height:\"auto\",x:xSpring,y:ySpring,rotateX:rotateXSpring,rotateY:rotateYSpring,transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(Component,{...props})})});};}export function withCursorOrientation5(Component){return props=>{const componentRef=useRef(null);const x=useMotionValue(0);const y=useMotionValue(0);const rotateX=useMotionValue(0);const rotateY=useMotionValue(0);const xSpring=useSpring(x,transition);const ySpring=useSpring(y,transition);const rotateXSpring=useSpring(rotateX,transition);const rotateYSpring=useSpring(rotateY,transition);const[store,setStore]=useStore();const{mousePosition}=store;useEffect(()=>{const updateEffect=()=>{if(componentRef.current){const rect=componentRef.current.getBoundingClientRect();const centerX=rect.left+rect.width/2;const centerY=rect.top+rect.height/2;const distanceX=clamp(mousePosition.x-centerX,-500,500);const distanceY=clamp(mousePosition.y-centerY,-500,500);const distanceFromCenter=Math.sqrt(distanceX*distanceX+distanceY*distanceY);const rotationScale=1/(distanceFromCenter+1)*9;rotateX.set(distanceY*-rotationScale);rotateY.set(distanceX*rotationScale);const movementScale=.06;x.set(distanceX*movementScale);y.set(distanceY*movementScale);}};updateEffect();},[mousePosition.x,mousePosition.y]);return /*#__PURE__*/_jsx(motion.div,{style:{perspective:\"20000px\",transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(motion.div,{ref:componentRef,style:{width:\"auto\",height:\"auto\",x:xSpring,y:ySpring,rotateX:rotateXSpring,rotateY:rotateYSpring,transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(Component,{...props})})});};}export function withCursorOrientation6(Component){return props=>{const componentRef=useRef(null);const x=useMotionValue(0);const y=useMotionValue(0);const rotateX=useMotionValue(0);const rotateY=useMotionValue(0);const xSpring=useSpring(x,transition);const ySpring=useSpring(y,transition);const rotateXSpring=useSpring(rotateX,transition);const rotateYSpring=useSpring(rotateY,transition);const[store,setStore]=useStore();const{mousePosition}=store;useEffect(()=>{const updateEffect=()=>{if(componentRef.current){const rect=componentRef.current.getBoundingClientRect();const centerX=rect.left+rect.width/2;const centerY=rect.top+rect.height/2;const distanceX=clamp(mousePosition.x-centerX,-500,500);const distanceY=clamp(mousePosition.y-centerY,-500,500);const distanceFromCenter=Math.sqrt(distanceX*distanceX+distanceY*distanceY);const rotationScale=1/(distanceFromCenter+1)*10;rotateX.set(distanceY*-rotationScale);rotateY.set(distanceX*rotationScale);const movementScale=.07;x.set(distanceX*movementScale);y.set(distanceY*movementScale);}};updateEffect();},[mousePosition.x,mousePosition.y]);return /*#__PURE__*/_jsx(motion.div,{style:{perspective:\"20000px\",transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(motion.div,{ref:componentRef,style:{width:\"auto\",height:\"auto\",x:xSpring,y:ySpring,rotateX:rotateXSpring,rotateY:rotateYSpring,transformStyle:\"preserve-3d\"},children:/*#__PURE__*/_jsx(Component,{...props})})});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withCursorOrientation3\":{\"type\":\"reactHoc\",\"name\":\"withCursorOrientation3\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCursorOrientation4\":{\"type\":\"reactHoc\",\"name\":\"withCursorOrientation4\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCursorOrientation2\":{\"type\":\"reactHoc\",\"name\":\"withCursorOrientation2\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCursorOrientation6\":{\"type\":\"reactHoc\",\"name\":\"withCursorOrientation6\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCursorOrientation1\":{\"type\":\"reactHoc\",\"name\":\"withCursorOrientation1\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCursorOrientation5\":{\"type\":\"reactHoc\",\"name\":\"withCursorOrientation5\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CursorOrientation.map"],
  "mappings": "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",
  "names": ["useStore", "createStore", "transition", "clamp", "value", "min", "max", "withCursorOrientation2", "Component", "props", "componentRef", "pe", "x", "useMotionValue", "y", "rotateX", "rotateY", "xSpring", "useSpring", "transition", "ySpring", "rotateXSpring", "rotateYSpring", "store", "setStore", "useStore", "mousePosition", "ue", "rect", "centerX", "centerY", "distanceX", "clamp", "distanceY", "rotationScale", "movementScale", "p", "motion", "withCursorOrientation3"]
}
