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,881 @@
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 api = require('../utils/api.js');
12
+ var mobxStateTree = require('mobx-state-tree');
13
+ var helper = require('../utils/helper.js');
14
+ var mobx = require('mobx');
15
+ var Item = require('./Item.js');
16
+ var React = require('react');
17
+ require('amis-formula');
18
+ require('moment');
19
+ var object = require('../utils/object.js');
20
+ var isPureVariable = require('../utils/isPureVariable.js');
21
+ var resolveVariableAndFilter = require('../utils/resolveVariableAndFilter.js');
22
+ var dataMapping = require('../utils/dataMapping.js');
23
+ require('../utils/filter.js');
24
+ var tpl = require('../utils/tpl.js');
25
+ var findIndex = require('lodash/findIndex');
26
+ var isPlainObject = require('lodash/isPlainObject');
27
+ var merge = require('lodash/merge');
28
+ var normalizeOptions = require('../utils/normalizeOptions.js');
29
+ var optionValueCompare = require('../utils/optionValueCompare.js');
30
+
31
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
32
+
33
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
34
+ var findIndex__default = /*#__PURE__*/_interopDefaultLegacy(findIndex);
35
+ var isPlainObject__default = /*#__PURE__*/_interopDefaultLegacy(isPlainObject);
36
+ var merge__default = /*#__PURE__*/_interopDefaultLegacy(merge);
37
+
38
+ var detectProps = Item.detectProps.concat([
39
+ 'value',
40
+ 'options',
41
+ 'size',
42
+ 'buttons',
43
+ 'columnsCount',
44
+ 'multiple',
45
+ 'hideRoot',
46
+ 'checkAll',
47
+ 'defaultCheckAll',
48
+ 'showIcon',
49
+ 'showRadio',
50
+ 'btnDisabled',
51
+ 'joinValues',
52
+ 'extractValue',
53
+ 'borderMode',
54
+ 'hideSelected'
55
+ ]);
56
+ function registerOptionsControl(config) {
57
+ var Control = config.component;
58
+ var FormOptionsItem = /** @class */ (function (_super) {
59
+ tslib.__extends(FormOptionsItem, _super);
60
+ function FormOptionsItem(props) {
61
+ var _this = this;
62
+ var _a;
63
+ _this = _super.call(this, props) || this;
64
+ _this.toDispose = [];
65
+ _this.mounted = false;
66
+ var initFetch = props.initFetch, formItem = props.formItem, source = props.source, data = props.data, setPrinstineValue = props.setPrinstineValue, defaultValue = props.defaultValue, multiple = props.multiple, joinValues = props.joinValues, extractValue = props.extractValue, addHook = props.addHook, formInited = props.formInited, valueField = props.valueField, options = props.options, value = props.value, defaultCheckAll = props.defaultCheckAll;
67
+ if (formItem) {
68
+ formItem.setOptions(normalizeOptions.normalizeOptions(options, undefined, valueField), _this.changeOptionValue, data);
69
+ _this.toDispose.push(mobx.reaction(function () { return JSON.stringify([formItem.loading, formItem.filteredOptions]); }, function () { return _this.mounted && _this.forceUpdate(); }));
70
+ _this.toDispose.push(mobx.reaction(function () { return JSON.stringify(formItem.options); }, function () { return _this.mounted && _this.syncAutoFill(formItem.tmpValue); }));
71
+ // 默认全选。这里会和默认值\回填值逻辑冲突,所以如果有配置source则不执行默认全选
72
+ if (multiple &&
73
+ defaultCheckAll &&
74
+ ((_a = formItem.filteredOptions) === null || _a === void 0 ? void 0 : _a.length) &&
75
+ !source) {
76
+ _this.defaultCheckAll();
77
+ }
78
+ }
79
+ var loadOptions = initFetch !== false;
80
+ if (formItem && joinValues === false && defaultValue) {
81
+ var selectedOptions = extractValue
82
+ ? formItem
83
+ .getSelectedOptions(value)
84
+ .map(function (selectedOption) {
85
+ return selectedOption[valueField || 'value'];
86
+ })
87
+ : formItem.getSelectedOptions(value);
88
+ setPrinstineValue(multiple ? selectedOptions.concat() : selectedOptions[0]);
89
+ }
90
+ loadOptions &&
91
+ config.autoLoadOptionsFromSource !== false &&
92
+ (formInited || !addHook
93
+ ? _this.reload()
94
+ : addHook && addHook(_this.initOptions, 'init'));
95
+ return _this;
96
+ }
97
+ FormOptionsItem.prototype.componentDidMount = function () {
98
+ this.mounted = true;
99
+ this.normalizeValue();
100
+ if (this.props.value) {
101
+ this.syncAutoFill(this.props.value);
102
+ }
103
+ };
104
+ FormOptionsItem.prototype.shouldComponentUpdate = function (nextProps) {
105
+ var _a;
106
+ if (config.strictMode === false || nextProps.strictMode === false) {
107
+ return true;
108
+ }
109
+ else if (nextProps.source || nextProps.autoComplete) {
110
+ return true;
111
+ }
112
+ else if ((_a = nextProps.formItem) === null || _a === void 0 ? void 0 : _a.expressionsInOptions) {
113
+ return true;
114
+ }
115
+ if (helper.anyChanged(detectProps, this.props, nextProps)) {
116
+ return true;
117
+ }
118
+ return false;
119
+ };
120
+ FormOptionsItem.prototype.componentDidUpdate = function (prevProps) {
121
+ var _this = this;
122
+ var props = this.props;
123
+ var formItem = props.formItem;
124
+ if (prevProps.options !== props.options && formItem) {
125
+ formItem.setOptions(normalizeOptions.normalizeOptions(props.options || [], undefined, props.valueField), this.changeOptionValue, props.data);
126
+ this.normalizeValue();
127
+ }
128
+ else if (config.autoLoadOptionsFromSource !== false &&
129
+ (props.formInited || typeof props.formInited === 'undefined') &&
130
+ props.source &&
131
+ formItem &&
132
+ (prevProps.source !== props.source || prevProps.data !== props.data)) {
133
+ if (isPureVariable.isPureVariable(props.source)) {
134
+ var prevOptions = resolveVariableAndFilter.resolveVariableAndFilter(prevProps.source, prevProps.data, '| raw');
135
+ var options = resolveVariableAndFilter.resolveVariableAndFilter(props.source, props.data, '| raw');
136
+ if (prevOptions !== options) {
137
+ formItem.setOptions(normalizeOptions.normalizeOptions(options || [], undefined, props.valueField || 'value'), this.changeOptionValue, props.data);
138
+ this.normalizeValue();
139
+ }
140
+ }
141
+ else if (api.isEffectiveApi(props.source, props.data) &&
142
+ api.isApiOutdated(prevProps.source, props.source, prevProps.data, props.data)) {
143
+ formItem
144
+ .loadOptions(props.source, props.data, undefined, true, this.changeOptionValue)
145
+ .then(function () { return _this.normalizeValue(); });
146
+ }
147
+ }
148
+ if (prevProps.value !== props.value || (formItem === null || formItem === void 0 ? void 0 : formItem.expressionsInOptions)) {
149
+ formItem.syncOptions(undefined, props.data);
150
+ this.syncAutoFill(props.value);
151
+ }
152
+ };
153
+ FormOptionsItem.prototype.componentWillUnmount = function () {
154
+ var _a, _b;
155
+ (_b = (_a = this.props).removeHook) === null || _b === void 0 ? void 0 : _b.call(_a, this.reload, 'init');
156
+ this.toDispose.forEach(function (fn) { return fn(); });
157
+ this.toDispose = [];
158
+ };
159
+ FormOptionsItem.prototype.dispatchOptionEvent = function (eventName, eventData) {
160
+ if (eventData === void 0) { eventData = ''; }
161
+ return tslib.__awaiter(this, void 0, void 0, function () {
162
+ var _a, dispatchEvent, options, data, rendererEvent;
163
+ return tslib.__generator(this, function (_b) {
164
+ switch (_b.label) {
165
+ case 0:
166
+ _a = this.props, dispatchEvent = _a.dispatchEvent, options = _a.options, data = _a.data;
167
+ return [4 /*yield*/, dispatchEvent(eventName, object.createObject(data, {
168
+ value: eventData,
169
+ options: options
170
+ }))];
171
+ case 1:
172
+ rendererEvent = _b.sent();
173
+ // 返回阻塞标识
174
+ return [2 /*return*/, !!(rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented)];
175
+ }
176
+ });
177
+ });
178
+ };
179
+ FormOptionsItem.prototype.doAction = function (action, data, throwErrors) {
180
+ var _a = this.props, resetValue = _a.resetValue, onChange = _a.onChange;
181
+ var actionType = action === null || action === void 0 ? void 0 : action.actionType;
182
+ if (actionType === 'clear') {
183
+ onChange === null || onChange === void 0 ? void 0 : onChange('');
184
+ }
185
+ else if (actionType === 'reset') {
186
+ onChange === null || onChange === void 0 ? void 0 : onChange(resetValue !== null && resetValue !== void 0 ? resetValue : '');
187
+ }
188
+ };
189
+ FormOptionsItem.prototype.syncAutoFill = function (value) {
190
+ var _a = this.props, autoFill = _a.autoFill, multiple = _a.multiple, onBulkChange = _a.onBulkChange, data = _a.data;
191
+ var formItem = this.props.formItem;
192
+ if (onBulkChange &&
193
+ autoFill &&
194
+ !helper.isEmpty(autoFill) &&
195
+ formItem.filteredOptions.length) {
196
+ var selectedOptions = formItem.getSelectedOptions(value);
197
+ var toSync_1 = dataMapping.dataMapping(autoFill, multiple
198
+ ? {
199
+ items: selectedOptions.map(function (item) {
200
+ return object.createObject(tslib.__assign(tslib.__assign({}, data), { ancestors: helper.getTreeAncestors(formItem.filteredOptions, item, true) }), item);
201
+ })
202
+ }
203
+ : object.createObject(tslib.__assign(tslib.__assign({}, data), { ancestors: helper.getTreeAncestors(formItem.filteredOptions, selectedOptions[0], true) }), selectedOptions[0]));
204
+ Object.keys(toSync_1).forEach(function (key) {
205
+ if (isPlainObject__default["default"](toSync_1[key]) && isPlainObject__default["default"](data[key])) {
206
+ toSync_1[key] = merge__default["default"]({}, data[key], toSync_1[key]);
207
+ }
208
+ });
209
+ onBulkChange(toSync_1);
210
+ }
211
+ };
212
+ // 当前值,跟设置预期的值格式不一致时自动转换。
213
+ FormOptionsItem.prototype.normalizeValue = function () {
214
+ var _a = this.props, joinValues = _a.joinValues, extractValue = _a.extractValue, value = _a.value, multiple = _a.multiple, formItem = _a.formItem, valueField = _a.valueField; _a.enableNodePath; _a.pathSeparator; var onChange = _a.onChange;
215
+ if (!formItem || joinValues !== false || !formItem.options.length) {
216
+ return;
217
+ }
218
+ if (extractValue === false &&
219
+ (typeof value === 'string' || typeof value === 'number')) {
220
+ var selectedOptions = formItem.getSelectedOptions(value);
221
+ onChange === null || onChange === void 0 ? void 0 : onChange(multiple ? selectedOptions.concat() : selectedOptions[0]);
222
+ }
223
+ else if (extractValue === true &&
224
+ value &&
225
+ !((Array.isArray(value) &&
226
+ value.every(function (val) { return typeof val === 'string' || typeof val === 'number'; })) ||
227
+ typeof value === 'string' ||
228
+ typeof value === 'number')) {
229
+ var selectedOptions = formItem
230
+ .getSelectedOptions(value)
231
+ .map(function (selectedOption) { return selectedOption[valueField || 'value']; });
232
+ onChange === null || onChange === void 0 ? void 0 : onChange(multiple ? selectedOptions.concat() : selectedOptions[0]);
233
+ }
234
+ };
235
+ FormOptionsItem.prototype.getWrappedInstance = function () {
236
+ return this.input;
237
+ };
238
+ FormOptionsItem.prototype.inputRef = function (ref) {
239
+ this.input = ref;
240
+ };
241
+ FormOptionsItem.prototype.handleToggle = function (option, submitOnChange, changeImmediately) {
242
+ return tslib.__awaiter(this, void 0, void 0, function () {
243
+ var _a, onChange, formItem, value, newValue, isPrevented;
244
+ return tslib.__generator(this, function (_b) {
245
+ switch (_b.label) {
246
+ case 0:
247
+ _a = this.props, onChange = _a.onChange, formItem = _a.formItem, value = _a.value;
248
+ if (!formItem) {
249
+ return [2 /*return*/];
250
+ }
251
+ newValue = this.toggleValue(option, value);
252
+ return [4 /*yield*/, this.dispatchOptionEvent('change', newValue)];
253
+ case 1:
254
+ isPrevented = _b.sent();
255
+ isPrevented ||
256
+ (onChange && onChange(newValue, submitOnChange, changeImmediately));
257
+ return [2 /*return*/];
258
+ }
259
+ });
260
+ });
261
+ };
262
+ /**
263
+ * 初始化时处理默认全选逻辑
264
+ */
265
+ FormOptionsItem.prototype.defaultCheckAll = function () {
266
+ var _a = this.props, value = _a.value, formItem = _a.formItem, setPrinstineValue = _a.setPrinstineValue;
267
+ // 如果有默认值\回填值直接返回
268
+ if (!formItem || formItem.getSelectedOptions(value).length) {
269
+ return;
270
+ }
271
+ var valueArray = formItem.filteredOptions.concat();
272
+ var newValue = this.formatValueArray(valueArray);
273
+ setPrinstineValue === null || setPrinstineValue === void 0 ? void 0 : setPrinstineValue(newValue);
274
+ };
275
+ /**
276
+ * 选中的值经过joinValues和delimiter等规则处理输出规定格式的值
277
+ * @param valueArray 选中值的数组
278
+ * @returns 通过joinValues和delimiter等规则输出规定格式的值
279
+ */
280
+ FormOptionsItem.prototype.formatValueArray = function (valueArray) {
281
+ var _a = this.props, joinValues = _a.joinValues, extractValue = _a.extractValue, valueField = _a.valueField, delimiter = _a.delimiter, resetValue = _a.resetValue, multiple = _a.multiple;
282
+ var newValue = '';
283
+ if (multiple) {
284
+ /** 兼容tree数据结构 */
285
+ newValue =
286
+ helper.getTreeDepth(valueArray) > 1 ? helper.flattenTree(valueArray) : valueArray;
287
+ if (joinValues) {
288
+ newValue = newValue
289
+ .map(function (item) { return item[valueField || 'value']; })
290
+ .filter(function (item) { return item != null; }) /** tree的父节点可能没有value值 */
291
+ .join(delimiter);
292
+ }
293
+ else if (extractValue) {
294
+ newValue = newValue
295
+ .map(function (item) { return item[valueField || 'value']; })
296
+ .filter(function (item) { return item != null; });
297
+ }
298
+ }
299
+ else {
300
+ newValue = valueArray[0] || resetValue;
301
+ if (joinValues && newValue) {
302
+ newValue = newValue[valueField || 'value'];
303
+ }
304
+ }
305
+ return newValue;
306
+ };
307
+ FormOptionsItem.prototype.handleToggleAll = function () {
308
+ return tslib.__awaiter(this, void 0, void 0, function () {
309
+ var _a, value, onChange, formItem, valueField, selectedOptions, filteredOptions, valueArray, newValue, isPrevented;
310
+ return tslib.__generator(this, function (_b) {
311
+ switch (_b.label) {
312
+ case 0:
313
+ _a = this.props, value = _a.value, onChange = _a.onChange, formItem = _a.formItem, valueField = _a.valueField;
314
+ if (!formItem) {
315
+ return [2 /*return*/];
316
+ }
317
+ selectedOptions = formItem.getSelectedOptions(value);
318
+ filteredOptions = helper.flattenTree(formItem.filteredOptions.concat()).filter(function (item) { return item != null && item[valueField || 'value'] != null; });
319
+ valueArray = selectedOptions.length === filteredOptions.length
320
+ ? []
321
+ : formItem.filteredOptions.concat();
322
+ newValue = this.formatValueArray(valueArray);
323
+ return [4 /*yield*/, this.dispatchOptionEvent('change', newValue)];
324
+ case 1:
325
+ isPrevented = _b.sent();
326
+ isPrevented || (onChange && onChange(newValue));
327
+ return [2 /*return*/];
328
+ }
329
+ });
330
+ });
331
+ };
332
+ FormOptionsItem.prototype.toggleValue = function (option, originValue) {
333
+ var _a = this.props, joinValues = _a.joinValues, extractValue = _a.extractValue, valueField = _a.valueField, delimiter = _a.delimiter, clearable = _a.clearable, resetValue = _a.resetValue, multiple = _a.multiple, formItem = _a.formItem;
334
+ var valueArray = originValue !== undefined
335
+ ? formItem.getSelectedOptions(originValue).concat()
336
+ : [];
337
+ var idx = findIndex__default["default"](valueArray, optionValueCompare.optionValueCompare(option[valueField || 'value'], valueField || 'value'));
338
+ var newValue = '';
339
+ if (multiple) {
340
+ if (~idx) {
341
+ valueArray.splice(idx, 1);
342
+ }
343
+ else {
344
+ valueArray.push(option);
345
+ }
346
+ newValue = valueArray;
347
+ if (joinValues) {
348
+ newValue = newValue
349
+ .map(function (item) { return item[valueField || 'value']; })
350
+ .join(delimiter);
351
+ }
352
+ else if (extractValue) {
353
+ newValue = newValue.map(function (item) { return item[valueField || 'value']; });
354
+ }
355
+ }
356
+ else {
357
+ if (~idx && clearable) {
358
+ valueArray.splice(idx, 1);
359
+ }
360
+ else {
361
+ valueArray = [option];
362
+ }
363
+ newValue = valueArray[0] || resetValue;
364
+ if ((joinValues || extractValue) && newValue) {
365
+ newValue = newValue[valueField || 'value'];
366
+ }
367
+ }
368
+ return newValue;
369
+ };
370
+ // 当有 action 触发,如果指定了 reload 目标组件,有可能会来到这里面来
371
+ FormOptionsItem.prototype.reload = function () {
372
+ return this.reloadOptions();
373
+ };
374
+ FormOptionsItem.prototype.reloadOptions = function (setError, isInit) {
375
+ if (isInit === void 0) { isInit = false; }
376
+ var _a = this.props, source = _a.source, formItem = _a.formItem, data = _a.data, onChange = _a.onChange, setPrinstineValue = _a.setPrinstineValue, valueField = _a.valueField;
377
+ if (formItem && isPureVariable.isPureVariable(source)) {
378
+ mobxStateTree.isAlive(formItem) &&
379
+ formItem.setOptions(normalizeOptions.normalizeOptions(resolveVariableAndFilter.resolveVariableAndFilter(source, data, '| raw') || [], undefined, valueField), this.changeOptionValue, data);
380
+ return;
381
+ }
382
+ else if (!formItem || !api.isEffectiveApi(source, data)) {
383
+ return;
384
+ }
385
+ return formItem.loadOptions(source, data, undefined, false, isInit ? setPrinstineValue : onChange, setError);
386
+ };
387
+ FormOptionsItem.prototype.deferLoad = function (option) {
388
+ return tslib.__awaiter(this, void 0, void 0, function () {
389
+ var _a, deferApi, source, env, formItem, data, api, json;
390
+ return tslib.__generator(this, function (_b) {
391
+ switch (_b.label) {
392
+ case 0:
393
+ _a = this.props, deferApi = _a.deferApi, source = _a.source, env = _a.env, formItem = _a.formItem, data = _a.data;
394
+ api = option.deferApi || deferApi || source;
395
+ if (!api) {
396
+ env.notify('error', '请在选项中设置 `deferApi` 或者表单项中设置 `deferApi`,用来加载子选项。');
397
+ return [2 /*return*/];
398
+ }
399
+ return [4 /*yield*/, (formItem === null || formItem === void 0 ? void 0 : formItem.deferLoadOptions(option, api, object.createObject(data, option)))];
400
+ case 1:
401
+ json = _b.sent();
402
+ // 触发事件通知,加载完成
403
+ this.dispatchOptionEvent('loadFinished', json);
404
+ return [2 /*return*/];
405
+ }
406
+ });
407
+ });
408
+ };
409
+ FormOptionsItem.prototype.leftDeferLoad = function (option, leftOptions) {
410
+ var _a = this.props, deferApi = _a.deferApi, source = _a.source, env = _a.env, formItem = _a.formItem, data = _a.data;
411
+ var api = option.deferApi || deferApi || source;
412
+ if (!api) {
413
+ env.notify('error', '请在选项中设置 `deferApi` 或者表单项中设置 `deferApi`,用来加载子选项。');
414
+ return;
415
+ }
416
+ formItem === null || formItem === void 0 ? void 0 : formItem.deferLoadLeftOptions(option, leftOptions, api, object.createObject(data, option));
417
+ };
418
+ FormOptionsItem.prototype.expandTreeOptions = function (nodePathArr) {
419
+ var _a = this.props, deferApi = _a.deferApi, source = _a.source, env = _a.env, formItem = _a.formItem, data = _a.data;
420
+ var api = deferApi || source;
421
+ if (!api) {
422
+ env.notify('error', '请在选项中设置 `deferApi` 或者表单项中设置 `deferApi`,用来加载子选项。');
423
+ return;
424
+ }
425
+ formItem === null || formItem === void 0 ? void 0 : formItem.expandTreeOptions(nodePathArr, api, object.createObject(data));
426
+ };
427
+ FormOptionsItem.prototype.initOptions = function (data) {
428
+ var _a;
429
+ return tslib.__awaiter(this, void 0, void 0, function () {
430
+ var _b, formItem, name, multiple, defaultCheckAll;
431
+ return tslib.__generator(this, function (_c) {
432
+ switch (_c.label) {
433
+ case 0: return [4 /*yield*/, this.reloadOptions(false, true)];
434
+ case 1:
435
+ _c.sent();
436
+ _b = this.props, formItem = _b.formItem, name = _b.name, multiple = _b.multiple, defaultCheckAll = _b.defaultCheckAll;
437
+ if (!formItem) {
438
+ return [2 /*return*/];
439
+ }
440
+ if (mobxStateTree.isAlive(formItem) && formItem.value) {
441
+ object.setVariable(data, name, formItem.value);
442
+ }
443
+ // 默认全选
444
+ if (multiple && defaultCheckAll && ((_a = formItem.filteredOptions) === null || _a === void 0 ? void 0 : _a.length)) {
445
+ this.defaultCheckAll();
446
+ }
447
+ return [2 /*return*/];
448
+ }
449
+ });
450
+ });
451
+ };
452
+ FormOptionsItem.prototype.focus = function () {
453
+ this.input && this.input.focus && this.input.focus();
454
+ };
455
+ FormOptionsItem.prototype.changeOptionValue = function (value) {
456
+ var _a = this.props, onChange = _a.onChange, formInited = _a.formInited, setPrinstineValue = _a.setPrinstineValue, originValue = _a.value;
457
+ if (formInited === false) {
458
+ originValue === undefined && (setPrinstineValue === null || setPrinstineValue === void 0 ? void 0 : setPrinstineValue(value));
459
+ }
460
+ else {
461
+ onChange === null || onChange === void 0 ? void 0 : onChange(value);
462
+ }
463
+ };
464
+ FormOptionsItem.prototype.setOptions = function (options, skipNormalize) {
465
+ if (skipNormalize === void 0) { skipNormalize = false; }
466
+ var formItem = this.props.formItem;
467
+ formItem &&
468
+ formItem.setOptions(skipNormalize
469
+ ? options
470
+ : normalizeOptions.normalizeOptions(options || [], undefined, this.props.valueField), this.changeOptionValue, this.props.data);
471
+ };
472
+ FormOptionsItem.prototype.syncOptions = function () {
473
+ var formItem = this.props.formItem;
474
+ formItem && formItem.syncOptions(undefined, this.props.data);
475
+ };
476
+ FormOptionsItem.prototype.setLoading = function (value) {
477
+ var formItem = this.props.formItem;
478
+ formItem && formItem.setLoading(value);
479
+ };
480
+ FormOptionsItem.prototype.handleOptionAdd = function (idx, value, skipForm) {
481
+ if (idx === void 0) { idx = -1; }
482
+ if (skipForm === void 0) { skipForm = false; }
483
+ return tslib.__awaiter(this, void 0, void 0, function () {
484
+ var _a, addControls, disabled, labelField, onOpenDialog, optionLabel, addApi, source, data, valueField, model, createBtnLabel, env, __, parent, ctx, result, _b, payload, e_1, isPrevented, options;
485
+ var _c;
486
+ return tslib.__generator(this, function (_d) {
487
+ switch (_d.label) {
488
+ case 0:
489
+ _a = this.props, addControls = _a.addControls, disabled = _a.disabled, labelField = _a.labelField, onOpenDialog = _a.onOpenDialog, optionLabel = _a.optionLabel, addApi = _a.addApi, source = _a.source, data = _a.data, valueField = _a.valueField, model = _a.formItem, createBtnLabel = _a.createBtnLabel, env = _a.env, __ = _a.translate;
490
+ // 禁用或者没有配置 name
491
+ if (disabled || !model) {
492
+ return [2 /*return*/];
493
+ }
494
+ // 用户没有配置表单项,则自动创建一个 label 输入
495
+ if (!skipForm && (!Array.isArray(addControls) || !addControls.length)) {
496
+ addControls = [
497
+ {
498
+ type: 'text',
499
+ name: labelField || 'label',
500
+ label: false,
501
+ required: true,
502
+ placeholder: __('Options.addPlaceholder')
503
+ }
504
+ ];
505
+ }
506
+ parent = Array.isArray(idx)
507
+ ? helper.getTree(model.options, idx.slice(0, -1))
508
+ : undefined;
509
+ ctx = object.createObject(data, Array.isArray(idx)
510
+ ? tslib.__assign({ parent: parent }, value) : value);
511
+ if (!skipForm) return [3 /*break*/, 1];
512
+ _b = ctx;
513
+ return [3 /*break*/, 3];
514
+ case 1: return [4 /*yield*/, onOpenDialog({
515
+ type: 'dialog',
516
+ title: createBtnLabel || "\u65B0\u589E".concat(optionLabel || '选项'),
517
+ body: {
518
+ type: 'form',
519
+ api: addApi,
520
+ controls: tslib.__spreadArray([
521
+ {
522
+ type: 'hidden',
523
+ name: 'idx',
524
+ value: idx
525
+ },
526
+ {
527
+ type: 'hidden',
528
+ name: 'parent',
529
+ value: parent
530
+ }
531
+ ], (addControls || []), true)
532
+ }
533
+ }, ctx)];
534
+ case 2:
535
+ _b = _d.sent();
536
+ _d.label = 3;
537
+ case 3:
538
+ result = _b;
539
+ if (!(skipForm && addApi)) return [3 /*break*/, 7];
540
+ _d.label = 4;
541
+ case 4:
542
+ _d.trys.push([4, 6, , 7]);
543
+ return [4 /*yield*/, env.fetcher(addApi, result, {
544
+ method: 'post'
545
+ })];
546
+ case 5:
547
+ payload = _d.sent();
548
+ if (!payload.ok) {
549
+ env.notify('error', payload.msg || __('Options.createFailed'));
550
+ result = null;
551
+ }
552
+ else {
553
+ result = payload.data || result;
554
+ }
555
+ return [3 /*break*/, 7];
556
+ case 6:
557
+ e_1 = _d.sent();
558
+ result = null;
559
+ console.error(e_1);
560
+ env.notify('error', e_1.message);
561
+ return [3 /*break*/, 7];
562
+ case 7:
563
+ // 有 result 说明弹框点了确认。否则就是取消了。
564
+ if (!result) {
565
+ return [2 /*return*/];
566
+ }
567
+ // 没走服务端的。
568
+ if (!result.hasOwnProperty(valueField || 'value')) {
569
+ result = tslib.__assign(tslib.__assign({}, result), (_c = {}, _c[valueField || 'value'] = result[labelField || 'label'], _c));
570
+ }
571
+ return [4 /*yield*/, this.dispatchOptionEvent('add', tslib.__assign(tslib.__assign({}, result), { idx: idx }))];
572
+ case 8:
573
+ isPrevented = _d.sent();
574
+ if (isPrevented) {
575
+ return [2 /*return*/];
576
+ }
577
+ if (!(parent === null || parent === void 0 ? void 0 : parent.defer)) return [3 /*break*/, 10];
578
+ return [4 /*yield*/, this.deferLoad(parent)];
579
+ case 9:
580
+ _d.sent();
581
+ return [3 /*break*/, 11];
582
+ case 10:
583
+ if (source && addApi) {
584
+ // 如果配置了 source 且配置了 addApi 直接重新拉取接口就够了
585
+ // 不能不判断 addApi 就刷新,因为有些场景就是临时添加的。
586
+ this.reload();
587
+ }
588
+ else {
589
+ options = model.options.concat();
590
+ if (Array.isArray(idx)) {
591
+ options = helper.spliceTree(options, idx, 0, tslib.__assign({}, result));
592
+ }
593
+ else {
594
+ ~idx
595
+ ? options.splice(idx, 0, tslib.__assign({}, result))
596
+ : options.push(tslib.__assign({}, result));
597
+ }
598
+ model.setOptions(options, this.changeOptionValue, data);
599
+ }
600
+ _d.label = 11;
601
+ case 11: return [2 /*return*/];
602
+ }
603
+ });
604
+ });
605
+ };
606
+ FormOptionsItem.prototype.handleOptionEdit = function (value, origin, skipForm) {
607
+ if (origin === void 0) { origin = value; }
608
+ if (skipForm === void 0) { skipForm = false; }
609
+ return tslib.__awaiter(this, void 0, void 0, function () {
610
+ var _a, editControls, disabled, labelField, onOpenDialog, editApi, env, source, data, model, optionLabel, __, result, _b, payload, e_2, isPrevented, indexes;
611
+ return tslib.__generator(this, function (_c) {
612
+ switch (_c.label) {
613
+ case 0:
614
+ _a = this.props, editControls = _a.editControls, disabled = _a.disabled, labelField = _a.labelField, onOpenDialog = _a.onOpenDialog, editApi = _a.editApi, env = _a.env, source = _a.source, data = _a.data, model = _a.formItem, optionLabel = _a.optionLabel, __ = _a.translate;
615
+ if (disabled || !model) {
616
+ return [2 /*return*/];
617
+ }
618
+ if (!skipForm && (!Array.isArray(editControls) || !editControls.length)) {
619
+ editControls = [
620
+ {
621
+ type: 'text',
622
+ name: labelField || 'label',
623
+ label: false,
624
+ placeholder: __('Options.addPlaceholder')
625
+ }
626
+ ];
627
+ }
628
+ if (!skipForm) return [3 /*break*/, 1];
629
+ _b = value;
630
+ return [3 /*break*/, 3];
631
+ case 1: return [4 /*yield*/, onOpenDialog({
632
+ type: 'dialog',
633
+ title: __('Options.editLabel', {
634
+ label: optionLabel || __('Options.label')
635
+ }),
636
+ body: {
637
+ type: 'form',
638
+ api: editApi,
639
+ controls: editControls
640
+ }
641
+ }, object.createObject(data, value))];
642
+ case 2:
643
+ _b = _c.sent();
644
+ _c.label = 3;
645
+ case 3:
646
+ result = _b;
647
+ if (!(skipForm && editApi)) return [3 /*break*/, 7];
648
+ _c.label = 4;
649
+ case 4:
650
+ _c.trys.push([4, 6, , 7]);
651
+ return [4 /*yield*/, env.fetcher(editApi, object.createObject(data, result), {
652
+ method: 'post'
653
+ })];
654
+ case 5:
655
+ payload = _c.sent();
656
+ if (!payload.ok) {
657
+ env.notify('error', payload.msg || __('saveFailed'));
658
+ result = null;
659
+ }
660
+ else {
661
+ result = payload.data || result;
662
+ }
663
+ return [3 /*break*/, 7];
664
+ case 6:
665
+ e_2 = _c.sent();
666
+ result = null;
667
+ console.error(e_2);
668
+ env.notify('error', e_2.message);
669
+ return [3 /*break*/, 7];
670
+ case 7:
671
+ // 没有结果,说明取消了。
672
+ if (!result) {
673
+ return [2 /*return*/];
674
+ }
675
+ return [4 /*yield*/, this.dispatchOptionEvent('edit', result)];
676
+ case 8:
677
+ isPrevented = _c.sent();
678
+ if (isPrevented) {
679
+ return [2 /*return*/];
680
+ }
681
+ if (source && editApi) {
682
+ this.reload();
683
+ }
684
+ else {
685
+ indexes = helper.findTreeIndex(model.options, function (item) { return item === origin; });
686
+ if (indexes) {
687
+ model.setOptions(helper.spliceTree(model.options, indexes, 1, tslib.__assign(tslib.__assign({}, origin), result)), this.changeOptionValue, data);
688
+ }
689
+ }
690
+ return [2 /*return*/];
691
+ }
692
+ });
693
+ });
694
+ };
695
+ FormOptionsItem.prototype.handleOptionDelete = function (value) {
696
+ return tslib.__awaiter(this, void 0, void 0, function () {
697
+ var _a, deleteConfirmText, disabled, data, deleteApi, env, model, source, valueField, __, ctx, confirmed, _b, isPrevented, result, options, indexes, e_3;
698
+ return tslib.__generator(this, function (_c) {
699
+ switch (_c.label) {
700
+ case 0:
701
+ _a = this.props, deleteConfirmText = _a.deleteConfirmText, disabled = _a.disabled, data = _a.data, deleteApi = _a.deleteApi, env = _a.env, model = _a.formItem, source = _a.source, valueField = _a.valueField, __ = _a.translate;
702
+ if (disabled || !model) {
703
+ return [2 /*return*/];
704
+ }
705
+ ctx = object.createObject(data, value);
706
+ if (!deleteConfirmText) return [3 /*break*/, 2];
707
+ return [4 /*yield*/, env.confirm(tpl.filter(__(deleteConfirmText), ctx))];
708
+ case 1:
709
+ _b = _c.sent();
710
+ return [3 /*break*/, 3];
711
+ case 2:
712
+ _b = true;
713
+ _c.label = 3;
714
+ case 3:
715
+ confirmed = _b;
716
+ if (!confirmed) {
717
+ return [2 /*return*/];
718
+ }
719
+ return [4 /*yield*/, this.dispatchOptionEvent('delete', ctx)];
720
+ case 4:
721
+ isPrevented = _c.sent();
722
+ if (isPrevented) {
723
+ return [2 /*return*/];
724
+ }
725
+ _c.label = 5;
726
+ case 5:
727
+ _c.trys.push([5, 7, , 8]);
728
+ if (!deleteApi) {
729
+ throw new Error(__('Options.deleteAPI'));
730
+ }
731
+ return [4 /*yield*/, env.fetcher(deleteApi, ctx, {
732
+ method: 'delete'
733
+ })];
734
+ case 6:
735
+ result = _c.sent();
736
+ if (!result.ok) {
737
+ env.notify('error', result.msg || __('deleteFailed'));
738
+ }
739
+ else if (source) {
740
+ this.reload();
741
+ }
742
+ else {
743
+ options = model.options.concat();
744
+ indexes = helper.findTreeIndex(options, function (item) { return item[valueField || 'value'] == value[valueField || 'value']; });
745
+ if (indexes) {
746
+ model.setOptions(helper.spliceTree(options, indexes, 1), this.changeOptionValue, data);
747
+ }
748
+ }
749
+ return [3 /*break*/, 8];
750
+ case 7:
751
+ e_3 = _c.sent();
752
+ console.error(e_3);
753
+ env.notify('error', e_3.message);
754
+ return [3 /*break*/, 8];
755
+ case 8: return [2 /*return*/];
756
+ }
757
+ });
758
+ });
759
+ };
760
+ FormOptionsItem.prototype.render = function () {
761
+ var _a = this.props, value = _a.value, formItem = _a.formItem, addApi = _a.addApi, editApi = _a.editApi, deleteApi = _a.deleteApi, creatable = _a.creatable, editable = _a.editable, removable = _a.removable, enableNodePath = _a.enableNodePath, pathSeparator = _a.pathSeparator, _b = _a.delimiter, delimiter = _b === void 0 ? ',' : _b, _c = _a.labelField, labelField = _c === void 0 ? 'label' : _c, _d = _a.valueField, valueField = _d === void 0 ? 'value' : _d;
762
+ var _e = helper.normalizeNodePath(value, enableNodePath, labelField, valueField, pathSeparator, delimiter), nodePathArray = _e.nodePathArray, nodeValueArray = _e.nodeValueArray;
763
+ return (React__default["default"].createElement(Control, tslib.__assign({}, this.props, { ref: this.inputRef, options: formItem ? formItem.filteredOptions : [], onToggle: this.handleToggle, onToggleAll: this.handleToggleAll, selectedOptions: formItem
764
+ ? formItem.getSelectedOptions(value, enableNodePath ? nodeValueArray : undefined)
765
+ : [], nodePath: nodePathArray, loading: formItem ? formItem.loading : false, setLoading: this.setLoading, setOptions: this.setOptions, syncOptions: this.syncOptions, reloadOptions: this.reload, deferLoad: this.deferLoad, leftDeferLoad: this.leftDeferLoad, expandTreeOptions: this.expandTreeOptions, creatable: creatable !== false && api.isEffectiveApi(addApi) ? true : creatable, editable: editable || (editable !== false && api.isEffectiveApi(editApi)), removable: removable || (removable !== false && api.isEffectiveApi(deleteApi)), onAdd: this.handleOptionAdd, onEdit: this.handleOptionEdit, onDelete: this.handleOptionDelete })));
766
+ };
767
+ FormOptionsItem.displayName = "OptionsControl(".concat(config.type, ")");
768
+ FormOptionsItem.defaultProps = tslib.__assign({ delimiter: ',', labelField: 'label', valueField: 'value', joinValues: true, extractValue: false, multiple: false, placeholder: 'Select.placeholder', resetValue: '', deleteConfirmText: 'deleteConfirm' }, Control.defaultProps);
769
+ FormOptionsItem.propsList = Control.propsList
770
+ ? tslib.__spreadArray([], Control.propsList, true) : [];
771
+ FormOptionsItem.ComposedComponent = Control;
772
+ tslib.__decorate([
773
+ helper.autobind,
774
+ tslib.__metadata("design:type", Function),
775
+ tslib.__metadata("design:paramtypes", [Object]),
776
+ tslib.__metadata("design:returntype", void 0)
777
+ ], FormOptionsItem.prototype, "inputRef", null);
778
+ tslib.__decorate([
779
+ helper.autobind,
780
+ tslib.__metadata("design:type", Function),
781
+ tslib.__metadata("design:paramtypes", [Object, Boolean, Boolean]),
782
+ tslib.__metadata("design:returntype", Promise)
783
+ ], FormOptionsItem.prototype, "handleToggle", null);
784
+ tslib.__decorate([
785
+ helper.autobind,
786
+ tslib.__metadata("design:type", Function),
787
+ tslib.__metadata("design:paramtypes", []),
788
+ tslib.__metadata("design:returntype", Promise)
789
+ ], FormOptionsItem.prototype, "handleToggleAll", null);
790
+ tslib.__decorate([
791
+ helper.autobind,
792
+ tslib.__metadata("design:type", Function),
793
+ tslib.__metadata("design:paramtypes", []),
794
+ tslib.__metadata("design:returntype", void 0)
795
+ ], FormOptionsItem.prototype, "reload", null);
796
+ tslib.__decorate([
797
+ helper.autobind,
798
+ tslib.__metadata("design:type", Function),
799
+ tslib.__metadata("design:paramtypes", [Boolean, Object]),
800
+ tslib.__metadata("design:returntype", void 0)
801
+ ], FormOptionsItem.prototype, "reloadOptions", null);
802
+ tslib.__decorate([
803
+ helper.autobind,
804
+ tslib.__metadata("design:type", Function),
805
+ tslib.__metadata("design:paramtypes", [Object]),
806
+ tslib.__metadata("design:returntype", Promise)
807
+ ], FormOptionsItem.prototype, "deferLoad", null);
808
+ tslib.__decorate([
809
+ helper.autobind,
810
+ tslib.__metadata("design:type", Function),
811
+ tslib.__metadata("design:paramtypes", [Object, Object]),
812
+ tslib.__metadata("design:returntype", void 0)
813
+ ], FormOptionsItem.prototype, "leftDeferLoad", null);
814
+ tslib.__decorate([
815
+ helper.autobind,
816
+ tslib.__metadata("design:type", Function),
817
+ tslib.__metadata("design:paramtypes", [Array]),
818
+ tslib.__metadata("design:returntype", void 0)
819
+ ], FormOptionsItem.prototype, "expandTreeOptions", null);
820
+ tslib.__decorate([
821
+ helper.autobind,
822
+ tslib.__metadata("design:type", Function),
823
+ tslib.__metadata("design:paramtypes", [Object]),
824
+ tslib.__metadata("design:returntype", Promise)
825
+ ], FormOptionsItem.prototype, "initOptions", null);
826
+ tslib.__decorate([
827
+ helper.autobind,
828
+ tslib.__metadata("design:type", Function),
829
+ tslib.__metadata("design:paramtypes", [Object]),
830
+ tslib.__metadata("design:returntype", void 0)
831
+ ], FormOptionsItem.prototype, "changeOptionValue", null);
832
+ tslib.__decorate([
833
+ helper.autobind,
834
+ tslib.__metadata("design:type", Function),
835
+ tslib.__metadata("design:paramtypes", [Array, Object]),
836
+ tslib.__metadata("design:returntype", void 0)
837
+ ], FormOptionsItem.prototype, "setOptions", null);
838
+ tslib.__decorate([
839
+ helper.autobind,
840
+ tslib.__metadata("design:type", Function),
841
+ tslib.__metadata("design:paramtypes", []),
842
+ tslib.__metadata("design:returntype", void 0)
843
+ ], FormOptionsItem.prototype, "syncOptions", null);
844
+ tslib.__decorate([
845
+ helper.autobind,
846
+ tslib.__metadata("design:type", Function),
847
+ tslib.__metadata("design:paramtypes", [Boolean]),
848
+ tslib.__metadata("design:returntype", void 0)
849
+ ], FormOptionsItem.prototype, "setLoading", null);
850
+ tslib.__decorate([
851
+ helper.autobind,
852
+ tslib.__metadata("design:type", Function),
853
+ tslib.__metadata("design:paramtypes", [Object, Object, Boolean]),
854
+ tslib.__metadata("design:returntype", Promise)
855
+ ], FormOptionsItem.prototype, "handleOptionAdd", null);
856
+ tslib.__decorate([
857
+ helper.autobind,
858
+ tslib.__metadata("design:type", Function),
859
+ tslib.__metadata("design:paramtypes", [Object, Object, Boolean]),
860
+ tslib.__metadata("design:returntype", Promise)
861
+ ], FormOptionsItem.prototype, "handleOptionEdit", null);
862
+ tslib.__decorate([
863
+ helper.autobind,
864
+ tslib.__metadata("design:type", Function),
865
+ tslib.__metadata("design:paramtypes", [Object]),
866
+ tslib.__metadata("design:returntype", Promise)
867
+ ], FormOptionsItem.prototype, "handleOptionDelete", null);
868
+ return FormOptionsItem;
869
+ }(React__default["default"].Component));
870
+ return Item.registerFormItem(tslib.__assign(tslib.__assign({}, config), { strictMode: false, component: FormOptionsItem }));
871
+ }
872
+ function OptionsControl(config) {
873
+ return function (component) {
874
+ var renderer = registerOptionsControl(tslib.__assign(tslib.__assign({}, config), { component: component }));
875
+ return renderer.component;
876
+ };
877
+ }
878
+
879
+ exports.OptionsControl = OptionsControl;
880
+ exports.detectProps = detectProps;
881
+ exports.registerOptionsControl = registerOptionsControl;