@cran/lib.vue.ref
Version:
Vue Reactivity Extensions
24 lines (19 loc) • 512 B
text/typescript
import { type Ref, watch } from "vue";
/**
* Always return value to a fallback after the
* given delay (or on next stack)
* @since 0.2.0
* @category Controller
*/
export function useAutoReset<T> (
ref: Ref<T>, delay?: number, fallback: T = ref.value
) {
let timer: unknown | null = null;
return watch(ref, function onNext ( ) {
if (timer) { clearTimeout(timer as number); }
timer = setTimeout(function onTimeout ( ) {
timer = null;
ref.value = fallback;
}, delay);
});
}