@oneuptime/common 8.0.5177 → 8.0.5181
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/Server/API/SlackAPI.ts +69 -0
- package/UI/Components/CopyTextButton/CopyTextButton.tsx +66 -5
- package/UI/Components/LogsViewer/LogItem.tsx +250 -165
- package/UI/Components/LogsViewer/LogsViewer.tsx +137 -39
- package/build/dist/Server/API/SlackAPI.js +35 -0
- package/build/dist/Server/API/SlackAPI.js.map +1 -1
- package/build/dist/UI/Components/CopyTextButton/CopyTextButton.js +29 -2
- package/build/dist/UI/Components/CopyTextButton/CopyTextButton.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogItem.js +109 -75
- package/build/dist/UI/Components/LogsViewer/LogItem.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +65 -22
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LogItem UI
|
|
3
|
+
* - Collapsed row: compact line with timestamp, service, severity badge, message preview, quick copy.
|
|
4
|
+
* - Expanded panel: left severity-colored border, header with service, severity, timestamp; sections for Message, JSON body, Trace/Span IDs, and Attributes, each with copy buttons.
|
|
5
|
+
* - Accessibility: entire item is keyboard-activatable (Enter/Space) and exposes aria-expanded.
|
|
6
|
+
* - Styling hooks: severityBadgeClasses and leftBorderColor derive from props.log.severityText for consistent theming.
|
|
7
|
+
* - Non-breaking: props and behavior remain backward compatible.
|
|
8
|
+
*/
|
|
1
9
|
import CopyTextButton from "../CopyTextButton/CopyTextButton";
|
|
2
10
|
import OneUptimeDate from "../../../Types/Date";
|
|
3
11
|
import JSONFunctions from "../../../Types/JSONFunctions";
|
|
4
12
|
import LogSeverity from "../../../Types/Log/LogSeverity";
|
|
5
13
|
import React, { useEffect } from "react";
|
|
6
14
|
import { Logger } from "../../Utils/Logger";
|
|
15
|
+
import Icon from "../Icon/Icon";
|
|
16
|
+
import IconProp from "../../../Types/Icon/IconProp";
|
|
7
17
|
const LogItem = (props) => {
|
|
8
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
18
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
9
19
|
const serviceId = ((_a = props.log.serviceId) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
10
20
|
const serviceName = ((_b = props.serviceMap[serviceId]) === null || _b === void 0 ? void 0 : _b.name) || serviceId;
|
|
11
21
|
const serviceColor = ((_d = (_c = props.serviceMap[serviceId]) === null || _c === void 0 ? void 0 : _c.serviceColor) === null || _d === void 0 ? void 0 : _d.toString()) || "text-slate-200";
|
|
@@ -14,104 +24,128 @@ const LogItem = (props) => {
|
|
|
14
24
|
setIsCollapsed(true);
|
|
15
25
|
}, []);
|
|
16
26
|
let bodyColor = "text-slate-200";
|
|
27
|
+
let leftBorderColor = "border-l-slate-700";
|
|
28
|
+
let severityDotClass = "bg-slate-400";
|
|
17
29
|
const getCopyButton = (textToBeCopied) => {
|
|
18
|
-
return (React.createElement(CopyTextButton, { textToBeCopied: textToBeCopied,
|
|
30
|
+
return (React.createElement(CopyTextButton, { textToBeCopied: textToBeCopied, size: "xs", variant: "ghost", iconOnly: true, title: "Copy", className: "flex-none" }));
|
|
19
31
|
};
|
|
20
32
|
if (props.log.severityText === LogSeverity.Warning) {
|
|
21
33
|
bodyColor = "text-amber-400";
|
|
34
|
+
leftBorderColor = "border-l-amber-500/60";
|
|
35
|
+
severityDotClass = "bg-amber-500";
|
|
22
36
|
}
|
|
23
37
|
else if (props.log.severityText === LogSeverity.Error) {
|
|
24
38
|
bodyColor = "text-rose-400";
|
|
39
|
+
leftBorderColor = "border-l-rose-500/60";
|
|
40
|
+
severityDotClass = "bg-rose-500";
|
|
25
41
|
}
|
|
26
42
|
else if (props.log.severityText === LogSeverity.Trace ||
|
|
27
43
|
props.log.severityText === LogSeverity.Debug) {
|
|
28
44
|
bodyColor = "text-slate-400";
|
|
45
|
+
leftBorderColor =
|
|
46
|
+
props.log.severityText === LogSeverity.Debug
|
|
47
|
+
? "border-l-purple-500/60"
|
|
48
|
+
: "border-l-slate-500/60";
|
|
49
|
+
severityDotClass =
|
|
50
|
+
props.log.severityText === LogSeverity.Debug
|
|
51
|
+
? "bg-purple-500"
|
|
52
|
+
: "bg-slate-500";
|
|
53
|
+
}
|
|
54
|
+
else if (props.log.severityText === LogSeverity.Information) {
|
|
55
|
+
leftBorderColor = "border-l-blue-500/60";
|
|
56
|
+
severityDotClass = "bg-blue-500";
|
|
57
|
+
}
|
|
58
|
+
else if (props.log.severityText === LogSeverity.Fatal) {
|
|
59
|
+
leftBorderColor = "border-l-rose-700/70";
|
|
60
|
+
severityDotClass = "bg-rose-700";
|
|
29
61
|
}
|
|
30
62
|
let logBody = ((_e = props.log.body) === null || _e === void 0 ? void 0 : _e.toString()) || "";
|
|
63
|
+
let logBodyMinified = "";
|
|
31
64
|
let isBodyInJSON = false;
|
|
32
65
|
try {
|
|
33
|
-
|
|
66
|
+
const parsed = JSON.parse(logBody);
|
|
67
|
+
logBody = JSON.stringify(parsed, null, 2);
|
|
68
|
+
logBodyMinified = JSON.stringify(parsed);
|
|
34
69
|
isBodyInJSON = true;
|
|
35
70
|
}
|
|
36
71
|
catch (e) {
|
|
37
72
|
Logger.error(e);
|
|
38
73
|
isBodyInJSON = false;
|
|
39
74
|
}
|
|
75
|
+
const toggleCollapsed = () => {
|
|
76
|
+
setIsCollapsed((v) => {
|
|
77
|
+
return !v;
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
const handleKeyDown = (e) => {
|
|
81
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
82
|
+
e.preventDefault();
|
|
83
|
+
toggleCollapsed();
|
|
84
|
+
}
|
|
85
|
+
};
|
|
40
86
|
if (isCollapsed) {
|
|
41
|
-
return (React.createElement("div", { className:
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
} },
|
|
48
|
-
|
|
49
|
-
"
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
props.log.severityText === LogSeverity.Fatal && (React.createElement("div", { className: "text-rose-400 courier-prime flex-none" }, "[FATAL] \u00A0")),
|
|
57
|
-
React.createElement("div", { className: `${bodyColor} courier-prime` },
|
|
58
|
-
isBodyInJSON && React.createElement("pre", { className: "whitespace-pre-wrap" }, logBody),
|
|
59
|
-
!isBodyInJSON && ((_f = props.log.body) === null || _f === void 0 ? void 0 : _f.toString()))));
|
|
87
|
+
return (React.createElement("div", { className: `group relative text-slate-200 flex items-center gap-2 cursor-pointer hover:bg-slate-800/40 px-2 py-0.5 border border-transparent border-l ${leftBorderColor} rounded-sm transition-colors duration-100`, onClick: toggleCollapsed, role: "button", "aria-expanded": !isCollapsed, tabIndex: 0, onKeyDown: handleKeyDown },
|
|
88
|
+
props.log.time && (React.createElement("div", { className: "flex items-center space-x-2 flex-none w-52" },
|
|
89
|
+
React.createElement("div", { className: "text-[10px] text-slate-400 font-mono tabular-nums" }, OneUptimeDate.getDateAsUserFriendlyFormattedString(props.log.time)
|
|
90
|
+
.split(" ")
|
|
91
|
+
.slice(1)
|
|
92
|
+
.join(" ")),
|
|
93
|
+
React.createElement("div", { className: "text-[11px] font-medium truncate", style: { color: serviceColor }, title: serviceName }, serviceName))),
|
|
94
|
+
React.createElement("div", { className: "flex-none mr-1" },
|
|
95
|
+
React.createElement("span", { className: "inline-flex items-center gap-2" },
|
|
96
|
+
React.createElement("span", { className: `inline-block w-1.5 h-1.5 rounded-full ${severityDotClass}`, "aria-hidden": "true" }),
|
|
97
|
+
React.createElement("span", { className: "text-[9px] uppercase tracking-wide text-slate-400" }, (props.log.severityText || "").toString() || "UNKNOWN"))),
|
|
98
|
+
React.createElement("div", { className: `${bodyColor} font-mono text-[13px] md:text-sm leading-5 tracking-tight subpixel-antialiased flex-1 min-w-0` }, isBodyInJSON ? (React.createElement("div", { className: "truncate", title: logBodyMinified }, logBodyMinified)) : (React.createElement("div", { className: "truncate", title: (_f = props.log.body) === null || _f === void 0 ? void 0 : _f.toString() }, (_g = props.log.body) === null || _g === void 0 ? void 0 : _g.toString()))),
|
|
99
|
+
React.createElement("div", { className: "opacity-0 group-hover:opacity-100 transition-opacity ml-1" }, getCopyButton(((_h = props.log.body) === null || _h === void 0 ? void 0 : _h.toString()) || "")),
|
|
100
|
+
React.createElement("div", { className: "flex-none ml-1 text-slate-500 group-hover:text-slate-300 transition-transform duration-200" },
|
|
101
|
+
React.createElement(Icon, { icon: IconProp.ChevronDown, className: "w-3 h-3" }))));
|
|
60
102
|
}
|
|
61
|
-
return (React.createElement("div", { className:
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
" ")
|
|
77
|
-
|
|
78
|
-
React.createElement("div", { className: "
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
React.createElement("div", { className: "font-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
React.createElement("div", { className: "
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
React.createElement("div", { className: "
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
React.createElement("div", { className: "
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
!isBodyInJSON && (React.createElement("div", { className: `${bodyColor} courier-prime` }, (_g = props.log.body) === null || _g === void 0 ? void 0 : _g.toString()))),
|
|
102
|
-
isBodyInJSON && (React.createElement("pre", { className: `${bodyColor} courier-prime whitespace-pre-wrap` }, logBody))),
|
|
103
|
-
props.log.traceId && (React.createElement("div", { className: "flex" },
|
|
104
|
-
React.createElement("div", { className: "font-medium text-slate-200 courier-prime mr-2" }, "TRACE:\u00A0\u00A0\u00A0"),
|
|
105
|
-
React.createElement("div", { className: `${bodyColor} courier-prime` }, (_h = props.log.traceId) === null || _h === void 0 ? void 0 : _h.toString()),
|
|
106
|
-
getCopyButton(((_j = props.log.traceId) === null || _j === void 0 ? void 0 : _j.toString()) || ""))),
|
|
107
|
-
props.log.spanId && (React.createElement("div", { className: "flex" },
|
|
108
|
-
React.createElement("div", { className: "font-medium text-slate-200 courier-prime mr-2" }, "SPAN:\u00A0\u00A0\u00A0\u00A0"),
|
|
109
|
-
React.createElement("div", { className: `${bodyColor} courier-prime` }, (_k = props.log.spanId) === null || _k === void 0 ? void 0 : _k.toString()),
|
|
110
|
-
getCopyButton(((_l = props.log.spanId) === null || _l === void 0 ? void 0 : _l.toString()) || ""))),
|
|
103
|
+
return (React.createElement("div", { className: `group relative text-slate-200 bg-slate-950/70 border ${leftBorderColor} border-l border-slate-900 rounded-sm p-2 hover:border-slate-700 transition-colors` },
|
|
104
|
+
React.createElement("div", { className: "flex items-center justify-between mb-1 pb-1 border-b border-slate-800/80" },
|
|
105
|
+
serviceName && (React.createElement("div", { className: "text-[13px] font-semibold", style: { color: serviceColor } }, serviceName)),
|
|
106
|
+
React.createElement("div", { className: "flex items-center gap-2" },
|
|
107
|
+
React.createElement("span", { className: "inline-flex items-center gap-2" },
|
|
108
|
+
React.createElement("span", { className: `inline-block w-1.5 h-1.5 rounded-full ${severityDotClass}`, "aria-hidden": "true" }),
|
|
109
|
+
React.createElement("span", { className: "text-[9px] uppercase tracking-wide text-slate-400" }, (props.log.severityText || "").toString() || "UNKNOWN")),
|
|
110
|
+
props.log.time && (React.createElement("div", { className: "text-[11px] text-slate-400 font-mono tabular-nums" }, OneUptimeDate.getDateAsUserFriendlyFormattedString(props.log.time))),
|
|
111
|
+
React.createElement("button", { type: "button", title: "Collapse", "aria-label": "Collapse", onClick: (e) => {
|
|
112
|
+
e.stopPropagation();
|
|
113
|
+
toggleCollapsed();
|
|
114
|
+
}, className: "flex-none text-slate-500 hover:text-slate-300 transition-colors" },
|
|
115
|
+
React.createElement(Icon, { icon: IconProp.ChevronUp, className: "w-3.5 h-3.5" })))),
|
|
116
|
+
React.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-1.5 mb-1.5 text-[11px] text-slate-400" },
|
|
117
|
+
props.log.time && (React.createElement("div", { className: "flex items-center gap-2" },
|
|
118
|
+
React.createElement("span", { className: "uppercase tracking-wide" }, "Timestamp"),
|
|
119
|
+
React.createElement("span", { className: "text-slate-300 font-mono tabular-nums" }, OneUptimeDate.getDateAsUserFriendlyFormattedString(props.log.time)))),
|
|
120
|
+
props.log.severityText && (React.createElement("div", { className: "flex items-center gap-2" },
|
|
121
|
+
React.createElement("span", { className: "uppercase tracking-wide" }, "Severity"),
|
|
122
|
+
React.createElement("span", { className: "inline-flex items-center gap-2 text-slate-300" },
|
|
123
|
+
React.createElement("span", { className: `inline-block w-1.5 h-1.5 rounded-full ${severityDotClass}` }),
|
|
124
|
+
React.createElement("span", { className: "text-[10px] uppercase" }, (props.log.severityText || "").toString()))))),
|
|
125
|
+
React.createElement("div", { className: "mb-1.5" },
|
|
126
|
+
React.createElement("div", { className: "flex items-center justify-between text-[10px] font-semibold text-slate-400 uppercase tracking-wide mb-1" },
|
|
127
|
+
"Message",
|
|
128
|
+
React.createElement("div", { className: "flex items-center gap-2 normal-case" }, getCopyButton(isBodyInJSON ? logBody : ((_j = props.log.body) === null || _j === void 0 ? void 0 : _j.toString()) || ""))),
|
|
129
|
+
React.createElement("div", { className: "bg-slate-950 rounded p-1.5 border border-slate-800" },
|
|
130
|
+
!isBodyInJSON && (React.createElement("div", { className: `${bodyColor} font-mono text-sm leading-snug` }, (_k = props.log.body) === null || _k === void 0 ? void 0 : _k.toString())),
|
|
131
|
+
isBodyInJSON && (React.createElement("pre", { className: `${bodyColor} font-mono text-sm leading-snug whitespace-pre overflow-auto max-h-40 w-full block` }, logBody)))),
|
|
132
|
+
(props.log.traceId || props.log.spanId) && (React.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-1.5 mb-1.5" },
|
|
133
|
+
props.log.traceId && (React.createElement("div", { className: "flex flex-col space-y-2" },
|
|
134
|
+
React.createElement("div", { className: "text-[10px] font-semibold text-slate-400 uppercase tracking-wide" }, "Trace ID"),
|
|
135
|
+
React.createElement("div", { className: "flex items-center space-x-2" },
|
|
136
|
+
React.createElement("div", { className: `${bodyColor} font-mono text-sm bg-slate-950 px-2.5 py-1.5 rounded border border-slate-800 flex-1 truncate` }, (_l = props.log.traceId) === null || _l === void 0 ? void 0 : _l.toString()),
|
|
137
|
+
getCopyButton(((_m = props.log.traceId) === null || _m === void 0 ? void 0 : _m.toString()) || "")))),
|
|
138
|
+
props.log.spanId && (React.createElement("div", { className: "flex flex-col space-y-2" },
|
|
139
|
+
React.createElement("div", { className: "text-[10px] font-semibold text-slate-400 uppercase tracking-wide" }, "Span ID"),
|
|
140
|
+
React.createElement("div", { className: "flex items-center space-x-2" },
|
|
141
|
+
React.createElement("div", { className: `${bodyColor} font-mono text-sm bg-slate-950 px-2.5 py-1.5 rounded border border-slate-800 flex-1 truncate` }, (_o = props.log.spanId) === null || _o === void 0 ? void 0 : _o.toString()),
|
|
142
|
+
getCopyButton(((_p = props.log.spanId) === null || _p === void 0 ? void 0 : _p.toString()) || "")))))),
|
|
111
143
|
props.log.attributes && (React.createElement("div", null,
|
|
112
|
-
React.createElement("div", { className: "flex" },
|
|
113
|
-
|
|
114
|
-
|
|
144
|
+
React.createElement("div", { className: "flex items-center justify-between text-[10px] font-semibold text-slate-400 uppercase tracking-wide mb-1" },
|
|
145
|
+
"Attributes",
|
|
146
|
+
getCopyButton(JSON.stringify(JSONFunctions.unflattenObject(props.log.attributes || {}), null, 2) || "")),
|
|
147
|
+
React.createElement("div", { className: "bg-slate-950 rounded p-1.5 border border-slate-800" },
|
|
148
|
+
React.createElement("pre", { className: `${bodyColor} font-mono text-sm leading-snug whitespace-pre overflow-auto max-h-40 w-full block` }, JSON.stringify(JSONFunctions.unflattenObject(props.log.attributes || {}), null, 2)))))));
|
|
115
149
|
};
|
|
116
150
|
export default LogItem;
|
|
117
151
|
//# sourceMappingURL=LogItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogItem.js","sourceRoot":"","sources":["../../../../../UI/Components/LogsViewer/LogItem.tsx"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAEhD,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAEzD,OAAO,WAAW,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,EAAmC,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"LogItem.js","sourceRoot":"","sources":["../../../../../UI/Components/LogsViewer/LogItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -21,9 +21,12 @@ import { LIMIT_PER_PROJECT } from "../../../Types/Database/LimitMax";
|
|
|
21
21
|
import SortOrder from "../../../Types/BaseDatabase/SortOrder";
|
|
22
22
|
const LogsViewer = (props) => {
|
|
23
23
|
const [filterData, setFilterData] = React.useState(props.filterData);
|
|
24
|
-
const [screenHeight, setScreenHeight] = React.useState(window.innerHeight);
|
|
24
|
+
const [screenHeight, setScreenHeight] = React.useState(typeof window !== "undefined" ? window.innerHeight : 900);
|
|
25
25
|
const [autoScroll, setAutoScroll] = React.useState(true);
|
|
26
|
+
const [showScrollToBottom, setShowScrollToBottom] = React.useState(false);
|
|
27
|
+
// removed wrapLines toggle for a cleaner toolbar
|
|
26
28
|
const logsViewerRef = React.useRef(null);
|
|
29
|
+
const scrollContainerRef = React.useRef(null);
|
|
27
30
|
const [logAttributes, setLogAttributes] = React.useState([]);
|
|
28
31
|
const [isPageLoading, setIsPageLoading] = React.useState(true);
|
|
29
32
|
const [pageError, setPageError] = React.useState("");
|
|
@@ -80,9 +83,17 @@ const LogsViewer = (props) => {
|
|
|
80
83
|
}, []);
|
|
81
84
|
// Keep scroll to the bottom of the log
|
|
82
85
|
const scrollToBottom = () => {
|
|
83
|
-
const
|
|
84
|
-
if (
|
|
85
|
-
|
|
86
|
+
const scrollContainer = scrollContainerRef.current;
|
|
87
|
+
if (scrollContainer) {
|
|
88
|
+
scrollContainer.scrollTop = scrollContainer.scrollHeight;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const handleScroll = () => {
|
|
92
|
+
const scrollContainer = scrollContainerRef.current;
|
|
93
|
+
if (scrollContainer) {
|
|
94
|
+
const { scrollTop, scrollHeight, clientHeight } = scrollContainer;
|
|
95
|
+
const isNearBottom = scrollHeight - scrollTop - clientHeight < 100;
|
|
96
|
+
setShowScrollToBottom(!isNearBottom && props.logs.length > 0);
|
|
86
97
|
}
|
|
87
98
|
};
|
|
88
99
|
React.useEffect(() => {
|
|
@@ -91,6 +102,16 @@ const LogsViewer = (props) => {
|
|
|
91
102
|
}
|
|
92
103
|
scrollToBottom();
|
|
93
104
|
}, [props.logs]);
|
|
105
|
+
React.useEffect(() => {
|
|
106
|
+
const scrollContainer = scrollContainerRef.current;
|
|
107
|
+
if (scrollContainer) {
|
|
108
|
+
scrollContainer.addEventListener("scroll", handleScroll);
|
|
109
|
+
return () => {
|
|
110
|
+
return scrollContainer.removeEventListener("scroll", handleScroll);
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
return () => { }; // Return empty cleanup function if no scrollContainer
|
|
114
|
+
}, []);
|
|
94
115
|
if (isPageLoading) {
|
|
95
116
|
return React.createElement(PageLoader, { isVisible: true });
|
|
96
117
|
}
|
|
@@ -98,7 +119,7 @@ const LogsViewer = (props) => {
|
|
|
98
119
|
return React.createElement(ErrorMessage, { message: pageError });
|
|
99
120
|
}
|
|
100
121
|
return (React.createElement("div", null,
|
|
101
|
-
props.showFilters && (React.createElement("div", { className: "mb-
|
|
122
|
+
props.showFilters && (React.createElement("div", { className: "mb-6" },
|
|
102
123
|
React.createElement(Card, null,
|
|
103
124
|
React.createElement("div", { className: "-mt-8" },
|
|
104
125
|
React.createElement(FiltersForm, { id: "logs-filter", showFilter: props.showFilters, filterData: props.filterData, onFilterChanged: (filterData) => {
|
|
@@ -130,23 +151,45 @@ const LogsViewer = (props) => {
|
|
|
130
151
|
isAdvancedFilter: true,
|
|
131
152
|
},
|
|
132
153
|
] })),
|
|
133
|
-
React.createElement("div", { className: "
|
|
134
|
-
React.createElement("div",
|
|
135
|
-
React.createElement(
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
154
|
+
React.createElement("div", { className: "-mx-6 -mb-6 px-6 py-3 border-t border-slate-200 dark:border-slate-700 bg-white/50 dark:bg-slate-900/50" },
|
|
155
|
+
React.createElement("div", { className: "flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between" },
|
|
156
|
+
React.createElement("div", { className: "flex items-center gap-4 flex-wrap" },
|
|
157
|
+
React.createElement("div", { className: "flex items-center gap-2" },
|
|
158
|
+
React.createElement(Toggle, { title: "", value: autoScroll, onChange: (checked) => {
|
|
159
|
+
return setAutoScroll(checked);
|
|
160
|
+
} }),
|
|
161
|
+
React.createElement("span", { className: "text-xs text-slate-600 dark:text-slate-300" }, autoScroll ? "Live" : "Paused")),
|
|
162
|
+
React.createElement("span", { className: "hidden sm:block h-4 w-px bg-slate-200 dark:bg-slate-700" }),
|
|
163
|
+
React.createElement("span", { className: "text-xs text-slate-500 dark:text-slate-400" },
|
|
164
|
+
props.logs.length,
|
|
165
|
+
" result",
|
|
166
|
+
props.logs.length !== 1 ? "s" : "")),
|
|
167
|
+
React.createElement("div", { className: "flex items-center gap-2" },
|
|
168
|
+
React.createElement(Button, { title: "Apply Filters", icon: IconProp.Search, buttonStyle: ButtonStyleType.NORMAL, buttonSize: ButtonSize.Small, onClick: () => {
|
|
169
|
+
return props.onFilterChanged(filterData);
|
|
170
|
+
} }))))))),
|
|
171
|
+
!props.isLoading && (React.createElement("div", { className: "relative" },
|
|
172
|
+
React.createElement("div", { ref: logsViewerRef, className: "rounded-md border border-slate-700 bg-slate-900 overflow-hidden", style: {
|
|
173
|
+
height: Math.max(360, screenHeight - 360),
|
|
174
|
+
} },
|
|
175
|
+
React.createElement("div", { ref: scrollContainerRef, className: `h-full overflow-y-auto p-2 sm:p-3 antialiased`, onScroll: handleScroll },
|
|
176
|
+
React.createElement("ul", { role: "list", className: "divide-y divide-slate-800" }, props.logs.map((log, i) => {
|
|
177
|
+
return (React.createElement("li", { key: i, className: "py-1 first:pt-0 last:pb-0" },
|
|
178
|
+
React.createElement(LogItem, { serviceMap: serviceMap, log: log })));
|
|
179
|
+
})),
|
|
180
|
+
props.logs.length === 0 && (React.createElement("div", { className: "flex items-center justify-center h-full px-4" },
|
|
181
|
+
React.createElement("div", { className: "text-center" },
|
|
182
|
+
React.createElement("h3", { className: "text-sm font-medium text-slate-300 mb-1" }, "No logs found"),
|
|
183
|
+
React.createElement("p", { className: "text-slate-500 text-xs" }, props.noLogsMessage ||
|
|
184
|
+
"Adjust filters or check again later.")))))),
|
|
185
|
+
showScrollToBottom && (React.createElement("button", { onClick: scrollToBottom, className: "absolute bottom-3 right-3 bg-slate-700 hover:bg-slate-600 text-white p-2 rounded-md shadow transition-all", title: "Scroll to bottom" },
|
|
186
|
+
React.createElement("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
187
|
+
React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 14l-7 7m0 0l-7-7m7 7V3" })))))),
|
|
188
|
+
props.isLoading && (React.createElement("div", { className: "rounded-md border border-slate-700 bg-slate-900 overflow-hidden", style: { height: Math.max(360, screenHeight - 360) } },
|
|
189
|
+
React.createElement("div", { className: "flex items-center justify-center h-full" },
|
|
190
|
+
React.createElement("div", { className: "text-center" },
|
|
191
|
+
React.createElement(ComponentLoader, null),
|
|
192
|
+
React.createElement("p", { className: "text-slate-400 text-sm mt-4" }, "Loading logs...")))))));
|
|
150
193
|
};
|
|
151
194
|
export default LogsViewer;
|
|
152
195
|
//# sourceMappingURL=LogsViewer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogsViewer.js","sourceRoot":"","sources":["../../../../../UI/Components/LogsViewer/LogsViewer.tsx"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAChD,OAAO,eAAe,MAAM,oCAAoC,CAAC;AACjE,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,OAAO,MAAM,WAAW,CAAC;AAMhC,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAA+C,MAAM,OAAO,CAAC;AACpE,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,IAAI,MAAM,cAAc,CAAC;AAChC,OAAO,MAAM,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,QAAQ,MAAM,8BAA8B,CAAC;AACpD,OAAO,QAAQ,MAAM,+BAA+B,CAAC;AACrD,OAAO,GAAG,MAAM,wBAAwB,CAAC;AAGzC,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,GAAG,MAAM,qBAAqB,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAC9C,OAAO,YAAY,MAAM,8BAA8B,CAAC;AACxD,OAAO,gBAAgB,MAAM,iDAAiD,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,SAAS,MAAM,uCAAuC,CAAC;AAa9D,MAAM,UAAU,GAAsC,CACpD,KAAqB,EACP,EAAE;IAChB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAChD,KAAK,CAAC,UAAU,CACjB,CAAC;IAEF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CACpD,MAAM,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"LogsViewer.js","sourceRoot":"","sources":["../../../../../UI/Components/LogsViewer/LogsViewer.tsx"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAChD,OAAO,eAAe,MAAM,oCAAoC,CAAC;AACjE,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,OAAO,MAAM,WAAW,CAAC;AAMhC,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAA+C,MAAM,OAAO,CAAC;AACpE,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,IAAI,MAAM,cAAc,CAAC;AAChC,OAAO,MAAM,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,QAAQ,MAAM,8BAA8B,CAAC;AACpD,OAAO,QAAQ,MAAM,+BAA+B,CAAC;AACrD,OAAO,GAAG,MAAM,wBAAwB,CAAC;AAGzC,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,GAAG,MAAM,qBAAqB,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAC9C,OAAO,YAAY,MAAM,8BAA8B,CAAC;AACxD,OAAO,gBAAgB,MAAM,iDAAiD,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,SAAS,MAAM,uCAAuC,CAAC;AAa9D,MAAM,UAAU,GAAsC,CACpD,KAAqB,EACP,EAAE;IAChB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAChD,KAAK,CAAC,UAAU,CACjB,CAAC;IAEF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CACpD,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CACzD,CAAC;IACF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAU,IAAI,CAAC,CAAC;IAClE,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAC/C,KAAK,CAAC,QAAQ,CAAU,KAAK,CAAC,CAAC;IACjC,iDAAiD;IACjD,MAAM,aAAa,GAAwB,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GACtB,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAErC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAgB,EAAE,CAAC,CAAC;IAE5E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAU,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAS,EAAE,CAAC,CAAC;IAE7D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAEhD,EAAE,CAAC,CAAC;IAEN,MAAM,cAAc,GAAwB,KAAK,IAAmB,EAAE;QACpE,IAAI,CAAC;YACH,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAEvB,MAAM,iBAAiB,GACrB,MAAM,QAAQ,CAAC,OAAO,CAAC;gBACrB,SAAS,EAAE,gBAAgB;gBAC3B,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE;oBACN,IAAI,EAAE,IAAI;oBACV,YAAY,EAAE,IAAI;iBACnB;gBACD,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE;oBACJ,IAAI,EAAE,SAAS,CAAC,SAAS;iBAC1B;aACF,CAAC,CAAC;YACL,MAAM,QAAQ,GAAiC,EAAE,CAAC;YAElD,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAyB,EAAE,EAAE;gBAC3D,QAAQ,CAAC,OAAO,CAAC,EAAG,CAAC,QAAQ,EAAG,CAAC,GAAG,OAAO,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,aAAa,CAAC,QAAQ,CAAC,CAAC;YAExB,MAAM,iBAAiB,GACrB,MAAM,GAAG,CAAC,IAAI,CACZ,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAC7C,gCAAgC,CACjC,EACD,EAAE,oBAEG,QAAQ,CAAC,gBAAgB,EAAE,EAEjC,CAAC;YAEJ,IAAI,iBAAiB,YAAY,iBAAiB,EAAE,CAAC;gBACnD,MAAM,iBAAiB,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAkB,iBAAiB,CAAC,IAAI,CACtD,YAAY,CACI,CAAC;gBACnB,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;YAED,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxB,YAAY,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxB,YAAY,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAY,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC;IAEF,sDAAsD;IAEtD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtC,YAAY,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAY,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAQ,GAAS,EAAE;YACnC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAEhD,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACrD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,uCAAuC;IAEvC,MAAM,cAAc,GAAiB,GAAS,EAAE;QAC9C,MAAM,eAAe,GAA0B,kBAAkB,CAAC,OAAO,CAAC;QAE1E,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,CAAC,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAiB,GAAS,EAAE;QAC5C,MAAM,eAAe,GAA0B,kBAAkB,CAAC,OAAO,CAAC;QAC1E,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC;YAClE,MAAM,YAAY,GAChB,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,GAAG,CAAC;YAChD,qBAAqB,CAAC,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,cAAc,EAAE,CAAC;IACnB,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,eAAe,GAA0B,kBAAkB,CAAC,OAAO,CAAC;QAC1E,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACzD,OAAO,GAAG,EAAE;gBACV,OAAO,eAAe,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACrE,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,sDAAsD;IACzE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAC,UAAU,IAAC,SAAS,EAAE,IAAI,GAAI,CAAC;IACzC,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,oBAAC,YAAY,IAAC,OAAO,EAAE,SAAS,GAAI,CAAC;IAC9C,CAAC;IAED,OAAO,CACL;QACG,KAAK,CAAC,WAAW,IAAI,CACpB,6BAAK,SAAS,EAAC,MAAM;YACnB,oBAAC,IAAI;gBACH,6BAAK,SAAS,EAAC,OAAO;oBACpB,oBAAC,WAAW,IACV,EAAE,EAAC,aAAa,EAChB,UAAU,EAAE,KAAK,CAAC,WAAW,EAC7B,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,eAAe,EAAE,CAAC,UAAsB,EAAE,EAAE;4BAC1C,aAAa,CAAC,UAAU,CAAC,CAAC;wBAC5B,CAAC,EACD,OAAO,EAAE;4BACP;gCACE,GAAG,EAAE,MAAM;gCACX,IAAI,EAAE,SAAS,CAAC,IAAI;gCACpB,KAAK,EAAE,YAAY;6BACpB;4BACD;gCACE,GAAG,EAAE,cAAc;gCACnB,qBAAqB,EACnB,YAAY,CAAC,0BAA0B,CAAC,WAAW,CAAC;gCACtD,IAAI,EAAE,SAAS,CAAC,QAAQ;gCACxB,KAAK,EAAE,cAAc;gCACrB,gBAAgB,EAAE,IAAI;6BACvB;4BACD;gCACE,GAAG,EAAE,MAAM;gCACX,IAAI,EAAE,SAAS,CAAC,QAAQ;gCACxB,KAAK,EAAE,oBAAoB;gCAC3B,gBAAgB,EAAE,IAAI;6BACvB;4BACD;gCACE,GAAG,EAAE,YAAY;gCACjB,IAAI,EAAE,SAAS,CAAC,IAAI;gCACpB,KAAK,EAAE,sBAAsB;gCAC7B,QAAQ,EAAE,aAAa;gCACvB,gBAAgB,EAAE,IAAI;6BACvB;yBACF,GACD,CACE;gBAGN,6BAAK,SAAS,EAAC,wGAAwG;oBACrH,6BAAK,SAAS,EAAC,oEAAoE;wBACjF,6BAAK,SAAS,EAAC,mCAAmC;4BAChD,6BAAK,SAAS,EAAC,yBAAyB;gCACtC,oBAAC,MAAM,IACL,KAAK,EAAC,EAAE,EACR,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,CAAC,OAAgB,EAAE,EAAE;wCAC7B,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;oCAChC,CAAC,GACD;gCACF,8BAAM,SAAS,EAAC,4CAA4C,IACzD,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAC1B,CACH;4BACN,8BAAM,SAAS,EAAC,yDAAyD,GAAG;4BAC5E,8BAAM,SAAS,EAAC,4CAA4C;gCACzD,KAAK,CAAC,IAAI,CAAC,MAAM;;gCACjB,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC9B,CACH;wBAEN,6BAAK,SAAS,EAAC,yBAAyB;4BACtC,oBAAC,MAAM,IACL,KAAK,EAAC,eAAe,EACrB,IAAI,EAAE,QAAQ,CAAC,MAAM,EACrB,WAAW,EAAE,eAAe,CAAC,MAAM,EACnC,UAAU,EAAE,UAAU,CAAC,KAAK,EAC5B,OAAO,EAAE,GAAG,EAAE;oCACZ,OAAO,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gCAC3C,CAAC,GACD,CACE,CACF,CACF,CACD,CACH,CACP;QACA,CAAC,KAAK,CAAC,SAAS,IAAI,CACnB,6BAAK,SAAS,EAAC,UAAU;YACvB,6BACE,GAAG,EAAE,aAAa,EAClB,SAAS,EAAC,iEAAiE,EAC3E,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,GAAG,CAAC;iBAC1C;gBAGD,6BACE,GAAG,EAAE,kBAAkB,EACvB,SAAS,EAAE,+CAA+C,EAC1D,QAAQ,EAAE,YAAY;oBAEtB,4BAAI,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,2BAA2B,IAClD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,CAAS,EAAE,EAAE;wBACtC,OAAO,CACL,4BAAI,GAAG,EAAE,CAAC,EAAE,SAAS,EAAC,2BAA2B;4BAC/C,oBAAC,OAAO,IAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAI,CAC1C,CACN,CAAC;oBACJ,CAAC,CAAC,CACC;oBAEJ,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAC1B,6BAAK,SAAS,EAAC,8CAA8C;wBAC3D,6BAAK,SAAS,EAAC,aAAa;4BAC1B,4BAAI,SAAS,EAAC,yCAAyC,oBAElD;4BACL,2BAAG,SAAS,EAAC,wBAAwB,IAClC,KAAK,CAAC,aAAa;gCAClB,sCAAsC,CACtC,CACA,CACF,CACP,CACG,CACF;YAGL,kBAAkB,IAAI,CACrB,gCACE,OAAO,EAAE,cAAc,EACvB,SAAS,EAAC,2GAA2G,EACrH,KAAK,EAAC,kBAAkB;gBAExB,6BACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,WAAW;oBAEnB,8BACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,EACd,CAAC,EAAC,4BAA4B,GAC9B,CACE,CACC,CACV,CACG,CACP;QACA,KAAK,CAAC,SAAS,IAAI,CAClB,6BACE,SAAS,EAAC,iEAAiE,EAC3E,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,GAAG,CAAC,EAAE;YAEpD,6BAAK,SAAS,EAAC,yCAAyC;gBACtD,6BAAK,SAAS,EAAC,aAAa;oBAC1B,oBAAC,eAAe,OAAG;oBACnB,2BAAG,SAAS,EAAC,6BAA6B,sBAAoB,CAC1D,CACF,CACF,CACP,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|