channelstate
Version:
A lightweight cross-context state management library built on the BroadcastChannel API.
21 lines (16 loc) • 1.36 kB
text/typescript
import { C as CreateChannelStateOptions, a as ChannelStateApi } from './shared/channelstate.CTnWC04z.mjs';
export { d as ChannelApi, b as ChannelMessage, c as ChannelMessageReceived, e as ChannelStateCreator, f as createChannelStateImpl } from './shared/channelstate.CTnWC04z.mjs';
import { Draft } from 'immer';
import { MaybePartial } from './vanilla.mjs';
interface CreatePrimaryChannelStateOptions extends CreateChannelStateOptions {
}
interface CreateReplicaChannelStateOptions extends CreateChannelStateOptions {
}
type SetChannelState<T> = (nextStateOrUpdater: MaybePartial<T> | ((draft: Draft<T>) => void), replace?: boolean) => void;
type UseChannelState<T> = ChannelStateApi<T> & (() => [state: T, setState: SetChannelState<T>]);
declare function create<TState extends object, TOption extends CreateChannelStateOptions>(isPrimary: boolean, channelName: string, initialState: TState, options?: TOption): UseChannelState<TState>;
declare namespace create {
var primary: <T extends object>(channelName: string, initialState: T, options?: CreatePrimaryChannelStateOptions) => UseChannelState<T>;
var replica: <T extends object>(channelName: string, initialState: T, options?: CreateReplicaChannelStateOptions) => UseChannelState<T>;
}
export { ChannelStateApi, CreateChannelStateOptions, type SetChannelState, type UseChannelState, create };