react-hook-form 7.72.1 → 7.74.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 (242) hide show
  1. package/README.md +3 -20
  2. package/dist/form.d.ts.map +1 -1
  3. package/dist/index.cjs.js +1 -1
  4. package/dist/index.cjs.js.map +1 -1
  5. package/dist/index.esm.mjs +88 -48
  6. package/dist/index.esm.mjs.map +1 -1
  7. package/dist/index.umd.js +1 -1
  8. package/dist/index.umd.js.map +1 -1
  9. package/dist/logic/createFormControl.d.ts.map +1 -1
  10. package/dist/logic/validateField.d.ts.map +1 -1
  11. package/dist/react-server.esm.mjs +68 -33
  12. package/dist/react-server.esm.mjs.map +1 -1
  13. package/dist/types/form.d.ts +2 -0
  14. package/dist/types/form.d.ts.map +1 -1
  15. package/dist/useController.d.ts.map +1 -1
  16. package/dist/useFieldArray.d.ts.map +1 -1
  17. package/dist/utils/deepEqual.d.ts +1 -1
  18. package/dist/utils/deepEqual.d.ts.map +1 -1
  19. package/dist/utils/unset.d.ts.map +1 -1
  20. package/package.json +1 -1
  21. package/dist/__tests__/controller.server.test.d.ts +0 -2
  22. package/dist/__tests__/controller.server.test.d.ts.map +0 -1
  23. package/dist/__tests__/controller.test.d.ts +0 -2
  24. package/dist/__tests__/controller.test.d.ts.map +0 -1
  25. package/dist/__tests__/form.test.d.ts +0 -2
  26. package/dist/__tests__/form.test.d.ts.map +0 -1
  27. package/dist/__tests__/formStateSubscribe.server.test.d.ts +0 -2
  28. package/dist/__tests__/formStateSubscribe.server.test.d.ts.map +0 -1
  29. package/dist/__tests__/formStateSubscribe.test.d.ts +0 -2
  30. package/dist/__tests__/formStateSubscribe.test.d.ts.map +0 -1
  31. package/dist/__tests__/isPlainObject.test.d.ts +0 -2
  32. package/dist/__tests__/isPlainObject.test.d.ts.map +0 -1
  33. package/dist/__tests__/logic/appendErrors.test.d.ts +0 -2
  34. package/dist/__tests__/logic/appendErrors.test.d.ts.map +0 -1
  35. package/dist/__tests__/logic/createFormControl.test.d.ts +0 -2
  36. package/dist/__tests__/logic/createFormControl.test.d.ts.map +0 -1
  37. package/dist/__tests__/logic/generateId.test.d.ts +0 -2
  38. package/dist/__tests__/logic/generateId.test.d.ts.map +0 -1
  39. package/dist/__tests__/logic/getCheckboxValue.test.d.ts +0 -2
  40. package/dist/__tests__/logic/getCheckboxValue.test.d.ts.map +0 -1
  41. package/dist/__tests__/logic/getDirtyFields.test.d.ts +0 -2
  42. package/dist/__tests__/logic/getDirtyFields.test.d.ts.map +0 -1
  43. package/dist/__tests__/logic/getEventValue.test.d.ts +0 -2
  44. package/dist/__tests__/logic/getEventValue.test.d.ts.map +0 -1
  45. package/dist/__tests__/logic/getFieldValue.test.d.ts +0 -2
  46. package/dist/__tests__/logic/getFieldValue.test.d.ts.map +0 -1
  47. package/dist/__tests__/logic/getFieldValueAs.test.d.ts +0 -2
  48. package/dist/__tests__/logic/getFieldValueAs.test.d.ts.map +0 -1
  49. package/dist/__tests__/logic/getFocusFieldName.test.d.ts +0 -2
  50. package/dist/__tests__/logic/getFocusFieldName.test.d.ts.map +0 -1
  51. package/dist/__tests__/logic/getNodeParentName.test.d.ts +0 -2
  52. package/dist/__tests__/logic/getNodeParentName.test.d.ts.map +0 -1
  53. package/dist/__tests__/logic/getRadioValue.test.d.ts +0 -2
  54. package/dist/__tests__/logic/getRadioValue.test.d.ts.map +0 -1
  55. package/dist/__tests__/logic/getResolverOptions.test.d.ts +0 -2
  56. package/dist/__tests__/logic/getResolverOptions.test.d.ts.map +0 -1
  57. package/dist/__tests__/logic/getRuleValue.test.d.ts +0 -2
  58. package/dist/__tests__/logic/getRuleValue.test.d.ts.map +0 -1
  59. package/dist/__tests__/logic/getValidateError.test.d.ts +0 -2
  60. package/dist/__tests__/logic/getValidateError.test.d.ts.map +0 -1
  61. package/dist/__tests__/logic/getValidationModes.test.d.ts +0 -2
  62. package/dist/__tests__/logic/getValidationModes.test.d.ts.map +0 -1
  63. package/dist/__tests__/logic/getValueAndMessage.test.d.ts +0 -2
  64. package/dist/__tests__/logic/getValueAndMessage.test.d.ts.map +0 -1
  65. package/dist/__tests__/logic/hasPromiseValidation.test.d.ts +0 -2
  66. package/dist/__tests__/logic/hasPromiseValidation.test.d.ts.map +0 -1
  67. package/dist/__tests__/logic/hasValidation.test.d.ts +0 -2
  68. package/dist/__tests__/logic/hasValidation.test.d.ts.map +0 -1
  69. package/dist/__tests__/logic/isNameInFieldArray.test.d.ts +0 -2
  70. package/dist/__tests__/logic/isNameInFieldArray.test.d.ts.map +0 -1
  71. package/dist/__tests__/logic/isWatched.test.d.ts +0 -2
  72. package/dist/__tests__/logic/isWatched.test.d.ts.map +0 -1
  73. package/dist/__tests__/logic/iterateFieldsByAction.test.d.ts +0 -2
  74. package/dist/__tests__/logic/iterateFieldsByAction.test.d.ts.map +0 -1
  75. package/dist/__tests__/logic/schemaErrorLookup.test.d.ts +0 -2
  76. package/dist/__tests__/logic/schemaErrorLookup.test.d.ts.map +0 -1
  77. package/dist/__tests__/logic/shouldRenderFormState.test.d.ts +0 -2
  78. package/dist/__tests__/logic/shouldRenderFormState.test.d.ts.map +0 -1
  79. package/dist/__tests__/logic/shouldSubscribeByName.test.d.ts +0 -2
  80. package/dist/__tests__/logic/shouldSubscribeByName.test.d.ts.map +0 -1
  81. package/dist/__tests__/logic/skipValidation.test.d.ts +0 -2
  82. package/dist/__tests__/logic/skipValidation.test.d.ts.map +0 -1
  83. package/dist/__tests__/logic/unsetEmptyArray.test.d.ts +0 -2
  84. package/dist/__tests__/logic/unsetEmptyArray.test.d.ts.map +0 -1
  85. package/dist/__tests__/logic/validateField.test.d.ts +0 -2
  86. package/dist/__tests__/logic/validateField.test.d.ts.map +0 -1
  87. package/dist/__tests__/type.test.d.ts +0 -2
  88. package/dist/__tests__/type.test.d.ts.map +0 -1
  89. package/dist/__tests__/useController.test.d.ts +0 -2
  90. package/dist/__tests__/useController.test.d.ts.map +0 -1
  91. package/dist/__tests__/useFieldArray/append.test.d.ts +0 -2
  92. package/dist/__tests__/useFieldArray/append.test.d.ts.map +0 -1
  93. package/dist/__tests__/useFieldArray/dirtyFields.test.d.ts +0 -2
  94. package/dist/__tests__/useFieldArray/dirtyFields.test.d.ts.map +0 -1
  95. package/dist/__tests__/useFieldArray/focus.test.d.ts +0 -2
  96. package/dist/__tests__/useFieldArray/focus.test.d.ts.map +0 -1
  97. package/dist/__tests__/useFieldArray/insert.test.d.ts +0 -2
  98. package/dist/__tests__/useFieldArray/insert.test.d.ts.map +0 -1
  99. package/dist/__tests__/useFieldArray/move.test.d.ts +0 -2
  100. package/dist/__tests__/useFieldArray/move.test.d.ts.map +0 -1
  101. package/dist/__tests__/useFieldArray/prepend.test.d.ts +0 -2
  102. package/dist/__tests__/useFieldArray/prepend.test.d.ts.map +0 -1
  103. package/dist/__tests__/useFieldArray/remove.test.d.ts +0 -2
  104. package/dist/__tests__/useFieldArray/remove.test.d.ts.map +0 -1
  105. package/dist/__tests__/useFieldArray/replace.test.d.ts +0 -2
  106. package/dist/__tests__/useFieldArray/replace.test.d.ts.map +0 -1
  107. package/dist/__tests__/useFieldArray/swap.test.d.ts +0 -2
  108. package/dist/__tests__/useFieldArray/swap.test.d.ts.map +0 -1
  109. package/dist/__tests__/useFieldArray/update.test.d.ts +0 -2
  110. package/dist/__tests__/useFieldArray/update.test.d.ts.map +0 -1
  111. package/dist/__tests__/useFieldArray.test.d.ts +0 -2
  112. package/dist/__tests__/useFieldArray.test.d.ts.map +0 -1
  113. package/dist/__tests__/useForm/clearErrors.test.d.ts +0 -2
  114. package/dist/__tests__/useForm/clearErrors.test.d.ts.map +0 -1
  115. package/dist/__tests__/useForm/formState.test.d.ts +0 -2
  116. package/dist/__tests__/useForm/formState.test.d.ts.map +0 -1
  117. package/dist/__tests__/useForm/getFieldState.test.d.ts +0 -2
  118. package/dist/__tests__/useForm/getFieldState.test.d.ts.map +0 -1
  119. package/dist/__tests__/useForm/getValues.test.d.ts +0 -2
  120. package/dist/__tests__/useForm/getValues.test.d.ts.map +0 -1
  121. package/dist/__tests__/useForm/handleSubmit.test.d.ts +0 -2
  122. package/dist/__tests__/useForm/handleSubmit.test.d.ts.map +0 -1
  123. package/dist/__tests__/useForm/register.test.d.ts +0 -2
  124. package/dist/__tests__/useForm/register.test.d.ts.map +0 -1
  125. package/dist/__tests__/useForm/reset.test.d.ts +0 -2
  126. package/dist/__tests__/useForm/reset.test.d.ts.map +0 -1
  127. package/dist/__tests__/useForm/resetField.test.d.ts +0 -2
  128. package/dist/__tests__/useForm/resetField.test.d.ts.map +0 -1
  129. package/dist/__tests__/useForm/resolver.test.d.ts +0 -2
  130. package/dist/__tests__/useForm/resolver.test.d.ts.map +0 -1
  131. package/dist/__tests__/useForm/setError.test.d.ts +0 -2
  132. package/dist/__tests__/useForm/setError.test.d.ts.map +0 -1
  133. package/dist/__tests__/useForm/setFocus.test.d.ts +0 -2
  134. package/dist/__tests__/useForm/setFocus.test.d.ts.map +0 -1
  135. package/dist/__tests__/useForm/setValue.test.d.ts +0 -2
  136. package/dist/__tests__/useForm/setValue.test.d.ts.map +0 -1
  137. package/dist/__tests__/useForm/subscribe.test.d.ts +0 -2
  138. package/dist/__tests__/useForm/subscribe.test.d.ts.map +0 -1
  139. package/dist/__tests__/useForm/trigger.test.d.ts +0 -2
  140. package/dist/__tests__/useForm/trigger.test.d.ts.map +0 -1
  141. package/dist/__tests__/useForm/unregister.test.d.ts +0 -2
  142. package/dist/__tests__/useForm/unregister.test.d.ts.map +0 -1
  143. package/dist/__tests__/useForm/useFormWithNullValues.test.d.ts +0 -2
  144. package/dist/__tests__/useForm/useFormWithNullValues.test.d.ts.map +0 -1
  145. package/dist/__tests__/useForm/watch.test.d.ts +0 -2
  146. package/dist/__tests__/useForm/watch.test.d.ts.map +0 -1
  147. package/dist/__tests__/useForm.server.test.d.ts +0 -2
  148. package/dist/__tests__/useForm.server.test.d.ts.map +0 -1
  149. package/dist/__tests__/useForm.test.d.ts +0 -2
  150. package/dist/__tests__/useForm.test.d.ts.map +0 -1
  151. package/dist/__tests__/useFormContext.server.test.d.ts +0 -2
  152. package/dist/__tests__/useFormContext.server.test.d.ts.map +0 -1
  153. package/dist/__tests__/useFormContext.test.d.ts +0 -2
  154. package/dist/__tests__/useFormContext.test.d.ts.map +0 -1
  155. package/dist/__tests__/useFormState.test.d.ts +0 -2
  156. package/dist/__tests__/useFormState.test.d.ts.map +0 -1
  157. package/dist/__tests__/useWatch.test.d.ts +0 -2
  158. package/dist/__tests__/useWatch.test.d.ts.map +0 -1
  159. package/dist/__tests__/utils/append.test.d.ts +0 -2
  160. package/dist/__tests__/utils/append.test.d.ts.map +0 -1
  161. package/dist/__tests__/utils/cloneObject.test.d.ts +0 -2
  162. package/dist/__tests__/utils/cloneObject.test.d.ts.map +0 -1
  163. package/dist/__tests__/utils/compact.test.d.ts +0 -2
  164. package/dist/__tests__/utils/compact.test.d.ts.map +0 -1
  165. package/dist/__tests__/utils/convertToArrayPayload.test.d.ts +0 -2
  166. package/dist/__tests__/utils/convertToArrayPayload.test.d.ts.map +0 -1
  167. package/dist/__tests__/utils/createSubject.test.d.ts +0 -2
  168. package/dist/__tests__/utils/createSubject.test.d.ts.map +0 -1
  169. package/dist/__tests__/utils/deepEqual.test.d.ts +0 -2
  170. package/dist/__tests__/utils/deepEqual.test.d.ts.map +0 -1
  171. package/dist/__tests__/utils/deepMerge.test.d.ts +0 -2
  172. package/dist/__tests__/utils/deepMerge.test.d.ts.map +0 -1
  173. package/dist/__tests__/utils/extractFormValues.test.d.ts +0 -2
  174. package/dist/__tests__/utils/extractFormValues.test.d.ts.map +0 -1
  175. package/dist/__tests__/utils/fillEmptyArray.test.d.ts +0 -2
  176. package/dist/__tests__/utils/fillEmptyArray.test.d.ts.map +0 -1
  177. package/dist/__tests__/utils/flatten.test.d.ts +0 -2
  178. package/dist/__tests__/utils/flatten.test.d.ts.map +0 -1
  179. package/dist/__tests__/utils/get.test.d.ts +0 -2
  180. package/dist/__tests__/utils/get.test.d.ts.map +0 -1
  181. package/dist/__tests__/utils/insert.test.d.ts +0 -2
  182. package/dist/__tests__/utils/insert.test.d.ts.map +0 -1
  183. package/dist/__tests__/utils/isBoolean.test.d.ts +0 -2
  184. package/dist/__tests__/utils/isBoolean.test.d.ts.map +0 -1
  185. package/dist/__tests__/utils/isCheckBoxInput.test.d.ts +0 -2
  186. package/dist/__tests__/utils/isCheckBoxInput.test.d.ts.map +0 -1
  187. package/dist/__tests__/utils/isEmptyObject.test.d.ts +0 -2
  188. package/dist/__tests__/utils/isEmptyObject.test.d.ts.map +0 -1
  189. package/dist/__tests__/utils/isFileInput.test.d.ts +0 -2
  190. package/dist/__tests__/utils/isFileInput.test.d.ts.map +0 -1
  191. package/dist/__tests__/utils/isFunction.test.d.ts +0 -2
  192. package/dist/__tests__/utils/isFunction.test.d.ts.map +0 -1
  193. package/dist/__tests__/utils/isHTMLElement.test.d.ts +0 -2
  194. package/dist/__tests__/utils/isHTMLElement.test.d.ts.map +0 -1
  195. package/dist/__tests__/utils/isKey.test.d.ts +0 -2
  196. package/dist/__tests__/utils/isKey.test.d.ts.map +0 -1
  197. package/dist/__tests__/utils/isMultipleSelect.test.d.ts +0 -2
  198. package/dist/__tests__/utils/isMultipleSelect.test.d.ts.map +0 -1
  199. package/dist/__tests__/utils/isNullOrUndefined.test.d.ts +0 -2
  200. package/dist/__tests__/utils/isNullOrUndefined.test.d.ts.map +0 -1
  201. package/dist/__tests__/utils/isObject.test.d.ts +0 -2
  202. package/dist/__tests__/utils/isObject.test.d.ts.map +0 -1
  203. package/dist/__tests__/utils/isPrimitive.test.d.ts +0 -2
  204. package/dist/__tests__/utils/isPrimitive.test.d.ts.map +0 -1
  205. package/dist/__tests__/utils/isRadioInput.test.d.ts +0 -2
  206. package/dist/__tests__/utils/isRadioInput.test.d.ts.map +0 -1
  207. package/dist/__tests__/utils/isRadioOrCheckbox.test.d.ts +0 -2
  208. package/dist/__tests__/utils/isRadioOrCheckbox.test.d.ts.map +0 -1
  209. package/dist/__tests__/utils/isRegex.test.d.ts +0 -2
  210. package/dist/__tests__/utils/isRegex.test.d.ts.map +0 -1
  211. package/dist/__tests__/utils/isString.test.d.ts +0 -2
  212. package/dist/__tests__/utils/isString.test.d.ts.map +0 -1
  213. package/dist/__tests__/utils/isUndefined.test.d.ts +0 -2
  214. package/dist/__tests__/utils/isUndefined.test.d.ts.map +0 -1
  215. package/dist/__tests__/utils/live.test.d.ts +0 -2
  216. package/dist/__tests__/utils/live.test.d.ts.map +0 -1
  217. package/dist/__tests__/utils/move.test.d.ts +0 -2
  218. package/dist/__tests__/utils/move.test.d.ts.map +0 -1
  219. package/dist/__tests__/utils/noop.test.d.ts +0 -2
  220. package/dist/__tests__/utils/noop.test.d.ts.map +0 -1
  221. package/dist/__tests__/utils/objectHasFunction.test.d.ts +0 -2
  222. package/dist/__tests__/utils/objectHasFunction.test.d.ts.map +0 -1
  223. package/dist/__tests__/utils/prepend.test.d.ts +0 -2
  224. package/dist/__tests__/utils/prepend.test.d.ts.map +0 -1
  225. package/dist/__tests__/utils/remove.test.d.ts +0 -2
  226. package/dist/__tests__/utils/remove.test.d.ts.map +0 -1
  227. package/dist/__tests__/utils/set.test.d.ts +0 -2
  228. package/dist/__tests__/utils/set.test.d.ts.map +0 -1
  229. package/dist/__tests__/utils/stringToPath.test.d.ts +0 -2
  230. package/dist/__tests__/utils/stringToPath.test.d.ts.map +0 -1
  231. package/dist/__tests__/utils/swap.test.d.ts +0 -2
  232. package/dist/__tests__/utils/swap.test.d.ts.map +0 -1
  233. package/dist/__tests__/utils/unset.test.d.ts +0 -2
  234. package/dist/__tests__/utils/unset.test.d.ts.map +0 -1
  235. package/dist/__tests__/utils/update.test.d.ts +0 -2
  236. package/dist/__tests__/utils/update.test.d.ts.map +0 -1
  237. package/dist/__tests__/utils/validationModeChecker.test.d.ts +0 -2
  238. package/dist/__tests__/utils/validationModeChecker.test.d.ts.map +0 -1
  239. package/dist/__tests__/watch.server.test.d.ts +0 -2
  240. package/dist/__tests__/watch.server.test.d.ts.map +0 -1
  241. package/dist/__tests__/watch.test.d.ts +0 -2
  242. package/dist/__tests__/watch.test.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"createFormControl.d.ts","sourceRoot":"","sources":["../../src/logic/createFormControl.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAaV,WAAW,EAiBX,YAAY,EAIZ,aAAa,EAWd,MAAM,UAAU,CAAC;AAsDlB,wBAAgB,iBAAiB,CAC/B,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,QAAQ,GAAG,GAAG,EACd,kBAAkB,GAAG,YAAY,EAEjC,KAAK,GAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,CAAM,GACnE,IAAI,CACL,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EACzD,WAAW,CACZ,GAAG;IACF,WAAW,EAAE,IAAI,CACf,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EACzD,WAAW,CACZ,CAAC;CACH,CAkmDA"}
1
+ {"version":3,"file":"createFormControl.d.ts","sourceRoot":"","sources":["../../src/logic/createFormControl.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAaV,WAAW,EAiBX,YAAY,EAIZ,aAAa,EAYd,MAAM,UAAU,CAAC;AAsDlB,wBAAgB,iBAAiB,CAC/B,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,QAAQ,GAAG,GAAG,EACd,kBAAkB,GAAG,YAAY,EAEjC,KAAK,GAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,CAAM,GACnE,IAAI,CACL,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EACzD,WAAW,CACZ,GAAG;IACF,WAAW,EAAE,IAAI,CACf,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EACzD,WAAW,CACZ,CAAC;CACH,CAwnDA"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateField.d.ts","sourceRoot":"","sources":["../../src/logic/validateField.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EAEL,WAAW,EACX,mBAAmB,EACnB,eAAe,EAKhB,MAAM,UAAU,CAAC;yBAqBI,CAAC,SAAS,WAAW,EACzC,OAAO,KAAK,EACZ,oBAAoB,eAAe,EACnC,YAAY,CAAC,EACb,0BAA0B,OAAO,EACjC,4BAA4B,OAAO,EACnC,eAAe,OAAO,KACrB,OAAO,CAAC,mBAAmB,CAAC;AAP/B,wBA6PE"}
1
+ {"version":3,"file":"validateField.d.ts","sourceRoot":"","sources":["../../src/logic/validateField.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EAEL,WAAW,EACX,mBAAmB,EACnB,eAAe,EAKhB,MAAM,UAAU,CAAC;yBAqBI,CAAC,SAAS,WAAW,EACzC,OAAO,KAAK,EACZ,oBAAoB,eAAe,EACnC,YAAY,CAAC,EACb,0BAA0B,OAAO,EACjC,4BAA4B,OAAO,EACnC,eAAe,OAAO,KACrB,OAAO,CAAC,mBAAmB,CAAC;AAP/B,wBA8PE"}
@@ -108,7 +108,10 @@ var createSubject = () => {
108
108
 
109
109
  var isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);
110
110
 
111
- function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
111
+ function deepEqual(object1, object2, visited = new WeakSet()) {
112
+ if (object1 === object2) {
113
+ return true;
114
+ }
112
115
  if (isPrimitive(object1) || isPrimitive(object2)) {
113
116
  return Object.is(object1, object2);
114
117
  }
@@ -120,14 +123,14 @@ function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
120
123
  if (keys1.length !== keys2.length) {
121
124
  return false;
122
125
  }
123
- if (_internal_visited.has(object1) || _internal_visited.has(object2)) {
126
+ if (visited.has(object1) || visited.has(object2)) {
124
127
  return true;
125
128
  }
126
- _internal_visited.add(object1);
127
- _internal_visited.add(object2);
129
+ visited.add(object1);
130
+ visited.add(object2);
128
131
  for (const key of keys1) {
129
132
  const val1 = object1[key];
130
- if (!keys2.includes(key)) {
133
+ if (!(key in object2)) {
131
134
  return false;
132
135
  }
133
136
  if (key !== 'ref') {
@@ -135,7 +138,7 @@ function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
135
138
  if ((isDateObject(val1) && isDateObject(val2)) ||
136
139
  ((isObject(val1) || Array.isArray(val1)) &&
137
140
  (isObject(val2) || Array.isArray(val2)))
138
- ? !deepEqual(val1, val2, _internal_visited)
141
+ ? !deepEqual(val1, val2, visited)
139
142
  : !Object.is(val1, val2)) {
140
143
  return false;
141
144
  }
@@ -174,7 +177,10 @@ var get = (object, path, defaultValue) => {
174
177
  if (!path || !isObject(object)) {
175
178
  return defaultValue;
176
179
  }
177
- const result = (isKey(path) ? [path] : stringToPath(path)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);
180
+ const paths = isKey(path) ? [path] : stringToPath(path);
181
+ const result = paths.reduce((result, key) => {
182
+ return isNullOrUndefined(result) ? undefined : result[key];
183
+ }, object);
178
184
  return isUndefined(result) || result === object
179
185
  ? isUndefined(object[path])
180
186
  ? defaultValue
@@ -240,7 +246,12 @@ function baseGet(object, updatePath) {
240
246
  const length = updatePath.slice(0, -1).length;
241
247
  let index = 0;
242
248
  while (index < length) {
243
- object = isUndefined(object) ? index++ : object[updatePath[index++]];
249
+ if (isNullOrUndefined(object)) {
250
+ object = undefined;
251
+ break;
252
+ }
253
+ object = object[updatePath[index]];
254
+ index++;
244
255
  }
245
256
  return object;
246
257
  }
@@ -253,6 +264,10 @@ function isEmptyArray(obj) {
253
264
  return true;
254
265
  }
255
266
  function unset(object, path) {
267
+ if (isString(path) && Object.prototype.hasOwnProperty.call(object, path)) {
268
+ delete object[path];
269
+ return object;
270
+ }
256
271
  const paths = Array.isArray(path)
257
272
  ? path
258
273
  : isKey(path)
@@ -617,7 +632,8 @@ var validateField = async (field, disabledFieldNames, formValues, validateAllFie
617
632
  isUndefined(inputValue)) ||
618
633
  (isHTMLElement(ref) && ref.value === '') ||
619
634
  inputValue === '' ||
620
- (Array.isArray(inputValue) && !inputValue.length);
635
+ (Array.isArray(inputValue) && !inputValue.length) ||
636
+ (valueAsNumber && typeof inputValue === 'number' && isNaN(inputValue));
621
637
  const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);
622
638
  const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {
623
639
  const message = exceedMax ? maxLengthMessage : minLengthMessage;
@@ -1217,7 +1233,7 @@ function createFormControl(props = {}) {
1217
1233
  updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);
1218
1234
  options.shouldValidate && trigger(name);
1219
1235
  };
1220
- const setValues = (name, value, options) => {
1236
+ const setFieldValues = (name, value, options) => {
1221
1237
  for (const fieldKey in value) {
1222
1238
  if (!value.hasOwnProperty(fieldKey)) {
1223
1239
  return;
@@ -1229,7 +1245,7 @@ function createFormControl(props = {}) {
1229
1245
  isObject(fieldValue) ||
1230
1246
  (field && !field._f)) &&
1231
1247
  !isDateObject(fieldValue)
1232
- ? setValues(fieldName, fieldValue, options)
1248
+ ? setFieldValues(fieldName, fieldValue, options)
1233
1249
  : setFieldValue(fieldName, fieldValue, options);
1234
1250
  }
1235
1251
  };
@@ -1237,17 +1253,15 @@ function createFormControl(props = {}) {
1237
1253
  const field = get(_fields, name);
1238
1254
  const isFieldArray = _names.array.has(name);
1239
1255
  const cloneValue = cloneObject(value);
1256
+ const previousValue = get(_formValues, name);
1257
+ const isValueUnchanged = deepEqual(previousValue, cloneValue);
1240
1258
  set(_formValues, name, cloneValue);
1241
1259
  if (isFieldArray) {
1242
1260
  _subjects.array.next({
1243
1261
  name,
1244
1262
  values: cloneObject(_formValues),
1245
1263
  });
1246
- if ((_proxyFormState.isDirty ||
1247
- _proxyFormState.dirtyFields ||
1248
- _proxySubscribeFormState.isDirty ||
1249
- _proxySubscribeFormState.dirtyFields) &&
1250
- options.shouldDirty) {
1264
+ if (options.shouldDirty) {
1251
1265
  _updateDirtyFields(name);
1252
1266
  _subjects.state.next({
1253
1267
  name,
@@ -1257,22 +1271,41 @@ function createFormControl(props = {}) {
1257
1271
  }
1258
1272
  }
1259
1273
  else {
1260
- field && !field._f && !isNullOrUndefined(cloneValue)
1261
- ? setValues(name, cloneValue, options)
1262
- : setFieldValue(name, cloneValue, options);
1274
+ const isEmpty = (Array.isArray(cloneValue) && !cloneValue.length) ||
1275
+ isEmptyObject(cloneValue);
1276
+ if (!field || field._f || isNullOrUndefined(cloneValue) || isEmpty) {
1277
+ setFieldValue(name, cloneValue, options);
1278
+ }
1279
+ else {
1280
+ setFieldValues(name, cloneValue, options);
1281
+ }
1263
1282
  }
1264
- if (isWatched(name, _names)) {
1265
- _subjects.state.next({
1266
- ..._formState,
1267
- name,
1268
- values: cloneObject(_formValues),
1269
- });
1283
+ if (!isValueUnchanged) {
1284
+ if (isWatched(name, _names)) {
1285
+ _subjects.state.next({
1286
+ ..._formState,
1287
+ name,
1288
+ values: cloneObject(_formValues),
1289
+ });
1290
+ }
1291
+ else {
1292
+ _subjects.state.next({
1293
+ name: _state.mount ? name : undefined,
1294
+ values: cloneObject(_formValues),
1295
+ });
1296
+ }
1270
1297
  }
1271
- else {
1272
- _subjects.state.next({
1273
- name: _state.mount ? name : undefined,
1274
- values: cloneObject(_formValues),
1275
- });
1298
+ };
1299
+ const setValues = (formValues) => {
1300
+ const updatedFormValues = isFunction(formValues)
1301
+ ? formValues(_formValues)
1302
+ : formValues;
1303
+ if (!deepEqual(_formValues, updatedFormValues)) {
1304
+ _formValues = {
1305
+ ..._formValues,
1306
+ ...updatedFormValues,
1307
+ };
1308
+ _subjects.state.next({ ..._formState, values: _formValues });
1276
1309
  }
1277
1310
  };
1278
1311
  const onChange = async (event) => {
@@ -1491,15 +1524,16 @@ function createFormControl(props = {}) {
1491
1524
  const watch = (name, defaultValue) => isFunction(name)
1492
1525
  ? _subjects.state.subscribe({
1493
1526
  next: (payload) => 'values' in payload &&
1494
- name(_getWatch(undefined, defaultValue), payload),
1527
+ name(payload.values || _getWatch(undefined, defaultValue), payload),
1495
1528
  })
1496
1529
  : _getWatch(name, defaultValue, true);
1497
1530
  const _subscribe = (props) => _subjects.state.subscribe({
1498
1531
  next: (formState) => {
1499
1532
  if (shouldSubscribeByName(props.name, formState.name, props.exact) &&
1500
1533
  shouldRenderFormState(formState, props.formState || _proxyFormState, _setFormState, props.reRenderRoot)) {
1534
+ const snapshot = { ..._formValues };
1501
1535
  props.callback({
1502
- values: { ..._formValues },
1536
+ values: snapshot,
1503
1537
  ..._formState,
1504
1538
  ...formState,
1505
1539
  defaultValues: _defaultValues,
@@ -1561,7 +1595,7 @@ function createFormControl(props = {}) {
1561
1595
  const register = (name, options = {}) => {
1562
1596
  let field = get(_fields, name);
1563
1597
  const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);
1564
- const shouldRevalidateRemount = !_names.registerName.has(name) && field && !field._f.mount;
1598
+ const shouldRevalidateRemount = !_names.registerName.has(name) && field && field._f && !field._f.mount;
1565
1599
  set(_fields, name, {
1566
1600
  ...(field || {}),
1567
1601
  _f: {
@@ -1971,6 +2005,7 @@ function createFormControl(props = {}) {
1971
2005
  handleSubmit,
1972
2006
  watch,
1973
2007
  setValue,
2008
+ setValues,
1974
2009
  getValues,
1975
2010
  reset,
1976
2011
  resetField,