import { onMounted, onUnmounted } from "vue"; export function useInterval( fn: () => void, interval: number, options: { immediate: boolean; afterMounted: boolean; }, ): void { if (Number.isNaN(interval)) return; let intervalId: number | null = null; if (options.afterMounted) { onMounted(() => { if (options.immediate) fn(); intervalId = window.setInterval(fn, interval); }); } else { if (options.immediate) fn(); intervalId = window.setInterval(fn, interval); } onUnmounted(() => { if (intervalId) window.clearInterval(intervalId); }); }