UNPKG

ponchojs

Version:

Poncho

3 lines (2 loc) 2.61 kB
import{createContext as e,useReducer as t,useEffect as s,useContext as a,useRef as i,useCallback as r}from"react";import{_ as n}from"./tslib.es6-d703c724.js";import{a as c}from"./emotion-react-jsx-runtime.esm-991ce217.js";const l=e=>e&&"object"==typeof e&&!Array.isArray(e),u=(e,t)=>{const s=Object.assign({},e);return l(e)&&l(t)&&Object.keys(t).forEach((a=>{l(t[a])&&a in e?s[a]=u(e[a],t[a]):Object.assign(s,{[a]:t[a]})})),s},o=(e,t="",s={})=>Object.entries(e).reduce(((e,[a,i])=>(a=`${t}${a}`,"object"==typeof i?o(i,`${a}.`,e):s[a]=i,e)),s),p=e=>Object(e)===e?1+Math.max(-1,...Object.values(e).map(p)):0;var j={mergeDeep:u,setObj:(e,t)=>e.split(".").reverse().reduce(((e,s)=>({[s]:e||t})),null),nestedCount:e=>(e=o(e),Object.keys(e).length),objectDepth:p};const b={actualStep:0,steps:[],initialValues:{},fieldsProps:{},validationSchema:{},formik:{values:{},setValues:()=>{}}},d=e([b,()=>{}]),O=(e,t)=>{switch(t.type){case"PREPARE":var{id:s,initialValue:a,validate:i}=t.input,r=(e,t,s)=>{if(t.includes(".")){var a=j.mergeDeep({},j.setObj(t,s||""));return j.mergeDeep(e,a)}return Object.assign(Object.assign({},e),{[t]:s||""})},a=r(e.initialValues,s,a),i=r(e.validationSchema,s,i),s=r(e.fieldsProps,s,t.input);return Object.assign(Object.assign({},e),{initialValues:a,validationSchema:i,fieldsProps:s});case"FORMIK":return Object.assign(Object.assign({},e),{formik:t.formik});case"STEP":return Object.assign(Object.assign({},e),{steps:[...e.steps,t.id]});case"PREV_STEP":var n=e.actualStep;return Object.assign(Object.assign({},e),{actualStep:0!==n?n-1:n});case"NEXT_STEP":var{actualStep:s,steps:n}=e;n=n.length-1;return Object.assign(Object.assign({},e),{actualStep:s!==n?e.actualStep+1:s});case"LOADING":return Object.assign(Object.assign({},e),{loading:t.loading});case"CLEAR":return b;default:return e}},g=e=>{const{children:a,loading:i}=e,r=n(e,["children","loading"]),[l,u]=t(O,Object.assign(Object.assign({},b),r));return s((()=>{u({type:"LOADING",loading:i})}),[i]),c(d.Provider,Object.assign({value:[l,u]},{children:a}),void 0)},m=()=>{var[e]=a(d);return e},v=()=>{const[,e]=a(d);var t=r((t=>{e({type:"FORMIK",formik:t})}),[e]),s=r((t=>{e({type:"PREPARE",input:t})}),[e]),i=r((t=>e({type:"STEP",id:t})),[e]),n=r((()=>e({type:"NEXT_STEP"})),[e]);return{setFormik:t,setPrepared:s,setStep:i,prevStep:r((()=>e({type:"PREV_STEP"})),[e]),nextStep:n}},P=e=>{var{id:t,initialValue:a,validate:r}=e;const n=i(!1);var c=m().initialValues;const l=v().setPrepared;s((()=>{n.current||(l(e),n.current=!0)}),[t,a,l,r,c,e])};export{g as F,P as a,v as b,m as u}; //# sourceMappingURL=useFormContext-57a22edf.js.map