@jcoreio/zod-forms 2.0.0 → 2.1.1
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/ConditionalValidator.d.mts +25 -0
- package/ConditionalValidator.d.mts.map +1 -0
- package/ConditionalValidator.d.ts +12 -12
- package/ConditionalValidator.d.ts.map +1 -1
- package/FieldPath.d.mts +24 -0
- package/FieldPath.d.mts.map +1 -0
- package/FieldPath.d.ts +13 -15
- package/FieldPath.d.ts.map +1 -1
- package/FormAction.d.mts +15 -0
- package/FormAction.d.mts.map +1 -0
- package/FormAction.d.ts +12 -12
- package/FormAction.d.ts.map +1 -1
- package/FormContext.d.mts +40 -0
- package/FormContext.d.mts.map +1 -0
- package/FormContext.d.ts +34 -34
- package/FormContext.d.ts.map +1 -1
- package/FormState.d.mts +34 -0
- package/FormState.d.mts.map +1 -0
- package/FormState.d.ts +24 -25
- package/FormState.d.ts.map +1 -1
- package/FormState.js.map +1 -1
- package/FormState.mjs.map +1 -1
- package/FormStateContext.d.mts +8 -0
- package/FormStateContext.d.mts.map +1 -0
- package/FormStateContext.d.ts +2 -2
- package/FormStateContext.d.ts.map +1 -1
- package/actions/addHandlers.d.mts +15 -0
- package/actions/addHandlers.d.mts.map +1 -0
- package/actions/addHandlers.d.ts +8 -8
- package/actions/addHandlers.d.ts.map +1 -1
- package/actions/arrayActions.d.mts +130 -0
- package/actions/arrayActions.d.mts.map +1 -0
- package/actions/arrayActions.d.ts +77 -77
- package/actions/arrayActions.d.ts.map +1 -1
- package/actions/initialize.d.mts +14 -0
- package/actions/initialize.d.mts.map +1 -0
- package/actions/initialize.d.ts +8 -8
- package/actions/initialize.d.ts.map +1 -1
- package/actions/removeHandlers.d.mts +10 -0
- package/actions/removeHandlers.d.mts.map +1 -0
- package/actions/removeHandlers.d.ts +5 -5
- package/actions/removeHandlers.d.ts.map +1 -1
- package/actions/setMeta.d.mts +9 -0
- package/actions/setMeta.d.mts.map +1 -0
- package/actions/setMeta.d.ts +5 -5
- package/actions/setMeta.d.ts.map +1 -1
- package/actions/setMounted.d.mts +6 -0
- package/actions/setMounted.d.mts.map +1 -0
- package/actions/setMounted.d.ts +2 -2
- package/actions/setMounted.d.ts.map +1 -1
- package/actions/setParsedValue.d.mts +12 -0
- package/actions/setParsedValue.d.mts.map +1 -0
- package/actions/setParsedValue.d.ts +6 -6
- package/actions/setParsedValue.d.ts.map +1 -1
- package/actions/setSubmitStatus.d.mts +14 -0
- package/actions/setSubmitStatus.d.mts.map +1 -0
- package/actions/setSubmitStatus.d.ts +9 -9
- package/actions/setSubmitStatus.d.ts.map +1 -1
- package/actions/setValue.d.mts +10 -0
- package/actions/setValue.d.mts.map +1 -0
- package/actions/setValue.d.ts +5 -5
- package/actions/setValue.d.ts.map +1 -1
- package/actions/submit.d.mts +5 -0
- package/actions/submit.d.mts.map +1 -0
- package/actions/submit.d.ts +1 -1
- package/actions/submit.d.ts.map +1 -1
- package/actions/submitSucceeded.d.mts +5 -0
- package/actions/submitSucceeded.d.mts.map +1 -0
- package/actions/submitSucceeded.d.ts +1 -1
- package/actions/submitSucceeded.d.ts.map +1 -1
- package/createFormMiddleware.d.mts +6 -0
- package/createFormMiddleware.d.mts.map +1 -0
- package/createFormMiddleware.d.ts +2 -2
- package/createFormMiddleware.d.ts.map +1 -1
- package/createFormProvider.d.mts +15 -0
- package/createFormProvider.d.mts.map +1 -0
- package/createFormProvider.d.ts +9 -7
- package/createFormProvider.d.ts.map +1 -1
- package/createFormReducer.d.mts +9 -0
- package/createFormReducer.d.mts.map +1 -0
- package/createFormReducer.d.ts +4 -4
- package/createFormReducer.d.ts.map +1 -1
- package/createSelectFieldErrorMap.d.mts +32 -0
- package/createSelectFieldErrorMap.d.mts.map +1 -0
- package/createSelectFieldErrorMap.d.ts +23 -23
- package/createSelectFieldErrorMap.d.ts.map +1 -1
- package/createSelectFormStatus.d.mts +133 -0
- package/createSelectFormStatus.d.mts.map +1 -0
- package/createSelectFormStatus.d.ts +101 -97
- package/createSelectFormStatus.d.ts.map +1 -1
- package/createSelectFormStatus.js +2 -2
- package/createSelectFormStatus.js.map +1 -1
- package/createSelectFormStatus.mjs +1 -1
- package/createSelectFormStatus.mjs.map +1 -1
- package/createSelectFormValues.d.mts +45 -0
- package/createSelectFormValues.d.mts.map +1 -0
- package/createSelectFormValues.d.ts +34 -34
- package/createSelectFormValues.d.ts.map +1 -1
- package/createZodForm.d.mts +42 -0
- package/createZodForm.d.mts.map +1 -0
- package/createZodForm.d.ts +36 -32
- package/createZodForm.d.ts.map +1 -1
- package/index.d.mts +15 -0
- package/index.d.mts.map +1 -0
- package/index.d.ts +14 -14
- package/index.d.ts.map +1 -1
- package/initFormState.d.mts +4 -0
- package/initFormState.d.mts.map +1 -0
- package/initFormState.d.ts +1 -1
- package/initFormState.d.ts.map +1 -1
- package/package.json +10 -7
- package/reducers/addHandlers.d.mts +24 -0
- package/reducers/addHandlers.d.mts.map +1 -0
- package/reducers/addHandlers.d.ts +20 -20
- package/reducers/addHandlers.d.ts.map +1 -1
- package/reducers/arrayInsert.d.mts +7 -0
- package/reducers/arrayInsert.d.mts.map +1 -0
- package/reducers/arrayInsert.d.ts +3 -3
- package/reducers/arrayInsert.d.ts.map +1 -1
- package/reducers/arrayInsertParsed.d.mts +7 -0
- package/reducers/arrayInsertParsed.d.mts.map +1 -0
- package/reducers/arrayInsertParsed.d.ts +3 -3
- package/reducers/arrayInsertParsed.d.ts.map +1 -1
- package/reducers/arrayMove.d.mts +8 -0
- package/reducers/arrayMove.d.mts.map +1 -0
- package/reducers/arrayMove.d.ts +3 -3
- package/reducers/arrayMove.d.ts.map +1 -1
- package/reducers/arrayPop.d.mts +7 -0
- package/reducers/arrayPop.d.mts.map +1 -0
- package/reducers/arrayPop.d.ts +3 -3
- package/reducers/arrayPop.d.ts.map +1 -1
- package/reducers/arrayPush.d.mts +7 -0
- package/reducers/arrayPush.d.mts.map +1 -0
- package/reducers/arrayPush.d.ts +3 -3
- package/reducers/arrayPush.d.ts.map +1 -1
- package/reducers/arrayPushParsed.d.mts +7 -0
- package/reducers/arrayPushParsed.d.mts.map +1 -0
- package/reducers/arrayPushParsed.d.ts +3 -3
- package/reducers/arrayPushParsed.d.ts.map +1 -1
- package/reducers/arrayRemove.d.mts +7 -0
- package/reducers/arrayRemove.d.mts.map +1 -0
- package/reducers/arrayRemove.d.ts +3 -3
- package/reducers/arrayRemove.d.ts.map +1 -1
- package/reducers/arrayRemoveAll.d.mts +7 -0
- package/reducers/arrayRemoveAll.d.mts.map +1 -0
- package/reducers/arrayRemoveAll.d.ts +3 -3
- package/reducers/arrayRemoveAll.d.ts.map +1 -1
- package/reducers/arrayShift.d.mts +7 -0
- package/reducers/arrayShift.d.mts.map +1 -0
- package/reducers/arrayShift.d.ts +3 -3
- package/reducers/arrayShift.d.ts.map +1 -1
- package/reducers/arraySplice.d.mts +7 -0
- package/reducers/arraySplice.d.mts.map +1 -0
- package/reducers/arraySplice.d.ts +3 -3
- package/reducers/arraySplice.d.ts.map +1 -1
- package/reducers/arraySpliceParsed.d.mts +7 -0
- package/reducers/arraySpliceParsed.d.mts.map +1 -0
- package/reducers/arraySpliceParsed.d.ts +3 -3
- package/reducers/arraySpliceParsed.d.ts.map +1 -1
- package/reducers/arraySwap.d.mts +8 -0
- package/reducers/arraySwap.d.mts.map +1 -0
- package/reducers/arraySwap.d.ts +3 -3
- package/reducers/arraySwap.d.ts.map +1 -1
- package/reducers/arrayUnshift.d.mts +7 -0
- package/reducers/arrayUnshift.d.mts.map +1 -0
- package/reducers/arrayUnshift.d.ts +3 -3
- package/reducers/arrayUnshift.d.ts.map +1 -1
- package/reducers/arrayUnshiftParsed.d.mts +7 -0
- package/reducers/arrayUnshiftParsed.d.mts.map +1 -0
- package/reducers/arrayUnshiftParsed.d.ts +3 -3
- package/reducers/arrayUnshiftParsed.d.ts.map +1 -1
- package/reducers/initialize.d.mts +49 -0
- package/reducers/initialize.d.mts.map +1 -0
- package/reducers/initialize.d.ts +44 -41
- package/reducers/initialize.d.ts.map +1 -1
- package/reducers/removeHandlers.d.mts +24 -0
- package/reducers/removeHandlers.d.mts.map +1 -0
- package/reducers/removeHandlers.d.ts +20 -20
- package/reducers/removeHandlers.d.ts.map +1 -1
- package/reducers/setMeta.d.mts +6 -0
- package/reducers/setMeta.d.mts.map +1 -0
- package/reducers/setMeta.d.ts +3 -3
- package/reducers/setMeta.d.ts.map +1 -1
- package/reducers/setParsedValue.d.mts +50 -0
- package/reducers/setParsedValue.d.mts.map +1 -0
- package/reducers/setParsedValue.d.ts +45 -42
- package/reducers/setParsedValue.d.ts.map +1 -1
- package/reducers/setSubmitStatus.d.mts +24 -0
- package/reducers/setSubmitStatus.d.mts.map +1 -0
- package/reducers/setSubmitStatus.d.ts +20 -20
- package/reducers/setSubmitStatus.d.ts.map +1 -1
- package/reducers/setValue.d.mts +29 -0
- package/reducers/setValue.d.mts.map +1 -0
- package/reducers/setValue.d.ts +25 -23
- package/reducers/setValue.d.ts.map +1 -1
- package/reducers/submitSucceeded.d.mts +23 -0
- package/reducers/submitSucceeded.d.mts.map +1 -0
- package/reducers/submitSucceeded.d.ts +19 -19
- package/reducers/submitSucceeded.d.ts.map +1 -1
- package/reducers/util/getInverseArrayElementSchema.d.mts +3 -0
- package/reducers/util/getInverseArrayElementSchema.d.mts.map +1 -0
- package/reducers/util/getInverseArrayElementSchema.d.ts.map +1 -1
- package/reducers/util/updateRawArray.d.mts +7 -0
- package/reducers/util/updateRawArray.d.mts.map +1 -0
- package/reducers/util/updateRawArray.d.ts +3 -3
- package/reducers/util/updateRawArray.d.ts.map +1 -1
- package/src/FormState.ts +1 -0
- package/src/createSelectFormStatus.ts +3 -1
- package/src/useArrayField.ts +13 -2
- package/src/useField.ts +81 -18
- package/src/useHtmlField.ts +31 -23
- package/useArrayField.d.mts +34 -0
- package/useArrayField.d.mts.map +1 -0
- package/useArrayField.d.ts +23 -23
- package/useArrayField.d.ts.map +1 -1
- package/useArrayField.js +22 -8
- package/useArrayField.js.map +1 -1
- package/useArrayField.mjs +12 -2
- package/useArrayField.mjs.map +1 -1
- package/useField.d.mts +38 -0
- package/useField.d.mts.map +1 -0
- package/useField.d.ts +31 -28
- package/useField.d.ts.map +1 -1
- package/useField.js +55 -22
- package/useField.js.map +1 -1
- package/useField.mjs +34 -16
- package/useField.mjs.map +1 -1
- package/useFormContext.d.mts +4 -0
- package/useFormContext.d.mts.map +1 -0
- package/useFormContext.d.ts +1 -1
- package/useFormContext.d.ts.map +1 -1
- package/useFormDispatch.d.mts +5 -0
- package/useFormDispatch.d.mts.map +1 -0
- package/useFormDispatch.d.ts +1 -1
- package/useFormDispatch.d.ts.map +1 -1
- package/useFormSelector.d.mts +6 -0
- package/useFormSelector.d.mts.map +1 -0
- package/useFormSelector.d.ts +1 -1
- package/useFormSelector.d.ts.map +1 -1
- package/useFormStatus.d.mts +13 -0
- package/useFormStatus.d.mts.map +1 -0
- package/useFormStatus.d.ts +10 -10
- package/useFormStatus.d.ts.map +1 -1
- package/useFormValues.d.mts +8 -0
- package/useFormValues.d.mts.map +1 -0
- package/useFormValues.d.ts +4 -4
- package/useFormValues.d.ts.map +1 -1
- package/useHtmlField.d.mts +41 -0
- package/useHtmlField.d.mts.map +1 -0
- package/useHtmlField.d.ts +25 -24
- package/useHtmlField.d.ts.map +1 -1
- package/useHtmlField.js +34 -23
- package/useHtmlField.js.map +1 -1
- package/useHtmlField.mjs +35 -20
- package/useHtmlField.mjs.map +1 -1
- package/useInitialize.d.mts +5 -0
- package/useInitialize.d.mts.map +1 -0
- package/useInitialize.d.ts +1 -1
- package/useInitialize.d.ts.map +1 -1
- package/useSubmit.d.mts +5 -0
- package/useSubmit.d.mts.map +1 -0
- package/useSubmit.d.ts +1 -1
- package/useSubmit.d.ts.map +1 -1
- package/util/DeepPartial.d.mts +2 -0
- package/util/DeepPartial.d.mts.map +1 -0
- package/util/DeepPartial.d.ts +1 -3
- package/util/DeepPartial.d.ts.map +1 -1
- package/util/PathInSchema.d.mts +5 -0
- package/util/PathInSchema.d.mts.map +1 -0
- package/util/PathInSchema.d.ts +1 -1
- package/util/PathInSchema.d.ts.map +1 -1
- package/util/PathInType.d.mts +7 -0
- package/util/PathInType.d.mts.map +1 -0
- package/util/PathInType.d.ts +3 -8
- package/util/PathInType.d.ts.map +1 -1
- package/util/SchemaAt.d.mts +5 -0
- package/util/SchemaAt.d.mts.map +1 -0
- package/util/SchemaAt.d.ts.map +1 -1
- package/util/acceptsBigint.d.mts +3 -0
- package/util/acceptsBigint.d.mts.map +1 -0
- package/util/acceptsBigint.d.ts.map +1 -1
- package/util/acceptsBigint.js +2 -2
- package/util/acceptsBigint.js.map +1 -1
- package/util/acceptsNumber.d.mts +3 -0
- package/util/acceptsNumber.d.mts.map +1 -0
- package/util/acceptsNumber.d.ts.map +1 -1
- package/util/acceptsNumber.js +2 -2
- package/util/acceptsNumber.js.map +1 -1
- package/util/bindActionsToField.d.mts +3 -0
- package/util/bindActionsToField.d.mts.map +1 -0
- package/util/bindActionsToField.d.ts +2 -6
- package/util/bindActionsToField.d.ts.map +1 -1
- package/util/get.d.mts +2 -0
- package/util/get.d.mts.map +1 -0
- package/util/get.d.ts.map +1 -1
- package/util/getArrayElementSchema.d.mts +3 -0
- package/util/getArrayElementSchema.d.mts.map +1 -0
- package/util/getArrayElementSchema.d.ts.map +1 -1
- package/util/getArrayElementSchema.js +2 -2
- package/util/getArrayElementSchema.js.map +1 -1
- package/util/isPromise.d.mts +2 -0
- package/util/isPromise.d.mts.map +1 -0
- package/util/isPromise.d.ts.map +1 -1
- package/util/maybeParse.d.mts +3 -0
- package/util/maybeParse.d.mts.map +1 -0
- package/util/maybeParse.d.ts.map +1 -1
- package/util/parsePathstring.d.mts +33 -0
- package/util/parsePathstring.d.mts.map +1 -0
- package/util/parsePathstring.d.ts +14 -38
- package/util/parsePathstring.d.ts.map +1 -1
- package/util/pathstring.d.mts +7 -0
- package/util/pathstring.d.mts.map +1 -0
- package/util/pathstring.d.ts.map +1 -1
- package/util/set.d.mts +2 -0
- package/util/set.d.mts.map +1 -0
- package/util/set.d.ts.map +1 -1
- package/util/setAdd.d.mts +2 -0
- package/util/setAdd.d.mts.map +1 -0
- package/util/setAdd.d.ts.map +1 -1
- package/util/setDelete.d.mts +2 -0
- package/util/setDelete.d.mts.map +1 -0
- package/util/setDelete.d.ts.map +1 -1
package/useField.js
CHANGED
|
@@ -16,9 +16,13 @@ var _reactRedux = require("react-redux");
|
|
|
16
16
|
var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
|
|
17
17
|
var _maybeParse = require("./util/maybeParse.js");
|
|
18
18
|
var _bindActionsToField = require("./util/bindActionsToField.js");
|
|
19
|
+
var _zodInvertible = require("zod-invertible");
|
|
19
20
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20
21
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
21
22
|
function useFieldBase(field) {
|
|
23
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
24
|
+
_ref$normalizeOnMount = _ref.normalizeOnMount,
|
|
25
|
+
normalizeOnMount = _ref$normalizeOnMount === void 0 ? true : _ref$normalizeOnMount;
|
|
22
26
|
var _useFormContext = (0, _useFormContext3.useFormContext)(),
|
|
23
27
|
setParsedValue = _useFormContext.setParsedValue,
|
|
24
28
|
setValue = _useFormContext.setValue,
|
|
@@ -28,30 +32,35 @@ function useFieldBase(field) {
|
|
|
28
32
|
var useFormSelector = _useFormSelector.useFormSelector;
|
|
29
33
|
var valuesSelector = _react["default"].useMemo(function () {
|
|
30
34
|
return (0, _reselect.createSelector)([selectFormValues], (0, _reselect.createSelector)([(0, _reselect.createStructuredSelector)({
|
|
31
|
-
parsedValue: function
|
|
32
|
-
|
|
35
|
+
parsedValue: (0, _reselect.createSelector)(function (state) {
|
|
36
|
+
return state.parsedValues;
|
|
37
|
+
}, function (parsedValues) {
|
|
33
38
|
return (0, _get.get)(parsedValues, field.path);
|
|
34
|
-
},
|
|
35
|
-
value: function
|
|
36
|
-
|
|
39
|
+
}),
|
|
40
|
+
value: (0, _reselect.createSelector)(function (state) {
|
|
41
|
+
return state.values;
|
|
42
|
+
}, function (values) {
|
|
37
43
|
return (0, _get.get)(values, field.path);
|
|
38
|
-
},
|
|
39
|
-
initialParsedValue: function
|
|
40
|
-
|
|
44
|
+
}),
|
|
45
|
+
initialParsedValue: (0, _reselect.createSelector)(function (state) {
|
|
46
|
+
return state.initialParsedValues;
|
|
47
|
+
}, function (initialParsedValues) {
|
|
41
48
|
return (0, _get.get)(initialParsedValues, field.path);
|
|
42
|
-
},
|
|
43
|
-
initialValue: function
|
|
44
|
-
|
|
49
|
+
}),
|
|
50
|
+
initialValue: (0, _reselect.createSelector)(function (state) {
|
|
51
|
+
return state.initialValues;
|
|
52
|
+
}, function (initialValues) {
|
|
45
53
|
return (0, _get.get)(initialValues, field.path);
|
|
46
|
-
}
|
|
47
|
-
})], function (
|
|
48
|
-
var value =
|
|
49
|
-
|
|
50
|
-
parsedValue =
|
|
51
|
-
initialValue =
|
|
52
|
-
|
|
53
|
-
initialParsedValue =
|
|
54
|
-
|
|
54
|
+
})
|
|
55
|
+
})], function (_ref2) {
|
|
56
|
+
var value = _ref2.value,
|
|
57
|
+
_ref2$parsedValue = _ref2.parsedValue,
|
|
58
|
+
parsedValue = _ref2$parsedValue === void 0 ? (0, _maybeParse.maybeParse)(field.schema, value) : _ref2$parsedValue,
|
|
59
|
+
initialValue = _ref2.initialValue,
|
|
60
|
+
_ref2$initialParsedVa = _ref2.initialParsedValue,
|
|
61
|
+
initialParsedValue = _ref2$initialParsedVa === void 0 ? (0, _maybeParse.maybeParse)(field.schema, initialValue) : _ref2$initialParsedVa;
|
|
62
|
+
// console.error(new Error('selector'), { value, parsedValue })
|
|
63
|
+
var dirty = !(0, _fastDeepEqual["default"])(parsedValue, initialParsedValue);
|
|
55
64
|
var pristine = !dirty;
|
|
56
65
|
return {
|
|
57
66
|
parsedValue: parsedValue,
|
|
@@ -73,6 +82,9 @@ function useFieldBase(field) {
|
|
|
73
82
|
var submitFailed = useFormSelector(function (state) {
|
|
74
83
|
return state.submitFailed;
|
|
75
84
|
});
|
|
85
|
+
var initialized = useFormSelector(function (state) {
|
|
86
|
+
return state.initialized;
|
|
87
|
+
});
|
|
76
88
|
var boundActions = _react["default"].useMemo(function () {
|
|
77
89
|
return (0, _bindActionsToField.bindActionsToField)({
|
|
78
90
|
setParsedValue: setParsedValue,
|
|
@@ -80,19 +92,40 @@ function useFieldBase(field) {
|
|
|
80
92
|
setMeta: setMeta
|
|
81
93
|
}, field);
|
|
82
94
|
}, [field.pathstring]);
|
|
95
|
+
var info = _react["default"].useRef({
|
|
96
|
+
mounted: false,
|
|
97
|
+
initialized: initialized
|
|
98
|
+
});
|
|
99
|
+
var normalizedValue = parsedValues.value;
|
|
100
|
+
if (normalizeOnMount && (!info.current.mounted || !info.current.initialized && initialized)) {
|
|
101
|
+
var parsed = field.schema.safeParse(parsedValues.value);
|
|
102
|
+
var formatted = parsed.success ? (0, _zodInvertible.invert)(field.schema).safeParse(parsed.data) : undefined;
|
|
103
|
+
if (formatted !== null && formatted !== void 0 && formatted.success && formatted.data !== parsedValues.value) {
|
|
104
|
+
normalizedValue = formatted.data;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
info.current.mounted = true;
|
|
108
|
+
info.current.initialized = initialized;
|
|
109
|
+
_react["default"].useEffect(function () {
|
|
110
|
+
if (normalizeOnMount && !(0, _fastDeepEqual["default"])(normalizedValue, parsedValues.value)) {
|
|
111
|
+
boundActions.setValue(normalizedValue);
|
|
112
|
+
}
|
|
113
|
+
}, []);
|
|
83
114
|
return _react["default"].useMemo(function () {
|
|
84
115
|
return _objectSpread(_objectSpread(_objectSpread({}, boundActions), parsedValues), {}, {
|
|
116
|
+
value: normalizedValue,
|
|
85
117
|
visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
|
|
86
118
|
touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
|
|
119
|
+
customMeta: meta === null || meta === void 0 ? void 0 : meta.customMeta,
|
|
87
120
|
error: error,
|
|
88
121
|
valid: !error,
|
|
89
122
|
invalid: Boolean(error)
|
|
90
123
|
});
|
|
91
124
|
}, [field.pathstring, parsedValues, meta, error, submitFailed]);
|
|
92
125
|
}
|
|
93
|
-
function useField(field) {
|
|
126
|
+
function useField(field, options) {
|
|
94
127
|
var _useFormContext2 = (0, _useFormContext3.useFormContext)(),
|
|
95
128
|
root = _useFormContext2.root;
|
|
96
|
-
return useFieldBase(field instanceof _FieldPath.FieldPath ? field : root.get(field));
|
|
129
|
+
return useFieldBase(field instanceof _FieldPath.FieldPath ? field : root.get(field), options);
|
|
97
130
|
}
|
|
98
131
|
//# sourceMappingURL=useField.js.map
|
package/useField.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useField.js","names":["_FieldPath","require","_get","_react","_interopRequireDefault","_useFormSelector","_useFormContext3","_reselect","_reactRedux","_fastDeepEqual","_maybeParse","_bindActionsToField","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useFieldBase","field","_useFormContext","useFormContext","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","parsedValue","_ref","parsedValues","get","path","value","_ref2","values","initialParsedValue","_ref3","initialParsedValues","initialValue","_ref4","initialValues","_ref5","_ref5$parsedValue","maybeParse","schema","_ref5$initialParsedVa","dirty","isEqual","pristine","pathstring","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","visited","touched","valid","invalid","Boolean","useField","_useFormContext2","root","FieldPath"],"sources":["src/useField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath } from './FieldPath'\nimport { FieldMeta } from './FormState'\nimport { get } from './util/get'\nimport React from 'react'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport {\n useFormSelector as untypedUseFormSelector,\n TypedUseFormSelector,\n} from './useFormSelector'\nimport { useFormContext } from './useFormContext'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { shallowEqual } from 'react-redux'\nimport isEqual from 'fast-deep-equal'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { maybeParse } from './util/maybeParse'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseFieldProps<Field extends FieldPath> = FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n parsedValue?: z.output<Field['schema']>\n value?: DeepPartial<z.input<Field['schema']>>\n initialParsedValue?: z.output<Field['schema']>\n initialValue?: DeepPartial<z.input<Field['schema']>>\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n\nexport interface TypedUseField<T extends z.ZodTypeAny> {\n <Field extends FieldPath>(field: Field): UseFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useFieldBase<\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters\n T extends z.ZodTypeAny,\n Field extends FieldPath,\n>(field: Field): UseFieldProps<Field> {\n type Schema = Field['schema']\n\n const {\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n parsedValue: ({ parsedValues }) =>\n get(parsedValues, field.path) as z.output<Schema> | undefined,\n value: ({ values }) => get(values, field.path),\n initialParsedValue: ({ initialParsedValues }) =>\n get(initialParsedValues, field.path) as\n | z.output<Schema>\n | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path),\n }),\n ],\n ({\n value,\n parsedValue = maybeParse(field.schema, value),\n initialValue,\n initialParsedValue = maybeParse(field.schema, initialValue),\n }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n dirty,\n pristine,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const parsedValues = useFormSelector(valuesSelector, shallowEqual)\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () => bindActionsToField({ setParsedValue, setValue, setMeta }, field),\n [field.pathstring]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n ...parsedValues,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n valid: !error,\n invalid: Boolean(error),\n }),\n [field.pathstring, parsedValues, meta, error, submitFailed]\n ) as any\n}\n\nexport function useField<Field extends FieldPath>(\n field: Field\n): UseFieldProps<Field>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useField.js","names":["_FieldPath","require","_get","_react","_interopRequireDefault","_useFormSelector","_useFormContext3","_reselect","_reactRedux","_fastDeepEqual","_maybeParse","_bindActionsToField","_zodInvertible","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useFieldBase","field","_ref","undefined","_ref$normalizeOnMount","normalizeOnMount","_useFormContext","useFormContext","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","parsedValue","state","parsedValues","get","path","value","values","initialParsedValue","initialParsedValues","initialValue","initialValues","_ref2","_ref2$parsedValue","maybeParse","schema","_ref2$initialParsedVa","dirty","isEqual","pristine","pathstring","shallowEqual","error","meta","fieldMeta","submitFailed","initialized","boundActions","bindActionsToField","info","useRef","mounted","normalizedValue","current","parsed","safeParse","formatted","success","invert","data","useEffect","visited","touched","customMeta","valid","invalid","Boolean","useField","options","_useFormContext2","root","FieldPath"],"sources":["src/useField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath } from './FieldPath'\nimport { FieldMeta } from './FormState'\nimport { get } from './util/get'\nimport React from 'react'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport {\n useFormSelector as untypedUseFormSelector,\n TypedUseFormSelector,\n} from './useFormSelector'\nimport { useFormContext } from './useFormContext'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { shallowEqual } from 'react-redux'\nimport isEqual from 'fast-deep-equal'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { maybeParse } from './util/maybeParse'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { DeepPartial } from './util/DeepPartial'\nimport { invert } from 'zod-invertible'\nimport { SelectFormValues } from './createSelectFormValues'\n\nexport type UseFieldProps<Field extends FieldPath> = FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n parsedValue?: z.output<Field['schema']>\n value?: DeepPartial<z.input<Field['schema']>>\n initialParsedValue?: z.output<Field['schema']>\n initialValue?: DeepPartial<z.input<Field['schema']>>\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n\nexport interface TypedUseField<T extends z.ZodTypeAny> {\n <Field extends FieldPath>(field: Field): UseFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nexport type UseFieldOptions = {\n normalizeOnMount?: boolean\n}\n\nfunction useFieldBase<\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters\n T extends z.ZodTypeAny,\n Field extends FieldPath,\n>(\n field: Field,\n { normalizeOnMount = true }: UseFieldOptions = {}\n): UseFieldProps<Field> {\n type Schema = Field['schema']\n\n const {\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n type FormValues = ReturnType<SelectFormValues<T>>\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n parsedValue: createSelector(\n (state: FormValues) => state.parsedValues,\n (parsedValues) =>\n get(parsedValues, field.path) as z.output<Schema> | undefined\n ),\n value: createSelector(\n (state: FormValues) => state.values,\n (values) =>\n get(values, field.path) as\n | DeepPartial<z.input<Schema>>\n | undefined\n ),\n initialParsedValue: createSelector(\n (state: FormValues) => state.initialParsedValues,\n (initialParsedValues) =>\n get(initialParsedValues, field.path) as\n | z.output<Schema>\n | undefined\n ),\n initialValue: createSelector(\n (state: FormValues) => state.initialValues,\n (initialValues) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<Schema>>\n | undefined\n ),\n }),\n ],\n ({\n value,\n parsedValue = maybeParse<Schema>(field.schema, value),\n initialValue,\n initialParsedValue = maybeParse<Schema>(field.schema, initialValue),\n }) => {\n // console.error(new Error('selector'), { value, parsedValue })\n const dirty = !isEqual(parsedValue, initialParsedValue)\n const pristine = !dirty\n return {\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n dirty,\n pristine,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const parsedValues = useFormSelector(valuesSelector, shallowEqual)\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n const initialized = useFormSelector((state) => state.initialized)\n\n const boundActions = React.useMemo(\n () => bindActionsToField({ setParsedValue, setValue, setMeta }, field),\n [field.pathstring]\n )\n\n const info = React.useRef({ mounted: false, initialized })\n\n let normalizedValue = parsedValues.value\n if (\n normalizeOnMount &&\n (!info.current.mounted || (!info.current.initialized && initialized))\n ) {\n const parsed = field.schema.safeParse(parsedValues.value)\n const formatted =\n parsed.success ? invert(field.schema).safeParse(parsed.data) : undefined\n if (formatted?.success && formatted.data !== parsedValues.value) {\n normalizedValue = formatted.data\n }\n }\n info.current.mounted = true\n info.current.initialized = initialized\n\n React.useEffect(() => {\n if (normalizeOnMount && !isEqual(normalizedValue, parsedValues.value)) {\n boundActions.setValue(normalizedValue)\n }\n }, [])\n\n return React.useMemo(\n () => ({\n ...boundActions,\n ...parsedValues,\n value: normalizedValue,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n customMeta: meta?.customMeta,\n error,\n valid: !error,\n invalid: Boolean(error),\n }),\n [field.pathstring, parsedValues, meta, error, submitFailed]\n ) as any\n}\n\nexport function useField<Field extends FieldPath>(\n field: Field,\n options?: UseFieldOptions\n): UseFieldProps<Field>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(\n field: Path,\n options?: UseFieldOptions\n): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring,\n\n options?: UseFieldOptions\n): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string,\n options?: UseFieldOptions\n): UseFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useFieldBase(\n field instanceof FieldPath ? field : root.get(field as any),\n options\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
package/useField.mjs
CHANGED
|
@@ -8,7 +8,10 @@ import { shallowEqual } from 'react-redux';
|
|
|
8
8
|
import isEqual from 'fast-deep-equal';
|
|
9
9
|
import { maybeParse } from "./util/maybeParse.mjs";
|
|
10
10
|
import { bindActionsToField } from "./util/bindActionsToField.mjs";
|
|
11
|
-
|
|
11
|
+
import { invert } from 'zod-invertible';
|
|
12
|
+
function useFieldBase(field, {
|
|
13
|
+
normalizeOnMount = true
|
|
14
|
+
} = {}) {
|
|
12
15
|
const {
|
|
13
16
|
setParsedValue,
|
|
14
17
|
setValue,
|
|
@@ -18,25 +21,18 @@ function useFieldBase(field) {
|
|
|
18
21
|
} = useFormContext();
|
|
19
22
|
const useFormSelector = untypedUseFormSelector;
|
|
20
23
|
const valuesSelector = React.useMemo(() => createSelector([selectFormValues], createSelector([createStructuredSelector({
|
|
21
|
-
parsedValue: (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
values
|
|
26
|
-
}) => get(values, field.path),
|
|
27
|
-
initialParsedValue: ({
|
|
28
|
-
initialParsedValues
|
|
29
|
-
}) => get(initialParsedValues, field.path),
|
|
30
|
-
initialValue: ({
|
|
31
|
-
initialValues
|
|
32
|
-
}) => get(initialValues, field.path)
|
|
24
|
+
parsedValue: createSelector(state => state.parsedValues, parsedValues => get(parsedValues, field.path)),
|
|
25
|
+
value: createSelector(state => state.values, values => get(values, field.path)),
|
|
26
|
+
initialParsedValue: createSelector(state => state.initialParsedValues, initialParsedValues => get(initialParsedValues, field.path)),
|
|
27
|
+
initialValue: createSelector(state => state.initialValues, initialValues => get(initialValues, field.path))
|
|
33
28
|
})], ({
|
|
34
29
|
value,
|
|
35
30
|
parsedValue = maybeParse(field.schema, value),
|
|
36
31
|
initialValue,
|
|
37
32
|
initialParsedValue = maybeParse(field.schema, initialValue)
|
|
38
33
|
}) => {
|
|
39
|
-
|
|
34
|
+
// console.error(new Error('selector'), { value, parsedValue })
|
|
35
|
+
const dirty = !isEqual(parsedValue, initialParsedValue);
|
|
40
36
|
const pristine = !dirty;
|
|
41
37
|
return {
|
|
42
38
|
parsedValue,
|
|
@@ -51,25 +47,47 @@ function useFieldBase(field) {
|
|
|
51
47
|
const error = useFormSelector(state => selectFieldErrorMap(state)[field.pathstring]);
|
|
52
48
|
const meta = useFormSelector(state => state.fieldMeta[field.pathstring]);
|
|
53
49
|
const submitFailed = useFormSelector(state => state.submitFailed);
|
|
50
|
+
const initialized = useFormSelector(state => state.initialized);
|
|
54
51
|
const boundActions = React.useMemo(() => bindActionsToField({
|
|
55
52
|
setParsedValue,
|
|
56
53
|
setValue,
|
|
57
54
|
setMeta
|
|
58
55
|
}, field), [field.pathstring]);
|
|
56
|
+
const info = React.useRef({
|
|
57
|
+
mounted: false,
|
|
58
|
+
initialized
|
|
59
|
+
});
|
|
60
|
+
let normalizedValue = parsedValues.value;
|
|
61
|
+
if (normalizeOnMount && (!info.current.mounted || !info.current.initialized && initialized)) {
|
|
62
|
+
const parsed = field.schema.safeParse(parsedValues.value);
|
|
63
|
+
const formatted = parsed.success ? invert(field.schema).safeParse(parsed.data) : undefined;
|
|
64
|
+
if (formatted !== null && formatted !== void 0 && formatted.success && formatted.data !== parsedValues.value) {
|
|
65
|
+
normalizedValue = formatted.data;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
info.current.mounted = true;
|
|
69
|
+
info.current.initialized = initialized;
|
|
70
|
+
React.useEffect(() => {
|
|
71
|
+
if (normalizeOnMount && !isEqual(normalizedValue, parsedValues.value)) {
|
|
72
|
+
boundActions.setValue(normalizedValue);
|
|
73
|
+
}
|
|
74
|
+
}, []);
|
|
59
75
|
return React.useMemo(() => ({
|
|
60
76
|
...boundActions,
|
|
61
77
|
...parsedValues,
|
|
78
|
+
value: normalizedValue,
|
|
62
79
|
visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
|
|
63
80
|
touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
|
|
81
|
+
customMeta: meta === null || meta === void 0 ? void 0 : meta.customMeta,
|
|
64
82
|
error,
|
|
65
83
|
valid: !error,
|
|
66
84
|
invalid: Boolean(error)
|
|
67
85
|
}), [field.pathstring, parsedValues, meta, error, submitFailed]);
|
|
68
86
|
}
|
|
69
|
-
export function useField(field) {
|
|
87
|
+
export function useField(field, options) {
|
|
70
88
|
const {
|
|
71
89
|
root
|
|
72
90
|
} = useFormContext();
|
|
73
|
-
return useFieldBase(field instanceof FieldPath ? field : root.get(field));
|
|
91
|
+
return useFieldBase(field instanceof FieldPath ? field : root.get(field), options);
|
|
74
92
|
}
|
|
75
93
|
//# sourceMappingURL=useField.mjs.map
|
package/useField.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useField.mjs","names":["FieldPath","get","React","useFormSelector","untypedUseFormSelector","useFormContext","createSelector","createStructuredSelector","shallowEqual","isEqual","maybeParse","bindActionsToField","useFieldBase","field","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","parsedValue","parsedValues","path","value","values","initialParsedValue","initialParsedValues","initialValue","initialValues","schema","dirty","pristine","pathstring","error","state","meta","fieldMeta","submitFailed","boundActions","visited","touched","valid","invalid","Boolean","useField","root"],"sources":["src/useField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath } from './FieldPath'\nimport { FieldMeta } from './FormState'\nimport { get } from './util/get'\nimport React from 'react'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport {\n useFormSelector as untypedUseFormSelector,\n TypedUseFormSelector,\n} from './useFormSelector'\nimport { useFormContext } from './useFormContext'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { shallowEqual } from 'react-redux'\nimport isEqual from 'fast-deep-equal'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { maybeParse } from './util/maybeParse'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseFieldProps<Field extends FieldPath> = FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n parsedValue?: z.output<Field['schema']>\n value?: DeepPartial<z.input<Field['schema']>>\n initialParsedValue?: z.output<Field['schema']>\n initialValue?: DeepPartial<z.input<Field['schema']>>\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n\nexport interface TypedUseField<T extends z.ZodTypeAny> {\n <Field extends FieldPath>(field: Field): UseFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useFieldBase<\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters\n T extends z.ZodTypeAny,\n Field extends FieldPath,\n>(field: Field): UseFieldProps<Field> {\n type Schema = Field['schema']\n\n const {\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n parsedValue: ({ parsedValues }) =>\n get(parsedValues, field.path) as z.output<Schema> | undefined,\n value: ({ values }) => get(values, field.path),\n initialParsedValue: ({ initialParsedValues }) =>\n get(initialParsedValues, field.path) as\n | z.output<Schema>\n | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path),\n }),\n ],\n ({\n value,\n parsedValue = maybeParse(field.schema, value),\n initialValue,\n initialParsedValue = maybeParse(field.schema, initialValue),\n }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n dirty,\n pristine,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const parsedValues = useFormSelector(valuesSelector, shallowEqual)\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () => bindActionsToField({ setParsedValue, setValue, setMeta }, field),\n [field.pathstring]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n ...parsedValues,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n valid: !error,\n invalid: Boolean(error),\n }),\n [field.pathstring, parsedValues, meta, error, submitFailed]\n ) as any\n}\n\nexport function useField<Field extends FieldPath>(\n field: Field\n): UseFieldProps<Field>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useField.mjs","names":["FieldPath","get","React","useFormSelector","untypedUseFormSelector","useFormContext","createSelector","createStructuredSelector","shallowEqual","isEqual","maybeParse","bindActionsToField","invert","useFieldBase","field","normalizeOnMount","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","parsedValue","state","parsedValues","path","value","values","initialParsedValue","initialParsedValues","initialValue","initialValues","schema","dirty","pristine","pathstring","error","meta","fieldMeta","submitFailed","initialized","boundActions","info","useRef","mounted","normalizedValue","current","parsed","safeParse","formatted","success","data","undefined","useEffect","visited","touched","customMeta","valid","invalid","Boolean","useField","options","root"],"sources":["src/useField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath } from './FieldPath'\nimport { FieldMeta } from './FormState'\nimport { get } from './util/get'\nimport React from 'react'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport {\n useFormSelector as untypedUseFormSelector,\n TypedUseFormSelector,\n} from './useFormSelector'\nimport { useFormContext } from './useFormContext'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { shallowEqual } from 'react-redux'\nimport isEqual from 'fast-deep-equal'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { maybeParse } from './util/maybeParse'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { DeepPartial } from './util/DeepPartial'\nimport { invert } from 'zod-invertible'\nimport { SelectFormValues } from './createSelectFormValues'\n\nexport type UseFieldProps<Field extends FieldPath> = FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n parsedValue?: z.output<Field['schema']>\n value?: DeepPartial<z.input<Field['schema']>>\n initialParsedValue?: z.output<Field['schema']>\n initialValue?: DeepPartial<z.input<Field['schema']>>\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n\nexport interface TypedUseField<T extends z.ZodTypeAny> {\n <Field extends FieldPath>(field: Field): UseFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nexport type UseFieldOptions = {\n normalizeOnMount?: boolean\n}\n\nfunction useFieldBase<\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters\n T extends z.ZodTypeAny,\n Field extends FieldPath,\n>(\n field: Field,\n { normalizeOnMount = true }: UseFieldOptions = {}\n): UseFieldProps<Field> {\n type Schema = Field['schema']\n\n const {\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n type FormValues = ReturnType<SelectFormValues<T>>\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n parsedValue: createSelector(\n (state: FormValues) => state.parsedValues,\n (parsedValues) =>\n get(parsedValues, field.path) as z.output<Schema> | undefined\n ),\n value: createSelector(\n (state: FormValues) => state.values,\n (values) =>\n get(values, field.path) as\n | DeepPartial<z.input<Schema>>\n | undefined\n ),\n initialParsedValue: createSelector(\n (state: FormValues) => state.initialParsedValues,\n (initialParsedValues) =>\n get(initialParsedValues, field.path) as\n | z.output<Schema>\n | undefined\n ),\n initialValue: createSelector(\n (state: FormValues) => state.initialValues,\n (initialValues) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<Schema>>\n | undefined\n ),\n }),\n ],\n ({\n value,\n parsedValue = maybeParse<Schema>(field.schema, value),\n initialValue,\n initialParsedValue = maybeParse<Schema>(field.schema, initialValue),\n }) => {\n // console.error(new Error('selector'), { value, parsedValue })\n const dirty = !isEqual(parsedValue, initialParsedValue)\n const pristine = !dirty\n return {\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n dirty,\n pristine,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const parsedValues = useFormSelector(valuesSelector, shallowEqual)\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n const initialized = useFormSelector((state) => state.initialized)\n\n const boundActions = React.useMemo(\n () => bindActionsToField({ setParsedValue, setValue, setMeta }, field),\n [field.pathstring]\n )\n\n const info = React.useRef({ mounted: false, initialized })\n\n let normalizedValue = parsedValues.value\n if (\n normalizeOnMount &&\n (!info.current.mounted || (!info.current.initialized && initialized))\n ) {\n const parsed = field.schema.safeParse(parsedValues.value)\n const formatted =\n parsed.success ? invert(field.schema).safeParse(parsed.data) : undefined\n if (formatted?.success && formatted.data !== parsedValues.value) {\n normalizedValue = formatted.data\n }\n }\n info.current.mounted = true\n info.current.initialized = initialized\n\n React.useEffect(() => {\n if (normalizeOnMount && !isEqual(normalizedValue, parsedValues.value)) {\n boundActions.setValue(normalizedValue)\n }\n }, [])\n\n return React.useMemo(\n () => ({\n ...boundActions,\n ...parsedValues,\n value: normalizedValue,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n customMeta: meta?.customMeta,\n error,\n valid: !error,\n invalid: Boolean(error),\n }),\n [field.pathstring, parsedValues, meta, error, submitFailed]\n ) as any\n}\n\nexport function useField<Field extends FieldPath>(\n field: Field,\n options?: UseFieldOptions\n): UseFieldProps<Field>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(\n field: Path,\n options?: UseFieldOptions\n): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring,\n\n options?: UseFieldOptions\n): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string,\n options?: UseFieldOptions\n): UseFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useFieldBase(\n field instanceof FieldPath ? field : root.get(field as any),\n options\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormContext.d.mts","names":["z","FormContextProps","useFormContext","ZodTypeAny","ZodBranded","ZodNever","T"],"sources":["src/useFormContext.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AAEnB,SAAsBC,gBAAgB;AAEtC,wBAAgBC,cAAc,CAC5B,UAAUF,CAAC,CAACG,UAAU,GAAGH,CAAC,CAACI,UAAU,CACnCJ,CAAC,CAACK,QAAQ,EACV,6BAA6B,CAC9B,CAAAH,CAAA,GACED,gBAAgB,CAACK,CAAC,CAAC","ignoreList":[]}
|
package/useFormContext.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
|
-
import { FormContextProps } from
|
|
2
|
+
import { FormContextProps } from "./FormContext.js";
|
|
3
3
|
export declare function useFormContext<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'you must pass a schema type'>>(): FormContextProps<T>;
|
|
4
4
|
//# sourceMappingURL=useFormContext.d.ts.map
|
package/useFormContext.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormContext.d.ts","
|
|
1
|
+
{"version":3,"file":"useFormContext.d.ts","names":["z","FormContextProps","useFormContext","ZodTypeAny","ZodBranded","ZodNever","T"],"sources":["src/useFormContext.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AAEnB,SAAsBC,gBAAgB;AAEtC,wBAAgBC,cAAc,CAC5B,UAAUF,CAAC,CAACG,UAAU,GAAGH,CAAC,CAACI,UAAU,CACnCJ,CAAC,CAACK,QAAQ,EACV,6BAA6B,CAC9B,CAAAH,CAAA,GACED,gBAAgB,CAACK,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { FormAction } from "./FormAction.mjs";
|
|
3
|
+
import { Dispatch } from 'redux';
|
|
4
|
+
export declare const useFormDispatch: <T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, "you must pass a schema type">>() => Dispatch<FormAction<T>>;
|
|
5
|
+
//# sourceMappingURL=useFormDispatch.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormDispatch.d.mts","names":["z","FormAction","Dispatch","useFormDispatch","ZodTypeAny","ZodBranded","ZodNever","T"],"sources":["src/useFormDispatch.ts"],"sourcesContent":[null],"mappings":"AAEA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAASC,UAAU;AACnB,SAASC,QAAQ,QAAQ,OAAO;AAEhC,qBAAaC,eAAe,EAA2C,CACrE,UAAUH,CAAC,CAACI,UAAU,GAAGJ,CAAC,CAACK,UAAU,CACnCL,CAAC,CAACM,QAAQ,EACV,6BAA6B,CAC9B,OACIJ,QAAQ,CAACD,UAAU,CAACM,CAAC,CAAC,CAAC","ignoreList":[]}
|
package/useFormDispatch.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
|
-
import { FormAction } from
|
|
2
|
+
import { FormAction } from "./FormAction.js";
|
|
3
3
|
import { Dispatch } from 'redux';
|
|
4
4
|
export declare const useFormDispatch: <T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, "you must pass a schema type">>() => Dispatch<FormAction<T>>;
|
|
5
5
|
//# sourceMappingURL=useFormDispatch.d.ts.map
|
package/useFormDispatch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormDispatch.d.ts","
|
|
1
|
+
{"version":3,"file":"useFormDispatch.d.ts","names":["z","FormAction","Dispatch","useFormDispatch","ZodTypeAny","ZodBranded","ZodNever","T"],"sources":["src/useFormDispatch.ts"],"sourcesContent":[null],"mappings":"AAEA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAASC,UAAU;AACnB,SAASC,QAAQ,QAAQ,OAAO;AAEhC,qBAAaC,eAAe,EAA2C,CACrE,UAAUH,CAAC,CAACI,UAAU,GAAGJ,CAAC,CAACK,UAAU,CACnCL,CAAC,CAACM,QAAQ,EACV,6BAA6B,CAC9B,OACIJ,QAAQ,CAACD,UAAU,CAACM,CAAC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TypedUseSelectorHook } from 'react-redux';
|
|
2
|
+
import { FormState } from "./FormState.mjs";
|
|
3
|
+
import z from 'zod';
|
|
4
|
+
export declare const useFormSelector: import("react-redux").UseSelector<unknown>;
|
|
5
|
+
export type TypedUseFormSelector<T extends z.ZodTypeAny> = TypedUseSelectorHook<FormState<T>>;
|
|
6
|
+
//# sourceMappingURL=useFormSelector.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormSelector.d.mts","names":["TypedUseSelectorHook","FormState","z","useFormSelector","UseSelector","TypedUseFormSelector","ZodTypeAny","T"],"sources":["src/useFormSelector.ts"],"sourcesContent":[null],"mappings":"AAAA,SAA6BA,oBAAoB,QAAQ,aAAa;AAEtE,SAASC,SAAS;AAClB,OAAOC,CAAC,MAAM,KAAK;AAEnB,qBAAaC,eAAe,wBAAAC,WAAA,SAAuC;AACnE,OAAM,KAAMC,oBAAoB,CAAC,UAAUH,CAAC,CAACI,UAAU,IAAIN,oBAAoB,CAC7EC,SAAS,CAACM,CAAC,CAAC,CACb","ignoreList":[]}
|
package/useFormSelector.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TypedUseSelectorHook } from 'react-redux';
|
|
2
|
-
import { FormState } from
|
|
2
|
+
import { FormState } from "./FormState.js";
|
|
3
3
|
import z from 'zod';
|
|
4
4
|
export declare const useFormSelector: import("react-redux").UseSelector<unknown>;
|
|
5
5
|
export type TypedUseFormSelector<T extends z.ZodTypeAny> = TypedUseSelectorHook<FormState<T>>;
|
package/useFormSelector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormSelector.d.ts","
|
|
1
|
+
{"version":3,"file":"useFormSelector.d.ts","names":["TypedUseSelectorHook","FormState","z","useFormSelector","UseSelector","TypedUseFormSelector","ZodTypeAny","T"],"sources":["src/useFormSelector.ts"],"sourcesContent":[null],"mappings":"AAAA,SAA6BA,oBAAoB,QAAQ,aAAa;AAEtE,SAASC,SAAS;AAClB,OAAOC,CAAC,MAAM,KAAK;AAEnB,qBAAaC,eAAe,wBAAAC,WAAA,SAAuC;AACnE,OAAM,KAAMC,oBAAoB,CAAC,UAAUH,CAAC,CAACI,UAAU,IAAIN,oBAAoB,CAC7EC,SAAS,CAACM,CAAC,CAAC,CACb","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare function useFormStatus(): {
|
|
2
|
+
initialized: boolean;
|
|
3
|
+
submitting: boolean;
|
|
4
|
+
submitSucceeded: boolean;
|
|
5
|
+
submitFailed: boolean;
|
|
6
|
+
submitError: unknown;
|
|
7
|
+
validationError: any;
|
|
8
|
+
valid: boolean;
|
|
9
|
+
invalid: boolean;
|
|
10
|
+
pristine: boolean;
|
|
11
|
+
dirty: boolean;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=useFormStatus.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormStatus.d.mts","names":["useFormStatus"],"sources":["src/useFormStatus.ts"],"sourcesContent":[null],"mappings":"AAUA,wBAAgBA,aAAaA,CAAA","ignoreList":[]}
|
package/useFormStatus.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export declare function useFormStatus(): {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
initialized: boolean;
|
|
3
|
+
submitting: boolean;
|
|
4
|
+
submitSucceeded: boolean;
|
|
5
|
+
submitFailed: boolean;
|
|
6
|
+
submitError: unknown;
|
|
7
|
+
validationError: any;
|
|
8
|
+
valid: boolean;
|
|
9
|
+
invalid: boolean;
|
|
10
|
+
pristine: boolean;
|
|
11
|
+
dirty: boolean;
|
|
12
12
|
};
|
|
13
13
|
//# sourceMappingURL=useFormStatus.d.ts.map
|
package/useFormStatus.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormStatus.d.ts","
|
|
1
|
+
{"version":3,"file":"useFormStatus.d.ts","names":["useFormStatus"],"sources":["src/useFormStatus.ts"],"sourcesContent":[null],"mappings":"AAUA,wBAAgBA,aAAaA,CAAA","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
export declare function useFormValues<T extends z.ZodTypeAny = z.ZodUnknown>(): {
|
|
3
|
+
parsedValues: z.output<T> | undefined;
|
|
4
|
+
values: import("./util/DeepPartial.mjs").DeepPartial<z.input<T>> | undefined;
|
|
5
|
+
initialParsedValues: z.output<T> | undefined;
|
|
6
|
+
initialValues: import("./util/DeepPartial.mjs").DeepPartial<z.input<T>> | undefined;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=useFormValues.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormValues.d.mts","names":["z","useFormValues","ZodTypeAny","ZodUnknown"],"sources":["src/useFormValues.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AAInB,wBAAgBC,aAAa,CAAC,UAAUD,CAAC,CAACE,UAAU,GAAGF,CAAC,CAACG,UAAU,CAAAF,CAAA","ignoreList":[]}
|
package/useFormValues.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
2
|
export declare function useFormValues<T extends z.ZodTypeAny = z.ZodUnknown>(): {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
parsedValues: z.output<T> | undefined;
|
|
4
|
+
values: import("./util/DeepPartial.js").DeepPartial<z.input<T>> | undefined;
|
|
5
|
+
initialParsedValues: z.output<T> | undefined;
|
|
6
|
+
initialValues: import("./util/DeepPartial.js").DeepPartial<z.input<T>> | undefined;
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=useFormValues.d.ts.map
|
package/useFormValues.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormValues.d.ts","
|
|
1
|
+
{"version":3,"file":"useFormValues.d.ts","names":["z","useFormValues","ZodTypeAny","ZodUnknown"],"sources":["src/useFormValues.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AAInB,wBAAgBC,aAAa,CAAC,UAAUD,CAAC,CAACE,UAAU,GAAGF,CAAC,CAACG,UAAU,CAAAF,CAAA","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { FieldPath } from "./FieldPath.mjs";
|
|
3
|
+
import { UseFieldProps } from "./useField.mjs";
|
|
4
|
+
import React, { HTMLInputTypeAttribute } from 'react';
|
|
5
|
+
import { PathInSchema, PathstringInSchema } from "./util/PathInSchema.mjs";
|
|
6
|
+
import { parsePathstring } from "./util/parsePathstring.mjs";
|
|
7
|
+
import { SchemaAt } from "./util/SchemaAt.mjs";
|
|
8
|
+
export type HtmlFieldInputProps = {
|
|
9
|
+
name: string;
|
|
10
|
+
type: HTMLInputTypeAttribute;
|
|
11
|
+
value: string;
|
|
12
|
+
checked?: boolean;
|
|
13
|
+
onChange: React.ChangeEventHandler;
|
|
14
|
+
onFocus: React.FocusEventHandler;
|
|
15
|
+
onBlur: React.FocusEventHandler;
|
|
16
|
+
};
|
|
17
|
+
export type ValidUseHtmlFieldProps<Field extends FieldPath> = {
|
|
18
|
+
input: HtmlFieldInputProps;
|
|
19
|
+
meta: UseFieldProps<Field>;
|
|
20
|
+
};
|
|
21
|
+
export type UseHtmlFieldProps<Field extends FieldPath> = z.input<Field['schema']> extends (string | number | bigint | boolean | null | undefined) ? {
|
|
22
|
+
input: HtmlFieldInputProps;
|
|
23
|
+
meta: UseFieldProps<Field>;
|
|
24
|
+
} : {
|
|
25
|
+
ERROR: 'field schema input must be a nullish string, number, boolean or bigint';
|
|
26
|
+
};
|
|
27
|
+
export type UseHtmlFieldOptions<Field, Schema extends z.ZodTypeAny = (Field extends FieldPath<infer S> ? S : z.ZodTypeAny)> = {
|
|
28
|
+
field: Field;
|
|
29
|
+
type: z.input<Schema> extends boolean | null | undefined ? 'checkbox' : Exclude<HTMLInputTypeAttribute, 'checkbox'>;
|
|
30
|
+
normalizeOnMount?: boolean;
|
|
31
|
+
normalizeOnBlur?: boolean;
|
|
32
|
+
};
|
|
33
|
+
export interface TypedUseHtmlField<T extends z.ZodTypeAny> {
|
|
34
|
+
<Field extends FieldPath>(options: UseHtmlFieldOptions<Field, Field['schema']>): UseHtmlFieldProps<Field>;
|
|
35
|
+
<Path extends PathInSchema<T>>(options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
36
|
+
<Path extends PathstringInSchema<T>>(options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>;
|
|
37
|
+
}
|
|
38
|
+
export declare function useHtmlField<Field extends FieldPath>(options: UseHtmlFieldOptions<Field, Field['schema']>): UseHtmlFieldProps<Field>;
|
|
39
|
+
export declare function useHtmlField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseHtmlField<T> to pass a path array'>, Path extends PathInSchema<T> = any>(options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
40
|
+
export declare function useHtmlField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseHtmlField<T> to pass a pathstring'>, Path extends PathstringInSchema<T> = any>(options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>;
|
|
41
|
+
//# sourceMappingURL=useHtmlField.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHtmlField.d.mts","names":["z","FieldPath","UseFieldProps","React","HTMLInputTypeAttribute","PathInSchema","PathstringInSchema","parsePathstring","SchemaAt","HtmlFieldInputProps","name","type","value","checked","onChange","ChangeEventHandler","onFocus","FocusEventHandler","onBlur","ValidUseHtmlFieldProps","input","meta","Field","UseHtmlFieldProps","ERROR","UseHtmlFieldOptions","ZodTypeAny","S","field","Schema","Exclude","normalizeOnMount","normalizeOnBlur","TypedUseHtmlField","options","T","Path","useHtmlField","ZodBranded","ZodNever"],"sources":["src/useHtmlField.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|