import { useStore } from 'zustand'; import type { StoreApi } from 'zustand/vanilla'; type ExtractState = S extends { getState: () => infer T; } ? T : never; type ReadonlyStoreApi = Pick, 'getState' | 'getInitialState' | 'subscribe'>; export function createStoreSelectorHook>( getStore: () => S, ): { (): ExtractState; (selector: (state: ExtractState) => U): U; } { return function (f) { let store = getStore(); return useStore(store, f as any); } as { (): ExtractState; (selector: (state: ExtractState) => U): U; }; }