Files
scenerji/components/LenisProvider.tsx
T

44 lines
865 B
TypeScript

"use client";
import React, { useEffect, useRef } from "react";
import Lenis from "lenis";
export default function LenisProvider({
children,
}: {
children: React.ReactNode;
}) {
const lenisRef = useRef<Lenis | null>(null);
useEffect(() => {
// Initialize Lenis
const lenis = new Lenis({
duration: 1.2,
easing: (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),
orientation: "vertical",
gestureOrientation: "vertical",
smoothWheel: true,
wheelMultiplier: 1,
touchMultiplier: 1.5,
});
lenisRef.current = lenis;
// RAF loop
function raf(time: number) {
lenis.raf(time);
requestAnimationFrame(raf);
}
requestAnimationFrame(raf);
// Bind clean-up
return () => {
lenis.destroy();
lenisRef.current = null;
};
}, []);
return <>{children}</>;
}