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,471 @@
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 find = require('lodash/find');
13
+ var isEqual = require('lodash/isEqual');
14
+ var helper = require('../utils/helper.js');
15
+ var api = require('../utils/api.js');
16
+ var service = require('./service.js');
17
+ var object = require('../utils/object.js');
18
+
19
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
+
21
+ var find__default = /*#__PURE__*/_interopDefaultLegacy(find);
22
+ var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
23
+
24
+ var ServerError = /** @class */ (function (_super) {
25
+ tslib.__extends(ServerError, _super);
26
+ function ServerError() {
27
+ var _this = _super !== null && _super.apply(this, arguments) || this;
28
+ _this.type = 'ServerError';
29
+ return _this;
30
+ }
31
+ return ServerError;
32
+ }(Error));
33
+ var Column = mobxStateTree.types
34
+ .model('Column', {
35
+ title: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
36
+ key: '',
37
+ toggled: false,
38
+ breakpoint: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
39
+ pristine: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
40
+ toggable: true,
41
+ index: 0,
42
+ type: '',
43
+ children: mobxStateTree.types.optional(mobxStateTree.types.array(mobxStateTree.types.late(function () { return Column; })), [])
44
+ })
45
+ .actions(function (self) { return ({
46
+ toggleToggle: function () {
47
+ self.toggled = !self.toggled;
48
+ var table = mobxStateTree.getParent(self, 2);
49
+ if (!table.activeToggaleColumns.length) {
50
+ self.toggled = true;
51
+ }
52
+ table.persistSaveToggledColumns();
53
+ },
54
+ setToggled: function (value) {
55
+ self.toggled = value;
56
+ }
57
+ }); });
58
+ var Row = mobxStateTree.types
59
+ .model('Row', {
60
+ storeType: 'Row',
61
+ id: mobxStateTree.types.identifier,
62
+ key: mobxStateTree.types.string,
63
+ pristine: mobxStateTree.types.frozen({}),
64
+ data: mobxStateTree.types.frozen({}),
65
+ index: mobxStateTree.types.number,
66
+ newIndex: mobxStateTree.types.number,
67
+ depth: mobxStateTree.types.number,
68
+ children: mobxStateTree.types.optional(mobxStateTree.types.array(mobxStateTree.types.late(function () { return Row; })), []),
69
+ path: '' // 行数据的位置
70
+ })
71
+ .views(function (self) { return ({
72
+ get checked() {
73
+ return mobxStateTree.getParent(self, self.depth * 2).isSelected(self);
74
+ },
75
+ get modified() {
76
+ if (!self.data) {
77
+ return false;
78
+ }
79
+ return Object.keys(self.data).some(function (key) { return !isEqual__default["default"](self.data[key], self.pristine[key]); });
80
+ },
81
+ get locals() {
82
+ var children = null;
83
+ if (self.children.length) {
84
+ children = self.children.map(function (item) { return item.locals; });
85
+ }
86
+ var parent = mobxStateTree.getParent(self, 2);
87
+ return object.createObject(object.extendObject(mobxStateTree.getParent(self, self.depth * 2).data, {
88
+ index: self.index,
89
+ // todo 以后再支持多层,目前先一层
90
+ parent: parent.storeType === Row.name ? parent.data : undefined
91
+ }), children
92
+ ? tslib.__assign(tslib.__assign({}, self.data), { children: children }) : self.data);
93
+ }
94
+ }); })
95
+ .actions(function (self) { return ({
96
+ replaceWith: function (data) {
97
+ Object.keys(data).forEach(function (key) {
98
+ if (key !== 'id') {
99
+ self[key] = data[key];
100
+ }
101
+ });
102
+ if (Array.isArray(data.children)) {
103
+ var arr = data.children;
104
+ var pool = arr.concat();
105
+ // 把多的删了先
106
+ if (self.children.length > arr.length) {
107
+ self.children.splice(arr.length, self.children.length - arr.length);
108
+ }
109
+ var index = 0;
110
+ var len = self.children.length;
111
+ while (pool.length) {
112
+ // 因为父级id未更新,所以需要将子级的parentId正确指向父级id
113
+ var item = tslib.__assign(tslib.__assign({}, pool.shift()), { parentId: self.id });
114
+ if (index < len) {
115
+ self.children[index].replaceWith(item);
116
+ }
117
+ else {
118
+ var row = Row.create(item);
119
+ self.children.push(row);
120
+ }
121
+ index++;
122
+ }
123
+ }
124
+ },
125
+ change: function (values, savePristine) {
126
+ self.data = helper.immutableExtends(self.data, values);
127
+ savePristine && (self.pristine = self.data);
128
+ }
129
+ }); });
130
+ var TableStoreV2 = service.ServiceStore.named('TableStoreV2')
131
+ .props({
132
+ columns: mobxStateTree.types.array(Column),
133
+ rows: mobxStateTree.types.array(Row),
134
+ selectedRowKeys: mobxStateTree.types.array(mobxStateTree.types.frozen()),
135
+ selectedRows: mobxStateTree.types.array(mobxStateTree.types.reference(Row)),
136
+ expandedRowKeys: mobxStateTree.types.array(mobxStateTree.types.frozen()),
137
+ columnsTogglable: mobxStateTree.types.optional(mobxStateTree.types.union(mobxStateTree.types.boolean, mobxStateTree.types.literal('auto')), 'auto'),
138
+ orderBy: '',
139
+ order: mobxStateTree.types.optional(mobxStateTree.types.union(mobxStateTree.types.literal('asc'), mobxStateTree.types.literal('desc')), 'asc'),
140
+ query: mobxStateTree.types.optional(mobxStateTree.types.frozen(), {}),
141
+ pageNo: 1,
142
+ pageSize: 10,
143
+ dragging: false
144
+ })
145
+ .views(function (self) {
146
+ function getToggable() {
147
+ if (self.columnsTogglable === 'auto') {
148
+ return self.columns.filter.length > 10;
149
+ }
150
+ return self.columnsTogglable;
151
+ }
152
+ function hasColumnHidden() {
153
+ return self.columns.findIndex(function (column) { return !column.toggled; }) !== -1;
154
+ }
155
+ function getToggableColumns() {
156
+ return self.columns.filter(function (item) { return helper.isVisible(item.pristine, self.data) && item.toggable !== false; });
157
+ }
158
+ function getActiveToggableColumns() {
159
+ return getToggableColumns().filter(function (item) { return item.toggled; });
160
+ }
161
+ function getAllFilteredColumns(columns) {
162
+ if (columns) {
163
+ return columns
164
+ .filter(function (item) {
165
+ return item &&
166
+ helper.isVisible(item.pristine, helper.hasVisibleExpression(item.pristine) ? self.data : {}) &&
167
+ (item.toggled || !item.toggable);
168
+ })
169
+ .map(function (item) { return (tslib.__assign(tslib.__assign({}, item.pristine), { type: item.type, children: item.children
170
+ ? getAllFilteredColumns(item.children)
171
+ : undefined })); });
172
+ }
173
+ return [];
174
+ }
175
+ function getFilteredColumns() {
176
+ return getAllFilteredColumns(self.columns);
177
+ }
178
+ function getUnSelectedRows() {
179
+ return helper.flattenTree(self.rows).filter(function (item) { return !item.checked; });
180
+ }
181
+ function getData(superData) {
182
+ return object.createObject(superData, {
183
+ items: self.rows.map(function (item) { return item.data; }),
184
+ selectedItems: self.selectedRows.map(function (item) { return item.data; }),
185
+ unSelectedItems: getUnSelectedRows().map(function (item) { return item.data; })
186
+ });
187
+ }
188
+ function isSelected(row) {
189
+ return !!~self.selectedRows.indexOf(row);
190
+ }
191
+ return {
192
+ get toggable() {
193
+ return getToggable();
194
+ },
195
+ get columnsData() {
196
+ return self.columns;
197
+ },
198
+ get toggableColumns() {
199
+ return getToggableColumns();
200
+ },
201
+ get filteredColumns() {
202
+ return getFilteredColumns();
203
+ },
204
+ get activeToggaleColumns() {
205
+ return getActiveToggableColumns();
206
+ },
207
+ get dataSource() {
208
+ return self.rows.map(function (item) { return item.data; });
209
+ },
210
+ get currentSelectedRowKeys() {
211
+ return self.selectedRowKeys.map(function (item) { return item; });
212
+ },
213
+ get currentExpandedKeys() {
214
+ return self.expandedRowKeys.map(function (item) { return item; });
215
+ },
216
+ // 是否隐藏了某列
217
+ hasColumnHidden: function () {
218
+ return hasColumnHidden();
219
+ },
220
+ getData: getData,
221
+ isSelected: isSelected
222
+ };
223
+ })
224
+ .actions(function (self) {
225
+ function updateColumns(columns) {
226
+ if (columns && Array.isArray(columns)) {
227
+ var cols = columns.filter(function (column) { return column; }).concat();
228
+ cols = cols.map(function (item, index) { return (tslib.__assign(tslib.__assign({}, item), { index: index, type: item.type || 'plain', pristine: item, toggled: item.toggled !== false, breakpoint: item.breakpoint, children: item.children ? updateColumns(item.children) : [] })); });
229
+ return cols;
230
+ }
231
+ return;
232
+ }
233
+ function update(config) {
234
+ config.columnsTogglable !== void 0 &&
235
+ (self.columnsTogglable = config.columnsTogglable);
236
+ if (typeof config.orderBy === 'string') {
237
+ setOrderByInfo(config.orderBy, config.order === 'desc' ? 'desc' : 'asc');
238
+ }
239
+ if (config.columns && Array.isArray(config.columns)) {
240
+ self.columns.replace(updateColumns(config.columns));
241
+ }
242
+ }
243
+ function persistSaveToggledColumns() {
244
+ var key = location.pathname +
245
+ self.path +
246
+ self.toggableColumns.map(function (item) { return item.key || item.index; }).join('-');
247
+ localStorage.setItem(key, JSON.stringify(self.activeToggaleColumns.map(function (item) { return item.index; })));
248
+ }
249
+ function setOrderByInfo(key, direction) {
250
+ self.orderBy = key;
251
+ self.order = direction;
252
+ }
253
+ function updateQuery(values, updater, pageNoField, pageSizeField, replace) {
254
+ if (pageNoField === void 0) { pageNoField = 'pageNo'; }
255
+ if (pageSizeField === void 0) { pageSizeField = 'pageSize'; }
256
+ if (replace === void 0) { replace = false; }
257
+ var originQuery = self.query;
258
+ self.query = replace
259
+ ? tslib.__assign({}, values) : tslib.__assign(tslib.__assign({}, self.query), values);
260
+ if (self.query[pageNoField || 'pageNo']) {
261
+ self.pageNo = parseInt(self.query[pageNoField || 'pageNo'], 10);
262
+ }
263
+ if (self.query[pageSizeField || 'pageSize']) {
264
+ self.pageSize = parseInt(self.query[pageSizeField || 'pageSize'], 10);
265
+ }
266
+ updater &&
267
+ helper.isObjectShallowModified(originQuery, self.query, false) &&
268
+ setTimeout(updater.bind(null, "?".concat(helper.qsstringify(self.query))), 4);
269
+ }
270
+ function updateSelectedRows(rows, selectedKeys, keyField) {
271
+ helper.eachTree(rows, function (item) {
272
+ if (~selectedKeys.indexOf(item.pristine[keyField || 'key'])) {
273
+ self.selectedRows.push(item.id);
274
+ self.selectedRowKeys.push(item.pristine[keyField || 'key']);
275
+ }
276
+ else if (find__default["default"](selectedKeys, function (a) { return a && a == item.pristine[keyField || 'key']; })) {
277
+ self.selectedRows.push(item.id);
278
+ self.selectedRowKeys.push(item.pristine[keyField || 'key']);
279
+ }
280
+ else if (item.children) {
281
+ updateSelectedRows(item.children, selectedKeys, keyField);
282
+ }
283
+ });
284
+ }
285
+ function updateSelected(selectedKeys, keyField) {
286
+ self.selectedRows.clear();
287
+ self.selectedRowKeys.clear();
288
+ updateSelectedRows(self.rows, selectedKeys, keyField);
289
+ }
290
+ function updateSelectedAll(keyField) {
291
+ var selectedKeys = [];
292
+ helper.eachTree(self.rows, function (item) {
293
+ return selectedKeys.push(item.pristine[keyField || 'key']);
294
+ });
295
+ updateSelectedRows(self.rows, selectedKeys, keyField);
296
+ }
297
+ function updateExpanded(expandedRowKeys, keyField) {
298
+ self.expandedRowKeys.clear();
299
+ helper.eachTree(self.rows, function (item) {
300
+ if (~expandedRowKeys.indexOf(item.pristine[keyField || 'key'])) {
301
+ self.expandedRowKeys.push(item.pristine[keyField || 'key']);
302
+ }
303
+ else if (find__default["default"](expandedRowKeys, function (a) { return a && a == item.pristine[keyField || 'key']; })) {
304
+ self.expandedRowKeys.push(item.pristine[keyField || 'key']);
305
+ }
306
+ });
307
+ }
308
+ // 尽可能的复用 row
309
+ function replaceRow(arr, reUseRow) {
310
+ if (reUseRow === false) {
311
+ self.rows.replace(arr.map(function (item) { return Row.create(item); }));
312
+ return;
313
+ }
314
+ var pool = arr.concat();
315
+ // 把多的删了先
316
+ if (self.rows.length > arr.length) {
317
+ self.rows.splice(arr.length, self.rows.length - arr.length);
318
+ }
319
+ var index = 0;
320
+ var len = self.rows.length;
321
+ while (pool.length) {
322
+ var item = pool.shift();
323
+ if (index < len) {
324
+ self.rows[index].replaceWith(item);
325
+ }
326
+ else {
327
+ var row = Row.create(item);
328
+ self.rows.push(row);
329
+ }
330
+ index++;
331
+ }
332
+ }
333
+ function initChildren(children, depth, pindex, parentId, path, keyField) {
334
+ if (path === void 0) { path = ''; }
335
+ var key = keyField || 'children';
336
+ depth += 1;
337
+ return children.map(function (item, index) {
338
+ item = object.isObject(item)
339
+ ? item
340
+ : {
341
+ item: item
342
+ };
343
+ var id = helper.guid();
344
+ return {
345
+ id: id,
346
+ parentId: parentId,
347
+ key: String("".concat(pindex, "-").concat(depth, "-").concat(index)),
348
+ path: "".concat(path).concat(index),
349
+ depth: depth,
350
+ index: index,
351
+ newIndex: index,
352
+ pristine: item,
353
+ data: item,
354
+ rowSpans: {},
355
+ children: item && Array.isArray(item[key])
356
+ ? initChildren(item[key], depth, index, id, "".concat(path).concat(index, "."))
357
+ : []
358
+ };
359
+ });
360
+ }
361
+ function initRows(rows, getEntryId, reUseRow, keyField) {
362
+ self.selectedRows.clear();
363
+ var key = keyField || 'children';
364
+ var arr = rows.map(function (item, index) {
365
+ var id = getEntryId ? getEntryId(item, index) : helper.guid();
366
+ return {
367
+ id: id,
368
+ key: String("".concat(index, "-1-").concat(index)),
369
+ index: index,
370
+ newIndex: index,
371
+ pristine: item,
372
+ path: "".concat(index),
373
+ data: item,
374
+ depth: 1,
375
+ children: item && Array.isArray(item[key])
376
+ ? initChildren(item[key], 1, index, id, "".concat(index, "."), key)
377
+ : []
378
+ };
379
+ });
380
+ replaceRow(arr, reUseRow);
381
+ }
382
+ var saveRemote = mobxStateTree.flow(function saveRemote(api$1, data, options) {
383
+ var json, e_1;
384
+ var _a, _b, _c;
385
+ if (options === void 0) { options = {}; }
386
+ return tslib.__generator(this, function (_d) {
387
+ switch (_d.label) {
388
+ case 0:
389
+ _d.trys.push([0, 2, , 3]);
390
+ options = tslib.__assign({ method: 'post' }, options);
391
+ self.markSaving(true);
392
+ return [4 /*yield*/, mobxStateTree.getEnv(self).fetcher(api$1, data, options)];
393
+ case 1:
394
+ json = _d.sent();
395
+ self.markSaving(false);
396
+ if (!helper.isEmpty(json.data) || json.ok) {
397
+ self.updateData(api.normalizeApiResponseData(json.data), {
398
+ __saved: Date.now()
399
+ }, !!api$1 && api$1.replaceData);
400
+ self.updatedAt = Date.now();
401
+ }
402
+ if (!json.ok) {
403
+ self.updateMessage((_b = (_a = json.msg) !== null && _a !== void 0 ? _a : options.errorMessage) !== null && _b !== void 0 ? _b : self.__('saveFailed'), true);
404
+ mobxStateTree.getEnv(self).notify('error', self.msg, json.msgTimeout !== undefined
405
+ ? {
406
+ closeButton: true,
407
+ timeout: json.msgTimeout
408
+ }
409
+ : undefined);
410
+ throw new ServerError(self.msg);
411
+ }
412
+ else {
413
+ self.updateMessage((_c = json.msg) !== null && _c !== void 0 ? _c : options.successMessage);
414
+ self.msg &&
415
+ mobxStateTree.getEnv(self).notify('success', self.msg, json.msgTimeout !== undefined
416
+ ? {
417
+ closeButton: true,
418
+ timeout: json.msgTimeout
419
+ }
420
+ : undefined);
421
+ }
422
+ return [2 /*return*/, json.data];
423
+ case 2:
424
+ e_1 = _d.sent();
425
+ self.markSaving(false);
426
+ if (!mobxStateTree.isAlive(self) || self.disposed) {
427
+ return [2 /*return*/];
428
+ }
429
+ e_1.type !== 'ServerError' && mobxStateTree.getEnv(self).notify('error', e_1.message);
430
+ throw e_1;
431
+ case 3: return [2 /*return*/];
432
+ }
433
+ });
434
+ });
435
+ return {
436
+ update: update,
437
+ persistSaveToggledColumns: persistSaveToggledColumns,
438
+ setOrderByInfo: setOrderByInfo,
439
+ updateQuery: updateQuery,
440
+ initRows: initRows,
441
+ updateSelected: updateSelected,
442
+ updateSelectedAll: updateSelectedAll,
443
+ updateExpanded: updateExpanded,
444
+ // events
445
+ afterCreate: function () {
446
+ setTimeout(function () {
447
+ if (!mobxStateTree.isAlive(self)) {
448
+ return;
449
+ }
450
+ var key = location.pathname +
451
+ self.path +
452
+ self.toggableColumns.map(function (item) { return item.key || item.index; }).join('-');
453
+ var data = localStorage.getItem(key);
454
+ if (data) {
455
+ var selectedColumns_1 = JSON.parse(data);
456
+ self.toggableColumns.forEach(function (item) {
457
+ return item.setToggled(!!~selectedColumns_1.indexOf(item.index));
458
+ });
459
+ }
460
+ }, 200);
461
+ },
462
+ saveRemote: saveRemote,
463
+ getRowByIndex: function (rowIndex) {
464
+ return self.rows[rowIndex];
465
+ }
466
+ };
467
+ });
468
+
469
+ exports.Column = Column;
470
+ exports.Row = Row;
471
+ exports.TableStoreV2 = TableStoreV2;