@sv-use/core
Version:
A collection of Svelte 5 utilities.
24 lines (23 loc) • 738 B
JavaScript
import { untrack } from 'svelte';
/**
* A state that automatically resets to the default value after a delay.
* @param defaultValue The default value of the state (can be an object).
* @param delay The delay in milliseconds.
* @see https://svelte-librarian.github.io/sv-use/docs/core/auto-reset-state
*/
export function autoResetState(defaultValue, delay = 3000) {
let timeout;
const _state = $state({ current: defaultValue });
$effect(() => {
$state.snapshot(_state);
if (timeout) {
clearTimeout(timeout);
}
untrack(() => {
timeout = setTimeout(() => {
_state.current = defaultValue;
}, delay);
});
});
return _state;
}