@react-perfscope/ui 0.4.0 → 0.6.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/dist/index.cjs +409 -198
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +409 -198
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/dist/index.js
CHANGED
|
@@ -145,7 +145,9 @@ var en = {
|
|
|
145
145
|
inputDelay: "input delay",
|
|
146
146
|
processingTime: "processing",
|
|
147
147
|
presentation: "presentation",
|
|
148
|
-
interactionThresholdHint: "Only interactions \u226540ms are shown \u2014 INP surfaces the slow ones; fast clicks are omitted."
|
|
148
|
+
interactionThresholdHint: "Only interactions \u226540ms are shown \u2014 INP surfaces the slow ones; fast clicks are omitted.",
|
|
149
|
+
layoutShiftHint: "Every layout shift, including ones triggered by your interactions. The CLS metric excludes input-driven shifts, so this is not a CLS score.",
|
|
150
|
+
unsupportedInBrowser: (kinds) => `Not measurable in this browser (the API is missing, not that nothing happened): ${kinds}.`
|
|
149
151
|
};
|
|
150
152
|
var KIND_LABELS_KO = {
|
|
151
153
|
render: "\uB80C\uB354",
|
|
@@ -238,7 +240,9 @@ var ko = {
|
|
|
238
240
|
inputDelay: "\uC785\uB825 \uC9C0\uC5F0",
|
|
239
241
|
processingTime: "\uCC98\uB9AC",
|
|
240
242
|
presentation: "\uD654\uBA74 \uBC18\uC601",
|
|
241
|
-
interactionThresholdHint: "40ms \uC774\uC0C1 \uAC78\uB9B0 \uC0C1\uD638\uC791\uC6A9\uB9CC \uD45C\uC2DC\uB3FC\uC694 \u2014 \uB290\uB9B0 \uAC83\uB9CC INP\uB85C \uC7A1\uACE0, \uBE60\uB978 \uD074\uB9AD\uC740 \uC0DD\uB7B5\uD574\uC694."
|
|
243
|
+
interactionThresholdHint: "40ms \uC774\uC0C1 \uAC78\uB9B0 \uC0C1\uD638\uC791\uC6A9\uB9CC \uD45C\uC2DC\uB3FC\uC694 \u2014 \uB290\uB9B0 \uAC83\uB9CC INP\uB85C \uC7A1\uACE0, \uBE60\uB978 \uD074\uB9AD\uC740 \uC0DD\uB7B5\uD574\uC694.",
|
|
244
|
+
layoutShiftHint: "\uC0AC\uC6A9\uC790 \uC778\uD130\uB799\uC158\uC73C\uB85C \uC0DD\uAE34 \uAC83\uAE4C\uC9C0 \uD3EC\uD568\uD55C \uBAA8\uB4E0 \uB808\uC774\uC544\uC6C3 \uC2DC\uD504\uD2B8\uC608\uC694. CLS \uC9C0\uD45C\uB294 \uC785\uB825\uC73C\uB85C \uC778\uD55C \uC2DC\uD504\uD2B8\uB97C \uC81C\uC678\uD558\uBBC0\uB85C, \uC774\uAC74 CLS \uC810\uC218\uAC00 \uC544\uB2C8\uC5D0\uC694.",
|
|
245
|
+
unsupportedInBrowser: (kinds) => `\uC774 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC120 \uCE21\uC815\uD560 \uC218 \uC5C6\uC5B4\uC694 (\uC544\uBB34 \uC77C\uB3C4 \uC5C6\uB358 \uAC8C \uC544\uB2C8\uB77C API\uAC00 \uC5C6\uC74C): ${kinds}.`
|
|
242
246
|
};
|
|
243
247
|
var STRINGS = { en, ko };
|
|
244
248
|
function isLang(v) {
|
|
@@ -348,6 +352,7 @@ function Widget(props) {
|
|
|
348
352
|
|
|
349
353
|
// src/panel.tsx
|
|
350
354
|
import { useState as useState3, useMemo as useMemo3, useEffect, useRef as useRef2 } from "preact/hooks";
|
|
355
|
+
import { unsupportedKinds } from "@react-perfscope/core";
|
|
351
356
|
|
|
352
357
|
// src/overlay.ts
|
|
353
358
|
var OVERLAY_MARKER = "data-perfscope-overlay";
|
|
@@ -1860,6 +1865,177 @@ function RenderInsights({ signals, onSelect }) {
|
|
|
1860
1865
|
);
|
|
1861
1866
|
}
|
|
1862
1867
|
|
|
1868
|
+
// src/inp-episode.tsx
|
|
1869
|
+
import { correlate } from "@react-perfscope/core";
|
|
1870
|
+
|
|
1871
|
+
// src/episode-shared.tsx
|
|
1872
|
+
import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs5 } from "preact/jsx-runtime";
|
|
1873
|
+
function memberLabel(m) {
|
|
1874
|
+
const s = m.signal;
|
|
1875
|
+
if (s.kind === "render") return `${s.component} (${s.reason})`;
|
|
1876
|
+
if (s.kind === "forced-reflow") {
|
|
1877
|
+
const top = s.stack[0];
|
|
1878
|
+
return top ? `forced reflow \xB7 ${top.file}:${top.line}` : "forced reflow";
|
|
1879
|
+
}
|
|
1880
|
+
return `layout shift ${s.value.toFixed(3)}`;
|
|
1881
|
+
}
|
|
1882
|
+
function EpisodeMemberRow({ member }) {
|
|
1883
|
+
return /* @__PURE__ */ jsxs5(
|
|
1884
|
+
"div",
|
|
1885
|
+
{
|
|
1886
|
+
"data-member-kind": member.signal.kind,
|
|
1887
|
+
style: { display: "flex", alignItems: "center", gap: "6px", padding: "1px 0", color: "#ccc" },
|
|
1888
|
+
children: [
|
|
1889
|
+
/* @__PURE__ */ jsx5("span", { style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: memberLabel(member) }),
|
|
1890
|
+
member.causedBy && /* @__PURE__ */ jsxs5("span", { style: { flex: "0 0 auto", color: "#888" }, children: [
|
|
1891
|
+
"\u2190 ",
|
|
1892
|
+
member.causedBy.component
|
|
1893
|
+
] }),
|
|
1894
|
+
member.confidence === "caused" && /* @__PURE__ */ jsx5(
|
|
1895
|
+
"span",
|
|
1896
|
+
{
|
|
1897
|
+
style: {
|
|
1898
|
+
flex: "0 0 auto",
|
|
1899
|
+
fontSize: "9px",
|
|
1900
|
+
color: "#e0a030",
|
|
1901
|
+
border: "1px solid #5a4410",
|
|
1902
|
+
borderRadius: "3px",
|
|
1903
|
+
padding: "0 4px"
|
|
1904
|
+
},
|
|
1905
|
+
children: "caused"
|
|
1906
|
+
}
|
|
1907
|
+
)
|
|
1908
|
+
]
|
|
1909
|
+
}
|
|
1910
|
+
);
|
|
1911
|
+
}
|
|
1912
|
+
function EpisodeMemberList({ members }) {
|
|
1913
|
+
if (members.length === 0) return /* @__PURE__ */ jsx5("span", { style: { color: "#555" }, children: "\u2014" });
|
|
1914
|
+
return /* @__PURE__ */ jsx5(Fragment2, { children: members.map((m, i) => /* @__PURE__ */ jsx5(EpisodeMemberRow, { member: m }, i)) });
|
|
1915
|
+
}
|
|
1916
|
+
|
|
1917
|
+
// src/inp-episode.tsx
|
|
1918
|
+
import { jsx as jsx6, jsxs as jsxs6 } from "preact/jsx-runtime";
|
|
1919
|
+
var PHASES = [
|
|
1920
|
+
{ phase: "input-delay", labelKey: "inputDelay" },
|
|
1921
|
+
{ phase: "processing", labelKey: "processingTime" },
|
|
1922
|
+
{ phase: "presentation", labelKey: "presentation" }
|
|
1923
|
+
];
|
|
1924
|
+
function worstInteractionEpisode(signals) {
|
|
1925
|
+
let worst = null;
|
|
1926
|
+
for (const ep of correlate(signals)) {
|
|
1927
|
+
if (ep.anchor.kind !== "interaction") continue;
|
|
1928
|
+
if (!worst || ep.anchor.duration > worst.anchor.duration) worst = ep;
|
|
1929
|
+
}
|
|
1930
|
+
return worst;
|
|
1931
|
+
}
|
|
1932
|
+
function phaseMs(episode, phase) {
|
|
1933
|
+
const a = episode.anchor;
|
|
1934
|
+
if (a.kind !== "interaction") return 0;
|
|
1935
|
+
return phase === "input-delay" ? a.inputDelay : phase === "processing" ? a.processing : a.presentation;
|
|
1936
|
+
}
|
|
1937
|
+
function InpEpisode({ signals }) {
|
|
1938
|
+
const { t } = useI18n();
|
|
1939
|
+
const episode = worstInteractionEpisode(signals);
|
|
1940
|
+
if (!episode || episode.anchor.kind !== "interaction") return null;
|
|
1941
|
+
const a = episode.anchor;
|
|
1942
|
+
const target = a.target ? ` on ${a.target}` : "";
|
|
1943
|
+
return /* @__PURE__ */ jsxs6(
|
|
1944
|
+
"div",
|
|
1945
|
+
{
|
|
1946
|
+
"data-inp-episode": true,
|
|
1947
|
+
style: {
|
|
1948
|
+
margin: "0 0 8px",
|
|
1949
|
+
border: "1px solid #1f1f1f",
|
|
1950
|
+
borderRadius: "6px",
|
|
1951
|
+
background: "#121212",
|
|
1952
|
+
fontFamily: "SF Mono, Menlo, Consolas, monospace",
|
|
1953
|
+
fontSize: "11px",
|
|
1954
|
+
overflow: "hidden"
|
|
1955
|
+
},
|
|
1956
|
+
children: [
|
|
1957
|
+
/* @__PURE__ */ jsxs6("div", { style: { padding: "6px 8px", borderBottom: "1px solid #1f1f1f", color: "#ddd" }, children: [
|
|
1958
|
+
/* @__PURE__ */ jsx6("strong", { children: a.eventType }),
|
|
1959
|
+
target,
|
|
1960
|
+
" \u2014 ",
|
|
1961
|
+
/* @__PURE__ */ jsxs6("strong", { children: [
|
|
1962
|
+
Math.round(a.duration),
|
|
1963
|
+
"ms"
|
|
1964
|
+
] }),
|
|
1965
|
+
" ",
|
|
1966
|
+
/* @__PURE__ */ jsx6("span", { style: { color: "#888" }, children: "INP" })
|
|
1967
|
+
] }),
|
|
1968
|
+
PHASES.map(({ phase, labelKey }) => {
|
|
1969
|
+
const members = episode.members.filter((m) => m.phase === phase);
|
|
1970
|
+
return /* @__PURE__ */ jsxs6(
|
|
1971
|
+
"div",
|
|
1972
|
+
{
|
|
1973
|
+
"data-inp-phase": phase,
|
|
1974
|
+
style: { display: "flex", gap: "8px", padding: "5px 8px", borderTop: "1px solid #1a1a1a" },
|
|
1975
|
+
children: [
|
|
1976
|
+
/* @__PURE__ */ jsxs6("div", { style: { flex: "0 0 92px", color: "#aaa" }, children: [
|
|
1977
|
+
t[labelKey],
|
|
1978
|
+
/* @__PURE__ */ jsxs6("div", { style: { color: "#666", fontSize: "10px" }, children: [
|
|
1979
|
+
Math.round(phaseMs(episode, phase)),
|
|
1980
|
+
"ms"
|
|
1981
|
+
] })
|
|
1982
|
+
] }),
|
|
1983
|
+
/* @__PURE__ */ jsx6("div", { style: { flex: 1, minWidth: 0 }, children: /* @__PURE__ */ jsx6(EpisodeMemberList, { members }) })
|
|
1984
|
+
]
|
|
1985
|
+
},
|
|
1986
|
+
phase
|
|
1987
|
+
);
|
|
1988
|
+
})
|
|
1989
|
+
]
|
|
1990
|
+
}
|
|
1991
|
+
);
|
|
1992
|
+
}
|
|
1993
|
+
|
|
1994
|
+
// src/long-task-episode.tsx
|
|
1995
|
+
import { correlate as correlate2 } from "@react-perfscope/core";
|
|
1996
|
+
import { jsx as jsx7, jsxs as jsxs7 } from "preact/jsx-runtime";
|
|
1997
|
+
function worstLongTaskEpisode(signals) {
|
|
1998
|
+
let worst = null;
|
|
1999
|
+
for (const ep of correlate2(signals)) {
|
|
2000
|
+
if (ep.anchor.kind !== "long-task") continue;
|
|
2001
|
+
if (!worst || ep.anchor.duration > worst.anchor.duration) worst = ep;
|
|
2002
|
+
}
|
|
2003
|
+
return worst;
|
|
2004
|
+
}
|
|
2005
|
+
function LongTaskEpisode({ signals }) {
|
|
2006
|
+
const { t } = useI18n();
|
|
2007
|
+
const episode = worstLongTaskEpisode(signals);
|
|
2008
|
+
if (!episode || episode.anchor.kind !== "long-task") return null;
|
|
2009
|
+
if (episode.members.length === 0) return null;
|
|
2010
|
+
const a = episode.anchor;
|
|
2011
|
+
return /* @__PURE__ */ jsxs7(
|
|
2012
|
+
"div",
|
|
2013
|
+
{
|
|
2014
|
+
"data-long-task-episode": true,
|
|
2015
|
+
style: {
|
|
2016
|
+
margin: "0 0 8px",
|
|
2017
|
+
border: "1px solid #1f1f1f",
|
|
2018
|
+
borderRadius: "6px",
|
|
2019
|
+
background: "#121212",
|
|
2020
|
+
fontFamily: "SF Mono, Menlo, Consolas, monospace",
|
|
2021
|
+
fontSize: "11px",
|
|
2022
|
+
overflow: "hidden"
|
|
2023
|
+
},
|
|
2024
|
+
children: [
|
|
2025
|
+
/* @__PURE__ */ jsxs7("div", { style: { padding: "6px 8px", borderBottom: "1px solid #1f1f1f", color: "#ddd" }, children: [
|
|
2026
|
+
/* @__PURE__ */ jsx7("strong", { children: t.kindLabel("long-task") }),
|
|
2027
|
+
" \u2014 ",
|
|
2028
|
+
/* @__PURE__ */ jsxs7("strong", { children: [
|
|
2029
|
+
Math.round(a.duration),
|
|
2030
|
+
"ms"
|
|
2031
|
+
] })
|
|
2032
|
+
] }),
|
|
2033
|
+
/* @__PURE__ */ jsx7("div", { style: { padding: "5px 8px" }, children: /* @__PURE__ */ jsx7(EpisodeMemberList, { members: episode.members }) })
|
|
2034
|
+
]
|
|
2035
|
+
}
|
|
2036
|
+
);
|
|
2037
|
+
}
|
|
2038
|
+
|
|
1863
2039
|
// src/filter.ts
|
|
1864
2040
|
function signalSearchText(signal) {
|
|
1865
2041
|
switch (signal.kind) {
|
|
@@ -1900,7 +2076,7 @@ function signalMatchesFilter(signal, query) {
|
|
|
1900
2076
|
}
|
|
1901
2077
|
|
|
1902
2078
|
// src/panel.tsx
|
|
1903
|
-
import { Fragment as
|
|
2079
|
+
import { Fragment as Fragment3, jsx as jsx8, jsxs as jsxs8 } from "preact/jsx-runtime";
|
|
1904
2080
|
var RENDER_REASON_COLOR = {
|
|
1905
2081
|
mount: "#5ac8fa",
|
|
1906
2082
|
state: "#34c759",
|
|
@@ -1924,7 +2100,7 @@ function RenderReasonTag({ reason, changedProps }) {
|
|
|
1924
2100
|
const color = RENDER_REASON_COLOR[reason];
|
|
1925
2101
|
const label = renderReasonLabel(t, reason);
|
|
1926
2102
|
const keys = reason === "props" && changedProps && changedProps.length > 0 ? `: ${changedProps.join(", ")}` : "";
|
|
1927
|
-
return /* @__PURE__ */
|
|
2103
|
+
return /* @__PURE__ */ jsxs8(
|
|
1928
2104
|
"span",
|
|
1929
2105
|
{
|
|
1930
2106
|
style: {
|
|
@@ -1980,7 +2156,7 @@ var WEB_VITAL_UNIT2 = {
|
|
|
1980
2156
|
};
|
|
1981
2157
|
function RatingDot({ rating }) {
|
|
1982
2158
|
const { t } = useI18n();
|
|
1983
|
-
return /* @__PURE__ */
|
|
2159
|
+
return /* @__PURE__ */ jsx8(
|
|
1984
2160
|
"span",
|
|
1985
2161
|
{
|
|
1986
2162
|
"data-rating": rating,
|
|
@@ -2038,18 +2214,18 @@ var monoStyle = {
|
|
|
2038
2214
|
};
|
|
2039
2215
|
function LayoutShiftDetail({ s }) {
|
|
2040
2216
|
const { t } = useI18n();
|
|
2041
|
-
return /* @__PURE__ */
|
|
2042
|
-
/* @__PURE__ */
|
|
2043
|
-
/* @__PURE__ */
|
|
2044
|
-
/* @__PURE__ */
|
|
2217
|
+
return /* @__PURE__ */ jsxs8("div", { style: { paddingLeft: "12px" }, children: [
|
|
2218
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2219
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.value }),
|
|
2220
|
+
/* @__PURE__ */ jsx8("span", { children: s.value.toFixed(4) })
|
|
2045
2221
|
] }),
|
|
2046
|
-
s.sources.length === 0 ? /* @__PURE__ */
|
|
2047
|
-
/* @__PURE__ */
|
|
2222
|
+
s.sources.length === 0 ? /* @__PURE__ */ jsx8("div", { style: { color: "#666" }, children: t.noSourceRects }) : s.sources.map((r, i) => /* @__PURE__ */ jsxs8("div", { style: { ...detailRowStyle, ...monoStyle }, children: [
|
|
2223
|
+
/* @__PURE__ */ jsxs8("span", { style: { color: "#888" }, children: [
|
|
2048
2224
|
t.rect,
|
|
2049
2225
|
" ",
|
|
2050
2226
|
i + 1
|
|
2051
2227
|
] }),
|
|
2052
|
-
/* @__PURE__ */
|
|
2228
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2053
2229
|
"x=",
|
|
2054
2230
|
r.x.toFixed(0),
|
|
2055
2231
|
" y=",
|
|
@@ -2064,25 +2240,25 @@ function LayoutShiftDetail({ s }) {
|
|
|
2064
2240
|
}
|
|
2065
2241
|
function NetworkDetail({ s }) {
|
|
2066
2242
|
const { t } = useI18n();
|
|
2067
|
-
return /* @__PURE__ */
|
|
2068
|
-
/* @__PURE__ */
|
|
2069
|
-
/* @__PURE__ */
|
|
2070
|
-
/* @__PURE__ */
|
|
2071
|
-
/* @__PURE__ */
|
|
2243
|
+
return /* @__PURE__ */ jsxs8("div", { style: { paddingLeft: "12px" }, children: [
|
|
2244
|
+
/* @__PURE__ */ jsx8("div", { style: { ...detailRowStyle, ...monoStyle, wordBreak: "break-all" }, children: /* @__PURE__ */ jsx8("span", { children: s.url }) }),
|
|
2245
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2246
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.started }),
|
|
2247
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2072
2248
|
s.startedAt.toFixed(0),
|
|
2073
2249
|
"ms"
|
|
2074
2250
|
] })
|
|
2075
2251
|
] }),
|
|
2076
|
-
/* @__PURE__ */
|
|
2077
|
-
/* @__PURE__ */
|
|
2078
|
-
/* @__PURE__ */
|
|
2252
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2253
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.duration }),
|
|
2254
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2079
2255
|
s.duration.toFixed(0),
|
|
2080
2256
|
"ms"
|
|
2081
2257
|
] })
|
|
2082
2258
|
] }),
|
|
2083
|
-
/* @__PURE__ */
|
|
2084
|
-
/* @__PURE__ */
|
|
2085
|
-
/* @__PURE__ */
|
|
2259
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2260
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.size }),
|
|
2261
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2086
2262
|
(s.size / 1024).toFixed(2),
|
|
2087
2263
|
"KB (",
|
|
2088
2264
|
s.size,
|
|
@@ -2091,69 +2267,69 @@ function NetworkDetail({ s }) {
|
|
|
2091
2267
|
")"
|
|
2092
2268
|
] })
|
|
2093
2269
|
] }),
|
|
2094
|
-
/* @__PURE__ */
|
|
2095
|
-
/* @__PURE__ */
|
|
2096
|
-
/* @__PURE__ */
|
|
2270
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2271
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.renderBlocking }),
|
|
2272
|
+
/* @__PURE__ */ jsx8("span", { children: s.blocking ? t.yes : t.no })
|
|
2097
2273
|
] })
|
|
2098
2274
|
] });
|
|
2099
2275
|
}
|
|
2100
2276
|
function WebVitalDetail({ s }) {
|
|
2101
2277
|
const { t } = useI18n();
|
|
2102
|
-
return /* @__PURE__ */
|
|
2103
|
-
/* @__PURE__ */
|
|
2104
|
-
/* @__PURE__ */
|
|
2105
|
-
/* @__PURE__ */
|
|
2278
|
+
return /* @__PURE__ */ jsxs8("div", { style: { paddingLeft: "12px" }, children: [
|
|
2279
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2280
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.metric }),
|
|
2281
|
+
/* @__PURE__ */ jsx8("span", { children: s.name })
|
|
2106
2282
|
] }),
|
|
2107
|
-
/* @__PURE__ */
|
|
2108
|
-
/* @__PURE__ */
|
|
2109
|
-
/* @__PURE__ */
|
|
2283
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2284
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.value }),
|
|
2285
|
+
/* @__PURE__ */ jsx8("span", { children: s.value.toFixed(2) })
|
|
2110
2286
|
] })
|
|
2111
2287
|
] });
|
|
2112
2288
|
}
|
|
2113
2289
|
function RenderDetail({ s }) {
|
|
2114
2290
|
const { t } = useI18n();
|
|
2115
2291
|
if (s.members && s.members.length > 0) {
|
|
2116
|
-
return /* @__PURE__ */
|
|
2117
|
-
/* @__PURE__ */
|
|
2118
|
-
/* @__PURE__ */
|
|
2119
|
-
/* @__PURE__ */
|
|
2292
|
+
return /* @__PURE__ */ jsxs8("div", { style: { paddingLeft: "12px" }, children: [
|
|
2293
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2294
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.duration }),
|
|
2295
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2120
2296
|
s.duration.toFixed(3),
|
|
2121
2297
|
"ms"
|
|
2122
2298
|
] })
|
|
2123
2299
|
] }),
|
|
2124
|
-
/* @__PURE__ */
|
|
2125
|
-
/* @__PURE__ */
|
|
2126
|
-
/* @__PURE__ */
|
|
2300
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2301
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.at }),
|
|
2302
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2127
2303
|
s.at.toFixed(2),
|
|
2128
2304
|
"ms"
|
|
2129
2305
|
] })
|
|
2130
2306
|
] }),
|
|
2131
|
-
/* @__PURE__ */
|
|
2307
|
+
/* @__PURE__ */ jsx8("div", { style: { marginTop: "6px" }, children: /* @__PURE__ */ jsx8(CascadeMembers, { members: s.members }) })
|
|
2132
2308
|
] });
|
|
2133
2309
|
}
|
|
2134
|
-
return /* @__PURE__ */
|
|
2135
|
-
/* @__PURE__ */
|
|
2136
|
-
/* @__PURE__ */
|
|
2137
|
-
/* @__PURE__ */
|
|
2310
|
+
return /* @__PURE__ */ jsxs8("div", { style: { paddingLeft: "12px" }, children: [
|
|
2311
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2312
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.component }),
|
|
2313
|
+
/* @__PURE__ */ jsx8("span", { children: s.component })
|
|
2138
2314
|
] }),
|
|
2139
|
-
/* @__PURE__ */
|
|
2140
|
-
/* @__PURE__ */
|
|
2141
|
-
/* @__PURE__ */
|
|
2315
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2316
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.reason }),
|
|
2317
|
+
/* @__PURE__ */ jsx8(RenderReasonTag, { reason: s.reason, changedProps: s.changedProps })
|
|
2142
2318
|
] }),
|
|
2143
|
-
s.reason === "props" && s.changedProps && s.changedProps.length > 0 && /* @__PURE__ */
|
|
2144
|
-
/* @__PURE__ */
|
|
2145
|
-
/* @__PURE__ */
|
|
2319
|
+
s.reason === "props" && s.changedProps && s.changedProps.length > 0 && /* @__PURE__ */ jsxs8("div", { style: { ...detailRowStyle, ...monoStyle }, children: [
|
|
2320
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.changedProps }),
|
|
2321
|
+
/* @__PURE__ */ jsx8("span", { children: s.changedProps.join(", ") })
|
|
2146
2322
|
] }),
|
|
2147
|
-
/* @__PURE__ */
|
|
2148
|
-
/* @__PURE__ */
|
|
2149
|
-
/* @__PURE__ */
|
|
2323
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2324
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.duration }),
|
|
2325
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2150
2326
|
s.duration.toFixed(3),
|
|
2151
2327
|
"ms"
|
|
2152
2328
|
] })
|
|
2153
2329
|
] }),
|
|
2154
|
-
/* @__PURE__ */
|
|
2155
|
-
/* @__PURE__ */
|
|
2156
|
-
/* @__PURE__ */
|
|
2330
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2331
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.at }),
|
|
2332
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2157
2333
|
s.at.toFixed(2),
|
|
2158
2334
|
"ms"
|
|
2159
2335
|
] })
|
|
@@ -2183,11 +2359,11 @@ function StackFrames({
|
|
|
2183
2359
|
cancelled = true;
|
|
2184
2360
|
};
|
|
2185
2361
|
}, [raw]);
|
|
2186
|
-
return /* @__PURE__ */
|
|
2187
|
-
resolving && /* @__PURE__ */
|
|
2188
|
-
frames.length === 0 ? /* @__PURE__ */
|
|
2189
|
-
f.fnName ? /* @__PURE__ */
|
|
2190
|
-
/* @__PURE__ */
|
|
2362
|
+
return /* @__PURE__ */ jsxs8(Fragment3, { children: [
|
|
2363
|
+
resolving && /* @__PURE__ */ jsx8("div", { style: { color: "#666", fontSize: "10px", marginBottom: "4px" }, children: t.resolvingSourceMaps }),
|
|
2364
|
+
frames.length === 0 ? /* @__PURE__ */ jsx8("div", { style: { color: "#666" }, children: t.noStack }) : frames.map((f, i) => /* @__PURE__ */ jsxs8("div", { style: { ...detailRowStyle, ...monoStyle }, children: [
|
|
2365
|
+
f.fnName ? /* @__PURE__ */ jsx8("span", { children: f.fnName }) : /* @__PURE__ */ jsx8("span", { style: { color: "#666" }, children: t.anonymous }),
|
|
2366
|
+
/* @__PURE__ */ jsxs8("span", { style: { color: "#888" }, children: [
|
|
2191
2367
|
f.file,
|
|
2192
2368
|
":",
|
|
2193
2369
|
f.line,
|
|
@@ -2201,7 +2377,7 @@ function ForcedReflowDetail({
|
|
|
2201
2377
|
s,
|
|
2202
2378
|
resolveFrame
|
|
2203
2379
|
}) {
|
|
2204
|
-
return /* @__PURE__ */
|
|
2380
|
+
return /* @__PURE__ */ jsx8("div", { style: { paddingLeft: "12px" }, children: /* @__PURE__ */ jsx8(StackFrames, { raw: s.stack, resolveFrame }) });
|
|
2205
2381
|
}
|
|
2206
2382
|
function HotFunctions({
|
|
2207
2383
|
attribution,
|
|
@@ -2220,26 +2396,26 @@ function HotFunctions({
|
|
|
2220
2396
|
cancelled = true;
|
|
2221
2397
|
};
|
|
2222
2398
|
}, [attribution]);
|
|
2223
|
-
return /* @__PURE__ */
|
|
2224
|
-
/* @__PURE__ */
|
|
2225
|
-
/* @__PURE__ */
|
|
2399
|
+
return /* @__PURE__ */ jsxs8("div", { style: { marginTop: "6px" }, children: [
|
|
2400
|
+
/* @__PURE__ */ jsx8("div", { style: { ...detailLabelStyle, textTransform: "uppercase", fontSize: "10px", letterSpacing: "0.5px", marginBottom: "1px", color: "#ff9f0a" }, children: t.hotFunctions }),
|
|
2401
|
+
/* @__PURE__ */ jsx8("div", { style: { color: "#666", fontSize: "10px", marginBottom: "4px" }, children: t.hotFunctionsHint }),
|
|
2226
2402
|
attribution.map((a, i) => {
|
|
2227
2403
|
const f = frames[i] ?? a.frame;
|
|
2228
2404
|
const pct = Math.round(a.selfRatio * 100);
|
|
2229
|
-
return /* @__PURE__ */
|
|
2230
|
-
/* @__PURE__ */
|
|
2231
|
-
/* @__PURE__ */
|
|
2232
|
-
/* @__PURE__ */
|
|
2405
|
+
return /* @__PURE__ */ jsxs8("div", { style: { ...monoStyle, padding: "3px 0", borderTop: i > 0 ? "1px dashed #1f1f1f" : "none" }, children: [
|
|
2406
|
+
/* @__PURE__ */ jsxs8("div", { children: [
|
|
2407
|
+
/* @__PURE__ */ jsx8("span", { style: { color: "#ff9f0a", fontWeight: 600 }, children: f.fnName || /* @__PURE__ */ jsx8("span", { style: { color: "#666" }, children: t.anonymous }) }),
|
|
2408
|
+
/* @__PURE__ */ jsxs8("span", { style: { color: SEVERITY_COLOR.medium, marginLeft: "6px" }, children: [
|
|
2233
2409
|
pct,
|
|
2234
2410
|
"%"
|
|
2235
2411
|
] }),
|
|
2236
|
-
/* @__PURE__ */
|
|
2412
|
+
/* @__PURE__ */ jsxs8("span", { style: { color: "#666", marginLeft: "6px" }, children: [
|
|
2237
2413
|
"(",
|
|
2238
2414
|
a.sampleCount,
|
|
2239
2415
|
")"
|
|
2240
2416
|
] })
|
|
2241
2417
|
] }),
|
|
2242
|
-
/* @__PURE__ */
|
|
2418
|
+
/* @__PURE__ */ jsxs8("div", { style: { color: "#888", wordBreak: "break-all" }, children: [
|
|
2243
2419
|
f.file,
|
|
2244
2420
|
":",
|
|
2245
2421
|
f.line,
|
|
@@ -2256,59 +2432,59 @@ function LongTaskDetail({
|
|
|
2256
2432
|
}) {
|
|
2257
2433
|
const { t } = useI18n();
|
|
2258
2434
|
const scripts = s.scripts ? [...s.scripts].sort((a, b) => b.duration - a.duration) : [];
|
|
2259
|
-
return /* @__PURE__ */
|
|
2260
|
-
/* @__PURE__ */
|
|
2261
|
-
/* @__PURE__ */
|
|
2262
|
-
/* @__PURE__ */
|
|
2435
|
+
return /* @__PURE__ */ jsxs8("div", { style: { paddingLeft: "12px" }, children: [
|
|
2436
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2437
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.started }),
|
|
2438
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2263
2439
|
s.at.toFixed(2),
|
|
2264
2440
|
"ms"
|
|
2265
2441
|
] })
|
|
2266
2442
|
] }),
|
|
2267
|
-
/* @__PURE__ */
|
|
2268
|
-
/* @__PURE__ */
|
|
2269
|
-
/* @__PURE__ */
|
|
2443
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2444
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.ended }),
|
|
2445
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2270
2446
|
(s.at + s.duration).toFixed(2),
|
|
2271
2447
|
"ms"
|
|
2272
2448
|
] })
|
|
2273
2449
|
] }),
|
|
2274
|
-
/* @__PURE__ */
|
|
2275
|
-
/* @__PURE__ */
|
|
2276
|
-
/* @__PURE__ */
|
|
2450
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2451
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.duration }),
|
|
2452
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2277
2453
|
s.duration.toFixed(2),
|
|
2278
2454
|
"ms"
|
|
2279
2455
|
] })
|
|
2280
2456
|
] }),
|
|
2281
|
-
typeof s.blockingDuration === "number" && /* @__PURE__ */
|
|
2282
|
-
/* @__PURE__ */
|
|
2283
|
-
/* @__PURE__ */
|
|
2457
|
+
typeof s.blockingDuration === "number" && /* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2458
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.blockingTime }),
|
|
2459
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2284
2460
|
s.blockingDuration.toFixed(2),
|
|
2285
2461
|
"ms"
|
|
2286
2462
|
] })
|
|
2287
2463
|
] }),
|
|
2288
|
-
s.attribution !== void 0 && s.attribution.length > 0 && /* @__PURE__ */
|
|
2289
|
-
s.scripts !== void 0 && /* @__PURE__ */
|
|
2290
|
-
/* @__PURE__ */
|
|
2291
|
-
scripts.length === 0 ? /* @__PURE__ */
|
|
2292
|
-
/* @__PURE__ */
|
|
2293
|
-
/* @__PURE__ */
|
|
2294
|
-
/* @__PURE__ */
|
|
2295
|
-
/* @__PURE__ */
|
|
2464
|
+
s.attribution !== void 0 && s.attribution.length > 0 && /* @__PURE__ */ jsx8(HotFunctions, { attribution: s.attribution, resolveFrame }),
|
|
2465
|
+
s.scripts !== void 0 && /* @__PURE__ */ jsxs8("div", { style: { marginTop: "6px" }, children: [
|
|
2466
|
+
/* @__PURE__ */ jsx8("div", { style: { ...detailLabelStyle, textTransform: "uppercase", fontSize: "10px", letterSpacing: "0.5px", marginBottom: "4px" }, children: t.scripts }),
|
|
2467
|
+
scripts.length === 0 ? /* @__PURE__ */ jsx8("div", { style: { color: "#666" }, children: t.noScripts }) : scripts.map((script, i) => /* @__PURE__ */ jsxs8("div", { style: { ...monoStyle, padding: "3px 0", borderTop: i > 0 ? "1px dashed #1f1f1f" : "none" }, children: [
|
|
2468
|
+
/* @__PURE__ */ jsxs8("div", { children: [
|
|
2469
|
+
/* @__PURE__ */ jsx8("span", { children: script.sourceFunctionName || /* @__PURE__ */ jsx8("span", { style: { color: "#666" }, children: t.anonymous }) }),
|
|
2470
|
+
/* @__PURE__ */ jsx8("span", { style: { color: "#5ac8fa", marginLeft: "6px" }, children: script.invokerType }),
|
|
2471
|
+
/* @__PURE__ */ jsxs8("span", { style: { color: SEVERITY_COLOR.medium, marginLeft: "6px" }, children: [
|
|
2296
2472
|
script.duration.toFixed(1),
|
|
2297
2473
|
"ms"
|
|
2298
2474
|
] })
|
|
2299
2475
|
] }),
|
|
2300
|
-
script.sourceURL && /* @__PURE__ */
|
|
2476
|
+
script.sourceURL && /* @__PURE__ */ jsxs8("div", { style: { color: "#888", wordBreak: "break-all" }, children: [
|
|
2301
2477
|
script.sourceURL,
|
|
2302
2478
|
script.charPosition >= 0 ? `@${script.charPosition}` : ""
|
|
2303
2479
|
] }),
|
|
2304
|
-
script.invoker && /* @__PURE__ */
|
|
2480
|
+
script.invoker && /* @__PURE__ */ jsxs8("div", { style: { color: "#666" }, children: [
|
|
2305
2481
|
t.invoker,
|
|
2306
2482
|
": ",
|
|
2307
2483
|
script.invoker
|
|
2308
2484
|
] })
|
|
2309
2485
|
] }, i))
|
|
2310
2486
|
] }),
|
|
2311
|
-
s.scripts === void 0 && s.stack.length > 0 && /* @__PURE__ */
|
|
2487
|
+
s.scripts === void 0 && s.stack.length > 0 && /* @__PURE__ */ jsx8("div", { style: { marginTop: "4px" }, children: /* @__PURE__ */ jsx8(StackFrames, { raw: s.stack, resolveFrame, limit: 5 }) })
|
|
2312
2488
|
] });
|
|
2313
2489
|
}
|
|
2314
2490
|
var INTERACTION_PHASE_COLOR = { input: "#8e8e93", processing: "#5ac8fa", presentation: "#34c759" };
|
|
@@ -2323,33 +2499,33 @@ function InteractionDetail({
|
|
|
2323
2499
|
{ label: t.processingTime, ms: s.processing, color: INTERACTION_PHASE_COLOR.processing },
|
|
2324
2500
|
{ label: t.presentation, ms: s.presentation, color: INTERACTION_PHASE_COLOR.presentation }
|
|
2325
2501
|
];
|
|
2326
|
-
return /* @__PURE__ */
|
|
2327
|
-
/* @__PURE__ */
|
|
2328
|
-
/* @__PURE__ */
|
|
2329
|
-
/* @__PURE__ */
|
|
2502
|
+
return /* @__PURE__ */ jsxs8("div", { style: { paddingLeft: "12px" }, children: [
|
|
2503
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2504
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.interactionEvent }),
|
|
2505
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2330
2506
|
s.eventType,
|
|
2331
2507
|
s.target ? ` \xB7 ${s.target}` : ""
|
|
2332
2508
|
] })
|
|
2333
2509
|
] }),
|
|
2334
|
-
/* @__PURE__ */
|
|
2335
|
-
/* @__PURE__ */
|
|
2336
|
-
/* @__PURE__ */
|
|
2510
|
+
/* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2511
|
+
/* @__PURE__ */ jsx8("span", { style: detailLabelStyle, children: t.duration }),
|
|
2512
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2337
2513
|
s.duration.toFixed(0),
|
|
2338
2514
|
"ms"
|
|
2339
2515
|
] })
|
|
2340
2516
|
] }),
|
|
2341
|
-
/* @__PURE__ */
|
|
2342
|
-
phases.map((p, i) => /* @__PURE__ */
|
|
2343
|
-
/* @__PURE__ */
|
|
2344
|
-
/* @__PURE__ */
|
|
2517
|
+
/* @__PURE__ */ jsx8("div", { style: { display: "flex", height: "10px", borderRadius: "3px", overflow: "hidden", margin: "5px 0 7px", background: "#1a1a1a" }, children: phases.map((p, i) => /* @__PURE__ */ jsx8("div", { style: { width: `${p.ms / total * 100}%`, background: p.color } }, i)) }),
|
|
2518
|
+
phases.map((p, i) => /* @__PURE__ */ jsxs8("div", { style: detailRowStyle, children: [
|
|
2519
|
+
/* @__PURE__ */ jsxs8("span", { style: { ...detailLabelStyle, display: "inline-flex", alignItems: "center", gap: "5px" }, children: [
|
|
2520
|
+
/* @__PURE__ */ jsx8("span", { style: { width: "7px", height: "7px", borderRadius: "2px", background: p.color, flex: "0 0 7px" } }),
|
|
2345
2521
|
p.label
|
|
2346
2522
|
] }),
|
|
2347
|
-
/* @__PURE__ */
|
|
2523
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
2348
2524
|
p.ms.toFixed(0),
|
|
2349
2525
|
"ms"
|
|
2350
2526
|
] })
|
|
2351
2527
|
] }, i)),
|
|
2352
|
-
s.attribution !== void 0 && s.attribution.length > 0 && /* @__PURE__ */
|
|
2528
|
+
s.attribution !== void 0 && s.attribution.length > 0 && /* @__PURE__ */ jsx8(HotFunctions, { attribution: s.attribution, resolveFrame })
|
|
2353
2529
|
] });
|
|
2354
2530
|
}
|
|
2355
2531
|
function SignalDetail({
|
|
@@ -2358,24 +2534,24 @@ function SignalDetail({
|
|
|
2358
2534
|
}) {
|
|
2359
2535
|
switch (s.kind) {
|
|
2360
2536
|
case "forced-reflow":
|
|
2361
|
-
return /* @__PURE__ */
|
|
2537
|
+
return /* @__PURE__ */ jsx8(ForcedReflowDetail, { s, resolveFrame });
|
|
2362
2538
|
case "layout-shift":
|
|
2363
|
-
return /* @__PURE__ */
|
|
2539
|
+
return /* @__PURE__ */ jsx8(LayoutShiftDetail, { s });
|
|
2364
2540
|
case "long-task":
|
|
2365
|
-
return /* @__PURE__ */
|
|
2541
|
+
return /* @__PURE__ */ jsx8(LongTaskDetail, { s, resolveFrame });
|
|
2366
2542
|
case "interaction":
|
|
2367
|
-
return /* @__PURE__ */
|
|
2543
|
+
return /* @__PURE__ */ jsx8(InteractionDetail, { s, resolveFrame });
|
|
2368
2544
|
case "network":
|
|
2369
|
-
return /* @__PURE__ */
|
|
2545
|
+
return /* @__PURE__ */ jsx8(NetworkDetail, { s });
|
|
2370
2546
|
case "web-vital":
|
|
2371
|
-
return /* @__PURE__ */
|
|
2547
|
+
return /* @__PURE__ */ jsx8(WebVitalDetail, { s });
|
|
2372
2548
|
case "render":
|
|
2373
|
-
return /* @__PURE__ */
|
|
2549
|
+
return /* @__PURE__ */ jsx8(RenderDetail, { s });
|
|
2374
2550
|
}
|
|
2375
2551
|
}
|
|
2376
2552
|
function SeverityDot({ sev, title }) {
|
|
2377
2553
|
const { t } = useI18n();
|
|
2378
|
-
return /* @__PURE__ */
|
|
2554
|
+
return /* @__PURE__ */ jsx8(
|
|
2379
2555
|
"span",
|
|
2380
2556
|
{
|
|
2381
2557
|
"data-severity": sev,
|
|
@@ -2398,9 +2574,9 @@ function SummaryLine({ signal }) {
|
|
|
2398
2574
|
if (signal.kind === "web-vital") {
|
|
2399
2575
|
const rating = webVitalRating(signal.name, signal.value);
|
|
2400
2576
|
const unit = WEB_VITAL_UNIT2[signal.name];
|
|
2401
|
-
return /* @__PURE__ */
|
|
2402
|
-
/* @__PURE__ */
|
|
2403
|
-
/* @__PURE__ */
|
|
2577
|
+
return /* @__PURE__ */ jsxs8("span", { children: [
|
|
2578
|
+
/* @__PURE__ */ jsx8(RatingDot, { rating }),
|
|
2579
|
+
/* @__PURE__ */ jsx8("strong", { children: signal.name }),
|
|
2404
2580
|
": ",
|
|
2405
2581
|
signal.value.toFixed(2),
|
|
2406
2582
|
unit
|
|
@@ -2409,12 +2585,12 @@ function SummaryLine({ signal }) {
|
|
|
2409
2585
|
const sev = severityForSignal(signal);
|
|
2410
2586
|
const color = SEVERITY_COLOR[sev];
|
|
2411
2587
|
if (signal.kind === "long-task") {
|
|
2412
|
-
return /* @__PURE__ */
|
|
2588
|
+
return /* @__PURE__ */ jsxs8("span", { children: [
|
|
2413
2589
|
"@ ",
|
|
2414
2590
|
signal.at.toFixed(1),
|
|
2415
2591
|
"ms \u2022 duration",
|
|
2416
2592
|
" ",
|
|
2417
|
-
/* @__PURE__ */
|
|
2593
|
+
/* @__PURE__ */ jsxs8("span", { style: { color }, children: [
|
|
2418
2594
|
signal.duration.toFixed(1),
|
|
2419
2595
|
"ms"
|
|
2420
2596
|
] })
|
|
@@ -2422,59 +2598,59 @@ function SummaryLine({ signal }) {
|
|
|
2422
2598
|
}
|
|
2423
2599
|
if (signal.kind === "forced-reflow") {
|
|
2424
2600
|
const count = signal.count ?? 1;
|
|
2425
|
-
return /* @__PURE__ */
|
|
2601
|
+
return /* @__PURE__ */ jsxs8("span", { children: [
|
|
2426
2602
|
"@ ",
|
|
2427
2603
|
signal.at.toFixed(1),
|
|
2428
2604
|
"ms \u2022 duration",
|
|
2429
2605
|
" ",
|
|
2430
|
-
/* @__PURE__ */
|
|
2606
|
+
/* @__PURE__ */ jsxs8("span", { style: { color }, children: [
|
|
2431
2607
|
signal.duration.toFixed(2),
|
|
2432
2608
|
"ms"
|
|
2433
2609
|
] }),
|
|
2434
|
-
count > 1 && /* @__PURE__ */
|
|
2610
|
+
count > 1 && /* @__PURE__ */ jsxs8("span", { style: { color: "#888" }, children: [
|
|
2435
2611
|
" \u2022 ",
|
|
2436
2612
|
t.coalescedReads(count)
|
|
2437
2613
|
] })
|
|
2438
2614
|
] });
|
|
2439
2615
|
}
|
|
2440
2616
|
if (signal.kind === "layout-shift") {
|
|
2441
|
-
return /* @__PURE__ */
|
|
2617
|
+
return /* @__PURE__ */ jsxs8("span", { children: [
|
|
2442
2618
|
"@ ",
|
|
2443
2619
|
signal.at.toFixed(1),
|
|
2444
2620
|
"ms \u2022 value",
|
|
2445
2621
|
" ",
|
|
2446
|
-
/* @__PURE__ */
|
|
2622
|
+
/* @__PURE__ */ jsx8("span", { style: { color }, children: formatCls(signal.value) }),
|
|
2447
2623
|
" \u2022 ",
|
|
2448
2624
|
t.sourceCount(signal.sources.length)
|
|
2449
2625
|
] });
|
|
2450
2626
|
}
|
|
2451
2627
|
if (signal.kind === "render") {
|
|
2452
|
-
return /* @__PURE__ */
|
|
2453
|
-
/* @__PURE__ */
|
|
2454
|
-
/* @__PURE__ */
|
|
2455
|
-
/* @__PURE__ */
|
|
2628
|
+
return /* @__PURE__ */ jsxs8("span", { style: { display: "inline-flex", alignItems: "center", gap: "6px" }, children: [
|
|
2629
|
+
/* @__PURE__ */ jsx8("strong", { children: signal.component }),
|
|
2630
|
+
/* @__PURE__ */ jsx8(RenderReasonTag, { reason: signal.reason, changedProps: signal.changedProps }),
|
|
2631
|
+
/* @__PURE__ */ jsxs8("span", { style: { color }, children: [
|
|
2456
2632
|
signal.duration.toFixed(2),
|
|
2457
2633
|
"ms"
|
|
2458
2634
|
] }),
|
|
2459
|
-
signal.count && signal.count > 1 && /* @__PURE__ */
|
|
2635
|
+
signal.count && signal.count > 1 && /* @__PURE__ */ jsx8("span", { style: { color: "#888" }, children: t.cascadeComponents(signal.count) })
|
|
2460
2636
|
] });
|
|
2461
2637
|
}
|
|
2462
2638
|
if (signal.kind === "network") {
|
|
2463
2639
|
const url = signal.url.length > 60 ? signal.url.slice(0, 57) + "..." : signal.url;
|
|
2464
|
-
return /* @__PURE__ */
|
|
2640
|
+
return /* @__PURE__ */ jsxs8("span", { children: [
|
|
2465
2641
|
url,
|
|
2466
2642
|
" \u2022 ",
|
|
2467
|
-
/* @__PURE__ */
|
|
2643
|
+
/* @__PURE__ */ jsxs8("span", { style: { color }, children: [
|
|
2468
2644
|
signal.duration.toFixed(0),
|
|
2469
2645
|
"ms"
|
|
2470
2646
|
] }),
|
|
2471
|
-
signal.blocking && /* @__PURE__ */
|
|
2647
|
+
signal.blocking && /* @__PURE__ */ jsxs8("span", { style: { color: SEVERITY_COLOR.high }, children: [
|
|
2472
2648
|
" \u2022 ",
|
|
2473
2649
|
t.blocking
|
|
2474
2650
|
] })
|
|
2475
2651
|
] });
|
|
2476
2652
|
}
|
|
2477
|
-
return /* @__PURE__ */
|
|
2653
|
+
return /* @__PURE__ */ jsx8("span", { children: summary(signal) });
|
|
2478
2654
|
}
|
|
2479
2655
|
function tabSupportsGrouping(kind) {
|
|
2480
2656
|
return kind === "render" || kind === "forced-reflow";
|
|
@@ -2548,7 +2724,7 @@ function groupSignals(signals, mode, kind) {
|
|
|
2548
2724
|
function SignalRow({ signal, expanded, onToggleExpand, onHoverGeometry, resolveFrame }) {
|
|
2549
2725
|
const hasGeometry = signal.kind === "layout-shift" && signal.sources.length > 0;
|
|
2550
2726
|
const sev = severityForSignal(signal);
|
|
2551
|
-
return /* @__PURE__ */
|
|
2727
|
+
return /* @__PURE__ */ jsxs8(
|
|
2552
2728
|
"li",
|
|
2553
2729
|
{
|
|
2554
2730
|
"aria-expanded": expanded,
|
|
@@ -2570,22 +2746,22 @@ function SignalRow({ signal, expanded, onToggleExpand, onHoverGeometry, resolveF
|
|
|
2570
2746
|
userSelect: "none"
|
|
2571
2747
|
},
|
|
2572
2748
|
children: [
|
|
2573
|
-
/* @__PURE__ */
|
|
2574
|
-
/* @__PURE__ */
|
|
2575
|
-
/* @__PURE__ */
|
|
2576
|
-
/* @__PURE__ */
|
|
2749
|
+
/* @__PURE__ */ jsxs8("div", { style: { display: "flex", alignItems: "center", gap: "6px" }, children: [
|
|
2750
|
+
/* @__PURE__ */ jsx8("span", { style: { color: "#888", width: "10px" }, children: expanded ? "\u25BC" : "\u25B6" }),
|
|
2751
|
+
/* @__PURE__ */ jsx8(SeverityDot, { sev }),
|
|
2752
|
+
/* @__PURE__ */ jsx8(SummaryLine, { signal })
|
|
2577
2753
|
] }),
|
|
2578
|
-
expanded && /* @__PURE__ */
|
|
2754
|
+
expanded && /* @__PURE__ */ jsx8("div", { style: { marginTop: "6px", paddingTop: "6px", borderTop: "1px dashed #2a2a2a" }, children: /* @__PURE__ */ jsx8(SignalDetail, { s: signal, resolveFrame }) })
|
|
2579
2755
|
]
|
|
2580
2756
|
}
|
|
2581
2757
|
);
|
|
2582
2758
|
}
|
|
2583
2759
|
function CascadeMembers({ members }) {
|
|
2584
2760
|
const minDepth = members.reduce((m, s) => Math.min(m, s.depth), Infinity);
|
|
2585
|
-
return /* @__PURE__ */
|
|
2761
|
+
return /* @__PURE__ */ jsx8("div", { children: members.map((m, i) => {
|
|
2586
2762
|
const indent = (m.depth - minDepth) * 14;
|
|
2587
2763
|
const isCascade = m.reason === "parent";
|
|
2588
|
-
return /* @__PURE__ */
|
|
2764
|
+
return /* @__PURE__ */ jsxs8(
|
|
2589
2765
|
"div",
|
|
2590
2766
|
{
|
|
2591
2767
|
style: {
|
|
@@ -2596,10 +2772,10 @@ function CascadeMembers({ members }) {
|
|
|
2596
2772
|
gap: "6px"
|
|
2597
2773
|
},
|
|
2598
2774
|
children: [
|
|
2599
|
-
/* @__PURE__ */
|
|
2600
|
-
/* @__PURE__ */
|
|
2601
|
-
/* @__PURE__ */
|
|
2602
|
-
/* @__PURE__ */
|
|
2775
|
+
/* @__PURE__ */ jsx8("span", { style: { color: isCascade ? RENDER_REASON_COLOR.parent : "#555" }, children: m.depth > minDepth ? "\u2514" : "\u2022" }),
|
|
2776
|
+
/* @__PURE__ */ jsx8("strong", { children: m.component }),
|
|
2777
|
+
/* @__PURE__ */ jsx8(RenderReasonTag, { reason: m.reason, changedProps: m.changedProps }),
|
|
2778
|
+
/* @__PURE__ */ jsxs8("span", { style: { color: "#888" }, children: [
|
|
2603
2779
|
m.duration.toFixed(2),
|
|
2604
2780
|
"ms"
|
|
2605
2781
|
] })
|
|
@@ -2613,7 +2789,7 @@ function LanguageToggle() {
|
|
|
2613
2789
|
const { lang, setLang, t } = useI18n();
|
|
2614
2790
|
const langs = ["en", "ko"];
|
|
2615
2791
|
const labels = { en: "EN", ko: "\uD55C" };
|
|
2616
|
-
return /* @__PURE__ */
|
|
2792
|
+
return /* @__PURE__ */ jsx8(
|
|
2617
2793
|
"div",
|
|
2618
2794
|
{
|
|
2619
2795
|
role: "group",
|
|
@@ -2626,7 +2802,7 @@ function LanguageToggle() {
|
|
|
2626
2802
|
},
|
|
2627
2803
|
children: langs.map((l) => {
|
|
2628
2804
|
const active = lang === l;
|
|
2629
|
-
return /* @__PURE__ */
|
|
2805
|
+
return /* @__PURE__ */ jsx8(
|
|
2630
2806
|
"button",
|
|
2631
2807
|
{
|
|
2632
2808
|
type: "button",
|
|
@@ -2655,6 +2831,7 @@ function Panel(props) {
|
|
|
2655
2831
|
const { t } = useI18n();
|
|
2656
2832
|
const grouped = useMemo3(() => groupByKind(result.signals), [result.signals]);
|
|
2657
2833
|
const kindsPresent = KIND_ORDER.filter((k) => grouped[k].length > 0);
|
|
2834
|
+
const unsupported = useMemo3(() => unsupportedKinds(), []);
|
|
2658
2835
|
const hasTimelineSignals = result.signals.some((s) => s.kind !== "web-vital") || (result.heapSamples?.length ?? 0) > 0 || (result.frames?.length ?? 0) > 0;
|
|
2659
2836
|
const [activeTab, setActiveTab] = useState3(
|
|
2660
2837
|
kindsPresent[0] ?? "forced-reflow"
|
|
@@ -2720,12 +2897,12 @@ function Panel(props) {
|
|
|
2720
2897
|
flexDirection: "column",
|
|
2721
2898
|
overflow: "hidden"
|
|
2722
2899
|
};
|
|
2723
|
-
return /* @__PURE__ */
|
|
2724
|
-
/* @__PURE__ */
|
|
2725
|
-
/* @__PURE__ */
|
|
2726
|
-
/* @__PURE__ */
|
|
2727
|
-
/* @__PURE__ */
|
|
2728
|
-
/* @__PURE__ */
|
|
2900
|
+
return /* @__PURE__ */ jsxs8("div", { role: "region", "aria-label": t.panelRegion, style: panelStyle, children: [
|
|
2901
|
+
/* @__PURE__ */ jsxs8("header", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", marginBottom: "8px" }, children: [
|
|
2902
|
+
/* @__PURE__ */ jsx8("strong", { children: "react-perfscope" }),
|
|
2903
|
+
/* @__PURE__ */ jsxs8("div", { style: { display: "flex", gap: "4px", alignItems: "center" }, children: [
|
|
2904
|
+
/* @__PURE__ */ jsx8(LanguageToggle, {}),
|
|
2905
|
+
/* @__PURE__ */ jsx8(
|
|
2729
2906
|
"button",
|
|
2730
2907
|
{
|
|
2731
2908
|
type: "button",
|
|
@@ -2744,7 +2921,7 @@ function Panel(props) {
|
|
|
2744
2921
|
children: t.save
|
|
2745
2922
|
}
|
|
2746
2923
|
),
|
|
2747
|
-
/* @__PURE__ */
|
|
2924
|
+
/* @__PURE__ */ jsx8(
|
|
2748
2925
|
"button",
|
|
2749
2926
|
{
|
|
2750
2927
|
type: "button",
|
|
@@ -2756,9 +2933,24 @@ function Panel(props) {
|
|
|
2756
2933
|
)
|
|
2757
2934
|
] })
|
|
2758
2935
|
] }),
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2936
|
+
unsupported.length > 0 && /* @__PURE__ */ jsx8(
|
|
2937
|
+
"div",
|
|
2938
|
+
{
|
|
2939
|
+
style: {
|
|
2940
|
+
padding: "6px 8px",
|
|
2941
|
+
marginBottom: "8px",
|
|
2942
|
+
fontSize: "11px",
|
|
2943
|
+
color: "#888",
|
|
2944
|
+
background: "#141414",
|
|
2945
|
+
border: "1px solid #1f1f1f",
|
|
2946
|
+
borderRadius: "6px"
|
|
2947
|
+
},
|
|
2948
|
+
children: t.unsupportedInBrowser(unsupported.map((k) => t.kindLabel(k)).join(", "))
|
|
2949
|
+
}
|
|
2950
|
+
),
|
|
2951
|
+
kindsPresent.length === 0 && /* @__PURE__ */ jsx8("div", { style: { color: "#888" }, children: t.noSignals }),
|
|
2952
|
+
kindsPresent.length > 0 && /* @__PURE__ */ jsxs8(Fragment3, { children: [
|
|
2953
|
+
/* @__PURE__ */ jsx8(
|
|
2762
2954
|
SummaryHeader,
|
|
2763
2955
|
{
|
|
2764
2956
|
signals: result.signals,
|
|
@@ -2770,8 +2962,8 @@ function Panel(props) {
|
|
|
2770
2962
|
}
|
|
2771
2963
|
}
|
|
2772
2964
|
),
|
|
2773
|
-
/* @__PURE__ */
|
|
2774
|
-
hasTimelineSignals && /* @__PURE__ */
|
|
2965
|
+
/* @__PURE__ */ jsxs8("nav", { style: { display: "flex", gap: "4px", flexWrap: "wrap", marginBottom: "8px" }, children: [
|
|
2966
|
+
hasTimelineSignals && /* @__PURE__ */ jsx8(
|
|
2775
2967
|
"button",
|
|
2776
2968
|
{
|
|
2777
2969
|
type: "button",
|
|
@@ -2796,7 +2988,7 @@ function Panel(props) {
|
|
|
2796
2988
|
kindsPresent.map((kind) => {
|
|
2797
2989
|
const worst = worstSeverity(grouped[kind]);
|
|
2798
2990
|
const active = activeKind === kind;
|
|
2799
|
-
return /* @__PURE__ */
|
|
2991
|
+
return /* @__PURE__ */ jsxs8(
|
|
2800
2992
|
"button",
|
|
2801
2993
|
{
|
|
2802
2994
|
type: "button",
|
|
@@ -2819,7 +3011,7 @@ function Panel(props) {
|
|
|
2819
3011
|
gap: "6px"
|
|
2820
3012
|
},
|
|
2821
3013
|
children: [
|
|
2822
|
-
worst !== "low" && /* @__PURE__ */
|
|
3014
|
+
worst !== "low" && /* @__PURE__ */ jsx8(SeverityDot, { sev: worst, title: t.worstLabel(worst) }),
|
|
2823
3015
|
t.kindLabel(kind),
|
|
2824
3016
|
" ",
|
|
2825
3017
|
grouped[kind].length
|
|
@@ -2829,10 +3021,10 @@ function Panel(props) {
|
|
|
2829
3021
|
);
|
|
2830
3022
|
})
|
|
2831
3023
|
] }),
|
|
2832
|
-
activeKind && activeTab !== "timeline" && /* @__PURE__ */
|
|
2833
|
-
/* @__PURE__ */
|
|
3024
|
+
activeKind && activeTab !== "timeline" && /* @__PURE__ */ jsxs8("div", { style: { display: "flex", alignItems: "center", gap: "12px", marginBottom: "6px", fontSize: "11px", color: "#888", flexWrap: "wrap" }, children: [
|
|
3025
|
+
/* @__PURE__ */ jsxs8("label", { style: { display: "flex", alignItems: "center", gap: "6px" }, children: [
|
|
2834
3026
|
t.sort,
|
|
2835
|
-
/* @__PURE__ */
|
|
3027
|
+
/* @__PURE__ */ jsxs8(
|
|
2836
3028
|
"select",
|
|
2837
3029
|
{
|
|
2838
3030
|
"aria-label": t.sort,
|
|
@@ -2844,15 +3036,15 @@ function Panel(props) {
|
|
|
2844
3036
|
},
|
|
2845
3037
|
style: { background: "#1a1a1a", color: "#e6e6e6", border: "1px solid #2a2a2a", borderRadius: "4px", padding: "2px 6px", fontSize: "11px" },
|
|
2846
3038
|
children: [
|
|
2847
|
-
/* @__PURE__ */
|
|
2848
|
-
/* @__PURE__ */
|
|
3039
|
+
/* @__PURE__ */ jsx8("option", { value: "chronological", children: t.sortChronological }),
|
|
3040
|
+
/* @__PURE__ */ jsx8("option", { value: "severity", children: t.sortSeverity })
|
|
2849
3041
|
]
|
|
2850
3042
|
}
|
|
2851
3043
|
)
|
|
2852
3044
|
] }),
|
|
2853
|
-
tabSupportsGrouping(activeKind) && /* @__PURE__ */
|
|
3045
|
+
tabSupportsGrouping(activeKind) && /* @__PURE__ */ jsxs8("label", { style: { display: "flex", alignItems: "center", gap: "6px" }, children: [
|
|
2854
3046
|
t.groupBy,
|
|
2855
|
-
/* @__PURE__ */
|
|
3047
|
+
/* @__PURE__ */ jsxs8(
|
|
2856
3048
|
"select",
|
|
2857
3049
|
{
|
|
2858
3050
|
"aria-label": t.groupBy,
|
|
@@ -2864,15 +3056,15 @@ function Panel(props) {
|
|
|
2864
3056
|
},
|
|
2865
3057
|
style: { background: "#1a1a1a", color: "#e6e6e6", border: "1px solid #2a2a2a", borderRadius: "4px", padding: "2px 6px", fontSize: "11px" },
|
|
2866
3058
|
children: [
|
|
2867
|
-
/* @__PURE__ */
|
|
2868
|
-
activeKind === "render" && /* @__PURE__ */
|
|
2869
|
-
activeKind === "render" && /* @__PURE__ */
|
|
2870
|
-
activeKind === "forced-reflow" && /* @__PURE__ */
|
|
3059
|
+
/* @__PURE__ */ jsx8("option", { value: "chronological", children: t.groupChronological }),
|
|
3060
|
+
activeKind === "render" && /* @__PURE__ */ jsx8("option", { value: "commit", children: t.groupCommit }),
|
|
3061
|
+
activeKind === "render" && /* @__PURE__ */ jsx8("option", { value: "component", children: t.groupComponent }),
|
|
3062
|
+
activeKind === "forced-reflow" && /* @__PURE__ */ jsx8("option", { value: "source", children: t.groupSource })
|
|
2871
3063
|
]
|
|
2872
3064
|
}
|
|
2873
3065
|
)
|
|
2874
3066
|
] }),
|
|
2875
|
-
/* @__PURE__ */
|
|
3067
|
+
/* @__PURE__ */ jsx8(
|
|
2876
3068
|
"input",
|
|
2877
3069
|
{
|
|
2878
3070
|
type: "text",
|
|
@@ -2887,7 +3079,7 @@ function Panel(props) {
|
|
|
2887
3079
|
}
|
|
2888
3080
|
)
|
|
2889
3081
|
] }),
|
|
2890
|
-
activeTab === "timeline" && /* @__PURE__ */
|
|
3082
|
+
activeTab === "timeline" && /* @__PURE__ */ jsx8("div", { style: { flexGrow: 1, overflowY: "auto", paddingTop: "4px", paddingBottom: "24px" }, children: /* @__PURE__ */ jsx8(
|
|
2891
3083
|
Timeline,
|
|
2892
3084
|
{
|
|
2893
3085
|
signals: result.signals,
|
|
@@ -2903,7 +3095,7 @@ function Panel(props) {
|
|
|
2903
3095
|
}
|
|
2904
3096
|
}
|
|
2905
3097
|
) }),
|
|
2906
|
-
activeKind === "render" && activeTab !== "timeline" && /* @__PURE__ */
|
|
3098
|
+
activeKind === "render" && activeTab !== "timeline" && /* @__PURE__ */ jsx8(
|
|
2907
3099
|
RenderInsights,
|
|
2908
3100
|
{
|
|
2909
3101
|
signals: grouped.render.flatMap((s) => s.kind === "render" ? s.members ?? [s] : []).filter((s) => signalMatchesFilter(s, filterText.render ?? "")),
|
|
@@ -2913,7 +3105,8 @@ function Panel(props) {
|
|
|
2913
3105
|
}
|
|
2914
3106
|
}
|
|
2915
3107
|
),
|
|
2916
|
-
activeKind === "
|
|
3108
|
+
activeKind === "long-task" && activeTab !== "timeline" && /* @__PURE__ */ jsx8(LongTaskEpisode, { signals: result.signals }),
|
|
3109
|
+
activeKind === "layout-shift" && activeTab !== "timeline" && /* @__PURE__ */ jsx8(
|
|
2917
3110
|
"div",
|
|
2918
3111
|
{
|
|
2919
3112
|
style: {
|
|
@@ -2925,10 +3118,28 @@ function Panel(props) {
|
|
|
2925
3118
|
border: "1px solid #1f1f1f",
|
|
2926
3119
|
borderRadius: "6px"
|
|
2927
3120
|
},
|
|
2928
|
-
children: t.
|
|
3121
|
+
children: t.layoutShiftHint
|
|
2929
3122
|
}
|
|
2930
3123
|
),
|
|
2931
|
-
|
|
3124
|
+
activeKind === "interaction" && activeTab !== "timeline" && /* @__PURE__ */ jsxs8(Fragment3, { children: [
|
|
3125
|
+
/* @__PURE__ */ jsx8(InpEpisode, { signals: result.signals }),
|
|
3126
|
+
/* @__PURE__ */ jsx8(
|
|
3127
|
+
"div",
|
|
3128
|
+
{
|
|
3129
|
+
style: {
|
|
3130
|
+
padding: "6px 8px",
|
|
3131
|
+
marginBottom: "6px",
|
|
3132
|
+
fontSize: "11px",
|
|
3133
|
+
color: "#888",
|
|
3134
|
+
background: "#141414",
|
|
3135
|
+
border: "1px solid #1f1f1f",
|
|
3136
|
+
borderRadius: "6px"
|
|
3137
|
+
},
|
|
3138
|
+
children: t.interactionThresholdHint
|
|
3139
|
+
}
|
|
3140
|
+
)
|
|
3141
|
+
] }),
|
|
3142
|
+
/* @__PURE__ */ jsx8("ul", { style: { listStyle: "none", margin: 0, padding: 0, overflowY: "auto", flexGrow: 1, display: activeTab === "timeline" ? "none" : void 0 }, children: activeKind && (() => {
|
|
2932
3143
|
const filtered = grouped[activeKind].filter(
|
|
2933
3144
|
(s) => signalMatchesFilter(s, filterText[activeKind] ?? "")
|
|
2934
3145
|
);
|
|
@@ -2938,7 +3149,7 @@ function Panel(props) {
|
|
|
2938
3149
|
const currentMode = groupMode[activeKind] ?? "chronological";
|
|
2939
3150
|
if (currentMode === "chronological") {
|
|
2940
3151
|
const key2 = `${activeKind}-${gi}`;
|
|
2941
|
-
return /* @__PURE__ */
|
|
3152
|
+
return /* @__PURE__ */ jsx8(
|
|
2942
3153
|
SignalRow,
|
|
2943
3154
|
{
|
|
2944
3155
|
signal: g.signals[0],
|
|
@@ -2955,7 +3166,7 @@ function Panel(props) {
|
|
|
2955
3166
|
const isCascade = activeKind === "render" && currentMode === "commit";
|
|
2956
3167
|
const renderMembers = g.signals.filter((s) => s.kind === "render");
|
|
2957
3168
|
const unnecessary = isCascade ? renderMembers.filter((s) => s.reason === "parent").length : 0;
|
|
2958
|
-
return /* @__PURE__ */
|
|
3169
|
+
return /* @__PURE__ */ jsxs8(
|
|
2959
3170
|
"li",
|
|
2960
3171
|
{
|
|
2961
3172
|
"aria-expanded": isOpen,
|
|
@@ -2970,34 +3181,34 @@ function Panel(props) {
|
|
|
2970
3181
|
userSelect: "none"
|
|
2971
3182
|
},
|
|
2972
3183
|
children: [
|
|
2973
|
-
/* @__PURE__ */
|
|
2974
|
-
/* @__PURE__ */
|
|
2975
|
-
/* @__PURE__ */
|
|
2976
|
-
/* @__PURE__ */
|
|
3184
|
+
/* @__PURE__ */ jsxs8("div", { style: { display: "flex", alignItems: "center", gap: "6px", flexWrap: "wrap" }, children: [
|
|
3185
|
+
/* @__PURE__ */ jsx8("span", { style: { color: "#888", width: "10px" }, children: isOpen ? "\u25BC" : "\u25B6" }),
|
|
3186
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
3187
|
+
/* @__PURE__ */ jsx8("strong", { children: g.label }),
|
|
2977
3188
|
" \xD7",
|
|
2978
3189
|
g.count
|
|
2979
3190
|
] }),
|
|
2980
|
-
isCascade && unnecessary > 0 && /* @__PURE__ */
|
|
3191
|
+
isCascade && unnecessary > 0 && /* @__PURE__ */ jsxs8("span", { style: { color: RENDER_REASON_COLOR.parent, fontSize: "10px" }, children: [
|
|
2981
3192
|
"\u26A0 ",
|
|
2982
3193
|
t.unnecessaryRenders(unnecessary)
|
|
2983
3194
|
] })
|
|
2984
3195
|
] }),
|
|
2985
|
-
isOpen && /* @__PURE__ */
|
|
2986
|
-
g.signals.slice(0, 20).map((s, si) => /* @__PURE__ */
|
|
2987
|
-
g.signals.length > 20 && /* @__PURE__ */
|
|
3196
|
+
isOpen && /* @__PURE__ */ jsx8("div", { style: { marginTop: "6px", paddingTop: "6px", borderTop: "1px dashed #2a2a2a", paddingLeft: "8px" }, children: isCascade ? /* @__PURE__ */ jsx8(CascadeMembers, { members: renderMembers }) : /* @__PURE__ */ jsxs8(Fragment3, { children: [
|
|
3197
|
+
g.signals.slice(0, 20).map((s, si) => /* @__PURE__ */ jsx8("div", { style: { padding: "2px 0" }, children: /* @__PURE__ */ jsx8(SummaryLine, { signal: s }) }, si)),
|
|
3198
|
+
g.signals.length > 20 && /* @__PURE__ */ jsx8("div", { style: { color: "#888", marginTop: "4px" }, children: t.moreItems(g.signals.length - 20) })
|
|
2988
3199
|
] }) })
|
|
2989
3200
|
]
|
|
2990
3201
|
},
|
|
2991
3202
|
key
|
|
2992
3203
|
);
|
|
2993
3204
|
}) }),
|
|
2994
|
-
activeKind && activeTab !== "timeline" && (filterText[activeKind] ?? "").trim() !== "" && grouped[activeKind].length > 0 && grouped[activeKind].every((s) => !signalMatchesFilter(s, filterText[activeKind] ?? "")) && /* @__PURE__ */
|
|
3205
|
+
activeKind && activeTab !== "timeline" && (filterText[activeKind] ?? "").trim() !== "" && grouped[activeKind].length > 0 && grouped[activeKind].every((s) => !signalMatchesFilter(s, filterText[activeKind] ?? "")) && /* @__PURE__ */ jsx8("div", { style: { padding: "12px 8px", fontSize: "11px", color: "#888" }, children: t.filterNoMatches })
|
|
2995
3206
|
] })
|
|
2996
3207
|
] });
|
|
2997
3208
|
}
|
|
2998
3209
|
|
|
2999
3210
|
// src/app.tsx
|
|
3000
|
-
import { jsx as
|
|
3211
|
+
import { jsx as jsx9, jsxs as jsxs9 } from "preact/jsx-runtime";
|
|
3001
3212
|
function App(props) {
|
|
3002
3213
|
const { recorder, position = "bottom-right", resolveFrame, finalize } = props;
|
|
3003
3214
|
const [recording, setRecording] = useState4(false);
|
|
@@ -3043,8 +3254,8 @@ function App(props) {
|
|
|
3043
3254
|
function onClose() {
|
|
3044
3255
|
setResult(null);
|
|
3045
3256
|
}
|
|
3046
|
-
return /* @__PURE__ */
|
|
3047
|
-
result === null && /* @__PURE__ */
|
|
3257
|
+
return /* @__PURE__ */ jsxs9(I18nProvider, { children: [
|
|
3258
|
+
result === null && /* @__PURE__ */ jsx9(
|
|
3048
3259
|
Widget,
|
|
3049
3260
|
{
|
|
3050
3261
|
recording,
|
|
@@ -3053,16 +3264,16 @@ function App(props) {
|
|
|
3053
3264
|
position
|
|
3054
3265
|
}
|
|
3055
3266
|
),
|
|
3056
|
-
result !== null && /* @__PURE__ */
|
|
3267
|
+
result !== null && /* @__PURE__ */ jsx9(Panel, { result, position, onClose, resolveFrame })
|
|
3057
3268
|
] });
|
|
3058
3269
|
}
|
|
3059
3270
|
|
|
3060
3271
|
// src/mount.tsx
|
|
3061
|
-
import { jsx as
|
|
3272
|
+
import { jsx as jsx10 } from "preact/jsx-runtime";
|
|
3062
3273
|
function mount(opts) {
|
|
3063
3274
|
const { recorder, position = "bottom-right", host = document.body, resolveFrame, finalize } = opts;
|
|
3064
3275
|
return mountShadow(
|
|
3065
|
-
/* @__PURE__ */
|
|
3276
|
+
/* @__PURE__ */ jsx10(App, { recorder, position, resolveFrame, finalize }),
|
|
3066
3277
|
{ parent: host }
|
|
3067
3278
|
);
|
|
3068
3279
|
}
|