Spaces:
Running
Running
File size: 901 Bytes
627ac39 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 'use client';
import { useEffect, useRef } from 'react';
import Lenis from 'lenis';
export default function SmoothScrollProvider({ children }: { children: React.ReactNode }) {
const lenisRef = useRef<Lenis | null>(null);
useEffect(() => {
const lenis = new Lenis({
duration: 1.25,
easing: (t: number) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),
orientation: 'vertical',
smoothWheel: true,
wheelMultiplier: 0.9,
touchMultiplier: 1.5,
});
lenisRef.current = lenis;
lenis.on('scroll', () => {
window.dispatchEvent(new Event('scroll'));
});
let rafId: number;
function raf(time: number) {
lenis.raf(time);
rafId = requestAnimationFrame(raf);
}
rafId = requestAnimationFrame(raf);
return () => {
cancelAnimationFrame(rafId);
lenis.destroy();
};
}, []);
return <>{children}</>;
}
|