UNPKG

@sv-use/core

Version:

A collection of Svelte 5 utilities.

33 lines (32 loc) 1.19 kB
/** * A reactive state that falls back to `defaultValue` if set to `null` or `undefined`. * @param defaultValue The fallback value when the value is set to `null` or `undefined`. * @param initialValue The initial value of the state. Defaults to `defaultValue` if omitted. * @see https://svelte-librarian.github.io/sv-use/docs/core/default-state */ export function defaultState(defaultValue, initialValue) { const _default = $state({ current: initialValue ?? defaultValue }); const handler = { get(target, key) { if (target && typeof target === 'object' && typeof target[key] === 'object' && target[key] !== null) { return new Proxy(target[key], handler); } else { return target[key]; } }, set(target, key, value) { if (value || JSON.stringify(target) !== JSON.stringify($state.snapshot(_default))) { target[key] = value; } else { target[key] = defaultValue; } return true; } }; return new Proxy(_default, handler); }