@owanturist/signal-form 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ var t="onTouch",s="onChange",i="onSubmit",n="onInit";import{batch as r,untracked as e}from"@owanturist/signal";function h(t){return null!=t}function o(t){return null===t}function u(t){return!0===t}function a(t){return Boolean(t)}function c(t,s,i,n,r){const e=s.read(t);return n?n(e,i.read(t)):null!=r?r(e):e}var l=class{static t({i:t}){return t}clone(){return this.i.h().o()}getOutput(t,s){const{l:i,u:n}=this.i;return c(t,i,n,s)}getInitial(t){return this.i.v.read(t)}setInitial(t){r(s=>{this.i.p(s,t)})}getInput(t){return this.i.V.read(t)}setInput(t){r(s=>{this.i.O(s,t)})}getError(t,s){const{m:i,A:n}=this.i;return c(t,i,n,s)}setError(t){r(s=>{this.i.I(s,t)})}getValidateOn(t,s){const{C:i,T:n}=this.i;return c(t,i,n,s)}setValidateOn(t){r(s=>{this.i.k(s,t)})}isValid(t,s){const{q:i,j:n}=this.i;return c(t,i,n,s,u)}isInvalid(t,s){const{S:i,F:n}=this.i;return c(t,i,n,s,a)}isValidated(t,s){const{B:i,W:n}=this.i;return c(t,i,n,s,u)}isDirty(t,s){const{M:i,P:n}=this.i;return c(t,i,n,s,a)}isTouched(t,s){const{D:i,R:n}=this.i;return c(t,i,n,s,a)}setTouched(t){r(s=>{this.i.G(s,t)})}reset(t){r(s=>{this.i.H(s,t)})}onFocusWhenInvalid(t){return this.i.K.J(t)}focusFirstInvalid(){r(t=>{this.i.L(t)?.()})}getSubmitCount(t){return this.i.U.N.read(t)}isSubmitting(t){return this.i.U.X.read(t)>0}onSubmit(t){return this.i.Y.J(t)}async submit(){r(t=>{this.i.U.N.write(t=>t+1),this.i.U.Z(t)});const t=e(t=>{const s=this.i.U.l.read(t);if(!o(s))return this.i.U.tt(t,s).filter(h)});t?t.length>0&&(this.i.U.X.write(t=>t+1),await Promise.all(t),this.i.U.X.write(t=>Math.max(0,t-1))):r(t=>{this.i.U.L(t)?.()})}};function _(t){return t instanceof l}import{Signal as d}from"@owanturist/signal";function f(t,s){return"object"==typeof t&&null!=t&&s in t}function v(t,s){return Object.is(t,s)}function b(t,s){return!!v(t,s)||t.length===s.length&&t.every((t,i)=>v(t,s[i]))}function p(t){return void 0===t}function m(t,s){return s===v||s===Object.is?v:(i,n)=>t(i)||t(n)?i===n:s(i,n)}import{Signal as V,batch as g}from"@owanturist/signal";function O(t){return t}function w(t){return"function"==typeof t}function y(t){let s=null;return()=>(s??(s={it:t()}),s.it)}function I(t,...s){return w(t)?t(...s):t}import{Signal as E}from"@owanturist/signal";var{isArray:x}=Array;function S(t,s){return(x(t)?t:Array.from(t)).map((t,i)=>s(t,i))}var T=class{constructor(){this.st=[]}J(t){return this.st.push(t),()=>{this.st.splice(this.st.indexOf(t),1)}}ot(t){return S(new Set(this.st),s=>s(t))}et(){return 0===this.st.length}},C=class{constructor(t){this.K=new T,this.Y=new T,this.N=E(0),this.X=E(0),this.U=t?.U??this}h(){return this.nt(null)}rt(t){return this.U===t.U?t:t.nt(this)}ht(t){return this.U===t.U}L(t){for(const{i:s}of this.ct(t)){const i=s.L(t);if(i)return i}const s=this.K.et()?null:this.m.read(t);return o(s)?null:()=>{this.K.ot(s)}}tt(t,s){const i=this.ct(t).flatMap(({i:i,lt:n})=>i.tt(t,n(s)));return[...this.Y.ot(s),...i]}},k=class extends l{constructor(t){super(),this.i=t}setTransform(t){this.i.dt(t)}};function F(t){return"object"==typeof t&&h(t)}function q(t){return"string"==typeof t}function j(t){if(!F(t))return[];const s=t.errors??t.issues;return x(s)?S(s.filter(F),({message:t})=>t).filter(q):t instanceof Error?[t.message]:[]}function A(t,s){if("safeParse"in t)return(i=t.safeParse(s)).success?[null,i.data]:[S(f(i.error,"errors")?i.error.errors:i.error.issues,({message:t})=>t),null];var i;try{return[null,t.parse(s)]}catch(t){return[j(t),null]}}var B={ut:!0,vt:t=>[null,t]};function W(t){return{ut:!0,vt:s=>[null,t(s)]}}var P=class r extends C{constructor(r,e,h,u,a,c,l,_,d,f,v){super(r),this._t=e,this.V=h,this.ft=u,this.C=a,this.D=c,this.bt=l,this.Vt=_,this.Ot=d,this.yt=f,this.xt=v,this.o=y(()=>new k(this)),this.At=V(!0),this.gt=this.At;const b=V(t=>{const s=u.read(t);if(!o(s))return[s,null];const i=h.read(t),n=l.read(t),[r,e]=n.vt(i);return o(e)?[p.read(t)?r:null,null]:[null,e]});this.v=V(t=>e.read(t).it.read(t),{equals:d}),this.m=this.A=V(t=>{const[s]=b.read(t);return s},{equals:v}),this.l=this.u=V(t=>{const[,s]=b.read(t);return s},{equals:f}),this.R=c,this.M=this.P=V(t=>_(this.v.read(t),h.read(t))),this.T=a,this.q=this.j=V(t=>!o(this.l.read(t))),this.S=this.F=V(t=>!o(this.m.read(t)));const p=V(!1);this.B=this.W=V(t=>p.read(t)||this.S.read(t),(r,e)=>{p.write(()=>{if(r||l.read(e).ut)return!0;switch(a.read(e)){case n:return!0;case t:return c.read(e);case s:return this.M.read(e);case i:return!1}})}),this.B.write(!1)}nt(t){return new r(t,this._t.clone(({it:t,It:s})=>({it:t.clone(),It:s.clone()})),this.V.clone(),this.ft.clone(),this.C.clone(),this.D.clone(),this.bt.clone(),this.Vt,this.Ot,this.yt,this.xt)}wt(t,s,i){const{It:n,it:r}=this._t.read(t);if(s){const e=s._t.read(t);n.read(t)&&i&&(e.It.write(!0),e.it.write(r.read(t))),this._t.write(e)}else this._t.write({it:r.clone(),It:n.clone()})}p(t,s){const{it:i,It:n}=this._t.read(t);i.write(i=>w(s)?s(i,this.V.read(t)):s),n.write(!0),this.B.write(O)}O(t,s){this.V.write(i=>w(s)?s(i,this.v.read(t)):s),this.B.write(O)}I(t,s){this.ft.write(t=>I(s,t))}k(t,s){const i=this.C.read(t);this.C.write(I(s,i));i!==this.C.read(t)&&this.B.write(!1)}G(t,s){this.D.write(t=>I(s,t)),this.B.write(O)}Z(){this.B.write(!0)}H(t,s){const i=p(s)?this.v.read(t):w(s)?s(this.v.read(t),this.V.read(t)):s;this._t.read(t).it.write(i),this.V.write(i),this.D.write(!1),this.ft.write(null),this.B.write(!1)}ct(){return[]}dt(t){g(()=>{this.bt.write(W(t)),this.B.write(O)})}};function D(s,i){const r=i?.isInputEqual??v,e=i?.isInputDirty??((t,s)=>!r(t,s)),h=i?.initial??s,u=d(s,{equals:r}),a=d({It:d(!p(i?.initial)),it:d(r(h,s)?s:h,{equals:r})}),c=d(i?.touched??!1);if(f(i,"schema")){const s=(l=i.schema,{ut:!1,vt:t=>A(l,t)}),n=m(o,b),h=m(o,i.isOutputEqual??v);return new P(null,a,u,d(i.error??null,{equals:n}),d(i.validateOn??t),c,d(s),e,r,h,n).o()}var l;const _=m(o,i?.isErrorEqual??v),V=d(i?.error??null,{equals:_});if(f(i,"validate")){const s={ut:!1,vt:i.validate},n=m(o,i.isOutputEqual??v);return new P(null,a,u,V,d(i.validateOn??t),c,d(s),e,r,n,_).o()}if(f(i,"transform")){const t=W(i.transform),s=m(o,i.isOutputEqual??v);return new P(null,a,u,V,d(n),c,d(t),e,r,s,_).o()}return new P(null,a,u,V,d(n),c,d(B),e,r,m(o,r),_).o()}function L(t){return t instanceof k}import{Signal as M,batch as R}from"@owanturist/signal";function U(t){return Array.isArray(t)?t.entries():Object.entries(t)}function z(t,s){const i={};for(const[n,r]of U(t))i[n]=s(r,n);return i}var G=class extends l{constructor(t){super(),this.i=t,this.fields={...z(t.Ct,({o:t})=>t()),...z(t.Et,t=>s=>t.read(s))}}};G.t=l.t;import{Signal as H}from"@owanturist/signal";function J(t){return"boolean"==typeof t}var{values:K}=Object;function N(t,s,i,n){const r=t.find(s)??i;for(const s of t)if(s!==r)return n??t;return r}var Q=class s extends C{constructor(s,i,n){super(s),this.o=y(()=>new G(this)),this.v=H(t=>({...z(this.Ct,({v:s})=>s.read(t)),...z(this.Et,s=>s.read(t))})),this.V=H(t=>({...z(this.Ct,({V:s})=>s.read(t)),...z(this.Et,s=>s.read(t))})),this.m=H(t=>{const s=z(this.Ct,({m:s})=>s.read(t));return K(s).every(o)?null:s}),this.A=H(t=>z(this.Ct,({A:s})=>s.read(t))),this.C=H(s=>{const i=z(this.Ct,({C:t})=>t.read(s));return N(K(i),q,t,i)}),this.T=H(t=>z(this.Ct,({T:s})=>s.read(t))),this.D=H(t=>{const s=z(this.Ct,({D:s})=>s.read(t));return N(K(s),J,!1,s)}),this.R=H(t=>z(this.Ct,({R:s})=>s.read(t))),this.l=H(t=>{const s=z(this.Ct,({l:s})=>s.read(t));if(K(s).some(o))return null;const i=z(this.Et,s=>s.read(t));return{...s,...i}}),this.u=H(t=>({...z(this.Ct,({u:s})=>s.read(t)),...z(this.Et,s=>s.read(t))})),this.q=H(t=>{const s=z(this.Ct,({q:s})=>s.read(t));return N(K(s),J,!1,s)}),this.j=H(t=>z(this.Ct,({j:s})=>s.read(t))),this.S=H(t=>{const s=z(this.Ct,({S:s})=>s.read(t));return N(K(s),J,!1,s)}),this.F=H(t=>z(this.Ct,({F:s})=>s.read(t))),this.B=H(t=>{const s=z(this.Ct,({B:s})=>s.read(t));return N(K(s),J,!1,s)}),this.W=H(t=>z(this.Ct,({W:s})=>s.read(t))),this.M=H(t=>{const s=z(this.Ct,({M:s})=>s.read(t));return N(K(s),J,!1,s)}),this.P=H(t=>z(this.Ct,({P:s})=>s.read(t))),this.At=H(t=>{const s=z(this.Ct,({At:s})=>s.read(t));return N(K(s),J,!1,s)}),this.gt=H(t=>z(this.Ct,({gt:s})=>s.read(t))),this.Ct=z(i,t=>this.rt(t)),this.Et=z(n,t=>t.clone())}nt(t){return new s(t,this.Ct,this.Et)}wt(t,s,i){for(const[n,r]of U(this.Ct))r.wt(t,s?.Ct[n],i)}p(t,s){const i=w(s)?s(this.v.read(t),this.V.read(t)):s;for(const[s,n]of U(this.Ct))f(i,s)&&!p(i[s])&&n.p(t,i[s]);for(const[t,s]of U(this.Et))f(i,t)&&!p(i[t])&&s.write(i[t])}O(t,s){const i=w(s)?s(this.V.read(t),this.v.read(t)):s;for(const[s,n]of U(this.Ct))f(i,s)&&!p(i[s])&&n.O(t,i[s])}I(t,s){const i=w(s)?s(this.A.read(t)):s;for(const[s,n]of U(this.Ct))o(i)?n.I(t,i):f(i,s)&&!p(i[s])&&n.I(t,i[s])}k(t,s){const i=w(s)?s(this.T.read(t)):s;for(const[s,n]of U(this.Ct))q(i)?n.k(t,i):f(i,s)&&!p(i[s])&&n.k(t,i[s])}G(t,s){const i=w(s)?s(this.R.read(t)):s;for(const[s,n]of U(this.Ct))J(i)?n.G(t,i):f(i,s)&&!p(i[s])&&n.G(t,i[s])}Z(t){for(const s of K(this.Ct))s.Z(t)}H(t,s){p(s)||this.p(t,s);for(const s of K(this.Ct))s.H(t,void 0)}ct(){return S(U(this.Ct),([t,s])=>({i:s,lt:s=>s[t]}))}};function X(t,{input:s,initial:i,touched:n,validateOn:r,error:e}={}){const[h,o]=function(t,s){const i={},n={};for(const[r,e]of U(t))s(e,r)?i[r]=e:n[r]=e;return[i,n]}(t,_),u=new Q(null,z(h,G.t),z(o,t=>M(t)));return R(t=>{p(s)||u.O(t,s),p(i)||u.p(t,i),p(n)||u.G(t,n),p(r)||u.k(t,r),p(e)||u.I(t,e)}),u.o()}function Y(t){return t instanceof G}import{batch as Z}from"@owanturist/signal";import{Signal as $,batch as tt}from"@owanturist/signal";function st(...t){return t}st.Tt=t=>t,st.kt=(t,s)=>s,st.qt=(t,s,i)=>i;var it=class extends l{constructor(t){super(),this.i=t,this.jt=$(t=>this.i.St(t),{equals:b})}getElements(t,s=st.Tt){return s(this.jt.read(t))}setElements(t){tt(s=>{const i=this.i.Ft(s),n=S(w(t)?t(this.jt.read(s),s):t,l.t),r=S(n,t=>this.i.rt(t));for(const t of r)t.wt(s,void 0,!1);for(const[t,e]of U(r))e.wt(s,i.at(t),!n.at(t)?.ht(e));this.i.jt.write(r)})}};it.t=l.t;import{Signal as nt,untracked as rt}from"@owanturist/signal";function et(t,s){return 0===t.length?s:0===s.length?t:[...t,...s]}function ht(t,s){return s<=0?t:s>=t.length?[]:t.slice(s)}var ot=class s extends C{constructor(s,i){super(s),this.o=y(()=>new it(this)),this.v=nt(t=>S(this.Ft(t),({v:s})=>s.read(t))),this.V=nt(t=>S(this.jt.read(t),({V:s})=>s.read(t))),this.m=nt(t=>{const s=S(this.jt.read(t),({m:s})=>s.read(t));return s.every(o)?null:s}),this.A=nt(t=>S(this.jt.read(t),({A:s})=>s.read(t))),this.C=nt(s=>N(S(this.jt.read(s),({C:t})=>t.read(s)),q,t)),this.T=nt(t=>S(this.jt.read(t),({T:s})=>s.read(t))),this.D=nt(t=>N(S(this.jt.read(t),({D:s})=>s.read(t)),J,!1)),this.R=nt(t=>S(this.jt.read(t),({R:s})=>s.read(t))),this.l=nt(t=>{const s=S(this.jt.read(t),({l:s})=>s.read(t));return s.some(o)?null:s}),this.u=nt(t=>S(this.jt.read(t),({u:s})=>s.read(t))),this.q=nt(t=>N(S(this.jt.read(t),({q:s})=>s.read(t)),J,!1)),this.j=nt(t=>S(this.jt.read(t),({j:s})=>s.read(t))),this.S=nt(t=>N(S(this.jt.read(t),({S:s})=>s.read(t)),J,!1)),this.F=nt(t=>S(this.jt.read(t),({F:s})=>s.read(t))),this.B=nt(t=>N(S(this.jt.read(t),({B:s})=>s.read(t)),J,!1)),this.W=nt(t=>S(this.jt.read(t),({W:s})=>s.read(t))),this.M=nt(t=>{const s=this.jt.read(t),i=this.Ft(t);return N(et(S(s,({M:s,At:n},r)=>r>=i.length?n.read(t):s.read(t)),S(ht(i,s.length),({At:s})=>s.read(t))),J,!1)}),this.P=nt(t=>{const s=this.jt.read(t),i=this.Ft(t);return et(S(s,({P:s,gt:n},r)=>r>=i.length?n.read(t):s.read(t)),S(ht(i,s.length),({gt:s})=>s.read(t)))}),this.At=nt(t=>N(S(this.Ft(t),({At:s})=>s.read(t)),J,!1)),this.gt=nt(t=>S(this.Ft(t),({gt:s})=>s.read(t)));const n=S(i,t=>t.h());this.Bt=nt({Wt:nt(n)}),this.jt=nt(rt(t=>S(i,(s,i)=>{const r=this.rt(s);return r.wt(t,n.at(i),!0),r})))}nt(t){return new s(t,rt(this.jt))}St(t){return S(this.jt.read(t),({o:t})=>t())}Ft(t){return this.Bt.read(t).Wt.read(t)}wt(t,s,i){if(s){const n=this.jt.read(t),r=s.Bt.read(t);this.Bt.write(r);for(const[s,e]of U(r.Wt.read(t)))n.at(s)?.wt(t,e,i)}}p(t,s){const i=w(s)?s(this.v.read(t),this.V.read(t)):s,n=this.jt.read(t),r=this.Bt.read(t),e=r.Wt.read(t),h=S((o=et(e,ht(n,e.length)),(u=i.length)<=0?[]:u>=o.length?o:o.slice(0,u)),t=>t.h());var o,u;r.Wt.write(h);for(const[s,n]of U(i))p(n)||h.at(s)?.p(t,n);for(const[s,i]of U(h))n.at(s)?.wt(t,i,!1)}O(t,s){const i=w(s)?s(this.V.read(t),this.v.read(t)):s;for(const[s,n]of U(this.jt.read(t))){const r=i.at(s);p(r)||n.O(t,r)}}I(t,s){const i=w(s)?s(this.A.read(t)):s;for(const[s,n]of U(this.jt.read(t))){const r=o(i)?i:i.at(s);p(r)||n.I(t,r)}}k(t,s){const i=w(s)?s(this.T.read(t)):s;for(const[s,n]of U(this.Ft(t))){const r=q(i)?i:i.at(s);p(r)||n.k(t,r)}for(const[s,n]of U(this.jt.read(t))){const r=q(i)?i:i.at(s);p(r)||n.k(t,r)}}G(t,s){const i=w(s)?s(this.R.read(t)):s;for(const[s,n]of U(this.jt.read(t))){const r=J(i)?i:i.at(s);p(r)||n.G(t,r)}}Z(t){for(const s of this.jt.read(t))s.Z(t)}H(t,s){p(s)||this.p(t,s);const i=this.Ft(t);for(const s of i)s.H(t,void 0);this.jt.write(S(i,t=>this.rt(t)))}ct(t){return S(this.jt.read(t),(t,s)=>({i:t,lt:t=>t.at(s)}))}};function ut(t,{input:s,initial:i,touched:n,validateOn:r,error:e}={}){const h=new ot(null,S(t,it.t));return Z(t=>{p(s)||h.O(t,s),p(i)||h.p(t,i),p(n)||h.G(t,n),p(r)||h.k(t,r),p(e)||h.I(t,e)}),h.o()}function at(t){return t instanceof it}import{batch as ct}from"@owanturist/signal";var lt=class extends l{constructor(t){super(),this.i=t,this.enabled=t.Mt.o(),this.element=t.Pt.o()}getEnabledElement(t){return this.i.Dt(t)?.o()}};lt.t=l.t;import{Signal as _t}from"@owanturist/signal";var dt=class t extends C{constructor(t,s,i){super(t),this.o=y(()=>new lt(this)),this.v=_t(t=>this.Rt(t,({v:t})=>t)),this.V=_t(t=>this.Rt(t,({V:t})=>t)),this.m=_t(t=>this.zt(t,({m:t})=>t,o,null)),this.A=_t(t=>this.Rt(t,({A:t})=>t)),this.C=_t(t=>this.zt(t,({C:t})=>t,q)),this.T=_t(t=>this.Rt(t,({T:t})=>t)),this.D=_t(t=>this.zt(t,({D:t})=>t,J)),this.R=_t(t=>this.Rt(t,({R:t})=>t)),this.l=_t(t=>{const s=this.Mt.l.read(t);if(!1===s)return;if(o(s))return null;const i=this.Pt.l.read(t);return o(i)?null:i}),this.u=_t(t=>this.Rt(t,({u:t})=>t)),this.q=_t(t=>this.zt(t,({q:t})=>t,J)),this.j=_t(t=>this.Rt(t,({j:t})=>t)),this.S=_t(t=>this.zt(t,({S:t})=>t,J)),this.F=_t(t=>this.Rt(t,({F:t})=>t)),this.B=_t(t=>this.zt(t,({B:t})=>t,J)),this.W=_t(t=>this.Rt(t,({W:t})=>t)),this.M=_t(t=>this.zt(t,({M:t})=>t,J)),this.P=_t(t=>this.Rt(t,({P:t})=>t)),this.At=_t(t=>this.zt(t,({At:t})=>t,J)),this.gt=_t(t=>this.Rt(t,({gt:t})=>t)),this.Mt=this.rt(s),this.Pt=this.rt(i)}Gt(t){return u(this.Mt.l.read(t))}Dt(t){return this.Gt(t)?this.Pt:void 0}nt(s){return new t(s,this.Mt,this.Pt)}zt(t,s,i,n){const r=s(this.Mt).read(t),e=this.Dt(t);if(!e)return i(r)||p(n)?r:{enabled:r,element:n};const h=s(e).read(t);return N([r,h],i,r,{enabled:r,element:h})}Rt(t,s){return{enabled:s(this.Mt).read(t),element:s(this.Pt).read(t)}}p(t,s){const{enabled:i,element:n}=w(s)?s(this.v.read(t),this.V.read(t)):s;p(i)||this.Mt.p(t,i),p(n)||this.Pt.p(t,n)}wt(t,s,i){this.Mt.wt(t,s?.Mt,i),this.Pt.wt(t,s?.Pt,i)}O(t,s){const{enabled:i,element:n}=w(s)?s(this.V.read(t),this.v.read(t)):s;p(i)||this.Mt.O(t,i),p(n)||this.Pt.O(t,n)}I(t,s){const i=w(s)?s(this.A.read(t)):s,n=o(i)?i:i.enabled;p(n)||this.Mt.I(t,n);const r=o(i)?this.Gt(t)?i:void 0:i.element;p(r)||this.Pt.I(t,r)}k(t,s){const i=w(s)?s(this.T.read(t)):s,[n,r]=q(i)?[i,this.Gt(t)?i:void 0]:[i.enabled,i.element];p(n)||this.Mt.k(t,n),p(r)||this.Pt.k(t,r)}G(t,s){const i=w(s)?s(this.R.read(t)):s,[n,r]=J(i)?[i,this.Gt(t)?i:void 0]:[i.enabled,i.element];p(n)||this.Mt.G(t,n),p(r)||this.Pt.G(t,r)}Z(t){this.Mt.Z(t),this.Pt.Z(t)}H(t,s){p(s)||this.p(t,s),this.Mt.H(t,void 0),this.Pt.H(t,void 0)}ct(t){const s=this.Mt.l.read(t),i={i:this.Mt,lt:()=>s};return!0!==s?[i]:[i,{i:this.Pt,lt:t=>t}]}};function ft(t,s,{input:i,initial:n,touched:r,validateOn:e,error:h}={}){const o=new dt(null,lt.t(t),lt.t(s));return ct(t=>{p(r)||o.G(t,r),p(n)||o.p(t,n),p(i)||o.O(t,i),p(e)||o.k(t,e),p(h)||o.I(t,h)}),o.o()}function vt(t){return t instanceof lt}import{batch as bt}from"@owanturist/signal";var pt=class extends l{constructor(t){super(),this.i=t,this.active=t.Ht.o(),this.branches=z(t.Jt,({o:t})=>t())}getActiveBranch(t){const s=this.i.Kt(t);if(s)return{kind:s.kind,value:s.value.o()}}};pt.t=l.t;import{Signal as mt}from"@owanturist/signal";var Vt=class t extends C{constructor(t,s,i){super(t),this.o=y(()=>new pt(this)),this.v=mt(t=>this.Rt(t,({v:t})=>t)),this.V=mt(t=>this.Rt(t,({V:t})=>t)),this.m=mt(t=>this.zt(t,({m:t})=>t,o,null)),this.A=mt(t=>this.Rt(t,({A:t})=>t)),this.C=mt(t=>this.zt(t,({C:t})=>t,q)),this.T=mt(t=>this.Rt(t,({T:t})=>t)),this.D=mt(t=>this.zt(t,({D:t})=>t,J)),this.R=mt(t=>this.Rt(t,({R:t})=>t)),this.l=mt(t=>{const s=this.Kt(t);if(!s)return null;const i=s.value.l.read(t);return o(i)?null:{kind:s.kind,value:i}}),this.u=mt(t=>this.Rt(t,({l:t})=>t)),this.q=mt(t=>this.zt(t,({q:t})=>t,J)),this.j=mt(t=>this.Rt(t,({j:t})=>t)),this.S=mt(t=>this.zt(t,({S:t})=>t,J)),this.F=mt(t=>this.Rt(t,({F:t})=>t)),this.B=mt(t=>this.zt(t,({B:t})=>t,J)),this.W=mt(t=>this.Rt(t,({W:t})=>t)),this.M=mt(t=>this.zt(t,({M:t})=>t,J)),this.P=mt(t=>this.Rt(t,({P:t})=>t)),this.At=mt(t=>this.zt(t,({At:t})=>t,J)),this.gt=mt(t=>this.Rt(t,({gt:t})=>t)),this.Ht=this.rt(s),this.Jt=z(i,t=>this.rt(t))}Kt(t){const s=this.Ht.l.read(t),i=o(s)?null:this.Jt[s];return i?{kind:s,value:i}:void 0}zt(t,s,i,n){const r=this.Kt(t),e=s(this.Ht).read(t);if(!r)return i(e)||p(n)?e:{active:e,branch:n};const h=s(r.value).read(t);return i(h)&&i(e)&&h===e?e:{active:e,branch:i(h)?h:{kind:r.kind,value:h}}}Rt(t,s){return{active:s(this.Ht).read(t),branches:z(this.Jt,i=>s(i).read(t))}}nt(s){return new t(s,this.Ht,this.Jt)}p(t,s){const i=y(()=>this.v.read(t)),n=y(()=>this.V.read(t)),{active:r,branches:e}=w(s)?s(i(),n()):s;p(r)||this.Ht.p(t,r);const h=w(e)?e(i().branches,n().branches):e;for(const[s,i]of U(this.Jt))f(h,s)&&!p(h[s])&&i.p(t,h[s])}wt(t,s,i){this.Ht.wt(t,s?.Ht,i);for(const[n,r]of U(this.Jt))r.wt(t,s?.Jt[n],i)}O(t,s){const i=y(()=>this.v.read(t)),n=y(()=>this.V.read(t)),{active:r,branches:e}=w(s)?s(n(),i()):s;p(r)||this.Ht.O(t,r);const h=w(e)?e(n().branches,i().branches):e;for(const[s,i]of U(this.Jt))f(h,s)&&!p(h[s])&&i.O(t,h[s])}I(t,s){const i=y(()=>this.A.read(t)),n=w(s)?s(i()):s,[r,e,h]=o(n)?[n,n,void 0]:[n.active,f(n,"branch")?n.branch:void 0,f(n,"branches")?w(n.branches)?n.branches(i().branches):n.branches:void 0];p(r)||this.Ht.I(t,r);for(const[s,i]of U(this.Jt)){const n=o(h)?h:f(h,s)?h[s]:void 0;p(n)||i.I(t,n)}if(!p(e)){const s=this.Kt(t),i=w(e)?s?e({kind:s.kind,value:s.value.A.read(t)}):void 0:e;if(o(i))s?.value.I(t,i);else if(!p(i)){const{kind:s,value:n}=i,r=f(this.Jt,s)?this.Jt[s]:void 0;r&&r.I(t,n)}}}k(t,s){const i=y(()=>this.T.read(t)),n=w(s)?s(i()):s,[r,e,h]=q(n)?[n,n,void 0]:[n.active,f(n,"branch")?n.branch:void 0,f(n,"branches")?w(n.branches)?n.branches(i().branches):n.branches:void 0];p(r)||this.Ht.k(t,r);for(const[s,i]of U(this.Jt)){const n=q(h)?h:f(h,s)?h[s]:void 0;p(n)||i.k(t,n)}if(!p(e)){const s=this.Kt(t),i=w(e)?s?e({kind:s.kind,value:s.value.T.read(t)}):void 0:e;if(q(i))s?.value.k(t,i);else if(!p(i)){const{kind:s,value:n}=i,r=f(this.Jt,s)?this.Jt[s]:void 0;r&&r.k(t,n)}}}G(t,s){const i=y(()=>this.R.read(t)),n=w(s)?s(i()):s,[r,e,h]=J(n)?[n,n,void 0]:[n.active,f(n,"branch")?n.branch:void 0,f(n,"branches")?w(n.branches)?n.branches(i().branches):n.branches:void 0];p(r)||this.Ht.G(t,r);for(const[s,i]of U(this.Jt)){const n=J(h)?h:f(h,s)?h[s]:void 0;p(n)||i.G(t,n)}if(!p(e)){const s=this.Kt(t),i=w(e)?s?e({kind:s.kind,value:s.value.R.read(t)}):void 0:e;if(J(i))s?.value.G(t,i);else if(!p(i)){const{kind:s,value:n}=i,r=f(this.Jt,s)?this.Jt[s]:void 0;r&&r.G(t,n)}}}Z(t){this.Ht.Z(t),this.Kt(t)?.value.Z(t)}H(t,s){p(s)||this.p(t,s),this.Ht.H(t,void 0);for(const s of K(this.Jt))s.H(t,void 0)}ct(t){const s={i:this.Ht,lt:t=>t.kind},i=this.Kt(t);return i?[s,{i:i.value,lt:t=>t.value}]:[s]}};function gt(t,s,{input:i,initial:n,touched:r,validateOn:e,error:h}={}){const o=new Vt(null,pt.t(t),z(s,t=>pt.t(t)));return bt(t=>{p(r)||o.G(t,r),p(n)||o.p(t,n),p(i)||o.O(t,i),p(e)||o.k(t,e),p(h)||o.I(t,h)}),o.o()}function Ot(t){return t instanceof pt}export{ut as FormList,ft as FormOptional,X as FormShape,gt as FormSwitch,D as FormUnit,s as VALIDATE_ON_CHANGE,n as VALIDATE_ON_INIT,i as VALIDATE_ON_SUBMIT,t as VALIDATE_ON_TOUCH,at as isFormList,vt as isFormOptional,Y as isFormShape,Ot as isFormSwitch,L as isFormUnit,_ as isSignalForm};//# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/validate-strategy.ts","../src/signal-form/_internal/signal-form.ts","../../tools/src/is-defined.ts","../../tools/src/is-null.ts","../../tools/src/is-true.ts","../../tools/src/is-truthy.ts","../src/signal-form/is-signal-form.ts","../src/form-unit/form-unit.ts","../../tools/src/has-property.ts","../../tools/src/is-strict-equal.ts","../../tools/src/is-shallow-array-equal.ts","../../tools/src/is-undefined.ts","../src/form-unit/_internal/create-is-union-equal.ts","../src/form-unit/_internal/form-unit-state.ts","../../tools/src/identity.ts","../../tools/src/is-function.ts","../../tools/src/lazy.ts","../../tools/src/setter.ts","../src/signal-form/_internal/signal-form-state.ts","../../tools/src/is-array.ts","../../tools/src/map.ts","../../tools/src/emitter.ts","../src/form-unit/_internal/form-unit.ts","../../tools/src/is-object.ts","../../tools/src/is-string.ts","../src/form-unit/_internal/zod-like-schema.ts","../src/form-unit/_internal/form-unit-transform.ts","../src/form-unit/is-form-unit.ts","../src/form-shape/form-shape.ts","../../tools/src/entries.ts","../../tools/src/map-values.ts","../../tools/src/partition-entries.ts","../src/form-shape/_internal/form-shape.ts","../src/form-shape/_internal/form-shape-state.ts","../../tools/src/is-boolean.ts","../../tools/src/values.ts","../src/_internal/to-concise.ts","../src/form-shape/is-form-shape.ts","../src/form-list/form-list.ts","../src/form-list/_internal/form-list.ts","../../tools/src/params.ts","../src/form-list/_internal/form-list-state.ts","../../tools/src/concat.ts","../../tools/src/drop.ts","../../tools/src/take.ts","../src/form-list/is-form-list.ts","../src/form-optional/form-optional.ts","../src/form-optional/_internal/form-optional.ts","../src/form-optional/_internal/form-optional-state.ts","../src/form-optional/is-form-optional.ts","../src/form-switch/form-switch.ts","../src/form-switch/_internal/form-switch.ts","../src/form-switch/_internal/form-switch-state.ts","../src/form-switch/is-form-switch.ts"],"sourcesContent":["type ValidateStrategy = \"onTouch\" | \"onChange\" | \"onSubmit\" | \"onInit\"\n\nconst VALIDATE_ON_TOUCH = \"onTouch\" as const satisfies ValidateStrategy\nconst VALIDATE_ON_CHANGE = \"onChange\" as const satisfies ValidateStrategy\nconst VALIDATE_ON_SUBMIT = \"onSubmit\" as const satisfies ValidateStrategy\nconst VALIDATE_ON_INIT = \"onInit\" as const satisfies ValidateStrategy\n\nexport type { ValidateStrategy }\nexport { VALIDATE_ON_TOUCH, VALIDATE_ON_CHANGE, VALIDATE_ON_SUBMIT, VALIDATE_ON_INIT }\n","import { type Monitor, type ReadonlySignal, batch, untracked } from \"@owanturist/signal\"\n\nimport { isDefined } from \"~/tools/is-defined\"\nimport { isNull } from \"~/tools/is-null\"\nimport { isTrue } from \"~/tools/is-true\"\nimport { isTruthy } from \"~/tools/is-truthy\"\n\nimport type { SignalFormParams } from \"../signal-form-params\"\n\nimport type { SignalFormState } from \"./signal-form-state\"\n\nfunction resolveGetter<TValue, TVerbose, TSelected>(\n monitor: Monitor,\n value: ReadonlySignal<TValue>,\n verbose: ReadonlySignal<TVerbose>,\n select: undefined | ((val: TValue, ver: TVerbose) => TSelected),\n): TSelected | TValue\n\nfunction resolveGetter<TValue, TVerbose, TSelected, TFallback>(\n monitor: Monitor,\n value: ReadonlySignal<TValue>,\n verbose: ReadonlySignal<TVerbose>,\n select: undefined | ((val: TValue, ver: TVerbose) => TSelected),\n fallback: (val: TValue) => TFallback,\n): TSelected | TFallback\n\nfunction resolveGetter<TValue, TVerbose, TSelected, TFallback>(\n monitor: Monitor,\n value: ReadonlySignal<TValue>,\n verbose: ReadonlySignal<TVerbose>,\n select: undefined | ((val: TValue, ver: TVerbose) => TSelected),\n fallback?: (val: TValue) => TFallback,\n): TSelected | TFallback | TValue {\n const value_ = value.read(monitor)\n\n if (select) {\n return select(value_, verbose.read(monitor))\n }\n\n if (fallback != null) {\n return fallback(value_)\n }\n\n return value_\n}\n\nabstract class SignalForm<\n // biome-ignore lint/suspicious/noExplicitAny: any is the only reasonable default\n TParams extends SignalFormParams = any,\n> {\n protected static _getState<TFormParams extends SignalFormParams>({\n _state,\n }: SignalForm<TFormParams>): SignalFormState<TFormParams> {\n return _state\n }\n\n protected abstract readonly _state: SignalFormState<TParams>\n\n public clone(): SignalForm<TParams> {\n return this._state._clone()._host()\n }\n\n public getOutput(monitor: Monitor): null | TParams[\"output.schema\"]\n public getOutput<TResult>(\n monitor: Monitor,\n select: (\n concise: null | TParams[\"output.schema\"],\n verbose: TParams[\"output.schema.verbose\"],\n ) => TResult,\n ): TResult\n public getOutput<TResult>(\n monitor: Monitor,\n select?: (\n concise: null | TParams[\"output.schema\"],\n verbose: TParams[\"output.schema.verbose\"],\n ) => TResult,\n ): null | TParams[\"output.schema\"] | TResult {\n const { _output, _outputVerbose } = this._state\n\n return resolveGetter(monitor, _output, _outputVerbose, select)\n }\n\n public getInitial(monitor: Monitor): TParams[\"input.schema\"] {\n return this._state._initial.read(monitor)\n }\n\n public setInitial(setter: TParams[\"input.setter\"]): void {\n batch((monitor) => {\n this._state._setInitial(monitor, setter)\n })\n }\n\n public getInput(monitor: Monitor): TParams[\"input.schema\"] {\n return this._state._input.read(monitor)\n }\n\n public setInput(setter: TParams[\"input.setter\"]): void {\n batch((monitor) => {\n this._state._setInput(monitor, setter)\n })\n }\n\n public getError(monitor: Monitor): null | TParams[\"error.schema\"]\n public getError<TResult>(\n monitor: Monitor,\n select: (\n concise: null | TParams[\"error.schema\"],\n verbose: TParams[\"error.schema.verbose\"],\n ) => TResult,\n ): TResult\n public getError<TResult>(\n monitor: Monitor,\n select?: (\n concise: null | TParams[\"error.schema\"],\n verbose: TParams[\"error.schema.verbose\"],\n ) => TResult,\n ): null | TParams[\"error.schema\"] | TResult {\n const { _error, _errorVerbose } = this._state\n\n return resolveGetter(monitor, _error, _errorVerbose, select)\n }\n\n public setError(setter: TParams[\"error.setter\"]): void {\n batch((monitor) => {\n this._state._setError(monitor, setter)\n })\n }\n\n public getValidateOn(monitor: Monitor): TParams[\"validateOn.schema\"]\n public getValidateOn<TResult>(\n monitor: Monitor,\n select: (\n concise: TParams[\"validateOn.schema\"],\n verbose: TParams[\"validateOn.schema.verbose\"],\n ) => TResult,\n ): TResult\n public getValidateOn<TResult>(\n monitor: Monitor,\n select?: (\n concise: TParams[\"validateOn.schema\"],\n verbose: TParams[\"validateOn.schema.verbose\"],\n ) => TResult,\n ): TParams[\"validateOn.schema\"] | TResult {\n const { _validateOn, _validateOnVerbose } = this._state\n\n return resolveGetter(monitor, _validateOn, _validateOnVerbose, select)\n }\n\n public setValidateOn(setter: TParams[\"validateOn.setter\"]): void {\n batch((monitor) => {\n this._state._setValidateOn(monitor, setter)\n })\n }\n\n public isValid(monitor: Monitor): boolean\n public isValid<TResult>(\n monitor: Monitor,\n select: (concise: TParams[\"flag.schema\"], verbose: TParams[\"flag.schema.verbose\"]) => TResult,\n ): TResult\n public isValid<TResult>(\n monitor: Monitor,\n select?: (concise: TParams[\"flag.schema\"], verbose: TParams[\"flag.schema.verbose\"]) => TResult,\n ): boolean | TResult {\n const { _valid, _validVerbose } = this._state\n\n return resolveGetter(monitor, _valid, _validVerbose, select, isTrue)\n }\n\n public isInvalid(monitor: Monitor): boolean\n public isInvalid<TResult>(\n monitor: Monitor,\n select: (concise: TParams[\"flag.schema\"], verbose: TParams[\"flag.schema.verbose\"]) => TResult,\n ): TResult\n public isInvalid<TResult>(\n monitor: Monitor,\n select?: (concise: TParams[\"flag.schema\"], verbose: TParams[\"flag.schema.verbose\"]) => TResult,\n ): boolean | TResult {\n const { _invalid, _invalidVerbose } = this._state\n\n return resolveGetter(monitor, _invalid, _invalidVerbose, select, isTruthy)\n }\n\n public isValidated(monitor: Monitor): boolean\n public isValidated<TResult>(\n monitor: Monitor,\n select: (concise: TParams[\"flag.schema\"], verbose: TParams[\"flag.schema.verbose\"]) => TResult,\n ): TResult\n public isValidated<TResult>(\n monitor: Monitor,\n select?: (concise: TParams[\"flag.schema\"], verbose: TParams[\"flag.schema.verbose\"]) => TResult,\n ): boolean | TResult {\n const { _validated, _validatedVerbose } = this._state\n\n return resolveGetter(monitor, _validated, _validatedVerbose, select, isTrue)\n }\n\n public isDirty(monitor: Monitor): boolean\n public isDirty<TResult>(\n monitor: Monitor,\n select: (concise: TParams[\"flag.schema\"], verbose: TParams[\"flag.schema.verbose\"]) => TResult,\n ): TResult\n public isDirty<TResult>(\n monitor: Monitor,\n select?: (concise: TParams[\"flag.schema\"], verbose: TParams[\"flag.schema.verbose\"]) => TResult,\n ): boolean | TResult {\n const { _dirty, _dirtyVerbose } = this._state\n\n return resolveGetter(monitor, _dirty, _dirtyVerbose, select, isTruthy)\n }\n\n public isTouched(monitor: Monitor): boolean\n public isTouched<TResult>(\n monitor: Monitor,\n select: (concise: TParams[\"flag.schema\"], verbose: TParams[\"flag.schema.verbose\"]) => TResult,\n ): TResult\n public isTouched<TResult>(\n monitor: Monitor,\n select?: (concise: TParams[\"flag.schema\"], verbose: TParams[\"flag.schema.verbose\"]) => TResult,\n ): boolean | TResult {\n const { _touched, _touchedVerbose } = this._state\n\n return resolveGetter(monitor, _touched, _touchedVerbose, select, isTruthy)\n }\n\n public setTouched(setter: TParams[\"flag.setter\"]): void {\n batch((monitor) => {\n this._state._setTouched(monitor, setter)\n })\n }\n\n public reset(resetter?: TParams[\"input.setter\"]): void {\n batch((monitor) => {\n this._state._reset(monitor, resetter)\n })\n }\n\n public onFocusWhenInvalid(\n onFocus: (error: TParams[\"error.schema.verbose\"]) => void,\n ): VoidFunction {\n return this._state._onFocus._subscribe(onFocus)\n }\n\n public focusFirstInvalid(): void {\n batch((monitor) => {\n this._state._getFocusFirstInvalid(monitor)?.()\n })\n }\n\n public getSubmitCount(monitor: Monitor): number {\n return this._state._root._submitAttempts.read(monitor)\n }\n\n public isSubmitting(monitor: Monitor): boolean {\n return this._state._root._submittingCount.read(monitor) > 0\n }\n\n public onSubmit(\n // biome-ignore lint/suspicious/noConfusingVoidType: it wants using void, not undefined\n listener: (output: TParams[\"output.schema\"]) => void | Promise<unknown>,\n ): VoidFunction {\n return this._state._onSubmit._subscribe(listener)\n }\n\n public async submit(): Promise<void> {\n batch((monitor) => {\n this._state._root._submitAttempts.write((count) => count + 1)\n this._state._root._forceValidated(monitor)\n })\n\n const promises = untracked((monitor) => {\n const output = this._state._root._output.read(monitor)\n\n if (!isNull(output)) {\n return this._state._root._submitWith(monitor, output).filter(isDefined)\n }\n\n return undefined\n })\n\n if (!promises) {\n batch((monitor) => {\n this._state._root._getFocusFirstInvalid(monitor)?.()\n })\n } else if (promises.length > 0) {\n this._state._root._submittingCount.write((count) => count + 1)\n\n await Promise.all(promises)\n\n this._state._root._submittingCount.write((count) => Math.max(0, count - 1))\n }\n }\n}\n\nexport { SignalForm }\n","function isDefined<TValue>(data: null | undefined | TValue): data is TValue {\n return data != null\n}\n\nexport { isDefined }\n","function isNull(value: unknown): value is null {\n return value === null\n}\n\nexport { isNull }\n","function isTrue(value: unknown): value is true {\n return value === true\n}\n\nexport { isTrue }\n","function isTruthy<T>(data: T): data is Exclude<T, \"\" | 0 | false | null | undefined> {\n return Boolean(data)\n}\n\nexport { isTruthy }\n","import { SignalForm } from \"./_internal/signal-form\"\n\nfunction isSignalForm(value: unknown): value is SignalForm {\n return value instanceof SignalForm\n}\n\nexport { isSignalForm }\n","import { type Equal, Signal } from \"@owanturist/signal\"\n\nimport { hasProperty } from \"~/tools/has-property\"\nimport { isNull } from \"~/tools/is-null\"\nimport { isShallowArrayEqual } from \"~/tools/is-shallow-array-equal\"\nimport { isStrictEqual } from \"~/tools/is-strict-equal\"\nimport { isUndefined } from \"~/tools/is-undefined\"\n\nimport type { SignalForm } from \"../signal-form/signal-form\"\nimport { VALIDATE_ON_INIT, VALIDATE_ON_TOUCH, type ValidateStrategy } from \"../validate-strategy\"\n\nimport type { FormUnitTransformer } from \"./form-unit-transformer\"\nimport type { FormUnitValidator } from \"./form-unit-validator\"\nimport { createIsUnionEqual } from \"./_internal/create-is-union-equal\"\nimport type { FormUnit as FormUnitImpl } from \"./_internal/form-unit\"\nimport { FormUnitState } from \"./_internal/form-unit-state\"\nimport {\n type FormUnitTransform,\n transformFromInput,\n transformFromSchema,\n transformFromTransformer,\n transformFromValidator,\n} from \"./_internal/form-unit-transform\"\nimport type { ZodLikeSchema } from \"./_internal/zod-like-schema\"\n\ntype FormUnit<TInput, TError = null, TOutput = TInput> = FormUnitImpl<TInput, TError, TOutput>\n\ninterface FormUnitOptions<TInput, TError = null> {\n /**\n * The initial or custom error associated with the form value.\n * This can be used to set an error state manually.\n *\n * @default null\n */\n readonly error?: null | TError\n\n readonly touched?: boolean\n\n /**\n * PERFORMANCE OPTIMIZATION\n *\n * A equality check function that determines whether the input value changes.\n * When it does, the {@link SignalForm.getInput} returns the new value.\n * Otherwise, it returns the previous value.\n *\n * Useful for none primitive values such as Objects, Arrays, Date, etc.\n * Intended to improve performance but do not affect business logic.\n *\n * @default Object.is\n *\n * @example\n * const initial = { count: 0 }\n *\n * const form = FormUnit(initial, {\n * isInputEqual: (left, right) => left.count === right.count,\n * })\n *\n * form.setInput({ count: 0 })\n * form.getInput(monitor) === initial // true\n */\n readonly isInputEqual?: Equal<TInput>\n\n /**\n * BUSINESS LOGIC TUNING\n *\n * A equality check function that determines whether the input is dirty.\n * When it is, the {@link SignalForm.isDirty} returns true.\n * Fallbacks to not(isInputEqual) if not provided.\n *\n * Useful for values that have intermediate states deviating from the initial value,\n * but should not be considered dirty such as strings, unsorted arrays, etc.\n * Intended to tune business logic and avoid false positives for dirty states.\n *\n * @default not(isInputEqual)\n *\n * @example\n * const form = FormUnit(\"\", {\n * isInputDirty: (left, right) => left.trim() !== right.trim(),\n * })\n *\n * form.setInput(\" \")\n * form.isDirty(monitor) === false\n */\n readonly isInputDirty?: Equal<TInput>\n\n /**\n * PERFORMANCE OPTIMIZATION\n *\n * A equality check function that determines whether the validation error change.\n * When it does, the {@link SignalForm.getError} returns the new value.\n * Otherwise, it returns the previous value.\n *\n * Useful for none primitive values such as Objects, Arrays, Date, etc.\n * Intended to improve performance but do not affect business logic.\n *\n * @default Object.is\n */\n\n readonly isErrorEqual?: Equal<TError>\n\n /**\n * @default input\n */\n readonly initial?: TInput\n}\n\ninterface FormUnitTransformedOptions<TInput, TError = null, TOutput = TInput>\n extends Omit<FormUnitOptions<TInput, TError>, \"isOutputEqual\"> {\n readonly transform: FormUnitTransformer<TInput, TOutput>\n\n /**\n * PERFORMANCE OPTIMIZATION\n *\n * A equality check function that determines whether the output value changes.\n * When it does, the {@link SignalForm.getOutput} returns the new value.\n *\n * Useful for none primitive values such as Objects, Arrays, Date, etc.\n * Intended to improve performance but do not affect business logic.\n *\n * @default Object.is\n */\n readonly isOutputEqual?: Equal<TOutput>\n}\n\ninterface FormUnitSchemaOptions<TInput, TOutput = TInput>\n extends Omit<\n FormUnitTransformedOptions<TInput, ReadonlyArray<string>, TOutput>,\n \"transform\" | \"isErrorEqual\"\n > {\n /**\n * @default \"onTouch\"\n */\n readonly validateOn?: ValidateStrategy\n\n readonly schema: ZodLikeSchema<TOutput>\n}\n\ninterface FormUnitValidatedOptions<TInput, TError = null, TOutput = TInput>\n extends Omit<FormUnitTransformedOptions<TInput, TError, TOutput>, \"transform\"> {\n /**\n * @default \"onTouch\"\n */\n readonly validateOn?: ValidateStrategy\n\n readonly validate: FormUnitValidator<TInput, TError, TOutput>\n}\n\nfunction FormUnit<TInput, TError = null, TOutput = TInput>(\n input: TInput,\n options:\n | FormUnitValidatedOptions<TInput, TError, TOutput>\n | FormUnitTransformedOptions<TInput, TError, TOutput>,\n): FormUnit<TInput, TError, TOutput>\n\nfunction FormUnit<TInput, TOutput = TInput>(\n input: TInput,\n options: FormUnitSchemaOptions<TInput, TOutput>,\n): FormUnit<TInput, ReadonlyArray<string>, TOutput>\n\nfunction FormUnit<TInput>(\n input: TInput,\n options?: FormUnitOptions<TInput>,\n): FormUnit<TInput, null, TInput>\n\nfunction FormUnit<TInput, TError>(\n input: TInput,\n options?: FormUnitOptions<TInput, TError>,\n): FormUnit<TInput, TError, TInput>\n\nfunction FormUnit<TInput, TError = null, TOutput = TInput>(\n input_: TInput,\n options?:\n | FormUnitOptions<TInput, TError>\n | FormUnitTransformedOptions<TInput, TError, TOutput>\n | FormUnitSchemaOptions<TInput, TOutput>\n | FormUnitValidatedOptions<TInput, TError, TOutput>,\n):\n | FormUnit<TInput, TError>\n | FormUnit<TInput, ReadonlyArray<string>, TOutput>\n | FormUnit<TInput, TError, TOutput> /* enforce syntax highlight */ {\n const isInputEqual = options?.isInputEqual ?? isStrictEqual\n const isInputDirty = options?.isInputDirty ?? ((left, right) => !isInputEqual(left, right))\n const initialOrInput = options?.initial ?? input_\n\n const input = Signal(input_, { equals: isInputEqual })\n\n const initial = Signal({\n _explicit: Signal(!isUndefined(options?.initial)),\n _current: Signal(isInputEqual(initialOrInput, input_) ? input_ : initialOrInput, {\n equals: isInputEqual,\n }),\n })\n\n const touched = Signal(options?.touched ?? false)\n\n if (hasProperty(options, \"schema\")) {\n const transform = transformFromSchema<TInput, TOutput>(options.schema)\n const isErrorEqual = createIsUnionEqual(isNull, isShallowArrayEqual)\n const isOutputEqual = createIsUnionEqual<null, TOutput>(\n isNull,\n options.isOutputEqual ?? isStrictEqual,\n )\n\n return new FormUnitState(\n null,\n initial,\n input,\n Signal(options.error ?? null, { equals: isErrorEqual }),\n Signal(options.validateOn ?? VALIDATE_ON_TOUCH),\n touched,\n Signal(transform),\n isInputDirty,\n isInputEqual,\n isOutputEqual,\n isErrorEqual,\n )._host()\n }\n\n const isErrorEqual = createIsUnionEqual<null, TError>(\n isNull,\n options?.isErrorEqual ?? isStrictEqual,\n )\n const error = Signal<null | TError>(options?.error ?? null, {\n equals: isErrorEqual,\n })\n\n if (hasProperty(options, \"validate\")) {\n const transform = transformFromValidator(options.validate)\n const isOutputEqual = createIsUnionEqual<null, TOutput>(\n isNull,\n options.isOutputEqual ?? isStrictEqual,\n )\n\n return new FormUnitState(\n null,\n initial,\n input,\n error,\n Signal(options.validateOn ?? VALIDATE_ON_TOUCH),\n touched,\n Signal(transform),\n isInputDirty,\n isInputEqual,\n isOutputEqual,\n isErrorEqual,\n )._host()\n }\n\n if (hasProperty(options, \"transform\")) {\n const transform = transformFromTransformer(options.transform)\n const isOutputEqual = createIsUnionEqual<null, TOutput>(\n isNull,\n options.isOutputEqual ?? isStrictEqual,\n )\n\n return new FormUnitState(\n null,\n initial,\n input,\n error,\n Signal<ValidateStrategy>(VALIDATE_ON_INIT),\n touched,\n Signal(transform as FormUnitTransform<TInput, TError, TOutput>),\n isInputDirty,\n isInputEqual,\n isOutputEqual,\n isErrorEqual,\n )._host()\n }\n\n return new FormUnitState(\n null,\n initial,\n input,\n error,\n Signal<ValidateStrategy>(VALIDATE_ON_INIT),\n touched,\n Signal(transformFromInput as FormUnitTransform<TInput, TError, TInput>),\n isInputDirty,\n isInputEqual,\n createIsUnionEqual(isNull, isInputEqual),\n isErrorEqual,\n )._host()\n}\n\nexport type {\n FormUnitOptions,\n FormUnitTransformedOptions,\n FormUnitSchemaOptions,\n FormUnitValidatedOptions,\n}\nexport { FormUnit }\n","function hasProperty<TKey extends PropertyKey>(\n input: unknown,\n key: TKey,\n): input is Record<TKey, unknown> {\n return typeof input === \"object\" && input != null && key in input\n}\n\nexport { hasProperty }\n","function isStrictEqual<T>(left: T, right: T): boolean {\n return Object.is(left, right)\n}\n\nexport { isStrictEqual }\n","import { isStrictEqual } from \"~/tools/is-strict-equal\"\n\nfunction isShallowArrayEqual<T>(left: ReadonlyArray<T>, right: ReadonlyArray<T>): boolean {\n if (isStrictEqual(left, right)) {\n return true\n }\n\n if (left.length !== right.length) {\n return false\n }\n\n return left.every(\n // biome-ignore lint/style/noNonNullAssertion: the lengths are equal\n (value, index) => isStrictEqual(value, right[index]!),\n )\n}\n\nexport { isShallowArrayEqual }\n","function isUndefined(value: unknown): value is undefined {\n return value === undefined\n}\n\nexport { isUndefined }\n","import type { Equal } from \"@owanturist/signal\"\n\nimport { isStrictEqual } from \"~/tools/is-strict-equal\"\n\nfunction createIsUnionEqual<TPrimary, TSecondary>(\n primary: (value: unknown) => value is TPrimary,\n secondary: Equal<TSecondary>,\n): Equal<TPrimary | TSecondary> {\n // do not bother with primary check if secondary is strict equal\n if (secondary === isStrictEqual || secondary === Object.is) {\n return isStrictEqual\n }\n\n return (left, right) => {\n if (primary(left) || primary(right)) {\n return left === right\n }\n\n return secondary(left, right)\n }\n}\n\nexport { createIsUnionEqual }\n","import { type Equal, type Monitor, type ReadonlySignal, Signal, batch } from \"@owanturist/signal\"\n\nimport { identity } from \"~/tools/identity\"\nimport { isFunction } from \"~/tools/is-function\"\nimport { isNull } from \"~/tools/is-null\"\nimport { isUndefined } from \"~/tools/is-undefined\"\nimport { Lazy } from \"~/tools/lazy\"\nimport { resolveSetter } from \"~/tools/setter\"\n\nimport type { Result } from \"../../result\"\nimport { SignalFormState } from \"../../signal-form/_internal/signal-form-state\"\nimport {\n VALIDATE_ON_CHANGE,\n VALIDATE_ON_INIT,\n VALIDATE_ON_SUBMIT,\n VALIDATE_ON_TOUCH,\n type ValidateStrategy,\n} from \"../../validate-strategy\"\nimport type { FormUnitErrorSetter } from \"../form-unit-error-setter\"\nimport type { FormUnitInputSetter } from \"../form-unit-input-setter\"\nimport type { FormUnitParams } from \"../form-unit-params\"\nimport type { FormUnitTransformer } from \"../form-unit-transformer\"\nimport type { FormUnitValidateOnSetter } from \"../form-unit-validate-on-setter\"\n\nimport { FormUnit } from \"./form-unit\"\nimport { type FormUnitTransform, transformFromTransformer } from \"./form-unit-transform\"\n\nclass FormUnitState<TInput, TError, TOutput> extends SignalFormState<\n FormUnitParams<TInput, TError, TOutput>\n> {\n public readonly _host = Lazy(() => new FormUnit(this))\n\n public constructor(\n parent: null | SignalFormState,\n public readonly _initialState: Signal<{\n _explicit: Signal<boolean>\n _current: Signal<TInput>\n }>,\n public readonly _input: Signal<TInput>,\n private readonly _customError: Signal<null | TError>,\n public readonly _validateOn: Signal<ValidateStrategy>,\n public readonly _touched: Signal<boolean>,\n private readonly _transform: Signal<FormUnitTransform<TInput, TError, TOutput>>,\n private readonly _isInputDirty: Equal<TInput>,\n private readonly _isInputEqual: Equal<TInput>,\n private readonly _isOutputEqual: Equal<null | TOutput>,\n private readonly _isErrorEqual: Equal<null | TError>,\n ) {\n super(parent)\n\n const result = Signal((monitor): Result<null | TError, TOutput> => {\n const customError = _customError.read(monitor)\n\n if (!isNull(customError)) {\n return [customError, null]\n }\n\n const input = _input.read(monitor)\n const transform = _transform.read(monitor)\n\n const [error, output] = transform._validator(input)\n\n if (!isNull(output)) {\n return [null, output]\n }\n\n return [isValidated.read(monitor) ? error : null, null]\n })\n\n this._initial = Signal(\n (monitor): TInput => _initialState.read(monitor)._current.read(monitor),\n {\n equals: _isInputEqual,\n },\n )\n\n this._error = this._errorVerbose = Signal(\n (monitor): null | TError => {\n const [error] = result.read(monitor)\n\n return error\n },\n {\n equals: _isErrorEqual,\n },\n )\n\n this._output = this._outputVerbose = Signal(\n (monitor): null | TOutput => {\n const [, output] = result.read(monitor)\n\n return output\n },\n {\n equals: _isOutputEqual,\n },\n )\n\n this._touchedVerbose = _touched\n\n this._dirty = this._dirtyVerbose = Signal((monitor): boolean =>\n _isInputDirty(this._initial.read(monitor), _input.read(monitor)),\n )\n\n this._validateOnVerbose = _validateOn\n\n this._valid = this._validVerbose = Signal((monitor): boolean => {\n const output = this._output.read(monitor)\n\n return !isNull(output)\n })\n\n this._invalid = this._invalidVerbose = Signal((monitor): boolean => {\n const error = this._error.read(monitor)\n\n return !isNull(error)\n })\n\n // persist the validated state\n const isValidated = Signal(false)\n\n this._validated = this._validatedVerbose = Signal(\n // mixes the validated and invalid states\n (monitor): boolean => isValidated.read(monitor) || this._invalid.read(monitor),\n\n // proxies the validated setter where `false` means revalidate\n // and `true` sets the validated state to `true`\n (next, monitor) => {\n isValidated.write(() => {\n if (next || _transform.read(monitor)._transformer) {\n return true\n }\n\n switch (_validateOn.read(monitor)) {\n case VALIDATE_ON_INIT: {\n return true\n }\n\n case VALIDATE_ON_TOUCH: {\n return _touched.read(monitor)\n }\n\n case VALIDATE_ON_CHANGE: {\n return this._dirty.read(monitor)\n }\n\n case VALIDATE_ON_SUBMIT: {\n return false\n }\n }\n })\n },\n )\n\n this._validated.write(false)\n }\n\n public _childOf(parent: null | SignalFormState): FormUnitState<TInput, TError, TOutput> {\n return new FormUnitState(\n parent,\n this._initialState.clone(({ _current, _explicit }) => ({\n _current: _current.clone(),\n _explicit: _explicit.clone(),\n })),\n this._input.clone(),\n this._customError.clone(),\n this._validateOn.clone(),\n this._touched.clone(),\n this._transform.clone(),\n this._isInputDirty,\n this._isInputEqual,\n this._isOutputEqual,\n this._isErrorEqual,\n )\n }\n\n // I N I T I A L\n\n public _initial: ReadonlySignal<TInput>\n\n public _replaceInitial(\n monitor: Monitor,\n state: undefined | FormUnitState<TInput, TError, TOutput>,\n isMounting: boolean,\n ): void {\n const { _explicit, _current } = this._initialState.read(monitor)\n\n if (state) {\n const initialState = state._initialState.read(monitor)\n\n if (_explicit.read(monitor) && isMounting) {\n initialState._explicit.write(true)\n initialState._current.write(_current.read(monitor))\n }\n\n this._initialState.write(initialState)\n } else {\n this._initialState.write({\n _current: _current.clone(),\n _explicit: _explicit.clone(),\n })\n }\n }\n\n public _setInitial(monitor: Monitor, setter: FormUnitInputSetter<TInput>): void {\n const { _current, _explicit } = this._initialState.read(monitor)\n\n _current.write((initial) =>\n isFunction(setter) ? setter(initial, this._input.read(monitor)) : setter,\n )\n\n _explicit.write(true)\n\n this._validated.write(identity)\n }\n\n // I N P U T\n\n public _setInput(monitor: Monitor, setter: FormUnitInputSetter<TInput>): void {\n this._input.write((input) =>\n isFunction(setter) ? setter(input, this._initial.read(monitor)) : setter,\n )\n\n this._validated.write(identity)\n }\n\n // E R R O R\n\n public readonly _error: ReadonlySignal<null | TError>\n\n public readonly _errorVerbose: ReadonlySignal<null | TError>\n\n public _setError(_monitor: Monitor, setter: FormUnitErrorSetter<TError>): void {\n this._customError.write((error) => resolveSetter(setter, error))\n }\n\n // V A L I D A T E O N\n\n public readonly _validateOnVerbose: ReadonlySignal<ValidateStrategy>\n\n public _setValidateOn(monitor: Monitor, setter: FormUnitValidateOnSetter): void {\n const before = this._validateOn.read(monitor)\n\n this._validateOn.write(resolveSetter(setter, before))\n\n const after = this._validateOn.read(monitor)\n\n if (before !== after) {\n this._validated.write(false)\n }\n }\n\n // T O U C H E D\n\n public readonly _touchedVerbose: ReadonlySignal<boolean>\n\n public _setTouched(\n _monitor: Monitor,\n setter: FormUnitParams<TInput, TError, TOutput>[\"flag.setter\"],\n ): void {\n this._touched.write((touched) => resolveSetter(setter, touched))\n this._validated.write(identity)\n }\n\n // O U T P U T\n\n public readonly _output: ReadonlySignal<null | TOutput>\n public readonly _outputVerbose: ReadonlySignal<null | TOutput>\n\n // V A L I D\n\n public readonly _valid: ReadonlySignal<boolean>\n public readonly _validVerbose: ReadonlySignal<boolean>\n\n // I N V A L I D\n\n public readonly _invalid: ReadonlySignal<boolean>\n public readonly _invalidVerbose: ReadonlySignal<boolean>\n\n // V A L I D A T E D\n\n public readonly _validated: Signal<boolean>\n public readonly _validatedVerbose: ReadonlySignal<boolean>\n\n public _forceValidated(): void {\n this._validated.write(true)\n }\n\n // D I R T Y\n\n public readonly _dirty: ReadonlySignal<boolean>\n public readonly _dirtyVerbose: ReadonlySignal<boolean>\n\n public readonly _dirtyOn = Signal(true)\n public readonly _dirtyOnVerbose = this._dirtyOn\n\n // R E S E T\n\n public _reset(monitor: Monitor, resetter: undefined | FormUnitInputSetter<TInput>): void {\n const resetValue = isUndefined(resetter)\n ? this._initial.read(monitor)\n : isFunction(resetter)\n ? resetter(this._initial.read(monitor), this._input.read(monitor))\n : resetter\n\n this._initialState.read(monitor)._current.write(resetValue)\n this._input.write(resetValue)\n // TODO test when reset for all below\n this._touched.write(false)\n this._customError.write(null)\n this._validated.write(false)\n }\n\n // C H I L D R E N\n\n public _getChildren(): ReadonlyArray<never> {\n return []\n }\n\n // C U S T O M\n\n public _setTransform(transformer: FormUnitTransformer<TInput, TOutput>): void {\n batch(() => {\n this._transform.write(transformFromTransformer(transformer))\n this._validated.write(identity)\n })\n }\n}\n\nexport { FormUnitState }\n","function identity<T>(value: T): T {\n return value\n}\n\nexport { identity }\n","type DefinitelyFunction<T> =\n // biome-ignore lint/complexity/noBannedTypes: use Function to ensure correct typing\n Extract<T, Function> extends never ? Function : Extract<T, Function>\n\nfunction isFunction<T>(\n // biome-ignore lint/complexity/noBannedTypes: use Function to ensure correct typing\n data: Function | T,\n): data is DefinitelyFunction<T> {\n return typeof data === \"function\"\n}\n\nexport { isFunction }\n","type Lazy<T> = () => T\n\nfunction Lazy<T>(init: () => T): Lazy<T> {\n let value: null | { _current: T } = null\n\n return () => {\n value ??= { _current: init() }\n\n return value._current\n }\n}\n\nexport { Lazy }\n","import { isFunction } from \"~/tools/is-function\"\n\ntype Setter<TValue, TPrevValues extends ReadonlyArray<unknown> = [TValue]> =\n | TValue\n | ((...args: TPrevValues) => TValue)\n\nfunction resolveSetter<TValue, TPrevValues extends ReadonlyArray<unknown>>(\n setter: Setter<TValue, TPrevValues>,\n ...args: TPrevValues\n): TValue {\n return isFunction(setter) ? setter(...args) : setter\n}\n\nexport type { Setter }\nexport { resolveSetter }\n","import { type Monitor, type ReadonlySignal, Signal } from \"@owanturist/signal\"\n\nimport { Emitter } from \"~/tools/emitter\"\nimport { isNull } from \"~/tools/is-null\"\nimport type { Lazy } from \"~/tools/lazy\"\n\nimport type { SignalFormParams } from \"../signal-form-params\"\n\nimport type { SignalForm } from \"./signal-form\"\n\nabstract class SignalFormState<\n // biome-ignore lint/suspicious/noExplicitAny: any is the only reasonable default\n TParams extends SignalFormParams = any,\n> {\n public abstract readonly _host: Lazy<SignalForm<TParams>>\n\n public readonly _root: SignalFormState\n\n public constructor(parent: null | SignalFormState) {\n this._root = parent?._root ?? this\n }\n\n protected abstract _childOf(parent: null | SignalFormState): SignalFormState<TParams>\n\n public _clone(): SignalFormState<TParams> {\n return this._childOf(null)\n }\n\n public _parentOf<TChild extends SignalFormState>(child: TChild): TChild {\n if (this._root === child._root) {\n return child\n }\n\n return child._childOf(this) as TChild\n }\n\n public _hasSameRootWith(another: SignalFormState): boolean {\n return this._root === another._root\n }\n\n // I N I T I A L\n\n public abstract readonly _initial: ReadonlySignal<TParams[\"input.schema\"]>\n\n public abstract _replaceInitial(\n monitor: Monitor,\n state: undefined | this,\n isMounting: boolean,\n ): void\n\n public abstract _setInitial(monitor: Monitor, setter: TParams[\"input.setter\"]): void\n\n // I N P U T\n\n public abstract readonly _input: ReadonlySignal<TParams[\"input.schema\"]>\n public abstract _setInput(monitor: Monitor, setter: TParams[\"input.setter\"]): void\n\n // E R R O R\n\n public abstract readonly _error: ReadonlySignal<null | TParams[\"error.schema\"]>\n public abstract readonly _errorVerbose: ReadonlySignal<TParams[\"error.schema.verbose\"]>\n public abstract _setError(monitor: Monitor, setter: TParams[\"error.setter\"]): void\n\n // V A L I D A T E O N\n\n public abstract readonly _validateOn: ReadonlySignal<TParams[\"validateOn.schema\"]>\n public abstract readonly _validateOnVerbose: ReadonlySignal<TParams[\"validateOn.schema.verbose\"]>\n public abstract _setValidateOn(monitor: Monitor, setter: TParams[\"validateOn.setter\"]): void\n\n // T O U C H E D\n\n public abstract readonly _touched: ReadonlySignal<TParams[\"flag.schema\"]>\n public abstract readonly _touchedVerbose: ReadonlySignal<TParams[\"flag.schema.verbose\"]>\n public abstract _setTouched(monitor: Monitor, setter: TParams[\"flag.setter\"]): void\n\n // O U T P U T\n\n public abstract readonly _output: ReadonlySignal<null | TParams[\"output.schema\"]>\n public abstract readonly _outputVerbose: ReadonlySignal<TParams[\"output.schema.verbose\"]>\n\n // V A L I D\n\n public abstract readonly _valid: ReadonlySignal<TParams[\"flag.schema\"]>\n public abstract readonly _validVerbose: ReadonlySignal<TParams[\"flag.schema.verbose\"]>\n\n // I N V A L I D\n\n public abstract readonly _invalid: ReadonlySignal<TParams[\"flag.schema\"]>\n public abstract readonly _invalidVerbose: ReadonlySignal<TParams[\"flag.schema.verbose\"]>\n\n // V A L I D A T E D\n\n public abstract readonly _validated: ReadonlySignal<TParams[\"flag.schema\"]>\n public abstract readonly _validatedVerbose: ReadonlySignal<TParams[\"flag.schema.verbose\"]>\n\n public abstract _forceValidated(monitor: Monitor): void\n\n // D I R T Y\n\n public abstract readonly _dirty: ReadonlySignal<TParams[\"flag.schema\"]>\n public abstract readonly _dirtyVerbose: ReadonlySignal<TParams[\"flag.schema.verbose\"]>\n\n public abstract readonly _dirtyOn: ReadonlySignal<TParams[\"flag.schema\"]>\n public abstract readonly _dirtyOnVerbose: ReadonlySignal<TParams[\"flag.schema.verbose\"]>\n\n // F O C U S I N V A L I D\n\n public readonly _onFocus = new Emitter()\n\n public _getFocusFirstInvalid(monitor: Monitor): null | VoidFunction {\n // go deep first and then the current element\n for (const { _state } of this._getChildren(monitor)) {\n const callback = _state._getFocusFirstInvalid(monitor)\n\n if (callback) {\n return callback\n }\n }\n\n // ignore if the focus handlers are not set\n const error = this._onFocus._isEmpty() ? null : this._error.read(monitor)\n\n if (isNull(error)) {\n return null\n }\n\n return () => {\n this._onFocus._emit(error)\n }\n }\n\n // S U B M I T\n\n // biome-ignore lint/suspicious/noConfusingVoidType: it wants using void, not undefined\n public readonly _onSubmit = new Emitter<unknown, void | Promise<unknown>>()\n\n public readonly _submitAttempts = Signal(0)\n public readonly _submittingCount = Signal(0)\n\n public _submitWith(\n monitor: Monitor,\n output: TParams[\"output.schema\"],\n // biome-ignore lint/suspicious/noConfusingVoidType: it wants using void, not undefined\n ): ReadonlyArray<void | Promise<unknown>> {\n const promises = this._getChildren(monitor).flatMap(({ _state, _mapToChild }) =>\n _state._submitWith(monitor, _mapToChild(output)),\n )\n\n return [...this._onSubmit._emit(output), ...promises]\n }\n\n // R E S E T\n\n /**\n * Comparing to {@link _setInitial} where the setter is always provided,\n * this method allows the resetter to be undefined.\n * This is for cases when the initial value is not changed BUT\n * the {@link SignalForm} should perform the rest of reset operations,\n * in comparison to {@link _setInitial} which only sets the initial value AND\n * not called at all if the setter is not provided.\n */\n public abstract _reset(monitor: Monitor, resetter: undefined | TParams[\"input.setter\"]): void\n\n // C H I L D R E N\n\n public abstract _getChildren<TChildParams extends SignalFormParams>(\n monitor: Monitor,\n ): ReadonlyArray<SignalFormChild<TChildParams, TParams>>\n}\n\ninterface SignalFormChild<TChildParams extends SignalFormParams, TParams extends SignalFormParams> {\n _state: SignalFormState<TChildParams>\n _mapToChild(this: void, parentValue: TParams[\"output.schema\"]): TChildParams[\"output.schema\"]\n}\n\nexport type { SignalFormChild }\nexport { SignalFormState }\n","const { isArray } = Array as {\n isArray: <T>(data: ArrayLike<unknown> | T) => data is ReadonlyArray<unknown>\n}\n\nexport { isArray }\n","import { isArray } from \"./is-array\"\n\nfunction map<T, R>(\n iterable: ReadonlyArray<T> | Iterable<T>,\n transform: (value: T, index: number) => R,\n): ReadonlyArray<R> {\n const arr = isArray(iterable) ? iterable : Array.from(iterable)\n\n return arr.map((value, index) => transform(value, index))\n}\n\nexport { map }\n","import { map } from \"~/tools/map\"\n\nclass Emitter<TPayload = unknown, TResult = void> {\n private readonly _listeners: Array<(payload: TPayload) => TResult> = []\n\n public _subscribe(listener: (payload: TPayload) => TResult): VoidFunction {\n this._listeners.push(listener)\n\n return () => {\n this._listeners.splice(this._listeners.indexOf(listener), 1)\n }\n }\n\n public _emit(payload: TPayload): ReadonlyArray<TResult> {\n return map(new Set(this._listeners), (listener) => listener(payload))\n }\n\n public _isEmpty(): boolean {\n return this._listeners.length === 0\n }\n}\n\nexport { Emitter }\n","import { SignalForm } from \"../../signal-form/_internal/signal-form\"\nimport type { FormUnitParams } from \"../form-unit-params\"\nimport type { FormUnitTransformer } from \"../form-unit-transformer\"\n\nimport type { FormUnitState } from \"./form-unit-state\"\n\nclass FormUnit<TInput, TError, TOutput> extends SignalForm<\n FormUnitParams<TInput, TError, TOutput>\n> {\n public constructor(public readonly _state: FormUnitState<TInput, TError, TOutput>) {\n super()\n }\n\n public setTransform(transformer: FormUnitTransformer<TInput, TOutput>): void {\n this._state._setTransform(transformer)\n }\n}\n\nexport { FormUnit }\n","import { isDefined } from \"~/tools/is-defined\"\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && isDefined(value)\n}\n\nexport { isObject }\n","function isString<TValue extends string, TRest = unknown>(value: TRest | TValue): value is TValue {\n return typeof value === \"string\"\n}\n\nexport { isString }\n","import { hasProperty } from \"~/tools/has-property\"\nimport { isArray } from \"~/tools/is-array\"\nimport { isObject } from \"~/tools/is-object\"\nimport { isString } from \"~/tools/is-string\"\nimport { map } from \"~/tools/map\"\n\nimport type { Result } from \"../../result\"\n\ninterface ZodLikeIssue {\n message: string\n}\n\ntype ZodLikeError =\n | { get errors(): ReadonlyArray<ZodLikeIssue> }\n | { errors: ReadonlyArray<ZodLikeIssue> }\n | { issues: ReadonlyArray<ZodLikeIssue> }\n\ntype ZodLikeSafeParseResult<TOutput> =\n | { success: false; error: ZodLikeError }\n | { success: true; data: TOutput }\n\ntype ZodLikeSchema<TOutput> =\n | { parse(input: unknown): TOutput }\n | { safeParse(input: unknown): ZodLikeSafeParseResult<TOutput> }\n\nfunction zodLikeSafeParseResultToResult<TOutput>(\n result: ZodLikeSafeParseResult<TOutput>,\n): Result<ReadonlyArray<string>, TOutput> {\n if (result.success) {\n return [null, result.data]\n }\n\n const errors = hasProperty(result.error, \"errors\") ? result.error.errors : result.error.issues\n\n return [map(errors, ({ message }) => message), null]\n}\n\nfunction unknownErrors(error: unknown): ReadonlyArray<string> {\n if (!isObject(error)) {\n return []\n }\n\n const errors = error.errors ?? error.issues\n\n if (isArray(errors)) {\n return map(errors.filter(isObject), ({ message }) => message).filter(isString)\n }\n\n if (error instanceof Error) {\n return [error.message]\n }\n\n return []\n}\n\nfunction zodLikeParse<TOutput>(\n schema: ZodLikeSchema<TOutput>,\n input: unknown,\n): Result<ReadonlyArray<string>, TOutput> {\n if (\"safeParse\" in schema) {\n return zodLikeSafeParseResultToResult(schema.safeParse(input))\n }\n\n try {\n return [null, schema.parse(input)]\n } catch (error) {\n return [unknownErrors(error), null]\n }\n}\n\nexport type { ZodLikeIssue, ZodLikeError, ZodLikeSafeParseResult, ZodLikeSchema }\nexport { zodLikeParse }\n","import type { FormUnitTransformer } from \"../form-unit-transformer\"\nimport type { FormUnitValidator } from \"../form-unit-validator\"\n\nimport { type ZodLikeSchema, zodLikeParse } from \"./zod-like-schema\"\n\ninterface FormUnitTransform<TInput, TError, TOutput> {\n readonly _transformer: boolean\n readonly _validator: FormUnitValidator<TInput, TError, TOutput>\n}\n\nconst transformFromInput = {\n _transformer: true,\n _validator: (input) => [null, input],\n} satisfies FormUnitTransform<unknown, never, unknown>\n\nfunction transformFromTransformer<TInput, TOutput>(\n transformer: FormUnitTransformer<TInput, TOutput>,\n): FormUnitTransform<TInput, never, TOutput> {\n return {\n _transformer: true,\n _validator: (input) => [null, transformer(input)],\n }\n}\n\nfunction transformFromValidator<TInput, TError, TOutput>(\n validator: FormUnitValidator<TInput, TError, TOutput>,\n): FormUnitTransform<TInput, TError, TOutput> {\n return {\n _transformer: false,\n _validator: validator,\n }\n}\n\nfunction transformFromSchema<TInput, TOutput>(\n schema: ZodLikeSchema<TOutput>,\n): FormUnitTransform<TInput, ReadonlyArray<string>, TOutput> {\n return {\n _transformer: false,\n _validator: (input) => zodLikeParse(schema, input),\n }\n}\n\nexport type { FormUnitTransform }\nexport { transformFromInput, transformFromTransformer, transformFromValidator, transformFromSchema }\n","import { FormUnit } from \"./_internal/form-unit\"\n\nfunction isFormUnit(value: unknown): value is FormUnit<unknown, unknown, unknown> {\n return value instanceof FormUnit\n}\n\nexport { isFormUnit }\n","import { Signal, batch } from \"@owanturist/signal\"\n\nimport { isUndefined } from \"~/tools/is-undefined\"\nimport { mapValues } from \"~/tools/map-values\"\nimport { partitionEntries } from \"~/tools/partition-entries\"\n\nimport { isSignalForm } from \"../signal-form/is-signal-form\"\n\nimport type { FormShapeErrorSetter } from \"./form-shape-error-setter\"\nimport type { FormShapeFields } from \"./form-shape-fields\"\nimport type { FormShapeFlagSetter } from \"./form-shape-flag-setter\"\nimport type { FormShapeInputSetter } from \"./form-shape-input-setter\"\nimport type { FormShapeValidateOnSetter } from \"./form-shape-validate-on-setter\"\nimport { FormShape as FormShapeImpl } from \"./_internal/form-shape\"\nimport {\n FormShapeState,\n type FormShapeStateFields,\n type FormShapeStateMeta,\n} from \"./_internal/form-shape-state\"\n\ntype FormShape<TFields extends FormShapeFields> = FormShapeImpl<TFields>\n\ninterface FormShapeOptions<TFields extends FormShapeFields> {\n readonly input?: FormShapeInputSetter<TFields>\n readonly initial?: FormShapeInputSetter<TFields>\n readonly touched?: FormShapeFlagSetter<TFields>\n readonly validateOn?: FormShapeValidateOnSetter<TFields>\n readonly error?: FormShapeErrorSetter<TFields>\n}\n\nfunction FormShape<TFields extends FormShapeFields>(\n fields: TFields,\n { input, initial, touched, validateOn, error }: FormShapeOptions<TFields> = {},\n): FormShape<TFields> {\n const [forms, meta] = partitionEntries(fields, isSignalForm)\n\n const state = new FormShapeState(\n null,\n\n mapValues(forms, FormShapeImpl._getState) as unknown as FormShapeStateFields<TFields>,\n\n mapValues(meta, (field) => Signal(field)) as unknown as FormShapeStateMeta<TFields>,\n )\n\n batch((monitor) => {\n if (!isUndefined(input)) {\n state._setInput(monitor, input)\n }\n\n if (!isUndefined(initial)) {\n state._setInitial(monitor, initial)\n }\n\n if (!isUndefined(touched)) {\n state._setTouched(monitor, touched)\n }\n\n if (!isUndefined(validateOn)) {\n state._setValidateOn(monitor, validateOn)\n }\n\n if (!isUndefined(error)) {\n state._setError(monitor, error)\n }\n })\n\n return state._host()\n}\n\nexport type { FormShapeOptions }\nexport { FormShape }\n","type ObjectEntries<TObject extends Record<string, unknown>> = {\n [TKey in keyof TObject]: [TKey, TObject[TKey]]\n}[keyof TObject]\n\nfunction entries<TObject extends Record<string, unknown>>(\n object: TObject,\n): ReadonlyArray<ObjectEntries<TObject>>\n\nfunction entries<TItem>(array: ReadonlyArray<TItem>): ArrayIterator<[number, TItem]>\n\nfunction entries(\n arrayOrObject: Record<string, unknown> | ReadonlyArray<unknown>,\n): ArrayIterator<[number, unknown]> | ReadonlyArray<[string, unknown]> {\n return Array.isArray(arrayOrObject) ? arrayOrObject.entries() : Object.entries(arrayOrObject)\n}\n\nexport type { ObjectEntries }\nexport { entries }\n","import { entries } from \"~/tools/entries\"\n\nfunction mapValues<TObject extends Record<string, unknown>, TResult>(\n object: TObject,\n fn: (value: TObject[typeof key], key: keyof TObject) => TResult,\n): Record<keyof TObject, TResult>\n\nfunction mapValues<TObject extends Record<string, unknown>>(\n object: TObject,\n fn: (value: TObject[typeof key], key: keyof TObject) => TObject[typeof key],\n): TObject\n\nfunction mapValues<TObject extends Record<string, unknown>, TResult>(\n object: TObject,\n fn: (value: TObject[typeof key], key: keyof TObject) => TResult,\n): Record<keyof TObject, TResult> {\n const result = {} as Record<keyof TObject, TResult>\n\n for (const [key, value] of entries(object)) {\n result[key] = fn(value, key)\n }\n\n return result\n}\n\nexport { mapValues }\n","import { entries } from \"~/tools/entries\"\n\nfunction partitionEntries<TObject extends Record<string, unknown>, TResult>(\n object: TObject,\n predicate: (value: TObject[typeof key] | TResult, key: keyof TObject) => value is TResult,\n): [Record<keyof TObject, TResult>, TObject] {\n const right = {} as Record<keyof TObject, TResult>\n const left = {} as TObject\n\n for (const [key, value] of entries(object)) {\n if (predicate(value, key)) {\n right[key] = value\n } else {\n left[key] = value\n }\n }\n\n return [right, left]\n}\n\nexport { partitionEntries }\n","import type { Monitor } from \"@owanturist/signal\"\n\nimport { mapValues } from \"~/tools/map-values\"\n\nimport type { FormMeta } from \"../../form-meta\"\nimport { SignalForm } from \"../../signal-form/_internal/signal-form\"\nimport type { FormShapeFields } from \"../form-shape-fields\"\nimport type { FormShapeParams } from \"../form-shape-params\"\n\nimport type { FormShapeState } from \"./form-shape-state\"\n\ntype FormShapeField<TField> = TField extends SignalForm ? TField : FormMeta<TField>\n\nclass FormShape<TFields extends FormShapeFields> extends SignalForm<FormShapeParams<TFields>> {\n public static override _getState = SignalForm._getState\n\n public readonly fields: {\n readonly [TField in keyof TFields]: FormShapeField<TFields[TField]>\n }\n\n public constructor(public readonly _state: FormShapeState<TFields>) {\n super()\n\n this.fields = {\n ...mapValues(_state._fields, ({ _host }) => _host()),\n\n ...mapValues(_state._meta, (field) => (monitor: Monitor) => field.read(monitor)),\n } as {\n readonly [TField in keyof TFields]: FormShapeField<TFields[TField]>\n }\n }\n}\n\nexport { FormShape }\n","import { type Monitor, Signal } from \"@owanturist/signal\"\n\nimport { entries } from \"~/tools/entries\"\nimport { hasProperty } from \"~/tools/has-property\"\nimport { isBoolean } from \"~/tools/is-boolean\"\nimport { isFunction } from \"~/tools/is-function\"\nimport { isNull } from \"~/tools/is-null\"\nimport { isString } from \"~/tools/is-string\"\nimport { isUndefined } from \"~/tools/is-undefined\"\nimport { Lazy } from \"~/tools/lazy\"\nimport { map } from \"~/tools/map\"\nimport { mapValues } from \"~/tools/map-values\"\nimport type { OmitValues } from \"~/tools/omit-values\"\nimport { values } from \"~/tools/values\"\n\nimport { toConcise } from \"../../_internal/to-concise\"\nimport {\n type SignalFormChild,\n SignalFormState,\n} from \"../../signal-form/_internal/signal-form-state\"\nimport type { SignalForm } from \"../../signal-form/signal-form\"\nimport type { SignalFormParams } from \"../../signal-form/signal-form-params\"\nimport { VALIDATE_ON_TOUCH, type ValidateStrategy } from \"../../validate-strategy\"\nimport type { FormShapeError } from \"../form-shape-error\"\nimport type { FormShapeErrorSetter } from \"../form-shape-error-setter\"\nimport type { FormShapeErrorVerbose } from \"../form-shape-error-verbose\"\nimport type { FormShapeFields } from \"../form-shape-fields\"\nimport type { FormShapeFlag } from \"../form-shape-flag\"\nimport type { FormShapeFlagSetter } from \"../form-shape-flag-setter\"\nimport type { FormShapeFlagVerbose } from \"../form-shape-flag-verbose\"\nimport type { FormShapeInput } from \"../form-shape-input\"\nimport type { FormShapeInputSetter } from \"../form-shape-input-setter\"\nimport type { FormShapeOutput } from \"../form-shape-output\"\nimport type { FormShapeOutputVerbose } from \"../form-shape-output-verbose\"\nimport type { FormShapeParams } from \"../form-shape-params\"\nimport type { FormShapeValidateOn } from \"../form-shape-validate-on\"\nimport type { FormShapeValidateOnSetter } from \"../form-shape-validate-on-setter\"\nimport type { FormShapeValidateOnVerbose } from \"../form-shape-validate-on-verbose\"\n\nimport { FormShape } from \"./form-shape\"\n\ntype FormShapeStateFields<TFields extends FormShapeFields> = OmitValues<\n {\n [TField in keyof TFields]: TFields[TField] extends SignalForm<infer TParams>\n ? SignalFormState<TParams>\n : never\n },\n never\n>\n\ntype FormShapeStateMeta<TFields extends FormShapeFields> = OmitValues<\n {\n [TField in keyof TFields]: TFields[TField] extends SignalForm ? never : Signal<TFields[TField]>\n },\n never\n>\n\nclass FormShapeState<TFields extends FormShapeFields = FormShapeFields> extends SignalFormState<\n FormShapeParams<TFields>\n> {\n public readonly _host = Lazy(() => new FormShape(this))\n\n public readonly _fields: FormShapeStateFields<TFields>\n\n public readonly _meta: FormShapeStateMeta<TFields>\n\n public constructor(\n parent: null | SignalFormState,\n fields: FormShapeStateFields<TFields>,\n meta: FormShapeStateMeta<TFields>,\n ) {\n super(parent)\n\n this._fields = mapValues(fields, (field) => this._parentOf(field))\n this._meta = mapValues(meta, (field) => field.clone()) as unknown as FormShapeStateMeta<TFields>\n }\n\n public _childOf(parent: null | SignalFormState): FormShapeState<TFields> {\n return new FormShapeState(parent, this._fields, this._meta)\n }\n\n // I N I T I A L\n\n public readonly _initial = Signal((monitor): FormShapeInput<TFields> => {\n const initial = mapValues(this._fields, ({ _initial }) => _initial.read(monitor))\n\n const meta = mapValues(this._meta, (field) => field.read(monitor))\n\n return { ...initial, ...meta } as FormShapeInput<TFields>\n })\n\n public _replaceInitial(\n monitor: Monitor,\n state: undefined | FormShapeState<TFields>,\n isMounting: boolean,\n ): void {\n for (const [key, field] of entries(this._fields)) {\n field._replaceInitial(monitor, state?._fields[key], isMounting)\n }\n }\n\n public _setInitial(monitor: Monitor, setter: FormShapeInputSetter<TFields>): void {\n const setters = isFunction(setter)\n ? setter(this._initial.read(monitor), this._input.read(monitor))\n : setter\n\n for (const [key, field] of entries(this._fields)) {\n if (hasProperty(setters, key) && !isUndefined(setters[key])) {\n field._setInitial(monitor, setters[key])\n }\n }\n\n for (const [key, field] of entries(this._meta)) {\n if (hasProperty(setters, key) && !isUndefined(setters[key])) {\n field.write(setters[key] as TFields[typeof key])\n }\n }\n }\n\n // I N P U T\n\n public readonly _input = Signal((monitor): FormShapeInput<TFields> => {\n const input = mapValues(this._fields, ({ _input }) => _input.read(monitor))\n\n const meta = mapValues(this._meta, (field) => field.read(monitor))\n\n return { ...input, ...meta } as FormShapeInput<TFields>\n })\n\n public _setInput(monitor: Monitor, setter: FormShapeInputSetter<TFields>): void {\n const setters = isFunction(setter)\n ? setter(this._input.read(monitor), this._initial.read(monitor))\n : setter\n\n for (const [key, field] of entries(this._fields)) {\n if (hasProperty(setters, key) && !isUndefined(setters[key])) {\n field._setInput(monitor, setters[key])\n }\n }\n }\n\n // E R R O R\n\n public readonly _error = Signal((monitor): FormShapeError<TFields> => {\n const error = mapValues(this._fields, ({ _error }) => _error.read(monitor))\n\n if (values(error).every(isNull)) {\n return null\n }\n\n return error as FormShapeError<TFields>\n })\n\n public readonly _errorVerbose = Signal((monitor): FormShapeErrorVerbose<TFields> => {\n const errorVerbose = mapValues(this._fields, ({ _errorVerbose }) => _errorVerbose.read(monitor))\n\n return errorVerbose as FormShapeErrorVerbose<TFields>\n })\n\n public _setError(monitor: Monitor, setter: FormShapeErrorSetter<TFields>): void {\n const setters = isFunction(setter) ? setter(this._errorVerbose.read(monitor)) : setter\n\n for (const [key, field] of entries(this._fields)) {\n if (isNull(setters)) {\n field._setError(monitor, setters)\n } else if (hasProperty(setters, key) && !isUndefined(setters[key])) {\n field._setError(monitor, setters[key])\n }\n }\n }\n\n // V A L I D A T E O N\n\n public readonly _validateOn = Signal((monitor): FormShapeValidateOn<TFields> => {\n const validateOn = mapValues(this._fields, ({ _validateOn }) => _validateOn.read(monitor))\n\n return toConcise(\n values(validateOn),\n isString as (input: unknown) => input is ValidateStrategy,\n VALIDATE_ON_TOUCH,\n validateOn as FormShapeValidateOn<TFields>,\n )\n })\n\n public readonly _validateOnVerbose = Signal((monitor): FormShapeValidateOnVerbose<TFields> => {\n const validateOnVerbose = mapValues(this._fields, ({ _validateOnVerbose }) =>\n _validateOnVerbose.read(monitor),\n )\n\n return validateOnVerbose as FormShapeValidateOnVerbose<TFields>\n })\n\n public _setValidateOn(monitor: Monitor, setter: FormShapeValidateOnSetter<TFields>): void {\n const setters = isFunction(setter) ? setter(this._validateOnVerbose.read(monitor)) : setter\n\n for (const [key, field] of entries(this._fields)) {\n if (isString(setters)) {\n field._setValidateOn(monitor, setters)\n } else if (hasProperty(setters, key) && !isUndefined(setters[key])) {\n field._setValidateOn(monitor, setters[key])\n }\n }\n }\n\n // T O U C H E D\n\n public readonly _touched = Signal((monitor): FormShapeFlag<TFields> => {\n const touched = mapValues(this._fields, ({ _touched }) => _touched.read(monitor))\n\n return toConcise(values(touched), isBoolean, false, touched as FormShapeFlag<TFields>)\n })\n\n public readonly _touchedVerbose = Signal((monitor): FormShapeFlagVerbose<TFields> => {\n const touchedVerbose = mapValues(this._fields, ({ _touchedVerbose }) =>\n _touchedVerbose.read(monitor),\n )\n\n return touchedVerbose as FormShapeFlagVerbose<TFields>\n })\n\n public _setTouched(monitor: Monitor, setter: FormShapeFlagSetter<TFields>): void {\n const setters = isFunction(setter) ? setter(this._touchedVerbose.read(monitor)) : setter\n\n for (const [key, field] of entries(this._fields)) {\n if (isBoolean(setters)) {\n field._setTouched(monitor, setters)\n } else if (hasProperty(setters, key) && !isUndefined(setters[key])) {\n field._setTouched(monitor, setters[key])\n }\n }\n }\n\n // O U T P U T\n\n public readonly _output = Signal((monitor): null | FormShapeOutput<TFields> => {\n const output = mapValues(this._fields, ({ _output }) => _output.read(monitor))\n\n if (values(output).some(isNull)) {\n return null\n }\n\n const meta = mapValues(this._meta, (field) => field.read(monitor))\n\n return { ...output, ...meta } as FormShapeOutput<TFields>\n })\n\n public readonly _outputVerbose = Signal((monitor): FormShapeOutputVerbose<TFields> => {\n const outputVerbose = mapValues(this._fields, ({ _outputVerbose }) =>\n _outputVerbose.read(monitor),\n )\n\n const meta = mapValues(this._meta, (field) => field.read(monitor))\n\n return {\n ...outputVerbose,\n ...meta,\n } as FormShapeOutputVerbose<TFields>\n })\n\n // V A L I D\n\n public readonly _valid = Signal((monitor): FormShapeFlag<TFields> => {\n const valid = mapValues(this._fields, ({ _valid }) => _valid.read(monitor))\n\n return toConcise(values(valid), isBoolean, false, valid as FormShapeFlag<TFields>)\n })\n\n public readonly _validVerbose = Signal((monitor): FormShapeFlagVerbose<TFields> => {\n const validVerbose = mapValues(this._fields, ({ _validVerbose }) => _validVerbose.read(monitor))\n\n return validVerbose as FormShapeFlagVerbose<TFields>\n })\n\n // I N V A L I D\n\n public readonly _invalid = Signal((monitor): FormShapeFlag<TFields> => {\n const invalid = mapValues(this._fields, ({ _invalid }) => _invalid.read(monitor))\n\n return toConcise(values(invalid), isBoolean, false, invalid as FormShapeFlag<TFields>)\n })\n\n public readonly _invalidVerbose = Signal((monitor): FormShapeFlagVerbose<TFields> => {\n const invalidVerbose = mapValues(this._fields, ({ _invalidVerbose }) =>\n _invalidVerbose.read(monitor),\n )\n\n return invalidVerbose as FormShapeFlagVerbose<TFields>\n })\n\n // V A L I D A T E D\n\n public readonly _validated = Signal((monitor): FormShapeFlag<TFields> => {\n const validated = mapValues(this._fields, ({ _validated }) => _validated.read(monitor))\n\n return toConcise(values(validated), isBoolean, false, validated as FormShapeFlag<TFields>)\n })\n\n public readonly _validatedVerbose = Signal((monitor): FormShapeFlagVerbose<TFields> => {\n const validatedVerbose = mapValues(this._fields, ({ _validatedVerbose }) =>\n _validatedVerbose.read(monitor),\n )\n\n return validatedVerbose as FormShapeFlagVerbose<TFields>\n })\n\n public _forceValidated(monitor: Monitor): void {\n for (const field of values(this._fields)) {\n field._forceValidated(monitor)\n }\n }\n\n // D I R T Y\n\n public readonly _dirty = Signal((monitor): FormShapeFlag<TFields> => {\n const dirty = mapValues(this._fields, ({ _dirty }) => _dirty.read(monitor))\n\n return toConcise(values(dirty), isBoolean, false, dirty as FormShapeFlag<TFields>)\n })\n\n public readonly _dirtyVerbose = Signal((monitor): FormShapeFlagVerbose<TFields> => {\n const dirtyVerbose = mapValues(this._fields, ({ _dirtyVerbose }) => _dirtyVerbose.read(monitor))\n\n return dirtyVerbose as FormShapeFlagVerbose<TFields>\n })\n\n public readonly _dirtyOn = Signal((monitor): FormShapeFlag<TFields> => {\n const dirtyOn = mapValues(this._fields, ({ _dirtyOn }) => _dirtyOn.read(monitor))\n\n return toConcise(values(dirtyOn), isBoolean, false, dirtyOn as FormShapeFlag<TFields>)\n })\n\n public readonly _dirtyOnVerbose = Signal((monitor): FormShapeFlagVerbose<TFields> => {\n const dirtyOnVerbose = mapValues(this._fields, ({ _dirtyOnVerbose }) =>\n _dirtyOnVerbose.read(monitor),\n )\n\n return dirtyOnVerbose as FormShapeFlagVerbose<TFields>\n })\n\n // R E S E T\n\n public _reset(monitor: Monitor, resetter: undefined | FormShapeInputSetter<TFields>): void {\n if (!isUndefined(resetter)) {\n this._setInitial(monitor, resetter)\n }\n\n for (const field of values(this._fields)) {\n field._reset(monitor, undefined)\n }\n }\n\n // C H I L D R E N\n\n public _getChildren<TChildParams extends SignalFormParams>(): ReadonlyArray<\n SignalFormChild<TChildParams, FormShapeParams<TFields>>\n > {\n return map(entries(this._fields), ([key, field]) => ({\n _state: field as unknown as SignalFormState<TChildParams>,\n _mapToChild: (output) => output[key as keyof FormShapeOutput<TFields>],\n }))\n }\n}\n\nexport type { FormShapeStateFields, FormShapeStateMeta }\nexport { FormShapeState }\n","function isBoolean(value: unknown): value is boolean {\n return typeof value === \"boolean\"\n}\n\nexport { isBoolean }\n","const { values } = Object as {\n values: <TObject>(object: TObject) => ReadonlyArray<TObject[keyof TObject]>\n}\n\nexport { values }\n","function toConcise<TEntry, TConcise>(\n entries: ReadonlyArray<TEntry | TConcise>,\n isConcise: (entry: TEntry | TConcise) => entry is TConcise,\n fallback: TConcise,\n): TConcise | ReadonlyArray<TEntry | TConcise>\n\nfunction toConcise<TEntry, TConcise, TVerbose>(\n entries: ReadonlyArray<TEntry | TConcise>,\n isConcise: (entry: TEntry | TConcise) => entry is TConcise,\n fallback: TConcise,\n verbose: TVerbose,\n): TConcise | TVerbose\n\nfunction toConcise<TEntry, TConcise, TVerbose>(\n entries: ReadonlyArray<TEntry | TConcise>,\n isConcise: (entry: TEntry | TConcise) => entry is TConcise,\n fallback: TConcise,\n verbose?: TVerbose,\n): TConcise | ReadonlyArray<TEntry | TConcise> | TVerbose {\n const concise = entries.find(isConcise) ?? fallback\n\n for (const entry of entries) {\n if (entry !== concise) {\n return verbose ?? entries\n }\n }\n\n return concise\n}\n\nexport { toConcise }\n","import type { FormShapeFields } from \"./form-shape-fields\"\nimport { FormShape } from \"./_internal/form-shape\"\n\nfunction isFormShape(value: unknown): value is FormShape<FormShapeFields> {\n return value instanceof FormShape\n}\n\nexport { isFormShape }\n","import { batch } from \"@owanturist/signal\"\n\nimport { isUndefined } from \"~/tools/is-undefined\"\nimport { map } from \"~/tools/map\"\n\nimport type { SignalForm } from \"../signal-form/signal-form\"\n\nimport type { FormListErrorSetter } from \"./form-list-error-setter\"\nimport type { FormListFlagSetter } from \"./form-list-flag-setter\"\nimport type { FormListInputSetter } from \"./form-list-input-setter\"\nimport type { FormListValidateOnSetter } from \"./form-list-validate-on-setter\"\nimport { FormList as FormListImpl } from \"./_internal/form-list\"\nimport { FormListState } from \"./_internal/form-list-state\"\n\ntype FormList<TElement extends SignalForm> = FormListImpl<TElement>\n\ninterface FormListOptions<TElement extends SignalForm> {\n readonly input?: FormListInputSetter<TElement>\n readonly initial?: FormListInputSetter<TElement>\n readonly touched?: FormListFlagSetter<TElement>\n readonly validateOn?: FormListValidateOnSetter<TElement>\n readonly error?: FormListErrorSetter<TElement>\n}\n\nfunction FormList<TElement extends SignalForm>(\n elements: ReadonlyArray<TElement>,\n { input, initial, touched, validateOn, error }: FormListOptions<TElement> = {},\n): FormList<TElement> {\n const state = new FormListState<TElement>(null, map(elements, FormListImpl._getState))\n\n batch((monitor) => {\n if (!isUndefined(input)) {\n state._setInput(monitor, input)\n }\n\n if (!isUndefined(initial)) {\n state._setInitial(monitor, initial)\n }\n\n if (!isUndefined(touched)) {\n state._setTouched(monitor, touched)\n }\n\n if (!isUndefined(validateOn)) {\n state._setValidateOn(monitor, validateOn)\n }\n\n if (!isUndefined(error)) {\n state._setError(monitor, error)\n }\n })\n\n return state._host()\n}\n\nexport type { FormListOptions }\nexport { FormList }\n","import { type Monitor, Signal, batch } from \"@owanturist/signal\"\n\nimport { entries } from \"~/tools/entries\"\nimport { isFunction } from \"~/tools/is-function\"\nimport { isShallowArrayEqual } from \"~/tools/is-shallow-array-equal\"\nimport { map } from \"~/tools/map\"\nimport { params } from \"~/tools/params\"\nimport type { Setter } from \"~/tools/setter\"\n\nimport { SignalForm } from \"../../signal-form/_internal/signal-form\"\nimport type { FormListParams } from \"../form-list-params\"\n\nimport type { FormListState } from \"./form-list-state\"\n\nclass FormList<TElement extends SignalForm> extends SignalForm<FormListParams<TElement>> {\n public static override _getState = SignalForm._getState\n\n private readonly _elements = Signal((monitor) => this._state._getElements(monitor), {\n equals: isShallowArrayEqual,\n })\n\n public constructor(public readonly _state: FormListState<TElement>) {\n super()\n }\n\n public getElements(monitor: Monitor): ReadonlyArray<TElement>\n public getElements<TResult>(\n monitor: Monitor,\n select: (elements: ReadonlyArray<TElement>) => TResult,\n ): TResult\n public getElements<TResult>(\n monitor: Monitor,\n select: (elements: ReadonlyArray<TElement>) => TResult = params._first as typeof select,\n ): TResult {\n return select(this._elements.read(monitor))\n }\n\n public setElements(\n setter: Setter<ReadonlyArray<TElement>, [ReadonlyArray<TElement>, Monitor]>,\n ): void {\n batch((monitor) => {\n const initialElements = this._state._getInitialElements(monitor)\n\n const elementsStates = map(\n isFunction(setter) ? setter(this._elements.read(monitor), monitor) : setter,\n\n SignalForm._getState,\n )\n\n const nextStateElements = map(elementsStates, (element) => this._state._parentOf(element))\n\n // detach all elements from their initial states in one go\n for (const stateElement of nextStateElements) {\n stateElement._replaceInitial(monitor, undefined, false)\n }\n\n // attach the elements to their updated initial states\n for (const [index, stateElement] of entries(nextStateElements)) {\n stateElement._replaceInitial(\n monitor,\n initialElements.at(index),\n !elementsStates.at(index)?._hasSameRootWith(stateElement),\n )\n }\n\n this._state._elements.write(nextStateElements)\n })\n }\n}\n\nexport { FormList }\n","function params<TArgs extends ReadonlyArray<unknown>>(...args: TArgs): TArgs {\n return args\n}\n\nparams._first = <T>(first: T): T => first\nparams._second = <T>(_first: unknown, second: T): T => second\nparams._third = <T>(_first: unknown, _second: unknown, third: T): T => third\n\nexport { params }\n","import { type Monitor, Signal, untracked } from \"@owanturist/signal\"\n\nimport { concat } from \"~/tools/concat\"\nimport { drop } from \"~/tools/drop\"\nimport { entries } from \"~/tools/entries\"\nimport { isBoolean } from \"~/tools/is-boolean\"\nimport { isFunction } from \"~/tools/is-function\"\nimport { isNull } from \"~/tools/is-null\"\nimport { isString } from \"~/tools/is-string\"\nimport { isUndefined } from \"~/tools/is-undefined\"\nimport { Lazy } from \"~/tools/lazy\"\nimport { map } from \"~/tools/map\"\nimport { take } from \"~/tools/take\"\n\nimport { toConcise } from \"../../_internal/to-concise\"\nimport type { GetSignalFormParams } from \"../../signal-form/_internal/get-signal-form-params\"\nimport {\n type SignalFormChild,\n SignalFormState,\n} from \"../../signal-form/_internal/signal-form-state\"\nimport type { SignalForm } from \"../../signal-form/signal-form\"\nimport type { SignalFormParams } from \"../../signal-form/signal-form-params\"\nimport { VALIDATE_ON_TOUCH } from \"../../validate-strategy\"\nimport type { FormListError } from \"../form-list-error\"\nimport type { FormListErrorSetter } from \"../form-list-error-setter\"\nimport type { FormListErrorVerbose } from \"../form-list-error-verbose\"\nimport type { FormListFlag } from \"../form-list-flag\"\nimport type { FormListFlagSetter } from \"../form-list-flag-setter\"\nimport type { FormListFlagVerbose } from \"../form-list-flag-verbose\"\nimport type { FormListInput } from \"../form-list-input\"\nimport type { FormListInputSetter } from \"../form-list-input-setter\"\nimport type { FormListOutput } from \"../form-list-output\"\nimport type { FormListOutputVerbose } from \"../form-list-output-verbose\"\nimport type { FormListParams } from \"../form-list-params\"\nimport type { FormListValidateOn } from \"../form-list-validate-on\"\nimport type { FormListValidateOnSetter } from \"../form-list-validate-on-setter\"\nimport type { FormListValidateOnVerbose } from \"../form-list-validate-on-verbose\"\n\nimport { FormList } from \"./form-list\"\n\nclass FormListState<TElement extends SignalForm = SignalForm> extends SignalFormState<\n FormListParams<TElement>\n> {\n public readonly _host = Lazy(() => new FormList(this))\n\n public readonly _elements: Signal<ReadonlyArray<SignalFormState<GetSignalFormParams<TElement>>>>\n\n private readonly _initialElements: Signal<{\n _list: Signal<ReadonlyArray<SignalFormState<GetSignalFormParams<TElement>>>>\n }>\n\n public constructor(\n parent: null | SignalFormState,\n elements: ReadonlyArray<SignalFormState<GetSignalFormParams<TElement>>>,\n ) {\n super(parent)\n\n const initialElements = map(elements, (element) => element._clone())\n\n this._initialElements = Signal({\n _list: Signal(initialElements),\n })\n\n this._elements = Signal(\n untracked((monitor) =>\n map(elements, (element, index) => {\n const child = this._parentOf(element)\n\n child._replaceInitial(monitor, initialElements.at(index), true)\n\n return child\n }),\n ),\n )\n }\n\n public _childOf(parent: null | SignalFormState): FormListState<TElement> {\n return new FormListState(parent, untracked(this._elements))\n }\n\n public _getElements(monitor: Monitor): ReadonlyArray<TElement> {\n return map(this._elements.read(monitor), ({ _host }) => _host() as TElement)\n }\n\n public _getInitialElements(\n monitor: Monitor,\n ): ReadonlyArray<SignalFormState<GetSignalFormParams<TElement>>> {\n return this._initialElements.read(monitor)._list.read(monitor)\n }\n\n public readonly _initial = Signal(\n (monitor): FormListInput<TElement> =>\n map(this._getInitialElements(monitor), ({ _initial }) => _initial.read(monitor)),\n )\n\n public _replaceInitial(\n monitor: Monitor,\n state: undefined | FormListState<TElement>,\n isMounting: boolean,\n ): void {\n if (state) {\n const elements = this._elements.read(monitor)\n const initialElements = state._initialElements.read(monitor)\n\n this._initialElements.write(initialElements)\n\n for (const [index, element] of entries(initialElements._list.read(monitor))) {\n elements.at(index)?._replaceInitial(monitor, element, isMounting)\n }\n }\n }\n\n public _setInitial(monitor: Monitor, setter: FormListInputSetter<TElement>): void {\n const setters = isFunction(setter)\n ? setter(this._initial.read(monitor), this._input.read(monitor))\n : setter\n\n const elements = this._elements.read(monitor)\n const initialElements = this._initialElements.read(monitor)\n const initialElementsList = initialElements._list.read(monitor)\n\n const nextInitialElements = map(\n take(\n concat(\n initialElementsList,\n // fallback the initial elements to the current elements' tail\n drop(elements, initialElementsList.length),\n ),\n setters.length,\n ),\n (element) => element._clone(),\n )\n\n initialElements._list.write(nextInitialElements)\n\n for (const [index, initial] of entries(setters)) {\n if (!isUndefined(initial)) {\n nextInitialElements.at(index)?._setInitial(monitor, initial)\n }\n }\n\n for (const [index, element] of entries(nextInitialElements)) {\n elements.at(index)?._replaceInitial(monitor, element, false)\n }\n }\n\n public readonly _input = Signal(\n (monitor): FormListInput<TElement> =>\n map(this._elements.read(monitor), ({ _input }) => _input.read(monitor)),\n )\n\n public _setInput(monitor: Monitor, setter: FormListInputSetter<TElement>): void {\n const setters = isFunction(setter)\n ? setter(this._input.read(monitor), this._initial.read(monitor))\n : setter\n\n for (const [index, element] of entries(this._elements.read(monitor))) {\n const input = setters.at(index)\n\n if (!isUndefined(input)) {\n element._setInput(monitor, input)\n }\n }\n }\n\n public readonly _error = Signal((monitor): FormListError<TElement> => {\n const error = map(this._elements.read(monitor), ({ _error }) => _error.read(monitor))\n\n if (error.every(isNull)) {\n return null\n }\n\n return error\n })\n\n public readonly _errorVerbose = Signal(\n (monitor): FormListErrorVerbose<TElement> =>\n map(this._elements.read(monitor), ({ _errorVerbose }) => _errorVerbose.read(monitor)),\n )\n\n public _setError(monitor: Monitor, setter: FormListErrorSetter<TElement>): void {\n const setters = isFunction(setter) ? setter(this._errorVerbose.read(monitor)) : setter\n\n for (const [index, element] of entries(this._elements.read(monitor))) {\n const error = isNull(setters) ? setters : setters.at(index)\n\n if (!isUndefined(error)) {\n element._setError(monitor, error)\n }\n }\n }\n\n public readonly _validateOn = Signal((monitor): FormListValidateOn<TElement> => {\n const validateOn = map(this._elements.read(monitor), ({ _validateOn }) =>\n _validateOn.read(monitor),\n )\n\n return toConcise(validateOn, isString, VALIDATE_ON_TOUCH)\n })\n\n public readonly _validateOnVerbose = Signal(\n (monitor): FormListValidateOnVerbose<TElement> =>\n map(this._elements.read(monitor), ({ _validateOnVerbose }) =>\n _validateOnVerbose.read(monitor),\n ),\n )\n\n public _setValidateOn(monitor: Monitor, setter: FormListValidateOnSetter<TElement>): void {\n const setters = isFunction(setter) ? setter(this._validateOnVerbose.read(monitor)) : setter\n\n for (const [index, element] of entries(this._getInitialElements(monitor))) {\n const validateOn = isString(setters) ? setters : setters.at(index)\n\n if (!isUndefined(validateOn)) {\n element._setValidateOn(monitor, validateOn)\n }\n }\n\n for (const [index, element] of entries(this._elements.read(monitor))) {\n const validateOn = isString(setters) ? setters : setters.at(index)\n\n if (!isUndefined(validateOn)) {\n element._setValidateOn(monitor, validateOn)\n }\n }\n }\n\n public readonly _touched = Signal((monitor): FormListFlag<TElement> => {\n const touched = map(this._elements.read(monitor), ({ _touched }) => _touched.read(monitor))\n\n return toConcise(touched, isBoolean, false)\n })\n\n public readonly _touchedVerbose = Signal(\n (monitor): FormListFlagVerbose<TElement> =>\n map(this._elements.read(monitor), ({ _touchedVerbose }) => _touchedVerbose.read(monitor)),\n )\n\n public _setTouched(monitor: Monitor, setter: FormListFlagSetter<TElement>): void {\n const setters = isFunction(setter) ? setter(this._touchedVerbose.read(monitor)) : setter\n\n for (const [index, element] of entries(this._elements.read(monitor))) {\n const touched = isBoolean(setters) ? setters : setters.at(index)\n\n if (!isUndefined(touched)) {\n element._setTouched(monitor, touched)\n }\n }\n }\n\n public readonly _output = Signal((monitor): null | FormListOutput<TElement> => {\n const output = map(this._elements.read(monitor), ({ _output }) => _output.read(monitor))\n\n if (output.some(isNull)) {\n return null\n }\n\n return output\n })\n\n public readonly _outputVerbose = Signal(\n (monitor): FormListOutputVerbose<TElement> =>\n map(this._elements.read(monitor), ({ _outputVerbose }) => _outputVerbose.read(monitor)),\n )\n\n public readonly _valid = Signal((monitor): FormListFlag<TElement> => {\n const valid = map(this._elements.read(monitor), ({ _valid }) => _valid.read(monitor))\n\n return toConcise(valid, isBoolean, false)\n })\n\n public readonly _validVerbose = Signal(\n (monitor): FormListFlagVerbose<TElement> =>\n map(this._elements.read(monitor), ({ _validVerbose }) => _validVerbose.read(monitor)),\n )\n\n public readonly _invalid = Signal((monitor): FormListFlag<TElement> => {\n const invalid = map(this._elements.read(monitor), ({ _invalid }) => _invalid.read(monitor))\n\n return toConcise(invalid, isBoolean, false)\n })\n\n public readonly _invalidVerbose = Signal(\n (monitor): FormListFlagVerbose<TElement> =>\n map(this._elements.read(monitor), ({ _invalidVerbose }) => _invalidVerbose.read(monitor)),\n )\n\n public readonly _validated = Signal((monitor): FormListFlag<TElement> => {\n const validated = map(this._elements.read(monitor), ({ _validated }) =>\n _validated.read(monitor),\n )\n\n return toConcise(validated, isBoolean, false)\n })\n\n public readonly _validatedVerbose = Signal(\n (monitor): FormListFlagVerbose<TElement> =>\n map(this._elements.read(monitor), ({ _validatedVerbose }) => _validatedVerbose.read(monitor)),\n )\n\n public _forceValidated(monitor: Monitor): void {\n for (const element of this._elements.read(monitor)) {\n element._forceValidated(monitor)\n }\n }\n\n public readonly _dirty = Signal((monitor): FormListFlag<TElement> => {\n const elements = this._elements.read(monitor)\n const initialElements = this._getInitialElements(monitor)\n\n const dirty = concat(\n map(elements, ({ _dirty, _dirtyOn }, index) => {\n if (index >= initialElements.length) {\n // added elements are always dirty\n return _dirtyOn.read(monitor)\n }\n\n return _dirty.read(monitor)\n }),\n\n // removed elements are always dirty\n map(drop(initialElements, elements.length), ({ _dirtyOn }) => _dirtyOn.read(monitor)),\n )\n\n return toConcise(dirty, isBoolean, false)\n })\n\n public readonly _dirtyVerbose = Signal((monitor): FormListFlagVerbose<TElement> => {\n const elements = this._elements.read(monitor)\n const initialElements = this._getInitialElements(monitor)\n\n return concat(\n map(elements, ({ _dirtyVerbose, _dirtyOnVerbose }, index) => {\n if (index >= initialElements.length) {\n // added elements are always dirty\n return _dirtyOnVerbose.read(monitor)\n }\n\n return _dirtyVerbose.read(monitor)\n }),\n\n // removed elements are always dirty\n map(drop(initialElements, elements.length), ({ _dirtyOnVerbose }) =>\n _dirtyOnVerbose.read(monitor),\n ),\n )\n })\n\n public readonly _dirtyOn = Signal((monitor): FormListFlag<TElement> => {\n const dirtyOn = map(this._getInitialElements(monitor), ({ _dirtyOn }) => _dirtyOn.read(monitor))\n\n return toConcise(dirtyOn, isBoolean, false)\n })\n\n public readonly _dirtyOnVerbose = Signal(\n (monitor): FormListFlagVerbose<TElement> =>\n map(this._getInitialElements(monitor), ({ _dirtyOnVerbose }) =>\n _dirtyOnVerbose.read(monitor),\n ),\n )\n\n public _reset(monitor: Monitor, resetter: undefined | FormListInputSetter<TElement>): void {\n if (!isUndefined(resetter)) {\n this._setInitial(monitor, resetter)\n }\n\n const nextElements = this._getInitialElements(monitor)\n\n for (const element of nextElements) {\n element._reset(monitor, undefined)\n }\n\n this._elements.write(map(nextElements, (element) => this._parentOf(element)))\n }\n\n public _getChildren<TChildParams extends SignalFormParams>(\n monitor: Monitor,\n ): ReadonlyArray<SignalFormChild<TChildParams, FormListParams<TElement>>> {\n return map(this._elements.read(monitor), (element, index) => ({\n _state: element as unknown as SignalFormState<TChildParams>,\n _mapToChild: (output) => output.at(index),\n }))\n }\n}\n\nexport { FormListState }\n","function concat<T>(left: ReadonlyArray<T>, right: ReadonlyArray<T>): ReadonlyArray<T> {\n if (left.length === 0) {\n return right\n }\n\n if (right.length === 0) {\n return left\n }\n\n return [...left, ...right]\n}\n\nexport { concat }\n","function drop<T>(arr: ReadonlyArray<T>, count: number): ReadonlyArray<T> {\n if (count <= 0) {\n return arr\n }\n\n if (count >= arr.length) {\n return []\n }\n\n return arr.slice(count)\n}\n\nexport { drop }\n","function take<T>(arr: ReadonlyArray<T>, count: number): ReadonlyArray<T> {\n if (count <= 0) {\n return []\n }\n\n if (count >= arr.length) {\n return arr\n }\n\n return arr.slice(0, count)\n}\n\nexport { take }\n","import type { SignalForm } from \"../signal-form/signal-form\"\n\nimport { FormList } from \"./_internal/form-list\"\n\nfunction isFormList(value: unknown): value is FormList<SignalForm> {\n return value instanceof FormList\n}\n\nexport { isFormList }\n","import { batch } from \"@owanturist/signal\"\n\nimport type { IsEqualType } from \"~/tools/is-type-equal\"\nimport { isUndefined } from \"~/tools/is-undefined\"\n\nimport type { GetSignalFormParam } from \"../signal-form/get-signal-form-param\"\nimport type { SignalForm } from \"../signal-form/signal-form\"\n\nimport type { FormOptionalErrorSetter } from \"./form-optional-error-setter\"\nimport type { FormOptionalFlagSetter } from \"./form-optional-flag-setter\"\nimport type { FormOptionalInputSetter } from \"./form-optional-input-setter\"\nimport type { FormOptionalValidateOnSetter } from \"./form-optional-validate-on-setter\"\nimport { FormOptional as FormOptionalImpl } from \"./_internal/form-optional\"\nimport { FormOptionalState } from \"./_internal/form-optional-state\"\n\ntype FormOptional<TEnabled extends SignalForm, TElement extends SignalForm> = FormOptionalImpl<\n TEnabled,\n TElement\n>\n\ninterface FormOptionalOptions<TEnabled extends SignalForm, TElement extends SignalForm> {\n input?: FormOptionalInputSetter<TEnabled, TElement>\n initial?: FormOptionalInputSetter<TEnabled, TElement>\n touched?: FormOptionalFlagSetter<TEnabled, TElement>\n validateOn?: FormOptionalValidateOnSetter<TEnabled, TElement>\n error?: FormOptionalErrorSetter<TEnabled, TElement>\n}\n\nfunction FormOptional<TEnabled extends SignalForm, TElement extends SignalForm>(\n enabled: IsEqualType<GetSignalFormParam<TEnabled, \"output.schema\">, boolean> extends true\n ? TEnabled\n : never,\n element: TElement,\n { input, initial, touched, validateOn, error }: FormOptionalOptions<TEnabled, TElement> = {},\n): FormOptional<TEnabled, TElement> {\n const optional = new FormOptionalState<TEnabled, TElement>(\n null,\n FormOptionalImpl._getState(enabled),\n FormOptionalImpl._getState(element),\n )\n\n batch((monitor) => {\n if (!isUndefined(touched)) {\n optional._setTouched(monitor, touched)\n }\n\n if (!isUndefined(initial)) {\n optional._setInitial(monitor, initial)\n }\n\n if (!isUndefined(input)) {\n optional._setInput(monitor, input)\n }\n\n if (!isUndefined(validateOn)) {\n optional._setValidateOn(monitor, validateOn)\n }\n\n if (!isUndefined(error)) {\n optional._setError(monitor, error)\n }\n })\n\n return optional._host() as FormOptional<TEnabled, TElement>\n}\n\nexport type { FormOptionalOptions }\nexport { FormOptional }\n","import type { Monitor } from \"@owanturist/signal\"\n\nimport { SignalForm } from \"../../signal-form/_internal/signal-form\"\nimport type { FormOptionalParams } from \"../form-optional-params\"\n\nimport type { FormOptionalState } from \"./form-optional-state\"\n\nclass FormOptional<TEnabled extends SignalForm, TElement extends SignalForm> extends SignalForm<\n FormOptionalParams<TEnabled, TElement>\n> {\n public static override _getState = SignalForm._getState\n\n public readonly enabled: TEnabled\n public readonly element: TElement\n\n public constructor(public readonly _state: FormOptionalState<TEnabled, TElement>) {\n super()\n\n this.enabled = _state._enabled._host() as TEnabled\n this.element = _state._element._host() as TElement\n }\n\n public getEnabledElement(monitor: Monitor): undefined | TElement {\n return this._state._getEnabledElement(monitor)?._host() as undefined | TElement\n }\n}\n\nexport { FormOptional }\n","import { type Monitor, type ReadableSignal, Signal } from \"@owanturist/signal\"\n\nimport { isBoolean } from \"~/tools/is-boolean\"\nimport { isFunction } from \"~/tools/is-function\"\nimport { isNull } from \"~/tools/is-null\"\nimport { isString } from \"~/tools/is-string\"\nimport { isTrue } from \"~/tools/is-true\"\nimport { isUndefined } from \"~/tools/is-undefined\"\nimport { Lazy } from \"~/tools/lazy\"\n\nimport { toConcise } from \"../../_internal/to-concise\"\nimport type { GetSignalFormParams } from \"../../signal-form/_internal/get-signal-form-params\"\nimport {\n type SignalFormChild,\n SignalFormState,\n} from \"../../signal-form/_internal/signal-form-state\"\nimport type { SignalForm } from \"../../signal-form/signal-form\"\nimport type { SignalFormParams } from \"../../signal-form/signal-form-params\"\nimport type { ValidateStrategy } from \"../../validate-strategy\"\nimport type { FormOptionalError } from \"../form-optional-error\"\nimport type { FormOptionalErrorSetter } from \"../form-optional-error-setter\"\nimport type { FormOptionalErrorVerbose } from \"../form-optional-error-verbose\"\nimport type { FormOptionalFlag } from \"../form-optional-flag\"\nimport type { FormOptionalFlagSetter } from \"../form-optional-flag-setter\"\nimport type { FormOptionalFlagVerbose } from \"../form-optional-flag-verbose\"\nimport type { FormOptionalInput } from \"../form-optional-input\"\nimport type { FormOptionalInputSetter } from \"../form-optional-input-setter\"\nimport type { FormOptionalOutput } from \"../form-optional-output\"\nimport type { FormOptionalOutputVerbose } from \"../form-optional-output-verbose\"\nimport type { FormOptionalParams } from \"../form-optional-params\"\nimport type { FormOptionalValidateOn } from \"../form-optional-validate-on\"\nimport type { FormOptionalValidateOnSetter } from \"../form-optional-validate-on-setter\"\nimport type { FormOptionalValidateOnVerbose } from \"../form-optional-validate-on-verbose\"\n\nimport { FormOptional } from \"./form-optional\"\n\nclass FormOptionalState<\n TEnabled extends SignalForm,\n TElement extends SignalForm,\n> extends SignalFormState<FormOptionalParams<TEnabled, TElement>> {\n public readonly _host = Lazy(() => new FormOptional(this))\n\n public readonly _enabled: SignalFormState<GetSignalFormParams<TEnabled>>\n public readonly _element: SignalFormState<GetSignalFormParams<TElement>>\n\n public constructor(\n parent: null | SignalFormState,\n enabled: SignalFormState<GetSignalFormParams<TEnabled>>,\n element: SignalFormState<GetSignalFormParams<TElement>>,\n ) {\n super(parent)\n\n this._enabled = this._parentOf(enabled)\n this._element = this._parentOf(element)\n }\n\n private _isEnabled(monitor: Monitor): boolean {\n return isTrue(this._enabled._output.read(monitor))\n }\n\n public _getEnabledElement(\n monitor: Monitor,\n ): undefined | SignalFormState<GetSignalFormParams<TElement>> {\n return this._isEnabled(monitor) ? this._element : undefined\n }\n\n public _childOf(parent: null | SignalFormState): FormOptionalState<TEnabled, TElement> {\n return new FormOptionalState(parent, this._enabled, this._element)\n }\n\n private _toConcise<TConcise>(\n monitor: Monitor,\n extract: (form: SignalFormState) => ReadableSignal<TConcise>,\n isConcise: (value: unknown) => value is TConcise,\n fallbackDisabled?: TConcise,\n ): TConcise | { enabled: TConcise; element: TConcise } {\n const enabled = extract(this._enabled).read(monitor)\n const enabledElement = this._getEnabledElement(monitor)\n\n if (!enabledElement) {\n return isConcise(enabled) || isUndefined(fallbackDisabled)\n ? enabled\n : { enabled, element: fallbackDisabled }\n }\n\n const element = extract(enabledElement).read(monitor)\n\n return toConcise([enabled, element], isConcise, enabled, {\n enabled,\n element,\n }) as TConcise | { enabled: TConcise; element: TConcise }\n }\n\n private _toVerbose(\n monitor: Monitor,\n extract: (form: SignalFormState) => ReadableSignal<unknown>,\n ): FormOptionalInput<TEnabled, TElement> {\n const enabled = extract(this._enabled).read(monitor)\n const element = extract(this._element).read(monitor)\n\n return { enabled, element } as FormOptionalInput<TEnabled, TElement>\n }\n\n // I N I T I A L\n\n public readonly _initial = Signal(\n (monitor): FormOptionalInput<TEnabled, TElement> =>\n this._toVerbose(monitor, ({ _initial }) => _initial),\n )\n\n public _setInitial(monitor: Monitor, setter: FormOptionalInputSetter<TEnabled, TElement>): void {\n const { enabled, element } = isFunction(setter)\n ? setter(this._initial.read(monitor), this._input.read(monitor))\n : setter\n\n if (!isUndefined(enabled)) {\n this._enabled._setInitial(monitor, enabled)\n }\n\n if (!isUndefined(element)) {\n this._element._setInitial(monitor, element)\n }\n }\n\n public _replaceInitial(\n monitor: Monitor,\n state: undefined | FormOptionalState<TEnabled, TElement>,\n isMounting: boolean,\n ): void {\n this._enabled._replaceInitial(monitor, state?._enabled, isMounting)\n this._element._replaceInitial(monitor, state?._element, isMounting)\n }\n\n // I N P U T\n\n public readonly _input = Signal(\n (monitor): FormOptionalInput<TEnabled, TElement> =>\n this._toVerbose(monitor, ({ _input }) => _input),\n )\n\n public _setInput(monitor: Monitor, setter: FormOptionalInputSetter<TEnabled, TElement>): void {\n const { enabled, element } = isFunction(setter)\n ? setter(this._input.read(monitor), this._initial.read(monitor))\n : setter\n\n if (!isUndefined(enabled)) {\n this._enabled._setInput(monitor, enabled)\n }\n\n if (!isUndefined(element)) {\n this._element._setInput(monitor, element)\n }\n }\n\n // E R R O R\n\n public readonly _error = Signal(\n (monitor): FormOptionalError<TEnabled, TElement> =>\n this._toConcise<null>(monitor, ({ _error }) => _error, isNull, null) as FormOptionalError<\n TEnabled,\n TElement\n >,\n )\n\n public readonly _errorVerbose = Signal(\n (monitor): FormOptionalErrorVerbose<TEnabled, TElement> =>\n this._toVerbose(monitor, ({ _errorVerbose }) => _errorVerbose) as FormOptionalErrorVerbose<\n TEnabled,\n TElement\n >,\n )\n\n public _setError(monitor: Monitor, setter: FormOptionalErrorSetter<TEnabled, TElement>): void {\n const resolved = isFunction(setter) ? setter(this._errorVerbose.read(monitor)) : setter\n\n const enabledSetter = isNull(resolved) ? resolved : resolved.enabled\n\n if (!isUndefined(enabledSetter)) {\n this._enabled._setError(monitor, enabledSetter)\n }\n\n const elementSetter = isNull(resolved)\n ? this._isEnabled(monitor)\n ? resolved\n : undefined\n : resolved.element\n\n if (!isUndefined(elementSetter)) {\n this._element._setError(monitor, elementSetter)\n }\n }\n\n // V A L I D A T E O N\n\n public readonly _validateOn = Signal(\n (monitor): FormOptionalValidateOn<TEnabled, TElement> =>\n this._toConcise<ValidateStrategy>(\n monitor,\n ({ _validateOn }) => _validateOn,\n isString as (value: unknown) => value is ValidateStrategy,\n ) as FormOptionalValidateOn<TEnabled, TElement>,\n )\n\n public readonly _validateOnVerbose = Signal(\n (monitor): FormOptionalValidateOnVerbose<TEnabled, TElement> =>\n this._toVerbose(\n monitor,\n ({ _validateOnVerbose }) => _validateOnVerbose,\n ) as FormOptionalValidateOnVerbose<TEnabled, TElement>,\n )\n\n public _setValidateOn(\n monitor: Monitor,\n setter: FormOptionalValidateOnSetter<TEnabled, TElement>,\n ): void {\n const resolved = isFunction(setter) ? setter(this._validateOnVerbose.read(monitor)) : setter\n\n const [enabledSetter, elementSetter] = isString(resolved)\n ? [resolved, this._isEnabled(monitor) ? resolved : undefined]\n : [resolved.enabled, resolved.element]\n\n if (!isUndefined(enabledSetter)) {\n this._enabled._setValidateOn(monitor, enabledSetter)\n }\n\n if (!isUndefined(elementSetter)) {\n this._element._setValidateOn(monitor, elementSetter)\n }\n }\n\n // T O U C H E D\n\n public readonly _touched = Signal(\n (monitor): FormOptionalFlag<TEnabled, TElement> =>\n this._toConcise<boolean>(monitor, ({ _touched }) => _touched, isBoolean) as FormOptionalFlag<\n TEnabled,\n TElement\n >,\n )\n\n public readonly _touchedVerbose = Signal(\n (monitor): FormOptionalFlagVerbose<TEnabled, TElement> =>\n this._toVerbose(monitor, ({ _touchedVerbose }) => _touchedVerbose) as FormOptionalFlagVerbose<\n TEnabled,\n TElement\n >,\n )\n\n public _setTouched(monitor: Monitor, setter: FormOptionalFlagSetter<TEnabled, TElement>): void {\n const resolved = isFunction(setter) ? setter(this._touchedVerbose.read(monitor)) : setter\n\n const [enabledSetter, elementSetter] = isBoolean(resolved)\n ? [resolved, this._isEnabled(monitor) ? resolved : undefined]\n : [resolved.enabled, resolved.element]\n\n if (!isUndefined(enabledSetter)) {\n this._enabled._setTouched(monitor, enabledSetter)\n }\n\n if (!isUndefined(elementSetter)) {\n this._element._setTouched(monitor, elementSetter)\n }\n }\n\n // O U T P U T\n\n public readonly _output = Signal((monitor): null | FormOptionalOutput<TElement> => {\n const enabled = this._enabled._output.read(monitor)\n\n if (enabled === false) {\n return undefined\n }\n\n if (isNull(enabled)) {\n return null\n }\n\n const value = this._element._output.read(monitor)\n\n if (isNull(value)) {\n return null\n }\n\n return value\n })\n\n public readonly _outputVerbose = Signal(\n (monitor): FormOptionalOutputVerbose<TEnabled, TElement> =>\n this._toVerbose(monitor, ({ _outputVerbose }) => _outputVerbose),\n )\n\n // V A L I D\n\n public readonly _valid = Signal(\n (monitor): FormOptionalFlag<TEnabled, TElement> =>\n this._toConcise<boolean>(monitor, ({ _valid }) => _valid, isBoolean) as FormOptionalFlag<\n TEnabled,\n TElement\n >,\n )\n\n public readonly _validVerbose = Signal(\n (monitor): FormOptionalFlagVerbose<TEnabled, TElement> =>\n this._toVerbose(monitor, ({ _validVerbose }) => _validVerbose) as FormOptionalFlagVerbose<\n TEnabled,\n TElement\n >,\n )\n\n // I N V A L I D\n\n public readonly _invalid = Signal(\n (monitor): FormOptionalFlag<TEnabled, TElement> =>\n this._toConcise<boolean>(monitor, ({ _invalid }) => _invalid, isBoolean) as FormOptionalFlag<\n TEnabled,\n TElement\n >,\n )\n\n public readonly _invalidVerbose = Signal(\n (monitor): FormOptionalFlagVerbose<TEnabled, TElement> =>\n this._toVerbose(monitor, ({ _invalidVerbose }) => _invalidVerbose) as FormOptionalFlagVerbose<\n TEnabled,\n TElement\n >,\n )\n\n // V A L I D A T E D\n\n public readonly _validated = Signal(\n (monitor): FormOptionalFlag<TEnabled, TElement> =>\n this._toConcise<boolean>(\n monitor,\n ({ _validated }) => _validated,\n isBoolean,\n ) as FormOptionalFlag<TEnabled, TElement>,\n )\n\n public readonly _validatedVerbose = Signal(\n (monitor): FormOptionalFlagVerbose<TEnabled, TElement> =>\n this._toVerbose(\n monitor,\n ({ _validatedVerbose }) => _validatedVerbose,\n ) as FormOptionalFlagVerbose<TEnabled, TElement>,\n )\n\n public _forceValidated(monitor: Monitor): void {\n this._enabled._forceValidated(monitor)\n this._element._forceValidated(monitor)\n }\n\n // D I R T Y\n\n public readonly _dirty = Signal(\n (monitor): FormOptionalFlag<TEnabled, TElement> =>\n this._toConcise<boolean>(monitor, ({ _dirty }) => _dirty, isBoolean) as FormOptionalFlag<\n TEnabled,\n TElement\n >,\n )\n\n public readonly _dirtyVerbose = Signal(\n (monitor): FormOptionalFlagVerbose<TEnabled, TElement> =>\n this._toVerbose(monitor, ({ _dirtyVerbose }) => _dirtyVerbose) as FormOptionalFlagVerbose<\n TEnabled,\n TElement\n >,\n )\n\n public readonly _dirtyOn = Signal(\n (monitor): FormOptionalFlag<TEnabled, TElement> =>\n this._toConcise<boolean>(monitor, ({ _dirtyOn }) => _dirtyOn, isBoolean) as FormOptionalFlag<\n TEnabled,\n TElement\n >,\n )\n\n public readonly _dirtyOnVerbose = Signal(\n (monitor): FormOptionalFlagVerbose<TEnabled, TElement> =>\n this._toVerbose(monitor, ({ _dirtyOnVerbose }) => _dirtyOnVerbose) as FormOptionalFlagVerbose<\n TEnabled,\n TElement\n >,\n )\n\n // R E S E T\n\n public _reset(\n monitor: Monitor,\n resetter: undefined | FormOptionalInputSetter<TEnabled, TElement>,\n ): void {\n if (!isUndefined(resetter)) {\n this._setInitial(monitor, resetter)\n }\n\n this._enabled._reset(monitor, undefined)\n this._element._reset(monitor, undefined)\n }\n\n // C H I L D R E N\n\n public _getChildren<TChildParams extends SignalFormParams>(\n monitor: Monitor,\n ): ReadonlyArray<SignalFormChild<TChildParams, FormOptionalParams<TEnabled, TElement>>> {\n const enabledValue = this._enabled._output.read(monitor)\n\n const enabledChild: SignalFormChild<TChildParams, FormOptionalParams<TEnabled, TElement>> = {\n _state: this._enabled as unknown as SignalFormState<TChildParams>,\n _mapToChild: () => enabledValue as unknown as TChildParams[\"output.schema\"],\n }\n\n if (enabledValue !== true) {\n return [enabledChild]\n }\n\n return [\n enabledChild,\n {\n _state: this._element as unknown as SignalFormState<TChildParams>,\n _mapToChild: (output) => output,\n },\n ]\n }\n}\n\nexport { FormOptionalState }\n","import type { SignalForm } from \"../signal-form/signal-form\"\n\nimport { FormOptional } from \"./_internal/form-optional\"\n\nfunction isFormOptional(anything: unknown): anything is FormOptional<SignalForm, SignalForm> {\n return anything instanceof FormOptional\n}\n\nexport { isFormOptional }\n","import { batch } from \"@owanturist/signal\"\n\nimport type { IsEqualType } from \"~/tools/is-type-equal\"\nimport { isUndefined } from \"~/tools/is-undefined\"\nimport { mapValues } from \"~/tools/map-values\"\n\nimport type { GetSignalFormParam } from \"../signal-form/get-signal-form-param\"\nimport type { SignalForm } from \"../signal-form/signal-form\"\n\nimport type { FormSwitchBranches } from \"./form-switch-branches\"\nimport type { FormSwitchErrorSetter } from \"./form-switch-error-setter\"\nimport type { FormSwitchFlagSetter } from \"./form-switch-flag-setter\"\nimport type { FormSwitchInputSetter } from \"./form-switch-input-setter\"\nimport type { FormSwitchValidateOnSetter } from \"./form-switch-validate-on-setter\"\nimport { FormSwitch as FormSwitchImpl } from \"./_internal/form-switch\"\nimport { FormSwitchState } from \"./_internal/form-switch-state\"\n\ntype FormSwitch<\n TKind extends SignalForm,\n TBranches extends FormSwitchBranches<TKind>,\n> = FormSwitchImpl<TKind, TBranches>\n\ninterface FormSwitchOptions<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> {\n input?: FormSwitchInputSetter<TKind, TBranches>\n initial?: FormSwitchInputSetter<TKind, TBranches>\n touched?: FormSwitchFlagSetter<TKind, TBranches>\n validateOn?: FormSwitchValidateOnSetter<TKind, TBranches>\n error?: FormSwitchErrorSetter<TKind, TBranches>\n}\n\nfunction FormSwitch<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>>(\n active: TKind,\n branches: IsEqualType<GetSignalFormParam<TKind, \"output.schema\">, keyof TBranches> extends true\n ? TBranches\n : never,\n { input, initial, touched, validateOn, error }: FormSwitchOptions<TKind, TBranches> = {},\n): FormSwitch<TKind, TBranches> {\n const switcher = new FormSwitchState<TKind, TBranches>(\n null,\n FormSwitchImpl._getState(active),\n mapValues(branches, (branch) => FormSwitchImpl._getState(branch)),\n )\n\n batch((monitor) => {\n if (!isUndefined(touched)) {\n switcher._setTouched(monitor, touched)\n }\n\n if (!isUndefined(initial)) {\n switcher._setInitial(monitor, initial)\n }\n\n if (!isUndefined(input)) {\n switcher._setInput(monitor, input)\n }\n\n if (!isUndefined(validateOn)) {\n switcher._setValidateOn(monitor, validateOn)\n }\n\n if (!isUndefined(error)) {\n switcher._setError(monitor, error)\n }\n })\n\n return switcher._host()\n}\n\nexport type { FormSwitchOptions }\nexport { FormSwitch }\n","import type { Monitor } from \"@owanturist/signal\"\n\nimport { mapValues } from \"~/tools/map-values\"\n\nimport { SignalForm } from \"../../signal-form/_internal/signal-form\"\nimport type { FormSwitchActiveBranch } from \"../form-switch-active-branch\"\nimport type { FormSwitchBranches } from \"../form-switch-branches\"\nimport type { FormSwitchParams } from \"../form-switch-params\"\n\nimport type { FormSwitchState } from \"./form-switch-state\"\n\nclass FormSwitch<\n TKind extends SignalForm,\n TBranches extends FormSwitchBranches<TKind>,\n> extends SignalForm<FormSwitchParams<TKind, TBranches>> {\n public static override _getState = SignalForm._getState\n\n public readonly active: TKind\n\n public readonly branches: Readonly<TBranches>\n\n public constructor(public readonly _state: FormSwitchState<TKind, TBranches>) {\n super()\n\n this.active = _state._active._host() as TKind\n\n this.branches = mapValues(_state._branches, ({ _host }) => _host()) as Readonly<TBranches>\n }\n\n public getActiveBranch(monitor: Monitor): undefined | FormSwitchActiveBranch<TBranches> {\n const result = this._state._getActiveBranch(monitor)\n\n if (!result) {\n return undefined\n }\n\n return {\n kind: result.kind,\n value: result.value._host(),\n } as FormSwitchActiveBranch<TBranches>\n }\n}\n\nexport { FormSwitch }\n","import { type Monitor, type ReadableSignal, Signal } from \"@owanturist/signal\"\n\nimport { entries } from \"~/tools/entries\"\nimport { hasProperty } from \"~/tools/has-property\"\nimport { isBoolean } from \"~/tools/is-boolean\"\nimport { isFunction } from \"~/tools/is-function\"\nimport { isNull } from \"~/tools/is-null\"\nimport { isString } from \"~/tools/is-string\"\nimport { isUndefined } from \"~/tools/is-undefined\"\nimport { Lazy } from \"~/tools/lazy\"\nimport { mapValues } from \"~/tools/map-values\"\nimport { values } from \"~/tools/values\"\n\nimport type { GetSignalFormParams } from \"../../signal-form/_internal/get-signal-form-params\"\nimport {\n type SignalFormChild,\n SignalFormState,\n} from \"../../signal-form/_internal/signal-form-state\"\nimport type { SignalForm } from \"../../signal-form/signal-form\"\nimport type { SignalFormParams } from \"../../signal-form/signal-form-params\"\nimport type { ValidateStrategy } from \"../../validate-strategy\"\nimport type { FormSwitchBranch } from \"../form-switch-branch\"\nimport type { FormSwitchBranches } from \"../form-switch-branches\"\nimport type { FormSwitchError } from \"../form-switch-error\"\nimport type { FormSwitchErrorSetter } from \"../form-switch-error-setter\"\nimport type { FormSwitchErrorVerbose } from \"../form-switch-error-verbose\"\nimport type { FormSwitchFlag } from \"../form-switch-flag\"\nimport type { FormSwitchFlagSetter } from \"../form-switch-flag-setter\"\nimport type { FormSwitchFlagVerbose } from \"../form-switch-flag-verbose\"\nimport type { FormSwitchInput } from \"../form-switch-input\"\nimport type { FormSwitchInputSetter } from \"../form-switch-input-setter\"\nimport type { FormSwitchOutput } from \"../form-switch-output\"\nimport type { FormSwitchOutputVerbose } from \"../form-switch-output-verbose\"\nimport type { FormSwitchParams } from \"../form-switch-params\"\nimport type { FormSwitchValidateOn } from \"../form-switch-validate-on\"\nimport type { FormSwitchValidateOnSetter } from \"../form-switch-validate-on-setter\"\nimport type { FormSwitchValidateOnVerbose } from \"../form-switch-validate-on-verbose\"\n\nimport { FormSwitch } from \"./form-switch\"\nimport type { FormSwitchConciseParam } from \"./form-switch-concise-param\"\nimport type { FormSwitchVerboseParam } from \"./form-switch-verbose-param\"\n\ntype FormSwitchStateBranches<TBranches> = {\n [TBranch in keyof TBranches]: SignalFormState<GetSignalFormParams<TBranches[TBranch]>>\n}\n\ntype ActiveSwitchStateBranch<TBranches> = FormSwitchBranch<\n keyof TBranches,\n FormSwitchStateBranches<TBranches>[keyof TBranches]\n>\n\nclass FormSwitchState<\n TKind extends SignalForm,\n TBranches extends FormSwitchBranches<TKind>,\n> extends SignalFormState<FormSwitchParams<TKind, TBranches>> {\n public readonly _host = Lazy(() => new FormSwitch(this))\n\n public readonly _active: SignalFormState<GetSignalFormParams<TKind>>\n public readonly _branches: FormSwitchStateBranches<TBranches>\n\n public constructor(\n parent: null | SignalFormState,\n active: SignalFormState<GetSignalFormParams<TKind>>,\n branches: FormSwitchStateBranches<TBranches>,\n ) {\n super(parent)\n\n this._active = this._parentOf(active)\n this._branches = mapValues(branches, (branch) => this._parentOf(branch))\n }\n\n public _getActiveBranch(monitor: Monitor): undefined | ActiveSwitchStateBranch<TBranches> {\n const kind = this._active._output.read(monitor)\n const value = isNull(kind) ? null : this._branches[kind]\n\n return value ? { kind, value } : undefined\n }\n\n private _toConcise<TKey extends keyof SignalFormParams, TConcise>(\n monitor: Monitor,\n extract: (form: SignalFormState) => ReadableSignal<TConcise>,\n isConcise: (value: unknown) => value is TConcise,\n fallbackInvalid?: TConcise,\n ): FormSwitchConciseParam<TKind, TBranches, TKey, TConcise> {\n const activeBranch = this._getActiveBranch(monitor)\n const activeConcise = extract(this._active).read(monitor)\n\n if (!activeBranch) {\n return isConcise(activeConcise) || isUndefined(fallbackInvalid)\n ? activeConcise\n : { active: activeConcise, branch: fallbackInvalid }\n }\n\n const branchConcise = extract(activeBranch.value).read(monitor)\n\n if (isConcise(branchConcise) && isConcise(activeConcise) && branchConcise === activeConcise) {\n return activeConcise\n }\n\n return {\n active: activeConcise,\n branch: isConcise(branchConcise)\n ? branchConcise\n : {\n kind: activeBranch.kind,\n value: branchConcise,\n },\n }\n }\n\n private _toVerbose<TKey extends keyof SignalFormParams>(\n monitor: Monitor,\n extract: (form: SignalFormState) => ReadableSignal<unknown>,\n ): FormSwitchVerboseParam<TKind, TBranches, TKey> {\n const active = extract(this._active).read(monitor)\n const branches = mapValues(this._branches, (branch) => extract(branch).read(monitor))\n\n return { active, branches }\n }\n\n public _childOf(parent: null | SignalFormState): FormSwitchState<TKind, TBranches> {\n return new FormSwitchState(parent, this._active, this._branches)\n }\n\n // I N I T I A L\n\n public readonly _initial = Signal(\n (monitor): FormSwitchInput<TKind, TBranches> =>\n this._toVerbose<\"input.schema\">(monitor, ({ _initial }) => _initial),\n )\n\n public _setInitial(monitor: Monitor, setter: FormSwitchInputSetter<TKind, TBranches>): void {\n const initial = Lazy(() => this._initial.read(monitor))\n const input = Lazy(() => this._input.read(monitor))\n\n const { active, branches: branchesSetter } = isFunction(setter)\n ? setter(initial(), input())\n : setter\n\n if (!isUndefined(active)) {\n this._active._setInitial(monitor, active)\n }\n\n const branches = isFunction(branchesSetter)\n ? branchesSetter(initial().branches, input().branches)\n : branchesSetter\n\n for (const [kind, branch] of entries(this._branches)) {\n if (hasProperty(branches, kind) && !isUndefined(branches[kind])) {\n branch._setInitial(monitor, branches[kind])\n }\n }\n }\n\n public _replaceInitial(\n monitor: Monitor,\n state: undefined | FormSwitchState<TKind, TBranches>,\n isMounting: boolean,\n ): void {\n this._active._replaceInitial(monitor, state?._active, isMounting)\n\n for (const [key, branch] of entries(this._branches)) {\n branch._replaceInitial(monitor, state?._branches[key], isMounting)\n }\n }\n\n // I N P U T\n\n public readonly _input = Signal(\n (monitor): FormSwitchInput<TKind, TBranches> =>\n this._toVerbose<\"input.schema\">(monitor, ({ _input }) => _input),\n )\n\n public _setInput(monitor: Monitor, setter: FormSwitchInputSetter<TKind, TBranches>): void {\n const initial = Lazy(() => this._initial.read(monitor))\n const input = Lazy(() => this._input.read(monitor))\n\n const { active, branches: branchesSetter } = isFunction(setter)\n ? setter(input(), initial())\n : setter\n\n if (!isUndefined(active)) {\n this._active._setInput(monitor, active)\n }\n\n const branches = isFunction(branchesSetter)\n ? branchesSetter(input().branches, initial().branches)\n : branchesSetter\n\n for (const [kind, branch] of entries(this._branches)) {\n if (hasProperty(branches, kind) && !isUndefined(branches[kind])) {\n branch._setInput(monitor, branches[kind])\n }\n }\n }\n\n // E R R O R\n\n public readonly _error = Signal(\n (monitor): FormSwitchError<TKind, TBranches> =>\n this._toConcise<\"error.schema\", null>(monitor, ({ _error }) => _error, isNull, null),\n )\n\n public readonly _errorVerbose = Signal(\n (monitor): FormSwitchErrorVerbose<TKind, TBranches> =>\n this._toVerbose<\"error.schema.verbose\">(monitor, ({ _errorVerbose }) => _errorVerbose),\n )\n\n public _setError(monitor: Monitor, setter: FormSwitchErrorSetter<TKind, TBranches>): void {\n const verbose = Lazy(() => this._errorVerbose.read(monitor))\n const resolved = isFunction(setter) ? setter(verbose()) : setter\n\n const [activeSetter, branchSetter, branchesSetter] = isNull(resolved)\n ? [resolved, resolved, undefined]\n : [\n resolved.active,\n\n hasProperty(resolved, \"branch\") ? resolved.branch : undefined,\n\n hasProperty(resolved, \"branches\")\n ? isFunction(resolved.branches)\n ? resolved.branches(verbose().branches)\n : resolved.branches\n : undefined,\n ]\n\n if (!isUndefined(activeSetter)) {\n this._active._setError(monitor, activeSetter)\n }\n\n for (const [kind, branch] of entries(this._branches)) {\n const resolvedBranchSetter = isNull(branchesSetter)\n ? branchesSetter\n : hasProperty(branchesSetter, kind)\n ? branchesSetter[kind]\n : undefined\n\n if (!isUndefined(resolvedBranchSetter)) {\n branch._setError(monitor, resolvedBranchSetter)\n }\n }\n\n if (!isUndefined(branchSetter)) {\n const activeBranch = this._getActiveBranch(monitor)\n\n const activeBranchSetter = isFunction(branchSetter)\n ? activeBranch\n ? branchSetter({\n kind: activeBranch.kind,\n value: activeBranch.value._errorVerbose.read(monitor),\n })\n : undefined\n : branchSetter\n\n if (isNull(activeBranchSetter)) {\n activeBranch?.value._setError(monitor, activeBranchSetter)\n } else if (!isUndefined(activeBranchSetter)) {\n const { kind, value } = activeBranchSetter as FormSwitchBranch<keyof TBranches, unknown>\n\n const targetBranch = hasProperty(this._branches, kind) ? this._branches[kind] : undefined\n\n if (targetBranch) {\n targetBranch._setError(monitor, value)\n }\n }\n }\n }\n\n // V A L I D A T E O N\n\n public readonly _validateOn = Signal(\n (monitor): FormSwitchValidateOn<TKind, TBranches> =>\n this._toConcise<\"validateOn.schema\", ValidateStrategy>(\n monitor,\n ({ _validateOn }) => _validateOn,\n isString as (value: unknown) => value is ValidateStrategy,\n ),\n )\n\n public readonly _validateOnVerbose = Signal(\n (monitor): FormSwitchValidateOnVerbose<TKind, TBranches> =>\n this._toVerbose<\"validateOn.schema.verbose\">(\n monitor,\n ({ _validateOnVerbose }) => _validateOnVerbose,\n ),\n )\n\n public _setValidateOn(\n monitor: Monitor,\n setter: FormSwitchValidateOnSetter<TKind, TBranches>,\n ): void {\n const verbose = Lazy(() => this._validateOnVerbose.read(monitor))\n const resolved = isFunction(setter) ? setter(verbose()) : setter\n\n const [activeSetter, branchSetter, branchesSetter] = isString(resolved)\n ? [resolved, resolved, undefined]\n : [\n resolved.active,\n\n hasProperty(resolved, \"branch\") ? resolved.branch : undefined,\n\n hasProperty(resolved, \"branches\")\n ? isFunction(resolved.branches)\n ? resolved.branches(verbose().branches)\n : resolved.branches\n : undefined,\n ]\n\n if (!isUndefined(activeSetter)) {\n this._active._setValidateOn(monitor, activeSetter)\n }\n\n for (const [kind, branch] of entries(this._branches)) {\n const resolvedBranchSetter = isString(branchesSetter)\n ? branchesSetter\n : hasProperty(branchesSetter, kind)\n ? branchesSetter[kind]\n : undefined\n\n if (!isUndefined(resolvedBranchSetter)) {\n branch._setValidateOn(monitor, resolvedBranchSetter)\n }\n }\n\n if (!isUndefined(branchSetter)) {\n const activeBranch = this._getActiveBranch(monitor)\n\n const activeBranchSetter = isFunction(branchSetter)\n ? activeBranch\n ? branchSetter({\n kind: activeBranch.kind,\n value: activeBranch.value._validateOnVerbose.read(monitor),\n })\n : undefined\n : branchSetter\n\n if (isString(activeBranchSetter)) {\n activeBranch?.value._setValidateOn(monitor, activeBranchSetter)\n } else if (!isUndefined(activeBranchSetter)) {\n const { kind, value } = activeBranchSetter as FormSwitchBranch<keyof TBranches, unknown>\n const targetBranch = hasProperty(this._branches, kind) ? this._branches[kind] : undefined\n\n if (targetBranch) {\n targetBranch._setValidateOn(monitor, value)\n }\n }\n }\n }\n\n // T O U C H E D\n\n public readonly _touched = Signal(\n (monitor): FormSwitchFlag<TKind, TBranches> =>\n this._toConcise<\"flag.schema\", boolean>(monitor, ({ _touched }) => _touched, isBoolean),\n )\n\n public readonly _touchedVerbose = Signal(\n (monitor): FormSwitchFlagVerbose<TKind, TBranches> =>\n this._toVerbose<\"flag.schema.verbose\">(monitor, ({ _touchedVerbose }) => _touchedVerbose),\n )\n\n public _setTouched(monitor: Monitor, setter: FormSwitchFlagSetter<TKind, TBranches>): void {\n const verbose = Lazy(() => this._touchedVerbose.read(monitor))\n const resolved = isFunction(setter) ? setter(verbose()) : setter\n\n const [activeSetter, branchSetter, branchesSetter] = isBoolean(resolved)\n ? [resolved, resolved, undefined]\n : [\n resolved.active,\n\n hasProperty(resolved, \"branch\") ? resolved.branch : undefined,\n\n hasProperty(resolved, \"branches\")\n ? isFunction(resolved.branches)\n ? resolved.branches(verbose().branches)\n : resolved.branches\n : undefined,\n ]\n\n if (!isUndefined(activeSetter)) {\n this._active._setTouched(monitor, activeSetter)\n }\n\n for (const [kind, branch] of entries(this._branches)) {\n const resolvedBranchSetter = isBoolean(branchesSetter)\n ? branchesSetter\n : hasProperty(branchesSetter, kind)\n ? branchesSetter[kind]\n : undefined\n\n if (!isUndefined(resolvedBranchSetter)) {\n branch._setTouched(monitor, resolvedBranchSetter)\n }\n }\n\n if (!isUndefined(branchSetter)) {\n const activeBranch = this._getActiveBranch(monitor)\n\n const activeBranchSetter = isFunction(branchSetter)\n ? activeBranch\n ? branchSetter({\n kind: activeBranch.kind,\n value: activeBranch.value._touchedVerbose.read(monitor),\n })\n : undefined\n : branchSetter\n\n if (isBoolean(activeBranchSetter)) {\n activeBranch?.value._setTouched(monitor, activeBranchSetter)\n } else if (!isUndefined(activeBranchSetter)) {\n const { kind, value } = activeBranchSetter as FormSwitchBranch<keyof TBranches, unknown>\n const targetBranch = hasProperty(this._branches, kind) ? this._branches[kind] : undefined\n\n if (targetBranch) {\n targetBranch._setTouched(monitor, value)\n }\n }\n }\n }\n\n // O U T P U T\n\n public readonly _output = Signal((monitor): null | FormSwitchOutput<TKind, TBranches> => {\n const activeBranch = this._getActiveBranch(monitor)\n\n if (!activeBranch) {\n return null\n }\n\n const value = activeBranch.value._output.read(monitor)\n\n if (isNull(value)) {\n return null\n }\n\n return {\n kind: activeBranch.kind,\n value,\n }\n })\n\n public readonly _outputVerbose = Signal(\n (monitor): FormSwitchOutputVerbose<TKind, TBranches> =>\n this._toVerbose(monitor, ({ _output }) => _output),\n )\n\n // V A L I D\n\n public readonly _valid = Signal(\n (monitor): FormSwitchFlag<TKind, TBranches> =>\n this._toConcise<\"flag.schema\", boolean>(monitor, ({ _valid }) => _valid, isBoolean),\n )\n\n public readonly _validVerbose = Signal(\n (monitor): FormSwitchFlagVerbose<TKind, TBranches> =>\n this._toVerbose<\"flag.schema.verbose\">(monitor, ({ _validVerbose }) => _validVerbose),\n )\n\n // I N V A L I D\n\n public readonly _invalid = Signal(\n (monitor): FormSwitchFlag<TKind, TBranches> =>\n this._toConcise<\"flag.schema\", boolean>(monitor, ({ _invalid }) => _invalid, isBoolean),\n )\n\n public readonly _invalidVerbose = Signal(\n (monitor): FormSwitchFlagVerbose<TKind, TBranches> =>\n this._toVerbose<\"flag.schema.verbose\">(monitor, ({ _invalidVerbose }) => _invalidVerbose),\n )\n\n // V A L I D A T E D\n\n public readonly _validated = Signal(\n (monitor): FormSwitchFlag<TKind, TBranches> =>\n this._toConcise<\"flag.schema\", boolean>(monitor, ({ _validated }) => _validated, isBoolean),\n )\n\n public readonly _validatedVerbose = Signal(\n (monitor): FormSwitchFlagVerbose<TKind, TBranches> =>\n this._toVerbose<\"flag.schema.verbose\">(monitor, ({ _validatedVerbose }) => _validatedVerbose),\n )\n\n public _forceValidated(monitor: Monitor): void {\n this._active._forceValidated(monitor)\n this._getActiveBranch(monitor)?.value._forceValidated(monitor)\n }\n\n // D I R T Y\n\n public readonly _dirty = Signal(\n (monitor): FormSwitchFlag<TKind, TBranches> =>\n this._toConcise<\"flag.schema\", boolean>(monitor, ({ _dirty }) => _dirty, isBoolean),\n )\n\n public readonly _dirtyVerbose = Signal(\n (monitor): FormSwitchFlagVerbose<TKind, TBranches> =>\n this._toVerbose<\"flag.schema.verbose\">(monitor, ({ _dirtyVerbose }) => _dirtyVerbose),\n )\n\n public readonly _dirtyOn = Signal(\n (monitor): FormSwitchFlag<TKind, TBranches> =>\n this._toConcise<\"flag.schema\", boolean>(monitor, ({ _dirtyOn }) => _dirtyOn, isBoolean),\n )\n\n public readonly _dirtyOnVerbose = Signal(\n (monitor): FormSwitchFlagVerbose<TKind, TBranches> =>\n this._toVerbose<\"flag.schema.verbose\">(monitor, ({ _dirtyOnVerbose }) => _dirtyOnVerbose),\n )\n\n // R E S E T\n\n public _reset(\n monitor: Monitor,\n resetter: undefined | FormSwitchInputSetter<TKind, TBranches>,\n ): void {\n if (!isUndefined(resetter)) {\n this._setInitial(monitor, resetter)\n }\n\n this._active._reset(monitor, undefined)\n\n for (const branch of values(this._branches)) {\n branch._reset(monitor, undefined)\n }\n }\n\n // C H I L D R E N\n\n public _getChildren<TChildParams extends SignalFormParams>(\n monitor: Monitor,\n ): ReadonlyArray<SignalFormChild<TChildParams, FormSwitchParams<TKind, TBranches>>> {\n const activeChild: SignalFormChild<TChildParams, FormSwitchParams<TKind, TBranches>> = {\n _state: this._active as unknown as SignalFormState<TChildParams>,\n _mapToChild: (output) => output.kind,\n }\n\n const activeBranch = this._getActiveBranch(monitor)\n\n if (!activeBranch) {\n return [activeChild]\n }\n\n return [\n activeChild,\n {\n _state: activeBranch.value as unknown as SignalFormState<TChildParams>,\n _mapToChild: (output) => output.value,\n },\n ]\n }\n}\n\nexport { FormSwitchState }\n","import type { SignalForm } from \"../signal-form/signal-form\"\n\nimport type { FormSwitchBranches } from \"./form-switch-branches\"\nimport { FormSwitch } from \"./_internal/form-switch\"\n\nfunction isFormSwitch(\n anything: unknown,\n): anything is FormSwitch<SignalForm, FormSwitchBranches<SignalForm>> {\n return anything instanceof FormSwitch\n}\n\nexport { isFormSwitch }\n"],"mappings":"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","names":["Signal","Signal","batch","Signal","batch","FormUnit","Signal","isErrorEqual","Signal","batch","Signal","entries","Signal","FormShape","Signal","batch","batch","Signal","batch","Signal","batch","Signal","untracked","Signal","untracked","FormList","batch","batch","Signal","Signal","FormOptional","batch","batch","Signal","Signal","FormSwitch","batch"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@owanturist/signal-form",
3
3
  "type": "module",
4
- "version": "0.0.0",
4
+ "version": "0.1.0",
5
5
  "description": "Type-safe declarative form state management",
6
6
  "main": "./dist/index.cjs",
7
7
  "module": "./dist/index.js",
@@ -27,17 +27,17 @@
27
27
  },
28
28
  "repository": "https://github.com/owanturist/signal/tree/master/packages/signal-form",
29
29
  "homepage": "https://github.com/owanturist/signal/packages/signal-form#readme",
30
- "scripts": {
31
- "typecheck": "tsc --noEmit",
32
- "build": "tsup src/index.ts --config ../../tsup.config.ts"
33
- },
34
30
  "peerDependencies": {
35
31
  "@owanturist/signal": "^0.0.0"
36
32
  },
37
33
  "devDependencies": {
38
- "@owanturist/signal": "workspace:*",
39
34
  "vite-tsconfig-paths": "^6.0.5",
40
35
  "vitest": "^4.0.18",
41
- "zod": "^4.3.6"
36
+ "zod": "^4.3.6",
37
+ "@owanturist/signal": "0.1.0"
38
+ },
39
+ "scripts": {
40
+ "typecheck": "tsc --noEmit",
41
+ "build": "tsup src/index.ts --config ../../tsup.config.ts"
42
42
  }
43
- }
43
+ }