"use client";

import { useEffect, useRef } from "react";

/** Debounce a callback — useful for autosave on builder edits. */
export function useDebouncedAutosave(
  callback: () => void | Promise<void>,
  deps: unknown[],
  delayMs = 2000
) {
  const callbackRef = useRef(callback);
  callbackRef.current = callback;

  useEffect(() => {
    const timer = setTimeout(() => {
      void callbackRef.current();
    }, delayMs);
    return () => clearTimeout(timer);
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, deps);
}
