UNPKG

mmlpx

Version:

mobx model layer paradigm

36 lines 1.41 kB
/** * @author Kuitos * @homepage https://github.com/kuitos/ * @since 2017-09-13 */ import initializeStore from './initializers/store'; import initializeViewModel from './initializers/viewModel'; import Injector from './Injector'; import { modelNameSymbol, modelTypeSymbol, storeSymbol, viewModelSymbol } from './meta'; var uid = 0; var cachedInjector; export function getInjector() { return cachedInjector || (cachedInjector = Injector.newInstance()); } export function setInjector(newInjector) { cachedInjector = newInjector; } export default function instantiate(InjectedClass) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var injector = getInjector(); switch (InjectedClass[modelTypeSymbol]) { case storeSymbol: return initializeStore.call.apply(initializeStore, [this, injector, InjectedClass].concat(args)); case viewModelSymbol: return initializeViewModel.call.apply(initializeViewModel, [this, injector, InjectedClass].concat(args)); default: var name = InjectedClass[modelNameSymbol] = InjectedClass[modelNameSymbol] || (InjectedClass.name || '') + "_" + uid++; return injector.get.apply(injector, [InjectedClass, { scope: "singleton" /* Singleton */ , name: name }].concat(args)); } }