From 8b78cbea25c8116b26c730e37ca9a39484e976a1 Mon Sep 17 00:00:00 2001 From: Lifo123 Date: Mon, 25 May 2026 19:03:59 -0500 Subject: [PATCH] adding deepmap support --- index.js | 14 ++++++++++---- package.json | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 652a73a..9f30836 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,3 @@ -import { listenKeys } from 'nanostores' import { useCallback, useRef, useSyncExternalStore } from 'react' let emit = (snapshotRef, onChange) => value => { @@ -18,9 +17,16 @@ export function useStore(store, { keys, deps = [store, keys], ssr } = {}) { let subscribe = useCallback(onChange => { emit(snapshotRef, onChange)(store.value) - return keys?.length > 0 - ? listenKeys(store, keys, emit(snapshotRef, onChange)) - : store.listen(emit(snapshotRef, onChange)) + if (keys && keys.length > 0) { + let keysSet = new Set(keys).add(undefined) + return store.listen((value, _, changed) => { + let baseKey = changed ? changed.split(/\.|\[/)[0] : undefined + if (keysSet.has(changed) || keysSet.has(baseKey)) { + emit(snapshotRef, onChange)(value) + } + }) + } + return store.listen(emit(snapshotRef, onChange)) }, deps) let get = () => snapshotRef.current diff --git a/package.json b/package.json index ae46c16..ef3ffde 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nanostores/react", - "version": "1.1.0", + "version": "1.1.1", "description": "React integration for Nano Stores, a tiny state manager with many atomic tree-shakable stores", "keywords": [ "react", @@ -65,7 +65,7 @@ "index.js": "{ useStore }", "nanostores": "{ map, computed }" }, - "limit": "958 B" + "limit": "977 B" } ], "engines": {