import { ref, watch, type Ref } from 'vue'; /** * Debounce a ref value */ export function useDebounce(value: Ref, delay: number = 200): Ref { const debouncedValue = ref(value.value) as Ref; let timeout: ReturnType | null = null; watch(value, (newValue) => { if (timeout) { clearTimeout(timeout); } timeout = setTimeout(() => { debouncedValue.value = newValue; }, delay); }); return debouncedValue; }