amis-core 2.9.0 → 3.1.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 (331) hide show
  1. package/esm/Root.d.ts +89 -4
  2. package/esm/Root.js +15 -4
  3. package/esm/RootRenderer.d.ts +3 -1
  4. package/esm/RootRenderer.js +9 -3
  5. package/esm/SchemaRenderer.d.ts +4 -2
  6. package/esm/SchemaRenderer.js +32 -24
  7. package/esm/Scoped.d.ts +8 -0
  8. package/esm/Scoped.js +20 -5
  9. package/esm/StatusScoped.d.ts +58 -0
  10. package/esm/StatusScoped.js +54 -0
  11. package/esm/WithRootStore.d.ts +2 -2
  12. package/esm/WithRootStore.js +1 -1
  13. package/esm/WithStore.js +6 -2
  14. package/esm/actions/Action.d.ts +1 -0
  15. package/esm/actions/Action.js +19 -5
  16. package/esm/actions/AjaxAction.js +1 -1
  17. package/esm/actions/BreakAction.js +1 -1
  18. package/esm/actions/BroadcastAction.js +1 -1
  19. package/esm/actions/CmptAction.js +8 -7
  20. package/esm/actions/ContinueAction.js +1 -1
  21. package/esm/actions/CopyAction.js +1 -1
  22. package/esm/actions/CustomAction.js +4 -4
  23. package/esm/actions/DialogAction.d.ts +16 -2
  24. package/esm/actions/DialogAction.js +23 -7
  25. package/esm/actions/DrawerAction.js +1 -1
  26. package/esm/actions/EmailAction.js +1 -1
  27. package/esm/actions/LinkAction.js +1 -1
  28. package/esm/actions/LoopAction.js +1 -1
  29. package/esm/actions/PageAction.js +1 -1
  30. package/esm/actions/ParallelAction.js +1 -1
  31. package/esm/actions/SwitchAction.js +1 -1
  32. package/esm/actions/ToastAction.js +1 -1
  33. package/esm/components/CustomStyle.d.ts +13 -0
  34. package/esm/components/CustomStyle.js +18 -0
  35. package/esm/components/LazyComponent.d.ts +1 -1
  36. package/esm/components/LazyComponent.js +1 -1
  37. package/esm/components/Overlay.d.ts +3 -3
  38. package/esm/components/Overlay.js +1 -1
  39. package/esm/components/PopOver.d.ts +2 -2
  40. package/esm/components/PopOver.js +1 -1
  41. package/esm/env.d.ts +10 -2
  42. package/esm/env.js +1 -1
  43. package/esm/envOverwrite.js +1 -5
  44. package/esm/factory.d.ts +5 -3
  45. package/esm/factory.js +3 -3
  46. package/esm/index.d.ts +11 -4
  47. package/esm/index.js +55 -33
  48. package/esm/locale.d.ts +2 -2
  49. package/esm/locale.js +10 -3
  50. package/esm/renderers/Form.d.ts +3 -2
  51. package/esm/renderers/Form.js +216 -180
  52. package/esm/renderers/Item.d.ts +55 -41
  53. package/esm/renderers/Item.js +30 -19
  54. package/esm/renderers/Options.js +11 -4
  55. package/esm/renderers/Placeholder.js +1 -1
  56. package/esm/renderers/builtin.js +1 -1
  57. package/esm/renderers/register.js +1 -1
  58. package/esm/renderers/wrapControl.d.ts +2 -2
  59. package/esm/renderers/wrapControl.js +13 -16
  60. package/esm/store/app.d.ts +1 -0
  61. package/esm/store/app.js +1 -1
  62. package/esm/store/combo.d.ts +3 -0
  63. package/esm/store/combo.js +1 -1
  64. package/esm/store/crud.d.ts +2 -0
  65. package/esm/store/crud.js +31 -9
  66. package/esm/store/form.d.ts +1 -0
  67. package/esm/store/form.js +10 -4
  68. package/esm/store/formItem.js +2 -2
  69. package/esm/store/iRenderer.d.ts +1 -0
  70. package/esm/store/iRenderer.js +54 -13
  71. package/esm/store/index.js +1 -1
  72. package/esm/store/list.d.ts +1 -0
  73. package/esm/store/list.js +7 -3
  74. package/esm/store/manager.js +1 -1
  75. package/esm/store/modal.d.ts +1 -0
  76. package/esm/store/modal.js +1 -1
  77. package/esm/store/node.js +1 -1
  78. package/esm/store/pagination.d.ts +1 -0
  79. package/esm/store/pagination.js +2 -2
  80. package/esm/store/root.d.ts +4 -6
  81. package/esm/store/root.js +53 -24
  82. package/esm/store/service.d.ts +1 -0
  83. package/esm/store/service.js +1 -1
  84. package/esm/store/status.d.ts +12 -0
  85. package/esm/store/status.js +38 -0
  86. package/esm/store/table.d.ts +28 -23
  87. package/esm/store/table.js +26 -5
  88. package/esm/store/table2.d.ts +7 -6
  89. package/esm/store/table2.js +27 -23
  90. package/esm/theme.d.ts +1 -1
  91. package/esm/theme.js +1 -1
  92. package/esm/types.d.ts +7 -1
  93. package/esm/utils/Animation.js +1 -1
  94. package/esm/utils/ColorScale.js +1 -1
  95. package/esm/utils/DataSchema.js +1 -1
  96. package/esm/utils/DataScope.d.ts +3 -5
  97. package/esm/utils/DataScope.js +88 -31
  98. package/esm/utils/RootClose.js +1 -1
  99. package/esm/utils/SimpleMap.js +1 -1
  100. package/esm/utils/api.js +14 -5
  101. package/esm/utils/attachmentAdpator.js +2 -2
  102. package/esm/utils/autobind.js +1 -1
  103. package/esm/utils/columnsSplit.js +1 -1
  104. package/esm/utils/dataMapping.js +1 -1
  105. package/esm/utils/date.d.ts +7 -0
  106. package/esm/utils/date.js +34 -2
  107. package/esm/utils/debug.js +4 -4
  108. package/esm/utils/decodeEntity.js +1 -1
  109. package/esm/utils/dom.d.ts +3 -0
  110. package/esm/utils/dom.js +47 -10
  111. package/esm/utils/errors.js +1 -1
  112. package/esm/utils/escapeHtml.js +1 -1
  113. package/esm/utils/filter-schema.js +1 -1
  114. package/esm/utils/filter.js +1 -1
  115. package/esm/utils/formatDuration.js +1 -1
  116. package/esm/utils/formula.js +2 -2
  117. package/esm/utils/getVariable.js +1 -1
  118. package/esm/utils/grammar.js +3 -3
  119. package/esm/utils/handleAction.js +1 -1
  120. package/esm/utils/helper.d.ts +9 -2
  121. package/esm/utils/helper.js +52 -20
  122. package/esm/utils/highlight.js +1 -1
  123. package/esm/utils/icon.d.ts +6 -1
  124. package/esm/utils/icon.js +6 -1
  125. package/esm/utils/image.js +1 -1
  126. package/esm/utils/isPureVariable.js +3 -3
  127. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  128. package/esm/utils/keyToPath.js +1 -1
  129. package/esm/utils/makeSorter.js +1 -1
  130. package/esm/utils/memoryParse.d.ts +17 -0
  131. package/esm/utils/memoryParse.js +26 -0
  132. package/esm/utils/normalizeLink.js +1 -1
  133. package/esm/utils/normalizeOptions.js +4 -2
  134. package/esm/utils/object.d.ts +2 -0
  135. package/esm/utils/object.js +27 -2
  136. package/esm/utils/offset.js +1 -1
  137. package/esm/utils/offsetParent.js +1 -1
  138. package/esm/utils/optionValueCompare.js +1 -1
  139. package/esm/utils/position.js +1 -1
  140. package/esm/utils/prettyBytes.js +1 -1
  141. package/esm/utils/renderer-event.js +35 -32
  142. package/esm/utils/replaceText.js +1 -1
  143. package/esm/utils/resize-sensor.js +1 -1
  144. package/esm/utils/resolveCondition.d.ts +1 -0
  145. package/esm/utils/resolveCondition.js +19 -4
  146. package/esm/utils/resolveVariable.js +4 -3
  147. package/esm/utils/resolveVariableAndFilter.js +1 -1
  148. package/esm/utils/resolveVariableAndFilterForAsync.d.ts +6 -1
  149. package/esm/utils/resolveVariableAndFilterForAsync.js +23 -5
  150. package/esm/utils/scrollPosition.js +1 -1
  151. package/esm/utils/string2regExp.js +1 -1
  152. package/esm/utils/stripNumber.js +1 -1
  153. package/esm/utils/style-helper.d.ts +12 -4
  154. package/esm/utils/style-helper.js +96 -19
  155. package/esm/utils/style.js +2 -2
  156. package/esm/utils/toNumber.js +1 -1
  157. package/esm/utils/tokenize.js +1 -1
  158. package/esm/utils/tpl-builtin.d.ts +2 -1
  159. package/esm/utils/tpl-builtin.js +19 -2
  160. package/esm/utils/tpl-lodash.js +3 -2
  161. package/esm/utils/tpl.d.ts +2 -0
  162. package/esm/utils/tpl.js +24 -2
  163. package/esm/utils/uncontrollable.js +1 -1
  164. package/esm/utils/validations.d.ts +4 -1
  165. package/esm/utils/validations.js +27 -12
  166. package/lib/Root.d.ts +89 -4
  167. package/lib/Root.js +15 -4
  168. package/lib/RootRenderer.d.ts +3 -1
  169. package/lib/RootRenderer.js +8 -2
  170. package/lib/SchemaRenderer.d.ts +4 -2
  171. package/lib/SchemaRenderer.js +32 -23
  172. package/lib/Scoped.d.ts +8 -0
  173. package/lib/Scoped.js +20 -4
  174. package/lib/StatusScoped.d.ts +58 -0
  175. package/lib/StatusScoped.js +63 -0
  176. package/lib/WithRootStore.d.ts +2 -2
  177. package/lib/WithRootStore.js +1 -1
  178. package/lib/WithStore.js +6 -2
  179. package/lib/actions/Action.d.ts +1 -0
  180. package/lib/actions/Action.js +19 -5
  181. package/lib/actions/AjaxAction.js +1 -1
  182. package/lib/actions/BreakAction.js +1 -1
  183. package/lib/actions/BroadcastAction.js +1 -1
  184. package/lib/actions/CmptAction.js +8 -7
  185. package/lib/actions/ContinueAction.js +1 -1
  186. package/lib/actions/CopyAction.js +1 -1
  187. package/lib/actions/CustomAction.js +4 -4
  188. package/lib/actions/DialogAction.d.ts +16 -2
  189. package/lib/actions/DialogAction.js +23 -7
  190. package/lib/actions/DrawerAction.js +1 -1
  191. package/lib/actions/EmailAction.js +1 -1
  192. package/lib/actions/LinkAction.js +1 -1
  193. package/lib/actions/LoopAction.js +1 -1
  194. package/lib/actions/PageAction.js +1 -1
  195. package/lib/actions/ParallelAction.js +1 -1
  196. package/lib/actions/SwitchAction.js +1 -1
  197. package/lib/actions/ToastAction.js +1 -1
  198. package/lib/components/CustomStyle.d.ts +13 -0
  199. package/lib/components/CustomStyle.js +22 -0
  200. package/lib/components/LazyComponent.d.ts +1 -1
  201. package/lib/components/LazyComponent.js +1 -1
  202. package/lib/components/Overlay.d.ts +3 -3
  203. package/lib/components/Overlay.js +1 -1
  204. package/lib/components/PopOver.d.ts +2 -2
  205. package/lib/components/PopOver.js +1 -1
  206. package/lib/env.d.ts +10 -2
  207. package/lib/env.js +1 -1
  208. package/lib/envOverwrite.js +1 -5
  209. package/lib/factory.d.ts +5 -3
  210. package/lib/factory.js +3 -3
  211. package/lib/index.d.ts +11 -4
  212. package/lib/index.js +61 -23
  213. package/lib/locale.d.ts +2 -2
  214. package/lib/locale.js +10 -3
  215. package/lib/renderers/Form.d.ts +3 -2
  216. package/lib/renderers/Form.js +215 -179
  217. package/lib/renderers/Item.d.ts +55 -41
  218. package/lib/renderers/Item.js +30 -19
  219. package/lib/renderers/Options.js +11 -4
  220. package/lib/renderers/Placeholder.js +1 -1
  221. package/lib/renderers/builtin.js +1 -1
  222. package/lib/renderers/register.js +1 -1
  223. package/lib/renderers/wrapControl.d.ts +2 -2
  224. package/lib/renderers/wrapControl.js +12 -15
  225. package/lib/store/app.d.ts +1 -0
  226. package/lib/store/app.js +1 -1
  227. package/lib/store/combo.d.ts +3 -0
  228. package/lib/store/combo.js +1 -1
  229. package/lib/store/crud.d.ts +2 -0
  230. package/lib/store/crud.js +31 -9
  231. package/lib/store/form.d.ts +1 -0
  232. package/lib/store/form.js +10 -4
  233. package/lib/store/formItem.js +2 -2
  234. package/lib/store/iRenderer.d.ts +1 -0
  235. package/lib/store/iRenderer.js +53 -12
  236. package/lib/store/index.js +1 -1
  237. package/lib/store/list.d.ts +1 -0
  238. package/lib/store/list.js +7 -3
  239. package/lib/store/manager.js +1 -1
  240. package/lib/store/modal.d.ts +1 -0
  241. package/lib/store/modal.js +1 -1
  242. package/lib/store/node.js +1 -1
  243. package/lib/store/pagination.d.ts +1 -0
  244. package/lib/store/pagination.js +2 -2
  245. package/lib/store/root.d.ts +4 -6
  246. package/lib/store/root.js +52 -23
  247. package/lib/store/service.d.ts +1 -0
  248. package/lib/store/service.js +1 -1
  249. package/lib/store/status.d.ts +12 -0
  250. package/lib/store/status.js +42 -0
  251. package/lib/store/table.d.ts +28 -23
  252. package/lib/store/table.js +26 -5
  253. package/lib/store/table2.d.ts +7 -6
  254. package/lib/store/table2.js +27 -23
  255. package/lib/theme.d.ts +1 -1
  256. package/lib/theme.js +1 -1
  257. package/lib/types.d.ts +7 -1
  258. package/lib/utils/Animation.js +1 -1
  259. package/lib/utils/ColorScale.js +1 -1
  260. package/lib/utils/DataSchema.js +1 -1
  261. package/lib/utils/DataScope.d.ts +3 -5
  262. package/lib/utils/DataScope.js +86 -29
  263. package/lib/utils/RootClose.js +1 -1
  264. package/lib/utils/SimpleMap.js +1 -1
  265. package/lib/utils/api.js +13 -4
  266. package/lib/utils/attachmentAdpator.js +2 -2
  267. package/lib/utils/autobind.js +1 -1
  268. package/lib/utils/columnsSplit.js +1 -1
  269. package/lib/utils/dataMapping.js +1 -1
  270. package/lib/utils/date.d.ts +7 -0
  271. package/lib/utils/date.js +34 -1
  272. package/lib/utils/debug.js +4 -4
  273. package/lib/utils/decodeEntity.js +1 -1
  274. package/lib/utils/dom.d.ts +3 -0
  275. package/lib/utils/dom.js +48 -9
  276. package/lib/utils/errors.js +1 -1
  277. package/lib/utils/escapeHtml.js +1 -1
  278. package/lib/utils/filter-schema.js +1 -1
  279. package/lib/utils/filter.js +1 -1
  280. package/lib/utils/formatDuration.js +1 -1
  281. package/lib/utils/formula.js +2 -2
  282. package/lib/utils/getVariable.js +1 -1
  283. package/lib/utils/grammar.js +3 -3
  284. package/lib/utils/handleAction.js +1 -1
  285. package/lib/utils/helper.d.ts +9 -2
  286. package/lib/utils/helper.js +53 -19
  287. package/lib/utils/highlight.js +1 -1
  288. package/lib/utils/icon.d.ts +6 -1
  289. package/lib/utils/icon.js +6 -1
  290. package/lib/utils/image.js +1 -1
  291. package/lib/utils/isPureVariable.js +3 -3
  292. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  293. package/lib/utils/keyToPath.js +1 -1
  294. package/lib/utils/makeSorter.js +1 -1
  295. package/lib/utils/memoryParse.d.ts +17 -0
  296. package/lib/utils/memoryParse.js +30 -0
  297. package/lib/utils/normalizeLink.js +1 -1
  298. package/lib/utils/normalizeOptions.js +4 -2
  299. package/lib/utils/object.d.ts +2 -0
  300. package/lib/utils/object.js +28 -1
  301. package/lib/utils/offset.js +1 -1
  302. package/lib/utils/offsetParent.js +1 -1
  303. package/lib/utils/optionValueCompare.js +1 -1
  304. package/lib/utils/position.js +1 -1
  305. package/lib/utils/prettyBytes.js +1 -1
  306. package/lib/utils/renderer-event.js +35 -32
  307. package/lib/utils/replaceText.js +1 -1
  308. package/lib/utils/resize-sensor.js +1 -1
  309. package/lib/utils/resolveCondition.d.ts +1 -0
  310. package/lib/utils/resolveCondition.js +19 -3
  311. package/lib/utils/resolveVariable.js +3 -2
  312. package/lib/utils/resolveVariableAndFilter.js +1 -1
  313. package/lib/utils/resolveVariableAndFilterForAsync.d.ts +6 -1
  314. package/lib/utils/resolveVariableAndFilterForAsync.js +22 -3
  315. package/lib/utils/scrollPosition.js +1 -1
  316. package/lib/utils/string2regExp.js +1 -1
  317. package/lib/utils/stripNumber.js +1 -1
  318. package/lib/utils/style-helper.d.ts +12 -4
  319. package/lib/utils/style-helper.js +101 -18
  320. package/lib/utils/style.js +2 -2
  321. package/lib/utils/toNumber.js +1 -1
  322. package/lib/utils/tokenize.js +1 -1
  323. package/lib/utils/tpl-builtin.d.ts +2 -1
  324. package/lib/utils/tpl-builtin.js +19 -2
  325. package/lib/utils/tpl-lodash.js +3 -2
  326. package/lib/utils/tpl.d.ts +2 -0
  327. package/lib/utils/tpl.js +24 -1
  328. package/lib/utils/uncontrollable.js +1 -1
  329. package/lib/utils/validations.d.ts +4 -1
  330. package/lib/utils/validations.js +27 -12
  331. package/package.json +3 -3
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -80,26 +80,89 @@ var DataScope = /** @class */ (function () {
80
80
  }
81
81
  return false;
82
82
  };
83
+ DataScope.prototype.assignSchema = function (target, schema) {
84
+ var e_2, _a;
85
+ // key相同,type也相同
86
+ if (target.type && target.type === schema.type) {
87
+ if (target.type === 'array') {
88
+ // 先只考虑items,不考虑contains
89
+ if (target.items) {
90
+ if (Array.isArray(target.items)) {
91
+ if (schema.items) {
92
+ if (Array.isArray(schema.items)) {
93
+ // 如果都是数组,就后者覆盖前者
94
+ return schema.items;
95
+ }
96
+ else {
97
+ // 否则,追加
98
+ return tslib.__assign(tslib.__assign({}, target), { items: tslib.__spreadArray(tslib.__spreadArray([], tslib.__read(target.items), false), [schema.items], false) });
99
+ }
100
+ }
101
+ else {
102
+ return tslib.__assign(tslib.__assign({}, target), schema);
103
+ }
104
+ }
105
+ else {
106
+ // 非数组,则merge
107
+ return tslib.__assign(tslib.__assign({}, target), { items: this.assignSchema(target.items, schema.items) });
108
+ }
109
+ }
110
+ else {
111
+ return schema;
112
+ }
113
+ }
114
+ else if (target.type === 'object' && target.properties) {
115
+ var properties = {};
116
+ try {
117
+ // 合并属性
118
+ for (var _b = tslib.__values(Array.from(new Set(tslib.__spreadArray(tslib.__spreadArray([], tslib.__read(Object.keys(target.properties)), false), tslib.__read(Object.keys(schema.properties)), false)))), _c = _b.next(); !_c.done; _c = _b.next()) {
119
+ var key = _c.value;
120
+ var value = target.properties[key];
121
+ if (value) {
122
+ properties[key] = schema.properties[key]
123
+ ? this.assignSchema(value, schema.properties[key])
124
+ : value;
125
+ }
126
+ else {
127
+ properties[key] = schema.properties[key];
128
+ }
129
+ }
130
+ }
131
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
132
+ finally {
133
+ try {
134
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
135
+ }
136
+ finally { if (e_2) throw e_2.error; }
137
+ }
138
+ return tslib.__assign(tslib.__assign({}, target), { properties: properties });
139
+ }
140
+ else {
141
+ return schema;
142
+ }
143
+ }
144
+ else {
145
+ // key相同、type不同
146
+ if (Array.isArray(target.oneOf)) {
147
+ return tslib.__assign(tslib.__assign({}, target), { oneOf: tslib.__spreadArray(tslib.__spreadArray([], tslib.__read(target.oneOf), false), [schema], false) });
148
+ }
149
+ else {
150
+ return tslib.__assign(tslib.__assign({}, target), { oneOf: [target, schema] });
151
+ }
152
+ }
153
+ };
83
154
  DataScope.prototype.getMergedSchema = function () {
155
+ var _this = this;
84
156
  var mergedSchema = {
85
157
  type: 'object',
86
158
  properties: {}
87
159
  };
88
- // todo 以后再来细化这一块,先粗略的写个大概
89
160
  this.schemas.forEach(function (schema) {
90
161
  var properties = schema.properties || {};
91
162
  Object.keys(properties).forEach(function (key) {
92
163
  var value = properties[key];
93
164
  if (mergedSchema.properties[key]) {
94
- if (Array.isArray(mergedSchema.properties[key].oneOf)) {
95
- mergedSchema.properties[key].oneOf.push();
96
- }
97
- else if (mergedSchema.properties[key].type &&
98
- mergedSchema.properties[key].type !== value.type) {
99
- mergedSchema.properties[key] = {
100
- oneOf: [mergedSchema.properties[key], value]
101
- };
102
- }
165
+ mergedSchema.properties[key] = _this.assignSchema(mergedSchema.properties[key], value);
103
166
  }
104
167
  else {
105
168
  mergedSchema.properties[key] = value;
@@ -108,23 +171,17 @@ var DataScope = /** @class */ (function () {
108
171
  });
109
172
  return mergedSchema;
110
173
  };
111
- DataScope.prototype.buildOptions = function (options, schema, path, key,
112
- /** 是否数组元素,数组元素的内容将获取每个成员的对应值 */
113
- isArrayItem,
114
- /** 不是所有的都可以选择,但不影响子元素 */
115
- disabled) {
174
+ DataScope.prototype.buildOptions = function (options, schema, path, key) {
116
175
  var _this = this;
117
176
  var _a;
118
177
  if (path === void 0) { path = ''; }
119
178
  if (key === void 0) { key = ''; }
120
- if (isArrayItem === void 0) { isArrayItem = false; }
121
179
  // todo 支持 oneOf, anyOf
122
180
  var option = {
123
181
  label: schema.title || key,
124
182
  value: path,
125
183
  type: schema.type,
126
- tag: (_a = schema.description) !== null && _a !== void 0 ? _a : schema.type,
127
- disabled: disabled
184
+ tag: (_a = schema.description) !== null && _a !== void 0 ? _a : schema.type
128
185
  };
129
186
  options.push(option);
130
187
  if (schema.type === 'object' && schema.properties) {
@@ -132,17 +189,13 @@ var DataScope = /** @class */ (function () {
132
189
  var keys = Object.keys(schema.properties);
133
190
  keys.forEach(function (key) {
134
191
  var child = schema.properties[key];
135
- var newPath = isArrayItem ? "ARRAYMAP(".concat(path, ", item => item.").concat(key, ")") : (path + (path ? '.' : '') + key);
136
- _this.buildOptions(option.children, child, newPath, key, isArrayItem, false);
192
+ _this.buildOptions(option.children, child, path + (path ? '.' : '') + key, key);
137
193
  });
138
194
  }
139
195
  else if (schema.type === 'array' && schema.items) {
140
196
  option.children = [];
141
- this.buildOptions(option.children, tslib.__assign({ title: '成员' }, schema.items), path, 'items', true, true);
142
- this.buildOptions(option.children, {
143
- title: '总数',
144
- type: 'number'
145
- }, path + (path ? '.' : '') + 'length', 'length', true, isArrayItem);
197
+ this.buildOptions(option.children, tslib.__assign(tslib.__assign({ title: '成员' }, schema.items), { disabled: true }), path, 'items');
198
+ option.children = helper.mapTree(option.children, function (item) { return (tslib.__assign(tslib.__assign({}, item), { disabled: true })); });
146
199
  }
147
200
  };
148
201
  DataScope.prototype.getDataPropsAsOptions = function () {
@@ -151,7 +204,7 @@ var DataScope = /** @class */ (function () {
151
204
  return variables[0].children;
152
205
  };
153
206
  DataScope.prototype.getSchemaByPath = function (path) {
154
- var e_2, _a;
207
+ var e_3, _a;
155
208
  var parts = keyToPath.keyToPath(path);
156
209
  try {
157
210
  for (var _b = tslib.__values(this.schemas), _c = _b.next(); !_c.done; _c = _b.next()) {
@@ -167,15 +220,19 @@ var DataScope = /** @class */ (function () {
167
220
  }
168
221
  }
169
222
  }
170
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
223
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
171
224
  finally {
172
225
  try {
173
226
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
174
227
  }
175
- finally { if (e_2) throw e_2.error; }
228
+ finally { if (e_3) throw e_3.error; }
176
229
  }
177
230
  return null;
178
231
  };
232
+ DataScope.prototype.getSchemaById = function (id) {
233
+ var _a;
234
+ return (_a = this.schemas) === null || _a === void 0 ? void 0 : _a.find(function (item) { return item.$id === id; });
235
+ };
179
236
  return DataScope;
180
237
  }());
181
238
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
package/lib/utils/api.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -14,6 +14,7 @@ var escapeHtml = require('./escapeHtml.js');
14
14
  require('moment');
15
15
  var object = require('./object.js');
16
16
  var tokenize = require('./tokenize.js');
17
+ var memoryParse = require('./memoryParse.js');
17
18
  var dataMapping = require('./dataMapping.js');
18
19
  require('./filter.js');
19
20
  var tpl = require('./tpl.js');
@@ -72,7 +73,7 @@ function buildApi(api, data, options) {
72
73
  var raw = (api.url = api.url || '');
73
74
  var ast = undefined;
74
75
  try {
75
- ast = amisFormula.parse(api.url);
76
+ ast = memoryParse.memoryParse(api.url);
76
77
  }
77
78
  catch (e) {
78
79
  console.warn("api \u914D\u7F6E\u8BED\u6CD5\u51FA\u9519\uFF1A".concat(e));
@@ -266,7 +267,8 @@ function responseAdaptor(ret, api) {
266
267
  // 如果是文本类型就尝试解析一下
267
268
  if (ret.headers &&
268
269
  contentType.startsWith('text/') &&
269
- !contentType.includes('markdown')) {
270
+ !contentType.includes('markdown') &&
271
+ api.responseType !== 'blob') {
270
272
  try {
271
273
  data = JSON.parse(data);
272
274
  if (typeof data === 'undefined') {
@@ -359,7 +361,10 @@ function wrapFetcher(fn, tracker) {
359
361
  api = api.requestAdaptor(api) || api;
360
362
  debug.debug('api', 'after requestAdaptor', api);
361
363
  }
362
- if (api.data && (helper.hasFile(api.data) || api.dataType === 'form-data')) {
364
+ if (api.data &&
365
+ (api.data instanceof FormData ||
366
+ helper.hasFile(api.data) ||
367
+ api.dataType === 'form-data')) {
363
368
  api.data =
364
369
  api.data instanceof FormData
365
370
  ? api.data
@@ -531,6 +536,10 @@ function isApiOutdated(prevApi, nextApi, prevData, nextData) {
531
536
  if (!nextApi) {
532
537
  return false;
533
538
  }
539
+ // 通常是编辑器里加了属性,一开始没值,后来有了
540
+ if (prevApi === undefined && !nextApi !== undefined) {
541
+ return true;
542
+ }
534
543
  nextApi = normalizeApi(nextApi);
535
544
  if (nextApi.autoRefresh === false) {
536
545
  return false;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -22,7 +22,7 @@ function attachmentAdpator(response, __) {
22
22
  if (disposition && disposition.indexOf('attachment') !== -1) {
23
23
  // disposition 有可能是 attachment; filename="??.xlsx"; filename*=UTF-8''%E4%B8%AD%E6%96%87.xlsx
24
24
  // 这种情况下最后一个才是正确的文件名
25
- var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)$/;
25
+ var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
26
26
  var matches = disposition.match(filenameRegex);
27
27
  if (matches && matches.length) {
28
28
  filename = matches[1].replace("UTF-8''", '').replace(/['"]/g, '');
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -2,3 +2,10 @@ import moment from 'moment';
2
2
  export declare const relativeValueRe: RegExp;
3
3
  export declare const filterDate: (value: string, data?: object, format?: string, utc?: boolean) => moment.Moment;
4
4
  export declare function parseDuration(str: string): moment.Duration | undefined;
5
+ /**
6
+ * 解析日期,先尝试用 format 解析,如果失败,再尝试用其他标准格式解析
7
+ * @param value
8
+ * @param format
9
+ * @returns
10
+ */
11
+ export declare function normalizeDate(value: any, format?: string): moment.Moment | undefined;
package/lib/utils/date.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -84,7 +84,40 @@ function parseDuration(str) {
84
84
  }
85
85
  return;
86
86
  }
87
+ /**
88
+ * 解析日期,先尝试用 format 解析,如果失败,再尝试用其他标准格式解析
89
+ * @param value
90
+ * @param format
91
+ * @returns
92
+ */
93
+ function normalizeDate(value, format) {
94
+ if (!value || value === '0') {
95
+ return undefined;
96
+ }
97
+ var v = moment__default["default"](value, format, true);
98
+ if (v.isValid()) {
99
+ return v;
100
+ }
101
+ if (typeof value === 'string' || typeof value === 'number') {
102
+ var formats = ['', 'YYYY-MM-DD HH:mm:ss', 'X'];
103
+ if (/^\d{10}((\.\d+)*)$/.test(value.toString())) {
104
+ formats = ['X', 'x', 'YYYY-MM-DD HH:mm:ss', ''];
105
+ }
106
+ else if (/^\d{13}((\.\d+)*)$/.test(value.toString())) {
107
+ formats = ['x', 'X', 'YYYY-MM-DD HH:mm:ss', ''];
108
+ }
109
+ while (formats.length) {
110
+ var format_1 = formats.shift();
111
+ var date = moment__default["default"](value, format_1);
112
+ if (date.isValid()) {
113
+ return date;
114
+ }
115
+ }
116
+ }
117
+ return undefined;
118
+ }
87
119
 
88
120
  exports.filterDate = filterDate;
121
+ exports.normalizeDate = normalizeDate;
89
122
  exports.parseDuration = parseDuration;
90
123
  exports.relativeValueRe = relativeValueRe;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -361,12 +361,12 @@ var DebugWrapper = /** @class */ (function (_super) {
361
361
  * @param ext 扩展信息
362
362
  */
363
363
  function debug(cat, msg, ext) {
364
- console.groupCollapsed('[amis debug]', msg);
365
- console.debug(ext);
366
- console.groupEnd();
367
364
  if (!isEnabled) {
368
365
  return;
369
366
  }
367
+ console.groupCollapsed('[amis debug]', msg);
368
+ console.debug(ext);
369
+ console.groupEnd();
370
370
  var log = {
371
371
  cat: cat,
372
372
  level: 'debug',
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  export declare function getContainer(container: any, defaultContainer: any): any;
2
3
  export declare function ownerDocument(componentOrElement: any): Document;
3
4
  export declare function calculatePosition(placement: any, overlayNode: any, target: HTMLElement, container: any, padding?: any, customOffset?: [number, number]): {
@@ -11,3 +12,5 @@ export declare function calculatePosition(placement: any, overlayNode: any, targ
11
12
  * 专门用来获取样式的像素值,默认返回 0
12
13
  */
13
14
  export declare function getStyleNumber(element: HTMLElement, styleName: string): number;
15
+ /** 根据关键字高亮显示文本内容 */
16
+ export declare function renderTextByKeyword(rendererText: string, curKeyword: string): string | React.JSX.Element;
package/lib/utils/dom.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -9,12 +9,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
9
9
 
10
10
  var tslib = require('tslib');
11
11
  var ReactDOM = require('react-dom');
12
+ var React = require('react');
12
13
  var offset = require('./offset.js');
13
14
  var position = require('./position.js');
14
15
 
15
16
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
17
 
17
18
  var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
19
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
18
20
 
19
21
  function getContainer(container, defaultContainer) {
20
22
  container = typeof container === 'function' ? container() : container;
@@ -86,16 +88,27 @@ function calculatePosition(placement, overlayNode, target, container, padding, c
86
88
  ? clip2.height / overlayNode.offsetHeight
87
89
  : 1;
88
90
  // auto 尝试四个方向对齐。
89
- placement =
90
- placement === 'auto'
91
- ? 'left-bottom-left-top right-bottom-right-top left-top-left-bottom right-top-right-bottom left-bottom-left-top'
92
- : placement;
91
+ var isAuto = placement === 'auto';
92
+ // 兜底方向
93
+ var autoDefaultPlacement = 'left-bottom-left-top';
94
+ placement = isAuto
95
+ ? "left-bottom-left-top right-bottom-right-top left-top-left-bottom right-top-right-bottom ".concat(autoDefaultPlacement)
96
+ : placement;
93
97
  var positionLeft = 0, positionTop = 0, arrowOffsetLeft = '', arrowOffsetTop = '', activePlacement = placement;
94
98
  if (~placement.indexOf('-')) {
95
99
  var tests = placement.split(/\s+/);
100
+ // 收集可见方向
101
+ var visiblePlacement = {};
96
102
  while (tests.length) {
97
103
  var current = (activePlacement = tests.shift());
98
- var _b = tslib.__read(current.split('-'), 4), atX = _b[0], atY = _b[1], myX = _b[2], myY = _b[3];
104
+ // 自动对齐模式下,当四个方向都无法完全可见时
105
+ // 根据之前的计算结果,使用收集的可见方向作为兜底,避免完全不可见
106
+ if (isAuto && tests.length === 0) {
107
+ var _b = tslib.__read(autoDefaultPlacement.split('-'), 4), _atX = _b[0], _atY = _b[1], _myX = _b[2], _myY = _b[3];
108
+ var _c = visiblePlacement.atX, atX_1 = _c === void 0 ? _atX : _c, _d = visiblePlacement.atY, atY_1 = _d === void 0 ? _atY : _d, _e = visiblePlacement.myX, myX_1 = _e === void 0 ? _myX : _e, _f = visiblePlacement.myY, myY_1 = _f === void 0 ? _myY : _f;
109
+ current = activePlacement = [atX_1, atY_1, myX_1, myY_1].join('-');
110
+ }
111
+ var _g = tslib.__read(current.split('-'), 4), atX = _g[0], atY = _g[1], myX = _g[2], myY = _g[3];
99
112
  myX = myX || atX;
100
113
  myY = myY || atY;
101
114
  positionLeft =
@@ -126,10 +139,21 @@ function calculatePosition(placement, overlayNode, target, container, padding, c
126
139
  width: overlayWidth,
127
140
  height: overlayHeight
128
141
  };
142
+ var visibleX = false;
143
+ var visibleY = false;
129
144
  if (transformed.x > 0 &&
130
- transformed.x + transformed.width < window.innerWidth &&
131
- transformed.y > 0 &&
145
+ transformed.x + transformed.width < window.innerWidth) {
146
+ visibleX = true;
147
+ !visiblePlacement.atX && (visiblePlacement.atX = atX);
148
+ !visiblePlacement.myX && (visiblePlacement.myX = myX);
149
+ }
150
+ if (transformed.y > 0 &&
132
151
  transformed.y + transformed.height < window.innerHeight) {
152
+ visibleY = true;
153
+ !visiblePlacement.atY && (visiblePlacement.atY = atY);
154
+ !visiblePlacement.myY && (visiblePlacement.myY = myY);
155
+ }
156
+ if (visibleX && visibleY) {
133
157
  break;
134
158
  }
135
159
  }
@@ -175,7 +199,7 @@ function calculatePosition(placement, overlayNode, target, container, padding, c
175
199
  else {
176
200
  throw new Error("calcOverlayPosition(): No such placement of \"".concat(placement, "\" found."));
177
201
  }
178
- var _c = tslib.__read(customOffset, 2), _d = _c[0], offSetX = _d === void 0 ? 0 : _d, _e = _c[1], offSetY = _e === void 0 ? 0 : _e;
202
+ var _h = tslib.__read(customOffset, 2), _j = _h[0], offSetX = _j === void 0 ? 0 : _j, _k = _h[1], offSetY = _k === void 0 ? 0 : _k;
179
203
  return {
180
204
  positionLeft: (positionLeft + offSetX) / scaleX,
181
205
  positionTop: (positionTop + offSetY) / scaleY,
@@ -193,8 +217,23 @@ function getStyleNumber(element, styleName) {
193
217
  }
194
218
  return (parseInt(getComputedStyle(element).getPropertyValue(styleName), 10) || 0);
195
219
  }
220
+ /** 根据关键字高亮显示文本内容 */
221
+ function renderTextByKeyword(rendererText, curKeyword) {
222
+ if (curKeyword && ~rendererText.indexOf(curKeyword)) {
223
+ var keywordStartIndex = rendererText.indexOf(curKeyword);
224
+ var keywordEndIndex = keywordStartIndex + curKeyword.length;
225
+ return (React__default["default"].createElement("span", null,
226
+ rendererText.substring(0, keywordStartIndex),
227
+ React__default["default"].createElement("span", { className: "is-keyword" }, curKeyword),
228
+ rendererText.substring(keywordEndIndex)));
229
+ }
230
+ else {
231
+ return rendererText;
232
+ }
233
+ }
196
234
 
197
235
  exports.calculatePosition = calculatePosition;
198
236
  exports.getContainer = getContainer;
199
237
  exports.getStyleNumber = getStyleNumber;
200
238
  exports.ownerDocument = ownerDocument;
239
+ exports.renderTextByKeyword = renderTextByKeyword;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -12,8 +12,8 @@ var isString = require('lodash/isString');
12
12
  var isBoolean = require('lodash/isBoolean');
13
13
  var amisFormula = require('amis-formula');
14
14
  var tpl = require('./tpl.js');
15
- require('moment');
16
15
  require('tslib');
16
+ require('moment');
17
17
  require('lodash/isPlainObject');
18
18
  var getVariable = require('./getVariable.js');
19
19
  var resolveVariableAndFilter = require('./resolveVariableAndFilter.js');
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -7,7 +7,7 @@
7
7
 
8
8
  Object.defineProperty(exports, '__esModule', { value: true });
9
9
 
10
- var amisFormula = require('amis-formula');
10
+ var memoryParse = require('./memoryParse.js');
11
11
 
12
12
  /**
13
13
  * @file 公式语法解析
@@ -36,7 +36,7 @@ function collectVariables(strOrAst, execMode) {
36
36
  return COLLECT_EXPRESSION_CACHE[strOrAst];
37
37
  }
38
38
  var ast = typeof strOrAst === 'string'
39
- ? amisFormula.parse(strOrAst, {
39
+ ? memoryParse.memoryParse(strOrAst, {
40
40
  evalMode: execMode !== null && execMode !== void 0 ? execMode : false
41
41
  })
42
42
  : strOrAst;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.9.0
2
+ * amis-core v3.1.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -131,7 +131,7 @@ export interface TreeArray extends Array<TreeItem> {
131
131
  * @param {Function} iterator 处理函数,返回的数据会被替换成新的。
132
132
  * @return {Tree} 返回处理过的 tree
133
133
  */
134
- export declare function mapTree<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number, paths: Array<T>) => T, level?: number, depthFirst?: boolean, paths?: Array<T>): any[];
134
+ export declare function mapTree<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number, paths: Array<T>, indexes: Array<number>) => T, level?: number, depthFirst?: boolean, paths?: Array<T>, indexes?: Array<number>): any[];
135
135
  /**
136
136
  * 遍历树
137
137
  * @param tree
@@ -144,6 +144,12 @@ export declare function eachTree<T extends TreeItem>(tree: Array<T>, iterator: (
144
144
  * @param iterator
145
145
  */
146
146
  export declare function findTree<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number, paths: Array<T>) => any): T | null;
147
+ /**
148
+ * 在树中查找节点。
149
+ * @param tree
150
+ * @param iterator
151
+ */
152
+ export declare function findTreeAll<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number, paths: Array<T>) => any): Array<T>;
147
153
  /**
148
154
  * 在树中查找节点, 返回下标数组。
149
155
  * @param tree
@@ -157,7 +163,7 @@ export declare function getTree<T extends TreeItem>(tree: Array<T>, idx: Array<n
157
163
  * @param tree
158
164
  * @param iterator
159
165
  */
160
- export declare function filterTree<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number) => any, level?: number, depthFirst?: boolean): T[];
166
+ export declare function filterTree<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number, paths: Array<T>) => any, level?: number, depthFirst?: boolean, paths?: Array<T>): T[];
161
167
  /**
162
168
  * 判断树中每个节点是否满足某个条件。
163
169
  * @param tree
@@ -259,6 +265,7 @@ export declare function chainFunctions(...fns: Array<(...args: Array<any>) => vo
259
265
  export declare function chainEvents(props: any, schema: any): any;
260
266
  export declare function mapObject(value: any, fn: Function, skipFn?: (value: any) => boolean): any;
261
267
  export declare function loadScript(src: string): Promise<void>;
268
+ export declare function loadStyle(href: string): Promise<void>;
262
269
  export declare class SkipOperation extends Error {
263
270
  }
264
271
  /**