@ram_28/kf-ai-sdk 1.0.19 → 1.0.20
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/README.md +45 -12
- package/dist/components/hooks/useFilter/types.d.ts +14 -11
- package/dist/components/hooks/useFilter/types.d.ts.map +1 -1
- package/dist/components/hooks/useFilter/useFilter.d.ts +1 -1
- package/dist/components/hooks/useFilter/useFilter.d.ts.map +1 -1
- package/dist/components/hooks/useForm/apiClient.d.ts.map +1 -1
- package/dist/components/hooks/useForm/useForm.d.ts.map +1 -1
- package/dist/components/hooks/useKanban/types.d.ts +5 -22
- package/dist/components/hooks/useKanban/types.d.ts.map +1 -1
- package/dist/components/hooks/useKanban/useKanban.d.ts.map +1 -1
- package/dist/components/hooks/useTable/types.d.ts +19 -31
- package/dist/components/hooks/useTable/types.d.ts.map +1 -1
- package/dist/components/hooks/useTable/useTable.d.ts.map +1 -1
- package/dist/error-handling-CAoD0Kwb.cjs +1 -0
- package/dist/error-handling-CrhTtD88.js +14 -0
- package/dist/filter.cjs +1 -1
- package/dist/filter.mjs +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.mjs +338 -327
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/kanban.cjs +2 -2
- package/dist/kanban.mjs +332 -322
- package/dist/table.cjs +1 -1
- package/dist/table.mjs +113 -96
- package/dist/table.types.d.ts +1 -1
- package/dist/table.types.d.ts.map +1 -1
- package/dist/types/common.d.ts +26 -6
- package/dist/types/common.d.ts.map +1 -1
- package/dist/useFilter-DzpP_ag0.cjs +1 -0
- package/dist/useFilter-H5bgAZQF.js +120 -0
- package/dist/utils/api/buildListOptions.d.ts +43 -0
- package/dist/utils/api/buildListOptions.d.ts.map +1 -0
- package/dist/utils/api/index.d.ts +2 -0
- package/dist/utils/api/index.d.ts.map +1 -0
- package/dist/utils/error-handling.d.ts +41 -0
- package/dist/utils/error-handling.d.ts.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/docs/QUICK_REFERENCE.md +142 -420
- package/docs/useAuth.md +52 -340
- package/docs/useFilter.md +858 -162
- package/docs/useForm.md +712 -501
- package/docs/useKanban.md +534 -279
- package/docs/useTable.md +725 -214
- package/package.json +1 -1
- package/sdk/components/hooks/useFilter/types.ts +14 -11
- package/sdk/components/hooks/useFilter/useFilter.ts +20 -18
- package/sdk/components/hooks/useForm/apiClient.ts +2 -1
- package/sdk/components/hooks/useForm/useForm.ts +35 -11
- package/sdk/components/hooks/useKanban/types.ts +7 -23
- package/sdk/components/hooks/useKanban/useKanban.ts +54 -18
- package/sdk/components/hooks/useTable/types.ts +26 -32
- package/sdk/components/hooks/useTable/useTable.llm.txt +8 -22
- package/sdk/components/hooks/useTable/useTable.ts +70 -25
- package/sdk/index.ts +154 -10
- package/sdk/table.types.ts +3 -0
- package/sdk/types/common.ts +31 -6
- package/sdk/utils/api/buildListOptions.ts +120 -0
- package/sdk/utils/api/index.ts +2 -0
- package/sdk/utils/error-handling.ts +150 -0
- package/sdk/utils/index.ts +6 -0
- package/dist/useFilter-Dofowpr_.cjs +0 -1
- package/dist/useFilter-Dv-mr9QW.js +0 -117
package/dist/form.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Mt=Object.defineProperty;var Lt=(e,t,r)=>t in e?Mt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var be=(e,t,r)=>Lt(e,typeof t!="symbol"?t+"":t,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react"),nt=require("@tanstack/react-query"),ge=require("./client-DgtkT50N.cjs"),kt=require("./metadata-0lZAfuTP.cjs");var Re=e=>e.type==="checkbox",ye=e=>e instanceof Date,G=e=>e==null;const At=e=>typeof e=="object";var B=e=>!G(e)&&!Array.isArray(e)&&At(e)&&!ye(e),It=e=>B(e)&&e.target?Re(e.target)?e.target.checked:e.target.value:e,Ut=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,Bt=(e,t)=>e.has(Ut(t)),qt=e=>{const t=e.constructor&&e.constructor.prototype;return B(t)&&t.hasOwnProperty("isPrototypeOf")},Xe=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function P(e){if(e instanceof Date)return new Date(e);const t=typeof FileList<"u"&&e instanceof FileList;if(Xe&&(e instanceof Blob||t))return e;const r=Array.isArray(e);if(!r&&!(B(e)&&qt(e)))return e;const s=r?[]:Object.create(Object.getPrototypeOf(e));for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(s[i]=P(e[i]));return s}var $e=e=>/^\w*$/.test(e),M=e=>e===void 0,Ze=e=>Array.isArray(e)?e.filter(Boolean):[],et=e=>Ze(e.replace(/["|']|\]/g,"").split(/\.|\[/)),g=(e,t,r)=>{if(!t||!B(e))return r;const s=($e(t)?[t]:et(t)).reduce((i,n)=>G(i)?i:i[n],e);return M(s)||s===e?M(e[t])?r:e[t]:s},se=e=>typeof e=="boolean",te=e=>typeof e=="function",C=(e,t,r)=>{let s=-1;const i=$e(t)?[t]:et(t),n=i.length,l=n-1;for(;++s<n;){const f=i[s];let w=r;if(s!==l){const b=e[f];w=B(b)||Array.isArray(b)?b:isNaN(+i[s+1])?{}:[]}if(f==="__proto__"||f==="constructor"||f==="prototype")return;e[f]=w,e=e[f]}};const ut={BLUR:"blur",FOCUS_OUT:"focusout"},re={onBlur:"onBlur",onChange:"onChange",onSubmit:"onSubmit",onTouched:"onTouched",all:"all"},ue={max:"max",min:"min",maxLength:"maxLength",minLength:"minLength",pattern:"pattern",required:"required",validate:"validate"},Pt=v.createContext(null);Pt.displayName="HookFormContext";var $t=(e,t,r,s=!0)=>{const i={defaultValues:t._defaultValues};for(const n in e)Object.defineProperty(i,n,{get:()=>{const l=n;return t._proxyFormState[l]!==re.all&&(t._proxyFormState[l]=!s||re.all),e[l]}});return i};const jt=typeof window<"u"?v.useLayoutEffect:v.useEffect;var X=e=>typeof e=="string",Wt=(e,t,r,s,i)=>X(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),Ge=e=>G(e)||!At(e);function fe(e,t,r=new WeakSet){if(Ge(e)||Ge(t))return Object.is(e,t);if(ye(e)&&ye(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 l=e[n];if(!i.includes(n))return!1;if(n!=="ref"){const f=t[n];if(ye(l)&&ye(f)||B(l)&&B(f)||Array.isArray(l)&&Array.isArray(f)?!fe(l,f,r):!Object.is(l,f))return!1}}return!0}var Ht=(e,t,r,s,i)=>t?{...r[e],types:{...r[e]&&r[e].types?r[e].types:{},[s]:i||!0}}:{},_e=e=>Array.isArray(e)?e:[e],ot=()=>{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 xt(e,t){const r={};for(const s in e)if(e.hasOwnProperty(s)){const i=e[s],n=t[s];if(i&&B(i)&&n){const l=xt(i,n);B(l)&&(r[s]=l)}else e[s]&&(r[s]=n)}return r}var Y=e=>B(e)&&!Object.keys(e).length,tt=e=>e.type==="file",qe=e=>{if(!Xe)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},St=e=>e.type==="select-multiple",rt=e=>e.type==="radio",Yt=e=>rt(e)||Re(e),ze=e=>qe(e)&&e.isConnected;function Kt(e,t){const r=t.slice(0,-1).length;let s=0;for(;s<r;)e=M(e)?s++:e[t[s++]];return e}function zt(e){for(const t in e)if(e.hasOwnProperty(t)&&!M(e[t]))return!1;return!0}function U(e,t){const r=Array.isArray(t)?t:$e(t)?[t]:et(t),s=r.length===1?e:Kt(e,r),i=r.length-1,n=r[i];return s&&delete s[n],i!==0&&(B(s)&&Y(s)||Array.isArray(s)&&zt(s))&&U(e,r.slice(0,-1)),e}var Jt=e=>{for(const t in e)if(te(e[t]))return!0;return!1};function _t(e){return Array.isArray(e)||B(e)&&!Jt(e)}function Qe(e,t={}){for(const r in e){const s=e[r];_t(s)?(t[r]=Array.isArray(s)?[]:{},Qe(s,t[r])):M(s)||(t[r]=!0)}return t}function ve(e,t,r){r||(r=Qe(t));for(const s in e){const i=e[s];if(_t(i))M(t)||Ge(r[s])?r[s]=Qe(i,Array.isArray(i)?[]:{}):ve(i,G(t)?{}:t[s],r[s]);else{const n=t[s];r[s]=!fe(i,n)}}return r}const lt={value:!1,isValid:!1},ct={value:!0,isValid:!0};var Dt=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&&!M(e[0].attributes.value)?M(e[0].value)||e[0].value===""?ct:{value:e[0].value,isValid:!0}:ct:lt}return lt},Rt=(e,{valueAsNumber:t,valueAsDate:r,setValueAs:s})=>M(e)?e:t?e===""?NaN:e&&+e:r&&X(e)?new Date(e):s?s(e):e;const dt={isValid:!1,value:null};var Nt=e=>Array.isArray(e)?e.reduce((t,r)=>r&&r.checked&&!r.disabled?{isValid:!0,value:r.value}:t,dt):dt;function ft(e){const t=e.ref;return tt(t)?t.files:rt(t)?Nt(e.refs).value:St(t)?[...t.selectedOptions].map(({value:r})=>r):Re(t)?Dt(e.refs).value:Rt(M(t.value)?e.ref.value:t.value,e)}var Gt=(e,t,r,s)=>{const i={};for(const n of e){const l=g(t,n);l&&C(i,n,l._f)}return{criteriaMode:r,names:[...e],fields:i,shouldUseNativeValidation:s}},Pe=e=>e instanceof RegExp,Se=e=>M(e)?e:Pe(e)?e.source:B(e)?Pe(e.value)?e.value.source:e.value:e,ht=e=>({isOnSubmit:!e||e===re.onSubmit,isOnBlur:e===re.onBlur,isOnChange:e===re.onChange,isOnAll:e===re.all,isOnTouch:e===re.onTouched});const mt="AsyncFunction";var Qt=e=>!!e&&!!e.validate&&!!(te(e.validate)&&e.validate.constructor.name===mt||B(e.validate)&&Object.values(e.validate).find(t=>t.constructor.name===mt)),Xt=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),yt=(e,t,r)=>!r&&(t.watchAll||t.watch.has(e)||[...t.watch].some(s=>e.startsWith(s)&&/^\.\w+/.test(e.slice(s.length))));const De=(e,t,r,s)=>{for(const i of r||Object.keys(e)){const n=g(e,i);if(n){const{_f:l,...f}=n;if(l){if(l.refs&&l.refs[0]&&t(l.refs[0],i)&&!s)return!0;if(l.ref&&t(l.ref,l.name)&&!s)return!0;if(De(f,t))break}else if(B(f)&&De(f,t))break}}};function gt(e,t,r){const s=g(e,r);if(s||$e(r))return{error:s,name:r};const i=r.split(".");for(;i.length;){const n=i.join("."),l=g(t,n),f=g(e,n);if(l&&!Array.isArray(l)&&r!==n)return{name:r};if(f&&f.type)return{name:n,error:f};if(f&&f.root&&f.root.type)return{name:`${n}.root`,error:f.root};i.pop()}return{name:r}}var Zt=(e,t,r,s)=>{r(e);const{name:i,...n}=e;return Y(n)||Object.keys(n).length>=Object.keys(t).length||Object.keys(n).find(l=>t[l]===(!s||re.all))},er=(e,t,r)=>!e||!t||e===t||_e(e).some(s=>s&&(r?s===t:s.startsWith(t)||t.startsWith(s))),tr=(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,rr=(e,t)=>!Ze(g(e,t)).length&&U(e,t),sr=(e,t,r)=>{const s=_e(g(e,r));return C(s,"root",t[r]),C(e,r,s),e};function pt(e,t,r="validate"){if(X(e)||Array.isArray(e)&&e.every(X)||se(e)&&!e)return{type:r,message:X(e)?e:"",ref:t}}var we=e=>B(e)&&!Pe(e)?e:{value:e,message:""},bt=async(e,t,r,s,i,n)=>{const{ref:l,refs:f,required:w,maxLength:b,minLength:O,min:D,max:F,pattern:m,validate:K,name:T,valueAsNumber:Z,mount:H}=e._f,x=g(r,T);if(!H||t.has(T))return{};const ee=f?f[0]:l,k=V=>{i&&ee.reportValidity&&(ee.setCustomValidity(se(V)?"":V||""),ee.reportValidity())},L={},oe=rt(l),me=Re(l),ie=oe||me,ae=(Z||tt(l))&&M(l.value)&&M(x)||qe(l)&&l.value===""||x===""||Array.isArray(x)&&!x.length,W=Ht.bind(null,T,s,L),le=(V,S,R,I=ue.maxLength,Q=ue.minLength)=>{const $=V?S:R;L[T]={type:V?I:Q,message:$,ref:l,...W(V?I:Q,$)}};if(n?!Array.isArray(x)||!x.length:w&&(!ie&&(ae||G(x))||se(x)&&!x||me&&!Dt(f).isValid||oe&&!Nt(f).isValid)){const{value:V,message:S}=X(w)?{value:!!w,message:w}:we(w);if(V&&(L[T]={type:ue.required,message:S,ref:ee,...W(ue.required,S)},!s))return k(S),L}if(!ae&&(!G(D)||!G(F))){let V,S;const R=we(F),I=we(D);if(!G(x)&&!isNaN(x)){const Q=l.valueAsNumber||x&&+x;G(R.value)||(V=Q>R.value),G(I.value)||(S=Q<I.value)}else{const Q=l.valueAsDate||new Date(x),$=de=>new Date(new Date().toDateString()+" "+de),ce=l.type=="time",z=l.type=="week";X(R.value)&&x&&(V=ce?$(x)>$(R.value):z?x>R.value:Q>new Date(R.value)),X(I.value)&&x&&(S=ce?$(x)<$(I.value):z?x<I.value:Q<new Date(I.value))}if((V||S)&&(le(!!V,R.message,I.message,ue.max,ue.min),!s))return k(L[T].message),L}if((b||O)&&!ae&&(X(x)||n&&Array.isArray(x))){const V=we(b),S=we(O),R=!G(V.value)&&x.length>+V.value,I=!G(S.value)&&x.length<+S.value;if((R||I)&&(le(R,V.message,S.message),!s))return k(L[T].message),L}if(m&&!ae&&X(x)){const{value:V,message:S}=we(m);if(Pe(V)&&!x.match(V)&&(L[T]={type:ue.pattern,message:S,ref:l,...W(ue.pattern,S)},!s))return k(S),L}if(K){if(te(K)){const V=await K(x,r),S=pt(V,ee);if(S&&(L[T]={...S,...W(ue.validate,S.message)},!s))return k(S.message),L}else if(B(K)){let V={};for(const S in K){if(!Y(V)&&!s)break;const R=pt(await K[S](x,r),ee,S);R&&(V={...R,...W(S,R.message)},k(R.message),s&&(L[T]=V))}if(!Y(V)&&(L[T]={ref:ee,...V},!s))return L}}return k(!0),L};const ir={mode:re.onSubmit,reValidateMode:re.onChange,shouldFocusError:!0};function ar(e={}){let t={...ir,...e},r={submitCount:0,isDirty:!1,isReady:!1,isLoading:te(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},s={},i=B(t.defaultValues)||B(t.values)?P(t.defaultValues||t.values)||{}:{},n=t.shouldUnregister?{}:P(i),l={action:!1,mount:!1,watch:!1,keepIsValid:!1},f={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set},w,b=0;const O={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},D={...O};let F={...D};const m={array:ot(),state:ot()},K=t.criteriaMode===re.all,T=a=>o=>{clearTimeout(b),b=setTimeout(a,o)},Z=async a=>{if(!l.keepIsValid&&!t.disabled&&(D.isValid||F.isValid||a)){let o;t.resolver?(o=Y((await ie()).errors),H()):o=await W(s,!0),o!==r.isValid&&m.state.next({isValid:o})}},H=(a,o)=>{!t.disabled&&(D.isValidating||D.validatingFields||F.isValidating||F.validatingFields)&&((a||Array.from(f.mount)).forEach(u=>{u&&(o?C(r.validatingFields,u,o):U(r.validatingFields,u))}),m.state.next({validatingFields:r.validatingFields,isValidating:!Y(r.validatingFields)}))},x=(a,o=[],u,h,c=!0,d=!0)=>{if(h&&u&&!t.disabled){if(l.action=!0,d&&Array.isArray(g(s,a))){const y=u(g(s,a),h.argA,h.argB);c&&C(s,a,y)}if(d&&Array.isArray(g(r.errors,a))){const y=u(g(r.errors,a),h.argA,h.argB);c&&C(r.errors,a,y),rr(r.errors,a)}if((D.touchedFields||F.touchedFields)&&d&&Array.isArray(g(r.touchedFields,a))){const y=u(g(r.touchedFields,a),h.argA,h.argB);c&&C(r.touchedFields,a,y)}(D.dirtyFields||F.dirtyFields)&&(r.dirtyFields=ve(i,n)),m.state.next({name:a,isDirty:V(a,o),dirtyFields:r.dirtyFields,errors:r.errors,isValid:r.isValid})}else C(n,a,o)},ee=(a,o)=>{C(r.errors,a,o),m.state.next({errors:r.errors})},k=a=>{r.errors=a,m.state.next({errors:r.errors,isValid:!1})},L=(a,o,u,h)=>{const c=g(s,a);if(c){const d=g(n,a,M(u)?g(i,a):u);M(d)||h&&h.defaultChecked||o?C(n,a,o?d:ft(c._f)):I(a,d),l.mount&&!l.action&&Z()}},oe=(a,o,u,h,c)=>{let d=!1,y=!1;const p={name:a};if(!t.disabled){if(!u||h){(D.isDirty||F.isDirty)&&(y=r.isDirty,r.isDirty=p.isDirty=V(),d=y!==p.isDirty);const E=fe(g(i,a),o);y=!!g(r.dirtyFields,a),E?U(r.dirtyFields,a):C(r.dirtyFields,a,!0),p.dirtyFields=r.dirtyFields,d=d||(D.dirtyFields||F.dirtyFields)&&y!==!E}if(u){const E=g(r.touchedFields,a);E||(C(r.touchedFields,a,u),p.touchedFields=r.touchedFields,d=d||(D.touchedFields||F.touchedFields)&&E!==u)}d&&c&&m.state.next(p)}return d?p:{}},me=(a,o,u,h)=>{const c=g(r.errors,a),d=(D.isValid||F.isValid)&&se(o)&&r.isValid!==o;if(t.delayError&&u?(w=T(()=>ee(a,u)),w(t.delayError)):(clearTimeout(b),w=null,u?C(r.errors,a,u):U(r.errors,a)),(u?!fe(c,u):c)||!Y(h)||d){const y={...h,...d&&se(o)?{isValid:o}:{},errors:r.errors,name:a};r={...r,...y},m.state.next(y)}},ie=async a=>(H(a,!0),await t.resolver(n,t.context,Gt(a||f.mount,s,t.criteriaMode,t.shouldUseNativeValidation))),ae=async a=>{const{errors:o}=await ie(a);if(H(a),a)for(const u of a){const h=g(o,u);h?C(r.errors,u,h):U(r.errors,u)}else r.errors=o;return o},W=async(a,o,u={valid:!0})=>{for(const h in a){const c=a[h];if(c){const{_f:d,...y}=c;if(d){const p=f.array.has(d.name),E=c._f&&Qt(c._f);E&&D.validatingFields&&H([d.name],!0);const _=await bt(c,f.disabled,n,K,t.shouldUseNativeValidation&&!o,p);if(E&&D.validatingFields&&H([d.name]),_[d.name]&&(u.valid=!1,o||e.shouldUseNativeValidation))break;!o&&(g(_,d.name)?p?sr(r.errors,_,d.name):C(r.errors,d.name,_[d.name]):U(r.errors,d.name))}!Y(y)&&await W(y,o,u)}}return u.valid},le=()=>{for(const a of f.unMount){const o=g(s,a);o&&(o._f.refs?o._f.refs.every(u=>!ze(u)):!ze(o._f.ref))&&Ee(a)}f.unMount=new Set},V=(a,o)=>!t.disabled&&(a&&o&&C(n,a,o),!fe(Ne(),i)),S=(a,o,u)=>Wt(a,f,{...l.mount?n:M(o)?i:X(a)?{[a]:o}:o},u,o),R=a=>Ze(g(l.mount?n:i,a,t.shouldUnregister?g(i,a,[]):[])),I=(a,o,u={})=>{const h=g(s,a);let c=o;if(h){const d=h._f;d&&(!d.disabled&&C(n,a,Rt(o,d)),c=qe(d.ref)&&G(o)?"":o,St(d.ref)?[...d.ref.options].forEach(y=>y.selected=c.includes(y.value)):d.refs?Re(d.ref)?d.refs.forEach(y=>{(!y.defaultChecked||!y.disabled)&&(Array.isArray(c)?y.checked=!!c.find(p=>p===y.value):y.checked=c===y.value||!!c)}):d.refs.forEach(y=>y.checked=y.value===c):tt(d.ref)?d.ref.value="":(d.ref.value=c,d.ref.type||m.state.next({name:a,values:P(n)})))}(u.shouldDirty||u.shouldTouch)&&oe(a,c,u.shouldTouch,u.shouldDirty,!0),u.shouldValidate&&de(a)},Q=(a,o,u)=>{for(const h in o){if(!o.hasOwnProperty(h))return;const c=o[h],d=a+"."+h,y=g(s,d);(f.array.has(a)||B(c)||y&&!y._f)&&!ye(c)?Q(d,c,u):I(d,c,u)}},$=(a,o,u={})=>{const h=g(s,a),c=f.array.has(a),d=P(o);C(n,a,d),c?(m.array.next({name:a,values:P(n)}),(D.isDirty||D.dirtyFields||F.isDirty||F.dirtyFields)&&u.shouldDirty&&m.state.next({name:a,dirtyFields:ve(i,n),isDirty:V(a,d)})):h&&!h._f&&!G(d)?Q(a,d,u):I(a,d,u),yt(a,f)?m.state.next({...r,name:a,values:P(n)}):m.state.next({name:l.mount?a:void 0,values:P(n)})},ce=async a=>{l.mount=!0;const o=a.target;let u=o.name,h=!0;const c=g(s,u),d=E=>{h=Number.isNaN(E)||ye(E)&&isNaN(E.getTime())||fe(E,g(n,u,E))},y=ht(t.mode),p=ht(t.reValidateMode);if(c){let E,_;const N=o.type?ft(c._f):It(a),j=a.type===ut.BLUR||a.type===ut.FOCUS_OUT,ne=!Xt(c._f)&&!t.resolver&&!g(r.errors,u)&&!c._f.deps||tr(j,g(r.touchedFields,u),r.isSubmitted,p,y),q=yt(u,f,j);C(n,u,N),j?(!o||!o.readOnly)&&(c._f.onBlur&&c._f.onBlur(a),w&&w(0)):c._f.onChange&&c._f.onChange(a);const J=oe(u,N,j),Be=!Y(J)||q;if(!j&&m.state.next({name:u,type:a.type,values:P(n)}),ne)return(D.isValid||F.isValid)&&(t.mode==="onBlur"?j&&Z():j||Z()),Be&&m.state.next({name:u,...q?{}:J});if(!j&&q&&m.state.next({...r}),t.resolver){const{errors:Ke}=await ie([u]);if(H([u]),d(N),h){const it=gt(r.errors,s,u),at=gt(Ke,s,it.name||u);E=at.error,u=at.name,_=Y(Ke)}}else H([u],!0),E=(await bt(c,f.disabled,n,K,t.shouldUseNativeValidation))[u],H([u]),d(N),h&&(E?_=!1:(D.isValid||F.isValid)&&(_=await W(s,!0)));h&&(c._f.deps&&(!Array.isArray(c._f.deps)||c._f.deps.length>0)&&de(c._f.deps),me(u,_,E,J))}},z=(a,o)=>{if(g(r.errors,o)&&a.focus)return a.focus(),1},de=async(a,o={})=>{let u,h;const c=_e(a);if(t.resolver){const d=await ae(M(a)?a:c);u=Y(d),h=a?!c.some(y=>g(d,y)):u}else a?(h=(await Promise.all(c.map(async d=>{const y=g(s,d);return await W(y&&y._f?{[d]:y}:y)}))).every(Boolean),!(!h&&!r.isValid)&&Z()):h=u=await W(s);return m.state.next({...!X(a)||(D.isValid||F.isValid)&&u!==r.isValid?{}:{name:a},...t.resolver||!a?{isValid:u}:{},errors:r.errors}),o.shouldFocus&&!h&&De(s,z,a?c:f.mount),h},Ne=(a,o)=>{let u={...l.mount?n:i};return o&&(u=xt(o.dirtyFields?r.dirtyFields:r.touchedFields,u)),M(a)?u:X(a)?g(u,a):a.map(h=>g(u,h))},Ce=(a,o)=>({invalid:!!g((o||r).errors,a),isDirty:!!g((o||r).dirtyFields,a),error:g((o||r).errors,a),isValidating:!!g(r.validatingFields,a),isTouched:!!g((o||r).touchedFields,a)}),A=a=>{a&&_e(a).forEach(o=>U(r.errors,o)),m.state.next({errors:a?r.errors:{}})},pe=(a,o,u)=>{const h=(g(s,a,{_f:{}})._f||{}).ref,c=g(r.errors,a)||{},{ref:d,message:y,type:p,...E}=c;C(r.errors,a,{...E,...o,ref:h}),m.state.next({name:a,errors:r.errors,isValid:!1}),u&&u.shouldFocus&&h&&h.focus&&h.focus()},Oe=(a,o)=>te(a)?m.state.subscribe({next:u=>"values"in u&&a(S(void 0,o),u)}):S(a,o,!0),Te=a=>m.state.subscribe({next:o=>{er(a.name,o.name,a.exact)&&Zt(o,a.formState||D,Ye,a.reRenderRoot)&&a.callback({values:{...n},...r,...o,defaultValues:i})}}).unsubscribe,je=a=>(l.mount=!0,F={...F,...a.formState},Te({...a,formState:{...O,...a.formState}})),Ee=(a,o={})=>{for(const u of a?_e(a):f.mount)f.mount.delete(u),f.array.delete(u),o.keepValue||(U(s,u),U(n,u)),!o.keepError&&U(r.errors,u),!o.keepDirty&&U(r.dirtyFields,u),!o.keepTouched&&U(r.touchedFields,u),!o.keepIsValidating&&U(r.validatingFields,u),!t.shouldUnregister&&!o.keepDefaultValue&&U(i,u);m.state.next({values:P(n)}),m.state.next({...r,...o.keepDirty?{isDirty:V()}:{}}),!o.keepIsValid&&Z()},Me=({disabled:a,name:o})=>{(se(a)&&l.mount||a||f.disabled.has(o))&&(a?f.disabled.add(o):f.disabled.delete(o))},Ve=(a,o={})=>{let u=g(s,a);const h=se(o.disabled)||se(t.disabled);return C(s,a,{...u||{},_f:{...u&&u._f?u._f:{ref:{name:a}},name:a,mount:!0,...o}}),f.mount.add(a),u?Me({disabled:se(o.disabled)?o.disabled:t.disabled,name:a}):L(a,!0,o.value),{...h?{disabled:o.disabled||t.disabled}:{},...t.progressive?{required:!!o.required,min:Se(o.min),max:Se(o.max),minLength:Se(o.minLength),maxLength:Se(o.maxLength),pattern:Se(o.pattern)}:{},name:a,onChange:ce,onBlur:ce,ref:c=>{if(c){Ve(a,o),u=g(s,a);const d=M(c.value)&&c.querySelectorAll&&c.querySelectorAll("input,select,textarea")[0]||c,y=Yt(d),p=u._f.refs||[];if(y?p.find(E=>E===d):d===u._f.ref)return;C(s,a,{_f:{...u._f,...y?{refs:[...p.filter(ze),d,...Array.isArray(g(i,a))?[{}]:[]],ref:{type:d.type,name:a}}:{ref:d}}}),L(a,!1,void 0,d)}else u=g(s,a,{}),u._f&&(u._f.mount=!1),(t.shouldUnregister||o.shouldUnregister)&&!(Bt(f.array,a)&&l.action)&&f.unMount.add(a)}}},Ae=()=>t.shouldFocusError&&De(s,z,f.mount),We=a=>{se(a)&&(m.state.next({disabled:a}),De(s,(o,u)=>{const h=g(s,u);h&&(o.disabled=h._f.disabled||a,Array.isArray(h._f.refs)&&h._f.refs.forEach(c=>{c.disabled=h._f.disabled||a}))},0,!1))},Le=(a,o)=>async u=>{let h;u&&(u.preventDefault&&u.preventDefault(),u.persist&&u.persist());let c=P(n);if(m.state.next({isSubmitting:!0}),t.resolver){const{errors:d,values:y}=await ie();H(),r.errors=d,c=P(y)}else await W(s);if(f.disabled.size)for(const d of f.disabled)U(c,d);if(U(r.errors,"root"),Y(r.errors)){m.state.next({errors:{}});try{await a(c,u)}catch(d){h=d}}else o&&await o({...r.errors},u),Ae(),setTimeout(Ae);if(m.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:Y(r.errors)&&!h,submitCount:r.submitCount+1,errors:r.errors}),h)throw h},He=(a,o={})=>{g(s,a)&&(M(o.defaultValue)?$(a,P(g(i,a))):($(a,o.defaultValue),C(i,a,P(o.defaultValue))),o.keepTouched||U(r.touchedFields,a),o.keepDirty||(U(r.dirtyFields,a),r.isDirty=o.defaultValue?V(a,P(g(i,a))):V()),o.keepError||(U(r.errors,a),D.isValid&&Z()),m.state.next({...r}))},xe=(a,o={})=>{const u=a?P(a):i,h=P(u),c=Y(a),d=c?i:h;if(o.keepDefaultValues||(i=u),!o.keepValues){if(o.keepDirtyValues){const y=new Set([...f.mount,...Object.keys(ve(i,n))]);for(const p of Array.from(y)){const E=g(r.dirtyFields,p),_=g(n,p),N=g(d,p);E&&!M(_)?C(d,p,_):!E&&!M(N)&&$(p,N)}}else{if(Xe&&M(a))for(const y of f.mount){const p=g(s,y);if(p&&p._f){const E=Array.isArray(p._f.refs)?p._f.refs[0]:p._f.ref;if(qe(E)){const _=E.closest("form");if(_){_.reset();break}}}}if(o.keepFieldsRef)for(const y of f.mount)$(y,g(d,y));else s={}}n=t.shouldUnregister?o.keepDefaultValues?P(i):{}:P(d),m.array.next({values:{...d}}),m.state.next({values:{...d}})}f={mount:o.keepDirtyValues?f.mount:new Set,unMount:new Set,array:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:""},l.mount=!D.isValid||!!o.keepIsValid||!!o.keepDirtyValues||!t.shouldUnregister&&!Y(d),l.watch=!!t.shouldUnregister,l.keepIsValid=!!o.keepIsValid,l.action=!1,o.keepErrors||(r.errors={}),m.state.next({submitCount:o.keepSubmitCount?r.submitCount:0,isDirty:c?!1:o.keepDirty?r.isDirty:!!(o.keepDefaultValues&&!fe(a,i)),isSubmitted:o.keepIsSubmitted?r.isSubmitted:!1,dirtyFields:c?{}:o.keepDirtyValues?o.keepDefaultValues&&n?ve(i,n):r.dirtyFields:o.keepDefaultValues&&a?ve(i,a):o.keepDirty?r.dirtyFields:{},touchedFields:o.keepTouched?r.touchedFields:{},errors:o.keepErrors?r.errors:{},isSubmitSuccessful:o.keepIsSubmitSuccessful?r.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},ke=(a,o)=>xe(te(a)?a(n):a,{...t.resetOptions,...o}),Ie=(a,o={})=>{const u=g(s,a),h=u&&u._f;if(h){const c=h.refs?h.refs[0]:h.ref;c.focus&&setTimeout(()=>{c.focus(),o.shouldSelect&&te(c.select)&&c.select()})}},Ye=a=>{r={...r,...a}},Ue={control:{register:Ve,unregister:Ee,getFieldState:Ce,handleSubmit:Le,setError:pe,_subscribe:Te,_runSchema:ie,_updateIsValidating:H,_focusError:Ae,_getWatch:S,_getDirty:V,_setValid:Z,_setFieldArray:x,_setDisabledField:Me,_setErrors:k,_getFieldArray:R,_reset:xe,_resetDefaultValues:()=>te(t.defaultValues)&&t.defaultValues().then(a=>{ke(a,t.resetOptions),m.state.next({isLoading:!1})}),_removeUnmounted:le,_disableForm:We,_subjects:m,_proxyFormState:D,get _fields(){return s},get _formValues(){return n},get _state(){return l},set _state(a){l=a},get _defaultValues(){return i},get _names(){return f},set _names(a){f=a},get _formState(){return r},get _options(){return t},set _options(a){t={...t,...a}}},subscribe:je,trigger:de,register:Ve,handleSubmit:Le,watch:Oe,setValue:$,getValues:Ne,reset:ke,resetField:He,clearErrors:A,unregister:Ee,setError:pe,setFocus:Ie,getFieldState:Ce};return{...Ue,formControl:Ue}}function nr(e={}){const t=v.useRef(void 0),r=v.useRef(void 0),[s,i]=v.useState({isDirty:!1,isValidating:!1,isLoading:te(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:te(e.defaultValues)?void 0:e.defaultValues});if(!t.current)if(e.formControl)t.current={...e.formControl,formState:s},e.defaultValues&&!te(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{const{formControl:l,...f}=ar(e);t.current={...f,formState:s}}const n=t.current.control;return n._options=e,jt(()=>{const l=n._subscribe({formState:n._proxyFormState,callback:()=>i({...n._formState}),reRenderRoot:!0});return i(f=>({...f,isReady:!0})),n._formState.isReady=!0,l},[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 l=n._getDirty();l!==s.isDirty&&n._subjects.state.next({isDirty:l})}},[n,s.isDirty]),v.useEffect(()=>{var l;e.values&&!fe(e.values,r.current)?(n._reset(e.values,{keepFieldsRef:!0,...n._options.resetOptions}),!((l=n._options.resetOptions)===null||l===void 0)&&l.keepIsValid||n._setValid(),r.current=e.values,i(f=>({...f}))):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=$t(s,n),t.current}function ur(){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 or={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 he(e,t){var r;switch(e.Type){case"Literal":return e.Value;case"SystemIdentifier":if(e.Property){const b=t.systemValues[e.Name];return Je(b,e.Property.Name)}return t.systemValues[e.Name];case"Identifier":if(e.Property){const b=wt(e,t);return Je(b,e.Property.Name)}return wt(e,t);case"MemberExpression":if(!e.Arguments||e.Arguments.length===0)throw new Error("MemberExpression requires Arguments array");const s=he(e.Arguments[0],t),i=(r=e.Arguments[0].Property)==null?void 0:r.Name;return i?Je(s,i):s;case"BinaryExpression":if(!e.Arguments||e.Arguments.length!==2)throw new Error("BinaryExpression requires exactly 2 arguments");const n=he(e.Arguments[0],t),l=he(e.Arguments[1],t);return lr(e.Operator,n,l);case"LogicalExpression":if(!e.Arguments||e.Arguments.length<2)throw new Error("LogicalExpression requires at least 2 arguments");return cr(e.Operator,e.Arguments,t);case"CallExpression":if(!e.Callee)throw new Error("CallExpression requires Callee");const f=or[e.Callee];if(!f)throw new Error(`Unknown function: ${e.Callee}`);const w=(e.Arguments||[]).map(b=>he(b,t));return f(...w);case"AssignmentExpression":if(!e.Arguments||e.Arguments.length!==1)throw new Error("AssignmentExpression requires exactly 1 argument");return he(e.Arguments[0],t);default:throw new Error(`Unknown expression type: ${e.Type}`)}}function wt(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 Je(e,t){if(!(!e||typeof e!="object"))return e[t]}function lr(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 cr(e,t,r){switch(e){case"AND":return t.every(s=>!!he(s,r));case"OR":return t.some(s=>!!he(s,r));default:throw new Error(`Unknown logical operator: ${e}`)}}function Ct(e,t,r={}){const s={formValues:t,systemValues:ur(),referenceData:r};try{return he(e,s)}catch(i){return console.warn("Expression evaluation failed:",i),!1}}function vt(e,t,r={}){const s=[];for(const i of e)try{Ct(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 dr(e,t={},r={}){try{return Ct(e,t,r)}catch(s){return console.warn("Default value calculation failed:",s),null}}function Ft(e,t){var f,w,b;const r=((f=e.Expression)==null?void 0:f.toLowerCase())||"",s=((w=e.Name)==null?void 0:w.toLowerCase())||"",i=((b=e.Id)==null?void 0:b.toLowerCase())||"",n=t.toLowerCase();return s.includes("required")||i.includes("required")?!0:[`${n} != null`,`${n} != ''`,`trim(${n}) != ''`,`${n}!=null`,`${n}!=''`].some(O=>r.includes(O))}function fr(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 l=[];i.Validation.forEach(f=>{t.Rules.Validation[f.Id]=f,l.push(f.Id),Ft(f,s)&&(n=!0)}),r[s]={...i,Validation:l,Required:n}}else i.Validation.forEach(f=>{var b;const w=(b=t.Rules.Validation)==null?void 0:b[f];w&&Ft(w,s)&&(n=!0)}),n&&!i.Required&&(r[s]={...i,Required:!0});if(i.Formula){const l=`RULE_COMPUTE_${s.toUpperCase()}`;t.Rules.Computation[l]={Id:l,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 hr(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 mr(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 l=i.toUpperCase().replace(/[_-]/g,"");for(const w of r){const b=w.toUpperCase().replace(/[_-]/g,"");if(l.includes(b)){t[i]=w;return}}const f=`${n.Name||""} ${n.Description||""}`.toLowerCase();for(const w of r)if(f.includes(w.toLowerCase())){t[i]=w;return}}),t}function yr(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(f=>{t.validation[f]?r[i].validation.push(f):t.computation[f]?r[i].computation.push(f):t.businessLogic[f]&&r[i].businessLogic.push(f)}),n.Formula&&Object.entries(t.computation).forEach(([l,f])=>{var w;f.Expression===((w=n.Formula)==null?void 0:w.Expression)&&(r[i].computation.includes(l)||r[i].computation.push(l))})});const s=mr(e);return Object.entries(s).forEach(([i,n])=>{r[n]&&!r[n].computation.includes(i)&&r[n].computation.push(i)}),r}function gr(e,t){const r={},s={editable:!0,readable:!0,hidden:!1};return Object.keys(e.Fields).forEach(i=>{var w,b,O,D,F,m;if(!t||!((w=e.RolePermission)!=null&&w[t])){r[i]=s;return}const n=e.RolePermission[t],l=((b=n.Editable)==null?void 0:b.includes(i))||((O=n.Editable)==null?void 0:O.includes("*"))||!1,f=((D=n.ReadOnly)==null?void 0:D.includes(i))||((F=n.ReadOnly)==null?void 0:F.includes("*"))||l;r[i]={editable:l&&!((m=n.ReadOnly)!=null&&m.includes(i)),readable:f,hidden:!f}}),r}function pr(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 Ot(e){return e.replace(/([A-Z])/g," $1").replace(/^./,t=>t.toUpperCase()).replace(/_/g," ").trim()}function br(e,t,r){const s={};switch(t.Required&&(s.required={value:!0,message:`${Ot(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 wr(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 vr(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 dr(e.DefaultValue.ExpressionTree,t)}function Fr(e,t,r,s={},i,n){const l={editable:!0,readable:!0,hidden:!1},w=n||{validation:[],computation:[],businessLogic:[]},b=t.Computed||!!t.Formula||w.computation.length>0,O=br(e,t);return b&&(O.disabled=!0),{name:e,type:pr(t.Type,e),label:t.Name||Ot(e),required:t.Required||!1,computed:b,defaultValue:vr(t,s),options:wr(t),validation:O,description:t.Description,_bdoField:t,permission:i||l,rules:w}}function Er(e,t={},r){let s=e;s=fr(s);const i={},n=[],l=[],f=[],w=[],b=hr(s),O=yr(s,b),D=gr(s,r);for(const[F,m]of Object.entries(s.Fields)){if(F.startsWith("_")&&!["_id"].includes(F))continue;const K=D[F];if(K.hidden)continue;const T=Fr(F,m,s.Fields,t,K,O[F]||{validation:[],computation:[],businessLogic:[]});i[F]=T,n.push(F),T.computed&&l.push(F),T.required&&f.push(F)}return{fields:i,fieldOrder:n,computedFields:l,requiredFields:f,crossFieldValidation:w,rules:b,fieldRules:O,rolePermissions:s.RolePermission}}function Vr(e){var r;if(e.type!=="reference"||!((r=e._bdoField.Values)!=null&&r.Reference))return null;const t=e._bdoField.Values.Reference;return{businessObject:t.BusinessObject,fields:t.Fields||["_id"],filters:t.Filters,sort:t.Sort}}function Ar(e){const t={};for(const[r,s]of Object.entries(e.fields))if(s.type==="reference"){const i=Vr(s);i&&(t[r]=i)}return t}async function xr(e){try{const r=(await kt.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 Sr(e,t=3){let r;for(let s=1;s<=t;s++)try{return await xr(e)}catch(i){if(r=i,s<t){const n=Math.min(1e3*Math.pow(2,s-1),5e3);await new Promise(l=>setTimeout(l,n));continue}}throw r}async function _r(e,t){try{return await ge.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 Dr(e,t,r,s){try{let i;if(t==="create")return i=await ge.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 ge.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"}`)}}}async function Rr(e,t=["_id"],r,s){try{const i={};return r&&(i.Filter=r),s&&(i.Sort=s),t.length>0&&(i.Field=t),(await ge.api(e).list(i)).Data||[]}catch(i){return console.error(`Reference data fetch error for ${e}:`,i),[]}}async function Nr(e){const t={},r=Object.entries(e).map(async([i,n])=>{try{const l=await Rr(n.businessObject,n.fields,n.filters,n.sort);return[i,l]}catch(l){return console.warn(`Failed to fetch reference data for ${i}:`,l),[i,[]]}});return(await Promise.allSettled(r)).forEach(i=>{if(i.status==="fulfilled"){const[n,l]=i.value;t[n]=Array.isArray(l)?l:[]}}),t}function Cr(e,t,r="create",s){const i={};return Object.keys(e).forEach(n=>{const l=n,f=e[l];if(!t.includes(n)&&f!==void 0){if(r==="create"){i[l]=f;return}if(r==="update"){if(!s){i[l]=f;return}const w=s[l];JSON.stringify(f)!==JSON.stringify(w)&&(i[l]=f)}}}),i}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 Fe=new Map;function Lr(e,t,r=10){Fe.set(e,{data:t,timestamp:Date.now(),ttl:r*60*1e3})}function kr(e){const t=Fe.get(e);return t?Date.now()-t.timestamp>t.ttl?(Fe.delete(e),null):t.data:null}function Ir(e){e?Array.from(Fe.keys()).filter(r=>r.startsWith(e)).forEach(r=>Fe.delete(r)):Fe.clear()}async function Ur(e){const t=`schema:${e}`,r=kr(t);if(r)return r;const s=await Sr(e);return Lr(t,s,30),s}class Et{constructor(t=1e3){be(this,"cache",new Map);be(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(){be(this,"resultCache",new Et(500));be(this,"dependencyCache",new Et(200));be(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 l of i)if(r[l]!==s[l])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),l=this.createCacheKey(t,r);return this.resultCache.set(l,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(b=>String(b||"")).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((b,O)=>b+(Number(O)||0),0);case"AVG":const n=s.filter(b=>!isNaN(Number(b)));return n.length>0?n.reduce((b,O)=>b+Number(O),0)/n.length:0;case"MIN":return Math.min(...s.map(b=>Number(b)||0));case"MAX":return Math.max(...s.map(b=>Number(b)||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 l=new Date(s[0]),f=new Date(s[1]),w=Math.abs(l.getTime()-f.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 Tt=new qr;function Pr(e,t,r,s,i){if(!r||r.length===0)return{isValid:!0};const n={...s,[e]:t};for(const l of r)try{if(!Tt.evaluate(l.ExpressionTree,n,i))return{isValid:!1,message:l.Message||`Validation failed for ${l.Name}`,fieldName:e}}catch(f){console.warn(`Validation rule ${l.Id} failed to evaluate:`,f)}return{isValid:!0}}function Vt(e){return Array.from(Tt.getDependencies(e))}function $r(e){const{source:t,operation:r,recordId:s,defaultValues:i={},mode:n="onBlur",enabled:l=!0,userRole:f,onSchemaError:w,skipSchemaFetch:b=!1,schema:O,interactionMode:D="interactive"}=e,F=D==="interactive",[m,K]=v.useState(null),[T,Z]=v.useState({}),[H,x]=v.useState(!1),[ee]=v.useState({}),[k,L]=v.useState(null),[oe,me]=v.useState(!1),[ie,ae]=v.useState(null),W=v.useRef(!1),le=v.useRef(null),V=v.useRef(null),S=v.useRef(!1),R=v.useRef(w);v.useEffect(()=>{R.current=w},[w]);const{data:I,isLoading:Q,error:$,refetch:ce}=nt.useQuery({queryKey:["form-schema",t],queryFn:()=>b?Promise.resolve(O||{}):Ur(t),enabled:l&&(!b||!!O),retry:3,staleTime:30*60*1e3,gcTime:60*60*1e3,throwOnError:!1}),{data:z,isLoading:de,error:Ne}=nt.useQuery({queryKey:["form-record",t,s],queryFn:()=>_r(t,s),enabled:l&&r==="update"&&!!s,retry:3,staleTime:5*60*1e3,gcTime:15*60*1e3,throwOnError:!1}),Ce=v.useMemo(()=>{const u={...i};if(r==="update"&&z&&Object.assign(u,z),m)for(const[h,c]of Object.entries(m.fields))c.defaultValue!==void 0&&!(h in u)&&(u[h]=c.defaultValue);return u},[i,z,r,m]),A=nr({mode:n,defaultValues:i,values:r==="update"&&z?Ce:void 0});v.useEffect(()=>{var u;if(I)try{const h=Er(I,{},f);K(h);const c=Ar(h);Object.keys(c).length>0&&Nr(c).then(Z).catch(console.warn)}catch(h){console.error("Schema processing failed:",h),(u=R.current)==null||u.call(R,h)}},[I,f]),v.useEffect(()=>{var u;$&&((u=R.current)==null||u.call(R,$))},[$]),v.useEffect(()=>{if(!F||r!=="create"||!m||!l||k||S.current)return;S.current=!0,(async()=>{me(!0),ae(null);try{const c=await ge.api(t).draftInteraction({});L(c._id),c&&typeof c=="object"&&Object.entries(c).forEach(([d,y])=>{if(d==="_id")return;A.getValues(d)!==y&&A.setValue(d,y,{shouldDirty:!1,shouldValidate:!1})})}catch(h){console.error("Failed to create initial draft:",h),ae(h),S.current=!1}finally{me(!1)}})()},[F,r,m,l,k,t]);const pe=v.useMemo(()=>{if(!m)return[];const u=new Set,h=new Set(m.computedFields);return Object.entries(m.fieldRules).forEach(([c,d])=>{d.computation.forEach(y=>{const p=m.rules.computation[y];p!=null&&p.ExpressionTree&&Vt(p.ExpressionTree).forEach(_=>{m.fields[_]&&_!==c&&!h.has(_)&&u.add(_)})})}),m.computedFields.forEach(c=>{const d=m.fields[c];d._bdoField.Formula&&Vt(d._bdoField.Formula.ExpressionTree).forEach(p=>{m.fields[p]&&p!==c&&!h.has(p)&&u.add(p)})}),Array.from(u)},[m]),Oe=v.useCallback(async u=>{if(!(!m||!(F||pe.length>0&&pe.includes(u)))){if(F&&r==="create"&&!k){console.warn("Interactive create mode: waiting for draft ID");return}W.current||(le.current&&clearTimeout(le.current),le.current=setTimeout(()=>{if(!m||W.current)return;const c=A.getValues();(async()=>{W.current=!0;try{const y=ge.api(t),p={};r==="update"&&s&&"_id"in c&&(p._id=c._id),F&&r==="create"&&k&&(p._id=k);const E=V.current??(r==="update"?z:null)??{},_=new Set(m.computedFields||[]);Object.keys(c).forEach(q=>{if(q==="_id"||_.has(q))return;const J=c[q],Be=E[q];JSON.stringify(J)!==JSON.stringify(Be)&&(J!==""&&J!==null&&J!==void 0)&&(p[q]=J)});const N=p,j={...V.current};Object.keys(c).forEach(q=>{_.has(q)||(j[q]=c[q])}),V.current=j;let ne;r==="update"&&s?ne=await y.draftPatch(s,N):F&&k?ne=await y.draftInteraction(N):ne=await y.draft(N),ne&&typeof ne=="object"&&(Object.entries(ne).forEach(([q,J])=>{c[q]!==J&&A.setValue(q,J,{shouldDirty:!1,shouldValidate:!1})}),Object.entries(ne).forEach(([q,J])=>{_.has(q)&&(V.current[q]=J)}))}catch(y){console.warn("Failed to compute fields via API:",y)}finally{W.current=!1}})()},300))}},[m,r,s,z,t,A,pe,F,k]),Te=v.useCallback(async()=>{if(!m)return!1;const u=A.getValues();if(!await A.trigger())return!1;const c=m.crossFieldValidation.map(y=>({Id:y.Id,Condition:{ExpressionTree:y.ExpressionTree},Message:y.Message||`Validation failed for ${y.Name}`})),d=vt(c,u,T);return d.length>0?(d.forEach((y,p)=>{A.setError(`root.crossField${p}`,{type:"validate",message:y.message})}),!1):!0},[m,A.getValues,A.trigger,A.setError,T]),je=v.useCallback((u,h)=>A.handleSubmit(async(c,d)=>{if(!m){const y=new Error("Schema not loaded");h==null||h(y,d);return}x(!0);try{const y=m.crossFieldValidation.map(N=>({Id:N.Id,Condition:{ExpressionTree:N.ExpressionTree},Message:N.Message||`Validation failed for ${N.Name}`})),p=vt(y,c,T);if(p.length>0){p.forEach((N,j)=>{A.setError(`root.crossField${j}`,{type:"validate",message:N.message})}),h==null||h(A.formState.errors,d);return}const E=Cr(c,m.computedFields,r,z);let _;if(F){const N=ge.api(t);if(r==="create"){if(!k)throw new Error("Interactive create mode requires a draft ID. Draft creation may have failed.");_={success:!0,data:await N.draft({...E,_id:k})}}else _={success:!0,data:await N.draftUpdate(s,E)}}else if(_=await Dr(t,r,E,s),!_.success)throw _.error||new Error("Submission failed");r==="create"&&(A.reset(),F&&L(null)),await(u==null?void 0:u(_.data||c,d))}catch(y){h==null||h(y,d)}finally{x(!1)}},(c,d)=>{h==null||h(c,d)}),[A,m,T,t,r,s,z,F,k]),Ee=v.useCallback(u=>(m==null?void 0:m.fields[u])||null,[m]),Me=v.useCallback(()=>{if(!m)return{};const u={};return Object.entries(m.fields).forEach(([h,c])=>{u[h]=c}),u},[m]),Ve=v.useCallback(u=>!!(m!=null&&m.fields[u]),[m]),Ae=v.useCallback(u=>(m==null?void 0:m.requiredFields.includes(u))||!1,[m]),We=v.useCallback(u=>(m==null?void 0:m.computedFields.includes(u))||!1,[m]),Le=v.useCallback(async()=>{await ce()},[ce]),He=v.useCallback(()=>{A.clearErrors()},[A]),xe=Q||r==="update"&&de||F&&r==="create"&&oe,ke=xe||H,Ie=$||Ne||ie,Ye=!!Ie,st=v.useMemo(()=>(m==null?void 0:m.computedFields)||[],[m]),Ue=v.useMemo(()=>(m==null?void 0:m.requiredFields)||[],[m]),a=v.useMemo(()=>{if(!m)return{};const u={};return Object.entries(m.fields).forEach(([h,c])=>{const d={};switch(c.required&&(d.required=`${c.label} is required`),c.permission.editable||(d.disabled=!0),c.type){case"number":d.valueAsNumber=!0;break;case"date":case"datetime-local":d.valueAsDate=!0;break}const y=c.rules.validation;y.length>0&&(d.validate={expressionValidation:p=>{const E=A.getValues();for(const _ of y){const N=m.rules.validation[_];if(N){const j=Pr(h,p,[N],E,ee);if(!j.isValid)return j.message||N.Message||"Invalid value"}}return!0}}),u[h]=d}),u},[m,A,T]);return{register:v.useCallback((u,h)=>{const c=a[u],d=h==null?void 0:h.onBlur,y=async p=>{d&&await d(p);let E=!0;n==="onBlur"||n==="onTouched"||n==="all"?E=await A.trigger(u):E=!A.getFieldState(u,A.formState).error,E&&await Oe(u)};return A.register(u,{...c,...h,onBlur:y})},[A,a,Oe,n]),handleSubmit:je,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||H,isSubmitSuccessful:A.formState.isSubmitSuccessful,isLoadingInitialData:xe,isLoadingRecord:de,isLoading:ke,draftId:k,isCreatingDraft:oe,loadError:Ie,hasError:Ye,schema:I,schemaConfig:m,computedFields:st,requiredFields:Ue,getField:Ee,getFields:Me,hasField:Ve,isFieldRequired:Ae,isFieldComputed:We,refreshSchema:Le,validateForm:Te,clearErrors:He}}exports.clearFormCache=Ir;exports.isNetworkError=Tr;exports.isValidationError=Mr;exports.parseApiError=Or;exports.useForm=$r;
|
|
1
|
+
"use strict";var Lt=Object.defineProperty;var kt=(e,t,r)=>t in e?Lt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var be=(e,t,r)=>kt(e,typeof t!="symbol"?t+"":t,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react"),ut=require("@tanstack/react-query"),ge=require("./client-DgtkT50N.cjs"),It=require("./metadata-0lZAfuTP.cjs"),ve=require("./error-handling-CAoD0Kwb.cjs");var Ce=e=>e.type==="checkbox",ye=e=>e instanceof Date,G=e=>e==null;const xt=e=>typeof e=="object";var B=e=>!G(e)&&!Array.isArray(e)&&xt(e)&&!ye(e),Ut=e=>B(e)&&e.target?Ce(e.target)?e.target.checked:e.target.value:e,Bt=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,qt=(e,t)=>e.has(Bt(t)),Pt=e=>{const t=e.constructor&&e.constructor.prototype;return B(t)&&t.hasOwnProperty("isPrototypeOf")},Ze=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function P(e){if(e instanceof Date)return new Date(e);const t=typeof FileList<"u"&&e instanceof FileList;if(Ze&&(e instanceof Blob||t))return e;const r=Array.isArray(e);if(!r&&!(B(e)&&Pt(e)))return e;const s=r?[]:Object.create(Object.getPrototypeOf(e));for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(s[i]=P(e[i]));return s}var je=e=>/^\w*$/.test(e),M=e=>e===void 0,et=e=>Array.isArray(e)?e.filter(Boolean):[],tt=e=>et(e.replace(/["|']|\]/g,"").split(/\.|\[/)),g=(e,t,r)=>{if(!t||!B(e))return r;const s=(je(t)?[t]:tt(t)).reduce((i,n)=>G(i)?i:i[n],e);return M(s)||s===e?M(e[t])?r:e[t]:s},se=e=>typeof e=="boolean",te=e=>typeof e=="function",C=(e,t,r)=>{let s=-1;const i=je(t)?[t]:tt(t),n=i.length,l=n-1;for(;++s<n;){const f=i[s];let w=r;if(s!==l){const b=e[f];w=B(b)||Array.isArray(b)?b:isNaN(+i[s+1])?{}:[]}if(f==="__proto__"||f==="constructor"||f==="prototype")return;e[f]=w,e=e[f]}};const ot={BLUR:"blur",FOCUS_OUT:"focusout"},re={onBlur:"onBlur",onChange:"onChange",onSubmit:"onSubmit",onTouched:"onTouched",all:"all"},ue={max:"max",min:"min",maxLength:"maxLength",minLength:"minLength",pattern:"pattern",required:"required",validate:"validate"},$t=v.createContext(null);$t.displayName="HookFormContext";var jt=(e,t,r,s=!0)=>{const i={defaultValues:t._defaultValues};for(const n in e)Object.defineProperty(i,n,{get:()=>{const l=n;return t._proxyFormState[l]!==re.all&&(t._proxyFormState[l]=!s||re.all),e[l]}});return i};const Wt=typeof window<"u"?v.useLayoutEffect:v.useEffect;var X=e=>typeof e=="string",Ht=(e,t,r,s,i)=>X(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),Qe=e=>G(e)||!xt(e);function fe(e,t,r=new WeakSet){if(Qe(e)||Qe(t))return Object.is(e,t);if(ye(e)&&ye(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 l=e[n];if(!i.includes(n))return!1;if(n!=="ref"){const f=t[n];if(ye(l)&&ye(f)||B(l)&&B(f)||Array.isArray(l)&&Array.isArray(f)?!fe(l,f,r):!Object.is(l,f))return!1}}return!0}var Yt=(e,t,r,s,i)=>t?{...r[e],types:{...r[e]&&r[e].types?r[e].types:{},[s]:i||!0}}:{},Re=e=>Array.isArray(e)?e:[e],lt=()=>{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 St(e,t){const r={};for(const s in e)if(e.hasOwnProperty(s)){const i=e[s],n=t[s];if(i&&B(i)&&n){const l=St(i,n);B(l)&&(r[s]=l)}else e[s]&&(r[s]=n)}return r}var Y=e=>B(e)&&!Object.keys(e).length,rt=e=>e.type==="file",Pe=e=>{if(!Ze)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},_t=e=>e.type==="select-multiple",st=e=>e.type==="radio",Kt=e=>st(e)||Ce(e),Je=e=>Pe(e)&&e.isConnected;function zt(e,t){const r=t.slice(0,-1).length;let s=0;for(;s<r;)e=M(e)?s++:e[t[s++]];return e}function Jt(e){for(const t in e)if(e.hasOwnProperty(t)&&!M(e[t]))return!1;return!0}function U(e,t){const r=Array.isArray(t)?t:je(t)?[t]:tt(t),s=r.length===1?e:zt(e,r),i=r.length-1,n=r[i];return s&&delete s[n],i!==0&&(B(s)&&Y(s)||Array.isArray(s)&&Jt(s))&&U(e,r.slice(0,-1)),e}var Gt=e=>{for(const t in e)if(te(e[t]))return!0;return!1};function Dt(e){return Array.isArray(e)||B(e)&&!Gt(e)}function Xe(e,t={}){for(const r in e){const s=e[r];Dt(s)?(t[r]=Array.isArray(s)?[]:{},Xe(s,t[r])):M(s)||(t[r]=!0)}return t}function Ee(e,t,r){r||(r=Xe(t));for(const s in e){const i=e[s];if(Dt(i))M(t)||Qe(r[s])?r[s]=Xe(i,Array.isArray(i)?[]:{}):Ee(i,G(t)?{}:t[s],r[s]);else{const n=t[s];r[s]=!fe(i,n)}}return r}const ct={value:!1,isValid:!1},dt={value:!0,isValid:!0};var Rt=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&&!M(e[0].attributes.value)?M(e[0].value)||e[0].value===""?dt:{value:e[0].value,isValid:!0}:dt:ct}return ct},Nt=(e,{valueAsNumber:t,valueAsDate:r,setValueAs:s})=>M(e)?e:t?e===""?NaN:e&&+e:r&&X(e)?new Date(e):s?s(e):e;const ft={isValid:!1,value:null};var Ct=e=>Array.isArray(e)?e.reduce((t,r)=>r&&r.checked&&!r.disabled?{isValid:!0,value:r.value}:t,ft):ft;function ht(e){const t=e.ref;return rt(t)?t.files:st(t)?Ct(e.refs).value:_t(t)?[...t.selectedOptions].map(({value:r})=>r):Ce(t)?Rt(e.refs).value:Nt(M(t.value)?e.ref.value:t.value,e)}var Qt=(e,t,r,s)=>{const i={};for(const n of e){const l=g(t,n);l&&C(i,n,l._f)}return{criteriaMode:r,names:[...e],fields:i,shouldUseNativeValidation:s}},$e=e=>e instanceof RegExp,De=e=>M(e)?e:$e(e)?e.source:B(e)?$e(e.value)?e.value.source:e.value:e,mt=e=>({isOnSubmit:!e||e===re.onSubmit,isOnBlur:e===re.onBlur,isOnChange:e===re.onChange,isOnAll:e===re.all,isOnTouch:e===re.onTouched});const yt="AsyncFunction";var Xt=e=>!!e&&!!e.validate&&!!(te(e.validate)&&e.validate.constructor.name===yt||B(e.validate)&&Object.values(e.validate).find(t=>t.constructor.name===yt)),Zt=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),gt=(e,t,r)=>!r&&(t.watchAll||t.watch.has(e)||[...t.watch].some(s=>e.startsWith(s)&&/^\.\w+/.test(e.slice(s.length))));const Ne=(e,t,r,s)=>{for(const i of r||Object.keys(e)){const n=g(e,i);if(n){const{_f:l,...f}=n;if(l){if(l.refs&&l.refs[0]&&t(l.refs[0],i)&&!s)return!0;if(l.ref&&t(l.ref,l.name)&&!s)return!0;if(Ne(f,t))break}else if(B(f)&&Ne(f,t))break}}};function pt(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("."),l=g(t,n),f=g(e,n);if(l&&!Array.isArray(l)&&r!==n)return{name:r};if(f&&f.type)return{name:n,error:f};if(f&&f.root&&f.root.type)return{name:`${n}.root`,error:f.root};i.pop()}return{name:r}}var er=(e,t,r,s)=>{r(e);const{name:i,...n}=e;return Y(n)||Object.keys(n).length>=Object.keys(t).length||Object.keys(n).find(l=>t[l]===(!s||re.all))},tr=(e,t,r)=>!e||!t||e===t||Re(e).some(s=>s&&(r?s===t:s.startsWith(t)||t.startsWith(s))),rr=(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,sr=(e,t)=>!et(g(e,t)).length&&U(e,t),ir=(e,t,r)=>{const s=Re(g(e,r));return C(s,"root",t[r]),C(e,r,s),e};function bt(e,t,r="validate"){if(X(e)||Array.isArray(e)&&e.every(X)||se(e)&&!e)return{type:r,message:X(e)?e:"",ref:t}}var we=e=>B(e)&&!$e(e)?e:{value:e,message:""},wt=async(e,t,r,s,i,n)=>{const{ref:l,refs:f,required:w,maxLength:b,minLength:O,min:D,max:E,pattern:m,validate:K,name:T,valueAsNumber:Z,mount:H}=e._f,x=g(r,T);if(!H||t.has(T))return{};const ee=f?f[0]:l,k=V=>{i&&ee.reportValidity&&(ee.setCustomValidity(se(V)?"":V||""),ee.reportValidity())},L={},oe=st(l),me=Ce(l),ie=oe||me,ae=(Z||rt(l))&&M(l.value)&&M(x)||Pe(l)&&l.value===""||x===""||Array.isArray(x)&&!x.length,W=Yt.bind(null,T,s,L),le=(V,S,R,I=ue.maxLength,Q=ue.minLength)=>{const $=V?S:R;L[T]={type:V?I:Q,message:$,ref:l,...W(V?I:Q,$)}};if(n?!Array.isArray(x)||!x.length:w&&(!ie&&(ae||G(x))||se(x)&&!x||me&&!Rt(f).isValid||oe&&!Ct(f).isValid)){const{value:V,message:S}=X(w)?{value:!!w,message:w}:we(w);if(V&&(L[T]={type:ue.required,message:S,ref:ee,...W(ue.required,S)},!s))return k(S),L}if(!ae&&(!G(D)||!G(E))){let V,S;const R=we(E),I=we(D);if(!G(x)&&!isNaN(x)){const Q=l.valueAsNumber||x&&+x;G(R.value)||(V=Q>R.value),G(I.value)||(S=Q<I.value)}else{const Q=l.valueAsDate||new Date(x),$=de=>new Date(new Date().toDateString()+" "+de),ce=l.type=="time",z=l.type=="week";X(R.value)&&x&&(V=ce?$(x)>$(R.value):z?x>R.value:Q>new Date(R.value)),X(I.value)&&x&&(S=ce?$(x)<$(I.value):z?x<I.value:Q<new Date(I.value))}if((V||S)&&(le(!!V,R.message,I.message,ue.max,ue.min),!s))return k(L[T].message),L}if((b||O)&&!ae&&(X(x)||n&&Array.isArray(x))){const V=we(b),S=we(O),R=!G(V.value)&&x.length>+V.value,I=!G(S.value)&&x.length<+S.value;if((R||I)&&(le(R,V.message,S.message),!s))return k(L[T].message),L}if(m&&!ae&&X(x)){const{value:V,message:S}=we(m);if($e(V)&&!x.match(V)&&(L[T]={type:ue.pattern,message:S,ref:l,...W(ue.pattern,S)},!s))return k(S),L}if(K){if(te(K)){const V=await K(x,r),S=bt(V,ee);if(S&&(L[T]={...S,...W(ue.validate,S.message)},!s))return k(S.message),L}else if(B(K)){let V={};for(const S in K){if(!Y(V)&&!s)break;const R=bt(await K[S](x,r),ee,S);R&&(V={...R,...W(S,R.message)},k(R.message),s&&(L[T]=V))}if(!Y(V)&&(L[T]={ref:ee,...V},!s))return L}}return k(!0),L};const ar={mode:re.onSubmit,reValidateMode:re.onChange,shouldFocusError:!0};function nr(e={}){let t={...ar,...e},r={submitCount:0,isDirty:!1,isReady:!1,isLoading:te(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},s={},i=B(t.defaultValues)||B(t.values)?P(t.defaultValues||t.values)||{}:{},n=t.shouldUnregister?{}:P(i),l={action:!1,mount:!1,watch:!1,keepIsValid:!1},f={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set},w,b=0;const O={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},D={...O};let E={...D};const m={array:lt(),state:lt()},K=t.criteriaMode===re.all,T=a=>o=>{clearTimeout(b),b=setTimeout(a,o)},Z=async a=>{if(!l.keepIsValid&&!t.disabled&&(D.isValid||E.isValid||a)){let o;t.resolver?(o=Y((await ie()).errors),H()):o=await W(s,!0),o!==r.isValid&&m.state.next({isValid:o})}},H=(a,o)=>{!t.disabled&&(D.isValidating||D.validatingFields||E.isValidating||E.validatingFields)&&((a||Array.from(f.mount)).forEach(u=>{u&&(o?C(r.validatingFields,u,o):U(r.validatingFields,u))}),m.state.next({validatingFields:r.validatingFields,isValidating:!Y(r.validatingFields)}))},x=(a,o=[],u,h,c=!0,d=!0)=>{if(h&&u&&!t.disabled){if(l.action=!0,d&&Array.isArray(g(s,a))){const y=u(g(s,a),h.argA,h.argB);c&&C(s,a,y)}if(d&&Array.isArray(g(r.errors,a))){const y=u(g(r.errors,a),h.argA,h.argB);c&&C(r.errors,a,y),sr(r.errors,a)}if((D.touchedFields||E.touchedFields)&&d&&Array.isArray(g(r.touchedFields,a))){const y=u(g(r.touchedFields,a),h.argA,h.argB);c&&C(r.touchedFields,a,y)}(D.dirtyFields||E.dirtyFields)&&(r.dirtyFields=Ee(i,n)),m.state.next({name:a,isDirty:V(a,o),dirtyFields:r.dirtyFields,errors:r.errors,isValid:r.isValid})}else C(n,a,o)},ee=(a,o)=>{C(r.errors,a,o),m.state.next({errors:r.errors})},k=a=>{r.errors=a,m.state.next({errors:r.errors,isValid:!1})},L=(a,o,u,h)=>{const c=g(s,a);if(c){const d=g(n,a,M(u)?g(i,a):u);M(d)||h&&h.defaultChecked||o?C(n,a,o?d:ht(c._f)):I(a,d),l.mount&&!l.action&&Z()}},oe=(a,o,u,h,c)=>{let d=!1,y=!1;const p={name:a};if(!t.disabled){if(!u||h){(D.isDirty||E.isDirty)&&(y=r.isDirty,r.isDirty=p.isDirty=V(),d=y!==p.isDirty);const F=fe(g(i,a),o);y=!!g(r.dirtyFields,a),F?U(r.dirtyFields,a):C(r.dirtyFields,a,!0),p.dirtyFields=r.dirtyFields,d=d||(D.dirtyFields||E.dirtyFields)&&y!==!F}if(u){const F=g(r.touchedFields,a);F||(C(r.touchedFields,a,u),p.touchedFields=r.touchedFields,d=d||(D.touchedFields||E.touchedFields)&&F!==u)}d&&c&&m.state.next(p)}return d?p:{}},me=(a,o,u,h)=>{const c=g(r.errors,a),d=(D.isValid||E.isValid)&&se(o)&&r.isValid!==o;if(t.delayError&&u?(w=T(()=>ee(a,u)),w(t.delayError)):(clearTimeout(b),w=null,u?C(r.errors,a,u):U(r.errors,a)),(u?!fe(c,u):c)||!Y(h)||d){const y={...h,...d&&se(o)?{isValid:o}:{},errors:r.errors,name:a};r={...r,...y},m.state.next(y)}},ie=async a=>(H(a,!0),await t.resolver(n,t.context,Qt(a||f.mount,s,t.criteriaMode,t.shouldUseNativeValidation))),ae=async a=>{const{errors:o}=await ie(a);if(H(a),a)for(const u of a){const h=g(o,u);h?C(r.errors,u,h):U(r.errors,u)}else r.errors=o;return o},W=async(a,o,u={valid:!0})=>{for(const h in a){const c=a[h];if(c){const{_f:d,...y}=c;if(d){const p=f.array.has(d.name),F=c._f&&Xt(c._f);F&&D.validatingFields&&H([d.name],!0);const _=await wt(c,f.disabled,n,K,t.shouldUseNativeValidation&&!o,p);if(F&&D.validatingFields&&H([d.name]),_[d.name]&&(u.valid=!1,o||e.shouldUseNativeValidation))break;!o&&(g(_,d.name)?p?ir(r.errors,_,d.name):C(r.errors,d.name,_[d.name]):U(r.errors,d.name))}!Y(y)&&await W(y,o,u)}}return u.valid},le=()=>{for(const a of f.unMount){const o=g(s,a);o&&(o._f.refs?o._f.refs.every(u=>!Je(u)):!Je(o._f.ref))&&Ve(a)}f.unMount=new Set},V=(a,o)=>!t.disabled&&(a&&o&&C(n,a,o),!fe(Oe(),i)),S=(a,o,u)=>Ht(a,f,{...l.mount?n:M(o)?i:X(a)?{[a]:o}:o},u,o),R=a=>et(g(l.mount?n:i,a,t.shouldUnregister?g(i,a,[]):[])),I=(a,o,u={})=>{const h=g(s,a);let c=o;if(h){const d=h._f;d&&(!d.disabled&&C(n,a,Nt(o,d)),c=Pe(d.ref)&&G(o)?"":o,_t(d.ref)?[...d.ref.options].forEach(y=>y.selected=c.includes(y.value)):d.refs?Ce(d.ref)?d.refs.forEach(y=>{(!y.defaultChecked||!y.disabled)&&(Array.isArray(c)?y.checked=!!c.find(p=>p===y.value):y.checked=c===y.value||!!c)}):d.refs.forEach(y=>y.checked=y.value===c):rt(d.ref)?d.ref.value="":(d.ref.value=c,d.ref.type||m.state.next({name:a,values:P(n)})))}(u.shouldDirty||u.shouldTouch)&&oe(a,c,u.shouldTouch,u.shouldDirty,!0),u.shouldValidate&&de(a)},Q=(a,o,u)=>{for(const h in o){if(!o.hasOwnProperty(h))return;const c=o[h],d=a+"."+h,y=g(s,d);(f.array.has(a)||B(c)||y&&!y._f)&&!ye(c)?Q(d,c,u):I(d,c,u)}},$=(a,o,u={})=>{const h=g(s,a),c=f.array.has(a),d=P(o);C(n,a,d),c?(m.array.next({name:a,values:P(n)}),(D.isDirty||D.dirtyFields||E.isDirty||E.dirtyFields)&&u.shouldDirty&&m.state.next({name:a,dirtyFields:Ee(i,n),isDirty:V(a,d)})):h&&!h._f&&!G(d)?Q(a,d,u):I(a,d,u),gt(a,f)?m.state.next({...r,name:a,values:P(n)}):m.state.next({name:l.mount?a:void 0,values:P(n)})},ce=async a=>{l.mount=!0;const o=a.target;let u=o.name,h=!0;const c=g(s,u),d=F=>{h=Number.isNaN(F)||ye(F)&&isNaN(F.getTime())||fe(F,g(n,u,F))},y=mt(t.mode),p=mt(t.reValidateMode);if(c){let F,_;const N=o.type?ht(c._f):Ut(a),j=a.type===ot.BLUR||a.type===ot.FOCUS_OUT,ne=!Zt(c._f)&&!t.resolver&&!g(r.errors,u)&&!c._f.deps||rr(j,g(r.touchedFields,u),r.isSubmitted,p,y),q=gt(u,f,j);C(n,u,N),j?(!o||!o.readOnly)&&(c._f.onBlur&&c._f.onBlur(a),w&&w(0)):c._f.onChange&&c._f.onChange(a);const J=oe(u,N,j),qe=!Y(J)||q;if(!j&&m.state.next({name:u,type:a.type,values:P(n)}),ne)return(D.isValid||E.isValid)&&(t.mode==="onBlur"?j&&Z():j||Z()),qe&&m.state.next({name:u,...q?{}:J});if(!j&&q&&m.state.next({...r}),t.resolver){const{errors:ze}=await ie([u]);if(H([u]),d(N),h){const at=pt(r.errors,s,u),nt=pt(ze,s,at.name||u);F=nt.error,u=nt.name,_=Y(ze)}}else H([u],!0),F=(await wt(c,f.disabled,n,K,t.shouldUseNativeValidation))[u],H([u]),d(N),h&&(F?_=!1:(D.isValid||E.isValid)&&(_=await W(s,!0)));h&&(c._f.deps&&(!Array.isArray(c._f.deps)||c._f.deps.length>0)&&de(c._f.deps),me(u,_,F,J))}},z=(a,o)=>{if(g(r.errors,o)&&a.focus)return a.focus(),1},de=async(a,o={})=>{let u,h;const c=Re(a);if(t.resolver){const d=await ae(M(a)?a:c);u=Y(d),h=a?!c.some(y=>g(d,y)):u}else a?(h=(await Promise.all(c.map(async d=>{const y=g(s,d);return await W(y&&y._f?{[d]:y}:y)}))).every(Boolean),!(!h&&!r.isValid)&&Z()):h=u=await W(s);return m.state.next({...!X(a)||(D.isValid||E.isValid)&&u!==r.isValid?{}:{name:a},...t.resolver||!a?{isValid:u}:{},errors:r.errors}),o.shouldFocus&&!h&&Ne(s,z,a?c:f.mount),h},Oe=(a,o)=>{let u={...l.mount?n:i};return o&&(u=St(o.dirtyFields?r.dirtyFields:r.touchedFields,u)),M(a)?u:X(a)?g(u,a):a.map(h=>g(u,h))},Te=(a,o)=>({invalid:!!g((o||r).errors,a),isDirty:!!g((o||r).dirtyFields,a),error:g((o||r).errors,a),isValidating:!!g(r.validatingFields,a),isTouched:!!g((o||r).touchedFields,a)}),A=a=>{a&&Re(a).forEach(o=>U(r.errors,o)),m.state.next({errors:a?r.errors:{}})},pe=(a,o,u)=>{const h=(g(s,a,{_f:{}})._f||{}).ref,c=g(r.errors,a)||{},{ref:d,message:y,type:p,...F}=c;C(r.errors,a,{...F,...o,ref:h}),m.state.next({name:a,errors:r.errors,isValid:!1}),u&&u.shouldFocus&&h&&h.focus&&h.focus()},Me=(a,o)=>te(a)?m.state.subscribe({next:u=>"values"in u&&a(S(void 0,o),u)}):S(a,o,!0),Le=a=>m.state.subscribe({next:o=>{tr(a.name,o.name,a.exact)&&er(o,a.formState||D,Ke,a.reRenderRoot)&&a.callback({values:{...n},...r,...o,defaultValues:i})}}).unsubscribe,We=a=>(l.mount=!0,E={...E,...a.formState},Le({...a,formState:{...O,...a.formState}})),Ve=(a,o={})=>{for(const u of a?Re(a):f.mount)f.mount.delete(u),f.array.delete(u),o.keepValue||(U(s,u),U(n,u)),!o.keepError&&U(r.errors,u),!o.keepDirty&&U(r.dirtyFields,u),!o.keepTouched&&U(r.touchedFields,u),!o.keepIsValidating&&U(r.validatingFields,u),!t.shouldUnregister&&!o.keepDefaultValue&&U(i,u);m.state.next({values:P(n)}),m.state.next({...r,...o.keepDirty?{isDirty:V()}:{}}),!o.keepIsValid&&Z()},ke=({disabled:a,name:o})=>{(se(a)&&l.mount||a||f.disabled.has(o))&&(a?f.disabled.add(o):f.disabled.delete(o))},Ae=(a,o={})=>{let u=g(s,a);const h=se(o.disabled)||se(t.disabled);return C(s,a,{...u||{},_f:{...u&&u._f?u._f:{ref:{name:a}},name:a,mount:!0,...o}}),f.mount.add(a),u?ke({disabled:se(o.disabled)?o.disabled:t.disabled,name:a}):L(a,!0,o.value),{...h?{disabled:o.disabled||t.disabled}:{},...t.progressive?{required:!!o.required,min:De(o.min),max:De(o.max),minLength:De(o.minLength),maxLength:De(o.maxLength),pattern:De(o.pattern)}:{},name:a,onChange:ce,onBlur:ce,ref:c=>{if(c){Ae(a,o),u=g(s,a);const d=M(c.value)&&c.querySelectorAll&&c.querySelectorAll("input,select,textarea")[0]||c,y=Kt(d),p=u._f.refs||[];if(y?p.find(F=>F===d):d===u._f.ref)return;C(s,a,{_f:{...u._f,...y?{refs:[...p.filter(Je),d,...Array.isArray(g(i,a))?[{}]:[]],ref:{type:d.type,name:a}}:{ref:d}}}),L(a,!1,void 0,d)}else u=g(s,a,{}),u._f&&(u._f.mount=!1),(t.shouldUnregister||o.shouldUnregister)&&!(qt(f.array,a)&&l.action)&&f.unMount.add(a)}}},xe=()=>t.shouldFocusError&&Ne(s,z,f.mount),He=a=>{se(a)&&(m.state.next({disabled:a}),Ne(s,(o,u)=>{const h=g(s,u);h&&(o.disabled=h._f.disabled||a,Array.isArray(h._f.refs)&&h._f.refs.forEach(c=>{c.disabled=h._f.disabled||a}))},0,!1))},Ie=(a,o)=>async u=>{let h;u&&(u.preventDefault&&u.preventDefault(),u.persist&&u.persist());let c=P(n);if(m.state.next({isSubmitting:!0}),t.resolver){const{errors:d,values:y}=await ie();H(),r.errors=d,c=P(y)}else await W(s);if(f.disabled.size)for(const d of f.disabled)U(c,d);if(U(r.errors,"root"),Y(r.errors)){m.state.next({errors:{}});try{await a(c,u)}catch(d){h=d}}else o&&await o({...r.errors},u),xe(),setTimeout(xe);if(m.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:Y(r.errors)&&!h,submitCount:r.submitCount+1,errors:r.errors}),h)throw h},Ye=(a,o={})=>{g(s,a)&&(M(o.defaultValue)?$(a,P(g(i,a))):($(a,o.defaultValue),C(i,a,P(o.defaultValue))),o.keepTouched||U(r.touchedFields,a),o.keepDirty||(U(r.dirtyFields,a),r.isDirty=o.defaultValue?V(a,P(g(i,a))):V()),o.keepError||(U(r.errors,a),D.isValid&&Z()),m.state.next({...r}))},Se=(a,o={})=>{const u=a?P(a):i,h=P(u),c=Y(a),d=c?i:h;if(o.keepDefaultValues||(i=u),!o.keepValues){if(o.keepDirtyValues){const y=new Set([...f.mount,...Object.keys(Ee(i,n))]);for(const p of Array.from(y)){const F=g(r.dirtyFields,p),_=g(n,p),N=g(d,p);F&&!M(_)?C(d,p,_):!F&&!M(N)&&$(p,N)}}else{if(Ze&&M(a))for(const y of f.mount){const p=g(s,y);if(p&&p._f){const F=Array.isArray(p._f.refs)?p._f.refs[0]:p._f.ref;if(Pe(F)){const _=F.closest("form");if(_){_.reset();break}}}}if(o.keepFieldsRef)for(const y of f.mount)$(y,g(d,y));else s={}}n=t.shouldUnregister?o.keepDefaultValues?P(i):{}:P(d),m.array.next({values:{...d}}),m.state.next({values:{...d}})}f={mount:o.keepDirtyValues?f.mount:new Set,unMount:new Set,array:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:""},l.mount=!D.isValid||!!o.keepIsValid||!!o.keepDirtyValues||!t.shouldUnregister&&!Y(d),l.watch=!!t.shouldUnregister,l.keepIsValid=!!o.keepIsValid,l.action=!1,o.keepErrors||(r.errors={}),m.state.next({submitCount:o.keepSubmitCount?r.submitCount:0,isDirty:c?!1:o.keepDirty?r.isDirty:!!(o.keepDefaultValues&&!fe(a,i)),isSubmitted:o.keepIsSubmitted?r.isSubmitted:!1,dirtyFields:c?{}:o.keepDirtyValues?o.keepDefaultValues&&n?Ee(i,n):r.dirtyFields:o.keepDefaultValues&&a?Ee(i,a):o.keepDirty?r.dirtyFields:{},touchedFields:o.keepTouched?r.touchedFields:{},errors:o.keepErrors?r.errors:{},isSubmitSuccessful:o.keepIsSubmitSuccessful?r.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},Ue=(a,o)=>Se(te(a)?a(n):a,{...t.resetOptions,...o}),_e=(a,o={})=>{const u=g(s,a),h=u&&u._f;if(h){const c=h.refs?h.refs[0]:h.ref;c.focus&&setTimeout(()=>{c.focus(),o.shouldSelect&&te(c.select)&&c.select()})}},Ke=a=>{r={...r,...a}},Be={control:{register:Ae,unregister:Ve,getFieldState:Te,handleSubmit:Ie,setError:pe,_subscribe:Le,_runSchema:ie,_updateIsValidating:H,_focusError:xe,_getWatch:S,_getDirty:V,_setValid:Z,_setFieldArray:x,_setDisabledField:ke,_setErrors:k,_getFieldArray:R,_reset:Se,_resetDefaultValues:()=>te(t.defaultValues)&&t.defaultValues().then(a=>{Ue(a,t.resetOptions),m.state.next({isLoading:!1})}),_removeUnmounted:le,_disableForm:He,_subjects:m,_proxyFormState:D,get _fields(){return s},get _formValues(){return n},get _state(){return l},set _state(a){l=a},get _defaultValues(){return i},get _names(){return f},set _names(a){f=a},get _formState(){return r},get _options(){return t},set _options(a){t={...t,...a}}},subscribe:We,trigger:de,register:Ae,handleSubmit:Ie,watch:Me,setValue:$,getValues:Oe,reset:Ue,resetField:Ye,clearErrors:A,unregister:Ve,setError:pe,setFocus:_e,getFieldState:Te};return{...Be,formControl:Be}}function ur(e={}){const t=v.useRef(void 0),r=v.useRef(void 0),[s,i]=v.useState({isDirty:!1,isValidating:!1,isLoading:te(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:te(e.defaultValues)?void 0:e.defaultValues});if(!t.current)if(e.formControl)t.current={...e.formControl,formState:s},e.defaultValues&&!te(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{const{formControl:l,...f}=nr(e);t.current={...f,formState:s}}const n=t.current.control;return n._options=e,Wt(()=>{const l=n._subscribe({formState:n._proxyFormState,callback:()=>i({...n._formState}),reRenderRoot:!0});return i(f=>({...f,isReady:!0})),n._formState.isReady=!0,l},[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 l=n._getDirty();l!==s.isDirty&&n._subjects.state.next({isDirty:l})}},[n,s.isDirty]),v.useEffect(()=>{var l;e.values&&!fe(e.values,r.current)?(n._reset(e.values,{keepFieldsRef:!0,...n._options.resetOptions}),!((l=n._options.resetOptions)===null||l===void 0)&&l.keepIsValid||n._setValid(),r.current=e.values,i(f=>({...f}))):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=jt(s,n),t.current}function or(){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 lr={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 he(e,t){var r;switch(e.Type){case"Literal":return e.Value;case"SystemIdentifier":if(e.Property){const b=t.systemValues[e.Name];return Ge(b,e.Property.Name)}return t.systemValues[e.Name];case"Identifier":if(e.Property){const b=vt(e,t);return Ge(b,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=he(e.Arguments[0],t),i=(r=e.Arguments[0].Property)==null?void 0:r.Name;return i?Ge(s,i):s;case"BinaryExpression":if(!e.Arguments||e.Arguments.length!==2)throw new Error("BinaryExpression requires exactly 2 arguments");const n=he(e.Arguments[0],t),l=he(e.Arguments[1],t);return cr(e.Operator,n,l);case"LogicalExpression":if(!e.Arguments||e.Arguments.length<2)throw new Error("LogicalExpression requires at least 2 arguments");return dr(e.Operator,e.Arguments,t);case"CallExpression":if(!e.Callee)throw new Error("CallExpression requires Callee");const f=lr[e.Callee];if(!f)throw new Error(`Unknown function: ${e.Callee}`);const w=(e.Arguments||[]).map(b=>he(b,t));return f(...w);case"AssignmentExpression":if(!e.Arguments||e.Arguments.length!==1)throw new Error("AssignmentExpression requires exactly 1 argument");return he(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 Ge(e,t){if(!(!e||typeof e!="object"))return e[t]}function cr(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 dr(e,t,r){switch(e){case"AND":return t.every(s=>!!he(s,r));case"OR":return t.some(s=>!!he(s,r));default:throw new Error(`Unknown logical operator: ${e}`)}}function Ot(e,t,r={}){const s={formValues:t,systemValues:or(),referenceData:r};try{return he(e,s)}catch(i){return console.warn("Expression evaluation failed:",i),!1}}function Et(e,t,r={}){const s=[];for(const i of e)try{Ot(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 fr(e,t={},r={}){try{return Ot(e,t,r)}catch(s){return console.warn("Default value calculation failed:",s),null}}function Ft(e,t){var f,w,b;const r=((f=e.Expression)==null?void 0:f.toLowerCase())||"",s=((w=e.Name)==null?void 0:w.toLowerCase())||"",i=((b=e.Id)==null?void 0:b.toLowerCase())||"",n=t.toLowerCase();return s.includes("required")||i.includes("required")?!0:[`${n} != null`,`${n} != ''`,`trim(${n}) != ''`,`${n}!=null`,`${n}!=''`].some(O=>r.includes(O))}function hr(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 l=[];i.Validation.forEach(f=>{t.Rules.Validation[f.Id]=f,l.push(f.Id),Ft(f,s)&&(n=!0)}),r[s]={...i,Validation:l,Required:n}}else i.Validation.forEach(f=>{var b;const w=(b=t.Rules.Validation)==null?void 0:b[f];w&&Ft(w,s)&&(n=!0)}),n&&!i.Required&&(r[s]={...i,Required:!0});if(i.Formula){const l=`RULE_COMPUTE_${s.toUpperCase()}`;t.Rules.Computation[l]={Id:l,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 mr(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 yr(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 l=i.toUpperCase().replace(/[_-]/g,"");for(const w of r){const b=w.toUpperCase().replace(/[_-]/g,"");if(l.includes(b)){t[i]=w;return}}const f=`${n.Name||""} ${n.Description||""}`.toLowerCase();for(const w of r)if(f.includes(w.toLowerCase())){t[i]=w;return}}),t}function gr(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(f=>{t.validation[f]?r[i].validation.push(f):t.computation[f]?r[i].computation.push(f):t.businessLogic[f]&&r[i].businessLogic.push(f)}),n.Formula&&Object.entries(t.computation).forEach(([l,f])=>{var w;f.Expression===((w=n.Formula)==null?void 0:w.Expression)&&(r[i].computation.includes(l)||r[i].computation.push(l))})});const s=yr(e);return Object.entries(s).forEach(([i,n])=>{r[n]&&!r[n].computation.includes(i)&&r[n].computation.push(i)}),r}function pr(e,t){const r={},s={editable:!0,readable:!0,hidden:!1};return Object.keys(e.Fields).forEach(i=>{var w,b,O,D,E,m;if(!t||!((w=e.RolePermission)!=null&&w[t])){r[i]=s;return}const n=e.RolePermission[t],l=((b=n.Editable)==null?void 0:b.includes(i))||((O=n.Editable)==null?void 0:O.includes("*"))||!1,f=((D=n.ReadOnly)==null?void 0:D.includes(i))||((E=n.ReadOnly)==null?void 0:E.includes("*"))||l;r[i]={editable:l&&!((m=n.ReadOnly)!=null&&m.includes(i)),readable:f,hidden:!f}}),r}function br(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 Tt(e){return e.replace(/([A-Z])/g," $1").replace(/^./,t=>t.toUpperCase()).replace(/_/g," ").trim()}function wr(e,t,r){const s={};switch(t.Required&&(s.required={value:!0,message:`${Tt(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 vr(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 Er(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 fr(e.DefaultValue.ExpressionTree,t)}function Fr(e,t,r,s={},i,n){const l={editable:!0,readable:!0,hidden:!1},w=n||{validation:[],computation:[],businessLogic:[]},b=t.Computed||!!t.Formula||w.computation.length>0,O=wr(e,t);return b&&(O.disabled=!0),{name:e,type:br(t.Type,e),label:t.Name||Tt(e),required:t.Required||!1,computed:b,defaultValue:Er(t,s),options:vr(t),validation:O,description:t.Description,_bdoField:t,permission:i||l,rules:w}}function Vr(e,t={},r){let s=e;s=hr(s);const i={},n=[],l=[],f=[],w=[],b=mr(s),O=gr(s,b),D=pr(s,r);for(const[E,m]of Object.entries(s.Fields)){if(E.startsWith("_")&&!["_id"].includes(E))continue;const K=D[E];if(K.hidden)continue;const T=Fr(E,m,s.Fields,t,K,O[E]||{validation:[],computation:[],businessLogic:[]});i[E]=T,n.push(E),T.computed&&l.push(E),T.required&&f.push(E)}return{fields:i,fieldOrder:n,computedFields:l,requiredFields:f,crossFieldValidation:w,rules:b,fieldRules:O,rolePermissions:s.RolePermission}}function Ar(e){var r;if(e.type!=="reference"||!((r=e._bdoField.Values)!=null&&r.Reference))return null;const t=e._bdoField.Values.Reference;return{businessObject:t.BusinessObject,fields:t.Fields||["_id"],filters:t.Filters,sort:t.Sort}}function xr(e){const t={};for(const[r,s]of Object.entries(e.fields))if(s.type==="reference"){const i=Ar(s);i&&(t[r]=i)}return t}async function Sr(e){try{const r=(await It.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 _r(e,t=3){let r;for(let s=1;s<=t;s++)try{return await Sr(e)}catch(i){if(r=ve.toError(i),s<t){const n=Math.min(1e3*Math.pow(2,s-1),5e3);await new Promise(l=>setTimeout(l,n));continue}}throw r}async function Dr(e,t){try{return await ge.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 Rr(e,t,r,s){try{let i;if(t==="create")return i=await ge.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 ge.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"}`)}}}async function Nr(e,t=["_id"],r,s){try{const i={};return r&&(i.Filter=r),s&&(i.Sort=s),t.length>0&&(i.Field=t),(await ge.api(e).list(i)).Data||[]}catch(i){return console.error(`Reference data fetch error for ${e}:`,i),[]}}async function Cr(e){const t={},r=Object.entries(e).map(async([i,n])=>{try{const l=await Nr(n.businessObject,n.fields,n.filters,n.sort);return[i,l]}catch(l){return console.warn(`Failed to fetch reference data for ${i}:`,l),[i,[]]}});return(await Promise.allSettled(r)).forEach(i=>{if(i.status==="fulfilled"){const[n,l]=i.value;t[n]=Array.isArray(l)?l:[]}}),t}function Or(e,t,r="create",s){const i={};return Object.keys(e).forEach(n=>{const l=n,f=e[l];if(!t.includes(n)&&f!==void 0){if(r==="create"){i[l]=f;return}if(r==="update"){if(!s){i[l]=f;return}const w=s[l];JSON.stringify(f)!==JSON.stringify(w)&&(i[l]=f)}}}),i}function Tr(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 Mr(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 Lr(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 Fe=new Map;function kr(e,t,r=10){Fe.set(e,{data:t,timestamp:Date.now(),ttl:r*60*1e3})}function Ir(e){const t=Fe.get(e);return t?Date.now()-t.timestamp>t.ttl?(Fe.delete(e),null):t.data:null}function Ur(e){e?Array.from(Fe.keys()).filter(r=>r.startsWith(e)).forEach(r=>Fe.delete(r)):Fe.clear()}async function Br(e){const t=`schema:${e}`,r=Ir(t);if(r)return r;const s=await _r(e);return kr(t,s,30),s}class Vt{constructor(t=1e3){be(this,"cache",new Map);be(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 qr(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 Pr{constructor(){be(this,"resultCache",new Vt(500));be(this,"dependencyCache",new Vt(200));be(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=qr(t),this.dependencyCache.set(r,s)),s}getCachedResult(t,r,s){if(!s)return;const i=this.getDependencies(t);for(const l of i)if(r[l]!==s[l])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),l=this.createCacheKey(t,r);return this.resultCache.set(l,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(b=>String(b||"")).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((b,O)=>b+(Number(O)||0),0);case"AVG":const n=s.filter(b=>!isNaN(Number(b)));return n.length>0?n.reduce((b,O)=>b+Number(O),0)/n.length:0;case"MIN":return Math.min(...s.map(b=>Number(b)||0));case"MAX":return Math.max(...s.map(b=>Number(b)||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 l=new Date(s[0]),f=new Date(s[1]),w=Math.abs(l.getTime()-f.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 Mt=new Pr;function $r(e,t,r,s,i){if(!r||r.length===0)return{isValid:!0};const n={...s,[e]:t};for(const l of r)try{if(!Mt.evaluate(l.ExpressionTree,n,i))return{isValid:!1,message:l.Message||`Validation failed for ${l.Name}`,fieldName:e}}catch(f){console.warn(`Validation rule ${l.Id} failed to evaluate:`,f)}return{isValid:!0}}function At(e){return Array.from(Mt.getDependencies(e))}function jr(e){const{source:t,operation:r,recordId:s,defaultValues:i={},mode:n="onBlur",enabled:l=!0,userRole:f,onSchemaError:w,skipSchemaFetch:b=!1,schema:O,interactionMode:D="interactive"}=e,E=D==="interactive",[m,K]=v.useState(null),[T,Z]=v.useState({}),[H,x]=v.useState(!1),[ee]=v.useState({}),[k,L]=v.useState(null),[oe,me]=v.useState(!1),[ie,ae]=v.useState(null),W=v.useRef(!1),le=v.useRef(null),V=v.useRef(null),S=v.useRef(!1),R=v.useRef(w);v.useEffect(()=>{R.current=w},[w]);const{data:I,isLoading:Q,error:$,refetch:ce}=ut.useQuery({queryKey:["form-schema",t],queryFn:()=>b?Promise.resolve(O||{}):Br(t),enabled:l&&(!b||!!O),retry:3,staleTime:30*60*1e3,gcTime:60*60*1e3,throwOnError:!1}),{data:z,isLoading:de,error:Oe}=ut.useQuery({queryKey:["form-record",t,s],queryFn:()=>Dr(t,s),enabled:l&&r==="update"&&!!s,retry:3,staleTime:5*60*1e3,gcTime:15*60*1e3,throwOnError:!1}),Te=v.useMemo(()=>{const u={...i};if(r==="update"&&z&&Object.assign(u,z),m)for(const[h,c]of Object.entries(m.fields))c.defaultValue!==void 0&&!(h in u)&&(u[h]=c.defaultValue);return u},[i,z,r,m]),A=ur({mode:n,defaultValues:i,values:r==="update"&&z?Te:void 0});v.useEffect(()=>{var u;if(I)try{const h=Vr(I,{},f);K(h);const c=xr(h);Object.keys(c).length>0&&Cr(c).then(Z).catch(d=>{var p;const y=ve.toError(d);console.warn("Failed to fetch reference data:",y),(p=R.current)==null||p.call(R,y)})}catch(h){console.error("Schema processing failed:",h),(u=R.current)==null||u.call(R,ve.toError(h))}},[I,f]),v.useEffect(()=>{var u;$&&((u=R.current)==null||u.call(R,$))},[$]),v.useEffect(()=>{if(!E||r!=="create"||!m||!l||k||S.current)return;S.current=!0;let u=!0;return(async()=>{me(!0),ae(null);try{const d=await ge.api(t).draftInteraction({});if(!u)return;L(d._id),d&&typeof d=="object"&&Object.entries(d).forEach(([y,p])=>{if(y==="_id")return;A.getValues(y)!==p&&A.setValue(y,p,{shouldDirty:!1,shouldValidate:!1})})}catch(c){if(!u)return;console.error("Failed to create initial draft:",c),ae(ve.toError(c)),S.current=!1}finally{u&&me(!1)}})(),()=>{u=!1}},[E,r,m,l,k,t]);const pe=v.useMemo(()=>{if(!m)return[];const u=new Set,h=new Set(m.computedFields);return Object.entries(m.fieldRules).forEach(([c,d])=>{d.computation.forEach(y=>{const p=m.rules.computation[y];p!=null&&p.ExpressionTree&&At(p.ExpressionTree).forEach(_=>{m.fields[_]&&_!==c&&!h.has(_)&&u.add(_)})})}),m.computedFields.forEach(c=>{const d=m.fields[c];d._bdoField.Formula&&At(d._bdoField.Formula.ExpressionTree).forEach(p=>{m.fields[p]&&p!==c&&!h.has(p)&&u.add(p)})}),Array.from(u)},[m]),Me=v.useCallback(async u=>{if(!(!m||!(E&&r!=="update"||pe.length>0&&pe.includes(u)))){if(E&&r==="create"&&!k){console.warn("Interactive create mode: waiting for draft ID");return}W.current||(le.current&&clearTimeout(le.current),le.current=setTimeout(()=>{if(!m||W.current)return;const c=A.getValues();(async()=>{W.current=!0;try{const y=ge.api(t),p={};r==="update"&&s&&"_id"in c&&(p._id=c._id),E&&r==="create"&&k&&(p._id=k);const F=V.current??(r==="update"?z:null)??{},_=new Set(m.computedFields||[]);Object.keys(c).forEach(q=>{if(q==="_id"||_.has(q))return;const J=c[q],qe=F[q];JSON.stringify(J)!==JSON.stringify(qe)&&(J!==""&&J!==null&&J!==void 0)&&(p[q]=J)});const N=p,j={...V.current};Object.keys(c).forEach(q=>{_.has(q)||(j[q]=c[q])}),V.current=j;let ne;r==="update"&&s?ne=await y.draftPatch(s,N):E&&k?ne=await y.draftInteraction(N):ne=await y.draft(N),ne&&typeof ne=="object"&&(Object.entries(ne).forEach(([q,J])=>{c[q]!==J&&A.setValue(q,J,{shouldDirty:!1,shouldValidate:!1})}),Object.entries(ne).forEach(([q,J])=>{_.has(q)&&(V.current[q]=J)}))}catch(y){console.warn("Failed to compute fields via API:",y)}finally{W.current=!1}})()},300))}},[m,r,s,z,t,A,pe,E,k]),Le=v.useCallback(async()=>{if(!m)return!1;const u=A.getValues();if(!await A.trigger())return!1;const c=m.crossFieldValidation.map(y=>({Id:y.Id,Condition:{ExpressionTree:y.ExpressionTree},Message:y.Message||`Validation failed for ${y.Name}`})),d=Et(c,u,T);return d.length>0?(d.forEach((y,p)=>{A.setError(`root.crossField${p}`,{type:"validate",message:y.message})}),!1):!0},[m,A.getValues,A.trigger,A.setError,T]),We=v.useCallback((u,h)=>A.handleSubmit(async(c,d)=>{if(!m){const y=new Error("Schema not loaded");h==null||h(y,d);return}x(!0);try{const y=m.crossFieldValidation.map(N=>({Id:N.Id,Condition:{ExpressionTree:N.ExpressionTree},Message:N.Message||`Validation failed for ${N.Name}`})),p=Et(y,c,T);if(p.length>0){p.forEach((N,j)=>{A.setError(`root.crossField${j}`,{type:"validate",message:N.message})}),h==null||h(A.formState.errors,d);return}const F=Or(c,m.computedFields,r,z);let _;if(E){const N=ge.api(t);if(r==="create"){if(!k)throw new Error("Interactive create mode requires a draft ID. Draft creation may have failed.");_={success:!0,data:await N.draft({...F,_id:k})}}else _={success:!0,data:await N.update(s,F)}}else if(_=await Rr(t,r,F,s),!_.success)throw _.error||new Error("Submission failed");r==="create"&&(A.reset(),E&&L(null)),await(u==null?void 0:u(_.data||c,d))}catch(y){h==null||h(ve.toError(y),d)}finally{x(!1)}},(c,d)=>{h==null||h(c,d)}),[A,m,T,t,r,s,z,E,k]),Ve=v.useCallback(u=>(m==null?void 0:m.fields[u])||null,[m]),ke=v.useCallback(()=>{if(!m)return{};const u={};return Object.entries(m.fields).forEach(([h,c])=>{u[h]=c}),u},[m]),Ae=v.useCallback(u=>!!(m!=null&&m.fields[u]),[m]),xe=v.useCallback(u=>(m==null?void 0:m.requiredFields.includes(u))||!1,[m]),He=v.useCallback(u=>(m==null?void 0:m.computedFields.includes(u))||!1,[m]),Ie=v.useCallback(async()=>{await ce()},[ce]),Ye=v.useCallback(()=>{A.clearErrors()},[A]),Se=Q||r==="update"&&de||E&&r==="create"&&oe,Ue=Se||H,_e=$||Oe||ie,Ke=!!_e,it=v.useMemo(()=>(m==null?void 0:m.computedFields)||[],[m]),Be=v.useMemo(()=>(m==null?void 0:m.requiredFields)||[],[m]),a=v.useMemo(()=>{if(!m)return{};const u={};return Object.entries(m.fields).forEach(([h,c])=>{const d={};switch(c.required&&(d.required=`${c.label} is required`),c.permission.editable||(d.disabled=!0),c.type){case"number":d.valueAsNumber=!0;break;case"date":case"datetime-local":d.valueAsDate=!0;break}const y=c.rules.validation;y.length>0&&(d.validate={expressionValidation:p=>{const F=A.getValues();for(const _ of y){const N=m.rules.validation[_];if(N){const j=$r(h,p,[N],F,ee);if(!j.isValid)return j.message||N.Message||"Invalid value"}}return!0}}),u[h]=d}),u},[m,A,T]);return{register:v.useCallback((u,h)=>{const c=a[u],d=h==null?void 0:h.onBlur,y=async p=>{d&&await d(p);let F=!0;n==="onBlur"||n==="onTouched"||n==="all"?F=await A.trigger(u):F=!A.getFieldState(u,A.formState).error,F&&await Me(u)};return A.register(u,{...c,...h,onBlur:y})},[A,a,Me,n]),handleSubmit:We,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||H,isSubmitSuccessful:A.formState.isSubmitSuccessful,isLoadingInitialData:Se,isLoadingRecord:de,isLoading:Ue,draftId:k,isCreatingDraft:oe,loadError:_e?ve.toError(_e):null,hasError:Ke,schema:I,schemaConfig:m,computedFields:it,requiredFields:Be,getField:Ve,getFields:ke,hasField:Ae,isFieldRequired:xe,isFieldComputed:He,refreshSchema:Ie,validateForm:Le,clearErrors:Ye}}exports.clearFormCache=Ur;exports.isNetworkError=Mr;exports.isValidationError=Lr;exports.parseApiError=Tr;exports.useForm=jr;
|