diff --git a/photon-client/src/components/common/pv-slider.vue b/photon-client/src/components/common/pv-slider.vue index 0fb59d61a..21a5374c6 100644 --- a/photon-client/src/components/common/pv-slider.vue +++ b/photon-client/src/components/common/pv-slider.vue @@ -25,9 +25,22 @@ const emit = defineEmits<{ (e: "input", value: number): void; }>(); +// Debounce function +function debounce(func: (...args: any[]) => void, wait: number) { + let timeout: ReturnType; + return function (...args: any[]) { + clearTimeout(timeout); + timeout = setTimeout(() => func.apply(this, args), wait); + }; +} + +const debouncedEmit = debounce((v: number) => { + emit("input", v); +}, 20); + const localValue = computed({ get: () => props.value, - set: (v) => emit("input", parseFloat(v as unknown as string)) + set: (v) => debouncedEmit(parseFloat(v as unknown as string)) });