@sandstack/neuron
Version:
Neuron is a lightweight framework agnostic global state manager for Javascript apps, with React support
14 lines (13 loc) • 618 B
TypeScript
import { INeuron } from "../core";
export declare function useSubscriber<T, A, S>(neuron: INeuron<T, A>, slice?: (state: T) => S): [StateOrSlice<S, T>, Actions<T, S, A>];
export type StateOrSlice<T, S> = unknown extends T ? T extends unknown ? S : T : T;
export type Actions<T, S, A> = unknown extends S ? T extends unknown ? {
set: SetState<T>;
} & A : {
set: SetState<T>;
setSlice: SetState<S>;
} & A : {
set: SetState<T>;
setSlice: SetState<S>;
} & A;
export type SetState<T> = T extends boolean ? (state: boolean | ((prev: boolean) => boolean)) => void : (state: T | ((prev: T) => T)) => void;