@jcoreio/zod-forms 1.2.0 → 2.0.0-beta.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 (264) hide show
  1. package/ConditionalValidator.d.ts +2 -0
  2. package/ConditionalValidator.d.ts.map +1 -1
  3. package/ConditionalValidator.js +6 -2
  4. package/ConditionalValidator.js.map +1 -1
  5. package/ConditionalValidator.mjs +2 -0
  6. package/ConditionalValidator.mjs.map +1 -1
  7. package/FieldPath.d.ts +2 -2
  8. package/FieldPath.d.ts.map +1 -1
  9. package/FieldPath.js.map +1 -1
  10. package/FieldPath.mjs.map +1 -1
  11. package/FormAction.d.ts +2 -2
  12. package/FormAction.d.ts.map +1 -1
  13. package/FormAction.js.map +1 -1
  14. package/FormAction.mjs.map +1 -1
  15. package/FormContext.d.ts +7 -6
  16. package/FormContext.d.ts.map +1 -1
  17. package/FormContext.js.map +1 -1
  18. package/FormContext.mjs.map +1 -1
  19. package/FormState.d.ts +10 -8
  20. package/FormState.d.ts.map +1 -1
  21. package/FormState.js.map +1 -1
  22. package/FormState.mjs.map +1 -1
  23. package/README.md +2 -2
  24. package/actions/arrayActions.d.ts +40 -39
  25. package/actions/arrayActions.d.ts.map +1 -1
  26. package/actions/arrayActions.js +37 -37
  27. package/actions/arrayActions.js.map +1 -1
  28. package/actions/arrayActions.mjs +29 -29
  29. package/actions/arrayActions.mjs.map +1 -1
  30. package/actions/initialize.d.ts +5 -4
  31. package/actions/initialize.d.ts.map +1 -1
  32. package/actions/initialize.js.map +1 -1
  33. package/actions/initialize.mjs.map +1 -1
  34. package/actions/setParsedValue.d.ts +12 -0
  35. package/actions/setParsedValue.d.ts.map +1 -0
  36. package/{reducers/setRawValue.js → actions/setParsedValue.js} +9 -26
  37. package/actions/setParsedValue.js.map +1 -0
  38. package/actions/setParsedValue.mjs +9 -0
  39. package/actions/setParsedValue.mjs.map +1 -0
  40. package/actions/setSubmitStatus.d.ts +3 -3
  41. package/actions/setSubmitStatus.d.ts.map +1 -1
  42. package/actions/setSubmitStatus.js.map +1 -1
  43. package/actions/setSubmitStatus.mjs.map +1 -1
  44. package/actions/setValue.d.ts +3 -5
  45. package/actions/setValue.d.ts.map +1 -1
  46. package/actions/setValue.js +3 -7
  47. package/actions/setValue.js.map +1 -1
  48. package/actions/setValue.mjs +2 -3
  49. package/actions/setValue.mjs.map +1 -1
  50. package/createFormMiddleware.d.ts.map +1 -1
  51. package/createFormMiddleware.js +7 -5
  52. package/createFormMiddleware.js.map +1 -1
  53. package/createFormMiddleware.mjs +7 -5
  54. package/createFormMiddleware.mjs.map +1 -1
  55. package/createFormProvider.d.ts.map +1 -1
  56. package/createFormProvider.js +10 -10
  57. package/createFormProvider.js.map +1 -1
  58. package/createFormProvider.mjs +7 -7
  59. package/createFormProvider.mjs.map +1 -1
  60. package/createFormReducer.js +17 -17
  61. package/createFormReducer.js.map +1 -1
  62. package/createFormReducer.mjs +17 -17
  63. package/createFormReducer.mjs.map +1 -1
  64. package/createSelectFormStatus.d.ts +1 -1
  65. package/createSelectFormStatus.d.ts.map +1 -1
  66. package/createSelectFormStatus.js +6 -6
  67. package/createSelectFormStatus.js.map +1 -1
  68. package/createSelectFormStatus.mjs +1 -1
  69. package/createSelectFormStatus.mjs.map +1 -1
  70. package/createSelectFormValues.d.ts +19 -19
  71. package/createSelectFormValues.d.ts.map +1 -1
  72. package/createSelectFormValues.js +5 -5
  73. package/createSelectFormValues.js.map +1 -1
  74. package/createSelectFormValues.mjs +3 -3
  75. package/createSelectFormValues.mjs.map +1 -1
  76. package/createZodForm.d.ts +4 -4
  77. package/index.d.ts +1 -1
  78. package/index.d.ts.map +1 -1
  79. package/index.js.map +1 -1
  80. package/index.mjs.map +1 -1
  81. package/initFormState.js +1 -1
  82. package/initFormState.js.map +1 -1
  83. package/initFormState.mjs +1 -1
  84. package/initFormState.mjs.map +1 -1
  85. package/package.json +5 -2
  86. package/reducers/addHandlers.d.ts +6 -6
  87. package/reducers/arrayInsert.d.ts.map +1 -1
  88. package/reducers/arrayInsert.js +10 -4
  89. package/reducers/arrayInsert.js.map +1 -1
  90. package/reducers/arrayInsert.mjs +6 -4
  91. package/reducers/arrayInsert.mjs.map +1 -1
  92. package/reducers/arrayInsertParsed.d.ts +7 -0
  93. package/reducers/arrayInsertParsed.d.ts.map +1 -0
  94. package/reducers/arrayInsertParsed.js +16 -0
  95. package/reducers/arrayInsertParsed.js.map +1 -0
  96. package/reducers/arrayInsertParsed.mjs +12 -0
  97. package/reducers/arrayInsertParsed.mjs.map +1 -0
  98. package/reducers/arrayPush.d.ts.map +1 -1
  99. package/reducers/arrayPush.js +6 -4
  100. package/reducers/arrayPush.js.map +1 -1
  101. package/reducers/arrayPush.mjs +2 -4
  102. package/reducers/arrayPush.mjs.map +1 -1
  103. package/reducers/arrayPushParsed.d.ts +7 -0
  104. package/reducers/{arrayUnshiftRaw.d.ts.map → arrayPushParsed.d.ts.map} +1 -1
  105. package/reducers/arrayPushParsed.js +15 -0
  106. package/reducers/arrayPushParsed.js.map +1 -0
  107. package/reducers/arrayPushParsed.mjs +11 -0
  108. package/reducers/arrayPushParsed.mjs.map +1 -0
  109. package/reducers/arraySplice.d.ts.map +1 -1
  110. package/reducers/arraySplice.js +12 -6
  111. package/reducers/arraySplice.js.map +1 -1
  112. package/reducers/arraySplice.mjs +9 -5
  113. package/reducers/arraySplice.mjs.map +1 -1
  114. package/reducers/arraySpliceParsed.d.ts +7 -0
  115. package/reducers/arraySpliceParsed.d.ts.map +1 -0
  116. package/reducers/arraySpliceParsed.js +20 -0
  117. package/reducers/arraySpliceParsed.js.map +1 -0
  118. package/reducers/arraySpliceParsed.mjs +14 -0
  119. package/reducers/arraySpliceParsed.mjs.map +1 -0
  120. package/reducers/arrayUnshift.d.ts.map +1 -1
  121. package/reducers/arrayUnshift.js +6 -4
  122. package/reducers/arrayUnshift.js.map +1 -1
  123. package/reducers/arrayUnshift.mjs +2 -4
  124. package/reducers/arrayUnshift.mjs.map +1 -1
  125. package/reducers/arrayUnshiftParsed.d.ts +7 -0
  126. package/reducers/arrayUnshiftParsed.d.ts.map +1 -0
  127. package/reducers/arrayUnshiftParsed.js +15 -0
  128. package/reducers/arrayUnshiftParsed.js.map +1 -0
  129. package/reducers/arrayUnshiftParsed.mjs +11 -0
  130. package/reducers/arrayUnshiftParsed.mjs.map +1 -0
  131. package/reducers/initialize.d.ts +12 -12
  132. package/reducers/initialize.d.ts.map +1 -1
  133. package/reducers/initialize.js +9 -9
  134. package/reducers/initialize.js.map +1 -1
  135. package/reducers/initialize.mjs +8 -8
  136. package/reducers/initialize.mjs.map +1 -1
  137. package/reducers/removeHandlers.d.ts +6 -6
  138. package/reducers/setParsedValue.d.ts +47 -0
  139. package/reducers/setParsedValue.d.ts.map +1 -0
  140. package/reducers/setParsedValue.js +41 -0
  141. package/reducers/setParsedValue.js.map +1 -0
  142. package/reducers/setParsedValue.mjs +32 -0
  143. package/reducers/setParsedValue.mjs.map +1 -0
  144. package/reducers/setSubmitStatus.d.ts +6 -6
  145. package/reducers/setValue.d.ts +9 -10
  146. package/reducers/setValue.d.ts.map +1 -1
  147. package/reducers/setValue.js +9 -15
  148. package/reducers/setValue.js.map +1 -1
  149. package/reducers/setValue.mjs +9 -15
  150. package/reducers/setValue.mjs.map +1 -1
  151. package/reducers/submitSucceeded.d.ts +6 -6
  152. package/reducers/submitSucceeded.js +2 -2
  153. package/reducers/submitSucceeded.js.map +1 -1
  154. package/reducers/submitSucceeded.mjs +2 -2
  155. package/reducers/submitSucceeded.mjs.map +1 -1
  156. package/reducers/util/updateRawArray.d.ts +2 -2
  157. package/reducers/util/updateRawArray.d.ts.map +1 -1
  158. package/reducers/util/updateRawArray.js +3 -3
  159. package/reducers/util/updateRawArray.js.map +1 -1
  160. package/reducers/util/updateRawArray.mjs +3 -3
  161. package/reducers/util/updateRawArray.mjs.map +1 -1
  162. package/src/ConditionalValidator.ts +4 -1
  163. package/src/FieldPath.ts +3 -5
  164. package/src/FormAction.ts +2 -2
  165. package/src/FormContext.ts +7 -6
  166. package/src/FormState.ts +12 -8
  167. package/src/actions/arrayActions.ts +66 -58
  168. package/src/actions/initialize.ts +3 -2
  169. package/src/actions/setParsedValue.ts +21 -0
  170. package/src/actions/setSubmitStatus.ts +1 -1
  171. package/src/actions/setValue.ts +2 -5
  172. package/src/createFormMiddleware.ts +5 -3
  173. package/src/createFormProvider.tsx +12 -9
  174. package/src/createFormReducer.ts +17 -17
  175. package/src/createSelectFormStatus.ts +5 -5
  176. package/src/createSelectFormValues.ts +2 -2
  177. package/src/index.ts +1 -1
  178. package/src/initFormState.ts +1 -1
  179. package/src/reducers/arrayInsert.ts +9 -6
  180. package/src/reducers/arrayInsertParsed.ts +19 -0
  181. package/src/reducers/arrayPush.ts +5 -7
  182. package/src/reducers/arrayPushParsed.ts +23 -0
  183. package/src/reducers/arraySplice.ts +18 -5
  184. package/src/reducers/arraySpliceParsed.ts +17 -0
  185. package/src/reducers/arrayUnshift.ts +6 -4
  186. package/src/reducers/arrayUnshiftParsed.ts +16 -0
  187. package/src/reducers/initialize.ts +10 -8
  188. package/src/reducers/setParsedValue.ts +61 -0
  189. package/src/reducers/setValue.ts +12 -21
  190. package/src/reducers/submitSucceeded.ts +1 -1
  191. package/src/reducers/util/updateRawArray.ts +5 -5
  192. package/src/useArrayField.ts +17 -14
  193. package/src/useField.ts +27 -25
  194. package/src/useHtmlField.ts +42 -42
  195. package/src/useInitialize.ts +1 -1
  196. package/src/util/maybeParse.ts +2 -2
  197. package/useArrayField.d.ts +4 -4
  198. package/useArrayField.d.ts.map +1 -1
  199. package/useArrayField.js +16 -16
  200. package/useArrayField.js.map +1 -1
  201. package/useArrayField.mjs +12 -12
  202. package/useArrayField.mjs.map +1 -1
  203. package/useField.d.ts +7 -6
  204. package/useField.d.ts.map +1 -1
  205. package/useField.js +25 -25
  206. package/useField.js.map +1 -1
  207. package/useField.mjs +19 -19
  208. package/useField.mjs.map +1 -1
  209. package/useFormValues.d.ts +4 -4
  210. package/useHtmlField.js +40 -40
  211. package/useHtmlField.js.map +1 -1
  212. package/useHtmlField.mjs +36 -36
  213. package/useHtmlField.mjs.map +1 -1
  214. package/useInitialize.d.ts.map +1 -1
  215. package/useInitialize.js +1 -1
  216. package/useInitialize.js.map +1 -1
  217. package/useInitialize.mjs +1 -1
  218. package/useInitialize.mjs.map +1 -1
  219. package/util/maybeParse.d.ts +1 -1
  220. package/util/maybeParse.d.ts.map +1 -1
  221. package/util/maybeParse.js +2 -2
  222. package/util/maybeParse.js.map +1 -1
  223. package/util/maybeParse.mjs +2 -2
  224. package/util/maybeParse.mjs.map +1 -1
  225. package/actions/setRawValue.d.ts +0 -9
  226. package/actions/setRawValue.d.ts.map +0 -1
  227. package/actions/setRawValue.js +0 -14
  228. package/actions/setRawValue.js.map +0 -1
  229. package/actions/setRawValue.mjs +0 -8
  230. package/actions/setRawValue.mjs.map +0 -1
  231. package/reducers/arrayInsertRaw.d.ts +0 -7
  232. package/reducers/arrayInsertRaw.d.ts.map +0 -1
  233. package/reducers/arrayInsertRaw.js +0 -22
  234. package/reducers/arrayInsertRaw.js.map +0 -1
  235. package/reducers/arrayInsertRaw.mjs +0 -14
  236. package/reducers/arrayInsertRaw.mjs.map +0 -1
  237. package/reducers/arrayPushRaw.d.ts +0 -7
  238. package/reducers/arrayPushRaw.d.ts.map +0 -1
  239. package/reducers/arrayPushRaw.js +0 -17
  240. package/reducers/arrayPushRaw.js.map +0 -1
  241. package/reducers/arrayPushRaw.mjs +0 -9
  242. package/reducers/arrayPushRaw.mjs.map +0 -1
  243. package/reducers/arraySpliceRaw.d.ts +0 -7
  244. package/reducers/arraySpliceRaw.d.ts.map +0 -1
  245. package/reducers/arraySpliceRaw.js +0 -26
  246. package/reducers/arraySpliceRaw.js.map +0 -1
  247. package/reducers/arraySpliceRaw.mjs +0 -18
  248. package/reducers/arraySpliceRaw.mjs.map +0 -1
  249. package/reducers/arrayUnshiftRaw.d.ts +0 -7
  250. package/reducers/arrayUnshiftRaw.js +0 -17
  251. package/reducers/arrayUnshiftRaw.js.map +0 -1
  252. package/reducers/arrayUnshiftRaw.mjs +0 -9
  253. package/reducers/arrayUnshiftRaw.mjs.map +0 -1
  254. package/reducers/setRawValue.d.ts +0 -27
  255. package/reducers/setRawValue.d.ts.map +0 -1
  256. package/reducers/setRawValue.js.map +0 -1
  257. package/reducers/setRawValue.mjs +0 -26
  258. package/reducers/setRawValue.mjs.map +0 -1
  259. package/src/actions/setRawValue.ts +0 -17
  260. package/src/reducers/arrayInsertRaw.ts +0 -22
  261. package/src/reducers/arrayPushRaw.ts +0 -18
  262. package/src/reducers/arraySpliceRaw.ts +0 -30
  263. package/src/reducers/arrayUnshiftRaw.ts +0 -18
  264. package/src/reducers/setRawValue.ts +0 -40
package/src/useField.ts CHANGED
@@ -3,8 +3,8 @@ import { BasePath, FieldPath } from './FieldPath'
3
3
  import { FieldMeta } from './FormState'
4
4
  import { get } from './util/get'
5
5
  import React from 'react'
6
+ import { setParsedValue } from './actions/setParsedValue'
6
7
  import { setValue } from './actions/setValue'
7
- import { setRawValue } from './actions/setRawValue'
8
8
  import { setMeta } from './actions/setMeta'
9
9
  import {
10
10
  useFormSelector as untypedUseFormSelector,
@@ -19,19 +19,20 @@ import { parsePathstring } from './util/parsePathstring'
19
19
  import { SchemaAt } from './util/SchemaAt'
20
20
  import { maybeParse } from './util/maybeParse'
21
21
  import { bindActionsToField } from './util/bindActionsToField'
22
+ import { DeepPartial } from './util/DeepPartial'
22
23
 
23
24
  export type UseFieldProps<Field extends FieldPath> = FieldMeta &
24
25
  ReturnType<
25
26
  typeof bindActionsToField<{
27
+ setParsedValue: typeof setParsedValue
26
28
  setValue: typeof setValue
27
- setRawValue: typeof setRawValue
28
29
  setMeta: typeof setMeta
29
30
  }>
30
31
  > & {
31
- value: z.output<Field['schema']> | undefined
32
- rawValue: unknown
33
- initialValue: z.output<Field['schema']> | undefined
34
- rawInitialValue: unknown
32
+ parsedValue: DeepPartial<z.output<Field['schema']>> | undefined
33
+ value: DeepPartial<z.input<Field['schema']>> | undefined
34
+ initialParsedValue: DeepPartial<z.output<Field['schema']>> | undefined
35
+ initialValue: DeepPartial<z.input<Field['schema']>> | undefined
35
36
  error?: string
36
37
  dirty: boolean
37
38
  pristine: boolean
@@ -55,8 +56,8 @@ function useFieldBase<T extends z.ZodTypeAny, Field extends FieldPath>(
55
56
  type Schema = Field['schema']
56
57
 
57
58
  const {
59
+ setParsedValue,
58
60
  setValue,
59
- setRawValue,
60
61
  setMeta,
61
62
  selectFormValues,
62
63
  selectFieldErrorMap,
@@ -71,29 +72,30 @@ function useFieldBase<T extends z.ZodTypeAny, Field extends FieldPath>(
71
72
  createSelector(
72
73
  [
73
74
  createStructuredSelector({
74
- value: ({ values }) =>
75
- get(values, field.path) as z.output<Schema> | undefined,
76
- rawValue: ({ rawValues }) =>
77
- get(rawValues, field.path) as unknown,
75
+ parsedValue: ({ parsedValues }) =>
76
+ get(parsedValues, field.path) as z.output<Schema> | undefined,
77
+ value: ({ values }) => get(values, field.path) as unknown,
78
+ initialParsedValue: ({ initialParsedValues }) =>
79
+ get(initialParsedValues, field.path) as
80
+ | z.output<Schema>
81
+ | undefined,
78
82
  initialValue: ({ initialValues }) =>
79
- get(initialValues, field.path) as z.output<Schema> | undefined,
80
- rawInitialValue: ({ rawInitialValues }) =>
81
- get(rawInitialValues, field.path) as unknown,
83
+ get(initialValues, field.path) as unknown,
82
84
  }),
83
85
  ],
84
86
  ({
85
- rawValue,
86
- value = maybeParse(field.schema, rawValue),
87
- rawInitialValue,
88
- initialValue = maybeParse(field.schema, rawInitialValue),
87
+ value,
88
+ parsedValue = maybeParse(field.schema, value),
89
+ initialValue,
90
+ initialParsedValue = maybeParse(field.schema, initialValue),
89
91
  }) => {
90
- const dirty = !isEqual(value, initialValue)
92
+ const dirty = !isEqual(parsedValue, initialParsedValue)
91
93
  const pristine = !dirty
92
94
  return {
95
+ parsedValue,
93
96
  value,
94
- rawValue,
97
+ initialParsedValue,
95
98
  initialValue,
96
- rawInitialValue,
97
99
  dirty,
98
100
  pristine,
99
101
  }
@@ -103,7 +105,7 @@ function useFieldBase<T extends z.ZodTypeAny, Field extends FieldPath>(
103
105
  [field.pathstring]
104
106
  )
105
107
 
106
- const values = useFormSelector(valuesSelector, shallowEqual)
108
+ const parsedValues = useFormSelector(valuesSelector, shallowEqual)
107
109
 
108
110
  const error = useFormSelector(
109
111
  (state) => selectFieldErrorMap(state)[field.pathstring]
@@ -112,21 +114,21 @@ function useFieldBase<T extends z.ZodTypeAny, Field extends FieldPath>(
112
114
  const submitFailed = useFormSelector((state) => state.submitFailed)
113
115
 
114
116
  const boundActions = React.useMemo(
115
- () => bindActionsToField({ setValue, setRawValue, setMeta }, field),
117
+ () => bindActionsToField({ setParsedValue, setValue, setMeta }, field),
116
118
  [field.pathstring]
117
119
  )
118
120
 
119
121
  return React.useMemo(
120
122
  () => ({
121
123
  ...boundActions,
122
- ...values,
124
+ ...parsedValues,
123
125
  visited: meta?.visited || false,
124
126
  touched: meta?.touched || submitFailed,
125
127
  error,
126
128
  valid: !error,
127
129
  invalid: Boolean(error),
128
130
  }),
129
- [field.pathstring, values, meta, error, submitFailed]
131
+ [field.pathstring, parsedValues, meta, error, submitFailed]
130
132
  ) as any
131
133
  }
132
134
 
@@ -67,25 +67,25 @@ function useHtmlFieldBase<Field extends FieldPath>(
67
67
  const { field, type, normalizeOnBlur = true } = options
68
68
  const props = useField(field)
69
69
  const {
70
+ parsedValue,
70
71
  value,
71
- rawValue,
72
+ initialParsedValue,
72
73
  initialValue,
73
- rawInitialValue,
74
+ setParsedValue,
74
75
  setValue,
75
- setRawValue,
76
76
  setMeta,
77
77
  ...meta
78
78
  } = props
79
79
 
80
80
  const { schema } = field
81
81
 
82
- // tempRawValue is used for storing blank text when we've coerced the
83
- // raw value to null or undefined, or storing numeric text when we've
84
- // coerced the raw value to a number or bigint.
85
- // This way we can set a raw value that will parse better in the form
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.
85
+ // This way we can set a value that will parse better in the form
86
86
  // state without interfering with the text the user is typing.
87
- const [tempRawValue, setTempRawValue] = React.useState(
88
- rawValue as string | null | undefined
87
+ const [tempValue, setTempValue] = React.useState(
88
+ value as string | null | undefined
89
89
  )
90
90
 
91
91
  const tryNumber = React.useMemo(() => acceptsNumber(schema), [schema])
@@ -93,18 +93,18 @@ function useHtmlFieldBase<Field extends FieldPath>(
93
93
 
94
94
  const onChange = React.useCallback(
95
95
  (e: React.ChangeEvent) => {
96
- const rawValue = getRawValue(e)
97
- const normalized = normalizeRawValue(rawValue, {
96
+ const value = getValue(e)
97
+ const normalized = normalizeValue(value, {
98
98
  schema,
99
99
  tryNumber,
100
100
  tryBigint,
101
101
  })
102
- if (typeof rawValue === 'string' && typeof normalized !== 'string') {
103
- setTempRawValue(rawValue)
102
+ if (typeof value === 'string' && typeof normalized !== 'string') {
103
+ setTempValue(value)
104
104
  }
105
- setRawValue(normalized)
105
+ setValue(normalized)
106
106
  },
107
- [getRawValue, setRawValue, schema]
107
+ [getValue, setValue, schema]
108
108
  )
109
109
 
110
110
  const onFocus = React.useCallback(() => {
@@ -113,23 +113,23 @@ function useHtmlFieldBase<Field extends FieldPath>(
113
113
 
114
114
  const onBlur = React.useCallback(
115
115
  (e: React.FocusEvent) => {
116
- let rawValue = normalizeRawValue(getRawValue(e), {
116
+ let value = normalizeValue(getValue(e), {
117
117
  schema,
118
118
  tryNumber,
119
119
  tryBigint,
120
120
  })
121
121
  if (normalizeOnBlur) {
122
- const parsed = field.schema.safeParse(rawValue)
122
+ const parsed = field.schema.safeParse(value)
123
123
  const formatted = parsed.success
124
124
  ? invert(field.schema).safeParse(parsed.data)
125
125
  : undefined
126
- if (formatted?.success) rawValue = formatted.data
127
- setRawValue(rawValue)
126
+ if (formatted?.success) value = formatted.data
127
+ setValue(value)
128
128
  }
129
- setTempRawValue(undefined)
129
+ setTempValue(undefined)
130
130
  setMeta({ visited: true, touched: true })
131
131
  },
132
- [getRawValue, setRawValue, schema]
132
+ [getValue, setValue, schema]
133
133
  )
134
134
 
135
135
  return React.useMemo(
@@ -138,32 +138,32 @@ function useHtmlFieldBase<Field extends FieldPath>(
138
138
  name: field.pathstring,
139
139
  type,
140
140
  value:
141
- typeof rawValue === 'boolean'
142
- ? String(rawValue)
143
- : typeof rawValue === 'string'
144
- ? rawValue || tempRawValue || ''
145
- : tempRawValue || (rawValue == null ? '' : String(rawValue) || ''),
146
- ...(type === 'checkbox' && { checked: Boolean(rawValue) }),
141
+ typeof value === 'boolean'
142
+ ? String(value)
143
+ : typeof value === 'string'
144
+ ? value || tempValue || ''
145
+ : tempValue || (value == null ? '' : String(value) || ''),
146
+ ...(type === 'checkbox' && { checked: Boolean(value) }),
147
147
  onChange,
148
148
  onFocus,
149
149
  onBlur,
150
150
  },
151
151
  meta: {
152
152
  ...meta,
153
+ parsedValue,
153
154
  value,
154
- rawValue,
155
+ initialParsedValue,
155
156
  initialValue,
156
- rawInitialValue,
157
+ setParsedValue,
157
158
  setValue,
158
- setRawValue,
159
159
  setMeta,
160
160
  },
161
161
  }),
162
- [props, tempRawValue, onChange]
162
+ [props, tempValue, onChange]
163
163
  ) as any
164
164
  }
165
165
 
166
- function getRawValue(e: ChangeEvent) {
166
+ function getValue(e: ChangeEvent) {
167
167
  const { target } = e
168
168
  if (target instanceof HTMLInputElement) {
169
169
  return target.type === 'checkbox' ? target.checked : target.value
@@ -177,37 +177,37 @@ function normalizeBlank(schema: z.ZodTypeAny): any {
177
177
  return undefined
178
178
  }
179
179
 
180
- function safeBigInt(rawValue: string): bigint | undefined {
180
+ function safeBigInt(value: string): bigint | undefined {
181
181
  try {
182
- return BigInt(rawValue)
182
+ return BigInt(value)
183
183
  } catch (error) {
184
184
  return undefined
185
185
  }
186
186
  }
187
187
 
188
- function normalizeRawValue(
189
- rawValue: string | boolean,
188
+ function normalizeValue(
189
+ value: string | boolean,
190
190
  {
191
191
  schema,
192
192
  tryNumber,
193
193
  tryBigint,
194
194
  }: { schema: z.ZodTypeAny; tryNumber: boolean; tryBigint: boolean }
195
195
  ): string | boolean | number | bigint | null | undefined {
196
- if (typeof rawValue === 'boolean') return rawValue
197
- if (typeof rawValue === 'string' && !/\S/.test(rawValue)) {
196
+ if (typeof value === 'boolean') return value
197
+ if (typeof value === 'string' && !/\S/.test(value)) {
198
198
  return normalizeBlank(schema)
199
199
  }
200
- if (typeof rawValue === 'string' && !schema.safeParse(rawValue).success) {
200
+ if (typeof value === 'string' && !schema.safeParse(value).success) {
201
201
  if (tryNumber) {
202
- const num = Number(rawValue)
202
+ const num = Number(value)
203
203
  if (!isNaN(num)) return num
204
204
  }
205
205
  if (tryBigint) {
206
- const bigint = safeBigInt(rawValue)
206
+ const bigint = safeBigInt(value)
207
207
  if (bigint != null) return bigint
208
208
  }
209
209
  }
210
- return rawValue
210
+ return value
211
211
  }
212
212
 
213
213
  export function useHtmlField<Field extends FieldPath>(
@@ -10,7 +10,7 @@ export function useInitialize<
10
10
  >
11
11
  >(
12
12
  options: Omit<InitializeAction<T>, 'type'>,
13
- deps: DependencyList = [options.values, options.rawValues]
13
+ deps: DependencyList = [options.parsedValues, options.values]
14
14
  ) {
15
15
  const { initialize } = useFormContext<T>()
16
16
  React.useEffect(() => {
@@ -2,8 +2,8 @@ import z from 'zod'
2
2
 
3
3
  export function maybeParse<T extends z.ZodTypeAny>(
4
4
  schema: T,
5
- rawValue: unknown
5
+ value: unknown
6
6
  ): z.output<T> | undefined {
7
- const parsed = schema.safeParse(rawValue)
7
+ const parsed = schema.safeParse(value)
8
8
  return parsed.success ? parsed.data : undefined
9
9
  }
@@ -1,17 +1,17 @@
1
1
  import z from 'zod';
2
- import { FieldPath, FieldPathForRawValue } from './FieldPath';
2
+ import { FieldPath, FieldPathForValue } from './FieldPath';
3
3
  import { PathInSchema, PathstringInSchema } from './util/PathInSchema';
4
4
  import { parsePathstring } from './util/parsePathstring';
5
5
  import { SchemaAt } from './util/SchemaAt';
6
6
  import { bindActionsToField } from './util/bindActionsToField';
7
7
  import { arrayActions } from './actions/arrayActions';
8
+ import { setParsedValue } from './actions/setParsedValue';
8
9
  import { setValue } from './actions/setValue';
9
- import { setRawValue } from './actions/setRawValue';
10
10
  import { setMeta } from './actions/setMeta';
11
11
  import { FieldMeta } from './FormState';
12
12
  export type UseArrayFieldProps<Field extends FieldPath> = NonNullable<z.input<Field['schema']>> extends any[] ? FieldMeta & ReturnType<typeof bindActionsToField<typeof arrayActions & {
13
+ setParsedValue: typeof setParsedValue;
13
14
  setValue: typeof setValue;
14
- setRawValue: typeof setRawValue;
15
15
  setMeta: typeof setMeta;
16
16
  }>> & {
17
17
  elements: FieldPath<SchemaAt<Field['schema'], [number]>>[];
@@ -24,7 +24,7 @@ export type UseArrayFieldProps<Field extends FieldPath> = NonNullable<z.input<Fi
24
24
  ERROR: 'not an array field';
25
25
  };
26
26
  export interface TypedUseArrayField<T extends z.ZodTypeAny> {
27
- <Field extends FieldPathForRawValue<any[] | null | undefined>>(field: Field): UseArrayFieldProps<Field>;
27
+ <Field extends FieldPathForValue<any[] | null | undefined>>(field: Field): UseArrayFieldProps<Field>;
28
28
  <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>;
29
29
  <Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
30
30
  }
@@ -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","sourceRoot":"","sources":["src/useArrayField.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAY,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGpE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AASrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,SAAS,IAAI,WAAW,CACnE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CACzB,SAAS,GAAG,EAAE,GACX,SAAS,GACP,UAAU,CACR,OAAO,kBAAkB,CACvB,OAAO,YAAY,GAAG;IACpB,cAAc,EAAE,OAAO,cAAc,CAAA;IACrC,QAAQ,EAAE,OAAO,QAAQ,CAAA;IACzB,OAAO,EAAE,OAAO,OAAO,CAAA;CACxB,CACF,CACF,GAAG;IACF,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CACjB,GACH;IAAE,KAAK,EAAE,oBAAoB,CAAA;CAAE,CAAA;AAEnC,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;IACxD,CAAC,KAAK,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,EACxD,KAAK,EAAE,KAAK,GACX,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC,IAAI,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAC5D,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAC7B,CAAA;IACD,CAAC,UAAU,SAAS,kBAAkB,CAAC,CAAC,CAAC,EACvC,IAAI,EAAE,UAAU,GACf,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;CAC3E;AAyFD,wBAAgB,aAAa,CAAC,KAAK,SAAS,SAAS,EACnD,KAAK,EAAE,KAAK,GACX,kBAAkB,CAAC,KAAK,CAAC,CAAA;AAC5B,wBAAgB,aAAa,CAC3B,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CACnC,CAAC,CAAC,QAAQ,EACV,oDAAoD,CACrD,EACD,IAAI,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,EAClC,KAAK,EAAE,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAChE,wBAAgB,aAAa,CAC3B,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CACnC,CAAC,CAAC,QAAQ,EACV,oDAAoD,CACrD,EACD,UAAU,SAAS,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,EAE9C,KAAK,EAAE,UAAU,GAChB,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA"}
package/useArrayField.js CHANGED
@@ -21,36 +21,36 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
21
21
  function useArrayFieldBase(field) {
22
22
  var _useFormContext = (0, _useFormContext3.useFormContext)(),
23
23
  arrayActions = _useFormContext.arrayActions,
24
+ setParsedValue = _useFormContext.setParsedValue,
24
25
  setValue = _useFormContext.setValue,
25
- setRawValue = _useFormContext.setRawValue,
26
26
  setMeta = _useFormContext.setMeta,
27
27
  selectFormValues = _useFormContext.selectFormValues,
28
28
  selectFieldErrorMap = _useFormContext.selectFieldErrorMap;
29
29
  var useFormSelector = _useFormSelector2.useFormSelector;
30
30
  var valuesSelector = _react["default"].useMemo(function () {
31
31
  return (0, _reselect.createSelector)([selectFormValues], (0, _reselect.createSelector)([(0, _reselect.createStructuredSelector)({
32
- value: function value(_ref) {
33
- var values = _ref.values;
34
- return (0, _get.get)(values, field.path);
32
+ parsedValue: function parsedValue(_ref) {
33
+ var parsedValues = _ref.parsedValues;
34
+ return (0, _get.get)(parsedValues, field.path);
35
35
  },
36
- rawValue: function rawValue(_ref2) {
37
- var rawValues = _ref2.rawValues;
38
- return (0, _get.get)(rawValues, field.path);
36
+ value: function value(_ref2) {
37
+ var values = _ref2.values;
38
+ return (0, _get.get)(values, field.path);
39
39
  },
40
- initialValue: function initialValue(_ref3) {
41
- var initialValues = _ref3.initialValues;
42
- return (0, _get.get)(initialValues, field.path);
40
+ initialParsedValue: function initialParsedValue(_ref3) {
41
+ var initialParsedValues = _ref3.initialParsedValues;
42
+ return (0, _get.get)(initialParsedValues, field.path);
43
43
  }
44
44
  })], function (_ref4) {
45
- var rawValue = _ref4.rawValue,
46
- value = _ref4.value,
47
- initialValue = _ref4.initialValue;
48
- var dirty = !(0, _fastDeepEqual["default"])(value, initialValue);
45
+ var value = _ref4.value,
46
+ parsedValue = _ref4.parsedValue,
47
+ initialParsedValue = _ref4.initialParsedValue;
48
+ var dirty = !(0, _fastDeepEqual["default"])(parsedValue, initialParsedValue);
49
49
  var pristine = !dirty;
50
50
  return {
51
51
  dirty: dirty,
52
52
  pristine: pristine,
53
- length: Array.isArray(rawValue) ? rawValue.length : 0
53
+ length: Array.isArray(value) ? value.length : 0
54
54
  };
55
55
  }));
56
56
  }, [field.pathstring]);
@@ -69,8 +69,8 @@ function useArrayFieldBase(field) {
69
69
  });
70
70
  var boundActions = _react["default"].useMemo(function () {
71
71
  return (0, _bindActionsToField.bindActionsToField)(_objectSpread(_objectSpread({}, arrayActions), {}, {
72
+ setParsedValue: setParsedValue,
72
73
  setValue: setValue,
73
- setRawValue: setRawValue,
74
74
  setMeta: setMeta
75
75
  }), field);
76
76
  }, [field.pathstring]);
@@ -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","setValue","setRawValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","value","_ref","values","get","path","rawValue","_ref2","rawValues","initialValue","_ref3","initialValues","_ref4","dirty","isEqual","pristine","Array","isArray","pathstring","_useFormSelector","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","elements","_toConsumableArray2","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","_useFormContext2","root","FieldPath"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForRawValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setValue } from './actions/setValue'\nimport { setRawValue } from './actions/setRawValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\n\nexport type UseArrayFieldProps<Field extends FieldPath> = NonNullable<\n z.input<Field['schema']>\n> extends any[]\n ? FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n typeof arrayActions & {\n setValue: typeof setValue\n setRawValue: typeof setRawValue\n setMeta: typeof setMeta\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForRawValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setValue,\n setRawValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as z.output<T> | undefined,\n rawValue: ({ rawValues }) =>\n get(rawValues, field.path) as unknown,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as z.output<T> | undefined,\n }),\n ],\n ({ rawValue, value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(rawValue) ? rawValue.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setValue, setRawValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () => [...new Array(length).keys()].map((index) => field.subfield(index)),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n 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","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","_ref4","dirty","isEqual","pristine","Array","isArray","pathstring","_useFormSelector","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","elements","_toConsumableArray2","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","_useFormContext2","root","FieldPath"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, 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 } 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> = NonNullable<\n z.input<Field['schema']>\n> extends any[]\n ? FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n typeof arrayActions & {\n setParsedValue: typeof setParsedValue\n setValue: typeof setValue\n setMeta: typeof setMeta\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type 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\n | DeepPartial<z.output<T>>\n | 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 }),\n ],\n ({ value, parsedValue, initialParsedValue }) => {\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 () => [...new Array(length).keys()].map((index) => field.subfield(index)),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n 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
@@ -10,34 +10,34 @@ import { shallowEqual } from 'react-redux';
10
10
  function useArrayFieldBase(field) {
11
11
  const {
12
12
  arrayActions,
13
+ setParsedValue,
13
14
  setValue,
14
- setRawValue,
15
15
  setMeta,
16
16
  selectFormValues,
17
17
  selectFieldErrorMap
18
18
  } = useFormContext();
19
19
  const useFormSelector = untypedUseFormSelector;
20
20
  const valuesSelector = React.useMemo(() => createSelector([selectFormValues], createSelector([createStructuredSelector({
21
+ parsedValue: ({
22
+ parsedValues
23
+ }) => get(parsedValues, field.path),
21
24
  value: ({
22
25
  values
23
26
  }) => get(values, field.path),
24
- rawValue: ({
25
- rawValues
26
- }) => get(rawValues, field.path),
27
- initialValue: ({
28
- initialValues
29
- }) => get(initialValues, field.path)
27
+ initialParsedValue: ({
28
+ initialParsedValues
29
+ }) => get(initialParsedValues, field.path)
30
30
  })], ({
31
- rawValue,
32
31
  value,
33
- initialValue
32
+ parsedValue,
33
+ initialParsedValue
34
34
  }) => {
35
- const dirty = !isEqual(value, initialValue);
35
+ const dirty = !isEqual(parsedValue, initialParsedValue);
36
36
  const pristine = !dirty;
37
37
  return {
38
38
  dirty,
39
39
  pristine,
40
- length: Array.isArray(rawValue) ? rawValue.length : 0
40
+ length: Array.isArray(value) ? value.length : 0
41
41
  };
42
42
  })), [field.pathstring]);
43
43
  const {
@@ -50,8 +50,8 @@ function useArrayFieldBase(field) {
50
50
  const submitFailed = useFormSelector(state => state.submitFailed);
51
51
  const boundActions = React.useMemo(() => bindActionsToField({
52
52
  ...arrayActions,
53
+ setParsedValue,
53
54
  setValue,
54
- setRawValue,
55
55
  setMeta
56
56
  }, field), [field.pathstring]);
57
57
  const elements = React.useMemo(() => [...new Array(length).keys()].map(index => field.subfield(index)), [length]);
@@ -1 +1 @@
1
- {"version":3,"file":"useArrayField.mjs","names":["FieldPath","React","useFormContext","bindActionsToField","createSelector","createStructuredSelector","get","isEqual","useFormSelector","untypedUseFormSelector","shallowEqual","useArrayFieldBase","field","arrayActions","setValue","setRawValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","value","values","path","rawValue","rawValues","initialValue","initialValues","dirty","pristine","length","Array","isArray","pathstring","error","state","meta","fieldMeta","submitFailed","boundActions","elements","keys","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","root"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForRawValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setValue } from './actions/setValue'\nimport { setRawValue } from './actions/setRawValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\n\nexport type UseArrayFieldProps<Field extends FieldPath> = NonNullable<\n z.input<Field['schema']>\n> extends any[]\n ? FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n typeof arrayActions & {\n setValue: typeof setValue\n setRawValue: typeof setRawValue\n setMeta: typeof setMeta\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForRawValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setValue,\n setRawValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as z.output<T> | undefined,\n rawValue: ({ rawValues }) =>\n get(rawValues, field.path) as unknown,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as z.output<T> | undefined,\n }),\n ],\n ({ rawValue, value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(rawValue) ? rawValue.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setValue, setRawValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () => [...new Array(length).keys()].map((index) => field.subfield(index)),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n 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;AAwC1C,SAASC,iBAAiBA,CACxBC,KAAY,EACe;EAG3B,MAAM;IACJC,YAAY;IACZC,QAAQ;IACRC,WAAW;IACXC,OAAO;IACPC,gBAAgB;IAChBC;EACF,CAAC,GAAGhB,cAAc,CAAI,CAAC;EAEvB,MAAMM,eAAe,GAAGC,sBAAiD;EAEzE,MAAMU,cAAc,GAAGlB,KAAK,CAACmB,OAAO,CAClC,MACEhB,cAAc,CACZ,CAACa,gBAAgB,CAAC,EAClBb,cAAc,CACZ,CACEC,wBAAwB,CAAC;IACvBgB,KAAK,EAAEA,CAAC;MAAEC;IAAO,CAAC,KAChBhB,GAAG,CAACgB,MAAM,EAAEV,KAAK,CAACW,IAAI,CAA4B;IACpDC,QAAQ,EAAEA,CAAC;MAAEC;IAAU,CAAC,KACtBnB,GAAG,CAACmB,SAAS,EAAEb,KAAK,CAACW,IAAI,CAAY;IACvCG,YAAY,EAAEA,CAAC;MAAEC;IAAc,CAAC,KAC9BrB,GAAG,CAACqB,aAAa,EAAEf,KAAK,CAACW,IAAI;EACjC,CAAC,CAAC,CACH,EACD,CAAC;IAAEC,QAAQ;IAAEH,KAAK;IAAEK;EAAa,CAAC,KAAK;IACrC,MAAME,KAAK,GAAG,CAACrB,OAAO,CAACc,KAAK,EAAEK,YAAY,CAAC;IAC3C,MAAMG,QAAQ,GAAG,CAACD,KAAK;IACvB,OAAO;MACLA,KAAK;MACLC,QAAQ;MACRC,MAAM,EAAEC,KAAK,CAACC,OAAO,CAACR,QAAQ,CAAC,GAAGA,QAAQ,CAACM,MAAM,GAAG;IACtD,CAAC;EACH,CACF,CACF,CAAC,EACH,CAAClB,KAAK,CAACqB,UAAU,CACnB,CAAC;EAED,MAAM;IAAEL,KAAK;IAAEC,QAAQ;IAAEC;EAAO,CAAC,GAAGtB,eAAe,CACjDW,cAAc,EACdT,YACF,CAAC;EAED,MAAMwB,KAAK,GAAG1B,eAAe,CAC1B2B,KAAK,IAAKjB,mBAAmB,CAACiB,KAAK,CAAC,CAACvB,KAAK,CAACqB,UAAU,CACxD,CAAC;EACD,MAAMG,IAAI,GAAG5B,eAAe,CAAE2B,KAAK,IAAKA,KAAK,CAACE,SAAS,CAACzB,KAAK,CAACqB,UAAU,CAAC,CAAC;EAC1E,MAAMK,YAAY,GAAG9B,eAAe,CAAE2B,KAAK,IAAKA,KAAK,CAACG,YAAY,CAAC;EAEnE,MAAMC,YAAY,GAAGtC,KAAK,CAACmB,OAAO,CAChC,MACEjB,kBAAkB,CAChB;IAAE,GAAGU,YAAY;IAAEC,QAAQ;IAAEC,WAAW;IAAEC;EAAQ,CAAC,EACnDJ,KACF,CAAC,EACH,CAACA,KAAK,CAACqB,UAAU,CACnB,CAAC;EACD,MAAMO,QAAQ,GAAGvC,KAAK,CAACmB,OAAO,CAC5B,MAAM,CAAC,GAAG,IAAIW,KAAK,CAACD,MAAM,CAAC,CAACW,IAAI,CAAC,CAAC,CAAC,CAACC,GAAG,CAAEC,KAAK,IAAK/B,KAAK,CAACgC,QAAQ,CAACD,KAAK,CAAC,CAAC,EACzE,CAACb,MAAM,CACT,CAAC;EAED,OAAO7B,KAAK,CAACmB,OAAO,CAClB,OAAO;IACL,GAAGmB,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;IACtCJ,KAAK;IACLM,QAAQ;IACRZ,KAAK;IACLC,QAAQ;IACRkB,KAAK,EAAE,CAACb,KAAK;IACbc,OAAO,EAAEC,OAAO,CAACf,KAAK;EACxB,CAAC,CAAC,EACF,CAACN,KAAK,EAAEW,YAAY,EAAEC,QAAQ,EAAEJ,IAAI,EAAEE,YAAY,EAAEJ,KAAK,CAC3D,CAAC;AACH;AAqBA,OAAO,SAASgB,aAAaA,CAC3BtC,KAAoC,EACS;EAC7C,MAAM;IAAEuC;EAAK,CAAC,GAAGjD,cAAc,CAAI,CAAC;EACpC,OAAOS,iBAAiB,CACtBC,KAAK,YAAYZ,SAAS,GAAGY,KAAK,GAAGuC,IAAI,CAAC7C,GAAG,CAACM,KAAY,CAC5D,CAAC;AACH","ignoreList":[]}
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","parsedValue","parsedValues","path","value","values","initialParsedValue","initialParsedValues","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 } 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> = NonNullable<\n z.input<Field['schema']>\n> extends any[]\n ? FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n typeof arrayActions & {\n setParsedValue: typeof setParsedValue\n setValue: typeof setValue\n setMeta: typeof setMeta\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type 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\n | DeepPartial<z.output<T>>\n | 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 }),\n ],\n ({ value, parsedValue, initialParsedValue }) => {\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 () => [...new Array(length).keys()].map((index) => field.subfield(index)),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n 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/useField.d.ts CHANGED
@@ -1,22 +1,23 @@
1
1
  import z from 'zod';
2
2
  import { FieldPath } from './FieldPath';
3
3
  import { FieldMeta } from './FormState';
4
+ import { setParsedValue } from './actions/setParsedValue';
4
5
  import { setValue } from './actions/setValue';
5
- import { setRawValue } from './actions/setRawValue';
6
6
  import { setMeta } from './actions/setMeta';
7
7
  import { PathInSchema, PathstringInSchema } from './util/PathInSchema';
8
8
  import { parsePathstring } from './util/parsePathstring';
9
9
  import { SchemaAt } from './util/SchemaAt';
10
10
  import { bindActionsToField } from './util/bindActionsToField';
11
+ import { DeepPartial } from './util/DeepPartial';
11
12
  export type UseFieldProps<Field extends FieldPath> = FieldMeta & ReturnType<typeof bindActionsToField<{
13
+ setParsedValue: typeof setParsedValue;
12
14
  setValue: typeof setValue;
13
- setRawValue: typeof setRawValue;
14
15
  setMeta: typeof setMeta;
15
16
  }>> & {
16
- value: z.output<Field['schema']> | undefined;
17
- rawValue: unknown;
18
- initialValue: z.output<Field['schema']> | undefined;
19
- rawInitialValue: unknown;
17
+ parsedValue: DeepPartial<z.output<Field['schema']>> | undefined;
18
+ value: DeepPartial<z.input<Field['schema']>> | undefined;
19
+ initialParsedValue: DeepPartial<z.output<Field['schema']>> | undefined;
20
+ initialValue: DeepPartial<z.input<Field['schema']>> | undefined;
20
21
  error?: string;
21
22
  dirty: boolean;
22
23
  pristine: boolean;