@bombillazo/rhf-plus 7.68.0-plus.0 → 7.70.0-plus.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 (255) hide show
  1. package/dist/__tests__/controller.server.test.d.ts +2 -0
  2. package/dist/__tests__/controller.server.test.d.ts.map +1 -0
  3. package/dist/__tests__/controller.test.d.ts +2 -0
  4. package/dist/__tests__/controller.test.d.ts.map +1 -0
  5. package/dist/__tests__/disabled-arrays.test.d.ts +2 -0
  6. package/dist/__tests__/disabled-arrays.test.d.ts.map +1 -0
  7. package/dist/__tests__/form.test.d.ts +2 -0
  8. package/dist/__tests__/form.test.d.ts.map +1 -0
  9. package/dist/__tests__/formStateSubscribe.server.test.d.ts +2 -0
  10. package/dist/__tests__/formStateSubscribe.server.test.d.ts.map +1 -0
  11. package/dist/__tests__/formStateSubscribe.test.d.ts +2 -0
  12. package/dist/__tests__/formStateSubscribe.test.d.ts.map +1 -0
  13. package/dist/__tests__/isPlainObject.test.d.ts +2 -0
  14. package/dist/__tests__/isPlainObject.test.d.ts.map +1 -0
  15. package/dist/__tests__/logic/appendErrors.test.d.ts +2 -0
  16. package/dist/__tests__/logic/appendErrors.test.d.ts.map +1 -0
  17. package/dist/__tests__/logic/createFormControl.test.d.ts +2 -0
  18. package/dist/__tests__/logic/createFormControl.test.d.ts.map +1 -0
  19. package/dist/__tests__/logic/generateId.test.d.ts +2 -0
  20. package/dist/__tests__/logic/generateId.test.d.ts.map +1 -0
  21. package/dist/__tests__/logic/getCheckboxValue.test.d.ts +2 -0
  22. package/dist/__tests__/logic/getCheckboxValue.test.d.ts.map +1 -0
  23. package/dist/__tests__/logic/getDirtyFields.test.d.ts +2 -0
  24. package/dist/__tests__/logic/getDirtyFields.test.d.ts.map +1 -0
  25. package/dist/__tests__/logic/getEventValue.test.d.ts +2 -0
  26. package/dist/__tests__/logic/getEventValue.test.d.ts.map +1 -0
  27. package/dist/__tests__/logic/getFieldValue.test.d.ts +2 -0
  28. package/dist/__tests__/logic/getFieldValue.test.d.ts.map +1 -0
  29. package/dist/__tests__/logic/getFieldValueAs.test.d.ts +2 -0
  30. package/dist/__tests__/logic/getFieldValueAs.test.d.ts.map +1 -0
  31. package/dist/__tests__/logic/getFocusFieldName.test.d.ts +2 -0
  32. package/dist/__tests__/logic/getFocusFieldName.test.d.ts.map +1 -0
  33. package/dist/__tests__/logic/getNodeParentName.test.d.ts +2 -0
  34. package/dist/__tests__/logic/getNodeParentName.test.d.ts.map +1 -0
  35. package/dist/__tests__/logic/getRadioValue.test.d.ts +2 -0
  36. package/dist/__tests__/logic/getRadioValue.test.d.ts.map +1 -0
  37. package/dist/__tests__/logic/getResolverOptions.test.d.ts +2 -0
  38. package/dist/__tests__/logic/getResolverOptions.test.d.ts.map +1 -0
  39. package/dist/__tests__/logic/getRuleValue.test.d.ts +2 -0
  40. package/dist/__tests__/logic/getRuleValue.test.d.ts.map +1 -0
  41. package/dist/__tests__/logic/getValidateError.test.d.ts +2 -0
  42. package/dist/__tests__/logic/getValidateError.test.d.ts.map +1 -0
  43. package/dist/__tests__/logic/getValidationModes.test.d.ts +2 -0
  44. package/dist/__tests__/logic/getValidationModes.test.d.ts.map +1 -0
  45. package/dist/__tests__/logic/getValueAndMessage.test.d.ts +2 -0
  46. package/dist/__tests__/logic/getValueAndMessage.test.d.ts.map +1 -0
  47. package/dist/__tests__/logic/hasPromiseValidation.test.d.ts +2 -0
  48. package/dist/__tests__/logic/hasPromiseValidation.test.d.ts.map +1 -0
  49. package/dist/__tests__/logic/hasValidation.test.d.ts +2 -0
  50. package/dist/__tests__/logic/hasValidation.test.d.ts.map +1 -0
  51. package/dist/__tests__/logic/isNameInFieldArray.test.d.ts +2 -0
  52. package/dist/__tests__/logic/isNameInFieldArray.test.d.ts.map +1 -0
  53. package/dist/__tests__/logic/isWatched.test.d.ts +2 -0
  54. package/dist/__tests__/logic/isWatched.test.d.ts.map +1 -0
  55. package/dist/__tests__/logic/iterateFieldsByAction.test.d.ts +2 -0
  56. package/dist/__tests__/logic/iterateFieldsByAction.test.d.ts.map +1 -0
  57. package/dist/__tests__/logic/schemaErrorLookup.test.d.ts +2 -0
  58. package/dist/__tests__/logic/schemaErrorLookup.test.d.ts.map +1 -0
  59. package/dist/__tests__/logic/shouldRenderFormState.test.d.ts +2 -0
  60. package/dist/__tests__/logic/shouldRenderFormState.test.d.ts.map +1 -0
  61. package/dist/__tests__/logic/shouldSubscribeByName.test.d.ts +2 -0
  62. package/dist/__tests__/logic/shouldSubscribeByName.test.d.ts.map +1 -0
  63. package/dist/__tests__/logic/skipValidation.test.d.ts +2 -0
  64. package/dist/__tests__/logic/skipValidation.test.d.ts.map +1 -0
  65. package/dist/__tests__/logic/unsetEmptyArray.test.d.ts +2 -0
  66. package/dist/__tests__/logic/unsetEmptyArray.test.d.ts.map +1 -0
  67. package/dist/__tests__/logic/validateField.test.d.ts +2 -0
  68. package/dist/__tests__/logic/validateField.test.d.ts.map +1 -0
  69. package/dist/__tests__/readonly-validation.test.d.ts +2 -0
  70. package/dist/__tests__/readonly-validation.test.d.ts.map +1 -0
  71. package/dist/__tests__/type.test.d.ts +2 -0
  72. package/dist/__tests__/type.test.d.ts.map +1 -0
  73. package/dist/__tests__/useController.test.d.ts +2 -0
  74. package/dist/__tests__/useController.test.d.ts.map +1 -0
  75. package/dist/__tests__/useFieldArray/append.test.d.ts +2 -0
  76. package/dist/__tests__/useFieldArray/append.test.d.ts.map +1 -0
  77. package/dist/__tests__/useFieldArray/focus.test.d.ts +2 -0
  78. package/dist/__tests__/useFieldArray/focus.test.d.ts.map +1 -0
  79. package/dist/__tests__/useFieldArray/insert.test.d.ts +2 -0
  80. package/dist/__tests__/useFieldArray/insert.test.d.ts.map +1 -0
  81. package/dist/__tests__/useFieldArray/move.test.d.ts +2 -0
  82. package/dist/__tests__/useFieldArray/move.test.d.ts.map +1 -0
  83. package/dist/__tests__/useFieldArray/prepend.test.d.ts +2 -0
  84. package/dist/__tests__/useFieldArray/prepend.test.d.ts.map +1 -0
  85. package/dist/__tests__/useFieldArray/remove.test.d.ts +2 -0
  86. package/dist/__tests__/useFieldArray/remove.test.d.ts.map +1 -0
  87. package/dist/__tests__/useFieldArray/replace.test.d.ts +2 -0
  88. package/dist/__tests__/useFieldArray/replace.test.d.ts.map +1 -0
  89. package/dist/__tests__/useFieldArray/swap.test.d.ts +2 -0
  90. package/dist/__tests__/useFieldArray/swap.test.d.ts.map +1 -0
  91. package/dist/__tests__/useFieldArray/update.test.d.ts +2 -0
  92. package/dist/__tests__/useFieldArray/update.test.d.ts.map +1 -0
  93. package/dist/__tests__/useFieldArray.test.d.ts +2 -0
  94. package/dist/__tests__/useFieldArray.test.d.ts.map +1 -0
  95. package/dist/__tests__/useForm/clearErrors.test.d.ts +2 -0
  96. package/dist/__tests__/useForm/clearErrors.test.d.ts.map +1 -0
  97. package/dist/__tests__/useForm/formState.test.d.ts +2 -0
  98. package/dist/__tests__/useForm/formState.test.d.ts.map +1 -0
  99. package/dist/__tests__/useForm/getFieldState.test.d.ts +2 -0
  100. package/dist/__tests__/useForm/getFieldState.test.d.ts.map +1 -0
  101. package/dist/__tests__/useForm/getValues.test.d.ts +2 -0
  102. package/dist/__tests__/useForm/getValues.test.d.ts.map +1 -0
  103. package/dist/__tests__/useForm/handleSubmit.test.d.ts +2 -0
  104. package/dist/__tests__/useForm/handleSubmit.test.d.ts.map +1 -0
  105. package/dist/__tests__/useForm/hasBeenSubmitted.test.d.ts +2 -0
  106. package/dist/__tests__/useForm/hasBeenSubmitted.test.d.ts.map +1 -0
  107. package/dist/__tests__/useForm/isDirtySinceSubmit.test.d.ts +2 -0
  108. package/dist/__tests__/useForm/isDirtySinceSubmit.test.d.ts.map +1 -0
  109. package/dist/__tests__/useForm/register.test.d.ts +2 -0
  110. package/dist/__tests__/useForm/register.test.d.ts.map +1 -0
  111. package/dist/__tests__/useForm/reset.test.d.ts +2 -0
  112. package/dist/__tests__/useForm/reset.test.d.ts.map +1 -0
  113. package/dist/__tests__/useForm/resetField.test.d.ts +2 -0
  114. package/dist/__tests__/useForm/resetField.test.d.ts.map +1 -0
  115. package/dist/__tests__/useForm/resolver.test.d.ts +2 -0
  116. package/dist/__tests__/useForm/resolver.test.d.ts.map +1 -0
  117. package/dist/__tests__/useForm/setError.test.d.ts +2 -0
  118. package/dist/__tests__/useForm/setError.test.d.ts.map +1 -0
  119. package/dist/__tests__/useForm/setFocus.test.d.ts +2 -0
  120. package/dist/__tests__/useForm/setFocus.test.d.ts.map +1 -0
  121. package/dist/__tests__/useForm/setValue.test.d.ts +2 -0
  122. package/dist/__tests__/useForm/setValue.test.d.ts.map +1 -0
  123. package/dist/__tests__/useForm/setValueEmptyArray.test.d.ts +2 -0
  124. package/dist/__tests__/useForm/setValueEmptyArray.test.d.ts.map +1 -0
  125. package/dist/__tests__/useForm/subscribe.test.d.ts +2 -0
  126. package/dist/__tests__/useForm/subscribe.test.d.ts.map +1 -0
  127. package/dist/__tests__/useForm/trigger.test.d.ts +2 -0
  128. package/dist/__tests__/useForm/trigger.test.d.ts.map +1 -0
  129. package/dist/__tests__/useForm/unregister.test.d.ts +2 -0
  130. package/dist/__tests__/useForm/unregister.test.d.ts.map +1 -0
  131. package/dist/__tests__/useForm/useFormWithNullValues.test.d.ts +2 -0
  132. package/dist/__tests__/useForm/useFormWithNullValues.test.d.ts.map +1 -0
  133. package/dist/__tests__/useForm/watch.test.d.ts +2 -0
  134. package/dist/__tests__/useForm/watch.test.d.ts.map +1 -0
  135. package/dist/__tests__/useForm.server.test.d.ts +2 -0
  136. package/dist/__tests__/useForm.server.test.d.ts.map +1 -0
  137. package/dist/__tests__/useForm.test.d.ts +2 -0
  138. package/dist/__tests__/useForm.test.d.ts.map +1 -0
  139. package/dist/__tests__/useFormContext.server.test.d.ts +2 -0
  140. package/dist/__tests__/useFormContext.server.test.d.ts.map +1 -0
  141. package/dist/__tests__/useFormContext.test.d.ts +2 -0
  142. package/dist/__tests__/useFormContext.test.d.ts.map +1 -0
  143. package/dist/__tests__/useFormState.test.d.ts +2 -0
  144. package/dist/__tests__/useFormState.test.d.ts.map +1 -0
  145. package/dist/__tests__/useWatch.test.d.ts +2 -0
  146. package/dist/__tests__/useWatch.test.d.ts.map +1 -0
  147. package/dist/__tests__/utils/append.test.d.ts +2 -0
  148. package/dist/__tests__/utils/append.test.d.ts.map +1 -0
  149. package/dist/__tests__/utils/cloneObject.test.d.ts +2 -0
  150. package/dist/__tests__/utils/cloneObject.test.d.ts.map +1 -0
  151. package/dist/__tests__/utils/compact.test.d.ts +2 -0
  152. package/dist/__tests__/utils/compact.test.d.ts.map +1 -0
  153. package/dist/__tests__/utils/convertToArrayPayload.test.d.ts +2 -0
  154. package/dist/__tests__/utils/convertToArrayPayload.test.d.ts.map +1 -0
  155. package/dist/__tests__/utils/createSubject.test.d.ts +2 -0
  156. package/dist/__tests__/utils/createSubject.test.d.ts.map +1 -0
  157. package/dist/__tests__/utils/deepEqual.test.d.ts +2 -0
  158. package/dist/__tests__/utils/deepEqual.test.d.ts.map +1 -0
  159. package/dist/__tests__/utils/deepMerge.test.d.ts +2 -0
  160. package/dist/__tests__/utils/deepMerge.test.d.ts.map +1 -0
  161. package/dist/__tests__/utils/extractFormValues.test.d.ts +2 -0
  162. package/dist/__tests__/utils/extractFormValues.test.d.ts.map +1 -0
  163. package/dist/__tests__/utils/fillEmptyArray.test.d.ts +2 -0
  164. package/dist/__tests__/utils/fillEmptyArray.test.d.ts.map +1 -0
  165. package/dist/__tests__/utils/flatten.test.d.ts +2 -0
  166. package/dist/__tests__/utils/flatten.test.d.ts.map +1 -0
  167. package/dist/__tests__/utils/get.test.d.ts +2 -0
  168. package/dist/__tests__/utils/get.test.d.ts.map +1 -0
  169. package/dist/__tests__/utils/insert.test.d.ts +2 -0
  170. package/dist/__tests__/utils/insert.test.d.ts.map +1 -0
  171. package/dist/__tests__/utils/isBoolean.test.d.ts +2 -0
  172. package/dist/__tests__/utils/isBoolean.test.d.ts.map +1 -0
  173. package/dist/__tests__/utils/isCheckBoxInput.test.d.ts +2 -0
  174. package/dist/__tests__/utils/isCheckBoxInput.test.d.ts.map +1 -0
  175. package/dist/__tests__/utils/isEmptyObject.test.d.ts +2 -0
  176. package/dist/__tests__/utils/isEmptyObject.test.d.ts.map +1 -0
  177. package/dist/__tests__/utils/isFileInput.test.d.ts +2 -0
  178. package/dist/__tests__/utils/isFileInput.test.d.ts.map +1 -0
  179. package/dist/__tests__/utils/isFunction.test.d.ts +2 -0
  180. package/dist/__tests__/utils/isFunction.test.d.ts.map +1 -0
  181. package/dist/__tests__/utils/isHTMLElement.test.d.ts +2 -0
  182. package/dist/__tests__/utils/isHTMLElement.test.d.ts.map +1 -0
  183. package/dist/__tests__/utils/isKey.test.d.ts +2 -0
  184. package/dist/__tests__/utils/isKey.test.d.ts.map +1 -0
  185. package/dist/__tests__/utils/isMultipleSelect.test.d.ts +2 -0
  186. package/dist/__tests__/utils/isMultipleSelect.test.d.ts.map +1 -0
  187. package/dist/__tests__/utils/isNullOrUndefined.test.d.ts +2 -0
  188. package/dist/__tests__/utils/isNullOrUndefined.test.d.ts.map +1 -0
  189. package/dist/__tests__/utils/isObject.test.d.ts +2 -0
  190. package/dist/__tests__/utils/isObject.test.d.ts.map +1 -0
  191. package/dist/__tests__/utils/isPrimitive.test.d.ts +2 -0
  192. package/dist/__tests__/utils/isPrimitive.test.d.ts.map +1 -0
  193. package/dist/__tests__/utils/isRadioInput.test.d.ts +2 -0
  194. package/dist/__tests__/utils/isRadioInput.test.d.ts.map +1 -0
  195. package/dist/__tests__/utils/isRadioOrCheckbox.test.d.ts +2 -0
  196. package/dist/__tests__/utils/isRadioOrCheckbox.test.d.ts.map +1 -0
  197. package/dist/__tests__/utils/isRegex.test.d.ts +2 -0
  198. package/dist/__tests__/utils/isRegex.test.d.ts.map +1 -0
  199. package/dist/__tests__/utils/isString.test.d.ts +2 -0
  200. package/dist/__tests__/utils/isString.test.d.ts.map +1 -0
  201. package/dist/__tests__/utils/isUndefined.test.d.ts +2 -0
  202. package/dist/__tests__/utils/isUndefined.test.d.ts.map +1 -0
  203. package/dist/__tests__/utils/live.test.d.ts +2 -0
  204. package/dist/__tests__/utils/live.test.d.ts.map +1 -0
  205. package/dist/__tests__/utils/mergeMissingKeysAsUndefined.test.d.ts +2 -0
  206. package/dist/__tests__/utils/mergeMissingKeysAsUndefined.test.d.ts.map +1 -0
  207. package/dist/__tests__/utils/move.test.d.ts +2 -0
  208. package/dist/__tests__/utils/move.test.d.ts.map +1 -0
  209. package/dist/__tests__/utils/noop.test.d.ts +2 -0
  210. package/dist/__tests__/utils/noop.test.d.ts.map +1 -0
  211. package/dist/__tests__/utils/objectHasFunction.test.d.ts +2 -0
  212. package/dist/__tests__/utils/objectHasFunction.test.d.ts.map +1 -0
  213. package/dist/__tests__/utils/prepend.test.d.ts +2 -0
  214. package/dist/__tests__/utils/prepend.test.d.ts.map +1 -0
  215. package/dist/__tests__/utils/remove.test.d.ts +2 -0
  216. package/dist/__tests__/utils/remove.test.d.ts.map +1 -0
  217. package/dist/__tests__/utils/set.test.d.ts +2 -0
  218. package/dist/__tests__/utils/set.test.d.ts.map +1 -0
  219. package/dist/__tests__/utils/stringToPath.test.d.ts +2 -0
  220. package/dist/__tests__/utils/stringToPath.test.d.ts.map +1 -0
  221. package/dist/__tests__/utils/swap.test.d.ts +2 -0
  222. package/dist/__tests__/utils/swap.test.d.ts.map +1 -0
  223. package/dist/__tests__/utils/unset.test.d.ts +2 -0
  224. package/dist/__tests__/utils/unset.test.d.ts.map +1 -0
  225. package/dist/__tests__/utils/validationModeChecker.test.d.ts +2 -0
  226. package/dist/__tests__/utils/validationModeChecker.test.d.ts.map +1 -0
  227. package/dist/__tests__/watch.server.test.d.ts +2 -0
  228. package/dist/__tests__/watch.server.test.d.ts.map +1 -0
  229. package/dist/__tests__/watch.test.d.ts +2 -0
  230. package/dist/__tests__/watch.test.d.ts.map +1 -0
  231. package/dist/index.cjs.js +1 -1
  232. package/dist/index.cjs.js.map +1 -1
  233. package/dist/index.esm.mjs +85 -49
  234. package/dist/index.esm.mjs.map +1 -1
  235. package/dist/index.umd.js +1 -1
  236. package/dist/index.umd.js.map +1 -1
  237. package/dist/logic/createFormControl.d.ts.map +1 -1
  238. package/dist/react-server.esm.mjs +70 -39
  239. package/dist/react-server.esm.mjs.map +1 -1
  240. package/dist/types/fieldArray.d.ts.map +1 -1
  241. package/dist/types/form.d.ts +1 -8
  242. package/dist/types/form.d.ts.map +1 -1
  243. package/dist/types/index.d.ts +1 -0
  244. package/dist/types/index.d.ts.map +1 -1
  245. package/dist/types/utils.d.ts +3 -2
  246. package/dist/types/utils.d.ts.map +1 -1
  247. package/dist/types/watch.d.ts +32 -0
  248. package/dist/types/watch.d.ts.map +1 -0
  249. package/dist/useController.d.ts.map +1 -1
  250. package/dist/useFieldArray.d.ts.map +1 -1
  251. package/dist/useWatch.d.ts.map +1 -1
  252. package/dist/utils/cloneObject.d.ts.map +1 -1
  253. package/dist/watch.d.ts +7 -17
  254. package/dist/watch.d.ts.map +1 -1
  255. package/package.json +18 -18
@@ -33,29 +33,23 @@ var isWeb = typeof window !== 'undefined' &&
33
33
  typeof document !== 'undefined';
34
34
 
35
35
  function cloneObject(data) {
36
- let copy;
37
- const isArray = Array.isArray(data);
38
- const isFileListInstance = typeof FileList !== 'undefined' ? data instanceof FileList : false;
39
36
  if (data instanceof Date) {
40
- copy = new Date(data);
37
+ return new Date(data);
41
38
  }
42
- else if (!(isWeb && (data instanceof Blob || isFileListInstance)) &&
43
- (isArray || isObject(data))) {
44
- copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));
45
- if (!isArray && !isPlainObject(data)) {
46
- copy = data;
47
- }
48
- else {
49
- for (const key in data) {
50
- if (data.hasOwnProperty(key)) {
51
- copy[key] = cloneObject(data[key]);
52
- }
53
- }
54
- }
39
+ const isFileListInstance = typeof FileList !== 'undefined' && data instanceof FileList;
40
+ if (isWeb && (data instanceof Blob || isFileListInstance)) {
41
+ return data;
55
42
  }
56
- else {
43
+ const isArray = Array.isArray(data);
44
+ if (!isArray && !(isObject(data) && isPlainObject(data))) {
57
45
  return data;
58
46
  }
47
+ const copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));
48
+ for (const key in data) {
49
+ if (Object.prototype.hasOwnProperty.call(data, key)) {
50
+ copy[key] = cloneObject(data[key]);
51
+ }
52
+ }
59
53
  return copy;
60
54
  }
61
55
 
@@ -81,6 +75,8 @@ var get = (object, path, defaultValue) => {
81
75
 
82
76
  var isBoolean = (value) => typeof value === 'boolean';
83
77
 
78
+ var isFunction = (value) => typeof value === 'function';
79
+
84
80
  function mergeMissingKeysAsUndefined(oldObject, newObject) {
85
81
  if (!newObject) {
86
82
  return newObject;
@@ -321,7 +317,7 @@ function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
321
317
  return Object.is(object1, object2);
322
318
  }
323
319
  if (isDateObject(object1) && isDateObject(object2)) {
324
- return object1.getTime() === object2.getTime();
320
+ return Object.is(object1.getTime(), object2.getTime());
325
321
  }
326
322
  const keys1 = Object.keys(object1);
327
323
  const keys2 = Object.keys(object2);
@@ -564,12 +560,12 @@ function useController(props) {
564
560
  const ref = React.useCallback((elm) => {
565
561
  elementRef.current = elm;
566
562
  const field = get(control._fields, name);
567
- if (field && elm) {
563
+ if (field && field._f && elm) {
568
564
  field._f.ref = {
569
- focus: () => { var _a; return (_a = elm.focus) === null || _a === void 0 ? void 0 : _a.call(elm); },
570
- select: () => { var _a; return (_a = elm.select) === null || _a === void 0 ? void 0 : _a.call(elm); },
571
- setCustomValidity: (message) => elm.setCustomValidity(message),
572
- reportValidity: () => elm.reportValidity(),
565
+ focus: () => isFunction(elm.focus) && elm.focus(),
566
+ select: () => isFunction(elm.select) && elm.select(),
567
+ setCustomValidity: (message) => isFunction(elm.setCustomValidity) && elm.setCustomValidity(message),
568
+ reportValidity: () => isFunction(elm.reportValidity) && elm.reportValidity(),
573
569
  };
574
570
  }
575
571
  }, [control._fields, name]);
@@ -927,8 +923,6 @@ var isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;
927
923
 
928
924
  var isFileInput = (element) => element.type === 'file';
929
925
 
930
- var isFunction = (value) => typeof value === 'function';
931
-
932
926
  var isHTMLElement = (value) => {
933
927
  if (!isWeb) {
934
928
  return false;
@@ -1541,6 +1535,7 @@ function createFormControl(props = {}) {
1541
1535
  action: false,
1542
1536
  mount: false,
1543
1537
  watch: false,
1538
+ keepIsValid: false,
1544
1539
  };
1545
1540
  let _names = {
1546
1541
  mount: new Set(),
@@ -1552,7 +1547,7 @@ function createFormControl(props = {}) {
1552
1547
  };
1553
1548
  let delayErrorCallback;
1554
1549
  let timer = 0;
1555
- const _proxyFormState = {
1550
+ const defaultProxyFormState = {
1556
1551
  isDirty: false,
1557
1552
  isDirtySinceSubmit: false,
1558
1553
  hasBeenSubmitted: false,
@@ -1564,6 +1559,9 @@ function createFormControl(props = {}) {
1564
1559
  isValid: false,
1565
1560
  errors: false,
1566
1561
  };
1562
+ const _proxyFormState = {
1563
+ ...defaultProxyFormState,
1564
+ };
1567
1565
  let _proxySubscribeFormState = {
1568
1566
  ..._proxyFormState,
1569
1567
  };
@@ -1580,13 +1578,21 @@ function createFormControl(props = {}) {
1580
1578
  timer = setTimeout(callback, wait);
1581
1579
  };
1582
1580
  const _setValid = async (shouldUpdateValid) => {
1581
+ if (_state.keepIsValid) {
1582
+ return;
1583
+ }
1583
1584
  if ((Array.isArray(_options.disabled) || !_options.disabled) &&
1584
1585
  (_proxyFormState.isValid ||
1585
1586
  _proxySubscribeFormState.isValid ||
1586
1587
  shouldUpdateValid)) {
1587
- const isValid = _options.resolver
1588
- ? isEmptyObject((await _runSchema()).errors)
1589
- : await executeBuiltInValidation(_fields, true);
1588
+ let isValid;
1589
+ if (_options.resolver) {
1590
+ isValid = isEmptyObject((await _runSchema()).errors);
1591
+ _updateIsValidating();
1592
+ }
1593
+ else {
1594
+ isValid = await executeBuiltInValidation(_fields, true);
1595
+ }
1590
1596
  if (isValid !== _formState.isValid) {
1591
1597
  _subjects.state.next({
1592
1598
  isValid,
@@ -1782,11 +1788,11 @@ function createFormControl(props = {}) {
1782
1788
  const _runSchema = async (name) => {
1783
1789
  _updateIsValidating(name, true);
1784
1790
  const result = await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));
1785
- _updateIsValidating(name);
1786
1791
  return result;
1787
1792
  };
1788
1793
  const executeSchemaAndUpdateState = async (names) => {
1789
1794
  const { errors } = await _runSchema(names);
1795
+ _updateIsValidating(names);
1790
1796
  if (names) {
1791
1797
  for (const name of names) {
1792
1798
  const error = get(errors, name);
@@ -1824,7 +1830,7 @@ function createFormControl(props = {}) {
1824
1830
  }
1825
1831
  if (fieldError[_f.name]) {
1826
1832
  context.valid = false;
1827
- if (shouldOnlyCheckValid) {
1833
+ if (shouldOnlyCheckValid || props.shouldUseNativeValidation) {
1828
1834
  break;
1829
1835
  }
1830
1836
  }
@@ -1979,11 +1985,19 @@ function createFormControl(props = {}) {
1979
1985
  ? setValues(name, cloneValue, options)
1980
1986
  : setFieldValue(name, cloneValue, options);
1981
1987
  }
1982
- isWatched(name, _names) && _subjects.state.next({ ..._formState, name });
1983
- _subjects.state.next({
1984
- name: _state.mount ? name : undefined,
1985
- values: cloneObject(_formValues),
1986
- });
1988
+ if (isWatched(name, _names)) {
1989
+ _subjects.state.next({
1990
+ ..._formState,
1991
+ name,
1992
+ values: cloneObject(_formValues),
1993
+ });
1994
+ }
1995
+ else {
1996
+ _subjects.state.next({
1997
+ name: _state.mount ? name : undefined,
1998
+ values: cloneObject(_formValues),
1999
+ });
2000
+ }
1987
2001
  // Trigger validation when shouldValidate is true
1988
2002
  // This ensures validation happens for all cases including:
1989
2003
  // - Field arrays
@@ -2112,6 +2126,7 @@ function createFormControl(props = {}) {
2112
2126
  !isBlurEvent && watched && _subjects.state.next({ ..._formState });
2113
2127
  if (_options.resolver) {
2114
2128
  const { errors } = await _runSchema([name]);
2129
+ _updateIsValidating([name]);
2115
2130
  _updateIsFieldValueUpdated(fieldValue);
2116
2131
  if (isFieldValueUpdated) {
2117
2132
  const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);
@@ -2263,7 +2278,10 @@ function createFormControl(props = {}) {
2263
2278
  };
2264
2279
  return _subscribe({
2265
2280
  ...props,
2266
- formState: _proxySubscribeFormState,
2281
+ formState: {
2282
+ ...defaultProxyFormState,
2283
+ ...props.formState,
2284
+ },
2267
2285
  });
2268
2286
  };
2269
2287
  const unregister = (name, options = {}) => {
@@ -2457,6 +2475,7 @@ function createFormControl(props = {}) {
2457
2475
  });
2458
2476
  if (_options.resolver) {
2459
2477
  const { errors, values } = await _runSchema();
2478
+ _updateIsValidating();
2460
2479
  _formState.errors = errors;
2461
2480
  fieldValues = cloneObject(values);
2462
2481
  }
@@ -2541,9 +2560,15 @@ function createFormControl(props = {}) {
2541
2560
  ...Object.keys(getDirtyFields(_defaultValues, _formValues)),
2542
2561
  ]);
2543
2562
  for (const fieldName of Array.from(fieldsToCheck)) {
2544
- get(_formState.dirtyFields, fieldName)
2545
- ? set(values, fieldName, get(_formValues, fieldName))
2546
- : setValue(fieldName, get(values, fieldName));
2563
+ const isDirty = get(_formState.dirtyFields, fieldName);
2564
+ const existingValue = get(_formValues, fieldName);
2565
+ const newValue = get(values, fieldName);
2566
+ if (isDirty && !isUndefined(existingValue)) {
2567
+ set(values, fieldName, existingValue);
2568
+ }
2569
+ else if (!isDirty && !isUndefined(newValue)) {
2570
+ setValue(fieldName, newValue);
2571
+ }
2547
2572
  }
2548
2573
  }
2549
2574
  else {
@@ -2601,6 +2626,7 @@ function createFormControl(props = {}) {
2601
2626
  !!keepStateOptions.keepDirtyValues ||
2602
2627
  (!_options.shouldUnregister && !isEmptyObject(values));
2603
2628
  _state.watch = !!_options.shouldUnregister;
2629
+ _state.keepIsValid = !!keepStateOptions.keepIsValid;
2604
2630
  _state.action = false;
2605
2631
  // Clear errors synchronously to prevent validation errors on subsequent submissions
2606
2632
  // This fixes the issue where form.reset() causes validation errors on subsequent
@@ -2648,7 +2674,7 @@ function createFormControl(props = {}) {
2648
2674
  };
2649
2675
  const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)
2650
2676
  ? formValues(_formValues)
2651
- : formValues, keepStateOptions);
2677
+ : formValues, { ..._options.resetOptions, ...keepStateOptions });
2652
2678
  const setFocus = (name, options = {}) => {
2653
2679
  const field = get(_fields, name);
2654
2680
  const fieldReference = field && field._f;
@@ -2657,10 +2683,14 @@ function createFormControl(props = {}) {
2657
2683
  ? fieldReference.refs[0]
2658
2684
  : fieldReference.ref;
2659
2685
  if (fieldRef.focus) {
2660
- fieldRef.focus();
2661
- options.shouldSelect &&
2662
- isFunction(fieldRef.select) &&
2663
- fieldRef.select();
2686
+ // Use setTimeout to ensure focus happens after any pending state updates
2687
+ // This fixes the issue where setFocus doesn't work immediately after setError
2688
+ setTimeout(() => {
2689
+ fieldRef.focus();
2690
+ options.shouldSelect &&
2691
+ isFunction(fieldRef.select) &&
2692
+ fieldRef.select();
2693
+ });
2664
2694
  }
2665
2695
  }
2666
2696
  };
@@ -2751,6 +2781,7 @@ function createFormControl(props = {}) {
2751
2781
  setError,
2752
2782
  _subscribe,
2753
2783
  _runSchema,
2784
+ _updateIsValidating,
2754
2785
  _focusError,
2755
2786
  _getWatch,
2756
2787
  _getDirty,
@@ -2832,7 +2863,7 @@ var generateId = () => {
2832
2863
  }
2833
2864
  const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;
2834
2865
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
2835
- const r = (Math.random() * 16 + d) % 16 | 0;
2866
+ const r = ((Math.random() * 16 + d) % 16) | 0;
2836
2867
  return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);
2837
2868
  });
2838
2869
  };
@@ -3054,6 +3085,7 @@ function useFieldArray(props) {
3054
3085
  !getValidationModes(control._options.reValidateMode).isOnSubmit) {
3055
3086
  if (control._options.resolver) {
3056
3087
  control._runSchema([name]).then((result) => {
3088
+ control._updateIsValidating([name]);
3057
3089
  const error = get(result.errors, name);
3058
3090
  const existingError = get(control._formState.errors, name);
3059
3091
  if (existingError
@@ -3312,7 +3344,11 @@ function useForm(props = {}) {
3312
3344
  * Watch component that subscribes to form field changes and re-renders when watched fields update.
3313
3345
  *
3314
3346
  * @param control - The form control object from useForm
3315
- * @param names - Array of field names to watch for changes
3347
+ * @param name - Can be field name, array of field names, or undefined to watch the entire form
3348
+ * @param disabled - Disable subscription
3349
+ * @param exact - Whether to watch exact field names or not
3350
+ * @param defaultValue - The default value to use if the field is not yet set
3351
+ * @param compute - Function to compute derived values from watched fields
3316
3352
  * @param render - The function that receives watched values and returns ReactNode
3317
3353
  * @returns The result of calling render function with watched values
3318
3354
  *
@@ -3330,7 +3366,7 @@ function useForm(props = {}) {
3330
3366
  * />
3331
3367
  * ```
3332
3368
  */
3333
- const Watch = ({ control, names, render, }) => render(useWatch({ control, name: names }));
3369
+ const Watch = (props) => props.render(useWatch({ name: props.names, ...props }));
3334
3370
 
3335
3371
  export { Controller, Form, FormProvider, FormStateSubscribe, Watch, appendErrors, createFormControl, get, set, submitForm as submit, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };
3336
3372
  //# sourceMappingURL=index.esm.mjs.map