@helsenorge/designsystem-react 2.3.0 → 2.5.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/Button.js +1 -1
- package/Button.js.map +1 -1
- package/CHANGELOG.md +22 -2
- 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/Modal.js +1 -1
- package/Modal.js.map +1 -1
- package/Panel.js +1 -1
- package/Panel.js.map +1 -1
- package/Select.js +2 -0
- package/Select.js.map +1 -0
- package/Textarea.js +1 -1
- package/Textarea.js.map +1 -1
- package/Tooltip.js +1 -1
- package/Tooltip.js.map +1 -1
- package/TooltipWord.js +2 -0
- package/TooltipWord.js.map +1 -0
- package/__mocks__/uuid.js +1 -1
- package/__mocks__/uuid.js.map +1 -1
- package/components/AnchorLink/index.js +1 -1
- package/components/Avatar/index.js +1 -1
- package/components/Avatar/index.js.map +1 -1
- package/components/Button/index.js +1 -1
- package/components/ButtonWithModal/index.js +1 -1
- package/components/ButtonWithModal/index.js.map +1 -1
- package/components/Checkbox/index.js +1 -1
- package/components/Close/index.js +1 -1
- package/components/Dropdown/index.js +1 -1
- package/components/Dropdown/index.js.map +1 -1
- package/components/Duolist/Duolist.d.ts +6 -4
- package/components/Duolist/Duolist.d.ts.map +1 -1
- package/components/Duolist/componentdata.json +1 -1
- package/components/Duolist/index.js +1 -1
- package/components/Duolist/index.js.map +1 -1
- package/components/Duolist/styles.module.scss +0 -1
- package/components/Expander/index.js +1 -1
- package/components/Expander/index.js.map +1 -1
- package/components/ExpanderList/index.js +1 -1
- package/components/ExpanderList/index.js.map +1 -1
- package/components/FormExample/FormExample.d.ts +2 -1
- package/components/FormExample/FormExample.d.ts.map +1 -1
- package/components/FormExample/componentdata.json +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/FormGroup/index.js +1 -1
- package/components/HelpBubble/HelpBubble.d.ts +8 -5
- 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 +41 -34
- package/components/HelpBubble/styles.module.scss.d.ts +9 -10
- package/components/HelpBubble/utils.d.ts +27 -0
- package/components/HelpBubble/utils.d.ts.map +1 -0
- package/components/HelpBubbleExample/componentdata.json +1 -1
- package/components/HelpBubbleExample/index.js +1 -1
- package/components/HelpBubbleExample/index.js.map +1 -1
- package/components/HighlightBox/index.js +1 -1
- package/components/HighlightBox/index.js.map +1 -1
- package/components/HorizontalScroll/index.js +1 -1
- package/components/HorizontalScroll/styles.module.scss +2 -2
- package/components/Icons/AcupunctureBack.js +1 -1
- package/components/Icons/AcupunctureBack.js.map +1 -1
- package/components/Icons/AlarmClock.js +1 -1
- package/components/Icons/AlarmClock.js.map +1 -1
- package/components/Icons/AlertSignFill.js +1 -1
- package/components/Icons/AlertSignFill.js.map +1 -1
- package/components/Icons/AlertSignStroke.js +1 -1
- package/components/Icons/AlertSignStroke.js.map +1 -1
- package/components/Icons/Archive.js +1 -1
- package/components/Icons/Archive.js.map +1 -1
- package/components/Icons/ArrowDown.js +1 -1
- package/components/Icons/ArrowDown.js.map +1 -1
- package/components/Icons/ArrowLeft.js +1 -1
- package/components/Icons/ArrowLeft.js.map +1 -1
- package/components/Icons/ArrowRight.js +1 -1
- package/components/Icons/ArrowRight.js.map +1 -1
- package/components/Icons/ArrowUp.js +1 -1
- package/components/Icons/ArrowUp.js.map +1 -1
- package/components/Icons/ArrowUpRight.js +1 -1
- package/components/Icons/ArrowUpRight.js.map +1 -1
- package/components/Icons/Attachment.js +1 -1
- package/components/Icons/Attachment.js.map +1 -1
- package/components/Icons/Avatar.js +1 -1
- package/components/Icons/Avatar.js.map +1 -1
- package/components/Icons/Bus.js +1 -1
- package/components/Icons/Bus.js.map +1 -1
- package/components/Icons/Calendar.js +1 -1
- package/components/Icons/Calendar.js.map +1 -1
- package/components/Icons/CalendarChange.js +1 -1
- package/components/Icons/CalendarChange.js.map +1 -1
- package/components/Icons/CalendarCheck.js +1 -1
- package/components/Icons/CalendarCheck.js.map +1 -1
- package/components/Icons/CalendarSave.js +1 -1
- package/components/Icons/CalendarSave.js.map +1 -1
- package/components/Icons/Change.js +1 -1
- package/components/Icons/Change.js.map +1 -1
- package/components/Icons/Check.js +1 -1
- package/components/Icons/Check.js.map +1 -1
- package/components/Icons/CheckFill.js +1 -1
- package/components/Icons/CheckFill.js.map +1 -1
- package/components/Icons/ChevronDown.js +1 -1
- package/components/Icons/ChevronDown.js.map +1 -1
- package/components/Icons/ChevronLeft.js +1 -1
- package/components/Icons/ChevronLeft.js.map +1 -1
- package/components/Icons/ChevronRight.js +1 -1
- package/components/Icons/ChevronRight.js.map +1 -1
- package/components/Icons/ChevronUp.js +1 -1
- package/components/Icons/ChevronUp.js.map +1 -1
- package/components/Icons/ChevronsDown.js +1 -1
- package/components/Icons/ChevronsDown.js.map +1 -1
- package/components/Icons/ChevronsUp.js +1 -1
- package/components/Icons/ChevronsUp.js.map +1 -1
- package/components/Icons/Contacts.js +1 -1
- package/components/Icons/Contacts.js.map +1 -1
- package/components/Icons/Copy.js +1 -1
- package/components/Icons/Copy.js.map +1 -1
- package/components/Icons/Download.js +1 -1
- package/components/Icons/Download.js.map +1 -1
- package/components/Icons/EChat.js +1 -1
- package/components/Icons/EChat.js.map +1 -1
- package/components/Icons/EnterFullScreen.js +1 -1
- package/components/Icons/EnterFullScreen.js.map +1 -1
- package/components/Icons/Envelope.js +1 -1
- package/components/Icons/Envelope.js.map +1 -1
- package/components/Icons/Eraser.js +1 -1
- package/components/Icons/Eraser.js.map +1 -1
- package/components/Icons/ErrorSignFill.js +1 -1
- package/components/Icons/ErrorSignFill.js.map +1 -1
- package/components/Icons/ErrorSignStroke.js +1 -1
- package/components/Icons/ErrorSignStroke.js.map +1 -1
- package/components/Icons/ExitFullScreen.js +1 -1
- package/components/Icons/ExitFullScreen.js.map +1 -1
- package/components/Icons/Eye.js +1 -1
- package/components/Icons/Eye.js.map +1 -1
- package/components/Icons/Form.js +1 -1
- package/components/Icons/Form.js.map +1 -1
- package/components/Icons/Forward.js +1 -1
- package/components/Icons/Forward.js.map +1 -1
- package/components/Icons/Gallery.js +1 -1
- package/components/Icons/Gallery.js.map +1 -1
- package/components/Icons/Globe.js +1 -1
- package/components/Icons/Globe.js.map +1 -1
- package/components/Icons/Group.js +1 -1
- package/components/Icons/Group.js.map +1 -1
- package/components/Icons/Heart.js +1 -1
- package/components/Icons/Heart.js.map +1 -1
- package/components/Icons/HelpSign.js +1 -1
- package/components/Icons/HelpSign.js.map +1 -1
- package/components/Icons/History.js +1 -1
- package/components/Icons/History.js.map +1 -1
- package/components/Icons/Home.js +1 -1
- package/components/Icons/Home.js.map +1 -1
- package/components/Icons/Hospital.js +1 -1
- package/components/Icons/Hospital.js.map +1 -1
- package/components/Icons/Hourglass.js +1 -1
- package/components/Icons/Hourglass.js.map +1 -1
- package/components/Icons/Icon.js +1 -1
- package/components/Icons/Icon.js.map +1 -1
- package/components/Icons/InfoSignFill.js +1 -1
- package/components/Icons/InfoSignFill.js.map +1 -1
- package/components/Icons/InfoSignStroke.js +1 -1
- package/components/Icons/InfoSignStroke.js.map +1 -1
- package/components/Icons/Journal.js +1 -1
- package/components/Icons/Journal.js.map +1 -1
- package/components/Icons/List.js +1 -1
- package/components/Icons/List.js.map +1 -1
- package/components/Icons/Location.js +1 -1
- package/components/Icons/Location.js.map +1 -1
- package/components/Icons/Lock.js +1 -1
- package/components/Icons/Lock.js.map +1 -1
- package/components/Icons/Medicine.js +1 -1
- package/components/Icons/Medicine.js.map +1 -1
- package/components/Icons/Menu.js +1 -1
- package/components/Icons/Menu.js.map +1 -1
- package/components/Icons/Minus.js +1 -1
- package/components/Icons/Minus.js.map +1 -1
- package/components/Icons/MobilePhone.js +1 -1
- package/components/Icons/MobilePhone.js.map +1 -1
- package/components/Icons/NoAccess.js +1 -1
- package/components/Icons/NoAccess.js.map +1 -1
- package/components/Icons/NoEye.js +1 -1
- package/components/Icons/NoEye.js.map +1 -1
- package/components/Icons/NoFilter.js +1 -1
- package/components/Icons/NoFilter.js.map +1 -1
- package/components/Icons/PaperPlane.js +1 -1
- package/components/Icons/PaperPlane.js.map +1 -1
- package/components/Icons/Pause.js +1 -1
- package/components/Icons/Pause.js.map +1 -1
- package/components/Icons/Pencil.js +1 -1
- package/components/Icons/Pencil.js.map +1 -1
- package/components/Icons/PersonalPlan.js +1 -1
- package/components/Icons/PersonalPlan.js.map +1 -1
- package/components/Icons/Play.js +1 -1
- package/components/Icons/Play.js.map +1 -1
- package/components/Icons/PlusLarge.js +1 -1
- package/components/Icons/PlusLarge.js.map +1 -1
- package/components/Icons/PlusSmall.js +1 -1
- package/components/Icons/PlusSmall.js.map +1 -1
- package/components/Icons/Printer.js +1 -1
- package/components/Icons/Printer.js.map +1 -1
- package/components/Icons/QrCode.js +1 -1
- package/components/Icons/QrCode.js.map +1 -1
- package/components/Icons/Receptionist.js +1 -1
- package/components/Icons/Receptionist.js.map +1 -1
- package/components/Icons/Referral.js +1 -1
- package/components/Icons/Referral.js.map +1 -1
- package/components/Icons/Refresh.js +1 -1
- package/components/Icons/Refresh.js.map +1 -1
- package/components/Icons/Reply.js +1 -1
- package/components/Icons/Reply.js.map +1 -1
- package/components/Icons/Save.js +1 -1
- package/components/Icons/Save.js.map +1 -1
- package/components/Icons/Search.js +1 -1
- package/components/Icons/Search.js.map +1 -1
- package/components/Icons/SectionSign.js +1 -1
- package/components/Icons/SectionSign.js.map +1 -1
- package/components/Icons/Settings.js +1 -1
- package/components/Icons/Settings.js.map +1 -1
- package/components/Icons/Share.js +1 -1
- package/components/Icons/Share.js.map +1 -1
- package/components/Icons/SpeechBubble.js +1 -1
- package/components/Icons/SpeechBubble.js.map +1 -1
- package/components/Icons/Stopwatch.js +1 -1
- package/components/Icons/Stopwatch.js.map +1 -1
- package/components/Icons/SupportingPerson.js +1 -1
- package/components/Icons/SupportingPerson.js.map +1 -1
- package/components/Icons/Syringe.js +1 -1
- package/components/Icons/Syringe.js.map +1 -1
- package/components/Icons/TimePassing.js +1 -1
- package/components/Icons/TimePassing.js.map +1 -1
- package/components/Icons/Toolbox.js +1 -1
- package/components/Icons/Toolbox.js.map +1 -1
- package/components/Icons/TrashCan.js +1 -1
- package/components/Icons/TrashCan.js.map +1 -1
- package/components/Icons/Undo.js +1 -1
- package/components/Icons/Undo.js.map +1 -1
- package/components/Icons/Upload.js +1 -1
- package/components/Icons/Upload.js.map +1 -1
- package/components/Icons/Vaccine.js +1 -1
- package/components/Icons/Vaccine.js.map +1 -1
- package/components/Icons/VerticalDots.js +1 -1
- package/components/Icons/VerticalDots.js.map +1 -1
- package/components/Icons/VideoCamera.js +1 -1
- package/components/Icons/VideoCamera.js.map +1 -1
- package/components/Icons/VideoChat.js +1 -1
- package/components/Icons/VideoChat.js.map +1 -1
- package/components/Icons/Wallet.js +1 -1
- package/components/Icons/Wallet.js.map +1 -1
- package/components/Icons/Watch.js +1 -1
- package/components/Icons/Watch.js.map +1 -1
- package/components/Icons/X.js +1 -1
- package/components/Icons/X.js.map +1 -1
- package/components/Icons/Zoom.js +1 -1
- package/components/Icons/Zoom.js.map +1 -1
- package/components/Icons/index.js +1 -1
- package/components/Input/Input.d.ts +0 -1
- package/components/Input/Input.d.ts.map +1 -1
- package/components/Input/index.js +1 -1
- package/components/LinkList/LinkList.d.ts +4 -0
- package/components/LinkList/LinkList.d.ts.map +1 -1
- package/components/LinkList/index.js +1 -1
- package/components/LinkList/index.js.map +1 -1
- package/components/Loader/index.js +1 -1
- package/components/Loader/index.js.map +1 -1
- package/components/Modal/Modal.d.ts.map +1 -1
- package/components/Modal/index.js +1 -1
- package/components/NotificationPanel/index.js +1 -1
- package/components/NotificationPanel/index.js.map +1 -1
- package/components/Panel/index.js +1 -1
- package/components/PanelList/index.js +1 -1
- package/components/PanelList/index.js.map +1 -1
- package/components/Progressbar/index.js +1 -1
- package/components/Progressbar/index.js.map +1 -1
- package/components/RadioButton/index.js +1 -1
- package/components/Select/Select.d.ts +30 -0
- package/components/Select/Select.d.ts.map +1 -0
- package/components/Select/componentdata.json +1 -0
- package/components/Select/index.d.ts +4 -0
- package/components/Select/index.d.ts.map +1 -0
- package/components/Select/index.js +2 -0
- package/components/Select/index.js.map +1 -0
- package/components/Select/styles.module.scss +125 -0
- package/components/Select/styles.module.scss.d.ts +21 -0
- package/components/Slider/index.js +1 -1
- package/components/Slider/index.js.map +1 -1
- package/components/StatusDot/index.js +1 -1
- package/components/StatusDot/index.js.map +1 -1
- package/components/Table/TableExpandedRow/index.js +1 -1
- package/components/Table/TableExpanderCell/index.js +1 -1
- package/components/Table/TableHeadCell/index.js +1 -1
- package/components/Table/TableRow/index.js +1 -1
- package/components/Table/index.js +1 -1
- package/components/Table/index.js.map +1 -1
- package/components/Tag/index.js +1 -1
- package/components/Tag/index.js.map +1 -1
- package/components/Textarea/Textarea.d.ts.map +1 -1
- package/components/Textarea/index.js +1 -1
- package/components/Tile/index.js +1 -1
- package/components/Tile/index.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +11 -12
- package/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/components/Tooltip/TooltipWord/TooltipWord.d.ts +20 -0
- package/components/Tooltip/TooltipWord/TooltipWord.d.ts.map +1 -0
- package/components/Tooltip/TooltipWord/componentdata.json +1 -0
- package/components/Tooltip/TooltipWord/index.d.ts +4 -0
- package/components/Tooltip/TooltipWord/index.d.ts.map +1 -0
- package/components/Tooltip/TooltipWord/index.js +2 -0
- package/components/Tooltip/TooltipWord/index.js.map +1 -0
- package/components/Tooltip/{styles.module.scss → TooltipWord/styles.module.scss} +3 -6
- package/components/Tooltip/{styles.module.scss.d.ts → TooltipWord/styles.module.scss.d.ts} +0 -0
- package/components/Tooltip/componentdata.json +1 -1
- package/components/Tooltip/index.js +1 -1
- package/components/TooltipExample/TooltipExample.d.ts.map +1 -1
- package/components/TooltipExample/componentdata.json +1 -1
- package/components/TooltipExample/index.js +1 -1
- package/components/TooltipExample/index.js.map +1 -1
- package/components/Validation/index.js +1 -1
- package/constants.d.ts +2 -0
- package/constants.d.ts.map +1 -1
- package/constants.js +1 -1
- package/constants.js.map +1 -1
- package/hooks/useDelayedState.d.ts +9 -0
- package/hooks/useDelayedState.d.ts.map +1 -0
- package/hooks/useDelayedState.js +2 -0
- package/hooks/useDelayedState.js.map +1 -0
- package/hooks/useFocusTrap.d.ts +2 -1
- package/hooks/useFocusTrap.d.ts.map +1 -1
- package/hooks/useFocusTrap.js +1 -1
- package/hooks/useFocusTrap.js.map +1 -1
- package/hooks/useFocusableElements.js +1 -1
- package/hooks/useFocusableElements.js.map +1 -1
- package/hooks/useIntersectionObserver.d.ts +1 -1
- package/hooks/useIntersectionObserver.d.ts.map +1 -1
- package/hooks/useIntersectionObserver.js.map +1 -1
- package/hooks/useInterval.d.ts +9 -0
- package/hooks/useInterval.d.ts.map +1 -0
- package/hooks/useInterval.js +2 -0
- package/hooks/useInterval.js.map +1 -0
- package/hooks/useIsVisible.d.ts +1 -1
- package/hooks/useIsVisible.d.ts.map +1 -1
- package/hooks/useIsVisible.js +1 -1
- package/hooks/useIsVisible.js.map +1 -1
- package/hooks/useLayoutEvent.js +1 -1
- package/hooks/useLayoutEvent.js.map +1 -1
- package/hooks/useSize.d.ts +2 -1
- package/hooks/useSize.d.ts.map +1 -1
- package/hooks/useSize.js +1 -1
- package/hooks/useSize.js.map +1 -1
- package/hooks/useSticky.js +1 -1
- package/hooks/useSticky.js.map +1 -1
- package/hooks/useUuid.js +1 -1
- package/hooks/useUuid.js.map +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/utils/accessibility.js +2 -0
- package/utils/accessibility.js.map +1 -0
- package/utils/debounce.js +2 -0
- package/utils/debounce.js.map +1 -0
- package/utils/environment.js +2 -0
- package/utils/environment.js.map +1 -0
- package/utils/loremtext.js +2 -0
- package/utils/loremtext.js.map +1 -0
- package/utils/refs.js +2 -0
- package/utils/refs.js.map +1 -0
- package/utils/uuid.js +2 -0
- package/utils/uuid.js.map +1 -0
- package/utils/viewport.js +2 -0
- package/utils/viewport.js.map +1 -0
- package/uuid.js +1 -1
- package/uuid.js.map +1 -1
- package/accessibility.js +0 -2
- package/accessibility.js.map +0 -1
- package/debounce.js +0 -2
- package/debounce.js.map +0 -1
- package/hooks/useGetDOMRect.d.ts +0 -11
- package/hooks/useGetDOMRect.d.ts.map +0 -1
- package/hooks/useGetDOMRect.js +0 -2
- package/hooks/useGetDOMRect.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';\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}\n\nexport const FormExample = (props: FormExampleProps): JSX.Element => {\n const { exampleType = FormExampleVariants.formgroup } = props;\n const { register, handleSubmit, errors } = useForm();\n const field1 = 'field1';\n const field2 = 'field2';\n const field3 = 'field3';\n const field4 = 'field4';\n const field5 = 'field5';\n const allErrors = errors[field1] || errors[field2] || errors[field3] || errors[field4] || errors[field5];\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\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\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 ];\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 }\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","allErrors","errorMessage","errorMessage2","errorMessage3","errorMessage4","allCheckBoxes","React","Checkbox","requireTwo","getFormExample","FormGroup","FormLayout","FormLayoutColumns","check","RadioButton","Textarea","Input","Hospital","isTest","Validation","Button"],"mappings":"26CAEA,IAAIA,GAAiBC,GAAUA,aAAiB,YAEhD,MAAMC,GAAS,CACX,KAAM,OACN,OAAQ,SACR,MAAO,OACX,EACMC,GAAkB,CACpB,OAAQ,SACR,SAAU,WACV,SAAU,WACV,UAAW,YACX,IAAK,KACT,EACMC,GAAS,SACTC,GAAY,YACZC,EAAyB,CAC3B,IAAK,MACL,IAAK,MACL,UAAW,YACX,UAAW,YACX,QAAS,UACT,SAAU,WACV,SAAU,UACd,EAEA,SAASC,GAAqB,CAAE,IAAAC,GAAOC,EAAyBC,EAAc,CACtEV,GAAcQ,CAAG,GAAKE,IACtBF,EAAI,iBAAiBC,EAA0BP,GAAO,OAASA,GAAO,MAAOQ,CAAY,EACzFF,EAAI,iBAAiBN,GAAO,KAAMQ,CAAY,EAEtD,CAEA,IAAIC,EAAqBV,GAAUA,GAAS,KAE5C,MAAMW,GAAgBX,GAAU,OAAOA,GAAU,SACjD,IAAIY,EAAYZ,GAAU,CAACU,EAAkBV,CAAK,GAC9C,CAAC,MAAM,QAAQA,CAAK,GACpBW,GAAaX,CAAK,GAClB,EAAEA,aAAiB,MAEnBa,GAASb,GAAU,QAAQ,KAAKA,CAAK,EAErCc,GAAWd,GAAUA,EAAM,OAAO,OAAO,EAEzCe,GAAgBC,GAAUF,GAAQE,EACjC,QAAQ,SAAU,EAAE,EACpB,QAAQ,MAAO,GAAG,EAClB,QAAQ,MAAO,EAAE,EACjB,MAAM,GAAG,CAAC,EAEf,SAASC,EAAIC,EAAQC,EAAMnB,EAAO,CAC9B,IAAIoB,EAAQ,GACZ,MAAMC,EAAWR,GAAMM,CAAI,EAAI,CAACA,CAAI,EAAIJ,GAAaI,CAAI,EACnDG,EAASD,EAAS,OAClBE,EAAYD,EAAS,EAC3B,KAAO,EAAEF,EAAQE,GAAQ,CACrB,MAAME,EAAMH,EAASD,GACrB,IAAIK,EAAWzB,EACf,GAAIoB,IAAUG,EAAW,CACrB,MAAMG,EAAWR,EAAOM,GACxBC,EACIb,EAASc,CAAQ,GAAK,MAAM,QAAQA,CAAQ,EACtCA,EACC,MAAM,CAACL,EAASD,EAAQ,EAAE,EAEvB,GADA,CAAE,CAEnB,CACDF,EAAOM,GAAOC,EACdP,EAASA,EAAOM,EACnB,CACD,OAAON,CACX,CAEA,IAAIS,GAAwB,CAACC,EAAM5B,EAAQ,KAAO,CAC9C,UAAWwB,KAAOI,EACbf,GAAMW,CAAG,EAAkCxB,EAAMwB,GAAOI,EAAKJ,GAAhDP,EAAIjB,EAAOwB,EAAKI,EAAKJ,EAAI,EAE3C,OAAOxB,CACX,EAEI6B,EAAeC,GAAQA,IAAQ,OAE/BC,EAAM,CAACC,EAAM,GAAIb,EAAMc,IAAiB,CACxC,MAAMC,EAASpB,GAAQK,EAAK,MAAM,WAAW,CAAC,EAAE,OAAO,CAACe,EAAQV,IAASd,EAAkBwB,CAAM,EAAIA,EAASA,EAAOV,GAAOQ,CAAG,EAC/H,OAAOH,EAAYK,CAAM,GAAKA,IAAWF,EACnCH,EAAYG,EAAIb,EAAK,EACjBc,EACAD,EAAIb,GACRe,CACV,EAEIC,GAAoB,CAACC,EAAQC,IAAgB,CAC7C,UAAWb,KAAOY,EACd,GAAIL,EAAIM,EAAab,CAAG,EAAG,CACvB,MAAMc,EAAQF,EAAOZ,GACrB,GAAIc,EAAO,CACP,GAAIA,EAAM,IAAI,OAAST,EAAYS,EAAM,IAAI,MAAK,CAAE,EAChD,MAEC,GAAIA,EAAM,QAAS,CACpBA,EAAM,QAAQ,GAAG,IAAI,MAAK,EAC1B,KACH,CACJ,CACJ,CAET,EAEIC,GAA0B,CAAChC,EAAKiC,IAA4B,CACxDzC,GAAcQ,CAAG,GAAKA,EAAI,sBAC1BA,EAAI,oBAAoBN,GAAO,MAAOuC,CAAuB,EAC7DjC,EAAI,oBAAoBN,GAAO,OAAQuC,CAAuB,EAC9DjC,EAAI,oBAAoBN,GAAO,KAAMuC,CAAuB,EAEpE,EAEA,MAAMC,GAAgB,CAClB,QAAS,GACT,MAAO,IACX,EACA,IAAIC,GAAiBC,GAAY,MAAM,QAAQA,CAAO,EAChDA,EAAQ,OAAO,CAACC,EAAUC,IAAWA,GAAUA,EAAO,IAAI,QACtD,CACE,QAAS,GACT,MAAOA,EAAO,IAAI,KACrB,EACCD,EAAUH,EAAa,EAC3BA,GAEFK,GAA0BH,GAAY,CAAC,GAAGA,CAAO,EAChD,OAAO,CAAC,CAAE,SAAAI,CAAU,IAAKA,CAAQ,EACjC,IAAI,CAAC,CAAE,MAAA/C,CAAO,IAAKA,CAAK,EAEzBgD,GAAgBC,GAAYA,EAAQ,OAAS,QAE7CC,GAAeD,GAAYA,EAAQ,OAAS,OAE5CE,GAAmBF,GAAYA,EAAQ,OAAS,WAEhDG,GAAoBH,GAAYA,EAAQ,OAAS,GAAG9C,cAExD,MAAMkD,GAAgB,CAClB,MAAO,GACP,QAAS,EACb,EACMC,GAAc,CAAE,MAAO,GAAM,QAAS,EAAI,EAChD,IAAIC,GAAoBZ,GAAY,CAChC,GAAI,MAAM,QAAQA,CAAO,EAAG,CACxB,GAAIA,EAAQ,OAAS,EAAG,CACpB,MAAMa,EAASb,EACV,OAAQE,GAAWA,GAAUA,EAAO,IAAI,OAAO,EAC/C,IAAI,CAAC,CAAE,IAAK,CAAE,MAAA7C,CAAO,CAAA,IAAOA,CAAK,EACtC,MAAO,CAAE,MAAOwD,EAAQ,QAAS,CAAC,CAACA,EAAO,OAC7C,CACD,KAAM,CAAE,QAAAC,EAAS,MAAAzD,EAAO,WAAA0D,CAAY,EAAGf,EAAQ,GAAG,IAClD,OAAOc,EACDC,GAAc,CAAC7B,EAAY6B,EAAW,KAAK,EACvC7B,EAAY7B,CAAK,GAAKA,IAAU,GAC5BsD,GACA,CAAE,MAAOtD,EAAO,QAAS,EAAM,EACnCsD,GACJD,EACT,CACD,OAAOA,EACX,EAEA,SAASM,GAAcC,EAAWC,EAAMC,EAAuBC,EAAiBC,EAAoB,CAChG,MAAM1B,EAAQsB,EAAU,QAAQC,GAChC,GAAIvB,EAAO,CACP,KAAM,CAAE,IAAK,CAAE,MAAAtC,EAAO,SAAAiE,CAAU,EAAE,IAAA1D,EAAK,cAAA2D,EAAe,YAAAC,EAAa,WAAAC,CAAa,EAAG9B,EACnF,OAAI2B,GAAYF,EACZ,OAEAb,GAAY3C,CAAG,EACRA,EAAI,MAEXyC,GAAazC,CAAG,EACTmC,GAAcJ,EAAM,OAAO,EAAE,MAEpCc,GAAiB7C,CAAG,EACbuC,GAAuBvC,EAAI,OAAO,EAEzC4C,GAAgB5C,CAAG,EACZgD,GAAiBjB,EAAM,OAAO,EAAE,MAEpC0B,EACDhE,EACAkE,EACIlE,IAAU,GACN,IACA,CAACA,EACLmE,EACI5D,EAAI,YACJ6D,EACIA,EAAWpE,CAAK,EAChBA,CACrB,CACD,GAAI8D,EACA,OAAO/B,EAAI+B,EAAsB,QAASD,CAAI,CAEtD,CAEA,SAASQ,GAAWpB,EAAS,CACzB,OAAKA,EAGD,EAAEA,aAAmB,cACrBA,EAAQ,WAAa,KAAK,cACnB,GAEJoB,GAAWpB,EAAQ,UAAU,EANzB,EAOf,CAEA,IAAIqB,EAAiBtE,GAAUY,EAASZ,CAAK,GAAK,CAAC,OAAO,KAAKA,CAAK,EAAE,OAElEuE,GAAavE,GAAU,OAAOA,GAAU,UAE5C,SAASwE,GAAQtD,EAAQuD,EAAY,CACjC,MAAMnD,EAASmD,EAAW,MAAM,EAAG,EAAE,EAAE,OACvC,IAAIrD,EAAQ,EACZ,KAAOA,EAAQE,GACXJ,EAASW,EAAYX,CAAM,EAAIE,IAAUF,EAAOuD,EAAWrD,MAE/D,OAAOF,CACX,CACA,SAASwD,EAAMxD,EAAQC,EAAM,CACzB,MAAMsD,EAAa5D,GAAMM,CAAI,EAAI,CAACA,CAAI,EAAIJ,GAAaI,CAAI,EACrDwD,EAAcF,EAAW,QAAU,EAAIvD,EAASsD,GAAQtD,EAAQuD,CAAU,EAC1EjD,EAAMiD,EAAWA,EAAW,OAAS,GAC3C,IAAIG,EACAD,GACA,OAAOA,EAAYnD,GAEvB,QAASqD,EAAI,EAAGA,EAAIJ,EAAW,MAAM,EAAG,EAAE,EAAE,OAAQI,IAAK,CACrD,IAAIzD,EAAQ,GACR0D,EACJ,MAAMC,EAAeN,EAAW,MAAM,EAAG,EAAEI,EAAI,EAAE,EAC3CG,EAAqBD,EAAa,OAAS,EAIjD,IAHIF,EAAI,IACJD,EAAiB1D,GAEd,EAAEE,EAAQ2D,EAAa,QAAQ,CAClC,MAAME,EAAOF,EAAa3D,GAC1B0D,EAAYA,EAAYA,EAAUG,GAAQ/D,EAAO+D,GAC7CD,IAAuB5D,IACrBR,EAASkE,CAAS,GAAKR,EAAcQ,CAAS,GAC3C,MAAM,QAAQA,CAAS,GACpB,CAACA,EAAU,OAAQlD,GAAUhB,EAASgB,CAAI,GAAK,CAAC0C,EAAc1C,CAAI,GAAM2C,GAAU3C,CAAI,CAAC,EAAE,UACjGgD,EAAiB,OAAOA,EAAeK,GAAQ,OAAO/D,EAAO+D,IAEjEL,EAAiBE,CACpB,CACJ,CACD,OAAO5D,CACX,CAEA,MAAMgE,GAAY,CAACC,EAAY5E,IAAQ4E,GAAcA,EAAW,MAAQ5E,EACxE,SAAS6E,GAAkCxB,EAAWnD,EAAc6B,EAAOwB,EAAuBuB,EAAkBC,EAAa,CAC7H,KAAM,CAAE,IAAA/E,EAAK,IAAK,CAAE,KAAAsD,CAAM,CAAA,EAAMvB,EAC1BiD,EAAW3B,EAAU,QAAQC,GACnC,GAAI,CAACwB,EAAkB,CACnB,MAAMrF,EAAQ2D,GAAcC,EAAWC,EAAMC,CAAqB,EAClE,CAACjC,EAAY7B,CAAK,GAAKiB,EAAI6C,EAAsB,QAASD,EAAM7D,CAAK,CACxE,CACD,GAAI,CAACO,EAAI,MAAQ,CAACgF,EAAU,CACxB,OAAO3B,EAAU,QAAQC,GACzB,MACH,CACGb,GAAazC,CAAG,GAAK4C,GAAgB5C,CAAG,EACpC,MAAM,QAAQgF,EAAS,OAAO,GAAKA,EAAS,QAAQ,QACpDzE,GAAQyE,EAAS,OAAO,EAAE,QAAQ,CAAC1C,EAAS,CAAE,EAAEzB,IAAU,EACjDiD,GAAWxB,EAAO,GAAG,GAAKqC,GAAUrC,EAAQA,EAAO,GAAG,GACvDyC,KACA/C,GAAwBM,EAAO,IAAKpC,CAAY,EAChDiE,EAAMa,EAAS,QAAS,IAAInE,IAAQ,EAExD,CAAa,EACGmE,EAAS,SAAW,CAACzE,GAAQyE,EAAS,OAAO,EAAE,QAC/C,OAAO3B,EAAU,QAAQC,IAI7B,OAAOD,EAAU,QAAQC,IAGvBQ,GAAW9D,CAAG,GAAK2E,GAAUK,EAAUhF,CAAG,GAAM+E,KACtD/C,GAAwBhC,EAAKE,CAAY,EACzC,OAAOmD,EAAU,QAAQC,GAEjC,CAEA,IAAI2B,GAAexF,GAAUU,EAAkBV,CAAK,GAAK,CAACW,GAAaX,CAAK,EAE5E,SAASyF,GAAUC,EAAQC,EAAQ,CAC/B,GAAIH,GAAYE,CAAM,GAAKF,GAAYG,CAAM,EACzC,OAAOA,EAEX,UAAWnE,KAAOmE,EAAQ,CACtB,MAAMC,EAAcF,EAAOlE,GACrBqE,EAAcF,EAAOnE,GAC3B,GAAI,CACAkE,EAAOlE,GACFZ,EAASgF,CAAW,GAAKhF,EAASiF,CAAW,GACzC,MAAM,QAAQD,CAAW,GAAK,MAAM,QAAQC,CAAW,EACtDJ,GAAUG,EAAaC,CAAW,EAClCA,CACb,MACD,CAAc,CACjB,CACD,OAAOH,CACX,CAEA,SAASI,GAAUC,EAASC,EAASC,EAAe,CAChD,GAAIT,GAAYO,CAAO,GACnBP,GAAYQ,CAAO,GACnBD,aAAmB,MACnBC,aAAmB,KACnB,OAAOD,IAAYC,EAEvB,GAAI,CAACE,GAAeH,CAAO,EAAG,CAC1B,MAAMI,EAAQ,OAAO,KAAKJ,CAAO,EAC3BK,EAAQ,OAAO,KAAKJ,CAAO,EACjC,GAAIG,EAAM,SAAWC,EAAM,OACvB,MAAO,GAEX,UAAW5E,KAAO2E,EAAO,CACrB,MAAME,EAAON,EAAQvE,GACrB,GAAI,EAAEyE,GAAiBzE,IAAQ,OAAQ,CACnC,MAAM8E,EAAON,EAAQxE,GACrB,IAAKZ,EAASyF,CAAI,GAAK,MAAM,QAAQA,CAAI,KACpCzF,EAAS0F,CAAI,GAAK,MAAM,QAAQA,CAAI,GACnC,CAACR,GAAUO,EAAMC,EAAML,CAAa,EACpCI,IAASC,EACX,MAAO,EAEd,CACJ,CACJ,CACD,MAAO,EACX,CAEA,SAASC,GAAe/C,EAAQgD,EAAeC,EAAaC,EAAYC,EAAY,CAChF,IAAIvF,EAAQ,GACZ,KAAO,EAAEA,EAAQoC,EAAO,QAAQ,CAC5B,UAAWhC,KAAOgC,EAAOpC,GACjB,MAAM,QAAQoC,EAAOpC,GAAOI,EAAI,GAChC,CAACiF,EAAYrF,KAAWqF,EAAYrF,GAAS,CAAA,GAC7CqF,EAAYrF,GAAOI,GAAO,CAAA,EAC1B+E,GAAe/C,EAAOpC,GAAOI,GAAMO,EAAIyE,EAAcpF,IAAU,CAAE,EAAEI,EAAK,EAAE,EAAGiF,EAAYrF,GAAOI,GAAMiF,EAAYrF,GAAQI,CAAG,GAG7HsE,GAAU/D,EAAIyE,EAAcpF,IAAU,CAAA,EAAII,CAAG,EAAGgC,EAAOpC,GAAOI,EAAI,EAC5DP,EAAIwF,EAAYrF,IAAU,CAAA,EAAII,CAAG,EAChCiF,EAAYrF,GAAS,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIqF,EAAYrF,EAAM,EAAG,CAAE,CAACI,GAAM,EAAM,CAAA,EAGxGkF,GACI,CAACD,EAAY,QACb,OAAOC,EAAWC,EACzB,CACD,OAAOF,CACX,CACA,IAAIG,GAA2B,CAACpD,EAAQgD,EAAeC,IAAgBhB,GAAUc,GAAe/C,EAAQgD,EAAeC,EAAY,MAAM,EAAGjD,EAAO,MAAM,CAAC,EAAG+C,GAAeC,EAAehD,EAAQiD,EAAY,MAAM,EAAGjD,EAAO,MAAM,CAAC,CAAC,EAEnOqD,EAAY7G,GAAU,OAAOA,GAAU,SAEvC8G,GAAkB,CAAClD,EAAWmD,EAAoB1B,EAAkBtB,EAAiBiD,IAAW,CAChG,MAAMC,EAAS,CAAA,EACf,UAAWpD,KAAQD,EAAU,SACrB/B,EAAYmF,CAAM,IACjBH,EAASG,CAAM,EACVnD,EAAK,WAAWmD,CAAM,EACtB,MAAM,QAAQA,CAAM,GAAKA,EAAO,KAAMpF,GAASiC,EAAK,WAAWjC,CAAI,CAAC,MAC1EqF,EAAOpD,GAAQF,GAAcC,EAAWC,EAAM,OAAWE,CAAe,GAGhF,OAAOsB,EACD1D,GAAsBsF,CAAM,EAC5BxB,GAAUsB,EAAoBpF,GAAsBsF,CAAM,CAAC,CACrE,EAEIC,GAAsB,CAAC,CAAE,OAAAC,EAAQ,KAAAtD,EAAM,MAAAuD,EAAO,YAAAC,EAAa,qBAAAC,KAA4B,CACvF,MAAMC,EAAU1F,EAAYuF,CAAK,EAC3BI,EAAgBzF,EAAIoF,EAAQtD,CAAI,EACtC,OAAS0D,GAAW,CAAC,CAACC,GACjB,CAACD,GAAW,CAACzB,GAAU0B,EAAeJ,EAAO,EAAI,GACjDG,GAAWxF,EAAIuF,EAAsBzD,CAAI,GAAK,CAAC9B,EAAIsF,EAAaxD,CAAI,CAC7E,EAEI4D,GAAWzH,GAAUA,aAAiB,OAEtC0H,GAAsBC,GAAmB/G,EAAS+G,CAAc,GAAK,CAACF,GAAQE,CAAc,EAC1FA,EACA,CACE,MAAOA,EACP,QAAS,EACjB,EAEIC,GAAc5H,GAAU,OAAOA,GAAU,WAEzC6H,GAAa7H,GAAU6G,EAAS7G,CAAK,GAAKkG,GAAelG,CAAK,EAElE,SAAS8H,GAAiB5F,EAAQ3B,EAAKwH,EAAO,WAAY,CACtD,GAAIF,GAAU3F,CAAM,GAAMqC,GAAUrC,CAAM,GAAK,CAACA,EAC5C,MAAO,CACH,KAAA6F,EACA,QAASF,GAAU3F,CAAM,EAAIA,EAAS,GACtC,IAAA3B,CACZ,CAEA,CAEA,IAAIyH,GAAe,CAACnE,EAAMoE,EAA0Bd,EAAQY,EAAMG,IAAYD,EACxE,OAAO,OAAO,OAAO,OAAO,CAAE,EAAEd,EAAOtD,EAAK,EAAG,CAAE,MAAO,OAAO,OAAO,OAAO,OAAO,CAAE,EAAGsD,EAAOtD,IAASsD,EAAOtD,GAAM,MAAQsD,EAAOtD,GAAM,MAAQ,CAAA,CAAI,EAAE,CAAE,CAACkE,GAAOG,GAAW,EAAI,CAAE,CAAC,CAAE,EAAI,GAE7LC,GAAgB,MAAOvE,EAAWqE,EAA0B,CAAE,IAAA1H,EAAK,IAAK,CAAE,MAAAP,GAAS,QAAA2C,EAAS,SAAAyF,EAAU,UAAAC,EAAW,UAAAC,EAAW,IAAAC,EAAK,IAAAC,EAAK,QAAAC,EAAS,SAAAC,CAAW,EAAE5E,IAA0B,CACtL,MAAMD,EAAOtD,EAAI,KACX6G,EAAQ,CAAA,EACRuB,EAAU3F,GAAazC,CAAG,EAC1BqI,EAAazF,GAAgB5C,CAAG,EAChCsI,GAAoBF,GAAWC,EAC/BE,EAAU9I,IAAU,GACpB+I,EAAoBf,GAAa,KAAK,KAAMnE,EAAMoE,EAA0Bb,CAAK,EACjF4B,EAAmB,CAACC,EAAWC,EAAkBC,EAAkBC,EAAU/I,EAAuB,UAAWgJ,EAAUhJ,EAAuB,YAAc,CAChK,MAAM6H,EAAUe,EAAYC,EAAmBC,EAC/C/B,EAAMvD,GAAQ,OAAO,OAAO,CAAE,KAAMoF,EAAYG,EAAUC,EAAS,QAAAnB,EAC/D,IAAA3H,CAAK,EACHwI,EADME,EACYG,EACAC,EADSnB,CAAO,EAEhD,EACI,GAAIE,IACE,CAACO,GAAW,CAACC,IAAeE,GAAWpI,EAAkBV,CAAK,IAC3DuE,GAAUvE,CAAK,GAAK,CAACA,GACrB4I,GAAc,CAACrF,GAAiBZ,CAAO,EAAE,SACzCgG,GAAW,CAACjG,GAAcC,CAAO,EAAE,SAAW,CACnD,KAAM,CAAE,MAAA3C,EAAO,QAAAkI,GAAYL,GAAUO,CAAQ,EACvC,CAAE,MAAO,CAAC,CAACA,EAAU,QAASA,CAAU,EACxCV,GAAmBU,CAAQ,EACjC,GAAIpI,IACAoH,EAAMvD,GAAQ,OAAO,OAAO,CAAE,KAAMxD,EAAuB,SAAU,QAAA6H,EAAS,IAAKW,KACvEjF,EAAU,QAAQC,GAAM,SAAW,IAAI,IAAM,CAAA,GAAI,IACnDtD,CAAG,EAAIwI,EAAkB1I,EAAuB,SAAU6H,CAAO,CAAC,EACxE,CAACD,GACD,OAAOb,CAGlB,CACD,IAAK,CAAC1G,EAAkB6H,CAAG,GAAK,CAAC7H,EAAkB8H,CAAG,IAAMxI,IAAU,GAAI,CACtE,IAAIiJ,EACAK,EACJ,MAAMC,EAAY7B,GAAmBc,CAAG,EAClCgB,EAAY9B,GAAmBa,CAAG,EACxC,GAAK,MAAMvI,CAAK,EASX,CACD,MAAMyJ,EAAYlJ,EAAI,aAAe,IAAI,KAAKP,CAAK,EAC/C6G,EAAS0C,EAAU,KAAK,IACxBN,EAAYQ,EAAY,IAAI,KAAKF,EAAU,KAAK,GAEhD1C,EAAS2C,EAAU,KAAK,IACxBF,EAAYG,EAAY,IAAI,KAAKD,EAAU,KAAK,EAEvD,KAjBkB,CACf,MAAME,EAAcnJ,EAAI,eAAiB,WAAWP,CAAK,EACpDU,EAAkB6I,EAAU,KAAK,IAClCN,EAAYS,EAAcH,EAAU,OAEnC7I,EAAkB8I,EAAU,KAAK,IAClCF,EAAYI,EAAcF,EAAU,MAE3C,CAUD,IAAIP,GAAaK,KACbN,EAAiB,CAAC,CAACC,EAAWM,EAAU,QAASC,EAAU,QAASnJ,EAAuB,IAAKA,EAAuB,GAAG,EACtH,CAAC4H,GACD,OAAOb,CAGlB,CACD,GAAIP,EAAS7G,CAAK,GAAK,CAAC8I,IAAYT,GAAaC,GAAY,CACzD,MAAMqB,EAAkBjC,GAAmBW,CAAS,EAC9CuB,EAAkBlC,GAAmBY,CAAS,EAC9CW,EAAY,CAACvI,EAAkBiJ,EAAgB,KAAK,GACtD3J,EAAM,OAAS2J,EAAgB,MAC7BL,EAAY,CAAC5I,EAAkBkJ,EAAgB,KAAK,GACtD5J,EAAM,OAAS4J,EAAgB,MACnC,IAAIX,GAAaK,KACbN,EAAiBC,EAAWU,EAAgB,QAASC,EAAgB,OAAO,EACxE,CAAC3B,GACD,OAAOb,CAGlB,CACD,GAAIP,EAAS7G,CAAK,GAAKyI,GAAW,CAACK,EAAS,CACxC,KAAM,CAAE,MAAOe,EAAc,QAAA3B,CAAO,EAAKR,GAAmBe,CAAO,EACnE,GAAIhB,GAAQoC,CAAY,GAAK,CAACA,EAAa,KAAK7J,CAAK,IACjDoH,EAAMvD,GAAQ,OAAO,OAAO,CAAE,KAAMxD,EAAuB,QAAS,QAAA6H,EAChE,IAAA3H,CAAG,EAAIwI,EAAkB1I,EAAuB,QAAS6H,CAAO,CAAC,EACjE,CAACD,GACD,OAAOb,CAGlB,CACD,GAAIsB,EAAU,CACV,MAAMvD,EAAaxB,GAAcC,EAAWC,EAAMC,EAAuB,GAAO,EAAI,EAC9EgG,EAAcjB,IAAqBlG,EAAUA,EAAQ,GAAG,IAAMpC,EACpE,GAAIqH,GAAWc,CAAQ,EAAG,CACtB,MAAMxG,EAAS,MAAMwG,EAASvD,CAAU,EAClC4E,EAAgBjC,GAAiB5F,EAAQ4H,CAAW,EAC1D,GAAIC,IACA3C,EAAMvD,GAAQ,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIkG,CAAa,EAAGhB,EAAkB1I,EAAuB,SAAU0J,EAAc,OAAO,CAAC,EACnI,CAAC9B,GACD,OAAOb,CAGlB,SACQxG,EAAS8H,CAAQ,EAAG,CACzB,IAAIsB,EAAmB,CAAA,EACvB,SAAW,CAACxI,EAAKyI,CAAgB,IAAK,OAAO,QAAQvB,CAAQ,EAAG,CAC5D,GAAI,CAACpE,EAAc0F,CAAgB,GAAK,CAAC/B,EACrC,MAEJ,MAAMiC,EAAiB,MAAMD,EAAiB9E,CAAU,EAClD4E,GAAgBjC,GAAiBoC,EAAgBJ,EAAatI,CAAG,EACnEuI,KACAC,EAAmB,OAAO,OAAO,OAAO,OAAO,CAAE,EAAED,EAAa,EAAGhB,EAAkBvH,EAAKuI,GAAc,OAAO,CAAC,EAC5G9B,IACAb,EAAMvD,GAAQmG,GAGzB,CACD,GAAI,CAAC1F,EAAc0F,CAAgB,IAC/B5C,EAAMvD,GAAQ,OAAO,OAAO,CAAE,IAAKiG,GAAeE,CAAgB,EAC9D,CAAC/B,GACD,OAAOb,CAGlB,CACJ,CACD,OAAOA,CACX,EAEA,MAAM+C,GAAU,CAACC,EAAU5G,EAAQ6G,EAAQ,CAAA,IAAO,CAC9C,UAAWC,KAAY9G,EAAQ,CAC3B,MAAM+G,EAAYH,GACbxJ,EAAS4C,CAAM,EACV,IAAI8G,IACJ,IAAIA,MACd9E,GAAYhC,EAAO8G,EAAS,EACtBD,EAAM,KAAKE,CAAQ,EACnBJ,GAAQI,EAAU/G,EAAO8G,GAAWD,CAAK,CAClD,CACD,OAAOA,CACX,EAEA,IAAIG,GAAoB,CAACC,EAAaC,EAAWC,EAAaC,EAAYC,IAAkB,CACxF,IAAI7K,EACJ,OAAA2K,EAAY,IAAID,CAAS,EACpBpG,EAAcmG,CAAW,IAC1BzK,EAAQ+B,EAAI0I,EAAaC,CAAS,GAC9B9J,EAASZ,CAAK,GAAK,MAAM,QAAQA,CAAK,IACtCmK,GAAQO,EAAW1K,CAAK,EAAE,QAAS6D,GAAS8G,EAAY,IAAI9G,CAAI,CAAC,GAGlEhC,EAAY7B,CAAK,EAClB6K,EACID,EACA7I,EAAI6I,EAAYF,CAAS,EAC7B1K,CACV,EAEI8K,GAAiB,CAAC,CAAE,SAAAC,EAAU,WAAAC,EAAY,UAAAC,EAAW,UAAAC,EAAW,mBAAAC,EAAoB,qBAAAC,EAAsB,YAAAC,EAAa,YAAAC,EAAa,QAAAC,CAAO,IACvIA,EACO,GAEF,CAACD,GAAeL,EACd,EAAEC,GAAaG,IAEjBC,EAAcH,EAAqBJ,GACjC,CAACM,GAEHC,EAAcF,EAAuBJ,GACnCK,EAEJ,GAGPG,GAA2B3H,GAASA,EAAK,UAAU,EAAGA,EAAK,QAAQ,GAAG,CAAC,EAE3E,MAAM4H,GAAwB,CAAC5H,EAAM6H,IAAe,OAAO,IAAIA,aAAsB,QAAQ,MAAO,KAAK,EAAE,QAAQ,MAAO,KAAK,CAAC,EAAE,KAAK7H,CAAI,EAC3I,IAAI8H,GAAqB,CAACC,EAAO/H,IAAS,CAAC,GAAG+H,CAAK,EAAE,KAAMC,GAAYJ,GAAsB5H,EAAMgI,CAAO,CAAC,EAEvGC,GAAiB7I,GAAYA,EAAQ,OAAS,GAAG9C,SAErD,SAAS4L,GAAYnI,EAAWoI,EAAgC,CAC5D,MAAMC,EAAW,IAAI,iBAAiB,IAAM,CACxC,UAAW3J,KAAS,OAAO,OAAOsB,EAAU,OAAO,EAC/C,GAAItB,GAASA,EAAM,QACf,UAAWO,KAAUP,EAAM,QACnBO,GAAUA,EAAO,KAAOwB,GAAWxB,EAAO,GAAG,GAC7CmJ,EAA+B1J,CAAK,OAIvCA,GAAS+B,GAAW/B,EAAM,GAAG,GAClC0J,EAA+B1J,CAAK,CAGpD,CAAK,EACD,OAAA2J,EAAS,QAAQ,OAAO,SAAU,CAC9B,UAAW,GACX,QAAS,EACjB,CAAK,EACMA,CACX,CAEA,IAAIC,GAAQ,OAAO,SAAW9L,IAAa,OAAO,WAAaA,GAE/D,SAAS+L,EAAYvK,EAAM,CACvB,IAAIwK,EACJ,IAAIC,EAKJ,GAJI7G,GAAY5D,CAAI,GACfsK,KAAUtK,aAAgB,MAAQ7B,GAAc6B,CAAI,IAGrD,CAAC,CAAC,MAAO,MAAO,SAAU,OAAQ,OAAO,EAAE,UAAUwK,EAAKxK,EAAK,eAAiB,MAAQwK,IAAO,OAAS,OAASA,EAAG,IAAI,EACxH,OAAOxK,EAEX,GAAIA,aAAgB,KAChB,OAAAyK,EAAO,IAAI,KAAKzK,EAAK,QAAS,CAAA,EACvByK,EAEX,GAAIzK,aAAgB,IAAK,CACrByK,EAAO,IAAI,IACX,UAAWpH,KAAQrD,EACfyK,EAAK,IAAIpH,CAAI,EAEjB,OAAOoH,CACV,CACD,GAAIzK,aAAgB,IAAK,CACrByK,EAAO,IAAI,IACX,UAAW7K,KAAOI,EAAK,OACnByK,EAAK,IAAI7K,EAAK2K,EAAYvK,EAAK,IAAIJ,CAAG,CAAC,CAAC,EAE5C,OAAO6K,CACV,CACDA,EAAO,MAAM,QAAQzK,CAAI,EAAI,CAAA,EAAK,CAAA,EAClC,UAAWJ,KAAOI,EACdyK,EAAK7K,GAAO2K,EAAYvK,EAAKJ,EAAI,EAErC,OAAO6K,CACX,CAEA,IAAIC,GAAeC,IAAU,CACzB,WAAY,CAACA,GAAQA,IAASrM,GAAgB,SAC9C,SAAUqM,IAASrM,GAAgB,OACnC,WAAYqM,IAASrM,GAAgB,SACrC,QAASqM,IAASrM,GAAgB,IAClC,UAAWqM,IAASrM,GAAgB,SACxC,GAEIsM,GAA6BjM,GAAQyC,GAAazC,CAAG,GAAK4C,GAAgB5C,CAAG,EAEjF,MAAMkM,GAAoB,OAAO,SAAWrM,GACtCsM,GAAiBR,GAAQ,UAAW,OAAS,OAAO,QAAU9L,GACpE,SAASuM,GAAQ,CAAE,KAAAJ,EAAOrM,GAAgB,SAAU,eAAA0M,EAAiB1M,GAAgB,SAAU,SAAA2M,EAAU,QAAAC,EAAS,cAAAtG,EAAgB,CAAA,EAAI,iBAAAuG,EAAmB,GAAM,iBAAA1H,EAAmB,GAAM,aAAA2H,CAAe,EAAG,GAAI,CAC1M,MAAMpJ,EAAYqJ,EAAO,CAAA,CAAE,EACrBC,EAA6BD,EAAO,CAAA,CAAE,EACtCE,EAAsBF,EAAO,CAAA,CAAE,EAC/BG,EAAiBH,EAAO,IAAI,GAAK,EACjCI,EAAoBJ,EAAO,CAAA,CAAE,EAC7BK,EAA6BL,EAAO,CAAA,CAAE,EACtCM,EAA0BN,EAAO,CAAA,CAAE,EACnCO,EAAiBP,EAAO,CAAA,CAAE,EAC1BQ,EAAmBR,EAAOzG,CAAa,EACvCkH,GAAYT,EAAO,EAAK,EACxBU,EAAgBV,EAAO,EAAK,EAC5BW,EAAkBX,IAClBnJ,EAAwBmJ,EAAO,CAAA,CAAE,EACjCY,EAA6BZ,EAAO,CAAA,CAAE,EACtCa,EAAab,EAAOH,CAAO,EAC3BiB,EAAcd,EAAOJ,CAAQ,EAC7BmB,EAAqBf,EAAO,IAAI,GAAK,EACrCgB,EAAUhB,EAAOX,GAAYC,CAAI,CAAC,EAClC,CAAE,WAAA2B,EAAY,UAAAjD,IAAcgD,EAAQ,QACpCE,EAA6BnB,IAAiB9M,GAAgB,IAC9D,CAACkO,GAAWC,EAAY,EAAIC,GAAS,CACvC,QAAS,GACT,aAAc,GACd,YAAa,CAAE,EACf,YAAa,GACb,YAAa,EACb,QAAS,CAAE,EACX,aAAc,GACd,mBAAoB,GACpB,QAAS,CAACJ,EACV,OAAQ,CAAE,CAClB,CAAK,EACKK,EAAmBtB,EAAO,CAC5B,QAAS,CAACP,GACV,YAAa,CAACA,GACd,QAAS,CAACA,IAAkBzB,GAC5B,aAAc,CAACyB,GACf,aAAc,CAACA,GACf,QAAS,CAACA,EAClB,CAAK,EACK8B,EAAevB,EAAOmB,EAAS,EAC/BK,GAAcxB,IACd,CAAE,SAAU9B,GAAoB,WAAYC,EAAoB,EAAM6B,EAAOX,GAAYM,CAAc,CAAC,EAAE,QAChHkB,EAAW,QAAUhB,EACrBiB,EAAY,QAAUlB,EACtB2B,EAAa,QAAUJ,GACvBtK,EAAsB,QAAUuB,EAC1B,CAAE,EACFf,EAAcR,EAAsB,OAAO,EACvCqI,EAAY3F,CAAa,EACzB1C,EAAsB,QAChC,MAAM4K,EAAkBC,EAAY,CAACC,EAAQ,CAAA,IAAO,CAC3ClB,GAAU,UACXc,EAAa,QAAU,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,EAAa,OAAO,EAAGI,CAAK,EACnFP,GAAaG,EAAa,OAAO,EAExC,EAAE,CAAE,CAAA,EACCK,GAAqB,IAAMN,EAAiB,QAAQ,cACtDG,EAAgB,CACZ,aAAc,EAC1B,CAAS,EACCI,GAA0BH,EAAY,CAAC9K,EAAMuD,EAAO2H,EAAe,GAAOH,EAAQ,CAAE,EAAErH,IAAY,CACpG,IAAIyH,EAAiBD,GACjB7H,GAAoB,CAChB,OAAQsH,EAAa,QAAQ,OAC7B,MAAApH,EACA,KAAAvD,EACA,YAAa2J,EAAe,QAC5B,qBAAsBD,EAAwB,OAC9D,CAAa,EACL,MAAM/F,EAAgBzF,EAAIyM,EAAa,QAAQ,OAAQ3K,CAAI,EACvDuD,GACA1C,EAAM8I,EAAe,QAAS3J,CAAI,EAClCmL,EACIA,GACI,CAACxH,GACD,CAAC1B,GAAU0B,EAAeJ,EAAO,EAAI,EAC7CnG,EAAIuN,EAAa,QAAQ,OAAQ3K,EAAMuD,CAAK,KAGxCrF,EAAIwL,EAAwB,QAAS1J,CAAI,GAAKkK,EAAY,WAC1D9M,EAAIuM,EAAe,QAAS3J,EAAM,EAAI,EACtCmL,EAAiBA,GAAkBxH,GAEvC9C,EAAM8J,EAAa,QAAQ,OAAQ3K,CAAI,IAEtCmL,GAAkB,CAACtO,EAAkBqO,CAAY,GAClD,CAACzK,EAAcsK,CAAK,GACpBL,EAAiB,QAAQ,eACzBG,EAAgB,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAIE,CAAK,EAAIb,EAAY,QAAU,CAAE,QAAS,CAAC,CAACxG,CAAS,EAAG,EAAI,EAAE,CAAE,aAAc,EAAO,CAAA,CAAC,CAE3J,EAAE,CAAE,CAAA,EACC0H,GAAgBN,EAAY,CAAC9K,EAAMqL,IAAa,CAClD,KAAM,CAAE,IAAA3O,EAAK,QAAAoC,CAAO,EAAKiB,EAAU,QAAQC,GACrC7D,EAAQkM,IAASnM,GAAcQ,CAAG,GAAKG,EAAkBwO,CAAQ,EACjE,GACAA,EACFlM,GAAazC,CAAG,GACfoC,GAAW,CAAE,GAAE,QAAQ,CAAC,CAAE,IAAKwM,KAAgBA,EAAS,QAAUA,EAAS,QAAUnP,CAAM,EAEvFkD,GAAY3C,CAAG,GAAK,CAACsG,EAAS7G,CAAK,EACxCO,EAAI,MAAQP,EAEPoD,GAAiB7C,CAAG,EACzB,CAAC,GAAGA,EAAI,OAAO,EAAE,QAAS6O,GAAeA,EAAU,SAAWpP,EAAM,SAASoP,EAAU,KAAK,CAAE,EAEzFjM,GAAgB5C,CAAG,GAAKoC,EAC7BA,EAAQ,OAAS,EACXA,EAAQ,QAAQ,CAAC,CAAE,IAAK0M,CAAW,IAAQA,EAAY,QAAU,MAAM,QAAQrP,CAAK,EAChF,CAAC,CAACA,EAAM,KAAM4B,GAASA,IAASyN,EAAY,KAAK,EACjDrP,IAAUqP,EAAY,KAAM,EAC/B1M,EAAQ,GAAG,IAAI,QAAU,CAAC,CAAC3C,EAGlCO,EAAI,MAAQP,CAEnB,EAAE,CAAE,CAAA,EACCsP,GAAcX,EAAY,CAAC9K,EAAMjC,IAAS,CAC5C,GAAI2M,EAAiB,QAAQ,QAAS,CAClC,MAAMgB,EAAaC,KACnB,OAAA3L,GAAQjC,GAAQX,EAAIsO,EAAY1L,EAAMjC,CAAI,EACnC,CAACkE,GAAUyJ,EAAY9B,EAAiB,OAAO,CACzD,CACD,MAAO,EACV,EAAE,CAAE,CAAA,EACCgC,GAAyBd,EAAY,CAAC9K,EAAMkL,EAAe,KAAS,CACtE,GAAIR,EAAiB,QAAQ,SACzBA,EAAiB,QAAQ,YAAa,CACtC,MAAMmB,EAAe,CAAC5J,GAAU/D,EAAI0L,EAAiB,QAAS5J,CAAI,EAAGF,GAAcC,EAAWC,EAAMC,CAAqB,CAAC,EACpH6L,EAAoB5N,EAAIyM,EAAa,QAAQ,YAAa3K,CAAI,EAC9D+L,EAAkBpB,EAAa,QAAQ,QAC7CkB,EACMzO,EAAIuN,EAAa,QAAQ,YAAa3K,EAAM,EAAI,EAChDa,EAAM8J,EAAa,QAAQ,YAAa3K,CAAI,EAClD,MAAM+K,EAAQ,CACV,QAASU,GAAa,EACtB,YAAad,EAAa,QAAQ,WAClD,EACkBqB,EAAatB,EAAiB,QAAQ,SACxCqB,IAAoBhB,EAAM,SACzBL,EAAiB,QAAQ,aACtBoB,IAAsB5N,EAAIyM,EAAa,QAAQ,YAAa3K,CAAI,EACxE,OAAAgM,GAAad,GAAgBL,EAAgBE,CAAK,EAC3CiB,EAAYjB,EAAQ,EAC9B,CACD,MAAO,EACV,EAAE,CAAE,CAAA,EACCkB,GAAoBnB,EAAY,MAAO9K,EAAMkM,IAAiB,CAOhE,MAAM3I,GAAS,MAAMe,GAAcvE,EAAWuK,EAA4BvK,EAAU,QAAQC,GAAOC,CAAqB,GAAGD,GAC3H,OAAAiL,GAAwBjL,EAAMuD,EAAO2I,CAAY,EAC1ClO,EAAYuF,CAAK,CAChC,EAAO,CAAC0H,GAAyBX,CAA0B,CAAC,EAClD6B,GAAoCrB,EAAY,MAAO/C,GAAU,CACnE,KAAM,CAAE,OAAAzE,GAAW,MAAM4G,EAAY,QAAQyB,GAAS,EAAI1B,EAAW,QAASK,CAA0B,EAClG8B,EAAsBzB,EAAa,QAAQ,QACjD,GAAI,MAAM,QAAQ5C,CAAK,EAAG,CACtB,MAAMsE,EAAgBtE,EACjB,IAAK/H,GAAS,CACf,MAAMuD,EAAQrF,EAAIoF,EAAQtD,CAAI,EAC9B,OAAAuD,EACMnG,EAAIuN,EAAa,QAAQ,OAAQ3K,EAAMuD,CAAK,EAC5C1C,EAAM8J,EAAa,QAAQ,OAAQ3K,CAAI,EACtC,CAACuD,CACxB,CAAa,EACI,MAAM,OAAO,EAClB,OAAAsH,EAAgB,CACZ,QAASpK,EAAc6C,CAAM,EAC7B,aAAc,EAC9B,CAAa,EACM+I,CACV,KACI,CACD,MAAM9I,EAAQrF,EAAIoF,EAAQyE,CAAK,EAC/B,OAAAkD,GAAwBlD,EAAOxE,EAAO6I,IAAwB3L,EAAc6C,CAAM,EAAG,GAAI7C,EAAc6C,CAAM,CAAC,EACvG,CAACC,CACX,CACT,EAAO,CAAC0H,GAAyBX,CAA0B,CAAC,EAClDgC,GAAUxB,EAAY,MAAO9K,GAAS,CACxC,MAAMzB,EAASyB,GAAQ,OAAO,KAAKD,EAAU,OAAO,EAEpD,GADAiL,KACId,EAAY,QACZ,OAAOiC,GAAkC5N,CAAM,EAEnD,GAAI,MAAM,QAAQA,CAAM,EAAG,CACvB,CAACyB,IAAS2K,EAAa,QAAQ,OAAS,CAAE,GAC1C,MAAMtM,EAAS,MAAM,QAAQ,IAAIE,EAAO,IAAI,MAAOR,GAAS,MAAMkO,GAAkBlO,EAAM,IAAI,CAAC,CAAC,EAChG,OAAA8M,EAAgB,CACZ,aAAc,EAC9B,CAAa,EACMxM,EAAO,MAAM,OAAO,CAC9B,CACD,OAAO,MAAM4N,GAAkB1N,CAAM,CAC7C,EAAO,CAAC4N,GAAmCF,EAAiB,CAAC,EACnDM,GAAoBzB,EAAY,CAAC9K,EAAM7D,EAAO,CAAE,YAAAqQ,EAAa,eAAAC,KAAqB,CACpF,MAAM1O,EAAO,CAAA,EACbX,EAAIW,EAAMiC,EAAM7D,CAAK,EACrB,UAAW0K,KAAaP,GAAQtG,EAAM7D,CAAK,EACnC4D,EAAU,QAAQ8G,KAClBuE,GAAcvE,EAAW3I,EAAIH,EAAM8I,CAAS,CAAC,EAC7C2F,GAAeZ,GAAuB/E,CAAS,EAC/C4F,GAAkBH,GAAQzF,CAAS,EAG9C,EAAE,CAACyF,GAASlB,GAAeQ,EAAsB,CAAC,EAC7Cc,GAAmB5B,EAAY,CAAC9K,EAAM7D,EAAOwQ,IAAW,CAI1D,GAHA,CAACnL,GACG,CAACG,GAAYxF,CAAK,GAClBiB,EAAI6C,EAAsB,QAASD,EAAM,MAAM,QAAQ7D,CAAK,EAAI,CAAC,GAAGA,CAAK,EAAI,OAAO,OAAO,CAAE,EAAEA,CAAK,CAAC,EACrG4D,EAAU,QAAQC,GAClBoL,GAAcpL,EAAM7D,CAAK,EACzBwQ,EAAO,aAAef,GAAuB5L,CAAI,EACjD2M,EAAO,gBAAkBL,GAAQtM,CAAI,UAEhC,CAAC2B,GAAYxF,CAAK,IACvBoQ,GAAkBvM,EAAM7D,EAAOwQ,CAAM,EACjCxC,EAAmB,QAAQ,IAAInK,CAAI,GAAG,CACtC,MAAM8C,EAAa6E,GAAwB3H,CAAI,GAAKA,EACpD5C,EAAIiM,EAA2B,QAASrJ,EAAM7D,CAAK,EACnD6N,EAA2B,QAAQlH,GAAY,CAC3C,CAACA,GAAa5E,EAAImL,EAA2B,QAASvG,CAAU,CACpF,CAAiB,GACI4H,EAAiB,QAAQ,SAC1BA,EAAiB,QAAQ,cACzBiC,EAAO,cACPvP,EAAIuN,EAAa,QAAQ,YAAa3K,EAAM+C,GAAyB5G,EAAO+B,EAAI0L,EAAiB,QAAS5J,EAAM,CAAE,CAAA,EAAG9B,EAAIyM,EAAa,QAAQ,YAAa3K,EAAM,EAAE,CAAC,CAAC,EACrK6K,EAAgB,CACZ,QAAS,CAAC5I,GAAU,OAAO,OAAO,OAAO,OAAO,CAAE,EAAE0J,GAAS,CAAE,EAAG,CAAE,CAAC3L,GAAO7D,CAAK,CAAE,EAAGyN,EAAiB,OAAO,CACtI,CAAqB,EAER,CAEL,CAACpI,GAAoBpE,EAAI6C,EAAsB,QAASD,EAAM7D,CAAK,CACtE,EAAE,CAACyP,GAAwBR,GAAemB,EAAiB,CAAC,EACvDK,GAAkB5M,GAAS8J,EAAc,SAC3CP,EAAe,QAAQ,IAAIvJ,CAAI,GAC/BuJ,EAAe,QAAQ,KAAKvJ,EAAK,MAAM,KAAK,GAAK,CAAA,GAAI,EAAE,EACrD6M,GAAuB7M,GAAS,CAClC,IAAI8M,EAAQ,GACZ,GAAI,CAACrM,EAAc+I,EAAkB,OAAO,EACxC,UAAW7L,KAAO6L,EAAkB,SAC5B,CAACxJ,GACD,CAACwJ,EAAkB,QAAQ7L,GAAK,MAChC6L,EAAkB,QAAQ7L,GAAK,IAAIqC,CAAI,GACvCwJ,EAAkB,QAAQ7L,GAAK,IAAIgK,GAAwB3H,CAAI,CAAC,KAChEyJ,EAA2B,QAAQ9L,KACnCmP,EAAQ,IAIpB,OAAOA,CACf,EACI,SAASC,GAAS/M,EAAM7D,EAAOwQ,EAAQ,CACnCD,GAAiB1M,EAAM7D,EAAOwQ,GAAU,CAAE,CAAA,EAC1CC,GAAe5M,CAAI,GAAK6K,IACxBgC,GAAoB7M,CAAI,CAC3B,CACD+J,EAAgB,QAAUA,EAAgB,QACpCA,EAAgB,QAChB,MAAO,CAAE,KAAA7F,EAAM,OAAArC,KAAa,CAC1B,IAAI7B,EAAO6B,EAAO,KAClB,MAAMpD,EAAQsB,EAAU,QAAQC,GAChC,IAAIuD,EACAG,EACJ,GAAIjF,EAAO,CACP,MAAM+I,EAActD,IAAS9H,GAAO,KAC9B4Q,EAAuB/F,GAAe,OAAO,OAAO,CAAE,YAAAO,EACxD,qBAAAD,GACA,mBAAAD,GAAoB,UAAW,CAAC,CAACpJ,EAAIyM,EAAa,QAAQ,QAAS3K,CAAI,EAAG,YAAa2K,EAAa,QAAQ,WAAa,EAAEP,EAAQ,OAAO,CAAC,EAC/I,IAAIW,EAAQa,GAAuB5L,EAAM,EAAK,EAC1CkL,GAAe,CAACzK,EAAcsK,CAAK,GAClC,CAACvD,GAAeoF,GAAe5M,CAAI,EAUxC,GATIwH,GACA,CAACtJ,EAAIyM,EAAa,QAAQ,QAAS3K,CAAI,GACvC0K,EAAiB,QAAQ,UACzBtN,EAAIuN,EAAa,QAAQ,QAAS3K,EAAM,EAAI,EAC5C+K,EAAQ,OAAO,OAAO,OAAO,OAAO,CAAE,EAAEA,CAAK,EAAG,CAAE,QAASJ,EAAa,QAAQ,OAAS,CAAA,GAEzF,CAACnJ,GAAoBlC,GAAgBuC,CAAM,GAC3CzE,EAAI6C,EAAsB,QAASD,EAAMF,GAAcC,EAAWC,CAAI,CAAC,EAEvEgN,EACA,OAACxF,GAAeqF,GAAoB7M,CAAI,GAC/B,CAACS,EAAcsK,CAAK,GACxBG,IAAgBzK,EAAcsK,CAAK,IACpCF,EAAgBE,CAAK,EAG7B,GADAC,KACId,EAAY,QAAS,CACrB,KAAM,CAAE,OAAA5G,GAAW,MAAM4G,EAAY,QAAQyB,GAAS,EAAI1B,EAAW,QAASK,CAA0B,EAClG8B,GAAsBzB,EAAa,QAAQ,QAEjD,GADApH,EAAQrF,EAAIoF,EAAQtD,CAAI,EACpBV,GAAgBuC,CAAM,GACtB,CAAC0B,GACD2G,EAAY,QAAS,CACrB,MAAM+C,EAAiBtF,GAAwB3H,CAAI,EAC7CkN,GAAehP,EAAIoF,EAAQ2J,EAAgB,CAAE,CAAA,EACnDC,GAAa,MACTA,GAAa,UACZ3J,EAAQ2J,IACTD,IACCC,IACGhP,EAAIyM,EAAa,QAAQ,OAAQsC,CAAc,KACnDjN,EAAOiN,EAEd,CACDvJ,EAAUjD,EAAc6C,CAAM,EAC9B8I,KAAwB1I,IAAYwH,GAAe,GACtD,MAEG3H,GAAS,MAAMe,GAAcvE,EAAWuK,EAA4B7L,EAAOwB,CAAqB,GAAGD,GAEvG,CAACwH,GAAeqF,GAAoB7M,CAAI,EACxCiL,GAAwBjL,EAAMuD,EAAO2H,GAAcH,EAAOrH,CAAO,CACpE,CACb,EACI,SAASyJ,GAA2BpP,EAAM,CACtC,GAAI,CAACyD,EAAkB,CACnB,IAAIgH,EAAOF,EAAYvK,CAAI,EAC3B,UAAW5B,KAASgO,EAAmB,QAC/BnN,GAAMb,CAAK,GAAK,CAACqM,EAAKrM,KACtBqM,EAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAI,EAAG,CAAE,CAACrM,GAAQ,CAAA,CAAI,CAAA,GAGrE,OAAOqM,CACV,CACD,OAAOzK,CACV,CACD,SAAS4N,GAAUyB,EAAS,CACxB,GAAIpK,EAASoK,CAAO,EAChB,OAAOtN,GAAcC,EAAWqN,EAASnN,CAAqB,EAElE,GAAI,MAAM,QAAQmN,CAAO,EAAG,CACxB,MAAMrP,EAAO,CAAA,EACb,UAAWiC,KAAQoN,EACfhQ,EAAIW,EAAMiC,EAAMF,GAAcC,EAAWC,EAAMC,CAAqB,CAAC,EAEzE,OAAOlC,CACV,CACD,OAAOoP,GAA2BlK,GAAgBlD,EAAWuI,EAAYrI,EAAsB,OAAO,EAAGuB,CAAgB,CAAC,CAC7H,CACD,MAAM6L,GAAmBvC,EAAY,MAAOnL,EAAS,CAAA,IAAO,CACxD,MAAM2N,EAAmB7M,EAAcV,EAAU,OAAO,EAClD6J,EAAiB,QACjB,GACA,CAAE,OAAAtG,GAAY,MAAM4G,EAAY,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIoD,CAAgB,EAAG3B,GAAS,CAAE,EAAGhM,CAAM,EAAGsK,EAAW,QAASK,CAA0B,GAAM,GACpL5G,EAAUjD,EAAc6C,CAAM,EACpCqH,EAAa,QAAQ,UAAYjH,GAC7BmH,EAAgB,CACZ,QAAAnH,CAChB,CAAa,CACb,EAAO,CAAC4G,CAA0B,CAAC,EACzBiD,GAA2BzC,EAAY,CAACrM,EAAOgD,IAAgB,CACjEF,GAAkCxB,EAAWgK,EAAgB,QAAStL,EAAOwB,EAAuBuB,EAAkBC,CAAW,EAC7HD,IACAX,EAAM8I,EAAe,QAASlL,EAAM,IAAI,IAAI,EAC5CoC,EAAM6I,EAAwB,QAASjL,EAAM,IAAI,IAAI,EAEjE,EAAO,CAAC+C,CAAgB,CAAC,EACfgM,GAAqB1C,EAAa9K,GAAS,CAC7C,GAAI8J,EAAc,QACde,QAEC,CACD,UAAW4C,KAAclE,EAAe,QACpC,GAAIkE,EAAW,WAAWzN,CAAI,EAAG,CAC7B6K,IACA,KACH,CAELgC,GAAoB7M,CAAI,CAC3B,CACJ,EAAE,CAAE,CAAA,EACCmI,GAAiC2C,EAAY,CAACrM,EAAOgD,IAAgB,CACnEhD,IACA8O,GAAyB9O,EAAOgD,CAAW,EACvCD,GAAoB,CAACvE,GAAQwB,EAAM,SAAW,CAAA,CAAE,EAAE,SAClDoC,EAAM8J,EAAa,QAAQ,OAAQlM,EAAM,IAAI,IAAI,EACjDrB,EAAIuN,EAAa,QAAQ,YAAalM,EAAM,IAAI,KAAM,EAAI,EAC1DoM,EAAgB,CACZ,QAASY,GAAa,CAC1C,CAAiB,EACDf,EAAiB,QAAQ,SACrBR,EAAY,SACZmD,KACJG,GAAmB/O,EAAM,IAAI,IAAI,GAGjD,EAAO,CAAC4O,GAAkBE,EAAwB,CAAC,EAC/C,SAASG,GAAY1N,EAAM,CACvBA,IACK,MAAM,QAAQA,CAAI,EAAIA,EAAO,CAACA,CAAI,GAAG,QAAS2N,GAAc5N,EAAU,QAAQ4N,IAAc3Q,GAAM2Q,CAAS,EACtG,OAAOhD,EAAa,QAAQ,OAAOgD,GACnC9M,EAAM8J,EAAa,QAAQ,OAAQgD,CAAS,CAAC,EACvD9C,EAAgB,CACZ,OAAQ7K,EAAO2K,EAAa,QAAQ,OAAS,CAAE,CAC3D,CAAS,CACJ,CACD,SAASiD,GAAS5N,EAAMuD,EAAO,CAC3B,MAAM7G,GAAOqD,EAAU,QAAQC,IAAS,CAAE,GAAE,IAC5C5C,EAAIuN,EAAa,QAAQ,OAAQ3K,EAAM,OAAO,OAAO,OAAO,OAAO,CAAE,EAAEuD,CAAK,EAAG,CAAE,IAAA7G,CAAG,CAAE,CAAC,EACvFmO,EAAgB,CACZ,QAAS,EACrB,CAAS,EACDtH,EAAM,aAAe7G,GAAOA,EAAI,OAASA,EAAI,OAChD,CACD,MAAMmR,GAAgB/C,EAAY,CAACgD,EAAY1P,EAAc2P,IAAY,CACrE,MAAMjH,EAAciH,EACdvE,EAAkB,QAAQuE,GAC1BxE,EAAe,QACrB,IAAI3C,EAAc3D,GAAgBlD,EAAWuI,EAAYrI,EAAsB,OAAO,EAAGuB,EAAkB,GAAOsM,CAAU,EAC5H,GAAI9K,EAAS8K,CAAU,EAAG,CACtB,MAAMb,EAAiBtF,GAAwBmG,CAAU,GAAKA,EAC9D,OAAI3D,EAAmB,QAAQ,IAAI8C,CAAc,IAC7CrG,EAAc,OAAO,OAAO,OAAO,OAAO,CAAE,EAAE0C,EAAoB,OAAO,EAAG1C,CAAW,GAEpFD,GAAkBC,EAAakH,EAAYhH,EAAa9I,EAAYE,EAAI0L,EAAiB,QAASkE,CAAU,CAAC,EAC9G1P,EACAF,EAAI0L,EAAiB,QAASkE,CAAU,EAAG,EAAI,CACxD,CACD,MAAME,EAAwBhQ,EAAYI,CAAY,EAChDwL,EAAiB,QACjBxL,EACN,OAAI,MAAM,QAAQ0P,CAAU,EACjBA,EAAW,OAAO,CAAC/O,EAAUiB,IAAU,OAAO,OAAO,OAAO,OAAO,GAAIjB,CAAQ,EAAG,CAAE,CAACiB,GAAO2G,GAAkBC,EAAa5G,EAAM8G,EAAakH,CAAqB,CAAG,CAAA,EAAI,CAAA,CAAE,GAEvLlE,EAAc,QAAU9L,EAAY+P,CAAO,EACpCjQ,GAAuB,CAAC2C,EAAcmG,CAAW,GAAKA,GACzDoH,CAAqB,EAC5B,EAAE,CAAE,CAAA,EACL,SAASC,GAAMH,EAAY1P,EAAc,CACrC,OAAOyP,GAAcC,EAAY1P,CAAY,CAChD,CACD,SAAS8P,GAAWlO,EAAM,CACtB,UAAW6G,KAAa,MAAM,QAAQ7G,CAAI,EAAIA,EAAO,CAACA,CAAI,EACtDmI,GAA+BpI,EAAU,QAAQ8G,GAAY,EAAI,CAExE,CACD,SAASsH,GAAiBzR,EAAKoC,EAAU,GAAI,CAYzC,KAAM,CAAE,KAAAkB,EAAM,KAAAkE,EAAM,MAAA/H,CAAK,EAAKO,EACxB0R,EAA+B,OAAO,OAAO,CAAE,IAAA1R,CAAG,EAAIoC,CAAO,EAC7DP,EAASwB,EAAU,QACnBiF,EAAoB2D,GAA0BjM,CAAG,EACjD2R,EAAevG,GAAmBqC,EAAmB,QAASnK,CAAI,EAClEsO,GAAcC,IAAelG,KAAU,CAACnM,GAAcQ,CAAG,GAAK6R,KAAe7R,GACnF,IAAI+B,EAAQF,EAAOyB,GACfwO,GAAsB,GACtBpQ,EACJ,GAAIK,IACCuG,EACK,MAAM,QAAQvG,EAAM,OAAO,GACzBxB,GAAQwB,EAAM,OAAO,EAAE,KAAMO,IAClB7C,IAAU6C,GAAO,IAAI,OAASsP,GAAWtP,GAAO,GAAG,CAC7D,EACHsP,GAAW7P,EAAM,GAAG,GAAI,CAC9BF,EAAOyB,GAAQ,OAAO,OAAO,OAAO,OAAO,GAAIvB,CAAK,EAAGK,CAAO,EAC9D,MACH,CACGoF,EACAzF,EAAQuG,EACF,OAAO,OAAO,CAAE,QAAS,CACnB,GAAG/H,GAASwB,GAASA,EAAM,SAAY,CAAA,CAAE,EACzC,CACI,IAAA/B,CACH,CACJ,EAAE,IAAK,CAAE,KAAAwH,EAAM,KAAAlE,EAAQ,EAAElB,CAAO,EAAI,OAAO,OAAO,CAAE,EAAEsP,CAA4B,EAG3F3P,EAAQ2P,EAEZ7P,EAAOyB,GAAQvB,EACf,MAAMgQ,GAAuBzQ,EAAYE,EAAI+B,EAAsB,QAASD,CAAI,CAAC,GAC7E,CAACS,EAAcmJ,EAAiB,OAAO,GAAK,CAAC6E,MAC7CrQ,EAAeF,EAAIuQ,GACb7E,EAAiB,QACjB3J,EAAsB,QAASD,CAAI,EACzCwO,GAAsBxQ,EAAYI,CAAY,EAC1C,CAACoQ,IAAuB,CAACH,GACzBjD,GAAcpL,EAAM5B,CAAY,GAGnCqC,EAAc3B,CAAO,IACtB1B,EAAIsM,EAAwB,QAAS1J,EAAM,EAAI,EAC3C,CAACqK,GAAcK,EAAiB,QAAQ,SACxCpG,GAAcvE,EAAWuK,EAA4B7L,EAAOwB,CAAqB,EAAE,KAAMsD,IAAU,CAC/F,MAAM6I,GAAsBzB,EAAa,QAAQ,QACjDlK,EAAc8C,EAAK,EACbnG,EAAIuM,EAAe,QAAS3J,EAAM,EAAI,EACtCa,EAAM8I,EAAe,QAAS3J,CAAI,EACxCoM,KAAwB3L,EAAc8C,EAAK,GAAKsH,EAAe,CACnF,CAAiB,GAGLrJ,GAAoB,EAAE6M,GAAgBG,KACtC,CAACH,GAAgBxN,EAAM8J,EAAa,QAAQ,YAAa3K,CAAI,EAE7DkE,GACAzH,GAAqBuI,GAAqBvG,EAAM,QAC1CA,EAAM,QAAQA,EAAM,QAAQ,OAAS,GACrCA,EAAOuG,GAAqBiD,GAAcvL,CAAG,EAAGqN,EAAgB,OAAO,CAEpF,CACD,SAAS2E,GAASC,EAAsB7P,EAAS,CAC7C,GAAI,CAAC8J,GACD,GAAI5F,EAAS2L,CAAoB,EAC7BR,GAAiB,CAAE,KAAMQ,CAAsB,EAAE7P,CAAO,UAEnD/B,EAAS4R,CAAoB,GAClC,SAAUA,EACVR,GAAiBQ,EAAsB7P,CAAO,MAG9C,QAAQpC,GAAQA,GAAOyR,GAAiBzR,EAAKiS,CAAoB,CAG5E,CACD,MAAMC,GAAe9D,EAAY,CAAC+D,EAASC,IAAc,MAAOC,GAAM,CAC9DA,GAAKA,EAAE,iBACPA,EAAE,eAAc,EAChBA,EAAE,QAAO,GAEb,IAAIvQ,EAAc,CAAA,EACdoI,EAAcuG,GAA2BlK,GAAgBlD,EAAWuI,EAAYrI,EAAsB,OAAO,EAAGuB,EAAkB,EAAI,CAAC,EAC3IkJ,EAAiB,QAAQ,cACrBG,EAAgB,CACZ,aAAc,EAC9B,CAAa,EACL,GAAI,CACA,GAAIX,EAAY,QAAS,CACrB,KAAM,CAAE,OAAA5G,EAAQ,OAAA3D,CAAQ,EAAG,MAAMuK,EAAY,QAAQtD,EAAaqD,EAAW,QAASK,CAA0B,EAChHK,EAAa,QAAQ,OAASnM,EAAc8E,EAC5CsD,EAAcjH,CACjB,KAEG,WAAWlB,KAAS,OAAO,OAAOsB,EAAU,OAAO,EAC/C,GAAItB,EAAO,CACP,KAAM,CAAE,KAAAuB,CAAI,EAAKvB,EAAM,IACjBuQ,EAAa,MAAM1K,GAAcvE,EAAWuK,EAA4B7L,EAAOwB,CAAqB,EACtG+O,EAAWhP,IACX5C,EAAIoB,EAAawB,EAAMgP,EAAWhP,EAAK,EACvCa,EAAM8I,EAAe,QAAS3J,CAAI,GAE7B9B,EAAIwL,EAAwB,QAAS1J,CAAI,IAC9Ca,EAAM8J,EAAa,QAAQ,OAAQ3K,CAAI,EACvC5C,EAAIuM,EAAe,QAAS3J,EAAM,EAAI,EAE7C,CAGLS,EAAcjC,CAAW,GACzB,OAAO,KAAKmM,EAAa,QAAQ,MAAM,EAAE,MAAO3K,GAASA,KAAQD,EAAU,OAAO,GAClF8K,EAAgB,CACZ,OAAQ,CAAE,EACV,aAAc,EAClC,CAAiB,EACD,MAAMgE,EAAQjI,EAAamI,CAAC,IAG5BpE,EAAa,QAAQ,OAAS,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,EAAa,QAAQ,MAAM,EAAGnM,CAAW,EACvGsQ,GAAc,MAAMA,EAAUnE,EAAa,QAAQ,OAAQoE,CAAC,EAC5D7F,GACI5K,GAAkByB,EAAU,QAAS4K,EAAa,QAAQ,MAAM,EAE3E,QACO,CACJA,EAAa,QAAQ,aAAe,GACpCE,EAAgB,CACZ,YAAa,GACb,aAAc,GACd,mBAAoBpK,EAAckK,EAAa,QAAQ,MAAM,EAC7D,YAAaA,EAAa,QAAQ,YAAc,CAChE,CAAa,CACJ,CACT,EAAO,CAACzB,EAAkBoB,CAA0B,CAAC,EAC3C2E,GAAY,CAAC,CAAE,OAAA3L,EAAQ,QAAA4L,EAAS,YAAAzH,EAAa,QAAA0H,EAAS,QAAAzL,EAAS,YAAA0L,EAAa,YAAAxM,KAAmB,CAC5Fc,IACDiG,EAAe,QAAU,GACzBD,EAAwB,QAAU,IAEtCL,EAA2B,QAAU,GACrCE,EAAe,QAAU,IAAI,IAC7BO,EAAc,QAAU,GACxBe,EAAgB,CACZ,YAAauE,EAAczE,EAAa,QAAQ,YAAc,EAC9D,QAASuE,EAAUvE,EAAa,QAAQ,QAAU,GAClD,YAAalD,EAAckD,EAAa,QAAQ,YAAc,GAC9D,QAASjH,EAAUiH,EAAa,QAAQ,QAAU,GAClD,YAAa/H,EAAc+H,EAAa,QAAQ,YAAc,CAAE,EAChE,QAASwE,EAAUxE,EAAa,QAAQ,QAAU,CAAE,EACpD,OAAQrH,EAASqH,EAAa,QAAQ,OAAS,CAAE,EACjD,aAAc,GACd,mBAAoB,EAChC,CAAS,CACT,EACU0E,GAAQ,CAAC1P,EAAQ2P,EAAiB,CAAA,IAAO,CAC3C,GAAIjH,IACA,UAAW5J,KAAS,OAAO,OAAOsB,EAAU,OAAO,EAC/C,GAAItB,EAAO,CACP,KAAM,CAAE,IAAA/B,EAAK,QAAAoC,CAAS,EAAGL,EACnB8Q,EAAW5G,GAA0BjM,CAAG,GAAK,MAAM,QAAQoC,CAAO,EAClEA,EAAQ,GAAG,IACXpC,EACN,GAAIR,GAAcqT,CAAQ,EACtB,GAAI,CACAA,EAAS,QAAQ,MAAM,EAAE,MAAK,EAC9B,KACH,MACD,CAAc,CAErB,EAGTxP,EAAU,QAAU,GACpB6J,EAAiB,QAAU,OAAO,OAAO,CAAE,EAAGjK,GAAUiK,EAAiB,SACzEjK,GAAUkN,GAAoB,EAAE,EAChC,OAAO,OAAO7C,EAA2B,OAAO,EAAE,QAASwF,GAAoBzL,GAAWyL,CAAe,GAAKA,EAAiB,CAAA,EAC/HvP,EAAsB,QAAUuB,EAC1B,CAAE,EACF8G,EAAY3I,GAAUiK,EAAiB,OAAO,EACpDqF,GAAUK,CAAc,CAChC,EACIG,GAAU,IAAM,CACZzG,GAAY0B,EAAiB,QAAQ,SAAW2C,GAAgB,EAChEzC,GAAY,QACRA,GAAY,SAAW,CAACvC,GAClBuC,GAAY,QACZ1C,GAAYnI,EAAWoI,EAA8B,CAClE,EAAE,CAACA,GAAgCyB,EAAiB,OAAO,CAAC,EAC7D6F,GAAU,IAAM,IAAM,CAClB7E,GAAY,SAAWA,GAAY,QAAQ,WAAU,EACrDf,GAAU,QAAU,GAIpB,OAAO,OAAO9J,EAAU,OAAO,EAAE,QAAStB,GAAU0J,GAA+B1J,EAAO,EAAI,CAAC,CAClG,EAAE,CAAE,CAAA,EACD,CAACuK,GAAY0B,EAAiB,QAAQ,UACtCH,GAAU,QACNtI,GAAU0H,EAAe,QAASD,EAAwB,OAAO,GAC7DjJ,EAAckK,EAAa,QAAQ,MAAM,GAErD,MAAM+E,GAAc,CAChB,QAAApD,GACA,SAAUxB,EAAYiC,GAAU,CAACL,GAAkBJ,EAAO,CAAC,EAC3D,UAAWxB,EAAYa,GAAW,EAAE,EACpC,SAAUb,EAAY4D,GAAU,CAAC9E,EAAiB,OAAO,CAAC,EAC1D,WAAYkB,EAAYoD,GAAY,EAAE,EACtC,UAAWrF,GACL,IAAI,MAAM0B,GAAW,CACnB,IAAK,CAACpM,EAAKwR,IAAS,CAMhB,GAAIA,KAAQxR,EACR,OAAAuM,EAAiB,QAAQiF,GAAQ,GAC1BxR,EAAIwR,EAGlB,CACjB,CAAa,EACCpF,EACd,EACUqF,GAAUC,GAAQ,IAAO,OAAO,OAAO,CAAE,YAAApE,GAC3C,mBAAA+B,GACA,iBAAAhM,EACA,gBAAAqJ,EACA,yBAAA0C,GACA,cAAAM,GAAe,KAAMzD,EAAQ,QAAS,eAAgB,CAClD,mBAAA9C,GACA,qBAAAC,EACH,EAAE,iBAAkByB,EAAWqE,GAAmB,OAAW,UAAAtN,EAC9D,2BAAAiK,EACA,kBAAAR,EACA,2BAAAC,EACA,2BAAAJ,EACA,eAAAM,EACA,wBAAAD,EACA,mBAAAS,EACA,iBAAAO,EACA,aAAAC,EACA,iBAAAf,EACA,sBAAA3J,EACA,oBAAAqJ,CAAqB,EAAEoG,EAAW,EAAI,CACtC9F,EAAiB,QACjB4D,GACAhM,EACA+L,GACAM,EACR,CAAK,EACD,OAAO,OAAO,OAAO,CAAE,MAAAI,GACnB,QAAA2B,GACA,aAAAhB,GAAc,MAAO9D,EAAYuE,GAAO,CAAE,CAAA,EAAG,YAAavE,EAAY4C,GAAa,CAAE,CAAA,EAAG,SAAU5C,EAAY8C,GAAU,EAAE,EAAG,OAAQrD,GAAU,QAAUmF,EAAW,CAC5K,CA6BA,MAAMI,GAAcC,GAAc,IAAI,EACtCD,GAAY,YAAc,aC32Cd,IAAAE,IAAAA,IACVA,EAAA,UAAY,YACZA,EAAA,SAAW,WACXA,EAAA,YAAc,cACdA,EAAA,SAAW,WACXA,EAAA,MAAQ,QALEA,IAAAA,IAAA,CAAA,CAAA,EAQC,MAAAC,GAAeC,GAAyC,CAC7D,KAAA,CAAE,YAAAC,EAAc,WAAkC,EAAAD,EAClD,CAAE,SAAAxB,EAAU,aAAAE,EAAc,OAAAtL,GAAWwF,GAAQ,EAC7CsH,EAAS,SACTC,EAAS,SACTC,EAAS,SACTC,EAAS,SACTC,EAAS,SACTC,EAAYnN,EAAO8M,IAAW9M,EAAO+M,IAAW/M,EAAOgN,IAAWhN,EAAOiN,IAAWjN,EAAOkN,GAC3FE,EAAe,+BACfC,EAAgB,+BAChBC,EAAgB,0CAChBC,EAAgB,0BAEhBC,EAAgB,CACnBC,EAAA,cAAAC,GAAA,CAAS,IAAK,EAAG,QAAQ,YAAY,MAAO,aAAc,IAAKtC,EAAS,CAAE,SAAUgC,EAAc,CAAA,CAAG,EACrGK,EAAA,cAAAC,GAAA,CAAS,IAAK,EAAG,QAAQ,YAAY,MAAO,aAAc,IAAKtC,EAAS,CAAE,SAAUgC,EAAc,CAAA,CAAG,EACrGK,EAAA,cAAAC,GAAA,CAAS,IAAK,EAAG,QAAQ,YAAY,MAAO,aAAc,IAAKtC,EAAS,CAAE,SAAUgC,EAAc,CAAA,CAAG,CAAA,EAGlGO,EAAc9U,GACXA,EAAM,QAAU,GAAKwU,EAGxBO,GAAiB,IAAM,CAC3B,GAAIf,IAAgB,YACX,MAAA,CACJY,EAAA,cAAAI,GAAA,CACC,IAAK,EACL,MAAO,gBACP,OAAQ,gBACR,MAAO7N,EAAO8M,GAAU9M,EAAO8M,GAAQ,QAAU,OACjD,QAASF,EAAM,QACf,KAAME,CAAA,EAELW,EAAA,cAAAK,GAAA,CAAW,WAAYC,GAAkB,GAAA,EACvCP,EAAc,IAAaQ,GACnBA,CACR,CACH,CACF,EACCP,EAAA,cAAAI,GAAA,CACC,IAAK,EACL,OAAQ,gBACR,MAAO7N,EAAO+M,GAAU/M,EAAO+M,GAAQ,QAAU,OACjD,QAASH,EAAM,QACf,KAAMG,CAAA,EAELU,EAAA,cAAAC,GAAA,CAAS,QAAQ,YAAY,MAAO,aAAc,IAAKtC,EAAS,CAAE,SAAUuC,EAAY,CAAA,CAAG,EAC3FF,EAAA,cAAAC,GAAA,CAAS,QAAQ,YAAY,MAAO,aAAc,IAAKtC,EAAS,CAAE,SAAUuC,EAAY,CAAA,CAAG,EAC3FF,EAAA,cAAAC,GAAA,CAAS,QAAQ,YAAY,MAAO,aAAc,IAAKtC,EAAS,CAAE,SAAUuC,EAAY,CAAA,CAAG,CAC9F,EACCF,EAAA,cAAAI,GAAA,CACC,IAAK,EACL,OAAQ,UACR,MAAO7N,EAAOgN,GAAUhN,EAAOgN,GAAQ,QAAU,OACjD,QAASJ,EAAM,QACf,KAAMI,CAAA,EAELS,EAAA,cAAAQ,GAAA,CAAY,QAAQ,eAAe,MAAO,gBAAiB,IAAK7C,EAAS,CAAE,SAAUgC,EAAc,CAAA,CAAG,EACtGK,EAAA,cAAAQ,GAAA,CAAY,QAAQ,eAAe,MAAO,gBAAiB,IAAK7C,EAAS,CAAE,SAAUgC,EAAc,CAAA,CAAG,EACtGK,EAAA,cAAAQ,GAAA,CAAY,QAAQ,eAAe,MAAO,gBAAiB,IAAK7C,EAAS,CAAE,SAAUgC,EAAc,CAAA,CAAG,CACzG,EACCK,EAAA,cAAAI,GAAA,CAAU,IAAK,EAAG,MAAO7N,EAAOiN,GAAUjN,EAAOiN,GAAQ,QAAU,MAAA,EACjEQ,EAAA,cAAAS,GAAA,CACC,aAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YACd,KAAI,GACJ,cAAe,GACf,QAAS,EACT,MAAM,yBACN,WAAW,YACX,KAAMjB,EACN,IAAK7B,EAAS,CAAE,UAAW,CAAE,MAAO,GAAI,QAASkC,CAAc,EAAG,CAAA,CACpE,CACF,EACCG,EAAA,cAAAI,GAAA,CAAU,KAAMX,EAAQ,IAAK,EAAG,QAASN,EAAM,QAAS,MAAO5M,EAAOkN,GAAUlN,EAAOkN,GAAQ,QAAU,MAAA,EACvGO,EAAA,cAAAU,GAAA,CAAM,MAAO,sBAAuB,YAAa,aAAc,KAAMC,GAAU,IAAKhD,EAAS,CAAE,SAAUmC,EAAe,CAAA,CAAG,CAC9H,CAAA,EAEJ,GAAWV,IAAgB,WACzB,OACGY,EAAA,cAAAC,GAAA,CACC,KAAMZ,EACN,QAAQ,YACR,MAAO,aACP,UAAW9M,EAAO8M,GAAU9M,EAAO8M,GAAQ,QAAU,OACrD,QAASF,EAAM,QACf,IAAKxB,EAAS,CAAE,SAAUgC,EAAc,CAAA,CAC1C,EAEJ,GAAWP,IAAgB,cACzB,OACGY,EAAA,cAAAQ,GAAA,CACC,KAAMjB,EACN,QAAQ,eACR,MAAO,gBACP,MAAOhN,EAAOgN,GAAUhN,EAAOgN,GAAQ,QAAU,OACjD,UAAWhN,EAAOgN,GAAUhN,EAAOgN,GAAQ,QAAU,OACrD,QAASJ,EAAM,QACf,IAAKxB,EAAS,CAAE,SAAUgC,EAAc,CAAA,CAC1C,EAEJ,GAAWP,IAAgB,WACzB,OACGY,EAAA,cAAAS,GAAA,CACC,aAAc;AAAA;AAAA;AAAA;AAAA,OACd,KAAI,GACJ,cAAe,GACf,QAAS,EACT,UAAWlO,EAAOiN,GAAUjN,EAAOiN,GAAQ,QAAU,OACrD,MAAM,yBACN,WAAW,YACX,KAAMA,EACN,IAAK7B,EAAS,CAAE,UAAW,CAAE,MAAO,GAAI,QAASkC,CAAc,EAAG,CAAA,CACpE,EAEJ,GAAWT,IAAgB,QACzB,OACGY,EAAA,cAAAU,GAAA,CACC,QAAQ,SACR,MAAO,sBACP,YAAa,aACb,KAAMjB,EACN,UAAWlN,EAAOkN,GAAUlN,EAAOkN,GAAQ,QAAU,OACrD,KAAMkB,GACN,IAAKhD,EAAS,CAAE,SAAUmC,EAAe,CAAA,CAC3C,CAEJ,EAGF,OACGE,EAAA,cAAA,OAAA,CACC,SAAUnC,EAAqB7Q,GAAA,CAE7B,CAAC4T,GAAO,GAAK,QAAQ,IAAI5T,CAAI,CAAA,CAC9B,CAAA,EAEAgT,EAAA,cAAAa,GAAA,CAAW,QAAS1B,EAAM,QAAS,aAAcO,EAAY,gCAAkC,MAC7F,EAAAS,GAAA,CACH,EACCH,EAAA,cAAAc,GAAA,CAAO,KAAK,QAAA,EAAU,UAAW,CACpC,CAEJ"}
|
|
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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"}
|