@jcoreio/zod-forms 1.2.1 → 2.0.0-beta.2

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 (257) hide show
  1. package/FieldPath.d.ts +2 -2
  2. package/FieldPath.d.ts.map +1 -1
  3. package/FieldPath.js.map +1 -1
  4. package/FieldPath.mjs.map +1 -1
  5. package/FormAction.d.ts +2 -2
  6. package/FormAction.d.ts.map +1 -1
  7. package/FormAction.js.map +1 -1
  8. package/FormAction.mjs.map +1 -1
  9. package/FormContext.d.ts +7 -6
  10. package/FormContext.d.ts.map +1 -1
  11. package/FormContext.js.map +1 -1
  12. package/FormContext.mjs.map +1 -1
  13. package/FormState.d.ts +10 -8
  14. package/FormState.d.ts.map +1 -1
  15. package/FormState.js.map +1 -1
  16. package/FormState.mjs.map +1 -1
  17. package/README.md +2 -2
  18. package/actions/arrayActions.d.ts +40 -39
  19. package/actions/arrayActions.d.ts.map +1 -1
  20. package/actions/arrayActions.js +37 -37
  21. package/actions/arrayActions.js.map +1 -1
  22. package/actions/arrayActions.mjs +29 -29
  23. package/actions/arrayActions.mjs.map +1 -1
  24. package/actions/initialize.d.ts +5 -4
  25. package/actions/initialize.d.ts.map +1 -1
  26. package/actions/initialize.js.map +1 -1
  27. package/actions/initialize.mjs.map +1 -1
  28. package/actions/setParsedValue.d.ts +12 -0
  29. package/actions/setParsedValue.d.ts.map +1 -0
  30. package/{reducers/setRawValue.js → actions/setParsedValue.js} +9 -26
  31. package/actions/setParsedValue.js.map +1 -0
  32. package/actions/setParsedValue.mjs +9 -0
  33. package/actions/setParsedValue.mjs.map +1 -0
  34. package/actions/setSubmitStatus.d.ts +3 -3
  35. package/actions/setSubmitStatus.d.ts.map +1 -1
  36. package/actions/setSubmitStatus.js.map +1 -1
  37. package/actions/setSubmitStatus.mjs.map +1 -1
  38. package/actions/setValue.d.ts +3 -5
  39. package/actions/setValue.d.ts.map +1 -1
  40. package/actions/setValue.js +3 -7
  41. package/actions/setValue.js.map +1 -1
  42. package/actions/setValue.mjs +2 -3
  43. package/actions/setValue.mjs.map +1 -1
  44. package/createFormMiddleware.d.ts.map +1 -1
  45. package/createFormMiddleware.js +7 -5
  46. package/createFormMiddleware.js.map +1 -1
  47. package/createFormMiddleware.mjs +7 -5
  48. package/createFormMiddleware.mjs.map +1 -1
  49. package/createFormProvider.d.ts.map +1 -1
  50. package/createFormProvider.js +10 -10
  51. package/createFormProvider.js.map +1 -1
  52. package/createFormProvider.mjs +7 -7
  53. package/createFormProvider.mjs.map +1 -1
  54. package/createFormReducer.js +17 -17
  55. package/createFormReducer.js.map +1 -1
  56. package/createFormReducer.mjs +17 -17
  57. package/createFormReducer.mjs.map +1 -1
  58. package/createSelectFormStatus.d.ts +1 -1
  59. package/createSelectFormStatus.d.ts.map +1 -1
  60. package/createSelectFormStatus.js +6 -6
  61. package/createSelectFormStatus.js.map +1 -1
  62. package/createSelectFormStatus.mjs +1 -1
  63. package/createSelectFormStatus.mjs.map +1 -1
  64. package/createSelectFormValues.d.ts +19 -19
  65. package/createSelectFormValues.d.ts.map +1 -1
  66. package/createSelectFormValues.js +5 -5
  67. package/createSelectFormValues.js.map +1 -1
  68. package/createSelectFormValues.mjs +3 -3
  69. package/createSelectFormValues.mjs.map +1 -1
  70. package/createZodForm.d.ts +4 -4
  71. package/index.d.ts +1 -1
  72. package/index.d.ts.map +1 -1
  73. package/index.js.map +1 -1
  74. package/index.mjs.map +1 -1
  75. package/initFormState.js +1 -1
  76. package/initFormState.js.map +1 -1
  77. package/initFormState.mjs +1 -1
  78. package/initFormState.mjs.map +1 -1
  79. package/package.json +4 -1
  80. package/reducers/addHandlers.d.ts +6 -6
  81. package/reducers/arrayInsert.d.ts.map +1 -1
  82. package/reducers/arrayInsert.js +10 -4
  83. package/reducers/arrayInsert.js.map +1 -1
  84. package/reducers/arrayInsert.mjs +6 -4
  85. package/reducers/arrayInsert.mjs.map +1 -1
  86. package/reducers/arrayInsertParsed.d.ts +7 -0
  87. package/reducers/arrayInsertParsed.d.ts.map +1 -0
  88. package/reducers/arrayInsertParsed.js +16 -0
  89. package/reducers/arrayInsertParsed.js.map +1 -0
  90. package/reducers/arrayInsertParsed.mjs +12 -0
  91. package/reducers/arrayInsertParsed.mjs.map +1 -0
  92. package/reducers/arrayPush.d.ts.map +1 -1
  93. package/reducers/arrayPush.js +6 -4
  94. package/reducers/arrayPush.js.map +1 -1
  95. package/reducers/arrayPush.mjs +2 -4
  96. package/reducers/arrayPush.mjs.map +1 -1
  97. package/reducers/arrayPushParsed.d.ts +7 -0
  98. package/reducers/{arrayUnshiftRaw.d.ts.map → arrayPushParsed.d.ts.map} +1 -1
  99. package/reducers/arrayPushParsed.js +15 -0
  100. package/reducers/arrayPushParsed.js.map +1 -0
  101. package/reducers/arrayPushParsed.mjs +11 -0
  102. package/reducers/arrayPushParsed.mjs.map +1 -0
  103. package/reducers/arraySplice.d.ts.map +1 -1
  104. package/reducers/arraySplice.js +12 -6
  105. package/reducers/arraySplice.js.map +1 -1
  106. package/reducers/arraySplice.mjs +9 -5
  107. package/reducers/arraySplice.mjs.map +1 -1
  108. package/reducers/arraySpliceParsed.d.ts +7 -0
  109. package/reducers/arraySpliceParsed.d.ts.map +1 -0
  110. package/reducers/arraySpliceParsed.js +20 -0
  111. package/reducers/arraySpliceParsed.js.map +1 -0
  112. package/reducers/arraySpliceParsed.mjs +14 -0
  113. package/reducers/arraySpliceParsed.mjs.map +1 -0
  114. package/reducers/arrayUnshift.d.ts.map +1 -1
  115. package/reducers/arrayUnshift.js +6 -4
  116. package/reducers/arrayUnshift.js.map +1 -1
  117. package/reducers/arrayUnshift.mjs +2 -4
  118. package/reducers/arrayUnshift.mjs.map +1 -1
  119. package/reducers/arrayUnshiftParsed.d.ts +7 -0
  120. package/reducers/arrayUnshiftParsed.d.ts.map +1 -0
  121. package/reducers/arrayUnshiftParsed.js +15 -0
  122. package/reducers/arrayUnshiftParsed.js.map +1 -0
  123. package/reducers/arrayUnshiftParsed.mjs +11 -0
  124. package/reducers/arrayUnshiftParsed.mjs.map +1 -0
  125. package/reducers/initialize.d.ts +12 -12
  126. package/reducers/initialize.d.ts.map +1 -1
  127. package/reducers/initialize.js +9 -9
  128. package/reducers/initialize.js.map +1 -1
  129. package/reducers/initialize.mjs +8 -8
  130. package/reducers/initialize.mjs.map +1 -1
  131. package/reducers/removeHandlers.d.ts +6 -6
  132. package/reducers/setParsedValue.d.ts +47 -0
  133. package/reducers/setParsedValue.d.ts.map +1 -0
  134. package/reducers/setParsedValue.js +41 -0
  135. package/reducers/setParsedValue.js.map +1 -0
  136. package/reducers/setParsedValue.mjs +32 -0
  137. package/reducers/setParsedValue.mjs.map +1 -0
  138. package/reducers/setSubmitStatus.d.ts +6 -6
  139. package/reducers/setValue.d.ts +9 -10
  140. package/reducers/setValue.d.ts.map +1 -1
  141. package/reducers/setValue.js +9 -15
  142. package/reducers/setValue.js.map +1 -1
  143. package/reducers/setValue.mjs +9 -15
  144. package/reducers/setValue.mjs.map +1 -1
  145. package/reducers/submitSucceeded.d.ts +6 -6
  146. package/reducers/submitSucceeded.js +2 -2
  147. package/reducers/submitSucceeded.js.map +1 -1
  148. package/reducers/submitSucceeded.mjs +2 -2
  149. package/reducers/submitSucceeded.mjs.map +1 -1
  150. package/reducers/util/updateRawArray.d.ts +2 -2
  151. package/reducers/util/updateRawArray.d.ts.map +1 -1
  152. package/reducers/util/updateRawArray.js +3 -3
  153. package/reducers/util/updateRawArray.js.map +1 -1
  154. package/reducers/util/updateRawArray.mjs +3 -3
  155. package/reducers/util/updateRawArray.mjs.map +1 -1
  156. package/src/FieldPath.ts +3 -5
  157. package/src/FormAction.ts +2 -2
  158. package/src/FormContext.ts +7 -6
  159. package/src/FormState.ts +12 -8
  160. package/src/actions/arrayActions.ts +66 -58
  161. package/src/actions/initialize.ts +3 -2
  162. package/src/actions/setParsedValue.ts +21 -0
  163. package/src/actions/setSubmitStatus.ts +1 -1
  164. package/src/actions/setValue.ts +2 -5
  165. package/src/createFormMiddleware.ts +5 -3
  166. package/src/createFormProvider.tsx +12 -9
  167. package/src/createFormReducer.ts +17 -17
  168. package/src/createSelectFormStatus.ts +5 -5
  169. package/src/createSelectFormValues.ts +2 -2
  170. package/src/index.ts +1 -1
  171. package/src/initFormState.ts +1 -1
  172. package/src/reducers/arrayInsert.ts +9 -6
  173. package/src/reducers/arrayInsertParsed.ts +19 -0
  174. package/src/reducers/arrayPush.ts +5 -7
  175. package/src/reducers/arrayPushParsed.ts +23 -0
  176. package/src/reducers/arraySplice.ts +18 -5
  177. package/src/reducers/arraySpliceParsed.ts +17 -0
  178. package/src/reducers/arrayUnshift.ts +6 -4
  179. package/src/reducers/arrayUnshiftParsed.ts +16 -0
  180. package/src/reducers/initialize.ts +10 -8
  181. package/src/reducers/setParsedValue.ts +61 -0
  182. package/src/reducers/setValue.ts +12 -21
  183. package/src/reducers/submitSucceeded.ts +1 -1
  184. package/src/reducers/util/updateRawArray.ts +5 -5
  185. package/src/useArrayField.ts +13 -12
  186. package/src/useField.ts +26 -24
  187. package/src/useHtmlField.ts +42 -42
  188. package/src/useInitialize.ts +1 -1
  189. package/src/util/maybeParse.ts +2 -2
  190. package/useArrayField.d.ts +4 -4
  191. package/useArrayField.d.ts.map +1 -1
  192. package/useArrayField.js +8 -13
  193. package/useArrayField.js.map +1 -1
  194. package/useArrayField.mjs +3 -7
  195. package/useArrayField.mjs.map +1 -1
  196. package/useField.d.ts +7 -6
  197. package/useField.d.ts.map +1 -1
  198. package/useField.js +24 -24
  199. package/useField.js.map +1 -1
  200. package/useField.mjs +18 -18
  201. package/useField.mjs.map +1 -1
  202. package/useFormValues.d.ts +4 -4
  203. package/useHtmlField.js +40 -40
  204. package/useHtmlField.js.map +1 -1
  205. package/useHtmlField.mjs +36 -36
  206. package/useHtmlField.mjs.map +1 -1
  207. package/useInitialize.d.ts.map +1 -1
  208. package/useInitialize.js +1 -1
  209. package/useInitialize.js.map +1 -1
  210. package/useInitialize.mjs +1 -1
  211. package/useInitialize.mjs.map +1 -1
  212. package/util/maybeParse.d.ts +1 -1
  213. package/util/maybeParse.d.ts.map +1 -1
  214. package/util/maybeParse.js +2 -2
  215. package/util/maybeParse.js.map +1 -1
  216. package/util/maybeParse.mjs +2 -2
  217. package/util/maybeParse.mjs.map +1 -1
  218. package/actions/setRawValue.d.ts +0 -9
  219. package/actions/setRawValue.d.ts.map +0 -1
  220. package/actions/setRawValue.js +0 -14
  221. package/actions/setRawValue.js.map +0 -1
  222. package/actions/setRawValue.mjs +0 -8
  223. package/actions/setRawValue.mjs.map +0 -1
  224. package/reducers/arrayInsertRaw.d.ts +0 -7
  225. package/reducers/arrayInsertRaw.d.ts.map +0 -1
  226. package/reducers/arrayInsertRaw.js +0 -22
  227. package/reducers/arrayInsertRaw.js.map +0 -1
  228. package/reducers/arrayInsertRaw.mjs +0 -14
  229. package/reducers/arrayInsertRaw.mjs.map +0 -1
  230. package/reducers/arrayPushRaw.d.ts +0 -7
  231. package/reducers/arrayPushRaw.d.ts.map +0 -1
  232. package/reducers/arrayPushRaw.js +0 -17
  233. package/reducers/arrayPushRaw.js.map +0 -1
  234. package/reducers/arrayPushRaw.mjs +0 -9
  235. package/reducers/arrayPushRaw.mjs.map +0 -1
  236. package/reducers/arraySpliceRaw.d.ts +0 -7
  237. package/reducers/arraySpliceRaw.d.ts.map +0 -1
  238. package/reducers/arraySpliceRaw.js +0 -26
  239. package/reducers/arraySpliceRaw.js.map +0 -1
  240. package/reducers/arraySpliceRaw.mjs +0 -18
  241. package/reducers/arraySpliceRaw.mjs.map +0 -1
  242. package/reducers/arrayUnshiftRaw.d.ts +0 -7
  243. package/reducers/arrayUnshiftRaw.js +0 -17
  244. package/reducers/arrayUnshiftRaw.js.map +0 -1
  245. package/reducers/arrayUnshiftRaw.mjs +0 -9
  246. package/reducers/arrayUnshiftRaw.mjs.map +0 -1
  247. package/reducers/setRawValue.d.ts +0 -27
  248. package/reducers/setRawValue.d.ts.map +0 -1
  249. package/reducers/setRawValue.js.map +0 -1
  250. package/reducers/setRawValue.mjs +0 -26
  251. package/reducers/setRawValue.mjs.map +0 -1
  252. package/src/actions/setRawValue.ts +0 -17
  253. package/src/reducers/arrayInsertRaw.ts +0 -22
  254. package/src/reducers/arrayPushRaw.ts +0 -18
  255. package/src/reducers/arraySpliceRaw.ts +0 -30
  256. package/src/reducers/arrayUnshiftRaw.ts +0 -18
  257. package/src/reducers/setRawValue.ts +0 -40
@@ -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":"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"}
package/useArrayField.js CHANGED
@@ -21,8 +21,8 @@ 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;
@@ -33,24 +33,19 @@ function useArrayFieldBase(field) {
33
33
  var values = _ref.values;
34
34
  return (0, _get.get)(values, field.path);
35
35
  },
36
- rawValue: function rawValue(_ref2) {
37
- var rawValues = _ref2.rawValues;
38
- return (0, _get.get)(rawValues, field.path);
39
- },
40
- initialValue: function initialValue(_ref3) {
41
- var initialValues = _ref3.initialValues;
36
+ initialValue: function initialValue(_ref2) {
37
+ var initialValues = _ref2.initialValues;
42
38
  return (0, _get.get)(initialValues, field.path);
43
39
  }
44
- })], function (_ref4) {
45
- var rawValue = _ref4.rawValue,
46
- value = _ref4.value,
47
- initialValue = _ref4.initialValue;
40
+ })], function (_ref3) {
41
+ var value = _ref3.value,
42
+ initialValue = _ref3.initialValue;
48
43
  var dirty = !(0, _fastDeepEqual["default"])(value, initialValue);
49
44
  var pristine = !dirty;
50
45
  return {
51
46
  dirty: dirty,
52
47
  pristine: pristine,
53
- length: Array.isArray(rawValue) ? rawValue.length : 0
48
+ length: Array.isArray(value) ? value.length : 0
54
49
  };
55
50
  }));
56
51
  }, [field.pathstring]);
@@ -69,8 +64,8 @@ function useArrayFieldBase(field) {
69
64
  });
70
65
  var boundActions = _react["default"].useMemo(function () {
71
66
  return (0, _bindActionsToField.bindActionsToField)(_objectSpread(_objectSpread({}, arrayActions), {}, {
67
+ setParsedValue: setParsedValue,
72
68
  setValue: setValue,
73
- setRawValue: setRawValue,
74
69
  setMeta: setMeta
75
70
  }), field);
76
71
  }, [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":";;;;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AAIA,IAAAI,mBAAA,GAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,IAAA,GAAAN,OAAA;AACA,IAAAO,cAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,iBAAA,GAAAR,OAAA;AAIA,IAAAS,WAAA,GAAAT,OAAA;AAA0C,SAAAU,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAwC1C,SAASoB,iBAAiBA,CACxBC,KAAY,EACe;EAG3B,IAAAC,eAAA,GAOI,IAAAC,+BAAc,EAAI,CAAC;IANrBC,YAAY,GAAAF,eAAA,CAAZE,YAAY;IACZC,QAAQ,GAAAH,eAAA,CAARG,QAAQ;IACRC,WAAW,GAAAJ,eAAA,CAAXI,WAAW;IACXC,OAAO,GAAAL,eAAA,CAAPK,OAAO;IACPC,gBAAgB,GAAAN,eAAA,CAAhBM,gBAAgB;IAChBC,mBAAmB,GAAAP,eAAA,CAAnBO,mBAAmB;EAGrB,IAAMC,eAAe,GAAGC,iCAAiD;EAEzE,IAAMC,cAAc,GAAGC,iBAAK,CAACC,OAAO,CAClC;IAAA,OACE,IAAAC,wBAAc,EACZ,CAACP,gBAAgB,CAAC,EAClB,IAAAO,wBAAc,EACZ,CACE,IAAAC,kCAAwB,EAAC;MACvBC,KAAK,EAAE,SAAAA,MAAAC,IAAA;QAAA,IAAGC,MAAM,GAAAD,IAAA,CAANC,MAAM;QAAA,OACd,IAAAC,QAAG,EAACD,MAAM,EAAElB,KAAK,CAACoB,IAAI,CAAC;MAAA,CAA2B;MACpDC,QAAQ,EAAE,SAAAA,SAAAC,KAAA;QAAA,IAAGC,SAAS,GAAAD,KAAA,CAATC,SAAS;QAAA,OACpB,IAAAJ,QAAG,EAACI,SAAS,EAAEvB,KAAK,CAACoB,IAAI,CAAC;MAAA,CAAW;MACvCI,YAAY,EAAE,SAAAA,aAAAC,KAAA;QAAA,IAAGC,aAAa,GAAAD,KAAA,CAAbC,aAAa;QAAA,OAC5B,IAAAP,QAAG,EAACO,aAAa,EAAE1B,KAAK,CAACoB,IAAI,CAAC;MAAA;IAClC,CAAC,CAAC,CACH,EACD,UAAAO,KAAA,EAAuC;MAAA,IAApCN,QAAQ,GAAAM,KAAA,CAARN,QAAQ;QAAEL,KAAK,GAAAW,KAAA,CAALX,KAAK;QAAEQ,YAAY,GAAAG,KAAA,CAAZH,YAAY;MAC9B,IAAMI,KAAK,GAAG,CAAC,IAAAC,yBAAO,EAACb,KAAK,EAAEQ,YAAY,CAAC;MAC3C,IAAMM,QAAQ,GAAG,CAACF,KAAK;MACvB,OAAO;QACLA,KAAK,EAALA,KAAK;QACLE,QAAQ,EAARA,QAAQ;QACRrC,MAAM,EAAEsC,KAAK,CAACC,OAAO,CAACX,QAAQ,CAAC,GAAGA,QAAQ,CAAC5B,MAAM,GAAG;MACtD,CAAC;IACH,CACF,CACF,CAAC;EAAA,GACH,CAACO,KAAK,CAACiC,UAAU,CACnB,CAAC;EAED,IAAAC,gBAAA,GAAoCzB,eAAe,CACjDE,cAAc,EACdwB,wBACF,CAAC;IAHOP,KAAK,GAAAM,gBAAA,CAALN,KAAK;IAAEE,QAAQ,GAAAI,gBAAA,CAARJ,QAAQ;IAAErC,MAAM,GAAAyC,gBAAA,CAANzC,MAAM;EAK/B,IAAM2C,KAAK,GAAG3B,eAAe,CAC3B,UAAC4B,KAAK;IAAA,OAAK7B,mBAAmB,CAAC6B,KAAK,CAAC,CAACrC,KAAK,CAACiC,UAAU,CAAC;EAAA,CACzD,CAAC;EACD,IAAMK,IAAI,GAAG7B,eAAe,CAAC,UAAC4B,KAAK;IAAA,OAAKA,KAAK,CAACE,SAAS,CAACvC,KAAK,CAACiC,UAAU,CAAC;EAAA,EAAC;EAC1E,IAAMO,YAAY,GAAG/B,eAAe,CAAC,UAAC4B,KAAK;IAAA,OAAKA,KAAK,CAACG,YAAY;EAAA,EAAC;EAEnE,IAAMC,YAAY,GAAG7B,iBAAK,CAACC,OAAO,CAChC;IAAA,OACE,IAAA6B,sCAAkB,EAAAnD,aAAA,CAAAA,aAAA,KACXY,YAAY;MAAEC,QAAQ,EAARA,QAAQ;MAAEC,WAAW,EAAXA,WAAW;MAAEC,OAAO,EAAPA;IAAO,IACjDN,KACF,CAAC;EAAA,GACH,CAACA,KAAK,CAACiC,UAAU,CACnB,CAAC;EACD,IAAMU,QAAQ,GAAG/B,iBAAK,CAACC,OAAO,CAC5B;IAAA,OAAM,IAAA+B,mBAAA,aAAI,IAAIb,KAAK,CAACtC,MAAM,CAAC,CAACV,IAAI,CAAC,CAAC,EAAE8D,GAAG,CAAC,UAACC,KAAK;MAAA,OAAK9C,KAAK,CAAC+C,QAAQ,CAACD,KAAK,CAAC;IAAA,EAAC;EAAA,GACzE,CAACrD,MAAM,CACT,CAAC;EAED,OAAOmB,iBAAK,CAACC,OAAO,CAClB;IAAA,OAAAtB,aAAA,CAAAA,aAAA,KACKkD,YAAY;MACfO,OAAO,EAAE,CAAAV,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEU,OAAO,KAAI,KAAK;MAC/BC,OAAO,EAAE,CAAAX,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEW,OAAO,KAAIT,YAAY;MACtCJ,KAAK,EAALA,KAAK;MACLO,QAAQ,EAARA,QAAQ;MACRf,KAAK,EAALA,KAAK;MACLE,QAAQ,EAARA,QAAQ;MACRoB,KAAK,EAAE,CAACd,KAAK;MACbe,OAAO,EAAEC,OAAO,CAAChB,KAAK;IAAC;EAAA,CACvB,EACF,CAACR,KAAK,EAAEa,YAAY,EAAEE,QAAQ,EAAEL,IAAI,EAAEE,YAAY,EAAEJ,KAAK,CAC3D,CAAC;AACH;AAqBO,SAASiB,aAAaA,CAC3BrD,KAAoC,EACS;EAC7C,IAAAsD,gBAAA,GAAiB,IAAApD,+BAAc,EAAI,CAAC;IAA5BqD,IAAI,GAAAD,gBAAA,CAAJC,IAAI;EACZ,OAAOxD,iBAAiB,CACtBC,KAAK,YAAYwD,oBAAS,GAAGxD,KAAK,GAAGuD,IAAI,CAACpC,GAAG,CAACnB,KAAY,CAC5D,CAAC;AACH","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","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 } 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 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 () => [...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,8 +10,8 @@ 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
@@ -21,14 +21,10 @@ function useArrayFieldBase(field) {
21
21
  value: ({
22
22
  values
23
23
  }) => get(values, field.path),
24
- rawValue: ({
25
- rawValues
26
- }) => get(rawValues, field.path),
27
24
  initialValue: ({
28
25
  initialValues
29
26
  }) => get(initialValues, field.path)
30
27
  })], ({
31
- rawValue,
32
28
  value,
33
29
  initialValue
34
30
  }) => {
@@ -37,7 +33,7 @@ function useArrayFieldBase(field) {
37
33
  return {
38
34
  dirty,
39
35
  pristine,
40
- length: Array.isArray(rawValue) ? rawValue.length : 0
36
+ length: Array.isArray(value) ? value.length : 0
41
37
  };
42
38
  })), [field.pathstring]);
43
39
  const {
@@ -50,8 +46,8 @@ function useArrayFieldBase(field) {
50
46
  const submitFailed = useFormSelector(state => state.submitFailed);
51
47
  const boundActions = React.useMemo(() => bindActionsToField({
52
48
  ...arrayActions,
49
+ setParsedValue,
53
50
  setValue,
54
- setRawValue,
55
51
  setMeta
56
52
  }, field), [field.pathstring]);
57
53
  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":"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","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","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 } 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 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 () => [...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?: z.output<Field['schema']>;
18
+ value?: DeepPartial<z.input<Field['schema']>>;
19
+ initialParsedValue?: z.output<Field['schema']>;
20
+ initialValue?: DeepPartial<z.input<Field['schema']>>;
20
21
  error?: string;
21
22
  dirty: boolean;
22
23
  pristine: boolean;
package/useField.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"useField.d.ts","sourceRoot":"","sources":["src/useField.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAY,SAAS,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAS3C,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;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,SAAS,IAAI,SAAS,GAC5D,UAAU,CACR,OAAO,kBAAkB,CAAC;IACxB,QAAQ,EAAE,OAAO,QAAQ,CAAA;IACzB,WAAW,EAAE,OAAO,WAAW,CAAA;IAC/B,OAAO,EAAE,OAAO,OAAO,CAAA;CACxB,CAAC,CACH,GAAG;IACF,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;IAC5C,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;IACnD,eAAe,EAAE,OAAO,CAAA;IACxB,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,CAAA;AAEH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;IACnD,CAAC,KAAK,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IAC7D,CAAC,IAAI,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,aAAa,CACvD,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAC7B,CAAA;IACD,CAAC,UAAU,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,aAAa,CACzE,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CACpD,CAAA;CACF;AAmFD,wBAAgB,QAAQ,CAAC,KAAK,SAAS,SAAS,EAC9C,KAAK,EAAE,KAAK,GACX,aAAa,CAAC,KAAK,CAAC,CAAA;AACvB,wBAAgB,QAAQ,CACtB,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CACnC,CAAC,CAAC,QAAQ,EACV,+CAA+C,CAChD,EACD,IAAI,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,EAClC,KAAK,EAAE,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAC3D,wBAAgB,QAAQ,CACtB,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CACnC,CAAC,CAAC,QAAQ,EACV,+CAA+C,CAChD,EACD,UAAU,SAAS,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,EAE9C,KAAK,EAAE,UAAU,GAChB,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"useField.d.ts","sourceRoot":"","sources":["src/useField.ts"],"names":[],"mappings":"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"}
package/useField.js CHANGED
@@ -20,50 +20,50 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
20
20
  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
21
  function useFieldBase(field) {
22
22
  var _useFormContext = (0, _useFormContext3.useFormContext)(),
23
+ setParsedValue = _useFormContext.setParsedValue,
23
24
  setValue = _useFormContext.setValue,
24
- setRawValue = _useFormContext.setRawValue,
25
25
  setMeta = _useFormContext.setMeta,
26
26
  selectFormValues = _useFormContext.selectFormValues,
27
27
  selectFieldErrorMap = _useFormContext.selectFieldErrorMap;
28
28
  var useFormSelector = _useFormSelector.useFormSelector;
29
29
  var valuesSelector = _react["default"].useMemo(function () {
30
30
  return (0, _reselect.createSelector)([selectFormValues], (0, _reselect.createSelector)([(0, _reselect.createStructuredSelector)({
31
- value: function value(_ref) {
32
- var values = _ref.values;
31
+ parsedValue: function parsedValue(_ref) {
32
+ var parsedValues = _ref.parsedValues;
33
+ return (0, _get.get)(parsedValues, field.path);
34
+ },
35
+ value: function value(_ref2) {
36
+ var values = _ref2.values;
33
37
  return (0, _get.get)(values, field.path);
34
38
  },
35
- rawValue: function rawValue(_ref2) {
36
- var rawValues = _ref2.rawValues;
37
- return (0, _get.get)(rawValues, field.path);
39
+ initialParsedValue: function initialParsedValue(_ref3) {
40
+ var initialParsedValues = _ref3.initialParsedValues;
41
+ return (0, _get.get)(initialParsedValues, field.path);
38
42
  },
39
- initialValue: function initialValue(_ref3) {
40
- var initialValues = _ref3.initialValues;
43
+ initialValue: function initialValue(_ref4) {
44
+ var initialValues = _ref4.initialValues;
41
45
  return (0, _get.get)(initialValues, field.path);
42
- },
43
- rawInitialValue: function rawInitialValue(_ref4) {
44
- var rawInitialValues = _ref4.rawInitialValues;
45
- return (0, _get.get)(rawInitialValues, field.path);
46
46
  }
47
47
  })], function (_ref5) {
48
- var rawValue = _ref5.rawValue,
49
- _ref5$value = _ref5.value,
50
- value = _ref5$value === void 0 ? (0, _maybeParse.maybeParse)(field.schema, rawValue) : _ref5$value,
51
- rawInitialValue = _ref5.rawInitialValue,
52
- _ref5$initialValue = _ref5.initialValue,
53
- initialValue = _ref5$initialValue === void 0 ? (0, _maybeParse.maybeParse)(field.schema, rawInitialValue) : _ref5$initialValue;
48
+ var value = _ref5.value,
49
+ _ref5$parsedValue = _ref5.parsedValue,
50
+ parsedValue = _ref5$parsedValue === void 0 ? (0, _maybeParse.maybeParse)(field.schema, value) : _ref5$parsedValue,
51
+ initialValue = _ref5.initialValue,
52
+ _ref5$initialParsedVa = _ref5.initialParsedValue,
53
+ initialParsedValue = _ref5$initialParsedVa === void 0 ? (0, _maybeParse.maybeParse)(field.schema, initialValue) : _ref5$initialParsedVa;
54
54
  var dirty = !(0, _fastDeepEqual["default"])(value, initialValue);
55
55
  var pristine = !dirty;
56
56
  return {
57
+ parsedValue: parsedValue,
57
58
  value: value,
58
- rawValue: rawValue,
59
+ initialParsedValue: initialParsedValue,
59
60
  initialValue: initialValue,
60
- rawInitialValue: rawInitialValue,
61
61
  dirty: dirty,
62
62
  pristine: pristine
63
63
  };
64
64
  }));
65
65
  }, [field.pathstring]);
66
- var values = useFormSelector(valuesSelector, _reactRedux.shallowEqual);
66
+ var parsedValues = useFormSelector(valuesSelector, _reactRedux.shallowEqual);
67
67
  var error = useFormSelector(function (state) {
68
68
  return selectFieldErrorMap(state)[field.pathstring];
69
69
  });
@@ -75,20 +75,20 @@ function useFieldBase(field) {
75
75
  });
76
76
  var boundActions = _react["default"].useMemo(function () {
77
77
  return (0, _bindActionsToField.bindActionsToField)({
78
+ setParsedValue: setParsedValue,
78
79
  setValue: setValue,
79
- setRawValue: setRawValue,
80
80
  setMeta: setMeta
81
81
  }, field);
82
82
  }, [field.pathstring]);
83
83
  return _react["default"].useMemo(function () {
84
- return _objectSpread(_objectSpread(_objectSpread({}, boundActions), values), {}, {
84
+ return _objectSpread(_objectSpread(_objectSpread({}, boundActions), parsedValues), {}, {
85
85
  visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
86
86
  touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
87
87
  error: error,
88
88
  valid: !error,
89
89
  invalid: Boolean(error)
90
90
  });
91
- }, [field.pathstring, values, meta, error, submitFailed]);
91
+ }, [field.pathstring, parsedValues, meta, error, submitFailed]);
92
92
  }
93
93
  function useField(field) {
94
94
  var _useFormContext2 = (0, _useFormContext3.useFormContext)(),