@ram_28/kf-ai-sdk 1.0.30 → 1.0.31

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/form.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var Ut=Object.defineProperty;var Bt=(e,t,r)=>t in e?Ut(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var pe=(e,t,r)=>Bt(e,typeof t!="symbol"?t+"":t,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const V=require("react"),lt=require("@tanstack/react-query"),ve=require("./client-DxjRcEtN.cjs"),qt=require("./metadata-Bz8zJqC1.cjs"),Ne=require("./error-handling-CAoD0Kwb.cjs");var Te=e=>e.type==="checkbox",ge=e=>e instanceof Date,X=e=>e==null;const _t=e=>typeof e=="object";var q=e=>!X(e)&&!Array.isArray(e)&&_t(e)&&!ge(e),Pt=e=>q(e)&&e.target?Te(e.target)?e.target.checked:e.target.value:e,$t=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,jt=(e,t)=>e.has($t(t)),Wt=e=>{const t=e.constructor&&e.constructor.prototype;return q(t)&&t.hasOwnProperty("isPrototypeOf")},tt=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function j(e){if(e instanceof Date)return new Date(e);const t=typeof FileList<"u"&&e instanceof FileList;if(tt&&(e instanceof Blob||t))return e;const r=Array.isArray(e);if(!r&&!(q(e)&&Wt(e)))return e;const s=r?[]:Object.create(Object.getPrototypeOf(e));for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(s[i]=j(e[i]));return s}var je=e=>/^\w*$/.test(e),k=e=>e===void 0,rt=e=>Array.isArray(e)?e.filter(Boolean):[],st=e=>rt(e.replace(/["|']|\]/g,"").split(/\.|\[/)),g=(e,t,r)=>{if(!t||!q(e))return r;const s=(je(t)?[t]:st(t)).reduce((i,n)=>X(i)?i:i[n],e);return k(s)||s===e?k(e[t])?r:e[t]:s},ue=e=>typeof e=="boolean",se=e=>typeof e=="function",M=(e,t,r)=>{let s=-1;const i=je(t)?[t]:st(t),n=i.length,c=n-1;for(;++s<n;){const h=i[s];let w=r;if(s!==c){const E=e[h];w=q(E)||Array.isArray(E)?E:isNaN(+i[s+1])?{}:[]}if(h==="__proto__"||h==="constructor"||h==="prototype")return;e[h]=w,e=e[h]}};const ct={BLUR:"blur",FOCUS_OUT:"focusout"},ie={onBlur:"onBlur",onChange:"onChange",onSubmit:"onSubmit",onTouched:"onTouched",all:"all"},le={max:"max",min:"min",maxLength:"maxLength",minLength:"minLength",pattern:"pattern",required:"required",validate:"validate"},Ht=V.createContext(null);Ht.displayName="HookFormContext";var Yt=(e,t,r,s=!0)=>{const i={defaultValues:t._defaultValues};for(const n in e)Object.defineProperty(i,n,{get:()=>{const c=n;return t._proxyFormState[c]!==ie.all&&(t._proxyFormState[c]=!s||ie.all),e[c]}});return i};const Kt=typeof window<"u"?V.useLayoutEffect:V.useEffect;var ee=e=>typeof e=="string",zt=(e,t,r,s,i)=>ee(e)?(s&&t.watch.add(e),g(r,e,i)):Array.isArray(e)?e.map(n=>(s&&t.watch.add(n),g(r,n))):(s&&(t.watchAll=!0),r),Ze=e=>X(e)||!_t(e);function he(e,t,r=new WeakSet){if(Ze(e)||Ze(t))return Object.is(e,t);if(ge(e)&&ge(t))return Object.is(e.getTime(),t.getTime());const s=Object.keys(e),i=Object.keys(t);if(s.length!==i.length)return!1;if(r.has(e)||r.has(t))return!0;r.add(e),r.add(t);for(const n of s){const c=e[n];if(!i.includes(n))return!1;if(n!=="ref"){const h=t[n];if(ge(c)&&ge(h)||q(c)&&q(h)||Array.isArray(c)&&Array.isArray(h)?!he(c,h,r):!Object.is(c,h))return!1}}return!0}var Jt=(e,t,r,s,i)=>t?{...r[e],types:{...r[e]&&r[e].types?r[e].types:{},[s]:i||!0}}:{},Ce=e=>Array.isArray(e)?e:[e],dt=()=>{let e=[];return{get observers(){return e},next:i=>{for(const n of e)n.next&&n.next(i)},subscribe:i=>(e.push(i),{unsubscribe:()=>{e=e.filter(n=>n!==i)}}),unsubscribe:()=>{e=[]}}};function Dt(e,t){const r={};for(const s in e)if(e.hasOwnProperty(s)){const i=e[s],n=t[s];if(i&&q(i)&&n){const c=Dt(i,n);q(c)&&(r[s]=c)}else e[s]&&(r[s]=n)}return r}var J=e=>q(e)&&!Object.keys(e).length,it=e=>e.type==="file",Pe=e=>{if(!tt)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},Rt=e=>e.type==="select-multiple",at=e=>e.type==="radio",Gt=e=>at(e)||Te(e),Qe=e=>Pe(e)&&e.isConnected;function Qt(e,t){const r=t.slice(0,-1).length;let s=0;for(;s<r;)e=k(e)?s++:e[t[s++]];return e}function Xt(e){for(const t in e)if(e.hasOwnProperty(t)&&!k(e[t]))return!1;return!0}function B(e,t){const r=Array.isArray(t)?t:je(t)?[t]:st(t),s=r.length===1?e:Qt(e,r),i=r.length-1,n=r[i];return s&&delete s[n],i!==0&&(q(s)&&J(s)||Array.isArray(s)&&Xt(s))&&B(e,r.slice(0,-1)),e}var Zt=e=>{for(const t in e)if(se(e[t]))return!0;return!1};function Nt(e){return Array.isArray(e)||q(e)&&!Zt(e)}function et(e,t={}){for(const r in e){const s=e[r];Nt(s)?(t[r]=Array.isArray(s)?[]:{},et(s,t[r])):k(s)||(t[r]=!0)}return t}function we(e,t,r){r||(r=et(t));for(const s in e){const i=e[s];if(Nt(i))k(t)||Ze(r[s])?r[s]=et(i,Array.isArray(i)?[]:{}):we(i,X(t)?{}:t[s],r[s]);else{const n=t[s];r[s]=!he(i,n)}}return r}const ft={value:!1,isValid:!1},ht={value:!0,isValid:!0};var Ct=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter(r=>r&&r.checked&&!r.disabled).map(r=>r.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!k(e[0].attributes.value)?k(e[0].value)||e[0].value===""?ht:{value:e[0].value,isValid:!0}:ht:ft}return ft},Ot=(e,{valueAsNumber:t,valueAsDate:r,setValueAs:s})=>k(e)?e:t?e===""?NaN:e&&+e:r&&ee(e)?new Date(e):s?s(e):e;const mt={isValid:!1,value:null};var Tt=e=>Array.isArray(e)?e.reduce((t,r)=>r&&r.checked&&!r.disabled?{isValid:!0,value:r.value}:t,mt):mt;function yt(e){const t=e.ref;return it(t)?t.files:at(t)?Tt(e.refs).value:Rt(t)?[...t.selectedOptions].map(({value:r})=>r):Te(t)?Ct(e.refs).value:Ot(k(t.value)?e.ref.value:t.value,e)}var er=(e,t,r,s)=>{const i={};for(const n of e){const c=g(t,n);c&&M(i,n,c._f)}return{criteriaMode:r,names:[...e],fields:i,shouldUseNativeValidation:s}},$e=e=>e instanceof RegExp,Re=e=>k(e)?e:$e(e)?e.source:q(e)?$e(e.value)?e.value.source:e.value:e,gt=e=>({isOnSubmit:!e||e===ie.onSubmit,isOnBlur:e===ie.onBlur,isOnChange:e===ie.onChange,isOnAll:e===ie.all,isOnTouch:e===ie.onTouched});const pt="AsyncFunction";var tr=e=>!!e&&!!e.validate&&!!(se(e.validate)&&e.validate.constructor.name===pt||q(e.validate)&&Object.values(e.validate).find(t=>t.constructor.name===pt)),rr=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),bt=(e,t,r)=>!r&&(t.watchAll||t.watch.has(e)||[...t.watch].some(s=>e.startsWith(s)&&/^\.\w+/.test(e.slice(s.length))));const Oe=(e,t,r,s)=>{for(const i of r||Object.keys(e)){const n=g(e,i);if(n){const{_f:c,...h}=n;if(c){if(c.refs&&c.refs[0]&&t(c.refs[0],i)&&!s)return!0;if(c.ref&&t(c.ref,c.name)&&!s)return!0;if(Oe(h,t))break}else if(q(h)&&Oe(h,t))break}}};function wt(e,t,r){const s=g(e,r);if(s||je(r))return{error:s,name:r};const i=r.split(".");for(;i.length;){const n=i.join("."),c=g(t,n),h=g(e,n);if(c&&!Array.isArray(c)&&r!==n)return{name:r};if(h&&h.type)return{name:n,error:h};if(h&&h.root&&h.root.type)return{name:`${n}.root`,error:h.root};i.pop()}return{name:r}}var sr=(e,t,r,s)=>{r(e);const{name:i,...n}=e;return J(n)||Object.keys(n).length>=Object.keys(t).length||Object.keys(n).find(c=>t[c]===(!s||ie.all))},ir=(e,t,r)=>!e||!t||e===t||Ce(e).some(s=>s&&(r?s===t:s.startsWith(t)||t.startsWith(s))),ar=(e,t,r,s,i)=>i.isOnAll?!1:!r&&i.isOnTouch?!(t||e):(r?s.isOnBlur:i.isOnBlur)?!e:(r?s.isOnChange:i.isOnChange)?e:!0,nr=(e,t)=>!rt(g(e,t)).length&&B(e,t),ur=(e,t,r)=>{const s=Ce(g(e,r));return M(s,"root",t[r]),M(e,r,s),e};function vt(e,t,r="validate"){if(ee(e)||Array.isArray(e)&&e.every(ee)||ue(e)&&!e)return{type:r,message:ee(e)?e:"",ref:t}}var be=e=>q(e)&&!$e(e)?e:{value:e,message:""},Et=async(e,t,r,s,i,n)=>{const{ref:c,refs:h,required:w,maxLength:E,minLength:C,min:D,max:x,pattern:v,validate:y,name:P,valueAsNumber:Y,mount:Z}=e._f,_=g(r,P);if(!Z||t.has(P))return{};const te=h?h[0]:c,re=F=>{i&&te.reportValidity&&(te.setCustomValidity(ue(F)?"":F||""),te.reportValidity())},R={},ce=at(c),ye=Te(c),ae=ce||ye,de=(Y||it(c))&&k(c.value)&&k(_)||Pe(c)&&c.value===""||_===""||Array.isArray(_)&&!_.length,K=Jt.bind(null,P,s,R),oe=(F,S,L,O=le.maxLength,H=le.minLength)=>{const z=F?S:L;R[P]={type:F?O:H,message:z,ref:c,...K(F?O:H,z)}};if(n?!Array.isArray(_)||!_.length:w&&(!ae&&(de||X(_))||ue(_)&&!_||ye&&!Ct(h).isValid||ce&&!Tt(h).isValid)){const{value:F,message:S}=ee(w)?{value:!!w,message:w}:be(w);if(F&&(R[P]={type:le.required,message:S,ref:te,...K(le.required,S)},!s))return re(S),R}if(!de&&(!X(D)||!X(x))){let F,S;const L=be(x),O=be(D);if(!X(_)&&!isNaN(_)){const H=c.valueAsNumber||_&&+_;X(L.value)||(F=H>L.value),X(O.value)||(S=H<O.value)}else{const H=c.valueAsDate||new Date(_),z=G=>new Date(new Date().toDateString()+" "+G),ne=c.type=="time",fe=c.type=="week";ee(L.value)&&_&&(F=ne?z(_)>z(L.value):fe?_>L.value:H>new Date(L.value)),ee(O.value)&&_&&(S=ne?z(_)<z(O.value):fe?_<O.value:H<new Date(O.value))}if((F||S)&&(oe(!!F,L.message,O.message,le.max,le.min),!s))return re(R[P].message),R}if((E||C)&&!de&&(ee(_)||n&&Array.isArray(_))){const F=be(E),S=be(C),L=!X(F.value)&&_.length>+F.value,O=!X(S.value)&&_.length<+S.value;if((L||O)&&(oe(L,F.message,S.message),!s))return re(R[P].message),R}if(v&&!de&&ee(_)){const{value:F,message:S}=be(v);if($e(F)&&!_.match(F)&&(R[P]={type:le.pattern,message:S,ref:c,...K(le.pattern,S)},!s))return re(S),R}if(y){if(se(y)){const F=await y(_,r),S=vt(F,te);if(S&&(R[P]={...S,...K(le.validate,S.message)},!s))return re(S.message),R}else if(q(y)){let F={};for(const S in y){if(!J(F)&&!s)break;const L=vt(await y[S](_,r),te,S);L&&(F={...L,...K(S,L.message)},re(L.message),s&&(R[P]=F))}if(!J(F)&&(R[P]={ref:te,...F},!s))return R}}return re(!0),R};const or={mode:ie.onSubmit,reValidateMode:ie.onChange,shouldFocusError:!0};function lr(e={}){let t={...or,...e},r={submitCount:0,isDirty:!1,isReady:!1,isLoading:se(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},s={},i=q(t.defaultValues)||q(t.values)?j(t.defaultValues||t.values)||{}:{},n=t.shouldUnregister?{}:j(i),c={action:!1,mount:!1,watch:!1,keepIsValid:!1},h={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set},w,E=0;const C={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},D={...C};let x={...D};const v={array:dt(),state:dt()},y=t.criteriaMode===ie.all,P=a=>u=>{clearTimeout(E),E=setTimeout(a,u)},Y=async a=>{if(!c.keepIsValid&&!t.disabled&&(D.isValid||x.isValid||a)){let u;t.resolver?(u=J((await ae()).errors),Z()):u=await K(s,!0),u!==r.isValid&&v.state.next({isValid:u})}},Z=(a,u)=>{!t.disabled&&(D.isValidating||D.validatingFields||x.isValidating||x.validatingFields)&&((a||Array.from(h.mount)).forEach(o=>{o&&(u?M(r.validatingFields,o,u):B(r.validatingFields,o))}),v.state.next({validatingFields:r.validatingFields,isValidating:!J(r.validatingFields)}))},_=(a,u=[],o,d,f=!0,l=!0)=>{if(d&&o&&!t.disabled){if(c.action=!0,l&&Array.isArray(g(s,a))){const m=o(g(s,a),d.argA,d.argB);f&&M(s,a,m)}if(l&&Array.isArray(g(r.errors,a))){const m=o(g(r.errors,a),d.argA,d.argB);f&&M(r.errors,a,m),nr(r.errors,a)}if((D.touchedFields||x.touchedFields)&&l&&Array.isArray(g(r.touchedFields,a))){const m=o(g(r.touchedFields,a),d.argA,d.argB);f&&M(r.touchedFields,a,m)}(D.dirtyFields||x.dirtyFields)&&(r.dirtyFields=we(i,n)),v.state.next({name:a,isDirty:F(a,u),dirtyFields:r.dirtyFields,errors:r.errors,isValid:r.isValid})}else M(n,a,u)},te=(a,u)=>{M(r.errors,a,u),v.state.next({errors:r.errors})},re=a=>{r.errors=a,v.state.next({errors:r.errors,isValid:!1})},R=(a,u,o,d)=>{const f=g(s,a);if(f){const l=g(n,a,k(o)?g(i,a):o);k(l)||d&&d.defaultChecked||u?M(n,a,u?l:yt(f._f)):O(a,l),c.mount&&!c.action&&Y()}},ce=(a,u,o,d,f)=>{let l=!1,m=!1;const p={name:a};if(!t.disabled){if(!o||d){(D.isDirty||x.isDirty)&&(m=r.isDirty,r.isDirty=p.isDirty=F(),l=m!==p.isDirty);const b=he(g(i,a),u);m=!!g(r.dirtyFields,a),b?B(r.dirtyFields,a):M(r.dirtyFields,a,!0),p.dirtyFields=r.dirtyFields,l=l||(D.dirtyFields||x.dirtyFields)&&m!==!b}if(o){const b=g(r.touchedFields,a);b||(M(r.touchedFields,a,o),p.touchedFields=r.touchedFields,l=l||(D.touchedFields||x.touchedFields)&&b!==o)}l&&f&&v.state.next(p)}return l?p:{}},ye=(a,u,o,d)=>{const f=g(r.errors,a),l=(D.isValid||x.isValid)&&ue(u)&&r.isValid!==u;if(t.delayError&&o?(w=P(()=>te(a,o)),w(t.delayError)):(clearTimeout(E),w=null,o?M(r.errors,a,o):B(r.errors,a)),(o?!he(f,o):f)||!J(d)||l){const m={...d,...l&&ue(u)?{isValid:u}:{},errors:r.errors,name:a};r={...r,...m},v.state.next(m)}},ae=async a=>(Z(a,!0),await t.resolver(n,t.context,er(a||h.mount,s,t.criteriaMode,t.shouldUseNativeValidation))),de=async a=>{const{errors:u}=await ae(a);if(Z(a),a)for(const o of a){const d=g(u,o);d?M(r.errors,o,d):B(r.errors,o)}else r.errors=u;return u},K=async(a,u,o={valid:!0})=>{for(const d in a){const f=a[d];if(f){const{_f:l,...m}=f;if(l){const p=h.array.has(l.name),b=f._f&&tr(f._f);b&&D.validatingFields&&Z([l.name],!0);const N=await Et(f,h.disabled,n,y,t.shouldUseNativeValidation&&!u,p);if(b&&D.validatingFields&&Z([l.name]),N[l.name]&&(o.valid=!1,u||e.shouldUseNativeValidation))break;!u&&(g(N,l.name)?p?ur(r.errors,N,l.name):M(r.errors,l.name,N[l.name]):B(r.errors,l.name))}!J(m)&&await K(m,u,o)}}return o.valid},oe=()=>{for(const a of h.unMount){const u=g(s,a);u&&(u._f.refs?u._f.refs.every(o=>!Qe(o)):!Qe(u._f.ref))&&Ae(a)}h.unMount=new Set},F=(a,u)=>!t.disabled&&(a&&u&&M(n,a,u),!he(Me(),i)),S=(a,u,o)=>zt(a,h,{...c.mount?n:k(u)?i:ee(a)?{[a]:u}:u},o,u),L=a=>rt(g(c.mount?n:i,a,t.shouldUnregister?g(i,a,[]):[])),O=(a,u,o={})=>{const d=g(s,a);let f=u;if(d){const l=d._f;l&&(!l.disabled&&M(n,a,Ot(u,l)),f=Pe(l.ref)&&X(u)?"":u,Rt(l.ref)?[...l.ref.options].forEach(m=>m.selected=f.includes(m.value)):l.refs?Te(l.ref)?l.refs.forEach(m=>{(!m.defaultChecked||!m.disabled)&&(Array.isArray(f)?m.checked=!!f.find(p=>p===m.value):m.checked=f===m.value||!!f)}):l.refs.forEach(m=>m.checked=m.value===f):it(l.ref)?l.ref.value="":(l.ref.value=f,l.ref.type||v.state.next({name:a,values:j(n)})))}(o.shouldDirty||o.shouldTouch)&&ce(a,f,o.shouldTouch,o.shouldDirty,!0),o.shouldValidate&&G(a)},H=(a,u,o)=>{for(const d in u){if(!u.hasOwnProperty(d))return;const f=u[d],l=a+"."+d,m=g(s,l);(h.array.has(a)||q(f)||m&&!m._f)&&!ge(f)?H(l,f,o):O(l,f,o)}},z=(a,u,o={})=>{const d=g(s,a),f=h.array.has(a),l=j(u);M(n,a,l),f?(v.array.next({name:a,values:j(n)}),(D.isDirty||D.dirtyFields||x.isDirty||x.dirtyFields)&&o.shouldDirty&&v.state.next({name:a,dirtyFields:we(i,n),isDirty:F(a,l)})):d&&!d._f&&!X(l)?H(a,l,o):O(a,l,o),bt(a,h)?v.state.next({...r,name:a,values:j(n)}):v.state.next({name:c.mount?a:void 0,values:j(n)})},ne=async a=>{c.mount=!0;const u=a.target;let o=u.name,d=!0;const f=g(s,o),l=b=>{d=Number.isNaN(b)||ge(b)&&isNaN(b.getTime())||he(b,g(n,o,b))},m=gt(t.mode),p=gt(t.reValidateMode);if(f){let b,N;const I=u.type?yt(f._f):Pt(a),T=a.type===ct.BLUR||a.type===ct.FOCUS_OUT,$=!rr(f._f)&&!t.resolver&&!g(r.errors,o)&&!f._f.deps||ar(T,g(r.touchedFields,o),r.isSubmitted,p,m),W=bt(o,h,T);M(n,o,I),T?(!u||!u.readOnly)&&(f._f.onBlur&&f._f.onBlur(a),w&&w(0)):f._f.onChange&&f._f.onChange(a);const U=ce(o,I,T),Q=!J(U)||W;if(!T&&v.state.next({name:o,type:a.type,values:j(n)}),$)return(D.isValid||x.isValid)&&(t.mode==="onBlur"?T&&Y():T||Y()),Q&&v.state.next({name:o,...W?{}:U});if(!T&&W&&v.state.next({...r}),t.resolver){const{errors:De}=await ae([o]);if(Z([o]),l(I),d){const ut=wt(r.errors,s,o),Je=wt(De,s,ut.name||o);b=Je.error,o=Je.name,N=J(De)}}else Z([o],!0),b=(await Et(f,h.disabled,n,y,t.shouldUseNativeValidation))[o],Z([o]),l(I),d&&(b?N=!1:(D.isValid||x.isValid)&&(N=await K(s,!0)));d&&(f._f.deps&&(!Array.isArray(f._f.deps)||f._f.deps.length>0)&&G(f._f.deps),ye(o,N,b,U))}},fe=(a,u)=>{if(g(r.errors,u)&&a.focus)return a.focus(),1},G=async(a,u={})=>{let o,d;const f=Ce(a);if(t.resolver){const l=await de(k(a)?a:f);o=J(l),d=a?!f.some(m=>g(l,m)):o}else a?(d=(await Promise.all(f.map(async l=>{const m=g(s,l);return await K(m&&m._f?{[l]:m}:m)}))).every(Boolean),!(!d&&!r.isValid)&&Y()):d=o=await K(s);return v.state.next({...!ee(a)||(D.isValid||x.isValid)&&o!==r.isValid?{}:{name:a},...t.resolver||!a?{isValid:o}:{},errors:r.errors}),u.shouldFocus&&!d&&Oe(s,fe,a?f:h.mount),d},Me=(a,u)=>{let o={...c.mount?n:i};return u&&(o=Dt(u.dirtyFields?r.dirtyFields:r.touchedFields,o)),k(a)?o:ee(a)?g(o,a):a.map(d=>g(o,d))},Le=(a,u)=>({invalid:!!g((u||r).errors,a),isDirty:!!g((u||r).dirtyFields,a),error:g((u||r).errors,a),isValidating:!!g(r.validatingFields,a),isTouched:!!g((u||r).touchedFields,a)}),We=a=>{a&&Ce(a).forEach(u=>B(r.errors,u)),v.state.next({errors:a?r.errors:{}})},A=(a,u,o)=>{const d=(g(s,a,{_f:{}})._f||{}).ref,f=g(r.errors,a)||{},{ref:l,message:m,type:p,...b}=f;M(r.errors,a,{...b,...u,ref:d}),v.state.next({name:a,errors:r.errors,isValid:!1}),o&&o.shouldFocus&&d&&d.focus&&d.focus()},Ve=(a,u)=>se(a)?v.state.subscribe({next:o=>"values"in o&&a(S(void 0,u),o)}):S(a,u,!0),Fe=a=>v.state.subscribe({next:u=>{ir(a.name,u.name,a.exact)&&sr(u,a.formState||D,_e,a.reRenderRoot)&&a.callback({values:{...n},...r,...u,defaultValues:i})}}).unsubscribe,He=a=>(c.mount=!0,x={...x,...a.formState},Fe({...a,formState:{...C,...a.formState}})),Ae=(a,u={})=>{for(const o of a?Ce(a):h.mount)h.mount.delete(o),h.array.delete(o),u.keepValue||(B(s,o),B(n,o)),!u.keepError&&B(r.errors,o),!u.keepDirty&&B(r.dirtyFields,o),!u.keepTouched&&B(r.touchedFields,o),!u.keepIsValidating&&B(r.validatingFields,o),!t.shouldUnregister&&!u.keepDefaultValue&&B(i,o);v.state.next({values:j(n)}),v.state.next({...r,...u.keepDirty?{isDirty:F()}:{}}),!u.keepIsValid&&Y()},Ie=({disabled:a,name:u})=>{(ue(a)&&c.mount||a||h.disabled.has(u))&&(a?h.disabled.add(u):h.disabled.delete(u))},xe=(a,u={})=>{let o=g(s,a);const d=ue(u.disabled)||ue(t.disabled);return M(s,a,{...o||{},_f:{...o&&o._f?o._f:{ref:{name:a}},name:a,mount:!0,...u}}),h.mount.add(a),o?Ie({disabled:ue(u.disabled)?u.disabled:t.disabled,name:a}):R(a,!0,u.value),{...d?{disabled:u.disabled||t.disabled}:{},...t.progressive?{required:!!u.required,min:Re(u.min),max:Re(u.max),minLength:Re(u.minLength),maxLength:Re(u.maxLength),pattern:Re(u.pattern)}:{},name:a,onChange:ne,onBlur:ne,ref:f=>{if(f){xe(a,u),o=g(s,a);const l=k(f.value)&&f.querySelectorAll&&f.querySelectorAll("input,select,textarea")[0]||f,m=Gt(l),p=o._f.refs||[];if(m?p.find(b=>b===l):l===o._f.ref)return;M(s,a,{_f:{...o._f,...m?{refs:[...p.filter(Qe),l,...Array.isArray(g(i,a))?[{}]:[]],ref:{type:l.type,name:a}}:{ref:l}}}),R(a,!1,void 0,l)}else o=g(s,a,{}),o._f&&(o._f.mount=!1),(t.shouldUnregister||u.shouldUnregister)&&!(jt(h.array,a)&&c.action)&&h.unMount.add(a)}}},Se=()=>t.shouldFocusError&&Oe(s,fe,h.mount),Ye=a=>{ue(a)&&(v.state.next({disabled:a}),Oe(s,(u,o)=>{const d=g(s,o);d&&(u.disabled=d._f.disabled||a,Array.isArray(d._f.refs)&&d._f.refs.forEach(f=>{f.disabled=d._f.disabled||a}))},0,!1))},ke=(a,u)=>async o=>{let d;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let f=j(n);if(v.state.next({isSubmitting:!0}),t.resolver){const{errors:l,values:m}=await ae();Z(),r.errors=l,f=j(m)}else await K(s);if(h.disabled.size)for(const l of h.disabled)B(f,l);if(B(r.errors,"root"),J(r.errors)){v.state.next({errors:{}});try{await a(f,o)}catch(l){d=l}}else u&&await u({...r.errors},o),Se(),setTimeout(Se);if(v.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:J(r.errors)&&!d,submitCount:r.submitCount+1,errors:r.errors}),d)throw d},Ke=(a,u={})=>{g(s,a)&&(k(u.defaultValue)?z(a,j(g(i,a))):(z(a,u.defaultValue),M(i,a,j(u.defaultValue))),u.keepTouched||B(r.touchedFields,a),u.keepDirty||(B(r.dirtyFields,a),r.isDirty=u.defaultValue?F(a,j(g(i,a))):F()),u.keepError||(B(r.errors,a),D.isValid&&Y()),v.state.next({...r}))},Ue=(a,u={})=>{const o=a?j(a):i,d=j(o),f=J(a),l=f?i:d;if(u.keepDefaultValues||(i=o),!u.keepValues){if(u.keepDirtyValues){const m=new Set([...h.mount,...Object.keys(we(i,n))]);for(const p of Array.from(m)){const b=g(r.dirtyFields,p),N=g(n,p),I=g(l,p);b&&!k(N)?M(l,p,N):!b&&!k(I)&&z(p,I)}}else{if(tt&&k(a))for(const m of h.mount){const p=g(s,m);if(p&&p._f){const b=Array.isArray(p._f.refs)?p._f.refs[0]:p._f.ref;if(Pe(b)){const N=b.closest("form");if(N){N.reset();break}}}}if(u.keepFieldsRef)for(const m of h.mount)z(m,g(l,m));else s={}}n=t.shouldUnregister?u.keepDefaultValues?j(i):{}:j(l),v.array.next({values:{...l}}),v.state.next({values:{...l}})}h={mount:u.keepDirtyValues?h.mount:new Set,unMount:new Set,array:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:""},c.mount=!D.isValid||!!u.keepIsValid||!!u.keepDirtyValues||!t.shouldUnregister&&!J(l),c.watch=!!t.shouldUnregister,c.keepIsValid=!!u.keepIsValid,c.action=!1,u.keepErrors||(r.errors={}),v.state.next({submitCount:u.keepSubmitCount?r.submitCount:0,isDirty:f?!1:u.keepDirty?r.isDirty:!!(u.keepDefaultValues&&!he(a,i)),isSubmitted:u.keepIsSubmitted?r.isSubmitted:!1,dirtyFields:f?{}:u.keepDirtyValues?u.keepDefaultValues&&n?we(i,n):r.dirtyFields:u.keepDefaultValues&&a?we(i,a):u.keepDirty?r.dirtyFields:{},touchedFields:u.keepTouched?r.touchedFields:{},errors:u.keepErrors?r.errors:{},isSubmitSuccessful:u.keepIsSubmitSuccessful?r.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},Be=(a,u)=>Ue(se(a)?a(n):a,{...t.resetOptions,...u}),ze=(a,u={})=>{const o=g(s,a),d=o&&o._f;if(d){const f=d.refs?d.refs[0]:d.ref;f.focus&&setTimeout(()=>{f.focus(),u.shouldSelect&&se(f.select)&&f.select()})}},_e=a=>{r={...r,...a}},qe={control:{register:xe,unregister:Ae,getFieldState:Le,handleSubmit:ke,setError:A,_subscribe:Fe,_runSchema:ae,_updateIsValidating:Z,_focusError:Se,_getWatch:S,_getDirty:F,_setValid:Y,_setFieldArray:_,_setDisabledField:Ie,_setErrors:re,_getFieldArray:L,_reset:Ue,_resetDefaultValues:()=>se(t.defaultValues)&&t.defaultValues().then(a=>{Be(a,t.resetOptions),v.state.next({isLoading:!1})}),_removeUnmounted:oe,_disableForm:Ye,_subjects:v,_proxyFormState:D,get _fields(){return s},get _formValues(){return n},get _state(){return c},set _state(a){c=a},get _defaultValues(){return i},get _names(){return h},set _names(a){h=a},get _formState(){return r},get _options(){return t},set _options(a){t={...t,...a}}},subscribe:He,trigger:G,register:xe,handleSubmit:ke,watch:Ve,setValue:z,getValues:Me,reset:Be,resetField:Ke,clearErrors:We,unregister:Ae,setError:A,setFocus:ze,getFieldState:Le};return{...qe,formControl:qe}}function cr(e={}){const t=V.useRef(void 0),r=V.useRef(void 0),[s,i]=V.useState({isDirty:!1,isValidating:!1,isLoading:se(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,isReady:!1,defaultValues:se(e.defaultValues)?void 0:e.defaultValues});if(!t.current)if(e.formControl)t.current={...e.formControl,formState:s},e.defaultValues&&!se(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{const{formControl:c,...h}=lr(e);t.current={...h,formState:s}}const n=t.current.control;return n._options=e,Kt(()=>{const c=n._subscribe({formState:n._proxyFormState,callback:()=>i({...n._formState}),reRenderRoot:!0});return i(h=>({...h,isReady:!0})),n._formState.isReady=!0,c},[n]),V.useEffect(()=>n._disableForm(e.disabled),[n,e.disabled]),V.useEffect(()=>{e.mode&&(n._options.mode=e.mode),e.reValidateMode&&(n._options.reValidateMode=e.reValidateMode)},[n,e.mode,e.reValidateMode]),V.useEffect(()=>{e.errors&&(n._setErrors(e.errors),n._focusError())},[n,e.errors]),V.useEffect(()=>{e.shouldUnregister&&n._subjects.state.next({values:n._getWatch()})},[n,e.shouldUnregister]),V.useEffect(()=>{if(n._proxyFormState.isDirty){const c=n._getDirty();c!==s.isDirty&&n._subjects.state.next({isDirty:c})}},[n,s.isDirty]),V.useEffect(()=>{var c;e.values&&!he(e.values,r.current)?(n._reset(e.values,{keepFieldsRef:!0,...n._options.resetOptions}),!((c=n._options.resetOptions)===null||c===void 0)&&c.keepIsValid||n._setValid(),r.current=e.values,i(h=>({...h}))):n._resetDefaultValues()},[n,e.values]),V.useEffect(()=>{n._state.mount||(n._setValid(),n._state.mount=!0),n._state.watch&&(n._state.watch=!1,n._subjects.state.next({...n._formState})),n._removeUnmounted()}),t.current.formState=Yt(s,n),t.current}function dr(){const e=new Date;return{NOW:e,TODAY:new Date(e.getFullYear(),e.getMonth(),e.getDate()),CURRENT_USER:{EmpId:1,Email:"user@example.com",FirstName:"John",LastName:"Doe",Role:"User"},CURRENT_USER_ID:1}}const fr={CONCAT:(...e)=>e.map(t=>String(t||"")).join(""),TRIM:e=>String(e||"").trim(),LENGTH:e=>String(e||"").length,UPPER:e=>String(e||"").toUpperCase(),LOWER:e=>String(e||"").toLowerCase(),SUBSTRING:(e,t,r)=>{const s=String(e||"");return r!==void 0?s.substring(t,t+r):s.substring(t)},CONTAINS:(e,t)=>String(e||"").includes(String(t||"")),YEAR:e=>new Date(e).getFullYear(),MONTH:e=>new Date(e).getMonth()+1,DAY:e=>new Date(e).getDate(),DATE_DIFF:(e,t)=>{const r=new Date(e),s=new Date(t),i=Math.abs(r.getTime()-s.getTime());return Math.ceil(i/(1e3*60*60*24))},ADD_DAYS:(e,t)=>{const r=new Date(e);return r.setDate(r.getDate()+t),r},ADD_MONTHS:(e,t)=>{const r=new Date(e);return r.setMonth(r.getMonth()+t),r},SUM:(...e)=>e.reduce((t,r)=>t+(Number(r)||0),0),AVG:(...e)=>{const t=e.filter(r=>!isNaN(Number(r)));return t.length>0?t.reduce((r,s)=>r+Number(s),0)/t.length:0},MIN:(...e)=>Math.min(...e.map(t=>Number(t)||0)),MAX:(...e)=>Math.max(...e.map(t=>Number(t)||0)),ROUND:e=>Math.round(Number(e)||0),FLOOR:e=>Math.floor(Number(e)||0),CEIL:e=>Math.ceil(Number(e)||0),ABS:e=>Math.abs(Number(e)||0),IF:(e,t,r)=>e?t:r,IS_NULL:e=>e==null,IS_EMPTY:e=>!e||String(e).trim()==="",IS_NUMBER:e=>!isNaN(Number(e))&&e!==""&&e!==null&&e!==void 0,IS_DATE:e=>{const t=new Date(e);return!isNaN(t.getTime())},AUTO_NUMBER:()=>Math.floor(Math.random()*1e4)+1e3,UUID:()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=Math.random()*16|0;return(e=="x"?t:t&3|8).toString(16)}),ARRAY_LENGTH:e=>Array.isArray(e)?e.length:0,ARRAY_CONTAINS:(e,t)=>Array.isArray(e)?e.includes(t):!1,ARRAY_JOIN:(e,t=",")=>Array.isArray(e)?e.join(t):""};function me(e,t){var r;switch(e.Type){case"Literal":return e.Value;case"SystemIdentifier":if(e.Property){const E=t.systemValues[e.Name];return Xe(E,e.Property.Name)}return t.systemValues[e.Name];case"Identifier":if(e.Property){const E=Vt(e,t);return Xe(E,e.Property.Name)}return Vt(e,t);case"MemberExpression":if(!e.Arguments||e.Arguments.length===0)throw new Error("MemberExpression requires Arguments array");const s=me(e.Arguments[0],t),i=(r=e.Arguments[0].Property)==null?void 0:r.Name;return i?Xe(s,i):s;case"BinaryExpression":if(!e.Arguments||e.Arguments.length!==2)throw new Error("BinaryExpression requires exactly 2 arguments");const n=me(e.Arguments[0],t),c=me(e.Arguments[1],t);return hr(e.Operator,n,c);case"LogicalExpression":if(!e.Arguments||e.Arguments.length<2)throw new Error("LogicalExpression requires at least 2 arguments");return mr(e.Operator,e.Arguments,t);case"CallExpression":if(!e.Callee)throw new Error("CallExpression requires Callee");const h=fr[e.Callee];if(!h)throw new Error(`Unknown function: ${e.Callee}`);const w=(e.Arguments||[]).map(E=>me(E,t));return h(...w);case"AssignmentExpression":if(!e.Arguments||e.Arguments.length!==1)throw new Error("AssignmentExpression requires exactly 1 argument");return me(e.Arguments[0],t);default:throw new Error(`Unknown expression type: ${e.Type}`)}}function Vt(e,t){const{Name:r,Source:s}=e;if(!r)throw new Error("Identifier requires Name");switch(s){case"Input":default:return t.formValues[r]}}function Xe(e,t){if(!(!e||typeof e!="object"))return e[t]}function hr(e,t,r){const s=i=>i==null?0:typeof i=="number"?i:typeof i=="object"&&i!==null&&"value"in i?Number(i.value)||0:Number(i)||0;switch(e){case"==":return t==r;case"!=":return t!=r;case">":return s(t)>s(r);case"<":return s(t)<s(r);case">=":return s(t)>=s(r);case"<=":return s(t)<=s(r);case"+":return s(t)+s(r);case"-":return s(t)-s(r);case"*":return s(t)*s(r);case"/":const i=s(r);return i!==0?s(t)/i:0;default:throw new Error(`Unknown binary operator: ${e}`)}}function mr(e,t,r){switch(e){case"AND":return t.every(s=>!!me(s,r));case"OR":return t.some(s=>!!me(s,r));default:throw new Error(`Unknown logical operator: ${e}`)}}function Mt(e,t,r={}){const s={formValues:t,systemValues:dr(),referenceData:r};try{return me(e,s)}catch(i){return console.warn("Expression evaluation failed:",i),!1}}function Ft(e,t,r={}){const s=[];for(const i of e)try{Mt(i.Condition.ExpressionTree,t,r)||s.push({isValid:!1,message:i.Message,fieldName:i.Id})}catch(n){console.warn(`Cross-field validation rule ${i.Id} failed:`,n)}return s}function yr(e,t={},r={}){try{return Mt(e,t,r)}catch(s){return console.warn("Default value calculation failed:",s),null}}function At(e,t){var h,w,E;const r=((h=e.Expression)==null?void 0:h.toLowerCase())||"",s=((w=e.Name)==null?void 0:w.toLowerCase())||"",i=((E=e.Id)==null?void 0:E.toLowerCase())||"",n=t.toLowerCase();return s.includes("required")||i.includes("required")?!0:[`${n} != null`,`${n} != ''`,`trim(${n}) != ''`,`${n}!=null`,`${n}!=''`].some(C=>r.includes(C))}function gr(e){const t={...e};t.Rules||(t.Rules={Validation:{},Computation:{},BusinessLogic:{}}),t.Rules.Validation||(t.Rules.Validation={}),t.Rules.Computation||(t.Rules.Computation={}),t.Rules.BusinessLogic||(t.Rules.BusinessLogic={});const r={...t.Fields};return Object.entries(r).forEach(([s,i])=>{let n=i.Required||!1;if(i.Validation&&Array.isArray(i.Validation))if(i.Validation.length>0&&typeof i.Validation[0]=="object"){const c=[];i.Validation.forEach(h=>{t.Rules.Validation[h.Id]=h,c.push(h.Id),At(h,s)&&(n=!0)}),r[s]={...i,Validation:c,Required:n}}else i.Validation.forEach(h=>{var E;const w=(E=t.Rules.Validation)==null?void 0:E[h];w&&At(w,s)&&(n=!0)}),n&&!i.Required&&(r[s]={...i,Required:!0});if(i.Formula){const c=`RULE_COMPUTE_${s.toUpperCase()}`;t.Rules.Computation[c]={Id:c,Name:i.Formula.Id||`Compute ${s}`,Description:i.Formula.Description||`Computes value for ${s}`,Expression:i.Formula.Expression,ExpressionTree:i.Formula.ExpressionTree,ResultType:i.Type}}}),t.Fields=r,t}function pr(e){var r,s,i;const t={validation:{},computation:{},businessLogic:{}};return(r=e.Rules)!=null&&r.Validation&&(t.validation={...e.Rules.Validation}),(s=e.Rules)!=null&&s.Computation&&(t.computation={...e.Rules.Computation}),(i=e.Rules)!=null&&i.BusinessLogic&&(t.businessLogic={...e.Rules.BusinessLogic}),t}function br(e){var s;const t={};if(!((s=e.Rules)!=null&&s.Computation))return t;const r=Object.entries(e.Fields).filter(([i,n])=>n.Computed).map(([i])=>i);return r.sort((i,n)=>n.length-i.length),Object.entries(e.Rules.Computation).forEach(([i,n])=>{const c=i.toUpperCase().replace(/[_-]/g,"");for(const w of r){const E=w.toUpperCase().replace(/[_-]/g,"");if(c.includes(E)){t[i]=w;return}}const h=`${n.Name||""} ${n.Description||""}`.toLowerCase();for(const w of r)if(h.includes(w.toLowerCase())){t[i]=w;return}}),t}function wr(e,t){const r={};Object.keys(e.Fields).forEach(i=>{r[i]={validation:[],computation:[],businessLogic:[]}}),Object.entries(e.Fields).forEach(([i,n])=>{n.Validation&&Array.isArray(n.Validation)&&n.Validation.forEach(h=>{t.validation[h]?r[i].validation.push(h):t.computation[h]?r[i].computation.push(h):t.businessLogic[h]&&r[i].businessLogic.push(h)}),n.Formula&&Object.entries(t.computation).forEach(([c,h])=>{var w;h.Expression===((w=n.Formula)==null?void 0:w.Expression)&&(r[i].computation.includes(c)||r[i].computation.push(c))})});const s=br(e);return Object.entries(s).forEach(([i,n])=>{r[n]&&!r[n].computation.includes(i)&&r[n].computation.push(i)}),r}function vr(e,t){const r={},s={editable:!0,readable:!0,hidden:!1};return Object.keys(e.Fields).forEach(i=>{var w,E,C,D,x,v;if(!t||!((w=e.RolePermission)!=null&&w[t])){r[i]=s;return}const n=e.RolePermission[t],c=((E=n.Editable)==null?void 0:E.includes(i))||((C=n.Editable)==null?void 0:C.includes("*"))||!1,h=((D=n.ReadOnly)==null?void 0:D.includes(i))||((x=n.ReadOnly)==null?void 0:x.includes("*"))||c;r[i]={editable:c&&!((v=n.ReadOnly)!=null&&v.includes(i)),readable:h,hidden:!h}}),r}function Er(e,t){switch(e){case"String":return t.toLowerCase().includes("email")?"email":t.toLowerCase().includes("password")?"password":"text";case"Number":return"number";case"Boolean":return"checkbox";case"Date":return"date";case"DateTime":return"datetime-local";case"Reference":return"reference";case"Array":case"Object":return"textarea";default:return"text"}}function Lt(e){return e.replace(/([A-Z])/g," $1").replace(/^./,t=>t.toUpperCase()).replace(/_/g," ").trim()}function Vr(e,t,r){const s={};switch(t.Required&&(s.required={value:!0,message:`${Lt(e)} is required`}),t.Type){case"Number":s.valueAsNumber=!0;break;case"Date":case"DateTime":s.valueAsDate=!0;break}return t.Validation&&t.Validation.length>0&&(s.validate=()=>!0),s}function Fr(e){return e.Values?e.Values.Mode==="Static"&&e.Values.Items?e.Values.Items.map(t=>({value:t.Value,label:t.Label})):e.Values.Mode==="Dynamic"&&e.Values.Reference?[]:[]:[]}function Ar(e,t={}){if(!e.DefaultValue)switch(e.Type){case"Boolean":return!1;case"Number":return 0;case"String":return"";case"Array":return[];case"Object":return{};default:return}return yr(e.DefaultValue.ExpressionTree,t)}function xr(e,t,r,s={},i,n){const c={editable:!0,readable:!0,hidden:!1},w=n||{validation:[],computation:[],businessLogic:[]},E=t.Computed||!!t.Formula||w.computation.length>0,C=Vr(e,t);return E&&(C.disabled=!0),{name:e,type:Er(t.Type,e),label:t.Name||Lt(e),required:t.Required||!1,computed:E,defaultValue:Ar(t,s),options:Fr(t),validation:C,description:t.Description,_bdoField:t,permission:i||c,rules:w}}function Sr(e,t={},r){let s=e;s=gr(s);const i={},n=[],c=[],h=[],w=[],E=pr(s),C=wr(s,E),D=vr(s,r);for(const[x,v]of Object.entries(s.Fields)){if(x.startsWith("_")&&!["_id"].includes(x))continue;const y=D[x];if(y.hidden)continue;const P=xr(x,v,s.Fields,t,y,C[x]||{validation:[],computation:[],businessLogic:[]});i[x]=P,n.push(x),P.computed&&c.push(x),P.required&&h.push(x)}return{fields:i,fieldOrder:n,computedFields:c,requiredFields:h,crossFieldValidation:w,rules:E,fieldRules:C,rolePermissions:s.RolePermission}}async function _r(e){try{const r=(await qt.getBdoSchema(e)).BOBlob;if(!r||typeof r!="object"||!r.Fields)throw new Error(`Invalid BDO schema response for ${e}`);return r}catch(t){throw console.error(`Schema fetch error for ${e}:`,t),new Error(`Failed to load form schema: ${t instanceof Error?t.message:"Unknown error"}`)}}async function Dr(e,t=3){let r;for(let s=1;s<=t;s++)try{return await _r(e)}catch(i){if(r=Ne.toError(i),s<t){const n=Math.min(1e3*Math.pow(2,s-1),5e3);await new Promise(c=>setTimeout(c,n));continue}}throw r}async function Rr(e,t){try{return await ve.api(e).get(t)}catch(r){throw console.error(`Record fetch error for ${e}/${t}:`,r),new Error(`Failed to load record: ${r instanceof Error?r.message:"Unknown error"}`)}}async function Nr(e,t,r,s){try{let i;if(t==="create")return i=await ve.api(e).create(r),{success:!0,data:i,recordId:i._id||s};if(t==="update"){if(!s)throw new Error("Record ID is required for update operations");return i=await ve.api(e).update(s,r),{success:!0,data:i,recordId:i._id||s}}else throw new Error(`Unsupported operation: ${t}`)}catch(i){return console.error("Form submission error:",i),{success:!1,error:new Error(`Failed to ${t} record: ${i instanceof Error?i.message:"Unknown error"}`)}}}function Cr(e,t,r="create",s,i){const n={};return Object.keys(e).forEach(c=>{const h=c;let w=e[h];if(!t.includes(c)&&w!==void 0){if((i==null?void 0:i[c])==="Reference"&&w!==null&&(w=It(w)),r==="create"){n[h]=w;return}if(r==="update"){if(!s){n[h]=w;return}const E=s[h];JSON.stringify(w)!==JSON.stringify(E)&&(n[h]=w)}}}),n}function It(e){if(e==null||e==="")return null;if(typeof e=="object"&&e._id)return{...e};if(typeof e=="string"){try{const t=JSON.parse(e);if(typeof t=="object"&&t._id)return{...t}}catch{}return{_id:e}}return e}function Or(e){var t,r,s,i;return typeof e=="string"?e:e!=null&&e.message?e.message:(r=(t=e==null?void 0:e.response)==null?void 0:t.data)!=null&&r.message?e.response.data.message:(i=(s=e==null?void 0:e.response)==null?void 0:s.data)!=null&&i.error?e.response.data.error:"An unexpected error occurred"}function Tr(e){var t,r;return!navigator.onLine||(e==null?void 0:e.code)==="NETWORK_ERROR"||((t=e==null?void 0:e.message)==null?void 0:t.toLowerCase().includes("network"))||((r=e==null?void 0:e.message)==null?void 0:r.toLowerCase().includes("fetch"))}function Mr(e){var t,r,s;return(e==null?void 0:e.status)===400||((t=e==null?void 0:e.response)==null?void 0:t.status)===400||((r=e==null?void 0:e.message)==null?void 0:r.toLowerCase().includes("validation"))||((s=e==null?void 0:e.message)==null?void 0:s.toLowerCase().includes("invalid"))}const Ee=new Map;function Lr(e,t,r=10){Ee.set(e,{data:t,timestamp:Date.now(),ttl:r*60*1e3})}function Ir(e){const t=Ee.get(e);return t?Date.now()-t.timestamp>t.ttl?(Ee.delete(e),null):t.data:null}function kr(e){e?Array.from(Ee.keys()).filter(r=>r.startsWith(e)).forEach(r=>Ee.delete(r)):Ee.clear()}async function Ur(e){const t=`schema:${e}`,r=Ir(t);if(r)return r;const s=await Dr(e);return Lr(t,s,30),s}class xt{constructor(t=1e3){pe(this,"cache",new Map);pe(this,"maxSize");this.maxSize=t}get(t){const r=this.cache.get(t);return r!==void 0&&(this.cache.delete(t),this.cache.set(t,r)),r}set(t,r){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){const s=this.cache.keys().next().value;this.cache.delete(s)}this.cache.set(t,r)}clear(){this.cache.clear()}}function Br(e){const t=new Set;function r(s){switch(s.Type){case"Identifier":s.Name&&!s.Name.startsWith("$")&&t.add(s.Name);break;case"MemberExpression":s.Arguments&&s.Arguments.forEach(r);break;case"CallExpression":case"BinaryExpression":case"LogicalExpression":s.Arguments&&s.Arguments.forEach(r);break}}return r(e),t}class qr{constructor(){pe(this,"resultCache",new xt(500));pe(this,"dependencyCache",new xt(200));pe(this,"compiledExpressions",new Map)}createCacheKey(t,r){const s=JSON.stringify(t),i=JSON.stringify(r);return`${s}:${i}`}getDependencies(t){const r=JSON.stringify(t);let s=this.dependencyCache.get(r);return s||(s=Br(t),this.dependencyCache.set(r,s)),s}getCachedResult(t,r,s){if(!s)return;const i=this.getDependencies(t);for(const c of i)if(r[c]!==s[c])return;const n=this.createCacheKey(t,r);return this.resultCache.get(n)}evaluate(t,r,s){const i=this.getCachedResult(t,r,s);if(i!==void 0)return i;const n=this.evaluateNode(t,r),c=this.createCacheKey(t,r);return this.resultCache.set(c,n),n}evaluateNode(t,r){switch(t.Type){case"Literal":return t.Value;case"Identifier":return this.getIdentifierValue(t,r);case"BinaryExpression":return this.evaluateBinaryExpression(t,r);case"LogicalExpression":return this.evaluateLogicalExpression(t,r);case"CallExpression":return this.evaluateCallExpression(t,r);case"MemberExpression":return this.evaluateMemberExpression(t,r);default:throw new Error(`Unsupported expression type: ${t.Type}`)}}getIdentifierValue(t,r){if(t.Name){if(t.Name==="NOW")return new Date;if(t.Name==="TODAY"){const s=new Date;return new Date(s.getFullYear(),s.getMonth(),s.getDate())}return t.Name==="CURRENT_USER_ID"?1:t.Name==="CURRENT_USER"?{EmpId:1,Email:"user@example.com",FirstName:"John",LastName:"Doe",Role:"User"}:r[t.Name]}}evaluateBinaryExpression(t,r){if(!t.Arguments||t.Arguments.length!==2)throw new Error("Binary expression requires exactly 2 arguments");const s=this.evaluateNode(t.Arguments[0],r),i=this.evaluateNode(t.Arguments[1],r);switch(t.Operator){case"==":return s==i;case"!=":return s!=i;case"===":return s===i;case"!==":return s!==i;case"<":return Number(s)<Number(i);case"<=":return Number(s)<=Number(i);case">":return Number(s)>Number(i);case">=":return Number(s)>=Number(i);case"+":return Number(s)+Number(i);case"-":return Number(s)-Number(i);case"*":return Number(s)*Number(i);case"/":return Number(s)/Number(i);case"%":return Number(s)%Number(i);default:throw new Error(`Unsupported binary operator: ${t.Operator}`)}}evaluateLogicalExpression(t,r){if(!t.Arguments||t.Arguments.length<2)throw new Error("Logical expression requires at least 2 arguments");switch(t.Operator){case"AND":for(const s of t.Arguments)if(!this.evaluateNode(s,r))return!1;return!0;case"OR":for(const s of t.Arguments)if(this.evaluateNode(s,r))return!0;return!1;default:throw new Error(`Unsupported logical operator: ${t.Operator}`)}}evaluateCallExpression(t,r){var i;if(!t.Callee)throw new Error("Call expression requires a function name");const s=((i=t.Arguments)==null?void 0:i.map(n=>this.evaluateNode(n,r)))||[];switch(t.Callee){case"CONCAT":return s.map(E=>String(E||"")).join("");case"TRIM":return String(s[0]||"").trim();case"LENGTH":return String(s[0]||"").length;case"UPPER":return String(s[0]||"").toUpperCase();case"LOWER":return String(s[0]||"").toLowerCase();case"CONTAINS":return String(s[0]||"").includes(String(s[1]||""));case"MATCHES":return new RegExp(String(s[1])).test(String(s[0]||""));case"SUM":return s.reduce((E,C)=>E+(Number(C)||0),0);case"AVG":const n=s.filter(E=>!isNaN(Number(E)));return n.length>0?n.reduce((E,C)=>E+Number(C),0)/n.length:0;case"MIN":return Math.min(...s.map(E=>Number(E)||0));case"MAX":return Math.max(...s.map(E=>Number(E)||0));case"ROUND":return Math.round(Number(s[0])||0);case"FLOOR":return Math.floor(Number(s[0])||0);case"CEIL":return Math.ceil(Number(s[0])||0);case"ABS":return Math.abs(Number(s[0])||0);case"YEAR":return new Date(s[0]).getFullYear();case"MONTH":return new Date(s[0]).getMonth()+1;case"DAY":return new Date(s[0]).getDate();case"DATE_DIFF":const c=new Date(s[0]),h=new Date(s[1]),w=Math.abs(c.getTime()-h.getTime());return Math.ceil(w/(1e3*60*60*24));case"IF":return s[0]?s[1]:s[2];case"AUTO_NUMBER":return Math.floor(Math.random()*1e4);default:throw new Error(`Unknown function: ${t.Callee}`)}}evaluateMemberExpression(t,r){var n;if(!t.Arguments||t.Arguments.length===0)throw new Error("Member expression requires arguments");const s=this.evaluateNode(t.Arguments[0],r),i=(n=t.Arguments[0].Property)==null?void 0:n.Name;return i&&s&&typeof s=="object"?s[i]:s}clearCache(){this.resultCache.clear(),this.dependencyCache.clear(),this.compiledExpressions.clear()}}const kt=new qr;function Pr(e,t,r,s,i){if(!r||r.length===0)return{isValid:!0};const n={...s,[e]:t};for(const c of r)try{if(!kt.evaluate(c.ExpressionTree,n,i))return{isValid:!1,message:c.Message||`Validation failed for ${c.Name}`,fieldName:e}}catch(h){console.warn(`Validation rule ${c.Id} failed to evaluate:`,h)}return{isValid:!0}}function St(e){return Array.from(kt.getDependencies(e))}function $r(e){const{source:t,operation:r,recordId:s,defaultValues:i={},mode:n="onBlur",enabled:c=!0,userRole:h,onSchemaError:w,skipSchemaFetch:E=!1,schema:C,interactionMode:D="interactive",enableDraftInUpdateMode:x=!1}=e,v=D==="interactive",[y,P]=V.useState(null),[Y,Z]=V.useState({}),[_,te]=V.useState(!1),[re]=V.useState({}),[R,ce]=V.useState(null),[ye,ae]=V.useState(!1),[de,K]=V.useState(null),oe=V.useRef(!1),F=V.useRef(null),S=V.useRef(null),L=V.useRef(!1),O=V.useRef(w);V.useEffect(()=>{O.current=w},[w]);const{data:H,isLoading:z,error:ne,refetch:fe}=lt.useQuery({queryKey:["form-schema",t],queryFn:()=>E?Promise.resolve(C||{}):Ur(t),enabled:c&&(!E||!!C),retry:3,staleTime:30*60*1e3,gcTime:60*60*1e3,throwOnError:!1}),{data:G,isLoading:Me,error:Le}=lt.useQuery({queryKey:["form-record",t,s],queryFn:()=>Rr(t,s),enabled:c&&r==="update"&&!!s,retry:3,staleTime:5*60*1e3,gcTime:15*60*1e3,throwOnError:!1}),We=V.useMemo(()=>{const d={...i};if(r==="update"&&G&&Object.assign(d,G),y)for(const[f,l]of Object.entries(y.fields))l.defaultValue!==void 0&&!(f in d)&&(d[f]=l.defaultValue);return d},[i,G,r,y]),A=cr({mode:n,defaultValues:i,values:r==="update"&&G?We:void 0});V.useEffect(()=>{var d;if(H)try{const f=Sr(H,{},h);P(f)}catch(f){console.error("Schema processing failed:",f),(d=O.current)==null||d.call(O,Ne.toError(f))}},[H,h]),V.useEffect(()=>{var d;ne&&((d=O.current)==null||d.call(O,ne))},[ne]),V.useEffect(()=>{if(!v||r!=="create"||!y||!c||R||L.current)return;L.current=!0;let d=!0;return(async()=>{ae(!0),K(null);try{const m=await ve.api(t).draftInteraction({});if(!d)return;ce(m._id),m&&typeof m=="object"&&Object.entries(m).forEach(([p,b])=>{if(p==="_id")return;A.getValues(p)!==b&&A.setValue(p,b,{shouldDirty:!1,shouldValidate:!1})})}catch(l){if(!d)return;console.error("Failed to create initial draft:",l),K(Ne.toError(l)),L.current=!1}finally{d&&ae(!1)}})(),()=>{d=!1}},[v,r,y,c,R,t]);const Ve=V.useMemo(()=>{if(!y)return[];const d=new Set,f=new Set(y.computedFields);return Object.entries(y.fieldRules).forEach(([l,m])=>{m.computation.forEach(p=>{const b=y.rules.computation[p];b!=null&&b.ExpressionTree&&St(b.ExpressionTree).forEach(I=>{y.fields[I]&&I!==l&&!f.has(I)&&d.add(I)})})}),y.computedFields.forEach(l=>{const m=y.fields[l];m._bdoField.Formula&&St(m._bdoField.Formula.ExpressionTree).forEach(b=>{y.fields[b]&&b!==l&&!f.has(b)&&d.add(b)})}),Array.from(d)},[y]),Fe=V.useCallback(async d=>{if(!(!y||r==="update"&&!x||!(v&&r!=="update"||Ve.length>0&&Ve.includes(d)))){if(v&&r==="create"&&!R){console.warn("Interactive create mode: waiting for draft ID");return}oe.current||(F.current&&clearTimeout(F.current),F.current=setTimeout(()=>{if(!y||oe.current)return;const l=A.getValues();(async()=>{oe.current=!0;try{const p=ve.api(t),b={};r==="update"&&s&&"_id"in l&&(b._id=l._id),v&&r==="create"&&R&&(b._id=R);const N=S.current??(r==="update"?G:null)??{},I=new Set(y.computedFields||[]);Object.keys(l).forEach(U=>{var ot;if(U==="_id"||I.has(U))return;let Q=l[U];const De=N[U];if(JSON.stringify(Q)!==JSON.stringify(De)&&(Q!==""&&Q!==null&&Q!==void 0)){const Ge=y.fields[U];((ot=Ge==null?void 0:Ge._bdoField)==null?void 0:ot.Type)==="Reference"&&(Q=It(Q)),b[U]=Q}});const T=b,$={...S.current};Object.keys(l).forEach(U=>{I.has(U)||($[U]=l[U])}),S.current=$;let W;r==="update"&&s?W=await p.draftPatch(s,T):v&&R?W=await p.draftInteraction(T):W=await p.draft(T),W&&typeof W=="object"&&(Object.entries(W).forEach(([U,Q])=>{l[U]!==Q&&A.setValue(U,Q,{shouldDirty:!1,shouldValidate:!1})}),Object.entries(W).forEach(([U,Q])=>{I.has(U)&&(S.current[U]=Q)}))}catch(p){console.warn("Failed to compute fields via API:",p)}finally{oe.current=!1}})()},300))}},[y,r,s,G,t,A,Ve,v,R,x]),He=V.useCallback(async()=>{if(!y)return!1;const d=A.getValues();if(!await A.trigger())return!1;const l=y.crossFieldValidation.map(p=>({Id:p.Id,Condition:{ExpressionTree:p.ExpressionTree},Message:p.Message||`Validation failed for ${p.Name}`})),m=Ft(l,d,Y);return m.length>0?(m.forEach((p,b)=>{A.setError(`root.crossField${b}`,{type:"validate",message:p.message})}),!1):!0},[y,A.getValues,A.trigger,A.setError,Y]),Ae=V.useCallback((d,f)=>A.handleSubmit(async(l,m)=>{if(!y){const p=new Error("Schema not loaded");f==null||f(p,m);return}te(!0);try{const p=y.crossFieldValidation.map($=>({Id:$.Id,Condition:{ExpressionTree:$.ExpressionTree},Message:$.Message||`Validation failed for ${$.Name}`})),b=Ft(p,l,Y);if(b.length>0){b.forEach(($,W)=>{A.setError(`root.crossField${W}`,{type:"validate",message:$.message})}),f==null||f(A.formState.errors,m);return}const N={};Object.entries(y.fields).forEach(([$,W])=>{N[$]=W._bdoField.Type});const I=Cr(l,y.computedFields,r,G,N);let T;if(v){const $=ve.api(t);if(r==="create"){if(!R)throw new Error("Interactive create mode requires a draft ID. Draft creation may have failed.");T={success:!0,data:await $.draft({...I,_id:R})}}else T={success:!0,data:await $.update(s,I)}}else if(T=await Nr(t,r,I,s),!T.success)throw T.error||new Error("Submission failed");r==="create"&&(A.reset(),v&&ce(null)),await(d==null?void 0:d(T.data||l,m))}catch(p){f==null||f(Ne.toError(p),m)}finally{te(!1)}},(l,m)=>{f==null||f(l,m)}),[A,y,Y,t,r,s,G,v,R]),Ie=V.useCallback(d=>(y==null?void 0:y.fields[d])||null,[y]),xe=V.useCallback(()=>{if(!y)return{};const d={};return Object.entries(y.fields).forEach(([f,l])=>{d[f]=l}),d},[y]),Se=V.useCallback(d=>!!(y!=null&&y.fields[d]),[y]),Ye=V.useCallback(d=>(y==null?void 0:y.requiredFields.includes(d))||!1,[y]),ke=V.useCallback(d=>(y==null?void 0:y.computedFields.includes(d))||!1,[y]),Ke=V.useCallback(async()=>{await fe()},[fe]),Ue=V.useCallback(()=>{A.clearErrors()},[A]),Be=z||r==="update"&&Me||v&&r==="create"&&ye,ze=_,_e=ne||Le||de,nt=!!_e,qe=V.useMemo(()=>(y==null?void 0:y.computedFields)||[],[y]),a=V.useMemo(()=>(y==null?void 0:y.requiredFields)||[],[y]),u=V.useMemo(()=>{if(!y)return{};const d={};return Object.entries(y.fields).forEach(([f,l])=>{const m={};switch(l.required&&(m.required=`${l.label} is required`),l.permission.editable||(m.disabled=!0),l.type){case"number":m.valueAsNumber=!0;break;case"date":case"datetime-local":m.valueAsDate=!0;break}const p=l.rules.validation;p.length>0&&(m.validate={expressionValidation:b=>{const N=A.getValues();for(const I of p){const T=y.rules.validation[I];if(T){const $=Pr(f,b,[T],N,re);if(!$.isValid)return $.message||T.Message||"Invalid value"}}return!0}}),d[f]=m}),d},[y,A,Y]);return{register:V.useCallback((d,f)=>{const l=u[d],m=f==null?void 0:f.onBlur,p=async b=>{m&&await m(b);let N=!0;n==="onBlur"||n==="onTouched"||n==="all"?N=await A.trigger(d):N=!A.getFieldState(d,A.formState).error,N&&await Fe(d)};return A.register(d,{...l,...f,onBlur:p})},[A,u,Fe,n]),handleSubmit:Ae,watch:A.watch,setValue:A.setValue,reset:A.reset,errors:A.formState.errors,isValid:A.formState.isValid,isDirty:A.formState.isDirty,isSubmitting:A.formState.isSubmitting||_,isSubmitSuccessful:A.formState.isSubmitSuccessful,isLoading:Be,isFetching:ze,draftId:R,isCreatingDraft:ye,loadError:_e?Ne.toError(_e):null,hasError:nt,schema:H,schemaConfig:y,computedFields:qe,requiredFields:a,getField:Ie,getFields:xe,hasField:Se,isFieldRequired:Ye,isFieldComputed:ke,refreshSchema:Ke,validateForm:He,clearErrors:Ue}}exports.clearFormCache=kr;exports.isNetworkError=Tr;exports.isValidationError=Mr;exports.parseApiError=Or;exports.useForm=$r;
1
+ "use strict";var Ut=Object.defineProperty;var Bt=(e,t,r)=>t in e?Ut(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var pe=(e,t,r)=>Bt(e,typeof t!="symbol"?t+"":t,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const V=require("react"),lt=require("@tanstack/react-query"),Ee=require("./client-DxjRcEtN.cjs"),qt=require("./metadata-Bz8zJqC1.cjs"),Ne=require("./error-handling-CAoD0Kwb.cjs");var Te=e=>e.type==="checkbox",ge=e=>e instanceof Date,X=e=>e==null;const _t=e=>typeof e=="object";var q=e=>!X(e)&&!Array.isArray(e)&&_t(e)&&!ge(e),Pt=e=>q(e)&&e.target?Te(e.target)?e.target.checked:e.target.value:e,$t=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,jt=(e,t)=>e.has($t(t)),Wt=e=>{const t=e.constructor&&e.constructor.prototype;return q(t)&&t.hasOwnProperty("isPrototypeOf")},tt=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function j(e){if(e instanceof Date)return new Date(e);const t=typeof FileList<"u"&&e instanceof FileList;if(tt&&(e instanceof Blob||t))return e;const r=Array.isArray(e);if(!r&&!(q(e)&&Wt(e)))return e;const s=r?[]:Object.create(Object.getPrototypeOf(e));for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(s[i]=j(e[i]));return s}var je=e=>/^\w*$/.test(e),k=e=>e===void 0,rt=e=>Array.isArray(e)?e.filter(Boolean):[],st=e=>rt(e.replace(/["|']|\]/g,"").split(/\.|\[/)),g=(e,t,r)=>{if(!t||!q(e))return r;const s=(je(t)?[t]:st(t)).reduce((i,n)=>X(i)?i:i[n],e);return k(s)||s===e?k(e[t])?r:e[t]:s},ue=e=>typeof e=="boolean",se=e=>typeof e=="function",M=(e,t,r)=>{let s=-1;const i=je(t)?[t]:st(t),n=i.length,c=n-1;for(;++s<n;){const h=i[s];let w=r;if(s!==c){const v=e[h];w=q(v)||Array.isArray(v)?v:isNaN(+i[s+1])?{}:[]}if(h==="__proto__"||h==="constructor"||h==="prototype")return;e[h]=w,e=e[h]}};const ct={BLUR:"blur",FOCUS_OUT:"focusout"},ie={onBlur:"onBlur",onChange:"onChange",onSubmit:"onSubmit",onTouched:"onTouched",all:"all"},le={max:"max",min:"min",maxLength:"maxLength",minLength:"minLength",pattern:"pattern",required:"required",validate:"validate"},Ht=V.createContext(null);Ht.displayName="HookFormContext";var Yt=(e,t,r,s=!0)=>{const i={defaultValues:t._defaultValues};for(const n in e)Object.defineProperty(i,n,{get:()=>{const c=n;return t._proxyFormState[c]!==ie.all&&(t._proxyFormState[c]=!s||ie.all),e[c]}});return i};const Kt=typeof window<"u"?V.useLayoutEffect:V.useEffect;var ee=e=>typeof e=="string",zt=(e,t,r,s,i)=>ee(e)?(s&&t.watch.add(e),g(r,e,i)):Array.isArray(e)?e.map(n=>(s&&t.watch.add(n),g(r,n))):(s&&(t.watchAll=!0),r),Ze=e=>X(e)||!_t(e);function he(e,t,r=new WeakSet){if(Ze(e)||Ze(t))return Object.is(e,t);if(ge(e)&&ge(t))return Object.is(e.getTime(),t.getTime());const s=Object.keys(e),i=Object.keys(t);if(s.length!==i.length)return!1;if(r.has(e)||r.has(t))return!0;r.add(e),r.add(t);for(const n of s){const c=e[n];if(!i.includes(n))return!1;if(n!=="ref"){const h=t[n];if(ge(c)&&ge(h)||q(c)&&q(h)||Array.isArray(c)&&Array.isArray(h)?!he(c,h,r):!Object.is(c,h))return!1}}return!0}var Jt=(e,t,r,s,i)=>t?{...r[e],types:{...r[e]&&r[e].types?r[e].types:{},[s]:i||!0}}:{},Ce=e=>Array.isArray(e)?e:[e],dt=()=>{let e=[];return{get observers(){return e},next:i=>{for(const n of e)n.next&&n.next(i)},subscribe:i=>(e.push(i),{unsubscribe:()=>{e=e.filter(n=>n!==i)}}),unsubscribe:()=>{e=[]}}};function Dt(e,t){const r={};for(const s in e)if(e.hasOwnProperty(s)){const i=e[s],n=t[s];if(i&&q(i)&&n){const c=Dt(i,n);q(c)&&(r[s]=c)}else e[s]&&(r[s]=n)}return r}var J=e=>q(e)&&!Object.keys(e).length,it=e=>e.type==="file",Pe=e=>{if(!tt)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},Rt=e=>e.type==="select-multiple",at=e=>e.type==="radio",Gt=e=>at(e)||Te(e),Qe=e=>Pe(e)&&e.isConnected;function Qt(e,t){const r=t.slice(0,-1).length;let s=0;for(;s<r;)e=k(e)?s++:e[t[s++]];return e}function Xt(e){for(const t in e)if(e.hasOwnProperty(t)&&!k(e[t]))return!1;return!0}function B(e,t){const r=Array.isArray(t)?t:je(t)?[t]:st(t),s=r.length===1?e:Qt(e,r),i=r.length-1,n=r[i];return s&&delete s[n],i!==0&&(q(s)&&J(s)||Array.isArray(s)&&Xt(s))&&B(e,r.slice(0,-1)),e}var Zt=e=>{for(const t in e)if(se(e[t]))return!0;return!1};function Nt(e){return Array.isArray(e)||q(e)&&!Zt(e)}function et(e,t={}){for(const r in e){const s=e[r];Nt(s)?(t[r]=Array.isArray(s)?[]:{},et(s,t[r])):k(s)||(t[r]=!0)}return t}function we(e,t,r){r||(r=et(t));for(const s in e){const i=e[s];if(Nt(i))k(t)||Ze(r[s])?r[s]=et(i,Array.isArray(i)?[]:{}):we(i,X(t)?{}:t[s],r[s]);else{const n=t[s];r[s]=!he(i,n)}}return r}const ft={value:!1,isValid:!1},ht={value:!0,isValid:!0};var Ct=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter(r=>r&&r.checked&&!r.disabled).map(r=>r.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!k(e[0].attributes.value)?k(e[0].value)||e[0].value===""?ht:{value:e[0].value,isValid:!0}:ht:ft}return ft},Ot=(e,{valueAsNumber:t,valueAsDate:r,setValueAs:s})=>k(e)?e:t?e===""?NaN:e&&+e:r&&ee(e)?new Date(e):s?s(e):e;const mt={isValid:!1,value:null};var Tt=e=>Array.isArray(e)?e.reduce((t,r)=>r&&r.checked&&!r.disabled?{isValid:!0,value:r.value}:t,mt):mt;function yt(e){const t=e.ref;return it(t)?t.files:at(t)?Tt(e.refs).value:Rt(t)?[...t.selectedOptions].map(({value:r})=>r):Te(t)?Ct(e.refs).value:Ot(k(t.value)?e.ref.value:t.value,e)}var er=(e,t,r,s)=>{const i={};for(const n of e){const c=g(t,n);c&&M(i,n,c._f)}return{criteriaMode:r,names:[...e],fields:i,shouldUseNativeValidation:s}},$e=e=>e instanceof RegExp,Re=e=>k(e)?e:$e(e)?e.source:q(e)?$e(e.value)?e.value.source:e.value:e,gt=e=>({isOnSubmit:!e||e===ie.onSubmit,isOnBlur:e===ie.onBlur,isOnChange:e===ie.onChange,isOnAll:e===ie.all,isOnTouch:e===ie.onTouched});const pt="AsyncFunction";var tr=e=>!!e&&!!e.validate&&!!(se(e.validate)&&e.validate.constructor.name===pt||q(e.validate)&&Object.values(e.validate).find(t=>t.constructor.name===pt)),rr=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),bt=(e,t,r)=>!r&&(t.watchAll||t.watch.has(e)||[...t.watch].some(s=>e.startsWith(s)&&/^\.\w+/.test(e.slice(s.length))));const Oe=(e,t,r,s)=>{for(const i of r||Object.keys(e)){const n=g(e,i);if(n){const{_f:c,...h}=n;if(c){if(c.refs&&c.refs[0]&&t(c.refs[0],i)&&!s)return!0;if(c.ref&&t(c.ref,c.name)&&!s)return!0;if(Oe(h,t))break}else if(q(h)&&Oe(h,t))break}}};function wt(e,t,r){const s=g(e,r);if(s||je(r))return{error:s,name:r};const i=r.split(".");for(;i.length;){const n=i.join("."),c=g(t,n),h=g(e,n);if(c&&!Array.isArray(c)&&r!==n)return{name:r};if(h&&h.type)return{name:n,error:h};if(h&&h.root&&h.root.type)return{name:`${n}.root`,error:h.root};i.pop()}return{name:r}}var sr=(e,t,r,s)=>{r(e);const{name:i,...n}=e;return J(n)||Object.keys(n).length>=Object.keys(t).length||Object.keys(n).find(c=>t[c]===(!s||ie.all))},ir=(e,t,r)=>!e||!t||e===t||Ce(e).some(s=>s&&(r?s===t:s.startsWith(t)||t.startsWith(s))),ar=(e,t,r,s,i)=>i.isOnAll?!1:!r&&i.isOnTouch?!(t||e):(r?s.isOnBlur:i.isOnBlur)?!e:(r?s.isOnChange:i.isOnChange)?e:!0,nr=(e,t)=>!rt(g(e,t)).length&&B(e,t),ur=(e,t,r)=>{const s=Ce(g(e,r));return M(s,"root",t[r]),M(e,r,s),e};function Et(e,t,r="validate"){if(ee(e)||Array.isArray(e)&&e.every(ee)||ue(e)&&!e)return{type:r,message:ee(e)?e:"",ref:t}}var be=e=>q(e)&&!$e(e)?e:{value:e,message:""},vt=async(e,t,r,s,i,n)=>{const{ref:c,refs:h,required:w,maxLength:v,minLength:C,min:D,max:x,pattern:E,validate:y,name:P,valueAsNumber:Y,mount:Z}=e._f,_=g(r,P);if(!Z||t.has(P))return{};const te=h?h[0]:c,re=F=>{i&&te.reportValidity&&(te.setCustomValidity(ue(F)?"":F||""),te.reportValidity())},R={},ce=at(c),ye=Te(c),ae=ce||ye,de=(Y||it(c))&&k(c.value)&&k(_)||Pe(c)&&c.value===""||_===""||Array.isArray(_)&&!_.length,K=Jt.bind(null,P,s,R),oe=(F,S,L,O=le.maxLength,H=le.minLength)=>{const z=F?S:L;R[P]={type:F?O:H,message:z,ref:c,...K(F?O:H,z)}};if(n?!Array.isArray(_)||!_.length:w&&(!ae&&(de||X(_))||ue(_)&&!_||ye&&!Ct(h).isValid||ce&&!Tt(h).isValid)){const{value:F,message:S}=ee(w)?{value:!!w,message:w}:be(w);if(F&&(R[P]={type:le.required,message:S,ref:te,...K(le.required,S)},!s))return re(S),R}if(!de&&(!X(D)||!X(x))){let F,S;const L=be(x),O=be(D);if(!X(_)&&!isNaN(_)){const H=c.valueAsNumber||_&&+_;X(L.value)||(F=H>L.value),X(O.value)||(S=H<O.value)}else{const H=c.valueAsDate||new Date(_),z=G=>new Date(new Date().toDateString()+" "+G),ne=c.type=="time",fe=c.type=="week";ee(L.value)&&_&&(F=ne?z(_)>z(L.value):fe?_>L.value:H>new Date(L.value)),ee(O.value)&&_&&(S=ne?z(_)<z(O.value):fe?_<O.value:H<new Date(O.value))}if((F||S)&&(oe(!!F,L.message,O.message,le.max,le.min),!s))return re(R[P].message),R}if((v||C)&&!de&&(ee(_)||n&&Array.isArray(_))){const F=be(v),S=be(C),L=!X(F.value)&&_.length>+F.value,O=!X(S.value)&&_.length<+S.value;if((L||O)&&(oe(L,F.message,S.message),!s))return re(R[P].message),R}if(E&&!de&&ee(_)){const{value:F,message:S}=be(E);if($e(F)&&!_.match(F)&&(R[P]={type:le.pattern,message:S,ref:c,...K(le.pattern,S)},!s))return re(S),R}if(y){if(se(y)){const F=await y(_,r),S=Et(F,te);if(S&&(R[P]={...S,...K(le.validate,S.message)},!s))return re(S.message),R}else if(q(y)){let F={};for(const S in y){if(!J(F)&&!s)break;const L=Et(await y[S](_,r),te,S);L&&(F={...L,...K(S,L.message)},re(L.message),s&&(R[P]=F))}if(!J(F)&&(R[P]={ref:te,...F},!s))return R}}return re(!0),R};const or={mode:ie.onSubmit,reValidateMode:ie.onChange,shouldFocusError:!0};function lr(e={}){let t={...or,...e},r={submitCount:0,isDirty:!1,isReady:!1,isLoading:se(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},s={},i=q(t.defaultValues)||q(t.values)?j(t.defaultValues||t.values)||{}:{},n=t.shouldUnregister?{}:j(i),c={action:!1,mount:!1,watch:!1,keepIsValid:!1},h={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set},w,v=0;const C={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},D={...C};let x={...D};const E={array:dt(),state:dt()},y=t.criteriaMode===ie.all,P=a=>u=>{clearTimeout(v),v=setTimeout(a,u)},Y=async a=>{if(!c.keepIsValid&&!t.disabled&&(D.isValid||x.isValid||a)){let u;t.resolver?(u=J((await ae()).errors),Z()):u=await K(s,!0),u!==r.isValid&&E.state.next({isValid:u})}},Z=(a,u)=>{!t.disabled&&(D.isValidating||D.validatingFields||x.isValidating||x.validatingFields)&&((a||Array.from(h.mount)).forEach(o=>{o&&(u?M(r.validatingFields,o,u):B(r.validatingFields,o))}),E.state.next({validatingFields:r.validatingFields,isValidating:!J(r.validatingFields)}))},_=(a,u=[],o,d,f=!0,l=!0)=>{if(d&&o&&!t.disabled){if(c.action=!0,l&&Array.isArray(g(s,a))){const m=o(g(s,a),d.argA,d.argB);f&&M(s,a,m)}if(l&&Array.isArray(g(r.errors,a))){const m=o(g(r.errors,a),d.argA,d.argB);f&&M(r.errors,a,m),nr(r.errors,a)}if((D.touchedFields||x.touchedFields)&&l&&Array.isArray(g(r.touchedFields,a))){const m=o(g(r.touchedFields,a),d.argA,d.argB);f&&M(r.touchedFields,a,m)}(D.dirtyFields||x.dirtyFields)&&(r.dirtyFields=we(i,n)),E.state.next({name:a,isDirty:F(a,u),dirtyFields:r.dirtyFields,errors:r.errors,isValid:r.isValid})}else M(n,a,u)},te=(a,u)=>{M(r.errors,a,u),E.state.next({errors:r.errors})},re=a=>{r.errors=a,E.state.next({errors:r.errors,isValid:!1})},R=(a,u,o,d)=>{const f=g(s,a);if(f){const l=g(n,a,k(o)?g(i,a):o);k(l)||d&&d.defaultChecked||u?M(n,a,u?l:yt(f._f)):O(a,l),c.mount&&!c.action&&Y()}},ce=(a,u,o,d,f)=>{let l=!1,m=!1;const p={name:a};if(!t.disabled){if(!o||d){(D.isDirty||x.isDirty)&&(m=r.isDirty,r.isDirty=p.isDirty=F(),l=m!==p.isDirty);const b=he(g(i,a),u);m=!!g(r.dirtyFields,a),b?B(r.dirtyFields,a):M(r.dirtyFields,a,!0),p.dirtyFields=r.dirtyFields,l=l||(D.dirtyFields||x.dirtyFields)&&m!==!b}if(o){const b=g(r.touchedFields,a);b||(M(r.touchedFields,a,o),p.touchedFields=r.touchedFields,l=l||(D.touchedFields||x.touchedFields)&&b!==o)}l&&f&&E.state.next(p)}return l?p:{}},ye=(a,u,o,d)=>{const f=g(r.errors,a),l=(D.isValid||x.isValid)&&ue(u)&&r.isValid!==u;if(t.delayError&&o?(w=P(()=>te(a,o)),w(t.delayError)):(clearTimeout(v),w=null,o?M(r.errors,a,o):B(r.errors,a)),(o?!he(f,o):f)||!J(d)||l){const m={...d,...l&&ue(u)?{isValid:u}:{},errors:r.errors,name:a};r={...r,...m},E.state.next(m)}},ae=async a=>(Z(a,!0),await t.resolver(n,t.context,er(a||h.mount,s,t.criteriaMode,t.shouldUseNativeValidation))),de=async a=>{const{errors:u}=await ae(a);if(Z(a),a)for(const o of a){const d=g(u,o);d?M(r.errors,o,d):B(r.errors,o)}else r.errors=u;return u},K=async(a,u,o={valid:!0})=>{for(const d in a){const f=a[d];if(f){const{_f:l,...m}=f;if(l){const p=h.array.has(l.name),b=f._f&&tr(f._f);b&&D.validatingFields&&Z([l.name],!0);const N=await vt(f,h.disabled,n,y,t.shouldUseNativeValidation&&!u,p);if(b&&D.validatingFields&&Z([l.name]),N[l.name]&&(o.valid=!1,u||e.shouldUseNativeValidation))break;!u&&(g(N,l.name)?p?ur(r.errors,N,l.name):M(r.errors,l.name,N[l.name]):B(r.errors,l.name))}!J(m)&&await K(m,u,o)}}return o.valid},oe=()=>{for(const a of h.unMount){const u=g(s,a);u&&(u._f.refs?u._f.refs.every(o=>!Qe(o)):!Qe(u._f.ref))&&Ae(a)}h.unMount=new Set},F=(a,u)=>!t.disabled&&(a&&u&&M(n,a,u),!he(Me(),i)),S=(a,u,o)=>zt(a,h,{...c.mount?n:k(u)?i:ee(a)?{[a]:u}:u},o,u),L=a=>rt(g(c.mount?n:i,a,t.shouldUnregister?g(i,a,[]):[])),O=(a,u,o={})=>{const d=g(s,a);let f=u;if(d){const l=d._f;l&&(!l.disabled&&M(n,a,Ot(u,l)),f=Pe(l.ref)&&X(u)?"":u,Rt(l.ref)?[...l.ref.options].forEach(m=>m.selected=f.includes(m.value)):l.refs?Te(l.ref)?l.refs.forEach(m=>{(!m.defaultChecked||!m.disabled)&&(Array.isArray(f)?m.checked=!!f.find(p=>p===m.value):m.checked=f===m.value||!!f)}):l.refs.forEach(m=>m.checked=m.value===f):it(l.ref)?l.ref.value="":(l.ref.value=f,l.ref.type||E.state.next({name:a,values:j(n)})))}(o.shouldDirty||o.shouldTouch)&&ce(a,f,o.shouldTouch,o.shouldDirty,!0),o.shouldValidate&&G(a)},H=(a,u,o)=>{for(const d in u){if(!u.hasOwnProperty(d))return;const f=u[d],l=a+"."+d,m=g(s,l);(h.array.has(a)||q(f)||m&&!m._f)&&!ge(f)?H(l,f,o):O(l,f,o)}},z=(a,u,o={})=>{const d=g(s,a),f=h.array.has(a),l=j(u);M(n,a,l),f?(E.array.next({name:a,values:j(n)}),(D.isDirty||D.dirtyFields||x.isDirty||x.dirtyFields)&&o.shouldDirty&&E.state.next({name:a,dirtyFields:we(i,n),isDirty:F(a,l)})):d&&!d._f&&!X(l)?H(a,l,o):O(a,l,o),bt(a,h)?E.state.next({...r,name:a,values:j(n)}):E.state.next({name:c.mount?a:void 0,values:j(n)})},ne=async a=>{c.mount=!0;const u=a.target;let o=u.name,d=!0;const f=g(s,o),l=b=>{d=Number.isNaN(b)||ge(b)&&isNaN(b.getTime())||he(b,g(n,o,b))},m=gt(t.mode),p=gt(t.reValidateMode);if(f){let b,N;const I=u.type?yt(f._f):Pt(a),T=a.type===ct.BLUR||a.type===ct.FOCUS_OUT,$=!rr(f._f)&&!t.resolver&&!g(r.errors,o)&&!f._f.deps||ar(T,g(r.touchedFields,o),r.isSubmitted,p,m),W=bt(o,h,T);M(n,o,I),T?(!u||!u.readOnly)&&(f._f.onBlur&&f._f.onBlur(a),w&&w(0)):f._f.onChange&&f._f.onChange(a);const U=ce(o,I,T),Q=!J(U)||W;if(!T&&E.state.next({name:o,type:a.type,values:j(n)}),$)return(D.isValid||x.isValid)&&(t.mode==="onBlur"?T&&Y():T||Y()),Q&&E.state.next({name:o,...W?{}:U});if(!T&&W&&E.state.next({...r}),t.resolver){const{errors:De}=await ae([o]);if(Z([o]),l(I),d){const ut=wt(r.errors,s,o),Je=wt(De,s,ut.name||o);b=Je.error,o=Je.name,N=J(De)}}else Z([o],!0),b=(await vt(f,h.disabled,n,y,t.shouldUseNativeValidation))[o],Z([o]),l(I),d&&(b?N=!1:(D.isValid||x.isValid)&&(N=await K(s,!0)));d&&(f._f.deps&&(!Array.isArray(f._f.deps)||f._f.deps.length>0)&&G(f._f.deps),ye(o,N,b,U))}},fe=(a,u)=>{if(g(r.errors,u)&&a.focus)return a.focus(),1},G=async(a,u={})=>{let o,d;const f=Ce(a);if(t.resolver){const l=await de(k(a)?a:f);o=J(l),d=a?!f.some(m=>g(l,m)):o}else a?(d=(await Promise.all(f.map(async l=>{const m=g(s,l);return await K(m&&m._f?{[l]:m}:m)}))).every(Boolean),!(!d&&!r.isValid)&&Y()):d=o=await K(s);return E.state.next({...!ee(a)||(D.isValid||x.isValid)&&o!==r.isValid?{}:{name:a},...t.resolver||!a?{isValid:o}:{},errors:r.errors}),u.shouldFocus&&!d&&Oe(s,fe,a?f:h.mount),d},Me=(a,u)=>{let o={...c.mount?n:i};return u&&(o=Dt(u.dirtyFields?r.dirtyFields:r.touchedFields,o)),k(a)?o:ee(a)?g(o,a):a.map(d=>g(o,d))},Le=(a,u)=>({invalid:!!g((u||r).errors,a),isDirty:!!g((u||r).dirtyFields,a),error:g((u||r).errors,a),isValidating:!!g(r.validatingFields,a),isTouched:!!g((u||r).touchedFields,a)}),We=a=>{a&&Ce(a).forEach(u=>B(r.errors,u)),E.state.next({errors:a?r.errors:{}})},A=(a,u,o)=>{const d=(g(s,a,{_f:{}})._f||{}).ref,f=g(r.errors,a)||{},{ref:l,message:m,type:p,...b}=f;M(r.errors,a,{...b,...u,ref:d}),E.state.next({name:a,errors:r.errors,isValid:!1}),o&&o.shouldFocus&&d&&d.focus&&d.focus()},Ve=(a,u)=>se(a)?E.state.subscribe({next:o=>"values"in o&&a(S(void 0,u),o)}):S(a,u,!0),Fe=a=>E.state.subscribe({next:u=>{ir(a.name,u.name,a.exact)&&sr(u,a.formState||D,_e,a.reRenderRoot)&&a.callback({values:{...n},...r,...u,defaultValues:i})}}).unsubscribe,He=a=>(c.mount=!0,x={...x,...a.formState},Fe({...a,formState:{...C,...a.formState}})),Ae=(a,u={})=>{for(const o of a?Ce(a):h.mount)h.mount.delete(o),h.array.delete(o),u.keepValue||(B(s,o),B(n,o)),!u.keepError&&B(r.errors,o),!u.keepDirty&&B(r.dirtyFields,o),!u.keepTouched&&B(r.touchedFields,o),!u.keepIsValidating&&B(r.validatingFields,o),!t.shouldUnregister&&!u.keepDefaultValue&&B(i,o);E.state.next({values:j(n)}),E.state.next({...r,...u.keepDirty?{isDirty:F()}:{}}),!u.keepIsValid&&Y()},Ie=({disabled:a,name:u})=>{(ue(a)&&c.mount||a||h.disabled.has(u))&&(a?h.disabled.add(u):h.disabled.delete(u))},xe=(a,u={})=>{let o=g(s,a);const d=ue(u.disabled)||ue(t.disabled);return M(s,a,{...o||{},_f:{...o&&o._f?o._f:{ref:{name:a}},name:a,mount:!0,...u}}),h.mount.add(a),o?Ie({disabled:ue(u.disabled)?u.disabled:t.disabled,name:a}):R(a,!0,u.value),{...d?{disabled:u.disabled||t.disabled}:{},...t.progressive?{required:!!u.required,min:Re(u.min),max:Re(u.max),minLength:Re(u.minLength),maxLength:Re(u.maxLength),pattern:Re(u.pattern)}:{},name:a,onChange:ne,onBlur:ne,ref:f=>{if(f){xe(a,u),o=g(s,a);const l=k(f.value)&&f.querySelectorAll&&f.querySelectorAll("input,select,textarea")[0]||f,m=Gt(l),p=o._f.refs||[];if(m?p.find(b=>b===l):l===o._f.ref)return;M(s,a,{_f:{...o._f,...m?{refs:[...p.filter(Qe),l,...Array.isArray(g(i,a))?[{}]:[]],ref:{type:l.type,name:a}}:{ref:l}}}),R(a,!1,void 0,l)}else o=g(s,a,{}),o._f&&(o._f.mount=!1),(t.shouldUnregister||u.shouldUnregister)&&!(jt(h.array,a)&&c.action)&&h.unMount.add(a)}}},Se=()=>t.shouldFocusError&&Oe(s,fe,h.mount),Ye=a=>{ue(a)&&(E.state.next({disabled:a}),Oe(s,(u,o)=>{const d=g(s,o);d&&(u.disabled=d._f.disabled||a,Array.isArray(d._f.refs)&&d._f.refs.forEach(f=>{f.disabled=d._f.disabled||a}))},0,!1))},ke=(a,u)=>async o=>{let d;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let f=j(n);if(E.state.next({isSubmitting:!0}),t.resolver){const{errors:l,values:m}=await ae();Z(),r.errors=l,f=j(m)}else await K(s);if(h.disabled.size)for(const l of h.disabled)B(f,l);if(B(r.errors,"root"),J(r.errors)){E.state.next({errors:{}});try{await a(f,o)}catch(l){d=l}}else u&&await u({...r.errors},o),Se(),setTimeout(Se);if(E.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:J(r.errors)&&!d,submitCount:r.submitCount+1,errors:r.errors}),d)throw d},Ke=(a,u={})=>{g(s,a)&&(k(u.defaultValue)?z(a,j(g(i,a))):(z(a,u.defaultValue),M(i,a,j(u.defaultValue))),u.keepTouched||B(r.touchedFields,a),u.keepDirty||(B(r.dirtyFields,a),r.isDirty=u.defaultValue?F(a,j(g(i,a))):F()),u.keepError||(B(r.errors,a),D.isValid&&Y()),E.state.next({...r}))},Ue=(a,u={})=>{const o=a?j(a):i,d=j(o),f=J(a),l=f?i:d;if(u.keepDefaultValues||(i=o),!u.keepValues){if(u.keepDirtyValues){const m=new Set([...h.mount,...Object.keys(we(i,n))]);for(const p of Array.from(m)){const b=g(r.dirtyFields,p),N=g(n,p),I=g(l,p);b&&!k(N)?M(l,p,N):!b&&!k(I)&&z(p,I)}}else{if(tt&&k(a))for(const m of h.mount){const p=g(s,m);if(p&&p._f){const b=Array.isArray(p._f.refs)?p._f.refs[0]:p._f.ref;if(Pe(b)){const N=b.closest("form");if(N){N.reset();break}}}}if(u.keepFieldsRef)for(const m of h.mount)z(m,g(l,m));else s={}}n=t.shouldUnregister?u.keepDefaultValues?j(i):{}:j(l),E.array.next({values:{...l}}),E.state.next({values:{...l}})}h={mount:u.keepDirtyValues?h.mount:new Set,unMount:new Set,array:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:""},c.mount=!D.isValid||!!u.keepIsValid||!!u.keepDirtyValues||!t.shouldUnregister&&!J(l),c.watch=!!t.shouldUnregister,c.keepIsValid=!!u.keepIsValid,c.action=!1,u.keepErrors||(r.errors={}),E.state.next({submitCount:u.keepSubmitCount?r.submitCount:0,isDirty:f?!1:u.keepDirty?r.isDirty:!!(u.keepDefaultValues&&!he(a,i)),isSubmitted:u.keepIsSubmitted?r.isSubmitted:!1,dirtyFields:f?{}:u.keepDirtyValues?u.keepDefaultValues&&n?we(i,n):r.dirtyFields:u.keepDefaultValues&&a?we(i,a):u.keepDirty?r.dirtyFields:{},touchedFields:u.keepTouched?r.touchedFields:{},errors:u.keepErrors?r.errors:{},isSubmitSuccessful:u.keepIsSubmitSuccessful?r.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},Be=(a,u)=>Ue(se(a)?a(n):a,{...t.resetOptions,...u}),ze=(a,u={})=>{const o=g(s,a),d=o&&o._f;if(d){const f=d.refs?d.refs[0]:d.ref;f.focus&&setTimeout(()=>{f.focus(),u.shouldSelect&&se(f.select)&&f.select()})}},_e=a=>{r={...r,...a}},qe={control:{register:xe,unregister:Ae,getFieldState:Le,handleSubmit:ke,setError:A,_subscribe:Fe,_runSchema:ae,_updateIsValidating:Z,_focusError:Se,_getWatch:S,_getDirty:F,_setValid:Y,_setFieldArray:_,_setDisabledField:Ie,_setErrors:re,_getFieldArray:L,_reset:Ue,_resetDefaultValues:()=>se(t.defaultValues)&&t.defaultValues().then(a=>{Be(a,t.resetOptions),E.state.next({isLoading:!1})}),_removeUnmounted:oe,_disableForm:Ye,_subjects:E,_proxyFormState:D,get _fields(){return s},get _formValues(){return n},get _state(){return c},set _state(a){c=a},get _defaultValues(){return i},get _names(){return h},set _names(a){h=a},get _formState(){return r},get _options(){return t},set _options(a){t={...t,...a}}},subscribe:He,trigger:G,register:xe,handleSubmit:ke,watch:Ve,setValue:z,getValues:Me,reset:Be,resetField:Ke,clearErrors:We,unregister:Ae,setError:A,setFocus:ze,getFieldState:Le};return{...qe,formControl:qe}}function cr(e={}){const t=V.useRef(void 0),r=V.useRef(void 0),[s,i]=V.useState({isDirty:!1,isValidating:!1,isLoading:se(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,isReady:!1,defaultValues:se(e.defaultValues)?void 0:e.defaultValues});if(!t.current)if(e.formControl)t.current={...e.formControl,formState:s},e.defaultValues&&!se(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{const{formControl:c,...h}=lr(e);t.current={...h,formState:s}}const n=t.current.control;return n._options=e,Kt(()=>{const c=n._subscribe({formState:n._proxyFormState,callback:()=>i({...n._formState}),reRenderRoot:!0});return i(h=>({...h,isReady:!0})),n._formState.isReady=!0,c},[n]),V.useEffect(()=>n._disableForm(e.disabled),[n,e.disabled]),V.useEffect(()=>{e.mode&&(n._options.mode=e.mode),e.reValidateMode&&(n._options.reValidateMode=e.reValidateMode)},[n,e.mode,e.reValidateMode]),V.useEffect(()=>{e.errors&&(n._setErrors(e.errors),n._focusError())},[n,e.errors]),V.useEffect(()=>{e.shouldUnregister&&n._subjects.state.next({values:n._getWatch()})},[n,e.shouldUnregister]),V.useEffect(()=>{if(n._proxyFormState.isDirty){const c=n._getDirty();c!==s.isDirty&&n._subjects.state.next({isDirty:c})}},[n,s.isDirty]),V.useEffect(()=>{var c;e.values&&!he(e.values,r.current)?(n._reset(e.values,{keepFieldsRef:!0,...n._options.resetOptions}),!((c=n._options.resetOptions)===null||c===void 0)&&c.keepIsValid||n._setValid(),r.current=e.values,i(h=>({...h}))):n._resetDefaultValues()},[n,e.values]),V.useEffect(()=>{n._state.mount||(n._setValid(),n._state.mount=!0),n._state.watch&&(n._state.watch=!1,n._subjects.state.next({...n._formState})),n._removeUnmounted()}),t.current.formState=Yt(s,n),t.current}function dr(){const e=new Date;return{NOW:e,TODAY:new Date(e.getFullYear(),e.getMonth(),e.getDate()),CURRENT_USER:{EmpId:1,Email:"user@example.com",FirstName:"John",LastName:"Doe",Role:"User"},CURRENT_USER_ID:1}}const fr={CONCAT:(...e)=>e.map(t=>String(t||"")).join(""),TRIM:e=>String(e||"").trim(),LENGTH:e=>String(e||"").length,UPPER:e=>String(e||"").toUpperCase(),LOWER:e=>String(e||"").toLowerCase(),SUBSTRING:(e,t,r)=>{const s=String(e||"");return r!==void 0?s.substring(t,t+r):s.substring(t)},CONTAINS:(e,t)=>String(e||"").includes(String(t||"")),YEAR:e=>new Date(e).getFullYear(),MONTH:e=>new Date(e).getMonth()+1,DAY:e=>new Date(e).getDate(),DATE_DIFF:(e,t)=>{const r=new Date(e),s=new Date(t),i=Math.abs(r.getTime()-s.getTime());return Math.ceil(i/(1e3*60*60*24))},ADD_DAYS:(e,t)=>{const r=new Date(e);return r.setDate(r.getDate()+t),r},ADD_MONTHS:(e,t)=>{const r=new Date(e);return r.setMonth(r.getMonth()+t),r},SUM:(...e)=>e.reduce((t,r)=>t+(Number(r)||0),0),AVG:(...e)=>{const t=e.filter(r=>!isNaN(Number(r)));return t.length>0?t.reduce((r,s)=>r+Number(s),0)/t.length:0},MIN:(...e)=>Math.min(...e.map(t=>Number(t)||0)),MAX:(...e)=>Math.max(...e.map(t=>Number(t)||0)),ROUND:e=>Math.round(Number(e)||0),FLOOR:e=>Math.floor(Number(e)||0),CEIL:e=>Math.ceil(Number(e)||0),ABS:e=>Math.abs(Number(e)||0),IF:(e,t,r)=>e?t:r,IS_NULL:e=>e==null,IS_EMPTY:e=>!e||String(e).trim()==="",IS_NUMBER:e=>!isNaN(Number(e))&&e!==""&&e!==null&&e!==void 0,IS_DATE:e=>{const t=new Date(e);return!isNaN(t.getTime())},AUTO_NUMBER:()=>Math.floor(Math.random()*1e4)+1e3,UUID:()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=Math.random()*16|0;return(e=="x"?t:t&3|8).toString(16)}),ARRAY_LENGTH:e=>Array.isArray(e)?e.length:0,ARRAY_CONTAINS:(e,t)=>Array.isArray(e)?e.includes(t):!1,ARRAY_JOIN:(e,t=",")=>Array.isArray(e)?e.join(t):""};function me(e,t){var r;switch(e.Type){case"Literal":return e.Value;case"SystemIdentifier":if(e.Property){const v=t.systemValues[e.Name];return Xe(v,e.Property.Name)}return t.systemValues[e.Name];case"Identifier":if(e.Property){const v=Vt(e,t);return Xe(v,e.Property.Name)}return Vt(e,t);case"MemberExpression":if(!e.Arguments||e.Arguments.length===0)throw new Error("MemberExpression requires Arguments array");const s=me(e.Arguments[0],t),i=(r=e.Arguments[0].Property)==null?void 0:r.Name;return i?Xe(s,i):s;case"BinaryExpression":if(!e.Arguments||e.Arguments.length!==2)throw new Error("BinaryExpression requires exactly 2 arguments");const n=me(e.Arguments[0],t),c=me(e.Arguments[1],t);return hr(e.Operator,n,c);case"LogicalExpression":if(!e.Arguments||e.Arguments.length<2)throw new Error("LogicalExpression requires at least 2 arguments");return mr(e.Operator,e.Arguments,t);case"CallExpression":if(!e.Callee)throw new Error("CallExpression requires Callee");const h=fr[e.Callee];if(!h)throw new Error(`Unknown function: ${e.Callee}`);const w=(e.Arguments||[]).map(v=>me(v,t));return h(...w);case"AssignmentExpression":if(!e.Arguments||e.Arguments.length!==1)throw new Error("AssignmentExpression requires exactly 1 argument");return me(e.Arguments[0],t);default:throw new Error(`Unknown expression type: ${e.Type}`)}}function Vt(e,t){const{Name:r,Source:s}=e;if(!r)throw new Error("Identifier requires Name");switch(s){case"Input":default:return t.formValues[r]}}function Xe(e,t){if(!(!e||typeof e!="object"))return e[t]}function hr(e,t,r){const s=i=>i==null?0:typeof i=="number"?i:typeof i=="object"&&i!==null&&"value"in i?Number(i.value)||0:Number(i)||0;switch(e){case"==":return t==r;case"!=":return t!=r;case">":return s(t)>s(r);case"<":return s(t)<s(r);case">=":return s(t)>=s(r);case"<=":return s(t)<=s(r);case"+":return s(t)+s(r);case"-":return s(t)-s(r);case"*":return s(t)*s(r);case"/":const i=s(r);return i!==0?s(t)/i:0;default:throw new Error(`Unknown binary operator: ${e}`)}}function mr(e,t,r){switch(e){case"AND":return t.every(s=>!!me(s,r));case"OR":return t.some(s=>!!me(s,r));default:throw new Error(`Unknown logical operator: ${e}`)}}function Mt(e,t,r={}){const s={formValues:t,systemValues:dr(),referenceData:r};try{return me(e,s)}catch(i){return console.warn("Expression evaluation failed:",i),!1}}function Ft(e,t,r={}){const s=[];for(const i of e)try{Mt(i.Condition.ExpressionTree,t,r)||s.push({isValid:!1,message:i.Message,fieldName:i.Id})}catch(n){console.warn(`Cross-field validation rule ${i.Id} failed:`,n)}return s}function yr(e,t={},r={}){try{return Mt(e,t,r)}catch(s){return console.warn("Default value calculation failed:",s),null}}function At(e,t){var h,w,v;const r=((h=e.Expression)==null?void 0:h.toLowerCase())||"",s=((w=e.Name)==null?void 0:w.toLowerCase())||"",i=((v=e.Id)==null?void 0:v.toLowerCase())||"",n=t.toLowerCase();return s.includes("required")||i.includes("required")?!0:[`${n} != null`,`${n} != ''`,`trim(${n}) != ''`,`${n}!=null`,`${n}!=''`].some(C=>r.includes(C))}function gr(e){const t={...e};t.Rules||(t.Rules={Validation:{},Computation:{},BusinessLogic:{}}),t.Rules.Validation||(t.Rules.Validation={}),t.Rules.Computation||(t.Rules.Computation={}),t.Rules.BusinessLogic||(t.Rules.BusinessLogic={});const r={...t.Fields};return Object.entries(r).forEach(([s,i])=>{let n=i.Required||!1;if(i.Validation&&Array.isArray(i.Validation))if(i.Validation.length>0&&typeof i.Validation[0]=="object"){const c=[];i.Validation.forEach(h=>{t.Rules.Validation[h.Id]=h,c.push(h.Id),At(h,s)&&(n=!0)}),r[s]={...i,Validation:c,Required:n}}else i.Validation.forEach(h=>{var v;const w=(v=t.Rules.Validation)==null?void 0:v[h];w&&At(w,s)&&(n=!0)}),n&&!i.Required&&(r[s]={...i,Required:!0});if(i.Formula){const c=`RULE_COMPUTE_${s.toUpperCase()}`;t.Rules.Computation[c]={Id:c,Name:i.Formula.Id||`Compute ${s}`,Description:i.Formula.Description||`Computes value for ${s}`,Expression:i.Formula.Expression,ExpressionTree:i.Formula.ExpressionTree,ResultType:i.Type}}}),t.Fields=r,t}function pr(e){var r,s,i;const t={validation:{},computation:{},businessLogic:{}};return(r=e.Rules)!=null&&r.Validation&&(t.validation={...e.Rules.Validation}),(s=e.Rules)!=null&&s.Computation&&(t.computation={...e.Rules.Computation}),(i=e.Rules)!=null&&i.BusinessLogic&&(t.businessLogic={...e.Rules.BusinessLogic}),t}function br(e){var s;const t={};if(!((s=e.Rules)!=null&&s.Computation))return t;const r=Object.entries(e.Fields).filter(([i,n])=>n.Computed).map(([i])=>i);return r.sort((i,n)=>n.length-i.length),Object.entries(e.Rules.Computation).forEach(([i,n])=>{const c=i.toUpperCase().replace(/[_-]/g,"");for(const w of r){const v=w.toUpperCase().replace(/[_-]/g,"");if(c.includes(v)){t[i]=w;return}}const h=`${n.Name||""} ${n.Description||""}`.toLowerCase();for(const w of r)if(h.includes(w.toLowerCase())){t[i]=w;return}}),t}function wr(e,t){const r={};Object.keys(e.Fields).forEach(i=>{r[i]={validation:[],computation:[],businessLogic:[]}}),Object.entries(e.Fields).forEach(([i,n])=>{n.Validation&&Array.isArray(n.Validation)&&n.Validation.forEach(h=>{t.validation[h]?r[i].validation.push(h):t.computation[h]?r[i].computation.push(h):t.businessLogic[h]&&r[i].businessLogic.push(h)}),n.Formula&&Object.entries(t.computation).forEach(([c,h])=>{var w;h.Expression===((w=n.Formula)==null?void 0:w.Expression)&&(r[i].computation.includes(c)||r[i].computation.push(c))})});const s=br(e);return Object.entries(s).forEach(([i,n])=>{r[n]&&!r[n].computation.includes(i)&&r[n].computation.push(i)}),r}function Er(e,t){const r={},s={editable:!0,readable:!0,hidden:!1};return Object.keys(e.Fields).forEach(i=>{var w,v,C,D,x,E;if(!t||!((w=e.RolePermission)!=null&&w[t])){r[i]=s;return}const n=e.RolePermission[t],c=((v=n.Editable)==null?void 0:v.includes(i))||((C=n.Editable)==null?void 0:C.includes("*"))||!1,h=((D=n.ReadOnly)==null?void 0:D.includes(i))||((x=n.ReadOnly)==null?void 0:x.includes("*"))||c;r[i]={editable:c&&!((E=n.ReadOnly)!=null&&E.includes(i)),readable:h,hidden:!h}}),r}function vr(e,t){switch(e){case"String":return t.toLowerCase().includes("email")?"email":t.toLowerCase().includes("password")?"password":"text";case"Number":return"number";case"Boolean":return"checkbox";case"Date":return"date";case"DateTime":return"datetime-local";case"Reference":return"reference";case"Array":case"Object":return"textarea";default:return"text"}}function Lt(e){return e.replace(/([A-Z])/g," $1").replace(/^./,t=>t.toUpperCase()).replace(/_/g," ").trim()}function Vr(e,t,r){const s={};switch(t.Required&&(s.required={value:!0,message:`${Lt(e)} is required`}),t.Type){case"Number":s.valueAsNumber=!0;break;case"Date":case"DateTime":s.valueAsDate=!0;break}return t.Validation&&t.Validation.length>0&&(s.validate=()=>!0),s}function Fr(e){return e.Values?e.Values.Mode==="Static"&&e.Values.Items?e.Values.Items.map(t=>({value:t.Value,label:t.Label})):e.Values.Mode==="Dynamic"&&e.Values.Reference?[]:[]:[]}function Ar(e,t={}){if(!e.DefaultValue)switch(e.Type){case"Boolean":return!1;case"Number":return 0;case"String":return"";case"Array":return[];case"Object":return{};default:return}return yr(e.DefaultValue.ExpressionTree,t)}function xr(e,t,r,s={},i,n){const c={editable:!0,readable:!0,hidden:!1},w=n||{validation:[],computation:[],businessLogic:[]},v=t.Computed||!!t.Formula||w.computation.length>0,C=Vr(e,t);return v&&(C.disabled=!0),{name:e,type:vr(t.Type,e),label:t.Name||Lt(e),required:t.Required||!1,computed:v,defaultValue:Ar(t,s),options:Fr(t),validation:C,description:t.Description,_bdoField:t,permission:i||c,rules:w}}function Sr(e,t={},r){let s=e;s=gr(s);const i={},n=[],c=[],h=[],w=[],v=pr(s),C=wr(s,v),D=Er(s,r);for(const[x,E]of Object.entries(s.Fields)){if(x.startsWith("_")&&!["_id"].includes(x))continue;const y=D[x];if(y.hidden)continue;const P=xr(x,E,s.Fields,t,y,C[x]||{validation:[],computation:[],businessLogic:[]});i[x]=P,n.push(x),P.computed&&c.push(x),P.required&&h.push(x)}return{fields:i,fieldOrder:n,computedFields:c,requiredFields:h,crossFieldValidation:w,rules:v,fieldRules:C,rolePermissions:s.RolePermission}}async function _r(e){try{const r=(await qt.getBdoSchema(e)).BOBlob;if(!r||typeof r!="object"||!r.Fields)throw new Error(`Invalid BDO schema response for ${e}`);return r}catch(t){throw console.error(`Schema fetch error for ${e}:`,t),new Error(`Failed to load form schema: ${t instanceof Error?t.message:"Unknown error"}`)}}async function Dr(e,t=3){let r;for(let s=1;s<=t;s++)try{return await _r(e)}catch(i){if(r=Ne.toError(i),s<t){const n=Math.min(1e3*Math.pow(2,s-1),5e3);await new Promise(c=>setTimeout(c,n));continue}}throw r}async function Rr(e,t){try{return await Ee.api(e).get(t)}catch(r){throw console.error(`Record fetch error for ${e}/${t}:`,r),new Error(`Failed to load record: ${r instanceof Error?r.message:"Unknown error"}`)}}async function Nr(e,t,r,s){try{let i;if(t==="create")return i=await Ee.api(e).create(r),{success:!0,data:i,recordId:i._id||s};if(t==="update"){if(!s)throw new Error("Record ID is required for update operations");return i=await Ee.api(e).update(s,r),{success:!0,data:i,recordId:i._id||s}}else throw new Error(`Unsupported operation: ${t}`)}catch(i){return console.error("Form submission error:",i),{success:!1,error:new Error(`Failed to ${t} record: ${i instanceof Error?i.message:"Unknown error"}`)}}}function Cr(e,t,r="create",s,i){const n={};return Object.keys(e).forEach(c=>{const h=c;let w=e[h];if(!t.includes(c)&&w!==void 0){if((i==null?void 0:i[c])==="Reference"&&w!==null&&(w=It(w)),r==="create"){n[h]=w;return}if(r==="update"){if(!s){n[h]=w;return}const v=s[h];JSON.stringify(w)!==JSON.stringify(v)&&(n[h]=w)}}}),n}function It(e){if(e==null||e==="")return null;if(typeof e=="object"&&e._id)return{...e};if(typeof e=="string"){try{const t=JSON.parse(e);if(typeof t=="object"&&t._id)return{...t}}catch{}return{_id:e}}return e}function Or(e){var t,r,s,i;return typeof e=="string"?e:e!=null&&e.message?e.message:(r=(t=e==null?void 0:e.response)==null?void 0:t.data)!=null&&r.message?e.response.data.message:(i=(s=e==null?void 0:e.response)==null?void 0:s.data)!=null&&i.error?e.response.data.error:"An unexpected error occurred"}function Tr(e){var t,r;return!navigator.onLine||(e==null?void 0:e.code)==="NETWORK_ERROR"||((t=e==null?void 0:e.message)==null?void 0:t.toLowerCase().includes("network"))||((r=e==null?void 0:e.message)==null?void 0:r.toLowerCase().includes("fetch"))}function Mr(e){var t,r,s;return(e==null?void 0:e.status)===400||((t=e==null?void 0:e.response)==null?void 0:t.status)===400||((r=e==null?void 0:e.message)==null?void 0:r.toLowerCase().includes("validation"))||((s=e==null?void 0:e.message)==null?void 0:s.toLowerCase().includes("invalid"))}const ve=new Map;function Lr(e,t,r=10){ve.set(e,{data:t,timestamp:Date.now(),ttl:r*60*1e3})}function Ir(e){const t=ve.get(e);return t?Date.now()-t.timestamp>t.ttl?(ve.delete(e),null):t.data:null}function kr(e){e?Array.from(ve.keys()).filter(r=>r.startsWith(e)).forEach(r=>ve.delete(r)):ve.clear()}async function Ur(e){const t=`schema:${e}`,r=Ir(t);if(r)return r;const s=await Dr(e);return Lr(t,s,30),s}class xt{constructor(t=1e3){pe(this,"cache",new Map);pe(this,"maxSize");this.maxSize=t}get(t){const r=this.cache.get(t);return r!==void 0&&(this.cache.delete(t),this.cache.set(t,r)),r}set(t,r){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){const s=this.cache.keys().next().value;this.cache.delete(s)}this.cache.set(t,r)}clear(){this.cache.clear()}}function Br(e){const t=new Set;function r(s){switch(s.Type){case"Identifier":s.Name&&!s.Name.startsWith("$")&&t.add(s.Name);break;case"MemberExpression":s.Arguments&&s.Arguments.forEach(r);break;case"CallExpression":case"BinaryExpression":case"LogicalExpression":s.Arguments&&s.Arguments.forEach(r);break}}return r(e),t}class qr{constructor(){pe(this,"resultCache",new xt(500));pe(this,"dependencyCache",new xt(200));pe(this,"compiledExpressions",new Map)}createCacheKey(t,r){const s=JSON.stringify(t),i=JSON.stringify(r);return`${s}:${i}`}getDependencies(t){const r=JSON.stringify(t);let s=this.dependencyCache.get(r);return s||(s=Br(t),this.dependencyCache.set(r,s)),s}getCachedResult(t,r,s){if(!s)return;const i=this.getDependencies(t);for(const c of i)if(r[c]!==s[c])return;const n=this.createCacheKey(t,r);return this.resultCache.get(n)}evaluate(t,r,s){const i=this.getCachedResult(t,r,s);if(i!==void 0)return i;const n=this.evaluateNode(t,r),c=this.createCacheKey(t,r);return this.resultCache.set(c,n),n}evaluateNode(t,r){switch(t.Type){case"Literal":return t.Value;case"Identifier":return this.getIdentifierValue(t,r);case"BinaryExpression":return this.evaluateBinaryExpression(t,r);case"LogicalExpression":return this.evaluateLogicalExpression(t,r);case"CallExpression":return this.evaluateCallExpression(t,r);case"MemberExpression":return this.evaluateMemberExpression(t,r);default:throw new Error(`Unsupported expression type: ${t.Type}`)}}getIdentifierValue(t,r){if(t.Name){if(t.Name==="NOW")return new Date;if(t.Name==="TODAY"){const s=new Date;return new Date(s.getFullYear(),s.getMonth(),s.getDate())}return t.Name==="CURRENT_USER_ID"?1:t.Name==="CURRENT_USER"?{EmpId:1,Email:"user@example.com",FirstName:"John",LastName:"Doe",Role:"User"}:r[t.Name]}}evaluateBinaryExpression(t,r){if(!t.Arguments||t.Arguments.length!==2)throw new Error("Binary expression requires exactly 2 arguments");const s=this.evaluateNode(t.Arguments[0],r),i=this.evaluateNode(t.Arguments[1],r);switch(t.Operator){case"==":return s==i;case"!=":return s!=i;case"===":return s===i;case"!==":return s!==i;case"<":return Number(s)<Number(i);case"<=":return Number(s)<=Number(i);case">":return Number(s)>Number(i);case">=":return Number(s)>=Number(i);case"+":return Number(s)+Number(i);case"-":return Number(s)-Number(i);case"*":return Number(s)*Number(i);case"/":return Number(s)/Number(i);case"%":return Number(s)%Number(i);default:throw new Error(`Unsupported binary operator: ${t.Operator}`)}}evaluateLogicalExpression(t,r){if(!t.Arguments||t.Arguments.length<2)throw new Error("Logical expression requires at least 2 arguments");switch(t.Operator){case"AND":for(const s of t.Arguments)if(!this.evaluateNode(s,r))return!1;return!0;case"OR":for(const s of t.Arguments)if(this.evaluateNode(s,r))return!0;return!1;default:throw new Error(`Unsupported logical operator: ${t.Operator}`)}}evaluateCallExpression(t,r){var i;if(!t.Callee)throw new Error("Call expression requires a function name");const s=((i=t.Arguments)==null?void 0:i.map(n=>this.evaluateNode(n,r)))||[];switch(t.Callee){case"CONCAT":return s.map(v=>String(v||"")).join("");case"TRIM":return String(s[0]||"").trim();case"LENGTH":return String(s[0]||"").length;case"UPPER":return String(s[0]||"").toUpperCase();case"LOWER":return String(s[0]||"").toLowerCase();case"CONTAINS":return String(s[0]||"").includes(String(s[1]||""));case"MATCHES":return new RegExp(String(s[1])).test(String(s[0]||""));case"SUM":return s.reduce((v,C)=>v+(Number(C)||0),0);case"AVG":const n=s.filter(v=>!isNaN(Number(v)));return n.length>0?n.reduce((v,C)=>v+Number(C),0)/n.length:0;case"MIN":return Math.min(...s.map(v=>Number(v)||0));case"MAX":return Math.max(...s.map(v=>Number(v)||0));case"ROUND":return Math.round(Number(s[0])||0);case"FLOOR":return Math.floor(Number(s[0])||0);case"CEIL":return Math.ceil(Number(s[0])||0);case"ABS":return Math.abs(Number(s[0])||0);case"YEAR":return new Date(s[0]).getFullYear();case"MONTH":return new Date(s[0]).getMonth()+1;case"DAY":return new Date(s[0]).getDate();case"DATE_DIFF":const c=new Date(s[0]),h=new Date(s[1]),w=Math.abs(c.getTime()-h.getTime());return Math.ceil(w/(1e3*60*60*24));case"IF":return s[0]?s[1]:s[2];case"AUTO_NUMBER":return Math.floor(Math.random()*1e4);default:throw new Error(`Unknown function: ${t.Callee}`)}}evaluateMemberExpression(t,r){var n;if(!t.Arguments||t.Arguments.length===0)throw new Error("Member expression requires arguments");const s=this.evaluateNode(t.Arguments[0],r),i=(n=t.Arguments[0].Property)==null?void 0:n.Name;return i&&s&&typeof s=="object"?s[i]:s}clearCache(){this.resultCache.clear(),this.dependencyCache.clear(),this.compiledExpressions.clear()}}const kt=new qr;function Pr(e,t,r,s,i){if(!r||r.length===0)return{isValid:!0};const n={...s,[e]:t};for(const c of r)try{if(!kt.evaluate(c.ExpressionTree,n,i))return{isValid:!1,message:c.Message||`Validation failed for ${c.Name}`,fieldName:e}}catch(h){console.warn(`Validation rule ${c.Id} failed to evaluate:`,h)}return{isValid:!0}}function St(e){return Array.from(kt.getDependencies(e))}function $r(e){const{source:t,operation:r,recordId:s,defaultValues:i={},mode:n="onBlur",enabled:c=!0,userRole:h,onSchemaError:w,skipSchemaFetch:v=!1,schema:C,interactionMode:D="interactive",enableDraftInUpdateMode:x=!1}=e,E=D==="interactive",[y,P]=V.useState(null),[Y,Z]=V.useState({}),[_,te]=V.useState(!1),[re]=V.useState({}),[R,ce]=V.useState(null),[ye,ae]=V.useState(!1),[de,K]=V.useState(null),oe=V.useRef(!1),F=V.useRef(null),S=V.useRef(null),L=V.useRef(!1),O=V.useRef(w);V.useEffect(()=>{O.current=w},[w]);const{data:H,isLoading:z,error:ne,refetch:fe}=lt.useQuery({queryKey:["form-schema",t],queryFn:()=>v?Promise.resolve(C||{}):Ur(t),enabled:c&&(!v||!!C),retry:3,staleTime:30*60*1e3,gcTime:60*60*1e3,throwOnError:!1}),{data:G,isLoading:Me,error:Le}=lt.useQuery({queryKey:["form-record",t,s],queryFn:()=>Rr(t,s),enabled:c&&r==="update"&&!!s,retry:3,staleTime:5*60*1e3,gcTime:15*60*1e3,throwOnError:!1}),We=V.useMemo(()=>{const d={...i};if(r==="update"&&G&&Object.assign(d,G),y)for(const[f,l]of Object.entries(y.fields))l.defaultValue!==void 0&&!(f in d)&&(d[f]=l.defaultValue);return d},[i,G,r,y]),A=cr({mode:n,defaultValues:i,values:r==="update"&&G?We:void 0});V.useEffect(()=>{var d;if(H)try{const f=Sr(H,{},h);P(f)}catch(f){console.error("Schema processing failed:",f),(d=O.current)==null||d.call(O,Ne.toError(f))}},[H,h]),V.useEffect(()=>{var d;ne&&((d=O.current)==null||d.call(O,ne))},[ne]),V.useEffect(()=>{if(!E||r!=="create"||!y||!c||R||L.current)return;L.current=!0;let d=!0;return(async()=>{ae(!0),K(null);try{const m=await Ee.api(t).draftInteraction({});if(!d)return;ce(m._id),m&&typeof m=="object"&&Object.entries(m).forEach(([p,b])=>{if(p==="_id")return;A.getValues(p)!==b&&A.setValue(p,b,{shouldDirty:!1,shouldValidate:!1})})}catch(l){if(!d)return;console.error("Failed to create initial draft:",l),K(Ne.toError(l)),L.current=!1}finally{d&&ae(!1)}})(),()=>{d=!1}},[E,r,y,c,R,t]);const Ve=V.useMemo(()=>{if(!y)return[];const d=new Set,f=new Set(y.computedFields);return Object.entries(y.fieldRules).forEach(([l,m])=>{m.computation.forEach(p=>{const b=y.rules.computation[p];b!=null&&b.ExpressionTree&&St(b.ExpressionTree).forEach(I=>{y.fields[I]&&I!==l&&!f.has(I)&&d.add(I)})})}),y.computedFields.forEach(l=>{const m=y.fields[l];m._bdoField.Formula&&St(m._bdoField.Formula.ExpressionTree).forEach(b=>{y.fields[b]&&b!==l&&!f.has(b)&&d.add(b)})}),Array.from(d)},[y]),Fe=V.useCallback(async d=>{if(!(!y||r==="update"&&!x||!(E&&r!=="update"||Ve.length>0&&Ve.includes(d)))){if(E&&r==="create"&&!R){console.warn("Interactive create mode: waiting for draft ID");return}oe.current||(F.current&&clearTimeout(F.current),F.current=setTimeout(()=>{if(!y||oe.current)return;const l=A.getValues();(async()=>{oe.current=!0;try{const p=Ee.api(t),b={};r==="update"&&s&&"_id"in l&&(b._id=l._id),E&&r==="create"&&R&&(b._id=R);const N=S.current??(r==="update"?G:null)??{},I=new Set(y.computedFields||[]);Object.keys(l).forEach(U=>{var ot;if(U==="_id"||I.has(U))return;let Q=l[U];const De=N[U];if(JSON.stringify(Q)!==JSON.stringify(De)&&(Q!==""&&Q!==null&&Q!==void 0)){const Ge=y.fields[U];((ot=Ge==null?void 0:Ge._bdoField)==null?void 0:ot.Type)==="Reference"&&(Q=It(Q)),b[U]=Q}});const T=b,$={...S.current};Object.keys(l).forEach(U=>{I.has(U)||($[U]=l[U])}),S.current=$;let W;r==="update"&&s?W=await p.draftPatch(s,T):E&&R?W=await p.draftInteraction(T):W=await p.draft(T),W&&typeof W=="object"&&(Object.entries(W).forEach(([U,Q])=>{l[U]!==Q&&A.setValue(U,Q,{shouldDirty:!1,shouldValidate:!1})}),Object.entries(W).forEach(([U,Q])=>{I.has(U)&&(S.current[U]=Q)}))}catch(p){console.warn("Failed to compute fields via API:",p)}finally{oe.current=!1}})()},300))}},[y,r,s,G,t,A,Ve,E,R,x]),He=V.useCallback(async()=>{if(!y)return!1;const d=A.getValues();if(!await A.trigger())return!1;const l=y.crossFieldValidation.map(p=>({Id:p.Id,Condition:{ExpressionTree:p.ExpressionTree},Message:p.Message||`Validation failed for ${p.Name}`})),m=Ft(l,d,Y);return m.length>0?(m.forEach((p,b)=>{A.setError(`root.crossField${b}`,{type:"validate",message:p.message})}),!1):!0},[y,A.getValues,A.trigger,A.setError,Y]),Ae=V.useCallback((d,f)=>A.handleSubmit(async(l,m)=>{if(!y){const p=new Error("Schema not loaded");f==null||f(p,m);return}te(!0);try{const p=y.crossFieldValidation.map($=>({Id:$.Id,Condition:{ExpressionTree:$.ExpressionTree},Message:$.Message||`Validation failed for ${$.Name}`})),b=Ft(p,l,Y);if(b.length>0){b.forEach(($,W)=>{A.setError(`root.crossField${W}`,{type:"validate",message:$.message})}),f==null||f(A.formState.errors,m);return}const N={};Object.entries(y.fields).forEach(([$,W])=>{N[$]=W._bdoField.Type});const I=Cr(l,y.computedFields,r,G,N);let T;if(E){const $=Ee.api(t);if(r==="create"){if(!R)throw new Error("Interactive create mode requires a draft ID. Draft creation may have failed.");T={success:!0,data:await $.draft({...I,_id:R})}}else T={success:!0,data:await $.update(s,I)}}else if(T=await Nr(t,r,I,s),!T.success)throw T.error||new Error("Submission failed");r==="create"&&(A.reset(),E&&ce(null)),await(d==null?void 0:d(T.data||l,m))}catch(p){f==null||f(Ne.toError(p),m)}finally{te(!1)}},(l,m)=>{f==null||f(l,m)}),[A,y,Y,t,r,s,G,E,R]),Ie=V.useCallback(d=>(y==null?void 0:y.fields[d])||null,[y]),xe=V.useCallback(()=>{if(!y)return{};const d={};return Object.entries(y.fields).forEach(([f,l])=>{d[f]=l}),d},[y]),Se=V.useCallback(d=>!!(y!=null&&y.fields[d]),[y]),Ye=V.useCallback(d=>(y==null?void 0:y.requiredFields.includes(d))||!1,[y]),ke=V.useCallback(d=>(y==null?void 0:y.computedFields.includes(d))||!1,[y]),Ke=V.useCallback(async()=>{await fe()},[fe]),Ue=V.useCallback(()=>{A.clearErrors()},[A]),Be=z||r==="update"&&Me||E&&r==="create"&&ye,ze=_,_e=ne||Le||de,nt=!!_e,qe=V.useMemo(()=>(y==null?void 0:y.computedFields)||[],[y]),a=V.useMemo(()=>(y==null?void 0:y.requiredFields)||[],[y]),u=V.useMemo(()=>{if(!y)return{};const d={};return Object.entries(y.fields).forEach(([f,l])=>{const m={};switch(l.required&&(m.required=`${l.label} is required`),l.permission.editable||(m.disabled=!0),l.type){case"number":m.valueAsNumber=!0;break}const p=l.rules.validation;p.length>0&&(m.validate={expressionValidation:b=>{const N=A.getValues();for(const I of p){const T=y.rules.validation[I];if(T){const $=Pr(f,b,[T],N,re);if(!$.isValid)return $.message||T.Message||"Invalid value"}}return!0}}),d[f]=m}),d},[y,A,Y]);return{register:V.useCallback((d,f)=>{const l=u[d],m=f==null?void 0:f.onBlur,p=async b=>{m&&await m(b);let N=!0;n==="onBlur"||n==="onTouched"||n==="all"?N=await A.trigger(d):N=!A.getFieldState(d,A.formState).error,N&&await Fe(d)};return A.register(d,{...l,...f,onBlur:p})},[A,u,Fe,n]),handleSubmit:Ae,watch:A.watch,setValue:A.setValue,reset:A.reset,errors:A.formState.errors,isValid:A.formState.isValid,isDirty:A.formState.isDirty,isSubmitting:A.formState.isSubmitting||_,isSubmitSuccessful:A.formState.isSubmitSuccessful,isLoading:Be,isFetching:ze,draftId:R,isCreatingDraft:ye,loadError:_e?Ne.toError(_e):null,hasError:nt,schema:H,schemaConfig:y,computedFields:qe,requiredFields:a,getField:Ie,getFields:xe,hasField:Se,isFieldRequired:Ye,isFieldComputed:ke,refreshSchema:Ke,validateForm:He,clearErrors:Ue}}exports.clearFormCache=kr;exports.isNetworkError=Tr;exports.isValidationError=Mr;exports.parseApiError=Or;exports.useForm=$r;
package/dist/form.mjs CHANGED
@@ -2251,10 +2251,6 @@ function Zr(e) {
2251
2251
  case "number":
2252
2252
  m.valueAsNumber = !0;
2253
2253
  break;
2254
- case "date":
2255
- case "datetime-local":
2256
- m.valueAsDate = !0;
2257
- break;
2258
2254
  }
2259
2255
  const p = l.rules.validation;
2260
2256
  p.length > 0 && (m.validate = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ram_28/kf-ai-sdk",
3
- "version": "1.0.30",
3
+ "version": "1.0.31",
4
4
  "description": "Type-safe, AI-driven SDK for building modern web applications with role-based access control",
5
5
  "author": "Ramprasad",
6
6
  "license": "MIT",
@@ -863,10 +863,10 @@ export function useForm<T extends Record<string, any> = Record<string, any>>(
863
863
  case "number":
864
864
  fieldRules.valueAsNumber = true;
865
865
  break;
866
- case "date":
867
- case "datetime-local":
868
- fieldRules.valueAsDate = true;
869
- break;
866
+ // case "date":
867
+ // case "datetime-local":
868
+ // fieldRules.valueAsDate = true;
869
+ // break;
870
870
  }
871
871
 
872
872
  // Client-side validation rules only