@helsenorge/designsystem-react 1.0.0-beta136 → 1.0.0-beta137

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 (218) hide show
  1. package/{AlertSignFill-649f7a75.js → AlertSignFill-a4281dbe.js} +2 -2
  2. package/AlertSignFill-a4281dbe.js.map +1 -0
  3. package/{AlertSignStroke-38862a30.js → AlertSignStroke-dee7da33.js} +2 -2
  4. package/AlertSignStroke-dee7da33.js.map +1 -0
  5. package/AnchorLink-9d160426.js +2 -0
  6. package/AnchorLink-9d160426.js.map +1 -0
  7. package/{ArrowRight-d02dab87.js → ArrowRight-1ccb58be.js} +2 -2
  8. package/ArrowRight-1ccb58be.js.map +1 -0
  9. package/{ArrowUpRight-6d59a425.js → ArrowUpRight-209b1749.js} +2 -2
  10. package/ArrowUpRight-209b1749.js.map +1 -0
  11. package/{Button-66888459.js → Button-41d2f9a6.js} +2 -2
  12. package/Button-41d2f9a6.js.map +1 -0
  13. package/{Calendar-485713e6.js → Calendar-926618b6.js} +2 -2
  14. package/Calendar-926618b6.js.map +1 -0
  15. package/{Check-244aa62e.js → Check-026c98a8.js} +2 -2
  16. package/Check-026c98a8.js.map +1 -0
  17. package/{Checkbox-745fc390.js → Checkbox-2cffb399.js} +2 -2
  18. package/Checkbox-2cffb399.js.map +1 -0
  19. package/{ChevronDown-6dc58d3e.js → ChevronDown-d799367a.js} +2 -2
  20. package/ChevronDown-d799367a.js.map +1 -0
  21. package/{ChevronRight-d1822801.js → ChevronRight-5087373d.js} +2 -2
  22. package/ChevronRight-5087373d.js.map +1 -0
  23. package/{ChevronUp-ed970ae7.js → ChevronUp-ed252eb6.js} +2 -2
  24. package/ChevronUp-ed252eb6.js.map +1 -0
  25. package/Close-1846777e.js +2 -0
  26. package/Close-1846777e.js.map +1 -0
  27. package/{FormGroup-8968fdf3.js → FormGroup-172ed911.js} +2 -2
  28. package/FormGroup-172ed911.js.map +1 -0
  29. package/{Group-172e0eb1.js → Group-777dfb43.js} +2 -2
  30. package/Group-777dfb43.js.map +1 -0
  31. package/{HelpBubble-8ff1a72a.js → HelpBubble-de54b956.js} +2 -2
  32. package/HelpBubble-de54b956.js.map +1 -0
  33. package/{Hospital-73b84ca6.js → Hospital-8d5ea230.js} +2 -2
  34. package/Hospital-8d5ea230.js.map +1 -0
  35. package/Icon-91bb7737.js +2 -0
  36. package/Icon-91bb7737.js.map +1 -0
  37. package/{InfoSignStroke-9c339ee1.js → InfoSignStroke-0c13eebe.js} +2 -2
  38. package/InfoSignStroke-0c13eebe.js.map +1 -0
  39. package/{Input-71c95249.js → Input-95c3e662.js} +2 -2
  40. package/Input-95c3e662.js.map +1 -0
  41. package/{Modal-627adbb0.js → Modal-9b7c8a39.js} +2 -2
  42. package/Modal-9b7c8a39.js.map +1 -0
  43. package/{NoAccess-de06f40b.js → NoAccess-14f5700e.js} +2 -2
  44. package/NoAccess-14f5700e.js.map +1 -0
  45. package/{Panel-ba6d15a6.js → Panel-4cd6abfc.js} +2 -2
  46. package/Panel-4cd6abfc.js.map +1 -0
  47. package/{Pencil-ca56434d.js → Pencil-d3aeffa1.js} +2 -2
  48. package/Pencil-d3aeffa1.js.map +1 -0
  49. package/{PlusSmall-199d6bc2.js → PlusSmall-5b12d79f.js} +2 -2
  50. package/PlusSmall-5b12d79f.js.map +1 -0
  51. package/{Undo-874f34a9.js → Undo-d7e73ddf.js} +2 -2
  52. package/Undo-d7e73ddf.js.map +1 -0
  53. package/{Validation-07007a5a.js → Validation-b51b75ab.js} +2 -2
  54. package/Validation-b51b75ab.js.map +1 -0
  55. package/{Watch-e2c42c1b.js → Watch-b2904174.js} +2 -2
  56. package/Watch-b2904174.js.map +1 -0
  57. package/{X-35ea9677.js → X-b4f72c96.js} +2 -2
  58. package/X-b4f72c96.js.map +1 -0
  59. package/components/AnchorLink/index.js +1 -1
  60. package/components/Avatar/index.js +1 -1
  61. package/components/Button/index.js +1 -1
  62. package/components/ButtonWithModal/index.js +1 -1
  63. package/components/Checkbox/index.js +1 -1
  64. package/components/Close/index.js +1 -1
  65. package/components/Dropdown/index.js +1 -1
  66. package/components/Expander/index.js +1 -1
  67. package/components/ExpanderList/index.js +1 -1
  68. package/components/FormExample/index.js +1 -1
  69. package/components/FormExample/index.js.map +1 -1
  70. package/components/FormGroup/index.js +1 -1
  71. package/components/HelpBubble/index.js +1 -1
  72. package/components/HelpBubbleExample/index.js +1 -1
  73. package/components/HighlightBox/index.js +1 -1
  74. package/components/Icons/AcupunctureBack.js +1 -1
  75. package/components/Icons/AlarmClock.js +1 -1
  76. package/components/Icons/AlertSignFill.js +1 -1
  77. package/components/Icons/AlertSignStroke.js +1 -1
  78. package/components/Icons/Archive.js +1 -1
  79. package/components/Icons/ArrowLeft.js +1 -1
  80. package/components/Icons/ArrowRight.js +1 -1
  81. package/components/Icons/ArrowUpRight.js +1 -1
  82. package/components/Icons/Attachment.js +1 -1
  83. package/components/Icons/Avatar.js +1 -1
  84. package/components/Icons/Bus.js +1 -1
  85. package/components/Icons/Calendar.js +1 -1
  86. package/components/Icons/CalendarChange.js +1 -1
  87. package/components/Icons/CalendarCheck.js +1 -1
  88. package/components/Icons/CalendarSave.js +1 -1
  89. package/components/Icons/Change.js +1 -1
  90. package/components/Icons/Check.js +1 -1
  91. package/components/Icons/CheckFill.js +1 -1
  92. package/components/Icons/ChevronDown.js +1 -1
  93. package/components/Icons/ChevronLeft.js +1 -1
  94. package/components/Icons/ChevronRight.js +1 -1
  95. package/components/Icons/ChevronUp.js +1 -1
  96. package/components/Icons/ChevronsDown.js +1 -1
  97. package/components/Icons/ChevronsUp.js +1 -1
  98. package/components/Icons/Contacts.js +1 -1
  99. package/components/Icons/Copy.js +1 -1
  100. package/components/Icons/Download.js +1 -1
  101. package/components/Icons/EChat.js +1 -1
  102. package/components/Icons/EnterFullScreen.js +1 -1
  103. package/components/Icons/Envelope.js +1 -1
  104. package/components/Icons/Eraser.js +1 -1
  105. package/components/Icons/ErrorSignFill.js +1 -1
  106. package/components/Icons/ErrorSignStroke.js +1 -1
  107. package/components/Icons/ExitFullScreen.js +1 -1
  108. package/components/Icons/Eye.js +1 -1
  109. package/components/Icons/Form.js +1 -1
  110. package/components/Icons/Forward.js +1 -1
  111. package/components/Icons/Gallery.js +1 -1
  112. package/components/Icons/Globe.js +1 -1
  113. package/components/Icons/Group.js +1 -1
  114. package/components/Icons/Heart.js +1 -1
  115. package/components/Icons/HelpSign.js +1 -1
  116. package/components/Icons/History.js +1 -1
  117. package/components/Icons/Home.js +1 -1
  118. package/components/Icons/Hospital.js +1 -1
  119. package/components/Icons/Hourglass.js +1 -1
  120. package/components/Icons/Icon.d.ts +0 -1
  121. package/components/Icons/Icon.d.ts.map +1 -1
  122. package/components/Icons/Icon.js +1 -1
  123. package/components/Icons/InfoSignFill.js +1 -1
  124. package/components/Icons/InfoSignStroke.js +1 -1
  125. package/components/Icons/Journal.js +1 -1
  126. package/components/Icons/List.js +1 -1
  127. package/components/Icons/Location.js +1 -1
  128. package/components/Icons/Lock.js +1 -1
  129. package/components/Icons/Medicine.js +1 -1
  130. package/components/Icons/Menu.js +1 -1
  131. package/components/Icons/Minus.js +1 -1
  132. package/components/Icons/MobilePhone.js +1 -1
  133. package/components/Icons/NoAccess.js +1 -1
  134. package/components/Icons/NoEye.js +1 -1
  135. package/components/Icons/NoFilter.js +1 -1
  136. package/components/Icons/PaperPlane.js +1 -1
  137. package/components/Icons/Pause.js +1 -1
  138. package/components/Icons/Pencil.js +1 -1
  139. package/components/Icons/Play.js +1 -1
  140. package/components/Icons/PlusLarge.js +1 -1
  141. package/components/Icons/PlusSmall.js +1 -1
  142. package/components/Icons/Printer.js +1 -1
  143. package/components/Icons/QrCode.js +1 -1
  144. package/components/Icons/Receptionist.js +1 -1
  145. package/components/Icons/Referral.js +1 -1
  146. package/components/Icons/Refresh.js +1 -1
  147. package/components/Icons/Reply.js +1 -1
  148. package/components/Icons/Save.js +1 -1
  149. package/components/Icons/Search.js +1 -1
  150. package/components/Icons/SectionSign.js +1 -1
  151. package/components/Icons/Settings.js +1 -1
  152. package/components/Icons/Share.js +1 -1
  153. package/components/Icons/SpeechBubble.js +1 -1
  154. package/components/Icons/Stopwatch.js +1 -1
  155. package/components/Icons/SupportingPerson.js +1 -1
  156. package/components/Icons/Syringe.js +1 -1
  157. package/components/Icons/TimePassing.js +1 -1
  158. package/components/Icons/Toolbox.js +1 -1
  159. package/components/Icons/TrashCan.js +1 -1
  160. package/components/Icons/Undo.js +1 -1
  161. package/components/Icons/Upload.js +1 -1
  162. package/components/Icons/Vaccine.js +1 -1
  163. package/components/Icons/VerticalDots.js +1 -1
  164. package/components/Icons/VideoCamera.js +1 -1
  165. package/components/Icons/VideoChat.js +1 -1
  166. package/components/Icons/Wallet.js +1 -1
  167. package/components/Icons/Watch.js +1 -1
  168. package/components/Icons/X.js +1 -1
  169. package/components/Icons/Zoom.js +1 -1
  170. package/components/Icons/componentdata.json +0 -19
  171. package/components/Icons/index.js +1 -1
  172. package/components/Input/index.js +1 -1
  173. package/components/LinkList/index.js +1 -1
  174. package/components/Modal/index.js +1 -1
  175. package/components/NotificationPanel/index.js +1 -1
  176. package/components/NotificationPanel/styles.module.scss +1 -0
  177. package/components/Panel/index.js +1 -1
  178. package/components/PanelList/index.js +1 -1
  179. package/components/Slider/styles.module.scss +4 -1
  180. package/components/StatusDot/index.js +1 -1
  181. package/components/Tag/index.js +1 -1
  182. package/components/Tile/index.js +1 -1
  183. package/components/Validation/index.js +1 -1
  184. package/hooks/useSize.d.ts.map +1 -1
  185. package/index.js +1 -1
  186. package/package.json +1 -1
  187. package/AlertSignFill-649f7a75.js.map +0 -1
  188. package/AlertSignStroke-38862a30.js.map +0 -1
  189. package/AnchorLink-1e690d55.js +0 -2
  190. package/AnchorLink-1e690d55.js.map +0 -1
  191. package/ArrowRight-d02dab87.js.map +0 -1
  192. package/ArrowUpRight-6d59a425.js.map +0 -1
  193. package/Button-66888459.js.map +0 -1
  194. package/Calendar-485713e6.js.map +0 -1
  195. package/Check-244aa62e.js.map +0 -1
  196. package/Checkbox-745fc390.js.map +0 -1
  197. package/ChevronDown-6dc58d3e.js.map +0 -1
  198. package/ChevronRight-d1822801.js.map +0 -1
  199. package/ChevronUp-ed970ae7.js.map +0 -1
  200. package/Close-fc92b2c4.js +0 -2
  201. package/Close-fc92b2c4.js.map +0 -1
  202. package/FormGroup-8968fdf3.js.map +0 -1
  203. package/Group-172e0eb1.js.map +0 -1
  204. package/HelpBubble-8ff1a72a.js.map +0 -1
  205. package/Hospital-73b84ca6.js.map +0 -1
  206. package/Icon-cc73a763.js +0 -2
  207. package/Icon-cc73a763.js.map +0 -1
  208. package/InfoSignStroke-9c339ee1.js.map +0 -1
  209. package/Input-71c95249.js.map +0 -1
  210. package/Modal-627adbb0.js.map +0 -1
  211. package/NoAccess-de06f40b.js.map +0 -1
  212. package/Panel-ba6d15a6.js.map +0 -1
  213. package/Pencil-ca56434d.js.map +0 -1
  214. package/PlusSmall-199d6bc2.js.map +0 -1
  215. package/Undo-874f34a9.js.map +0 -1
  216. package/Validation-07007a5a.js.map +0 -1
  217. package/Watch-e2c42c1b.js.map +0 -1
  218. package/X-35ea9677.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/react-hook-form/dist/index.esm.js"],"sourcesContent":["import { isValidElement, useRef, useState, useCallback, useEffect, useMemo, createContext, useContext, createElement, cloneElement } from 'react';\n\nvar isHTMLElement = (value) => value instanceof HTMLElement;\n\nconst EVENTS = {\r\n BLUR: 'blur',\r\n CHANGE: 'change',\r\n INPUT: 'input',\r\n};\r\nconst VALIDATION_MODE = {\r\n onBlur: 'onBlur',\r\n onChange: 'onChange',\r\n onSubmit: 'onSubmit',\r\n onTouched: 'onTouched',\r\n all: 'all',\r\n};\r\nconst SELECT = 'select';\r\nconst UNDEFINED = 'undefined';\r\nconst INPUT_VALIDATION_RULES = {\r\n max: 'max',\r\n min: 'min',\r\n maxLength: 'maxLength',\r\n minLength: 'minLength',\r\n pattern: 'pattern',\r\n required: 'required',\r\n validate: 'validate',\r\n};\n\nfunction attachEventListeners({ ref }, shouldAttachChangeEvent, handleChange) {\r\n if (isHTMLElement(ref) && handleChange) {\r\n ref.addEventListener(shouldAttachChangeEvent ? EVENTS.CHANGE : EVENTS.INPUT, handleChange);\r\n ref.addEventListener(EVENTS.BLUR, handleChange);\r\n }\r\n}\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\r\nvar isObject = (value) => !isNullOrUndefined(value) &&\r\n !Array.isArray(value) &&\r\n isObjectType(value) &&\r\n !(value instanceof Date);\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar compact = (value) => value.filter(Boolean);\n\nvar stringToPath = (input) => compact(input\r\n .replace(/[\"|']/g, '')\r\n .replace(/\\[/g, '.')\r\n .replace(/\\]/g, '')\r\n .split('.'));\n\nfunction set(object, path, value) {\r\n let index = -1;\r\n const tempPath = isKey(path) ? [path] : stringToPath(path);\r\n const length = tempPath.length;\r\n const lastIndex = length - 1;\r\n while (++index < length) {\r\n const key = tempPath[index];\r\n let newValue = value;\r\n if (index !== lastIndex) {\r\n const objValue = object[key];\r\n newValue =\r\n isObject(objValue) || Array.isArray(objValue)\r\n ? objValue\r\n : !isNaN(+tempPath[index + 1])\r\n ? []\r\n : {};\r\n }\r\n object[key] = newValue;\r\n object = object[key];\r\n }\r\n return object;\r\n}\n\nvar transformToNestObject = (data, value = {}) => {\r\n for (const key in data) {\r\n !isKey(key) ? set(value, key, data[key]) : (value[key] = data[key]);\r\n }\r\n return value;\r\n};\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (obj = {}, path, defaultValue) => {\r\n const result = compact(path.split(/[,[\\].]+?/)).reduce((result, key) => (isNullOrUndefined(result) ? result : result[key]), obj);\r\n return isUndefined(result) || result === obj\r\n ? isUndefined(obj[path])\r\n ? defaultValue\r\n : obj[path]\r\n : result;\r\n};\n\nvar focusOnErrorField = (fields, fieldErrors) => {\r\n for (const key in fields) {\r\n if (get(fieldErrors, key)) {\r\n const field = fields[key];\r\n if (field) {\r\n if (field.ref.focus && isUndefined(field.ref.focus())) {\r\n break;\r\n }\r\n else if (field.options) {\r\n field.options[0].ref.focus();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n};\n\nvar removeAllEventListeners = (ref, validateWithStateUpdate) => {\r\n if (isHTMLElement(ref) && ref.removeEventListener) {\r\n ref.removeEventListener(EVENTS.INPUT, validateWithStateUpdate);\r\n ref.removeEventListener(EVENTS.CHANGE, validateWithStateUpdate);\r\n ref.removeEventListener(EVENTS.BLUR, validateWithStateUpdate);\r\n }\r\n};\n\nconst defaultReturn = {\r\n isValid: false,\r\n value: null,\r\n};\r\nvar getRadioValue = (options) => Array.isArray(options)\r\n ? options.reduce((previous, option) => option && option.ref.checked\r\n ? {\r\n isValid: true,\r\n value: option.ref.value,\r\n }\r\n : previous, defaultReturn)\r\n : defaultReturn;\n\nvar getMultipleSelectValue = (options) => [...options]\r\n .filter(({ selected }) => selected)\r\n .map(({ value }) => value);\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isMultipleSelect = (element) => element.type === `${SELECT}-multiple`;\n\nconst defaultResult = {\r\n value: false,\r\n isValid: false,\r\n};\r\nconst validResult = { value: true, isValid: true };\r\nvar getCheckboxValue = (options) => {\r\n if (Array.isArray(options)) {\r\n if (options.length > 1) {\r\n const values = options\r\n .filter((option) => option && option.ref.checked)\r\n .map(({ ref: { value } }) => value);\r\n return { value: values, isValid: !!values.length };\r\n }\r\n const { checked, value, attributes } = options[0].ref;\r\n return checked\r\n ? attributes && !isUndefined(attributes.value)\r\n ? isUndefined(value) || value === ''\r\n ? validResult\r\n : { value: value, isValid: true }\r\n : validResult\r\n : defaultResult;\r\n }\r\n return defaultResult;\r\n};\n\nfunction getFieldValue(fieldsRef, name, shallowFieldsStateRef, excludeDisabled, shouldKeepRawValue) {\r\n const field = fieldsRef.current[name];\r\n if (field) {\r\n const { ref: { value, disabled }, ref, valueAsNumber, valueAsDate, setValueAs, } = field;\r\n if (disabled && excludeDisabled) {\r\n return;\r\n }\r\n if (isFileInput(ref)) {\r\n return ref.files;\r\n }\r\n if (isRadioInput(ref)) {\r\n return getRadioValue(field.options).value;\r\n }\r\n if (isMultipleSelect(ref)) {\r\n return getMultipleSelectValue(ref.options);\r\n }\r\n if (isCheckBoxInput(ref)) {\r\n return getCheckboxValue(field.options).value;\r\n }\r\n return shouldKeepRawValue\r\n ? value\r\n : valueAsNumber\r\n ? value === ''\r\n ? NaN\r\n : +value\r\n : valueAsDate\r\n ? ref.valueAsDate\r\n : setValueAs\r\n ? setValueAs(value)\r\n : value;\r\n }\r\n if (shallowFieldsStateRef) {\r\n return get(shallowFieldsStateRef.current, name);\r\n }\r\n}\n\nfunction isDetached(element) {\r\n if (!element) {\r\n return true;\r\n }\r\n if (!(element instanceof HTMLElement) ||\r\n element.nodeType === Node.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n return isDetached(element.parentNode);\r\n}\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nfunction baseGet(object, updatePath) {\r\n const length = updatePath.slice(0, -1).length;\r\n let index = 0;\r\n while (index < length) {\r\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\r\n }\r\n return object;\r\n}\r\nfunction unset(object, path) {\r\n const updatePath = isKey(path) ? [path] : stringToPath(path);\r\n const childObject = updatePath.length == 1 ? object : baseGet(object, updatePath);\r\n const key = updatePath[updatePath.length - 1];\r\n let previousObjRef;\r\n if (childObject) {\r\n delete childObject[key];\r\n }\r\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\r\n let index = -1;\r\n let objectRef;\r\n const currentPaths = updatePath.slice(0, -(k + 1));\r\n const currentPathsLength = currentPaths.length - 1;\r\n if (k > 0) {\r\n previousObjRef = object;\r\n }\r\n while (++index < currentPaths.length) {\r\n const item = currentPaths[index];\r\n objectRef = objectRef ? objectRef[item] : object[item];\r\n if (currentPathsLength === index &&\r\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\r\n (Array.isArray(objectRef) &&\r\n !objectRef.filter((data) => (isObject(data) && !isEmptyObject(data)) || isBoolean(data)).length))) {\r\n previousObjRef ? delete previousObjRef[item] : delete object[item];\r\n }\r\n previousObjRef = objectRef;\r\n }\r\n }\r\n return object;\r\n}\n\nconst isSameRef = (fieldValue, ref) => fieldValue && fieldValue.ref === ref;\r\nfunction findRemovedFieldAndRemoveListener(fieldsRef, handleChange, field, shallowFieldsStateRef, shouldUnregister, forceDelete) {\r\n const { ref, ref: { name }, } = field;\r\n const fieldRef = fieldsRef.current[name];\r\n if (!shouldUnregister) {\r\n const value = getFieldValue(fieldsRef, name, shallowFieldsStateRef);\r\n !isUndefined(value) && set(shallowFieldsStateRef.current, name, value);\r\n }\r\n if (!ref.type || !fieldRef) {\r\n delete fieldsRef.current[name];\r\n return;\r\n }\r\n if (isRadioInput(ref) || isCheckBoxInput(ref)) {\r\n if (Array.isArray(fieldRef.options) && fieldRef.options.length) {\r\n compact(fieldRef.options).forEach((option = {}, index) => {\r\n if ((isDetached(option.ref) && isSameRef(option, option.ref)) ||\r\n forceDelete) {\r\n removeAllEventListeners(option.ref, handleChange);\r\n unset(fieldRef.options, `[${index}]`);\r\n }\r\n });\r\n if (fieldRef.options && !compact(fieldRef.options).length) {\r\n delete fieldsRef.current[name];\r\n }\r\n }\r\n else {\r\n delete fieldsRef.current[name];\r\n }\r\n }\r\n else if ((isDetached(ref) && isSameRef(fieldRef, ref)) || forceDelete) {\r\n removeAllEventListeners(ref, handleChange);\r\n delete fieldsRef.current[name];\r\n }\r\n}\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepMerge(target, source) {\r\n if (isPrimitive(target) || isPrimitive(source)) {\r\n return source;\r\n }\r\n for (const key in source) {\r\n const targetValue = target[key];\r\n const sourceValue = source[key];\r\n try {\r\n target[key] =\r\n (isObject(targetValue) && isObject(sourceValue)) ||\r\n (Array.isArray(targetValue) && Array.isArray(sourceValue))\r\n ? deepMerge(targetValue, sourceValue)\r\n : sourceValue;\r\n }\r\n catch (_a) { }\r\n }\r\n return target;\r\n}\n\nfunction deepEqual(object1, object2, isErrorObject) {\r\n if (isPrimitive(object1) ||\r\n isPrimitive(object2) ||\r\n object1 instanceof Date ||\r\n object2 instanceof Date) {\r\n return object1 === object2;\r\n }\r\n if (!isValidElement(object1)) {\r\n const keys1 = Object.keys(object1);\r\n const keys2 = Object.keys(object2);\r\n if (keys1.length !== keys2.length) {\r\n return false;\r\n }\r\n for (const key of keys1) {\r\n const val1 = object1[key];\r\n if (!(isErrorObject && key === 'ref')) {\r\n const val2 = object2[key];\r\n if ((isObject(val1) || Array.isArray(val1)) &&\r\n (isObject(val2) || Array.isArray(val2))\r\n ? !deepEqual(val1, val2, isErrorObject)\r\n : val1 !== val2) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n}\n\nfunction setDirtyFields(values, defaultValues, dirtyFields, parentNode, parentName) {\r\n let index = -1;\r\n while (++index < values.length) {\r\n for (const key in values[index]) {\r\n if (Array.isArray(values[index][key])) {\r\n !dirtyFields[index] && (dirtyFields[index] = {});\r\n dirtyFields[index][key] = [];\r\n setDirtyFields(values[index][key], get(defaultValues[index] || {}, key, []), dirtyFields[index][key], dirtyFields[index], key);\r\n }\r\n else {\r\n deepEqual(get(defaultValues[index] || {}, key), values[index][key])\r\n ? set(dirtyFields[index] || {}, key)\r\n : (dirtyFields[index] = Object.assign(Object.assign({}, dirtyFields[index]), { [key]: true }));\r\n }\r\n }\r\n parentNode &&\r\n !dirtyFields.length &&\r\n delete parentNode[parentName];\r\n }\r\n return dirtyFields;\r\n}\r\nvar setFieldArrayDirtyFields = (values, defaultValues, dirtyFields) => deepMerge(setDirtyFields(values, defaultValues, dirtyFields.slice(0, values.length)), setDirtyFields(defaultValues, values, dirtyFields.slice(0, values.length)));\n\nvar isString = (value) => typeof value === 'string';\n\nvar getFieldsValues = (fieldsRef, shallowFieldsState, shouldUnregister, excludeDisabled, search) => {\r\n const output = {};\r\n for (const name in fieldsRef.current) {\r\n if (isUndefined(search) ||\r\n (isString(search)\r\n ? name.startsWith(search)\r\n : Array.isArray(search) && search.find((data) => name.startsWith(data)))) {\r\n output[name] = getFieldValue(fieldsRef, name, undefined, excludeDisabled);\r\n }\r\n }\r\n return shouldUnregister\r\n ? transformToNestObject(output)\r\n : deepMerge(shallowFieldsState, transformToNestObject(output));\r\n};\n\nvar isErrorStateChanged = ({ errors, name, error, validFields, fieldsWithValidation, }) => {\r\n const isValid = isUndefined(error);\r\n const previousError = get(errors, name);\r\n return ((isValid && !!previousError) ||\r\n (!isValid && !deepEqual(previousError, error, true)) ||\r\n (isValid && get(fieldsWithValidation, name) && !get(validFields, name)));\r\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\r\n ? validationData\r\n : {\r\n value: validationData,\r\n message: '',\r\n };\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar isMessage = (value) => isString(value) || isValidElement(value);\n\nfunction getValidateError(result, ref, type = 'validate') {\r\n if (isMessage(result) || (isBoolean(result) && !result)) {\r\n return {\r\n type,\r\n message: isMessage(result) ? result : '',\r\n ref,\r\n };\r\n }\r\n}\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\r\n ? Object.assign(Object.assign({}, errors[name]), { types: Object.assign(Object.assign({}, (errors[name] && errors[name].types ? errors[name].types : {})), { [type]: message || true }) }) : {};\n\nvar validateField = async (fieldsRef, validateAllFieldCriteria, { ref, ref: { value }, options, required, maxLength, minLength, min, max, pattern, validate, }, shallowFieldsStateRef) => {\r\n const name = ref.name;\r\n const error = {};\r\n const isRadio = isRadioInput(ref);\r\n const isCheckBox = isCheckBoxInput(ref);\r\n const isRadioOrCheckbox = isRadio || isCheckBox;\r\n const isEmpty = value === '';\r\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\r\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\r\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\r\n error[name] = Object.assign({ type: exceedMax ? maxType : minType, message,\r\n ref }, (exceedMax\r\n ? appendErrorsCurry(maxType, message)\r\n : appendErrorsCurry(minType, message)));\r\n };\r\n if (required &&\r\n ((!isRadio && !isCheckBox && (isEmpty || isNullOrUndefined(value))) ||\r\n (isBoolean(value) && !value) ||\r\n (isCheckBox && !getCheckboxValue(options).isValid) ||\r\n (isRadio && !getRadioValue(options).isValid))) {\r\n const { value, message } = isMessage(required)\r\n ? { value: !!required, message: required }\r\n : getValueAndMessage(required);\r\n if (value) {\r\n error[name] = Object.assign({ type: INPUT_VALIDATION_RULES.required, message, ref: isRadioOrCheckbox\r\n ? ((fieldsRef.current[name].options || [])[0] || {}).ref\r\n : ref }, appendErrorsCurry(INPUT_VALIDATION_RULES.required, message));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if ((!isNullOrUndefined(min) || !isNullOrUndefined(max)) && value !== '') {\r\n let exceedMax;\r\n let exceedMin;\r\n const maxOutput = getValueAndMessage(max);\r\n const minOutput = getValueAndMessage(min);\r\n if (!isNaN(value)) {\r\n const valueNumber = ref.valueAsNumber || parseFloat(value);\r\n if (!isNullOrUndefined(maxOutput.value)) {\r\n exceedMax = valueNumber > maxOutput.value;\r\n }\r\n if (!isNullOrUndefined(minOutput.value)) {\r\n exceedMin = valueNumber < minOutput.value;\r\n }\r\n }\r\n else {\r\n const valueDate = ref.valueAsDate || new Date(value);\r\n if (isString(maxOutput.value)) {\r\n exceedMax = valueDate > new Date(maxOutput.value);\r\n }\r\n if (isString(minOutput.value)) {\r\n exceedMin = valueDate < new Date(minOutput.value);\r\n }\r\n }\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (isString(value) && !isEmpty && (maxLength || minLength)) {\r\n const maxLengthOutput = getValueAndMessage(maxLength);\r\n const minLengthOutput = getValueAndMessage(minLength);\r\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\r\n value.length > maxLengthOutput.value;\r\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\r\n value.length < minLengthOutput.value;\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (isString(value) && pattern && !isEmpty) {\r\n const { value: patternValue, message } = getValueAndMessage(pattern);\r\n if (isRegex(patternValue) && !patternValue.test(value)) {\r\n error[name] = Object.assign({ type: INPUT_VALIDATION_RULES.pattern, message,\r\n ref }, appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (validate) {\r\n const fieldValue = getFieldValue(fieldsRef, name, shallowFieldsStateRef, false, true);\r\n const validateRef = isRadioOrCheckbox && options ? options[0].ref : ref;\r\n if (isFunction(validate)) {\r\n const result = await validate(fieldValue);\r\n const validateError = getValidateError(result, validateRef);\r\n if (validateError) {\r\n error[name] = Object.assign(Object.assign({}, validateError), appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n else if (isObject(validate)) {\r\n let validationResult = {};\r\n for (const [key, validateFunction] of Object.entries(validate)) {\r\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\r\n break;\r\n }\r\n const validateResult = await validateFunction(fieldValue);\r\n const validateError = getValidateError(validateResult, validateRef, key);\r\n if (validateError) {\r\n validationResult = Object.assign(Object.assign({}, validateError), appendErrorsCurry(key, validateError.message));\r\n if (validateAllFieldCriteria) {\r\n error[name] = validationResult;\r\n }\r\n }\r\n }\r\n if (!isEmptyObject(validationResult)) {\r\n error[name] = Object.assign({ ref: validateRef }, validationResult);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n }\r\n return error;\r\n};\n\nconst getPath = (rootPath, values, paths = []) => {\r\n for (const property in values) {\r\n const rootName = (rootPath +\r\n (isObject(values)\r\n ? `.${property}`\r\n : `[${property}]`));\r\n isPrimitive(values[property])\r\n ? paths.push(rootName)\r\n : getPath(rootName, values[property], paths);\r\n }\r\n return paths;\r\n};\n\nvar assignWatchFields = (fieldValues, fieldName, watchFields, inputValue, isSingleField) => {\r\n let value = undefined;\r\n watchFields.add(fieldName);\r\n if (!isEmptyObject(fieldValues)) {\r\n value = get(fieldValues, fieldName);\r\n if (isObject(value) || Array.isArray(value)) {\r\n getPath(fieldName, value).forEach((name) => watchFields.add(name));\r\n }\r\n }\r\n return isUndefined(value)\r\n ? isSingleField\r\n ? inputValue\r\n : get(inputValue, fieldName)\r\n : value;\r\n};\n\nvar skipValidation = ({ isOnBlur, isOnChange, isOnTouch, isTouched, isReValidateOnBlur, isReValidateOnChange, isBlurEvent, isSubmitted, isOnAll, }) => {\r\n if (isOnAll) {\r\n return false;\r\n }\r\n else if (!isSubmitted && isOnTouch) {\r\n return !(isTouched || isBlurEvent);\r\n }\r\n else if (isSubmitted ? isReValidateOnBlur : isOnBlur) {\r\n return !isBlurEvent;\r\n }\r\n else if (isSubmitted ? isReValidateOnChange : isOnChange) {\r\n return isBlurEvent;\r\n }\r\n return true;\r\n};\n\nvar getFieldArrayParentName = (name) => name.substring(0, name.indexOf('['));\n\nconst isMatchFieldArrayName = (name, searchName) => RegExp(`^${searchName}([|.)\\\\d+`.replace(/\\[/g, '\\\\[').replace(/\\]/g, '\\\\]')).test(name);\r\nvar isNameInFieldArray = (names, name) => [...names].some((current) => isMatchFieldArrayName(name, current));\n\nvar isSelectInput = (element) => element.type === `${SELECT}-one`;\n\nfunction onDomRemove(fieldsRef, removeFieldEventListenerAndRef) {\r\n const observer = new MutationObserver(() => {\r\n for (const field of Object.values(fieldsRef.current)) {\r\n if (field && field.options) {\r\n for (const option of field.options) {\r\n if (option && option.ref && isDetached(option.ref)) {\r\n removeFieldEventListenerAndRef(field);\r\n }\r\n }\r\n }\r\n else if (field && isDetached(field.ref)) {\r\n removeFieldEventListenerAndRef(field);\r\n }\r\n }\r\n });\r\n observer.observe(window.document, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\n\nvar isWeb = typeof window !== UNDEFINED && typeof document !== UNDEFINED;\n\nfunction cloneObject(data) {\r\n var _a;\r\n let copy;\r\n if (isPrimitive(data) ||\r\n (isWeb && (data instanceof File || isHTMLElement(data)))) {\r\n return data;\r\n }\r\n if (!['Set', 'Map', 'Object', 'Date', 'Array'].includes((_a = data.constructor) === null || _a === void 0 ? void 0 : _a.name)) {\r\n return data;\r\n }\r\n if (data instanceof Date) {\r\n copy = new Date(data.getTime());\r\n return copy;\r\n }\r\n if (data instanceof Set) {\r\n copy = new Set();\r\n for (const item of data) {\r\n copy.add(item);\r\n }\r\n return copy;\r\n }\r\n if (data instanceof Map) {\r\n copy = new Map();\r\n for (const key of data.keys()) {\r\n copy.set(key, cloneObject(data.get(key)));\r\n }\r\n return copy;\r\n }\r\n copy = Array.isArray(data) ? [] : {};\r\n for (const key in data) {\r\n copy[key] = cloneObject(data[key]);\r\n }\r\n return copy;\r\n}\n\nvar modeChecker = (mode) => ({\r\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\r\n isOnBlur: mode === VALIDATION_MODE.onBlur,\r\n isOnChange: mode === VALIDATION_MODE.onChange,\r\n isOnAll: mode === VALIDATION_MODE.all,\r\n isOnTouch: mode === VALIDATION_MODE.onTouched,\r\n});\n\nvar isRadioOrCheckboxFunction = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nconst isWindowUndefined = typeof window === UNDEFINED;\r\nconst isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== UNDEFINED;\r\nfunction useForm({ mode = VALIDATION_MODE.onSubmit, reValidateMode = VALIDATION_MODE.onChange, resolver, context, defaultValues = {}, shouldFocusError = true, shouldUnregister = true, criteriaMode, } = {}) {\r\n const fieldsRef = useRef({});\r\n const fieldArrayDefaultValuesRef = useRef({});\r\n const fieldArrayValuesRef = useRef({});\r\n const watchFieldsRef = useRef(new Set());\r\n const useWatchFieldsRef = useRef({});\r\n const useWatchRenderFunctionsRef = useRef({});\r\n const fieldsWithValidationRef = useRef({});\r\n const validFieldsRef = useRef({});\r\n const defaultValuesRef = useRef(defaultValues);\r\n const isUnMount = useRef(false);\r\n const isWatchAllRef = useRef(false);\r\n const handleChangeRef = useRef();\r\n const shallowFieldsStateRef = useRef({});\r\n const resetFieldArrayFunctionRef = useRef({});\r\n const contextRef = useRef(context);\r\n const resolverRef = useRef(resolver);\r\n const fieldArrayNamesRef = useRef(new Set());\r\n const modeRef = useRef(modeChecker(mode));\r\n const { isOnSubmit, isOnTouch } = modeRef.current;\r\n const isValidateAllFieldCriteria = criteriaMode === VALIDATION_MODE.all;\r\n const [formState, setFormState] = useState({\r\n isDirty: false,\r\n isValidating: false,\r\n dirtyFields: {},\r\n isSubmitted: false,\r\n submitCount: 0,\r\n touched: {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: !isOnSubmit,\r\n errors: {},\r\n });\r\n const readFormStateRef = useRef({\r\n isDirty: !isProxyEnabled,\r\n dirtyFields: !isProxyEnabled,\r\n touched: !isProxyEnabled || isOnTouch,\r\n isValidating: !isProxyEnabled,\r\n isSubmitting: !isProxyEnabled,\r\n isValid: !isProxyEnabled,\r\n });\r\n const formStateRef = useRef(formState);\r\n const observerRef = useRef();\r\n const { isOnBlur: isReValidateOnBlur, isOnChange: isReValidateOnChange, } = useRef(modeChecker(reValidateMode)).current;\r\n contextRef.current = context;\r\n resolverRef.current = resolver;\r\n formStateRef.current = formState;\r\n shallowFieldsStateRef.current = shouldUnregister\r\n ? {}\r\n : isEmptyObject(shallowFieldsStateRef.current)\r\n ? cloneObject(defaultValues)\r\n : shallowFieldsStateRef.current;\r\n const updateFormState = useCallback((state = {}) => {\r\n if (!isUnMount.current) {\r\n formStateRef.current = Object.assign(Object.assign({}, formStateRef.current), state);\r\n setFormState(formStateRef.current);\r\n }\r\n }, []);\r\n const updateIsValidating = () => readFormStateRef.current.isValidating &&\r\n updateFormState({\r\n isValidating: true,\r\n });\r\n const shouldRenderBaseOnError = useCallback((name, error, shouldRender = false, state = {}, isValid) => {\r\n let shouldReRender = shouldRender ||\r\n isErrorStateChanged({\r\n errors: formStateRef.current.errors,\r\n error,\r\n name,\r\n validFields: validFieldsRef.current,\r\n fieldsWithValidation: fieldsWithValidationRef.current,\r\n });\r\n const previousError = get(formStateRef.current.errors, name);\r\n if (error) {\r\n unset(validFieldsRef.current, name);\r\n shouldReRender =\r\n shouldReRender ||\r\n !previousError ||\r\n !deepEqual(previousError, error, true);\r\n set(formStateRef.current.errors, name, error);\r\n }\r\n else {\r\n if (get(fieldsWithValidationRef.current, name) || resolverRef.current) {\r\n set(validFieldsRef.current, name, true);\r\n shouldReRender = shouldReRender || previousError;\r\n }\r\n unset(formStateRef.current.errors, name);\r\n }\r\n if ((shouldReRender && !isNullOrUndefined(shouldRender)) ||\r\n !isEmptyObject(state) ||\r\n readFormStateRef.current.isValidating) {\r\n updateFormState(Object.assign(Object.assign(Object.assign({}, state), (resolverRef.current ? { isValid: !!isValid } : {})), { isValidating: false }));\r\n }\r\n }, []);\r\n const setFieldValue = useCallback((name, rawValue) => {\r\n const { ref, options } = fieldsRef.current[name];\r\n const value = isWeb && isHTMLElement(ref) && isNullOrUndefined(rawValue)\r\n ? ''\r\n : rawValue;\r\n if (isRadioInput(ref)) {\r\n (options || []).forEach(({ ref: radioRef }) => (radioRef.checked = radioRef.value === value));\r\n }\r\n else if (isFileInput(ref) && !isString(value)) {\r\n ref.files = value;\r\n }\r\n else if (isMultipleSelect(ref)) {\r\n [...ref.options].forEach((selectRef) => (selectRef.selected = value.includes(selectRef.value)));\r\n }\r\n else if (isCheckBoxInput(ref) && options) {\r\n options.length > 1\r\n ? options.forEach(({ ref: checkboxRef }) => (checkboxRef.checked = Array.isArray(value)\r\n ? !!value.find((data) => data === checkboxRef.value)\r\n : value === checkboxRef.value))\r\n : (options[0].ref.checked = !!value);\r\n }\r\n else {\r\n ref.value = value;\r\n }\r\n }, []);\r\n const isFormDirty = useCallback((name, data) => {\r\n if (readFormStateRef.current.isDirty) {\r\n const formValues = getValues();\r\n name && data && set(formValues, name, data);\r\n return !deepEqual(formValues, defaultValuesRef.current);\r\n }\r\n return false;\r\n }, []);\r\n const updateAndGetDirtyState = useCallback((name, shouldRender = true) => {\r\n if (readFormStateRef.current.isDirty ||\r\n readFormStateRef.current.dirtyFields) {\r\n const isFieldDirty = !deepEqual(get(defaultValuesRef.current, name), getFieldValue(fieldsRef, name, shallowFieldsStateRef));\r\n const isDirtyFieldExist = get(formStateRef.current.dirtyFields, name);\r\n const previousIsDirty = formStateRef.current.isDirty;\r\n isFieldDirty\r\n ? set(formStateRef.current.dirtyFields, name, true)\r\n : unset(formStateRef.current.dirtyFields, name);\r\n const state = {\r\n isDirty: isFormDirty(),\r\n dirtyFields: formStateRef.current.dirtyFields,\r\n };\r\n const isChanged = (readFormStateRef.current.isDirty &&\r\n previousIsDirty !== state.isDirty) ||\r\n (readFormStateRef.current.dirtyFields &&\r\n isDirtyFieldExist !== get(formStateRef.current.dirtyFields, name));\r\n isChanged && shouldRender && updateFormState(state);\r\n return isChanged ? state : {};\r\n }\r\n return {};\r\n }, []);\r\n const executeValidation = useCallback(async (name, skipReRender) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!fieldsRef.current[name]) {\r\n console.warn('📋 Field is missing with `name` attribute: ', name);\r\n return false;\r\n }\r\n }\r\n const error = (await validateField(fieldsRef, isValidateAllFieldCriteria, fieldsRef.current[name], shallowFieldsStateRef))[name];\r\n shouldRenderBaseOnError(name, error, skipReRender);\r\n return isUndefined(error);\r\n }, [shouldRenderBaseOnError, isValidateAllFieldCriteria]);\r\n const executeSchemaOrResolverValidation = useCallback(async (names) => {\r\n const { errors } = await resolverRef.current(getValues(), contextRef.current, isValidateAllFieldCriteria);\r\n const previousFormIsValid = formStateRef.current.isValid;\r\n if (Array.isArray(names)) {\r\n const isInputsValid = names\r\n .map((name) => {\r\n const error = get(errors, name);\r\n error\r\n ? set(formStateRef.current.errors, name, error)\r\n : unset(formStateRef.current.errors, name);\r\n return !error;\r\n })\r\n .every(Boolean);\r\n updateFormState({\r\n isValid: isEmptyObject(errors),\r\n isValidating: false,\r\n });\r\n return isInputsValid;\r\n }\r\n else {\r\n const error = get(errors, names);\r\n shouldRenderBaseOnError(names, error, previousFormIsValid !== isEmptyObject(errors), {}, isEmptyObject(errors));\r\n return !error;\r\n }\r\n }, [shouldRenderBaseOnError, isValidateAllFieldCriteria]);\r\n const trigger = useCallback(async (name) => {\r\n const fields = name || Object.keys(fieldsRef.current);\r\n updateIsValidating();\r\n if (resolverRef.current) {\r\n return executeSchemaOrResolverValidation(fields);\r\n }\r\n if (Array.isArray(fields)) {\r\n !name && (formStateRef.current.errors = {});\r\n const result = await Promise.all(fields.map(async (data) => await executeValidation(data, null)));\r\n updateFormState({\r\n isValidating: false,\r\n });\r\n return result.every(Boolean);\r\n }\r\n return await executeValidation(fields);\r\n }, [executeSchemaOrResolverValidation, executeValidation]);\r\n const setInternalValues = useCallback((name, value, { shouldDirty, shouldValidate }) => {\r\n const data = {};\r\n set(data, name, value);\r\n for (const fieldName of getPath(name, value)) {\r\n if (fieldsRef.current[fieldName]) {\r\n setFieldValue(fieldName, get(data, fieldName));\r\n shouldDirty && updateAndGetDirtyState(fieldName);\r\n shouldValidate && trigger(fieldName);\r\n }\r\n }\r\n }, [trigger, setFieldValue, updateAndGetDirtyState]);\r\n const setInternalValue = useCallback((name, value, config) => {\r\n !shouldUnregister &&\r\n !isPrimitive(value) &&\r\n set(shallowFieldsStateRef.current, name, Array.isArray(value) ? [...value] : Object.assign({}, value));\r\n if (fieldsRef.current[name]) {\r\n setFieldValue(name, value);\r\n config.shouldDirty && updateAndGetDirtyState(name);\r\n config.shouldValidate && trigger(name);\r\n }\r\n else if (!isPrimitive(value)) {\r\n setInternalValues(name, value, config);\r\n if (fieldArrayNamesRef.current.has(name)) {\r\n const parentName = getFieldArrayParentName(name) || name;\r\n set(fieldArrayDefaultValuesRef.current, name, value);\r\n resetFieldArrayFunctionRef.current[parentName]({\r\n [parentName]: get(fieldArrayDefaultValuesRef.current, parentName),\r\n });\r\n if ((readFormStateRef.current.isDirty ||\r\n readFormStateRef.current.dirtyFields) &&\r\n config.shouldDirty) {\r\n set(formStateRef.current.dirtyFields, name, setFieldArrayDirtyFields(value, get(defaultValuesRef.current, name, []), get(formStateRef.current.dirtyFields, name, [])));\r\n updateFormState({\r\n isDirty: !deepEqual(Object.assign(Object.assign({}, getValues()), { [name]: value }), defaultValuesRef.current),\r\n });\r\n }\r\n }\r\n }\r\n !shouldUnregister && set(shallowFieldsStateRef.current, name, value);\r\n }, [updateAndGetDirtyState, setFieldValue, setInternalValues]);\r\n const isFieldWatched = (name) => isWatchAllRef.current ||\r\n watchFieldsRef.current.has(name) ||\r\n watchFieldsRef.current.has((name.match(/\\w+/) || [])[0]);\r\n const renderWatchedInputs = (name) => {\r\n let found = true;\r\n if (!isEmptyObject(useWatchFieldsRef.current)) {\r\n for (const key in useWatchFieldsRef.current) {\r\n if (!name ||\r\n !useWatchFieldsRef.current[key].size ||\r\n useWatchFieldsRef.current[key].has(name) ||\r\n useWatchFieldsRef.current[key].has(getFieldArrayParentName(name))) {\r\n useWatchRenderFunctionsRef.current[key]();\r\n found = false;\r\n }\r\n }\r\n }\r\n return found;\r\n };\r\n function setValue(name, value, config) {\r\n setInternalValue(name, value, config || {});\r\n isFieldWatched(name) && updateFormState();\r\n renderWatchedInputs(name);\r\n }\r\n handleChangeRef.current = handleChangeRef.current\r\n ? handleChangeRef.current\r\n : async ({ type, target }) => {\r\n let name = target.name;\r\n const field = fieldsRef.current[name];\r\n let error;\r\n let isValid;\r\n if (field) {\r\n const isBlurEvent = type === EVENTS.BLUR;\r\n const shouldSkipValidation = skipValidation(Object.assign({ isBlurEvent,\r\n isReValidateOnChange,\r\n isReValidateOnBlur, isTouched: !!get(formStateRef.current.touched, name), isSubmitted: formStateRef.current.isSubmitted }, modeRef.current));\r\n let state = updateAndGetDirtyState(name, false);\r\n let shouldRender = !isEmptyObject(state) ||\r\n (!isBlurEvent && isFieldWatched(name));\r\n if (isBlurEvent &&\r\n !get(formStateRef.current.touched, name) &&\r\n readFormStateRef.current.touched) {\r\n set(formStateRef.current.touched, name, true);\r\n state = Object.assign(Object.assign({}, state), { touched: formStateRef.current.touched });\r\n }\r\n if (!shouldUnregister && isCheckBoxInput(target)) {\r\n set(shallowFieldsStateRef.current, name, getFieldValue(fieldsRef, name));\r\n }\r\n if (shouldSkipValidation) {\r\n !isBlurEvent && renderWatchedInputs(name);\r\n return ((!isEmptyObject(state) ||\r\n (shouldRender && isEmptyObject(state))) &&\r\n updateFormState(state));\r\n }\r\n updateIsValidating();\r\n if (resolverRef.current) {\r\n const { errors } = await resolverRef.current(getValues(), contextRef.current, isValidateAllFieldCriteria);\r\n const previousFormIsValid = formStateRef.current.isValid;\r\n error = get(errors, name);\r\n if (isCheckBoxInput(target) &&\r\n !error &&\r\n resolverRef.current) {\r\n const parentNodeName = getFieldArrayParentName(name);\r\n const currentError = get(errors, parentNodeName, {});\r\n currentError.type &&\r\n currentError.message &&\r\n (error = currentError);\r\n if (parentNodeName &&\r\n (currentError ||\r\n get(formStateRef.current.errors, parentNodeName))) {\r\n name = parentNodeName;\r\n }\r\n }\r\n isValid = isEmptyObject(errors);\r\n previousFormIsValid !== isValid && (shouldRender = true);\r\n }\r\n else {\r\n error = (await validateField(fieldsRef, isValidateAllFieldCriteria, field, shallowFieldsStateRef))[name];\r\n }\r\n !isBlurEvent && renderWatchedInputs(name);\r\n shouldRenderBaseOnError(name, error, shouldRender, state, isValid);\r\n }\r\n };\r\n function setFieldArrayDefaultValues(data) {\r\n if (!shouldUnregister) {\r\n let copy = cloneObject(data);\r\n for (const value of fieldArrayNamesRef.current) {\r\n if (isKey(value) && !copy[value]) {\r\n copy = Object.assign(Object.assign({}, copy), { [value]: [] });\r\n }\r\n }\r\n return copy;\r\n }\r\n return data;\r\n }\r\n function getValues(payload) {\r\n if (isString(payload)) {\r\n return getFieldValue(fieldsRef, payload, shallowFieldsStateRef);\r\n }\r\n if (Array.isArray(payload)) {\r\n const data = {};\r\n for (const name of payload) {\r\n set(data, name, getFieldValue(fieldsRef, name, shallowFieldsStateRef));\r\n }\r\n return data;\r\n }\r\n return setFieldArrayDefaultValues(getFieldsValues(fieldsRef, cloneObject(shallowFieldsStateRef.current), shouldUnregister));\r\n }\r\n const validateResolver = useCallback(async (values = {}) => {\r\n const newDefaultValues = isEmptyObject(fieldsRef.current)\r\n ? defaultValuesRef.current\r\n : {};\r\n const { errors } = (await resolverRef.current(Object.assign(Object.assign(Object.assign({}, newDefaultValues), getValues()), values), contextRef.current, isValidateAllFieldCriteria)) || {};\r\n const isValid = isEmptyObject(errors);\r\n formStateRef.current.isValid !== isValid &&\r\n updateFormState({\r\n isValid,\r\n });\r\n }, [isValidateAllFieldCriteria]);\r\n const removeFieldEventListener = useCallback((field, forceDelete) => {\r\n findRemovedFieldAndRemoveListener(fieldsRef, handleChangeRef.current, field, shallowFieldsStateRef, shouldUnregister, forceDelete);\r\n if (shouldUnregister) {\r\n unset(validFieldsRef.current, field.ref.name);\r\n unset(fieldsWithValidationRef.current, field.ref.name);\r\n }\r\n }, [shouldUnregister]);\r\n const updateWatchedValue = useCallback((name) => {\r\n if (isWatchAllRef.current) {\r\n updateFormState();\r\n }\r\n else {\r\n for (const watchField of watchFieldsRef.current) {\r\n if (watchField.startsWith(name)) {\r\n updateFormState();\r\n break;\r\n }\r\n }\r\n renderWatchedInputs(name);\r\n }\r\n }, []);\r\n const removeFieldEventListenerAndRef = useCallback((field, forceDelete) => {\r\n if (field) {\r\n removeFieldEventListener(field, forceDelete);\r\n if (shouldUnregister && !compact(field.options || []).length) {\r\n unset(formStateRef.current.errors, field.ref.name);\r\n set(formStateRef.current.dirtyFields, field.ref.name, true);\r\n updateFormState({\r\n isDirty: isFormDirty(),\r\n });\r\n readFormStateRef.current.isValid &&\r\n resolverRef.current &&\r\n validateResolver();\r\n updateWatchedValue(field.ref.name);\r\n }\r\n }\r\n }, [validateResolver, removeFieldEventListener]);\r\n function clearErrors(name) {\r\n name &&\r\n (Array.isArray(name) ? name : [name]).forEach((inputName) => fieldsRef.current[inputName] && isKey(inputName)\r\n ? delete formStateRef.current.errors[inputName]\r\n : unset(formStateRef.current.errors, inputName));\r\n updateFormState({\r\n errors: name ? formStateRef.current.errors : {},\r\n });\r\n }\r\n function setError(name, error) {\r\n const ref = (fieldsRef.current[name] || {}).ref;\r\n set(formStateRef.current.errors, name, Object.assign(Object.assign({}, error), { ref }));\r\n updateFormState({\r\n isValid: false,\r\n });\r\n error.shouldFocus && ref && ref.focus && ref.focus();\r\n }\r\n const watchInternal = useCallback((fieldNames, defaultValue, watchId) => {\r\n const watchFields = watchId\r\n ? useWatchFieldsRef.current[watchId]\r\n : watchFieldsRef.current;\r\n let fieldValues = getFieldsValues(fieldsRef, cloneObject(shallowFieldsStateRef.current), shouldUnregister, false, fieldNames);\r\n if (isString(fieldNames)) {\r\n const parentNodeName = getFieldArrayParentName(fieldNames) || fieldNames;\r\n if (fieldArrayNamesRef.current.has(parentNodeName)) {\r\n fieldValues = Object.assign(Object.assign({}, fieldArrayValuesRef.current), fieldValues);\r\n }\r\n return assignWatchFields(fieldValues, fieldNames, watchFields, isUndefined(get(defaultValuesRef.current, fieldNames))\r\n ? defaultValue\r\n : get(defaultValuesRef.current, fieldNames), true);\r\n }\r\n const combinedDefaultValues = isUndefined(defaultValue)\r\n ? defaultValuesRef.current\r\n : defaultValue;\r\n if (Array.isArray(fieldNames)) {\r\n return fieldNames.reduce((previous, name) => (Object.assign(Object.assign({}, previous), { [name]: assignWatchFields(fieldValues, name, watchFields, combinedDefaultValues) })), {});\r\n }\r\n isWatchAllRef.current = isUndefined(watchId);\r\n return transformToNestObject((!isEmptyObject(fieldValues) && fieldValues) ||\r\n combinedDefaultValues);\r\n }, []);\r\n function watch(fieldNames, defaultValue) {\r\n return watchInternal(fieldNames, defaultValue);\r\n }\r\n function unregister(name) {\r\n for (const fieldName of Array.isArray(name) ? name : [name]) {\r\n removeFieldEventListenerAndRef(fieldsRef.current[fieldName], true);\r\n }\r\n }\r\n function registerFieldRef(ref, options = {}) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!ref.name) {\r\n return console.warn('📋 Field is missing `name` attribute', ref, `https://react-hook-form.com/api#useForm`);\r\n }\r\n if (fieldArrayNamesRef.current.has(ref.name.split(/\\[\\d+\\]$/)[0]) &&\r\n !RegExp(`^${ref.name.split(/\\[\\d+\\]$/)[0]}[\\\\d+].\\\\w+`\r\n .replace(/\\[/g, '\\\\[')\r\n .replace(/\\]/g, '\\\\]')).test(ref.name)) {\r\n return console.warn('📋 `name` prop should be in object shape: name=\"test[index].name\"', ref, 'https://react-hook-form.com/api#useFieldArray');\r\n }\r\n }\r\n const { name, type, value } = ref;\r\n const fieldRefAndValidationOptions = Object.assign({ ref }, options);\r\n const fields = fieldsRef.current;\r\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\r\n const isFieldArray = isNameInFieldArray(fieldArrayNamesRef.current, name);\r\n const compareRef = (currentRef) => isWeb && (!isHTMLElement(ref) || currentRef === ref);\r\n let field = fields[name];\r\n let isEmptyDefaultValue = true;\r\n let defaultValue;\r\n if (field &&\r\n (isRadioOrCheckbox\r\n ? Array.isArray(field.options) &&\r\n compact(field.options).find((option) => {\r\n return value === option.ref.value && compareRef(option.ref);\r\n })\r\n : compareRef(field.ref))) {\r\n fields[name] = Object.assign(Object.assign({}, field), options);\r\n return;\r\n }\r\n if (type) {\r\n field = isRadioOrCheckbox\r\n ? Object.assign({ options: [\r\n ...compact((field && field.options) || []),\r\n {\r\n ref,\r\n },\r\n ], ref: { type, name } }, options) : Object.assign({}, fieldRefAndValidationOptions);\r\n }\r\n else {\r\n field = fieldRefAndValidationOptions;\r\n }\r\n fields[name] = field;\r\n const isEmptyUnmountFields = isUndefined(get(shallowFieldsStateRef.current, name));\r\n if (!isEmptyObject(defaultValuesRef.current) || !isEmptyUnmountFields) {\r\n defaultValue = get(isEmptyUnmountFields\r\n ? defaultValuesRef.current\r\n : shallowFieldsStateRef.current, name);\r\n isEmptyDefaultValue = isUndefined(defaultValue);\r\n if (!isEmptyDefaultValue && !isFieldArray) {\r\n setFieldValue(name, defaultValue);\r\n }\r\n }\r\n if (!isEmptyObject(options)) {\r\n set(fieldsWithValidationRef.current, name, true);\r\n if (!isOnSubmit && readFormStateRef.current.isValid) {\r\n validateField(fieldsRef, isValidateAllFieldCriteria, field, shallowFieldsStateRef).then((error) => {\r\n const previousFormIsValid = formStateRef.current.isValid;\r\n isEmptyObject(error)\r\n ? set(validFieldsRef.current, name, true)\r\n : unset(validFieldsRef.current, name);\r\n previousFormIsValid !== isEmptyObject(error) && updateFormState();\r\n });\r\n }\r\n }\r\n if (shouldUnregister && !(isFieldArray && isEmptyDefaultValue)) {\r\n !isFieldArray && unset(formStateRef.current.dirtyFields, name);\r\n }\r\n if (type) {\r\n attachEventListeners(isRadioOrCheckbox && field.options\r\n ? field.options[field.options.length - 1]\r\n : field, isRadioOrCheckbox || isSelectInput(ref), handleChangeRef.current);\r\n }\r\n }\r\n function register(refOrRegisterOptions, options) {\r\n if (!isWindowUndefined) {\r\n if (isString(refOrRegisterOptions)) {\r\n registerFieldRef({ name: refOrRegisterOptions }, options);\r\n }\r\n else if (isObject(refOrRegisterOptions) &&\r\n 'name' in refOrRegisterOptions) {\r\n registerFieldRef(refOrRegisterOptions, options);\r\n }\r\n else {\r\n return (ref) => ref && registerFieldRef(ref, refOrRegisterOptions);\r\n }\r\n }\r\n }\r\n const handleSubmit = useCallback((onValid, onInvalid) => async (e) => {\r\n if (e && e.preventDefault) {\r\n e.preventDefault();\r\n e.persist();\r\n }\r\n let fieldErrors = {};\r\n let fieldValues = setFieldArrayDefaultValues(getFieldsValues(fieldsRef, cloneObject(shallowFieldsStateRef.current), shouldUnregister, true));\r\n readFormStateRef.current.isSubmitting &&\r\n updateFormState({\r\n isSubmitting: true,\r\n });\r\n try {\r\n if (resolverRef.current) {\r\n const { errors, values } = await resolverRef.current(fieldValues, contextRef.current, isValidateAllFieldCriteria);\r\n formStateRef.current.errors = fieldErrors = errors;\r\n fieldValues = values;\r\n }\r\n else {\r\n for (const field of Object.values(fieldsRef.current)) {\r\n if (field) {\r\n const { name } = field.ref;\r\n const fieldError = await validateField(fieldsRef, isValidateAllFieldCriteria, field, shallowFieldsStateRef);\r\n if (fieldError[name]) {\r\n set(fieldErrors, name, fieldError[name]);\r\n unset(validFieldsRef.current, name);\r\n }\r\n else if (get(fieldsWithValidationRef.current, name)) {\r\n unset(formStateRef.current.errors, name);\r\n set(validFieldsRef.current, name, true);\r\n }\r\n }\r\n }\r\n }\r\n if (isEmptyObject(fieldErrors) &&\r\n Object.keys(formStateRef.current.errors).every((name) => name in fieldsRef.current)) {\r\n updateFormState({\r\n errors: {},\r\n isSubmitting: true,\r\n });\r\n await onValid(fieldValues, e);\r\n }\r\n else {\r\n formStateRef.current.errors = Object.assign(Object.assign({}, formStateRef.current.errors), fieldErrors);\r\n onInvalid && (await onInvalid(formStateRef.current.errors, e));\r\n shouldFocusError &&\r\n focusOnErrorField(fieldsRef.current, formStateRef.current.errors);\r\n }\r\n }\r\n finally {\r\n formStateRef.current.isSubmitting = false;\r\n updateFormState({\r\n isSubmitted: true,\r\n isSubmitting: false,\r\n isSubmitSuccessful: isEmptyObject(formStateRef.current.errors),\r\n submitCount: formStateRef.current.submitCount + 1,\r\n });\r\n }\r\n }, [shouldFocusError, isValidateAllFieldCriteria]);\r\n const resetRefs = ({ errors, isDirty, isSubmitted, touched, isValid, submitCount, dirtyFields, }) => {\r\n if (!isValid) {\r\n validFieldsRef.current = {};\r\n fieldsWithValidationRef.current = {};\r\n }\r\n fieldArrayDefaultValuesRef.current = {};\r\n watchFieldsRef.current = new Set();\r\n isWatchAllRef.current = false;\r\n updateFormState({\r\n submitCount: submitCount ? formStateRef.current.submitCount : 0,\r\n isDirty: isDirty ? formStateRef.current.isDirty : false,\r\n isSubmitted: isSubmitted ? formStateRef.current.isSubmitted : false,\r\n isValid: isValid ? formStateRef.current.isValid : false,\r\n dirtyFields: dirtyFields ? formStateRef.current.dirtyFields : {},\r\n touched: touched ? formStateRef.current.touched : {},\r\n errors: errors ? formStateRef.current.errors : {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n });\r\n };\r\n const reset = (values, omitResetState = {}) => {\r\n if (isWeb) {\r\n for (const field of Object.values(fieldsRef.current)) {\r\n if (field) {\r\n const { ref, options } = field;\r\n const inputRef = isRadioOrCheckboxFunction(ref) && Array.isArray(options)\r\n ? options[0].ref\r\n : ref;\r\n if (isHTMLElement(inputRef)) {\r\n try {\r\n inputRef.closest('form').reset();\r\n break;\r\n }\r\n catch (_a) { }\r\n }\r\n }\r\n }\r\n }\r\n fieldsRef.current = {};\r\n defaultValuesRef.current = Object.assign({}, (values || defaultValuesRef.current));\r\n values && renderWatchedInputs('');\r\n Object.values(resetFieldArrayFunctionRef.current).forEach((resetFieldArray) => isFunction(resetFieldArray) && resetFieldArray());\r\n shallowFieldsStateRef.current = shouldUnregister\r\n ? {}\r\n : cloneObject(values || defaultValuesRef.current);\r\n resetRefs(omitResetState);\r\n };\r\n useEffect(() => {\r\n resolver && readFormStateRef.current.isValid && validateResolver();\r\n observerRef.current =\r\n observerRef.current || !isWeb\r\n ? observerRef.current\r\n : onDomRemove(fieldsRef, removeFieldEventListenerAndRef);\r\n }, [removeFieldEventListenerAndRef, defaultValuesRef.current]);\r\n useEffect(() => () => {\r\n observerRef.current && observerRef.current.disconnect();\r\n isUnMount.current = true;\r\n if (process.env.NODE_ENV !== 'production') {\r\n return;\r\n }\r\n Object.values(fieldsRef.current).forEach((field) => removeFieldEventListenerAndRef(field, true));\r\n }, []);\r\n if (!resolver && readFormStateRef.current.isValid) {\r\n formState.isValid =\r\n deepEqual(validFieldsRef.current, fieldsWithValidationRef.current) &&\r\n isEmptyObject(formStateRef.current.errors);\r\n }\r\n const commonProps = {\r\n trigger,\r\n setValue: useCallback(setValue, [setInternalValue, trigger]),\r\n getValues: useCallback(getValues, []),\r\n register: useCallback(register, [defaultValuesRef.current]),\r\n unregister: useCallback(unregister, []),\r\n formState: isProxyEnabled\r\n ? new Proxy(formState, {\r\n get: (obj, prop) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (prop === 'isValid' && isOnSubmit) {\r\n console.warn('📋 `formState.isValid` is applicable with `onTouched`, `onChange` or `onBlur` mode. https://react-hook-form.com/api#formState');\r\n }\r\n }\r\n if (prop in obj) {\r\n readFormStateRef.current[prop] = true;\r\n return obj[prop];\r\n }\r\n return undefined;\r\n },\r\n })\r\n : formState,\r\n };\r\n const control = useMemo(() => (Object.assign({ isFormDirty,\r\n updateWatchedValue,\r\n shouldUnregister,\r\n updateFormState,\r\n removeFieldEventListener,\r\n watchInternal, mode: modeRef.current, reValidateMode: {\r\n isReValidateOnBlur,\r\n isReValidateOnChange,\r\n }, validateResolver: resolver ? validateResolver : undefined, fieldsRef,\r\n resetFieldArrayFunctionRef,\r\n useWatchFieldsRef,\r\n useWatchRenderFunctionsRef,\r\n fieldArrayDefaultValuesRef,\r\n validFieldsRef,\r\n fieldsWithValidationRef,\r\n fieldArrayNamesRef,\r\n readFormStateRef,\r\n formStateRef,\r\n defaultValuesRef,\r\n shallowFieldsStateRef,\r\n fieldArrayValuesRef }, commonProps)), [\r\n defaultValuesRef.current,\r\n updateWatchedValue,\r\n shouldUnregister,\r\n removeFieldEventListener,\r\n watchInternal,\r\n ]);\r\n return Object.assign({ watch,\r\n control,\r\n handleSubmit, reset: useCallback(reset, []), clearErrors: useCallback(clearErrors, []), setError: useCallback(setError, []), errors: formState.errors }, commonProps);\r\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nconst FormContext = createContext(null);\r\nFormContext.displayName = 'RHFContext';\r\nconst useFormContext = () => useContext(FormContext);\r\nconst FormProvider = (_a) => {\r\n var { children } = _a, props = __rest(_a, [\"children\"]);\r\n return (createElement(FormContext.Provider, { value: Object.assign({}, props) }, children));\r\n};\n\nvar generateId = () => {\r\n const d = typeof performance === UNDEFINED ? Date.now() : performance.now() * 1000;\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16 + d) % 16 | 0;\r\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\r\n });\r\n};\n\nfunction removeAtIndexes(data, indexes) {\r\n let i = 0;\r\n const temp = [...data];\r\n for (const index of indexes) {\r\n temp.splice(index - i, 1);\r\n i++;\r\n }\r\n return compact(temp).length ? temp : [];\r\n}\r\nvar removeArrayAt = (data, index) => isUndefined(index)\r\n ? []\r\n : removeAtIndexes(data, (Array.isArray(index) ? index : [index]).sort((a, b) => a - b));\n\nvar moveArrayAt = (data, from, to) => {\r\n if (Array.isArray(data)) {\r\n if (isUndefined(data[to])) {\r\n data[to] = undefined;\r\n }\r\n data.splice(to, 0, data.splice(from, 1)[0]);\r\n return data;\r\n }\r\n return [];\r\n};\n\nvar swapArrayAt = (data, indexA, indexB) => {\r\n const temp = [data[indexB], data[indexA]];\r\n data[indexA] = temp[0];\r\n data[indexB] = temp[1];\r\n};\n\nfunction prepend(data, value) {\r\n return [...(Array.isArray(value) ? value : [value || undefined]), ...data];\r\n}\n\nfunction insert(data, index, value) {\r\n return [\r\n ...data.slice(0, index),\r\n ...(Array.isArray(value) ? value : [value || undefined]),\r\n ...data.slice(index),\r\n ];\r\n}\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? Array(value.length).fill(undefined) : undefined;\n\nvar fillBooleanArray = (value) => (Array.isArray(value) ? value : [value]).map((data) => {\r\n if (isObject(data)) {\r\n const object = {};\r\n for (const key in data) {\r\n object[key] = true;\r\n }\r\n return object;\r\n }\r\n return true;\r\n});\n\nconst mapIds = (values = [], keyName, skipWarn) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!skipWarn) {\r\n for (const value of values) {\r\n if (typeof value === 'object') {\r\n if (keyName in value) {\r\n console.warn(`📋 useFieldArray fieldValues contain the keyName \\`${keyName}\\` which is reserved for use by useFieldArray. https://react-hook-form.com/api#useFieldArray`);\r\n break;\r\n }\r\n }\r\n else {\r\n console.warn(`📋 useFieldArray input's name should be in object shape instead of flat array. https://react-hook-form.com/api#useFieldArray`);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return values.map((value) => (Object.assign({ [keyName]: value[keyName] || generateId() }, value)));\r\n};\r\nconst useFieldArray = ({ control, name, keyName = 'id', }) => {\r\n const methods = useFormContext();\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!control && !methods) {\r\n throw new Error('📋 useFieldArray is missing `control` prop. https://react-hook-form.com/api#useFieldArray');\r\n }\r\n }\r\n const focusIndexRef = useRef(-1);\r\n const isUnMount = useRef(false);\r\n const { isFormDirty, updateWatchedValue, resetFieldArrayFunctionRef, fieldArrayNamesRef, fieldsRef, defaultValuesRef, removeFieldEventListener, formStateRef, shallowFieldsStateRef, updateFormState, readFormStateRef, validFieldsRef, fieldsWithValidationRef, fieldArrayDefaultValuesRef, validateResolver, getValues, shouldUnregister, fieldArrayValuesRef, } = control || methods.control;\r\n const getDefaultValues = (values) => get(shouldUnregister ? values : shallowFieldsStateRef.current, name, []);\r\n const fieldArrayParentName = getFieldArrayParentName(name);\r\n const memoizedDefaultValues = useRef([\r\n ...(get(fieldArrayDefaultValuesRef.current, fieldArrayParentName)\r\n ? getDefaultValues(fieldArrayDefaultValuesRef.current)\r\n : getDefaultValues(defaultValuesRef.current)),\r\n ]);\r\n const [fields, setFields] = useState(mapIds(memoizedDefaultValues.current, keyName));\r\n set(fieldArrayValuesRef.current, name, compact(fields));\r\n const omitKey = (fields) => fields.map((_a = {}) => {\r\n var _b = keyName, omitted = _a[_b], rest = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\r\n return rest;\r\n });\r\n fieldArrayNamesRef.current.add(name);\r\n const getFieldArrayValue = useCallback(() => get(fieldArrayValuesRef.current, name, []), [name]);\r\n const getCurrentFieldsValues = () => mapIds(get(getValues(), name, getFieldArrayValue()).map((item, index) => (Object.assign(Object.assign({}, getFieldArrayValue()[index]), item))), keyName, true);\r\n fieldArrayNamesRef.current.add(name);\r\n if (fieldArrayParentName &&\r\n !get(fieldArrayDefaultValuesRef.current, fieldArrayParentName)) {\r\n set(fieldArrayDefaultValuesRef.current, fieldArrayParentName, cloneObject(get(defaultValuesRef.current, fieldArrayParentName)));\r\n }\r\n const setFieldAndValidState = (fieldsValues) => {\r\n setFields(fieldsValues);\r\n set(fieldArrayValuesRef.current, name, fieldsValues);\r\n if (readFormStateRef.current.isValid && validateResolver) {\r\n const values = getValues();\r\n set(values, name, fieldsValues);\r\n validateResolver(values);\r\n }\r\n };\r\n const resetFields = () => {\r\n for (const key in fieldsRef.current) {\r\n if (isMatchFieldArrayName(key, name)) {\r\n removeFieldEventListener(fieldsRef.current[key], true);\r\n delete fieldsRef.current[key];\r\n }\r\n }\r\n };\r\n const cleanup = (ref) => !compact(get(ref, name, [])).length && unset(ref, name);\r\n const updateDirtyFieldsWithDefaultValues = (updatedFieldArrayValues) => {\r\n if (updatedFieldArrayValues) {\r\n set(formStateRef.current.dirtyFields, name, setFieldArrayDirtyFields(omitKey(updatedFieldArrayValues), get(defaultValuesRef.current, name, []), get(formStateRef.current.dirtyFields, name, [])));\r\n }\r\n };\r\n const batchStateUpdate = (method, args, updatedFieldValues, updatedFormValues = [], shouldSet = true, shouldUpdateValid = false) => {\r\n if (get(shallowFieldsStateRef.current, name)) {\r\n const output = method(get(shallowFieldsStateRef.current, name), args.argA, args.argB);\r\n shouldSet && set(shallowFieldsStateRef.current, name, output);\r\n }\r\n if (get(fieldArrayDefaultValuesRef.current, name)) {\r\n const output = method(get(fieldArrayDefaultValuesRef.current, name), args.argA, args.argB);\r\n shouldSet && set(fieldArrayDefaultValuesRef.current, name, output);\r\n }\r\n if (Array.isArray(get(formStateRef.current.errors, name))) {\r\n const output = method(get(formStateRef.current.errors, name), args.argA, args.argB);\r\n shouldSet && set(formStateRef.current.errors, name, output);\r\n cleanup(formStateRef.current.errors);\r\n }\r\n if (readFormStateRef.current.touched &&\r\n get(formStateRef.current.touched, name)) {\r\n const output = method(get(formStateRef.current.touched, name), args.argA, args.argB);\r\n shouldSet && set(formStateRef.current.touched, name, output);\r\n cleanup(formStateRef.current.touched);\r\n }\r\n if (readFormStateRef.current.dirtyFields ||\r\n readFormStateRef.current.isDirty) {\r\n set(formStateRef.current.dirtyFields, name, setFieldArrayDirtyFields(omitKey(updatedFormValues), get(defaultValuesRef.current, name, []), get(formStateRef.current.dirtyFields, name, [])));\r\n updateDirtyFieldsWithDefaultValues(updatedFieldValues);\r\n cleanup(formStateRef.current.dirtyFields);\r\n }\r\n if (shouldUpdateValid &&\r\n readFormStateRef.current.isValid &&\r\n !validateResolver) {\r\n set(validFieldsRef.current, name, method(get(validFieldsRef.current, name, []), args.argA));\r\n cleanup(validFieldsRef.current);\r\n set(fieldsWithValidationRef.current, name, method(get(fieldsWithValidationRef.current, name, []), args.argA));\r\n cleanup(fieldsWithValidationRef.current);\r\n }\r\n if (!isUnMount.current && readFormStateRef.current.isDirty) {\r\n updateFormState({\r\n isDirty: isFormDirty(name, omitKey(updatedFormValues)),\r\n });\r\n }\r\n };\r\n const append = (value, shouldFocus = true) => {\r\n const appendValue = Array.isArray(value) ? value : [value];\r\n const updateFormValues = [\r\n ...getCurrentFieldsValues(),\r\n ...mapIds(appendValue, keyName),\r\n ];\r\n setFieldAndValidState(updateFormValues);\r\n if (readFormStateRef.current.dirtyFields ||\r\n readFormStateRef.current.isDirty) {\r\n updateDirtyFieldsWithDefaultValues(updateFormValues);\r\n updateFormState({\r\n isDirty: true,\r\n dirtyFields: formStateRef.current.dirtyFields,\r\n });\r\n }\r\n !shouldUnregister &&\r\n set(shallowFieldsStateRef.current, name, [\r\n ...(get(shallowFieldsStateRef.current, name) || []),\r\n ...cloneObject(appendValue),\r\n ]);\r\n focusIndexRef.current = shouldFocus\r\n ? get(fieldArrayValuesRef.current, name).length - 1\r\n : -1;\r\n };\r\n const prepend$1 = (value, shouldFocus = true) => {\r\n const emptyArray = fillEmptyArray(value);\r\n const updatedFieldArrayValues = prepend(getCurrentFieldsValues(), mapIds(Array.isArray(value) ? value : [value], keyName));\r\n setFieldAndValidState(updatedFieldArrayValues);\r\n resetFields();\r\n batchStateUpdate(prepend, {\r\n argA: emptyArray,\r\n argC: fillBooleanArray(value),\r\n }, updatedFieldArrayValues);\r\n focusIndexRef.current = shouldFocus ? 0 : -1;\r\n };\r\n const remove = (index) => {\r\n const fieldValues = getCurrentFieldsValues();\r\n const updatedFieldValues = removeArrayAt(fieldValues, index);\r\n setFieldAndValidState(updatedFieldValues);\r\n resetFields();\r\n batchStateUpdate(removeArrayAt, {\r\n argA: index,\r\n argC: index,\r\n }, updatedFieldValues, removeArrayAt(fieldValues, index), true, true);\r\n };\r\n const insert$1 = (index, value, shouldFocus = true) => {\r\n const emptyArray = fillEmptyArray(value);\r\n const fieldValues = getCurrentFieldsValues();\r\n const updatedFieldArrayValues = insert(fieldValues, index, mapIds(Array.isArray(value) ? value : [value], keyName));\r\n setFieldAndValidState(updatedFieldArrayValues);\r\n resetFields();\r\n batchStateUpdate(insert, {\r\n argA: index,\r\n argB: emptyArray,\r\n argC: index,\r\n argD: fillBooleanArray(value),\r\n }, updatedFieldArrayValues, insert(fieldValues, index));\r\n focusIndexRef.current = shouldFocus ? index : -1;\r\n };\r\n const swap = (indexA, indexB) => {\r\n const fieldValues = getCurrentFieldsValues();\r\n swapArrayAt(fieldValues, indexA, indexB);\r\n resetFields();\r\n setFieldAndValidState([...fieldValues]);\r\n batchStateUpdate(swapArrayAt, {\r\n argA: indexA,\r\n argB: indexB,\r\n argC: indexA,\r\n argD: indexB,\r\n }, undefined, fieldValues, false);\r\n };\r\n const move = (from, to) => {\r\n const fieldValues = getCurrentFieldsValues();\r\n moveArrayAt(fieldValues, from, to);\r\n resetFields();\r\n setFieldAndValidState([...fieldValues]);\r\n batchStateUpdate(moveArrayAt, {\r\n argA: from,\r\n argB: to,\r\n argC: from,\r\n argD: to,\r\n }, undefined, fieldValues, false);\r\n };\r\n useEffect(() => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!name) {\r\n console.warn('📋 useFieldArray is missing `name` attribute. https://react-hook-form.com/api#useFieldArray');\r\n }\r\n }\r\n const defaultValues = get(fieldArrayDefaultValuesRef.current, name);\r\n if (defaultValues && fields.length < defaultValues.length) {\r\n set(fieldArrayDefaultValuesRef.current, name, defaultValues.slice(1));\r\n }\r\n updateWatchedValue(name);\r\n if (focusIndexRef.current > -1) {\r\n for (const key in fieldsRef.current) {\r\n const field = fieldsRef.current[key];\r\n if (key.startsWith(`${name}[${focusIndexRef.current}]`) &&\r\n field.ref.focus) {\r\n field.ref.focus();\r\n break;\r\n }\r\n }\r\n }\r\n focusIndexRef.current = -1;\r\n }, [fields, name]);\r\n useEffect(() => {\r\n const resetFunctions = resetFieldArrayFunctionRef.current;\r\n const fieldArrayNames = fieldArrayNamesRef.current;\r\n if (!getFieldArrayParentName(name)) {\r\n resetFunctions[name] = (data) => {\r\n resetFields();\r\n !data && unset(fieldArrayDefaultValuesRef.current, name);\r\n unset(shallowFieldsStateRef.current, name);\r\n memoizedDefaultValues.current = get(data || defaultValuesRef.current, name);\r\n if (!isUnMount.current) {\r\n setFields(mapIds(memoizedDefaultValues.current, keyName));\r\n }\r\n };\r\n }\r\n return () => {\r\n isUnMount.current = true;\r\n shouldUnregister && remove();\r\n resetFields();\r\n delete resetFunctions[name];\r\n unset(fieldArrayValuesRef.current, name);\r\n fieldArrayNames.delete(name);\r\n };\r\n }, []);\r\n return {\r\n swap: useCallback(swap, [name]),\r\n move: useCallback(move, [name]),\r\n prepend: useCallback(prepend$1, [name]),\r\n append: useCallback(append, [name]),\r\n remove: useCallback(remove, [name]),\r\n insert: useCallback(insert$1, [name]),\r\n fields: compact(fields),\r\n };\r\n};\n\nvar getInputValue = (event) => isPrimitive(event) ||\r\n !isObject(event.target) ||\r\n (isObject(event.target) && !event.type)\r\n ? event\r\n : isUndefined(event.target.value)\r\n ? event.target.checked\r\n : event.target.value;\n\nfunction useController({ name, rules, defaultValue, control, onFocus, }) {\r\n const methods = useFormContext();\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!control && !methods) {\r\n throw new Error('📋 Controller is missing `control` prop. https://react-hook-form.com/api#Controller');\r\n }\r\n }\r\n const { defaultValuesRef, setValue, register, unregister, trigger, mode, reValidateMode: { isReValidateOnBlur, isReValidateOnChange }, formState, formStateRef: { current: { isSubmitted, touched, errors }, }, updateFormState, readFormStateRef, fieldsRef, fieldArrayNamesRef, shallowFieldsStateRef, } = control || methods.control;\r\n const isNotFieldArray = !isNameInFieldArray(fieldArrayNamesRef.current, name);\r\n const getInitialValue = () => !isUndefined(get(shallowFieldsStateRef.current, name)) && isNotFieldArray\r\n ? get(shallowFieldsStateRef.current, name)\r\n : isUndefined(defaultValue)\r\n ? get(defaultValuesRef.current, name)\r\n : defaultValue;\r\n const [value, setInputStateValue] = useState(getInitialValue());\r\n const valueRef = useRef(value);\r\n const ref = useRef({\r\n focus: () => null,\r\n });\r\n const onFocusRef = useRef(onFocus ||\r\n (() => {\r\n if (isFunction(ref.current.focus)) {\r\n ref.current.focus();\r\n }\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!isFunction(ref.current.focus)) {\r\n console.warn(`📋 'ref' from Controller render prop must be attached to a React component or a DOM Element whose ref provides a 'focus()' method`);\r\n }\r\n }\r\n }));\r\n const shouldValidate = useCallback((isBlurEvent) => !skipValidation(Object.assign({ isBlurEvent,\r\n isReValidateOnBlur,\r\n isReValidateOnChange,\r\n isSubmitted, isTouched: !!get(touched, name) }, mode)), [\r\n isReValidateOnBlur,\r\n isReValidateOnChange,\r\n isSubmitted,\r\n touched,\r\n name,\r\n mode,\r\n ]);\r\n const commonTask = useCallback(([event]) => {\r\n const data = getInputValue(event);\r\n setInputStateValue(data);\r\n valueRef.current = data;\r\n return data;\r\n }, []);\r\n const registerField = useCallback((shouldUpdateValue) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!name) {\r\n return console.warn('📋 Field is missing `name` prop. https://react-hook-form.com/api#Controller');\r\n }\r\n }\r\n if (fieldsRef.current[name]) {\r\n fieldsRef.current[name] = Object.assign({ ref: fieldsRef.current[name].ref }, rules);\r\n }\r\n else {\r\n register(Object.defineProperties({\r\n name,\r\n focus: onFocusRef.current,\r\n }, {\r\n value: {\r\n set(data) {\r\n setInputStateValue(data);\r\n valueRef.current = data;\r\n },\r\n get() {\r\n return valueRef.current;\r\n },\r\n },\r\n }), rules);\r\n shouldUpdateValue = isUndefined(get(defaultValuesRef.current, name));\r\n }\r\n shouldUpdateValue &&\r\n isNotFieldArray &&\r\n setInputStateValue(getInitialValue());\r\n }, [rules, name, register]);\r\n useEffect(() => () => unregister(name), [name]);\r\n useEffect(() => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (isUndefined(value)) {\r\n console.warn(`📋 ${name} is missing in the 'defaultValue' prop of either its Controller (https://react-hook-form.com/api#Controller) or useForm (https://react-hook-form.com/api#useForm)`);\r\n }\r\n if (!isNotFieldArray && isUndefined(defaultValue)) {\r\n console.warn('📋 Controller is missing `defaultValue` prop when using `useFieldArray`. https://react-hook-form.com/api#Controller');\r\n }\r\n }\r\n registerField();\r\n }, [registerField]);\r\n useEffect(() => {\r\n !fieldsRef.current[name] && registerField(true);\r\n });\r\n const onBlur = useCallback(() => {\r\n if (readFormStateRef.current.touched && !get(touched, name)) {\r\n set(touched, name, true);\r\n updateFormState({\r\n touched,\r\n });\r\n }\r\n shouldValidate(true) && trigger(name);\r\n }, [name, updateFormState, shouldValidate, trigger, readFormStateRef]);\r\n const onChange = useCallback((...event) => setValue(name, commonTask(event), {\r\n shouldValidate: shouldValidate(),\r\n shouldDirty: true,\r\n }), [setValue, name, shouldValidate]);\r\n return {\r\n field: {\r\n onChange,\r\n onBlur,\r\n name,\r\n value,\r\n ref,\r\n },\r\n meta: Object.defineProperties({\r\n invalid: !!get(errors, name),\r\n }, {\r\n isDirty: {\r\n get() {\r\n return !!get(formState.dirtyFields, name);\r\n },\r\n },\r\n isTouched: {\r\n get() {\r\n return !!get(formState.touched, name);\r\n },\r\n },\r\n }),\r\n };\r\n}\n\nfunction useWatch({ control, name, defaultValue, }) {\r\n const methods = useFormContext();\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!control && !methods) {\r\n throw new Error('📋 useWatch is missing `control` prop. https://react-hook-form.com/api#useWatch');\r\n }\r\n }\r\n const { useWatchFieldsRef, useWatchRenderFunctionsRef, watchInternal, defaultValuesRef, } = control || methods.control;\r\n const updateValue = useState()[1];\r\n const idRef = useRef();\r\n const defaultValueRef = useRef(defaultValue);\r\n useEffect(() => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (name === '') {\r\n console.warn('📋 useWatch is missing `name` attribute. https://react-hook-form.com/api#useWatch');\r\n }\r\n }\r\n const id = (idRef.current = generateId());\r\n const watchFieldsHookRender = useWatchRenderFunctionsRef.current;\r\n const watchFieldsHook = useWatchFieldsRef.current;\r\n watchFieldsHook[id] = new Set();\r\n watchFieldsHookRender[id] = () => updateValue({});\r\n watchInternal(name, defaultValueRef.current, id);\r\n return () => {\r\n delete watchFieldsHook[id];\r\n delete watchFieldsHookRender[id];\r\n };\r\n }, [\r\n name,\r\n useWatchRenderFunctionsRef,\r\n useWatchFieldsRef,\r\n watchInternal,\r\n defaultValueRef,\r\n ]);\r\n return idRef.current\r\n ? watchInternal(name, defaultValueRef.current, idRef.current)\r\n : isUndefined(defaultValue)\r\n ? isString(name)\r\n ? get(defaultValuesRef.current, name)\r\n : Array.isArray(name)\r\n ? name.reduce((previous, inputName) => (Object.assign(Object.assign({}, previous), { [inputName]: get(defaultValuesRef.current, inputName) })), {})\r\n : defaultValuesRef.current\r\n : defaultValue;\r\n}\n\nconst Controller = (props) => {\r\n const { rules, as, render, defaultValue, control, onFocus } = props, rest = __rest(props, [\"rules\", \"as\", \"render\", \"defaultValue\", \"control\", \"onFocus\"]);\r\n const { field, meta } = useController(props);\r\n const componentProps = Object.assign(Object.assign({}, rest), field);\r\n return as\r\n ? isValidElement(as)\r\n ? cloneElement(as, componentProps)\r\n : createElement(as, componentProps)\r\n : render\r\n ? render(field, meta)\r\n : null;\r\n};\n\nexport { Controller, FormProvider, appendErrors, get, transformToNestObject, useController, useFieldArray, useForm, useFormContext, useWatch };\n//# sourceMappingURL=index.esm.js.map\n"],"names":["isHTMLElement","value","HTMLElement","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","isNullOrUndefined","isObjectType","isObject","Array","isArray","Date","isKey","test","compact","filter","Boolean","stringToPath","input","replace","split","set","object","path","let","index","tempPath","length","lastIndex","const","key","newValue","objValue","isNaN","transformToNestObject","data","isUndefined","val","undefined","get","obj","defaultValue","result","reduce","removeAllEventListeners","ref","validateWithStateUpdate","removeEventListener","defaultReturn","isValid","getRadioValue","options","previous","option","checked","isRadioInput","element","type","isFileInput","isCheckBoxInput","isMultipleSelect","defaultResult","validResult","getCheckboxValue","values","map","attributes","getFieldValue","fieldsRef","name","shallowFieldsStateRef","excludeDisabled","shouldKeepRawValue","field","current","field_ref","disabled","valueAsNumber","valueAsDate","setValueAs","files","concat","NaN","isDetached","nodeType","Node","DOCUMENT_NODE","parentNode","isEmptyObject","Object","keys","isBoolean","unset","previousObjRef","updatePath","childObject","slice","baseGet","k","objectRef","currentPaths","currentPathsLength","item","isSameRef","fieldValue","isPrimitive","deepMerge","target","source","targetValue","sourceValue","_a","deepEqual","object1","object2","isErrorObject","isValidElement","keys1","keys2","i","list","val1","val2","setDirtyFields","defaultValues","dirtyFields","parentName","assign","isString","getFieldsValues","shallowFieldsState","shouldUnregister","search","output","loop","startsWith","find","isRegex","RegExp","getValueAndMessage","validationData","message","isFunction","isMessage","getValidateError","appendErrors","validateAllFieldCriteria","errors","types","validateField","async","ref$1","required","maxLength","minLength","min","max","pattern","error","isRadio","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","ref$2","value$1","exceedMin","maxOutput","minOutput","valueDate","valueNumber","parseFloat","maxLengthOutput","minLengthOutput","ref$3","patternValue","message$1","validate","validateRef","validateError","validationResult","entries","ref$4","validateFunction","getPath","rootPath","paths","property","rootName","push","assignWatchFields","fieldValues","fieldName","watchFields","inputValue","isSingleField","add","forEach","getFieldArrayParentName","substring","indexOf","isNameInFieldArray","names","some","searchName","isMatchFieldArrayName","isWeb","window","document","cloneObject","copy","File","includes","constructor","getTime","Set","Map","i$1","list$1","modeChecker","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isRadioOrCheckboxFunction","isWindowUndefined","isProxyEnabled","Proxy","useForm","reValidateMode","resolver","shouldFocusError","useRef","fieldArrayDefaultValuesRef","fieldArrayValuesRef","watchFieldsRef","useWatchFieldsRef","useWatchRenderFunctionsRef","fieldsWithValidationRef","validFieldsRef","defaultValuesRef","isUnMount","isWatchAllRef","handleChangeRef","resetFieldArrayFunctionRef","contextRef","context","resolverRef","fieldArrayNamesRef","modeRef","isValidateAllFieldCriteria","criteriaMode","useState","isDirty","isValidating","isSubmitted","submitCount","touched","isSubmitting","isSubmitSuccessful","formState","setFormState","readFormStateRef","formStateRef","observerRef","isReValidateOnBlur","isReValidateOnChange","updateFormState","useCallback","state","updateIsValidating","shouldRenderBaseOnError","shouldRender","shouldReRender","validFields","previousError","fieldsWithValidation","isErrorStateChanged","setFieldValue","rawValue","radioRef","selectRef","selected","checkboxRef","isFormDirty","formValues","getValues","updateAndGetDirtyState","isFieldDirty","isDirtyFieldExist","previousIsDirty","isChanged","executeValidation","skipReRender","process","env","NODE_ENV","console","warn","executeSchemaOrResolverValidation","previousFormIsValid","isInputsValid","every","trigger","fields","Promise","all","setInternalValues","shouldDirty","shouldValidate","setInternalValue","config","has","setFieldArrayDirtyFields","obj$1","isFieldWatched","match","renderWatchedInputs","found","size","setFieldArrayDefaultValues","payload","isBlurEvent","shouldSkipValidation","isTouched","skipValidation","parentNodeName","currentError","validateResolver","newDefaultValues","removeFieldEventListener","forceDelete","handleChange","fieldRef","findRemovedFieldAndRemoveListener","updateWatchedValue","removeFieldEventListenerAndRef","watchInternal","fieldNames","watchId","combinedDefaultValues","registerFieldRef","fieldRefAndValidationOptions","isFieldArray","compareRef","currentRef","isEmptyDefaultValue","isEmptyUnmountFields","then","shouldAttachChangeEvent","addEventListener","attachEventListeners","handleSubmit","onValid","onInvalid","e","preventDefault","persist","fieldErrors","fieldError","focus","focusOnErrorField","useEffect","observer","MutationObserver","observe","childList","subtree","onDomRemove","disconnect","commonProps","setValue","register","refOrRegisterOptions","unregister","prop","control","useMemo","reset","omitResetState","inputRef","closest","resetFieldArray","resetRefs","clearErrors","inputName","setError","shouldFocus","createContext","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/react-hook-form/dist/index.esm.js"],"sourcesContent":["import { isValidElement, useRef, useState, useCallback, useEffect, useMemo, createContext, useContext, createElement, cloneElement } from 'react';\n\nvar isHTMLElement = (value) => value instanceof HTMLElement;\n\nconst EVENTS = {\r\n BLUR: 'blur',\r\n CHANGE: 'change',\r\n INPUT: 'input',\r\n};\r\nconst VALIDATION_MODE = {\r\n onBlur: 'onBlur',\r\n onChange: 'onChange',\r\n onSubmit: 'onSubmit',\r\n onTouched: 'onTouched',\r\n all: 'all',\r\n};\r\nconst SELECT = 'select';\r\nconst UNDEFINED = 'undefined';\r\nconst INPUT_VALIDATION_RULES = {\r\n max: 'max',\r\n min: 'min',\r\n maxLength: 'maxLength',\r\n minLength: 'minLength',\r\n pattern: 'pattern',\r\n required: 'required',\r\n validate: 'validate',\r\n};\n\nfunction attachEventListeners({ ref }, shouldAttachChangeEvent, handleChange) {\r\n if (isHTMLElement(ref) && handleChange) {\r\n ref.addEventListener(shouldAttachChangeEvent ? EVENTS.CHANGE : EVENTS.INPUT, handleChange);\r\n ref.addEventListener(EVENTS.BLUR, handleChange);\r\n }\r\n}\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\r\nvar isObject = (value) => !isNullOrUndefined(value) &&\r\n !Array.isArray(value) &&\r\n isObjectType(value) &&\r\n !(value instanceof Date);\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar compact = (value) => value.filter(Boolean);\n\nvar stringToPath = (input) => compact(input\r\n .replace(/[\"|']/g, '')\r\n .replace(/\\[/g, '.')\r\n .replace(/\\]/g, '')\r\n .split('.'));\n\nfunction set(object, path, value) {\r\n let index = -1;\r\n const tempPath = isKey(path) ? [path] : stringToPath(path);\r\n const length = tempPath.length;\r\n const lastIndex = length - 1;\r\n while (++index < length) {\r\n const key = tempPath[index];\r\n let newValue = value;\r\n if (index !== lastIndex) {\r\n const objValue = object[key];\r\n newValue =\r\n isObject(objValue) || Array.isArray(objValue)\r\n ? objValue\r\n : !isNaN(+tempPath[index + 1])\r\n ? []\r\n : {};\r\n }\r\n object[key] = newValue;\r\n object = object[key];\r\n }\r\n return object;\r\n}\n\nvar transformToNestObject = (data, value = {}) => {\r\n for (const key in data) {\r\n !isKey(key) ? set(value, key, data[key]) : (value[key] = data[key]);\r\n }\r\n return value;\r\n};\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (obj = {}, path, defaultValue) => {\r\n const result = compact(path.split(/[,[\\].]+?/)).reduce((result, key) => (isNullOrUndefined(result) ? result : result[key]), obj);\r\n return isUndefined(result) || result === obj\r\n ? isUndefined(obj[path])\r\n ? defaultValue\r\n : obj[path]\r\n : result;\r\n};\n\nvar focusOnErrorField = (fields, fieldErrors) => {\r\n for (const key in fields) {\r\n if (get(fieldErrors, key)) {\r\n const field = fields[key];\r\n if (field) {\r\n if (field.ref.focus && isUndefined(field.ref.focus())) {\r\n break;\r\n }\r\n else if (field.options) {\r\n field.options[0].ref.focus();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n};\n\nvar removeAllEventListeners = (ref, validateWithStateUpdate) => {\r\n if (isHTMLElement(ref) && ref.removeEventListener) {\r\n ref.removeEventListener(EVENTS.INPUT, validateWithStateUpdate);\r\n ref.removeEventListener(EVENTS.CHANGE, validateWithStateUpdate);\r\n ref.removeEventListener(EVENTS.BLUR, validateWithStateUpdate);\r\n }\r\n};\n\nconst defaultReturn = {\r\n isValid: false,\r\n value: null,\r\n};\r\nvar getRadioValue = (options) => Array.isArray(options)\r\n ? options.reduce((previous, option) => option && option.ref.checked\r\n ? {\r\n isValid: true,\r\n value: option.ref.value,\r\n }\r\n : previous, defaultReturn)\r\n : defaultReturn;\n\nvar getMultipleSelectValue = (options) => [...options]\r\n .filter(({ selected }) => selected)\r\n .map(({ value }) => value);\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isMultipleSelect = (element) => element.type === `${SELECT}-multiple`;\n\nconst defaultResult = {\r\n value: false,\r\n isValid: false,\r\n};\r\nconst validResult = { value: true, isValid: true };\r\nvar getCheckboxValue = (options) => {\r\n if (Array.isArray(options)) {\r\n if (options.length > 1) {\r\n const values = options\r\n .filter((option) => option && option.ref.checked)\r\n .map(({ ref: { value } }) => value);\r\n return { value: values, isValid: !!values.length };\r\n }\r\n const { checked, value, attributes } = options[0].ref;\r\n return checked\r\n ? attributes && !isUndefined(attributes.value)\r\n ? isUndefined(value) || value === ''\r\n ? validResult\r\n : { value: value, isValid: true }\r\n : validResult\r\n : defaultResult;\r\n }\r\n return defaultResult;\r\n};\n\nfunction getFieldValue(fieldsRef, name, shallowFieldsStateRef, excludeDisabled, shouldKeepRawValue) {\r\n const field = fieldsRef.current[name];\r\n if (field) {\r\n const { ref: { value, disabled }, ref, valueAsNumber, valueAsDate, setValueAs, } = field;\r\n if (disabled && excludeDisabled) {\r\n return;\r\n }\r\n if (isFileInput(ref)) {\r\n return ref.files;\r\n }\r\n if (isRadioInput(ref)) {\r\n return getRadioValue(field.options).value;\r\n }\r\n if (isMultipleSelect(ref)) {\r\n return getMultipleSelectValue(ref.options);\r\n }\r\n if (isCheckBoxInput(ref)) {\r\n return getCheckboxValue(field.options).value;\r\n }\r\n return shouldKeepRawValue\r\n ? value\r\n : valueAsNumber\r\n ? value === ''\r\n ? NaN\r\n : +value\r\n : valueAsDate\r\n ? ref.valueAsDate\r\n : setValueAs\r\n ? setValueAs(value)\r\n : value;\r\n }\r\n if (shallowFieldsStateRef) {\r\n return get(shallowFieldsStateRef.current, name);\r\n }\r\n}\n\nfunction isDetached(element) {\r\n if (!element) {\r\n return true;\r\n }\r\n if (!(element instanceof HTMLElement) ||\r\n element.nodeType === Node.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n return isDetached(element.parentNode);\r\n}\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nfunction baseGet(object, updatePath) {\r\n const length = updatePath.slice(0, -1).length;\r\n let index = 0;\r\n while (index < length) {\r\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\r\n }\r\n return object;\r\n}\r\nfunction unset(object, path) {\r\n const updatePath = isKey(path) ? [path] : stringToPath(path);\r\n const childObject = updatePath.length == 1 ? object : baseGet(object, updatePath);\r\n const key = updatePath[updatePath.length - 1];\r\n let previousObjRef;\r\n if (childObject) {\r\n delete childObject[key];\r\n }\r\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\r\n let index = -1;\r\n let objectRef;\r\n const currentPaths = updatePath.slice(0, -(k + 1));\r\n const currentPathsLength = currentPaths.length - 1;\r\n if (k > 0) {\r\n previousObjRef = object;\r\n }\r\n while (++index < currentPaths.length) {\r\n const item = currentPaths[index];\r\n objectRef = objectRef ? objectRef[item] : object[item];\r\n if (currentPathsLength === index &&\r\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\r\n (Array.isArray(objectRef) &&\r\n !objectRef.filter((data) => (isObject(data) && !isEmptyObject(data)) || isBoolean(data)).length))) {\r\n previousObjRef ? delete previousObjRef[item] : delete object[item];\r\n }\r\n previousObjRef = objectRef;\r\n }\r\n }\r\n return object;\r\n}\n\nconst isSameRef = (fieldValue, ref) => fieldValue && fieldValue.ref === ref;\r\nfunction findRemovedFieldAndRemoveListener(fieldsRef, handleChange, field, shallowFieldsStateRef, shouldUnregister, forceDelete) {\r\n const { ref, ref: { name }, } = field;\r\n const fieldRef = fieldsRef.current[name];\r\n if (!shouldUnregister) {\r\n const value = getFieldValue(fieldsRef, name, shallowFieldsStateRef);\r\n !isUndefined(value) && set(shallowFieldsStateRef.current, name, value);\r\n }\r\n if (!ref.type || !fieldRef) {\r\n delete fieldsRef.current[name];\r\n return;\r\n }\r\n if (isRadioInput(ref) || isCheckBoxInput(ref)) {\r\n if (Array.isArray(fieldRef.options) && fieldRef.options.length) {\r\n compact(fieldRef.options).forEach((option = {}, index) => {\r\n if ((isDetached(option.ref) && isSameRef(option, option.ref)) ||\r\n forceDelete) {\r\n removeAllEventListeners(option.ref, handleChange);\r\n unset(fieldRef.options, `[${index}]`);\r\n }\r\n });\r\n if (fieldRef.options && !compact(fieldRef.options).length) {\r\n delete fieldsRef.current[name];\r\n }\r\n }\r\n else {\r\n delete fieldsRef.current[name];\r\n }\r\n }\r\n else if ((isDetached(ref) && isSameRef(fieldRef, ref)) || forceDelete) {\r\n removeAllEventListeners(ref, handleChange);\r\n delete fieldsRef.current[name];\r\n }\r\n}\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepMerge(target, source) {\r\n if (isPrimitive(target) || isPrimitive(source)) {\r\n return source;\r\n }\r\n for (const key in source) {\r\n const targetValue = target[key];\r\n const sourceValue = source[key];\r\n try {\r\n target[key] =\r\n (isObject(targetValue) && isObject(sourceValue)) ||\r\n (Array.isArray(targetValue) && Array.isArray(sourceValue))\r\n ? deepMerge(targetValue, sourceValue)\r\n : sourceValue;\r\n }\r\n catch (_a) { }\r\n }\r\n return target;\r\n}\n\nfunction deepEqual(object1, object2, isErrorObject) {\r\n if (isPrimitive(object1) ||\r\n isPrimitive(object2) ||\r\n object1 instanceof Date ||\r\n object2 instanceof Date) {\r\n return object1 === object2;\r\n }\r\n if (!isValidElement(object1)) {\r\n const keys1 = Object.keys(object1);\r\n const keys2 = Object.keys(object2);\r\n if (keys1.length !== keys2.length) {\r\n return false;\r\n }\r\n for (const key of keys1) {\r\n const val1 = object1[key];\r\n if (!(isErrorObject && key === 'ref')) {\r\n const val2 = object2[key];\r\n if ((isObject(val1) || Array.isArray(val1)) &&\r\n (isObject(val2) || Array.isArray(val2))\r\n ? !deepEqual(val1, val2, isErrorObject)\r\n : val1 !== val2) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n}\n\nfunction setDirtyFields(values, defaultValues, dirtyFields, parentNode, parentName) {\r\n let index = -1;\r\n while (++index < values.length) {\r\n for (const key in values[index]) {\r\n if (Array.isArray(values[index][key])) {\r\n !dirtyFields[index] && (dirtyFields[index] = {});\r\n dirtyFields[index][key] = [];\r\n setDirtyFields(values[index][key], get(defaultValues[index] || {}, key, []), dirtyFields[index][key], dirtyFields[index], key);\r\n }\r\n else {\r\n deepEqual(get(defaultValues[index] || {}, key), values[index][key])\r\n ? set(dirtyFields[index] || {}, key)\r\n : (dirtyFields[index] = Object.assign(Object.assign({}, dirtyFields[index]), { [key]: true }));\r\n }\r\n }\r\n parentNode &&\r\n !dirtyFields.length &&\r\n delete parentNode[parentName];\r\n }\r\n return dirtyFields;\r\n}\r\nvar setFieldArrayDirtyFields = (values, defaultValues, dirtyFields) => deepMerge(setDirtyFields(values, defaultValues, dirtyFields.slice(0, values.length)), setDirtyFields(defaultValues, values, dirtyFields.slice(0, values.length)));\n\nvar isString = (value) => typeof value === 'string';\n\nvar getFieldsValues = (fieldsRef, shallowFieldsState, shouldUnregister, excludeDisabled, search) => {\r\n const output = {};\r\n for (const name in fieldsRef.current) {\r\n if (isUndefined(search) ||\r\n (isString(search)\r\n ? name.startsWith(search)\r\n : Array.isArray(search) && search.find((data) => name.startsWith(data)))) {\r\n output[name] = getFieldValue(fieldsRef, name, undefined, excludeDisabled);\r\n }\r\n }\r\n return shouldUnregister\r\n ? transformToNestObject(output)\r\n : deepMerge(shallowFieldsState, transformToNestObject(output));\r\n};\n\nvar isErrorStateChanged = ({ errors, name, error, validFields, fieldsWithValidation, }) => {\r\n const isValid = isUndefined(error);\r\n const previousError = get(errors, name);\r\n return ((isValid && !!previousError) ||\r\n (!isValid && !deepEqual(previousError, error, true)) ||\r\n (isValid && get(fieldsWithValidation, name) && !get(validFields, name)));\r\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\r\n ? validationData\r\n : {\r\n value: validationData,\r\n message: '',\r\n };\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar isMessage = (value) => isString(value) || isValidElement(value);\n\nfunction getValidateError(result, ref, type = 'validate') {\r\n if (isMessage(result) || (isBoolean(result) && !result)) {\r\n return {\r\n type,\r\n message: isMessage(result) ? result : '',\r\n ref,\r\n };\r\n }\r\n}\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\r\n ? Object.assign(Object.assign({}, errors[name]), { types: Object.assign(Object.assign({}, (errors[name] && errors[name].types ? errors[name].types : {})), { [type]: message || true }) }) : {};\n\nvar validateField = async (fieldsRef, validateAllFieldCriteria, { ref, ref: { value }, options, required, maxLength, minLength, min, max, pattern, validate, }, shallowFieldsStateRef) => {\r\n const name = ref.name;\r\n const error = {};\r\n const isRadio = isRadioInput(ref);\r\n const isCheckBox = isCheckBoxInput(ref);\r\n const isRadioOrCheckbox = isRadio || isCheckBox;\r\n const isEmpty = value === '';\r\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\r\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\r\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\r\n error[name] = Object.assign({ type: exceedMax ? maxType : minType, message,\r\n ref }, (exceedMax\r\n ? appendErrorsCurry(maxType, message)\r\n : appendErrorsCurry(minType, message)));\r\n };\r\n if (required &&\r\n ((!isRadio && !isCheckBox && (isEmpty || isNullOrUndefined(value))) ||\r\n (isBoolean(value) && !value) ||\r\n (isCheckBox && !getCheckboxValue(options).isValid) ||\r\n (isRadio && !getRadioValue(options).isValid))) {\r\n const { value, message } = isMessage(required)\r\n ? { value: !!required, message: required }\r\n : getValueAndMessage(required);\r\n if (value) {\r\n error[name] = Object.assign({ type: INPUT_VALIDATION_RULES.required, message, ref: isRadioOrCheckbox\r\n ? ((fieldsRef.current[name].options || [])[0] || {}).ref\r\n : ref }, appendErrorsCurry(INPUT_VALIDATION_RULES.required, message));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if ((!isNullOrUndefined(min) || !isNullOrUndefined(max)) && value !== '') {\r\n let exceedMax;\r\n let exceedMin;\r\n const maxOutput = getValueAndMessage(max);\r\n const minOutput = getValueAndMessage(min);\r\n if (!isNaN(value)) {\r\n const valueNumber = ref.valueAsNumber || parseFloat(value);\r\n if (!isNullOrUndefined(maxOutput.value)) {\r\n exceedMax = valueNumber > maxOutput.value;\r\n }\r\n if (!isNullOrUndefined(minOutput.value)) {\r\n exceedMin = valueNumber < minOutput.value;\r\n }\r\n }\r\n else {\r\n const valueDate = ref.valueAsDate || new Date(value);\r\n if (isString(maxOutput.value)) {\r\n exceedMax = valueDate > new Date(maxOutput.value);\r\n }\r\n if (isString(minOutput.value)) {\r\n exceedMin = valueDate < new Date(minOutput.value);\r\n }\r\n }\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (isString(value) && !isEmpty && (maxLength || minLength)) {\r\n const maxLengthOutput = getValueAndMessage(maxLength);\r\n const minLengthOutput = getValueAndMessage(minLength);\r\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\r\n value.length > maxLengthOutput.value;\r\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\r\n value.length < minLengthOutput.value;\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (isString(value) && pattern && !isEmpty) {\r\n const { value: patternValue, message } = getValueAndMessage(pattern);\r\n if (isRegex(patternValue) && !patternValue.test(value)) {\r\n error[name] = Object.assign({ type: INPUT_VALIDATION_RULES.pattern, message,\r\n ref }, appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (validate) {\r\n const fieldValue = getFieldValue(fieldsRef, name, shallowFieldsStateRef, false, true);\r\n const validateRef = isRadioOrCheckbox && options ? options[0].ref : ref;\r\n if (isFunction(validate)) {\r\n const result = await validate(fieldValue);\r\n const validateError = getValidateError(result, validateRef);\r\n if (validateError) {\r\n error[name] = Object.assign(Object.assign({}, validateError), appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n else if (isObject(validate)) {\r\n let validationResult = {};\r\n for (const [key, validateFunction] of Object.entries(validate)) {\r\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\r\n break;\r\n }\r\n const validateResult = await validateFunction(fieldValue);\r\n const validateError = getValidateError(validateResult, validateRef, key);\r\n if (validateError) {\r\n validationResult = Object.assign(Object.assign({}, validateError), appendErrorsCurry(key, validateError.message));\r\n if (validateAllFieldCriteria) {\r\n error[name] = validationResult;\r\n }\r\n }\r\n }\r\n if (!isEmptyObject(validationResult)) {\r\n error[name] = Object.assign({ ref: validateRef }, validationResult);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n }\r\n return error;\r\n};\n\nconst getPath = (rootPath, values, paths = []) => {\r\n for (const property in values) {\r\n const rootName = (rootPath +\r\n (isObject(values)\r\n ? `.${property}`\r\n : `[${property}]`));\r\n isPrimitive(values[property])\r\n ? paths.push(rootName)\r\n : getPath(rootName, values[property], paths);\r\n }\r\n return paths;\r\n};\n\nvar assignWatchFields = (fieldValues, fieldName, watchFields, inputValue, isSingleField) => {\r\n let value = undefined;\r\n watchFields.add(fieldName);\r\n if (!isEmptyObject(fieldValues)) {\r\n value = get(fieldValues, fieldName);\r\n if (isObject(value) || Array.isArray(value)) {\r\n getPath(fieldName, value).forEach((name) => watchFields.add(name));\r\n }\r\n }\r\n return isUndefined(value)\r\n ? isSingleField\r\n ? inputValue\r\n : get(inputValue, fieldName)\r\n : value;\r\n};\n\nvar skipValidation = ({ isOnBlur, isOnChange, isOnTouch, isTouched, isReValidateOnBlur, isReValidateOnChange, isBlurEvent, isSubmitted, isOnAll, }) => {\r\n if (isOnAll) {\r\n return false;\r\n }\r\n else if (!isSubmitted && isOnTouch) {\r\n return !(isTouched || isBlurEvent);\r\n }\r\n else if (isSubmitted ? isReValidateOnBlur : isOnBlur) {\r\n return !isBlurEvent;\r\n }\r\n else if (isSubmitted ? isReValidateOnChange : isOnChange) {\r\n return isBlurEvent;\r\n }\r\n return true;\r\n};\n\nvar getFieldArrayParentName = (name) => name.substring(0, name.indexOf('['));\n\nconst isMatchFieldArrayName = (name, searchName) => RegExp(`^${searchName}([|.)\\\\d+`.replace(/\\[/g, '\\\\[').replace(/\\]/g, '\\\\]')).test(name);\r\nvar isNameInFieldArray = (names, name) => [...names].some((current) => isMatchFieldArrayName(name, current));\n\nvar isSelectInput = (element) => element.type === `${SELECT}-one`;\n\nfunction onDomRemove(fieldsRef, removeFieldEventListenerAndRef) {\r\n const observer = new MutationObserver(() => {\r\n for (const field of Object.values(fieldsRef.current)) {\r\n if (field && field.options) {\r\n for (const option of field.options) {\r\n if (option && option.ref && isDetached(option.ref)) {\r\n removeFieldEventListenerAndRef(field);\r\n }\r\n }\r\n }\r\n else if (field && isDetached(field.ref)) {\r\n removeFieldEventListenerAndRef(field);\r\n }\r\n }\r\n });\r\n observer.observe(window.document, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\n\nvar isWeb = typeof window !== UNDEFINED && typeof document !== UNDEFINED;\n\nfunction cloneObject(data) {\r\n var _a;\r\n let copy;\r\n if (isPrimitive(data) ||\r\n (isWeb && (data instanceof File || isHTMLElement(data)))) {\r\n return data;\r\n }\r\n if (!['Set', 'Map', 'Object', 'Date', 'Array'].includes((_a = data.constructor) === null || _a === void 0 ? void 0 : _a.name)) {\r\n return data;\r\n }\r\n if (data instanceof Date) {\r\n copy = new Date(data.getTime());\r\n return copy;\r\n }\r\n if (data instanceof Set) {\r\n copy = new Set();\r\n for (const item of data) {\r\n copy.add(item);\r\n }\r\n return copy;\r\n }\r\n if (data instanceof Map) {\r\n copy = new Map();\r\n for (const key of data.keys()) {\r\n copy.set(key, cloneObject(data.get(key)));\r\n }\r\n return copy;\r\n }\r\n copy = Array.isArray(data) ? [] : {};\r\n for (const key in data) {\r\n copy[key] = cloneObject(data[key]);\r\n }\r\n return copy;\r\n}\n\nvar modeChecker = (mode) => ({\r\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\r\n isOnBlur: mode === VALIDATION_MODE.onBlur,\r\n isOnChange: mode === VALIDATION_MODE.onChange,\r\n isOnAll: mode === VALIDATION_MODE.all,\r\n isOnTouch: mode === VALIDATION_MODE.onTouched,\r\n});\n\nvar isRadioOrCheckboxFunction = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nconst isWindowUndefined = typeof window === UNDEFINED;\r\nconst isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== UNDEFINED;\r\nfunction useForm({ mode = VALIDATION_MODE.onSubmit, reValidateMode = VALIDATION_MODE.onChange, resolver, context, defaultValues = {}, shouldFocusError = true, shouldUnregister = true, criteriaMode, } = {}) {\r\n const fieldsRef = useRef({});\r\n const fieldArrayDefaultValuesRef = useRef({});\r\n const fieldArrayValuesRef = useRef({});\r\n const watchFieldsRef = useRef(new Set());\r\n const useWatchFieldsRef = useRef({});\r\n const useWatchRenderFunctionsRef = useRef({});\r\n const fieldsWithValidationRef = useRef({});\r\n const validFieldsRef = useRef({});\r\n const defaultValuesRef = useRef(defaultValues);\r\n const isUnMount = useRef(false);\r\n const isWatchAllRef = useRef(false);\r\n const handleChangeRef = useRef();\r\n const shallowFieldsStateRef = useRef({});\r\n const resetFieldArrayFunctionRef = useRef({});\r\n const contextRef = useRef(context);\r\n const resolverRef = useRef(resolver);\r\n const fieldArrayNamesRef = useRef(new Set());\r\n const modeRef = useRef(modeChecker(mode));\r\n const { isOnSubmit, isOnTouch } = modeRef.current;\r\n const isValidateAllFieldCriteria = criteriaMode === VALIDATION_MODE.all;\r\n const [formState, setFormState] = useState({\r\n isDirty: false,\r\n isValidating: false,\r\n dirtyFields: {},\r\n isSubmitted: false,\r\n submitCount: 0,\r\n touched: {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: !isOnSubmit,\r\n errors: {},\r\n });\r\n const readFormStateRef = useRef({\r\n isDirty: !isProxyEnabled,\r\n dirtyFields: !isProxyEnabled,\r\n touched: !isProxyEnabled || isOnTouch,\r\n isValidating: !isProxyEnabled,\r\n isSubmitting: !isProxyEnabled,\r\n isValid: !isProxyEnabled,\r\n });\r\n const formStateRef = useRef(formState);\r\n const observerRef = useRef();\r\n const { isOnBlur: isReValidateOnBlur, isOnChange: isReValidateOnChange, } = useRef(modeChecker(reValidateMode)).current;\r\n contextRef.current = context;\r\n resolverRef.current = resolver;\r\n formStateRef.current = formState;\r\n shallowFieldsStateRef.current = shouldUnregister\r\n ? {}\r\n : isEmptyObject(shallowFieldsStateRef.current)\r\n ? cloneObject(defaultValues)\r\n : shallowFieldsStateRef.current;\r\n const updateFormState = useCallback((state = {}) => {\r\n if (!isUnMount.current) {\r\n formStateRef.current = Object.assign(Object.assign({}, formStateRef.current), state);\r\n setFormState(formStateRef.current);\r\n }\r\n }, []);\r\n const updateIsValidating = () => readFormStateRef.current.isValidating &&\r\n updateFormState({\r\n isValidating: true,\r\n });\r\n const shouldRenderBaseOnError = useCallback((name, error, shouldRender = false, state = {}, isValid) => {\r\n let shouldReRender = shouldRender ||\r\n isErrorStateChanged({\r\n errors: formStateRef.current.errors,\r\n error,\r\n name,\r\n validFields: validFieldsRef.current,\r\n fieldsWithValidation: fieldsWithValidationRef.current,\r\n });\r\n const previousError = get(formStateRef.current.errors, name);\r\n if (error) {\r\n unset(validFieldsRef.current, name);\r\n shouldReRender =\r\n shouldReRender ||\r\n !previousError ||\r\n !deepEqual(previousError, error, true);\r\n set(formStateRef.current.errors, name, error);\r\n }\r\n else {\r\n if (get(fieldsWithValidationRef.current, name) || resolverRef.current) {\r\n set(validFieldsRef.current, name, true);\r\n shouldReRender = shouldReRender || previousError;\r\n }\r\n unset(formStateRef.current.errors, name);\r\n }\r\n if ((shouldReRender && !isNullOrUndefined(shouldRender)) ||\r\n !isEmptyObject(state) ||\r\n readFormStateRef.current.isValidating) {\r\n updateFormState(Object.assign(Object.assign(Object.assign({}, state), (resolverRef.current ? { isValid: !!isValid } : {})), { isValidating: false }));\r\n }\r\n }, []);\r\n const setFieldValue = useCallback((name, rawValue) => {\r\n const { ref, options } = fieldsRef.current[name];\r\n const value = isWeb && isHTMLElement(ref) && isNullOrUndefined(rawValue)\r\n ? ''\r\n : rawValue;\r\n if (isRadioInput(ref)) {\r\n (options || []).forEach(({ ref: radioRef }) => (radioRef.checked = radioRef.value === value));\r\n }\r\n else if (isFileInput(ref) && !isString(value)) {\r\n ref.files = value;\r\n }\r\n else if (isMultipleSelect(ref)) {\r\n [...ref.options].forEach((selectRef) => (selectRef.selected = value.includes(selectRef.value)));\r\n }\r\n else if (isCheckBoxInput(ref) && options) {\r\n options.length > 1\r\n ? options.forEach(({ ref: checkboxRef }) => (checkboxRef.checked = Array.isArray(value)\r\n ? !!value.find((data) => data === checkboxRef.value)\r\n : value === checkboxRef.value))\r\n : (options[0].ref.checked = !!value);\r\n }\r\n else {\r\n ref.value = value;\r\n }\r\n }, []);\r\n const isFormDirty = useCallback((name, data) => {\r\n if (readFormStateRef.current.isDirty) {\r\n const formValues = getValues();\r\n name && data && set(formValues, name, data);\r\n return !deepEqual(formValues, defaultValuesRef.current);\r\n }\r\n return false;\r\n }, []);\r\n const updateAndGetDirtyState = useCallback((name, shouldRender = true) => {\r\n if (readFormStateRef.current.isDirty ||\r\n readFormStateRef.current.dirtyFields) {\r\n const isFieldDirty = !deepEqual(get(defaultValuesRef.current, name), getFieldValue(fieldsRef, name, shallowFieldsStateRef));\r\n const isDirtyFieldExist = get(formStateRef.current.dirtyFields, name);\r\n const previousIsDirty = formStateRef.current.isDirty;\r\n isFieldDirty\r\n ? set(formStateRef.current.dirtyFields, name, true)\r\n : unset(formStateRef.current.dirtyFields, name);\r\n const state = {\r\n isDirty: isFormDirty(),\r\n dirtyFields: formStateRef.current.dirtyFields,\r\n };\r\n const isChanged = (readFormStateRef.current.isDirty &&\r\n previousIsDirty !== state.isDirty) ||\r\n (readFormStateRef.current.dirtyFields &&\r\n isDirtyFieldExist !== get(formStateRef.current.dirtyFields, name));\r\n isChanged && shouldRender && updateFormState(state);\r\n return isChanged ? state : {};\r\n }\r\n return {};\r\n }, []);\r\n const executeValidation = useCallback(async (name, skipReRender) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!fieldsRef.current[name]) {\r\n console.warn('📋 Field is missing with `name` attribute: ', name);\r\n return false;\r\n }\r\n }\r\n const error = (await validateField(fieldsRef, isValidateAllFieldCriteria, fieldsRef.current[name], shallowFieldsStateRef))[name];\r\n shouldRenderBaseOnError(name, error, skipReRender);\r\n return isUndefined(error);\r\n }, [shouldRenderBaseOnError, isValidateAllFieldCriteria]);\r\n const executeSchemaOrResolverValidation = useCallback(async (names) => {\r\n const { errors } = await resolverRef.current(getValues(), contextRef.current, isValidateAllFieldCriteria);\r\n const previousFormIsValid = formStateRef.current.isValid;\r\n if (Array.isArray(names)) {\r\n const isInputsValid = names\r\n .map((name) => {\r\n const error = get(errors, name);\r\n error\r\n ? set(formStateRef.current.errors, name, error)\r\n : unset(formStateRef.current.errors, name);\r\n return !error;\r\n })\r\n .every(Boolean);\r\n updateFormState({\r\n isValid: isEmptyObject(errors),\r\n isValidating: false,\r\n });\r\n return isInputsValid;\r\n }\r\n else {\r\n const error = get(errors, names);\r\n shouldRenderBaseOnError(names, error, previousFormIsValid !== isEmptyObject(errors), {}, isEmptyObject(errors));\r\n return !error;\r\n }\r\n }, [shouldRenderBaseOnError, isValidateAllFieldCriteria]);\r\n const trigger = useCallback(async (name) => {\r\n const fields = name || Object.keys(fieldsRef.current);\r\n updateIsValidating();\r\n if (resolverRef.current) {\r\n return executeSchemaOrResolverValidation(fields);\r\n }\r\n if (Array.isArray(fields)) {\r\n !name && (formStateRef.current.errors = {});\r\n const result = await Promise.all(fields.map(async (data) => await executeValidation(data, null)));\r\n updateFormState({\r\n isValidating: false,\r\n });\r\n return result.every(Boolean);\r\n }\r\n return await executeValidation(fields);\r\n }, [executeSchemaOrResolverValidation, executeValidation]);\r\n const setInternalValues = useCallback((name, value, { shouldDirty, shouldValidate }) => {\r\n const data = {};\r\n set(data, name, value);\r\n for (const fieldName of getPath(name, value)) {\r\n if (fieldsRef.current[fieldName]) {\r\n setFieldValue(fieldName, get(data, fieldName));\r\n shouldDirty && updateAndGetDirtyState(fieldName);\r\n shouldValidate && trigger(fieldName);\r\n }\r\n }\r\n }, [trigger, setFieldValue, updateAndGetDirtyState]);\r\n const setInternalValue = useCallback((name, value, config) => {\r\n !shouldUnregister &&\r\n !isPrimitive(value) &&\r\n set(shallowFieldsStateRef.current, name, Array.isArray(value) ? [...value] : Object.assign({}, value));\r\n if (fieldsRef.current[name]) {\r\n setFieldValue(name, value);\r\n config.shouldDirty && updateAndGetDirtyState(name);\r\n config.shouldValidate && trigger(name);\r\n }\r\n else if (!isPrimitive(value)) {\r\n setInternalValues(name, value, config);\r\n if (fieldArrayNamesRef.current.has(name)) {\r\n const parentName = getFieldArrayParentName(name) || name;\r\n set(fieldArrayDefaultValuesRef.current, name, value);\r\n resetFieldArrayFunctionRef.current[parentName]({\r\n [parentName]: get(fieldArrayDefaultValuesRef.current, parentName),\r\n });\r\n if ((readFormStateRef.current.isDirty ||\r\n readFormStateRef.current.dirtyFields) &&\r\n config.shouldDirty) {\r\n set(formStateRef.current.dirtyFields, name, setFieldArrayDirtyFields(value, get(defaultValuesRef.current, name, []), get(formStateRef.current.dirtyFields, name, [])));\r\n updateFormState({\r\n isDirty: !deepEqual(Object.assign(Object.assign({}, getValues()), { [name]: value }), defaultValuesRef.current),\r\n });\r\n }\r\n }\r\n }\r\n !shouldUnregister && set(shallowFieldsStateRef.current, name, value);\r\n }, [updateAndGetDirtyState, setFieldValue, setInternalValues]);\r\n const isFieldWatched = (name) => isWatchAllRef.current ||\r\n watchFieldsRef.current.has(name) ||\r\n watchFieldsRef.current.has((name.match(/\\w+/) || [])[0]);\r\n const renderWatchedInputs = (name) => {\r\n let found = true;\r\n if (!isEmptyObject(useWatchFieldsRef.current)) {\r\n for (const key in useWatchFieldsRef.current) {\r\n if (!name ||\r\n !useWatchFieldsRef.current[key].size ||\r\n useWatchFieldsRef.current[key].has(name) ||\r\n useWatchFieldsRef.current[key].has(getFieldArrayParentName(name))) {\r\n useWatchRenderFunctionsRef.current[key]();\r\n found = false;\r\n }\r\n }\r\n }\r\n return found;\r\n };\r\n function setValue(name, value, config) {\r\n setInternalValue(name, value, config || {});\r\n isFieldWatched(name) && updateFormState();\r\n renderWatchedInputs(name);\r\n }\r\n handleChangeRef.current = handleChangeRef.current\r\n ? handleChangeRef.current\r\n : async ({ type, target }) => {\r\n let name = target.name;\r\n const field = fieldsRef.current[name];\r\n let error;\r\n let isValid;\r\n if (field) {\r\n const isBlurEvent = type === EVENTS.BLUR;\r\n const shouldSkipValidation = skipValidation(Object.assign({ isBlurEvent,\r\n isReValidateOnChange,\r\n isReValidateOnBlur, isTouched: !!get(formStateRef.current.touched, name), isSubmitted: formStateRef.current.isSubmitted }, modeRef.current));\r\n let state = updateAndGetDirtyState(name, false);\r\n let shouldRender = !isEmptyObject(state) ||\r\n (!isBlurEvent && isFieldWatched(name));\r\n if (isBlurEvent &&\r\n !get(formStateRef.current.touched, name) &&\r\n readFormStateRef.current.touched) {\r\n set(formStateRef.current.touched, name, true);\r\n state = Object.assign(Object.assign({}, state), { touched: formStateRef.current.touched });\r\n }\r\n if (!shouldUnregister && isCheckBoxInput(target)) {\r\n set(shallowFieldsStateRef.current, name, getFieldValue(fieldsRef, name));\r\n }\r\n if (shouldSkipValidation) {\r\n !isBlurEvent && renderWatchedInputs(name);\r\n return ((!isEmptyObject(state) ||\r\n (shouldRender && isEmptyObject(state))) &&\r\n updateFormState(state));\r\n }\r\n updateIsValidating();\r\n if (resolverRef.current) {\r\n const { errors } = await resolverRef.current(getValues(), contextRef.current, isValidateAllFieldCriteria);\r\n const previousFormIsValid = formStateRef.current.isValid;\r\n error = get(errors, name);\r\n if (isCheckBoxInput(target) &&\r\n !error &&\r\n resolverRef.current) {\r\n const parentNodeName = getFieldArrayParentName(name);\r\n const currentError = get(errors, parentNodeName, {});\r\n currentError.type &&\r\n currentError.message &&\r\n (error = currentError);\r\n if (parentNodeName &&\r\n (currentError ||\r\n get(formStateRef.current.errors, parentNodeName))) {\r\n name = parentNodeName;\r\n }\r\n }\r\n isValid = isEmptyObject(errors);\r\n previousFormIsValid !== isValid && (shouldRender = true);\r\n }\r\n else {\r\n error = (await validateField(fieldsRef, isValidateAllFieldCriteria, field, shallowFieldsStateRef))[name];\r\n }\r\n !isBlurEvent && renderWatchedInputs(name);\r\n shouldRenderBaseOnError(name, error, shouldRender, state, isValid);\r\n }\r\n };\r\n function setFieldArrayDefaultValues(data) {\r\n if (!shouldUnregister) {\r\n let copy = cloneObject(data);\r\n for (const value of fieldArrayNamesRef.current) {\r\n if (isKey(value) && !copy[value]) {\r\n copy = Object.assign(Object.assign({}, copy), { [value]: [] });\r\n }\r\n }\r\n return copy;\r\n }\r\n return data;\r\n }\r\n function getValues(payload) {\r\n if (isString(payload)) {\r\n return getFieldValue(fieldsRef, payload, shallowFieldsStateRef);\r\n }\r\n if (Array.isArray(payload)) {\r\n const data = {};\r\n for (const name of payload) {\r\n set(data, name, getFieldValue(fieldsRef, name, shallowFieldsStateRef));\r\n }\r\n return data;\r\n }\r\n return setFieldArrayDefaultValues(getFieldsValues(fieldsRef, cloneObject(shallowFieldsStateRef.current), shouldUnregister));\r\n }\r\n const validateResolver = useCallback(async (values = {}) => {\r\n const newDefaultValues = isEmptyObject(fieldsRef.current)\r\n ? defaultValuesRef.current\r\n : {};\r\n const { errors } = (await resolverRef.current(Object.assign(Object.assign(Object.assign({}, newDefaultValues), getValues()), values), contextRef.current, isValidateAllFieldCriteria)) || {};\r\n const isValid = isEmptyObject(errors);\r\n formStateRef.current.isValid !== isValid &&\r\n updateFormState({\r\n isValid,\r\n });\r\n }, [isValidateAllFieldCriteria]);\r\n const removeFieldEventListener = useCallback((field, forceDelete) => {\r\n findRemovedFieldAndRemoveListener(fieldsRef, handleChangeRef.current, field, shallowFieldsStateRef, shouldUnregister, forceDelete);\r\n if (shouldUnregister) {\r\n unset(validFieldsRef.current, field.ref.name);\r\n unset(fieldsWithValidationRef.current, field.ref.name);\r\n }\r\n }, [shouldUnregister]);\r\n const updateWatchedValue = useCallback((name) => {\r\n if (isWatchAllRef.current) {\r\n updateFormState();\r\n }\r\n else {\r\n for (const watchField of watchFieldsRef.current) {\r\n if (watchField.startsWith(name)) {\r\n updateFormState();\r\n break;\r\n }\r\n }\r\n renderWatchedInputs(name);\r\n }\r\n }, []);\r\n const removeFieldEventListenerAndRef = useCallback((field, forceDelete) => {\r\n if (field) {\r\n removeFieldEventListener(field, forceDelete);\r\n if (shouldUnregister && !compact(field.options || []).length) {\r\n unset(formStateRef.current.errors, field.ref.name);\r\n set(formStateRef.current.dirtyFields, field.ref.name, true);\r\n updateFormState({\r\n isDirty: isFormDirty(),\r\n });\r\n readFormStateRef.current.isValid &&\r\n resolverRef.current &&\r\n validateResolver();\r\n updateWatchedValue(field.ref.name);\r\n }\r\n }\r\n }, [validateResolver, removeFieldEventListener]);\r\n function clearErrors(name) {\r\n name &&\r\n (Array.isArray(name) ? name : [name]).forEach((inputName) => fieldsRef.current[inputName] && isKey(inputName)\r\n ? delete formStateRef.current.errors[inputName]\r\n : unset(formStateRef.current.errors, inputName));\r\n updateFormState({\r\n errors: name ? formStateRef.current.errors : {},\r\n });\r\n }\r\n function setError(name, error) {\r\n const ref = (fieldsRef.current[name] || {}).ref;\r\n set(formStateRef.current.errors, name, Object.assign(Object.assign({}, error), { ref }));\r\n updateFormState({\r\n isValid: false,\r\n });\r\n error.shouldFocus && ref && ref.focus && ref.focus();\r\n }\r\n const watchInternal = useCallback((fieldNames, defaultValue, watchId) => {\r\n const watchFields = watchId\r\n ? useWatchFieldsRef.current[watchId]\r\n : watchFieldsRef.current;\r\n let fieldValues = getFieldsValues(fieldsRef, cloneObject(shallowFieldsStateRef.current), shouldUnregister, false, fieldNames);\r\n if (isString(fieldNames)) {\r\n const parentNodeName = getFieldArrayParentName(fieldNames) || fieldNames;\r\n if (fieldArrayNamesRef.current.has(parentNodeName)) {\r\n fieldValues = Object.assign(Object.assign({}, fieldArrayValuesRef.current), fieldValues);\r\n }\r\n return assignWatchFields(fieldValues, fieldNames, watchFields, isUndefined(get(defaultValuesRef.current, fieldNames))\r\n ? defaultValue\r\n : get(defaultValuesRef.current, fieldNames), true);\r\n }\r\n const combinedDefaultValues = isUndefined(defaultValue)\r\n ? defaultValuesRef.current\r\n : defaultValue;\r\n if (Array.isArray(fieldNames)) {\r\n return fieldNames.reduce((previous, name) => (Object.assign(Object.assign({}, previous), { [name]: assignWatchFields(fieldValues, name, watchFields, combinedDefaultValues) })), {});\r\n }\r\n isWatchAllRef.current = isUndefined(watchId);\r\n return transformToNestObject((!isEmptyObject(fieldValues) && fieldValues) ||\r\n combinedDefaultValues);\r\n }, []);\r\n function watch(fieldNames, defaultValue) {\r\n return watchInternal(fieldNames, defaultValue);\r\n }\r\n function unregister(name) {\r\n for (const fieldName of Array.isArray(name) ? name : [name]) {\r\n removeFieldEventListenerAndRef(fieldsRef.current[fieldName], true);\r\n }\r\n }\r\n function registerFieldRef(ref, options = {}) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!ref.name) {\r\n return console.warn('📋 Field is missing `name` attribute', ref, `https://react-hook-form.com/api#useForm`);\r\n }\r\n if (fieldArrayNamesRef.current.has(ref.name.split(/\\[\\d+\\]$/)[0]) &&\r\n !RegExp(`^${ref.name.split(/\\[\\d+\\]$/)[0]}[\\\\d+].\\\\w+`\r\n .replace(/\\[/g, '\\\\[')\r\n .replace(/\\]/g, '\\\\]')).test(ref.name)) {\r\n return console.warn('📋 `name` prop should be in object shape: name=\"test[index].name\"', ref, 'https://react-hook-form.com/api#useFieldArray');\r\n }\r\n }\r\n const { name, type, value } = ref;\r\n const fieldRefAndValidationOptions = Object.assign({ ref }, options);\r\n const fields = fieldsRef.current;\r\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\r\n const isFieldArray = isNameInFieldArray(fieldArrayNamesRef.current, name);\r\n const compareRef = (currentRef) => isWeb && (!isHTMLElement(ref) || currentRef === ref);\r\n let field = fields[name];\r\n let isEmptyDefaultValue = true;\r\n let defaultValue;\r\n if (field &&\r\n (isRadioOrCheckbox\r\n ? Array.isArray(field.options) &&\r\n compact(field.options).find((option) => {\r\n return value === option.ref.value && compareRef(option.ref);\r\n })\r\n : compareRef(field.ref))) {\r\n fields[name] = Object.assign(Object.assign({}, field), options);\r\n return;\r\n }\r\n if (type) {\r\n field = isRadioOrCheckbox\r\n ? Object.assign({ options: [\r\n ...compact((field && field.options) || []),\r\n {\r\n ref,\r\n },\r\n ], ref: { type, name } }, options) : Object.assign({}, fieldRefAndValidationOptions);\r\n }\r\n else {\r\n field = fieldRefAndValidationOptions;\r\n }\r\n fields[name] = field;\r\n const isEmptyUnmountFields = isUndefined(get(shallowFieldsStateRef.current, name));\r\n if (!isEmptyObject(defaultValuesRef.current) || !isEmptyUnmountFields) {\r\n defaultValue = get(isEmptyUnmountFields\r\n ? defaultValuesRef.current\r\n : shallowFieldsStateRef.current, name);\r\n isEmptyDefaultValue = isUndefined(defaultValue);\r\n if (!isEmptyDefaultValue && !isFieldArray) {\r\n setFieldValue(name, defaultValue);\r\n }\r\n }\r\n if (!isEmptyObject(options)) {\r\n set(fieldsWithValidationRef.current, name, true);\r\n if (!isOnSubmit && readFormStateRef.current.isValid) {\r\n validateField(fieldsRef, isValidateAllFieldCriteria, field, shallowFieldsStateRef).then((error) => {\r\n const previousFormIsValid = formStateRef.current.isValid;\r\n isEmptyObject(error)\r\n ? set(validFieldsRef.current, name, true)\r\n : unset(validFieldsRef.current, name);\r\n previousFormIsValid !== isEmptyObject(error) && updateFormState();\r\n });\r\n }\r\n }\r\n if (shouldUnregister && !(isFieldArray && isEmptyDefaultValue)) {\r\n !isFieldArray && unset(formStateRef.current.dirtyFields, name);\r\n }\r\n if (type) {\r\n attachEventListeners(isRadioOrCheckbox && field.options\r\n ? field.options[field.options.length - 1]\r\n : field, isRadioOrCheckbox || isSelectInput(ref), handleChangeRef.current);\r\n }\r\n }\r\n function register(refOrRegisterOptions, options) {\r\n if (!isWindowUndefined) {\r\n if (isString(refOrRegisterOptions)) {\r\n registerFieldRef({ name: refOrRegisterOptions }, options);\r\n }\r\n else if (isObject(refOrRegisterOptions) &&\r\n 'name' in refOrRegisterOptions) {\r\n registerFieldRef(refOrRegisterOptions, options);\r\n }\r\n else {\r\n return (ref) => ref && registerFieldRef(ref, refOrRegisterOptions);\r\n }\r\n }\r\n }\r\n const handleSubmit = useCallback((onValid, onInvalid) => async (e) => {\r\n if (e && e.preventDefault) {\r\n e.preventDefault();\r\n e.persist();\r\n }\r\n let fieldErrors = {};\r\n let fieldValues = setFieldArrayDefaultValues(getFieldsValues(fieldsRef, cloneObject(shallowFieldsStateRef.current), shouldUnregister, true));\r\n readFormStateRef.current.isSubmitting &&\r\n updateFormState({\r\n isSubmitting: true,\r\n });\r\n try {\r\n if (resolverRef.current) {\r\n const { errors, values } = await resolverRef.current(fieldValues, contextRef.current, isValidateAllFieldCriteria);\r\n formStateRef.current.errors = fieldErrors = errors;\r\n fieldValues = values;\r\n }\r\n else {\r\n for (const field of Object.values(fieldsRef.current)) {\r\n if (field) {\r\n const { name } = field.ref;\r\n const fieldError = await validateField(fieldsRef, isValidateAllFieldCriteria, field, shallowFieldsStateRef);\r\n if (fieldError[name]) {\r\n set(fieldErrors, name, fieldError[name]);\r\n unset(validFieldsRef.current, name);\r\n }\r\n else if (get(fieldsWithValidationRef.current, name)) {\r\n unset(formStateRef.current.errors, name);\r\n set(validFieldsRef.current, name, true);\r\n }\r\n }\r\n }\r\n }\r\n if (isEmptyObject(fieldErrors) &&\r\n Object.keys(formStateRef.current.errors).every((name) => name in fieldsRef.current)) {\r\n updateFormState({\r\n errors: {},\r\n isSubmitting: true,\r\n });\r\n await onValid(fieldValues, e);\r\n }\r\n else {\r\n formStateRef.current.errors = Object.assign(Object.assign({}, formStateRef.current.errors), fieldErrors);\r\n onInvalid && (await onInvalid(formStateRef.current.errors, e));\r\n shouldFocusError &&\r\n focusOnErrorField(fieldsRef.current, formStateRef.current.errors);\r\n }\r\n }\r\n finally {\r\n formStateRef.current.isSubmitting = false;\r\n updateFormState({\r\n isSubmitted: true,\r\n isSubmitting: false,\r\n isSubmitSuccessful: isEmptyObject(formStateRef.current.errors),\r\n submitCount: formStateRef.current.submitCount + 1,\r\n });\r\n }\r\n }, [shouldFocusError, isValidateAllFieldCriteria]);\r\n const resetRefs = ({ errors, isDirty, isSubmitted, touched, isValid, submitCount, dirtyFields, }) => {\r\n if (!isValid) {\r\n validFieldsRef.current = {};\r\n fieldsWithValidationRef.current = {};\r\n }\r\n fieldArrayDefaultValuesRef.current = {};\r\n watchFieldsRef.current = new Set();\r\n isWatchAllRef.current = false;\r\n updateFormState({\r\n submitCount: submitCount ? formStateRef.current.submitCount : 0,\r\n isDirty: isDirty ? formStateRef.current.isDirty : false,\r\n isSubmitted: isSubmitted ? formStateRef.current.isSubmitted : false,\r\n isValid: isValid ? formStateRef.current.isValid : false,\r\n dirtyFields: dirtyFields ? formStateRef.current.dirtyFields : {},\r\n touched: touched ? formStateRef.current.touched : {},\r\n errors: errors ? formStateRef.current.errors : {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n });\r\n };\r\n const reset = (values, omitResetState = {}) => {\r\n if (isWeb) {\r\n for (const field of Object.values(fieldsRef.current)) {\r\n if (field) {\r\n const { ref, options } = field;\r\n const inputRef = isRadioOrCheckboxFunction(ref) && Array.isArray(options)\r\n ? options[0].ref\r\n : ref;\r\n if (isHTMLElement(inputRef)) {\r\n try {\r\n inputRef.closest('form').reset();\r\n break;\r\n }\r\n catch (_a) { }\r\n }\r\n }\r\n }\r\n }\r\n fieldsRef.current = {};\r\n defaultValuesRef.current = Object.assign({}, (values || defaultValuesRef.current));\r\n values && renderWatchedInputs('');\r\n Object.values(resetFieldArrayFunctionRef.current).forEach((resetFieldArray) => isFunction(resetFieldArray) && resetFieldArray());\r\n shallowFieldsStateRef.current = shouldUnregister\r\n ? {}\r\n : cloneObject(values || defaultValuesRef.current);\r\n resetRefs(omitResetState);\r\n };\r\n useEffect(() => {\r\n resolver && readFormStateRef.current.isValid && validateResolver();\r\n observerRef.current =\r\n observerRef.current || !isWeb\r\n ? observerRef.current\r\n : onDomRemove(fieldsRef, removeFieldEventListenerAndRef);\r\n }, [removeFieldEventListenerAndRef, defaultValuesRef.current]);\r\n useEffect(() => () => {\r\n observerRef.current && observerRef.current.disconnect();\r\n isUnMount.current = true;\r\n if (process.env.NODE_ENV !== 'production') {\r\n return;\r\n }\r\n Object.values(fieldsRef.current).forEach((field) => removeFieldEventListenerAndRef(field, true));\r\n }, []);\r\n if (!resolver && readFormStateRef.current.isValid) {\r\n formState.isValid =\r\n deepEqual(validFieldsRef.current, fieldsWithValidationRef.current) &&\r\n isEmptyObject(formStateRef.current.errors);\r\n }\r\n const commonProps = {\r\n trigger,\r\n setValue: useCallback(setValue, [setInternalValue, trigger]),\r\n getValues: useCallback(getValues, []),\r\n register: useCallback(register, [defaultValuesRef.current]),\r\n unregister: useCallback(unregister, []),\r\n formState: isProxyEnabled\r\n ? new Proxy(formState, {\r\n get: (obj, prop) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (prop === 'isValid' && isOnSubmit) {\r\n console.warn('📋 `formState.isValid` is applicable with `onTouched`, `onChange` or `onBlur` mode. https://react-hook-form.com/api#formState');\r\n }\r\n }\r\n if (prop in obj) {\r\n readFormStateRef.current[prop] = true;\r\n return obj[prop];\r\n }\r\n return undefined;\r\n },\r\n })\r\n : formState,\r\n };\r\n const control = useMemo(() => (Object.assign({ isFormDirty,\r\n updateWatchedValue,\r\n shouldUnregister,\r\n updateFormState,\r\n removeFieldEventListener,\r\n watchInternal, mode: modeRef.current, reValidateMode: {\r\n isReValidateOnBlur,\r\n isReValidateOnChange,\r\n }, validateResolver: resolver ? validateResolver : undefined, fieldsRef,\r\n resetFieldArrayFunctionRef,\r\n useWatchFieldsRef,\r\n useWatchRenderFunctionsRef,\r\n fieldArrayDefaultValuesRef,\r\n validFieldsRef,\r\n fieldsWithValidationRef,\r\n fieldArrayNamesRef,\r\n readFormStateRef,\r\n formStateRef,\r\n defaultValuesRef,\r\n shallowFieldsStateRef,\r\n fieldArrayValuesRef }, commonProps)), [\r\n defaultValuesRef.current,\r\n updateWatchedValue,\r\n shouldUnregister,\r\n removeFieldEventListener,\r\n watchInternal,\r\n ]);\r\n return Object.assign({ watch,\r\n control,\r\n handleSubmit, reset: useCallback(reset, []), clearErrors: useCallback(clearErrors, []), setError: useCallback(setError, []), errors: formState.errors }, commonProps);\r\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nconst FormContext = createContext(null);\r\nFormContext.displayName = 'RHFContext';\r\nconst useFormContext = () => useContext(FormContext);\r\nconst FormProvider = (_a) => {\r\n var { children } = _a, props = __rest(_a, [\"children\"]);\r\n return (createElement(FormContext.Provider, { value: Object.assign({}, props) }, children));\r\n};\n\nvar generateId = () => {\r\n const d = typeof performance === UNDEFINED ? Date.now() : performance.now() * 1000;\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16 + d) % 16 | 0;\r\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\r\n });\r\n};\n\nfunction removeAtIndexes(data, indexes) {\r\n let i = 0;\r\n const temp = [...data];\r\n for (const index of indexes) {\r\n temp.splice(index - i, 1);\r\n i++;\r\n }\r\n return compact(temp).length ? temp : [];\r\n}\r\nvar removeArrayAt = (data, index) => isUndefined(index)\r\n ? []\r\n : removeAtIndexes(data, (Array.isArray(index) ? index : [index]).sort((a, b) => a - b));\n\nvar moveArrayAt = (data, from, to) => {\r\n if (Array.isArray(data)) {\r\n if (isUndefined(data[to])) {\r\n data[to] = undefined;\r\n }\r\n data.splice(to, 0, data.splice(from, 1)[0]);\r\n return data;\r\n }\r\n return [];\r\n};\n\nvar swapArrayAt = (data, indexA, indexB) => {\r\n const temp = [data[indexB], data[indexA]];\r\n data[indexA] = temp[0];\r\n data[indexB] = temp[1];\r\n};\n\nfunction prepend(data, value) {\r\n return [...(Array.isArray(value) ? value : [value || undefined]), ...data];\r\n}\n\nfunction insert(data, index, value) {\r\n return [\r\n ...data.slice(0, index),\r\n ...(Array.isArray(value) ? value : [value || undefined]),\r\n ...data.slice(index),\r\n ];\r\n}\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? Array(value.length).fill(undefined) : undefined;\n\nvar fillBooleanArray = (value) => (Array.isArray(value) ? value : [value]).map((data) => {\r\n if (isObject(data)) {\r\n const object = {};\r\n for (const key in data) {\r\n object[key] = true;\r\n }\r\n return object;\r\n }\r\n return true;\r\n});\n\nconst mapIds = (values = [], keyName, skipWarn) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!skipWarn) {\r\n for (const value of values) {\r\n if (typeof value === 'object') {\r\n if (keyName in value) {\r\n console.warn(`📋 useFieldArray fieldValues contain the keyName \\`${keyName}\\` which is reserved for use by useFieldArray. https://react-hook-form.com/api#useFieldArray`);\r\n break;\r\n }\r\n }\r\n else {\r\n console.warn(`📋 useFieldArray input's name should be in object shape instead of flat array. https://react-hook-form.com/api#useFieldArray`);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return values.map((value) => (Object.assign({ [keyName]: value[keyName] || generateId() }, value)));\r\n};\r\nconst useFieldArray = ({ control, name, keyName = 'id', }) => {\r\n const methods = useFormContext();\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!control && !methods) {\r\n throw new Error('📋 useFieldArray is missing `control` prop. https://react-hook-form.com/api#useFieldArray');\r\n }\r\n }\r\n const focusIndexRef = useRef(-1);\r\n const isUnMount = useRef(false);\r\n const { isFormDirty, updateWatchedValue, resetFieldArrayFunctionRef, fieldArrayNamesRef, fieldsRef, defaultValuesRef, removeFieldEventListener, formStateRef, shallowFieldsStateRef, updateFormState, readFormStateRef, validFieldsRef, fieldsWithValidationRef, fieldArrayDefaultValuesRef, validateResolver, getValues, shouldUnregister, fieldArrayValuesRef, } = control || methods.control;\r\n const getDefaultValues = (values) => get(shouldUnregister ? values : shallowFieldsStateRef.current, name, []);\r\n const fieldArrayParentName = getFieldArrayParentName(name);\r\n const memoizedDefaultValues = useRef([\r\n ...(get(fieldArrayDefaultValuesRef.current, fieldArrayParentName)\r\n ? getDefaultValues(fieldArrayDefaultValuesRef.current)\r\n : getDefaultValues(defaultValuesRef.current)),\r\n ]);\r\n const [fields, setFields] = useState(mapIds(memoizedDefaultValues.current, keyName));\r\n set(fieldArrayValuesRef.current, name, compact(fields));\r\n const omitKey = (fields) => fields.map((_a = {}) => {\r\n var _b = keyName, omitted = _a[_b], rest = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\r\n return rest;\r\n });\r\n fieldArrayNamesRef.current.add(name);\r\n const getFieldArrayValue = useCallback(() => get(fieldArrayValuesRef.current, name, []), [name]);\r\n const getCurrentFieldsValues = () => mapIds(get(getValues(), name, getFieldArrayValue()).map((item, index) => (Object.assign(Object.assign({}, getFieldArrayValue()[index]), item))), keyName, true);\r\n fieldArrayNamesRef.current.add(name);\r\n if (fieldArrayParentName &&\r\n !get(fieldArrayDefaultValuesRef.current, fieldArrayParentName)) {\r\n set(fieldArrayDefaultValuesRef.current, fieldArrayParentName, cloneObject(get(defaultValuesRef.current, fieldArrayParentName)));\r\n }\r\n const setFieldAndValidState = (fieldsValues) => {\r\n setFields(fieldsValues);\r\n set(fieldArrayValuesRef.current, name, fieldsValues);\r\n if (readFormStateRef.current.isValid && validateResolver) {\r\n const values = getValues();\r\n set(values, name, fieldsValues);\r\n validateResolver(values);\r\n }\r\n };\r\n const resetFields = () => {\r\n for (const key in fieldsRef.current) {\r\n if (isMatchFieldArrayName(key, name)) {\r\n removeFieldEventListener(fieldsRef.current[key], true);\r\n delete fieldsRef.current[key];\r\n }\r\n }\r\n };\r\n const cleanup = (ref) => !compact(get(ref, name, [])).length && unset(ref, name);\r\n const updateDirtyFieldsWithDefaultValues = (updatedFieldArrayValues) => {\r\n if (updatedFieldArrayValues) {\r\n set(formStateRef.current.dirtyFields, name, setFieldArrayDirtyFields(omitKey(updatedFieldArrayValues), get(defaultValuesRef.current, name, []), get(formStateRef.current.dirtyFields, name, [])));\r\n }\r\n };\r\n const batchStateUpdate = (method, args, updatedFieldValues, updatedFormValues = [], shouldSet = true, shouldUpdateValid = false) => {\r\n if (get(shallowFieldsStateRef.current, name)) {\r\n const output = method(get(shallowFieldsStateRef.current, name), args.argA, args.argB);\r\n shouldSet && set(shallowFieldsStateRef.current, name, output);\r\n }\r\n if (get(fieldArrayDefaultValuesRef.current, name)) {\r\n const output = method(get(fieldArrayDefaultValuesRef.current, name), args.argA, args.argB);\r\n shouldSet && set(fieldArrayDefaultValuesRef.current, name, output);\r\n }\r\n if (Array.isArray(get(formStateRef.current.errors, name))) {\r\n const output = method(get(formStateRef.current.errors, name), args.argA, args.argB);\r\n shouldSet && set(formStateRef.current.errors, name, output);\r\n cleanup(formStateRef.current.errors);\r\n }\r\n if (readFormStateRef.current.touched &&\r\n get(formStateRef.current.touched, name)) {\r\n const output = method(get(formStateRef.current.touched, name), args.argA, args.argB);\r\n shouldSet && set(formStateRef.current.touched, name, output);\r\n cleanup(formStateRef.current.touched);\r\n }\r\n if (readFormStateRef.current.dirtyFields ||\r\n readFormStateRef.current.isDirty) {\r\n set(formStateRef.current.dirtyFields, name, setFieldArrayDirtyFields(omitKey(updatedFormValues), get(defaultValuesRef.current, name, []), get(formStateRef.current.dirtyFields, name, [])));\r\n updateDirtyFieldsWithDefaultValues(updatedFieldValues);\r\n cleanup(formStateRef.current.dirtyFields);\r\n }\r\n if (shouldUpdateValid &&\r\n readFormStateRef.current.isValid &&\r\n !validateResolver) {\r\n set(validFieldsRef.current, name, method(get(validFieldsRef.current, name, []), args.argA));\r\n cleanup(validFieldsRef.current);\r\n set(fieldsWithValidationRef.current, name, method(get(fieldsWithValidationRef.current, name, []), args.argA));\r\n cleanup(fieldsWithValidationRef.current);\r\n }\r\n if (!isUnMount.current && readFormStateRef.current.isDirty) {\r\n updateFormState({\r\n isDirty: isFormDirty(name, omitKey(updatedFormValues)),\r\n });\r\n }\r\n };\r\n const append = (value, shouldFocus = true) => {\r\n const appendValue = Array.isArray(value) ? value : [value];\r\n const updateFormValues = [\r\n ...getCurrentFieldsValues(),\r\n ...mapIds(appendValue, keyName),\r\n ];\r\n setFieldAndValidState(updateFormValues);\r\n if (readFormStateRef.current.dirtyFields ||\r\n readFormStateRef.current.isDirty) {\r\n updateDirtyFieldsWithDefaultValues(updateFormValues);\r\n updateFormState({\r\n isDirty: true,\r\n dirtyFields: formStateRef.current.dirtyFields,\r\n });\r\n }\r\n !shouldUnregister &&\r\n set(shallowFieldsStateRef.current, name, [\r\n ...(get(shallowFieldsStateRef.current, name) || []),\r\n ...cloneObject(appendValue),\r\n ]);\r\n focusIndexRef.current = shouldFocus\r\n ? get(fieldArrayValuesRef.current, name).length - 1\r\n : -1;\r\n };\r\n const prepend$1 = (value, shouldFocus = true) => {\r\n const emptyArray = fillEmptyArray(value);\r\n const updatedFieldArrayValues = prepend(getCurrentFieldsValues(), mapIds(Array.isArray(value) ? value : [value], keyName));\r\n setFieldAndValidState(updatedFieldArrayValues);\r\n resetFields();\r\n batchStateUpdate(prepend, {\r\n argA: emptyArray,\r\n argC: fillBooleanArray(value),\r\n }, updatedFieldArrayValues);\r\n focusIndexRef.current = shouldFocus ? 0 : -1;\r\n };\r\n const remove = (index) => {\r\n const fieldValues = getCurrentFieldsValues();\r\n const updatedFieldValues = removeArrayAt(fieldValues, index);\r\n setFieldAndValidState(updatedFieldValues);\r\n resetFields();\r\n batchStateUpdate(removeArrayAt, {\r\n argA: index,\r\n argC: index,\r\n }, updatedFieldValues, removeArrayAt(fieldValues, index), true, true);\r\n };\r\n const insert$1 = (index, value, shouldFocus = true) => {\r\n const emptyArray = fillEmptyArray(value);\r\n const fieldValues = getCurrentFieldsValues();\r\n const updatedFieldArrayValues = insert(fieldValues, index, mapIds(Array.isArray(value) ? value : [value], keyName));\r\n setFieldAndValidState(updatedFieldArrayValues);\r\n resetFields();\r\n batchStateUpdate(insert, {\r\n argA: index,\r\n argB: emptyArray,\r\n argC: index,\r\n argD: fillBooleanArray(value),\r\n }, updatedFieldArrayValues, insert(fieldValues, index));\r\n focusIndexRef.current = shouldFocus ? index : -1;\r\n };\r\n const swap = (indexA, indexB) => {\r\n const fieldValues = getCurrentFieldsValues();\r\n swapArrayAt(fieldValues, indexA, indexB);\r\n resetFields();\r\n setFieldAndValidState([...fieldValues]);\r\n batchStateUpdate(swapArrayAt, {\r\n argA: indexA,\r\n argB: indexB,\r\n argC: indexA,\r\n argD: indexB,\r\n }, undefined, fieldValues, false);\r\n };\r\n const move = (from, to) => {\r\n const fieldValues = getCurrentFieldsValues();\r\n moveArrayAt(fieldValues, from, to);\r\n resetFields();\r\n setFieldAndValidState([...fieldValues]);\r\n batchStateUpdate(moveArrayAt, {\r\n argA: from,\r\n argB: to,\r\n argC: from,\r\n argD: to,\r\n }, undefined, fieldValues, false);\r\n };\r\n useEffect(() => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!name) {\r\n console.warn('📋 useFieldArray is missing `name` attribute. https://react-hook-form.com/api#useFieldArray');\r\n }\r\n }\r\n const defaultValues = get(fieldArrayDefaultValuesRef.current, name);\r\n if (defaultValues && fields.length < defaultValues.length) {\r\n set(fieldArrayDefaultValuesRef.current, name, defaultValues.slice(1));\r\n }\r\n updateWatchedValue(name);\r\n if (focusIndexRef.current > -1) {\r\n for (const key in fieldsRef.current) {\r\n const field = fieldsRef.current[key];\r\n if (key.startsWith(`${name}[${focusIndexRef.current}]`) &&\r\n field.ref.focus) {\r\n field.ref.focus();\r\n break;\r\n }\r\n }\r\n }\r\n focusIndexRef.current = -1;\r\n }, [fields, name]);\r\n useEffect(() => {\r\n const resetFunctions = resetFieldArrayFunctionRef.current;\r\n const fieldArrayNames = fieldArrayNamesRef.current;\r\n if (!getFieldArrayParentName(name)) {\r\n resetFunctions[name] = (data) => {\r\n resetFields();\r\n !data && unset(fieldArrayDefaultValuesRef.current, name);\r\n unset(shallowFieldsStateRef.current, name);\r\n memoizedDefaultValues.current = get(data || defaultValuesRef.current, name);\r\n if (!isUnMount.current) {\r\n setFields(mapIds(memoizedDefaultValues.current, keyName));\r\n }\r\n };\r\n }\r\n return () => {\r\n isUnMount.current = true;\r\n shouldUnregister && remove();\r\n resetFields();\r\n delete resetFunctions[name];\r\n unset(fieldArrayValuesRef.current, name);\r\n fieldArrayNames.delete(name);\r\n };\r\n }, []);\r\n return {\r\n swap: useCallback(swap, [name]),\r\n move: useCallback(move, [name]),\r\n prepend: useCallback(prepend$1, [name]),\r\n append: useCallback(append, [name]),\r\n remove: useCallback(remove, [name]),\r\n insert: useCallback(insert$1, [name]),\r\n fields: compact(fields),\r\n };\r\n};\n\nvar getInputValue = (event) => isPrimitive(event) ||\r\n !isObject(event.target) ||\r\n (isObject(event.target) && !event.type)\r\n ? event\r\n : isUndefined(event.target.value)\r\n ? event.target.checked\r\n : event.target.value;\n\nfunction useController({ name, rules, defaultValue, control, onFocus, }) {\r\n const methods = useFormContext();\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!control && !methods) {\r\n throw new Error('📋 Controller is missing `control` prop. https://react-hook-form.com/api#Controller');\r\n }\r\n }\r\n const { defaultValuesRef, setValue, register, unregister, trigger, mode, reValidateMode: { isReValidateOnBlur, isReValidateOnChange }, formState, formStateRef: { current: { isSubmitted, touched, errors }, }, updateFormState, readFormStateRef, fieldsRef, fieldArrayNamesRef, shallowFieldsStateRef, } = control || methods.control;\r\n const isNotFieldArray = !isNameInFieldArray(fieldArrayNamesRef.current, name);\r\n const getInitialValue = () => !isUndefined(get(shallowFieldsStateRef.current, name)) && isNotFieldArray\r\n ? get(shallowFieldsStateRef.current, name)\r\n : isUndefined(defaultValue)\r\n ? get(defaultValuesRef.current, name)\r\n : defaultValue;\r\n const [value, setInputStateValue] = useState(getInitialValue());\r\n const valueRef = useRef(value);\r\n const ref = useRef({\r\n focus: () => null,\r\n });\r\n const onFocusRef = useRef(onFocus ||\r\n (() => {\r\n if (isFunction(ref.current.focus)) {\r\n ref.current.focus();\r\n }\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!isFunction(ref.current.focus)) {\r\n console.warn(`📋 'ref' from Controller render prop must be attached to a React component or a DOM Element whose ref provides a 'focus()' method`);\r\n }\r\n }\r\n }));\r\n const shouldValidate = useCallback((isBlurEvent) => !skipValidation(Object.assign({ isBlurEvent,\r\n isReValidateOnBlur,\r\n isReValidateOnChange,\r\n isSubmitted, isTouched: !!get(touched, name) }, mode)), [\r\n isReValidateOnBlur,\r\n isReValidateOnChange,\r\n isSubmitted,\r\n touched,\r\n name,\r\n mode,\r\n ]);\r\n const commonTask = useCallback(([event]) => {\r\n const data = getInputValue(event);\r\n setInputStateValue(data);\r\n valueRef.current = data;\r\n return data;\r\n }, []);\r\n const registerField = useCallback((shouldUpdateValue) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!name) {\r\n return console.warn('📋 Field is missing `name` prop. https://react-hook-form.com/api#Controller');\r\n }\r\n }\r\n if (fieldsRef.current[name]) {\r\n fieldsRef.current[name] = Object.assign({ ref: fieldsRef.current[name].ref }, rules);\r\n }\r\n else {\r\n register(Object.defineProperties({\r\n name,\r\n focus: onFocusRef.current,\r\n }, {\r\n value: {\r\n set(data) {\r\n setInputStateValue(data);\r\n valueRef.current = data;\r\n },\r\n get() {\r\n return valueRef.current;\r\n },\r\n },\r\n }), rules);\r\n shouldUpdateValue = isUndefined(get(defaultValuesRef.current, name));\r\n }\r\n shouldUpdateValue &&\r\n isNotFieldArray &&\r\n setInputStateValue(getInitialValue());\r\n }, [rules, name, register]);\r\n useEffect(() => () => unregister(name), [name]);\r\n useEffect(() => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (isUndefined(value)) {\r\n console.warn(`📋 ${name} is missing in the 'defaultValue' prop of either its Controller (https://react-hook-form.com/api#Controller) or useForm (https://react-hook-form.com/api#useForm)`);\r\n }\r\n if (!isNotFieldArray && isUndefined(defaultValue)) {\r\n console.warn('📋 Controller is missing `defaultValue` prop when using `useFieldArray`. https://react-hook-form.com/api#Controller');\r\n }\r\n }\r\n registerField();\r\n }, [registerField]);\r\n useEffect(() => {\r\n !fieldsRef.current[name] && registerField(true);\r\n });\r\n const onBlur = useCallback(() => {\r\n if (readFormStateRef.current.touched && !get(touched, name)) {\r\n set(touched, name, true);\r\n updateFormState({\r\n touched,\r\n });\r\n }\r\n shouldValidate(true) && trigger(name);\r\n }, [name, updateFormState, shouldValidate, trigger, readFormStateRef]);\r\n const onChange = useCallback((...event) => setValue(name, commonTask(event), {\r\n shouldValidate: shouldValidate(),\r\n shouldDirty: true,\r\n }), [setValue, name, shouldValidate]);\r\n return {\r\n field: {\r\n onChange,\r\n onBlur,\r\n name,\r\n value,\r\n ref,\r\n },\r\n meta: Object.defineProperties({\r\n invalid: !!get(errors, name),\r\n }, {\r\n isDirty: {\r\n get() {\r\n return !!get(formState.dirtyFields, name);\r\n },\r\n },\r\n isTouched: {\r\n get() {\r\n return !!get(formState.touched, name);\r\n },\r\n },\r\n }),\r\n };\r\n}\n\nfunction useWatch({ control, name, defaultValue, }) {\r\n const methods = useFormContext();\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!control && !methods) {\r\n throw new Error('📋 useWatch is missing `control` prop. https://react-hook-form.com/api#useWatch');\r\n }\r\n }\r\n const { useWatchFieldsRef, useWatchRenderFunctionsRef, watchInternal, defaultValuesRef, } = control || methods.control;\r\n const updateValue = useState()[1];\r\n const idRef = useRef();\r\n const defaultValueRef = useRef(defaultValue);\r\n useEffect(() => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (name === '') {\r\n console.warn('📋 useWatch is missing `name` attribute. https://react-hook-form.com/api#useWatch');\r\n }\r\n }\r\n const id = (idRef.current = generateId());\r\n const watchFieldsHookRender = useWatchRenderFunctionsRef.current;\r\n const watchFieldsHook = useWatchFieldsRef.current;\r\n watchFieldsHook[id] = new Set();\r\n watchFieldsHookRender[id] = () => updateValue({});\r\n watchInternal(name, defaultValueRef.current, id);\r\n return () => {\r\n delete watchFieldsHook[id];\r\n delete watchFieldsHookRender[id];\r\n };\r\n }, [\r\n name,\r\n useWatchRenderFunctionsRef,\r\n useWatchFieldsRef,\r\n watchInternal,\r\n defaultValueRef,\r\n ]);\r\n return idRef.current\r\n ? watchInternal(name, defaultValueRef.current, idRef.current)\r\n : isUndefined(defaultValue)\r\n ? isString(name)\r\n ? get(defaultValuesRef.current, name)\r\n : Array.isArray(name)\r\n ? name.reduce((previous, inputName) => (Object.assign(Object.assign({}, previous), { [inputName]: get(defaultValuesRef.current, inputName) })), {})\r\n : defaultValuesRef.current\r\n : defaultValue;\r\n}\n\nconst Controller = (props) => {\r\n const { rules, as, render, defaultValue, control, onFocus } = props, rest = __rest(props, [\"rules\", \"as\", \"render\", \"defaultValue\", \"control\", \"onFocus\"]);\r\n const { field, meta } = useController(props);\r\n const componentProps = Object.assign(Object.assign({}, rest), field);\r\n return as\r\n ? isValidElement(as)\r\n ? cloneElement(as, componentProps)\r\n : createElement(as, componentProps)\r\n : render\r\n ? render(field, meta)\r\n : null;\r\n};\n\nexport { Controller, FormProvider, appendErrors, get, transformToNestObject, useController, useFieldArray, useForm, useFormContext, useWatch };\n//# sourceMappingURL=index.esm.js.map\n"],"names":["isHTMLElement","value","HTMLElement","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","isNullOrUndefined","isObjectType","isObject","Array","isArray","Date","isKey","test","compact","filter","Boolean","stringToPath","input","replace","split","set","object","path","let","index","tempPath","length","lastIndex","const","key","newValue","objValue","isNaN","transformToNestObject","data","isUndefined","val","undefined","get","obj","defaultValue","result","reduce","removeAllEventListeners","ref","validateWithStateUpdate","removeEventListener","defaultReturn","isValid","getRadioValue","options","previous","option","checked","isRadioInput","element","type","isFileInput","isCheckBoxInput","isMultipleSelect","defaultResult","validResult","getCheckboxValue","values","map","attributes","getFieldValue","fieldsRef","name","shallowFieldsStateRef","excludeDisabled","shouldKeepRawValue","field","current","field_ref","disabled","valueAsNumber","valueAsDate","setValueAs","files","concat","NaN","isDetached","nodeType","Node","DOCUMENT_NODE","parentNode","isEmptyObject","Object","keys","isBoolean","unset","previousObjRef","updatePath","childObject","slice","baseGet","k","objectRef","currentPaths","currentPathsLength","item","isSameRef","fieldValue","isPrimitive","deepMerge","target","source","targetValue","sourceValue","_a","deepEqual","object1","object2","isErrorObject","isValidElement","keys1","keys2","i","list","val1","val2","setDirtyFields","defaultValues","dirtyFields","parentName","assign","isString","getFieldsValues","shallowFieldsState","shouldUnregister","search","output","loop","startsWith","find","isRegex","RegExp","getValueAndMessage","validationData","message","isFunction","isMessage","getValidateError","appendErrors","validateAllFieldCriteria","errors","types","validateField","async","ref$1","required","maxLength","minLength","min","max","pattern","error","isRadio","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","ref$2","value$1","exceedMin","maxOutput","minOutput","valueDate","valueNumber","parseFloat","maxLengthOutput","minLengthOutput","ref$3","patternValue","message$1","validate","validateRef","validateError","validationResult","entries","ref$4","validateFunction","getPath","rootPath","paths","property","rootName","push","assignWatchFields","fieldValues","fieldName","watchFields","inputValue","isSingleField","add","forEach","getFieldArrayParentName","substring","indexOf","isNameInFieldArray","names","some","searchName","isMatchFieldArrayName","isWeb","window","document","cloneObject","copy","File","includes","constructor","getTime","Set","Map","i$1","list$1","modeChecker","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isRadioOrCheckboxFunction","isWindowUndefined","isProxyEnabled","Proxy","useForm","reValidateMode","resolver","shouldFocusError","useRef","fieldArrayDefaultValuesRef","fieldArrayValuesRef","watchFieldsRef","useWatchFieldsRef","useWatchRenderFunctionsRef","fieldsWithValidationRef","validFieldsRef","defaultValuesRef","isUnMount","isWatchAllRef","handleChangeRef","resetFieldArrayFunctionRef","contextRef","context","resolverRef","fieldArrayNamesRef","modeRef","isValidateAllFieldCriteria","criteriaMode","useState","isDirty","isValidating","isSubmitted","submitCount","touched","isSubmitting","isSubmitSuccessful","formState","setFormState","readFormStateRef","formStateRef","observerRef","isReValidateOnBlur","isReValidateOnChange","updateFormState","useCallback","state","updateIsValidating","shouldRenderBaseOnError","shouldRender","shouldReRender","validFields","previousError","fieldsWithValidation","isErrorStateChanged","setFieldValue","rawValue","radioRef","selectRef","selected","checkboxRef","isFormDirty","formValues","getValues","updateAndGetDirtyState","isFieldDirty","isDirtyFieldExist","previousIsDirty","isChanged","executeValidation","skipReRender","process","env","NODE_ENV","console","warn","executeSchemaOrResolverValidation","previousFormIsValid","isInputsValid","every","trigger","fields","Promise","all","setInternalValues","shouldDirty","shouldValidate","setInternalValue","config","has","setFieldArrayDirtyFields","obj$1","isFieldWatched","match","renderWatchedInputs","found","size","setFieldArrayDefaultValues","payload","isBlurEvent","shouldSkipValidation","isTouched","skipValidation","parentNodeName","currentError","validateResolver","newDefaultValues","removeFieldEventListener","forceDelete","handleChange","fieldRef","findRemovedFieldAndRemoveListener","updateWatchedValue","removeFieldEventListenerAndRef","watchInternal","fieldNames","watchId","combinedDefaultValues","registerFieldRef","fieldRefAndValidationOptions","isFieldArray","compareRef","currentRef","isEmptyDefaultValue","isEmptyUnmountFields","then","shouldAttachChangeEvent","addEventListener","attachEventListeners","handleSubmit","onValid","onInvalid","e","preventDefault","persist","fieldErrors","fieldError","focus","focusOnErrorField","useEffect","observer","MutationObserver","observe","childList","subtree","onDomRemove","disconnect","commonProps","setValue","register","refOrRegisterOptions","unregister","prop","control","useMemo","reset","omitResetState","inputRef","closest","resetFieldArray","resetRefs","clearErrors","inputName","setError","shouldFocus","createContext","displayName"],"mappings":"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"}