UNPKG

mmlpx

Version:

mobx model layer paradigm

57 lines (47 loc) 1.79 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getInjector = getInjector; exports.setInjector = setInjector; exports.default = instantiate; var _store = require('./initializers/store'); var _store2 = _interopRequireDefault(_store); var _viewModel = require('./initializers/viewModel'); var _viewModel2 = _interopRequireDefault(_viewModel); var _Injector = require('./Injector'); var _Injector2 = _interopRequireDefault(_Injector); var _meta = require('./meta'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @author Kuitos * @homepage https://github.com/kuitos/ * @since 2017-09-13 */ var uid = 0; var cachedInjector; function getInjector() { return cachedInjector || (cachedInjector = _Injector2.default.newInstance()); } function setInjector(newInjector) { cachedInjector = newInjector; } function instantiate(InjectedClass) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var injector = getInjector(); switch (InjectedClass[_meta.modelTypeSymbol]) { case _meta.storeSymbol: return _store2.default.call.apply(_store2.default, [this, injector, InjectedClass].concat(args)); case _meta.viewModelSymbol: return _viewModel2.default.call.apply(_viewModel2.default, [this, injector, InjectedClass].concat(args)); default: var name = InjectedClass[_meta.modelNameSymbol] = InjectedClass[_meta.modelNameSymbol] || (InjectedClass.name || '') + "_" + uid++; return injector.get.apply(injector, [InjectedClass, { scope: "singleton" /* Singleton */ , name: name }].concat(args)); } }