@cloudcome/utils-vue
Version:
cloudcome utils for vue
33 lines (32 loc) • 803 B
JavaScript
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