UNPKG

react-shared-states

Version:

Global state made as simple as useState, with zero config, built-in async caching, and automatic scoping.

35 lines (34 loc) 1.9 kB
import { Prefix, SharedCreated, SharedValue } from '../types'; import { SharedValuesApi, SharedValuesManager } from '../SharedValuesManager'; interface SharedState<T> extends SharedValue { value: T; } declare class SharedStatesManager extends SharedValuesManager<SharedState<unknown>, { value: unknown; }> { defaultValue(): { value: undefined; }; initValue(key: string, prefix: Prefix, value: unknown, isStatic?: boolean): void; initStatic(sharedStateCreated: SharedStateCreated<any>): void; } export declare class SharedStatesApi extends SharedValuesApi<SharedState<unknown>, { value: unknown; }, unknown> { constructor(sharedStateManager: SharedStatesManager); get<T, S extends string = string>(key: S, scopeName?: Prefix): T; get<T>(sharedStateCreated: SharedStateCreated<T>): T; set<T, S extends string = string>(key: S, value: T, scopeName?: Prefix): void; set<T>(sharedStateCreated: SharedStateCreated<T>, value: T): void; } export declare const sharedStatesApi: SharedStatesApi; export interface SharedStateCreated<T> extends SharedCreated { initialValue: T; } export declare const createSharedState: <T>(initialValue: T, scopeName?: Prefix) => SharedStateCreated<T>; export declare function useSharedState<T, S extends string>(key: S, initialValue: T, scopeName?: Prefix): readonly [T, (v: T | ((prev: T) => T)) => void]; export declare function useSharedState<T>(sharedStateCreated: SharedStateCreated<T>): readonly [T, (v: T | ((prev: T) => T)) => void]; export type SharedStateSelector<S, T = S> = (original: S) => T; export declare function useSharedStateSelector<T, S extends string, R>(key: S, selector: SharedStateSelector<T, R>, scopeName?: Prefix): Readonly<R>; export declare function useSharedStateSelector<T, R>(sharedStateCreated: SharedStateCreated<T>, selector: SharedStateSelector<T, R>): Readonly<R>; export {};