@paragrav/rhf-utils 0.0.131 → 0.0.133

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/README.md +35 -6
  2. package/dist/esm/client/config/useRhfUtilsClientConfigContext.mjs +1 -0
  3. package/dist/esm/client/config/useRhfUtilsClientConfigContext.mjs.map +1 -0
  4. package/dist/esm/client/index.mjs +1 -0
  5. package/dist/esm/client/index.mjs.map +1 -0
  6. package/dist/esm/client/utils.mjs +1 -0
  7. package/dist/esm/client/utils.mjs.map +1 -0
  8. package/dist/esm/client/zod/context/RhfUtilsClientForZodContextProvider.mjs +1 -0
  9. package/dist/esm/client/zod/context/RhfUtilsClientForZodContextProvider.mjs.map +1 -0
  10. package/dist/esm/client/zod/context/RhfUtilsZodForm.mjs +1 -0
  11. package/dist/esm/client/zod/context/RhfUtilsZodForm.mjs.map +1 -0
  12. package/dist/esm/client/zod/context/useRhfUtilsClientForZodContext.mjs +1 -0
  13. package/dist/esm/client/zod/context/useRhfUtilsClientForZodContext.mjs.map +1 -0
  14. package/dist/esm/client/zod/context/useRhfUtilsZodForm.mjs +1 -0
  15. package/dist/esm/client/zod/context/useRhfUtilsZodForm.mjs.map +1 -0
  16. package/dist/esm/client/zod/createRhfUtilsClientForZod.mjs +1 -0
  17. package/dist/esm/client/zod/createRhfUtilsClientForZod.mjs.map +1 -0
  18. package/dist/esm/devtool/LazyDevTool.mjs +1 -0
  19. package/dist/esm/devtool/LazyDevTool.mjs.map +1 -0
  20. package/dist/esm/errors/flat/FlatFieldErrorsList.mjs +1 -0
  21. package/dist/esm/errors/flat/FlatFieldErrorsList.mjs.map +1 -0
  22. package/dist/esm/errors/flat/context/FlatFieldErrorsContextProvider.mjs +1 -0
  23. package/dist/esm/errors/flat/context/FlatFieldErrorsContextProvider.mjs.map +1 -0
  24. package/dist/esm/errors/flat/context/useFlatFieldErrorsContext.mjs +1 -0
  25. package/dist/esm/errors/flat/context/useFlatFieldErrorsContext.mjs.map +1 -0
  26. package/dist/esm/errors/flat/context/useFlatFieldErrorsContextHasOnlyOrphans.mjs +1 -0
  27. package/dist/esm/errors/flat/context/useFlatFieldErrorsContextHasOnlyOrphans.mjs.map +1 -0
  28. package/dist/esm/errors/flat/context/useFlatFieldErrorsContextOutput.mjs +1 -0
  29. package/dist/esm/errors/flat/context/useFlatFieldErrorsContextOutput.mjs.map +1 -0
  30. package/dist/esm/errors/flat/filterFlatFieldErrors.mjs +1 -0
  31. package/dist/esm/errors/flat/filterFlatFieldErrors.mjs.map +1 -0
  32. package/dist/esm/errors/flat/flattenFieldErrors.mjs +1 -0
  33. package/dist/esm/errors/flat/flattenFieldErrors.mjs.map +1 -0
  34. package/dist/esm/errors/flat/getFlatFieldErrors.mjs +1 -0
  35. package/dist/esm/errors/flat/getFlatFieldErrors.mjs.map +1 -0
  36. package/dist/esm/errors/getRefdFromFlatFieldErrors.mjs +1 -0
  37. package/dist/esm/errors/getRefdFromFlatFieldErrors.mjs.map +1 -0
  38. package/dist/esm/errors/isFieldErrorRefd.mjs +1 -0
  39. package/dist/esm/errors/isFieldErrorRefd.mjs.map +1 -0
  40. package/dist/esm/errors/isFlatFieldErrorEntryRefd.mjs +1 -0
  41. package/dist/esm/errors/isFlatFieldErrorEntryRefd.mjs.map +1 -0
  42. package/dist/esm/errors/message/FormErrorMessage.mjs +1 -0
  43. package/dist/esm/errors/message/FormErrorMessage.mjs.map +1 -0
  44. package/dist/esm/errors/message/FormErrorMessageByPath.mjs +1 -0
  45. package/dist/esm/errors/message/FormErrorMessageByPath.mjs.map +1 -0
  46. package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.mjs +1 -0
  47. package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.mjs.map +1 -0
  48. package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.utils.mjs +1 -0
  49. package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.utils.mjs.map +1 -0
  50. package/dist/esm/errors/nonfield/FormNonFieldErrorMarkerHtmlAttribute.mjs +1 -0
  51. package/dist/esm/errors/nonfield/FormNonFieldErrorMarkerHtmlAttribute.mjs.map +1 -0
  52. package/dist/esm/errors/nonfield/isNonFieldErrorMarkerInDOM.mjs +1 -0
  53. package/dist/esm/errors/nonfield/isNonFieldErrorMarkerInDOM.mjs.map +1 -0
  54. package/dist/esm/errors/orphan/getIsOrphanFormErrorWithParentElement.mjs +1 -0
  55. package/dist/esm/errors/orphan/getIsOrphanFormErrorWithParentElement.mjs.map +1 -0
  56. package/dist/esm/errors/orphan/getOrphansFromFlatFieldErrors.mjs +1 -0
  57. package/dist/esm/errors/orphan/getOrphansFromFlatFieldErrors.mjs.map +1 -0
  58. package/dist/esm/errors/orphan/isOrphanFormError.mjs +1 -0
  59. package/dist/esm/errors/orphan/isOrphanFormError.mjs.map +1 -0
  60. package/dist/esm/errors/output/consoleErrors.mjs +1 -0
  61. package/dist/esm/errors/output/consoleErrors.mjs.map +1 -0
  62. package/dist/esm/errors/root/RootErrorsListFromFlatFieldErrorsContext.mjs +1 -0
  63. package/dist/esm/errors/root/RootErrorsListFromFlatFieldErrorsContext.mjs.map +1 -0
  64. package/dist/esm/errors/root/consts.mjs +1 -0
  65. package/dist/esm/errors/root/consts.mjs.map +1 -0
  66. package/dist/esm/errors/root/getRootsFromFlatFieldErrors.mjs +1 -0
  67. package/dist/esm/errors/root/getRootsFromFlatFieldErrors.mjs.map +1 -0
  68. package/dist/esm/errors/root/isFlatFieldErrorEntryPathRoot.mjs +1 -0
  69. package/dist/esm/errors/root/isFlatFieldErrorEntryPathRoot.mjs.map +1 -0
  70. package/dist/esm/errors/root/isFormErrorPathRoot.mjs +1 -0
  71. package/dist/esm/errors/root/isFormErrorPathRoot.mjs.map +1 -0
  72. package/dist/esm/errors/trpc/getOnSubmitTrpcClientErrorHandler.mjs +1 -0
  73. package/dist/esm/errors/trpc/getOnSubmitTrpcClientErrorHandler.mjs.map +1 -0
  74. package/dist/esm/errors/trpc/trpcClientErrorMessageSchema.mjs +1 -0
  75. package/dist/esm/errors/trpc/trpcClientErrorMessageSchema.mjs.map +1 -0
  76. package/dist/esm/errors/trpc/trpcClientErrorToFormSubmitErrorsSchemaTransformer.mjs +1 -0
  77. package/dist/esm/errors/trpc/trpcClientErrorToFormSubmitErrorsSchemaTransformer.mjs.map +1 -0
  78. package/dist/esm/exports.mjs +1 -0
  79. package/dist/esm/exports.mjs.map +1 -0
  80. package/dist/esm/form/Form.mjs +1 -0
  81. package/dist/esm/form/Form.mjs.map +1 -0
  82. package/dist/esm/form/FormWithProviders.mjs +1 -0
  83. package/dist/esm/form/FormWithProviders.mjs.map +1 -0
  84. package/dist/esm/form/RhfUtilsFormProviders.mjs +1 -0
  85. package/dist/esm/form/RhfUtilsFormProviders.mjs.map +1 -0
  86. package/dist/esm/form/_Controller.mjs +1 -0
  87. package/dist/esm/form/_Controller.mjs.map +1 -0
  88. package/dist/esm/form/context/group/FormGroupContextProvider.mjs +1 -0
  89. package/dist/esm/form/context/group/FormGroupContextProvider.mjs.map +1 -0
  90. package/dist/esm/form/context/group/index.mjs +1 -0
  91. package/dist/esm/form/context/group/index.mjs.map +1 -0
  92. package/dist/esm/form/context/group/useFormGroupChildIsMountedTracker.mjs +1 -0
  93. package/dist/esm/form/context/group/useFormGroupChildIsMountedTracker.mjs.map +1 -0
  94. package/dist/esm/form/context/group/useFormGroupChildIsSubmittingTracker.mjs +1 -0
  95. package/dist/esm/form/context/group/useFormGroupChildIsSubmittingTracker.mjs.map +1 -0
  96. package/dist/esm/form/context/group/useFormGroupChildTracker.mjs +1 -0
  97. package/dist/esm/form/context/group/useFormGroupChildTracker.mjs.map +1 -0
  98. package/dist/esm/form/context/group/useFormGroupIsAnyBusy.mjs +1 -0
  99. package/dist/esm/form/context/group/useFormGroupIsAnyBusy.mjs.map +1 -0
  100. package/dist/esm/form/context/group/useFormGroupIsChildBusy.mjs +1 -0
  101. package/dist/esm/form/context/group/useFormGroupIsChildBusy.mjs.map +1 -0
  102. package/dist/esm/form/context/group/useFormGroupIsParentBusy.mjs +1 -0
  103. package/dist/esm/form/context/group/useFormGroupIsParentBusy.mjs.map +1 -0
  104. package/dist/esm/form/context/group/useFormGroupParentTracker.mjs +1 -0
  105. package/dist/esm/form/context/group/useFormGroupParentTracker.mjs.map +1 -0
  106. package/dist/esm/form/context/group/useFormOrParentIsBusy.mjs +1 -0
  107. package/dist/esm/form/context/group/useFormOrParentIsBusy.mjs.map +1 -0
  108. package/dist/esm/form/context/utils/RhfUtilsContextProvider.mjs +1 -0
  109. package/dist/esm/form/context/utils/RhfUtilsContextProvider.mjs.map +1 -0
  110. package/dist/esm/form/context/utils/useRhfUtilsContext.mjs +1 -0
  111. package/dist/esm/form/context/utils/useRhfUtilsContext.mjs.map +1 -0
  112. package/dist/esm/form/context/utils/useRhfUtilsContextRequestSubmit.mjs +1 -0
  113. package/dist/esm/form/context/utils/useRhfUtilsContextRequestSubmit.mjs.map +1 -0
  114. package/dist/esm/form/useFormIsBusy.mjs +1 -0
  115. package/dist/esm/form/useFormIsBusy.mjs.map +1 -0
  116. package/dist/esm/form/useRhfUtilsForm.mjs +1 -0
  117. package/dist/esm/form/useRhfUtilsForm.mjs.map +1 -0
  118. package/dist/esm/form/utils/getSubmitterButtonData.mjs +1 -0
  119. package/dist/esm/form/utils/getSubmitterButtonData.mjs.map +1 -0
  120. package/dist/esm/form/utils/useFormRequestSubmit.mjs +1 -0
  121. package/dist/esm/form/utils/useFormRequestSubmit.mjs.map +1 -0
  122. package/dist/esm/submit/error/FormSubmitError.mjs +1 -0
  123. package/dist/esm/submit/error/FormSubmitError.mjs.map +1 -0
  124. package/dist/esm/submit/error/setCtxErrorsByFormSubmitErrors.mjs +1 -0
  125. package/dist/esm/submit/error/setCtxErrorsByFormSubmitErrors.mjs.map +1 -0
  126. package/dist/esm/submit/useFormOnSubmitted.mjs +1 -0
  127. package/dist/esm/submit/useFormOnSubmitted.mjs.map +1 -0
  128. package/dist/esm/submit/useResetFormOnSubmitted.mjs +1 -0
  129. package/dist/esm/submit/useResetFormOnSubmitted.mjs.map +1 -0
  130. package/dist/esm/submit/useSubmitFormOnChange.mjs +1 -0
  131. package/dist/esm/submit/useSubmitFormOnChange.mjs.map +1 -0
  132. package/dist/esm/utils/PassthroughChildren.mjs +1 -0
  133. package/dist/esm/utils/PassthroughChildren.mjs.map +1 -0
  134. package/dist/esm/utils/createContext.mjs +1 -0
  135. package/dist/esm/utils/createContext.mjs.map +1 -0
  136. package/dist/esm/utils/isEmptyObject.mjs +1 -0
  137. package/dist/esm/utils/isEmptyObject.mjs.map +1 -0
  138. package/dist/esm/utils/useRefIfValueWasTrue.mjs +1 -0
  139. package/dist/esm/utils/useRefIfValueWasTrue.mjs.map +1 -0
  140. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.mjs","sources":["../../../src/form/Form.tsx"],"sourcesContent":["import React from 'react';\nimport type { UseFormHandleSubmit } from 'react-hook-form';\nimport { useFormContext } from 'react-hook-form';\n\nimport useRhfUtilsClientConfigMaybeContext from '@/client/config/useRhfUtilsClientConfigContext';\n\nimport LazyDevTool from '@/devtool/LazyDevTool';\n\nimport { FormSubmitError } from '@/submit/error/FormSubmitError';\nimport setCtxErrorsByFormSubmitErrors from '@/submit/error/setCtxErrorsByFormSubmitErrors';\n\nimport PassthroughChildren from '@/utils/PassthroughChildren';\n\nimport _Controller from './_Controller';\nimport type { SafeFieldValues } from './SafeFieldValues';\nimport type { UseRhfUtilsFormChildrenProps } from './UseRhfUtilsFormChildrenProps';\nimport type {\n UseRhfUtilsFormOnSubmitContext,\n UseRhfUtilsFormOnSubmitErrorContext,\n} from './UseRhfUtilsFormOnSubmitContext';\nimport type { UseRhfUtilsFormProps } from './UseRhfUtilsFormProps';\n\nexport type FormChildrenSlots = 'top' | 'bottom';\n\nexport type FormProps<\n TFieldValues extends SafeFieldValues,\n TTransformedValues extends SafeFieldValues,\n> = {\n formId: string;\n formRef: React.RefObject<HTMLFormElement>;\n} & Pick<\n UseRhfUtilsFormProps<TFieldValues, TTransformedValues>,\n | 'onSubmit'\n | 'onSubmitError'\n | 'onSubmitInvalid'\n //\n | 'Children'\n //\n | 'form'\n | 'utils'\n>;\n\nfunction _Form<\n TFieldValues extends SafeFieldValues,\n TTransformedValues extends SafeFieldValues,\n>({\n formId,\n formRef,\n //\n onSubmit,\n onSubmitError,\n onSubmitInvalid,\n Children,\n //\n form,\n utils,\n}: FormProps<TFieldValues, TTransformedValues>) {\n const rhfContext = useFormContext<\n TFieldValues,\n unknown,\n TTransformedValues\n >();\n\n const config = useRhfUtilsClientConfigMaybeContext();\n\n // handlers\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n // cannot stop propagation in handleSubmitValid, b/c it receives a different event object\n if (utils?.stopSubmitPropagation) event.stopPropagation();\n\n try {\n await rhfContext.handleSubmit(handleSubmitValid, onSubmitInvalid)(event);\n } catch (error) {\n handleSubmitError(error, event);\n }\n };\n\n const handleSubmitValid = ((\n data: TTransformedValues,\n event?: React.BaseSyntheticEvent,\n ) => {\n return onSubmit?.(\n data,\n {\n formId,\n formRef,\n context: rhfContext,\n utils,\n FormSubmitError: FormSubmitError<TFieldValues>,\n } satisfies UseRhfUtilsFormOnSubmitContext<\n TFieldValues,\n TTransformedValues\n >,\n event as React.BaseSyntheticEvent<SubmitEvent>, // `as` required due to conditional generic\n );\n }) as Parameters<UseFormHandleSubmit<TFieldValues, TTransformedValues>>[0];\n\n const handleSubmitError = (\n error: unknown,\n event: React.BaseSyntheticEvent,\n ) => {\n // get `FormSubmitErrors`, if possible\n const formSubmitErrors =\n error instanceof FormSubmitError\n ? // consumer can manually throw FormSubmitError (e.g., manual validation)\n (error as FormSubmitError).errors // `as` to avoid `<any>`\n : // if error is not FormSubmitError, consumer can provide global handler\n config?.onSubmitErrorUnknown?.(error);\n\n if (formSubmitErrors)\n setCtxErrorsByFormSubmitErrors(rhfContext, formSubmitErrors);\n\n onSubmitError?.(\n error,\n {\n formId,\n formRef,\n context: rhfContext,\n utils,\n } satisfies UseRhfUtilsFormOnSubmitErrorContext<\n TFieldValues,\n TTransformedValues\n >,\n event as React.BaseSyntheticEvent<SubmitEvent>, // `as` required due to conditional generic\n );\n };\n\n const childrenProps: UseRhfUtilsFormChildrenProps<\n TFieldValues,\n TTransformedValues\n > = {\n formId,\n formRef,\n context: rhfContext,\n utils,\n Controller: _Controller<TFieldValues>,\n FormSubmitError: FormSubmitError<TFieldValues>,\n };\n\n const FormComponent = config?.FormComponent ?? 'form';\n\n const FormChildrenWrapper =\n config?.FormChildrenWrapper ?? PassthroughChildren;\n\n return (\n <FormComponent\n {...form}\n ref={formRef}\n onSubmit={(e) => void handleSubmit(e)}\n >\n <FormChildrenWrapper {...childrenProps}>\n {utils?.devTool && (\n <LazyDevTool\n props={\n typeof utils.devTool === 'object' ? utils.devTool : undefined\n }\n />\n )}\n\n <Children {...childrenProps} />\n </FormChildrenWrapper>\n </FormComponent>\n );\n}\n\nexport default _Form;\n"],"names":["_Form","formId","formRef","onSubmit","onSubmitError","onSubmitInvalid","Children","form","utils","rhfContext","useFormContext","config","useRhfUtilsClientConfigMaybeContext","handleSubmit","event","handleSubmitValid","error","handleSubmitError","data","FormSubmitError","formSubmitErrors","_a","setCtxErrorsByFormSubmitErrors","childrenProps","_Controller","FormComponent","FormChildrenWrapper","PassthroughChildren","jsx","e","jsxs","LazyDevTool"],"mappings":";;;;;;;;;AA0CA,SAASA,EAGP;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA;AAAA,EAEA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,UAAAC;AAAA;AAAA,EAEA,MAAAC;AAAA,EACA,OAAAC;AACF,GAAgD;AAC9C,QAAMC,IAAaC,KAMbC,IAASC,KAITC,IAAe,OAAOC,MAA4C;AAElE,IAAAN,KAAA,QAAAA,EAAO,yBAAuBM,EAAM,gBAAgB;AAEpD,QAAA;AACF,YAAML,EAAW,aAAaM,GAAmBV,CAAe,EAAES,CAAK;AAAA,aAChEE,GAAO;AACd,MAAAC,EAAkBD,GAAOF,CAAK;AAAA,IAChC;AAAA,EAAA,GAGIC,IAAqB,CACzBG,GACAJ,MAEOX,KAAA,gBAAAA;AAAA,IACLe;AAAA,IACA;AAAA,MACE,QAAAjB;AAAA,MACA,SAAAC;AAAA,MACA,SAASO;AAAA,MACT,OAAAD;AAAA,MACA,iBAAAW;AAAA,IACF;AAAA,IAIAL;AAAA,KAIEG,IAAoB,CACxBD,GACAF,MACG;;AAEH,UAAMM,IACJJ,aAAiBG;AAAA;AAAA,MAEZH,EAA0B;AAAA;AAAA;AAAA,OAE3BK,IAAAV,KAAA,gBAAAA,EAAQ,yBAAR,gBAAAU,EAAA,KAAAV,GAA+BK;AAAA;AAEjC,IAAAI,KACFE,EAA+Bb,GAAYW,CAAgB,GAE7DhB,KAAA,QAAAA;AAAA,MACEY;AAAA,MACA;AAAA,QACE,QAAAf;AAAA,QACA,SAAAC;AAAA,QACA,SAASO;AAAA,QACT,OAAAD;AAAA,MACF;AAAA,MAIAM;AAAA;AAAA,EACF,GAGIS,IAGF;AAAA,IACF,QAAAtB;AAAA,IACA,SAAAC;AAAA,IACA,SAASO;AAAA,IACT,OAAAD;AAAA,IACA,YAAYgB;AAAA,IACZ,iBAAAL;AAAA,EAAA,GAGIM,KAAgBd,KAAA,gBAAAA,EAAQ,kBAAiB,QAEzCe,KACJf,KAAA,gBAAAA,EAAQ,wBAAuBgB;AAG/B,SAAA,gBAAAC;AAAA,IAACH;AAAA,IAAA;AAAA,MACE,GAAGlB;AAAA,MACJ,KAAKL;AAAA,MACL,UAAU,CAAC2B,MAAM,KAAKhB,EAAagB,CAAC;AAAA,MAEpC,UAAA,gBAAAC,EAACJ,GAAqB,EAAA,GAAGH,GACtB,UAAA;AAAA,SAAAf,KAAA,gBAAAA,EAAO,YACN,gBAAAoB;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,OACE,OAAOvB,EAAM,WAAY,WAAWA,EAAM,UAAU;AAAA,UAAA;AAAA,QAExD;AAAA,QAGF,gBAAAoB,EAACtB,GAAU,EAAA,GAAGiB,GAAe;AAAA,MAAA,GAC/B;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -9,3 +9,4 @@ function n(m) {
9
9
  export {
10
10
  n as default
11
11
  };
12
+ //# sourceMappingURL=FormWithProviders.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormWithProviders.mjs","sources":["../../../src/form/FormWithProviders.tsx"],"sourcesContent":["import Form from './Form';\nimport RhfUtilsFormProviders from './RhfUtilsFormProviders';\nimport type { SafeFieldValues } from './SafeFieldValues';\nimport useRhfUtilsForm from './useRhfUtilsForm';\nimport type { UseRhfUtilsFormProps } from './UseRhfUtilsFormProps';\n\nexport type FormWithProvidersProps<\n TFieldValues extends SafeFieldValues,\n TTransformedValues extends SafeFieldValues,\n> = React.PropsWithChildren<\n UseRhfUtilsFormProps<TFieldValues, TTransformedValues>\n>;\n\n/**\n * Form providers (with utils) with immediate descendent {@link Form}.\n * (Syntactic sugar for {@link useRhfUtilsForm}. Use this for most applications.)\n *\n * Use {@link useRhfUtilsForm} if you need to specific nesting hierarchy.\n * (e.g., wrapping `<tr>` with provider and nesting `<form>` within `<td>` to appease HTML rules.)\n */\nfunction FormWithProviders<\n TFieldValues extends SafeFieldValues,\n TTransformedValues extends SafeFieldValues,\n>(props: FormWithProvidersProps<TFieldValues, TTransformedValues>) {\n const form = useRhfUtilsForm(props);\n\n return (\n <RhfUtilsFormProviders {...form.providerProps}>\n <Form {...form.formProps} />\n </RhfUtilsFormProviders>\n );\n}\n\nexport default FormWithProviders;\n"],"names":["FormWithProviders","props","form","useRhfUtilsForm","jsx","RhfUtilsFormProviders","Form"],"mappings":";;;;AAoBA,SAASA,EAGPC,GAAiE;AAC3D,QAAAC,IAAOC,EAAgBF,CAAK;AAGhC,SAAA,gBAAAG,EAACC,GAAuB,EAAA,GAAGH,EAAK,eAC9B,4BAACI,GAAM,EAAA,GAAGJ,EAAK,UAAW,CAAA,EAC5B,CAAA;AAEJ;"}
@@ -22,3 +22,4 @@ function v({
22
22
  export {
23
23
  v as default
24
24
  };
25
+ //# sourceMappingURL=RhfUtilsFormProviders.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RhfUtilsFormProviders.mjs","sources":["../../../src/form/RhfUtilsFormProviders.tsx"],"sourcesContent":["import type { UseFormReturn } from 'react-hook-form';\nimport { FormProvider } from 'react-hook-form';\n\nimport FlatFieldErrorsContextProvider from '@/errors/flat/context/FlatFieldErrorsContextProvider';\n\nimport RhfUtilsContextProvider from './context/utils/RhfUtilsContextProvider';\nimport type { RhfUtilsFormOptions } from './RhfUtilsFormOptions';\nimport type { SafeFieldValues } from './SafeFieldValues';\n\nexport type RhfUtilsFormProvidersProps<\n TFieldValues extends SafeFieldValues,\n TTransformedValues extends SafeFieldValues,\n> = React.PropsWithChildren<{\n formId: string;\n formRef: React.RefObject<HTMLFormElement>;\n rhfForm: UseFormReturn<TFieldValues, unknown, TTransformedValues>;\n utils?: RhfUtilsFormOptions;\n}>;\n\nfunction RhfUtilsFormProviders<\n TFieldValues extends SafeFieldValues,\n TTransformedValues extends SafeFieldValues,\n>({\n formId,\n formRef,\n rhfForm,\n utils,\n children,\n}: RhfUtilsFormProvidersProps<TFieldValues, TTransformedValues>) {\n return (\n <FormProvider {...rhfForm}>\n <FlatFieldErrorsContextProvider formRef={formRef}>\n <RhfUtilsContextProvider\n formId={formId}\n formRef={formRef}\n options={utils}\n >\n {children}\n </RhfUtilsContextProvider>\n </FlatFieldErrorsContextProvider>\n </FormProvider>\n );\n}\n\nexport default RhfUtilsFormProviders;\n"],"names":["RhfUtilsFormProviders","formId","formRef","rhfForm","utils","children","FormProvider","jsx","FlatFieldErrorsContextProvider","RhfUtilsContextProvider"],"mappings":";;;;AAmBA,SAASA,EAGP;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AACF,GAAiE;AAC/D,2BACGC,GAAc,EAAA,GAAGH,GAChB,UAAA,gBAAAI,EAACC,KAA+B,SAAAN,GAC9B,UAAA,gBAAAK;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,QAAAR;AAAA,MACA,SAAAC;AAAA,MACA,SAASE;AAAA,MAER,UAAAC;AAAA,IAAA;AAAA,EAAA,EAEL,CAAA,EACF,CAAA;AAEJ;"}
@@ -6,3 +6,4 @@ function n(r) {
6
6
  export {
7
7
  n as default
8
8
  };
9
+ //# sourceMappingURL=_Controller.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_Controller.mjs","sources":["../../../src/form/_Controller.tsx"],"sourcesContent":["import type { ControllerProps, FieldPath } from 'react-hook-form';\nimport { Controller as RhfController } from 'react-hook-form';\n\nimport type { SafeFieldValues } from './SafeFieldValues';\n\nexport type _ControllerProps<\n TFieldValues extends SafeFieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = Omit<ControllerProps<TFieldValues, TName>, 'control'>;\n\nfunction _Controller<\n TFieldValues extends SafeFieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(props: _ControllerProps<TFieldValues, TName>) {\n return <RhfController {...props} />;\n}\n\nexport default _Controller;\n"],"names":["_Controller","props","jsx","RhfController"],"mappings":";;AAUA,SAASA,EAGPC,GAA8C;AACvC,SAAA,gBAAAC,EAACC,GAAe,EAAA,GAAGF,EAAO,CAAA;AACnC;"}
@@ -28,3 +28,4 @@ const B = ({ children: o }) => {
28
28
  export {
29
29
  h as default
30
30
  };
31
+ //# sourceMappingURL=FormGroupContextProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormGroupContextProvider.mjs","sources":["../../../../../src/form/context/group/FormGroupContextProvider.tsx"],"sourcesContent":["import React from 'react';\n\nimport { _FormGroupContextProvider } from '.';\n\ntype Props = React.PropsWithChildren;\n\nconst FormGroupContextProvider: React.FC<Props> = ({ children }) => {\n // children\n\n const [childrenBusyIds, setChildrenBusyIds] = React.useState<string[]>([]);\n\n const childrenBusyCount = childrenBusyIds.length;\n\n const setChildrenBusyId = React.useCallback((id: string, isBusy: boolean) => {\n setChildrenBusyIds((prev) =>\n isBusy\n ? // add to array\n [...prev, id]\n : // remove from array\n prev.filter((formId) => formId !== id),\n );\n }, []);\n\n // parent\n\n const [isParentBusy, setIsParentBusy] = React.useState(false);\n\n // value\n\n const value = {\n children: {\n busyCount: childrenBusyCount,\n busyIds: childrenBusyIds,\n setBusyId: setChildrenBusyId,\n },\n parent: {\n isBusy: isParentBusy,\n setIsBusy: setIsParentBusy,\n },\n };\n\n return (\n <_FormGroupContextProvider value={value}>\n {children}\n </_FormGroupContextProvider>\n );\n};\n\nexport default FormGroupContextProvider;\n"],"names":["FormGroupContextProvider","children","childrenBusyIds","setChildrenBusyIds","React","childrenBusyCount","setChildrenBusyId","id","isBusy","prev","formId","isParentBusy","setIsParentBusy","jsx","_FormGroupContextProvider","FormGroupContextProvider$1"],"mappings":";;;AAMA,MAAMA,IAA4C,CAAC,EAAE,UAAAC,QAAe;AAGlE,QAAM,CAACC,GAAiBC,CAAkB,IAAIC,EAAM,SAAmB,CAAA,CAAE,GAEnEC,IAAoBH,EAAgB,QAEpCI,IAAoBF,EAAM,YAAY,CAACG,GAAYC,MAAoB;AAC3E,IAAAL;AAAA,MAAmB,CAACM,MAClBD;AAAA;AAAA,QAEI,CAAC,GAAGC,GAAMF,CAAE;AAAA;AAAA;AAAA,QAEZE,EAAK,OAAO,CAACC,MAAWA,MAAWH,CAAE;AAAA;AAAA,IAAA;AAAA,EAE7C,GAAG,CAAE,CAAA,GAIC,CAACI,GAAcC,CAAe,IAAIR,EAAM,SAAS,EAAK;AAiB1D,SAAA,gBAAAS,EAACC,GAA0B,EAAA,OAbf;AAAA,IACZ,UAAU;AAAA,MACR,WAAWT;AAAA,MACX,SAASH;AAAA,MACT,WAAWI;AAAA,IACb;AAAA,IACA,QAAQ;AAAA,MACN,QAAQK;AAAA,MACR,WAAWC;AAAA,IACb;AAAA,EAAA,GAKG,UAAAX,EACH,CAAA;AAEJ,GAEAc,IAAef;"}
@@ -9,3 +9,4 @@ export {
9
9
  t as _useFormGroupContext,
10
10
  u as _useFormGroupContextMaybe
11
11
  };
12
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../src/form/context/group/index.ts"],"sourcesContent":["import createContext from '@/utils/createContext';\n\nexport type FormGroupContext = {\n /** Dependent forms. */\n children: {\n busyIds: string[];\n busyCount: number;\n setBusyId: (id: string, isBusy: boolean) => void;\n };\n /** Main form. */\n parent: {\n isBusy: boolean;\n setIsBusy: (isBusy: boolean) => void;\n };\n};\n\nexport const {\n Provider: _FormGroupContextProvider,\n useRequired: _useFormGroupContext,\n useMaybe: _useFormGroupContextMaybe,\n} = createContext<FormGroupContext>();\n"],"names":["_FormGroupContextProvider","_useFormGroupContext","_useFormGroupContextMaybe","createContext"],"mappings":";AAgBa,MAAA;AAAA,EACX,UAAUA;AAAA,EACV,aAAaC;AAAA,EACb,UAAUC;AACZ,IAAIC,EAAgC;"}
@@ -4,3 +4,4 @@ const e = () => (r(!0), o()), t = e;
4
4
  export {
5
5
  t as default
6
6
  };
7
+ //# sourceMappingURL=useFormGroupChildIsMountedTracker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormGroupChildIsMountedTracker.mjs","sources":["../../../../../src/form/context/group/useFormGroupChildIsMountedTracker.ts"],"sourcesContent":["import useFormGroupChildTracker from './useFormGroupChildTracker';\nimport useFormGroupIsParentBusy from './useFormGroupIsParentBusy';\n\n/**\n * Mark \"child\" form as \"busy\" when mounted.\n */\nconst useFormGroupChildIsMountedTracker = () => {\n useFormGroupChildTracker(true);\n\n // return parent status\n return useFormGroupIsParentBusy();\n};\n\nexport default useFormGroupChildIsMountedTracker;\n"],"names":["useFormGroupChildIsMountedTracker","useFormGroupChildTracker","useFormGroupIsParentBusy","useFormGroupChildIsMountedTracker$1"],"mappings":";;AAMA,MAAMA,IAAoC,OACxCC,EAAyB,EAAI,GAGtBC,EAAyB,IAGlCC,IAAeH;"}
@@ -8,3 +8,4 @@ const m = () => {
8
8
  export {
9
9
  n as default
10
10
  };
11
+ //# sourceMappingURL=useFormGroupChildIsSubmittingTracker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormGroupChildIsSubmittingTracker.mjs","sources":["../../../../../src/form/context/group/useFormGroupChildIsSubmittingTracker.ts"],"sourcesContent":["import { useFormState } from 'react-hook-form';\n\nimport useFormGroupChildTracker from './useFormGroupChildTracker';\nimport useFormGroupIsParentBusy from './useFormGroupIsParentBusy';\n\n/**\n * Mark \"child\" form as \"busy\" when submitting.\n */\nconst useFormGroupChildIsSubmittingTracker = () => {\n const { isSubmitting } = useFormState();\n\n useFormGroupChildTracker(isSubmitting);\n\n // return parent status\n return useFormGroupIsParentBusy();\n};\n\nexport default useFormGroupChildIsSubmittingTracker;\n"],"names":["useFormGroupChildIsSubmittingTracker","isSubmitting","useFormState","useFormGroupChildTracker","useFormGroupIsParentBusy","useFormGroupChildIsSubmittingTracker$1"],"mappings":";;;AAQA,MAAMA,IAAuC,MAAM;AAC3C,QAAA,EAAE,cAAAC,MAAiBC;AAEzB,SAAAC,EAAyBF,CAAY,GAG9BG,EAAyB;AAClC,GAEAC,IAAeL;"}
@@ -11,3 +11,4 @@ const u = (s) => {
11
11
  export {
12
12
  d as default
13
13
  };
14
+ //# sourceMappingURL=useFormGroupChildTracker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormGroupChildTracker.mjs","sources":["../../../../../src/form/context/group/useFormGroupChildTracker.ts"],"sourcesContent":["import React from 'react';\n\nimport { _useFormGroupContext } from '.';\n\n/**\n * Mark \"child\" form as \"busy\" via arbitrary boolean.\n * Automatically marks as \"not busy\" on dismount.\n */\nconst useFormGroupChildTracker = (track: boolean) => {\n const { setBusyId } = _useFormGroupContext().children;\n\n // generate unique id to track this form instance\n const id = React.useId();\n\n // update context state based on isSubmitting\n React.useEffect(() => {\n setBusyId(id, track);\n }, [track, id, setBusyId]);\n\n // on dismount, set form as not busy\n // (e.g., form hides after successful submission; useEffect above will not re-run before unmount)\n React.useEffect(() => {\n return () => {\n setBusyId(id, false);\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n};\n\nexport default useFormGroupChildTracker;\n"],"names":["useFormGroupChildTracker","track","setBusyId","_useFormGroupContext","id","React","useFormGroupChildTracker$1"],"mappings":";;AAQA,MAAMA,IAA2B,CAACC,MAAmB;AACnD,QAAM,EAAE,WAAAC,EAAA,IAAcC,EAAA,EAAuB,UAGvCC,IAAKC,EAAM;AAGjB,EAAAA,EAAM,UAAU,MAAM;AACpB,IAAAH,EAAUE,GAAIH,CAAK;AAAA,EAClB,GAAA,CAACA,GAAOG,GAAIF,CAAS,CAAC,GAIzBG,EAAM,UAAU,MACP,MAAM;AACX,IAAAH,EAAUE,GAAI,EAAK;AAAA,EAAA,GAEpB,CAAE,CAAA;AACP,GAEAE,IAAeN;"}
@@ -6,3 +6,4 @@ const r = () => {
6
6
  export {
7
7
  e as default
8
8
  };
9
+ //# sourceMappingURL=useFormGroupIsAnyBusy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormGroupIsAnyBusy.mjs","sources":["../../../../../src/form/context/group/useFormGroupIsAnyBusy.ts"],"sourcesContent":["import { _useFormGroupContextMaybe } from '.';\n\nconst useFormGroupIsAnyBusy = (): boolean => {\n const ctx = _useFormGroupContextMaybe();\n\n return !!ctx?.children.busyCount || !!ctx?.parent.isBusy;\n};\n\nexport default useFormGroupIsAnyBusy;\n"],"names":["useFormGroupIsAnyBusy","ctx","_useFormGroupContextMaybe","useFormGroupIsAnyBusy$1"],"mappings":";AAEA,MAAMA,IAAwB,MAAe;AAC3C,QAAMC,IAAMC;AAEL,SAAA,CAAC,EAACD,KAAA,QAAAA,EAAK,SAAS,cAAa,CAAC,EAACA,KAAA,QAAAA,EAAK,OAAO;AACpD,GAEAE,IAAeH;"}
@@ -6,3 +6,4 @@ const s = () => {
6
6
  export {
7
7
  e as default
8
8
  };
9
+ //# sourceMappingURL=useFormGroupIsChildBusy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormGroupIsChildBusy.mjs","sources":["../../../../../src/form/context/group/useFormGroupIsChildBusy.ts"],"sourcesContent":["import { _useFormGroupContextMaybe } from '.';\n\nconst useFormGroupIsChildBusy = (): boolean => {\n const ctx = _useFormGroupContextMaybe();\n\n return !!ctx?.children.busyCount;\n};\n\nexport default useFormGroupIsChildBusy;\n"],"names":["useFormGroupIsChildBusy","ctx","_useFormGroupContextMaybe","useFormGroupIsChildBusy$1"],"mappings":";AAEA,MAAMA,IAA0B,MAAe;AAC7C,QAAMC,IAAMC;AAEL,SAAA,CAAC,EAACD,KAAA,QAAAA,EAAK,SAAS;AACzB,GAEAE,IAAeH;"}
@@ -6,3 +6,4 @@ const s = () => {
6
6
  export {
7
7
  s as default
8
8
  };
9
+ //# sourceMappingURL=useFormGroupIsParentBusy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormGroupIsParentBusy.mjs","sources":["../../../../../src/form/context/group/useFormGroupIsParentBusy.ts"],"sourcesContent":["import { _useFormGroupContextMaybe } from '.';\n\nconst useFormGroupIsParentBusy = (): boolean => {\n const ctx = _useFormGroupContextMaybe();\n\n return !!ctx?.parent.isBusy;\n};\n\nexport default useFormGroupIsParentBusy;\n"],"names":["useFormGroupIsParentBusy","ctx","_useFormGroupContextMaybe"],"mappings":";AAEA,MAAMA,IAA2B,MAAe;AAC9C,QAAMC,IAAMC;AAEL,SAAA,CAAC,EAACD,KAAA,QAAAA,EAAK,OAAO;AACvB;"}
@@ -11,3 +11,4 @@ const m = () => {
11
11
  export {
12
12
  f as default
13
13
  };
14
+ //# sourceMappingURL=useFormGroupParentTracker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormGroupParentTracker.mjs","sources":["../../../../../src/form/context/group/useFormGroupParentTracker.ts"],"sourcesContent":["import React from 'react';\n\nimport useFormIsBusy from '@/form/useFormIsBusy';\n\nimport { _useFormGroupContext } from '.';\nimport useFormGroupIsChildBusy from './useFormGroupIsChildBusy';\n\n/**\n * Connect specific form state as parent context.\n *\n * Requires usage of provider.\n */\nconst useFormGroupParentTracker = () => {\n const isBusy = useFormIsBusy();\n\n const { setIsBusy } = _useFormGroupContext().parent;\n\n // when this form state changes, update context state\n React.useEffect(() => {\n setIsBusy(isBusy);\n }, [setIsBusy, isBusy]);\n\n // return children status\n return useFormGroupIsChildBusy();\n};\n\nexport default useFormGroupParentTracker;\n"],"names":["useFormGroupParentTracker","isBusy","useFormIsBusy","setIsBusy","_useFormGroupContext","React","useFormGroupIsChildBusy","useFormGroupParentTracker$1"],"mappings":";;;;AAYA,MAAMA,IAA4B,MAAM;AACtC,QAAMC,IAASC,KAET,EAAE,WAAAC,EAAA,IAAcC,EAAA,EAAuB;AAG7C,SAAAC,EAAM,UAAU,MAAM;AACpB,IAAAF,EAAUF,CAAM;AAAA,EAAA,GACf,CAACE,GAAWF,CAAM,CAAC,GAGfK,EAAwB;AACjC,GAEAC,IAAeP;"}
@@ -8,3 +8,4 @@ const u = () => {
8
8
  export {
9
9
  a as default
10
10
  };
11
+ //# sourceMappingURL=useFormOrParentIsBusy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormOrParentIsBusy.mjs","sources":["../../../../../src/form/context/group/useFormOrParentIsBusy.ts"],"sourcesContent":["import useFormIsBusy from '../../useFormIsBusy';\n\nimport { _useFormGroupContextMaybe } from '.';\n\nconst useFormOrParentIsBusy = (): boolean => {\n const isFormBusy = useFormIsBusy();\n const isParentBusy = _useFormGroupContextMaybe()?.parent.isBusy;\n\n return Boolean(isFormBusy || isParentBusy);\n};\n\nexport default useFormOrParentIsBusy;\n"],"names":["useFormOrParentIsBusy","isFormBusy","useFormIsBusy","isParentBusy","_a","_useFormGroupContextMaybe","useFormOrParentIsBusy$1"],"mappings":";;AAIA,MAAMA,IAAwB,MAAe;;AAC3C,QAAMC,IAAaC,KACbC,KAAeC,IAAAC,QAAA,gBAAAD,EAA6B,OAAO;AAElD,SAAA,GAAQH,KAAcE;AAC/B,GAEAG,IAAeN;"}
@@ -19,3 +19,4 @@ const n = ({
19
19
  export {
20
20
  n as default
21
21
  };
22
+ //# sourceMappingURL=RhfUtilsContextProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RhfUtilsContextProvider.mjs","sources":["../../../../../src/form/context/utils/RhfUtilsContextProvider.tsx"],"sourcesContent":["import useRhfUtilsClientConfigMaybeContext from '@/client/config/useRhfUtilsClientConfigContext';\n\nimport useFlatFieldErrorsContextOutput from '@/errors/flat/context/useFlatFieldErrorsContextOutput';\n\nimport type { RhfUtilsFormOptions } from '@/form/RhfUtilsFormOptions';\n\nimport useResetFormOnSubmitted from '@/submit/useResetFormOnSubmitted';\nimport useSubmitFormOnChange from '@/submit/useSubmitFormOnChange';\n\nimport { _RhfUtilsContextProvider } from './useRhfUtilsContext';\n\ntype Props = React.PropsWithChildren<{\n formId: string;\n formRef: React.RefObject<HTMLFormElement>;\n options?: RhfUtilsFormOptions;\n}>;\n\nconst RhfUtilsContextProvider: React.FC<Props> = ({\n formId,\n formRef,\n options,\n children,\n}) => {\n const config = useRhfUtilsClientConfigMaybeContext();\n\n useFlatFieldErrorsContextOutput(config?.FieldErrors?.output);\n\n useSubmitFormOnChange(formRef, {\n disabled: !options?.submitOnChange,\n });\n\n useResetFormOnSubmitted(options?.resetOnSubmitted);\n\n return (\n <_RhfUtilsContextProvider value={{ formId, formRef, options }}>\n {children}\n </_RhfUtilsContextProvider>\n );\n};\n\nexport default RhfUtilsContextProvider;\n"],"names":["RhfUtilsContextProvider","formId","formRef","options","children","config","useRhfUtilsClientConfigMaybeContext","useFlatFieldErrorsContextOutput","_a","useSubmitFormOnChange","useResetFormOnSubmitted","jsx","_RhfUtilsContextProvider"],"mappings":";;;;;;AAiBA,MAAMA,IAA2C,CAAC;AAAA,EAChD,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AACF,MAAM;;AACJ,QAAMC,IAASC;AAEiB,SAAAC,GAAAC,IAAAH,KAAA,gBAAAA,EAAQ,gBAAR,gBAAAG,EAAqB,MAAM,GAE3DC,EAAsBP,GAAS;AAAA,IAC7B,UAAU,EAACC,KAAA,QAAAA,EAAS;AAAA,EAAA,CACrB,GAEDO,EAAwBP,KAAA,gBAAAA,EAAS,gBAAgB,GAG/C,gBAAAQ,EAACC,KAAyB,OAAO,EAAE,QAAAX,GAAQ,SAAAC,GAAS,SAAAC,EAAA,GACjD,UAAAC,EACH,CAAA;AAEJ;"}
@@ -4,3 +4,4 @@ export {
4
4
  r as _RhfUtilsContextProvider,
5
5
  i as default
6
6
  };
7
+ //# sourceMappingURL=useRhfUtilsContext.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRhfUtilsContext.mjs","sources":["../../../../../src/form/context/utils/useRhfUtilsContext.tsx"],"sourcesContent":["import type { RhfUtilsFormOptions } from '@/form/RhfUtilsFormOptions';\n\nimport createContext from '@/utils/createContext';\n\nexport type RhfUtilsContext = {\n formId: string;\n formRef: React.RefObject<HTMLFormElement>;\n options: RhfUtilsFormOptions | undefined;\n};\n\nconst { Provider: _RhfUtilsContextProvider, useRequired: _useRhfUtilsContext } =\n createContext<RhfUtilsContext>();\n\n/**\n * Use utils from the current form context.\n */\nconst useRhfUtilsContext = _useRhfUtilsContext;\n\nexport default useRhfUtilsContext;\n\nexport { _RhfUtilsContextProvider };\n"],"names":["_RhfUtilsContextProvider","_useRhfUtilsContext","createContext","useRhfUtilsContext","useRhfUtilsContext$1"],"mappings":";AAUA,MAAM,EAAE,UAAUA,GAA0B,aAAaC,EAAA,IACvDC,EAA+B,GAK3BC,IAAqBF,GAE3BG,IAAeD;"}
@@ -7,3 +7,4 @@ const o = () => {
7
7
  export {
8
8
  m as default
9
9
  };
10
+ //# sourceMappingURL=useRhfUtilsContextRequestSubmit.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRhfUtilsContextRequestSubmit.mjs","sources":["../../../../../src/form/context/utils/useRhfUtilsContextRequestSubmit.ts"],"sourcesContent":["import useFormRequestSubmit from '@/form/utils/useFormRequestSubmit';\n\nimport useRhfUtilsContext from './useRhfUtilsContext';\n\n/**\n * Get `requestSubmit` function from the form ref'd in current context.\n */\nconst useRhfUtilsContextRequestSubmit = () => {\n const utils = useRhfUtilsContext();\n\n return useFormRequestSubmit(utils.formRef);\n};\n\nexport default useRhfUtilsContextRequestSubmit;\n"],"names":["useRhfUtilsContextRequestSubmit","utils","useRhfUtilsContext","useFormRequestSubmit","useRhfUtilsContextRequestSubmit$1"],"mappings":";;AAOA,MAAMA,IAAkC,MAAM;AAC5C,QAAMC,IAAQC;AAEP,SAAAC,EAAqBF,EAAM,OAAO;AAC3C,GAEAG,IAAeJ;"}
@@ -6,3 +6,4 @@ const e = () => {
6
6
  export {
7
7
  e as default
8
8
  };
9
+ //# sourceMappingURL=useFormIsBusy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormIsBusy.mjs","sources":["../../../src/form/useFormIsBusy.ts"],"sourcesContent":["import { useFormState } from 'react-hook-form';\n\nconst useFormIsBusy = (): boolean => {\n const { isSubmitting, isLoading } = useFormState();\n\n return isSubmitting || isLoading;\n};\n\nexport default useFormIsBusy;\n"],"names":["useFormIsBusy","isSubmitting","isLoading","useFormState"],"mappings":";AAEA,MAAMA,IAAgB,MAAe;AACnC,QAAM,EAAE,cAAAC,GAAc,WAAAC,EAAU,IAAIC,EAAa;AAEjD,SAAOF,KAAgBC;AACzB;"}
@@ -41,3 +41,4 @@ const v = ({
41
41
  export {
42
42
  v as default
43
43
  };
44
+ //# sourceMappingURL=useRhfUtilsForm.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRhfUtilsForm.mjs","sources":["../../../src/form/useRhfUtilsForm.tsx"],"sourcesContent":["import React from 'react';\nimport { useForm as useRhfForm } from 'react-hook-form';\n\nimport { FormSubmitError } from '@/submit/error/FormSubmitError';\n\nimport type { FormProps } from './Form';\nimport type { RhfUtilsFormProvidersProps } from './RhfUtilsFormProviders';\nimport type { SafeFieldValues } from './SafeFieldValues';\nimport type { UseRhfUtilsFormProps } from './UseRhfUtilsFormProps';\nimport type { UseRhfUtilsFormReturn } from './UseRhfUtilsFormReturn';\n\n/**\n * Core Rhf Form hook. Use `Form` in `index.ts` for most cases.\n * Use this if you need to separate form components.\n * e.g., a form for table row due to `form` being considered invalid HTML around `tr` tags.\n * With this hook, you can wrap the `tr` tag with `form.Provider` and use `form.Form` inside\n * one of the cells. Other components can be outside form while referring to form by its id via `form` attribute.\n * see https://caniuse.com/?search=form%20attribute\n * @returns Form provider and form.\n */\nconst useRhfUtilsForm = <\n TFieldValues extends SafeFieldValues,\n TTransformedValues extends SafeFieldValues,\n>({\n defaultValues,\n onSubmit,\n onSubmitError,\n onSubmitInvalid,\n Children,\n rhf,\n form,\n utils,\n}: UseRhfUtilsFormProps<\n TFieldValues,\n TTransformedValues\n>): UseRhfUtilsFormReturn<TFieldValues, TTransformedValues> => {\n const formId = React.useId();\n\n const rhfForm = useRhfForm<TFieldValues, unknown, TTransformedValues>({\n ...rhf,\n defaultValues,\n });\n\n const formRef = React.useRef<HTMLFormElement>(null);\n\n const providerProps: RhfUtilsFormProvidersProps<\n TFieldValues,\n TTransformedValues\n > = {\n formId,\n formRef,\n rhfForm,\n utils,\n };\n\n const formProps: FormProps<TFieldValues, TTransformedValues> = {\n Children,\n onSubmit,\n onSubmitError,\n onSubmitInvalid,\n formId,\n formRef,\n form,\n utils,\n };\n\n return {\n id: formId,\n ref: formRef,\n context: rhfForm,\n providerProps,\n formProps,\n FormSubmitError: FormSubmitError<TFieldValues>,\n } as const;\n};\n\nexport default useRhfUtilsForm;\n\nexport type UseRhfUtilsForm<\n TFieldValues extends SafeFieldValues,\n TTransformedValues extends SafeFieldValues,\n> = typeof useRhfUtilsForm<TFieldValues, TTransformedValues>;\n"],"names":["useRhfUtilsForm","defaultValues","onSubmit","onSubmitError","onSubmitInvalid","Children","rhf","form","utils","formId","React","rhfForm","useRhfForm","formRef","FormSubmitError"],"mappings":";;;AAoBA,MAAMA,IAAkB,CAGtB;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AACF,MAG+D;AACvD,QAAAC,IAASC,EAAM,SAEfC,IAAUC,EAAsD;AAAA,IACpE,GAAGN;AAAA,IACH,eAAAL;AAAA,EAAA,CACD,GAEKY,IAAUH,EAAM,OAAwB,IAAI;AAuB3C,SAAA;AAAA,IACL,IAAID;AAAA,IACJ,KAAKI;AAAA,IACL,SAASF;AAAA,IACT,eAtBE;AAAA,MACF,QAAAF;AAAA,MACA,SAAAI;AAAA,MACA,SAAAF;AAAA,MACA,OAAAH;AAAA,IAAA;AAAA,IAmBA,WAhB6D;AAAA,MAC7D,UAAAH;AAAA,MACA,UAAAH;AAAA,MACA,eAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,QAAAK;AAAA,MACA,SAAAI;AAAA,MACA,MAAAN;AAAA,MACA,OAAAC;AAAA,IAAA;AAAA,IASA,iBAAAM;AAAA,EAAA;AAEJ;"}
@@ -10,3 +10,4 @@ const e = (t) => {
10
10
  export {
11
11
  i as default
12
12
  };
13
+ //# sourceMappingURL=getSubmitterButtonData.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSubmitterButtonData.mjs","sources":["../../../../src/form/utils/getSubmitterButtonData.ts"],"sourcesContent":["import React from 'react';\n\n/**\n * Get [name, value] tuple of button/input that submitted form.\n * Useful when determining user intent\n */\nconst getSubmitterButtonData = (\n event: React.BaseSyntheticEvent,\n): [name: string, value: string] | undefined => {\n if (!(event.nativeEvent instanceof SubmitEvent)) return; // not submit\n if (\n !(event.nativeEvent.submitter instanceof HTMLButtonElement) && // not button\n !(event.nativeEvent.submitter instanceof HTMLInputElement) // not input\n )\n return;\n\n if (!event.nativeEvent.submitter.name) return; // no name on button\n\n return [\n event.nativeEvent.submitter.name,\n event.nativeEvent.submitter.value,\n ] as const;\n};\n\nexport default getSubmitterButtonData;\n"],"names":["getSubmitterButtonData","event","getSubmitterButtonData$1"],"mappings":";AAMA,MAAMA,IAAyB,CAC7BC,MAC8C;AAC1C,MAAEA,EAAM,uBAAuB,eAEjC,IAAEA,EAAM,YAAY,qBAAqB;AAAA,EACzC,EAAEA,EAAM,YAAY,qBAAqB,sBAItCA,EAAM,YAAY,UAAU;AAE1B,WAAA;AAAA,MACLA,EAAM,YAAY,UAAU;AAAA,MAC5BA,EAAM,YAAY,UAAU;AAAA,IAAA;AAEhC,GAEAC,IAAeF;"}
@@ -7,3 +7,4 @@ const u = (t) => (r) => {
7
7
  export {
8
8
  u as default
9
9
  };
10
+ //# sourceMappingURL=useFormRequestSubmit.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormRequestSubmit.mjs","sources":["../../../../src/form/utils/useFormRequestSubmit.ts"],"sourcesContent":["/**\n * Get callback to trigger submit manually on form.\n * @link https://developer.mozilla.org/docs/Web/API/HTMLFormElement/requestSubmit\n */\nconst useFormRequestSubmit =\n (\n ref: React.RefObject<HTMLFormElement>, // limit scope to avoid mistakes (allows for `{[string]: any}`)\n ): HTMLFormElement['requestSubmit'] =>\n (submitter) => {\n // typeguard (should never happen at runtime when callback is called)\n if (!ref.current) throw new Error();\n\n requestSubmitByForm(ref.current, submitter);\n };\n\nexport default useFormRequestSubmit;\n\n//\n\nconst requestSubmitByForm = (\n form: Pick<HTMLFormElement, 'requestSubmit'>, // narrow to avoid `{[string]: any}` type\n submitter?: HTMLElement | null,\n) => {\n form.requestSubmit(submitter);\n};\n"],"names":["useFormRequestSubmit","ref","submitter","requestSubmitByForm","form"],"mappings":"AAIA,MAAMA,IACJ,CACEC,MAEF,CAACC,MAAc;AAEb,MAAI,CAACD,EAAI,QAAS,OAAM,IAAI,MAAM;AAEd,EAAAE,EAAAF,EAAI,SAASC,CAAS;AAC5C,GAMIC,IAAsB,CAC1BC,GACAF,MACG;AACH,EAAAE,EAAK,cAAcF,CAAS;AAC9B;"}
@@ -6,3 +6,4 @@ class t extends Error {
6
6
  export {
7
7
  t as FormSubmitError
8
8
  };
9
+ //# sourceMappingURL=FormSubmitError.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormSubmitError.mjs","sources":["../../../../src/submit/error/FormSubmitError.ts"],"sourcesContent":["import type { SafeFieldValues } from '@/form/SafeFieldValues';\n\nimport type { FormSubmitErrors } from './FormSubmitErrors';\n\nexport class FormSubmitError<\n TFieldValues extends SafeFieldValues = SafeFieldValues,\n> extends Error {\n constructor(\n public errors: FormSubmitErrors<TFieldValues>,\n message?: string, // error message\n // options?: ErrorOptions, // requires es2022\n ) {\n super(message);\n }\n}\n"],"names":["FormSubmitError","errors","message"],"mappings":"AAIO,MAAMA,UAEH,MAAM;AAAA,EACd,YACSC,GACPC,GAEA;AACA,UAAMA,CAAO,GAJN,KAAA,SAAAD;AAAA,EAKT;AACF;"}
@@ -10,3 +10,4 @@ const s = (r, t) => {
10
10
  export {
11
11
  s as default
12
12
  };
13
+ //# sourceMappingURL=setCtxErrorsByFormSubmitErrors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setCtxErrorsByFormSubmitErrors.mjs","sources":["../../../../src/submit/error/setCtxErrorsByFormSubmitErrors.ts"],"sourcesContent":["import type { FieldPath, UseFormReturn } from 'react-hook-form';\n\nimport type { SafeFieldValues } from '@/form/SafeFieldValues';\n\nimport type { FormSubmitErrors } from './FormSubmitErrors';\n\n/**\n * Handle thrown {@link FormSubmitError}.\n * Add key/values as name/message to RHF context errors.\n */\nconst setCtxErrorsByFormSubmitErrors = <\n TFieldValues extends SafeFieldValues,\n TTransformedValues extends SafeFieldValues,\n>(\n ctx: UseFormReturn<TFieldValues, unknown, TTransformedValues>,\n errors: FormSubmitErrors,\n) => {\n // loop through error object and set errors in rhf context\n Object.entries(errors).forEach(([name, fieldError]) => {\n ctx.setError(name as FieldPath<TFieldValues>, {\n type: 'FormSubmitError', // default\n ...fieldError,\n });\n });\n};\n\nexport default setCtxErrorsByFormSubmitErrors;\n"],"names":["setCtxErrorsByFormSubmitErrors","ctx","errors","name","fieldError"],"mappings":"AAUM,MAAAA,IAAiC,CAIrCC,GACAC,MACG;AAEI,SAAA,QAAQA,CAAM,EAAE,QAAQ,CAAC,CAACC,GAAMC,CAAU,MAAM;AACrD,IAAAH,EAAI,SAASE,GAAiC;AAAA,MAC5C,MAAM;AAAA;AAAA,MACN,GAAGC;AAAA,IAAA,CACJ;AAAA,EAAA,CACF;AACH;"}
@@ -10,3 +10,4 @@ const c = (e, f) => {
10
10
  export {
11
11
  c as default
12
12
  };
13
+ //# sourceMappingURL=useFormOnSubmitted.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormOnSubmitted.mjs","sources":["../../../src/submit/useFormOnSubmitted.ts"],"sourcesContent":["import type { MaybePromise } from '@trpc/server/unstable-core-do-not-import';\nimport React from 'react';\nimport { useFormState } from 'react-hook-form';\n\nimport useRefIfValueWasTrue from '@/utils/useRefIfValueWasTrue';\n\nconst useFormOnSubmitted = (\n callback?: (success: boolean) => MaybePromise<unknown>,\n options?: { successful?: boolean },\n) => {\n const { isSubmitSuccessful, isSubmitting } = useFormState();\n\n const [wasSubmitting, resetWasSubmitting] =\n useRefIfValueWasTrue(isSubmitting);\n\n // on successful submit, call callback\n React.useEffect(() => {\n if (!callback) return;\n\n // if currently submitting, ignore\n if (isSubmitting) return;\n\n // wait for submit to finish\n if (!wasSubmitting) return;\n\n // always reset to wait for next submit\n resetWasSubmitting();\n\n // check success against options passed\n if (\n options?.successful === undefined || // if option not specified, call on any submit\n isSubmitSuccessful === options.successful // otherwise, call only if matches\n ) {\n callback(isSubmitSuccessful);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only track isSubmitting -- so success is checked each time\n }, [isSubmitting]);\n};\n\nexport default useFormOnSubmitted;\n"],"names":["useFormOnSubmitted","callback","options","isSubmitSuccessful","isSubmitting","useFormState","wasSubmitting","resetWasSubmitting","useRefIfValueWasTrue","React"],"mappings":";;;AAMM,MAAAA,IAAqB,CACzBC,GACAC,MACG;AACH,QAAM,EAAE,oBAAAC,GAAoB,cAAAC,EAAa,IAAIC,EAAa,GAEpD,CAACC,GAAeC,CAAkB,IACtCC,EAAqBJ,CAAY;AAGnC,EAAAK,EAAM,UAAU,MAAM;AACpB,IAAKR,MAGDG,KAGCE,MAGcC,KAOjBN,EAASE,CAAkB;AAAA,EAC7B,GAGC,CAACC,CAAY,CAAC;AACnB;"}
@@ -34,3 +34,4 @@ const p = (e) => {
34
34
  export {
35
35
  p as default
36
36
  };
37
+ //# sourceMappingURL=useResetFormOnSubmitted.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResetFormOnSubmitted.mjs","sources":["../../../src/submit/useResetFormOnSubmitted.ts"],"sourcesContent":["import { useFormContext } from 'react-hook-form';\n\nimport useFormOnSubmitted from './useFormOnSubmitted';\n\n/**\n * Configuration options for {@link useResetFormOnSubmitted}.\n */\nexport type UseResetFormOnSubmittedOptions =\n // disabled\n | undefined\n\n // enabled\n | {\n /**\n * Reset values on successful submit.\n * - `defaults`: reset current values to defaults\n * - `current`: reset defaults to current values\n */\n success?: { values: 'defaults' | 'current' };\n\n /**\n * Reset values to defaults on submit error.\n */\n error?: { values: 'defaults' };\n };\n\n/**\n * Control resetting of values and (some) state (e.g., `isDirty`) after form submitted.\n *\n * `isDirty` and other state is reset, but submit-related state is preserved, as well as errors.\n *\n * Use cases:\n * - on success:\n * - `defaults`: reset current values to defaults (e.g., clear form)\n * - `current`: reset defaults to current values (e.g., keep values)\n * - on error:\n * - reset current values to default values (e.g., submitOnChange reset)\n *\n * See `Rules` section: https://react-hook-form.com/api/useform/reset/\n * Specifically: \"- It's recommended to reset inside useEffect after submission.\"\n */\nconst useResetFormOnSubmitted = (options: UseResetFormOnSubmittedOptions) => {\n const { getValues, reset } = useFormContext();\n\n useFormOnSubmitted((success) => {\n if (!options) return;\n\n const whichValues = options[success ? 'success' : 'error']?.values;\n\n if (!whichValues) return;\n\n const keepValues = whichValues === 'current';\n\n const values = keepValues\n ? getValues() // current values\n : undefined; // default values\n\n reset(values, {\n // keep submit stuff for tracking relevant state (e.g., `useFormOnSubmitSuccessful`)\n keepIsSubmitSuccessful: true,\n keepIsSubmitted: true,\n keepSubmitCount: true,\n\n /**\n * This is necessary when setting default values to current values (lest form stop updating).\n *\n * Technically, we are keeping values and resetting default values to same values.\n *\n * Steps to repro:\n * - RhfUtilsClientConfig with resetOnSubmitted set to success values to current\n * - remove `keepValues` prop from reset\n * - create valid form, submit\n * - form values should be unchanged\n * - unexpectedly: can no longer type into input\n */\n keepValues,\n\n // keep errors in the case of unsuccessful submit\n keepErrors: true,\n });\n });\n};\n\nexport default useResetFormOnSubmitted;\n"],"names":["useResetFormOnSubmitted","options","getValues","reset","useFormContext","useFormOnSubmitted","success","whichValues","_a","keepValues","values"],"mappings":";;AAyCM,MAAAA,IAA0B,CAACC,MAA4C;AAC3E,QAAM,EAAE,WAAAC,GAAW,OAAAC,EAAM,IAAIC,EAAe;AAE5C,EAAAC,EAAmB,CAACC,MAAY;;AAC9B,QAAI,CAACL,EAAS;AAEd,UAAMM,KAAcC,IAAAP,EAAQK,IAAU,YAAY,OAAO,MAArC,gBAAAE,EAAwC;AAE5D,QAAI,CAACD,EAAa;AAElB,UAAME,IAAaF,MAAgB,WAE7BG,IAASD,IACXP,EACA,IAAA;AAEJ,IAAAC,EAAMO,GAAQ;AAAA;AAAA,MAEZ,wBAAwB;AAAA,MACxB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAcjB,YAAAD;AAAA;AAAA,MAGA,YAAY;AAAA,IAAA,CACb;AAAA,EAAA,CACF;AACH;"}
@@ -17,3 +17,4 @@ const d = (t, e) => {
17
17
  export {
18
18
  d as default
19
19
  };
20
+ //# sourceMappingURL=useSubmitFormOnChange.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSubmitFormOnChange.mjs","sources":["../../../src/submit/useSubmitFormOnChange.ts"],"sourcesContent":["import React from 'react';\n\nimport useFormRequestSubmit from '@/form/utils/useFormRequestSubmit';\n\nconst useSubmitFormOnChange = (\n formRef: React.RefObject<HTMLFormElement>,\n options?: {\n /** Disable-able so that default behavior is enabled for sake of simplicity of usage. */\n disabled?: boolean;\n },\n) => {\n const enabled = !options?.disabled;\n\n const requestSubmit = useFormRequestSubmit(formRef);\n\n // on mount, listen for event\n React.useEffect(() => {\n if (!enabled) return;\n\n const form = formRef.current;\n\n if (!form) throw new Error();\n\n const onChange = () => {\n requestSubmit();\n };\n\n form.addEventListener('change', onChange);\n\n return () => {\n form.removeEventListener('change', onChange);\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps -- on mount\n};\n\nexport default useSubmitFormOnChange;\n"],"names":["useSubmitFormOnChange","formRef","options","enabled","requestSubmit","useFormRequestSubmit","React","form","onChange"],"mappings":";;AAIM,MAAAA,IAAwB,CAC5BC,GACAC,MAIG;AACG,QAAAC,IAAU,EAACD,KAAA,QAAAA,EAAS,WAEpBE,IAAgBC,EAAqBJ,CAAO;AAGlD,EAAAK,EAAM,UAAU,MAAM;AACpB,QAAI,CAACH,EAAS;AAEd,UAAMI,IAAON,EAAQ;AAErB,QAAI,CAACM,EAAY,OAAA,IAAI;AAErB,UAAMC,IAAW,MAAM;AACP,MAAAJ;IAAA;AAGX,WAAAG,EAAA,iBAAiB,UAAUC,CAAQ,GAEjC,MAAM;AACN,MAAAD,EAAA,oBAAoB,UAAUC,CAAQ;AAAA,IAAA;AAAA,EAE/C,GAAG,CAAE,CAAA;AACP;"}
@@ -5,3 +5,4 @@ const a = ({
5
5
  export {
6
6
  a as default
7
7
  };
8
+ //# sourceMappingURL=PassthroughChildren.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PassthroughChildren.mjs","sources":["../../../src/utils/PassthroughChildren.tsx"],"sourcesContent":["/**\n * Component for simply passing through children.\n *\n * (Useful for conditional wrapping of children.)\n */\nconst PassthroughChildren: React.FC<React.PropsWithChildren> = ({\n children,\n}) => <>{children}</>;\n\nexport default PassthroughChildren;\n"],"names":["PassthroughChildren","children"],"mappings":";AAKA,MAAMA,IAAyD,CAAC;AAAA,EAC9D,UAAAC;AACF,6BAAS,UAAAA,EAAS,CAAA;"}
@@ -14,3 +14,4 @@ function i() {
14
14
  export {
15
15
  i as default
16
16
  };
17
+ //# sourceMappingURL=createContext.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createContext.mjs","sources":["../../../src/utils/createContext.ts"],"sourcesContent":["import React from 'react';\n\n/**\n * Create a strictly-typed context that throws error if no provider is found.\n * @returns A tuple with a function to get the context and the context provider.\n */\nfunction createContext<T = unknown>() {\n const context = React.createContext<T | undefined>(undefined);\n\n const useMaybe = () => React.useContext(context);\n\n const useRequired = () => {\n const c = useMaybe();\n\n // type guard\n if (c === undefined) throw new Error();\n\n return c;\n };\n\n return {\n Provider: context.Provider,\n useMaybe,\n useRequired,\n } as const;\n}\n\nexport default createContext;\n"],"names":["createContext","context","React","useMaybe","useRequired","c"],"mappings":";AAMA,SAASA,IAA6B;AAC9B,QAAAC,IAAUC,EAAM,cAA6B,MAAS,GAEtDC,IAAW,MAAMD,EAAM,WAAWD,CAAO,GAEzCG,IAAc,MAAM;AACxB,UAAMC,IAAIF;AAGV,QAAIE,MAAM,OAAiB,OAAA,IAAI,MAAM;AAE9B,WAAAA;AAAA,EAAA;AAGF,SAAA;AAAA,IACL,UAAUJ,EAAQ;AAAA,IAClB,UAAAE;AAAA,IACA,aAAAC;AAAA,EAAA;AAEJ;"}
@@ -2,3 +2,4 @@ const e = (t) => Object.keys(t).length === 0;
2
2
  export {
3
3
  e as default
4
4
  };
5
+ //# sourceMappingURL=isEmptyObject.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isEmptyObject.mjs","sources":["../../../src/utils/isEmptyObject.ts"],"sourcesContent":["const isEmptyObject = (obj: Record<string, unknown>) =>\n Object.keys(obj).length === 0;\n\nexport default isEmptyObject;\n"],"names":["isEmptyObject","obj"],"mappings":"AAAA,MAAMA,IAAgB,CAACC,MACrB,OAAO,KAAKA,CAAG,EAAE,WAAW;"}
@@ -12,3 +12,4 @@ const f = (r) => {
12
12
  export {
13
13
  f as default
14
14
  };
15
+ //# sourceMappingURL=useRefIfValueWasTrue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRefIfValueWasTrue.mjs","sources":["../../../src/utils/useRefIfValueWasTrue.ts"],"sourcesContent":["import React from 'react';\n\nconst useRefIfValueWasTrue = (value: boolean) => {\n const hasBooleanChanged = React.useRef(false);\n\n // when value is true, set ref to true\n React.useEffect(() => {\n if (!value) return;\n\n hasBooleanChanged.current = true;\n }, [value]);\n\n const reset = () => {\n hasBooleanChanged.current = false;\n };\n\n return [hasBooleanChanged.current, reset] as const;\n};\n\nexport default useRefIfValueWasTrue;\n"],"names":["useRefIfValueWasTrue","value","hasBooleanChanged","React","reset"],"mappings":";AAEM,MAAAA,IAAuB,CAACC,MAAmB;AACzC,QAAAC,IAAoBC,EAAM,OAAO,EAAK;AAG5C,EAAAA,EAAM,UAAU,MAAM;AACpB,IAAKF,MAELC,EAAkB,UAAU;AAAA,EAAA,GAC3B,CAACD,CAAK,CAAC;AAEV,QAAMG,IAAQ,MAAM;AAClB,IAAAF,EAAkB,UAAU;AAAA,EAAA;AAGvB,SAAA,CAACA,EAAkB,SAASE,CAAK;AAC1C;"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@paragrav/rhf-utils",
3
3
  "author": "paragrav.dev",
4
4
  "license": "MIT",
5
- "version": "0.0.131",
5
+ "version": "0.0.133",
6
6
  "description": "Integration utilities for react-hook-form.",
7
7
  "type": "module",
8
8
  "sideEffects": false,