amis-core 6.11.0-beta.0 → 6.11.0-beta.2

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.d.ts +3 -0
  2. package/esm/Root.js +1 -1
  3. package/esm/RootRenderer.js +14 -8
  4. package/esm/SchemaRenderer.d.ts +2 -13
  5. package/esm/SchemaRenderer.js +36 -72
  6. package/esm/Scoped.js +1 -1
  7. package/esm/StatusScoped.js +1 -1
  8. package/esm/StyleManager.js +1 -1
  9. package/esm/WithRootStore.d.ts +1 -1
  10. package/esm/WithRootStore.js +1 -1
  11. package/esm/WithStore.js +1 -1
  12. package/esm/actions/Action.js +1 -1
  13. package/esm/actions/AjaxAction.js +1 -1
  14. package/esm/actions/BreakAction.js +1 -1
  15. package/esm/actions/BroadcastAction.js +1 -1
  16. package/esm/actions/CmptAction.js +6 -2
  17. package/esm/actions/ContinueAction.js +1 -1
  18. package/esm/actions/CopyAction.js +1 -1
  19. package/esm/actions/CustomAction.js +1 -1
  20. package/esm/actions/DialogAction.js +1 -1
  21. package/esm/actions/DrawerAction.js +1 -1
  22. package/esm/actions/EmailAction.js +1 -1
  23. package/esm/actions/EventAction.js +1 -1
  24. package/esm/actions/LinkAction.js +1 -1
  25. package/esm/actions/LoopAction.js +1 -1
  26. package/esm/actions/PageAction.js +1 -1
  27. package/esm/actions/ParallelAction.js +1 -1
  28. package/esm/actions/PrintAction.js +1 -1
  29. package/esm/actions/StatusAction.js +1 -1
  30. package/esm/actions/SwitchAction.js +1 -1
  31. package/esm/actions/ToastAction.js +1 -1
  32. package/esm/actions/WaitAction.js +1 -1
  33. package/esm/components/Animations.d.ts +8 -0
  34. package/esm/components/Animations.js +158 -0
  35. package/esm/components/CustomStyle.js +1 -1
  36. package/esm/components/ErrorBoundary.js +1 -1
  37. package/esm/components/LazyComponent.d.ts +1 -1
  38. package/esm/components/LazyComponent.js +1 -1
  39. package/esm/components/Overlay.js +1 -1
  40. package/esm/components/PopOver.d.ts +1 -1
  41. package/esm/components/PopOver.js +1 -1
  42. package/esm/env.d.ts +1 -1
  43. package/esm/env.js +1 -1
  44. package/esm/envOverwrite.js +1 -1
  45. package/esm/factory.d.ts +1 -0
  46. package/esm/factory.js +1 -1
  47. package/esm/globalVar.d.ts +173 -0
  48. package/esm/globalVar.js +122 -0
  49. package/esm/globalVarClientHandler.d.ts +1 -0
  50. package/esm/globalVarClientHandler.js +65 -0
  51. package/esm/globalVarDefaultValueHandler.d.ts +1 -0
  52. package/esm/globalVarDefaultValueHandler.js +28 -0
  53. package/esm/index.d.ts +3 -0
  54. package/esm/index.js +8 -5
  55. package/esm/locale.d.ts +1 -1
  56. package/esm/locale.js +1 -1
  57. package/esm/polyfills.js +1 -1
  58. package/esm/renderers/Form.d.ts +3 -1
  59. package/esm/renderers/Form.js +39 -24
  60. package/esm/renderers/Item.d.ts +11 -17
  61. package/esm/renderers/Item.js +17 -2
  62. package/esm/renderers/Options.js +1 -1
  63. package/esm/renderers/Placeholder.js +1 -1
  64. package/esm/renderers/builtin.js +1 -1
  65. package/esm/renderers/register.js +1 -1
  66. package/esm/renderers/wrapControl.d.ts +1 -1
  67. package/esm/renderers/wrapControl.js +1 -1
  68. package/esm/store/app.js +1 -1
  69. package/esm/store/combo.js +1 -1
  70. package/esm/store/crud.d.ts +8 -0
  71. package/esm/store/crud.js +24 -17
  72. package/esm/store/form.js +14 -5
  73. package/esm/store/formItem.js +1 -1
  74. package/esm/store/iRenderer.js +1 -1
  75. package/esm/store/index.js +1 -1
  76. package/esm/store/list.d.ts +14 -1
  77. package/esm/store/list.js +45 -17
  78. package/esm/store/manager.js +1 -1
  79. package/esm/store/modal.js +1 -1
  80. package/esm/store/node.js +1 -1
  81. package/esm/store/pagination.js +1 -1
  82. package/esm/store/root.d.ts +14 -0
  83. package/esm/store/root.js +483 -12
  84. package/esm/store/service.js +1 -1
  85. package/esm/store/status.js +1 -1
  86. package/esm/store/table.d.ts +16 -2
  87. package/esm/store/table.js +83 -26
  88. package/esm/store/table2.js +1 -1
  89. package/esm/theme.d.ts +1 -1
  90. package/esm/theme.js +1 -1
  91. package/esm/types.d.ts +3 -2
  92. package/esm/utils/Animation.js +1 -1
  93. package/esm/utils/ColorScale.js +1 -1
  94. package/esm/utils/DataSchema.js +1 -1
  95. package/esm/utils/DataScope.js +1 -1
  96. package/esm/utils/RootClose.js +1 -1
  97. package/esm/utils/SimpleMap.js +1 -1
  98. package/esm/utils/animations.d.ts +4 -0
  99. package/esm/utils/animations.js +1 -1
  100. package/esm/utils/api.d.ts +1 -0
  101. package/esm/utils/api.js +18 -6
  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 +1 -1
  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 +1 -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 +5 -0
  123. package/esm/utils/helper.js +6 -2
  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 +1 -1
  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 +1 -1
  131. package/esm/utils/loopTooMuch.js +1 -1
  132. package/esm/utils/makeSorter.js +1 -1
  133. package/esm/utils/math.js +1 -1
  134. package/esm/utils/memoryParse.js +1 -1
  135. package/esm/utils/normalizeLink.js +1 -1
  136. package/esm/utils/normalizeOptions.js +1 -1
  137. package/esm/utils/object.js +1 -1
  138. package/esm/utils/offset.js +1 -1
  139. package/esm/utils/offsetParent.js +1 -1
  140. package/esm/utils/optionValueCompare.js +1 -1
  141. package/esm/utils/position.js +1 -1
  142. package/esm/utils/prettyBytes.js +1 -1
  143. package/esm/utils/printElement.js +1 -1
  144. package/esm/utils/renderer-event.js +1 -1
  145. package/esm/utils/replaceText.js +1 -1
  146. package/esm/utils/resize-sensor.js +1 -1
  147. package/esm/utils/resolveCondition.js +1 -1
  148. package/esm/utils/resolveVariable.js +1 -1
  149. package/esm/utils/resolveVariableAndFilter.js +1 -1
  150. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  151. package/esm/utils/scrollPosition.js +1 -1
  152. package/esm/utils/string2regExp.js +1 -1
  153. package/esm/utils/stripNumber.js +1 -1
  154. package/esm/utils/style-helper.js +1 -1
  155. package/esm/utils/style.js +1 -1
  156. package/esm/utils/toNumber.js +1 -1
  157. package/esm/utils/tokenize.js +1 -1
  158. package/esm/utils/tpl-builtin.js +1 -1
  159. package/esm/utils/tpl-lodash.js +1 -1
  160. package/esm/utils/tpl.js +1 -1
  161. package/esm/utils/uncontrollable.js +1 -1
  162. package/esm/utils/validateId.js +1 -1
  163. package/esm/utils/validations.js +1 -1
  164. package/esm/utils/visitedCache.js +1 -1
  165. package/lib/Root.d.ts +3 -0
  166. package/lib/Root.js +1 -1
  167. package/lib/RootRenderer.d.ts +1 -1
  168. package/lib/RootRenderer.js +13 -7
  169. package/lib/SchemaRenderer.d.ts +2 -13
  170. package/lib/SchemaRenderer.js +35 -71
  171. package/lib/Scoped.js +1 -1
  172. package/lib/StatusScoped.js +1 -1
  173. package/lib/StyleManager.js +1 -1
  174. package/lib/WithRootStore.d.ts +1 -1
  175. package/lib/WithRootStore.js +1 -1
  176. package/lib/WithStore.js +1 -1
  177. package/lib/actions/Action.js +1 -1
  178. package/lib/actions/AjaxAction.js +1 -1
  179. package/lib/actions/BreakAction.js +1 -1
  180. package/lib/actions/BroadcastAction.js +1 -1
  181. package/lib/actions/CmptAction.js +6 -2
  182. package/lib/actions/ContinueAction.js +1 -1
  183. package/lib/actions/CopyAction.js +1 -1
  184. package/lib/actions/CustomAction.js +1 -1
  185. package/lib/actions/DialogAction.js +1 -1
  186. package/lib/actions/DrawerAction.js +1 -1
  187. package/lib/actions/EmailAction.js +1 -1
  188. package/lib/actions/EventAction.js +1 -1
  189. package/lib/actions/LinkAction.js +1 -1
  190. package/lib/actions/LoopAction.js +1 -1
  191. package/lib/actions/PageAction.js +1 -1
  192. package/lib/actions/ParallelAction.js +1 -1
  193. package/lib/actions/PrintAction.js +1 -1
  194. package/lib/actions/StatusAction.js +1 -1
  195. package/lib/actions/SwitchAction.js +1 -1
  196. package/lib/actions/ToastAction.js +1 -1
  197. package/lib/actions/WaitAction.js +1 -1
  198. package/lib/components/Animations.d.ts +8 -0
  199. package/lib/components/Animations.js +172 -0
  200. package/lib/components/CustomStyle.js +1 -1
  201. package/lib/components/ErrorBoundary.js +1 -1
  202. package/lib/components/LazyComponent.d.ts +1 -1
  203. package/lib/components/LazyComponent.js +1 -1
  204. package/lib/components/Overlay.js +1 -1
  205. package/lib/components/PopOver.d.ts +1 -1
  206. package/lib/components/PopOver.js +1 -1
  207. package/lib/env.d.ts +1 -1
  208. package/lib/env.js +1 -1
  209. package/lib/envOverwrite.js +1 -1
  210. package/lib/factory.d.ts +1 -0
  211. package/lib/factory.js +1 -1
  212. package/lib/globalVar.d.ts +173 -0
  213. package/lib/globalVar.js +130 -0
  214. package/lib/globalVarClientHandler.d.ts +1 -0
  215. package/lib/globalVarClientHandler.js +67 -0
  216. package/lib/globalVarDefaultValueHandler.d.ts +1 -0
  217. package/lib/globalVarDefaultValueHandler.js +30 -0
  218. package/lib/index.d.ts +3 -0
  219. package/lib/index.js +13 -4
  220. package/lib/locale.d.ts +1 -1
  221. package/lib/locale.js +1 -1
  222. package/lib/polyfills.js +1 -1
  223. package/lib/renderers/Form.d.ts +3 -1
  224. package/lib/renderers/Form.js +37 -21
  225. package/lib/renderers/Item.d.ts +11 -17
  226. package/lib/renderers/Item.js +17 -2
  227. package/lib/renderers/Options.js +1 -1
  228. package/lib/renderers/Placeholder.js +1 -1
  229. package/lib/renderers/builtin.js +1 -1
  230. package/lib/renderers/register.js +1 -1
  231. package/lib/renderers/wrapControl.d.ts +1 -1
  232. package/lib/renderers/wrapControl.js +1 -1
  233. package/lib/store/app.js +1 -1
  234. package/lib/store/combo.d.ts +24 -25
  235. package/lib/store/combo.js +1 -1
  236. package/lib/store/crud.d.ts +8 -0
  237. package/lib/store/crud.js +23 -16
  238. package/lib/store/form.d.ts +10 -11
  239. package/lib/store/form.js +14 -5
  240. package/lib/store/formItem.js +1 -1
  241. package/lib/store/iRenderer.js +1 -1
  242. package/lib/store/index.js +1 -1
  243. package/lib/store/list.d.ts +14 -1
  244. package/lib/store/list.js +44 -16
  245. package/lib/store/manager.js +1 -1
  246. package/lib/store/modal.js +1 -1
  247. package/lib/store/node.js +1 -1
  248. package/lib/store/pagination.js +1 -1
  249. package/lib/store/root.d.ts +13 -0
  250. package/lib/store/root.js +487 -11
  251. package/lib/store/service.js +1 -1
  252. package/lib/store/status.js +1 -1
  253. package/lib/store/table.d.ts +36 -23
  254. package/lib/store/table.js +82 -25
  255. package/lib/store/table2.js +1 -1
  256. package/lib/theme.d.ts +1 -1
  257. package/lib/theme.js +1 -1
  258. package/lib/types.d.ts +3 -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/animations.d.ts +4 -0
  266. package/lib/utils/animations.js +1 -1
  267. package/lib/utils/api.d.ts +1 -0
  268. package/lib/utils/api.js +18 -5
  269. package/lib/utils/arraySlice.js +1 -1
  270. package/lib/utils/attachmentAdpator.js +1 -1
  271. package/lib/utils/autobind.js +1 -1
  272. package/lib/utils/browser.js +1 -1
  273. package/lib/utils/columnsSplit.js +1 -1
  274. package/lib/utils/concatData.js +1 -1
  275. package/lib/utils/dataMapping.js +1 -1
  276. package/lib/utils/date.js +1 -1
  277. package/lib/utils/debug.js +1 -1
  278. package/lib/utils/decodeEntity.js +1 -1
  279. package/lib/utils/dom.js +1 -1
  280. package/lib/utils/errors.js +1 -1
  281. package/lib/utils/escapeHtml.js +1 -1
  282. package/lib/utils/filter-schema.js +1 -1
  283. package/lib/utils/filter.js +1 -1
  284. package/lib/utils/formatDuration.js +1 -1
  285. package/lib/utils/formula.js +1 -1
  286. package/lib/utils/getVariable.js +1 -1
  287. package/lib/utils/grammar.js +1 -1
  288. package/lib/utils/handleAction.js +1 -1
  289. package/lib/utils/helper.d.ts +5 -0
  290. package/lib/utils/helper.js +6 -2
  291. package/lib/utils/highlight.js +1 -1
  292. package/lib/utils/icon.js +1 -1
  293. package/lib/utils/image.js +1 -1
  294. package/lib/utils/isPureVariable.js +1 -1
  295. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  296. package/lib/utils/keyToPath.js +1 -1
  297. package/lib/utils/labelToString.js +1 -1
  298. package/lib/utils/loopTooMuch.js +1 -1
  299. package/lib/utils/makeSorter.js +1 -1
  300. package/lib/utils/math.js +1 -1
  301. package/lib/utils/memoryParse.js +1 -1
  302. package/lib/utils/normalizeLink.js +1 -1
  303. package/lib/utils/normalizeOptions.js +1 -1
  304. package/lib/utils/object.js +1 -1
  305. package/lib/utils/offset.js +1 -1
  306. package/lib/utils/offsetParent.js +1 -1
  307. package/lib/utils/optionValueCompare.js +1 -1
  308. package/lib/utils/position.js +1 -1
  309. package/lib/utils/prettyBytes.js +1 -1
  310. package/lib/utils/printElement.js +1 -1
  311. package/lib/utils/renderer-event.js +1 -1
  312. package/lib/utils/replaceText.js +1 -1
  313. package/lib/utils/resize-sensor.js +1 -1
  314. package/lib/utils/resolveCondition.js +1 -1
  315. package/lib/utils/resolveVariable.js +1 -1
  316. package/lib/utils/resolveVariableAndFilter.js +1 -1
  317. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  318. package/lib/utils/scrollPosition.js +1 -1
  319. package/lib/utils/string2regExp.js +1 -1
  320. package/lib/utils/stripNumber.js +1 -1
  321. package/lib/utils/style-helper.js +1 -1
  322. package/lib/utils/style.js +1 -1
  323. package/lib/utils/toNumber.js +1 -1
  324. package/lib/utils/tokenize.js +1 -1
  325. package/lib/utils/tpl-builtin.js +1 -1
  326. package/lib/utils/tpl-lodash.js +1 -1
  327. package/lib/utils/tpl.js +1 -1
  328. package/lib/utils/uncontrollable.js +1 -1
  329. package/lib/utils/validateId.js +1 -1
  330. package/lib/utils/validations.js +1 -1
  331. package/lib/utils/visitedCache.js +1 -1
  332. package/package.json +2 -2
package/lib/store/root.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0-beta.0
2
+ * amis-core v6.11.0-beta.2
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -18,7 +18,7 @@ require('../utils/columnsSplit.js');
18
18
  var object = require('../utils/object.js');
19
19
  require('../utils/memoryParse.js');
20
20
  require('amis-formula');
21
- require('lodash/isPlainObject');
21
+ var isPlainObject = require('lodash/isPlainObject');
22
22
  require('../utils/DataSchema.js');
23
23
  require('../utils/DataScope.js');
24
24
  require('moment');
@@ -36,7 +36,7 @@ require('../utils/icon.js');
36
36
  require('../utils/image.js');
37
37
  require('lodash/isEqual');
38
38
  require('../actions/Action.js');
39
- require('lodash/debounce');
39
+ var debounce = require('lodash/debounce');
40
40
  require('../utils/resize-sensor.js');
41
41
  require('react');
42
42
  require('react-overlays/useRootClose');
@@ -54,24 +54,70 @@ require('../utils/validations.js');
54
54
  require('../utils/resolveCondition.js');
55
55
  require('mobx');
56
56
  require('../utils/Animation.js');
57
+ var globalVar = require('../globalVar.js');
58
+
59
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
60
+
61
+ var isPlainObject__default = /*#__PURE__*/_interopDefaultLegacy(isPlainObject);
62
+ var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
57
63
 
58
64
  var RootStore = service.ServiceStore.named('RootStore')
59
65
  .props({
60
66
  runtimeError: mobxStateTree.types.frozen(),
61
67
  runtimeErrorStack: mobxStateTree.types.frozen(),
62
68
  query: mobxStateTree.types.frozen(),
63
- ready: false
69
+ ready: false,
70
+ globalVarStates: mobxStateTree.types.optional(mobxStateTree.types.map(mobxStateTree.types.frozen()), {})
64
71
  })
65
72
  .volatile(function (self) {
66
73
  return {
67
- context: {}
74
+ context: {},
75
+ globalVars: [],
76
+ globalData: {
77
+ global: {},
78
+ globalState: {}
79
+ }
68
80
  };
69
81
  })
70
82
  .views(function (self) { return ({
71
83
  get downStream() {
72
84
  var result = self.data;
73
- if (self.context || self.query) {
85
+ if (self.context || self.query || self.globalVarStates.size) {
74
86
  var chain = object.extractObjectChain(result);
87
+ // 数据链中添加 global 和 globalState
88
+ // 对应的是全局变量的值和全局变量的状态
89
+ if (self.globalVarStates.size) {
90
+ var globalData_1 = {};
91
+ var touched_1 = false;
92
+ var saved_1 = true;
93
+ var errors_1 = {};
94
+ var initialized_1 = true;
95
+ self.globalVarStates.forEach(function (state, key) {
96
+ globalData_1[key] = state.value;
97
+ touched_1 = touched_1 || state.touched;
98
+ if (!state.saved) {
99
+ saved_1 = false;
100
+ }
101
+ if (state.errorMessages.length) {
102
+ errors_1[key] = state.errorMessages;
103
+ }
104
+ if (!state.initialized) {
105
+ initialized_1 = false;
106
+ }
107
+ });
108
+ // 保存全局变量的值和状态
109
+ Object.assign(self.globalData.global, globalData_1);
110
+ Object.assign(self.globalData.globalState, {
111
+ fields: self.globalVarStates.toJSON(),
112
+ initialized: initialized_1,
113
+ touched: touched_1,
114
+ saved: saved_1,
115
+ errors: errors_1,
116
+ valid: !Object.keys(errors_1).length
117
+ });
118
+ // self.globalData 一直都是那个对象,这样组件里面始终拿到的都是最新的
119
+ chain.unshift(self.globalData);
120
+ }
75
121
  self.context && chain.unshift(self.context);
76
122
  self.query &&
77
123
  chain.splice(chain.length - 1, 0, tslib.__assign(tslib.__assign({}, self.query), { __query: self.query }));
@@ -81,32 +127,459 @@ var RootStore = service.ServiceStore.named('RootStore')
81
127
  }
82
128
  }); })
83
129
  .actions(function (self) {
130
+ function updateState(key, state) {
131
+ return self.updateGlobalVarState(key, state);
132
+ }
84
133
  var init = mobxStateTree.flow(function init(fn) {
85
- var ret;
134
+ var ret, e_1;
86
135
  return tslib.__generator(this, function (_a) {
87
136
  switch (_a.label) {
88
137
  case 0:
89
- _a.trys.push([0, , 3, 4]);
138
+ _a.trys.push([0, 3, 4, 5]);
90
139
  ret = fn();
91
140
  if (!(ret === null || ret === void 0 ? void 0 : ret.then)) return [3 /*break*/, 2];
92
141
  return [4 /*yield*/, ret];
93
142
  case 1:
94
143
  _a.sent();
95
144
  _a.label = 2;
96
- case 2: return [3 /*break*/, 4];
145
+ case 2: return [3 /*break*/, 5];
97
146
  case 3:
147
+ e_1 = _a.sent();
148
+ self.runtimeError = e_1.message;
149
+ self.runtimeErrorStack = e_1.stack;
150
+ return [3 /*break*/, 5];
151
+ case 4:
98
152
  self.ready = true;
99
153
  return [7 /*endfinally*/];
100
- case 4: return [2 /*return*/];
154
+ case 5: return [2 /*return*/];
101
155
  }
102
156
  });
103
157
  });
158
+ /**
159
+ * 比较新旧变量列表的差异
160
+ * @param vars 新的变量列表
161
+ * @param originVars 原始变量列表
162
+ * @returns 返回新增、更新和删除的变量列表
163
+ */
164
+ function diffVariables(vars, originVars) {
165
+ var e_2, _a;
166
+ var removeVars = originVars.concat();
167
+ var updateVars = [];
168
+ var newVars = [];
169
+ var _loop_1 = function (varItem) {
170
+ var idx = removeVars.findIndex(function (item) { return item.key === varItem.key; });
171
+ if (~idx) {
172
+ var _b = tslib.__read(removeVars.splice(idx, 1), 1), origin_1 = _b[0];
173
+ if (origin_1.id !== varItem.id) {
174
+ updateVars.push(varItem);
175
+ }
176
+ }
177
+ else {
178
+ newVars.push(varItem);
179
+ }
180
+ };
181
+ try {
182
+ for (var vars_1 = tslib.__values(vars), vars_1_1 = vars_1.next(); !vars_1_1.done; vars_1_1 = vars_1.next()) {
183
+ var varItem = vars_1_1.value;
184
+ _loop_1(varItem);
185
+ }
186
+ }
187
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
188
+ finally {
189
+ try {
190
+ if (vars_1_1 && !vars_1_1.done && (_a = vars_1.return)) _a.call(vars_1);
191
+ }
192
+ finally { if (e_2) throw e_2.error; }
193
+ }
194
+ return {
195
+ newVars: newVars,
196
+ updateVars: updateVars,
197
+ removeVars: removeVars
198
+ };
199
+ }
200
+ /**
201
+ * 初始化单个全局变量
202
+ */
203
+ function initGlobalVarData(item, context, getter) {
204
+ return tslib.__awaiter(this, void 0, void 0, function () {
205
+ var value, state;
206
+ return tslib.__generator(this, function (_a) {
207
+ switch (_a.label) {
208
+ case 0:
209
+ value = item.defaultValue;
210
+ if (!getter) return [3 /*break*/, 2];
211
+ return [4 /*yield*/, getGlobalVarData(item, context, getter)];
212
+ case 1:
213
+ _a.sent();
214
+ state = self.globalVarStates.get(item.key);
215
+ updateState(item.key, {
216
+ initialized: true,
217
+ pristine: state.value
218
+ });
219
+ return [3 /*break*/, 3];
220
+ case 2:
221
+ updateState(item.key, {
222
+ value: value,
223
+ pristine: value,
224
+ initialized: item.bulkGetter ? false : true
225
+ });
226
+ _a.label = 3;
227
+ case 3: return [2 /*return*/];
228
+ }
229
+ });
230
+ });
231
+ }
232
+ /**
233
+ * 批量初始化全局变量
234
+ */
235
+ function getGlobalVarData(item, context, getter) {
236
+ return tslib.__awaiter(this, void 0, void 0, function () {
237
+ var value;
238
+ return tslib.__generator(this, function (_a) {
239
+ switch (_a.label) {
240
+ case 0:
241
+ _a.trys.push([0, , 2, 3]);
242
+ updateState(item.key, {
243
+ busy: true
244
+ });
245
+ return [4 /*yield*/, getter(item, context)];
246
+ case 1:
247
+ value = _a.sent();
248
+ updateState(item.key, {
249
+ value: value
250
+ });
251
+ return [3 /*break*/, 3];
252
+ case 2:
253
+ updateState(item.key, {
254
+ busy: false
255
+ });
256
+ return [7 /*endfinally*/];
257
+ case 3: return [2 /*return*/];
258
+ }
259
+ });
260
+ });
261
+ }
262
+ /**
263
+ * 批量初始化全局变量
264
+ */
265
+ function bulkGetGlobalVarData(variables, context, getter) {
266
+ return tslib.__awaiter(this, void 0, void 0, function () {
267
+ var data, _loop_2, key;
268
+ return tslib.__generator(this, function (_a) {
269
+ switch (_a.label) {
270
+ case 0:
271
+ _a.trys.push([0, , 2, 3]);
272
+ variables.forEach(function (item) {
273
+ updateState(item.key, {
274
+ busy: true
275
+ });
276
+ });
277
+ return [4 /*yield*/, getter.call(null, tslib.__assign(tslib.__assign({}, context), { variables: variables }))];
278
+ case 1:
279
+ data = _a.sent();
280
+ if (!isPlainObject__default["default"](data)) {
281
+ return [2 /*return*/];
282
+ }
283
+ _loop_2 = function (key) {
284
+ // 返回非定义部分的数据不处理
285
+ if (!variables.some(function (item) { return item.key === key; })) {
286
+ return "continue";
287
+ }
288
+ var state = self.globalVarStates.get(key);
289
+ if (state) {
290
+ updateState(key, {
291
+ value: data[key],
292
+ pristine: data[key],
293
+ initialized: true
294
+ });
295
+ }
296
+ };
297
+ for (key in data) {
298
+ _loop_2(key);
299
+ }
300
+ return [3 /*break*/, 3];
301
+ case 2:
302
+ variables.forEach(function (item) {
303
+ updateState(item.key, {
304
+ busy: false
305
+ });
306
+ });
307
+ return [7 /*endfinally*/];
308
+ case 3: return [2 /*return*/];
309
+ }
310
+ });
311
+ });
312
+ }
313
+ /**
314
+ * 初始化全局变量
315
+ */
316
+ function initializeGlobalVars(newVars, updateVars) {
317
+ return tslib.__awaiter(this, void 0, void 0, function () {
318
+ var variables, context, globalVars, bulkGetters, itemsNotInitialized, _loop_3, globalVars_1, globalVars_1_1, item;
319
+ var e_3, _a;
320
+ return tslib.__generator(this, function (_b) {
321
+ switch (_b.label) {
322
+ case 0:
323
+ variables = newVars.concat(updateVars);
324
+ context = tslib.__assign(tslib.__assign({}, self.context), { variables: variables });
325
+ globalVars = variables.map(function (item) {
326
+ return globalVar.buildGlobalVariable(item, context);
327
+ });
328
+ bulkGetters = [];
329
+ itemsNotInitialized = [];
330
+ _loop_3 = function (item) {
331
+ var state = self.globalVarStates.get(item.key);
332
+ if (state === null || state === void 0 ? void 0 : state.initialized) {
333
+ return "continue";
334
+ }
335
+ itemsNotInitialized.push(item);
336
+ if (item.bulkGetter) {
337
+ var getter = bulkGetters.find(function (a) { return a.fn === item.bulkGetter; });
338
+ if (!getter) {
339
+ getter = {
340
+ fn: item.bulkGetter,
341
+ variables: []
342
+ };
343
+ bulkGetters.push(getter);
344
+ }
345
+ getter.variables.push(item);
346
+ }
347
+ };
348
+ try {
349
+ for (globalVars_1 = tslib.__values(globalVars), globalVars_1_1 = globalVars_1.next(); !globalVars_1_1.done; globalVars_1_1 = globalVars_1.next()) {
350
+ item = globalVars_1_1.value;
351
+ _loop_3(item);
352
+ }
353
+ }
354
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
355
+ finally {
356
+ try {
357
+ if (globalVars_1_1 && !globalVars_1_1.done && (_a = globalVars_1.return)) _a.call(globalVars_1);
358
+ }
359
+ finally { if (e_3) throw e_3.error; }
360
+ }
361
+ // 先单个初始化
362
+ return [4 /*yield*/, Promise.all(itemsNotInitialized.map(function (item) {
363
+ return initGlobalVarData(item, context, item.getter);
364
+ }))];
365
+ case 1:
366
+ // 先单个初始化
367
+ _b.sent();
368
+ // 再批量初始化
369
+ return [4 /*yield*/, Promise.all(bulkGetters.map(function (_a) {
370
+ var fn = _a.fn, variables = _a.variables;
371
+ return bulkGetGlobalVarData(variables, context, fn);
372
+ }))];
373
+ case 2:
374
+ // 再批量初始化
375
+ _b.sent();
376
+ return [2 /*return*/, globalVars];
377
+ }
378
+ });
379
+ });
380
+ }
381
+ // 设置全局变量,返回一个Promise
382
+ var setGlobalVars = mobxStateTree.flow(function setGlobalVars(vars) {
383
+ var _a, newVars, updateVars, removeVars, _b;
384
+ return tslib.__generator(this, function (_c) {
385
+ switch (_c.label) {
386
+ case 0:
387
+ _a = diffVariables(vars || [], self.globalVars), newVars = _a.newVars, updateVars = _a.updateVars, removeVars = _a.removeVars;
388
+ // 初始化全局变量
389
+ _b = self;
390
+ return [4 /*yield*/, initializeGlobalVars(newVars, updateVars)];
391
+ case 1:
392
+ // 初始化全局变量
393
+ _b.globalVars = _c.sent();
394
+ removeVars.forEach(function (item) {
395
+ self.globalVarStates.delete(item.key);
396
+ });
397
+ return [2 /*return*/];
398
+ }
399
+ });
400
+ });
401
+ // 更新全局变量的值
402
+ var updateGlobalVarValue = function (key, value) {
403
+ return modifyGlobalVarValue(key, { op: 'set', value: value });
404
+ };
405
+ // 如果对应变量是个对象,那么可以通过这个扩充变量的值
406
+ var modifyGlobalVarValue = function (key, options) {
407
+ var state = self.globalVarStates.get(key);
408
+ if (!state) {
409
+ return;
410
+ }
411
+ var value = state.value;
412
+ switch (options.op) {
413
+ case 'set':
414
+ value = options.value;
415
+ break;
416
+ }
417
+ updateState(key, {
418
+ value: value,
419
+ touched: true
420
+ });
421
+ lazySaveGlobalVarValues();
422
+ };
423
+ /**
424
+ * 保存单个全局变量的值
425
+ */
426
+ function saveGlobalVarData(item, value, context, setter) {
427
+ return tslib.__awaiter(this, void 0, void 0, function () {
428
+ return tslib.__generator(this, function (_a) {
429
+ switch (_a.label) {
430
+ case 0:
431
+ _a.trys.push([0, , 2, 3]);
432
+ updateState(item.key, {
433
+ busy: true
434
+ });
435
+ return [4 /*yield*/, setter(item, value, context)];
436
+ case 1:
437
+ _a.sent();
438
+ updateState(item.key, {
439
+ saved: true
440
+ });
441
+ return [3 /*break*/, 3];
442
+ case 2:
443
+ updateState(item.key, {
444
+ busy: false
445
+ });
446
+ return [7 /*endfinally*/];
447
+ case 3: return [2 /*return*/];
448
+ }
449
+ });
450
+ });
451
+ }
452
+ /**
453
+ * 批量保存全局变量
454
+ */
455
+ function bulkSaveGlobalVarData(variables, values, context, setter) {
456
+ return tslib.__awaiter(this, void 0, void 0, function () {
457
+ return tslib.__generator(this, function (_a) {
458
+ switch (_a.label) {
459
+ case 0:
460
+ _a.trys.push([0, , 2, 3]);
461
+ variables.forEach(function (item) {
462
+ updateState(item.key, {
463
+ busy: true
464
+ });
465
+ });
466
+ return [4 /*yield*/, setter(values, tslib.__assign(tslib.__assign({}, context), { variables: variables }))];
467
+ case 1:
468
+ _a.sent();
469
+ variables.forEach(function (item) {
470
+ updateState(item.key, {
471
+ saved: true
472
+ });
473
+ });
474
+ return [3 /*break*/, 3];
475
+ case 2:
476
+ variables.forEach(function (item) {
477
+ updateState(item.key, {
478
+ busy: false
479
+ });
480
+ });
481
+ return [7 /*endfinally*/];
482
+ case 3: return [2 /*return*/];
483
+ }
484
+ });
485
+ });
486
+ }
487
+ /**
488
+ * 保存全局变量的值
489
+ */
490
+ function saveGlobalVarValues(key) {
491
+ return tslib.__awaiter(this, void 0, void 0, function () {
492
+ var context, setters, bulkSetters, values, _loop_4, _a, _b, varItem;
493
+ var e_4, _c;
494
+ return tslib.__generator(this, function (_d) {
495
+ switch (_d.label) {
496
+ case 0:
497
+ context = tslib.__assign(tslib.__assign({}, self.context), { variables: self.globalVars });
498
+ setters = [];
499
+ bulkSetters = [];
500
+ values = {};
501
+ _loop_4 = function (varItem) {
502
+ var state = self.globalVarStates.get(varItem.key);
503
+ if (!(state === null || state === void 0 ? void 0 : state.touched)) {
504
+ return "continue";
505
+ }
506
+ else if (key && key !== varItem.key) {
507
+ return "continue";
508
+ }
509
+ else if (!key && varItem.autoSave === false) {
510
+ return "continue";
511
+ }
512
+ values[varItem.key] = state.value;
513
+ if (varItem.setter) {
514
+ setters.push({
515
+ fn: varItem.setter,
516
+ item: varItem,
517
+ value: state.value
518
+ });
519
+ }
520
+ if (varItem.bulkSetter) {
521
+ var setter = bulkSetters.find(function (a) { return a.fn === varItem.bulkSetter; });
522
+ if (!setter) {
523
+ setter = {
524
+ fn: varItem.bulkSetter,
525
+ variables: [],
526
+ values: {}
527
+ };
528
+ bulkSetters.push(setter);
529
+ }
530
+ setter.variables.push(varItem);
531
+ setter.values[varItem.key] = state.value;
532
+ }
533
+ };
534
+ try {
535
+ for (_a = tslib.__values(self.globalVars), _b = _a.next(); !_b.done; _b = _a.next()) {
536
+ varItem = _b.value;
537
+ _loop_4(varItem);
538
+ }
539
+ }
540
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
541
+ finally {
542
+ try {
543
+ if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
544
+ }
545
+ finally { if (e_4) throw e_4.error; }
546
+ }
547
+ return [4 /*yield*/, Promise.all(setters
548
+ .map(function (_a) {
549
+ var fn = _a.fn, item = _a.item, value = _a.value;
550
+ return saveGlobalVarData(item, value, context, fn);
551
+ })
552
+ .concat(bulkSetters.map(function (_a) {
553
+ var variables = _a.variables, values = _a.values, fn = _a.fn;
554
+ return bulkSaveGlobalVarData(variables, values, context, fn);
555
+ })))];
556
+ case 1:
557
+ _d.sent();
558
+ return [2 /*return*/];
559
+ }
560
+ });
561
+ });
562
+ }
563
+ // 延迟保存全局变量的值
564
+ var lazySaveGlobalVarValues = debounce__default["default"](saveGlobalVarValues, 250, {
565
+ trailing: true,
566
+ leading: false
567
+ });
104
568
  return {
105
569
  updateContext: function (context) {
106
570
  // 因为 context 不是受控属性,直接共用引用好了
107
571
  // 否则还会触发孩子节点的重新渲染
108
572
  Object.assign(self.context, context);
109
573
  },
574
+ updateGlobalVarState: function (key, state) {
575
+ var origin = self.globalVarStates.get(key);
576
+ var newState = tslib.__assign(tslib.__assign({}, (origin || globalVar.createGlobalVarState())), state);
577
+ self.globalVarStates.set(key, newState);
578
+ },
579
+ setGlobalVars: setGlobalVars,
580
+ updateGlobalVarValue: updateGlobalVarValue,
581
+ modifyGlobalVarValue: modifyGlobalVarValue,
582
+ saveGlobalVarValues: lazySaveGlobalVarValues,
110
583
  setRuntimeError: function (error, errorStack) {
111
584
  self.runtimeError = error;
112
585
  self.runtimeErrorStack = errorStack;
@@ -117,7 +590,10 @@ var RootStore = service.ServiceStore.named('RootStore')
117
590
  self.query = query;
118
591
  }
119
592
  },
120
- init: init
593
+ init: init,
594
+ afterDestroy: function () {
595
+ lazySaveGlobalVarValues.flush();
596
+ }
121
597
  };
122
598
  });
123
599
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0-beta.0
2
+ * amis-core v6.11.0-beta.2
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0-beta.0
2
+ * amis-core v6.11.0-beta.2
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5