"use client";

import { useEffect, useRef, useState } from "react";

/**
 * ردیابی جهت اسکرول:
 * - compact: هنگام اسکرول (پایین‌تر از threshold) حالت جمع‌وجور
 * - hidden: هنگام اسکرول به پایین true (هدر مخفی)، هنگام اسکرول به بالا یا در ابتدای صفحه false
 */
export function useScrollDirection(threshold = 16) {
  const [compact, setCompact] = useState(false);
  const [hidden, setHidden] = useState(false);
  const lastY = useRef(0);
  const ticking = useRef(false);

  useEffect(() => {
    lastY.current = window.scrollY;

    const update = () => {
      const y = window.scrollY;
      if (y <= threshold) {
        setCompact(false);
        setHidden(false);
      } else if (y > lastY.current + 4) {
        setCompact(true);
        setHidden(true);
      } else if (y < lastY.current - 4) {
        setCompact(true);
        setHidden(false);
      }
      lastY.current = y;
      ticking.current = false;
    };

    const onScroll = () => {
      if (!ticking.current) {
        ticking.current = true;
        requestAnimationFrame(update);
      }
    };

    window.addEventListener("scroll", onScroll, { passive: true });
    return () => window.removeEventListener("scroll", onScroll);
  }, [threshold]);

  return { compact, hidden };
}
