UNPKG

@zedux/atoms

Version:

A Molecular State Engine for React

25 lines (24 loc) 1.27 kB
import { readInstance } from '../classes/EvaluationStack.js'; export const createInjector = (operation, first, next) => { let type; const injector = (...args) => { const instance = readInstance(); const { _injectors, _nextInjectors, status, template } = instance; if (status === 'Initializing') { const descriptor = first(instance, ...args); type = descriptor.type; _nextInjectors === null || _nextInjectors === void 0 ? void 0 : _nextInjectors.push(descriptor); return descriptor.result; } const prevDescriptor = _injectors === null || _injectors === void 0 ? void 0 : _injectors[_nextInjectors === null || _nextInjectors === void 0 ? void 0 : _nextInjectors.length]; if (true /* DEV */ && (!prevDescriptor || prevDescriptor.type !== type)) { throw new Error(`Zedux: ${operation} in atom "${template.key}" - injectors cannot be added, removed, or reordered`); } const descriptor = next ? next(prevDescriptor, instance, ...args) : prevDescriptor; _nextInjectors === null || _nextInjectors === void 0 ? void 0 : _nextInjectors.push(descriptor); return descriptor.result; }; return injector; };