{"version":3,"sources":["../src/hooks/use-animation.ts"],"names":["useState","useRef","useEffect","useCallback"],"mappings":";;;;;AAcO,SAAS,YAAA,CAAa;AAAA,EAC3B,IAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA4C;AAC1C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,IAAIA,cAAA,CAAS,IAAA,GAAO,aAAa,EAAE,CAAA;AACjE,EAAA,MAAM,GAAA,GAAMC,aAA2B,IAAI,CAAA;AAE3C,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,YAAA,CAAa,UAAU,CAAA;AAAA,IACzB,WAAW,OAAA,EAAS;AAClB,MAAA,YAAA,CAAa,SAAS,CAAA;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,IAAA,EAAM,UAAA,EAAY,SAAA,EAAW,OAAO,CAAC,CAAA;AAEzC,EAAA,MAAM,kBAAA,GAAqBC,kBAAY,MAAM;AAC3C,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,YAAA,CAAa,EAAE,CAAA;AAAA,IACjB;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAAD,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,IAAI,CAAC,EAAA,EAAI;AAET,IAAA,EAAA,CAAG,gBAAA,CAAiB,gBAAgB,kBAAkB,CAAA;AACtD,IAAA,OAAO,MAAM,EAAA,CAAG,mBAAA,CAAoB,cAAA,EAAgB,kBAAkB,CAAA;AAAA,EACxE,CAAA,EAAG,CAAC,kBAAA,EAAoB,OAAO,CAAC,CAAA;AAEhC,EAAA,OAAO,EAAE,OAAA,EAAS,SAAA,EAAW,SAAA,EAAW,GAAA,EAAI;AAC9C","file":"chunk-3WGRVDQR.cjs","sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\ninterface UseAnimationOptions {\n  open: boolean;\n  enterClass: string;\n  exitClass: string;\n}\n\ninterface UseAnimationReturn {\n  mounted: boolean;\n  className: string;\n  ref: React.RefObject<HTMLElement | null>;\n}\n\nexport function useAnimation({\n  open,\n  enterClass,\n  exitClass,\n}: UseAnimationOptions): UseAnimationReturn {\n  const [mounted, setMounted] = useState(open);\n  const [animClass, setAnimClass] = useState(open ? enterClass : \"\");\n  const ref = useRef<HTMLElement | null>(null);\n\n  useEffect(() => {\n    if (open) {\n      setMounted(true);\n      setAnimClass(enterClass);\n    } else if (mounted) {\n      setAnimClass(exitClass);\n    }\n  }, [open, enterClass, exitClass, mounted]);\n\n  const handleAnimationEnd = useCallback(() => {\n    if (!open) {\n      setMounted(false);\n      setAnimClass(\"\");\n    }\n  }, [open]);\n\n  useEffect(() => {\n    const el = ref.current;\n    if (!el) return;\n\n    el.addEventListener(\"animationend\", handleAnimationEnd);\n    return () => el.removeEventListener(\"animationend\", handleAnimationEnd);\n  }, [handleAnimationEnd, mounted]);\n\n  return { mounted, className: animClass, ref };\n}\n"]}