UNPKG

dareway-rui

Version:

262 lines (226 loc) 10.4 kB
'use strict'; var _interopRequireWildcard = require('@babel/runtime/helpers/interopRequireWildcard'); var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault'); Object.defineProperty(exports, '__esModule', { value: true }); exports.genState = genState; exports.genReducers = genReducers; exports.wrapTagApis = wrapTagApis; exports.wrapTagEffects = wrapTagEffects; exports.wrapTagReducers = wrapTagReducers; exports.wrapTagAction = wrapTagAction; exports.proxyReducer = proxyReducer; exports.selectTagStateFromBizVMState = selectTagStateFromBizVMState; var _regenerator = _interopRequireDefault(require('@babel/runtime/regenerator')); var _defineProperty2 = _interopRequireDefault(require('@babel/runtime/helpers/defineProperty')); var _objectSpread4 = _interopRequireDefault(require('@babel/runtime/helpers/objectSpread')); var sagaEffects = _interopRequireWildcard(require('redux-saga/effects')); function genState() { return { '@@tags': {} }; } function genReducers() { return { __privateAddTag: function __privateAddTag(state, _ref) { var payload = _ref.payload; var tagName = payload.tagName, tagInitState = payload.tagInitState; if (state['@@tags'][tagName]) { throw new Error( 'VM\u4E2D\u5DF2\u5B58\u5728\u540D\u4E3A'.concat( tagName, '\u7684\u6807\u7B7E\uFF0C\u8BF7\u68C0\u67E5\uFF01' ) ); } return (0, _objectSpread4.default)({}, state, { '@@tags': (0, _objectSpread4.default)( {}, state['@@tags'], (0, _defineProperty2.default)({}, tagName, tagInitState) ) }); }, __privateRemoveTag: function __privateRemoveTag(state, _ref2) { var payload = _ref2.payload; var tagName = payload.tagName; var newTags = (0, _objectSpread4.default)({}, state['@@tags']); delete newTags[tagName]; return (0, _objectSpread4.default)({}, state, { '@@tags': newTags }); } }; } function wrapTagApis(bizModelNamespace, tagName, apis) { function invokeEffectOrReducer(effectOrReducerName, payload) { return wrapTagAction(bizModelNamespace, tagName, effectOrReducerName, payload); } var o = apis(invokeEffectOrReducer); return Object.keys(o).reduce(function(acc, apiName) { acc[apiName] = /*#__PURE__*/ _regenerator.default.mark(function _callee() { var ret, _args = arguments; return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch ((_context.prev = _context.next)) { case 0: ret = o[apiName].apply(o, _args); if (!(ret && ret.type && ret.payload)) { _context.next = 9; break; } _context.next = 4; return sagaEffects.put(ret); case 4: _context.next = 6; return _context.sent; case 6: return _context.abrupt('return', _context.sent); case 9: return _context.abrupt('return', ret); case 10: case 'end': return _context.stop(); } } }, _callee); }); return acc; }, {}); } function wrapTagEffects(effects) { var o = effects(); return Object.keys(o).reduce(function(acc, effectName) { acc[effectName] = /*#__PURE__*/ _regenerator.default.mark(function _callee2(_ref3, RUI) { var _marked, _marked2, _ref3$payload, tagName, payload, getState, invoke; return _regenerator.default.wrap(function _callee2$(_context4) { while (1) { switch ((_context4.prev = _context4.next)) { case 0: invoke = function _ref5(effectOrReducerName, payload) { return _regenerator.default.wrap(function invoke$(_context3) { while (1) { switch ((_context3.prev = _context3.next)) { case 0: _context3.next = 2; return RUI.invoke(effectOrReducerName, { tagName: tagName, payload: payload }); case 2: return _context3.abrupt('return', _context3.sent); case 3: case 'end': return _context3.stop(); } } }, _marked2); }; getState = function _ref4() { var bizVMState; return _regenerator.default.wrap(function getState$(_context2) { while (1) { switch ((_context2.prev = _context2.next)) { case 0: _context2.next = 2; return RUI.getState(); case 2: bizVMState = _context2.sent; return _context2.abrupt( 'return', selectTagStateFromBizVMState(bizVMState, tagName) ); case 4: case 'end': return _context2.stop(); } } }, _marked); }; (_marked = /*#__PURE__*/ _regenerator.default.mark(getState)), (_marked2 = /*#__PURE__*/ _regenerator.default.mark(invoke)); (_ref3$payload = _ref3.payload), (tagName = _ref3$payload.tagName), (payload = _ref3$payload.payload); _context4.next = 6; return o[effectName]( { payload: payload }, (0, _objectSpread4.default)({}, RUI, { getState: getState, invoke: invoke }) ); case 6: _context4.next = 8; return _context4.sent; case 8: return _context4.abrupt('return', _context4.sent); case 9: case 'end': return _context4.stop(); } } }, _callee2); }); return acc; }, {}); } function wrapTagReducers(reducers) { var o = reducers(); return Object.keys(o).reduce(function(acc, reducerName) { acc[reducerName] = function(state, _ref6) { var payload = _ref6.payload; return proxyReducer(state, payload, o[reducerName]); }; return acc; }, {}); } /** * 业务模型空间名称 * 标签名 * 函数名 * 参数 */ function wrapTagAction(bizVMNamespace, tagName, effectOrReducerFnName, payload) { return { type: ''.concat(bizVMNamespace, '/').concat(effectOrReducerFnName), payload: { tagName: tagName, payload: payload } }; } function proxyReducer(bizVMState, wrappedPayload, tagReducer) { var tagName = wrappedPayload.tagName, payload = wrappedPayload.payload; return (0, _objectSpread4.default)({}, bizVMState, { '@@tags': (0, _objectSpread4.default)( {}, bizVMState['@@tags'], (0, _defineProperty2.default)( {}, tagName, tagReducer(bizVMState['@@tags'][tagName], { payload: payload }) ) ) }); } function selectTagStateFromBizVMState(bizVMState, tagName) { return bizVMState['@@tags'][tagName]; } //@ sourceMappingURL=extraModelBaseAPI.js.map