import { debounce } from '$shared/lib/utils'; export function createDebouncedState(initialValue: T, wait: number = 300) { let immediate = $state(initialValue); let debounced = $state(initialValue); const updateDebounced = debounce((value: T) => { debounced = value; }, wait); return { get immediate() { return immediate; }, set immediate(value: T) { immediate = value; updateDebounced(value); // Manually trigger the debounce on write }, get debounced() { return debounced; }, reset(value?: T) { const resetValue = value ?? initialValue; immediate = resetValue; debounced = resetValue; }, }; } // export function createDebouncedState(initialValue: T, wait: number = 300) { // let immediate = $state(initialValue); // let debounced = $state(initialValue); // const updateDebounced = debounce((value: T) => { // debounced = value; // }, wait); // $effect(() => { // updateDebounced(immediate); // }); // return { // get immediate() { // return immediate; // }, // set immediate(value: T) { // immediate = value; // }, // get debounced() { // return debounced; // }, // reset(value?: T) { // const resetValue = value ?? initialValue; // immediate = resetValue; // debounced = resetValue; // }, // }; // }