mmlpx
Version:
mobx model layer paradigm
32 lines • 1.08 kB
JavaScript
/**
* @author Kuitos
* @homepage https://github.com/kuitos/
* @since 2018-06-26 15:43
*/
import { ObservableMap, runInAction } from 'mobx';
export default function hydrate(instance, Host) {
var args = [];
for (var _i = 2; _i < arguments.length; _i++) {
args[_i - 2] = arguments[_i];
}
if (!(instance instanceof Host)) {
var real_1 = new (Host.bind.apply(Host, [void 0].concat(args)))();
// awake the reactive system of the model
Object.keys(instance).forEach(function (key) {
if (real_1[key] instanceof ObservableMap) {
var _a = real_1[key],
name_1 = _a.name,
enhancer_1 = _a.enhancer;
runInAction(function () {
return real_1[key] = new ObservableMap(instance[key], enhancer_1, name_1);
});
} else {
runInAction(function () {
return real_1[key] = instance[key];
});
}
});
return real_1;
}
return instance;
}