footprint-explainable-ui 0.3.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -3
- package/dist/adapters/fromRuntimeSnapshot.d.ts +52 -0
- package/dist/adapters/fromRuntimeSnapshot.d.ts.map +1 -0
- package/dist/adapters/fromRuntimeSnapshot.js +97 -0
- package/dist/adapters/fromRuntimeSnapshot.js.map +1 -0
- package/dist/components/ExplainableShell/ExplainableShell.d.ts +26 -0
- package/dist/components/ExplainableShell/ExplainableShell.d.ts.map +1 -0
- package/dist/components/ExplainableShell/ExplainableShell.js +94 -0
- package/dist/components/ExplainableShell/ExplainableShell.js.map +1 -0
- package/dist/components/ExplainableShell/index.d.ts +3 -0
- package/dist/components/ExplainableShell/index.d.ts.map +1 -0
- package/dist/components/ExplainableShell/index.js +2 -0
- package/dist/components/ExplainableShell/index.js.map +1 -0
- package/dist/components/FlowchartView/FlowchartView.d.ts +20 -0
- package/dist/components/FlowchartView/FlowchartView.d.ts.map +1 -0
- package/dist/components/FlowchartView/FlowchartView.js +80 -0
- package/dist/components/FlowchartView/FlowchartView.js.map +1 -0
- package/dist/components/FlowchartView/SubflowBreadcrumb.d.ts +11 -0
- package/dist/components/FlowchartView/SubflowBreadcrumb.d.ts.map +1 -0
- package/dist/components/FlowchartView/SubflowBreadcrumb.js +49 -0
- package/dist/components/FlowchartView/SubflowBreadcrumb.js.map +1 -0
- package/dist/components/FlowchartView/SubflowTree.d.ts +36 -0
- package/dist/components/FlowchartView/SubflowTree.d.ts.map +1 -0
- package/dist/components/FlowchartView/SubflowTree.js +143 -0
- package/dist/components/FlowchartView/SubflowTree.js.map +1 -0
- package/dist/components/FlowchartView/TracedFlowchartView.d.ts +20 -0
- package/dist/components/FlowchartView/TracedFlowchartView.d.ts.map +1 -0
- package/dist/components/FlowchartView/TracedFlowchartView.js +101 -0
- package/dist/components/FlowchartView/TracedFlowchartView.js.map +1 -0
- package/dist/components/FlowchartView/index.d.ts +11 -0
- package/dist/components/FlowchartView/index.d.ts.map +1 -0
- package/dist/components/FlowchartView/index.js +6 -0
- package/dist/components/FlowchartView/index.js.map +1 -0
- package/dist/components/FlowchartView/specToReactFlow.d.ts +56 -0
- package/dist/components/FlowchartView/specToReactFlow.d.ts.map +1 -0
- package/dist/components/FlowchartView/specToReactFlow.js +202 -0
- package/dist/components/FlowchartView/specToReactFlow.js.map +1 -0
- package/dist/components/FlowchartView/useSubflowNavigation.d.ts +35 -0
- package/dist/components/FlowchartView/useSubflowNavigation.d.ts.map +1 -0
- package/dist/components/FlowchartView/useSubflowNavigation.js +80 -0
- package/dist/components/FlowchartView/useSubflowNavigation.js.map +1 -0
- package/dist/components/GanttTimeline/GanttTimeline.d.ts +18 -0
- package/dist/components/GanttTimeline/GanttTimeline.d.ts.map +1 -0
- package/dist/components/GanttTimeline/GanttTimeline.js +123 -0
- package/dist/components/GanttTimeline/GanttTimeline.js.map +1 -0
- package/dist/components/GanttTimeline/index.d.ts +3 -0
- package/dist/components/GanttTimeline/index.d.ts.map +1 -0
- package/dist/components/GanttTimeline/index.js +2 -0
- package/dist/components/GanttTimeline/index.js.map +1 -0
- package/dist/components/MemoryInspector/MemoryInspector.d.ts +19 -0
- package/dist/components/MemoryInspector/MemoryInspector.d.ts.map +1 -0
- package/dist/components/MemoryInspector/MemoryInspector.js +95 -0
- package/dist/components/MemoryInspector/MemoryInspector.js.map +1 -0
- package/dist/components/MemoryInspector/index.d.ts +3 -0
- package/dist/components/MemoryInspector/index.d.ts.map +1 -0
- package/dist/components/MemoryInspector/index.js +2 -0
- package/dist/components/MemoryInspector/index.js.map +1 -0
- package/dist/components/NarrativeLog/NarrativeLog.d.ts +15 -0
- package/dist/components/NarrativeLog/NarrativeLog.d.ts.map +1 -0
- package/dist/components/NarrativeLog/NarrativeLog.js +65 -0
- package/dist/components/NarrativeLog/NarrativeLog.js.map +1 -0
- package/dist/components/NarrativeLog/index.d.ts +3 -0
- package/dist/components/NarrativeLog/index.d.ts.map +1 -0
- package/dist/components/NarrativeLog/index.js +2 -0
- package/dist/components/NarrativeLog/index.js.map +1 -0
- package/dist/components/NarrativeTrace/NarrativeTrace.d.ts +13 -0
- package/dist/components/NarrativeTrace/NarrativeTrace.d.ts.map +1 -0
- package/dist/components/NarrativeTrace/NarrativeTrace.js +127 -0
- package/dist/components/NarrativeTrace/NarrativeTrace.js.map +1 -0
- package/dist/components/NarrativeTrace/index.d.ts +3 -0
- package/dist/components/NarrativeTrace/index.d.ts.map +1 -0
- package/dist/components/NarrativeTrace/index.js +2 -0
- package/dist/components/NarrativeTrace/index.js.map +1 -0
- package/dist/components/ResultPanel/ResultPanel.d.ts +11 -0
- package/dist/components/ResultPanel/ResultPanel.d.ts.map +1 -0
- package/dist/components/ResultPanel/ResultPanel.js +54 -0
- package/dist/components/ResultPanel/ResultPanel.js.map +1 -0
- package/dist/components/ResultPanel/index.d.ts +3 -0
- package/dist/components/ResultPanel/index.d.ts.map +1 -0
- package/dist/components/ResultPanel/index.js +2 -0
- package/dist/components/ResultPanel/index.js.map +1 -0
- package/dist/components/ScopeDiff/ScopeDiff.d.ts +17 -0
- package/dist/components/ScopeDiff/ScopeDiff.d.ts.map +1 -0
- package/dist/components/ScopeDiff/ScopeDiff.js +87 -0
- package/dist/components/ScopeDiff/ScopeDiff.js.map +1 -0
- package/dist/components/ScopeDiff/index.d.ts +3 -0
- package/dist/components/ScopeDiff/index.d.ts.map +1 -0
- package/dist/components/ScopeDiff/index.js +2 -0
- package/dist/components/ScopeDiff/index.js.map +1 -0
- package/dist/components/SnapshotPanel/SnapshotPanel.d.ts +17 -0
- package/dist/components/SnapshotPanel/SnapshotPanel.d.ts.map +1 -0
- package/dist/components/SnapshotPanel/SnapshotPanel.js +85 -0
- package/dist/components/SnapshotPanel/SnapshotPanel.js.map +1 -0
- package/dist/components/SnapshotPanel/index.d.ts +3 -0
- package/dist/components/SnapshotPanel/index.d.ts.map +1 -0
- package/dist/components/SnapshotPanel/index.js +2 -0
- package/dist/components/SnapshotPanel/index.js.map +1 -0
- package/dist/components/StageNode/StageNode.d.ts +31 -0
- package/dist/components/StageNode/StageNode.d.ts.map +1 -0
- package/dist/components/StageNode/StageNode.js +134 -0
- package/dist/components/StageNode/StageNode.js.map +1 -0
- package/dist/components/StageNode/index.d.ts +3 -0
- package/dist/components/StageNode/index.d.ts.map +1 -0
- package/dist/components/StageNode/index.js +2 -0
- package/dist/components/StageNode/index.js.map +1 -0
- package/dist/components/TimeTravelControls/TimeTravelControls.d.ts +13 -0
- package/dist/components/TimeTravelControls/TimeTravelControls.d.ts.map +1 -0
- package/dist/components/TimeTravelControls/TimeTravelControls.js +104 -0
- package/dist/components/TimeTravelControls/TimeTravelControls.js.map +1 -0
- package/dist/components/TimeTravelControls/index.d.ts +3 -0
- package/dist/components/TimeTravelControls/index.d.ts.map +1 -0
- package/dist/components/TimeTravelControls/index.js +2 -0
- package/dist/components/TimeTravelControls/index.js.map +1 -0
- package/dist/components/TimeTravelDebugger/TimeTravelDebugger.d.ts +22 -0
- package/dist/components/TimeTravelDebugger/TimeTravelDebugger.d.ts.map +1 -0
- package/dist/components/TimeTravelDebugger/TimeTravelDebugger.js +104 -0
- package/dist/components/TimeTravelDebugger/TimeTravelDebugger.js.map +1 -0
- package/dist/components/TimeTravelDebugger/index.d.ts +3 -0
- package/dist/components/TimeTravelDebugger/index.d.ts.map +1 -0
- package/dist/components/TimeTravelDebugger/index.js +2 -0
- package/dist/components/TimeTravelDebugger/index.js.map +1 -0
- package/dist/flowchart.cjs +704 -220
- package/dist/flowchart.cjs.map +1 -1
- package/dist/flowchart.d.cts +55 -1
- package/dist/flowchart.d.ts +55 -1
- package/dist/flowchart.d.ts.map +1 -0
- package/dist/flowchart.js +700 -214
- package/dist/flowchart.js.map +1 -1
- package/dist/index.cjs +849 -76
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +95 -3
- package/dist/index.d.ts +95 -3
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +851 -80
- package/dist/index.js.map +1 -1
- package/dist/theme/ThemeProvider.d.ts +13 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/ThemeProvider.js +16 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/index.d.ts +7 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +5 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/presets.d.ts +15 -0
- package/dist/theme/presets.d.ts.map +1 -0
- package/dist/theme/presets.js +70 -0
- package/dist/theme/presets.js.map +1 -0
- package/dist/theme/styles.d.ts +32 -0
- package/dist/theme/styles.d.ts.map +1 -0
- package/dist/theme/styles.js +37 -0
- package/dist/theme/styles.js.map +1 -0
- package/dist/theme/tokens.d.ts +28 -0
- package/dist/theme/tokens.d.ts.map +1 -0
- package/dist/theme/tokens.js +58 -0
- package/dist/theme/tokens.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types.d.ts +35 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +10 -4
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback, useMemo, useEffect, useRef } from "react";
|
|
3
|
+
import { theme, fontSize, padding } from "../../theme";
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Helpers
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
function parseGroups(lines) {
|
|
8
|
+
const groups = [];
|
|
9
|
+
let current = null;
|
|
10
|
+
for (let i = 0; i < lines.length; i++) {
|
|
11
|
+
const line = lines[i];
|
|
12
|
+
const trimmed = line.trimStart();
|
|
13
|
+
const isStep = trimmed.startsWith("Step ") || /^\s/.test(line);
|
|
14
|
+
if (!isStep || !current) {
|
|
15
|
+
current = { header: line, headerIdx: i, steps: [] };
|
|
16
|
+
groups.push(current);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
current.steps.push({ text: trimmed, idx: i });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return groups;
|
|
23
|
+
}
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Component
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
export function NarrativeTrace({ narrative, revealedCount, defaultCollapsed = false, onStageClick, size = "default", unstyled = false, className, style, }) {
|
|
28
|
+
const revealed = revealedCount != null ? narrative.slice(0, revealedCount) : narrative;
|
|
29
|
+
const future = revealedCount != null ? narrative.slice(revealedCount) : [];
|
|
30
|
+
const revealedGroups = useMemo(() => parseGroups(revealed), [revealed]);
|
|
31
|
+
const futureGroups = useMemo(() => parseGroups(future), [future]);
|
|
32
|
+
const [collapsedSet, setCollapsedSet] = useState(() => {
|
|
33
|
+
if (!defaultCollapsed)
|
|
34
|
+
return new Set();
|
|
35
|
+
return new Set(parseGroups(narrative).map((g) => g.headerIdx));
|
|
36
|
+
});
|
|
37
|
+
const latestRef = useRef(null);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
latestRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
40
|
+
}, [revealedGroups.length]);
|
|
41
|
+
const toggle = useCallback((idx) => {
|
|
42
|
+
setCollapsedSet((prev) => {
|
|
43
|
+
const next = new Set(prev);
|
|
44
|
+
if (next.has(idx))
|
|
45
|
+
next.delete(idx);
|
|
46
|
+
else
|
|
47
|
+
next.add(idx);
|
|
48
|
+
return next;
|
|
49
|
+
});
|
|
50
|
+
}, []);
|
|
51
|
+
const lastIdx = revealedGroups.length - 1;
|
|
52
|
+
const fs = fontSize[size];
|
|
53
|
+
const pad = padding[size];
|
|
54
|
+
// ── Unstyled mode ──
|
|
55
|
+
if (unstyled) {
|
|
56
|
+
return (_jsxs("div", { className: className, style: style, "data-fp": "narrative-trace", children: [revealedGroups.map((group, gi) => (_jsxs("div", { "data-fp": "narrative-group", "data-latest": gi === lastIdx, children: [_jsx("div", { "data-fp": "narrative-header", "data-collapsible": group.steps.length > 0, "data-collapsed": collapsedSet.has(group.headerIdx), onClick: () => {
|
|
57
|
+
if (group.steps.length > 0)
|
|
58
|
+
toggle(group.headerIdx);
|
|
59
|
+
onStageClick?.(group.headerIdx);
|
|
60
|
+
}, children: group.header }), !collapsedSet.has(group.headerIdx) &&
|
|
61
|
+
group.steps.map((step) => (_jsx("div", { "data-fp": "narrative-step", children: step.text }, step.idx)))] }, group.headerIdx))), futureGroups.map((group) => (_jsxs("div", { "data-fp": "narrative-group", "data-future": true, children: [_jsx("div", { "data-fp": "narrative-header", children: group.header }), group.steps.map((step) => (_jsx("div", { "data-fp": "narrative-step", children: step.text }, `f-${step.idx}`)))] }, `f-${group.headerIdx}`)))] }));
|
|
62
|
+
}
|
|
63
|
+
// ── Styled mode ──
|
|
64
|
+
return (_jsxs("div", { className: className, style: {
|
|
65
|
+
flex: 1,
|
|
66
|
+
overflow: "auto",
|
|
67
|
+
padding: pad,
|
|
68
|
+
fontFamily: theme.fontMono,
|
|
69
|
+
...style,
|
|
70
|
+
}, "data-fp": "narrative-trace", children: [revealedGroups.map((group, gi) => {
|
|
71
|
+
const isLatest = gi === lastIdx;
|
|
72
|
+
const isCollapsed = collapsedSet.has(group.headerIdx);
|
|
73
|
+
const hasSteps = group.steps.length > 0;
|
|
74
|
+
return (_jsxs("div", { ref: isLatest ? latestRef : undefined, style: { marginBottom: 2 }, "data-fp": "narrative-group", children: [_jsxs("div", { onClick: () => {
|
|
75
|
+
if (hasSteps)
|
|
76
|
+
toggle(group.headerIdx);
|
|
77
|
+
onStageClick?.(group.headerIdx);
|
|
78
|
+
}, style: {
|
|
79
|
+
fontSize: fs.body,
|
|
80
|
+
lineHeight: 1.7,
|
|
81
|
+
color: isLatest ? theme.textPrimary : theme.textSecondary,
|
|
82
|
+
padding: `4px ${pad - 4}px`,
|
|
83
|
+
borderRadius: 4,
|
|
84
|
+
background: isLatest ? theme.bgTertiary : "transparent",
|
|
85
|
+
borderLeft: isLatest
|
|
86
|
+
? `3px solid ${theme.primary}`
|
|
87
|
+
: `3px solid ${theme.success}`,
|
|
88
|
+
cursor: hasSteps ? "pointer" : "default",
|
|
89
|
+
fontWeight: 600,
|
|
90
|
+
display: "flex",
|
|
91
|
+
alignItems: "center",
|
|
92
|
+
gap: 6,
|
|
93
|
+
userSelect: "none",
|
|
94
|
+
transition: "all 0.15s ease",
|
|
95
|
+
}, children: [hasSteps && (_jsx("span", { style: {
|
|
96
|
+
fontSize: fs.small - 1,
|
|
97
|
+
color: theme.textMuted,
|
|
98
|
+
transition: "transform 0.15s ease",
|
|
99
|
+
transform: isCollapsed ? "rotate(-90deg)" : "rotate(0deg)",
|
|
100
|
+
display: "inline-block",
|
|
101
|
+
width: 10,
|
|
102
|
+
flexShrink: 0,
|
|
103
|
+
}, children: "\u25BC" })), !hasSteps && _jsx("span", { style: { width: 10, flexShrink: 0 } }), _jsx("span", { children: group.header })] }), !isCollapsed &&
|
|
104
|
+
group.steps.map((step) => (_jsx("div", { style: {
|
|
105
|
+
fontSize: fs.small,
|
|
106
|
+
lineHeight: 1.6,
|
|
107
|
+
color: isLatest ? theme.textSecondary : theme.textMuted,
|
|
108
|
+
padding: `2px ${pad - 4}px 2px ${pad + 20}px`,
|
|
109
|
+
opacity: isLatest ? 0.9 : 0.7,
|
|
110
|
+
transition: "all 0.15s ease",
|
|
111
|
+
}, "data-fp": "narrative-step", children: step.text }, step.idx)))] }, group.headerIdx));
|
|
112
|
+
}), futureGroups.length > 0 && (_jsx("div", { style: { opacity: 0.2 }, children: futureGroups.map((group) => (_jsxs("div", { style: { marginBottom: 2 }, children: [_jsx("div", { style: {
|
|
113
|
+
fontSize: fs.body,
|
|
114
|
+
lineHeight: 1.7,
|
|
115
|
+
color: theme.textMuted,
|
|
116
|
+
padding: `4px ${pad - 4}px`,
|
|
117
|
+
borderLeft: `3px solid ${theme.border}`,
|
|
118
|
+
fontWeight: 600,
|
|
119
|
+
paddingLeft: pad + 12,
|
|
120
|
+
}, children: group.header }), group.steps.map((step) => (_jsx("div", { style: {
|
|
121
|
+
fontSize: fs.small,
|
|
122
|
+
lineHeight: 1.6,
|
|
123
|
+
color: theme.textMuted,
|
|
124
|
+
padding: `2px ${pad - 4}px 2px ${pad + 20}px`,
|
|
125
|
+
}, children: step.text }, `f-${step.idx}`)))] }, `f-${group.headerIdx}`))) }))] }));
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=NarrativeTrace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NarrativeTrace.js","sourceRoot":"","sources":["../../../src/components/NarrativeTrace/NarrativeTrace.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/NarrativeTrace/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/NarrativeTrace/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BaseComponentProps } from "../../types";
|
|
2
|
+
export interface ResultPanelProps extends BaseComponentProps {
|
|
3
|
+
/** Final pipeline output / shared state */
|
|
4
|
+
data: Record<string, unknown> | null;
|
|
5
|
+
/** Optional console log lines */
|
|
6
|
+
logs?: string[];
|
|
7
|
+
/** Hide console section (default: false) */
|
|
8
|
+
hideConsole?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function ResultPanel({ data, logs, hideConsole, size, unstyled, className, style, }: ResultPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=ResultPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResultPanel.d.ts","sourceRoot":"","sources":["../../../src/components/ResultPanel/ResultPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,IAAS,EACT,WAAmB,EACnB,IAAgB,EAChB,QAAgB,EAChB,SAAS,EACT,KAAK,GACN,EAAE,gBAAgB,2CAiHlB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { theme, fontSize, padding } from "../../theme";
|
|
3
|
+
export function ResultPanel({ data, logs = [], hideConsole = false, size = "default", unstyled = false, className, style, }) {
|
|
4
|
+
const fs = fontSize[size];
|
|
5
|
+
const pad = padding[size];
|
|
6
|
+
if (unstyled) {
|
|
7
|
+
return (_jsxs("div", { className: className, style: style, "data-fp": "result-panel", children: [_jsx("div", { "data-fp": "result-data", children: _jsx("pre", { children: data ? JSON.stringify(data, null, 2) : "No data" }) }), !hideConsole && (_jsx("div", { "data-fp": "result-console", children: logs.map((line, i) => (_jsx("div", { "data-fp": "console-line", "data-error": line.startsWith("ERROR"), children: line }, i))) }))] }));
|
|
8
|
+
}
|
|
9
|
+
return (_jsxs("div", { className: className, style: {
|
|
10
|
+
height: "100%",
|
|
11
|
+
display: "flex",
|
|
12
|
+
flexDirection: "column",
|
|
13
|
+
overflow: "hidden",
|
|
14
|
+
...style,
|
|
15
|
+
}, "data-fp": "result-panel", children: [data && (_jsxs("div", { style: { flex: 1, overflow: "auto", padding: pad }, children: [_jsx("div", { style: {
|
|
16
|
+
fontSize: fs.label,
|
|
17
|
+
fontWeight: 600,
|
|
18
|
+
color: theme.textMuted,
|
|
19
|
+
textTransform: "uppercase",
|
|
20
|
+
letterSpacing: "0.08em",
|
|
21
|
+
marginBottom: 8,
|
|
22
|
+
}, children: size === "compact" ? "Result" : "Business Result (Scope)" }), _jsx("pre", { style: {
|
|
23
|
+
fontSize: fs.body,
|
|
24
|
+
fontFamily: theme.fontMono,
|
|
25
|
+
color: theme.textPrimary,
|
|
26
|
+
background: theme.bgSecondary,
|
|
27
|
+
padding: pad,
|
|
28
|
+
borderRadius: theme.radius,
|
|
29
|
+
overflow: "auto",
|
|
30
|
+
margin: 0,
|
|
31
|
+
}, children: JSON.stringify(data, null, 2) })] })), !hideConsole && (_jsxs("div", { style: {
|
|
32
|
+
borderTop: `1px solid ${theme.border}`,
|
|
33
|
+
padding: pad,
|
|
34
|
+
overflow: "auto",
|
|
35
|
+
maxHeight: "40%",
|
|
36
|
+
flexShrink: 0,
|
|
37
|
+
}, children: [_jsx("div", { style: {
|
|
38
|
+
fontSize: fs.label,
|
|
39
|
+
fontWeight: 600,
|
|
40
|
+
color: theme.textMuted,
|
|
41
|
+
textTransform: "uppercase",
|
|
42
|
+
letterSpacing: "0.08em",
|
|
43
|
+
marginBottom: 8,
|
|
44
|
+
}, children: "Console" }), logs.length === 0 && (_jsx("div", { style: { fontSize: fs.body, color: theme.textMuted, fontStyle: "italic" }, children: "No console output" })), logs.map((line, i) => (_jsx("div", { style: {
|
|
45
|
+
fontSize: fs.body,
|
|
46
|
+
fontFamily: theme.fontMono,
|
|
47
|
+
color: line.startsWith("ERROR") ? theme.error : theme.textPrimary,
|
|
48
|
+
padding: "2px 0",
|
|
49
|
+
borderBottom: `1px solid ${theme.bgSecondary}`,
|
|
50
|
+
whiteSpace: "pre-wrap",
|
|
51
|
+
wordBreak: "break-word",
|
|
52
|
+
}, children: line }, i)))] }))] }));
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=ResultPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResultPanel.js","sourceRoot":"","sources":["../../../src/components/ResultPanel/ResultPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ResultPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ResultPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BaseComponentProps } from "../../types";
|
|
2
|
+
export interface DiffEntry {
|
|
3
|
+
key: string;
|
|
4
|
+
type: "added" | "removed" | "changed" | "unchanged";
|
|
5
|
+
oldValue?: unknown;
|
|
6
|
+
newValue?: unknown;
|
|
7
|
+
}
|
|
8
|
+
export interface ScopeDiffProps extends BaseComponentProps {
|
|
9
|
+
/** Memory state before the current stage */
|
|
10
|
+
previous: Record<string, unknown> | null;
|
|
11
|
+
/** Memory state after the current stage */
|
|
12
|
+
current: Record<string, unknown>;
|
|
13
|
+
/** Hide unchanged keys (default: false) */
|
|
14
|
+
hideUnchanged?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function ScopeDiff({ previous, current, hideUnchanged, size, unstyled, className, style, }: ScopeDiffProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=ScopeDiff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScopeDiff.d.ts","sourceRoot":"","sources":["../../../src/components/ScopeDiff/ScopeDiff.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAOtD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,kBAAkB;IACxD,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,2CAA2C;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAoDD,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,OAAO,EACP,aAAqB,EACrB,IAAgB,EAChB,QAAgB,EAChB,SAAS,EACT,KAAK,GACN,EAAE,cAAc,2CA4GhB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { theme, fontSize, padding } from "../../theme";
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Helpers
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
function computeDiff(prev, curr) {
|
|
8
|
+
const entries = [];
|
|
9
|
+
const allKeys = new Set([...Object.keys(prev ?? {}), ...Object.keys(curr)]);
|
|
10
|
+
for (const key of allKeys) {
|
|
11
|
+
const inPrev = prev != null && key in prev;
|
|
12
|
+
const inCurr = key in curr;
|
|
13
|
+
const oldVal = prev?.[key];
|
|
14
|
+
const newVal = curr[key];
|
|
15
|
+
if (!inPrev && inCurr) {
|
|
16
|
+
entries.push({ key, type: "added", newValue: newVal });
|
|
17
|
+
}
|
|
18
|
+
else if (inPrev && !inCurr) {
|
|
19
|
+
entries.push({ key, type: "removed", oldValue: oldVal });
|
|
20
|
+
}
|
|
21
|
+
else if (JSON.stringify(oldVal) !== JSON.stringify(newVal)) {
|
|
22
|
+
entries.push({ key, type: "changed", oldValue: oldVal, newValue: newVal });
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
entries.push({ key, type: "unchanged", newValue: newVal });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const order = { added: 0, changed: 1, removed: 2, unchanged: 3 };
|
|
29
|
+
entries.sort((a, b) => order[a.type] - order[b.type]);
|
|
30
|
+
return entries;
|
|
31
|
+
}
|
|
32
|
+
function fmt(v) {
|
|
33
|
+
if (typeof v === "string")
|
|
34
|
+
return `"${v}"`;
|
|
35
|
+
if (typeof v === "object" && v !== null)
|
|
36
|
+
return JSON.stringify(v, null, 2);
|
|
37
|
+
return String(v);
|
|
38
|
+
}
|
|
39
|
+
const diffColors = {
|
|
40
|
+
added: { bg: "rgba(34,197,94,0.10)", fg: "#22c55e", icon: "+" },
|
|
41
|
+
removed: { bg: "rgba(239,68,68,0.10)", fg: "#ef4444", icon: "-" },
|
|
42
|
+
changed: { bg: "rgba(245,158,11,0.10)", fg: "#f59e0b", icon: "~" },
|
|
43
|
+
unchanged: { bg: "transparent", fg: "", icon: " " },
|
|
44
|
+
};
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
// Component
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
export function ScopeDiff({ previous, current, hideUnchanged = false, size = "default", unstyled = false, className, style, }) {
|
|
49
|
+
const entries = useMemo(() => computeDiff(previous, current), [previous, current]);
|
|
50
|
+
const visible = hideUnchanged ? entries.filter((e) => e.type !== "unchanged") : entries;
|
|
51
|
+
const fs = fontSize[size];
|
|
52
|
+
const pad = padding[size];
|
|
53
|
+
if (unstyled) {
|
|
54
|
+
return (_jsx("div", { className: className, style: style, "data-fp": "scope-diff", children: visible.map((e) => (_jsxs("div", { "data-fp": "diff-entry", "data-type": e.type, children: [_jsx("span", { "data-fp": "diff-key", children: e.key }), e.type === "changed" && (_jsxs(_Fragment, { children: [_jsx("span", { "data-fp": "diff-old", children: fmt(e.oldValue) }), _jsx("span", { "data-fp": "diff-new", children: fmt(e.newValue) })] })), (e.type === "added" || e.type === "unchanged") && (_jsx("span", { "data-fp": "diff-value", children: fmt(e.newValue) })), e.type === "removed" && (_jsx("span", { "data-fp": "diff-value", children: fmt(e.oldValue) }))] }, e.key))) }));
|
|
55
|
+
}
|
|
56
|
+
return (_jsxs("div", { className: className, style: { padding: pad, fontFamily: theme.fontMono, ...style }, "data-fp": "scope-diff", children: [visible.length === 0 && (_jsx("div", { style: { fontSize: fs.body, color: theme.textMuted, fontStyle: "italic" }, children: "No changes" })), visible.map((entry) => {
|
|
57
|
+
const dc = diffColors[entry.type];
|
|
58
|
+
return (_jsxs("div", { style: {
|
|
59
|
+
display: "flex",
|
|
60
|
+
alignItems: "flex-start",
|
|
61
|
+
gap: 8,
|
|
62
|
+
padding: `4px ${pad - 4}px`,
|
|
63
|
+
marginBottom: 2,
|
|
64
|
+
borderRadius: 4,
|
|
65
|
+
background: dc.bg,
|
|
66
|
+
fontSize: fs.body,
|
|
67
|
+
lineHeight: 1.5,
|
|
68
|
+
}, "data-fp": "diff-entry", children: [_jsx("span", { style: {
|
|
69
|
+
width: 16,
|
|
70
|
+
flexShrink: 0,
|
|
71
|
+
fontWeight: 700,
|
|
72
|
+
color: dc.fg || theme.textMuted,
|
|
73
|
+
textAlign: "center",
|
|
74
|
+
}, children: dc.icon }), _jsx("span", { style: { color: theme.primary, fontWeight: 600, flexShrink: 0 }, children: entry.key }), _jsx("span", { style: { color: theme.textMuted }, children: "=" }), entry.type === "changed" ? (_jsxs("span", { children: [_jsx("span", { style: {
|
|
75
|
+
color: theme.error,
|
|
76
|
+
textDecoration: "line-through",
|
|
77
|
+
opacity: 0.7,
|
|
78
|
+
}, children: fmt(entry.oldValue) }), _jsx("span", { style: { color: theme.textMuted, margin: "0 4px" }, children: "\u2192" }), _jsx("span", { style: { color: theme.success }, children: fmt(entry.newValue) })] })) : (_jsx("span", { style: {
|
|
79
|
+
color: entry.type === "added"
|
|
80
|
+
? theme.success
|
|
81
|
+
: entry.type === "removed"
|
|
82
|
+
? theme.error
|
|
83
|
+
: theme.textPrimary,
|
|
84
|
+
}, children: fmt(entry.type === "removed" ? entry.oldValue : entry.newValue) }))] }, entry.key));
|
|
85
|
+
})] }));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=ScopeDiff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScopeDiff.js","sourceRoot":"","sources":["../../../src/components/ScopeDiff/ScopeDiff.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ScopeDiff/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ScopeDiff/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { StageSnapshot, BaseComponentProps } from "../../types";
|
|
2
|
+
export interface SnapshotPanelProps extends BaseComponentProps {
|
|
3
|
+
/** Stage snapshots from pipeline execution */
|
|
4
|
+
snapshots: StageSnapshot[];
|
|
5
|
+
/** Show the Gantt timeline */
|
|
6
|
+
showGantt?: boolean;
|
|
7
|
+
/** Show the time-travel scrubber */
|
|
8
|
+
showScrubber?: boolean;
|
|
9
|
+
/** Title override */
|
|
10
|
+
title?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* All-in-one panel: time-travel scrubber + memory inspector + narrative log + gantt.
|
|
14
|
+
* Drop this into any page to make a pipeline run inspectable.
|
|
15
|
+
*/
|
|
16
|
+
export declare function SnapshotPanel({ snapshots, showGantt, showScrubber, title, size, unstyled, className, style, }: SnapshotPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=SnapshotPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SnapshotPanel.d.ts","sourceRoot":"","sources":["../../../src/components/SnapshotPanel/SnapshotPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAMrE,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,8CAA8C;IAC9C,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oCAAoC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,SAAgB,EAChB,YAAmB,EACnB,KAA4B,EAC5B,IAAgB,EAChB,QAAgB,EAChB,SAAS,EACT,KAAK,GACN,EAAE,kBAAkB,2CAoLpB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { theme, fontSize, padding } from "../../theme";
|
|
4
|
+
import { MemoryInspector } from "../MemoryInspector";
|
|
5
|
+
import { NarrativeLog } from "../NarrativeLog";
|
|
6
|
+
import { GanttTimeline } from "../GanttTimeline";
|
|
7
|
+
/**
|
|
8
|
+
* All-in-one panel: time-travel scrubber + memory inspector + narrative log + gantt.
|
|
9
|
+
* Drop this into any page to make a pipeline run inspectable.
|
|
10
|
+
*/
|
|
11
|
+
export function SnapshotPanel({ snapshots, showGantt = true, showScrubber = true, title = "Pipeline Inspector", size = "default", unstyled = false, className, style, }) {
|
|
12
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
13
|
+
const fs = fontSize[size];
|
|
14
|
+
const pad = padding[size];
|
|
15
|
+
if (snapshots.length === 0) {
|
|
16
|
+
return (_jsx("div", { className: className, style: {
|
|
17
|
+
padding: pad * 2,
|
|
18
|
+
textAlign: "center",
|
|
19
|
+
color: unstyled ? undefined : theme.textMuted,
|
|
20
|
+
fontSize: fs.body,
|
|
21
|
+
...style,
|
|
22
|
+
}, "data-fp": "snapshot-panel", children: "No snapshots to display" }));
|
|
23
|
+
}
|
|
24
|
+
if (unstyled) {
|
|
25
|
+
return (_jsxs("div", { className: className, style: style, "data-fp": "snapshot-panel", children: [_jsx("h3", { children: title }), showScrubber && (_jsx("input", { type: "range", min: 0, max: snapshots.length - 1, value: selectedIndex, onChange: (e) => setSelectedIndex(parseInt(e.target.value)) })), _jsx(MemoryInspector, { snapshots: snapshots, selectedIndex: selectedIndex, unstyled: true }), _jsx(NarrativeLog, { snapshots: snapshots, selectedIndex: selectedIndex, unstyled: true }), showGantt && (_jsx(GanttTimeline, { snapshots: snapshots, selectedIndex: selectedIndex, onSelect: setSelectedIndex, unstyled: true }))] }));
|
|
26
|
+
}
|
|
27
|
+
return (_jsxs("div", { className: className, style: {
|
|
28
|
+
display: "flex",
|
|
29
|
+
flexDirection: "column",
|
|
30
|
+
height: "100%",
|
|
31
|
+
background: theme.bgPrimary,
|
|
32
|
+
fontFamily: theme.fontSans,
|
|
33
|
+
overflow: "hidden",
|
|
34
|
+
...style,
|
|
35
|
+
}, "data-fp": "snapshot-panel", children: [_jsxs("div", { style: {
|
|
36
|
+
padding: `${pad}px ${pad + 4}px`,
|
|
37
|
+
borderBottom: `1px solid ${theme.border}`,
|
|
38
|
+
background: theme.bgSecondary,
|
|
39
|
+
flexShrink: 0,
|
|
40
|
+
}, children: [_jsxs("div", { style: {
|
|
41
|
+
display: "flex",
|
|
42
|
+
alignItems: "center",
|
|
43
|
+
gap: 8,
|
|
44
|
+
marginBottom: showScrubber ? 8 : 0,
|
|
45
|
+
}, children: [_jsx("span", { style: {
|
|
46
|
+
fontSize: fs.body + 2,
|
|
47
|
+
fontWeight: 600,
|
|
48
|
+
color: theme.textPrimary,
|
|
49
|
+
}, children: title }), _jsxs("span", { style: {
|
|
50
|
+
fontSize: fs.small,
|
|
51
|
+
color: theme.textMuted,
|
|
52
|
+
fontFamily: theme.fontMono,
|
|
53
|
+
}, children: [selectedIndex + 1, "/", snapshots.length] })] }), showScrubber && (_jsxs("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [_jsx(ScrubButton, { label: "\\u25C0", disabled: selectedIndex === 0, onClick: () => setSelectedIndex((i) => Math.max(0, i - 1)) }), _jsx("input", { type: "range", min: 0, max: snapshots.length - 1, value: selectedIndex, onChange: (e) => setSelectedIndex(parseInt(e.target.value)), style: {
|
|
54
|
+
flex: 1,
|
|
55
|
+
height: 4,
|
|
56
|
+
accentColor: theme.primary,
|
|
57
|
+
cursor: "pointer",
|
|
58
|
+
} }), _jsx(ScrubButton, { label: "\\u25B6", disabled: selectedIndex === snapshots.length - 1, onClick: () => setSelectedIndex((i) => Math.min(snapshots.length - 1, i + 1)) })] }))] }), _jsxs("div", { style: { flex: 1, overflow: "auto" }, children: [_jsx(MemoryInspector, { snapshots: snapshots, selectedIndex: selectedIndex, size: size }), _jsx("div", { style: {
|
|
59
|
+
height: 1,
|
|
60
|
+
background: theme.border,
|
|
61
|
+
margin: `0 ${pad}px`,
|
|
62
|
+
} }), _jsx(NarrativeLog, { snapshots: snapshots, selectedIndex: selectedIndex, size: size })] }), showGantt && (_jsx("div", { style: {
|
|
63
|
+
borderTop: `1px solid ${theme.border}`,
|
|
64
|
+
background: theme.bgSecondary,
|
|
65
|
+
flexShrink: 0,
|
|
66
|
+
}, children: _jsx(GanttTimeline, { snapshots: snapshots, selectedIndex: selectedIndex, onSelect: setSelectedIndex, size: size }) }))] }));
|
|
67
|
+
}
|
|
68
|
+
function ScrubButton({ label, disabled, onClick, }) {
|
|
69
|
+
return (_jsx("button", { onClick: onClick, disabled: disabled, style: {
|
|
70
|
+
background: theme.bgTertiary,
|
|
71
|
+
border: `1px solid ${theme.border}`,
|
|
72
|
+
color: disabled ? theme.textMuted : theme.textPrimary,
|
|
73
|
+
borderRadius: 6,
|
|
74
|
+
width: 28,
|
|
75
|
+
height: 28,
|
|
76
|
+
display: "flex",
|
|
77
|
+
alignItems: "center",
|
|
78
|
+
justifyContent: "center",
|
|
79
|
+
cursor: disabled ? "not-allowed" : "pointer",
|
|
80
|
+
opacity: disabled ? 0.5 : 1,
|
|
81
|
+
fontSize: 12,
|
|
82
|
+
flexShrink: 0,
|
|
83
|
+
}, children: label }));
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=SnapshotPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SnapshotPanel.js","sourceRoot":"","sources":["../../../src/components/SnapshotPanel/SnapshotPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SnapshotPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/SnapshotPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface StageNodeData {
|
|
2
|
+
label: string;
|
|
3
|
+
active?: boolean;
|
|
4
|
+
done?: boolean;
|
|
5
|
+
error?: boolean;
|
|
6
|
+
linked?: boolean;
|
|
7
|
+
/** Step numbers in execution order (shown as badges — multiple when revisited via loops) */
|
|
8
|
+
stepNumbers?: number[];
|
|
9
|
+
/** Node was not executed (dim it) */
|
|
10
|
+
dimmed?: boolean;
|
|
11
|
+
/** Node is a subflow root (show nested indicator) */
|
|
12
|
+
isSubflow?: boolean;
|
|
13
|
+
/** Human-readable description of what this stage does */
|
|
14
|
+
description?: string;
|
|
15
|
+
/** Subflow identifier — set when this node belongs to a subflow */
|
|
16
|
+
subflowId?: string;
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Custom ReactFlow node for pipeline stages.
|
|
21
|
+
* All colors and fonts come from `--fp-*` CSS variables (via theme).
|
|
22
|
+
* Shows execution state via color, icon, step badge, and pulse animation.
|
|
23
|
+
*/
|
|
24
|
+
export declare const StageNode: import("react").NamedExoticComponent<Pick<import("@xyflow/react").Node<Record<string, unknown>, string | undefined>, "id" | "data" | "width" | "height" | "sourcePosition" | "targetPosition" | "dragHandle" | "parentId"> & Required<Pick<import("@xyflow/react").Node<Record<string, unknown>, string | undefined>, "type" | "dragging" | "zIndex" | "selectable" | "deletable" | "selected" | "draggable">> & {
|
|
25
|
+
isConnectable: boolean;
|
|
26
|
+
positionAbsoluteX: number;
|
|
27
|
+
positionAbsoluteY: number;
|
|
28
|
+
} & {
|
|
29
|
+
data: StageNodeData;
|
|
30
|
+
}>;
|
|
31
|
+
//# sourceMappingURL=StageNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StageNode.d.ts","sourceRoot":"","sources":["../../../src/components/StageNode/StageNode.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;UAEC,aAAa;EAgOlC,CAAC"}
|