amis-core 6.7.0 → 6.9.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 (332) hide show
  1. package/esm/Root.js +1 -1
  2. package/esm/RootRenderer.d.ts +1 -1
  3. package/esm/RootRenderer.js +24 -2
  4. package/esm/SchemaRenderer.d.ts +0 -1
  5. package/esm/SchemaRenderer.js +44 -20
  6. package/esm/Scoped.d.ts +1 -1
  7. package/esm/Scoped.js +2 -1
  8. package/esm/StatusScoped.js +1 -1
  9. package/esm/WithRootStore.js +1 -1
  10. package/esm/WithStore.js +14 -14
  11. package/esm/actions/Action.js +2 -1
  12. package/esm/actions/AjaxAction.js +1 -1
  13. package/esm/actions/BreakAction.js +1 -1
  14. package/esm/actions/BroadcastAction.js +1 -1
  15. package/esm/actions/CmptAction.js +57 -50
  16. package/esm/actions/ContinueAction.js +1 -1
  17. package/esm/actions/CopyAction.js +1 -1
  18. package/esm/actions/CustomAction.js +2 -1
  19. package/esm/actions/DialogAction.js +3 -1
  20. package/esm/actions/DrawerAction.js +2 -1
  21. package/esm/actions/EmailAction.js +1 -1
  22. package/esm/actions/EventAction.js +2 -1
  23. package/esm/actions/LinkAction.js +1 -1
  24. package/esm/actions/LoopAction.js +2 -1
  25. package/esm/actions/PageAction.js +1 -1
  26. package/esm/actions/ParallelAction.js +1 -1
  27. package/esm/actions/PrintAction.js +1 -1
  28. package/esm/actions/StatusAction.js +1 -1
  29. package/esm/actions/SwitchAction.js +1 -1
  30. package/esm/actions/ToastAction.js +3 -3
  31. package/esm/actions/WaitAction.js +1 -1
  32. package/esm/components/CustomStyle.js +1 -1
  33. package/esm/components/ErrorBoundary.js +1 -1
  34. package/esm/components/LazyComponent.d.ts +40 -2
  35. package/esm/components/LazyComponent.js +13 -7
  36. package/esm/components/Overlay.js +2 -1
  37. package/esm/components/PopOver.d.ts +1 -1
  38. package/esm/components/PopOver.js +2 -1
  39. package/esm/env.d.ts +0 -4
  40. package/esm/env.js +1 -1
  41. package/esm/envOverwrite.js +1 -1
  42. package/esm/factory.d.ts +19 -2
  43. package/esm/factory.js +205 -45
  44. package/esm/index.d.ts +4 -4
  45. package/esm/index.js +9 -5
  46. package/esm/locale.d.ts +1 -1
  47. package/esm/locale.js +14 -2
  48. package/esm/polyfills.js +1 -1
  49. package/esm/renderers/Form.d.ts +5 -5
  50. package/esm/renderers/Form.js +68 -29
  51. package/esm/renderers/Item.d.ts +109 -18
  52. package/esm/renderers/Item.js +164 -126
  53. package/esm/renderers/Options.d.ts +3 -3
  54. package/esm/renderers/Options.js +43 -19
  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 +3 -3
  59. package/esm/renderers/wrapControl.js +25 -10
  60. package/esm/store/app.d.ts +3 -3
  61. package/esm/store/app.js +2 -1
  62. package/esm/store/combo.d.ts +425 -15
  63. package/esm/store/combo.js +1 -1
  64. package/esm/store/crud.d.ts +3 -3
  65. package/esm/store/crud.js +2 -1
  66. package/esm/store/form.d.ts +178 -7
  67. package/esm/store/form.js +29 -6
  68. package/esm/store/formItem.d.ts +5 -0
  69. package/esm/store/formItem.js +32 -10
  70. package/esm/store/iRenderer.d.ts +4 -3
  71. package/esm/store/iRenderer.js +29 -4
  72. package/esm/store/index.d.ts +1 -0
  73. package/esm/store/index.js +3 -2
  74. package/esm/store/list.d.ts +3 -3
  75. package/esm/store/list.js +1 -1
  76. package/esm/store/manager.js +1 -1
  77. package/esm/store/modal.d.ts +3 -3
  78. package/esm/store/modal.js +1 -1
  79. package/esm/store/node.js +1 -1
  80. package/esm/store/pagination.d.ts +3 -3
  81. package/esm/store/pagination.js +2 -1
  82. package/esm/store/root.d.ts +5 -3
  83. package/esm/store/root.js +46 -21
  84. package/esm/store/service.d.ts +3 -3
  85. package/esm/store/service.js +11 -4
  86. package/esm/store/status.js +1 -1
  87. package/esm/store/table.d.ts +396 -36
  88. package/esm/store/table.js +84 -54
  89. package/esm/store/table2.d.ts +3 -3
  90. package/esm/store/table2.js +1 -1
  91. package/esm/theme.d.ts +1 -1
  92. package/esm/theme.js +13 -2
  93. package/esm/types.d.ts +19 -2
  94. package/esm/utils/Animation.js +1 -1
  95. package/esm/utils/ColorScale.js +1 -1
  96. package/esm/utils/DataSchema.js +1 -1
  97. package/esm/utils/DataScope.js +1 -1
  98. package/esm/utils/RootClose.js +1 -1
  99. package/esm/utils/SimpleMap.js +1 -1
  100. package/esm/utils/api.d.ts +21 -1
  101. package/esm/utils/api.js +138 -41
  102. package/esm/utils/arraySlice.js +1 -1
  103. package/esm/utils/attachmentAdpator.js +1 -1
  104. package/esm/utils/autobind.js +1 -1
  105. package/esm/utils/browser.js +1 -1
  106. package/esm/utils/columnsSplit.js +1 -1
  107. package/esm/utils/concatData.js +1 -1
  108. package/esm/utils/dataMapping.js +1 -1
  109. package/esm/utils/date.js +1 -1
  110. package/esm/utils/debug.js +17 -3
  111. package/esm/utils/decodeEntity.js +1 -1
  112. package/esm/utils/dom.js +1 -1
  113. package/esm/utils/errors.js +1 -1
  114. package/esm/utils/escapeHtml.js +1 -1
  115. package/esm/utils/filter-schema.js +1 -1
  116. package/esm/utils/filter.js +1 -1
  117. package/esm/utils/formatDuration.js +1 -1
  118. package/esm/utils/formula.js +2 -1
  119. package/esm/utils/getVariable.js +1 -1
  120. package/esm/utils/grammar.js +1 -1
  121. package/esm/utils/handleAction.js +1 -1
  122. package/esm/utils/helper.d.ts +4 -1
  123. package/esm/utils/helper.js +20 -4
  124. package/esm/utils/highlight.js +1 -1
  125. package/esm/utils/icon.js +1 -1
  126. package/esm/utils/image.js +1 -1
  127. package/esm/utils/isPureVariable.js +2 -2
  128. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  129. package/esm/utils/keyToPath.js +1 -1
  130. package/esm/utils/labelToString.js +4 -1
  131. package/esm/utils/makeSorter.js +1 -1
  132. package/esm/utils/math.js +1 -1
  133. package/esm/utils/memoryParse.d.ts +2 -1
  134. package/esm/utils/memoryParse.js +10 -6
  135. package/esm/utils/normalizeLink.js +1 -1
  136. package/esm/utils/normalizeOptions.js +1 -1
  137. package/esm/utils/object.d.ts +2 -4
  138. package/esm/utils/object.js +1 -1
  139. package/esm/utils/offset.js +1 -1
  140. package/esm/utils/offsetParent.js +1 -1
  141. package/esm/utils/optionValueCompare.js +1 -1
  142. package/esm/utils/position.js +1 -1
  143. package/esm/utils/prettyBytes.js +1 -1
  144. package/esm/utils/printElement.js +1 -1
  145. package/esm/utils/renderer-event.js +1 -1
  146. package/esm/utils/replaceText.js +1 -1
  147. package/esm/utils/resize-sensor.js +30 -1
  148. package/esm/utils/resolveCondition.js +2 -1
  149. package/esm/utils/resolveVariable.js +1 -1
  150. package/esm/utils/resolveVariableAndFilter.js +1 -1
  151. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  152. package/esm/utils/scrollPosition.js +1 -1
  153. package/esm/utils/string2regExp.js +1 -1
  154. package/esm/utils/stripNumber.js +1 -1
  155. package/esm/utils/style-helper.js +1 -1
  156. package/esm/utils/style.js +2 -1
  157. package/esm/utils/toNumber.js +1 -1
  158. package/esm/utils/tokenize.js +1 -1
  159. package/esm/utils/tpl-builtin.js +2 -1
  160. package/esm/utils/tpl-lodash.js +2 -1
  161. package/esm/utils/tpl.js +1 -1
  162. package/esm/utils/uncontrollable.js +1 -1
  163. package/esm/utils/validateId.js +1 -1
  164. package/esm/utils/validations.js +2 -1
  165. package/esm/utils/visitedCache.d.ts +46 -0
  166. package/esm/utils/visitedCache.js +124 -0
  167. package/lib/Root.js +1 -1
  168. package/lib/RootRenderer.js +23 -1
  169. package/lib/SchemaRenderer.d.ts +0 -1
  170. package/lib/SchemaRenderer.js +42 -18
  171. package/lib/Scoped.d.ts +1 -1
  172. package/lib/Scoped.js +2 -1
  173. package/lib/StatusScoped.js +1 -1
  174. package/lib/WithRootStore.js +1 -1
  175. package/lib/WithStore.js +14 -14
  176. package/lib/actions/Action.js +2 -1
  177. package/lib/actions/AjaxAction.js +1 -1
  178. package/lib/actions/BreakAction.js +1 -1
  179. package/lib/actions/BroadcastAction.js +1 -1
  180. package/lib/actions/CmptAction.js +56 -49
  181. package/lib/actions/ContinueAction.js +1 -1
  182. package/lib/actions/CopyAction.js +1 -1
  183. package/lib/actions/CustomAction.js +2 -1
  184. package/lib/actions/DialogAction.js +3 -1
  185. package/lib/actions/DrawerAction.js +2 -1
  186. package/lib/actions/EmailAction.js +1 -1
  187. package/lib/actions/EventAction.js +2 -1
  188. package/lib/actions/LinkAction.js +1 -1
  189. package/lib/actions/LoopAction.js +2 -1
  190. package/lib/actions/PageAction.js +1 -1
  191. package/lib/actions/ParallelAction.js +1 -1
  192. package/lib/actions/PrintAction.js +1 -1
  193. package/lib/actions/StatusAction.js +1 -1
  194. package/lib/actions/SwitchAction.js +1 -1
  195. package/lib/actions/ToastAction.js +2 -2
  196. package/lib/actions/WaitAction.js +1 -1
  197. package/lib/components/CustomStyle.js +1 -1
  198. package/lib/components/ErrorBoundary.js +1 -1
  199. package/lib/components/LazyComponent.d.ts +40 -2
  200. package/lib/components/LazyComponent.js +14 -7
  201. package/lib/components/Overlay.js +2 -1
  202. package/lib/components/PopOver.d.ts +1 -1
  203. package/lib/components/PopOver.js +2 -1
  204. package/lib/env.d.ts +0 -4
  205. package/lib/env.js +1 -1
  206. package/lib/envOverwrite.js +1 -1
  207. package/lib/factory.d.ts +19 -2
  208. package/lib/factory.js +211 -44
  209. package/lib/index.d.ts +4 -4
  210. package/lib/index.js +16 -2
  211. package/lib/locale.d.ts +1 -1
  212. package/lib/locale.js +14 -2
  213. package/lib/polyfills.js +1 -1
  214. package/lib/renderers/Form.d.ts +5 -5
  215. package/lib/renderers/Form.js +65 -26
  216. package/lib/renderers/Item.d.ts +110 -19
  217. package/lib/renderers/Item.js +163 -125
  218. package/lib/renderers/Options.d.ts +3 -3
  219. package/lib/renderers/Options.js +43 -19
  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 +3 -3
  224. package/lib/renderers/wrapControl.js +25 -10
  225. package/lib/store/app.d.ts +3 -3
  226. package/lib/store/app.js +2 -1
  227. package/lib/store/combo.d.ts +449 -40
  228. package/lib/store/combo.js +1 -1
  229. package/lib/store/crud.d.ts +3 -3
  230. package/lib/store/crud.js +3 -2
  231. package/lib/store/form.d.ts +188 -18
  232. package/lib/store/form.js +29 -6
  233. package/lib/store/formItem.d.ts +5 -0
  234. package/lib/store/formItem.js +32 -10
  235. package/lib/store/iRenderer.d.ts +4 -3
  236. package/lib/store/iRenderer.js +29 -4
  237. package/lib/store/index.d.ts +1 -0
  238. package/lib/store/index.js +3 -1
  239. package/lib/store/list.d.ts +3 -3
  240. package/lib/store/list.js +1 -1
  241. package/lib/store/manager.js +1 -1
  242. package/lib/store/modal.d.ts +3 -3
  243. package/lib/store/modal.js +1 -1
  244. package/lib/store/node.js +1 -1
  245. package/lib/store/pagination.d.ts +3 -3
  246. package/lib/store/pagination.js +2 -1
  247. package/lib/store/root.d.ts +5 -3
  248. package/lib/store/root.js +44 -19
  249. package/lib/store/service.d.ts +3 -3
  250. package/lib/store/service.js +11 -4
  251. package/lib/store/status.js +1 -1
  252. package/lib/store/table.d.ts +416 -57
  253. package/lib/store/table.js +84 -54
  254. package/lib/store/table2.d.ts +3 -3
  255. package/lib/store/table2.js +1 -1
  256. package/lib/theme.d.ts +1 -1
  257. package/lib/theme.js +13 -2
  258. package/lib/types.d.ts +19 -2
  259. package/lib/utils/Animation.js +1 -1
  260. package/lib/utils/ColorScale.js +1 -1
  261. package/lib/utils/DataSchema.js +1 -1
  262. package/lib/utils/DataScope.js +1 -1
  263. package/lib/utils/RootClose.js +1 -1
  264. package/lib/utils/SimpleMap.js +1 -1
  265. package/lib/utils/api.d.ts +21 -1
  266. package/lib/utils/api.js +141 -40
  267. package/lib/utils/arraySlice.js +1 -1
  268. package/lib/utils/attachmentAdpator.js +1 -1
  269. package/lib/utils/autobind.js +1 -1
  270. package/lib/utils/browser.js +1 -1
  271. package/lib/utils/columnsSplit.js +1 -1
  272. package/lib/utils/concatData.js +1 -1
  273. package/lib/utils/dataMapping.js +1 -1
  274. package/lib/utils/date.js +1 -1
  275. package/lib/utils/debug.js +18 -4
  276. package/lib/utils/decodeEntity.js +1 -1
  277. package/lib/utils/dom.js +1 -1
  278. package/lib/utils/errors.js +1 -1
  279. package/lib/utils/escapeHtml.js +1 -1
  280. package/lib/utils/filter-schema.js +1 -1
  281. package/lib/utils/filter.js +1 -1
  282. package/lib/utils/formatDuration.js +1 -1
  283. package/lib/utils/formula.js +2 -1
  284. package/lib/utils/getVariable.js +1 -1
  285. package/lib/utils/grammar.js +1 -1
  286. package/lib/utils/handleAction.js +1 -1
  287. package/lib/utils/helper.d.ts +4 -1
  288. package/lib/utils/helper.js +19 -3
  289. package/lib/utils/highlight.js +1 -1
  290. package/lib/utils/icon.js +1 -1
  291. package/lib/utils/image.js +1 -1
  292. package/lib/utils/isPureVariable.js +2 -2
  293. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  294. package/lib/utils/keyToPath.js +1 -1
  295. package/lib/utils/labelToString.js +4 -1
  296. package/lib/utils/makeSorter.js +1 -1
  297. package/lib/utils/math.js +1 -1
  298. package/lib/utils/memoryParse.d.ts +2 -1
  299. package/lib/utils/memoryParse.js +10 -6
  300. package/lib/utils/normalizeLink.js +1 -1
  301. package/lib/utils/normalizeOptions.js +1 -1
  302. package/lib/utils/object.d.ts +2 -4
  303. package/lib/utils/object.js +1 -1
  304. package/lib/utils/offset.js +1 -1
  305. package/lib/utils/offsetParent.js +1 -1
  306. package/lib/utils/optionValueCompare.js +1 -1
  307. package/lib/utils/position.js +1 -1
  308. package/lib/utils/prettyBytes.js +1 -1
  309. package/lib/utils/printElement.js +1 -1
  310. package/lib/utils/renderer-event.js +1 -1
  311. package/lib/utils/replaceText.js +1 -1
  312. package/lib/utils/resize-sensor.js +30 -1
  313. package/lib/utils/resolveCondition.js +2 -1
  314. package/lib/utils/resolveVariable.js +1 -1
  315. package/lib/utils/resolveVariableAndFilter.js +1 -1
  316. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  317. package/lib/utils/scrollPosition.js +1 -1
  318. package/lib/utils/string2regExp.js +1 -1
  319. package/lib/utils/stripNumber.js +1 -1
  320. package/lib/utils/style-helper.js +1 -1
  321. package/lib/utils/style.js +2 -1
  322. package/lib/utils/toNumber.js +1 -1
  323. package/lib/utils/tokenize.js +1 -1
  324. package/lib/utils/tpl-builtin.js +2 -1
  325. package/lib/utils/tpl-lodash.js +2 -1
  326. package/lib/utils/tpl.js +1 -1
  327. package/lib/utils/uncontrollable.js +1 -1
  328. package/lib/utils/validateId.js +1 -1
  329. package/lib/utils/validations.js +2 -1
  330. package/lib/utils/visitedCache.d.ts +46 -0
  331. package/lib/utils/visitedCache.js +128 -0
  332. package/package.json +2 -2
package/esm/factory.js CHANGED
@@ -1,9 +1,9 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.9.0-beta.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
6
- import { __assign } from 'tslib';
6
+ import { __assign, __awaiter, __generator } from 'tslib';
7
7
  import React from 'react';
8
8
  import { RendererStore } from './store/index.js';
9
9
  import { destroy, getEnv } from 'mobx-state-tree';
@@ -19,6 +19,8 @@ import { string2regExp } from './utils/string2regExp.js';
19
19
 
20
20
  var _a, _b;
21
21
  var renderers = [];
22
+ // type 与 RendererConfig 的映射关系
23
+ var renderersTypeMap = {};
22
24
  var renderersMap = {};
23
25
  var schemaFilters = [];
24
26
  var anonymousIndex = 1;
@@ -34,53 +36,124 @@ function Renderer(config) {
34
36
  return renderer.component;
35
37
  };
36
38
  }
39
+ // mobx-react 的 observer 会修改原型链的 render 方法
40
+ // 如果想继承覆盖组件的 render 方法,需要把原型链 render 还原回来
41
+ // 否则无法调用 super.render 方法
42
+ function fixMobxInjectRender(klass) {
43
+ var _a;
44
+ var target = klass.prototype;
45
+ // mobx-react 篡改之前先记录原始 render
46
+ if (target === null || target === void 0 ? void 0 : target.render) {
47
+ target.__originRender = target.render;
48
+ }
49
+ // 将父级类上面被 mobx 篡改的 render 方法还原回来
50
+ // 而且当前类的 render 也是会被篡改的,所以父级上的其实不需要篡改
51
+ if ((_a = target === null || target === void 0 ? void 0 : target.__proto__) === null || _a === void 0 ? void 0 : _a.hasOwnProperty('__originRender')) {
52
+ var originProto = target.__proto__;
53
+ target.__proto__ = Object.create(originProto.__proto__ || Object);
54
+ Object.assign(target.__proto__, originProto);
55
+ target.__proto__.render = originProto.__originRender;
56
+ }
57
+ return klass;
58
+ }
59
+ // 将 renderer 转成组件
60
+ function rendererToComponent(component, config) {
61
+ if (config.storeType && config.component) {
62
+ component = HocStoreFactory({
63
+ storeType: config.storeType,
64
+ extendsData: config.storeExtendsData,
65
+ shouldSyncSuperStore: config.shouldSyncSuperStore
66
+ })(observer(fixMobxInjectRender(component)));
67
+ }
68
+ if (config.isolateScope) {
69
+ component = HocScoped(component, config.type);
70
+ }
71
+ return component;
72
+ }
37
73
  function registerRenderer(config) {
38
74
  if (!config.test && !config.type) {
39
- throw new TypeError('please set config.test or config.type');
75
+ throw new TypeError('please set config.type or config.test');
40
76
  }
41
- else if (!config.component) {
42
- throw new TypeError('config.component is required');
77
+ else if (!config.type && config.name !== 'static') {
78
+ // todo static 目前还没办法不用 test 来实现
79
+ console.warn("config.type is recommended for register renderer(".concat(config.test, ")"));
43
80
  }
44
81
  if (typeof config.type === 'string' && config.type) {
45
82
  config.type = config.type.toLowerCase();
46
83
  config.test =
47
- config.test || new RegExp("(^|/)".concat(string2regExp(config.type), "$"), 'i');
84
+ config.test ||
85
+ new RegExp("(^|/)(?:".concat((config.alias || [])
86
+ .concat(config.type)
87
+ .map(function (type) { return string2regExp(type); })
88
+ .join('|'), ")$"), 'i');
48
89
  }
49
- config.weight = config.weight || 0;
50
- config.Renderer = config.component;
51
- config.name = config.name || config.type || "anonymous-".concat(anonymousIndex++);
52
- if (renderersMap[config.name]) {
53
- throw new Error("The renderer with name \"".concat(config.name, "\" has already exists, please try another name!"));
90
+ var exists = renderersTypeMap[config.type || ''];
91
+ var renderer = __assign({}, config);
92
+ if (exists &&
93
+ exists.component &&
94
+ exists.component !== Placeholder &&
95
+ config.component &&
96
+ !exists.origin &&
97
+ !config.override) {
98
+ throw new Error("The renderer with type \"".concat(config.type, "\" has already exists, please try another type!"));
54
99
  }
55
- else if (renderersMap.hasOwnProperty(config.name)) {
56
- // 后面补充的
57
- var idx_1 = findIndex(renderers, function (item) { return item.name === config.name; });
58
- ~idx_1 && renderers.splice(idx_1, 0, config);
100
+ else if (exists) {
101
+ // 如果已经存在,合并配置,并用合并后的配置
102
+ Object.assign(exists, config);
103
+ renderer = exists;
59
104
  }
60
- if (config.storeType && config.component) {
61
- config.component = HocStoreFactory({
62
- storeType: config.storeType,
63
- extendsData: config.storeExtendsData,
64
- shouldSyncSuperStore: config.shouldSyncSuperStore
65
- })(observer(config.component));
105
+ renderer.weight = renderer.weight || 0;
106
+ renderer.name =
107
+ renderer.name || renderer.type || "anonymous-".concat(anonymousIndex++);
108
+ if (config.component) {
109
+ renderer.Renderer = config.component;
110
+ renderer.component = rendererToComponent(config.component, renderer);
66
111
  }
67
- if (config.isolateScope) {
68
- config.component = HocScoped(config.component, config.type);
112
+ if (!exists) {
113
+ var idx = findIndex(renderers, function (item) { return config.weight < item.weight; });
114
+ ~idx ? renderers.splice(idx, 0, renderer) : renderers.push(renderer);
69
115
  }
70
- var idx = findIndex(renderers, function (item) { return config.weight < item.weight; });
71
- ~idx ? renderers.splice(idx, 0, config) : renderers.push(config);
72
- renderersMap[config.name] = config.component !== Placeholder;
73
- return config;
116
+ renderersMap[renderer.name] = !!(renderer.component && renderer.component !== Placeholder);
117
+ renderer.type && (renderersTypeMap[renderer.type] = renderer);
118
+ (renderer.alias || []).forEach(function (alias) {
119
+ var fork = __assign(__assign({}, renderer), { type: alias, name: alias, alias: undefined, origin: renderer });
120
+ var idx = renderers.findIndex(function (item) { return item.name === alias; });
121
+ if (~idx) {
122
+ Object.assign(renderers[idx], fork);
123
+ }
124
+ else {
125
+ renderers.push(fork);
126
+ }
127
+ renderersTypeMap[alias] = fork;
128
+ renderersMap[alias] = true;
129
+ });
130
+ return renderer;
74
131
  }
75
132
  function unRegisterRenderer(config) {
133
+ var _a;
76
134
  var name = (typeof config === 'string' ? config : config.name);
77
135
  var idx = renderers.findIndex(function (item) { return item.name === name; });
78
- ~idx && renderers.splice(idx, 1);
79
- delete renderersMap[name];
80
- // 清空渲染器定位缓存
81
- cache = {};
136
+ if (~idx) {
137
+ var renderer_1 = renderers[idx];
138
+ renderers.splice(idx, 1);
139
+ delete renderersMap[name];
140
+ delete renderersTypeMap[renderer_1.type || ''];
141
+ (_a = renderer_1.alias) === null || _a === void 0 ? void 0 : _a.forEach(function (alias) {
142
+ var idx = renderers.findIndex(function (item) { return item.name === alias; });
143
+ idx > -1 && renderers.splice(idx, 1);
144
+ delete renderersTypeMap[alias];
145
+ delete renderersMap[alias];
146
+ });
147
+ // 清空渲染器定位缓存
148
+ Object.keys(cache).forEach(function (key) {
149
+ var value = cache[key];
150
+ if (value === renderer_1) {
151
+ delete cache[key];
152
+ }
153
+ });
154
+ }
82
155
  }
83
- function loadRenderer(schema, path) {
156
+ function loadRendererError(schema, path) {
84
157
  return (React.createElement("div", { className: "RuntimeError" },
85
158
  React.createElement("p", null, "Error: \u627E\u4E0D\u5230\u5BF9\u5E94\u7684\u6E32\u67D3\u5668"),
86
159
  React.createElement("p", null,
@@ -89,12 +162,97 @@ function loadRenderer(schema, path) {
89
162
  React.createElement("pre", null,
90
163
  React.createElement("code", null, JSON.stringify(schema, null, 2)))));
91
164
  }
165
+ function loadAsyncRenderer(renderer) {
166
+ return __awaiter(this, void 0, void 0, function () {
167
+ var result;
168
+ return __generator(this, function (_a) {
169
+ switch (_a.label) {
170
+ case 0:
171
+ if (!isAsyncRenderer(renderer)) {
172
+ // already loaded
173
+ return [2 /*return*/];
174
+ }
175
+ return [4 /*yield*/, renderer.getComponent()];
176
+ case 1:
177
+ result = _a.sent();
178
+ // 如果异步加载的组件没有注册渲染器
179
+ // 同时默认导出了一个组件,则自动注册
180
+ if (!renderer.component && result.default) {
181
+ registerRenderer(__assign(__assign({}, renderer), { component: result.default }));
182
+ }
183
+ return [2 /*return*/];
184
+ }
185
+ });
186
+ });
187
+ }
188
+ function isAsyncRenderer(item) {
189
+ return (item &&
190
+ (!item.component || item.component === Placeholder) &&
191
+ item.getComponent);
192
+ }
193
+ function hasAsyncRenderers() {
194
+ return renderers.some(isAsyncRenderer);
195
+ }
196
+ function loadAsyncRenderersByType(type, ignore) {
197
+ if (ignore === void 0) { ignore = false; }
198
+ return __awaiter(this, void 0, void 0, function () {
199
+ var types, asyncRenderers;
200
+ return __generator(this, function (_a) {
201
+ switch (_a.label) {
202
+ case 0:
203
+ types = Array.isArray(type) ? type : [type];
204
+ asyncRenderers = types
205
+ .map(function (type) {
206
+ var renderer = renderersTypeMap[type];
207
+ if (!renderer && !ignore) {
208
+ throw new Error("Can not find the renderer by type: ".concat(type));
209
+ }
210
+ return renderer;
211
+ })
212
+ .filter(isAsyncRenderer);
213
+ if (!asyncRenderers.length) return [3 /*break*/, 2];
214
+ return [4 /*yield*/, Promise.all(asyncRenderers.map(function (item) { return loadAsyncRenderer(item); }))];
215
+ case 1:
216
+ _a.sent();
217
+ _a.label = 2;
218
+ case 2: return [2 /*return*/];
219
+ }
220
+ });
221
+ });
222
+ }
223
+ function loadAllAsyncRenderers() {
224
+ return __awaiter(this, void 0, void 0, function () {
225
+ var asyncRenderers;
226
+ var _this = this;
227
+ return __generator(this, function (_a) {
228
+ switch (_a.label) {
229
+ case 0:
230
+ asyncRenderers = renderers.filter(isAsyncRenderer);
231
+ if (!asyncRenderers.length) return [3 /*break*/, 2];
232
+ return [4 /*yield*/, Promise.all(renderers.map(function (renderer) { return __awaiter(_this, void 0, void 0, function () {
233
+ return __generator(this, function (_a) {
234
+ switch (_a.label) {
235
+ case 0: return [4 /*yield*/, loadAsyncRenderer(renderer)];
236
+ case 1:
237
+ _a.sent();
238
+ return [2 /*return*/];
239
+ }
240
+ });
241
+ }); }))];
242
+ case 1:
243
+ _a.sent();
244
+ _a.label = 2;
245
+ case 2: return [2 /*return*/];
246
+ }
247
+ });
248
+ });
249
+ }
92
250
  var defaultOptions = {
93
251
  session: 'global',
94
252
  richTextToken: '',
95
253
  useMobileUI: true,
96
254
  enableAMISDebug: (_b = (_a = window.enableAMISDebug) !== null && _a !== void 0 ? _a : location.search.indexOf('amisDebug=1') !== -1) !== null && _b !== void 0 ? _b : false,
97
- loadRenderer: loadRenderer,
255
+ loadRenderer: loadRendererError,
98
256
  fetcher: function () {
99
257
  return Promise.reject('fetcher is required');
100
258
  },
@@ -261,8 +419,9 @@ function extendDefaultEnv(env) {
261
419
  var cache = {};
262
420
  function resolveRenderer(path, schema) {
263
421
  var type = typeof (schema === null || schema === void 0 ? void 0 : schema.type) == 'string' ? schema.type.toLowerCase() : '';
264
- if (type && cache[type]) {
265
- return cache[type];
422
+ // 直接匹配类型,后续注册渲染都应该用这个方式而不是之前的判断路径。
423
+ if (type && renderersTypeMap[type]) {
424
+ return renderersTypeMap[type];
266
425
  }
267
426
  else if (cache[path]) {
268
427
  return cache[path];
@@ -273,15 +432,7 @@ function resolveRenderer(path, schema) {
273
432
  var renderer = null;
274
433
  renderers.some(function (item) {
275
434
  var matched = false;
276
- // 直接匹配类型,后续注册渲染都应该用这个方式而不是之前的判断路径。
277
- if (item.type && type) {
278
- matched = item.type === type;
279
- // 如果是type来命中的,那么cache的key直接用 type 即可。
280
- if (matched) {
281
- cache[type] = item;
282
- }
283
- }
284
- else if (typeof item.test === 'function') {
435
+ if (typeof item.test === 'function') {
285
436
  // 不应该搞得这么复杂的,让每个渲染器唯一 id,自己不晕别人用起来也不晕。
286
437
  matched = item.test(path, schema, resolveRenderer);
287
438
  }
@@ -311,5 +462,14 @@ function getRenderers() {
311
462
  function getRendererByName(name) {
312
463
  return find(renderers, function (item) { return item.name === name; });
313
464
  }
465
+ var GlobalOptions = {
466
+ pdfjsWorkerSrc: ''
467
+ };
468
+ function setGlobalOptions(options) {
469
+ Object.assign(GlobalOptions, options);
470
+ }
471
+ function getGlobalOptions() {
472
+ return GlobalOptions;
473
+ }
314
474
 
315
- export { Renderer, addSchemaFilter, clearStoresCache, defaultOptions, extendDefaultEnv, filterSchema, getRendererByName, getRenderers, loadRenderer, registerRenderer, renderersMap, resolveRenderer, stores, unRegisterRenderer, updateEnv };
475
+ export { Renderer, addSchemaFilter, clearStoresCache, defaultOptions, extendDefaultEnv, filterSchema, getGlobalOptions, getRendererByName, getRenderers, hasAsyncRenderers, isAsyncRenderer, loadAllAsyncRenderers, loadAsyncRenderer, loadAsyncRenderersByType, loadRendererError, registerRenderer, renderersMap, resolveRenderer, setGlobalOptions, stores, unRegisterRenderer, updateEnv };
package/esm/index.d.ts CHANGED
@@ -6,8 +6,8 @@
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
8
  /// <reference types="react" />
9
- import { Renderer, getRendererByName, getRenderers, registerRenderer, unRegisterRenderer, resolveRenderer, filterSchema, clearStoresCache, updateEnv, addSchemaFilter, extendDefaultEnv } from './factory';
10
- import type { RenderOptions, RendererConfig, RendererProps } from './factory';
9
+ import { Renderer, getRendererByName, getRenderers, loadAllAsyncRenderers, loadAsyncRenderersByType, loadAsyncRenderer, registerRenderer, unRegisterRenderer, resolveRenderer, filterSchema, clearStoresCache, updateEnv, addSchemaFilter, extendDefaultEnv, getGlobalOptions, setGlobalOptions } from './factory';
10
+ import type { RenderOptions, RendererConfig, RendererProps, hasAsyncRenderers } from './factory';
11
11
  import './polyfills';
12
12
  import './renderers/builtin';
13
13
  import './renderers/register';
@@ -15,7 +15,7 @@ export * from './utils/index';
15
15
  export * from './types';
16
16
  export * from './store';
17
17
  import * as utils from './utils/helper';
18
- import { RegisterStore } from './store';
18
+ import { RegisterStore, registerStore } from './store';
19
19
  import type { IColumn, IColumn2, IRow, IRow2 } from './store';
20
20
  import { setDefaultLocale, getDefaultLocale, makeTranslator, register as registerLocale, extendLocale, removeLocaleData, localeable } from './locale';
21
21
  import type { LocaleProps, TranslateFn } from './locale';
@@ -51,5 +51,5 @@ import type { IItem } from './store/list';
51
51
  import CustomStyle from './components/CustomStyle';
52
52
  import { StatusScoped } from './StatusScoped';
53
53
  export declare const version = "__buildVersion";
54
- export { clearStoresCache, updateEnv, Renderer, RendererProps, RenderOptions, RendererEnv, EnvContext, RegisterStore, FormItem, FormItemWrap, FormItemProps, OptionsControl, FormRenderer, FormHorizontal, utils, getRendererByName, registerRenderer, unRegisterRenderer, getRenderers, registerFormItem, getFormItemByName, registerOptionsControl, resolveRenderer, filterSchema, Scoped, ScopedContext, IScopedContext, StatusScoped, setDefaultTheme, theme, themeable, ThemeProps, getTheme, classPrefix, getClassPrefix, classnames, makeClassnames, getDefaultLocale, setDefaultLocale, registerLocale, makeTranslator, extendLocale, removeLocaleData, localeable, LocaleProps, TranslateFn, ClassNamesFn, parse, lexer, Evaluator, AsyncEvaluator, FilterContext, filters, getFilters, registerFilter, extendsFilters, registerFunction, evaluate, evaluateForAsync, LazyComponent, Overlay, PopOver, ErrorBoundary, addSchemaFilter, OptionsControlProps, FormOptionsControl, FormControlProps, FormBaseControl, extendDefaultEnv, addRootWrapper, RendererConfig, styleMap, RENDERER_TRANSMISSION_OMIT_PROPS, ScopedComponentType, IItem, IColumn, IRow, IColumn2, IRow2, OnEventProps, FormSchemaBase, filterTarget, splitTarget, CustomStyle, enableDebug, disableDebug, envOverwrite };
54
+ export { clearStoresCache, updateEnv, Renderer, RendererProps, RenderOptions, RendererEnv, EnvContext, RegisterStore, registerStore, FormItem, FormItemWrap, FormItemProps, OptionsControl, FormRenderer, FormHorizontal, utils, getRendererByName, registerRenderer, unRegisterRenderer, getRenderers, loadAllAsyncRenderers, loadAsyncRenderersByType, loadAsyncRenderer, hasAsyncRenderers, registerFormItem, getFormItemByName, registerOptionsControl, resolveRenderer, filterSchema, Scoped, ScopedContext, IScopedContext, StatusScoped, setDefaultTheme, theme, themeable, ThemeProps, getTheme, classPrefix, getClassPrefix, classnames, makeClassnames, getDefaultLocale, setDefaultLocale, registerLocale, makeTranslator, extendLocale, removeLocaleData, localeable, LocaleProps, TranslateFn, ClassNamesFn, parse, lexer, Evaluator, AsyncEvaluator, FilterContext, filters, getFilters, registerFilter, extendsFilters, registerFunction, evaluate, evaluateForAsync, LazyComponent, Overlay, PopOver, ErrorBoundary, addSchemaFilter, OptionsControlProps, FormOptionsControl, FormControlProps, FormBaseControl, extendDefaultEnv, addRootWrapper, RendererConfig, styleMap, RENDERER_TRANSMISSION_OMIT_PROPS, ScopedComponentType, IItem, IColumn, IRow, IColumn2, IRow2, OnEventProps, FormSchemaBase, filterTarget, splitTarget, CustomStyle, enableDebug, disableDebug, envOverwrite, getGlobalOptions, setGlobalOptions };
55
55
  export declare function render(schema: Schema, props?: RootRenderProps, options?: RenderOptions, pathPrefix?: string): JSX.Element;
package/esm/index.js CHANGED
@@ -1,16 +1,16 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.9.0-beta.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
6
6
  import { __assign, __rest } from 'tslib';
7
7
  import { stores, defaultOptions } from './factory.js';
8
- export { Renderer, addSchemaFilter, clearStoresCache, extendDefaultEnv, filterSchema, getRendererByName, getRenderers, registerRenderer, resolveRenderer, unRegisterRenderer, updateEnv } from './factory.js';
8
+ export { Renderer, addSchemaFilter, clearStoresCache, extendDefaultEnv, filterSchema, getGlobalOptions, getRendererByName, getRenderers, loadAllAsyncRenderers, loadAsyncRenderer, loadAsyncRenderersByType, registerRenderer, resolveRenderer, setGlobalOptions, unRegisterRenderer, updateEnv } from './factory.js';
9
9
  import './polyfills.js';
10
10
  import './renderers/builtin.js';
11
11
  import './renderers/register.js';
12
12
  import { wrapFetcher } from './utils/api.js';
13
- export { buildApi, callStrFunction, clearApiCache, getApiCache, isApiOutdated, isApiOutdatedWithData, isEffectiveApi, isSameApi, isValidApi, jsFetcher, jsonpFetcher, normalizeApi, normalizeApiResponseData, responseAdaptor, setApiCache, str2AsyncFunction, str2function, wrapAdaptor, wrapFetcher } from './utils/api.js';
13
+ export { addApiRequestAdaptor, addApiResponseAdator, buildApi, callStrFunction, clearApiCache, getApiCache, isApiOutdated, isApiOutdatedWithData, isEffectiveApi, isSameApi, isValidApi, jsFetcher, jsonpFetcher, normalizeApi, normalizeApiResponseData, removeApiRequestAdaptor, removeApiResponseAdaptor, responseAdaptor, setApiCache, str2AsyncFunction, str2function, wrapAdaptor, wrapFetcher } from './utils/api.js';
14
14
  export { attachmentAdpator } from './utils/attachmentAdpator.js';
15
15
  export { autobindMethod, bind } from './utils/autobind.js';
16
16
  export { chromeVersion, isSafari } from './utils/browser.js';
@@ -78,7 +78,7 @@ export { arraySlice } from './utils/arraySlice.js';
78
78
  export { isIntegerInRange, numberFormatter, safeAdd, safeSub } from './utils/math.js';
79
79
  export { default as animation } from './utils/Animation.js';
80
80
  import { RendererStore } from './store/index.js';
81
- export { RegisterStore, RendererStore } from './store/index.js';
81
+ export { RegisterStore, RendererStore, registerStore } from './store/index.js';
82
82
  import { getEnv } from 'mobx-state-tree';
83
83
  import { getDefaultLocale, makeTranslator } from './locale.js';
84
84
  export { extendLocale, getDefaultLocale, localeable, makeTranslator, register as registerLocale, removeLocaleData, setDefaultLocale } from './locale.js';
@@ -148,7 +148,11 @@ export { StoreNode } from './store/node.js';
148
148
  */
149
149
  var classPrefix = getClassPrefix();
150
150
  // @ts-ignore
151
- var version = '6.7.0';
151
+ var version = '6.9.0-beta.0';
152
+ window.amisVersionInfo = {
153
+ version: '6.9.0-beta.0',
154
+ buildTime: '2024-10-22T11:40:53.112Z'
155
+ };
152
156
  function render(schema, props, options, pathPrefix) {
153
157
  if (props === void 0) { props = {}; }
154
158
  if (options === void 0) { options = {}; }
package/esm/locale.d.ts CHANGED
@@ -16,7 +16,7 @@ export interface LocaleProps {
16
16
  translate: TranslateFn;
17
17
  }
18
18
  export declare const LocaleContext: React.Context<string>;
19
- export declare function localeable<T extends React.ComponentType<React.ComponentProps<T> & LocaleProps>>(ComposedComponent: T): {
19
+ export declare function localeable<T extends React.ComponentType<React.ComponentProps<T> & LocaleProps>>(ComposedComponent: T, methods?: Array<string>): {
20
20
  new (props: JSX.LibraryManagedAttributes<T, Omit<React.ComponentProps<T>, keyof LocaleProps>> & {
21
21
  locale?: string | undefined;
22
22
  translate?: ((str: string, ...args: any[]) => string) | undefined;
package/esm/locale.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.9.0-beta.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -10,6 +10,7 @@ import moment from 'moment';
10
10
  import 'amis-formula';
11
11
  import 'lodash/isPlainObject';
12
12
  import { resolveVariable } from './utils/resolveVariable.js';
13
+ import './utils/memoryParse.js';
13
14
  import '@rc-component/mini-decimal';
14
15
  import './utils/filter.js';
15
16
 
@@ -85,7 +86,7 @@ function setDefaultLocale(locale) {
85
86
  defaultLocale = locale;
86
87
  }
87
88
  var LocaleContext = React.createContext('');
88
- function localeable(ComposedComponent) {
89
+ function localeable(ComposedComponent, methods) {
89
90
  var _a;
90
91
  var result = hoistNonReactStatic((_a = /** @class */ (function (_super) {
91
92
  __extends(class_1, _super);
@@ -127,6 +128,17 @@ function localeable(ComposedComponent) {
127
128
  _a.contextType = LocaleContext,
128
129
  _a.ComposedComponent = ComposedComponent,
129
130
  _a), ComposedComponent);
131
+ if (Array.isArray(methods)) {
132
+ methods.forEach(function (method) {
133
+ if (ComposedComponent.prototype[method]) {
134
+ result.prototype[method] = function () {
135
+ var _a;
136
+ var fn = (_a = this.ref) === null || _a === void 0 ? void 0 : _a[method];
137
+ return fn ? fn.apply(this.ref, arguments) : undefined;
138
+ };
139
+ }
140
+ });
141
+ }
130
142
  return result;
131
143
  }
132
144
 
package/esm/polyfills.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.9.0-beta.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -2,7 +2,7 @@
2
2
  import React from 'react';
3
3
  import { RendererProps } from '../factory';
4
4
  import { IFormStore } from '../store/form';
5
- import { SchemaNode, ActionObject, ClassName, BaseApiObject, SchemaExpression, SchemaClassName } from '../types';
5
+ import { SchemaNode, ActionObject, ClassName, BaseApiObject, SchemaExpression, SchemaClassName, DataChangeReason } from '../types';
6
6
  import { IScopedContext } from '../Scoped';
7
7
  import type { LabelAlign } from './Item';
8
8
  export interface FormHorizontal {
@@ -263,7 +263,7 @@ export interface FormProps extends RendererProps, Omit<FormSchemaBase, 'mode' |
263
263
  onSubmit?: (values: object, action: any) => any;
264
264
  onChange?: (values: object, diff: object, props: any) => any;
265
265
  onFailed?: (reason: string, errors: any) => any;
266
- onFinished: (values: object, action: any) => any;
266
+ onFinished: (values: object, action: ActionObject, store: IFormStore) => any;
267
267
  onValidate: (values: object, form: any) => any;
268
268
  onValidChange?: (valid: boolean, props: any) => void;
269
269
  messages: {
@@ -338,7 +338,7 @@ export default class Form extends React.Component<FormProps, object> {
338
338
  onInit(): Promise<void>;
339
339
  reload(subPath?: string, query?: any, ctx?: any, silent?: boolean): Promise<any>;
340
340
  receive(values: object, name?: string, replace?: boolean): Promise<any>;
341
- silentReload(target?: string, query?: any): void;
341
+ silentReload(target?: string, query?: any): Promise<any>;
342
342
  initInterval(value: any): any;
343
343
  isValidated(): boolean;
344
344
  validate(forceValidate?: boolean, throwErrors?: boolean, toastErrors?: boolean, skipFlush?: boolean): Promise<boolean>;
@@ -354,12 +354,12 @@ export default class Form extends React.Component<FormProps, object> {
354
354
  reset(): void;
355
355
  addHook(fn: () => any, type?: 'validate' | 'init' | 'flush', enforce?: 'prev' | 'post'): () => void;
356
356
  removeHook(fn: () => any, type?: string): void;
357
- handleChange(value: any, name: string, submit: boolean, changePristine?: boolean): void;
357
+ handleChange(value: any, name: string, submit: boolean, changePristine?: boolean, changeReason?: DataChangeReason): void;
358
358
  formItemDispatchEvent(type: string, data: any): Promise<import("../utils").RendererEvent<any, any>>;
359
359
  emittedData: any;
360
360
  emitting: boolean;
361
361
  emitChange(submit: boolean, emitedFromWatch?: boolean): Promise<void>;
362
- handleBulkChange(values: Object, submit: boolean): void;
362
+ handleBulkChange(values: Object, submit: boolean, changeReason?: DataChangeReason): void;
363
363
  handleFormSubmit(e: React.UIEvent<any>): any;
364
364
  handleReset(action: any): (data: any) => void;
365
365
  handleAction(e: React.UIEvent<any> | void, action: ActionObject, data: object, throwErrors?: boolean, delegate?: IScopedContext): Promise<any>;