UNPKG

mk-meta-engine

Version:

元数据化引擎,在mk-app-loader实现的应用隔离基础上,实现可以用json元数据描述界面模型,并提供了action、reducer的基础函数和monkeyKing组件.

83 lines (58 loc) 2.23 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _class, _temp, _initialiseProps; exports.default = creator; var _immutable = require('immutable'); var _immutable2 = _interopRequireDefault(_immutable); var _context = require('./context'); var _context2 = _interopRequireDefault(_context); var _common = require('./common'); var common = _interopRequireWildcard(_common); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var reducer = (_temp = _class = function reducer(option) { (0, _classCallCheck3.default)(this, reducer); _initialiseProps.call(this); this.appInfo = option.appInfo; }, _initialiseProps = function _initialiseProps() { var _this = this; this.init = function (state, option) { var _option$data = option.data, data = _option$data === undefined ? {} : _option$data; return _this.initByImmutable(state, { data: _immutable2.default.fromJS(data) }); }; this.initByImmutable = function (state, option) { var data = option.data; //清除state中非@@开头的属性,那属性是mk-app-loader增加的 var keys = []; state.mapKeys(function (key) { if (key.indexOf('@@') === -1) keys.push(key); }); keys.forEach(function (key) { state = state.remove(key); }); //设置状态 return state.set('data', data); }; this.getMeta = common.getMeta; this.getField = common.getField; this.getFields = common.getFields; this.setField = common.setField; this.setFields = common.setFields; this.gm = common.getMeta; this.gf = common.getField; this.gfs = common.getFields; this.sf = common.setField; this.sfs = common.setFields; this.context = _context2.default; }, _temp); function creator(option) { return new reducer(option); } module.exports = exports['default'];