@declarion/react 0.57.0 → 0.59.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 (165) hide show
  1. package/README.md +0 -2
  2. package/dist-lib/AgentChatPanel.impl-DBH1Ff4G.js +1200 -0
  3. package/dist-lib/DetailAuditStrip-GNRA_eP5.js +289 -0
  4. package/dist-lib/{DraggableChildrenTable-BV5sb8Uo.js → DraggableChildrenTable-4RZC351U.js} +87 -86
  5. package/dist-lib/Grid-CQabaBLx.js +405 -0
  6. package/dist-lib/{LayoutRenderer-C9AH9cXf.js → LayoutRenderer-DGKWZKpW.js} +1000 -1114
  7. package/dist-lib/{ListCardsBody-DXcDg536.js → ListCardsBody-DfGmyNIu.js} +84 -84
  8. package/dist-lib/MarkdownRenderer-BDbzDv_y.js +87 -0
  9. package/dist-lib/{RefreshControl-CNtN8zSl.js → RefreshControl-Bhoib0ZA.js} +126 -155
  10. package/dist-lib/SmartDetailPage.impl-Ds2RGg6K.js +1565 -0
  11. package/dist-lib/SmartListPage.impl-BrZLE_Gb.js +3046 -0
  12. package/dist-lib/{SmartRecordListPage.impl-Bkl9aZJ8.js → SmartRecordListPage.impl-C1FJLr80.js} +281 -280
  13. package/dist-lib/SortHeaderMenu-Cijxk4cX.js +107 -0
  14. package/dist-lib/action-dispatch-DY0c8U81.js +1967 -0
  15. package/dist-lib/api/client.d.ts +5 -0
  16. package/dist-lib/api/data.d.ts +2 -4
  17. package/dist-lib/api/entities.d.ts +8 -15
  18. package/dist-lib/api/events.d.ts +3 -3
  19. package/dist-lib/cardProjection-Bkl2SSYz.js +499 -0
  20. package/dist-lib/components/actions/ResponsiveActionBar.d.ts +17 -16
  21. package/dist-lib/components/agents/AgentChatPanel.d.ts +3 -13
  22. package/dist-lib/components/agents/AgentChatPanel.impl.d.ts +14 -0
  23. package/dist-lib/components/agents/AgentPicker.d.ts +1 -2
  24. package/dist-lib/components/chrome/PageShell.d.ts +7 -0
  25. package/dist-lib/components/chrome/RecordHeader.d.ts +1 -2
  26. package/dist-lib/components/detail-layout/DetailAuditStrip.d.ts +1 -2
  27. package/dist-lib/components/detail-layout/DetailHighlights.d.ts +1 -2
  28. package/dist-lib/components/detail-layout/blockMeta.d.ts +2 -1
  29. package/dist-lib/components/fields/BoolField.d.ts +1 -1
  30. package/dist-lib/components/fields/EnumField.d.ts +1 -1
  31. package/dist-lib/components/fields/IntArrayField.d.ts +1 -1
  32. package/dist-lib/components/fields/MultilangArrayField.d.ts +2 -0
  33. package/dist-lib/components/fields/MultilangField.d.ts +1 -1
  34. package/dist-lib/components/fields/MultilangTextField.d.ts +1 -1
  35. package/dist-lib/components/fields/NumberField.d.ts +1 -1
  36. package/dist-lib/components/fields/PasswordField.d.ts +1 -1
  37. package/dist-lib/components/fields/RefCombobox.d.ts +1 -1
  38. package/dist-lib/components/fields/SecretField.d.ts +1 -1
  39. package/dist-lib/components/fields/StringArrayField.d.ts +1 -1
  40. package/dist-lib/components/fields/TimestampField.d.ts +1 -1
  41. package/dist-lib/components/fields/cells/registry.d.ts +2 -1
  42. package/dist-lib/components/fields/index.d.ts +2 -1
  43. package/dist-lib/components/fields/langMap.d.ts +2 -0
  44. package/dist-lib/components/fields/secretValue.d.ts +2 -0
  45. package/dist-lib/components/file-widgets/UnknownFileWidget.d.ts +3 -0
  46. package/dist-lib/components/file-widgets/UploadFailureText.d.ts +4 -0
  47. package/dist-lib/components/file-widgets/helpers.d.ts +1 -1
  48. package/dist-lib/components/file-widgets/host.d.ts +4 -3
  49. package/dist-lib/components/file-widgets/types.d.ts +1 -0
  50. package/dist-lib/components/file-widgets/upload.d.ts +18 -3
  51. package/dist-lib/components/filters/filter-op-label.d.ts +3 -0
  52. package/dist-lib/components/layout/ImpersonationBanner.d.ts +1 -1
  53. package/dist-lib/components/layout/ImpersonationFrame.d.ts +1 -1
  54. package/dist-lib/components/layout/Layout.d.ts +2 -1
  55. package/dist-lib/components/layout/Sidebar.d.ts +2 -1
  56. package/dist-lib/components/layout/TenantChip.d.ts +1 -1
  57. package/dist-lib/components/list/ViewSwitcher.d.ts +4 -2
  58. package/dist-lib/components/pages/DocumentsMenu.d.ts +1 -2
  59. package/dist-lib/components/pages/ExportMenu.d.ts +3 -5
  60. package/dist-lib/components/pages/RecordDocumentsPanel.d.ts +1 -2
  61. package/dist-lib/components/pages/auth/AuthShell.d.ts +4 -31
  62. package/dist-lib/components/pages/exportRequest.d.ts +4 -6
  63. package/dist-lib/components/pages/list/DeleteViewDialog.d.ts +8 -0
  64. package/dist-lib/components/pages/list/ListCardRow.d.ts +1 -2
  65. package/dist-lib/components/pages/list/ListCardsBody.d.ts +0 -1
  66. package/dist-lib/components/pages/list/ListFloatbar.d.ts +2 -2
  67. package/dist-lib/components/pages/list/ListHeader.d.ts +2 -2
  68. package/dist-lib/components/pages/list/ListNoRows.d.ts +4 -5
  69. package/dist-lib/components/pages/list/ListToolbar.d.ts +3 -2
  70. package/dist-lib/components/pages/list/ListUrlBanner.d.ts +10 -0
  71. package/dist-lib/components/pages/list/RowActionsCell.d.ts +2 -4
  72. package/dist-lib/components/pages/list/RowContextMenu.d.ts +1 -2
  73. package/dist-lib/components/pages/list/columns.d.ts +2 -1
  74. package/dist-lib/components/pages/list/filter-meta.d.ts +2 -1
  75. package/dist-lib/components/pages/list/useActiveView.d.ts +38 -0
  76. package/dist-lib/components/pages/list/useListColumnLayout.d.ts +6 -5
  77. package/dist-lib/components/pages/list/useListQuery.d.ts +4 -4
  78. package/dist-lib/components/pages/list/useListSort.d.ts +5 -4
  79. package/dist-lib/components/pages/list/useListViews.d.ts +18 -8
  80. package/dist-lib/components/pages/list/useRowMenu.d.ts +2 -3
  81. package/dist-lib/components/pages/profile/Profile.d.ts +3 -0
  82. package/dist-lib/components/params/ParamsBlock.d.ts +1 -13
  83. package/dist-lib/components/params/param-editors.d.ts +3 -11
  84. package/dist-lib/components/primitives/ClassifiedFieldLocked.d.ts +1 -2
  85. package/dist-lib/components/shared/DynamicIcon.d.ts +2 -2
  86. package/dist-lib/components/shared/LoadingSkeleton.d.ts +1 -0
  87. package/dist-lib/components/shared/LucideIcon.d.ts +1 -1
  88. package/dist-lib/components/shared/useOwnRefresh.d.ts +1 -1
  89. package/dist-lib/declarion-react.css +1 -1
  90. package/dist-lib/embed/theme.d.ts +1 -1
  91. package/dist-lib/embed/useEmbedNavigate.d.ts +1 -1
  92. package/dist-lib/failure-v-uGSpbX.js +158 -0
  93. package/dist-lib/{field-classification-D6xQYn-h.js → field-classification-C28XE-_P.js} +514 -307
  94. package/dist-lib/format-count-DA4wmmWR.js +1771 -0
  95. package/dist-lib/hooks/useEntityData.d.ts +1 -1
  96. package/dist-lib/hooks/useFilters.d.ts +7 -5
  97. package/dist-lib/hooks/useLanguage.d.ts +4 -0
  98. package/dist-lib/hooks/useParams.d.ts +4 -51
  99. package/dist-lib/hooks/useRegisterScreenTab.d.ts +1 -1
  100. package/dist-lib/hooks/useSSE.d.ts +3 -3
  101. package/dist-lib/hooks/useTabTitle.d.ts +2 -0
  102. package/dist-lib/hooks/useText.d.ts +3 -3
  103. package/dist-lib/hooks/useVersionWatcher.d.ts +1 -1
  104. package/dist-lib/hooks/useViews.d.ts +20 -0
  105. package/dist-lib/index.d.ts +8 -7
  106. package/dist-lib/index.js +2716 -5795
  107. package/dist-lib/lib/action-dispatch.d.ts +2 -1
  108. package/dist-lib/lib/actions.d.ts +30 -42
  109. package/dist-lib/lib/anchor.d.ts +3 -4
  110. package/dist-lib/lib/decimal-text.d.ts +1 -0
  111. package/dist-lib/lib/document-templates.d.ts +1 -2
  112. package/dist-lib/lib/download.d.ts +2 -1
  113. package/dist-lib/lib/evidence-verdict.d.ts +2 -1
  114. package/dist-lib/lib/failure.d.ts +2 -0
  115. package/dist-lib/lib/field-classification.d.ts +3 -3
  116. package/dist-lib/lib/filters.d.ts +18 -2
  117. package/dist-lib/lib/format-count.d.ts +8 -7
  118. package/dist-lib/lib/language.d.ts +19 -0
  119. package/dist-lib/lib/mass-edit.d.ts +2 -1
  120. package/dist-lib/lib/realtime-query-keys.d.ts +1 -1
  121. package/dist-lib/lib/realtime-reconcile.d.ts +3 -4
  122. package/dist-lib/lib/screen-back.d.ts +4 -6
  123. package/dist-lib/lib/sort.d.ts +9 -9
  124. package/dist-lib/lib/timestamp.d.ts +5 -7
  125. package/dist-lib/lib/ui-actions.d.ts +2 -1
  126. package/dist-lib/peekDraftStore-D-cTbiIr.js +199 -0
  127. package/dist-lib/registry-Cb3W-czW.js +1950 -0
  128. package/dist-lib/safe-url-oSJw5pzO.js +34 -0
  129. package/dist-lib/stores/icon-registry.d.ts +2 -2
  130. package/dist-lib/stores/list-layout.d.ts +3 -4
  131. package/dist-lib/stores/realtime.d.ts +1 -1
  132. package/dist-lib/stores/tabs.d.ts +3 -2
  133. package/dist-lib/testing.d.ts +6 -0
  134. package/dist-lib/testing.js +98 -76
  135. package/dist-lib/types/api.d.ts +7 -8
  136. package/dist-lib/types/fieldType.d.ts +1 -1
  137. package/dist-lib/types/files.d.ts +4 -4
  138. package/dist-lib/types/schema.d.ts +44 -50
  139. package/dist-lib/useAgentConversation-D97IqE-J.js +623 -0
  140. package/dist-lib/{useCurrentScreen-CzwzQpoW.js → useCurrentScreen-BL5NZFCw.js} +2777 -3768
  141. package/dist-lib/useListQuery-BG1GyKtJ.js +103 -0
  142. package/dist-lib/useProperties-4Lg3odrt.js +83 -0
  143. package/dist-lib/{useTabSearchMirror-C39U85cg.js → useTabSearchMirror-ZVLlINBX.js} +49 -51
  144. package/dist-lib/useText-BFDCTUSo.js +952 -0
  145. package/dist-lib/{value-Bo8C8WMU.js → value-By1-WJ8J.js} +74 -76
  146. package/dist-lib/vite/fingerprint-plugin.d.ts +2 -3
  147. package/package.json +9 -9
  148. package/dist-lib/Grid-DWgUPuZ3.js +0 -404
  149. package/dist-lib/MarkdownRenderer-CcSFc2N3.js +0 -85
  150. package/dist-lib/RecordIdBadge-CGxPR-8q.js +0 -24
  151. package/dist-lib/SmartDetailPage.impl-lskCd-WG.js +0 -1846
  152. package/dist-lib/SmartListPage.impl-CrGbdzyK.js +0 -2854
  153. package/dist-lib/SortHeaderMenu-SYSAaqQJ.js +0 -106
  154. package/dist-lib/action-dispatch-CR4ajBtT.js +0 -1985
  155. package/dist-lib/cardProjection-CW5RIMko.js +0 -699
  156. package/dist-lib/components/pages/home/HomeStub.d.ts +0 -6
  157. package/dist-lib/components/pages/jobs/Jobs.d.ts +0 -1
  158. package/dist-lib/components/pages/pipeline/Pipeline.d.ts +0 -1
  159. package/dist-lib/format-count-Dobmi-Ji.js +0 -1551
  160. package/dist-lib/hooks/useUserLocale.d.ts +0 -1
  161. package/dist-lib/lib/messages.d.ts +0 -12
  162. package/dist-lib/peekDraftStore-5wQ7lq_V.js +0 -194
  163. package/dist-lib/registry-CjgUaF7C.js +0 -1768
  164. package/dist-lib/useListQuery-D7Hr5WM1.js +0 -96
  165. package/dist-lib/useProperties-CqtCzFCr.js +0 -81
@@ -1,1768 +0,0 @@
1
- import { s as e, t } from "./DynamicIcon-DW5krHuX.js";
2
- import { $n as n, $t as r, Br as i, Cr as a, D as o, Er as s, F as c, Gn as l, H as u, Lr as d, Mr as f, O as p, Or as m, P as h, Q as g, Qn as _, Qt as v, V as y, Vr as b, W as x, X as S, Xt as C, Y as w, Zn as T, Zt as E, cr as D, en as O, et as k, gt as A, hr as j, i as M, in as N, jt as P, kr as F, ln as I, mr as L, nn as R, nr as z, q as B, tr as V, tt as H, un as U, wn as W, xt as ee, zr as G } from "./useCurrentScreen-CzwzQpoW.js";
3
- import { O as te } from "./field-classification-D6xQYn-h.js";
4
- import { c as ne, l as re, o as ie, t as ae } from "./action-dispatch-CR4ajBtT.js";
5
- import { n as oe, r as se, t as K } from "./dataTableStyles-vwD1mVOP.js";
6
- import { Component as ce, useCallback as q, useEffect as le, useId as ue, useMemo as J, useRef as Y, useState as X } from "react";
7
- import { useInfiniteQuery as de, useQuery as fe, useQueryClient as pe } from "@tanstack/react-query";
8
- import { Fragment as me, jsx as Z, jsxs as Q } from "react/jsx-runtime";
9
- import { clsx as he } from "clsx";
10
- import { twMerge as ge } from "tailwind-merge";
11
- //#region src/components/primitives/SectionCard.tsx
12
- var $ = {
13
- primary: {
14
- surface: "var(--surface)",
15
- shadow: "var(--shadow-xs)"
16
- },
17
- secondary: {
18
- surface: "var(--surface-2)",
19
- shadow: "none"
20
- }
21
- };
22
- function _e({ title: t, subtitle: n, right: r, badge: a, count: o, children: s, footer: c, collapsible: l = !0, defaultOpen: u = !0, icon: d, emphasis: f = "primary", headingLevel: p = 2, padding: m = "16px" }) {
23
- let [h, g] = X(u), _ = $[f] ?? $.primary;
24
- return /* @__PURE__ */ Q("div", {
25
- "data-emphasis": f,
26
- style: {
27
- background: _.surface,
28
- border: "1px solid var(--border)",
29
- borderRadius: 10,
30
- overflow: "hidden",
31
- boxShadow: _.shadow,
32
- flexShrink: 0
33
- },
34
- children: [
35
- /* @__PURE__ */ Q("div", {
36
- style: {
37
- display: "flex",
38
- alignItems: "center",
39
- gap: 10,
40
- padding: "10px 14px",
41
- borderBottom: h ? "1px solid var(--divider)" : "none",
42
- minHeight: 40
43
- },
44
- children: [
45
- /* @__PURE__ */ Z("div", {
46
- role: "heading",
47
- "aria-level": p,
48
- style: {
49
- display: "flex",
50
- flex: 1,
51
- minWidth: 0
52
- },
53
- children: /* @__PURE__ */ Q("div", {
54
- role: l ? "button" : void 0,
55
- tabIndex: l ? 0 : void 0,
56
- "aria-expanded": l ? h : void 0,
57
- onClick: l ? () => g((e) => !e) : void 0,
58
- onKeyDown: l ? (e) => {
59
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), g((e) => !e));
60
- } : void 0,
61
- style: {
62
- display: "flex",
63
- alignItems: "center",
64
- gap: 8,
65
- flex: 1,
66
- minWidth: 0,
67
- cursor: l ? "pointer" : "default",
68
- userSelect: "none"
69
- },
70
- children: [
71
- d && /* @__PURE__ */ Z("span", {
72
- style: {
73
- color: "var(--text-3)",
74
- display: "flex",
75
- flexShrink: 0
76
- },
77
- children: d
78
- }),
79
- /* @__PURE__ */ Z("div", {
80
- style: {
81
- fontSize: 12.5,
82
- fontWeight: 600,
83
- color: "var(--text)",
84
- letterSpacing: "-0.005em",
85
- overflow: "hidden",
86
- textOverflow: "ellipsis",
87
- whiteSpace: "nowrap",
88
- minWidth: 0
89
- },
90
- children: t
91
- }),
92
- o !== void 0 && /* @__PURE__ */ Z("span", {
93
- className: "num",
94
- style: {
95
- fontSize: 11,
96
- fontWeight: 600,
97
- color: "var(--text-3)",
98
- background: "var(--surface-3)",
99
- borderRadius: 999,
100
- padding: "1px 7px",
101
- minWidth: 20,
102
- textAlign: "center",
103
- flexShrink: 0
104
- },
105
- children: o
106
- }),
107
- n && /* @__PURE__ */ Z("div", {
108
- style: {
109
- fontSize: 11.5,
110
- color: "var(--text-3)",
111
- flexShrink: 0,
112
- borderLeft: "1px solid var(--divider)",
113
- paddingLeft: 8,
114
- marginLeft: 2
115
- },
116
- children: n
117
- })
118
- ]
119
- })
120
- }),
121
- a && /* @__PURE__ */ Z(G, {
122
- tone: a.tone ?? "violet",
123
- size: "xs",
124
- dot: a.dot,
125
- children: a.text
126
- }),
127
- r,
128
- l && /* @__PURE__ */ Z(i, {
129
- size: 24,
130
- icon: Z(h ? e.up : e.down, { size: 14 }),
131
- onClick: () => g((e) => !e),
132
- title: h ? "Collapse" : "Expand"
133
- })
134
- ]
135
- }),
136
- h && /* @__PURE__ */ Z("div", {
137
- style: { padding: m },
138
- children: s
139
- }),
140
- c && h && /* @__PURE__ */ Z("div", {
141
- style: {
142
- padding: "8px 14px",
143
- borderTop: "1px solid var(--divider)",
144
- background: "var(--surface-2)",
145
- fontSize: 11.5,
146
- color: "var(--text-3)"
147
- },
148
- children: c
149
- })
150
- ]
151
- });
152
- }
153
- //#endregion
154
- //#region src/components/primitives/ClassifiedFieldLocked.tsx
155
- function ve({ tier: t, tierDef: n, requiredPermission: r, locale: i = "en", variant: a = "value" }) {
156
- let o = n?.name?.[i] ?? n?.name?.en ?? t, s = r ? `Locked: requires permission "${r}". Ask your administrator to grant it to your role.` : `Locked: ${o} classification — requires explicit grant.`;
157
- return /* @__PURE__ */ Q("span", {
158
- title: s,
159
- "aria-label": s,
160
- className: `inline-flex items-center gap-1 text-muted-foreground italic select-none ${a === "input" ? "border border-divider rounded-md px-2 py-1 bg-surface" : ""}`,
161
- children: [/* @__PURE__ */ Z(e.lock, { size: 12 }), /* @__PURE__ */ Z("span", { children: o })]
162
- });
163
- }
164
- //#endregion
165
- //#region src/lib/utils.ts
166
- function ye(...e) {
167
- return ge(he(e));
168
- }
169
- function be(e) {
170
- return e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || e.button !== 0;
171
- }
172
- //#endregion
173
- //#region src/hooks/useAssociatedData.ts
174
- function xe(e, t, n, r, i, a, s, c) {
175
- let l = c ? JSON.stringify(Object.entries(c).sort()) : void 0;
176
- return de({
177
- queryKey: [
178
- o,
179
- e,
180
- t,
181
- n,
182
- i,
183
- a,
184
- s,
185
- l
186
- ],
187
- queryFn: ({ pageParam: e }) => {
188
- let o = new URLSearchParams(), l = [{
189
- field: r,
190
- op: "eq",
191
- value: t
192
- }];
193
- if (c) for (let [e, t] of Object.entries(c)) t && t !== "__all__" && l.push({
194
- field: e,
195
- op: "eq",
196
- value: t
197
- });
198
- return o.set("filters", JSON.stringify(l)), i && o.set("sort", i), a && o.set("limit", String(a)), s && o.set("search", s), e && o.set("after", e), W(`/api/data/${n}?${o.toString()}`);
199
- },
200
- getNextPageParam: (e) => e.meta?.has_more ? e.meta.cursor : void 0,
201
- initialPageParam: void 0,
202
- enabled: !!e && !!t && !!n && !!r
203
- });
204
- }
205
- //#endregion
206
- //#region src/components/actions/ActionButton.tsx
207
- function Se({ actionCode: n, action: r, entityCode: a, objectIds: o = [], row: s, variant: l = "outline", size: u = "default", onSuccess: d }) {
208
- let [f, p] = X(!1), [m, _] = X(!1), { data: v } = U(), y = te(), { run: S } = M(), T = w(r), E = !s || x(r.conditions, s), D = q(async () => {
209
- if (r.association && o.length !== 0) {
210
- p(!0);
211
- try {
212
- let e = a ? `${a}.${r.association}` : r.association, t = await N(e, o), n = B(v, t.target_entity);
213
- if (!n) {
214
- P.error(`No list screen found for ${t.target_entity}`);
215
- return;
216
- }
217
- let i = v?.entities[t.target_entity], s = z(r.display?.name) || t.target_entity;
218
- if (t.ids.length === 0) {
219
- P.info(`No related ${s} found`);
220
- return;
221
- }
222
- let c = i?.fields.names().find((e) => i.fields.get(e)?.primary) ?? "id", l = new URLSearchParams();
223
- l.set(`filter_${c}`, t.ids.join(",")), y(n.route, {
224
- title: s,
225
- icon: r.display?.icon || n.icon,
226
- search: l.toString()
227
- }), d?.();
228
- } catch (e) {
229
- P.error(e instanceof Error ? e.message : "Failed to resolve association");
230
- } finally {
231
- p(!1);
232
- }
233
- }
234
- }, [
235
- r,
236
- a,
237
- o,
238
- v,
239
- y,
240
- d
241
- ]), k = r.entity ? `${r.entity}.${n}` : n, A = o.length > 0 ? o : void 0, j = q(() => {
242
- _(!0), S({
243
- action: r,
244
- title: z(r.display?.name) || n,
245
- row: s,
246
- entity: a,
247
- execute: (e) => O(k, C(e, A)),
248
- onSuccess: () => d?.()
249
- }).finally(() => _(!1));
250
- }, [
251
- S,
252
- r,
253
- n,
254
- s,
255
- a,
256
- k,
257
- A,
258
- d
259
- ]), F = q(() => {
260
- if (c(r)) {
261
- h(r.ui_steps, { row: s }).then(() => d?.());
262
- return;
263
- }
264
- if (T) {
265
- D();
266
- return;
267
- }
268
- if (r.href && !r.handler && !r.association) {
269
- let e = a ? v?.entities[a] : void 0, t = g(s, e), i = r.href;
270
- a && (i = i.replaceAll("${entity}", a)), t && (i = i.replaceAll("${id}", encodeURIComponent(t))), y(i, {
271
- title: z(r.display?.name) || n,
272
- icon: r.display?.icon
273
- }), d?.();
274
- return;
275
- }
276
- j();
277
- }, [
278
- r,
279
- s,
280
- a,
281
- v?.entities,
282
- n,
283
- y,
284
- T,
285
- D,
286
- j,
287
- d
288
- ]), I = z(r.display?.name), L = r.display?.icon, R = L && e[L], V = R ? /* @__PURE__ */ Z(R, { size: 13 }) : L ? /* @__PURE__ */ Z(t, {
289
- name: L,
290
- size: 13
291
- }) : null, H = !E || m || f;
292
- return u === "icon" ? /* @__PURE__ */ Z(i, {
293
- icon: V ?? /* @__PURE__ */ Z(e.bolt, { size: 13 }),
294
- onClick: F,
295
- title: I
296
- }) : /* @__PURE__ */ Z(b, {
297
- kind: l === "default" ? "primary" : l === "ghost" ? "ghost" : "default",
298
- size: "sm",
299
- icon: V,
300
- danger: r.destructive,
301
- onClick: F,
302
- disabled: H,
303
- title: I,
304
- "aria-label": I,
305
- children: I
306
- });
307
- }
308
- //#endregion
309
- //#region src/components/actions/RowActionsKebab.tsx
310
- function Ce({ actions: t, objectIds: n, row: r, entity: a, onSuccess: o, preMenu: s, divider: c, size: l = 22, align: u = "end" }) {
311
- let f = Y(null), [p, m] = X(!1), [h, g] = X(null), { run: _ } = M(), v = J(() => {
312
- let e = {};
313
- for (let { code: n, action: r } of t) e[n] = r;
314
- return e;
315
- }, [t]), b = J(() => {
316
- let e = t.map(({ code: e }) => ({
317
- kind: "action",
318
- code: e,
319
- enabled: !0,
320
- reason: null
321
- }));
322
- return r ? y(e, v, void 0, r, [], ie(a, r)) : e;
323
- }, [
324
- t,
325
- v,
326
- r,
327
- a
328
- ]), x = q((e, t) => {
329
- m(!1);
330
- let i = t.entity ? `${t.entity}.${e}` : e;
331
- return _({
332
- action: t,
333
- title: z(t.display?.name) || e,
334
- row: r,
335
- execute: async (e) => {
336
- let t = await O(i, C(e, n));
337
- return o?.(), t;
338
- }
339
- });
340
- }, [
341
- _,
342
- r,
343
- n,
344
- o
345
- ]);
346
- return !s && b.length === 0 ? null : /* @__PURE__ */ Q("div", {
347
- className: "sl-row-actions",
348
- "data-open": p ? "true" : void 0,
349
- style: {
350
- display: "flex",
351
- alignItems: "center",
352
- justifyContent: "flex-end"
353
- },
354
- children: [/* @__PURE__ */ Z(i, {
355
- ref: f,
356
- size: l,
357
- icon: /* @__PURE__ */ Z(e.more, { size: Math.round(l * .55) }),
358
- onClick: () => m((e) => !e),
359
- title: "Actions"
360
- }), /* @__PURE__ */ Q(d, {
361
- open: p,
362
- anchor: f.current,
363
- onClose: () => m(!1),
364
- width: 200,
365
- align: u,
366
- children: [
367
- s,
368
- s && c && b.length > 0 && /* @__PURE__ */ Z(F, { divider: !0 }),
369
- /* @__PURE__ */ Z(re, {
370
- layout: b,
371
- entityActions: v,
372
- onRun: x,
373
- loading: h,
374
- onLoadingChange: g,
375
- row: r
376
- })
377
- ]
378
- })]
379
- });
380
- }
381
- //#endregion
382
- //#region src/components/detail-layout/AssociatedToolbar.tsx
383
- function we({ entity: t, searchable: r, filterFields: i, searchValue: o, onSearchChange: c, filters: l, onFilterChange: u, allEntities: d }) {
384
- let f = r === !0, p = i && i.length > 0;
385
- return !f && !p ? null : /* @__PURE__ */ Q("div", {
386
- style: {
387
- display: "flex",
388
- alignItems: "center",
389
- gap: 6,
390
- marginBottom: 8
391
- },
392
- children: [f && /* @__PURE__ */ Z("div", {
393
- style: {
394
- flex: 1,
395
- maxWidth: 220
396
- },
397
- children: /* @__PURE__ */ Z(s, {
398
- value: o,
399
- onChange: c,
400
- placeholder: "Search…",
401
- prefix: /* @__PURE__ */ Z(e.search, { size: 12 })
402
- })
403
- }), p && i.map((e) => {
404
- let r = t.fields.get(e);
405
- if (!r) return null;
406
- let i = l[e] ?? "__all__", o = n(r, e, d);
407
- if (r.type === "ref" && r.ref?.entity) return /* @__PURE__ */ Z(Te, {
408
- field: r,
409
- label: o,
410
- value: i,
411
- onChange: (t) => u(e, t)
412
- }, e);
413
- if (!r.values) return null;
414
- let s = [{
415
- value: "__all__",
416
- label: `All ${o}`
417
- }, ...r.values.map((e) => ({
418
- value: e.code,
419
- label: z(e.name) || e.code
420
- }))];
421
- return /* @__PURE__ */ Z("div", {
422
- style: { width: 160 },
423
- children: /* @__PURE__ */ Z(a, {
424
- value: i,
425
- options: s,
426
- onChange: (t) => u(e, t),
427
- placeholder: o
428
- })
429
- }, e);
430
- })]
431
- });
432
- }
433
- function Te({ field: e, label: t, value: n, onChange: r }) {
434
- let i = A(e.ref?.entity), o = e.display?.ref_display_field ?? i?.display?.display_field, s = J(() => i ? [...i.fields].find(([, e]) => e.primary)?.[0] ?? "id" : "id", [i]), { data: c } = ee(e.ref?.entity, {
435
- per_page: 200,
436
- sort: o ? `${o}:asc` : void 0
437
- }), u = c?.data ?? [], d = (e) => {
438
- if (e == null) return "—";
439
- if (typeof e == "object" && !Array.isArray(e)) {
440
- let t = Object.values(e)[0];
441
- return t == null ? "—" : L(t);
442
- }
443
- return L(e);
444
- }, f = [{
445
- value: "__all__",
446
- label: `All ${t}`
447
- }, ...u.map((e) => {
448
- let t = String(e[s]), n = e[l];
449
- return {
450
- value: t,
451
- label: typeof n == "string" && n !== "" ? n : o ? d(e[o] ?? t) : t
452
- };
453
- })];
454
- return /* @__PURE__ */ Z("div", {
455
- style: { width: 160 },
456
- children: /* @__PURE__ */ Z(a, {
457
- value: n,
458
- options: f,
459
- onChange: r,
460
- placeholder: t
461
- })
462
- });
463
- }
464
- //#endregion
465
- //#region src/components/detail-layout/AssociatedBlock.tsx
466
- function Ee(e) {
467
- if (!e) return [];
468
- let t = [];
469
- for (let [n, r] of Object.entries(e)) (r.visibility ?? []).includes("list_row") && (r.association || S(n) || t.push({
470
- code: n,
471
- action: r
472
- }));
473
- return t;
474
- }
475
- function De(e, t, n) {
476
- if (!e) return [];
477
- let r = [];
478
- for (let [i, a] of Object.entries(e)) {
479
- if (!(a.visibility ?? []).includes("list_toolbar") || a.association || i.startsWith("__")) continue;
480
- let e = {
481
- ...a,
482
- resolved_hidden_defaults: {
483
- ...a.resolved_hidden_defaults ?? {},
484
- [t]: n
485
- }
486
- };
487
- if (a.resolved_params?.has(t)) {
488
- let n = a.resolved_params.items().filter((e) => e.name !== t);
489
- e = {
490
- ...e,
491
- resolved_params: new j(n)
492
- };
493
- }
494
- r.push({
495
- code: i,
496
- action: e
497
- });
498
- }
499
- return r;
500
- }
501
- function Oe(e, t, n) {
502
- let r = e[n];
503
- if (!r) return null;
504
- let i = e[t], a = i?.children?.find((e) => e.entity === n);
505
- if (a) {
506
- let e = a.foreign_key;
507
- if (typeof e == "string") return e;
508
- if (Array.isArray(e) && e.length === 1) return e[0];
509
- }
510
- let o = i?.table;
511
- for (let [n, i] of r.fields) {
512
- let r = i.ref?.entity;
513
- if (r) {
514
- if (r === t) return n;
515
- if (o) {
516
- let t = e[r]?.table;
517
- if (t && t === o) return n;
518
- }
519
- }
520
- }
521
- return null;
522
- }
523
- function ke(e, t, n) {
524
- let r = new Set(V(e));
525
- return new Set(t.filter((t) => {
526
- if (t === n || r.has(t)) return !1;
527
- let i = e.fields.get(t);
528
- return !(!i || i.auto || i.primary || i.source);
529
- }));
530
- }
531
- function Ae(e, t, n) {
532
- return new Set(t.filter((t) => {
533
- if (t === n) return !1;
534
- let r = e.fields.get(t);
535
- return !(!r || r.auto);
536
- }));
537
- }
538
- function je(e, t, n, r) {
539
- let i = [];
540
- for (let a of t) {
541
- let t = n.fields.get(a);
542
- if (!t || !t.required || t.auto || t.primary || a === r || n.tenant_key && a === n.tenant_key) continue;
543
- let o = e[a];
544
- (o == null || o === "") && i.push(a);
545
- }
546
- return i;
547
- }
548
- function Me({ node: e, ctx: t }) {
549
- let n = e.associated;
550
- if (!n || t.isNew) return null;
551
- let r = t.schema.entities[n];
552
- if (!r) return /* @__PURE__ */ Q("div", {
553
- style: {
554
- fontSize: 12.5,
555
- color: "var(--text-3)",
556
- padding: "8px 0"
557
- },
558
- children: ["Entity not found: ", n]
559
- });
560
- let i = Oe(t.schema.entities, t.entityCode, n);
561
- return i ? /* @__PURE__ */ Z(Ne, {
562
- node: e,
563
- ctx: t,
564
- assocCode: n,
565
- assocEntity: r,
566
- fkField: i
567
- }) : /* @__PURE__ */ Q("div", {
568
- style: {
569
- fontSize: 12.5,
570
- color: "var(--text-3)",
571
- padding: "8px 0"
572
- },
573
- children: [
574
- "No FK found for ",
575
- n,
576
- " → ",
577
- t.entityCode
578
- ]
579
- });
580
- }
581
- function Ne({ node: n, ctx: r, assocCode: i, assocEntity: a, fkField: o }) {
582
- let s = n.columns && n.columns.length > 0 ? n.columns.filter((e) => e !== o && !!a.fields.get(e)) : a.fields.names().filter((e) => {
583
- if (e === o) return !1;
584
- let t = a.fields.get(e);
585
- return !(!t || t.primary || t.display?.is_listable === !1);
586
- }), c = T(a, "update"), l = n.interaction ?? (c ? "navigate" : "readonly"), d = (l === "inline_edit" || l === "row_edit") && c && n.editable !== !1, f = z(a.display?.name_plural) || z(a.display?.name) || i, p = n.searchable === !0 || n.filters && n.filters.length > 0, m = J(() => De(a.actions, o, r.recordId), [
587
- a.actions,
588
- o,
589
- r.recordId
590
- ]), h = J(() => {
591
- let e = {};
592
- for (let { code: t, action: n } of m) e[t] = n;
593
- return e;
594
- }, [m]), g = J(() => {
595
- let e = a.action_layout ?? null;
596
- return y(e ?? u(h, "list_toolbar"), h, void 0, {}, []);
597
- }, [a.action_layout, h]), { run: _ } = M(), v = te(), x = k(), S = J(() => ({
598
- entity: a,
599
- entityCode: i,
600
- screenRoute: typeof window < "u" ? window.location.pathname : "",
601
- selectedRows: [],
602
- selectedIds: [],
603
- locale: x,
604
- tabNavigate: (e, t) => v(e, {
605
- title: t?.title,
606
- icon: t?.icon,
607
- search: t?.search
608
- }),
609
- runActionApi: (e, t) => O(e, t)
610
- }), [
611
- a,
612
- i,
613
- x,
614
- v
615
- ]), w = pe(), E = q(() => {
616
- w.invalidateQueries({ predicate: (e) => {
617
- let t = e.queryKey;
618
- return t[0] === "entity-children" && t[3] === i;
619
- } });
620
- }, [w, i]), D = q((e, t) => {
621
- let n = ae(e, t, {}, i);
622
- if (n !== null) return _({
623
- action: t,
624
- title: z(t.display?.name) || e,
625
- execute: async (e) => {
626
- let t = await O(n, C(e, void 0));
627
- return E(), t;
628
- }
629
- });
630
- }, [
631
- _,
632
- i,
633
- E
634
- ]), [A, j] = X(0), N = /* @__PURE__ */ Q("div", {
635
- style: {
636
- display: "flex",
637
- alignItems: "center",
638
- gap: 6,
639
- flex: "1 1 auto",
640
- minWidth: 0,
641
- justifyContent: "flex-end"
642
- },
643
- children: [a.action_layout ? g.length > 0 && /* @__PURE__ */ Z(ne, {
644
- kind: "toolbar",
645
- layout: g,
646
- entityActions: h,
647
- onRun: D,
648
- widgetContext: S,
649
- ariaLabel: `${f} toolbar actions`
650
- }) : m.map(({ code: e, action: t }) => /* @__PURE__ */ Z(Se, {
651
- actionCode: e,
652
- action: t,
653
- entityCode: i,
654
- variant: "ghost",
655
- size: "sm",
656
- onSuccess: E
657
- }, e)), d && /* @__PURE__ */ Z(b, {
658
- kind: "ghost",
659
- size: "xs",
660
- icon: /* @__PURE__ */ Z(e.plus, { size: 12 }),
661
- onClick: () => j((e) => e + 1),
662
- children: "Add row"
663
- })]
664
- }), P = p ? /* @__PURE__ */ Z(Fe, {
665
- entityCode: i,
666
- entity: a,
667
- parentEntity: r.entityCode,
668
- parentId: r.recordId,
669
- foreignKey: o,
670
- columns: s,
671
- editable: d,
672
- interaction: l,
673
- ctx: r,
674
- searchable: n.searchable,
675
- filterFields: n.filters,
676
- sort: n.sort,
677
- startDraftSignal: A
678
- }) : /* @__PURE__ */ Z(Pe, {
679
- entityCode: i,
680
- entity: a,
681
- parentEntity: r.entityCode,
682
- parentId: r.recordId,
683
- foreignKey: o,
684
- columns: s,
685
- editable: d,
686
- interaction: l,
687
- ctx: r,
688
- sort: n.sort,
689
- startDraftSignal: A
690
- });
691
- return r.withinCard ? /* @__PURE__ */ Q("div", { children: [/* @__PURE__ */ Z("div", {
692
- style: {
693
- display: "flex",
694
- justifyContent: "flex-end",
695
- marginBottom: 8
696
- },
697
- children: N
698
- }), P] }) : /* @__PURE__ */ Z(_e, {
699
- title: f,
700
- icon: a.display?.icon ? /* @__PURE__ */ Z(t, {
701
- name: a.display.icon,
702
- size: 14
703
- }) : void 0,
704
- right: N,
705
- children: P
706
- });
707
- }
708
- function Pe({ entityCode: e, entity: t, parentEntity: n, parentId: r, foreignKey: i, columns: a, editable: s, interaction: c, ctx: l, sort: u, startDraftSignal: d }) {
709
- let f = pe(), { data: m, isLoading: h, isError: g } = p(n, r, e, i, u), _ = m?.data ?? [], v = m?.$refs, y = q(() => {
710
- f.invalidateQueries({ queryKey: [
711
- o,
712
- n,
713
- r,
714
- e
715
- ] });
716
- }, [
717
- f,
718
- n,
719
- r,
720
- e
721
- ]);
722
- return /* @__PURE__ */ Z(Ie, {
723
- entityCode: e,
724
- entity: t,
725
- parentId: r,
726
- foreignKey: i,
727
- columns: a,
728
- editable: s,
729
- interaction: c,
730
- ctx: l,
731
- rows: _,
732
- refs: v,
733
- isLoading: h,
734
- isError: g,
735
- invalidateQuery: y,
736
- startDraftSignal: d
737
- });
738
- }
739
- function Fe({ entityCode: e, entity: t, parentEntity: n, parentId: r, foreignKey: i, columns: a, editable: o, interaction: s, ctx: c, searchable: l, filterFields: u, sort: d, startDraftSignal: f }) {
740
- let p = pe(), [h, g] = X(""), [_, v] = X(""), [y, x] = X({}), S = Y(void 0);
741
- le(() => (S.current && clearTimeout(S.current), S.current = setTimeout(() => {
742
- v(h);
743
- }, 300), () => {
744
- S.current && clearTimeout(S.current);
745
- }), [h]);
746
- let C = q((e, t) => {
747
- x((n) => {
748
- if (t === "__all__") {
749
- let { [e]: t, ...r } = n;
750
- return r;
751
- }
752
- return {
753
- ...n,
754
- [e]: t
755
- };
756
- });
757
- }, []), w = J(() => Object.keys(y).length > 0 ? y : void 0, [y]), { data: T, isLoading: E, isError: D, hasNextPage: O, fetchNextPage: k, isFetchingNextPage: A } = xe(n, r, e, i, d, void 0, _ || void 0, w), { rows: j, refs: M } = J(() => {
758
- if (!T?.pages) return {
759
- rows: [],
760
- refs: void 0
761
- };
762
- let e = [], t;
763
- for (let n of T.pages) if (e.push(...n.data), n.$refs) {
764
- if (!t) t = { ...n.$refs };
765
- else for (let [e, r] of Object.entries(n.$refs)) t[e] = {
766
- ...t[e],
767
- ...r
768
- };
769
- }
770
- return {
771
- rows: e,
772
- refs: t
773
- };
774
- }, [T]), N = q(() => {
775
- p.invalidateQueries({ predicate: (t) => {
776
- let n = t.queryKey;
777
- return n[0] === "entity-children" && n[3] === e;
778
- } });
779
- }, [p, e]);
780
- return /* @__PURE__ */ Q("div", { children: [
781
- /* @__PURE__ */ Z(we, {
782
- entity: t,
783
- searchable: l,
784
- filterFields: u,
785
- searchValue: h,
786
- onSearchChange: g,
787
- filters: y,
788
- onFilterChange: C,
789
- allEntities: c.schema.entities
790
- }),
791
- /* @__PURE__ */ Z(Ie, {
792
- entityCode: e,
793
- entity: t,
794
- parentId: r,
795
- foreignKey: i,
796
- columns: a,
797
- editable: o,
798
- interaction: s,
799
- ctx: c,
800
- rows: j,
801
- refs: M,
802
- isLoading: E,
803
- isError: D,
804
- invalidateQuery: N,
805
- startDraftSignal: f
806
- }),
807
- O && /* @__PURE__ */ Z("div", {
808
- style: { marginTop: 4 },
809
- children: /* @__PURE__ */ Z(b, {
810
- kind: "ghost",
811
- size: "xs",
812
- icon: A ? /* @__PURE__ */ Z(m, { size: 12 }) : void 0,
813
- onClick: () => k(),
814
- disabled: A,
815
- children: "Load more"
816
- })
817
- })
818
- ] });
819
- }
820
- function Ie({ entityCode: e, entity: t, parentId: i, foreignKey: a, columns: o, editable: s, interaction: c, ctx: l, rows: u, refs: d, isLoading: p, isError: m, invalidateQuery: h, startDraftSignal: g }) {
821
- let y = f(), b = y.isPhone && l.relatedRecordsPresentation === "table", x = o.find((e) => e !== a), S = J(() => c === "navigate" ? D(void 0, t, l.schema.screens) : null, [
822
- c,
823
- t,
824
- l.schema.screens
825
- ]), C = J(() => s ? ke(t, o, a) : /* @__PURE__ */ new Set(), [
826
- o,
827
- a,
828
- t,
829
- s
830
- ]), w = J(() => Ae(t, o, a), [
831
- o,
832
- a,
833
- t
834
- ]), T = J(() => {
835
- let e = /* @__PURE__ */ new Map();
836
- for (let n of u) {
837
- let i = _(t, n);
838
- e.set(r(i), i);
839
- }
840
- return e;
841
- }, [u, t]), O = J(() => {
842
- let e = /* @__PURE__ */ new Map();
843
- for (let n of u) {
844
- let i = n.$row_version;
845
- typeof i == "string" && i !== "" && e.set(r(_(t, n)), i);
846
- }
847
- return e;
848
- }, [u, t]), k = J(() => Ee(t.actions), [t.actions]), [A, j] = X(null), [N, P] = X(null), [F, L] = X([]), [R, B] = X({}), V = Y(R);
849
- V.current = R;
850
- let H = Y({});
851
- le(() => {
852
- let e = H.current;
853
- return () => {
854
- for (let t of Object.values(e)) clearTimeout(t);
855
- };
856
- }, []);
857
- let [U, W] = X(null), [ee, G] = X([]), [te, ne] = X(!1), { run: re } = M(), [ie, ae] = X(/* @__PURE__ */ new Set()), K = q(async (t, n, r) => {
858
- B((e) => ({
859
- ...e,
860
- [t]: {
861
- ...e[t],
862
- saving: !0,
863
- error: void 0
864
- }
865
- }));
866
- try {
867
- let i = O.get(t), a = i ? {
868
- ...n,
869
- $row_version: i
870
- } : n;
871
- return await I(e, T.get(t) ?? t, a), B((e) => {
872
- let n = e[t];
873
- if (!n) return e;
874
- if (n.ver > r) return {
875
- ...e,
876
- [t]: {
877
- ...n,
878
- saving: !1
879
- }
880
- };
881
- let { [t]: i, ...a } = e;
882
- return a;
883
- }), h(), !0;
884
- } catch (e) {
885
- let n = e instanceof Error ? e.message : "Save failed";
886
- return B((e) => ({
887
- ...e,
888
- [t]: {
889
- ...e[t],
890
- saving: !1,
891
- error: n
892
- }
893
- })), !1;
894
- }
895
- }, [
896
- e,
897
- h,
898
- T,
899
- O
900
- ]), ce = q((e, t, n) => {
901
- B((r) => {
902
- let i = r[e] ?? {
903
- buffer: {},
904
- ver: 0,
905
- saving: !1
906
- }, a = i.ver + 1;
907
- return {
908
- ...r,
909
- [e]: {
910
- ...i,
911
- buffer: {
912
- ...i.buffer,
913
- [t]: n
914
- },
915
- ver: a
916
- }
917
- };
918
- }), c === "inline_edit" && (H.current[e] && clearTimeout(H.current[e]), H.current[e] = setTimeout(() => {
919
- let t = V.current[e];
920
- t && Object.keys(t.buffer).length > 0 && K(e, { ...t.buffer }, t.ver);
921
- }, 500));
922
- }, [K, c]), ue = q(() => {
923
- let e = {};
924
- e[a] = i;
925
- for (let n of o) {
926
- let r = t.fields.get(n);
927
- r && (r.default === void 0 ? r.type === "bool" && (e[n] = !1) : e[n] = r.default);
928
- }
929
- W(e), G([]);
930
- }, [
931
- a,
932
- i,
933
- o,
934
- t.fields
935
- ]), de = Y(g);
936
- le(() => {
937
- g !== void 0 && g !== de.current && (de.current = g, !U && ue());
938
- }, [
939
- g,
940
- U,
941
- ue
942
- ]);
943
- let fe = q(async () => {
944
- if (!U) return;
945
- let n = je(U, o, t, a);
946
- if (n.length > 0) {
947
- G(n);
948
- return;
949
- }
950
- ne(!0);
951
- try {
952
- await E(e, U), W(null), G([]), h();
953
- } catch (e) {
954
- let t = e instanceof Error ? e.message : "Create failed";
955
- G([`_error:${t}`]);
956
- } finally {
957
- ne(!1);
958
- }
959
- }, [
960
- U,
961
- o,
962
- t,
963
- a,
964
- e,
965
- h
966
- ]), pe = q((e) => {
967
- B({}), L([]), P(e);
968
- }, []), me = q(async (e) => {
969
- let n = V.current[e], i = n?.buffer ?? {};
970
- if (Object.keys(i).length === 0) {
971
- P(null), L([]);
972
- return;
973
- }
974
- let s = je({
975
- ...u.find((n) => r(_(t, n)) === e) ?? {},
976
- ...i
977
- }, o, t, a);
978
- if (s.length > 0) {
979
- L(s);
980
- return;
981
- }
982
- await K(e, { ...i }, n?.ver ?? 0) && (P(null), L([]));
983
- }, [
984
- u,
985
- t,
986
- o,
987
- a,
988
- K
989
- ]), he = q((e) => {
990
- B((t) => {
991
- if (!t[e]) return t;
992
- let { [e]: n, ...r } = t;
993
- return r;
994
- }), L([]), P(null);
995
- }, []), ge = q((n, r) => {
996
- let i = T.get(n) ?? n;
997
- return re({
998
- action: t.actions?.__delete,
999
- destructive: !0,
1000
- title: z(t.display?.name) || "Delete",
1001
- row: r,
1002
- entity: e,
1003
- execute: async () => {
1004
- ae((e) => new Set(e).add(n));
1005
- try {
1006
- return await v(e, i);
1007
- } finally {
1008
- ae((e) => {
1009
- let t = new Set(e);
1010
- return t.delete(n), t;
1011
- });
1012
- }
1013
- },
1014
- onSuccess: () => h()
1015
- });
1016
- }, [
1017
- re,
1018
- t,
1019
- e,
1020
- h,
1021
- T
1022
- ]);
1023
- if (m) return /* @__PURE__ */ Z("div", {
1024
- style: {
1025
- fontSize: 12.5,
1026
- color: "var(--danger)",
1027
- padding: "8px 0"
1028
- },
1029
- children: "Failed to load."
1030
- });
1031
- if (p) return /* @__PURE__ */ Q("div", {
1032
- style: {
1033
- display: "flex",
1034
- flexDirection: "column",
1035
- gap: 8,
1036
- padding: "8px 0"
1037
- },
1038
- children: [/* @__PURE__ */ Z("div", { style: {
1039
- height: 32,
1040
- background: "var(--surface-3)",
1041
- borderRadius: 6
1042
- } }), /* @__PURE__ */ Z("div", { style: {
1043
- height: 32,
1044
- background: "var(--surface-3)",
1045
- borderRadius: 6
1046
- } })]
1047
- });
1048
- let $ = u.length === 0 && !U;
1049
- return y.isPhone && !b ? /* @__PURE__ */ Q("div", { children: [$ && !s && /* @__PURE__ */ Z("div", {
1050
- style: {
1051
- fontSize: 12.5,
1052
- color: "var(--text-3)",
1053
- padding: "12px 0"
1054
- },
1055
- children: "No records yet."
1056
- }), (!$ || s) && /* @__PURE__ */ Q("div", {
1057
- style: {
1058
- display: "flex",
1059
- flexDirection: "column",
1060
- gap: 10
1061
- },
1062
- children: [u.map((n) => {
1063
- let i = r(_(t, n)), a = ie.has(i), u = R[i], f = S && i ? S.replace(/:\w+/, i) : void 0;
1064
- return /* @__PURE__ */ Z(Le, {
1065
- rowId: i,
1066
- row: n,
1067
- entity: t,
1068
- entities: l.schema.entities,
1069
- screens: l.schema.screens,
1070
- columns: o,
1071
- editableColumns: C,
1072
- editable: s,
1073
- interaction: c,
1074
- isEditing: N === i,
1075
- editErrors: F,
1076
- isDeleting: a,
1077
- activeCell: A,
1078
- setActiveCell: j,
1079
- rowState: u,
1080
- onCellChange: ce,
1081
- onDeleteClick: (e) => void ge(e, n),
1082
- onStartEdit: pe,
1083
- onConfirmEdit: me,
1084
- onCancelEdit: he,
1085
- refs: d,
1086
- identityCol: x,
1087
- href: f,
1088
- rowActions: k,
1089
- entityCode: e,
1090
- onRowActionSuccess: h
1091
- }, i);
1092
- }), U && /* @__PURE__ */ Z(He, {
1093
- draftRow: U,
1094
- entity: t,
1095
- columns: o,
1096
- editableColumns: w,
1097
- foreignKey: a,
1098
- draftErrors: ee,
1099
- draftSaving: te,
1100
- onChange: (e, t) => W((n) => n && {
1101
- ...n,
1102
- [e]: t
1103
- }),
1104
- onConfirm: fe,
1105
- onCancel: () => {
1106
- W(null), G([]);
1107
- },
1108
- refs: d
1109
- })]
1110
- })] }) : /* @__PURE__ */ Q("div", { children: [$ && !s && /* @__PURE__ */ Z("div", {
1111
- style: {
1112
- fontSize: 12.5,
1113
- color: "var(--text-3)",
1114
- padding: "12px 0"
1115
- },
1116
- children: "No records yet."
1117
- }), (!$ || s) && /* @__PURE__ */ Z("div", {
1118
- style: { overflowX: "auto" },
1119
- children: /* @__PURE__ */ Q("table", {
1120
- style: se,
1121
- children: [/* @__PURE__ */ Z("thead", { children: /* @__PURE__ */ Q("tr", { children: [
1122
- o.map((e) => {
1123
- let r = t.fields.get(e);
1124
- return /* @__PURE__ */ Z("th", {
1125
- style: oe,
1126
- children: r ? n(r, e, l.schema.entities) : e
1127
- }, e);
1128
- }),
1129
- s && /* @__PURE__ */ Z("th", { style: {
1130
- height: 30,
1131
- width: 72
1132
- } }),
1133
- !s && k.length > 0 && /* @__PURE__ */ Z("th", { style: {
1134
- height: 30,
1135
- width: 40
1136
- } })
1137
- ] }) }), /* @__PURE__ */ Q("tbody", { children: [u.map((n) => {
1138
- let i = r(_(t, n)), a = ie.has(i), u = R[i], f = S && i ? S.replace(/:\w+/, i) : void 0;
1139
- return /* @__PURE__ */ Z(Re, {
1140
- rowId: i,
1141
- row: n,
1142
- entity: t,
1143
- entities: l.schema.entities,
1144
- screens: l.schema.screens,
1145
- columns: o,
1146
- editableColumns: C,
1147
- editable: s,
1148
- interaction: c,
1149
- isEditing: N === i,
1150
- editErrors: F,
1151
- isDeleting: a,
1152
- activeCell: A,
1153
- setActiveCell: j,
1154
- rowState: u,
1155
- onCellChange: ce,
1156
- onDeleteClick: (e) => void ge(e, n),
1157
- onStartEdit: pe,
1158
- onConfirmEdit: me,
1159
- onCancelEdit: he,
1160
- refs: d,
1161
- identityCol: x,
1162
- href: f,
1163
- rowActions: k,
1164
- entityCode: e,
1165
- onRowActionSuccess: h
1166
- }, i);
1167
- }), U && /* @__PURE__ */ Z(Ve, {
1168
- draftRow: U,
1169
- entity: t,
1170
- columns: o,
1171
- editableColumns: w,
1172
- foreignKey: a,
1173
- draftErrors: ee,
1174
- draftSaving: te,
1175
- onChange: (e, t) => W((n) => n && {
1176
- ...n,
1177
- [e]: t
1178
- }),
1179
- onConfirm: fe,
1180
- onCancel: () => {
1181
- W(null), G([]);
1182
- },
1183
- refs: d
1184
- })] })]
1185
- })
1186
- })] });
1187
- }
1188
- function Le({ rowId: t, row: r, entity: a, entities: o, screens: s, columns: c, editableColumns: l, editable: u, interaction: d, isEditing: f, editErrors: p, isDeleting: h, rowState: g, onCellChange: _, onDeleteClick: v, onStartEdit: y, onConfirmEdit: b, onCancelEdit: x, refs: S, identityCol: C, href: w, rowActions: T, onRowActionSuccess: E }) {
1189
- let D = k(), O = ue(), A = J(() => !g || Object.keys(g.buffer).length === 0 ? r : {
1190
- ...r,
1191
- ...g.buffer
1192
- }, [r, g]);
1193
- if (d === "row_edit" && f) {
1194
- let e = g?.error ? [...p, `_error:${g.error}`] : p;
1195
- return /* @__PURE__ */ Z(Be, {
1196
- values: A,
1197
- entity: a,
1198
- columns: c,
1199
- editableColumns: l,
1200
- errors: e,
1201
- saving: g?.saving ?? !1,
1202
- onChange: (e, n) => _(t, e, n),
1203
- onConfirm: () => b(t),
1204
- onCancel: () => x(t),
1205
- refs: S
1206
- });
1207
- }
1208
- return /* @__PURE__ */ Q("div", {
1209
- style: {
1210
- border: "1px solid var(--border)",
1211
- borderRadius: 8,
1212
- background: "var(--surface)",
1213
- opacity: h ? .58 : 1,
1214
- overflow: "hidden"
1215
- },
1216
- children: [/* @__PURE__ */ Z("div", {
1217
- style: {
1218
- padding: 10,
1219
- display: "flex",
1220
- flexDirection: "column",
1221
- gap: 12
1222
- },
1223
- children: c.map((e) => {
1224
- let r = a.fields.get(e), i = u && d === "inline_edit" && l.has(e), c = w && e === C, f = r ? n(r, e, o) : e, p = `${O}-${t}-${e}`, m = `${p}-label`, h = {
1225
- fontSize: 11.5,
1226
- fontWeight: 600,
1227
- color: "var(--text-3)"
1228
- }, g = r ? H({
1229
- field: r,
1230
- fieldName: e,
1231
- value: A[e],
1232
- mode: i ? "edit" : "display",
1233
- onChange: i ? (n) => _(t, e, n) : void 0,
1234
- record: A,
1235
- refs: S,
1236
- compact: i,
1237
- entity: a,
1238
- entities: o,
1239
- screens: c ? void 0 : s,
1240
- fieldId: p,
1241
- labelId: m,
1242
- locale: D
1243
- }) : L(A[e]);
1244
- return /* @__PURE__ */ Q("div", {
1245
- style: {
1246
- display: "flex",
1247
- flexDirection: "column",
1248
- gap: 5,
1249
- minWidth: 0
1250
- },
1251
- children: [i && r ? /* @__PURE__ */ Z("label", {
1252
- id: m,
1253
- htmlFor: p,
1254
- style: h,
1255
- children: f
1256
- }) : /* @__PURE__ */ Z("div", {
1257
- id: m,
1258
- style: h,
1259
- children: f
1260
- }), /* @__PURE__ */ Z("div", {
1261
- style: { minWidth: 0 },
1262
- children: c && !i ? /* @__PURE__ */ Z("a", {
1263
- href: w,
1264
- style: {
1265
- color: "var(--accent)",
1266
- textDecoration: "none",
1267
- fontWeight: 500
1268
- },
1269
- children: g
1270
- }) : g
1271
- })]
1272
- }, e);
1273
- })
1274
- }), (u || T && T.length > 0) && /* @__PURE__ */ Q("div", {
1275
- style: {
1276
- minHeight: 42,
1277
- padding: "6px 8px",
1278
- borderTop: "1px solid var(--divider)",
1279
- display: "flex",
1280
- alignItems: "center",
1281
- justifyContent: "flex-end",
1282
- gap: 6
1283
- },
1284
- children: [u && /* @__PURE__ */ Q(me, { children: [
1285
- g?.saving && /* @__PURE__ */ Z(m, { size: 12 }),
1286
- g?.error && /* @__PURE__ */ Z("span", {
1287
- style: {
1288
- fontSize: 11,
1289
- color: "var(--danger)"
1290
- },
1291
- title: g.error,
1292
- children: "!"
1293
- }),
1294
- d === "row_edit" && /* @__PURE__ */ Z(i, {
1295
- size: 32,
1296
- icon: /* @__PURE__ */ Z(e.edit, { size: 14 }),
1297
- onClick: () => y(t),
1298
- title: "Edit row"
1299
- }),
1300
- /* @__PURE__ */ Z(i, {
1301
- size: 32,
1302
- icon: /* @__PURE__ */ Z(e.trash, { size: 14 }),
1303
- onClick: () => v(t),
1304
- title: "Delete row"
1305
- })
1306
- ] }), !u && T && T.length > 0 && /* @__PURE__ */ Z(Ce, {
1307
- entity: a,
1308
- actions: T,
1309
- objectIds: [t],
1310
- row: A,
1311
- onSuccess: E
1312
- })]
1313
- })]
1314
- });
1315
- }
1316
- function Re({ rowId: t, row: n, entity: r, entities: a, screens: o, columns: s, editableColumns: c, editable: l, interaction: u, isEditing: d, editErrors: f, isDeleting: p, activeCell: h, setActiveCell: g, rowState: _, onCellChange: v, onDeleteClick: y, onStartEdit: b, onConfirmEdit: x, onCancelEdit: S, refs: C, identityCol: w, href: T, rowActions: E, onRowActionSuccess: D }) {
1317
- let O = k(), A = J(() => !_ || Object.keys(_.buffer).length === 0 ? n : {
1318
- ...n,
1319
- ..._.buffer
1320
- }, [n, _]);
1321
- if (u === "row_edit" && d) {
1322
- let e = _?.error ? [...f, `_error:${_.error}`] : f;
1323
- return /* @__PURE__ */ Z(ze, {
1324
- values: A,
1325
- entity: r,
1326
- columns: s,
1327
- editableColumns: c,
1328
- errors: e,
1329
- saving: _?.saving ?? !1,
1330
- onChange: (e, n) => v(t, e, n),
1331
- onConfirm: () => x(t),
1332
- onCancel: () => S(t),
1333
- refs: C
1334
- });
1335
- }
1336
- let j = K, M = {
1337
- padding: "4px 4px",
1338
- borderBottom: "1px solid var(--divider)",
1339
- verticalAlign: "middle"
1340
- }, N = u === "inline_edit";
1341
- return /* @__PURE__ */ Q("tr", {
1342
- style: { opacity: p ? .5 : 1 },
1343
- children: [
1344
- s.map((e) => {
1345
- let n = r.fields.get(e), i = c.has(e);
1346
- if (N && h?.rowId === t && h?.col === e && i) return /* @__PURE__ */ Z("td", {
1347
- style: M,
1348
- children: n ? H({
1349
- field: n,
1350
- fieldName: e,
1351
- value: A[e],
1352
- mode: "edit",
1353
- onChange: (n) => v(t, e, n),
1354
- record: A,
1355
- refs: C,
1356
- compact: !0,
1357
- locale: O
1358
- }) : L(A[e])
1359
- }, e);
1360
- let s = T && e === w, l = n ? H({
1361
- field: n,
1362
- fieldName: e,
1363
- value: A[e],
1364
- mode: "display",
1365
- record: A,
1366
- refs: C,
1367
- entity: r,
1368
- entities: a,
1369
- screens: s ? void 0 : o,
1370
- locale: O
1371
- }) : L(A[e]), u = N && i && !p;
1372
- return /* @__PURE__ */ Z("td", {
1373
- style: {
1374
- ...j,
1375
- cursor: u ? "pointer" : "default"
1376
- },
1377
- onClick: u ? () => g({
1378
- rowId: t,
1379
- col: e
1380
- }) : void 0,
1381
- children: s ? /* @__PURE__ */ Z("a", {
1382
- href: T,
1383
- style: {
1384
- color: "var(--accent)",
1385
- textDecoration: "none",
1386
- fontWeight: 500
1387
- },
1388
- onMouseEnter: (e) => e.currentTarget.style.textDecoration = "underline",
1389
- onMouseLeave: (e) => e.currentTarget.style.textDecoration = "none",
1390
- children: l
1391
- }) : l
1392
- }, e);
1393
- }),
1394
- l && /* @__PURE__ */ Z("td", {
1395
- style: {
1396
- padding: "4px 8px",
1397
- borderBottom: "1px solid var(--divider)",
1398
- verticalAlign: "middle"
1399
- },
1400
- children: /* @__PURE__ */ Q("div", {
1401
- style: {
1402
- display: "flex",
1403
- alignItems: "center",
1404
- gap: 4
1405
- },
1406
- children: [
1407
- _?.saving && /* @__PURE__ */ Z(m, { size: 12 }),
1408
- _?.error && /* @__PURE__ */ Z("span", {
1409
- style: {
1410
- fontSize: 11,
1411
- color: "var(--danger)"
1412
- },
1413
- title: _.error,
1414
- children: "!"
1415
- }),
1416
- u === "row_edit" && /* @__PURE__ */ Z(i, {
1417
- size: 24,
1418
- icon: /* @__PURE__ */ Z(e.edit, { size: 12 }),
1419
- onClick: () => b(t),
1420
- title: "Edit row"
1421
- }),
1422
- /* @__PURE__ */ Z(i, {
1423
- size: 24,
1424
- icon: /* @__PURE__ */ Z(e.trash, { size: 12 }),
1425
- onClick: () => y(t),
1426
- title: "Delete row"
1427
- })
1428
- ]
1429
- })
1430
- }),
1431
- !l && E && E.length > 0 && /* @__PURE__ */ Z("td", {
1432
- style: {
1433
- padding: "4px 8px",
1434
- borderBottom: "1px solid var(--divider)",
1435
- verticalAlign: "middle"
1436
- },
1437
- children: /* @__PURE__ */ Z(Ce, {
1438
- entity: r,
1439
- actions: E,
1440
- objectIds: [t],
1441
- row: A,
1442
- onSuccess: D
1443
- })
1444
- })
1445
- ]
1446
- });
1447
- }
1448
- function ze({ values: t, entity: n, columns: r, editableColumns: a, errors: o, saving: s, onChange: c, onConfirm: l, onCancel: u, refs: d, accent: f }) {
1449
- let p = k(), h = o.find((e) => e.startsWith("_error:")), g = new Set(o.filter((e) => !e.startsWith("_error:"))), _ = {
1450
- padding: "6px 12px",
1451
- borderBottom: "1px solid var(--divider)",
1452
- verticalAlign: "middle",
1453
- height: 40,
1454
- minWidth: 0
1455
- }, v = {
1456
- display: "block",
1457
- width: "100%",
1458
- maxWidth: "100%",
1459
- minWidth: 0
1460
- };
1461
- return /* @__PURE__ */ Q("tr", {
1462
- style: f ? { boxShadow: "inset 3px 0 0 var(--accent)" } : void 0,
1463
- onKeyDown: (e) => {
1464
- e.key === "Enter" && !e.shiftKey ? (e.preventDefault(), l()) : e.key === "Escape" && (e.preventDefault(), u());
1465
- },
1466
- children: [r.map((e) => {
1467
- let r = n.fields.get(e), i = a.has(e), o = g.has(e);
1468
- return i ? /* @__PURE__ */ Z("td", {
1469
- style: {
1470
- ..._,
1471
- outline: o ? "1px solid var(--danger)" : "none",
1472
- outlineOffset: -1
1473
- },
1474
- title: o ? `${e} is required` : void 0,
1475
- children: /* @__PURE__ */ Z("div", {
1476
- style: v,
1477
- children: r ? H({
1478
- field: r,
1479
- fieldName: e,
1480
- value: t[e],
1481
- mode: "edit",
1482
- onChange: (t) => c(e, t),
1483
- record: t,
1484
- refs: d,
1485
- compact: !0,
1486
- locale: p
1487
- }) : L(t[e])
1488
- })
1489
- }, e) : /* @__PURE__ */ Z("td", {
1490
- style: {
1491
- ..._,
1492
- color: "var(--text-3)"
1493
- },
1494
- children: r?.auto ? "—" : L(t[e])
1495
- }, e);
1496
- }), /* @__PURE__ */ Z("td", {
1497
- style: _,
1498
- children: /* @__PURE__ */ Q("div", {
1499
- style: {
1500
- display: "flex",
1501
- alignItems: "center",
1502
- gap: 4,
1503
- justifyContent: "flex-end"
1504
- },
1505
- children: [
1506
- h && /* @__PURE__ */ Z("span", {
1507
- style: {
1508
- fontSize: 11,
1509
- color: "var(--danger)"
1510
- },
1511
- title: h.slice(7),
1512
- children: "!"
1513
- }),
1514
- /* @__PURE__ */ Z(i, {
1515
- size: 24,
1516
- icon: Z(s ? m : e.check, { size: 12 }),
1517
- onClick: l,
1518
- title: "Confirm (Enter)"
1519
- }),
1520
- /* @__PURE__ */ Z(i, {
1521
- size: 24,
1522
- icon: /* @__PURE__ */ Z(e.x, { size: 12 }),
1523
- onClick: u,
1524
- title: "Cancel (Esc)"
1525
- })
1526
- ]
1527
- })
1528
- })]
1529
- });
1530
- }
1531
- function Be({ values: t, entity: r, columns: a, editableColumns: o, errors: s, saving: c, onChange: l, onConfirm: u, onCancel: d, refs: f, accent: p }) {
1532
- let h = k(), g = ue(), _ = s.find((e) => e.startsWith("_error:")), v = new Set(s.filter((e) => !e.startsWith("_error:")));
1533
- return /* @__PURE__ */ Q("div", {
1534
- style: {
1535
- border: "1px solid var(--border)",
1536
- borderRadius: 8,
1537
- background: "var(--surface)",
1538
- overflow: "hidden",
1539
- boxShadow: p ? "inset 3px 0 0 var(--accent)" : void 0
1540
- },
1541
- onKeyDown: (e) => {
1542
- e.key === "Enter" && !e.shiftKey ? (e.preventDefault(), u()) : e.key === "Escape" && (e.preventDefault(), d());
1543
- },
1544
- children: [/* @__PURE__ */ Z("div", {
1545
- style: {
1546
- padding: 10,
1547
- display: "flex",
1548
- flexDirection: "column",
1549
- gap: 12
1550
- },
1551
- children: a.map((e) => {
1552
- let i = r.fields.get(e), a = o.has(e), s = v.has(e), c = i ? n(i, e) : e, u = `${g}-${e}`, d = `${u}-label`, p = {
1553
- fontSize: 11.5,
1554
- fontWeight: 600,
1555
- color: "var(--text-3)"
1556
- };
1557
- return /* @__PURE__ */ Q("div", {
1558
- style: {
1559
- display: "flex",
1560
- flexDirection: "column",
1561
- gap: 5,
1562
- minWidth: 0
1563
- },
1564
- children: [a && i ? /* @__PURE__ */ Z("label", {
1565
- id: d,
1566
- htmlFor: u,
1567
- style: p,
1568
- children: c
1569
- }) : /* @__PURE__ */ Z("div", {
1570
- id: d,
1571
- style: p,
1572
- children: c
1573
- }), /* @__PURE__ */ Z("div", {
1574
- style: {
1575
- minWidth: 0,
1576
- outline: s ? "1px solid var(--danger)" : "none",
1577
- outlineOffset: 3,
1578
- borderRadius: s ? 5 : 0
1579
- },
1580
- title: s ? `${e} is required` : void 0,
1581
- children: a ? i ? H({
1582
- field: i,
1583
- fieldName: e,
1584
- value: t[e],
1585
- mode: "edit",
1586
- onChange: (t) => l(e, t),
1587
- record: t,
1588
- refs: f,
1589
- compact: !0,
1590
- fieldId: u,
1591
- labelId: d,
1592
- locale: h
1593
- }) : L(t[e]) : i?.auto ? "—" : L(t[e])
1594
- })]
1595
- }, e);
1596
- })
1597
- }), /* @__PURE__ */ Q("div", {
1598
- style: {
1599
- minHeight: 42,
1600
- padding: "6px 8px",
1601
- borderTop: "1px solid var(--divider)",
1602
- display: "flex",
1603
- alignItems: "center",
1604
- justifyContent: "flex-end",
1605
- gap: 6
1606
- },
1607
- children: [
1608
- _ && /* @__PURE__ */ Z("span", {
1609
- style: {
1610
- fontSize: 11,
1611
- color: "var(--danger)"
1612
- },
1613
- title: _.slice(7),
1614
- children: "!"
1615
- }),
1616
- /* @__PURE__ */ Z(i, {
1617
- size: 32,
1618
- icon: Z(c ? m : e.check, { size: 14 }),
1619
- onClick: u,
1620
- title: "Confirm (Enter)"
1621
- }),
1622
- /* @__PURE__ */ Z(i, {
1623
- size: 32,
1624
- icon: /* @__PURE__ */ Z(e.x, { size: 14 }),
1625
- onClick: d,
1626
- title: "Cancel (Esc)"
1627
- })
1628
- ]
1629
- })]
1630
- });
1631
- }
1632
- function Ve({ draftRow: e, entity: t, columns: n, editableColumns: r, foreignKey: i, draftErrors: a, draftSaving: o, onChange: s, onConfirm: c, onCancel: l, refs: u }) {
1633
- let d = J(() => {
1634
- let e = new Set(r);
1635
- return e.delete(i), e;
1636
- }, [r, i]);
1637
- return /* @__PURE__ */ Z(ze, {
1638
- values: e,
1639
- entity: t,
1640
- columns: n,
1641
- editableColumns: d,
1642
- errors: a,
1643
- saving: o,
1644
- onChange: s,
1645
- onConfirm: c,
1646
- onCancel: l,
1647
- refs: u,
1648
- accent: !0
1649
- });
1650
- }
1651
- function He({ draftRow: e, entity: t, columns: n, editableColumns: r, foreignKey: i, draftErrors: a, draftSaving: o, onChange: s, onConfirm: c, onCancel: l, refs: u }) {
1652
- let d = J(() => {
1653
- let e = new Set(r);
1654
- return e.delete(i), e;
1655
- }, [r, i]);
1656
- return /* @__PURE__ */ Z(Be, {
1657
- values: e,
1658
- entity: t,
1659
- columns: n,
1660
- editableColumns: d,
1661
- errors: a,
1662
- saving: o,
1663
- onChange: s,
1664
- onConfirm: c,
1665
- onCancel: l,
1666
- refs: u,
1667
- accent: !0
1668
- });
1669
- }
1670
- //#endregion
1671
- //#region src/components/shared/ErrorBoundary.tsx
1672
- var Ue = class extends ce {
1673
- constructor(e) {
1674
- super(e), this.state = {
1675
- hasError: !1,
1676
- error: null
1677
- };
1678
- }
1679
- static getDerivedStateFromError(e) {
1680
- return {
1681
- hasError: !0,
1682
- error: e
1683
- };
1684
- }
1685
- componentDidCatch(e, t) {
1686
- console.error("[ErrorBoundary]", e, t.componentStack);
1687
- }
1688
- handleRetry = () => {
1689
- this.setState({
1690
- hasError: !1,
1691
- error: null
1692
- });
1693
- };
1694
- render() {
1695
- return this.state.hasError ? this.props.fallback ? this.props.fallback : /* @__PURE__ */ Z("div", {
1696
- style: {
1697
- display: "flex",
1698
- alignItems: "center",
1699
- justifyContent: "center",
1700
- minHeight: 200,
1701
- padding: 32
1702
- },
1703
- children: /* @__PURE__ */ Q("div", {
1704
- style: {
1705
- textAlign: "center",
1706
- maxWidth: 420,
1707
- display: "flex",
1708
- flexDirection: "column",
1709
- gap: 10
1710
- },
1711
- children: [
1712
- /* @__PURE__ */ Z("h2", {
1713
- style: {
1714
- fontSize: 16,
1715
- fontWeight: 600,
1716
- margin: 0,
1717
- color: "var(--text)"
1718
- },
1719
- children: "Something went wrong"
1720
- }),
1721
- /* @__PURE__ */ Z("p", {
1722
- style: {
1723
- fontSize: 12.5,
1724
- color: "var(--text-3)",
1725
- margin: 0
1726
- },
1727
- children: this.state.error?.message || "An unexpected error occurred."
1728
- }),
1729
- /* @__PURE__ */ Z("div", { children: /* @__PURE__ */ Z(b, {
1730
- onClick: this.handleRetry,
1731
- children: "Try again"
1732
- }) })
1733
- ]
1734
- })
1735
- }) : this.props.children;
1736
- }
1737
- };
1738
- //#endregion
1739
- //#region src/hooks/useObject.ts
1740
- function We(e, t) {
1741
- return [
1742
- "entity-item",
1743
- e,
1744
- t === void 0 || t === "new" ? void 0 : typeof t == "string" ? t : Object.keys(t).sort().map((e) => [e, t[e]])
1745
- ];
1746
- }
1747
- function Ge(e, t) {
1748
- let n = We(e, t), r = n[2];
1749
- return fe({
1750
- queryKey: n,
1751
- queryFn: () => R(e, t),
1752
- enabled: !!e && !!t && t !== "new" && r !== void 0
1753
- });
1754
- }
1755
- //#endregion
1756
- //#region src/components/detail-layout/widgets/registry.ts
1757
- var Ke = /* @__PURE__ */ new Map();
1758
- function qe(e, t) {
1759
- Ke.set(e, t);
1760
- }
1761
- function Je(e) {
1762
- return Ke.get(e);
1763
- }
1764
- function Ye(e) {
1765
- return Ke.has(e);
1766
- }
1767
- //#endregion
1768
- export { Ge as a, Se as c, ve as d, _e as f, We as i, ye as l, Ye as n, Ue as o, qe as r, Me as s, Je as t, be as u };