import Lenis from "lenis";
import gsap from "gsap";
import ScrollTrigger from "gsap/ScrollTrigger";

declare global {
  interface Window {
    lenis?: Lenis;
    animationConfortableComplete?: boolean;
  }
}

export const initSmoothScroll = () => {
  if (typeof window === "undefined") return;

  if (window.lenis) return window.lenis;

  gsap.registerPlugin(ScrollTrigger);

  const lenis = new Lenis({
    lerp: 0.08,
    smoothWheel: true,
  });

  window.lenis = lenis;
  window.animationConfortableComplete = false;

  lenis.on("scroll", ScrollTrigger.update);

  gsap.ticker.add((time) => {
    lenis.raf(time * 1000);
  });
  ScrollTrigger.defaults({
    scroller: document.documentElement,
  });

  lenis.stop();

  setTimeout(() => {
    lenis.scrollTo(0, { immediate: true, force: true });
    document.body.classList.remove("opacity-0");
  }, 100);

  return lenis;
};
