@jcoreio/zod-forms 2.0.0-beta.4 → 2.0.0

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 (142) hide show
  1. package/ConditionalValidator.d.ts.map +1 -1
  2. package/ConditionalValidator.js +4 -2
  3. package/ConditionalValidator.js.map +1 -1
  4. package/ConditionalValidator.mjs +3 -1
  5. package/ConditionalValidator.mjs.map +1 -1
  6. package/FieldPath.d.ts.map +1 -1
  7. package/FieldPath.js +1 -0
  8. package/FieldPath.js.map +1 -1
  9. package/FieldPath.mjs.map +1 -1
  10. package/FormState.d.ts +6 -4
  11. package/FormState.d.ts.map +1 -1
  12. package/FormState.js.map +1 -1
  13. package/FormState.mjs.map +1 -1
  14. package/actions/arrayActions.js.map +1 -1
  15. package/actions/arrayActions.mjs.map +1 -1
  16. package/actions/setSubmitStatus.d.ts +1 -1
  17. package/createFormMiddleware.js +3 -3
  18. package/createFormMiddleware.js.map +1 -1
  19. package/createFormMiddleware.mjs.map +1 -1
  20. package/createFormProvider.d.ts +9 -3
  21. package/createFormProvider.d.ts.map +1 -1
  22. package/createFormProvider.js +10 -3
  23. package/createFormProvider.js.map +1 -1
  24. package/createFormProvider.mjs +53 -44
  25. package/createFormProvider.mjs.map +1 -1
  26. package/createFormReducer.js +16 -16
  27. package/createFormReducer.js.map +1 -1
  28. package/createSelectFieldErrorMap.d.ts +3 -3
  29. package/createSelectFieldErrorMap.js.map +1 -1
  30. package/createSelectFieldErrorMap.mjs.map +1 -1
  31. package/createSelectFormStatus.d.ts +7 -7
  32. package/createSelectFormStatus.d.ts.map +1 -1
  33. package/createSelectFormStatus.js.map +1 -1
  34. package/createSelectFormValues.js.map +1 -1
  35. package/createZodForm.d.ts +10 -5
  36. package/createZodForm.d.ts.map +1 -1
  37. package/package.json +5 -4
  38. package/reducers/addHandlers.d.ts +2 -2
  39. package/reducers/addHandlers.d.ts.map +1 -1
  40. package/reducers/arrayMove.js.map +1 -1
  41. package/reducers/arrayMove.mjs.map +1 -1
  42. package/reducers/initialize.d.ts +4 -4
  43. package/reducers/initialize.d.ts.map +1 -1
  44. package/reducers/initialize.js.map +1 -1
  45. package/reducers/initialize.mjs.map +1 -1
  46. package/reducers/removeHandlers.d.ts +2 -2
  47. package/reducers/removeHandlers.d.ts.map +1 -1
  48. package/reducers/setMeta.d.ts.map +1 -1
  49. package/reducers/setMeta.js +4 -1
  50. package/reducers/setMeta.js.map +1 -1
  51. package/reducers/setMeta.mjs +4 -1
  52. package/reducers/setMeta.mjs.map +1 -1
  53. package/reducers/setParsedValue.d.ts +2 -2
  54. package/reducers/setParsedValue.d.ts.map +1 -1
  55. package/reducers/setParsedValue.js +1 -1
  56. package/reducers/setParsedValue.js.map +1 -1
  57. package/reducers/setParsedValue.mjs +1 -1
  58. package/reducers/setParsedValue.mjs.map +1 -1
  59. package/reducers/setSubmitStatus.d.ts +2 -2
  60. package/reducers/setSubmitStatus.d.ts.map +1 -1
  61. package/reducers/setValue.d.ts +1 -1
  62. package/reducers/setValue.d.ts.map +1 -1
  63. package/reducers/submitSucceeded.d.ts +1 -1
  64. package/reducers/submitSucceeded.d.ts.map +1 -1
  65. package/reducers/util/updateRawArray.js.map +1 -1
  66. package/reducers/util/updateRawArray.mjs.map +1 -1
  67. package/src/ConditionalValidator.ts +11 -12
  68. package/src/FieldPath.ts +34 -54
  69. package/src/FormState.ts +4 -4
  70. package/src/actions/arrayActions.ts +4 -4
  71. package/src/createFormMiddleware.ts +2 -2
  72. package/src/createFormProvider.tsx +14 -2
  73. package/src/createSelectFieldErrorMap.ts +12 -10
  74. package/src/reducers/arrayMove.ts +2 -2
  75. package/src/reducers/initialize.ts +3 -3
  76. package/src/reducers/setMeta.ts +4 -1
  77. package/src/reducers/setParsedValue.ts +10 -9
  78. package/src/reducers/util/updateRawArray.ts +4 -4
  79. package/src/useArrayField.ts +26 -26
  80. package/src/useField.ts +15 -13
  81. package/src/useFormContext.ts +2 -2
  82. package/src/useFormDispatch.ts +3 -7
  83. package/src/useHtmlField.ts +18 -20
  84. package/src/useInitialize.ts +1 -1
  85. package/src/util/DeepPartial.ts +2 -3
  86. package/src/util/PathInType.ts +16 -16
  87. package/src/util/SchemaAt.ts +38 -49
  88. package/src/util/bindActionsToField.ts +6 -7
  89. package/src/util/parsePathstring.ts +47 -41
  90. package/src/util/pathstring.ts +9 -13
  91. package/src/util/set.ts +4 -1
  92. package/useArrayField.d.ts +2 -2
  93. package/useArrayField.d.ts.map +1 -1
  94. package/useArrayField.js.map +1 -1
  95. package/useArrayField.mjs.map +1 -1
  96. package/useField.d.ts.map +1 -1
  97. package/useField.js.map +1 -1
  98. package/useField.mjs.map +1 -1
  99. package/useFormContext.js.map +1 -1
  100. package/useFormContext.mjs.map +1 -1
  101. package/useFormDispatch.d.ts +1 -3
  102. package/useFormDispatch.d.ts.map +1 -1
  103. package/useFormDispatch.js.map +1 -1
  104. package/useFormDispatch.mjs.map +1 -1
  105. package/useFormStatus.d.ts +1 -1
  106. package/useHtmlField.d.ts +1 -1
  107. package/useHtmlField.d.ts.map +1 -1
  108. package/useHtmlField.js +1 -1
  109. package/useHtmlField.js.map +1 -1
  110. package/useHtmlField.mjs +1 -1
  111. package/useHtmlField.mjs.map +1 -1
  112. package/useInitialize.js.map +1 -1
  113. package/useInitialize.mjs.map +1 -1
  114. package/useSubmit.js.map +1 -1
  115. package/util/DeepPartial.d.ts.map +1 -1
  116. package/util/DeepPartial.js.map +1 -1
  117. package/util/DeepPartial.mjs.map +1 -1
  118. package/util/PathInType.d.ts +2 -1
  119. package/util/PathInType.d.ts.map +1 -1
  120. package/util/PathInType.js.map +1 -1
  121. package/util/PathInType.mjs.map +1 -1
  122. package/util/SchemaAt.d.ts +1 -1
  123. package/util/SchemaAt.d.ts.map +1 -1
  124. package/util/SchemaAt.js.map +1 -1
  125. package/util/SchemaAt.mjs.map +1 -1
  126. package/util/bindActionsToField.d.ts +1 -1
  127. package/util/bindActionsToField.d.ts.map +1 -1
  128. package/util/bindActionsToField.js.map +1 -1
  129. package/util/bindActionsToField.mjs.map +1 -1
  130. package/util/parsePathstring.d.ts +23 -6
  131. package/util/parsePathstring.d.ts.map +1 -1
  132. package/util/parsePathstring.js.map +1 -1
  133. package/util/parsePathstring.mjs.map +1 -1
  134. package/util/pathstring.d.ts +2 -8
  135. package/util/pathstring.d.ts.map +1 -1
  136. package/util/pathstring.js.map +1 -1
  137. package/util/pathstring.mjs.map +1 -1
  138. package/util/set.d.ts.map +1 -1
  139. package/util/set.js +1 -4
  140. package/util/set.js.map +1 -1
  141. package/util/set.mjs +1 -3
  142. package/util/set.mjs.map +1 -1
@@ -2,67 +2,56 @@ import z from 'zod'
2
2
 
3
3
  type BasePath = (string | number)[]
4
4
 
5
- export type SchemaAt<T extends z.ZodTypeAny, Path> = 0 extends 1 & Path
6
- ? z.ZodTypeAny
7
- : 0 extends 1 & T
8
- ? z.ZodTypeAny
9
- : 0 extends 1 & z.input<T>
10
- ? z.ZodTypeAny
11
- : Path extends [infer Head, ...infer Tail extends BasePath]
12
- ? T extends z.ZodLazy<infer U>
13
- ? SchemaAt<U, Path>
14
- : T extends z.ZodCatch<infer U>
15
- ? SchemaAt<U, Path>
16
- : T extends z.ZodBranded<infer U, any>
17
- ? SchemaAt<U, Path>
18
- : T extends z.ZodOptional<infer U>
19
- ? SchemaAt<U, Path>
20
- : T extends z.ZodDefault<infer U>
21
- ? SchemaAt<U, Path>
22
- : T extends z.ZodNullable<infer U>
23
- ? SchemaAt<U, Path>
24
- : T extends z.ZodUnion<infer Options>
25
- ? SchemaAt<Options[number], Path>
26
- : T extends z.ZodDiscriminatedUnion<any, infer Options>
27
- ? SchemaAt<Options[number], Path>
28
- : T extends z.ZodPipeline<infer In, any>
29
- ? SchemaAt<In, Path>
30
- : T extends z.ZodEffects<infer U>
31
- ? SchemaAt<U, Path>
32
- : T extends z.ZodReadonly<infer U>
33
- ? SchemaAt<U, Path>
34
- : T extends z.ZodRecord<infer Key, infer Value>
35
- ? Head extends z.input<Key>
36
- ? SchemaAt<Value, Tail>
5
+ export type SchemaAt<T extends z.ZodTypeAny, Path> =
6
+ 0 extends 1 & Path ? z.ZodTypeAny
7
+ : 0 extends 1 & T ? z.ZodTypeAny
8
+ : 0 extends 1 & z.input<T> ? z.ZodTypeAny
9
+ : Path extends [infer Head, ...infer Tail extends BasePath] ?
10
+ T extends z.ZodLazy<infer U> ? SchemaAt<U, Path>
11
+ : T extends z.ZodCatch<infer U> ? SchemaAt<U, Path>
12
+ : T extends z.ZodBranded<infer U, any> ? SchemaAt<U, Path>
13
+ : T extends z.ZodOptional<infer U> ? SchemaAt<U, Path>
14
+ : T extends z.ZodDefault<infer U> ? SchemaAt<U, Path>
15
+ : T extends z.ZodNullable<infer U> ? SchemaAt<U, Path>
16
+ : T extends z.ZodUnion<infer Options> ? SchemaAt<Options[number], Path>
17
+ : T extends z.ZodDiscriminatedUnion<any, infer Options> ?
18
+ SchemaAt<Options[number], Path>
19
+ : T extends z.ZodPipeline<infer In, any> ? SchemaAt<In, Path>
20
+ : T extends z.ZodEffects<infer U> ? SchemaAt<U, Path>
21
+ : T extends z.ZodReadonly<infer U> ? SchemaAt<U, Path>
22
+ : T extends z.ZodRecord<infer Key, infer Value> ?
23
+ Head extends z.input<Key> ?
24
+ SchemaAt<Value, Tail>
37
25
  : never
38
- : T extends z.ZodMap<infer Key, infer Value>
39
- ? Head extends z.input<Key>
40
- ? SchemaAt<Value, Tail>
26
+ : T extends z.ZodMap<infer Key, infer Value> ?
27
+ Head extends z.input<Key> ?
28
+ SchemaAt<Value, Tail>
41
29
  : never
42
- : T extends z.ZodObject<
30
+ : T extends (
31
+ z.ZodObject<
43
32
  infer Shape,
44
33
  infer UnknownKeys,
45
34
  infer Catchall extends z.ZodTypeAny
46
35
  >
47
- ? Head extends keyof Shape
48
- ? SchemaAt<Shape[Head], Tail>
49
- : UnknownKeys extends 'passthrough'
50
- ? SchemaAt<Catchall, Tail>
36
+ ) ?
37
+ Head extends keyof Shape ? SchemaAt<Shape[Head], Tail>
38
+ : UnknownKeys extends 'passthrough' ? SchemaAt<Catchall, Tail>
51
39
  : never
52
- : T extends z.ZodTuple<
40
+ : T extends (
41
+ z.ZodTuple<
53
42
  infer Elements extends [z.ZodTypeAny, ...z.ZodTypeAny[]],
54
43
  infer Rest
55
44
  >
56
- ? Head extends number & keyof Elements
57
- ? SchemaAt<Elements[Head], Tail>
58
- : Rest extends z.ZodTypeAny
59
- ? Head extends number
60
- ? SchemaAt<Rest, Tail>
45
+ ) ?
46
+ Head extends number & keyof Elements ? SchemaAt<Elements[Head], Tail>
47
+ : Rest extends z.ZodTypeAny ?
48
+ Head extends number ?
49
+ SchemaAt<Rest, Tail>
61
50
  : never
62
51
  : never
63
- : T extends z.ZodArray<infer Element>
64
- ? Head extends number
65
- ? SchemaAt<Element, Tail>
52
+ : T extends z.ZodArray<infer Element> ?
53
+ Head extends number ?
54
+ SchemaAt<Element, Tail>
66
55
  : never
67
56
  : never
68
57
  : T
@@ -4,22 +4,21 @@ export function bindActionsToField<
4
4
  Field extends FieldPath,
5
5
  Actions extends {
6
6
  [K in string]: (field: Field, ...rest: any[]) => any
7
- }
7
+ },
8
8
  >(
9
9
  actions: Actions,
10
10
  field: Field
11
11
  ): {
12
12
  [K in keyof Actions]: Actions[K] extends (
13
- field: Field,
14
- ...rest: infer Rest
15
- ) => infer Return
16
- ? (...rest: Rest) => Return
17
- : never
13
+ (field: Field, ...rest: infer Rest) => infer Return
14
+ ) ?
15
+ (...rest: Rest) => Return
16
+ : never
18
17
  } {
19
18
  return Object.fromEntries(
20
19
  Object.entries(actions).map(([key, action]: any) => [
21
20
  key,
22
21
  (...args: any[]) => action(field, ...args),
23
22
  ])
24
- ) as any
23
+ )
25
24
  }
@@ -1,44 +1,43 @@
1
1
  import { BasePath } from '../FieldPath'
2
2
 
3
- export type parsePathstring<Path extends string, IsTail = false> = [
4
- Path
5
- ] extends ['']
6
- ? []
7
- : [Path] extends [`[${infer Rest}`]
8
- ? Rest extends `${infer N extends number}]${infer Tail}`
9
- ? [N, ...parsePathstring<Tail, true>]
10
- : ExtractInitialStringLiteral<Rest> extends infer StringLiteral extends string
11
- ? [
3
+ export type parsePathstring<Path extends string, IsTail = false> =
4
+ [Path] extends [''] ? []
5
+ : [Path] extends [`[${infer Rest}`] ?
6
+ Rest extends `${infer N extends number}]${infer Tail}` ?
7
+ [N, ...parsePathstring<Tail, true>]
8
+ : ExtractInitialStringLiteral<Rest> extends (
9
+ infer StringLiteral extends string
10
+ ) ?
11
+ [
12
12
  ProcessStringLiteral<StringLiteral>,
13
- ...(Rest extends `${StringLiteral}]${infer Tail}`
14
- ? parsePathstring<Tail, true>
15
- : never)
13
+ ...(Rest extends `${StringLiteral}]${infer Tail}` ?
14
+ parsePathstring<Tail, true>
15
+ : never),
16
16
  ]
17
17
  : never
18
- : [IsTail] extends [true]
19
- ? [Path] extends [`.${infer Rest}`]
20
- ? parsePathstring<Rest>
18
+ : [IsTail] extends [true] ?
19
+ [Path] extends [`.${infer Rest}`] ?
20
+ parsePathstring<Rest>
21
21
  : never
22
- : [Path] extends [`${infer Head}[${infer Tail}`]
23
- ? [Path] extends [`${infer Head2}.${infer Tail2}`]
24
- ? Head2 extends `${Head}[${string}` // make sure we pick up to . or [, whichever comes first
25
- ? [Head, ...parsePathstring<`[${Tail}`, true>]
22
+ : [Path] extends [`${infer Head}[${infer Tail}`] ?
23
+ [Path] extends [`${infer Head2}.${infer Tail2}`] ?
24
+ Head2 extends (
25
+ `${Head}[${string}` // make sure we pick up to . or [, whichever comes first
26
+ ) ?
27
+ [Head, ...parsePathstring<`[${Tail}`, true>]
26
28
  : [Head2, ...parsePathstring<`.${Tail2}`, true>]
27
29
  : [Head, ...parsePathstring<`[${Tail}`, true>]
28
- : [Path] extends [`${infer Head}.${infer Tail}`]
29
- ? [Head, ...parsePathstring<`.${Tail}`, true>]
30
+ : [Path] extends [`${infer Head}.${infer Tail}`] ?
31
+ [Head, ...parsePathstring<`.${Tail}`, true>]
30
32
  : [Path]
31
33
 
32
34
  /**
33
35
  * If T starts with a quoted string literal, returns that string literal.
34
36
  * Otherwise returns never
35
37
  */
36
- type ExtractInitialStringLiteral<T extends string> = [T] extends [
37
- `"${infer Rest}`
38
- ]
39
- ? `"${RestOfStringLiteral<Rest, '"'>}`
40
- : [T] extends [`'${infer Rest}`]
41
- ? `'${RestOfStringLiteral<Rest, "'">}`
38
+ type ExtractInitialStringLiteral<T extends string> =
39
+ [T] extends [`"${infer Rest}`] ? `"${RestOfStringLiteral<Rest, '"'>}`
40
+ : [T] extends [`'${infer Rest}`] ? `'${RestOfStringLiteral<Rest, "'">}`
42
41
  : never
43
42
 
44
43
  type RestOfStringLiteral<
@@ -49,13 +48,20 @@ type RestOfStringLiteral<
49
48
  /**
50
49
  * The opening quote type
51
50
  */
52
- Q extends '"' | "'"
53
- > = [T] extends [`${infer A}${Q}${infer B}`] // find the next quote
54
- ? A extends `${infer C}\\${infer D}` // the quote may be escaped, so find the first backslash
55
- ? D extends '' // nothing after the backslash, so it escapes the quote Q
56
- ? `${A}${Q}${RestOfStringLiteral<B, Q>}` // keep scanning until the closing quote
57
- : D extends `${infer E extends keyof EscapeChars}${infer F}`
58
- ? `${C}\\${E}${RestOfStringLiteral<`${F}${Q}${B}`, Q>}` // keep scanning until the closing quote
51
+ Q extends '"' | "'",
52
+ > =
53
+ [T] extends (
54
+ [`${infer A}${Q}${infer B}`] // find the next quote
55
+ ) ?
56
+ A extends (
57
+ `${infer C}\\${infer D}` // the quote may be escaped, so find the first backslash
58
+ ) ?
59
+ D extends (
60
+ '' // nothing after the backslash, so it escapes the quote Q
61
+ ) ?
62
+ `${A}${Q}${RestOfStringLiteral<B, Q>}` // keep scanning until the closing quote
63
+ : D extends `${infer E extends keyof EscapeChars}${infer F}` ?
64
+ `${C}\\${E}${RestOfStringLiteral<`${F}${Q}${B}`, Q>}` // keep scanning until the closing quote
59
65
  : never
60
66
  : `${A}${Q}` // no backslash, Q is a closing quote and we're done!
61
67
  : never
@@ -73,16 +79,16 @@ const EscapeChars = {
73
79
  v: '\v',
74
80
  } as const
75
81
 
76
- type ProcessEscapes<T extends string> = T extends `${infer A}\\${infer B}`
77
- ? B extends `${infer C extends keyof EscapeChars}${infer D}`
78
- ? `${A}${EscapeChars[C]}${ProcessEscapes<D>}`
82
+ type ProcessEscapes<T extends string> =
83
+ T extends `${infer A}\\${infer B}` ?
84
+ B extends `${infer C extends keyof EscapeChars}${infer D}` ?
85
+ `${A}${EscapeChars[C]}${ProcessEscapes<D>}`
79
86
  : never
80
87
  : T
81
88
 
82
- type ProcessStringLiteral<T extends string> = T extends `"${infer Content}"`
83
- ? ProcessEscapes<Content>
84
- : T extends `'${infer Content}'`
85
- ? ProcessEscapes<Content>
89
+ type ProcessStringLiteral<T extends string> =
90
+ T extends `"${infer Content}"` ? ProcessEscapes<Content>
91
+ : T extends `'${infer Content}'` ? ProcessEscapes<Content>
86
92
  : never
87
93
 
88
94
  const pathstringRx =
@@ -1,18 +1,14 @@
1
1
  type PathElem = string | number
2
2
  type BasePath = PathElem[]
3
3
 
4
- export type pathstring<Path> = Path extends [
5
- infer Head extends PathElem,
6
- ...infer Tail extends PathElem[]
7
- ]
8
- ? `${Head extends number ? `[${Head}]` : Head}${pathstringTail<Tail>}`
4
+ export type pathstring<Path> =
5
+ Path extends [infer Head extends PathElem, ...infer Tail extends PathElem[]] ?
6
+ `${Head extends number ? `[${Head}]` : Head}${pathstringTail<Tail>}`
9
7
  : ''
10
8
 
11
- type pathstringTail<Path extends BasePath> = Path extends [
12
- infer Head extends PathElem,
13
- ...infer Tail extends PathElem[]
14
- ]
15
- ? `${Head extends number ? `[${Head}]` : `.${Head}`}${pathstringTail<Tail>}`
9
+ type pathstringTail<Path extends BasePath> =
10
+ Path extends [infer Head extends PathElem, ...infer Tail extends PathElem[]] ?
11
+ `${Head extends number ? `[${Head}]` : `.${Head}`}${pathstringTail<Tail>}`
16
12
  : ''
17
13
 
18
14
  export function pathstring<Path extends BasePath>(
@@ -20,9 +16,9 @@ export function pathstring<Path extends BasePath>(
20
16
  ): pathstring<Path> {
21
17
  return path
22
18
  .map((elem, index) =>
23
- typeof elem === 'string' && isValidIdentifier(elem)
24
- ? `${index > 0 ? '.' : ''}${elem}`
25
- : `[${JSON.stringify(elem)}]`
19
+ typeof elem === 'string' && isValidIdentifier(elem) ?
20
+ `${index > 0 ? '.' : ''}${elem}`
21
+ : `[${JSON.stringify(elem)}]`
26
22
  )
27
23
  .join('') as any
28
24
  }
package/src/util/set.ts CHANGED
@@ -17,7 +17,10 @@ export function set(
17
17
  const oldValue = (from as any)[path[index]]
18
18
  const newValue = set(oldValue, path, value, index + 1)
19
19
  if (Object.is(oldValue, newValue)) return from
20
- const result: any = Array.isArray(from) ? [...from] : { ...from }
20
+ const result: any =
21
+ Array.isArray(from) ?
22
+ [...from]
23
+ : Object.assign(Object.create(Object.getPrototypeOf(from)), from)
21
24
  result[path[index]] = newValue
22
25
  return result
23
26
  }
@@ -4,12 +4,12 @@ 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
- import { arrayActions, ArrayFieldPath } from './actions/arrayActions';
7
+ import { arrayActions } from './actions/arrayActions';
8
8
  import { setParsedValue } from './actions/setParsedValue';
9
9
  import { setValue } from './actions/setValue';
10
10
  import { setMeta } from './actions/setMeta';
11
11
  import { FieldMeta } from './FormState';
12
- export type UseArrayFieldProps<Field extends ArrayFieldPath = ArrayFieldPath> = NonNullable<z.input<Field['schema']>> extends any[] ? FieldMeta & ReturnType<typeof bindActionsToField<Field, arrayActions<Field> & {
12
+ export type UseArrayFieldProps<Field extends FieldPath> = NonNullable<z.input<Field['schema']>> extends any[] ? FieldMeta & ReturnType<typeof bindActionsToField<Field, arrayActions<Field> & {
13
13
  setParsedValue: typeof setParsedValue<Field>;
14
14
  setValue: typeof setValue<Field>;
15
15
  setMeta: typeof setMeta<Field>;
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useArrayField.js","names":["_FieldPath","require","_react","_interopRequireDefault","_useFormContext3","_bindActionsToField","_reselect","_get","_fastDeepEqual","_useFormSelector2","_reactRedux","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useArrayFieldBase","field","_useFormContext","useFormContext","arrayActions","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","value","_ref","values","get","path","initialValue","_ref2","initialValues","_ref3","dirty","isEqual","pristine","Array","isArray","pathstring","_useFormSelector","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","elements","_toConsumableArray2","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","_useFormContext2","root","FieldPath"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions, ArrayFieldPath } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseArrayFieldProps<Field extends ArrayFieldPath = ArrayFieldPath> =\n NonNullable<z.input<Field['schema']>> extends any[]\n ? FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n arrayActions<Field> & {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(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 ArrayFieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as DeepPartial<z.input<T>> | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<T>>\n | undefined,\n }),\n ],\n ({ value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(value) ? value.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setParsedValue, setValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () =>\n [...new Array(length).keys()].map((index) =>\n field.subfield(\n // @ts-expect-error doesn't work on this type parameter\n index\n )\n ),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useArrayField.js","names":["_FieldPath","require","_react","_interopRequireDefault","_useFormContext3","_bindActionsToField","_reselect","_get","_fastDeepEqual","_useFormSelector2","_reactRedux","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useArrayFieldBase","field","_useFormContext","useFormContext","arrayActions","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","value","_ref","values","get","path","initialValue","_ref2","initialValues","_ref3","dirty","isEqual","pristine","Array","isArray","pathstring","_useFormSelector","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","elements","_toConsumableArray2","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","_useFormContext2","root","FieldPath"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions, ArrayFieldPath } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseArrayFieldProps<Field extends FieldPath> =\n NonNullable<z.input<Field['schema']>> extends any[] ?\n FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n arrayActions<Field> & {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends ArrayFieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as DeepPartial<z.input<T>> | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<T>>\n | undefined,\n }),\n ],\n ({ value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(value) ? value.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setParsedValue, setValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () =>\n [...new Array(length).keys()].map((index) =>\n field.subfield(\n // @ts-expect-error doesn't work on this type parameter\n index\n )\n ),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useArrayField.mjs","names":["FieldPath","React","useFormContext","bindActionsToField","createSelector","createStructuredSelector","get","isEqual","useFormSelector","untypedUseFormSelector","shallowEqual","useArrayFieldBase","field","arrayActions","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","value","values","path","initialValue","initialValues","dirty","pristine","length","Array","isArray","pathstring","error","state","meta","fieldMeta","submitFailed","boundActions","elements","keys","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","root"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions, ArrayFieldPath } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseArrayFieldProps<Field extends ArrayFieldPath = ArrayFieldPath> =\n NonNullable<z.input<Field['schema']>> extends any[]\n ? FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n arrayActions<Field> & {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(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 ArrayFieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as DeepPartial<z.input<T>> | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<T>>\n | undefined,\n }),\n ],\n ({ value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(value) ? value.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setParsedValue, setValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () =>\n [...new Array(length).keys()].map((index) =>\n field.subfield(\n // @ts-expect-error doesn't work on this type parameter\n index\n )\n ),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useArrayField.mjs","names":["FieldPath","React","useFormContext","bindActionsToField","createSelector","createStructuredSelector","get","isEqual","useFormSelector","untypedUseFormSelector","shallowEqual","useArrayFieldBase","field","arrayActions","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","value","values","path","initialValue","initialValues","dirty","pristine","length","Array","isArray","pathstring","error","state","meta","fieldMeta","submitFailed","boundActions","elements","keys","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","root"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions, ArrayFieldPath } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseArrayFieldProps<Field extends FieldPath> =\n NonNullable<z.input<Field['schema']>> extends any[] ?\n FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n arrayActions<Field> & {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends ArrayFieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as DeepPartial<z.input<T>> | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<T>>\n | undefined,\n }),\n ],\n ({ value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(value) ? value.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setParsedValue, setValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () =>\n [...new Array(length).keys()].map((index) =>\n field.subfield(\n // @ts-expect-error doesn't work on this type parameter\n index\n )\n ),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/useField.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"useField.d.ts","sourceRoot":"","sources":["src/useField.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useField.d.ts","sourceRoot":"","sources":["src/useField.ts"],"names":[],"mappings":"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"}
package/useField.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"useField.js","names":["_FieldPath","require","_get","_react","_interopRequireDefault","_useFormSelector","_useFormContext3","_reselect","_reactRedux","_fastDeepEqual","_maybeParse","_bindActionsToField","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useFieldBase","field","_useFormContext","useFormContext","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","parsedValue","_ref","parsedValues","get","path","value","_ref2","values","initialParsedValue","_ref3","initialParsedValues","initialValue","_ref4","initialValues","_ref5","_ref5$parsedValue","maybeParse","schema","_ref5$initialParsedVa","dirty","isEqual","pristine","pathstring","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","visited","touched","valid","invalid","Boolean","useField","_useFormContext2","root","FieldPath"],"sources":["src/useField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath } from './FieldPath'\nimport { FieldMeta } from './FormState'\nimport { get } from './util/get'\nimport React from 'react'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport {\n useFormSelector as untypedUseFormSelector,\n TypedUseFormSelector,\n} from './useFormSelector'\nimport { useFormContext } from './useFormContext'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { shallowEqual } from 'react-redux'\nimport isEqual from 'fast-deep-equal'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { maybeParse } from './util/maybeParse'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseFieldProps<Field extends FieldPath> = FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n parsedValue?: z.output<Field['schema']>\n value?: DeepPartial<z.input<Field['schema']>>\n initialParsedValue?: z.output<Field['schema']>\n initialValue?: DeepPartial<z.input<Field['schema']>>\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n\nexport interface TypedUseField<T extends z.ZodTypeAny> {\n <Field extends FieldPath>(field: Field): UseFieldProps<Field>\n <Path extends PathInSchema<T>>(path: Path): UseFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseFieldProps<\n FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>\n >\n}\n\nfunction useFieldBase<T extends z.ZodTypeAny, Field extends FieldPath>(\n field: Field\n): UseFieldProps<Field> {\n type Schema = Field['schema']\n\n const {\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n parsedValue: ({ parsedValues }) =>\n get(parsedValues, field.path) as z.output<Schema> | undefined,\n value: ({ values }) => get(values, field.path) as unknown,\n initialParsedValue: ({ initialParsedValues }) =>\n get(initialParsedValues, field.path) as\n | z.output<Schema>\n | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as unknown,\n }),\n ],\n ({\n value,\n parsedValue = maybeParse(field.schema, value),\n initialValue,\n initialParsedValue = maybeParse(field.schema, initialValue),\n }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n dirty,\n pristine,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const parsedValues = useFormSelector(valuesSelector, shallowEqual)\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 () => bindActionsToField({ setParsedValue, setValue, setMeta }, field),\n [field.pathstring]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n ...parsedValues,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n valid: !error,\n invalid: Boolean(error),\n }),\n [field.pathstring, parsedValues, meta, error, submitFailed]\n ) as any\n}\n\nexport function useField<Field extends FieldPath>(\n field: Field\n): UseFieldProps<Field>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any\n>(field: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any\n>(\n field: Pathstring\n): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useField.js","names":["_FieldPath","require","_get","_react","_interopRequireDefault","_useFormSelector","_useFormContext3","_reselect","_reactRedux","_fastDeepEqual","_maybeParse","_bindActionsToField","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useFieldBase","field","_useFormContext","useFormContext","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","parsedValue","_ref","parsedValues","get","path","value","_ref2","values","initialParsedValue","_ref3","initialParsedValues","initialValue","_ref4","initialValues","_ref5","_ref5$parsedValue","maybeParse","schema","_ref5$initialParsedVa","dirty","isEqual","pristine","pathstring","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","visited","touched","valid","invalid","Boolean","useField","_useFormContext2","root","FieldPath"],"sources":["src/useField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath } from './FieldPath'\nimport { FieldMeta } from './FormState'\nimport { get } from './util/get'\nimport React from 'react'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport {\n useFormSelector as untypedUseFormSelector,\n TypedUseFormSelector,\n} from './useFormSelector'\nimport { useFormContext } from './useFormContext'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { shallowEqual } from 'react-redux'\nimport isEqual from 'fast-deep-equal'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { maybeParse } from './util/maybeParse'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseFieldProps<Field extends FieldPath> = FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n parsedValue?: z.output<Field['schema']>\n value?: DeepPartial<z.input<Field['schema']>>\n initialParsedValue?: z.output<Field['schema']>\n initialValue?: DeepPartial<z.input<Field['schema']>>\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n\nexport interface TypedUseField<T extends z.ZodTypeAny> {\n <Field extends FieldPath>(field: Field): UseFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useFieldBase<\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters\n T extends z.ZodTypeAny,\n Field extends FieldPath,\n>(field: Field): UseFieldProps<Field> {\n type Schema = Field['schema']\n\n const {\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n parsedValue: ({ parsedValues }) =>\n get(parsedValues, field.path) as z.output<Schema> | undefined,\n value: ({ values }) => get(values, field.path),\n initialParsedValue: ({ initialParsedValues }) =>\n get(initialParsedValues, field.path) as\n | z.output<Schema>\n | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path),\n }),\n ],\n ({\n value,\n parsedValue = maybeParse(field.schema, value),\n initialValue,\n initialParsedValue = maybeParse(field.schema, initialValue),\n }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n dirty,\n pristine,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const parsedValues = useFormSelector(valuesSelector, shallowEqual)\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 () => bindActionsToField({ setParsedValue, setValue, setMeta }, field),\n [field.pathstring]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n ...parsedValues,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n valid: !error,\n invalid: Boolean(error),\n }),\n [field.pathstring, parsedValues, meta, error, submitFailed]\n ) as any\n}\n\nexport function useField<Field extends FieldPath>(\n field: Field\n): UseFieldProps<Field>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/useField.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"useField.mjs","names":["FieldPath","get","React","useFormSelector","untypedUseFormSelector","useFormContext","createSelector","createStructuredSelector","shallowEqual","isEqual","maybeParse","bindActionsToField","useFieldBase","field","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","parsedValue","parsedValues","path","value","values","initialParsedValue","initialParsedValues","initialValue","initialValues","schema","dirty","pristine","pathstring","error","state","meta","fieldMeta","submitFailed","boundActions","visited","touched","valid","invalid","Boolean","useField","root"],"sources":["src/useField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath } from './FieldPath'\nimport { FieldMeta } from './FormState'\nimport { get } from './util/get'\nimport React from 'react'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport {\n useFormSelector as untypedUseFormSelector,\n TypedUseFormSelector,\n} from './useFormSelector'\nimport { useFormContext } from './useFormContext'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { shallowEqual } from 'react-redux'\nimport isEqual from 'fast-deep-equal'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { maybeParse } from './util/maybeParse'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseFieldProps<Field extends FieldPath> = FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n parsedValue?: z.output<Field['schema']>\n value?: DeepPartial<z.input<Field['schema']>>\n initialParsedValue?: z.output<Field['schema']>\n initialValue?: DeepPartial<z.input<Field['schema']>>\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n\nexport interface TypedUseField<T extends z.ZodTypeAny> {\n <Field extends FieldPath>(field: Field): UseFieldProps<Field>\n <Path extends PathInSchema<T>>(path: Path): UseFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseFieldProps<\n FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>\n >\n}\n\nfunction useFieldBase<T extends z.ZodTypeAny, Field extends FieldPath>(\n field: Field\n): UseFieldProps<Field> {\n type Schema = Field['schema']\n\n const {\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n parsedValue: ({ parsedValues }) =>\n get(parsedValues, field.path) as z.output<Schema> | undefined,\n value: ({ values }) => get(values, field.path) as unknown,\n initialParsedValue: ({ initialParsedValues }) =>\n get(initialParsedValues, field.path) as\n | z.output<Schema>\n | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as unknown,\n }),\n ],\n ({\n value,\n parsedValue = maybeParse(field.schema, value),\n initialValue,\n initialParsedValue = maybeParse(field.schema, initialValue),\n }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n dirty,\n pristine,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const parsedValues = useFormSelector(valuesSelector, shallowEqual)\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 () => bindActionsToField({ setParsedValue, setValue, setMeta }, field),\n [field.pathstring]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n ...parsedValues,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n valid: !error,\n invalid: Boolean(error),\n }),\n [field.pathstring, parsedValues, meta, error, submitFailed]\n ) as any\n}\n\nexport function useField<Field extends FieldPath>(\n field: Field\n): UseFieldProps<Field>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any\n>(field: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any\n>(\n field: Pathstring\n): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useField.mjs","names":["FieldPath","get","React","useFormSelector","untypedUseFormSelector","useFormContext","createSelector","createStructuredSelector","shallowEqual","isEqual","maybeParse","bindActionsToField","useFieldBase","field","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","parsedValue","parsedValues","path","value","values","initialParsedValue","initialParsedValues","initialValue","initialValues","schema","dirty","pristine","pathstring","error","state","meta","fieldMeta","submitFailed","boundActions","visited","touched","valid","invalid","Boolean","useField","root"],"sources":["src/useField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath } from './FieldPath'\nimport { FieldMeta } from './FormState'\nimport { get } from './util/get'\nimport React from 'react'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport {\n useFormSelector as untypedUseFormSelector,\n TypedUseFormSelector,\n} from './useFormSelector'\nimport { useFormContext } from './useFormContext'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { shallowEqual } from 'react-redux'\nimport isEqual from 'fast-deep-equal'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { maybeParse } from './util/maybeParse'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseFieldProps<Field extends FieldPath> = FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n parsedValue?: z.output<Field['schema']>\n value?: DeepPartial<z.input<Field['schema']>>\n initialParsedValue?: z.output<Field['schema']>\n initialValue?: DeepPartial<z.input<Field['schema']>>\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n\nexport interface TypedUseField<T extends z.ZodTypeAny> {\n <Field extends FieldPath>(field: Field): UseFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useFieldBase<\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters\n T extends z.ZodTypeAny,\n Field extends FieldPath,\n>(field: Field): UseFieldProps<Field> {\n type Schema = Field['schema']\n\n const {\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n parsedValue: ({ parsedValues }) =>\n get(parsedValues, field.path) as z.output<Schema> | undefined,\n value: ({ values }) => get(values, field.path),\n initialParsedValue: ({ initialParsedValues }) =>\n get(initialParsedValues, field.path) as\n | z.output<Schema>\n | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path),\n }),\n ],\n ({\n value,\n parsedValue = maybeParse(field.schema, value),\n initialValue,\n initialParsedValue = maybeParse(field.schema, initialValue),\n }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n parsedValue,\n value,\n initialParsedValue,\n initialValue,\n dirty,\n pristine,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const parsedValues = useFormSelector(valuesSelector, shallowEqual)\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 () => bindActionsToField({ setParsedValue, setValue, setMeta }, field),\n [field.pathstring]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n ...parsedValues,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n valid: !error,\n invalid: Boolean(error),\n }),\n [field.pathstring, parsedValues, meta, error, submitFailed]\n ) as any\n}\n\nexport function useField<Field extends FieldPath>(\n field: Field\n): UseFieldProps<Field>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArray<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useFormContext.js","names":["_react","_interopRequireDefault","require","_FormContext","useFormContext","props","React","useContext","FormContext","Error"],"sources":["src/useFormContext.ts"],"sourcesContent":["import z from 'zod'\nimport React from 'react'\nimport { FormContext, FormContextProps } from './FormContext'\n\nexport function useFormContext<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'you must pass a schema type'\n >\n>(): FormContextProps<T> {\n const props: FormContextProps<T> = React.useContext(FormContext) as any\n if (!props) {\n throw new Error(`must be used inside a <FormProvider>`)\n }\n return props\n}\n"],"mappings":";;;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEO,SAASE,cAAcA,CAAA,EAKL;EACvB,IAAMC,KAA0B,GAAGC,iBAAK,CAACC,UAAU,CAACC,wBAAW,CAAQ;EACvE,IAAI,CAACH,KAAK,EAAE;IACV,MAAM,IAAII,KAAK,uCAAuC,CAAC;EACzD;EACA,OAAOJ,KAAK;AACd","ignoreList":[]}
1
+ {"version":3,"file":"useFormContext.js","names":["_react","_interopRequireDefault","require","_FormContext","useFormContext","props","React","useContext","FormContext","Error"],"sources":["src/useFormContext.ts"],"sourcesContent":["import z from 'zod'\nimport React from 'react'\nimport { FormContext, FormContextProps } from './FormContext'\n\nexport function useFormContext<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'you must pass a schema type'\n >,\n>(): FormContextProps<T> {\n const props: FormContextProps<T> | null = React.useContext(FormContext) as any\n if (!props) {\n throw new Error(`must be used inside a <FormProvider>`)\n }\n return props\n}\n"],"mappings":";;;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEO,SAASE,cAAcA,CAAA,EAKL;EACvB,IAAMC,KAAiC,GAAGC,iBAAK,CAACC,UAAU,CAACC,wBAAW,CAAQ;EAC9E,IAAI,CAACH,KAAK,EAAE;IACV,MAAM,IAAII,KAAK,uCAAuC,CAAC;EACzD;EACA,OAAOJ,KAAK;AACd","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useFormContext.mjs","names":["React","FormContext","useFormContext","props","useContext","Error"],"sources":["src/useFormContext.ts"],"sourcesContent":["import z from 'zod'\nimport React from 'react'\nimport { FormContext, FormContextProps } from './FormContext'\n\nexport function useFormContext<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'you must pass a schema type'\n >\n>(): FormContextProps<T> {\n const props: FormContextProps<T> = React.useContext(FormContext) as any\n if (!props) {\n throw new Error(`must be used inside a <FormProvider>`)\n }\n return props\n}\n"],"mappings":"AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW;AAEpB,OAAO,SAASC,cAAcA,CAAA,EAKL;EACvB,MAAMC,KAA0B,GAAGH,KAAK,CAACI,UAAU,CAACH,WAAW,CAAQ;EACvE,IAAI,CAACE,KAAK,EAAE;IACV,MAAM,IAAIE,KAAK,CAAC,sCAAsC,CAAC;EACzD;EACA,OAAOF,KAAK;AACd","ignoreList":[]}
1
+ {"version":3,"file":"useFormContext.mjs","names":["React","FormContext","useFormContext","props","useContext","Error"],"sources":["src/useFormContext.ts"],"sourcesContent":["import z from 'zod'\nimport React from 'react'\nimport { FormContext, FormContextProps } from './FormContext'\n\nexport function useFormContext<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'you must pass a schema type'\n >,\n>(): FormContextProps<T> {\n const props: FormContextProps<T> | null = React.useContext(FormContext) as any\n if (!props) {\n throw new Error(`must be used inside a <FormProvider>`)\n }\n return props\n}\n"],"mappings":"AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW;AAEpB,OAAO,SAASC,cAAcA,CAAA,EAKL;EACvB,MAAMC,KAAiC,GAAGH,KAAK,CAACI,UAAU,CAACH,WAAW,CAAQ;EAC9E,IAAI,CAACE,KAAK,EAAE;IACV,MAAM,IAAIE,KAAK,CAAC,sCAAsC,CAAC;EACzD;EACA,OAAOF,KAAK;AACd","ignoreList":[]}
@@ -1,7 +1,5 @@
1
1
  import z from 'zod';
2
2
  import { FormAction } from './FormAction';
3
3
  import { Dispatch } from 'redux';
4
- export declare const useFormDispatch: typeof useFormDispatchType;
5
- declare function useFormDispatchType<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'you must pass a schema type'>>(): Dispatch<FormAction<T>>;
6
- export {};
4
+ export declare const useFormDispatch: <T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, "you must pass a schema type">>() => Dispatch<FormAction<T>>;
7
5
  //# sourceMappingURL=useFormDispatch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormDispatch.d.ts","sourceRoot":"","sources":["src/useFormDispatch.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,eAAO,MAAM,eAAe,EAEvB,OAAO,mBAAmB,CAAA;AAE/B,OAAO,UAAU,mBAAmB,CAClC,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CACnC,CAAC,CAAC,QAAQ,EACV,6BAA6B,CAC9B,KACE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"useFormDispatch.d.ts","sourceRoot":"","sources":["src/useFormDispatch.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,eAAO,MAAM,eAAe,EAA2C,CACrE,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CACnC,CAAC,CAAC,QAAQ,EACV,6BAA6B,CAC9B,OACI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA"}