@nivaro/react 0.3.24 → 0.3.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/useSessionRecorder.js +1 -1
- package/dist/index.d.ts +45 -26
- package/dist/shared/components/FilePreviewLightbox.js +56 -35
- package/dist/shared/components/ItemEditForm.js +4309 -4263
- package/dist/shared/components/PageRenderer.js +63 -62
- package/dist/shared/components/RecordReadView.js +229 -229
- package/dist/shared/components/ReportView.js +123 -120
- package/dist/shared/components/ai/AiMarkdown.js +168 -148
- package/dist/shared/components/chat/RoomParts.js +120 -119
- package/dist/shared/components/chat/chat-core.js +228 -224
- package/dist/shared/components/item-edit/FieldRenderer.js +333 -333
- package/dist/shared/components/item-edit/FieldRow.js +413 -394
- package/dist/shared/components/item-edit/GroupSection.js +637 -635
- package/dist/shared/components/item-edit/InlineGridField.js +89 -90
- package/dist/shared/components/item-edit/QuickPicker.js +9 -9
- package/dist/shared/components/item-edit/RawEditSheet.js +80 -79
- package/dist/shared/components/item-edit/RowMatchPanel.js +1 -1
- package/dist/shared/components/item-edit/m2m-invalidate.js +19 -0
- package/dist/shared/components/item-edit/record-lookups.js +15 -0
- package/dist/shared/components/item-edit/render-stability.js +147 -0
- package/dist/shared/components/layout-editor/FormMapButton.js +5 -4
- package/dist/shared/lib/safe-href.js +10 -0
- package/dist/shared/lib/socket-realtime.js +107 -78
- package/package.json +6 -6
|
@@ -1,283 +1,285 @@
|
|
|
1
|
-
import { jsx as e, jsxs as x, Fragment as
|
|
2
|
-
import { useQuery as
|
|
1
|
+
import { jsx as e, jsxs as x, Fragment as vt } from "react/jsx-runtime";
|
|
2
|
+
import { useQuery as ce, useQueryClient as St } from "@tanstack/react-query";
|
|
3
3
|
import * as kt from "lucide-react";
|
|
4
|
-
import { ChevronDown as
|
|
5
|
-
import
|
|
6
|
-
import { fieldDrilldownConfig as
|
|
7
|
-
import { get as
|
|
8
|
-
import { planFieldGrid as
|
|
9
|
-
import { reportSectionUse as
|
|
10
|
-
import { useRecordReader as
|
|
11
|
-
import { choiceLabel as
|
|
12
|
-
import { DesignDropZone as
|
|
13
|
-
import { useLayoutDesign as
|
|
14
|
-
import { GridGuides as
|
|
15
|
-
import { UserAvatar as
|
|
16
|
-
import { DropdownMenu as
|
|
17
|
-
import { WidgetSlot as
|
|
18
|
-
import { FieldRow as
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import { applyDisplayTemplate as
|
|
22
|
-
import { SectionIntro as
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
|
|
26
|
-
|
|
4
|
+
import { ChevronDown as Dt, Loader2 as $t, User as Ft, Mail as jt } from "lucide-react";
|
|
5
|
+
import it, { useState as Y, useRef as ke, useEffect as ne, memo as Ot } from "react";
|
|
6
|
+
import { fieldDrilldownConfig as qt, useDrilldown as Bt, useOptionalNivaroClient as de, useNavigation as Lt } from "../../context.js";
|
|
7
|
+
import { get as st, post as Ut } from "../../lib/commands.js";
|
|
8
|
+
import { planFieldGrid as Mt, isEmptyValue as Tt, isFolded as Gt, readGroupStructure as It } from "../../lib/form-structure.js";
|
|
9
|
+
import { reportSectionUse as lt } from "../../lib/form-usage-beacon.js";
|
|
10
|
+
import { useRecordReader as at } from "../../lib/record-loader.js";
|
|
11
|
+
import { choiceLabel as Pt, titleCase as ot, cn as E, toLocalDateString as De } from "../../lib/utils.js";
|
|
12
|
+
import { DesignDropZone as Vt, designWrap as Ct } from "../layout-editor/DesignNode.js";
|
|
13
|
+
import { useLayoutDesign as Jt, revealGroupKey as Rt } from "../layout-editor/design-context.js";
|
|
14
|
+
import { GridGuides as ve } from "../layout-editor/grid-guides.js";
|
|
15
|
+
import { UserAvatar as zt } from "../UserAvatar.js";
|
|
16
|
+
import { DropdownMenu as Ht, DropdownMenuTrigger as Kt, DropdownMenuContent as Et, DropdownMenuItem as Ae } from "../ui/dropdown-menu.js";
|
|
17
|
+
import { WidgetSlot as Ye } from "../WidgetSlot.js";
|
|
18
|
+
import { FieldRow as Se } from "./FieldRow.js";
|
|
19
|
+
import { useFormHelpVideos as Wt, FormHelpVideoButton as At } from "./FormHelpVideoButton.js";
|
|
20
|
+
import { FoldArea as Yt, RowGroupCell as Qt, rowMemberField as Zt } from "./form-structure-ui.js";
|
|
21
|
+
import { applyDisplayTemplate as Xt, useContainerWidth as en, resolveColSpan as Qe } from "./helpers.js";
|
|
22
|
+
import { SectionIntro as tn } from "./LayoutContentBlock.js";
|
|
23
|
+
import { invalidateM2MFor as nn } from "./m2m-invalidate.js";
|
|
24
|
+
import { groupSectionPropsEqual as rn } from "./render-stability.js";
|
|
25
|
+
import { UserChip as ct, OwnersInline as Ze, OwnersInlineCompact as sn } from "./UserChip.js";
|
|
26
|
+
import { UserRosterCluster as Vn } from "./UserChip.js";
|
|
27
|
+
function Xe(n) {
|
|
28
|
+
if (typeof n != "string") return n ?? [];
|
|
27
29
|
try {
|
|
28
|
-
return JSON.parse(
|
|
30
|
+
return JSON.parse(n);
|
|
29
31
|
} catch {
|
|
30
32
|
return [];
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
|
-
function
|
|
34
|
-
relCollection:
|
|
35
|
-
relId:
|
|
35
|
+
function ln({
|
|
36
|
+
relCollection: n,
|
|
37
|
+
relId: t,
|
|
36
38
|
entries: i,
|
|
37
|
-
separator:
|
|
39
|
+
separator: a
|
|
38
40
|
}) {
|
|
39
|
-
const
|
|
40
|
-
queryKey: ["inline-display",
|
|
41
|
-
queryFn: () =>
|
|
42
|
-
enabled: !!
|
|
41
|
+
const l = de(), o = at(), r = String(t), p = i.some((f) => f.field.includes(".")) ? ["id", ...i.map((f) => f.field)].join(",") : null, { data: m } = ce({
|
|
42
|
+
queryKey: ["inline-display", n, r, p],
|
|
43
|
+
queryFn: () => o(n, r, p),
|
|
44
|
+
enabled: !!l && !!r,
|
|
43
45
|
staleTime: 6e4
|
|
44
46
|
});
|
|
45
|
-
if (!
|
|
46
|
-
const S = (
|
|
47
|
-
let
|
|
48
|
-
for (const y of
|
|
49
|
-
if (
|
|
50
|
-
|
|
47
|
+
if (!m) return null;
|
|
48
|
+
const S = (f) => {
|
|
49
|
+
let b = m;
|
|
50
|
+
for (const y of f.split(".")) {
|
|
51
|
+
if (b == null || typeof b != "object") return;
|
|
52
|
+
b = b[y];
|
|
51
53
|
}
|
|
52
|
-
return
|
|
54
|
+
return b;
|
|
53
55
|
};
|
|
54
|
-
if (
|
|
55
|
-
const
|
|
56
|
-
const k = S(
|
|
56
|
+
if (a != null) {
|
|
57
|
+
const f = (F) => {
|
|
58
|
+
const k = S(F.field);
|
|
57
59
|
if (k == null || k === "") return null;
|
|
58
|
-
const D =
|
|
60
|
+
const D = F.format ?? "text";
|
|
59
61
|
if (D === "date" || D === "datetime")
|
|
60
62
|
try {
|
|
61
|
-
return
|
|
63
|
+
return De(k);
|
|
62
64
|
} catch {
|
|
63
65
|
return String(k);
|
|
64
66
|
}
|
|
65
67
|
return D === "boolean" ? k ? "Yes" : "No" : String(k);
|
|
66
|
-
},
|
|
68
|
+
}, b = [];
|
|
67
69
|
let y = [];
|
|
68
|
-
for (const
|
|
69
|
-
|
|
70
|
-
y.length > 0 &&
|
|
71
|
-
const
|
|
72
|
-
(
|
|
73
|
-
const D =
|
|
70
|
+
for (const F of i)
|
|
71
|
+
F.line_break && y.length > 0 ? (b.push(y), y = [F]) : y.push(F);
|
|
72
|
+
y.length > 0 && b.push(y);
|
|
73
|
+
const q = b.map(
|
|
74
|
+
(F) => F.map((k) => {
|
|
75
|
+
const D = f(k);
|
|
74
76
|
return D ? { label: k.label ?? null, display: D } : null;
|
|
75
77
|
}).filter(Boolean)
|
|
76
|
-
).filter((
|
|
77
|
-
return
|
|
78
|
+
).filter((F) => F.length > 0);
|
|
79
|
+
return q.length === 0 ? null : /* @__PURE__ */ e("div", { className: "mt-1", children: q.map((F, k) => (
|
|
78
80
|
// biome-ignore lint/suspicious/noArrayIndexKey: stable line order
|
|
79
|
-
/* @__PURE__ */ e("p", { className: "text-[12px] text-slate-500 dark:text-slate-400", children:
|
|
81
|
+
/* @__PURE__ */ e("p", { className: "text-[12px] text-slate-500 dark:text-slate-400", children: F.map((D, M) => (
|
|
80
82
|
// biome-ignore lint/suspicious/noArrayIndexKey: stable token order
|
|
81
|
-
/* @__PURE__ */ x(
|
|
82
|
-
|
|
83
|
+
/* @__PURE__ */ x(it.Fragment, { children: [
|
|
84
|
+
M > 0 && a,
|
|
83
85
|
D.label && /* @__PURE__ */ x("span", { className: "font-semibold text-slate-600 dark:text-slate-300", children: [
|
|
84
86
|
D.label,
|
|
85
87
|
":"
|
|
86
88
|
] }),
|
|
87
89
|
D.label ? " " : "",
|
|
88
90
|
D.display
|
|
89
|
-
] },
|
|
91
|
+
] }, M)
|
|
90
92
|
)) }, k)
|
|
91
93
|
)) });
|
|
92
94
|
}
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
if (
|
|
96
|
-
const y =
|
|
97
|
-
let
|
|
95
|
+
const c = i.map((f) => {
|
|
96
|
+
const b = S(f.field);
|
|
97
|
+
if (b == null || b === "") return null;
|
|
98
|
+
const y = f.format ?? "text";
|
|
99
|
+
let q;
|
|
98
100
|
if (y === "date" || y === "datetime")
|
|
99
101
|
try {
|
|
100
|
-
|
|
102
|
+
q = De(b);
|
|
101
103
|
} catch {
|
|
102
|
-
|
|
104
|
+
q = String(b);
|
|
103
105
|
}
|
|
104
|
-
else y === "boolean" ?
|
|
105
|
-
return { label:
|
|
106
|
+
else y === "boolean" ? q = b ? "Yes" : "No" : q = String(b);
|
|
107
|
+
return { label: f.label, display: q };
|
|
106
108
|
}).filter(Boolean);
|
|
107
|
-
return
|
|
109
|
+
return c.length === 0 ? null : /* @__PURE__ */ e("div", { className: "mt-1 rounded border border-slate-200 bg-slate-50 dark:border-slate-700 dark:bg-slate-800/50 px-3 py-1.5 space-y-0.5", children: c.map((f, b) => (
|
|
108
110
|
// biome-ignore lint/suspicious/noArrayIndexKey: stable order from config
|
|
109
111
|
/* @__PURE__ */ x("div", { className: "flex items-baseline gap-2", children: [
|
|
110
|
-
|
|
111
|
-
/* @__PURE__ */ e("span", { className: "text-[12px] text-slate-700 dark:text-slate-300 truncate", children:
|
|
112
|
-
] },
|
|
112
|
+
f.label && /* @__PURE__ */ e("span", { className: "shrink-0 min-w-[56px] text-[10px] font-medium text-slate-400", children: f.label }),
|
|
113
|
+
/* @__PURE__ */ e("span", { className: "text-[12px] text-slate-700 dark:text-slate-300 truncate", children: f.display })
|
|
114
|
+
] }, b)
|
|
113
115
|
)) });
|
|
114
116
|
}
|
|
115
|
-
function
|
|
116
|
-
if (!
|
|
117
|
-
const
|
|
117
|
+
function an(n) {
|
|
118
|
+
if (!n) return null;
|
|
119
|
+
const t = n.replace(/(^|-)([a-z])/g, (a, l, o) => o.toUpperCase()), i = kt[t];
|
|
118
120
|
return i || null;
|
|
119
121
|
}
|
|
120
|
-
function
|
|
121
|
-
if (!
|
|
122
|
-
if (typeof
|
|
122
|
+
function et(n) {
|
|
123
|
+
if (!n.options) return {};
|
|
124
|
+
if (typeof n.options == "object") return n.options;
|
|
123
125
|
try {
|
|
124
|
-
return JSON.parse(
|
|
126
|
+
return JSON.parse(n.options);
|
|
125
127
|
} catch {
|
|
126
128
|
return {};
|
|
127
129
|
}
|
|
128
130
|
}
|
|
129
|
-
function
|
|
130
|
-
if (
|
|
131
|
-
if (typeof
|
|
132
|
-
const i = (
|
|
131
|
+
function $e(n, t) {
|
|
132
|
+
if (n == null || n === "") return "—";
|
|
133
|
+
if (typeof n == "boolean") return n ? "Yes" : "No";
|
|
134
|
+
const i = (t == null ? void 0 : t.interface) ?? "", a = (() => {
|
|
133
135
|
try {
|
|
134
|
-
const
|
|
135
|
-
return (
|
|
136
|
+
const r = t != null && t.options ? JSON.parse(String(t.options)) : null;
|
|
137
|
+
return (r == null ? void 0 : r.display_format) ?? null;
|
|
136
138
|
} catch {
|
|
137
139
|
return null;
|
|
138
140
|
}
|
|
139
141
|
})();
|
|
140
|
-
if (
|
|
141
|
-
const
|
|
142
|
-
if (
|
|
143
|
-
return
|
|
144
|
-
if (
|
|
145
|
-
if (/^0\.0+$/.test(
|
|
146
|
-
if (
|
|
147
|
-
const
|
|
148
|
-
if (!Number.isNaN(
|
|
142
|
+
if (a) {
|
|
143
|
+
const r = Number(n);
|
|
144
|
+
if (a === "currency" && Number.isFinite(r))
|
|
145
|
+
return r.toLocaleString(void 0, { style: "currency", currency: "USD" });
|
|
146
|
+
if (a === "percent" && Number.isFinite(r)) return `${(r * 100).toFixed(1)}%`;
|
|
147
|
+
if (/^0\.0+$/.test(a) && Number.isFinite(r)) return r.toFixed(a.length - 2);
|
|
148
|
+
if (a === "date" && typeof n == "string") {
|
|
149
|
+
const s = n.length === 10 ? /* @__PURE__ */ new Date(`${n}T00:00:00`) : new Date(n);
|
|
150
|
+
if (!Number.isNaN(s.getTime())) return s.toLocaleDateString();
|
|
149
151
|
}
|
|
150
|
-
if (
|
|
151
|
-
const
|
|
152
|
-
if (!Number.isNaN(
|
|
152
|
+
if (a === "datetime" && typeof n == "string") {
|
|
153
|
+
const s = new Date(n);
|
|
154
|
+
if (!Number.isNaN(s.getTime())) return s.toLocaleString();
|
|
153
155
|
}
|
|
154
156
|
}
|
|
155
|
-
if (i === "duration" && Number.isFinite(Number(
|
|
156
|
-
const
|
|
157
|
-
return `${Math.floor(
|
|
157
|
+
if (i === "duration" && Number.isFinite(Number(n))) {
|
|
158
|
+
const r = Number(n);
|
|
159
|
+
return `${Math.floor(r / 60)}:${String(Math.round(r % 60)).padStart(2, "0")}`;
|
|
158
160
|
}
|
|
159
|
-
if (i === "rating" && Number.isFinite(Number(
|
|
160
|
-
return `${"★".repeat(Number(
|
|
161
|
-
if (i === "checklist" && typeof
|
|
161
|
+
if (i === "rating" && Number.isFinite(Number(n)))
|
|
162
|
+
return `${"★".repeat(Number(n))} (${n}/5)`;
|
|
163
|
+
if (i === "checklist" && typeof n == "string")
|
|
162
164
|
try {
|
|
163
|
-
const
|
|
164
|
-
if (Array.isArray(
|
|
165
|
+
const r = JSON.parse(n);
|
|
166
|
+
if (Array.isArray(r)) return `${r.filter((s) => s == null ? void 0 : s.done).length}/${r.length} done`;
|
|
165
167
|
} catch {
|
|
166
168
|
}
|
|
167
|
-
if (i === "address" && typeof
|
|
169
|
+
if (i === "address" && typeof n == "string" && n.trim().startsWith("{"))
|
|
168
170
|
try {
|
|
169
|
-
const
|
|
170
|
-
return [
|
|
171
|
+
const r = JSON.parse(n);
|
|
172
|
+
return [r.street, r.city, r.state, r.zip].filter(Boolean).join(", ") || "—";
|
|
171
173
|
} catch {
|
|
172
174
|
}
|
|
173
175
|
if (i === "toggle" || i === "boolean")
|
|
174
|
-
return
|
|
175
|
-
if (typeof
|
|
176
|
-
if (Array.isArray(
|
|
176
|
+
return n ? "Yes" : "No";
|
|
177
|
+
if (typeof n == "object") {
|
|
178
|
+
if (Array.isArray(n)) return n.length ? `${n.length} items` : "—";
|
|
177
179
|
try {
|
|
178
|
-
return JSON.stringify(
|
|
180
|
+
return JSON.stringify(n);
|
|
179
181
|
} catch {
|
|
180
|
-
return String(
|
|
182
|
+
return String(n);
|
|
181
183
|
}
|
|
182
184
|
}
|
|
183
|
-
const
|
|
184
|
-
if (i === "datetime" || i === "date" || /^\d{4}-\d{2}-\d{2}T/.test(
|
|
185
|
+
const l = String(n);
|
|
186
|
+
if (i === "datetime" || i === "date" || /^\d{4}-\d{2}-\d{2}T/.test(l) || /^\d{4}-\d{2}-\d{2}$/.test(l))
|
|
185
187
|
try {
|
|
186
|
-
let
|
|
187
|
-
if (!
|
|
188
|
+
let r = /^\d{4}-\d{2}-\d{2}$/.test(l) || i === "date";
|
|
189
|
+
if (!r && (t != null && t.options))
|
|
188
190
|
try {
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
+
const p = typeof t.options == "string" ? JSON.parse(t.options) : t.options;
|
|
192
|
+
p && p.date_mode === "date" && (r = !0);
|
|
191
193
|
} catch {
|
|
192
194
|
}
|
|
193
|
-
const
|
|
194
|
-
return
|
|
195
|
+
const s = l.match(/^(\d{4})-(\d{2})-(\d{2})(?:T00:00:00(?:\.000)?Z)?$/);
|
|
196
|
+
return s ? new Date(Number(s[1]), Number(s[2]) - 1, Number(s[3])).toLocaleDateString() : r ? new Date(l).toLocaleDateString() : new Date(l).toLocaleString();
|
|
195
197
|
} catch {
|
|
196
198
|
}
|
|
197
|
-
if ((i === "select-dropdown" || i === "radio-buttons") &&
|
|
198
|
-
const
|
|
199
|
-
if (Array.isArray(
|
|
200
|
-
const
|
|
201
|
-
if (
|
|
199
|
+
if ((i === "select-dropdown" || i === "radio-buttons") && t) {
|
|
200
|
+
const s = et(t).choices;
|
|
201
|
+
if (Array.isArray(s)) {
|
|
202
|
+
const p = s.find((m) => String(m.value) === l);
|
|
203
|
+
if (p) return Pt(p.text);
|
|
202
204
|
}
|
|
203
205
|
}
|
|
204
|
-
const
|
|
205
|
-
if (!Number.isNaN(
|
|
206
|
-
const
|
|
207
|
-
if (
|
|
208
|
-
const
|
|
209
|
-
if (
|
|
206
|
+
const o = Number(l);
|
|
207
|
+
if (!Number.isNaN(o) && l !== "" && t) {
|
|
208
|
+
const r = et(t), s = r.format, p = typeof r.unit == "string" ? r.unit.trim() : "";
|
|
209
|
+
if (p && !s) {
|
|
210
|
+
const m = new Intl.NumberFormat(void 0, { maximumFractionDigits: 2 }).format(o);
|
|
211
|
+
if (p === "$")
|
|
210
212
|
try {
|
|
211
213
|
return new Intl.NumberFormat(void 0, { style: "currency", currency: "USD" }).format(
|
|
212
|
-
|
|
214
|
+
o
|
|
213
215
|
);
|
|
214
216
|
} catch {
|
|
215
|
-
return `$${
|
|
217
|
+
return `$${m}`;
|
|
216
218
|
}
|
|
217
|
-
return
|
|
219
|
+
return p === "%" ? `${m}%` : `${m} ${p}`;
|
|
218
220
|
}
|
|
219
|
-
if (
|
|
221
|
+
if (s === "currency")
|
|
220
222
|
try {
|
|
221
223
|
return new Intl.NumberFormat(void 0, {
|
|
222
224
|
style: "currency",
|
|
223
|
-
currency:
|
|
224
|
-
}).format(
|
|
225
|
+
currency: r.currency || "USD"
|
|
226
|
+
}).format(o);
|
|
225
227
|
} catch {
|
|
226
228
|
}
|
|
227
|
-
if (
|
|
228
|
-
return new Intl.NumberFormat(void 0, { maximumFractionDigits: 0 }).format(
|
|
229
|
-
if (
|
|
230
|
-
const
|
|
229
|
+
if (s === "int")
|
|
230
|
+
return new Intl.NumberFormat(void 0, { maximumFractionDigits: 0 }).format(o);
|
|
231
|
+
if (s === "decimal") {
|
|
232
|
+
const m = typeof r.precision == "number" ? r.precision : 2;
|
|
231
233
|
return new Intl.NumberFormat(void 0, {
|
|
232
|
-
minimumFractionDigits:
|
|
233
|
-
maximumFractionDigits:
|
|
234
|
-
}).format(
|
|
234
|
+
minimumFractionDigits: m,
|
|
235
|
+
maximumFractionDigits: m
|
|
236
|
+
}).format(o);
|
|
235
237
|
}
|
|
236
238
|
}
|
|
237
|
-
return !
|
|
239
|
+
return !l.includes(" ") && !l.includes("@") && !/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(l) && !/^\d+$/.test(l) && (l.includes("_") || l.includes("-") || /^[a-z]/.test(l)) ? ot(l) : l;
|
|
238
240
|
}
|
|
239
|
-
function
|
|
240
|
-
const
|
|
241
|
-
queryKey: ["user-chip",
|
|
242
|
-
queryFn: () =>
|
|
243
|
-
|
|
244
|
-
).then((
|
|
245
|
-
enabled: !!
|
|
241
|
+
function tt({ userId: n }) {
|
|
242
|
+
const t = de(), { navigate: i, userUrl: a } = Lt(), l = a ? a(n) : `/users/${n}`, { data: o } = ce({
|
|
243
|
+
queryKey: ["user-chip", n],
|
|
244
|
+
queryFn: () => t.request(
|
|
245
|
+
st(`/users/${n}`)
|
|
246
|
+
).then((p) => p.data ?? null),
|
|
247
|
+
enabled: !!t && !!n,
|
|
246
248
|
staleTime: 12e4
|
|
247
|
-
}),
|
|
248
|
-
return /* @__PURE__ */ x(
|
|
249
|
-
/* @__PURE__ */ e(
|
|
249
|
+
}), r = o ? [o.first_name, o.last_name].filter(Boolean).join(" ") || o.email : n, s = r.split(" ").map((p) => p[0]).filter(Boolean).slice(0, 2).join("").toUpperCase();
|
|
250
|
+
return /* @__PURE__ */ x(Ht, { children: [
|
|
251
|
+
/* @__PURE__ */ e(Kt, { asChild: !0, children: /* @__PURE__ */ x("span", { className: "inline-flex cursor-pointer items-center gap-1 rounded-full bg-slate-100 py-px pl-0.5 pr-2 hover:bg-slate-200 transition-colors", children: [
|
|
250
252
|
/* @__PURE__ */ e(
|
|
251
|
-
|
|
253
|
+
zt,
|
|
252
254
|
{
|
|
253
|
-
userId:
|
|
255
|
+
userId: n,
|
|
254
256
|
className: "h-4 w-4",
|
|
255
|
-
fallback: /* @__PURE__ */ e("span", { className: "flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-nvr-cyan/20 text-[9px] font-bold text-nvr-navy dark:text-nvr-cyan", children:
|
|
257
|
+
fallback: /* @__PURE__ */ e("span", { className: "flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-nvr-cyan/20 text-[9px] font-bold text-nvr-navy dark:text-nvr-cyan", children: s })
|
|
256
258
|
}
|
|
257
259
|
),
|
|
258
|
-
/* @__PURE__ */ e("span", { className: "text-[11px] text-slate-600", children:
|
|
260
|
+
/* @__PURE__ */ e("span", { className: "text-[11px] text-slate-600", children: r })
|
|
259
261
|
] }) }),
|
|
260
|
-
/* @__PURE__ */ x(
|
|
261
|
-
|
|
262
|
+
/* @__PURE__ */ x(Et, { align: "start", className: "text-[12px]", children: [
|
|
263
|
+
l && /* @__PURE__ */ x(
|
|
262
264
|
Ae,
|
|
263
265
|
{
|
|
264
266
|
className: "gap-2 text-[12px] cursor-pointer",
|
|
265
|
-
onSelect: () => i(
|
|
267
|
+
onSelect: () => i(l),
|
|
266
268
|
children: [
|
|
267
|
-
/* @__PURE__ */ e(
|
|
269
|
+
/* @__PURE__ */ e(Ft, { className: "h-3.5 w-3.5" }),
|
|
268
270
|
" View profile"
|
|
269
271
|
]
|
|
270
272
|
}
|
|
271
273
|
),
|
|
272
|
-
(
|
|
274
|
+
(o == null ? void 0 : o.email) && /* @__PURE__ */ x(
|
|
273
275
|
Ae,
|
|
274
276
|
{
|
|
275
277
|
className: "gap-2 text-[12px] cursor-pointer",
|
|
276
278
|
onSelect: () => {
|
|
277
|
-
window.location.href = `mailto:${
|
|
279
|
+
window.location.href = `mailto:${o.email}`;
|
|
278
280
|
},
|
|
279
281
|
children: [
|
|
280
|
-
/* @__PURE__ */ e(
|
|
282
|
+
/* @__PURE__ */ e(jt, { className: "h-3.5 w-3.5" }),
|
|
281
283
|
" Send email"
|
|
282
284
|
]
|
|
283
285
|
}
|
|
@@ -285,39 +287,39 @@ function et({ userId: t }) {
|
|
|
285
287
|
] })
|
|
286
288
|
] });
|
|
287
289
|
}
|
|
288
|
-
function
|
|
289
|
-
collection:
|
|
290
|
-
itemId:
|
|
290
|
+
function on({
|
|
291
|
+
collection: n,
|
|
292
|
+
itemId: t,
|
|
291
293
|
layoutId: i,
|
|
292
|
-
attachField:
|
|
293
|
-
filenameTemplate:
|
|
294
|
-
label:
|
|
294
|
+
attachField: a,
|
|
295
|
+
filenameTemplate: l,
|
|
296
|
+
label: o
|
|
295
297
|
}) {
|
|
296
|
-
const
|
|
297
|
-
if (!(!
|
|
298
|
-
|
|
298
|
+
const r = de(), s = St(), [p, m] = Y(!1), S = async () => {
|
|
299
|
+
if (!(!r || p || !a)) {
|
|
300
|
+
m(!0);
|
|
299
301
|
try {
|
|
300
|
-
await
|
|
301
|
-
|
|
302
|
-
collection:
|
|
303
|
-
item_id:
|
|
304
|
-
attach_field:
|
|
305
|
-
filename_template:
|
|
302
|
+
await r.request(
|
|
303
|
+
Ut(`/collection-layouts/${i}/generate-and-attach`, {
|
|
304
|
+
collection: n,
|
|
305
|
+
item_id: t,
|
|
306
|
+
attach_field: a,
|
|
307
|
+
filename_template: l ?? void 0
|
|
306
308
|
})
|
|
307
|
-
),
|
|
309
|
+
), nn(s, [t]), s.invalidateQueries({ queryKey: ["items", n, t] });
|
|
308
310
|
} catch {
|
|
309
311
|
} finally {
|
|
310
|
-
|
|
312
|
+
m(!1);
|
|
311
313
|
}
|
|
312
314
|
}
|
|
313
|
-
},
|
|
315
|
+
}, c = !a;
|
|
314
316
|
return /* @__PURE__ */ x(
|
|
315
317
|
"button",
|
|
316
318
|
{
|
|
317
319
|
type: "button",
|
|
318
320
|
onClick: S,
|
|
319
|
-
disabled:
|
|
320
|
-
title:
|
|
321
|
+
disabled: p || c,
|
|
322
|
+
title: c ? "Configure PDF field in Data Model → Layouts" : void 0,
|
|
321
323
|
className: "inline-flex items-center gap-1.5 rounded-md border border-nvr-cyan/40 bg-nvr-cyan/10 px-3 py-1.5 text-[12px] font-medium text-nvr-navy hover:bg-nvr-cyan/20 disabled:cursor-not-allowed disabled:opacity-40 dark:text-nvr-cyan",
|
|
322
324
|
children: [
|
|
323
325
|
/* @__PURE__ */ x(
|
|
@@ -337,55 +339,55 @@ function rn({
|
|
|
337
339
|
]
|
|
338
340
|
}
|
|
339
341
|
),
|
|
340
|
-
|
|
342
|
+
p ? "Generating…" : o
|
|
341
343
|
]
|
|
342
344
|
}
|
|
343
345
|
);
|
|
344
346
|
}
|
|
345
347
|
function re({
|
|
346
|
-
relCollection:
|
|
347
|
-
id:
|
|
348
|
+
relCollection: n,
|
|
349
|
+
id: t,
|
|
348
350
|
className: i
|
|
349
351
|
}) {
|
|
350
|
-
var
|
|
351
|
-
const
|
|
352
|
-
queryKey: ["col-meta-dt",
|
|
353
|
-
queryFn: () =>
|
|
354
|
-
|
|
352
|
+
var b;
|
|
353
|
+
const a = de(), l = at(), o = t != null && t !== "" ? String(t) : null, { data: r } = ce({
|
|
354
|
+
queryKey: ["col-meta-dt", n],
|
|
355
|
+
queryFn: () => a.request(
|
|
356
|
+
st(`/collections/${n}`)
|
|
355
357
|
).then((y) => y.data).catch(() => ({})),
|
|
356
|
-
enabled: !!
|
|
358
|
+
enabled: !!a && !!o,
|
|
357
359
|
staleTime: 3e5
|
|
358
|
-
}),
|
|
359
|
-
queryKey: ["rel-display",
|
|
360
|
-
queryFn: () =>
|
|
361
|
-
enabled: !!
|
|
360
|
+
}), s = (((b = r == null ? void 0 : r.display_template) == null ? void 0 : b.match(/\{\{\s*[^}]+?\s*\}\}/g)) ?? []).map((y) => y.replace(/[{}\s]/g, "")).filter((y) => y.includes(".")), p = s.length ? ["id", ...s].join(",") : null, { data: m, isLoading: S } = ce({
|
|
361
|
+
queryKey: ["rel-display", n, o, p],
|
|
362
|
+
queryFn: () => l(n, o, p),
|
|
363
|
+
enabled: !!a && !!o && r !== void 0,
|
|
362
364
|
staleTime: 6e4
|
|
363
365
|
});
|
|
364
|
-
if (!
|
|
365
|
-
if (S ||
|
|
366
|
+
if (!o) return /* @__PURE__ */ e("span", { children: "—" });
|
|
367
|
+
if (S || a && r === void 0)
|
|
366
368
|
return /* @__PURE__ */ e("span", { className: "animate-pulse h-3 w-20 rounded bg-slate-200 dark:bg-[hsl(var(--nvr-skeleton))] inline-block" });
|
|
367
|
-
const
|
|
368
|
-
if (!
|
|
369
|
-
const
|
|
370
|
-
return /* @__PURE__ */ e("span", { className:
|
|
369
|
+
const c = i ?? "text-[13px] text-slate-700";
|
|
370
|
+
if (!m) return /* @__PURE__ */ e("span", { className: c, children: o });
|
|
371
|
+
const f = r != null && r.display_template ? Xt(r.display_template, m) : String(m.name ?? m.title ?? m.label ?? m.display_name ?? o);
|
|
372
|
+
return /* @__PURE__ */ e("span", { className: c, children: f });
|
|
371
373
|
}
|
|
372
|
-
function
|
|
373
|
-
return /* @__PURE__ */ e(
|
|
374
|
+
function nt({ userId: n }) {
|
|
375
|
+
return /* @__PURE__ */ e(ct, { userId: n, size: "compact" });
|
|
374
376
|
}
|
|
375
|
-
function
|
|
376
|
-
relCollection:
|
|
377
|
-
id:
|
|
377
|
+
function rt({
|
|
378
|
+
relCollection: n,
|
|
379
|
+
id: t,
|
|
378
380
|
drillConfig: i
|
|
379
381
|
}) {
|
|
380
|
-
const
|
|
381
|
-
return !
|
|
382
|
+
const a = Bt(), l = /* @__PURE__ */ e(re, { relCollection: n, id: t });
|
|
383
|
+
return !a || t == null || t === "" ? l : /* @__PURE__ */ e(
|
|
382
384
|
"button",
|
|
383
385
|
{
|
|
384
386
|
type: "button",
|
|
385
|
-
onClick: (
|
|
386
|
-
|
|
387
|
-
collection:
|
|
388
|
-
itemId: String(
|
|
387
|
+
onClick: (r) => {
|
|
388
|
+
r.stopPropagation(), a.open({
|
|
389
|
+
collection: n,
|
|
390
|
+
itemId: String(t),
|
|
389
391
|
layoutId: (i == null ? void 0 : i.layout_id) ?? null,
|
|
390
392
|
// Header drills open wide by default — the sheet renders the target's
|
|
391
393
|
// full detail layout, which is unreadable in a narrow panel.
|
|
@@ -396,188 +398,188 @@ function nt({
|
|
|
396
398
|
children: /* @__PURE__ */ e(
|
|
397
399
|
re,
|
|
398
400
|
{
|
|
399
|
-
relCollection:
|
|
400
|
-
id:
|
|
401
|
+
relCollection: n,
|
|
402
|
+
id: t,
|
|
401
403
|
className: "text-[13px] text-slate-700 underline decoration-slate-300 underline-offset-[3px] group-hover/drill:decoration-[#0284c7] group-hover/drill:text-[#0284c7] dark:text-slate-200 dark:decoration-slate-600"
|
|
402
404
|
}
|
|
403
405
|
)
|
|
404
406
|
}
|
|
405
407
|
);
|
|
406
408
|
}
|
|
407
|
-
function
|
|
408
|
-
const [
|
|
409
|
+
function cn(n) {
|
|
410
|
+
const [t, i] = Y(!1), a = ke(!0), l = ke(JSON.stringify(n ?? null));
|
|
409
411
|
return ne(() => {
|
|
410
|
-
const
|
|
411
|
-
if (
|
|
412
|
-
|
|
412
|
+
const o = JSON.stringify(n ?? null);
|
|
413
|
+
if (a.current) {
|
|
414
|
+
a.current = !1, l.current = o;
|
|
413
415
|
return;
|
|
414
416
|
}
|
|
415
|
-
if (
|
|
416
|
-
|
|
417
|
-
const
|
|
417
|
+
if (o === l.current) return;
|
|
418
|
+
l.current = o, i(!1);
|
|
419
|
+
const r = window.setTimeout(() => i(!0), 0), s = window.setTimeout(() => i(!1), 1200);
|
|
418
420
|
return () => {
|
|
419
|
-
window.clearTimeout(
|
|
421
|
+
window.clearTimeout(r), window.clearTimeout(s);
|
|
420
422
|
};
|
|
421
|
-
}, [
|
|
423
|
+
}, [n]), t ? "nvr-value-pulse" : "";
|
|
422
424
|
}
|
|
423
|
-
function
|
|
424
|
-
field:
|
|
425
|
-
val:
|
|
425
|
+
function Tn({
|
|
426
|
+
field: n,
|
|
427
|
+
val: t,
|
|
426
428
|
relations: i,
|
|
427
|
-
collection:
|
|
428
|
-
displayFormat:
|
|
429
|
-
textClassName:
|
|
429
|
+
collection: a,
|
|
430
|
+
displayFormat: l,
|
|
431
|
+
textClassName: o
|
|
430
432
|
}) {
|
|
431
|
-
const
|
|
432
|
-
(
|
|
433
|
+
const r = cn(t), s = E(o ?? "text-[13px] text-slate-900 dark:text-slate-100", r), p = qt(n) ?? { enabled: !0, layout_id: null, width: null }, m = i.find(
|
|
434
|
+
(c) => c.one_collection === a && c.one_field === n.field && c.junction_field
|
|
433
435
|
);
|
|
434
|
-
if (
|
|
435
|
-
const
|
|
436
|
-
(y) => y.many_collection ===
|
|
437
|
-
),
|
|
438
|
-
return !
|
|
439
|
-
|
|
436
|
+
if (m) {
|
|
437
|
+
const c = i.find(
|
|
438
|
+
(y) => y.many_collection === m.many_collection && y.many_field === m.junction_field
|
|
439
|
+
), f = c == null ? void 0 : c.one_collection, b = Array.isArray(t) ? t : t != null && t !== "" ? [t] : [];
|
|
440
|
+
return !f || b.length === 0 ? /* @__PURE__ */ e("span", { className: "text-slate-300 dark:text-slate-600", children: "—" }) : f === "nivaro_users" ? /* @__PURE__ */ e("span", { className: "inline-flex flex-wrap gap-x-1 gap-y-0.5", children: b.map((y) => /* @__PURE__ */ e(nt, { userId: String(y) }, String(y))) }) : /* @__PURE__ */ e("span", { className: "inline-flex flex-wrap gap-x-1.5", children: b.map((y) => /* @__PURE__ */ e(
|
|
441
|
+
rt,
|
|
440
442
|
{
|
|
441
|
-
relCollection:
|
|
443
|
+
relCollection: f,
|
|
442
444
|
id: y,
|
|
443
|
-
drillConfig:
|
|
445
|
+
drillConfig: p
|
|
444
446
|
},
|
|
445
447
|
String(y)
|
|
446
448
|
)) });
|
|
447
449
|
}
|
|
448
450
|
const S = i.find(
|
|
449
|
-
(
|
|
451
|
+
(c) => c.many_collection === a && c.many_field === n.field && !c.junction_field
|
|
450
452
|
);
|
|
451
453
|
if (S != null && S.one_collection) {
|
|
452
|
-
const
|
|
453
|
-
return
|
|
454
|
-
|
|
454
|
+
const c = Array.isArray(t) ? t : t != null && t !== "" ? [t] : [];
|
|
455
|
+
return c.length === 0 ? /* @__PURE__ */ e("span", { className: "text-slate-300 dark:text-slate-600", children: "—" }) : S.one_collection === "nivaro_users" ? /* @__PURE__ */ e("span", { className: "inline-flex flex-wrap gap-x-1 gap-y-0.5", children: c.map((f) => /* @__PURE__ */ e(nt, { userId: String(f) }, String(f))) }) : /* @__PURE__ */ e("span", { className: "inline-flex flex-wrap gap-x-1.5", children: c.map((f) => /* @__PURE__ */ e(
|
|
456
|
+
rt,
|
|
455
457
|
{
|
|
456
458
|
relCollection: S.one_collection,
|
|
457
|
-
id:
|
|
458
|
-
drillConfig:
|
|
459
|
+
id: f,
|
|
460
|
+
drillConfig: p
|
|
459
461
|
},
|
|
460
|
-
String(
|
|
462
|
+
String(f)
|
|
461
463
|
)) });
|
|
462
464
|
}
|
|
463
|
-
if (
|
|
465
|
+
if (t == null || t === "")
|
|
464
466
|
return /* @__PURE__ */ e("span", { className: "text-slate-300 dark:text-slate-600", children: "—" });
|
|
465
|
-
if (
|
|
466
|
-
const
|
|
467
|
-
if (
|
|
468
|
-
return /* @__PURE__ */ e("span", { className: `font-semibold ${
|
|
467
|
+
if (l && l !== "text") {
|
|
468
|
+
const c = Number(t);
|
|
469
|
+
if (l === "currency" && !isNaN(c))
|
|
470
|
+
return /* @__PURE__ */ e("span", { className: `font-semibold ${s}`, children: new Intl.NumberFormat(void 0, {
|
|
469
471
|
style: "currency",
|
|
470
472
|
currency: "USD",
|
|
471
473
|
minimumFractionDigits: 2
|
|
472
|
-
}).format(
|
|
473
|
-
if (
|
|
474
|
-
return /* @__PURE__ */ e("span", { className: `font-semibold ${
|
|
475
|
-
if (
|
|
476
|
-
return /* @__PURE__ */ e("span", { className: `font-semibold ${
|
|
477
|
-
if (
|
|
478
|
-
return /* @__PURE__ */ e("span", { className: `font-semibold ${
|
|
479
|
-
|
|
474
|
+
}).format(c) });
|
|
475
|
+
if (l === "integer" && !isNaN(c))
|
|
476
|
+
return /* @__PURE__ */ e("span", { className: `font-semibold ${s}`, children: new Intl.NumberFormat(void 0, { maximumFractionDigits: 0 }).format(Math.round(c)) });
|
|
477
|
+
if (l === "decimal" && !isNaN(c))
|
|
478
|
+
return /* @__PURE__ */ e("span", { className: `font-semibold ${s}`, children: new Intl.NumberFormat(void 0, { maximumFractionDigits: 2 }).format(c) });
|
|
479
|
+
if (l === "percent" && !isNaN(c))
|
|
480
|
+
return /* @__PURE__ */ e("span", { className: `font-semibold ${s}`, children: new Intl.NumberFormat(void 0, { style: "percent", maximumFractionDigits: 1 }).format(
|
|
481
|
+
c / 100
|
|
480
482
|
) });
|
|
481
|
-
if (
|
|
483
|
+
if (l === "date")
|
|
482
484
|
try {
|
|
483
|
-
return /* @__PURE__ */ e("span", { className: `font-semibold ${
|
|
485
|
+
return /* @__PURE__ */ e("span", { className: `font-semibold ${s}`, children: De(t) });
|
|
484
486
|
} catch {
|
|
485
487
|
}
|
|
486
|
-
if (
|
|
488
|
+
if (l === "datetime")
|
|
487
489
|
try {
|
|
488
|
-
return /* @__PURE__ */ e("span", { className: `font-semibold ${
|
|
490
|
+
return /* @__PURE__ */ e("span", { className: `font-semibold ${s}`, children: new Date(String(t)).toLocaleString() });
|
|
489
491
|
} catch {
|
|
490
492
|
}
|
|
491
493
|
}
|
|
492
|
-
return /* @__PURE__ */ e("span", { className: `font-semibold ${
|
|
494
|
+
return /* @__PURE__ */ e("span", { className: `font-semibold ${s}`, children: $e(t, n) });
|
|
493
495
|
}
|
|
494
|
-
function
|
|
495
|
-
summaryFields:
|
|
496
|
-
fields:
|
|
496
|
+
function dn({
|
|
497
|
+
summaryFields: n,
|
|
498
|
+
fields: t,
|
|
497
499
|
draft: i,
|
|
498
|
-
relations:
|
|
499
|
-
collection:
|
|
500
|
-
itemId:
|
|
501
|
-
ownersCollection:
|
|
502
|
-
ownersItemId:
|
|
503
|
-
ownersAssignment:
|
|
504
|
-
m2mCounts:
|
|
500
|
+
relations: a,
|
|
501
|
+
collection: l,
|
|
502
|
+
itemId: o,
|
|
503
|
+
ownersCollection: r,
|
|
504
|
+
ownersItemId: s,
|
|
505
|
+
ownersAssignment: p,
|
|
506
|
+
m2mCounts: m,
|
|
505
507
|
o2mCounts: S,
|
|
506
|
-
o2mAggValues:
|
|
507
|
-
summaryAggConfigs:
|
|
508
|
-
o2mLoading:
|
|
508
|
+
o2mAggValues: c,
|
|
509
|
+
summaryAggConfigs: f,
|
|
510
|
+
o2mLoading: b,
|
|
509
511
|
hideEmpty: y
|
|
510
512
|
}) {
|
|
511
|
-
const
|
|
512
|
-
if (N === "__owners__" ||
|
|
513
|
-
if (
|
|
513
|
+
const q = n.map((N) => typeof N == "string" ? N : N.field), F = y ? q.filter((N) => {
|
|
514
|
+
if (N === "__owners__" || b != null && b.has(N) || c && N in c) return !0;
|
|
515
|
+
if (m && N in m) return (m[N] ?? 0) > 0;
|
|
514
516
|
if (S && N in S) return (S[N] ?? 0) > 0;
|
|
515
|
-
const
|
|
516
|
-
return
|
|
517
|
-
}) :
|
|
518
|
-
if (
|
|
519
|
-
const k = "text-[9px] font-semibold uppercase tracking-wider text-slate-400 dark:text-slate-500 shrink-0", D = "text-[12px] font-semibold text-slate-700 dark:text-slate-300",
|
|
517
|
+
const T = i[N];
|
|
518
|
+
return T != null && T !== "" && !(Array.isArray(T) && T.length === 0);
|
|
519
|
+
}) : q;
|
|
520
|
+
if (F.length === 0) return null;
|
|
521
|
+
const k = "text-[9px] font-semibold uppercase tracking-wider text-slate-400 dark:text-slate-500 shrink-0", D = "text-[12px] font-semibold text-slate-700 dark:text-slate-300", M = "text-[12px] text-slate-300 dark:text-slate-600", R = "flex items-baseline gap-1.5", ue = (N) => {
|
|
520
522
|
if (N === "__owners__") {
|
|
521
|
-
const d = (
|
|
523
|
+
const d = (p == null ? void 0 : p.label_override) || "Owners";
|
|
522
524
|
return /* @__PURE__ */ x("div", { className: "flex items-center gap-1.5", children: [
|
|
523
525
|
/* @__PURE__ */ e("span", { className: k, children: d }),
|
|
524
526
|
/* @__PURE__ */ e(
|
|
525
|
-
|
|
527
|
+
sn,
|
|
526
528
|
{
|
|
527
|
-
collection:
|
|
528
|
-
itemId:
|
|
529
|
+
collection: r ?? l,
|
|
530
|
+
itemId: s ?? o
|
|
529
531
|
}
|
|
530
532
|
)
|
|
531
533
|
] });
|
|
532
534
|
}
|
|
533
|
-
const
|
|
534
|
-
if (
|
|
535
|
+
const T = n.find((d) => (typeof d == "string" ? d : d.field) === N), me = T && typeof T != "string" ? T.label : void 0, H = t.find((d) => d.field === N), P = me || (H == null ? void 0 : H.label) || N.replace(/_/g, " ").replace(/\b\w/g, (d) => d.toUpperCase());
|
|
536
|
+
if (b != null && b.has(N))
|
|
535
537
|
return /* @__PURE__ */ x("div", { className: "flex items-center gap-1.5", children: [
|
|
536
|
-
/* @__PURE__ */ e("span", { className: k, children:
|
|
537
|
-
/* @__PURE__ */ e(
|
|
538
|
+
/* @__PURE__ */ e("span", { className: k, children: P }),
|
|
539
|
+
/* @__PURE__ */ e($t, { className: "h-3 w-3 animate-spin text-slate-300" })
|
|
538
540
|
] });
|
|
539
|
-
if (
|
|
540
|
-
const d =
|
|
541
|
-
let
|
|
541
|
+
if (c && N in c) {
|
|
542
|
+
const d = f == null ? void 0 : f[N], L = (d == null ? void 0 : d.label) || P, O = c[N];
|
|
543
|
+
let U;
|
|
542
544
|
if ((d == null ? void 0 : d.agg) === "count")
|
|
543
|
-
|
|
545
|
+
U = String(O);
|
|
544
546
|
else {
|
|
545
|
-
const
|
|
547
|
+
const W = d != null && d.field_options ? (() => {
|
|
546
548
|
try {
|
|
547
549
|
return JSON.parse(d.field_options);
|
|
548
550
|
} catch {
|
|
549
551
|
return {};
|
|
550
552
|
}
|
|
551
|
-
})() : {},
|
|
552
|
-
if (
|
|
553
|
+
})() : {}, A = W.format;
|
|
554
|
+
if (A === "currency")
|
|
553
555
|
try {
|
|
554
|
-
|
|
556
|
+
U = new Intl.NumberFormat(void 0, {
|
|
555
557
|
style: "currency",
|
|
556
|
-
currency:
|
|
557
|
-
}).format(
|
|
558
|
+
currency: W.currency || "USD"
|
|
559
|
+
}).format(O);
|
|
558
560
|
} catch {
|
|
559
|
-
|
|
561
|
+
U = O.toLocaleString(void 0, { maximumFractionDigits: 2 });
|
|
560
562
|
}
|
|
561
|
-
else if (
|
|
562
|
-
|
|
563
|
-
else if (
|
|
564
|
-
const
|
|
565
|
-
|
|
566
|
-
minimumFractionDigits:
|
|
567
|
-
maximumFractionDigits:
|
|
568
|
-
}).format(
|
|
563
|
+
else if (A === "int")
|
|
564
|
+
U = new Intl.NumberFormat(void 0, { maximumFractionDigits: 0 }).format(O);
|
|
565
|
+
else if (A === "decimal") {
|
|
566
|
+
const Q = typeof W.precision == "number" ? W.precision : 2;
|
|
567
|
+
U = new Intl.NumberFormat(void 0, {
|
|
568
|
+
minimumFractionDigits: Q,
|
|
569
|
+
maximumFractionDigits: Q
|
|
570
|
+
}).format(O);
|
|
569
571
|
} else
|
|
570
|
-
|
|
572
|
+
U = O.toLocaleString(void 0, { maximumFractionDigits: 2 });
|
|
571
573
|
}
|
|
572
574
|
return /* @__PURE__ */ x("div", { className: R, children: [
|
|
573
575
|
/* @__PURE__ */ e("span", { className: k, children: L }),
|
|
574
|
-
/* @__PURE__ */ e("span", { className: D, children:
|
|
576
|
+
/* @__PURE__ */ e("span", { className: D, children: U })
|
|
575
577
|
] });
|
|
576
578
|
}
|
|
577
|
-
if (
|
|
578
|
-
const d =
|
|
579
|
+
if (m && N in m) {
|
|
580
|
+
const d = m[N];
|
|
579
581
|
return /* @__PURE__ */ x("div", { className: R, children: [
|
|
580
|
-
/* @__PURE__ */ e("span", { className: k, children:
|
|
582
|
+
/* @__PURE__ */ e("span", { className: k, children: P }),
|
|
581
583
|
/* @__PURE__ */ x("span", { className: D, children: [
|
|
582
584
|
d,
|
|
583
585
|
" item",
|
|
@@ -588,7 +590,7 @@ function ln({
|
|
|
588
590
|
if (S && N in S) {
|
|
589
591
|
const d = S[N];
|
|
590
592
|
return /* @__PURE__ */ x("div", { className: R, children: [
|
|
591
|
-
/* @__PURE__ */ e("span", { className: k, children:
|
|
593
|
+
/* @__PURE__ */ e("span", { className: k, children: P }),
|
|
592
594
|
/* @__PURE__ */ x("span", { className: D, children: [
|
|
593
595
|
d,
|
|
594
596
|
" row",
|
|
@@ -596,22 +598,22 @@ function ln({
|
|
|
596
598
|
] })
|
|
597
599
|
] });
|
|
598
600
|
}
|
|
599
|
-
const j = i[N],
|
|
600
|
-
(d) => d.many_collection ===
|
|
601
|
+
const j = i[N], G = a.find(
|
|
602
|
+
(d) => d.many_collection === l && d.many_field === N && !d.junction_field
|
|
601
603
|
);
|
|
602
|
-
if (
|
|
604
|
+
if (G != null && G.one_collection) {
|
|
603
605
|
const d = Array.isArray(j) ? j : j != null && j !== "" ? [j] : [];
|
|
604
606
|
return /* @__PURE__ */ x("div", { className: R, children: [
|
|
605
|
-
/* @__PURE__ */ e("span", { className: k, children:
|
|
606
|
-
d.length === 0 ? /* @__PURE__ */ e("span", { className:
|
|
607
|
+
/* @__PURE__ */ e("span", { className: k, children: P }),
|
|
608
|
+
d.length === 0 ? /* @__PURE__ */ e("span", { className: M, children: "—" }) : G.one_collection === "nivaro_users" ? /* @__PURE__ */ e("span", { className: "inline-flex flex-wrap gap-x-1.5 gap-y-0.5", children: d.map((L) => /* @__PURE__ */ e(tt, { userId: String(L) }, String(L))) }) : /* @__PURE__ */ e("span", { className: "inline-flex flex-wrap gap-x-1.5", children: d.map((L) => /* @__PURE__ */ e(re, { relCollection: G.one_collection, id: L }, String(L))) })
|
|
607
609
|
] });
|
|
608
610
|
}
|
|
609
611
|
if (Array.isArray(j)) {
|
|
610
|
-
const d =
|
|
612
|
+
const d = a.find((O) => O.many_field === N && O.junction_field), L = d == null ? void 0 : d.one_collection;
|
|
611
613
|
return /* @__PURE__ */ x("div", { className: R, children: [
|
|
612
|
-
/* @__PURE__ */ e("span", { className: k, children:
|
|
613
|
-
j.length === 0 ? /* @__PURE__ */ e("span", { className:
|
|
614
|
-
(
|
|
614
|
+
/* @__PURE__ */ e("span", { className: k, children: P }),
|
|
615
|
+
j.length === 0 ? /* @__PURE__ */ e("span", { className: M, children: "—" }) : L ? /* @__PURE__ */ e("span", { className: "inline-flex flex-wrap gap-x-1.5 gap-y-0.5", children: j.map(
|
|
616
|
+
(O) => L === "nivaro_users" ? /* @__PURE__ */ e(tt, { userId: String(O) }, String(O)) : /* @__PURE__ */ e(re, { relCollection: L, id: O }, String(O))
|
|
615
617
|
) }) : /* @__PURE__ */ x("span", { className: D, children: [
|
|
616
618
|
j.length,
|
|
617
619
|
" item",
|
|
@@ -620,136 +622,136 @@ function ln({
|
|
|
620
622
|
] });
|
|
621
623
|
}
|
|
622
624
|
return /* @__PURE__ */ x("div", { className: R, children: [
|
|
623
|
-
/* @__PURE__ */ e("span", { className: k, children:
|
|
624
|
-
j == null || j === "" ? /* @__PURE__ */ e("span", { className:
|
|
625
|
+
/* @__PURE__ */ e("span", { className: k, children: P }),
|
|
626
|
+
j == null || j === "" ? /* @__PURE__ */ e("span", { className: M, children: "—" }) : /* @__PURE__ */ e("span", { className: D, children: $e(j, H) })
|
|
625
627
|
] });
|
|
626
628
|
};
|
|
627
|
-
return /* @__PURE__ */ e("div", { className: "flex flex-wrap items-baseline gap-x-5 gap-y-1.5 border-t border-slate-100 dark:border-border/60 bg-slate-50/50 dark:bg-white/[0.015] px-5 py-2.5", children:
|
|
629
|
+
return /* @__PURE__ */ e("div", { className: "flex flex-wrap items-baseline gap-x-5 gap-y-1.5 border-t border-slate-100 dark:border-border/60 bg-slate-50/50 dark:bg-white/[0.015] px-5 py-2.5", children: F.map((N) => /* @__PURE__ */ e(it.Fragment, { children: ue(N) }, N)) });
|
|
628
630
|
}
|
|
629
|
-
|
|
631
|
+
const Gn = Ot(function({
|
|
630
632
|
group: t,
|
|
631
|
-
fields:
|
|
632
|
-
draft:
|
|
633
|
-
onChange:
|
|
634
|
-
relations:
|
|
635
|
-
collection:
|
|
636
|
-
itemId:
|
|
637
|
-
errors:
|
|
633
|
+
fields: i,
|
|
634
|
+
draft: a,
|
|
635
|
+
onChange: l,
|
|
636
|
+
relations: o,
|
|
637
|
+
collection: r,
|
|
638
|
+
itemId: s,
|
|
639
|
+
errors: p,
|
|
638
640
|
visibleFields: m,
|
|
639
|
-
lockedFields:
|
|
640
|
-
layoutAiEnabled:
|
|
641
|
-
displayOnly:
|
|
642
|
-
renderField:
|
|
643
|
-
onCountChange:
|
|
644
|
-
isNew:
|
|
645
|
-
fieldValues:
|
|
646
|
-
isOpen:
|
|
647
|
-
onToggle:
|
|
648
|
-
summaryFields:
|
|
649
|
-
m2mCounts:
|
|
650
|
-
o2mCounts:
|
|
651
|
-
o2mAggValues:
|
|
652
|
-
summaryAggConfigs:
|
|
653
|
-
o2mLoading:
|
|
654
|
-
footerSlot:
|
|
655
|
-
ownersCollection:
|
|
656
|
-
ownersItemId:
|
|
657
|
-
ownersAssignment:
|
|
658
|
-
pdfAssignment:
|
|
659
|
-
pdfAttachField:
|
|
660
|
-
pdfFilenameTemplate:
|
|
661
|
-
layoutId:
|
|
662
|
-
hideEmptySummary:
|
|
663
|
-
widgetAssignments:
|
|
664
|
-
widgetApiBase:
|
|
665
|
-
fieldInlineDisplay:
|
|
641
|
+
lockedFields: S,
|
|
642
|
+
layoutAiEnabled: c,
|
|
643
|
+
displayOnly: f,
|
|
644
|
+
renderField: b,
|
|
645
|
+
onCountChange: y,
|
|
646
|
+
isNew: q,
|
|
647
|
+
fieldValues: F,
|
|
648
|
+
isOpen: k,
|
|
649
|
+
onToggle: D,
|
|
650
|
+
summaryFields: M,
|
|
651
|
+
m2mCounts: R,
|
|
652
|
+
o2mCounts: ue,
|
|
653
|
+
o2mAggValues: N,
|
|
654
|
+
summaryAggConfigs: T,
|
|
655
|
+
o2mLoading: me,
|
|
656
|
+
footerSlot: H,
|
|
657
|
+
ownersCollection: P,
|
|
658
|
+
ownersItemId: j,
|
|
659
|
+
ownersAssignment: G,
|
|
660
|
+
pdfAssignment: d,
|
|
661
|
+
pdfAttachField: L,
|
|
662
|
+
pdfFilenameTemplate: O,
|
|
663
|
+
layoutId: U,
|
|
664
|
+
hideEmptySummary: W,
|
|
665
|
+
widgetAssignments: A,
|
|
666
|
+
widgetApiBase: Q,
|
|
667
|
+
fieldInlineDisplay: pe,
|
|
666
668
|
swapConfig: V,
|
|
667
|
-
swapped:
|
|
668
|
-
onSwapToggle:
|
|
669
|
+
swapped: Fe,
|
|
670
|
+
onSwapToggle: je,
|
|
669
671
|
alternateFields: Z,
|
|
670
|
-
alternateWidths:
|
|
671
|
-
deferred:
|
|
672
|
-
onFirstOpen:
|
|
672
|
+
alternateWidths: fe,
|
|
673
|
+
deferred: ie,
|
|
674
|
+
onFirstOpen: se
|
|
673
675
|
}) {
|
|
674
|
-
var
|
|
675
|
-
const [
|
|
676
|
+
var Pe;
|
|
677
|
+
const [dt, ut] = Y(t.is_collapsed ?? !1), [mt, pt] = Y(!1), $ = Jt(), K = (h, _) => Ct($, h, _, { asChild: !0 }), le = (h) => ({ kind: "slot", field: h, group_key: t.key }), Oe = !!($ != null && $.showHidden), [qe, Be] = Y({}), { data: he } = Wt(r), X = ($ == null ? void 0 : $.fold) ?? null, ee = ($ == null ? void 0 : $.reveal) ?? null, [Le, be] = Y(null);
|
|
676
678
|
ne(() => {
|
|
677
|
-
X &&
|
|
679
|
+
X && be(!X.open);
|
|
678
680
|
}, [X == null ? void 0 : X.seq]), ne(() => {
|
|
679
|
-
ee &&
|
|
681
|
+
ee && Rt(ee.target) === t.key && be(!1);
|
|
680
682
|
}, [ee == null ? void 0 : ee.seq]);
|
|
681
|
-
const
|
|
683
|
+
const Ue = D !== void 0, z = Le ?? (Ue ? !k : dt);
|
|
682
684
|
ne(() => {
|
|
683
|
-
|
|
684
|
-
}, [
|
|
685
|
-
const
|
|
686
|
-
|
|
687
|
-
},
|
|
688
|
-
z &&
|
|
689
|
-
},
|
|
690
|
-
if (Te === "new_only" && !
|
|
691
|
-
const te =
|
|
692
|
-
let
|
|
693
|
-
if (t.hide_when_empty &&
|
|
685
|
+
ie && !z && (se == null || se(t.key));
|
|
686
|
+
}, [ie, z, se, t.key]);
|
|
687
|
+
const ge = Le !== null ? () => be((h) => !h) : Ue ? D : () => ut((h) => !h), Me = !$ && U != null, xe = () => {
|
|
688
|
+
Me && lt({ layoutId: Number(U), collection: r, kind: "opened", key: t.key });
|
|
689
|
+
}, ft = () => {
|
|
690
|
+
z && xe(), ge == null || ge();
|
|
691
|
+
}, ht = !f && i.some((h) => p[h.field]), Te = $ ? "always" : t.visibility_mode ?? "always";
|
|
692
|
+
if (Te === "new_only" && !q || Te === "existing_only" && q) return null;
|
|
693
|
+
const te = A ?? [], bt = !q && te.some((h) => h.widget_id != null && qe[h.field] === void 0);
|
|
694
|
+
let ae = !1;
|
|
695
|
+
if (t.hide_when_empty && F && !$ && (ae = F.every(
|
|
694
696
|
(_) => _ == null || _ === "" || Array.isArray(_) && _.length === 0
|
|
695
|
-
) && !
|
|
696
|
-
const
|
|
697
|
-
|
|
697
|
+
) && !bt && te.every((_) => !qe[_.field])), ae && te.length === 0) return null;
|
|
698
|
+
const ye = ke(null), Ne = en(ye), Ge = an(t.icon), gt = Oe ? i : i.filter((h) => !h.hidden), Ie = (Pe = he == null ? void 0 : he.sections) == null ? void 0 : Pe[t.key], xt = Array.isArray(Ie) && Ie.length > 0, yt = (h) => xt ? /* @__PURE__ */ x("div", { className: "relative", children: [
|
|
699
|
+
h,
|
|
698
700
|
/* @__PURE__ */ e("span", { className: "absolute right-[52px] top-1/2 flex -translate-y-1/2", children: /* @__PURE__ */ e(
|
|
699
|
-
|
|
701
|
+
At,
|
|
700
702
|
{
|
|
701
|
-
collection:
|
|
703
|
+
collection: r,
|
|
702
704
|
kind: "section",
|
|
703
705
|
name: t.key,
|
|
704
706
|
label: t.label || t.key
|
|
705
707
|
}
|
|
706
708
|
) })
|
|
707
|
-
] }) :
|
|
709
|
+
] }) : h, _e = (h) => Oe && (h.hidden || !(m.has(h.field) || !m.size));
|
|
708
710
|
return /* @__PURE__ */ x(
|
|
709
711
|
"div",
|
|
710
712
|
{
|
|
711
|
-
"data-loads-on-open":
|
|
713
|
+
"data-loads-on-open": ie ? "" : void 0,
|
|
712
714
|
"data-section-key": t.key,
|
|
713
|
-
className:
|
|
715
|
+
className: E(
|
|
714
716
|
"nvr-section-enter rounded-xl border border-slate-200 bg-white dark:bg-card dark:border-border",
|
|
715
|
-
|
|
716
|
-
|
|
717
|
+
f && "bg-slate-50/60 dark:bg-slate-900/20",
|
|
718
|
+
ae && "hidden"
|
|
717
719
|
),
|
|
718
|
-
onPointerDownCapture: (
|
|
719
|
-
var _,
|
|
720
|
-
(
|
|
720
|
+
onPointerDownCapture: (h) => {
|
|
721
|
+
var _, u;
|
|
722
|
+
(u = (_ = h.target) == null ? void 0 : _.closest) != null && u.call(_, "[data-usage-header]") || xe();
|
|
721
723
|
},
|
|
722
|
-
onFocusCapture: (
|
|
723
|
-
var _,
|
|
724
|
-
(
|
|
724
|
+
onFocusCapture: (h) => {
|
|
725
|
+
var _, u;
|
|
726
|
+
(u = (_ = h.target) == null ? void 0 : _.closest) != null && u.call(_, "[data-usage-header]") || xe();
|
|
725
727
|
},
|
|
726
728
|
children: [
|
|
727
|
-
|
|
728
|
-
|
|
729
|
+
Me && !ae && /* @__PURE__ */ e(un, { layoutId: Number(U), collection: r, sectionKey: t.key }),
|
|
730
|
+
yt(
|
|
729
731
|
/* @__PURE__ */ x(
|
|
730
732
|
"button",
|
|
731
733
|
{
|
|
732
734
|
type: "button",
|
|
733
735
|
"data-usage-header": "",
|
|
734
|
-
onClick:
|
|
735
|
-
"data-design-group-header":
|
|
736
|
-
className:
|
|
736
|
+
onClick: ft,
|
|
737
|
+
"data-design-group-header": $ ? "" : void 0,
|
|
738
|
+
className: E(
|
|
737
739
|
"flex w-full items-center gap-2 px-5 py-3 text-left hover:bg-slate-50/50 dark:hover:bg-white/[0.02] rounded-t-xl",
|
|
738
740
|
// Round the bottom only when nothing renders below the header — an
|
|
739
741
|
// expanded body (or collapsed summary strip) square-joins it, and a
|
|
740
742
|
// rounded hover overlay would leave see-through notches at the seam.
|
|
741
|
-
z && !(
|
|
743
|
+
z && !(M && M.length > 0) && "rounded-b-xl"
|
|
742
744
|
),
|
|
743
745
|
children: [
|
|
744
|
-
|
|
746
|
+
Ge && /* @__PURE__ */ e(Ge, { className: "h-3.5 w-3.5 shrink-0 text-slate-400 dark:text-slate-500" }),
|
|
745
747
|
/* @__PURE__ */ e("span", { className: "font-medium text-[13px] shrink-0 text-slate-800 dark:text-slate-200", children: t.label }),
|
|
746
748
|
/* @__PURE__ */ e("span", { className: "flex-1" }),
|
|
747
|
-
|
|
749
|
+
ht && /* @__PURE__ */ e("span", { className: "nvr-pop h-2 w-2 rounded-full bg-destructive shrink-0" }),
|
|
748
750
|
/* @__PURE__ */ e(
|
|
749
|
-
|
|
751
|
+
Dt,
|
|
750
752
|
{
|
|
751
|
-
"data-design-pass":
|
|
752
|
-
className:
|
|
753
|
+
"data-design-pass": $ ? "" : void 0,
|
|
754
|
+
className: E(
|
|
753
755
|
"h-4 w-4 text-slate-400 dark:text-slate-500 transition-transform duration-200",
|
|
754
756
|
z && "-rotate-90"
|
|
755
757
|
)
|
|
@@ -759,93 +761,93 @@ function qn({
|
|
|
759
761
|
}
|
|
760
762
|
)
|
|
761
763
|
),
|
|
762
|
-
z &&
|
|
763
|
-
|
|
764
|
+
z && M && M.length > 0 && /* @__PURE__ */ e(
|
|
765
|
+
dn,
|
|
764
766
|
{
|
|
765
|
-
summaryFields:
|
|
766
|
-
fields:
|
|
767
|
-
draft:
|
|
768
|
-
relations:
|
|
769
|
-
collection:
|
|
770
|
-
itemId:
|
|
771
|
-
ownersCollection:
|
|
772
|
-
ownersItemId:
|
|
773
|
-
ownersAssignment:
|
|
774
|
-
m2mCounts:
|
|
775
|
-
o2mCounts:
|
|
776
|
-
o2mAggValues:
|
|
777
|
-
summaryAggConfigs:
|
|
778
|
-
o2mLoading:
|
|
779
|
-
hideEmpty: !!t.summary_hide_empty || !!
|
|
767
|
+
summaryFields: M,
|
|
768
|
+
fields: i,
|
|
769
|
+
draft: a,
|
|
770
|
+
relations: o,
|
|
771
|
+
collection: r,
|
|
772
|
+
itemId: s,
|
|
773
|
+
ownersCollection: P,
|
|
774
|
+
ownersItemId: j,
|
|
775
|
+
ownersAssignment: G,
|
|
776
|
+
m2mCounts: R,
|
|
777
|
+
o2mCounts: ue,
|
|
778
|
+
o2mAggValues: N,
|
|
779
|
+
summaryAggConfigs: T,
|
|
780
|
+
o2mLoading: me,
|
|
781
|
+
hideEmpty: !!t.summary_hide_empty || !!W
|
|
780
782
|
}
|
|
781
783
|
),
|
|
782
|
-
z && !
|
|
783
|
-
|
|
784
|
+
z && !ie && t.hide_when_empty && te.length > 0 && /* @__PURE__ */ e("div", { className: "hidden", children: te.filter((h) => h.widget_id != null).map((h) => /* @__PURE__ */ e(
|
|
785
|
+
Ye,
|
|
784
786
|
{
|
|
785
|
-
widgetId:
|
|
786
|
-
inputBindings:
|
|
787
|
-
itemDraft:
|
|
787
|
+
widgetId: h.widget_id,
|
|
788
|
+
inputBindings: Xe(h.input_bindings),
|
|
789
|
+
itemDraft: a,
|
|
788
790
|
frameless: !0,
|
|
789
|
-
apiBase:
|
|
790
|
-
onContentChange: (_) =>
|
|
791
|
-
(
|
|
791
|
+
apiBase: Q,
|
|
792
|
+
onContentChange: (_) => Be(
|
|
793
|
+
(u) => u[h.field] === _ ? u : { ...u, [h.field]: _ }
|
|
792
794
|
)
|
|
793
795
|
},
|
|
794
|
-
|
|
796
|
+
h.field
|
|
795
797
|
)) }),
|
|
796
798
|
!z && /* @__PURE__ */ x("div", { className: "nvr-expand-in border-t border-slate-100 px-5 py-4", children: [
|
|
797
|
-
!
|
|
799
|
+
!f && /* @__PURE__ */ e(tn, { group: t, className: "mb-3" }),
|
|
798
800
|
(() => {
|
|
799
|
-
const
|
|
800
|
-
rows:
|
|
801
|
-
folded: (
|
|
802
|
-
keep: (
|
|
803
|
-
filled: (
|
|
804
|
-
}), _ =
|
|
805
|
-
(
|
|
806
|
-
_k: `row:${
|
|
807
|
-
sort:
|
|
801
|
+
const h = Mt(gt, {
|
|
802
|
+
rows: f ? [] : It(t.swap_config).rows,
|
|
803
|
+
folded: (u) => !f && Gt(u._overrides),
|
|
804
|
+
keep: (u) => !!u.required,
|
|
805
|
+
filled: (u) => !Tt(a[u.field]) || !!p[u.field]
|
|
806
|
+
}), _ = h.units.map(
|
|
807
|
+
(u) => u.kind === "row" ? {
|
|
808
|
+
_k: `row:${u.row.key}`,
|
|
809
|
+
sort: u.members[0].sort ?? 0,
|
|
808
810
|
_t: "row",
|
|
809
|
-
row:
|
|
810
|
-
members:
|
|
811
|
-
} : { _k:
|
|
811
|
+
row: u.row,
|
|
812
|
+
members: u.members
|
|
813
|
+
} : { _k: u.field.field, sort: u.field.sort ?? 0, _t: "field", f: u.field }
|
|
812
814
|
);
|
|
813
|
-
|
|
815
|
+
G && _.push({
|
|
814
816
|
_k: "__owners__",
|
|
815
|
-
sort:
|
|
817
|
+
sort: G.sort,
|
|
816
818
|
_t: "owners",
|
|
817
|
-
slot:
|
|
818
|
-
}),
|
|
819
|
+
slot: G
|
|
820
|
+
}), d && _.push({
|
|
819
821
|
_k: "__pdf__",
|
|
820
|
-
sort:
|
|
822
|
+
sort: d.sort,
|
|
821
823
|
_t: "pdf",
|
|
822
|
-
slot:
|
|
824
|
+
slot: d
|
|
823
825
|
});
|
|
824
|
-
for (const
|
|
825
|
-
_.push({ _k:
|
|
826
|
-
return _.sort((
|
|
826
|
+
for (const u of A ?? [])
|
|
827
|
+
_.push({ _k: u.field, sort: u.sort, _t: "widget", slot: u });
|
|
828
|
+
return _.sort((u, B) => u.sort - B.sort), $ && _.length === 0 && h.folded.length === 0 ? /* @__PURE__ */ e(Vt, {}) : f ? /* @__PURE__ */ x(
|
|
827
829
|
"div",
|
|
828
830
|
{
|
|
829
|
-
ref:
|
|
830
|
-
className:
|
|
831
|
+
ref: ye,
|
|
832
|
+
className: E($ && "relative", "grid grid-cols-12 gap-x-6 gap-y-3"),
|
|
831
833
|
children: [
|
|
832
|
-
/* @__PURE__ */ e(
|
|
833
|
-
_.map((
|
|
834
|
-
if (
|
|
835
|
-
const v =
|
|
836
|
-
return
|
|
837
|
-
|
|
834
|
+
/* @__PURE__ */ e(ve, { gapClass: "gap-x-6" }),
|
|
835
|
+
_.map((u) => {
|
|
836
|
+
if (u._t === "owners") {
|
|
837
|
+
const v = u.slot.col_span ?? 12;
|
|
838
|
+
return K(
|
|
839
|
+
le("__owners__"),
|
|
838
840
|
/* @__PURE__ */ e(
|
|
839
841
|
"div",
|
|
840
842
|
{
|
|
841
843
|
className: "min-w-0",
|
|
842
844
|
style: { gridColumn: `span ${v}` },
|
|
843
845
|
children: /* @__PURE__ */ e(
|
|
844
|
-
|
|
846
|
+
Ze,
|
|
845
847
|
{
|
|
846
|
-
collection:
|
|
847
|
-
itemId:
|
|
848
|
-
label:
|
|
848
|
+
collection: r,
|
|
849
|
+
itemId: s,
|
|
850
|
+
label: u.slot.label_override || "Owners"
|
|
849
851
|
}
|
|
850
852
|
)
|
|
851
853
|
},
|
|
@@ -853,136 +855,136 @@ function qn({
|
|
|
853
855
|
)
|
|
854
856
|
);
|
|
855
857
|
}
|
|
856
|
-
if (
|
|
857
|
-
const
|
|
858
|
-
(v) => v.many_collection ===
|
|
858
|
+
if (u._t === "pdf" || u._t === "widget" || u._t === "row") return null;
|
|
859
|
+
const B = u.f, g = o.find(
|
|
860
|
+
(v) => v.many_collection === r && v.many_field === B.field && !v.junction_field
|
|
859
861
|
);
|
|
860
|
-
return
|
|
861
|
-
{ kind: "field", field:
|
|
862
|
+
return K(
|
|
863
|
+
{ kind: "field", field: B.field, group_key: t.key },
|
|
862
864
|
/* @__PURE__ */ x(
|
|
863
865
|
"div",
|
|
864
866
|
{
|
|
865
867
|
className: "min-w-0",
|
|
866
|
-
style: { gridColumn: `span ${
|
|
868
|
+
style: { gridColumn: `span ${Qe(B.options, Ne)}` },
|
|
867
869
|
children: [
|
|
868
|
-
/* @__PURE__ */ e("dt", { className: "text-[11px] font-medium text-slate-400 truncate", children:
|
|
869
|
-
/* @__PURE__ */ e("dd", { className: "mt-0.5 break-words", children: (
|
|
870
|
-
const v =
|
|
871
|
-
return
|
|
872
|
-
})() :
|
|
870
|
+
/* @__PURE__ */ e("dt", { className: "text-[11px] font-medium text-slate-400 truncate", children: B.label || ot(B.field) }),
|
|
871
|
+
/* @__PURE__ */ e("dd", { className: "mt-0.5 break-words", children: (g == null ? void 0 : g.one_collection) === "nivaro_users" ? (() => {
|
|
872
|
+
const v = a[B.field], C = Array.isArray(v) ? v : v != null && v !== "" ? [v] : [];
|
|
873
|
+
return C.length === 0 ? /* @__PURE__ */ e("span", { className: "text-[13px] text-slate-400", children: "—" }) : /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-1.5", children: C.map((I) => /* @__PURE__ */ e(ct, { userId: String(I) }, String(I))) });
|
|
874
|
+
})() : g != null && g.one_collection ? /* @__PURE__ */ e(re, { relCollection: g.one_collection, id: a[B.field] }) : /* @__PURE__ */ e("span", { className: "text-[13px] text-slate-700", children: $e(a[B.field], B) }) })
|
|
873
875
|
]
|
|
874
876
|
},
|
|
875
|
-
|
|
877
|
+
B.field
|
|
876
878
|
)
|
|
877
879
|
);
|
|
878
880
|
})
|
|
879
881
|
]
|
|
880
882
|
}
|
|
881
883
|
) : (() => {
|
|
882
|
-
const
|
|
883
|
-
var Ke,
|
|
884
|
-
if (
|
|
884
|
+
const u = (g) => {
|
|
885
|
+
var Ke, Ee;
|
|
886
|
+
if (g._t === "row")
|
|
885
887
|
return /* @__PURE__ */ e(
|
|
886
|
-
|
|
888
|
+
Qt,
|
|
887
889
|
{
|
|
888
|
-
row:
|
|
889
|
-
members:
|
|
890
|
-
containerWidth:
|
|
891
|
-
errors:
|
|
892
|
-
renderMember: (w) =>
|
|
890
|
+
row: g.row,
|
|
891
|
+
members: g.members,
|
|
892
|
+
containerWidth: Ne,
|
|
893
|
+
errors: p,
|
|
894
|
+
renderMember: (w) => K(
|
|
893
895
|
{ kind: "field", field: w.field, group_key: t.key },
|
|
894
896
|
/* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(
|
|
895
|
-
|
|
897
|
+
Se,
|
|
896
898
|
{
|
|
897
|
-
field:
|
|
898
|
-
draft:
|
|
899
|
-
onChange:
|
|
900
|
-
relations:
|
|
901
|
-
collection:
|
|
902
|
-
itemId:
|
|
903
|
-
error:
|
|
899
|
+
field: Zt(w),
|
|
900
|
+
draft: a,
|
|
901
|
+
onChange: l,
|
|
902
|
+
relations: o,
|
|
903
|
+
collection: r,
|
|
904
|
+
itemId: s,
|
|
905
|
+
error: p[w.field],
|
|
904
906
|
visible: m.has(w.field) || !m.size,
|
|
905
|
-
forceVisible:
|
|
906
|
-
locked:
|
|
907
|
-
layoutAiEnabled:
|
|
908
|
-
renderField:
|
|
909
|
-
onCountChange:
|
|
907
|
+
forceVisible: _e(w) || void 0,
|
|
908
|
+
locked: S.has(w.field),
|
|
909
|
+
layoutAiEnabled: c,
|
|
910
|
+
renderField: b,
|
|
911
|
+
onCountChange: y
|
|
910
912
|
}
|
|
911
913
|
) }, w.field)
|
|
912
914
|
)
|
|
913
915
|
},
|
|
914
|
-
|
|
916
|
+
g._k
|
|
915
917
|
);
|
|
916
|
-
if (
|
|
917
|
-
const w =
|
|
918
|
-
return
|
|
919
|
-
|
|
918
|
+
if (g._t === "owners") {
|
|
919
|
+
const w = g.slot.col_span ?? 12;
|
|
920
|
+
return K(
|
|
921
|
+
le("__owners__"),
|
|
920
922
|
/* @__PURE__ */ e("div", { style: { gridColumn: `span ${w}` }, children: /* @__PURE__ */ e(
|
|
921
|
-
|
|
923
|
+
Ze,
|
|
922
924
|
{
|
|
923
|
-
collection:
|
|
924
|
-
itemId:
|
|
925
|
-
label:
|
|
925
|
+
collection: r,
|
|
926
|
+
itemId: s,
|
|
927
|
+
label: g.slot.label_override || "Owners"
|
|
926
928
|
}
|
|
927
929
|
) }, "__owners__")
|
|
928
930
|
);
|
|
929
931
|
}
|
|
930
|
-
if (
|
|
931
|
-
if (
|
|
932
|
-
const w =
|
|
933
|
-
return
|
|
934
|
-
|
|
932
|
+
if (g._t === "pdf") {
|
|
933
|
+
if (!U) return null;
|
|
934
|
+
const w = g.slot.col_span ?? 12, J = ((Ke = g.slot.label_override) == null ? void 0 : Ke.trim()) || "Generate PDF";
|
|
935
|
+
return K(
|
|
936
|
+
le("__pdf__"),
|
|
935
937
|
/* @__PURE__ */ e("div", { style: { gridColumn: `span ${w}` }, children: /* @__PURE__ */ e(
|
|
936
|
-
|
|
938
|
+
on,
|
|
937
939
|
{
|
|
938
|
-
collection:
|
|
939
|
-
itemId:
|
|
940
|
-
layoutId:
|
|
941
|
-
attachField:
|
|
942
|
-
filenameTemplate:
|
|
943
|
-
label:
|
|
940
|
+
collection: r,
|
|
941
|
+
itemId: s,
|
|
942
|
+
layoutId: U,
|
|
943
|
+
attachField: L ?? null,
|
|
944
|
+
filenameTemplate: O,
|
|
945
|
+
label: J
|
|
944
946
|
}
|
|
945
947
|
) }, "__pdf__")
|
|
946
948
|
);
|
|
947
949
|
}
|
|
948
|
-
if (
|
|
949
|
-
if (!
|
|
950
|
-
const w =
|
|
951
|
-
return
|
|
952
|
-
|
|
950
|
+
if (g._t === "widget") {
|
|
951
|
+
if (!g.slot.widget_id) return null;
|
|
952
|
+
const w = g.slot.col_span ?? 12, J = Xe(g.slot.input_bindings);
|
|
953
|
+
return K(
|
|
954
|
+
le(g.slot.field),
|
|
953
955
|
/* @__PURE__ */ e("div", { style: { gridColumn: `span ${w}` }, children: /* @__PURE__ */ e(
|
|
954
|
-
|
|
956
|
+
Ye,
|
|
955
957
|
{
|
|
956
|
-
widgetId:
|
|
957
|
-
inputBindings:
|
|
958
|
-
itemDraft:
|
|
959
|
-
label:
|
|
960
|
-
defaultExpanded:
|
|
958
|
+
widgetId: g.slot.widget_id,
|
|
959
|
+
inputBindings: J,
|
|
960
|
+
itemDraft: a,
|
|
961
|
+
label: g.slot.label_override ?? void 0,
|
|
962
|
+
defaultExpanded: g.slot.default_expanded ?? !0,
|
|
961
963
|
frameless: !0,
|
|
962
|
-
apiBase:
|
|
963
|
-
onContentChange: (We) =>
|
|
964
|
-
(
|
|
964
|
+
apiBase: Q,
|
|
965
|
+
onContentChange: (We) => Be(
|
|
966
|
+
(we) => we[g.slot.field] === We ? we : { ...we, [g.slot.field]: We }
|
|
965
967
|
)
|
|
966
968
|
}
|
|
967
|
-
) },
|
|
969
|
+
) }, g.slot.field)
|
|
968
970
|
);
|
|
969
971
|
}
|
|
970
|
-
const v =
|
|
971
|
-
(w) => w.many_collection ===
|
|
972
|
-
)) == null ? void 0 :
|
|
973
|
-
const w =
|
|
972
|
+
const v = g.f, C = pe == null ? void 0 : pe[v.field], I = C == null ? void 0 : C.entries, Nt = (C == null ? void 0 : C.separator) ?? null, oe = a[v.field], Ve = oe != null && oe !== "", Ce = I != null && I.length && Ve ? ((Ee = o.find(
|
|
973
|
+
(w) => w.many_collection === r && w.many_field === v.field && !w.junction_field
|
|
974
|
+
)) == null ? void 0 : Ee.one_collection) ?? null : null, Je = (V == null ? void 0 : V.enabled) && v.field === V.primary_field, Re = (() => {
|
|
975
|
+
const w = a[(V == null ? void 0 : V.primary_field) ?? ""];
|
|
974
976
|
return w != null && w !== "";
|
|
975
|
-
})(),
|
|
976
|
-
const
|
|
977
|
-
return
|
|
978
|
-
}),
|
|
977
|
+
})(), ze = (Z ?? []).some((w) => {
|
|
978
|
+
const J = a[w.field];
|
|
979
|
+
return J != null && J !== "";
|
|
980
|
+
}), _t = Je && je ? /* @__PURE__ */ x("span", { className: "inline-flex items-center gap-1.5", children: [
|
|
979
981
|
/* @__PURE__ */ e(
|
|
980
982
|
"button",
|
|
981
983
|
{
|
|
982
984
|
type: "button",
|
|
983
|
-
onClick:
|
|
985
|
+
onClick: je,
|
|
984
986
|
className: "inline-flex items-center rounded px-1.5 py-0.5 text-[10px] font-medium text-nvr-cyan hover:bg-nvr-cyan/10 transition-colors",
|
|
985
|
-
children:
|
|
987
|
+
children: Fe ? V.back_label ?? "Back" : V.toggle_label ?? "Enter manually"
|
|
986
988
|
}
|
|
987
989
|
),
|
|
988
990
|
/* @__PURE__ */ x(
|
|
@@ -990,7 +992,7 @@ function qn({
|
|
|
990
992
|
{
|
|
991
993
|
className: [
|
|
992
994
|
"inline-flex items-center gap-0.5 rounded px-1 py-0.5 text-[9px] font-medium",
|
|
993
|
-
|
|
995
|
+
Re ? "bg-emerald-50 text-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400" : "bg-slate-100 text-slate-400 dark:bg-slate-800 dark:text-slate-500"
|
|
994
996
|
].join(" "),
|
|
995
997
|
title: "Original field",
|
|
996
998
|
children: [
|
|
@@ -999,7 +1001,7 @@ function qn({
|
|
|
999
1001
|
{
|
|
1000
1002
|
className: [
|
|
1001
1003
|
"h-1.5 w-1.5 rounded-full",
|
|
1002
|
-
|
|
1004
|
+
Re ? "bg-emerald-500" : "bg-slate-300 dark:bg-slate-600"
|
|
1003
1005
|
].join(" ")
|
|
1004
1006
|
}
|
|
1005
1007
|
),
|
|
@@ -1012,7 +1014,7 @@ function qn({
|
|
|
1012
1014
|
{
|
|
1013
1015
|
className: [
|
|
1014
1016
|
"inline-flex items-center gap-0.5 rounded px-1 py-0.5 text-[9px] font-medium",
|
|
1015
|
-
|
|
1017
|
+
ze ? "bg-emerald-50 text-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400" : "bg-slate-100 text-slate-400 dark:bg-slate-800 dark:text-slate-500"
|
|
1016
1018
|
].join(" "),
|
|
1017
1019
|
title: "Manual fields",
|
|
1018
1020
|
children: [
|
|
@@ -1021,7 +1023,7 @@ function qn({
|
|
|
1021
1023
|
{
|
|
1022
1024
|
className: [
|
|
1023
1025
|
"h-1.5 w-1.5 rounded-full",
|
|
1024
|
-
|
|
1026
|
+
ze ? "bg-emerald-500" : "bg-slate-300 dark:bg-slate-600"
|
|
1025
1027
|
].join(" ")
|
|
1026
1028
|
}
|
|
1027
1029
|
),
|
|
@@ -1029,61 +1031,61 @@ function qn({
|
|
|
1029
1031
|
]
|
|
1030
1032
|
}
|
|
1031
1033
|
)
|
|
1032
|
-
] }) : void 0,
|
|
1033
|
-
const
|
|
1034
|
-
return /* @__PURE__ */ e("div", { style: { gridColumn: `span ${
|
|
1035
|
-
|
|
1034
|
+
] }) : void 0, wt = Je && Fe && (Z != null && Z.length) ? /* @__PURE__ */ e("div", { className: "mt-2 rounded-lg border border-slate-200 bg-slate-50 dark:border-border dark:bg-slate-900/40 p-3", children: /* @__PURE__ */ e("div", { className: "grid grid-cols-2 gap-3", children: Z.map((w) => {
|
|
1035
|
+
const J = (fe == null ? void 0 : fe[w.field]) ?? 2;
|
|
1036
|
+
return /* @__PURE__ */ e("div", { style: { gridColumn: `span ${J}` }, children: /* @__PURE__ */ e(
|
|
1037
|
+
Se,
|
|
1036
1038
|
{
|
|
1037
1039
|
field: w,
|
|
1038
|
-
draft:
|
|
1039
|
-
onChange:
|
|
1040
|
-
relations:
|
|
1041
|
-
collection:
|
|
1042
|
-
itemId:
|
|
1043
|
-
error:
|
|
1040
|
+
draft: a,
|
|
1041
|
+
onChange: l,
|
|
1042
|
+
relations: o,
|
|
1043
|
+
collection: r,
|
|
1044
|
+
itemId: s,
|
|
1045
|
+
error: p[w.field],
|
|
1044
1046
|
visible: !0,
|
|
1045
1047
|
forceVisible: !0,
|
|
1046
|
-
locked:
|
|
1047
|
-
layoutAiEnabled:
|
|
1048
|
-
renderField:
|
|
1049
|
-
onCountChange:
|
|
1048
|
+
locked: S.has(w.field),
|
|
1049
|
+
layoutAiEnabled: c,
|
|
1050
|
+
renderField: b,
|
|
1051
|
+
onCountChange: y
|
|
1050
1052
|
}
|
|
1051
1053
|
) }, w.field);
|
|
1052
|
-
}) }) }) : void 0,
|
|
1053
|
-
|
|
1054
|
+
}) }) }) : void 0, He = /* @__PURE__ */ e(
|
|
1055
|
+
Se,
|
|
1054
1056
|
{
|
|
1055
1057
|
field: v,
|
|
1056
|
-
draft:
|
|
1057
|
-
onChange:
|
|
1058
|
-
relations:
|
|
1059
|
-
collection:
|
|
1060
|
-
itemId:
|
|
1061
|
-
error:
|
|
1058
|
+
draft: a,
|
|
1059
|
+
onChange: l,
|
|
1060
|
+
relations: o,
|
|
1061
|
+
collection: r,
|
|
1062
|
+
itemId: s,
|
|
1063
|
+
error: p[v.field],
|
|
1062
1064
|
visible: m.has(v.field) || !m.size,
|
|
1063
|
-
forceVisible:
|
|
1064
|
-
locked:
|
|
1065
|
-
layoutAiEnabled:
|
|
1066
|
-
renderField:
|
|
1067
|
-
onCountChange:
|
|
1068
|
-
swapButton:
|
|
1069
|
-
swapContent:
|
|
1065
|
+
forceVisible: _e(v) || void 0,
|
|
1066
|
+
locked: S.has(v.field),
|
|
1067
|
+
layoutAiEnabled: c,
|
|
1068
|
+
renderField: b,
|
|
1069
|
+
onCountChange: y,
|
|
1070
|
+
swapButton: _t,
|
|
1071
|
+
swapContent: wt
|
|
1070
1072
|
}
|
|
1071
1073
|
);
|
|
1072
|
-
return
|
|
1074
|
+
return K(
|
|
1073
1075
|
{ kind: "field", field: v.field, group_key: t.key },
|
|
1074
1076
|
/* @__PURE__ */ x(
|
|
1075
1077
|
"div",
|
|
1076
1078
|
{
|
|
1077
|
-
style: { gridColumn: `span ${
|
|
1079
|
+
style: { gridColumn: `span ${Qe(v.options, Ne)}` },
|
|
1078
1080
|
children: [
|
|
1079
|
-
|
|
1080
|
-
(
|
|
1081
|
-
|
|
1081
|
+
_e(v) ? /* @__PURE__ */ e("div", { "data-design-hidden": "", className: "opacity-40", children: He }) : He,
|
|
1082
|
+
(I == null ? void 0 : I.length) && Ve && Ce && /* @__PURE__ */ e(
|
|
1083
|
+
ln,
|
|
1082
1084
|
{
|
|
1083
|
-
relCollection:
|
|
1084
|
-
relId:
|
|
1085
|
-
entries:
|
|
1086
|
-
separator:
|
|
1085
|
+
relCollection: Ce,
|
|
1086
|
+
relId: oe,
|
|
1087
|
+
entries: I,
|
|
1088
|
+
separator: Nt
|
|
1087
1089
|
}
|
|
1088
1090
|
)
|
|
1089
1091
|
]
|
|
@@ -1091,39 +1093,39 @@ function qn({
|
|
|
1091
1093
|
v.field
|
|
1092
1094
|
)
|
|
1093
1095
|
);
|
|
1094
|
-
},
|
|
1095
|
-
_k:
|
|
1096
|
-
sort:
|
|
1096
|
+
}, B = h.folded.map((g) => ({
|
|
1097
|
+
_k: g.field,
|
|
1098
|
+
sort: g.sort ?? 0,
|
|
1097
1099
|
_t: "field",
|
|
1098
|
-
f:
|
|
1100
|
+
f: g
|
|
1099
1101
|
}));
|
|
1100
|
-
return /* @__PURE__ */ x(
|
|
1102
|
+
return /* @__PURE__ */ x(vt, { children: [
|
|
1101
1103
|
/* @__PURE__ */ x(
|
|
1102
1104
|
"div",
|
|
1103
1105
|
{
|
|
1104
|
-
ref:
|
|
1105
|
-
className:
|
|
1106
|
+
ref: ye,
|
|
1107
|
+
className: E($ && "relative", "grid grid-cols-12 gap-4 items-start"),
|
|
1106
1108
|
children: [
|
|
1107
|
-
/* @__PURE__ */ e(
|
|
1108
|
-
_.map(
|
|
1109
|
+
/* @__PURE__ */ e(ve, {}),
|
|
1110
|
+
_.map(u)
|
|
1109
1111
|
]
|
|
1110
1112
|
}
|
|
1111
1113
|
),
|
|
1112
1114
|
/* @__PURE__ */ e(
|
|
1113
|
-
|
|
1115
|
+
Yt,
|
|
1114
1116
|
{
|
|
1115
|
-
count:
|
|
1116
|
-
open:
|
|
1117
|
-
forcedOpen:
|
|
1118
|
-
design:
|
|
1119
|
-
onToggle: () =>
|
|
1117
|
+
count: B.length,
|
|
1118
|
+
open: mt,
|
|
1119
|
+
forcedOpen: h.forcedOpen,
|
|
1120
|
+
design: !!$,
|
|
1121
|
+
onToggle: () => pt((g) => !g),
|
|
1120
1122
|
children: /* @__PURE__ */ x(
|
|
1121
1123
|
"div",
|
|
1122
1124
|
{
|
|
1123
|
-
className:
|
|
1125
|
+
className: E($ && "relative", "grid grid-cols-12 gap-4 items-start"),
|
|
1124
1126
|
children: [
|
|
1125
|
-
/* @__PURE__ */ e(
|
|
1126
|
-
|
|
1127
|
+
/* @__PURE__ */ e(ve, {}),
|
|
1128
|
+
B.map(u)
|
|
1127
1129
|
]
|
|
1128
1130
|
}
|
|
1129
1131
|
)
|
|
@@ -1132,30 +1134,30 @@ function qn({
|
|
|
1132
1134
|
] });
|
|
1133
1135
|
})();
|
|
1134
1136
|
})(),
|
|
1135
|
-
|
|
1137
|
+
H && /* @__PURE__ */ e("div", { className: "mt-4", children: H })
|
|
1136
1138
|
] })
|
|
1137
1139
|
]
|
|
1138
1140
|
}
|
|
1139
1141
|
);
|
|
1140
|
-
}
|
|
1141
|
-
function
|
|
1142
|
-
layoutId:
|
|
1143
|
-
collection:
|
|
1142
|
+
}, rn);
|
|
1143
|
+
function un({
|
|
1144
|
+
layoutId: n,
|
|
1145
|
+
collection: t,
|
|
1144
1146
|
sectionKey: i
|
|
1145
1147
|
}) {
|
|
1146
1148
|
return ne(() => {
|
|
1147
|
-
|
|
1148
|
-
}, [
|
|
1149
|
+
lt({ layoutId: n, collection: t, kind: "shown", key: i });
|
|
1150
|
+
}, [n, t, i]), null;
|
|
1149
1151
|
}
|
|
1150
1152
|
export {
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1153
|
+
Gn as GroupSection,
|
|
1154
|
+
ln as InlineDisplay,
|
|
1155
|
+
Ze as OwnersInline,
|
|
1156
|
+
sn as OwnersInlineCompact,
|
|
1155
1157
|
re as RelationCell,
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1158
|
+
Tn as StripFieldValue,
|
|
1159
|
+
ct as UserChip,
|
|
1160
|
+
Vn as UserRosterCluster,
|
|
1161
|
+
$e as formatDisplayValue,
|
|
1162
|
+
cn as useChangePulse
|
|
1161
1163
|
};
|