@trungkhai/dynamic-form 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js CHANGED
@@ -1,98 +1,98 @@
1
- import { jsx as f, jsxs as Oe, Fragment as L } from "react/jsx-runtime";
2
- import { Select as Ae, Form as q, Upload as Fe, Button as Ee, DatePicker as qe, Checkbox as Ue, Radio as Ie, InputNumber as Be, Input as _e, Row as We, Col as Ge, App as Ke, Flex as Re, Spin as ke } from "antd";
3
- import { createContext as $e, useContext as De, memo as M, useState as D, useMemo as R, useEffect as j, useCallback as P, useRef as U, forwardRef as He, useImperativeHandle as ze } from "react";
4
- import Q from "dayjs";
5
- import { FileImageOutlined as Ne, UploadOutlined as Ye } from "@ant-design/icons";
6
- const ie = $e(
1
+ import { jsx as f, jsxs as Ue, Fragment as L } from "react/jsx-runtime";
2
+ import { Select as Fe, Form as q, Upload as ke, Button as Ee, DatePicker as Ie, Checkbox as Be, Radio as We, InputNumber as Ge, Input as ve, Row as Ke, Col as $e, App as ze, Flex as ie, Spin as ae } from "antd";
3
+ import { createContext as He, useContext as Re, memo as T, useState as D, useMemo as E, useEffect as C, useCallback as x, useRef as U, forwardRef as Ne, useImperativeHandle as Ye } from "react";
4
+ import X from "dayjs";
5
+ import { FileImageOutlined as Je, UploadOutlined as Qe } from "@ant-design/icons";
6
+ const oe = He(
7
7
  null
8
8
  );
9
- function V() {
10
- const e = De(ie);
9
+ function M() {
10
+ const e = Re(oe);
11
11
  if (!e)
12
12
  throw new Error(
13
13
  "useDynamicFormContext must be used within DynamicFormProvider"
14
14
  );
15
15
  return e;
16
16
  }
17
- function Qt() {
18
- return De(ie);
17
+ function Xt() {
18
+ return Re(oe);
19
19
  }
20
- function Je(e, t = []) {
21
- for (const i of t) {
22
- if (typeof i == "function")
20
+ function Xe(e, t = []) {
21
+ for (const r of t) {
22
+ if (typeof r == "function")
23
23
  continue;
24
- const { match: r, render: a } = i;
25
- if (typeof r == "string") {
26
- if (r === e.field?.type?.code || r === e.code)
24
+ const { match: i, render: a } = r;
25
+ if (typeof i == "string") {
26
+ if (i === e.field?.type?.code || i === e.code)
27
27
  return a;
28
- } else if (r(e))
28
+ } else if (i(e))
29
29
  return a;
30
30
  }
31
31
  const n = e.field?.type?.code;
32
- for (const i of t)
32
+ for (const r of t)
33
33
  ;
34
34
  }
35
- function Qe(e, t = [], n = {}) {
36
- return Je(e, t) ?? n[e.code] ?? n[e.field?.type?.code ?? ""];
35
+ function Ze(e, t = [], n = {}) {
36
+ return Xe(e, t) ?? n[e.code] ?? n[e.field?.type?.code ?? ""];
37
37
  }
38
- function Xe(e, t) {
39
- const n = t.option_config?.label_attr, i = t.option_config?.value_attr || "value";
40
- let r;
38
+ function et(e, t) {
39
+ const n = t.option_config?.label_attr, r = t.option_config?.value_attr || "value";
40
+ let i;
41
41
  if (n?.length) {
42
42
  const a = n.join(" - ");
43
- e[a] !== void 0 ? r = String(e[a]) : r = n.map((s) => e[s]).filter((s) => s != null && s !== "").join(" - ");
43
+ e[a] !== void 0 ? i = String(e[a]) : i = n.map((s) => e[s]).filter((s) => s != null && s !== "").join(" - ");
44
44
  } else
45
- r = String(e[i] ?? "");
45
+ i = String(e[r] ?? "");
46
46
  return {
47
- label: r,
48
- value: e[i]
47
+ label: i,
48
+ value: e[r]
49
49
  };
50
50
  }
51
- function Ze(e, t) {
52
- return t.option_config && t.is_option_api ? e?.map((n) => Xe(n, t)) : t.metas?.map((n) => ({
51
+ function tt(e, t) {
52
+ return t.option_config && t.is_option_api ? e?.map((n) => et(n, t)) : t.metas?.map((n) => ({
53
53
  label: n.label,
54
54
  value: n.value
55
55
  }));
56
56
  }
57
- function re(e, t) {
57
+ function se(e, t) {
58
58
  let n;
59
- return (...i) => {
60
- n && clearTimeout(n), n = setTimeout(() => e(...i), t);
59
+ return (...r) => {
60
+ n && clearTimeout(n), n = setTimeout(() => e(...r), t);
61
61
  };
62
62
  }
63
- const et = ({
63
+ const nt = ({
64
64
  onSearchKeyword: e,
65
65
  searchDebounceMs: t = 500,
66
66
  ...n
67
67
  }) => {
68
- const [i, r] = D(""), a = R(
69
- () => re((o) => e?.(o), t),
68
+ const [r, i] = D(""), a = E(
69
+ () => se((o) => e?.(o), t),
70
70
  [e, t]
71
71
  );
72
72
  return /* @__PURE__ */ f(
73
- Ae,
73
+ Fe,
74
74
  {
75
75
  allowClear: !0,
76
76
  showSearch: !0,
77
- searchValue: i,
77
+ searchValue: r,
78
78
  onSearch: (o) => {
79
- r(o), a(o);
79
+ i(o), a(o);
80
80
  },
81
81
  filterOption: !1,
82
82
  ...n
83
83
  }
84
84
  );
85
- }, tt = M(et), nt = ({
85
+ }, rt = T(nt), it = ({
86
86
  fieldName: e,
87
87
  formInstance: t,
88
88
  ...n
89
89
  }) => {
90
- const i = q.useWatch(e, t);
91
- return j(() => {
92
- if (i?.fileList?.length && i.fileList.some(
90
+ const r = q.useWatch(e, t);
91
+ return C(() => {
92
+ if (r?.fileList?.length && r.fileList.some(
93
93
  (s) => !s.type?.startsWith("image/")
94
94
  )) {
95
- const s = i.fileList.filter(
95
+ const s = r.fileList.filter(
96
96
  (o) => o.type?.startsWith("image/")
97
97
  );
98
98
  t.setFieldValue(
@@ -103,126 +103,126 @@ const et = ({
103
103
  } : null
104
104
  );
105
105
  }
106
- }, [e, t, i]), /* @__PURE__ */ f(Fe, { listType: "picture-card", accept: "image/*", ...n, children: /* @__PURE__ */ f(
106
+ }, [e, t, r]), /* @__PURE__ */ f(ke, { listType: "picture-card", accept: "image/*", ...n, children: /* @__PURE__ */ f(
107
107
  "button",
108
108
  {
109
109
  style: { border: 0, background: "none", cursor: "pointer" },
110
110
  type: "button",
111
- children: /* @__PURE__ */ f(Ne, {})
111
+ children: /* @__PURE__ */ f(Je, {})
112
112
  }
113
113
  ) });
114
- }, it = M(nt), rt = ({
114
+ }, at = T(it), ot = ({
115
115
  fieldName: e,
116
116
  formInstance: t,
117
117
  ...n
118
118
  }) => {
119
- const i = q.useWatch(e, t);
120
- return /* @__PURE__ */ f(Fe, { fileList: i?.fileList, ...n, children: /* @__PURE__ */ f(Ee, { icon: /* @__PURE__ */ f(Ye, {}) }) });
121
- }, at = M(rt), ot = ({
119
+ const r = q.useWatch(e, t);
120
+ return /* @__PURE__ */ f(ke, { fileList: r?.fileList, ...n, children: /* @__PURE__ */ f(Ee, { icon: /* @__PURE__ */ f(Qe, {}) }) });
121
+ }, st = T(ot), lt = ({
122
122
  formInstance: e,
123
123
  uploadUrl: t,
124
124
  setFieldState: n
125
125
  }) => {
126
- const { client: i, upload: r, i18n: a, renderers: s } = V(), { messages: o } = a, u = P(() => {
127
- if (r.upload) return r.upload;
128
- const l = t ?? r.uploadUrl;
126
+ const { client: r, upload: i, i18n: a, renderers: s } = M(), { messages: o } = a, d = x(() => {
127
+ if (i.upload) return i.upload;
128
+ const l = t ?? i.uploadUrl;
129
129
  if (l)
130
- return async ({ file: b, signal: p, onProgress: d, fieldCode: v, fieldGroup: _, metadata: w }) => {
131
- const m = r.getPayload ? r.getPayload({
132
- file: b,
130
+ return async ({ file: p, signal: y, onProgress: u, fieldCode: v, fieldGroup: b, metadata: w }) => {
131
+ const h = i.getPayload ? i.getPayload({
132
+ file: p,
133
133
  fieldCode: v,
134
- fieldGroup: _,
134
+ fieldGroup: b,
135
135
  uploadUrl: l,
136
- signal: p,
137
- onProgress: d,
136
+ signal: y,
137
+ onProgress: u,
138
138
  metadata: w
139
139
  }) : (() => {
140
140
  const g = new FormData();
141
- return g.append("file", b), w && Object.entries(w).forEach(([F, k]) => {
142
- g.append(F, String(k));
141
+ return g.append("file", p), w && Object.entries(w).forEach(([F, R]) => {
142
+ g.append(F, String(R));
143
143
  }), g;
144
- })(), S = (await i.request({
144
+ })(), A = (await r.request({
145
145
  method: "POST",
146
146
  url: l,
147
- data: m,
148
- headers: m instanceof FormData ? { "Content-Type": "multipart/form-data" } : void 0,
149
- signal: p,
147
+ data: h,
148
+ headers: h instanceof FormData ? { "Content-Type": "multipart/form-data" } : void 0,
149
+ signal: y,
150
150
  onUploadProgress: (g) => {
151
- d?.(
151
+ u?.(
152
152
  Math.round(g.loaded * 100 / (g.total || 1))
153
153
  );
154
154
  }
155
155
  })).data;
156
156
  return {
157
- uid: b.uid,
158
- ...S,
159
- path: String(S.path ?? "")
157
+ uid: p.uid,
158
+ ...A,
159
+ path: String(A.path ?? "")
160
160
  };
161
161
  };
162
- }, [i, r, t]), c = P(
163
- (l, b) => (p) => {
164
- const { file: d, onProgress: v, onError: _, onSuccess: w } = p, m = new AbortController(), A = u();
165
- return A ? (A({
166
- file: d,
162
+ }, [r, i, t]), c = x(
163
+ (l, p) => (y) => {
164
+ const { file: u, onProgress: v, onError: b, onSuccess: w } = y, h = new AbortController(), S = d();
165
+ return S ? (S({
166
+ file: u,
167
167
  fieldCode: l,
168
- fieldGroup: b,
169
- uploadUrl: t ?? r.uploadUrl,
170
- signal: m.signal,
171
- onProgress: (S) => v?.({ percent: S })
168
+ fieldGroup: p,
169
+ uploadUrl: t ?? i.uploadUrl,
170
+ signal: h.signal,
171
+ onProgress: (A) => v?.({ percent: A })
172
172
  }).then(
173
- (S) => w?.({
174
- ...S,
175
- uid: S.uid ?? d.uid,
176
- path: S.path,
177
- upload_date: Q().format("YYYY-MM-DD HH:mm:ss")
173
+ (A) => w?.({
174
+ ...A,
175
+ uid: A.uid ?? u.uid,
176
+ path: A.path,
177
+ upload_date: X().format("YYYY-MM-DD HH:mm:ss")
178
178
  })
179
- ).catch((S) => _?.(S)), { abort: () => m.abort() }) : (_?.(new Error(o.uploadError ?? "Upload not configured")), { abort() {
179
+ ).catch((A) => b?.(A)), { abort: () => h.abort() }) : (b?.(new Error(o.uploadError ?? "Upload not configured")), { abort() {
180
180
  } });
181
181
  },
182
- [o.uploadError, u, r.uploadUrl, t]
183
- ), h = P(
184
- (l, b) => async (p) => {
185
- const d = p.response?.path;
186
- return d ? r.remove({ path: d, fieldCode: l, fieldGroup: b }) : !0;
182
+ [o.uploadError, d, i.uploadUrl, t]
183
+ ), _ = x(
184
+ (l, p) => async (y) => {
185
+ const u = y.response?.path;
186
+ return u ? i.remove({ path: u, fieldCode: l, fieldGroup: p }) : !0;
187
187
  },
188
- [r]
189
- ), y = P(
188
+ [i]
189
+ ), m = x(
190
190
  (l, {
191
- state: b,
192
- options: p,
193
- optionsLoading: d,
191
+ state: p,
192
+ options: y,
193
+ optionsLoading: u,
194
194
  optionsError: v,
195
- onSearchKeyword: _,
195
+ onSearchKeyword: b,
196
196
  readOnly: w = !1
197
197
  }) => {
198
- const { additional_config: m, field: A } = l, S = A?.type?.code, g = w || l.is_readonly || b?.disabled, F = Qe(
198
+ const { additional_config: h, field: S } = l, A = S?.type?.code, g = w || l.is_readonly || p?.disabled, F = Ze(
199
199
  l,
200
200
  s.fields
201
201
  );
202
202
  if (F)
203
203
  return F(l, {
204
- state: b,
205
- options: p,
206
- optionsLoading: d,
204
+ state: p,
205
+ options: y,
206
+ optionsLoading: u,
207
207
  optionsError: v,
208
- onSearchKeyword: _,
208
+ onSearchKeyword: b,
209
209
  readOnly: w,
210
210
  formInstance: e,
211
211
  disabled: !!g,
212
212
  setFieldState: n
213
213
  });
214
- const k = Ze(p, l);
215
- switch (S) {
214
+ const R = tt(y, l);
215
+ switch (A) {
216
216
  case "text":
217
- return m?.text?.textarea ? /* @__PURE__ */ f(
218
- _e.TextArea,
217
+ return h?.text?.textarea ? /* @__PURE__ */ f(
218
+ ve.TextArea,
219
219
  {
220
220
  disabled: g,
221
221
  placeholder: o.inputPlaceholder(l.label),
222
- rows: m?.text?.rows
222
+ rows: h?.text?.rows
223
223
  }
224
224
  ) : /* @__PURE__ */ f(
225
- _e,
225
+ ve,
226
226
  {
227
227
  disabled: g,
228
228
  placeholder: o.inputPlaceholder(l.label)
@@ -230,74 +230,74 @@ const et = ({
230
230
  );
231
231
  case "number":
232
232
  return /* @__PURE__ */ f(
233
- Be,
233
+ Ge,
234
234
  {
235
235
  style: { width: "100%" },
236
236
  disabled: g,
237
237
  placeholder: o.inputPlaceholder(l.label),
238
- min: m?.number?.min,
239
- max: m?.number?.max
238
+ min: h?.number?.min,
239
+ max: h?.number?.max
240
240
  }
241
241
  );
242
242
  case "select": {
243
- const T = {
243
+ const j = {
244
244
  disabled: g,
245
- options: k,
245
+ options: R,
246
246
  placeholder: o.selectPlaceholder(l.label),
247
247
  allowClear: !0,
248
- loading: d,
249
- mode: m?.select?.multiple ? "multiple" : void 0,
250
- notFoundContent: v ? o.optionError : d ? o.optionLoading : void 0
248
+ loading: u,
249
+ mode: h?.select?.multiple ? "multiple" : void 0,
250
+ notFoundContent: v ? o.optionError : u ? o.optionLoading : void 0
251
251
  };
252
- return _ ? /* @__PURE__ */ f(
253
- tt,
252
+ return b ? /* @__PURE__ */ f(
253
+ rt,
254
254
  {
255
- ...T,
256
- onSearchKeyword: _,
257
- searchDebounceMs: m?.select?.searchDebounceMs ?? 500
255
+ ...j,
256
+ onSearchKeyword: b,
257
+ searchDebounceMs: h?.select?.searchDebounceMs ?? 500
258
258
  }
259
- ) : /* @__PURE__ */ f(Ae, { ...T, showSearch: !0, optionFilterProp: "label" });
259
+ ) : /* @__PURE__ */ f(Fe, { ...j, showSearch: !0, optionFilterProp: "label" });
260
260
  }
261
261
  case "radio":
262
- return /* @__PURE__ */ f(Ie.Group, { disabled: g, options: k });
262
+ return /* @__PURE__ */ f(We.Group, { disabled: g, options: R });
263
263
  case "checkbox":
264
- return /* @__PURE__ */ f(Ue.Group, { disabled: g, options: k });
264
+ return /* @__PURE__ */ f(Be.Group, { disabled: g, options: R });
265
265
  case "datetime":
266
266
  return /* @__PURE__ */ f(
267
- qe,
267
+ Ie,
268
268
  {
269
269
  style: { width: "100%" },
270
270
  disabled: g,
271
- showTime: m?.datetime?.showTime,
272
- format: m?.datetime?.format
271
+ showTime: h?.datetime?.showTime,
272
+ format: h?.datetime?.format
273
273
  }
274
274
  );
275
275
  case "file":
276
276
  return /* @__PURE__ */ f(
277
- at,
277
+ st,
278
278
  {
279
279
  disabled: g,
280
280
  fieldName: l.code,
281
281
  formInstance: e,
282
- multiple: m?.file?.multiple || !1,
283
- maxCount: m?.file?.max,
284
- accept: m?.file?.accept,
282
+ multiple: h?.file?.multiple || !1,
283
+ maxCount: h?.file?.max,
284
+ accept: h?.file?.accept,
285
285
  customRequest: c(l.code, l),
286
- onRemove: h(l.code, l)
286
+ onRemove: _(l.code, l)
287
287
  }
288
288
  );
289
289
  case "image":
290
290
  return /* @__PURE__ */ f(
291
- it,
291
+ at,
292
292
  {
293
293
  disabled: g,
294
294
  fieldName: l.code,
295
295
  formInstance: e,
296
- multiple: m?.image?.multiple || !1,
297
- maxCount: m?.image?.max,
298
- accept: m?.image?.accept ?? "image/*",
296
+ multiple: h?.image?.multiple || !1,
297
+ maxCount: h?.image?.max,
298
+ accept: h?.image?.accept ?? "image/*",
299
299
  customRequest: c(l.code, l),
300
- onRemove: h(l.code, l)
300
+ onRemove: _(l.code, l)
301
301
  }
302
302
  );
303
303
  default:
@@ -306,19 +306,19 @@ const et = ({
306
306
  },
307
307
  [
308
308
  c,
309
- h,
309
+ _,
310
310
  e,
311
311
  o,
312
312
  s.fields,
313
313
  n
314
314
  ]
315
315
  );
316
- return R(() => ({ getDynamicField: y }), [y]);
316
+ return E(() => ({ getDynamicField: m }), [m]);
317
317
  };
318
- function ae(e) {
318
+ function le(e) {
319
319
  return JSON.stringify(e);
320
320
  }
321
- function st(e, t) {
321
+ function ct(e, t) {
322
322
  const n = e.get(t);
323
323
  if (n) {
324
324
  if (Date.now() > n.expiresAt) {
@@ -328,59 +328,59 @@ function st(e, t) {
328
328
  return n.data;
329
329
  }
330
330
  }
331
- function lt(e, t, n, i) {
332
- e.set(t, { data: n, expiresAt: Date.now() + i });
331
+ function dt(e, t, n, r) {
332
+ e.set(t, { data: n, expiresAt: Date.now() + r });
333
333
  }
334
- async function te(e, t, n, i, r) {
334
+ async function re(e, t, n, r, i) {
335
335
  const a = e[t];
336
336
  if (e.cache.enabled) {
337
- const c = st(a, n);
337
+ const c = ct(a, n);
338
338
  if (c !== void 0) return c;
339
339
  }
340
- const s = new AbortController(), o = r ? AbortSignal.any([r, s.signal]) : s.signal, u = await i(o);
341
- return e.cache.enabled && lt(a, n, u, e.cache.ttlMs), u;
340
+ const s = new AbortController(), o = i ? AbortSignal.any([i, s.signal]) : s.signal, d = await r(o);
341
+ return e.cache.enabled && dt(a, n, d, e.cache.ttlMs), d;
342
342
  }
343
- function W(e, t) {
344
- return t.split(".").reduce((n, i) => {
343
+ function B(e, t) {
344
+ return t.split(".").reduce((n, r) => {
345
345
  if (n && typeof n == "object")
346
- return n[i];
346
+ return n[r];
347
347
  }, e);
348
348
  }
349
- function ct(e, t) {
349
+ function ut(e, t) {
350
350
  if (typeof e != "string") return e;
351
351
  const n = e.match(/^\{\{(.+?)\}\}$/);
352
352
  if (!n) return e;
353
- const i = n[1].trim(), r = W(t, i);
354
- return r !== void 0 ? r : e;
353
+ const r = n[1].trim(), i = B(t, r);
354
+ return i !== void 0 ? i : e;
355
355
  }
356
- function dt(e, t) {
356
+ function ft(e, t) {
357
357
  const n = {};
358
- for (const i in e)
359
- n[i] = ct(
360
- e[i],
358
+ for (const r in e)
359
+ n[r] = ut(
360
+ e[r],
361
361
  t
362
362
  );
363
363
  return n;
364
364
  }
365
- function Xt(e, t) {
365
+ function Zt(e, t) {
366
366
  const n = { ...e };
367
- return t.forEach((i) => {
368
- const r = e[i.code];
369
- if (r == null) return;
370
- switch (i.field?.type?.code) {
367
+ return t.forEach((r) => {
368
+ const i = e[r.code];
369
+ if (i == null) return;
370
+ switch (r.field?.type?.code) {
371
371
  case "datetime": {
372
- const s = Q(r);
373
- s.isValid() && (n[i.code] = s);
372
+ const s = X(i);
373
+ s.isValid() && (n[r.code] = s);
374
374
  break;
375
375
  }
376
376
  case "file":
377
377
  case "image": {
378
- if (Array.isArray(r) && r.length > 0) {
379
- const s = r.map((o, u) => {
378
+ if (Array.isArray(i) && i.length > 0) {
379
+ const s = i.map((o, d) => {
380
380
  const c = o;
381
381
  return {
382
- uid: String(c.uid ?? c.path ?? u),
383
- name: c.name ?? `file-${u}`,
382
+ uid: String(c.uid ?? c.path ?? d),
383
+ name: c.name ?? `file-${d}`,
384
384
  status: "done",
385
385
  percent: 100,
386
386
  type: c.type,
@@ -388,149 +388,149 @@ function Xt(e, t) {
388
388
  response: o
389
389
  };
390
390
  });
391
- n[i.code] = { fileList: s };
391
+ n[r.code] = { fileList: s };
392
392
  }
393
393
  break;
394
394
  }
395
395
  }
396
396
  }), n;
397
397
  }
398
- function ut(e) {
399
- const t = e.option_config?.api_options?.params || {}, n = e.option_config?.api_options?.data || {}, i = (r) => Object.values(r).filter(
398
+ function mt(e) {
399
+ const t = e.option_config?.api_options?.params || {}, n = e.option_config?.api_options?.data || {}, r = (i) => Object.values(i).filter(
400
400
  (a) => typeof a == "string" && a.startsWith("{{") && a.endsWith("}}")
401
401
  ).map((a) => a.slice(2, -2).trim());
402
- return Array.from(/* @__PURE__ */ new Set([...i(t), ...i(n)]));
402
+ return Array.from(/* @__PURE__ */ new Set([...r(t), ...r(n)]));
403
403
  }
404
404
  function O(e, t) {
405
405
  const n = {};
406
- for (const i in e) {
407
- const r = e[i];
408
- if (typeof r == "string" && r.startsWith("{{") && r.endsWith("}}")) {
409
- const a = r.slice(2, -2).trim();
410
- n[i] = t?.[a];
406
+ for (const r in e) {
407
+ const i = e[r];
408
+ if (typeof i == "string" && i.startsWith("{{") && i.endsWith("}}")) {
409
+ const a = i.slice(2, -2).trim();
410
+ n[r] = t?.[a];
411
411
  } else
412
- n[i] = r;
412
+ n[r] = i;
413
413
  }
414
414
  return n;
415
415
  }
416
- function ne(e, t) {
417
- return e.replace(/\{\{\s*(\w+)\s*\}\}/g, (n, i) => {
418
- const r = t?.[i];
419
- return r != null ? String(r) : "";
416
+ function J(e, t) {
417
+ return e.replace(/\{\{\s*(\w+)\s*\}\}/g, (n, r) => {
418
+ const i = t?.[r];
419
+ return i != null ? String(i) : "";
420
420
  });
421
421
  }
422
- function ft(e, t) {
423
- const n = R(
424
- () => ut(e),
422
+ function pt(e, t) {
423
+ const n = E(
424
+ () => mt(e),
425
425
  [e]
426
- ), i = q.useWatch(
426
+ ), r = q.useWatch(
427
427
  n.length > 0 ? n : void 0,
428
428
  t
429
429
  );
430
- return R(() => {
430
+ return E(() => {
431
431
  if (!n.length) return {};
432
- const r = {};
432
+ const i = {};
433
433
  return n.forEach((a, s) => {
434
- Array.isArray(i) ? r[a] = i[s] : r[a] = i;
435
- }), r;
436
- }, [n, i]);
434
+ Array.isArray(r) ? i[a] = r[s] : i[a] = r;
435
+ }), i;
436
+ }, [n, r]);
437
437
  }
438
- function mt({
438
+ function ht({
439
439
  group: e,
440
440
  formInstance: t,
441
441
  searchKeyword: n = "",
442
- searchDebounceMs: i = 500
442
+ searchDebounceMs: r = 500
443
443
  }) {
444
- const r = V(), a = ft(e, t), [s, o] = D(), [u, c] = D(!1), [h, y] = D(), l = U(null), [b, p] = D(n), d = e.additional_config?.select?.search_keyword ?? !1, v = R(
445
- () => re((m) => p(m), i),
446
- [i]
444
+ const i = M(), a = pt(e, t), [s, o] = D(), [d, c] = D(!1), [_, m] = D(), l = U(null), [p, y] = D(n), u = e.additional_config?.select?.search_keyword ?? !1, v = E(
445
+ () => se((h) => y(h), r),
446
+ [r]
447
447
  );
448
- j(() => {
449
- d ? v(n) : p("");
450
- }, [n, d, v]);
451
- const _ = R(() => {
452
- const m = e.option_config?.api_options?.params, A = e.option_config?.api_options?.data;
453
- if (!(!m && !A))
448
+ C(() => {
449
+ u ? v(n) : y("");
450
+ }, [n, u, v]);
451
+ const b = E(() => {
452
+ const h = e.option_config?.api_options?.params, S = e.option_config?.api_options?.data;
453
+ if (!(!h && !S))
454
454
  return {
455
- params: m ? O(m, a) : void 0,
456
- data: A ? O(A, a) : void 0
455
+ params: h ? O(h, a) : void 0,
456
+ data: S ? O(S, a) : void 0
457
457
  };
458
- }, [a, e]), w = P(async () => {
458
+ }, [a, e]), w = x(async () => {
459
459
  if (!e.option_config || !e.is_option_api || !e.option_config.url)
460
460
  return;
461
461
  l.current?.abort();
462
- const m = new AbortController();
463
- l.current = m;
464
- const A = e.option_config.method?.toUpperCase() === "GET" || !e.option_config.method, S = d ? b : "", g = ae([
462
+ const h = new AbortController();
463
+ l.current = h;
464
+ const S = e.option_config.method?.toUpperCase() === "GET" || !e.option_config.method, A = u ? p : "", g = le([
465
465
  e.code,
466
466
  e.option_config.url,
467
467
  e.option_config.method,
468
- _,
469
- S
468
+ b,
469
+ A
470
470
  ]);
471
- c(!0), y(void 0);
471
+ c(!0), m(void 0);
472
472
  try {
473
- const F = await te(
474
- r,
473
+ const F = await re(
474
+ i,
475
475
  "optionCache",
476
476
  g,
477
- async (k) => {
478
- const T = await r.client.request({
477
+ async (R) => {
478
+ const j = await i.client.request({
479
479
  method: e.option_config?.method || "GET",
480
480
  url: e.option_config?.url,
481
- params: A && d ? { ..._?.params, keywords: S } : _?.params,
482
- data: !A && d ? { ..._?.data, keywords: S } : _?.data,
483
- signal: k
481
+ params: S && u ? { ...b?.params, keywords: A } : b?.params,
482
+ data: !S && u ? { ...b?.data, keywords: A } : b?.data,
483
+ signal: R
484
484
  });
485
- return r.parsers.optionResponse(T.data, e);
485
+ return i.parsers.optionResponse(j.data, e);
486
486
  },
487
- m.signal
487
+ h.signal
488
488
  );
489
- m.signal.aborted || o(F);
489
+ h.signal.aborted || o(F);
490
490
  } catch (F) {
491
- m.signal.aborted || y(F);
491
+ h.signal.aborted || m(F);
492
492
  } finally {
493
- m.signal.aborted || c(!1);
493
+ h.signal.aborted || c(!1);
494
494
  }
495
- }, [_, r, b, e, d]);
496
- return j(() => (e.option_config && e.is_option_api && w(), () => l.current?.abort()), [w, e]), { options: s, isLoading: u, error: h, refetch: w };
495
+ }, [b, i, p, e, u]);
496
+ return C(() => (e.option_config && e.is_option_api && w(), () => l.current?.abort()), [w, e]), { options: s, isLoading: d, error: _, refetch: w };
497
497
  }
498
- const pt = ({
498
+ const yt = ({
499
499
  group: e,
500
500
  formInstance: t,
501
501
  fieldState: n,
502
- setFieldState: i,
503
- uploadUrl: r,
502
+ setFieldState: r,
503
+ uploadUrl: i,
504
504
  readOnly: a = !1,
505
505
  size: s = "middle",
506
506
  ...o
507
507
  }) => {
508
- const { getDynamicField: u } = ot({
508
+ const { getDynamicField: d } = lt({
509
509
  formInstance: t,
510
- uploadUrl: r,
511
- setFieldState: i
512
- }), c = q.useWatch(e.code, t), [h, y] = D(""), l = e.additional_config?.select?.search_keyword ?? !1, { options: b, isLoading: p, error: d } = mt({
510
+ uploadUrl: i,
511
+ setFieldState: r
512
+ }), c = q.useWatch(e.code, t), [_, m] = D(""), l = e.additional_config?.select?.search_keyword ?? !1, { options: p, isLoading: y, error: u } = ht({
513
513
  group: e,
514
514
  formInstance: t,
515
- searchKeyword: h,
515
+ searchKeyword: _,
516
516
  searchDebounceMs: e.additional_config?.select?.searchDebounceMs ?? 500
517
- }), v = P((w) => {
518
- y(w);
517
+ }), v = x((w) => {
518
+ m(w);
519
519
  }, []);
520
- j(() => {
520
+ C(() => {
521
521
  if (e.additional_config?.on_field_change?.clear?.length) {
522
522
  const w = t.getFieldsValue(
523
523
  e.additional_config.on_field_change.clear
524
- ), m = e.additional_config.on_field_change.clear.filter(
525
- (A) => w?.[A]
524
+ ), h = e.additional_config.on_field_change.clear.filter(
525
+ (S) => w?.[S]
526
526
  );
527
- m.length && t.resetFields(m);
527
+ h.length && t.resetFields(h);
528
528
  }
529
529
  e.additional_config?.on_field_empty?.disable?.length && e.additional_config.on_field_empty.disable.forEach((w) => {
530
- i(w, { disabled: !c });
530
+ r(w, { disabled: !c });
531
531
  });
532
- }, [c, t, e, i]);
533
- const _ = s === "small" ? 4 : 12;
532
+ }, [c, t, e, r]);
533
+ const b = s === "small" ? 4 : 12;
534
534
  return /* @__PURE__ */ f(
535
535
  q.Item,
536
536
  {
@@ -538,46 +538,46 @@ const pt = ({
538
538
  name: e.code,
539
539
  hidden: n?.hidden,
540
540
  rules: [{ required: n?.required || !1 }],
541
- style: { marginBottom: _, ...o.style },
541
+ style: { marginBottom: b, ...o.style },
542
542
  ...o,
543
- children: u(e, {
543
+ children: d(e, {
544
544
  state: n,
545
- options: b,
546
- optionsLoading: p,
547
- optionsError: d,
545
+ options: p,
546
+ optionsLoading: y,
547
+ optionsError: u,
548
548
  onSearchKeyword: l ? v : void 0,
549
549
  readOnly: a
550
550
  })
551
551
  }
552
552
  );
553
553
  };
554
- function ht(e, t) {
554
+ function _t(e, t) {
555
555
  return e.group.id === t.group.id && e.readOnly === t.readOnly && e.uploadUrl === t.uploadUrl && e.size === t.size && e.fieldState?.disabled === t.fieldState?.disabled && e.fieldState?.hidden === t.fieldState?.hidden && e.fieldState?.required === t.fieldState?.required;
556
556
  }
557
- const yt = M(pt, ht);
558
- function bt({
557
+ const bt = T(yt, _t);
558
+ function vt({
559
559
  fieldGroups: e,
560
560
  fieldStates: t,
561
561
  renderField: n,
562
- gutter: i,
563
- defaultColSpan: r
562
+ gutter: r,
563
+ defaultColSpan: i
564
564
  }) {
565
- return /* @__PURE__ */ f(We, { gutter: i, children: e.map((a) => {
566
- const s = t[a.code]?.hidden ? 0 : Number(a.additional_config?.field_col_span) || r;
567
- return /* @__PURE__ */ f(Ge, { xs: s, children: n(a) }, a.id);
565
+ return /* @__PURE__ */ f(Ke, { gutter: r, children: e.map((a) => {
566
+ const s = t[a.code]?.hidden ? 0 : Number(a.additional_config?.field_col_span) || i;
567
+ return /* @__PURE__ */ f($e, { xs: s, children: n(a) }, a.id);
568
568
  }) });
569
569
  }
570
- function _t(e) {
571
- return R(() => {
572
- const t = e?.form?.field_groups ?? [], n = /* @__PURE__ */ new Map(), i = {};
570
+ function wt(e) {
571
+ return E(() => {
572
+ const t = e?.form?.field_groups ?? [], n = /* @__PURE__ */ new Map(), r = {};
573
573
  t.forEach((a) => {
574
- n.set(a.code, a), a.additional_config?.default !== void 0 && (i[a.code] = a.additional_config.default);
574
+ n.set(a.code, a), a.additional_config?.default !== void 0 && (r[a.code] = a.additional_config.default);
575
575
  });
576
- const r = t.filter((a) => !a.is_hidden);
577
- return { fieldGroups: t, fieldByCode: n, visibleFieldGroups: r, initialValues: i };
576
+ const i = t.filter((a) => !a.is_hidden);
577
+ return { fieldGroups: t, fieldByCode: n, visibleFieldGroups: i, initialValues: r };
578
578
  }, [e]);
579
579
  }
580
- function ve(e) {
580
+ function we(e) {
581
581
  const t = {};
582
582
  return e.forEach((n) => {
583
583
  t[n.code] = {
@@ -587,43 +587,43 @@ function ve(e) {
587
587
  };
588
588
  }), t;
589
589
  }
590
- function vt(e) {
590
+ function gt(e) {
591
591
  const [t, n] = D(
592
- () => ve(e)
592
+ () => we(e)
593
593
  );
594
- j(() => {
595
- n(ve(e));
594
+ C(() => {
595
+ n(we(e));
596
596
  }, [e]);
597
- const i = P((r, a) => {
597
+ const r = x((i, a) => {
598
598
  n((s) => ({
599
599
  ...s,
600
- [r]: { ...s[r], ...a }
600
+ [i]: { ...s[i], ...a }
601
601
  }));
602
602
  }, []);
603
- return { fieldStates: t, setFieldStates: n, setFieldState: i };
603
+ return { fieldStates: t, setFieldStates: n, setFieldState: r };
604
604
  }
605
- function wt({
605
+ function At({
606
606
  formInstance: e,
607
607
  fieldByCode: t,
608
608
  relatedData: n,
609
- transformers: i
609
+ transformers: r
610
610
  }) {
611
- return { buildProcessedValues: P(async () => {
611
+ return { buildProcessedValues: x(async () => {
612
612
  await e.validateFields();
613
613
  const a = e.getFieldsValue(), s = {};
614
614
  for (const c of Object.keys(a)) {
615
- const h = t.get(c);
616
- if (!h) continue;
617
- let y;
618
- switch (h.field?.type?.code) {
615
+ const _ = t.get(c);
616
+ if (!_) continue;
617
+ let m;
618
+ switch (_.field?.type?.code) {
619
619
  case "datetime":
620
- y = a[c] ? Q(a[c]).format(
621
- h.additional_config?.datetime?.format
620
+ m = a[c] ? X(a[c]).format(
621
+ _.additional_config?.datetime?.format
622
622
  ) : null;
623
623
  break;
624
624
  case "image":
625
625
  case "file":
626
- a[c]?.fileList?.length && (y = a[c].fileList.filter((l) => l.percent === 100).map((l) => ({
626
+ a[c]?.fileList?.length && (m = a[c].fileList.filter((l) => l.percent === 100).map((l) => ({
627
627
  ...l.response,
628
628
  name: l.name,
629
629
  type: l.type,
@@ -631,202 +631,202 @@ function wt({
631
631
  })));
632
632
  break;
633
633
  default:
634
- y = a[c];
634
+ m = a[c];
635
635
  }
636
- i.transformFieldValue && (y = i.transformFieldValue(c, y, h)), s[c] = y;
636
+ r.transformFieldValue && (m = r.transformFieldValue(c, m, _)), s[c] = m;
637
637
  }
638
638
  let o = s;
639
- return i.transformSubmitValues && (o = i.transformSubmitValues(
639
+ return r.transformSubmitValues && (o = r.transformSubmitValues(
640
640
  o,
641
641
  Array.from(t.values()),
642
642
  n
643
- )), (i.parseRelatedDataTemplates ?? dt)(o, n ?? {});
644
- }, [t, e, n, i]) };
643
+ )), (r.parseRelatedDataTemplates ?? ft)(o, n ?? {});
644
+ }, [t, e, n, r]) };
645
645
  }
646
- const gt = He(
646
+ const St = Ne(
647
647
  ({
648
648
  formConfig: e,
649
649
  formInstance: t,
650
650
  relatedData: n,
651
- uploadUrl: i,
652
- uploadResourceUrl: r,
651
+ uploadUrl: r,
652
+ uploadResourceUrl: i,
653
653
  submitTrackingUrl: a,
654
654
  onBeforeSubmit: s,
655
655
  onSubmitSuccess: o,
656
- onSubmitError: u,
656
+ onSubmitError: d,
657
657
  isRedirectAfterCreate: c,
658
- onRedirect: h,
659
- size: y = "middle",
658
+ onRedirect: _,
659
+ size: m = "middle",
660
660
  manualSubmit: l = !1,
661
- onValuesChange: b,
662
- readOnly: p = !1,
663
- submitDebounceMs: d,
661
+ onValuesChange: p,
662
+ readOnly: y = !1,
663
+ submitDebounceMs: u,
664
664
  gutter: v = [8, 0],
665
- defaultColSpan: _ = 12,
665
+ defaultColSpan: b = 12,
666
666
  submitButtonLabel: w
667
- }, m) => {
668
- const { message: A } = Ke.useApp(), S = V(), { i18n: g, client: F, parsers: k, redirectHandler: T, renderers: G, transformers: K } = S, le = i ?? r, ce = d ?? S.submitDebounceMs, de = w ?? g.messages.submit, { fieldGroups: C, fieldByCode: Le, initialValues: $ } = _t(e), { fieldStates: H, setFieldState: ue } = vt(C), { buildProcessedValues: z } = wt({
667
+ }, h) => {
668
+ const { message: S } = ze.useApp(), A = M(), { i18n: g, client: F, parsers: R, redirectHandler: j, renderers: G, transformers: K } = A, ce = r ?? i, de = u ?? A.submitDebounceMs, ue = w ?? g.messages.submit, { fieldGroups: V, fieldByCode: Ce, initialValues: $ } = wt(e), { fieldStates: z, setFieldState: fe } = gt(V), { buildProcessedValues: H } = At({
669
669
  formInstance: t,
670
- fieldByCode: Le,
670
+ fieldByCode: Ce,
671
671
  relatedData: n,
672
672
  transformers: K
673
- }), N = U(!1), [fe, me] = D(!1), [pe, he] = D(!1);
674
- j(() => {
673
+ }), N = U(!1), [me, pe] = D(!1), [he, ye] = D(!1);
674
+ C(() => {
675
675
  if (Object.keys($).length > 0) {
676
- const E = K.normalizeInitialValues ? K.normalizeInitialValues($, C) : $;
677
- t.setFieldsValue(E);
676
+ const k = K.normalizeInitialValues ? K.normalizeInitialValues($, V) : $;
677
+ t.setFieldsValue(k);
678
678
  }
679
- }, [C, t, $, K]);
680
- const Y = P(async () => {
679
+ }, [V, t, $, K]);
680
+ const Y = x(async () => {
681
681
  if (!N.current) {
682
- N.current = !0, me(!0);
682
+ N.current = !0, pe(!0);
683
683
  try {
684
- let E = await z();
684
+ let k = await H();
685
685
  try {
686
- a && (he(!0), await F.request({
686
+ a && (ye(!0), await F.request({
687
687
  method: "POST",
688
688
  url: a,
689
- data: E
689
+ data: k
690
690
  }));
691
- const x = await s?.(E);
692
- if (x === !1) return;
693
- x && typeof x == "object" && (E = x);
694
- } catch (x) {
695
- console.error(x);
691
+ const P = await s?.(k);
692
+ if (P === !1) return;
693
+ P && typeof P == "object" && (k = P);
694
+ } catch (P) {
695
+ console.error(P);
696
696
  return;
697
697
  } finally {
698
- he(!1);
698
+ ye(!1);
699
699
  }
700
- const B = await F.request({
700
+ const W = await F.request({
701
701
  method: e.method,
702
702
  url: e.action,
703
- data: E
703
+ data: k
704
704
  });
705
705
  t.resetFields(
706
- C.filter((x) => !x.is_hidden).map((x) => x.code)
706
+ V.filter((P) => !P.is_hidden).map((P) => P.code)
707
707
  );
708
- const X = k.submitResponse(B.data);
709
- c && X.redirectUrl && (h ?? T)(X.redirectUrl, "_blank"), o?.({
710
- values: E,
711
- response: B.data,
712
- data: X.data ?? B.data
708
+ const ee = R.submitResponse(W.data);
709
+ c && ee.redirectUrl && (_ ?? j)(ee.redirectUrl, "_blank"), o?.({
710
+ values: k,
711
+ response: W.data,
712
+ data: ee.data ?? W.data
713
713
  });
714
- } catch (E) {
715
- const B = E;
716
- A.error(
717
- B?.response?.data?.message ?? g.messages.submitError
718
- ), u?.(E);
714
+ } catch (k) {
715
+ const W = k;
716
+ S.error(
717
+ W?.response?.data?.message ?? g.messages.submitError
718
+ ), d?.(k);
719
719
  } finally {
720
- N.current = !1, me(!1);
720
+ N.current = !1, pe(!1);
721
721
  }
722
722
  }
723
723
  }, [
724
- z,
724
+ H,
725
725
  F,
726
- C,
726
+ V,
727
727
  e.action,
728
728
  e.method,
729
729
  t,
730
730
  g.messages.submitError,
731
731
  c,
732
- A,
732
+ S,
733
733
  s,
734
- h,
735
- u,
734
+ _,
735
+ d,
736
736
  o,
737
- k,
738
- T,
737
+ R,
738
+ j,
739
739
  a
740
740
  ]);
741
- ze(
742
- m,
741
+ Ye(
742
+ h,
743
743
  () => ({
744
744
  submit: Y,
745
- getProcessedValues: z,
745
+ getProcessedValues: H,
746
746
  isSubmitting: () => N.current
747
747
  }),
748
- [z, Y]
748
+ [H, Y]
749
749
  );
750
- const ye = R(
751
- () => re(() => {
750
+ const _e = E(
751
+ () => se(() => {
752
752
  Y();
753
- }, ce),
754
- [Y, ce]
755
- ), be = P(
756
- (E) => /* @__PURE__ */ f(
757
- yt,
753
+ }, de),
754
+ [Y, de]
755
+ ), be = x(
756
+ (k) => /* @__PURE__ */ f(
757
+ bt,
758
758
  {
759
- group: E,
759
+ group: k,
760
760
  formInstance: t,
761
- fieldState: H[E.code],
762
- setFieldState: ue,
763
- uploadUrl: le,
764
- readOnly: p,
765
- size: y
761
+ fieldState: z[k.code],
762
+ setFieldState: fe,
763
+ uploadUrl: ce,
764
+ readOnly: y,
765
+ size: m
766
766
  },
767
- E.id
767
+ k.id
768
768
  ),
769
769
  [
770
- H,
770
+ z,
771
771
  t,
772
- p,
773
- le,
774
- ue,
775
- y
772
+ y,
773
+ ce,
774
+ fe,
775
+ m
776
776
  ]
777
- ), je = G.layout ? G.layout({
778
- fieldGroups: C,
779
- fieldStates: H,
777
+ ), Oe = G.layout ? G.layout({
778
+ fieldGroups: V,
779
+ fieldStates: z,
780
780
  renderField: be,
781
781
  gutter: v,
782
- defaultColSpan: _,
783
- size: y
782
+ defaultColSpan: b,
783
+ size: m
784
784
  }) : /* @__PURE__ */ f(
785
- bt,
785
+ vt,
786
786
  {
787
- fieldGroups: C,
788
- fieldStates: H,
787
+ fieldGroups: V,
788
+ fieldStates: z,
789
789
  renderField: be,
790
790
  gutter: v,
791
- defaultColSpan: _,
792
- size: y
791
+ defaultColSpan: b,
792
+ size: m
793
793
  }
794
- ), Ve = !l && !p && (G.submitActions ? G.submitActions({
795
- onSubmit: ye,
796
- loading: fe || pe,
797
- label: de
798
- }) : /* @__PURE__ */ f(Re, { justify: "flex-end", children: /* @__PURE__ */ f(
794
+ ), qe = !l && !y && (G.submitActions ? G.submitActions({
795
+ onSubmit: _e,
796
+ loading: me || he,
797
+ label: ue
798
+ }) : /* @__PURE__ */ f(ie, { justify: "flex-end", children: /* @__PURE__ */ f(
799
799
  Ee,
800
800
  {
801
801
  type: "primary",
802
- onClick: ye,
803
- loading: fe || pe,
804
- children: de
802
+ onClick: _e,
803
+ loading: me || he,
804
+ children: ue
805
805
  }
806
806
  ) }));
807
- return /* @__PURE__ */ Oe(
807
+ return /* @__PURE__ */ Ue(
808
808
  q,
809
809
  {
810
810
  layout: "vertical",
811
811
  form: t,
812
- size: y,
813
- onValuesChange: b,
812
+ size: m,
813
+ onValuesChange: p,
814
814
  children: [
815
- je,
816
- Ve
815
+ Oe,
816
+ qe
817
817
  ]
818
818
  }
819
819
  );
820
820
  }
821
821
  );
822
- gt.displayName = "DynamicForm";
823
- function xe(e) {
822
+ St.displayName = "DynamicForm";
823
+ function De(e) {
824
824
  if (!e) return;
825
825
  const { mode: t } = e;
826
826
  if (t === "api" && e.api?.url)
827
827
  return e.api;
828
828
  if (t === "api_ids" && e.api_ids?.url) {
829
- const n = e.api_ids, i = n.method?.toUpperCase() === "POST";
829
+ const n = e.api_ids, r = n.method?.toUpperCase() === "POST";
830
830
  return {
831
831
  url: n.url,
832
832
  method: n.method,
@@ -834,8 +834,8 @@ function xe(e) {
834
834
  mapping_attr: n.mapping_attr,
835
835
  link: n.link,
836
836
  result_type: n.result_type ?? "array",
837
- params: n.params ?? (!i && !n.data ? { ids: "{{value}}" } : void 0),
838
- data: n.data ?? (i && !n.params ? { ids: "{{value}}" } : void 0)
837
+ params: n.params ?? (!r && !n.data ? { ids: "{{value}}" } : void 0),
838
+ data: n.data ?? (r && !n.params ? { ids: "{{value}}" } : void 0)
839
839
  };
840
840
  }
841
841
  if (t === "api_detail" && e.api_detail?.url) {
@@ -853,49 +853,49 @@ function xe(e) {
853
853
  };
854
854
  }
855
855
  }
856
- function we(e) {
856
+ function ge(e) {
857
857
  return {
858
858
  value: e,
859
859
  id: e
860
860
  };
861
861
  }
862
- function St(e, t) {
863
- const n = t.method || "GET", i = n.toUpperCase() === "GET";
862
+ function Ft(e, t) {
863
+ const n = t.method || "GET", r = n.toUpperCase() === "GET";
864
864
  if (t.url_template)
865
- return (Array.isArray(e) ? e.filter((u) => u != null && u !== "") : e != null && e !== "" ? [e] : []).map((u) => {
866
- const c = we(u), h = ne(t.url, c), y = t.params ? O(t.params, c) : void 0, l = t.data ? O(t.data, c) : void 0;
865
+ return (Array.isArray(e) ? e.filter((d) => d != null && d !== "") : e != null && e !== "" ? [e] : []).map((d) => {
866
+ const c = ge(d), _ = J(t.url, c), m = t.params ? O(t.params, c) : void 0, l = t.data ? O(t.data, c) : void 0;
867
867
  return {
868
868
  method: n,
869
- url: h,
870
- params: i ? y : void 0,
871
- data: i ? void 0 : l
869
+ url: _,
870
+ params: r ? m : void 0,
871
+ data: r ? void 0 : l
872
872
  };
873
873
  });
874
- const r = we(e), a = t.params ? O(t.params, r) : void 0, s = t.data ? O(t.data, r) : void 0;
874
+ const i = ge(e), a = t.params ? O(t.params, i) : void 0, s = t.data ? O(t.data, i) : void 0;
875
875
  return [
876
876
  {
877
877
  method: n,
878
878
  url: t.url,
879
- params: i ? a : void 0,
880
- data: i ? void 0 : s
879
+ params: r ? a : void 0,
880
+ data: r ? void 0 : s
881
881
  }
882
882
  ];
883
883
  }
884
884
  function Pe(e, t) {
885
- const n = t.data_path ? W(e, t.data_path) : e;
885
+ const n = t.data_path ? B(e, t.data_path) : e;
886
886
  return (t.result_type ?? (Array.isArray(n) ? "array" : "object")) === "array" ? Array.isArray(n) ? n : n != null ? [n] : [] : Array.isArray(n) ? n.length ? [n[0]] : [] : n && typeof n == "object" ? [n] : [];
887
887
  }
888
- function Me(e, t) {
889
- return Pt(e, t.mapping_attr);
888
+ function xe(e, t) {
889
+ return Tt(e, t.mapping_attr);
890
890
  }
891
- function Te(e, t) {
891
+ function Le(e, t) {
892
892
  return Mt(t.link, e);
893
893
  }
894
- async function At(e, t, n, i) {
895
- const r = St(e, t);
896
- if (!r.length) return [];
894
+ async function kt(e, t, n, r) {
895
+ const i = Ft(e, t);
896
+ if (!i.length) return [];
897
897
  const a = await Promise.all(
898
- r.map((o) => n({ ...o, signal: i }))
898
+ i.map((o) => n({ ...o, signal: r }))
899
899
  ), s = [];
900
900
  for (const o of a)
901
901
  s.push(...Pe(o.data, t));
@@ -904,58 +904,58 @@ async function At(e, t, n, i) {
904
904
  function I(e) {
905
905
  return !!(e == null || e === "" || Array.isArray(e) && e.length === 0);
906
906
  }
907
- function Ft(e, t) {
908
- const n = e.option_config?.api_options?.params, i = e.option_config?.api_options?.data;
909
- if (!n && !i) return;
910
- const r = (a) => {
907
+ function Et(e, t) {
908
+ const n = e.option_config?.api_options?.params, r = e.option_config?.api_options?.data;
909
+ if (!n && !r) return;
910
+ const i = (a) => {
911
911
  const s = {};
912
912
  for (const o in a)
913
913
  if (typeof a[o] == "string" && a[o].startsWith("{{") && a[o].endsWith("}}")) {
914
- const u = a[o].slice(2, -2).trim();
915
- s[o] = t?.[u];
914
+ const d = a[o].slice(2, -2).trim();
915
+ s[o] = t?.[d];
916
916
  } else
917
917
  s[o] = a[o];
918
918
  return s;
919
919
  };
920
920
  return {
921
- params: n ? r(n) : void 0,
922
- data: i ? r(i) : void 0
921
+ params: n ? i(n) : void 0,
922
+ data: r ? i(r) : void 0
923
923
  };
924
924
  }
925
- function Et(e, t) {
926
- const n = t.option_config?.label_attr, i = t.option_config?.value_attr || "";
925
+ function Rt(e, t) {
926
+ const n = t.option_config?.label_attr, r = t.option_config?.value_attr || "";
927
927
  if (n?.length) {
928
- const r = n.join(" - ");
929
- return e[r] !== void 0 ? String(e[r]) : n.map((a) => e[a]).filter((a) => a != null && a !== "").join(" - ");
928
+ const i = n.join(" - ");
929
+ return e[i] !== void 0 ? String(e[i]) : n.map((a) => e[a]).filter((a) => a != null && a !== "").join(" - ");
930
930
  }
931
- return String(e[i] ?? "");
931
+ return String(e[r] ?? "");
932
932
  }
933
- function Rt(e, t) {
933
+ function Dt(e, t) {
934
934
  if (!t?.length) return null;
935
- const i = (Array.isArray(e) ? e : [e]).map((r) => t.find((a) => String(a.value) === String(r))?.label).filter((r) => !!r);
936
- return i.length ? i.join(", ") : null;
935
+ const r = (Array.isArray(e) ? e : [e]).map((i) => t.find((a) => String(a.value) === String(i))?.label).filter((i) => !!i);
936
+ return r.length ? r.join(", ") : null;
937
937
  }
938
- function kt(e, t, n) {
938
+ function Pt(e, t, n) {
939
939
  if (I(e)) return null;
940
- const i = t.option_config?.value_attr || "value", r = Array.isArray(e) ? e : [e];
940
+ const r = t.option_config?.value_attr || "value", i = Array.isArray(e) ? e : [e];
941
941
  if (t.is_option_api && n?.length) {
942
- const s = r.map((o) => {
943
- const u = n.find(
944
- (c) => String(c[i]) === String(o)
942
+ const s = i.map((o) => {
943
+ const d = n.find(
944
+ (c) => String(c[r]) === String(o)
945
945
  );
946
- return u ? Et(u, t) : String(o);
946
+ return d ? Rt(d, t) : String(o);
947
947
  }).filter(Boolean);
948
948
  return s.length ? s.join(", ") : null;
949
949
  }
950
- const a = Rt(e, t.metas);
951
- return a || r.map(String).join(", ");
950
+ const a = Dt(e, t.metas);
951
+ return a || i.map(String).join(", ");
952
952
  }
953
- function Dt(e, t) {
953
+ function xt(e, t) {
954
954
  if (I(e)) return null;
955
- const n = t.additional_config?.datetime?.format, i = Q(e);
956
- return i.isValid() ? n ? i.format(n) : i.format("YYYY-MM-DD HH:mm:ss") : String(e);
955
+ const n = t.additional_config?.datetime?.format, r = X(e);
956
+ return r.isValid() ? n ? r.format(n) : r.format("YYYY-MM-DD HH:mm:ss") : String(e);
957
957
  }
958
- function xt(e) {
958
+ function Lt(e) {
959
959
  if (I(e)) return null;
960
960
  if (Array.isArray(e)) {
961
961
  const t = e.map(
@@ -965,19 +965,19 @@ function xt(e) {
965
965
  }
966
966
  return String(e);
967
967
  }
968
- function Pt(e, t) {
968
+ function Tt(e, t) {
969
969
  return t?.length ? t.map((n) => {
970
- const i = W(e, n) ?? e[n];
971
- return i != null ? String(i) : "";
970
+ const r = B(e, n) ?? e[n];
971
+ return r != null ? String(r) : "";
972
972
  }).filter(Boolean).join(" - ") : JSON.stringify(e);
973
973
  }
974
974
  function Mt(e, t) {
975
- return e ? e.replace(/\{\{(.+?)\}\}/g, (n, i) => {
976
- const r = i.trim(), a = W(t, r) ?? t[r];
975
+ return e ? e.replace(/\{\{(.+?)\}\}/g, (n, r) => {
976
+ const i = r.trim(), a = B(t, i) ?? t[i];
977
977
  return a != null ? String(a) : "";
978
978
  }) : null;
979
979
  }
980
- function ge(e, t, n) {
980
+ function Ae(e, t, n) {
981
981
  if (I(e)) return null;
982
982
  switch (t?.mode ?? "formatted") {
983
983
  case "raw":
@@ -986,25 +986,25 @@ function ge(e, t, n) {
986
986
  case "api":
987
987
  case "api_ids":
988
988
  case "api_detail": {
989
- const r = xe(t);
990
- if (!n || !r)
989
+ const i = De(t);
990
+ if (!n || !i)
991
991
  return Array.isArray(e) ? e.map(String).join(", ") : String(e);
992
- const a = Pe(n, r);
992
+ const a = Pe(n, i);
993
993
  return a.length ? a.map((o) => {
994
- const u = Me(o, r), c = Te(o, r);
995
- return c ? `${u} (${c})` : u;
994
+ const d = xe(o, i), c = Le(o, i);
995
+ return c ? `${d} (${c})` : d;
996
996
  }).filter(Boolean).join(", ") || null : String(e);
997
997
  }
998
998
  default:
999
999
  return String(e);
1000
1000
  }
1001
1001
  }
1002
- function Tt(e, t, n) {
1003
- const i = e.additional_config?.view_value;
1004
- if (i?.mode === "api" || i?.mode === "api_ids" || i?.mode === "api_detail")
1005
- return ge(
1002
+ function jt(e, t, n) {
1003
+ const r = e.additional_config?.view_value;
1004
+ if (r?.mode === "api" || r?.mode === "api_ids" || r?.mode === "api_detail")
1005
+ return Ae(
1006
1006
  t,
1007
- i,
1007
+ r,
1008
1008
  n.viewValueFetched
1009
1009
  );
1010
1010
  switch (e.field?.type?.code) {
@@ -1012,239 +1012,294 @@ function Tt(e, t, n) {
1012
1012
  case "number":
1013
1013
  return I(t) ? null : String(t);
1014
1014
  case "datetime":
1015
- return Dt(t, e);
1015
+ return xt(t, e);
1016
1016
  case "select":
1017
1017
  case "radio":
1018
1018
  case "checkbox":
1019
- return kt(t, e, n.optionList);
1019
+ return Pt(t, e, n.optionList);
1020
1020
  case "image":
1021
1021
  case "file":
1022
- return xt(t);
1022
+ return Lt(t);
1023
1023
  default:
1024
- return i ? ge(
1024
+ return r ? Ae(
1025
1025
  t,
1026
- i,
1026
+ r,
1027
1027
  n.viewValueFetched
1028
1028
  ) : I(t) ? null : String(t);
1029
1029
  }
1030
1030
  }
1031
- const J = /* @__PURE__ */ new Map(), Ct = 3e4;
1032
- function Lt(e) {
1033
- const t = J.get(e);
1031
+ const Q = /* @__PURE__ */ new Map(), Vt = 3e4;
1032
+ function Ct(e) {
1033
+ const t = Q.get(e);
1034
1034
  if (t) {
1035
1035
  if (Date.now() > t.expiresAt) {
1036
- J.delete(e);
1036
+ Q.delete(e);
1037
1037
  return;
1038
1038
  }
1039
1039
  return t.error;
1040
1040
  }
1041
1041
  }
1042
1042
  function Se(e, t) {
1043
- J.set(e, {
1043
+ Q.set(e, {
1044
1044
  error: t,
1045
- expiresAt: Date.now() + Ct
1045
+ expiresAt: Date.now() + Vt
1046
1046
  });
1047
1047
  }
1048
- function oe(e, t, n = !0) {
1049
- const i = V(), [r, a] = D(), [s, o] = D(!1), [u, c] = D(), h = U(t), y = U(i);
1050
- h.current = t, y.current = i;
1051
- const l = ae(e);
1052
- return j(() => {
1048
+ function Z(e, t, n = !0) {
1049
+ const r = M(), [i, a] = D(), [s, o] = D(!1), [d, c] = D(), _ = U(t), m = U(r);
1050
+ _.current = t, m.current = r;
1051
+ const l = le(e);
1052
+ return C(() => {
1053
1053
  if (!n) {
1054
1054
  a(void 0), c(void 0), o(!1);
1055
1055
  return;
1056
1056
  }
1057
- const p = Lt(l);
1058
- if (p !== void 0) {
1059
- c(p), o(!1);
1057
+ const y = Ct(l);
1058
+ if (y !== void 0) {
1059
+ c(y), o(!1);
1060
1060
  return;
1061
1061
  }
1062
- const d = new AbortController();
1062
+ const u = new AbortController();
1063
1063
  return o(!0), c(void 0), (async () => {
1064
1064
  try {
1065
- const _ = await te(
1066
- y.current,
1065
+ const b = await re(
1066
+ m.current,
1067
1067
  "viewCache",
1068
1068
  l,
1069
- (w) => h.current(w),
1070
- d.signal
1069
+ (w) => _.current(w),
1070
+ u.signal
1071
1071
  );
1072
- d.signal.aborted || (a(_), c(void 0));
1073
- } catch (_) {
1074
- d.signal.aborted || (Se(l, _), c(_));
1072
+ u.signal.aborted || (a(b), c(void 0));
1073
+ } catch (b) {
1074
+ u.signal.aborted || (Se(l, b), c(b));
1075
1075
  } finally {
1076
- d.signal.aborted || o(!1);
1076
+ u.signal.aborted || o(!1);
1077
1077
  }
1078
- })(), () => d.abort();
1079
- }, [n, l]), { data: r, isLoading: s, error: u, refetch: async () => {
1080
- if (J.delete(l), !n) return;
1081
- const p = new AbortController();
1078
+ })(), () => u.abort();
1079
+ }, [n, l]), { data: i, isLoading: s, error: d, refetch: async () => {
1080
+ if (Q.delete(l), !n) return;
1081
+ const y = new AbortController();
1082
1082
  o(!0), c(void 0);
1083
1083
  try {
1084
- const d = await te(
1085
- y.current,
1084
+ const u = await re(
1085
+ m.current,
1086
1086
  "viewCache",
1087
1087
  l,
1088
- (v) => h.current(v),
1089
- p.signal
1088
+ (v) => _.current(v),
1089
+ y.signal
1090
1090
  );
1091
- return a(d), d;
1092
- } catch (d) {
1093
- throw Se(l, d), c(d), d;
1091
+ return a(u), u;
1092
+ } catch (u) {
1093
+ throw Se(l, u), c(u), u;
1094
1094
  } finally {
1095
1095
  o(!1);
1096
1096
  }
1097
1097
  } };
1098
1098
  }
1099
- const jt = ({
1099
+ const Ot = ({ value: e, code: t, modeConfig: n }) => {
1100
+ const { client: r, renderers: i, i18n: a } = M(), s = E(
1101
+ () => (Array.isArray(e) ? e : [e]).filter(Boolean),
1102
+ [e]
1103
+ ), {
1104
+ data: o,
1105
+ isLoading: d,
1106
+ error: c
1107
+ } = Z(
1108
+ ["api_detail", t, s, n?.url, n?.method],
1109
+ async (l) => (await Promise.all(
1110
+ s.map(async (y) => {
1111
+ const u = J(n?.url || "", { id: y });
1112
+ return (await r.request({
1113
+ method: n?.method,
1114
+ url: u,
1115
+ signal: l
1116
+ })).data;
1117
+ })
1118
+ )).filter(Boolean),
1119
+ !!(s.length && n?.url)
1120
+ ), _ = (l, p, y) => i.link ? i.link({ url: l, label: p, data: y }) : /* @__PURE__ */ f("a", { href: l, target: "_blank", rel: "noreferrer", children: p }), m = (l) => {
1121
+ const p = n?.mapping_attr?.map((y) => l?.[y]).join(" - ");
1122
+ if (n?.link) {
1123
+ const y = J(n.link, l);
1124
+ return _(y, p, l);
1125
+ }
1126
+ return p;
1127
+ };
1128
+ return d ? /* @__PURE__ */ f(L, { children: i.viewLoading?.() ?? /* @__PURE__ */ f(ae, { size: "small" }) }) : c ? /* @__PURE__ */ f(L, { children: i.viewError?.(c) ?? a.messages.viewError }) : o?.length ? /* @__PURE__ */ f(L, { children: o.map((l, p) => /* @__PURE__ */ f("div", { children: m(l) }, p)) }) : /* @__PURE__ */ f(L, { children: i.viewEmpty?.() ?? a.messages.viewEmpty });
1129
+ }, Te = T(Ot), qt = ({ value: e, code: t, modeConfig: n }) => {
1130
+ const { client: r, renderers: i, i18n: a } = M(), {
1131
+ data: s,
1132
+ isLoading: o,
1133
+ error: d
1134
+ } = Z(
1135
+ ["api_ids", t, e, n?.url, n?.method],
1136
+ async (m) => {
1137
+ const l = n?.method || "GET", p = l.toUpperCase() === "POST", y = Array.isArray(e) ? e : [e], v = (await r.request({
1138
+ method: l,
1139
+ url: n?.url || "",
1140
+ data: p ? { ids: y } : void 0,
1141
+ params: p ? void 0 : { ids: y },
1142
+ signal: m
1143
+ })).data, b = n?.data_path ? B(v, n.data_path) : v;
1144
+ return Array.isArray(b) ? b : v;
1145
+ },
1146
+ !!(e && n?.url)
1147
+ ), c = (m, l, p) => i.link ? i.link({ url: m, label: l, data: p }) : /* @__PURE__ */ f("a", { href: m, target: "_blank", rel: "noreferrer", children: l }), _ = (m) => {
1148
+ const l = n?.mapping_attr?.map((p) => m?.[p]).join(" - ");
1149
+ if (n?.link) {
1150
+ const p = J(n.link, m);
1151
+ return c(p, l, m);
1152
+ }
1153
+ return l;
1154
+ };
1155
+ return o ? /* @__PURE__ */ f(L, { children: i.viewLoading?.() ?? /* @__PURE__ */ f(ae, { size: "small" }) }) : d ? /* @__PURE__ */ f(L, { children: i.viewError?.(d) ?? a.messages.viewError }) : s ? Array.isArray(e) ? /* @__PURE__ */ f(ie, { vertical: !0, children: (Array.isArray(s) ? s : [s]).map((m, l) => /* @__PURE__ */ f("div", { children: _(m) }, m.id ?? l)) }) : _(
1156
+ Array.isArray(s) ? s[0] : s
1157
+ ) : /* @__PURE__ */ f(L, { children: i.viewEmpty?.() ?? a.messages.viewEmpty });
1158
+ }, Me = T(qt), Ut = ({
1100
1159
  value: e,
1101
1160
  code: t,
1102
1161
  modeConfig: n,
1103
- viewConfig: i
1162
+ viewConfig: r
1104
1163
  }) => {
1105
- const { client: r, renderers: a, i18n: s } = V(), o = R(
1106
- () => n ?? (i ? xe(i) : void 0),
1107
- [n, i]
1108
- ), u = R(
1164
+ const { client: i, renderers: a, i18n: s } = M(), o = E(
1165
+ () => n ?? (r ? De(r) : void 0),
1166
+ [n, r]
1167
+ ), d = E(
1109
1168
  () => ["api_view", t, e, o?.url, o?.method, o?.data_path],
1110
1169
  [t, e, o?.url, o?.method, o?.data_path]
1111
- ), c = P(
1112
- async (d) => o ? At(
1170
+ ), c = x(
1171
+ async (u) => o ? kt(
1113
1172
  e,
1114
1173
  o,
1115
- (v) => r.request({ ...v, signal: d })
1174
+ (v) => i.request({ ...v, signal: u })
1116
1175
  ) : [],
1117
- [r, o, e]
1118
- ), { data: h, isLoading: y, error: l } = oe(u, c, !!(e && o?.url)), b = (d, v, _) => a.link ? a.link({ url: d, label: v, data: _ }) : /* @__PURE__ */ f("a", { href: d, target: "_blank", rel: "noreferrer", children: v }), p = (d, v) => {
1176
+ [i, o, e]
1177
+ ), { data: _, isLoading: m, error: l } = Z(d, c, !!(e && o?.url)), p = (u, v, b) => a.link ? a.link({ url: u, label: v, data: b }) : /* @__PURE__ */ f("a", { href: u, target: "_blank", rel: "noreferrer", children: v }), y = (u, v) => {
1119
1178
  if (!o) return null;
1120
- const _ = Me(d, o), w = Te(d, o), m = w ? b(w, _, d) : _;
1121
- return /* @__PURE__ */ f("div", { children: m }, d.id ?? v);
1179
+ const b = xe(u, o), w = Le(u, o), h = w ? p(w, b, u) : b;
1180
+ return /* @__PURE__ */ f("div", { children: h }, u.id ?? v);
1122
1181
  };
1123
- return y ? /* @__PURE__ */ f(L, { children: a.viewLoading?.() ?? /* @__PURE__ */ f(ke, { size: "small" }) }) : l ? /* @__PURE__ */ f(L, { children: a.viewError?.(l) ?? s.messages.viewError }) : h?.length ? o?.result_type === "object" && h.length === 1 ? p(h[0], 0) : /* @__PURE__ */ f(Re, { vertical: !0, children: h.map(p) }) : /* @__PURE__ */ f(L, { children: a.viewEmpty?.() ?? s.messages.viewEmpty });
1124
- }, se = M(jt);
1125
- function Vt(e) {
1182
+ return m ? /* @__PURE__ */ f(L, { children: a.viewLoading?.() ?? /* @__PURE__ */ f(ae, { size: "small" }) }) : l ? /* @__PURE__ */ f(L, { children: a.viewError?.(l) ?? s.messages.viewError }) : _?.length ? o?.result_type === "object" && _.length === 1 ? y(_[0], 0) : /* @__PURE__ */ f(ie, { vertical: !0, children: _.map(y) }) : /* @__PURE__ */ f(L, { children: a.viewEmpty?.() ?? s.messages.viewEmpty });
1183
+ }, je = T(Ut);
1184
+ function It(e) {
1126
1185
  return !!(e.option_config && e.is_option_api);
1127
1186
  }
1128
- function Ot(e) {
1129
- return e === "api" || e === "api_ids" || e === "api_detail";
1130
- }
1131
- function qt(e, t) {
1132
- const n = V(), i = ae([
1187
+ function Bt(e, t) {
1188
+ const n = M(), r = le([
1133
1189
  "viewModeOptions",
1134
1190
  e.map((a) => a.code),
1135
1191
  t
1136
- ]), { data: r } = oe(
1137
- [i],
1192
+ ]), { data: i } = Z(
1193
+ [r],
1138
1194
  async (a) => {
1139
1195
  const s = {};
1140
1196
  return await Promise.all(
1141
1197
  e.map(async (o) => {
1142
1198
  if (!o.option_config?.url) return;
1143
- const u = Ft(o, t), c = o.option_config.method?.toUpperCase() === "GET" || !o.option_config.method, h = await n.client.request({
1199
+ const d = Et(o, t), c = o.option_config.method?.toUpperCase() === "GET" || !o.option_config.method, _ = await n.client.request({
1144
1200
  method: o.option_config.method || "GET",
1145
1201
  url: o.option_config.url,
1146
- params: c ? u?.params : void 0,
1147
- data: c ? void 0 : u?.data,
1202
+ params: c ? d?.params : void 0,
1203
+ data: c ? void 0 : d?.data,
1148
1204
  signal: a
1149
1205
  });
1150
1206
  s[o.code] = {
1151
- optionList: n.parsers.optionResponse(h.data, o)
1207
+ optionList: n.parsers.optionResponse(_.data, o)
1152
1208
  };
1153
1209
  })
1154
1210
  ), s;
1155
1211
  },
1156
1212
  e.length > 0
1157
1213
  );
1158
- return r ?? {};
1214
+ return i ?? {};
1159
1215
  }
1160
- const Zt = ({
1216
+ const en = ({
1161
1217
  formConfig: e,
1162
1218
  formValues: t
1163
1219
  }) => {
1164
- const n = e?.form?.field_groups ?? [], i = R(
1165
- () => n.filter(Vt),
1220
+ const n = e?.form?.field_groups ?? [], r = E(
1221
+ () => n.filter(It),
1166
1222
  [n]
1167
- ), r = qt(i, t);
1168
- return R(() => n.filter((s) => !s.is_hidden).map((s) => {
1169
- const o = t?.[s.code], u = s.additional_config?.view_value, c = u?.mode;
1170
- if (Ot(c) && u)
1223
+ ), i = Bt(r, t);
1224
+ return E(() => n.filter((s) => !s.is_hidden).map((s) => {
1225
+ const o = t?.[s.code], d = s.additional_config?.view_value, c = d?.mode;
1226
+ if (c === "api" && d)
1227
+ return {
1228
+ key: s.code,
1229
+ label: s.label,
1230
+ rawValue: o,
1231
+ viewValue: /* @__PURE__ */ f(
1232
+ je,
1233
+ {
1234
+ code: s.code,
1235
+ value: o,
1236
+ viewConfig: d
1237
+ }
1238
+ ),
1239
+ field_group: s
1240
+ };
1241
+ if (c === "api_ids" && d?.api_ids)
1242
+ return {
1243
+ key: s.code,
1244
+ label: s.label,
1245
+ rawValue: o,
1246
+ viewValue: /* @__PURE__ */ f(
1247
+ Me,
1248
+ {
1249
+ code: s.code,
1250
+ value: o,
1251
+ modeConfig: d.api_ids
1252
+ }
1253
+ ),
1254
+ field_group: s
1255
+ };
1256
+ if (c === "api_detail" && d?.api_detail)
1171
1257
  return {
1172
1258
  key: s.code,
1173
1259
  label: s.label,
1174
1260
  rawValue: o,
1175
1261
  viewValue: /* @__PURE__ */ f(
1176
- se,
1262
+ Te,
1177
1263
  {
1178
1264
  code: s.code,
1179
1265
  value: o,
1180
- viewConfig: u
1266
+ modeConfig: d.api_detail
1181
1267
  }
1182
1268
  ),
1183
1269
  field_group: s
1184
1270
  };
1185
- const h = r[s.code] ?? {};
1271
+ const _ = i[s.code] ?? {};
1186
1272
  return {
1187
1273
  key: s.code,
1188
1274
  label: s.label,
1189
1275
  rawValue: o,
1190
- viewValue: Tt(s, o, h),
1276
+ viewValue: jt(s, o, _),
1191
1277
  field_group: s
1192
1278
  };
1193
- }), [r, n, t]);
1194
- }, Ut = ({
1279
+ }), [i, n, t]);
1280
+ }, Wt = ({
1195
1281
  code: e,
1196
1282
  value: t,
1197
1283
  fieldGroup: n
1198
1284
  }) => {
1199
- const i = n?.additional_config?.view_value;
1200
- switch (i?.mode) {
1285
+ const r = n?.additional_config?.view_value;
1286
+ switch (r?.mode) {
1201
1287
  case "raw":
1202
1288
  return t;
1203
1289
  case "api":
1204
- case "api_ids":
1205
- case "api_detail":
1206
- return /* @__PURE__ */ f(se, { code: e, value: t, viewConfig: i });
1290
+ return /* @__PURE__ */ f(je, { code: e, value: t, viewConfig: r });
1291
+ case "api_ids": {
1292
+ const i = r?.api_ids;
1293
+ return /* @__PURE__ */ f(Me, { code: e, value: t, modeConfig: i });
1294
+ }
1295
+ case "api_detail": {
1296
+ const i = r?.api_detail;
1297
+ return /* @__PURE__ */ f(Te, { code: e, value: t, modeConfig: i });
1298
+ }
1207
1299
  default:
1208
1300
  return t;
1209
1301
  }
1210
- }, en = M(Ut), It = ({ value: e, code: t, modeConfig: n }) => /* @__PURE__ */ f(
1211
- se,
1212
- {
1213
- code: t,
1214
- value: e,
1215
- viewConfig: n ? { mode: "api_ids", api_ids: n } : void 0
1216
- }
1217
- ), tn = M(It), Bt = ({ value: e, code: t, modeConfig: n }) => {
1218
- const { client: i, renderers: r, i18n: a } = V(), s = R(
1219
- () => (Array.isArray(e) ? e : [e]).filter(Boolean),
1220
- [e]
1221
- ), {
1222
- data: o,
1223
- isLoading: u,
1224
- error: c
1225
- } = oe(
1226
- ["api_detail", t, s, n?.url, n?.method],
1227
- async (l) => (await Promise.all(
1228
- s.map(async (p) => {
1229
- const d = ne(n?.url || "", { id: p });
1230
- return (await i.request({
1231
- method: n?.method,
1232
- url: d,
1233
- signal: l
1234
- })).data;
1235
- })
1236
- )).filter(Boolean),
1237
- !!(s.length && n?.url)
1238
- ), h = (l, b, p) => r.link ? r.link({ url: l, label: b, data: p }) : /* @__PURE__ */ f("a", { href: l, target: "_blank", rel: "noreferrer", children: b }), y = (l) => {
1239
- const b = n?.mapping_attr?.map((p) => l?.[p]).join(" - ");
1240
- if (n?.link) {
1241
- const p = ne(n.link, l);
1242
- return h(p, b, l);
1243
- }
1244
- return b;
1245
- };
1246
- return u ? /* @__PURE__ */ f(L, { children: r.viewLoading?.() ?? /* @__PURE__ */ f(ke, { size: "small" }) }) : c ? /* @__PURE__ */ f(L, { children: r.viewError?.(c) ?? a.messages.viewError }) : o?.length ? /* @__PURE__ */ f(L, { children: o.map((l, b) => /* @__PURE__ */ f("div", { children: y(l) }, b)) }) : /* @__PURE__ */ f(L, { children: r.viewEmpty?.() ?? a.messages.viewEmpty });
1247
- }, nn = M(Bt), Ce = {
1302
+ }, tn = T(Wt), Ve = {
1248
1303
  submit: "Save",
1249
1304
  submitError: "Failed to submit form",
1250
1305
  inputPlaceholder: (e) => `Enter ${e}`,
@@ -1255,9 +1310,9 @@ const Zt = ({
1255
1310
  viewLoading: "Loading...",
1256
1311
  viewEmpty: "-",
1257
1312
  viewError: "Failed to load"
1258
- }, rn = {
1259
- messages: Ce
1260
- }, Wt = (e) => {
1313
+ }, nn = {
1314
+ messages: Ve
1315
+ }, Gt = (e) => {
1261
1316
  if (Array.isArray(e)) return e;
1262
1317
  if (e && typeof e == "object" && "items" in e && Array.isArray(e.items))
1263
1318
  return e.items;
@@ -1266,104 +1321,104 @@ const Zt = ({
1266
1321
  return Array.isArray(t.items) ? t.items : [];
1267
1322
  }
1268
1323
  return [];
1269
- }, Gt = (e) => ({
1324
+ }, Kt = (e) => ({
1270
1325
  redirectUrl: e?.redirect_after_create,
1271
1326
  data: e
1272
- }), Kt = (e, t) => t?.dataPath ? W(e, t.dataPath) : e, Z = {
1273
- optionResponse: Wt,
1274
- submitResponse: Gt,
1275
- viewResponse: Kt
1276
- }, $t = (e, t = "_blank") => {
1327
+ }), $t = (e, t) => t?.dataPath ? B(e, t.dataPath) : e, te = {
1328
+ optionResponse: Gt,
1329
+ submitResponse: Kt,
1330
+ viewResponse: $t
1331
+ }, zt = (e, t = "_blank") => {
1277
1332
  window.open(e, t);
1278
- }, ee = {
1333
+ }, ne = {
1279
1334
  upload: async () => {
1280
1335
  throw new Error("Upload adapter is not configured");
1281
1336
  },
1282
1337
  remove: async () => !1
1283
1338
  };
1284
- function an({
1339
+ function rn({
1285
1340
  children: e,
1286
1341
  client: t,
1287
1342
  upload: n,
1288
- i18n: i,
1289
- parsers: r,
1343
+ i18n: r,
1344
+ parsers: i,
1290
1345
  renderers: a = {},
1291
1346
  transformers: s = {},
1292
1347
  cache: o,
1293
- submitDebounceMs: u = 200,
1348
+ submitDebounceMs: d = 200,
1294
1349
  redirectHandler: c,
1295
1350
  // legacy props
1296
- requestClient: h,
1297
- uploadAdapter: y,
1351
+ requestClient: _,
1352
+ uploadAdapter: m,
1298
1353
  deleteUploadAdapter: l,
1299
- messages: b,
1300
- optionResponseParser: p,
1301
- customFieldRenderers: d
1354
+ messages: p,
1355
+ optionResponseParser: y,
1356
+ customFieldRenderers: u
1302
1357
  }) {
1303
- const v = U(/* @__PURE__ */ new Map()), _ = U(/* @__PURE__ */ new Map()), w = R(() => {
1304
- const m = t ?? {
1305
- request: h ?? (() => {
1358
+ const v = U(/* @__PURE__ */ new Map()), b = U(/* @__PURE__ */ new Map()), w = E(() => {
1359
+ const h = t ?? {
1360
+ request: _ ?? (() => {
1306
1361
  throw new Error("DynamicFormProvider requires client or requestClient");
1307
1362
  })
1308
- }, A = d ? Object.entries(d).map(([F, k]) => ({
1363
+ }, S = u ? Object.entries(u).map(([F, R]) => ({
1309
1364
  match: F,
1310
- render: k
1311
- })) : [], S = {
1312
- ...Ce,
1313
- ...i?.messages,
1314
- ...b
1365
+ render: R
1366
+ })) : [], A = {
1367
+ ...Ve,
1368
+ ...r?.messages,
1369
+ ...p
1315
1370
  }, g = {
1316
- ...ee,
1371
+ ...ne,
1317
1372
  ...n,
1318
- upload: n?.upload ?? y ?? ee.upload,
1319
- remove: n?.remove ?? (l ? (F) => l(F.path) : ee.remove)
1373
+ upload: n?.upload ?? m ?? ne.upload,
1374
+ remove: n?.remove ?? (l ? (F) => l(F.path) : ne.remove)
1320
1375
  };
1321
1376
  return {
1322
- client: m,
1377
+ client: h,
1323
1378
  upload: g,
1324
- i18n: { messages: S },
1379
+ i18n: { messages: A },
1325
1380
  parsers: {
1326
- optionResponse: r?.optionResponse ?? p ?? Z.optionResponse,
1327
- submitResponse: r?.submitResponse ?? Z.submitResponse,
1328
- viewResponse: r?.viewResponse ?? Z.viewResponse
1381
+ optionResponse: i?.optionResponse ?? y ?? te.optionResponse,
1382
+ submitResponse: i?.submitResponse ?? te.submitResponse,
1383
+ viewResponse: i?.viewResponse ?? te.viewResponse
1329
1384
  },
1330
1385
  renderers: {
1331
1386
  ...a,
1332
- fields: [...a.fields ?? [], ...A]
1387
+ fields: [...a.fields ?? [], ...S]
1333
1388
  },
1334
1389
  transformers: s,
1335
1390
  cache: {
1336
1391
  enabled: o?.enabled ?? !0,
1337
1392
  ttlMs: o?.ttlMs ?? 6e4
1338
1393
  },
1339
- submitDebounceMs: u,
1340
- redirectHandler: c ?? $t,
1394
+ submitDebounceMs: d,
1395
+ redirectHandler: c ?? zt,
1341
1396
  optionCache: v.current,
1342
- viewCache: _.current
1397
+ viewCache: b.current
1343
1398
  };
1344
1399
  }, [
1345
1400
  t,
1346
- h,
1401
+ _,
1347
1402
  n,
1348
- y,
1403
+ m,
1349
1404
  l,
1350
- i?.messages,
1351
- b,
1352
- r?.optionResponse,
1353
- r?.submitResponse,
1354
- r?.viewResponse,
1405
+ r?.messages,
1355
1406
  p,
1407
+ i?.optionResponse,
1408
+ i?.submitResponse,
1409
+ i?.viewResponse,
1410
+ y,
1356
1411
  a,
1357
- d,
1412
+ u,
1358
1413
  s,
1359
1414
  o?.enabled,
1360
1415
  o?.ttlMs,
1361
- u,
1416
+ d,
1362
1417
  c
1363
1418
  ]);
1364
- return /* @__PURE__ */ f(ie.Provider, { value: w, children: e });
1419
+ return /* @__PURE__ */ f(oe.Provider, { value: w, children: e });
1365
1420
  }
1366
- function on(e) {
1421
+ function an(e) {
1367
1422
  return {
1368
1423
  request: async (t) => ({ data: (await e({
1369
1424
  method: t.method,
@@ -1377,55 +1432,55 @@ function on(e) {
1377
1432
  };
1378
1433
  }
1379
1434
  export {
1380
- nn as ApiDetailItem,
1381
- tn as ApiItem,
1382
- se as ApiViewItem,
1383
- bt as DefaultLayout,
1384
- gt as DynamicForm,
1385
- an as DynamicFormProvider,
1386
- yt as FormItem,
1387
- en as MetaItemValue,
1388
- St as buildApiViewRequests,
1389
- ae as buildCacheKey,
1390
- te as cachedRequest,
1391
- on as createAxiosDynamicFormClient,
1392
- re as debounce,
1393
- rn as defaultI18n,
1394
- Ce as defaultMessages,
1395
- Wt as defaultOptionResponseParser,
1396
- Z as defaultParsers,
1397
- $t as defaultRedirectHandler,
1398
- Gt as defaultSubmitResponseParser,
1399
- Kt as defaultViewResponseParser,
1400
- ut as extractDependencyFields,
1435
+ Te as ApiDetailItem,
1436
+ Me as ApiItem,
1437
+ je as ApiViewItem,
1438
+ vt as DefaultLayout,
1439
+ St as DynamicForm,
1440
+ rn as DynamicFormProvider,
1441
+ bt as FormItem,
1442
+ tn as MetaItemValue,
1443
+ Ft as buildApiViewRequests,
1444
+ le as buildCacheKey,
1445
+ re as cachedRequest,
1446
+ an as createAxiosDynamicFormClient,
1447
+ se as debounce,
1448
+ nn as defaultI18n,
1449
+ Ve as defaultMessages,
1450
+ Gt as defaultOptionResponseParser,
1451
+ te as defaultParsers,
1452
+ zt as defaultRedirectHandler,
1453
+ Kt as defaultSubmitResponseParser,
1454
+ $t as defaultViewResponseParser,
1455
+ mt as extractDependencyFields,
1401
1456
  Pe as extractViewData,
1402
- At as fetchApiViewItems,
1403
- ne as fillTemplate,
1404
- W as getByPath,
1405
- st as getCached,
1406
- Me as getMappedLabel,
1407
- Te as getMappedLink,
1457
+ kt as fetchApiViewItems,
1458
+ J as fillTemplate,
1459
+ B as getByPath,
1460
+ ct as getCached,
1461
+ xe as getMappedLabel,
1462
+ Le as getMappedLink,
1408
1463
  I as isEmptyValue,
1409
- Xe as mapOptionToSelectItem,
1410
- Ze as mapOptions,
1411
- xe as normalizeApiViewConfig,
1412
- Xt as normalizeMetaForForm,
1413
- dt as parseFormValues,
1464
+ et as mapOptionToSelectItem,
1465
+ tt as mapOptions,
1466
+ De as normalizeApiViewConfig,
1467
+ Zt as normalizeMetaForForm,
1468
+ ft as parseFormValues,
1414
1469
  O as replaceTemplateInObject,
1415
- Ft as resolveApiOptionMeta,
1416
- Je as resolveFieldRenderer,
1417
- Qe as resolveFieldRendererFromMap,
1418
- Tt as resolveFieldViewValue,
1419
- ge as resolveViewValueConfig,
1420
- lt as setCache,
1421
- oe as useCachedViewRequest,
1422
- ft as useDependencyValues,
1423
- ot as useDynamicField,
1424
- V as useDynamicFormContext,
1425
- Qt as useDynamicFormContextOptional,
1426
- mt as useDynamicOptions,
1427
- _t as useFieldGroups,
1428
- vt as useFieldStates,
1429
- wt as useProcessedValues,
1430
- Zt as useViewMode
1470
+ Et as resolveApiOptionMeta,
1471
+ Xe as resolveFieldRenderer,
1472
+ Ze as resolveFieldRendererFromMap,
1473
+ jt as resolveFieldViewValue,
1474
+ Ae as resolveViewValueConfig,
1475
+ dt as setCache,
1476
+ Z as useCachedViewRequest,
1477
+ pt as useDependencyValues,
1478
+ lt as useDynamicField,
1479
+ M as useDynamicFormContext,
1480
+ Xt as useDynamicFormContextOptional,
1481
+ ht as useDynamicOptions,
1482
+ wt as useFieldGroups,
1483
+ gt as useFieldStates,
1484
+ At as useProcessedValues,
1485
+ en as useViewMode
1431
1486
  };