import { onBeforeUnmount, onMounted, ref, toValue, watch } from "vue"; import { requestIdleCallback, cancelIdleCallback } from "../utils/prefetch.js"; export function useLazyOverlay(open, preload) { const rendered = ref(!!toValue(open)); watch(() => toValue(open), (value) => { if (value) { rendered.value = true; } }); let idleId; onMounted(() => { idleId = requestIdleCallback(() => { preload().catch(() => { }); }); }); onBeforeUnmount(() => { cancelIdleCallback(idleId); }); return rendered; }