@stackoverfloweth/vue-compositions
Version:
A collection of reusable vue compositions.
21 lines • 654 B
JavaScript
import debounce from 'lodash.debounce';
import { ref, watch, watchEffect, isReadonly } from 'vue';
export function useDebouncedRef(input, waitMs) {
const waitRef = ref(waitMs);
const copy = ref(input.value);
const update = debounce((value) => {
if (value !== copy.value) {
copy.value = value;
}
}, waitRef.value);
watchEffect(() => update(input.value));
if (!isReadonly(input)) {
watch(copy, value => {
if (value !== input.value) {
input.value = value;
}
}, { flush: 'sync' });
}
return copy;
}
//# sourceMappingURL=useDebouncedRef.js.map