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