@adyen/adyen-web
Version:
[](https://www.npmjs.com/package/@adyen/adyen-web)
3 lines (2 loc) • 1.68 kB
JavaScript
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";import{useCoreContext as m}from"../../core/Context/CoreProvider.js";function d(d){const{rules:i={},formatters:u={},defaultData:c={},fieldProblems:n={},schema:f=[]}=d,{i18n:p}=m(),y=e(()=>new l(i,p),[i]),h=({key:e,value:a,mode:t},r)=>{const l=null==u?void 0:u[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,y.validate({key:e,value:o,mode:t},r)]},[v,g]=a(o(h),{defaultData:c,schema:null!=f?f:[],processField:h,fieldProblems:n},s),k=e(()=>v.schema.reduce((e,a)=>e&&v.valid[a],!0),[v.schema,v.valid]),F=t((e=null)=>{g({type:"validateForm",selectedSchema:e})},[]),b=t((e,a)=>g({type:"setErrors",key:e,value:a}),[]),P=t((e,a)=>g({type:"setValid",key:e,value:a}),[]),D=t((e,a)=>g({type:"setData",key:e,value:a}),[]),V=t(e=>g({type:"mergeData",data:e}),[]),j=t(e=>g({type:"setSchema",schema:e,defaultData:c}),[v.schema]),x=t(e=>g({type:"mergeForm",formValue:e}),[]),C=t(e=>g({type:"setFieldProblems",fieldProblems:e}),[v.schema]);return r(()=>{C(null!=n?n:{})},[JSON.stringify(n)]),{handleChangeFor:(e,a)=>t=>{const r=((e,a)=>a.target?"checkbox"===a.target.type?!v.data[e]:a.target.value:a)(e,t);g({type:"updateField",key:e,value:r,mode:a})},triggerValidation:F,setSchema:j,setData:D,mergeData:V,setValid:P,setErrors:b,isValid:k,mergeForm:x,setFieldProblems:C,schema:v.schema,valid:v.valid,errors:v.errors,data:v.data,fieldProblems:v.fieldProblems}}export{d as default};
//# sourceMappingURL=useForm.js.map