mutants-appfx
Version:
appfx module
176 lines (137 loc) • 5.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = undefined;
var _getOwnPropertyDescriptor = require('babel-runtime/core-js/object/get-own-property-descriptor');
var _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _defineProperty = require('babel-runtime/core-js/object/define-property');
var _defineProperty2 = _interopRequireDefault(_defineProperty);
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _map = require('babel-runtime/core-js/map');
var _map2 = _interopRequireDefault(_map);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _desc, _value, _class, _descriptor, _descriptor2;
var _mobx = require('mobx');
var _util = require('./util');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _initDefineProp(target, property, descriptor, context) {
if (!descriptor) return;
(0, _defineProperty2.default)(target, property, {
enumerable: descriptor.enumerable,
configurable: descriptor.configurable,
writable: descriptor.writable,
value: descriptor.initializer ? descriptor.initializer.call(context) : void 0
});
}
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
var desc = {};
Object['ke' + 'ys'](descriptor).forEach(function (key) {
desc[key] = descriptor[key];
});
desc.enumerable = !!desc.enumerable;
desc.configurable = !!desc.configurable;
if ('value' in desc || desc.initializer) {
desc.writable = true;
}
desc = decorators.slice().reverse().reduce(function (desc, decorator) {
return decorator(target, property, desc) || desc;
}, desc);
if (context && desc.initializer !== void 0) {
desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
desc.initializer = undefined;
}
if (desc.initializer === void 0) {
Object['define' + 'Property'](target, property, desc);
desc = null;
}
return desc;
}
function _initializerWarningHelper(descriptor, context) {
throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');
}
var Action = (_class = function () {
(0, _createClass3.default)(Action, [{
key: 'name',
// 需要执行actions方法名称
get: function get() {
return this.store.execExpr(this.nameExpr);
},
set: function set(nameExpr) {
this.nameExpr = this.store.parseExpr(nameExpr);
}
}]);
function Action(store, name) {
var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
(0, _classCallCheck3.default)(this, Action);
_initDefineProp(this, 'nameExpr', _descriptor, this);
_initDefineProp(this, 'args', _descriptor2, this);
this.key = (0, _util.assignId)();
this.store = store;
this.nameExpr = this.store.parseExpr(name);
var obj = {};
var exprs = new _map2.default();
this.keys = (0, _keys2.default)(args);
this.keys.forEach(function (key) {
exprs.set(key, store.parseExpr(args[key]));
(0, _defineProperty2.default)(obj, key, {
enumerable: true, // 这里必须是可枚举的要不observable不好使
get: function get() {
return store.execExpr(exprs.get(key));
},
set: function set(expr) {
exprs.set(key, store.parseExpr(expr));
}
});
});
this.args = (0, _mobx.observable)(obj);
}
(0, _createClass3.default)(Action, [{
key: 'toJS',
value: function toJS() {
var $args = this.args;
return {
name: this.nameExpr.toString(),
args: this.keys.reduce(function (obj, key) {
obj[key] = $args[key];
return obj;
}, {})
};
}
}], [{
key: 'fromJS',
value: function fromJS(store, obj) {
if (typeof obj === 'string') {
return new Action(store, obj);
} else if (Array.isArray(obj)) {
return obj.map(function (it) {
return Action.fromJS(store, it);
});
} else if (obj) {
var name = obj.name,
args = obj.args,
other = (0, _objectWithoutProperties3.default)(obj, ['name', 'args']);
return new Action(store, name, (0, _extends3.default)({}, other, args));
} else {
return null;
}
}
}]);
return Action;
}(), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'nameExpr', [_mobx.observable], {
enumerable: true,
initializer: null
}), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'args', [_mobx.observable], {
enumerable: true,
initializer: null
}), _applyDecoratedDescriptor(_class.prototype, 'name', [_mobx.computed], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'name'), _class.prototype)), _class);
exports.default = Action;
//# sourceMappingURL=Action.js.map