@1money/component-ui 0.0.19 → 0.0.21

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 (235) hide show
  1. package/.claude/settings.local.json +2 -1
  2. package/AGENTS.md +7 -1
  3. package/es/components/Alert/Alert.js +5 -6
  4. package/es/components/Alert/style/Alert.css +1 -1
  5. package/es/components/Button/Button.js +29 -1
  6. package/es/components/Button/constants.d.ts +14 -1
  7. package/es/components/Button/constants.js +23 -3
  8. package/es/components/Button/interface.d.ts +9 -0
  9. package/es/components/Cell/Cell.d.ts +5 -0
  10. package/es/components/Cell/Cell.js +57 -0
  11. package/es/components/Cell/index.d.ts +4 -0
  12. package/es/components/Cell/index.js +5 -0
  13. package/es/components/Cell/interface.d.ts +12 -0
  14. package/es/components/{Form → Cell}/interface.js +1 -1
  15. package/es/components/Cell/style/Cell.css +1 -0
  16. package/es/components/Cell/style/css.js +2 -0
  17. package/es/components/Cell/style/index.d.ts +1 -0
  18. package/es/components/Cell/style/index.js +2 -0
  19. package/es/components/Dialog/Dialog.d.ts +4 -0
  20. package/es/components/Dialog/Dialog.js +383 -0
  21. package/es/components/Dialog/constants.d.ts +60 -0
  22. package/es/components/Dialog/constants.js +57 -0
  23. package/es/components/Dialog/index.d.ts +4 -0
  24. package/es/components/Dialog/index.js +5 -0
  25. package/es/components/{Modal → Dialog}/interface.d.ts +7 -7
  26. package/es/components/Dialog/interface.js +2 -0
  27. package/es/components/Dialog/style/Dialog.css +1 -0
  28. package/es/components/Dialog/style/css.js +2 -0
  29. package/es/components/Dialog/style/index.d.ts +1 -0
  30. package/es/components/Dialog/style/index.js +2 -0
  31. package/es/components/Divider/Divider.js +15 -18
  32. package/es/components/Divider/constants.d.ts +36 -0
  33. package/es/components/Divider/constants.js +41 -0
  34. package/es/components/Divider/interface.d.ts +2 -3
  35. package/es/components/Drawer/Drawer.js +13 -129
  36. package/es/components/Drawer/constants.d.ts +8 -5
  37. package/es/components/Drawer/constants.js +9 -6
  38. package/es/components/Drawer/hooks/index.d.ts +4 -0
  39. package/es/components/Drawer/hooks/index.js +5 -0
  40. package/es/components/Drawer/hooks/useBodyScrollLock.d.ts +1 -0
  41. package/es/components/Drawer/hooks/useBodyScrollLock.js +29 -0
  42. package/es/components/Drawer/hooks/useDialogFocus.d.ts +2 -0
  43. package/es/components/Drawer/hooks/useDialogFocus.js +22 -0
  44. package/es/components/Drawer/hooks/useDrawerTransition.d.ts +4 -0
  45. package/es/components/Drawer/hooks/useDrawerTransition.js +57 -0
  46. package/es/components/Drawer/hooks/useEscapeClose.d.ts +1 -0
  47. package/es/components/Drawer/hooks/useEscapeClose.js +16 -0
  48. package/es/components/ProForm/ProForm.js +93 -116
  49. package/es/components/ProForm/ProFormDependency.js +2 -4
  50. package/es/components/ProForm/ProFormItem.d.ts +4 -0
  51. package/es/components/ProForm/ProFormItem.js +213 -0
  52. package/es/components/ProForm/ProFormList.js +5 -6
  53. package/es/components/ProForm/Submitter.js +2 -2
  54. package/es/components/ProForm/context.d.ts +10 -2
  55. package/es/components/ProForm/context.js +17 -14
  56. package/es/components/{Form → ProForm/core}/constants.d.ts +1 -1
  57. package/es/components/ProForm/core/constants.js +18 -0
  58. package/es/components/ProForm/core/hooks/useForm.js +541 -0
  59. package/es/components/ProForm/core/hooks/useFormCore.js +347 -0
  60. package/es/components/ProForm/core/index.d.ts +6 -0
  61. package/es/components/ProForm/core/index.js +6 -0
  62. package/es/components/{Form → ProForm/core}/interface.d.ts +21 -60
  63. package/es/components/ProForm/core/interface.js +2 -0
  64. package/es/components/ProForm/core/useFormItem.d.ts +20 -0
  65. package/es/components/ProForm/core/useFormItem.js +121 -0
  66. package/es/components/ProForm/fields/ProFormFieldSet.js +7 -6
  67. package/es/components/ProForm/fields/createProFormField.js +76 -151
  68. package/es/components/ProForm/index.d.ts +13 -6
  69. package/es/components/ProForm/index.js +21 -9
  70. package/es/components/ProForm/interface.d.ts +79 -44
  71. package/es/components/ProForm/layouts/DialogForm.d.ts +3 -0
  72. package/es/components/ProForm/layouts/DialogForm.js +74 -0
  73. package/es/components/ProForm/layouts/index.d.ts +1 -1
  74. package/es/components/ProForm/layouts/index.js +2 -2
  75. package/es/components/ProForm/style/ProForm.css +1 -1
  76. package/es/components/Select/Select.js +5 -5
  77. package/es/components/Select/SelectFieldShell.js +7 -7
  78. package/es/components/Select/SelectOptionContent.js +5 -5
  79. package/es/components/Select/constants.d.ts +37 -13
  80. package/es/components/Select/constants.js +36 -20
  81. package/es/components/Select/style/Select.css +1 -1
  82. package/es/components/Switch/Switch.js +7 -7
  83. package/es/components/Switch/constants.d.ts +23 -9
  84. package/es/components/Switch/constants.js +26 -11
  85. package/es/components/Switch/interface.d.ts +2 -2
  86. package/es/index.css +1 -1
  87. package/es/index.d.ts +7 -6
  88. package/es/index.js +4 -4
  89. package/lib/components/Alert/Alert.js +5 -6
  90. package/lib/components/Alert/style/Alert.css +1 -1
  91. package/lib/components/Button/Button.js +29 -1
  92. package/lib/components/Button/constants.d.ts +14 -1
  93. package/lib/components/Button/constants.js +23 -3
  94. package/lib/components/Button/interface.d.ts +9 -0
  95. package/lib/components/Cell/Cell.d.ts +5 -0
  96. package/lib/components/Cell/Cell.js +66 -0
  97. package/lib/components/Cell/index.d.ts +4 -0
  98. package/lib/components/Cell/index.js +33 -0
  99. package/lib/components/Cell/interface.d.ts +12 -0
  100. package/lib/components/{Form → Cell}/interface.js +1 -1
  101. package/lib/components/Cell/style/Cell.css +1 -0
  102. package/lib/components/Cell/style/css.js +4 -0
  103. package/lib/components/Cell/style/index.d.ts +1 -0
  104. package/lib/components/Cell/style/index.js +4 -0
  105. package/lib/components/Dialog/Dialog.d.ts +4 -0
  106. package/lib/components/Dialog/Dialog.js +390 -0
  107. package/lib/components/Dialog/constants.d.ts +60 -0
  108. package/lib/components/Dialog/constants.js +64 -0
  109. package/lib/components/Dialog/index.d.ts +4 -0
  110. package/lib/components/Dialog/index.js +33 -0
  111. package/lib/components/{Modal → Dialog}/interface.d.ts +7 -7
  112. package/lib/components/Dialog/interface.js +6 -0
  113. package/lib/components/Dialog/style/Dialog.css +1 -0
  114. package/lib/components/Dialog/style/css.js +4 -0
  115. package/lib/components/Dialog/style/index.d.ts +1 -0
  116. package/lib/components/Dialog/style/index.js +4 -0
  117. package/lib/components/Divider/Divider.js +16 -18
  118. package/lib/components/Divider/constants.d.ts +36 -0
  119. package/lib/components/Divider/constants.js +48 -0
  120. package/lib/components/Divider/interface.d.ts +2 -3
  121. package/lib/components/Drawer/Drawer.js +14 -130
  122. package/lib/components/Drawer/constants.d.ts +8 -5
  123. package/lib/components/Drawer/constants.js +10 -7
  124. package/lib/components/Drawer/hooks/index.d.ts +4 -0
  125. package/lib/components/Drawer/hooks/index.js +34 -0
  126. package/lib/components/Drawer/hooks/useBodyScrollLock.d.ts +1 -0
  127. package/lib/components/Drawer/hooks/useBodyScrollLock.js +35 -0
  128. package/lib/components/Drawer/hooks/useDialogFocus.d.ts +2 -0
  129. package/lib/components/Drawer/hooks/useDialogFocus.js +28 -0
  130. package/lib/components/Drawer/hooks/useDrawerTransition.d.ts +4 -0
  131. package/lib/components/Drawer/hooks/useDrawerTransition.js +64 -0
  132. package/lib/components/Drawer/hooks/useEscapeClose.d.ts +1 -0
  133. package/lib/components/Drawer/hooks/useEscapeClose.js +22 -0
  134. package/lib/components/ProForm/ProForm.js +94 -117
  135. package/lib/components/ProForm/ProFormDependency.js +2 -4
  136. package/lib/components/ProForm/ProFormItem.d.ts +4 -0
  137. package/lib/components/ProForm/ProFormItem.js +222 -0
  138. package/lib/components/ProForm/ProFormList.js +4 -5
  139. package/lib/components/ProForm/Submitter.js +2 -2
  140. package/lib/components/ProForm/context.d.ts +10 -2
  141. package/lib/components/ProForm/context.js +18 -15
  142. package/lib/components/{Form → ProForm/core}/constants.d.ts +1 -1
  143. package/lib/components/ProForm/core/constants.js +24 -0
  144. package/lib/components/ProForm/core/hooks/useForm.js +551 -0
  145. package/lib/components/ProForm/core/hooks/useFormCore.js +354 -0
  146. package/lib/components/ProForm/core/index.d.ts +6 -0
  147. package/lib/components/ProForm/core/index.js +56 -0
  148. package/lib/components/{Form → ProForm/core}/interface.d.ts +21 -60
  149. package/lib/components/ProForm/core/interface.js +6 -0
  150. package/lib/components/ProForm/core/useFormItem.d.ts +20 -0
  151. package/lib/components/ProForm/core/useFormItem.js +131 -0
  152. package/lib/components/ProForm/fields/ProFormFieldSet.js +7 -6
  153. package/lib/components/ProForm/fields/createProFormField.js +76 -151
  154. package/lib/components/ProForm/index.d.ts +13 -6
  155. package/lib/components/ProForm/index.js +46 -33
  156. package/lib/components/ProForm/interface.d.ts +79 -44
  157. package/lib/components/ProForm/layouts/DialogForm.d.ts +3 -0
  158. package/lib/components/ProForm/layouts/DialogForm.js +81 -0
  159. package/lib/components/ProForm/layouts/index.d.ts +1 -1
  160. package/lib/components/ProForm/layouts/index.js +6 -6
  161. package/lib/components/ProForm/style/ProForm.css +1 -1
  162. package/lib/components/Select/Select.js +4 -4
  163. package/lib/components/Select/SelectFieldShell.js +6 -6
  164. package/lib/components/Select/SelectOptionContent.js +4 -4
  165. package/lib/components/Select/constants.d.ts +37 -13
  166. package/lib/components/Select/constants.js +37 -21
  167. package/lib/components/Select/style/Select.css +1 -1
  168. package/lib/components/Switch/Switch.js +6 -6
  169. package/lib/components/Switch/constants.d.ts +23 -9
  170. package/lib/components/Switch/constants.js +27 -12
  171. package/lib/components/Switch/interface.d.ts +2 -2
  172. package/lib/index.css +1 -1
  173. package/lib/index.d.ts +7 -6
  174. package/lib/index.js +69 -63
  175. package/package.json +11 -6
  176. package/es/components/Form/Form.d.ts +0 -4
  177. package/es/components/Form/Form.js +0 -73
  178. package/es/components/Form/FormItem.d.ts +0 -4
  179. package/es/components/Form/FormItem.js +0 -183
  180. package/es/components/Form/constants.js +0 -19
  181. package/es/components/Form/context.d.ts +0 -5
  182. package/es/components/Form/context.js +0 -19
  183. package/es/components/Form/hooks/useForm.js +0 -541
  184. package/es/components/Form/hooks/useFormCore.js +0 -348
  185. package/es/components/Form/index.d.ts +0 -10
  186. package/es/components/Form/index.js +0 -17
  187. package/es/components/Form/style/Form.css +0 -1
  188. package/es/components/Form/style/css.js +0 -2
  189. package/es/components/Form/style/index.d.ts +0 -1
  190. package/es/components/Form/style/index.js +0 -2
  191. package/es/components/Modal/Modal.d.ts +0 -4
  192. package/es/components/Modal/Modal.js +0 -383
  193. package/es/components/Modal/constants.d.ts +0 -58
  194. package/es/components/Modal/constants.js +0 -55
  195. package/es/components/Modal/index.d.ts +0 -4
  196. package/es/components/Modal/index.js +0 -5
  197. package/es/components/Modal/interface.js +0 -2
  198. package/es/components/Modal/style/Modal.css +0 -1
  199. package/es/components/Modal/style/css.js +0 -2
  200. package/es/components/Modal/style/index.d.ts +0 -1
  201. package/es/components/Modal/style/index.js +0 -2
  202. package/es/components/ProForm/layouts/ModalForm.d.ts +0 -3
  203. package/es/components/ProForm/layouts/ModalForm.js +0 -74
  204. package/lib/components/Form/Form.d.ts +0 -4
  205. package/lib/components/Form/Form.js +0 -80
  206. package/lib/components/Form/FormItem.d.ts +0 -4
  207. package/lib/components/Form/FormItem.js +0 -193
  208. package/lib/components/Form/constants.js +0 -25
  209. package/lib/components/Form/context.d.ts +0 -5
  210. package/lib/components/Form/context.js +0 -25
  211. package/lib/components/Form/hooks/useForm.js +0 -551
  212. package/lib/components/Form/hooks/useFormCore.js +0 -355
  213. package/lib/components/Form/index.d.ts +0 -10
  214. package/lib/components/Form/index.js +0 -83
  215. package/lib/components/Form/style/Form.css +0 -1
  216. package/lib/components/Form/style/css.js +0 -4
  217. package/lib/components/Form/style/index.d.ts +0 -1
  218. package/lib/components/Form/style/index.js +0 -4
  219. package/lib/components/Modal/Modal.d.ts +0 -4
  220. package/lib/components/Modal/Modal.js +0 -390
  221. package/lib/components/Modal/constants.d.ts +0 -58
  222. package/lib/components/Modal/constants.js +0 -62
  223. package/lib/components/Modal/index.d.ts +0 -4
  224. package/lib/components/Modal/index.js +0 -33
  225. package/lib/components/Modal/interface.js +0 -6
  226. package/lib/components/Modal/style/Modal.css +0 -1
  227. package/lib/components/Modal/style/css.js +0 -4
  228. package/lib/components/Modal/style/index.d.ts +0 -1
  229. package/lib/components/Modal/style/index.js +0 -4
  230. package/lib/components/ProForm/layouts/ModalForm.d.ts +0 -3
  231. package/lib/components/ProForm/layouts/ModalForm.js +0 -81
  232. /package/es/components/{Form → ProForm/core}/hooks/useForm.d.ts +0 -0
  233. /package/es/components/{Form → ProForm/core}/hooks/useFormCore.d.ts +0 -0
  234. /package/lib/components/{Form → ProForm/core}/hooks/useForm.d.ts +0 -0
  235. /package/lib/components/{Form → ProForm/core}/hooks/useFormCore.d.ts +0 -0
@@ -0,0 +1,347 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
+ import _typeof from "@babel/runtime/helpers/esm/typeof";
5
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
6
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
7
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
8
+ import { useState, useMemo } from 'react';
9
+ import { useEventCallback, useMemoizedFn } from '@1money/hooks';
10
+ // ---------------------------------------------------------------------------
11
+ // Nested path helpers (dot-notation support, e.g. "items.0.title")
12
+ // ---------------------------------------------------------------------------
13
+ function getNestedValue(obj, path) {
14
+ var keys = path.split('.');
15
+ var current = obj;
16
+ var _iterator = _createForOfIteratorHelper(keys),
17
+ _step;
18
+ try {
19
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
20
+ var key = _step.value;
21
+ if (current === null || current === undefined || _typeof(current) !== 'object') return undefined;
22
+ current = current[key];
23
+ }
24
+ } catch (err) {
25
+ _iterator.e(err);
26
+ } finally {
27
+ _iterator.f();
28
+ }
29
+ return current;
30
+ }
31
+ function setNestedValue(obj, path, value) {
32
+ var keys = path.split('.');
33
+ if (keys.length === 1) return Object.assign(Object.assign({}, obj), _defineProperty({}, path, value));
34
+ var result = Object.assign({}, obj);
35
+ var current = result;
36
+ for (var i = 0; i < keys.length - 1; i++) {
37
+ var key = keys[i];
38
+ var nextKey = keys[i + 1];
39
+ var isNextArray = /^\d+$/.test(nextKey);
40
+ if (current[key] === undefined || current[key] === null) {
41
+ current[key] = isNextArray ? [] : {};
42
+ }
43
+ if (Array.isArray(current[key])) {
44
+ current[key] = _toConsumableArray(current[key]);
45
+ } else {
46
+ current[key] = Object.assign({}, current[key]);
47
+ }
48
+ current = current[key];
49
+ }
50
+ current[keys[keys.length - 1]] = value;
51
+ return result;
52
+ }
53
+ function resolveValue(values, name) {
54
+ return name.includes('.') ? getNestedValue(values, name) : values[name];
55
+ }
56
+ export var useFormCore = function useFormCore() {
57
+ var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
58
+ var _config$initialValues = config.initialValues,
59
+ initialValues = _config$initialValues === void 0 ? {} : _config$initialValues,
60
+ onFinish = config.onFinish,
61
+ onFinishFailed = config.onFinishFailed,
62
+ onValuesChange = config.onValuesChange,
63
+ onReset = config.onReset,
64
+ _config$size = config.size,
65
+ size = _config$size === void 0 ? 'middle' : _config$size,
66
+ _config$labelAlign = config.labelAlign,
67
+ labelAlign = _config$labelAlign === void 0 ? 'left' : _config$labelAlign,
68
+ _config$disabled = config.disabled,
69
+ disabled = _config$disabled === void 0 ? false : _config$disabled,
70
+ _config$colon = config.colon,
71
+ colon = _config$colon === void 0 ? true : _config$colon,
72
+ _config$requiredMark = config.requiredMark,
73
+ requiredMark = _config$requiredMark === void 0 ? true : _config$requiredMark,
74
+ _config$validateTrigg = config.validateTrigger,
75
+ validateTrigger = _config$validateTrigg === void 0 ? 'onChange' : _config$validateTrigg;
76
+ var _useState = useState(initialValues),
77
+ _useState2 = _slicedToArray(_useState, 2),
78
+ values = _useState2[0],
79
+ setValues = _useState2[1];
80
+ var _useState3 = useState({}),
81
+ _useState4 = _slicedToArray(_useState3, 2),
82
+ errors = _useState4[0],
83
+ setErrors = _useState4[1];
84
+ var _useState5 = useState({}),
85
+ _useState6 = _slicedToArray(_useState5, 2),
86
+ touched = _useState6[0],
87
+ setTouched = _useState6[1];
88
+ var _useState7 = useState({}),
89
+ _useState8 = _slicedToArray(_useState7, 2),
90
+ fieldRules = _useState8[0],
91
+ setFieldRules = _useState8[1];
92
+ var setFieldValue = useMemoizedFn(function (name, value) {
93
+ setValues(function (prev) {
94
+ var newValues = name.includes('.') ? setNestedValue(prev, name, value) : Object.assign(Object.assign({}, prev), _defineProperty({}, name, value));
95
+ onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange(_defineProperty({}, name, value), newValues);
96
+ return newValues;
97
+ });
98
+ if (value !== '' && value !== null && value !== undefined) {
99
+ setErrors(function (prev) {
100
+ if (!prev[name]) return prev;
101
+ var newErrors = Object.assign({}, prev);
102
+ delete newErrors[name];
103
+ return newErrors;
104
+ });
105
+ }
106
+ });
107
+ var setFieldError = useMemoizedFn(function (name, error) {
108
+ setErrors(function (prev) {
109
+ if (error === null) {
110
+ if (!prev[name]) return prev;
111
+ var newErrors = Object.assign({}, prev);
112
+ delete newErrors[name];
113
+ return newErrors;
114
+ }
115
+ return Object.assign(Object.assign({}, prev), _defineProperty({}, name, error));
116
+ });
117
+ });
118
+ var registerField = useMemoizedFn(function (name, rules) {
119
+ setFieldRules(function (prev) {
120
+ return Object.assign(Object.assign({}, prev), _defineProperty({}, name, rules));
121
+ });
122
+ });
123
+ var getFieldRules = useMemoizedFn(function (name) {
124
+ return fieldRules[name];
125
+ });
126
+ var unregisterField = useMemoizedFn(function (name) {
127
+ setFieldRules(function (prev) {
128
+ var newRules = Object.assign({}, prev);
129
+ delete newRules[name];
130
+ return newRules;
131
+ });
132
+ });
133
+ var validateField = useMemoizedFn(function (name) {
134
+ var rules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
135
+ var providedValue = arguments.length > 2 ? arguments[2] : undefined;
136
+ var value = providedValue !== undefined ? providedValue : resolveValue(values, name);
137
+ var _iterator2 = _createForOfIteratorHelper(rules),
138
+ _step2;
139
+ try {
140
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
141
+ var rule = _step2.value;
142
+ if (rule.required && (value === undefined || value === null || value === '')) {
143
+ var error = rule.message || "".concat(name, " is required");
144
+ setFieldError(name, error);
145
+ return false;
146
+ }
147
+ if (rule.min && typeof value === 'string' && value.length < rule.min) {
148
+ var _error = rule.message || "".concat(name, " must be at least ").concat(rule.min, " characters");
149
+ setFieldError(name, _error);
150
+ return false;
151
+ }
152
+ if (rule.max && typeof value === 'string' && value.length > rule.max) {
153
+ var _error2 = rule.message || "".concat(name, " must be no more than ").concat(rule.max, " characters");
154
+ setFieldError(name, _error2);
155
+ return false;
156
+ }
157
+ if (rule.pattern && typeof value === 'string' && !rule.pattern.test(value)) {
158
+ var _error3 = rule.message || "".concat(name, " format is invalid");
159
+ setFieldError(name, _error3);
160
+ return false;
161
+ }
162
+ if (rule.validator && typeof rule.validator === 'function') {
163
+ try {
164
+ var result = rule.validator(value, values);
165
+ if (result !== true && _typeof(result) !== 'object') {
166
+ setFieldError(name, typeof result === 'string' ? result : 'Validation failed');
167
+ return false;
168
+ }
169
+ } catch (err) {
170
+ var message = err instanceof Error ? err.message : 'Validation error';
171
+ setFieldError(name, message);
172
+ return false;
173
+ }
174
+ }
175
+ }
176
+ } catch (err) {
177
+ _iterator2.e(err);
178
+ } finally {
179
+ _iterator2.f();
180
+ }
181
+ if (errors[name]) {
182
+ setFieldError(name, null);
183
+ }
184
+ return true;
185
+ });
186
+ var validateFields = useMemoizedFn(function () {
187
+ var fieldsRulesToValidate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : fieldRules;
188
+ var isValid = true;
189
+ Object.keys(fieldsRulesToValidate).forEach(function (name) {
190
+ var rules = fieldsRulesToValidate[name];
191
+ if (!validateField(name, rules)) {
192
+ isValid = false;
193
+ }
194
+ });
195
+ return isValid;
196
+ });
197
+ var handleSubmitInternal = useMemoizedFn(function () {
198
+ var hasErrors = false;
199
+ var newErrors = {};
200
+ Object.keys(fieldRules).forEach(function (fieldName) {
201
+ var rules = fieldRules[fieldName];
202
+ var value = resolveValue(values, fieldName);
203
+ var _iterator3 = _createForOfIteratorHelper(rules),
204
+ _step3;
205
+ try {
206
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
207
+ var rule = _step3.value;
208
+ if (rule.required && (value === undefined || value === null || value === '')) {
209
+ newErrors[fieldName] = rule.message || "".concat(fieldName, " is required");
210
+ hasErrors = true;
211
+ break;
212
+ }
213
+ if (rule.min && typeof value === 'string' && value.length < rule.min) {
214
+ newErrors[fieldName] = rule.message || "".concat(fieldName, " must be at least ").concat(rule.min, " characters");
215
+ hasErrors = true;
216
+ break;
217
+ }
218
+ if (rule.max && typeof value === 'string' && value.length > rule.max) {
219
+ newErrors[fieldName] = rule.message || "".concat(fieldName, " must be no more than ").concat(rule.max, " characters");
220
+ hasErrors = true;
221
+ break;
222
+ }
223
+ if (rule.pattern && typeof value === 'string' && !rule.pattern.test(value)) {
224
+ newErrors[fieldName] = rule.message || "".concat(fieldName, " format is invalid");
225
+ hasErrors = true;
226
+ break;
227
+ }
228
+ if (rule.validator && typeof rule.validator === 'function') {
229
+ try {
230
+ var result = rule.validator(value, values);
231
+ if (result !== true && _typeof(result) !== 'object') {
232
+ newErrors[fieldName] = typeof result === 'string' ? result : 'Validation failed';
233
+ hasErrors = true;
234
+ break;
235
+ }
236
+ } catch (err) {
237
+ newErrors[fieldName] = err instanceof Error ? err.message : 'Validation error';
238
+ hasErrors = true;
239
+ break;
240
+ }
241
+ }
242
+ }
243
+ } catch (err) {
244
+ _iterator3.e(err);
245
+ } finally {
246
+ _iterator3.f();
247
+ }
248
+ });
249
+ setErrors(newErrors);
250
+ if (!hasErrors) {
251
+ onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
252
+ return {
253
+ success: true,
254
+ values: values
255
+ };
256
+ } else {
257
+ onFinishFailed === null || onFinishFailed === void 0 ? void 0 : onFinishFailed({
258
+ values: values,
259
+ errors: newErrors
260
+ });
261
+ return {
262
+ success: false,
263
+ errors: newErrors
264
+ };
265
+ }
266
+ });
267
+ var handleSubmit = useEventCallback(function (e) {
268
+ e === null || e === void 0 ? void 0 : e.preventDefault();
269
+ return handleSubmitInternal();
270
+ });
271
+ var resetFields = useMemoizedFn(function () {
272
+ setValues(initialValues);
273
+ setErrors({});
274
+ setTouched({});
275
+ onReset === null || onReset === void 0 ? void 0 : onReset();
276
+ });
277
+ var handleReset = useEventCallback(function (e) {
278
+ e === null || e === void 0 ? void 0 : e.preventDefault();
279
+ resetFields();
280
+ });
281
+ var getFieldValue = useMemoizedFn(function (name) {
282
+ return resolveValue(values, name);
283
+ });
284
+ var getFieldsValue = useMemoizedFn(function () {
285
+ return values;
286
+ });
287
+ var setFieldsValue = useMemoizedFn(function (newValues) {
288
+ setValues(function (prev) {
289
+ var updatedValues = Object.assign(Object.assign({}, prev), newValues);
290
+ onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange(newValues, updatedValues);
291
+ return updatedValues;
292
+ });
293
+ });
294
+ var formInstance = useMemo(function () {
295
+ return {
296
+ submit: handleSubmitInternal,
297
+ resetFields: resetFields,
298
+ getFieldValue: getFieldValue,
299
+ getFieldsValue: getFieldsValue,
300
+ setFieldsValue: setFieldsValue,
301
+ setFieldValue: setFieldValue,
302
+ validateFields: validateFields
303
+ };
304
+ }, [handleSubmitInternal, resetFields, getFieldValue, getFieldsValue, setFieldsValue, setFieldValue, validateFields]);
305
+ var coreContextShape = useMemo(function () {
306
+ return {
307
+ values: values,
308
+ errors: errors,
309
+ touched: touched,
310
+ formInstance: formInstance,
311
+ setFieldValue: setFieldValue,
312
+ setFieldError: setFieldError,
313
+ validateField: validateField,
314
+ registerField: registerField,
315
+ unregisterField: unregisterField,
316
+ size: size,
317
+ labelAlign: labelAlign,
318
+ disabled: disabled,
319
+ colon: colon,
320
+ requiredMark: requiredMark,
321
+ validateTrigger: validateTrigger
322
+ };
323
+ }, [values, errors, touched, formInstance, setFieldValue, setFieldError, validateField, registerField, unregisterField, size, labelAlign, disabled, colon, requiredMark, validateTrigger]);
324
+ return {
325
+ values: values,
326
+ errors: errors,
327
+ touched: touched,
328
+ fieldRules: fieldRules,
329
+ getFieldRules: getFieldRules,
330
+ setFieldValue: setFieldValue,
331
+ setFieldError: setFieldError,
332
+ setFieldsValue: setFieldsValue,
333
+ getFieldValue: getFieldValue,
334
+ getFieldsValue: getFieldsValue,
335
+ validateField: validateField,
336
+ validateFields: validateFields,
337
+ registerField: registerField,
338
+ unregisterField: unregisterField,
339
+ handleSubmit: handleSubmit,
340
+ handleReset: handleReset,
341
+ resetFields: resetFields,
342
+ formInstance: formInstance,
343
+ coreContextShape: coreContextShape
344
+ };
345
+ };
346
+ export default useFormCore;
347
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIl0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlTWVtbyIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VNZW1vaXplZEZuIiwiZ2V0TmVzdGVkVmFsdWUiLCJvYmoiLCJwYXRoIiwia2V5cyIsInNwbGl0IiwiY3VycmVudCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJrZXkiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsIl90eXBlb2YiLCJlcnIiLCJlIiwiZiIsInNldE5lc3RlZFZhbHVlIiwibGVuZ3RoIiwiT2JqZWN0IiwiYXNzaWduIiwiX2RlZmluZVByb3BlcnR5IiwicmVzdWx0IiwiaSIsIm5leHRLZXkiLCJpc05leHRBcnJheSIsInRlc3QiLCJBcnJheSIsImlzQXJyYXkiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJyZXNvbHZlVmFsdWUiLCJ2YWx1ZXMiLCJuYW1lIiwiaW5jbHVkZXMiLCJ1c2VGb3JtQ29yZSIsImNvbmZpZyIsImFyZ3VtZW50cyIsIl9jb25maWckaW5pdGlhbFZhbHVlcyIsImluaXRpYWxWYWx1ZXMiLCJvbkZpbmlzaCIsIm9uRmluaXNoRmFpbGVkIiwib25WYWx1ZXNDaGFuZ2UiLCJvblJlc2V0IiwiX2NvbmZpZyRzaXplIiwic2l6ZSIsIl9jb25maWckbGFiZWxBbGlnbiIsImxhYmVsQWxpZ24iLCJfY29uZmlnJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfY29uZmlnJGNvbG9uIiwiY29sb24iLCJfY29uZmlnJHJlcXVpcmVkTWFyayIsInJlcXVpcmVkTWFyayIsIl9jb25maWckdmFsaWRhdGVUcmlnZyIsInZhbGlkYXRlVHJpZ2dlciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldFZhbHVlcyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZXJyb3JzIiwic2V0RXJyb3JzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ0b3VjaGVkIiwic2V0VG91Y2hlZCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiZmllbGRSdWxlcyIsInNldEZpZWxkUnVsZXMiLCJzZXRGaWVsZFZhbHVlIiwicHJldiIsIm5ld1ZhbHVlcyIsIm5ld0Vycm9ycyIsInNldEZpZWxkRXJyb3IiLCJlcnJvciIsInJlZ2lzdGVyRmllbGQiLCJydWxlcyIsImdldEZpZWxkUnVsZXMiLCJ1bnJlZ2lzdGVyRmllbGQiLCJuZXdSdWxlcyIsInZhbGlkYXRlRmllbGQiLCJwcm92aWRlZFZhbHVlIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInJ1bGUiLCJyZXF1aXJlZCIsIm1lc3NhZ2UiLCJjb25jYXQiLCJtaW4iLCJtYXgiLCJwYXR0ZXJuIiwidmFsaWRhdG9yIiwiRXJyb3IiLCJ2YWxpZGF0ZUZpZWxkcyIsImZpZWxkc1J1bGVzVG9WYWxpZGF0ZSIsImlzVmFsaWQiLCJmb3JFYWNoIiwiaGFuZGxlU3VibWl0SW50ZXJuYWwiLCJoYXNFcnJvcnMiLCJmaWVsZE5hbWUiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwic3VjY2VzcyIsImhhbmRsZVN1Ym1pdCIsInByZXZlbnREZWZhdWx0IiwicmVzZXRGaWVsZHMiLCJoYW5kbGVSZXNldCIsImdldEZpZWxkVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsInNldEZpZWxkc1ZhbHVlIiwidXBkYXRlZFZhbHVlcyIsImZvcm1JbnN0YW5jZSIsInN1Ym1pdCIsImNvcmVDb250ZXh0U2hhcGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRLEVBQUVDLE9BQU8sUUFBUSxPQUFPO0FBRXpDLFNBQVNDLGdCQUFnQixFQUFFQyxhQUFhLFFBQVEsZUFBZTtBQVEvRDtBQUNBO0FBQ0E7QUFDQSxTQUFTQyxj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RCxXQUFXLEVBQVhBLFdBQVc7SUFDWE0sWUFBWSxFQUFaQSxZQUFZO0lBQ1pFLGdCQUFnQixFQUFoQkE7RUM1RUEsQ0Q2RUQ7QUFDSCxDQUFDO0FBRUQsZUFBZWpGLFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybUNvcmUuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZVN0YXRlLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRXZlbnRDYWxsYmFjaywgdXNlTWVtb2l6ZWRGbiB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBOZXN0ZWQgcGF0aCBoZWxwZXJzIChkb3Qtbm90YXRpb24gc3VwcG9ydCwgZS5nLiBcIml0ZW1zLjAudGl0bGVcIilcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gZ2V0TmVzdGVkVmFsdWUob2JqLCBwYXRoKSB7XG4gICAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICBsZXQgY3VycmVudCA9IG9iajtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGlmIChjdXJyZW50ID09PSBudWxsIHx8IGN1cnJlbnQgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgY3VycmVudCAhPT0gJ29iamVjdCcpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudDtcbn1cbmZ1bmN0aW9uIHNldE5lc3RlZFZhbHVlKG9iaiwgcGF0aCwgdmFsdWUpIHtcbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb2JqKSwgeyBbcGF0aF06IHZhbHVlIH0pO1xuICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5hc3NpZ24oe30sIG9iaik7XG4gICAgbGV0IGN1cnJlbnQgPSByZXN1bHQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgICBjb25zdCBuZXh0S2V5ID0ga2V5c1tpICsgMV07XG4gICAgICAgIGNvbnN0IGlzTmV4dEFycmF5ID0gL15cXGQrJC8udGVzdChuZXh0S2V5KTtcbiAgICAgICAgaWYgKGN1cnJlbnRba2V5XSA9PT0gdW5kZWZpbmVkIHx8IGN1cnJlbnRba2V5XSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgY3VycmVudFtrZXldID0gaXNOZXh0QXJyYXkgPyBbXSA6IHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRba2V5XSkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRba2V5XSA9IFsuLi5jdXJyZW50W2tleV1dO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY3VycmVudFtrZXldID0gT2JqZWN0LmFzc2lnbih7fSwgY3VycmVudFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtrZXldO1xuICAgIH1cbiAgICBjdXJyZW50W2tleXNba2V5cy5sZW5ndGggLSAxXV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSkge1xuICAgIHJldHVybiBuYW1lLmluY2x1ZGVzKCcuJykgPyBnZXROZXN0ZWRWYWx1ZSh2YWx1ZXMsIG5hbWUpIDogdmFsdWVzW25hbWVdO1xufVxuZXhwb3J0IGNvbnN0IHVzZUZvcm1Db3JlID0gKGNvbmZpZyA9IHt9KSA9PiB7XG4gICAgY29uc3QgeyBpbml0aWFsVmFsdWVzID0ge30sIG9uRmluaXNoLCBvbkZpbmlzaEZhaWxlZCwgb25WYWx1ZXNDaGFuZ2UsIG9uUmVzZXQsIHNpemUgPSAnbWlkZGxlJywgbGFiZWxBbGlnbiA9ICdsZWZ0JywgZGlzYWJsZWQgPSBmYWxzZSwgY29sb24gPSB0cnVlLCByZXF1aXJlZE1hcmsgPSB0cnVlLCB2YWxpZGF0ZVRyaWdnZXIgPSAnb25DaGFuZ2UnLCB9ID0gY29uZmlnO1xuICAgIGNvbnN0IFt2YWx1ZXMsIHNldFZhbHVlc10gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWVzKTtcbiAgICBjb25zdCBbZXJyb3JzLCBzZXRFcnJvcnNdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt0b3VjaGVkLCBzZXRUb3VjaGVkXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbZmllbGRSdWxlcywgc2V0RmllbGRSdWxlc10gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3Qgc2V0RmllbGRWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICAgIHNldFZhbHVlcygocHJldikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gbmFtZS5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShwcmV2LCBuYW1lLCB2YWx1ZSlcbiAgICAgICAgICAgICAgICA6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIHsgW25hbWVdOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgIG9uVmFsdWVzQ2hhbmdlID09PSBudWxsIHx8IG9uVmFsdWVzQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblZhbHVlc0NoYW5nZSh7IFtuYW1lXTogdmFsdWUgfSwgbmV3VmFsdWVzKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdWYWx1ZXM7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodmFsdWUgIT09ICcnICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNldEVycm9ycygocHJldikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcHJldltuYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJldik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3RXJyb3JzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZEVycm9yID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZXJyb3IpID0+IHtcbiAgICAgICAgc2V0RXJyb3JzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZbbmFtZV0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdFcnJvcnNbbmFtZV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Vycm9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IFtuYW1lXTogZXJyb3IgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlZ2lzdGVyRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBydWxlcykgPT4ge1xuICAgICAgICBzZXRGaWVsZFJ1bGVzKChwcmV2KSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IHJ1bGVzIH0pKSk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRSdWxlcyA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIGZpZWxkUnVsZXNbbmFtZV07XG4gICAgfSk7XG4gICAgY29uc3QgdW5yZWdpc3RlckZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICBzZXRGaWVsZFJ1bGVzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdSdWxlcyA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgZGVsZXRlIG5ld1J1bGVzW25hbWVdO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1J1bGVzO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWxpZGF0ZUZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgcnVsZXMgPSBbXSwgcHJvdmlkZWRWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHByb3ZpZGVkVmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3ZpZGVkVmFsdWUgOiByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKTtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHJ1bGVzKSB7XG4gICAgICAgICAgICBpZiAocnVsZS5yZXF1aXJlZCAmJlxuICAgICAgICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBpcyByZXF1aXJlZGA7XG4gICAgICAgICAgICAgICAgc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGUubWluICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoIDwgcnVsZS5taW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGF0IGxlYXN0ICR7cnVsZS5taW59IGNoYXJhY3RlcnNgO1xuICAgICAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLm1heCAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IHJ1bGUubWF4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBubyBtb3JlIHRoYW4gJHtydWxlLm1heH0gY2hhcmFjdGVyc2A7XG4gICAgICAgICAgICAgICAgc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGUucGF0dGVybiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFydWxlLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBmb3JtYXQgaXMgaW52YWxpZGA7XG4gICAgICAgICAgICAgICAgc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGUudmFsaWRhdG9yICYmIHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJ1bGUudmFsaWRhdG9yKHZhbHVlLCB2YWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB0cnVlICYmIHR5cGVvZiByZXN1bHQgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogJ1ZhbGlkYXRpb24gZmFpbGVkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdWYWxpZGF0aW9uIGVycm9yJztcbiAgICAgICAgICAgICAgICAgICAgc2V0RmllbGRFcnJvcihuYW1lLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JzW25hbWVdKSB7XG4gICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbGlkYXRlRmllbGRzID0gdXNlTWVtb2l6ZWRGbigoZmllbGRzUnVsZXNUb1ZhbGlkYXRlID0gZmllbGRSdWxlcykgPT4ge1xuICAgICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgIE9iamVjdC5rZXlzKGZpZWxkc1J1bGVzVG9WYWxpZGF0ZSkuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZXMgPSBmaWVsZHNSdWxlc1RvVmFsaWRhdGVbbmFtZV07XG4gICAgICAgICAgICBpZiAoIXZhbGlkYXRlRmllbGQobmFtZSwgcnVsZXMpKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGlzVmFsaWQ7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU3VibWl0SW50ZXJuYWwgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgbGV0IGhhc0Vycm9ycyA9IGZhbHNlO1xuICAgICAgICBjb25zdCBuZXdFcnJvcnMgPSB7fTtcbiAgICAgICAgT2JqZWN0LmtleXMoZmllbGRSdWxlcykuZm9yRWFjaCgoZmllbGROYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlcyA9IGZpZWxkUnVsZXNbZmllbGROYW1lXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmVzb2x2ZVZhbHVlKHZhbHVlcywgZmllbGROYW1lKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuICAgICAgICAgICAgICAgIGlmIChydWxlLnJlcXVpcmVkICYmXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RXJyb3JzW2ZpZWxkTmFtZV0gPSBydWxlLm1lc3NhZ2UgfHwgYCR7ZmllbGROYW1lfSBpcyByZXF1aXJlZGA7XG4gICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZS5taW4gJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPCBydWxlLm1pbikge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBydWxlLm1lc3NhZ2UgfHwgYCR7ZmllbGROYW1lfSBtdXN0IGJlIGF0IGxlYXN0ICR7cnVsZS5taW59IGNoYXJhY3RlcnNgO1xuICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUubWF4ICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gcnVsZS5tYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RXJyb3JzW2ZpZWxkTmFtZV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS5tZXNzYWdlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7ZmllbGROYW1lfSBtdXN0IGJlIG5vIG1vcmUgdGhhbiAke3J1bGUubWF4fSBjaGFyYWN0ZXJzYDtcbiAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydWxlLnBhdHRlcm4gJiZcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgICAgICAhcnVsZS5wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID0gcnVsZS5tZXNzYWdlIHx8IGAke2ZpZWxkTmFtZX0gZm9ybWF0IGlzIGludmFsaWRgO1xuICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUudmFsaWRhdG9yICYmIHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcnVsZS52YWxpZGF0b3IodmFsdWUsIHZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB0cnVlICYmIHR5cGVvZiByZXN1bHQgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RXJyb3JzW2ZpZWxkTmFtZV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/IHJlc3VsdCA6ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdWYWxpZGF0aW9uIGVycm9yJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNldEVycm9ycyhuZXdFcnJvcnMpO1xuICAgICAgICBpZiAoIWhhc0Vycm9ycykge1xuICAgICAgICAgICAgb25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKHZhbHVlcyk7XG4gICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCB2YWx1ZXMgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9uRmluaXNoRmFpbGVkID09PSBudWxsIHx8IG9uRmluaXNoRmFpbGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaEZhaWxlZCh7IHZhbHVlcywgZXJyb3JzOiBuZXdFcnJvcnMgfSk7XG4gICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3JzOiBuZXdFcnJvcnMgfTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybiBoYW5kbGVTdWJtaXRJbnRlcm5hbCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc2V0RmllbGRzID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHNldFZhbHVlcyhpbml0aWFsVmFsdWVzKTtcbiAgICAgICAgc2V0RXJyb3JzKHt9KTtcbiAgICAgICAgc2V0VG91Y2hlZCh7fSk7XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmVzZXRGaWVsZHMoKTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRGaWVsZFZhbHVlID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRzVmFsdWUgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZHNWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICBzZXRWYWx1ZXMoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZXMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCBuZXdWYWx1ZXMpO1xuICAgICAgICAgICAgb25WYWx1ZXNDaGFuZ2UgPT09IG51bGwgfHwgb25WYWx1ZXNDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVmFsdWVzQ2hhbmdlKG5ld1ZhbHVlcywgdXBkYXRlZFZhbHVlcyk7XG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZFZhbHVlcztcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgZm9ybUluc3RhbmNlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBzdWJtaXQ6IGhhbmRsZVN1Ym1pdEludGVybmFsLFxuICAgICAgICByZXNldEZpZWxkcyxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkcyxcbiAgICB9KSwgW1xuICAgICAgICBoYW5kbGVTdWJtaXRJbnRlcm5hbCxcbiAgICAgICAgcmVzZXRGaWVsZHMsXG4gICAgICAgIGdldEZpZWxkVmFsdWUsXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHMsXG4gICAgXSk7XG4gICAgY29uc3QgY29yZUNvbnRleHRTaGFwZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHRvdWNoZWQsXG4gICAgICAgIGZvcm1JbnN0YW5jZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcixcbiAgICAgICAgdmFsaWRhdGVGaWVsZCxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgY29sb24sXG4gICAgICAgIHJlcXVpcmVkTWFyayxcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2VyLFxuICAgIH0pLCBbXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB0b3VjaGVkLFxuICAgICAgICBmb3JtSW5zdGFuY2UsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3IsXG4gICAgICAgIHZhbGlkYXRlRmllbGQsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIGNvbG9uLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICBdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgdG91Y2hlZCxcbiAgICAgICAgZmllbGRSdWxlcyxcbiAgICAgICAgZ2V0RmllbGRSdWxlcyxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIGdldEZpZWxkVmFsdWUsXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkcyxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBoYW5kbGVTdWJtaXQsXG4gICAgICAgIGhhbmRsZVJlc2V0LFxuICAgICAgICByZXNldEZpZWxkcyxcbiAgICAgICAgZm9ybUluc3RhbmNlLFxuICAgICAgICBjb3JlQ29udGV4dFNoYXBlLFxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgdXNlRm9ybUNvcmU7Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1,6 @@
1
+ export { useFormItem } from './useFormItem';
2
+ export type { UseFormItemOptions, UseFormItemReturn } from './useFormItem';
3
+ export { useForm } from './hooks/useForm';
4
+ export { useFormCore } from './hooks/useFormCore';
5
+ export * from './interface';
6
+ export * from './constants';
@@ -0,0 +1,6 @@
1
+ export { useFormItem } from './useFormItem';
2
+ export { useForm } from './hooks/useForm';
3
+ export { useFormCore } from './hooks/useFormCore';
4
+ export * from './interface';
5
+ export * from './constants';
6
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOlsidXNlRm9ybUl0ZW0iLCJ1c2VGb3JtIiwidXNlRm9ybUNvcmUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFdBQVcsUUFBUSxlQUFlO0FBRTNDLFNBQVNDLE9BQU8sUUFBUSxpQkFBaUI7QUFDekMsU0FBU0MsV0FBVyxRQUFRLHFCQUFxQjtBQUNqRCxjQUFjLGFBQWE7QUFDM0IsY0FBYyxhQUFhIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -1,5 +1,5 @@
1
1
  import type React from 'react';
2
- import type { FC, FormHTMLAttributes, ForwardRefExoticComponent, ReactNode, RefAttributes } from 'react';
2
+ import type { FC, ReactNode } from 'react';
3
3
  import type { FormSize, FormLayout, LabelAlign, ValidateStatus, ValidateTrigger } from './constants';
4
4
  export type { FormSize, FormLayout, LabelAlign, ValidateStatus, ValidateTrigger, };
5
5
  export interface Rule {
@@ -12,39 +12,6 @@ export interface Rule {
12
12
  enum?: unknown[];
13
13
  validator?: (value: unknown, values: Record<string, unknown>) => boolean | string | Promise<boolean | string>;
14
14
  }
15
- export interface FormProps extends Omit<FormHTMLAttributes<HTMLFormElement>, 'onSubmit' | 'onReset'> {
16
- children?: ReactNode;
17
- className?: string;
18
- prefixCls?: string;
19
- initialValues?: Record<string, unknown>;
20
- onFinish?: (values: Record<string, unknown>) => void;
21
- onFinishFailed?: (errorInfo: {
22
- values: Record<string, unknown>;
23
- errors: Record<string, string>;
24
- }) => void;
25
- onValuesChange?: (changedValues: Record<string, unknown>, allValues: Record<string, unknown>) => void;
26
- onReset?: () => void;
27
- size?: FormSize;
28
- labelAlign?: LabelAlign;
29
- disabled?: boolean;
30
- colon?: boolean;
31
- requiredMark?: boolean;
32
- validateTrigger?: ValidateTrigger;
33
- }
34
- export interface FormItemProps {
35
- children?: ReactNode;
36
- className?: string;
37
- prefixCls?: string;
38
- label?: ReactNode;
39
- name?: string;
40
- rules?: Rule[];
41
- required?: boolean;
42
- help?: ReactNode;
43
- validateStatus?: ValidateStatus;
44
- hasFeedback?: boolean;
45
- colon?: boolean;
46
- hidden?: boolean;
47
- }
48
15
  export interface FieldProps {
49
16
  name: string;
50
17
  value: unknown;
@@ -62,7 +29,7 @@ export interface FieldComponentProps {
62
29
  children: ReactNode | ((props: FieldProps) => ReactNode);
63
30
  render?: (props: FieldProps) => ReactNode;
64
31
  }
65
- /** Lightweight form instance returned by useFormCore and available via FormContext */
32
+ /** Lightweight form instance returned by useFormCore */
66
33
  export interface FormCoreInstance {
67
34
  submit: () => {
68
35
  success: boolean;
@@ -98,23 +65,6 @@ export interface FormInstance {
98
65
  registerField: (name: string, rules: Rule[]) => void;
99
66
  unregisterField: (name: string) => void;
100
67
  }
101
- export interface FormContextValue {
102
- values: Record<string, unknown>;
103
- errors: Record<string, string>;
104
- touched: Record<string, boolean>;
105
- formInstance: FormCoreInstance;
106
- setFieldValue: (name: string, value: unknown) => void;
107
- setFieldError: (name: string, error: string | null) => void;
108
- validateField: (name: string, rules: Rule[], providedValue?: unknown) => boolean;
109
- registerField: (name: string, rules: Rule[]) => void;
110
- unregisterField: (name: string) => void;
111
- size: FormSize;
112
- labelAlign: LabelAlign;
113
- disabled: boolean;
114
- colon: boolean;
115
- requiredMark: boolean;
116
- validateTrigger: ValidateTrigger;
117
- }
118
68
  export interface UseFormOptions {
119
69
  onValuesChange?: (changedValues: Record<string, unknown>, allValues: Record<string, unknown>) => void;
120
70
  validateTrigger?: ValidateTrigger;
@@ -136,6 +86,24 @@ export interface UseFormCoreConfig {
136
86
  requiredMark?: boolean;
137
87
  validateTrigger?: ValidateTrigger;
138
88
  }
89
+ /** Internal shape of data produced by useFormCore, consumed by ProForm to build ProFormContext */
90
+ export interface FormCoreContextShape {
91
+ values: Record<string, unknown>;
92
+ errors: Record<string, string>;
93
+ touched: Record<string, boolean>;
94
+ formInstance: FormCoreInstance;
95
+ setFieldValue: (name: string, value: unknown) => void;
96
+ setFieldError: (name: string, error: string | null) => void;
97
+ validateField: (name: string, rules: Rule[], providedValue?: unknown) => boolean;
98
+ registerField: (name: string, rules: Rule[]) => void;
99
+ unregisterField: (name: string) => void;
100
+ size: FormSize;
101
+ labelAlign: LabelAlign;
102
+ disabled: boolean;
103
+ colon: boolean;
104
+ requiredMark: boolean;
105
+ validateTrigger: ValidateTrigger;
106
+ }
139
107
  export interface UseFormCoreReturn {
140
108
  values: Record<string, unknown>;
141
109
  errors: Record<string, string>;
@@ -155,12 +123,5 @@ export interface UseFormCoreReturn {
155
123
  handleReset: (e?: React.FormEvent) => void;
156
124
  resetFields: () => void;
157
125
  formInstance: FormCoreInstance;
158
- contextValue: FormContextValue;
159
- }
160
- export interface FormComponent extends ForwardRefExoticComponent<FormProps & RefAttributes<FormInstance>> {
161
- Item: FC<FormItemProps>;
162
- useForm: (initialValues?: Record<string, unknown>, options?: UseFormOptions) => [FormInstance];
163
- useFormContext: () => FormContextValue;
164
- useFormInstance: () => FormCoreInstance;
165
- useFormCore: (config?: UseFormCoreConfig) => UseFormCoreReturn;
126
+ coreContextShape: FormCoreContextShape;
166
127
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaW50ZXJmYWNlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIiwic291cmNlcyI6WyJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9pbnRlcmZhY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9OyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,20 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { FormSize, LabelAlign, Rule, ValidateStatus } from './interface';
3
+ export interface UseFormItemOptions {
4
+ name?: string;
5
+ rules?: Rule[];
6
+ required?: boolean;
7
+ validateStatus?: ValidateStatus;
8
+ }
9
+ export interface UseFormItemReturn {
10
+ fieldValue: unknown;
11
+ fieldError: string | undefined;
12
+ validateStatus: ValidateStatus | undefined;
13
+ isRequired: boolean;
14
+ size: FormSize;
15
+ labelAlign: LabelAlign;
16
+ requiredMark: boolean;
17
+ /** Clone a form-component child injecting value/onChange/onBlur/status/size. Non-form children pass through unchanged. */
18
+ injectField: (child: ReactNode) => ReactNode;
19
+ }
20
+ export declare function useFormItem(options: UseFormItemOptions): UseFormItemReturn;