import { gsap } from 'gsap'
import { CustomEase } from 'gsap/CustomEase'
import { ScrollTrigger } from 'gsap/ScrollTrigger'

/**
 * GSAP n'est chargé que côté navigateur. Les composants y accèdent par
 * `useNuxtApp().$gsap` / `$ScrollTrigger` (voir le composable useMotion).
 */
export default defineNuxtPlugin(() => {
  gsap.registerPlugin(ScrollTrigger, CustomEase)

  for (const [name, curve] of Object.entries(EASE_CURVES)) {
    CustomEase.create(name, curve)
  }

  gsap.defaults({ ease: EASE.air, duration: DURATION.base })

  // La barre d'adresse mobile qui se replie ne doit pas relancer tous les calculs.
  ScrollTrigger.config({ ignoreMobileResize: true })

  return {
    provide: { gsap, ScrollTrigger },
  }
})
