@byteluck-fe/model-driven-engine 1.5.0-beta.7 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,7 +38,7 @@ var proxyArrayApi = [
38
38
  "shift",
39
39
  "pop",
40
40
  "unshift",
41
- "reverse",
41
+ "reverse"
42
42
  ];
43
43
  export var engineProxyFlag = Symbol("__engineProxy__");
44
44
  export var engineTargetKey = Symbol("__engineTarget__");
@@ -85,7 +85,7 @@ function ArrayHandler(target, propertyKey, value, thisKey, callback) {
85
85
  return function() {
86
86
  return callback.call(null, target, thisKey, "splice", [
87
87
  newLength,
88
- oldLength - newLength,
88
+ oldLength - newLength
89
89
  ]);
90
90
  };
91
91
  // 直接操作下标
@@ -148,8 +148,8 @@ function ArrayHandler(target, propertyKey, value, thisKey, callback) {
148
148
  // @ts-ignore
149
149
  var oldValue = target[propertyKey];
150
150
  var concatKey = thisKey === "" ? propertyKey : thisKey + "." + propertyKey;
151
- var ref;
152
- newValue = (ref = reProxyState(value)) !== null && ref !== void 0 ? ref : newValue;
151
+ var _reProxyState;
152
+ newValue = (_reProxyState = reProxyState(value)) !== null && _reProxyState !== void 0 ? _reProxyState : newValue;
153
153
  // 先设置值,然后再进行触发回调,确保回调内拿到的是最新的值
154
154
  var setResult;
155
155
  // TODO 数组拦截操作需要重构,优化现有逻辑
@@ -243,10 +243,10 @@ function flatInstanceForChildren(controls) {
243
243
  // 最后一个key可能是值对象上边的key,比如金额的amount和currency,计算公式的result和unit,所以需要判断前一个控件是不是一个表单控件,是的话就返回最后一个表单控件
244
244
  return findEndItem ? findEndItem : _instanceof(prevItem, RuntimeFormControl) ? prevItem : undefined;
245
245
  } else {
246
- var ref;
247
- var ref1;
246
+ var _prevItem_children;
247
+ var _prevItem_children_index;
248
248
  // 如果有children,则取children中对应的下标,没有的话一直返回prevItem
249
- return (ref1 = prevItem === null || prevItem === void 0 ? void 0 : (ref = prevItem.children) === null || ref === void 0 ? void 0 : ref[index]) !== null && ref1 !== void 0 ? ref1 : prevItem;
249
+ return (_prevItem_children_index = prevItem === null || prevItem === void 0 ? void 0 : (_prevItem_children = prevItem.children) === null || _prevItem_children === void 0 ? void 0 : _prevItem_children[index]) !== null && _prevItem_children_index !== void 0 ? _prevItem_children_index : prevItem;
250
250
  }
251
251
  }, initInstance);
252
252
  }
@@ -286,9 +286,9 @@ function getArrayNewArgs(type, args, value) {
286
286
  var result;
287
287
  var addValue = getArrayNewValue(key, args);
288
288
  if (addValue.length) {
289
- var _obj, ref;
289
+ var _this, _this_engineArrayBeforeSetCallbackFlag;
290
290
  // @ts-ignore
291
- var newValue = (ref = (_obj = this)[engineArrayBeforeSetCallbackFlag]) === null || ref === void 0 ? void 0 : ref.call(_obj, // @ts-ignore
291
+ var newValue = (_this_engineArrayBeforeSetCallbackFlag = (_this = this)[engineArrayBeforeSetCallbackFlag]) === null || _this_engineArrayBeforeSetCallbackFlag === void 0 ? void 0 : _this_engineArrayBeforeSetCallbackFlag.call(_this, // @ts-ignore
292
292
  this[engineTargetKey], // @ts-ignore
293
293
  this[engineProxyThisKey], addValue);
294
294
  var newArgs = getArrayNewArgs(key, args, newValue);
@@ -29,6 +29,7 @@ function _unsupportedIterableToArray(o, minLen) {
29
29
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
30
30
  }
31
31
  import { CONTROL_TYPE, CALC_TOKEN_TYPE, CALC_AGGREGATE_TYPE } from "@byteluck-fe/model-driven-shared";
32
+ import { format } from "mathjs";
32
33
  var DisplayType;
33
34
  (function(DisplayType) {
34
35
  DisplayType[/**
@@ -63,8 +64,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
63
64
  /**
64
65
  * @description 获取显隐控制的需要被记住值的控件id
65
66
  * */ _proto.getNeedHideRememberControlIds = function getNeedHideRememberControlIds() {
66
- var ref;
67
- if (!((ref = this.options) === null || ref === void 0 ? void 0 : ref.displayBoList)) {
67
+ var _this_options;
68
+ if (!((_this_options = this.options) === null || _this_options === void 0 ? void 0 : _this_options.displayBoList)) {
68
69
  return;
69
70
  }
70
71
  this.hideNotRememberControlIds = this.options.displayBoList.reduce(function(result, current) {
@@ -78,8 +79,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
78
79
  /**
79
80
  * @description 获取权限控制的隐藏的字段,不需要参与计算
80
81
  * */ _proto.getDontHasPermissionControlIds = function getDontHasPermissionControlIds() {
81
- var ref;
82
- if (!((ref = this.options) === null || ref === void 0 ? void 0 : ref.behavior)) {
82
+ var _this_options;
83
+ if (!((_this_options = this.options) === null || _this_options === void 0 ? void 0 : _this_options.behavior)) {
83
84
  return;
84
85
  }
85
86
  this.dontHasPermissionControlIds = this.options.behavior.reduce(function(result, current) {
@@ -205,8 +206,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
205
206
  var _this = this;
206
207
  this.engine.on("schema-change", function(payload) {
207
208
  if (payload.props === "isHide") {
208
- var ref;
209
- var calcControls = (ref = _this.dependenciesTriggerMap.get(payload.instance.id)) !== null && ref !== void 0 ? ref : [];
209
+ var _this_dependenciesTriggerMap_get;
210
+ var calcControls = (_this_dependenciesTriggerMap_get = _this.dependenciesTriggerMap.get(payload.instance.id)) !== null && _this_dependenciesTriggerMap_get !== void 0 ? _this_dependenciesTriggerMap_get : [];
210
211
  calcControls.forEach(function(calc) {
211
212
  _this.computedCalcValue(calc);
212
213
  });
@@ -218,18 +219,18 @@ export var CalcPlugin = /*#__PURE__*/ function() {
218
219
  * */ _proto.watchSubtableChange = function watchSubtableChange() {
219
220
  var _this = this;
220
221
  this.engine.on("list-change", function(payload) {
221
- var ref;
222
+ var _payload_options;
222
223
  _this.resetDependencies();
223
- var ref1;
224
- var changedRows = (ref1 = (ref = payload.options) === null || ref === void 0 ? void 0 : ref.changed) !== null && ref1 !== void 0 ? ref1 : [];
224
+ var _payload_options_changed;
225
+ var changedRows = (_payload_options_changed = (_payload_options = payload.options) === null || _payload_options === void 0 ? void 0 : _payload_options.changed) !== null && _payload_options_changed !== void 0 ? _payload_options_changed : [];
225
226
  // 对发生改变的行进行重新计算
226
227
  var changedCalc = _this.getCalcControlsFromSubtableRows(changedRows);
227
228
  // @ts-ignore
228
229
  changedCalc.forEach(function(calcControl) {
229
230
  _this.computedCalcValue(calcControl);
230
231
  });
231
- var ref2;
232
- var calcControls = (ref2 = _this.dependenciesTriggerMap.get(payload.instance.id)) !== null && ref2 !== void 0 ? ref2 : [];
232
+ var _this_dependenciesTriggerMap_get;
233
+ var calcControls = (_this_dependenciesTriggerMap_get = _this.dependenciesTriggerMap.get(payload.instance.id)) !== null && _this_dependenciesTriggerMap_get !== void 0 ? _this_dependenciesTriggerMap_get : [];
233
234
  // @ts-ignore
234
235
  calcControls.forEach(function(calcControl) {
235
236
  _this.computedCalcValue(calcControl);
@@ -245,8 +246,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
245
246
  if (!_this.dependenciesTriggerMap.has(instance.id)) {
246
247
  return;
247
248
  }
248
- var ref;
249
- var calcControls = (ref = _this.dependenciesTriggerMap.get(instance.id)) !== null && ref !== void 0 ? ref : [];
249
+ var _this_dependenciesTriggerMap_get;
250
+ var calcControls = (_this_dependenciesTriggerMap_get = _this.dependenciesTriggerMap.get(instance.id)) !== null && _this_dependenciesTriggerMap_get !== void 0 ? _this_dependenciesTriggerMap_get : [];
250
251
  // 在明细子表中的控件,如果计算公式也在明细子表,那只触发同一行的计算公式的计算
251
252
  if (payload.rowIndex !== undefined && payload.rowIndex > -1) {
252
253
  // @ts-ignore
@@ -270,8 +271,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
270
271
  /**
271
272
  * @description 控件在明细子表内
272
273
  * */ _proto.controlInSubtable = function controlInSubtable(control) {
273
- var ref;
274
- return ((ref = control.parent) === null || ref === void 0 ? void 0 : ref.type) === CONTROL_TYPE.SUBTABLE_COLUMN;
274
+ var _control_parent;
275
+ return ((_control_parent = control.parent) === null || _control_parent === void 0 ? void 0 : _control_parent.type) === CONTROL_TYPE.SUBTABLE_COLUMN;
275
276
  };
276
277
  /**
277
278
  * @description 执行计算公式的计算
@@ -331,7 +332,10 @@ export var CalcPlugin = /*#__PURE__*/ function() {
331
332
  if (this.cacheComputedResult[scriptText] !== undefined) {
332
333
  value = this.cacheComputedResult[scriptText];
333
334
  } else {
334
- value = new Function("return ".concat(scriptText))();
335
+ // 解决js精准度问题
336
+ value = Number(format(new Function("return ".concat(scriptText))(), {
337
+ precision: 16
338
+ }));
335
339
  this.cacheComputedResult[scriptText] = value;
336
340
  }
337
341
  var rowIndex = undefined;
@@ -348,10 +352,10 @@ export var CalcPlugin = /*#__PURE__*/ function() {
348
352
  if (result === (oldValue === null || oldValue === void 0 ? void 0 : oldValue.result)) {
349
353
  return;
350
354
  }
351
- var ref;
355
+ var _oldValue_unit;
352
356
  this.engine.setState(control.id, {
353
357
  result: result,
354
- unit: (ref = oldValue === null || oldValue === void 0 ? void 0 : oldValue.unit) !== null && ref !== void 0 ? ref : ""
358
+ unit: (_oldValue_unit = oldValue === null || oldValue === void 0 ? void 0 : oldValue.unit) !== null && _oldValue_unit !== void 0 ? _oldValue_unit : ""
355
359
  }, rowIndex);
356
360
  };
357
361
  /**
@@ -32,7 +32,101 @@ function _classCallCheck(instance, Constructor) {
32
32
  throw new TypeError("Cannot call a class as a function");
33
33
  }
34
34
  }
35
- import regeneratorRuntime from "regenerator-runtime";
35
+ var __generator = this && this.__generator || function(thisArg, body) {
36
+ var f, y, t, g, _ = {
37
+ label: 0,
38
+ sent: function() {
39
+ if (t[0] & 1) throw t[1];
40
+ return t[1];
41
+ },
42
+ trys: [],
43
+ ops: []
44
+ };
45
+ return(g = {
46
+ next: verb(0),
47
+ "throw": verb(1),
48
+ "return": verb(2)
49
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
50
+ return this;
51
+ }), g);
52
+ function verb(n) {
53
+ return function(v) {
54
+ return step([
55
+ n,
56
+ v
57
+ ]);
58
+ };
59
+ }
60
+ function step(op) {
61
+ if (f) throw new TypeError("Generator is already executing.");
62
+ while(_)try {
63
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
64
+ if (y = 0, t) op = [
65
+ op[0] & 2,
66
+ t.value
67
+ ];
68
+ switch(op[0]){
69
+ case 0:
70
+ case 1:
71
+ t = op;
72
+ break;
73
+ case 4:
74
+ _.label++;
75
+ return {
76
+ value: op[1],
77
+ done: false
78
+ };
79
+ case 5:
80
+ _.label++;
81
+ y = op[1];
82
+ op = [
83
+ 0
84
+ ];
85
+ continue;
86
+ case 7:
87
+ op = _.ops.pop();
88
+ _.trys.pop();
89
+ continue;
90
+ default:
91
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
92
+ _ = 0;
93
+ continue;
94
+ }
95
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
96
+ _.label = op[1];
97
+ break;
98
+ }
99
+ if (op[0] === 6 && _.label < t[1]) {
100
+ _.label = t[1];
101
+ t = op;
102
+ break;
103
+ }
104
+ if (t && _.label < t[2]) {
105
+ _.label = t[2];
106
+ _.ops.push(op);
107
+ break;
108
+ }
109
+ if (t[2]) _.ops.pop();
110
+ _.trys.pop();
111
+ continue;
112
+ }
113
+ op = body.call(thisArg, _);
114
+ } catch (e) {
115
+ op = [
116
+ 6,
117
+ e
118
+ ];
119
+ y = 0;
120
+ } finally{
121
+ f = t = 0;
122
+ }
123
+ if (op[0] & 5) throw op[1];
124
+ return {
125
+ value: op[0] ? op[1] : void 0,
126
+ done: true
127
+ };
128
+ }
129
+ };
36
130
  import { EventLogic } from "@byteluck-fe/model-driven-shared";
37
131
  // type EventKeyMap = {
38
132
  // [eventKey in EventKeys]?: string
@@ -80,30 +174,36 @@ export var ControlsEventPlugin = /*#__PURE__*/ function() {
80
174
  _proto.engineAddEventListener = function engineAddEventListener(eventKey, controlEventKey) {
81
175
  var _this = this;
82
176
  this.engine.on(eventKey, function() {
83
- var _ref = _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee(payload) {
84
- return regeneratorRuntime.wrap(function _callee$(_ctx) {
85
- while(1)switch(_ctx.prev = _ctx.next){
177
+ var _ref = _asyncToGenerator(function(payload) {
178
+ return __generator(this, function(_state) {
179
+ switch(_state.label){
86
180
  case 0:
87
- if (!(eventKey === "change" && !_this.engine.isMounted)) {
88
- _ctx.next = 2;
89
- break;
181
+ // 初始化state的时候不触发change事件,必须在engine mounted以后才触发
182
+ if (eventKey === "change" && !_this.engine.isMounted) {
183
+ return [
184
+ 2
185
+ ];
90
186
  }
91
- return _ctx.abrupt("return");
187
+ if (!(payload.instance !== undefined)) return [
188
+ 3,
189
+ 2
190
+ ];
191
+ return [
192
+ 4,
193
+ _this.callControlEvent(controlEventKey, payload)
194
+ ];
195
+ case 1:
196
+ return [
197
+ 2,
198
+ _state.sent()
199
+ ];
92
200
  case 2:
93
- if (!(payload.instance !== undefined)) {
94
- _ctx.next = 6;
95
- break;
96
- }
97
- _ctx.next = 5;
98
- return _this.callControlEvent(controlEventKey, payload);
99
- case 5:
100
- return _ctx.abrupt("return", _ctx.sent);
101
- case 6:
102
- case "end":
103
- return _ctx.stop();
201
+ return [
202
+ 2
203
+ ];
104
204
  }
105
- }, _callee);
106
- }));
205
+ });
206
+ });
107
207
  return function(payload) {
108
208
  return _ref.apply(this, arguments);
109
209
  };
@@ -111,58 +211,66 @@ export var ControlsEventPlugin = /*#__PURE__*/ function() {
111
211
  };
112
212
  _proto.callControlEvent = function callControlEvent(name, payload) {
113
213
  var _this = this;
114
- return _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
214
+ return _asyncToGenerator(function() {
115
215
  var events, result;
116
- return regeneratorRuntime.wrap(function _callee$(_ctx) {
117
- while(1)switch(_ctx.prev = _ctx.next){
216
+ return __generator(this, function(_state) {
217
+ switch(_state.label){
118
218
  case 0:
119
219
  events = _this.config[payload.instance.id];
120
- if (!(!events || !Array.isArray(events[name]))) {
121
- _ctx.next = 3;
122
- break;
220
+ if (!events || !Array.isArray(events[name])) {
221
+ return [
222
+ 2,
223
+ []
224
+ ];
123
225
  }
124
- return _ctx.abrupt("return", []);
125
- case 3:
126
- _ctx.next = 5;
127
- return Promise.all(events[name].map(function() {
128
- var _ref = _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee(eventName) {
129
- var execResult;
130
- return regeneratorRuntime.wrap(function _callee$(_ctx) {
131
- while(1)switch(_ctx.prev = _ctx.next){
132
- case 0:
133
- _ctx.next = 2;
134
- return _this.engine.getAction().execAction(eventName, //qiyu 注释掉的两个参数变为全局参数
135
- // this.engine,
136
- // this.engine.getAction().actionUtils, //以前是params,空的
137
- payload);
138
- case 2:
139
- execResult = _ctx.sent;
140
- return _ctx.abrupt("return", execResult);
141
- case 4:
142
- case "end":
143
- return _ctx.stop();
144
- }
145
- }, _callee);
146
- }));
147
- return function(eventName) {
148
- return _ref.apply(this, arguments);
149
- };
150
- }()));
151
- case 5:
152
- result = _ctx.sent;
153
- if (!result.includes(false)) {
154
- _ctx.next = 10;
155
- break;
226
+ return [
227
+ 4,
228
+ Promise.all(events[name].map(function() {
229
+ var _ref = _asyncToGenerator(function(eventName) {
230
+ var execResult;
231
+ return __generator(this, function(_state) {
232
+ switch(_state.label){
233
+ case 0:
234
+ return [
235
+ 4,
236
+ _this.engine.getAction().execAction(eventName, //qiyu 注释掉的两个参数变为全局参数
237
+ // this.engine,
238
+ // this.engine.getAction().actionUtils, //以前是params,空的
239
+ payload)
240
+ ];
241
+ case 1:
242
+ execResult = _state.sent();
243
+ return [
244
+ 2,
245
+ execResult
246
+ ];
247
+ }
248
+ });
249
+ });
250
+ return function(eventName) {
251
+ return _ref.apply(this, arguments);
252
+ };
253
+ }()))
254
+ ];
255
+ case 1:
256
+ result = _state.sent();
257
+ if (result.includes(false)) {
258
+ return [
259
+ 2,
260
+ false
261
+ ];
262
+ } else {
263
+ return [
264
+ 2,
265
+ result
266
+ ];
156
267
  }
157
- return _ctx.abrupt("return", false);
158
- case 10:
159
- return _ctx.abrupt("return", result);
160
- case 11:
161
- case "end":
162
- return _ctx.stop();
268
+ return [
269
+ 2
270
+ ];
163
271
  }
164
- }, _callee);
165
- }))();
272
+ });
273
+ })();
166
274
  };
167
275
  return ControlsEventPlugin;
168
276
  }();
@@ -71,7 +71,7 @@ export var ES6ModulePlugin = /*#__PURE__*/ function() {
71
71
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
72
72
  try {
73
73
  for(var _iterator = Object.entries(res.funcMap)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
74
- var _value = _slicedToArray(_step.value, 2), key = _value[0], value = _value[1];
74
+ var _step_value = _slicedToArray(_step.value, 2), key = _step_value[0], value = _step_value[1];
75
75
  actionManager.addAction(key, value);
76
76
  }
77
77
  } catch (err) {
@@ -117,7 +117,7 @@ export function parseModule(action, engine) {
117
117
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
118
118
  try {
119
119
  for(var _iterator = Object.entries(module.exports)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
120
- var _value = _slicedToArray(_step.value, 2), key = _value[0], value = _value[1];
120
+ var _step_value = _slicedToArray(_step.value, 2), key = _step_value[0], value = _step_value[1];
121
121
  if (typeof value === "function") {
122
122
  funcMap[key] = value;
123
123
  } else {