amis-core 6.4.1 → 6.6.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.js +1 -1
  3. package/esm/SchemaRenderer.js +16 -5
  4. package/esm/Scoped.d.ts +1 -1
  5. package/esm/Scoped.js +5 -1
  6. package/esm/StatusScoped.js +1 -1
  7. package/esm/WithRootStore.js +1 -1
  8. package/esm/WithStore.js +10 -4
  9. package/esm/actions/Action.js +6 -5
  10. package/esm/actions/AjaxAction.js +3 -3
  11. package/esm/actions/BreakAction.js +1 -1
  12. package/esm/actions/BroadcastAction.js +1 -1
  13. package/esm/actions/CmptAction.js +2 -2
  14. package/esm/actions/ContinueAction.js +1 -1
  15. package/esm/actions/CopyAction.js +4 -4
  16. package/esm/actions/CustomAction.js +2 -1
  17. package/esm/actions/DialogAction.js +2 -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.d.ts +1 -1
  26. package/esm/actions/PrintAction.js +12 -6
  27. package/esm/actions/StatusAction.js +1 -1
  28. package/esm/actions/SwitchAction.js +3 -3
  29. package/esm/actions/ToastAction.js +1 -1
  30. package/esm/actions/WaitAction.js +1 -1
  31. package/esm/components/CustomStyle.js +3 -2
  32. package/esm/components/ErrorBoundary.js +1 -1
  33. package/esm/components/LazyComponent.js +1 -1
  34. package/esm/components/Overlay.js +2 -1
  35. package/esm/components/PopOver.js +2 -1
  36. package/esm/env.d.ts +2 -4
  37. package/esm/env.js +1 -1
  38. package/esm/envOverwrite.js +1 -1
  39. package/esm/factory.js +1 -1
  40. package/esm/index.js +4 -4
  41. package/esm/locale.js +2 -1
  42. package/esm/polyfills.js +1 -1
  43. package/esm/renderers/Form.d.ts +1 -1
  44. package/esm/renderers/Form.js +43 -9
  45. package/esm/renderers/Item.d.ts +27 -60
  46. package/esm/renderers/Item.js +75 -6
  47. package/esm/renderers/Options.js +40 -13
  48. package/esm/renderers/Placeholder.js +1 -1
  49. package/esm/renderers/builtin.js +1 -1
  50. package/esm/renderers/register.js +1 -1
  51. package/esm/renderers/wrapControl.js +19 -9
  52. package/esm/store/app.d.ts +2 -0
  53. package/esm/store/app.js +2 -1
  54. package/esm/store/combo.d.ts +6 -0
  55. package/esm/store/combo.js +1 -1
  56. package/esm/store/crud.d.ts +2 -0
  57. package/esm/store/crud.js +2 -1
  58. package/esm/store/form.d.ts +2 -0
  59. package/esm/store/form.js +2 -1
  60. package/esm/store/formItem.js +12 -2
  61. package/esm/store/iRenderer.d.ts +2 -0
  62. package/esm/store/iRenderer.js +13 -1
  63. package/esm/store/index.js +1 -1
  64. package/esm/store/list.d.ts +2 -0
  65. package/esm/store/list.js +1 -1
  66. package/esm/store/manager.js +1 -1
  67. package/esm/store/modal.d.ts +2 -0
  68. package/esm/store/modal.js +1 -1
  69. package/esm/store/node.js +1 -1
  70. package/esm/store/pagination.d.ts +2 -0
  71. package/esm/store/pagination.js +2 -1
  72. package/esm/store/root.d.ts +2 -0
  73. package/esm/store/root.js +2 -1
  74. package/esm/store/service.d.ts +2 -0
  75. package/esm/store/service.js +2 -1
  76. package/esm/store/status.js +1 -1
  77. package/esm/store/table.d.ts +6 -0
  78. package/esm/store/table.js +2 -1
  79. package/esm/store/table2.d.ts +2 -0
  80. package/esm/store/table2.js +1 -1
  81. package/esm/theme.js +1 -1
  82. package/esm/types.d.ts +2 -0
  83. package/esm/utils/Animation.js +1 -1
  84. package/esm/utils/ColorScale.js +1 -1
  85. package/esm/utils/DataSchema.js +1 -1
  86. package/esm/utils/DataScope.js +2 -1
  87. package/esm/utils/RootClose.js +1 -1
  88. package/esm/utils/SimpleMap.js +1 -1
  89. package/esm/utils/api.js +21 -3
  90. package/esm/utils/arraySlice.js +1 -1
  91. package/esm/utils/attachmentAdpator.js +1 -1
  92. package/esm/utils/autobind.js +1 -1
  93. package/esm/utils/browser.js +1 -1
  94. package/esm/utils/columnsSplit.js +1 -1
  95. package/esm/utils/concatData.js +1 -1
  96. package/esm/utils/dataMapping.js +1 -1
  97. package/esm/utils/date.d.ts +3 -1
  98. package/esm/utils/date.js +11 -5
  99. package/esm/utils/debug.js +1 -1
  100. package/esm/utils/decodeEntity.js +1 -1
  101. package/esm/utils/dom.js +1 -1
  102. package/esm/utils/errors.js +1 -1
  103. package/esm/utils/escapeHtml.js +1 -1
  104. package/esm/utils/filter-schema.js +7 -4
  105. package/esm/utils/filter.js +1 -1
  106. package/esm/utils/formatDuration.js +1 -1
  107. package/esm/utils/formula.js +2 -1
  108. package/esm/utils/getVariable.js +1 -1
  109. package/esm/utils/grammar.js +1 -1
  110. package/esm/utils/handleAction.js +1 -1
  111. package/esm/utils/helper.d.ts +1 -1
  112. package/esm/utils/helper.js +10 -6
  113. package/esm/utils/highlight.js +1 -1
  114. package/esm/utils/icon.js +1 -1
  115. package/esm/utils/image.js +1 -1
  116. package/esm/utils/isPureVariable.js +1 -1
  117. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  118. package/esm/utils/keyToPath.js +1 -1
  119. package/esm/utils/labelToString.js +1 -1
  120. package/esm/utils/makeSorter.js +1 -1
  121. package/esm/utils/math.js +1 -1
  122. package/esm/utils/memoryParse.js +1 -1
  123. package/esm/utils/normalizeLink.js +1 -1
  124. package/esm/utils/normalizeOptions.d.ts +1 -1
  125. package/esm/utils/normalizeOptions.js +3 -2
  126. package/esm/utils/object.js +1 -1
  127. package/esm/utils/offset.js +1 -1
  128. package/esm/utils/offsetParent.js +1 -1
  129. package/esm/utils/optionValueCompare.js +1 -1
  130. package/esm/utils/position.js +1 -1
  131. package/esm/utils/prettyBytes.js +1 -1
  132. package/esm/utils/printElement.js +1 -1
  133. package/esm/utils/renderer-event.js +7 -6
  134. package/esm/utils/replaceText.js +1 -1
  135. package/esm/utils/resize-sensor.js +1 -1
  136. package/esm/utils/resolveCondition.d.ts +2 -1
  137. package/esm/utils/resolveCondition.js +60 -8
  138. package/esm/utils/resolveVariable.js +1 -1
  139. package/esm/utils/resolveVariableAndFilter.js +1 -1
  140. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  141. package/esm/utils/scrollPosition.js +1 -1
  142. package/esm/utils/string2regExp.js +1 -1
  143. package/esm/utils/stripNumber.js +2 -2
  144. package/esm/utils/style-helper.js +15 -8
  145. package/esm/utils/style.js +2 -1
  146. package/esm/utils/toNumber.js +1 -1
  147. package/esm/utils/tokenize.js +1 -1
  148. package/esm/utils/tpl-builtin.js +2 -1
  149. package/esm/utils/tpl-lodash.js +2 -1
  150. package/esm/utils/tpl.d.ts +8 -1
  151. package/esm/utils/tpl.js +18 -5
  152. package/esm/utils/uncontrollable.js +1 -1
  153. package/esm/utils/validateId.js +1 -1
  154. package/esm/utils/validations.js +2 -1
  155. package/lib/Root.js +1 -1
  156. package/lib/RootRenderer.d.ts +1 -1
  157. package/lib/RootRenderer.js +1 -1
  158. package/lib/SchemaRenderer.js +16 -5
  159. package/lib/Scoped.d.ts +1 -1
  160. package/lib/Scoped.js +5 -1
  161. package/lib/StatusScoped.js +1 -1
  162. package/lib/WithRootStore.js +1 -1
  163. package/lib/WithStore.js +10 -4
  164. package/lib/actions/Action.js +5 -4
  165. package/lib/actions/AjaxAction.js +2 -2
  166. package/lib/actions/BreakAction.js +1 -1
  167. package/lib/actions/BroadcastAction.js +1 -1
  168. package/lib/actions/CmptAction.js +2 -2
  169. package/lib/actions/ContinueAction.js +1 -1
  170. package/lib/actions/CopyAction.js +4 -4
  171. package/lib/actions/CustomAction.js +2 -1
  172. package/lib/actions/DialogAction.js +2 -1
  173. package/lib/actions/DrawerAction.js +2 -1
  174. package/lib/actions/EmailAction.js +1 -1
  175. package/lib/actions/EventAction.js +2 -1
  176. package/lib/actions/LinkAction.js +1 -1
  177. package/lib/actions/LoopAction.js +2 -1
  178. package/lib/actions/PageAction.js +1 -1
  179. package/lib/actions/ParallelAction.js +1 -1
  180. package/lib/actions/PrintAction.d.ts +1 -1
  181. package/lib/actions/PrintAction.js +12 -6
  182. package/lib/actions/StatusAction.js +1 -1
  183. package/lib/actions/SwitchAction.js +2 -2
  184. package/lib/actions/ToastAction.js +1 -1
  185. package/lib/actions/WaitAction.js +1 -1
  186. package/lib/components/CustomStyle.js +3 -2
  187. package/lib/components/ErrorBoundary.js +1 -1
  188. package/lib/components/LazyComponent.js +1 -1
  189. package/lib/components/Overlay.js +2 -1
  190. package/lib/components/PopOver.js +2 -1
  191. package/lib/env.d.ts +2 -4
  192. package/lib/env.js +1 -1
  193. package/lib/envOverwrite.js +1 -1
  194. package/lib/factory.js +1 -1
  195. package/lib/index.js +4 -2
  196. package/lib/locale.js +2 -1
  197. package/lib/polyfills.js +1 -1
  198. package/lib/renderers/Form.d.ts +1 -1
  199. package/lib/renderers/Form.js +43 -9
  200. package/lib/renderers/Item.d.ts +27 -60
  201. package/lib/renderers/Item.js +75 -6
  202. package/lib/renderers/Options.js +40 -13
  203. package/lib/renderers/Placeholder.js +1 -1
  204. package/lib/renderers/builtin.js +1 -1
  205. package/lib/renderers/register.js +1 -1
  206. package/lib/renderers/wrapControl.js +19 -9
  207. package/lib/store/app.d.ts +2 -0
  208. package/lib/store/app.js +2 -1
  209. package/lib/store/combo.d.ts +30 -24
  210. package/lib/store/combo.js +1 -1
  211. package/lib/store/crud.d.ts +2 -0
  212. package/lib/store/crud.js +2 -1
  213. package/lib/store/form.d.ts +12 -10
  214. package/lib/store/form.js +2 -1
  215. package/lib/store/formItem.js +12 -2
  216. package/lib/store/iRenderer.d.ts +2 -0
  217. package/lib/store/iRenderer.js +13 -1
  218. package/lib/store/index.js +1 -1
  219. package/lib/store/list.d.ts +2 -0
  220. package/lib/store/list.js +1 -1
  221. package/lib/store/manager.js +1 -1
  222. package/lib/store/modal.d.ts +2 -0
  223. package/lib/store/modal.js +1 -1
  224. package/lib/store/node.js +1 -1
  225. package/lib/store/pagination.d.ts +2 -0
  226. package/lib/store/pagination.js +2 -1
  227. package/lib/store/root.d.ts +2 -0
  228. package/lib/store/root.js +2 -1
  229. package/lib/store/service.d.ts +2 -0
  230. package/lib/store/service.js +2 -1
  231. package/lib/store/status.js +1 -1
  232. package/lib/store/table.d.ts +26 -20
  233. package/lib/store/table.js +2 -1
  234. package/lib/store/table2.d.ts +2 -0
  235. package/lib/store/table2.js +1 -1
  236. package/lib/theme.js +1 -1
  237. package/lib/types.d.ts +2 -0
  238. package/lib/utils/Animation.js +1 -1
  239. package/lib/utils/ColorScale.js +1 -1
  240. package/lib/utils/DataSchema.js +1 -1
  241. package/lib/utils/DataScope.js +2 -1
  242. package/lib/utils/RootClose.js +1 -1
  243. package/lib/utils/SimpleMap.js +1 -1
  244. package/lib/utils/api.js +23 -3
  245. package/lib/utils/arraySlice.js +1 -1
  246. package/lib/utils/attachmentAdpator.js +1 -1
  247. package/lib/utils/autobind.js +1 -1
  248. package/lib/utils/browser.js +1 -1
  249. package/lib/utils/columnsSplit.js +1 -1
  250. package/lib/utils/concatData.js +1 -1
  251. package/lib/utils/dataMapping.js +1 -1
  252. package/lib/utils/date.d.ts +3 -1
  253. package/lib/utils/date.js +11 -5
  254. package/lib/utils/debug.js +1 -1
  255. package/lib/utils/decodeEntity.js +1 -1
  256. package/lib/utils/dom.js +1 -1
  257. package/lib/utils/errors.js +1 -1
  258. package/lib/utils/escapeHtml.js +1 -1
  259. package/lib/utils/filter-schema.js +6 -3
  260. package/lib/utils/filter.js +1 -1
  261. package/lib/utils/formatDuration.js +1 -1
  262. package/lib/utils/formula.js +2 -1
  263. package/lib/utils/getVariable.js +1 -1
  264. package/lib/utils/grammar.js +1 -1
  265. package/lib/utils/handleAction.js +1 -1
  266. package/lib/utils/helper.d.ts +1 -1
  267. package/lib/utils/helper.js +9 -5
  268. package/lib/utils/highlight.js +1 -1
  269. package/lib/utils/icon.js +1 -1
  270. package/lib/utils/image.js +1 -1
  271. package/lib/utils/isPureVariable.js +1 -1
  272. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  273. package/lib/utils/keyToPath.js +1 -1
  274. package/lib/utils/labelToString.js +1 -1
  275. package/lib/utils/makeSorter.js +1 -1
  276. package/lib/utils/math.js +1 -1
  277. package/lib/utils/memoryParse.js +1 -1
  278. package/lib/utils/normalizeLink.js +1 -1
  279. package/lib/utils/normalizeOptions.d.ts +1 -1
  280. package/lib/utils/normalizeOptions.js +3 -2
  281. package/lib/utils/object.js +1 -1
  282. package/lib/utils/offset.js +1 -1
  283. package/lib/utils/offsetParent.js +1 -1
  284. package/lib/utils/optionValueCompare.js +1 -1
  285. package/lib/utils/position.js +1 -1
  286. package/lib/utils/prettyBytes.js +1 -1
  287. package/lib/utils/printElement.js +1 -1
  288. package/lib/utils/renderer-event.js +6 -5
  289. package/lib/utils/replaceText.js +1 -1
  290. package/lib/utils/resize-sensor.js +1 -1
  291. package/lib/utils/resolveCondition.d.ts +2 -1
  292. package/lib/utils/resolveCondition.js +60 -7
  293. package/lib/utils/resolveVariable.js +1 -1
  294. package/lib/utils/resolveVariableAndFilter.js +1 -1
  295. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  296. package/lib/utils/scrollPosition.js +1 -1
  297. package/lib/utils/string2regExp.js +1 -1
  298. package/lib/utils/stripNumber.js +3 -3
  299. package/lib/utils/style-helper.js +15 -8
  300. package/lib/utils/style.js +2 -1
  301. package/lib/utils/toNumber.js +1 -1
  302. package/lib/utils/tokenize.js +1 -1
  303. package/lib/utils/tpl-builtin.js +2 -1
  304. package/lib/utils/tpl-lodash.js +2 -1
  305. package/lib/utils/tpl.d.ts +8 -1
  306. package/lib/utils/tpl.js +17 -3
  307. package/lib/utils/uncontrollable.js +1 -1
  308. package/lib/utils/validateId.js +1 -1
  309. package/lib/utils/validations.js +2 -1
  310. package/package.json +3 -2
  311. package/esm/node_modules/@babel/runtime/helpers/esm/classCallCheck.js +0 -12
  312. package/esm/node_modules/@babel/runtime/helpers/esm/createClass.js +0 -26
  313. package/esm/node_modules/@babel/runtime/helpers/esm/defineProperty.js +0 -23
  314. package/esm/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +0 -19
  315. package/esm/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +0 -14
  316. package/esm/node_modules/@babel/runtime/helpers/esm/typeof.js +0 -16
  317. package/esm/node_modules/@rc-component/mini-decimal/es/BigIntDecimal.js +0 -184
  318. package/esm/node_modules/@rc-component/mini-decimal/es/MiniDecimal.js +0 -56
  319. package/esm/node_modules/@rc-component/mini-decimal/es/NumberDecimal.js +0 -119
  320. package/esm/node_modules/@rc-component/mini-decimal/es/numberUtil.js +0 -105
  321. package/esm/node_modules/@rc-component/mini-decimal/es/supportUtil.js +0 -10
  322. package/lib/node_modules/@babel/runtime/helpers/esm/classCallCheck.js +0 -16
  323. package/lib/node_modules/@babel/runtime/helpers/esm/createClass.js +0 -30
  324. package/lib/node_modules/@babel/runtime/helpers/esm/defineProperty.js +0 -27
  325. package/lib/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +0 -23
  326. package/lib/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +0 -18
  327. package/lib/node_modules/@babel/runtime/helpers/esm/typeof.js +0 -20
  328. package/lib/node_modules/@rc-component/mini-decimal/es/BigIntDecimal.js +0 -188
  329. package/lib/node_modules/@rc-component/mini-decimal/es/MiniDecimal.js +0 -61
  330. package/lib/node_modules/@rc-component/mini-decimal/es/NumberDecimal.js +0 -123
  331. package/lib/node_modules/@rc-component/mini-decimal/es/numberUtil.js +0 -114
  332. package/lib/node_modules/@rc-component/mini-decimal/es/supportUtil.js +0 -14
@@ -5,7 +5,7 @@ import { IFormItemStore, IFormStore } from '../store/form';
5
5
  import { RendererProps, TestFunc, RendererConfig } from '../factory';
6
6
  import { FormHorizontal, FormSchemaBase } from './Form';
7
7
  import { ActionObject, BaseApiObject, BaseSchemaWithoutType, ClassName, Schema } from '../types';
8
- export type LabelAlign = 'right' | 'left';
8
+ export type LabelAlign = 'right' | 'left' | 'top' | 'inherit';
9
9
  export interface FormBaseControl extends BaseSchemaWithoutType {
10
10
  /**
11
11
  * 表单项大小
@@ -348,6 +348,7 @@ export interface FormBaseControl extends BaseSchemaWithoutType {
348
348
  * 初始化时是否把其他字段同步到表单内部。
349
349
  */
350
350
  initAutoFill?: boolean | 'fillIfNotSet';
351
+ row?: number;
351
352
  }
352
353
  export interface FormItemBasicConfig extends Partial<RendererConfig> {
353
354
  type?: string;
@@ -556,11 +557,11 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
556
557
  contextType: React.Context<{
557
558
  storeType: string;
558
559
  } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
559
- readonly fetcher: any; /**
560
- * 显示一个小图标, 鼠标放上去的时候显示提示内容, 这个小图标跟 label 在一起
561
- */
560
+ readonly fetcher: any;
562
561
  readonly notify: any;
563
- readonly isCancel: (value: any) => boolean;
562
+ readonly isCancel: (value: any) => boolean; /**
563
+ * 当修改完的时候是否提交表单。
564
+ */
564
565
  readonly __: import("..").TranslateFn<any>;
565
566
  getStoreById(id: string): {
566
567
  id: string;
@@ -575,9 +576,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
575
576
  readonly hasChildren: boolean;
576
577
  readonly children: any[];
577
578
  } & {
578
- onChildStoreDispose(child: any): void; /**
579
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
580
- */
579
+ onChildStoreDispose(child: any): void;
581
580
  syncProps(props: any, prevProps: any, list?: string[]): void;
582
581
  dispose: (callback?: (() => void) | undefined) => void;
583
582
  addChildId: (id: string) => void;
@@ -595,9 +594,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
595
594
  readonly hasChildren: boolean;
596
595
  readonly children: any[];
597
596
  } & {
598
- onChildStoreDispose(child: any): void; /**
599
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
600
- */
597
+ onChildStoreDispose(child: any): void;
601
598
  syncProps(props: any, prevProps: any, list?: string[]): void;
602
599
  dispose: (callback?: (() => void) | undefined) => void;
603
600
  addChildId: (id: string) => void;
@@ -617,9 +614,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
617
614
  readonly hasChildren: boolean;
618
615
  readonly children: any[];
619
616
  } & {
620
- onChildStoreDispose(child: any): void; /**
621
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
622
- */
617
+ onChildStoreDispose(child: any): void;
623
618
  syncProps(props: any, prevProps: any, list?: string[]): void;
624
619
  dispose: (callback?: (() => void) | undefined) => void;
625
620
  addChildId: (id: string) => void;
@@ -637,9 +632,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
637
632
  readonly hasChildren: boolean;
638
633
  readonly children: any[];
639
634
  } & {
640
- onChildStoreDispose(child: any): void; /**
641
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
642
- */
635
+ onChildStoreDispose(child: any): void;
643
636
  syncProps(props: any, prevProps: any, list?: string[]): void;
644
637
  dispose: (callback?: (() => void) | undefined) => void;
645
638
  addChildId: (id: string) => void;
@@ -666,9 +659,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
666
659
  readonly hasChildren: boolean;
667
660
  readonly children: any[];
668
661
  } & {
669
- onChildStoreDispose(child: any): void; /**
670
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
671
- */
662
+ onChildStoreDispose(child: any): void;
672
663
  syncProps(props: any, prevProps: any, list?: string[]): void;
673
664
  dispose: (callback?: (() => void) | undefined) => void;
674
665
  addChildId: (id: string) => void;
@@ -686,9 +677,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
686
677
  readonly hasChildren: boolean;
687
678
  readonly children: any[];
688
679
  } & {
689
- onChildStoreDispose(child: any): void; /**
690
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
691
- */
680
+ onChildStoreDispose(child: any): void;
692
681
  syncProps(props: any, prevProps: any, list?: string[]): void;
693
682
  dispose: (callback?: (() => void) | undefined) => void;
694
683
  addChildId: (id: string) => void;
@@ -707,9 +696,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
707
696
  readonly hasChildren: boolean;
708
697
  readonly children: any[];
709
698
  } & {
710
- onChildStoreDispose(child: any): void; /**
711
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
712
- */
699
+ onChildStoreDispose(child: any): void;
713
700
  syncProps(props: any, prevProps: any, list?: string[]): void;
714
701
  dispose: (callback?: (() => void) | undefined) => void;
715
702
  addChildId: (id: string) => void;
@@ -727,9 +714,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
727
714
  readonly hasChildren: boolean;
728
715
  readonly children: any[];
729
716
  } & {
730
- onChildStoreDispose(child: any): void; /**
731
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
732
- */
717
+ onChildStoreDispose(child: any): void;
733
718
  syncProps(props: any, prevProps: any, list?: string[]): void;
734
719
  dispose: (callback?: (() => void) | undefined) => void;
735
720
  addChildId: (id: string) => void;
@@ -738,11 +723,11 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
738
723
  } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
739
724
  storeType: import("mobx-state-tree").IType<string | undefined, string, string>;
740
725
  }, {
741
- readonly fetcher: any; /**
742
- * 显示一个小图标, 鼠标放上去的时候显示提示内容, 这个小图标跟 label 在一起
743
- */
726
+ readonly fetcher: any;
744
727
  readonly notify: any;
745
- readonly isCancel: (value: any) => boolean;
728
+ readonly isCancel: (value: any) => boolean; /**
729
+ * 当修改完的时候是否提交表单。
730
+ */
746
731
  readonly __: import("..").TranslateFn<any>;
747
732
  getStoreById(id: string): {
748
733
  id: string;
@@ -757,9 +742,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
757
742
  readonly hasChildren: boolean;
758
743
  readonly children: any[];
759
744
  } & {
760
- onChildStoreDispose(child: any): void; /**
761
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
762
- */
745
+ onChildStoreDispose(child: any): void;
763
746
  syncProps(props: any, prevProps: any, list?: string[]): void;
764
747
  dispose: (callback?: (() => void) | undefined) => void;
765
748
  addChildId: (id: string) => void;
@@ -777,9 +760,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
777
760
  readonly hasChildren: boolean;
778
761
  readonly children: any[];
779
762
  } & {
780
- onChildStoreDispose(child: any): void; /**
781
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
782
- */
763
+ onChildStoreDispose(child: any): void;
783
764
  syncProps(props: any, prevProps: any, list?: string[]): void;
784
765
  dispose: (callback?: (() => void) | undefined) => void;
785
766
  addChildId: (id: string) => void;
@@ -799,9 +780,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
799
780
  readonly hasChildren: boolean;
800
781
  readonly children: any[];
801
782
  } & {
802
- onChildStoreDispose(child: any): void; /**
803
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
804
- */
783
+ onChildStoreDispose(child: any): void;
805
784
  syncProps(props: any, prevProps: any, list?: string[]): void;
806
785
  dispose: (callback?: (() => void) | undefined) => void;
807
786
  addChildId: (id: string) => void;
@@ -819,9 +798,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
819
798
  readonly hasChildren: boolean;
820
799
  readonly children: any[];
821
800
  } & {
822
- onChildStoreDispose(child: any): void; /**
823
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
824
- */
801
+ onChildStoreDispose(child: any): void;
825
802
  syncProps(props: any, prevProps: any, list?: string[]): void;
826
803
  dispose: (callback?: (() => void) | undefined) => void;
827
804
  addChildId: (id: string) => void;
@@ -848,9 +825,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
848
825
  readonly hasChildren: boolean;
849
826
  readonly children: any[];
850
827
  } & {
851
- onChildStoreDispose(child: any): void; /**
852
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
853
- */
828
+ onChildStoreDispose(child: any): void;
854
829
  syncProps(props: any, prevProps: any, list?: string[]): void;
855
830
  dispose: (callback?: (() => void) | undefined) => void;
856
831
  addChildId: (id: string) => void;
@@ -868,9 +843,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
868
843
  readonly hasChildren: boolean;
869
844
  readonly children: any[];
870
845
  } & {
871
- onChildStoreDispose(child: any): void; /**
872
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
873
- */
846
+ onChildStoreDispose(child: any): void;
874
847
  syncProps(props: any, prevProps: any, list?: string[]): void;
875
848
  dispose: (callback?: (() => void) | undefined) => void;
876
849
  addChildId: (id: string) => void;
@@ -889,9 +862,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
889
862
  readonly hasChildren: boolean;
890
863
  readonly children: any[];
891
864
  } & {
892
- onChildStoreDispose(child: any): void; /**
893
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
894
- */
865
+ onChildStoreDispose(child: any): void;
895
866
  syncProps(props: any, prevProps: any, list?: string[]): void;
896
867
  dispose: (callback?: (() => void) | undefined) => void;
897
868
  addChildId: (id: string) => void;
@@ -909,9 +880,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
909
880
  readonly hasChildren: boolean;
910
881
  readonly children: any[];
911
882
  } & {
912
- onChildStoreDispose(child: any): void; /**
913
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
914
- */
883
+ onChildStoreDispose(child: any): void;
915
884
  syncProps(props: any, prevProps: any, list?: string[]): void;
916
885
  dispose: (callback?: (() => void) | undefined) => void;
917
886
  addChildId: (id: string) => void;
@@ -920,9 +889,7 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
920
889
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>>;
921
890
  ComposedComponent: React.ComponentType<any>;
922
891
  } & hoistNonReactStatic.NonReactStatics<any, {}> & {
923
- ComposedComponent: any; /**
924
- * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c
925
- */
892
+ ComposedComponent: any;
926
893
  } & {
927
894
  ComposedComponent: any;
928
895
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.4.1
2
+ * amis-core v6.6.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -39,6 +39,7 @@ require('../utils/filter.js');
39
39
  require('lodash/isObject');
40
40
  require('lodash/isString');
41
41
  require('lodash/isBoolean');
42
+ require('@rc-component/mini-decimal');
42
43
  require('../utils/highlight.js');
43
44
  require('../utils/icon.js');
44
45
  require('../utils/image.js');
@@ -724,8 +725,8 @@ var FormItemWrap = /** @class */ (function (_super) {
724
725
  row: function (props, renderControl) {
725
726
  var _a;
726
727
  var className = props.className, style = props.style, cx = props.classnames, desc = props.desc, description = props.description, label = props.label, render = props.render, required = props.required, caption = props.caption, remark = props.remark, labelRemark = props.labelRemark, env = props.env, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, model = props.formItem, renderLabel = props.renderLabel, renderDescription = props.renderDescription, hint = props.hint; props.data; var showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName, wrapperCustomStyle = props.wrapperCustomStyle, themeCss = props.themeCss, id = props.id;
727
- var labelWidth = props.labelWidth || props.formLabelWidth;
728
728
  description = description || desc;
729
+ var labelWidth = props.labelWidth || props.formLabelWidth;
729
730
  return (_J$X_("div", { "data-role": "form-item", className: cx("Form-item Form-item--row", isStatic && staticClassName ? staticClassName : className, (_a = {
730
731
  'is-error': model && !model.valid
731
732
  },
@@ -775,6 +776,66 @@ var FormItemWrap = /** @class */ (function (_super) {
775
776
  className: cx("Form-description", descriptionClassName, styleHelper.setThemeClassName(tslib.__assign(tslib.__assign({}, props), { name: 'descriptionClassName', id: id, themeCss: themeCss, extra: 'item' })))
776
777
  })
777
778
  : null));
779
+ },
780
+ flex: function (props, renderControl) {
781
+ var _a;
782
+ var className = props.className, style = props.style, cx = props.classnames, desc = props.desc, description = props.description, label = props.label, render = props.render, required = props.required, caption = props.caption, remark = props.remark, labelRemark = props.labelRemark, env = props.env, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, model = props.formItem, renderLabel = props.renderLabel, renderDescription = props.renderDescription, hint = props.hint; props.data; var showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName, wrapperCustomStyle = props.wrapperCustomStyle, themeCss = props.themeCss, id = props.id;
783
+ var labelAlign = (props.labelAlign !== 'inherit' && props.labelAlign) ||
784
+ props.formLabelAlign;
785
+ var labelWidth = props.labelWidth || props.formLabelWidth;
786
+ description = description || desc;
787
+ return (_J$X_("div", { "data-role": "form-item", className: cx("Form-item Form-item--flex", isStatic && staticClassName ? staticClassName : className, (_a = {
788
+ 'is-error': model && !model.valid
789
+ },
790
+ _a["is-required"] = required,
791
+ _a), model === null || model === void 0 ? void 0 : model.errClassNames, styleHelper.setThemeClassName(tslib.__assign(tslib.__assign({}, props), { name: 'wrapperCustomStyle', id: id, themeCss: wrapperCustomStyle, extra: 'item' }))), style: style },
792
+ _J$X_("div", { className: cx('Form-flexInner', labelAlign && "Form-flexInner--label-".concat(labelAlign)) },
793
+ label && renderLabel !== false ? (_J$X_("label", { className: cx("Form-label", getItemLabelClassName(props)), style: labelWidth != null
794
+ ? { width: labelAlign === 'top' ? '100%' : labelWidth }
795
+ : undefined },
796
+ _J$X_("span", null,
797
+ render('label', label),
798
+ required && (label || labelRemark) ? (_J$X_("span", { className: cx("Form-star") }, "*")) : null,
799
+ labelRemark
800
+ ? render('label-remark', {
801
+ type: 'remark',
802
+ icon: labelRemark.icon || 'warning-mark',
803
+ tooltip: labelRemark,
804
+ className: cx("Form-lableRemark"),
805
+ mobileUI: mobileUI,
806
+ container: props.popOverContainer || env.getModalContainer
807
+ })
808
+ : null))) : null,
809
+ _J$X_("div", { className: cx("Form-value") },
810
+ renderControl(),
811
+ caption
812
+ ? render('caption', caption, {
813
+ className: cx("Form-caption", captionClassName)
814
+ })
815
+ : null,
816
+ remark
817
+ ? render('remark', {
818
+ type: 'remark',
819
+ icon: remark.icon || 'warning-mark',
820
+ className: cx("Form-remark"),
821
+ tooltip: remark,
822
+ container: props.popOverContainer || env.getModalContainer
823
+ })
824
+ : null,
825
+ hint && model && model.isFocused
826
+ ? render('hint', hint, {
827
+ className: cx("Form-hint")
828
+ })
829
+ : null,
830
+ model &&
831
+ !model.valid &&
832
+ showErrorMsg !== false &&
833
+ Array.isArray(model.errors) ? (_J$X_("ul", { className: cx('Form-feedback') }, model.errors.map(function (msg, key) { return (_J$X_("li", { key: key }, msg)); }))) : null,
834
+ description && renderDescription !== false
835
+ ? render('description', description, {
836
+ className: cx("Form-description", descriptionClassName, styleHelper.setThemeClassName(tslib.__assign(tslib.__assign({}, props), { name: 'descriptionClassName', id: id, themeCss: themeCss, extra: 'item' })))
837
+ })
838
+ : null))));
778
839
  }
779
840
  };
780
841
  tslib.__decorate([
@@ -897,12 +958,18 @@ var detectProps = [
897
958
  'displayMode',
898
959
  'revealPassword',
899
960
  'loading',
900
- 'themeCss'
961
+ 'themeCss',
962
+ 'formLabelAlign',
963
+ 'formLabelWidth',
964
+ 'formHorizontal',
965
+ 'labelAlign',
966
+ 'colSize'
901
967
  ];
902
968
  function asFormItem(config) {
903
969
  return function (Control) {
904
970
  var _a;
905
- var isSFC = !(Control.prototype instanceof React__default["default"].Component);
971
+ var supportRef = Control.prototype instanceof React__default["default"].Component ||
972
+ Control.$$typeof === Symbol.for('react.forward_ref');
906
973
  // 兼容老的 FormItem 用法。
907
974
  if (config.validate && !Control.prototype.validate) {
908
975
  var fn_1 = config.validate;
@@ -961,11 +1028,13 @@ function asFormItem(config) {
961
1028
  var _b = this.props;
962
1029
  // 这里解构,不可轻易删除,避免被rest传到子组件
963
1030
  _b.inputClassName; var model = _b.formItem, cx = _b.classnames; _b.children; var type = _b.type, size = _b.size, defaultSize = _b.defaultSize, mobileUI = _b.mobileUI, rest = tslib.__rest(_b, ["inputClassName", "formItem", "classnames", "children", "type", "size", "defaultSize", "mobileUI"]);
964
- var controlSize = size || defaultSize;
1031
+ var controlSize = size && ['xs', 'sm', 'md', 'lg', 'full'].includes(size)
1032
+ ? size
1033
+ : defaultSize;
965
1034
  //@ts-ignore
966
1035
  var isOpened = this.state.isOpened;
967
1036
  return (_J$X_(React__default["default"].Fragment, null,
968
- _J$X_(Control, tslib.__assign({}, rest, { mobileUI: mobileUI, onOpenDialog: this.handleOpenDialog, size: config.sizeMutable !== false ? undefined : size, onFocus: this.handleFocus, onBlur: this.handleBlur, type: type, classnames: cx, ref: isSFC ? undefined : this.refFn, forwardedRef: isSFC ? this.refFn : undefined, formItem: model, className: cx("Form-control", (_a = {
1037
+ _J$X_(Control, tslib.__assign({}, rest, { mobileUI: mobileUI, onOpenDialog: this.handleOpenDialog, size: config.sizeMutable !== false ? undefined : size, onFocus: this.handleFocus, onBlur: this.handleBlur, type: type, classnames: cx, ref: supportRef ? this.refFn : undefined, forwardedRef: supportRef ? undefined : this.refFn, formItem: model, className: cx("Form-control", (_a = {
969
1038
  'is-inline': !!rest.inline && !mobileUI,
970
1039
  'is-error': model && !model.valid,
971
1040
  'is-full': size === 'full'
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.4.1
2
+ * amis-core v6.6.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -18,6 +18,7 @@ require('amis-formula');
18
18
  require('moment');
19
19
  var object = require('../utils/object.js');
20
20
  var isPureVariable = require('../utils/isPureVariable.js');
21
+ require('@rc-component/mini-decimal');
21
22
  var resolveVariableAndFilter = require('../utils/resolveVariableAndFilter.js');
22
23
  require('lodash/isPlainObject');
23
24
  require('../utils/filter.js');
@@ -106,21 +107,47 @@ function registerOptionsControl(config) {
106
107
  _this.defaultCheckAll();
107
108
  }
108
109
  var loadOptions = initFetch !== false;
110
+ var setInitValue = null;
109
111
  if (joinValues === false && defaultValue) {
110
- var selectedOptions = extractValue
111
- ? formItem
112
- .getSelectedOptions(value)
113
- .map(function (selectedOption) {
114
- return selectedOption[valueField || 'value'];
115
- })
116
- : formItem.getSelectedOptions(value);
117
- setPrinstineValue(multiple ? selectedOptions.concat() : selectedOptions[0]);
112
+ setInitValue = function () {
113
+ var selectedOptions = extractValue
114
+ ? formItem
115
+ .getSelectedOptions(value)
116
+ .map(function (selectedOption) {
117
+ return selectedOption[valueField || 'value'];
118
+ })
119
+ : formItem.getSelectedOptions(value);
120
+ setPrinstineValue(multiple ? selectedOptions.concat() : selectedOptions[0]);
121
+ };
118
122
  }
119
- loadOptions &&
120
- config.autoLoadOptionsFromSource !== false &&
123
+ if (loadOptions && config.autoLoadOptionsFromSource !== false) {
121
124
  _this.toDispose.push(formInited || !addHook
122
- ? formItem.addInitHook(_this.reload)
123
- : addHook(_this.initOptions, 'init'));
125
+ ? formItem.addInitHook(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
126
+ return tslib.__generator(this, function (_a) {
127
+ switch (_a.label) {
128
+ case 0: return [4 /*yield*/, this.reload()];
129
+ case 1:
130
+ _a.sent();
131
+ setInitValue === null || setInitValue === void 0 ? void 0 : setInitValue();
132
+ return [2 /*return*/];
133
+ }
134
+ });
135
+ }); })
136
+ : addHook(function (data) { return tslib.__awaiter(_this, void 0, void 0, function () {
137
+ return tslib.__generator(this, function (_a) {
138
+ switch (_a.label) {
139
+ case 0: return [4 /*yield*/, this.initOptions(data)];
140
+ case 1:
141
+ _a.sent();
142
+ setInitValue === null || setInitValue === void 0 ? void 0 : setInitValue();
143
+ return [2 /*return*/];
144
+ }
145
+ });
146
+ }); }, 'init'));
147
+ }
148
+ else {
149
+ setInitValue === null || setInitValue === void 0 ? void 0 : setInitValue();
150
+ }
124
151
  return _this;
125
152
  }
126
153
  FormOptionsItem.prototype.componentDidMount = function () {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.4.1
2
+ * amis-core v6.6.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.4.1
2
+ * amis-core v6.6.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.4.1
2
+ * amis-core v6.6.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.4.1
2
+ * amis-core v6.6.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -46,6 +46,7 @@ require('../utils/resize-sensor.js');
46
46
  require('react-overlays/useRootClose');
47
47
  require('react-dom');
48
48
  require('../utils/SimpleMap.js');
49
+ require('@rc-component/mini-decimal');
49
50
  require('lodash/mapValues');
50
51
  require('lodash/camelCase');
51
52
  require('lodash/cloneDeep');
@@ -350,6 +351,11 @@ function wrapControl(ComposedComponent) {
350
351
  while (control && control.getWrappedInstance) {
351
352
  control = control.getWrappedInstance();
352
353
  }
354
+ if (control && !control.props) {
355
+ Object.defineProperty(control, 'props', {
356
+ get: function () { return _this.props; }
357
+ });
358
+ }
353
359
  if (control && control.validate && this.model) {
354
360
  var formItem_1 = this.model;
355
361
  var validate_1 = helper.promisify(control.validate.bind(control));
@@ -473,14 +479,18 @@ function wrapControl(ComposedComponent) {
473
479
  }
474
480
  var model = this.model;
475
481
  var value = this.model.tmpValue;
476
- var oldValue = model.extraName
477
- ? [
478
- getVariable.getVariable(data, model.name, false),
479
- getVariable.getVariable(data, model.extraName, false)
480
- ]
481
- : getVariable.getVariable(data, model.name, false);
482
- if (model.extraName ? isEqual__default["default"](oldValue, value) : oldValue === value) {
483
- return;
482
+ var oldValue = undefined;
483
+ // 受控的因为没有记录上一次 props 下发的 value,所以不做比较
484
+ if (!model.isControlled) {
485
+ oldValue = model.extraName
486
+ ? [
487
+ getVariable.getVariable(data, model.name, false),
488
+ getVariable.getVariable(data, model.extraName, false)
489
+ ]
490
+ : getVariable.getVariable(data, model.name, false);
491
+ if (model.extraName ? isEqual__default["default"](oldValue, value) : oldValue === value) {
492
+ return;
493
+ }
484
494
  }
485
495
  if (type !== 'input-password') {
486
496
  env === null || env === void 0 ? void 0 : env.tracker({
@@ -14,6 +14,7 @@ export declare const AppStore: import("mobx-state-tree").IModelType<{
14
14
  initedAt: import("mobx-state-tree").IType<number | undefined, number, number>;
15
15
  updatedAt: import("mobx-state-tree").IType<number | undefined, number, number>;
16
16
  pristine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
17
+ upStreamData: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
17
18
  action: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
18
19
  dialogOpen: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
19
20
  dialogData: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
@@ -48,6 +49,7 @@ export declare const AppStore: import("mobx-state-tree").IModelType<{
48
49
  } & {
49
50
  getValueByName(name: string, canAccessSuper?: boolean): any;
50
51
  getPristineValueByName(name: string): any;
52
+ readonly pristineDiff: any;
51
53
  } & {
52
54
  setTopStore(value: any): void;
53
55
  initData(data?: object, skipSetPristine?: boolean): void;
package/lib/store/app.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.4.1
2
+ * amis-core v6.6.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -29,6 +29,7 @@ require('../utils/filter.js');
29
29
  require('lodash/isObject');
30
30
  require('lodash/isString');
31
31
  require('lodash/isBoolean');
32
+ require('@rc-component/mini-decimal');
32
33
  require('../utils/highlight.js');
33
34
  require('../utils/icon.js');
34
35
  require('../utils/image.js');