@workflow/web-shared 5.0.0-beta.3 → 5.0.0-beta.4
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/components/new-trace-viewer/components/event-list.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/components/event-list.js +7 -4
- package/dist/components/new-trace-viewer/components/event-list.js.map +1 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts +18 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +54 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts +20 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts +25 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +101 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts +20 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js.map +1 -0
- package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/components/split-pane.js +2 -3
- package/dist/components/new-trace-viewer/components/split-pane.js.map +1 -1
- package/dist/components/new-trace-viewer/components/timeline.d.ts +10 -11
- package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/components/timeline.js +57 -53
- package/dist/components/new-trace-viewer/components/timeline.js.map +1 -1
- package/dist/components/new-trace-viewer/context.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/context.js +5 -7
- package/dist/components/new-trace-viewer/context.js.map +1 -1
- package/dist/components/new-trace-viewer/detail-panel.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/detail-panel.js +2 -1
- package/dist/components/new-trace-viewer/detail-panel.js.map +1 -1
- package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/trace-viewer.js +37 -17
- package/dist/components/new-trace-viewer/trace-viewer.js.map +1 -1
- package/dist/components/new-trace-viewer/utils.d.ts +3 -8
- package/dist/components/new-trace-viewer/utils.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/utils.js +12 -65
- package/dist/components/new-trace-viewer/utils.js.map +1 -1
- package/dist/components/trace-viewer/util/timing.d.ts +1 -1
- package/dist/components/trace-viewer/util/timing.d.ts.map +1 -1
- package/dist/components/trace-viewer/util/timing.js +5 -8
- package/dist/components/trace-viewer/util/timing.js.map +1 -1
- package/dist/components/workflow-traces/trace-span-construction.d.ts +2 -2
- package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
- package/dist/components/workflow-traces/trace-span-construction.js +16 -3
- package/dist/components/workflow-traces/trace-span-construction.js.map +1 -1
- package/dist/lib/trace-builder.d.ts.map +1 -1
- package/dist/lib/trace-builder.js +2 -1
- package/dist/lib/trace-builder.js.map +1 -1
- package/dist/lib/utils.d.ts +9 -7
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +27 -27
- package/dist/lib/utils.js.map +1 -1
- package/package.json +2 -2
- package/src/components/new-trace-viewer/components/event-list.tsx +27 -20
- package/src/components/new-trace-viewer/components/middle-truncate/copy-selection.ts +114 -0
- package/src/components/new-trace-viewer/components/middle-truncate/middle-truncate.tsx +157 -0
- package/src/components/new-trace-viewer/components/middle-truncate/truncate.ts +132 -0
- package/src/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.ts +167 -0
- package/src/components/new-trace-viewer/components/split-pane.tsx +2 -3
- package/src/components/new-trace-viewer/components/timeline.tsx +119 -115
- package/src/components/new-trace-viewer/context.tsx +7 -9
- package/src/components/new-trace-viewer/detail-panel.tsx +2 -1
- package/src/components/new-trace-viewer/trace-viewer.tsx +120 -60
- package/src/components/new-trace-viewer/utils.ts +19 -93
- package/src/components/trace-viewer/util/timing.ts +5 -9
- package/src/components/workflow-traces/trace-span-construction.ts +22 -4
- package/src/lib/trace-builder.ts +2 -1
- package/src/lib/utils.ts +29 -29
package/src/lib/utils.ts
CHANGED
|
@@ -7,15 +7,6 @@ export function cn(...inputs: ClassValue[]) {
|
|
|
7
7
|
return twMerge(clsx(inputs));
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
// const compactFormatter = new Intl.NumberFormat(undefined, {
|
|
11
|
-
// maximumFractionDigits: 2,
|
|
12
|
-
// });
|
|
13
|
-
|
|
14
|
-
const secondsFormatter = new Intl.NumberFormat(undefined, {
|
|
15
|
-
minimumFractionDigits: 2,
|
|
16
|
-
maximumFractionDigits: 2,
|
|
17
|
-
});
|
|
18
|
-
|
|
19
10
|
const MS_IN_SECOND = 1000;
|
|
20
11
|
const MS_IN_MINUTE = 60 * MS_IN_SECOND;
|
|
21
12
|
const MS_IN_HOUR = 60 * MS_IN_MINUTE;
|
|
@@ -25,44 +16,53 @@ const MS_IN_DAY = 24 * MS_IN_HOUR;
|
|
|
25
16
|
* Formats a duration in milliseconds to a human-readable string.
|
|
26
17
|
*
|
|
27
18
|
* @param ms - Duration in milliseconds
|
|
28
|
-
* @param compact - If true, returns a
|
|
29
|
-
* If false (default), returns multi-part format (e.g., "1m
|
|
19
|
+
* @param compact - If true, returns a compact format (e.g., "380ms", "2m 30s").
|
|
20
|
+
* If false (default), returns multi-part format (e.g., "1m 13s", "2d 5h 3m 12s").
|
|
30
21
|
*
|
|
31
22
|
* Compact format (timeline markers):
|
|
32
|
-
* - <
|
|
33
|
-
* - <
|
|
34
|
-
* -
|
|
23
|
+
* - < 1s: shows milliseconds (e.g., "380ms")
|
|
24
|
+
* - < 1m: shows seconds (e.g., "45s")
|
|
25
|
+
* - < 1h: shows minutes and seconds (e.g., "2m 30s")
|
|
26
|
+
* - >= 1h: shows hours and minutes (e.g., "2h 30m")
|
|
35
27
|
*
|
|
36
28
|
* Full format:
|
|
37
|
-
* - <
|
|
38
|
-
* -
|
|
29
|
+
* - < 1s: shows milliseconds (e.g., "380ms")
|
|
30
|
+
* - < 1m: shows seconds (e.g., "45s")
|
|
31
|
+
* - >= 1m: shows decomposed format with whole seconds (e.g., "1m 13s", "2m 13s")
|
|
39
32
|
*/
|
|
40
33
|
export function formatDuration(ms: number, compact = false): string {
|
|
41
34
|
if (ms === 0) {
|
|
42
35
|
return '0s';
|
|
43
36
|
}
|
|
44
37
|
|
|
45
|
-
if (ms <
|
|
46
|
-
|
|
38
|
+
if (ms < MS_IN_SECOND) {
|
|
39
|
+
const roundedMs = Math.round(ms);
|
|
40
|
+
return roundedMs < MS_IN_SECOND ? `${roundedMs}ms` : '1s';
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const roundedMs = Math.round(ms / MS_IN_SECOND) * MS_IN_SECOND;
|
|
44
|
+
|
|
45
|
+
if (roundedMs < MS_IN_MINUTE) {
|
|
46
|
+
return `${Math.floor(roundedMs / MS_IN_SECOND)}s`;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
// Compact format: multi-unit without decimals (e.g. "8m 20s", "2h 30m")
|
|
50
50
|
if (compact) {
|
|
51
|
-
if (
|
|
52
|
-
const m = Math.floor(
|
|
53
|
-
const s = Math.floor((
|
|
51
|
+
if (roundedMs < MS_IN_HOUR) {
|
|
52
|
+
const m = Math.floor(roundedMs / MS_IN_MINUTE);
|
|
53
|
+
const s = Math.floor((roundedMs % MS_IN_MINUTE) / MS_IN_SECOND);
|
|
54
54
|
return s > 0 ? `${m}m ${s}s` : `${m}m`;
|
|
55
55
|
}
|
|
56
|
-
const h = Math.floor(
|
|
57
|
-
const m = Math.floor((
|
|
56
|
+
const h = Math.floor(roundedMs / MS_IN_HOUR);
|
|
57
|
+
const m = Math.floor((roundedMs % MS_IN_HOUR) / MS_IN_MINUTE);
|
|
58
58
|
return m > 0 ? `${h}h ${m}m` : `${h}h`;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
// Full format: decompose into larger units +
|
|
62
|
-
const days = Math.floor(
|
|
63
|
-
const hours = Math.floor((
|
|
64
|
-
const minutes = Math.floor((
|
|
65
|
-
const seconds = (
|
|
61
|
+
// Full format: decompose into larger units + whole seconds.
|
|
62
|
+
const days = Math.floor(roundedMs / MS_IN_DAY);
|
|
63
|
+
const hours = Math.floor((roundedMs % MS_IN_DAY) / MS_IN_HOUR);
|
|
64
|
+
const minutes = Math.floor((roundedMs % MS_IN_HOUR) / MS_IN_MINUTE);
|
|
65
|
+
const seconds = Math.floor((roundedMs % MS_IN_MINUTE) / MS_IN_SECOND);
|
|
66
66
|
|
|
67
67
|
const parts: string[] = [];
|
|
68
68
|
|
|
@@ -75,7 +75,7 @@ export function formatDuration(ms: number, compact = false): string {
|
|
|
75
75
|
if (minutes > 0) {
|
|
76
76
|
parts.push(`${minutes}m`);
|
|
77
77
|
}
|
|
78
|
-
parts.push(`${
|
|
78
|
+
parts.push(`${seconds}s`);
|
|
79
79
|
|
|
80
80
|
return parts.join(' ');
|
|
81
81
|
}
|