UNPKG

@atlas-kitchen/adyen-web

Version:
3 lines (2 loc) 1.62 kB
import{useMemo as e,useReducer as a,useCallback as t,useEffect as r}from"../../external/preact/hooks/dist/hooks.js";import l from"../Validator/Validator.js";import{init as s,getReducer as o}from"./reducer.js";function d(d){const{rules:m={},formatters:i={},defaultData:u={},fieldProblems:c={},schema:n=[]}=d,f=e((()=>new l(m)),[m]),p=({key:e,value:a,mode:t},r)=>{const l=null==i?void 0:i[e],s=function(e){return e&&"formatterFn"in e}(l)?l.formatterFn:l,o=s&&"function"==typeof s?s(null!=a?a:"",r):a;return[o,f.validate({key:e,value:o,mode:t},r)]},[y,h]=a(o(p),{defaultData:u,schema:null!=n?n:[],processField:p,fieldProblems:c},s),v=e((()=>y.schema.reduce(((e,a)=>e&&y.valid[a]),!0)),[y.schema,y.valid]),g=t(((e=null)=>{h({type:"validateForm",selectedSchema:e})}),[]),k=t(((e,a)=>h({type:"setErrors",key:e,value:a})),[]),F=t(((e,a)=>h({type:"setValid",key:e,value:a})),[]),b=t(((e,a)=>h({type:"setData",key:e,value:a})),[]),D=t((e=>h({type:"mergeData",data:e})),[]),P=t((e=>h({type:"setSchema",schema:e,defaultData:u})),[y.schema]),V=t((e=>h({type:"mergeForm",formValue:e})),[]),S=t((e=>h({type:"setFieldProblems",fieldProblems:e})),[y.schema]);return r((()=>{S(null!=c?c:{})}),[JSON.stringify(c)]),{handleChangeFor:(e,a)=>t=>{const r=((e,a)=>a.target?"checkbox"===a.target.type?!y.data[e]:a.target.value:a)(e,t);h({type:"updateField",key:e,value:r,mode:a})},triggerValidation:g,setSchema:P,setData:b,mergeData:D,setValid:F,setErrors:k,isValid:v,mergeForm:V,setFieldProblems:S,schema:y.schema,valid:y.valid,errors:y.errors,data:y.data,fieldProblems:y.fieldProblems}}export{d as default}; //# sourceMappingURL=useForm.js.map