UNPKG

warped_bloc_react

Version:
38 lines (32 loc) 835 B
import Cubit from "./interface/Cubit"; export const DefaultCubit = <T>( initialState?: T ): Cubit<T> => { let state: T = initialState; let count: number = 0; let listeners: Map<number, Function> = new Map<number, Function>(); const listen = (fn: Function) => { let cur = count; listeners.set(cur, fn); count++; return cur } const removeListener = (count: number) => { listeners.delete(count) } const publishToListeners = (state: T) => { listeners.forEach((listener) => { listener(state); }) } const emit = (newState: T) => { state = newState; publishToListeners(state); } return { state, listen, removeListener, emit } }