mobx-roof
Version:
Simple React data management by mobx.
77 lines (62 loc) • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.default = createModel;
var _MobxModel2 = require('../core/MobxModel');
var _MobxModel3 = _interopRequireDefault(_MobxModel2);
var _utils = require('../common/utils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var uuid = 0;
function createModel(_ref) {
var name = _ref.name;
var _ref$data = _ref.data;
var data = _ref$data === undefined ? {} : _ref$data;
var _ref$constants = _ref.constants;
var constants = _ref$constants === undefined ? {} : _ref$constants;
var _ref$privates = _ref.privates;
var privates = _ref$privates === undefined ? {} : _ref$privates;
var _ref$actions = _ref.actions;
var actions = _ref$actions === undefined ? {} : _ref$actions;
var _ref$autorun = _ref.autorun;
var autorun = _ref$autorun === undefined ? {} : _ref$autorun;
var others = _objectWithoutProperties(_ref, ['name', 'data', 'constants', 'privates', 'actions', 'autorun']);
var Parent = arguments.length <= 1 || arguments[1] === undefined ? _MobxModel3.default : arguments[1];
var mobxActions = (0, _MobxModel2.toMobxActions)(actions);
if (!(0, _MobxModel2.isMobxModelClass)(Parent)) {
throw new Error('[createModel] Parent class must extend From MobxModel.');
}
if (!name) {
throw new Error('[createModel] need a name.');
}
function MobxModel() {
var _initData = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
var middleware = arguments[1];
var _autorun = arguments[2];
var _constants = arguments[3];
(0, _utils.classCallCheck)(this, MobxModel);
if (typeof data === 'function') {
throw new Error('[createModel] `data` can not be a function, please use `init` instead.');
}
var _data = _extends({}, data, _initData);
return (0, _utils.possibleConstructorReturn)(this, Object.getPrototypeOf(MobxModel).call(this, _data, middleware, _extends({}, autorun, _autorun), _extends({}, constants, _constants)));
}
MobxModel.uuid = ++uuid;
MobxModel.actions = actions;
MobxModel.autorun = autorun;
(0, _utils.inherits)(MobxModel, Parent);
// Define MobxModel name
Object.defineProperties(MobxModel, {
name: {
enumerable: false,
configurable: true,
writable: false,
value: (0, _utils.nameToUpperCase)(name)
}
});
MobxModel.prototype = Object.assign(MobxModel.prototype, others, privates, mobxActions);
return MobxModel;
}
module.exports = exports['default'];