{"version":3,"file":"useExternalValidation.cjs","sources":["../../../../src/internal/inputs/useExternalValidation.ts"],"sourcesContent":["import type {Dispatch, SetStateAction, MutableRefObject} from 'react';\nimport {useEffect} from 'react';\n\nimport type {ValidationProps} from '@/internal/inputs';\nimport {ValidationState} from '@/internal/inputs';\n\nexport type Props = {\n    validation?: ValidationProps['validation'];\n    setValidity: Dispatch<SetStateAction<keyof typeof ValidationState>>;\n    inputRef: MutableRefObject<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null>;\n    errorMessage?: string;\n};\n\n/**\n * React hook designed to contain effects which synchronize input validation\n * with external validation state via prop or context (TODO).\n * @see ValidationState\n */\nexport const useExternalValidation = ({validation, inputRef, setValidity, errorMessage}: Props) => {\n    useEffect(() => {\n        if (typeof validation === 'string') {\n            setValidity(validation);\n            switch (validation) {\n                case 'valid': {\n                    inputRef.current?.setCustomValidity('');\n                    break;\n                }\n                case 'error': {\n                    inputRef.current?.setCustomValidity(errorMessage || ValidationState.error);\n                    break;\n                }\n                case 'inProgress': {\n                    inputRef.current?.setCustomValidity(errorMessage || ValidationState.inProgress);\n                    break;\n                }\n                default: {\n                    inputRef.current?.setCustomValidity('');\n                }\n            }\n        }\n    }, [errorMessage, inputRef, setValidity, validation]);\n};\n"],"names":["useExternalValidation","validation","inputRef","setValidity","errorMessage","useEffect","ValidationState"],"mappings":"yJAkBaA,EAAwB,CAAC,CAAC,WAAAC,EAAY,SAAAC,EAAU,YAAAC,EAAa,aAAAC,KAAyB,CAC/FC,EAAAA,UAAU,IAAM,CACZ,GAAI,OAAOJ,GAAe,SAEtB,OADAE,EAAYF,CAAU,EACdA,EAAA,CACJ,IAAK,QAAS,CACVC,EAAS,SAAS,kBAAkB,EAAE,EACtC,KACJ,CACA,IAAK,QAAS,CACVA,EAAS,SAAS,kBAAkBE,GAAgBE,EAAAA,gBAAgB,KAAK,EACzE,KACJ,CACA,IAAK,aAAc,CACfJ,EAAS,SAAS,kBAAkBE,GAAgBE,EAAAA,gBAAgB,UAAU,EAC9E,KACJ,CACA,QACIJ,EAAS,SAAS,kBAAkB,EAAE,CAC1C,CAGZ,EAAG,CAACE,EAAcF,EAAUC,EAAaF,CAAU,CAAC,CACxD"}