@jcoreio/zod-forms 2.0.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/ConditionalValidator.d.mts +25 -0
  2. package/ConditionalValidator.d.mts.map +1 -0
  3. package/ConditionalValidator.d.ts +12 -12
  4. package/ConditionalValidator.d.ts.map +1 -1
  5. package/FieldPath.d.mts +24 -0
  6. package/FieldPath.d.mts.map +1 -0
  7. package/FieldPath.d.ts +13 -15
  8. package/FieldPath.d.ts.map +1 -1
  9. package/FormAction.d.mts +15 -0
  10. package/FormAction.d.mts.map +1 -0
  11. package/FormAction.d.ts +12 -12
  12. package/FormAction.d.ts.map +1 -1
  13. package/FormContext.d.mts +40 -0
  14. package/FormContext.d.mts.map +1 -0
  15. package/FormContext.d.ts +34 -34
  16. package/FormContext.d.ts.map +1 -1
  17. package/FormState.d.mts +34 -0
  18. package/FormState.d.mts.map +1 -0
  19. package/FormState.d.ts +24 -25
  20. package/FormState.d.ts.map +1 -1
  21. package/FormState.js.map +1 -1
  22. package/FormState.mjs.map +1 -1
  23. package/FormStateContext.d.mts +8 -0
  24. package/FormStateContext.d.mts.map +1 -0
  25. package/FormStateContext.d.ts +2 -2
  26. package/FormStateContext.d.ts.map +1 -1
  27. package/actions/addHandlers.d.mts +15 -0
  28. package/actions/addHandlers.d.mts.map +1 -0
  29. package/actions/addHandlers.d.ts +8 -8
  30. package/actions/addHandlers.d.ts.map +1 -1
  31. package/actions/arrayActions.d.mts +130 -0
  32. package/actions/arrayActions.d.mts.map +1 -0
  33. package/actions/arrayActions.d.ts +77 -77
  34. package/actions/arrayActions.d.ts.map +1 -1
  35. package/actions/initialize.d.mts +14 -0
  36. package/actions/initialize.d.mts.map +1 -0
  37. package/actions/initialize.d.ts +8 -8
  38. package/actions/initialize.d.ts.map +1 -1
  39. package/actions/removeHandlers.d.mts +10 -0
  40. package/actions/removeHandlers.d.mts.map +1 -0
  41. package/actions/removeHandlers.d.ts +5 -5
  42. package/actions/removeHandlers.d.ts.map +1 -1
  43. package/actions/setMeta.d.mts +9 -0
  44. package/actions/setMeta.d.mts.map +1 -0
  45. package/actions/setMeta.d.ts +5 -5
  46. package/actions/setMeta.d.ts.map +1 -1
  47. package/actions/setMounted.d.mts +6 -0
  48. package/actions/setMounted.d.mts.map +1 -0
  49. package/actions/setMounted.d.ts +2 -2
  50. package/actions/setMounted.d.ts.map +1 -1
  51. package/actions/setParsedValue.d.mts +12 -0
  52. package/actions/setParsedValue.d.mts.map +1 -0
  53. package/actions/setParsedValue.d.ts +6 -6
  54. package/actions/setParsedValue.d.ts.map +1 -1
  55. package/actions/setSubmitStatus.d.mts +14 -0
  56. package/actions/setSubmitStatus.d.mts.map +1 -0
  57. package/actions/setSubmitStatus.d.ts +9 -9
  58. package/actions/setSubmitStatus.d.ts.map +1 -1
  59. package/actions/setValue.d.mts +10 -0
  60. package/actions/setValue.d.mts.map +1 -0
  61. package/actions/setValue.d.ts +5 -5
  62. package/actions/setValue.d.ts.map +1 -1
  63. package/actions/submit.d.mts +5 -0
  64. package/actions/submit.d.mts.map +1 -0
  65. package/actions/submit.d.ts +1 -1
  66. package/actions/submit.d.ts.map +1 -1
  67. package/actions/submitSucceeded.d.mts +5 -0
  68. package/actions/submitSucceeded.d.mts.map +1 -0
  69. package/actions/submitSucceeded.d.ts +1 -1
  70. package/actions/submitSucceeded.d.ts.map +1 -1
  71. package/createFormMiddleware.d.mts +6 -0
  72. package/createFormMiddleware.d.mts.map +1 -0
  73. package/createFormMiddleware.d.ts +2 -2
  74. package/createFormMiddleware.d.ts.map +1 -1
  75. package/createFormProvider.d.mts +15 -0
  76. package/createFormProvider.d.mts.map +1 -0
  77. package/createFormProvider.d.ts +9 -7
  78. package/createFormProvider.d.ts.map +1 -1
  79. package/createFormReducer.d.mts +9 -0
  80. package/createFormReducer.d.mts.map +1 -0
  81. package/createFormReducer.d.ts +4 -4
  82. package/createFormReducer.d.ts.map +1 -1
  83. package/createSelectFieldErrorMap.d.mts +32 -0
  84. package/createSelectFieldErrorMap.d.mts.map +1 -0
  85. package/createSelectFieldErrorMap.d.ts +23 -23
  86. package/createSelectFieldErrorMap.d.ts.map +1 -1
  87. package/createSelectFormStatus.d.mts +133 -0
  88. package/createSelectFormStatus.d.mts.map +1 -0
  89. package/createSelectFormStatus.d.ts +101 -97
  90. package/createSelectFormStatus.d.ts.map +1 -1
  91. package/createSelectFormStatus.js +2 -2
  92. package/createSelectFormStatus.js.map +1 -1
  93. package/createSelectFormStatus.mjs +1 -1
  94. package/createSelectFormStatus.mjs.map +1 -1
  95. package/createSelectFormValues.d.mts +45 -0
  96. package/createSelectFormValues.d.mts.map +1 -0
  97. package/createSelectFormValues.d.ts +34 -34
  98. package/createSelectFormValues.d.ts.map +1 -1
  99. package/createZodForm.d.mts +42 -0
  100. package/createZodForm.d.mts.map +1 -0
  101. package/createZodForm.d.ts +36 -32
  102. package/createZodForm.d.ts.map +1 -1
  103. package/index.d.mts +15 -0
  104. package/index.d.mts.map +1 -0
  105. package/index.d.ts +14 -14
  106. package/index.d.ts.map +1 -1
  107. package/initFormState.d.mts +4 -0
  108. package/initFormState.d.mts.map +1 -0
  109. package/initFormState.d.ts +1 -1
  110. package/initFormState.d.ts.map +1 -1
  111. package/package.json +10 -7
  112. package/reducers/addHandlers.d.mts +24 -0
  113. package/reducers/addHandlers.d.mts.map +1 -0
  114. package/reducers/addHandlers.d.ts +20 -20
  115. package/reducers/addHandlers.d.ts.map +1 -1
  116. package/reducers/arrayInsert.d.mts +7 -0
  117. package/reducers/arrayInsert.d.mts.map +1 -0
  118. package/reducers/arrayInsert.d.ts +3 -3
  119. package/reducers/arrayInsert.d.ts.map +1 -1
  120. package/reducers/arrayInsertParsed.d.mts +7 -0
  121. package/reducers/arrayInsertParsed.d.mts.map +1 -0
  122. package/reducers/arrayInsertParsed.d.ts +3 -3
  123. package/reducers/arrayInsertParsed.d.ts.map +1 -1
  124. package/reducers/arrayMove.d.mts +8 -0
  125. package/reducers/arrayMove.d.mts.map +1 -0
  126. package/reducers/arrayMove.d.ts +3 -3
  127. package/reducers/arrayMove.d.ts.map +1 -1
  128. package/reducers/arrayPop.d.mts +7 -0
  129. package/reducers/arrayPop.d.mts.map +1 -0
  130. package/reducers/arrayPop.d.ts +3 -3
  131. package/reducers/arrayPop.d.ts.map +1 -1
  132. package/reducers/arrayPush.d.mts +7 -0
  133. package/reducers/arrayPush.d.mts.map +1 -0
  134. package/reducers/arrayPush.d.ts +3 -3
  135. package/reducers/arrayPush.d.ts.map +1 -1
  136. package/reducers/arrayPushParsed.d.mts +7 -0
  137. package/reducers/arrayPushParsed.d.mts.map +1 -0
  138. package/reducers/arrayPushParsed.d.ts +3 -3
  139. package/reducers/arrayPushParsed.d.ts.map +1 -1
  140. package/reducers/arrayRemove.d.mts +7 -0
  141. package/reducers/arrayRemove.d.mts.map +1 -0
  142. package/reducers/arrayRemove.d.ts +3 -3
  143. package/reducers/arrayRemove.d.ts.map +1 -1
  144. package/reducers/arrayRemoveAll.d.mts +7 -0
  145. package/reducers/arrayRemoveAll.d.mts.map +1 -0
  146. package/reducers/arrayRemoveAll.d.ts +3 -3
  147. package/reducers/arrayRemoveAll.d.ts.map +1 -1
  148. package/reducers/arrayShift.d.mts +7 -0
  149. package/reducers/arrayShift.d.mts.map +1 -0
  150. package/reducers/arrayShift.d.ts +3 -3
  151. package/reducers/arrayShift.d.ts.map +1 -1
  152. package/reducers/arraySplice.d.mts +7 -0
  153. package/reducers/arraySplice.d.mts.map +1 -0
  154. package/reducers/arraySplice.d.ts +3 -3
  155. package/reducers/arraySplice.d.ts.map +1 -1
  156. package/reducers/arraySpliceParsed.d.mts +7 -0
  157. package/reducers/arraySpliceParsed.d.mts.map +1 -0
  158. package/reducers/arraySpliceParsed.d.ts +3 -3
  159. package/reducers/arraySpliceParsed.d.ts.map +1 -1
  160. package/reducers/arraySwap.d.mts +8 -0
  161. package/reducers/arraySwap.d.mts.map +1 -0
  162. package/reducers/arraySwap.d.ts +3 -3
  163. package/reducers/arraySwap.d.ts.map +1 -1
  164. package/reducers/arrayUnshift.d.mts +7 -0
  165. package/reducers/arrayUnshift.d.mts.map +1 -0
  166. package/reducers/arrayUnshift.d.ts +3 -3
  167. package/reducers/arrayUnshift.d.ts.map +1 -1
  168. package/reducers/arrayUnshiftParsed.d.mts +7 -0
  169. package/reducers/arrayUnshiftParsed.d.mts.map +1 -0
  170. package/reducers/arrayUnshiftParsed.d.ts +3 -3
  171. package/reducers/arrayUnshiftParsed.d.ts.map +1 -1
  172. package/reducers/initialize.d.mts +49 -0
  173. package/reducers/initialize.d.mts.map +1 -0
  174. package/reducers/initialize.d.ts +44 -41
  175. package/reducers/initialize.d.ts.map +1 -1
  176. package/reducers/removeHandlers.d.mts +24 -0
  177. package/reducers/removeHandlers.d.mts.map +1 -0
  178. package/reducers/removeHandlers.d.ts +20 -20
  179. package/reducers/removeHandlers.d.ts.map +1 -1
  180. package/reducers/setMeta.d.mts +6 -0
  181. package/reducers/setMeta.d.mts.map +1 -0
  182. package/reducers/setMeta.d.ts +3 -3
  183. package/reducers/setMeta.d.ts.map +1 -1
  184. package/reducers/setParsedValue.d.mts +50 -0
  185. package/reducers/setParsedValue.d.mts.map +1 -0
  186. package/reducers/setParsedValue.d.ts +45 -42
  187. package/reducers/setParsedValue.d.ts.map +1 -1
  188. package/reducers/setSubmitStatus.d.mts +24 -0
  189. package/reducers/setSubmitStatus.d.mts.map +1 -0
  190. package/reducers/setSubmitStatus.d.ts +20 -20
  191. package/reducers/setSubmitStatus.d.ts.map +1 -1
  192. package/reducers/setValue.d.mts +29 -0
  193. package/reducers/setValue.d.mts.map +1 -0
  194. package/reducers/setValue.d.ts +25 -23
  195. package/reducers/setValue.d.ts.map +1 -1
  196. package/reducers/submitSucceeded.d.mts +23 -0
  197. package/reducers/submitSucceeded.d.mts.map +1 -0
  198. package/reducers/submitSucceeded.d.ts +19 -19
  199. package/reducers/submitSucceeded.d.ts.map +1 -1
  200. package/reducers/util/getInverseArrayElementSchema.d.mts +3 -0
  201. package/reducers/util/getInverseArrayElementSchema.d.mts.map +1 -0
  202. package/reducers/util/getInverseArrayElementSchema.d.ts.map +1 -1
  203. package/reducers/util/updateRawArray.d.mts +7 -0
  204. package/reducers/util/updateRawArray.d.mts.map +1 -0
  205. package/reducers/util/updateRawArray.d.ts +3 -3
  206. package/reducers/util/updateRawArray.d.ts.map +1 -1
  207. package/src/FormState.ts +1 -0
  208. package/src/createSelectFormStatus.ts +3 -1
  209. package/src/useArrayField.ts +13 -2
  210. package/src/useField.ts +81 -18
  211. package/src/useHtmlField.ts +31 -23
  212. package/useArrayField.d.mts +34 -0
  213. package/useArrayField.d.mts.map +1 -0
  214. package/useArrayField.d.ts +23 -23
  215. package/useArrayField.d.ts.map +1 -1
  216. package/useArrayField.js +22 -8
  217. package/useArrayField.js.map +1 -1
  218. package/useArrayField.mjs +12 -2
  219. package/useArrayField.mjs.map +1 -1
  220. package/useField.d.mts +38 -0
  221. package/useField.d.mts.map +1 -0
  222. package/useField.d.ts +31 -28
  223. package/useField.d.ts.map +1 -1
  224. package/useField.js +55 -22
  225. package/useField.js.map +1 -1
  226. package/useField.mjs +34 -16
  227. package/useField.mjs.map +1 -1
  228. package/useFormContext.d.mts +4 -0
  229. package/useFormContext.d.mts.map +1 -0
  230. package/useFormContext.d.ts +1 -1
  231. package/useFormContext.d.ts.map +1 -1
  232. package/useFormDispatch.d.mts +5 -0
  233. package/useFormDispatch.d.mts.map +1 -0
  234. package/useFormDispatch.d.ts +1 -1
  235. package/useFormDispatch.d.ts.map +1 -1
  236. package/useFormSelector.d.mts +6 -0
  237. package/useFormSelector.d.mts.map +1 -0
  238. package/useFormSelector.d.ts +1 -1
  239. package/useFormSelector.d.ts.map +1 -1
  240. package/useFormStatus.d.mts +13 -0
  241. package/useFormStatus.d.mts.map +1 -0
  242. package/useFormStatus.d.ts +10 -10
  243. package/useFormStatus.d.ts.map +1 -1
  244. package/useFormValues.d.mts +8 -0
  245. package/useFormValues.d.mts.map +1 -0
  246. package/useFormValues.d.ts +4 -4
  247. package/useFormValues.d.ts.map +1 -1
  248. package/useHtmlField.d.mts +41 -0
  249. package/useHtmlField.d.mts.map +1 -0
  250. package/useHtmlField.d.ts +25 -24
  251. package/useHtmlField.d.ts.map +1 -1
  252. package/useHtmlField.js +34 -23
  253. package/useHtmlField.js.map +1 -1
  254. package/useHtmlField.mjs +35 -20
  255. package/useHtmlField.mjs.map +1 -1
  256. package/useInitialize.d.mts +5 -0
  257. package/useInitialize.d.mts.map +1 -0
  258. package/useInitialize.d.ts +1 -1
  259. package/useInitialize.d.ts.map +1 -1
  260. package/useSubmit.d.mts +5 -0
  261. package/useSubmit.d.mts.map +1 -0
  262. package/useSubmit.d.ts +1 -1
  263. package/useSubmit.d.ts.map +1 -1
  264. package/util/DeepPartial.d.mts +2 -0
  265. package/util/DeepPartial.d.mts.map +1 -0
  266. package/util/DeepPartial.d.ts +1 -3
  267. package/util/DeepPartial.d.ts.map +1 -1
  268. package/util/PathInSchema.d.mts +5 -0
  269. package/util/PathInSchema.d.mts.map +1 -0
  270. package/util/PathInSchema.d.ts +1 -1
  271. package/util/PathInSchema.d.ts.map +1 -1
  272. package/util/PathInType.d.mts +7 -0
  273. package/util/PathInType.d.mts.map +1 -0
  274. package/util/PathInType.d.ts +3 -8
  275. package/util/PathInType.d.ts.map +1 -1
  276. package/util/SchemaAt.d.mts +5 -0
  277. package/util/SchemaAt.d.mts.map +1 -0
  278. package/util/SchemaAt.d.ts.map +1 -1
  279. package/util/acceptsBigint.d.mts +3 -0
  280. package/util/acceptsBigint.d.mts.map +1 -0
  281. package/util/acceptsBigint.d.ts.map +1 -1
  282. package/util/acceptsBigint.js +2 -2
  283. package/util/acceptsBigint.js.map +1 -1
  284. package/util/acceptsNumber.d.mts +3 -0
  285. package/util/acceptsNumber.d.mts.map +1 -0
  286. package/util/acceptsNumber.d.ts.map +1 -1
  287. package/util/acceptsNumber.js +2 -2
  288. package/util/acceptsNumber.js.map +1 -1
  289. package/util/bindActionsToField.d.mts +3 -0
  290. package/util/bindActionsToField.d.mts.map +1 -0
  291. package/util/bindActionsToField.d.ts +2 -6
  292. package/util/bindActionsToField.d.ts.map +1 -1
  293. package/util/get.d.mts +2 -0
  294. package/util/get.d.mts.map +1 -0
  295. package/util/get.d.ts.map +1 -1
  296. package/util/getArrayElementSchema.d.mts +3 -0
  297. package/util/getArrayElementSchema.d.mts.map +1 -0
  298. package/util/getArrayElementSchema.d.ts.map +1 -1
  299. package/util/getArrayElementSchema.js +2 -2
  300. package/util/getArrayElementSchema.js.map +1 -1
  301. package/util/isPromise.d.mts +2 -0
  302. package/util/isPromise.d.mts.map +1 -0
  303. package/util/isPromise.d.ts.map +1 -1
  304. package/util/maybeParse.d.mts +3 -0
  305. package/util/maybeParse.d.mts.map +1 -0
  306. package/util/maybeParse.d.ts.map +1 -1
  307. package/util/parsePathstring.d.mts +33 -0
  308. package/util/parsePathstring.d.mts.map +1 -0
  309. package/util/parsePathstring.d.ts +14 -38
  310. package/util/parsePathstring.d.ts.map +1 -1
  311. package/util/pathstring.d.mts +7 -0
  312. package/util/pathstring.d.mts.map +1 -0
  313. package/util/pathstring.d.ts.map +1 -1
  314. package/util/set.d.mts +2 -0
  315. package/util/set.d.mts.map +1 -0
  316. package/util/set.d.ts.map +1 -1
  317. package/util/setAdd.d.mts +2 -0
  318. package/util/setAdd.d.mts.map +1 -0
  319. package/util/setAdd.d.ts.map +1 -1
  320. package/util/setDelete.d.mts +2 -0
  321. package/util/setDelete.d.mts.map +1 -0
  322. package/util/setDelete.d.ts.map +1 -1
package/useHtmlField.d.ts CHANGED
@@ -1,38 +1,39 @@
1
1
  import z from 'zod';
2
- import { FieldPath } from './FieldPath';
3
- import { UseFieldProps } from './useField';
2
+ import { FieldPath } from "./FieldPath.js";
3
+ import { UseFieldProps } from "./useField.js";
4
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';
5
+ import { PathInSchema, PathstringInSchema } from "./util/PathInSchema.js";
6
+ import { parsePathstring } from "./util/parsePathstring.js";
7
+ import { SchemaAt } from "./util/SchemaAt.js";
8
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;
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
16
  };
17
17
  export type ValidUseHtmlFieldProps<Field extends FieldPath> = {
18
- input: HtmlFieldInputProps;
19
- meta: UseFieldProps<Field>;
18
+ input: HtmlFieldInputProps;
19
+ meta: UseFieldProps<Field>;
20
20
  };
21
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>;
22
+ input: HtmlFieldInputProps;
23
+ meta: UseFieldProps<Field>;
24
24
  } : {
25
- ERROR: 'field schema input must be a nullish string, number, boolean or bigint';
25
+ ERROR: 'field schema input must be a nullish string, number, boolean or bigint';
26
26
  };
27
- export type UseHtmlFieldOptions<Field, Schema extends z.ZodTypeAny = Field extends FieldPath<infer S> ? S : z.ZodTypeAny> = {
28
- field: Field;
29
- type: z.input<Schema> extends boolean | null | undefined ? 'checkbox' : Exclude<HTMLInputTypeAttribute, 'checkbox'>;
30
- normalizeOnBlur?: boolean;
27
+ export type UseHtmlFieldOptions<Field, Schema extends z.ZodTypeAny = (Field extends FieldPath<infer S> ? S : z.ZodTypeAny)> = {
28
+ field: Field;
29
+ type: z.input<Schema> extends boolean | null | undefined ? 'checkbox' : Exclude<HTMLInputTypeAttribute, 'checkbox'>;
30
+ normalizeOnMount?: boolean;
31
+ normalizeOnBlur?: boolean;
31
32
  };
32
33
  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>>>>;
34
+ <Field extends FieldPath>(options: UseHtmlFieldOptions<Field, Field['schema']>): UseHtmlFieldProps<Field>;
35
+ <Path extends PathInSchema<T>>(options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>;
36
+ <Path extends PathstringInSchema<T>>(options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>;
36
37
  }
37
38
  export declare function useHtmlField<Field extends FieldPath>(options: UseHtmlFieldOptions<Field, Field['schema']>): UseHtmlFieldProps<Field>;
38
39
  export declare function useHtmlField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseHtmlField<T> to pass a path array'>, Path extends PathInSchema<T> = any>(options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"useHtmlField.d.ts","sourceRoot":"","sources":["src/useHtmlField.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useHtmlField.d.ts","names":["z","FieldPath","UseFieldProps","React","HTMLInputTypeAttribute","PathInSchema","PathstringInSchema","parsePathstring","SchemaAt","HtmlFieldInputProps","name","type","value","checked","onChange","ChangeEventHandler","onFocus","FocusEventHandler","onBlur","ValidUseHtmlFieldProps","input","meta","Field","UseHtmlFieldProps","ERROR","UseHtmlFieldOptions","ZodTypeAny","S","field","Schema","Exclude","normalizeOnMount","normalizeOnBlur","TypedUseHtmlField","options","T","Path","useHtmlField","ZodBranded","ZodNever"],"sources":["src/useHtmlField.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/useHtmlField.js CHANGED
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.useHtmlField = useHtmlField;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _zod = _interopRequireDefault(require("zod"));
11
11
  var _FieldPath = require("./FieldPath.js");
12
12
  var _useField = require("./useField.js");
13
13
  var _react = _interopRequireDefault(require("react"));
@@ -15,16 +15,24 @@ var _zodInvertible = require("zod-invertible");
15
15
  var _useFormContext2 = require("./useFormContext.js");
16
16
  var _acceptsNumber = require("./util/acceptsNumber.js");
17
17
  var _acceptsBigint = require("./util/acceptsBigint.js");
18
+ var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
18
19
  var _excluded = ["parsedValue", "value", "initialParsedValue", "initialValue", "setParsedValue", "setValue", "setMeta"],
19
20
  _excluded2 = ["field"];
20
21
  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
22
  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; }
23
+ var customMetaSchema = _zod["default"].object({
24
+ value: _zod["default"].unknown(),
25
+ stringValue: _zod["default"].string()
26
+ });
22
27
  function useHtmlFieldBase(options) {
23
28
  var field = options.field,
24
29
  type = options.type,
30
+ normalizeOnMount = options.normalizeOnMount,
25
31
  _options$normalizeOnB = options.normalizeOnBlur,
26
32
  normalizeOnBlur = _options$normalizeOnB === void 0 ? true : _options$normalizeOnB;
27
- var props = (0, _useField.useField)(field);
33
+ var props = (0, _useField.useField)(field, {
34
+ normalizeOnMount: normalizeOnMount
35
+ });
28
36
  var parsedValue = props.parsedValue,
29
37
  value = props.value,
30
38
  initialParsedValue = props.initialParsedValue,
@@ -33,17 +41,16 @@ function useHtmlFieldBase(options) {
33
41
  setValue = props.setValue,
34
42
  setMeta = props.setMeta,
35
43
  meta = (0, _objectWithoutProperties2["default"])(props, _excluded);
36
- var schema = field.schema;
37
44
 
38
- // tempValue is used for storing blank text when we've coerced the
39
- // value to null or undefined, or storing numeric text when we've
40
- // coerced the value to a number or bigint.
45
+ // we've coerced the value to null or undefined, or storing numeric
46
+ // text when we've coerced the value to a number or bigint.
41
47
  // This way we can set a value that will parse better in the form
42
48
  // state without interfering with the text the user is typing.
43
- var _React$useState = _react["default"].useState(value),
44
- _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
45
- tempValue = _React$useState2[0],
46
- setTempValue = _React$useState2[1];
49
+ var customMeta = _react["default"].useMemo(function () {
50
+ var parsedCustomMeta = customMetaSchema.safeParse(meta.customMeta);
51
+ return parsedCustomMeta.success ? parsedCustomMeta.data : undefined;
52
+ }, [meta.customMeta]);
53
+ var schema = field.schema;
47
54
  var tryNumber = _react["default"].useMemo(function () {
48
55
  return (0, _acceptsNumber.acceptsNumber)(schema);
49
56
  }, [schema]);
@@ -58,7 +65,12 @@ function useHtmlFieldBase(options) {
58
65
  tryBigint: tryBigint
59
66
  });
60
67
  if (typeof value === 'string' && typeof normalized !== 'string') {
61
- setTempValue(value);
68
+ setMeta({
69
+ customMeta: {
70
+ stringValue: value,
71
+ value: normalized
72
+ }
73
+ });
62
74
  }
63
75
  setValue(normalized);
64
76
  }, [getValue, setValue, schema]);
@@ -68,21 +80,20 @@ function useHtmlFieldBase(options) {
68
80
  });
69
81
  }, []);
70
82
  var onBlur = _react["default"].useCallback(function (e) {
71
- var value = normalizeValue(getValue(e), {
72
- schema: schema,
73
- tryNumber: tryNumber,
74
- tryBigint: tryBigint
75
- });
76
83
  if (normalizeOnBlur) {
77
- var parsed = field.schema.safeParse(value);
84
+ var _value = normalizeValue(getValue(e), {
85
+ schema: schema,
86
+ tryNumber: tryNumber,
87
+ tryBigint: tryBigint
88
+ });
89
+ var parsed = field.schema.safeParse(_value);
78
90
  var formatted = parsed.success ? (0, _zodInvertible.invert)(field.schema).safeParse(parsed.data) : undefined;
79
- if (formatted !== null && formatted !== void 0 && formatted.success) value = formatted.data;
80
- setValue(value);
91
+ setValue(formatted !== null && formatted !== void 0 && formatted.success ? formatted.data : _value);
81
92
  }
82
- setTempValue(undefined);
83
93
  setMeta({
84
94
  visited: true,
85
- touched: true
95
+ touched: true,
96
+ customMeta: undefined
86
97
  });
87
98
  }, [getValue, setValue, schema]);
88
99
  return _react["default"].useMemo(function () {
@@ -90,7 +101,7 @@ function useHtmlFieldBase(options) {
90
101
  input: _objectSpread(_objectSpread({
91
102
  name: field.pathstring,
92
103
  type: type,
93
- value: typeof value === 'boolean' ? String(value) : typeof value === 'string' ? value || tempValue || '' : tempValue || (value == null ? '' : String(value) || '')
104
+ value: typeof value === 'boolean' ? String(value) : typeof value === 'string' ? value || (customMeta === null || customMeta === void 0 ? void 0 : customMeta.stringValue) || '' : customMeta && (0, _fastDeepEqual["default"])(customMeta.value, value) ? customMeta.stringValue : value == null ? '' : String(value) || ''
94
105
  }, type === 'checkbox' && {
95
106
  checked: Boolean(value)
96
107
  }), {}, {
@@ -108,7 +119,7 @@ function useHtmlFieldBase(options) {
108
119
  setMeta: setMeta
109
120
  })
110
121
  };
111
- }, [props, tempValue, onChange]);
122
+ }, [props, customMeta, onChange]);
112
123
  }
113
124
  function getValue(e) {
114
125
  var target = e.target;
@@ -1 +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","parsedValue","value","initialParsedValue","initialValue","setParsedValue","setValue","setMeta","meta","_objectWithoutProperties2","schema","_React$useState","React","useState","_React$useState2","_slicedToArray2","tempValue","setTempValue","tryNumber","useMemo","acceptsNumber","tryBigint","acceptsBigint","onChange","useCallback","getValue","normalized","normalizeValue","onFocus","visited","onBlur","parsed","safeParse","formatted","success","invert","data","undefined","touched","input","name","pathstring","String","checked","Boolean","target","HTMLInputElement","normalizeBlank","safeBigInt","BigInt","_unused","_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, { ChangeEvent, 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'\nimport { DeepPartial } from './util/DeepPartial'\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> =\n z.input<Field['schema']> extends (\n string | number | bigint | boolean | null | undefined\n ) ?\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\nexport type UseHtmlFieldOptions<\n Field,\n Schema extends z.ZodTypeAny = Field extends FieldPath<infer S> ? S\n : z.ZodTypeAny,\n> = {\n field: Field\n type: z.input<Schema> extends boolean | null | undefined ? '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 parsedValue,\n value,\n initialParsedValue,\n initialValue,\n setParsedValue,\n setValue,\n setMeta,\n ...meta\n } = props\n\n const { schema } = field\n\n // tempValue is used for storing blank text when we've coerced the\n // value to null or undefined, or storing numeric text when we've\n // coerced the value to a number or bigint.\n // This way we can set a value that will parse better in the form\n // state without interfering with the text the user is typing.\n const [tempValue, setTempValue] = React.useState(\n value 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 const value = getValue(e)\n const normalized = normalizeValue(value, {\n schema,\n tryNumber,\n tryBigint,\n })\n if (typeof value === 'string' && typeof normalized !== 'string') {\n setTempValue(value)\n }\n setValue(normalized)\n },\n [getValue, setValue, schema]\n )\n\n const onFocus = React.useCallback(() => {\n setMeta({ visited: true })\n }, [])\n\n const onBlur = React.useCallback(\n (e: React.FocusEvent) => {\n let value = normalizeValue(getValue(e), {\n schema,\n tryNumber,\n tryBigint,\n })\n if (normalizeOnBlur) {\n const parsed = field.schema.safeParse(value)\n const formatted =\n parsed.success ?\n invert(field.schema).safeParse(parsed.data)\n : undefined\n if (formatted?.success) value = formatted.data\n setValue(value)\n }\n setTempValue(undefined)\n setMeta({ visited: true, touched: true })\n },\n [getValue, setValue, schema]\n )\n\n return React.useMemo(\n (): ValidUseHtmlFieldProps<Field> => ({\n input: {\n name: field.pathstring,\n type,\n value:\n typeof value === 'boolean' ? String(value)\n : typeof value === 'string' ? value || tempValue || ''\n : tempValue || (value == null ? '' : String(value) || ''),\n ...(type === 'checkbox' && { checked: Boolean(value) }),\n onChange,\n onFocus,\n onBlur,\n },\n meta: {\n ...meta,\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n setParsedValue,\n setValue,\n setMeta,\n },\n }),\n [props, tempValue, onChange]\n ) as any\n}\n\nfunction getValue(e: ChangeEvent) {\n const { target } = e\n if (target instanceof HTMLInputElement) {\n return target.type === 'checkbox' ? target.checked : target.value\n }\n return (target as any).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(value: string): bigint | undefined {\n try {\n return BigInt(value)\n } catch {\n return undefined\n }\n}\n\nfunction normalizeValue<T extends z.ZodTypeAny>(\n value: string | boolean,\n {\n schema,\n tryNumber,\n tryBigint,\n }: { schema: T; tryNumber: boolean; tryBigint: boolean }\n): DeepPartial<z.input<T>> | undefined {\n if (typeof value === 'boolean') return value as any\n if (typeof value === 'string' && !/\\S/.test(value)) {\n return normalizeBlank(schema)\n }\n if (typeof value === 'string' && !schema.safeParse(value).success) {\n if (tryNumber) {\n const num = Number(value)\n if (!isNaN(num)) return num as any\n }\n if (tryBigint) {\n const bigint = safeBigInt(value)\n if (bigint != null) return bigint as any\n }\n }\n return value as any\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 = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseHtmlField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useHtmlField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseHtmlField<T> to pass a pathstring'\n >,\n Path extends PathstringInSchema<T> = any,\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>\nexport function useHtmlField<T extends z.ZodTypeAny>({\n field,\n ...rest\n}: UseHtmlFieldOptions<FieldPath | BasePath, T>): UseHtmlFieldProps<any> {\n const { root } = useFormContext<T>()\n return useHtmlFieldBase({\n field: field instanceof FieldPath ? field : root.get(field as any),\n ...rest,\n })\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useHtmlField.js","names":["_zod","_interopRequireDefault","require","_FieldPath","_useField","_react","_zodInvertible","_useFormContext2","_acceptsNumber","_acceptsBigint","_fastDeepEqual","_excluded","_excluded2","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","customMetaSchema","z","object","value","unknown","stringValue","string","useHtmlFieldBase","options","field","type","normalizeOnMount","_options$normalizeOnB","normalizeOnBlur","props","useField","parsedValue","initialParsedValue","initialValue","setParsedValue","setValue","setMeta","meta","_objectWithoutProperties2","customMeta","React","useMemo","parsedCustomMeta","safeParse","success","data","undefined","schema","tryNumber","acceptsNumber","tryBigint","acceptsBigint","onChange","useCallback","getValue","normalized","normalizeValue","onFocus","visited","onBlur","parsed","formatted","invert","touched","input","name","pathstring","String","isEqual","checked","Boolean","target","HTMLInputElement","normalizeBlank","safeBigInt","BigInt","_unused","_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, { ChangeEvent, 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'\nimport { DeepPartial } from './util/DeepPartial'\nimport isEqual from 'fast-deep-equal'\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> =\n z.input<Field['schema']> extends (\n string | number | bigint | boolean | null | undefined\n ) ?\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\nexport type UseHtmlFieldOptions<\n Field,\n Schema extends z.ZodTypeAny = Field extends FieldPath<infer S> ? S\n : z.ZodTypeAny,\n> = {\n field: Field\n type: z.input<Schema> extends boolean | null | undefined ? 'checkbox'\n : Exclude<HTMLInputTypeAttribute, 'checkbox'>\n normalizeOnMount?: boolean\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\nconst customMetaSchema = z.object({\n value: z.unknown(),\n stringValue: z.string(),\n})\n\nfunction useHtmlFieldBase<Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n): UseHtmlFieldProps<Field> {\n const { field, type, normalizeOnMount, normalizeOnBlur = true } = options\n const props = useField(field, { normalizeOnMount })\n const {\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n setParsedValue,\n setValue,\n setMeta,\n ...meta\n } = props\n\n // we've coerced the value to null or undefined, or storing numeric\n // text when we've coerced the value to a number or bigint.\n // This way we can set a value that will parse better in the form\n // state without interfering with the text the user is typing.\n const customMeta = React.useMemo(() => {\n const parsedCustomMeta = customMetaSchema.safeParse(meta.customMeta)\n return parsedCustomMeta.success ? parsedCustomMeta.data : undefined\n }, [meta.customMeta])\n\n const { schema } = field\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 const value = getValue(e)\n const normalized = normalizeValue(value, {\n schema,\n tryNumber,\n tryBigint,\n })\n if (typeof value === 'string' && typeof normalized !== 'string') {\n setMeta({ customMeta: { stringValue: value, value: normalized } })\n }\n setValue(normalized)\n },\n [getValue, setValue, 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 (normalizeOnBlur) {\n const value = normalizeValue(getValue(e), {\n schema,\n tryNumber,\n tryBigint,\n })\n const parsed = field.schema.safeParse(value)\n const formatted =\n parsed.success ?\n invert(field.schema).safeParse(parsed.data)\n : undefined\n setValue(formatted?.success ? formatted.data : value)\n }\n setMeta({ visited: true, touched: true, customMeta: undefined })\n },\n [getValue, setValue, schema]\n )\n\n return React.useMemo(\n (): ValidUseHtmlFieldProps<Field> => ({\n input: {\n name: field.pathstring,\n type,\n value:\n typeof value === 'boolean' ? String(value)\n : typeof value === 'string' ? value || customMeta?.stringValue || ''\n : customMeta && isEqual(customMeta.value, value) ?\n customMeta.stringValue\n : value == null ? ''\n : String(value) || '',\n ...(type === 'checkbox' && { checked: Boolean(value) }),\n onChange,\n onFocus,\n onBlur,\n },\n meta: {\n ...meta,\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n setParsedValue,\n setValue,\n setMeta,\n },\n }),\n [props, customMeta, onChange]\n ) as any\n}\n\nfunction getValue(e: ChangeEvent) {\n const { target } = e\n if (target instanceof HTMLInputElement) {\n return target.type === 'checkbox' ? target.checked : target.value\n }\n return (target as any).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(value: string): bigint | undefined {\n try {\n return BigInt(value)\n } catch {\n return undefined\n }\n}\n\nfunction normalizeValue<T extends z.ZodTypeAny>(\n value: string | boolean,\n {\n schema,\n tryNumber,\n tryBigint,\n }: { schema: T; tryNumber: boolean; tryBigint: boolean }\n): DeepPartial<z.input<T>> | undefined {\n if (typeof value === 'boolean') return value as any\n if (typeof value === 'string' && !/\\S/.test(value)) {\n return normalizeBlank(schema)\n }\n if (typeof value === 'string' && !schema.safeParse(value).success) {\n if (tryNumber) {\n const num = Number(value)\n if (!isNaN(num)) return num as any\n }\n if (tryBigint) {\n const bigint = safeBigInt(value)\n if (bigint != null) return bigint as any\n }\n }\n return value as any\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 = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseHtmlField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useHtmlField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseHtmlField<T> to pass a pathstring'\n >,\n Path extends PathstringInSchema<T> = any,\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>\nexport function useHtmlField<T extends z.ZodTypeAny>({\n field,\n ...rest\n}: UseHtmlFieldOptions<FieldPath | BasePath, T>): UseHtmlFieldProps<any> {\n const { root } = useFormContext<T>()\n return useHtmlFieldBase({\n field: field instanceof FieldPath ? field : root.get(field as any),\n ...rest,\n })\n}\n"],"mappings":"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","ignoreList":[]}
package/useHtmlField.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ import z from 'zod';
1
2
  import { FieldPath } from "./FieldPath.mjs";
2
3
  import { useField } from "./useField.mjs";
3
4
  import React from 'react';
@@ -5,13 +6,21 @@ import { invert } from 'zod-invertible';
5
6
  import { useFormContext } from "./useFormContext.mjs";
6
7
  import { acceptsNumber } from "./util/acceptsNumber.mjs";
7
8
  import { acceptsBigint } from "./util/acceptsBigint.mjs";
9
+ import isEqual from 'fast-deep-equal';
10
+ const customMetaSchema = z.object({
11
+ value: z.unknown(),
12
+ stringValue: z.string()
13
+ });
8
14
  function useHtmlFieldBase(options) {
9
15
  const {
10
16
  field,
11
17
  type,
18
+ normalizeOnMount,
12
19
  normalizeOnBlur = true
13
20
  } = options;
14
- const props = useField(field);
21
+ const props = useField(field, {
22
+ normalizeOnMount
23
+ });
15
24
  const {
16
25
  parsedValue,
17
26
  value,
@@ -22,16 +31,18 @@ function useHtmlFieldBase(options) {
22
31
  setMeta,
23
32
  ...meta
24
33
  } = props;
25
- const {
26
- schema
27
- } = field;
28
34
 
29
- // tempValue is used for storing blank text when we've coerced the
30
- // value to null or undefined, or storing numeric text when we've
31
- // coerced the value to a number or bigint.
35
+ // we've coerced the value to null or undefined, or storing numeric
36
+ // text when we've coerced the value to a number or bigint.
32
37
  // This way we can set a value that will parse better in the form
33
38
  // state without interfering with the text the user is typing.
34
- const [tempValue, setTempValue] = React.useState(value);
39
+ const customMeta = React.useMemo(() => {
40
+ const parsedCustomMeta = customMetaSchema.safeParse(meta.customMeta);
41
+ return parsedCustomMeta.success ? parsedCustomMeta.data : undefined;
42
+ }, [meta.customMeta]);
43
+ const {
44
+ schema
45
+ } = field;
35
46
  const tryNumber = React.useMemo(() => acceptsNumber(schema), [schema]);
36
47
  const tryBigint = React.useMemo(() => acceptsBigint(schema), [schema]);
37
48
  const onChange = React.useCallback(e => {
@@ -42,7 +53,12 @@ function useHtmlFieldBase(options) {
42
53
  tryBigint
43
54
  });
44
55
  if (typeof value === 'string' && typeof normalized !== 'string') {
45
- setTempValue(value);
56
+ setMeta({
57
+ customMeta: {
58
+ stringValue: value,
59
+ value: normalized
60
+ }
61
+ });
46
62
  }
47
63
  setValue(normalized);
48
64
  }, [getValue, setValue, schema]);
@@ -52,28 +68,27 @@ function useHtmlFieldBase(options) {
52
68
  });
53
69
  }, []);
54
70
  const onBlur = React.useCallback(e => {
55
- let value = normalizeValue(getValue(e), {
56
- schema,
57
- tryNumber,
58
- tryBigint
59
- });
60
71
  if (normalizeOnBlur) {
72
+ const value = normalizeValue(getValue(e), {
73
+ schema,
74
+ tryNumber,
75
+ tryBigint
76
+ });
61
77
  const parsed = field.schema.safeParse(value);
62
78
  const formatted = parsed.success ? invert(field.schema).safeParse(parsed.data) : undefined;
63
- if (formatted !== null && formatted !== void 0 && formatted.success) value = formatted.data;
64
- setValue(value);
79
+ setValue(formatted !== null && formatted !== void 0 && formatted.success ? formatted.data : value);
65
80
  }
66
- setTempValue(undefined);
67
81
  setMeta({
68
82
  visited: true,
69
- touched: true
83
+ touched: true,
84
+ customMeta: undefined
70
85
  });
71
86
  }, [getValue, setValue, schema]);
72
87
  return React.useMemo(() => ({
73
88
  input: {
74
89
  name: field.pathstring,
75
90
  type,
76
- value: typeof value === 'boolean' ? String(value) : typeof value === 'string' ? value || tempValue || '' : tempValue || (value == null ? '' : String(value) || ''),
91
+ value: typeof value === 'boolean' ? String(value) : typeof value === 'string' ? value || (customMeta === null || customMeta === void 0 ? void 0 : customMeta.stringValue) || '' : customMeta && isEqual(customMeta.value, value) ? customMeta.stringValue : value == null ? '' : String(value) || '',
77
92
  ...(type === 'checkbox' && {
78
93
  checked: Boolean(value)
79
94
  }),
@@ -91,7 +106,7 @@ function useHtmlFieldBase(options) {
91
106
  setValue,
92
107
  setMeta
93
108
  }
94
- }), [props, tempValue, onChange]);
109
+ }), [props, customMeta, onChange]);
95
110
  }
96
111
  function getValue(e) {
97
112
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"useHtmlField.mjs","names":["FieldPath","useField","React","invert","useFormContext","acceptsNumber","acceptsBigint","useHtmlFieldBase","options","field","type","normalizeOnBlur","props","parsedValue","value","initialParsedValue","initialValue","setParsedValue","setValue","setMeta","meta","schema","tempValue","setTempValue","useState","tryNumber","useMemo","tryBigint","onChange","useCallback","e","getValue","normalized","normalizeValue","onFocus","visited","onBlur","parsed","safeParse","formatted","success","data","undefined","touched","input","name","pathstring","String","checked","Boolean","target","HTMLInputElement","normalizeBlank","safeBigInt","BigInt","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, { ChangeEvent, 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'\nimport { DeepPartial } from './util/DeepPartial'\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> =\n z.input<Field['schema']> extends (\n string | number | bigint | boolean | null | undefined\n ) ?\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\nexport type UseHtmlFieldOptions<\n Field,\n Schema extends z.ZodTypeAny = Field extends FieldPath<infer S> ? S\n : z.ZodTypeAny,\n> = {\n field: Field\n type: z.input<Schema> extends boolean | null | undefined ? '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 parsedValue,\n value,\n initialParsedValue,\n initialValue,\n setParsedValue,\n setValue,\n setMeta,\n ...meta\n } = props\n\n const { schema } = field\n\n // tempValue is used for storing blank text when we've coerced the\n // value to null or undefined, or storing numeric text when we've\n // coerced the value to a number or bigint.\n // This way we can set a value that will parse better in the form\n // state without interfering with the text the user is typing.\n const [tempValue, setTempValue] = React.useState(\n value 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 const value = getValue(e)\n const normalized = normalizeValue(value, {\n schema,\n tryNumber,\n tryBigint,\n })\n if (typeof value === 'string' && typeof normalized !== 'string') {\n setTempValue(value)\n }\n setValue(normalized)\n },\n [getValue, setValue, schema]\n )\n\n const onFocus = React.useCallback(() => {\n setMeta({ visited: true })\n }, [])\n\n const onBlur = React.useCallback(\n (e: React.FocusEvent) => {\n let value = normalizeValue(getValue(e), {\n schema,\n tryNumber,\n tryBigint,\n })\n if (normalizeOnBlur) {\n const parsed = field.schema.safeParse(value)\n const formatted =\n parsed.success ?\n invert(field.schema).safeParse(parsed.data)\n : undefined\n if (formatted?.success) value = formatted.data\n setValue(value)\n }\n setTempValue(undefined)\n setMeta({ visited: true, touched: true })\n },\n [getValue, setValue, schema]\n )\n\n return React.useMemo(\n (): ValidUseHtmlFieldProps<Field> => ({\n input: {\n name: field.pathstring,\n type,\n value:\n typeof value === 'boolean' ? String(value)\n : typeof value === 'string' ? value || tempValue || ''\n : tempValue || (value == null ? '' : String(value) || ''),\n ...(type === 'checkbox' && { checked: Boolean(value) }),\n onChange,\n onFocus,\n onBlur,\n },\n meta: {\n ...meta,\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n setParsedValue,\n setValue,\n setMeta,\n },\n }),\n [props, tempValue, onChange]\n ) as any\n}\n\nfunction getValue(e: ChangeEvent) {\n const { target } = e\n if (target instanceof HTMLInputElement) {\n return target.type === 'checkbox' ? target.checked : target.value\n }\n return (target as any).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(value: string): bigint | undefined {\n try {\n return BigInt(value)\n } catch {\n return undefined\n }\n}\n\nfunction normalizeValue<T extends z.ZodTypeAny>(\n value: string | boolean,\n {\n schema,\n tryNumber,\n tryBigint,\n }: { schema: T; tryNumber: boolean; tryBigint: boolean }\n): DeepPartial<z.input<T>> | undefined {\n if (typeof value === 'boolean') return value as any\n if (typeof value === 'string' && !/\\S/.test(value)) {\n return normalizeBlank(schema)\n }\n if (typeof value === 'string' && !schema.safeParse(value).success) {\n if (tryNumber) {\n const num = Number(value)\n if (!isNaN(num)) return num as any\n }\n if (tryBigint) {\n const bigint = safeBigInt(value)\n if (bigint != null) return bigint as any\n }\n }\n return value as any\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 = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseHtmlField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useHtmlField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseHtmlField<T> to pass a pathstring'\n >,\n Path extends PathstringInSchema<T> = any,\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>\nexport function useHtmlField<T extends z.ZodTypeAny>({\n field,\n ...rest\n}: UseHtmlFieldOptions<FieldPath | BasePath, T>): UseHtmlFieldProps<any> {\n const { root } = useFormContext<T>()\n return useHtmlFieldBase({\n field: field instanceof FieldPath ? field : root.get(field as any),\n ...rest,\n })\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useHtmlField.mjs","names":["z","FieldPath","useField","React","invert","useFormContext","acceptsNumber","acceptsBigint","isEqual","customMetaSchema","object","value","unknown","stringValue","string","useHtmlFieldBase","options","field","type","normalizeOnMount","normalizeOnBlur","props","parsedValue","initialParsedValue","initialValue","setParsedValue","setValue","setMeta","meta","customMeta","useMemo","parsedCustomMeta","safeParse","success","data","undefined","schema","tryNumber","tryBigint","onChange","useCallback","e","getValue","normalized","normalizeValue","onFocus","visited","onBlur","parsed","formatted","touched","input","name","pathstring","String","checked","Boolean","target","HTMLInputElement","normalizeBlank","safeBigInt","BigInt","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, { ChangeEvent, 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'\nimport { DeepPartial } from './util/DeepPartial'\nimport isEqual from 'fast-deep-equal'\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> =\n z.input<Field['schema']> extends (\n string | number | bigint | boolean | null | undefined\n ) ?\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\nexport type UseHtmlFieldOptions<\n Field,\n Schema extends z.ZodTypeAny = Field extends FieldPath<infer S> ? S\n : z.ZodTypeAny,\n> = {\n field: Field\n type: z.input<Schema> extends boolean | null | undefined ? 'checkbox'\n : Exclude<HTMLInputTypeAttribute, 'checkbox'>\n normalizeOnMount?: boolean\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\nconst customMetaSchema = z.object({\n value: z.unknown(),\n stringValue: z.string(),\n})\n\nfunction useHtmlFieldBase<Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n): UseHtmlFieldProps<Field> {\n const { field, type, normalizeOnMount, normalizeOnBlur = true } = options\n const props = useField(field, { normalizeOnMount })\n const {\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n setParsedValue,\n setValue,\n setMeta,\n ...meta\n } = props\n\n // we've coerced the value to null or undefined, or storing numeric\n // text when we've coerced the value to a number or bigint.\n // This way we can set a value that will parse better in the form\n // state without interfering with the text the user is typing.\n const customMeta = React.useMemo(() => {\n const parsedCustomMeta = customMetaSchema.safeParse(meta.customMeta)\n return parsedCustomMeta.success ? parsedCustomMeta.data : undefined\n }, [meta.customMeta])\n\n const { schema } = field\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 const value = getValue(e)\n const normalized = normalizeValue(value, {\n schema,\n tryNumber,\n tryBigint,\n })\n if (typeof value === 'string' && typeof normalized !== 'string') {\n setMeta({ customMeta: { stringValue: value, value: normalized } })\n }\n setValue(normalized)\n },\n [getValue, setValue, 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 (normalizeOnBlur) {\n const value = normalizeValue(getValue(e), {\n schema,\n tryNumber,\n tryBigint,\n })\n const parsed = field.schema.safeParse(value)\n const formatted =\n parsed.success ?\n invert(field.schema).safeParse(parsed.data)\n : undefined\n setValue(formatted?.success ? formatted.data : value)\n }\n setMeta({ visited: true, touched: true, customMeta: undefined })\n },\n [getValue, setValue, schema]\n )\n\n return React.useMemo(\n (): ValidUseHtmlFieldProps<Field> => ({\n input: {\n name: field.pathstring,\n type,\n value:\n typeof value === 'boolean' ? String(value)\n : typeof value === 'string' ? value || customMeta?.stringValue || ''\n : customMeta && isEqual(customMeta.value, value) ?\n customMeta.stringValue\n : value == null ? ''\n : String(value) || '',\n ...(type === 'checkbox' && { checked: Boolean(value) }),\n onChange,\n onFocus,\n onBlur,\n },\n meta: {\n ...meta,\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n setParsedValue,\n setValue,\n setMeta,\n },\n }),\n [props, customMeta, onChange]\n ) as any\n}\n\nfunction getValue(e: ChangeEvent) {\n const { target } = e\n if (target instanceof HTMLInputElement) {\n return target.type === 'checkbox' ? target.checked : target.value\n }\n return (target as any).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(value: string): bigint | undefined {\n try {\n return BigInt(value)\n } catch {\n return undefined\n }\n}\n\nfunction normalizeValue<T extends z.ZodTypeAny>(\n value: string | boolean,\n {\n schema,\n tryNumber,\n tryBigint,\n }: { schema: T; tryNumber: boolean; tryBigint: boolean }\n): DeepPartial<z.input<T>> | undefined {\n if (typeof value === 'boolean') return value as any\n if (typeof value === 'string' && !/\\S/.test(value)) {\n return normalizeBlank(schema)\n }\n if (typeof value === 'string' && !schema.safeParse(value).success) {\n if (tryNumber) {\n const num = Number(value)\n if (!isNaN(num)) return num as any\n }\n if (tryBigint) {\n const bigint = safeBigInt(value)\n if (bigint != null) return bigint as any\n }\n }\n return value as any\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 = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseHtmlField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useHtmlField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseHtmlField<T> to pass a pathstring'\n >,\n Path extends PathstringInSchema<T> = any,\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>\nexport function useHtmlField<T extends z.ZodTypeAny>({\n field,\n ...rest\n}: UseHtmlFieldOptions<FieldPath | BasePath, T>): UseHtmlFieldProps<any> {\n const { root } = useFormContext<T>()\n return useHtmlFieldBase({\n field: field instanceof FieldPath ? field : root.get(field as any),\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.mjs";
4
+ export declare function useInitialize<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'you must pass a schema type'>>(options: Omit<InitializeAction<T>, 'type'>, deps?: DependencyList): void;
5
+ //# sourceMappingURL=useInitialize.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInitialize.d.mts","names":["z","DependencyList","InitializeAction","useInitialize","ZodTypeAny","ZodBranded","ZodNever","options","Omit","T","deps"],"sources":["src/useInitialize.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAAgBC,cAAc,QAAQ,OAAO;AAE7C,SAASC,gBAAgB;AAEzB,wBAAgBC,aAAa,CAC3B,UAAUH,CAAC,CAACI,UAAU,GAAGJ,CAAC,CAACK,UAAU,CACnCL,CAAC,CAACM,QAAQ,EACV,6BAA6B,CAC9B,CAAAH,CAEDI,OAAO,EAAEC,IAAI,CAACN,gBAAgB,CAACO,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1CC,IAA6D,CAAzD,EAAET,cAAuD","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import z from 'zod';
2
2
  import { DependencyList } from 'react';
3
- import { InitializeAction } from './actions/initialize';
3
+ import { InitializeAction } from "./actions/initialize.js";
4
4
  export declare function useInitialize<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'you must pass a schema type'>>(options: Omit<InitializeAction<T>, 'type'>, deps?: DependencyList): void;
5
5
  //# sourceMappingURL=useInitialize.d.ts.map
@@ -1 +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,CAC3B,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CACnC,CAAC,CAAC,QAAQ,EACV,6BAA6B,CAC9B,EAED,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1C,IAAI,GAAE,cAAuD,QAM9D"}
1
+ {"version":3,"file":"useInitialize.d.ts","names":["z","DependencyList","InitializeAction","useInitialize","ZodTypeAny","ZodBranded","ZodNever","options","Omit","T","deps"],"sources":["src/useInitialize.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAAgBC,cAAc,QAAQ,OAAO;AAE7C,SAASC,gBAAgB;AAEzB,wBAAgBC,aAAa,CAC3B,UAAUH,CAAC,CAACI,UAAU,GAAGJ,CAAC,CAACK,UAAU,CACnCL,CAAC,CAACM,QAAQ,EACV,6BAA6B,CAC9B,CAAAH,CAEDI,OAAO,EAAEC,IAAI,CAACN,gBAAgB,CAACO,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1CC,IAA6D,CAAzD,EAAET,cAAuD","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import z from 'zod';
2
+ import { Handlers } from "./actions/addHandlers.mjs";
3
+ import React from 'react';
4
+ export declare function useSubmit<T extends z.ZodTypeAny = z.ZodUnknown>(handlers?: Handlers<T>): (e: React.FormEvent) => void;
5
+ //# sourceMappingURL=useSubmit.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSubmit.d.mts","names":["z","Handlers","React","useSubmit","ZodTypeAny","ZodUnknown","handlers","T","e","FormEvent"],"sources":["src/useSubmit.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAASC,QAAQ;AACjB,OAAOC,KAAK,MAAM,OAAO;AAGzB,wBAAgBC,SAAS,CAAC,UAAUH,CAAC,CAACI,UAAU,GAAGJ,CAAC,CAACK,UAAU,CAAAF,CAC7DG,QAAsB,CAAb,EAAEL,QAAQ,CAACM,CAAC,CAAC,IAAAC,CAAA,EAmBON,KAAK,CAACO,SAAS","ignoreList":[]}
package/useSubmit.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import z from 'zod';
2
- import { Handlers } from './actions/addHandlers';
2
+ import { Handlers } from "./actions/addHandlers.js";
3
3
  import React from 'react';
4
4
  export declare function useSubmit<T extends z.ZodTypeAny = z.ZodUnknown>(handlers?: Handlers<T>): (e: React.FormEvent) => void;
5
5
  //# sourceMappingURL=useSubmit.d.ts.map
@@ -1 +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,GAAG,CAAC,CAAC,UAAU,EAC7D,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAmBO,KAAK,CAAC,SAAS,UAK7C"}
1
+ {"version":3,"file":"useSubmit.d.ts","names":["z","Handlers","React","useSubmit","ZodTypeAny","ZodUnknown","handlers","T","e","FormEvent"],"sources":["src/useSubmit.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAASC,QAAQ;AACjB,OAAOC,KAAK,MAAM,OAAO;AAGzB,wBAAgBC,SAAS,CAAC,UAAUH,CAAC,CAACI,UAAU,GAAGJ,CAAC,CAACK,UAAU,CAAAF,CAC7DG,QAAsB,CAAb,EAAEL,QAAQ,CAACM,CAAC,CAAC,IAAAC,CAAA,EAmBON,KAAK,CAACO,SAAS","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export type DeepPartial<T> = T extends object | any[] ? { [K in keyof T]?: DeepPartial<T[K]> } : T;
2
+ //# sourceMappingURL=DeepPartial.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeepPartial.d.mts","names":["DeepPartial","T","K"],"sources":["../../src/util/DeepPartial.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAM,KAAMA,WAAW,CAAC,CAAC,IACvBC,CAAC,SAAS,MAAM,GAAG,GAAG,EAAE,GAAG,QAAQ,MAAMA,CAAC,IAAID,WAAW,CAACC,CAAC,CAACC,CAAC,CAAC,CAAC,EAAE,GAAGD,CAAC","ignoreList":[]}
@@ -1,4 +1,2 @@
1
- export type DeepPartial<T> = T extends object | any[] ? {
2
- [K in keyof T]?: DeepPartial<T[K]>;
3
- } : T;
1
+ export type DeepPartial<T> = T extends object | any[] ? { [K in keyof T]?: DeepPartial<T[K]> } : T;
4
2
  //# sourceMappingURL=DeepPartial.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeepPartial.d.ts","sourceRoot":"","sources":["../../src/util/DeepPartial.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,CAAC,CAAC,IACvB,CAAC,SAAS,MAAM,GAAG,GAAG,EAAE,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"DeepPartial.d.ts","names":["DeepPartial","T","K"],"sources":["../../src/util/DeepPartial.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAM,KAAMA,WAAW,CAAC,CAAC,IACvBC,CAAC,SAAS,MAAM,GAAG,GAAG,EAAE,GAAG,QAAQ,MAAMA,CAAC,IAAID,WAAW,CAACC,CAAC,CAACC,CAAC,CAAC,CAAC,EAAE,GAAGD,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import z from 'zod';
2
+ import { PathInType, PathstringInType } from "./PathInType.mjs";
3
+ export type PathInSchema<T extends z.ZodTypeAny> = PathInType<z.input<T>>;
4
+ export type PathstringInSchema<T extends z.ZodTypeAny> = PathstringInType<z.input<T>>;
5
+ //# sourceMappingURL=PathInSchema.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PathInSchema.d.mts","names":["z","PathInType","PathstringInType","PathInSchema","ZodTypeAny","input","T","PathstringInSchema"],"sources":["../../src/util/PathInSchema.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAASC,UAAU,EAAEC,gBAAgB;AAErC,OAAM,KAAMC,YAAY,CAAC,UAAUH,CAAC,CAACI,UAAU,IAAIH,UAAU,CAACD,CAAC,CAACK,KAAK,CAACC,CAAC,CAAC,CAAC;AACzE,OAAM,KAAMC,kBAAkB,CAAC,UAAUP,CAAC,CAACI,UAAU,IAAIF,gBAAgB,CACvEF,CAAC,CAACK,KAAK,CAACC,CAAC,CAAC,CACX","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import z from 'zod';
2
- import { PathInType, PathstringInType } from './PathInType';
2
+ import { PathInType, PathstringInType } from "./PathInType.js";
3
3
  export type PathInSchema<T extends z.ZodTypeAny> = PathInType<z.input<T>>;
4
4
  export type PathstringInSchema<T extends z.ZodTypeAny> = PathstringInType<z.input<T>>;
5
5
  //# sourceMappingURL=PathInSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PathInSchema.d.ts","sourceRoot":"","sources":["../../src/util/PathInSchema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE3D,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACzE,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,IAAI,gBAAgB,CACvE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACX,CAAA"}
1
+ {"version":3,"file":"PathInSchema.d.ts","names":["z","PathInType","PathstringInType","PathInSchema","ZodTypeAny","input","T","PathstringInSchema"],"sources":["../../src/util/PathInSchema.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAASC,UAAU,EAAEC,gBAAgB;AAErC,OAAM,KAAMC,YAAY,CAAC,UAAUH,CAAC,CAACI,UAAU,IAAIH,UAAU,CAACD,CAAC,CAACK,KAAK,CAACC,CAAC,CAAC,CAAC;AACzE,OAAM,KAAMC,kBAAkB,CAAC,UAAUP,CAAC,CAACI,UAAU,IAAIF,gBAAgB,CACvEF,CAAC,CAACK,KAAK,CAACC,CAAC,CAAC,CACX","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import { BasePath } from "../FieldPath.mjs";
2
+ import { pathstring } from "./pathstring.mjs";
3
+ export type PathInType<T> = [] | SubPathInType<T>;
4
+ type SubPathInType<T> = 0 extends 1 & T ? BasePath : T extends (string | number | boolean | bigint | symbol | null | undefined | void | ((...args: any[]) => any)) ? [] : T extends readonly any[] ? { [K in keyof T & number]-?: [K, ...PathInType<T[K]>] }[keyof T & number] : { [K in keyof T]-?: K extends symbol ? never : [K, ...PathInType<T[K]>] }[keyof T];
5
+ export type PathstringInType<T> = pathstring<PathInType<T>>;
6
+ export {};
7
+ //# sourceMappingURL=PathInType.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PathInType.d.mts","names":["BasePath","pathstring","PathInType","SubPathInType","T","args","K","PathstringInType"],"sources":["../../src/util/PathInType.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAQ;AACjB,SAASC,UAAU;AAEnB,OAAM,KAAMC,UAAU,CAAC,CAAC,IAAI,EAAE,GAAGC,aAAa,CAACC,CAAC,CAAC;AAEjD,KAAKD,aAAa,CAAC,CAAC,IAClB,CAAC,SAAS,CAAC,GAAGC,CAAC,GAAGJ,QAAQ,GACxBI,CAAC,SAAS,CACR,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,IAAI,GACJ,SAAS,GACT,IAAI,GACJ,CAAC,CAAC,GAAGC,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAC5B,GACC,EAAE,GACFD,CAAC,SAAS,SAAS,GAAG,EAAE,GACxB,QAAQ,MAAMA,CAAC,GAAG,MAAM,KAAK,CAACE,CAAC,EAAE,GAAGJ,UAAU,CAACE,CAAC,CAACE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAMF,CAAC,GAAG,MAAM,CAAC,GACzE,QACQ,MAAMA,CAAC,KAAKE,CAAC,SAAS,MAAM,GAAG,KAAK,GAAG,CAACA,CAAC,EAAE,GAAGJ,UAAU,CAACE,CAAC,CAACE,CAAC,CAAC,CAAC,CAAC,EACtE,CAAC,MAAMF,CAAC,CAAC;AAEd,OAAM,KAAMG,gBAAgB,CAAC,CAAC,IAAIN,UAAU,CAACC,UAAU,CAACE,CAAC,CAAC,CAAC","ignoreList":[]}