From a5a22b273ef5b6b9c9d24b9e68f225b84d7f55be Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Mon, 26 Jan 2026 14:57:49 -0800 Subject: [PATCH] Add deriveDeduplicatedByValue --- packages/store/src/misc.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/store/src/misc.ts b/packages/store/src/misc.ts index 165b352..1b3069b 100644 --- a/packages/store/src/misc.ts +++ b/packages/store/src/misc.ts @@ -1,5 +1,5 @@ import {get, derived, Readable, Unsubscriber, Writable, Subscriber} from "svelte/store" -import {memoize, throttle} from "@welshman/lib" +import {memoize, equals, throttle} from "@welshman/lib" // Define Stores and StoresValues types locally since they're not exported in Svelte 5 type Stores = Readable | [Readable, ...Array>] | Array> @@ -93,3 +93,19 @@ export const deriveDeduplicated = ( } }) } + +export const deriveDeduplicatedByValue = ( + stores: S, + get: (storeValues: StoresValues) => T, +): Readable => { + let prev: T + + return derived(stores, (storeValues, set) => { + const result = get(storeValues) + + if (!equals(prev, result)) { + prev = result + set(result) + } + }) +}