mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-13 18:40:50 +08:00
19 lines
469 B
TypeScript
19 lines
469 B
TypeScript
import type { Readable, Writable } from "svelte/store";
|
|
|
|
import { derived } from "svelte/store";
|
|
import isEqual from "lodash/isEqual";
|
|
|
|
// Returns a derived store that only notifies subscribers if the value has changed.
|
|
export function deduplicateStore<T>(
|
|
store: Readable<T> | Writable<T>,
|
|
): Readable<T> {
|
|
let previous: T;
|
|
|
|
return derived(store, ($value, set) => {
|
|
if (!isEqual($value, previous)) {
|
|
previous = $value;
|
|
set($value);
|
|
}
|
|
});
|
|
}
|