@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.
- package/.claude/settings.local.json +2 -1
- package/AGENTS.md +7 -1
- package/es/components/Alert/Alert.js +5 -6
- package/es/components/Alert/style/Alert.css +1 -1
- package/es/components/Button/Button.js +29 -1
- package/es/components/Button/constants.d.ts +14 -1
- package/es/components/Button/constants.js +23 -3
- package/es/components/Button/interface.d.ts +9 -0
- package/es/components/Cell/Cell.d.ts +5 -0
- package/es/components/Cell/Cell.js +57 -0
- package/es/components/Cell/index.d.ts +4 -0
- package/es/components/Cell/index.js +5 -0
- package/es/components/Cell/interface.d.ts +12 -0
- package/es/components/{Form → Cell}/interface.js +1 -1
- package/es/components/Cell/style/Cell.css +1 -0
- package/es/components/Cell/style/css.js +2 -0
- package/es/components/Cell/style/index.d.ts +1 -0
- package/es/components/Cell/style/index.js +2 -0
- package/es/components/Dialog/Dialog.d.ts +4 -0
- package/es/components/Dialog/Dialog.js +383 -0
- package/es/components/Dialog/constants.d.ts +60 -0
- package/es/components/Dialog/constants.js +57 -0
- package/es/components/Dialog/index.d.ts +4 -0
- package/es/components/Dialog/index.js +5 -0
- package/es/components/{Modal → Dialog}/interface.d.ts +7 -7
- package/es/components/Dialog/interface.js +2 -0
- package/es/components/Dialog/style/Dialog.css +1 -0
- package/es/components/Dialog/style/css.js +2 -0
- package/es/components/Dialog/style/index.d.ts +1 -0
- package/es/components/Dialog/style/index.js +2 -0
- package/es/components/Divider/Divider.js +15 -18
- package/es/components/Divider/constants.d.ts +36 -0
- package/es/components/Divider/constants.js +41 -0
- package/es/components/Divider/interface.d.ts +2 -3
- package/es/components/Drawer/Drawer.js +13 -129
- package/es/components/Drawer/constants.d.ts +8 -5
- package/es/components/Drawer/constants.js +9 -6
- package/es/components/Drawer/hooks/index.d.ts +4 -0
- package/es/components/Drawer/hooks/index.js +5 -0
- package/es/components/Drawer/hooks/useBodyScrollLock.d.ts +1 -0
- package/es/components/Drawer/hooks/useBodyScrollLock.js +29 -0
- package/es/components/Drawer/hooks/useDialogFocus.d.ts +2 -0
- package/es/components/Drawer/hooks/useDialogFocus.js +22 -0
- package/es/components/Drawer/hooks/useDrawerTransition.d.ts +4 -0
- package/es/components/Drawer/hooks/useDrawerTransition.js +57 -0
- package/es/components/Drawer/hooks/useEscapeClose.d.ts +1 -0
- package/es/components/Drawer/hooks/useEscapeClose.js +16 -0
- package/es/components/ProForm/ProForm.js +93 -116
- package/es/components/ProForm/ProFormDependency.js +2 -4
- package/es/components/ProForm/ProFormItem.d.ts +4 -0
- package/es/components/ProForm/ProFormItem.js +213 -0
- package/es/components/ProForm/ProFormList.js +5 -6
- package/es/components/ProForm/Submitter.js +2 -2
- package/es/components/ProForm/context.d.ts +10 -2
- package/es/components/ProForm/context.js +17 -14
- package/es/components/{Form → ProForm/core}/constants.d.ts +1 -1
- package/es/components/ProForm/core/constants.js +18 -0
- package/es/components/ProForm/core/hooks/useForm.js +541 -0
- package/es/components/ProForm/core/hooks/useFormCore.js +347 -0
- package/es/components/ProForm/core/index.d.ts +6 -0
- package/es/components/ProForm/core/index.js +6 -0
- package/es/components/{Form → ProForm/core}/interface.d.ts +21 -60
- package/es/components/ProForm/core/interface.js +2 -0
- package/es/components/ProForm/core/useFormItem.d.ts +20 -0
- package/es/components/ProForm/core/useFormItem.js +121 -0
- package/es/components/ProForm/fields/ProFormFieldSet.js +7 -6
- package/es/components/ProForm/fields/createProFormField.js +76 -151
- package/es/components/ProForm/index.d.ts +13 -6
- package/es/components/ProForm/index.js +21 -9
- package/es/components/ProForm/interface.d.ts +79 -44
- package/es/components/ProForm/layouts/DialogForm.d.ts +3 -0
- package/es/components/ProForm/layouts/DialogForm.js +74 -0
- package/es/components/ProForm/layouts/index.d.ts +1 -1
- package/es/components/ProForm/layouts/index.js +2 -2
- package/es/components/ProForm/style/ProForm.css +1 -1
- package/es/components/Select/Select.js +5 -5
- package/es/components/Select/SelectFieldShell.js +7 -7
- package/es/components/Select/SelectOptionContent.js +5 -5
- package/es/components/Select/constants.d.ts +37 -13
- package/es/components/Select/constants.js +36 -20
- package/es/components/Select/style/Select.css +1 -1
- package/es/components/Switch/Switch.js +7 -7
- package/es/components/Switch/constants.d.ts +23 -9
- package/es/components/Switch/constants.js +26 -11
- package/es/components/Switch/interface.d.ts +2 -2
- package/es/index.css +1 -1
- package/es/index.d.ts +7 -6
- package/es/index.js +4 -4
- package/lib/components/Alert/Alert.js +5 -6
- package/lib/components/Alert/style/Alert.css +1 -1
- package/lib/components/Button/Button.js +29 -1
- package/lib/components/Button/constants.d.ts +14 -1
- package/lib/components/Button/constants.js +23 -3
- package/lib/components/Button/interface.d.ts +9 -0
- package/lib/components/Cell/Cell.d.ts +5 -0
- package/lib/components/Cell/Cell.js +66 -0
- package/lib/components/Cell/index.d.ts +4 -0
- package/lib/components/Cell/index.js +33 -0
- package/lib/components/Cell/interface.d.ts +12 -0
- package/lib/components/{Form → Cell}/interface.js +1 -1
- package/lib/components/Cell/style/Cell.css +1 -0
- package/lib/components/Cell/style/css.js +4 -0
- package/lib/components/Cell/style/index.d.ts +1 -0
- package/lib/components/Cell/style/index.js +4 -0
- package/lib/components/Dialog/Dialog.d.ts +4 -0
- package/lib/components/Dialog/Dialog.js +390 -0
- package/lib/components/Dialog/constants.d.ts +60 -0
- package/lib/components/Dialog/constants.js +64 -0
- package/lib/components/Dialog/index.d.ts +4 -0
- package/lib/components/Dialog/index.js +33 -0
- package/lib/components/{Modal → Dialog}/interface.d.ts +7 -7
- package/lib/components/Dialog/interface.js +6 -0
- package/lib/components/Dialog/style/Dialog.css +1 -0
- package/lib/components/Dialog/style/css.js +4 -0
- package/lib/components/Dialog/style/index.d.ts +1 -0
- package/lib/components/Dialog/style/index.js +4 -0
- package/lib/components/Divider/Divider.js +16 -18
- package/lib/components/Divider/constants.d.ts +36 -0
- package/lib/components/Divider/constants.js +48 -0
- package/lib/components/Divider/interface.d.ts +2 -3
- package/lib/components/Drawer/Drawer.js +14 -130
- package/lib/components/Drawer/constants.d.ts +8 -5
- package/lib/components/Drawer/constants.js +10 -7
- package/lib/components/Drawer/hooks/index.d.ts +4 -0
- package/lib/components/Drawer/hooks/index.js +34 -0
- package/lib/components/Drawer/hooks/useBodyScrollLock.d.ts +1 -0
- package/lib/components/Drawer/hooks/useBodyScrollLock.js +35 -0
- package/lib/components/Drawer/hooks/useDialogFocus.d.ts +2 -0
- package/lib/components/Drawer/hooks/useDialogFocus.js +28 -0
- package/lib/components/Drawer/hooks/useDrawerTransition.d.ts +4 -0
- package/lib/components/Drawer/hooks/useDrawerTransition.js +64 -0
- package/lib/components/Drawer/hooks/useEscapeClose.d.ts +1 -0
- package/lib/components/Drawer/hooks/useEscapeClose.js +22 -0
- package/lib/components/ProForm/ProForm.js +94 -117
- package/lib/components/ProForm/ProFormDependency.js +2 -4
- package/lib/components/ProForm/ProFormItem.d.ts +4 -0
- package/lib/components/ProForm/ProFormItem.js +222 -0
- package/lib/components/ProForm/ProFormList.js +4 -5
- package/lib/components/ProForm/Submitter.js +2 -2
- package/lib/components/ProForm/context.d.ts +10 -2
- package/lib/components/ProForm/context.js +18 -15
- package/lib/components/{Form → ProForm/core}/constants.d.ts +1 -1
- package/lib/components/ProForm/core/constants.js +24 -0
- package/lib/components/ProForm/core/hooks/useForm.js +551 -0
- package/lib/components/ProForm/core/hooks/useFormCore.js +354 -0
- package/lib/components/ProForm/core/index.d.ts +6 -0
- package/lib/components/ProForm/core/index.js +56 -0
- package/lib/components/{Form → ProForm/core}/interface.d.ts +21 -60
- package/lib/components/ProForm/core/interface.js +6 -0
- package/lib/components/ProForm/core/useFormItem.d.ts +20 -0
- package/lib/components/ProForm/core/useFormItem.js +131 -0
- package/lib/components/ProForm/fields/ProFormFieldSet.js +7 -6
- package/lib/components/ProForm/fields/createProFormField.js +76 -151
- package/lib/components/ProForm/index.d.ts +13 -6
- package/lib/components/ProForm/index.js +46 -33
- package/lib/components/ProForm/interface.d.ts +79 -44
- package/lib/components/ProForm/layouts/DialogForm.d.ts +3 -0
- package/lib/components/ProForm/layouts/DialogForm.js +81 -0
- package/lib/components/ProForm/layouts/index.d.ts +1 -1
- package/lib/components/ProForm/layouts/index.js +6 -6
- package/lib/components/ProForm/style/ProForm.css +1 -1
- package/lib/components/Select/Select.js +4 -4
- package/lib/components/Select/SelectFieldShell.js +6 -6
- package/lib/components/Select/SelectOptionContent.js +4 -4
- package/lib/components/Select/constants.d.ts +37 -13
- package/lib/components/Select/constants.js +37 -21
- package/lib/components/Select/style/Select.css +1 -1
- package/lib/components/Switch/Switch.js +6 -6
- package/lib/components/Switch/constants.d.ts +23 -9
- package/lib/components/Switch/constants.js +27 -12
- package/lib/components/Switch/interface.d.ts +2 -2
- package/lib/index.css +1 -1
- package/lib/index.d.ts +7 -6
- package/lib/index.js +69 -63
- package/package.json +11 -6
- package/es/components/Form/Form.d.ts +0 -4
- package/es/components/Form/Form.js +0 -73
- package/es/components/Form/FormItem.d.ts +0 -4
- package/es/components/Form/FormItem.js +0 -183
- package/es/components/Form/constants.js +0 -19
- package/es/components/Form/context.d.ts +0 -5
- package/es/components/Form/context.js +0 -19
- package/es/components/Form/hooks/useForm.js +0 -541
- package/es/components/Form/hooks/useFormCore.js +0 -348
- package/es/components/Form/index.d.ts +0 -10
- package/es/components/Form/index.js +0 -17
- package/es/components/Form/style/Form.css +0 -1
- package/es/components/Form/style/css.js +0 -2
- package/es/components/Form/style/index.d.ts +0 -1
- package/es/components/Form/style/index.js +0 -2
- package/es/components/Modal/Modal.d.ts +0 -4
- package/es/components/Modal/Modal.js +0 -383
- package/es/components/Modal/constants.d.ts +0 -58
- package/es/components/Modal/constants.js +0 -55
- package/es/components/Modal/index.d.ts +0 -4
- package/es/components/Modal/index.js +0 -5
- package/es/components/Modal/interface.js +0 -2
- package/es/components/Modal/style/Modal.css +0 -1
- package/es/components/Modal/style/css.js +0 -2
- package/es/components/Modal/style/index.d.ts +0 -1
- package/es/components/Modal/style/index.js +0 -2
- package/es/components/ProForm/layouts/ModalForm.d.ts +0 -3
- package/es/components/ProForm/layouts/ModalForm.js +0 -74
- package/lib/components/Form/Form.d.ts +0 -4
- package/lib/components/Form/Form.js +0 -80
- package/lib/components/Form/FormItem.d.ts +0 -4
- package/lib/components/Form/FormItem.js +0 -193
- package/lib/components/Form/constants.js +0 -25
- package/lib/components/Form/context.d.ts +0 -5
- package/lib/components/Form/context.js +0 -25
- package/lib/components/Form/hooks/useForm.js +0 -551
- package/lib/components/Form/hooks/useFormCore.js +0 -355
- package/lib/components/Form/index.d.ts +0 -10
- package/lib/components/Form/index.js +0 -83
- package/lib/components/Form/style/Form.css +0 -1
- package/lib/components/Form/style/css.js +0 -4
- package/lib/components/Form/style/index.d.ts +0 -1
- package/lib/components/Form/style/index.js +0 -4
- package/lib/components/Modal/Modal.d.ts +0 -4
- package/lib/components/Modal/Modal.js +0 -390
- package/lib/components/Modal/constants.d.ts +0 -58
- package/lib/components/Modal/constants.js +0 -62
- package/lib/components/Modal/index.d.ts +0 -4
- package/lib/components/Modal/index.js +0 -33
- package/lib/components/Modal/interface.js +0 -6
- package/lib/components/Modal/style/Modal.css +0 -1
- package/lib/components/Modal/style/css.js +0 -4
- package/lib/components/Modal/style/index.d.ts +0 -1
- package/lib/components/Modal/style/index.js +0 -4
- package/lib/components/ProForm/layouts/ModalForm.d.ts +0 -3
- package/lib/components/ProForm/layouts/ModalForm.js +0 -81
- /package/es/components/{Form → ProForm/core}/hooks/useForm.d.ts +0 -0
- /package/es/components/{Form → ProForm/core}/hooks/useFormCore.d.ts +0 -0
- /package/lib/components/{Form → ProForm/core}/hooks/useForm.d.ts +0 -0
- /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,
|
|
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
|
|
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
|
-
|
|
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;
|