@adyen/adyen-web
Version:
[](https://www.npmjs.com/package/@adyen/adyen-web)
3 lines (2 loc) • 1.65 kB
JavaScript
import{useMemo as e,useReducer as a,useCallback as t,useEffect as r}from"../../external/preact/hooks/dist/hooks.js";import s from"../Validator/Validator.js";import{init as o,getReducer as l}from"./reducer.js";import{useCoreContext as m}from"../../core/Context/CoreProvider.js";function d(d){const{rules:i={},formatters:c={},defaultData:u={},fieldProblems:f={},schema:n=[]}=d,{i18n:p}=m(),y=e(()=>new s(i,p),[i]),h=({key:e,value:a,mode:t},r)=>{const s=c?.[e],o=function(e){return e&&"formatterFn"in e}(s)?s.formatterFn:s,l=o&&"function"==typeof o?o(a??"",r):a;return[l,y.validate({key:e,value:l,mode:t},r)]},[v,g]=a(l(h),{defaultData:u,schema:n??[],processField:h,fieldProblems:f},o),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:u}),[v.schema]),x=t(e=>g({type:"mergeForm",formValue:e}),[]),C=t(e=>g({type:"setFieldProblems",fieldProblems:e}),[v.schema]);return r(()=>{C(f??{})},[JSON.stringify(f)]),{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