UNPKG

1.35 kBSource Map (JSON)View Raw
1{"version":3,"sources":["useValidatedState.js"],"names":["useValidatedState","validator","initialValue","state","setState","validation","changed","onChange","nextValue","current","valid"],"mappings":";;;;;;;AAAA;;;;;;;;;;AAKA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,SAAD,EAAYC,YAAZ,EAA6B;AAAA,kBAC3B,qBAASA,YAAT,CAD2B;AAAA;AAAA,MAC9CC,KAD8C;AAAA,MACvCC,QADuC;;AAErD,MAAMC,UAAU,GAAG,mBAAO;AAAEC,IAAAA,OAAO,EAAE;AAAX,GAAP,CAAnB;AAEA,MAAMC,QAAQ,GAAG,wBAAY,UAACC,SAAD,EAAe;AAC1CJ,IAAAA,QAAQ,CAACI,SAAD,CAAR;AACAH,IAAAA,UAAU,CAACI,OAAX,GAAqB;AAAEH,MAAAA,OAAO,EAAE,IAAX;AAAiBI,MAAAA,KAAK,EAAET,SAAS,CAACO,SAAD;AAAjC,KAArB;AACD,GAHgB,EAGd,CAACP,SAAD,CAHc,CAAjB;AAKA,SAAO,CAACE,KAAD,EAAQI,QAAR,EAAkBF,UAAU,CAACI,OAA7B,CAAP;AACD,CAVD;;eAYeT,iB","sourcesContent":["import { useState, useCallback, useRef } from 'react';\n\n/**\n * Returns a state that changes only if the next value pass its validator\n */\nconst useValidatedState = (validator, initialValue) => {\n const [state, setState] = useState(initialValue);\n const validation = useRef({ changed: false });\n\n const onChange = useCallback((nextValue) => {\n setState(nextValue);\n validation.current = { changed: true, valid: validator(nextValue) };\n }, [validator]);\n\n return [state, onChange, validation.current];\n};\n\nexport default useValidatedState;\n"],"file":"useValidatedState.js"}
\No newline at end of file