@helsenorge/designsystem-react 2.5.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/Checkbox.js +1 -1
- package/Checkbox.js.map +1 -1
- package/FormGroup.js +1 -1
- package/FormGroup.js.map +1 -1
- package/HelpBubble.js +1 -1
- package/HelpBubble.js.map +1 -1
- package/Input.js +1 -1
- package/Input.js.map +1 -1
- package/RadioButton.js +1 -1
- package/RadioButton.js.map +1 -1
- package/Select.js +1 -1
- package/Select.js.map +1 -1
- package/Textarea.js +1 -1
- package/Textarea.js.map +1 -1
- package/components/ButtonWithModal/index.js +1 -1
- package/components/ButtonWithModal/index.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +1 -1
- package/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/components/Checkbox/componentdata.json +1 -1
- package/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/components/Dropdown/index.js +1 -1
- package/components/Dropdown/index.js.map +1 -1
- package/components/FormExample/FormExample.d.ts.map +1 -1
- package/components/FormExample/index.js +3 -3
- package/components/FormExample/index.js.map +1 -1
- package/components/FormGroup/FormGroup.d.ts.map +1 -1
- package/components/HelpBubble/HelpBubble.d.ts +1 -1
- package/components/HelpBubble/HelpBubble.d.ts.map +1 -1
- package/components/HelpBubble/componentdata.json +1 -1
- package/components/HelpBubble/index.js +1 -1
- package/components/HelpBubble/styles.module.scss +1 -1
- package/components/HelpBubbleExample/index.js +1 -1
- package/components/HelpBubbleExample/index.js.map +1 -1
- package/components/Input/Input.d.ts.map +1 -1
- package/components/Modal/index.js +1 -1
- package/components/RadioButton/RadioButton.d.ts.map +1 -1
- package/components/Select/Select.d.ts.map +1 -1
- package/components/Textarea/Textarea.d.ts +1 -1
- package/components/Textarea/Textarea.d.ts.map +1 -1
- package/components/Textarea/componentdata.json +1 -1
- package/components/Tooltip/index.js +1 -1
- package/components/TooltipExample/index.js +1 -1
- package/components/TooltipExample/index.js.map +1 -1
- package/hooks/useElementList.d.ts +9 -0
- package/hooks/useElementList.d.ts.map +1 -0
- package/hooks/useElementList.js +2 -0
- package/hooks/useElementList.js.map +1 -0
- package/hooks/useFocusToggle.d.ts.map +1 -1
- package/hooks/useFocusToggle.js +1 -1
- package/hooks/useFocusToggle.js.map +1 -1
- package/hooks/useFocusTrap.js +1 -1
- package/hooks/useFocusTrap.js.map +1 -1
- package/hooks/useFocusableElements.d.ts.map +1 -1
- package/hooks/useFocusableElements.js +1 -1
- package/hooks/useFocusableElements.js.map +1 -1
- package/hooks/useHover.d.ts +5 -6
- package/hooks/useHover.d.ts.map +1 -1
- package/hooks/useHover.js +1 -1
- package/hooks/useHover.js.map +1 -1
- package/hooks/useKeyboardEvent.d.ts +10 -1
- package/hooks/useKeyboardEvent.d.ts.map +1 -1
- package/hooks/useKeyboardEvent.js +1 -1
- package/hooks/useKeyboardEvent.js.map +1 -1
- package/hooks/useOutsideEvent.d.ts +1 -4
- package/hooks/useOutsideEvent.d.ts.map +1 -1
- package/hooks/useOutsideEvent.js +1 -1
- package/hooks/useOutsideEvent.js.map +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/{hooks/focus-utils.d.ts → utils/focus.d.ts} +1 -1
- package/utils/focus.d.ts.map +1 -0
- package/{hooks/focus-utils.js → utils/focus.js} +1 -1
- package/utils/focus.js.map +1 -0
- package/hooks/focus-utils.d.ts.map +0 -1
- package/hooks/focus-utils.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../node_modules/react-hook-form/dist/index.esm.js","../../../src/components/FormExample/FormExample.tsx"],"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","import React from 'react';\nimport { useForm } from 'react-hook-form';\n\nimport Validation from '../Validation';\nimport FormGroup from '../FormGroup/FormGroup';\nimport Checkbox from '../Checkbox';\nimport Button from '../Button';\nimport RadioButton from '../RadioButton';\nimport Textarea from '../Textarea';\nimport { FormVariant } from '../../constants';\nimport Input from '../Input';\nimport Hospital from '../Icons/Hospital';\nimport FormLayout, { FormLayoutColumns } from '../FormLayout';\nimport { isTest } from '../../utils/environment';\nimport Select from '../Select';\n\ninterface FormExampleProps {\n exampleType: FormExampleVariants;\n variant?: keyof typeof FormVariant;\n}\n\nexport enum FormExampleVariants {\n formgroup = 'formgroup',\n checkbox = 'checkbox',\n radiobutton = 'radiobutton',\n textarea = 'textarea',\n input = 'input',\n select = 'select',\n}\n\nexport const FormExample = (props: FormExampleProps): JSX.Element => {\n const { exampleType = FormExampleVariants.formgroup } = props;\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm();\n const field1 = 'field1';\n const field2 = 'field2';\n const field3 = 'field3';\n const field4 = 'field4';\n const field5 = 'field5';\n const field6 = 'field6';\n const allErrors = errors[field1] || errors[field2] || errors[field3] || errors[field4] || errors[field5] || errors[field6];\n const errorMessage = 'Du må velge et alternativ';\n const errorMessage2 = 'Du må velge to alternativ';\n const errorMessage3 = 'Det kan ikke legges inn mer enn 40 tegn';\n const errorMessage4 = 'Du må skrive noe her';\n const errorMessage5 = 'Du må velge \"Option 2\"';\n\n const allCheckBoxes = [\n <Checkbox key={0} inputId=\"checkbox1\" label={'Checkbox 1'} ref={register({ required: errorMessage })} />,\n <Checkbox key={1} inputId=\"checkbox2\" label={'Checkbox 2'} ref={register({ required: errorMessage })} />,\n <Checkbox key={2} inputId=\"checkbox3\" label={'Checkbox 3'} ref={register({ required: errorMessage })} />,\n ];\n\n const requireTwo = (value: Array<string>): true | string => {\n return value.length >= 2 || errorMessage2;\n };\n const requireSelect = (value: Array<string>): true | string => {\n return value.toString() === 'Option 2' || errorMessage5;\n };\n\n const getFormExample = () => {\n if (exampleType === FormExampleVariants.formgroup) {\n return [\n <FormGroup\n key={0}\n title={'Gruppe tittel'}\n legend={'Velg minst en'}\n error={errors[field1] ? errors[field1].message : undefined}\n variant={props.variant}\n name={field1}\n >\n <FormLayout maxColumns={FormLayoutColumns.two}>\n {allCheckBoxes.map(check => {\n return check;\n })}\n </FormLayout>\n </FormGroup>,\n <FormGroup\n key={1}\n legend={'Velg minst to'}\n error={errors[field2] ? errors[field2].message : undefined}\n variant={props.variant}\n name={field2}\n >\n <Checkbox inputId=\"checkbox4\" label={'Checkbox 4'} ref={register({ validate: requireTwo })} />\n <Checkbox inputId=\"checkbox5\" label={'Checkbox 5'} ref={register({ validate: requireTwo })} />\n <Checkbox inputId=\"checkbox6\" label={'Checkbox 6'} ref={register({ validate: requireTwo })} />\n </FormGroup>,\n <FormGroup\n key={2}\n legend={'Velg en'}\n error={errors[field3] ? errors[field3].message : undefined}\n variant={props.variant}\n name={field3}\n >\n <RadioButton inputId=\"radiobutton1\" label={'Radiobutton 1'} ref={register({ required: errorMessage })} />\n <RadioButton inputId=\"radiobutton2\" label={'Radiobutton 2'} ref={register({ required: errorMessage })} />\n <RadioButton inputId=\"radiobutton3\" label={'Radiobutton 3'} ref={register({ required: errorMessage })} />\n </FormGroup>,\n <FormGroup key={3} error={errors[field4] ? errors[field4].message : undefined}>\n <Textarea\n defaultValue={`Dette er en test \\n\\n Hello \\n\\n test \\n\\n test test`}\n grow\n maxCharacters={40}\n minRows={5}\n label=\"Skriv din historie her\"\n textareaId=\"textarea1\"\n name={field4}\n ref={register({ maxLength: { value: 40, message: errorMessage3 } })}\n />\n </FormGroup>,\n <FormGroup name={field5} key={4} variant={props.variant} error={errors[field5] ? errors[field5].message : undefined}>\n <Input label={'Skriv inn din tekst'} placeholder={'Skriv noe!'} icon={Hospital} ref={register({ required: errorMessage4 })} />\n </FormGroup>,\n <FormGroup name={field6} key={5} variant={props.variant} error={errors[field6] ? errors[field6].message : undefined}>\n <Select label={'Skriv inn din tekst'} ref={register({ validate: requireSelect })}>\n <option value={'Option 1'}>{'Option 1'}</option>\n <option value={'Option 2'}>{'Option 2'}</option>\n <option value={'Option 3'}>{'Option 3'}</option>\n </Select>\n </FormGroup>,\n ];\n } else if (exampleType === FormExampleVariants.checkbox) {\n return (\n <Checkbox\n name={field1}\n inputId=\"checkbox1\"\n label={'Checkbox 1'}\n errorText={errors[field1] ? errors[field1].message : undefined}\n variant={props.variant}\n ref={register({ required: errorMessage })}\n />\n );\n } else if (exampleType === FormExampleVariants.radiobutton) {\n return (\n <RadioButton\n name={field3}\n inputId=\"radiobutton1\"\n label={'Radiobutton 1'}\n error={errors[field3] ? errors[field3].message : undefined}\n errorText={errors[field3] ? errors[field3].message : undefined}\n variant={props.variant}\n ref={register({ required: errorMessage })}\n />\n );\n } else if (exampleType === FormExampleVariants.textarea) {\n return (\n <Textarea\n defaultValue={`Dette er min historie \\n\\n Hello \\n\\n test`}\n grow\n maxCharacters={40}\n minRows={5}\n errorText={errors[field4] ? errors[field4].message : undefined}\n label=\"Skriv din historie her\"\n textareaId=\"textarea1\"\n name={field4}\n ref={register({ maxLength: { value: 40, message: errorMessage3 } })}\n />\n );\n } else if (exampleType === FormExampleVariants.input) {\n return (\n <Input\n inputId=\"input1\"\n label={'Skriv inn din tekst'}\n placeholder={'Skriv noe!'}\n name={field5}\n errorText={errors[field5] ? errors[field5].message : undefined}\n icon={Hospital}\n ref={register({ required: errorMessage4 })}\n />\n );\n } else if (exampleType === FormExampleVariants.select) {\n return (\n <Select\n name={field6}\n errorText={errors[field6] ? errors[field6].message : undefined}\n label={'Skriv inn din tekst'}\n ref={register({ validate: requireSelect })}\n >\n <option value={'Option 1'}>{'Option 1'}</option>\n <option value={'Option 2'}>{'Option 2'}</option>\n <option value={'Option 3'}>{'Option 3'}</option>\n </Select>\n );\n }\n };\n\n return (\n <form\n onSubmit={handleSubmit(data => {\n // eslint-disable-next-line no-console\n !isTest() && console.log(data);\n })}\n >\n <Validation variant={props.variant} errorSummary={allErrors ? 'Sjekk at alt er riktig utfylt' : undefined}>\n {getFormExample()}\n </Validation>\n <Button type=\"submit\">{'Send inn'}</Button>\n </form>\n );\n};\n\nexport default FormExample;\n"],"names":["isHTMLElement","value","EVENTS","VALIDATION_MODE","SELECT","UNDEFINED","INPUT_VALIDATION_RULES","attachEventListeners","ref","shouldAttachChangeEvent","handleChange","isNullOrUndefined","isObjectType","isObject","isKey","compact","stringToPath","input","set","object","path","index","tempPath","length","lastIndex","key","newValue","objValue","transformToNestObject","data","isUndefined","val","get","obj","defaultValue","result","focusOnErrorField","fields","fieldErrors","field","removeAllEventListeners","validateWithStateUpdate","defaultReturn","getRadioValue","options","previous","option","getMultipleSelectValue","selected","isRadioInput","element","isFileInput","isCheckBoxInput","isMultipleSelect","defaultResult","validResult","getCheckboxValue","values","checked","attributes","getFieldValue","fieldsRef","name","shallowFieldsStateRef","excludeDisabled","shouldKeepRawValue","disabled","valueAsNumber","valueAsDate","setValueAs","isDetached","isEmptyObject","isBoolean","baseGet","updatePath","unset","childObject","previousObjRef","k","objectRef","currentPaths","currentPathsLength","item","isSameRef","fieldValue","findRemovedFieldAndRemoveListener","shouldUnregister","forceDelete","fieldRef","isPrimitive","deepMerge","target","source","targetValue","sourceValue","deepEqual","object1","object2","isErrorObject","isValidElement","keys1","keys2","val1","val2","setDirtyFields","defaultValues","dirtyFields","parentNode","parentName","setFieldArrayDirtyFields","isString","getFieldsValues","shallowFieldsState","search","output","isErrorStateChanged","errors","error","validFields","fieldsWithValidation","isValid","previousError","isRegex","getValueAndMessage","validationData","isFunction","isMessage","getValidateError","type","appendErrors","validateAllFieldCriteria","message","validateField","required","maxLength","minLength","min","max","pattern","validate","isRadio","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueDate","valueNumber","maxLengthOutput","minLengthOutput","patternValue","validateRef","validateError","validationResult","validateFunction","validateResult","getPath","rootPath","paths","property","rootName","assignWatchFields","fieldValues","fieldName","watchFields","inputValue","isSingleField","skipValidation","isOnBlur","isOnChange","isOnTouch","isTouched","isReValidateOnBlur","isReValidateOnChange","isBlurEvent","isSubmitted","isOnAll","getFieldArrayParentName","isMatchFieldArrayName","searchName","isNameInFieldArray","names","current","isSelectInput","onDomRemove","removeFieldEventListenerAndRef","observer","isWeb","cloneObject","_a","copy","modeChecker","mode","isRadioOrCheckboxFunction","isWindowUndefined","isProxyEnabled","useForm","reValidateMode","resolver","context","shouldFocusError","criteriaMode","useRef","fieldArrayDefaultValuesRef","fieldArrayValuesRef","watchFieldsRef","useWatchFieldsRef","useWatchRenderFunctionsRef","fieldsWithValidationRef","validFieldsRef","defaultValuesRef","isUnMount","isWatchAllRef","handleChangeRef","resetFieldArrayFunctionRef","contextRef","resolverRef","fieldArrayNamesRef","modeRef","isOnSubmit","isValidateAllFieldCriteria","formState","setFormState","useState","readFormStateRef","formStateRef","observerRef","updateFormState","useCallback","state","updateIsValidating","shouldRenderBaseOnError","shouldRender","shouldReRender","setFieldValue","rawValue","radioRef","selectRef","checkboxRef","isFormDirty","formValues","getValues","updateAndGetDirtyState","isFieldDirty","isDirtyFieldExist","previousIsDirty","isChanged","executeValidation","skipReRender","executeSchemaOrResolverValidation","previousFormIsValid","isInputsValid","trigger","setInternalValues","shouldDirty","shouldValidate","setInternalValue","config","isFieldWatched","renderWatchedInputs","found","setValue","shouldSkipValidation","parentNodeName","currentError","setFieldArrayDefaultValues","payload","validateResolver","newDefaultValues","removeFieldEventListener","updateWatchedValue","watchField","clearErrors","inputName","setError","watchInternal","fieldNames","watchId","combinedDefaultValues","watch","unregister","registerFieldRef","fieldRefAndValidationOptions","isFieldArray","compareRef","currentRef","isEmptyDefaultValue","isEmptyUnmountFields","register","refOrRegisterOptions","handleSubmit","onValid","onInvalid","e","fieldError","resetRefs","isDirty","touched","submitCount","reset","omitResetState","inputRef","resetFieldArray","useEffect","commonProps","prop","control","useMemo","FormContext","createContext","FormExampleVariants","FormExample","props","exampleType","field1","field2","field3","field4","field5","field6","allErrors","errorMessage","errorMessage2","errorMessage3","errorMessage4","errorMessage5","allCheckBoxes","React","Checkbox","requireTwo","requireSelect","getFormExample","FormGroup","FormLayout","FormLayoutColumns","check","RadioButton","Textarea","Input","Hospital","Select","isTest","Validation","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/react-hook-form/dist/index.esm.mjs","../../../src/components/FormExample/FormExample.tsx"],"sourcesContent":["import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\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 !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\r\n ? isCheckBoxInput(event.target)\r\n ? event.target.checked\r\n : event.target.value\r\n : event;\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (obj, path, defaultValue) => {\r\n if (!path || !isObject(obj)) {\r\n return defaultValue;\r\n }\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\nconst EVENTS = {\r\n BLUR: 'blur',\r\n FOCUS_OUT: 'focusout',\r\n CHANGE: 'change',\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 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\nconst HookFormContext = React.createContext(null);\r\n/**\r\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\r\n *\r\n * @returns return all useForm methods\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const methods = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * return (\r\n * <FormProvider {...methods} >\r\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\r\n * <NestedInput />\r\n * <input type=\"submit\" />\r\n * </form>\r\n * </FormProvider>\r\n * );\r\n * }\r\n *\r\n * function NestedInput() {\r\n * const { register } = useFormContext(); // retrieve all hook methods\r\n * return <input {...register(\"test\")} />;\r\n * }\r\n * ```\r\n */\r\nconst useFormContext = () => React.useContext(HookFormContext);\r\n/**\r\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\r\n *\r\n * @param props - all useFrom methods\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const methods = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * return (\r\n * <FormProvider {...methods} >\r\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\r\n * <NestedInput />\r\n * <input type=\"submit\" />\r\n * </form>\r\n * </FormProvider>\r\n * );\r\n * }\r\n *\r\n * function NestedInput() {\r\n * const { register } = useFormContext(); // retrieve all hook methods\r\n * return <input {...register(\"test\")} />;\r\n * }\r\n * ```\r\n */\r\nconst FormProvider = (props) => {\r\n const { children, ...data } = props;\r\n return (React.createElement(HookFormContext.Provider, { value: data }, children));\r\n};\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\r\n const result = {\r\n defaultValues: control._defaultValues,\r\n };\r\n for (const key in formState) {\r\n Object.defineProperty(result, key, {\r\n get: () => {\r\n const _key = key;\r\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\r\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\r\n }\r\n localProxyFormState && (localProxyFormState[_key] = true);\r\n return formState[_key];\r\n },\r\n });\r\n }\r\n return result;\r\n};\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, isRoot) => {\r\n const { name, ...formState } = formStateData;\r\n return (isEmptyObject(formState) ||\r\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\r\n Object.keys(formState).find((key) => _proxyFormState[key] ===\r\n (!isRoot || VALIDATION_MODE.all)));\r\n};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar shouldSubscribeByName = (name, signalName, exact) => exact && signalName\r\n ? name === signalName\r\n : !name ||\r\n !signalName ||\r\n name === signalName ||\r\n convertToArrayPayload(name).some((currentName) => currentName &&\r\n (currentName.startsWith(signalName) ||\r\n signalName.startsWith(currentName)));\n\nfunction useSubscribe(props) {\r\n const _props = React.useRef(props);\r\n _props.current = props;\r\n React.useEffect(() => {\r\n const subscription = !props.disabled &&\r\n _props.current.subject.subscribe({\r\n next: _props.current.callback,\r\n });\r\n return () => {\r\n subscription && subscription.unsubscribe();\r\n };\r\n }, [props.disabled]);\r\n}\n\n/**\r\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\r\n *\r\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, handleSubmit, control } = useForm({\r\n * defaultValues: {\r\n * firstName: \"firstName\"\r\n * }});\r\n * const { dirtyFields } = useFormState({\r\n * control\r\n * });\r\n * const onSubmit = (data) => console.log(data);\r\n *\r\n * return (\r\n * <form onSubmit={handleSubmit(onSubmit)}>\r\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\r\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\r\n * <input type=\"submit\" />\r\n * </form>\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useFormState(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, disabled, name, exact } = props || {};\r\n const [formState, updateFormState] = React.useState(control._formState);\r\n const _mounted = React.useRef(true);\r\n const _localProxyFormState = React.useRef({\r\n isDirty: false,\r\n dirtyFields: false,\r\n touchedFields: false,\r\n isValidating: false,\r\n isValid: false,\r\n errors: false,\r\n });\r\n const _name = React.useRef(name);\r\n _name.current = name;\r\n useSubscribe({\r\n disabled,\r\n callback: React.useCallback((value) => _mounted.current &&\r\n shouldSubscribeByName(_name.current, value.name, exact) &&\r\n shouldRenderFormState(value, _localProxyFormState.current) &&\r\n updateFormState({\r\n ...control._formState,\r\n ...value,\r\n }), [control, exact]),\r\n subject: control._subjects.state,\r\n });\r\n React.useEffect(() => {\r\n _mounted.current = true;\r\n return () => {\r\n _mounted.current = false;\r\n };\r\n }, []);\r\n return getProxyFormState(formState, control, _localProxyFormState.current, false);\r\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal) => {\r\n const isArray = Array.isArray(names);\r\n if (isString(names)) {\r\n isGlobal && _names.watch.add(names);\r\n return get(formValues, names);\r\n }\r\n if (isArray) {\r\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\r\n get(formValues, fieldName)));\r\n }\r\n isGlobal && (_names.watchAll = true);\r\n return formValues;\r\n};\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar objectHasFunction = (data) => {\r\n for (const key in data) {\r\n if (isFunction(data[key])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\n/**\r\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\r\n *\r\n * @remarks\r\n *\r\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\r\n *\r\n * @example\r\n * ```tsx\r\n * const { watch } = useForm();\r\n * const values = useWatch({\r\n * name: \"fieldName\"\r\n * control,\r\n * })\r\n * ```\r\n */\r\nfunction useWatch(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, name, defaultValue, disabled, exact, } = props || {};\r\n const _name = React.useRef(name);\r\n _name.current = name;\r\n useSubscribe({\r\n disabled,\r\n subject: control._subjects.watch,\r\n callback: React.useCallback((formState) => {\r\n if (shouldSubscribeByName(_name.current, formState.name, exact)) {\r\n const fieldValues = generateWatchOutput(_name.current, control._names, formState.values || control._formValues);\r\n updateValue(isUndefined(_name.current) ||\r\n (isObject(fieldValues) && !objectHasFunction(fieldValues))\r\n ? { ...fieldValues }\r\n : Array.isArray(fieldValues)\r\n ? [...fieldValues]\r\n : isUndefined(fieldValues)\r\n ? defaultValue\r\n : fieldValues);\r\n }\r\n }, [control, exact, defaultValue]),\r\n });\r\n const [value, updateValue] = React.useState(isUndefined(defaultValue)\r\n ? control._getWatch(name)\r\n : defaultValue);\r\n React.useEffect(() => control._removeUnmounted());\r\n return value;\r\n}\n\n/**\r\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\r\n *\r\n * @param props - the path name to the form field value, and validation rules.\r\n *\r\n * @returns field properties, field and form state. {@link UseControllerReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function Input(props) {\r\n * const { field, fieldState, formState } = useController(props);\r\n * return (\r\n * <div>\r\n * <input {...field} placeholder={props.name} />\r\n * <p>{fieldState.isTouched && \"Touched\"}</p>\r\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\r\n * </div>\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useController(props) {\r\n const methods = useFormContext();\r\n const { name, control = methods.control, shouldUnregister } = props;\r\n const isArrayField = isNameInFieldArray(control._names.array, name);\r\n const value = useWatch({\r\n control,\r\n name,\r\n defaultValue: get(control._formValues, name, get(control._defaultValues, name, props.defaultValue)),\r\n exact: true,\r\n });\r\n const formState = useFormState({\r\n control,\r\n name,\r\n });\r\n const _registerProps = React.useRef(control.register(name, {\r\n ...props.rules,\r\n value,\r\n }));\r\n React.useEffect(() => {\r\n const updateMounted = (name, value) => {\r\n const field = get(control._fields, name);\r\n if (field) {\r\n field._f.mount = value;\r\n }\r\n };\r\n updateMounted(name, true);\r\n return () => {\r\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\r\n (isArrayField\r\n ? _shouldUnregisterField && !control._stateFlags.action\r\n : _shouldUnregisterField)\r\n ? control.unregister(name)\r\n : updateMounted(name, false);\r\n };\r\n }, [name, control, isArrayField, shouldUnregister]);\r\n return {\r\n field: {\r\n name,\r\n value,\r\n onChange: React.useCallback((event) => _registerProps.current.onChange({\r\n target: {\r\n value: getEventValue(event),\r\n name: name,\r\n },\r\n type: EVENTS.CHANGE,\r\n }), [name]),\r\n onBlur: React.useCallback(() => _registerProps.current.onBlur({\r\n target: {\r\n value: get(control._formValues, name),\r\n name: name,\r\n },\r\n type: EVENTS.BLUR,\r\n }), [name, control]),\r\n ref: (elm) => {\r\n const field = get(control._fields, name);\r\n if (field && elm) {\r\n field._f.ref = {\r\n focus: () => elm.focus(),\r\n select: () => elm.select(),\r\n setCustomValidity: (message) => elm.setCustomValidity(message),\r\n reportValidity: () => elm.reportValidity(),\r\n };\r\n }\r\n },\r\n },\r\n formState,\r\n fieldState: Object.defineProperties({}, {\r\n invalid: {\r\n enumerable: true,\r\n get: () => !!get(formState.errors, name),\r\n },\r\n isDirty: {\r\n enumerable: true,\r\n get: () => !!get(formState.dirtyFields, name),\r\n },\r\n isTouched: {\r\n enumerable: true,\r\n get: () => !!get(formState.touchedFields, name),\r\n },\r\n error: {\r\n enumerable: true,\r\n get: () => get(formState.errors, name),\r\n },\r\n }),\r\n };\r\n}\n\n/**\r\n * Component based on `useController` hook to work with controlled component.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\r\n *\r\n * @param props - the path name to the form field value, and validation rules.\r\n *\r\n * @returns provide field handler functions, field and form state.\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { control } = useForm<FormValues>({\r\n * defaultValues: {\r\n * test: \"\"\r\n * }\r\n * });\r\n *\r\n * return (\r\n * <form>\r\n * <Controller\r\n * control={control}\r\n * name=\"test\"\r\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\r\n * <>\r\n * <input\r\n * onChange={onChange} // send value to hook form\r\n * onBlur={onBlur} // notify when input is touched\r\n * value={value} // return updated value\r\n * ref={ref} // set ref for focus management\r\n * />\r\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\r\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\r\n * </>\r\n * )}\r\n * />\r\n * </form>\r\n * );\r\n * }\r\n * ```\r\n */\r\nconst Controller = (props) => props.render(useController(props));\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\r\n ? {\r\n ...errors[name],\r\n types: {\r\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\r\n [type]: message || true,\r\n },\r\n }\r\n : {};\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').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\nconst focusFieldBy = (fields, callback, fieldsNames) => {\r\n for (const key of fieldsNames || Object.keys(fields)) {\r\n const field = get(fields, key);\r\n if (field) {\r\n const { _f, ...currentField } = field;\r\n if (_f && callback(_f.name)) {\r\n if (_f.ref.focus) {\r\n _f.ref.focus();\r\n break;\r\n }\r\n else if (_f.refs && _f.refs[0].focus) {\r\n _f.refs[0].focus();\r\n break;\r\n }\r\n }\r\n else if (isObject(currentField)) {\r\n focusFieldBy(currentField, callback);\r\n }\r\n }\r\n }\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\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\r\n ? options.focusName ||\r\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\r\n : '';\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\r\n (_names.watchAll ||\r\n _names.watch.has(name) ||\r\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\r\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nvar updateFieldArrayRootError = (errors, error, name) => {\r\n const fieldArrayErrors = compact(get(errors, name));\r\n set(fieldArrayErrors, 'root', error[name]);\r\n set(errors, name, fieldArrayErrors);\r\n return errors;\r\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isMessage = (value) => isString(value) || React.isValidElement(value);\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRegex = (value) => value instanceof RegExp;\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.checked && !option.disabled)\r\n .map((option) => option.value);\r\n return { value: values, isValid: !!values.length };\r\n }\r\n return options[0].checked && !options[0].disabled\r\n ? // @ts-expect-error expected to work in the browser\r\n options[0].attributes && !isUndefined(options[0].attributes.value)\r\n ? isUndefined(options[0].value) || options[0].value === ''\r\n ? validResult\r\n : { value: options[0].value, isValid: true }\r\n : validResult\r\n : defaultResult;\r\n }\r\n return defaultResult;\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.checked && !option.disabled\r\n ? {\r\n isValid: true,\r\n value: option.value,\r\n }\r\n : previous, defaultReturn)\r\n : defaultReturn;\n\nfunction getValidateError(result, ref, type = 'validate') {\r\n if (isMessage(result) ||\r\n (Array.isArray(result) && result.every(isMessage)) ||\r\n (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 getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\r\n ? validationData\r\n : {\r\n value: validationData,\r\n message: '',\r\n };\n\nvar validateField = async (field, inputValue, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\r\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, disabled, } = field._f;\r\n if (!mount || disabled) {\r\n return {};\r\n }\r\n const inputRef = refs ? refs[0] : ref;\r\n const setCustomValidity = (message) => {\r\n if (shouldUseNativeValidation && isString(message)) {\r\n inputRef.setCustomValidity(message);\r\n inputRef.reportValidity();\r\n }\r\n };\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 = ((valueAsNumber || isFileInput(ref)) && !ref.value) ||\r\n inputValue === '' ||\r\n (Array.isArray(inputValue) && !inputValue.length);\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] = {\r\n type: exceedMax ? maxType : minType,\r\n message,\r\n ref,\r\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\r\n };\r\n };\r\n if (isFieldArray\r\n ? !Array.isArray(inputValue) || !inputValue.length\r\n : required &&\r\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\r\n (isBoolean(inputValue) && !inputValue) ||\r\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\r\n (isRadio && !getRadioValue(refs).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] = {\r\n type: INPUT_VALIDATION_RULES.required,\r\n message,\r\n ref: inputRef,\r\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\r\n };\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\r\n let exceedMax;\r\n let exceedMin;\r\n const maxOutput = getValueAndMessage(max);\r\n const minOutput = getValueAndMessage(min);\r\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\r\n const valueNumber = ref.valueAsNumber ||\r\n (inputValue ? +inputValue : inputValue);\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(inputValue);\r\n const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\r\n const isTime = ref.type == 'time';\r\n const isWeek = ref.type == 'week';\r\n if (isString(maxOutput.value) && inputValue) {\r\n exceedMax = isTime\r\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\r\n : isWeek\r\n ? inputValue > maxOutput.value\r\n : valueDate > new Date(maxOutput.value);\r\n }\r\n if (isString(minOutput.value) && inputValue) {\r\n exceedMin = isTime\r\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\r\n : isWeek\r\n ? inputValue < minOutput.value\r\n : 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 setCustomValidity(error[name].message);\r\n return error;\r\n }\r\n }\r\n }\r\n if ((maxLength || minLength) &&\r\n !isEmpty &&\r\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\r\n const maxLengthOutput = getValueAndMessage(maxLength);\r\n const minLengthOutput = getValueAndMessage(minLength);\r\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\r\n inputValue.length > maxLengthOutput.value;\r\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\r\n inputValue.length < minLengthOutput.value;\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(error[name].message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (pattern && !isEmpty && isString(inputValue)) {\r\n const { value: patternValue, message } = getValueAndMessage(pattern);\r\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\r\n error[name] = {\r\n type: INPUT_VALIDATION_RULES.pattern,\r\n message,\r\n ref,\r\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\r\n };\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (validate) {\r\n if (isFunction(validate)) {\r\n const result = await validate(inputValue);\r\n const validateError = getValidateError(result, inputRef);\r\n if (validateError) {\r\n error[name] = {\r\n ...validateError,\r\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\r\n };\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(validateError.message);\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 in validate) {\r\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\r\n break;\r\n }\r\n const validateError = getValidateError(await validate[key](inputValue), inputRef, key);\r\n if (validateError) {\r\n validationResult = {\r\n ...validateError,\r\n ...appendErrorsCurry(key, validateError.message),\r\n };\r\n setCustomValidity(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] = {\r\n ref: inputRef,\r\n ...validationResult,\r\n };\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n }\r\n setCustomValidity(true);\r\n return error;\r\n};\n\nfunction append(data, value) {\r\n return [...data, ...convertToArrayPayload(value)];\r\n}\n\nvar isPlainObject = (tempObject) => {\r\n const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\r\n return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\r\n};\n\nvar isWeb = typeof window !== 'undefined' &&\r\n typeof window.HTMLElement !== 'undefined' &&\r\n typeof document !== 'undefined';\n\nfunction cloneObject(data) {\r\n let copy;\r\n const isArray = Array.isArray(data);\r\n if (data instanceof Date) {\r\n copy = new Date(data);\r\n }\r\n else if (data instanceof Set) {\r\n copy = new Set(data);\r\n }\r\n else if (!(isWeb && (data instanceof Blob || data instanceof FileList)) &&\r\n (isArray || isObject(data))) {\r\n copy = isArray ? [] : {};\r\n if (!Array.isArray(data) && !isPlainObject(data)) {\r\n copy = data;\r\n }\r\n else {\r\n for (const key in data) {\r\n copy[key] = cloneObject(data[key]);\r\n }\r\n }\r\n }\r\n else {\r\n return data;\r\n }\r\n return copy;\r\n}\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nvar getValidationModes = (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\nfunction insert(data, index, value) {\r\n return [\r\n ...data.slice(0, index),\r\n ...convertToArrayPayload(value),\r\n ...data.slice(index),\r\n ];\r\n}\n\nvar moveArrayAt = (data, from, to) => {\r\n if (!Array.isArray(data)) {\r\n return [];\r\n }\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};\n\nfunction prepend(data, value) {\r\n return [...convertToArrayPayload(value), ...convertToArrayPayload(data)];\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, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\r\n data[indexA] = [data[indexB], (data[indexB] = data[indexA])][0];\r\n};\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 isEmptyArray(obj) {\r\n for (const key in obj) {\r\n if (!isUndefined(obj[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\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) && isEmptyArray(objectRef)))) {\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\nvar updateAt = (fieldValues, index, value) => {\r\n fieldValues[index] = value;\r\n return fieldValues;\r\n};\n\n/**\r\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\r\n *\r\n * @param props - useFieldArray props\r\n *\r\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\r\n * defaultValues: {\r\n * test: []\r\n * }\r\n * });\r\n * const { fields, append } = useFieldArray({\r\n * control,\r\n * name: \"test\"\r\n * });\r\n *\r\n * return (\r\n * <form onSubmit={handleSubmit(data => console.log(data))}>\r\n * {fields.map((item, index) => (\r\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\r\n * ))}\r\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\r\n * append\r\n * </button>\r\n * <input type=\"submit\" />\r\n * </form>\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useFieldArray(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, name, keyName = 'id', shouldUnregister, } = props;\r\n const [fields, setFields] = React.useState(control._getFieldArray(name));\r\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\r\n const _fieldIds = React.useRef(fields);\r\n const _name = React.useRef(name);\r\n const _actioned = React.useRef(false);\r\n _name.current = name;\r\n _fieldIds.current = fields;\r\n control._names.array.add(name);\r\n props.rules &&\r\n control.register(name, props.rules);\r\n const callback = React.useCallback(({ values, name: fieldArrayName, }) => {\r\n if (fieldArrayName === _name.current || !fieldArrayName) {\r\n const fieldValues = get(values, _name.current);\r\n if (Array.isArray(fieldValues)) {\r\n setFields(fieldValues);\r\n ids.current = fieldValues.map(generateId);\r\n }\r\n }\r\n }, []);\r\n useSubscribe({\r\n callback,\r\n subject: control._subjects.array,\r\n });\r\n const updateValues = React.useCallback((updatedFieldArrayValues) => {\r\n _actioned.current = true;\r\n control._updateFieldArray(name, updatedFieldArrayValues);\r\n }, [control, name]);\r\n const append$1 = (value, options) => {\r\n const appendValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValues = append(control._getFieldArray(name), appendValue);\r\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\r\n ids.current = append(ids.current, appendValue.map(generateId));\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, append, {\r\n argA: fillEmptyArray(value),\r\n });\r\n };\r\n const prepend$1 = (value, options) => {\r\n const prependValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValues = prepend(control._getFieldArray(name), prependValue);\r\n control._names.focus = getFocusFieldName(name, 0, options);\r\n ids.current = prepend(ids.current, prependValue.map(generateId));\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, prepend, {\r\n argA: fillEmptyArray(value),\r\n });\r\n };\r\n const remove = (index) => {\r\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\r\n ids.current = removeArrayAt(ids.current, index);\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\r\n argA: index,\r\n });\r\n };\r\n const insert$1 = (index, value, options) => {\r\n const insertValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\r\n control._names.focus = getFocusFieldName(name, index, options);\r\n ids.current = insert(ids.current, index, insertValue.map(generateId));\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, insert, {\r\n argA: index,\r\n argB: fillEmptyArray(value),\r\n });\r\n };\r\n const swap = (indexA, indexB) => {\r\n const updatedFieldArrayValues = control._getFieldArray(name);\r\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\r\n swapArrayAt(ids.current, indexA, indexB);\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\r\n argA: indexA,\r\n argB: indexB,\r\n }, false);\r\n };\r\n const move = (from, to) => {\r\n const updatedFieldArrayValues = control._getFieldArray(name);\r\n moveArrayAt(updatedFieldArrayValues, from, to);\r\n moveArrayAt(ids.current, from, to);\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\r\n argA: from,\r\n argB: to,\r\n }, false);\r\n };\r\n const update = (index, value) => {\r\n const updateValue = cloneObject(value);\r\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\r\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\r\n updateValues(updatedFieldArrayValues);\r\n setFields([...updatedFieldArrayValues]);\r\n control._updateFieldArray(name, updatedFieldArrayValues, updateAt, {\r\n argA: index,\r\n argB: updateValue,\r\n }, true, false);\r\n };\r\n const replace = (value) => {\r\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\r\n ids.current = updatedFieldArrayValues.map(generateId);\r\n updateValues([...updatedFieldArrayValues]);\r\n setFields([...updatedFieldArrayValues]);\r\n control._updateFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\r\n };\r\n React.useEffect(() => {\r\n control._stateFlags.action = false;\r\n isWatched(name, control._names) && control._subjects.state.next({});\r\n if (_actioned.current &&\r\n (!getValidationModes(control._options.mode).isOnSubmit ||\r\n control._formState.isSubmitted)) {\r\n if (control._options.resolver) {\r\n control._executeSchema([name]).then((result) => {\r\n const error = get(result.errors, name);\r\n const existingError = get(control._formState.errors, name);\r\n if (existingError ? !error && existingError.type : error && error.type) {\r\n error\r\n ? set(control._formState.errors, name, error)\r\n : unset(control._formState.errors, name);\r\n control._subjects.state.next({\r\n errors: control._formState.errors,\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n const field = get(control._fields, name);\r\n if (field && field._f) {\r\n validateField(field, get(control._formValues, name), control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\r\n control._subjects.state.next({\r\n errors: updateFieldArrayRootError(control._formState.errors, error, name),\r\n }));\r\n }\r\n }\r\n }\r\n control._subjects.watch.next({\r\n name,\r\n values: control._formValues,\r\n });\r\n control._names.focus &&\r\n focusFieldBy(control._fields, (key) => !!key && key.startsWith(control._names.focus));\r\n control._names.focus = '';\r\n control._proxyFormState.isValid && control._updateValid();\r\n }, [fields, name, control]);\r\n React.useEffect(() => {\r\n !get(control._formValues, name) && control._updateFieldArray(name);\r\n return () => {\r\n (control._options.shouldUnregister || shouldUnregister) &&\r\n control.unregister(name);\r\n };\r\n }, [name, control, keyName, shouldUnregister]);\r\n return {\r\n swap: React.useCallback(swap, [updateValues, name, control]),\r\n move: React.useCallback(move, [updateValues, name, control]),\r\n prepend: React.useCallback(prepend$1, [updateValues, name, control]),\r\n append: React.useCallback(append$1, [updateValues, name, control]),\r\n remove: React.useCallback(remove, [updateValues, name, control]),\r\n insert: React.useCallback(insert$1, [updateValues, name, control]),\r\n update: React.useCallback(update, [updateValues, name, control]),\r\n replace: React.useCallback(replace, [updateValues, name, control]),\r\n fields: React.useMemo(() => fields.map((field, index) => ({\r\n ...field,\r\n [keyName]: ids.current[index] || generateId(),\r\n })), [fields, keyName]),\r\n };\r\n}\n\nfunction createSubject() {\r\n let _observers = [];\r\n const next = (value) => {\r\n for (const observer of _observers) {\r\n observer.next(value);\r\n }\r\n };\r\n const subscribe = (observer) => {\r\n _observers.push(observer);\r\n return {\r\n unsubscribe: () => {\r\n _observers = _observers.filter((o) => o !== observer);\r\n },\r\n };\r\n };\r\n const unsubscribe = () => {\r\n _observers = [];\r\n };\r\n return {\r\n get observers() {\r\n return _observers;\r\n },\r\n next,\r\n subscribe,\r\n unsubscribe,\r\n };\r\n}\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2) {\r\n if (isPrimitive(object1) || isPrimitive(object2)) {\r\n return object1 === object2;\r\n }\r\n if (isDateObject(object1) && isDateObject(object2)) {\r\n return object1.getTime() === object2.getTime();\r\n }\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 (!keys2.includes(key)) {\r\n return false;\r\n }\r\n if (key !== 'ref') {\r\n const val2 = object2[key];\r\n if ((isDateObject(val1) && isDateObject(val2)) ||\r\n (isObject(val1) && isObject(val2)) ||\r\n (Array.isArray(val1) && Array.isArray(val2))\r\n ? !deepEqual(val1, val2)\r\n : val1 !== val2) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\n\nvar isHTMLElement = (value) => {\r\n const owner = value ? value.ownerDocument : 0;\r\n const ElementClass = owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement;\r\n return value instanceof ElementClass;\r\n};\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nfunction markFieldsDirty(data, fields = {}) {\r\n const isParentNodeArray = Array.isArray(data);\r\n if (isObject(data) || isParentNodeArray) {\r\n for (const key in data) {\r\n if (Array.isArray(data[key]) ||\r\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\r\n fields[key] = Array.isArray(data[key]) ? [] : {};\r\n markFieldsDirty(data[key], fields[key]);\r\n }\r\n else if (!isNullOrUndefined(data[key])) {\r\n fields[key] = true;\r\n }\r\n }\r\n }\r\n return fields;\r\n}\r\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\r\n const isParentNodeArray = Array.isArray(data);\r\n if (isObject(data) || isParentNodeArray) {\r\n for (const key in data) {\r\n if (Array.isArray(data[key]) ||\r\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\r\n if (isUndefined(formValues) ||\r\n isPrimitive(dirtyFieldsFromValues[key])) {\r\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\r\n ? markFieldsDirty(data[key], [])\r\n : { ...markFieldsDirty(data[key]) };\r\n }\r\n else {\r\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\r\n }\r\n }\r\n else {\r\n deepEqual(data[key], formValues[key])\r\n ? delete dirtyFieldsFromValues[key]\r\n : (dirtyFieldsFromValues[key] = true);\r\n }\r\n }\r\n }\r\n return dirtyFieldsFromValues;\r\n}\r\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\r\n ? value\r\n : valueAsNumber\r\n ? value === ''\r\n ? NaN\r\n : value\r\n ? +value\r\n : value\r\n : valueAsDate && isString(value)\r\n ? new Date(value)\r\n : setValueAs\r\n ? setValueAs(value)\r\n : value;\n\nfunction getFieldValue(_f) {\r\n const ref = _f.ref;\r\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\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(_f.refs).value;\r\n }\r\n if (isMultipleSelect(ref)) {\r\n return [...ref.selectedOptions].map(({ value }) => value);\r\n }\r\n if (isCheckBoxInput(ref)) {\r\n return getCheckboxValue(_f.refs).value;\r\n }\r\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\r\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\r\n const fields = {};\r\n for (const name of fieldsNames) {\r\n const field = get(_fields, name);\r\n field && set(fields, name, field._f);\r\n }\r\n return {\r\n criteriaMode,\r\n names: [...fieldsNames],\r\n fields,\r\n shouldUseNativeValidation,\r\n };\r\n};\n\nvar getRuleValue = (rule) => isUndefined(rule)\r\n ? undefined\r\n : isRegex(rule)\r\n ? rule.source\r\n : isObject(rule)\r\n ? isRegex(rule.value)\r\n ? rule.value.source\r\n : rule.value\r\n : rule;\n\nvar hasValidation = (options) => options.mount &&\r\n (options.required ||\r\n options.min ||\r\n options.max ||\r\n options.maxLength ||\r\n options.minLength ||\r\n options.pattern ||\r\n options.validate);\n\nfunction schemaErrorLookup(errors, _fields, name) {\r\n const error = get(errors, name);\r\n if (error || isKey(name)) {\r\n return {\r\n error,\r\n name,\r\n };\r\n }\r\n const names = name.split('.');\r\n while (names.length) {\r\n const fieldName = names.join('.');\r\n const field = get(_fields, fieldName);\r\n const foundError = get(errors, fieldName);\r\n if (field && !Array.isArray(field) && name !== fieldName) {\r\n return { name };\r\n }\r\n if (foundError && foundError.type) {\r\n return {\r\n name: fieldName,\r\n error: foundError,\r\n };\r\n }\r\n names.pop();\r\n }\r\n return {\r\n name,\r\n };\r\n}\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\r\n if (mode.isOnAll) {\r\n return false;\r\n }\r\n else if (!isSubmitted && mode.isOnTouch) {\r\n return !(isTouched || isBlurEvent);\r\n }\r\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\r\n return !isBlurEvent;\r\n }\r\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\r\n return isBlurEvent;\r\n }\r\n return true;\r\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nconst defaultOptions = {\r\n mode: VALIDATION_MODE.onSubmit,\r\n reValidateMode: VALIDATION_MODE.onChange,\r\n shouldFocusError: true,\r\n};\r\nfunction createFormControl(props = {}) {\r\n let _options = {\r\n ...defaultOptions,\r\n ...props,\r\n };\r\n let _formState = {\r\n submitCount: 0,\r\n isDirty: false,\r\n isValidating: false,\r\n isSubmitted: false,\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: false,\r\n touchedFields: {},\r\n dirtyFields: {},\r\n errors: {},\r\n };\r\n let _fields = {};\r\n let _defaultValues = cloneObject(_options.defaultValues) || {};\r\n let _formValues = _options.shouldUnregister\r\n ? {}\r\n : cloneObject(_defaultValues);\r\n let _stateFlags = {\r\n action: false,\r\n mount: false,\r\n watch: false,\r\n };\r\n let _names = {\r\n mount: new Set(),\r\n unMount: new Set(),\r\n array: new Set(),\r\n watch: new Set(),\r\n };\r\n let delayErrorCallback;\r\n let timer = 0;\r\n let validateFields = {};\r\n const _proxyFormState = {\r\n isDirty: false,\r\n dirtyFields: false,\r\n touchedFields: false,\r\n isValidating: false,\r\n isValid: false,\r\n errors: false,\r\n };\r\n const _subjects = {\r\n watch: createSubject(),\r\n array: createSubject(),\r\n state: createSubject(),\r\n };\r\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\r\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\r\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\r\n const debounce = (callback) => (wait) => {\r\n clearTimeout(timer);\r\n timer = window.setTimeout(callback, wait);\r\n };\r\n const _updateValid = async () => {\r\n let isValid = false;\r\n if (_proxyFormState.isValid) {\r\n isValid = _options.resolver\r\n ? isEmptyObject((await _executeSchema()).errors)\r\n : await executeBuiltInValidation(_fields, true);\r\n if (isValid !== _formState.isValid) {\r\n _formState.isValid = isValid;\r\n _subjects.state.next({\r\n isValid,\r\n });\r\n }\r\n }\r\n return isValid;\r\n };\r\n const _updateFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\r\n if (args && method) {\r\n _stateFlags.action = true;\r\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\r\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\r\n shouldSetValues && set(_fields, name, fieldValues);\r\n }\r\n if (_proxyFormState.errors &&\r\n shouldUpdateFieldsAndState &&\r\n Array.isArray(get(_formState.errors, name))) {\r\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\r\n shouldSetValues && set(_formState.errors, name, errors);\r\n unsetEmptyArray(_formState.errors, name);\r\n }\r\n if (_proxyFormState.touchedFields &&\r\n shouldUpdateFieldsAndState &&\r\n Array.isArray(get(_formState.touchedFields, name))) {\r\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\r\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\r\n }\r\n if (_proxyFormState.dirtyFields) {\r\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\r\n }\r\n _subjects.state.next({\r\n isDirty: _getDirty(name, values),\r\n dirtyFields: _formState.dirtyFields,\r\n errors: _formState.errors,\r\n isValid: _formState.isValid,\r\n });\r\n }\r\n else {\r\n set(_formValues, name, values);\r\n }\r\n };\r\n const updateErrors = (name, error) => {\r\n set(_formState.errors, name, error);\r\n _subjects.state.next({\r\n errors: _formState.errors,\r\n });\r\n };\r\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\r\n const field = get(_fields, name);\r\n if (field) {\r\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\r\n isUndefined(defaultValue) ||\r\n (ref && ref.defaultChecked) ||\r\n shouldSkipSetValueAs\r\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\r\n : setFieldValue(name, defaultValue);\r\n _stateFlags.mount && _updateValid();\r\n }\r\n };\r\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\r\n let isFieldDirty = false;\r\n const output = {\r\n name,\r\n };\r\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\r\n if (_proxyFormState.isDirty) {\r\n const isPreviousFormDirty = _formState.isDirty;\r\n _formState.isDirty = output.isDirty = _getDirty();\r\n isFieldDirty = isPreviousFormDirty !== output.isDirty;\r\n }\r\n if (_proxyFormState.dirtyFields && (!isBlurEvent || shouldDirty)) {\r\n const isPreviousFieldDirty = get(_formState.dirtyFields, name);\r\n const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\r\n isCurrentFieldPristine\r\n ? unset(_formState.dirtyFields, name)\r\n : set(_formState.dirtyFields, name, true);\r\n output.dirtyFields = _formState.dirtyFields;\r\n isFieldDirty =\r\n isFieldDirty ||\r\n isPreviousFieldDirty !== get(_formState.dirtyFields, name);\r\n }\r\n if (isBlurEvent && !isPreviousFieldTouched) {\r\n set(_formState.touchedFields, name, isBlurEvent);\r\n output.touchedFields = _formState.touchedFields;\r\n isFieldDirty =\r\n isFieldDirty ||\r\n (_proxyFormState.touchedFields &&\r\n isPreviousFieldTouched !== isBlurEvent);\r\n }\r\n isFieldDirty && shouldRender && _subjects.state.next(output);\r\n return isFieldDirty ? output : {};\r\n };\r\n const shouldRenderByError = (name, isValid, error, fieldState) => {\r\n const previousFieldError = get(_formState.errors, name);\r\n const shouldUpdateValid = _proxyFormState.isValid &&\r\n isBoolean(isValid) &&\r\n _formState.isValid !== isValid;\r\n if (props.delayError && error) {\r\n delayErrorCallback = debounce(() => updateErrors(name, error));\r\n delayErrorCallback(props.delayError);\r\n }\r\n else {\r\n clearTimeout(timer);\r\n delayErrorCallback = null;\r\n error\r\n ? set(_formState.errors, name, error)\r\n : unset(_formState.errors, name);\r\n }\r\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\r\n !isEmptyObject(fieldState) ||\r\n shouldUpdateValid) {\r\n const updatedFormState = {\r\n ...fieldState,\r\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\r\n errors: _formState.errors,\r\n name,\r\n };\r\n _formState = {\r\n ..._formState,\r\n ...updatedFormState,\r\n };\r\n _subjects.state.next(updatedFormState);\r\n }\r\n validateFields[name]--;\r\n if (_proxyFormState.isValidating &&\r\n !Object.values(validateFields).some((v) => v)) {\r\n _subjects.state.next({\r\n isValidating: false,\r\n });\r\n validateFields = {};\r\n }\r\n };\r\n const _executeSchema = async (name) => _options.resolver\r\n ? await _options.resolver({ ..._formValues }, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation))\r\n : {};\r\n const executeSchemaAndUpdateState = async (names) => {\r\n const { errors } = await _executeSchema();\r\n if (names) {\r\n for (const name of names) {\r\n const error = get(errors, name);\r\n error\r\n ? set(_formState.errors, name, error)\r\n : unset(_formState.errors, name);\r\n }\r\n }\r\n else {\r\n _formState.errors = errors;\r\n }\r\n return errors;\r\n };\r\n const executeBuiltInValidation = async (fields, shouldOnlyCheckValid, context = {\r\n valid: true,\r\n }) => {\r\n for (const name in fields) {\r\n const field = fields[name];\r\n if (field) {\r\n const { _f, ...fieldValue } = field;\r\n if (_f) {\r\n const isFieldArrayRoot = _names.array.has(_f.name);\r\n const fieldError = await validateField(field, get(_formValues, _f.name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation, isFieldArrayRoot);\r\n if (fieldError[_f.name]) {\r\n context.valid = false;\r\n if (shouldOnlyCheckValid) {\r\n break;\r\n }\r\n }\r\n !shouldOnlyCheckValid &&\r\n (get(fieldError, _f.name)\r\n ? isFieldArrayRoot\r\n ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\r\n : set(_formState.errors, _f.name, fieldError[_f.name])\r\n : unset(_formState.errors, _f.name));\r\n }\r\n fieldValue &&\r\n (await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context));\r\n }\r\n }\r\n return context.valid;\r\n };\r\n const _removeUnmounted = () => {\r\n for (const name of _names.unMount) {\r\n const field = get(_fields, name);\r\n field &&\r\n (field._f.refs\r\n ? field._f.refs.every((ref) => !live(ref))\r\n : !live(field._f.ref)) &&\r\n unregister(name);\r\n }\r\n _names.unMount = new Set();\r\n };\r\n const _getDirty = (name, data) => (name && data && set(_formValues, name, data),\r\n !deepEqual(getValues(), _defaultValues));\r\n const _getWatch = (names, defaultValue, isGlobal) => {\r\n const fieldValues = {\r\n ...(_stateFlags.mount\r\n ? _formValues\r\n : isUndefined(defaultValue)\r\n ? _defaultValues\r\n : isString(names)\r\n ? { [names]: defaultValue }\r\n : defaultValue),\r\n };\r\n return generateWatchOutput(names, _names, fieldValues, isGlobal);\r\n };\r\n const _getFieldArray = (name) => compact(get(_stateFlags.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []));\r\n const setFieldValue = (name, value, options = {}) => {\r\n const field = get(_fields, name);\r\n let fieldValue = value;\r\n if (field) {\r\n const fieldReference = field._f;\r\n if (fieldReference) {\r\n !fieldReference.disabled &&\r\n set(_formValues, name, getFieldValueAs(value, fieldReference));\r\n fieldValue =\r\n isWeb && isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\r\n ? ''\r\n : value;\r\n if (isMultipleSelect(fieldReference.ref)) {\r\n [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\r\n }\r\n else if (fieldReference.refs) {\r\n if (isCheckBoxInput(fieldReference.ref)) {\r\n fieldReference.refs.length > 1\r\n ? fieldReference.refs.forEach((checkboxRef) => (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\r\n (checkboxRef.checked = Array.isArray(fieldValue)\r\n ? !!fieldValue.find((data) => data === checkboxRef.value)\r\n : fieldValue === checkboxRef.value))\r\n : fieldReference.refs[0] &&\r\n (fieldReference.refs[0].checked = !!fieldValue);\r\n }\r\n else {\r\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\r\n }\r\n }\r\n else if (isFileInput(fieldReference.ref)) {\r\n fieldReference.ref.value = '';\r\n }\r\n else {\r\n fieldReference.ref.value = fieldValue;\r\n if (!fieldReference.ref.type) {\r\n _subjects.watch.next({\r\n name,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n (options.shouldDirty || options.shouldTouch) &&\r\n updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\r\n options.shouldValidate && trigger(name);\r\n };\r\n const setValues = (name, value, options) => {\r\n for (const fieldKey in value) {\r\n const fieldValue = value[fieldKey];\r\n const fieldName = `${name}.${fieldKey}`;\r\n const field = get(_fields, fieldName);\r\n (_names.array.has(name) ||\r\n !isPrimitive(fieldValue) ||\r\n (field && !field._f)) &&\r\n !isDateObject(fieldValue)\r\n ? setValues(fieldName, fieldValue, options)\r\n : setFieldValue(fieldName, fieldValue, options);\r\n }\r\n };\r\n const setValue = (name, value, options = {}) => {\r\n const field = get(_fields, name);\r\n const isFieldArray = _names.array.has(name);\r\n const cloneValue = cloneObject(value);\r\n set(_formValues, name, cloneValue);\r\n if (isFieldArray) {\r\n _subjects.array.next({\r\n name,\r\n values: _formValues,\r\n });\r\n if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\r\n options.shouldDirty) {\r\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\r\n _subjects.state.next({\r\n name,\r\n dirtyFields: _formState.dirtyFields,\r\n isDirty: _getDirty(name, cloneValue),\r\n });\r\n }\r\n }\r\n else {\r\n field && !field._f && !isNullOrUndefined(cloneValue)\r\n ? setValues(name, cloneValue, options)\r\n : setFieldValue(name, cloneValue, options);\r\n }\r\n isWatched(name, _names) && _subjects.state.next({});\r\n _subjects.watch.next({\r\n name,\r\n });\r\n };\r\n const onChange = async (event) => {\r\n const target = event.target;\r\n let name = target.name;\r\n const field = get(_fields, name);\r\n if (field) {\r\n let error;\r\n let isValid;\r\n const fieldValue = target.type\r\n ? getFieldValue(field._f)\r\n : getEventValue(event);\r\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\r\n const shouldSkipValidation = (!hasValidation(field._f) &&\r\n !_options.resolver &&\r\n !get(_formState.errors, name) &&\r\n !field._f.deps) ||\r\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\r\n const watched = isWatched(name, _names, isBlurEvent);\r\n set(_formValues, name, fieldValue);\r\n if (isBlurEvent) {\r\n field._f.onBlur && field._f.onBlur(event);\r\n delayErrorCallback && delayErrorCallback(0);\r\n }\r\n else if (field._f.onChange) {\r\n field._f.onChange(event);\r\n }\r\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\r\n const shouldRender = !isEmptyObject(fieldState) || watched;\r\n !isBlurEvent &&\r\n _subjects.watch.next({\r\n name,\r\n type: event.type,\r\n });\r\n if (shouldSkipValidation) {\r\n _proxyFormState.isValid && _updateValid();\r\n return (shouldRender &&\r\n _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\r\n }\r\n !isBlurEvent && watched && _subjects.state.next({});\r\n validateFields[name] = validateFields[name]\r\n ? validateFields[name] + 1\r\n : 1;\r\n _subjects.state.next({\r\n isValidating: true,\r\n });\r\n if (_options.resolver) {\r\n const { errors } = await _executeSchema([name]);\r\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\r\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\r\n error = errorLookupResult.error;\r\n name = errorLookupResult.name;\r\n isValid = isEmptyObject(errors);\r\n }\r\n else {\r\n error = (await validateField(field, get(_formValues, name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\r\n _updateValid();\r\n }\r\n field._f.deps &&\r\n trigger(field._f.deps);\r\n shouldRenderByError(name, isValid, error, fieldState);\r\n }\r\n };\r\n const trigger = async (name, options = {}) => {\r\n let isValid;\r\n let validationResult;\r\n const fieldNames = convertToArrayPayload(name);\r\n _subjects.state.next({\r\n isValidating: true,\r\n });\r\n if (_options.resolver) {\r\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\r\n isValid = isEmptyObject(errors);\r\n validationResult = name\r\n ? !fieldNames.some((name) => get(errors, name))\r\n : isValid;\r\n }\r\n else if (name) {\r\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\r\n const field = get(_fields, fieldName);\r\n return await executeBuiltInValidation(field && field._f ? { [fieldName]: field } : field);\r\n }))).every(Boolean);\r\n !(!validationResult && !_formState.isValid) && _updateValid();\r\n }\r\n else {\r\n validationResult = isValid = await executeBuiltInValidation(_fields);\r\n }\r\n _subjects.state.next({\r\n ...(!isString(name) ||\r\n (_proxyFormState.isValid && isValid !== _formState.isValid)\r\n ? {}\r\n : { name }),\r\n ...(_options.resolver || !name ? { isValid } : {}),\r\n errors: _formState.errors,\r\n isValidating: false,\r\n });\r\n options.shouldFocus &&\r\n !validationResult &&\r\n focusFieldBy(_fields, (key) => key && get(_formState.errors, key), name ? fieldNames : _names.mount);\r\n return validationResult;\r\n };\r\n const getValues = (fieldNames) => {\r\n const values = {\r\n ..._defaultValues,\r\n ...(_stateFlags.mount ? _formValues : {}),\r\n };\r\n return isUndefined(fieldNames)\r\n ? values\r\n : isString(fieldNames)\r\n ? get(values, fieldNames)\r\n : fieldNames.map((name) => get(values, name));\r\n };\r\n const getFieldState = (name, formState) => ({\r\n invalid: !!get((formState || _formState).errors, name),\r\n isDirty: !!get((formState || _formState).dirtyFields, name),\r\n isTouched: !!get((formState || _formState).touchedFields, name),\r\n error: get((formState || _formState).errors, name),\r\n });\r\n const clearErrors = (name) => {\r\n name\r\n ? convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName))\r\n : (_formState.errors = {});\r\n _subjects.state.next({\r\n errors: _formState.errors,\r\n });\r\n };\r\n const setError = (name, error, options) => {\r\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\r\n set(_formState.errors, name, {\r\n ...error,\r\n ref,\r\n });\r\n _subjects.state.next({\r\n name,\r\n errors: _formState.errors,\r\n isValid: false,\r\n });\r\n options && options.shouldFocus && ref && ref.focus && ref.focus();\r\n };\r\n const watch = (name, defaultValue) => isFunction(name)\r\n ? _subjects.watch.subscribe({\r\n next: (info) => name(_getWatch(undefined, defaultValue), info),\r\n })\r\n : _getWatch(name, defaultValue, true);\r\n const unregister = (name, options = {}) => {\r\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\r\n _names.mount.delete(fieldName);\r\n _names.array.delete(fieldName);\r\n if (get(_fields, fieldName)) {\r\n if (!options.keepValue) {\r\n unset(_fields, fieldName);\r\n unset(_formValues, fieldName);\r\n }\r\n !options.keepError && unset(_formState.errors, fieldName);\r\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\r\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\r\n !_options.shouldUnregister &&\r\n !options.keepDefaultValue &&\r\n unset(_defaultValues, fieldName);\r\n }\r\n }\r\n _subjects.watch.next({});\r\n _subjects.state.next({\r\n ..._formState,\r\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\r\n });\r\n !options.keepIsValid && _updateValid();\r\n };\r\n const register = (name, options = {}) => {\r\n let field = get(_fields, name);\r\n const disabledIsDefined = isBoolean(options.disabled);\r\n set(_fields, name, {\r\n ...(field || {}),\r\n _f: {\r\n ...(field && field._f ? field._f : { ref: { name } }),\r\n name,\r\n mount: true,\r\n ...options,\r\n },\r\n });\r\n _names.mount.add(name);\r\n field\r\n ? disabledIsDefined &&\r\n set(_formValues, name, options.disabled\r\n ? undefined\r\n : get(_formValues, name, getFieldValue(field._f)))\r\n : updateValidAndValue(name, true, options.value);\r\n return {\r\n ...(disabledIsDefined ? { disabled: options.disabled } : {}),\r\n ...(_options.shouldUseNativeValidation\r\n ? {\r\n required: !!options.required,\r\n min: getRuleValue(options.min),\r\n max: getRuleValue(options.max),\r\n minLength: getRuleValue(options.minLength),\r\n maxLength: getRuleValue(options.maxLength),\r\n pattern: getRuleValue(options.pattern),\r\n }\r\n : {}),\r\n name,\r\n onChange,\r\n onBlur: onChange,\r\n ref: (ref) => {\r\n if (ref) {\r\n register(name, options);\r\n field = get(_fields, name);\r\n const fieldRef = isUndefined(ref.value)\r\n ? ref.querySelectorAll\r\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\r\n : ref\r\n : ref;\r\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\r\n const refs = field._f.refs || [];\r\n if (radioOrCheckbox\r\n ? refs.find((option) => option === fieldRef)\r\n : fieldRef === field._f.ref) {\r\n return;\r\n }\r\n set(_fields, name, {\r\n _f: {\r\n ...field._f,\r\n ...(radioOrCheckbox\r\n ? {\r\n refs: [\r\n ...refs.filter(live),\r\n fieldRef,\r\n ...(!!Array.isArray(get(_defaultValues, name))\r\n ? [{}]\r\n : []),\r\n ],\r\n ref: { type: fieldRef.type, name },\r\n }\r\n : { ref: fieldRef }),\r\n },\r\n });\r\n updateValidAndValue(name, false, undefined, fieldRef);\r\n }\r\n else {\r\n field = get(_fields, name, {});\r\n if (field._f) {\r\n field._f.mount = false;\r\n }\r\n (_options.shouldUnregister || options.shouldUnregister) &&\r\n !(isNameInFieldArray(_names.array, name) && _stateFlags.action) &&\r\n _names.unMount.add(name);\r\n }\r\n },\r\n };\r\n };\r\n const _focusError = () => _options.shouldFocusError &&\r\n focusFieldBy(_fields, (key) => key && get(_formState.errors, key), _names.mount);\r\n const handleSubmit = (onValid, onInvalid) => async (e) => {\r\n if (e) {\r\n e.preventDefault && e.preventDefault();\r\n e.persist && e.persist();\r\n }\r\n let hasNoPromiseError = true;\r\n let fieldValues = cloneObject(_formValues);\r\n _subjects.state.next({\r\n isSubmitting: true,\r\n });\r\n try {\r\n if (_options.resolver) {\r\n const { errors, values } = await _executeSchema();\r\n _formState.errors = errors;\r\n fieldValues = values;\r\n }\r\n else {\r\n await executeBuiltInValidation(_fields);\r\n }\r\n if (isEmptyObject(_formState.errors)) {\r\n _subjects.state.next({\r\n errors: {},\r\n isSubmitting: true,\r\n });\r\n await onValid(fieldValues, e);\r\n }\r\n else {\r\n if (onInvalid) {\r\n await onInvalid({ ..._formState.errors }, e);\r\n }\r\n _focusError();\r\n }\r\n }\r\n catch (err) {\r\n hasNoPromiseError = false;\r\n throw err;\r\n }\r\n finally {\r\n _formState.isSubmitted = true;\r\n _subjects.state.next({\r\n isSubmitted: true,\r\n isSubmitting: false,\r\n isSubmitSuccessful: isEmptyObject(_formState.errors) && hasNoPromiseError,\r\n submitCount: _formState.submitCount + 1,\r\n errors: _formState.errors,\r\n });\r\n }\r\n };\r\n const resetField = (name, options = {}) => {\r\n if (get(_fields, name)) {\r\n if (isUndefined(options.defaultValue)) {\r\n setValue(name, get(_defaultValues, name));\r\n }\r\n else {\r\n setValue(name, options.defaultValue);\r\n set(_defaultValues, name, options.defaultValue);\r\n }\r\n if (!options.keepTouched) {\r\n unset(_formState.touchedFields, name);\r\n }\r\n if (!options.keepDirty) {\r\n unset(_formState.dirtyFields, name);\r\n _formState.isDirty = options.defaultValue\r\n ? _getDirty(name, get(_defaultValues, name))\r\n : _getDirty();\r\n }\r\n if (!options.keepError) {\r\n unset(_formState.errors, name);\r\n _proxyFormState.isValid && _updateValid();\r\n }\r\n _subjects.state.next({ ..._formState });\r\n }\r\n };\r\n const _reset = (formValues, keepStateOptions = {}) => {\r\n const updatedValues = formValues || _defaultValues;\r\n const cloneUpdatedValues = cloneObject(updatedValues);\r\n const values = formValues && !isEmptyObject(formValues)\r\n ? cloneUpdatedValues\r\n : _defaultValues;\r\n if (!keepStateOptions.keepDefaultValues) {\r\n _defaultValues = updatedValues;\r\n }\r\n if (!keepStateOptions.keepValues) {\r\n if (keepStateOptions.keepDirtyValues) {\r\n for (const fieldName of _names.mount) {\r\n get(_formState.dirtyFields, fieldName)\r\n ? set(values, fieldName, get(_formValues, fieldName))\r\n : setValue(fieldName, get(values, fieldName));\r\n }\r\n }\r\n else {\r\n if (isWeb && isUndefined(formValues)) {\r\n for (const name of _names.mount) {\r\n const field = get(_fields, name);\r\n if (field && field._f) {\r\n const fieldReference = Array.isArray(field._f.refs)\r\n ? field._f.refs[0]\r\n : field._f.ref;\r\n if (isHTMLElement(fieldReference)) {\r\n const form = fieldReference.closest('form');\r\n if (form) {\r\n form.reset();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _fields = {};\r\n }\r\n _formValues = props.shouldUnregister\r\n ? keepStateOptions.keepDefaultValues\r\n ? cloneObject(_defaultValues)\r\n : {}\r\n : cloneUpdatedValues;\r\n _subjects.array.next({\r\n values,\r\n });\r\n _subjects.watch.next({\r\n values,\r\n });\r\n }\r\n _names = {\r\n mount: new Set(),\r\n unMount: new Set(),\r\n array: new Set(),\r\n watch: new Set(),\r\n watchAll: false,\r\n focus: '',\r\n };\r\n _stateFlags.mount =\r\n !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\r\n _stateFlags.watch = !!props.shouldUnregister;\r\n _subjects.state.next({\r\n submitCount: keepStateOptions.keepSubmitCount\r\n ? _formState.submitCount\r\n : 0,\r\n isDirty: keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\r\n ? _formState.isDirty\r\n : !!(keepStateOptions.keepDefaultValues &&\r\n !deepEqual(formValues, _defaultValues)),\r\n isSubmitted: keepStateOptions.keepIsSubmitted\r\n ? _formState.isSubmitted\r\n : false,\r\n dirtyFields: keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\r\n ? _formState.dirtyFields\r\n : keepStateOptions.keepDefaultValues && formValues\r\n ? getDirtyFields(_defaultValues, formValues)\r\n : {},\r\n touchedFields: keepStateOptions.keepTouched\r\n ? _formState.touchedFields\r\n : {},\r\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n });\r\n };\r\n const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\r\n ? formValues(_formValues)\r\n : formValues, keepStateOptions);\r\n const setFocus = (name, options = {}) => {\r\n const field = get(_fields, name);\r\n const fieldReference = field && field._f;\r\n if (fieldReference) {\r\n const fieldRef = fieldReference.refs\r\n ? fieldReference.refs[0]\r\n : fieldReference.ref;\r\n if (fieldRef.focus) {\r\n fieldRef.focus();\r\n options.shouldSelect && fieldRef.select();\r\n }\r\n }\r\n };\r\n return {\r\n control: {\r\n register,\r\n unregister,\r\n getFieldState,\r\n _executeSchema,\r\n _focusError,\r\n _getWatch,\r\n _getDirty,\r\n _updateValid,\r\n _removeUnmounted,\r\n _updateFieldArray,\r\n _getFieldArray,\r\n _subjects,\r\n _proxyFormState,\r\n get _fields() {\r\n return _fields;\r\n },\r\n get _formValues() {\r\n return _formValues;\r\n },\r\n get _stateFlags() {\r\n return _stateFlags;\r\n },\r\n set _stateFlags(value) {\r\n _stateFlags = value;\r\n },\r\n get _defaultValues() {\r\n return _defaultValues;\r\n },\r\n get _names() {\r\n return _names;\r\n },\r\n set _names(value) {\r\n _names = value;\r\n },\r\n get _formState() {\r\n return _formState;\r\n },\r\n set _formState(value) {\r\n _formState = value;\r\n },\r\n get _options() {\r\n return _options;\r\n },\r\n set _options(value) {\r\n _options = {\r\n ..._options,\r\n ...value,\r\n };\r\n },\r\n },\r\n trigger,\r\n register,\r\n handleSubmit,\r\n watch,\r\n setValue,\r\n getValues,\r\n reset,\r\n resetField,\r\n clearErrors,\r\n unregister,\r\n setError,\r\n setFocus,\r\n getFieldState,\r\n };\r\n}\n\n/**\r\n * Custom hook to manage the entire form.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\r\n *\r\n * @param props - form configuration and validation parameters.\r\n *\r\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * console.log(watch(\"example\"));\r\n *\r\n * return (\r\n * <form onSubmit={handleSubmit(onSubmit)}>\r\n * <input defaultValue=\"test\" {...register(\"example\")} />\r\n * <input {...register(\"exampleRequired\", { required: true })} />\r\n * {errors.exampleRequired && <span>This field is required</span>}\r\n * <input type=\"submit\" />\r\n * </form>\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useForm(props = {}) {\r\n const _formControl = React.useRef();\r\n const [formState, updateFormState] = React.useState({\r\n isDirty: false,\r\n isValidating: false,\r\n isSubmitted: false,\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: false,\r\n submitCount: 0,\r\n dirtyFields: {},\r\n touchedFields: {},\r\n errors: {},\r\n defaultValues: props.defaultValues,\r\n });\r\n if (!_formControl.current) {\r\n _formControl.current = {\r\n ...createFormControl(props),\r\n formState,\r\n };\r\n }\r\n const control = _formControl.current.control;\r\n control._options = props;\r\n useSubscribe({\r\n subject: control._subjects.state,\r\n callback: React.useCallback((value) => {\r\n if (shouldRenderFormState(value, control._proxyFormState, true)) {\r\n control._formState = {\r\n ...control._formState,\r\n ...value,\r\n };\r\n updateFormState({ ...control._formState });\r\n }\r\n }, [control]),\r\n });\r\n React.useEffect(() => {\r\n if (!control._stateFlags.mount) {\r\n control._proxyFormState.isValid && control._updateValid();\r\n control._stateFlags.mount = true;\r\n }\r\n if (control._stateFlags.watch) {\r\n control._stateFlags.watch = false;\r\n control._subjects.state.next({});\r\n }\r\n control._removeUnmounted();\r\n });\r\n React.useEffect(() => {\r\n formState.submitCount && control._focusError();\r\n }, [control, formState.submitCount]);\r\n _formControl.current.formState = getProxyFormState(formState, control);\r\n return _formControl.current;\r\n}\n\nexport { Controller, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n","import React from 'react';\nimport { useForm } from 'react-hook-form';\n\nimport Validation from '../Validation';\nimport FormGroup from '../FormGroup/FormGroup';\nimport Checkbox from '../Checkbox';\nimport Button from '../Button';\nimport RadioButton from '../RadioButton';\nimport Textarea from '../Textarea';\nimport { FormVariant } from '../../constants';\nimport Input from '../Input';\nimport Hospital from '../Icons/Hospital';\nimport FormLayout, { FormLayoutColumns } from '../FormLayout';\nimport { isTest } from '../../utils/environment';\nimport Select from '../Select';\n\ninterface FormExampleProps {\n exampleType: FormExampleVariants;\n variant?: keyof typeof FormVariant;\n}\n\nexport enum FormExampleVariants {\n formgroup = 'formgroup',\n checkbox = 'checkbox',\n radiobutton = 'radiobutton',\n textarea = 'textarea',\n input = 'input',\n select = 'select',\n}\n\nexport const FormExample = (props: FormExampleProps): JSX.Element => {\n const { exampleType = FormExampleVariants.formgroup } = props;\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm();\n const field1 = 'field1';\n const field2 = 'field2';\n const field3 = 'field3';\n const field4 = 'field4';\n const field5 = 'field5';\n const field6 = 'field6';\n const allErrors = errors.field1 || errors.field2 || errors.field3 || errors.field4 || errors.field5 || errors.field6;\n const errorMessage = 'Du må velge et alternativ';\n const errorMessage2 = 'Du må velge to alternativ';\n const errorMessage3 = 'Det kan ikke legges inn mer enn 40 tegn';\n const errorMessage4 = 'Du må skrive noe her';\n const errorMessage5 = 'Du må velge \"Option 2\"';\n\n const requireTwo = (value: Array<string>): true | string => {\n return value.length >= 2 || errorMessage2;\n };\n const requireSelect = (value: Array<string>): true | string => {\n return value.toString() === 'Option 2' || errorMessage5;\n };\n\n const getFormExample = () => {\n if (exampleType === FormExampleVariants.formgroup) {\n const allCheckBoxes = [\n <Checkbox key={0} inputId=\"checkbox1\" label={'Checkbox 1'} {...register(field1, { required: errorMessage })} />,\n <Checkbox key={1} inputId=\"checkbox2\" label={'Checkbox 2'} {...register(field1, { required: errorMessage })} />,\n <Checkbox key={2} inputId=\"checkbox3\" label={'Checkbox 3'} {...register(field1, { required: errorMessage })} />,\n ];\n\n return [\n <FormGroup\n key={0}\n title={'Gruppe tittel'}\n legend={'Velg minst en'}\n error={errors.field1 ? (errors.field1.message as string) : undefined}\n variant={props.variant}\n >\n <FormLayout maxColumns={FormLayoutColumns.two}>\n {allCheckBoxes.map(check => {\n return check;\n })}\n </FormLayout>\n </FormGroup>,\n <FormGroup\n key={1}\n legend={'Velg minst to'}\n error={errors.field2 ? (errors.field2.message as string) : undefined}\n variant={props.variant}\n >\n <Checkbox inputId=\"checkbox4\" label={'Checkbox 4'} {...register(field2, { validate: requireTwo })} />\n <Checkbox inputId=\"checkbox5\" label={'Checkbox 5'} {...register(field2, { validate: requireTwo })} />\n <Checkbox inputId=\"checkbox6\" label={'Checkbox 6'} {...register(field2, { validate: requireTwo })} />\n </FormGroup>,\n <FormGroup key={2} legend={'Velg en'} error={errors.field3 ? (errors.field3.message as string) : undefined} variant={props.variant}>\n <RadioButton inputId=\"radiobutton1\" label={'Radiobutton 1'} {...register(field3, { required: errorMessage })} />\n <RadioButton inputId=\"radiobutton2\" label={'Radiobutton 2'} {...register(field3, { required: errorMessage })} />\n <RadioButton inputId=\"radiobutton3\" label={'Radiobutton 3'} {...register(field3, { required: errorMessage })} />\n </FormGroup>,\n <FormGroup key={3} error={errors.field4 ? (errors.field4.message as string) : undefined}>\n <Textarea\n defaultValue={`Dette er en test \\n\\n Hello \\n\\n test \\n\\n test test`}\n grow\n maxCharacters={40}\n minRows={5}\n label=\"Skriv din historie her\"\n textareaId=\"textarea1\"\n {...register(field4, { maxLength: { value: 40, message: errorMessage3 } })}\n />\n </FormGroup>,\n <FormGroup key={4} variant={props.variant} error={errors.field5 ? (errors.field5.message as string) : undefined}>\n <Input\n label={'Skriv inn din tekst'}\n placeholder={'Skriv noe!'}\n icon={Hospital}\n {...register(field5, { required: errorMessage4 })}\n />\n </FormGroup>,\n <FormGroup key={5} variant={props.variant} error={errors.field6 ? (errors.field6.message as string) : undefined}>\n <Select label={'Skriv inn din tekst'} {...register(field6, { validate: requireSelect })}>\n <option value={'Option 1'}>{'Option 1'}</option>\n <option value={'Option 2'}>{'Option 2'}</option>\n <option value={'Option 3'}>{'Option 3'}</option>\n </Select>\n </FormGroup>,\n ];\n } else if (exampleType === FormExampleVariants.checkbox) {\n return (\n <Checkbox\n inputId=\"checkbox1\"\n label={'Checkbox 1'}\n errorText={errors.field1 ? (errors.field1.message as string) : undefined}\n variant={props.variant}\n {...register(field1, { required: errorMessage })}\n />\n );\n } else if (exampleType === FormExampleVariants.radiobutton) {\n return (\n <RadioButton\n inputId=\"radiobutton1\"\n label={'Radiobutton 1'}\n errorText={errors.field3 ? (errors.field3.message as string) : undefined}\n variant={props.variant}\n {...register(field3, { required: errorMessage })}\n />\n );\n } else if (exampleType === FormExampleVariants.textarea) {\n return (\n <Textarea\n defaultValue={`Dette er min historie \\n\\n Hello \\n\\n test`}\n grow\n maxCharacters={40}\n minRows={5}\n errorText={errors.field4 ? (errors.field4.message as string) : undefined}\n label=\"Skriv din historie her\"\n textareaId=\"textarea1\"\n {...register(field4, { maxLength: { value: 40, message: errorMessage3 } })}\n />\n );\n } else if (exampleType === FormExampleVariants.input) {\n return (\n <Input\n inputId=\"input1\"\n label={'Skriv inn din tekst'}\n placeholder={'Skriv noe!'}\n errorText={errors.field5 ? (errors.field5.message as string) : undefined}\n icon={Hospital}\n {...register(field5, { required: errorMessage4 })}\n />\n );\n } else if (exampleType === FormExampleVariants.select) {\n return (\n <Select\n errorText={errors.field6 ? (errors.field6.message as string) : undefined}\n label={'Skriv inn din tekst'}\n {...register(field6, { validate: requireSelect })}\n >\n <option value={'Option 1'}>{'Option 1'}</option>\n <option value={'Option 2'}>{'Option 2'}</option>\n <option value={'Option 3'}>{'Option 3'}</option>\n </Select>\n );\n }\n };\n\n return (\n <form\n onSubmit={handleSubmit(data => {\n // eslint-disable-next-line no-console\n !isTest() && console.log(data);\n })}\n >\n <Validation variant={props.variant} errorSummary={allErrors ? 'Sjekk at alt er riktig utfylt' : undefined}>\n {getFormExample()}\n </Validation>\n <Button type=\"submit\">{'Send inn'}</Button>\n </form>\n );\n};\n\nexport default FormExample;\n"],"names":["isCheckBoxInput","element","isDateObject","value","isNullOrUndefined","isObjectType","isObject","getEventValue","event","getNodeParentName","name","isNameInFieldArray","names","compact","isUndefined","val","get","obj","path","defaultValue","result","key","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","React","getProxyFormState","formState","control","localProxyFormState","isRoot","_key","isEmptyObject","shouldRenderFormState","formStateData","_proxyFormState","convertToArrayPayload","useSubscribe","props","_props","subscription","isString","generateWatchOutput","_names","formValues","isGlobal","isArray","fieldName","isFunction","objectHasFunction","data","appendErrors","validateAllFieldCriteria","errors","type","message","isKey","stringToPath","input","set","object","index","tempPath","length","lastIndex","newValue","objValue","focusFieldBy","fields","callback","fieldsNames","field","_f","currentField","isWatched","isBlurEvent","watchName","updateFieldArrayRootError","error","fieldArrayErrors","isBoolean","isFileInput","isMessage","isRadioInput","isRegex","defaultResult","validResult","getCheckboxValue","options","values","option","defaultReturn","getRadioValue","previous","getValidateError","ref","getValueAndMessage","validationData","validateField","inputValue","shouldUseNativeValidation","isFieldArray","refs","required","maxLength","minLength","min","max","pattern","validate","valueAsNumber","mount","disabled","inputRef","setCustomValidity","isRadio","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueNumber","valueDate","convertTimeToDate","time","isTime","isWeek","maxLengthOutput","minLengthOutput","patternValue","validateError","validationResult","isPlainObject","tempObject","prototypeCopy","isWeb","cloneObject","copy","getValidationModes","mode","baseGet","updatePath","isEmptyArray","unset","childObject","previousObjRef","k","objectRef","currentPaths","currentPathsLength","item","createSubject","_observers","observer","o","isPrimitive","deepEqual","object1","object2","keys1","keys2","val1","val2","isHTMLElement","owner","ElementClass","isMultipleSelect","live","markFieldsDirty","isParentNodeArray","getDirtyFieldsFromDefaultValues","dirtyFieldsFromValues","getDirtyFields","defaultValues","getFieldValueAs","valueAsDate","setValueAs","getFieldValue","getResolverOptions","_fields","criteriaMode","getRuleValue","rule","hasValidation","schemaErrorLookup","foundError","skipValidation","isTouched","isSubmitted","reValidateMode","unsetEmptyArray","defaultOptions","createFormControl","_options","_formState","_defaultValues","_formValues","_stateFlags","delayErrorCallback","timer","validateFields","_subjects","validationModeBeforeSubmit","validationModeAfterSubmit","shouldDisplayAllAssociatedErrors","debounce","wait","_updateValid","isValid","_executeSchema","executeBuiltInValidation","_updateFieldArray","method","args","shouldSetValues","shouldUpdateFieldsAndState","fieldValues","touchedFields","_getDirty","updateErrors","updateValidAndValue","shouldSkipSetValueAs","setFieldValue","updateTouchAndDirty","fieldValue","shouldDirty","shouldRender","isFieldDirty","output","isPreviousFieldTouched","isPreviousFormDirty","isPreviousFieldDirty","shouldRenderByError","fieldState","previousFieldError","shouldUpdateValid","updatedFormState","v","executeSchemaAndUpdateState","shouldOnlyCheckValid","context","isFieldArrayRoot","fieldError","_removeUnmounted","unregister","getValues","_getWatch","_getFieldArray","fieldReference","optionRef","checkboxRef","radioRef","trigger","setValues","fieldKey","setValue","cloneValue","onChange","target","shouldSkipValidation","watched","previousErrorLookupResult","errorLookupResult","fieldNames","getFieldState","clearErrors","inputName","setError","watch","info","register","disabledIsDefined","fieldRef","radioOrCheckbox","_focusError","handleSubmit","onValid","onInvalid","e","hasNoPromiseError","err","resetField","_reset","keepStateOptions","updatedValues","cloneUpdatedValues","form","useForm","_formControl","updateFormState","FormExampleVariants","FormExample","exampleType","field1","field2","field3","field4","field5","field6","allErrors","errorMessage","errorMessage2","errorMessage3","errorMessage4","errorMessage5","requireTwo","requireSelect","getFormExample","allCheckBoxes","Checkbox","FormGroup","FormLayout","FormLayoutColumns","check","RadioButton","Textarea","Input","Hospital","Select","isTest","Validation","Button"],"mappings":"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"}
|