{"version":3,"file":"AdvancedParallaxImage.2TFtBZvi.mjs","names":["React.useRef","React.useMemo","React.useCallback"],"sources":["https:/framerusercontent.com/modules/juSZUdkxYN767vtissib/7A6aRHr4abTipBsfEMZe/I02r6A6Gq.js","https:/framerusercontent.com/modules/47QGZqhDwr8Cp6pnIQcj/iGsYX5CyRJiir2paXAiO/AdvancedParallaxImage.js"],"sourcesContent":["// Generated by Framer (7bfce40)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOMV2;PP Neue Montreal Medium\",\"CUSTOMV2;PP Neue Montreal Bold\",\"CUSTOMV2;PP Neue Montreal SemiBold italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Medium\",source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/6uIfYl8bnz9kOy3KOuV7PxhFPhA.woff2\",weight:\"500\"},{cssFamilyName:\"PP Neue Montreal Bold\",source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/wa1QQCb6cXOn2xBXS059rEsCfsc.woff2\",weight:\"700\"},{cssFamilyName:\"PP Neue Montreal SemiBold italic\",source:\"custom\",style:\"italic\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/CTQIqyo8XNfXYVfDTiTmbULZs.woff2\",weight:\"600\"}]}];export const css=['.framer-5qubG .framer-styles-preset-qzq219:not(.rich-text-wrapper), .framer-5qubG .framer-styles-preset-qzq219.rich-text-wrapper p { --framer-font-family: \"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif; --framer-font-family-bold: \"PP Neue Montreal Bold\", \"PP Neue Montreal Bold Placeholder\", sans-serif; --framer-font-family-bold-italic: \"PP Neue Montreal SemiBold italic\", \"PP Neue Montreal SemiBold italic Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 20px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 600; --framer-letter-spacing: 0.3px; --framer-line-height: 1.3em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-9ddd667d-c363-42e5-8a55-65a91c9c751d, rgba(26, 26, 26, 0.8)); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 810px) { .framer-5qubG .framer-styles-preset-qzq219:not(.rich-text-wrapper), .framer-5qubG .framer-styles-preset-qzq219.rich-text-wrapper p { --framer-font-family: \"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif; --framer-font-family-bold: \"PP Neue Montreal Bold\", \"PP Neue Montreal Bold Placeholder\", sans-serif; --framer-font-family-bold-italic: \"PP Neue Montreal SemiBold italic\", \"PP Neue Montreal SemiBold italic Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 18px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 600; --framer-letter-spacing: 0.3px; --framer-line-height: 1.3em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-9ddd667d-c363-42e5-8a55-65a91c9c751d, rgba(26, 26, 26, 0.8)); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-5qubG .framer-styles-preset-qzq219:not(.rich-text-wrapper), .framer-5qubG .framer-styles-preset-qzq219.rich-text-wrapper p { --framer-font-family: \"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif; --framer-font-family-bold: \"PP Neue Montreal Bold\", \"PP Neue Montreal Bold Placeholder\", sans-serif; --framer-font-family-bold-italic: \"PP Neue Montreal SemiBold italic\", \"PP Neue Montreal SemiBold italic Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 18px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 600; --framer-letter-spacing: 0.3px; --framer-line-height: 1.3em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-9ddd667d-c363-42e5-8a55-65a91c9c751d, rgba(26, 26, 26, 0.8)); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-5qubG\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// User request: Create a new Framer code component named \"AdvancedParallaxImage\" with scroll-linked parallax always on, optional Zoom Reveal and Mouse Tilt effects that compose together, reduced-motion support, safe static/canvas behavior, and full property controls for image, alt text, radius, intensities, and clipping.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useInView,useMotionValue,useReducedMotion,useScroll,useSpring,useTransform}from\"framer-motion\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function AdvancedParallaxImage(props){const{image={src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Gradient 1 - Blue\"},altText,cornerRadius,parallaxIntensity,enableZoomReveal,zoomIntensity,enableMouseTilt,tiltIntensity,overflowHidden,style}=props;const containerRef=React.useRef(null);const isInView=useInView(containerRef,{amount:.1});const isStaticRenderer=useIsStaticRenderer();const prefersReducedMotion=useReducedMotion();const{scrollYProgress}=useScroll({target:containerRef,offset:[\"start end\",\"end start\"]});const canAnimate=React.useMemo(()=>{return!isStaticRenderer&&!prefersReducedMotion&&isInView;},[isStaticRenderer,prefersReducedMotion,isInView]);const baseParallax=useTransform(scrollYProgress,[0,1],[parallaxIntensity,-parallaxIntensity]);const parallaxY=useSpring(baseParallax,{stiffness:120,damping:24,mass:.25});const baseScale=useTransform(scrollYProgress,[0,1],[zoomIntensity,1]);const zoomScale=useSpring(baseScale,{stiffness:120,damping:24,mass:.3});const rawTiltX=useMotionValue(0);const rawTiltY=useMotionValue(0);const tiltX=useSpring(rawTiltX,{stiffness:180,damping:20,mass:.3});const tiltY=useSpring(rawTiltY,{stiffness:180,damping:20,mass:.3});const onMouseMove=React.useCallback(event=>{if(!enableMouseTilt||!canAnimate)return;const element=containerRef.current;if(!element)return;const rect=element.getBoundingClientRect();const x=(event.clientX-rect.left)/rect.width;const y=(event.clientY-rect.top)/rect.height;const centeredX=(x-.5)*2;const centeredY=(y-.5)*2;rawTiltY.set(centeredX*tiltIntensity);rawTiltX.set(centeredY*-tiltIntensity);},[enableMouseTilt,canAnimate,tiltIntensity,rawTiltX,rawTiltY]);const onMouseLeave=React.useCallback(()=>{rawTiltX.set(0);rawTiltY.set(0);},[rawTiltX,rawTiltY]);const overscan=React.useMemo(()=>{return Math.max(parallaxIntensity*2+40,80);},[parallaxIntensity]);const effectiveY=canAnimate?parallaxY:0;const effectiveScale=canAnimate&&enableZoomReveal?zoomScale:1;const effectiveRotateX=canAnimate&&enableMouseTilt?tiltX:0;const effectiveRotateY=canAnimate&&enableMouseTilt?tiltY:0;return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",borderRadius:cornerRadius,overflow:overflowHidden?\"hidden\":\"visible\",...style},onMouseMove:onMouseMove,onMouseLeave:onMouseLeave,children:/*#__PURE__*/_jsx(motion.img,{src:image.src,srcSet:image.srcSet,alt:altText||image.alt||\"\",style:{position:\"absolute\",left:0,top:-overscan/2,width:\"100%\",height:`calc(100% + ${overscan}px)`,objectFit:\"cover\",y:effectiveY,scale:effectiveScale,rotateX:effectiveRotateX,rotateY:effectiveRotateY,transformPerspective:900,willChange:\"transform\",pointerEvents:\"none\"}})});}addPropertyControls(AdvancedParallaxImage,{image:{type:ControlType.ResponsiveImage,title:\"Image\"},altText:{type:ControlType.String,title:\"Alt Text\",defaultValue:\"\",placeholder:\"Image description\"},cornerRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:0,min:0,max:200,step:1,unit:\"px\"},parallaxIntensity:{type:ControlType.Number,title:\"Parallax\",defaultValue:30,min:0,max:200,step:1,unit:\"px\"},enableZoomReveal:{type:ControlType.Boolean,title:\"Zoom Reveal\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},zoomIntensity:{type:ControlType.Number,title:\"Zoom\",defaultValue:1.15,min:1,max:2,step:.01,hidden:props=>!props.enableZoomReveal},enableMouseTilt:{type:ControlType.Boolean,title:\"Mouse Tilt\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},tiltIntensity:{type:ControlType.Number,title:\"Tilt\",defaultValue:10,min:0,max:45,step:.5,unit:\"deg\",hidden:props=>!props.enableMouseTilt},overflowHidden:{type:ControlType.Boolean,title:\"Clip\",defaultValue:true,enabledTitle:\"Hidden\",disabledTitle:\"Visible\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AdvancedParallaxImage\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AdvancedParallaxImage.map"],"mappings":"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"}