UNPKG

@zedux/atoms

Version:

A Molecular State Engine for React

43 lines (37 loc) 1.08 kB
import { AnyAtomInstance, AnyAtomTemplate, AtomExportsType, AtomParamsType, AtomStateType, ParamlessTemplate, StateHookTuple, } from '../types/index' import { injectAtomInstance } from './injectAtomInstance' export const injectAtomState: { <A extends AnyAtomTemplate>( template: A, params: AtomParamsType<A> ): StateHookTuple<AtomStateType<A>, AtomExportsType<A>> <A extends AnyAtomTemplate<{ Params: [] }>>(template: A): StateHookTuple< AtomStateType<A>, AtomExportsType<A> > <A extends AnyAtomTemplate>(template: ParamlessTemplate<A>): StateHookTuple< AtomStateType<A>, AtomExportsType<A> > <I extends AnyAtomInstance>(instance: I): StateHookTuple< AtomStateType<I>, AtomExportsType<I> > } = <A extends AnyAtomTemplate>( atom: A, params?: AtomParamsType<A> ): StateHookTuple<AtomStateType<A>, AtomExportsType<A>> => { const instance = injectAtomInstance(atom, params as AtomParamsType<A>, { operation: 'injectAtomState', subscribe: true, }) return [instance.getState(), instance._infusedSetter] }