UNPKG

@aminnairi/react-signal

Version:
49 lines (48 loc) 2.91 kB
export type Subscriber = () => void; export type Parser<Value> = (value: unknown) => Value; export type SignalConstructor<Value> = () => Signal<Value>; export type Update<Value> = (oldValue: Value) => Value; export type StorageSignalConstructor<Value> = { storage: Storage; key: string; fallback: Value; parse: Parser<Value>; }; export type LocalStorageSignalConstructor<Value> = Omit<StorageSignalConstructor<Value>, "storage">; export type SessionStorageSignalConstructor<Value> = Omit<StorageSignalConstructor<Value>, "storage">; export declare class Signal<Value> { private subscribers; private value; constructor(initialValue: Value); emit(newValue: Value): void; getValue(): Value; subscribe(newSubscriber: Subscriber): () => void; next(update: Update<Value>): void; } export declare class StorageSignal<Value> extends Signal<Value> { private key; private storage; constructor({ storage, key, fallback, parse }: StorageSignalConstructor<Value>); emit(newValue: Value): void; remove(): void; } export declare class LocalStorageSignal<Value> extends StorageSignal<Value> { constructor({ key, fallback, parse }: LocalStorageSignalConstructor<Value>); } export declare class SessionStorageSignal<Value> extends StorageSignal<Value> { constructor({ key, fallback, parse }: SessionStorageSignalConstructor<Value>); } export declare const useSignal: <Value>(signal: Signal<Value>) => Value; export declare const useSignalConstructor: <Value>(signalConstructor: SignalConstructor<Value>) => Value; export declare function isSetSignalConstructor<Value>(input: unknown): input is ((oldValue: Value) => Value); export type SetStateFunction<Value> = (valueOrConstructor: Value | ((oldValue: Value) => Value)) => void; export type UseStateFunction<Value> = () => [Value, SetStateFunction<Value>]; export declare function createState<Value>(initialValue: Value): UseStateFunction<Value>; export type SetLocalStorageStateFunction<Value> = (value: Value | ((oldValue: Value) => Value)) => void; export type RemoveLocalStorageStateFunction = () => void; export declare function isSetLocalStorageSignalConstructor<Value>(input: unknown): input is ((oldValue: Value) => Value); export declare function createLocalStorageState<Value>(options: LocalStorageSignalConstructor<Value>): () => [Value, SetLocalStorageStateFunction<Value>, RemoveLocalStorageStateFunction]; export type SetSessionStorageStateFunction<Value> = (value: Value | ((oldValue: Value) => Value)) => void; export type RemoveSessionStorageStateFunction = () => void; export declare function isSetSessionStorageSignalConstructor<Value>(input: unknown): input is ((oldValue: Value) => Value); export declare function createSessionStorageState<Value>(options: SessionStorageSignalConstructor<Value>): () => [Value, SetSessionStorageStateFunction<Value>, RemoveSessionStorageStateFunction];