@ram_28/kf-ai-sdk 1.0.20 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/datetime.d.ts +59 -10
- package/dist/api/datetime.d.ts.map +1 -1
- package/dist/api/index.d.ts +3 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api.cjs +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.mjs +43 -21
- package/dist/api.types.d.ts +2 -1
- package/dist/api.types.d.ts.map +1 -1
- package/dist/auth/AuthProvider.d.ts.map +1 -1
- package/dist/auth.cjs +1 -1
- package/dist/auth.mjs +34 -34
- package/dist/base-types.d.ts +1 -1
- package/dist/base-types.d.ts.map +1 -1
- package/dist/client-BIkaIr2y.js +217 -0
- package/dist/client-DxjRcEtN.cjs +1 -0
- package/dist/components/hooks/useForm/apiClient.d.ts +45 -4
- package/dist/components/hooks/useForm/apiClient.d.ts.map +1 -1
- package/dist/components/hooks/useForm/useForm.d.ts.map +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.mjs +736 -761
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/kanban.cjs +1 -1
- package/dist/kanban.mjs +1 -1
- package/dist/{metadata-0lZAfuTP.cjs → metadata-Bz8zJqC1.cjs} +1 -1
- package/dist/{metadata-B88D_pVS.js → metadata-VbQzyD2C.js} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.mjs +1 -1
- package/dist/types/base-fields.d.ts +71 -17
- package/dist/types/base-fields.d.ts.map +1 -1
- package/dist/types/common.d.ts +0 -12
- package/dist/types/common.d.ts.map +1 -1
- package/package.json +1 -1
- package/sdk/api/client.ts +3 -41
- package/sdk/api/datetime.ts +98 -14
- package/sdk/api/index.ts +12 -6
- package/sdk/api.ts +6 -3
- package/sdk/api.types.ts +3 -4
- package/sdk/auth/AuthProvider.tsx +22 -24
- package/sdk/base-types.ts +2 -0
- package/sdk/components/hooks/useForm/apiClient.ts +118 -4
- package/sdk/components/hooks/useForm/useForm.ts +70 -58
- package/sdk/index.ts +3 -0
- package/sdk/types/base-fields.ts +71 -17
- package/sdk/types/common.ts +2 -13
- package/dist/client-DgtkT50N.cjs +0 -1
- package/dist/client-V-WzUb8H.js +0 -237
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
let n = {
|
|
2
|
+
baseUrl: "",
|
|
3
|
+
headers: {
|
|
4
|
+
"Content-Type": "application/json"
|
|
5
|
+
}
|
|
6
|
+
};
|
|
7
|
+
function $(r) {
|
|
8
|
+
n.baseUrl = r;
|
|
9
|
+
}
|
|
10
|
+
function h(r) {
|
|
11
|
+
n.headers = { ...n.headers, ...r };
|
|
12
|
+
}
|
|
13
|
+
function d() {
|
|
14
|
+
return { ...n.headers };
|
|
15
|
+
}
|
|
16
|
+
function u() {
|
|
17
|
+
return n.baseUrl || "";
|
|
18
|
+
}
|
|
19
|
+
function w(r) {
|
|
20
|
+
const s = n.baseUrl, o = n.headers;
|
|
21
|
+
return {
|
|
22
|
+
async get(t) {
|
|
23
|
+
const e = await fetch(`${s}/api/app/${r}/${t}/read`, {
|
|
24
|
+
method: "GET",
|
|
25
|
+
headers: o
|
|
26
|
+
});
|
|
27
|
+
if (!e.ok)
|
|
28
|
+
throw new Error(`Failed to get ${r} ${t}: ${e.statusText}`);
|
|
29
|
+
return (await e.json()).Data;
|
|
30
|
+
},
|
|
31
|
+
async create(t) {
|
|
32
|
+
const e = await fetch(`${s}/api/app/${r}/create`, {
|
|
33
|
+
method: "POST",
|
|
34
|
+
headers: o,
|
|
35
|
+
body: JSON.stringify(t)
|
|
36
|
+
});
|
|
37
|
+
if (!e.ok)
|
|
38
|
+
throw new Error(`Failed to create ${r}: ${e.statusText}`);
|
|
39
|
+
return e.json();
|
|
40
|
+
},
|
|
41
|
+
async update(t, e) {
|
|
42
|
+
const a = await fetch(`${s}/api/app/${r}/${t}/update`, {
|
|
43
|
+
method: "POST",
|
|
44
|
+
headers: o,
|
|
45
|
+
body: JSON.stringify(e)
|
|
46
|
+
});
|
|
47
|
+
if (!a.ok)
|
|
48
|
+
throw new Error(
|
|
49
|
+
`Failed to update ${r} ${t}: ${a.statusText}`
|
|
50
|
+
);
|
|
51
|
+
return a.json();
|
|
52
|
+
},
|
|
53
|
+
async delete(t) {
|
|
54
|
+
const e = await fetch(`${s}/api/app/${r}/${t}/delete`, {
|
|
55
|
+
method: "DELETE",
|
|
56
|
+
headers: o
|
|
57
|
+
});
|
|
58
|
+
if (!e.ok)
|
|
59
|
+
throw new Error(
|
|
60
|
+
`Failed to delete ${r} ${t}: ${e.statusText}`
|
|
61
|
+
);
|
|
62
|
+
return e.json();
|
|
63
|
+
},
|
|
64
|
+
async list(t) {
|
|
65
|
+
const e = {
|
|
66
|
+
Type: "List",
|
|
67
|
+
...t
|
|
68
|
+
}, a = await fetch(`${s}/api/app/${r}/list`, {
|
|
69
|
+
method: "POST",
|
|
70
|
+
headers: o,
|
|
71
|
+
body: JSON.stringify(e)
|
|
72
|
+
});
|
|
73
|
+
if (!a.ok)
|
|
74
|
+
throw new Error(`Failed to list ${r}: ${a.statusText}`);
|
|
75
|
+
return await a.json();
|
|
76
|
+
},
|
|
77
|
+
async count(t) {
|
|
78
|
+
var c, p;
|
|
79
|
+
const e = {
|
|
80
|
+
Type: "Metric",
|
|
81
|
+
GroupBy: [],
|
|
82
|
+
Metric: [{ Field: "_id", Type: "Count" }],
|
|
83
|
+
...(t == null ? void 0 : t.Filter) && { Filter: t.Filter }
|
|
84
|
+
}, a = await fetch(`${s}/api/app/${r}/metric`, {
|
|
85
|
+
method: "POST",
|
|
86
|
+
headers: o,
|
|
87
|
+
body: JSON.stringify(e)
|
|
88
|
+
});
|
|
89
|
+
if (!a.ok)
|
|
90
|
+
throw new Error(`Failed to count ${r}: ${a.statusText}`);
|
|
91
|
+
return { Count: ((p = (c = (await a.json()).Data) == null ? void 0 : c[0]) == null ? void 0 : p.count__id) ?? 0 };
|
|
92
|
+
},
|
|
93
|
+
// ============================================================
|
|
94
|
+
// DRAFT/INTERACTIVE OPERATIONS
|
|
95
|
+
// ============================================================
|
|
96
|
+
async draft(t) {
|
|
97
|
+
const e = await fetch(`${s}/api/app/${r}/draft`, {
|
|
98
|
+
method: "POST",
|
|
99
|
+
headers: o,
|
|
100
|
+
body: JSON.stringify(t)
|
|
101
|
+
});
|
|
102
|
+
if (!e.ok)
|
|
103
|
+
throw new Error(
|
|
104
|
+
`Failed to create draft for ${r}: ${e.statusText}`
|
|
105
|
+
);
|
|
106
|
+
return e.json();
|
|
107
|
+
},
|
|
108
|
+
async draftUpdate(t, e) {
|
|
109
|
+
const a = await fetch(`${s}/api/app/${r}/${t}/draft`, {
|
|
110
|
+
method: "POST",
|
|
111
|
+
headers: o,
|
|
112
|
+
body: JSON.stringify(e)
|
|
113
|
+
});
|
|
114
|
+
if (!a.ok)
|
|
115
|
+
throw new Error(
|
|
116
|
+
`Failed to update draft for ${r} ${t}: ${a.statusText}`
|
|
117
|
+
);
|
|
118
|
+
return a.json();
|
|
119
|
+
},
|
|
120
|
+
async draftPatch(t, e) {
|
|
121
|
+
const a = await fetch(`${s}/api/app/${r}/${t}/draft`, {
|
|
122
|
+
method: "PATCH",
|
|
123
|
+
headers: o,
|
|
124
|
+
body: JSON.stringify(e)
|
|
125
|
+
});
|
|
126
|
+
if (!a.ok)
|
|
127
|
+
throw new Error(
|
|
128
|
+
`Failed to patch draft for ${r} ${t}: ${a.statusText}`
|
|
129
|
+
);
|
|
130
|
+
return a.json();
|
|
131
|
+
},
|
|
132
|
+
async draftInteraction(t) {
|
|
133
|
+
const e = await fetch(`${s}/api/app/${r}/draft`, {
|
|
134
|
+
method: "PATCH",
|
|
135
|
+
headers: o,
|
|
136
|
+
body: JSON.stringify(t)
|
|
137
|
+
});
|
|
138
|
+
if (!e.ok)
|
|
139
|
+
throw new Error(
|
|
140
|
+
`Failed to create interactive draft for ${r}: ${e.statusText}`
|
|
141
|
+
);
|
|
142
|
+
const a = await e.json();
|
|
143
|
+
return {
|
|
144
|
+
...a.Data,
|
|
145
|
+
_id: a.Data._id
|
|
146
|
+
};
|
|
147
|
+
},
|
|
148
|
+
// ============================================================
|
|
149
|
+
// QUERY OPERATIONS
|
|
150
|
+
// ============================================================
|
|
151
|
+
async metric(t) {
|
|
152
|
+
const e = {
|
|
153
|
+
Type: "Metric",
|
|
154
|
+
...t
|
|
155
|
+
}, a = await fetch(`${s}/api/app/${r}/metric`, {
|
|
156
|
+
method: "POST",
|
|
157
|
+
headers: o,
|
|
158
|
+
body: JSON.stringify(e)
|
|
159
|
+
});
|
|
160
|
+
if (!a.ok)
|
|
161
|
+
throw new Error(
|
|
162
|
+
`Failed to get metrics for ${r}: ${a.statusText}`
|
|
163
|
+
);
|
|
164
|
+
return a.json();
|
|
165
|
+
},
|
|
166
|
+
async pivot(t) {
|
|
167
|
+
const e = {
|
|
168
|
+
Type: "Pivot",
|
|
169
|
+
...t
|
|
170
|
+
}, a = await fetch(`${s}/api/app/${r}/pivot`, {
|
|
171
|
+
method: "POST",
|
|
172
|
+
headers: o,
|
|
173
|
+
body: JSON.stringify(e)
|
|
174
|
+
});
|
|
175
|
+
if (!a.ok)
|
|
176
|
+
throw new Error(
|
|
177
|
+
`Failed to get pivot data for ${r}: ${a.statusText}`
|
|
178
|
+
);
|
|
179
|
+
return a.json();
|
|
180
|
+
},
|
|
181
|
+
// ============================================================
|
|
182
|
+
// METADATA OPERATIONS
|
|
183
|
+
// ============================================================
|
|
184
|
+
async fields() {
|
|
185
|
+
const t = await fetch(`${s}/api/app/${r}/fields`, {
|
|
186
|
+
method: "GET",
|
|
187
|
+
headers: o
|
|
188
|
+
});
|
|
189
|
+
if (!t.ok)
|
|
190
|
+
throw new Error(
|
|
191
|
+
`Failed to get fields for ${r}: ${t.statusText}`
|
|
192
|
+
);
|
|
193
|
+
return t.json();
|
|
194
|
+
},
|
|
195
|
+
async fetchField(t, e) {
|
|
196
|
+
const a = await fetch(
|
|
197
|
+
`${s}/api/app/${r}/${t}/field/${e}/fetch`,
|
|
198
|
+
{
|
|
199
|
+
method: "GET",
|
|
200
|
+
headers: o
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
if (!a.ok)
|
|
204
|
+
throw new Error(
|
|
205
|
+
`Failed to fetch field ${e} for ${r}: ${a.statusText}`
|
|
206
|
+
);
|
|
207
|
+
return (await a.json()).Data;
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
export {
|
|
212
|
+
w as a,
|
|
213
|
+
h as b,
|
|
214
|
+
u as c,
|
|
215
|
+
d as g,
|
|
216
|
+
$ as s
|
|
217
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";let n={baseUrl:"",headers:{"Content-Type":"application/json"}};function f(r){n.baseUrl=r}function $(r){n.headers={...n.headers,...r}}function d(){return{...n.headers}}function h(){return n.baseUrl||""}function u(r){const s=n.baseUrl,o=n.headers;return{async get(t){const e=await fetch(`${s}/api/app/${r}/${t}/read`,{method:"GET",headers:o});if(!e.ok)throw new Error(`Failed to get ${r} ${t}: ${e.statusText}`);return(await e.json()).Data},async create(t){const e=await fetch(`${s}/api/app/${r}/create`,{method:"POST",headers:o,body:JSON.stringify(t)});if(!e.ok)throw new Error(`Failed to create ${r}: ${e.statusText}`);return e.json()},async update(t,e){const a=await fetch(`${s}/api/app/${r}/${t}/update`,{method:"POST",headers:o,body:JSON.stringify(e)});if(!a.ok)throw new Error(`Failed to update ${r} ${t}: ${a.statusText}`);return a.json()},async delete(t){const e=await fetch(`${s}/api/app/${r}/${t}/delete`,{method:"DELETE",headers:o});if(!e.ok)throw new Error(`Failed to delete ${r} ${t}: ${e.statusText}`);return e.json()},async list(t){const e={Type:"List",...t},a=await fetch(`${s}/api/app/${r}/list`,{method:"POST",headers:o,body:JSON.stringify(e)});if(!a.ok)throw new Error(`Failed to list ${r}: ${a.statusText}`);return await a.json()},async count(t){var c,p;const e={Type:"Metric",GroupBy:[],Metric:[{Field:"_id",Type:"Count"}],...(t==null?void 0:t.Filter)&&{Filter:t.Filter}},a=await fetch(`${s}/api/app/${r}/metric`,{method:"POST",headers:o,body:JSON.stringify(e)});if(!a.ok)throw new Error(`Failed to count ${r}: ${a.statusText}`);return{Count:((p=(c=(await a.json()).Data)==null?void 0:c[0])==null?void 0:p.count__id)??0}},async draft(t){const e=await fetch(`${s}/api/app/${r}/draft`,{method:"POST",headers:o,body:JSON.stringify(t)});if(!e.ok)throw new Error(`Failed to create draft for ${r}: ${e.statusText}`);return e.json()},async draftUpdate(t,e){const a=await fetch(`${s}/api/app/${r}/${t}/draft`,{method:"POST",headers:o,body:JSON.stringify(e)});if(!a.ok)throw new Error(`Failed to update draft for ${r} ${t}: ${a.statusText}`);return a.json()},async draftPatch(t,e){const a=await fetch(`${s}/api/app/${r}/${t}/draft`,{method:"PATCH",headers:o,body:JSON.stringify(e)});if(!a.ok)throw new Error(`Failed to patch draft for ${r} ${t}: ${a.statusText}`);return a.json()},async draftInteraction(t){const e=await fetch(`${s}/api/app/${r}/draft`,{method:"PATCH",headers:o,body:JSON.stringify(t)});if(!e.ok)throw new Error(`Failed to create interactive draft for ${r}: ${e.statusText}`);const a=await e.json();return{...a.Data,_id:a.Data._id}},async metric(t){const e={Type:"Metric",...t},a=await fetch(`${s}/api/app/${r}/metric`,{method:"POST",headers:o,body:JSON.stringify(e)});if(!a.ok)throw new Error(`Failed to get metrics for ${r}: ${a.statusText}`);return a.json()},async pivot(t){const e={Type:"Pivot",...t},a=await fetch(`${s}/api/app/${r}/pivot`,{method:"POST",headers:o,body:JSON.stringify(e)});if(!a.ok)throw new Error(`Failed to get pivot data for ${r}: ${a.statusText}`);return a.json()},async fields(){const t=await fetch(`${s}/api/app/${r}/fields`,{method:"GET",headers:o});if(!t.ok)throw new Error(`Failed to get fields for ${r}: ${t.statusText}`);return t.json()},async fetchField(t,e){const a=await fetch(`${s}/api/app/${r}/${t}/field/${e}/fetch`,{method:"GET",headers:o});if(!a.ok)throw new Error(`Failed to fetch field ${e} for ${r}: ${a.statusText}`);return(await a.json()).Data}}}exports.api=u;exports.getApiBaseUrl=h;exports.getDefaultHeaders=d;exports.setApiBaseUrl=f;exports.setDefaultHeaders=$;
|
|
@@ -16,11 +16,31 @@ export declare function fetchRecord<T = any>(source: string, recordId: string):
|
|
|
16
16
|
*/
|
|
17
17
|
export declare function submitFormData<T = any>(source: string, operation: FormOperationType, data: Partial<T>, recordId?: string): Promise<SubmissionResultType>;
|
|
18
18
|
/**
|
|
19
|
-
* Fetch reference field data
|
|
19
|
+
* Fetch reference field data using the fetchField API
|
|
20
|
+
* This correctly uses instance context for filter evaluation
|
|
21
|
+
*/
|
|
22
|
+
export declare function fetchReferenceFieldData(boId: string, instanceId: string, fieldId: string): Promise<Array<{
|
|
23
|
+
Value: string;
|
|
24
|
+
Label: string;
|
|
25
|
+
}>>;
|
|
26
|
+
/**
|
|
27
|
+
* Fetch all reference data for a form
|
|
28
|
+
* @param boId - The Business Object ID
|
|
29
|
+
* @param instanceId - The instance ID (draftId for create, recordId for update)
|
|
30
|
+
* @param referenceFieldIds - Array of reference field IDs to fetch
|
|
31
|
+
*/
|
|
32
|
+
export declare function fetchAllReferenceFieldData(boId: string, instanceId: string, referenceFieldIds: string[]): Promise<Record<string, Array<{
|
|
33
|
+
Value: string;
|
|
34
|
+
Label: string;
|
|
35
|
+
}>>>;
|
|
36
|
+
/**
|
|
37
|
+
* @deprecated Use fetchReferenceFieldData instead
|
|
38
|
+
* Legacy function that fetches reference data using list() API
|
|
20
39
|
*/
|
|
21
40
|
export declare function fetchReferenceData(businessObject: string, fields?: string[], filters?: any, sort?: any): Promise<any[]>;
|
|
22
41
|
/**
|
|
23
|
-
*
|
|
42
|
+
* @deprecated Use fetchAllReferenceFieldData instead
|
|
43
|
+
* Legacy function that fetches all reference data using list() API
|
|
24
44
|
*/
|
|
25
45
|
export declare function fetchAllReferenceData(referenceFields: Record<string, any>): Promise<Record<string, any[]>>;
|
|
26
46
|
/**
|
|
@@ -34,8 +54,29 @@ export declare function validateFormData<T>(data: Partial<T>, requiredFields: st
|
|
|
34
54
|
* Clean form data before submission
|
|
35
55
|
* - For create: returns all non-computed, non-undefined fields
|
|
36
56
|
* - For update: returns only fields that changed from originalData
|
|
37
|
-
|
|
38
|
-
|
|
57
|
+
* - Transforms Reference fields to JSON format expected by backend
|
|
58
|
+
*
|
|
59
|
+
* @param data - Form data to clean
|
|
60
|
+
* @param computedFields - Array of computed field names to exclude
|
|
61
|
+
* @param operation - "create" or "update"
|
|
62
|
+
* @param originalData - Original data for comparison (update only)
|
|
63
|
+
* @param fieldTypes - Map of field names to their BDO types (e.g., { "SupplierInfo": "Reference" })
|
|
64
|
+
*/
|
|
65
|
+
export declare function cleanFormData<T>(data: Partial<T>, computedFields: string[], operation?: FormOperationType, originalData?: Partial<T>, fieldTypes?: Record<string, string>): Partial<T>;
|
|
66
|
+
/**
|
|
67
|
+
* Transform a Reference/Lookup field value to the format expected by backend
|
|
68
|
+
*
|
|
69
|
+
* Backend expects Reference fields as either:
|
|
70
|
+
* - A dict with at minimum {"_id": "..."}
|
|
71
|
+
* - For Lookup fields, the full referenced record can be passed
|
|
72
|
+
* - A JSON string that parses to this format
|
|
73
|
+
*
|
|
74
|
+
* This function handles various input formats:
|
|
75
|
+
* - Plain string ID: "SUPP-001" → {"_id": "SUPP-001"}
|
|
76
|
+
* - Object with _id: preserves ALL properties (for lookup fields with full data)
|
|
77
|
+
* - JSON string: '{"_id": "..."}' → parsed and validated
|
|
78
|
+
*/
|
|
79
|
+
export declare function transformReferenceValue(value: any): Record<string, any> | null;
|
|
39
80
|
/**
|
|
40
81
|
* Parse API error response
|
|
41
82
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useForm/apiClient.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAOtF;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAmB5E;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAMD;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,GAAG,GAAG,EACvC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,CAAC,CAUZ;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,GAAG,EAC1C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAoC/B;AAMD
|
|
1
|
+
{"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useForm/apiClient.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAOtF;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAmB5E;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAMD;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,GAAG,GAAG,EACvC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,CAAC,CAUZ;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,GAAG,EAC1C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAoC/B;AAMD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAQlD;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAAC,CAwBlE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,MAAM,EAAY,EAC1B,OAAO,CAAC,EAAE,GAAG,EACb,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,GAAG,EAAE,CAAC,CA0BhB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACnC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CA+BhC;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,cAAc,EAAE,MAAM,EAAE,GACvB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAexC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,cAAc,EAAE,MAAM,EAAE,EACxB,SAAS,GAAE,iBAA4B,EACvC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC,CAgDZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CA6B9E;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAkBhD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAOlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAOrD;AAWD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,UAAU,GAAE,MAAW,GACtB,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAapD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CASnD;AAMD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAYxB;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,MAAM,EAAY,EAC1B,OAAO,CAAC,EAAE,GAAG,EACb,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,GAAG,EAAE,CAAC,CAYhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useForm/useForm.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAIlB,MAAM,SAAS,CAAC;AAyBjB,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,iBAAiB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useForm/useForm.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAIlB,MAAM,SAAS,CAAC;AAyBjB,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,iBAAiB,CAAC,CAAC,CAAC,CA47BtB"}
|
package/dist/form.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
"use strict";var kt=Object.defineProperty;var Ut=(e,t,r)=>t in e?kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var pe=(e,t,r)=>Ut(e,typeof t!="symbol"?t+"":t,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react"),ot=require("@tanstack/react-query"),ve=require("./client-DxjRcEtN.cjs"),Bt=require("./metadata-Bz8zJqC1.cjs"),Re=require("./error-handling-CAoD0Kwb.cjs");var Oe=e=>e.type==="checkbox",ye=e=>e instanceof Date,Q=e=>e==null;const St=e=>typeof e=="object";var P=e=>!Q(e)&&!Array.isArray(e)&&St(e)&&!ye(e),qt=e=>P(e)&&e.target?Oe(e.target)?e.target.checked:e.target.value:e,Pt=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,$t=(e,t)=>e.has(Pt(t)),jt=e=>{const t=e.constructor&&e.constructor.prototype;return P(t)&&t.hasOwnProperty("isPrototypeOf")},tt=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function $(e){if(e instanceof Date)return new Date(e);const t=typeof FileList<"u"&&e instanceof FileList;if(tt&&(e instanceof Blob||t))return e;const r=Array.isArray(e);if(!r&&!(P(e)&&jt(e)))return e;const s=r?[]:Object.create(Object.getPrototypeOf(e));for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(s[i]=$(e[i]));return s}var We=e=>/^\w*$/.test(e),L=e=>e===void 0,rt=e=>Array.isArray(e)?e.filter(Boolean):[],st=e=>rt(e.replace(/["|']|\]/g,"").split(/\.|\[/)),g=(e,t,r)=>{if(!t||!P(e))return r;const s=(We(t)?[t]:st(t)).reduce((i,n)=>Q(i)?i:i[n],e);return L(s)||s===e?L(e[t])?r:e[t]:s},ie=e=>typeof e=="boolean",te=e=>typeof e=="function",O=(e,t,r)=>{let s=-1;const i=We(t)?[t]:st(t),n=i.length,l=n-1;for(;++s<n;){const f=i[s];let b=r;if(s!==l){const w=e[f];b=P(w)||Array.isArray(w)?w:isNaN(+i[s+1])?{}:[]}if(f==="__proto__"||f==="constructor"||f==="prototype")return;e[f]=b,e=e[f]}};const lt={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"},Wt=v.createContext(null);Wt.displayName="HookFormContext";var Ht=(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 Yt=typeof window<"u"?v.useLayoutEffect:v.useEffect;var Z=e=>typeof e=="string",Kt=(e,t,r,s,i)=>Z(e)?(s&&t.watch.add(e),g(r,e,i)):Array.isArray(e)?e.map(n=>(s&&t.watch.add(n),g(r,n))):(s&&(t.watchAll=!0),r),Ze=e=>Q(e)||!St(e);function fe(e,t,r=new WeakSet){if(Ze(e)||Ze(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)||P(l)&&P(f)||Array.isArray(l)&&Array.isArray(f)?!fe(l,f,r):!Object.is(l,f))return!1}}return!0}var zt=(e,t,r,s,i)=>t?{...r[e],types:{...r[e]&&r[e].types?r[e].types:{},[s]:i||!0}}:{},Ne=e=>Array.isArray(e)?e:[e],ct=()=>{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 _t(e,t){const r={};for(const s in e)if(e.hasOwnProperty(s)){const i=e[s],n=t[s];if(i&&P(i)&&n){const l=_t(i,n);P(l)&&(r[s]=l)}else e[s]&&(r[s]=n)}return r}var z=e=>P(e)&&!Object.keys(e).length,it=e=>e.type==="file",$e=e=>{if(!tt)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},Dt=e=>e.type==="select-multiple",at=e=>e.type==="radio",Jt=e=>at(e)||Oe(e),Qe=e=>$e(e)&&e.isConnected;function Gt(e,t){const r=t.slice(0,-1).length;let s=0;for(;s<r;)e=L(e)?s++:e[t[s++]];return e}function Qt(e){for(const t in e)if(e.hasOwnProperty(t)&&!L(e[t]))return!1;return!0}function q(e,t){const r=Array.isArray(t)?t:We(t)?[t]:st(t),s=r.length===1?e:Gt(e,r),i=r.length-1,n=r[i];return s&&delete s[n],i!==0&&(P(s)&&z(s)||Array.isArray(s)&&Qt(s))&&q(e,r.slice(0,-1)),e}var Xt=e=>{for(const t in e)if(te(e[t]))return!0;return!1};function Rt(e){return Array.isArray(e)||P(e)&&!Xt(e)}function et(e,t={}){for(const r in e){const s=e[r];Rt(s)?(t[r]=Array.isArray(s)?[]:{},et(s,t[r])):L(s)||(t[r]=!0)}return t}function we(e,t,r){r||(r=et(t));for(const s in e){const i=e[s];if(Rt(i))L(t)||Ze(r[s])?r[s]=et(i,Array.isArray(i)?[]:{}):we(i,Q(t)?{}:t[s],r[s]);else{const n=t[s];r[s]=!fe(i,n)}}return r}const dt={value:!1,isValid:!1},ft={value:!0,isValid:!0};var Nt=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&&!L(e[0].attributes.value)?L(e[0].value)||e[0].value===""?ft:{value:e[0].value,isValid:!0}:ft:dt}return dt},Ct=(e,{valueAsNumber:t,valueAsDate:r,setValueAs:s})=>L(e)?e:t?e===""?NaN:e&&+e:r&&Z(e)?new Date(e):s?s(e):e;const ht={isValid:!1,value:null};var Ot=e=>Array.isArray(e)?e.reduce((t,r)=>r&&r.checked&&!r.disabled?{isValid:!0,value:r.value}:t,ht):ht;function mt(e){const t=e.ref;return it(t)?t.files:at(t)?Ot(e.refs).value:Dt(t)?[...t.selectedOptions].map(({value:r})=>r):Oe(t)?Nt(e.refs).value:Ct(L(t.value)?e.ref.value:t.value,e)}var Zt=(e,t,r,s)=>{const i={};for(const n of e){const l=g(t,n);l&&O(i,n,l._f)}return{criteriaMode:r,names:[...e],fields:i,shouldUseNativeValidation:s}},je=e=>e instanceof RegExp,De=e=>L(e)?e:je(e)?e.source:P(e)?je(e.value)?e.value.source:e.value:e,yt=e=>({isOnSubmit:!e||e===re.onSubmit,isOnBlur:e===re.onBlur,isOnChange:e===re.onChange,isOnAll:e===re.all,isOnTouch:e===re.onTouched});const gt="AsyncFunction";var er=e=>!!e&&!!e.validate&&!!(te(e.validate)&&e.validate.constructor.name===gt||P(e.validate)&&Object.values(e.validate).find(t=>t.constructor.name===gt)),tr=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),pt=(e,t,r)=>!r&&(t.watchAll||t.watch.has(e)||[...t.watch].some(s=>e.startsWith(s)&&/^\.\w+/.test(e.slice(s.length))));const Ce=(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(Ce(f,t))break}else if(P(f)&&Ce(f,t))break}}};function bt(e,t,r){const s=g(e,r);if(s||We(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 rr=(e,t,r,s)=>{r(e);const{name:i,...n}=e;return z(n)||Object.keys(n).length>=Object.keys(t).length||Object.keys(n).find(l=>t[l]===(!s||re.all))},sr=(e,t,r)=>!e||!t||e===t||Ne(e).some(s=>s&&(r?s===t:s.startsWith(t)||t.startsWith(s))),ir=(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,ar=(e,t)=>!rt(g(e,t)).length&&q(e,t),nr=(e,t,r)=>{const s=Ne(g(e,r));return O(s,"root",t[r]),O(e,r,s),e};function wt(e,t,r="validate"){if(Z(e)||Array.isArray(e)&&e.every(Z)||ie(e)&&!e)return{type:r,message:Z(e)?e:"",ref:t}}var be=e=>P(e)&&!je(e)?e:{value:e,message:""},vt=async(e,t,r,s,i,n)=>{const{ref:l,refs:f,required:b,maxLength:w,minLength:C,min:_,max:E,pattern:m,validate:J,name:T,valueAsNumber:se,mount:Y}=e._f,x=g(r,T);if(!Y||t.has(T))return{};const ee=f?f[0]:l,k=F=>{i&&ee.reportValidity&&(ee.setCustomValidity(ie(F)?"":F||""),ee.reportValidity())},I={},oe=at(l),me=Oe(l),ae=oe||me,ne=(se||it(l))&&L(l.value)&&L(x)||$e(l)&&l.value===""||x===""||Array.isArray(x)&&!x.length,W=zt.bind(null,T,s,I),le=(F,S,R,U=ue.maxLength,X=ue.minLength)=>{const j=F?S:R;I[T]={type:F?U:X,message:j,ref:l,...W(F?U:X,j)}};if(n?!Array.isArray(x)||!x.length:b&&(!ae&&(ne||Q(x))||ie(x)&&!x||me&&!Nt(f).isValid||oe&&!Ot(f).isValid)){const{value:F,message:S}=Z(b)?{value:!!b,message:b}:be(b);if(F&&(I[T]={type:ue.required,message:S,ref:ee,...W(ue.required,S)},!s))return k(S),I}if(!ne&&(!Q(_)||!Q(E))){let F,S;const R=be(E),U=be(_);if(!Q(x)&&!isNaN(x)){const X=l.valueAsNumber||x&&+x;Q(R.value)||(F=X>R.value),Q(U.value)||(S=X<U.value)}else{const X=l.valueAsDate||new Date(x),j=de=>new Date(new Date().toDateString()+" "+de),ce=l.type=="time",G=l.type=="week";Z(R.value)&&x&&(F=ce?j(x)>j(R.value):G?x>R.value:X>new Date(R.value)),Z(U.value)&&x&&(S=ce?j(x)<j(U.value):G?x<U.value:X<new Date(U.value))}if((F||S)&&(le(!!F,R.message,U.message,ue.max,ue.min),!s))return k(I[T].message),I}if((w||C)&&!ne&&(Z(x)||n&&Array.isArray(x))){const F=be(w),S=be(C),R=!Q(F.value)&&x.length>+F.value,U=!Q(S.value)&&x.length<+S.value;if((R||U)&&(le(R,F.message,S.message),!s))return k(I[T].message),I}if(m&&!ne&&Z(x)){const{value:F,message:S}=be(m);if(je(F)&&!x.match(F)&&(I[T]={type:ue.pattern,message:S,ref:l,...W(ue.pattern,S)},!s))return k(S),I}if(J){if(te(J)){const F=await J(x,r),S=wt(F,ee);if(S&&(I[T]={...S,...W(ue.validate,S.message)},!s))return k(S.message),I}else if(P(J)){let F={};for(const S in J){if(!z(F)&&!s)break;const R=wt(await J[S](x,r),ee,S);R&&(F={...R,...W(S,R.message)},k(R.message),s&&(I[T]=F))}if(!z(F)&&(I[T]={ref:ee,...F},!s))return I}}return k(!0),I};const ur={mode:re.onSubmit,reValidateMode:re.onChange,shouldFocusError:!0};function or(e={}){let t={...ur,...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=P(t.defaultValues)||P(t.values)?$(t.defaultValues||t.values)||{}:{},n=t.shouldUnregister?{}:$(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},b,w=0;const C={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},_={...C};let E={..._};const m={array:ct(),state:ct()},J=t.criteriaMode===re.all,T=a=>o=>{clearTimeout(w),w=setTimeout(a,o)},se=async a=>{if(!l.keepIsValid&&!t.disabled&&(_.isValid||E.isValid||a)){let o;t.resolver?(o=z((await ae()).errors),Y()):o=await W(s,!0),o!==r.isValid&&m.state.next({isValid:o})}},Y=(a,o)=>{!t.disabled&&(_.isValidating||_.validatingFields||E.isValidating||E.validatingFields)&&((a||Array.from(f.mount)).forEach(u=>{u&&(o?O(r.validatingFields,u,o):q(r.validatingFields,u))}),m.state.next({validatingFields:r.validatingFields,isValidating:!z(r.validatingFields)}))},x=(a,o=[],u,h,d=!0,c=!0)=>{if(h&&u&&!t.disabled){if(l.action=!0,c&&Array.isArray(g(s,a))){const y=u(g(s,a),h.argA,h.argB);d&&O(s,a,y)}if(c&&Array.isArray(g(r.errors,a))){const y=u(g(r.errors,a),h.argA,h.argB);d&&O(r.errors,a,y),ar(r.errors,a)}if((_.touchedFields||E.touchedFields)&&c&&Array.isArray(g(r.touchedFields,a))){const y=u(g(r.touchedFields,a),h.argA,h.argB);d&&O(r.touchedFields,a,y)}(_.dirtyFields||E.dirtyFields)&&(r.dirtyFields=we(i,n)),m.state.next({name:a,isDirty:F(a,o),dirtyFields:r.dirtyFields,errors:r.errors,isValid:r.isValid})}else O(n,a,o)},ee=(a,o)=>{O(r.errors,a,o),m.state.next({errors:r.errors})},k=a=>{r.errors=a,m.state.next({errors:r.errors,isValid:!1})},I=(a,o,u,h)=>{const d=g(s,a);if(d){const c=g(n,a,L(u)?g(i,a):u);L(c)||h&&h.defaultChecked||o?O(n,a,o?c:mt(d._f)):U(a,c),l.mount&&!l.action&&se()}},oe=(a,o,u,h,d)=>{let c=!1,y=!1;const p={name:a};if(!t.disabled){if(!u||h){(_.isDirty||E.isDirty)&&(y=r.isDirty,r.isDirty=p.isDirty=F(),c=y!==p.isDirty);const V=fe(g(i,a),o);y=!!g(r.dirtyFields,a),V?q(r.dirtyFields,a):O(r.dirtyFields,a,!0),p.dirtyFields=r.dirtyFields,c=c||(_.dirtyFields||E.dirtyFields)&&y!==!V}if(u){const V=g(r.touchedFields,a);V||(O(r.touchedFields,a,u),p.touchedFields=r.touchedFields,c=c||(_.touchedFields||E.touchedFields)&&V!==u)}c&&d&&m.state.next(p)}return c?p:{}},me=(a,o,u,h)=>{const d=g(r.errors,a),c=(_.isValid||E.isValid)&&ie(o)&&r.isValid!==o;if(t.delayError&&u?(b=T(()=>ee(a,u)),b(t.delayError)):(clearTimeout(w),b=null,u?O(r.errors,a,u):q(r.errors,a)),(u?!fe(d,u):d)||!z(h)||c){const y={...h,...c&&ie(o)?{isValid:o}:{},errors:r.errors,name:a};r={...r,...y},m.state.next(y)}},ae=async a=>(Y(a,!0),await t.resolver(n,t.context,Zt(a||f.mount,s,t.criteriaMode,t.shouldUseNativeValidation))),ne=async a=>{const{errors:o}=await ae(a);if(Y(a),a)for(const u of a){const h=g(o,u);h?O(r.errors,u,h):q(r.errors,u)}else r.errors=o;return o},W=async(a,o,u={valid:!0})=>{for(const h in a){const d=a[h];if(d){const{_f:c,...y}=d;if(c){const p=f.array.has(c.name),V=d._f&&er(d._f);V&&_.validatingFields&&Y([c.name],!0);const D=await vt(d,f.disabled,n,J,t.shouldUseNativeValidation&&!o,p);if(V&&_.validatingFields&&Y([c.name]),D[c.name]&&(u.valid=!1,o||e.shouldUseNativeValidation))break;!o&&(g(D,c.name)?p?nr(r.errors,D,c.name):O(r.errors,c.name,D[c.name]):q(r.errors,c.name))}!z(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=>!Qe(u)):!Qe(o._f.ref))&&Ve(a)}f.unMount=new Set},F=(a,o)=>!t.disabled&&(a&&o&&O(n,a,o),!fe(Te(),i)),S=(a,o,u)=>Kt(a,f,{...l.mount?n:L(o)?i:Z(a)?{[a]:o}:o},u,o),R=a=>rt(g(l.mount?n:i,a,t.shouldUnregister?g(i,a,[]):[])),U=(a,o,u={})=>{const h=g(s,a);let d=o;if(h){const c=h._f;c&&(!c.disabled&&O(n,a,Ct(o,c)),d=$e(c.ref)&&Q(o)?"":o,Dt(c.ref)?[...c.ref.options].forEach(y=>y.selected=d.includes(y.value)):c.refs?Oe(c.ref)?c.refs.forEach(y=>{(!y.defaultChecked||!y.disabled)&&(Array.isArray(d)?y.checked=!!d.find(p=>p===y.value):y.checked=d===y.value||!!d)}):c.refs.forEach(y=>y.checked=y.value===d):it(c.ref)?c.ref.value="":(c.ref.value=d,c.ref.type||m.state.next({name:a,values:$(n)})))}(u.shouldDirty||u.shouldTouch)&&oe(a,d,u.shouldTouch,u.shouldDirty,!0),u.shouldValidate&&de(a)},X=(a,o,u)=>{for(const h in o){if(!o.hasOwnProperty(h))return;const d=o[h],c=a+"."+h,y=g(s,c);(f.array.has(a)||P(d)||y&&!y._f)&&!ye(d)?X(c,d,u):U(c,d,u)}},j=(a,o,u={})=>{const h=g(s,a),d=f.array.has(a),c=$(o);O(n,a,c),d?(m.array.next({name:a,values:$(n)}),(_.isDirty||_.dirtyFields||E.isDirty||E.dirtyFields)&&u.shouldDirty&&m.state.next({name:a,dirtyFields:we(i,n),isDirty:F(a,c)})):h&&!h._f&&!Q(c)?X(a,c,u):U(a,c,u),pt(a,f)?m.state.next({...r,name:a,values:$(n)}):m.state.next({name:l.mount?a:void 0,values:$(n)})},ce=async a=>{l.mount=!0;const o=a.target;let u=o.name,h=!0;const d=g(s,u),c=V=>{h=Number.isNaN(V)||ye(V)&&isNaN(V.getTime())||fe(V,g(n,u,V))},y=yt(t.mode),p=yt(t.reValidateMode);if(d){let V,D;const M=o.type?mt(d._f):qt(a),N=a.type===lt.BLUR||a.type===lt.FOCUS_OUT,K=!tr(d._f)&&!t.resolver&&!g(r.errors,u)&&!d._f.deps||ir(N,g(r.touchedFields,u),r.isSubmitted,p,y),B=pt(u,f,N);O(n,u,M),N?(!o||!o.readOnly)&&(d._f.onBlur&&d._f.onBlur(a),b&&b(0)):d._f.onChange&&d._f.onChange(a);const H=oe(u,M,N),Pe=!z(H)||B;if(!N&&m.state.next({name:u,type:a.type,values:$(n)}),K)return(_.isValid||E.isValid)&&(t.mode==="onBlur"?N&&se():N||se()),Pe&&m.state.next({name:u,...B?{}:H});if(!N&&B&&m.state.next({...r}),t.resolver){const{errors:Je}=await ae([u]);if(Y([u]),c(M),h){const ut=bt(r.errors,s,u),_e=bt(Je,s,ut.name||u);V=_e.error,u=_e.name,D=z(Je)}}else Y([u],!0),V=(await vt(d,f.disabled,n,J,t.shouldUseNativeValidation))[u],Y([u]),c(M),h&&(V?D=!1:(_.isValid||E.isValid)&&(D=await W(s,!0)));h&&(d._f.deps&&(!Array.isArray(d._f.deps)||d._f.deps.length>0)&&de(d._f.deps),me(u,D,V,H))}},G=(a,o)=>{if(g(r.errors,o)&&a.focus)return a.focus(),1},de=async(a,o={})=>{let u,h;const d=Ne(a);if(t.resolver){const c=await ne(L(a)?a:d);u=z(c),h=a?!d.some(y=>g(c,y)):u}else a?(h=(await Promise.all(d.map(async c=>{const y=g(s,c);return await W(y&&y._f?{[c]:y}:y)}))).every(Boolean),!(!h&&!r.isValid)&&se()):h=u=await W(s);return m.state.next({...!Z(a)||(_.isValid||E.isValid)&&u!==r.isValid?{}:{name:a},...t.resolver||!a?{isValid:u}:{},errors:r.errors}),o.shouldFocus&&!h&&Ce(s,G,a?d:f.mount),h},Te=(a,o)=>{let u={...l.mount?n:i};return o&&(u=_t(o.dirtyFields?r.dirtyFields:r.touchedFields,u)),L(a)?u:Z(a)?g(u,a):a.map(h=>g(u,h))},Me=(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&&Ne(a).forEach(o=>q(r.errors,o)),m.state.next({errors:a?r.errors:{}})},ge=(a,o,u)=>{const h=(g(s,a,{_f:{}})._f||{}).ref,d=g(r.errors,a)||{},{ref:c,message:y,type:p,...V}=d;O(r.errors,a,{...V,...o,ref:h}),m.state.next({name:a,errors:r.errors,isValid:!1}),u&&u.shouldFocus&&h&&h.focus&&h.focus()},Le=(a,o)=>te(a)?m.state.subscribe({next:u=>"values"in u&&a(S(void 0,o),u)}):S(a,o,!0),Ie=a=>m.state.subscribe({next:o=>{sr(a.name,o.name,a.exact)&&rr(o,a.formState||_,ze,a.reRenderRoot)&&a.callback({values:{...n},...r,...o,defaultValues:i})}}).unsubscribe,He=a=>(l.mount=!0,E={...E,...a.formState},Ie({...a,formState:{...C,...a.formState}})),Ve=(a,o={})=>{for(const u of a?Ne(a):f.mount)f.mount.delete(u),f.array.delete(u),o.keepValue||(q(s,u),q(n,u)),!o.keepError&&q(r.errors,u),!o.keepDirty&&q(r.dirtyFields,u),!o.keepTouched&&q(r.touchedFields,u),!o.keepIsValidating&&q(r.validatingFields,u),!t.shouldUnregister&&!o.keepDefaultValue&&q(i,u);m.state.next({values:$(n)}),m.state.next({...r,...o.keepDirty?{isDirty:F()}:{}}),!o.keepIsValid&&se()},ke=({disabled:a,name:o})=>{(ie(a)&&l.mount||a||f.disabled.has(o))&&(a?f.disabled.add(o):f.disabled.delete(o))},Fe=(a,o={})=>{let u=g(s,a);const h=ie(o.disabled)||ie(t.disabled);return O(s,a,{...u||{},_f:{...u&&u._f?u._f:{ref:{name:a}},name:a,mount:!0,...o}}),f.mount.add(a),u?ke({disabled:ie(o.disabled)?o.disabled:t.disabled,name:a}):I(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:d=>{if(d){Fe(a,o),u=g(s,a);const c=L(d.value)&&d.querySelectorAll&&d.querySelectorAll("input,select,textarea")[0]||d,y=Jt(c),p=u._f.refs||[];if(y?p.find(V=>V===c):c===u._f.ref)return;O(s,a,{_f:{...u._f,...y?{refs:[...p.filter(Qe),c,...Array.isArray(g(i,a))?[{}]:[]],ref:{type:c.type,name:a}}:{ref:c}}}),I(a,!1,void 0,c)}else u=g(s,a,{}),u._f&&(u._f.mount=!1),(t.shouldUnregister||o.shouldUnregister)&&!($t(f.array,a)&&l.action)&&f.unMount.add(a)}}},Ae=()=>t.shouldFocusError&&Ce(s,G,f.mount),Ye=a=>{ie(a)&&(m.state.next({disabled:a}),Ce(s,(o,u)=>{const h=g(s,u);h&&(o.disabled=h._f.disabled||a,Array.isArray(h._f.refs)&&h._f.refs.forEach(d=>{d.disabled=h._f.disabled||a}))},0,!1))},Ue=(a,o)=>async u=>{let h;u&&(u.preventDefault&&u.preventDefault(),u.persist&&u.persist());let d=$(n);if(m.state.next({isSubmitting:!0}),t.resolver){const{errors:c,values:y}=await ae();Y(),r.errors=c,d=$(y)}else await W(s);if(f.disabled.size)for(const c of f.disabled)q(d,c);if(q(r.errors,"root"),z(r.errors)){m.state.next({errors:{}});try{await a(d,u)}catch(c){h=c}}else o&&await o({...r.errors},u),Ae(),setTimeout(Ae);if(m.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:z(r.errors)&&!h,submitCount:r.submitCount+1,errors:r.errors}),h)throw h},Ke=(a,o={})=>{g(s,a)&&(L(o.defaultValue)?j(a,$(g(i,a))):(j(a,o.defaultValue),O(i,a,$(o.defaultValue))),o.keepTouched||q(r.touchedFields,a),o.keepDirty||(q(r.dirtyFields,a),r.isDirty=o.defaultValue?F(a,$(g(i,a))):F()),o.keepError||(q(r.errors,a),_.isValid&&se()),m.state.next({...r}))},xe=(a,o={})=>{const u=a?$(a):i,h=$(u),d=z(a),c=d?i:h;if(o.keepDefaultValues||(i=u),!o.keepValues){if(o.keepDirtyValues){const y=new Set([...f.mount,...Object.keys(we(i,n))]);for(const p of Array.from(y)){const V=g(r.dirtyFields,p),D=g(n,p),M=g(c,p);V&&!L(D)?O(c,p,D):!V&&!L(M)&&j(p,M)}}else{if(tt&&L(a))for(const y of f.mount){const p=g(s,y);if(p&&p._f){const V=Array.isArray(p._f.refs)?p._f.refs[0]:p._f.ref;if($e(V)){const D=V.closest("form");if(D){D.reset();break}}}}if(o.keepFieldsRef)for(const y of f.mount)j(y,g(c,y));else s={}}n=t.shouldUnregister?o.keepDefaultValues?$(i):{}:$(c),m.array.next({values:{...c}}),m.state.next({values:{...c}})}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=!_.isValid||!!o.keepIsValid||!!o.keepDirtyValues||!t.shouldUnregister&&!z(c),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:d?!1:o.keepDirty?r.isDirty:!!(o.keepDefaultValues&&!fe(a,i)),isSubmitted:o.keepIsSubmitted?r.isSubmitted:!1,dirtyFields:d?{}:o.keepDirtyValues?o.keepDefaultValues&&n?we(i,n):r.dirtyFields:o.keepDefaultValues&&a?we(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})},Be=(a,o)=>xe(te(a)?a(n):a,{...t.resetOptions,...o}),Se=(a,o={})=>{const u=g(s,a),h=u&&u._f;if(h){const d=h.refs?h.refs[0]:h.ref;d.focus&&setTimeout(()=>{d.focus(),o.shouldSelect&&te(d.select)&&d.select()})}},ze=a=>{r={...r,...a}},qe={control:{register:Fe,unregister:Ve,getFieldState:Me,handleSubmit:Ue,setError:ge,_subscribe:Ie,_runSchema:ae,_updateIsValidating:Y,_focusError:Ae,_getWatch:S,_getDirty:F,_setValid:se,_setFieldArray:x,_setDisabledField:ke,_setErrors:k,_getFieldArray:R,_reset:xe,_resetDefaultValues:()=>te(t.defaultValues)&&t.defaultValues().then(a=>{Be(a,t.resetOptions),m.state.next({isLoading:!1})}),_removeUnmounted:le,_disableForm:Ye,_subjects:m,_proxyFormState:_,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:He,trigger:de,register:Fe,handleSubmit:Ue,watch:Le,setValue:j,getValues:Te,reset:Be,resetField:Ke,clearErrors:A,unregister:Ve,setError:ge,setFocus:Se,getFieldState:Me};return{...qe,formControl:qe}}function lr(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}=or(e);t.current={...f,formState:s}}const n=t.current.control;return n._options=e,Yt(()=>{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=Ht(s,n),t.current}function cr(){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 dr={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 w=t.systemValues[e.Name];return Xe(w,e.Property.Name)}return t.systemValues[e.Name];case"Identifier":if(e.Property){const w=Et(e,t);return Xe(w,e.Property.Name)}return Et(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?Xe(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 fr(e.Operator,n,l);case"LogicalExpression":if(!e.Arguments||e.Arguments.length<2)throw new Error("LogicalExpression requires at least 2 arguments");return hr(e.Operator,e.Arguments,t);case"CallExpression":if(!e.Callee)throw new Error("CallExpression requires Callee");const f=dr[e.Callee];if(!f)throw new Error(`Unknown function: ${e.Callee}`);const b=(e.Arguments||[]).map(w=>he(w,t));return f(...b);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 Et(e,t){const{Name:r,Source:s}=e;if(!r)throw new Error("Identifier requires Name");switch(s){case"Input":default:return t.formValues[r]}}function Xe(e,t){if(!(!e||typeof e!="object"))return e[t]}function fr(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 hr(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 Tt(e,t,r={}){const s={formValues:t,systemValues:cr(),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{Tt(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 mr(e,t={},r={}){try{return Tt(e,t,r)}catch(s){return console.warn("Default value calculation failed:",s),null}}function Ft(e,t){var f,b,w;const r=((f=e.Expression)==null?void 0:f.toLowerCase())||"",s=((b=e.Name)==null?void 0:b.toLowerCase())||"",i=((w=e.Id)==null?void 0:w.toLowerCase())||"",n=t.toLowerCase();return s.includes("required")||i.includes("required")?!0:[`${n} != null`,`${n} != ''`,`trim(${n}) != ''`,`${n}!=null`,`${n}!=''`].some(C=>r.includes(C))}function yr(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 w;const b=(w=t.Rules.Validation)==null?void 0:w[f];b&&Ft(b,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 gr(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 pr(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 b of r){const w=b.toUpperCase().replace(/[_-]/g,"");if(l.includes(w)){t[i]=b;return}}const f=`${n.Name||""} ${n.Description||""}`.toLowerCase();for(const b of r)if(f.includes(b.toLowerCase())){t[i]=b;return}}),t}function br(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 b;f.Expression===((b=n.Formula)==null?void 0:b.Expression)&&(r[i].computation.includes(l)||r[i].computation.push(l))})});const s=pr(e);return Object.entries(s).forEach(([i,n])=>{r[n]&&!r[n].computation.includes(i)&&r[n].computation.push(i)}),r}function wr(e,t){const r={},s={editable:!0,readable:!0,hidden:!1};return Object.keys(e.Fields).forEach(i=>{var b,w,C,_,E,m;if(!t||!((b=e.RolePermission)!=null&&b[t])){r[i]=s;return}const n=e.RolePermission[t],l=((w=n.Editable)==null?void 0:w.includes(i))||((C=n.Editable)==null?void 0:C.includes("*"))||!1,f=((_=n.ReadOnly)==null?void 0:_.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 vr(e,t){switch(e){case"String":return t.toLowerCase().includes("email")?"email":t.toLowerCase().includes("password")?"password":"text";case"Number":return"number";case"Boolean":return"checkbox";case"Date":return"date";case"DateTime":return"datetime-local";case"Reference":return"reference";case"Array":case"Object":return"textarea";default:return"text"}}function Mt(e){return e.replace(/([A-Z])/g," $1").replace(/^./,t=>t.toUpperCase()).replace(/_/g," ").trim()}function Er(e,t,r){const s={};switch(t.Required&&(s.required={value:!0,message:`${Mt(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 Fr(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 mr(e.DefaultValue.ExpressionTree,t)}function Ar(e,t,r,s={},i,n){const l={editable:!0,readable:!0,hidden:!1},b=n||{validation:[],computation:[],businessLogic:[]},w=t.Computed||!!t.Formula||b.computation.length>0,C=Er(e,t);return w&&(C.disabled=!0),{name:e,type:vr(t.Type,e),label:t.Name||Mt(e),required:t.Required||!1,computed:w,defaultValue:Fr(t,s),options:Vr(t),validation:C,description:t.Description,_bdoField:t,permission:i||l,rules:b}}function xr(e,t={},r){let s=e;s=yr(s);const i={},n=[],l=[],f=[],b=[],w=gr(s),C=br(s,w),_=wr(s,r);for(const[E,m]of Object.entries(s.Fields)){if(E.startsWith("_")&&!["_id"].includes(E))continue;const J=_[E];if(J.hidden)continue;const T=Ar(E,m,s.Fields,t,J,C[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:b,rules:w,fieldRules:C,rolePermissions:s.RolePermission}}async function Sr(e){try{const r=(await Bt.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=Re.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 ve.api(e).get(t)}catch(r){throw console.error(`Record fetch error for ${e}/${t}:`,r),new Error(`Failed to load record: ${r instanceof Error?r.message:"Unknown error"}`)}}async function Rr(e,t,r,s){try{let i;if(t==="create")return i=await ve.api(e).create(r),{success:!0,data:i,recordId:i._id||s};if(t==="update"){if(!s)throw new Error("Record ID is required for update operations");return i=await ve.api(e).update(s,r),{success:!0,data:i,recordId:i._id||s}}else throw new Error(`Unsupported operation: ${t}`)}catch(i){return console.error("Form submission error:",i),{success:!1,error:new Error(`Failed to ${t} record: ${i instanceof Error?i.message:"Unknown error"}`)}}}function Nr(e,t,r="create",s,i){const n={};return Object.keys(e).forEach(l=>{const f=l;let b=e[f];if(!t.includes(l)&&b!==void 0){if((i==null?void 0:i[l])==="Reference"&&b!==null&&(b=Lt(b)),r==="create"){n[f]=b;return}if(r==="update"){if(!s){n[f]=b;return}const w=s[f];JSON.stringify(b)!==JSON.stringify(w)&&(n[f]=b)}}}),n}function Lt(e){if(e==null||e==="")return null;if(typeof e=="object"&&e._id)return{...e};if(typeof e=="string"){try{const t=JSON.parse(e);if(typeof t=="object"&&t._id)return{...t}}catch{}return{_id:e}}return e}function Cr(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 Or(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 Tr(e){var t,r,s;return(e==null?void 0:e.status)===400||((t=e==null?void 0:e.response)==null?void 0:t.status)===400||((r=e==null?void 0:e.message)==null?void 0:r.toLowerCase().includes("validation"))||((s=e==null?void 0:e.message)==null?void 0:s.toLowerCase().includes("invalid"))}const Ee=new Map;function Mr(e,t,r=10){Ee.set(e,{data:t,timestamp:Date.now(),ttl:r*60*1e3})}function Lr(e){const t=Ee.get(e);return t?Date.now()-t.timestamp>t.ttl?(Ee.delete(e),null):t.data:null}function Ir(e){e?Array.from(Ee.keys()).filter(r=>r.startsWith(e)).forEach(r=>Ee.delete(r)):Ee.clear()}async function kr(e){const t=`schema:${e}`,r=Lr(t);if(r)return r;const s=await _r(e);return Mr(t,s,30),s}class At{constructor(t=1e3){pe(this,"cache",new Map);pe(this,"maxSize");this.maxSize=t}get(t){const r=this.cache.get(t);return r!==void 0&&(this.cache.delete(t),this.cache.set(t,r)),r}set(t,r){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){const s=this.cache.keys().next().value;this.cache.delete(s)}this.cache.set(t,r)}clear(){this.cache.clear()}}function Ur(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 Br{constructor(){pe(this,"resultCache",new At(500));pe(this,"dependencyCache",new At(200));pe(this,"compiledExpressions",new Map)}createCacheKey(t,r){const s=JSON.stringify(t),i=JSON.stringify(r);return`${s}:${i}`}getDependencies(t){const r=JSON.stringify(t);let s=this.dependencyCache.get(r);return s||(s=Ur(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(w=>String(w||"")).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((w,C)=>w+(Number(C)||0),0);case"AVG":const n=s.filter(w=>!isNaN(Number(w)));return n.length>0?n.reduce((w,C)=>w+Number(C),0)/n.length:0;case"MIN":return Math.min(...s.map(w=>Number(w)||0));case"MAX":return Math.max(...s.map(w=>Number(w)||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]),b=Math.abs(l.getTime()-f.getTime());return Math.ceil(b/(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 It=new Br;function qr(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(!It.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 xt(e){return Array.from(It.getDependencies(e))}function Pr(e){const{source:t,operation:r,recordId:s,defaultValues:i={},mode:n="onBlur",enabled:l=!0,userRole:f,onSchemaError:b,skipSchemaFetch:w=!1,schema:C,interactionMode:_="interactive"}=e,E=_==="interactive",[m,J]=v.useState(null),[T,se]=v.useState({}),[Y,x]=v.useState(!1),[ee]=v.useState({}),[k,I]=v.useState(null),[oe,me]=v.useState(!1),[ae,ne]=v.useState(null),W=v.useRef(!1),le=v.useRef(null),F=v.useRef(null),S=v.useRef(!1),R=v.useRef(b);v.useEffect(()=>{R.current=b},[b]);const{data:U,isLoading:X,error:j,refetch:ce}=ot.useQuery({queryKey:["form-schema",t],queryFn:()=>w?Promise.resolve(C||{}):kr(t),enabled:l&&(!w||!!C),retry:3,staleTime:30*60*1e3,gcTime:60*60*1e3,throwOnError:!1}),{data:G,isLoading:de,error:Te}=ot.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}),Me=v.useMemo(()=>{const u={...i};if(r==="update"&&G&&Object.assign(u,G),m)for(const[h,d]of Object.entries(m.fields))d.defaultValue!==void 0&&!(h in u)&&(u[h]=d.defaultValue);return u},[i,G,r,m]),A=lr({mode:n,defaultValues:i,values:r==="update"&&G?Me:void 0});v.useEffect(()=>{var u;if(U)try{const h=xr(U,{},f);J(h)}catch(h){console.error("Schema processing failed:",h),(u=R.current)==null||u.call(R,Re.toError(h))}},[U,f]),v.useEffect(()=>{var u;j&&((u=R.current)==null||u.call(R,j))},[j]),v.useEffect(()=>{if(!E||r!=="create"||!m||!l||k||S.current)return;S.current=!0;let u=!0;return(async()=>{me(!0),ne(null);try{const c=await ve.api(t).draftInteraction({});if(!u)return;I(c._id),c&&typeof c=="object"&&Object.entries(c).forEach(([y,p])=>{if(y==="_id")return;A.getValues(y)!==p&&A.setValue(y,p,{shouldDirty:!1,shouldValidate:!1})})}catch(d){if(!u)return;console.error("Failed to create initial draft:",d),ne(Re.toError(d)),S.current=!1}finally{u&&me(!1)}})(),()=>{u=!1}},[E,r,m,l,k,t]);const ge=v.useMemo(()=>{if(!m)return[];const u=new Set,h=new Set(m.computedFields);return Object.entries(m.fieldRules).forEach(([d,c])=>{c.computation.forEach(y=>{const p=m.rules.computation[y];p!=null&&p.ExpressionTree&&xt(p.ExpressionTree).forEach(D=>{m.fields[D]&&D!==d&&!h.has(D)&&u.add(D)})})}),m.computedFields.forEach(d=>{const c=m.fields[d];c._bdoField.Formula&&xt(c._bdoField.Formula.ExpressionTree).forEach(p=>{m.fields[p]&&p!==d&&!h.has(p)&&u.add(p)})}),Array.from(u)},[m]),Le=v.useCallback(async u=>{if(!(!m||!(E&&r!=="update"||ge.length>0&&ge.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 d=A.getValues();(async()=>{W.current=!0;try{const y=ve.api(t),p={};r==="update"&&s&&"_id"in d&&(p._id=d._id),E&&r==="create"&&k&&(p._id=k);const V=F.current??(r==="update"?G:null)??{},D=new Set(m.computedFields||[]);Object.keys(d).forEach(B=>{var _e;if(B==="_id"||D.has(B))return;let H=d[B];const Pe=V[B];if(JSON.stringify(H)!==JSON.stringify(Pe)&&(H!==""&&H!==null&&H!==void 0)){const Ge=m.fields[B];((_e=Ge==null?void 0:Ge._bdoField)==null?void 0:_e.Type)==="Reference"&&(H=Lt(H)),p[B]=H}});const M=p,N={...F.current};Object.keys(d).forEach(B=>{D.has(B)||(N[B]=d[B])}),F.current=N;let K;r==="update"&&s?K=await y.draftPatch(s,M):E&&k?K=await y.draftInteraction(M):K=await y.draft(M),K&&typeof K=="object"&&(Object.entries(K).forEach(([B,H])=>{d[B]!==H&&A.setValue(B,H,{shouldDirty:!1,shouldValidate:!1})}),Object.entries(K).forEach(([B,H])=>{D.has(B)&&(F.current[B]=H)}))}catch(y){console.warn("Failed to compute fields via API:",y)}finally{W.current=!1}})()},300))}},[m,r,s,G,t,A,ge,E,k]),Ie=v.useCallback(async()=>{if(!m)return!1;const u=A.getValues();if(!await A.trigger())return!1;const d=m.crossFieldValidation.map(y=>({Id:y.Id,Condition:{ExpressionTree:y.ExpressionTree},Message:y.Message||`Validation failed for ${y.Name}`})),c=Vt(d,u,T);return c.length>0?(c.forEach((y,p)=>{A.setError(`root.crossField${p}`,{type:"validate",message:y.message})}),!1):!0},[m,A.getValues,A.trigger,A.setError,T]),He=v.useCallback((u,h)=>A.handleSubmit(async(d,c)=>{if(!m){const y=new Error("Schema not loaded");h==null||h(y,c);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,d,T);if(p.length>0){p.forEach((N,K)=>{A.setError(`root.crossField${K}`,{type:"validate",message:N.message})}),h==null||h(A.formState.errors,c);return}const V={};Object.entries(m.fields).forEach(([N,K])=>{V[N]=K._bdoField.Type});const D=Nr(d,m.computedFields,r,G,V);let M;if(E){const N=ve.api(t);if(r==="create"){if(!k)throw new Error("Interactive create mode requires a draft ID. Draft creation may have failed.");M={success:!0,data:await N.draft({...D,_id:k})}}else M={success:!0,data:await N.update(s,D)}}else if(M=await Rr(t,r,D,s),!M.success)throw M.error||new Error("Submission failed");r==="create"&&(A.reset(),E&&I(null)),await(u==null?void 0:u(M.data||d,c))}catch(y){h==null||h(Re.toError(y),c)}finally{x(!1)}},(d,c)=>{h==null||h(d,c)}),[A,m,T,t,r,s,G,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,d])=>{u[h]=d}),u},[m]),Fe=v.useCallback(u=>!!(m!=null&&m.fields[u]),[m]),Ae=v.useCallback(u=>(m==null?void 0:m.requiredFields.includes(u))||!1,[m]),Ye=v.useCallback(u=>(m==null?void 0:m.computedFields.includes(u))||!1,[m]),Ue=v.useCallback(async()=>{await ce()},[ce]),Ke=v.useCallback(()=>{A.clearErrors()},[A]),xe=X||r==="update"&&de||E&&r==="create"&&oe,Be=xe||Y,Se=j||Te||ae,ze=!!Se,nt=v.useMemo(()=>(m==null?void 0:m.computedFields)||[],[m]),qe=v.useMemo(()=>(m==null?void 0:m.requiredFields)||[],[m]),a=v.useMemo(()=>{if(!m)return{};const u={};return Object.entries(m.fields).forEach(([h,d])=>{const c={};switch(d.required&&(c.required=`${d.label} is required`),d.permission.editable||(c.disabled=!0),d.type){case"number":c.valueAsNumber=!0;break;case"date":case"datetime-local":c.valueAsDate=!0;break}const y=d.rules.validation;y.length>0&&(c.validate={expressionValidation:p=>{const V=A.getValues();for(const D of y){const M=m.rules.validation[D];if(M){const N=qr(h,p,[M],V,ee);if(!N.isValid)return N.message||M.Message||"Invalid value"}}return!0}}),u[h]=c}),u},[m,A,T]);return{register:v.useCallback((u,h)=>{const d=a[u],c=h==null?void 0:h.onBlur,y=async p=>{c&&await c(p);let V=!0;n==="onBlur"||n==="onTouched"||n==="all"?V=await A.trigger(u):V=!A.getFieldState(u,A.formState).error,V&&await Le(u)};return A.register(u,{...d,...h,onBlur:y})},[A,a,Le,n]),handleSubmit:He,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||Y,isSubmitSuccessful:A.formState.isSubmitSuccessful,isLoadingInitialData:xe,isLoadingRecord:de,isLoading:Be,draftId:k,isCreatingDraft:oe,loadError:Se?Re.toError(Se):null,hasError:ze,schema:U,schemaConfig:m,computedFields:nt,requiredFields:qe,getField:Ve,getFields:ke,hasField:Fe,isFieldRequired:Ae,isFieldComputed:Ye,refreshSchema:Ue,validateForm:Ie,clearErrors:Ke}}exports.clearFormCache=Ir;exports.isNetworkError=Or;exports.isValidationError=Tr;exports.parseApiError=Cr;exports.useForm=Pr;
|