amis-core 6.7.0 → 6.8.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 (285) hide show
  1. package/esm/Root.js +1 -1
  2. package/esm/RootRenderer.js +1 -1
  3. package/esm/SchemaRenderer.d.ts +0 -1
  4. package/esm/SchemaRenderer.js +15 -6
  5. package/esm/Scoped.js +2 -1
  6. package/esm/StatusScoped.js +1 -1
  7. package/esm/WithRootStore.js +1 -1
  8. package/esm/WithStore.js +8 -8
  9. package/esm/actions/Action.js +2 -1
  10. package/esm/actions/AjaxAction.js +1 -1
  11. package/esm/actions/BreakAction.js +1 -1
  12. package/esm/actions/BroadcastAction.js +1 -1
  13. package/esm/actions/CmptAction.js +1 -1
  14. package/esm/actions/ContinueAction.js +1 -1
  15. package/esm/actions/CopyAction.js +1 -1
  16. package/esm/actions/CustomAction.js +2 -1
  17. package/esm/actions/DialogAction.js +3 -1
  18. package/esm/actions/DrawerAction.js +2 -1
  19. package/esm/actions/EmailAction.js +1 -1
  20. package/esm/actions/EventAction.js +2 -1
  21. package/esm/actions/LinkAction.js +1 -1
  22. package/esm/actions/LoopAction.js +2 -1
  23. package/esm/actions/PageAction.js +1 -1
  24. package/esm/actions/ParallelAction.js +1 -1
  25. package/esm/actions/PrintAction.js +1 -1
  26. package/esm/actions/StatusAction.js +1 -1
  27. package/esm/actions/SwitchAction.js +1 -1
  28. package/esm/actions/ToastAction.js +1 -1
  29. package/esm/actions/WaitAction.js +1 -1
  30. package/esm/components/CustomStyle.js +1 -1
  31. package/esm/components/ErrorBoundary.js +1 -1
  32. package/esm/components/LazyComponent.js +1 -1
  33. package/esm/components/Overlay.js +2 -1
  34. package/esm/components/PopOver.js +2 -1
  35. package/esm/env.js +1 -1
  36. package/esm/envOverwrite.js +1 -1
  37. package/esm/factory.js +1 -1
  38. package/esm/index.js +2 -2
  39. package/esm/locale.js +2 -1
  40. package/esm/polyfills.js +1 -1
  41. package/esm/renderers/Form.js +42 -16
  42. package/esm/renderers/Item.d.ts +97 -12
  43. package/esm/renderers/Item.js +159 -120
  44. package/esm/renderers/Options.js +2 -1
  45. package/esm/renderers/Placeholder.js +1 -1
  46. package/esm/renderers/builtin.js +1 -1
  47. package/esm/renderers/register.js +1 -1
  48. package/esm/renderers/wrapControl.js +2 -1
  49. package/esm/store/app.js +2 -1
  50. package/esm/store/combo.d.ts +408 -0
  51. package/esm/store/combo.js +1 -1
  52. package/esm/store/crud.js +2 -1
  53. package/esm/store/form.d.ts +170 -0
  54. package/esm/store/form.js +2 -1
  55. package/esm/store/formItem.d.ts +5 -0
  56. package/esm/store/formItem.js +30 -8
  57. package/esm/store/iRenderer.js +2 -1
  58. package/esm/store/index.js +1 -1
  59. package/esm/store/list.js +1 -1
  60. package/esm/store/manager.js +1 -1
  61. package/esm/store/modal.js +1 -1
  62. package/esm/store/node.js +1 -1
  63. package/esm/store/pagination.js +2 -1
  64. package/esm/store/root.js +2 -1
  65. package/esm/store/service.js +2 -1
  66. package/esm/store/status.js +1 -1
  67. package/esm/store/table.d.ts +379 -21
  68. package/esm/store/table.js +84 -54
  69. package/esm/store/table2.js +1 -1
  70. package/esm/theme.js +1 -1
  71. package/esm/utils/Animation.js +1 -1
  72. package/esm/utils/ColorScale.js +1 -1
  73. package/esm/utils/DataSchema.js +1 -1
  74. package/esm/utils/DataScope.js +1 -1
  75. package/esm/utils/RootClose.js +1 -1
  76. package/esm/utils/SimpleMap.js +1 -1
  77. package/esm/utils/api.js +1 -1
  78. package/esm/utils/arraySlice.js +1 -1
  79. package/esm/utils/attachmentAdpator.js +1 -1
  80. package/esm/utils/autobind.js +1 -1
  81. package/esm/utils/browser.js +1 -1
  82. package/esm/utils/columnsSplit.js +1 -1
  83. package/esm/utils/concatData.js +1 -1
  84. package/esm/utils/dataMapping.js +1 -1
  85. package/esm/utils/date.js +1 -1
  86. package/esm/utils/debug.js +17 -3
  87. package/esm/utils/decodeEntity.js +1 -1
  88. package/esm/utils/dom.js +1 -1
  89. package/esm/utils/errors.js +1 -1
  90. package/esm/utils/escapeHtml.js +1 -1
  91. package/esm/utils/filter-schema.js +1 -1
  92. package/esm/utils/filter.js +1 -1
  93. package/esm/utils/formatDuration.js +1 -1
  94. package/esm/utils/formula.js +2 -1
  95. package/esm/utils/getVariable.js +1 -1
  96. package/esm/utils/grammar.js +1 -1
  97. package/esm/utils/handleAction.js +1 -1
  98. package/esm/utils/helper.d.ts +4 -1
  99. package/esm/utils/helper.js +20 -4
  100. package/esm/utils/highlight.js +1 -1
  101. package/esm/utils/icon.js +1 -1
  102. package/esm/utils/image.js +1 -1
  103. package/esm/utils/isPureVariable.js +2 -2
  104. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  105. package/esm/utils/keyToPath.js +1 -1
  106. package/esm/utils/labelToString.js +1 -1
  107. package/esm/utils/makeSorter.js +1 -1
  108. package/esm/utils/math.js +1 -1
  109. package/esm/utils/memoryParse.d.ts +2 -1
  110. package/esm/utils/memoryParse.js +10 -6
  111. package/esm/utils/normalizeLink.js +1 -1
  112. package/esm/utils/normalizeOptions.js +1 -1
  113. package/esm/utils/object.d.ts +2 -4
  114. package/esm/utils/object.js +1 -1
  115. package/esm/utils/offset.js +1 -1
  116. package/esm/utils/offsetParent.js +1 -1
  117. package/esm/utils/optionValueCompare.js +1 -1
  118. package/esm/utils/position.js +1 -1
  119. package/esm/utils/prettyBytes.js +1 -1
  120. package/esm/utils/printElement.js +1 -1
  121. package/esm/utils/renderer-event.js +1 -1
  122. package/esm/utils/replaceText.js +1 -1
  123. package/esm/utils/resize-sensor.js +30 -1
  124. package/esm/utils/resolveCondition.js +2 -1
  125. package/esm/utils/resolveVariable.js +1 -1
  126. package/esm/utils/resolveVariableAndFilter.js +1 -1
  127. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  128. package/esm/utils/scrollPosition.js +1 -1
  129. package/esm/utils/string2regExp.js +1 -1
  130. package/esm/utils/stripNumber.js +1 -1
  131. package/esm/utils/style-helper.js +1 -1
  132. package/esm/utils/style.js +2 -1
  133. package/esm/utils/toNumber.js +1 -1
  134. package/esm/utils/tokenize.js +1 -1
  135. package/esm/utils/tpl-builtin.js +2 -1
  136. package/esm/utils/tpl-lodash.js +2 -1
  137. package/esm/utils/tpl.js +1 -1
  138. package/esm/utils/uncontrollable.js +1 -1
  139. package/esm/utils/validateId.js +1 -1
  140. package/esm/utils/validations.js +2 -1
  141. package/esm/utils/visitedCache.d.ts +46 -0
  142. package/esm/utils/visitedCache.js +124 -0
  143. package/lib/Root.js +1 -1
  144. package/lib/RootRenderer.js +1 -1
  145. package/lib/SchemaRenderer.d.ts +0 -1
  146. package/lib/SchemaRenderer.js +15 -6
  147. package/lib/Scoped.js +2 -1
  148. package/lib/StatusScoped.js +1 -1
  149. package/lib/WithRootStore.js +1 -1
  150. package/lib/WithStore.js +8 -8
  151. package/lib/actions/Action.js +2 -1
  152. package/lib/actions/AjaxAction.js +1 -1
  153. package/lib/actions/BreakAction.js +1 -1
  154. package/lib/actions/BroadcastAction.js +1 -1
  155. package/lib/actions/CmptAction.js +1 -1
  156. package/lib/actions/ContinueAction.js +1 -1
  157. package/lib/actions/CopyAction.js +1 -1
  158. package/lib/actions/CustomAction.js +2 -1
  159. package/lib/actions/DialogAction.js +3 -1
  160. package/lib/actions/DrawerAction.js +2 -1
  161. package/lib/actions/EmailAction.js +1 -1
  162. package/lib/actions/EventAction.js +2 -1
  163. package/lib/actions/LinkAction.js +1 -1
  164. package/lib/actions/LoopAction.js +2 -1
  165. package/lib/actions/PageAction.js +1 -1
  166. package/lib/actions/ParallelAction.js +1 -1
  167. package/lib/actions/PrintAction.js +1 -1
  168. package/lib/actions/StatusAction.js +1 -1
  169. package/lib/actions/SwitchAction.js +1 -1
  170. package/lib/actions/ToastAction.js +1 -1
  171. package/lib/actions/WaitAction.js +1 -1
  172. package/lib/components/CustomStyle.js +1 -1
  173. package/lib/components/ErrorBoundary.js +1 -1
  174. package/lib/components/LazyComponent.js +1 -1
  175. package/lib/components/Overlay.js +2 -1
  176. package/lib/components/PopOver.js +2 -1
  177. package/lib/env.js +1 -1
  178. package/lib/envOverwrite.js +1 -1
  179. package/lib/factory.js +1 -1
  180. package/lib/index.js +2 -2
  181. package/lib/locale.js +2 -1
  182. package/lib/polyfills.js +1 -1
  183. package/lib/renderers/Form.js +41 -15
  184. package/lib/renderers/Item.d.ts +98 -13
  185. package/lib/renderers/Item.js +158 -119
  186. package/lib/renderers/Options.js +2 -1
  187. package/lib/renderers/Placeholder.js +1 -1
  188. package/lib/renderers/builtin.js +1 -1
  189. package/lib/renderers/register.js +1 -1
  190. package/lib/renderers/wrapControl.js +2 -1
  191. package/lib/store/app.js +2 -1
  192. package/lib/store/combo.d.ts +408 -0
  193. package/lib/store/combo.js +1 -1
  194. package/lib/store/crud.js +2 -1
  195. package/lib/store/form.d.ts +170 -0
  196. package/lib/store/form.js +2 -1
  197. package/lib/store/formItem.d.ts +5 -0
  198. package/lib/store/formItem.js +30 -8
  199. package/lib/store/iRenderer.js +2 -1
  200. package/lib/store/index.js +1 -1
  201. package/lib/store/list.js +1 -1
  202. package/lib/store/manager.js +1 -1
  203. package/lib/store/modal.js +1 -1
  204. package/lib/store/node.js +1 -1
  205. package/lib/store/pagination.js +2 -1
  206. package/lib/store/root.js +2 -1
  207. package/lib/store/service.js +2 -1
  208. package/lib/store/status.js +1 -1
  209. package/lib/store/table.d.ts +379 -21
  210. package/lib/store/table.js +84 -54
  211. package/lib/store/table2.js +1 -1
  212. package/lib/theme.js +1 -1
  213. package/lib/utils/Animation.js +1 -1
  214. package/lib/utils/ColorScale.js +1 -1
  215. package/lib/utils/DataSchema.js +1 -1
  216. package/lib/utils/DataScope.js +1 -1
  217. package/lib/utils/RootClose.js +1 -1
  218. package/lib/utils/SimpleMap.js +1 -1
  219. package/lib/utils/api.js +1 -1
  220. package/lib/utils/arraySlice.js +1 -1
  221. package/lib/utils/attachmentAdpator.js +1 -1
  222. package/lib/utils/autobind.js +1 -1
  223. package/lib/utils/browser.js +1 -1
  224. package/lib/utils/columnsSplit.js +1 -1
  225. package/lib/utils/concatData.js +1 -1
  226. package/lib/utils/dataMapping.js +1 -1
  227. package/lib/utils/date.js +1 -1
  228. package/lib/utils/debug.js +17 -3
  229. package/lib/utils/decodeEntity.js +1 -1
  230. package/lib/utils/dom.js +1 -1
  231. package/lib/utils/errors.js +1 -1
  232. package/lib/utils/escapeHtml.js +1 -1
  233. package/lib/utils/filter-schema.js +1 -1
  234. package/lib/utils/filter.js +1 -1
  235. package/lib/utils/formatDuration.js +1 -1
  236. package/lib/utils/formula.js +2 -1
  237. package/lib/utils/getVariable.js +1 -1
  238. package/lib/utils/grammar.js +1 -1
  239. package/lib/utils/handleAction.js +1 -1
  240. package/lib/utils/helper.d.ts +4 -1
  241. package/lib/utils/helper.js +19 -3
  242. package/lib/utils/highlight.js +1 -1
  243. package/lib/utils/icon.js +1 -1
  244. package/lib/utils/image.js +1 -1
  245. package/lib/utils/isPureVariable.js +2 -2
  246. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  247. package/lib/utils/keyToPath.js +1 -1
  248. package/lib/utils/labelToString.js +1 -1
  249. package/lib/utils/makeSorter.js +1 -1
  250. package/lib/utils/math.js +1 -1
  251. package/lib/utils/memoryParse.d.ts +2 -1
  252. package/lib/utils/memoryParse.js +10 -6
  253. package/lib/utils/normalizeLink.js +1 -1
  254. package/lib/utils/normalizeOptions.js +1 -1
  255. package/lib/utils/object.d.ts +2 -4
  256. package/lib/utils/object.js +1 -1
  257. package/lib/utils/offset.js +1 -1
  258. package/lib/utils/offsetParent.js +1 -1
  259. package/lib/utils/optionValueCompare.js +1 -1
  260. package/lib/utils/position.js +1 -1
  261. package/lib/utils/prettyBytes.js +1 -1
  262. package/lib/utils/printElement.js +1 -1
  263. package/lib/utils/renderer-event.js +1 -1
  264. package/lib/utils/replaceText.js +1 -1
  265. package/lib/utils/resize-sensor.js +30 -1
  266. package/lib/utils/resolveCondition.js +2 -1
  267. package/lib/utils/resolveVariable.js +1 -1
  268. package/lib/utils/resolveVariableAndFilter.js +1 -1
  269. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  270. package/lib/utils/scrollPosition.js +1 -1
  271. package/lib/utils/string2regExp.js +1 -1
  272. package/lib/utils/stripNumber.js +1 -1
  273. package/lib/utils/style-helper.js +1 -1
  274. package/lib/utils/style.js +2 -1
  275. package/lib/utils/toNumber.js +1 -1
  276. package/lib/utils/tokenize.js +1 -1
  277. package/lib/utils/tpl-builtin.js +2 -1
  278. package/lib/utils/tpl-lodash.js +2 -1
  279. package/lib/utils/tpl.js +1 -1
  280. package/lib/utils/uncontrollable.js +1 -1
  281. package/lib/utils/validateId.js +1 -1
  282. package/lib/utils/validations.js +2 -1
  283. package/lib/utils/visitedCache.d.ts +46 -0
  284. package/lib/utils/visitedCache.js +128 -0
  285. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -10,7 +10,7 @@ function isPureVariable(path) {
10
10
  try {
11
11
  var ast = memoryParse(path);
12
12
  // 只有一个成员说明是纯表达式模式
13
- return ast.body.length === 1 && ast.body[0].type === 'script';
13
+ return (ast === null || ast === void 0 ? void 0 : ast.body.length) === 1 && ast.body[0].type === 'script';
14
14
  }
15
15
  catch (err) {
16
16
  return false;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
package/esm/utils/math.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,3 +1,4 @@
1
+ import type { ASTNode } from 'amis-formula';
1
2
  export declare function memoryParse(input: string, options?: {
2
3
  /**
3
4
  * 直接是运算表达式?还是从模板开始 ${} 里面才算运算表达式
@@ -14,4 +15,4 @@ export declare function memoryParse(input: string, options?: {
14
15
  */
15
16
  allowFilter?: boolean;
16
17
  variableNamespaces?: Array<string>;
17
- }): any;
18
+ }): ASTNode | undefined;
@@ -1,25 +1,29 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
6
6
  import { parse } from 'amis-formula';
7
+ import VisitedCache from './visitedCache.js';
7
8
 
8
- var cache = {};
9
+ // NOTE 缓存前40条表达式
10
+ var cache = new VisitedCache(40);
9
11
  function memoryParse(input, options) {
10
12
  if (options === void 0) { options = {
11
13
  evalMode: false
12
14
  }; }
13
- // @todo 优化内存缓存释放,比如只缓存最高频的模版
15
+ // 优化内存缓存释放,比如只缓存最高频的模版
14
16
  if (typeof input !== 'string') {
15
17
  return;
16
18
  }
17
19
  var key = input + JSON.stringify(options);
18
- if (cache[key]) {
19
- return cache[key];
20
+ // get cache result
21
+ if (cache.has(key)) {
22
+ return cache.get(key);
20
23
  }
24
+ // run parse function and cache
21
25
  var ast = parse(input, options);
22
- cache[key] = ast;
26
+ cache.set(key, ast);
23
27
  return ast;
24
28
  }
25
29
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,8 +1,6 @@
1
- export declare function createObject(superProps?: {
1
+ export declare function createObject<P extends {
2
2
  [propName: string]: any;
3
- }, props?: {
4
- [propName: string]: any;
5
- }, properties?: any): object;
3
+ } | null>(superProps?: P, props?: P, properties?: any): object;
6
4
  export declare function extractObjectChain(value: any): object[];
7
5
  export declare function createObjectFromChain(chain: Array<object>): object;
8
6
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -163,6 +163,35 @@ function resizeSensor(element, callback, once, type) {
163
163
  if (!element) {
164
164
  return function () { };
165
165
  }
166
+ // 优先用 ResizeObserver
167
+ if (typeof ResizeObserver !== 'undefined') {
168
+ var rect = element.getBoundingClientRect();
169
+ var originWidth_1 = rect.width;
170
+ var originHeight_1 = rect.height;
171
+ var observer_1 = new ResizeObserver(function (entries) {
172
+ if (once) {
173
+ observer_1.disconnect();
174
+ }
175
+ if (type === 'both') {
176
+ callback();
177
+ }
178
+ else {
179
+ var entry = entries[0];
180
+ var cr = entry.contentRect;
181
+ if ((type === 'width' && cr.width !== originWidth_1) ||
182
+ (type === 'height' && cr.height !== originHeight_1)) {
183
+ callback();
184
+ originWidth_1 = cr.width;
185
+ originHeight_1 = cr.height;
186
+ }
187
+ }
188
+ });
189
+ observer_1.observe(element);
190
+ return function () {
191
+ observer_1.disconnect();
192
+ };
193
+ }
194
+ // 不支持 ResizeObserver 的话,用 polyfill
166
195
  var disposeEvent = undefined;
167
196
  if (once) {
168
197
  disposeEvent = attachResizeEvent(element, function () {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -14,6 +14,7 @@ import moment from 'moment';
14
14
  import capitalize from 'lodash/capitalize';
15
15
  import 'amis-formula';
16
16
  import 'lodash/isPlainObject';
17
+ import './memoryParse.js';
17
18
  import { isPureVariable } from './isPureVariable.js';
18
19
  import '@rc-component/mini-decimal';
19
20
  import { resolveVariableAndFilter } from './resolveVariableAndFilter.js';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -7,6 +7,7 @@ import 'tslib';
7
7
  import 'amis-formula';
8
8
  import 'moment';
9
9
  import 'lodash/isPlainObject';
10
+ import './memoryParse.js';
10
11
  import '@rc-component/mini-decimal';
11
12
  import { resolveVariableAndFilter } from './resolveVariableAndFilter.js';
12
13
  import './filter.js';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -7,6 +7,7 @@ import { __awaiter, __generator } from 'tslib';
7
7
  export { getFilters, registerFilter, registerFunction } from 'amis-formula';
8
8
  import 'moment';
9
9
  import 'lodash/isPlainObject';
10
+ import './memoryParse.js';
10
11
  import { tokenize } from './tokenize.js';
11
12
  export { tokenize } from './tokenize.js';
12
13
  import '@rc-component/mini-decimal';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -8,6 +8,7 @@ import template from 'lodash/template';
8
8
  import { getFilters } from 'amis-formula';
9
9
  import moment from 'moment';
10
10
  import 'lodash/isPlainObject';
11
+ import './memoryParse.js';
11
12
  import '@rc-component/mini-decimal';
12
13
  import './filter.js';
13
14
 
package/esm/utils/tpl.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -8,6 +8,7 @@ import moment from 'moment';
8
8
  import { filter } from './tpl.js';
9
9
  import 'amis-formula';
10
10
  import isPlainObject from 'lodash/isPlainObject';
11
+ import './memoryParse.js';
11
12
  import { isPureVariable } from './isPureVariable.js';
12
13
  import '@rc-component/mini-decimal';
13
14
  import { resolveVariableAndFilter } from './resolveVariableAndFilter.js';
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @description 缓存值的单元
3
+ */
4
+ export type CacheEntry<V> = {
5
+ value: V;
6
+ visitCount: number;
7
+ };
8
+ /**
9
+ * 自动清理访问次数最少key的Map,次数相同时优先淘汰旧项
10
+ * 每次触发清理的计数基于容量的百分比
11
+ * @class VisitedCache
12
+ * @template K - 缓存key的类型
13
+ * @template V - 缓存value的类型
14
+ */
15
+ export default class VisitedCache<K, V> {
16
+ private capacity;
17
+ private cache;
18
+ private visitCountOrder;
19
+ private keyOrderMatrixForByCount;
20
+ private releaseCount;
21
+ /**
22
+ *
23
+ * @param capacity 容量
24
+ * @param releasePercent 清理数量占容量百分比
25
+ */
26
+ constructor(capacity: number, releasePercent?: number);
27
+ /**
28
+ * 更新现存项目的缓存顺序
29
+ * @param key
30
+ * @param entry
31
+ */
32
+ private updateCacheEntryOrder;
33
+ /**
34
+ *
35
+ * @param {K} key
36
+ * @returns {(V | undefined)}
37
+ */
38
+ get(key: K): V | undefined;
39
+ /**
40
+ *
41
+ * @param {K} key
42
+ * @param {V} value
43
+ */
44
+ set(key: K, value: V): void;
45
+ has(key: K): boolean;
46
+ }
@@ -0,0 +1,124 @@
1
+ /**
2
+ * amis-core v6.8.0
3
+ * Copyright 2018-2024 fex
4
+ */
5
+
6
+ import { __spreadArray, __read } from 'tslib';
7
+
8
+ /**
9
+ * 自动清理访问次数最少key的Map,次数相同时优先淘汰旧项
10
+ * 每次触发清理的计数基于容量的百分比
11
+ * @class VisitedCache
12
+ * @template K - 缓存key的类型
13
+ * @template V - 缓存value的类型
14
+ */
15
+ var VisitedCache = /** @class */ (function () {
16
+ /**
17
+ *
18
+ * @param capacity 容量
19
+ * @param releasePercent 清理数量占容量百分比
20
+ */
21
+ function VisitedCache(capacity, releasePercent) {
22
+ this.visitCountOrder = [];
23
+ this.keyOrderMatrixForByCount = {};
24
+ this.capacity = capacity;
25
+ this.cache = new Map();
26
+ this.releaseCount = (this.capacity * (releasePercent || 1 / 8)) >> 0 || 1;
27
+ }
28
+ /**
29
+ * 更新现存项目的缓存顺序
30
+ * @param key
31
+ * @param entry
32
+ */
33
+ VisitedCache.prototype.updateCacheEntryOrder = function (key, entry, nextVisitCount) {
34
+ var oldVisitCount = entry.visitCount;
35
+ var oldKeyOrder = this.keyOrderMatrixForByCount[oldVisitCount];
36
+ if (Array.isArray(oldKeyOrder)) {
37
+ // 从key为旧访问次数的顺序数组中删除
38
+ var oldKeyIndex = oldKeyOrder.indexOf(key);
39
+ if (oldKeyIndex !== -1) {
40
+ oldKeyOrder.splice(oldKeyIndex, 1);
41
+ }
42
+ }
43
+ // 相同访问量,更新访问顺序
44
+ this.keyOrderMatrixForByCount[nextVisitCount] = Array.isArray(this.keyOrderMatrixForByCount[nextVisitCount])
45
+ ? __spreadArray(__spreadArray([], __read(this.keyOrderMatrixForByCount[nextVisitCount]), false), [key], false) : [key];
46
+ entry.visitCount = nextVisitCount;
47
+ // 重新按照访问量排序
48
+ this.visitCountOrder = __spreadArray([], __read(new Set(__spreadArray(__spreadArray([], __read(this.visitCountOrder), false), [nextVisitCount], false))), false).sort(function (a, b) { return a - b; });
49
+ };
50
+ /**
51
+ *
52
+ * @param {K} key
53
+ * @returns {(V | undefined)}
54
+ */
55
+ VisitedCache.prototype.get = function (key) {
56
+ if (this.cache.has(key)) {
57
+ var entry = this.cache.get(key);
58
+ if (entry !== undefined) {
59
+ var visitCount = entry.visitCount;
60
+ // 更新访问顺序
61
+ this.updateCacheEntryOrder(key, entry, visitCount + 1);
62
+ return entry.value;
63
+ }
64
+ }
65
+ return undefined;
66
+ };
67
+ /**
68
+ *
69
+ * @param {K} key
70
+ * @param {V} value
71
+ */
72
+ VisitedCache.prototype.set = function (key, value) {
73
+ // 更新现存项的值和访问次数及新鲜度
74
+ if (this.cache.has(key)) {
75
+ var entry = this.cache.get(key);
76
+ if (entry !== undefined) {
77
+ var visitCount = entry.visitCount;
78
+ this.updateCacheEntryOrder(key, entry, visitCount + 1);
79
+ entry.value = value;
80
+ }
81
+ }
82
+ else {
83
+ // 先进行清理
84
+ if (this.cache.size === this.capacity) {
85
+ // TODO 依据最大容量的1/10进行释放,试试效果
86
+ var dynamicReleaseCount = this.releaseCount;
87
+ // const dynamicReleaseCount =
88
+ // (this.keyOrderMatrixForByCount[this.visitCountOrder[this.visitCountOrder.length - 1]].length / (this.capacity)) >>
89
+ // 0 || 1
90
+ var findIndex = 0;
91
+ var released = 0;
92
+ while (released < dynamicReleaseCount &&
93
+ findIndex <= this.visitCountOrder.length - 1) {
94
+ // 最少访问的次数
95
+ var targetCount = this.visitCountOrder[findIndex];
96
+ // 查看其中有没有项
97
+ var targetKeyOrder = this.keyOrderMatrixForByCount[targetCount];
98
+ if (!targetKeyOrder.length) {
99
+ findIndex++;
100
+ }
101
+ else {
102
+ while (targetKeyOrder.length > 0 &&
103
+ released < dynamicReleaseCount) {
104
+ this.cache.delete(targetKeyOrder.shift());
105
+ released++;
106
+ }
107
+ }
108
+ }
109
+ }
110
+ var newEntry = {
111
+ visitCount: 1,
112
+ value: value
113
+ };
114
+ this.cache.set(key, newEntry);
115
+ this.updateCacheEntryOrder(key, newEntry, 1);
116
+ }
117
+ };
118
+ VisitedCache.prototype.has = function (key) {
119
+ return this.cache.has(key);
120
+ };
121
+ return VisitedCache;
122
+ }());
123
+
124
+ export { VisitedCache as default };
package/lib/Root.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -23,7 +23,6 @@ export declare class SchemaRenderer extends React.Component<SchemaRendererProps,
23
23
  unbindEvent: (() => void) | undefined;
24
24
  isStatic: any;
25
25
  constructor(props: SchemaRendererProps);
26
- componentDidMount(): void;
27
26
  componentWillUnmount(): void;
28
27
  shouldComponentUpdate(nextProps: SchemaRendererProps): boolean;
29
28
  resolveRenderer(props: SchemaRendererProps, force?: boolean): any;