amis-core 1.0.0-beta.0

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.
Files changed (211) hide show
  1. package/dist/Root.js +94 -0
  2. package/dist/RootRenderer.js +288 -0
  3. package/dist/SchemaRenderer.js +323 -0
  4. package/dist/Scoped.js +252 -0
  5. package/dist/WithRootStore.js +44 -0
  6. package/dist/WithStore.js +179 -0
  7. package/dist/__tests__/compat.test.d.ts +1 -0
  8. package/dist/__tests__/factory.test.d.ts +1 -0
  9. package/dist/__tests__/filter.test.d.ts +1 -0
  10. package/dist/__tests__/helper.d.ts +13 -0
  11. package/dist/__tests__/tokenize.test.d.ts +1 -0
  12. package/dist/actions/Action.js +119 -0
  13. package/dist/actions/AjaxAction.js +96 -0
  14. package/dist/actions/BreakAction.js +35 -0
  15. package/dist/actions/BroadcastAction.js +49 -0
  16. package/dist/actions/CmptAction.js +60 -0
  17. package/dist/actions/ContinueAction.js +35 -0
  18. package/dist/actions/CopyAction.js +43 -0
  19. package/dist/actions/CustomAction.js +49 -0
  20. package/dist/actions/DialogAction.js +104 -0
  21. package/dist/actions/DrawerAction.js +66 -0
  22. package/dist/actions/EmailAction.js +48 -0
  23. package/dist/actions/LinkAction.js +52 -0
  24. package/dist/actions/LoopAction.js +107 -0
  25. package/dist/actions/PageAction.js +80 -0
  26. package/dist/actions/ParallelAction.js +40 -0
  27. package/dist/actions/SwitchAction.js +52 -0
  28. package/dist/actions/ToastAction.js +35 -0
  29. package/dist/components/LazyComponent.js +99 -0
  30. package/dist/env.js +20 -0
  31. package/dist/envOverwrite.js +43 -0
  32. package/dist/factory.js +308 -0
  33. package/dist/index.js +218 -0
  34. package/dist/index2.js +255 -0
  35. package/dist/locale.js +114 -0
  36. package/dist/renderers/Form.js +1162 -0
  37. package/dist/renderers/Item.js +636 -0
  38. package/dist/renderers/Options.js +881 -0
  39. package/dist/renderers/Placeholder.js +31 -0
  40. package/dist/renderers/builtin.js +27 -0
  41. package/dist/renderers/wrapControl.js +507 -0
  42. package/dist/src/Root.d.ts +37 -0
  43. package/dist/src/RootRenderer.d.ts +27 -0
  44. package/dist/src/SchemaRenderer.d.ts +37 -0
  45. package/dist/src/Scoped.d.ts +38 -0
  46. package/dist/src/WithRootStore.d.ts +737 -0
  47. package/dist/src/WithStore.d.ts +5 -0
  48. package/dist/src/actions/Action.d.ts +38 -0
  49. package/dist/src/actions/AjaxAction.d.ts +25 -0
  50. package/dist/src/actions/BreakAction.d.ts +15 -0
  51. package/dist/src/actions/BroadcastAction.d.ts +16 -0
  52. package/dist/src/actions/CmptAction.d.ts +20 -0
  53. package/dist/src/actions/ContinueAction.d.ts +15 -0
  54. package/dist/src/actions/CopyAction.d.ts +20 -0
  55. package/dist/src/actions/CustomAction.d.ts +17 -0
  56. package/dist/src/actions/Decorators.d.ts +25 -0
  57. package/dist/src/actions/DialogAction.d.ts +57 -0
  58. package/dist/src/actions/DrawerAction.d.ts +30 -0
  59. package/dist/src/actions/EmailAction.d.ts +23 -0
  60. package/dist/src/actions/LinkAction.d.ts +24 -0
  61. package/dist/src/actions/LoopAction.d.ts +19 -0
  62. package/dist/src/actions/PageAction.d.ts +39 -0
  63. package/dist/src/actions/ParallelAction.d.ts +8 -0
  64. package/dist/src/actions/SwitchAction.d.ts +11 -0
  65. package/dist/src/actions/ToastAction.d.ts +19 -0
  66. package/dist/src/actions/index.d.ts +21 -0
  67. package/dist/src/components/LazyComponent.d.ts +32 -0
  68. package/dist/src/env.d.ts +172 -0
  69. package/dist/src/envOverwrite.d.ts +4 -0
  70. package/dist/src/factory.d.ts +78 -0
  71. package/dist/src/index.d.ts +25 -0
  72. package/dist/src/locale.d.ts +82 -0
  73. package/dist/src/renderers/Form.d.ts +352 -0
  74. package/dist/src/renderers/Item.d.ts +795 -0
  75. package/dist/src/renderers/Options.d.ts +150 -0
  76. package/dist/src/renderers/Placeholder.d.ts +6 -0
  77. package/dist/src/renderers/builtin.d.ts +1 -0
  78. package/dist/src/renderers/wrapControl.d.ts +446 -0
  79. package/dist/src/schema.d.ts +369 -0
  80. package/dist/src/store/app.d.ts +89 -0
  81. package/dist/src/store/combo.d.ts +8504 -0
  82. package/dist/src/store/crud.d.ts +124 -0
  83. package/dist/src/store/form.d.ts +3394 -0
  84. package/dist/src/store/formItem.d.ts +130 -0
  85. package/dist/src/store/iRenderer.d.ts +46 -0
  86. package/dist/src/store/index.d.ts +105 -0
  87. package/dist/src/store/list.d.ts +270 -0
  88. package/dist/src/store/manager.d.ts +115 -0
  89. package/dist/src/store/modal.d.ts +84 -0
  90. package/dist/src/store/node.d.ts +22 -0
  91. package/dist/src/store/pagination.d.ts +58 -0
  92. package/dist/src/store/root.d.ts +79 -0
  93. package/dist/src/store/service.d.ts +71 -0
  94. package/dist/src/store/table-v2.d.ts +309 -0
  95. package/dist/src/store/table.d.ts +8334 -0
  96. package/dist/src/theme.d.ts +83 -0
  97. package/dist/src/types.d.ts +217 -0
  98. package/dist/src/utils/Animation.d.ts +22 -0
  99. package/dist/src/utils/ColorScale.d.ts +19 -0
  100. package/dist/src/utils/DataSchema.d.ts +25 -0
  101. package/dist/src/utils/DataScope.d.ts +23 -0
  102. package/dist/src/utils/RootClose.d.ts +4 -0
  103. package/dist/src/utils/SimpleMap.d.ts +8 -0
  104. package/dist/src/utils/api.d.ts +27 -0
  105. package/dist/src/utils/attachmentAdpator.d.ts +7 -0
  106. package/dist/src/utils/autobind.d.ts +7 -0
  107. package/dist/src/utils/columnsSplit.d.ts +1 -0
  108. package/dist/src/utils/dataMapping.d.ts +3 -0
  109. package/dist/src/utils/date.d.ts +4 -0
  110. package/dist/src/utils/debug.d.ts +26 -0
  111. package/dist/src/utils/dom.d.ts +13 -0
  112. package/dist/src/utils/errors.d.ts +6 -0
  113. package/dist/src/utils/escapeHtml.d.ts +1 -0
  114. package/dist/src/utils/filter-schema.d.ts +12 -0
  115. package/dist/src/utils/filter.d.ts +1 -0
  116. package/dist/src/utils/formatDuration.d.ts +1 -0
  117. package/dist/src/utils/formula.d.ts +16 -0
  118. package/dist/src/utils/getVariable.d.ts +3 -0
  119. package/dist/src/utils/grammar.d.ts +4 -0
  120. package/dist/src/utils/handleAction.d.ts +6 -0
  121. package/dist/src/utils/helper.d.ts +286 -0
  122. package/dist/src/utils/icon.d.ts +12 -0
  123. package/dist/src/utils/image.d.ts +17 -0
  124. package/dist/src/utils/index.d.ts +12 -0
  125. package/dist/src/utils/isPureVariable.d.ts +1 -0
  126. package/dist/src/utils/json-schema-2-amis-schema.d.ts +6 -0
  127. package/dist/src/utils/keyToPath.d.ts +6 -0
  128. package/dist/src/utils/makeSorter.d.ts +1 -0
  129. package/dist/src/utils/markdown.d.ts +5 -0
  130. package/dist/src/utils/normalizeLink.d.ts +1 -0
  131. package/dist/src/utils/normalizeOptions.d.ts +7 -0
  132. package/dist/src/utils/object.d.ts +15 -0
  133. package/dist/src/utils/offset.d.ts +14 -0
  134. package/dist/src/utils/offsetParent.d.ts +4 -0
  135. package/dist/src/utils/optionValueCompare.d.ts +3 -0
  136. package/dist/src/utils/position.d.ts +15 -0
  137. package/dist/src/utils/prettyBytes.d.ts +1 -0
  138. package/dist/src/utils/renderer-event.d.ts +44 -0
  139. package/dist/src/utils/replaceText.d.ts +6 -0
  140. package/dist/src/utils/resize-sensor.d.ts +6 -0
  141. package/dist/src/utils/resolveVariable.d.ts +1 -0
  142. package/dist/src/utils/resolveVariableAndFilter.d.ts +1 -0
  143. package/dist/src/utils/scrollPosition.d.ts +6 -0
  144. package/dist/src/utils/string2regExp.d.ts +1 -0
  145. package/dist/src/utils/stripNumber.d.ts +1 -0
  146. package/dist/src/utils/style.d.ts +10 -0
  147. package/dist/src/utils/tokenize.d.ts +1 -0
  148. package/dist/src/utils/tpl-builtin.d.ts +18 -0
  149. package/dist/src/utils/tpl-lodash.d.ts +4 -0
  150. package/dist/src/utils/tpl.d.ts +11 -0
  151. package/dist/src/utils/validations.d.ts +39 -0
  152. package/dist/store/app.js +190 -0
  153. package/dist/store/combo.js +154 -0
  154. package/dist/store/crud.js +413 -0
  155. package/dist/store/form.js +579 -0
  156. package/dist/store/formItem.js +846 -0
  157. package/dist/store/iRenderer.js +189 -0
  158. package/dist/store/index.js +103 -0
  159. package/dist/store/list.js +248 -0
  160. package/dist/store/manager.js +56 -0
  161. package/dist/store/modal.js +54 -0
  162. package/dist/store/node.js +93 -0
  163. package/dist/store/pagination.js +60 -0
  164. package/dist/store/root.js +45 -0
  165. package/dist/store/service.js +415 -0
  166. package/dist/store/table-v2.js +471 -0
  167. package/dist/store/table.js +1105 -0
  168. package/dist/theme.js +93 -0
  169. package/dist/tsconfig.tsbuildinfo +1 -0
  170. package/dist/utils/Animation.js +290 -0
  171. package/dist/utils/DataSchema.js +120 -0
  172. package/dist/utils/DataScope.js +151 -0
  173. package/dist/utils/SimpleMap.js +46 -0
  174. package/dist/utils/api.js +555 -0
  175. package/dist/utils/autobind.js +94 -0
  176. package/dist/utils/dataMapping.js +136 -0
  177. package/dist/utils/date.js +90 -0
  178. package/dist/utils/debug.js +343 -0
  179. package/dist/utils/errors.js +23 -0
  180. package/dist/utils/escapeHtml.js +24 -0
  181. package/dist/utils/filter-schema.js +75 -0
  182. package/dist/utils/filter.js +481 -0
  183. package/dist/utils/formatDuration.js +27 -0
  184. package/dist/utils/formula.js +165 -0
  185. package/dist/utils/getVariable.js +29 -0
  186. package/dist/utils/grammar.js +54 -0
  187. package/dist/utils/helper.js +1283 -0
  188. package/dist/utils/isPureVariable.js +16 -0
  189. package/dist/utils/keyToPath.js +34 -0
  190. package/dist/utils/makeSorter.js +30 -0
  191. package/dist/utils/normalizeLink.js +47 -0
  192. package/dist/utils/normalizeOptions.js +92 -0
  193. package/dist/utils/object.js +156 -0
  194. package/dist/utils/offset.js +36 -0
  195. package/dist/utils/offsetParent.js +27 -0
  196. package/dist/utils/optionValueCompare.js +25 -0
  197. package/dist/utils/position.js +50 -0
  198. package/dist/utils/prettyBytes.js +28 -0
  199. package/dist/utils/renderer-event.js +131 -0
  200. package/dist/utils/replaceText.js +35 -0
  201. package/dist/utils/resize-sensor.js +177 -0
  202. package/dist/utils/resolveVariable.js +39 -0
  203. package/dist/utils/resolveVariableAndFilter.js +37 -0
  204. package/dist/utils/string2regExp.js +18 -0
  205. package/dist/utils/stripNumber.js +20 -0
  206. package/dist/utils/tokenize.js +33 -0
  207. package/dist/utils/tpl-builtin.js +71 -0
  208. package/dist/utils/tpl-lodash.js +71 -0
  209. package/dist/utils/tpl.js +140 -0
  210. package/dist/utils/validations.js +377 -0
  211. package/package.json +121 -0
@@ -0,0 +1,846 @@
1
+ /**
2
+ * amis-core v1.0.0-beta.0
3
+ * Copyright 2018-2022 fex
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ Object.defineProperty(exports, '__esModule', { value: true });
9
+
10
+ var tslib = require('tslib');
11
+ var mobxStateTree = require('mobx-state-tree');
12
+ var isEqualWith = require('lodash/isEqualWith');
13
+ var form = require('./form.js');
14
+ var validations = require('../utils/validations.js');
15
+ var combo = require('./combo.js');
16
+ var tpl = require('../utils/tpl.js');
17
+ var api = require('../utils/api.js');
18
+ var findIndex = require('lodash/findIndex');
19
+ var helper = require('../utils/helper.js');
20
+ var find = require('lodash/find');
21
+ var isPlainObject = require('lodash/isPlainObject');
22
+ var SimpleMap = require('../utils/SimpleMap.js');
23
+ var node = require('./node.js');
24
+ var manager = require('./manager.js');
25
+ var normalizeOptions = require('../utils/normalizeOptions.js');
26
+ var optionValueCompare = require('../utils/optionValueCompare.js');
27
+ var object = require('../utils/object.js');
28
+
29
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
30
+
31
+ var isEqualWith__default = /*#__PURE__*/_interopDefaultLegacy(isEqualWith);
32
+ var findIndex__default = /*#__PURE__*/_interopDefaultLegacy(findIndex);
33
+ var find__default = /*#__PURE__*/_interopDefaultLegacy(find);
34
+ var isPlainObject__default = /*#__PURE__*/_interopDefaultLegacy(isPlainObject);
35
+
36
+ var ErrorDetail = mobxStateTree.types.model('ErrorDetail', {
37
+ msg: '',
38
+ tag: '',
39
+ rule: ''
40
+ });
41
+ var FormItemStore = node.StoreNode.named('FormItemStore')
42
+ .props({
43
+ isFocused: false,
44
+ type: '',
45
+ label: '',
46
+ unique: false,
47
+ loading: false,
48
+ required: false,
49
+ tmpValue: mobxStateTree.types.frozen(),
50
+ emitedValue: mobxStateTree.types.frozen(),
51
+ rules: mobxStateTree.types.optional(mobxStateTree.types.frozen(), {}),
52
+ messages: mobxStateTree.types.optional(mobxStateTree.types.frozen(), {}),
53
+ errorData: mobxStateTree.types.optional(mobxStateTree.types.array(ErrorDetail), []),
54
+ name: mobxStateTree.types.string,
55
+ itemId: '',
56
+ unsetValueOnInvisible: false,
57
+ itemsRef: mobxStateTree.types.optional(mobxStateTree.types.array(mobxStateTree.types.string), []),
58
+ validated: false,
59
+ validating: false,
60
+ multiple: false,
61
+ delimiter: ',',
62
+ valueField: 'value',
63
+ labelField: 'label',
64
+ joinValues: true,
65
+ extractValue: false,
66
+ options: mobxStateTree.types.optional(mobxStateTree.types.frozen(), []),
67
+ expressionsInOptions: false,
68
+ selectFirst: false,
69
+ autoFill: mobxStateTree.types.frozen(),
70
+ clearValueOnHidden: false,
71
+ validateApi: mobxStateTree.types.optional(mobxStateTree.types.frozen(), ''),
72
+ selectedOptions: mobxStateTree.types.optional(mobxStateTree.types.frozen(), []),
73
+ filteredOptions: mobxStateTree.types.optional(mobxStateTree.types.frozen(), []),
74
+ dialogSchema: mobxStateTree.types.frozen(),
75
+ dialogOpen: false,
76
+ dialogData: mobxStateTree.types.frozen(),
77
+ resetValue: mobxStateTree.types.optional(mobxStateTree.types.frozen(), ''),
78
+ validateOnChange: false
79
+ })
80
+ .views(function (self) {
81
+ function getForm() {
82
+ var form$1 = self.parentStore;
83
+ return (form$1 === null || form$1 === void 0 ? void 0 : form$1.storeType) === form.FormStore.name ? form$1 : undefined;
84
+ }
85
+ function getValue() {
86
+ var _a;
87
+ return (_a = getForm()) === null || _a === void 0 ? void 0 : _a.getValueByName(self.name);
88
+ }
89
+ function getLastOptionValue() {
90
+ if (self.selectedOptions.length) {
91
+ return self.selectedOptions[self.selectedOptions.length - 1].value;
92
+ }
93
+ return '';
94
+ }
95
+ function getErrors() {
96
+ return self.errorData.map(function (item) { return item.msg; });
97
+ }
98
+ return {
99
+ get subFormItems() {
100
+ return self.itemsRef.map(function (item) { return manager.getStoreById(item); });
101
+ },
102
+ get form() {
103
+ return getForm();
104
+ },
105
+ get value() {
106
+ return getValue();
107
+ },
108
+ get prinstine() {
109
+ var _a;
110
+ return (_a = getForm()) === null || _a === void 0 ? void 0 : _a.getPristineValueByName(self.name);
111
+ },
112
+ get errors() {
113
+ return getErrors();
114
+ },
115
+ get valid() {
116
+ var errors = getErrors();
117
+ return !!(!errors || !errors.length);
118
+ },
119
+ get errClassNames() {
120
+ return self.errorData
121
+ .map(function (item) { return item.rule; })
122
+ .filter(function (item, index, arr) { return item && arr.indexOf(item) === index; })
123
+ .map(function (item) { return "has-error--".concat(item); })
124
+ .join(' ');
125
+ },
126
+ get lastSelectValue() {
127
+ return getLastOptionValue();
128
+ },
129
+ getSelectedOptions: function (value, nodeValueArray) {
130
+ if (value === void 0) { value = self.tmpValue; }
131
+ if (typeof value === 'undefined') {
132
+ return [];
133
+ }
134
+ var valueArray = nodeValueArray
135
+ ? nodeValueArray
136
+ : Array.isArray(value)
137
+ ? value
138
+ : typeof value === 'string'
139
+ ? value.split(self.delimiter || ',')
140
+ : [value];
141
+ var selected = valueArray.map(function (item) {
142
+ return item && item.hasOwnProperty(self.valueField || 'value')
143
+ ? item[self.valueField || 'value']
144
+ : item;
145
+ });
146
+ var selectedOptions = [];
147
+ selected.forEach(function (item, index) {
148
+ var _a, _b;
149
+ var matched = helper.findTree(self.filteredOptions, optionValueCompare.optionValueCompare(item, self.valueField || 'value'));
150
+ if (matched) {
151
+ selectedOptions.push(matched);
152
+ }
153
+ else {
154
+ var unMatched = (valueArray && valueArray[index]) || item;
155
+ if (unMatched &&
156
+ (typeof unMatched === 'string' || typeof unMatched === 'number')) {
157
+ unMatched = (_a = {},
158
+ _a[self.valueField || 'value'] = item,
159
+ _a[self.labelField || 'label'] = item,
160
+ _a.__unmatched = true,
161
+ _a);
162
+ }
163
+ else if (unMatched && self.extractValue) {
164
+ unMatched = (_b = {},
165
+ _b[self.valueField || 'value'] = item,
166
+ _b[self.labelField || 'label'] = 'UnKnown',
167
+ _b.__unmatched = true,
168
+ _b);
169
+ }
170
+ unMatched && selectedOptions.push(unMatched);
171
+ }
172
+ });
173
+ return selectedOptions;
174
+ }
175
+ };
176
+ })
177
+ .actions(function (self) {
178
+ self.form;
179
+ var dialogCallbacks = new SimpleMap.SimpleMap();
180
+ var loadAutoUpdateCancel = null;
181
+ function config(_a) {
182
+ var required = _a.required, unique = _a.unique; _a.value; var rules = _a.rules, messages = _a.messages, delimiter = _a.delimiter, multiple = _a.multiple, valueField = _a.valueField, labelField = _a.labelField, joinValues = _a.joinValues, extractValue = _a.extractValue, type = _a.type, id = _a.id, selectFirst = _a.selectFirst, autoFill = _a.autoFill, clearValueOnHidden = _a.clearValueOnHidden, validateApi = _a.validateApi, maxLength = _a.maxLength, minLength = _a.minLength, validateOnChange = _a.validateOnChange, label = _a.label;
183
+ if (typeof rules === 'string') {
184
+ rules = validations.str2rules(rules);
185
+ }
186
+ typeof type !== 'undefined' && (self.type = type);
187
+ typeof id !== 'undefined' && (self.itemId = id);
188
+ typeof messages !== 'undefined' && (self.messages = messages);
189
+ typeof required !== 'undefined' && (self.required = !!required);
190
+ typeof unique !== 'undefined' && (self.unique = !!unique);
191
+ typeof multiple !== 'undefined' && (self.multiple = !!multiple);
192
+ typeof selectFirst !== 'undefined' && (self.selectFirst = !!selectFirst);
193
+ typeof autoFill !== 'undefined' && (self.autoFill = autoFill);
194
+ typeof joinValues !== 'undefined' && (self.joinValues = !!joinValues);
195
+ typeof extractValue !== 'undefined' &&
196
+ (self.extractValue = !!extractValue);
197
+ typeof delimiter !== 'undefined' &&
198
+ (self.delimiter = delimiter || ',');
199
+ typeof valueField !== 'undefined' &&
200
+ (self.valueField = valueField || 'value');
201
+ typeof labelField !== 'undefined' &&
202
+ (self.labelField = labelField || 'label');
203
+ typeof clearValueOnHidden !== 'undefined' &&
204
+ (self.clearValueOnHidden = !!clearValueOnHidden);
205
+ typeof validateApi !== 'undefined' && (self.validateApi = validateApi);
206
+ typeof validateOnChange !== 'undefined' &&
207
+ (self.validateOnChange = !!validateOnChange);
208
+ typeof label === 'string' && (self.label = label);
209
+ rules = tslib.__assign(tslib.__assign({}, rules), { isRequired: self.required });
210
+ // todo 这个弄个配置由渲染器自己来决定
211
+ // 暂时先这样
212
+ if (~['input-text', 'textarea'].indexOf(self.type)) {
213
+ if (typeof minLength === 'number') {
214
+ rules.minLength = minLength;
215
+ }
216
+ if (typeof maxLength === 'number') {
217
+ rules.maxLength = maxLength;
218
+ }
219
+ }
220
+ if (helper.isObjectShallowModified(rules, self.rules)) {
221
+ self.rules = rules;
222
+ clearError('builtin');
223
+ self.validated = false;
224
+ }
225
+ }
226
+ function focus() {
227
+ self.isFocused = true;
228
+ }
229
+ function blur() {
230
+ self.isFocused = false;
231
+ }
232
+ var validateCancel = null;
233
+ var validate = mobxStateTree.flow(function validate(data, hook) {
234
+ var json, combo, group;
235
+ var _a;
236
+ var _b, _c;
237
+ return tslib.__generator(this, function (_d) {
238
+ switch (_d.label) {
239
+ case 0:
240
+ if (self.validating && !api.isEffectiveApi(self.validateApi, data)) {
241
+ return [2 /*return*/, self.valid];
242
+ }
243
+ self.validating = true;
244
+ clearError();
245
+ if (!hook) return [3 /*break*/, 2];
246
+ return [4 /*yield*/, hook()];
247
+ case 1:
248
+ _d.sent();
249
+ _d.label = 2;
250
+ case 2:
251
+ addError(validations.validate(self.tmpValue, data, self.rules, self.messages, self.__));
252
+ if (!(!self.errors.length && api.isEffectiveApi(self.validateApi, data))) return [3 /*break*/, 4];
253
+ if (validateCancel) {
254
+ validateCancel();
255
+ validateCancel = null;
256
+ }
257
+ return [4 /*yield*/, mobxStateTree.getEnv(self).fetcher(self.validateApi,
258
+ /** 如果配置validateApi,需要将用户最新输入同步到数据域内 */
259
+ object.createObject(data, (_a = {}, _a[self.name] = self.tmpValue, _a)), {
260
+ cancelExecutor: function (executor) {
261
+ return (validateCancel = executor);
262
+ }
263
+ })];
264
+ case 3:
265
+ json = _d.sent();
266
+ validateCancel = null;
267
+ if (!json.ok && json.status === 422 && json.errors) {
268
+ addError(String(json.errors || json.msg || "\u8868\u5355\u9879\u300C".concat(self.name, "\u300D\u6821\u9A8C\u5931\u8D25")));
269
+ }
270
+ _d.label = 4;
271
+ case 4:
272
+ self.validated = true;
273
+ if (self.unique && ((_c = (_b = self.form) === null || _b === void 0 ? void 0 : _b.parentStore) === null || _c === void 0 ? void 0 : _c.storeType) === 'ComboStore') {
274
+ combo = self.form.parentStore;
275
+ group = combo.uniques.get(self.name);
276
+ if (group.items.some(function (item) {
277
+ return item !== self &&
278
+ self.tmpValue !== undefined &&
279
+ item.value === self.tmpValue;
280
+ })) {
281
+ addError(self.__('Form.unique'));
282
+ }
283
+ }
284
+ self.validating = false;
285
+ return [2 /*return*/, self.valid];
286
+ }
287
+ });
288
+ });
289
+ function setError(msg, tag) {
290
+ if (tag === void 0) { tag = 'builtin'; }
291
+ clearError();
292
+ addError(msg, tag);
293
+ }
294
+ function addError(msg, tag) {
295
+ if (tag === void 0) { tag = 'builtin'; }
296
+ var msgs = Array.isArray(msg) ? msg : [msg];
297
+ msgs.forEach(function (item) {
298
+ return self.errorData.push({
299
+ msg: typeof item === 'string' ? item : item.msg,
300
+ rule: typeof item !== 'string' ? item.rule : undefined,
301
+ tag: tag
302
+ });
303
+ });
304
+ }
305
+ function clearError(tag) {
306
+ if (tag) {
307
+ var filtered = self.errorData.filter(function (item) { return item.tag !== tag; });
308
+ self.errorData.replace(filtered);
309
+ }
310
+ else {
311
+ self.errorData.clear();
312
+ }
313
+ }
314
+ function getFirstAvaibleOption(options) {
315
+ if (!Array.isArray(options)) {
316
+ return;
317
+ }
318
+ for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {
319
+ var option = options_1[_i];
320
+ if (Array.isArray(option.children)) {
321
+ var childFirst = getFirstAvaibleOption(option.children);
322
+ if (childFirst !== undefined) {
323
+ return childFirst;
324
+ }
325
+ }
326
+ else if (option[self.valueField || 'value'] && !option.disabled) {
327
+ return option;
328
+ }
329
+ }
330
+ }
331
+ function setOptions(options, onChange, data) {
332
+ if (!Array.isArray(options)) {
333
+ return;
334
+ }
335
+ options = helper.filterTree(options, function (item) { return item; });
336
+ var originOptions = self.options.concat();
337
+ self.options = options;
338
+ syncOptions(originOptions, data);
339
+ var selectedOptions;
340
+ if (onChange &&
341
+ self.selectFirst &&
342
+ self.filteredOptions.length &&
343
+ (selectedOptions = self.getSelectedOptions(self.value)) &&
344
+ !selectedOptions.filter(function (item) { return !item.__unmatched; }).length) {
345
+ var fistOption = getFirstAvaibleOption(self.filteredOptions);
346
+ if (!fistOption) {
347
+ return;
348
+ }
349
+ var list = [fistOption].map(function (item) {
350
+ if (self.extractValue || self.joinValues) {
351
+ return item[self.valueField || 'value'];
352
+ }
353
+ return item;
354
+ });
355
+ var value = self.joinValues && self.multiple
356
+ ? list.join(self.delimiter)
357
+ : self.multiple
358
+ ? list
359
+ : list[0];
360
+ onChange(value);
361
+ }
362
+ }
363
+ var loadCancel = null;
364
+ var fetchOptions = mobxStateTree.flow(function getInitData(api, data, config, setErrorFlag) {
365
+ var json, result, e_1, env;
366
+ var _a;
367
+ return tslib.__generator(this, function (_b) {
368
+ switch (_b.label) {
369
+ case 0:
370
+ _b.trys.push([0, 2, , 3]);
371
+ if (loadCancel) {
372
+ loadCancel();
373
+ loadCancel = null;
374
+ self.loading = false;
375
+ }
376
+ if (!(config === null || config === void 0 ? void 0 : config.silent)) {
377
+ self.loading = true;
378
+ }
379
+ return [4 /*yield*/, mobxStateTree.getEnv(self).fetcher(api, data, tslib.__assign({ autoAppend: false, cancelExecutor: function (executor) { return (loadCancel = executor); } }, config))];
380
+ case 1:
381
+ json = _b.sent();
382
+ loadCancel = null;
383
+ result = null;
384
+ if (!json.ok) {
385
+ setErrorFlag !== false &&
386
+ setError(self.__('Form.loadOptionsFailed', {
387
+ reason: (_a = json.msg) !== null && _a !== void 0 ? _a : (config && config.errorMessage)
388
+ }));
389
+ mobxStateTree.getEnv(self).notify('error', self.errors.join('') || "".concat(api, "\uFF1A").concat(json.msg), json.msgTimeout !== undefined
390
+ ? {
391
+ closeButton: true,
392
+ timeout: json.msgTimeout
393
+ }
394
+ : undefined);
395
+ }
396
+ else {
397
+ result = json;
398
+ }
399
+ self.loading = false;
400
+ return [2 /*return*/, result];
401
+ case 2:
402
+ e_1 = _b.sent();
403
+ env = mobxStateTree.getEnv(self);
404
+ if (!mobxStateTree.isAlive(self) || self.disposed) {
405
+ return [2 /*return*/];
406
+ }
407
+ self.loading = false;
408
+ if (env.isCancel(e_1)) {
409
+ return [2 /*return*/];
410
+ }
411
+ console.error(e_1.stack);
412
+ env.notify('error', e_1.message);
413
+ return [2 /*return*/];
414
+ case 3: return [2 /*return*/];
415
+ }
416
+ });
417
+ });
418
+ var loadOptions = mobxStateTree.flow(function getInitData(api, data, config, clearValue, onChange, setErrorFlag) {
419
+ var json, options;
420
+ var _a, _b, _c;
421
+ return tslib.__generator(this, function (_d) {
422
+ switch (_d.label) {
423
+ case 0: return [4 /*yield*/, fetchOptions(api, data, config, setErrorFlag)];
424
+ case 1:
425
+ json = _d.sent();
426
+ if (!json) {
427
+ return [2 /*return*/];
428
+ }
429
+ clearError();
430
+ self.validated = false; // 拉完数据应该需要再校验一下
431
+ options = ((_a = json.data) === null || _a === void 0 ? void 0 : _a.options) ||
432
+ ((_b = json.data) === null || _b === void 0 ? void 0 : _b.items) ||
433
+ ((_c = json.data) === null || _c === void 0 ? void 0 : _c.rows) ||
434
+ json.data ||
435
+ [];
436
+ options = normalizeOptions.normalizeOptions(options, undefined, self.valueField);
437
+ if ((config === null || config === void 0 ? void 0 : config.extendsOptions) && self.selectedOptions.length > 0) {
438
+ self.selectedOptions.forEach(function (item) {
439
+ var exited = helper.findTree(options, optionValueCompare.optionValueCompare(item, self.valueField || 'value'));
440
+ if (!exited) {
441
+ options.push(item);
442
+ }
443
+ });
444
+ }
445
+ setOptions(options, onChange, data);
446
+ if (json.data && typeof json.data.value !== 'undefined') {
447
+ onChange && onChange(json.data.value, false, true);
448
+ }
449
+ else if (clearValue && !self.selectFirst) {
450
+ self.selectedOptions.some(function (item) { return item.__unmatched; }) &&
451
+ onChange &&
452
+ onChange('', false, true);
453
+ }
454
+ return [2 /*return*/, json];
455
+ }
456
+ });
457
+ });
458
+ var loadAutoUpdateData = mobxStateTree.flow(function getAutoUpdateData(api, data, silent) {
459
+ var json, result;
460
+ var _a, _b;
461
+ if (silent === void 0) { silent = true; }
462
+ return tslib.__generator(this, function (_c) {
463
+ switch (_c.label) {
464
+ case 0:
465
+ if (loadAutoUpdateCancel) {
466
+ loadAutoUpdateCancel();
467
+ loadAutoUpdateCancel = null;
468
+ }
469
+ return [4 /*yield*/, mobxStateTree.getEnv(self).fetcher(api, data, {
470
+ cancelExecutor: function (executor) {
471
+ return (loadAutoUpdateCancel = executor);
472
+ }
473
+ })];
474
+ case 1:
475
+ json = _c.sent();
476
+ loadAutoUpdateCancel = null;
477
+ if (!json) {
478
+ return [2 /*return*/];
479
+ }
480
+ result = ((_a = json.data) === null || _a === void 0 ? void 0 : _a.items) || ((_b = json.data) === null || _b === void 0 ? void 0 : _b.rows);
481
+ // 只处理仅有一个结果的数据
482
+ if ((result === null || result === void 0 ? void 0 : result.length) === 1) {
483
+ return [2 /*return*/, result[0]];
484
+ }
485
+ else if (isPlainObject__default["default"](json.data)) {
486
+ return [2 /*return*/, json.data];
487
+ }
488
+ !silent &&
489
+ mobxStateTree.getEnv(self).notify('info', self.__('FormItem.autoUpdateloadFaild'));
490
+ return [2 /*return*/];
491
+ }
492
+ });
493
+ });
494
+ var tryDeferLoadLeftOptions = mobxStateTree.flow(function (option, leftOptions, api, data, config) {
495
+ var indexes, leftIndexes, topOption, json, options, newLeftOptions, children_1;
496
+ var _a;
497
+ return tslib.__generator(this, function (_b) {
498
+ switch (_b.label) {
499
+ case 0:
500
+ if (!Array.isArray(leftOptions)) {
501
+ return [2 /*return*/];
502
+ }
503
+ indexes = helper.findTreeIndex(self.options, function (item) { return item.leftOptions === leftOptions; });
504
+ leftIndexes = helper.findTreeIndex(leftOptions, function (item) { return item === option; });
505
+ topOption = helper.findTree(self.options, function (item) { return item.leftOptions === leftOptions; });
506
+ if (!indexes || !leftIndexes || !topOption) {
507
+ return [2 /*return*/];
508
+ }
509
+ setOptions(helper.spliceTree(self.options, indexes, 1, tslib.__assign(tslib.__assign({}, topOption), { loading: true, leftOptions: helper.spliceTree(topOption.leftOptions, leftIndexes, 1, tslib.__assign(tslib.__assign({}, option), { loading: true })) })), undefined, data);
510
+ return [4 /*yield*/, fetchOptions(api, data, tslib.__assign(tslib.__assign({}, config), { silent: true }), false)];
511
+ case 1:
512
+ json = _b.sent();
513
+ if (!json) {
514
+ setOptions(helper.spliceTree(self.options, indexes, 1, tslib.__assign(tslib.__assign({}, topOption), { loading: false, error: true, leftOptions: helper.spliceTree(topOption.leftOptions, leftIndexes, 1, tslib.__assign(tslib.__assign({}, option), { loading: false, error: true })) })), undefined, data);
515
+ return [2 /*return*/];
516
+ }
517
+ options = ((_a = json.data) === null || _a === void 0 ? void 0 : _a.options) ||
518
+ json.data.items ||
519
+ json.data.rows ||
520
+ json.data ||
521
+ [];
522
+ newLeftOptions = helper.spliceTree(topOption.leftOptions, leftIndexes, 1, tslib.__assign(tslib.__assign({}, option), { loading: false, loaded: true, children: options }));
523
+ setOptions(helper.spliceTree(self.options, indexes, 1, tslib.__assign(tslib.__assign({}, topOption), { loading: false, loaded: true, children: options, leftOptions: newLeftOptions })), undefined, data);
524
+ // 插入新的子节点,用于之后BaseSelection.resolveSelected查找
525
+ if (Array.isArray(topOption.children)) {
526
+ children_1 = topOption.children.concat();
527
+ helper.flattenTree(newLeftOptions).forEach(function (item) {
528
+ if (!helper.findTree(topOption.children, function (node) { return node.ref === item.value; })) {
529
+ children_1.push({ ref: item.value, defer: true });
530
+ }
531
+ });
532
+ setOptions(helper.spliceTree(self.options, indexes, 1, tslib.__assign(tslib.__assign({}, topOption), { leftOptions: newLeftOptions, children: children_1 })), undefined, data);
533
+ }
534
+ return [2 /*return*/, json];
535
+ }
536
+ });
537
+ });
538
+ var deferLoadLeftOptions = mobxStateTree.flow(function (option, leftOptions, api, data, config) {
539
+ return tslib.__generator(this, function (_a) {
540
+ switch (_a.label) {
541
+ case 0: return [4 /*yield*/, tryDeferLoadLeftOptions(option, leftOptions, api, data, config)];
542
+ case 1: return [2 /*return*/, _a.sent()];
543
+ }
544
+ });
545
+ });
546
+ var deferLoadOptions = mobxStateTree.flow(function (option, api, data, config) {
547
+ var labelField, valueField, indexes, leftOptions, json, options;
548
+ var _a, _b;
549
+ return tslib.__generator(this, function (_c) {
550
+ switch (_c.label) {
551
+ case 0:
552
+ labelField = self.labelField || 'label';
553
+ valueField = self.valueField || 'value';
554
+ indexes = helper.findTreeIndex(self.options, function (item) {
555
+ return item === option ||
556
+ /** tree-select中会对option添加collapsed, visible属性,导致item === option不通过 */
557
+ isEqualWith__default["default"](item, option, function (source, target) {
558
+ return (source === null || source === void 0 ? void 0 : source[valueField]) != null &&
559
+ (target === null || target === void 0 ? void 0 : target[valueField]) != null &&
560
+ (source === null || source === void 0 ? void 0 : source[labelField]) === (target === null || target === void 0 ? void 0 : target[labelField]) &&
561
+ (source === null || source === void 0 ? void 0 : source[valueField]) === (target === null || target === void 0 ? void 0 : target[valueField]);
562
+ });
563
+ });
564
+ if (!!indexes) return [3 /*break*/, 2];
565
+ leftOptions = (_a = self.options[0]) === null || _a === void 0 ? void 0 : _a.leftOptions;
566
+ return [4 /*yield*/, tryDeferLoadLeftOptions(option, leftOptions, api, data, config)];
567
+ case 1: return [2 /*return*/, _c.sent()];
568
+ case 2:
569
+ setOptions(helper.spliceTree(self.options, indexes, 1, tslib.__assign(tslib.__assign({}, option), { loading: true })), undefined, data);
570
+ return [4 /*yield*/, fetchOptions(api, data, tslib.__assign(tslib.__assign({}, config), { silent: true }), false)];
571
+ case 3:
572
+ json = _c.sent();
573
+ if (!json) {
574
+ setOptions(helper.spliceTree(self.options, indexes, 1, tslib.__assign(tslib.__assign({}, option), { loading: false, error: true })), undefined, data);
575
+ return [2 /*return*/];
576
+ }
577
+ options = ((_b = json.data) === null || _b === void 0 ? void 0 : _b.options) ||
578
+ json.data.items ||
579
+ json.data.rows ||
580
+ json.data ||
581
+ [];
582
+ setOptions(helper.spliceTree(self.options, indexes, 1, tslib.__assign(tslib.__assign({}, option), { loading: false, loaded: true, children: options })), undefined, data);
583
+ return [2 /*return*/, json];
584
+ }
585
+ });
586
+ });
587
+ /**
588
+ * 根据当前节点路径展开树形组件父节点
589
+ */
590
+ var expandTreeOptions = mobxStateTree.flow(function getInitData(nodePathArr, api, data, config) {
591
+ var traversedNode, _i, nodePathArr_1, nodePath, _loop_1, level;
592
+ var _a;
593
+ return tslib.__generator(this, function (_b) {
594
+ switch (_b.label) {
595
+ case 0:
596
+ traversedNode = new Map();
597
+ _i = 0, nodePathArr_1 = nodePathArr;
598
+ _b.label = 1;
599
+ case 1:
600
+ if (!(_i < nodePathArr_1.length)) return [3 /*break*/, 6];
601
+ nodePath = nodePathArr_1[_i];
602
+ // 根节点已经展开了,不需要加载
603
+ if (nodePath.length <= 1) {
604
+ return [3 /*break*/, 5];
605
+ }
606
+ _loop_1 = function (level) {
607
+ var tree, nodeValue, node, indexes, json, childrenOptions;
608
+ return tslib.__generator(this, function (_c) {
609
+ switch (_c.label) {
610
+ case 0:
611
+ tree = self.options.concat();
612
+ nodeValue = nodePath[level];
613
+ if (traversedNode.has(nodeValue)) {
614
+ return [2 /*return*/, "continue"];
615
+ }
616
+ node = helper.findTree(tree, function (item, key, treeLevel) {
617
+ return (treeLevel === level + 1 &&
618
+ optionValueCompare.optionValueCompare(nodeValue, self.valueField || 'value')(item));
619
+ });
620
+ // 只处理懒加载节点
621
+ if (!node || !node.defer) {
622
+ return [2 /*return*/, "continue"];
623
+ }
624
+ indexes = helper.findTreeIndex(tree, function (item) { return item === node; });
625
+ setOptions(helper.spliceTree(tree, indexes, 1, tslib.__assign(tslib.__assign({}, node), { loading: true })), undefined, node);
626
+ return [4 /*yield*/, fetchOptions(api, node, tslib.__assign(tslib.__assign({}, config), { silent: true }), false)];
627
+ case 1:
628
+ json = _c.sent();
629
+ if (!json) {
630
+ setOptions(helper.spliceTree(tree, indexes, 1, tslib.__assign(tslib.__assign({}, node), { loading: false, error: true })), undefined, node);
631
+ }
632
+ traversedNode.set(nodeValue, true);
633
+ childrenOptions = ((_a = json.data) === null || _a === void 0 ? void 0 : _a.options) ||
634
+ json.data.items ||
635
+ json.data.rows ||
636
+ json.data ||
637
+ [];
638
+ setOptions(helper.spliceTree(tree, indexes, 1, tslib.__assign(tslib.__assign({}, node), { loading: false, loaded: true, children: childrenOptions })), undefined, node);
639
+ return [2 /*return*/];
640
+ }
641
+ });
642
+ };
643
+ level = 0;
644
+ _b.label = 2;
645
+ case 2:
646
+ if (!(level < nodePath.length - 1)) return [3 /*break*/, 5];
647
+ return [5 /*yield**/, _loop_1(level)];
648
+ case 3:
649
+ _b.sent();
650
+ _b.label = 4;
651
+ case 4:
652
+ level++;
653
+ return [3 /*break*/, 2];
654
+ case 5:
655
+ _i++;
656
+ return [3 /*break*/, 1];
657
+ case 6: return [2 /*return*/];
658
+ }
659
+ });
660
+ });
661
+ // @issue 强依赖form,需要改造暂且放过。
662
+ function syncOptions(originOptions, data) {
663
+ var _a;
664
+ if (!self.options.length && typeof self.value === 'undefined') {
665
+ self.selectedOptions = [];
666
+ self.filteredOptions = [];
667
+ return;
668
+ }
669
+ var value = self.tmpValue;
670
+ var selected = Array.isArray(value)
671
+ ? value.map(function (item) {
672
+ return item && item.hasOwnProperty(self.valueField || 'value')
673
+ ? item[self.valueField || 'value']
674
+ : item;
675
+ })
676
+ : typeof value === 'string'
677
+ ? value.split(self.delimiter || ',')
678
+ : value === void 0
679
+ ? []
680
+ : [
681
+ value && value.hasOwnProperty(self.valueField || 'value')
682
+ ? value[self.valueField || 'value']
683
+ : value
684
+ ];
685
+ if (value && value.hasOwnProperty(self.labelField || 'label')) {
686
+ selected[0] = (_a = {},
687
+ _a[self.labelField || 'label'] = value[self.labelField || 'label'],
688
+ _a[self.valueField || 'value'] = value[self.valueField || 'value'],
689
+ _a);
690
+ }
691
+ var expressionsInOptions = false;
692
+ var filteredOptions = self.options
693
+ .filter(function (item) {
694
+ if (!expressionsInOptions &&
695
+ (item.visibleOn || item.hiddenOn || item.disabledOn)) {
696
+ expressionsInOptions = true;
697
+ }
698
+ return item.visibleOn
699
+ ? tpl.evalExpression(item.visibleOn, data) !== false
700
+ : item.hiddenOn
701
+ ? tpl.evalExpression(item.hiddenOn, data) !== true
702
+ : item.visible !== false || item.hidden !== true;
703
+ })
704
+ .map(function (item, index) {
705
+ var disabled = tpl.evalExpression(item.disabledOn, data);
706
+ var newItem = item.disabledOn
707
+ ? self.filteredOptions.length > index &&
708
+ self.filteredOptions[index].disabled === disabled
709
+ ? self.filteredOptions[index]
710
+ : tslib.__assign(tslib.__assign({}, item), { disabled: disabled })
711
+ : item;
712
+ return newItem;
713
+ });
714
+ self.expressionsInOptions = expressionsInOptions;
715
+ var flattened = helper.flattenTree(filteredOptions);
716
+ var selectedOptions = [];
717
+ selected.forEach(function (item, index) {
718
+ var _a, _b;
719
+ var idx = findIndex__default["default"](flattened, optionValueCompare.optionValueCompare(item, self.valueField || 'value'));
720
+ if (~idx) {
721
+ selectedOptions.push(flattened[idx]);
722
+ }
723
+ else {
724
+ var unMatched = (value && value[index]) || item;
725
+ if (unMatched &&
726
+ (typeof unMatched === 'string' || typeof unMatched === 'number')) {
727
+ unMatched = (_a = {},
728
+ _a[self.valueField || 'value'] = item,
729
+ _a[self.labelField || 'label'] = item,
730
+ _a.__unmatched = true,
731
+ _a);
732
+ var orgin = originOptions &&
733
+ find__default["default"](originOptions, optionValueCompare.optionValueCompare(item, self.valueField || 'value'));
734
+ if (orgin) {
735
+ unMatched[self.labelField || 'label'] =
736
+ orgin[self.labelField || 'label'];
737
+ }
738
+ }
739
+ else if (unMatched && self.extractValue) {
740
+ unMatched = (_b = {},
741
+ _b[self.valueField || 'value'] = item,
742
+ _b[self.labelField || 'label'] = 'UnKnown',
743
+ _b.__unmatched = true,
744
+ _b);
745
+ }
746
+ unMatched && selectedOptions.push(unMatched);
747
+ }
748
+ });
749
+ var form = self.form;
750
+ var parentStore = form === null || form === void 0 ? void 0 : form.parentStore;
751
+ if ((parentStore === null || parentStore === void 0 ? void 0 : parentStore.storeType) === combo.ComboStore.name) {
752
+ var combo$1 = parentStore;
753
+ var group = combo$1.uniques.get(self.name);
754
+ var options_2 = [];
755
+ group &&
756
+ group.items.forEach(function (item) {
757
+ if (self !== item) {
758
+ options_2.push.apply(options_2, item.selectedOptions.map(function (item) { return item && item.value; }));
759
+ }
760
+ });
761
+ if (filteredOptions.length) {
762
+ filteredOptions = filteredOptions.filter(function (option) { return !~options_2.indexOf(option.value); });
763
+ }
764
+ }
765
+ helper.isArrayChildrenModified(self.selectedOptions, selectedOptions) &&
766
+ (self.selectedOptions = selectedOptions);
767
+ helper.isArrayChildrenModified(self.filteredOptions, filteredOptions) &&
768
+ (self.filteredOptions = filteredOptions);
769
+ }
770
+ function setLoading(value) {
771
+ self.loading = value;
772
+ }
773
+ var subStore;
774
+ function getSubStore() {
775
+ return subStore;
776
+ }
777
+ function setSubStore(store) {
778
+ subStore = store;
779
+ }
780
+ function reset(keepErrors) {
781
+ if (keepErrors === void 0) { keepErrors = false; }
782
+ self.validated = false;
783
+ if (subStore && subStore.storeType === 'ComboStore') {
784
+ var combo = subStore;
785
+ combo.forms.forEach(function (form) { return form.reset(); });
786
+ }
787
+ !keepErrors && clearError();
788
+ }
789
+ function openDialog(schema, data, callback) {
790
+ self.dialogSchema = schema;
791
+ self.dialogData = data;
792
+ self.dialogOpen = true;
793
+ callback && dialogCallbacks.set(self.dialogData, callback);
794
+ }
795
+ function closeDialog(result) {
796
+ var callback = dialogCallbacks.get(self.dialogData);
797
+ self.dialogOpen = false;
798
+ if (callback) {
799
+ dialogCallbacks.delete(self.dialogData);
800
+ setTimeout(function () { return callback(result); }, 200);
801
+ }
802
+ }
803
+ function changeTmpValue(value) {
804
+ self.tmpValue = value;
805
+ }
806
+ function changeEmitedValue(value) {
807
+ self.emitedValue = value;
808
+ }
809
+ function addSubFormItem(item) {
810
+ self.itemsRef.push(item.id);
811
+ }
812
+ function removeSubFormItem(item) {
813
+ var idx = self.itemsRef.findIndex(function (a) { return a === item.id; });
814
+ if (~idx) {
815
+ self.itemsRef.splice(idx, 1);
816
+ }
817
+ }
818
+ return {
819
+ focus: focus,
820
+ blur: blur,
821
+ config: config,
822
+ validate: validate,
823
+ setError: setError,
824
+ addError: addError,
825
+ clearError: clearError,
826
+ setOptions: setOptions,
827
+ loadOptions: loadOptions,
828
+ deferLoadOptions: deferLoadOptions,
829
+ deferLoadLeftOptions: deferLoadLeftOptions,
830
+ expandTreeOptions: expandTreeOptions,
831
+ syncOptions: syncOptions,
832
+ setLoading: setLoading,
833
+ setSubStore: setSubStore,
834
+ getSubStore: getSubStore,
835
+ reset: reset,
836
+ openDialog: openDialog,
837
+ closeDialog: closeDialog,
838
+ changeTmpValue: changeTmpValue,
839
+ changeEmitedValue: changeEmitedValue,
840
+ addSubFormItem: addSubFormItem,
841
+ removeSubFormItem: removeSubFormItem,
842
+ loadAutoUpdateData: loadAutoUpdateData
843
+ };
844
+ });
845
+
846
+ exports.FormItemStore = FormItemStore;