linear-grab 0.26.0 → 0.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/linear-grab-bridge.mjs +859 -26
- package/bin/render-scan.global.js +6 -0
- package/bin/slop-scan.global.js +3 -3
- package/dist/index.global.js +16 -16
- package/dist/linear-grab.js +662 -611
- package/dist/render-scan.global.js +6 -0
- package/dist/slop-scan.global.js +3 -3
- package/package.json +2 -2
package/dist/linear-grab.js
CHANGED
|
@@ -27423,7 +27423,7 @@ function RA(e) {
|
|
|
27423
27423
|
if (t) return t;
|
|
27424
27424
|
if (!IA) {
|
|
27425
27425
|
let e = document.createElement("iframe");
|
|
27426
|
-
if (e.style.cssText = "position:absolute;width:0;height:0;border:0;visibility:hidden", document.body.appendChild(e), IA = e.contentDocument, !IA) return {};
|
|
27426
|
+
if (e.setAttribute("data-linear-grab", "true"), e.style.cssText = "position:absolute;width:0;height:0;border:0;visibility:hidden", document.body.appendChild(e), IA = e.contentDocument, !IA) return {};
|
|
27427
27427
|
}
|
|
27428
27428
|
let n = IA.createElement(e);
|
|
27429
27429
|
IA.body.appendChild(n);
|
|
@@ -41879,7 +41879,7 @@ async function $Z(e) {
|
|
|
41879
41879
|
function eQ() {
|
|
41880
41880
|
return new Promise((e) => {
|
|
41881
41881
|
let t = document.createElement("div");
|
|
41882
|
-
t.style.cssText = "position:fixed;inset:0;z-index:2147483647;cursor:crosshair;user-select:none;";
|
|
41882
|
+
t.setAttribute("data-linear-grab", "true"), t.style.cssText = "position:fixed;inset:0;z-index:2147483647;cursor:crosshair;user-select:none;";
|
|
41883
41883
|
let n = document.createElement("div");
|
|
41884
41884
|
n.style.cssText = "position:fixed;display:none;border:2px solid #5e6ad2;border-radius:4px;box-shadow:0 0 0 100000px rgba(0,0,0,0.35);pointer-events:none;", t.appendChild(n), document.body.appendChild(t);
|
|
41885
41885
|
let r = 0, i = 0, a = !1, o = (e) => ({
|
|
@@ -45675,7 +45675,7 @@ var V0 = [
|
|
|
45675
45675
|
}, W0 = null;
|
|
45676
45676
|
function G0(e) {
|
|
45677
45677
|
try {
|
|
45678
|
-
return W0 || (W0 = document.createElement("span"), W0.style.display = "none", document.body.appendChild(W0)), W0.style.color = "", W0.style.color = e, W0.style.color ? getComputedStyle(W0).color : null;
|
|
45678
|
+
return W0 || (W0 = document.createElement("span"), W0.setAttribute("data-linear-grab", "true"), W0.style.display = "none", document.body.appendChild(W0)), W0.style.color = "", W0.style.color = e, W0.style.color ? getComputedStyle(W0).color : null;
|
|
45679
45679
|
} catch {
|
|
45680
45680
|
return null;
|
|
45681
45681
|
}
|
|
@@ -45942,7 +45942,7 @@ function l2(e) {
|
|
|
45942
45942
|
function u2() {
|
|
45943
45943
|
return new Promise((e) => {
|
|
45944
45944
|
let t = document.createElement("div");
|
|
45945
|
-
t.style.cssText = "position:fixed;z-index:2147483647;pointer-events:none;border:1.5px solid #5e6ad2;border-radius:4px;background:rgba(94,106,210,0.08);display:none;", document.body.appendChild(t);
|
|
45945
|
+
t.setAttribute("data-linear-grab", "true"), t.style.cssText = "position:fixed;z-index:2147483647;pointer-events:none;border:1.5px solid #5e6ad2;border-radius:4px;background:rgba(94,106,210,0.08);display:none;", document.body.appendChild(t);
|
|
45946
45946
|
let n = null, r = (e) => {
|
|
45947
45947
|
let t = document.elementFromPoint(e.clientX, e.clientY);
|
|
45948
45948
|
return !t || t.closest("#linear-grab-root") ? null : t;
|
|
@@ -46559,7 +46559,7 @@ var r4 = (e) => getComputedStyle(e), i4 = {
|
|
|
46559
46559
|
let t = e.root, r = t.documentElement;
|
|
46560
46560
|
if (r && t.body) {
|
|
46561
46561
|
let i = e.css(r), a = t.createElement("span");
|
|
46562
|
-
a.style.display = "none", t.body.appendChild(a);
|
|
46562
|
+
a.setAttribute("data-linear-grab", "true"), a.style.display = "none", t.body.appendChild(a);
|
|
46563
46563
|
for (let e = 0; e < i.length; e++) {
|
|
46564
46564
|
let t = i[e];
|
|
46565
46565
|
if (!t.startsWith("--")) continue;
|
|
@@ -46595,7 +46595,7 @@ var r4 = (e) => getComputedStyle(e), i4 = {
|
|
|
46595
46595
|
for (let n of e.els) {
|
|
46596
46596
|
if (!n.closest("[data-editor-surface]") && !/\/editor\//.test(typeof location < "u" ? location.pathname : "")) continue;
|
|
46597
46597
|
let r = e.css(n).boxShadow;
|
|
46598
|
-
!r || r === "none" ||
|
|
46598
|
+
!r || r === "none" || j4(r) || M4(r) || t.push(W2(this, n, `box-shadow: ${r}`));
|
|
46599
46599
|
}
|
|
46600
46600
|
return t;
|
|
46601
46601
|
}
|
|
@@ -46851,9 +46851,25 @@ function k4(e, t, n) {
|
|
|
46851
46851
|
return r < 40 ? !1 : r - Math.min(e, t, n) > 60;
|
|
46852
46852
|
}
|
|
46853
46853
|
function A4(e) {
|
|
46854
|
+
let t = [], n = 0, r = 0;
|
|
46855
|
+
for (let i = 0; i < e.length; i++) {
|
|
46856
|
+
let a = e[i];
|
|
46857
|
+
a === "(" ? n++ : a === ")" ? n-- : a === "," && n === 0 && (t.push(e.slice(r, i).trim()), r = i + 1);
|
|
46858
|
+
}
|
|
46859
|
+
return t.push(e.slice(r).trim()), t.filter(Boolean);
|
|
46860
|
+
}
|
|
46861
|
+
function j4(e) {
|
|
46862
|
+
return A4(e).every((e) => {
|
|
46863
|
+
if (/\btransparent\b/.test(e) || /(?:rgba?|hsla?|oklch|oklab|lab|lch|color)\([^)]*[/,]\s*0(?:\.0+)?\s*\)/.test(e)) return !0;
|
|
46864
|
+
let t = e.match(/-?\d*\.?\d+(?:px|em|rem)/g) ?? [];
|
|
46865
|
+
return t.length > 0 && t.every((e) => parseFloat(e) === 0);
|
|
46866
|
+
});
|
|
46867
|
+
}
|
|
46868
|
+
function M4(e) {
|
|
46854
46869
|
return !!(/\b0px\s+0px\s+0px\s+0?\.?5px\b/.test(e) || /\b0px?\s+0px?\s+0px?\s+0?\.?5px\b/.test(e));
|
|
46855
46870
|
}
|
|
46856
|
-
|
|
46871
|
+
var N4 = "#linear-grab-root, [data-linear-grab], [data-react-grab], #claude-agent-glow-border, [id^=\"react-scan\"]";
|
|
46872
|
+
function P4(e = typeof document < "u" ? document : {}) {
|
|
46857
46873
|
let t = /* @__PURE__ */ new Map(), n = (e) => {
|
|
46858
46874
|
let n = t.get(e);
|
|
46859
46875
|
return n || (n = getComputedStyle(e), t.set(e, n)), n;
|
|
@@ -46861,7 +46877,7 @@ function j4(e = typeof document < "u" ? document : {}) {
|
|
|
46861
46877
|
r4 = n;
|
|
46862
46878
|
let r = Array.from(e.querySelectorAll("*")), i = [], a = e.documentElement ?? null, o = e.body ?? null, s = (a?.getBoundingClientRect().width ?? 0) > 0;
|
|
46863
46879
|
for (let e of r) {
|
|
46864
|
-
if (e === a || e === o || e.closest(
|
|
46880
|
+
if (e === a || e === o || e.closest(N4)) continue;
|
|
46865
46881
|
let t = G2(e);
|
|
46866
46882
|
if (s) {
|
|
46867
46883
|
if (t.width < 2 || t.height < 2) continue;
|
|
@@ -46884,7 +46900,7 @@ function j4(e = typeof document < "u" ? document : {}) {
|
|
|
46884
46900
|
}
|
|
46885
46901
|
return [...u.values()];
|
|
46886
46902
|
}
|
|
46887
|
-
function
|
|
46903
|
+
function F4(e) {
|
|
46888
46904
|
let t = /* @__PURE__ */ new Map();
|
|
46889
46905
|
for (let n of e) {
|
|
46890
46906
|
let e = t.get(n.ruleId);
|
|
@@ -46905,7 +46921,7 @@ function M4(e) {
|
|
|
46905
46921
|
}
|
|
46906
46922
|
return o.join("\n");
|
|
46907
46923
|
}
|
|
46908
|
-
function
|
|
46924
|
+
function I4(e) {
|
|
46909
46925
|
return [
|
|
46910
46926
|
"Below is a design-system SLOP report from my running app — each finding is a",
|
|
46911
46927
|
"live-DOM violation of the Linear/Protocolbase primitives contract (`Linear",
|
|
@@ -46937,33 +46953,33 @@ function N4(e) {
|
|
|
46937
46953
|
"",
|
|
46938
46954
|
"---",
|
|
46939
46955
|
"",
|
|
46940
|
-
|
|
46956
|
+
F4(e)
|
|
46941
46957
|
].join("\n");
|
|
46942
46958
|
}
|
|
46943
46959
|
//#endregion
|
|
46944
46960
|
//#region src/lib/slopScanStore.ts
|
|
46945
|
-
var
|
|
46946
|
-
function
|
|
46947
|
-
return
|
|
46961
|
+
var L4 = [], R4 = /* @__PURE__ */ new Set();
|
|
46962
|
+
function z4(e) {
|
|
46963
|
+
return R4.add(e), e(L4), () => void R4.delete(e);
|
|
46948
46964
|
}
|
|
46949
|
-
function
|
|
46950
|
-
|
|
46951
|
-
for (let e of
|
|
46965
|
+
function B4() {
|
|
46966
|
+
L4 = [];
|
|
46967
|
+
for (let e of R4) e(L4);
|
|
46952
46968
|
}
|
|
46953
|
-
function
|
|
46954
|
-
let e = location.pathname, t =
|
|
46969
|
+
function V4() {
|
|
46970
|
+
let e = location.pathname, t = P4(document).map((t) => ({
|
|
46955
46971
|
...t,
|
|
46956
46972
|
page: e
|
|
46957
46973
|
}));
|
|
46958
|
-
|
|
46959
|
-
for (let e of
|
|
46960
|
-
return
|
|
46961
|
-
|
|
46962
|
-
for (let e of
|
|
46963
|
-
|
|
46974
|
+
L4 = [...t, ...L4.filter((t) => t.page !== e)];
|
|
46975
|
+
for (let e of R4) e(L4);
|
|
46976
|
+
return H4(t).then(() => {
|
|
46977
|
+
L4 = [...L4];
|
|
46978
|
+
for (let e of R4) e(L4);
|
|
46979
|
+
U4(t);
|
|
46964
46980
|
}), t;
|
|
46965
46981
|
}
|
|
46966
|
-
async function
|
|
46982
|
+
async function H4(e) {
|
|
46967
46983
|
let t = null;
|
|
46968
46984
|
try {
|
|
46969
46985
|
t = (await Promise.resolve().then(() => (RZ(), AZ))).getGlobalApi() ?? null;
|
|
@@ -46992,7 +47008,7 @@ async function z4(e) {
|
|
|
46992
47008
|
if (!(!n && !a)) for (let e of i) e.component = n, e.source = a;
|
|
46993
47009
|
}
|
|
46994
47010
|
}
|
|
46995
|
-
function
|
|
47011
|
+
function U4(e) {
|
|
46996
47012
|
if (e.length === 0) return;
|
|
46997
47013
|
let t = Date.now(), n = e.slice(0, 200).map(({ el: e, ...n }) => ({
|
|
46998
47014
|
kind: "slop-scan",
|
|
@@ -47006,59 +47022,59 @@ function B4(e) {
|
|
|
47006
47022
|
keepalive: !0
|
|
47007
47023
|
})).catch(() => {});
|
|
47008
47024
|
}
|
|
47009
|
-
var
|
|
47025
|
+
var W4 = !1;
|
|
47010
47026
|
try {
|
|
47011
|
-
|
|
47027
|
+
W4 = localStorage.getItem("linear-grab:slop-live") === "1";
|
|
47012
47028
|
} catch {}
|
|
47013
|
-
var
|
|
47014
|
-
function
|
|
47015
|
-
return
|
|
47029
|
+
var G4 = /* @__PURE__ */ new Set();
|
|
47030
|
+
function K4() {
|
|
47031
|
+
return W4;
|
|
47016
47032
|
}
|
|
47017
|
-
function
|
|
47018
|
-
|
|
47033
|
+
function q4(e) {
|
|
47034
|
+
W4 = e;
|
|
47019
47035
|
try {
|
|
47020
47036
|
localStorage.setItem("linear-grab:slop-live", e ? "1" : "0");
|
|
47021
47037
|
} catch {}
|
|
47022
|
-
for (let t of
|
|
47023
|
-
e &&
|
|
47038
|
+
for (let t of G4) t(e);
|
|
47039
|
+
e && X4(300);
|
|
47024
47040
|
}
|
|
47025
|
-
function
|
|
47026
|
-
return
|
|
47041
|
+
function J4(e) {
|
|
47042
|
+
return G4.add(e), e(W4), () => void G4.delete(e);
|
|
47027
47043
|
}
|
|
47028
|
-
var
|
|
47029
|
-
function
|
|
47030
|
-
|
|
47031
|
-
if (
|
|
47032
|
-
|
|
47044
|
+
var Y4 = null;
|
|
47045
|
+
function X4(e) {
|
|
47046
|
+
Y4 && clearTimeout(Y4), Y4 = setTimeout(() => {
|
|
47047
|
+
if (Y4 = null, W4) try {
|
|
47048
|
+
V4();
|
|
47033
47049
|
} catch {}
|
|
47034
47050
|
}, e);
|
|
47035
47051
|
}
|
|
47036
|
-
var
|
|
47037
|
-
function
|
|
47038
|
-
if (
|
|
47039
|
-
|
|
47052
|
+
var Z4 = !1;
|
|
47053
|
+
function Q4() {
|
|
47054
|
+
if (Z4 || typeof window > "u") return;
|
|
47055
|
+
Z4 = !0;
|
|
47040
47056
|
let e = location.pathname;
|
|
47041
47057
|
setInterval(() => {
|
|
47042
|
-
location.pathname !== e && (e = location.pathname,
|
|
47058
|
+
location.pathname !== e && (e = location.pathname, W4 && X4(1e3));
|
|
47043
47059
|
}, 500);
|
|
47044
47060
|
}
|
|
47045
47061
|
//#endregion
|
|
47046
47062
|
//#region src/panel/views/DesignView.tsx
|
|
47047
|
-
var
|
|
47048
|
-
function
|
|
47063
|
+
var $4 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[7ch] text-center\">Extract"), e3 = /*#__PURE__*/ N("<div class=\"relative flex flex-col gap-2 pl-4\"><div class=\"bg-border absolute top-1 bottom-1 left-[5px] w-px\"aria-hidden>"), t3 = /*#__PURE__*/ N("<span class=\"text-success text-[12px] leading-none\">✓"), n3 = /*#__PURE__*/ N("<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round aria-hidden><path d=\"M4 4l8 8M12 4l-8 8\">"), r3 = /*#__PURE__*/ N("<div class=\"flex items-center justify-end gap-1 px-1\">"), i3 = /*#__PURE__*/ N("<span class=\"relative inline-flex items-center justify-center\"><svg width=12 height=12 viewBox=\"0 0 16 16\"fill=currentColor aria-hidden><rect x=3.5 y=3 width=3.2 height=10 rx=1></rect><rect x=9.3 y=3 width=3.2 height=10 rx=1></rect></svg><span class=\"bg-success absolute -top-0.5 -right-0.5 size-1.5 animate-pulse rounded-full\"aria-hidden>"), a3 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[5ch] text-center\">Audit"), o3 = /*#__PURE__*/ N("<div class=\"flex max-h-72 flex-col gap-1.5 overflow-y-auto pr-2\">"), s3 = /*#__PURE__*/ N("<span class=\"text-[12px] leading-none\">✓"), c3 = /*#__PURE__*/ N("<div class=\"flex items-center gap-1 px-1\">"), l3 = /*#__PURE__*/ N("<span class=\"text-text-faint font-normal tabular-nums\"> · <!> pages"), u3 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[4ch] text-center\">Scan"), d3 = /*#__PURE__*/ N("<div class=\"flex items-center gap-1 px-1\"><button class=\"border-border cursor-pointer rounded-full border px-2 py-0.5 text-[10px] font-medium tabular-nums\"> errors</button><button class=\"border-border cursor-pointer rounded-full border px-2 py-0.5 text-[10px] font-medium tabular-nums\"> warns"), f3 = /*#__PURE__*/ N("<div class=\"flex h-full flex-col gap-3 overflow-y-auto pt-3 pb-4 pr-3 pl-2\"><div class=\"flex items-center justify-between gap-2 px-1\"><div class=min-w-0><p class=\"text-text text-[12.5px] font-semibold\">Design genomes</p><p class=\"text-text-faint text-[10.5px] leading-snug\">Point at a component → get its structure, tokens and interaction states as a spec you can hand to an agent.</p></div></div><div class=\"border-border mt-1 flex flex-col gap-2 border-t pt-3\"><div class=\"flex items-center justify-between gap-2 px-1\"><div class=min-w-0><p class=\"text-text text-[12.5px] font-semibold\">CSS slowdowns</p><p class=\"text-text-faint text-[10.5px] leading-snug\">Transitions/delays over the 100ms house cap (§42) on interactive elements — feedback that animates instead of being instant. Live hits appear as you use the app; Audit sweeps the whole page.</p></div><div class=\"flex shrink-0 items-center gap-1\"></div></div></div><div class=\"border-border mt-1 flex flex-col gap-2 border-t pt-3\"><div class=\"flex items-center justify-between gap-2 px-1\"><div class=min-w-0><p class=\"text-text text-[12.5px] font-semibold\">Slop scan</p><p class=\"text-text-faint text-[10.5px] leading-snug\">Design-contract drift — Linear-primitives rules checked against the live DOM. Results accumulate per page as you navigate; re-scanning a page overwrites only that page's findings.</p></div><div class=\"flex shrink-0 items-center gap-1\">"), p3 = /*#__PURE__*/ N("<p class=\"text-text mt-1 text-[11px] font-semibold\">Interaction states"), m3 = /*#__PURE__*/ N("<svg width=12 height=12 viewBox=\"0 0 16 16\"aria-hidden><rect x=3.5 y=3.5 width=9 height=9 rx=1.5 fill=currentColor>"), h3 = /*#__PURE__*/ N("<span class=\"text-warn text-[10.5px] font-medium tabular-nums\">s · <!> states"), g3 = /*#__PURE__*/ N("<div class=\"border-border flex flex-col gap-2 border-t px-2.5 py-2\"><p class=\"text-text-faint truncate text-[10px]\"></p><div class=\"flex max-h-64 flex-col gap-2 overflow-y-auto pr-2\"></div><div class=\"flex items-center gap-1\">"), _3 = /*#__PURE__*/ N("<div class=relative><span class=\"border-border bg-surface absolute top-3 -left-[13.5px] size-[9px] rounded-full border\"aria-hidden></span><div class=\"bg-surface border-border flex flex-col rounded-lg border\"><button class=\"flex w-full cursor-pointer items-center gap-2 px-2.5 py-2 text-left\"><span class=\"text-accent min-w-0 truncate font-mono text-[12px]\"></span><span class=\"text-text-faint ml-auto shrink-0 text-[10.5px] tabular-nums\"> roles<!> · </span><svg width=10 height=10 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 class=\"text-text-faint shrink-0 transition-transform\"aria-hidden><path d=\"m4 6 4 4 4-4\">"), v3 = /*#__PURE__*/ N("<span class=text-text-faint> ×"), y3 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-0.5\"><p class=\"text-text text-[11px] font-medium\">"), b3 = /*#__PURE__*/ N("<span class=text-accent> ← var(<!>)"), x3 = /*#__PURE__*/ N("<p class=\"text-text-dim font-mono text-[10px] leading-snug break-all\">: "), S3 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-0.5\"><p class=\"text-warn text-[10.5px] font-medium\"> — "), C3 = /*#__PURE__*/ N("<p class=\"text-text-dim font-mono text-[10px] leading-snug break-all\">: <!> → "), w3 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round aria-hidden><circle cx=8 cy=8 r=6></circle><circle cx=8 cy=8 r=2 fill=currentColor stroke=none>"), T3 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linejoin=round aria-hidden><rect x=5.5 y=5.5 width=9 height=9 rx=1.5></rect><path d=\"M10.5 5.5v-2a2 2 0 0 0-2-2h-5a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h2\">"), E3 = /*#__PURE__*/ N("<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=currentColor aria-hidden><path d=\"M4.5 2.5v11l9-5.5z\">"), D3 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1 text-[10.5px]\">Nothing caught yet — interact with the app, or run Audit."), O3 = /*#__PURE__*/ N("<span class=\"text-text-dim font-mono text-[10px] break-all\">"), k3 = /*#__PURE__*/ N("<span class=\"text-danger text-[10px] leading-snug\">⚠ layout/paint transition: "), A3 = /*#__PURE__*/ N("<span class=\"text-danger text-[10px] leading-snug\">⚠ ease-in easing: "), j3 = /*#__PURE__*/ N("<div class=\"bg-surface border-border flex flex-col gap-0.5 rounded-lg border p-2\"><div class=\"flex items-center gap-2\"><span class=\"text-warn shrink-0 text-[10px] font-semibold tracking-wide uppercase\"></span><span class=\"text-accent min-w-0 truncate font-mono text-[11.5px]\"></span><span class=\"text-text ml-auto shrink-0 text-[11px] font-medium tabular-nums\">ms</span></div><span class=\"text-text-dim text-[10px] leading-snug\"></span><span class=\"text-text-faint text-[10px] leading-snug\">"), M3 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round aria-hidden><path d=\"M8 1.5 9.6 6l4.4 1.6L9.6 9.2 8 13.7 6.4 9.2 2 7.6 6.4 6Z\"></path><path d=\"M13 11.5l.6 1.7 1.7.6-1.7.6-.6 1.7-.6-1.7-1.7-.6 1.7-.6Z\">"), N3 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1 text-[10.5px]\">No scan yet — click Scan to audit this page against the contract."), P3 = /*#__PURE__*/ N("<div class=\"border-border flex flex-col gap-1 border-t px-2 py-1.5\"><p class=\"text-text-dim text-[10px] leading-snug\">"), F3 = /*#__PURE__*/ N("<div class=\"bg-surface border-border flex flex-col rounded-lg border\"><button class=\"flex w-full cursor-pointer items-center gap-2 px-2 py-1.5 text-left\"><span class=\"size-1.5 shrink-0 rounded-full\"aria-hidden></span><span class=\"text-accent min-w-0 truncate font-mono text-[11.5px]\"></span><span class=\"text-text-faint ml-auto shrink-0 text-[10.5px] tabular-nums\">×</span><svg width=10 height=10 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 class=\"text-text-faint shrink-0 transition-transform\"aria-hidden><path d=\"m4 6 4 4 4-4\">"), I3 = /*#__PURE__*/ N("<span class=text-accent> "), L3 = /*#__PURE__*/ N("<span class=\"text-text-faint tabular-nums\"> ×"), R3 = /*#__PURE__*/ N("<button class=\"hover:bg-surface-2 flex w-full cursor-pointer flex-col gap-0.5 rounded px-1 py-0.5 text-left\"title=\"Reveal on the page\"><span class=\"text-text min-w-0 truncate font-mono text-[10.5px]\"></span><span class=\"text-text-faint font-mono text-[10px] leading-snug break-all\">"), z3 = "linear-grab:genomes:v1", B3 = 30;
|
|
47064
|
+
function V3() {
|
|
47049
47065
|
try {
|
|
47050
|
-
return JSON.parse(localStorage.getItem(
|
|
47066
|
+
return JSON.parse(localStorage.getItem(z3) ?? "[]");
|
|
47051
47067
|
} catch {
|
|
47052
47068
|
return [];
|
|
47053
47069
|
}
|
|
47054
47070
|
}
|
|
47055
|
-
function
|
|
47071
|
+
function H3(e) {
|
|
47056
47072
|
try {
|
|
47057
|
-
localStorage.setItem(
|
|
47073
|
+
localStorage.setItem(z3, JSON.stringify(e.slice(0, B3)));
|
|
47058
47074
|
} catch {}
|
|
47059
47075
|
}
|
|
47060
|
-
var
|
|
47061
|
-
function
|
|
47076
|
+
var U3 = /* @__PURE__ */ new Map();
|
|
47077
|
+
function W3(e) {
|
|
47062
47078
|
let t = e.el?.deref();
|
|
47063
47079
|
if (!(t instanceof HTMLElement) || !t.isConnected) return !1;
|
|
47064
47080
|
t.scrollIntoView({
|
|
@@ -47070,8 +47086,8 @@ function V3(e) {
|
|
|
47070
47086
|
t.style.outline = n, t.style.outlineOffset = r;
|
|
47071
47087
|
}, 1400), !0;
|
|
47072
47088
|
}
|
|
47073
|
-
function
|
|
47074
|
-
let [e, t] = T(
|
|
47089
|
+
function G3() {
|
|
47090
|
+
let [e, t] = T(V3()), [n, r] = T(null), [i, a] = T(null), [o, s] = T(null), [c, l] = T(null), [u, d] = T(null), [f, p] = T({
|
|
47075
47091
|
active: !1,
|
|
47076
47092
|
msLeft: 0,
|
|
47077
47093
|
total: 0,
|
|
@@ -47102,20 +47118,20 @@ function H3() {
|
|
|
47102
47118
|
l("Clipboard was blocked — click Copy again.");
|
|
47103
47119
|
}
|
|
47104
47120
|
}, [k, ee] = T([]);
|
|
47105
|
-
ae(
|
|
47106
|
-
let [te, A] = T(
|
|
47107
|
-
ae(
|
|
47121
|
+
ae(z4(ee));
|
|
47122
|
+
let [te, A] = T(K4());
|
|
47123
|
+
ae(J4(A));
|
|
47108
47124
|
let [ne, re] = T(!1), [ie, oe] = T(null), [se, ce] = T(!0), [le, ue] = T(!0), [de, fe] = T(!1), [pe, me] = T(!1), he = () => {
|
|
47109
47125
|
l(null), re(!0);
|
|
47110
47126
|
try {
|
|
47111
|
-
|
|
47127
|
+
V4(), oe(null);
|
|
47112
47128
|
} catch (e) {
|
|
47113
47129
|
l(e instanceof Error ? e.message : String(e));
|
|
47114
47130
|
} finally {
|
|
47115
47131
|
re(!1);
|
|
47116
47132
|
}
|
|
47117
47133
|
}, ge = () => {
|
|
47118
|
-
|
|
47134
|
+
B4(), oe(null);
|
|
47119
47135
|
}, _e = () => new Set(k().map((e) => e.page)).size, ve = () => k().filter((e) => e.severity === "error" ? se() : le()), ye = () => {
|
|
47120
47136
|
let e = /* @__PURE__ */ new Map();
|
|
47121
47137
|
for (let t of ve()) {
|
|
@@ -47125,25 +47141,25 @@ function H3() {
|
|
|
47125
47141
|
return [...e.values()].sort((e, t) => Number(t[0].severity === "error") - Number(e[0].severity === "error") || t.length - e.length);
|
|
47126
47142
|
}, be = () => k().filter((e) => e.severity === "error").length, xe = () => k().length - be(), Se = async () => {
|
|
47127
47143
|
try {
|
|
47128
|
-
await navigator.clipboard.writeText(
|
|
47144
|
+
await navigator.clipboard.writeText(F4(ve())), fe(!0), setTimeout(() => fe(!1), 1600);
|
|
47129
47145
|
} catch {
|
|
47130
47146
|
l("Clipboard was blocked — click Copy again.");
|
|
47131
47147
|
}
|
|
47132
47148
|
}, Ce = async () => {
|
|
47133
47149
|
try {
|
|
47134
|
-
await navigator.clipboard.writeText(
|
|
47150
|
+
await navigator.clipboard.writeText(I4(ve())), me(!0), setTimeout(() => me(!1), 1600);
|
|
47135
47151
|
} catch {
|
|
47136
47152
|
l("Clipboard was blocked — click Copy again.");
|
|
47137
47153
|
}
|
|
47138
47154
|
}, we = (e) => {
|
|
47139
|
-
t(e),
|
|
47155
|
+
t(e), H3(e);
|
|
47140
47156
|
}, Te = async () => {
|
|
47141
47157
|
l(null), a("extract"), window.dispatchEvent(new CustomEvent(BZ));
|
|
47142
47158
|
try {
|
|
47143
47159
|
let t = await u2();
|
|
47144
47160
|
if (!t) return;
|
|
47145
47161
|
let n = await e2(t), i = Date.now();
|
|
47146
|
-
|
|
47162
|
+
U3.set(i, new WeakRef(t)), we([{
|
|
47147
47163
|
id: i,
|
|
47148
47164
|
genome: n
|
|
47149
47165
|
}, ...e()]), r(i);
|
|
@@ -47155,10 +47171,10 @@ function H3() {
|
|
|
47155
47171
|
}, Ee = async (t) => {
|
|
47156
47172
|
l(null), a(t.id), window.dispatchEvent(new CustomEvent(BZ));
|
|
47157
47173
|
try {
|
|
47158
|
-
let n =
|
|
47174
|
+
let n = U3.get(t.id)?.deref() ?? null;
|
|
47159
47175
|
if (!n || !n.isConnected) {
|
|
47160
47176
|
if (n = await u2(), !n) return;
|
|
47161
|
-
|
|
47177
|
+
U3.set(t.id, new WeakRef(n));
|
|
47162
47178
|
}
|
|
47163
47179
|
let r = await c2(n, 8e3, (e) => s(Math.ceil(e / 1e3)));
|
|
47164
47180
|
r.length === 0 && l("No state changes captured — hover/open the component while the 8s window runs."), we(e().map((e) => e.id === t.id ? {
|
|
@@ -47180,7 +47196,7 @@ function H3() {
|
|
|
47180
47196
|
l("Clipboard was blocked — click Copy again.");
|
|
47181
47197
|
}
|
|
47182
47198
|
}, Oe = (t) => {
|
|
47183
|
-
|
|
47199
|
+
U3.delete(t), we(e().filter((e) => e.id !== t));
|
|
47184
47200
|
}, [ke, Ae] = T(!1), je = async () => {
|
|
47185
47201
|
try {
|
|
47186
47202
|
let t = e().map((e) => l2(e.genome)).join("\n\n---\n\n");
|
|
@@ -47189,10 +47205,10 @@ function H3() {
|
|
|
47189
47205
|
l("Clipboard was blocked — click Copy again.");
|
|
47190
47206
|
}
|
|
47191
47207
|
}, Me = () => {
|
|
47192
|
-
|
|
47208
|
+
U3.clear(), we([]), r(null);
|
|
47193
47209
|
};
|
|
47194
47210
|
return (() => {
|
|
47195
|
-
var t =
|
|
47211
|
+
var t = f3(), a = t.firstChild;
|
|
47196
47212
|
a.firstChild;
|
|
47197
47213
|
var o = a.nextSibling, s = o.firstChild.firstChild.nextSibling, d = o.nextSibling, p = d.firstChild.firstChild, h = p.firstChild;
|
|
47198
47214
|
h.firstChild;
|
|
@@ -47205,7 +47221,7 @@ function H3() {
|
|
|
47205
47221
|
},
|
|
47206
47222
|
onClick: () => void Te(),
|
|
47207
47223
|
get children() {
|
|
47208
|
-
return
|
|
47224
|
+
return $4();
|
|
47209
47225
|
}
|
|
47210
47226
|
}), null), P(t, j(M, {
|
|
47211
47227
|
get when() {
|
|
@@ -47228,7 +47244,7 @@ function H3() {
|
|
|
47228
47244
|
},
|
|
47229
47245
|
get children() {
|
|
47230
47246
|
return [(() => {
|
|
47231
|
-
var t =
|
|
47247
|
+
var t = e3();
|
|
47232
47248
|
return t.firstChild, P(t, j(We, {
|
|
47233
47249
|
get each() {
|
|
47234
47250
|
return e();
|
|
@@ -47236,7 +47252,7 @@ function H3() {
|
|
|
47236
47252
|
children: (e) => {
|
|
47237
47253
|
let t = () => n() === e.id;
|
|
47238
47254
|
return (() => {
|
|
47239
|
-
var n =
|
|
47255
|
+
var n = _3(), a = n.firstChild, o = a.nextSibling, s = o.firstChild, c = s.firstChild, l = c.nextSibling, d = l.firstChild, p = d.nextSibling;
|
|
47240
47256
|
p.nextSibling;
|
|
47241
47257
|
var m = l.nextSibling;
|
|
47242
47258
|
return s.$$click = () => r(t() ? null : e.id), P(c, () => e.genome.title), P(l, () => e.genome.nodes.length, d), P(l, (() => {
|
|
@@ -47247,19 +47263,19 @@ function H3() {
|
|
|
47247
47263
|
return t();
|
|
47248
47264
|
},
|
|
47249
47265
|
get children() {
|
|
47250
|
-
var t =
|
|
47266
|
+
var t = g3(), n = t.firstChild, r = n.nextSibling, a = r.nextSibling;
|
|
47251
47267
|
return P(n, () => e.genome.pageUrl), P(r, j(We, {
|
|
47252
47268
|
get each() {
|
|
47253
47269
|
return e.genome.nodes;
|
|
47254
47270
|
},
|
|
47255
47271
|
children: (e) => (() => {
|
|
47256
|
-
var t =
|
|
47272
|
+
var t = y3(), n = t.firstChild;
|
|
47257
47273
|
return P(n, () => e.label, null), P(n, j(M, {
|
|
47258
47274
|
get when() {
|
|
47259
47275
|
return e.count > 1;
|
|
47260
47276
|
},
|
|
47261
47277
|
get children() {
|
|
47262
|
-
var t =
|
|
47278
|
+
var t = v3();
|
|
47263
47279
|
return t.firstChild, P(t, () => e.count, null), t;
|
|
47264
47280
|
}
|
|
47265
47281
|
}), null), P(t, j(We, {
|
|
@@ -47267,13 +47283,13 @@ function H3() {
|
|
|
47267
47283
|
return Object.entries(e.styles);
|
|
47268
47284
|
},
|
|
47269
47285
|
children: ([t, n]) => (() => {
|
|
47270
|
-
var r =
|
|
47286
|
+
var r = x3(), i = r.firstChild;
|
|
47271
47287
|
return P(r, t, i), P(r, n, null), P(r, j(M, {
|
|
47272
47288
|
get when() {
|
|
47273
47289
|
return e.tokens[t];
|
|
47274
47290
|
},
|
|
47275
47291
|
get children() {
|
|
47276
|
-
var n =
|
|
47292
|
+
var n = b3(), r = n.firstChild.nextSibling;
|
|
47277
47293
|
return r.nextSibling, P(n, () => e.tokens[t], r), n;
|
|
47278
47294
|
}
|
|
47279
47295
|
}), null), r;
|
|
@@ -47285,18 +47301,18 @@ function H3() {
|
|
|
47285
47301
|
return e.genome.states.length > 0;
|
|
47286
47302
|
},
|
|
47287
47303
|
get children() {
|
|
47288
|
-
return [
|
|
47304
|
+
return [p3(), j(We, {
|
|
47289
47305
|
get each() {
|
|
47290
47306
|
return e.genome.states;
|
|
47291
47307
|
},
|
|
47292
47308
|
children: (e) => (() => {
|
|
47293
|
-
var t =
|
|
47309
|
+
var t = S3(), n = t.firstChild, r = n.firstChild;
|
|
47294
47310
|
return P(n, () => e.label, r), P(n, () => e.trigger, null), P(t, j(We, {
|
|
47295
47311
|
get each() {
|
|
47296
47312
|
return Object.entries(e.changed);
|
|
47297
47313
|
},
|
|
47298
47314
|
children: ([e, t]) => (() => {
|
|
47299
|
-
var n =
|
|
47315
|
+
var n = C3(), r = n.firstChild, i = r.nextSibling;
|
|
47300
47316
|
return i.nextSibling, P(n, e, r), P(n, () => t.from, i), P(n, () => t.to, null), n;
|
|
47301
47317
|
})()
|
|
47302
47318
|
}), null), t;
|
|
@@ -47318,7 +47334,7 @@ function H3() {
|
|
|
47318
47334
|
"aria-label": "Capture interaction states",
|
|
47319
47335
|
onClick: () => void Ee(e),
|
|
47320
47336
|
get children() {
|
|
47321
|
-
return
|
|
47337
|
+
return w3();
|
|
47322
47338
|
}
|
|
47323
47339
|
});
|
|
47324
47340
|
},
|
|
@@ -47332,10 +47348,10 @@ function H3() {
|
|
|
47332
47348
|
"aria-label": "Stop recording states",
|
|
47333
47349
|
onClick: () => o2(),
|
|
47334
47350
|
get children() {
|
|
47335
|
-
return
|
|
47351
|
+
return m3();
|
|
47336
47352
|
}
|
|
47337
47353
|
}), (() => {
|
|
47338
|
-
var e =
|
|
47354
|
+
var e = h3(), t = e.firstChild, n = t.nextSibling;
|
|
47339
47355
|
return n.nextSibling, P(e, () => Math.ceil(f().msLeft / 1e3), t), P(e, () => f().total, n), e;
|
|
47340
47356
|
})()];
|
|
47341
47357
|
}
|
|
@@ -47353,10 +47369,10 @@ function H3() {
|
|
|
47353
47369
|
return u() === e.id;
|
|
47354
47370
|
},
|
|
47355
47371
|
get fallback() {
|
|
47356
|
-
return
|
|
47372
|
+
return T3();
|
|
47357
47373
|
},
|
|
47358
47374
|
get children() {
|
|
47359
|
-
return
|
|
47375
|
+
return t3();
|
|
47360
47376
|
}
|
|
47361
47377
|
});
|
|
47362
47378
|
}
|
|
@@ -47367,7 +47383,7 @@ function H3() {
|
|
|
47367
47383
|
"aria-label": "Delete genome",
|
|
47368
47384
|
onClick: () => Oe(e.id),
|
|
47369
47385
|
get children() {
|
|
47370
|
-
return
|
|
47386
|
+
return n3();
|
|
47371
47387
|
}
|
|
47372
47388
|
}), null), t;
|
|
47373
47389
|
}
|
|
@@ -47382,7 +47398,7 @@ function H3() {
|
|
|
47382
47398
|
}
|
|
47383
47399
|
}), null), t;
|
|
47384
47400
|
})(), (() => {
|
|
47385
|
-
var e =
|
|
47401
|
+
var e = r3();
|
|
47386
47402
|
return P(e, j(q, {
|
|
47387
47403
|
class: "size-7 px-0",
|
|
47388
47404
|
variant: "ghost",
|
|
@@ -47397,10 +47413,10 @@ function H3() {
|
|
|
47397
47413
|
return ke();
|
|
47398
47414
|
},
|
|
47399
47415
|
get fallback() {
|
|
47400
|
-
return
|
|
47416
|
+
return T3();
|
|
47401
47417
|
},
|
|
47402
47418
|
get children() {
|
|
47403
|
-
return
|
|
47419
|
+
return t3();
|
|
47404
47420
|
}
|
|
47405
47421
|
});
|
|
47406
47422
|
}
|
|
@@ -47411,7 +47427,7 @@ function H3() {
|
|
|
47411
47427
|
"aria-label": "Delete all genomes",
|
|
47412
47428
|
onClick: Me,
|
|
47413
47429
|
get children() {
|
|
47414
|
-
return
|
|
47430
|
+
return n3();
|
|
47415
47431
|
}
|
|
47416
47432
|
}), null), e;
|
|
47417
47433
|
})()];
|
|
@@ -47432,10 +47448,10 @@ function H3() {
|
|
|
47432
47448
|
return g();
|
|
47433
47449
|
},
|
|
47434
47450
|
get fallback() {
|
|
47435
|
-
return
|
|
47451
|
+
return E3();
|
|
47436
47452
|
},
|
|
47437
47453
|
get children() {
|
|
47438
|
-
return
|
|
47454
|
+
return i3();
|
|
47439
47455
|
}
|
|
47440
47456
|
});
|
|
47441
47457
|
}
|
|
@@ -47447,24 +47463,24 @@ function H3() {
|
|
|
47447
47463
|
},
|
|
47448
47464
|
onClick: () => void S(),
|
|
47449
47465
|
get children() {
|
|
47450
|
-
return
|
|
47466
|
+
return a3();
|
|
47451
47467
|
}
|
|
47452
47468
|
}), null), P(o, j(M, {
|
|
47453
47469
|
get when() {
|
|
47454
47470
|
return m().length > 0;
|
|
47455
47471
|
},
|
|
47456
47472
|
get fallback() {
|
|
47457
|
-
return
|
|
47473
|
+
return D3();
|
|
47458
47474
|
},
|
|
47459
47475
|
get children() {
|
|
47460
47476
|
return [(() => {
|
|
47461
|
-
var e =
|
|
47477
|
+
var e = o3();
|
|
47462
47478
|
return P(e, j(We, {
|
|
47463
47479
|
get each() {
|
|
47464
47480
|
return m();
|
|
47465
47481
|
},
|
|
47466
47482
|
children: (e) => (() => {
|
|
47467
|
-
var t =
|
|
47483
|
+
var t = j3(), n = t.firstChild, r = n.firstChild, i = r.nextSibling, a = i.nextSibling, o = a.firstChild, s = n.nextSibling, c = s.nextSibling;
|
|
47468
47484
|
return P(r, () => e.mode === "live" ? "live" : "audit"), P(i, () => e.component ?? e.element, null), P(i, j(M, {
|
|
47469
47485
|
get when() {
|
|
47470
47486
|
return e.count > 1;
|
|
@@ -47480,7 +47496,7 @@ function H3() {
|
|
|
47480
47496
|
return e.source;
|
|
47481
47497
|
},
|
|
47482
47498
|
get children() {
|
|
47483
|
-
var t =
|
|
47499
|
+
var t = O3();
|
|
47484
47500
|
return P(t, () => e.source), t;
|
|
47485
47501
|
}
|
|
47486
47502
|
}), s), P(s, () => e.properties.join(", "), null), P(s, j(M, {
|
|
@@ -47499,7 +47515,7 @@ function H3() {
|
|
|
47499
47515
|
return e.jankProps?.length;
|
|
47500
47516
|
},
|
|
47501
47517
|
get children() {
|
|
47502
|
-
var t =
|
|
47518
|
+
var t = k3();
|
|
47503
47519
|
return t.firstChild, P(t, () => e.jankProps.join(", "), null), t;
|
|
47504
47520
|
}
|
|
47505
47521
|
}), c), P(t, j(M, {
|
|
@@ -47507,14 +47523,14 @@ function H3() {
|
|
|
47507
47523
|
return e.easing;
|
|
47508
47524
|
},
|
|
47509
47525
|
get children() {
|
|
47510
|
-
var t =
|
|
47526
|
+
var t = A3();
|
|
47511
47527
|
return t.firstChild, P(t, () => e.easing, null), t;
|
|
47512
47528
|
}
|
|
47513
47529
|
}), c), P(c, () => e.suggestion), t;
|
|
47514
47530
|
})()
|
|
47515
47531
|
})), e;
|
|
47516
47532
|
})(), (() => {
|
|
47517
|
-
var e =
|
|
47533
|
+
var e = c3();
|
|
47518
47534
|
return P(e, j(q, {
|
|
47519
47535
|
class: "size-7 px-0",
|
|
47520
47536
|
variant: "primary",
|
|
@@ -47529,10 +47545,10 @@ function H3() {
|
|
|
47529
47545
|
return w();
|
|
47530
47546
|
},
|
|
47531
47547
|
get fallback() {
|
|
47532
|
-
return
|
|
47548
|
+
return M3();
|
|
47533
47549
|
},
|
|
47534
47550
|
get children() {
|
|
47535
|
-
return
|
|
47551
|
+
return s3();
|
|
47536
47552
|
}
|
|
47537
47553
|
});
|
|
47538
47554
|
}
|
|
@@ -47550,10 +47566,10 @@ function H3() {
|
|
|
47550
47566
|
return b();
|
|
47551
47567
|
},
|
|
47552
47568
|
get fallback() {
|
|
47553
|
-
return
|
|
47569
|
+
return T3();
|
|
47554
47570
|
},
|
|
47555
47571
|
get children() {
|
|
47556
|
-
return
|
|
47572
|
+
return t3();
|
|
47557
47573
|
}
|
|
47558
47574
|
});
|
|
47559
47575
|
}
|
|
@@ -47564,7 +47580,7 @@ function H3() {
|
|
|
47564
47580
|
"aria-label": "Clear all findings",
|
|
47565
47581
|
onClick: M2,
|
|
47566
47582
|
get children() {
|
|
47567
|
-
return
|
|
47583
|
+
return n3();
|
|
47568
47584
|
}
|
|
47569
47585
|
}), null), e;
|
|
47570
47586
|
})()];
|
|
@@ -47574,7 +47590,7 @@ function H3() {
|
|
|
47574
47590
|
return _e() > 1;
|
|
47575
47591
|
},
|
|
47576
47592
|
get children() {
|
|
47577
|
-
var e =
|
|
47593
|
+
var e = l3(), t = e.firstChild.nextSibling;
|
|
47578
47594
|
return t.nextSibling, P(e, _e, t), e;
|
|
47579
47595
|
}
|
|
47580
47596
|
}), null), P(_, j(q, {
|
|
@@ -47586,17 +47602,17 @@ function H3() {
|
|
|
47586
47602
|
get "aria-label"() {
|
|
47587
47603
|
return te() ? "Pause live scan" : "Start live scan";
|
|
47588
47604
|
},
|
|
47589
|
-
onClick: () =>
|
|
47605
|
+
onClick: () => q4(!te()),
|
|
47590
47606
|
get children() {
|
|
47591
47607
|
return j(M, {
|
|
47592
47608
|
get when() {
|
|
47593
47609
|
return te();
|
|
47594
47610
|
},
|
|
47595
47611
|
get fallback() {
|
|
47596
|
-
return
|
|
47612
|
+
return E3();
|
|
47597
47613
|
},
|
|
47598
47614
|
get children() {
|
|
47599
|
-
return
|
|
47615
|
+
return i3();
|
|
47600
47616
|
}
|
|
47601
47617
|
});
|
|
47602
47618
|
}
|
|
@@ -47609,19 +47625,19 @@ function H3() {
|
|
|
47609
47625
|
title: "Scan this page — cumulative: keeps other pages' findings, replaces this page's",
|
|
47610
47626
|
onClick: he,
|
|
47611
47627
|
get children() {
|
|
47612
|
-
return
|
|
47628
|
+
return u3();
|
|
47613
47629
|
}
|
|
47614
47630
|
}), null), P(d, j(M, {
|
|
47615
47631
|
get when() {
|
|
47616
47632
|
return k().length > 0;
|
|
47617
47633
|
},
|
|
47618
47634
|
get fallback() {
|
|
47619
|
-
return
|
|
47635
|
+
return N3();
|
|
47620
47636
|
},
|
|
47621
47637
|
get children() {
|
|
47622
47638
|
return [
|
|
47623
47639
|
(() => {
|
|
47624
|
-
var e =
|
|
47640
|
+
var e = d3(), t = e.firstChild, n = t.firstChild, r = t.nextSibling, i = r.firstChild;
|
|
47625
47641
|
return t.$$click = () => ce(!se()), P(t, be, n), r.$$click = () => ue(!le()), P(r, xe, i), D((e) => {
|
|
47626
47642
|
var n = {
|
|
47627
47643
|
"text-danger bg-danger/10 border-danger/40": se(),
|
|
@@ -47639,7 +47655,7 @@ function H3() {
|
|
|
47639
47655
|
}), e;
|
|
47640
47656
|
})(),
|
|
47641
47657
|
(() => {
|
|
47642
|
-
var e =
|
|
47658
|
+
var e = o3();
|
|
47643
47659
|
return P(e, j(We, {
|
|
47644
47660
|
get each() {
|
|
47645
47661
|
return ye();
|
|
@@ -47647,7 +47663,7 @@ function H3() {
|
|
|
47647
47663
|
children: (e) => {
|
|
47648
47664
|
let t = e[0], n = () => ie() === t.ruleId;
|
|
47649
47665
|
return (() => {
|
|
47650
|
-
var r =
|
|
47666
|
+
var r = F3(), i = r.firstChild, a = i.firstChild, o = a.nextSibling, s = o.nextSibling;
|
|
47651
47667
|
s.firstChild;
|
|
47652
47668
|
var c = s.nextSibling;
|
|
47653
47669
|
return i.$$click = () => oe(n() ? null : t.ruleId), P(o, () => t.ruleId), P(s, () => e.reduce((e, t) => e + (t.count ?? 1), 0), null), P(r, j(M, {
|
|
@@ -47655,19 +47671,19 @@ function H3() {
|
|
|
47655
47671
|
return n();
|
|
47656
47672
|
},
|
|
47657
47673
|
get children() {
|
|
47658
|
-
var n =
|
|
47674
|
+
var n = P3(), r = n.firstChild;
|
|
47659
47675
|
return P(r, () => t.description), P(n, j(We, {
|
|
47660
47676
|
each: e,
|
|
47661
47677
|
children: (e) => (() => {
|
|
47662
|
-
var t =
|
|
47678
|
+
var t = R3(), n = t.firstChild, r = n.nextSibling;
|
|
47663
47679
|
return t.$$click = () => {
|
|
47664
|
-
|
|
47680
|
+
W3(e) || l(e.page === location.pathname ? "Element is gone — run Scan again." : `This finding is on ${e.page} — navigate there to reveal it.`);
|
|
47665
47681
|
}, P(n, j(M, {
|
|
47666
47682
|
get when() {
|
|
47667
47683
|
return _e() > 1;
|
|
47668
47684
|
},
|
|
47669
47685
|
get children() {
|
|
47670
|
-
var t =
|
|
47686
|
+
var t = I3(), n = t.firstChild;
|
|
47671
47687
|
return P(t, () => e.page, n), t;
|
|
47672
47688
|
}
|
|
47673
47689
|
}), null), P(n, j(M, {
|
|
@@ -47675,7 +47691,7 @@ function H3() {
|
|
|
47675
47691
|
return e.component;
|
|
47676
47692
|
},
|
|
47677
47693
|
get children() {
|
|
47678
|
-
var t =
|
|
47694
|
+
var t = I3(), n = t.firstChild;
|
|
47679
47695
|
return P(t, () => e.component, n), t;
|
|
47680
47696
|
}
|
|
47681
47697
|
}), null), P(n, () => e.selector, null), P(n, j(M, {
|
|
@@ -47683,7 +47699,7 @@ function H3() {
|
|
|
47683
47699
|
return (e.count ?? 1) > 1;
|
|
47684
47700
|
},
|
|
47685
47701
|
get children() {
|
|
47686
|
-
var t =
|
|
47702
|
+
var t = L3();
|
|
47687
47703
|
return t.firstChild, P(t, () => e.count, null), t;
|
|
47688
47704
|
}
|
|
47689
47705
|
}), null), P(t, j(M, {
|
|
@@ -47691,7 +47707,7 @@ function H3() {
|
|
|
47691
47707
|
return e.source;
|
|
47692
47708
|
},
|
|
47693
47709
|
get children() {
|
|
47694
|
-
var t =
|
|
47710
|
+
var t = O3();
|
|
47695
47711
|
return P(t, () => e.source), t;
|
|
47696
47712
|
}
|
|
47697
47713
|
}), r), P(r, () => e.evidence), t;
|
|
@@ -47711,7 +47727,7 @@ function H3() {
|
|
|
47711
47727
|
})), e;
|
|
47712
47728
|
})(),
|
|
47713
47729
|
(() => {
|
|
47714
|
-
var e =
|
|
47730
|
+
var e = c3();
|
|
47715
47731
|
return P(e, j(q, {
|
|
47716
47732
|
class: "size-7 px-0",
|
|
47717
47733
|
variant: "primary",
|
|
@@ -47726,10 +47742,10 @@ function H3() {
|
|
|
47726
47742
|
return pe();
|
|
47727
47743
|
},
|
|
47728
47744
|
get fallback() {
|
|
47729
|
-
return
|
|
47745
|
+
return M3();
|
|
47730
47746
|
},
|
|
47731
47747
|
get children() {
|
|
47732
|
-
return
|
|
47748
|
+
return s3();
|
|
47733
47749
|
}
|
|
47734
47750
|
});
|
|
47735
47751
|
}
|
|
@@ -47747,10 +47763,10 @@ function H3() {
|
|
|
47747
47763
|
return de();
|
|
47748
47764
|
},
|
|
47749
47765
|
get fallback() {
|
|
47750
|
-
return
|
|
47766
|
+
return T3();
|
|
47751
47767
|
},
|
|
47752
47768
|
get children() {
|
|
47753
|
-
return
|
|
47769
|
+
return t3();
|
|
47754
47770
|
}
|
|
47755
47771
|
});
|
|
47756
47772
|
}
|
|
@@ -47761,7 +47777,7 @@ function H3() {
|
|
|
47761
47777
|
"aria-label": "Clear scan results",
|
|
47762
47778
|
onClick: ge,
|
|
47763
47779
|
get children() {
|
|
47764
|
-
return
|
|
47780
|
+
return n3();
|
|
47765
47781
|
}
|
|
47766
47782
|
}), null), e;
|
|
47767
47783
|
})()
|
|
@@ -47773,13 +47789,29 @@ function H3() {
|
|
|
47773
47789
|
rt(["click"]);
|
|
47774
47790
|
//#endregion
|
|
47775
47791
|
//#region src/lib/renderScan.ts
|
|
47776
|
-
function
|
|
47792
|
+
function K3(e) {
|
|
47777
47793
|
return Math.round(e * 10) / 10;
|
|
47778
47794
|
}
|
|
47779
|
-
function
|
|
47795
|
+
function q3(e, t, n) {
|
|
47780
47796
|
return e.rules[t]?.severity ?? n;
|
|
47781
47797
|
}
|
|
47782
|
-
|
|
47798
|
+
var J3 = /^(HotReload|Head|AppRouterAnnouncer|HistoryUpdater|AppRouter|Router|ServerRoot|SegmentViewNode|SegmentViewStateNode|SegmentStateProvider|InnerLayoutRouter|OuterLayoutRouter|TemplateContext|RenderFromTemplateContext|ScrollAndFocusHandler|RedirectBoundary|RedirectErrorBoundary|LoadingBoundary|ErrorBoundary|ErrorBoundaryHandler|HTTPAccessFallbackBoundary|HTTPAccessFallbackErrorBoundary|DevRootHTTPAccessFallbackBoundary|__next_root_layout_boundary__|Preloads|NonIndex|ReplaySsrOnlyErrors|AppDevOverlay\w*|DevOverlay\w*|PseudoHtml\w*)$/;
|
|
47799
|
+
function Y3(e) {
|
|
47800
|
+
return e?.length ? e.map((e) => {
|
|
47801
|
+
try {
|
|
47802
|
+
let t = new RegExp(e);
|
|
47803
|
+
return (e) => t.test(e);
|
|
47804
|
+
} catch {
|
|
47805
|
+
return (t) => t === e;
|
|
47806
|
+
}
|
|
47807
|
+
}) : [];
|
|
47808
|
+
}
|
|
47809
|
+
function X3(e, t) {
|
|
47810
|
+
if (e.length <= 2 || J3.test(e)) return !0;
|
|
47811
|
+
for (let n of t) if (n(e)) return !0;
|
|
47812
|
+
return !1;
|
|
47813
|
+
}
|
|
47814
|
+
function Z3(e) {
|
|
47783
47815
|
let t = /* @__PURE__ */ new Map();
|
|
47784
47816
|
for (let n of e) for (let e of n.entries) {
|
|
47785
47817
|
let n = t.get(e.name);
|
|
@@ -47792,129 +47824,133 @@ function G3(e) {
|
|
|
47792
47824
|
}
|
|
47793
47825
|
return t;
|
|
47794
47826
|
}
|
|
47795
|
-
function
|
|
47796
|
-
let
|
|
47797
|
-
|
|
47827
|
+
function Q3(e, t, n) {
|
|
47828
|
+
let r = [], i = Y3(n?.ignore), a = e.map((e) => ({
|
|
47829
|
+
...e,
|
|
47830
|
+
entries: e.entries.filter((e) => !X3(e.name, i)),
|
|
47831
|
+
mounts: Object.fromEntries(Object.entries(e.mounts).filter(([e]) => !X3(e, i)))
|
|
47832
|
+
})), o = Z3(a), s = t.budgets;
|
|
47833
|
+
return s6(r, () => {
|
|
47798
47834
|
let e = [];
|
|
47799
|
-
for (let n of
|
|
47835
|
+
for (let n of o.values()) {
|
|
47800
47836
|
if (n.updates.length < 5 || !n.updates.every((e) => e.length === 0)) continue;
|
|
47801
47837
|
let r = n.updates.length;
|
|
47802
47838
|
e.push({
|
|
47803
47839
|
ruleId: "R9",
|
|
47804
47840
|
shape: "B",
|
|
47805
|
-
severity:
|
|
47841
|
+
severity: q3(t, "R9", "error"),
|
|
47806
47842
|
suspected: !0,
|
|
47807
47843
|
description: `suspected R9 — ${n.name} re-rendered ${r}× with zero prop changes (dead memo or subscription-in-body)`,
|
|
47808
47844
|
component: n.name,
|
|
47809
47845
|
source: null,
|
|
47810
47846
|
renders: r,
|
|
47811
|
-
selfTime:
|
|
47847
|
+
selfTime: K3(n.selfTime),
|
|
47812
47848
|
changes: [],
|
|
47813
|
-
evidence: `${r} renders · ${
|
|
47849
|
+
evidence: `${r} renders · ${K3(n.selfTime)}ms self · all props identity-equal`,
|
|
47814
47850
|
el: n.el
|
|
47815
47851
|
});
|
|
47816
47852
|
}
|
|
47817
47853
|
return e;
|
|
47818
|
-
}),
|
|
47854
|
+
}), s6(r, () => {
|
|
47819
47855
|
let e = [];
|
|
47820
|
-
for (let n of
|
|
47856
|
+
for (let n of o.values()) {
|
|
47821
47857
|
if (n.updates.length < 5 || !n.updates.every((e) => e.length > 0 && e.every((e) => /\((?:fn|ref)\)$/.test(e)))) continue;
|
|
47822
47858
|
let r = Array.from(new Set(n.updates.flat())), i = n.updates.length, a = r.join(", ");
|
|
47823
47859
|
e.push({
|
|
47824
47860
|
ruleId: "R5",
|
|
47825
47861
|
shape: "B",
|
|
47826
|
-
severity:
|
|
47862
|
+
severity: q3(t, "R5", "error"),
|
|
47827
47863
|
suspected: !0,
|
|
47828
47864
|
description: `suspected R5 — ${i} renders of ${n.name} with fresh ${a} identity per parent render (memo defeated)`,
|
|
47829
47865
|
component: n.name,
|
|
47830
47866
|
source: null,
|
|
47831
47867
|
renders: i,
|
|
47832
|
-
selfTime:
|
|
47868
|
+
selfTime: K3(n.selfTime),
|
|
47833
47869
|
changes: r,
|
|
47834
|
-
evidence: `${i} renders · ${
|
|
47870
|
+
evidence: `${i} renders · ${K3(n.selfTime)}ms self · churning ${a}`,
|
|
47835
47871
|
el: n.el
|
|
47836
47872
|
});
|
|
47837
47873
|
}
|
|
47838
47874
|
return e;
|
|
47839
|
-
}),
|
|
47840
|
-
let
|
|
47841
|
-
for (let
|
|
47842
|
-
let a =
|
|
47843
|
-
if (a < (
|
|
47844
|
-
let o =
|
|
47845
|
-
|
|
47875
|
+
}), s6(r, () => {
|
|
47876
|
+
let e = [], n = /Tooltip|Menu|Popover|Context|Dialog|Dropdown/i;
|
|
47877
|
+
for (let r of a) for (let i of Object.keys(r.mounts)) {
|
|
47878
|
+
let a = r.mounts[i];
|
|
47879
|
+
if (a < (n.test(i) ? 10 : 15)) continue;
|
|
47880
|
+
let o = r.entries.find((e) => e.name === i && e.el);
|
|
47881
|
+
e.push({
|
|
47846
47882
|
ruleId: "R4",
|
|
47847
47883
|
shape: "A",
|
|
47848
|
-
severity:
|
|
47884
|
+
severity: q3(t, "R4", "error"),
|
|
47849
47885
|
suspected: !0,
|
|
47850
|
-
description: `suspected R4 — ${a} ${
|
|
47851
|
-
component:
|
|
47886
|
+
description: `suspected R4 — ${a} ${i} instances mounted in one commit (per-row overlays should mount on intent)`,
|
|
47887
|
+
component: i,
|
|
47852
47888
|
source: null,
|
|
47853
47889
|
renders: a,
|
|
47854
47890
|
selfTime: 0,
|
|
47855
47891
|
changes: [],
|
|
47856
|
-
evidence: `${
|
|
47892
|
+
evidence: `${i} ×${a} mounted in one commit`,
|
|
47857
47893
|
el: o?.el ?? void 0
|
|
47858
47894
|
});
|
|
47859
47895
|
}
|
|
47860
|
-
return
|
|
47861
|
-
}),
|
|
47862
|
-
let
|
|
47863
|
-
for (let
|
|
47864
|
-
if (
|
|
47865
|
-
let
|
|
47866
|
-
|
|
47896
|
+
return e;
|
|
47897
|
+
}), s6(r, () => {
|
|
47898
|
+
let e = [];
|
|
47899
|
+
for (let t of a) {
|
|
47900
|
+
if (t.duration <= s.commitMs) continue;
|
|
47901
|
+
let n = [...t.entries].sort((e, t) => t.selfTime - e.selfTime).slice(0, 3).map((e) => `${e.name} ${K3(e.selfTime)}ms`).join(", "), r = K3(t.duration), i = t.duration > 16 ? ` · ~${Math.round(1e3 / t.duration)} FPS` : "";
|
|
47902
|
+
e.push({
|
|
47867
47903
|
ruleId: null,
|
|
47868
47904
|
shape: null,
|
|
47869
47905
|
severity: "error",
|
|
47870
47906
|
suspected: !1,
|
|
47871
|
-
description: `commit exceeded budget: ${r}ms of React work (> ${
|
|
47907
|
+
description: `commit exceeded budget: ${r}ms of React work (> ${s.commitMs}ms) — top: ${n}`,
|
|
47872
47908
|
component: null,
|
|
47873
47909
|
source: null,
|
|
47874
|
-
renders:
|
|
47910
|
+
renders: t.entries.length,
|
|
47875
47911
|
selfTime: r,
|
|
47876
47912
|
changes: [],
|
|
47877
|
-
evidence: `${r}ms commit · ${
|
|
47913
|
+
evidence: `${r}ms commit · ${t.entries.length} components${i}`
|
|
47878
47914
|
});
|
|
47879
47915
|
}
|
|
47880
|
-
return
|
|
47881
|
-
}),
|
|
47882
|
-
let
|
|
47883
|
-
for (let
|
|
47884
|
-
let
|
|
47885
|
-
for (let
|
|
47886
|
-
for (let [
|
|
47887
|
-
if (
|
|
47888
|
-
let
|
|
47916
|
+
return e;
|
|
47917
|
+
}), s6(r, () => {
|
|
47918
|
+
let e = [], t = /* @__PURE__ */ new Map();
|
|
47919
|
+
for (let e of a) {
|
|
47920
|
+
let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
|
|
47921
|
+
for (let t of e.entries) n.set(t.name, (n.get(t.name) ?? 0) + t.selfTime), t.el && !r.has(t.name) && r.set(t.name, t.el);
|
|
47922
|
+
for (let [e, i] of n) {
|
|
47923
|
+
if (i <= s.selfMs) continue;
|
|
47924
|
+
let n = t.get(e) ?? {
|
|
47889
47925
|
hits: 0,
|
|
47890
47926
|
worst: 0,
|
|
47891
47927
|
total: 0,
|
|
47892
|
-
el: r.get(
|
|
47928
|
+
el: r.get(e)
|
|
47893
47929
|
};
|
|
47894
|
-
|
|
47930
|
+
n.hits += 1, n.worst = Math.max(n.worst, i), n.total += i, n.el ||= r.get(e), t.set(e, n);
|
|
47895
47931
|
}
|
|
47896
47932
|
}
|
|
47897
|
-
for (let [
|
|
47933
|
+
for (let [n, r] of t) r.hits < 3 || e.push({
|
|
47898
47934
|
ruleId: null,
|
|
47899
47935
|
shape: null,
|
|
47900
47936
|
severity: "warn",
|
|
47901
47937
|
suspected: !1,
|
|
47902
|
-
description: `${
|
|
47903
|
-
component:
|
|
47938
|
+
description: `${n} is a hot component: ${r.hits} commits over the ${s.selfMs}ms self budget`,
|
|
47939
|
+
component: n,
|
|
47904
47940
|
source: null,
|
|
47905
47941
|
renders: r.hits,
|
|
47906
|
-
selfTime:
|
|
47942
|
+
selfTime: K3(r.total),
|
|
47907
47943
|
changes: [],
|
|
47908
|
-
evidence: `${r.hits} commits over ${
|
|
47944
|
+
evidence: `${r.hits} commits over ${s.selfMs}ms self (worst ${K3(r.worst)}ms)`,
|
|
47909
47945
|
el: r.el
|
|
47910
47946
|
});
|
|
47911
|
-
return
|
|
47912
|
-
}),
|
|
47913
|
-
let n = [], r =
|
|
47947
|
+
return e;
|
|
47948
|
+
}), s6(r, () => {
|
|
47949
|
+
let n = [], r = a6(e.filter((e) => e.nearInput).map((e) => e.at).sort((e, t) => e - t), 1e3);
|
|
47914
47950
|
return r >= 5 && n.push({
|
|
47915
47951
|
ruleId: "R10",
|
|
47916
47952
|
shape: "B",
|
|
47917
|
-
severity:
|
|
47953
|
+
severity: q3(t, "R10", "error"),
|
|
47918
47954
|
suspected: !0,
|
|
47919
47955
|
description: `suspected R10 — ${r} React commits during scroll/pointer movement (frame-rate state updates)`,
|
|
47920
47956
|
component: null,
|
|
@@ -47924,12 +47960,12 @@ function K3(e, t) {
|
|
|
47924
47960
|
changes: [],
|
|
47925
47961
|
evidence: `${r} commits within a 1s scroll/pointer window`
|
|
47926
47962
|
}), n;
|
|
47927
|
-
}),
|
|
47928
|
-
let n = [], { count: r, span: i } =
|
|
47963
|
+
}), s6(r, () => {
|
|
47964
|
+
let n = [], { count: r, span: i } = o6(e.filter((e) => !e.nearInput).map((e) => e.at).sort((e, t) => e - t), 300);
|
|
47929
47965
|
return r >= 8 && n.push({
|
|
47930
47966
|
ruleId: "R24",
|
|
47931
47967
|
shape: "B",
|
|
47932
|
-
severity:
|
|
47968
|
+
severity: q3(t, "R24", "warn"),
|
|
47933
47969
|
suspected: !0,
|
|
47934
47970
|
description: `suspected R24 — ${r} commits in ${Math.round(i)}ms burst (multi-row writes / un-coalesced pokes?)`,
|
|
47935
47971
|
component: null,
|
|
@@ -47939,10 +47975,10 @@ function K3(e, t) {
|
|
|
47939
47975
|
changes: [],
|
|
47940
47976
|
evidence: `${r} commits in a ${Math.round(i)}ms burst (no input)`
|
|
47941
47977
|
}), n;
|
|
47942
|
-
}),
|
|
47978
|
+
}), s6(r, () => {
|
|
47943
47979
|
let e = [];
|
|
47944
|
-
if (!
|
|
47945
|
-
for (let n of
|
|
47980
|
+
if (!r6()) return e;
|
|
47981
|
+
for (let n of o.values()) {
|
|
47946
47982
|
if (n.updates.length < 3) continue;
|
|
47947
47983
|
let r = n.el?.deref();
|
|
47948
47984
|
if (!r) continue;
|
|
@@ -47958,33 +47994,33 @@ function K3(e, t) {
|
|
|
47958
47994
|
e.push({
|
|
47959
47995
|
ruleId: "R3",
|
|
47960
47996
|
shape: "C",
|
|
47961
|
-
severity:
|
|
47997
|
+
severity: q3(t, "R3", "error"),
|
|
47962
47998
|
suspected: !0,
|
|
47963
47999
|
description: `suspected R3 — ${n.name} re-rendered ${a}× while its DOM is hidden/detached (closed host without everOpened gate?) [R3/R7/R23 family]`,
|
|
47964
48000
|
component: n.name,
|
|
47965
48001
|
source: null,
|
|
47966
48002
|
renders: a,
|
|
47967
|
-
selfTime:
|
|
48003
|
+
selfTime: K3(n.selfTime),
|
|
47968
48004
|
changes: [],
|
|
47969
|
-
evidence: `${a} renders while hidden/detached · ${
|
|
48005
|
+
evidence: `${a} renders while hidden/detached · ${K3(n.selfTime)}ms self`,
|
|
47970
48006
|
el: n.el
|
|
47971
48007
|
});
|
|
47972
48008
|
}
|
|
47973
48009
|
return e;
|
|
47974
|
-
}),
|
|
48010
|
+
}), c6(r);
|
|
47975
48011
|
}
|
|
47976
|
-
var
|
|
47977
|
-
function
|
|
48012
|
+
var $3 = "#linear-grab-root, [data-linear-grab], [data-react-grab], #claude-agent-glow-border, [id^=\"react-scan\"]";
|
|
48013
|
+
function e6(e = typeof document < "u" ? document : {}) {
|
|
47978
48014
|
let t = [];
|
|
47979
|
-
return
|
|
47980
|
-
let t = [], n = Array.from(e.querySelectorAll("[role=\"slider\"], [role=\"progressbar\"], [role=\"switch\"]")), r =
|
|
48015
|
+
return s6(t, () => {
|
|
48016
|
+
let t = [], n = Array.from(e.querySelectorAll("[role=\"slider\"], [role=\"progressbar\"], [role=\"switch\"]")), r = i6(e);
|
|
47981
48017
|
for (let e of n) {
|
|
47982
|
-
if (e.closest(
|
|
48018
|
+
if (e.closest($3)) continue;
|
|
47983
48019
|
if (r) try {
|
|
47984
48020
|
let t = e.getBoundingClientRect();
|
|
47985
48021
|
if (t.width < 2 || t.height < 2) continue;
|
|
47986
48022
|
} catch {}
|
|
47987
|
-
if (!
|
|
48023
|
+
if (!t6(e)) continue;
|
|
47988
48024
|
let n = e.getAttribute("role") ?? "widget";
|
|
47989
48025
|
t.push({
|
|
47990
48026
|
ruleId: "R8",
|
|
@@ -47997,14 +48033,14 @@ function J3(e = typeof document < "u" ? document : {}) {
|
|
|
47997
48033
|
renders: 0,
|
|
47998
48034
|
selfTime: 0,
|
|
47999
48035
|
changes: [],
|
|
48000
|
-
evidence:
|
|
48036
|
+
evidence: n6(e),
|
|
48001
48037
|
el: typeof WeakRef < "u" ? new WeakRef(e) : void 0
|
|
48002
48038
|
});
|
|
48003
48039
|
}
|
|
48004
48040
|
return t;
|
|
48005
|
-
}),
|
|
48041
|
+
}), c6(t);
|
|
48006
48042
|
}
|
|
48007
|
-
function
|
|
48043
|
+
function t6(e) {
|
|
48008
48044
|
if (e.hasAttribute("disabled") || e.getAttribute("aria-disabled") === "true") return !0;
|
|
48009
48045
|
let t = e;
|
|
48010
48046
|
for (let e = 0; t && e <= 3; e++) {
|
|
@@ -48015,17 +48051,17 @@ function Y3(e) {
|
|
|
48015
48051
|
}
|
|
48016
48052
|
return !1;
|
|
48017
48053
|
}
|
|
48018
|
-
function
|
|
48054
|
+
function n6(e) {
|
|
48019
48055
|
let t = typeof e.className == "string" && e.className ? "." + e.className.split(/\s+/).filter(Boolean).slice(0, 2).join(".") : "";
|
|
48020
48056
|
return `${e.tagName.toLowerCase()}${t}`;
|
|
48021
48057
|
}
|
|
48022
|
-
function
|
|
48058
|
+
function r6() {
|
|
48023
48059
|
return typeof document > "u" ? !1 : (document.documentElement?.getBoundingClientRect().width ?? 0) > 0;
|
|
48024
48060
|
}
|
|
48025
|
-
function
|
|
48061
|
+
function i6(e) {
|
|
48026
48062
|
return ((e.documentElement ?? (typeof document < "u" ? document.documentElement : null))?.getBoundingClientRect().width ?? 0) > 0;
|
|
48027
48063
|
}
|
|
48028
|
-
function
|
|
48064
|
+
function a6(e, t) {
|
|
48029
48065
|
let n = 0, r = 0;
|
|
48030
48066
|
for (let i = 0; i < e.length; i++) {
|
|
48031
48067
|
for (; e[i] - e[r] > t;) r++;
|
|
@@ -48033,7 +48069,7 @@ function $3(e, t) {
|
|
|
48033
48069
|
}
|
|
48034
48070
|
return n;
|
|
48035
48071
|
}
|
|
48036
|
-
function
|
|
48072
|
+
function o6(e, t) {
|
|
48037
48073
|
let n = 0, r = 0, i = 0;
|
|
48038
48074
|
for (let a = 0; a < e.length; a++) {
|
|
48039
48075
|
for (; e[a] - e[i] > t;) i++;
|
|
@@ -48045,12 +48081,12 @@ function e6(e, t) {
|
|
|
48045
48081
|
span: r
|
|
48046
48082
|
};
|
|
48047
48083
|
}
|
|
48048
|
-
function
|
|
48084
|
+
function s6(e, t) {
|
|
48049
48085
|
try {
|
|
48050
48086
|
e.push(...t());
|
|
48051
48087
|
} catch {}
|
|
48052
48088
|
}
|
|
48053
|
-
function
|
|
48089
|
+
function c6(e) {
|
|
48054
48090
|
let t = /* @__PURE__ */ new Map();
|
|
48055
48091
|
for (let n of e) {
|
|
48056
48092
|
let e = `${n.ruleId}|${n.component}|${n.changes.join()}|${n.description}`, r = t.get(e);
|
|
@@ -48058,7 +48094,7 @@ function n6(e) {
|
|
|
48058
48094
|
}
|
|
48059
48095
|
return [...t.values()];
|
|
48060
48096
|
}
|
|
48061
|
-
function
|
|
48097
|
+
function l6(e) {
|
|
48062
48098
|
let t = /* @__PURE__ */ new Map();
|
|
48063
48099
|
for (let n of e) {
|
|
48064
48100
|
let e = n.ruleId ?? "budget", r = t.get(e);
|
|
@@ -48084,7 +48120,7 @@ function r6(e) {
|
|
|
48084
48120
|
}
|
|
48085
48121
|
return a.join("\n");
|
|
48086
48122
|
}
|
|
48087
|
-
function
|
|
48123
|
+
function u6(e, t) {
|
|
48088
48124
|
let n = Array.from(new Set(e.map((e) => e.ruleId).filter((e) => !!e))).sort(), r = [];
|
|
48089
48125
|
for (let e of n) {
|
|
48090
48126
|
let n = t.rules[e];
|
|
@@ -48111,35 +48147,35 @@ function i6(e, t) {
|
|
|
48111
48147
|
"",
|
|
48112
48148
|
"---",
|
|
48113
48149
|
"",
|
|
48114
|
-
|
|
48150
|
+
l6(e)
|
|
48115
48151
|
].join("\n");
|
|
48116
48152
|
}
|
|
48117
|
-
var
|
|
48153
|
+
var d6 = "bippy-0.5.43", f6 = Object.defineProperty, p6 = Object.prototype.hasOwnProperty, m6 = () => {}, h6 = (e) => {
|
|
48118
48154
|
try {
|
|
48119
48155
|
Function.prototype.toString.call(e).indexOf("^_^") > -1 && setTimeout(() => {
|
|
48120
48156
|
throw Error("React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://reactjs.org/link/perf-use-production-build");
|
|
48121
48157
|
});
|
|
48122
48158
|
} catch {}
|
|
48123
|
-
},
|
|
48159
|
+
}, g6 = (e = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) => !!(e && "getFiberRoots" in e), _6 = !1, v6, y6 = (e = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) => _6 ? !0 : (e && typeof e.inject == "function" && (v6 = e.inject.toString()), !!v6?.includes("(injected)")), b6 = /* @__PURE__ */ new Set(), x6 = /* @__PURE__ */ new Set(), S6 = (e) => {
|
|
48124
48160
|
let t = /* @__PURE__ */ new Map(), n = 0, r = {
|
|
48125
48161
|
_instrumentationIsActive: !1,
|
|
48126
|
-
_instrumentationSource:
|
|
48127
|
-
checkDCE:
|
|
48162
|
+
_instrumentationSource: d6,
|
|
48163
|
+
checkDCE: h6,
|
|
48128
48164
|
hasUnsupportedRendererAttached: !1,
|
|
48129
48165
|
inject(e) {
|
|
48130
48166
|
let i = ++n;
|
|
48131
|
-
return t.set(i, e),
|
|
48167
|
+
return t.set(i, e), x6.add(e), r._instrumentationIsActive || (r._instrumentationIsActive = !0, b6.forEach((e) => e())), i;
|
|
48132
48168
|
},
|
|
48133
|
-
on:
|
|
48134
|
-
onCommitFiberRoot:
|
|
48135
|
-
onCommitFiberUnmount:
|
|
48136
|
-
onPostCommitFiberRoot:
|
|
48169
|
+
on: m6,
|
|
48170
|
+
onCommitFiberRoot: m6,
|
|
48171
|
+
onCommitFiberUnmount: m6,
|
|
48172
|
+
onPostCommitFiberRoot: m6,
|
|
48137
48173
|
renderers: t,
|
|
48138
48174
|
supportsFiber: !0,
|
|
48139
48175
|
supportsFlight: !0
|
|
48140
48176
|
};
|
|
48141
48177
|
try {
|
|
48142
|
-
|
|
48178
|
+
f6(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
|
|
48143
48179
|
configurable: !0,
|
|
48144
48180
|
enumerable: !0,
|
|
48145
48181
|
get() {
|
|
@@ -48149,13 +48185,13 @@ var a6 = "bippy-0.5.43", o6 = Object.defineProperty, s6 = Object.prototype.hasOw
|
|
|
48149
48185
|
if (t && typeof t == "object") {
|
|
48150
48186
|
let n = r.renderers;
|
|
48151
48187
|
r = t, n.size > 0 && (n.forEach((e, n) => {
|
|
48152
|
-
|
|
48153
|
-
}),
|
|
48188
|
+
x6.add(e), t.renderers.set(n, e);
|
|
48189
|
+
}), C6(e));
|
|
48154
48190
|
}
|
|
48155
48191
|
}
|
|
48156
48192
|
});
|
|
48157
48193
|
let t = window.hasOwnProperty, n = !1;
|
|
48158
|
-
|
|
48194
|
+
f6(window, "hasOwnProperty", {
|
|
48159
48195
|
configurable: !0,
|
|
48160
48196
|
value: function(...e) {
|
|
48161
48197
|
try {
|
|
@@ -48166,47 +48202,47 @@ var a6 = "bippy-0.5.43", o6 = Object.defineProperty, s6 = Object.prototype.hasOw
|
|
|
48166
48202
|
writable: !0
|
|
48167
48203
|
});
|
|
48168
48204
|
} catch {
|
|
48169
|
-
|
|
48205
|
+
C6(e);
|
|
48170
48206
|
}
|
|
48171
48207
|
return r;
|
|
48172
|
-
},
|
|
48173
|
-
e &&
|
|
48208
|
+
}, C6 = (e) => {
|
|
48209
|
+
e && b6.add(e);
|
|
48174
48210
|
try {
|
|
48175
48211
|
let t = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
|
|
48176
48212
|
if (!t) return;
|
|
48177
48213
|
if (!t._instrumentationSource) {
|
|
48178
|
-
t.checkDCE =
|
|
48179
|
-
let e =
|
|
48180
|
-
if (e || (t.on =
|
|
48181
|
-
t._instrumentationIsActive = !0,
|
|
48214
|
+
t.checkDCE = h6, t.supportsFiber = !0, t.supportsFlight = !0, t.hasUnsupportedRendererAttached = !1, t._instrumentationSource = d6, t._instrumentationIsActive = !1;
|
|
48215
|
+
let e = g6(t);
|
|
48216
|
+
if (e || (t.on = m6), t.renderers.size) {
|
|
48217
|
+
t._instrumentationIsActive = !0, b6.forEach((e) => e());
|
|
48182
48218
|
return;
|
|
48183
48219
|
}
|
|
48184
|
-
let n = t.inject, r =
|
|
48185
|
-
r && !e && (
|
|
48220
|
+
let n = t.inject, r = y6(t);
|
|
48221
|
+
r && !e && (_6 = !0, t.inject({ scheduleRefresh() {} }) && (t._instrumentationIsActive = !0)), t.inject = (e) => {
|
|
48186
48222
|
let i = n(e);
|
|
48187
|
-
return
|
|
48223
|
+
return x6.add(e), r && t.renderers.set(i, e), t._instrumentationIsActive = !0, b6.forEach((e) => e()), i;
|
|
48188
48224
|
};
|
|
48189
48225
|
}
|
|
48190
|
-
(t.renderers.size || t._instrumentationIsActive ||
|
|
48226
|
+
(t.renderers.size || t._instrumentationIsActive || y6()) && e?.();
|
|
48191
48227
|
} catch {}
|
|
48192
|
-
},
|
|
48228
|
+
}, w6 = () => p6.call(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__"), T6 = (e) => w6() ? (C6(e), globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) : S6(e), E6 = () => !!(typeof window < "u" && (window.document?.createElement || window.navigator?.product === "ReactNative"));
|
|
48193
48229
|
//#endregion
|
|
48194
48230
|
//#region node_modules/bippy/dist/install-hook-only.js
|
|
48195
48231
|
(() => {
|
|
48196
48232
|
try {
|
|
48197
|
-
|
|
48233
|
+
E6() && T6();
|
|
48198
48234
|
} catch {}
|
|
48199
48235
|
})();
|
|
48200
48236
|
//#endregion
|
|
48201
48237
|
//#region node_modules/bippy/dist/core.js
|
|
48202
|
-
var
|
|
48238
|
+
var D6 = 60111, O6 = "Symbol(react.concurrent_mode)", k6 = "Symbol(react.async_mode)", A6 = (e) => {
|
|
48203
48239
|
switch (e.tag) {
|
|
48204
48240
|
case 5:
|
|
48205
48241
|
case 26:
|
|
48206
48242
|
case 27: return !0;
|
|
48207
48243
|
default: return typeof e.type == "string";
|
|
48208
48244
|
}
|
|
48209
|
-
},
|
|
48245
|
+
}, j6 = (e) => {
|
|
48210
48246
|
switch (e.tag) {
|
|
48211
48247
|
case 1:
|
|
48212
48248
|
case 11:
|
|
@@ -48215,7 +48251,7 @@ var x6 = 60111, S6 = "Symbol(react.concurrent_mode)", C6 = "Symbol(react.async_m
|
|
|
48215
48251
|
case 15: return !0;
|
|
48216
48252
|
default: return !1;
|
|
48217
48253
|
}
|
|
48218
|
-
},
|
|
48254
|
+
}, M6 = (e) => {
|
|
48219
48255
|
let t = e.memoizedProps, n = e.alternate?.memoizedProps || {}, r = e.flags ?? e.effectTag ?? 0;
|
|
48220
48256
|
switch (e.tag) {
|
|
48221
48257
|
case 1:
|
|
@@ -48226,7 +48262,7 @@ var x6 = 60111, S6 = "Symbol(react.concurrent_mode)", C6 = "Symbol(react.async_m
|
|
|
48226
48262
|
case 15: return (r & 1) == 1;
|
|
48227
48263
|
default: return !e.alternate || n !== t || e.alternate.memoizedState !== e.memoizedState || e.alternate.ref !== e.ref;
|
|
48228
48264
|
}
|
|
48229
|
-
},
|
|
48265
|
+
}, N6 = (e) => {
|
|
48230
48266
|
switch (e.tag) {
|
|
48231
48267
|
case 18: return !0;
|
|
48232
48268
|
case 7:
|
|
@@ -48237,25 +48273,25 @@ var x6 = 60111, S6 = "Symbol(react.concurrent_mode)", C6 = "Symbol(react.async_m
|
|
|
48237
48273
|
default: {
|
|
48238
48274
|
let t = typeof e.type == "object" && e.type !== null ? e.type.$$typeof : e.type;
|
|
48239
48275
|
switch (typeof t == "symbol" ? t.toString() : t) {
|
|
48240
|
-
case
|
|
48241
|
-
case
|
|
48242
|
-
case
|
|
48276
|
+
case D6:
|
|
48277
|
+
case O6:
|
|
48278
|
+
case k6: return !0;
|
|
48243
48279
|
default: return !1;
|
|
48244
48280
|
}
|
|
48245
48281
|
}
|
|
48246
48282
|
}
|
|
48247
|
-
},
|
|
48248
|
-
let n =
|
|
48249
|
-
return n ||=
|
|
48283
|
+
}, P6 = (e, t = !1) => {
|
|
48284
|
+
let n = F6(e, A6, t);
|
|
48285
|
+
return n ||= F6(e, A6, !t), n;
|
|
48250
48286
|
};
|
|
48251
|
-
function
|
|
48287
|
+
function F6(e, t, n = !1) {
|
|
48252
48288
|
if (!e) return null;
|
|
48253
48289
|
let r = t(e);
|
|
48254
48290
|
if (r instanceof Promise) return (async () => {
|
|
48255
48291
|
if (await r === !0) return e;
|
|
48256
48292
|
let i = n ? e.return : e.child;
|
|
48257
48293
|
for (; i;) {
|
|
48258
|
-
let e = await
|
|
48294
|
+
let e = await L6(i, t, n);
|
|
48259
48295
|
if (e) return e;
|
|
48260
48296
|
i = n ? null : i.sibling;
|
|
48261
48297
|
}
|
|
@@ -48264,118 +48300,118 @@ function k6(e, t, n = !1) {
|
|
|
48264
48300
|
if (r === !0) return e;
|
|
48265
48301
|
let i = n ? e.return : e.child;
|
|
48266
48302
|
for (; i;) {
|
|
48267
|
-
let e =
|
|
48303
|
+
let e = I6(i, t, n);
|
|
48268
48304
|
if (e) return e;
|
|
48269
48305
|
i = n ? null : i.sibling;
|
|
48270
48306
|
}
|
|
48271
48307
|
return null;
|
|
48272
48308
|
}
|
|
48273
|
-
var
|
|
48309
|
+
var I6 = (e, t, n = !1) => {
|
|
48274
48310
|
if (!e) return null;
|
|
48275
48311
|
if (t(e) === !0) return e;
|
|
48276
48312
|
let r = n ? e.return : e.child;
|
|
48277
48313
|
for (; r;) {
|
|
48278
|
-
let e =
|
|
48314
|
+
let e = I6(r, t, n);
|
|
48279
48315
|
if (e) return e;
|
|
48280
48316
|
r = n ? null : r.sibling;
|
|
48281
48317
|
}
|
|
48282
48318
|
return null;
|
|
48283
|
-
},
|
|
48319
|
+
}, L6 = async (e, t, n = !1) => {
|
|
48284
48320
|
if (!e) return null;
|
|
48285
48321
|
if (await t(e) === !0) return e;
|
|
48286
48322
|
let r = n ? e.return : e.child;
|
|
48287
48323
|
for (; r;) {
|
|
48288
|
-
let e = await
|
|
48324
|
+
let e = await L6(r, t, n);
|
|
48289
48325
|
if (e) return e;
|
|
48290
48326
|
r = n ? null : r.sibling;
|
|
48291
48327
|
}
|
|
48292
48328
|
return null;
|
|
48293
|
-
},
|
|
48329
|
+
}, R6 = (e) => {
|
|
48294
48330
|
let t = e?.actualDuration ?? 0, n = t, r = e?.child ?? null;
|
|
48295
48331
|
for (; t > 0 && r != null;) n -= r.actualDuration ?? 0, r = r.sibling;
|
|
48296
48332
|
return {
|
|
48297
48333
|
selfTime: n,
|
|
48298
48334
|
totalTime: t
|
|
48299
48335
|
};
|
|
48300
|
-
},
|
|
48336
|
+
}, z6 = (e) => {
|
|
48301
48337
|
let t = e;
|
|
48302
|
-
return typeof t == "function" ? t : typeof t == "object" && t ?
|
|
48303
|
-
},
|
|
48338
|
+
return typeof t == "function" ? t : typeof t == "object" && t ? z6(t.type || t.render) : null;
|
|
48339
|
+
}, B6 = (e) => {
|
|
48304
48340
|
let t = e;
|
|
48305
48341
|
if (typeof t == "string") return t;
|
|
48306
48342
|
if (typeof t != "function" && !(typeof t == "object" && t)) return null;
|
|
48307
48343
|
let n = t.displayName || t.name || null;
|
|
48308
48344
|
if (n) return n;
|
|
48309
|
-
let r =
|
|
48345
|
+
let r = z6(t);
|
|
48310
48346
|
return r && (r.displayName || r.name) || null;
|
|
48311
|
-
},
|
|
48312
|
-
|
|
48313
|
-
},
|
|
48314
|
-
let t =
|
|
48315
|
-
return !t && e.alternate && (t =
|
|
48316
|
-
},
|
|
48347
|
+
}, V6 = 0, H6 = /* @__PURE__ */ new WeakMap(), U6 = (e, t = V6++) => {
|
|
48348
|
+
H6.set(e, t);
|
|
48349
|
+
}, W6 = (e) => {
|
|
48350
|
+
let t = H6.get(e);
|
|
48351
|
+
return !t && e.alternate && (t = H6.get(e.alternate)), t || (t = V6++, U6(e, t)), t;
|
|
48352
|
+
}, G6 = (e, t, n) => {
|
|
48317
48353
|
let r = t;
|
|
48318
48354
|
for (; r != null;) {
|
|
48319
|
-
if (
|
|
48355
|
+
if (H6.has(r) || W6(r), !N6(r) && M6(r) && e(r, "mount"), r.tag === 13) if (r.memoizedState !== null) {
|
|
48320
48356
|
let t = r.child, n = t ? t.sibling : null;
|
|
48321
48357
|
if (n) {
|
|
48322
48358
|
let t = n.child;
|
|
48323
|
-
t !== null &&
|
|
48359
|
+
t !== null && G6(e, t, !1);
|
|
48324
48360
|
}
|
|
48325
48361
|
} else {
|
|
48326
48362
|
let t = null;
|
|
48327
|
-
r.child !== null && (t = r.child.child), t !== null &&
|
|
48363
|
+
r.child !== null && (t = r.child.child), t !== null && G6(e, t, !1);
|
|
48328
48364
|
}
|
|
48329
|
-
else r.child != null &&
|
|
48365
|
+
else r.child != null && G6(e, r.child, !0);
|
|
48330
48366
|
r = n ? r.sibling : null;
|
|
48331
48367
|
}
|
|
48332
|
-
},
|
|
48333
|
-
if (
|
|
48334
|
-
|
|
48335
|
-
let i = t.tag === 13, a = !
|
|
48336
|
-
a &&
|
|
48368
|
+
}, K6 = (e, t, n, r) => {
|
|
48369
|
+
if (H6.has(t) || W6(t), !n) return;
|
|
48370
|
+
H6.has(n) || W6(n);
|
|
48371
|
+
let i = t.tag === 13, a = !N6(t);
|
|
48372
|
+
a && M6(t) && e(t, "update");
|
|
48337
48373
|
let o = i && n.memoizedState !== null, s = i && t.memoizedState !== null;
|
|
48338
48374
|
if (o && s) {
|
|
48339
48375
|
let r = t.child?.sibling ?? null, i = n.child?.sibling ?? null;
|
|
48340
|
-
r !== null && i !== null &&
|
|
48376
|
+
r !== null && i !== null && K6(e, r, i, t);
|
|
48341
48377
|
} else if (o && !s) {
|
|
48342
48378
|
let n = t.child;
|
|
48343
|
-
n !== null &&
|
|
48379
|
+
n !== null && G6(e, n, !0);
|
|
48344
48380
|
} else if (!o && s) {
|
|
48345
|
-
|
|
48381
|
+
J6(e, n);
|
|
48346
48382
|
let r = t.child?.sibling ?? null;
|
|
48347
|
-
r !== null &&
|
|
48383
|
+
r !== null && G6(e, r, !0);
|
|
48348
48384
|
} else if (t.child !== n.child) {
|
|
48349
48385
|
let n = t.child;
|
|
48350
48386
|
for (; n;) {
|
|
48351
48387
|
if (n.alternate) {
|
|
48352
48388
|
let i = n.alternate;
|
|
48353
|
-
|
|
48354
|
-
} else
|
|
48389
|
+
K6(e, n, i, a ? t : r);
|
|
48390
|
+
} else G6(e, n, !1);
|
|
48355
48391
|
n = n.sibling;
|
|
48356
48392
|
}
|
|
48357
48393
|
}
|
|
48358
|
-
},
|
|
48359
|
-
(t.tag === 3 || !
|
|
48360
|
-
},
|
|
48394
|
+
}, q6 = (e, t) => {
|
|
48395
|
+
(t.tag === 3 || !N6(t)) && e(t, "unmount");
|
|
48396
|
+
}, J6 = (e, t) => {
|
|
48361
48397
|
let n = t.tag === 13 && t.memoizedState !== null, r = t.child;
|
|
48362
|
-
for (n && (r = (t.child?.sibling ?? null)?.child ?? null); r !== null;) r.return !== null && (
|
|
48363
|
-
},
|
|
48364
|
-
let n = "current" in e ? e.current : e, r =
|
|
48398
|
+
for (n && (r = (t.child?.sibling ?? null)?.child ?? null); r !== null;) r.return !== null && (q6(e, r), J6(e, r)), r = r.sibling;
|
|
48399
|
+
}, Y6 = 0, X6 = /* @__PURE__ */ new WeakMap(), Z6 = (e, t) => {
|
|
48400
|
+
let n = "current" in e ? e.current : e, r = X6.get(e);
|
|
48365
48401
|
r || (r = {
|
|
48366
|
-
id:
|
|
48402
|
+
id: Y6++,
|
|
48367
48403
|
prevFiber: null
|
|
48368
|
-
},
|
|
48404
|
+
}, X6.set(e, r));
|
|
48369
48405
|
let { prevFiber: i } = r;
|
|
48370
|
-
if (!n)
|
|
48406
|
+
if (!n) q6(t, n);
|
|
48371
48407
|
else if (i !== null) {
|
|
48372
48408
|
let e = i && i.memoizedState != null && i.memoizedState.element != null && i.memoizedState.isDehydrated !== !0, r = n.memoizedState != null && n.memoizedState.element != null && n.memoizedState.isDehydrated !== !0;
|
|
48373
|
-
!e && r ?
|
|
48374
|
-
} else
|
|
48409
|
+
!e && r ? G6(t, n, !1) : e && r ? K6(t, n, n.alternate, null) : e && !r && q6(t, n);
|
|
48410
|
+
} else G6(t, n, !0);
|
|
48375
48411
|
r.prevFiber = n;
|
|
48376
|
-
},
|
|
48377
|
-
let t =
|
|
48378
|
-
t._instrumentationSource = e.name ??
|
|
48412
|
+
}, Q6 = (e) => {
|
|
48413
|
+
let t = T6(e.onActive);
|
|
48414
|
+
t._instrumentationSource = e.name ?? d6;
|
|
48379
48415
|
let n = t.onCommitFiberRoot;
|
|
48380
48416
|
if (e.onCommitFiberRoot) {
|
|
48381
48417
|
let r = (t, i, a) => {
|
|
@@ -48398,52 +48434,52 @@ var A6 = (e, t, n = !1) => {
|
|
|
48398
48434
|
t.onPostCommitFiberRoot = n;
|
|
48399
48435
|
}
|
|
48400
48436
|
return t;
|
|
48401
|
-
},
|
|
48402
|
-
function
|
|
48403
|
-
|
|
48437
|
+
}, $6 = !1, e8 = !1, t8 = [], n8 = -Infinity, r8 = 200, i8 = 4e3, a8 = 100;
|
|
48438
|
+
function o8() {
|
|
48439
|
+
n8 = c8();
|
|
48404
48440
|
}
|
|
48405
|
-
var
|
|
48441
|
+
var s8 = [
|
|
48406
48442
|
"scroll",
|
|
48407
48443
|
"wheel",
|
|
48408
48444
|
"pointermove"
|
|
48409
48445
|
];
|
|
48410
|
-
function
|
|
48446
|
+
function c8() {
|
|
48411
48447
|
return typeof performance < "u" ? performance.now() : Date.now();
|
|
48412
48448
|
}
|
|
48413
|
-
function
|
|
48449
|
+
function l8(e, t) {
|
|
48414
48450
|
let n = e && typeof e == "object" ? e : {}, r = t && typeof t == "object" ? t : {}, i = /* @__PURE__ */ new Set([...Object.keys(n), ...Object.keys(r)]), a = [];
|
|
48415
48451
|
for (let e of i) {
|
|
48416
48452
|
if (e === "children") continue;
|
|
48417
48453
|
let t = n[e], i = r[e];
|
|
48418
|
-
Object.is(t, i) || (typeof t == "function" && typeof i == "function" ? a.push(`prop:${e}(fn)`) : t && i && typeof t == "object" && typeof i == "object" &&
|
|
48454
|
+
Object.is(t, i) || (typeof t == "function" && typeof i == "function" ? a.push(`prop:${e}(fn)`) : t && i && typeof t == "object" && typeof i == "object" && u8(t, i) ? a.push(`prop:${e}(ref)`) : a.push(`prop:${e}`));
|
|
48419
48455
|
}
|
|
48420
48456
|
return a;
|
|
48421
48457
|
}
|
|
48422
|
-
function
|
|
48458
|
+
function u8(e, t) {
|
|
48423
48459
|
let n = Object.keys(e), r = Object.keys(t);
|
|
48424
48460
|
if (n.length !== r.length) return !1;
|
|
48425
48461
|
for (let r of n) if (!Object.is(e[r], t[r])) return !1;
|
|
48426
48462
|
return !0;
|
|
48427
48463
|
}
|
|
48428
|
-
function
|
|
48464
|
+
function d8(e) {
|
|
48429
48465
|
let t = [], n = {};
|
|
48430
|
-
|
|
48431
|
-
if (r === "unmount" || !
|
|
48432
|
-
let i =
|
|
48466
|
+
Z6(e, (e, r) => {
|
|
48467
|
+
if (r === "unmount" || !j6(e)) return;
|
|
48468
|
+
let i = B6(e.type) ?? "Anonymous";
|
|
48433
48469
|
r === "mount" && (n[i] = (n[i] ?? 0) + 1);
|
|
48434
48470
|
let a = 0;
|
|
48435
48471
|
try {
|
|
48436
|
-
a =
|
|
48472
|
+
a = R6(e).selfTime || 0;
|
|
48437
48473
|
} catch {}
|
|
48438
48474
|
let o = [];
|
|
48439
48475
|
if (r === "update" && e.alternate) try {
|
|
48440
|
-
o =
|
|
48476
|
+
o = l8(e.alternate.memoizedProps, e.memoizedProps);
|
|
48441
48477
|
} catch {
|
|
48442
48478
|
o = ["prop:(unknown)"];
|
|
48443
48479
|
}
|
|
48444
48480
|
let s = null;
|
|
48445
48481
|
try {
|
|
48446
|
-
let t =
|
|
48482
|
+
let t = P6(e)?.stateNode;
|
|
48447
48483
|
t && typeof WeakRef < "u" && t instanceof Element && (s = new WeakRef(t));
|
|
48448
48484
|
} catch {}
|
|
48449
48485
|
t.push({
|
|
@@ -48454,10 +48490,10 @@ function a8(e) {
|
|
|
48454
48490
|
el: s
|
|
48455
48491
|
});
|
|
48456
48492
|
}), t.sort((e, t) => t.selfTime - e.selfTime);
|
|
48457
|
-
let r = t.slice(0,
|
|
48493
|
+
let r = t.slice(0, r8), i = Math.max(0, t.length - r8), a = 0;
|
|
48458
48494
|
for (let e of t) a += e.selfTime;
|
|
48459
|
-
let o =
|
|
48460
|
-
|
|
48495
|
+
let o = c8(), s = o - n8 <= a8;
|
|
48496
|
+
t8.push({
|
|
48461
48497
|
at: o,
|
|
48462
48498
|
duration: a,
|
|
48463
48499
|
entries: r,
|
|
@@ -48466,55 +48502,55 @@ function a8(e) {
|
|
|
48466
48502
|
nearInput: s
|
|
48467
48503
|
});
|
|
48468
48504
|
}
|
|
48469
|
-
function
|
|
48470
|
-
if (
|
|
48471
|
-
|
|
48505
|
+
function f8() {
|
|
48506
|
+
if (!$6 && !(typeof window > "u")) {
|
|
48507
|
+
$6 = !0;
|
|
48472
48508
|
try {
|
|
48473
|
-
|
|
48474
|
-
if (
|
|
48475
|
-
|
|
48509
|
+
Q6({ onCommitFiberRoot: (e, t) => {
|
|
48510
|
+
if (e8 && !(t8.length >= i8)) try {
|
|
48511
|
+
d8(t);
|
|
48476
48512
|
} catch {}
|
|
48477
48513
|
} });
|
|
48478
48514
|
} catch {}
|
|
48479
48515
|
}
|
|
48480
48516
|
}
|
|
48481
|
-
function
|
|
48482
|
-
if (!(typeof window > "u") && !
|
|
48483
|
-
|
|
48517
|
+
function p8() {
|
|
48518
|
+
if (!(typeof window > "u") && !e8) {
|
|
48519
|
+
t8 = [], n8 = -Infinity, f8();
|
|
48484
48520
|
try {
|
|
48485
|
-
for (let e of
|
|
48521
|
+
for (let e of s8) window.addEventListener(e, o8, {
|
|
48486
48522
|
capture: !0,
|
|
48487
48523
|
passive: !0
|
|
48488
48524
|
});
|
|
48489
48525
|
} catch {}
|
|
48490
|
-
|
|
48526
|
+
e8 = !0;
|
|
48491
48527
|
}
|
|
48492
48528
|
}
|
|
48493
|
-
function
|
|
48494
|
-
|
|
48529
|
+
function m8() {
|
|
48530
|
+
e8 = !1;
|
|
48495
48531
|
try {
|
|
48496
|
-
for (let e of
|
|
48532
|
+
for (let e of s8) window.removeEventListener(e, o8, { capture: !0 });
|
|
48497
48533
|
} catch {}
|
|
48498
|
-
let e =
|
|
48499
|
-
return
|
|
48534
|
+
let e = t8;
|
|
48535
|
+
return t8 = [], n8 = -Infinity, e;
|
|
48500
48536
|
}
|
|
48501
|
-
function
|
|
48502
|
-
let e =
|
|
48503
|
-
return
|
|
48537
|
+
function h8() {
|
|
48538
|
+
let e = t8;
|
|
48539
|
+
return t8 = [], e;
|
|
48504
48540
|
}
|
|
48505
48541
|
//#endregion
|
|
48506
48542
|
//#region src/lib/renderRulebook.ts
|
|
48507
|
-
var
|
|
48543
|
+
var g8 = {
|
|
48508
48544
|
budgets: {
|
|
48509
48545
|
selfMs: 2,
|
|
48510
48546
|
commitMs: 8
|
|
48511
48547
|
},
|
|
48512
48548
|
rules: {}
|
|
48513
|
-
},
|
|
48514
|
-
function
|
|
48515
|
-
return
|
|
48549
|
+
}, _8 = /^###\s+(R\d+)\s*[·.\-–—:]?\s*`([^`]+)`.*?\((error|warn)\)\s*$/;
|
|
48550
|
+
function v8(e) {
|
|
48551
|
+
return _8.test(e.trim());
|
|
48516
48552
|
}
|
|
48517
|
-
function
|
|
48553
|
+
function y8(e, t) {
|
|
48518
48554
|
let n = e.split("\n"), r = RegExp(`^\\s*\\*\\*${t.source}[^*]*:\\*\\*\\s*(.*)$`, "i"), i = /^\s*\*\*[^*]+:\*\*/, a = 0;
|
|
48519
48555
|
for (; a < n.length && !r.test(n[a]); a++);
|
|
48520
48556
|
if (a >= n.length) return "";
|
|
@@ -48529,43 +48565,43 @@ function p8(e, t) {
|
|
|
48529
48565
|
if (e >= n.length || i.test(n[e]) || /^###\s|^##\s|^---\s*$/.test(n[e])) break;
|
|
48530
48566
|
}
|
|
48531
48567
|
}
|
|
48532
|
-
return
|
|
48568
|
+
return b8(s.join(" ")).trim();
|
|
48533
48569
|
}
|
|
48534
|
-
function
|
|
48570
|
+
function b8(e) {
|
|
48535
48571
|
return e.replace(/\*\*([^*]+)\*\*/g, "$1").replace(/__([^_]+)__/g, "$1").replace(/(^|[\s(])[*_]([^*_\s][^*_]*?)[*_]([\s.,;:)]|$)/g, "$1$2$3").replace(/\s{2,}/g, " ");
|
|
48536
48572
|
}
|
|
48537
|
-
function
|
|
48573
|
+
function x8(e) {
|
|
48538
48574
|
let t = e.match(/≤(\d+(?:\.\d+)?)ms self/), n = e.match(/commit >(\d+(?:\.\d+)?)ms/) ?? e.match(/>(\d+(?:\.\d+)?)ms of React work/);
|
|
48539
48575
|
return {
|
|
48540
|
-
selfMs: t ? parseFloat(t[1]) :
|
|
48541
|
-
commitMs: n ? parseFloat(n[1]) :
|
|
48576
|
+
selfMs: t ? parseFloat(t[1]) : g8.budgets.selfMs,
|
|
48577
|
+
commitMs: n ? parseFloat(n[1]) : g8.budgets.commitMs
|
|
48542
48578
|
};
|
|
48543
48579
|
}
|
|
48544
|
-
function
|
|
48545
|
-
let t =
|
|
48580
|
+
function S8(e) {
|
|
48581
|
+
let t = x8(e), n = {}, r = e.split("\n"), i = 0;
|
|
48546
48582
|
for (; i < r.length;) {
|
|
48547
48583
|
let e = r[i];
|
|
48548
|
-
if (!
|
|
48584
|
+
if (!v8(e)) {
|
|
48549
48585
|
i++;
|
|
48550
48586
|
continue;
|
|
48551
48587
|
}
|
|
48552
48588
|
let t = e.trim(), a = [], o = i + 1;
|
|
48553
48589
|
for (; o < r.length; o++) {
|
|
48554
48590
|
let e = r[o];
|
|
48555
|
-
if (
|
|
48591
|
+
if (v8(e) || /^##\s/.test(e.trim()) || /^---\s*$/.test(e.trim())) break;
|
|
48556
48592
|
a.push(e);
|
|
48557
48593
|
}
|
|
48558
48594
|
try {
|
|
48559
|
-
let e = t.match(
|
|
48595
|
+
let e = t.match(_8);
|
|
48560
48596
|
if (e) {
|
|
48561
48597
|
let [, t, r, i] = e, o = a.join("\n");
|
|
48562
48598
|
n[t] = {
|
|
48563
48599
|
id: t,
|
|
48564
48600
|
slug: r,
|
|
48565
48601
|
severity: i === "warn" ? "warn" : "error",
|
|
48566
|
-
ruleText:
|
|
48567
|
-
fixText:
|
|
48568
|
-
detectText:
|
|
48602
|
+
ruleText: y8(o, /Rule/),
|
|
48603
|
+
fixText: y8(o, /Fix/),
|
|
48604
|
+
detectText: y8(o, /Detect/)
|
|
48569
48605
|
};
|
|
48570
48606
|
}
|
|
48571
48607
|
} catch {}
|
|
@@ -48579,114 +48615,122 @@ function g8(e) {
|
|
|
48579
48615
|
//#endregion
|
|
48580
48616
|
//#region src/lib/renderScanStore.ts
|
|
48581
48617
|
Br();
|
|
48582
|
-
var
|
|
48583
|
-
function y8(e) {
|
|
48584
|
-
return v8.add(e), e(_8), () => void v8.delete(e);
|
|
48585
|
-
}
|
|
48586
|
-
function b8() {
|
|
48587
|
-
_8 = [];
|
|
48588
|
-
for (let e of v8) e(_8);
|
|
48589
|
-
}
|
|
48590
|
-
function x8(e, t) {
|
|
48591
|
-
_8 = [...e, ..._8.filter((e) => e.page !== t)];
|
|
48592
|
-
for (let e of v8) e(_8);
|
|
48593
|
-
return K8(e).then(() => {
|
|
48594
|
-
_8 = [..._8];
|
|
48595
|
-
for (let e of v8) e(_8);
|
|
48596
|
-
q8(e);
|
|
48597
|
-
}), e;
|
|
48598
|
-
}
|
|
48599
|
-
var S8 = /* @__PURE__ */ new Set(), C8 = !1, w8 = null;
|
|
48618
|
+
var C8 = [], w8 = /* @__PURE__ */ new Set();
|
|
48600
48619
|
function T8(e) {
|
|
48601
|
-
return
|
|
48620
|
+
return w8.add(e), e(C8), () => void w8.delete(e);
|
|
48602
48621
|
}
|
|
48603
48622
|
function E8() {
|
|
48604
|
-
|
|
48605
|
-
|
|
48606
|
-
|
|
48607
|
-
|
|
48608
|
-
|
|
48609
|
-
|
|
48610
|
-
|
|
48611
|
-
|
|
48612
|
-
|
|
48613
|
-
|
|
48614
|
-
|
|
48615
|
-
|
|
48623
|
+
C8 = [];
|
|
48624
|
+
for (let e of w8) e(C8);
|
|
48625
|
+
}
|
|
48626
|
+
function D8(e, t) {
|
|
48627
|
+
C8 = [...e, ...C8.filter((e) => e.page !== t)];
|
|
48628
|
+
for (let e of w8) e(C8);
|
|
48629
|
+
return $8(e).then(() => {
|
|
48630
|
+
C8 = [...C8];
|
|
48631
|
+
for (let e of w8) e(C8);
|
|
48632
|
+
e5(e);
|
|
48633
|
+
}), e;
|
|
48634
|
+
}
|
|
48635
|
+
var O8 = /* @__PURE__ */ new Set(), k8 = !1, A8 = null;
|
|
48636
|
+
function j8(e) {
|
|
48637
|
+
return O8.add(e), e(k8, A8), () => void O8.delete(e);
|
|
48638
|
+
}
|
|
48639
|
+
function M8() {
|
|
48640
|
+
if (!(P8 || k8)) {
|
|
48641
|
+
p8(), k8 = !0, A8 = Date.now();
|
|
48642
|
+
for (let e of O8) e(!0, A8);
|
|
48643
|
+
}
|
|
48644
|
+
}
|
|
48645
|
+
async function N8() {
|
|
48646
|
+
if (!k8) return [];
|
|
48647
|
+
let e = m8();
|
|
48648
|
+
k8 = !1, A8 = null;
|
|
48649
|
+
for (let e of O8) e(!1, null);
|
|
48650
|
+
let t = await Y8(), n = location.pathname;
|
|
48651
|
+
return D8(Q3(e, t, { ignore: await Z8() }).map((e) => ({
|
|
48616
48652
|
...e,
|
|
48617
48653
|
page: n
|
|
48618
48654
|
})), n);
|
|
48619
48655
|
}
|
|
48620
|
-
var
|
|
48656
|
+
var P8 = !1;
|
|
48621
48657
|
try {
|
|
48622
|
-
|
|
48658
|
+
P8 = localStorage.getItem("linear-grab:render-live") === "1";
|
|
48623
48659
|
} catch {}
|
|
48624
|
-
var
|
|
48625
|
-
function A8(e) {
|
|
48626
|
-
return k8.add(e), e(O8), () => void k8.delete(e);
|
|
48627
|
-
}
|
|
48628
|
-
var j8 = 3e3, M8 = 4e3, N8 = null, P8 = [], F8 = "";
|
|
48660
|
+
var F8 = /* @__PURE__ */ new Set();
|
|
48629
48661
|
function I8(e) {
|
|
48630
|
-
|
|
48631
|
-
|
|
48662
|
+
return F8.add(e), e(P8), () => void F8.delete(e);
|
|
48663
|
+
}
|
|
48664
|
+
var L8 = 3e3, R8 = 4e3, z8 = null, B8 = [], V8 = "";
|
|
48665
|
+
function H8(e) {
|
|
48666
|
+
if (e !== P8 && !(e && k8)) {
|
|
48667
|
+
P8 = e;
|
|
48632
48668
|
try {
|
|
48633
48669
|
localStorage.setItem("linear-grab:render-live", e ? "1" : "0");
|
|
48634
48670
|
} catch {}
|
|
48635
|
-
for (let t of
|
|
48636
|
-
e ? (
|
|
48637
|
-
|
|
48671
|
+
for (let t of F8) t(e);
|
|
48672
|
+
e ? (p8(), B8 = [], V8 = location.pathname, z8 = setInterval(() => void U8(!1), L8)) : (z8 && clearInterval(z8), z8 = null, U8(!0).finally(() => {
|
|
48673
|
+
m8(), B8 = [];
|
|
48638
48674
|
}));
|
|
48639
48675
|
}
|
|
48640
48676
|
}
|
|
48641
|
-
async function
|
|
48677
|
+
async function U8(e) {
|
|
48642
48678
|
try {
|
|
48643
48679
|
let t = location.pathname;
|
|
48644
|
-
if (t !==
|
|
48645
|
-
let e =
|
|
48646
|
-
|
|
48647
|
-
|
|
48648
|
-
for (let e of
|
|
48649
|
-
|
|
48650
|
-
}),
|
|
48651
|
-
}
|
|
48652
|
-
|
|
48653
|
-
let n = await
|
|
48680
|
+
if (t !== V8) {
|
|
48681
|
+
let e = C8.filter((e) => e.page === V8);
|
|
48682
|
+
$8(e).then(() => {
|
|
48683
|
+
C8 = [...C8];
|
|
48684
|
+
for (let e of w8) e(C8);
|
|
48685
|
+
e5(e);
|
|
48686
|
+
}), B8 = [], V8 = t;
|
|
48687
|
+
}
|
|
48688
|
+
B8.push(...h8()), B8.length > R8 && B8.splice(0, B8.length - R8);
|
|
48689
|
+
let n = await Y8(), r = Q3(B8, n, { ignore: await Z8() }).map((e) => ({
|
|
48654
48690
|
...e,
|
|
48655
48691
|
page: t
|
|
48656
48692
|
}));
|
|
48657
|
-
|
|
48658
|
-
for (let e of
|
|
48693
|
+
C8 = [...r, ...C8.filter((e) => e.page !== t)];
|
|
48694
|
+
for (let e of w8) e(C8);
|
|
48659
48695
|
if (e) {
|
|
48660
|
-
await
|
|
48661
|
-
for (let e of
|
|
48662
|
-
|
|
48696
|
+
await $8(r), C8 = [...C8];
|
|
48697
|
+
for (let e of w8) e(C8);
|
|
48698
|
+
e5(r);
|
|
48663
48699
|
}
|
|
48664
48700
|
} catch {}
|
|
48665
48701
|
}
|
|
48666
|
-
function
|
|
48667
|
-
typeof window > "u" || !
|
|
48702
|
+
function W8() {
|
|
48703
|
+
typeof window > "u" || !P8 || z8 || (p8(), B8 = [], V8 = location.pathname, z8 = setInterval(() => void U8(!1), L8));
|
|
48668
48704
|
}
|
|
48669
|
-
function
|
|
48705
|
+
function G8() {
|
|
48670
48706
|
let e = location.pathname;
|
|
48671
|
-
return
|
|
48707
|
+
return D8(e6(document).map((t) => ({
|
|
48672
48708
|
...t,
|
|
48673
48709
|
page: e
|
|
48674
48710
|
})), e);
|
|
48675
48711
|
}
|
|
48676
|
-
var
|
|
48677
|
-
async function
|
|
48678
|
-
if (
|
|
48679
|
-
let e =
|
|
48712
|
+
var K8 = 5 * 6e4, q8 = null, J8 = 0;
|
|
48713
|
+
async function Y8() {
|
|
48714
|
+
if (q8 && Date.now() - J8 < K8) return q8;
|
|
48715
|
+
let e = g8;
|
|
48680
48716
|
try {
|
|
48681
48717
|
let t = await YO(), n = await (await fetch(`${t}/scan/rulebook`)).json();
|
|
48682
|
-
n.ok && n.text && (e =
|
|
48718
|
+
n.ok && n.text && (e = S8(n.text));
|
|
48683
48719
|
} catch {}
|
|
48684
|
-
return e = await
|
|
48720
|
+
return e = await Q8(e), q8 = e, J8 = Date.now(), e;
|
|
48685
48721
|
}
|
|
48686
|
-
function
|
|
48687
|
-
return
|
|
48722
|
+
function X8() {
|
|
48723
|
+
return q8;
|
|
48688
48724
|
}
|
|
48689
|
-
async function
|
|
48725
|
+
async function Z8() {
|
|
48726
|
+
try {
|
|
48727
|
+
let e = await Tr();
|
|
48728
|
+
return Array.isArray(e.renderIgnore) ? e.renderIgnore : void 0;
|
|
48729
|
+
} catch {
|
|
48730
|
+
return;
|
|
48731
|
+
}
|
|
48732
|
+
}
|
|
48733
|
+
async function Q8(e) {
|
|
48690
48734
|
try {
|
|
48691
48735
|
let t = (await Tr()).renderBudgets;
|
|
48692
48736
|
if (t && (t.selfMs != null || t.commitMs != null)) return {
|
|
@@ -48699,7 +48743,7 @@ async function G8(e) {
|
|
|
48699
48743
|
} catch {}
|
|
48700
48744
|
return e;
|
|
48701
48745
|
}
|
|
48702
|
-
async function
|
|
48746
|
+
async function $8(e) {
|
|
48703
48747
|
let t = null;
|
|
48704
48748
|
try {
|
|
48705
48749
|
t = (await Promise.resolve().then(() => (RZ(), AZ))).getGlobalApi() ?? null;
|
|
@@ -48728,7 +48772,7 @@ async function K8(e) {
|
|
|
48728
48772
|
if (!(!n && !a)) for (let e of i) !e.component && n && (e.component = n), a && (e.source = a);
|
|
48729
48773
|
}
|
|
48730
48774
|
}
|
|
48731
|
-
function
|
|
48775
|
+
function e5(e) {
|
|
48732
48776
|
if (e.length === 0) return;
|
|
48733
48777
|
let t = Date.now(), n = e.slice(0, 200).map(({ el: e, ...n }) => ({
|
|
48734
48778
|
kind: "render-scan",
|
|
@@ -48744,8 +48788,8 @@ function q8(e) {
|
|
|
48744
48788
|
}
|
|
48745
48789
|
//#endregion
|
|
48746
48790
|
//#region src/panel/views/RendersView.tsx
|
|
48747
|
-
var
|
|
48748
|
-
function
|
|
48791
|
+
var t5 = /*#__PURE__*/ N("<span class=\"text-text-faint font-normal tabular-nums\"> · <!> pages"), n5 = /*#__PURE__*/ N("<span class=\"bg-danger size-1.5 shrink-0 animate-pulse rounded-full\"aria-hidden>"), r5 = /*#__PURE__*/ N("<span class=\"text-danger inline-block min-w-[4ch] text-right text-[10.5px] font-medium tabular-nums\">"), i5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"aria-hidden><rect x=3.5 y=3.5 width=9 height=9 rx=1.5 fill=currentColor>"), a5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"aria-hidden><rect x=4 y=3.5 width=3 height=9 rx=1 fill=currentColor></rect><rect x=9 y=3.5 width=3 height=9 rx=1 fill=currentColor>"), o5 = /*#__PURE__*/ N("<span class=\"bg-success absolute -top-0.5 -right-0.5 size-1.5 animate-pulse rounded-full\"aria-hidden>"), s5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round aria-hidden><path d=\"M5.5 3 6.5 1.5h3L10.5 3h2A1.5 1.5 0 0 1 14 4.5v7A1.5 1.5 0 0 1 12.5 13h-9A1.5 1.5 0 0 1 2 11.5v-7A1.5 1.5 0 0 1 3.5 3h2Z\"></path><circle cx=8 cy=7.75 r=2.25>"), c5 = /*#__PURE__*/ N("<span class=\"text-success text-[12px] leading-none\">✓"), l5 = /*#__PURE__*/ N("<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round aria-hidden><path d=\"M4 4l8 8M12 4l-8 8\">"), u5 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1 text-[10.5px] leading-snug\">Recording commits… interact with the page."), d5 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1 text-[10.5px] leading-snug\">Live render scan — findings update as you interact and navigate."), f5 = /*#__PURE__*/ N("<div class=\"flex items-center gap-1 px-1\"><button class=\"border-border cursor-pointer rounded-full border px-2 py-0.5 text-[10px] font-medium tabular-nums\"> errors</button><button class=\"border-border cursor-pointer rounded-full border px-2 py-0.5 text-[10px] font-medium tabular-nums\"> warns"), p5 = /*#__PURE__*/ N("<div class=\"flex max-h-[28rem] flex-col gap-1.5 overflow-y-auto pr-3 pl-2\">"), m5 = /*#__PURE__*/ N("<div class=\"flex h-full flex-col gap-3 overflow-y-auto pt-3 pb-4 pr-3 pl-2\"><div class=\"flex flex-col gap-1 px-1\"><div class=\"flex items-center justify-between gap-2\"><p class=\"text-text min-w-0 truncate text-[12.5px] font-semibold\">Renders</p><div class=\"flex shrink-0 items-center gap-1\"></div></div><p class=\"text-text-faint text-[10.5px] leading-snug\">Commits graded against React-rerender-primitives.md — record then interact, go live, or snapshot the DOM. Accumulates per page."), h5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 aria-hidden><circle cx=8 cy=8 r=6></circle><circle cx=8 cy=8 r=2.25 fill=currentColor stroke=none>"), g5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"aria-hidden><path d=\"M5 3.3v9.4a.5.5 0 0 0 .77.42l7.1-4.7a.5.5 0 0 0 0-.84l-7.1-4.7A.5.5 0 0 0 5 3.3Z\"fill=currentColor>"), _5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round aria-hidden><path d=\"M8 1.5 9.6 6l4.4 1.6L9.6 9.2 8 13.7 6.4 9.2 2 7.6 6.4 6Z\"></path><path d=\"M13 11.5l.6 1.7 1.7.6-1.7.6-.6 1.7-.6-1.7-1.7-.6 1.7-.6Z\">"), v5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linejoin=round aria-hidden><rect x=5.5 y=5.5 width=9 height=9 rx=1.5></rect><path d=\"M10.5 5.5v-2a2 2 0 0 0-2-2h-5a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h2\">"), y5 = /*#__PURE__*/ N("<div class=\"border-border flex flex-col gap-1 border-t px-2 py-1.5\">"), b5 = /*#__PURE__*/ N("<div class=\"bg-surface border-border flex flex-col rounded-lg border\"><button class=\"flex w-full cursor-pointer items-center gap-2 px-2 py-1.5 text-left\"><span class=\"size-1.5 shrink-0 rounded-full\"aria-hidden></span><span class=\"text-accent min-w-0 truncate font-mono text-[11.5px]\"></span><span class=\"text-text-faint ml-auto shrink-0 text-[10.5px] tabular-nums\">×</span><svg width=10 height=10 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 class=\"text-text-faint shrink-0 transition-transform\"aria-hidden><path d=\"m4 6 4 4 4-4\">"), x5 = /*#__PURE__*/ N("<span class=\"text-accent font-mono\"> "), S5 = /*#__PURE__*/ N("<span class=\"text-text-faint tabular-nums\"> ×"), C5 = /*#__PURE__*/ N("<span class=\"flex flex-wrap gap-1\">"), w5 = /*#__PURE__*/ N("<span class=\"text-text-dim font-mono\"> · "), T5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-0.5 rounded px-1 py-0.5 text-left\"><span class=\"text-text-dim text-[10.5px] leading-snug\"></span><span class=\"text-text-faint text-[10px] leading-snug tabular-nums\">"), E5 = /*#__PURE__*/ N("<span class=\"bg-surface-2 text-text-dim rounded px-1 font-mono text-[9.5px] leading-relaxed\">");
|
|
48792
|
+
function D5(e) {
|
|
48749
48793
|
let t = e.el?.deref();
|
|
48750
48794
|
if (!(t instanceof HTMLElement) || !t.isConnected) return !1;
|
|
48751
48795
|
t.scrollIntoView({
|
|
@@ -48757,45 +48801,45 @@ function b5(e) {
|
|
|
48757
48801
|
t.style.outline = n, t.style.outlineOffset = r;
|
|
48758
48802
|
}, 1400), !0;
|
|
48759
48803
|
}
|
|
48760
|
-
function
|
|
48804
|
+
function O5(e) {
|
|
48761
48805
|
let t = Math.max(0, Math.floor(e / 1e3));
|
|
48762
48806
|
return `${Math.floor(t / 60)}:${String(t % 60).padStart(2, "0")}`;
|
|
48763
48807
|
}
|
|
48764
|
-
function
|
|
48808
|
+
function k5(e) {
|
|
48765
48809
|
return e.replace(/^prop:/, "");
|
|
48766
48810
|
}
|
|
48767
|
-
function
|
|
48811
|
+
function A5() {
|
|
48768
48812
|
let [e, t] = T([]);
|
|
48769
|
-
ae(
|
|
48813
|
+
ae(T8(t));
|
|
48770
48814
|
let [n, r] = T(!1), [i, a] = T(null), [o, s] = T(Date.now()), c = null, l = () => {
|
|
48771
48815
|
c && clearInterval(c), c = null;
|
|
48772
48816
|
};
|
|
48773
|
-
ae(l), ae(
|
|
48817
|
+
ae(l), ae(j8((e, t) => {
|
|
48774
48818
|
r(e), a(t), e ? (s(Date.now()), c ||= setInterval(() => s(Date.now()), 500)) : l();
|
|
48775
48819
|
}));
|
|
48776
48820
|
let [u, d] = T(!1);
|
|
48777
|
-
ae(
|
|
48778
|
-
let [f, p] = T(
|
|
48779
|
-
|
|
48821
|
+
ae(I8(d));
|
|
48822
|
+
let [f, p] = T(X8());
|
|
48823
|
+
Y8().then(p);
|
|
48780
48824
|
let [m, h] = T(null), [g, _] = T(null), [v, y] = T(!0), [b, x] = T(!0), [S, C] = T(!1), [w, E] = T(!1), [O, k] = T(!1), ee = async () => {
|
|
48781
48825
|
if (h(null), n()) try {
|
|
48782
|
-
let e = await
|
|
48783
|
-
p(
|
|
48826
|
+
let e = await N8();
|
|
48827
|
+
p(X8()), _(null), e.length === 0 && h("No re-render anti-patterns caught — interact more (scroll, open menus, type) between record and stop.");
|
|
48784
48828
|
} catch (e) {
|
|
48785
48829
|
h(e instanceof Error ? e.message : String(e));
|
|
48786
48830
|
}
|
|
48787
|
-
else
|
|
48831
|
+
else M8();
|
|
48788
48832
|
}, te = () => {
|
|
48789
48833
|
h(null), C(!0);
|
|
48790
48834
|
try {
|
|
48791
|
-
|
|
48835
|
+
G8(), _(null);
|
|
48792
48836
|
} catch (e) {
|
|
48793
48837
|
h(e instanceof Error ? e.message : String(e));
|
|
48794
48838
|
} finally {
|
|
48795
48839
|
C(!1);
|
|
48796
48840
|
}
|
|
48797
48841
|
}, A = () => {
|
|
48798
|
-
|
|
48842
|
+
E8(), _(null);
|
|
48799
48843
|
}, ne = () => new Set(e().map((e) => e.page)).size, re = () => e().filter((e) => e.severity === "error" ? v() : b()), ie = () => e().filter((e) => e.severity === "error").reduce((e, t) => e + (t.count ?? 1), 0), oe = () => e().reduce((e, t) => e + (t.count ?? 1), 0) - ie(), se = () => {
|
|
48800
48844
|
let e = /* @__PURE__ */ new Map();
|
|
48801
48845
|
for (let t of re()) {
|
|
@@ -48808,19 +48852,19 @@ function C5() {
|
|
|
48808
48852
|
return t ? `${e} · ${t}` : e;
|
|
48809
48853
|
}, le = async () => {
|
|
48810
48854
|
try {
|
|
48811
|
-
await navigator.clipboard.writeText(
|
|
48855
|
+
await navigator.clipboard.writeText(l6(re())), E(!0), setTimeout(() => E(!1), 1600);
|
|
48812
48856
|
} catch {
|
|
48813
48857
|
h("Clipboard was blocked — click Copy again.");
|
|
48814
48858
|
}
|
|
48815
48859
|
}, ue = async () => {
|
|
48816
48860
|
try {
|
|
48817
|
-
await navigator.clipboard.writeText(
|
|
48861
|
+
await navigator.clipboard.writeText(u6(re(), await Y8())), k(!0), setTimeout(() => k(!1), 1600);
|
|
48818
48862
|
} catch {
|
|
48819
48863
|
h("Clipboard was blocked — click Copy again.");
|
|
48820
48864
|
}
|
|
48821
48865
|
};
|
|
48822
48866
|
return (() => {
|
|
48823
|
-
var t =
|
|
48867
|
+
var t = m5(), r = t.firstChild.firstChild.firstChild;
|
|
48824
48868
|
r.firstChild;
|
|
48825
48869
|
var a = r.nextSibling;
|
|
48826
48870
|
return P(r, j(M, {
|
|
@@ -48828,7 +48872,7 @@ function C5() {
|
|
|
48828
48872
|
return ne() > 1;
|
|
48829
48873
|
},
|
|
48830
48874
|
get children() {
|
|
48831
|
-
var e =
|
|
48875
|
+
var e = t5(), t = e.firstChild.nextSibling;
|
|
48832
48876
|
return t.nextSibling, P(e, ne, t), e;
|
|
48833
48877
|
}
|
|
48834
48878
|
}), null), P(a, j(M, {
|
|
@@ -48836,9 +48880,9 @@ function C5() {
|
|
|
48836
48880
|
return n();
|
|
48837
48881
|
},
|
|
48838
48882
|
get children() {
|
|
48839
|
-
return [
|
|
48840
|
-
var e =
|
|
48841
|
-
return P(e, () =>
|
|
48883
|
+
return [n5(), (() => {
|
|
48884
|
+
var e = r5();
|
|
48885
|
+
return P(e, () => O5(o() - (i() ?? o()))), e;
|
|
48842
48886
|
})()];
|
|
48843
48887
|
}
|
|
48844
48888
|
}), null), P(a, j(q, {
|
|
@@ -48846,6 +48890,7 @@ function C5() {
|
|
|
48846
48890
|
get variant() {
|
|
48847
48891
|
return n() ? "danger" : "ghost";
|
|
48848
48892
|
},
|
|
48893
|
+
"data-tip-pos": "bottom left",
|
|
48849
48894
|
get disabled() {
|
|
48850
48895
|
return u();
|
|
48851
48896
|
},
|
|
@@ -48862,16 +48907,17 @@ function C5() {
|
|
|
48862
48907
|
return n();
|
|
48863
48908
|
},
|
|
48864
48909
|
get fallback() {
|
|
48865
|
-
return
|
|
48910
|
+
return h5();
|
|
48866
48911
|
},
|
|
48867
48912
|
get children() {
|
|
48868
|
-
return
|
|
48913
|
+
return i5();
|
|
48869
48914
|
}
|
|
48870
48915
|
});
|
|
48871
48916
|
}
|
|
48872
48917
|
}), null), P(a, j(q, {
|
|
48873
48918
|
class: "relative size-7 px-0",
|
|
48874
48919
|
variant: "ghost",
|
|
48920
|
+
"data-tip-pos": "bottom left",
|
|
48875
48921
|
get disabled() {
|
|
48876
48922
|
return n();
|
|
48877
48923
|
},
|
|
@@ -48879,30 +48925,31 @@ function C5() {
|
|
|
48879
48925
|
return u() ? "Pause live render scan" : "Live render scan — findings update as you browse";
|
|
48880
48926
|
},
|
|
48881
48927
|
"aria-label": "Toggle live render scan",
|
|
48882
|
-
onClick: () =>
|
|
48928
|
+
onClick: () => H8(!u()),
|
|
48883
48929
|
get children() {
|
|
48884
48930
|
return [j(M, {
|
|
48885
48931
|
get when() {
|
|
48886
48932
|
return u();
|
|
48887
48933
|
},
|
|
48888
48934
|
get fallback() {
|
|
48889
|
-
return
|
|
48935
|
+
return g5();
|
|
48890
48936
|
},
|
|
48891
48937
|
get children() {
|
|
48892
|
-
return
|
|
48938
|
+
return a5();
|
|
48893
48939
|
}
|
|
48894
48940
|
}), j(M, {
|
|
48895
48941
|
get when() {
|
|
48896
48942
|
return u();
|
|
48897
48943
|
},
|
|
48898
48944
|
get children() {
|
|
48899
|
-
return
|
|
48945
|
+
return o5();
|
|
48900
48946
|
}
|
|
48901
48947
|
})];
|
|
48902
48948
|
}
|
|
48903
48949
|
}), null), P(a, j(q, {
|
|
48904
48950
|
class: "size-7 px-0",
|
|
48905
48951
|
variant: "ghost",
|
|
48952
|
+
"data-tip-pos": "bottom left",
|
|
48906
48953
|
get loading() {
|
|
48907
48954
|
return S();
|
|
48908
48955
|
},
|
|
@@ -48910,11 +48957,12 @@ function C5() {
|
|
|
48910
48957
|
"aria-label": "Snapshot scan",
|
|
48911
48958
|
onClick: te,
|
|
48912
48959
|
get children() {
|
|
48913
|
-
return
|
|
48960
|
+
return s5();
|
|
48914
48961
|
}
|
|
48915
48962
|
}), null), P(a, j(q, {
|
|
48916
48963
|
class: "size-7 px-0",
|
|
48917
48964
|
variant: "ghost",
|
|
48965
|
+
"data-tip-pos": "bottom left",
|
|
48918
48966
|
get title() {
|
|
48919
48967
|
return O() ? "Copied!" : "Copy AI fix prompt";
|
|
48920
48968
|
},
|
|
@@ -48926,16 +48974,17 @@ function C5() {
|
|
|
48926
48974
|
return O();
|
|
48927
48975
|
},
|
|
48928
48976
|
get fallback() {
|
|
48929
|
-
return
|
|
48977
|
+
return _5();
|
|
48930
48978
|
},
|
|
48931
48979
|
get children() {
|
|
48932
|
-
return
|
|
48980
|
+
return c5();
|
|
48933
48981
|
}
|
|
48934
48982
|
});
|
|
48935
48983
|
}
|
|
48936
48984
|
}), null), P(a, j(q, {
|
|
48937
48985
|
class: "size-7 px-0",
|
|
48938
48986
|
variant: "ghost",
|
|
48987
|
+
"data-tip-pos": "bottom left",
|
|
48939
48988
|
get title() {
|
|
48940
48989
|
return w() ? "Copied!" : "Copy report";
|
|
48941
48990
|
},
|
|
@@ -48947,21 +48996,22 @@ function C5() {
|
|
|
48947
48996
|
return w();
|
|
48948
48997
|
},
|
|
48949
48998
|
get fallback() {
|
|
48950
|
-
return
|
|
48999
|
+
return v5();
|
|
48951
49000
|
},
|
|
48952
49001
|
get children() {
|
|
48953
|
-
return
|
|
49002
|
+
return c5();
|
|
48954
49003
|
}
|
|
48955
49004
|
});
|
|
48956
49005
|
}
|
|
48957
49006
|
}), null), P(a, j(q, {
|
|
48958
49007
|
class: "text-danger size-7 px-0",
|
|
48959
49008
|
variant: "ghost",
|
|
49009
|
+
"data-tip-pos": "bottom left",
|
|
48960
49010
|
title: "Clear findings",
|
|
48961
49011
|
"aria-label": "Clear findings",
|
|
48962
49012
|
onClick: A,
|
|
48963
49013
|
get children() {
|
|
48964
|
-
return
|
|
49014
|
+
return l5();
|
|
48965
49015
|
}
|
|
48966
49016
|
}), null), P(t, j(M, {
|
|
48967
49017
|
get when() {
|
|
@@ -48977,14 +49027,14 @@ function C5() {
|
|
|
48977
49027
|
return n();
|
|
48978
49028
|
},
|
|
48979
49029
|
get children() {
|
|
48980
|
-
return
|
|
49030
|
+
return u5();
|
|
48981
49031
|
}
|
|
48982
49032
|
}), null), P(t, j(M, {
|
|
48983
49033
|
get when() {
|
|
48984
49034
|
return $e(() => !!u())() && !n();
|
|
48985
49035
|
},
|
|
48986
49036
|
get children() {
|
|
48987
|
-
return
|
|
49037
|
+
return d5();
|
|
48988
49038
|
}
|
|
48989
49039
|
}), null), P(t, j(M, {
|
|
48990
49040
|
get when() {
|
|
@@ -49005,7 +49055,7 @@ function C5() {
|
|
|
49005
49055
|
},
|
|
49006
49056
|
get children() {
|
|
49007
49057
|
return [(() => {
|
|
49008
|
-
var e =
|
|
49058
|
+
var e = f5(), t = e.firstChild, n = t.firstChild, r = t.nextSibling, i = r.firstChild;
|
|
49009
49059
|
return t.$$click = () => y(!v()), P(t, ie, n), r.$$click = () => x(!b()), P(r, oe, i), D((e) => {
|
|
49010
49060
|
var n = {
|
|
49011
49061
|
"text-danger bg-danger/10 border-danger/40": v(),
|
|
@@ -49022,7 +49072,7 @@ function C5() {
|
|
|
49022
49072
|
o: void 0
|
|
49023
49073
|
}), e;
|
|
49024
49074
|
})(), (() => {
|
|
49025
|
-
var e =
|
|
49075
|
+
var e = p5();
|
|
49026
49076
|
return P(e, j(We, {
|
|
49027
49077
|
get each() {
|
|
49028
49078
|
return se();
|
|
@@ -49030,7 +49080,7 @@ function C5() {
|
|
|
49030
49080
|
children: ([e, t]) => {
|
|
49031
49081
|
let n = t[0], r = () => g() === e;
|
|
49032
49082
|
return (() => {
|
|
49033
|
-
var i =
|
|
49083
|
+
var i = b5(), a = i.firstChild, o = a.firstChild, s = o.nextSibling, c = s.nextSibling;
|
|
49034
49084
|
c.firstChild;
|
|
49035
49085
|
var l = c.nextSibling;
|
|
49036
49086
|
return a.$$click = () => _(r() ? null : e), P(s, () => ce(e)), P(c, () => t.reduce((e, t) => e + (t.count ?? 1), 0), null), P(i, j(M, {
|
|
@@ -49038,21 +49088,21 @@ function C5() {
|
|
|
49038
49088
|
return r();
|
|
49039
49089
|
},
|
|
49040
49090
|
get children() {
|
|
49041
|
-
var e =
|
|
49091
|
+
var e = y5();
|
|
49042
49092
|
return P(e, j(We, {
|
|
49043
49093
|
each: t,
|
|
49044
49094
|
children: (e) => {
|
|
49045
49095
|
let t = () => e.el?.deref() != null;
|
|
49046
49096
|
return (() => {
|
|
49047
|
-
var n =
|
|
49097
|
+
var n = T5(), r = n.firstChild, i = r.nextSibling;
|
|
49048
49098
|
return n.$$click = () => {
|
|
49049
|
-
t() && (
|
|
49099
|
+
t() && (D5(e) || h(e.page === location.pathname ? "Element is gone — record or snapshot again." : `This finding is on ${e.page} — navigate there to reveal it.`));
|
|
49050
49100
|
}, P(r, j(M, {
|
|
49051
49101
|
get when() {
|
|
49052
49102
|
return ne() > 1;
|
|
49053
49103
|
},
|
|
49054
49104
|
get children() {
|
|
49055
|
-
var t =
|
|
49105
|
+
var t = x5(), n = t.firstChild;
|
|
49056
49106
|
return P(t, () => e.page, n), t;
|
|
49057
49107
|
}
|
|
49058
49108
|
}), null), P(r, () => e.description, null), P(r, j(M, {
|
|
@@ -49060,7 +49110,7 @@ function C5() {
|
|
|
49060
49110
|
return (e.count ?? 1) > 1;
|
|
49061
49111
|
},
|
|
49062
49112
|
get children() {
|
|
49063
|
-
var t =
|
|
49113
|
+
var t = S5();
|
|
49064
49114
|
return t.firstChild, P(t, () => e.count, null), t;
|
|
49065
49115
|
}
|
|
49066
49116
|
}), null), P(n, j(M, {
|
|
@@ -49068,14 +49118,14 @@ function C5() {
|
|
|
49068
49118
|
return e.changes.length > 0;
|
|
49069
49119
|
},
|
|
49070
49120
|
get children() {
|
|
49071
|
-
var t =
|
|
49121
|
+
var t = C5();
|
|
49072
49122
|
return P(t, j(We, {
|
|
49073
49123
|
get each() {
|
|
49074
49124
|
return e.changes;
|
|
49075
49125
|
},
|
|
49076
49126
|
children: (e) => (() => {
|
|
49077
|
-
var t =
|
|
49078
|
-
return P(t, () =>
|
|
49127
|
+
var t = E5();
|
|
49128
|
+
return P(t, () => k5(e)), t;
|
|
49079
49129
|
})()
|
|
49080
49130
|
})), t;
|
|
49081
49131
|
}
|
|
@@ -49084,7 +49134,7 @@ function C5() {
|
|
|
49084
49134
|
return e.component || e.source;
|
|
49085
49135
|
},
|
|
49086
49136
|
get children() {
|
|
49087
|
-
var t =
|
|
49137
|
+
var t = w5();
|
|
49088
49138
|
return t.firstChild, P(t, () => [e.component, e.source].filter(Boolean).join(" @ "), null), t;
|
|
49089
49139
|
}
|
|
49090
49140
|
}), null), D((e) => {
|
|
@@ -49117,7 +49167,7 @@ function C5() {
|
|
|
49117
49167
|
rt(["click"]);
|
|
49118
49168
|
//#endregion
|
|
49119
49169
|
//#region src/lib/projectConfig.ts
|
|
49120
|
-
var
|
|
49170
|
+
var j5 = [
|
|
49121
49171
|
"defaultTeamId",
|
|
49122
49172
|
"defaultProjectId",
|
|
49123
49173
|
"defaultLabelIds",
|
|
@@ -49131,31 +49181,32 @@ var w5 = [
|
|
|
49131
49181
|
"logLines",
|
|
49132
49182
|
"issueTemplate",
|
|
49133
49183
|
"testUsername",
|
|
49134
|
-
"renderBudgets"
|
|
49184
|
+
"renderBudgets",
|
|
49185
|
+
"renderIgnore"
|
|
49135
49186
|
];
|
|
49136
|
-
function
|
|
49187
|
+
function M5(e) {
|
|
49137
49188
|
let t = {};
|
|
49138
|
-
for (let n of
|
|
49189
|
+
for (let n of j5) {
|
|
49139
49190
|
let r = e[n];
|
|
49140
49191
|
r !== void 0 && r !== "" && !(Array.isArray(r) && r.length === 0) && (t[n] = r);
|
|
49141
49192
|
}
|
|
49142
49193
|
return t;
|
|
49143
49194
|
}
|
|
49144
|
-
function
|
|
49195
|
+
function N5(e, t) {
|
|
49145
49196
|
let n = {};
|
|
49146
|
-
for (let r of
|
|
49197
|
+
for (let r of j5) e[r] === void 0 && t[r] !== void 0 && (n[r] = t[r]);
|
|
49147
49198
|
return Object.keys(n).length ? n : null;
|
|
49148
49199
|
}
|
|
49149
49200
|
//#endregion
|
|
49150
49201
|
//#region src/lib/linear/auth.ts
|
|
49151
49202
|
Br();
|
|
49152
|
-
function
|
|
49203
|
+
function P5(e) {
|
|
49153
49204
|
let t = "";
|
|
49154
49205
|
for (let n of e) t += String.fromCharCode(n);
|
|
49155
49206
|
return btoa(t).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
49156
49207
|
}
|
|
49157
|
-
async function
|
|
49158
|
-
let t =
|
|
49208
|
+
async function F5(e) {
|
|
49209
|
+
let t = P5(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(32))), n = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(t)), r = P5(new Uint8Array(n)), i = P5(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(16))), a = chrome.identity.getRedirectURL(), o = new URL("https://linear.app/oauth/authorize");
|
|
49159
49210
|
o.searchParams.set("client_id", e), o.searchParams.set("redirect_uri", a), o.searchParams.set("response_type", "code"), o.searchParams.set("scope", "read,write"), o.searchParams.set("state", i), o.searchParams.set("code_challenge", r), o.searchParams.set("code_challenge_method", "S256");
|
|
49160
49211
|
let s = await chrome.identity.launchWebAuthFlow({
|
|
49161
49212
|
url: o.toString(),
|
|
@@ -49183,15 +49234,15 @@ async function O5(e) {
|
|
|
49183
49234
|
linearOauthClientId: e
|
|
49184
49235
|
});
|
|
49185
49236
|
}
|
|
49186
|
-
async function
|
|
49237
|
+
async function I5() {
|
|
49187
49238
|
await Er({
|
|
49188
49239
|
linearAccessToken: void 0,
|
|
49189
49240
|
linearApiKey: void 0
|
|
49190
49241
|
});
|
|
49191
49242
|
}
|
|
49192
49243
|
Br(), Sr(), Ix(), _D();
|
|
49193
|
-
var
|
|
49194
|
-
function
|
|
49244
|
+
var L5 = /*#__PURE__*/ N("<div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\">"), R5 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Cloud: picking an element opens the panel to draft & delegate to the Cursor agent. Local (react-grab style): picking auto-copies the element's context — source, stack, and your skills/memory paths — straight to the clipboard for a local Claude Code or Cursor session; the panel stays out of the way. Both share the same picker; switch anytime."), z5 = /*#__PURE__*/ N("<label class=\"flex cursor-pointer items-center gap-2 select-none\"><input type=checkbox class=\"accent-accent rounded\"><span class=\"text-text text-[12px]\">Element screenshots"), B5 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Captures a highlighted screenshot of each picked element and attaches it to the issue. Costs a beat on huge pages — with this off, picking is instant (pure react-grab speed)."), V5 = /*#__PURE__*/ N("<span class=text-text>Connected as <span class=font-medium></span> · <span class=text-text-dim>"), H5 = /*#__PURE__*/ N("<div class=\"bg-surface border-border flex items-center justify-between rounded-lg border p-2.5\"><span class=\"text-text text-[12px]\">"), U5 = /*#__PURE__*/ N("<option value>Select a team…"), W5 = /*#__PURE__*/ N("<option value>No project"), G5 = /*#__PURE__*/ N("<div class=\"flex flex-wrap gap-1\">"), K5 = /*#__PURE__*/ N("<label class=\"flex items-start gap-2\"><input type=checkbox class=\"accent-accent mt-0.5\"><span class=\"flex flex-col gap-0.5\"><span class=text-[12px]>Let agents close out Linear themselves</span><span class=\"text-text-faint text-[10.5px] leading-snug\">Embeds your Linear API key + raw GraphQL closeout recipes in every issue's Agent instructions — cloud agent VMs have no authenticated Linear MCP, so without this they can't comment, attach media, or move the issue. The key is visible to anyone who can read the issue."), q5 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">No agents found — install the Cursor integration in Linear first."), J5 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Empty = the default above (computer-use testing, video demo, PR + review babysitting)."), Y5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1.5\">"), X5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1\"><span class=\"text-text-dim text-[11px] font-medium\">Mode</span><div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\"></div><span class=\"text-text-faint text-[10.5px] leading-snug\">Beside page squeezes the app next to the panel, DevTools-style — nothing gets covered. Also toggleable from the dock icon in the panel header."), Z5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1\"><span class=\"text-text-dim text-[11px] font-medium\">Dock side</span><div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\"></div><span class=\"text-text-faint text-[10.5px] leading-snug\">The launcher pill is draggable — park it anywhere it doesn't cover your app."), Q5 = /*#__PURE__*/ N("<p class=\"text-text-faint text-[10.5px] leading-snug\">A committed <code>.lineargrab.json</code> at the repo root (where the bridge runs) shares team/project/labels, skills, staging branch, and workflow defaults with every machine and teammate — it seeds any setting you haven't set locally. Secrets never belong in it."), $5 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[10ch] text-center\">"), e7 = /*#__PURE__*/ N("<div class=\"flex items-center gap-2\">"), t7 = /*#__PURE__*/ N("<option value>Select a channel…"), n7 = /*#__PURE__*/ N("<label class=\"flex cursor-pointer items-center gap-2 select-none\"><input type=checkbox class=\"accent-accent rounded\"><span class=\"text-text text-[12px]\">Announce new issues on create"), r7 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">⚠️ Tokens are embedded in issue Agent-instructions so agents can post the finished demo — everyone who can read the issue can read them. Use single-channel-scoped bots."), i7 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1\"><span class=\"text-text-dim text-[11px] font-medium\">Provider preference</span><div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\"><button>Auto</button><button>OpenAI</button><button>Anthropic"), a7 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">"), o7 = /*#__PURE__*/ N("<div class=min-h-[2lh]>"), s7 = /*#__PURE__*/ N("<ol class=\"text-text-faint flex list-decimal flex-col gap-1 pl-4 text-[11px] leading-relaxed\"><li>Pick an element on your running dev app.</li><li>Draft the issue (AI optional).</li><li>Create + delegate — Cursor's cloud agent fixes it and opens a PR.</li><li>Track and steer it from Activity."), c7 = /*#__PURE__*/ N("<div class=\"flex h-full flex-col gap-5 overflow-y-auto pt-3 pb-6 pl-3 pr-4\">"), l7 = /*#__PURE__*/ N("<button>"), u7 = /*#__PURE__*/ N("<div class=\"flex gap-1.5\">"), d7 = /*#__PURE__*/ N("<p class=\"text-text-faint text-center text-[10.5px]\">or"), f7 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Register this callback URL in your Linear OAuth app config:<br><span class=\"font-mono text-[10.5px] break-all\">"), p7 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-3\">"), m7 = /*#__PURE__*/ N("<span class=text-text-dim>Connected — verifying…"), h7 = /*#__PURE__*/ N("<option> (<!>)"), g7 = /*#__PURE__*/ N("<option>"), _7 = /*#__PURE__*/ N("<button type=button><span class=\"mr-1 inline-block size-2 rounded-full align-middle\">"), v7 = /*#__PURE__*/ N("<option value>Select the agent…"), y7 = /*#__PURE__*/ N("<option>#"), b7 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">No key set — AI drafting disabled, manual drafting still works.");
|
|
49245
|
+
function x7() {
|
|
49195
49246
|
let e = sr(), t = _r(() => ({
|
|
49196
49247
|
queryKey: ["settings"],
|
|
49197
49248
|
queryFn: Tr,
|
|
@@ -49219,13 +49270,13 @@ function m7() {
|
|
|
49219
49270
|
retry: 0
|
|
49220
49271
|
})), [l, u] = T(!1), d = async () => {
|
|
49221
49272
|
try {
|
|
49222
|
-
await navigator.clipboard.writeText(JSON.stringify(
|
|
49273
|
+
await navigator.clipboard.writeText(JSON.stringify(M5(n()), null, 2) + "\n"), u(!0), setTimeout(() => u(!1), 1800);
|
|
49223
49274
|
} catch {}
|
|
49224
49275
|
}, f = () => {
|
|
49225
49276
|
let e = c.data?.projectConfig;
|
|
49226
49277
|
if (!e) return;
|
|
49227
49278
|
let t = {};
|
|
49228
|
-
for (let n of
|
|
49279
|
+
for (let n of j5) e[n] !== void 0 && (t[n] = e[n]);
|
|
49229
49280
|
r(t);
|
|
49230
49281
|
}, p = _r(() => ({
|
|
49231
49282
|
queryKey: ["linear-labels"],
|
|
@@ -49258,7 +49309,7 @@ function m7() {
|
|
|
49258
49309
|
}
|
|
49259
49310
|
E(!0), ee("");
|
|
49260
49311
|
try {
|
|
49261
|
-
await
|
|
49312
|
+
await F5(t), await e.invalidateQueries({ queryKey: ["settings"] }), await e.invalidateQueries({ queryKey: ["viewer"] }), await e.invalidateQueries({ queryKey: ["teams"] }), await e.invalidateQueries({ queryKey: ["agents"] }), await e.invalidateQueries({ queryKey: ["my-issues"] });
|
|
49262
49313
|
} catch (e) {
|
|
49263
49314
|
ee(e instanceof Error ? e.message : "OAuth flow failed.");
|
|
49264
49315
|
} finally {
|
|
@@ -49269,7 +49320,7 @@ function m7() {
|
|
|
49269
49320
|
async function re() {
|
|
49270
49321
|
ne(!0);
|
|
49271
49322
|
try {
|
|
49272
|
-
await
|
|
49323
|
+
await I5(), await e.invalidateQueries({ queryKey: ["settings"] }), await e.invalidateQueries({ queryKey: ["viewer"] }), await e.invalidateQueries({ queryKey: ["teams"] }), await e.invalidateQueries({ queryKey: ["agents"] }), await e.invalidateQueries({ queryKey: ["my-issues"] });
|
|
49273
49324
|
} finally {
|
|
49274
49325
|
ne(!1);
|
|
49275
49326
|
}
|
|
@@ -49285,12 +49336,12 @@ function m7() {
|
|
|
49285
49336
|
return e ? `Drafting with ${e} — ${Px[e].fast} (fast) / ${Px[e].best} (best)` : null;
|
|
49286
49337
|
});
|
|
49287
49338
|
return (() => {
|
|
49288
|
-
var e =
|
|
49339
|
+
var e = c7();
|
|
49289
49340
|
return P(e, j(Rj, {
|
|
49290
49341
|
title: "Workflow",
|
|
49291
49342
|
get children() {
|
|
49292
49343
|
return [(() => {
|
|
49293
|
-
var e =
|
|
49344
|
+
var e = L5();
|
|
49294
49345
|
return P(e, j(We, {
|
|
49295
49346
|
each: [{
|
|
49296
49347
|
id: "cloud",
|
|
@@ -49300,19 +49351,19 @@ function m7() {
|
|
|
49300
49351
|
label: "Local · clipboard"
|
|
49301
49352
|
}],
|
|
49302
49353
|
children: (e) => (() => {
|
|
49303
|
-
var t =
|
|
49354
|
+
var t = l7();
|
|
49304
49355
|
return t.$$click = () => void r({ workflowMode: e.id }), P(t, () => e.label), D(() => st(t, `flex-1 rounded-[5px] px-2 py-1 text-[11.5px] font-medium transition-colors ${(n().workflowMode ?? "cloud") === e.id ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer"}`)), t;
|
|
49305
49356
|
})()
|
|
49306
49357
|
})), e;
|
|
49307
|
-
})(),
|
|
49358
|
+
})(), R5()];
|
|
49308
49359
|
}
|
|
49309
49360
|
}), null), P(e, j(Rj, {
|
|
49310
49361
|
title: "Capture",
|
|
49311
49362
|
get children() {
|
|
49312
49363
|
return [(() => {
|
|
49313
|
-
var e =
|
|
49364
|
+
var e = z5(), t = e.firstChild;
|
|
49314
49365
|
return t.addEventListener("change", (e) => void r({ captureShots: e.currentTarget.checked || void 0 })), D(() => t.checked = !!n().captureShots), e;
|
|
49315
|
-
})(),
|
|
49366
|
+
})(), B5()];
|
|
49316
49367
|
}
|
|
49317
49368
|
}), null), P(e, j(Rj, {
|
|
49318
49369
|
title: "Linear",
|
|
@@ -49323,13 +49374,13 @@ function m7() {
|
|
|
49323
49374
|
},
|
|
49324
49375
|
get fallback() {
|
|
49325
49376
|
return (() => {
|
|
49326
|
-
var e =
|
|
49377
|
+
var e = p7();
|
|
49327
49378
|
return P(e, j(Lj, {
|
|
49328
49379
|
label: "Personal API key",
|
|
49329
49380
|
hint: "Create one at linear.app → Settings → API — fastest path.",
|
|
49330
49381
|
get children() {
|
|
49331
49382
|
return [(() => {
|
|
49332
|
-
var e =
|
|
49383
|
+
var e = u7();
|
|
49333
49384
|
return P(e, j(jj, {
|
|
49334
49385
|
type: "password",
|
|
49335
49386
|
placeholder: "lin_api_…",
|
|
@@ -49366,12 +49417,12 @@ function m7() {
|
|
|
49366
49417
|
}), null), P(e, j(M, {
|
|
49367
49418
|
when: xr,
|
|
49368
49419
|
get children() {
|
|
49369
|
-
return [
|
|
49420
|
+
return [d7(), j(Lj, {
|
|
49370
49421
|
label: "OAuth client ID",
|
|
49371
49422
|
get children() {
|
|
49372
49423
|
return [
|
|
49373
49424
|
(() => {
|
|
49374
|
-
var e =
|
|
49425
|
+
var e = u7();
|
|
49375
49426
|
return P(e, j(jj, {
|
|
49376
49427
|
placeholder: "your-client-id",
|
|
49377
49428
|
get value() {
|
|
@@ -49399,7 +49450,7 @@ function m7() {
|
|
|
49399
49450
|
}
|
|
49400
49451
|
}),
|
|
49401
49452
|
(() => {
|
|
49402
|
-
var e =
|
|
49453
|
+
var e = f7(), t = e.firstChild.nextSibling.nextSibling;
|
|
49403
49454
|
return P(t, ie), e;
|
|
49404
49455
|
})()
|
|
49405
49456
|
];
|
|
@@ -49410,13 +49461,13 @@ function m7() {
|
|
|
49410
49461
|
})();
|
|
49411
49462
|
},
|
|
49412
49463
|
get children() {
|
|
49413
|
-
var e =
|
|
49464
|
+
var e = H5(), t = e.firstChild;
|
|
49414
49465
|
return P(t, j(M, {
|
|
49415
49466
|
get when() {
|
|
49416
49467
|
return !a.isLoading;
|
|
49417
49468
|
},
|
|
49418
49469
|
get fallback() {
|
|
49419
|
-
return
|
|
49470
|
+
return m7();
|
|
49420
49471
|
},
|
|
49421
49472
|
get children() {
|
|
49422
49473
|
return j(M, {
|
|
@@ -49429,7 +49480,7 @@ function m7() {
|
|
|
49429
49480
|
return a.isError;
|
|
49430
49481
|
},
|
|
49431
49482
|
get fallback() {
|
|
49432
|
-
return
|
|
49483
|
+
return m7();
|
|
49433
49484
|
},
|
|
49434
49485
|
get children() {
|
|
49435
49486
|
return j(Hj, { message: "Key rejected — reconnect" });
|
|
@@ -49437,7 +49488,7 @@ function m7() {
|
|
|
49437
49488
|
});
|
|
49438
49489
|
},
|
|
49439
49490
|
get children() {
|
|
49440
|
-
var e =
|
|
49491
|
+
var e = V5(), t = e.firstChild.nextSibling, n = t.nextSibling.nextSibling;
|
|
49441
49492
|
return P(t, () => a.data.name), P(n, () => a.data.email), e;
|
|
49442
49493
|
}
|
|
49443
49494
|
});
|
|
@@ -49478,7 +49529,7 @@ function m7() {
|
|
|
49478
49529
|
return o.isLoading;
|
|
49479
49530
|
},
|
|
49480
49531
|
get children() {
|
|
49481
|
-
return [
|
|
49532
|
+
return [U5(), j(M, {
|
|
49482
49533
|
get when() {
|
|
49483
49534
|
return o.data;
|
|
49484
49535
|
},
|
|
@@ -49488,7 +49539,7 @@ function m7() {
|
|
|
49488
49539
|
return o.data;
|
|
49489
49540
|
},
|
|
49490
49541
|
children: (e) => (() => {
|
|
49491
|
-
var t =
|
|
49542
|
+
var t = h7(), r = t.firstChild, i = r.nextSibling;
|
|
49492
49543
|
return i.nextSibling, P(t, () => e.name, r), P(t, () => e.key, i), D(() => t.selected = e.id === n().defaultTeamId), D(() => t.value = e.id), t;
|
|
49493
49544
|
})()
|
|
49494
49545
|
});
|
|
@@ -49512,14 +49563,14 @@ function m7() {
|
|
|
49512
49563
|
},
|
|
49513
49564
|
get children() {
|
|
49514
49565
|
return [(() => {
|
|
49515
|
-
var e =
|
|
49566
|
+
var e = W5();
|
|
49516
49567
|
return D(() => e.selected = !n().defaultProjectId), e;
|
|
49517
49568
|
})(), j(We, {
|
|
49518
49569
|
get each() {
|
|
49519
49570
|
return s.data ?? [];
|
|
49520
49571
|
},
|
|
49521
49572
|
children: (e) => (() => {
|
|
49522
|
-
var t =
|
|
49573
|
+
var t = g7();
|
|
49523
49574
|
return P(t, () => e.name), D(() => t.selected = e.id === n().defaultProjectId), D(() => t.value = e.id), t;
|
|
49524
49575
|
})()
|
|
49525
49576
|
})];
|
|
@@ -49531,7 +49582,7 @@ function m7() {
|
|
|
49531
49582
|
label: "Default labels",
|
|
49532
49583
|
hint: "Applied to every issue created from the panel.",
|
|
49533
49584
|
get children() {
|
|
49534
|
-
var e =
|
|
49585
|
+
var e = G5();
|
|
49535
49586
|
return P(e, j(We, {
|
|
49536
49587
|
get each() {
|
|
49537
49588
|
return p.data ?? [];
|
|
@@ -49539,7 +49590,7 @@ function m7() {
|
|
|
49539
49590
|
children: (e) => {
|
|
49540
49591
|
let t = () => (n().defaultLabelIds ?? []).includes(e.id);
|
|
49541
49592
|
return (() => {
|
|
49542
|
-
var i =
|
|
49593
|
+
var i = _7(), a = i.firstChild;
|
|
49543
49594
|
return i.$$click = () => {
|
|
49544
49595
|
let i = n().defaultLabelIds ?? [];
|
|
49545
49596
|
r({ defaultLabelIds: t() ? i.filter((t) => t !== e.id) : [...i, e.id] });
|
|
@@ -49556,7 +49607,7 @@ function m7() {
|
|
|
49556
49607
|
}
|
|
49557
49608
|
}),
|
|
49558
49609
|
(() => {
|
|
49559
|
-
var e =
|
|
49610
|
+
var e = K5(), t = e.firstChild;
|
|
49560
49611
|
return t.addEventListener("change", (e) => void r({ shareLinearKey: e.currentTarget.checked })), D(() => t.checked = !!n().shareLinearKey), e;
|
|
49561
49612
|
})(),
|
|
49562
49613
|
j(Lj, {
|
|
@@ -49606,7 +49657,7 @@ function m7() {
|
|
|
49606
49657
|
return m.isLoading;
|
|
49607
49658
|
},
|
|
49608
49659
|
get children() {
|
|
49609
|
-
return [
|
|
49660
|
+
return [v7(), j(M, {
|
|
49610
49661
|
get when() {
|
|
49611
49662
|
return m.data;
|
|
49612
49663
|
},
|
|
@@ -49616,7 +49667,7 @@ function m7() {
|
|
|
49616
49667
|
return m.data;
|
|
49617
49668
|
},
|
|
49618
49669
|
children: (e) => (() => {
|
|
49619
|
-
var t =
|
|
49670
|
+
var t = g7();
|
|
49620
49671
|
return P(t, () => e.displayName), D(() => t.selected = e.id === n().cursorAgentId), D(() => t.value = e.id), t;
|
|
49621
49672
|
})()
|
|
49622
49673
|
});
|
|
@@ -49626,7 +49677,7 @@ function m7() {
|
|
|
49626
49677
|
});
|
|
49627
49678
|
},
|
|
49628
49679
|
get children() {
|
|
49629
|
-
return
|
|
49680
|
+
return q5();
|
|
49630
49681
|
}
|
|
49631
49682
|
});
|
|
49632
49683
|
}
|
|
@@ -49674,7 +49725,7 @@ function m7() {
|
|
|
49674
49725
|
onBlur: (e) => {
|
|
49675
49726
|
r({ issueTemplate: e.currentTarget.value.trim() || void 0 });
|
|
49676
49727
|
}
|
|
49677
|
-
}),
|
|
49728
|
+
}), J5()];
|
|
49678
49729
|
}
|
|
49679
49730
|
}),
|
|
49680
49731
|
j(Lj, {
|
|
@@ -49731,7 +49782,7 @@ function m7() {
|
|
|
49731
49782
|
label: "Test account",
|
|
49732
49783
|
hint: "The cloud agent logs into the app with this while testing and recording its demo. Added to every issue's Agent instructions. Use a throwaway account — it's visible to everyone who can read the issue.",
|
|
49733
49784
|
get children() {
|
|
49734
|
-
var e =
|
|
49785
|
+
var e = Y5();
|
|
49735
49786
|
return P(e, j(jj, {
|
|
49736
49787
|
placeholder: "Username or email (e.g. demo@yourapp.com)",
|
|
49737
49788
|
get value() {
|
|
@@ -49763,7 +49814,7 @@ function m7() {
|
|
|
49763
49814
|
title: "Panel",
|
|
49764
49815
|
get children() {
|
|
49765
49816
|
return [(() => {
|
|
49766
|
-
var e =
|
|
49817
|
+
var e = X5(), t = e.firstChild.nextSibling;
|
|
49767
49818
|
return P(t, j(We, {
|
|
49768
49819
|
each: [{
|
|
49769
49820
|
id: "overlay",
|
|
@@ -49773,7 +49824,7 @@ function m7() {
|
|
|
49773
49824
|
label: "Beside page"
|
|
49774
49825
|
}],
|
|
49775
49826
|
children: (e) => (() => {
|
|
49776
|
-
var t =
|
|
49827
|
+
var t = l7();
|
|
49777
49828
|
return t.$$click = () => void r({
|
|
49778
49829
|
panelMode: e.id,
|
|
49779
49830
|
panelPos: void 0
|
|
@@ -49781,11 +49832,11 @@ function m7() {
|
|
|
49781
49832
|
})()
|
|
49782
49833
|
})), e;
|
|
49783
49834
|
})(), (() => {
|
|
49784
|
-
var e =
|
|
49835
|
+
var e = Z5(), t = e.firstChild.nextSibling;
|
|
49785
49836
|
return P(t, j(We, {
|
|
49786
49837
|
each: ["left", "right"],
|
|
49787
49838
|
children: (e) => (() => {
|
|
49788
|
-
var t =
|
|
49839
|
+
var t = l7();
|
|
49789
49840
|
return t.$$click = () => void r({ panelSide: e }), P(t, e === "left" ? "Left" : "Right"), D(() => st(t, `flex-1 rounded-[5px] px-2 py-0.5 text-[11.5px] font-medium transition-colors ${(n().panelSide ?? "right") === e ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer"}`)), t;
|
|
49790
49841
|
})()
|
|
49791
49842
|
})), e;
|
|
@@ -49815,8 +49866,8 @@ function m7() {
|
|
|
49815
49866
|
}), null), P(e, j(Rj, {
|
|
49816
49867
|
title: "Project config (.lineargrab.json)",
|
|
49817
49868
|
get children() {
|
|
49818
|
-
return [
|
|
49819
|
-
var e =
|
|
49869
|
+
return [Q5(), (() => {
|
|
49870
|
+
var e = e7();
|
|
49820
49871
|
return P(e, j(M, {
|
|
49821
49872
|
get when() {
|
|
49822
49873
|
return c.data?.projectConfig;
|
|
@@ -49847,7 +49898,7 @@ function m7() {
|
|
|
49847
49898
|
},
|
|
49848
49899
|
onClick: () => void d(),
|
|
49849
49900
|
get children() {
|
|
49850
|
-
var e =
|
|
49901
|
+
var e = $5();
|
|
49851
49902
|
return P(e, () => l() ? "Copied ✓" : "Copy config"), e;
|
|
49852
49903
|
}
|
|
49853
49904
|
}), null), e;
|
|
@@ -49938,12 +49989,12 @@ function m7() {
|
|
|
49938
49989
|
});
|
|
49939
49990
|
},
|
|
49940
49991
|
get children() {
|
|
49941
|
-
return [
|
|
49992
|
+
return [t7(), j(We, {
|
|
49942
49993
|
get each() {
|
|
49943
49994
|
return ae.data ?? [];
|
|
49944
49995
|
},
|
|
49945
49996
|
children: (e) => (() => {
|
|
49946
|
-
var t =
|
|
49997
|
+
var t = y7();
|
|
49947
49998
|
return t.firstChild, P(t, () => e.name, null), D(() => t.selected = e.id === n().slackChannelId), D(() => t.value = e.id), t;
|
|
49948
49999
|
})()
|
|
49949
50000
|
})];
|
|
@@ -49994,10 +50045,10 @@ function m7() {
|
|
|
49994
50045
|
}
|
|
49995
50046
|
}),
|
|
49996
50047
|
(() => {
|
|
49997
|
-
var e =
|
|
50048
|
+
var e = n7(), t = e.firstChild;
|
|
49998
50049
|
return t.addEventListener("change", (e) => void r({ notifyOnCreate: e.currentTarget.checked ? void 0 : !1 })), D(() => t.checked = n().notifyOnCreate !== !1), e;
|
|
49999
50050
|
})(),
|
|
50000
|
-
|
|
50051
|
+
r7()
|
|
50001
50052
|
];
|
|
50002
50053
|
}
|
|
50003
50054
|
}), null), P(e, j(Rj, {
|
|
@@ -50035,7 +50086,7 @@ function m7() {
|
|
|
50035
50086
|
}
|
|
50036
50087
|
}),
|
|
50037
50088
|
(() => {
|
|
50038
|
-
var e =
|
|
50089
|
+
var e = i7(), t = e.firstChild.nextSibling.firstChild, i = t.nextSibling, a = i.nextSibling;
|
|
50039
50090
|
return t.$$click = () => void r({ preferredProvider: void 0 }), i.$$click = () => void r({ preferredProvider: "openai" }), a.$$click = () => void r({ preferredProvider: "anthropic" }), D((e) => {
|
|
50040
50091
|
var r = `flex-1 rounded-[5px] px-2 py-0.5 text-[11.5px] font-medium transition-colors ${n().preferredProvider === void 0 ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer"}`, o = `flex-1 rounded-[5px] px-2 py-0.5 text-[11.5px] font-medium transition-colors disabled:cursor-not-allowed ${n().preferredProvider === "openai" ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer disabled:text-text-faint"}`, s = !n().openaiKey, c = `flex-1 rounded-[5px] px-2 py-0.5 text-[11.5px] font-medium transition-colors disabled:cursor-not-allowed ${n().preferredProvider === "anthropic" ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer disabled:text-text-faint"}`, l = !n().anthropicKey;
|
|
50041
50092
|
return r !== e.e && st(t, e.e = r), o !== e.t && st(i, e.t = o), s !== e.a && (i.disabled = e.a = s), c !== e.o && st(a, e.o = c), l !== e.i && (a.disabled = e.i = l), e;
|
|
@@ -50048,16 +50099,16 @@ function m7() {
|
|
|
50048
50099
|
}), e;
|
|
50049
50100
|
})(),
|
|
50050
50101
|
(() => {
|
|
50051
|
-
var e =
|
|
50102
|
+
var e = o7();
|
|
50052
50103
|
return P(e, j(M, {
|
|
50053
50104
|
get when() {
|
|
50054
50105
|
return se();
|
|
50055
50106
|
},
|
|
50056
50107
|
get fallback() {
|
|
50057
|
-
return
|
|
50108
|
+
return b7();
|
|
50058
50109
|
},
|
|
50059
50110
|
get children() {
|
|
50060
|
-
var e =
|
|
50111
|
+
var e = a7();
|
|
50061
50112
|
return P(e, se), e;
|
|
50062
50113
|
}
|
|
50063
50114
|
})), e;
|
|
@@ -50067,7 +50118,7 @@ function m7() {
|
|
|
50067
50118
|
}), null), P(e, j(Rj, {
|
|
50068
50119
|
title: "How it works",
|
|
50069
50120
|
get children() {
|
|
50070
|
-
return
|
|
50121
|
+
return s7();
|
|
50071
50122
|
}
|
|
50072
50123
|
}), null), e;
|
|
50073
50124
|
})();
|
|
@@ -50075,38 +50126,38 @@ function m7() {
|
|
|
50075
50126
|
rt(["click"]);
|
|
50076
50127
|
//#endregion
|
|
50077
50128
|
//#region src/lib/idbCache.ts
|
|
50078
|
-
var
|
|
50129
|
+
var S7 = "linear-grab", C7 = "queries", w7 = [
|
|
50079
50130
|
"my-issues",
|
|
50080
50131
|
"issue",
|
|
50081
50132
|
"sessions",
|
|
50082
50133
|
"teams",
|
|
50083
50134
|
"agents"
|
|
50084
50135
|
];
|
|
50085
|
-
function
|
|
50136
|
+
function T7() {
|
|
50086
50137
|
return new Promise((e) => {
|
|
50087
50138
|
try {
|
|
50088
|
-
let t = indexedDB.open(
|
|
50089
|
-
t.onupgradeneeded = () => t.result.createObjectStore(
|
|
50139
|
+
let t = indexedDB.open(S7, 1);
|
|
50140
|
+
t.onupgradeneeded = () => t.result.createObjectStore(C7), t.onsuccess = () => e(t.result), t.onerror = () => e(null);
|
|
50090
50141
|
} catch {
|
|
50091
50142
|
e(null);
|
|
50092
50143
|
}
|
|
50093
50144
|
});
|
|
50094
50145
|
}
|
|
50095
|
-
function
|
|
50096
|
-
return typeof e[0] == "string" &&
|
|
50146
|
+
function E7(e) {
|
|
50147
|
+
return typeof e[0] == "string" && w7.includes(e[0]);
|
|
50097
50148
|
}
|
|
50098
|
-
async function
|
|
50099
|
-
let t = await
|
|
50149
|
+
async function D7(e) {
|
|
50150
|
+
let t = await T7();
|
|
50100
50151
|
if (!t) return () => {};
|
|
50101
50152
|
await new Promise((n) => {
|
|
50102
50153
|
try {
|
|
50103
|
-
let r = t.transaction(
|
|
50154
|
+
let r = t.transaction(C7, "readonly").objectStore(C7).openCursor();
|
|
50104
50155
|
r.onsuccess = () => {
|
|
50105
50156
|
let t = r.result;
|
|
50106
50157
|
if (!t) return n();
|
|
50107
50158
|
try {
|
|
50108
50159
|
let { queryKey: n, data: r } = t.value;
|
|
50109
|
-
|
|
50160
|
+
E7(n) && e.getQueryData(n) === void 0 && e.setQueryData(n, r, { updatedAt: 0 });
|
|
50110
50161
|
} catch {}
|
|
50111
50162
|
t.continue();
|
|
50112
50163
|
}, r.onerror = () => n();
|
|
@@ -50117,14 +50168,14 @@ async function b7(e) {
|
|
|
50117
50168
|
let n = /* @__PURE__ */ new Map(), r = e.getQueryCache().subscribe((r) => {
|
|
50118
50169
|
if (r.type !== "updated" || r.action.type !== "success") return;
|
|
50119
50170
|
let { queryKey: i, queryHash: a } = r.query;
|
|
50120
|
-
if (!
|
|
50171
|
+
if (!E7(i)) return;
|
|
50121
50172
|
let o = n.get(a);
|
|
50122
50173
|
o && clearTimeout(o), n.set(a, setTimeout(() => {
|
|
50123
50174
|
n.delete(a);
|
|
50124
50175
|
try {
|
|
50125
50176
|
let n = e.getQueryData(i);
|
|
50126
50177
|
if (n === void 0) return;
|
|
50127
|
-
t.transaction(
|
|
50178
|
+
t.transaction(C7, "readwrite").objectStore(C7).put({
|
|
50128
50179
|
queryKey: i,
|
|
50129
50180
|
data: n
|
|
50130
50181
|
}, a);
|
|
@@ -50140,7 +50191,7 @@ async function b7(e) {
|
|
|
50140
50191
|
//#endregion
|
|
50141
50192
|
//#region src/panel/App.tsx
|
|
50142
50193
|
Br();
|
|
50143
|
-
var
|
|
50194
|
+
var O7 = /*#__PURE__*/ N("<svg viewBox=\"0 0 100 100\"fill=currentColor aria-hidden><path d=\"M1.22541 61.5228c-.2225-.9485.90748-1.5459 1.59638-.857L39.3342 97.1782c.6889.6889.0915 1.8189-.857 1.5964C20.0515 94.4522 5.54779 79.9485 1.22541 61.5228ZM.00189135 46.8891c-.01764375.2833.08887215.5599.28957165.7606L52.3503 99.7085c.2007.2007.4773.3075.7606.2896 2.3692-.1476 4.6938-.46 6.9624-.9259.7645-.157 1.0301-1.0963.4782-1.6481L2.57595 39.4485c-.55186-.5519-1.49117-.2863-1.648174.4782-.465915 2.2686-.77832 4.5932-.92588465 6.9624ZM4.21093 29.7054c-.16649.3738-.08169.8106.20765 1.1l64.77602 64.776c.2894.2894.7262.3742 1.1.2077 1.7861-.7956 3.5171-1.6927 5.1855-2.684.5521-.328.6373-1.0867.1832-1.5407L8.43566 24.3367c-.45409-.4541-1.21271-.3689-1.54074.1832-.99132 1.6684-1.88843 3.3994-2.68399 5.1855ZM12.6587 18.074c-.3701-.3701-.393-.9637-.0443-1.3541C21.7795 6.45931 35.1114 0 49.9519 0 77.5927 0 100 22.4073 100 50.0481c0 14.8405-6.4593 28.1724-16.7199 37.3375-.3903.3487-.984.3258-1.3541-.0443L12.6587 18.074Z\">"), k7 = /*#__PURE__*/ N("<button><svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 aria-hidden><rect x=1.5 y=2.5 width=13 height=11 rx=1.5></rect><path d=\"M10 2.5v11\">"), A7 = /*#__PURE__*/ N("<button aria-label=\"Minimize to launcher\"title=\"Minimize to launcher\"class=\"text-text-dim hover:text-text hover:bg-surface-3 grid size-6 shrink-0 cursor-pointer place-items-center rounded-md text-[15px] leading-none transition-colors\">–"), j7 = /*#__PURE__*/ N("<div class=\"bg-bg text-text flex h-full flex-col\"><header><span class=\"text-accent mr-0.5 inline-flex shrink-0\"title=\"Linear Grab\"></span><div class=\"no-scrollbar flex min-w-0 flex-1 items-center gap-1 overflow-x-auto\"></div></header><main class=\"min-h-0 flex-1\"><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full>"), M7 = /*#__PURE__*/ N("<button>"), N7 = [
|
|
50144
50195
|
{
|
|
50145
50196
|
id: "draft",
|
|
50146
50197
|
label: "Draft"
|
|
@@ -50181,35 +50232,35 @@ var x7 = /*#__PURE__*/ N("<svg viewBox=\"0 0 100 100\"fill=currentColor aria-hid
|
|
|
50181
50232
|
id: "settings",
|
|
50182
50233
|
label: "Settings"
|
|
50183
50234
|
}
|
|
50184
|
-
],
|
|
50185
|
-
function
|
|
50186
|
-
if (
|
|
50187
|
-
|
|
50235
|
+
], P7 = /* @__PURE__ */ new Set();
|
|
50236
|
+
function F7(e, t, n) {
|
|
50237
|
+
if (P7.has(e) || typeof Notification > "u") return;
|
|
50238
|
+
P7.add(e);
|
|
50188
50239
|
let r = () => new Notification(t, { body: n });
|
|
50189
50240
|
Notification.permission === "granted" ? r() : Notification.permission === "default" && Notification.requestPermission().then((e) => e === "granted" && r());
|
|
50190
50241
|
}
|
|
50191
|
-
function
|
|
50242
|
+
function I7() {
|
|
50192
50243
|
setInterval(() => {
|
|
50193
50244
|
PO().then((e) => {
|
|
50194
50245
|
for (let t of e) {
|
|
50195
50246
|
if (t.status !== "running") continue;
|
|
50196
50247
|
let e = t.lastEventAt ?? t.startedAt;
|
|
50197
|
-
Date.now() - e > 10 * 6e4 &&
|
|
50248
|
+
Date.now() - e > 10 * 6e4 && F7(`local-stuck:${t.id}:${e}`, "Local agent may be stuck", `${t.title.slice(0, 80)} — no output for ${Math.round((Date.now() - e) / 6e4)}m. Nudge or interrupt it in the Local tab.`);
|
|
50198
50249
|
}
|
|
50199
50250
|
}).catch(() => {}), _O().then((e) => {
|
|
50200
|
-
for (let t of e) /awaitingInput|elicit/i.test(t.status) &&
|
|
50251
|
+
for (let t of e) /awaitingInput|elicit/i.test(t.status) && F7(`cloud-input:${t.id}`, "Cloud agent needs input", `${t.issue?.identifier ?? "Session"} — ${t.issue?.title?.slice(0, 80) ?? "a Cursor agent"} is waiting for you.`);
|
|
50201
50252
|
}).catch(() => {});
|
|
50202
50253
|
}, 6e4);
|
|
50203
50254
|
}
|
|
50204
|
-
|
|
50205
|
-
var
|
|
50255
|
+
I7();
|
|
50256
|
+
var L7 = new gr({ defaultOptions: { queries: {
|
|
50206
50257
|
retry: 1,
|
|
50207
50258
|
refetchOnWindowFocus: !1,
|
|
50208
50259
|
staleTime: 5e3
|
|
50209
50260
|
} } });
|
|
50210
|
-
function
|
|
50261
|
+
function R7(e) {
|
|
50211
50262
|
return (() => {
|
|
50212
|
-
var t =
|
|
50263
|
+
var t = O7();
|
|
50213
50264
|
return D((n) => {
|
|
50214
50265
|
var r = e.size ?? 14, i = e.size ?? 14;
|
|
50215
50266
|
return r !== n.e && it(t, "width", n.e = r), i !== n.t && it(t, "height", n.t = i), n;
|
|
@@ -50219,36 +50270,36 @@ function j7(e) {
|
|
|
50219
50270
|
}), t;
|
|
50220
50271
|
})();
|
|
50221
50272
|
}
|
|
50222
|
-
function
|
|
50273
|
+
function z7(e) {
|
|
50223
50274
|
let [t, n] = T("draft"), r = () => {
|
|
50224
|
-
|
|
50275
|
+
L7.invalidateQueries({ queryKey: ["grab"] }), lj() === "capture" && n("capture"), e.onGrab?.();
|
|
50225
50276
|
};
|
|
50226
50277
|
return O(() => {
|
|
50227
50278
|
let e = rj();
|
|
50228
50279
|
e && n(e);
|
|
50229
50280
|
}), ie(() => {
|
|
50230
|
-
let e =
|
|
50281
|
+
let e = D7(L7), t = XZ(r), n = () => {
|
|
50231
50282
|
YO().then(y$), HO(), NO().then(async (e) => {
|
|
50232
50283
|
if (!e.projectConfig) return;
|
|
50233
|
-
let t =
|
|
50284
|
+
let t = N5(await Tr(), e.projectConfig);
|
|
50234
50285
|
t && await Er(t);
|
|
50235
50286
|
}).catch(() => {});
|
|
50236
50287
|
};
|
|
50237
50288
|
n();
|
|
50238
50289
|
let i = Mr((e) => {
|
|
50239
|
-
e === "settings" && (
|
|
50290
|
+
e === "settings" && (L7.invalidateQueries({ queryKey: ["settings"] }), n()), e === "grab" && r();
|
|
50240
50291
|
});
|
|
50241
50292
|
ae(() => {
|
|
50242
50293
|
t(), i(), e.then((e) => e());
|
|
50243
50294
|
});
|
|
50244
50295
|
}), j(cr, {
|
|
50245
|
-
client:
|
|
50296
|
+
client: L7,
|
|
50246
50297
|
get children() {
|
|
50247
|
-
var r =
|
|
50248
|
-
return i.$$pointerdown = (t) => e.onHeaderPointerDown?.(t), P(a, j(
|
|
50249
|
-
each:
|
|
50298
|
+
var r = j7(), i = r.firstChild, a = i.firstChild, o = a.nextSibling, s = i.nextSibling.firstChild, c = s.nextSibling, l = c.nextSibling, u = l.nextSibling, d = u.nextSibling, f = d.nextSibling, p = f.nextSibling, m = p.nextSibling, h = m.nextSibling, g = h.nextSibling;
|
|
50299
|
+
return i.$$pointerdown = (t) => e.onHeaderPointerDown?.(t), P(a, j(R7, { size: 14 })), P(o, j(We, {
|
|
50300
|
+
each: N7,
|
|
50250
50301
|
children: (e) => (() => {
|
|
50251
|
-
var r =
|
|
50302
|
+
var r = M7();
|
|
50252
50303
|
return r.$$click = () => n(e.id), P(r, () => e.label), D(() => st(r, `h-6 shrink-0 rounded-md px-2 text-[12px] font-medium whitespace-nowrap transition-colors ${t() === e.id ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer"}`)), r;
|
|
50253
50304
|
})()
|
|
50254
50305
|
})), P(i, j(M, {
|
|
@@ -50256,7 +50307,7 @@ function M7(e) {
|
|
|
50256
50307
|
return e.onTogglePin;
|
|
50257
50308
|
},
|
|
50258
50309
|
get children() {
|
|
50259
|
-
var t =
|
|
50310
|
+
var t = k7();
|
|
50260
50311
|
return t.$$click = () => e.onTogglePin?.(), D((n) => {
|
|
50261
50312
|
var r = e.pinned ? "Switch to overlay" : "Dock beside page", i = e.pinned ? "Overlay the page" : "Dock beside page (squeezes the app, DevTools-style)", a = `hover:bg-surface-3 grid size-6 shrink-0 cursor-pointer place-items-center rounded-md transition-colors ${e.pinned ? "text-accent" : "text-text-dim hover:text-text"}`;
|
|
50262
50313
|
return r !== n.e && it(t, "aria-label", n.e = r), i !== n.t && it(t, "title", n.t = i), a !== n.a && st(t, n.a = a), n;
|
|
@@ -50271,10 +50322,10 @@ function M7(e) {
|
|
|
50271
50322
|
return e.onClose;
|
|
50272
50323
|
},
|
|
50273
50324
|
get children() {
|
|
50274
|
-
var t =
|
|
50325
|
+
var t = A7();
|
|
50275
50326
|
return t.$$click = () => e.onClose?.(), t;
|
|
50276
50327
|
}
|
|
50277
|
-
}), null), P(s, j(wM, { onCreated: () => n("activity") })), P(c, j(TQ, {})), P(l, j(_1, {})), P(u, j(B1, {})), P(d, j(P1, {})), P(f, j(T0, {})), P(p, j(B0, { onOpenIssue: () => n("activity") })), P(m, j(
|
|
50328
|
+
}), null), P(s, j(wM, { onCreated: () => n("activity") })), P(c, j(TQ, {})), P(l, j(_1, {})), P(u, j(B1, {})), P(d, j(P1, {})), P(f, j(T0, {})), P(p, j(B0, { onOpenIssue: () => n("activity") })), P(m, j(G3, {})), P(h, j(A5, {})), P(g, j(x7, {})), D((n) => {
|
|
50278
50329
|
var r = `border-border bg-surface flex shrink-0 items-center gap-1 border-b px-2 py-1.5 select-none ${e.onHeaderPointerDown ? "cursor-grab active:cursor-grabbing" : ""}`, a = t() !== "draft", o = t() !== "capture", _ = t() !== "activity", v = t() !== "running", y = t() !== "cloud", b = t() !== "local", x = t() !== "prs", S = t() !== "design", C = t() !== "renders", w = t() !== "settings";
|
|
50279
50330
|
return r !== n.e && st(i, n.e = r), a !== n.t && s.classList.toggle("hidden", n.t = a), o !== n.a && c.classList.toggle("hidden", n.a = o), _ !== n.o && l.classList.toggle("hidden", n.o = _), v !== n.i && u.classList.toggle("hidden", n.i = v), y !== n.n && d.classList.toggle("hidden", n.n = y), b !== n.s && f.classList.toggle("hidden", n.s = b), x !== n.h && p.classList.toggle("hidden", n.h = x), S !== n.r && m.classList.toggle("hidden", n.r = S), C !== n.d && h.classList.toggle("hidden", n.d = C), w !== n.l && g.classList.toggle("hidden", n.l = w), n;
|
|
50280
50331
|
}, {
|
|
@@ -50296,16 +50347,16 @@ function M7(e) {
|
|
|
50296
50347
|
rt(["pointerdown", "click"]);
|
|
50297
50348
|
//#endregion
|
|
50298
50349
|
//#region src/styles/app.css?inline
|
|
50299
|
-
var N7 = "/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-contain-size:initial;--tw-contain-layout:initial;--tw-contain-paint:initial;--tw-contain-style:initial}}}@layer theme{:root,:host{--font-sans:\"Inter\", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-serif:ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif;--font-mono:ui-monospace, \"SF Mono\", Menlo, monospace;--color-red-500:oklch(63.7% .237 25.331);--color-white:#fff;--spacing:.25rem;--font-weight-thin:100;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-wide:.025em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:.75rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#0b0c0e;--color-surface:#141517;--color-surface-2:#1c1d21;--color-surface-3:#24262b;--color-border:#26282d;--color-border-strong:#34363d;--color-text:#e8e9eb;--color-text-dim:#8b8e98;--color-text-faint:#5c5f6a;--color-accent:#5e6ad2;--color-accent-hover:#6e79e0;--color-accent-soft:#5e6ad226;--color-success:#4cb782;--color-warn:#f2c94c;--color-danger:#eb5757;--color-danger-soft:#eb575726}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.visible\\!{visibility:visible!important}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{inset-block:0}.-top-0{top:0}.-top-0\\.5{top:calc(var(--spacing) * -.5)}.top-0{top:0}.top-0\\.5{top:calc(var(--spacing) * .5)}.top-1{top:var(--spacing)}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-\\[2px\\]{top:2px}.top-full{top:100%}.-right-0{right:0}.-right-0\\.5{right:calc(var(--spacing) * -.5)}.right-0{right:0}.right-0\\.5{right:calc(var(--spacing) * .5)}.right-4{right:calc(var(--spacing) * 4)}.right-full{right:100%}.bottom-0{bottom:0}.bottom-1{bottom:var(--spacing)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-\\[2px\\]{bottom:2px}.bottom-full{bottom:100%}.-left-\\[13\\.5px\\]{left:-13.5px}.left-0{left:0}.left-1{left:var(--spacing)}.left-1\\/2{left:50%}.left-\\[5px\\]{left:5px}.left-full{left:100%}.z-1{z-index:1}.z-10{z-index:10}.z-\\[2147483645\\]{z-index:2147483645}.z-\\[2147483646\\]{z-index:2147483646}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.container\\!{width:100%!important}@media (width>=40rem){.container\\!{max-width:40rem!important}}@media (width>=48rem){.container\\!{max-width:48rem!important}}@media (width>=64rem){.container\\!{max-width:64rem!important}}@media (width>=80rem){.container\\!{max-width:80rem!important}}@media (width>=96rem){.container\\!{max-width:96rem!important}}.-m-0{margin:0}.-m-0\\.5{margin:calc(var(--spacing) * -.5)}.-m-4{margin:calc(var(--spacing) * -4)}.m-0{margin:0}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-my-1{margin-block:calc(var(--spacing) * -1)}.-my-1\\.5{margin-block:calc(var(--spacing) * -1.5)}.mt-0{margin-top:0}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-px{margin-top:1px}.mr-0{margin-right:0}.mr-0\\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:var(--spacing)}.mr-1\\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-2\\.5{margin-right:calc(var(--spacing) * 2.5)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-0{margin-bottom:0}.mb-0\\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-2\\.5{margin-left:calc(var(--spacing) * 2.5)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.size-0{width:0;height:0}.size-1{width:var(--spacing);height:var(--spacing)}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-\\[9px\\]{width:9px;height:9px}.size-\\[12px\\]{width:12px;height:12px}.size-\\[16px\\]{width:16px;height:16px}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-16{height:calc(var(--spacing) * 16)}.h-\\[8px\\]{height:8px}.h-\\[17px\\]{height:17px}.h-\\[18px\\]{height:18px}.h-\\[20px\\]{height:20px}.h-\\[24px\\]{height:24px}.h-fit{height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\\[28rem\\]{max-height:28rem}.max-h-\\[var\\(--rg-edit-list-max-h\\)\\]{max-height:var(--rg-edit-list-max-h)}.min-h-0{min-height:0}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-\\[2lh\\]{min-height:2lh}.min-h-\\[28px\\]{min-height:28px}.w-1{width:var(--spacing)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-16{width:calc(var(--spacing) * 16)}.w-28{width:calc(var(--spacing) * 28)}.w-72{width:calc(var(--spacing) * 72)}.w-\\[2px\\]{width:2px}.w-\\[Npx\\]{width:Npx}.w-\\[calc\\(100\\%\\+16px\\)\\]{width:calc(100% + 16px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\\[55\\%\\]{max-width:55%}.max-w-\\[100vw\\]{max-width:100vw}.max-w-\\[110px\\]{max-width:110px}.max-w-\\[280px\\]{max-width:280px}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-\\[3\\.5ch\\]{min-width:3.5ch}.min-w-\\[3ch\\]{min-width:3ch}.min-w-\\[4ch\\]{min-width:4ch}.min-w-\\[5ch\\]{min-width:5ch}.min-w-\\[6ch\\]{min-width:6ch}.min-w-\\[7ch\\]{min-width:7ch}.min-w-\\[8ch\\]{min-width:8ch}.min-w-\\[10ch\\]{min-width:10ch}.min-w-\\[12ch\\]{min-width:12ch}.min-w-\\[36px\\]{min-width:36px}.min-w-\\[52px\\]{min-width:52px}.min-w-\\[100px\\]{min-width:100px}.min-w-\\[150px\\]{min-width:150px}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-rotate-90{rotate:-90deg}.rotate-0{rotate:0deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-decimal{list-style-type:decimal}.grid-cols-\\[0fr\\]{grid-template-columns:0fr}.grid-cols-\\[1fr\\]{grid-template-columns:1fr}.grid-rows-\\[0fr\\]{grid-template-rows:0fr}.grid-rows-\\[1fr\\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:0}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-\\[5px\\]{gap:5px}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\\[1px\\]{border-radius:1px}.rounded-\\[3px\\]{border-radius:3px}.rounded-\\[4px\\]{border-radius:4px}.rounded-\\[5px\\]{border-radius:5px}.rounded-\\[6px\\]{border-radius:6px}.rounded-\\[13px\\]{border-radius:13px}.rounded-\\[14px\\]{border-radius:14px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-\\[10px\\]{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-\\[10px\\]{border-top-left-radius:10px;border-bottom-left-radius:10px}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-\\[10px\\]{border-top-right-radius:10px;border-bottom-right-radius:10px}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-\\[6px\\]{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.rounded-b-\\[10px\\]{border-bottom-right-radius:10px;border-bottom-left-radius:10px}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.\\[border-width\\:0\\.5px\\]{border-width:.5px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.\\[border-top-width\\:0\\.5px\\]{border-top-width:.5px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\\[var\\(--rg-border-button\\)\\]{border-color:var(--rg-border-button)}.border-accent{border-color:var(--color-accent)}.border-accent\\/40{border-color:#5e6ad266}@supports (color:color-mix(in lab, red, red)){.border-accent\\/40{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.border-border{border-color:var(--color-border)}.border-danger{border-color:var(--color-danger)}.border-danger\\/40{border-color:#eb575766}@supports (color:color-mix(in lab, red, red)){.border-danger\\/40{border-color:color-mix(in oklab, var(--color-danger) 40%, transparent)}}.border-success{border-color:var(--color-success)}.border-success\\/40{border-color:#4cb78266}@supports (color:color-mix(in lab, red, red)){.border-success\\/40{border-color:color-mix(in oklab, var(--color-success) 40%, transparent)}}.border-text-dim{border-color:var(--color-text-dim)}.border-transparent{border-color:#0000}.border-warn{border-color:var(--color-warn)}.border-warn\\/40{border-color:#f2c94c66}@supports (color:color-mix(in lab, red, red)){.border-warn\\/40{border-color:color-mix(in oklab, var(--color-warn) 40%, transparent)}}.border-t-\\[var\\(--rg-border-subtle\\)\\]{border-top-color:var(--rg-border-subtle)}.border-t-transparent{border-top-color:#0000}.bg-\\[var\\(--rg-error-bg\\)\\]{background-color:var(--rg-error-bg)}.bg-\\[var\\(--rg-panel-bg\\)\\]{background-color:var(--rg-panel-bg)}.bg-\\[var\\(--rg-submit-bg\\)\\]{background-color:var(--rg-submit-bg)}.bg-\\[var\\(--rg-surface-active\\)\\]{background-color:var(--rg-surface-active)}.bg-\\[var\\(--rg-surface-hover\\)\\]{background-color:var(--rg-surface-hover)}.bg-\\[var\\(--rg-text-primary\\)\\]{background-color:var(--rg-text-primary)}.bg-\\[var\\(--rg-text-secondary\\)\\]{background-color:var(--rg-text-secondary)}.bg-accent{background-color:var(--color-accent)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-bg{background-color:var(--color-bg)}.bg-bg\\/80{background-color:#0b0c0ecc}@supports (color:color-mix(in lab, red, red)){.bg-bg\\/80{background-color:color-mix(in oklab, var(--color-bg) 80%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-current{background-color:currentColor}.bg-danger{background-color:var(--color-danger)}.bg-danger-soft{background-color:var(--color-danger-soft)}.bg-danger\\/10{background-color:#eb57571a}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-success{background-color:var(--color-success)}.bg-surface{background-color:var(--color-surface)}.bg-surface-2{background-color:var(--color-surface-2)}.bg-surface-3{background-color:var(--color-surface-3)}.bg-text-faint{background-color:var(--color-text-faint)}.bg-transparent{background-color:#0000}.bg-warn{background-color:var(--color-warn)}.bg-warn\\/10{background-color:#f2c94c1a}@supports (color:color-mix(in lab, red, red)){.bg-warn\\/10{background-color:color-mix(in oklab, var(--color-warn) 10%, transparent)}}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-0\\.25{padding-inline:calc(var(--spacing) * .25)}.px-1{padding-inline:var(--spacing)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-\\[3px\\]{padding-inline:3px}.py-0{padding-block:0}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-0\\.25{padding-block:calc(var(--spacing) * .25)}.py-1{padding-block:var(--spacing)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-px{padding-block:1px}.pt-0{padding-top:0}.pt-0\\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:var(--spacing)}.pr-1\\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1{padding-bottom:var(--spacing)}.pb-1\\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-0{padding-left:0}.pl-0\\.5{padding-left:calc(var(--spacing) * .5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-end{text-align:end}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.font-serif{font-family:var(--font-serif)}.text-\\[9\\.5px\\]{font-size:9.5px}.text-\\[9px\\]{font-size:9px}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[10px\\]{font-size:10px}.text-\\[11\\.5px\\]{font-size:11.5px}.text-\\[11px\\]{font-size:11px}.text-\\[12\\.5px\\]{font-size:12.5px}.text-\\[12px\\]{font-size:12px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.leading-3{--tw-leading:calc(var(--spacing) * 3);line-height:calc(var(--spacing) * 3)}.leading-3\\.5{--tw-leading:calc(var(--spacing) * 3.5);line-height:calc(var(--spacing) * 3.5)}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.font-thin{--tw-font-weight:var(--font-weight-thin);font-weight:var(--font-weight-thin)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-normal{overflow-wrap:normal;word-break:normal}.break-words,.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-break-spaces{white-space:break-spaces}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[var\\(--rg-error-text\\)\\]{color:var(--rg-error-text)}.text-\\[var\\(--rg-submit-fg\\)\\]{color:var(--rg-submit-fg)}.text-\\[var\\(--rg-text-primary\\)\\]{color:var(--rg-text-primary)}.text-\\[var\\(--rg-text-primary-85\\)\\]{color:var(--rg-text-primary-85)}.text-\\[var\\(--rg-text-secondary\\)\\]{color:var(--rg-text-secondary)}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}.text-text{color:var(--color-text)}.text-text-dim{color:var(--color-text-dim)}.text-text-faint{color:var(--color-text-faint)}.text-warn{color:var(--color-warn)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\\[box-shadow\\:var\\(--rg-shadow\\)\\]{box-shadow:var(--rg-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.\\[filter\\:var\\(--rg-drop-shadow\\)\\]{filter:var(--rg-drop-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-columns\\]{transition-property:grid-template-columns;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[padding\\,border-radius\\,transform\\]{transition-property:padding,border-radius,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[top\\,left\\,width\\,height\\,opacity\\,border-radius\\]{transition-property:top,left,width,height,opacity,border-radius;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,color\\]{transition-property:transform,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,opacity\\]{transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-\\[80ms\\]{transition-delay:80ms}.duration-60{--tw-duration:60ms;transition-duration:60ms}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-120{--tw-duration:.12s;transition-duration:.12s}.duration-140{--tw-duration:.14s;transition-duration:.14s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-180{--tw-duration:.18s;transition-duration:.18s}.duration-220{--tw-duration:.22s;transition-duration:.22s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-400{--tw-duration:.4s;transition-duration:.4s}.ease-\\[cubic-bezier\\(0\\,0\\,0\\.2\\,1\\)\\]{--tw-ease:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-\\[opacity\\,transform\\]{will-change:opacity,transform}.will-change-transform{will-change:transform}.contain-layout{--tw-contain-layout:layout;contain:var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\\[corner-shape\\:superellipse\\(1\\.25\\)\\]{corner-shape:superellipse(1.25)}.\\[font-synthesis\\:none\\]{font-synthesis:none}.group-open\\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media (hover:hover){.group-hover\\:text-\\[var\\(--rg-text-primary\\)\\]:is(:where(.group):hover *){color:var(--rg-text-primary)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\\:text-text-faint::placeholder{color:var(--color-text-faint)}@media (hover:hover){.hover\\:bg-\\[var\\(--rg-error-bg-hover\\)\\]:hover{background-color:var(--rg-error-bg-hover)}.hover\\:bg-\\[var\\(--rg-surface-active\\)\\]:hover{background-color:var(--rg-surface-active)}.hover\\:bg-\\[var\\(--rg-surface-hover\\)\\]:hover{background-color:var(--rg-surface-hover)}.hover\\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\\:bg-accent\\/50:hover{background-color:#5e6ad280}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/50:hover{background-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.hover\\:bg-danger\\/30:hover{background-color:#eb57574d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/30:hover{background-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.hover\\:bg-surface-2:hover{background-color:var(--color-surface-2)}.hover\\:bg-surface-3:hover{background-color:var(--color-surface-3)}.hover\\:text-\\[var\\(--rg-text-primary\\)\\]:hover{color:var(--rg-text-primary)}.hover\\:text-accent:hover{color:var(--color-accent)}.hover\\:text-danger:hover{color:var(--color-danger)}.hover\\:text-text:hover{color:var(--color-text)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-80:hover{opacity:.8}}.focus\\:border-accent:focus{border-color:var(--color-accent)}.active\\:cursor-grabbing:active{cursor:grabbing}.active\\:bg-accent:active{background-color:var(--color-accent)}.active\\:transition-none:active{transition-property:none}.disabled\\:cursor-default:disabled{cursor:default}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-surface-3:disabled{background-color:var(--color-surface-3)}.disabled\\:text-text-faint:disabled{color:var(--color-text-faint)}.disabled\\:opacity-40:disabled{opacity:.4}@media (hover:hover){.disabled\\:hover\\:bg-surface-2:disabled:hover{background-color:var(--color-surface-2)}}.data-\\[state\\=on\\]\\:transition-none[data-state=on],.data-\\[state\\=open\\]\\:transition-none[data-state=open],.data-\\[state\\=…\\]\\:transition-none[data-state=…]{transition-property:none}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light],:host([data-theme=light]){--color-bg:#fbfbfc;--color-surface:#fff;--color-surface-2:#f4f4f6;--color-surface-3:#e9e9ee;--color-border:#e2e2e8;--color-border-strong:#cfcfd8;--color-text:#1b1c20;--color-text-dim:#5c5f6a;--color-text-faint:#9a9da8;--color-accent-soft:#5e6ad21f;--color-danger-soft:#eb57571a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--color-bg:#fbfbfc;--color-surface:#fff;--color-surface-2:#f4f4f6;--color-surface-3:#e9e9ee;--color-border:#e2e2e8;--color-border-strong:#cfcfd8;--color-text:#1b1c20;--color-text-dim:#5c5f6a;--color-text-faint:#9a9da8;--color-accent-soft:#5e6ad21f;--color-danger-soft:#eb57571a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}body{background-color:var(--color-bg);font-family:var(--font-sans);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-width:320px;margin:0;font-size:13px}@keyframes geist-spinner-fade{0%{opacity:1}to{opacity:.15}}[data-tip]{position:relative}[data-tip]:hover:after{content:attr(data-tip);color:#fff;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;z-index:60;background:#1b1c20;border-radius:6px;max-width:260px;padding:3px 8px;font-size:10.5px;font-weight:500;line-height:1.35;position:absolute;bottom:calc(100% + 6px);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 4px 12px #0000004d}[data-tip][data-tip-pos~=right]:hover:after{left:0;transform:none}[data-tip][data-tip-pos~=left]:hover:after{left:auto;right:0;transform:none}[data-tip][data-tip-pos~=bottom]:hover:after{top:calc(100% + 6px);bottom:auto}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.lg-md p{margin:0 0 6px}.lg-md p:last-child{margin-bottom:0}.lg-md a{color:var(--color-accent);word-break:break-all;text-decoration:none}.lg-md a:hover{text-decoration:underline}.lg-md code{background:var(--color-surface-2);border:1px solid var(--color-border);font-family:var(--font-mono);border-radius:4px;padding:0 4px;font-size:11px}.lg-md pre{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:6px;margin:6px 0;padding:8px;overflow-x:auto}.lg-md pre code{white-space:pre;background:0 0;border:none;padding:0;font-size:11px}.lg-md ul,.lg-md ol{flex-direction:column;gap:2px;margin:4px 0 6px;padding-left:18px;display:flex}.lg-md ul{list-style:outside}.lg-md ol{list-style:decimal}.lg-md h4{margin:8px 0 4px;font-size:12px;font-weight:600}.lg-md lg-media{display:block}.lg-md lg-media img,.lg-md lg-media video{border:1px solid var(--color-border);border-radius:6px;max-width:100%;margin:4px 0}.lg-md video{border:1px solid var(--color-border);background:#000;border-radius:6px;max-width:100%;margin:4px 0}.lg-md img{border:1px solid var(--color-border);border-radius:6px;max-width:100%;margin:4px 0}.lg-md strong{font-weight:600}*{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:4px}::-webkit-scrollbar-track{background:0 0}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-tracking{syntax:\"*\";inherits:false}@property --tw-ordinal{syntax:\"*\";inherits:false}@property --tw-slashed-zero{syntax:\"*\";inherits:false}@property --tw-numeric-figure{syntax:\"*\";inherits:false}@property --tw-numeric-spacing{syntax:\"*\";inherits:false}@property --tw-numeric-fraction{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@property --tw-backdrop-blur{syntax:\"*\";inherits:false}@property --tw-backdrop-brightness{syntax:\"*\";inherits:false}@property --tw-backdrop-contrast{syntax:\"*\";inherits:false}@property --tw-backdrop-grayscale{syntax:\"*\";inherits:false}@property --tw-backdrop-hue-rotate{syntax:\"*\";inherits:false}@property --tw-backdrop-invert{syntax:\"*\";inherits:false}@property --tw-backdrop-opacity{syntax:\"*\";inherits:false}@property --tw-backdrop-saturate{syntax:\"*\";inherits:false}@property --tw-backdrop-sepia{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}@property --tw-contain-size{syntax:\"*\";inherits:false}@property --tw-contain-layout{syntax:\"*\";inherits:false}@property --tw-contain-paint{syntax:\"*\";inherits:false}@property --tw-contain-style{syntax:\"*\";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}";
|
|
50350
|
+
var B7 = "/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-contain-size:initial;--tw-contain-layout:initial;--tw-contain-paint:initial;--tw-contain-style:initial}}}@layer theme{:root,:host{--font-sans:\"Inter\", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-serif:ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif;--font-mono:ui-monospace, \"SF Mono\", Menlo, monospace;--color-red-500:oklch(63.7% .237 25.331);--color-white:#fff;--spacing:.25rem;--font-weight-thin:100;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-wide:.025em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:.75rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#0b0c0e;--color-surface:#141517;--color-surface-2:#1c1d21;--color-surface-3:#24262b;--color-border:#26282d;--color-border-strong:#34363d;--color-text:#e8e9eb;--color-text-dim:#8b8e98;--color-text-faint:#5c5f6a;--color-accent:#5e6ad2;--color-accent-hover:#6e79e0;--color-accent-soft:#5e6ad226;--color-success:#4cb782;--color-warn:#f2c94c;--color-danger:#eb5757;--color-danger-soft:#eb575726}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.visible\\!{visibility:visible!important}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{inset-block:0}.-top-0{top:0}.-top-0\\.5{top:calc(var(--spacing) * -.5)}.top-0{top:0}.top-0\\.5{top:calc(var(--spacing) * .5)}.top-1{top:var(--spacing)}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-\\[2px\\]{top:2px}.top-full{top:100%}.-right-0{right:0}.-right-0\\.5{right:calc(var(--spacing) * -.5)}.right-0{right:0}.right-0\\.5{right:calc(var(--spacing) * .5)}.right-4{right:calc(var(--spacing) * 4)}.right-full{right:100%}.bottom-0{bottom:0}.bottom-1{bottom:var(--spacing)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-\\[2px\\]{bottom:2px}.bottom-full{bottom:100%}.-left-\\[13\\.5px\\]{left:-13.5px}.left-0{left:0}.left-1{left:var(--spacing)}.left-1\\/2{left:50%}.left-\\[5px\\]{left:5px}.left-full{left:100%}.z-1{z-index:1}.z-10{z-index:10}.z-\\[2147483645\\]{z-index:2147483645}.z-\\[2147483646\\]{z-index:2147483646}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.container\\!{width:100%!important}@media (width>=40rem){.container\\!{max-width:40rem!important}}@media (width>=48rem){.container\\!{max-width:48rem!important}}@media (width>=64rem){.container\\!{max-width:64rem!important}}@media (width>=80rem){.container\\!{max-width:80rem!important}}@media (width>=96rem){.container\\!{max-width:96rem!important}}.-m-0{margin:0}.-m-0\\.5{margin:calc(var(--spacing) * -.5)}.-m-4{margin:calc(var(--spacing) * -4)}.m-0{margin:0}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-my-1{margin-block:calc(var(--spacing) * -1)}.-my-1\\.5{margin-block:calc(var(--spacing) * -1.5)}.mt-0{margin-top:0}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-px{margin-top:1px}.mr-0{margin-right:0}.mr-0\\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:var(--spacing)}.mr-1\\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-2\\.5{margin-right:calc(var(--spacing) * 2.5)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-0{margin-bottom:0}.mb-0\\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-2\\.5{margin-left:calc(var(--spacing) * 2.5)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.size-0{width:0;height:0}.size-1{width:var(--spacing);height:var(--spacing)}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-\\[9px\\]{width:9px;height:9px}.size-\\[12px\\]{width:12px;height:12px}.size-\\[16px\\]{width:16px;height:16px}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-16{height:calc(var(--spacing) * 16)}.h-\\[8px\\]{height:8px}.h-\\[17px\\]{height:17px}.h-\\[18px\\]{height:18px}.h-\\[20px\\]{height:20px}.h-\\[24px\\]{height:24px}.h-fit{height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\\[28rem\\]{max-height:28rem}.max-h-\\[var\\(--rg-edit-list-max-h\\)\\]{max-height:var(--rg-edit-list-max-h)}.min-h-0{min-height:0}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-\\[2lh\\]{min-height:2lh}.min-h-\\[28px\\]{min-height:28px}.w-1{width:var(--spacing)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-16{width:calc(var(--spacing) * 16)}.w-28{width:calc(var(--spacing) * 28)}.w-72{width:calc(var(--spacing) * 72)}.w-\\[2px\\]{width:2px}.w-\\[Npx\\]{width:Npx}.w-\\[calc\\(100\\%\\+16px\\)\\]{width:calc(100% + 16px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\\[55\\%\\]{max-width:55%}.max-w-\\[100vw\\]{max-width:100vw}.max-w-\\[110px\\]{max-width:110px}.max-w-\\[280px\\]{max-width:280px}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-\\[3\\.5ch\\]{min-width:3.5ch}.min-w-\\[3ch\\]{min-width:3ch}.min-w-\\[4ch\\]{min-width:4ch}.min-w-\\[5ch\\]{min-width:5ch}.min-w-\\[6ch\\]{min-width:6ch}.min-w-\\[7ch\\]{min-width:7ch}.min-w-\\[8ch\\]{min-width:8ch}.min-w-\\[10ch\\]{min-width:10ch}.min-w-\\[12ch\\]{min-width:12ch}.min-w-\\[36px\\]{min-width:36px}.min-w-\\[52px\\]{min-width:52px}.min-w-\\[100px\\]{min-width:100px}.min-w-\\[150px\\]{min-width:150px}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-rotate-90{rotate:-90deg}.rotate-0{rotate:0deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-decimal{list-style-type:decimal}.grid-cols-\\[0fr\\]{grid-template-columns:0fr}.grid-cols-\\[1fr\\]{grid-template-columns:1fr}.grid-rows-\\[0fr\\]{grid-template-rows:0fr}.grid-rows-\\[1fr\\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:0}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-\\[5px\\]{gap:5px}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\\[1px\\]{border-radius:1px}.rounded-\\[3px\\]{border-radius:3px}.rounded-\\[4px\\]{border-radius:4px}.rounded-\\[5px\\]{border-radius:5px}.rounded-\\[6px\\]{border-radius:6px}.rounded-\\[13px\\]{border-radius:13px}.rounded-\\[14px\\]{border-radius:14px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-\\[10px\\]{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-\\[10px\\]{border-top-left-radius:10px;border-bottom-left-radius:10px}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-\\[10px\\]{border-top-right-radius:10px;border-bottom-right-radius:10px}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-\\[6px\\]{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.rounded-b-\\[10px\\]{border-bottom-right-radius:10px;border-bottom-left-radius:10px}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.\\[border-width\\:0\\.5px\\]{border-width:.5px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.\\[border-top-width\\:0\\.5px\\]{border-top-width:.5px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\\[var\\(--rg-border-button\\)\\]{border-color:var(--rg-border-button)}.border-accent{border-color:var(--color-accent)}.border-accent\\/40{border-color:#5e6ad266}@supports (color:color-mix(in lab, red, red)){.border-accent\\/40{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.border-border{border-color:var(--color-border)}.border-danger{border-color:var(--color-danger)}.border-danger\\/40{border-color:#eb575766}@supports (color:color-mix(in lab, red, red)){.border-danger\\/40{border-color:color-mix(in oklab, var(--color-danger) 40%, transparent)}}.border-success{border-color:var(--color-success)}.border-success\\/40{border-color:#4cb78266}@supports (color:color-mix(in lab, red, red)){.border-success\\/40{border-color:color-mix(in oklab, var(--color-success) 40%, transparent)}}.border-text-dim{border-color:var(--color-text-dim)}.border-transparent{border-color:#0000}.border-warn{border-color:var(--color-warn)}.border-warn\\/40{border-color:#f2c94c66}@supports (color:color-mix(in lab, red, red)){.border-warn\\/40{border-color:color-mix(in oklab, var(--color-warn) 40%, transparent)}}.border-t-\\[var\\(--rg-border-subtle\\)\\]{border-top-color:var(--rg-border-subtle)}.border-t-transparent{border-top-color:#0000}.bg-\\[var\\(--rg-error-bg\\)\\]{background-color:var(--rg-error-bg)}.bg-\\[var\\(--rg-panel-bg\\)\\]{background-color:var(--rg-panel-bg)}.bg-\\[var\\(--rg-submit-bg\\)\\]{background-color:var(--rg-submit-bg)}.bg-\\[var\\(--rg-surface-active\\)\\]{background-color:var(--rg-surface-active)}.bg-\\[var\\(--rg-surface-hover\\)\\]{background-color:var(--rg-surface-hover)}.bg-\\[var\\(--rg-text-primary\\)\\]{background-color:var(--rg-text-primary)}.bg-\\[var\\(--rg-text-secondary\\)\\]{background-color:var(--rg-text-secondary)}.bg-accent{background-color:var(--color-accent)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-bg{background-color:var(--color-bg)}.bg-bg\\/80{background-color:#0b0c0ecc}@supports (color:color-mix(in lab, red, red)){.bg-bg\\/80{background-color:color-mix(in oklab, var(--color-bg) 80%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-current{background-color:currentColor}.bg-danger{background-color:var(--color-danger)}.bg-danger-soft{background-color:var(--color-danger-soft)}.bg-danger\\/10{background-color:#eb57571a}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-success{background-color:var(--color-success)}.bg-surface{background-color:var(--color-surface)}.bg-surface-2{background-color:var(--color-surface-2)}.bg-surface-3{background-color:var(--color-surface-3)}.bg-text-faint{background-color:var(--color-text-faint)}.bg-transparent{background-color:#0000}.bg-warn{background-color:var(--color-warn)}.bg-warn\\/10{background-color:#f2c94c1a}@supports (color:color-mix(in lab, red, red)){.bg-warn\\/10{background-color:color-mix(in oklab, var(--color-warn) 10%, transparent)}}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-0\\.25{padding-inline:calc(var(--spacing) * .25)}.px-1{padding-inline:var(--spacing)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-\\[3px\\]{padding-inline:3px}.py-0{padding-block:0}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-0\\.25{padding-block:calc(var(--spacing) * .25)}.py-1{padding-block:var(--spacing)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-px{padding-block:1px}.pt-0{padding-top:0}.pt-0\\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:var(--spacing)}.pr-1\\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1{padding-bottom:var(--spacing)}.pb-1\\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-0{padding-left:0}.pl-0\\.5{padding-left:calc(var(--spacing) * .5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-end{text-align:end}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.font-serif{font-family:var(--font-serif)}.text-\\[9\\.5px\\]{font-size:9.5px}.text-\\[9px\\]{font-size:9px}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[10px\\]{font-size:10px}.text-\\[11\\.5px\\]{font-size:11.5px}.text-\\[11px\\]{font-size:11px}.text-\\[12\\.5px\\]{font-size:12.5px}.text-\\[12px\\]{font-size:12px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.leading-3{--tw-leading:calc(var(--spacing) * 3);line-height:calc(var(--spacing) * 3)}.leading-3\\.5{--tw-leading:calc(var(--spacing) * 3.5);line-height:calc(var(--spacing) * 3.5)}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.font-thin{--tw-font-weight:var(--font-weight-thin);font-weight:var(--font-weight-thin)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-normal{overflow-wrap:normal;word-break:normal}.break-words,.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-break-spaces{white-space:break-spaces}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[var\\(--rg-error-text\\)\\]{color:var(--rg-error-text)}.text-\\[var\\(--rg-submit-fg\\)\\]{color:var(--rg-submit-fg)}.text-\\[var\\(--rg-text-primary\\)\\]{color:var(--rg-text-primary)}.text-\\[var\\(--rg-text-primary-85\\)\\]{color:var(--rg-text-primary-85)}.text-\\[var\\(--rg-text-secondary\\)\\]{color:var(--rg-text-secondary)}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}.text-text{color:var(--color-text)}.text-text-dim{color:var(--color-text-dim)}.text-text-faint{color:var(--color-text-faint)}.text-warn{color:var(--color-warn)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\\[box-shadow\\:var\\(--rg-shadow\\)\\]{box-shadow:var(--rg-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.\\[filter\\:var\\(--rg-drop-shadow\\)\\]{filter:var(--rg-drop-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-columns\\]{transition-property:grid-template-columns;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[padding\\,border-radius\\,transform\\]{transition-property:padding,border-radius,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[top\\,left\\,width\\,height\\,opacity\\,border-radius\\]{transition-property:top,left,width,height,opacity,border-radius;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,color\\]{transition-property:transform,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,opacity\\]{transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-\\[80ms\\]{transition-delay:80ms}.duration-60{--tw-duration:60ms;transition-duration:60ms}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-120{--tw-duration:.12s;transition-duration:.12s}.duration-140{--tw-duration:.14s;transition-duration:.14s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-180{--tw-duration:.18s;transition-duration:.18s}.duration-220{--tw-duration:.22s;transition-duration:.22s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-400{--tw-duration:.4s;transition-duration:.4s}.ease-\\[cubic-bezier\\(0\\,0\\,0\\.2\\,1\\)\\]{--tw-ease:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-\\[opacity\\,transform\\]{will-change:opacity,transform}.will-change-transform{will-change:transform}.contain-layout{--tw-contain-layout:layout;contain:var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\\[corner-shape\\:superellipse\\(1\\.25\\)\\]{corner-shape:superellipse(1.25)}.\\[font-synthesis\\:none\\]{font-synthesis:none}.group-open\\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media (hover:hover){.group-hover\\:text-\\[var\\(--rg-text-primary\\)\\]:is(:where(.group):hover *){color:var(--rg-text-primary)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\\:text-text-faint::placeholder{color:var(--color-text-faint)}@media (hover:hover){.hover\\:bg-\\[var\\(--rg-error-bg-hover\\)\\]:hover{background-color:var(--rg-error-bg-hover)}.hover\\:bg-\\[var\\(--rg-surface-active\\)\\]:hover{background-color:var(--rg-surface-active)}.hover\\:bg-\\[var\\(--rg-surface-hover\\)\\]:hover{background-color:var(--rg-surface-hover)}.hover\\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\\:bg-accent\\/50:hover{background-color:#5e6ad280}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/50:hover{background-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.hover\\:bg-danger\\/30:hover{background-color:#eb57574d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/30:hover{background-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.hover\\:bg-surface-2:hover{background-color:var(--color-surface-2)}.hover\\:bg-surface-3:hover{background-color:var(--color-surface-3)}.hover\\:text-\\[var\\(--rg-text-primary\\)\\]:hover{color:var(--rg-text-primary)}.hover\\:text-accent:hover{color:var(--color-accent)}.hover\\:text-danger:hover{color:var(--color-danger)}.hover\\:text-text:hover{color:var(--color-text)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-80:hover{opacity:.8}}.focus\\:border-accent:focus{border-color:var(--color-accent)}.active\\:cursor-grabbing:active{cursor:grabbing}.active\\:bg-accent:active{background-color:var(--color-accent)}.active\\:transition-none:active{transition-property:none}.disabled\\:cursor-default:disabled{cursor:default}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-surface-3:disabled{background-color:var(--color-surface-3)}.disabled\\:text-text-faint:disabled{color:var(--color-text-faint)}.disabled\\:opacity-40:disabled{opacity:.4}@media (hover:hover){.disabled\\:hover\\:bg-surface-2:disabled:hover{background-color:var(--color-surface-2)}}.data-\\[state\\=on\\]\\:transition-none[data-state=on],.data-\\[state\\=open\\]\\:transition-none[data-state=open],.data-\\[state\\=…\\]\\:transition-none[data-state=…]{transition-property:none}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light],:host([data-theme=light]){--color-bg:#fbfbfc;--color-surface:#fff;--color-surface-2:#f4f4f6;--color-surface-3:#e9e9ee;--color-border:#e2e2e8;--color-border-strong:#cfcfd8;--color-text:#1b1c20;--color-text-dim:#5c5f6a;--color-text-faint:#9a9da8;--color-accent-soft:#5e6ad21f;--color-danger-soft:#eb57571a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--color-bg:#fbfbfc;--color-surface:#fff;--color-surface-2:#f4f4f6;--color-surface-3:#e9e9ee;--color-border:#e2e2e8;--color-border-strong:#cfcfd8;--color-text:#1b1c20;--color-text-dim:#5c5f6a;--color-text-faint:#9a9da8;--color-accent-soft:#5e6ad21f;--color-danger-soft:#eb57571a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}body{background-color:var(--color-bg);font-family:var(--font-sans);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-width:320px;margin:0;font-size:13px}@keyframes geist-spinner-fade{0%{opacity:1}to{opacity:.15}}[data-tip]{position:relative}[data-tip]:hover:after{content:attr(data-tip);color:#fff;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;z-index:60;background:#1b1c20;border-radius:6px;max-width:260px;padding:3px 8px;font-size:10.5px;font-weight:500;line-height:1.35;position:absolute;bottom:calc(100% + 6px);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 4px 12px #0000004d}[data-tip][data-tip-pos~=right]:hover:after{left:0;transform:none}[data-tip][data-tip-pos~=left]:hover:after{left:auto;right:0;transform:none}[data-tip][data-tip-pos~=bottom]:hover:after{top:calc(100% + 6px);bottom:auto}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.lg-md p{margin:0 0 6px}.lg-md p:last-child{margin-bottom:0}.lg-md a{color:var(--color-accent);word-break:break-all;text-decoration:none}.lg-md a:hover{text-decoration:underline}.lg-md code{background:var(--color-surface-2);border:1px solid var(--color-border);font-family:var(--font-mono);border-radius:4px;padding:0 4px;font-size:11px}.lg-md pre{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:6px;margin:6px 0;padding:8px;overflow-x:auto}.lg-md pre code{white-space:pre;background:0 0;border:none;padding:0;font-size:11px}.lg-md ul,.lg-md ol{flex-direction:column;gap:2px;margin:4px 0 6px;padding-left:18px;display:flex}.lg-md ul{list-style:outside}.lg-md ol{list-style:decimal}.lg-md h4{margin:8px 0 4px;font-size:12px;font-weight:600}.lg-md lg-media{display:block}.lg-md lg-media img,.lg-md lg-media video{border:1px solid var(--color-border);border-radius:6px;max-width:100%;margin:4px 0}.lg-md video{border:1px solid var(--color-border);background:#000;border-radius:6px;max-width:100%;margin:4px 0}.lg-md img{border:1px solid var(--color-border);border-radius:6px;max-width:100%;margin:4px 0}.lg-md strong{font-weight:600}*{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:4px}::-webkit-scrollbar-track{background:0 0}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-tracking{syntax:\"*\";inherits:false}@property --tw-ordinal{syntax:\"*\";inherits:false}@property --tw-slashed-zero{syntax:\"*\";inherits:false}@property --tw-numeric-figure{syntax:\"*\";inherits:false}@property --tw-numeric-spacing{syntax:\"*\";inherits:false}@property --tw-numeric-fraction{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@property --tw-backdrop-blur{syntax:\"*\";inherits:false}@property --tw-backdrop-brightness{syntax:\"*\";inherits:false}@property --tw-backdrop-contrast{syntax:\"*\";inherits:false}@property --tw-backdrop-grayscale{syntax:\"*\";inherits:false}@property --tw-backdrop-hue-rotate{syntax:\"*\";inherits:false}@property --tw-backdrop-invert{syntax:\"*\";inherits:false}@property --tw-backdrop-opacity{syntax:\"*\";inherits:false}@property --tw-backdrop-saturate{syntax:\"*\";inherits:false}@property --tw-backdrop-sepia{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}@property --tw-contain-size{syntax:\"*\";inherits:false}@property --tw-contain-layout{syntax:\"*\";inherits:false}@property --tw-contain-paint{syntax:\"*\";inherits:false}@property --tw-contain-style{syntax:\"*\";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}";
|
|
50300
50351
|
//#endregion
|
|
50301
50352
|
//#region src/page/index.tsx
|
|
50302
50353
|
Br();
|
|
50303
|
-
var
|
|
50304
|
-
function
|
|
50354
|
+
var V7 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-danger size-2 shrink-0 animate-pulse rounded-full\">"), H7 = /*#__PURE__*/ N("<span class=\"text-text min-w-[5ch] text-[11px] font-medium tabular-nums\">"), U7 = /*#__PURE__*/ N("<button class=\"bg-accent hover:bg-accent-hover h-7 cursor-pointer rounded-full px-2.5 text-[11px] font-medium text-white transition-colors\"><span class=\"inline-block min-w-[4ch] text-center\">Stop"), W7 = /*#__PURE__*/ N("<p class=\"text-warn px-1.5 pt-1 pb-1.5 text-[10.5px] font-semibold tracking-wide uppercase\">Needs review"), G7 = /*#__PURE__*/ N("<div><p class=\"text-text-dim px-1.5 pt-1 pb-1.5 text-[10.5px] font-semibold tracking-wide uppercase\">Running agents"), K7 = /*#__PURE__*/ N("<div class=\"fixed z-[2147483646] select-none\"><div class=\"bg-surface border-border text-text flex h-9 cursor-grab items-center gap-1 rounded-full border py-1 pr-1 pl-2.5 font-sans shadow-lg active:cursor-grabbing\">"), q7 = /*#__PURE__*/ N("<div><div title=\"Drag to resize\">"), J7 = /*#__PURE__*/ N("<button title=\"Open Linear Grab\"aria-label=\"Open Linear Grab\"class=\"text-accent hover:opacity-80 inline-flex cursor-pointer items-center gap-1.5\">"), Y7 = /*#__PURE__*/ N("<span class=\"bg-border h-4 w-px\"aria-hidden>"), X7 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-warn size-2 rounded-full\">"), Z7 = /*#__PURE__*/ N("<span class=\"text-warn min-w-[3.5ch] text-left text-[11px] font-medium tabular-nums\"> rev"), Q7 = /*#__PURE__*/ N("<button title=\"Running agents\"aria-label=\"Running agents\"class=\"hover:bg-surface-2 flex h-7 cursor-pointer items-center gap-1.5 rounded-full px-2 transition-colors\"><span aria-hidden></span><span>"), $7 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-accent size-2 shrink-0 animate-pulse rounded-full\">"), e9 = /*#__PURE__*/ N("<span class=\"text-text min-w-[3ch] text-[11px] font-medium tabular-nums\">s"), t9 = /*#__PURE__*/ N("<span class=\"text-text-dim min-w-[7ch] text-[11px] tabular-nums\"> states"), n9 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1.5 pb-1.5 text-[11.5px]\">No agents running right now."), r9 = /*#__PURE__*/ N("<button class=\"hover:bg-surface-2 flex w-full cursor-pointer flex-col gap-0.5 rounded-md px-1.5 py-1.5 text-left transition-colors\"><span class=\"flex min-w-0 items-center gap-1.5\"><span aria-hidden class=\"size-1.5 shrink-0 rounded-full\"></span><span class=\"font-mono text-text-dim shrink-0 text-[10.5px]\"></span><span class=\"text-text truncate text-[11.5px]\"></span></span><span class=\"text-text-faint pl-3 text-[10.5px] tabular-nums\"> · <!> · ");
|
|
50355
|
+
function i9(e = {}) {
|
|
50305
50356
|
if (typeof window > "u" || window.__LINEAR_GRAB_PAGE__) return;
|
|
50306
50357
|
window.__LINEAR_GRAB_PAGE__ = !0;
|
|
50307
50358
|
let t = () => {
|
|
50308
|
-
uk(), z2(),
|
|
50359
|
+
uk(), z2(), Q4(), W8(), JZ();
|
|
50309
50360
|
let t = document.createElement("div");
|
|
50310
50361
|
t.id = "linear-grab-root", document.body.appendChild(t);
|
|
50311
50362
|
let n = (e) => {
|
|
@@ -50333,17 +50384,17 @@ function Z7(e = {}) {
|
|
|
50333
50384
|
"keypress"
|
|
50334
50385
|
]) window.addEventListener(e, n, { capture: !0 });
|
|
50335
50386
|
let r = t.attachShadow({ mode: "open" }), i = document.createElement("style");
|
|
50336
|
-
i.textContent =
|
|
50387
|
+
i.textContent = B7, r.appendChild(i);
|
|
50337
50388
|
let a = document.createElement("div");
|
|
50338
50389
|
r.appendChild(a);
|
|
50339
|
-
let o = () => a.setAttribute("data-theme",
|
|
50340
|
-
o(), matchMedia("(prefers-color-scheme: light)").addEventListener("change", o), nt(() => j(
|
|
50390
|
+
let o = () => a.setAttribute("data-theme", a9());
|
|
50391
|
+
o(), matchMedia("(prefers-color-scheme: light)").addEventListener("change", o), nt(() => j(d9, { get defaultOpen() {
|
|
50341
50392
|
return e.defaultOpen ?? !1;
|
|
50342
50393
|
} }), a);
|
|
50343
50394
|
};
|
|
50344
50395
|
document.body ? t() : document.addEventListener("DOMContentLoaded", t, { once: !0 });
|
|
50345
50396
|
}
|
|
50346
|
-
function
|
|
50397
|
+
function a9() {
|
|
50347
50398
|
try {
|
|
50348
50399
|
let e = [document.body, document.documentElement];
|
|
50349
50400
|
for (let t of e) {
|
|
@@ -50353,11 +50404,11 @@ function Q7() {
|
|
|
50353
50404
|
} catch {}
|
|
50354
50405
|
return matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark";
|
|
50355
50406
|
}
|
|
50356
|
-
var
|
|
50357
|
-
function
|
|
50407
|
+
var o9 = 130, s9 = 36, c9 = 380, l9 = 280, u9 = 720;
|
|
50408
|
+
function d9(e) {
|
|
50358
50409
|
let [t, n] = T(e.defaultOpen), [r, i] = T("right"), [a, o] = T({
|
|
50359
|
-
x: Math.max(8, window.innerWidth -
|
|
50360
|
-
y: Math.max(8, window.innerHeight -
|
|
50410
|
+
x: Math.max(8, window.innerWidth - o9 - 24),
|
|
50411
|
+
y: Math.max(8, window.innerHeight - s9 - 20)
|
|
50361
50412
|
}), [s, c] = T({
|
|
50362
50413
|
running: [],
|
|
50363
50414
|
review: []
|
|
@@ -50377,12 +50428,12 @@ function i9(e) {
|
|
|
50377
50428
|
let t = Math.floor(e / 1e3);
|
|
50378
50429
|
return `${Math.floor(t / 60)}:${String(t % 60).padStart(2, "0")}`;
|
|
50379
50430
|
}, [b, x] = T(null), S = (e) => ({
|
|
50380
|
-
x: Math.min(Math.max(8, e.x), window.innerWidth -
|
|
50381
|
-
y: Math.min(Math.max(8, e.y), window.innerHeight -
|
|
50431
|
+
x: Math.min(Math.max(8, e.x), window.innerWidth - o9 - 8),
|
|
50432
|
+
y: Math.min(Math.max(8, e.y), window.innerHeight - s9 - 8)
|
|
50382
50433
|
}), C = (e) => ({
|
|
50383
50434
|
x: Math.min(Math.max(8 - (ne() - 80), e.x), window.innerWidth - 80),
|
|
50384
50435
|
y: Math.min(Math.max(0, e.y), window.innerHeight - 80)
|
|
50385
|
-
}), [w, E] = T(!1), [k, ee] = T("cloud"), [te, A] = T(!1), [ne, re] = T(
|
|
50436
|
+
}), [w, E] = T(!1), [k, ee] = T("cloud"), [te, A] = T(!1), [ne, re] = T(c9), oe = (e) => Math.min(u9, Math.max(l9, Math.min(e, window.innerWidth - 60)));
|
|
50386
50437
|
O(() => {
|
|
50387
50438
|
let e = document.documentElement, n = t() && w();
|
|
50388
50439
|
e.style.marginRight = n && r() === "right" ? `${ne()}px` : "", e.style.marginLeft = n && r() === "left" ? `${ne()}px` : "";
|
|
@@ -50496,7 +50547,7 @@ function i9(e) {
|
|
|
50496
50547
|
return !t();
|
|
50497
50548
|
},
|
|
50498
50549
|
get children() {
|
|
50499
|
-
var e =
|
|
50550
|
+
var e = K7(), t = e.firstChild;
|
|
50500
50551
|
return t.$$click = () => {
|
|
50501
50552
|
ce || p() === "recording" || h().active || (f(!1), n(!0));
|
|
50502
50553
|
}, t.$$pointerdown = le, P(t, j(M, {
|
|
@@ -50506,14 +50557,14 @@ function i9(e) {
|
|
|
50506
50557
|
get fallback() {
|
|
50507
50558
|
return [
|
|
50508
50559
|
(() => {
|
|
50509
|
-
var e =
|
|
50560
|
+
var e = J7();
|
|
50510
50561
|
return e.$$click = () => {
|
|
50511
50562
|
ce || (f(!1), n(!0));
|
|
50512
|
-
}, P(e, j(
|
|
50563
|
+
}, P(e, j(R7, { size: 13 })), e;
|
|
50513
50564
|
})(),
|
|
50514
|
-
|
|
50565
|
+
Y7(),
|
|
50515
50566
|
(() => {
|
|
50516
|
-
var e =
|
|
50567
|
+
var e = Q7(), t = e.firstChild, n = t.nextSibling;
|
|
50517
50568
|
return e.$$click = (e) => {
|
|
50518
50569
|
e.stopPropagation(), !ce && f((e) => !e);
|
|
50519
50570
|
}, P(n, (() => {
|
|
@@ -50524,8 +50575,8 @@ function i9(e) {
|
|
|
50524
50575
|
return $e(() => !te())() && u().length > 0;
|
|
50525
50576
|
},
|
|
50526
50577
|
get children() {
|
|
50527
|
-
return [
|
|
50528
|
-
var e =
|
|
50578
|
+
return [X7(), (() => {
|
|
50579
|
+
var e = Z7(), t = e.firstChild;
|
|
50529
50580
|
return P(e, () => u().length, t), e;
|
|
50530
50581
|
})()];
|
|
50531
50582
|
}
|
|
@@ -50546,17 +50597,17 @@ function i9(e) {
|
|
|
50546
50597
|
},
|
|
50547
50598
|
get fallback() {
|
|
50548
50599
|
return [
|
|
50549
|
-
|
|
50600
|
+
$7(),
|
|
50550
50601
|
(() => {
|
|
50551
|
-
var e =
|
|
50602
|
+
var e = e9(), t = e.firstChild;
|
|
50552
50603
|
return P(e, () => Math.ceil(h().msLeft / 1e3), t), e;
|
|
50553
50604
|
})(),
|
|
50554
50605
|
(() => {
|
|
50555
|
-
var e =
|
|
50606
|
+
var e = t9(), t = e.firstChild;
|
|
50556
50607
|
return P(e, () => h().total, t), D(() => it(e, "title", Object.entries(h().byTrigger).map(([e, t]) => `${t} ${e}`).join(" · ") || "hover / open the component to record its states")), e;
|
|
50557
50608
|
})(),
|
|
50558
50609
|
(() => {
|
|
50559
|
-
var e =
|
|
50610
|
+
var e = U7();
|
|
50560
50611
|
return e.$$click = (e) => {
|
|
50561
50612
|
e.stopPropagation(), !ce && o2();
|
|
50562
50613
|
}, e;
|
|
@@ -50565,13 +50616,13 @@ function i9(e) {
|
|
|
50565
50616
|
},
|
|
50566
50617
|
get children() {
|
|
50567
50618
|
return [
|
|
50568
|
-
|
|
50619
|
+
V7(),
|
|
50569
50620
|
(() => {
|
|
50570
|
-
var e =
|
|
50621
|
+
var e = H7();
|
|
50571
50622
|
return P(e, () => y(_())), e;
|
|
50572
50623
|
})(),
|
|
50573
50624
|
(() => {
|
|
50574
|
-
var e =
|
|
50625
|
+
var e = U7();
|
|
50575
50626
|
return e.$$click = () => {
|
|
50576
50627
|
ce || tO();
|
|
50577
50628
|
}, e;
|
|
@@ -50585,17 +50636,17 @@ function i9(e) {
|
|
|
50585
50636
|
return d();
|
|
50586
50637
|
},
|
|
50587
50638
|
get children() {
|
|
50588
|
-
var e =
|
|
50639
|
+
var e = G7(), t = e.firstChild;
|
|
50589
50640
|
return P(e, j(M, {
|
|
50590
50641
|
get when() {
|
|
50591
50642
|
return u().length > 0;
|
|
50592
50643
|
},
|
|
50593
50644
|
get children() {
|
|
50594
|
-
return [
|
|
50645
|
+
return [W7(), j(We, {
|
|
50595
50646
|
get each() {
|
|
50596
50647
|
return u();
|
|
50597
50648
|
},
|
|
50598
|
-
children: (e) => j(
|
|
50649
|
+
children: (e) => j(f9, {
|
|
50599
50650
|
agent: e,
|
|
50600
50651
|
review: !0,
|
|
50601
50652
|
onOpen: de
|
|
@@ -50607,14 +50658,14 @@ function i9(e) {
|
|
|
50607
50658
|
return l().length > 0;
|
|
50608
50659
|
},
|
|
50609
50660
|
get fallback() {
|
|
50610
|
-
return
|
|
50661
|
+
return n9();
|
|
50611
50662
|
},
|
|
50612
50663
|
get children() {
|
|
50613
50664
|
return j(We, {
|
|
50614
50665
|
get each() {
|
|
50615
50666
|
return l();
|
|
50616
50667
|
},
|
|
50617
|
-
children: (e) => j(
|
|
50668
|
+
children: (e) => j(f9, {
|
|
50618
50669
|
agent: e,
|
|
50619
50670
|
onOpen: de
|
|
50620
50671
|
})
|
|
@@ -50635,8 +50686,8 @@ function i9(e) {
|
|
|
50635
50686
|
return t();
|
|
50636
50687
|
},
|
|
50637
50688
|
get children() {
|
|
50638
|
-
var e =
|
|
50639
|
-
return t.$$pointerdown = fe, P(e, j(
|
|
50689
|
+
var e = q7(), t = e.firstChild;
|
|
50690
|
+
return t.$$pointerdown = fe, P(e, j(z7, {
|
|
50640
50691
|
onGrab: () => n(!0),
|
|
50641
50692
|
onClose: () => n(!1),
|
|
50642
50693
|
get onHeaderPointerDown() {
|
|
@@ -50664,19 +50715,19 @@ function i9(e) {
|
|
|
50664
50715
|
}
|
|
50665
50716
|
})];
|
|
50666
50717
|
}
|
|
50667
|
-
function
|
|
50718
|
+
function f9(e) {
|
|
50668
50719
|
return (() => {
|
|
50669
|
-
var t =
|
|
50720
|
+
var t = r9(), n = t.firstChild, r = n.firstChild, i = r.nextSibling, a = i.nextSibling, o = n.nextSibling, s = o.firstChild, c = s.nextSibling;
|
|
50670
50721
|
return c.nextSibling, t.$$click = () => e.onOpen(e.agent.id), P(i, () => e.agent.identifier), P(a, () => e.agent.title), P(o, (() => {
|
|
50671
50722
|
var t = $e(() => !!e.review);
|
|
50672
50723
|
return () => t() ? "PR ready · needs review" : e.agent.stateName;
|
|
50673
|
-
})(), s), P(o, () => e.agent.delegateName, c), P(o, () =>
|
|
50724
|
+
})(), s), P(o, () => e.agent.delegateName, c), P(o, () => p9(e.agent.updatedAt), null), D((t) => dt(r, "background", e.review ? "var(--color-warn)" : e.agent.stateColor)), t;
|
|
50674
50725
|
})();
|
|
50675
50726
|
}
|
|
50676
|
-
function
|
|
50727
|
+
function p9(e) {
|
|
50677
50728
|
let t = Math.max(0, Math.floor((Date.now() - Date.parse(e)) / 1e3));
|
|
50678
50729
|
return t < 60 ? "now" : t < 3600 ? `${Math.floor(t / 60)}m` : t < 86400 ? `${Math.floor(t / 3600)}h` : `${Math.floor(t / 86400)}d`;
|
|
50679
50730
|
}
|
|
50680
50731
|
rt(["pointerdown", "click"]);
|
|
50681
50732
|
//#endregion
|
|
50682
|
-
export {
|
|
50733
|
+
export { i9 as init };
|