UNPKG

@bloc-js/react-bloc

Version:

React components for implementing the BLoC pattern.

35 lines (34 loc) 887 B
export class BlocRegistry { constructor(initialState = {}) { this.initialState = initialState; } blocs = {}; initialState; getState() { return Object.keys(this.blocs).reduce((o, id) => ({ ...o, [id]: this.blocs[id].value, }), {}); } register(id, factory, args) { if (this.blocs[id]) { return this.blocs[id]; } const state = this.initialState[id]; const bloc = factory(this, state, ...args); this.blocs[id] = bloc; return bloc; } complete(id) { if (!this.blocs[id]) return; this.blocs[id].complete(); delete this.blocs[id]; } } export function blocGetter(id, factory) { return [ (registry, ...args) => registry.register(id, factory, args), registry => registry.complete(id), ]; }