import type { Accessor, Setter } from "solid-js"; import { createEffect, createSignal } from "solid-js"; export function useDebounce( defaultValue: T, debounceTime = 300, ): [Accessor, Setter] { const [debouncedValue, setDebouncedValue] = createSignal(defaultValue); const [value, setValue] = createSignal(defaultValue); createEffect(() => { const handler = setTimeout(() => { setDebouncedValue(value()); }, debounceTime); return () => { clearTimeout(handler); }; }, [value()]); return [debouncedValue, setValue]; }