{"version":3,"file":"shared-lib.DO7UTe5K.mjs","names":["useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/Hgmr1KVOtktdcoltV9B5/HPc8NiLTRyFlTmgR6U91/SmoothScroll.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useCallback,useEffect,useMemo}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// User request: Create a global, premium Lenis-style smooth scroll component with dynamic Lenis import + internal RAF fallback, SSR/static safety, reduced-motion support, anchor/hash compatibility, cleanup on unmount, and Framer property controls for tuning.\n/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function SmoothScroll(props){const{lerp=.08,duration=1.2,wheelMultiplier=1,touchMultiplier=1.5,smoothTouch=false,enabled=true}=props;const config=useMemo(()=>({lerp,duration,wheelMultiplier,touchMultiplier,smoothTouch,enabled}),[lerp,duration,wheelMultiplier,touchMultiplier,smoothTouch,enabled]);const easeOutExpo=useCallback(t=>{if(t>=1)return 1;return 1-Math.pow(2,-10*t);},[]);useEffect(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\")return;const target=RenderTarget.current();const shouldRunInTarget=target!==RenderTarget.canvas&&target!==RenderTarget.thumbnail&&target!==RenderTarget.preview&&target!==RenderTarget.export;if(!shouldRunInTarget)return;if(!config.enabled)return;if(typeof window.matchMedia===\"function\"){const mediaQuery=window.matchMedia(\"(prefers-reduced-motion: reduce)\");if(mediaQuery.matches)return;}let rafId=0;let cleanupFn=null;let isDisposed=false;const getMaxScrollY=()=>{const doc=document.documentElement;return Math.max(0,doc.scrollHeight-window.innerHeight);};const clamp=(value,min,max)=>Math.min(max,Math.max(min,value));const fallbackInit=()=>{let targetY=window.scrollY;let currentY=targetY;let touchStartY=0;let isProgrammaticScroll=false;const syncTargetToCurrentScroll=()=>{if(isProgrammaticScroll)return;targetY=window.scrollY;currentY=window.scrollY;};const onWheel=event=>{event.preventDefault();targetY=clamp(targetY+event.deltaY*config.wheelMultiplier,0,getMaxScrollY());};const onTouchStart=event=>{if(!config.smoothTouch||event.touches.length===0)return;touchStartY=event.touches[0].clientY;};const onTouchMove=event=>{if(!config.smoothTouch||event.touches.length===0)return;event.preventDefault();const currentTouchY=event.touches[0].clientY;const delta=touchStartY-currentTouchY;touchStartY=currentTouchY;targetY=clamp(targetY+delta*config.touchMultiplier,0,getMaxScrollY());};const animateToY=nextY=>{targetY=clamp(nextY,0,getMaxScrollY());};const onHashChange=()=>{const hash=window.location.hash;if(!hash)return;const id=decodeURIComponent(hash.replace(\"#\",\"\"));if(!id)return;const element=document.getElementById(id);if(!element)return;const rect=element.getBoundingClientRect();animateToY(window.scrollY+rect.top);};const onDocumentClick=event=>{const targetElement=event.target;if(!targetElement)return;const anchor=targetElement.closest(\"a[href]\");if(!anchor)return;const href=anchor.getAttribute(\"href\")||\"\";if(!href.startsWith(\"#\"))return;const id=decodeURIComponent(href.replace(\"#\",\"\"));const element=id?document.getElementById(id):document.body;if(!element)return;event.preventDefault();const rect=element.getBoundingClientRect();animateToY(window.scrollY+rect.top);};const raf=()=>{const maxY=getMaxScrollY();targetY=clamp(targetY,0,maxY);currentY=currentY+(targetY-currentY)*config.lerp;if(Math.abs(targetY-currentY)<.1)currentY=targetY;isProgrammaticScroll=true;window.scrollTo(0,currentY);isProgrammaticScroll=false;rafId=window.requestAnimationFrame(raf);};window.addEventListener(\"wheel\",onWheel,{passive:false});window.addEventListener(\"scroll\",syncTargetToCurrentScroll,{passive:true});window.addEventListener(\"hashchange\",onHashChange);document.addEventListener(\"click\",onDocumentClick);if(config.smoothTouch){window.addEventListener(\"touchstart\",onTouchStart,{passive:true});window.addEventListener(\"touchmove\",onTouchMove,{passive:false});}rafId=window.requestAnimationFrame(raf);cleanupFn=()=>{window.removeEventListener(\"wheel\",onWheel);window.removeEventListener(\"scroll\",syncTargetToCurrentScroll);window.removeEventListener(\"hashchange\",onHashChange);document.removeEventListener(\"click\",onDocumentClick);if(config.smoothTouch){window.removeEventListener(\"touchstart\",onTouchStart);window.removeEventListener(\"touchmove\",onTouchMove);}if(rafId)window.cancelAnimationFrame(rafId);};};const setupSmoothScroll=async()=>{try{const dynamicImporter=new Function(\"moduleName\",\"return import(moduleName)\");const module=await dynamicImporter(\"lenis\");if(isDisposed)return;const LenisConstructor=module?.default;if(!LenisConstructor){fallbackInit();return;}const lenis=new LenisConstructor({lerp:config.lerp,duration:config.duration,wheelMultiplier:config.wheelMultiplier,touchMultiplier:config.touchMultiplier,smoothTouch:config.smoothTouch,smoothWheel:true,anchors:true,easing:easeOutExpo});const onHashChange=()=>{const hash=window.location.hash;if(!hash)return;const id=decodeURIComponent(hash.replace(\"#\",\"\"));if(!id)return;const element=document.getElementById(id);if(element)lenis.scrollTo(element);};const onDocumentClick=event=>{const targetElement=event.target;if(!targetElement)return;const anchor=targetElement.closest(\"a[href]\");if(!anchor)return;const href=anchor.getAttribute(\"href\")||\"\";if(!href.startsWith(\"#\"))return;const id=decodeURIComponent(href.replace(\"#\",\"\"));const element=id?document.getElementById(id):document.body;if(!element)return;event.preventDefault();lenis.scrollTo(element);};const raf=time=>{lenis.raf(time);rafId=window.requestAnimationFrame(raf);};window.addEventListener(\"hashchange\",onHashChange);document.addEventListener(\"click\",onDocumentClick);rafId=window.requestAnimationFrame(raf);cleanupFn=()=>{window.removeEventListener(\"hashchange\",onHashChange);document.removeEventListener(\"click\",onDocumentClick);if(rafId)window.cancelAnimationFrame(rafId);if(lenis&&typeof lenis.destroy===\"function\")lenis.destroy();};}catch(error){if(isDisposed)return;fallbackInit();}};void setupSmoothScroll();return()=>{isDisposed=true;if(cleanupFn)cleanupFn();};},[config,easeOutExpo]);return /*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:0,height:0,pointerEvents:\"none\",overflow:\"hidden\"},\"aria-hidden\":\"true\"});}addPropertyControls(SmoothScroll,{lerp:{type:ControlType.Number,title:\"Lerp\",defaultValue:.08,min:.01,max:.3,step:.01},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:1.2,min:.1,max:3,step:.1},wheelMultiplier:{type:ControlType.Number,title:\"Wheel\",defaultValue:1,min:.1,max:3,step:.1},touchMultiplier:{type:ControlType.Number,title:\"Touch\",defaultValue:1.5,min:.1,max:4,step:.1},smoothTouch:{type:ControlType.Boolean,title:\"Smooth Touch\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SmoothScroll\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SmoothScroll.map"],"mappings":"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"}