@adyen/adyen-web
Version:
[](https://www.npmjs.com/package/@adyen/adyen-web)
3 lines (2 loc) • 2.73 kB
JavaScript
const r=(r,e)=>Object.keys(r).filter(r=>!e.includes(r)).reduce((e,a)=>(e[a]=r[a],e),{}),e=(r,e,a,l,d)=>e.reduce((r,e)=>({...r,[e]:r[e]??d?.[e]??l?.[e]??a}),r);function a({schema:r,defaultData:e,processField:a,fieldProblems:l}){const d=r=>{if(void 0===e[r])return{valid:!1,errors:null,data:null,fieldProblems:l?.[r]??null};const[d,s]=a({key:r,value:e[r],mode:"blur"},{state:{data:e}});return{valid:s.isValid&&!l?.[r]||!1,errors:s.hasError()?s.getError():null,data:d,fieldProblems:l?.[r]??null}},s=r.reduce((r,e)=>{const{valid:a,errors:l,data:s,fieldProblems:t}=d(e);return{valid:{...r.valid,[e]:a},errors:{...r.errors,[e]:l},data:{...r.data,[e]:s},fieldProblems:{...r.fieldProblems,[e]:t}}},{data:{},valid:{},errors:{},fieldProblems:{}});return{schema:r,data:s.data,valid:s.valid,errors:s.errors,fieldProblems:s.fieldProblems}}function l(l){return function(d,{type:s,key:t,value:o,mode:i,schema:c,defaultData:u,formValue:n,selectedSchema:m,fieldProblems:v,data:f}){const b=m||d.schema;switch(s){case"setData":return{...d,data:{...d.data,[t]:o}};case"mergeData":return{...d,data:{...d.data,...f}};case"setValid":return{...d,valid:{...d.valid,[t]:o}};case"setErrors":return{...d,errors:{...d.errors,[t]:o}};case"setFieldProblems":return d?.schema?.reduce((r,e)=>({...r,fieldProblems:{...d.fieldProblems,[e]:v?.[e]??null},valid:{...d.valid,[e]:d.valid?.[e]&&!v[e]}}),d)??d;case"updateField":{const[r,e]=l({key:t,value:o,mode:i},{state:d}),a=d.data[t],s={...d.fieldProblems};return a!==r&&(s[t]=null),{...d,data:{...d.data,[t]:r},errors:{...d.errors,[t]:e.hasError()?e.getError():null},valid:{...d.valid,[t]:e.isValid&&!s[t]||!1},fieldProblems:s}}case"mergeForm":{const r={...d,data:{...d.data,...n.data},errors:{...d.errors,...n.errors},valid:{...d.valid,...n.valid},fieldProblems:{...d.fieldProblems,...n.fieldProblems}};return r.valid&&(r.isValid=Object.values(r.valid).every(r=>r)),r}case"setSchema":{const s=a({schema:c,defaultData:u,processField:l,fieldProblems:v}),t=d.schema.filter(r=>!c.includes(r)),o=c.filter(r=>!d.schema.includes(r)),i={data:r(d.data,o),errors:r(d.errors,o),valid:r(d.valid,o)},n=e(r(d.data,t),o,null,s.data,d.local?.data),m=e(r(d.valid,t),o,!1,s.valid,d.local?.valid),f=e(r(d.errors,t),o,null,s.errors,d.local?.errors);return{...d,schema:c,data:n,valid:m,errors:f,local:i}}case"validateForm":{const r=b.reduce((r,e)=>{const[,a]=l({key:e,value:d.data[e],mode:"blur"},{state:d});return{valid:{...r.valid,[e]:a.isValid&&!d.fieldProblems[e]||!1},errors:{...r.errors,[e]:a.hasError(!0)?a.getError(!0):null}}},{valid:d.valid,errors:d.errors});return{...d,valid:r.valid,errors:r.errors}}default:throw new Error("Undefined useForm action")}}}export{l as getReducer,a as init};
//# sourceMappingURL=reducer.js.map