@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
@@ -10,6 +10,7 @@ import { PathInSchema, PathstringInSchema } from './util/PathInSchema'
10
10
  import { parsePathstring } from './util/parsePathstring'
11
11
  import { SchemaAt } from './util/SchemaAt'
12
12
  import { DeepPartial } from './util/DeepPartial'
13
+ import isEqual from 'fast-deep-equal'
13
14
 
14
15
  export type HtmlFieldInputProps = {
15
16
  name: string
@@ -46,6 +47,7 @@ export type UseHtmlFieldOptions<
46
47
  field: Field
47
48
  type: z.input<Schema> extends boolean | null | undefined ? 'checkbox'
48
49
  : Exclude<HTMLInputTypeAttribute, 'checkbox'>
50
+ normalizeOnMount?: boolean
49
51
  normalizeOnBlur?: boolean
50
52
  }
51
53
 
@@ -61,11 +63,16 @@ export interface TypedUseHtmlField<T extends z.ZodTypeAny> {
61
63
  ): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>
62
64
  }
63
65
 
66
+ const customMetaSchema = z.object({
67
+ value: z.unknown(),
68
+ stringValue: z.string(),
69
+ })
70
+
64
71
  function useHtmlFieldBase<Field extends FieldPath>(
65
72
  options: UseHtmlFieldOptions<Field, Field['schema']>
66
73
  ): UseHtmlFieldProps<Field> {
67
- const { field, type, normalizeOnBlur = true } = options
68
- const props = useField(field)
74
+ const { field, type, normalizeOnMount, normalizeOnBlur = true } = options
75
+ const props = useField(field, { normalizeOnMount })
69
76
  const {
70
77
  parsedValue,
71
78
  value,
@@ -77,16 +84,16 @@ function useHtmlFieldBase<Field extends FieldPath>(
77
84
  ...meta
78
85
  } = props
79
86
 
80
- const { schema } = field
81
-
82
- // tempValue is used for storing blank text when we've coerced the
83
- // value to null or undefined, or storing numeric text when we've
84
- // coerced the value to a number or bigint.
87
+ // we've coerced the value to null or undefined, or storing numeric
88
+ // text when we've coerced the value to a number or bigint.
85
89
  // This way we can set a value that will parse better in the form
86
90
  // state without interfering with the text the user is typing.
87
- const [tempValue, setTempValue] = React.useState(
88
- value as string | null | undefined
89
- )
91
+ const customMeta = React.useMemo(() => {
92
+ const parsedCustomMeta = customMetaSchema.safeParse(meta.customMeta)
93
+ return parsedCustomMeta.success ? parsedCustomMeta.data : undefined
94
+ }, [meta.customMeta])
95
+
96
+ const { schema } = field
90
97
 
91
98
  const tryNumber = React.useMemo(() => acceptsNumber(schema), [schema])
92
99
  const tryBigint = React.useMemo(() => acceptsBigint(schema), [schema])
@@ -100,7 +107,7 @@ function useHtmlFieldBase<Field extends FieldPath>(
100
107
  tryBigint,
101
108
  })
102
109
  if (typeof value === 'string' && typeof normalized !== 'string') {
103
- setTempValue(value)
110
+ setMeta({ customMeta: { stringValue: value, value: normalized } })
104
111
  }
105
112
  setValue(normalized)
106
113
  },
@@ -113,22 +120,20 @@ function useHtmlFieldBase<Field extends FieldPath>(
113
120
 
114
121
  const onBlur = React.useCallback(
115
122
  (e: React.FocusEvent) => {
116
- let value = normalizeValue(getValue(e), {
117
- schema,
118
- tryNumber,
119
- tryBigint,
120
- })
121
123
  if (normalizeOnBlur) {
124
+ const value = normalizeValue(getValue(e), {
125
+ schema,
126
+ tryNumber,
127
+ tryBigint,
128
+ })
122
129
  const parsed = field.schema.safeParse(value)
123
130
  const formatted =
124
131
  parsed.success ?
125
132
  invert(field.schema).safeParse(parsed.data)
126
133
  : undefined
127
- if (formatted?.success) value = formatted.data
128
- setValue(value)
134
+ setValue(formatted?.success ? formatted.data : value)
129
135
  }
130
- setTempValue(undefined)
131
- setMeta({ visited: true, touched: true })
136
+ setMeta({ visited: true, touched: true, customMeta: undefined })
132
137
  },
133
138
  [getValue, setValue, schema]
134
139
  )
@@ -140,8 +145,11 @@ function useHtmlFieldBase<Field extends FieldPath>(
140
145
  type,
141
146
  value:
142
147
  typeof value === 'boolean' ? String(value)
143
- : typeof value === 'string' ? value || tempValue || ''
144
- : tempValue || (value == null ? '' : String(value) || ''),
148
+ : typeof value === 'string' ? value || customMeta?.stringValue || ''
149
+ : customMeta && isEqual(customMeta.value, value) ?
150
+ customMeta.stringValue
151
+ : value == null ? ''
152
+ : String(value) || '',
145
153
  ...(type === 'checkbox' && { checked: Boolean(value) }),
146
154
  onChange,
147
155
  onFocus,
@@ -158,7 +166,7 @@ function useHtmlFieldBase<Field extends FieldPath>(
158
166
  setMeta,
159
167
  },
160
168
  }),
161
- [props, tempValue, onChange]
169
+ [props, customMeta, onChange]
162
170
  ) as any
163
171
  }
164
172
 
@@ -0,0 +1,34 @@
1
+ import z from 'zod';
2
+ import { FieldPath, FieldPathForValue } from "./FieldPath.mjs";
3
+ import { PathInSchema, PathstringInSchema } from "./util/PathInSchema.mjs";
4
+ import { parsePathstring } from "./util/parsePathstring.mjs";
5
+ import { SchemaAt } from "./util/SchemaAt.mjs";
6
+ import { bindActionsToField } from "./util/bindActionsToField.mjs";
7
+ import { arrayActions } from "./actions/arrayActions.mjs";
8
+ import { setParsedValue } from "./actions/setParsedValue.mjs";
9
+ import { setValue } from "./actions/setValue.mjs";
10
+ import { setMeta } from "./actions/setMeta.mjs";
11
+ import { FieldMeta } from "./FormState.mjs";
12
+ export type UseArrayFieldProps<Field extends FieldPath> = NonNullable<z.input<Field['schema']>> extends any[] ? FieldMeta & ReturnType<typeof bindActionsToField<Field, arrayActions<Field> & {
13
+ setParsedValue: typeof setParsedValue<Field>;
14
+ setValue: typeof setValue<Field>;
15
+ setMeta: typeof setMeta<Field>;
16
+ }>> & {
17
+ elements: FieldPath<SchemaAt<Field['schema'], [number]>>[];
18
+ error?: string;
19
+ dirty: boolean;
20
+ pristine: boolean;
21
+ valid: boolean;
22
+ invalid: boolean;
23
+ } : {
24
+ ERROR: 'not an array field';
25
+ };
26
+ export interface TypedUseArrayField<T extends z.ZodTypeAny> {
27
+ <Field extends FieldPathForValue<any[] | null | undefined>>(field: Field): UseArrayFieldProps<Field>;
28
+ <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>;
29
+ <Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
30
+ }
31
+ export declare function useArrayField<Field extends FieldPath>(field: Field): UseArrayFieldProps<Field>;
32
+ export declare function useArrayField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArrayField<T> to pass a path array'>, Path extends PathInSchema<T> = any>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>;
33
+ export declare function useArrayField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArrayField<T> to pass a pathstring'>, Pathstring extends PathstringInSchema<T> = any>(field: Pathstring): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
34
+ //# sourceMappingURL=useArrayField.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useArrayField.d.mts","names":["z","FieldPath","FieldPathForValue","PathInSchema","PathstringInSchema","parsePathstring","SchemaAt","bindActionsToField","arrayActions","setParsedValue","setValue","setMeta","FieldMeta","UseArrayFieldProps","NonNullable","input","Field","ReturnType","elements","error","dirty","pristine","valid","invalid","ERROR","TypedUseArrayField","ZodTypeAny","field","T","path","Path","Pathstring","useArrayField","ZodBranded","ZodNever"],"sources":["src/useArrayField.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAAmBC,SAAS,EAAEC,iBAAiB;AAG/C,SAASC,YAAY,EAAEC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,QAAQ;AACjB,SAASC,kBAAkB;AAC3B,SAASC,YAAY;AASrB,SAASC,cAAc;AACvB,SAASC,QAAQ;AACjB,SAASC,OAAO;AAChB,SAASC,SAAS;AAIlB,OAAM,KAAMC,kBAAkB,CAAC,cAAcZ,SAAS,IACpDa,WAAW,CAACd,CAAC,CAACe,KAAK,CAACC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,GACjDJ,SAAS,GACPK,UAAU,CACR,OAAOV,kBAAkB,CACvBS,KAAK,EACLR,YAAY,CAACQ,KAAK,CAAC,GAAG;EACpBP,cAAc,EAAE,OAAOA,cAAc,CAACO,KAAK,CAAC;EAC5CN,QAAQ,EAAE,OAAOA,QAAQ,CAACM,KAAK,CAAC;EAChCL,OAAO,EAAE,OAAOA,OAAO,CAACK,KAAK,CAAC;CAC/B,CACF,CACF,GAAG;EACFE,QAAQ,EAAEjB,SAAS,CAACK,QAAQ,CAACU,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;EAC1DG,KAAK,CAAC,EAAE,MAAM;EACdC,KAAK,EAAE,OAAO;EACdC,QAAQ,EAAE,OAAO;EACjBC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE,OAAO;CACjB,GACH;EAAEC,KAAK,EAAE,oBAAoB;CAAE;AAEnC,OAAM,UAAWC,kBAAkB,CAAC,UAAUzB,CAAC,CAAC0B,UAAU;EACxD,CAAC,cAAcxB,iBAAiB,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,EACxDyB,KAAK,EAAEX,KAAK,GACXH,kBAAkB,CAACG,KAAK,CAAC;EAC5B,CAAC,aAAab,YAAY,CAACyB,CAAC,CAAC,EAC3BC,IAAI,EAAEC,IAAI,GACTjB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEE,IAAI,CAAC,CAAC,CAAC;EACnD,CAAC,mBAAmB1B,kBAAkB,CAACwB,CAAC,CAAC,EACvCC,IAAI,EAAEE,UAAU,GACflB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEvB,eAAe,CAAC0B,UAAU,CAAC,CAAC,CAAC,CAAC;;AAwG5E,wBAAgBC,aAAa,CAAC,cAAc/B,SAAS,CAAA+B,CACnDL,KAAK,EAAEX,KAAK,GACXH,kBAAkB,CAACG,KAAK,CAAC;AAC5B,wBAAgBgB,aAAa,CAC3B,UAAUhC,CAAC,CAAC0B,UAAU,GAAG1B,CAAC,CAACiC,UAAU,CACnCjC,CAAC,CAACkC,QAAQ,EACV,oDAAoD,CACrD,EACD,aAAa/B,YAAY,CAACyB,CAAC,CAAC,GAAG,GAAG,CAAAI,CAClCL,KAAK,EAAEG,IAAI,GAAGjB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEE,IAAI,CAAC,CAAC,CAAC;AAChE,wBAAgBE,aAAa,CAC3B,UAAUhC,CAAC,CAAC0B,UAAU,GAAG1B,CAAC,CAACiC,UAAU,CACnCjC,CAAC,CAACkC,QAAQ,EACV,oDAAoD,CACrD,EACD,mBAAmB9B,kBAAkB,CAACwB,CAAC,CAAC,GAAG,GAAG,CAAAI,CAE9CL,KAAK,EAAEI,UAAU,GAChBlB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEvB,eAAe,CAAC0B,UAAU,CAAC,CAAC,CAAC,CAAC","ignoreList":[]}
@@ -1,32 +1,32 @@
1
1
  import z from 'zod';
2
- import { FieldPath, FieldPathForValue } from './FieldPath';
3
- import { PathInSchema, PathstringInSchema } from './util/PathInSchema';
4
- import { parsePathstring } from './util/parsePathstring';
5
- import { SchemaAt } from './util/SchemaAt';
6
- import { bindActionsToField } from './util/bindActionsToField';
7
- import { arrayActions } from './actions/arrayActions';
8
- import { setParsedValue } from './actions/setParsedValue';
9
- import { setValue } from './actions/setValue';
10
- import { setMeta } from './actions/setMeta';
11
- import { FieldMeta } from './FormState';
2
+ import { FieldPath, FieldPathForValue } from "./FieldPath.js";
3
+ import { PathInSchema, PathstringInSchema } from "./util/PathInSchema.js";
4
+ import { parsePathstring } from "./util/parsePathstring.js";
5
+ import { SchemaAt } from "./util/SchemaAt.js";
6
+ import { bindActionsToField } from "./util/bindActionsToField.js";
7
+ import { arrayActions } from "./actions/arrayActions.js";
8
+ import { setParsedValue } from "./actions/setParsedValue.js";
9
+ import { setValue } from "./actions/setValue.js";
10
+ import { setMeta } from "./actions/setMeta.js";
11
+ import { FieldMeta } from "./FormState.js";
12
12
  export type UseArrayFieldProps<Field extends FieldPath> = NonNullable<z.input<Field['schema']>> extends any[] ? FieldMeta & ReturnType<typeof bindActionsToField<Field, arrayActions<Field> & {
13
- setParsedValue: typeof setParsedValue<Field>;
14
- setValue: typeof setValue<Field>;
15
- setMeta: typeof setMeta<Field>;
13
+ setParsedValue: typeof setParsedValue<Field>;
14
+ setValue: typeof setValue<Field>;
15
+ setMeta: typeof setMeta<Field>;
16
16
  }>> & {
17
- elements: FieldPath<SchemaAt<Field['schema'], [number]>>[];
18
- error?: string;
19
- dirty: boolean;
20
- pristine: boolean;
21
- valid: boolean;
22
- invalid: boolean;
17
+ elements: FieldPath<SchemaAt<Field['schema'], [number]>>[];
18
+ error?: string;
19
+ dirty: boolean;
20
+ pristine: boolean;
21
+ valid: boolean;
22
+ invalid: boolean;
23
23
  } : {
24
- ERROR: 'not an array field';
24
+ ERROR: 'not an array field';
25
25
  };
26
26
  export interface TypedUseArrayField<T extends z.ZodTypeAny> {
27
- <Field extends FieldPathForValue<any[] | null | undefined>>(field: Field): UseArrayFieldProps<Field>;
28
- <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>;
29
- <Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
27
+ <Field extends FieldPathForValue<any[] | null | undefined>>(field: Field): UseArrayFieldProps<Field>;
28
+ <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>;
29
+ <Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
30
30
  }
31
31
  export declare function useArrayField<Field extends FieldPath>(field: Field): UseArrayFieldProps<Field>;
32
32
  export declare function useArrayField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArrayField<T> to pass a path array'>, Path extends PathInSchema<T> = any>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"useArrayField.d.ts","sourceRoot":"","sources":["src/useArrayField.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useArrayField.d.ts","names":["z","FieldPath","FieldPathForValue","PathInSchema","PathstringInSchema","parsePathstring","SchemaAt","bindActionsToField","arrayActions","setParsedValue","setValue","setMeta","FieldMeta","UseArrayFieldProps","NonNullable","input","Field","ReturnType","elements","error","dirty","pristine","valid","invalid","ERROR","TypedUseArrayField","ZodTypeAny","field","T","path","Path","Pathstring","useArrayField","ZodBranded","ZodNever"],"sources":["src/useArrayField.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAAmBC,SAAS,EAAEC,iBAAiB;AAG/C,SAASC,YAAY,EAAEC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,QAAQ;AACjB,SAASC,kBAAkB;AAC3B,SAASC,YAAY;AASrB,SAASC,cAAc;AACvB,SAASC,QAAQ;AACjB,SAASC,OAAO;AAChB,SAASC,SAAS;AAIlB,OAAM,KAAMC,kBAAkB,CAAC,cAAcZ,SAAS,IACpDa,WAAW,CAACd,CAAC,CAACe,KAAK,CAACC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,GACjDJ,SAAS,GACPK,UAAU,CACR,OAAOV,kBAAkB,CACvBS,KAAK,EACLR,YAAY,CAACQ,KAAK,CAAC,GAAG;EACpBP,cAAc,EAAE,OAAOA,cAAc,CAACO,KAAK,CAAC;EAC5CN,QAAQ,EAAE,OAAOA,QAAQ,CAACM,KAAK,CAAC;EAChCL,OAAO,EAAE,OAAOA,OAAO,CAACK,KAAK,CAAC;CAC/B,CACF,CACF,GAAG;EACFE,QAAQ,EAAEjB,SAAS,CAACK,QAAQ,CAACU,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;EAC1DG,KAAK,CAAC,EAAE,MAAM;EACdC,KAAK,EAAE,OAAO;EACdC,QAAQ,EAAE,OAAO;EACjBC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE,OAAO;CACjB,GACH;EAAEC,KAAK,EAAE,oBAAoB;CAAE;AAEnC,OAAM,UAAWC,kBAAkB,CAAC,UAAUzB,CAAC,CAAC0B,UAAU;EACxD,CAAC,cAAcxB,iBAAiB,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,EACxDyB,KAAK,EAAEX,KAAK,GACXH,kBAAkB,CAACG,KAAK,CAAC;EAC5B,CAAC,aAAab,YAAY,CAACyB,CAAC,CAAC,EAC3BC,IAAI,EAAEC,IAAI,GACTjB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEE,IAAI,CAAC,CAAC,CAAC;EACnD,CAAC,mBAAmB1B,kBAAkB,CAACwB,CAAC,CAAC,EACvCC,IAAI,EAAEE,UAAU,GACflB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEvB,eAAe,CAAC0B,UAAU,CAAC,CAAC,CAAC,CAAC;;AAwG5E,wBAAgBC,aAAa,CAAC,cAAc/B,SAAS,CAAA+B,CACnDL,KAAK,EAAEX,KAAK,GACXH,kBAAkB,CAACG,KAAK,CAAC;AAC5B,wBAAgBgB,aAAa,CAC3B,UAAUhC,CAAC,CAAC0B,UAAU,GAAG1B,CAAC,CAACiC,UAAU,CACnCjC,CAAC,CAACkC,QAAQ,EACV,oDAAoD,CACrD,EACD,aAAa/B,YAAY,CAACyB,CAAC,CAAC,GAAG,GAAG,CAAAI,CAClCL,KAAK,EAAEG,IAAI,GAAGjB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEE,IAAI,CAAC,CAAC,CAAC;AAChE,wBAAgBE,aAAa,CAC3B,UAAUhC,CAAC,CAAC0B,UAAU,GAAG1B,CAAC,CAACiC,UAAU,CACnCjC,CAAC,CAACkC,QAAQ,EACV,oDAAoD,CACrD,EACD,mBAAmB9B,kBAAkB,CAACwB,CAAC,CAAC,GAAG,GAAG,CAAAI,CAE9CL,KAAK,EAAEI,UAAU,GAChBlB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEvB,eAAe,CAAC0B,UAAU,CAAC,CAAC,CAAC,CAAC","ignoreList":[]}
package/useArrayField.js CHANGED
@@ -16,6 +16,7 @@ var _get = require("./util/get.js");
16
16
  var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
17
17
  var _useFormSelector2 = require("./useFormSelector.js");
18
18
  var _reactRedux = require("react-redux");
19
+ var _maybeParse = require("./util/maybeParse.js");
19
20
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
21
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21
22
  function useArrayFieldBase(field) {
@@ -29,18 +30,30 @@ function useArrayFieldBase(field) {
29
30
  var useFormSelector = _useFormSelector2.useFormSelector;
30
31
  var valuesSelector = _react["default"].useMemo(function () {
31
32
  return (0, _reselect.createSelector)([selectFormValues], (0, _reselect.createSelector)([(0, _reselect.createStructuredSelector)({
32
- value: function value(_ref) {
33
- var values = _ref.values;
33
+ parsedValue: function parsedValue(_ref) {
34
+ var parsedValues = _ref.parsedValues;
35
+ return (0, _get.get)(parsedValues, field.path);
36
+ },
37
+ value: function value(_ref2) {
38
+ var values = _ref2.values;
34
39
  return (0, _get.get)(values, field.path);
35
40
  },
36
- initialValue: function initialValue(_ref2) {
37
- var initialValues = _ref2.initialValues;
41
+ initialParsedValue: function initialParsedValue(_ref3) {
42
+ var initialParsedValues = _ref3.initialParsedValues;
43
+ return (0, _get.get)(initialParsedValues, field.path);
44
+ },
45
+ initialValue: function initialValue(_ref4) {
46
+ var initialValues = _ref4.initialValues;
38
47
  return (0, _get.get)(initialValues, field.path);
39
48
  }
40
- })], function (_ref3) {
41
- var value = _ref3.value,
42
- initialValue = _ref3.initialValue;
43
- var dirty = !(0, _fastDeepEqual["default"])(value, initialValue);
49
+ })], function (_ref5) {
50
+ var value = _ref5.value,
51
+ _ref5$parsedValue = _ref5.parsedValue,
52
+ parsedValue = _ref5$parsedValue === void 0 ? (0, _maybeParse.maybeParse)(field.schema, value) : _ref5$parsedValue,
53
+ initialValue = _ref5.initialValue,
54
+ _ref5$initialParsedVa = _ref5.initialParsedValue,
55
+ initialParsedValue = _ref5$initialParsedVa === void 0 ? (0, _maybeParse.maybeParse)(field.schema, initialValue) : _ref5$initialParsedVa;
56
+ var dirty = !(0, _fastDeepEqual["default"])(parsedValue, initialParsedValue);
44
57
  var pristine = !dirty;
45
58
  return {
46
59
  dirty: dirty,
@@ -80,6 +93,7 @@ function useArrayFieldBase(field) {
80
93
  return _objectSpread(_objectSpread({}, boundActions), {}, {
81
94
  visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
82
95
  touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
96
+ customMeta: meta === null || meta === void 0 ? void 0 : meta.customMeta,
83
97
  error: error,
84
98
  elements: elements,
85
99
  dirty: dirty,
@@ -1 +1 @@
1
- {"version":3,"file":"useArrayField.js","names":["_FieldPath","require","_react","_interopRequireDefault","_useFormContext3","_bindActionsToField","_reselect","_get","_fastDeepEqual","_useFormSelector2","_reactRedux","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useArrayFieldBase","field","_useFormContext","useFormContext","arrayActions","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","value","_ref","values","get","path","initialValue","_ref2","initialValues","_ref3","dirty","isEqual","pristine","Array","isArray","pathstring","_useFormSelector","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","elements","_toConsumableArray2","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","_useFormContext2","root","FieldPath"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions, ArrayFieldPath } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseArrayFieldProps<Field extends FieldPath> =\n NonNullable<z.input<Field['schema']>> extends any[] ?\n FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n arrayActions<Field> & {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends ArrayFieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as DeepPartial<z.input<T>> | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<T>>\n | undefined,\n }),\n ],\n ({ value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(value) ? value.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setParsedValue, setValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () =>\n [...new Array(length).keys()].map((index) =>\n field.subfield(\n // @ts-expect-error doesn't work on this type parameter\n index\n )\n ),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useArrayField.js","names":["_FieldPath","require","_react","_interopRequireDefault","_useFormContext3","_bindActionsToField","_reselect","_get","_fastDeepEqual","_useFormSelector2","_reactRedux","_maybeParse","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useArrayFieldBase","field","_useFormContext","useFormContext","arrayActions","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","parsedValue","_ref","parsedValues","get","path","value","_ref2","values","initialParsedValue","_ref3","initialParsedValues","initialValue","_ref4","initialValues","_ref5","_ref5$parsedValue","maybeParse","schema","_ref5$initialParsedVa","dirty","isEqual","pristine","Array","isArray","pathstring","_useFormSelector","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","elements","_toConsumableArray2","map","index","subfield","visited","touched","customMeta","valid","invalid","Boolean","useArrayField","_useFormContext2","root","FieldPath"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions, ArrayFieldPath } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\nimport { DeepPartial } from './util/DeepPartial'\nimport { maybeParse } from './util/maybeParse'\n\nexport type UseArrayFieldProps<Field extends FieldPath> =\n NonNullable<z.input<Field['schema']>> extends any[] ?\n FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n arrayActions<Field> & {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends ArrayFieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n parsedValue: ({ parsedValues }) =>\n get(parsedValues, field.path) as z.output<T> | undefined,\n value: ({ values }) =>\n get(values, field.path) as DeepPartial<z.input<T>> | undefined,\n initialParsedValue: ({ initialParsedValues }) =>\n get(initialParsedValues, field.path) as z.output<T> | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<T>>\n | undefined,\n }),\n ],\n ({\n value,\n parsedValue = maybeParse(field.schema, value),\n initialValue,\n initialParsedValue = maybeParse(field.schema, initialValue),\n }) => {\n const dirty = !isEqual(parsedValue, initialParsedValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(value) ? value.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setParsedValue, setValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () =>\n [...new Array(length).keys()].map((index) =>\n field.subfield(\n // @ts-expect-error doesn't work on this type parameter\n index\n )\n ),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n customMeta: meta?.customMeta,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/useArrayField.mjs CHANGED
@@ -7,6 +7,7 @@ import { get } from "./util/get.mjs";
7
7
  import isEqual from 'fast-deep-equal';
8
8
  import { useFormSelector as untypedUseFormSelector } from "./useFormSelector.mjs";
9
9
  import { shallowEqual } from 'react-redux';
10
+ import { maybeParse } from "./util/maybeParse.mjs";
10
11
  function useArrayFieldBase(field) {
11
12
  const {
12
13
  arrayActions,
@@ -18,17 +19,25 @@ function useArrayFieldBase(field) {
18
19
  } = useFormContext();
19
20
  const useFormSelector = untypedUseFormSelector;
20
21
  const valuesSelector = React.useMemo(() => createSelector([selectFormValues], createSelector([createStructuredSelector({
22
+ parsedValue: ({
23
+ parsedValues
24
+ }) => get(parsedValues, field.path),
21
25
  value: ({
22
26
  values
23
27
  }) => get(values, field.path),
28
+ initialParsedValue: ({
29
+ initialParsedValues
30
+ }) => get(initialParsedValues, field.path),
24
31
  initialValue: ({
25
32
  initialValues
26
33
  }) => get(initialValues, field.path)
27
34
  })], ({
28
35
  value,
29
- initialValue
36
+ parsedValue = maybeParse(field.schema, value),
37
+ initialValue,
38
+ initialParsedValue = maybeParse(field.schema, initialValue)
30
39
  }) => {
31
- const dirty = !isEqual(value, initialValue);
40
+ const dirty = !isEqual(parsedValue, initialParsedValue);
32
41
  const pristine = !dirty;
33
42
  return {
34
43
  dirty,
@@ -57,6 +66,7 @@ function useArrayFieldBase(field) {
57
66
  ...boundActions,
58
67
  visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
59
68
  touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
69
+ customMeta: meta === null || meta === void 0 ? void 0 : meta.customMeta,
60
70
  error,
61
71
  elements,
62
72
  dirty,
@@ -1 +1 @@
1
- {"version":3,"file":"useArrayField.mjs","names":["FieldPath","React","useFormContext","bindActionsToField","createSelector","createStructuredSelector","get","isEqual","useFormSelector","untypedUseFormSelector","shallowEqual","useArrayFieldBase","field","arrayActions","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","value","values","path","initialValue","initialValues","dirty","pristine","length","Array","isArray","pathstring","error","state","meta","fieldMeta","submitFailed","boundActions","elements","keys","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","root"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions, ArrayFieldPath } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseArrayFieldProps<Field extends FieldPath> =\n NonNullable<z.input<Field['schema']>> extends any[] ?\n FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n arrayActions<Field> & {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends ArrayFieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as DeepPartial<z.input<T>> | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<T>>\n | undefined,\n }),\n ],\n ({ value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(value) ? value.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setParsedValue, setValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () =>\n [...new Array(length).keys()].map((index) =>\n field.subfield(\n // @ts-expect-error doesn't work on this type parameter\n index\n )\n ),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useArrayField.mjs","names":["FieldPath","React","useFormContext","bindActionsToField","createSelector","createStructuredSelector","get","isEqual","useFormSelector","untypedUseFormSelector","shallowEqual","maybeParse","useArrayFieldBase","field","arrayActions","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","parsedValue","parsedValues","path","value","values","initialParsedValue","initialParsedValues","initialValue","initialValues","schema","dirty","pristine","length","Array","isArray","pathstring","error","state","meta","fieldMeta","submitFailed","boundActions","elements","keys","map","index","subfield","visited","touched","customMeta","valid","invalid","Boolean","useArrayField","root"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions, ArrayFieldPath } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\nimport { DeepPartial } from './util/DeepPartial'\nimport { maybeParse } from './util/maybeParse'\n\nexport type UseArrayFieldProps<Field extends FieldPath> =\n NonNullable<z.input<Field['schema']>> extends any[] ?\n FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n arrayActions<Field> & {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends ArrayFieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n parsedValue: ({ parsedValues }) =>\n get(parsedValues, field.path) as z.output<T> | undefined,\n value: ({ values }) =>\n get(values, field.path) as DeepPartial<z.input<T>> | undefined,\n initialParsedValue: ({ initialParsedValues }) =>\n get(initialParsedValues, field.path) as z.output<T> | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<T>>\n | undefined,\n }),\n ],\n ({\n value,\n parsedValue = maybeParse(field.schema, value),\n initialValue,\n initialParsedValue = maybeParse(field.schema, initialValue),\n }) => {\n const dirty = !isEqual(parsedValue, initialParsedValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(value) ? value.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setParsedValue, setValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () =>\n [...new Array(length).keys()].map((index) =>\n field.subfield(\n // @ts-expect-error doesn't work on this type parameter\n index\n )\n ),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n customMeta: meta?.customMeta,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"AACA,SAAmBA,SAAS;AAC5B,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc;AAIvB,SAASC,kBAAkB;AAE3B,SAASC,cAAc,EAAEC,wBAAwB,QAAQ,UAAU;AACnE,SAASC,GAAG;AACZ,OAAOC,OAAO,MAAM,iBAAiB;AACrC,SAEEC,eAAe,IAAIC,sBAAsB;AAE3C,SAASC,YAAY,QAAQ,aAAa;AAM1C,SAASC,UAAU;AAoCnB,SAASC,iBAAiBA,CACxBC,KAAY,EACe;EAG3B,MAAM;IACJC,YAAY;IACZC,cAAc;IACdC,QAAQ;IACRC,OAAO;IACPC,gBAAgB;IAChBC;EACF,CAAC,GAAGjB,cAAc,CAAI,CAAC;EAEvB,MAAMM,eAAe,GAAGC,sBAAiD;EAEzE,MAAMW,cAAc,GAAGnB,KAAK,CAACoB,OAAO,CAClC,MACEjB,cAAc,CACZ,CAACc,gBAAgB,CAAC,EAClBd,cAAc,CACZ,CACEC,wBAAwB,CAAC;IACvBiB,WAAW,EAAEA,CAAC;MAAEC;IAAa,CAAC,KAC5BjB,GAAG,CAACiB,YAAY,EAAEV,KAAK,CAACW,IAAI,CAA4B;IAC1DC,KAAK,EAAEA,CAAC;MAAEC;IAAO,CAAC,KAChBpB,GAAG,CAACoB,MAAM,EAAEb,KAAK,CAACW,IAAI,CAAwC;IAChEG,kBAAkB,EAAEA,CAAC;MAAEC;IAAoB,CAAC,KAC1CtB,GAAG,CAACsB,mBAAmB,EAAEf,KAAK,CAACW,IAAI,CAA4B;IACjEK,YAAY,EAAEA,CAAC;MAAEC;IAAc,CAAC,KAC9BxB,GAAG,CAACwB,aAAa,EAAEjB,KAAK,CAACW,IAAI;EAGjC,CAAC,CAAC,CACH,EACD,CAAC;IACCC,KAAK;IACLH,WAAW,GAAGX,UAAU,CAACE,KAAK,CAACkB,MAAM,EAAEN,KAAK,CAAC;IAC7CI,YAAY;IACZF,kBAAkB,GAAGhB,UAAU,CAACE,KAAK,CAACkB,MAAM,EAAEF,YAAY;EAC5D,CAAC,KAAK;IACJ,MAAMG,KAAK,GAAG,CAACzB,OAAO,CAACe,WAAW,EAAEK,kBAAkB,CAAC;IACvD,MAAMM,QAAQ,GAAG,CAACD,KAAK;IACvB,OAAO;MACLA,KAAK;MACLC,QAAQ;MACRC,MAAM,EAAEC,KAAK,CAACC,OAAO,CAACX,KAAK,CAAC,GAAGA,KAAK,CAACS,MAAM,GAAG;IAChD,CAAC;EACH,CACF,CACF,CAAC,EACH,CAACrB,KAAK,CAACwB,UAAU,CACnB,CAAC;EAED,MAAM;IAAEL,KAAK;IAAEC,QAAQ;IAAEC;EAAO,CAAC,GAAG1B,eAAe,CACjDY,cAAc,EACdV,YACF,CAAC;EAED,MAAM4B,KAAK,GAAG9B,eAAe,CAC1B+B,KAAK,IAAKpB,mBAAmB,CAACoB,KAAK,CAAC,CAAC1B,KAAK,CAACwB,UAAU,CACxD,CAAC;EACD,MAAMG,IAAI,GAAGhC,eAAe,CAAE+B,KAAK,IAAKA,KAAK,CAACE,SAAS,CAAC5B,KAAK,CAACwB,UAAU,CAAC,CAAC;EAC1E,MAAMK,YAAY,GAAGlC,eAAe,CAAE+B,KAAK,IAAKA,KAAK,CAACG,YAAY,CAAC;EAEnE,MAAMC,YAAY,GAAG1C,KAAK,CAACoB,OAAO,CAChC,MACElB,kBAAkB,CAChB;IAAE,GAAGW,YAAY;IAAEC,cAAc;IAAEC,QAAQ;IAAEC;EAAQ,CAAC,EACtDJ,KACF,CAAC,EACH,CAACA,KAAK,CAACwB,UAAU,CACnB,CAAC;EACD,MAAMO,QAAQ,GAAG3C,KAAK,CAACoB,OAAO,CAC5B,MACE,CAAC,GAAG,IAAIc,KAAK,CAACD,MAAM,CAAC,CAACW,IAAI,CAAC,CAAC,CAAC,CAACC,GAAG,CAAEC,KAAK,IACtClC,KAAK,CAACmC,QAAQ;EACZ;EACAD,KACF,CACF,CAAC,EACH,CAACb,MAAM,CACT,CAAC;EAED,OAAOjC,KAAK,CAACoB,OAAO,CAClB,OAAO;IACL,GAAGsB,YAAY;IACfM,OAAO,EAAE,CAAAT,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAES,OAAO,KAAI,KAAK;IAC/BC,OAAO,EAAE,CAAAV,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEU,OAAO,KAAIR,YAAY;IACtCS,UAAU,EAAEX,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEW,UAAU;IAC5Bb,KAAK;IACLM,QAAQ;IACRZ,KAAK;IACLC,QAAQ;IACRmB,KAAK,EAAE,CAACd,KAAK;IACbe,OAAO,EAAEC,OAAO,CAAChB,KAAK;EACxB,CAAC,CAAC,EACF,CAACN,KAAK,EAAEW,YAAY,EAAEC,QAAQ,EAAEJ,IAAI,EAAEE,YAAY,EAAEJ,KAAK,CAC3D,CAAC;AACH;AAqBA,OAAO,SAASiB,aAAaA,CAC3B1C,KAAoC,EACS;EAC7C,MAAM;IAAE2C;EAAK,CAAC,GAAGtD,cAAc,CAAI,CAAC;EACpC,OAAOU,iBAAiB,CACtBC,KAAK,YAAYb,SAAS,GAAGa,KAAK,GAAG2C,IAAI,CAAClD,GAAG,CAACO,KAAY,CAC5D,CAAC;AACH","ignoreList":[]}
package/useField.d.mts ADDED
@@ -0,0 +1,38 @@
1
+ import z from 'zod';
2
+ import { FieldPath } from "./FieldPath.mjs";
3
+ import { FieldMeta } from "./FormState.mjs";
4
+ import { setParsedValue } from "./actions/setParsedValue.mjs";
5
+ import { setValue } from "./actions/setValue.mjs";
6
+ import { setMeta } from "./actions/setMeta.mjs";
7
+ import { PathInSchema, PathstringInSchema } from "./util/PathInSchema.mjs";
8
+ import { parsePathstring } from "./util/parsePathstring.mjs";
9
+ import { SchemaAt } from "./util/SchemaAt.mjs";
10
+ import { bindActionsToField } from "./util/bindActionsToField.mjs";
11
+ import { DeepPartial } from "./util/DeepPartial.mjs";
12
+ export type UseFieldProps<Field extends FieldPath> = FieldMeta & ReturnType<typeof bindActionsToField<Field, {
13
+ setParsedValue: typeof setParsedValue<Field>;
14
+ setValue: typeof setValue<Field>;
15
+ setMeta: typeof setMeta<Field>;
16
+ }>> & {
17
+ parsedValue?: z.output<Field['schema']>;
18
+ value?: DeepPartial<z.input<Field['schema']>>;
19
+ initialParsedValue?: z.output<Field['schema']>;
20
+ initialValue?: DeepPartial<z.input<Field['schema']>>;
21
+ error?: string;
22
+ dirty: boolean;
23
+ pristine: boolean;
24
+ valid: boolean;
25
+ invalid: boolean;
26
+ };
27
+ export interface TypedUseField<T extends z.ZodTypeAny> {
28
+ <Field extends FieldPath>(field: Field): UseFieldProps<Field>;
29
+ <Path extends PathInSchema<T>>(path: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>;
30
+ <Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
31
+ }
32
+ export type UseFieldOptions = {
33
+ normalizeOnMount?: boolean;
34
+ };
35
+ export declare function useField<Field extends FieldPath>(field: Field, options?: UseFieldOptions): UseFieldProps<Field>;
36
+ export declare function useField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArray<T> to pass a path array'>, Path extends PathInSchema<T> = any>(field: Path, options?: UseFieldOptions): UseFieldProps<FieldPath<SchemaAt<T, Path>>>;
37
+ export declare function useField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArray<T> to pass a pathstring'>, Pathstring extends PathstringInSchema<T> = any>(field: Pathstring, options?: UseFieldOptions): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
38
+ //# sourceMappingURL=useField.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useField.d.mts","names":["z","FieldPath","FieldMeta","setParsedValue","setValue","setMeta","PathInSchema","PathstringInSchema","parsePathstring","SchemaAt","bindActionsToField","DeepPartial","UseFieldProps","ReturnType","Field","parsedValue","output","value","input","initialParsedValue","initialValue","error","dirty","pristine","valid","invalid","TypedUseField","ZodTypeAny","field","T","path","Path","Pathstring","UseFieldOptions","normalizeOnMount","useField","options","ZodBranded","ZodNever"],"sources":["src/useField.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/useField.d.ts CHANGED
@@ -1,35 +1,38 @@
1
1
  import z from 'zod';
2
- import { FieldPath } from './FieldPath';
3
- import { FieldMeta } from './FormState';
4
- import { setParsedValue } from './actions/setParsedValue';
5
- import { setValue } from './actions/setValue';
6
- import { setMeta } from './actions/setMeta';
7
- import { PathInSchema, PathstringInSchema } from './util/PathInSchema';
8
- import { parsePathstring } from './util/parsePathstring';
9
- import { SchemaAt } from './util/SchemaAt';
10
- import { bindActionsToField } from './util/bindActionsToField';
11
- import { DeepPartial } from './util/DeepPartial';
2
+ import { FieldPath } from "./FieldPath.js";
3
+ import { FieldMeta } from "./FormState.js";
4
+ import { setParsedValue } from "./actions/setParsedValue.js";
5
+ import { setValue } from "./actions/setValue.js";
6
+ import { setMeta } from "./actions/setMeta.js";
7
+ import { PathInSchema, PathstringInSchema } from "./util/PathInSchema.js";
8
+ import { parsePathstring } from "./util/parsePathstring.js";
9
+ import { SchemaAt } from "./util/SchemaAt.js";
10
+ import { bindActionsToField } from "./util/bindActionsToField.js";
11
+ import { DeepPartial } from "./util/DeepPartial.js";
12
12
  export type UseFieldProps<Field extends FieldPath> = FieldMeta & ReturnType<typeof bindActionsToField<Field, {
13
- setParsedValue: typeof setParsedValue<Field>;
14
- setValue: typeof setValue<Field>;
15
- setMeta: typeof setMeta<Field>;
13
+ setParsedValue: typeof setParsedValue<Field>;
14
+ setValue: typeof setValue<Field>;
15
+ setMeta: typeof setMeta<Field>;
16
16
  }>> & {
17
- parsedValue?: z.output<Field['schema']>;
18
- value?: DeepPartial<z.input<Field['schema']>>;
19
- initialParsedValue?: z.output<Field['schema']>;
20
- initialValue?: DeepPartial<z.input<Field['schema']>>;
21
- error?: string;
22
- dirty: boolean;
23
- pristine: boolean;
24
- valid: boolean;
25
- invalid: boolean;
17
+ parsedValue?: z.output<Field['schema']>;
18
+ value?: DeepPartial<z.input<Field['schema']>>;
19
+ initialParsedValue?: z.output<Field['schema']>;
20
+ initialValue?: DeepPartial<z.input<Field['schema']>>;
21
+ error?: string;
22
+ dirty: boolean;
23
+ pristine: boolean;
24
+ valid: boolean;
25
+ invalid: boolean;
26
26
  };
27
27
  export interface TypedUseField<T extends z.ZodTypeAny> {
28
- <Field extends FieldPath>(field: Field): UseFieldProps<Field>;
29
- <Path extends PathInSchema<T>>(path: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>;
30
- <Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
28
+ <Field extends FieldPath>(field: Field): UseFieldProps<Field>;
29
+ <Path extends PathInSchema<T>>(path: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>;
30
+ <Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
31
31
  }
32
- export declare function useField<Field extends FieldPath>(field: Field): UseFieldProps<Field>;
33
- export declare function useField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArray<T> to pass a path array'>, Path extends PathInSchema<T> = any>(field: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>;
34
- export declare function useField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArray<T> to pass a pathstring'>, Pathstring extends PathstringInSchema<T> = any>(field: Pathstring): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
32
+ export type UseFieldOptions = {
33
+ normalizeOnMount?: boolean;
34
+ };
35
+ export declare function useField<Field extends FieldPath>(field: Field, options?: UseFieldOptions): UseFieldProps<Field>;
36
+ export declare function useField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArray<T> to pass a path array'>, Path extends PathInSchema<T> = any>(field: Path, options?: UseFieldOptions): UseFieldProps<FieldPath<SchemaAt<T, Path>>>;
37
+ export declare function useField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArray<T> to pass a pathstring'>, Pathstring extends PathstringInSchema<T> = any>(field: Pathstring, options?: UseFieldOptions): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
35
38
  //# sourceMappingURL=useField.d.ts.map
package/useField.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"useField.d.ts","sourceRoot":"","sources":["src/useField.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useField.d.ts","names":["z","FieldPath","FieldMeta","setParsedValue","setValue","setMeta","PathInSchema","PathstringInSchema","parsePathstring","SchemaAt","bindActionsToField","DeepPartial","UseFieldProps","ReturnType","Field","parsedValue","output","value","input","initialParsedValue","initialValue","error","dirty","pristine","valid","invalid","TypedUseField","ZodTypeAny","field","T","path","Path","Pathstring","UseFieldOptions","normalizeOnMount","useField","options","ZodBranded","ZodNever"],"sources":["src/useField.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAAmBC,SAAS;AAC5B,SAASC,SAAS;AAGlB,SAASC,cAAc;AACvB,SAASC,QAAQ;AACjB,SAASC,OAAO;AAShB,SAASC,YAAY,EAAEC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,QAAQ;AAEjB,SAASC,kBAAkB;AAC3B,SAASC,WAAW;AAIpB,OAAM,KAAMC,aAAa,CAAC,cAAcX,SAAS,IAAIC,SAAS,GAC5DW,UAAU,CACR,OAAOH,kBAAkB,CACvBI,KAAK,EACL;EACEX,cAAc,EAAE,OAAOA,cAAc,CAACW,KAAK,CAAC;EAC5CV,QAAQ,EAAE,OAAOA,QAAQ,CAACU,KAAK,CAAC;EAChCT,OAAO,EAAE,OAAOA,OAAO,CAACS,KAAK,CAAC;CAC/B,CACF,CACF,GAAG;EACFC,WAAW,CAAC,EAAEf,CAAC,CAACgB,MAAM,CAACF,KAAK,CAAC,QAAQ,CAAC,CAAC;EACvCG,KAAK,CAAC,EAAEN,WAAW,CAACX,CAAC,CAACkB,KAAK,CAACJ,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC7CK,kBAAkB,CAAC,EAAEnB,CAAC,CAACgB,MAAM,CAACF,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC9CM,YAAY,CAAC,EAAET,WAAW,CAACX,CAAC,CAACkB,KAAK,CAACJ,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;EACpDO,KAAK,CAAC,EAAE,MAAM;EACdC,KAAK,EAAE,OAAO;EACdC,QAAQ,EAAE,OAAO;EACjBC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE,OAAO;CACjB;AAEH,OAAM,UAAWC,aAAa,CAAC,UAAU1B,CAAC,CAAC2B,UAAU;EACnD,CAAC,cAAc1B,SAAS,EAAE2B,KAAK,EAAEd,KAAK,GAAGF,aAAa,CAACE,KAAK,CAAC;EAC7D,CAAC,aAAaR,YAAY,CAACuB,CAAC,CAAC,EAC3BC,IAAI,EAAEC,IAAI,GACTnB,aAAa,CAACX,SAAS,CAACQ,QAAQ,CAACoB,CAAC,EAAEE,IAAI,CAAC,CAAC,CAAC;EAC9C,CAAC,mBAAmBxB,kBAAkB,CAACsB,CAAC,CAAC,EACvCC,IAAI,EAAEE,UAAU,GACfpB,aAAa,CAACX,SAAS,CAACQ,QAAQ,CAACoB,CAAC,EAAErB,eAAe,CAACwB,UAAU,CAAC,CAAC,CAAC,CAAC;;AAGvE,OAAM,KAAMC,eAAe,GAAG;EAC5BC,gBAAgB,CAAC,EAAE,OAAO;CAC3B;AAuID,wBAAgBC,QAAQ,CAAC,cAAclC,SAAS,CAAAkC,CAC9CP,KAAK,EAAEd,KAAK,EACZsB,OAAyB,CAAjB,EAAEH,eAAe,GACxBrB,aAAa,CAACE,KAAK,CAAC;AACvB,wBAAgBqB,QAAQ,CACtB,UAAUnC,CAAC,CAAC2B,UAAU,GAAG3B,CAAC,CAACqC,UAAU,CACnCrC,CAAC,CAACsC,QAAQ,EACV,+CAA+C,CAChD,EACD,aAAahC,YAAY,CAACuB,CAAC,CAAC,GAAG,GAAG,CAAAM,CAElCP,KAAK,EAAEG,IAAI,EACXK,OAAyB,CAAjB,EAAEH,eAAe,GACxBrB,aAAa,CAACX,SAAS,CAACQ,QAAQ,CAACoB,CAAC,EAAEE,IAAI,CAAC,CAAC,CAAC;AAC9C,wBAAgBI,QAAQ,CACtB,UAAUnC,CAAC,CAAC2B,UAAU,GAAG3B,CAAC,CAACqC,UAAU,CACnCrC,CAAC,CAACsC,QAAQ,EACV,+CAA+C,CAChD,EACD,mBAAmB/B,kBAAkB,CAACsB,CAAC,CAAC,GAAG,GAAG,CAAAM,CAE9CP,KAAK,EAAEI,UAAU,EAEjBI,OAAyB,CAAjB,EAAEH,eAAe,GACxBrB,aAAa,CAACX,SAAS,CAACQ,QAAQ,CAACoB,CAAC,EAAErB,eAAe,CAACwB,UAAU,CAAC,CAAC,CAAC,CAAC","ignoreList":[]}