amis-core 2.9.0 → 3.0.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 (265) hide show
  1. package/esm/Root.js +1 -1
  2. package/esm/RootRenderer.js +1 -1
  3. package/esm/SchemaRenderer.d.ts +1 -0
  4. package/esm/SchemaRenderer.js +7 -5
  5. package/esm/Scoped.js +1 -1
  6. package/esm/WithRootStore.js +1 -1
  7. package/esm/WithStore.js +1 -1
  8. package/esm/actions/Action.js +8 -2
  9. package/esm/actions/AjaxAction.js +1 -1
  10. package/esm/actions/BreakAction.js +1 -1
  11. package/esm/actions/BroadcastAction.js +1 -1
  12. package/esm/actions/CmptAction.js +1 -1
  13. package/esm/actions/ContinueAction.js +1 -1
  14. package/esm/actions/CopyAction.js +1 -1
  15. package/esm/actions/CustomAction.js +1 -1
  16. package/esm/actions/DialogAction.js +5 -1
  17. package/esm/actions/DrawerAction.js +1 -1
  18. package/esm/actions/EmailAction.js +1 -1
  19. package/esm/actions/LinkAction.js +1 -1
  20. package/esm/actions/LoopAction.js +1 -1
  21. package/esm/actions/PageAction.js +1 -1
  22. package/esm/actions/ParallelAction.js +1 -1
  23. package/esm/actions/SwitchAction.js +1 -1
  24. package/esm/actions/ToastAction.js +1 -1
  25. package/esm/components/LazyComponent.js +1 -1
  26. package/esm/components/Overlay.d.ts +2 -2
  27. package/esm/components/Overlay.js +1 -1
  28. package/esm/components/PopOver.js +1 -1
  29. package/esm/env.js +1 -1
  30. package/esm/envOverwrite.js +1 -1
  31. package/esm/factory.d.ts +2 -1
  32. package/esm/factory.js +3 -3
  33. package/esm/index.d.ts +8 -3
  34. package/esm/index.js +10 -9
  35. package/esm/locale.js +1 -1
  36. package/esm/renderers/Form.d.ts +1 -1
  37. package/esm/renderers/Form.js +1 -1
  38. package/esm/renderers/Item.js +10 -7
  39. package/esm/renderers/Options.js +3 -3
  40. package/esm/renderers/Placeholder.js +1 -1
  41. package/esm/renderers/builtin.js +1 -1
  42. package/esm/renderers/register.js +1 -1
  43. package/esm/renderers/wrapControl.js +1 -1
  44. package/esm/store/app.js +1 -1
  45. package/esm/store/combo.js +1 -1
  46. package/esm/store/crud.js +22 -8
  47. package/esm/store/form.js +1 -1
  48. package/esm/store/formItem.js +2 -2
  49. package/esm/store/iRenderer.js +1 -1
  50. package/esm/store/index.js +1 -1
  51. package/esm/store/list.js +1 -1
  52. package/esm/store/manager.js +1 -1
  53. package/esm/store/modal.js +1 -1
  54. package/esm/store/node.js +1 -1
  55. package/esm/store/pagination.js +2 -2
  56. package/esm/store/root.js +1 -1
  57. package/esm/store/service.js +1 -1
  58. package/esm/store/table.d.ts +24 -23
  59. package/esm/store/table.js +17 -4
  60. package/esm/store/table2.d.ts +5 -5
  61. package/esm/store/table2.js +23 -19
  62. package/esm/theme.js +1 -1
  63. package/esm/types.d.ts +6 -0
  64. package/esm/utils/Animation.js +1 -1
  65. package/esm/utils/ColorScale.js +1 -1
  66. package/esm/utils/DataSchema.js +1 -1
  67. package/esm/utils/DataScope.js +1 -1
  68. package/esm/utils/RootClose.js +1 -1
  69. package/esm/utils/SimpleMap.js +1 -1
  70. package/esm/utils/api.js +9 -2
  71. package/esm/utils/attachmentAdpator.js +1 -1
  72. package/esm/utils/autobind.js +1 -1
  73. package/esm/utils/columnsSplit.js +1 -1
  74. package/esm/utils/dataMapping.js +1 -1
  75. package/esm/utils/date.js +1 -1
  76. package/esm/utils/debug.js +4 -4
  77. package/esm/utils/decodeEntity.js +1 -1
  78. package/esm/utils/dom.d.ts +2 -0
  79. package/esm/utils/dom.js +47 -10
  80. package/esm/utils/errors.js +1 -1
  81. package/esm/utils/escapeHtml.js +1 -1
  82. package/esm/utils/filter-schema.js +1 -1
  83. package/esm/utils/filter.js +1 -1
  84. package/esm/utils/formatDuration.js +1 -1
  85. package/esm/utils/formula.js +2 -2
  86. package/esm/utils/getVariable.js +1 -1
  87. package/esm/utils/grammar.js +1 -1
  88. package/esm/utils/handleAction.js +1 -1
  89. package/esm/utils/helper.d.ts +7 -0
  90. package/esm/utils/helper.js +28 -3
  91. package/esm/utils/highlight.js +1 -1
  92. package/esm/utils/icon.d.ts +6 -1
  93. package/esm/utils/icon.js +6 -1
  94. package/esm/utils/image.js +1 -1
  95. package/esm/utils/isPureVariable.js +1 -1
  96. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  97. package/esm/utils/keyToPath.js +1 -1
  98. package/esm/utils/makeSorter.js +1 -1
  99. package/esm/utils/normalizeLink.js +1 -1
  100. package/esm/utils/normalizeOptions.js +1 -1
  101. package/esm/utils/object.js +1 -1
  102. package/esm/utils/offset.js +1 -1
  103. package/esm/utils/offsetParent.js +1 -1
  104. package/esm/utils/optionValueCompare.js +1 -1
  105. package/esm/utils/position.js +1 -1
  106. package/esm/utils/prettyBytes.js +1 -1
  107. package/esm/utils/renderer-event.js +35 -32
  108. package/esm/utils/replaceText.js +1 -1
  109. package/esm/utils/resize-sensor.js +1 -1
  110. package/esm/utils/resolveCondition.d.ts +1 -0
  111. package/esm/utils/resolveCondition.js +19 -4
  112. package/esm/utils/resolveVariable.js +1 -1
  113. package/esm/utils/resolveVariableAndFilter.js +1 -1
  114. package/esm/utils/resolveVariableAndFilterForAsync.d.ts +6 -1
  115. package/esm/utils/resolveVariableAndFilterForAsync.js +20 -3
  116. package/esm/utils/scrollPosition.js +1 -1
  117. package/esm/utils/string2regExp.js +1 -1
  118. package/esm/utils/stripNumber.js +1 -1
  119. package/esm/utils/style-helper.d.ts +9 -4
  120. package/esm/utils/style-helper.js +81 -16
  121. package/esm/utils/style.js +2 -2
  122. package/esm/utils/toNumber.js +1 -1
  123. package/esm/utils/tokenize.d.ts +1 -0
  124. package/esm/utils/tokenize.js +34 -3
  125. package/esm/utils/tpl-builtin.d.ts +2 -1
  126. package/esm/utils/tpl-builtin.js +18 -3
  127. package/esm/utils/tpl-lodash.js +3 -2
  128. package/esm/utils/tpl.d.ts +2 -0
  129. package/esm/utils/tpl.js +24 -2
  130. package/esm/utils/uncontrollable.js +1 -1
  131. package/esm/utils/validations.d.ts +4 -1
  132. package/esm/utils/validations.js +27 -12
  133. package/lib/Root.js +1 -1
  134. package/lib/RootRenderer.js +1 -1
  135. package/lib/SchemaRenderer.d.ts +1 -0
  136. package/lib/SchemaRenderer.js +7 -4
  137. package/lib/Scoped.js +1 -1
  138. package/lib/WithRootStore.js +1 -1
  139. package/lib/WithStore.js +1 -1
  140. package/lib/actions/Action.js +8 -2
  141. package/lib/actions/AjaxAction.js +1 -1
  142. package/lib/actions/BreakAction.js +1 -1
  143. package/lib/actions/BroadcastAction.js +1 -1
  144. package/lib/actions/CmptAction.js +1 -1
  145. package/lib/actions/ContinueAction.js +1 -1
  146. package/lib/actions/CopyAction.js +1 -1
  147. package/lib/actions/CustomAction.js +1 -1
  148. package/lib/actions/DialogAction.js +5 -1
  149. package/lib/actions/DrawerAction.js +1 -1
  150. package/lib/actions/EmailAction.js +1 -1
  151. package/lib/actions/LinkAction.js +1 -1
  152. package/lib/actions/LoopAction.js +1 -1
  153. package/lib/actions/PageAction.js +1 -1
  154. package/lib/actions/ParallelAction.js +1 -1
  155. package/lib/actions/SwitchAction.js +1 -1
  156. package/lib/actions/ToastAction.js +1 -1
  157. package/lib/components/LazyComponent.js +1 -1
  158. package/lib/components/Overlay.d.ts +2 -2
  159. package/lib/components/Overlay.js +1 -1
  160. package/lib/components/PopOver.js +1 -1
  161. package/lib/env.js +1 -1
  162. package/lib/envOverwrite.js +1 -1
  163. package/lib/factory.d.ts +2 -1
  164. package/lib/factory.js +3 -3
  165. package/lib/index.d.ts +8 -3
  166. package/lib/index.js +14 -2
  167. package/lib/locale.js +1 -1
  168. package/lib/renderers/Form.d.ts +1 -1
  169. package/lib/renderers/Form.js +1 -1
  170. package/lib/renderers/Item.js +10 -7
  171. package/lib/renderers/Options.js +3 -3
  172. package/lib/renderers/Placeholder.js +1 -1
  173. package/lib/renderers/builtin.js +1 -1
  174. package/lib/renderers/register.js +1 -1
  175. package/lib/renderers/wrapControl.js +1 -1
  176. package/lib/store/app.js +1 -1
  177. package/lib/store/combo.js +1 -1
  178. package/lib/store/crud.js +22 -8
  179. package/lib/store/form.js +1 -1
  180. package/lib/store/formItem.js +2 -2
  181. package/lib/store/iRenderer.js +1 -1
  182. package/lib/store/index.js +1 -1
  183. package/lib/store/list.js +1 -1
  184. package/lib/store/manager.js +1 -1
  185. package/lib/store/modal.js +1 -1
  186. package/lib/store/node.js +1 -1
  187. package/lib/store/pagination.js +2 -2
  188. package/lib/store/root.js +1 -1
  189. package/lib/store/service.js +1 -1
  190. package/lib/store/table.d.ts +24 -23
  191. package/lib/store/table.js +17 -4
  192. package/lib/store/table2.d.ts +5 -5
  193. package/lib/store/table2.js +23 -19
  194. package/lib/theme.js +1 -1
  195. package/lib/types.d.ts +6 -0
  196. package/lib/utils/Animation.js +1 -1
  197. package/lib/utils/ColorScale.js +1 -1
  198. package/lib/utils/DataSchema.js +1 -1
  199. package/lib/utils/DataScope.js +1 -1
  200. package/lib/utils/RootClose.js +1 -1
  201. package/lib/utils/SimpleMap.js +1 -1
  202. package/lib/utils/api.js +9 -2
  203. package/lib/utils/attachmentAdpator.js +1 -1
  204. package/lib/utils/autobind.js +1 -1
  205. package/lib/utils/columnsSplit.js +1 -1
  206. package/lib/utils/dataMapping.js +1 -1
  207. package/lib/utils/date.js +1 -1
  208. package/lib/utils/debug.js +4 -4
  209. package/lib/utils/decodeEntity.js +1 -1
  210. package/lib/utils/dom.d.ts +2 -0
  211. package/lib/utils/dom.js +48 -9
  212. package/lib/utils/errors.js +1 -1
  213. package/lib/utils/escapeHtml.js +1 -1
  214. package/lib/utils/filter-schema.js +1 -1
  215. package/lib/utils/filter.js +1 -1
  216. package/lib/utils/formatDuration.js +1 -1
  217. package/lib/utils/formula.js +2 -2
  218. package/lib/utils/getVariable.js +1 -1
  219. package/lib/utils/grammar.js +1 -1
  220. package/lib/utils/handleAction.js +1 -1
  221. package/lib/utils/helper.d.ts +7 -0
  222. package/lib/utils/helper.js +29 -2
  223. package/lib/utils/highlight.js +1 -1
  224. package/lib/utils/icon.d.ts +6 -1
  225. package/lib/utils/icon.js +6 -1
  226. package/lib/utils/image.js +1 -1
  227. package/lib/utils/isPureVariable.js +1 -1
  228. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  229. package/lib/utils/keyToPath.js +1 -1
  230. package/lib/utils/makeSorter.js +1 -1
  231. package/lib/utils/normalizeLink.js +1 -1
  232. package/lib/utils/normalizeOptions.js +1 -1
  233. package/lib/utils/object.js +1 -1
  234. package/lib/utils/offset.js +1 -1
  235. package/lib/utils/offsetParent.js +1 -1
  236. package/lib/utils/optionValueCompare.js +1 -1
  237. package/lib/utils/position.js +1 -1
  238. package/lib/utils/prettyBytes.js +1 -1
  239. package/lib/utils/renderer-event.js +35 -32
  240. package/lib/utils/replaceText.js +1 -1
  241. package/lib/utils/resize-sensor.js +1 -1
  242. package/lib/utils/resolveCondition.d.ts +1 -0
  243. package/lib/utils/resolveCondition.js +19 -3
  244. package/lib/utils/resolveVariable.js +1 -1
  245. package/lib/utils/resolveVariableAndFilter.js +1 -1
  246. package/lib/utils/resolveVariableAndFilterForAsync.d.ts +6 -1
  247. package/lib/utils/resolveVariableAndFilterForAsync.js +20 -2
  248. package/lib/utils/scrollPosition.js +1 -1
  249. package/lib/utils/string2regExp.js +1 -1
  250. package/lib/utils/stripNumber.js +1 -1
  251. package/lib/utils/style-helper.d.ts +9 -4
  252. package/lib/utils/style-helper.js +86 -15
  253. package/lib/utils/style.js +2 -2
  254. package/lib/utils/toNumber.js +1 -1
  255. package/lib/utils/tokenize.d.ts +1 -0
  256. package/lib/utils/tokenize.js +33 -1
  257. package/lib/utils/tpl-builtin.d.ts +2 -1
  258. package/lib/utils/tpl-builtin.js +17 -2
  259. package/lib/utils/tpl-lodash.js +3 -2
  260. package/lib/utils/tpl.d.ts +2 -0
  261. package/lib/utils/tpl.js +24 -1
  262. package/lib/utils/uncontrollable.js +1 -1
  263. package/lib/utils/validations.d.ts +4 -1
  264. package/lib/utils/validations.js +27 -12
  265. package/package.json +3 -3
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.0.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -9,6 +9,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
9
9
 
10
10
  var tslib = require('tslib');
11
11
  var helper = require('./helper.js');
12
+ var cloneDeep = require('lodash/cloneDeep');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var cloneDeep__default = /*#__PURE__*/_interopDefaultLegacy(cloneDeep);
12
17
 
13
18
  var valueMap = {
14
19
  'marginTop': 'margin-top',
@@ -35,6 +40,10 @@ var valueMap = {
35
40
  'fontWeight': 'font-weight',
36
41
  'lineHeight': 'line-height'
37
42
  };
43
+ var inheritValueMap = {
44
+ background: 'bg-color',
45
+ radius: 'border'
46
+ };
38
47
  function findOrCreactStyle(id) {
39
48
  var varStyleTag = document.getElementById(id);
40
49
  if (!varStyleTag) {
@@ -54,10 +63,47 @@ function addStyle(style, id) {
54
63
  // bca-disable-line
55
64
  varStyleTag.innerHTML += style;
56
65
  }
57
- function formatStyle(css, classNames, id) {
66
+ // 继承数据处理
67
+ function handleInheritData(statusMap, data) {
68
+ if (!data) {
69
+ return;
70
+ }
71
+ // 检查是否存在inherit
72
+ ['hover', 'active'].forEach(function (status) {
73
+ for (var key in statusMap[status]) {
74
+ if (typeof statusMap[status][key] === 'object') {
75
+ for (var style in statusMap[status][key]) {
76
+ if (statusMap[status][key][style] === 'inherit') {
77
+ // 值为inherit时设置为default的值或者主题中的default值
78
+ if (statusMap['default'][key] && statusMap['default'][key][style]) {
79
+ statusMap[status][key][style] = statusMap.default[key][style];
80
+ }
81
+ else {
82
+ var value = inheritValueMap[key] || key;
83
+ statusMap[status][key][style] =
84
+ data['default'].body[value][style];
85
+ }
86
+ }
87
+ }
88
+ }
89
+ else {
90
+ if (statusMap[status][key] === 'inherit') {
91
+ if (statusMap['default'][key] && statusMap['default'][key]) {
92
+ statusMap[status][key] = statusMap.default[key];
93
+ }
94
+ else {
95
+ var value = inheritValueMap[key] || key;
96
+ statusMap[status][key] = data['default'].body[value];
97
+ }
98
+ }
99
+ }
100
+ }
101
+ });
102
+ }
103
+ function formatStyle(themeCss, classNames, id, defaultData) {
58
104
  var e_1, _a;
59
105
  var _b;
60
- if (!css) {
106
+ if (!themeCss) {
61
107
  return { value: '', origin: [] };
62
108
  }
63
109
  var res = [];
@@ -69,7 +115,7 @@ function formatStyle(css, classNames, id) {
69
115
  };
70
116
  var _loop_1 = function (item) {
71
117
  var e_2, _c;
72
- var body = css[item.key];
118
+ var body = themeCss[item.key];
73
119
  var list = (_b = item.value) === null || _b === void 0 ? void 0 : _b.split(' ');
74
120
  var classNameList = [];
75
121
  if (!body) {
@@ -77,7 +123,7 @@ function formatStyle(css, classNames, id) {
77
123
  }
78
124
  list === null || list === void 0 ? void 0 : list.forEach(function (n) {
79
125
  if (/(\S*[C|c]lassName-\S*)/.test(n) &&
80
- !!~n.indexOf((id === null || id === void 0 ? void 0 : id.replace('u:', '').replace('-label', '').replace('-description', '').replace('-addOn', '')) || '')) {
126
+ !!~n.indexOf((id === null || id === void 0 ? void 0 : id.replace('u:', '').replace('-label', '').replace('-description', '').replace('-addOn', '').replace('-icon', '')) || '')) {
81
127
  classNameList.push(n);
82
128
  }
83
129
  });
@@ -112,6 +158,7 @@ function formatStyle(css, classNames, id) {
112
158
  statusMap.default[key] = body[key];
113
159
  }
114
160
  }
161
+ handleInheritData(statusMap, defaultData);
115
162
  var _loop_2 = function (status_1) {
116
163
  var weights = weightsList[status_1];
117
164
  var styles = [];
@@ -155,12 +202,13 @@ function formatStyle(css, classNames, id) {
155
202
  className: cx + status2string[status_1],
156
203
  content: ".".concat(cx + status2string[status_1], " {\n ").concat(styles.join('\n '), "\n}")
157
204
  });
158
- if (['hover', 'active', 'disabled'].includes(status_1)) {
159
- res.push({
160
- className: cx + '.' + status_1,
161
- content: ".".concat(cx, ".").concat(status_1, " {\n ").concat(styles.join('\n '), "\n}")
162
- });
163
- }
205
+ // TODO:切换状态暂时先不改变组件的样式
206
+ // if (['hover', 'active', 'disabled'].includes(status)) {
207
+ // res.push({
208
+ // className: cx + '.' + status,
209
+ // content: `.${cx}.${status} {\n ${styles.join('\n ')}\n}`
210
+ // });
211
+ // }
164
212
  }
165
213
  };
166
214
  for (var status_1 in statusMap) {
@@ -194,17 +242,40 @@ function formatStyle(css, classNames, id) {
194
242
  origin: res
195
243
  };
196
244
  }
197
- function insertCustomStyle(css, classNames, id) {
198
- if (!css) {
245
+ function insertCustomStyle(themeCss, classNames, id, defaultData) {
246
+ if (!themeCss) {
199
247
  return;
200
248
  }
201
- var value = formatStyle(css, classNames, id).value;
202
- insertStyle(value, (id === null || id === void 0 ? void 0 : id.replace('u:', '')) || helper.uuid());
249
+ var value = formatStyle(themeCss, classNames, id, defaultData).value;
250
+ if (value) {
251
+ insertStyle(value, (id === null || id === void 0 ? void 0 : id.replace('u:', '')) || helper.uuid());
252
+ }
253
+ }
254
+ /**
255
+ * 根据路径获取默认值
256
+ */
257
+ function getValueByPath(path, data) {
258
+ try {
259
+ if (!path || !data) {
260
+ return null;
261
+ }
262
+ var keys = path.split('.');
263
+ var value = cloneDeep__default["default"](data.component);
264
+ for (var i = 0; i < keys.length; i++) {
265
+ value = value[keys[i]];
266
+ }
267
+ return value;
268
+ }
269
+ catch (e) {
270
+ return null;
271
+ }
203
272
  }
204
273
 
205
274
  exports.addStyle = addStyle;
206
275
  exports.findOrCreactStyle = findOrCreactStyle;
207
276
  exports.formatStyle = formatStyle;
277
+ exports.getValueByPath = getValueByPath;
278
+ exports.inheritValueMap = inheritValueMap;
208
279
  exports.insertCustomStyle = insertCustomStyle;
209
280
  exports.insertStyle = insertStyle;
210
281
  exports.valueMap = valueMap;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.0.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -7,9 +7,9 @@
7
7
 
8
8
  Object.defineProperty(exports, '__esModule', { value: true });
9
9
 
10
+ require('tslib');
10
11
  require('amis-formula');
11
12
  require('moment');
12
- require('tslib');
13
13
  require('lodash/isPlainObject');
14
14
  var resolveVariableAndFilter = require('./resolveVariableAndFilter.js');
15
15
  require('./filter.js');
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.0.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1 +1,2 @@
1
1
  export declare const tokenize: (str: string, data: object, defaultFilter?: string) => string;
2
+ export declare const asyncTokenize: (str: string, data: object, defaultFilter?: string) => Promise<string>;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.0.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -7,6 +7,7 @@
7
7
 
8
8
  Object.defineProperty(exports, '__esModule', { value: true });
9
9
 
10
+ var tslib = require('tslib');
10
11
  var amisFormula = require('amis-formula');
11
12
 
12
13
  var tokenize = function (str, data, defaultFilter) {
@@ -29,5 +30,36 @@ var tokenize = function (str, data, defaultFilter) {
29
30
  return str;
30
31
  }
31
32
  };
33
+ var asyncTokenize = function (str, data, defaultFilter) {
34
+ if (defaultFilter === void 0) { defaultFilter = '| html'; }
35
+ return tslib.__awaiter(void 0, void 0, void 0, function () {
36
+ var ast, result, e_1;
37
+ return tslib.__generator(this, function (_a) {
38
+ switch (_a.label) {
39
+ case 0:
40
+ if (!str || typeof str !== 'string') {
41
+ return [2 /*return*/, str];
42
+ }
43
+ _a.label = 1;
44
+ case 1:
45
+ _a.trys.push([1, 3, , 4]);
46
+ ast = amisFormula.parse(str, {
47
+ evalMode: false,
48
+ allowFilter: true
49
+ });
50
+ return [4 /*yield*/, amisFormula.evaluateForAsync(ast, data, { defaultFilter: defaultFilter })];
51
+ case 2:
52
+ result = _a.sent();
53
+ return [2 /*return*/, "".concat(result == null ? '' : result)];
54
+ case 3:
55
+ e_1 = _a.sent();
56
+ console.warn(e_1);
57
+ return [2 /*return*/, str];
58
+ case 4: return [2 /*return*/];
59
+ }
60
+ });
61
+ });
62
+ };
32
63
 
64
+ exports.asyncTokenize = asyncTokenize;
33
65
  exports.tokenize = tokenize;
@@ -10,9 +10,10 @@ import { stripNumber } from './stripNumber';
10
10
  import { tokenize } from './tokenize';
11
11
  import { resolveVariable } from './resolveVariable';
12
12
  import { resolveVariableAndFilter } from './resolveVariableAndFilter';
13
+ import { resolveVariableAndFilterForAsync } from './resolveVariableAndFilterForAsync';
13
14
  import { dataMapping, resolveMapping, resolveMappingObject } from './dataMapping';
14
15
  import './filter';
15
- export { prettyBytes, escapeHtml, formatDuration, filterDate, relativeValueRe, parseDuration, getFilters, registerFilter, registerFunction, pickValues, isPureVariable, stripNumber, tokenize, resolveVariable, resolveVariableAndFilter, resolveMapping, resolveMappingObject, dataMapping };
16
+ export { prettyBytes, escapeHtml, formatDuration, filterDate, relativeValueRe, parseDuration, getFilters, registerFilter, registerFunction, pickValues, isPureVariable, stripNumber, tokenize, resolveVariable, resolveVariableAndFilter, resolveVariableAndFilterForAsync, resolveMapping, resolveMappingObject, dataMapping };
16
17
  export declare function register(): Enginer & {
17
18
  name: string;
18
19
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.0.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -7,9 +7,9 @@
7
7
 
8
8
  Object.defineProperty(exports, '__esModule', { value: true });
9
9
 
10
+ var tslib = require('tslib');
10
11
  var amisFormula = require('amis-formula');
11
12
  require('moment');
12
- require('tslib');
13
13
  require('lodash/isPlainObject');
14
14
  var tokenize = require('./tokenize.js');
15
15
  require('./filter.js');
@@ -41,6 +41,7 @@ function matchSynatax(str) {
41
41
  return false;
42
42
  }
43
43
  function register() {
44
+ var _this = this;
44
45
  return {
45
46
  name: 'builtin',
46
47
  test: function (str) { return typeof str === 'string' && matchSynatax(str); },
@@ -55,6 +56,20 @@ function register() {
55
56
  catch (e) {
56
57
  return "error: ".concat(e.message);
57
58
  }
59
+ },
60
+ asyncCompile: function (str, data, defaultFilter) {
61
+ if (defaultFilter === void 0) { defaultFilter = '| html'; }
62
+ return tslib.__awaiter(_this, void 0, void 0, function () {
63
+ return tslib.__generator(this, function (_a) {
64
+ try {
65
+ return [2 /*return*/, tokenize.asyncTokenize(str, data, defaultFilter)];
66
+ }
67
+ catch (e) {
68
+ return [2 /*return*/, "error: ".concat(e.message)];
69
+ }
70
+ return [2 /*return*/];
71
+ });
72
+ });
58
73
  }
59
74
  };
60
75
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.0.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -64,7 +64,8 @@ function register() {
64
64
  return {
65
65
  name: 'lodash',
66
66
  test: function (str) { return !!~str.indexOf('<%'); },
67
- compile: function (str, data) { return lodashCompile(str, data); }
67
+ compile: function (str, data) { return lodashCompile(str, data); },
68
+ asyncCompile: function (str, data) { return lodashCompile(str, data); }
68
69
  };
69
70
  }
70
71
 
@@ -2,9 +2,11 @@ export interface Enginer {
2
2
  test: (tpl: string) => boolean;
3
3
  removeEscapeToken?: (tpl: string) => string;
4
4
  compile: (tpl: string, data: object, ...rest: Array<any>) => string;
5
+ asyncCompile: (tpl: string, data: object, ...rest: Array<any>) => Promise<string>;
5
6
  }
6
7
  export declare function registerTplEnginer(name: string, enginer: Enginer): void;
7
8
  export declare function filter(tpl?: any, data?: object, ...rest: Array<any>): string;
9
+ export declare function asyncFilter(tpl?: any, data?: object, ...rest: Array<any>): Promise<string>;
8
10
  export declare function setCustomEvalExpression(fn: (expression: string, data?: any) => boolean): void;
9
11
  export declare function evalExpression(expression: string, data?: object): boolean;
10
12
  /**
package/lib/utils/tpl.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.0.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -38,6 +38,27 @@ function filter(tpl, data) {
38
38
  }
39
39
  return tpl;
40
40
  }
41
+ function asyncFilter(tpl, data) {
42
+ if (data === void 0) { data = {}; }
43
+ var rest = [];
44
+ for (var _i = 2; _i < arguments.length; _i++) {
45
+ rest[_i - 2] = arguments[_i];
46
+ }
47
+ if (!tpl || typeof tpl !== 'string') {
48
+ return Promise.resolve('');
49
+ }
50
+ var keys = Object.keys(enginers);
51
+ for (var i = 0, len = keys.length; i < len; i++) {
52
+ var enginer = enginers[keys[i]];
53
+ if (enginer.test(tpl)) {
54
+ return enginer.asyncCompile.apply(enginer, tslib.__spreadArray([tpl, data], tslib.__read(rest), false));
55
+ }
56
+ else if (enginer.removeEscapeToken) {
57
+ tpl = enginer.removeEscapeToken(tpl);
58
+ }
59
+ }
60
+ return tpl;
61
+ }
41
62
  // 缓存一下提升性能
42
63
  var EVAL_CACHE = {};
43
64
  var customEvalExpressionFn;
@@ -148,10 +169,12 @@ function evalJS(js, data) {
148
169
  registerTplEnginer(info.name, {
149
170
  test: info.test,
150
171
  compile: info.compile,
172
+ asyncCompile: info.asyncCompile,
151
173
  removeEscapeToken: info.removeEscapeToken
152
174
  });
153
175
  });
154
176
 
177
+ exports.asyncFilter = asyncFilter;
155
178
  exports.evalExpression = evalExpression;
156
179
  exports.evalExpressionWithConditionBuilder = evalExpressionWithConditionBuilder;
157
180
  exports.evalJS = evalJS;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.0.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,7 +1,10 @@
1
1
  export interface ValidateFn {
2
2
  (values: {
3
3
  [propsName: string]: any;
4
- }, value: any, arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any): boolean;
4
+ }, value: any, arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any): boolean | {
5
+ error: boolean;
6
+ msg?: string;
7
+ };
5
8
  }
6
9
  export declare const validations: {
7
10
  [propsName: string]: ValidateFn;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.0.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -358,12 +358,16 @@ var validateMessages = {
358
358
  isVariableName: 'validate.isVariableName'
359
359
  };
360
360
  function validate(value, values, rules, messages, __) {
361
+ var _a;
361
362
  if (__ === void 0) { __ = function (str) { return str; }; }
362
363
  var errors = [];
363
- rules &&
364
- Object.keys(rules).forEach(function (ruleName) {
364
+ if (rules) {
365
+ var ruleNames = Object.keys(rules);
366
+ var length_1 = ruleNames.length;
367
+ for (var index = 0; index < length_1; index++) {
368
+ var ruleName = ruleNames[index];
365
369
  if (!rules[ruleName] && rules[ruleName] !== 0) {
366
- return;
370
+ continue;
367
371
  }
368
372
  else if (typeof validations[ruleName] !== 'function') {
369
373
  throw new Error('Validation `' + ruleName + '` not exists!');
@@ -375,19 +379,30 @@ function validate(value, values, rules, messages, __) {
375
379
  }
376
380
  return item;
377
381
  });
378
- if (!fn.apply(void 0, tslib.__spreadArray([values, value], tslib.__read(args), false))) {
382
+ var validateRes = fn.apply(void 0, tslib.__spreadArray([values, value], tslib.__read(args), false));
383
+ // addRule 允许返回
384
+ // {error: true, msg: '错误提示'}
385
+ // 格式的信息来灵活展示错误
386
+ var fnResErrorMsg = '';
387
+ if (typeof validateRes === 'object' &&
388
+ validateRes.error === true) {
389
+ fnResErrorMsg = (_a = validateRes === null || validateRes === void 0 ? void 0 : validateRes.msg) !== null && _a !== void 0 ? _a : '';
390
+ }
391
+ if (!validateRes || fnResErrorMsg) {
379
392
  var msgRuleName = ruleName;
380
393
  if (Array.isArray(value)) {
381
394
  msgRuleName = "".concat(ruleName, "Array");
382
395
  }
383
- errors.push({
384
- rule: ruleName,
385
- msg: tpl.filter(__((messages && messages[ruleName]) ||
386
- validateMessages[msgRuleName] ||
387
- validateMessages[ruleName]), tslib.__assign({}, [''].concat(args)))
388
- });
396
+ return [{
397
+ rule: ruleName,
398
+ msg: tpl.filter(__((messages && messages[ruleName]) ||
399
+ fnResErrorMsg ||
400
+ validateMessages[msgRuleName] ||
401
+ validateMessages[ruleName]), tslib.__assign({}, [''].concat(args)))
402
+ }];
389
403
  }
390
- });
404
+ }
405
+ }
391
406
  return errors;
392
407
  }
393
408
  function validateObject(values, rules, messages, __) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amis-core",
3
- "version": "2.9.0",
3
+ "version": "3.0.0",
4
4
  "description": "amis-core",
5
5
  "main": "lib/index.js",
6
6
  "module": "esm/index.js",
@@ -45,7 +45,7 @@
45
45
  "esm"
46
46
  ],
47
47
  "dependencies": {
48
- "amis-formula": "^2.9.0",
48
+ "amis-formula": "^3.0.0",
49
49
  "classnames": "2.3.1",
50
50
  "file-saver": "^2.0.2",
51
51
  "hoist-non-react-statics": "^3.3.2",
@@ -101,5 +101,5 @@
101
101
  "/.rollup.cache/"
102
102
  ]
103
103
  },
104
- "gitHead": "cc289e56da53504995df57c84b517f5801d9fd0f"
104
+ "gitHead": "9220b4c13f4d042ebf2bf1dd8ee8e24d11e39141"
105
105
  }