UNPKG

state-pool

Version:

Transform your React app with our state management library! Declare global and local states like variables, powered by the magic of React hooks 🪄✨

88 lines (87 loc) • 2.93 kB
import { StateInitializer, Selector, Patcher, Reducer, Unsubscribe, StateModifier, StateUpdater, SetState, UpdateState } from './types'; type Refresh = () => void; type Observer<ST> = (newState: ST) => void; type Subscriber<ST> = { observer: Observer<ST>; selector: Selector<ST>; refresh?: Refresh; }; export default class State<T> { private value; private subscribers; constructor(initialValue: StateInitializer<T> | T); getValue<ST>(selector?: Selector<ST>): T | ST; refresh(): void; setValue(newValue: T | StateUpdater<T>): void; setValue<ST>(newValue: ST | StateUpdater<ST>, config: { selector?: Selector<ST>; }): void; setValue<ST>(newValue: ST | StateUpdater<ST>, config: { selector?: Selector<ST>; patcher?: Patcher<ST>; }): void; updateValue(stateModifier: StateModifier<T>): void; updateValue<ST>(stateModifier: StateModifier<ST>, config: { selector?: Selector<ST>; }): void; updateValue<ST>(stateModifier: StateModifier<ST>, config: { selector?: Selector<ST>; patcher?: Patcher<ST>; }): void; private __updateValue; subscribe<ST>(itemToSubscribe: Subscriber<T | ST> | Observer<T | ST>): Unsubscribe; select<ST>(selector: Selector<ST>): DerivedState<T, ST>; useState(config?: {}): [ state: T, setState: SetState<T>, updateState: UpdateState<T>, stateObject: State<T> ]; useState<ST>(config: { selector: Selector<ST>; }): [ state: ST, setState: SetState<T>, updateState: UpdateState<T>, stateObject: State<T> ]; useState<ST>(config: { selector: Selector<ST>; patcher: Patcher<ST>; }): [ state: ST, setState: SetState<ST>, updateState: UpdateState<ST>, stateObject: State<T> ]; useReducer<_T extends T, A>(reducer: Reducer<_T, A>, config?: {}): [ state: _T, dispatch: (action: A) => void, stateObject: State<_T> ]; useReducer<ST, A>(reducer: Reducer<ST, A>, config: { selector: Selector<ST>; }): [ state: ST, dispatch: (action: A) => void, stateObject: State<T> ]; useReducer<ST, A>(reducer: Reducer<ST, A>, config: { selector: Selector<ST>; patcher: Patcher<ST>; }): [ state: ST, dispatch: (action: A) => void, stateObject: State<T> ]; } export declare class DerivedState<T, ST> { State: State<unknown>; selector: Selector<ST>; constructor(State: State<unknown>, selector: Selector<ST>); getValue(): ST; subscribe(observer?: Observer<ST>, refresh?: Refresh): Unsubscribe; } export declare function createDerivedState<T, ST>(State: State<T>, selector: Selector<ST>): DerivedState<T, ST>; export declare function createState<T>(initialValue: StateInitializer<T> | T): State<T>; export {};