@declarion/react 0.38.5 → 0.40.0

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.
Files changed (50) hide show
  1. package/dist-lib/{DraggableChildrenTable-DvJO6-m0.js → DraggableChildrenTable-Ctmn0liO.js} +27 -27
  2. package/dist-lib/{Grid-D2ArPFCz.js → Grid-BsIkTp3u.js} +42 -42
  3. package/dist-lib/{LayoutRenderer-C8DQ61Vo.js → LayoutRenderer-D4oTfZhV.js} +833 -731
  4. package/dist-lib/{MarkdownRenderer-CSuODN70.js → MarkdownRenderer-B-2CrtjU.js} +1 -1
  5. package/dist-lib/{RefreshControl-CHvOUn0o.js → RefreshControl-VQf34HKZ.js} +302 -220
  6. package/dist-lib/SmartDetailPage.impl-HMaLVDlV.js +1802 -0
  7. package/dist-lib/SmartRecordListPage.impl-Cxm7qvlZ.js +763 -0
  8. package/dist-lib/api/params.d.ts +12 -11
  9. package/dist-lib/components/columns/ColumnPicker.d.ts +11 -1
  10. package/dist-lib/components/detail-layout/EvidenceBlock.d.ts +6 -0
  11. package/dist-lib/components/detail-layout/useManualColumnResize.d.ts +25 -0
  12. package/dist-lib/components/list/QuickPeek.d.ts +11 -2
  13. package/dist-lib/components/pages/list/{ListBulkBar.d.ts → ListFloatbar.d.ts} +3 -3
  14. package/dist-lib/components/pages/list/RowActionsCell.d.ts +8 -10
  15. package/dist-lib/components/pages/list/RowContextMenu.d.ts +29 -0
  16. package/dist-lib/components/pages/list/SaveViewDialog.d.ts +5 -1
  17. package/dist-lib/components/pages/list/cardProjection.d.ts +1 -1
  18. package/dist-lib/components/pages/list/column-sizing.d.ts +15 -0
  19. package/dist-lib/components/pages/list/columns.d.ts +3 -0
  20. package/dist-lib/components/pages/list/useHeaderReorder.d.ts +26 -0
  21. package/dist-lib/components/pages/list/useRowMenu.d.ts +47 -0
  22. package/dist-lib/components/pages/profile/Profile.d.ts +3 -0
  23. package/dist-lib/components/pages/tenant-params/TenantParamsPage.d.ts +2 -0
  24. package/dist-lib/components/params/ParamsBlock.d.ts +25 -0
  25. package/dist-lib/components/params/param-editors.d.ts +28 -0
  26. package/dist-lib/components/primitives/Dropdown.d.ts +10 -1
  27. package/dist-lib/components/shared/ActionButton.d.ts +1 -7
  28. package/dist-lib/components/shared/ActionDialog.d.ts +2 -2
  29. package/dist-lib/components/shared/ResponsiveActionBar.d.ts +45 -23
  30. package/dist-lib/declarion-react.css +1 -1
  31. package/dist-lib/hooks/useParams.d.ts +45 -1
  32. package/dist-lib/index.d.ts +0 -2
  33. package/dist-lib/index.js +3561 -2570
  34. package/dist-lib/lib/actions.d.ts +44 -3
  35. package/dist-lib/lib/evidence-verdict.d.ts +11 -0
  36. package/dist-lib/lib/rowClickGesture.d.ts +14 -0
  37. package/dist-lib/registry-DFtAh6zc.js +4991 -0
  38. package/dist-lib/stores/list-layout.d.ts +86 -0
  39. package/dist-lib/testing.js +27 -27
  40. package/dist-lib/types/api.d.ts +29 -1
  41. package/dist-lib/types/schema.d.ts +12 -0
  42. package/dist-lib/{useCurrentScreen-DD3KdlMj.js → useCurrentScreen-mw8TfE8q.js} +596 -382
  43. package/dist-lib/{useProperties-CliP5qvg.js → useProperties-gMdnhdhO.js} +117 -117
  44. package/dist-lib/{value-CNy3_xCA.js → value-t9ETvWIJ.js} +4 -4
  45. package/package.json +1 -1
  46. package/dist-lib/SmartDetailPage.impl-Cl306lX3.js +0 -1768
  47. package/dist-lib/SmartRecordListPage.impl-j8bhyL4e.js +0 -763
  48. package/dist-lib/components/list/RowMenu.d.ts +0 -23
  49. package/dist-lib/components/shared/ActionConfirmDialog.d.ts +0 -10
  50. package/dist-lib/registry-C3hbFTDQ.js +0 -5400
@@ -161,54 +161,65 @@ function A({ children: e }) {
161
161
  }
162
162
  //#endregion
163
163
  //#region src/components/primitives/Dropdown.tsx
164
- function j({ open: e, onClose: t, anchor: n, children: r, align: i = "start", width: a, style: o }) {
165
- let s = f(null), [c, d] = p(null);
164
+ function j({ open: e, onClose: t, anchor: n, anchorPoint: r, children: i, align: a = "start", width: o, style: s }) {
165
+ let c = f(null), [d, m] = p(null), h = r?.x, g = r?.y;
166
166
  if (u(() => {
167
- if (!e || !n) return;
168
- let t = n.getBoundingClientRect(), r = M(), o = s.current?.offsetHeight || 260, c = r - t.bottom < o + 12 && t.top > o + 12 ? "above" : "below", l = c === "below" ? t.bottom + 4 : t.top - 4 - o, u = typeof window < "u" ? window.innerWidth : 0, f = i === "end" ? t.right - (a || 200) : t.left;
169
- u && (f = Math.max(8, Math.min(f, u - (a || 200) - 8))), d((e) => e && e.top === l && e.left === f && e.placement === c ? e : {
167
+ if (!e || !n && h === void 0) return;
168
+ let t = n ? n.getBoundingClientRect() : {
169
+ top: g,
170
+ bottom: g,
171
+ left: h,
172
+ right: h
173
+ }, r = M(), i = c.current?.offsetHeight || 260, s = r - t.bottom < i + 12 && t.top > i + 12 ? "above" : "below", l = s === "below" ? t.bottom + 4 : t.top - 4 - i, u = typeof window < "u" ? window.innerWidth : 0, d = a === "end" ? t.right - (o || 200) : t.left;
174
+ u && (d = Math.max(8, Math.min(d, u - (o || 200) - 8))), m((e) => e && e.top === l && e.left === d && e.placement === s ? e : {
170
175
  top: l,
171
- left: f,
172
- placement: c
176
+ left: d,
177
+ placement: s
173
178
  });
174
179
  }, [
175
180
  e,
176
181
  n,
177
- i,
178
- a
182
+ h,
183
+ g,
184
+ a,
185
+ o
179
186
  ]), l(() => {
180
187
  if (!e) return;
181
188
  let r = (e) => {
182
189
  let r = e.target;
183
- s.current && r && !s.current.contains(r) && n && !n.contains(r) && t?.();
190
+ c.current && r && !c.current.contains(r) && (!n || !n.contains(r)) && t?.();
191
+ }, i = (e) => {
192
+ e.key === "Escape" && t?.();
193
+ };
194
+ return document.addEventListener("mousedown", r), document.addEventListener("keydown", i), () => {
195
+ document.removeEventListener("mousedown", r), document.removeEventListener("keydown", i);
184
196
  };
185
- return document.addEventListener("mousedown", r), () => document.removeEventListener("mousedown", r);
186
197
  }, [
187
198
  e,
188
199
  n,
189
200
  t
190
- ]), !e || !c) return null;
191
- let m = c.placement === "below" ? `calc(var(--app-height) - ${c.top}px - 8px)` : `${Math.max(120, c.top - 8)}px`, h = ee(o?.maxHeight), g = h ? `min(${m}, ${h})` : m;
201
+ ]), !e || !d) return null;
202
+ let _ = d.placement === "below" ? `calc(var(--app-height) - ${d.top}px - 8px)` : `${Math.max(120, d.top - 8)}px`, v = N(s?.maxHeight), y = v ? `min(${_}, ${v})` : _;
192
203
  return S(/* @__PURE__ */ b("div", {
193
- ref: s,
204
+ ref: c,
194
205
  style: {
195
206
  position: "fixed",
196
- top: c.top,
197
- left: c.left,
207
+ top: d.top,
208
+ left: d.left,
198
209
  zIndex: 200,
199
- minWidth: a || 200,
200
- maxWidth: `calc(100vw - ${c.left}px - 8px)`,
210
+ minWidth: o || 200,
211
+ maxWidth: `calc(100vw - ${d.left}px - 8px)`,
201
212
  background: "var(--surface)",
202
213
  border: "1px solid var(--border)",
203
214
  borderRadius: 8,
204
215
  boxShadow: "var(--shadow-lg)",
205
216
  padding: 4,
206
- ...o,
207
- maxHeight: g,
208
- overflowY: o?.overflowY ?? "auto",
217
+ ...s,
218
+ maxHeight: y,
219
+ overflowY: s?.overflowY ?? "auto",
209
220
  overscrollBehavior: "contain"
210
221
  },
211
- children: r
222
+ children: i
212
223
  }), document.body);
213
224
  }
214
225
  function M() {
@@ -221,19 +232,19 @@ function M() {
221
232
  let t = window.visualViewport?.height;
222
233
  return Number.isFinite(t) && t && t > 0 ? t : window.innerHeight;
223
234
  }
224
- function ee(e) {
235
+ function N(e) {
225
236
  if (e != null) return typeof e == "number" ? `${e}px` : String(e);
226
237
  }
227
238
  //#endregion
228
239
  //#region src/components/primitives/HoverCard.tsx
229
- var te = 400, ne = 150, re = 320, ie = 240, ae = 4, oe = 4;
230
- function se({ content: e, children: t, width: n = re, align: r = "center", style: i }) {
240
+ var ee = 400, te = 150, ne = 320, re = 240, ie = 4, ae = 4;
241
+ function oe({ content: e, children: t, width: n = ne, align: r = "center", style: i }) {
231
242
  let a = f(null), o = f(null), c = f(null), u = f(null), [d, m] = p(!1), [h, g] = p(null), [_, v] = p(!1), C = s(() => {
232
243
  let e = a.current;
233
244
  if (!e) return;
234
- let t = e.getBoundingClientRect(), i = typeof window < "u" ? window.visualViewport : void 0, s = i?.width ?? (typeof window < "u" ? window.innerWidth : 0), c = i?.height ?? (typeof window < "u" ? window.innerHeight : 0), l = i?.offsetLeft ?? 0, u = i?.offsetTop ?? 0, d = Math.min(n, Math.max(160, s - ae * 2)), f = o.current?.offsetHeight ?? ie, p = u + c - t.bottom < f + oe * 2 && t.top > f + oe * 2 ? "above" : "below", m = p === "below" ? t.bottom + oe : t.top - oe - f, h;
245
+ let t = e.getBoundingClientRect(), i = typeof window < "u" ? window.visualViewport : void 0, s = i?.width ?? (typeof window < "u" ? window.innerWidth : 0), c = i?.height ?? (typeof window < "u" ? window.innerHeight : 0), l = i?.offsetLeft ?? 0, u = i?.offsetTop ?? 0, d = Math.min(n, Math.max(160, s - ie * 2)), f = o.current?.offsetHeight ?? re, p = u + c - t.bottom < f + ae * 2 && t.top > f + ae * 2 ? "above" : "below", m = p === "below" ? t.bottom + ae : t.top - ae - f, h;
235
246
  h = r === "start" ? t.left : r === "end" ? t.right - d : t.left + t.width / 2 - d / 2;
236
- let _ = l + ae, v = l + s - ae;
247
+ let _ = l + ie, v = l + s - ie;
237
248
  h + d > v && (h = Math.max(_, t.right - d)), h < _ && (h = _), g((e) => e && e.top === m && e.left === h && e.width === d && e.placement === p ? e : {
238
249
  top: m,
239
250
  left: h,
@@ -252,7 +263,7 @@ function se({ content: e, children: t, width: n = re, align: r = "center", style
252
263
  }, []), D = () => {
253
264
  u.current !== null && (window.clearTimeout(u.current), u.current = null), !(d || c.current !== null) && (c.current = window.setTimeout(() => {
254
265
  c.current = null, m(!0);
255
- }, te));
266
+ }, ee));
256
267
  }, O = s(() => {
257
268
  E(), m(!0);
258
269
  }, [E]), k = s(() => {
@@ -260,7 +271,7 @@ function se({ content: e, children: t, width: n = re, align: r = "center", style
260
271
  }, [E]), A = () => {
261
272
  c.current !== null && (window.clearTimeout(c.current), c.current = null), u.current === null && (u.current = window.setTimeout(() => {
262
273
  u.current = null, m(!1);
263
- }, ne));
274
+ }, te));
264
275
  };
265
276
  l(() => () => {
266
277
  E(), w.current &&= (w.current.disconnect(), null);
@@ -292,7 +303,7 @@ function se({ content: e, children: t, width: n = re, align: r = "center", style
292
303
  top: h.top,
293
304
  left: h.left,
294
305
  width: h.width,
295
- maxHeight: ie,
306
+ maxHeight: re,
296
307
  overflowY: "auto",
297
308
  zIndex: 250,
298
309
  background: "var(--surface)",
@@ -338,7 +349,7 @@ function se({ content: e, children: t, width: n = re, align: r = "center", style
338
349
  }
339
350
  //#endregion
340
351
  //#region src/components/primitives/Chip.tsx
341
- function N({ icon: e, children: n, onRemove: r, onClick: i }) {
352
+ function se({ icon: e, children: n, onRemove: r, onClick: i }) {
342
353
  return /* @__PURE__ */ x("span", {
343
354
  onClick: i,
344
355
  style: {
@@ -911,7 +922,7 @@ function Pe({ value: e = [], onChange: t }) {
911
922
  padding: "4px 6px",
912
923
  alignItems: "center"
913
924
  },
914
- children: [e.map((n, r) => /* @__PURE__ */ b(N, {
925
+ children: [e.map((n, r) => /* @__PURE__ */ b(se, {
915
926
  tone: "slate",
916
927
  onRemove: () => t(e.filter((e, t) => t !== r)),
917
928
  children: n
@@ -2764,7 +2775,7 @@ var Z = {
2764
2775
  update: Gr,
2765
2776
  dismiss: (e) => v.dismiss(e),
2766
2777
  dismissAll: () => v.dismiss()
2767
- }, Kr = o(() => import("./MarkdownRenderer-CSuODN70.js").then((e) => ({ default: e.MarkdownRenderer })));
2778
+ }, Kr = o(() => import("./MarkdownRenderer-B-2CrtjU.js").then((e) => ({ default: e.MarkdownRenderer })));
2768
2779
  function qr() {
2769
2780
  return /* @__PURE__ */ b("div", { className: "h-4 w-2/3 rounded bg-muted animate-pulse" });
2770
2781
  }
@@ -3396,7 +3407,7 @@ function Ni({ ref: e, value: t, onChange: n, refs: r, displayFieldOverride: i, i
3396
3407
  v,
3397
3408
  g,
3398
3409
  A
3399
- ]), ee = d(() => {
3410
+ ]), N = d(() => {
3400
3411
  let e = (u ?? []).map((e) => ({
3401
3412
  value: e.code,
3402
3413
  label: L(e.label) || e.code
@@ -3445,7 +3456,7 @@ function Ni({ ref: e, value: t, onChange: n, refs: r, displayFieldOverride: i, i
3445
3456
  "aria-labelledby": o,
3446
3457
  "aria-required": c || void 0,
3447
3458
  value: E,
3448
- options: ee,
3459
+ options: N,
3449
3460
  onChange: (e) => n(e || null),
3450
3461
  onSearchChange: x,
3451
3462
  placeholder: l
@@ -3903,7 +3914,7 @@ function Zi({ field: e, fieldName: n, value: r, mode: i, onChange: a, fieldId: o
3903
3914
  flexWrap: "wrap",
3904
3915
  gap: 4
3905
3916
  },
3906
- children: s.map((e, t) => /* @__PURE__ */ b(N, {
3917
+ children: s.map((e, t) => /* @__PURE__ */ b(se, {
3907
3918
  tone: "slate",
3908
3919
  children: e
3909
3920
  }, t))
@@ -3926,7 +3937,7 @@ function Zi({ field: e, fieldName: n, value: r, mode: i, onChange: a, fieldId: o
3926
3937
  flexWrap: "wrap",
3927
3938
  gap: 4
3928
3939
  },
3929
- children: s.map((e, t) => /* @__PURE__ */ b(N, {
3940
+ children: s.map((e, t) => /* @__PURE__ */ b(se, {
3930
3941
  tone: "slate",
3931
3942
  onRemove: () => d(t),
3932
3943
  children: e
@@ -3976,7 +3987,7 @@ function $i({ field: e, fieldName: n, value: r, mode: i, onChange: a, fieldId: o
3976
3987
  flexWrap: "wrap",
3977
3988
  gap: 4
3978
3989
  },
3979
- children: s.map((e, t) => /* @__PURE__ */ b(N, {
3990
+ children: s.map((e, t) => /* @__PURE__ */ b(se, {
3980
3991
  tone: "slate",
3981
3992
  children: e
3982
3993
  }, t))
@@ -4001,7 +4012,7 @@ function $i({ field: e, fieldName: n, value: r, mode: i, onChange: a, fieldId: o
4001
4012
  flexWrap: "wrap",
4002
4013
  gap: 4
4003
4014
  },
4004
- children: s.map((e, t) => /* @__PURE__ */ b(N, {
4015
+ children: s.map((e, t) => /* @__PURE__ */ b(se, {
4005
4016
  tone: "slate",
4006
4017
  onRemove: () => d(t),
4007
4018
  children: e
@@ -4294,14 +4305,14 @@ function Da(e) {
4294
4305
  markdown: e,
4295
4306
  files: t
4296
4307
  });
4297
- }, ee = (e, t, n) => {
4308
+ }, N = (e, t, n) => {
4298
4309
  let r = m.current, i = r?.selectionStart ?? e.markdown.length, a = r?.selectionEnd ?? e.markdown.length, o = `${e.markdown.slice(0, i)}${t}${e.markdown.slice(a)}`, s = n ? ra(e, n).files : e.files;
4299
4310
  M(o, s), requestAnimationFrame(() => {
4300
4311
  if (!r) return;
4301
4312
  let e = i + t.length;
4302
4313
  r.focus(), r.setSelectionRange(e, e);
4303
4314
  });
4304
- }, te = async (e) => {
4315
+ }, ee = async (e) => {
4305
4316
  if (!r || !n.files) return;
4306
4317
  let t = Array.from(e);
4307
4318
  if (t.length === 0) return;
@@ -4326,7 +4337,7 @@ function Da(e) {
4326
4337
  let s = ka(n, o);
4327
4338
  if (w(n.id, () => ya(n.id)), _.current.add(n.id), t.length === 1) {
4328
4339
  let e = Oa(a.markdown, ca(s));
4329
- ee(a, e, s), a = ra({
4340
+ N(a, e, s), a = ra({
4330
4341
  markdown: `${a.markdown}${e}`,
4331
4342
  files: a.files
4332
4343
  }, s);
@@ -4405,7 +4416,7 @@ function Da(e) {
4405
4416
  accept: A?.join(","),
4406
4417
  multiple: !0,
4407
4418
  onChange: (e) => {
4408
- e.target.files && te(e.target.files), e.target.value = "";
4419
+ e.target.files && ee(e.target.files), e.target.value = "";
4409
4420
  }
4410
4421
  }),
4411
4422
  /* @__PURE__ */ b("textarea", {
@@ -4417,11 +4428,11 @@ function Da(e) {
4417
4428
  onChange: (e) => M(e.target.value),
4418
4429
  onPaste: (e) => {
4419
4430
  let t = Array.from(e.clipboardData.files ?? []).filter((e) => e.size > 0);
4420
- t.length !== 0 && (e.preventDefault(), te(t));
4431
+ t.length !== 0 && (e.preventDefault(), ee(t));
4421
4432
  },
4422
4433
  onDrop: (e) => {
4423
4434
  let t = Array.from(e.dataTransfer.files ?? []).filter((e) => e.size > 0);
4424
- t.length !== 0 && (e.preventDefault(), te(t));
4435
+ t.length !== 0 && (e.preventDefault(), ee(t));
4425
4436
  },
4426
4437
  onDragOver: (e) => e.preventDefault(),
4427
4438
  rows: 12,
@@ -4642,7 +4653,7 @@ var Ha = (e) => {
4642
4653
  tone: i.tone,
4643
4654
  size: "xs",
4644
4655
  children: i.label
4645
- }, `${n}-${t}`) : /* @__PURE__ */ b(N, { children: i?.label ?? n }, `${n}-${t}`);
4656
+ }, `${n}-${t}`) : /* @__PURE__ */ b(se, { children: i?.label ?? n }, `${n}-${t}`);
4646
4657
  })
4647
4658
  });
4648
4659
  }, Ua = () => (e) => {
@@ -5232,7 +5243,7 @@ var Zo = (e) => {
5232
5243
  return i ? /* @__PURE__ */ b("span", {
5233
5244
  title: r,
5234
5245
  children: r
5235
- }) : /* @__PURE__ */ b(se, {
5246
+ }) : /* @__PURE__ */ b(oe, {
5236
5247
  content: Xo(n),
5237
5248
  children: /* @__PURE__ */ b("span", {
5238
5249
  title: r,
@@ -5273,7 +5284,7 @@ var rs = (e) => {
5273
5284
  return s ? /* @__PURE__ */ b("span", {
5274
5285
  title: o,
5275
5286
  children: o
5276
- }) : /* @__PURE__ */ b(se, {
5287
+ }) : /* @__PURE__ */ b(oe, {
5277
5288
  content: ns(a.markdown, a.files),
5278
5289
  children: /* @__PURE__ */ b("span", {
5279
5290
  title: o,
@@ -5415,85 +5426,365 @@ function ms() {
5415
5426
  return r && r.trim() ? r : ps() || fs;
5416
5427
  }
5417
5428
  //#endregion
5429
+ //#region src/lib/actions.ts
5430
+ var hs = {
5431
+ __create: "create",
5432
+ __edit: "update",
5433
+ __delete: "delete",
5434
+ __restore: "restore"
5435
+ }, gs = "__peek", _s = "__open";
5436
+ function vs(e) {
5437
+ return e === "__peek" || e === "__open";
5438
+ }
5439
+ function ys(e, t) {
5440
+ if (!e) return "";
5441
+ if (t) try {
5442
+ return $e(t, Xe(t, e));
5443
+ } catch {}
5444
+ let n = e.id;
5445
+ return typeof n == "string" ? n : n == null ? "" : I(n);
5446
+ }
5447
+ function bs(e, t) {
5448
+ if (!e || e.length === 0) return !0;
5449
+ for (let n of e) {
5450
+ if (n.status && n.status.length > 0) {
5451
+ let e = t.status;
5452
+ if (typeof e != "string" || !n.status.includes(e)) return !1;
5453
+ }
5454
+ if (n.field && !xs(n, t)) return !1;
5455
+ }
5456
+ return !0;
5457
+ }
5458
+ function xs(e, t) {
5459
+ let n = Ss(t, e.field), r = e.op || "eq";
5460
+ if (r === "in" || r === "not_in") {
5461
+ let t = Array.isArray(e.value) ? e.value : [e.value], i = I(n), a = t.some((e) => I(e) === i);
5462
+ return r === "in" ? a : !a;
5463
+ }
5464
+ return typeof e.value == "boolean" && r === "eq" ? ws(n) === e.value : typeof n == "number" && typeof e.value == "number" ? Ts(n, e.value, r) : Ts(I(n), I(e.value), r);
5465
+ }
5466
+ function Ss(e, t) {
5467
+ if (Object.prototype.hasOwnProperty.call(e, t)) return e[t];
5468
+ if (t.startsWith("$status.")) {
5469
+ let n = t.slice(8), r = e.$statuses;
5470
+ return Array.isArray(r) ? r.find((e) => !e || typeof e != "object" ? !1 : e.group_code === n)?.status_code : void 0;
5471
+ }
5472
+ if (t.startsWith("$property.")) {
5473
+ let n = t.slice(10), r = e.$properties;
5474
+ return Array.isArray(r) ? r.find((e) => !e || typeof e != "object" ? !1 : e.property_code === n)?.value : void 0;
5475
+ }
5476
+ }
5477
+ function Cs(e) {
5478
+ let t = null, n = (n, r) => {
5479
+ Object.prototype.hasOwnProperty.call(e, n) || (t === null && (t = { ...e }), t[n] = r);
5480
+ }, r = e.$statuses;
5481
+ if (Array.isArray(r)) for (let t of r) {
5482
+ if (!t || typeof t != "object") continue;
5483
+ let r = t.group_code;
5484
+ typeof r == "string" && n(`$status.${r}`, Ss(e, `$status.${r}`));
5485
+ }
5486
+ let i = e.$properties;
5487
+ if (Array.isArray(i)) for (let t of i) {
5488
+ if (!t || typeof t != "object") continue;
5489
+ let r = t.property_code;
5490
+ typeof r == "string" && n(`$property.${r}`, Ss(e, `$property.${r}`));
5491
+ }
5492
+ return t ?? e;
5493
+ }
5494
+ function ws(e) {
5495
+ return e == null ? !1 : typeof e == "boolean" ? e : typeof e == "string" ? e !== "" : typeof e != "number" || e !== 0;
5496
+ }
5497
+ function Ts(e, t, n) {
5498
+ switch (n) {
5499
+ case "eq": return e === t;
5500
+ case "ne": return e !== t;
5501
+ case "gt": return e > t;
5502
+ case "gte":
5503
+ case "ge": return e >= t;
5504
+ case "lt": return e < t;
5505
+ case "lte":
5506
+ case "le": return e <= t;
5507
+ default: return !1;
5508
+ }
5509
+ }
5510
+ function Es(e, t) {
5511
+ return e ? Object.entries(e).filter(([, e]) => e.visibility?.includes(t)).map(([e, t]) => ({
5512
+ code: e,
5513
+ action: t
5514
+ })) : [];
5515
+ }
5516
+ function Ds(e, t, n, r) {
5517
+ return !e && !r ? [] : t === void 0 ? Es(e, n) : t.map((t) => {
5518
+ let n = e?.[t] ?? r?.[t];
5519
+ return n ? {
5520
+ code: t,
5521
+ action: n
5522
+ } : null;
5523
+ }).filter((e) => e !== null);
5524
+ }
5525
+ function Os(e, t) {
5526
+ return e.filter(({ code: e }) => {
5527
+ let n = hs[e];
5528
+ return !n || Ye(t, n);
5529
+ });
5530
+ }
5531
+ var ks = {
5532
+ en: "This action cannot be undone.",
5533
+ ru: "Это действие нельзя отменить."
5534
+ };
5535
+ function As(e) {
5536
+ return !!e?.confirmation && Object.keys(e.confirmation).length > 0;
5537
+ }
5538
+ function js(e, t) {
5539
+ return As(e) ? L(e.confirmation, t) : e?.destructive ? L(ks, t) : null;
5540
+ }
5541
+ function Ms(e) {
5542
+ return As(e) || !!e?.destructive;
5543
+ }
5544
+ function Ns(e, t, n, r) {
5545
+ if (n && r) return r;
5546
+ let i = L(e?.display?.description);
5547
+ return i ? e?.display?.icon_only === !0 ? `${t} - ${i}` : i : t;
5548
+ }
5549
+ function Ps(e) {
5550
+ return !!e.association;
5551
+ }
5552
+ function Fs(e, t) {
5553
+ if (e) {
5554
+ for (let n of Object.values(e.screens)) if (n.entity === t && n.type === "list") {
5555
+ let r = e.entities[t];
5556
+ return {
5557
+ route: n.route,
5558
+ icon: n.display?.icon || r?.display?.icon || ""
5559
+ };
5560
+ }
5561
+ }
5562
+ }
5563
+ function Is(e, t, n, r, i) {
5564
+ let a = [];
5565
+ for (let o of e) {
5566
+ let e = Ls(o, t, n, r, i);
5567
+ e !== null && a.push(e);
5568
+ }
5569
+ return a;
5570
+ }
5571
+ function Ls(e, t, n, r, i) {
5572
+ return e.kind === "group" ? Rs(e, t, n, r, i) : zs(e, t, n, r, i);
5573
+ }
5574
+ function Rs(e, t, n, r, i) {
5575
+ let a = [];
5576
+ for (let o of e.items) {
5577
+ let e = Ls(o, t, n, r, i);
5578
+ e !== null && a.push(e);
5579
+ }
5580
+ return a.length === 0 ? null : {
5581
+ ...e,
5582
+ items: a
5583
+ };
5584
+ }
5585
+ function zs(e, t, n, r, i) {
5586
+ let a = Hs(e.code, t, n);
5587
+ if (!a) return null;
5588
+ if (i.length > 0) {
5589
+ let t = Bs(a, i);
5590
+ return t.visible ? {
5591
+ ...e,
5592
+ enabled: t.enabled,
5593
+ reason: t.reason
5594
+ } : null;
5595
+ }
5596
+ if (!bs(a.conditions, r) || !bs(Us(a.visible_if), r)) return null;
5597
+ let { enabled: o, reason: s } = Vs(a, r);
5598
+ return {
5599
+ ...e,
5600
+ enabled: o,
5601
+ reason: s
5602
+ };
5603
+ }
5604
+ function Bs(e, t) {
5605
+ let n = Us(e.visible_if), r = Us(e.enabled_if), i = e.conditions, a = Ws(e.enabled_if_reason), o = 0, s = 0;
5606
+ for (let e of t) {
5607
+ let t = bs(n, e) && bs(i, e);
5608
+ t && o++;
5609
+ let a = bs(r, e);
5610
+ (!t || !a) && s++;
5611
+ }
5612
+ if (o === 0) return {
5613
+ visible: !1,
5614
+ enabled: !1,
5615
+ reason: null
5616
+ };
5617
+ if (s === 0) return {
5618
+ visible: !0,
5619
+ enabled: !0,
5620
+ reason: null
5621
+ };
5622
+ let c = `(${s} of ${t.length} rows fail)`;
5623
+ return {
5624
+ visible: !0,
5625
+ enabled: !1,
5626
+ reason: a ? `${a} ${c}` : c
5627
+ };
5628
+ }
5629
+ function Vs(e, t) {
5630
+ let n = Us(e.enabled_if);
5631
+ if (!n || n.length === 0) return {
5632
+ enabled: !0,
5633
+ reason: null
5634
+ };
5635
+ let r = Ws(e.enabled_if_reason);
5636
+ return bs(n, t) ? {
5637
+ enabled: !0,
5638
+ reason: null
5639
+ } : {
5640
+ enabled: !1,
5641
+ reason: r
5642
+ };
5643
+ }
5644
+ function Hs(e, t, n) {
5645
+ if (t && e in t) return t[e];
5646
+ if (n && e in n) return n[e];
5647
+ }
5648
+ function Us(e) {
5649
+ return e;
5650
+ }
5651
+ function Ws(e) {
5652
+ if (!e) return null;
5653
+ if (e.en) return e.en;
5654
+ let t = Object.values(e);
5655
+ return t.length > 0 ? t[0] : null;
5656
+ }
5657
+ function Gs(e, t, n, r, i) {
5658
+ let a = [];
5659
+ for (let o of e) {
5660
+ if (o.kind === "group") {
5661
+ let e = Gs(o.items, t, n, r, i);
5662
+ e.length > 0 && a.push({
5663
+ ...o,
5664
+ items: e
5665
+ });
5666
+ continue;
5667
+ }
5668
+ let e = Hs(o.code, t, n);
5669
+ e && e.visibility?.includes(r) && (i?.bulkRequired !== void 0 && (i.bulkRequiredPredicate ? i.bulkRequiredPredicate(e) : !1) !== i.bulkRequired || i?.excludeIf && i.excludeIf(e) || a.push(o));
5670
+ }
5671
+ return a;
5672
+ }
5673
+ function Ks(e, t, n, r, i, a) {
5674
+ let o = e ?? t;
5675
+ return o ? Gs(o, n, r, i, a) : Xs(n, i);
5676
+ }
5677
+ function qs(e) {
5678
+ return e.requires_selection === void 0 ? Js(e) : e.requires_selection;
5679
+ }
5680
+ function Js(e) {
5681
+ return e.visibility?.includes("list_floatbar") ?? !1;
5682
+ }
5683
+ function Ys(e, t, n, r, i) {
5684
+ return e.map((e) => {
5685
+ if (e.kind === "group") return {
5686
+ ...e,
5687
+ items: Ys(e.items, t, n, r, i)
5688
+ };
5689
+ let a = Hs(e.code, t, n);
5690
+ return a && r(a) ? {
5691
+ ...e,
5692
+ enabled: !1,
5693
+ reason: i
5694
+ } : e;
5695
+ });
5696
+ }
5697
+ function Xs(e, t) {
5698
+ return e ? Object.entries(e).filter(([, e]) => e.visibility?.includes(t)).sort(([e, t], [n, r]) => {
5699
+ let i = t.position ?? 0, a = r.position ?? 0;
5700
+ return i === a ? e < n ? -1 : +(e > n) : i - a;
5701
+ }).map(([e]) => ({
5702
+ kind: "action",
5703
+ code: e,
5704
+ enabled: !0,
5705
+ reason: null
5706
+ })) : [];
5707
+ }
5708
+ //#endregion
5418
5709
  //#region src/lib/field-regions.ts
5419
- var hs = /* @__PURE__ */ new Map();
5420
- function gs(e, t) {
5421
- return hs.set(e, t), () => {
5422
- hs.get(e) === t && hs.delete(e);
5710
+ var Zs = /* @__PURE__ */ new Map();
5711
+ function Qs(e, t) {
5712
+ return Zs.set(e, t), () => {
5713
+ Zs.get(e) === t && Zs.delete(e);
5423
5714
  };
5424
5715
  }
5425
- function _s(e) {
5426
- return hs.get(e);
5716
+ function $s(e) {
5717
+ return Zs.get(e);
5427
5718
  }
5428
5719
  //#endregion
5429
5720
  //#region src/lib/ui-actions.ts
5430
- var vs = /\$\{\s*([^}]+?)\s*\}/g, ys = /^\s*\$\{\s*([^}]+?)\s*\}\s*$/, bs = Symbol("unresolved");
5431
- function xs(e, t) {
5432
- let n = e.match(ys);
5721
+ var ec = /\$\{\s*([^}]+?)\s*\}/g, tc = /^\s*\$\{\s*([^}]+?)\s*\}\s*$/, nc = Symbol("unresolved");
5722
+ function rc(e, t) {
5723
+ let n = e.match(tc);
5433
5724
  if (n) {
5434
- let r = Ss(n[1], t);
5435
- return r === bs ? e : r;
5725
+ let r = ic(n[1], t);
5726
+ return r === nc ? e : r;
5436
5727
  }
5437
- return e.replace(vs, (e, n) => {
5438
- let r = Ss(n, t);
5439
- return r === bs ? e : I(r);
5728
+ return e.replace(ec, (e, n) => {
5729
+ let r = ic(n, t);
5730
+ return r === nc ? e : I(r);
5440
5731
  });
5441
5732
  }
5442
- function Ss(e, t) {
5733
+ function ic(e, t) {
5443
5734
  if (e === "now") return di();
5444
5735
  let [n, ...r] = e.split(".");
5445
- if (n === "row") return !t.row || r.length === 0 ? bs : Cs(t.row, r);
5736
+ if (n === "row") return !t.row || r.length === 0 ? nc : ac(t.row, r);
5446
5737
  if (n === "field" && r.length >= 2) {
5447
- let [e, t] = r, n = _s(e);
5448
- return n ? n.getField(t) : bs;
5738
+ let [e, t] = r, n = $s(e);
5739
+ return n ? n.getField(t) : nc;
5449
5740
  }
5450
- return n === "params" ? !t.params || r.length === 0 ? bs : Cs(t.params, r) : bs;
5741
+ return n === "params" ? !t.params || r.length === 0 ? nc : ac(t.params, r) : nc;
5451
5742
  }
5452
- function Cs(e, t) {
5743
+ function ac(e, t) {
5453
5744
  return t.reduce((e, t) => {
5454
5745
  if (e && typeof e == "object") return e[t];
5455
5746
  }, e);
5456
5747
  }
5457
- async function ws(e, t) {
5748
+ async function oc(e, t) {
5458
5749
  for (let n of e) try {
5459
- await Ts(n, t);
5750
+ await sc(n, t);
5460
5751
  } catch (e) {
5461
5752
  let t = e instanceof Error ? e.message : String(e);
5462
5753
  Z.error(`ui_step failed: ${t}`);
5463
5754
  return;
5464
5755
  }
5465
5756
  }
5466
- async function Ts(e, t) {
5757
+ async function sc(e, t) {
5467
5758
  if (e.copy_to_clipboard != null) {
5468
- let n = Ds(e.copy_to_clipboard, t);
5759
+ let n = lc(e.copy_to_clipboard, t);
5469
5760
  await navigator.clipboard.writeText(n);
5470
5761
  return;
5471
5762
  }
5472
5763
  if (e.set_field) {
5473
- let { target: n, value: r } = e.set_field, { region: i, field: a } = Os(n), o = _s(i);
5764
+ let { target: n, value: r } = e.set_field, { region: i, field: a } = uc(n), o = $s(i);
5474
5765
  if (!o) throw Error(`region "${i}" not registered`);
5475
- o.setField(a, Es(r, t));
5766
+ o.setField(a, cc(r, t));
5476
5767
  return;
5477
5768
  }
5478
5769
  if (e.focus_field) {
5479
- let { region: t, field: n } = Os(e.focus_field), r = _s(t);
5770
+ let { region: t, field: n } = uc(e.focus_field), r = $s(t);
5480
5771
  if (!r) throw Error(`region "${t}" not registered`);
5481
5772
  r.focusField(n);
5482
5773
  return;
5483
5774
  }
5484
5775
  if (e.show_toast) {
5485
- let n = Ds(e.show_toast.message, t), r = e.show_toast.kind ?? "info";
5776
+ let n = lc(e.show_toast.message, t), r = e.show_toast.kind ?? "info";
5486
5777
  r === "success" ? Z.success(n) : r === "error" ? Z.error(n) : Z.info(n);
5487
5778
  return;
5488
5779
  }
5489
5780
  }
5490
- function Es(e, t) {
5491
- return typeof e == "string" ? xs(e, t) : e;
5781
+ function cc(e, t) {
5782
+ return typeof e == "string" ? rc(e, t) : e;
5492
5783
  }
5493
- function Ds(e, t) {
5494
- return I(xs(e, t));
5784
+ function lc(e, t) {
5785
+ return I(rc(e, t));
5495
5786
  }
5496
- function Os(e) {
5787
+ function uc(e) {
5497
5788
  let t = e.indexOf(".");
5498
5789
  if (t <= 0) throw Error(`invalid path "${e}" (expected "region.field")`);
5499
5790
  return {
@@ -5501,12 +5792,12 @@ function Os(e) {
5501
5792
  field: e.slice(t + 1)
5502
5793
  };
5503
5794
  }
5504
- function ks(e) {
5795
+ function dc(e) {
5505
5796
  return !e.handler && !!e.ui_steps && e.ui_steps.length > 0;
5506
5797
  }
5507
5798
  //#endregion
5508
5799
  //#region src/lib/mass-edit.ts
5509
- function As(e) {
5800
+ function fc(e) {
5510
5801
  if (!e) return [];
5511
5802
  let t = /* @__PURE__ */ new Set(), n = [];
5512
5803
  for (let r of e.split(",")) {
@@ -5515,17 +5806,17 @@ function As(e) {
5515
5806
  }
5516
5807
  return n;
5517
5808
  }
5518
- function js(e, t) {
5809
+ function pc(e, t) {
5519
5810
  if (!e || !Ye(e, "update")) return [];
5520
- let n = Array.isArray(t) ? t : As(t), r = n.length > 0 ? new Set(n) : null, i = ot(e), a = new Set(z(e)), o = r ? n : Ms(e, i, a), s = [];
5811
+ let n = Array.isArray(t) ? t : fc(t), r = n.length > 0 ? new Set(n) : null, i = ot(e), a = new Set(z(e)), o = r ? n : mc(e, i, a), s = [];
5521
5812
  for (let t of o) {
5522
5813
  if (r && !r.has(t)) continue;
5523
- let n = Ns(e, t, i, a);
5814
+ let n = hc(e, t, i, a);
5524
5815
  n && s.push(n);
5525
5816
  }
5526
5817
  return s;
5527
5818
  }
5528
- function Ms(e, t, n) {
5819
+ function mc(e, t, n) {
5529
5820
  let r = [];
5530
5821
  for (let [t, i] of e.fields) n.has(t) || i.auto || r.push(t);
5531
5822
  if (!t) {
@@ -5534,7 +5825,7 @@ function Ms(e, t, n) {
5534
5825
  }
5535
5826
  return r;
5536
5827
  }
5537
- function Ns(e, t, n, r) {
5828
+ function hc(e, t, n, r) {
5538
5829
  if (t.startsWith("$status.")) {
5539
5830
  if (n) return null;
5540
5831
  let r = t.slice(8), i = e.status_groups?.[r];
@@ -5542,7 +5833,7 @@ function Ns(e, t, n, r) {
5542
5833
  code: t,
5543
5834
  bare: r,
5544
5835
  kind: "status",
5545
- label: Ps(i.name, r),
5836
+ label: gc(i.name, r),
5546
5837
  statusGroup: i
5547
5838
  } : null;
5548
5839
  }
@@ -5553,7 +5844,7 @@ function Ns(e, t, n, r) {
5553
5844
  code: t,
5554
5845
  bare: r,
5555
5846
  kind: "property",
5556
- label: Ps(i.name, r),
5847
+ label: gc(i.name, r),
5557
5848
  property: i
5558
5849
  } : null;
5559
5850
  }
@@ -5563,18 +5854,18 @@ function Ns(e, t, n, r) {
5563
5854
  code: t,
5564
5855
  bare: t,
5565
5856
  kind: "field",
5566
- label: Ps(i.display?.name, t),
5857
+ label: gc(i.display?.name, t),
5567
5858
  field: i
5568
5859
  };
5569
5860
  }
5570
- function Ps(e, t) {
5861
+ function gc(e, t) {
5571
5862
  return e && L(e) || t;
5572
5863
  }
5573
5864
  //#endregion
5574
5865
  //#region src/components/mass-edit/PropertyGridEditor.tsx
5575
- var Fs = Symbol.for("declarion.mass-edit.multiple");
5576
- function Is({ entity: e, filterTargets: t, selectedRows: n, value: r, onChange: i }) {
5577
- let a = d(() => js(e, t), [e, t]), o = d(() => Object.keys(r).map((e) => {
5866
+ var _c = Symbol.for("declarion.mass-edit.multiple");
5867
+ function vc({ entity: e, filterTargets: t, selectedRows: n, value: r, onChange: i }) {
5868
+ let a = d(() => pc(e, t), [e, t]), o = d(() => Object.keys(r).map((e) => {
5578
5869
  let t = a.find((t) => t.code === e);
5579
5870
  return t ? {
5580
5871
  target: t,
@@ -5584,8 +5875,8 @@ function Is({ entity: e, filterTargets: t, selectedRows: n, value: r, onChange:
5584
5875
  let e = new Set(o.map((e) => e.target.code));
5585
5876
  return a.filter((t) => !e.has(t.code));
5586
5877
  }, [o, a]), l = s((e) => {
5587
- let t = Vs(e, n), a = { ...r };
5588
- a[e.code] = t === Fs ? void 0 : t, i(a);
5878
+ let t = Cc(e, n), a = { ...r };
5879
+ a[e.code] = t === _c ? void 0 : t, i(a);
5589
5880
  }, [
5590
5881
  r,
5591
5882
  n,
@@ -5613,12 +5904,12 @@ function Is({ entity: e, filterTargets: t, selectedRows: n, value: r, onChange:
5613
5904
  },
5614
5905
  children: "No targets selected. Add a field, status, or property to edit across all selected rows."
5615
5906
  }),
5616
- o.map((e) => /* @__PURE__ */ b(Ls, {
5907
+ o.map((e) => /* @__PURE__ */ b(yc, {
5617
5908
  row: e,
5618
5909
  onChange: (t) => u(e.target.code, t),
5619
5910
  onRemove: () => f(e.target.code)
5620
5911
  }, e.target.code)),
5621
- /* @__PURE__ */ b(Bs, {
5912
+ /* @__PURE__ */ b(Sc, {
5622
5913
  targets: c,
5623
5914
  onPick: l
5624
5915
  })
@@ -5631,7 +5922,7 @@ function Is({ entity: e, filterTargets: t, selectedRows: n, value: r, onChange:
5631
5922
  children: "Entity schema unavailable. Mass edit requires an entity-bound action."
5632
5923
  });
5633
5924
  }
5634
- function Ls({ row: e, onChange: n, onRemove: r }) {
5925
+ function yc({ row: e, onChange: n, onRemove: r }) {
5635
5926
  let { target: i } = e;
5636
5927
  return /* @__PURE__ */ x("div", {
5637
5928
  "data-testid": "mass-edit-row",
@@ -5650,7 +5941,7 @@ function Ls({ row: e, onChange: n, onRemove: r }) {
5650
5941
  title: i.code,
5651
5942
  children: i.label
5652
5943
  }),
5653
- /* @__PURE__ */ b(Rs, {
5944
+ /* @__PURE__ */ b(bc, {
5654
5945
  row: e,
5655
5946
  onChange: n
5656
5947
  }),
@@ -5662,8 +5953,8 @@ function Ls({ row: e, onChange: n, onRemove: r }) {
5662
5953
  ]
5663
5954
  });
5664
5955
  }
5665
- function Rs({ row: e, onChange: t }) {
5666
- let { target: n } = e, r = ms(), i = e.value === Fs, a = i ? "<multiple values>" : void 0, o = i ? "" : e.value;
5956
+ function bc({ row: e, onChange: t }) {
5957
+ let { target: n } = e, r = ms(), i = e.value === _c, a = i ? "<multiple values>" : void 0, o = i ? "" : e.value;
5667
5958
  if (n.kind === "status" && n.statusGroup) {
5668
5959
  let e = n.statusGroup.statuses.map((e) => ({
5669
5960
  value: e.code,
@@ -5679,7 +5970,7 @@ function Rs({ row: e, onChange: t }) {
5679
5970
  })
5680
5971
  });
5681
5972
  }
5682
- let s = zs(n);
5973
+ let s = xc(n);
5683
5974
  return /* @__PURE__ */ x("div", {
5684
5975
  "data-testid": `value-${n.code}`,
5685
5976
  style: { position: "relative" },
@@ -5702,7 +5993,7 @@ function Rs({ row: e, onChange: t }) {
5702
5993
  })]
5703
5994
  });
5704
5995
  }
5705
- function zs(e) {
5996
+ function xc(e) {
5706
5997
  if (e.kind === "field" && e.field) return e.field;
5707
5998
  if (e.kind === "property" && e.property) {
5708
5999
  let t = e.property;
@@ -5717,7 +6008,7 @@ function zs(e) {
5717
6008
  }
5718
6009
  return { type: "string" };
5719
6010
  }
5720
- function Bs({ targets: e, onPick: n }) {
6011
+ function Sc({ targets: e, onPick: n }) {
5721
6012
  let [r, i] = p(!1);
5722
6013
  return e.length === 0 ? null : r ? /* @__PURE__ */ b("div", {
5723
6014
  "data-testid": "mass-edit-target-picker",
@@ -5744,7 +6035,7 @@ function Bs({ targets: e, onPick: n }) {
5744
6035
  children: [/* @__PURE__ */ b(t.plus, { size: 12 }), " Add target"]
5745
6036
  });
5746
6037
  }
5747
- function Vs(e, t) {
6038
+ function Cc(e, t) {
5748
6039
  if (!t || t.length === 0 || e.kind !== "field") return;
5749
6040
  let n, r = !1;
5750
6041
  for (let i of t) {
@@ -5753,16 +6044,16 @@ function Vs(e, t) {
5753
6044
  n = t, r = !0;
5754
6045
  continue;
5755
6046
  }
5756
- if (n !== t) return Fs;
6047
+ if (n !== t) return _c;
5757
6048
  }
5758
6049
  return n;
5759
6050
  }
5760
6051
  //#endregion
5761
6052
  //#region src/components/shared/ActionDialog.tsx
5762
- var Hs = /^\$row\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/;
5763
- function Us(e, t) {
6053
+ var wc = /^\$row\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/;
6054
+ function Tc(e, t) {
5764
6055
  if (typeof e != "string") return e ?? "";
5765
- let n = e.match(Hs);
6056
+ let n = e.match(wc);
5766
6057
  if (n) {
5767
6058
  let r = n[1].split("."), i = t;
5768
6059
  for (let e of r) {
@@ -5774,9 +6065,9 @@ function Us(e, t) {
5774
6065
  }
5775
6066
  return i === void 0 ? ((t == null || !(r[0] in t)) && typeof console < "u" && console.warn && console.warn(`ActionDialog: prefill template ${e} could not be resolved; row is missing field '${r[0]}'`), "") : i ?? "";
5776
6067
  }
5777
- return xs(e, { row: t });
6068
+ return rc(e, { row: t });
5778
6069
  }
5779
- function Ws(e) {
6070
+ function Ec(e) {
5780
6071
  return {
5781
6072
  type: e.type ?? "string",
5782
6073
  required: e.required,
@@ -5786,21 +6077,22 @@ function Ws(e) {
5786
6077
  } : void 0,
5787
6078
  enum: e.enum,
5788
6079
  values: e.values,
6080
+ structure: e.structure,
5789
6081
  ref: Ke(e.ref)
5790
6082
  };
5791
6083
  }
5792
- function Gs(e, t) {
6084
+ function Dc(e, t) {
5793
6085
  if (!e.includes("${")) return e;
5794
- let n = xs(e, { params: t });
6086
+ let n = rc(e, { params: t });
5795
6087
  return n == null ? "" : I(n);
5796
6088
  }
5797
- var Ks = /\$\{\s*([^}]+?)\s*\}/g;
5798
- function qs(e, t) {
6089
+ var Oc = /\$\{\s*([^}]+?)\s*\}/g;
6090
+ function kc(e, t) {
5799
6091
  let n = `params.${t}`;
5800
- for (let t of e.matchAll(Ks)) if (t[1] === n) return !0;
6092
+ for (let t of e.matchAll(Oc)) if (t[1] === n) return !0;
5801
6093
  return !1;
5802
6094
  }
5803
- function Js({ param: e, value: t, onChange: n, statusGroups: r }) {
6095
+ function Ac({ param: e, value: t, onChange: n, statusGroups: r }) {
5804
6096
  let i = d(() => {
5805
6097
  let t = r ? Object.entries(r) : [];
5806
6098
  return [{
@@ -5818,12 +6110,12 @@ function Js({ param: e, value: t, onChange: n, statusGroups: r }) {
5818
6110
  placeholder: "Select status group…"
5819
6111
  });
5820
6112
  }
5821
- function Ys({ param: e, value: t, onChange: n, statusGroups: r, formData: i }) {
6113
+ function jc({ param: e, value: t, onChange: n, statusGroups: r, formData: i }) {
5822
6114
  let a = d(() => {
5823
6115
  if (!r) return [];
5824
6116
  let t = e.filter?.status_group;
5825
6117
  if (t) {
5826
- let e = Gs(t, i);
6118
+ let e = Dc(t, i);
5827
6119
  return e && r[e] ? r[e].statuses : [];
5828
6120
  }
5829
6121
  return Object.values(r).flatMap((e) => e.statuses);
@@ -5845,21 +6137,27 @@ function Ys({ param: e, value: t, onChange: n, statusGroups: r, formData: i }) {
5845
6137
  placeholder: "Select status…"
5846
6138
  });
5847
6139
  }
5848
- function Xs({ open: e, onOpenChange: n, action: r, actionName: i, onSubmit: a, isPending: o, row: c, bulkSelection: l }) {
5849
- let { data: u } = Y(), f = ms(), m = r.resolved_params, h = r.resolved_hidden_defaults ?? {}, g = d(() => m ? Array.from(m) : [], [m]), _ = d(() => {
5850
- if (!(!r.entity || !u)) return u.entities[r.entity]?.status_groups;
5851
- }, [r.entity, u]), v = d(() => {
5852
- if (!(!r.entity || !u)) return u.entities[r.entity];
5853
- }, [r.entity, u]), S = d(() => {
5854
- if (v) {
5855
- for (let [e, t] of v.fields) if (t.primary) return e;
5856
- return v.primary_key?.[0];
6140
+ function Mc({ open: e, onOpenChange: n, action: r, actionName: i, onSubmit: a, isPending: o, row: c, bulkSelection: u }) {
6141
+ let { data: m } = Y(), h = ms(), g = r.resolved_params, _ = r.resolved_hidden_defaults ?? {}, v = !!r.destructive, S = js(r, h), C = s(() => {
6142
+ o || n(!1);
6143
+ }, [o, n]), w = f(null);
6144
+ l(() => {
6145
+ e && w.current?.focus();
6146
+ }, [e]);
6147
+ let T = d(() => g ? Array.from(g) : [], [g]), E = d(() => {
6148
+ if (!(!r.entity || !m)) return m.entities[r.entity]?.status_groups;
6149
+ }, [r.entity, m]), k = d(() => {
6150
+ if (!(!r.entity || !m)) return m.entities[r.entity];
6151
+ }, [r.entity, m]), A = d(() => {
6152
+ if (k) {
6153
+ for (let [e, t] of k.fields) if (t.primary) return e;
6154
+ return k.primary_key?.[0];
5857
6155
  }
5858
- }, [v]), [C, w] = p(s(() => {
5859
- let e = { ...h };
5860
- for (let [t, n] of g) {
6156
+ }, [k]), [j, M] = p(s(() => {
6157
+ let e = { ..._ };
6158
+ for (let [t, n] of T) {
5861
6159
  if (n.type === "id_array") {
5862
- l && S ? e[t] = l.map((e) => e[S]).filter((e) => e != null) : e[t] = [];
6160
+ u && A ? e[t] = u.map((e) => e[A]).filter((e) => e != null) : e[t] = [];
5863
6161
  continue;
5864
6162
  }
5865
6163
  if (n.type === "entity_patch") {
@@ -5867,47 +6165,47 @@ function Xs({ open: e, onOpenChange: n, action: r, actionName: i, onSubmit: a, i
5867
6165
  continue;
5868
6166
  }
5869
6167
  if (n.type === "bool") {
5870
- let r = Us(n.default, c);
6168
+ let r = Tc(n.default, c);
5871
6169
  e[t] = r === !0 || r === "true";
5872
6170
  continue;
5873
6171
  }
5874
- e[t] = Us(n.default, c);
6172
+ e[t] = Tc(n.default, c);
5875
6173
  }
5876
6174
  return e;
5877
6175
  }, [
5878
- g,
6176
+ T,
5879
6177
  c,
5880
- l,
5881
- S
5882
- ])), T = s((e, t) => {
5883
- w((n) => {
6178
+ u,
6179
+ A
6180
+ ])), N = s((e, t) => {
6181
+ M((n) => {
5884
6182
  let r = {
5885
6183
  ...n,
5886
6184
  [e]: t
5887
6185
  };
5888
- if (!m) return r;
5889
- for (let [t, n] of m) {
6186
+ if (!g) return r;
6187
+ for (let [t, n] of g) {
5890
6188
  if (n.type !== "status") continue;
5891
6189
  let i = n.filter?.status_group;
5892
- i && qs(i, e) && (r[t] = "");
6190
+ i && kc(i, e) && (r[t] = "");
5893
6191
  }
5894
6192
  return r;
5895
6193
  });
5896
- }, [m]), E = s(() => {
5897
- let e = { ...C };
5898
- for (let [t, n] of g) {
5899
- let r = C[t], i = r == null || r === "";
6194
+ }, [g]), ee = s(() => {
6195
+ let e = { ...j };
6196
+ for (let [t, n] of T) {
6197
+ let r = j[t], i = r == null || r === "";
5900
6198
  if (n.required && i) return;
5901
6199
  i && delete e[t];
5902
6200
  }
5903
6201
  a(e);
5904
6202
  }, [
5905
- C,
5906
- g,
6203
+ j,
6204
+ T,
5907
6205
  a
5908
6206
  ]);
5909
6207
  return e ? /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("div", {
5910
- onClick: () => n(!1),
6208
+ onClick: C,
5911
6209
  style: {
5912
6210
  position: "fixed",
5913
6211
  inset: 0,
@@ -5917,9 +6215,15 @@ function Xs({ open: e, onOpenChange: n, action: r, actionName: i, onSubmit: a, i
5917
6215
  }
5918
6216
  }), /* @__PURE__ */ x("div", {
5919
6217
  "data-testid": "action-dialog",
6218
+ ref: w,
5920
6219
  role: "dialog",
5921
6220
  "aria-modal": "true",
6221
+ "aria-busy": o,
5922
6222
  "aria-label": i,
6223
+ tabIndex: -1,
6224
+ onKeyDown: (e) => {
6225
+ e.key === "Escape" && C();
6226
+ },
5923
6227
  style: {
5924
6228
  position: "fixed",
5925
6229
  top: "50%",
@@ -5936,7 +6240,8 @@ function Xs({ open: e, onOpenChange: n, action: r, actionName: i, onSubmit: a, i
5936
6240
  display: "flex",
5937
6241
  flexDirection: "column",
5938
6242
  boxSizing: "border-box",
5939
- minWidth: 0
6243
+ minWidth: 0,
6244
+ outline: "none"
5940
6245
  },
5941
6246
  children: [
5942
6247
  /* @__PURE__ */ x("div", {
@@ -5952,14 +6257,14 @@ function Xs({ open: e, onOpenChange: n, action: r, actionName: i, onSubmit: a, i
5952
6257
  width: 28,
5953
6258
  height: 28,
5954
6259
  borderRadius: 7,
5955
- background: "var(--accent-soft)",
5956
- color: "var(--accent)",
6260
+ background: v ? "var(--danger-soft)" : "var(--accent-soft)",
6261
+ color: v ? "var(--danger)" : "var(--accent)",
5957
6262
  display: "inline-flex",
5958
6263
  alignItems: "center",
5959
6264
  justifyContent: "center",
5960
6265
  flexShrink: 0
5961
6266
  },
5962
- children: /* @__PURE__ */ b(t.bolt, { size: 15 })
6267
+ children: b(v ? t.trash : t.bolt, { size: 15 })
5963
6268
  }),
5964
6269
  /* @__PURE__ */ x("div", {
5965
6270
  style: {
@@ -5979,16 +6284,16 @@ function Xs({ open: e, onOpenChange: n, action: r, actionName: i, onSubmit: a, i
5979
6284
  color: "var(--text-3)",
5980
6285
  marginTop: 2
5981
6286
  },
5982
- children: L(r.display?.description) || "Fill in the parameters below to execute this action."
6287
+ children: L(r.display?.description) || (T.length > 0 ? "Fill in the parameters below to execute this action." : "")
5983
6288
  })]
5984
6289
  }),
5985
6290
  /* @__PURE__ */ b(O, {
5986
6291
  icon: /* @__PURE__ */ b(t.x, { size: 14 }),
5987
- onClick: () => n(!1)
6292
+ onClick: C
5988
6293
  })
5989
6294
  ]
5990
6295
  }),
5991
- /* @__PURE__ */ b("div", {
6296
+ /* @__PURE__ */ x("div", {
5992
6297
  style: {
5993
6298
  padding: "12px 18px 16px",
5994
6299
  display: "flex",
@@ -5998,59 +6303,84 @@ function Xs({ open: e, onOpenChange: n, action: r, actionName: i, onSubmit: a, i
5998
6303
  minWidth: 0,
5999
6304
  minHeight: 0
6000
6305
  },
6001
- children: g.map(([e, t]) => {
6002
- let n = L(t.display?.name) || e;
6003
- if (t.type === "id_array") return null;
6004
- let r;
6005
- if (t.type === "entity_patch") {
6006
- let n = typeof t.filter?.targets == "string" ? t.filter.targets : void 0;
6007
- r = /* @__PURE__ */ b(Is, {
6008
- entity: v,
6009
- filterTargets: n,
6010
- selectedRows: l,
6011
- value: C[e] ?? {},
6012
- onChange: (t) => T(e, t)
6306
+ children: [S && /* @__PURE__ */ b("div", {
6307
+ style: {
6308
+ fontSize: 12.5,
6309
+ lineHeight: 1.5,
6310
+ color: "var(--text-2)",
6311
+ background: v ? "var(--danger-soft)" : "var(--surface-2)",
6312
+ border: "1px solid var(--divider)",
6313
+ borderRadius: 8,
6314
+ padding: "10px 12px"
6315
+ },
6316
+ children: S
6317
+ }), /* @__PURE__ */ b("fieldset", {
6318
+ disabled: o,
6319
+ style: {
6320
+ border: 0,
6321
+ margin: 0,
6322
+ padding: 0,
6323
+ minInlineSize: 0,
6324
+ display: "flex",
6325
+ flexDirection: "column",
6326
+ gap: 12,
6327
+ pointerEvents: o ? "none" : void 0,
6328
+ opacity: o ? .6 : 1
6329
+ },
6330
+ children: T.map(([e, t]) => {
6331
+ let n = L(t.display?.name) || e;
6332
+ if (t.type === "id_array") return null;
6333
+ let r;
6334
+ if (t.type === "entity_patch") {
6335
+ let n = typeof t.filter?.targets == "string" ? t.filter.targets : void 0;
6336
+ r = /* @__PURE__ */ b(vc, {
6337
+ entity: k,
6338
+ filterTargets: n,
6339
+ selectedRows: u,
6340
+ value: j[e] ?? {},
6341
+ onChange: (t) => N(e, t)
6342
+ });
6343
+ } else r = t.type === "status_group" ? /* @__PURE__ */ b(Ac, {
6344
+ param: t,
6345
+ value: j[e],
6346
+ onChange: (t) => N(e, t),
6347
+ statusGroups: E,
6348
+ formData: j
6349
+ }) : t.type === "status" ? /* @__PURE__ */ b(jc, {
6350
+ param: t,
6351
+ value: j[e],
6352
+ onChange: (t) => N(e, t),
6353
+ statusGroups: E,
6354
+ formData: j
6355
+ }) : ds({
6356
+ field: Ec(t),
6357
+ fieldName: e,
6358
+ value: j[e],
6359
+ mode: "edit",
6360
+ onChange: (t) => N(e, t),
6361
+ locale: h
6013
6362
  });
6014
- } else r = t.type === "status_group" ? /* @__PURE__ */ b(Js, {
6015
- param: t,
6016
- value: C[e],
6017
- onChange: (t) => T(e, t),
6018
- statusGroups: _,
6019
- formData: C
6020
- }) : t.type === "status" ? /* @__PURE__ */ b(Ys, {
6021
- param: t,
6022
- value: C[e],
6023
- onChange: (t) => T(e, t),
6024
- statusGroups: _,
6025
- formData: C
6026
- }) : ds({
6027
- field: Ws(t),
6028
- fieldName: e,
6029
- value: C[e],
6030
- mode: "edit",
6031
- onChange: (t) => T(e, t),
6032
- locale: f
6033
- });
6034
- return /* @__PURE__ */ x("div", {
6035
- style: { minWidth: 0 },
6036
- children: [
6037
- /* @__PURE__ */ b(Ce, {
6038
- required: t.required,
6039
- children: n
6040
- }),
6041
- r,
6042
- t.display?.description && /* @__PURE__ */ b("p", {
6043
- style: {
6044
- fontSize: 11,
6045
- color: "var(--text-3)",
6046
- marginTop: 4,
6047
- marginBottom: 0
6048
- },
6049
- children: L(t.display.description)
6050
- })
6051
- ]
6052
- }, e);
6053
- })
6363
+ return /* @__PURE__ */ x("div", {
6364
+ style: { minWidth: 0 },
6365
+ children: [
6366
+ /* @__PURE__ */ b(Ce, {
6367
+ required: t.required,
6368
+ children: n
6369
+ }),
6370
+ r,
6371
+ t.display?.description && /* @__PURE__ */ b("p", {
6372
+ style: {
6373
+ fontSize: 11,
6374
+ color: "var(--text-3)",
6375
+ marginTop: 4,
6376
+ marginBottom: 0
6377
+ },
6378
+ children: L(t.display.description)
6379
+ })
6380
+ ]
6381
+ }, e);
6382
+ })
6383
+ })]
6054
6384
  }),
6055
6385
  /* @__PURE__ */ x("div", {
6056
6386
  style: {
@@ -6067,16 +6397,17 @@ function Xs({ open: e, onOpenChange: n, action: r, actionName: i, onSubmit: a, i
6067
6397
  children: [
6068
6398
  /* @__PURE__ */ b("div", { style: { flex: 1 } }),
6069
6399
  /* @__PURE__ */ b(D, {
6070
- onClick: () => n(!1),
6400
+ onClick: C,
6071
6401
  disabled: o,
6072
6402
  children: "Cancel"
6073
6403
  }),
6074
6404
  /* @__PURE__ */ b(D, {
6075
6405
  kind: "primary",
6076
- icon: b(o ? Se : t.bolt, { size: 13 }),
6077
- onClick: E,
6406
+ danger: v,
6407
+ icon: b(o ? Se : v ? t.trash : t.bolt, { size: 13 }),
6408
+ onClick: ee,
6078
6409
  disabled: o,
6079
- children: o ? "Executing…" : "Execute"
6410
+ children: o ? "Executing…" : T.length > 0 ? "Execute" : "Confirm"
6080
6411
  })
6081
6412
  ]
6082
6413
  })
@@ -6085,7 +6416,7 @@ function Xs({ open: e, onOpenChange: n, action: r, actionName: i, onSubmit: a, i
6085
6416
  }
6086
6417
  //#endregion
6087
6418
  //#region src/components/shared/ActionResultDialog.tsx
6088
- function Zs({ open: e, onClose: n, display: r }) {
6419
+ function Nc({ open: e, onClose: n, display: r }) {
6089
6420
  let i = f(null);
6090
6421
  return l(() => {
6091
6422
  e && i.current?.focus();
@@ -6180,7 +6511,7 @@ function Zs({ open: e, onClose: n, display: r }) {
6180
6511
  gap: 12,
6181
6512
  overflowY: "auto"
6182
6513
  },
6183
- children: r.fields.map((e, t) => /* @__PURE__ */ b(Qs, { field: e }, t))
6514
+ children: r.fields.map((e, t) => /* @__PURE__ */ b(Pc, { field: e }, t))
6184
6515
  }),
6185
6516
  /* @__PURE__ */ x("div", {
6186
6517
  style: {
@@ -6203,7 +6534,7 @@ function Zs({ open: e, onClose: n, display: r }) {
6203
6534
  ]
6204
6535
  })] }) : null;
6205
6536
  }
6206
- function Qs({ field: e }) {
6537
+ function Pc({ field: e }) {
6207
6538
  let n = e.href ?? e.download_url ?? e.value, r = e.type === "download", i = r || e.type === "link", a = n ? Zr(n) : void 0, [o, s] = p(!1), [c, l] = p(null);
6208
6539
  async function u() {
6209
6540
  if (a) {
@@ -6333,7 +6664,7 @@ function Qs({ field: e }) {
6333
6664
  }
6334
6665
  //#endregion
6335
6666
  //#region src/components/shared/ActionRunner.tsx
6336
- function $s(e) {
6667
+ function Fc(e) {
6337
6668
  if (!e || typeof e != "object") return { kind: "success" };
6338
6669
  let t = e, n = t.status, r = t.success?.length ?? 0, i = t.errors?.length ?? 0, a = t.skipped?.length ?? 0, o = t.errors?.[0]?.error;
6339
6670
  if (n === "partial") {
@@ -6348,15 +6679,15 @@ function $s(e) {
6348
6679
  detail: "No items matched"
6349
6680
  } : n === "accepted" ? { kind: "accepted" } : { kind: "success" };
6350
6681
  }
6351
- function ec(e) {
6682
+ function Ic(e) {
6352
6683
  if (!e || typeof e != "object") return null;
6353
6684
  let t = e.result;
6354
6685
  if (!t || typeof t != "object") return null;
6355
6686
  let n = t.$display;
6356
6687
  return !n || typeof n != "object" ? null : n;
6357
6688
  }
6358
- function tc(e) {
6359
- let t = ec(e)?.fields;
6689
+ function Lc(e) {
6690
+ let t = Ic(e)?.fields;
6360
6691
  if (!Array.isArray(t)) return null;
6361
6692
  for (let e of t) {
6362
6693
  if (e?.type !== "download") continue;
@@ -6368,12 +6699,12 @@ function tc(e) {
6368
6699
  }
6369
6700
  return null;
6370
6701
  }
6371
- function nc(e) {
6702
+ function Rc(e) {
6372
6703
  if (!e || typeof e != "object") return;
6373
6704
  let t = e.result;
6374
6705
  !t || typeof t != "object" || "impersonation_session_id" in t && window.location.assign("/");
6375
6706
  }
6376
- function rc(e) {
6707
+ function zc(e) {
6377
6708
  if (e instanceof $n) {
6378
6709
  let t = e.response.errors ?? [];
6379
6710
  if (t.length === 1) return {
@@ -6394,23 +6725,23 @@ function rc(e) {
6394
6725
  detail: e instanceof Error ? e.message : String(e)
6395
6726
  };
6396
6727
  }
6397
- var ic = i(null);
6398
- function ac() {
6399
- let e = c(ic);
6728
+ var Bc = i(null);
6729
+ function Vc() {
6730
+ let e = c(Bc);
6400
6731
  if (!e) throw Error("useActionRunner must be used within <ActionRunnerProvider>");
6401
6732
  return e;
6402
6733
  }
6403
- function oc(e) {
6734
+ function Hc(e) {
6404
6735
  let t = {}, n = e.action?.resolved_hidden_defaults;
6405
6736
  if (n) for (let [e, r] of Object.entries(n)) r !== void 0 && (t[e] = r);
6406
6737
  return t;
6407
6738
  }
6408
- function sc({ children: e }) {
6739
+ function Uc({ children: e }) {
6409
6740
  let t = Mr(), { data: n } = Y(), [r, i] = p(null), [a, o] = p(0), [c, l] = p(null), u = s((e) => {
6410
6741
  if (e?.progress_screen) return n?.screens[e.progress_screen]?.route;
6411
6742
  }, [n?.screens]), f = s((e, n, r, i, a) => {
6412
6743
  let o = () => {
6413
- let n = cc(a), i = u(r), o = n ? `Job ${n} queued` : "Running in background";
6744
+ let n = Wc(a), i = u(r), o = n ? `Job ${n} queued` : "Running in background";
6414
6745
  Z.success(`${e} started`, o, i ? { action: {
6415
6746
  label: "View",
6416
6747
  onClick: () => t(i)
@@ -6418,7 +6749,7 @@ function sc({ children: e }) {
6418
6749
  };
6419
6750
  switch (i.kind) {
6420
6751
  case "success": {
6421
- let t = tc(a), r = t ? { action: {
6752
+ let t = Lc(a), r = t ? { action: {
6422
6753
  label: "Download",
6423
6754
  onClick: () => {
6424
6755
  ei(t.url, t.filename).catch((e) => {
@@ -6453,37 +6784,37 @@ function sc({ children: e }) {
6453
6784
  }
6454
6785
  if (t.kind !== "success" && t.kind !== "accepted") return;
6455
6786
  e.onSuccess?.(n);
6456
- let r = ec(n);
6457
- r && l(r), nc(n);
6787
+ let r = Ic(n);
6788
+ r && l(r), Rc(n);
6458
6789
  }, [m]), g = s((e) => {
6459
- let t = e.action, n = e.destructive ?? t?.destructive ?? !1, r = e.longRunning ?? t?.long_running ?? !1, a = e.title || L(t?.display?.name) || "Action";
6460
- return t?.resolved_params && t.resolved_params.length > 0 ? (i({
6461
- id: Symbol(),
6462
- opts: e,
6463
- title: a,
6464
- kind: "params",
6465
- pending: !1
6466
- }), Promise.resolve()) : n ? (i({
6467
- id: Symbol(),
6468
- opts: e,
6469
- title: a,
6470
- kind: "confirm",
6471
- pending: !1
6472
- }), Promise.resolve()) : (async (n) => {
6790
+ let t = e.action, n = e.longRunning ?? t?.long_running ?? !1, r = e.title || L(t?.display?.name) || "Action", a = async (i) => {
6473
6791
  o((e) => e + 1);
6474
6792
  try {
6475
- let i = await e.execute(n), o = $s(i);
6476
- f(a, r, t, o, i), h(e, o, i);
6793
+ let a = await e.execute(i), o = Fc(a);
6794
+ f(r, n, t, o, a), h(e, o, a);
6477
6795
  } catch (e) {
6478
- f(a, r, t, rc(e));
6796
+ f(r, n, t, zc(e));
6479
6797
  } finally {
6480
6798
  o((e) => Math.max(0, e - 1));
6481
6799
  }
6482
- })(oc(e));
6800
+ }, s = t ?? (e.destructive ? {
6801
+ display: {
6802
+ name: { en: r },
6803
+ icon: ""
6804
+ },
6805
+ destructive: !0
6806
+ } : void 0), c = !!(t?.resolved_params && t.resolved_params.length > 0), l = Ms(s);
6807
+ return s && (c || l) ? (i({
6808
+ id: Symbol(),
6809
+ opts: e,
6810
+ title: r,
6811
+ action: s,
6812
+ pending: !1
6813
+ }), Promise.resolve()) : a(Hc(e));
6483
6814
  }, [f, h]), v = a > 0 || !!r?.pending, y = d(() => ({
6484
6815
  run: g,
6485
6816
  isRunning: v
6486
- }), [g, v]), S = r?.opts.action, C = s(async (e) => {
6817
+ }), [g, v]), S = r?.action, C = s(async (e) => {
6487
6818
  if (!r) return;
6488
6819
  let t = r.id, n = r, a = n.opts.action, s = n.opts.longRunning ?? a?.long_running ?? !1;
6489
6820
  i((e) => e?.id === t ? {
@@ -6491,10 +6822,10 @@ function sc({ children: e }) {
6491
6822
  pending: !0
6492
6823
  } : e), o((e) => e + 1);
6493
6824
  try {
6494
- let r = await n.opts.execute(e), o = $s(r);
6825
+ let r = await n.opts.execute(e), o = Fc(r);
6495
6826
  f(n.title, s, a, o, r), h(n.opts, o, r), o.kind !== "partial" && i((e) => e?.id === t ? null : e);
6496
6827
  } catch (e) {
6497
- f(n.title, s, a, rc(e));
6828
+ f(n.title, s, a, zc(e));
6498
6829
  } finally {
6499
6830
  o((e) => Math.max(0, e - 1)), i((e) => e?.id === t ? {
6500
6831
  ...e,
@@ -6506,16 +6837,16 @@ function sc({ children: e }) {
6506
6837
  f,
6507
6838
  h
6508
6839
  ]);
6509
- return /* @__PURE__ */ x(ic.Provider, {
6840
+ return /* @__PURE__ */ x(Bc.Provider, {
6510
6841
  value: y,
6511
6842
  children: [
6512
6843
  e,
6513
- c && /* @__PURE__ */ b(Zs, {
6844
+ c && /* @__PURE__ */ b(Nc, {
6514
6845
  open: !0,
6515
6846
  onClose: () => l(null),
6516
6847
  display: c
6517
6848
  }),
6518
- r?.kind === "params" && S && /* @__PURE__ */ b(Xs, {
6849
+ r && S && /* @__PURE__ */ b(Mc, {
6519
6850
  open: !0,
6520
6851
  onOpenChange: (e) => {
6521
6852
  e || i(null);
@@ -6526,150 +6857,33 @@ function sc({ children: e }) {
6526
6857
  isPending: r.pending,
6527
6858
  bulkSelection: r.opts.bulkSelection,
6528
6859
  row: r.opts.row
6529
- }),
6530
- r?.kind === "confirm" && /* @__PURE__ */ b(uc, {
6531
- state: r,
6532
- onClose: () => i(null),
6533
- onExecute: async (e) => {
6534
- let t = r.id, n = r, a = n.opts.action, s = n.opts.longRunning ?? a?.long_running ?? !1, c = !1;
6535
- o((e) => e + 1);
6536
- try {
6537
- let t = await n.opts.execute(e), r = $s(t);
6538
- f(n.title, s, a, r, t), h(n.opts, r, t), c = r.kind === "partial";
6539
- } catch (e) {
6540
- f(n.title, s, a, rc(e));
6541
- } finally {
6542
- o((e) => Math.max(0, e - 1)), c || i((e) => e?.id === t ? null : e);
6543
- }
6544
- }
6545
6860
  })
6546
6861
  ]
6547
6862
  });
6548
6863
  }
6549
- function cc(e) {
6550
- return lc(e) ?? lc(e?.result);
6864
+ function Wc(e) {
6865
+ return Gc(e) ?? Gc(e?.result);
6551
6866
  }
6552
- function lc(e) {
6867
+ function Gc(e) {
6553
6868
  if (!e || typeof e != "object") return;
6554
6869
  let t = e, n = t.job_id ?? t.id;
6555
6870
  return typeof n == "string" ? n : void 0;
6556
6871
  }
6557
- function uc({ state: e, onClose: n, onExecute: r }) {
6558
- let { title: i, opts: a } = e, [o, s] = p(!1), c = a.action, l = a.destructive ?? c?.destructive ?? !1;
6559
- return /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("div", {
6560
- onClick: n,
6561
- style: {
6562
- position: "fixed",
6563
- inset: 0,
6564
- background: "var(--scrim)",
6565
- zIndex: 60,
6566
- backdropFilter: "blur(2px)"
6567
- }
6568
- }), /* @__PURE__ */ x("div", {
6569
- style: {
6570
- position: "fixed",
6571
- top: "50%",
6572
- left: "50%",
6573
- transform: "translate(-50%, -50%)",
6574
- zIndex: 61,
6575
- width: 460,
6576
- background: "var(--surface)",
6577
- borderRadius: 12,
6578
- boxShadow: "var(--shadow-lg)",
6579
- border: "1px solid var(--border)",
6580
- overflow: "hidden"
6581
- },
6582
- children: [/* @__PURE__ */ x("div", {
6583
- style: {
6584
- padding: "14px 18px 0",
6585
- display: "flex",
6586
- alignItems: "center",
6587
- gap: 10
6588
- },
6589
- children: [
6590
- /* @__PURE__ */ b("span", {
6591
- style: {
6592
- width: 28,
6593
- height: 28,
6594
- borderRadius: 7,
6595
- background: l ? "var(--danger-soft)" : "var(--accent-soft)",
6596
- color: l ? "var(--danger)" : "var(--accent)",
6597
- display: "inline-flex",
6598
- alignItems: "center",
6599
- justifyContent: "center"
6600
- },
6601
- children: b(l ? t.trash : t.bolt, { size: 15 })
6602
- }),
6603
- /* @__PURE__ */ x("div", {
6604
- style: { flex: 1 },
6605
- children: [/* @__PURE__ */ b("div", {
6606
- style: {
6607
- fontSize: 14,
6608
- fontWeight: 600,
6609
- color: "var(--text)"
6610
- },
6611
- children: i
6612
- }), /* @__PURE__ */ b("div", {
6613
- style: {
6614
- fontSize: 11.5,
6615
- color: "var(--text-3)"
6616
- },
6617
- children: "This cannot be undone. Confirm to proceed."
6618
- })]
6619
- }),
6620
- /* @__PURE__ */ b(O, {
6621
- icon: /* @__PURE__ */ b(t.x, { size: 14 }),
6622
- onClick: n
6623
- })
6624
- ]
6625
- }), /* @__PURE__ */ x("div", {
6626
- style: {
6627
- padding: "10px 16px",
6628
- borderTop: "1px solid var(--divider)",
6629
- display: "flex",
6630
- alignItems: "center",
6631
- gap: 8,
6632
- background: "var(--surface-2)"
6633
- },
6634
- children: [
6635
- /* @__PURE__ */ b("div", { style: { flex: 1 } }),
6636
- /* @__PURE__ */ b(D, {
6637
- onClick: n,
6638
- children: "Cancel"
6639
- }),
6640
- /* @__PURE__ */ b(D, {
6641
- kind: "primary",
6642
- danger: l,
6643
- icon: b(o ? Se : t.bolt, { size: 13 }),
6644
- onClick: async () => {
6645
- s(!0);
6646
- try {
6647
- await r(oc(a));
6648
- } finally {
6649
- s(!1);
6650
- }
6651
- },
6652
- children: o ? "Executing…" : "Confirm"
6653
- })
6654
- ]
6655
- })]
6656
- })] });
6657
- }
6658
6872
  //#endregion
6659
6873
  //#region src/hooks/useCurrentScreen.tsx
6660
- var dc = i(void 0);
6661
- function fc({ code: e, children: t }) {
6874
+ var Kc = i(void 0);
6875
+ function qc({ code: e, children: t }) {
6662
6876
  let { data: n } = Y(), r = d(() => ({
6663
6877
  code: e,
6664
6878
  screen: n?.screens[e]
6665
6879
  }), [e, n]);
6666
- return /* @__PURE__ */ b(dc.Provider, {
6880
+ return /* @__PURE__ */ b(Kc.Provider, {
6667
6881
  value: r,
6668
6882
  children: t
6669
6883
  });
6670
6884
  }
6671
- function pc() {
6672
- return c(dc);
6885
+ function Jc() {
6886
+ return c(Kc);
6673
6887
  }
6674
6888
  //#endregion
6675
- export { Cr as $, lt as $t, Ni as A, Te as An, G as At, $r as B, N as Bn, Ot as Bt, Sa as C, Ce as Cn, Bn as Ct, sa as D, Ie as Dn, Mn as Dt, na as E, Re as En, jn as Et, Oi as F, be as Fn, gn as Ft, Pr as G, O as Gn, _t as Gt, Jr as H, j as Hn, St as Ht, pi as I, ue as In, Ft as It, kr as J, ht as Jt, Nr as K, D as Kn, vt as Kt, di as L, ve as Ln, Rt as Lt, Ai as M, Le as Mn, J as Mt, Di as N, Se as Nn, hn as Nt, oa as O, F as On, Rn as Ot, ki as P, xe as Pn, _n as Pt, Sr as Q, st as Qt, ri as R, pe as Rn, zt as Rt, ya as S, ke as Sn, zn as St, ba as T, Ne as Tn, Pn as Tt, Z as U, A as Un, Ct as Ut, Zr as V, se as Vn, wt as Vt, Mr as W, k as Wn, Dt as Wt, wr as X, B as Xt, Er as Y, mt as Yt, Tr as Z, ct as Zt, ls as _, R as _n, Un as _t, Zs as a, Ye as an, Xn as at, Ta as b, I as bn, Nn as bt, Is as c, Ve as cn, Kn as ct, As as d, Ze as dn, Zn as dt, Be as en, mr as et, ws as f, tt as fn, rr as ft, ds as g, nt as gn, Y as gt, ms as h, Je as hn, Jn as ht, ac as i, qe as in, Yn as it, ji as j, P as jn, q as jt, ta as k, Pe as kn, Fn as kt, Vs as l, z as ln, Gn as lt, gs as m, Qe as mn, or as mt, pc as n, it as nn, tr as nt, Xs as o, Xe as on, cr as ot, ks as p, $e as pn, sr as pt, jr as q, yt as qt, sc as r, at as rn, qn as rt, Fs as s, Ge as sn, Qn as st, fc as t, rt as tn, $n as tt, js as u, L as un, lr as ut, wa as v, We as vn, Hn as vt, ua as w, Fe as wn, Ln as wt, Q as x, ze as xn, Vn as xt, Ea as y, et as yn, An as yt, ei as z, ye as zn, kt as zt };
6889
+ export { ri as $, pe as $n, zt as $t, ms as A, Je as An, Jn as At, ba as B, Ne as Bn, Pn as Bt, Fs as C, Ve as Cn, Kn as Ct, Ks as D, tt as Dn, rr as Dt, vs as E, Ze as En, Zn as Et, Ta as F, I as Fn, Nn as Ft, Ni as G, Te as Gn, G as Gt, sa as H, Ie as Hn, Mn as Ht, Q as I, ze as In, Vn as It, Di as J, Se as Jn, hn as Jt, ji as K, P as Kn, q as Kt, ya as L, ke as Ln, zn as Lt, ls as M, R as Mn, Un as Mt, wa as N, We as Nn, Hn as Nt, ys as O, $e as On, sr as Ot, Ea as P, et as Pn, An as Pt, di as Q, ve as Qn, Rt as Qt, Sa as R, Ce as Rn, Bn as Rt, Os as S, Ge as Sn, Qn as St, Ps as T, L as Tn, lr as Tt, oa as U, F as Un, Rn as Ut, na as V, Re as Vn, jn as Vt, ta as W, Pe as Wn, Fn as Wt, Oi as X, be as Xn, gn as Xt, ki as Y, xe as Yn, _n as Yt, pi as Z, ue as Zn, Ft as Zt, Is as _, it as _n, tr as _t, _c as a, Dt as an, k as ar, Mr as at, bs as b, Ye as bn, Xn as bt, pc as c, yt as cn, jr as ct, dc as d, B as dn, wr as dt, kt as en, ye as er, ei as et, Qs as f, ct as fn, Tr as ft, Ns as g, rt as gn, $n as gt, qs as h, Be as hn, mr as ht, Vc as i, Ct as in, A as ir, Z as it, ds as j, nt as jn, Y as jt, Cs as k, Qe as kn, or as kt, fc as l, ht as ln, kr as lt, gs as m, lt as mn, Cr as mt, Jc as n, wt as nn, oe as nr, Zr as nt, vc as o, _t as on, O as or, Pr as ot, _s as p, st as pn, Sr as pt, Ai as q, Le as qn, J as qt, Uc as r, St as rn, j as rr, Jr as rt, Cc as s, vt as sn, D as sr, Nr as st, qc as t, Ot as tn, se as tr, $r as tt, oc as u, mt as un, Er as ut, Xs as v, at as vn, qn as vt, Ds as w, z as wn, Gn as wt, Gs as x, Xe as xn, cr as xt, Ys as y, qe as yn, Yn as yt, ua as z, Fe as zn, Ln as zt };