( storeSignal: Signal<Atom<TState> | ReadonlyAtom<TState>>, selector: (state: NoInfer<TState>) => TSelected, )
| 110 | } |
| 111 | |
| 112 | function injectLazyStore<TState, TSelected = NoInfer<TState>>( |
| 113 | storeSignal: Signal<Atom<TState> | ReadonlyAtom<TState>>, |
| 114 | selector: (state: NoInfer<TState>) => TSelected, |
| 115 | ): Signal<TSelected> { |
| 116 | const slice = linkedSignal(() => selector(storeSignal().get())) |
| 117 | |
| 118 | effect((onCleanup) => { |
| 119 | const currentStore = storeSignal() |
| 120 | slice.set(selector(currentStore.get())) |
| 121 | const { unsubscribe } = currentStore.subscribe((s) => { |
| 122 | slice.set(selector(s)) |
| 123 | }) |
| 124 | onCleanup(() => unsubscribe()) |
| 125 | }) |
| 126 | |
| 127 | return slice.asReadonly() |
| 128 | } |
no outgoing calls
no test coverage detected
searching dependent graphs…