@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 @@
|
|
|
1
|
+
{"version":3,"file":"useFormSelector.d.ts","sourceRoot":"","sources":["src/useFormSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,eAAO,MAAM,eAAe,4CAAuC,CAAA;AACnE,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,IAAI,oBAAoB,CAC7E,SAAS,CAAC,CAAC,CAAC,CACb,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useFormSelector = void 0;
|
|
7
|
+
var _reactRedux = require("react-redux");
|
|
8
|
+
var _FormStateContext = require("./FormStateContext.js");
|
|
9
|
+
var useFormSelector = exports.useFormSelector = (0, _reactRedux.createSelectorHook)(_FormStateContext.FormStateContext);
|
|
10
|
+
//# sourceMappingURL=useFormSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormSelector.js","names":["_reactRedux","require","_FormStateContext","useFormSelector","exports","createSelectorHook","FormStateContext"],"sources":["src/useFormSelector.ts"],"sourcesContent":["import { createSelectorHook, TypedUseSelectorHook } from 'react-redux'\nimport { FormStateContext } from './FormStateContext'\nimport { FormState } from './FormState'\nimport z from 'zod'\n\nexport const useFormSelector = createSelectorHook(FormStateContext)\nexport type TypedUseFormSelector<T extends z.ZodTypeAny> = TypedUseSelectorHook<\n FormState<T>\n>\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAIO,IAAME,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,IAAAE,8BAAkB,EAACC,kCAAgB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormSelector.mjs","names":["createSelectorHook","FormStateContext","useFormSelector"],"sources":["src/useFormSelector.ts"],"sourcesContent":["import { createSelectorHook, TypedUseSelectorHook } from 'react-redux'\nimport { FormStateContext } from './FormStateContext'\nimport { FormState } from './FormState'\nimport z from 'zod'\n\nexport const useFormSelector = createSelectorHook(FormStateContext)\nexport type TypedUseFormSelector<T extends z.ZodTypeAny> = TypedUseSelectorHook<\n FormState<T>\n>\n"],"mappings":"AAAA,SAASA,kBAAkB,QAA8B,aAAa;AACtE,SAASC,gBAAgB;AAIzB,OAAO,MAAMC,eAAe,GAAGF,kBAAkB,CAACC,gBAAgB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare function useFormStatus(): {
|
|
2
|
+
initialized: boolean;
|
|
3
|
+
submitting: boolean;
|
|
4
|
+
submitSucceeded: boolean;
|
|
5
|
+
submitFailed: boolean;
|
|
6
|
+
submitError: Error | undefined;
|
|
7
|
+
validationError: any;
|
|
8
|
+
valid: boolean;
|
|
9
|
+
invalid: boolean;
|
|
10
|
+
pristine: boolean;
|
|
11
|
+
dirty: boolean;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=useFormStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormStatus.d.ts","sourceRoot":"","sources":["src/useFormStatus.ts"],"names":[],"mappings":"AAUA,wBAAgB,aAAa;;;;;;;;;;;EAG5B"}
|
package/useFormStatus.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useFormStatus = useFormStatus;
|
|
7
|
+
var _useFormSelector = require("./useFormSelector.js");
|
|
8
|
+
var _useFormContext2 = require("./useFormContext.js");
|
|
9
|
+
var useFormSelector = _useFormSelector.useFormSelector;
|
|
10
|
+
function useFormStatus() {
|
|
11
|
+
var _useFormContext = (0, _useFormContext2.useFormContext)(),
|
|
12
|
+
selectFormStatus = _useFormContext.selectFormStatus;
|
|
13
|
+
return useFormSelector(selectFormStatus);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=useFormStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormStatus.js","names":["_useFormSelector","require","_useFormContext2","useFormSelector","untypedUseFormSelector","useFormStatus","_useFormContext","useFormContext","selectFormStatus"],"sources":["src/useFormStatus.ts"],"sourcesContent":["import z from 'zod'\nimport {\n useFormSelector as untypedUseFormSelector,\n TypedUseFormSelector,\n} from './useFormSelector'\nimport { useFormContext } from './useFormContext'\n\nconst useFormSelector =\n untypedUseFormSelector as TypedUseFormSelector<z.ZodTypeAny>\n\nexport function useFormStatus() {\n const { selectFormStatus } = useFormContext()\n return useFormSelector(selectFormStatus)\n}\n"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AAIA,IAAAC,gBAAA,GAAAD,OAAA;AAEA,IAAME,eAAe,GACnBC,gCAA4D;AAEvD,SAASC,aAAaA,CAAA,EAAG;EAC9B,IAAAC,eAAA,GAA6B,IAAAC,+BAAc,EAAC,CAAC;IAArCC,gBAAgB,GAAAF,eAAA,CAAhBE,gBAAgB;EACxB,OAAOL,eAAe,CAACK,gBAAgB,CAAC;AAC1C","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useFormSelector as untypedUseFormSelector } from "./useFormSelector.mjs";
|
|
2
|
+
import { useFormContext } from "./useFormContext.mjs";
|
|
3
|
+
const useFormSelector = untypedUseFormSelector;
|
|
4
|
+
export function useFormStatus() {
|
|
5
|
+
const {
|
|
6
|
+
selectFormStatus
|
|
7
|
+
} = useFormContext();
|
|
8
|
+
return useFormSelector(selectFormStatus);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=useFormStatus.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormStatus.mjs","names":["useFormSelector","untypedUseFormSelector","useFormContext","useFormStatus","selectFormStatus"],"sources":["src/useFormStatus.ts"],"sourcesContent":["import z from 'zod'\nimport {\n useFormSelector as untypedUseFormSelector,\n TypedUseFormSelector,\n} from './useFormSelector'\nimport { useFormContext } from './useFormContext'\n\nconst useFormSelector =\n untypedUseFormSelector as TypedUseFormSelector<z.ZodTypeAny>\n\nexport function useFormStatus() {\n const { selectFormStatus } = useFormContext()\n return useFormSelector(selectFormStatus)\n}\n"],"mappings":"AACA,SACEA,eAAe,IAAIC,sBAAsB;AAG3C,SAASC,cAAc;AAEvB,MAAMF,eAAe,GACnBC,sBAA4D;AAE9D,OAAO,SAASE,aAAaA,CAAA,EAAG;EAC9B,MAAM;IAAEC;EAAiB,CAAC,GAAGF,cAAc,CAAC,CAAC;EAC7C,OAAOF,eAAe,CAACI,gBAAgB,CAAC;AAC1C","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
export declare function useFormValues<T extends z.ZodTypeAny>(): {
|
|
3
|
+
values: z.output<T> | undefined;
|
|
4
|
+
rawValues: unknown;
|
|
5
|
+
initialValues: z.output<T> | undefined;
|
|
6
|
+
rawInitialValues: unknown;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=useFormValues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormValues.d.ts","sourceRoot":"","sources":["src/useFormValues.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAInB,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;;;;;EAGnD"}
|
package/useFormValues.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useFormValues = useFormValues;
|
|
7
|
+
var _useFormSelector = require("./useFormSelector.js");
|
|
8
|
+
var _useFormContext2 = require("./useFormContext.js");
|
|
9
|
+
function useFormValues() {
|
|
10
|
+
var _useFormContext = (0, _useFormContext2.useFormContext)(),
|
|
11
|
+
selectFormValues = _useFormContext.selectFormValues;
|
|
12
|
+
return (0, _useFormSelector.useFormSelector)(selectFormValues);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=useFormValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormValues.js","names":["_useFormSelector","require","_useFormContext2","useFormValues","_useFormContext","useFormContext","selectFormValues","useFormSelector"],"sources":["src/useFormValues.ts"],"sourcesContent":["import z from 'zod'\nimport { useFormSelector, TypedUseFormSelector } from './useFormSelector'\nimport { useFormContext } from './useFormContext'\n\nexport function useFormValues<T extends z.ZodTypeAny>() {\n const { selectFormValues } = useFormContext<T>()\n return (useFormSelector as TypedUseFormSelector<T>)(selectFormValues)\n}\n"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEO,SAASE,aAAaA,CAAA,EAA2B;EACtD,IAAAC,eAAA,GAA6B,IAAAC,+BAAc,EAAI,CAAC;IAAxCC,gBAAgB,GAAAF,eAAA,CAAhBE,gBAAgB;EACxB,OAAO,IAACC,gCAAe,EAA6BD,gBAAgB,CAAC;AACvE","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useFormSelector } from "./useFormSelector.mjs";
|
|
2
|
+
import { useFormContext } from "./useFormContext.mjs";
|
|
3
|
+
export function useFormValues() {
|
|
4
|
+
const {
|
|
5
|
+
selectFormValues
|
|
6
|
+
} = useFormContext();
|
|
7
|
+
return useFormSelector(selectFormValues);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=useFormValues.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormValues.mjs","names":["useFormSelector","useFormContext","useFormValues","selectFormValues"],"sources":["src/useFormValues.ts"],"sourcesContent":["import z from 'zod'\nimport { useFormSelector, TypedUseFormSelector } from './useFormSelector'\nimport { useFormContext } from './useFormContext'\n\nexport function useFormValues<T extends z.ZodTypeAny>() {\n const { selectFormValues } = useFormContext<T>()\n return (useFormSelector as TypedUseFormSelector<T>)(selectFormValues)\n}\n"],"mappings":"AACA,SAASA,eAAe;AACxB,SAASC,cAAc;AAEvB,OAAO,SAASC,aAAaA,CAAA,EAA2B;EACtD,MAAM;IAAEC;EAAiB,CAAC,GAAGF,cAAc,CAAI,CAAC;EAChD,OAAQD,eAAe,CAA6BG,gBAAgB,CAAC;AACvE","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { FieldPath } from './FieldPath';
|
|
3
|
+
import { UseFieldProps } from './useField';
|
|
4
|
+
import React, { HTMLInputTypeAttribute } from 'react';
|
|
5
|
+
import { PathInSchema, PathstringInSchema } from './util/PathInSchema';
|
|
6
|
+
import { parsePathstring } from './util/parsePathstring';
|
|
7
|
+
import { SchemaAt } from './util/SchemaAt';
|
|
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
|
+
type UseHtmlFieldOptions<Field, Schema extends z.ZodTypeAny> = {
|
|
28
|
+
field: Field;
|
|
29
|
+
type: z.input<Schema> extends boolean | null | undefined ? 'checkbox' : Exclude<HTMLInputTypeAttribute, 'checkbox'>;
|
|
30
|
+
normalizeOnBlur?: boolean;
|
|
31
|
+
};
|
|
32
|
+
export interface TypedUseHtmlField<T extends z.ZodTypeAny> {
|
|
33
|
+
<Field extends FieldPath>(options: UseHtmlFieldOptions<Field, Field['schema']>): UseHtmlFieldProps<Field>;
|
|
34
|
+
<Path extends PathInSchema<T>>(options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
35
|
+
<Path extends PathstringInSchema<T>>(options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>;
|
|
36
|
+
}
|
|
37
|
+
export declare function useHtmlField<Field extends FieldPath>(options: UseHtmlFieldOptions<Field, Field['schema']>): UseHtmlFieldProps<Field>;
|
|
38
|
+
export declare function useHtmlField<T extends z.ZodTypeAny, Path extends PathInSchema<T>>(options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
39
|
+
export declare function useHtmlField<T extends z.ZodTypeAny, Path extends PathstringInSchema<T>>(options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=useHtmlField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHtmlField.d.ts","sourceRoot":"","sources":["src/useHtmlField.ts"],"names":[],"mappings":"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"}
|
package/useHtmlField.js
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useHtmlField = useHtmlField;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
|
+
var _FieldPath = require("./FieldPath.js");
|
|
12
|
+
var _useField = require("./useField.js");
|
|
13
|
+
var _react = _interopRequireDefault(require("react"));
|
|
14
|
+
var _zodInvertible = require("zod-invertible");
|
|
15
|
+
var _useFormContext2 = require("./useFormContext.js");
|
|
16
|
+
var _acceptsNumber = require("./util/acceptsNumber.js");
|
|
17
|
+
var _acceptsBigint = require("./util/acceptsBigint.js");
|
|
18
|
+
var _excluded = ["value", "rawValue", "initialValue", "rawInitialValue", "setValue", "setRawValue", "setMeta"],
|
|
19
|
+
_excluded2 = ["field"];
|
|
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; }
|
|
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; }
|
|
22
|
+
function useHtmlFieldBase(options) {
|
|
23
|
+
var field = options.field,
|
|
24
|
+
type = options.type,
|
|
25
|
+
_options$normalizeOnB = options.normalizeOnBlur,
|
|
26
|
+
normalizeOnBlur = _options$normalizeOnB === void 0 ? true : _options$normalizeOnB;
|
|
27
|
+
var props = (0, _useField.useField)(field);
|
|
28
|
+
var value = props.value,
|
|
29
|
+
rawValue = props.rawValue,
|
|
30
|
+
initialValue = props.initialValue,
|
|
31
|
+
rawInitialValue = props.rawInitialValue,
|
|
32
|
+
setValue = props.setValue,
|
|
33
|
+
setRawValue = props.setRawValue,
|
|
34
|
+
setMeta = props.setMeta,
|
|
35
|
+
meta = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
36
|
+
var schema = field.schema;
|
|
37
|
+
|
|
38
|
+
// tempRawValue is used for storing blank text when we've coerced the
|
|
39
|
+
// raw value to null or undefined, or storing numeric text when we've
|
|
40
|
+
// coerced the raw value to a number or bigint.
|
|
41
|
+
// This way we can set a raw value that will parse better in the form
|
|
42
|
+
// state without interfering with the text the user is typing.
|
|
43
|
+
var _React$useState = _react["default"].useState(rawValue),
|
|
44
|
+
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
|
45
|
+
tempRawValue = _React$useState2[0],
|
|
46
|
+
setTempRawValue = _React$useState2[1];
|
|
47
|
+
var tryNumber = _react["default"].useMemo(function () {
|
|
48
|
+
return (0, _acceptsNumber.acceptsNumber)(schema);
|
|
49
|
+
}, [schema]);
|
|
50
|
+
var tryBigint = _react["default"].useMemo(function () {
|
|
51
|
+
return (0, _acceptsBigint.acceptsBigint)(schema);
|
|
52
|
+
}, [schema]);
|
|
53
|
+
var onChange = _react["default"].useCallback(function (e) {
|
|
54
|
+
if (e.currentTarget instanceof HTMLInputElement) {
|
|
55
|
+
var _rawValue = getRawValue(e.currentTarget);
|
|
56
|
+
var normalized = normalizeRawValue(_rawValue, {
|
|
57
|
+
schema: schema,
|
|
58
|
+
tryNumber: tryNumber,
|
|
59
|
+
tryBigint: tryBigint
|
|
60
|
+
});
|
|
61
|
+
if (typeof _rawValue === 'string' && typeof normalized !== 'string') {
|
|
62
|
+
setTempRawValue(_rawValue);
|
|
63
|
+
}
|
|
64
|
+
setRawValue(normalized);
|
|
65
|
+
}
|
|
66
|
+
}, [getRawValue, setRawValue, schema]);
|
|
67
|
+
var onFocus = _react["default"].useCallback(function () {
|
|
68
|
+
setMeta({
|
|
69
|
+
visited: true
|
|
70
|
+
});
|
|
71
|
+
}, []);
|
|
72
|
+
var onBlur = _react["default"].useCallback(function (e) {
|
|
73
|
+
if (e.currentTarget instanceof HTMLInputElement) {
|
|
74
|
+
var _rawValue2 = normalizeRawValue(getRawValue(e.currentTarget), {
|
|
75
|
+
schema: schema,
|
|
76
|
+
tryNumber: tryNumber,
|
|
77
|
+
tryBigint: tryBigint
|
|
78
|
+
});
|
|
79
|
+
if (normalizeOnBlur) {
|
|
80
|
+
var parsed = field.schema.safeParse(_rawValue2);
|
|
81
|
+
var formatted = parsed.success ? (0, _zodInvertible.invert)(field.schema).safeParse(parsed.data) : undefined;
|
|
82
|
+
if (formatted !== null && formatted !== void 0 && formatted.success) _rawValue2 = formatted.data;
|
|
83
|
+
}
|
|
84
|
+
setRawValue(_rawValue2);
|
|
85
|
+
setTempRawValue(undefined);
|
|
86
|
+
}
|
|
87
|
+
setMeta({
|
|
88
|
+
visited: true,
|
|
89
|
+
touched: true
|
|
90
|
+
});
|
|
91
|
+
}, [getRawValue, setRawValue, schema]);
|
|
92
|
+
return _react["default"].useMemo(function () {
|
|
93
|
+
return {
|
|
94
|
+
input: _objectSpread(_objectSpread({
|
|
95
|
+
name: field.pathstring,
|
|
96
|
+
type: type,
|
|
97
|
+
value: typeof rawValue === 'boolean' ? String(rawValue) : typeof rawValue === 'string' ? rawValue || tempRawValue || '' : tempRawValue || (rawValue == null ? '' : String(rawValue) || '')
|
|
98
|
+
}, type === 'checkbox' && {
|
|
99
|
+
checked: Boolean(rawValue)
|
|
100
|
+
}), {}, {
|
|
101
|
+
onChange: onChange,
|
|
102
|
+
onFocus: onFocus,
|
|
103
|
+
onBlur: onBlur
|
|
104
|
+
}),
|
|
105
|
+
meta: _objectSpread(_objectSpread({}, meta), {}, {
|
|
106
|
+
value: value,
|
|
107
|
+
rawValue: rawValue,
|
|
108
|
+
initialValue: initialValue,
|
|
109
|
+
rawInitialValue: rawInitialValue,
|
|
110
|
+
setValue: setValue,
|
|
111
|
+
setRawValue: setRawValue,
|
|
112
|
+
setMeta: setMeta
|
|
113
|
+
})
|
|
114
|
+
};
|
|
115
|
+
}, [props, tempRawValue, onChange]);
|
|
116
|
+
}
|
|
117
|
+
function getRawValue(el) {
|
|
118
|
+
return el.type === 'checkbox' ? el.checked : el.value;
|
|
119
|
+
}
|
|
120
|
+
function normalizeBlank(schema) {
|
|
121
|
+
if (schema.safeParse(undefined).success) return undefined;
|
|
122
|
+
if (schema.safeParse(null).success) return null;
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
function safeBigInt(rawValue) {
|
|
126
|
+
try {
|
|
127
|
+
return BigInt(rawValue);
|
|
128
|
+
} catch (error) {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function normalizeRawValue(rawValue, _ref) {
|
|
133
|
+
var schema = _ref.schema,
|
|
134
|
+
tryNumber = _ref.tryNumber,
|
|
135
|
+
tryBigint = _ref.tryBigint;
|
|
136
|
+
if (typeof rawValue === 'boolean') return rawValue;
|
|
137
|
+
if (typeof rawValue === 'string' && !/\S/.test(rawValue)) {
|
|
138
|
+
return normalizeBlank(schema);
|
|
139
|
+
}
|
|
140
|
+
if (typeof rawValue === 'string' && !schema.safeParse(rawValue).success) {
|
|
141
|
+
if (tryNumber) {
|
|
142
|
+
var num = Number(rawValue);
|
|
143
|
+
if (!isNaN(num)) return num;
|
|
144
|
+
}
|
|
145
|
+
if (tryBigint) {
|
|
146
|
+
var bigint = safeBigInt(rawValue);
|
|
147
|
+
if (bigint != null) return bigint;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return rawValue;
|
|
151
|
+
}
|
|
152
|
+
function useHtmlField(_ref2) {
|
|
153
|
+
var field = _ref2.field,
|
|
154
|
+
rest = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
|
|
155
|
+
var _useFormContext = (0, _useFormContext2.useFormContext)(),
|
|
156
|
+
root = _useFormContext.root;
|
|
157
|
+
return useHtmlFieldBase(_objectSpread({
|
|
158
|
+
field: field instanceof _FieldPath.FieldPath ? field : root.get(field)
|
|
159
|
+
}, rest));
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=useHtmlField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHtmlField.js","names":["_FieldPath","require","_useField","_react","_interopRequireDefault","_zodInvertible","_useFormContext2","_acceptsNumber","_acceptsBigint","_excluded","_excluded2","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useHtmlFieldBase","options","field","type","_options$normalizeOnB","normalizeOnBlur","props","useField","value","rawValue","initialValue","rawInitialValue","setValue","setRawValue","setMeta","meta","_objectWithoutProperties2","schema","_React$useState","React","useState","_React$useState2","_slicedToArray2","tempRawValue","setTempRawValue","tryNumber","useMemo","acceptsNumber","tryBigint","acceptsBigint","onChange","useCallback","currentTarget","HTMLInputElement","getRawValue","normalized","normalizeRawValue","onFocus","visited","onBlur","parsed","safeParse","formatted","success","invert","data","undefined","touched","input","name","pathstring","String","checked","Boolean","el","normalizeBlank","safeBigInt","BigInt","error","_ref","test","num","Number","isNaN","bigint","useHtmlField","_ref2","rest","_useFormContext","useFormContext","root","FieldPath","get"],"sources":["src/useHtmlField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath } from './FieldPath'\nimport { useField, UseFieldProps } from './useField'\nimport React, { HTMLInputTypeAttribute } from 'react'\nimport { invert } from 'zod-invertible'\nimport { useFormContext } from './useFormContext'\nimport { acceptsNumber } from './util/acceptsNumber'\nimport { acceptsBigint } from './util/acceptsBigint'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\n\nexport type HtmlFieldInputProps = {\n name: string\n type: HTMLInputTypeAttribute\n value: string\n checked?: boolean\n onChange: React.ChangeEventHandler\n onFocus: React.FocusEventHandler\n onBlur: React.FocusEventHandler\n}\n\nexport type ValidUseHtmlFieldProps<Field extends FieldPath> = {\n input: HtmlFieldInputProps\n meta: UseFieldProps<Field>\n}\n\nexport type UseHtmlFieldProps<Field extends FieldPath> = z.input<\n Field['schema']\n> extends string | number | bigint | boolean | null | undefined\n ? {\n input: HtmlFieldInputProps\n meta: UseFieldProps<Field>\n }\n : {\n ERROR: 'field schema input must be a nullish string, number, boolean or bigint'\n }\n\ntype UseHtmlFieldOptions<Field, Schema extends z.ZodTypeAny> = {\n field: Field\n type: z.input<Schema> extends boolean | null | undefined\n ? 'checkbox'\n : Exclude<HTMLInputTypeAttribute, 'checkbox'>\n normalizeOnBlur?: boolean\n}\n\nexport interface TypedUseHtmlField<T extends z.ZodTypeAny> {\n <Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n ): UseHtmlFieldProps<Field>\n <Path extends PathInSchema<T>>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>\n ): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Path extends PathstringInSchema<T>>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>\n ): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>\n}\n\nfunction useHtmlFieldBase<Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n): UseHtmlFieldProps<Field> {\n const { field, type, normalizeOnBlur = true } = options\n const props = useField(field)\n const {\n value,\n rawValue,\n initialValue,\n rawInitialValue,\n setValue,\n setRawValue,\n setMeta,\n ...meta\n } = props\n\n const { schema } = field\n\n // tempRawValue is used for storing blank text when we've coerced the\n // raw value to null or undefined, or storing numeric text when we've\n // coerced the raw value to a number or bigint.\n // This way we can set a raw value that will parse better in the form\n // state without interfering with the text the user is typing.\n const [tempRawValue, setTempRawValue] = React.useState(\n rawValue as string | null | undefined\n )\n\n const tryNumber = React.useMemo(() => acceptsNumber(schema), [schema])\n const tryBigint = React.useMemo(() => acceptsBigint(schema), [schema])\n\n const onChange = React.useCallback(\n (e: React.ChangeEvent) => {\n if (e.currentTarget instanceof HTMLInputElement) {\n const rawValue = getRawValue(e.currentTarget)\n const normalized = normalizeRawValue(rawValue, {\n schema,\n tryNumber,\n tryBigint,\n })\n if (typeof rawValue === 'string' && typeof normalized !== 'string') {\n setTempRawValue(rawValue)\n }\n setRawValue(normalized)\n }\n },\n [getRawValue, setRawValue, schema]\n )\n\n const onFocus = React.useCallback(() => {\n setMeta({ visited: true })\n }, [])\n\n const onBlur = React.useCallback(\n (e: React.FocusEvent) => {\n if (e.currentTarget instanceof HTMLInputElement) {\n let rawValue = normalizeRawValue(getRawValue(e.currentTarget), {\n schema,\n tryNumber,\n tryBigint,\n })\n if (normalizeOnBlur) {\n const parsed = field.schema.safeParse(rawValue)\n const formatted = parsed.success\n ? invert(field.schema).safeParse(parsed.data)\n : undefined\n if (formatted?.success) rawValue = formatted.data\n }\n setRawValue(rawValue)\n setTempRawValue(undefined)\n }\n setMeta({ visited: true, touched: true })\n },\n [getRawValue, setRawValue, schema]\n )\n\n return React.useMemo(\n (): ValidUseHtmlFieldProps<Field> => ({\n input: {\n name: field.pathstring,\n type,\n value:\n typeof rawValue === 'boolean'\n ? String(rawValue)\n : typeof rawValue === 'string'\n ? rawValue || tempRawValue || ''\n : tempRawValue || (rawValue == null ? '' : String(rawValue) || ''),\n ...(type === 'checkbox' && { checked: Boolean(rawValue) }),\n onChange,\n onFocus,\n onBlur,\n },\n meta: {\n ...meta,\n value,\n rawValue,\n initialValue,\n rawInitialValue,\n setValue,\n setRawValue,\n setMeta,\n },\n }),\n [props, tempRawValue, onChange]\n ) as any\n}\n\nfunction getRawValue(el: HTMLInputElement | HTMLSelectElement) {\n return el.type === 'checkbox' ? el.checked : el.value\n}\n\nfunction normalizeBlank(schema: z.ZodTypeAny): any {\n if (schema.safeParse(undefined).success) return undefined\n if (schema.safeParse(null).success) return null\n return undefined\n}\n\nfunction safeBigInt(rawValue: string): bigint | undefined {\n try {\n return BigInt(rawValue)\n } catch (error) {\n return undefined\n }\n}\n\nfunction normalizeRawValue(\n rawValue: string | boolean,\n {\n schema,\n tryNumber,\n tryBigint,\n }: { schema: z.ZodTypeAny; tryNumber: boolean; tryBigint: boolean }\n): string | boolean | number | bigint | null | undefined {\n if (typeof rawValue === 'boolean') return rawValue\n if (typeof rawValue === 'string' && !/\\S/.test(rawValue)) {\n return normalizeBlank(schema)\n }\n if (typeof rawValue === 'string' && !schema.safeParse(rawValue).success) {\n if (tryNumber) {\n const num = Number(rawValue)\n if (!isNaN(num)) return num\n }\n if (tryBigint) {\n const bigint = safeBigInt(rawValue)\n if (bigint != null) return bigint\n }\n }\n return rawValue\n}\n\nexport function useHtmlField<Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n): UseHtmlFieldProps<Field>\nexport function useHtmlField<\n T extends z.ZodTypeAny,\n Path extends PathInSchema<T>\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useHtmlField<\n T extends z.ZodTypeAny,\n Path extends PathstringInSchema<T>\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>\nexport function useHtmlField({\n field,\n ...rest\n}: UseHtmlFieldOptions<\n FieldPath | BasePath,\n z.ZodTypeAny\n>): UseHtmlFieldProps<any> {\n const { root } = useFormContext()\n return useHtmlFieldBase({\n field: field instanceof FieldPath ? field : root.get(field),\n ...rest,\n })\n}\n"],"mappings":"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","ignoreList":[]}
|
package/useHtmlField.mjs
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { FieldPath } from "./FieldPath.mjs";
|
|
2
|
+
import { useField } from "./useField.mjs";
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { invert } from 'zod-invertible';
|
|
5
|
+
import { useFormContext } from "./useFormContext.mjs";
|
|
6
|
+
import { acceptsNumber } from "./util/acceptsNumber.mjs";
|
|
7
|
+
import { acceptsBigint } from "./util/acceptsBigint.mjs";
|
|
8
|
+
function useHtmlFieldBase(options) {
|
|
9
|
+
const {
|
|
10
|
+
field,
|
|
11
|
+
type,
|
|
12
|
+
normalizeOnBlur = true
|
|
13
|
+
} = options;
|
|
14
|
+
const props = useField(field);
|
|
15
|
+
const {
|
|
16
|
+
value,
|
|
17
|
+
rawValue,
|
|
18
|
+
initialValue,
|
|
19
|
+
rawInitialValue,
|
|
20
|
+
setValue,
|
|
21
|
+
setRawValue,
|
|
22
|
+
setMeta,
|
|
23
|
+
...meta
|
|
24
|
+
} = props;
|
|
25
|
+
const {
|
|
26
|
+
schema
|
|
27
|
+
} = field;
|
|
28
|
+
|
|
29
|
+
// tempRawValue is used for storing blank text when we've coerced the
|
|
30
|
+
// raw value to null or undefined, or storing numeric text when we've
|
|
31
|
+
// coerced the raw value to a number or bigint.
|
|
32
|
+
// This way we can set a raw value that will parse better in the form
|
|
33
|
+
// state without interfering with the text the user is typing.
|
|
34
|
+
const [tempRawValue, setTempRawValue] = React.useState(rawValue);
|
|
35
|
+
const tryNumber = React.useMemo(() => acceptsNumber(schema), [schema]);
|
|
36
|
+
const tryBigint = React.useMemo(() => acceptsBigint(schema), [schema]);
|
|
37
|
+
const onChange = React.useCallback(e => {
|
|
38
|
+
if (e.currentTarget instanceof HTMLInputElement) {
|
|
39
|
+
const rawValue = getRawValue(e.currentTarget);
|
|
40
|
+
const normalized = normalizeRawValue(rawValue, {
|
|
41
|
+
schema,
|
|
42
|
+
tryNumber,
|
|
43
|
+
tryBigint
|
|
44
|
+
});
|
|
45
|
+
if (typeof rawValue === 'string' && typeof normalized !== 'string') {
|
|
46
|
+
setTempRawValue(rawValue);
|
|
47
|
+
}
|
|
48
|
+
setRawValue(normalized);
|
|
49
|
+
}
|
|
50
|
+
}, [getRawValue, setRawValue, schema]);
|
|
51
|
+
const onFocus = React.useCallback(() => {
|
|
52
|
+
setMeta({
|
|
53
|
+
visited: true
|
|
54
|
+
});
|
|
55
|
+
}, []);
|
|
56
|
+
const onBlur = React.useCallback(e => {
|
|
57
|
+
if (e.currentTarget instanceof HTMLInputElement) {
|
|
58
|
+
let rawValue = normalizeRawValue(getRawValue(e.currentTarget), {
|
|
59
|
+
schema,
|
|
60
|
+
tryNumber,
|
|
61
|
+
tryBigint
|
|
62
|
+
});
|
|
63
|
+
if (normalizeOnBlur) {
|
|
64
|
+
const parsed = field.schema.safeParse(rawValue);
|
|
65
|
+
const formatted = parsed.success ? invert(field.schema).safeParse(parsed.data) : undefined;
|
|
66
|
+
if (formatted !== null && formatted !== void 0 && formatted.success) rawValue = formatted.data;
|
|
67
|
+
}
|
|
68
|
+
setRawValue(rawValue);
|
|
69
|
+
setTempRawValue(undefined);
|
|
70
|
+
}
|
|
71
|
+
setMeta({
|
|
72
|
+
visited: true,
|
|
73
|
+
touched: true
|
|
74
|
+
});
|
|
75
|
+
}, [getRawValue, setRawValue, schema]);
|
|
76
|
+
return React.useMemo(() => ({
|
|
77
|
+
input: {
|
|
78
|
+
name: field.pathstring,
|
|
79
|
+
type,
|
|
80
|
+
value: typeof rawValue === 'boolean' ? String(rawValue) : typeof rawValue === 'string' ? rawValue || tempRawValue || '' : tempRawValue || (rawValue == null ? '' : String(rawValue) || ''),
|
|
81
|
+
...(type === 'checkbox' && {
|
|
82
|
+
checked: Boolean(rawValue)
|
|
83
|
+
}),
|
|
84
|
+
onChange,
|
|
85
|
+
onFocus,
|
|
86
|
+
onBlur
|
|
87
|
+
},
|
|
88
|
+
meta: {
|
|
89
|
+
...meta,
|
|
90
|
+
value,
|
|
91
|
+
rawValue,
|
|
92
|
+
initialValue,
|
|
93
|
+
rawInitialValue,
|
|
94
|
+
setValue,
|
|
95
|
+
setRawValue,
|
|
96
|
+
setMeta
|
|
97
|
+
}
|
|
98
|
+
}), [props, tempRawValue, onChange]);
|
|
99
|
+
}
|
|
100
|
+
function getRawValue(el) {
|
|
101
|
+
return el.type === 'checkbox' ? el.checked : el.value;
|
|
102
|
+
}
|
|
103
|
+
function normalizeBlank(schema) {
|
|
104
|
+
if (schema.safeParse(undefined).success) return undefined;
|
|
105
|
+
if (schema.safeParse(null).success) return null;
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
function safeBigInt(rawValue) {
|
|
109
|
+
try {
|
|
110
|
+
return BigInt(rawValue);
|
|
111
|
+
} catch (error) {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function normalizeRawValue(rawValue, {
|
|
116
|
+
schema,
|
|
117
|
+
tryNumber,
|
|
118
|
+
tryBigint
|
|
119
|
+
}) {
|
|
120
|
+
if (typeof rawValue === 'boolean') return rawValue;
|
|
121
|
+
if (typeof rawValue === 'string' && !/\S/.test(rawValue)) {
|
|
122
|
+
return normalizeBlank(schema);
|
|
123
|
+
}
|
|
124
|
+
if (typeof rawValue === 'string' && !schema.safeParse(rawValue).success) {
|
|
125
|
+
if (tryNumber) {
|
|
126
|
+
const num = Number(rawValue);
|
|
127
|
+
if (!isNaN(num)) return num;
|
|
128
|
+
}
|
|
129
|
+
if (tryBigint) {
|
|
130
|
+
const bigint = safeBigInt(rawValue);
|
|
131
|
+
if (bigint != null) return bigint;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return rawValue;
|
|
135
|
+
}
|
|
136
|
+
export function useHtmlField({
|
|
137
|
+
field,
|
|
138
|
+
...rest
|
|
139
|
+
}) {
|
|
140
|
+
const {
|
|
141
|
+
root
|
|
142
|
+
} = useFormContext();
|
|
143
|
+
return useHtmlFieldBase({
|
|
144
|
+
field: field instanceof FieldPath ? field : root.get(field),
|
|
145
|
+
...rest
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=useHtmlField.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHtmlField.mjs","names":["FieldPath","useField","React","invert","useFormContext","acceptsNumber","acceptsBigint","useHtmlFieldBase","options","field","type","normalizeOnBlur","props","value","rawValue","initialValue","rawInitialValue","setValue","setRawValue","setMeta","meta","schema","tempRawValue","setTempRawValue","useState","tryNumber","useMemo","tryBigint","onChange","useCallback","e","currentTarget","HTMLInputElement","getRawValue","normalized","normalizeRawValue","onFocus","visited","onBlur","parsed","safeParse","formatted","success","data","undefined","touched","input","name","pathstring","String","checked","Boolean","el","normalizeBlank","safeBigInt","BigInt","error","test","num","Number","isNaN","bigint","useHtmlField","rest","root","get"],"sources":["src/useHtmlField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath } from './FieldPath'\nimport { useField, UseFieldProps } from './useField'\nimport React, { HTMLInputTypeAttribute } from 'react'\nimport { invert } from 'zod-invertible'\nimport { useFormContext } from './useFormContext'\nimport { acceptsNumber } from './util/acceptsNumber'\nimport { acceptsBigint } from './util/acceptsBigint'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\n\nexport type HtmlFieldInputProps = {\n name: string\n type: HTMLInputTypeAttribute\n value: string\n checked?: boolean\n onChange: React.ChangeEventHandler\n onFocus: React.FocusEventHandler\n onBlur: React.FocusEventHandler\n}\n\nexport type ValidUseHtmlFieldProps<Field extends FieldPath> = {\n input: HtmlFieldInputProps\n meta: UseFieldProps<Field>\n}\n\nexport type UseHtmlFieldProps<Field extends FieldPath> = z.input<\n Field['schema']\n> extends string | number | bigint | boolean | null | undefined\n ? {\n input: HtmlFieldInputProps\n meta: UseFieldProps<Field>\n }\n : {\n ERROR: 'field schema input must be a nullish string, number, boolean or bigint'\n }\n\ntype UseHtmlFieldOptions<Field, Schema extends z.ZodTypeAny> = {\n field: Field\n type: z.input<Schema> extends boolean | null | undefined\n ? 'checkbox'\n : Exclude<HTMLInputTypeAttribute, 'checkbox'>\n normalizeOnBlur?: boolean\n}\n\nexport interface TypedUseHtmlField<T extends z.ZodTypeAny> {\n <Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n ): UseHtmlFieldProps<Field>\n <Path extends PathInSchema<T>>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>\n ): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Path extends PathstringInSchema<T>>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>\n ): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>\n}\n\nfunction useHtmlFieldBase<Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n): UseHtmlFieldProps<Field> {\n const { field, type, normalizeOnBlur = true } = options\n const props = useField(field)\n const {\n value,\n rawValue,\n initialValue,\n rawInitialValue,\n setValue,\n setRawValue,\n setMeta,\n ...meta\n } = props\n\n const { schema } = field\n\n // tempRawValue is used for storing blank text when we've coerced the\n // raw value to null or undefined, or storing numeric text when we've\n // coerced the raw value to a number or bigint.\n // This way we can set a raw value that will parse better in the form\n // state without interfering with the text the user is typing.\n const [tempRawValue, setTempRawValue] = React.useState(\n rawValue as string | null | undefined\n )\n\n const tryNumber = React.useMemo(() => acceptsNumber(schema), [schema])\n const tryBigint = React.useMemo(() => acceptsBigint(schema), [schema])\n\n const onChange = React.useCallback(\n (e: React.ChangeEvent) => {\n if (e.currentTarget instanceof HTMLInputElement) {\n const rawValue = getRawValue(e.currentTarget)\n const normalized = normalizeRawValue(rawValue, {\n schema,\n tryNumber,\n tryBigint,\n })\n if (typeof rawValue === 'string' && typeof normalized !== 'string') {\n setTempRawValue(rawValue)\n }\n setRawValue(normalized)\n }\n },\n [getRawValue, setRawValue, schema]\n )\n\n const onFocus = React.useCallback(() => {\n setMeta({ visited: true })\n }, [])\n\n const onBlur = React.useCallback(\n (e: React.FocusEvent) => {\n if (e.currentTarget instanceof HTMLInputElement) {\n let rawValue = normalizeRawValue(getRawValue(e.currentTarget), {\n schema,\n tryNumber,\n tryBigint,\n })\n if (normalizeOnBlur) {\n const parsed = field.schema.safeParse(rawValue)\n const formatted = parsed.success\n ? invert(field.schema).safeParse(parsed.data)\n : undefined\n if (formatted?.success) rawValue = formatted.data\n }\n setRawValue(rawValue)\n setTempRawValue(undefined)\n }\n setMeta({ visited: true, touched: true })\n },\n [getRawValue, setRawValue, schema]\n )\n\n return React.useMemo(\n (): ValidUseHtmlFieldProps<Field> => ({\n input: {\n name: field.pathstring,\n type,\n value:\n typeof rawValue === 'boolean'\n ? String(rawValue)\n : typeof rawValue === 'string'\n ? rawValue || tempRawValue || ''\n : tempRawValue || (rawValue == null ? '' : String(rawValue) || ''),\n ...(type === 'checkbox' && { checked: Boolean(rawValue) }),\n onChange,\n onFocus,\n onBlur,\n },\n meta: {\n ...meta,\n value,\n rawValue,\n initialValue,\n rawInitialValue,\n setValue,\n setRawValue,\n setMeta,\n },\n }),\n [props, tempRawValue, onChange]\n ) as any\n}\n\nfunction getRawValue(el: HTMLInputElement | HTMLSelectElement) {\n return el.type === 'checkbox' ? el.checked : el.value\n}\n\nfunction normalizeBlank(schema: z.ZodTypeAny): any {\n if (schema.safeParse(undefined).success) return undefined\n if (schema.safeParse(null).success) return null\n return undefined\n}\n\nfunction safeBigInt(rawValue: string): bigint | undefined {\n try {\n return BigInt(rawValue)\n } catch (error) {\n return undefined\n }\n}\n\nfunction normalizeRawValue(\n rawValue: string | boolean,\n {\n schema,\n tryNumber,\n tryBigint,\n }: { schema: z.ZodTypeAny; tryNumber: boolean; tryBigint: boolean }\n): string | boolean | number | bigint | null | undefined {\n if (typeof rawValue === 'boolean') return rawValue\n if (typeof rawValue === 'string' && !/\\S/.test(rawValue)) {\n return normalizeBlank(schema)\n }\n if (typeof rawValue === 'string' && !schema.safeParse(rawValue).success) {\n if (tryNumber) {\n const num = Number(rawValue)\n if (!isNaN(num)) return num\n }\n if (tryBigint) {\n const bigint = safeBigInt(rawValue)\n if (bigint != null) return bigint\n }\n }\n return rawValue\n}\n\nexport function useHtmlField<Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n): UseHtmlFieldProps<Field>\nexport function useHtmlField<\n T extends z.ZodTypeAny,\n Path extends PathInSchema<T>\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useHtmlField<\n T extends z.ZodTypeAny,\n Path extends PathstringInSchema<T>\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>\nexport function useHtmlField({\n field,\n ...rest\n}: UseHtmlFieldOptions<\n FieldPath | BasePath,\n z.ZodTypeAny\n>): UseHtmlFieldProps<any> {\n const { root } = useFormContext()\n return useHtmlFieldBase({\n field: field instanceof FieldPath ? field : root.get(field),\n ...rest,\n })\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { DependencyList } from 'react';
|
|
3
|
+
import { InitializeAction } from './actions/initialize';
|
|
4
|
+
export declare function useInitialize<T extends z.ZodTypeAny>(options: Omit<InitializeAction<T>, 'type'>, deps?: DependencyList): void;
|
|
5
|
+
//# sourceMappingURL=useInitialize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInitialize.d.ts","sourceRoot":"","sources":["src/useInitialize.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAc,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAClD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1C,IAAI,GAAE,cAAoD,QAM3D"}
|
package/useInitialize.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useInitialize = useInitialize;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _useFormContext2 = require("./useFormContext.js");
|
|
10
|
+
function useInitialize(options) {
|
|
11
|
+
var deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [options.values, options.rawValues];
|
|
12
|
+
var _useFormContext = (0, _useFormContext2.useFormContext)(),
|
|
13
|
+
initialize = _useFormContext.initialize;
|
|
14
|
+
_react["default"].useEffect(function () {
|
|
15
|
+
initialize(options);
|
|
16
|
+
}, deps);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=useInitialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInitialize.js","names":["_react","_interopRequireDefault","require","_useFormContext2","useInitialize","options","deps","arguments","length","undefined","values","rawValues","_useFormContext","useFormContext","initialize","React","useEffect"],"sources":["src/useInitialize.ts"],"sourcesContent":["import z from 'zod'\nimport React, { DependencyList } from 'react'\nimport { useFormContext } from './useFormContext'\nimport { InitializeAction } from './actions/initialize'\n\nexport function useInitialize<T extends z.ZodTypeAny>(\n options: Omit<InitializeAction<T>, 'type'>,\n deps: DependencyList = [options.values, options.rawValues]\n) {\n const { initialize } = useFormContext<T>()\n React.useEffect(() => {\n initialize(options)\n }, deps)\n}\n"],"mappings":";;;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAGO,SAASE,aAAaA,CAC3BC,OAA0C,EAE1C;EAAA,IADAC,IAAoB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAACF,OAAO,CAACK,MAAM,EAAEL,OAAO,CAACM,SAAS,CAAC;EAE1D,IAAAC,eAAA,GAAuB,IAAAC,+BAAc,EAAI,CAAC;IAAlCC,UAAU,GAAAF,eAAA,CAAVE,UAAU;EAClBC,iBAAK,CAACC,SAAS,CAAC,YAAM;IACpBF,UAAU,CAACT,OAAO,CAAC;EACrB,CAAC,EAAEC,IAAI,CAAC;AACV","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useFormContext } from "./useFormContext.mjs";
|
|
3
|
+
export function useInitialize(options, deps = [options.values, options.rawValues]) {
|
|
4
|
+
const {
|
|
5
|
+
initialize
|
|
6
|
+
} = useFormContext();
|
|
7
|
+
React.useEffect(() => {
|
|
8
|
+
initialize(options);
|
|
9
|
+
}, deps);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=useInitialize.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInitialize.mjs","names":["React","useFormContext","useInitialize","options","deps","values","rawValues","initialize","useEffect"],"sources":["src/useInitialize.ts"],"sourcesContent":["import z from 'zod'\nimport React, { DependencyList } from 'react'\nimport { useFormContext } from './useFormContext'\nimport { InitializeAction } from './actions/initialize'\n\nexport function useInitialize<T extends z.ZodTypeAny>(\n options: Omit<InitializeAction<T>, 'type'>,\n deps: DependencyList = [options.values, options.rawValues]\n) {\n const { initialize } = useFormContext<T>()\n React.useEffect(() => {\n initialize(options)\n }, deps)\n}\n"],"mappings":"AACA,OAAOA,KAAK,MAA0B,OAAO;AAC7C,SAASC,cAAc;AAGvB,OAAO,SAASC,aAAaA,CAC3BC,OAA0C,EAC1CC,IAAoB,GAAG,CAACD,OAAO,CAACE,MAAM,EAAEF,OAAO,CAACG,SAAS,CAAC,EAC1D;EACA,MAAM;IAAEC;EAAW,CAAC,GAAGN,cAAc,CAAI,CAAC;EAC1CD,KAAK,CAACQ,SAAS,CAAC,MAAM;IACpBD,UAAU,CAACJ,OAAO,CAAC;EACrB,CAAC,EAAEC,IAAI,CAAC;AACV","ignoreList":[]}
|
package/useSubmit.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSubmit.d.ts","sourceRoot":"","sources":["src/useSubmit.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,wBAAgB,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAkBzC,KAAK,CAAC,SAAS,UAK7C"}
|