Files
policy-ui/app/utils/refDebounced.ts
Jordan Weingarten 67482f6629 WIP jordan
2026-04-16 11:11:44 -05:00

19 lines
474 B
TypeScript

import { ref, watch, type Ref } from 'vue'
/** Debounced mirror of a ref (no @vueuse dependency). */
export function refDebounced<T>(source: Ref<T>, ms: number): Ref<T> {
const debounced = ref(source.value) as Ref<T>
let timer: ReturnType<typeof setTimeout> | undefined
watch(
source,
(v) => {
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
debounced.value = v
}, ms)
},
{ flush: 'sync' }
)
return debounced
}