import { debounce } from 'lodash';
import { type Accessor, createEffect, createSignal } from 'solid-js';
const createDebouncedUpdateStore = (options: DebouncedUpdateStoreOptions = {}): DebouncedUpdateStore => {
const [displayValue, setDisplayValue] = createSignal<string>(options.defaultDisplayValue ?? '');
const [debouncedValue, internalSetDebouncedValue] = createSignal<string>(options.defaultDisplayValue ?? '');
const setDebouncedValue = debounce((value: string) => {
internalSetDebouncedValue(value);
}, options.debounceTime ?? 350);
createEffect(function displayValueUpdated() {
options.onDisplayValueChanged?.(displayValue());
});
createEffect(function debouncedValueUpdated() {
options.onDebouncedValueChanged?.(debouncedValue());
});
return {
displayValue,
setDisplayValue,
debouncedValue,
setDebouncedValue,
};
};
export const debouncedUpdateStoreUtils = {
createStore: createDebouncedUpdateStore,
};
import { debounce } from 'lodash';
import { type Accessor, createEffect, createSignal } from 'solid-js';
const createDebouncedUpdateStore = (options: DebouncedUpdateStoreOptions = {}): DebouncedUpdateStore => {
const [displayValue, setDisplayValue] = createSignal<string>(options.defaultDisplayValue ?? '');
const [debouncedValue, internalSetDebouncedValue] = createSignal<string>(options.defaultDisplayValue ?? '');
const setDebouncedValue = debounce((value: string) => {
internalSetDebouncedValue(value);
}, options.debounceTime ?? 350);
createEffect(function displayValueUpdated() {
options.onDisplayValueChanged?.(displayValue());
});
createEffect(function debouncedValueUpdated() {
options.onDebouncedValueChanged?.(debouncedValue());
});
return {
displayValue,
setDisplayValue,
debouncedValue,
setDebouncedValue,
};
};
export const debouncedUpdateStoreUtils = {
createStore: createDebouncedUpdateStore,
};