@ucdjs/pipelines-ui 0.0.1-beta.1
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/LICENSE +21 -0
- package/README.md +27 -0
- package/dist/components/detail/execution-result.d.mts +49 -0
- package/dist/components/detail/execution-result.mjs +366 -0
- package/dist/components/detail/version-selector.d.mts +21 -0
- package/dist/components/detail/version-selector.mjs +132 -0
- package/dist/components/graph/details.d.mts +14 -0
- package/dist/components/graph/details.mjs +369 -0
- package/dist/components/graph/filters.d.mts +14 -0
- package/dist/components/graph/filters.mjs +183 -0
- package/dist/components/graph/node-types.d.mts +10 -0
- package/dist/components/graph/node-types.mjs +13 -0
- package/dist/components/graph/nodes.d.mts +14 -0
- package/dist/components/graph/nodes.mjs +264 -0
- package/dist/components/graph/pipeline-graph.d.mts +15 -0
- package/dist/components/graph/pipeline-graph.mjs +241 -0
- package/dist/components/logs/execution-log-payload.d.mts +12 -0
- package/dist/components/logs/execution-log-payload.mjs +79 -0
- package/dist/components/logs/execution-log-table.d.mts +16 -0
- package/dist/components/logs/execution-log-table.mjs +121 -0
- package/dist/components/logs/execution-span-drawer.d.mts +16 -0
- package/dist/components/logs/execution-span-drawer.mjs +208 -0
- package/dist/components/logs/execution-waterfall.d.mts +18 -0
- package/dist/components/logs/execution-waterfall.mjs +354 -0
- package/dist/components/pipeline-sidebar.d.mts +6 -0
- package/dist/components/pipeline-sidebar.mjs +190 -0
- package/dist/components/status-badge.d.mts +11 -0
- package/dist/components/status-badge.mjs +50 -0
- package/dist/components/status-icon.d.mts +11 -0
- package/dist/components/status-icon.mjs +46 -0
- package/dist/hooks/index.d.mts +7 -0
- package/dist/hooks/index.mjs +8 -0
- package/dist/hooks/use-event-view.d.mts +19 -0
- package/dist/hooks/use-event-view.mjs +112 -0
- package/dist/hooks/use-execute.d.mts +20 -0
- package/dist/hooks/use-execute.mjs +68 -0
- package/dist/hooks/use-pipeline-file.d.mts +20 -0
- package/dist/hooks/use-pipeline-file.mjs +39 -0
- package/dist/hooks/use-pipeline-versions.d.mts +10 -0
- package/dist/hooks/use-pipeline-versions.mjs +137 -0
- package/dist/hooks/use-pipeline.d.mts +21 -0
- package/dist/hooks/use-pipeline.mjs +46 -0
- package/dist/hooks/use-pipelines.d.mts +26 -0
- package/dist/hooks/use-pipelines.mjs +38 -0
- package/dist/index.d.mts +31 -0
- package/dist/index.mjs +29 -0
- package/dist/lib/adapter.d.mts +26 -0
- package/dist/lib/adapter.mjs +74 -0
- package/dist/lib/colors.d.mts +7 -0
- package/dist/lib/colors.mjs +15 -0
- package/dist/lib/execution-logs.d.mts +19 -0
- package/dist/lib/execution-logs.mjs +74 -0
- package/dist/lib/format-time.d.mts +4 -0
- package/dist/lib/format-time.mjs +7 -0
- package/dist/lib/index.d.mts +5 -0
- package/dist/lib/index.mjs +6 -0
- package/dist/lib/layout.d.mts +8 -0
- package/dist/lib/layout.mjs +71 -0
- package/dist/lib/pipeline-utils.d.mts +9 -0
- package/dist/lib/pipeline-utils.mjs +49 -0
- package/dist/lib/utils.d.mts +6 -0
- package/dist/lib/utils.mjs +10 -0
- package/dist/styles/globals.css +3 -0
- package/dist/types.d.mts +143 -0
- package/package.json +95 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { cn } from "../../lib/utils.mjs";
|
|
2
|
+
import { ExecutionLogPayloadPanel } from "./execution-log-payload.mjs";
|
|
3
|
+
import { formatTimestamp } from "../../lib/execution-logs.mjs";
|
|
4
|
+
import { c } from "react/compiler-runtime";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { Fragment as Fragment$1 } from "react";
|
|
7
|
+
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@ucdjs-internal/shared-ui/ui/table";
|
|
8
|
+
|
|
9
|
+
//#region src/components/logs/execution-log-table.tsx
|
|
10
|
+
function getStreamAccent(stream) {
|
|
11
|
+
return stream === "stderr" ? "bg-red-500" : "bg-sky-500";
|
|
12
|
+
}
|
|
13
|
+
function ExecutionLogTable(t0) {
|
|
14
|
+
const $ = c(22);
|
|
15
|
+
const { logs, expandedLogId, onToggle } = t0;
|
|
16
|
+
const hasLogs = logs.length > 0;
|
|
17
|
+
const t1 = hasLogs && "hidden";
|
|
18
|
+
let t2;
|
|
19
|
+
if ($[0] !== t1) {
|
|
20
|
+
t2 = cn("border border-dashed border-border rounded-lg p-6 text-sm text-muted-foreground", t1);
|
|
21
|
+
$[0] = t1;
|
|
22
|
+
$[1] = t2;
|
|
23
|
+
} else t2 = $[1];
|
|
24
|
+
let t3;
|
|
25
|
+
if ($[2] !== t2) {
|
|
26
|
+
t3 = /* @__PURE__ */ jsx("div", {
|
|
27
|
+
className: t2,
|
|
28
|
+
children: "No logs captured for this execution."
|
|
29
|
+
});
|
|
30
|
+
$[2] = t2;
|
|
31
|
+
$[3] = t3;
|
|
32
|
+
} else t3 = $[3];
|
|
33
|
+
const t4 = !hasLogs && "hidden";
|
|
34
|
+
let t5;
|
|
35
|
+
if ($[4] !== t4) {
|
|
36
|
+
t5 = cn("border border-border rounded-lg overflow-hidden", t4);
|
|
37
|
+
$[4] = t4;
|
|
38
|
+
$[5] = t5;
|
|
39
|
+
} else t5 = $[5];
|
|
40
|
+
let t6;
|
|
41
|
+
if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
|
|
42
|
+
t6 = /* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
43
|
+
/* @__PURE__ */ jsx(TableHead, { className: "w-6" }),
|
|
44
|
+
/* @__PURE__ */ jsx(TableHead, {
|
|
45
|
+
className: "w-56",
|
|
46
|
+
children: "Timestamp"
|
|
47
|
+
}),
|
|
48
|
+
/* @__PURE__ */ jsx(TableHead, { children: "Message" })
|
|
49
|
+
] }) });
|
|
50
|
+
$[6] = t6;
|
|
51
|
+
} else t6 = $[6];
|
|
52
|
+
let t7;
|
|
53
|
+
if ($[7] !== expandedLogId || $[8] !== logs || $[9] !== onToggle) {
|
|
54
|
+
let t8;
|
|
55
|
+
if ($[11] !== expandedLogId || $[12] !== onToggle) {
|
|
56
|
+
t8 = (log) => {
|
|
57
|
+
const isExpanded = expandedLogId === log.id;
|
|
58
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs(TableRow, {
|
|
59
|
+
className: cn("cursor-pointer", log.stream === "stderr" && "bg-red-500/5", isExpanded && "bg-muted"),
|
|
60
|
+
onClick: () => onToggle(log.id),
|
|
61
|
+
children: [
|
|
62
|
+
/* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx("span", { className: cn("block h-6 w-1 rounded-full", getStreamAccent(log.stream)) }) }),
|
|
63
|
+
/* @__PURE__ */ jsx(TableCell, {
|
|
64
|
+
className: "text-xs font-mono text-muted-foreground",
|
|
65
|
+
children: formatTimestamp(log.timestamp)
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ jsx(TableCell, {
|
|
68
|
+
className: "text-sm",
|
|
69
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
70
|
+
className: "line-clamp-1",
|
|
71
|
+
children: log.payload?.message ?? log.message
|
|
72
|
+
})
|
|
73
|
+
})
|
|
74
|
+
]
|
|
75
|
+
}), isExpanded && /* @__PURE__ */ jsx(TableRow, {
|
|
76
|
+
className: "bg-muted/30",
|
|
77
|
+
children: /* @__PURE__ */ jsx(TableCell, {
|
|
78
|
+
colSpan: 3,
|
|
79
|
+
className: "p-4",
|
|
80
|
+
children: /* @__PURE__ */ jsx(ExecutionLogPayloadPanel, { log })
|
|
81
|
+
})
|
|
82
|
+
})] }, log.id);
|
|
83
|
+
};
|
|
84
|
+
$[11] = expandedLogId;
|
|
85
|
+
$[12] = onToggle;
|
|
86
|
+
$[13] = t8;
|
|
87
|
+
} else t8 = $[13];
|
|
88
|
+
t7 = logs.map(t8);
|
|
89
|
+
$[7] = expandedLogId;
|
|
90
|
+
$[8] = logs;
|
|
91
|
+
$[9] = onToggle;
|
|
92
|
+
$[10] = t7;
|
|
93
|
+
} else t7 = $[10];
|
|
94
|
+
let t8;
|
|
95
|
+
if ($[14] !== t7) {
|
|
96
|
+
t8 = /* @__PURE__ */ jsxs(Table, { children: [t6, /* @__PURE__ */ jsx(TableBody, { children: t7 })] });
|
|
97
|
+
$[14] = t7;
|
|
98
|
+
$[15] = t8;
|
|
99
|
+
} else t8 = $[15];
|
|
100
|
+
let t9;
|
|
101
|
+
if ($[16] !== t5 || $[17] !== t8) {
|
|
102
|
+
t9 = /* @__PURE__ */ jsx("div", {
|
|
103
|
+
className: t5,
|
|
104
|
+
children: t8
|
|
105
|
+
});
|
|
106
|
+
$[16] = t5;
|
|
107
|
+
$[17] = t8;
|
|
108
|
+
$[18] = t9;
|
|
109
|
+
} else t9 = $[18];
|
|
110
|
+
let t10;
|
|
111
|
+
if ($[19] !== t3 || $[20] !== t9) {
|
|
112
|
+
t10 = /* @__PURE__ */ jsxs("div", { children: [t3, t9] });
|
|
113
|
+
$[19] = t3;
|
|
114
|
+
$[20] = t9;
|
|
115
|
+
$[21] = t10;
|
|
116
|
+
} else t10 = $[21];
|
|
117
|
+
return t10;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
//#endregion
|
|
121
|
+
export { ExecutionLogTable };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ExecutionSpan } from "../../lib/execution-logs.mjs";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/logs/execution-span-drawer.d.ts
|
|
5
|
+
interface ExecutionSpanDrawerProps {
|
|
6
|
+
span: ExecutionSpan | null;
|
|
7
|
+
baseTime: number;
|
|
8
|
+
onClose: () => void;
|
|
9
|
+
}
|
|
10
|
+
declare function ExecutionSpanDrawer({
|
|
11
|
+
span,
|
|
12
|
+
baseTime,
|
|
13
|
+
onClose
|
|
14
|
+
}: ExecutionSpanDrawerProps): react.JSX.Element;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { ExecutionSpanDrawer, ExecutionSpanDrawerProps };
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { cn } from "../../lib/utils.mjs";
|
|
2
|
+
import { formatDuration } from "../../lib/execution-logs.mjs";
|
|
3
|
+
import { c } from "react/compiler-runtime";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { Sheet, SheetContent, SheetHeader, SheetTitle } from "@ucdjs-internal/shared-ui/ui/sheet";
|
|
6
|
+
|
|
7
|
+
//#region src/components/logs/execution-span-drawer.tsx
|
|
8
|
+
function getPhaseColor(phase) {
|
|
9
|
+
switch (phase) {
|
|
10
|
+
case "Pipeline": return "bg-sky-400/70";
|
|
11
|
+
case "Version": return "bg-emerald-400/70";
|
|
12
|
+
case "Parse": return "bg-amber-400/70";
|
|
13
|
+
case "Resolve": return "bg-violet-400/70";
|
|
14
|
+
case "Artifact": return "bg-rose-400/70";
|
|
15
|
+
case "File": return "bg-cyan-400/70";
|
|
16
|
+
case "Cache": return "bg-lime-400/70";
|
|
17
|
+
case "Error": return "bg-red-500/80";
|
|
18
|
+
default: return "bg-slate-400/70";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function ExecutionSpanDrawer(t0) {
|
|
22
|
+
const $ = c(44);
|
|
23
|
+
const { span, baseTime, onClose } = t0;
|
|
24
|
+
const open = Boolean(span);
|
|
25
|
+
const offsetStart = span ? Math.max(0, span.start - baseTime) : 0;
|
|
26
|
+
const offsetEnd = span ? Math.max(0, span.end - baseTime) : 0;
|
|
27
|
+
let t1;
|
|
28
|
+
if ($[0] !== onClose) {
|
|
29
|
+
t1 = (nextOpen) => {
|
|
30
|
+
if (!nextOpen) onClose();
|
|
31
|
+
};
|
|
32
|
+
$[0] = onClose;
|
|
33
|
+
$[1] = t1;
|
|
34
|
+
} else t1 = $[1];
|
|
35
|
+
let t2;
|
|
36
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
37
|
+
t2 = /* @__PURE__ */ jsx(SheetHeader, { children: /* @__PURE__ */ jsx(SheetTitle, { children: "Span Details" }) });
|
|
38
|
+
$[2] = t2;
|
|
39
|
+
} else t2 = $[2];
|
|
40
|
+
let t3;
|
|
41
|
+
if ($[3] !== span) {
|
|
42
|
+
t3 = cn("h-2 w-2 rounded-full", span ? getPhaseColor(span.phase) : "bg-muted");
|
|
43
|
+
$[3] = span;
|
|
44
|
+
$[4] = t3;
|
|
45
|
+
} else t3 = $[4];
|
|
46
|
+
let t4;
|
|
47
|
+
if ($[5] !== t3) {
|
|
48
|
+
t4 = /* @__PURE__ */ jsx("span", { className: t3 });
|
|
49
|
+
$[5] = t3;
|
|
50
|
+
$[6] = t4;
|
|
51
|
+
} else t4 = $[6];
|
|
52
|
+
const t5 = span?.label ?? "No span selected";
|
|
53
|
+
let t6;
|
|
54
|
+
if ($[7] !== t5) {
|
|
55
|
+
t6 = /* @__PURE__ */ jsx("span", {
|
|
56
|
+
className: "text-sm font-medium truncate",
|
|
57
|
+
children: t5
|
|
58
|
+
});
|
|
59
|
+
$[7] = t5;
|
|
60
|
+
$[8] = t6;
|
|
61
|
+
} else t6 = $[8];
|
|
62
|
+
let t7;
|
|
63
|
+
if ($[9] !== t4 || $[10] !== t6) {
|
|
64
|
+
t7 = /* @__PURE__ */ jsxs("div", {
|
|
65
|
+
className: "flex items-center gap-2",
|
|
66
|
+
children: [t4, t6]
|
|
67
|
+
});
|
|
68
|
+
$[9] = t4;
|
|
69
|
+
$[10] = t6;
|
|
70
|
+
$[11] = t7;
|
|
71
|
+
} else t7 = $[11];
|
|
72
|
+
let t8;
|
|
73
|
+
if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
|
|
74
|
+
t8 = /* @__PURE__ */ jsx("span", { children: "Phase" });
|
|
75
|
+
$[12] = t8;
|
|
76
|
+
} else t8 = $[12];
|
|
77
|
+
const t9 = span?.phase ?? "-";
|
|
78
|
+
let t10;
|
|
79
|
+
if ($[13] !== t9) {
|
|
80
|
+
t10 = /* @__PURE__ */ jsxs("div", {
|
|
81
|
+
className: "flex items-center justify-between",
|
|
82
|
+
children: [t8, /* @__PURE__ */ jsx("span", {
|
|
83
|
+
className: "text-foreground",
|
|
84
|
+
children: t9
|
|
85
|
+
})]
|
|
86
|
+
});
|
|
87
|
+
$[13] = t9;
|
|
88
|
+
$[14] = t10;
|
|
89
|
+
} else t10 = $[14];
|
|
90
|
+
let t11;
|
|
91
|
+
if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
|
|
92
|
+
t11 = /* @__PURE__ */ jsx("span", { children: "Duration" });
|
|
93
|
+
$[15] = t11;
|
|
94
|
+
} else t11 = $[15];
|
|
95
|
+
let t12;
|
|
96
|
+
if ($[16] !== span) {
|
|
97
|
+
t12 = span ? formatDuration(span.durationMs) : "-";
|
|
98
|
+
$[16] = span;
|
|
99
|
+
$[17] = t12;
|
|
100
|
+
} else t12 = $[17];
|
|
101
|
+
let t13;
|
|
102
|
+
if ($[18] !== t12) {
|
|
103
|
+
t13 = /* @__PURE__ */ jsxs("div", {
|
|
104
|
+
className: "flex items-center justify-between",
|
|
105
|
+
children: [t11, /* @__PURE__ */ jsx("span", {
|
|
106
|
+
className: "text-foreground",
|
|
107
|
+
children: t12
|
|
108
|
+
})]
|
|
109
|
+
});
|
|
110
|
+
$[18] = t12;
|
|
111
|
+
$[19] = t13;
|
|
112
|
+
} else t13 = $[19];
|
|
113
|
+
let t14;
|
|
114
|
+
if ($[20] === Symbol.for("react.memo_cache_sentinel")) {
|
|
115
|
+
t14 = /* @__PURE__ */ jsx("span", { children: "Start offset" });
|
|
116
|
+
$[20] = t14;
|
|
117
|
+
} else t14 = $[20];
|
|
118
|
+
let t15;
|
|
119
|
+
if ($[21] !== offsetStart || $[22] !== span) {
|
|
120
|
+
t15 = span ? formatDuration(offsetStart) : "-";
|
|
121
|
+
$[21] = offsetStart;
|
|
122
|
+
$[22] = span;
|
|
123
|
+
$[23] = t15;
|
|
124
|
+
} else t15 = $[23];
|
|
125
|
+
let t16;
|
|
126
|
+
if ($[24] !== t15) {
|
|
127
|
+
t16 = /* @__PURE__ */ jsxs("div", {
|
|
128
|
+
className: "flex items-center justify-between",
|
|
129
|
+
children: [t14, /* @__PURE__ */ jsx("span", {
|
|
130
|
+
className: "text-foreground",
|
|
131
|
+
children: t15
|
|
132
|
+
})]
|
|
133
|
+
});
|
|
134
|
+
$[24] = t15;
|
|
135
|
+
$[25] = t16;
|
|
136
|
+
} else t16 = $[25];
|
|
137
|
+
let t17;
|
|
138
|
+
if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
|
|
139
|
+
t17 = /* @__PURE__ */ jsx("span", { children: "End offset" });
|
|
140
|
+
$[26] = t17;
|
|
141
|
+
} else t17 = $[26];
|
|
142
|
+
let t18;
|
|
143
|
+
if ($[27] !== offsetEnd || $[28] !== span) {
|
|
144
|
+
t18 = span ? formatDuration(offsetEnd) : "-";
|
|
145
|
+
$[27] = offsetEnd;
|
|
146
|
+
$[28] = span;
|
|
147
|
+
$[29] = t18;
|
|
148
|
+
} else t18 = $[29];
|
|
149
|
+
let t19;
|
|
150
|
+
if ($[30] !== t18) {
|
|
151
|
+
t19 = /* @__PURE__ */ jsxs("div", {
|
|
152
|
+
className: "flex items-center justify-between",
|
|
153
|
+
children: [t17, /* @__PURE__ */ jsx("span", {
|
|
154
|
+
className: "text-foreground",
|
|
155
|
+
children: t18
|
|
156
|
+
})]
|
|
157
|
+
});
|
|
158
|
+
$[30] = t18;
|
|
159
|
+
$[31] = t19;
|
|
160
|
+
} else t19 = $[31];
|
|
161
|
+
let t20;
|
|
162
|
+
if ($[32] !== t10 || $[33] !== t13 || $[34] !== t16 || $[35] !== t19) {
|
|
163
|
+
t20 = /* @__PURE__ */ jsxs("div", {
|
|
164
|
+
className: "grid gap-3 text-xs text-muted-foreground",
|
|
165
|
+
children: [
|
|
166
|
+
t10,
|
|
167
|
+
t13,
|
|
168
|
+
t16,
|
|
169
|
+
t19
|
|
170
|
+
]
|
|
171
|
+
});
|
|
172
|
+
$[32] = t10;
|
|
173
|
+
$[33] = t13;
|
|
174
|
+
$[34] = t16;
|
|
175
|
+
$[35] = t19;
|
|
176
|
+
$[36] = t20;
|
|
177
|
+
} else t20 = $[36];
|
|
178
|
+
let t21;
|
|
179
|
+
if ($[37] !== t20 || $[38] !== t7) {
|
|
180
|
+
t21 = /* @__PURE__ */ jsxs(SheetContent, {
|
|
181
|
+
side: "right",
|
|
182
|
+
className: "w-[380px]",
|
|
183
|
+
children: [t2, /* @__PURE__ */ jsxs("div", {
|
|
184
|
+
className: "px-4 pb-4 space-y-4",
|
|
185
|
+
children: [t7, t20]
|
|
186
|
+
})]
|
|
187
|
+
});
|
|
188
|
+
$[37] = t20;
|
|
189
|
+
$[38] = t7;
|
|
190
|
+
$[39] = t21;
|
|
191
|
+
} else t21 = $[39];
|
|
192
|
+
let t22;
|
|
193
|
+
if ($[40] !== open || $[41] !== t1 || $[42] !== t21) {
|
|
194
|
+
t22 = /* @__PURE__ */ jsx(Sheet, {
|
|
195
|
+
open,
|
|
196
|
+
onOpenChange: t1,
|
|
197
|
+
children: t21
|
|
198
|
+
});
|
|
199
|
+
$[40] = open;
|
|
200
|
+
$[41] = t1;
|
|
201
|
+
$[42] = t21;
|
|
202
|
+
$[43] = t22;
|
|
203
|
+
} else t22 = $[43];
|
|
204
|
+
return t22;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
//#endregion
|
|
208
|
+
export { ExecutionSpanDrawer };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ExecutionSpan } from "../../lib/execution-logs.mjs";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/logs/execution-waterfall.d.ts
|
|
5
|
+
interface ExecutionWaterfallProps {
|
|
6
|
+
spans: ExecutionSpan[];
|
|
7
|
+
selectedSpanId: string | null;
|
|
8
|
+
onSelect: (spanId: string | null) => void;
|
|
9
|
+
onSpanClick?: (span: ExecutionSpan) => void;
|
|
10
|
+
}
|
|
11
|
+
declare function ExecutionWaterfall({
|
|
12
|
+
spans,
|
|
13
|
+
selectedSpanId,
|
|
14
|
+
onSelect,
|
|
15
|
+
onSpanClick
|
|
16
|
+
}: ExecutionWaterfallProps): react.JSX.Element;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { ExecutionWaterfall, ExecutionWaterfallProps };
|