UNPKG

@cloudcome/utils-vue

Version:
33 lines (32 loc) 803 B
import { effectScope, ref, watch, toValue, onScopeDispose, computed } from "vue"; function useLazyValue(boolean, delay) { const scope = effectScope(); const lazyBoolean = ref(boolean.value); let changedAt = 0; let t; scope.run(() => { watch(boolean, (value) => { const delayValue = toValue(delay) || 100; clearTimeout(t); if (changedAt > 0 && Date.now() - changedAt > delayValue) { lazyBoolean.value = value; } else { t = setTimeout(() => { lazyBoolean.value = value; }, delayValue); } changedAt = Date.now(); }); }); onScopeDispose(() => { clearTimeout(t); scope.stop(); }); return computed(() => { return lazyBoolean.value; }); } export { useLazyValue }; //# sourceMappingURL=lazy.mjs.map