@effector-reform/react
Version:
React bindings for effector composable forms
2 lines (1 loc) • 2.62 kB
JavaScript
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("@effector-reform/core"),l=require("effector-react"),C=require("react"),E=require("effector");function i(e,r){return r?r.getState(e):e.getState()}function c(e,r){return r?E.scopeBind(e,{scope:r}):e}function y(e,r){return{value:i(e.$value,r),error:i(e.$error,r),meta:i(e.$meta,r),isValid:i(e.$isValid,r),isFocused:i(e.$isFocused,r),onChangeError:c(e.changeError,r),onChange:c(e.change,r),onFocus:c(e.focus,r),onBlur:c(e.blur,r),onChangeMeta:c(e.changeMeta,r)}}function d(e,r){const a={},t=s=>i(s,r),o=s=>c(s,r);for(const s in e){const n=e[s];switch(n["@@type"]){case v.arrayFieldSymbol:{a[s]={values:t(n.$values).map(u=>v.isPrimitiveValue(u)?u:d(u,r)),meta:t(n.$meta),isValid:t(n.$isValid),error:t(n.$error),onChange:o(n.change),onChangeError:o(n.changeError),onReset:o(n.reset),onPush:o(n.push),onSwap:o(n.swap),onMove:o(n.move),onInsert:o(n.insert),onUnshift:o(n.unshift),onRemove:o(n.remove),onPop:o(n.pop),onReplace:o(n.replace),onChangeMeta:o(n.changeMeta)};break}case v.primitiveFieldSymbol:{a[s]={value:t(n.$value),error:t(n.$error),meta:t(n.$meta),isValid:t(n.$isValid),isFocused:t(n.$isFocused),onChangeMeta:o(n.changeMeta),onChangeError:o(n.changeError),onChange:o(n.change),onFocus:o(n.focus),onBlur:o(n.blur)};break}default:a[s]=d(e[s],r)}}return a}function M(e,r,a){const t=[];for(const o of e)t.push(E.createWatch({unit:o,fn:a,scope:r??void 0,batch:!0}));return{subscriptions:t,unsubscribe:()=>{for(const o of t)o.unsubscribe()}}}function P(e){return l.useUnit(e),y(e,l.useProvidedScope())}function R(e){const r=l.useProvidedScope(),{values:a,meta:t,changeMeta:o,change:s,changeError:n,reset:u,pop:g,push:m,replace:b,remove:f,swap:S,move:p,unshift:F,insert:h,...V}=l.useUnit(e);return{values:C.useMemo(()=>a.map($=>v.isPrimitiveValue($)?$:d($,r)),[a]),meta:t,onChangeMeta:o,onChange:s,onChangeError:n,onReset:u,onSwap:S,onMove:p,onUnshift:F,onInsert:h,onReplace:b,onRemove:f,onPop:g,onPush:m,...V}}function U(e,r){const a=l.useProvidedScope(),{values:t,errors:o,snapshot:s,forceUpdateSnapshot:n,submit:u,reset:g,clearOuterErrors:m,clearInnerErrors:b,validate:f,...S}=l.useUnit(e),[p,F]=C.useState(()=>d(e.fields,a));return C.useEffect(()=>{const{unsubscribe:h}=M([e.$values,e.$errors,e.metaChanged],a,()=>F(d(e.fields,a)));return()=>{h(),r!=null&&r.resetOnUnmount&&g()}},[]),{values:t,errors:o,fields:p,snapshot:s,onSubmit:h=>{h.preventDefault(),u()},onForceUpdateSnapshot:n,onReset:g,onValidate:f,onClearOuterErrors:m,onClearInnerErrors:b,...S}}exports.useArrayField=R;exports.useField=P;exports.useForm=U;