@adoptai/genui-components 0.1.68 → 0.1.69
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/composites/download-card/resolver.cjs +152 -62
- package/dist/composites/download-card/resolver.cjs.map +1 -1
- package/dist/composites/download-card/resolver.js +94 -4
- package/dist/composites/download-card/resolver.js.map +1 -1
- package/dist/index.cjs +373 -283
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +160 -70
- package/dist/index.js.map +1 -1
- package/dist/renderer.cjs +305 -215
- package/dist/renderer.cjs.map +1 -1
- package/dist/renderer.js +154 -64
- package/dist/renderer.js.map +1 -1
- package/dist/resolver.cjs +304 -214
- package/dist/resolver.cjs.map +1 -1
- package/dist/resolver.js +154 -64
- package/dist/resolver.js.map +1 -1
- package/dist/shared/fileType.d.ts +1 -1
- package/dist/shared/fileType.d.ts.map +1 -1
- package/dist/shared/viewers/HtmlViewer.d.ts +12 -0
- package/dist/shared/viewers/HtmlViewer.d.ts.map +1 -0
- package/dist/shared/viewers/PreviewHost.d.ts.map +1 -1
- package/dist/tool-definitions.json +2 -2
- package/package.json +1 -1
package/dist/renderer.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var React46 = require('react');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var dagre = require('@dagrejs/dagre');
|
|
7
7
|
var reactDom = require('react-dom');
|
|
@@ -37,7 +37,7 @@ function _interopNamespace(e) {
|
|
|
37
37
|
return Object.freeze(n);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
var
|
|
40
|
+
var React46__default = /*#__PURE__*/_interopDefault(React46);
|
|
41
41
|
var dagre__default = /*#__PURE__*/_interopDefault(dagre);
|
|
42
42
|
var XLSX__namespace = /*#__PURE__*/_interopNamespace(XLSX);
|
|
43
43
|
var Papa__default = /*#__PURE__*/_interopDefault(Papa);
|
|
@@ -125,7 +125,7 @@ var init_theme = __esm({
|
|
|
125
125
|
}
|
|
126
126
|
});
|
|
127
127
|
function useTheme() {
|
|
128
|
-
return
|
|
128
|
+
return React46.useContext(GenUIThemeContext);
|
|
129
129
|
}
|
|
130
130
|
var DEFAULT_TOKENS, GenUIThemeContext;
|
|
131
131
|
var init_ThemeContext = __esm({
|
|
@@ -147,7 +147,7 @@ var init_ThemeContext = __esm({
|
|
|
147
147
|
SECONDARY,
|
|
148
148
|
CHART_PALETTE: [...CHART_PALETTE]
|
|
149
149
|
};
|
|
150
|
-
GenUIThemeContext =
|
|
150
|
+
GenUIThemeContext = React46.createContext(DEFAULT_TOKENS);
|
|
151
151
|
}
|
|
152
152
|
});
|
|
153
153
|
function renderInline(text) {
|
|
@@ -883,11 +883,11 @@ async function getMermaid(t) {
|
|
|
883
883
|
}
|
|
884
884
|
function MermaidFallback({ diagram, title }) {
|
|
885
885
|
const tokens = useTheme();
|
|
886
|
-
const [svg, setSvg] =
|
|
887
|
-
const [err, setErr] =
|
|
888
|
-
const [full, setFull] =
|
|
889
|
-
const idRef =
|
|
890
|
-
|
|
886
|
+
const [svg, setSvg] = React46.useState("");
|
|
887
|
+
const [err, setErr] = React46.useState(false);
|
|
888
|
+
const [full, setFull] = React46.useState(false);
|
|
889
|
+
const idRef = React46.useRef(0);
|
|
890
|
+
React46.useEffect(() => {
|
|
891
891
|
const id = ++renderSeq;
|
|
892
892
|
idRef.current = id;
|
|
893
893
|
setErr(false);
|
|
@@ -956,7 +956,7 @@ function FullscreenModalInner({ nodes, edges, title, onClose }) {
|
|
|
956
956
|
] }) });
|
|
957
957
|
}
|
|
958
958
|
function FullscreenModal({ nodes, edges, title, onClose }) {
|
|
959
|
-
|
|
959
|
+
React46.useEffect(() => {
|
|
960
960
|
const h = (e) => {
|
|
961
961
|
if (e.key === "Escape") onClose();
|
|
962
962
|
};
|
|
@@ -969,8 +969,8 @@ function FullscreenModal({ nodes, edges, title, onClose }) {
|
|
|
969
969
|
);
|
|
970
970
|
}
|
|
971
971
|
function usePrefersReducedMotion() {
|
|
972
|
-
const [reduced, setReduced] =
|
|
973
|
-
|
|
972
|
+
const [reduced, setReduced] = React46.useState(false);
|
|
973
|
+
React46.useEffect(() => {
|
|
974
974
|
var _a;
|
|
975
975
|
if (typeof matchMedia === "undefined") return;
|
|
976
976
|
const mq = matchMedia("(prefers-reduced-motion: reduce)");
|
|
@@ -1014,9 +1014,9 @@ function topoOrder(nodeIds, edges) {
|
|
|
1014
1014
|
}
|
|
1015
1015
|
function useAutoplay(order, enabled) {
|
|
1016
1016
|
const reduced = usePrefersReducedMotion();
|
|
1017
|
-
const [step, setStep] =
|
|
1017
|
+
const [step, setStep] = React46.useState(0);
|
|
1018
1018
|
const key = order.join("|");
|
|
1019
|
-
|
|
1019
|
+
React46.useEffect(() => {
|
|
1020
1020
|
if (!enabled || reduced || order.length === 0) {
|
|
1021
1021
|
setStep(0);
|
|
1022
1022
|
return;
|
|
@@ -1038,7 +1038,7 @@ function useAutoplay(order, enabled) {
|
|
|
1038
1038
|
timer = setTimeout(tick, 850);
|
|
1039
1039
|
return () => clearTimeout(timer);
|
|
1040
1040
|
}, [enabled, reduced, key]);
|
|
1041
|
-
return
|
|
1041
|
+
return React46.useMemo(() => {
|
|
1042
1042
|
const m = {};
|
|
1043
1043
|
order.forEach((id, i) => {
|
|
1044
1044
|
m[id] = i < step ? "done" : i === step ? "active" : "pending";
|
|
@@ -1060,13 +1060,13 @@ function resolveStates(nodes, nodeStates) {
|
|
|
1060
1060
|
}
|
|
1061
1061
|
function Inner({ diagram, title, autoplay, nodeStates }) {
|
|
1062
1062
|
const tokens = useTheme();
|
|
1063
|
-
const [full, setFull] =
|
|
1064
|
-
const [focused, setFocused] =
|
|
1065
|
-
const [boxW, setBoxW] =
|
|
1066
|
-
const containerRef =
|
|
1067
|
-
const parsed =
|
|
1068
|
-
const layout =
|
|
1069
|
-
const themedEdges =
|
|
1063
|
+
const [full, setFull] = React46.useState(false);
|
|
1064
|
+
const [focused, setFocused] = React46.useState(false);
|
|
1065
|
+
const [boxW, setBoxW] = React46.useState(640);
|
|
1066
|
+
const containerRef = React46.useRef(null);
|
|
1067
|
+
const parsed = React46.useMemo(() => parseMermaidFlow(diagram), [diagram]);
|
|
1068
|
+
const layout = React46.useMemo(() => parsed ? computeLayout(parsed) : null, [parsed]);
|
|
1069
|
+
const themedEdges = React46.useMemo(
|
|
1070
1070
|
() => {
|
|
1071
1071
|
var _a;
|
|
1072
1072
|
return ((_a = layout == null ? void 0 : layout.edges) != null ? _a : []).map((e) => __spreadProps(__spreadValues({}, e), {
|
|
@@ -1078,7 +1078,7 @@ function Inner({ diagram, title, autoplay, nodeStates }) {
|
|
|
1078
1078
|
},
|
|
1079
1079
|
[layout, tokens.ACCENT, tokens.MUTED]
|
|
1080
1080
|
);
|
|
1081
|
-
const order =
|
|
1081
|
+
const order = React46.useMemo(
|
|
1082
1082
|
() => {
|
|
1083
1083
|
var _a, _b;
|
|
1084
1084
|
return topoOrder(((_a = layout == null ? void 0 : layout.nodes) != null ? _a : []).map((n) => n.id), (_b = layout == null ? void 0 : layout.edges) != null ? _b : []);
|
|
@@ -1086,19 +1086,19 @@ function Inner({ diagram, title, autoplay, nodeStates }) {
|
|
|
1086
1086
|
[layout]
|
|
1087
1087
|
);
|
|
1088
1088
|
const autoStatus = useAutoplay(order, !!autoplay);
|
|
1089
|
-
const staticStatus =
|
|
1089
|
+
const staticStatus = React46.useMemo(() => {
|
|
1090
1090
|
var _a;
|
|
1091
1091
|
return resolveStates((_a = layout == null ? void 0 : layout.nodes) != null ? _a : [], nodeStates);
|
|
1092
1092
|
}, [layout, nodeStates]);
|
|
1093
1093
|
const statusMap = autoplay ? autoStatus : staticStatus;
|
|
1094
|
-
const displayNodes =
|
|
1094
|
+
const displayNodes = React46.useMemo(
|
|
1095
1095
|
() => {
|
|
1096
1096
|
var _a;
|
|
1097
1097
|
return ((_a = layout == null ? void 0 : layout.nodes) != null ? _a : []).map((n) => __spreadProps(__spreadValues({}, n), { data: __spreadProps(__spreadValues({}, n.data), { status: statusMap[n.id] }) }));
|
|
1098
1098
|
},
|
|
1099
1099
|
[layout, statusMap]
|
|
1100
1100
|
);
|
|
1101
|
-
const displayEdges =
|
|
1101
|
+
const displayEdges = React46.useMemo(
|
|
1102
1102
|
() => themedEdges.map((e) => {
|
|
1103
1103
|
const ss = statusMap[e.source];
|
|
1104
1104
|
const ts = statusMap[e.target];
|
|
@@ -1118,13 +1118,13 @@ function Inner({ diagram, title, autoplay, nodeStates }) {
|
|
|
1118
1118
|
const [nodes, setNodes, onNC] = react.useNodesState(displayNodes);
|
|
1119
1119
|
const [edges, setEdges, onEC] = react.useEdgesState(displayEdges);
|
|
1120
1120
|
const rf = react.useReactFlow();
|
|
1121
|
-
|
|
1121
|
+
React46.useEffect(() => {
|
|
1122
1122
|
setNodes(displayNodes);
|
|
1123
1123
|
}, [displayNodes, setNodes]);
|
|
1124
|
-
|
|
1124
|
+
React46.useEffect(() => {
|
|
1125
1125
|
setEdges(displayEdges);
|
|
1126
1126
|
}, [displayEdges, setEdges]);
|
|
1127
|
-
|
|
1127
|
+
React46.useEffect(() => {
|
|
1128
1128
|
const id = requestAnimationFrame(() => {
|
|
1129
1129
|
try {
|
|
1130
1130
|
rf.fitView({ padding: 0.1 });
|
|
@@ -1133,14 +1133,14 @@ function Inner({ diagram, title, autoplay, nodeStates }) {
|
|
|
1133
1133
|
});
|
|
1134
1134
|
return () => cancelAnimationFrame(id);
|
|
1135
1135
|
}, [layout, rf]);
|
|
1136
|
-
const handleClickOutside =
|
|
1136
|
+
const handleClickOutside = React46.useCallback((e) => {
|
|
1137
1137
|
if (containerRef.current && !containerRef.current.contains(e.target)) setFocused(false);
|
|
1138
1138
|
}, []);
|
|
1139
|
-
|
|
1139
|
+
React46.useEffect(() => {
|
|
1140
1140
|
document.addEventListener("mousedown", handleClickOutside);
|
|
1141
1141
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
1142
1142
|
}, [handleClickOutside]);
|
|
1143
|
-
|
|
1143
|
+
React46.useEffect(() => {
|
|
1144
1144
|
const el = containerRef.current;
|
|
1145
1145
|
if (!el) return;
|
|
1146
1146
|
let raf = 0;
|
|
@@ -1327,8 +1327,8 @@ function probePdfWorker() {
|
|
|
1327
1327
|
return probe;
|
|
1328
1328
|
}
|
|
1329
1329
|
function usePdfWorkerReady(enabled) {
|
|
1330
|
-
const [ready, setReady] =
|
|
1331
|
-
|
|
1330
|
+
const [ready, setReady] = React46.useState(null);
|
|
1331
|
+
React46.useEffect(() => {
|
|
1332
1332
|
if (!enabled) return;
|
|
1333
1333
|
let cancelled = false;
|
|
1334
1334
|
probePdfWorker().then((ok) => {
|
|
@@ -1361,15 +1361,15 @@ __export(PdfViewer_exports, {
|
|
|
1361
1361
|
});
|
|
1362
1362
|
function PdfViewer({ url, base64, onLoadSuccess, onLoadError }) {
|
|
1363
1363
|
const { BORDER: BORDER3, MUTED: MUTED2, SURFACE: SURFACE2 } = useTheme();
|
|
1364
|
-
const [numPages, setNumPages] =
|
|
1365
|
-
const [currentPage, setCurrentPage] =
|
|
1366
|
-
const [loading, setLoading] =
|
|
1367
|
-
const handleLoad =
|
|
1364
|
+
const [numPages, setNumPages] = React46.useState(0);
|
|
1365
|
+
const [currentPage, setCurrentPage] = React46.useState(1);
|
|
1366
|
+
const [loading, setLoading] = React46.useState(true);
|
|
1367
|
+
const handleLoad = React46.useCallback(({ numPages: n }) => {
|
|
1368
1368
|
setNumPages(n);
|
|
1369
1369
|
setLoading(false);
|
|
1370
1370
|
onLoadSuccess == null ? void 0 : onLoadSuccess(n);
|
|
1371
1371
|
}, [onLoadSuccess]);
|
|
1372
|
-
|
|
1372
|
+
React46.useEffect(() => {
|
|
1373
1373
|
if (numPages <= 1) return;
|
|
1374
1374
|
const handler = (e) => {
|
|
1375
1375
|
var _a;
|
|
@@ -1477,13 +1477,13 @@ __export(ExcelViewer_exports, {
|
|
|
1477
1477
|
});
|
|
1478
1478
|
function ExcelViewer({ url, base64, onLoadSuccess }) {
|
|
1479
1479
|
const { BORDER: BORDER3, MUTED: MUTED2, PAPER: PAPER2, SURFACE: SURFACE2 } = useTheme();
|
|
1480
|
-
const [sheetNames, setSheetNames] =
|
|
1481
|
-
const [activeSheet, setActiveSheet] =
|
|
1482
|
-
const [data, setData] =
|
|
1483
|
-
const [loading, setLoading] =
|
|
1484
|
-
const [error, setError] =
|
|
1485
|
-
const wbRef =
|
|
1486
|
-
|
|
1480
|
+
const [sheetNames, setSheetNames] = React46.useState([]);
|
|
1481
|
+
const [activeSheet, setActiveSheet] = React46.useState(0);
|
|
1482
|
+
const [data, setData] = React46.useState([]);
|
|
1483
|
+
const [loading, setLoading] = React46.useState(true);
|
|
1484
|
+
const [error, setError] = React46.useState(null);
|
|
1485
|
+
const wbRef = React46.useRef(null);
|
|
1486
|
+
React46.useEffect(() => {
|
|
1487
1487
|
let cancelled = false;
|
|
1488
1488
|
setLoading(true);
|
|
1489
1489
|
setError(null);
|
|
@@ -1541,7 +1541,7 @@ function ExcelViewer({ url, base64, onLoadSuccess }) {
|
|
|
1541
1541
|
const rows = XLSX__namespace.utils.sheet_to_json(wbRef.current.Sheets[wbRef.current.SheetNames[idx]], { header: 1 });
|
|
1542
1542
|
setData(rows);
|
|
1543
1543
|
};
|
|
1544
|
-
|
|
1544
|
+
React46.useEffect(() => {
|
|
1545
1545
|
if (sheetNames.length <= 1) return;
|
|
1546
1546
|
const handler = (e) => {
|
|
1547
1547
|
var _a;
|
|
@@ -1667,10 +1667,10 @@ __export(CsvViewer_exports, {
|
|
|
1667
1667
|
});
|
|
1668
1668
|
function CsvViewer({ url, base64, delimiter, maxRows }) {
|
|
1669
1669
|
const { BORDER: BORDER3, MUTED: MUTED2, PAPER: PAPER2 } = useTheme();
|
|
1670
|
-
const [rows, setRows] =
|
|
1671
|
-
const [loading, setLoading] =
|
|
1672
|
-
const [error, setError] =
|
|
1673
|
-
|
|
1670
|
+
const [rows, setRows] = React46.useState([]);
|
|
1671
|
+
const [loading, setLoading] = React46.useState(true);
|
|
1672
|
+
const [error, setError] = React46.useState(null);
|
|
1673
|
+
React46.useEffect(() => {
|
|
1674
1674
|
let cancelled = false;
|
|
1675
1675
|
setLoading(true);
|
|
1676
1676
|
setError(null);
|
|
@@ -1789,10 +1789,10 @@ __export(TextViewer_exports, {
|
|
|
1789
1789
|
});
|
|
1790
1790
|
function TextViewer({ url, base64, markdown = false, maxLines }) {
|
|
1791
1791
|
const { MUTED: MUTED2 } = useTheme();
|
|
1792
|
-
const [text, setText] =
|
|
1793
|
-
const [loading, setLoading] =
|
|
1794
|
-
const [error, setError] =
|
|
1795
|
-
|
|
1792
|
+
const [text, setText] = React46.useState("");
|
|
1793
|
+
const [loading, setLoading] = React46.useState(true);
|
|
1794
|
+
const [error, setError] = React46.useState(null);
|
|
1795
|
+
React46.useEffect(() => {
|
|
1796
1796
|
let cancelled = false;
|
|
1797
1797
|
setLoading(true);
|
|
1798
1798
|
setError(null);
|
|
@@ -1890,10 +1890,10 @@ function sanitize(html) {
|
|
|
1890
1890
|
}
|
|
1891
1891
|
function DocxViewer({ url, base64 }) {
|
|
1892
1892
|
const { MUTED: MUTED2, BORDER: BORDER3, SURFACE: SURFACE2 } = useTheme();
|
|
1893
|
-
const [html, setHtml] =
|
|
1894
|
-
const [loading, setLoading] =
|
|
1895
|
-
const [error, setError] =
|
|
1896
|
-
|
|
1893
|
+
const [html, setHtml] = React46.useState("");
|
|
1894
|
+
const [loading, setLoading] = React46.useState(true);
|
|
1895
|
+
const [error, setError] = React46.useState(null);
|
|
1896
|
+
React46.useEffect(() => {
|
|
1897
1897
|
let cancelled = false;
|
|
1898
1898
|
setLoading(true);
|
|
1899
1899
|
setError(null);
|
|
@@ -1972,6 +1972,89 @@ var init_DocxViewer = __esm({
|
|
|
1972
1972
|
init_decode();
|
|
1973
1973
|
}
|
|
1974
1974
|
});
|
|
1975
|
+
|
|
1976
|
+
// src/shared/viewers/HtmlViewer.tsx
|
|
1977
|
+
var HtmlViewer_exports = {};
|
|
1978
|
+
__export(HtmlViewer_exports, {
|
|
1979
|
+
HtmlViewer: () => HtmlViewer
|
|
1980
|
+
});
|
|
1981
|
+
function HtmlViewer({ url, base64, height = 480 }) {
|
|
1982
|
+
const { MUTED: MUTED2 } = useTheme();
|
|
1983
|
+
const [html, setHtml] = React46.useState("");
|
|
1984
|
+
const [loading, setLoading] = React46.useState(true);
|
|
1985
|
+
const [error, setError] = React46.useState(null);
|
|
1986
|
+
React46.useEffect(() => {
|
|
1987
|
+
let cancelled = false;
|
|
1988
|
+
setLoading(true);
|
|
1989
|
+
setError(null);
|
|
1990
|
+
if (base64) {
|
|
1991
|
+
try {
|
|
1992
|
+
if (!cancelled) {
|
|
1993
|
+
setHtml(base64ToText(base64));
|
|
1994
|
+
setLoading(false);
|
|
1995
|
+
}
|
|
1996
|
+
} catch (e) {
|
|
1997
|
+
if (!cancelled) {
|
|
1998
|
+
setError(e instanceof Error ? e.message : "Failed to decode HTML");
|
|
1999
|
+
setLoading(false);
|
|
2000
|
+
}
|
|
2001
|
+
}
|
|
2002
|
+
return () => {
|
|
2003
|
+
cancelled = true;
|
|
2004
|
+
};
|
|
2005
|
+
}
|
|
2006
|
+
if (!url) {
|
|
2007
|
+
setError("No file source provided");
|
|
2008
|
+
setLoading(false);
|
|
2009
|
+
return () => {
|
|
2010
|
+
cancelled = true;
|
|
2011
|
+
};
|
|
2012
|
+
}
|
|
2013
|
+
fetch(url).then((r) => {
|
|
2014
|
+
if (!r.ok) throw new Error(`Failed to fetch: ${r.status}`);
|
|
2015
|
+
return r.text();
|
|
2016
|
+
}).then((t) => {
|
|
2017
|
+
if (cancelled) return;
|
|
2018
|
+
setHtml(t);
|
|
2019
|
+
setLoading(false);
|
|
2020
|
+
}).catch((e) => {
|
|
2021
|
+
if (cancelled) return;
|
|
2022
|
+
setError(e.message);
|
|
2023
|
+
setLoading(false);
|
|
2024
|
+
});
|
|
2025
|
+
return () => {
|
|
2026
|
+
cancelled = true;
|
|
2027
|
+
};
|
|
2028
|
+
}, [url, base64]);
|
|
2029
|
+
if (loading) {
|
|
2030
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { style: { padding: "24px", color: MUTED2, fontSize: "13px", textAlign: "center" }, children: "Loading\u2026" });
|
|
2031
|
+
}
|
|
2032
|
+
if (error) {
|
|
2033
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { style: { padding: "24px", color: "#dc2626", fontSize: "13px", textAlign: "center" }, children: error });
|
|
2034
|
+
}
|
|
2035
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2036
|
+
"iframe",
|
|
2037
|
+
{
|
|
2038
|
+
title: "HTML preview",
|
|
2039
|
+
sandbox: "",
|
|
2040
|
+
srcDoc: html,
|
|
2041
|
+
style: {
|
|
2042
|
+
width: "100%",
|
|
2043
|
+
height: `${height}px`,
|
|
2044
|
+
border: "none",
|
|
2045
|
+
background: "white",
|
|
2046
|
+
display: "block"
|
|
2047
|
+
}
|
|
2048
|
+
}
|
|
2049
|
+
);
|
|
2050
|
+
}
|
|
2051
|
+
var init_HtmlViewer = __esm({
|
|
2052
|
+
"src/shared/viewers/HtmlViewer.tsx"() {
|
|
2053
|
+
"use client";
|
|
2054
|
+
init_ThemeContext();
|
|
2055
|
+
init_decode();
|
|
2056
|
+
}
|
|
2057
|
+
});
|
|
1975
2058
|
var dataTableSchema = zod.z.object({
|
|
1976
2059
|
type: zod.z.literal("data-table"),
|
|
1977
2060
|
title: zod.z.string().optional(),
|
|
@@ -6122,16 +6205,16 @@ var DOT_COLOR = "#aaaaaa";
|
|
|
6122
6205
|
var DOT_HOVER = "#555555";
|
|
6123
6206
|
function ComponentActions({ children, onDownloadCSV, columnConfig, filename = "component" }) {
|
|
6124
6207
|
const { BORDER: BORDER3, MUTED: MUTED2, SURFACE: SURFACE2, SURFACE_MUTED: SURFACE_MUTED2 } = useTheme();
|
|
6125
|
-
const [open, setOpen] =
|
|
6126
|
-
const [view, setView] =
|
|
6127
|
-
const contentRef =
|
|
6128
|
-
const menuRef =
|
|
6129
|
-
const btnRef =
|
|
6130
|
-
const close =
|
|
6208
|
+
const [open, setOpen] = React46.useState(false);
|
|
6209
|
+
const [view, setView] = React46.useState("main");
|
|
6210
|
+
const contentRef = React46.useRef(null);
|
|
6211
|
+
const menuRef = React46.useRef(null);
|
|
6212
|
+
const btnRef = React46.useRef(null);
|
|
6213
|
+
const close = React46.useCallback(() => {
|
|
6131
6214
|
setOpen(false);
|
|
6132
6215
|
setView("main");
|
|
6133
6216
|
}, []);
|
|
6134
|
-
|
|
6217
|
+
React46.useEffect(() => {
|
|
6135
6218
|
if (!open) return;
|
|
6136
6219
|
const handler = (e) => {
|
|
6137
6220
|
var _a, _b;
|
|
@@ -6142,7 +6225,7 @@ function ComponentActions({ children, onDownloadCSV, columnConfig, filename = "c
|
|
|
6142
6225
|
document.addEventListener("mousedown", handler);
|
|
6143
6226
|
return () => document.removeEventListener("mousedown", handler);
|
|
6144
6227
|
}, [open, close]);
|
|
6145
|
-
const handleDownloadPNG =
|
|
6228
|
+
const handleDownloadPNG = React46.useCallback(async () => {
|
|
6146
6229
|
if (!contentRef.current) return;
|
|
6147
6230
|
try {
|
|
6148
6231
|
const url = await htmlToImage.toPng(contentRef.current, { backgroundColor: "white", pixelRatio: 2 });
|
|
@@ -6154,7 +6237,7 @@ function ComponentActions({ children, onDownloadCSV, columnConfig, filename = "c
|
|
|
6154
6237
|
}
|
|
6155
6238
|
close();
|
|
6156
6239
|
}, [filename, close]);
|
|
6157
|
-
const handleCSV =
|
|
6240
|
+
const handleCSV = React46.useCallback(() => {
|
|
6158
6241
|
onDownloadCSV == null ? void 0 : onDownloadCSV();
|
|
6159
6242
|
close();
|
|
6160
6243
|
}, [onDownloadCSV, close]);
|
|
@@ -6267,12 +6350,12 @@ function MenuButton({ label, onClick }) {
|
|
|
6267
6350
|
);
|
|
6268
6351
|
}
|
|
6269
6352
|
function useColumnVisibility(columns) {
|
|
6270
|
-
const [hidden, setHidden] =
|
|
6271
|
-
const visibleColumns =
|
|
6353
|
+
const [hidden, setHidden] = React46.useState(/* @__PURE__ */ new Set());
|
|
6354
|
+
const visibleColumns = React46.useMemo(
|
|
6272
6355
|
() => columns.filter((c) => !hidden.has(c.key)),
|
|
6273
6356
|
[columns, hidden]
|
|
6274
6357
|
);
|
|
6275
|
-
const toggle =
|
|
6358
|
+
const toggle = React46.useCallback((key) => {
|
|
6276
6359
|
setHidden((prev) => {
|
|
6277
6360
|
const next = new Set(prev);
|
|
6278
6361
|
if (next.has(key)) next.delete(key);
|
|
@@ -6280,8 +6363,8 @@ function useColumnVisibility(columns) {
|
|
|
6280
6363
|
return next;
|
|
6281
6364
|
});
|
|
6282
6365
|
}, []);
|
|
6283
|
-
const showAll =
|
|
6284
|
-
const hideAll =
|
|
6366
|
+
const showAll = React46.useCallback(() => setHidden(/* @__PURE__ */ new Set()), []);
|
|
6367
|
+
const hideAll = React46.useCallback(
|
|
6285
6368
|
() => setHidden(new Set(columns.map((c) => c.key))),
|
|
6286
6369
|
[columns]
|
|
6287
6370
|
);
|
|
@@ -6538,9 +6621,9 @@ function AlertResolver(p) {
|
|
|
6538
6621
|
// src/composites/stat-grid/resolver.tsx
|
|
6539
6622
|
init_Markdown();
|
|
6540
6623
|
function FitText({ children, max = 22, min = 13, title, className, style }) {
|
|
6541
|
-
const ref =
|
|
6542
|
-
const [size, setSize] =
|
|
6543
|
-
|
|
6624
|
+
const ref = React46.useRef(null);
|
|
6625
|
+
const [size, setSize] = React46.useState(max);
|
|
6626
|
+
React46.useLayoutEffect(() => {
|
|
6544
6627
|
const el = ref.current;
|
|
6545
6628
|
if (!el) return void 0;
|
|
6546
6629
|
const fit = () => {
|
|
@@ -6629,7 +6712,7 @@ init_ThemeContext();
|
|
|
6629
6712
|
function TabsPanelResolver(p) {
|
|
6630
6713
|
var _a;
|
|
6631
6714
|
const { BORDER: BORDER3, MUTED: MUTED2, PAPER: PAPER2, SURFACE: SURFACE2, ACCENT: ACCENT2 } = useTheme();
|
|
6632
|
-
const [activeIdx, setActiveIdx] =
|
|
6715
|
+
const [activeIdx, setActiveIdx] = React46.useState(0);
|
|
6633
6716
|
const activeTab = p.tabs[activeIdx];
|
|
6634
6717
|
return /* @__PURE__ */ jsxRuntime.jsx(ComponentActions, { filename: "tabs-panel", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { width: "100%", display: "flex", flexDirection: "column", gap: "0" }, children: [
|
|
6635
6718
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -6893,7 +6976,7 @@ var thStyle = (MUTED2, BORDER3, PAPER2) => ({
|
|
|
6893
6976
|
function ScreenerTableResolver(p) {
|
|
6894
6977
|
var _a, _b, _c, _d, _e, _f;
|
|
6895
6978
|
const { ACCENT: ACCENT2, BORDER: BORDER3, BORDER_SOFT: BORDER_SOFT2, MUTED: MUTED2, PAPER: PAPER2, SURFACE: SURFACE2, SURFACE_MUTED: SURFACE_MUTED2 } = useTheme();
|
|
6896
|
-
const [activeFilters, setActiveFilters] =
|
|
6979
|
+
const [activeFilters, setActiveFilters] = React46.useState(new Set((_a = p.activeFilters) != null ? _a : []));
|
|
6897
6980
|
const { visibleColumns, hidden, toggle, showAll, hideAll, allColumns } = useColumnVisibility((_b = p.columns) != null ? _b : []);
|
|
6898
6981
|
const toggleFilter = (f) => setActiveFilters((prev) => {
|
|
6899
6982
|
const next = new Set(prev);
|
|
@@ -6963,7 +7046,7 @@ var th2 = (MUTED2, BORDER3, PAPER2) => ({
|
|
|
6963
7046
|
function GroupRows({ group, columns, depth }) {
|
|
6964
7047
|
var _a, _b;
|
|
6965
7048
|
const { MUTED: MUTED2, PAPER: PAPER2, BORDER_SOFT: BORDER_SOFT2 } = useTheme();
|
|
6966
|
-
const [open, setOpen] =
|
|
7049
|
+
const [open, setOpen] = React46.useState(true);
|
|
6967
7050
|
const indent = depth * 14;
|
|
6968
7051
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6969
7052
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -7068,7 +7151,7 @@ var dotColor = {
|
|
|
7068
7151
|
function NewsFeedResolver(p) {
|
|
7069
7152
|
var _a, _b;
|
|
7070
7153
|
const { ACCENT: ACCENT2, MUTED: MUTED2, SURFACE: SURFACE2, SHADOW: SHADOW2 } = useTheme();
|
|
7071
|
-
const [filter, setFilter] =
|
|
7154
|
+
const [filter, setFilter] = React46.useState(null);
|
|
7072
7155
|
const sentiments = ["positive", "neutral", "negative"].filter(
|
|
7073
7156
|
(s) => {
|
|
7074
7157
|
var _a2;
|
|
@@ -7110,9 +7193,9 @@ function NewsFeedResolver(p) {
|
|
|
7110
7193
|
] }) });
|
|
7111
7194
|
}
|
|
7112
7195
|
function useSeriesToggle(seriesKeys) {
|
|
7113
|
-
const [hidden, setHidden] =
|
|
7114
|
-
const isVisible =
|
|
7115
|
-
const toggle =
|
|
7196
|
+
const [hidden, setHidden] = React46.useState(/* @__PURE__ */ new Set());
|
|
7197
|
+
const isVisible = React46.useCallback((key) => !hidden.has(key), [hidden]);
|
|
7198
|
+
const toggle = React46.useCallback((key) => {
|
|
7116
7199
|
setHidden((prev) => {
|
|
7117
7200
|
const next = new Set(prev);
|
|
7118
7201
|
if (next.has(key)) next.delete(key);
|
|
@@ -7120,7 +7203,7 @@ function useSeriesToggle(seriesKeys) {
|
|
|
7120
7203
|
return next;
|
|
7121
7204
|
});
|
|
7122
7205
|
}, []);
|
|
7123
|
-
const showAll =
|
|
7206
|
+
const showAll = React46.useCallback(() => setHidden(/* @__PURE__ */ new Set()), []);
|
|
7124
7207
|
return { hidden, isVisible, toggle, showAll, allKeys: seriesKeys };
|
|
7125
7208
|
}
|
|
7126
7209
|
|
|
@@ -7425,7 +7508,7 @@ function WaterfallChartResolver(p) {
|
|
|
7425
7508
|
}
|
|
7426
7509
|
init_ThemeContext();
|
|
7427
7510
|
init_theme();
|
|
7428
|
-
var FlowGraph2 =
|
|
7511
|
+
var FlowGraph2 = React46__default.default.lazy(
|
|
7429
7512
|
() => Promise.resolve().then(() => (init_FlowGraph(), FlowGraph_exports)).then((m) => ({ default: m.FlowGraph }))
|
|
7430
7513
|
);
|
|
7431
7514
|
function FlowCanvasRenderer({
|
|
@@ -7466,7 +7549,7 @@ function FlowCanvasRenderer({
|
|
|
7466
7549
|
overflow: "hidden",
|
|
7467
7550
|
background: SURFACE2,
|
|
7468
7551
|
position: "relative"
|
|
7469
|
-
}, diagram ? {} : { height: "320px" }), children: diagram ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7552
|
+
}, diagram ? {} : { height: "320px" }), children: diagram ? /* @__PURE__ */ jsxRuntime.jsx(React46.Suspense, { fallback: null, children: /* @__PURE__ */ jsxRuntime.jsx(FlowGraph2, { diagram, title, autoplay, nodeStates }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
|
|
7470
7553
|
position: "absolute",
|
|
7471
7554
|
inset: 0,
|
|
7472
7555
|
display: "flex",
|
|
@@ -7701,7 +7784,7 @@ function TrialBalanceResolver(p) {
|
|
|
7701
7784
|
gDebit += a.debit;
|
|
7702
7785
|
gCredit += a.credit;
|
|
7703
7786
|
});
|
|
7704
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7787
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
7705
7788
|
/* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: 4, style: {
|
|
7706
7789
|
padding: "8px 12px",
|
|
7707
7790
|
fontSize: "12px",
|
|
@@ -8239,7 +8322,7 @@ function ItemRow({ item }) {
|
|
|
8239
8322
|
}
|
|
8240
8323
|
function Section({ section }) {
|
|
8241
8324
|
const { BORDER: BORDER3, MUTED: MUTED2, SURFACE: SURFACE2 } = useTheme();
|
|
8242
|
-
const [open, setOpen] =
|
|
8325
|
+
const [open, setOpen] = React46.useState(true);
|
|
8243
8326
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
8244
8327
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8245
8328
|
"button",
|
|
@@ -8362,7 +8445,7 @@ function ReconciliationViewResolver(p) {
|
|
|
8362
8445
|
const { BORDER: BORDER3, BORDER_SOFT: BORDER_SOFT2, MUTED: MUTED2, PAPER: PAPER2, ACCENT: ACCENT2, SURFACE: SURFACE2, SURFACE_MUTED: SURFACE_MUTED2 } = useTheme();
|
|
8363
8446
|
const sourceA = (_a = p.sourceA) != null ? _a : { label: "Source A" };
|
|
8364
8447
|
const sourceB = (_b = p.sourceB) != null ? _b : { label: "Source B" };
|
|
8365
|
-
const [activeTab, setActiveTab] =
|
|
8448
|
+
const [activeTab, setActiveTab] = React46.useState("matched");
|
|
8366
8449
|
const balanceA = (_d = (_c = p.summary) == null ? void 0 : _c.balanceA) != null ? _d : 0;
|
|
8367
8450
|
const balanceB = (_f = (_e = p.summary) == null ? void 0 : _e.balanceB) != null ? _f : 0;
|
|
8368
8451
|
const difference = (_h = (_g = p.summary) == null ? void 0 : _g.difference) != null ? _h : balanceA - balanceB;
|
|
@@ -9008,7 +9091,7 @@ function ChangesView({ changes }) {
|
|
|
9008
9091
|
function EventCard({ event }) {
|
|
9009
9092
|
var _a;
|
|
9010
9093
|
const { BORDER: BORDER3, MUTED: MUTED2, ACCENT: ACCENT2, SURFACE: SURFACE2 } = useTheme();
|
|
9011
|
-
const [showChanges, setShowChanges] =
|
|
9094
|
+
const [showChanges, setShowChanges] = React46.useState(false);
|
|
9012
9095
|
const ac = (_a = actionConfig[event.action]) != null ? _a : actionConfig.commented;
|
|
9013
9096
|
const hasChanges = event.changes && event.changes.length > 0;
|
|
9014
9097
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", gap: "12px", position: "relative" }, children: [
|
|
@@ -9066,23 +9149,23 @@ function AuditTrailResolver(p) {
|
|
|
9066
9149
|
}
|
|
9067
9150
|
init_Markdown();
|
|
9068
9151
|
function useFullscreen(ref) {
|
|
9069
|
-
const [isFullscreen, setIsFullscreen] =
|
|
9070
|
-
|
|
9152
|
+
const [isFullscreen, setIsFullscreen] = React46.useState(false);
|
|
9153
|
+
React46.useEffect(() => {
|
|
9071
9154
|
const handler = () => {
|
|
9072
9155
|
setIsFullscreen(!!document.fullscreenElement);
|
|
9073
9156
|
};
|
|
9074
9157
|
document.addEventListener("fullscreenchange", handler);
|
|
9075
9158
|
return () => document.removeEventListener("fullscreenchange", handler);
|
|
9076
9159
|
}, []);
|
|
9077
|
-
const enter =
|
|
9160
|
+
const enter = React46.useCallback(() => {
|
|
9078
9161
|
var _a, _b;
|
|
9079
9162
|
(_b = (_a = ref.current) == null ? void 0 : _a.requestFullscreen) == null ? void 0 : _b.call(_a);
|
|
9080
9163
|
}, [ref]);
|
|
9081
|
-
const exit =
|
|
9164
|
+
const exit = React46.useCallback(() => {
|
|
9082
9165
|
var _a;
|
|
9083
9166
|
if (document.fullscreenElement) (_a = document.exitFullscreen) == null ? void 0 : _a.call(document);
|
|
9084
9167
|
}, []);
|
|
9085
|
-
const toggle =
|
|
9168
|
+
const toggle = React46.useCallback(() => {
|
|
9086
9169
|
if (isFullscreen) exit();
|
|
9087
9170
|
else enter();
|
|
9088
9171
|
}, [isFullscreen, enter, exit]);
|
|
@@ -9093,10 +9176,10 @@ function useFullscreen(ref) {
|
|
|
9093
9176
|
init_theme();
|
|
9094
9177
|
init_ThemeContext();
|
|
9095
9178
|
init_pdfWorkerProbe();
|
|
9096
|
-
var PdfViewer2 =
|
|
9179
|
+
var PdfViewer2 = React46__default.default.lazy(
|
|
9097
9180
|
() => Promise.resolve().then(() => (init_PdfViewer(), PdfViewer_exports)).then((m) => ({ default: m.PdfViewer }))
|
|
9098
9181
|
);
|
|
9099
|
-
var ExcelViewer2 =
|
|
9182
|
+
var ExcelViewer2 = React46__default.default.lazy(
|
|
9100
9183
|
() => Promise.resolve().then(() => (init_ExcelViewer(), ExcelViewer_exports)).then((m) => ({ default: m.ExcelViewer }))
|
|
9101
9184
|
);
|
|
9102
9185
|
var highlightColors = {
|
|
@@ -9147,8 +9230,8 @@ function DownloadIcon() {
|
|
|
9147
9230
|
function DocumentPreviewResolver(p) {
|
|
9148
9231
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
|
|
9149
9232
|
const { BORDER: BORDER3, MUTED: MUTED2, PAPER: PAPER2, ACCENT: ACCENT2, SURFACE: SURFACE2, SHADOW: SHADOW2 } = useTheme();
|
|
9150
|
-
const [currentPage, setCurrentPage] =
|
|
9151
|
-
const containerRef =
|
|
9233
|
+
const [currentPage, setCurrentPage] = React46.useState(0);
|
|
9234
|
+
const containerRef = React46.useRef(null);
|
|
9152
9235
|
const { isFullscreen, toggle } = useFullscreen(containerRef);
|
|
9153
9236
|
const hasRealFile = !!(((_a = p.source) == null ? void 0 : _a.url) || ((_b = p.source) == null ? void 0 : _b.base64));
|
|
9154
9237
|
const isPdf = p.documentType === "pdf";
|
|
@@ -9156,15 +9239,15 @@ function DocumentPreviewResolver(p) {
|
|
|
9156
9239
|
const totalPages = ((_c = p.pages) != null ? _c : []).length;
|
|
9157
9240
|
const page = p.pages[currentPage];
|
|
9158
9241
|
const pageHighlights = ((_d = p.highlights) != null ? _d : []).filter((h) => h.pageIndex === currentPage);
|
|
9159
|
-
const [pdfFailed, setPdfFailed] =
|
|
9242
|
+
const [pdfFailed, setPdfFailed] = React46.useState(false);
|
|
9160
9243
|
const pdfWorkerReady = usePdfWorkerReady(hasRealFile && isPdf);
|
|
9161
9244
|
const pdfReady = pdfFailed ? false : pdfWorkerReady;
|
|
9162
9245
|
const showPdfViewer = hasRealFile && isPdf && pdfReady === true;
|
|
9163
9246
|
const pdfPending = hasRealFile && isPdf && pdfReady === null;
|
|
9164
|
-
const handlePdfLoad =
|
|
9247
|
+
const handlePdfLoad = React46.useCallback(() => {
|
|
9165
9248
|
}, []);
|
|
9166
|
-
const handlePdfError =
|
|
9167
|
-
const handleExcelLoad =
|
|
9249
|
+
const handlePdfError = React46.useCallback(() => setPdfFailed(true), []);
|
|
9250
|
+
const handleExcelLoad = React46.useCallback(() => {
|
|
9168
9251
|
}, []);
|
|
9169
9252
|
return /* @__PURE__ */ jsxRuntime.jsx(ComponentActions, { filename: (_e = p.title) != null ? _e : "document-preview", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9170
9253
|
"div",
|
|
@@ -9277,7 +9360,7 @@ function DocumentPreviewResolver(p) {
|
|
|
9277
9360
|
display: "flex",
|
|
9278
9361
|
flexDirection: "column"
|
|
9279
9362
|
}, children: [
|
|
9280
|
-
showPdfViewer ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
9363
|
+
showPdfViewer ? /* @__PURE__ */ jsxRuntime.jsx(React46.Suspense, { fallback: null, children: /* @__PURE__ */ jsxRuntime.jsx(PdfViewer2, { url: (_q = p.source) == null ? void 0 : _q.url, base64: (_r = p.source) == null ? void 0 : _r.base64, onLoadSuccess: handlePdfLoad, onLoadError: handlePdfError }) }) : pdfPending ? /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", alignItems: "center", justifyContent: "center", height: "200px", color: MUTED2, fontSize: "13px" }, children: "Loading preview\u2026" }) : hasRealFile && isExcel ? /* @__PURE__ */ jsxRuntime.jsx(React46.Suspense, { fallback: null, children: /* @__PURE__ */ jsxRuntime.jsx(ExcelViewer2, { url: (_s = p.source) == null ? void 0 : _s.url, base64: (_t = p.source) == null ? void 0 : _t.base64, onLoadSuccess: handleExcelLoad }) }) : (page == null ? void 0 : page.imageUrl) ? /* @__PURE__ */ jsxRuntime.jsx("div", { style: { padding: "20px" }, children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: page.imageUrl, alt: page.label, style: { maxWidth: "100%", borderRadius: "4px" } }) }) : (page == null ? void 0 : page.content) ? /* @__PURE__ */ jsxRuntime.jsx("div", { style: { fontFamily: "var(--font-sans, system-ui)", fontSize: "13px", color: "var(--foreground)", lineHeight: 1.6, margin: 0, padding: "20px" }, children: /* @__PURE__ */ jsxRuntime.jsx(Markdown, { content: page.content }) }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "center", height: "120px", color: MUTED2, fontSize: "13px" }, children: [
|
|
9281
9364
|
"No content available for ",
|
|
9282
9365
|
(_u = page == null ? void 0 : page.label) != null ? _u : "this page"
|
|
9283
9366
|
] }),
|
|
@@ -9342,7 +9425,7 @@ function ConfidenceBar({ confidence, height = 6 }) {
|
|
|
9342
9425
|
function StepCard({ step, isLast }) {
|
|
9343
9426
|
var _a;
|
|
9344
9427
|
const { ACCENT: ACCENT2, MUTED: MUTED2, BORDER: BORDER3, SURFACE_MUTED: SURFACE_MUTED2 } = useTheme();
|
|
9345
|
-
const [expanded, setExpanded] =
|
|
9428
|
+
const [expanded, setExpanded] = React46.useState(false);
|
|
9346
9429
|
const cfg = stepTypeConfig[step.stepType];
|
|
9347
9430
|
const detail = (_a = step.detail) != null ? _a : "";
|
|
9348
9431
|
const isLong = detail.length > 100;
|
|
@@ -9851,7 +9934,7 @@ function ExampleRow({ example }) {
|
|
|
9851
9934
|
}
|
|
9852
9935
|
function PartSection({ part, defaultOpen }) {
|
|
9853
9936
|
const { BORDER: BORDER3, MUTED: MUTED2, SURFACE: SURFACE2 } = useTheme();
|
|
9854
|
-
const [open, setOpen] =
|
|
9937
|
+
const [open, setOpen] = React46.useState(defaultOpen);
|
|
9855
9938
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
9856
9939
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
9857
9940
|
"button",
|
|
@@ -9981,7 +10064,7 @@ function EngagementPipelineResolver(p) {
|
|
|
9981
10064
|
const defaultActive = phases.findIndex(
|
|
9982
10065
|
(ph) => ph.status === "in-progress" || ph.status === "blocked"
|
|
9983
10066
|
);
|
|
9984
|
-
const [activeIdx, setActiveIdx] =
|
|
10067
|
+
const [activeIdx, setActiveIdx] = React46.useState(defaultActive >= 0 ? defaultActive : 0);
|
|
9985
10068
|
const activePhase = phases[activeIdx];
|
|
9986
10069
|
return /* @__PURE__ */ jsxRuntime.jsx(ComponentActions, { filename: (_b = p.title) != null ? _b : "engagement-pipeline", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { width: "100%", display: "flex", flexDirection: "column", gap: "12px" }, children: [
|
|
9987
10070
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: [
|
|
@@ -10065,7 +10148,7 @@ function EngagementPipelineResolver(p) {
|
|
|
10065
10148
|
const color = (_a2 = statusColor2[phase.status]) != null ? _a2 : "#d6d3d1";
|
|
10066
10149
|
const isCurrent = i === activeIdx;
|
|
10067
10150
|
const size = isCurrent ? 28 : 20;
|
|
10068
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10151
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
10069
10152
|
i > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10070
10153
|
"div",
|
|
10071
10154
|
{
|
|
@@ -10373,7 +10456,7 @@ function Avatar({ name, avatar, hovered }) {
|
|
|
10373
10456
|
function EntityCardGridResolver(p) {
|
|
10374
10457
|
var _a, _b;
|
|
10375
10458
|
const { BORDER: BORDER3, MUTED: MUTED2, ACCENT: ACCENT2, SHADOW: SHADOW2 } = useTheme();
|
|
10376
|
-
const [hoveredId, setHoveredId] =
|
|
10459
|
+
const [hoveredId, setHoveredId] = React46.useState(null);
|
|
10377
10460
|
return /* @__PURE__ */ jsxRuntime.jsx(ComponentActions, { filename: (_a = p.title) != null ? _a : "entity-card-grid", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { width: "100%", display: "flex", flexDirection: "column", gap: "10px" }, children: [
|
|
10378
10461
|
p.title && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10379
10462
|
"p",
|
|
@@ -10630,7 +10713,7 @@ function StepRow({ step }) {
|
|
|
10630
10713
|
function JobTrackerResolver(p) {
|
|
10631
10714
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
10632
10715
|
const { BORDER: BORDER3, MUTED: MUTED2, ACCENT: ACCENT2, PAPER: PAPER2, SURFACE: SURFACE2, SURFACE_MUTED: SURFACE_MUTED2, SHADOW: SHADOW2 } = useTheme();
|
|
10633
|
-
const [stepsOpen, setStepsOpen] =
|
|
10716
|
+
const [stepsOpen, setStepsOpen] = React46.useState(true);
|
|
10634
10717
|
const barColor = (_a = statusColors[p.status]) != null ? _a : MUTED2;
|
|
10635
10718
|
const badge = (_b = statusBadgeConfig[p.status]) != null ? _b : statusBadgeConfig.queued;
|
|
10636
10719
|
const progress = (_c = p.progress) != null ? _c : p.status === "completed" ? 100 : 0;
|
|
@@ -11073,7 +11156,7 @@ function CitationCard({
|
|
|
11073
11156
|
}
|
|
11074
11157
|
function FollowUpItem({ text }) {
|
|
11075
11158
|
const { SECONDARY: SECONDARY2 } = useTheme();
|
|
11076
|
-
const [hovered, setHovered] =
|
|
11159
|
+
const [hovered, setHovered] = React46.useState(false);
|
|
11077
11160
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11078
11161
|
"span",
|
|
11079
11162
|
{
|
|
@@ -11099,7 +11182,7 @@ function CitationMarker({
|
|
|
11099
11182
|
onClick
|
|
11100
11183
|
}) {
|
|
11101
11184
|
const { SECONDARY: SECONDARY2 } = useTheme();
|
|
11102
|
-
const [hovered, setHovered] =
|
|
11185
|
+
const [hovered, setHovered] = React46.useState(false);
|
|
11103
11186
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11104
11187
|
"sup",
|
|
11105
11188
|
{
|
|
@@ -11128,7 +11211,7 @@ function CitationMarker({
|
|
|
11128
11211
|
function CitedAnswerResolver(p) {
|
|
11129
11212
|
var _a, _b, _c, _d, _e;
|
|
11130
11213
|
const { BORDER: BORDER3, MUTED: MUTED2, ACCENT: ACCENT2, SECONDARY: SECONDARY2, SURFACE: SURFACE2, SHADOW: SHADOW2 } = useTheme();
|
|
11131
|
-
const [expandedIds, setExpandedIds] =
|
|
11214
|
+
const [expandedIds, setExpandedIds] = React46.useState(/* @__PURE__ */ new Set());
|
|
11132
11215
|
const toggleCitation = (id) => {
|
|
11133
11216
|
setExpandedIds((prev) => {
|
|
11134
11217
|
const next = new Set(prev);
|
|
@@ -11433,7 +11516,7 @@ function TransactionFeedResolver(p) {
|
|
|
11433
11516
|
var _a, _b, _c, _d, _e;
|
|
11434
11517
|
const { BORDER: BORDER3, MUTED: MUTED2 } = useTheme();
|
|
11435
11518
|
const currency = (_a = p.currency) != null ? _a : "USD";
|
|
11436
|
-
const [hoveredIndex, setHoveredIndex] =
|
|
11519
|
+
const [hoveredIndex, setHoveredIndex] = React46.useState(null);
|
|
11437
11520
|
const hasBalance = ((_b = p.transactions) != null ? _b : []).some((tx) => tx.balance != null);
|
|
11438
11521
|
const totalInflows = p.transactions.filter((tx) => tx.amount > 0 && tx.status !== "reversed").reduce((sum, tx) => sum + tx.amount, 0);
|
|
11439
11522
|
const totalOutflows = p.transactions.filter((tx) => tx.amount < 0 && tx.status !== "reversed").reduce((sum, tx) => sum + tx.amount, 0);
|
|
@@ -11591,7 +11674,7 @@ function formatDate2(dateStr) {
|
|
|
11591
11674
|
function FileRow({ item }) {
|
|
11592
11675
|
var _a;
|
|
11593
11676
|
const { BORDER: BORDER3, MUTED: MUTED2, PAPER: PAPER2, SURFACE: SURFACE2, SECONDARY: SECONDARY2 } = useTheme();
|
|
11594
|
-
const [hovered, setHovered] =
|
|
11677
|
+
const [hovered, setHovered] = React46.useState(false);
|
|
11595
11678
|
const cfg = getDocConfig(item.docType);
|
|
11596
11679
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11597
11680
|
"div",
|
|
@@ -11668,8 +11751,8 @@ function FileRow({ item }) {
|
|
|
11668
11751
|
}
|
|
11669
11752
|
function GroupSection({ groupName, items }) {
|
|
11670
11753
|
const { BORDER: BORDER3, MUTED: MUTED2, SURFACE: SURFACE2, SURFACE_MUTED: SURFACE_MUTED2 } = useTheme();
|
|
11671
|
-
const [open, setOpen] =
|
|
11672
|
-
const [headerHovered, setHeaderHovered] =
|
|
11754
|
+
const [open, setOpen] = React46.useState(true);
|
|
11755
|
+
const [headerHovered, setHeaderHovered] = React46.useState(false);
|
|
11673
11756
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
11674
11757
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
11675
11758
|
"button",
|
|
@@ -11785,7 +11868,7 @@ init_theme();
|
|
|
11785
11868
|
var FAMILIES = [
|
|
11786
11869
|
{ exts: ["csv", "tsv", "xls", "xlsx", "numbers"], fg: SEMANTIC.success.color, bg: SEMANTIC.success.bg },
|
|
11787
11870
|
{ exts: ["pdf"], fg: SEMANTIC.error.color, bg: SEMANTIC.error.bg },
|
|
11788
|
-
{ exts: ["doc", "docx", "txt", "md", "rtf", "pages"], fg: SEMANTIC.info.color, bg: SEMANTIC.info.bg },
|
|
11871
|
+
{ exts: ["doc", "docx", "txt", "md", "rtf", "pages", "html", "htm"], fg: SEMANTIC.info.color, bg: SEMANTIC.info.bg },
|
|
11789
11872
|
{ exts: ["json", "yaml", "yml", "xml", "toml"], fg: SEMANTIC.purple.color, bg: SEMANTIC.purple.bg },
|
|
11790
11873
|
{ exts: ["zip", "tar", "gz", "rar", "7z"], fg: SEMANTIC.warning.color, bg: SEMANTIC.warning.bg },
|
|
11791
11874
|
{ exts: ["png", "jpg", "jpeg", "gif", "svg", "webp", "bmp"], fg: SEMANTIC.info.color, bg: SEMANTIC.info.bg }
|
|
@@ -11812,7 +11895,9 @@ var PREVIEW_EXTS = {
|
|
|
11812
11895
|
txt: "text",
|
|
11813
11896
|
log: "text",
|
|
11814
11897
|
text: "text",
|
|
11815
|
-
docx: "docx"
|
|
11898
|
+
docx: "docx",
|
|
11899
|
+
html: "html",
|
|
11900
|
+
htm: "html"
|
|
11816
11901
|
};
|
|
11817
11902
|
function extOf(fileType, filename) {
|
|
11818
11903
|
var _a;
|
|
@@ -11823,6 +11908,7 @@ function extOf(fileType, filename) {
|
|
|
11823
11908
|
if (mime.includes("csv")) return "csv";
|
|
11824
11909
|
if (mime.includes("markdown")) return "md";
|
|
11825
11910
|
if (mime.includes("wordprocessing") || mime.includes("msword")) return "docx";
|
|
11911
|
+
if (mime.includes("html")) return "html";
|
|
11826
11912
|
if (mime.startsWith("text/")) return "txt";
|
|
11827
11913
|
} else if (fileType) {
|
|
11828
11914
|
const t = fileType.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
@@ -11857,20 +11943,21 @@ function isExpirySoon(expiresAt) {
|
|
|
11857
11943
|
// src/shared/viewers/PreviewHost.tsx
|
|
11858
11944
|
init_ThemeContext();
|
|
11859
11945
|
init_pdfWorkerProbe();
|
|
11860
|
-
var PdfViewer3 =
|
|
11946
|
+
var PdfViewer3 = React46.lazy(
|
|
11861
11947
|
() => Promise.resolve().then(() => (init_PdfViewer(), PdfViewer_exports)).then((m) => ({ default: m.PdfViewer }))
|
|
11862
11948
|
);
|
|
11863
|
-
var ExcelViewer3 =
|
|
11949
|
+
var ExcelViewer3 = React46.lazy(
|
|
11864
11950
|
() => Promise.resolve().then(() => (init_ExcelViewer(), ExcelViewer_exports)).then((m) => ({ default: m.ExcelViewer }))
|
|
11865
11951
|
);
|
|
11866
|
-
var CsvViewer2 =
|
|
11867
|
-
var TextViewer2 =
|
|
11868
|
-
var DocxViewer2 =
|
|
11952
|
+
var CsvViewer2 = React46.lazy(() => Promise.resolve().then(() => (init_CsvViewer(), CsvViewer_exports)).then((m) => ({ default: m.CsvViewer })));
|
|
11953
|
+
var TextViewer2 = React46.lazy(() => Promise.resolve().then(() => (init_TextViewer(), TextViewer_exports)).then((m) => ({ default: m.TextViewer })));
|
|
11954
|
+
var DocxViewer2 = React46.lazy(() => Promise.resolve().then(() => (init_DocxViewer(), DocxViewer_exports)).then((m) => ({ default: m.DocxViewer })));
|
|
11955
|
+
var HtmlViewer2 = React46.lazy(() => Promise.resolve().then(() => (init_HtmlViewer(), HtmlViewer_exports)).then((m) => ({ default: m.HtmlViewer })));
|
|
11869
11956
|
var PEEK_ROWS = 20;
|
|
11870
11957
|
var PEEK_LINES = 40;
|
|
11871
11958
|
function GatedPdfViewer({ source }) {
|
|
11872
11959
|
const { MUTED: MUTED2 } = useTheme();
|
|
11873
|
-
const [failed, setFailed] =
|
|
11960
|
+
const [failed, setFailed] = React46.useState(false);
|
|
11874
11961
|
const workerReady = usePdfWorkerReady(true);
|
|
11875
11962
|
const ready = failed ? false : workerReady;
|
|
11876
11963
|
if (ready === null) {
|
|
@@ -11905,10 +11992,13 @@ function PreviewHost({ kind, source, mode = "full" }) {
|
|
|
11905
11992
|
case "docx":
|
|
11906
11993
|
viewer = /* @__PURE__ */ jsxRuntime.jsx(DocxViewer2, { url: source.url, base64: source.base64 });
|
|
11907
11994
|
break;
|
|
11995
|
+
case "html":
|
|
11996
|
+
viewer = /* @__PURE__ */ jsxRuntime.jsx(HtmlViewer2, { url: source.url, base64: source.base64, height: peek ? 240 : 480 });
|
|
11997
|
+
break;
|
|
11908
11998
|
default:
|
|
11909
11999
|
return null;
|
|
11910
12000
|
}
|
|
11911
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12001
|
+
return /* @__PURE__ */ jsxRuntime.jsx(React46.Suspense, { fallback, children: viewer });
|
|
11912
12002
|
}
|
|
11913
12003
|
|
|
11914
12004
|
// src/shared/PreviewModal.tsx
|
|
@@ -11924,7 +12014,7 @@ function PreviewModal({
|
|
|
11924
12014
|
onDownload
|
|
11925
12015
|
}) {
|
|
11926
12016
|
const { BORDER: BORDER3, MUTED: MUTED2, ACCENT: ACCENT2, SURFACE: SURFACE2, FOREGROUND: FOREGROUND2, SCRIM: SCRIM2 } = useTheme();
|
|
11927
|
-
|
|
12017
|
+
React46.useEffect(() => {
|
|
11928
12018
|
if (!open) return;
|
|
11929
12019
|
const onKey = (e) => {
|
|
11930
12020
|
if (e.key === "Escape") onClose();
|
|
@@ -12101,17 +12191,17 @@ function FileCard({
|
|
|
12101
12191
|
previewDisabled = false
|
|
12102
12192
|
}) {
|
|
12103
12193
|
const { BORDER: BORDER3, MUTED: MUTED2, ACCENT: ACCENT2, SURFACE: SURFACE2, SURFACE_MUTED: SURFACE_MUTED2, SHADOW: SHADOW2 } = useTheme();
|
|
12104
|
-
const [cardHover, setCardHover] =
|
|
12105
|
-
const [btnHover, setBtnHover] =
|
|
12106
|
-
const [pvHover, setPvHover] =
|
|
12194
|
+
const [cardHover, setCardHover] = React46.useState(false);
|
|
12195
|
+
const [btnHover, setBtnHover] = React46.useState(false);
|
|
12196
|
+
const [pvHover, setPvHover] = React46.useState(false);
|
|
12107
12197
|
const previewKind = previewKindFor(fileType, filename);
|
|
12108
12198
|
const canPreview = !previewDisabled && previewKind !== null && (!!previewUrl || !!fetchPreviewBlob);
|
|
12109
|
-
const [peekOpen, setPeekOpen] =
|
|
12110
|
-
const [modalOpen, setModalOpen] =
|
|
12111
|
-
const [source, setSource] =
|
|
12112
|
-
const [pvLoading, setPvLoading] =
|
|
12113
|
-
const [pvError, setPvError] =
|
|
12114
|
-
const ensureSource =
|
|
12199
|
+
const [peekOpen, setPeekOpen] = React46.useState(false);
|
|
12200
|
+
const [modalOpen, setModalOpen] = React46.useState(false);
|
|
12201
|
+
const [source, setSource] = React46.useState(previewUrl ? { url: previewUrl } : null);
|
|
12202
|
+
const [pvLoading, setPvLoading] = React46.useState(false);
|
|
12203
|
+
const [pvError, setPvError] = React46.useState(null);
|
|
12204
|
+
const ensureSource = React46.useCallback(async () => {
|
|
12115
12205
|
if (source) return source;
|
|
12116
12206
|
if (previewUrl) {
|
|
12117
12207
|
const s = { url: previewUrl };
|
|
@@ -12133,7 +12223,7 @@ function FileCard({
|
|
|
12133
12223
|
setPvLoading(false);
|
|
12134
12224
|
}
|
|
12135
12225
|
}, [source, previewUrl, fetchPreviewBlob]);
|
|
12136
|
-
const togglePeek =
|
|
12226
|
+
const togglePeek = React46.useCallback(async () => {
|
|
12137
12227
|
if (peekOpen) {
|
|
12138
12228
|
setPeekOpen(false);
|
|
12139
12229
|
return;
|
|
@@ -12141,7 +12231,7 @@ function FileCard({
|
|
|
12141
12231
|
setPeekOpen(true);
|
|
12142
12232
|
await ensureSource();
|
|
12143
12233
|
}, [peekOpen, ensureSource]);
|
|
12144
|
-
const openModal =
|
|
12234
|
+
const openModal = React46.useCallback(async () => {
|
|
12145
12235
|
const s = await ensureSource();
|
|
12146
12236
|
if (s) setModalOpen(true);
|
|
12147
12237
|
}, [ensureSource]);
|
|
@@ -12256,7 +12346,7 @@ function FileCard({
|
|
|
12256
12346
|
whiteSpace: "nowrap"
|
|
12257
12347
|
},
|
|
12258
12348
|
children: [
|
|
12259
|
-
metaTokens.map((t, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12349
|
+
metaTokens.map((t, i) => /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
12260
12350
|
i > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: MUTED2 }, children: "\xB7" }),
|
|
12261
12351
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t })
|
|
12262
12352
|
] }, i)),
|
|
@@ -12601,7 +12691,7 @@ function ServiceCard({ item, isHovered, onHover, onLeave: onLeave2 }) {
|
|
|
12601
12691
|
function OpsDashboardResolver(p) {
|
|
12602
12692
|
var _a, _b, _c;
|
|
12603
12693
|
const { BORDER: BORDER3, MUTED: MUTED2 } = useTheme();
|
|
12604
|
-
const [hoveredId, setHoveredId] =
|
|
12694
|
+
const [hoveredId, setHoveredId] = React46.useState(null);
|
|
12605
12695
|
const hasRunning = ((_a = p.items) != null ? _a : []).some((item) => item.state === "running");
|
|
12606
12696
|
return /* @__PURE__ */ jsxRuntime.jsxs(ComponentActions, { filename: (_b = p.title) != null ? _b : "ops-dashboard", children: [
|
|
12607
12697
|
hasRunning && /* @__PURE__ */ jsxRuntime.jsx("style", { children: PULSE_KEYFRAMES }),
|
|
@@ -12655,8 +12745,8 @@ function formatDate3(value) {
|
|
|
12655
12745
|
}
|
|
12656
12746
|
function CopyButton({ value, rowHovered }) {
|
|
12657
12747
|
const { MUTED: MUTED2 } = useTheme();
|
|
12658
|
-
const [copied, setCopied] =
|
|
12659
|
-
const [btnHovered, setBtnHovered] =
|
|
12748
|
+
const [copied, setCopied] = React46.useState(false);
|
|
12749
|
+
const [btnHovered, setBtnHovered] = React46.useState(false);
|
|
12660
12750
|
const handleCopy = () => {
|
|
12661
12751
|
navigator.clipboard.writeText(value).then(() => {
|
|
12662
12752
|
setCopied(true);
|
|
@@ -12750,7 +12840,7 @@ function ValueCell({ item }) {
|
|
|
12750
12840
|
}
|
|
12751
12841
|
function KVRow({ item, isLast, index }) {
|
|
12752
12842
|
const { MUTED: MUTED2, BORDER: BORDER3, SURFACE: SURFACE2, SURFACE_MUTED: SURFACE_MUTED2 } = useTheme();
|
|
12753
|
-
const [hovered, setHovered] =
|
|
12843
|
+
const [hovered, setHovered] = React46.useState(false);
|
|
12754
12844
|
const altBg = index % 2 === 1 ? SURFACE_MUTED2 : SURFACE2;
|
|
12755
12845
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12756
12846
|
"div",
|
|
@@ -12835,7 +12925,7 @@ function KeyValueListResolver(p) {
|
|
|
12835
12925
|
var _a3;
|
|
12836
12926
|
return sum + ((_a3 = g.items) != null ? _a3 : []).length;
|
|
12837
12927
|
}, 0);
|
|
12838
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12928
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
12839
12929
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12840
12930
|
"div",
|
|
12841
12931
|
{
|
|
@@ -13013,7 +13103,7 @@ function BalanceSheetResolver(p) {
|
|
|
13013
13103
|
/* @__PURE__ */ jsxRuntime.jsxs("tbody", { children: [
|
|
13014
13104
|
((_p = p.sections) != null ? _p : []).map((section) => {
|
|
13015
13105
|
var _a2;
|
|
13016
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13106
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
13017
13107
|
/* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan, style: {
|
|
13018
13108
|
padding: "8px 12px",
|
|
13019
13109
|
fontSize: "12px",
|
|
@@ -13026,7 +13116,7 @@ function BalanceSheetResolver(p) {
|
|
|
13026
13116
|
}, children: (_a2 = categoryLabels2[section.category]) != null ? _a2 : section.category }) }),
|
|
13027
13117
|
section.subsections.map((sub, si) => {
|
|
13028
13118
|
var _a3;
|
|
13029
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13119
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
13030
13120
|
/* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan, style: {
|
|
13031
13121
|
padding: "6px 10px 6px 24px",
|
|
13032
13122
|
fontSize: "12px",
|
|
@@ -13202,7 +13292,7 @@ function IncomeStatementResolver(p) {
|
|
|
13202
13292
|
textAlign: "left",
|
|
13203
13293
|
whiteSpace: "nowrap"
|
|
13204
13294
|
}, children: "\xA0" }),
|
|
13205
|
-
periods.map((period) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13295
|
+
periods.map((period) => /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
13206
13296
|
/* @__PURE__ */ jsxRuntime.jsx("th", { style: {
|
|
13207
13297
|
fontSize: "11px",
|
|
13208
13298
|
fontWeight: 500,
|
|
@@ -13233,7 +13323,7 @@ function IncomeStatementResolver(p) {
|
|
|
13233
13323
|
sections.map((section, si) => {
|
|
13234
13324
|
var _a2;
|
|
13235
13325
|
const isSubtotal = section.sectionType === "subtotal";
|
|
13236
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13326
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
13237
13327
|
/* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: colCount, style: {
|
|
13238
13328
|
padding: "8px 12px",
|
|
13239
13329
|
fontSize: "12px",
|
|
@@ -13264,7 +13354,7 @@ function IncomeStatementResolver(p) {
|
|
|
13264
13354
|
var _a4;
|
|
13265
13355
|
const val = (_a4 = amounts[pi]) != null ? _a4 : 0;
|
|
13266
13356
|
const isNeg = val < 0;
|
|
13267
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13357
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
13268
13358
|
/* @__PURE__ */ jsxRuntime.jsx("td", { style: {
|
|
13269
13359
|
padding: "6px 10px",
|
|
13270
13360
|
fontSize: "13px",
|
|
@@ -13299,7 +13389,7 @@ function IncomeStatementResolver(p) {
|
|
|
13299
13389
|
var _a2;
|
|
13300
13390
|
const val = (_a2 = grossProfit[pi]) != null ? _a2 : 0;
|
|
13301
13391
|
const isNeg = val < 0;
|
|
13302
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13392
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
13303
13393
|
/* @__PURE__ */ jsxRuntime.jsx("td", { style: {
|
|
13304
13394
|
padding: "8px 10px",
|
|
13305
13395
|
fontSize: "12px",
|
|
@@ -13334,7 +13424,7 @@ function IncomeStatementResolver(p) {
|
|
|
13334
13424
|
var _a2;
|
|
13335
13425
|
const val = (_a2 = operatingIncome[pi]) != null ? _a2 : 0;
|
|
13336
13426
|
const isNeg = val < 0;
|
|
13337
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13427
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
13338
13428
|
/* @__PURE__ */ jsxRuntime.jsx("td", { style: {
|
|
13339
13429
|
padding: "8px 10px",
|
|
13340
13430
|
fontSize: "12px",
|
|
@@ -13368,7 +13458,7 @@ function IncomeStatementResolver(p) {
|
|
|
13368
13458
|
var _a2;
|
|
13369
13459
|
const val = (_a2 = netIncome[pi]) != null ? _a2 : 0;
|
|
13370
13460
|
const isNeg = val < 0;
|
|
13371
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13461
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
13372
13462
|
/* @__PURE__ */ jsxRuntime.jsx("td", { style: {
|
|
13373
13463
|
padding: "10px 10px",
|
|
13374
13464
|
fontSize: "13px",
|
|
@@ -13588,7 +13678,7 @@ function CashFlowStatementResolver(p) {
|
|
|
13588
13678
|
/* @__PURE__ */ jsxRuntime.jsxs("tbody", { children: [
|
|
13589
13679
|
activities.map((activity, ai) => {
|
|
13590
13680
|
var _a2, _b2, _c2;
|
|
13591
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13681
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
13592
13682
|
ai > 0 && /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
13593
13683
|
"td",
|
|
13594
13684
|
{
|
|
@@ -16002,8 +16092,8 @@ var PRIORITY_STYLES = {
|
|
|
16002
16092
|
function EscalationCardResolver(p) {
|
|
16003
16093
|
var _a, _b, _c, _d, _e;
|
|
16004
16094
|
const { BORDER: BORDER3, MUTED: MUTED2, ACCENT: ACCENT2, ACCENT_SOFT: ACCENT_SOFT2, SHADOW: SHADOW2 } = useTheme();
|
|
16005
|
-
const [cardHovered, setCardHovered] =
|
|
16006
|
-
const [btnHovered, setBtnHovered] =
|
|
16095
|
+
const [cardHovered, setCardHovered] = React46.useState(false);
|
|
16096
|
+
const [btnHovered, setBtnHovered] = React46.useState(false);
|
|
16007
16097
|
const priorityStyle = p.priority ? PRIORITY_STYLES[p.priority] : null;
|
|
16008
16098
|
const railColor = (_a = priorityStyle == null ? void 0 : priorityStyle.color) != null ? _a : ACCENT2;
|
|
16009
16099
|
const iconBg = (_b = priorityStyle == null ? void 0 : priorityStyle.bg) != null ? _b : "#fff2ec";
|
|
@@ -16875,9 +16965,9 @@ var CONNECTED_GREEN = "#15803d";
|
|
|
16875
16965
|
function ConnectIntegrationResolver(p) {
|
|
16876
16966
|
var _a;
|
|
16877
16967
|
const { BORDER: BORDER3, MUTED: MUTED2, ACCENT: ACCENT2, ACCENT_SOFT: ACCENT_SOFT2, PAPER: PAPER2, SURFACE: SURFACE2, SHADOW: SHADOW2 } = useTheme();
|
|
16878
|
-
const [cardHovered, setCardHovered] =
|
|
16879
|
-
const [btnHovered, setBtnHovered] =
|
|
16880
|
-
const [imgFailed, setImgFailed] =
|
|
16968
|
+
const [cardHovered, setCardHovered] = React46.useState(false);
|
|
16969
|
+
const [btnHovered, setBtnHovered] = React46.useState(false);
|
|
16970
|
+
const [imgFailed, setImgFailed] = React46.useState(false);
|
|
16881
16971
|
const name = (p.integrationName || "Integration").trim();
|
|
16882
16972
|
const initial = name.charAt(0).toUpperCase();
|
|
16883
16973
|
const iconSrc = p.iconUrl || brandIconUrl(name);
|
|
@@ -17039,9 +17129,9 @@ function IntegrationsListResolver(p) {
|
|
|
17039
17129
|
var _a, _b;
|
|
17040
17130
|
const { BORDER: BORDER3, MUTED: MUTED2, PAPER: PAPER2, ACCENT: ACCENT2, ACCENT_SOFT: ACCENT_SOFT2, SURFACE: SURFACE2, SHADOW: SHADOW2 } = useTheme();
|
|
17041
17131
|
const integrations = Array.isArray(p.integrations) ? p.integrations : [];
|
|
17042
|
-
const [rowHover, setRowHover] =
|
|
17043
|
-
const [btnHover, setBtnHover] =
|
|
17044
|
-
const [failed, setFailed] =
|
|
17132
|
+
const [rowHover, setRowHover] = React46.useState(null);
|
|
17133
|
+
const [btnHover, setBtnHover] = React46.useState(null);
|
|
17134
|
+
const [failed, setFailed] = React46.useState({});
|
|
17045
17135
|
const connectedCount = integrations.filter((i) => i.status === "connected").length;
|
|
17046
17136
|
return /* @__PURE__ */ jsxRuntime.jsx(ComponentActions, { filename: (_a = p.title) != null ? _a : "integrations", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { width: "100%", display: "flex", flexDirection: "column", gap: "11px" }, children: [
|
|
17047
17137
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "2px" }, children: [
|
|
@@ -17533,13 +17623,13 @@ var ellipsis = {
|
|
|
17533
17623
|
function PipelinePreviewResolver(p) {
|
|
17534
17624
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
17535
17625
|
const { MUTED: MUTED2, PAPER: PAPER2, BORDER: BORDER3, ACCENT: ACCENT2, ACCENT_SOFT: ACCENT_SOFT2, SURFACE: SURFACE2 } = useTheme();
|
|
17536
|
-
const [btnHovered, setBtnHovered] =
|
|
17626
|
+
const [btnHovered, setBtnHovered] = React46.useState(false);
|
|
17537
17627
|
const stateCfg = STATE_CONFIG[(_a = p.state) != null ? _a : "draft"];
|
|
17538
17628
|
const destinations = (_b = p.destinations) != null ? _b : [];
|
|
17539
17629
|
const steps = (_c = p.steps) != null ? _c : [];
|
|
17540
17630
|
const workstreams = (_d = p.workstreams) != null ? _d : [];
|
|
17541
17631
|
const scheduleLabel = p.schedule ? p.schedule.type === "manual" ? "Manual" : (_f = (_e = p.schedule.label) != null ? _e : p.schedule.cron) != null ? _f : "Scheduled" : null;
|
|
17542
|
-
const { nodes, edges, viewBox, vbW, vbH } =
|
|
17632
|
+
const { nodes, edges, viewBox, vbW, vbH } = React46.useMemo(() => {
|
|
17543
17633
|
const res = layoutGraph(steps);
|
|
17544
17634
|
const b = layoutBounds(res.nodes);
|
|
17545
17635
|
const pad = 24;
|
|
@@ -17553,7 +17643,7 @@ function PipelinePreviewResolver(p) {
|
|
|
17553
17643
|
vbH: h
|
|
17554
17644
|
};
|
|
17555
17645
|
}, [steps]);
|
|
17556
|
-
const nodeMap =
|
|
17646
|
+
const nodeMap = React46.useMemo(() => {
|
|
17557
17647
|
const m = {};
|
|
17558
17648
|
nodes.forEach((n) => m[n.id] = n);
|
|
17559
17649
|
return m;
|
|
@@ -17931,9 +18021,9 @@ var DEFAULT_INTERACTION = {
|
|
|
17931
18021
|
onDecisionSource: void 0,
|
|
17932
18022
|
onDecisionQueueSubmit: void 0
|
|
17933
18023
|
};
|
|
17934
|
-
var GenUIInteractionContext =
|
|
18024
|
+
var GenUIInteractionContext = React46.createContext(DEFAULT_INTERACTION);
|
|
17935
18025
|
function useGenUIInteraction() {
|
|
17936
|
-
return
|
|
18026
|
+
return React46.useContext(GenUIInteractionContext);
|
|
17937
18027
|
}
|
|
17938
18028
|
var STATUS_COLORS3 = {
|
|
17939
18029
|
done: "#15803d",
|
|
@@ -18125,8 +18215,8 @@ var CARD_MIN = 132;
|
|
|
18125
18215
|
var CARD_GAP = 16;
|
|
18126
18216
|
var AUTO_COMPACT_BELOW = 360;
|
|
18127
18217
|
function useContainerWidth(ref) {
|
|
18128
|
-
const [w, setW] =
|
|
18129
|
-
|
|
18218
|
+
const [w, setW] = React46__default.default.useState(0);
|
|
18219
|
+
React46__default.default.useLayoutEffect(() => {
|
|
18130
18220
|
const el = ref.current;
|
|
18131
18221
|
if (!el || typeof ResizeObserver === "undefined") return;
|
|
18132
18222
|
const ro = new ResizeObserver((entries) => {
|
|
@@ -18229,15 +18319,15 @@ function WorkflowStepperRenderer({
|
|
|
18229
18319
|
const interactive = typeof onSelectStep === "function";
|
|
18230
18320
|
const statusColor3 = (s) => s === "active" || s === "running" ? ACCENT2 : STATUS_COLORS3[s];
|
|
18231
18321
|
const doneCount = steps.filter((s) => s.status === "done").length;
|
|
18232
|
-
const rootRef =
|
|
18322
|
+
const rootRef = React46__default.default.useRef(null);
|
|
18233
18323
|
const containerW = useContainerWidth(rootRef);
|
|
18234
18324
|
let resolved = density === "auto" ? "full" : density;
|
|
18235
18325
|
if (density === "auto" && containerW > 0) {
|
|
18236
18326
|
const needed = steps.length * CARD_MIN + Math.max(0, steps.length - 1) * CARD_GAP;
|
|
18237
18327
|
resolved = containerW < AUTO_COMPACT_BELOW || needed > containerW * 1.6 ? "compact" : "full";
|
|
18238
18328
|
}
|
|
18239
|
-
const scrollerRef =
|
|
18240
|
-
|
|
18329
|
+
const scrollerRef = React46__default.default.useRef(null);
|
|
18330
|
+
React46__default.default.useEffect(() => {
|
|
18241
18331
|
if (resolved !== "full" || loading) return;
|
|
18242
18332
|
const sc = scrollerRef.current;
|
|
18243
18333
|
if (!sc) return;
|
|
@@ -18248,11 +18338,11 @@ function WorkflowStepperRenderer({
|
|
|
18248
18338
|
el.scrollIntoView({ inline: "center", block: "nearest", behavior: "smooth" });
|
|
18249
18339
|
}
|
|
18250
18340
|
}, [resolved, loading, selectedStep, activeStepId]);
|
|
18251
|
-
const [edges, setEdges] =
|
|
18341
|
+
const [edges, setEdges] = React46__default.default.useState({
|
|
18252
18342
|
left: false,
|
|
18253
18343
|
right: false
|
|
18254
18344
|
});
|
|
18255
|
-
const updateEdges =
|
|
18345
|
+
const updateEdges = React46__default.default.useCallback(() => {
|
|
18256
18346
|
const sc = scrollerRef.current;
|
|
18257
18347
|
if (!sc) return;
|
|
18258
18348
|
const max = sc.scrollWidth - sc.clientWidth;
|
|
@@ -18261,7 +18351,7 @@ function WorkflowStepperRenderer({
|
|
|
18261
18351
|
const right = sl < max - 1;
|
|
18262
18352
|
setEdges((prev) => prev.left === left && prev.right === right ? prev : { left, right });
|
|
18263
18353
|
}, []);
|
|
18264
|
-
|
|
18354
|
+
React46__default.default.useLayoutEffect(() => {
|
|
18265
18355
|
if (resolved !== "full" || loading) return;
|
|
18266
18356
|
updateEdges();
|
|
18267
18357
|
const sc = scrollerRef.current;
|
|
@@ -18317,7 +18407,7 @@ function WorkflowStepperRenderer({
|
|
|
18317
18407
|
const reached = s.status !== "pending";
|
|
18318
18408
|
const clickable = interactive && reached;
|
|
18319
18409
|
const size = act ? 11 : done ? 9 : 8;
|
|
18320
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18410
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
18321
18411
|
i > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
18322
18412
|
"span",
|
|
18323
18413
|
{
|
|
@@ -18461,7 +18551,7 @@ function WorkflowStepperRenderer({
|
|
|
18461
18551
|
const color = statusColor3(step.status);
|
|
18462
18552
|
const humans = ((_a2 = step.assignees) != null ? _a2 : []).filter((a) => a.kind === "human");
|
|
18463
18553
|
const roleCaption = humans.map((h) => h.role).filter(Boolean).slice(0, 2).join(" \xB7 ");
|
|
18464
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18554
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
18465
18555
|
i > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
18466
18556
|
"div",
|
|
18467
18557
|
{
|
|
@@ -18827,11 +18917,11 @@ function FieldDetail({
|
|
|
18827
18917
|
}) {
|
|
18828
18918
|
var _a, _b, _c, _d;
|
|
18829
18919
|
const { BORDER: BORDER3, MUTED: MUTED2, PAPER: PAPER2, SECONDARY: SECONDARY2, SURFACE: SURFACE2, ACCENT: ACCENT2 } = useTheme();
|
|
18830
|
-
const [editing, setEditing] =
|
|
18831
|
-
const [draft, setDraft] =
|
|
18832
|
-
const [saving, setSaving] =
|
|
18833
|
-
const [saveError, setSaveError] =
|
|
18834
|
-
const textareaRef =
|
|
18920
|
+
const [editing, setEditing] = React46__default.default.useState(false);
|
|
18921
|
+
const [draft, setDraft] = React46__default.default.useState("");
|
|
18922
|
+
const [saving, setSaving] = React46__default.default.useState(false);
|
|
18923
|
+
const [saveError, setSaveError] = React46__default.default.useState(null);
|
|
18924
|
+
const textareaRef = React46__default.default.useRef(null);
|
|
18835
18925
|
const color = fieldColor(field, SECONDARY2);
|
|
18836
18926
|
const corrected = field.state === "corrected";
|
|
18837
18927
|
const startEdit = (e) => {
|
|
@@ -19341,7 +19431,7 @@ function FieldDetails({
|
|
|
19341
19431
|
},
|
|
19342
19432
|
children: facts.map((f) => {
|
|
19343
19433
|
var _a2;
|
|
19344
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19434
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React46__default.default.Fragment, { children: [
|
|
19345
19435
|
/* @__PURE__ */ jsxRuntime.jsx("dt", { style: { fontSize: "12px", color: MUTED2 }, children: f.label }),
|
|
19346
19436
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19347
19437
|
"dd",
|
|
@@ -19440,7 +19530,7 @@ function FieldAuditLog({
|
|
|
19440
19530
|
fields = []
|
|
19441
19531
|
}) {
|
|
19442
19532
|
const { BORDER: BORDER3, MUTED: MUTED2, PAPER: PAPER2, SECONDARY: SECONDARY2 } = useTheme();
|
|
19443
|
-
const fieldLabelMap =
|
|
19533
|
+
const fieldLabelMap = React46__default.default.useMemo(() => {
|
|
19444
19534
|
var _a;
|
|
19445
19535
|
const map = {};
|
|
19446
19536
|
for (const f of fields) map[f.field_key] = (_a = f.label) != null ? _a : f.field_key;
|
|
@@ -19639,10 +19729,10 @@ function PageOverlay({
|
|
|
19639
19729
|
secondary
|
|
19640
19730
|
}) {
|
|
19641
19731
|
const { PAPER: PAPER2, MUTED: MUTED2 } = useTheme();
|
|
19642
|
-
const imgRef =
|
|
19643
|
-
const selectedBoxRef =
|
|
19644
|
-
const [px, setPx] =
|
|
19645
|
-
|
|
19732
|
+
const imgRef = React46__default.default.useRef(null);
|
|
19733
|
+
const selectedBoxRef = React46__default.default.useRef(null);
|
|
19734
|
+
const [px, setPx] = React46__default.default.useState(null);
|
|
19735
|
+
React46__default.default.useEffect(() => {
|
|
19646
19736
|
const el = imgRef.current;
|
|
19647
19737
|
if (!el) return;
|
|
19648
19738
|
const measure = () => {
|
|
@@ -19656,7 +19746,7 @@ function PageOverlay({
|
|
|
19656
19746
|
ro.observe(el);
|
|
19657
19747
|
return () => ro.disconnect();
|
|
19658
19748
|
}, [page.imageUrl]);
|
|
19659
|
-
|
|
19749
|
+
React46__default.default.useEffect(() => {
|
|
19660
19750
|
if (!selectedKey) return;
|
|
19661
19751
|
if (!fields.some((f) => f.field_key === selectedKey && f.bbox)) return;
|
|
19662
19752
|
const el = selectedBoxRef.current;
|
|
@@ -19758,8 +19848,8 @@ function ExtractionDetail({
|
|
|
19758
19848
|
auditLoading
|
|
19759
19849
|
}) {
|
|
19760
19850
|
const { BORDER: BORDER3, MUTED: MUTED2, PAPER: PAPER2, SECONDARY: SECONDARY2 } = useTheme();
|
|
19761
|
-
const selectedCardRef =
|
|
19762
|
-
|
|
19851
|
+
const selectedCardRef = React46__default.default.useRef(null);
|
|
19852
|
+
React46__default.default.useEffect(() => {
|
|
19763
19853
|
if (!selectedKey || tab !== "fields") return;
|
|
19764
19854
|
const el = selectedCardRef.current;
|
|
19765
19855
|
if (el && typeof el.scrollIntoView === "function") {
|
|
@@ -19930,7 +20020,7 @@ function ExtractionModal({
|
|
|
19930
20020
|
children
|
|
19931
20021
|
}) {
|
|
19932
20022
|
const { BORDER: BORDER3, MUTED: MUTED2, SURFACE: SURFACE2, FOREGROUND: FOREGROUND2, SCRIM: SCRIM2 } = useTheme();
|
|
19933
|
-
|
|
20023
|
+
React46__default.default.useEffect(() => {
|
|
19934
20024
|
if (!open) return;
|
|
19935
20025
|
const onKey = (e) => {
|
|
19936
20026
|
if (e.key === "Escape") onClose();
|
|
@@ -20059,19 +20149,19 @@ function ExtractionModal({
|
|
|
20059
20149
|
function DocumentFieldExtractionResolver(p) {
|
|
20060
20150
|
var _a, _b;
|
|
20061
20151
|
const { BORDER: BORDER3, MUTED: MUTED2, PAPER: PAPER2, SURFACE: SURFACE2, SHADOW: SHADOW2, ACCENT: ACCENT2 } = useTheme();
|
|
20062
|
-
const [selectedKey, setSelectedKey] =
|
|
20063
|
-
const [open, setOpen] =
|
|
20064
|
-
const [tab, setTab] =
|
|
20152
|
+
const [selectedKey, setSelectedKey] = React46__default.default.useState(null);
|
|
20153
|
+
const [open, setOpen] = React46__default.default.useState(false);
|
|
20154
|
+
const [tab, setTab] = React46__default.default.useState("fields");
|
|
20065
20155
|
const pages = (_a = p.pages) != null ? _a : [];
|
|
20066
20156
|
const fields = (_b = p.fields) != null ? _b : [];
|
|
20067
20157
|
const editable = typeof p.onFieldSave === "function";
|
|
20068
20158
|
const onLoadAudit = p.onLoadAudit;
|
|
20069
|
-
|
|
20159
|
+
React46__default.default.useEffect(() => {
|
|
20070
20160
|
if (tab === "audit" && onLoadAudit) {
|
|
20071
20161
|
onLoadAudit();
|
|
20072
20162
|
}
|
|
20073
20163
|
}, [tab, onLoadAudit]);
|
|
20074
|
-
const correctionCounts =
|
|
20164
|
+
const correctionCounts = React46__default.default.useMemo(() => {
|
|
20075
20165
|
var _a2, _b2;
|
|
20076
20166
|
const counts = {};
|
|
20077
20167
|
for (const ev of (_a2 = p.auditEvents) != null ? _a2 : []) {
|
|
@@ -20317,8 +20407,8 @@ function formatAmount2(amount, currency = "USD") {
|
|
|
20317
20407
|
return `${sign}${symbol}${body}`;
|
|
20318
20408
|
}
|
|
20319
20409
|
function useContainerWidth2(ref) {
|
|
20320
|
-
const [w, setW] =
|
|
20321
|
-
|
|
20410
|
+
const [w, setW] = React46__default.default.useState(0);
|
|
20411
|
+
React46__default.default.useLayoutEffect(() => {
|
|
20322
20412
|
const el = ref.current;
|
|
20323
20413
|
if (!el || typeof ResizeObserver === "undefined") return;
|
|
20324
20414
|
const ro = new ResizeObserver((entries) => {
|
|
@@ -20413,8 +20503,8 @@ function ValueAdjuster({
|
|
|
20413
20503
|
const { SURFACE_MUTED: SURFACE_MUTED2 } = useTheme();
|
|
20414
20504
|
const adjust = option.adjust;
|
|
20415
20505
|
const suggested = clampToRange((_a = option.value) != null ? _a : adjust.min, adjust);
|
|
20416
|
-
const [value, setValue] =
|
|
20417
|
-
const [text, setText] =
|
|
20506
|
+
const [value, setValue] = React46__default.default.useState(suggested);
|
|
20507
|
+
const [text, setText] = React46__default.default.useState(String(suggested));
|
|
20418
20508
|
const step = (_b = adjust.step) != null ? _b : Number.isInteger(adjust.min) && Number.isInteger(adjust.max) ? 1 : (adjust.max - adjust.min) / 100;
|
|
20419
20509
|
const pct = adjust.max > adjust.min ? (value - adjust.min) / (adjust.max - adjust.min) * 100 : 0;
|
|
20420
20510
|
const suggestedPct = adjust.max > adjust.min ? (suggested - adjust.min) / (adjust.max - adjust.min) * 100 : 0;
|
|
@@ -20620,10 +20710,10 @@ function DecisionCardRenderer({
|
|
|
20620
20710
|
}) {
|
|
20621
20711
|
var _a, _b, _c;
|
|
20622
20712
|
const { BORDER: BORDER3, MUTED: MUTED2, ACCENT: ACCENT2, ACCENT_SOFT: ACCENT_SOFT2, SURFACE: SURFACE2, SURFACE_MUTED: SURFACE_MUTED2, SHADOW: SHADOW2 } = useTheme();
|
|
20623
|
-
const rootRef =
|
|
20713
|
+
const rootRef = React46__default.default.useRef(null);
|
|
20624
20714
|
const width = useContainerWidth2(rootRef);
|
|
20625
20715
|
const stacked = width > 0 && width < STACK_BELOW;
|
|
20626
|
-
const [adjustingIdx, setAdjustingIdx] =
|
|
20716
|
+
const [adjustingIdx, setAdjustingIdx] = React46__default.default.useState(null);
|
|
20627
20717
|
const options = (_a = data.options) != null ? _a : [];
|
|
20628
20718
|
const recommendedIdx = Math.max(
|
|
20629
20719
|
0,
|
|
@@ -20924,8 +21014,8 @@ function DecisionCardResolver(p) {
|
|
|
20924
21014
|
const decisionId = (_a = p.id) != null ? _a : p.title;
|
|
20925
21015
|
const hostResolved = resolvedDecisions == null ? void 0 : resolvedDecisions[decisionId];
|
|
20926
21016
|
const initial = hostResolved != null ? hostResolved : p.resolved ? composeResolution(p, p.resolved.option, p.resolved.value) : null;
|
|
20927
|
-
const [localResolved, setLocalResolved] =
|
|
20928
|
-
|
|
21017
|
+
const [localResolved, setLocalResolved] = React46__default.default.useState(initial);
|
|
21018
|
+
React46__default.default.useEffect(() => {
|
|
20929
21019
|
if (hostResolved !== void 0) setLocalResolved(hostResolved);
|
|
20930
21020
|
}, [hostResolved]);
|
|
20931
21021
|
const resolved = hostResolved != null ? hostResolved : localResolved;
|
|
@@ -20999,11 +21089,11 @@ function DecisionQueueRenderer({
|
|
|
20999
21089
|
var _a;
|
|
21000
21090
|
const { BORDER: BORDER3, MUTED: MUTED2, ACCENT: ACCENT2, SURFACE: SURFACE2, SURFACE_MUTED: SURFACE_MUTED2, BORDER_SOFT: BORDER_SOFT2, PAPER: PAPER2, SHADOW: SHADOW2 } = useTheme();
|
|
21001
21091
|
const items = (_a = data.items) != null ? _a : [];
|
|
21002
|
-
const [decisions, setDecisions] =
|
|
21092
|
+
const [decisions, setDecisions] = React46__default.default.useState(
|
|
21003
21093
|
() => items.map(() => void 0)
|
|
21004
21094
|
);
|
|
21005
21095
|
const firstUndecided = decisions.findIndex((d) => !d);
|
|
21006
|
-
const [focusIdx, setFocusIdx] =
|
|
21096
|
+
const [focusIdx, setFocusIdx] = React46__default.default.useState(firstUndecided >= 0 ? firstUndecided : null);
|
|
21007
21097
|
const isSubmitted = submitted != null;
|
|
21008
21098
|
const shown = isSubmitted ? items.map(
|
|
21009
21099
|
(item, i) => {
|
|
@@ -21028,16 +21118,16 @@ function DecisionQueueRenderer({
|
|
|
21028
21118
|
const final = decisions;
|
|
21029
21119
|
onSubmit == null ? void 0 : onSubmit(final, composeQueueMessage(items, final));
|
|
21030
21120
|
};
|
|
21031
|
-
const onReadyRef =
|
|
21032
|
-
|
|
21121
|
+
const onReadyRef = React46__default.default.useRef(onReady);
|
|
21122
|
+
React46__default.default.useEffect(() => {
|
|
21033
21123
|
onReadyRef.current = onReady;
|
|
21034
21124
|
});
|
|
21035
|
-
|
|
21125
|
+
React46__default.default.useEffect(() => {
|
|
21036
21126
|
if (!onReadyRef.current) return;
|
|
21037
21127
|
const msg = allDecided ? composeQueueMessage(items, decisions) : null;
|
|
21038
21128
|
onReadyRef.current(allDecided && !isSubmitted, msg, decisions.filter(Boolean));
|
|
21039
21129
|
}, [decisions, allDecided, isSubmitted]);
|
|
21040
|
-
|
|
21130
|
+
React46__default.default.useEffect(() => {
|
|
21041
21131
|
if (!submitRef) return;
|
|
21042
21132
|
submitRef.current = handleSubmit;
|
|
21043
21133
|
return () => {
|
|
@@ -21262,7 +21352,7 @@ function DecisionQueueResolver(p) {
|
|
|
21262
21352
|
const { resolvedDecisions, onDecisionQueueSubmit } = useGenUIInteraction();
|
|
21263
21353
|
const queueId = (_b = (_a = p.id) != null ? _a : p.title) != null ? _b : "decision-queue";
|
|
21264
21354
|
const replayed = (_d = (_c = p.resolved) == null ? void 0 : _c.decisions) != null ? _d : null;
|
|
21265
|
-
const [localSubmitted, setLocalSubmitted] =
|
|
21355
|
+
const [localSubmitted, setLocalSubmitted] = React46__default.default.useState(null);
|
|
21266
21356
|
const hostLocked = (resolvedDecisions == null ? void 0 : resolvedDecisions[queueId]) != null;
|
|
21267
21357
|
const submitted = (_e = replayed != null ? replayed : localSubmitted) != null ? _e : hostLocked ? [] : null;
|
|
21268
21358
|
const handleSubmit = (decisions, message) => {
|
|
@@ -21340,9 +21430,9 @@ function ExternalIcon() {
|
|
|
21340
21430
|
function TabbyAuthResolver(p) {
|
|
21341
21431
|
var _a, _b, _c;
|
|
21342
21432
|
const { BORDER: BORDER3, MUTED: MUTED2, ACCENT: ACCENT2, ACCENT_SOFT: ACCENT_SOFT2, SURFACE: SURFACE2, SURFACE_MUTED: SURFACE_MUTED2, SHADOW: SHADOW2 } = useTheme();
|
|
21343
|
-
const [cardHovered, setCardHovered] =
|
|
21344
|
-
const [btnHovered, setBtnHovered] =
|
|
21345
|
-
const [imgFailed, setImgFailed] =
|
|
21433
|
+
const [cardHovered, setCardHovered] = React46.useState(false);
|
|
21434
|
+
const [btnHovered, setBtnHovered] = React46.useState(false);
|
|
21435
|
+
const [imgFailed, setImgFailed] = React46.useState(false);
|
|
21346
21436
|
const app = humanizeApp(p.app || "the app");
|
|
21347
21437
|
const connected = p.state === "connected";
|
|
21348
21438
|
const accent = connected ? CONNECTED_GREEN3 : ACCENT2;
|
|
@@ -21748,7 +21838,7 @@ function InlineSpinner() {
|
|
|
21748
21838
|
}
|
|
21749
21839
|
function GenUIRenderer({ payload }) {
|
|
21750
21840
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21751
|
-
|
|
21841
|
+
React46.Suspense,
|
|
21752
21842
|
{
|
|
21753
21843
|
fallback: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px", padding: "8px 0" }, children: [
|
|
21754
21844
|
/* @__PURE__ */ jsxRuntime.jsx(InlineSpinner, {}),
|