@jcoreio/zod-forms 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FieldPath.d.ts +26 -0
- package/FieldPath.d.ts.map +1 -0
- package/FieldPath.js +155 -0
- package/FieldPath.js.map +1 -0
- package/FieldPath.mjs +138 -0
- package/FieldPath.mjs.map +1 -0
- package/FormAction.d.ts +15 -0
- package/FormAction.d.ts.map +1 -0
- package/FormAction.js +6 -0
- package/FormAction.js.map +1 -0
- package/FormAction.mjs +2 -0
- package/FormAction.mjs.map +1 -0
- package/FormContext.d.ts +39 -0
- package/FormContext.d.ts.map +1 -0
- package/FormContext.js +10 -0
- package/FormContext.js.map +1 -0
- package/FormContext.mjs +3 -0
- package/FormContext.mjs.map +1 -0
- package/FormState.d.ts +31 -0
- package/FormState.d.ts.map +1 -0
- package/FormState.js +6 -0
- package/FormState.js.map +1 -0
- package/FormState.mjs +2 -0
- package/FormState.mjs.map +1 -0
- package/FormStateContext.d.ts +8 -0
- package/FormStateContext.d.ts.map +1 -0
- package/FormStateContext.js +10 -0
- package/FormStateContext.js.map +1 -0
- package/FormStateContext.mjs +3 -0
- package/FormStateContext.mjs.map +1 -0
- package/LICENSE.md +21 -0
- package/README.md +154 -0
- package/actions/addHandlers.d.ts +15 -0
- package/actions/addHandlers.d.ts.map +1 -0
- package/actions/addHandlers.js +16 -0
- package/actions/addHandlers.js.map +1 -0
- package/actions/addHandlers.mjs +7 -0
- package/actions/addHandlers.mjs.map +1 -0
- package/actions/arrayActions.d.ts +113 -0
- package/actions/arrayActions.d.ts.map +1 -0
- package/actions/arrayActions.js +146 -0
- package/actions/arrayActions.js.map +1 -0
- package/actions/arrayActions.mjs +120 -0
- package/actions/arrayActions.mjs.map +1 -0
- package/actions/initialize.d.ts +13 -0
- package/actions/initialize.d.ts.map +1 -0
- package/actions/initialize.js +16 -0
- package/actions/initialize.js.map +1 -0
- package/actions/initialize.mjs +7 -0
- package/actions/initialize.mjs.map +1 -0
- package/actions/removeHandlers.d.ts +10 -0
- package/actions/removeHandlers.d.ts.map +1 -0
- package/actions/removeHandlers.js +16 -0
- package/actions/removeHandlers.js.map +1 -0
- package/actions/removeHandlers.mjs +7 -0
- package/actions/removeHandlers.mjs.map +1 -0
- package/actions/setMeta.d.ts +9 -0
- package/actions/setMeta.d.ts.map +1 -0
- package/actions/setMeta.js +14 -0
- package/actions/setMeta.js.map +1 -0
- package/actions/setMeta.mjs +8 -0
- package/actions/setMeta.mjs.map +1 -0
- package/actions/setMounted.d.ts +6 -0
- package/actions/setMounted.d.ts.map +1 -0
- package/actions/setMounted.js +13 -0
- package/actions/setMounted.js.map +1 -0
- package/actions/setMounted.mjs +7 -0
- package/actions/setMounted.mjs.map +1 -0
- package/actions/setRawValue.d.ts +9 -0
- package/actions/setRawValue.d.ts.map +1 -0
- package/actions/setRawValue.js +14 -0
- package/actions/setRawValue.js.map +1 -0
- package/actions/setRawValue.mjs +8 -0
- package/actions/setRawValue.mjs.map +1 -0
- package/actions/setSubmitStatus.d.ts +14 -0
- package/actions/setSubmitStatus.d.ts.map +1 -0
- package/actions/setSubmitStatus.js +16 -0
- package/actions/setSubmitStatus.js.map +1 -0
- package/actions/setSubmitStatus.mjs +7 -0
- package/actions/setSubmitStatus.mjs.map +1 -0
- package/actions/setValue.d.ts +12 -0
- package/actions/setValue.d.ts.map +1 -0
- package/actions/setValue.js +18 -0
- package/actions/setValue.js.map +1 -0
- package/actions/setValue.mjs +9 -0
- package/actions/setValue.mjs.map +1 -0
- package/actions/submit.d.ts +5 -0
- package/actions/submit.d.ts.map +1 -0
- package/actions/submit.js +12 -0
- package/actions/submit.js.map +1 -0
- package/actions/submit.mjs +6 -0
- package/actions/submit.mjs.map +1 -0
- package/actions/submitSucceeded.d.ts +5 -0
- package/actions/submitSucceeded.d.ts.map +1 -0
- package/actions/submitSucceeded.js +12 -0
- package/actions/submitSucceeded.js.map +1 -0
- package/actions/submitSucceeded.mjs +6 -0
- package/actions/submitSucceeded.mjs.map +1 -0
- package/createFormMiddleware.d.ts +6 -0
- package/createFormMiddleware.d.ts.map +1 -0
- package/createFormMiddleware.js +186 -0
- package/createFormMiddleware.js.map +1 -0
- package/createFormMiddleware.mjs +53 -0
- package/createFormMiddleware.mjs.map +1 -0
- package/createFormProvider.d.ts +7 -0
- package/createFormProvider.d.ts.map +1 -0
- package/createFormProvider.js +85 -0
- package/createFormProvider.js.map +1 -0
- package/createFormProvider.mjs +63 -0
- package/createFormProvider.mjs.map +1 -0
- package/createFormReducer.d.ts +9 -0
- package/createFormReducer.d.ts.map +1 -0
- package/createFormReducer.js +95 -0
- package/createFormReducer.js.map +1 -0
- package/createFormReducer.mjs +84 -0
- package/createFormReducer.mjs.map +1 -0
- package/createSelectFieldErrorMap.d.ts +32 -0
- package/createSelectFieldErrorMap.d.ts.map +1 -0
- package/createSelectFieldErrorMap.js +43 -0
- package/createSelectFieldErrorMap.js.map +1 -0
- package/createSelectFieldErrorMap.mjs +24 -0
- package/createSelectFieldErrorMap.mjs.map +1 -0
- package/createSelectFormStatus.d.ts +89 -0
- package/createSelectFormStatus.d.ts.map +1 -0
- package/createSelectFormStatus.js +54 -0
- package/createSelectFormStatus.js.map +1 -0
- package/createSelectFormStatus.mjs +28 -0
- package/createSelectFormStatus.mjs.map +1 -0
- package/createSelectFormValues.d.ts +45 -0
- package/createSelectFormValues.d.ts.map +1 -0
- package/createSelectFormValues.js +24 -0
- package/createSelectFormValues.js.map +1 -0
- package/createSelectFormValues.mjs +10 -0
- package/createSelectFormValues.mjs.map +1 -0
- package/createZodForm.d.ts +33 -0
- package/createZodForm.d.ts.map +1 -0
- package/createZodForm.js +51 -0
- package/createZodForm.js.map +1 -0
- package/createZodForm.mjs +46 -0
- package/createZodForm.mjs.map +1 -0
- package/index.d.ts +14 -0
- package/index.d.ts.map +1 -0
- package/index.js +76 -0
- package/index.js.map +1 -0
- package/index.mjs +11 -0
- package/index.mjs.map +1 -0
- package/initFormState.d.ts +4 -0
- package/initFormState.d.ts.map +1 -0
- package/initFormState.js +22 -0
- package/initFormState.js.map +1 -0
- package/initFormState.mjs +16 -0
- package/initFormState.mjs.map +1 -0
- package/package.json +49 -0
- package/reducers/addHandlers.d.ts +24 -0
- package/reducers/addHandlers.d.ts.map +1 -0
- package/reducers/addHandlers.js +24 -0
- package/reducers/addHandlers.js.map +1 -0
- package/reducers/addHandlers.mjs +21 -0
- package/reducers/addHandlers.mjs.map +1 -0
- package/reducers/arrayInsert.d.ts +7 -0
- package/reducers/arrayInsert.d.ts.map +1 -0
- package/reducers/arrayInsert.js +16 -0
- package/reducers/arrayInsert.js.map +1 -0
- package/reducers/arrayInsert.mjs +12 -0
- package/reducers/arrayInsert.mjs.map +1 -0
- package/reducers/arrayInsertRaw.d.ts +7 -0
- package/reducers/arrayInsertRaw.d.ts.map +1 -0
- package/reducers/arrayInsertRaw.js +22 -0
- package/reducers/arrayInsertRaw.js.map +1 -0
- package/reducers/arrayInsertRaw.mjs +14 -0
- package/reducers/arrayInsertRaw.mjs.map +1 -0
- package/reducers/arrayMove.d.ts +8 -0
- package/reducers/arrayMove.d.ts.map +1 -0
- package/reducers/arrayMove.js +25 -0
- package/reducers/arrayMove.js.map +1 -0
- package/reducers/arrayMove.mjs +16 -0
- package/reducers/arrayMove.mjs.map +1 -0
- package/reducers/arrayPop.d.ts +7 -0
- package/reducers/arrayPop.d.ts.map +1 -0
- package/reducers/arrayPop.js +13 -0
- package/reducers/arrayPop.js.map +1 -0
- package/reducers/arrayPop.mjs +5 -0
- package/reducers/arrayPop.mjs.map +1 -0
- package/reducers/arrayPush.d.ts +7 -0
- package/reducers/arrayPush.d.ts.map +1 -0
- package/reducers/arrayPush.js +15 -0
- package/reducers/arrayPush.js.map +1 -0
- package/reducers/arrayPush.mjs +11 -0
- package/reducers/arrayPush.mjs.map +1 -0
- package/reducers/arrayPushRaw.d.ts +7 -0
- package/reducers/arrayPushRaw.d.ts.map +1 -0
- package/reducers/arrayPushRaw.js +17 -0
- package/reducers/arrayPushRaw.js.map +1 -0
- package/reducers/arrayPushRaw.mjs +9 -0
- package/reducers/arrayPushRaw.mjs.map +1 -0
- package/reducers/arrayRemove.d.ts +7 -0
- package/reducers/arrayRemove.d.ts.map +1 -0
- package/reducers/arrayRemove.js +21 -0
- package/reducers/arrayRemove.js.map +1 -0
- package/reducers/arrayRemove.mjs +13 -0
- package/reducers/arrayRemove.mjs.map +1 -0
- package/reducers/arrayRemoveAll.d.ts +7 -0
- package/reducers/arrayRemoveAll.d.ts.map +1 -0
- package/reducers/arrayRemoveAll.js +14 -0
- package/reducers/arrayRemoveAll.js.map +1 -0
- package/reducers/arrayRemoveAll.mjs +8 -0
- package/reducers/arrayRemoveAll.mjs.map +1 -0
- package/reducers/arrayShift.d.ts +7 -0
- package/reducers/arrayShift.d.ts.map +1 -0
- package/reducers/arrayShift.js +14 -0
- package/reducers/arrayShift.js.map +1 -0
- package/reducers/arrayShift.mjs +8 -0
- package/reducers/arrayShift.mjs.map +1 -0
- package/reducers/arraySplice.d.ts +7 -0
- package/reducers/arraySplice.d.ts.map +1 -0
- package/reducers/arraySplice.js +20 -0
- package/reducers/arraySplice.js.map +1 -0
- package/reducers/arraySplice.mjs +14 -0
- package/reducers/arraySplice.mjs.map +1 -0
- package/reducers/arraySpliceRaw.d.ts +7 -0
- package/reducers/arraySpliceRaw.d.ts.map +1 -0
- package/reducers/arraySpliceRaw.js +26 -0
- package/reducers/arraySpliceRaw.js.map +1 -0
- package/reducers/arraySpliceRaw.mjs +18 -0
- package/reducers/arraySpliceRaw.mjs.map +1 -0
- package/reducers/arraySwap.d.ts +8 -0
- package/reducers/arraySwap.d.ts.map +1 -0
- package/reducers/arraySwap.js +27 -0
- package/reducers/arraySwap.js.map +1 -0
- package/reducers/arraySwap.mjs +18 -0
- package/reducers/arraySwap.mjs.map +1 -0
- package/reducers/arrayUnshift.d.ts +7 -0
- package/reducers/arrayUnshift.d.ts.map +1 -0
- package/reducers/arrayUnshift.js +15 -0
- package/reducers/arrayUnshift.js.map +1 -0
- package/reducers/arrayUnshift.mjs +11 -0
- package/reducers/arrayUnshift.mjs.map +1 -0
- package/reducers/arrayUnshiftRaw.d.ts +7 -0
- package/reducers/arrayUnshiftRaw.d.ts.map +1 -0
- package/reducers/arrayUnshiftRaw.js +17 -0
- package/reducers/arrayUnshiftRaw.js.map +1 -0
- package/reducers/arrayUnshiftRaw.mjs +9 -0
- package/reducers/arrayUnshiftRaw.mjs.map +1 -0
- package/reducers/initialize.d.ts +46 -0
- package/reducers/initialize.d.ts.map +1 -0
- package/reducers/initialize.js +46 -0
- package/reducers/initialize.js.map +1 -0
- package/reducers/initialize.mjs +38 -0
- package/reducers/initialize.mjs.map +1 -0
- package/reducers/removeHandlers.d.ts +24 -0
- package/reducers/removeHandlers.d.ts.map +1 -0
- package/reducers/removeHandlers.js +24 -0
- package/reducers/removeHandlers.js.map +1 -0
- package/reducers/removeHandlers.mjs +21 -0
- package/reducers/removeHandlers.mjs.map +1 -0
- package/reducers/setMeta.d.ts +6 -0
- package/reducers/setMeta.d.ts.map +1 -0
- package/reducers/setMeta.js +28 -0
- package/reducers/setMeta.js.map +1 -0
- package/reducers/setMeta.mjs +21 -0
- package/reducers/setMeta.mjs.map +1 -0
- package/reducers/setRawValue.d.ts +27 -0
- package/reducers/setRawValue.d.ts.map +1 -0
- package/reducers/setRawValue.js +35 -0
- package/reducers/setRawValue.js.map +1 -0
- package/reducers/setRawValue.mjs +26 -0
- package/reducers/setRawValue.mjs.map +1 -0
- package/reducers/setSubmitStatus.d.ts +24 -0
- package/reducers/setSubmitStatus.d.ts.map +1 -0
- package/reducers/setSubmitStatus.js +18 -0
- package/reducers/setSubmitStatus.js.map +1 -0
- package/reducers/setSubmitStatus.mjs +12 -0
- package/reducers/setSubmitStatus.mjs.map +1 -0
- package/reducers/setValue.d.ts +28 -0
- package/reducers/setValue.d.ts.map +1 -0
- package/reducers/setValue.js +41 -0
- package/reducers/setValue.js.map +1 -0
- package/reducers/setValue.mjs +32 -0
- package/reducers/setValue.mjs.map +1 -0
- package/reducers/submitSucceeded.d.ts +23 -0
- package/reducers/submitSucceeded.d.ts.map +1 -0
- package/reducers/submitSucceeded.js +22 -0
- package/reducers/submitSucceeded.js.map +1 -0
- package/reducers/submitSucceeded.mjs +13 -0
- package/reducers/submitSucceeded.mjs.map +1 -0
- package/reducers/util/getInverseArrayElementSchema.d.ts +3 -0
- package/reducers/util/getInverseArrayElementSchema.d.ts.map +1 -0
- package/reducers/util/getInverseArrayElementSchema.js +14 -0
- package/reducers/util/getInverseArrayElementSchema.js.map +1 -0
- package/reducers/util/getInverseArrayElementSchema.mjs +8 -0
- package/reducers/util/getInverseArrayElementSchema.mjs.map +1 -0
- package/reducers/util/updateRawArray.d.ts +7 -0
- package/reducers/util/updateRawArray.d.ts.map +1 -0
- package/reducers/util/updateRawArray.js +14 -0
- package/reducers/util/updateRawArray.js.map +1 -0
- package/reducers/util/updateRawArray.mjs +8 -0
- package/reducers/util/updateRawArray.mjs.map +1 -0
- package/src/FieldPath.ts +215 -0
- package/src/FormAction.ts +26 -0
- package/src/FormContext.ts +44 -0
- package/src/FormState.ts +36 -0
- package/src/FormStateContext.ts +13 -0
- package/src/actions/addHandlers.ts +23 -0
- package/src/actions/arrayActions.ts +183 -0
- package/src/actions/initialize.ts +16 -0
- package/src/actions/removeHandlers.ts +13 -0
- package/src/actions/setMeta.ts +17 -0
- package/src/actions/setMounted.ts +8 -0
- package/src/actions/setRawValue.ts +17 -0
- package/src/actions/setSubmitStatus.ts +26 -0
- package/src/actions/setValue.ts +21 -0
- package/src/actions/submit.ts +7 -0
- package/src/actions/submitSucceeded.ts +7 -0
- package/src/createFormMiddleware.ts +74 -0
- package/src/createFormProvider.tsx +101 -0
- package/src/createFormReducer.ts +91 -0
- package/src/createSelectFieldErrorMap.ts +47 -0
- package/src/createSelectFormStatus.ts +41 -0
- package/src/createSelectFormValues.ts +16 -0
- package/src/createZodForm.ts +57 -0
- package/src/index.ts +32 -0
- package/src/initFormState.ts +18 -0
- package/src/reducers/addHandlers.ts +21 -0
- package/src/reducers/arrayInsert.ts +19 -0
- package/src/reducers/arrayInsertRaw.ts +22 -0
- package/src/reducers/arrayMove.ts +36 -0
- package/src/reducers/arrayPop.ts +16 -0
- package/src/reducers/arrayPush.ts +20 -0
- package/src/reducers/arrayPushRaw.ts +18 -0
- package/src/reducers/arrayRemove.ts +22 -0
- package/src/reducers/arrayRemoveAll.ts +15 -0
- package/src/reducers/arrayShift.ts +15 -0
- package/src/reducers/arraySplice.ts +17 -0
- package/src/reducers/arraySpliceRaw.ts +30 -0
- package/src/reducers/arraySwap.ts +29 -0
- package/src/reducers/arrayUnshift.ts +16 -0
- package/src/reducers/arrayUnshiftRaw.ts +18 -0
- package/src/reducers/initialize.ts +47 -0
- package/src/reducers/removeHandlers.ts +21 -0
- package/src/reducers/setMeta.ts +26 -0
- package/src/reducers/setRawValue.ts +40 -0
- package/src/reducers/setSubmitStatus.ts +15 -0
- package/src/reducers/setValue.ts +49 -0
- package/src/reducers/submitSucceeded.ts +17 -0
- package/src/reducers/util/getInverseArrayElementSchema.ts +9 -0
- package/src/reducers/util/updateRawArray.ts +25 -0
- package/src/useArrayField.ts +161 -0
- package/src/useField.ts +152 -0
- package/src/useFormContext.ts +11 -0
- package/src/useFormDispatch.ts +13 -0
- package/src/useFormSelector.ts +9 -0
- package/src/useFormStatus.ts +14 -0
- package/src/useFormValues.ts +8 -0
- package/src/useHtmlField.ts +235 -0
- package/src/useInitialize.ts +14 -0
- package/src/useSubmit.ts +29 -0
- package/src/util/PathInSchema.ts +7 -0
- package/src/util/PathInType.ts +26 -0
- package/src/util/SchemaAt.ts +68 -0
- package/src/util/acceptsArray.ts +72 -0
- package/src/util/acceptsBigint.ts +71 -0
- package/src/util/acceptsNumber.ts +71 -0
- package/src/util/bindActionsToField.ts +22 -0
- package/src/util/get.ts +10 -0
- package/src/util/getArrayElementSchema.ts +74 -0
- package/src/util/maybeParse.ts +9 -0
- package/src/util/parsePathstring.ts +119 -0
- package/src/util/pathstring.ts +32 -0
- package/src/util/set.ts +25 -0
- package/src/util/setAdd.ts +6 -0
- package/src/util/setDelete.ts +6 -0
- package/useArrayField.d.ts +34 -0
- package/useArrayField.d.ts.map +1 -0
- package/useArrayField.js +99 -0
- package/useArrayField.js.map +1 -0
- package/useArrayField.mjs +75 -0
- package/useArrayField.mjs.map +1 -0
- package/useField.d.ts +34 -0
- package/useField.d.ts.map +1 -0
- package/useField.js +98 -0
- package/useField.js.map +1 -0
- package/useField.mjs +75 -0
- package/useField.mjs.map +1 -0
- package/useFormContext.d.ts +4 -0
- package/useFormContext.d.ts.map +1 -0
- package/useFormContext.js +17 -0
- package/useFormContext.js.map +1 -0
- package/useFormContext.mjs +10 -0
- package/useFormContext.mjs.map +1 -0
- package/useFormDispatch.d.ts +7 -0
- package/useFormDispatch.d.ts.map +1 -0
- package/useFormDispatch.js +10 -0
- package/useFormDispatch.js.map +1 -0
- package/useFormDispatch.mjs +4 -0
- package/useFormDispatch.mjs.map +1 -0
- package/useFormSelector.d.ts +6 -0
- package/useFormSelector.d.ts.map +1 -0
- package/useFormSelector.js +10 -0
- package/useFormSelector.js.map +1 -0
- package/useFormSelector.mjs +4 -0
- package/useFormSelector.mjs.map +1 -0
- package/useFormStatus.d.ts +13 -0
- package/useFormStatus.d.ts.map +1 -0
- package/useFormStatus.js +15 -0
- package/useFormStatus.js.map +1 -0
- package/useFormStatus.mjs +10 -0
- package/useFormStatus.mjs.map +1 -0
- package/useFormValues.d.ts +8 -0
- package/useFormValues.d.ts.map +1 -0
- package/useFormValues.js +14 -0
- package/useFormValues.js.map +1 -0
- package/useFormValues.mjs +9 -0
- package/useFormValues.mjs.map +1 -0
- package/useHtmlField.d.ts +41 -0
- package/useHtmlField.d.ts.map +1 -0
- package/useHtmlField.js +161 -0
- package/useHtmlField.js.map +1 -0
- package/useHtmlField.mjs +148 -0
- package/useHtmlField.mjs.map +1 -0
- package/useInitialize.d.ts +5 -0
- package/useInitialize.d.ts.map +1 -0
- package/useInitialize.js +18 -0
- package/useInitialize.js.map +1 -0
- package/useInitialize.mjs +11 -0
- package/useInitialize.mjs.map +1 -0
- package/useSubmit.d.ts +5 -0
- package/useSubmit.d.ts.map +1 -0
- package/useSubmit.js +53 -0
- package/useSubmit.js.map +1 -0
- package/useSubmit.mjs +39 -0
- package/useSubmit.mjs.map +1 -0
- package/util/PathInSchema.d.ts +5 -0
- package/util/PathInSchema.d.ts.map +1 -0
- package/util/PathInSchema.js +6 -0
- package/util/PathInSchema.js.map +1 -0
- package/util/PathInSchema.mjs +2 -0
- package/util/PathInSchema.mjs.map +1 -0
- package/util/PathInType.d.ts +11 -0
- package/util/PathInType.d.ts.map +1 -0
- package/util/PathInType.js +6 -0
- package/util/PathInType.js.map +1 -0
- package/util/PathInType.mjs +2 -0
- package/util/PathInType.mjs.map +1 -0
- package/util/SchemaAt.d.ts +5 -0
- package/util/SchemaAt.d.ts.map +1 -0
- package/util/SchemaAt.js +6 -0
- package/util/SchemaAt.js.map +1 -0
- package/util/SchemaAt.mjs +2 -0
- package/util/SchemaAt.mjs.map +1 -0
- package/util/acceptsArray.d.ts +3 -0
- package/util/acceptsArray.d.ts.map +1 -0
- package/util/acceptsArray.js +89 -0
- package/util/acceptsArray.js.map +1 -0
- package/util/acceptsArray.mjs +105 -0
- package/util/acceptsArray.mjs.map +1 -0
- package/util/acceptsBigint.d.ts +3 -0
- package/util/acceptsBigint.d.ts.map +1 -0
- package/util/acceptsBigint.js +88 -0
- package/util/acceptsBigint.js.map +1 -0
- package/util/acceptsBigint.mjs +104 -0
- package/util/acceptsBigint.mjs.map +1 -0
- package/util/acceptsNumber.d.ts +3 -0
- package/util/acceptsNumber.d.ts.map +1 -0
- package/util/acceptsNumber.js +88 -0
- package/util/acceptsNumber.js.map +1 -0
- package/util/acceptsNumber.mjs +104 -0
- package/util/acceptsNumber.mjs.map +1 -0
- package/util/bindActionsToField.d.ts +7 -0
- package/util/bindActionsToField.d.ts.map +1 -0
- package/util/bindActionsToField.js +22 -0
- package/util/bindActionsToField.js.map +1 -0
- package/util/bindActionsToField.mjs +4 -0
- package/util/bindActionsToField.mjs.map +1 -0
- package/util/get.d.ts +2 -0
- package/util/get.d.ts.map +1 -0
- package/util/get.js +12 -0
- package/util/get.js.map +1 -0
- package/util/get.mjs +4 -0
- package/util/get.mjs.map +1 -0
- package/util/getArrayElementSchema.d.ts +3 -0
- package/util/getArrayElementSchema.d.ts.map +1 -0
- package/util/getArrayElementSchema.js +87 -0
- package/util/getArrayElementSchema.js.map +1 -0
- package/util/getArrayElementSchema.mjs +102 -0
- package/util/getArrayElementSchema.mjs.map +1 -0
- package/util/maybeParse.d.ts +3 -0
- package/util/maybeParse.d.ts.map +1 -0
- package/util/maybeParse.js +11 -0
- package/util/maybeParse.js.map +1 -0
- package/util/maybeParse.mjs +5 -0
- package/util/maybeParse.mjs.map +1 -0
- package/util/parsePathstring.d.ts +40 -0
- package/util/parsePathstring.d.ts.map +1 -0
- package/util/parsePathstring.js +55 -0
- package/util/parsePathstring.js.map +1 -0
- package/util/parsePathstring.mjs +35 -0
- package/util/parsePathstring.mjs.map +1 -0
- package/util/pathstring.d.ts +13 -0
- package/util/pathstring.d.ts.map +1 -0
- package/util/pathstring.js +15 -0
- package/util/pathstring.js.map +1 -0
- package/util/pathstring.mjs +7 -0
- package/util/pathstring.mjs.map +1 -0
- package/util/set.d.ts +2 -0
- package/util/set.d.ts.map +1 -0
- package/util/set.js +33 -0
- package/util/set.js.map +1 -0
- package/util/set.mjs +23 -0
- package/util/set.mjs.map +1 -0
- package/util/setAdd.d.ts +2 -0
- package/util/setAdd.d.ts.map +1 -0
- package/util/setAdd.js +13 -0
- package/util/setAdd.js.map +1 -0
- package/util/setAdd.mjs +7 -0
- package/util/setAdd.mjs.map +1 -0
- package/util/setDelete.d.ts +2 -0
- package/util/setDelete.d.ts.map +1 -0
- package/util/setDelete.js +13 -0
- package/util/setDelete.js.map +1 -0
- package/util/setDelete.mjs +7 -0
- package/util/setDelete.mjs.map +1 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { FieldPath, FieldPathForRawValue } from './FieldPath';
|
|
3
|
+
import { PathInSchema, PathstringInSchema } from './util/PathInSchema';
|
|
4
|
+
import { parsePathstring } from './util/parsePathstring';
|
|
5
|
+
import { SchemaAt } from './util/SchemaAt';
|
|
6
|
+
import { bindActionsToField } from './util/bindActionsToField';
|
|
7
|
+
import { arrayActions } from './actions/arrayActions';
|
|
8
|
+
import { setValue } from './actions/setValue';
|
|
9
|
+
import { setRawValue } from './actions/setRawValue';
|
|
10
|
+
import { setMeta } from './actions/setMeta';
|
|
11
|
+
import { FieldMeta } from './FormState';
|
|
12
|
+
export type UseArrayFieldProps<Field extends FieldPath> = NonNullable<z.input<Field['schema']>> extends any[] ? FieldMeta & ReturnType<typeof bindActionsToField<typeof arrayActions & {
|
|
13
|
+
setValue: typeof setValue;
|
|
14
|
+
setRawValue: typeof setRawValue;
|
|
15
|
+
setMeta: typeof setMeta;
|
|
16
|
+
}>> & {
|
|
17
|
+
elements: FieldPath<SchemaAt<Field['schema'], [number]>>[];
|
|
18
|
+
error?: string;
|
|
19
|
+
dirty: boolean;
|
|
20
|
+
pristine: boolean;
|
|
21
|
+
valid: boolean;
|
|
22
|
+
invalid: boolean;
|
|
23
|
+
} : {
|
|
24
|
+
ERROR: 'not an array field';
|
|
25
|
+
};
|
|
26
|
+
export interface TypedUseArrayField<T extends z.ZodTypeAny> {
|
|
27
|
+
<Field extends FieldPathForRawValue<any[] | null | undefined>>(field: Field): UseArrayFieldProps<Field>;
|
|
28
|
+
<Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
29
|
+
<Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
|
|
30
|
+
}
|
|
31
|
+
export declare function useArrayField<Field extends FieldPath>(field: Field): UseArrayFieldProps<Field>;
|
|
32
|
+
export declare function useArrayField<T extends z.ZodTypeAny, Path extends PathInSchema<T>>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
33
|
+
export declare function useArrayField<T extends z.ZodTypeAny, Pathstring extends PathstringInSchema<T>>(field: Pathstring): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
|
|
34
|
+
//# sourceMappingURL=useArrayField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useArrayField.d.ts","sourceRoot":"","sources":["src/useArrayField.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAY,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAGvE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AASrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,SAAS,IAAI,WAAW,CACnE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CACzB,SAAS,GAAG,EAAE,GACX,SAAS,GACP,UAAU,CACR,OAAO,kBAAkB,CACvB,OAAO,YAAY,GAAG;IACpB,QAAQ,EAAE,OAAO,QAAQ,CAAA;IACzB,WAAW,EAAE,OAAO,WAAW,CAAA;IAC/B,OAAO,EAAE,OAAO,OAAO,CAAA;CACxB,CACF,CACF,GAAG;IACF,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CACjB,GACH;IAAE,KAAK,EAAE,oBAAoB,CAAA;CAAE,CAAA;AAEnC,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;IACxD,CAAC,KAAK,SAAS,oBAAoB,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,EAC3D,KAAK,EAAE,KAAK,GACX,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC,IAAI,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAC5D,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAC7B,CAAA;IACD,CAAC,UAAU,SAAS,kBAAkB,CAAC,CAAC,CAAC,EACvC,IAAI,EAAE,UAAU,GACf,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;CAC3E;AAsFD,wBAAgB,aAAa,CAAC,KAAK,SAAS,SAAS,EACnD,KAAK,EAAE,KAAK,GACX,kBAAkB,CAAC,KAAK,CAAC,CAAA;AAC5B,wBAAgB,aAAa,CAC3B,CAAC,SAAS,CAAC,CAAC,UAAU,EACtB,IAAI,SAAS,YAAY,CAAC,CAAC,CAAC,EAC5B,KAAK,EAAE,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAChE,wBAAgB,aAAa,CAC3B,CAAC,SAAS,CAAC,CAAC,UAAU,EACtB,UAAU,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAExC,KAAK,EAAE,UAAU,GAChB,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
package/useArrayField.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useArrayField = useArrayField;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _FieldPath = require("./FieldPath.js");
|
|
11
|
+
var _react = _interopRequireDefault(require("react"));
|
|
12
|
+
var _useFormContext3 = require("./useFormContext.js");
|
|
13
|
+
var _bindActionsToField = require("./util/bindActionsToField.js");
|
|
14
|
+
var _reselect = require("reselect");
|
|
15
|
+
var _get = require("./util/get.js");
|
|
16
|
+
var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
|
|
17
|
+
var _useFormSelector2 = require("./useFormSelector.js");
|
|
18
|
+
var _reactRedux = require("react-redux");
|
|
19
|
+
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
|
+
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
|
+
function useArrayFieldBase(field) {
|
|
22
|
+
var _useFormContext = (0, _useFormContext3.useFormContext)(),
|
|
23
|
+
arrayActions = _useFormContext.arrayActions,
|
|
24
|
+
setValue = _useFormContext.setValue,
|
|
25
|
+
setRawValue = _useFormContext.setRawValue,
|
|
26
|
+
setMeta = _useFormContext.setMeta,
|
|
27
|
+
selectFormValues = _useFormContext.selectFormValues,
|
|
28
|
+
selectFieldErrorMap = _useFormContext.selectFieldErrorMap;
|
|
29
|
+
var useFormSelector = _useFormSelector2.useFormSelector;
|
|
30
|
+
var valuesSelector = _react["default"].useMemo(function () {
|
|
31
|
+
return (0, _reselect.createSelector)([selectFormValues], (0, _reselect.createSelector)([(0, _reselect.createStructuredSelector)({
|
|
32
|
+
value: function value(_ref) {
|
|
33
|
+
var values = _ref.values;
|
|
34
|
+
return (0, _get.get)(values, field.path);
|
|
35
|
+
},
|
|
36
|
+
rawValue: function rawValue(_ref2) {
|
|
37
|
+
var rawValues = _ref2.rawValues;
|
|
38
|
+
return (0, _get.get)(rawValues, field.path);
|
|
39
|
+
},
|
|
40
|
+
initialValue: function initialValue(_ref3) {
|
|
41
|
+
var initialValues = _ref3.initialValues;
|
|
42
|
+
return (0, _get.get)(initialValues, field.path);
|
|
43
|
+
}
|
|
44
|
+
})], function (_ref4) {
|
|
45
|
+
var rawValue = _ref4.rawValue,
|
|
46
|
+
value = _ref4.value,
|
|
47
|
+
initialValue = _ref4.initialValue;
|
|
48
|
+
var dirty = !(0, _fastDeepEqual["default"])(value, initialValue);
|
|
49
|
+
var pristine = !dirty;
|
|
50
|
+
return {
|
|
51
|
+
dirty: dirty,
|
|
52
|
+
pristine: pristine,
|
|
53
|
+
length: Array.isArray(rawValue) ? rawValue.length : 0
|
|
54
|
+
};
|
|
55
|
+
}));
|
|
56
|
+
}, [field.pathstring]);
|
|
57
|
+
var _useFormSelector = useFormSelector(valuesSelector, _reactRedux.shallowEqual),
|
|
58
|
+
dirty = _useFormSelector.dirty,
|
|
59
|
+
pristine = _useFormSelector.pristine,
|
|
60
|
+
length = _useFormSelector.length;
|
|
61
|
+
var error = useFormSelector(function (state) {
|
|
62
|
+
return selectFieldErrorMap(state)[field.pathstring];
|
|
63
|
+
});
|
|
64
|
+
var meta = useFormSelector(function (state) {
|
|
65
|
+
return state.fieldMeta[field.pathstring];
|
|
66
|
+
});
|
|
67
|
+
var submitFailed = useFormSelector(function (state) {
|
|
68
|
+
return state.submitFailed;
|
|
69
|
+
});
|
|
70
|
+
var boundActions = _react["default"].useMemo(function () {
|
|
71
|
+
return (0, _bindActionsToField.bindActionsToField)(_objectSpread(_objectSpread({}, arrayActions), {}, {
|
|
72
|
+
setValue: setValue,
|
|
73
|
+
setRawValue: setRawValue,
|
|
74
|
+
setMeta: setMeta
|
|
75
|
+
}), field);
|
|
76
|
+
}, [field.pathstring]);
|
|
77
|
+
var elements = _react["default"].useMemo(function () {
|
|
78
|
+
return (0, _toConsumableArray2["default"])(new Array(length).keys()).map(function (index) {
|
|
79
|
+
return field.subfield(index);
|
|
80
|
+
});
|
|
81
|
+
}, [length]);
|
|
82
|
+
return _react["default"].useMemo(function () {
|
|
83
|
+
return _objectSpread(_objectSpread({}, boundActions), {}, {
|
|
84
|
+
visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
|
|
85
|
+
touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
|
|
86
|
+
elements: elements,
|
|
87
|
+
dirty: dirty,
|
|
88
|
+
pristine: pristine,
|
|
89
|
+
valid: !error,
|
|
90
|
+
invalid: Boolean(error)
|
|
91
|
+
});
|
|
92
|
+
}, [dirty, boundActions, elements, meta, submitFailed, error]);
|
|
93
|
+
}
|
|
94
|
+
function useArrayField(field) {
|
|
95
|
+
var _useFormContext2 = (0, _useFormContext3.useFormContext)(),
|
|
96
|
+
root = _useFormContext2.root;
|
|
97
|
+
return useArrayFieldBase(field instanceof _FieldPath.FieldPath ? field : root.get(field));
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=useArrayField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useArrayField.js","names":["_FieldPath","require","_react","_interopRequireDefault","_useFormContext3","_bindActionsToField","_reselect","_get","_fastDeepEqual","_useFormSelector2","_reactRedux","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useArrayFieldBase","field","_useFormContext","useFormContext","arrayActions","setValue","setRawValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","value","_ref","values","get","path","rawValue","_ref2","rawValues","initialValue","_ref3","initialValues","_ref4","dirty","isEqual","pristine","Array","isArray","pathstring","_useFormSelector","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","elements","_toConsumableArray2","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","_useFormContext2","root","FieldPath"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForRawValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setValue } from './actions/setValue'\nimport { setRawValue } from './actions/setRawValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\n\nexport type UseArrayFieldProps<Field extends FieldPath> = NonNullable<\n z.input<Field['schema']>\n> extends any[]\n ? FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n typeof arrayActions & {\n setValue: typeof setValue\n setRawValue: typeof setRawValue\n setMeta: typeof setMeta\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForRawValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type Schema = Field['schema']\n\n const {\n arrayActions,\n setValue,\n setRawValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<Schema>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as z.output<Schema> | undefined,\n rawValue: ({ rawValues }) =>\n get(rawValues, field.path) as unknown,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as z.output<Schema> | undefined,\n }),\n ],\n ({ rawValue, value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(rawValue) ? rawValue.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\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 () =>\n bindActionsToField(\n { ...arrayActions, setValue, setRawValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () => [...new Array(length).keys()].map((index) => field.subfield(index)),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny,\n Path extends PathInSchema<T>\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny,\n Pathstring extends PathstringInSchema<T>\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { FieldPath } from "./FieldPath.mjs";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { useFormContext } from "./useFormContext.mjs";
|
|
4
|
+
import { bindActionsToField } from "./util/bindActionsToField.mjs";
|
|
5
|
+
import { createSelector, createStructuredSelector } from 'reselect';
|
|
6
|
+
import { get } from "./util/get.mjs";
|
|
7
|
+
import isEqual from 'fast-deep-equal';
|
|
8
|
+
import { useFormSelector as untypedUseFormSelector } from "./useFormSelector.mjs";
|
|
9
|
+
import { shallowEqual } from 'react-redux';
|
|
10
|
+
function useArrayFieldBase(field) {
|
|
11
|
+
const {
|
|
12
|
+
arrayActions,
|
|
13
|
+
setValue,
|
|
14
|
+
setRawValue,
|
|
15
|
+
setMeta,
|
|
16
|
+
selectFormValues,
|
|
17
|
+
selectFieldErrorMap
|
|
18
|
+
} = useFormContext();
|
|
19
|
+
const useFormSelector = untypedUseFormSelector;
|
|
20
|
+
const valuesSelector = React.useMemo(() => createSelector([selectFormValues], createSelector([createStructuredSelector({
|
|
21
|
+
value: ({
|
|
22
|
+
values
|
|
23
|
+
}) => get(values, field.path),
|
|
24
|
+
rawValue: ({
|
|
25
|
+
rawValues
|
|
26
|
+
}) => get(rawValues, field.path),
|
|
27
|
+
initialValue: ({
|
|
28
|
+
initialValues
|
|
29
|
+
}) => get(initialValues, field.path)
|
|
30
|
+
})], ({
|
|
31
|
+
rawValue,
|
|
32
|
+
value,
|
|
33
|
+
initialValue
|
|
34
|
+
}) => {
|
|
35
|
+
const dirty = !isEqual(value, initialValue);
|
|
36
|
+
const pristine = !dirty;
|
|
37
|
+
return {
|
|
38
|
+
dirty,
|
|
39
|
+
pristine,
|
|
40
|
+
length: Array.isArray(rawValue) ? rawValue.length : 0
|
|
41
|
+
};
|
|
42
|
+
})), [field.pathstring]);
|
|
43
|
+
const {
|
|
44
|
+
dirty,
|
|
45
|
+
pristine,
|
|
46
|
+
length
|
|
47
|
+
} = useFormSelector(valuesSelector, shallowEqual);
|
|
48
|
+
const error = useFormSelector(state => selectFieldErrorMap(state)[field.pathstring]);
|
|
49
|
+
const meta = useFormSelector(state => state.fieldMeta[field.pathstring]);
|
|
50
|
+
const submitFailed = useFormSelector(state => state.submitFailed);
|
|
51
|
+
const boundActions = React.useMemo(() => bindActionsToField({
|
|
52
|
+
...arrayActions,
|
|
53
|
+
setValue,
|
|
54
|
+
setRawValue,
|
|
55
|
+
setMeta
|
|
56
|
+
}, field), [field.pathstring]);
|
|
57
|
+
const elements = React.useMemo(() => [...new Array(length).keys()].map(index => field.subfield(index)), [length]);
|
|
58
|
+
return React.useMemo(() => ({
|
|
59
|
+
...boundActions,
|
|
60
|
+
visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
|
|
61
|
+
touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
|
|
62
|
+
elements,
|
|
63
|
+
dirty,
|
|
64
|
+
pristine,
|
|
65
|
+
valid: !error,
|
|
66
|
+
invalid: Boolean(error)
|
|
67
|
+
}), [dirty, boundActions, elements, meta, submitFailed, error]);
|
|
68
|
+
}
|
|
69
|
+
export function useArrayField(field) {
|
|
70
|
+
const {
|
|
71
|
+
root
|
|
72
|
+
} = useFormContext();
|
|
73
|
+
return useArrayFieldBase(field instanceof FieldPath ? field : root.get(field));
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=useArrayField.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useArrayField.mjs","names":["FieldPath","React","useFormContext","bindActionsToField","createSelector","createStructuredSelector","get","isEqual","useFormSelector","untypedUseFormSelector","shallowEqual","useArrayFieldBase","field","arrayActions","setValue","setRawValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","value","values","path","rawValue","rawValues","initialValue","initialValues","dirty","pristine","length","Array","isArray","pathstring","error","state","meta","fieldMeta","submitFailed","boundActions","elements","keys","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","root"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForRawValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setValue } from './actions/setValue'\nimport { setRawValue } from './actions/setRawValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\n\nexport type UseArrayFieldProps<Field extends FieldPath> = NonNullable<\n z.input<Field['schema']>\n> extends any[]\n ? FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n typeof arrayActions & {\n setValue: typeof setValue\n setRawValue: typeof setRawValue\n setMeta: typeof setMeta\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForRawValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type Schema = Field['schema']\n\n const {\n arrayActions,\n setValue,\n setRawValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<Schema>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as z.output<Schema> | undefined,\n rawValue: ({ rawValues }) =>\n get(rawValues, field.path) as unknown,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as z.output<Schema> | undefined,\n }),\n ],\n ({ rawValue, value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(rawValue) ? rawValue.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\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 () =>\n bindActionsToField(\n { ...arrayActions, setValue, setRawValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () => [...new Array(length).keys()].map((index) => field.subfield(index)),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny,\n Path extends PathInSchema<T>\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny,\n Pathstring extends PathstringInSchema<T>\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
package/useField.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { FieldPath } from './FieldPath';
|
|
3
|
+
import { FieldMeta } from './FormState';
|
|
4
|
+
import { setValue } from './actions/setValue';
|
|
5
|
+
import { setRawValue } from './actions/setRawValue';
|
|
6
|
+
import { setMeta } from './actions/setMeta';
|
|
7
|
+
import { PathInSchema, PathstringInSchema } from './util/PathInSchema';
|
|
8
|
+
import { parsePathstring } from './util/parsePathstring';
|
|
9
|
+
import { SchemaAt } from './util/SchemaAt';
|
|
10
|
+
import { bindActionsToField } from './util/bindActionsToField';
|
|
11
|
+
export type UseFieldProps<Field extends FieldPath> = FieldMeta & ReturnType<typeof bindActionsToField<{
|
|
12
|
+
setValue: typeof setValue;
|
|
13
|
+
setRawValue: typeof setRawValue;
|
|
14
|
+
setMeta: typeof setMeta;
|
|
15
|
+
}>> & {
|
|
16
|
+
value: z.output<Field['schema']> | undefined;
|
|
17
|
+
rawValue: unknown;
|
|
18
|
+
initialValue: z.output<Field['schema']> | undefined;
|
|
19
|
+
rawInitialValue: unknown;
|
|
20
|
+
error?: string;
|
|
21
|
+
dirty: boolean;
|
|
22
|
+
pristine: boolean;
|
|
23
|
+
valid: boolean;
|
|
24
|
+
invalid: boolean;
|
|
25
|
+
};
|
|
26
|
+
export interface TypedUseField<T extends z.ZodTypeAny> {
|
|
27
|
+
<Field extends FieldPath>(field: Field): UseFieldProps<Field>;
|
|
28
|
+
<Path extends PathInSchema<T>>(path: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
29
|
+
<Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
|
|
30
|
+
}
|
|
31
|
+
export declare function useField<Field extends FieldPath>(field: Field): UseFieldProps<Field>;
|
|
32
|
+
export declare function useField<T extends z.ZodTypeAny, Path extends PathInSchema<T>>(field: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
33
|
+
export declare function useField<T extends z.ZodTypeAny, Pathstring extends PathstringInSchema<T>>(field: Pathstring): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
|
|
34
|
+
//# sourceMappingURL=useField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useField.d.ts","sourceRoot":"","sources":["src/useField.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAY,SAAS,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAS3C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,SAAS,IAAI,SAAS,GAC5D,UAAU,CACR,OAAO,kBAAkB,CAAC;IACxB,QAAQ,EAAE,OAAO,QAAQ,CAAA;IACzB,WAAW,EAAE,OAAO,WAAW,CAAA;IAC/B,OAAO,EAAE,OAAO,OAAO,CAAA;CACxB,CAAC,CACH,GAAG;IACF,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;IAC5C,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;IACnD,eAAe,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAEH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;IACnD,CAAC,KAAK,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IAC7D,CAAC,IAAI,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,aAAa,CACvD,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAC7B,CAAA;IACD,CAAC,UAAU,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,aAAa,CACzE,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CACpD,CAAA;CACF;AAmFD,wBAAgB,QAAQ,CAAC,KAAK,SAAS,SAAS,EAC9C,KAAK,EAAE,KAAK,GACX,aAAa,CAAC,KAAK,CAAC,CAAA;AACvB,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,IAAI,SAAS,YAAY,CAAC,CAAC,CAAC,EAC3E,KAAK,EAAE,IAAI,GACV,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAC9C,wBAAgB,QAAQ,CACtB,CAAC,SAAS,CAAC,CAAC,UAAU,EACtB,UAAU,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAExC,KAAK,EAAE,UAAU,GAChB,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
package/useField.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useField = useField;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _FieldPath = require("./FieldPath.js");
|
|
10
|
+
var _get = require("./util/get.js");
|
|
11
|
+
var _react = _interopRequireDefault(require("react"));
|
|
12
|
+
var _useFormSelector = require("./useFormSelector.js");
|
|
13
|
+
var _useFormContext3 = require("./useFormContext.js");
|
|
14
|
+
var _reselect = require("reselect");
|
|
15
|
+
var _reactRedux = require("react-redux");
|
|
16
|
+
var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
|
|
17
|
+
var _maybeParse = require("./util/maybeParse.js");
|
|
18
|
+
var _bindActionsToField = require("./util/bindActionsToField.js");
|
|
19
|
+
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
|
+
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
|
+
function useFieldBase(field) {
|
|
22
|
+
var _useFormContext = (0, _useFormContext3.useFormContext)(),
|
|
23
|
+
setValue = _useFormContext.setValue,
|
|
24
|
+
setRawValue = _useFormContext.setRawValue,
|
|
25
|
+
setMeta = _useFormContext.setMeta,
|
|
26
|
+
selectFormValues = _useFormContext.selectFormValues,
|
|
27
|
+
selectFieldErrorMap = _useFormContext.selectFieldErrorMap;
|
|
28
|
+
var useFormSelector = _useFormSelector.useFormSelector;
|
|
29
|
+
var valuesSelector = _react["default"].useMemo(function () {
|
|
30
|
+
return (0, _reselect.createSelector)([selectFormValues], (0, _reselect.createSelector)([(0, _reselect.createStructuredSelector)({
|
|
31
|
+
value: function value(_ref) {
|
|
32
|
+
var values = _ref.values;
|
|
33
|
+
return (0, _get.get)(values, field.path);
|
|
34
|
+
},
|
|
35
|
+
rawValue: function rawValue(_ref2) {
|
|
36
|
+
var rawValues = _ref2.rawValues;
|
|
37
|
+
return (0, _get.get)(rawValues, field.path);
|
|
38
|
+
},
|
|
39
|
+
initialValue: function initialValue(_ref3) {
|
|
40
|
+
var initialValues = _ref3.initialValues;
|
|
41
|
+
return (0, _get.get)(initialValues, field.path);
|
|
42
|
+
},
|
|
43
|
+
rawInitialValue: function rawInitialValue(_ref4) {
|
|
44
|
+
var rawInitialValues = _ref4.rawInitialValues;
|
|
45
|
+
return (0, _get.get)(rawInitialValues, field.path);
|
|
46
|
+
}
|
|
47
|
+
})], function (_ref5) {
|
|
48
|
+
var rawValue = _ref5.rawValue,
|
|
49
|
+
_ref5$value = _ref5.value,
|
|
50
|
+
value = _ref5$value === void 0 ? (0, _maybeParse.maybeParse)(field.schema, rawValue) : _ref5$value,
|
|
51
|
+
rawInitialValue = _ref5.rawInitialValue,
|
|
52
|
+
_ref5$initialValue = _ref5.initialValue,
|
|
53
|
+
initialValue = _ref5$initialValue === void 0 ? (0, _maybeParse.maybeParse)(field.schema, rawInitialValue) : _ref5$initialValue;
|
|
54
|
+
var dirty = !(0, _fastDeepEqual["default"])(value, initialValue);
|
|
55
|
+
var pristine = !dirty;
|
|
56
|
+
return {
|
|
57
|
+
value: value,
|
|
58
|
+
rawValue: rawValue,
|
|
59
|
+
initialValue: initialValue,
|
|
60
|
+
rawInitialValue: rawInitialValue,
|
|
61
|
+
dirty: dirty,
|
|
62
|
+
pristine: pristine
|
|
63
|
+
};
|
|
64
|
+
}));
|
|
65
|
+
}, [field.pathstring]);
|
|
66
|
+
var values = useFormSelector(valuesSelector, _reactRedux.shallowEqual);
|
|
67
|
+
var error = useFormSelector(function (state) {
|
|
68
|
+
return selectFieldErrorMap(state)[field.pathstring];
|
|
69
|
+
});
|
|
70
|
+
var meta = useFormSelector(function (state) {
|
|
71
|
+
return state.fieldMeta[field.pathstring];
|
|
72
|
+
});
|
|
73
|
+
var submitFailed = useFormSelector(function (state) {
|
|
74
|
+
return state.submitFailed;
|
|
75
|
+
});
|
|
76
|
+
var boundActions = _react["default"].useMemo(function () {
|
|
77
|
+
return (0, _bindActionsToField.bindActionsToField)({
|
|
78
|
+
setValue: setValue,
|
|
79
|
+
setRawValue: setRawValue,
|
|
80
|
+
setMeta: setMeta
|
|
81
|
+
}, field);
|
|
82
|
+
}, [field.pathstring]);
|
|
83
|
+
return _react["default"].useMemo(function () {
|
|
84
|
+
return _objectSpread(_objectSpread(_objectSpread({}, boundActions), values), {}, {
|
|
85
|
+
visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
|
|
86
|
+
touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
|
|
87
|
+
error: error,
|
|
88
|
+
valid: !error,
|
|
89
|
+
invalid: Boolean(error)
|
|
90
|
+
});
|
|
91
|
+
}, [field.pathstring, values, meta, error, submitFailed]);
|
|
92
|
+
}
|
|
93
|
+
function useField(field) {
|
|
94
|
+
var _useFormContext2 = (0, _useFormContext3.useFormContext)(),
|
|
95
|
+
root = _useFormContext2.root;
|
|
96
|
+
return useFieldBase(field instanceof _FieldPath.FieldPath ? field : root.get(field));
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=useField.js.map
|
package/useField.js.map
ADDED
|
@@ -0,0 +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","setValue","setRawValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","value","_ref","values","get","path","rawValue","_ref2","rawValues","initialValue","_ref3","initialValues","rawInitialValue","_ref4","rawInitialValues","_ref5","_ref5$value","maybeParse","schema","_ref5$initialValue","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 { setValue } from './actions/setValue'\nimport { setRawValue } from './actions/setRawValue'\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'\n\nexport type UseFieldProps<Field extends FieldPath> = FieldMeta &\n ReturnType<\n typeof bindActionsToField<{\n setValue: typeof setValue\n setRawValue: typeof setRawValue\n setMeta: typeof setMeta\n }>\n > & {\n value: z.output<Field['schema']> | undefined\n rawValue: unknown\n initialValue: z.output<Field['schema']> | undefined\n rawInitialValue: unknown\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>>(path: Path): UseFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseFieldProps<\n FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>\n >\n}\n\nfunction useFieldBase<T extends z.ZodTypeAny, Field extends FieldPath>(\n field: Field\n): UseFieldProps<Field> {\n type Schema = Field['schema']\n\n const {\n setValue,\n setRawValue,\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 value: ({ values }) =>\n get(values, field.path) as z.output<Schema> | undefined,\n rawValue: ({ rawValues }) =>\n get(rawValues, field.path) as unknown,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as z.output<Schema> | undefined,\n rawInitialValue: ({ rawInitialValues }) =>\n get(rawInitialValues, field.path) as unknown,\n }),\n ],\n ({\n rawValue,\n value = maybeParse(field.schema, rawValue),\n rawInitialValue,\n initialValue = maybeParse(field.schema, rawInitialValue),\n }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n value,\n rawValue,\n initialValue,\n rawInitialValue,\n dirty,\n pristine,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const values = 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({ setValue, setRawValue, setMeta }, field),\n [field.pathstring]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n ...values,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n valid: !error,\n invalid: Boolean(error),\n }),\n [field.pathstring, values, meta, error, submitFailed]\n ) as any\n}\n\nexport function useField<Field extends FieldPath>(\n field: Field\n): UseFieldProps<Field>\nexport function useField<T extends z.ZodTypeAny, Path extends PathInSchema<T>>(\n field: Path\n): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useField<\n T extends z.ZodTypeAny,\n Pathstring extends PathstringInSchema<T>\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> {\n const { root } = useFormContext<T>()\n return useFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAIA,IAAAI,gBAAA,GAAAJ,OAAA;AAIA,IAAAK,gBAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AACA,IAAAO,WAAA,GAAAP,OAAA;AACA,IAAAQ,cAAA,GAAAL,sBAAA,CAAAH,OAAA;AAIA,IAAAS,WAAA,GAAAT,OAAA;AACA,IAAAU,mBAAA,GAAAV,OAAA;AAA8D,SAAAW,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AA+B9D,SAASoB,YAAYA,CACnBC,KAAY,EACU;EAGtB,IAAAC,eAAA,GAMI,IAAAC,+BAAc,EAAI,CAAC;IALrBC,QAAQ,GAAAF,eAAA,CAARE,QAAQ;IACRC,WAAW,GAAAH,eAAA,CAAXG,WAAW;IACXC,OAAO,GAAAJ,eAAA,CAAPI,OAAO;IACPC,gBAAgB,GAAAL,eAAA,CAAhBK,gBAAgB;IAChBC,mBAAmB,GAAAN,eAAA,CAAnBM,mBAAmB;EAGrB,IAAMC,eAAe,GAAGC,gCAAiD;EAEzE,IAAMC,cAAc,GAAGC,iBAAK,CAACC,OAAO,CAClC;IAAA,OACE,IAAAC,wBAAc,EACZ,CAACP,gBAAgB,CAAC,EAClB,IAAAO,wBAAc,EACZ,CACE,IAAAC,kCAAwB,EAAC;MACvBC,KAAK,EAAE,SAAAA,MAAAC,IAAA;QAAA,IAAGC,MAAM,GAAAD,IAAA,CAANC,MAAM;QAAA,OACd,IAAAC,QAAG,EAACD,MAAM,EAAEjB,KAAK,CAACmB,IAAI,CAAC;MAAA,CAAgC;MACzDC,QAAQ,EAAE,SAAAA,SAAAC,KAAA;QAAA,IAAGC,SAAS,GAAAD,KAAA,CAATC,SAAS;QAAA,OACpB,IAAAJ,QAAG,EAACI,SAAS,EAAEtB,KAAK,CAACmB,IAAI,CAAC;MAAA,CAAW;MACvCI,YAAY,EAAE,SAAAA,aAAAC,KAAA;QAAA,IAAGC,aAAa,GAAAD,KAAA,CAAbC,aAAa;QAAA,OAC5B,IAAAP,QAAG,EAACO,aAAa,EAAEzB,KAAK,CAACmB,IAAI,CAAC;MAAA,CAAgC;MAChEO,eAAe,EAAE,SAAAA,gBAAAC,KAAA;QAAA,IAAGC,gBAAgB,GAAAD,KAAA,CAAhBC,gBAAgB;QAAA,OAClC,IAAAV,QAAG,EAACU,gBAAgB,EAAE5B,KAAK,CAACmB,IAAI,CAAC;MAAA;IACrC,CAAC,CAAC,CACH,EACD,UAAAU,KAAA,EAKM;MAAA,IAJJT,QAAQ,GAAAS,KAAA,CAART,QAAQ;QAAAU,WAAA,GAAAD,KAAA,CACRd,KAAK;QAALA,KAAK,GAAAe,WAAA,cAAG,IAAAC,sBAAU,EAAC/B,KAAK,CAACgC,MAAM,EAAEZ,QAAQ,CAAC,GAAAU,WAAA;QAC1CJ,eAAe,GAAAG,KAAA,CAAfH,eAAe;QAAAO,kBAAA,GAAAJ,KAAA,CACfN,YAAY;QAAZA,YAAY,GAAAU,kBAAA,cAAG,IAAAF,sBAAU,EAAC/B,KAAK,CAACgC,MAAM,EAAEN,eAAe,CAAC,GAAAO,kBAAA;MAExD,IAAMC,KAAK,GAAG,CAAC,IAAAC,yBAAO,EAACpB,KAAK,EAAEQ,YAAY,CAAC;MAC3C,IAAMa,QAAQ,GAAG,CAACF,KAAK;MACvB,OAAO;QACLnB,KAAK,EAALA,KAAK;QACLK,QAAQ,EAARA,QAAQ;QACRG,YAAY,EAAZA,YAAY;QACZG,eAAe,EAAfA,eAAe;QACfQ,KAAK,EAALA,KAAK;QACLE,QAAQ,EAARA;MACF,CAAC;IACH,CACF,CACF,CAAC;EAAA,GACH,CAACpC,KAAK,CAACqC,UAAU,CACnB,CAAC;EAED,IAAMpB,MAAM,GAAGT,eAAe,CAACE,cAAc,EAAE4B,wBAAY,CAAC;EAE5D,IAAMC,KAAK,GAAG/B,eAAe,CAC3B,UAACgC,KAAK;IAAA,OAAKjC,mBAAmB,CAACiC,KAAK,CAAC,CAACxC,KAAK,CAACqC,UAAU,CAAC;EAAA,CACzD,CAAC;EACD,IAAMI,IAAI,GAAGjC,eAAe,CAAC,UAACgC,KAAK;IAAA,OAAKA,KAAK,CAACE,SAAS,CAAC1C,KAAK,CAACqC,UAAU,CAAC;EAAA,EAAC;EAC1E,IAAMM,YAAY,GAAGnC,eAAe,CAAC,UAACgC,KAAK;IAAA,OAAKA,KAAK,CAACG,YAAY;EAAA,EAAC;EAEnE,IAAMC,YAAY,GAAGjC,iBAAK,CAACC,OAAO,CAChC;IAAA,OAAM,IAAAiC,sCAAkB,EAAC;MAAE1C,QAAQ,EAARA,QAAQ;MAAEC,WAAW,EAAXA,WAAW;MAAEC,OAAO,EAAPA;IAAQ,CAAC,EAAEL,KAAK,CAAC;EAAA,GACnE,CAACA,KAAK,CAACqC,UAAU,CACnB,CAAC;EAED,OAAO1B,iBAAK,CAACC,OAAO,CAClB;IAAA,OAAArB,aAAA,CAAAA,aAAA,CAAAA,aAAA,KACKqD,YAAY,GACZ3B,MAAM;MACT6B,OAAO,EAAE,CAAAL,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,OAAO,KAAI,KAAK;MAC/BC,OAAO,EAAE,CAAAN,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEM,OAAO,KAAIJ,YAAY;MACtCJ,KAAK,EAALA,KAAK;MACLS,KAAK,EAAE,CAACT,KAAK;MACbU,OAAO,EAAEC,OAAO,CAACX,KAAK;IAAC;EAAA,CACvB,EACF,CAACvC,KAAK,CAACqC,UAAU,EAAEpB,MAAM,EAAEwB,IAAI,EAAEF,KAAK,EAAEI,YAAY,CACtD,CAAC;AACH;AAcO,SAASQ,QAAQA,CACtBnD,KAAoC,EAChB;EACpB,IAAAoD,gBAAA,GAAiB,IAAAlD,+BAAc,EAAI,CAAC;IAA5BmD,IAAI,GAAAD,gBAAA,CAAJC,IAAI;EACZ,OAAOtD,YAAY,CACjBC,KAAK,YAAYsD,oBAAS,GAAGtD,KAAK,GAAGqD,IAAI,CAACnC,GAAG,CAAClB,KAAY,CAC5D,CAAC;AACH","ignoreList":[]}
|
package/useField.mjs
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { FieldPath } from "./FieldPath.mjs";
|
|
2
|
+
import { get } from "./util/get.mjs";
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { useFormSelector as untypedUseFormSelector } from "./useFormSelector.mjs";
|
|
5
|
+
import { useFormContext } from "./useFormContext.mjs";
|
|
6
|
+
import { createSelector, createStructuredSelector } from 'reselect';
|
|
7
|
+
import { shallowEqual } from 'react-redux';
|
|
8
|
+
import isEqual from 'fast-deep-equal';
|
|
9
|
+
import { maybeParse } from "./util/maybeParse.mjs";
|
|
10
|
+
import { bindActionsToField } from "./util/bindActionsToField.mjs";
|
|
11
|
+
function useFieldBase(field) {
|
|
12
|
+
const {
|
|
13
|
+
setValue,
|
|
14
|
+
setRawValue,
|
|
15
|
+
setMeta,
|
|
16
|
+
selectFormValues,
|
|
17
|
+
selectFieldErrorMap
|
|
18
|
+
} = useFormContext();
|
|
19
|
+
const useFormSelector = untypedUseFormSelector;
|
|
20
|
+
const valuesSelector = React.useMemo(() => createSelector([selectFormValues], createSelector([createStructuredSelector({
|
|
21
|
+
value: ({
|
|
22
|
+
values
|
|
23
|
+
}) => get(values, field.path),
|
|
24
|
+
rawValue: ({
|
|
25
|
+
rawValues
|
|
26
|
+
}) => get(rawValues, field.path),
|
|
27
|
+
initialValue: ({
|
|
28
|
+
initialValues
|
|
29
|
+
}) => get(initialValues, field.path),
|
|
30
|
+
rawInitialValue: ({
|
|
31
|
+
rawInitialValues
|
|
32
|
+
}) => get(rawInitialValues, field.path)
|
|
33
|
+
})], ({
|
|
34
|
+
rawValue,
|
|
35
|
+
value = maybeParse(field.schema, rawValue),
|
|
36
|
+
rawInitialValue,
|
|
37
|
+
initialValue = maybeParse(field.schema, rawInitialValue)
|
|
38
|
+
}) => {
|
|
39
|
+
const dirty = !isEqual(value, initialValue);
|
|
40
|
+
const pristine = !dirty;
|
|
41
|
+
return {
|
|
42
|
+
value,
|
|
43
|
+
rawValue,
|
|
44
|
+
initialValue,
|
|
45
|
+
rawInitialValue,
|
|
46
|
+
dirty,
|
|
47
|
+
pristine
|
|
48
|
+
};
|
|
49
|
+
})), [field.pathstring]);
|
|
50
|
+
const values = useFormSelector(valuesSelector, shallowEqual);
|
|
51
|
+
const error = useFormSelector(state => selectFieldErrorMap(state)[field.pathstring]);
|
|
52
|
+
const meta = useFormSelector(state => state.fieldMeta[field.pathstring]);
|
|
53
|
+
const submitFailed = useFormSelector(state => state.submitFailed);
|
|
54
|
+
const boundActions = React.useMemo(() => bindActionsToField({
|
|
55
|
+
setValue,
|
|
56
|
+
setRawValue,
|
|
57
|
+
setMeta
|
|
58
|
+
}, field), [field.pathstring]);
|
|
59
|
+
return React.useMemo(() => ({
|
|
60
|
+
...boundActions,
|
|
61
|
+
...values,
|
|
62
|
+
visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
|
|
63
|
+
touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
|
|
64
|
+
error,
|
|
65
|
+
valid: !error,
|
|
66
|
+
invalid: Boolean(error)
|
|
67
|
+
}), [field.pathstring, values, meta, error, submitFailed]);
|
|
68
|
+
}
|
|
69
|
+
export function useField(field) {
|
|
70
|
+
const {
|
|
71
|
+
root
|
|
72
|
+
} = useFormContext();
|
|
73
|
+
return useFieldBase(field instanceof FieldPath ? field : root.get(field));
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=useField.mjs.map
|
package/useField.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useField.mjs","names":["FieldPath","get","React","useFormSelector","untypedUseFormSelector","useFormContext","createSelector","createStructuredSelector","shallowEqual","isEqual","maybeParse","bindActionsToField","useFieldBase","field","setValue","setRawValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","value","values","path","rawValue","rawValues","initialValue","initialValues","rawInitialValue","rawInitialValues","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 { setValue } from './actions/setValue'\nimport { setRawValue } from './actions/setRawValue'\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'\n\nexport type UseFieldProps<Field extends FieldPath> = FieldMeta &\n ReturnType<\n typeof bindActionsToField<{\n setValue: typeof setValue\n setRawValue: typeof setRawValue\n setMeta: typeof setMeta\n }>\n > & {\n value: z.output<Field['schema']> | undefined\n rawValue: unknown\n initialValue: z.output<Field['schema']> | undefined\n rawInitialValue: unknown\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>>(path: Path): UseFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseFieldProps<\n FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>\n >\n}\n\nfunction useFieldBase<T extends z.ZodTypeAny, Field extends FieldPath>(\n field: Field\n): UseFieldProps<Field> {\n type Schema = Field['schema']\n\n const {\n setValue,\n setRawValue,\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 value: ({ values }) =>\n get(values, field.path) as z.output<Schema> | undefined,\n rawValue: ({ rawValues }) =>\n get(rawValues, field.path) as unknown,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as z.output<Schema> | undefined,\n rawInitialValue: ({ rawInitialValues }) =>\n get(rawInitialValues, field.path) as unknown,\n }),\n ],\n ({\n rawValue,\n value = maybeParse(field.schema, rawValue),\n rawInitialValue,\n initialValue = maybeParse(field.schema, rawInitialValue),\n }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n value,\n rawValue,\n initialValue,\n rawInitialValue,\n dirty,\n pristine,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const values = 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({ setValue, setRawValue, setMeta }, field),\n [field.pathstring]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n ...values,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n valid: !error,\n invalid: Boolean(error),\n }),\n [field.pathstring, values, meta, error, submitFailed]\n ) as any\n}\n\nexport function useField<Field extends FieldPath>(\n field: Field\n): UseFieldProps<Field>\nexport function useField<T extends z.ZodTypeAny, Path extends PathInSchema<T>>(\n field: Path\n): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useField<\n T extends z.ZodTypeAny,\n Pathstring extends PathstringInSchema<T>\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> {\n const { root } = useFormContext<T>()\n return useFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"AACA,SAAmBA,SAAS;AAE5B,SAASC,GAAG;AACZ,OAAOC,KAAK,MAAM,OAAO;AAIzB,SACEC,eAAe,IAAIC,sBAAsB;AAG3C,SAASC,cAAc;AACvB,SAASC,cAAc,EAAEC,wBAAwB,QAAQ,UAAU;AACnE,SAASC,YAAY,QAAQ,aAAa;AAC1C,OAAOC,OAAO,MAAM,iBAAiB;AAIrC,SAASC,UAAU;AACnB,SAASC,kBAAkB;AA+B3B,SAASC,YAAYA,CACnBC,KAAY,EACU;EAGtB,MAAM;IACJC,QAAQ;IACRC,WAAW;IACXC,OAAO;IACPC,gBAAgB;IAChBC;EACF,CAAC,GAAGb,cAAc,CAAI,CAAC;EAEvB,MAAMF,eAAe,GAAGC,sBAAiD;EAEzE,MAAMe,cAAc,GAAGjB,KAAK,CAACkB,OAAO,CAClC,MACEd,cAAc,CACZ,CAACW,gBAAgB,CAAC,EAClBX,cAAc,CACZ,CACEC,wBAAwB,CAAC;IACvBc,KAAK,EAAEA,CAAC;MAAEC;IAAO,CAAC,KAChBrB,GAAG,CAACqB,MAAM,EAAET,KAAK,CAACU,IAAI,CAAiC;IACzDC,QAAQ,EAAEA,CAAC;MAAEC;IAAU,CAAC,KACtBxB,GAAG,CAACwB,SAAS,EAAEZ,KAAK,CAACU,IAAI,CAAY;IACvCG,YAAY,EAAEA,CAAC;MAAEC;IAAc,CAAC,KAC9B1B,GAAG,CAAC0B,aAAa,EAAEd,KAAK,CAACU,IAAI,CAAiC;IAChEK,eAAe,EAAEA,CAAC;MAAEC;IAAiB,CAAC,KACpC5B,GAAG,CAAC4B,gBAAgB,EAAEhB,KAAK,CAACU,IAAI;EACpC,CAAC,CAAC,CACH,EACD,CAAC;IACCC,QAAQ;IACRH,KAAK,GAAGX,UAAU,CAACG,KAAK,CAACiB,MAAM,EAAEN,QAAQ,CAAC;IAC1CI,eAAe;IACfF,YAAY,GAAGhB,UAAU,CAACG,KAAK,CAACiB,MAAM,EAAEF,eAAe;EACzD,CAAC,KAAK;IACJ,MAAMG,KAAK,GAAG,CAACtB,OAAO,CAACY,KAAK,EAAEK,YAAY,CAAC;IAC3C,MAAMM,QAAQ,GAAG,CAACD,KAAK;IACvB,OAAO;MACLV,KAAK;MACLG,QAAQ;MACRE,YAAY;MACZE,eAAe;MACfG,KAAK;MACLC;IACF,CAAC;EACH,CACF,CACF,CAAC,EACH,CAACnB,KAAK,CAACoB,UAAU,CACnB,CAAC;EAED,MAAMX,MAAM,GAAGnB,eAAe,CAACgB,cAAc,EAAEX,YAAY,CAAC;EAE5D,MAAM0B,KAAK,GAAG/B,eAAe,CAC1BgC,KAAK,IAAKjB,mBAAmB,CAACiB,KAAK,CAAC,CAACtB,KAAK,CAACoB,UAAU,CACxD,CAAC;EACD,MAAMG,IAAI,GAAGjC,eAAe,CAAEgC,KAAK,IAAKA,KAAK,CAACE,SAAS,CAACxB,KAAK,CAACoB,UAAU,CAAC,CAAC;EAC1E,MAAMK,YAAY,GAAGnC,eAAe,CAAEgC,KAAK,IAAKA,KAAK,CAACG,YAAY,CAAC;EAEnE,MAAMC,YAAY,GAAGrC,KAAK,CAACkB,OAAO,CAChC,MAAMT,kBAAkB,CAAC;IAAEG,QAAQ;IAAEC,WAAW;IAAEC;EAAQ,CAAC,EAAEH,KAAK,CAAC,EACnE,CAACA,KAAK,CAACoB,UAAU,CACnB,CAAC;EAED,OAAO/B,KAAK,CAACkB,OAAO,CAClB,OAAO;IACL,GAAGmB,YAAY;IACf,GAAGjB,MAAM;IACTkB,OAAO,EAAE,CAAAJ,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEI,OAAO,KAAI,KAAK;IAC/BC,OAAO,EAAE,CAAAL,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,OAAO,KAAIH,YAAY;IACtCJ,KAAK;IACLQ,KAAK,EAAE,CAACR,KAAK;IACbS,OAAO,EAAEC,OAAO,CAACV,KAAK;EACxB,CAAC,CAAC,EACF,CAACrB,KAAK,CAACoB,UAAU,EAAEX,MAAM,EAAEc,IAAI,EAAEF,KAAK,EAAEI,YAAY,CACtD,CAAC;AACH;AAcA,OAAO,SAASO,QAAQA,CACtBhC,KAAoC,EAChB;EACpB,MAAM;IAAEiC;EAAK,CAAC,GAAGzC,cAAc,CAAI,CAAC;EACpC,OAAOO,YAAY,CACjBC,KAAK,YAAYb,SAAS,GAAGa,KAAK,GAAGiC,IAAI,CAAC7C,GAAG,CAACY,KAAY,CAC5D,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormContext.d.ts","sourceRoot":"","sources":["src/useFormContext.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,OAAO,EAAe,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAE7D,wBAAgB,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAM5E"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useFormContext = useFormContext;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _FormContext = require("./FormContext.js");
|
|
10
|
+
function useFormContext() {
|
|
11
|
+
var props = _react["default"].useContext(_FormContext.FormContext);
|
|
12
|
+
if (!props) {
|
|
13
|
+
throw new Error("must be used inside a <FormProvider>");
|
|
14
|
+
}
|
|
15
|
+
return props;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=useFormContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormContext.js","names":["_react","_interopRequireDefault","require","_FormContext","useFormContext","props","React","useContext","FormContext","Error"],"sources":["src/useFormContext.ts"],"sourcesContent":["import z from 'zod'\nimport React from 'react'\nimport { FormContext, FormContextProps } from './FormContext'\n\nexport function useFormContext<T extends z.ZodTypeAny>(): FormContextProps<T> {\n const props: FormContextProps<T> = React.useContext(FormContext) as any\n if (!props) {\n throw new Error(`must be used inside a <FormProvider>`)\n }\n return props\n}\n"],"mappings":";;;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEO,SAASE,cAAcA,CAAA,EAAgD;EAC5E,IAAMC,KAA0B,GAAGC,iBAAK,CAACC,UAAU,CAACC,wBAAW,CAAQ;EACvE,IAAI,CAACH,KAAK,EAAE;IACV,MAAM,IAAII,KAAK,uCAAuC,CAAC;EACzD;EACA,OAAOJ,KAAK;AACd","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { FormContext } from "./FormContext.mjs";
|
|
3
|
+
export function useFormContext() {
|
|
4
|
+
const props = React.useContext(FormContext);
|
|
5
|
+
if (!props) {
|
|
6
|
+
throw new Error(`must be used inside a <FormProvider>`);
|
|
7
|
+
}
|
|
8
|
+
return props;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=useFormContext.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormContext.mjs","names":["React","FormContext","useFormContext","props","useContext","Error"],"sources":["src/useFormContext.ts"],"sourcesContent":["import z from 'zod'\nimport React from 'react'\nimport { FormContext, FormContextProps } from './FormContext'\n\nexport function useFormContext<T extends z.ZodTypeAny>(): FormContextProps<T> {\n const props: FormContextProps<T> = React.useContext(FormContext) as any\n if (!props) {\n throw new Error(`must be used inside a <FormProvider>`)\n }\n return props\n}\n"],"mappings":"AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW;AAEpB,OAAO,SAASC,cAAcA,CAAA,EAAgD;EAC5E,MAAMC,KAA0B,GAAGH,KAAK,CAACI,UAAU,CAACH,WAAW,CAAQ;EACvE,IAAI,CAACE,KAAK,EAAE;IACV,MAAM,IAAIE,KAAK,CAAC,sCAAsC,CAAC;EACzD;EACA,OAAOF,KAAK;AACd","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { FormAction } from './FormAction';
|
|
3
|
+
import { Dispatch } from 'redux';
|
|
4
|
+
export declare const useFormDispatch: typeof useFormDispatchType;
|
|
5
|
+
declare function useFormDispatchType<T extends z.ZodTypeAny>(): Dispatch<FormAction<T>>;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=useFormDispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormDispatch.d.ts","sourceRoot":"","sources":["src/useFormDispatch.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,eAAO,MAAM,eAAe,EAEvB,OAAO,mBAAmB,CAAA;AAE/B,OAAO,UAAU,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK,QAAQ,CACtE,UAAU,CAAC,CAAC,CAAC,CACd,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useFormDispatch = void 0;
|
|
7
|
+
var _reactRedux = require("react-redux");
|
|
8
|
+
var _FormStateContext = require("./FormStateContext.js");
|
|
9
|
+
var useFormDispatch = exports.useFormDispatch = (0, _reactRedux.createDispatchHook)(_FormStateContext.FormStateContext);
|
|
10
|
+
//# sourceMappingURL=useFormDispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormDispatch.js","names":["_reactRedux","require","_FormStateContext","useFormDispatch","exports","createDispatchHook","FormStateContext"],"sources":["src/useFormDispatch.ts"],"sourcesContent":["import { createDispatchHook } from 'react-redux'\nimport { FormStateContext } from './FormStateContext'\nimport z from 'zod'\nimport { FormAction } from './FormAction'\nimport { Dispatch } from 'redux'\n\nexport const useFormDispatch = createDispatchHook(\n FormStateContext\n) as typeof useFormDispatchType\n\ndeclare function useFormDispatchType<T extends z.ZodTypeAny>(): Dispatch<\n FormAction<T>\n>\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAKO,IAAME,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,IAAAE,8BAAkB,EAC/CC,kCACF,CAA+B","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormDispatch.mjs","names":["createDispatchHook","FormStateContext","useFormDispatch"],"sources":["src/useFormDispatch.ts"],"sourcesContent":["import { createDispatchHook } from 'react-redux'\nimport { FormStateContext } from './FormStateContext'\nimport z from 'zod'\nimport { FormAction } from './FormAction'\nimport { Dispatch } from 'redux'\n\nexport const useFormDispatch = createDispatchHook(\n FormStateContext\n) as typeof useFormDispatchType\n\ndeclare function useFormDispatchType<T extends z.ZodTypeAny>(): Dispatch<\n FormAction<T>\n>\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,aAAa;AAChD,SAASC,gBAAgB;AAKzB,OAAO,MAAMC,eAAe,GAAGF,kBAAkB,CAC/CC,gBACF,CAA+B","ignoreList":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TypedUseSelectorHook } from 'react-redux';
|
|
2
|
+
import { FormState } from './FormState';
|
|
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.ts.map
|