@jcoreio/zod-forms 1.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 (521) hide show
  1. package/FieldPath.d.ts +26 -0
  2. package/FieldPath.d.ts.map +1 -0
  3. package/FieldPath.js +155 -0
  4. package/FieldPath.js.map +1 -0
  5. package/FieldPath.mjs +138 -0
  6. package/FieldPath.mjs.map +1 -0
  7. package/FormAction.d.ts +15 -0
  8. package/FormAction.d.ts.map +1 -0
  9. package/FormAction.js +6 -0
  10. package/FormAction.js.map +1 -0
  11. package/FormAction.mjs +2 -0
  12. package/FormAction.mjs.map +1 -0
  13. package/FormContext.d.ts +39 -0
  14. package/FormContext.d.ts.map +1 -0
  15. package/FormContext.js +10 -0
  16. package/FormContext.js.map +1 -0
  17. package/FormContext.mjs +3 -0
  18. package/FormContext.mjs.map +1 -0
  19. package/FormState.d.ts +31 -0
  20. package/FormState.d.ts.map +1 -0
  21. package/FormState.js +6 -0
  22. package/FormState.js.map +1 -0
  23. package/FormState.mjs +2 -0
  24. package/FormState.mjs.map +1 -0
  25. package/FormStateContext.d.ts +8 -0
  26. package/FormStateContext.d.ts.map +1 -0
  27. package/FormStateContext.js +10 -0
  28. package/FormStateContext.js.map +1 -0
  29. package/FormStateContext.mjs +3 -0
  30. package/FormStateContext.mjs.map +1 -0
  31. package/LICENSE.md +21 -0
  32. package/README.md +154 -0
  33. package/actions/addHandlers.d.ts +15 -0
  34. package/actions/addHandlers.d.ts.map +1 -0
  35. package/actions/addHandlers.js +16 -0
  36. package/actions/addHandlers.js.map +1 -0
  37. package/actions/addHandlers.mjs +7 -0
  38. package/actions/addHandlers.mjs.map +1 -0
  39. package/actions/arrayActions.d.ts +113 -0
  40. package/actions/arrayActions.d.ts.map +1 -0
  41. package/actions/arrayActions.js +146 -0
  42. package/actions/arrayActions.js.map +1 -0
  43. package/actions/arrayActions.mjs +120 -0
  44. package/actions/arrayActions.mjs.map +1 -0
  45. package/actions/initialize.d.ts +13 -0
  46. package/actions/initialize.d.ts.map +1 -0
  47. package/actions/initialize.js +16 -0
  48. package/actions/initialize.js.map +1 -0
  49. package/actions/initialize.mjs +7 -0
  50. package/actions/initialize.mjs.map +1 -0
  51. package/actions/removeHandlers.d.ts +10 -0
  52. package/actions/removeHandlers.d.ts.map +1 -0
  53. package/actions/removeHandlers.js +16 -0
  54. package/actions/removeHandlers.js.map +1 -0
  55. package/actions/removeHandlers.mjs +7 -0
  56. package/actions/removeHandlers.mjs.map +1 -0
  57. package/actions/setMeta.d.ts +9 -0
  58. package/actions/setMeta.d.ts.map +1 -0
  59. package/actions/setMeta.js +14 -0
  60. package/actions/setMeta.js.map +1 -0
  61. package/actions/setMeta.mjs +8 -0
  62. package/actions/setMeta.mjs.map +1 -0
  63. package/actions/setMounted.d.ts +6 -0
  64. package/actions/setMounted.d.ts.map +1 -0
  65. package/actions/setMounted.js +13 -0
  66. package/actions/setMounted.js.map +1 -0
  67. package/actions/setMounted.mjs +7 -0
  68. package/actions/setMounted.mjs.map +1 -0
  69. package/actions/setRawValue.d.ts +9 -0
  70. package/actions/setRawValue.d.ts.map +1 -0
  71. package/actions/setRawValue.js +14 -0
  72. package/actions/setRawValue.js.map +1 -0
  73. package/actions/setRawValue.mjs +8 -0
  74. package/actions/setRawValue.mjs.map +1 -0
  75. package/actions/setSubmitStatus.d.ts +14 -0
  76. package/actions/setSubmitStatus.d.ts.map +1 -0
  77. package/actions/setSubmitStatus.js +16 -0
  78. package/actions/setSubmitStatus.js.map +1 -0
  79. package/actions/setSubmitStatus.mjs +7 -0
  80. package/actions/setSubmitStatus.mjs.map +1 -0
  81. package/actions/setValue.d.ts +12 -0
  82. package/actions/setValue.d.ts.map +1 -0
  83. package/actions/setValue.js +18 -0
  84. package/actions/setValue.js.map +1 -0
  85. package/actions/setValue.mjs +9 -0
  86. package/actions/setValue.mjs.map +1 -0
  87. package/actions/submit.d.ts +5 -0
  88. package/actions/submit.d.ts.map +1 -0
  89. package/actions/submit.js +12 -0
  90. package/actions/submit.js.map +1 -0
  91. package/actions/submit.mjs +6 -0
  92. package/actions/submit.mjs.map +1 -0
  93. package/actions/submitSucceeded.d.ts +5 -0
  94. package/actions/submitSucceeded.d.ts.map +1 -0
  95. package/actions/submitSucceeded.js +12 -0
  96. package/actions/submitSucceeded.js.map +1 -0
  97. package/actions/submitSucceeded.mjs +6 -0
  98. package/actions/submitSucceeded.mjs.map +1 -0
  99. package/createFormMiddleware.d.ts +6 -0
  100. package/createFormMiddleware.d.ts.map +1 -0
  101. package/createFormMiddleware.js +186 -0
  102. package/createFormMiddleware.js.map +1 -0
  103. package/createFormMiddleware.mjs +53 -0
  104. package/createFormMiddleware.mjs.map +1 -0
  105. package/createFormProvider.d.ts +7 -0
  106. package/createFormProvider.d.ts.map +1 -0
  107. package/createFormProvider.js +85 -0
  108. package/createFormProvider.js.map +1 -0
  109. package/createFormProvider.mjs +63 -0
  110. package/createFormProvider.mjs.map +1 -0
  111. package/createFormReducer.d.ts +9 -0
  112. package/createFormReducer.d.ts.map +1 -0
  113. package/createFormReducer.js +95 -0
  114. package/createFormReducer.js.map +1 -0
  115. package/createFormReducer.mjs +84 -0
  116. package/createFormReducer.mjs.map +1 -0
  117. package/createSelectFieldErrorMap.d.ts +32 -0
  118. package/createSelectFieldErrorMap.d.ts.map +1 -0
  119. package/createSelectFieldErrorMap.js +43 -0
  120. package/createSelectFieldErrorMap.js.map +1 -0
  121. package/createSelectFieldErrorMap.mjs +24 -0
  122. package/createSelectFieldErrorMap.mjs.map +1 -0
  123. package/createSelectFormStatus.d.ts +89 -0
  124. package/createSelectFormStatus.d.ts.map +1 -0
  125. package/createSelectFormStatus.js +54 -0
  126. package/createSelectFormStatus.js.map +1 -0
  127. package/createSelectFormStatus.mjs +28 -0
  128. package/createSelectFormStatus.mjs.map +1 -0
  129. package/createSelectFormValues.d.ts +45 -0
  130. package/createSelectFormValues.d.ts.map +1 -0
  131. package/createSelectFormValues.js +24 -0
  132. package/createSelectFormValues.js.map +1 -0
  133. package/createSelectFormValues.mjs +10 -0
  134. package/createSelectFormValues.mjs.map +1 -0
  135. package/createZodForm.d.ts +33 -0
  136. package/createZodForm.d.ts.map +1 -0
  137. package/createZodForm.js +51 -0
  138. package/createZodForm.js.map +1 -0
  139. package/createZodForm.mjs +46 -0
  140. package/createZodForm.mjs.map +1 -0
  141. package/index.d.ts +14 -0
  142. package/index.d.ts.map +1 -0
  143. package/index.js +76 -0
  144. package/index.js.map +1 -0
  145. package/index.mjs +11 -0
  146. package/index.mjs.map +1 -0
  147. package/initFormState.d.ts +4 -0
  148. package/initFormState.d.ts.map +1 -0
  149. package/initFormState.js +22 -0
  150. package/initFormState.js.map +1 -0
  151. package/initFormState.mjs +16 -0
  152. package/initFormState.mjs.map +1 -0
  153. package/package.json +49 -0
  154. package/reducers/addHandlers.d.ts +24 -0
  155. package/reducers/addHandlers.d.ts.map +1 -0
  156. package/reducers/addHandlers.js +24 -0
  157. package/reducers/addHandlers.js.map +1 -0
  158. package/reducers/addHandlers.mjs +21 -0
  159. package/reducers/addHandlers.mjs.map +1 -0
  160. package/reducers/arrayInsert.d.ts +7 -0
  161. package/reducers/arrayInsert.d.ts.map +1 -0
  162. package/reducers/arrayInsert.js +16 -0
  163. package/reducers/arrayInsert.js.map +1 -0
  164. package/reducers/arrayInsert.mjs +12 -0
  165. package/reducers/arrayInsert.mjs.map +1 -0
  166. package/reducers/arrayInsertRaw.d.ts +7 -0
  167. package/reducers/arrayInsertRaw.d.ts.map +1 -0
  168. package/reducers/arrayInsertRaw.js +22 -0
  169. package/reducers/arrayInsertRaw.js.map +1 -0
  170. package/reducers/arrayInsertRaw.mjs +14 -0
  171. package/reducers/arrayInsertRaw.mjs.map +1 -0
  172. package/reducers/arrayMove.d.ts +8 -0
  173. package/reducers/arrayMove.d.ts.map +1 -0
  174. package/reducers/arrayMove.js +25 -0
  175. package/reducers/arrayMove.js.map +1 -0
  176. package/reducers/arrayMove.mjs +16 -0
  177. package/reducers/arrayMove.mjs.map +1 -0
  178. package/reducers/arrayPop.d.ts +7 -0
  179. package/reducers/arrayPop.d.ts.map +1 -0
  180. package/reducers/arrayPop.js +13 -0
  181. package/reducers/arrayPop.js.map +1 -0
  182. package/reducers/arrayPop.mjs +5 -0
  183. package/reducers/arrayPop.mjs.map +1 -0
  184. package/reducers/arrayPush.d.ts +7 -0
  185. package/reducers/arrayPush.d.ts.map +1 -0
  186. package/reducers/arrayPush.js +15 -0
  187. package/reducers/arrayPush.js.map +1 -0
  188. package/reducers/arrayPush.mjs +11 -0
  189. package/reducers/arrayPush.mjs.map +1 -0
  190. package/reducers/arrayPushRaw.d.ts +7 -0
  191. package/reducers/arrayPushRaw.d.ts.map +1 -0
  192. package/reducers/arrayPushRaw.js +17 -0
  193. package/reducers/arrayPushRaw.js.map +1 -0
  194. package/reducers/arrayPushRaw.mjs +9 -0
  195. package/reducers/arrayPushRaw.mjs.map +1 -0
  196. package/reducers/arrayRemove.d.ts +7 -0
  197. package/reducers/arrayRemove.d.ts.map +1 -0
  198. package/reducers/arrayRemove.js +21 -0
  199. package/reducers/arrayRemove.js.map +1 -0
  200. package/reducers/arrayRemove.mjs +13 -0
  201. package/reducers/arrayRemove.mjs.map +1 -0
  202. package/reducers/arrayRemoveAll.d.ts +7 -0
  203. package/reducers/arrayRemoveAll.d.ts.map +1 -0
  204. package/reducers/arrayRemoveAll.js +14 -0
  205. package/reducers/arrayRemoveAll.js.map +1 -0
  206. package/reducers/arrayRemoveAll.mjs +8 -0
  207. package/reducers/arrayRemoveAll.mjs.map +1 -0
  208. package/reducers/arrayShift.d.ts +7 -0
  209. package/reducers/arrayShift.d.ts.map +1 -0
  210. package/reducers/arrayShift.js +14 -0
  211. package/reducers/arrayShift.js.map +1 -0
  212. package/reducers/arrayShift.mjs +8 -0
  213. package/reducers/arrayShift.mjs.map +1 -0
  214. package/reducers/arraySplice.d.ts +7 -0
  215. package/reducers/arraySplice.d.ts.map +1 -0
  216. package/reducers/arraySplice.js +20 -0
  217. package/reducers/arraySplice.js.map +1 -0
  218. package/reducers/arraySplice.mjs +14 -0
  219. package/reducers/arraySplice.mjs.map +1 -0
  220. package/reducers/arraySpliceRaw.d.ts +7 -0
  221. package/reducers/arraySpliceRaw.d.ts.map +1 -0
  222. package/reducers/arraySpliceRaw.js +26 -0
  223. package/reducers/arraySpliceRaw.js.map +1 -0
  224. package/reducers/arraySpliceRaw.mjs +18 -0
  225. package/reducers/arraySpliceRaw.mjs.map +1 -0
  226. package/reducers/arraySwap.d.ts +8 -0
  227. package/reducers/arraySwap.d.ts.map +1 -0
  228. package/reducers/arraySwap.js +27 -0
  229. package/reducers/arraySwap.js.map +1 -0
  230. package/reducers/arraySwap.mjs +18 -0
  231. package/reducers/arraySwap.mjs.map +1 -0
  232. package/reducers/arrayUnshift.d.ts +7 -0
  233. package/reducers/arrayUnshift.d.ts.map +1 -0
  234. package/reducers/arrayUnshift.js +15 -0
  235. package/reducers/arrayUnshift.js.map +1 -0
  236. package/reducers/arrayUnshift.mjs +11 -0
  237. package/reducers/arrayUnshift.mjs.map +1 -0
  238. package/reducers/arrayUnshiftRaw.d.ts +7 -0
  239. package/reducers/arrayUnshiftRaw.d.ts.map +1 -0
  240. package/reducers/arrayUnshiftRaw.js +17 -0
  241. package/reducers/arrayUnshiftRaw.js.map +1 -0
  242. package/reducers/arrayUnshiftRaw.mjs +9 -0
  243. package/reducers/arrayUnshiftRaw.mjs.map +1 -0
  244. package/reducers/initialize.d.ts +46 -0
  245. package/reducers/initialize.d.ts.map +1 -0
  246. package/reducers/initialize.js +46 -0
  247. package/reducers/initialize.js.map +1 -0
  248. package/reducers/initialize.mjs +38 -0
  249. package/reducers/initialize.mjs.map +1 -0
  250. package/reducers/removeHandlers.d.ts +24 -0
  251. package/reducers/removeHandlers.d.ts.map +1 -0
  252. package/reducers/removeHandlers.js +24 -0
  253. package/reducers/removeHandlers.js.map +1 -0
  254. package/reducers/removeHandlers.mjs +21 -0
  255. package/reducers/removeHandlers.mjs.map +1 -0
  256. package/reducers/setMeta.d.ts +6 -0
  257. package/reducers/setMeta.d.ts.map +1 -0
  258. package/reducers/setMeta.js +28 -0
  259. package/reducers/setMeta.js.map +1 -0
  260. package/reducers/setMeta.mjs +21 -0
  261. package/reducers/setMeta.mjs.map +1 -0
  262. package/reducers/setRawValue.d.ts +27 -0
  263. package/reducers/setRawValue.d.ts.map +1 -0
  264. package/reducers/setRawValue.js +35 -0
  265. package/reducers/setRawValue.js.map +1 -0
  266. package/reducers/setRawValue.mjs +26 -0
  267. package/reducers/setRawValue.mjs.map +1 -0
  268. package/reducers/setSubmitStatus.d.ts +24 -0
  269. package/reducers/setSubmitStatus.d.ts.map +1 -0
  270. package/reducers/setSubmitStatus.js +18 -0
  271. package/reducers/setSubmitStatus.js.map +1 -0
  272. package/reducers/setSubmitStatus.mjs +12 -0
  273. package/reducers/setSubmitStatus.mjs.map +1 -0
  274. package/reducers/setValue.d.ts +28 -0
  275. package/reducers/setValue.d.ts.map +1 -0
  276. package/reducers/setValue.js +41 -0
  277. package/reducers/setValue.js.map +1 -0
  278. package/reducers/setValue.mjs +32 -0
  279. package/reducers/setValue.mjs.map +1 -0
  280. package/reducers/submitSucceeded.d.ts +23 -0
  281. package/reducers/submitSucceeded.d.ts.map +1 -0
  282. package/reducers/submitSucceeded.js +22 -0
  283. package/reducers/submitSucceeded.js.map +1 -0
  284. package/reducers/submitSucceeded.mjs +13 -0
  285. package/reducers/submitSucceeded.mjs.map +1 -0
  286. package/reducers/util/getInverseArrayElementSchema.d.ts +3 -0
  287. package/reducers/util/getInverseArrayElementSchema.d.ts.map +1 -0
  288. package/reducers/util/getInverseArrayElementSchema.js +14 -0
  289. package/reducers/util/getInverseArrayElementSchema.js.map +1 -0
  290. package/reducers/util/getInverseArrayElementSchema.mjs +8 -0
  291. package/reducers/util/getInverseArrayElementSchema.mjs.map +1 -0
  292. package/reducers/util/updateRawArray.d.ts +7 -0
  293. package/reducers/util/updateRawArray.d.ts.map +1 -0
  294. package/reducers/util/updateRawArray.js +14 -0
  295. package/reducers/util/updateRawArray.js.map +1 -0
  296. package/reducers/util/updateRawArray.mjs +8 -0
  297. package/reducers/util/updateRawArray.mjs.map +1 -0
  298. package/src/FieldPath.ts +215 -0
  299. package/src/FormAction.ts +26 -0
  300. package/src/FormContext.ts +44 -0
  301. package/src/FormState.ts +36 -0
  302. package/src/FormStateContext.ts +13 -0
  303. package/src/actions/addHandlers.ts +23 -0
  304. package/src/actions/arrayActions.ts +183 -0
  305. package/src/actions/initialize.ts +16 -0
  306. package/src/actions/removeHandlers.ts +13 -0
  307. package/src/actions/setMeta.ts +17 -0
  308. package/src/actions/setMounted.ts +8 -0
  309. package/src/actions/setRawValue.ts +17 -0
  310. package/src/actions/setSubmitStatus.ts +26 -0
  311. package/src/actions/setValue.ts +21 -0
  312. package/src/actions/submit.ts +7 -0
  313. package/src/actions/submitSucceeded.ts +7 -0
  314. package/src/createFormMiddleware.ts +74 -0
  315. package/src/createFormProvider.tsx +101 -0
  316. package/src/createFormReducer.ts +91 -0
  317. package/src/createSelectFieldErrorMap.ts +47 -0
  318. package/src/createSelectFormStatus.ts +41 -0
  319. package/src/createSelectFormValues.ts +16 -0
  320. package/src/createZodForm.ts +57 -0
  321. package/src/index.ts +32 -0
  322. package/src/initFormState.ts +18 -0
  323. package/src/reducers/addHandlers.ts +21 -0
  324. package/src/reducers/arrayInsert.ts +19 -0
  325. package/src/reducers/arrayInsertRaw.ts +22 -0
  326. package/src/reducers/arrayMove.ts +36 -0
  327. package/src/reducers/arrayPop.ts +16 -0
  328. package/src/reducers/arrayPush.ts +20 -0
  329. package/src/reducers/arrayPushRaw.ts +18 -0
  330. package/src/reducers/arrayRemove.ts +22 -0
  331. package/src/reducers/arrayRemoveAll.ts +15 -0
  332. package/src/reducers/arrayShift.ts +15 -0
  333. package/src/reducers/arraySplice.ts +17 -0
  334. package/src/reducers/arraySpliceRaw.ts +30 -0
  335. package/src/reducers/arraySwap.ts +29 -0
  336. package/src/reducers/arrayUnshift.ts +16 -0
  337. package/src/reducers/arrayUnshiftRaw.ts +18 -0
  338. package/src/reducers/initialize.ts +47 -0
  339. package/src/reducers/removeHandlers.ts +21 -0
  340. package/src/reducers/setMeta.ts +26 -0
  341. package/src/reducers/setRawValue.ts +40 -0
  342. package/src/reducers/setSubmitStatus.ts +15 -0
  343. package/src/reducers/setValue.ts +49 -0
  344. package/src/reducers/submitSucceeded.ts +17 -0
  345. package/src/reducers/util/getInverseArrayElementSchema.ts +9 -0
  346. package/src/reducers/util/updateRawArray.ts +25 -0
  347. package/src/useArrayField.ts +161 -0
  348. package/src/useField.ts +152 -0
  349. package/src/useFormContext.ts +11 -0
  350. package/src/useFormDispatch.ts +13 -0
  351. package/src/useFormSelector.ts +9 -0
  352. package/src/useFormStatus.ts +14 -0
  353. package/src/useFormValues.ts +8 -0
  354. package/src/useHtmlField.ts +235 -0
  355. package/src/useInitialize.ts +14 -0
  356. package/src/useSubmit.ts +29 -0
  357. package/src/util/PathInSchema.ts +7 -0
  358. package/src/util/PathInType.ts +26 -0
  359. package/src/util/SchemaAt.ts +68 -0
  360. package/src/util/acceptsArray.ts +72 -0
  361. package/src/util/acceptsBigint.ts +71 -0
  362. package/src/util/acceptsNumber.ts +71 -0
  363. package/src/util/bindActionsToField.ts +22 -0
  364. package/src/util/get.ts +10 -0
  365. package/src/util/getArrayElementSchema.ts +74 -0
  366. package/src/util/maybeParse.ts +9 -0
  367. package/src/util/parsePathstring.ts +119 -0
  368. package/src/util/pathstring.ts +32 -0
  369. package/src/util/set.ts +25 -0
  370. package/src/util/setAdd.ts +6 -0
  371. package/src/util/setDelete.ts +6 -0
  372. package/useArrayField.d.ts +34 -0
  373. package/useArrayField.d.ts.map +1 -0
  374. package/useArrayField.js +99 -0
  375. package/useArrayField.js.map +1 -0
  376. package/useArrayField.mjs +75 -0
  377. package/useArrayField.mjs.map +1 -0
  378. package/useField.d.ts +34 -0
  379. package/useField.d.ts.map +1 -0
  380. package/useField.js +98 -0
  381. package/useField.js.map +1 -0
  382. package/useField.mjs +75 -0
  383. package/useField.mjs.map +1 -0
  384. package/useFormContext.d.ts +4 -0
  385. package/useFormContext.d.ts.map +1 -0
  386. package/useFormContext.js +17 -0
  387. package/useFormContext.js.map +1 -0
  388. package/useFormContext.mjs +10 -0
  389. package/useFormContext.mjs.map +1 -0
  390. package/useFormDispatch.d.ts +7 -0
  391. package/useFormDispatch.d.ts.map +1 -0
  392. package/useFormDispatch.js +10 -0
  393. package/useFormDispatch.js.map +1 -0
  394. package/useFormDispatch.mjs +4 -0
  395. package/useFormDispatch.mjs.map +1 -0
  396. package/useFormSelector.d.ts +6 -0
  397. package/useFormSelector.d.ts.map +1 -0
  398. package/useFormSelector.js +10 -0
  399. package/useFormSelector.js.map +1 -0
  400. package/useFormSelector.mjs +4 -0
  401. package/useFormSelector.mjs.map +1 -0
  402. package/useFormStatus.d.ts +13 -0
  403. package/useFormStatus.d.ts.map +1 -0
  404. package/useFormStatus.js +15 -0
  405. package/useFormStatus.js.map +1 -0
  406. package/useFormStatus.mjs +10 -0
  407. package/useFormStatus.mjs.map +1 -0
  408. package/useFormValues.d.ts +8 -0
  409. package/useFormValues.d.ts.map +1 -0
  410. package/useFormValues.js +14 -0
  411. package/useFormValues.js.map +1 -0
  412. package/useFormValues.mjs +9 -0
  413. package/useFormValues.mjs.map +1 -0
  414. package/useHtmlField.d.ts +41 -0
  415. package/useHtmlField.d.ts.map +1 -0
  416. package/useHtmlField.js +161 -0
  417. package/useHtmlField.js.map +1 -0
  418. package/useHtmlField.mjs +148 -0
  419. package/useHtmlField.mjs.map +1 -0
  420. package/useInitialize.d.ts +5 -0
  421. package/useInitialize.d.ts.map +1 -0
  422. package/useInitialize.js +18 -0
  423. package/useInitialize.js.map +1 -0
  424. package/useInitialize.mjs +11 -0
  425. package/useInitialize.mjs.map +1 -0
  426. package/useSubmit.d.ts +5 -0
  427. package/useSubmit.d.ts.map +1 -0
  428. package/useSubmit.js +53 -0
  429. package/useSubmit.js.map +1 -0
  430. package/useSubmit.mjs +39 -0
  431. package/useSubmit.mjs.map +1 -0
  432. package/util/PathInSchema.d.ts +5 -0
  433. package/util/PathInSchema.d.ts.map +1 -0
  434. package/util/PathInSchema.js +6 -0
  435. package/util/PathInSchema.js.map +1 -0
  436. package/util/PathInSchema.mjs +2 -0
  437. package/util/PathInSchema.mjs.map +1 -0
  438. package/util/PathInType.d.ts +11 -0
  439. package/util/PathInType.d.ts.map +1 -0
  440. package/util/PathInType.js +6 -0
  441. package/util/PathInType.js.map +1 -0
  442. package/util/PathInType.mjs +2 -0
  443. package/util/PathInType.mjs.map +1 -0
  444. package/util/SchemaAt.d.ts +5 -0
  445. package/util/SchemaAt.d.ts.map +1 -0
  446. package/util/SchemaAt.js +6 -0
  447. package/util/SchemaAt.js.map +1 -0
  448. package/util/SchemaAt.mjs +2 -0
  449. package/util/SchemaAt.mjs.map +1 -0
  450. package/util/acceptsArray.d.ts +3 -0
  451. package/util/acceptsArray.d.ts.map +1 -0
  452. package/util/acceptsArray.js +89 -0
  453. package/util/acceptsArray.js.map +1 -0
  454. package/util/acceptsArray.mjs +105 -0
  455. package/util/acceptsArray.mjs.map +1 -0
  456. package/util/acceptsBigint.d.ts +3 -0
  457. package/util/acceptsBigint.d.ts.map +1 -0
  458. package/util/acceptsBigint.js +88 -0
  459. package/util/acceptsBigint.js.map +1 -0
  460. package/util/acceptsBigint.mjs +104 -0
  461. package/util/acceptsBigint.mjs.map +1 -0
  462. package/util/acceptsNumber.d.ts +3 -0
  463. package/util/acceptsNumber.d.ts.map +1 -0
  464. package/util/acceptsNumber.js +88 -0
  465. package/util/acceptsNumber.js.map +1 -0
  466. package/util/acceptsNumber.mjs +104 -0
  467. package/util/acceptsNumber.mjs.map +1 -0
  468. package/util/bindActionsToField.d.ts +7 -0
  469. package/util/bindActionsToField.d.ts.map +1 -0
  470. package/util/bindActionsToField.js +22 -0
  471. package/util/bindActionsToField.js.map +1 -0
  472. package/util/bindActionsToField.mjs +4 -0
  473. package/util/bindActionsToField.mjs.map +1 -0
  474. package/util/get.d.ts +2 -0
  475. package/util/get.d.ts.map +1 -0
  476. package/util/get.js +12 -0
  477. package/util/get.js.map +1 -0
  478. package/util/get.mjs +4 -0
  479. package/util/get.mjs.map +1 -0
  480. package/util/getArrayElementSchema.d.ts +3 -0
  481. package/util/getArrayElementSchema.d.ts.map +1 -0
  482. package/util/getArrayElementSchema.js +87 -0
  483. package/util/getArrayElementSchema.js.map +1 -0
  484. package/util/getArrayElementSchema.mjs +102 -0
  485. package/util/getArrayElementSchema.mjs.map +1 -0
  486. package/util/maybeParse.d.ts +3 -0
  487. package/util/maybeParse.d.ts.map +1 -0
  488. package/util/maybeParse.js +11 -0
  489. package/util/maybeParse.js.map +1 -0
  490. package/util/maybeParse.mjs +5 -0
  491. package/util/maybeParse.mjs.map +1 -0
  492. package/util/parsePathstring.d.ts +40 -0
  493. package/util/parsePathstring.d.ts.map +1 -0
  494. package/util/parsePathstring.js +55 -0
  495. package/util/parsePathstring.js.map +1 -0
  496. package/util/parsePathstring.mjs +35 -0
  497. package/util/parsePathstring.mjs.map +1 -0
  498. package/util/pathstring.d.ts +13 -0
  499. package/util/pathstring.d.ts.map +1 -0
  500. package/util/pathstring.js +15 -0
  501. package/util/pathstring.js.map +1 -0
  502. package/util/pathstring.mjs +7 -0
  503. package/util/pathstring.mjs.map +1 -0
  504. package/util/set.d.ts +2 -0
  505. package/util/set.d.ts.map +1 -0
  506. package/util/set.js +33 -0
  507. package/util/set.js.map +1 -0
  508. package/util/set.mjs +23 -0
  509. package/util/set.mjs.map +1 -0
  510. package/util/setAdd.d.ts +2 -0
  511. package/util/setAdd.d.ts.map +1 -0
  512. package/util/setAdd.js +13 -0
  513. package/util/setAdd.js.map +1 -0
  514. package/util/setAdd.mjs +7 -0
  515. package/util/setAdd.mjs.map +1 -0
  516. package/util/setDelete.d.ts +2 -0
  517. package/util/setDelete.d.ts.map +1 -0
  518. package/util/setDelete.js +13 -0
  519. package/util/setDelete.js.map +1 -0
  520. package/util/setDelete.mjs +7 -0
  521. package/util/setDelete.mjs.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormSelector.d.ts","sourceRoot":"","sources":["src/useFormSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,eAAO,MAAM,eAAe,4CAAuC,CAAA;AACnE,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,IAAI,oBAAoB,CAC7E,SAAS,CAAC,CAAC,CAAC,CACb,CAAA"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useFormSelector = void 0;
7
+ var _reactRedux = require("react-redux");
8
+ var _FormStateContext = require("./FormStateContext.js");
9
+ var useFormSelector = exports.useFormSelector = (0, _reactRedux.createSelectorHook)(_FormStateContext.FormStateContext);
10
+ //# sourceMappingURL=useFormSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormSelector.js","names":["_reactRedux","require","_FormStateContext","useFormSelector","exports","createSelectorHook","FormStateContext"],"sources":["src/useFormSelector.ts"],"sourcesContent":["import { createSelectorHook, TypedUseSelectorHook } from 'react-redux'\nimport { FormStateContext } from './FormStateContext'\nimport { FormState } from './FormState'\nimport z from 'zod'\n\nexport const useFormSelector = createSelectorHook(FormStateContext)\nexport type TypedUseFormSelector<T extends z.ZodTypeAny> = TypedUseSelectorHook<\n FormState<T>\n>\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAIO,IAAME,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,IAAAE,8BAAkB,EAACC,kCAAgB,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import { createSelectorHook } from 'react-redux';
2
+ import { FormStateContext } from "./FormStateContext.mjs";
3
+ export const useFormSelector = createSelectorHook(FormStateContext);
4
+ //# sourceMappingURL=useFormSelector.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormSelector.mjs","names":["createSelectorHook","FormStateContext","useFormSelector"],"sources":["src/useFormSelector.ts"],"sourcesContent":["import { createSelectorHook, TypedUseSelectorHook } from 'react-redux'\nimport { FormStateContext } from './FormStateContext'\nimport { FormState } from './FormState'\nimport z from 'zod'\n\nexport const useFormSelector = createSelectorHook(FormStateContext)\nexport type TypedUseFormSelector<T extends z.ZodTypeAny> = TypedUseSelectorHook<\n FormState<T>\n>\n"],"mappings":"AAAA,SAASA,kBAAkB,QAA8B,aAAa;AACtE,SAASC,gBAAgB;AAIzB,OAAO,MAAMC,eAAe,GAAGF,kBAAkB,CAACC,gBAAgB,CAAC","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ export declare function useFormStatus(): {
2
+ initialized: boolean;
3
+ submitting: boolean;
4
+ submitSucceeded: boolean;
5
+ submitFailed: boolean;
6
+ submitError: Error | undefined;
7
+ validationError: any;
8
+ valid: boolean;
9
+ invalid: boolean;
10
+ pristine: boolean;
11
+ dirty: boolean;
12
+ };
13
+ //# sourceMappingURL=useFormStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormStatus.d.ts","sourceRoot":"","sources":["src/useFormStatus.ts"],"names":[],"mappings":"AAUA,wBAAgB,aAAa;;;;;;;;;;;EAG5B"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useFormStatus = useFormStatus;
7
+ var _useFormSelector = require("./useFormSelector.js");
8
+ var _useFormContext2 = require("./useFormContext.js");
9
+ var useFormSelector = _useFormSelector.useFormSelector;
10
+ function useFormStatus() {
11
+ var _useFormContext = (0, _useFormContext2.useFormContext)(),
12
+ selectFormStatus = _useFormContext.selectFormStatus;
13
+ return useFormSelector(selectFormStatus);
14
+ }
15
+ //# sourceMappingURL=useFormStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormStatus.js","names":["_useFormSelector","require","_useFormContext2","useFormSelector","untypedUseFormSelector","useFormStatus","_useFormContext","useFormContext","selectFormStatus"],"sources":["src/useFormStatus.ts"],"sourcesContent":["import z from 'zod'\nimport {\n useFormSelector as untypedUseFormSelector,\n TypedUseFormSelector,\n} from './useFormSelector'\nimport { useFormContext } from './useFormContext'\n\nconst useFormSelector =\n untypedUseFormSelector as TypedUseFormSelector<z.ZodTypeAny>\n\nexport function useFormStatus() {\n const { selectFormStatus } = useFormContext()\n return useFormSelector(selectFormStatus)\n}\n"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AAIA,IAAAC,gBAAA,GAAAD,OAAA;AAEA,IAAME,eAAe,GACnBC,gCAA4D;AAEvD,SAASC,aAAaA,CAAA,EAAG;EAC9B,IAAAC,eAAA,GAA6B,IAAAC,+BAAc,EAAC,CAAC;IAArCC,gBAAgB,GAAAF,eAAA,CAAhBE,gBAAgB;EACxB,OAAOL,eAAe,CAACK,gBAAgB,CAAC;AAC1C","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import { useFormSelector as untypedUseFormSelector } from "./useFormSelector.mjs";
2
+ import { useFormContext } from "./useFormContext.mjs";
3
+ const useFormSelector = untypedUseFormSelector;
4
+ export function useFormStatus() {
5
+ const {
6
+ selectFormStatus
7
+ } = useFormContext();
8
+ return useFormSelector(selectFormStatus);
9
+ }
10
+ //# sourceMappingURL=useFormStatus.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormStatus.mjs","names":["useFormSelector","untypedUseFormSelector","useFormContext","useFormStatus","selectFormStatus"],"sources":["src/useFormStatus.ts"],"sourcesContent":["import z from 'zod'\nimport {\n useFormSelector as untypedUseFormSelector,\n TypedUseFormSelector,\n} from './useFormSelector'\nimport { useFormContext } from './useFormContext'\n\nconst useFormSelector =\n untypedUseFormSelector as TypedUseFormSelector<z.ZodTypeAny>\n\nexport function useFormStatus() {\n const { selectFormStatus } = useFormContext()\n return useFormSelector(selectFormStatus)\n}\n"],"mappings":"AACA,SACEA,eAAe,IAAIC,sBAAsB;AAG3C,SAASC,cAAc;AAEvB,MAAMF,eAAe,GACnBC,sBAA4D;AAE9D,OAAO,SAASE,aAAaA,CAAA,EAAG;EAC9B,MAAM;IAAEC;EAAiB,CAAC,GAAGF,cAAc,CAAC,CAAC;EAC7C,OAAOF,eAAe,CAACI,gBAAgB,CAAC;AAC1C","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import z from 'zod';
2
+ export declare function useFormValues<T extends z.ZodTypeAny>(): {
3
+ values: z.output<T> | undefined;
4
+ rawValues: unknown;
5
+ initialValues: z.output<T> | undefined;
6
+ rawInitialValues: unknown;
7
+ };
8
+ //# sourceMappingURL=useFormValues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormValues.d.ts","sourceRoot":"","sources":["src/useFormValues.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAInB,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;;;;;EAGnD"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useFormValues = useFormValues;
7
+ var _useFormSelector = require("./useFormSelector.js");
8
+ var _useFormContext2 = require("./useFormContext.js");
9
+ function useFormValues() {
10
+ var _useFormContext = (0, _useFormContext2.useFormContext)(),
11
+ selectFormValues = _useFormContext.selectFormValues;
12
+ return (0, _useFormSelector.useFormSelector)(selectFormValues);
13
+ }
14
+ //# sourceMappingURL=useFormValues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormValues.js","names":["_useFormSelector","require","_useFormContext2","useFormValues","_useFormContext","useFormContext","selectFormValues","useFormSelector"],"sources":["src/useFormValues.ts"],"sourcesContent":["import z from 'zod'\nimport { useFormSelector, TypedUseFormSelector } from './useFormSelector'\nimport { useFormContext } from './useFormContext'\n\nexport function useFormValues<T extends z.ZodTypeAny>() {\n const { selectFormValues } = useFormContext<T>()\n return (useFormSelector as TypedUseFormSelector<T>)(selectFormValues)\n}\n"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEO,SAASE,aAAaA,CAAA,EAA2B;EACtD,IAAAC,eAAA,GAA6B,IAAAC,+BAAc,EAAI,CAAC;IAAxCC,gBAAgB,GAAAF,eAAA,CAAhBE,gBAAgB;EACxB,OAAO,IAACC,gCAAe,EAA6BD,gBAAgB,CAAC;AACvE","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import { useFormSelector } from "./useFormSelector.mjs";
2
+ import { useFormContext } from "./useFormContext.mjs";
3
+ export function useFormValues() {
4
+ const {
5
+ selectFormValues
6
+ } = useFormContext();
7
+ return useFormSelector(selectFormValues);
8
+ }
9
+ //# sourceMappingURL=useFormValues.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormValues.mjs","names":["useFormSelector","useFormContext","useFormValues","selectFormValues"],"sources":["src/useFormValues.ts"],"sourcesContent":["import z from 'zod'\nimport { useFormSelector, TypedUseFormSelector } from './useFormSelector'\nimport { useFormContext } from './useFormContext'\n\nexport function useFormValues<T extends z.ZodTypeAny>() {\n const { selectFormValues } = useFormContext<T>()\n return (useFormSelector as TypedUseFormSelector<T>)(selectFormValues)\n}\n"],"mappings":"AACA,SAASA,eAAe;AACxB,SAASC,cAAc;AAEvB,OAAO,SAASC,aAAaA,CAAA,EAA2B;EACtD,MAAM;IAAEC;EAAiB,CAAC,GAAGF,cAAc,CAAI,CAAC;EAChD,OAAQD,eAAe,CAA6BG,gBAAgB,CAAC;AACvE","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ import z from 'zod';
2
+ import { FieldPath } from './FieldPath';
3
+ import { UseFieldProps } from './useField';
4
+ import React, { HTMLInputTypeAttribute } from 'react';
5
+ import { PathInSchema, PathstringInSchema } from './util/PathInSchema';
6
+ import { parsePathstring } from './util/parsePathstring';
7
+ import { SchemaAt } from './util/SchemaAt';
8
+ export type HtmlFieldInputProps = {
9
+ name: string;
10
+ type: HTMLInputTypeAttribute;
11
+ value: string;
12
+ checked?: boolean;
13
+ onChange: React.ChangeEventHandler;
14
+ onFocus: React.FocusEventHandler;
15
+ onBlur: React.FocusEventHandler;
16
+ };
17
+ export type ValidUseHtmlFieldProps<Field extends FieldPath> = {
18
+ input: HtmlFieldInputProps;
19
+ meta: UseFieldProps<Field>;
20
+ };
21
+ export type UseHtmlFieldProps<Field extends FieldPath> = z.input<Field['schema']> extends string | number | bigint | boolean | null | undefined ? {
22
+ input: HtmlFieldInputProps;
23
+ meta: UseFieldProps<Field>;
24
+ } : {
25
+ ERROR: 'field schema input must be a nullish string, number, boolean or bigint';
26
+ };
27
+ type UseHtmlFieldOptions<Field, Schema extends z.ZodTypeAny> = {
28
+ field: Field;
29
+ type: z.input<Schema> extends boolean | null | undefined ? 'checkbox' : Exclude<HTMLInputTypeAttribute, 'checkbox'>;
30
+ normalizeOnBlur?: boolean;
31
+ };
32
+ export interface TypedUseHtmlField<T extends z.ZodTypeAny> {
33
+ <Field extends FieldPath>(options: UseHtmlFieldOptions<Field, Field['schema']>): UseHtmlFieldProps<Field>;
34
+ <Path extends PathInSchema<T>>(options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>;
35
+ <Path extends PathstringInSchema<T>>(options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>;
36
+ }
37
+ export declare function useHtmlField<Field extends FieldPath>(options: UseHtmlFieldOptions<Field, Field['schema']>): UseHtmlFieldProps<Field>;
38
+ export declare function useHtmlField<T extends z.ZodTypeAny, Path extends PathInSchema<T>>(options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>;
39
+ export declare function useHtmlField<T extends z.ZodTypeAny, Path extends PathstringInSchema<T>>(options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>;
40
+ export {};
41
+ //# sourceMappingURL=useHtmlField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHtmlField.d.ts","sourceRoot":"","sources":["src/useHtmlField.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useHtmlField = useHtmlField;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _FieldPath = require("./FieldPath.js");
12
+ var _useField = require("./useField.js");
13
+ var _react = _interopRequireDefault(require("react"));
14
+ var _zodInvertible = require("zod-invertible");
15
+ var _useFormContext2 = require("./useFormContext.js");
16
+ var _acceptsNumber = require("./util/acceptsNumber.js");
17
+ var _acceptsBigint = require("./util/acceptsBigint.js");
18
+ var _excluded = ["value", "rawValue", "initialValue", "rawInitialValue", "setValue", "setRawValue", "setMeta"],
19
+ _excluded2 = ["field"];
20
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22
+ function useHtmlFieldBase(options) {
23
+ var field = options.field,
24
+ type = options.type,
25
+ _options$normalizeOnB = options.normalizeOnBlur,
26
+ normalizeOnBlur = _options$normalizeOnB === void 0 ? true : _options$normalizeOnB;
27
+ var props = (0, _useField.useField)(field);
28
+ var value = props.value,
29
+ rawValue = props.rawValue,
30
+ initialValue = props.initialValue,
31
+ rawInitialValue = props.rawInitialValue,
32
+ setValue = props.setValue,
33
+ setRawValue = props.setRawValue,
34
+ setMeta = props.setMeta,
35
+ meta = (0, _objectWithoutProperties2["default"])(props, _excluded);
36
+ var schema = field.schema;
37
+
38
+ // tempRawValue is used for storing blank text when we've coerced the
39
+ // raw value to null or undefined, or storing numeric text when we've
40
+ // coerced the raw value to a number or bigint.
41
+ // This way we can set a raw value that will parse better in the form
42
+ // state without interfering with the text the user is typing.
43
+ var _React$useState = _react["default"].useState(rawValue),
44
+ _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
45
+ tempRawValue = _React$useState2[0],
46
+ setTempRawValue = _React$useState2[1];
47
+ var tryNumber = _react["default"].useMemo(function () {
48
+ return (0, _acceptsNumber.acceptsNumber)(schema);
49
+ }, [schema]);
50
+ var tryBigint = _react["default"].useMemo(function () {
51
+ return (0, _acceptsBigint.acceptsBigint)(schema);
52
+ }, [schema]);
53
+ var onChange = _react["default"].useCallback(function (e) {
54
+ if (e.currentTarget instanceof HTMLInputElement) {
55
+ var _rawValue = getRawValue(e.currentTarget);
56
+ var normalized = normalizeRawValue(_rawValue, {
57
+ schema: schema,
58
+ tryNumber: tryNumber,
59
+ tryBigint: tryBigint
60
+ });
61
+ if (typeof _rawValue === 'string' && typeof normalized !== 'string') {
62
+ setTempRawValue(_rawValue);
63
+ }
64
+ setRawValue(normalized);
65
+ }
66
+ }, [getRawValue, setRawValue, schema]);
67
+ var onFocus = _react["default"].useCallback(function () {
68
+ setMeta({
69
+ visited: true
70
+ });
71
+ }, []);
72
+ var onBlur = _react["default"].useCallback(function (e) {
73
+ if (e.currentTarget instanceof HTMLInputElement) {
74
+ var _rawValue2 = normalizeRawValue(getRawValue(e.currentTarget), {
75
+ schema: schema,
76
+ tryNumber: tryNumber,
77
+ tryBigint: tryBigint
78
+ });
79
+ if (normalizeOnBlur) {
80
+ var parsed = field.schema.safeParse(_rawValue2);
81
+ var formatted = parsed.success ? (0, _zodInvertible.invert)(field.schema).safeParse(parsed.data) : undefined;
82
+ if (formatted !== null && formatted !== void 0 && formatted.success) _rawValue2 = formatted.data;
83
+ }
84
+ setRawValue(_rawValue2);
85
+ setTempRawValue(undefined);
86
+ }
87
+ setMeta({
88
+ visited: true,
89
+ touched: true
90
+ });
91
+ }, [getRawValue, setRawValue, schema]);
92
+ return _react["default"].useMemo(function () {
93
+ return {
94
+ input: _objectSpread(_objectSpread({
95
+ name: field.pathstring,
96
+ type: type,
97
+ value: typeof rawValue === 'boolean' ? String(rawValue) : typeof rawValue === 'string' ? rawValue || tempRawValue || '' : tempRawValue || (rawValue == null ? '' : String(rawValue) || '')
98
+ }, type === 'checkbox' && {
99
+ checked: Boolean(rawValue)
100
+ }), {}, {
101
+ onChange: onChange,
102
+ onFocus: onFocus,
103
+ onBlur: onBlur
104
+ }),
105
+ meta: _objectSpread(_objectSpread({}, meta), {}, {
106
+ value: value,
107
+ rawValue: rawValue,
108
+ initialValue: initialValue,
109
+ rawInitialValue: rawInitialValue,
110
+ setValue: setValue,
111
+ setRawValue: setRawValue,
112
+ setMeta: setMeta
113
+ })
114
+ };
115
+ }, [props, tempRawValue, onChange]);
116
+ }
117
+ function getRawValue(el) {
118
+ return el.type === 'checkbox' ? el.checked : el.value;
119
+ }
120
+ function normalizeBlank(schema) {
121
+ if (schema.safeParse(undefined).success) return undefined;
122
+ if (schema.safeParse(null).success) return null;
123
+ return undefined;
124
+ }
125
+ function safeBigInt(rawValue) {
126
+ try {
127
+ return BigInt(rawValue);
128
+ } catch (error) {
129
+ return undefined;
130
+ }
131
+ }
132
+ function normalizeRawValue(rawValue, _ref) {
133
+ var schema = _ref.schema,
134
+ tryNumber = _ref.tryNumber,
135
+ tryBigint = _ref.tryBigint;
136
+ if (typeof rawValue === 'boolean') return rawValue;
137
+ if (typeof rawValue === 'string' && !/\S/.test(rawValue)) {
138
+ return normalizeBlank(schema);
139
+ }
140
+ if (typeof rawValue === 'string' && !schema.safeParse(rawValue).success) {
141
+ if (tryNumber) {
142
+ var num = Number(rawValue);
143
+ if (!isNaN(num)) return num;
144
+ }
145
+ if (tryBigint) {
146
+ var bigint = safeBigInt(rawValue);
147
+ if (bigint != null) return bigint;
148
+ }
149
+ }
150
+ return rawValue;
151
+ }
152
+ function useHtmlField(_ref2) {
153
+ var field = _ref2.field,
154
+ rest = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
155
+ var _useFormContext = (0, _useFormContext2.useFormContext)(),
156
+ root = _useFormContext.root;
157
+ return useHtmlFieldBase(_objectSpread({
158
+ field: field instanceof _FieldPath.FieldPath ? field : root.get(field)
159
+ }, rest));
160
+ }
161
+ //# sourceMappingURL=useHtmlField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHtmlField.js","names":["_FieldPath","require","_useField","_react","_interopRequireDefault","_zodInvertible","_useFormContext2","_acceptsNumber","_acceptsBigint","_excluded","_excluded2","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useHtmlFieldBase","options","field","type","_options$normalizeOnB","normalizeOnBlur","props","useField","value","rawValue","initialValue","rawInitialValue","setValue","setRawValue","setMeta","meta","_objectWithoutProperties2","schema","_React$useState","React","useState","_React$useState2","_slicedToArray2","tempRawValue","setTempRawValue","tryNumber","useMemo","acceptsNumber","tryBigint","acceptsBigint","onChange","useCallback","currentTarget","HTMLInputElement","getRawValue","normalized","normalizeRawValue","onFocus","visited","onBlur","parsed","safeParse","formatted","success","invert","data","undefined","touched","input","name","pathstring","String","checked","Boolean","el","normalizeBlank","safeBigInt","BigInt","error","_ref","test","num","Number","isNaN","bigint","useHtmlField","_ref2","rest","_useFormContext","useFormContext","root","FieldPath","get"],"sources":["src/useHtmlField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath } from './FieldPath'\nimport { useField, UseFieldProps } from './useField'\nimport React, { HTMLInputTypeAttribute } from 'react'\nimport { invert } from 'zod-invertible'\nimport { useFormContext } from './useFormContext'\nimport { acceptsNumber } from './util/acceptsNumber'\nimport { acceptsBigint } from './util/acceptsBigint'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\n\nexport type HtmlFieldInputProps = {\n name: string\n type: HTMLInputTypeAttribute\n value: string\n checked?: boolean\n onChange: React.ChangeEventHandler\n onFocus: React.FocusEventHandler\n onBlur: React.FocusEventHandler\n}\n\nexport type ValidUseHtmlFieldProps<Field extends FieldPath> = {\n input: HtmlFieldInputProps\n meta: UseFieldProps<Field>\n}\n\nexport type UseHtmlFieldProps<Field extends FieldPath> = z.input<\n Field['schema']\n> extends string | number | bigint | boolean | null | undefined\n ? {\n input: HtmlFieldInputProps\n meta: UseFieldProps<Field>\n }\n : {\n ERROR: 'field schema input must be a nullish string, number, boolean or bigint'\n }\n\ntype UseHtmlFieldOptions<Field, Schema extends z.ZodTypeAny> = {\n field: Field\n type: z.input<Schema> extends boolean | null | undefined\n ? 'checkbox'\n : Exclude<HTMLInputTypeAttribute, 'checkbox'>\n normalizeOnBlur?: boolean\n}\n\nexport interface TypedUseHtmlField<T extends z.ZodTypeAny> {\n <Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n ): UseHtmlFieldProps<Field>\n <Path extends PathInSchema<T>>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>\n ): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Path extends PathstringInSchema<T>>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>\n ): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>\n}\n\nfunction useHtmlFieldBase<Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n): UseHtmlFieldProps<Field> {\n const { field, type, normalizeOnBlur = true } = options\n const props = useField(field)\n const {\n value,\n rawValue,\n initialValue,\n rawInitialValue,\n setValue,\n setRawValue,\n setMeta,\n ...meta\n } = props\n\n const { schema } = field\n\n // tempRawValue is used for storing blank text when we've coerced the\n // raw value to null or undefined, or storing numeric text when we've\n // coerced the raw value to a number or bigint.\n // This way we can set a raw value that will parse better in the form\n // state without interfering with the text the user is typing.\n const [tempRawValue, setTempRawValue] = React.useState(\n rawValue as string | null | undefined\n )\n\n const tryNumber = React.useMemo(() => acceptsNumber(schema), [schema])\n const tryBigint = React.useMemo(() => acceptsBigint(schema), [schema])\n\n const onChange = React.useCallback(\n (e: React.ChangeEvent) => {\n if (e.currentTarget instanceof HTMLInputElement) {\n const rawValue = getRawValue(e.currentTarget)\n const normalized = normalizeRawValue(rawValue, {\n schema,\n tryNumber,\n tryBigint,\n })\n if (typeof rawValue === 'string' && typeof normalized !== 'string') {\n setTempRawValue(rawValue)\n }\n setRawValue(normalized)\n }\n },\n [getRawValue, setRawValue, schema]\n )\n\n const onFocus = React.useCallback(() => {\n setMeta({ visited: true })\n }, [])\n\n const onBlur = React.useCallback(\n (e: React.FocusEvent) => {\n if (e.currentTarget instanceof HTMLInputElement) {\n let rawValue = normalizeRawValue(getRawValue(e.currentTarget), {\n schema,\n tryNumber,\n tryBigint,\n })\n if (normalizeOnBlur) {\n const parsed = field.schema.safeParse(rawValue)\n const formatted = parsed.success\n ? invert(field.schema).safeParse(parsed.data)\n : undefined\n if (formatted?.success) rawValue = formatted.data\n }\n setRawValue(rawValue)\n setTempRawValue(undefined)\n }\n setMeta({ visited: true, touched: true })\n },\n [getRawValue, setRawValue, schema]\n )\n\n return React.useMemo(\n (): ValidUseHtmlFieldProps<Field> => ({\n input: {\n name: field.pathstring,\n type,\n value:\n typeof rawValue === 'boolean'\n ? String(rawValue)\n : typeof rawValue === 'string'\n ? rawValue || tempRawValue || ''\n : tempRawValue || (rawValue == null ? '' : String(rawValue) || ''),\n ...(type === 'checkbox' && { checked: Boolean(rawValue) }),\n onChange,\n onFocus,\n onBlur,\n },\n meta: {\n ...meta,\n value,\n rawValue,\n initialValue,\n rawInitialValue,\n setValue,\n setRawValue,\n setMeta,\n },\n }),\n [props, tempRawValue, onChange]\n ) as any\n}\n\nfunction getRawValue(el: HTMLInputElement | HTMLSelectElement) {\n return el.type === 'checkbox' ? el.checked : el.value\n}\n\nfunction normalizeBlank(schema: z.ZodTypeAny): any {\n if (schema.safeParse(undefined).success) return undefined\n if (schema.safeParse(null).success) return null\n return undefined\n}\n\nfunction safeBigInt(rawValue: string): bigint | undefined {\n try {\n return BigInt(rawValue)\n } catch (error) {\n return undefined\n }\n}\n\nfunction normalizeRawValue(\n rawValue: string | boolean,\n {\n schema,\n tryNumber,\n tryBigint,\n }: { schema: z.ZodTypeAny; tryNumber: boolean; tryBigint: boolean }\n): string | boolean | number | bigint | null | undefined {\n if (typeof rawValue === 'boolean') return rawValue\n if (typeof rawValue === 'string' && !/\\S/.test(rawValue)) {\n return normalizeBlank(schema)\n }\n if (typeof rawValue === 'string' && !schema.safeParse(rawValue).success) {\n if (tryNumber) {\n const num = Number(rawValue)\n if (!isNaN(num)) return num\n }\n if (tryBigint) {\n const bigint = safeBigInt(rawValue)\n if (bigint != null) return bigint\n }\n }\n return rawValue\n}\n\nexport function useHtmlField<Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n): UseHtmlFieldProps<Field>\nexport function useHtmlField<\n T extends z.ZodTypeAny,\n Path extends PathInSchema<T>\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useHtmlField<\n T extends z.ZodTypeAny,\n Path extends PathstringInSchema<T>\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>\nexport function useHtmlField({\n field,\n ...rest\n}: UseHtmlFieldOptions<\n FieldPath | BasePath,\n z.ZodTypeAny\n>): UseHtmlFieldProps<any> {\n const { root } = useFormContext()\n return useHtmlFieldBase({\n field: field instanceof FieldPath ? field : root.get(field),\n ...rest,\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,148 @@
1
+ import { FieldPath } from "./FieldPath.mjs";
2
+ import { useField } from "./useField.mjs";
3
+ import React from 'react';
4
+ import { invert } from 'zod-invertible';
5
+ import { useFormContext } from "./useFormContext.mjs";
6
+ import { acceptsNumber } from "./util/acceptsNumber.mjs";
7
+ import { acceptsBigint } from "./util/acceptsBigint.mjs";
8
+ function useHtmlFieldBase(options) {
9
+ const {
10
+ field,
11
+ type,
12
+ normalizeOnBlur = true
13
+ } = options;
14
+ const props = useField(field);
15
+ const {
16
+ value,
17
+ rawValue,
18
+ initialValue,
19
+ rawInitialValue,
20
+ setValue,
21
+ setRawValue,
22
+ setMeta,
23
+ ...meta
24
+ } = props;
25
+ const {
26
+ schema
27
+ } = field;
28
+
29
+ // tempRawValue is used for storing blank text when we've coerced the
30
+ // raw value to null or undefined, or storing numeric text when we've
31
+ // coerced the raw value to a number or bigint.
32
+ // This way we can set a raw value that will parse better in the form
33
+ // state without interfering with the text the user is typing.
34
+ const [tempRawValue, setTempRawValue] = React.useState(rawValue);
35
+ const tryNumber = React.useMemo(() => acceptsNumber(schema), [schema]);
36
+ const tryBigint = React.useMemo(() => acceptsBigint(schema), [schema]);
37
+ const onChange = React.useCallback(e => {
38
+ if (e.currentTarget instanceof HTMLInputElement) {
39
+ const rawValue = getRawValue(e.currentTarget);
40
+ const normalized = normalizeRawValue(rawValue, {
41
+ schema,
42
+ tryNumber,
43
+ tryBigint
44
+ });
45
+ if (typeof rawValue === 'string' && typeof normalized !== 'string') {
46
+ setTempRawValue(rawValue);
47
+ }
48
+ setRawValue(normalized);
49
+ }
50
+ }, [getRawValue, setRawValue, schema]);
51
+ const onFocus = React.useCallback(() => {
52
+ setMeta({
53
+ visited: true
54
+ });
55
+ }, []);
56
+ const onBlur = React.useCallback(e => {
57
+ if (e.currentTarget instanceof HTMLInputElement) {
58
+ let rawValue = normalizeRawValue(getRawValue(e.currentTarget), {
59
+ schema,
60
+ tryNumber,
61
+ tryBigint
62
+ });
63
+ if (normalizeOnBlur) {
64
+ const parsed = field.schema.safeParse(rawValue);
65
+ const formatted = parsed.success ? invert(field.schema).safeParse(parsed.data) : undefined;
66
+ if (formatted !== null && formatted !== void 0 && formatted.success) rawValue = formatted.data;
67
+ }
68
+ setRawValue(rawValue);
69
+ setTempRawValue(undefined);
70
+ }
71
+ setMeta({
72
+ visited: true,
73
+ touched: true
74
+ });
75
+ }, [getRawValue, setRawValue, schema]);
76
+ return React.useMemo(() => ({
77
+ input: {
78
+ name: field.pathstring,
79
+ type,
80
+ value: typeof rawValue === 'boolean' ? String(rawValue) : typeof rawValue === 'string' ? rawValue || tempRawValue || '' : tempRawValue || (rawValue == null ? '' : String(rawValue) || ''),
81
+ ...(type === 'checkbox' && {
82
+ checked: Boolean(rawValue)
83
+ }),
84
+ onChange,
85
+ onFocus,
86
+ onBlur
87
+ },
88
+ meta: {
89
+ ...meta,
90
+ value,
91
+ rawValue,
92
+ initialValue,
93
+ rawInitialValue,
94
+ setValue,
95
+ setRawValue,
96
+ setMeta
97
+ }
98
+ }), [props, tempRawValue, onChange]);
99
+ }
100
+ function getRawValue(el) {
101
+ return el.type === 'checkbox' ? el.checked : el.value;
102
+ }
103
+ function normalizeBlank(schema) {
104
+ if (schema.safeParse(undefined).success) return undefined;
105
+ if (schema.safeParse(null).success) return null;
106
+ return undefined;
107
+ }
108
+ function safeBigInt(rawValue) {
109
+ try {
110
+ return BigInt(rawValue);
111
+ } catch (error) {
112
+ return undefined;
113
+ }
114
+ }
115
+ function normalizeRawValue(rawValue, {
116
+ schema,
117
+ tryNumber,
118
+ tryBigint
119
+ }) {
120
+ if (typeof rawValue === 'boolean') return rawValue;
121
+ if (typeof rawValue === 'string' && !/\S/.test(rawValue)) {
122
+ return normalizeBlank(schema);
123
+ }
124
+ if (typeof rawValue === 'string' && !schema.safeParse(rawValue).success) {
125
+ if (tryNumber) {
126
+ const num = Number(rawValue);
127
+ if (!isNaN(num)) return num;
128
+ }
129
+ if (tryBigint) {
130
+ const bigint = safeBigInt(rawValue);
131
+ if (bigint != null) return bigint;
132
+ }
133
+ }
134
+ return rawValue;
135
+ }
136
+ export function useHtmlField({
137
+ field,
138
+ ...rest
139
+ }) {
140
+ const {
141
+ root
142
+ } = useFormContext();
143
+ return useHtmlFieldBase({
144
+ field: field instanceof FieldPath ? field : root.get(field),
145
+ ...rest
146
+ });
147
+ }
148
+ //# sourceMappingURL=useHtmlField.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHtmlField.mjs","names":["FieldPath","useField","React","invert","useFormContext","acceptsNumber","acceptsBigint","useHtmlFieldBase","options","field","type","normalizeOnBlur","props","value","rawValue","initialValue","rawInitialValue","setValue","setRawValue","setMeta","meta","schema","tempRawValue","setTempRawValue","useState","tryNumber","useMemo","tryBigint","onChange","useCallback","e","currentTarget","HTMLInputElement","getRawValue","normalized","normalizeRawValue","onFocus","visited","onBlur","parsed","safeParse","formatted","success","data","undefined","touched","input","name","pathstring","String","checked","Boolean","el","normalizeBlank","safeBigInt","BigInt","error","test","num","Number","isNaN","bigint","useHtmlField","rest","root","get"],"sources":["src/useHtmlField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath } from './FieldPath'\nimport { useField, UseFieldProps } from './useField'\nimport React, { HTMLInputTypeAttribute } from 'react'\nimport { invert } from 'zod-invertible'\nimport { useFormContext } from './useFormContext'\nimport { acceptsNumber } from './util/acceptsNumber'\nimport { acceptsBigint } from './util/acceptsBigint'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\n\nexport type HtmlFieldInputProps = {\n name: string\n type: HTMLInputTypeAttribute\n value: string\n checked?: boolean\n onChange: React.ChangeEventHandler\n onFocus: React.FocusEventHandler\n onBlur: React.FocusEventHandler\n}\n\nexport type ValidUseHtmlFieldProps<Field extends FieldPath> = {\n input: HtmlFieldInputProps\n meta: UseFieldProps<Field>\n}\n\nexport type UseHtmlFieldProps<Field extends FieldPath> = z.input<\n Field['schema']\n> extends string | number | bigint | boolean | null | undefined\n ? {\n input: HtmlFieldInputProps\n meta: UseFieldProps<Field>\n }\n : {\n ERROR: 'field schema input must be a nullish string, number, boolean or bigint'\n }\n\ntype UseHtmlFieldOptions<Field, Schema extends z.ZodTypeAny> = {\n field: Field\n type: z.input<Schema> extends boolean | null | undefined\n ? 'checkbox'\n : Exclude<HTMLInputTypeAttribute, 'checkbox'>\n normalizeOnBlur?: boolean\n}\n\nexport interface TypedUseHtmlField<T extends z.ZodTypeAny> {\n <Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n ): UseHtmlFieldProps<Field>\n <Path extends PathInSchema<T>>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>\n ): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Path extends PathstringInSchema<T>>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>\n ): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>\n}\n\nfunction useHtmlFieldBase<Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n): UseHtmlFieldProps<Field> {\n const { field, type, normalizeOnBlur = true } = options\n const props = useField(field)\n const {\n value,\n rawValue,\n initialValue,\n rawInitialValue,\n setValue,\n setRawValue,\n setMeta,\n ...meta\n } = props\n\n const { schema } = field\n\n // tempRawValue is used for storing blank text when we've coerced the\n // raw value to null or undefined, or storing numeric text when we've\n // coerced the raw value to a number or bigint.\n // This way we can set a raw value that will parse better in the form\n // state without interfering with the text the user is typing.\n const [tempRawValue, setTempRawValue] = React.useState(\n rawValue as string | null | undefined\n )\n\n const tryNumber = React.useMemo(() => acceptsNumber(schema), [schema])\n const tryBigint = React.useMemo(() => acceptsBigint(schema), [schema])\n\n const onChange = React.useCallback(\n (e: React.ChangeEvent) => {\n if (e.currentTarget instanceof HTMLInputElement) {\n const rawValue = getRawValue(e.currentTarget)\n const normalized = normalizeRawValue(rawValue, {\n schema,\n tryNumber,\n tryBigint,\n })\n if (typeof rawValue === 'string' && typeof normalized !== 'string') {\n setTempRawValue(rawValue)\n }\n setRawValue(normalized)\n }\n },\n [getRawValue, setRawValue, schema]\n )\n\n const onFocus = React.useCallback(() => {\n setMeta({ visited: true })\n }, [])\n\n const onBlur = React.useCallback(\n (e: React.FocusEvent) => {\n if (e.currentTarget instanceof HTMLInputElement) {\n let rawValue = normalizeRawValue(getRawValue(e.currentTarget), {\n schema,\n tryNumber,\n tryBigint,\n })\n if (normalizeOnBlur) {\n const parsed = field.schema.safeParse(rawValue)\n const formatted = parsed.success\n ? invert(field.schema).safeParse(parsed.data)\n : undefined\n if (formatted?.success) rawValue = formatted.data\n }\n setRawValue(rawValue)\n setTempRawValue(undefined)\n }\n setMeta({ visited: true, touched: true })\n },\n [getRawValue, setRawValue, schema]\n )\n\n return React.useMemo(\n (): ValidUseHtmlFieldProps<Field> => ({\n input: {\n name: field.pathstring,\n type,\n value:\n typeof rawValue === 'boolean'\n ? String(rawValue)\n : typeof rawValue === 'string'\n ? rawValue || tempRawValue || ''\n : tempRawValue || (rawValue == null ? '' : String(rawValue) || ''),\n ...(type === 'checkbox' && { checked: Boolean(rawValue) }),\n onChange,\n onFocus,\n onBlur,\n },\n meta: {\n ...meta,\n value,\n rawValue,\n initialValue,\n rawInitialValue,\n setValue,\n setRawValue,\n setMeta,\n },\n }),\n [props, tempRawValue, onChange]\n ) as any\n}\n\nfunction getRawValue(el: HTMLInputElement | HTMLSelectElement) {\n return el.type === 'checkbox' ? el.checked : el.value\n}\n\nfunction normalizeBlank(schema: z.ZodTypeAny): any {\n if (schema.safeParse(undefined).success) return undefined\n if (schema.safeParse(null).success) return null\n return undefined\n}\n\nfunction safeBigInt(rawValue: string): bigint | undefined {\n try {\n return BigInt(rawValue)\n } catch (error) {\n return undefined\n }\n}\n\nfunction normalizeRawValue(\n rawValue: string | boolean,\n {\n schema,\n tryNumber,\n tryBigint,\n }: { schema: z.ZodTypeAny; tryNumber: boolean; tryBigint: boolean }\n): string | boolean | number | bigint | null | undefined {\n if (typeof rawValue === 'boolean') return rawValue\n if (typeof rawValue === 'string' && !/\\S/.test(rawValue)) {\n return normalizeBlank(schema)\n }\n if (typeof rawValue === 'string' && !schema.safeParse(rawValue).success) {\n if (tryNumber) {\n const num = Number(rawValue)\n if (!isNaN(num)) return num\n }\n if (tryBigint) {\n const bigint = safeBigInt(rawValue)\n if (bigint != null) return bigint\n }\n }\n return rawValue\n}\n\nexport function useHtmlField<Field extends FieldPath>(\n options: UseHtmlFieldOptions<Field, Field['schema']>\n): UseHtmlFieldProps<Field>\nexport function useHtmlField<\n T extends z.ZodTypeAny,\n Path extends PathInSchema<T>\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, Path>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useHtmlField<\n T extends z.ZodTypeAny,\n Path extends PathstringInSchema<T>\n>(\n options: UseHtmlFieldOptions<Path, SchemaAt<T, parsePathstring<Path>>>\n): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>\nexport function useHtmlField({\n field,\n ...rest\n}: UseHtmlFieldOptions<\n FieldPath | BasePath,\n z.ZodTypeAny\n>): UseHtmlFieldProps<any> {\n const { root } = useFormContext()\n return useHtmlFieldBase({\n field: field instanceof FieldPath ? field : root.get(field),\n ...rest,\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import z from 'zod';
2
+ import { DependencyList } from 'react';
3
+ import { InitializeAction } from './actions/initialize';
4
+ export declare function useInitialize<T extends z.ZodTypeAny>(options: Omit<InitializeAction<T>, 'type'>, deps?: DependencyList): void;
5
+ //# sourceMappingURL=useInitialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInitialize.d.ts","sourceRoot":"","sources":["src/useInitialize.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAc,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAClD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1C,IAAI,GAAE,cAAoD,QAM3D"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useInitialize = useInitialize;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _useFormContext2 = require("./useFormContext.js");
10
+ function useInitialize(options) {
11
+ var deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [options.values, options.rawValues];
12
+ var _useFormContext = (0, _useFormContext2.useFormContext)(),
13
+ initialize = _useFormContext.initialize;
14
+ _react["default"].useEffect(function () {
15
+ initialize(options);
16
+ }, deps);
17
+ }
18
+ //# sourceMappingURL=useInitialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInitialize.js","names":["_react","_interopRequireDefault","require","_useFormContext2","useInitialize","options","deps","arguments","length","undefined","values","rawValues","_useFormContext","useFormContext","initialize","React","useEffect"],"sources":["src/useInitialize.ts"],"sourcesContent":["import z from 'zod'\nimport React, { DependencyList } from 'react'\nimport { useFormContext } from './useFormContext'\nimport { InitializeAction } from './actions/initialize'\n\nexport function useInitialize<T extends z.ZodTypeAny>(\n options: Omit<InitializeAction<T>, 'type'>,\n deps: DependencyList = [options.values, options.rawValues]\n) {\n const { initialize } = useFormContext<T>()\n React.useEffect(() => {\n initialize(options)\n }, deps)\n}\n"],"mappings":";;;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAGO,SAASE,aAAaA,CAC3BC,OAA0C,EAE1C;EAAA,IADAC,IAAoB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAACF,OAAO,CAACK,MAAM,EAAEL,OAAO,CAACM,SAAS,CAAC;EAE1D,IAAAC,eAAA,GAAuB,IAAAC,+BAAc,EAAI,CAAC;IAAlCC,UAAU,GAAAF,eAAA,CAAVE,UAAU;EAClBC,iBAAK,CAACC,SAAS,CAAC,YAAM;IACpBF,UAAU,CAACT,OAAO,CAAC;EACrB,CAAC,EAAEC,IAAI,CAAC;AACV","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { useFormContext } from "./useFormContext.mjs";
3
+ export function useInitialize(options, deps = [options.values, options.rawValues]) {
4
+ const {
5
+ initialize
6
+ } = useFormContext();
7
+ React.useEffect(() => {
8
+ initialize(options);
9
+ }, deps);
10
+ }
11
+ //# sourceMappingURL=useInitialize.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInitialize.mjs","names":["React","useFormContext","useInitialize","options","deps","values","rawValues","initialize","useEffect"],"sources":["src/useInitialize.ts"],"sourcesContent":["import z from 'zod'\nimport React, { DependencyList } from 'react'\nimport { useFormContext } from './useFormContext'\nimport { InitializeAction } from './actions/initialize'\n\nexport function useInitialize<T extends z.ZodTypeAny>(\n options: Omit<InitializeAction<T>, 'type'>,\n deps: DependencyList = [options.values, options.rawValues]\n) {\n const { initialize } = useFormContext<T>()\n React.useEffect(() => {\n initialize(options)\n }, deps)\n}\n"],"mappings":"AACA,OAAOA,KAAK,MAA0B,OAAO;AAC7C,SAASC,cAAc;AAGvB,OAAO,SAASC,aAAaA,CAC3BC,OAA0C,EAC1CC,IAAoB,GAAG,CAACD,OAAO,CAACE,MAAM,EAAEF,OAAO,CAACG,SAAS,CAAC,EAC1D;EACA,MAAM;IAAEC;EAAW,CAAC,GAAGN,cAAc,CAAI,CAAC;EAC1CD,KAAK,CAACQ,SAAS,CAAC,MAAM;IACpBD,UAAU,CAACJ,OAAO,CAAC;EACrB,CAAC,EAAEC,IAAI,CAAC;AACV","ignoreList":[]}
package/useSubmit.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import z from 'zod';
2
+ import { Handlers } from './actions/addHandlers';
3
+ import React from 'react';
4
+ export declare function useSubmit<T extends z.ZodTypeAny>(handlers?: Handlers<T>): (e: React.FormEvent) => void;
5
+ //# sourceMappingURL=useSubmit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSubmit.d.ts","sourceRoot":"","sources":["src/useSubmit.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,wBAAgB,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAkBzC,KAAK,CAAC,SAAS,UAK7C"}