@1money/component-ui 0.0.20 → 0.0.22

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 (95) hide show
  1. package/.claude/settings.local.json +2 -1
  2. package/AGENTS.md +7 -1
  3. package/es/components/Calendar/style/Calendar.css +1 -1
  4. package/es/components/ProForm/ProForm.js +93 -116
  5. package/es/components/ProForm/ProFormDependency.js +2 -4
  6. package/es/components/ProForm/ProFormItem.d.ts +4 -0
  7. package/es/components/ProForm/ProFormItem.js +213 -0
  8. package/es/components/ProForm/ProFormList.js +5 -6
  9. package/es/components/ProForm/Submitter.js +2 -2
  10. package/es/components/ProForm/context.d.ts +10 -2
  11. package/es/components/ProForm/context.js +17 -14
  12. package/es/components/{Form → ProForm/core}/constants.d.ts +1 -1
  13. package/es/components/ProForm/core/constants.js +18 -0
  14. package/es/components/ProForm/core/hooks/useForm.js +541 -0
  15. package/es/components/ProForm/core/hooks/useFormCore.js +347 -0
  16. package/es/components/ProForm/core/index.d.ts +6 -0
  17. package/es/components/ProForm/core/index.js +6 -0
  18. package/es/components/{Form → ProForm/core}/interface.d.ts +21 -60
  19. package/es/components/ProForm/core/interface.js +2 -0
  20. package/es/components/ProForm/core/useFormItem.d.ts +20 -0
  21. package/es/components/ProForm/core/useFormItem.js +121 -0
  22. package/es/components/ProForm/fields/ProFormFieldSet.js +7 -6
  23. package/es/components/ProForm/fields/createProFormField.js +76 -151
  24. package/es/components/ProForm/index.d.ts +12 -5
  25. package/es/components/ProForm/index.js +20 -8
  26. package/es/components/ProForm/interface.d.ts +76 -41
  27. package/es/components/ProForm/style/ProForm.css +1 -1
  28. package/es/index.css +1 -1
  29. package/es/index.d.ts +3 -4
  30. package/es/index.js +2 -3
  31. package/lib/components/Calendar/style/Calendar.css +1 -1
  32. package/lib/components/ProForm/ProForm.js +94 -117
  33. package/lib/components/ProForm/ProFormDependency.js +2 -4
  34. package/lib/components/ProForm/ProFormItem.d.ts +4 -0
  35. package/lib/components/ProForm/ProFormItem.js +222 -0
  36. package/lib/components/ProForm/ProFormList.js +4 -5
  37. package/lib/components/ProForm/Submitter.js +2 -2
  38. package/lib/components/ProForm/context.d.ts +10 -2
  39. package/lib/components/ProForm/context.js +18 -15
  40. package/lib/components/{Form → ProForm/core}/constants.d.ts +1 -1
  41. package/lib/components/ProForm/core/constants.js +24 -0
  42. package/lib/components/ProForm/core/hooks/useForm.js +551 -0
  43. package/lib/components/ProForm/core/hooks/useFormCore.js +354 -0
  44. package/lib/components/ProForm/core/index.d.ts +6 -0
  45. package/lib/components/ProForm/core/index.js +56 -0
  46. package/lib/components/{Form → ProForm/core}/interface.d.ts +21 -60
  47. package/lib/components/ProForm/core/interface.js +6 -0
  48. package/lib/components/ProForm/core/useFormItem.d.ts +20 -0
  49. package/lib/components/ProForm/core/useFormItem.js +131 -0
  50. package/lib/components/ProForm/fields/ProFormFieldSet.js +7 -6
  51. package/lib/components/ProForm/fields/createProFormField.js +76 -151
  52. package/lib/components/ProForm/index.d.ts +12 -5
  53. package/lib/components/ProForm/index.js +41 -28
  54. package/lib/components/ProForm/interface.d.ts +76 -41
  55. package/lib/components/ProForm/style/ProForm.css +1 -1
  56. package/lib/index.css +1 -1
  57. package/lib/index.d.ts +3 -4
  58. package/lib/index.js +49 -50
  59. package/package.json +1 -1
  60. package/es/components/Form/Form.d.ts +0 -4
  61. package/es/components/Form/Form.js +0 -73
  62. package/es/components/Form/FormItem.d.ts +0 -4
  63. package/es/components/Form/FormItem.js +0 -183
  64. package/es/components/Form/constants.js +0 -19
  65. package/es/components/Form/context.d.ts +0 -5
  66. package/es/components/Form/context.js +0 -19
  67. package/es/components/Form/hooks/useForm.js +0 -541
  68. package/es/components/Form/hooks/useFormCore.js +0 -348
  69. package/es/components/Form/index.d.ts +0 -10
  70. package/es/components/Form/index.js +0 -17
  71. package/es/components/Form/interface.js +0 -2
  72. package/es/components/Form/style/Form.css +0 -1
  73. package/es/components/Form/style/css.js +0 -2
  74. package/es/components/Form/style/index.d.ts +0 -1
  75. package/es/components/Form/style/index.js +0 -2
  76. package/lib/components/Form/Form.d.ts +0 -4
  77. package/lib/components/Form/Form.js +0 -80
  78. package/lib/components/Form/FormItem.d.ts +0 -4
  79. package/lib/components/Form/FormItem.js +0 -193
  80. package/lib/components/Form/constants.js +0 -25
  81. package/lib/components/Form/context.d.ts +0 -5
  82. package/lib/components/Form/context.js +0 -25
  83. package/lib/components/Form/hooks/useForm.js +0 -551
  84. package/lib/components/Form/hooks/useFormCore.js +0 -355
  85. package/lib/components/Form/index.d.ts +0 -10
  86. package/lib/components/Form/index.js +0 -83
  87. package/lib/components/Form/interface.js +0 -6
  88. package/lib/components/Form/style/Form.css +0 -1
  89. package/lib/components/Form/style/css.js +0 -4
  90. package/lib/components/Form/style/index.d.ts +0 -1
  91. package/lib/components/Form/style/index.js +0 -4
  92. /package/es/components/{Form → ProForm/core}/hooks/useForm.d.ts +0 -0
  93. /package/es/components/{Form → ProForm/core}/hooks/useFormCore.d.ts +0 -0
  94. /package/lib/components/{Form → ProForm/core}/hooks/useForm.d.ts +0 -0
  95. /package/lib/components/{Form → ProForm/core}/hooks/useFormCore.d.ts +0 -0
@@ -0,0 +1,354 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useFormCore = exports["default"] = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12
+ var _react = require("react");
13
+ var _hooks = require("@1money/hooks");
14
+ 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; } } }; }
15
+ 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; } }
16
+ 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; }
17
+ // ---------------------------------------------------------------------------
18
+ // Nested path helpers (dot-notation support, e.g. "items.0.title")
19
+ // ---------------------------------------------------------------------------
20
+ function getNestedValue(obj, path) {
21
+ var keys = path.split('.');
22
+ var current = obj;
23
+ var _iterator = _createForOfIteratorHelper(keys),
24
+ _step;
25
+ try {
26
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
27
+ var key = _step.value;
28
+ if (current === null || current === undefined || (0, _typeof2["default"])(current) !== 'object') return undefined;
29
+ current = current[key];
30
+ }
31
+ } catch (err) {
32
+ _iterator.e(err);
33
+ } finally {
34
+ _iterator.f();
35
+ }
36
+ return current;
37
+ }
38
+ function setNestedValue(obj, path, value) {
39
+ var keys = path.split('.');
40
+ if (keys.length === 1) return Object.assign(Object.assign({}, obj), (0, _defineProperty2["default"])({}, path, value));
41
+ var result = Object.assign({}, obj);
42
+ var current = result;
43
+ for (var i = 0; i < keys.length - 1; i++) {
44
+ var key = keys[i];
45
+ var nextKey = keys[i + 1];
46
+ var isNextArray = /^\d+$/.test(nextKey);
47
+ if (current[key] === undefined || current[key] === null) {
48
+ current[key] = isNextArray ? [] : {};
49
+ }
50
+ if (Array.isArray(current[key])) {
51
+ current[key] = (0, _toConsumableArray2["default"])(current[key]);
52
+ } else {
53
+ current[key] = Object.assign({}, current[key]);
54
+ }
55
+ current = current[key];
56
+ }
57
+ current[keys[keys.length - 1]] = value;
58
+ return result;
59
+ }
60
+ function resolveValue(values, name) {
61
+ return name.includes('.') ? getNestedValue(values, name) : values[name];
62
+ }
63
+ var useFormCore = exports.useFormCore = function useFormCore() {
64
+ var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
65
+ var _config$initialValues = config.initialValues,
66
+ initialValues = _config$initialValues === void 0 ? {} : _config$initialValues,
67
+ onFinish = config.onFinish,
68
+ onFinishFailed = config.onFinishFailed,
69
+ onValuesChange = config.onValuesChange,
70
+ onReset = config.onReset,
71
+ _config$size = config.size,
72
+ size = _config$size === void 0 ? 'middle' : _config$size,
73
+ _config$labelAlign = config.labelAlign,
74
+ labelAlign = _config$labelAlign === void 0 ? 'left' : _config$labelAlign,
75
+ _config$disabled = config.disabled,
76
+ disabled = _config$disabled === void 0 ? false : _config$disabled,
77
+ _config$colon = config.colon,
78
+ colon = _config$colon === void 0 ? true : _config$colon,
79
+ _config$requiredMark = config.requiredMark,
80
+ requiredMark = _config$requiredMark === void 0 ? true : _config$requiredMark,
81
+ _config$validateTrigg = config.validateTrigger,
82
+ validateTrigger = _config$validateTrigg === void 0 ? 'onChange' : _config$validateTrigg;
83
+ var _useState = (0, _react.useState)(initialValues),
84
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
85
+ values = _useState2[0],
86
+ setValues = _useState2[1];
87
+ var _useState3 = (0, _react.useState)({}),
88
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
89
+ errors = _useState4[0],
90
+ setErrors = _useState4[1];
91
+ var _useState5 = (0, _react.useState)({}),
92
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
93
+ touched = _useState6[0],
94
+ setTouched = _useState6[1];
95
+ var _useState7 = (0, _react.useState)({}),
96
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
97
+ fieldRules = _useState8[0],
98
+ setFieldRules = _useState8[1];
99
+ var setFieldValue = (0, _hooks.useMemoizedFn)(function (name, value) {
100
+ setValues(function (prev) {
101
+ var newValues = name.includes('.') ? setNestedValue(prev, name, value) : Object.assign(Object.assign({}, prev), (0, _defineProperty2["default"])({}, name, value));
102
+ onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange((0, _defineProperty2["default"])({}, name, value), newValues);
103
+ return newValues;
104
+ });
105
+ if (value !== '' && value !== null && value !== undefined) {
106
+ setErrors(function (prev) {
107
+ if (!prev[name]) return prev;
108
+ var newErrors = Object.assign({}, prev);
109
+ delete newErrors[name];
110
+ return newErrors;
111
+ });
112
+ }
113
+ });
114
+ var setFieldError = (0, _hooks.useMemoizedFn)(function (name, error) {
115
+ setErrors(function (prev) {
116
+ if (error === null) {
117
+ if (!prev[name]) return prev;
118
+ var newErrors = Object.assign({}, prev);
119
+ delete newErrors[name];
120
+ return newErrors;
121
+ }
122
+ return Object.assign(Object.assign({}, prev), (0, _defineProperty2["default"])({}, name, error));
123
+ });
124
+ });
125
+ var registerField = (0, _hooks.useMemoizedFn)(function (name, rules) {
126
+ setFieldRules(function (prev) {
127
+ return Object.assign(Object.assign({}, prev), (0, _defineProperty2["default"])({}, name, rules));
128
+ });
129
+ });
130
+ var getFieldRules = (0, _hooks.useMemoizedFn)(function (name) {
131
+ return fieldRules[name];
132
+ });
133
+ var unregisterField = (0, _hooks.useMemoizedFn)(function (name) {
134
+ setFieldRules(function (prev) {
135
+ var newRules = Object.assign({}, prev);
136
+ delete newRules[name];
137
+ return newRules;
138
+ });
139
+ });
140
+ var validateField = (0, _hooks.useMemoizedFn)(function (name) {
141
+ var rules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
142
+ var providedValue = arguments.length > 2 ? arguments[2] : undefined;
143
+ var value = providedValue !== undefined ? providedValue : resolveValue(values, name);
144
+ var _iterator2 = _createForOfIteratorHelper(rules),
145
+ _step2;
146
+ try {
147
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
148
+ var rule = _step2.value;
149
+ if (rule.required && (value === undefined || value === null || value === '')) {
150
+ var error = rule.message || "".concat(name, " is required");
151
+ setFieldError(name, error);
152
+ return false;
153
+ }
154
+ if (rule.min && typeof value === 'string' && value.length < rule.min) {
155
+ var _error = rule.message || "".concat(name, " must be at least ").concat(rule.min, " characters");
156
+ setFieldError(name, _error);
157
+ return false;
158
+ }
159
+ if (rule.max && typeof value === 'string' && value.length > rule.max) {
160
+ var _error2 = rule.message || "".concat(name, " must be no more than ").concat(rule.max, " characters");
161
+ setFieldError(name, _error2);
162
+ return false;
163
+ }
164
+ if (rule.pattern && typeof value === 'string' && !rule.pattern.test(value)) {
165
+ var _error3 = rule.message || "".concat(name, " format is invalid");
166
+ setFieldError(name, _error3);
167
+ return false;
168
+ }
169
+ if (rule.validator && typeof rule.validator === 'function') {
170
+ try {
171
+ var result = rule.validator(value, values);
172
+ if (result !== true && (0, _typeof2["default"])(result) !== 'object') {
173
+ setFieldError(name, typeof result === 'string' ? result : 'Validation failed');
174
+ return false;
175
+ }
176
+ } catch (err) {
177
+ var message = err instanceof Error ? err.message : 'Validation error';
178
+ setFieldError(name, message);
179
+ return false;
180
+ }
181
+ }
182
+ }
183
+ } catch (err) {
184
+ _iterator2.e(err);
185
+ } finally {
186
+ _iterator2.f();
187
+ }
188
+ if (errors[name]) {
189
+ setFieldError(name, null);
190
+ }
191
+ return true;
192
+ });
193
+ var validateFields = (0, _hooks.useMemoizedFn)(function () {
194
+ var fieldsRulesToValidate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : fieldRules;
195
+ var isValid = true;
196
+ Object.keys(fieldsRulesToValidate).forEach(function (name) {
197
+ var rules = fieldsRulesToValidate[name];
198
+ if (!validateField(name, rules)) {
199
+ isValid = false;
200
+ }
201
+ });
202
+ return isValid;
203
+ });
204
+ var handleSubmitInternal = (0, _hooks.useMemoizedFn)(function () {
205
+ var hasErrors = false;
206
+ var newErrors = {};
207
+ Object.keys(fieldRules).forEach(function (fieldName) {
208
+ var rules = fieldRules[fieldName];
209
+ var value = resolveValue(values, fieldName);
210
+ var _iterator3 = _createForOfIteratorHelper(rules),
211
+ _step3;
212
+ try {
213
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
214
+ var rule = _step3.value;
215
+ if (rule.required && (value === undefined || value === null || value === '')) {
216
+ newErrors[fieldName] = rule.message || "".concat(fieldName, " is required");
217
+ hasErrors = true;
218
+ break;
219
+ }
220
+ if (rule.min && typeof value === 'string' && value.length < rule.min) {
221
+ newErrors[fieldName] = rule.message || "".concat(fieldName, " must be at least ").concat(rule.min, " characters");
222
+ hasErrors = true;
223
+ break;
224
+ }
225
+ if (rule.max && typeof value === 'string' && value.length > rule.max) {
226
+ newErrors[fieldName] = rule.message || "".concat(fieldName, " must be no more than ").concat(rule.max, " characters");
227
+ hasErrors = true;
228
+ break;
229
+ }
230
+ if (rule.pattern && typeof value === 'string' && !rule.pattern.test(value)) {
231
+ newErrors[fieldName] = rule.message || "".concat(fieldName, " format is invalid");
232
+ hasErrors = true;
233
+ break;
234
+ }
235
+ if (rule.validator && typeof rule.validator === 'function') {
236
+ try {
237
+ var result = rule.validator(value, values);
238
+ if (result !== true && (0, _typeof2["default"])(result) !== 'object') {
239
+ newErrors[fieldName] = typeof result === 'string' ? result : 'Validation failed';
240
+ hasErrors = true;
241
+ break;
242
+ }
243
+ } catch (err) {
244
+ newErrors[fieldName] = err instanceof Error ? err.message : 'Validation error';
245
+ hasErrors = true;
246
+ break;
247
+ }
248
+ }
249
+ }
250
+ } catch (err) {
251
+ _iterator3.e(err);
252
+ } finally {
253
+ _iterator3.f();
254
+ }
255
+ });
256
+ setErrors(newErrors);
257
+ if (!hasErrors) {
258
+ onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
259
+ return {
260
+ success: true,
261
+ values: values
262
+ };
263
+ } else {
264
+ onFinishFailed === null || onFinishFailed === void 0 ? void 0 : onFinishFailed({
265
+ values: values,
266
+ errors: newErrors
267
+ });
268
+ return {
269
+ success: false,
270
+ errors: newErrors
271
+ };
272
+ }
273
+ });
274
+ var handleSubmit = (0, _hooks.useEventCallback)(function (e) {
275
+ e === null || e === void 0 ? void 0 : e.preventDefault();
276
+ return handleSubmitInternal();
277
+ });
278
+ var resetFields = (0, _hooks.useMemoizedFn)(function () {
279
+ setValues(initialValues);
280
+ setErrors({});
281
+ setTouched({});
282
+ onReset === null || onReset === void 0 ? void 0 : onReset();
283
+ });
284
+ var handleReset = (0, _hooks.useEventCallback)(function (e) {
285
+ e === null || e === void 0 ? void 0 : e.preventDefault();
286
+ resetFields();
287
+ });
288
+ var getFieldValue = (0, _hooks.useMemoizedFn)(function (name) {
289
+ return resolveValue(values, name);
290
+ });
291
+ var getFieldsValue = (0, _hooks.useMemoizedFn)(function () {
292
+ return values;
293
+ });
294
+ var setFieldsValue = (0, _hooks.useMemoizedFn)(function (newValues) {
295
+ setValues(function (prev) {
296
+ var updatedValues = Object.assign(Object.assign({}, prev), newValues);
297
+ onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange(newValues, updatedValues);
298
+ return updatedValues;
299
+ });
300
+ });
301
+ var formInstance = (0, _react.useMemo)(function () {
302
+ return {
303
+ submit: handleSubmitInternal,
304
+ resetFields: resetFields,
305
+ getFieldValue: getFieldValue,
306
+ getFieldsValue: getFieldsValue,
307
+ setFieldsValue: setFieldsValue,
308
+ setFieldValue: setFieldValue,
309
+ validateFields: validateFields
310
+ };
311
+ }, [handleSubmitInternal, resetFields, getFieldValue, getFieldsValue, setFieldsValue, setFieldValue, validateFields]);
312
+ var coreContextShape = (0, _react.useMemo)(function () {
313
+ return {
314
+ values: values,
315
+ errors: errors,
316
+ touched: touched,
317
+ formInstance: formInstance,
318
+ setFieldValue: setFieldValue,
319
+ setFieldError: setFieldError,
320
+ validateField: validateField,
321
+ registerField: registerField,
322
+ unregisterField: unregisterField,
323
+ size: size,
324
+ labelAlign: labelAlign,
325
+ disabled: disabled,
326
+ colon: colon,
327
+ requiredMark: requiredMark,
328
+ validateTrigger: validateTrigger
329
+ };
330
+ }, [values, errors, touched, formInstance, setFieldValue, setFieldError, validateField, registerField, unregisterField, size, labelAlign, disabled, colon, requiredMark, validateTrigger]);
331
+ return {
332
+ values: values,
333
+ errors: errors,
334
+ touched: touched,
335
+ fieldRules: fieldRules,
336
+ getFieldRules: getFieldRules,
337
+ setFieldValue: setFieldValue,
338
+ setFieldError: setFieldError,
339
+ setFieldsValue: setFieldsValue,
340
+ getFieldValue: getFieldValue,
341
+ getFieldsValue: getFieldsValue,
342
+ validateField: validateField,
343
+ validateFields: validateFields,
344
+ registerField: registerField,
345
+ unregisterField: unregisterField,
346
+ handleSubmit: handleSubmit,
347
+ handleReset: handleReset,
348
+ resetFields: resetFields,
349
+ formInstance: formInstance,
350
+ coreContextShape: coreContextShape
351
+ };
352
+ };
353
+ var _default = exports["default"] = useFormCore;
354
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJfaG9va3MiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsImdldE5lc3RlZFZhbHVlIiwib2JqIiwicGF0aCIsImtleXMiLCJzcGxpdCIsImN1cnJlbnQiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImtleSIsInVuZGVmaW5lZCIsIl90eXBlb2YyIiwiZXJyIiwic2V0TmVzdGVkVmFsdWUiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmaW5lUHJvcGVydHkyIiwicmVzdWx0IiwiaSIsIm5leHRLZXkiLCJpc05leHRBcnJheSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyZXNvbHZlVmFsdWUiLCJ2YWx1ZXMiLCJpbmNsdWRlcyIsInVzZUZvcm1Db3JlIiwiZXhwb3J0cyIsImNvbmZpZyIsImFyZ3VtZW50cyIsIl9jb25maWckaW5pdGlhbFZhbHVlcyIsImluaXRpYWxWYWx1ZXMiLCJvbkZpbmlzaCIsIm9uRmluaXNoRmFpbGVkIiwib25WYWx1ZXNDaGFuZ2UiLCJvblJlc2V0IiwiX2NvbmZpZyRzaXplIiwic2l6ZSIsIl9jb25maWckbGFiZWxBbGlnbiIsImxhYmVsQWxpZ24iLCJfY29uZmlnJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfY29uZmlnJGNvbG9uIiwiY29sb24iLCJfY29uZmlnJHJlcXVpcmVkTWFyayIsInJlcXVpcmVkTWFyayIsIl9jb25maWckdmFsaWRhdGVUcmlnZyIsInZhbGlkYXRlVHJpZ2dlciIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNldFZhbHVlcyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZXJyb3JzIiwic2V0RXJyb3JzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ0b3VjaGVkIiwic2V0VG91Y2hlZCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiZmllbGRSdWxlcyIsInNldEZpZWxkUnVsZXMiLCJzZXRGaWVsZFZhbHVlIiwidXNlTWVtb2l6ZWRGbiIsInByZXYiLCJuZXdWYWx1ZXMiLCJuZXdFcnJvcnMiLCJzZXRGaWVsZEVycm9yIiwiZXJyb3IiLCJyZWdpc3RlckZpZWxkIiwicnVsZXMiLCJnZXRGaWVsZFJ1bGVzIiwidW5yZWdpc3RlckZpZWxkIiwibmV3UnVsZXMiLCJ2YWxpZGF0ZUZpZWxkIiwicHJvdmlkZWRWYWx1ZSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJydWxlIiwicmVxdWlyZWQiLCJtZXNzYWdlIiwiY29uY2F0IiwibWluIiwibWF4IiwicGF0dGVybiIsInZhbGlkYXRvciIsIkVycm9yIiwidmFsaWRhdGVGaWVsZHMiLCJmaWVsZHNSdWxlc1RvVmFsaWRhdGUiLCJpc1ZhbGlkIiwiZm9yRWFjaCIsImhhbmRsZVN1Ym1pdEludGVybmFsIiwiaGFzRXJyb3JzIiwiZmllbGROYW1lIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInN1Y2Nlc3MiLCJoYW5kbGVTdWJtaXQiLCJ1c2VFdmVudENhbGxiYWNrIiwicHJldmVudERlZmF1bHQiLCJyZXNldEZpZWxkcyIsImhhbmRsZVJlc2V0IiwiZ2V0RmllbGRWYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwic2V0RmllbGRzVmFsdWUiLCJ1cGRhdGVkVmFsdWVzIiwiZm9ybUluc3RhbmNlIiwidXNlTWVtbyIsInN1Ym1pdCIsImNvcmVDb250ZXh0U2hhcGUiLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFBZ0UsU0FBQUUsMkJBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLHlCQUFBQyxNQUFBLElBQUFILENBQUEsQ0FBQUcsTUFBQSxDQUFBQyxRQUFBLEtBQUFKLENBQUEscUJBQUFFLENBQUEsUUFBQUcsS0FBQSxDQUFBQyxPQUFBLENBQUFOLENBQUEsTUFBQUUsQ0FBQSxHQUFBSywyQkFBQSxDQUFBUCxDQUFBLE1BQUFDLENBQUEsSUFBQUQsQ0FBQSx1QkFBQUEsQ0FBQSxDQUFBUSxNQUFBLElBQUFOLENBQUEsS0FBQUYsQ0FBQSxHQUFBRSxDQUFBLE9BQUFPLEVBQUEsTUFBQUMsQ0FBQSxZQUFBQSxFQUFBLGVBQUFDLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFBLEVBQUEsV0FBQUgsRUFBQSxJQUFBVCxDQUFBLENBQUFRLE1BQUEsS0FBQUssSUFBQSxXQUFBQSxJQUFBLE1BQUFDLEtBQUEsRUFBQWQsQ0FBQSxDQUFBUyxFQUFBLFVBQUFSLENBQUEsV0FBQUEsRUFBQUQsQ0FBQSxVQUFBQSxDQUFBLEtBQUFlLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU0sU0FBQSxpSkFBQUMsQ0FBQSxFQUFBQyxDQUFBLE9BQUFDLENBQUEsZ0JBQUFSLENBQUEsV0FBQUEsRUFBQSxJQUFBVCxDQUFBLEdBQUFBLENBQUEsQ0FBQWtCLElBQUEsQ0FBQXBCLENBQUEsTUFBQVksQ0FBQSxXQUFBQSxFQUFBLFFBQUFaLENBQUEsR0FBQUUsQ0FBQSxDQUFBbUIsSUFBQSxXQUFBSCxDQUFBLEdBQUFsQixDQUFBLENBQUFhLElBQUEsRUFBQWIsQ0FBQSxLQUFBQyxDQUFBLFdBQUFBLEVBQUFELENBQUEs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Q1pJLFdBQVcsRUFBWEEsV0FBVztJQUNYRCxXQUFXLEVBQVhBLFdBQVc7SUFDWE0sWUFBWSxFQUFaQSxZQUFZO0lBQ1pHLGdCQUFnQixFQUFoQkE7RUM1RUEsQ0Q2RUQ7QUFDSCxDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUFBdEYsT0FBQSxjQUVhRCxXQUFXIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUV2ZW50Q2FsbGJhY2ssIHVzZU1lbW9pemVkRm4gfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTmVzdGVkIHBhdGggaGVscGVycyAoZG90LW5vdGF0aW9uIHN1cHBvcnQsIGUuZy4gXCJpdGVtcy4wLnRpdGxlXCIpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGdldE5lc3RlZFZhbHVlKG9iaiwgcGF0aCkge1xuICAgIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgbGV0IGN1cnJlbnQgPSBvYmo7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICBpZiAoY3VycmVudCA9PT0gbnVsbCB8fCBjdXJyZW50ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGN1cnJlbnQgIT09ICdvYmplY3QnKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG59XG5mdW5jdGlvbiBzZXROZXN0ZWRWYWx1ZShvYmosIHBhdGgsIHZhbHVlKSB7XG4gICAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDEpXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9iaiksIHsgW3BhdGhdOiB2YWx1ZSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCBvYmopO1xuICAgIGxldCBjdXJyZW50ID0gcmVzdWx0O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgY29uc3QgbmV4dEtleSA9IGtleXNbaSArIDFdO1xuICAgICAgICBjb25zdCBpc05leHRBcnJheSA9IC9eXFxkKyQvLnRlc3QobmV4dEtleSk7XG4gICAgICAgIGlmIChjdXJyZW50W2tleV0gPT09IHVuZGVmaW5lZCB8fCBjdXJyZW50W2tleV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIGN1cnJlbnRba2V5XSA9IGlzTmV4dEFycmF5ID8gW10gOiB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50W2tleV0pKSB7XG4gICAgICAgICAgICBjdXJyZW50W2tleV0gPSBbLi4uY3VycmVudFtrZXldXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRba2V5XSA9IE9iamVjdC5hc3NpZ24oe30sIGN1cnJlbnRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgICB9XG4gICAgY3VycmVudFtrZXlzW2tleXMubGVuZ3RoIC0gMV1dID0gdmFsdWU7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIHJlc29sdmVWYWx1ZSh2YWx1ZXMsIG5hbWUpIHtcbiAgICByZXR1cm4gbmFtZS5pbmNsdWRlcygnLicpID8gZ2V0TmVzdGVkVmFsdWUodmFsdWVzLCBuYW1lKSA6IHZhbHVlc1tuYW1lXTtcbn1cbmV4cG9ydCBjb25zdCB1c2VGb3JtQ29yZSA9IChjb25maWcgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHsgaW5pdGlhbFZhbHVlcyA9IHt9LCBvbkZpbmlzaCwgb25GaW5pc2hGYWlsZWQsIG9uVmFsdWVzQ2hhbmdlLCBvblJlc2V0LCBzaXplID0gJ21pZGRsZScsIGxhYmVsQWxpZ24gPSAnbGVmdCcsIGRpc2FibGVkID0gZmFsc2UsIGNvbG9uID0gdHJ1ZSwgcmVxdWlyZWRNYXJrID0gdHJ1ZSwgdmFsaWRhdGVUcmlnZ2VyID0gJ29uQ2hhbmdlJywgfSA9IGNvbmZpZztcbiAgICBjb25zdCBbdmFsdWVzLCBzZXRWYWx1ZXNdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlcyk7XG4gICAgY29uc3QgW2Vycm9ycywgc2V0RXJyb3JzXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbdG91Y2hlZCwgc2V0VG91Y2hlZF0gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpZWxkUnVsZXMsIHNldEZpZWxkUnVsZXNdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IHNldEZpZWxkVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuYW1lLCB2YWx1ZSkgPT4ge1xuICAgICAgICBzZXRWYWx1ZXMoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IG5hbWUuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgICAgID8gc2V0TmVzdGVkVmFsdWUocHJldiwgbmFtZSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IFtuYW1lXTogdmFsdWUgfSk7XG4gICAgICAgICAgICBvblZhbHVlc0NoYW5nZSA9PT0gbnVsbCB8fCBvblZhbHVlc0NoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25WYWx1ZXNDaGFuZ2UoeyBbbmFtZV06IHZhbHVlIH0sIG5ld1ZhbHVlcyk7XG4gICAgICAgICAgICByZXR1cm4gbmV3VmFsdWVzO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSAnJyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZXRFcnJvcnMoKHByZXYpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZbbmFtZV0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdFcnJvcnNbbmFtZV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Vycm9ycztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRFcnJvciA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIGVycm9yKSA9PiB7XG4gICAgICAgIHNldEVycm9ycygocHJldikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2W25hbWVdKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCBwcmV2KTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbmV3RXJyb3JzW25hbWVdO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdFcnJvcnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IGVycm9yIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCByZWdpc3RlckZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgcnVsZXMpID0+IHtcbiAgICAgICAgc2V0RmllbGRSdWxlcygocHJldikgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIHsgW25hbWVdOiBydWxlcyB9KSkpO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEZpZWxkUnVsZXMgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIHJldHVybiBmaWVsZFJ1bGVzW25hbWVdO1xuICAgIH0pO1xuICAgIGNvbnN0IHVucmVnaXN0ZXJGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgc2V0RmllbGRSdWxlcygocHJldikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3UnVsZXMgPSBPYmplY3QuYXNzaWduKHt9LCBwcmV2KTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdSdWxlc1tuYW1lXTtcbiAgICAgICAgICAgIHJldHVybiBuZXdSdWxlcztcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHJ1bGVzID0gW10sIHByb3ZpZGVkVmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwcm92aWRlZFZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm92aWRlZFZhbHVlIDogcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSk7XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuICAgICAgICAgICAgaWYgKHJ1bGUucmVxdWlyZWQgJiZcbiAgICAgICAgICAgICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgO1xuICAgICAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLm1pbiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA8IHJ1bGUubWluKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhdCBsZWFzdCAke3J1bGUubWlufSBjaGFyYWN0ZXJzYDtcbiAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS5tYXggJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiBydWxlLm1heCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgbm8gbW9yZSB0aGFuICR7cnVsZS5tYXh9IGNoYXJhY3RlcnNgO1xuICAgICAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLnBhdHRlcm4gJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhcnVsZS5wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gZm9ybWF0IGlzIGludmFsaWRgO1xuICAgICAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLnZhbGlkYXRvciAmJiB0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBydWxlLnZhbGlkYXRvcih2YWx1ZSwgdmFsdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSAmJiB0eXBlb2YgcmVzdWx0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RmllbGRFcnJvcihuYW1lLCB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/IHJlc3VsdCA6ICdWYWxpZGF0aW9uIGZhaWxlZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnVmFsaWRhdGlvbiBlcnJvcic7XG4gICAgICAgICAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yc1tuYW1lXSkge1xuICAgICAgICAgICAgc2V0RmllbGRFcnJvcihuYW1lLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWxpZGF0ZUZpZWxkcyA9IHVzZU1lbW9pemVkRm4oKGZpZWxkc1J1bGVzVG9WYWxpZGF0ZSA9IGZpZWxkUnVsZXMpID0+IHtcbiAgICAgICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICBPYmplY3Qua2V5cyhmaWVsZHNSdWxlc1RvVmFsaWRhdGUpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzID0gZmllbGRzUnVsZXNUb1ZhbGlkYXRlW25hbWVdO1xuICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUZpZWxkKG5hbWUsIHJ1bGVzKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdEludGVybmFsID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGxldCBoYXNFcnJvcnMgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbmV3RXJyb3JzID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKGZpZWxkUnVsZXMpLmZvckVhY2goKGZpZWxkTmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZXMgPSBmaWVsZFJ1bGVzW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc29sdmVWYWx1ZSh2YWx1ZXMsIGZpZWxkTmFtZSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocnVsZS5yZXF1aXJlZCAmJlxuICAgICAgICAgICAgICAgICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID0gcnVsZS5tZXNzYWdlIHx8IGAke2ZpZWxkTmFtZX0gaXMgcmVxdWlyZWRgO1xuICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUubWluICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoIDwgcnVsZS5taW4pIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RXJyb3JzW2ZpZWxkTmFtZV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS5tZXNzYWdlIHx8IGAke2ZpZWxkTmFtZX0gbXVzdCBiZSBhdCBsZWFzdCAke3J1bGUubWlufSBjaGFyYWN0ZXJzYDtcbiAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydWxlLm1heCAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IHJ1bGUubWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUubWVzc2FnZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2ZpZWxkTmFtZX0gbXVzdCBiZSBubyBtb3JlIHRoYW4gJHtydWxlLm1heH0gY2hhcmFjdGVyc2A7XG4gICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZS5wYXR0ZXJuICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAgICAgIXJ1bGUucGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9IHJ1bGUubWVzc2FnZSB8fCBgJHtmaWVsZE5hbWV9IGZvcm1hdCBpcyBpbnZhbGlkYDtcbiAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydWxlLnZhbGlkYXRvciAmJiB0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJ1bGUudmFsaWRhdG9yKHZhbHVlLCB2YWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSAmJiB0eXBlb2YgcmVzdWx0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiAnVmFsaWRhdGlvbiBmYWlsZWQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3RXJyb3JzW2ZpZWxkTmFtZV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnVmFsaWRhdGlvbiBlcnJvcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRFcnJvcnMobmV3RXJyb3JzKTtcbiAgICAgICAgaWYgKCFoYXNFcnJvcnMpIHtcbiAgICAgICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaCh2YWx1ZXMpO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgdmFsdWVzIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoeyB2YWx1ZXMsIGVycm9yczogbmV3RXJyb3JzIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yczogbmV3RXJyb3JzIH07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gaGFuZGxlU3VibWl0SW50ZXJuYWwoKTtcbiAgICB9KTtcbiAgICBjb25zdCByZXNldEZpZWxkcyA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBzZXRWYWx1ZXMoaW5pdGlhbFZhbHVlcyk7XG4gICAgICAgIHNldEVycm9ycyh7fSk7XG4gICAgICAgIHNldFRvdWNoZWQoe30pO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVSZXNldCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJlc2V0RmllbGRzKCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVWYWx1ZSh2YWx1ZXMsIG5hbWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEZpZWxkc1ZhbHVlID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRzVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuZXdWYWx1ZXMpID0+IHtcbiAgICAgICAgc2V0VmFsdWVzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkVmFsdWVzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgbmV3VmFsdWVzKTtcbiAgICAgICAgICAgIG9uVmFsdWVzQ2hhbmdlID09PSBudWxsIHx8IG9uVmFsdWVzQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblZhbHVlc0NoYW5nZShuZXdWYWx1ZXMsIHVwZGF0ZWRWYWx1ZXMpO1xuICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRWYWx1ZXM7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgc3VibWl0OiBoYW5kbGVTdWJtaXRJbnRlcm5hbCxcbiAgICAgICAgcmVzZXRGaWVsZHMsXG4gICAgICAgIGdldEZpZWxkVmFsdWUsXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHMsXG4gICAgfSksIFtcbiAgICAgICAgaGFuZGxlU3VibWl0SW50ZXJuYWwsXG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBnZXRGaWVsZFZhbHVlLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzLFxuICAgIF0pO1xuICAgIGNvbnN0IGNvcmVDb250ZXh0U2hhcGUgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB0b3VjaGVkLFxuICAgICAgICBmb3JtSW5zdGFuY2UsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3IsXG4gICAgICAgIHZhbGlkYXRlRmllbGQsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIGNvbG9uLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICB9KSwgW1xuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgdG91Y2hlZCxcbiAgICAgICAgZm9ybUluc3RhbmNlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkLFxuICAgICAgICByZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBjb2xvbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHRvdWNoZWQsXG4gICAgICAgIGZpZWxkUnVsZXMsXG4gICAgICAgIGdldEZpZWxkUnVsZXMsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3IsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBnZXRGaWVsZFZhbHVlLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGVGaWVsZCxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHMsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICBoYW5kbGVSZXNldCxcbiAgICAgICAgcmVzZXRGaWVsZHMsXG4gICAgICAgIGZvcm1JbnN0YW5jZSxcbiAgICAgICAgY29yZUNvbnRleHRTaGFwZSxcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IHVzZUZvcm1Db3JlOyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -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,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ useFormItem: true,
8
+ useForm: true,
9
+ useFormCore: true
10
+ };
11
+ Object.defineProperty(exports, "useForm", {
12
+ enumerable: true,
13
+ get: function get() {
14
+ return _useForm.useForm;
15
+ }
16
+ });
17
+ Object.defineProperty(exports, "useFormCore", {
18
+ enumerable: true,
19
+ get: function get() {
20
+ return _useFormCore.useFormCore;
21
+ }
22
+ });
23
+ Object.defineProperty(exports, "useFormItem", {
24
+ enumerable: true,
25
+ get: function get() {
26
+ return _useFormItem.useFormItem;
27
+ }
28
+ });
29
+ var _useFormItem = require("./useFormItem");
30
+ var _useForm = require("./hooks/useForm");
31
+ var _useFormCore = require("./hooks/useFormCore");
32
+ var _interface = require("./interface");
33
+ Object.keys(_interface).forEach(function (key) {
34
+ if (key === "default" || key === "__esModule") return;
35
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
36
+ if (key in exports && exports[key] === _interface[key]) return;
37
+ Object.defineProperty(exports, key, {
38
+ enumerable: true,
39
+ get: function get() {
40
+ return _interface[key];
41
+ }
42
+ });
43
+ });
44
+ var _constants = require("./constants");
45
+ Object.keys(_constants).forEach(function (key) {
46
+ if (key === "default" || key === "__esModule") return;
47
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
48
+ if (key in exports && exports[key] === _constants[key]) return;
49
+ Object.defineProperty(exports, key, {
50
+ enumerable: true,
51
+ get: function get() {
52
+ return _constants[key];
53
+ }
54
+ });
55
+ });
56
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOlsiX3VzZUZvcm1JdGVtIiwicmVxdWlyZSIsIl91c2VGb3JtIiwiX3VzZUZvcm1Db3JlIiwiX2ludGVyZmFjZSIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiX2V4cG9ydE5hbWVzIiwiZXhwb3J0cyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIl9jb25zdGFudHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxZQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFBQUksTUFBQSxDQUFBQyxJQUFBLENBQUFGLFVBQUEsRUFBQUcsT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQUMsWUFBQSxFQUFBSixHQUFBO0VBQUEsSUFBQUEsR0FBQSxJQUFBSyxPQUFBLElBQUFBLE9BQUEsQ0FBQUwsR0FBQSxNQUFBSixVQUFBLENBQUFJLEdBQUE7RUFBQUgsTUFBQSxDQUFBUyxjQUFBLENBQUFELE9BQUEsRUFBQUwsR0FBQTtJQUFBTyxVQUFBO0lBQUFDLEdBQUEsV0FBQUEsSUFBQTtNQUFBLE9BQUFaLFVBQUEsQ0FBQUksR0FBQTtJQUFBO0VBQUE7QUFBQTtBQUNBLElBQUFTLFVBQUEsR0FBQWhCLE9BQUE7QUFBQUksTUFBQSxDQUFBQyxJQUFBLENBQUFXLFVBQUEsRUFBQVYsT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQUMsWUFBQSxFQUFBSixHQUFBO0VBQUEsSUFBQUEsR0FBQSxJQUFBSyxPQUFBLElBQUFBLE9BQUEsQ0FBQUwsR0FBQSxNQUFBUyxVQUFBLENBQUFULEdBQUE7RUFBQUgsTUFBQSxDQUFBUyxjQUFBLENBQUFELE9BQUEsRUFBQUwsR0FBQTtJQUFBTyxVQUFBO0lBQUFDLEdBQUEsV0FBQUEsSUFBQTtNQUFBLE9BQUFDLFVBQUEsQ0FBQVQsR0FBQTtJQUFBO0VBQUE7QUFBQSIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -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,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaW50ZXJmYWNlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIiwic291cmNlcyI6WyJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9pbnRlcmZhY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9OyJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -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;