@react-perfscope/ui 0.5.0 → 0.7.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 +308 -249
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +308 -249
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -147,6 +147,9 @@ var en = {
|
|
|
147
147
|
heapUnsupported: "heap size unavailable (Chromium only)",
|
|
148
148
|
heapExtensionHint: "Heap size includes browser extensions injected into the page (e.g. React DevTools), so it can rise even while your app is idle. For app-only measurement, record in an incognito window or a profile with extensions disabled.",
|
|
149
149
|
heapTrendLabel: (cls) => cls === "leak-suspected" ? "leak suspected" : cls === "growing" ? "growing" : "stable",
|
|
150
|
+
leaksTitle: "Suspected leaks",
|
|
151
|
+
leakHint: "Components whose unmounted instances stayed in memory with a count that kept climbing. Shows which component leaks and how many instances \u2014 not what retains them (a heap snapshot, unavailable in-page, is needed for that).",
|
|
152
|
+
leakSuspect: (component, retained, unmounted) => `${component} \u2014 ${retained} retained of ${unmounted} unmounted, climbing`,
|
|
150
153
|
fpsLabel: "fps",
|
|
151
154
|
fpsUnsupported: "frame timing unavailable",
|
|
152
155
|
fpsBadge: (minFps, dropped) => `min ${minFps}fps \xB7 ${dropped} dropped`,
|
|
@@ -179,7 +182,8 @@ var en = {
|
|
|
179
182
|
processingTime: "processing",
|
|
180
183
|
presentation: "presentation",
|
|
181
184
|
interactionThresholdHint: "Only interactions \u226540ms are shown \u2014 INP surfaces the slow ones; fast clicks are omitted.",
|
|
182
|
-
layoutShiftHint: "Every layout shift, including ones triggered by your interactions. The CLS metric excludes input-driven shifts, so this is not a CLS score."
|
|
185
|
+
layoutShiftHint: "Every layout shift, including ones triggered by your interactions. The CLS metric excludes input-driven shifts, so this is not a CLS score.",
|
|
186
|
+
unsupportedInBrowser: (kinds) => `Not measurable in this browser (the API is missing, not that nothing happened): ${kinds}.`
|
|
183
187
|
};
|
|
184
188
|
var KIND_LABELS_KO = {
|
|
185
189
|
render: "\uB80C\uB354",
|
|
@@ -241,6 +245,9 @@ var ko = {
|
|
|
241
245
|
heapUnsupported: "\uD799 \uCE21\uC815 \uBBF8\uC9C0\uC6D0 (\uD06C\uB86C \uC804\uC6A9)",
|
|
242
246
|
heapExtensionHint: "\uD799 \uD06C\uAE30\uC5D4 \uD398\uC774\uC9C0\uC5D0 \uC8FC\uC785\uB41C \uBE0C\uB77C\uC6B0\uC800 \uD655\uC7A5(\uC608: React DevTools) \uBA54\uBAA8\uB9AC\uB3C4 \uD3EC\uD568\uB3FC\uC694. \uADF8\uB798\uC11C \uC571\uC774 idle\uC774\uC5B4\uB3C4 \uC62C\uB77C\uAC08 \uC218 \uC788\uC5B4\uC694. \uC571\uB9CC \uC815\uD655\uD788 \uC7AC\uB824\uBA74 \uC2DC\uD06C\uB9BF \uCC3D\uC774\uB098 \uD655\uC7A5\uC774 \uAEBC\uC9C4 \uD504\uB85C\uD544\uC5D0\uC11C \uB179\uD654\uD558\uC138\uC694.",
|
|
243
247
|
heapTrendLabel: (cls) => cls === "leak-suspected" ? "\uB204\uC218 \uC758\uC2EC" : cls === "growing" ? "\uC99D\uAC00 \uC911" : "\uC548\uC815",
|
|
248
|
+
leaksTitle: "\uB204\uC218 \uC758\uC2EC",
|
|
249
|
+
leakHint: "\uC5B8\uB9C8\uC6B4\uD2B8\uB410\uB294\uB370 \uBA54\uBAA8\uB9AC\uC5D0 \uB0A8\uACE0 \uADF8 \uC218\uAC00 \uACC4\uC18D \uB298\uC5B4\uB09C \uCEF4\uD3EC\uB10C\uD2B8\uC608\uC694. \uC5B4\uB5A4 \uCEF4\uD3EC\uB10C\uD2B8\uAC00 \uBA87 \uAC1C \uB204\uC218\uD558\uB294\uC9C0\uB294 \uBCF4\uC5EC\uC8FC\uC9C0\uB9CC, \uBB34\uC5C7\uC774 \uBD99\uC7A1\uACE0 \uC788\uB294\uC9C0\uB294(\uD799 \uC2A4\uB0C5\uC0F7\uC774 \uD544\uC694\uD55C\uB370 in-page\uC5D0\uC120 \uBD88\uAC00) \uC54C \uC218 \uC5C6\uC5B4\uC694.",
|
|
250
|
+
leakSuspect: (component, retained, unmounted) => `${component} \u2014 \uC5B8\uB9C8\uC6B4\uD2B8 ${unmounted}\uAC1C \uC911 ${retained}\uAC1C \uBCF4\uC720, \uC99D\uAC00 \uC911`,
|
|
244
251
|
fpsLabel: "fps",
|
|
245
252
|
fpsUnsupported: "\uD504\uB808\uC784 \uCE21\uC815 \uBBF8\uC9C0\uC6D0",
|
|
246
253
|
fpsBadge: (minFps, dropped) => `\uCD5C\uC800 ${minFps}fps \xB7 \uB4DC\uB78D ${dropped}`,
|
|
@@ -273,7 +280,8 @@ var ko = {
|
|
|
273
280
|
processingTime: "\uCC98\uB9AC",
|
|
274
281
|
presentation: "\uD654\uBA74 \uBC18\uC601",
|
|
275
282
|
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.",
|
|
276
|
-
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."
|
|
283
|
+
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.",
|
|
284
|
+
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}.`
|
|
277
285
|
};
|
|
278
286
|
var STRINGS = { en, ko };
|
|
279
287
|
function isLang(v) {
|
|
@@ -383,6 +391,7 @@ function Widget(props) {
|
|
|
383
391
|
|
|
384
392
|
// src/panel.tsx
|
|
385
393
|
var import_hooks3 = require("preact/hooks");
|
|
394
|
+
var import_core4 = require("@react-perfscope/core");
|
|
386
395
|
|
|
387
396
|
// src/overlay.ts
|
|
388
397
|
var OVERLAY_MARKER = "data-perfscope-overlay";
|
|
@@ -1795,8 +1804,39 @@ function TooltipContent({ s, startedAt }) {
|
|
|
1795
1804
|
}
|
|
1796
1805
|
}
|
|
1797
1806
|
|
|
1798
|
-
// src/
|
|
1807
|
+
// src/leaks.tsx
|
|
1799
1808
|
var import_jsx_runtime4 = require("preact/jsx-runtime");
|
|
1809
|
+
function LeakList({ suspects }) {
|
|
1810
|
+
const { t } = useI18n();
|
|
1811
|
+
if (!suspects || suspects.length === 0) return null;
|
|
1812
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { "data-leaks": "", style: { padding: "8px 10px", borderBottom: "1px solid #1c1c1c" }, children: [
|
|
1813
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1814
|
+
"div",
|
|
1815
|
+
{
|
|
1816
|
+
style: { display: "flex", alignItems: "center", gap: "6px", marginBottom: "6px" },
|
|
1817
|
+
children: [
|
|
1818
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { style: { color: "#ef4444", fontSize: "11px", fontWeight: 600 }, children: t.leaksTitle }),
|
|
1819
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { style: { color: "#666", fontSize: "10px" }, children: [
|
|
1820
|
+
"\xD7",
|
|
1821
|
+
suspects.length
|
|
1822
|
+
] })
|
|
1823
|
+
]
|
|
1824
|
+
}
|
|
1825
|
+
),
|
|
1826
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("ul", { style: { listStyle: "none", margin: 0, padding: 0 }, children: suspects.map((s) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1827
|
+
"li",
|
|
1828
|
+
{
|
|
1829
|
+
style: { color: "#e6e6e6", fontSize: "11px", padding: "2px 0", fontVariantNumeric: "tabular-nums" },
|
|
1830
|
+
children: t.leakSuspect(s.component, s.retained, s.unmounted)
|
|
1831
|
+
},
|
|
1832
|
+
s.component
|
|
1833
|
+
)) }),
|
|
1834
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { style: { color: "#666", fontSize: "10px", margin: "6px 0 0", lineHeight: 1.4 }, children: t.leakHint })
|
|
1835
|
+
] });
|
|
1836
|
+
}
|
|
1837
|
+
|
|
1838
|
+
// src/render-insights.tsx
|
|
1839
|
+
var import_jsx_runtime5 = require("preact/jsx-runtime");
|
|
1800
1840
|
function aggregate(signals) {
|
|
1801
1841
|
const byName = /* @__PURE__ */ new Map();
|
|
1802
1842
|
for (const s of signals) {
|
|
@@ -1827,7 +1867,7 @@ function RenderInsights({ signals, onSelect }) {
|
|
|
1827
1867
|
const top = rows.slice(0, TOP_N);
|
|
1828
1868
|
const max = top.length > 0 ? top[0].totalMs : 1;
|
|
1829
1869
|
const hiddenCount = rows.length - top.length;
|
|
1830
|
-
return /* @__PURE__ */ (0,
|
|
1870
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1831
1871
|
"div",
|
|
1832
1872
|
{
|
|
1833
1873
|
style: {
|
|
@@ -1838,12 +1878,12 @@ function RenderInsights({ signals, onSelect }) {
|
|
|
1838
1878
|
borderRadius: "8px"
|
|
1839
1879
|
},
|
|
1840
1880
|
children: [
|
|
1841
|
-
/* @__PURE__ */ (0,
|
|
1842
|
-
/* @__PURE__ */ (0,
|
|
1881
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: { fontSize: "10px", color: "#888", textTransform: "uppercase", letterSpacing: "0.5px", marginBottom: "6px" }, children: t.topRenderers }),
|
|
1882
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: [
|
|
1843
1883
|
top.map((a) => {
|
|
1844
1884
|
const widthPct = max > 0 ? Math.max(2, a.totalMs / max * 100) : 0;
|
|
1845
1885
|
const color = SEVERITY_COLOR[a.worstSeverity];
|
|
1846
|
-
return /* @__PURE__ */ (0,
|
|
1886
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1847
1887
|
"div",
|
|
1848
1888
|
{
|
|
1849
1889
|
"data-component": a.component,
|
|
@@ -1859,8 +1899,8 @@ function RenderInsights({ signals, onSelect }) {
|
|
|
1859
1899
|
},
|
|
1860
1900
|
title: t.rendererDetail(a.component, a.count, a.totalMs, a.maxMs),
|
|
1861
1901
|
children: [
|
|
1862
|
-
/* @__PURE__ */ (0,
|
|
1863
|
-
/* @__PURE__ */ (0,
|
|
1902
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("strong", { style: { flex: "0 0 30%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: a.component }),
|
|
1903
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: { flex: "1", position: "relative", height: "14px", background: "#1f1f1f", borderRadius: "2px" }, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1864
1904
|
"div",
|
|
1865
1905
|
{
|
|
1866
1906
|
style: {
|
|
@@ -1875,11 +1915,11 @@ function RenderInsights({ signals, onSelect }) {
|
|
|
1875
1915
|
}
|
|
1876
1916
|
}
|
|
1877
1917
|
) }),
|
|
1878
|
-
/* @__PURE__ */ (0,
|
|
1918
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { style: { flex: "0 0 auto", color, minWidth: "56px", textAlign: "right" }, children: [
|
|
1879
1919
|
a.totalMs.toFixed(1),
|
|
1880
1920
|
"ms"
|
|
1881
1921
|
] }),
|
|
1882
|
-
/* @__PURE__ */ (0,
|
|
1922
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { style: { flex: "0 0 auto", color: "#888", minWidth: "32px", textAlign: "right" }, children: [
|
|
1883
1923
|
"\xD7",
|
|
1884
1924
|
a.count
|
|
1885
1925
|
] })
|
|
@@ -1888,7 +1928,7 @@ function RenderInsights({ signals, onSelect }) {
|
|
|
1888
1928
|
a.component
|
|
1889
1929
|
);
|
|
1890
1930
|
}),
|
|
1891
|
-
hiddenCount > 0 && /* @__PURE__ */ (0,
|
|
1931
|
+
hiddenCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: { fontSize: "10px", color: "#666", marginTop: "2px" }, children: t.moreComponents(hiddenCount) })
|
|
1892
1932
|
] })
|
|
1893
1933
|
]
|
|
1894
1934
|
}
|
|
@@ -1899,7 +1939,7 @@ function RenderInsights({ signals, onSelect }) {
|
|
|
1899
1939
|
var import_core2 = require("@react-perfscope/core");
|
|
1900
1940
|
|
|
1901
1941
|
// src/episode-shared.tsx
|
|
1902
|
-
var
|
|
1942
|
+
var import_jsx_runtime6 = require("preact/jsx-runtime");
|
|
1903
1943
|
function memberLabel(m) {
|
|
1904
1944
|
const s = m.signal;
|
|
1905
1945
|
if (s.kind === "render") return `${s.component} (${s.reason})`;
|
|
@@ -1910,18 +1950,18 @@ function memberLabel(m) {
|
|
|
1910
1950
|
return `layout shift ${s.value.toFixed(3)}`;
|
|
1911
1951
|
}
|
|
1912
1952
|
function EpisodeMemberRow({ member }) {
|
|
1913
|
-
return /* @__PURE__ */ (0,
|
|
1953
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1914
1954
|
"div",
|
|
1915
1955
|
{
|
|
1916
1956
|
"data-member-kind": member.signal.kind,
|
|
1917
1957
|
style: { display: "flex", alignItems: "center", gap: "6px", padding: "1px 0", color: "#ccc" },
|
|
1918
1958
|
children: [
|
|
1919
|
-
/* @__PURE__ */ (0,
|
|
1920
|
-
member.causedBy && /* @__PURE__ */ (0,
|
|
1959
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: memberLabel(member) }),
|
|
1960
|
+
member.causedBy && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { style: { flex: "0 0 auto", color: "#888" }, children: [
|
|
1921
1961
|
"\u2190 ",
|
|
1922
1962
|
member.causedBy.component
|
|
1923
1963
|
] }),
|
|
1924
|
-
member.confidence === "caused" && /* @__PURE__ */ (0,
|
|
1964
|
+
member.confidence === "caused" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1925
1965
|
"span",
|
|
1926
1966
|
{
|
|
1927
1967
|
style: {
|
|
@@ -1940,12 +1980,12 @@ function EpisodeMemberRow({ member }) {
|
|
|
1940
1980
|
);
|
|
1941
1981
|
}
|
|
1942
1982
|
function EpisodeMemberList({ members }) {
|
|
1943
|
-
if (members.length === 0) return /* @__PURE__ */ (0,
|
|
1944
|
-
return /* @__PURE__ */ (0,
|
|
1983
|
+
if (members.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { style: { color: "#555" }, children: "\u2014" });
|
|
1984
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, { children: members.map((m, i) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(EpisodeMemberRow, { member: m }, i)) });
|
|
1945
1985
|
}
|
|
1946
1986
|
|
|
1947
1987
|
// src/inp-episode.tsx
|
|
1948
|
-
var
|
|
1988
|
+
var import_jsx_runtime7 = require("preact/jsx-runtime");
|
|
1949
1989
|
var PHASES = [
|
|
1950
1990
|
{ phase: "input-delay", labelKey: "inputDelay" },
|
|
1951
1991
|
{ phase: "processing", labelKey: "processingTime" },
|
|
@@ -1970,7 +2010,7 @@ function InpEpisode({ signals }) {
|
|
|
1970
2010
|
if (!episode || episode.anchor.kind !== "interaction") return null;
|
|
1971
2011
|
const a = episode.anchor;
|
|
1972
2012
|
const target = a.target ? ` on ${a.target}` : "";
|
|
1973
|
-
return /* @__PURE__ */ (0,
|
|
2013
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
1974
2014
|
"div",
|
|
1975
2015
|
{
|
|
1976
2016
|
"data-inp-episode": true,
|
|
@@ -1984,33 +2024,33 @@ function InpEpisode({ signals }) {
|
|
|
1984
2024
|
overflow: "hidden"
|
|
1985
2025
|
},
|
|
1986
2026
|
children: [
|
|
1987
|
-
/* @__PURE__ */ (0,
|
|
1988
|
-
/* @__PURE__ */ (0,
|
|
2027
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { style: { padding: "6px 8px", borderBottom: "1px solid #1f1f1f", color: "#ddd" }, children: [
|
|
2028
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("strong", { children: a.eventType }),
|
|
1989
2029
|
target,
|
|
1990
2030
|
" \u2014 ",
|
|
1991
|
-
/* @__PURE__ */ (0,
|
|
2031
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("strong", { children: [
|
|
1992
2032
|
Math.round(a.duration),
|
|
1993
2033
|
"ms"
|
|
1994
2034
|
] }),
|
|
1995
2035
|
" ",
|
|
1996
|
-
/* @__PURE__ */ (0,
|
|
2036
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { style: { color: "#888" }, children: "INP" })
|
|
1997
2037
|
] }),
|
|
1998
2038
|
PHASES.map(({ phase, labelKey }) => {
|
|
1999
2039
|
const members = episode.members.filter((m) => m.phase === phase);
|
|
2000
|
-
return /* @__PURE__ */ (0,
|
|
2040
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
2001
2041
|
"div",
|
|
2002
2042
|
{
|
|
2003
2043
|
"data-inp-phase": phase,
|
|
2004
2044
|
style: { display: "flex", gap: "8px", padding: "5px 8px", borderTop: "1px solid #1a1a1a" },
|
|
2005
2045
|
children: [
|
|
2006
|
-
/* @__PURE__ */ (0,
|
|
2046
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { style: { flex: "0 0 92px", color: "#aaa" }, children: [
|
|
2007
2047
|
t[labelKey],
|
|
2008
|
-
/* @__PURE__ */ (0,
|
|
2048
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { style: { color: "#666", fontSize: "10px" }, children: [
|
|
2009
2049
|
Math.round(phaseMs(episode, phase)),
|
|
2010
2050
|
"ms"
|
|
2011
2051
|
] })
|
|
2012
2052
|
] }),
|
|
2013
|
-
/* @__PURE__ */ (0,
|
|
2053
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: { flex: 1, minWidth: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(EpisodeMemberList, { members }) })
|
|
2014
2054
|
]
|
|
2015
2055
|
},
|
|
2016
2056
|
phase
|
|
@@ -2023,7 +2063,7 @@ function InpEpisode({ signals }) {
|
|
|
2023
2063
|
|
|
2024
2064
|
// src/long-task-episode.tsx
|
|
2025
2065
|
var import_core3 = require("@react-perfscope/core");
|
|
2026
|
-
var
|
|
2066
|
+
var import_jsx_runtime8 = require("preact/jsx-runtime");
|
|
2027
2067
|
function worstLongTaskEpisode(signals) {
|
|
2028
2068
|
let worst = null;
|
|
2029
2069
|
for (const ep of (0, import_core3.correlate)(signals)) {
|
|
@@ -2038,7 +2078,7 @@ function LongTaskEpisode({ signals }) {
|
|
|
2038
2078
|
if (!episode || episode.anchor.kind !== "long-task") return null;
|
|
2039
2079
|
if (episode.members.length === 0) return null;
|
|
2040
2080
|
const a = episode.anchor;
|
|
2041
|
-
return /* @__PURE__ */ (0,
|
|
2081
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2042
2082
|
"div",
|
|
2043
2083
|
{
|
|
2044
2084
|
"data-long-task-episode": true,
|
|
@@ -2052,15 +2092,15 @@ function LongTaskEpisode({ signals }) {
|
|
|
2052
2092
|
overflow: "hidden"
|
|
2053
2093
|
},
|
|
2054
2094
|
children: [
|
|
2055
|
-
/* @__PURE__ */ (0,
|
|
2056
|
-
/* @__PURE__ */ (0,
|
|
2095
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { padding: "6px 8px", borderBottom: "1px solid #1f1f1f", color: "#ddd" }, children: [
|
|
2096
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("strong", { children: t.kindLabel("long-task") }),
|
|
2057
2097
|
" \u2014 ",
|
|
2058
|
-
/* @__PURE__ */ (0,
|
|
2098
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("strong", { children: [
|
|
2059
2099
|
Math.round(a.duration),
|
|
2060
2100
|
"ms"
|
|
2061
2101
|
] })
|
|
2062
2102
|
] }),
|
|
2063
|
-
/* @__PURE__ */ (0,
|
|
2103
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { padding: "5px 8px" }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(EpisodeMemberList, { members: episode.members }) })
|
|
2064
2104
|
]
|
|
2065
2105
|
}
|
|
2066
2106
|
);
|
|
@@ -2106,7 +2146,7 @@ function signalMatchesFilter(signal, query) {
|
|
|
2106
2146
|
}
|
|
2107
2147
|
|
|
2108
2148
|
// src/panel.tsx
|
|
2109
|
-
var
|
|
2149
|
+
var import_jsx_runtime9 = require("preact/jsx-runtime");
|
|
2110
2150
|
var RENDER_REASON_COLOR = {
|
|
2111
2151
|
mount: "#5ac8fa",
|
|
2112
2152
|
state: "#34c759",
|
|
@@ -2130,7 +2170,7 @@ function RenderReasonTag({ reason, changedProps }) {
|
|
|
2130
2170
|
const color = RENDER_REASON_COLOR[reason];
|
|
2131
2171
|
const label = renderReasonLabel(t, reason);
|
|
2132
2172
|
const keys = reason === "props" && changedProps && changedProps.length > 0 ? `: ${changedProps.join(", ")}` : "";
|
|
2133
|
-
return /* @__PURE__ */ (0,
|
|
2173
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
2134
2174
|
"span",
|
|
2135
2175
|
{
|
|
2136
2176
|
style: {
|
|
@@ -2186,7 +2226,7 @@ var WEB_VITAL_UNIT2 = {
|
|
|
2186
2226
|
};
|
|
2187
2227
|
function RatingDot({ rating }) {
|
|
2188
2228
|
const { t } = useI18n();
|
|
2189
|
-
return /* @__PURE__ */ (0,
|
|
2229
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2190
2230
|
"span",
|
|
2191
2231
|
{
|
|
2192
2232
|
"data-rating": rating,
|
|
@@ -2244,18 +2284,18 @@ var monoStyle = {
|
|
|
2244
2284
|
};
|
|
2245
2285
|
function LayoutShiftDetail({ s }) {
|
|
2246
2286
|
const { t } = useI18n();
|
|
2247
|
-
return /* @__PURE__ */ (0,
|
|
2248
|
-
/* @__PURE__ */ (0,
|
|
2249
|
-
/* @__PURE__ */ (0,
|
|
2250
|
-
/* @__PURE__ */ (0,
|
|
2287
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { paddingLeft: "12px" }, children: [
|
|
2288
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2289
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.value }),
|
|
2290
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: s.value.toFixed(4) })
|
|
2251
2291
|
] }),
|
|
2252
|
-
s.sources.length === 0 ? /* @__PURE__ */ (0,
|
|
2253
|
-
/* @__PURE__ */ (0,
|
|
2292
|
+
s.sources.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { color: "#666" }, children: t.noSourceRects }) : s.sources.map((r, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { ...detailRowStyle, ...monoStyle }, children: [
|
|
2293
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color: "#888" }, children: [
|
|
2254
2294
|
t.rect,
|
|
2255
2295
|
" ",
|
|
2256
2296
|
i + 1
|
|
2257
2297
|
] }),
|
|
2258
|
-
/* @__PURE__ */ (0,
|
|
2298
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2259
2299
|
"x=",
|
|
2260
2300
|
r.x.toFixed(0),
|
|
2261
2301
|
" y=",
|
|
@@ -2270,25 +2310,25 @@ function LayoutShiftDetail({ s }) {
|
|
|
2270
2310
|
}
|
|
2271
2311
|
function NetworkDetail({ s }) {
|
|
2272
2312
|
const { t } = useI18n();
|
|
2273
|
-
return /* @__PURE__ */ (0,
|
|
2274
|
-
/* @__PURE__ */ (0,
|
|
2275
|
-
/* @__PURE__ */ (0,
|
|
2276
|
-
/* @__PURE__ */ (0,
|
|
2277
|
-
/* @__PURE__ */ (0,
|
|
2313
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { paddingLeft: "12px" }, children: [
|
|
2314
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { ...detailRowStyle, ...monoStyle, wordBreak: "break-all" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: s.url }) }),
|
|
2315
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2316
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.started }),
|
|
2317
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2278
2318
|
s.startedAt.toFixed(0),
|
|
2279
2319
|
"ms"
|
|
2280
2320
|
] })
|
|
2281
2321
|
] }),
|
|
2282
|
-
/* @__PURE__ */ (0,
|
|
2283
|
-
/* @__PURE__ */ (0,
|
|
2284
|
-
/* @__PURE__ */ (0,
|
|
2322
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2323
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.duration }),
|
|
2324
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2285
2325
|
s.duration.toFixed(0),
|
|
2286
2326
|
"ms"
|
|
2287
2327
|
] })
|
|
2288
2328
|
] }),
|
|
2289
|
-
/* @__PURE__ */ (0,
|
|
2290
|
-
/* @__PURE__ */ (0,
|
|
2291
|
-
/* @__PURE__ */ (0,
|
|
2329
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2330
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.size }),
|
|
2331
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2292
2332
|
(s.size / 1024).toFixed(2),
|
|
2293
2333
|
"KB (",
|
|
2294
2334
|
s.size,
|
|
@@ -2297,69 +2337,69 @@ function NetworkDetail({ s }) {
|
|
|
2297
2337
|
")"
|
|
2298
2338
|
] })
|
|
2299
2339
|
] }),
|
|
2300
|
-
/* @__PURE__ */ (0,
|
|
2301
|
-
/* @__PURE__ */ (0,
|
|
2302
|
-
/* @__PURE__ */ (0,
|
|
2340
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2341
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.renderBlocking }),
|
|
2342
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: s.blocking ? t.yes : t.no })
|
|
2303
2343
|
] })
|
|
2304
2344
|
] });
|
|
2305
2345
|
}
|
|
2306
2346
|
function WebVitalDetail({ s }) {
|
|
2307
2347
|
const { t } = useI18n();
|
|
2308
|
-
return /* @__PURE__ */ (0,
|
|
2309
|
-
/* @__PURE__ */ (0,
|
|
2310
|
-
/* @__PURE__ */ (0,
|
|
2311
|
-
/* @__PURE__ */ (0,
|
|
2348
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { paddingLeft: "12px" }, children: [
|
|
2349
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2350
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.metric }),
|
|
2351
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: s.name })
|
|
2312
2352
|
] }),
|
|
2313
|
-
/* @__PURE__ */ (0,
|
|
2314
|
-
/* @__PURE__ */ (0,
|
|
2315
|
-
/* @__PURE__ */ (0,
|
|
2353
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2354
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.value }),
|
|
2355
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: s.value.toFixed(2) })
|
|
2316
2356
|
] })
|
|
2317
2357
|
] });
|
|
2318
2358
|
}
|
|
2319
2359
|
function RenderDetail({ s }) {
|
|
2320
2360
|
const { t } = useI18n();
|
|
2321
2361
|
if (s.members && s.members.length > 0) {
|
|
2322
|
-
return /* @__PURE__ */ (0,
|
|
2323
|
-
/* @__PURE__ */ (0,
|
|
2324
|
-
/* @__PURE__ */ (0,
|
|
2325
|
-
/* @__PURE__ */ (0,
|
|
2362
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { paddingLeft: "12px" }, children: [
|
|
2363
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2364
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.duration }),
|
|
2365
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2326
2366
|
s.duration.toFixed(3),
|
|
2327
2367
|
"ms"
|
|
2328
2368
|
] })
|
|
2329
2369
|
] }),
|
|
2330
|
-
/* @__PURE__ */ (0,
|
|
2331
|
-
/* @__PURE__ */ (0,
|
|
2332
|
-
/* @__PURE__ */ (0,
|
|
2370
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2371
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.at }),
|
|
2372
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2333
2373
|
s.at.toFixed(2),
|
|
2334
2374
|
"ms"
|
|
2335
2375
|
] })
|
|
2336
2376
|
] }),
|
|
2337
|
-
/* @__PURE__ */ (0,
|
|
2377
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { marginTop: "6px" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CascadeMembers, { members: s.members }) })
|
|
2338
2378
|
] });
|
|
2339
2379
|
}
|
|
2340
|
-
return /* @__PURE__ */ (0,
|
|
2341
|
-
/* @__PURE__ */ (0,
|
|
2342
|
-
/* @__PURE__ */ (0,
|
|
2343
|
-
/* @__PURE__ */ (0,
|
|
2380
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { paddingLeft: "12px" }, children: [
|
|
2381
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2382
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.component }),
|
|
2383
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: s.component })
|
|
2344
2384
|
] }),
|
|
2345
|
-
/* @__PURE__ */ (0,
|
|
2346
|
-
/* @__PURE__ */ (0,
|
|
2347
|
-
/* @__PURE__ */ (0,
|
|
2385
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2386
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.reason }),
|
|
2387
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RenderReasonTag, { reason: s.reason, changedProps: s.changedProps })
|
|
2348
2388
|
] }),
|
|
2349
|
-
s.reason === "props" && s.changedProps && s.changedProps.length > 0 && /* @__PURE__ */ (0,
|
|
2350
|
-
/* @__PURE__ */ (0,
|
|
2351
|
-
/* @__PURE__ */ (0,
|
|
2389
|
+
s.reason === "props" && s.changedProps && s.changedProps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { ...detailRowStyle, ...monoStyle }, children: [
|
|
2390
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.changedProps }),
|
|
2391
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: s.changedProps.join(", ") })
|
|
2352
2392
|
] }),
|
|
2353
|
-
/* @__PURE__ */ (0,
|
|
2354
|
-
/* @__PURE__ */ (0,
|
|
2355
|
-
/* @__PURE__ */ (0,
|
|
2393
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2394
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.duration }),
|
|
2395
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2356
2396
|
s.duration.toFixed(3),
|
|
2357
2397
|
"ms"
|
|
2358
2398
|
] })
|
|
2359
2399
|
] }),
|
|
2360
|
-
/* @__PURE__ */ (0,
|
|
2361
|
-
/* @__PURE__ */ (0,
|
|
2362
|
-
/* @__PURE__ */ (0,
|
|
2400
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2401
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.at }),
|
|
2402
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2363
2403
|
s.at.toFixed(2),
|
|
2364
2404
|
"ms"
|
|
2365
2405
|
] })
|
|
@@ -2389,11 +2429,11 @@ function StackFrames({
|
|
|
2389
2429
|
cancelled = true;
|
|
2390
2430
|
};
|
|
2391
2431
|
}, [raw]);
|
|
2392
|
-
return /* @__PURE__ */ (0,
|
|
2393
|
-
resolving && /* @__PURE__ */ (0,
|
|
2394
|
-
frames.length === 0 ? /* @__PURE__ */ (0,
|
|
2395
|
-
f.fnName ? /* @__PURE__ */ (0,
|
|
2396
|
-
/* @__PURE__ */ (0,
|
|
2432
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
2433
|
+
resolving && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { color: "#666", fontSize: "10px", marginBottom: "4px" }, children: t.resolvingSourceMaps }),
|
|
2434
|
+
frames.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { color: "#666" }, children: t.noStack }) : frames.map((f, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { ...detailRowStyle, ...monoStyle }, children: [
|
|
2435
|
+
f.fnName ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: f.fnName }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { color: "#666" }, children: t.anonymous }),
|
|
2436
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color: "#888" }, children: [
|
|
2397
2437
|
f.file,
|
|
2398
2438
|
":",
|
|
2399
2439
|
f.line,
|
|
@@ -2407,7 +2447,7 @@ function ForcedReflowDetail({
|
|
|
2407
2447
|
s,
|
|
2408
2448
|
resolveFrame
|
|
2409
2449
|
}) {
|
|
2410
|
-
return /* @__PURE__ */ (0,
|
|
2450
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { paddingLeft: "12px" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(StackFrames, { raw: s.stack, resolveFrame }) });
|
|
2411
2451
|
}
|
|
2412
2452
|
function HotFunctions({
|
|
2413
2453
|
attribution,
|
|
@@ -2426,26 +2466,26 @@ function HotFunctions({
|
|
|
2426
2466
|
cancelled = true;
|
|
2427
2467
|
};
|
|
2428
2468
|
}, [attribution]);
|
|
2429
|
-
return /* @__PURE__ */ (0,
|
|
2430
|
-
/* @__PURE__ */ (0,
|
|
2431
|
-
/* @__PURE__ */ (0,
|
|
2469
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { marginTop: "6px" }, children: [
|
|
2470
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { ...detailLabelStyle, textTransform: "uppercase", fontSize: "10px", letterSpacing: "0.5px", marginBottom: "1px", color: "#ff9f0a" }, children: t.hotFunctions }),
|
|
2471
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { color: "#666", fontSize: "10px", marginBottom: "4px" }, children: t.hotFunctionsHint }),
|
|
2432
2472
|
attribution.map((a, i) => {
|
|
2433
2473
|
const f = frames[i] ?? a.frame;
|
|
2434
2474
|
const pct = Math.round(a.selfRatio * 100);
|
|
2435
|
-
return /* @__PURE__ */ (0,
|
|
2436
|
-
/* @__PURE__ */ (0,
|
|
2437
|
-
/* @__PURE__ */ (0,
|
|
2438
|
-
/* @__PURE__ */ (0,
|
|
2475
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { ...monoStyle, padding: "3px 0", borderTop: i > 0 ? "1px dashed #1f1f1f" : "none" }, children: [
|
|
2476
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { children: [
|
|
2477
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { color: "#ff9f0a", fontWeight: 600 }, children: f.fnName || /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { color: "#666" }, children: t.anonymous }) }),
|
|
2478
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color: SEVERITY_COLOR.medium, marginLeft: "6px" }, children: [
|
|
2439
2479
|
pct,
|
|
2440
2480
|
"%"
|
|
2441
2481
|
] }),
|
|
2442
|
-
/* @__PURE__ */ (0,
|
|
2482
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color: "#666", marginLeft: "6px" }, children: [
|
|
2443
2483
|
"(",
|
|
2444
2484
|
a.sampleCount,
|
|
2445
2485
|
")"
|
|
2446
2486
|
] })
|
|
2447
2487
|
] }),
|
|
2448
|
-
/* @__PURE__ */ (0,
|
|
2488
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { color: "#888", wordBreak: "break-all" }, children: [
|
|
2449
2489
|
f.file,
|
|
2450
2490
|
":",
|
|
2451
2491
|
f.line,
|
|
@@ -2462,59 +2502,59 @@ function LongTaskDetail({
|
|
|
2462
2502
|
}) {
|
|
2463
2503
|
const { t } = useI18n();
|
|
2464
2504
|
const scripts = s.scripts ? [...s.scripts].sort((a, b) => b.duration - a.duration) : [];
|
|
2465
|
-
return /* @__PURE__ */ (0,
|
|
2466
|
-
/* @__PURE__ */ (0,
|
|
2467
|
-
/* @__PURE__ */ (0,
|
|
2468
|
-
/* @__PURE__ */ (0,
|
|
2505
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { paddingLeft: "12px" }, children: [
|
|
2506
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2507
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.started }),
|
|
2508
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2469
2509
|
s.at.toFixed(2),
|
|
2470
2510
|
"ms"
|
|
2471
2511
|
] })
|
|
2472
2512
|
] }),
|
|
2473
|
-
/* @__PURE__ */ (0,
|
|
2474
|
-
/* @__PURE__ */ (0,
|
|
2475
|
-
/* @__PURE__ */ (0,
|
|
2513
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2514
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.ended }),
|
|
2515
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2476
2516
|
(s.at + s.duration).toFixed(2),
|
|
2477
2517
|
"ms"
|
|
2478
2518
|
] })
|
|
2479
2519
|
] }),
|
|
2480
|
-
/* @__PURE__ */ (0,
|
|
2481
|
-
/* @__PURE__ */ (0,
|
|
2482
|
-
/* @__PURE__ */ (0,
|
|
2520
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2521
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.duration }),
|
|
2522
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2483
2523
|
s.duration.toFixed(2),
|
|
2484
2524
|
"ms"
|
|
2485
2525
|
] })
|
|
2486
2526
|
] }),
|
|
2487
|
-
typeof s.blockingDuration === "number" && /* @__PURE__ */ (0,
|
|
2488
|
-
/* @__PURE__ */ (0,
|
|
2489
|
-
/* @__PURE__ */ (0,
|
|
2527
|
+
typeof s.blockingDuration === "number" && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2528
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.blockingTime }),
|
|
2529
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2490
2530
|
s.blockingDuration.toFixed(2),
|
|
2491
2531
|
"ms"
|
|
2492
2532
|
] })
|
|
2493
2533
|
] }),
|
|
2494
|
-
s.attribution !== void 0 && s.attribution.length > 0 && /* @__PURE__ */ (0,
|
|
2495
|
-
s.scripts !== void 0 && /* @__PURE__ */ (0,
|
|
2496
|
-
/* @__PURE__ */ (0,
|
|
2497
|
-
scripts.length === 0 ? /* @__PURE__ */ (0,
|
|
2498
|
-
/* @__PURE__ */ (0,
|
|
2499
|
-
/* @__PURE__ */ (0,
|
|
2500
|
-
/* @__PURE__ */ (0,
|
|
2501
|
-
/* @__PURE__ */ (0,
|
|
2534
|
+
s.attribution !== void 0 && s.attribution.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(HotFunctions, { attribution: s.attribution, resolveFrame }),
|
|
2535
|
+
s.scripts !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { marginTop: "6px" }, children: [
|
|
2536
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { ...detailLabelStyle, textTransform: "uppercase", fontSize: "10px", letterSpacing: "0.5px", marginBottom: "4px" }, children: t.scripts }),
|
|
2537
|
+
scripts.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { color: "#666" }, children: t.noScripts }) : scripts.map((script, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { ...monoStyle, padding: "3px 0", borderTop: i > 0 ? "1px dashed #1f1f1f" : "none" }, children: [
|
|
2538
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { children: [
|
|
2539
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: script.sourceFunctionName || /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { color: "#666" }, children: t.anonymous }) }),
|
|
2540
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { color: "#5ac8fa", marginLeft: "6px" }, children: script.invokerType }),
|
|
2541
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color: SEVERITY_COLOR.medium, marginLeft: "6px" }, children: [
|
|
2502
2542
|
script.duration.toFixed(1),
|
|
2503
2543
|
"ms"
|
|
2504
2544
|
] })
|
|
2505
2545
|
] }),
|
|
2506
|
-
script.sourceURL && /* @__PURE__ */ (0,
|
|
2546
|
+
script.sourceURL && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { color: "#888", wordBreak: "break-all" }, children: [
|
|
2507
2547
|
script.sourceURL,
|
|
2508
2548
|
script.charPosition >= 0 ? `@${script.charPosition}` : ""
|
|
2509
2549
|
] }),
|
|
2510
|
-
script.invoker && /* @__PURE__ */ (0,
|
|
2550
|
+
script.invoker && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { color: "#666" }, children: [
|
|
2511
2551
|
t.invoker,
|
|
2512
2552
|
": ",
|
|
2513
2553
|
script.invoker
|
|
2514
2554
|
] })
|
|
2515
2555
|
] }, i))
|
|
2516
2556
|
] }),
|
|
2517
|
-
s.scripts === void 0 && s.stack.length > 0 && /* @__PURE__ */ (0,
|
|
2557
|
+
s.scripts === void 0 && s.stack.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { marginTop: "4px" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(StackFrames, { raw: s.stack, resolveFrame, limit: 5 }) })
|
|
2518
2558
|
] });
|
|
2519
2559
|
}
|
|
2520
2560
|
var INTERACTION_PHASE_COLOR = { input: "#8e8e93", processing: "#5ac8fa", presentation: "#34c759" };
|
|
@@ -2529,33 +2569,33 @@ function InteractionDetail({
|
|
|
2529
2569
|
{ label: t.processingTime, ms: s.processing, color: INTERACTION_PHASE_COLOR.processing },
|
|
2530
2570
|
{ label: t.presentation, ms: s.presentation, color: INTERACTION_PHASE_COLOR.presentation }
|
|
2531
2571
|
];
|
|
2532
|
-
return /* @__PURE__ */ (0,
|
|
2533
|
-
/* @__PURE__ */ (0,
|
|
2534
|
-
/* @__PURE__ */ (0,
|
|
2535
|
-
/* @__PURE__ */ (0,
|
|
2572
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { paddingLeft: "12px" }, children: [
|
|
2573
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2574
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.interactionEvent }),
|
|
2575
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2536
2576
|
s.eventType,
|
|
2537
2577
|
s.target ? ` \xB7 ${s.target}` : ""
|
|
2538
2578
|
] })
|
|
2539
2579
|
] }),
|
|
2540
|
-
/* @__PURE__ */ (0,
|
|
2541
|
-
/* @__PURE__ */ (0,
|
|
2542
|
-
/* @__PURE__ */ (0,
|
|
2580
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2581
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: detailLabelStyle, children: t.duration }),
|
|
2582
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2543
2583
|
s.duration.toFixed(0),
|
|
2544
2584
|
"ms"
|
|
2545
2585
|
] })
|
|
2546
2586
|
] }),
|
|
2547
|
-
/* @__PURE__ */ (0,
|
|
2548
|
-
phases.map((p, i) => /* @__PURE__ */ (0,
|
|
2549
|
-
/* @__PURE__ */ (0,
|
|
2550
|
-
/* @__PURE__ */ (0,
|
|
2587
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { display: "flex", height: "10px", borderRadius: "3px", overflow: "hidden", margin: "5px 0 7px", background: "#1a1a1a" }, children: phases.map((p, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { width: `${p.ms / total * 100}%`, background: p.color } }, i)) }),
|
|
2588
|
+
phases.map((p, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: detailRowStyle, children: [
|
|
2589
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { ...detailLabelStyle, display: "inline-flex", alignItems: "center", gap: "5px" }, children: [
|
|
2590
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { width: "7px", height: "7px", borderRadius: "2px", background: p.color, flex: "0 0 7px" } }),
|
|
2551
2591
|
p.label
|
|
2552
2592
|
] }),
|
|
2553
|
-
/* @__PURE__ */ (0,
|
|
2593
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2554
2594
|
p.ms.toFixed(0),
|
|
2555
2595
|
"ms"
|
|
2556
2596
|
] })
|
|
2557
2597
|
] }, i)),
|
|
2558
|
-
s.attribution !== void 0 && s.attribution.length > 0 && /* @__PURE__ */ (0,
|
|
2598
|
+
s.attribution !== void 0 && s.attribution.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(HotFunctions, { attribution: s.attribution, resolveFrame })
|
|
2559
2599
|
] });
|
|
2560
2600
|
}
|
|
2561
2601
|
function SignalDetail({
|
|
@@ -2564,24 +2604,24 @@ function SignalDetail({
|
|
|
2564
2604
|
}) {
|
|
2565
2605
|
switch (s.kind) {
|
|
2566
2606
|
case "forced-reflow":
|
|
2567
|
-
return /* @__PURE__ */ (0,
|
|
2607
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ForcedReflowDetail, { s, resolveFrame });
|
|
2568
2608
|
case "layout-shift":
|
|
2569
|
-
return /* @__PURE__ */ (0,
|
|
2609
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(LayoutShiftDetail, { s });
|
|
2570
2610
|
case "long-task":
|
|
2571
|
-
return /* @__PURE__ */ (0,
|
|
2611
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(LongTaskDetail, { s, resolveFrame });
|
|
2572
2612
|
case "interaction":
|
|
2573
|
-
return /* @__PURE__ */ (0,
|
|
2613
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(InteractionDetail, { s, resolveFrame });
|
|
2574
2614
|
case "network":
|
|
2575
|
-
return /* @__PURE__ */ (0,
|
|
2615
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(NetworkDetail, { s });
|
|
2576
2616
|
case "web-vital":
|
|
2577
|
-
return /* @__PURE__ */ (0,
|
|
2617
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(WebVitalDetail, { s });
|
|
2578
2618
|
case "render":
|
|
2579
|
-
return /* @__PURE__ */ (0,
|
|
2619
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RenderDetail, { s });
|
|
2580
2620
|
}
|
|
2581
2621
|
}
|
|
2582
2622
|
function SeverityDot({ sev, title }) {
|
|
2583
2623
|
const { t } = useI18n();
|
|
2584
|
-
return /* @__PURE__ */ (0,
|
|
2624
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2585
2625
|
"span",
|
|
2586
2626
|
{
|
|
2587
2627
|
"data-severity": sev,
|
|
@@ -2604,9 +2644,9 @@ function SummaryLine({ signal }) {
|
|
|
2604
2644
|
if (signal.kind === "web-vital") {
|
|
2605
2645
|
const rating = webVitalRating(signal.name, signal.value);
|
|
2606
2646
|
const unit = WEB_VITAL_UNIT2[signal.name];
|
|
2607
|
-
return /* @__PURE__ */ (0,
|
|
2608
|
-
/* @__PURE__ */ (0,
|
|
2609
|
-
/* @__PURE__ */ (0,
|
|
2647
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2648
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RatingDot, { rating }),
|
|
2649
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("strong", { children: signal.name }),
|
|
2610
2650
|
": ",
|
|
2611
2651
|
signal.value.toFixed(2),
|
|
2612
2652
|
unit
|
|
@@ -2615,12 +2655,12 @@ function SummaryLine({ signal }) {
|
|
|
2615
2655
|
const sev = severityForSignal(signal);
|
|
2616
2656
|
const color = SEVERITY_COLOR[sev];
|
|
2617
2657
|
if (signal.kind === "long-task") {
|
|
2618
|
-
return /* @__PURE__ */ (0,
|
|
2658
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2619
2659
|
"@ ",
|
|
2620
2660
|
signal.at.toFixed(1),
|
|
2621
2661
|
"ms \u2022 duration",
|
|
2622
2662
|
" ",
|
|
2623
|
-
/* @__PURE__ */ (0,
|
|
2663
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color }, children: [
|
|
2624
2664
|
signal.duration.toFixed(1),
|
|
2625
2665
|
"ms"
|
|
2626
2666
|
] })
|
|
@@ -2628,59 +2668,59 @@ function SummaryLine({ signal }) {
|
|
|
2628
2668
|
}
|
|
2629
2669
|
if (signal.kind === "forced-reflow") {
|
|
2630
2670
|
const count = signal.count ?? 1;
|
|
2631
|
-
return /* @__PURE__ */ (0,
|
|
2671
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2632
2672
|
"@ ",
|
|
2633
2673
|
signal.at.toFixed(1),
|
|
2634
2674
|
"ms \u2022 duration",
|
|
2635
2675
|
" ",
|
|
2636
|
-
/* @__PURE__ */ (0,
|
|
2676
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color }, children: [
|
|
2637
2677
|
signal.duration.toFixed(2),
|
|
2638
2678
|
"ms"
|
|
2639
2679
|
] }),
|
|
2640
|
-
count > 1 && /* @__PURE__ */ (0,
|
|
2680
|
+
count > 1 && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color: "#888" }, children: [
|
|
2641
2681
|
" \u2022 ",
|
|
2642
2682
|
t.coalescedReads(count)
|
|
2643
2683
|
] })
|
|
2644
2684
|
] });
|
|
2645
2685
|
}
|
|
2646
2686
|
if (signal.kind === "layout-shift") {
|
|
2647
|
-
return /* @__PURE__ */ (0,
|
|
2687
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2648
2688
|
"@ ",
|
|
2649
2689
|
signal.at.toFixed(1),
|
|
2650
2690
|
"ms \u2022 value",
|
|
2651
2691
|
" ",
|
|
2652
|
-
/* @__PURE__ */ (0,
|
|
2692
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { color }, children: formatCls(signal.value) }),
|
|
2653
2693
|
" \u2022 ",
|
|
2654
2694
|
t.sourceCount(signal.sources.length)
|
|
2655
2695
|
] });
|
|
2656
2696
|
}
|
|
2657
2697
|
if (signal.kind === "render") {
|
|
2658
|
-
return /* @__PURE__ */ (0,
|
|
2659
|
-
/* @__PURE__ */ (0,
|
|
2660
|
-
/* @__PURE__ */ (0,
|
|
2661
|
-
/* @__PURE__ */ (0,
|
|
2698
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { display: "inline-flex", alignItems: "center", gap: "6px" }, children: [
|
|
2699
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("strong", { children: signal.component }),
|
|
2700
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RenderReasonTag, { reason: signal.reason, changedProps: signal.changedProps }),
|
|
2701
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color }, children: [
|
|
2662
2702
|
signal.duration.toFixed(2),
|
|
2663
2703
|
"ms"
|
|
2664
2704
|
] }),
|
|
2665
|
-
signal.count && signal.count > 1 && /* @__PURE__ */ (0,
|
|
2705
|
+
signal.count && signal.count > 1 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { color: "#888" }, children: t.cascadeComponents(signal.count) })
|
|
2666
2706
|
] });
|
|
2667
2707
|
}
|
|
2668
2708
|
if (signal.kind === "network") {
|
|
2669
2709
|
const url = signal.url.length > 60 ? signal.url.slice(0, 57) + "..." : signal.url;
|
|
2670
|
-
return /* @__PURE__ */ (0,
|
|
2710
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
2671
2711
|
url,
|
|
2672
2712
|
" \u2022 ",
|
|
2673
|
-
/* @__PURE__ */ (0,
|
|
2713
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color }, children: [
|
|
2674
2714
|
signal.duration.toFixed(0),
|
|
2675
2715
|
"ms"
|
|
2676
2716
|
] }),
|
|
2677
|
-
signal.blocking && /* @__PURE__ */ (0,
|
|
2717
|
+
signal.blocking && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color: SEVERITY_COLOR.high }, children: [
|
|
2678
2718
|
" \u2022 ",
|
|
2679
2719
|
t.blocking
|
|
2680
2720
|
] })
|
|
2681
2721
|
] });
|
|
2682
2722
|
}
|
|
2683
|
-
return /* @__PURE__ */ (0,
|
|
2723
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: summary(signal) });
|
|
2684
2724
|
}
|
|
2685
2725
|
function tabSupportsGrouping(kind) {
|
|
2686
2726
|
return kind === "render" || kind === "forced-reflow";
|
|
@@ -2754,7 +2794,7 @@ function groupSignals(signals, mode, kind) {
|
|
|
2754
2794
|
function SignalRow({ signal, expanded, onToggleExpand, onHoverGeometry, resolveFrame }) {
|
|
2755
2795
|
const hasGeometry = signal.kind === "layout-shift" && signal.sources.length > 0;
|
|
2756
2796
|
const sev = severityForSignal(signal);
|
|
2757
|
-
return /* @__PURE__ */ (0,
|
|
2797
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
2758
2798
|
"li",
|
|
2759
2799
|
{
|
|
2760
2800
|
"aria-expanded": expanded,
|
|
@@ -2776,22 +2816,22 @@ function SignalRow({ signal, expanded, onToggleExpand, onHoverGeometry, resolveF
|
|
|
2776
2816
|
userSelect: "none"
|
|
2777
2817
|
},
|
|
2778
2818
|
children: [
|
|
2779
|
-
/* @__PURE__ */ (0,
|
|
2780
|
-
/* @__PURE__ */ (0,
|
|
2781
|
-
/* @__PURE__ */ (0,
|
|
2782
|
-
/* @__PURE__ */ (0,
|
|
2819
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "6px" }, children: [
|
|
2820
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { color: "#888", width: "10px" }, children: expanded ? "\u25BC" : "\u25B6" }),
|
|
2821
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SeverityDot, { sev }),
|
|
2822
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SummaryLine, { signal })
|
|
2783
2823
|
] }),
|
|
2784
|
-
expanded && /* @__PURE__ */ (0,
|
|
2824
|
+
expanded && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { marginTop: "6px", paddingTop: "6px", borderTop: "1px dashed #2a2a2a" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SignalDetail, { s: signal, resolveFrame }) })
|
|
2785
2825
|
]
|
|
2786
2826
|
}
|
|
2787
2827
|
);
|
|
2788
2828
|
}
|
|
2789
2829
|
function CascadeMembers({ members }) {
|
|
2790
2830
|
const minDepth = members.reduce((m, s) => Math.min(m, s.depth), Infinity);
|
|
2791
|
-
return /* @__PURE__ */ (0,
|
|
2831
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { children: members.map((m, i) => {
|
|
2792
2832
|
const indent = (m.depth - minDepth) * 14;
|
|
2793
2833
|
const isCascade = m.reason === "parent";
|
|
2794
|
-
return /* @__PURE__ */ (0,
|
|
2834
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
2795
2835
|
"div",
|
|
2796
2836
|
{
|
|
2797
2837
|
style: {
|
|
@@ -2802,10 +2842,10 @@ function CascadeMembers({ members }) {
|
|
|
2802
2842
|
gap: "6px"
|
|
2803
2843
|
},
|
|
2804
2844
|
children: [
|
|
2805
|
-
/* @__PURE__ */ (0,
|
|
2806
|
-
/* @__PURE__ */ (0,
|
|
2807
|
-
/* @__PURE__ */ (0,
|
|
2808
|
-
/* @__PURE__ */ (0,
|
|
2845
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { color: isCascade ? RENDER_REASON_COLOR.parent : "#555" }, children: m.depth > minDepth ? "\u2514" : "\u2022" }),
|
|
2846
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("strong", { children: m.component }),
|
|
2847
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RenderReasonTag, { reason: m.reason, changedProps: m.changedProps }),
|
|
2848
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color: "#888" }, children: [
|
|
2809
2849
|
m.duration.toFixed(2),
|
|
2810
2850
|
"ms"
|
|
2811
2851
|
] })
|
|
@@ -2819,7 +2859,7 @@ function LanguageToggle() {
|
|
|
2819
2859
|
const { lang, setLang, t } = useI18n();
|
|
2820
2860
|
const langs = ["en", "ko"];
|
|
2821
2861
|
const labels = { en: "EN", ko: "\uD55C" };
|
|
2822
|
-
return /* @__PURE__ */ (0,
|
|
2862
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2823
2863
|
"div",
|
|
2824
2864
|
{
|
|
2825
2865
|
role: "group",
|
|
@@ -2832,7 +2872,7 @@ function LanguageToggle() {
|
|
|
2832
2872
|
},
|
|
2833
2873
|
children: langs.map((l) => {
|
|
2834
2874
|
const active = lang === l;
|
|
2835
|
-
return /* @__PURE__ */ (0,
|
|
2875
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2836
2876
|
"button",
|
|
2837
2877
|
{
|
|
2838
2878
|
type: "button",
|
|
@@ -2861,7 +2901,8 @@ function Panel(props) {
|
|
|
2861
2901
|
const { t } = useI18n();
|
|
2862
2902
|
const grouped = (0, import_hooks3.useMemo)(() => groupByKind(result.signals), [result.signals]);
|
|
2863
2903
|
const kindsPresent = KIND_ORDER.filter((k) => grouped[k].length > 0);
|
|
2864
|
-
const
|
|
2904
|
+
const unsupported = (0, import_hooks3.useMemo)(() => (0, import_core4.unsupportedKinds)(), []);
|
|
2905
|
+
const hasTimelineSignals = result.signals.some((s) => s.kind !== "web-vital") || (result.heapSamples?.length ?? 0) > 0 || (result.frames?.length ?? 0) > 0 || (result.leakSuspects?.length ?? 0) > 0;
|
|
2865
2906
|
const [activeTab, setActiveTab] = (0, import_hooks3.useState)(
|
|
2866
2907
|
kindsPresent[0] ?? "forced-reflow"
|
|
2867
2908
|
);
|
|
@@ -2926,12 +2967,12 @@ function Panel(props) {
|
|
|
2926
2967
|
flexDirection: "column",
|
|
2927
2968
|
overflow: "hidden"
|
|
2928
2969
|
};
|
|
2929
|
-
return /* @__PURE__ */ (0,
|
|
2930
|
-
/* @__PURE__ */ (0,
|
|
2931
|
-
/* @__PURE__ */ (0,
|
|
2932
|
-
/* @__PURE__ */ (0,
|
|
2933
|
-
/* @__PURE__ */ (0,
|
|
2934
|
-
/* @__PURE__ */ (0,
|
|
2970
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { role: "region", "aria-label": t.panelRegion, style: panelStyle, children: [
|
|
2971
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("header", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", marginBottom: "8px" }, children: [
|
|
2972
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("strong", { children: "react-perfscope" }),
|
|
2973
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { display: "flex", gap: "4px", alignItems: "center" }, children: [
|
|
2974
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(LanguageToggle, {}),
|
|
2975
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2935
2976
|
"button",
|
|
2936
2977
|
{
|
|
2937
2978
|
type: "button",
|
|
@@ -2950,7 +2991,7 @@ function Panel(props) {
|
|
|
2950
2991
|
children: t.save
|
|
2951
2992
|
}
|
|
2952
2993
|
),
|
|
2953
|
-
/* @__PURE__ */ (0,
|
|
2994
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2954
2995
|
"button",
|
|
2955
2996
|
{
|
|
2956
2997
|
type: "button",
|
|
@@ -2962,9 +3003,24 @@ function Panel(props) {
|
|
|
2962
3003
|
)
|
|
2963
3004
|
] })
|
|
2964
3005
|
] }),
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
3006
|
+
unsupported.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3007
|
+
"div",
|
|
3008
|
+
{
|
|
3009
|
+
style: {
|
|
3010
|
+
padding: "6px 8px",
|
|
3011
|
+
marginBottom: "8px",
|
|
3012
|
+
fontSize: "11px",
|
|
3013
|
+
color: "#888",
|
|
3014
|
+
background: "#141414",
|
|
3015
|
+
border: "1px solid #1f1f1f",
|
|
3016
|
+
borderRadius: "6px"
|
|
3017
|
+
},
|
|
3018
|
+
children: t.unsupportedInBrowser(unsupported.map((k) => t.kindLabel(k)).join(", "))
|
|
3019
|
+
}
|
|
3020
|
+
),
|
|
3021
|
+
kindsPresent.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { color: "#888" }, children: t.noSignals }),
|
|
3022
|
+
kindsPresent.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
3023
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2968
3024
|
SummaryHeader,
|
|
2969
3025
|
{
|
|
2970
3026
|
signals: result.signals,
|
|
@@ -2976,8 +3032,8 @@ function Panel(props) {
|
|
|
2976
3032
|
}
|
|
2977
3033
|
}
|
|
2978
3034
|
),
|
|
2979
|
-
/* @__PURE__ */ (0,
|
|
2980
|
-
hasTimelineSignals && /* @__PURE__ */ (0,
|
|
3035
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("nav", { style: { display: "flex", gap: "4px", flexWrap: "wrap", marginBottom: "8px" }, children: [
|
|
3036
|
+
hasTimelineSignals && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2981
3037
|
"button",
|
|
2982
3038
|
{
|
|
2983
3039
|
type: "button",
|
|
@@ -3002,7 +3058,7 @@ function Panel(props) {
|
|
|
3002
3058
|
kindsPresent.map((kind) => {
|
|
3003
3059
|
const worst = worstSeverity(grouped[kind]);
|
|
3004
3060
|
const active = activeKind === kind;
|
|
3005
|
-
return /* @__PURE__ */ (0,
|
|
3061
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
3006
3062
|
"button",
|
|
3007
3063
|
{
|
|
3008
3064
|
type: "button",
|
|
@@ -3025,7 +3081,7 @@ function Panel(props) {
|
|
|
3025
3081
|
gap: "6px"
|
|
3026
3082
|
},
|
|
3027
3083
|
children: [
|
|
3028
|
-
worst !== "low" && /* @__PURE__ */ (0,
|
|
3084
|
+
worst !== "low" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SeverityDot, { sev: worst, title: t.worstLabel(worst) }),
|
|
3029
3085
|
t.kindLabel(kind),
|
|
3030
3086
|
" ",
|
|
3031
3087
|
grouped[kind].length
|
|
@@ -3035,10 +3091,10 @@ function Panel(props) {
|
|
|
3035
3091
|
);
|
|
3036
3092
|
})
|
|
3037
3093
|
] }),
|
|
3038
|
-
activeKind && activeTab !== "timeline" && /* @__PURE__ */ (0,
|
|
3039
|
-
/* @__PURE__ */ (0,
|
|
3094
|
+
activeKind && activeTab !== "timeline" && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "12px", marginBottom: "6px", fontSize: "11px", color: "#888", flexWrap: "wrap" }, children: [
|
|
3095
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("label", { style: { display: "flex", alignItems: "center", gap: "6px" }, children: [
|
|
3040
3096
|
t.sort,
|
|
3041
|
-
/* @__PURE__ */ (0,
|
|
3097
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
3042
3098
|
"select",
|
|
3043
3099
|
{
|
|
3044
3100
|
"aria-label": t.sort,
|
|
@@ -3050,15 +3106,15 @@ function Panel(props) {
|
|
|
3050
3106
|
},
|
|
3051
3107
|
style: { background: "#1a1a1a", color: "#e6e6e6", border: "1px solid #2a2a2a", borderRadius: "4px", padding: "2px 6px", fontSize: "11px" },
|
|
3052
3108
|
children: [
|
|
3053
|
-
/* @__PURE__ */ (0,
|
|
3054
|
-
/* @__PURE__ */ (0,
|
|
3109
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("option", { value: "chronological", children: t.sortChronological }),
|
|
3110
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("option", { value: "severity", children: t.sortSeverity })
|
|
3055
3111
|
]
|
|
3056
3112
|
}
|
|
3057
3113
|
)
|
|
3058
3114
|
] }),
|
|
3059
|
-
tabSupportsGrouping(activeKind) && /* @__PURE__ */ (0,
|
|
3115
|
+
tabSupportsGrouping(activeKind) && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("label", { style: { display: "flex", alignItems: "center", gap: "6px" }, children: [
|
|
3060
3116
|
t.groupBy,
|
|
3061
|
-
/* @__PURE__ */ (0,
|
|
3117
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
3062
3118
|
"select",
|
|
3063
3119
|
{
|
|
3064
3120
|
"aria-label": t.groupBy,
|
|
@@ -3070,15 +3126,15 @@ function Panel(props) {
|
|
|
3070
3126
|
},
|
|
3071
3127
|
style: { background: "#1a1a1a", color: "#e6e6e6", border: "1px solid #2a2a2a", borderRadius: "4px", padding: "2px 6px", fontSize: "11px" },
|
|
3072
3128
|
children: [
|
|
3073
|
-
/* @__PURE__ */ (0,
|
|
3074
|
-
activeKind === "render" && /* @__PURE__ */ (0,
|
|
3075
|
-
activeKind === "render" && /* @__PURE__ */ (0,
|
|
3076
|
-
activeKind === "forced-reflow" && /* @__PURE__ */ (0,
|
|
3129
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("option", { value: "chronological", children: t.groupChronological }),
|
|
3130
|
+
activeKind === "render" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("option", { value: "commit", children: t.groupCommit }),
|
|
3131
|
+
activeKind === "render" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("option", { value: "component", children: t.groupComponent }),
|
|
3132
|
+
activeKind === "forced-reflow" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("option", { value: "source", children: t.groupSource })
|
|
3077
3133
|
]
|
|
3078
3134
|
}
|
|
3079
3135
|
)
|
|
3080
3136
|
] }),
|
|
3081
|
-
/* @__PURE__ */ (0,
|
|
3137
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3082
3138
|
"input",
|
|
3083
3139
|
{
|
|
3084
3140
|
type: "text",
|
|
@@ -3093,23 +3149,26 @@ function Panel(props) {
|
|
|
3093
3149
|
}
|
|
3094
3150
|
)
|
|
3095
3151
|
] }),
|
|
3096
|
-
activeTab === "timeline" && /* @__PURE__ */ (0,
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3152
|
+
activeTab === "timeline" && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { flexGrow: 1, overflowY: "auto", paddingTop: "4px", paddingBottom: "24px" }, children: [
|
|
3153
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(LeakList, { suspects: result.leakSuspects }),
|
|
3154
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3155
|
+
Timeline,
|
|
3156
|
+
{
|
|
3157
|
+
signals: result.signals,
|
|
3158
|
+
duration: result.duration,
|
|
3159
|
+
startedAt: result.startedAt,
|
|
3160
|
+
heapSamples: result.heapSamples,
|
|
3161
|
+
frames: result.frames,
|
|
3162
|
+
onJump: (s) => {
|
|
3163
|
+
setActiveTab(s.kind);
|
|
3164
|
+
const inOrder = grouped[s.kind];
|
|
3165
|
+
const idx = inOrder.indexOf(s);
|
|
3166
|
+
if (idx >= 0) setExpandedKey(`${s.kind}-${idx}`);
|
|
3167
|
+
}
|
|
3109
3168
|
}
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
activeKind === "render" && activeTab !== "timeline" && /* @__PURE__ */ (0,
|
|
3169
|
+
)
|
|
3170
|
+
] }),
|
|
3171
|
+
activeKind === "render" && activeTab !== "timeline" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3113
3172
|
RenderInsights,
|
|
3114
3173
|
{
|
|
3115
3174
|
signals: grouped.render.flatMap((s) => s.kind === "render" ? s.members ?? [s] : []).filter((s) => signalMatchesFilter(s, filterText.render ?? "")),
|
|
@@ -3119,8 +3178,8 @@ function Panel(props) {
|
|
|
3119
3178
|
}
|
|
3120
3179
|
}
|
|
3121
3180
|
),
|
|
3122
|
-
activeKind === "long-task" && activeTab !== "timeline" && /* @__PURE__ */ (0,
|
|
3123
|
-
activeKind === "layout-shift" && activeTab !== "timeline" && /* @__PURE__ */ (0,
|
|
3181
|
+
activeKind === "long-task" && activeTab !== "timeline" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(LongTaskEpisode, { signals: result.signals }),
|
|
3182
|
+
activeKind === "layout-shift" && activeTab !== "timeline" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3124
3183
|
"div",
|
|
3125
3184
|
{
|
|
3126
3185
|
style: {
|
|
@@ -3135,9 +3194,9 @@ function Panel(props) {
|
|
|
3135
3194
|
children: t.layoutShiftHint
|
|
3136
3195
|
}
|
|
3137
3196
|
),
|
|
3138
|
-
activeKind === "interaction" && activeTab !== "timeline" && /* @__PURE__ */ (0,
|
|
3139
|
-
/* @__PURE__ */ (0,
|
|
3140
|
-
/* @__PURE__ */ (0,
|
|
3197
|
+
activeKind === "interaction" && activeTab !== "timeline" && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
3198
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(InpEpisode, { signals: result.signals }),
|
|
3199
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3141
3200
|
"div",
|
|
3142
3201
|
{
|
|
3143
3202
|
style: {
|
|
@@ -3153,7 +3212,7 @@ function Panel(props) {
|
|
|
3153
3212
|
}
|
|
3154
3213
|
)
|
|
3155
3214
|
] }),
|
|
3156
|
-
/* @__PURE__ */ (0,
|
|
3215
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("ul", { style: { listStyle: "none", margin: 0, padding: 0, overflowY: "auto", flexGrow: 1, display: activeTab === "timeline" ? "none" : void 0 }, children: activeKind && (() => {
|
|
3157
3216
|
const filtered = grouped[activeKind].filter(
|
|
3158
3217
|
(s) => signalMatchesFilter(s, filterText[activeKind] ?? "")
|
|
3159
3218
|
);
|
|
@@ -3163,7 +3222,7 @@ function Panel(props) {
|
|
|
3163
3222
|
const currentMode = groupMode[activeKind] ?? "chronological";
|
|
3164
3223
|
if (currentMode === "chronological") {
|
|
3165
3224
|
const key2 = `${activeKind}-${gi}`;
|
|
3166
|
-
return /* @__PURE__ */ (0,
|
|
3225
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3167
3226
|
SignalRow,
|
|
3168
3227
|
{
|
|
3169
3228
|
signal: g.signals[0],
|
|
@@ -3180,7 +3239,7 @@ function Panel(props) {
|
|
|
3180
3239
|
const isCascade = activeKind === "render" && currentMode === "commit";
|
|
3181
3240
|
const renderMembers = g.signals.filter((s) => s.kind === "render");
|
|
3182
3241
|
const unnecessary = isCascade ? renderMembers.filter((s) => s.reason === "parent").length : 0;
|
|
3183
|
-
return /* @__PURE__ */ (0,
|
|
3242
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
3184
3243
|
"li",
|
|
3185
3244
|
{
|
|
3186
3245
|
"aria-expanded": isOpen,
|
|
@@ -3195,34 +3254,34 @@ function Panel(props) {
|
|
|
3195
3254
|
userSelect: "none"
|
|
3196
3255
|
},
|
|
3197
3256
|
children: [
|
|
3198
|
-
/* @__PURE__ */ (0,
|
|
3199
|
-
/* @__PURE__ */ (0,
|
|
3200
|
-
/* @__PURE__ */ (0,
|
|
3201
|
-
/* @__PURE__ */ (0,
|
|
3257
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "6px", flexWrap: "wrap" }, children: [
|
|
3258
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { color: "#888", width: "10px" }, children: isOpen ? "\u25BC" : "\u25B6" }),
|
|
3259
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
3260
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("strong", { children: g.label }),
|
|
3202
3261
|
" \xD7",
|
|
3203
3262
|
g.count
|
|
3204
3263
|
] }),
|
|
3205
|
-
isCascade && unnecessary > 0 && /* @__PURE__ */ (0,
|
|
3264
|
+
isCascade && unnecessary > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { style: { color: RENDER_REASON_COLOR.parent, fontSize: "10px" }, children: [
|
|
3206
3265
|
"\u26A0 ",
|
|
3207
3266
|
t.unnecessaryRenders(unnecessary)
|
|
3208
3267
|
] })
|
|
3209
3268
|
] }),
|
|
3210
|
-
isOpen && /* @__PURE__ */ (0,
|
|
3211
|
-
g.signals.slice(0, 20).map((s, si) => /* @__PURE__ */ (0,
|
|
3212
|
-
g.signals.length > 20 && /* @__PURE__ */ (0,
|
|
3269
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { marginTop: "6px", paddingTop: "6px", borderTop: "1px dashed #2a2a2a", paddingLeft: "8px" }, children: isCascade ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CascadeMembers, { members: renderMembers }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
3270
|
+
g.signals.slice(0, 20).map((s, si) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { padding: "2px 0" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SummaryLine, { signal: s }) }, si)),
|
|
3271
|
+
g.signals.length > 20 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { color: "#888", marginTop: "4px" }, children: t.moreItems(g.signals.length - 20) })
|
|
3213
3272
|
] }) })
|
|
3214
3273
|
]
|
|
3215
3274
|
},
|
|
3216
3275
|
key
|
|
3217
3276
|
);
|
|
3218
3277
|
}) }),
|
|
3219
|
-
activeKind && activeTab !== "timeline" && (filterText[activeKind] ?? "").trim() !== "" && grouped[activeKind].length > 0 && grouped[activeKind].every((s) => !signalMatchesFilter(s, filterText[activeKind] ?? "")) && /* @__PURE__ */ (0,
|
|
3278
|
+
activeKind && activeTab !== "timeline" && (filterText[activeKind] ?? "").trim() !== "" && grouped[activeKind].length > 0 && grouped[activeKind].every((s) => !signalMatchesFilter(s, filterText[activeKind] ?? "")) && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { padding: "12px 8px", fontSize: "11px", color: "#888" }, children: t.filterNoMatches })
|
|
3220
3279
|
] })
|
|
3221
3280
|
] });
|
|
3222
3281
|
}
|
|
3223
3282
|
|
|
3224
3283
|
// src/app.tsx
|
|
3225
|
-
var
|
|
3284
|
+
var import_jsx_runtime10 = require("preact/jsx-runtime");
|
|
3226
3285
|
function App(props) {
|
|
3227
3286
|
const { recorder, position = "bottom-right", resolveFrame, finalize } = props;
|
|
3228
3287
|
const [recording, setRecording] = (0, import_hooks4.useState)(false);
|
|
@@ -3268,8 +3327,8 @@ function App(props) {
|
|
|
3268
3327
|
function onClose() {
|
|
3269
3328
|
setResult(null);
|
|
3270
3329
|
}
|
|
3271
|
-
return /* @__PURE__ */ (0,
|
|
3272
|
-
result === null && /* @__PURE__ */ (0,
|
|
3330
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(I18nProvider, { children: [
|
|
3331
|
+
result === null && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
3273
3332
|
Widget,
|
|
3274
3333
|
{
|
|
3275
3334
|
recording,
|
|
@@ -3278,16 +3337,16 @@ function App(props) {
|
|
|
3278
3337
|
position
|
|
3279
3338
|
}
|
|
3280
3339
|
),
|
|
3281
|
-
result !== null && /* @__PURE__ */ (0,
|
|
3340
|
+
result !== null && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Panel, { result, position, onClose, resolveFrame })
|
|
3282
3341
|
] });
|
|
3283
3342
|
}
|
|
3284
3343
|
|
|
3285
3344
|
// src/mount.tsx
|
|
3286
|
-
var
|
|
3345
|
+
var import_jsx_runtime11 = require("preact/jsx-runtime");
|
|
3287
3346
|
function mount(opts) {
|
|
3288
3347
|
const { recorder, position = "bottom-right", host = document.body, resolveFrame, finalize } = opts;
|
|
3289
3348
|
return mountShadow(
|
|
3290
|
-
/* @__PURE__ */ (0,
|
|
3349
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(App, { recorder, position, resolveFrame, finalize }),
|
|
3291
3350
|
{ parent: host }
|
|
3292
3351
|
);
|
|
3293
3352
|
}
|