linear-grab 0.27.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 +1 -1
- package/bin/render-scan.global.js +2 -2
- package/bin/slop-scan.global.js +3 -3
- package/dist/index.global.js +16 -16
- package/dist/linear-grab.js +599 -583
- package/dist/render-scan.global.js +2 -2
- package/dist/slop-scan.global.js +3 -3
- package/package.json +1 -1
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,14 +47789,14 @@ 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
|
-
var
|
|
47783
|
-
function
|
|
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) {
|
|
47784
47800
|
return e?.length ? e.map((e) => {
|
|
47785
47801
|
try {
|
|
47786
47802
|
let t = new RegExp(e);
|
|
@@ -47790,12 +47806,12 @@ function K3(e) {
|
|
|
47790
47806
|
}
|
|
47791
47807
|
}) : [];
|
|
47792
47808
|
}
|
|
47793
|
-
function
|
|
47794
|
-
if (e.length <= 2 ||
|
|
47809
|
+
function X3(e, t) {
|
|
47810
|
+
if (e.length <= 2 || J3.test(e)) return !0;
|
|
47795
47811
|
for (let n of t) if (n(e)) return !0;
|
|
47796
47812
|
return !1;
|
|
47797
47813
|
}
|
|
47798
|
-
function
|
|
47814
|
+
function Z3(e) {
|
|
47799
47815
|
let t = /* @__PURE__ */ new Map();
|
|
47800
47816
|
for (let n of e) for (let e of n.entries) {
|
|
47801
47817
|
let n = t.get(e.name);
|
|
@@ -47808,13 +47824,13 @@ function J3(e) {
|
|
|
47808
47824
|
}
|
|
47809
47825
|
return t;
|
|
47810
47826
|
}
|
|
47811
|
-
function
|
|
47812
|
-
let r = [], i =
|
|
47827
|
+
function Q3(e, t, n) {
|
|
47828
|
+
let r = [], i = Y3(n?.ignore), a = e.map((e) => ({
|
|
47813
47829
|
...e,
|
|
47814
|
-
entries: e.entries.filter((e) => !
|
|
47815
|
-
mounts: Object.fromEntries(Object.entries(e.mounts).filter(([e]) => !
|
|
47816
|
-
})), o =
|
|
47817
|
-
return
|
|
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, () => {
|
|
47818
47834
|
let e = [];
|
|
47819
47835
|
for (let n of o.values()) {
|
|
47820
47836
|
if (n.updates.length < 5 || !n.updates.every((e) => e.length === 0)) continue;
|
|
@@ -47822,20 +47838,20 @@ function Y3(e, t, n) {
|
|
|
47822
47838
|
e.push({
|
|
47823
47839
|
ruleId: "R9",
|
|
47824
47840
|
shape: "B",
|
|
47825
|
-
severity:
|
|
47841
|
+
severity: q3(t, "R9", "error"),
|
|
47826
47842
|
suspected: !0,
|
|
47827
47843
|
description: `suspected R9 — ${n.name} re-rendered ${r}× with zero prop changes (dead memo or subscription-in-body)`,
|
|
47828
47844
|
component: n.name,
|
|
47829
47845
|
source: null,
|
|
47830
47846
|
renders: r,
|
|
47831
|
-
selfTime:
|
|
47847
|
+
selfTime: K3(n.selfTime),
|
|
47832
47848
|
changes: [],
|
|
47833
|
-
evidence: `${r} renders · ${
|
|
47849
|
+
evidence: `${r} renders · ${K3(n.selfTime)}ms self · all props identity-equal`,
|
|
47834
47850
|
el: n.el
|
|
47835
47851
|
});
|
|
47836
47852
|
}
|
|
47837
47853
|
return e;
|
|
47838
|
-
}),
|
|
47854
|
+
}), s6(r, () => {
|
|
47839
47855
|
let e = [];
|
|
47840
47856
|
for (let n of o.values()) {
|
|
47841
47857
|
if (n.updates.length < 5 || !n.updates.every((e) => e.length > 0 && e.every((e) => /\((?:fn|ref)\)$/.test(e)))) continue;
|
|
@@ -47843,20 +47859,20 @@ function Y3(e, t, n) {
|
|
|
47843
47859
|
e.push({
|
|
47844
47860
|
ruleId: "R5",
|
|
47845
47861
|
shape: "B",
|
|
47846
|
-
severity:
|
|
47862
|
+
severity: q3(t, "R5", "error"),
|
|
47847
47863
|
suspected: !0,
|
|
47848
47864
|
description: `suspected R5 — ${i} renders of ${n.name} with fresh ${a} identity per parent render (memo defeated)`,
|
|
47849
47865
|
component: n.name,
|
|
47850
47866
|
source: null,
|
|
47851
47867
|
renders: i,
|
|
47852
|
-
selfTime:
|
|
47868
|
+
selfTime: K3(n.selfTime),
|
|
47853
47869
|
changes: r,
|
|
47854
|
-
evidence: `${i} renders · ${
|
|
47870
|
+
evidence: `${i} renders · ${K3(n.selfTime)}ms self · churning ${a}`,
|
|
47855
47871
|
el: n.el
|
|
47856
47872
|
});
|
|
47857
47873
|
}
|
|
47858
47874
|
return e;
|
|
47859
|
-
}),
|
|
47875
|
+
}), s6(r, () => {
|
|
47860
47876
|
let e = [], n = /Tooltip|Menu|Popover|Context|Dialog|Dropdown/i;
|
|
47861
47877
|
for (let r of a) for (let i of Object.keys(r.mounts)) {
|
|
47862
47878
|
let a = r.mounts[i];
|
|
@@ -47865,7 +47881,7 @@ function Y3(e, t, n) {
|
|
|
47865
47881
|
e.push({
|
|
47866
47882
|
ruleId: "R4",
|
|
47867
47883
|
shape: "A",
|
|
47868
|
-
severity:
|
|
47884
|
+
severity: q3(t, "R4", "error"),
|
|
47869
47885
|
suspected: !0,
|
|
47870
47886
|
description: `suspected R4 — ${a} ${i} instances mounted in one commit (per-row overlays should mount on intent)`,
|
|
47871
47887
|
component: i,
|
|
@@ -47878,11 +47894,11 @@ function Y3(e, t, n) {
|
|
|
47878
47894
|
});
|
|
47879
47895
|
}
|
|
47880
47896
|
return e;
|
|
47881
|
-
}),
|
|
47897
|
+
}), s6(r, () => {
|
|
47882
47898
|
let e = [];
|
|
47883
47899
|
for (let t of a) {
|
|
47884
47900
|
if (t.duration <= s.commitMs) continue;
|
|
47885
|
-
let n = [...t.entries].sort((e, t) => t.selfTime - e.selfTime).slice(0, 3).map((e) => `${e.name} ${
|
|
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` : "";
|
|
47886
47902
|
e.push({
|
|
47887
47903
|
ruleId: null,
|
|
47888
47904
|
shape: null,
|
|
@@ -47898,7 +47914,7 @@ function Y3(e, t, n) {
|
|
|
47898
47914
|
});
|
|
47899
47915
|
}
|
|
47900
47916
|
return e;
|
|
47901
|
-
}),
|
|
47917
|
+
}), s6(r, () => {
|
|
47902
47918
|
let e = [], t = /* @__PURE__ */ new Map();
|
|
47903
47919
|
for (let e of a) {
|
|
47904
47920
|
let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
|
|
@@ -47923,18 +47939,18 @@ function Y3(e, t, n) {
|
|
|
47923
47939
|
component: n,
|
|
47924
47940
|
source: null,
|
|
47925
47941
|
renders: r.hits,
|
|
47926
|
-
selfTime:
|
|
47942
|
+
selfTime: K3(r.total),
|
|
47927
47943
|
changes: [],
|
|
47928
|
-
evidence: `${r.hits} commits over ${s.selfMs}ms self (worst ${
|
|
47944
|
+
evidence: `${r.hits} commits over ${s.selfMs}ms self (worst ${K3(r.worst)}ms)`,
|
|
47929
47945
|
el: r.el
|
|
47930
47946
|
});
|
|
47931
47947
|
return e;
|
|
47932
|
-
}),
|
|
47933
|
-
let n = [], r =
|
|
47948
|
+
}), s6(r, () => {
|
|
47949
|
+
let n = [], r = a6(e.filter((e) => e.nearInput).map((e) => e.at).sort((e, t) => e - t), 1e3);
|
|
47934
47950
|
return r >= 5 && n.push({
|
|
47935
47951
|
ruleId: "R10",
|
|
47936
47952
|
shape: "B",
|
|
47937
|
-
severity:
|
|
47953
|
+
severity: q3(t, "R10", "error"),
|
|
47938
47954
|
suspected: !0,
|
|
47939
47955
|
description: `suspected R10 — ${r} React commits during scroll/pointer movement (frame-rate state updates)`,
|
|
47940
47956
|
component: null,
|
|
@@ -47944,12 +47960,12 @@ function Y3(e, t, n) {
|
|
|
47944
47960
|
changes: [],
|
|
47945
47961
|
evidence: `${r} commits within a 1s scroll/pointer window`
|
|
47946
47962
|
}), n;
|
|
47947
|
-
}),
|
|
47948
|
-
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);
|
|
47949
47965
|
return r >= 8 && n.push({
|
|
47950
47966
|
ruleId: "R24",
|
|
47951
47967
|
shape: "B",
|
|
47952
|
-
severity:
|
|
47968
|
+
severity: q3(t, "R24", "warn"),
|
|
47953
47969
|
suspected: !0,
|
|
47954
47970
|
description: `suspected R24 — ${r} commits in ${Math.round(i)}ms burst (multi-row writes / un-coalesced pokes?)`,
|
|
47955
47971
|
component: null,
|
|
@@ -47959,9 +47975,9 @@ function Y3(e, t, n) {
|
|
|
47959
47975
|
changes: [],
|
|
47960
47976
|
evidence: `${r} commits in a ${Math.round(i)}ms burst (no input)`
|
|
47961
47977
|
}), n;
|
|
47962
|
-
}),
|
|
47978
|
+
}), s6(r, () => {
|
|
47963
47979
|
let e = [];
|
|
47964
|
-
if (!
|
|
47980
|
+
if (!r6()) return e;
|
|
47965
47981
|
for (let n of o.values()) {
|
|
47966
47982
|
if (n.updates.length < 3) continue;
|
|
47967
47983
|
let r = n.el?.deref();
|
|
@@ -47978,33 +47994,33 @@ function Y3(e, t, n) {
|
|
|
47978
47994
|
e.push({
|
|
47979
47995
|
ruleId: "R3",
|
|
47980
47996
|
shape: "C",
|
|
47981
|
-
severity:
|
|
47997
|
+
severity: q3(t, "R3", "error"),
|
|
47982
47998
|
suspected: !0,
|
|
47983
47999
|
description: `suspected R3 — ${n.name} re-rendered ${a}× while its DOM is hidden/detached (closed host without everOpened gate?) [R3/R7/R23 family]`,
|
|
47984
48000
|
component: n.name,
|
|
47985
48001
|
source: null,
|
|
47986
48002
|
renders: a,
|
|
47987
|
-
selfTime:
|
|
48003
|
+
selfTime: K3(n.selfTime),
|
|
47988
48004
|
changes: [],
|
|
47989
|
-
evidence: `${a} renders while hidden/detached · ${
|
|
48005
|
+
evidence: `${a} renders while hidden/detached · ${K3(n.selfTime)}ms self`,
|
|
47990
48006
|
el: n.el
|
|
47991
48007
|
});
|
|
47992
48008
|
}
|
|
47993
48009
|
return e;
|
|
47994
|
-
}),
|
|
48010
|
+
}), c6(r);
|
|
47995
48011
|
}
|
|
47996
|
-
var
|
|
47997
|
-
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 : {}) {
|
|
47998
48014
|
let t = [];
|
|
47999
|
-
return
|
|
48000
|
-
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);
|
|
48001
48017
|
for (let e of n) {
|
|
48002
|
-
if (e.closest(
|
|
48018
|
+
if (e.closest($3)) continue;
|
|
48003
48019
|
if (r) try {
|
|
48004
48020
|
let t = e.getBoundingClientRect();
|
|
48005
48021
|
if (t.width < 2 || t.height < 2) continue;
|
|
48006
48022
|
} catch {}
|
|
48007
|
-
if (!
|
|
48023
|
+
if (!t6(e)) continue;
|
|
48008
48024
|
let n = e.getAttribute("role") ?? "widget";
|
|
48009
48025
|
t.push({
|
|
48010
48026
|
ruleId: "R8",
|
|
@@ -48017,14 +48033,14 @@ function Z3(e = typeof document < "u" ? document : {}) {
|
|
|
48017
48033
|
renders: 0,
|
|
48018
48034
|
selfTime: 0,
|
|
48019
48035
|
changes: [],
|
|
48020
|
-
evidence:
|
|
48036
|
+
evidence: n6(e),
|
|
48021
48037
|
el: typeof WeakRef < "u" ? new WeakRef(e) : void 0
|
|
48022
48038
|
});
|
|
48023
48039
|
}
|
|
48024
48040
|
return t;
|
|
48025
|
-
}),
|
|
48041
|
+
}), c6(t);
|
|
48026
48042
|
}
|
|
48027
|
-
function
|
|
48043
|
+
function t6(e) {
|
|
48028
48044
|
if (e.hasAttribute("disabled") || e.getAttribute("aria-disabled") === "true") return !0;
|
|
48029
48045
|
let t = e;
|
|
48030
48046
|
for (let e = 0; t && e <= 3; e++) {
|
|
@@ -48035,17 +48051,17 @@ function Q3(e) {
|
|
|
48035
48051
|
}
|
|
48036
48052
|
return !1;
|
|
48037
48053
|
}
|
|
48038
|
-
function
|
|
48054
|
+
function n6(e) {
|
|
48039
48055
|
let t = typeof e.className == "string" && e.className ? "." + e.className.split(/\s+/).filter(Boolean).slice(0, 2).join(".") : "";
|
|
48040
48056
|
return `${e.tagName.toLowerCase()}${t}`;
|
|
48041
48057
|
}
|
|
48042
|
-
function
|
|
48058
|
+
function r6() {
|
|
48043
48059
|
return typeof document > "u" ? !1 : (document.documentElement?.getBoundingClientRect().width ?? 0) > 0;
|
|
48044
48060
|
}
|
|
48045
|
-
function
|
|
48061
|
+
function i6(e) {
|
|
48046
48062
|
return ((e.documentElement ?? (typeof document < "u" ? document.documentElement : null))?.getBoundingClientRect().width ?? 0) > 0;
|
|
48047
48063
|
}
|
|
48048
|
-
function
|
|
48064
|
+
function a6(e, t) {
|
|
48049
48065
|
let n = 0, r = 0;
|
|
48050
48066
|
for (let i = 0; i < e.length; i++) {
|
|
48051
48067
|
for (; e[i] - e[r] > t;) r++;
|
|
@@ -48053,7 +48069,7 @@ function n6(e, t) {
|
|
|
48053
48069
|
}
|
|
48054
48070
|
return n;
|
|
48055
48071
|
}
|
|
48056
|
-
function
|
|
48072
|
+
function o6(e, t) {
|
|
48057
48073
|
let n = 0, r = 0, i = 0;
|
|
48058
48074
|
for (let a = 0; a < e.length; a++) {
|
|
48059
48075
|
for (; e[a] - e[i] > t;) i++;
|
|
@@ -48065,12 +48081,12 @@ function r6(e, t) {
|
|
|
48065
48081
|
span: r
|
|
48066
48082
|
};
|
|
48067
48083
|
}
|
|
48068
|
-
function
|
|
48084
|
+
function s6(e, t) {
|
|
48069
48085
|
try {
|
|
48070
48086
|
e.push(...t());
|
|
48071
48087
|
} catch {}
|
|
48072
48088
|
}
|
|
48073
|
-
function
|
|
48089
|
+
function c6(e) {
|
|
48074
48090
|
let t = /* @__PURE__ */ new Map();
|
|
48075
48091
|
for (let n of e) {
|
|
48076
48092
|
let e = `${n.ruleId}|${n.component}|${n.changes.join()}|${n.description}`, r = t.get(e);
|
|
@@ -48078,7 +48094,7 @@ function a6(e) {
|
|
|
48078
48094
|
}
|
|
48079
48095
|
return [...t.values()];
|
|
48080
48096
|
}
|
|
48081
|
-
function
|
|
48097
|
+
function l6(e) {
|
|
48082
48098
|
let t = /* @__PURE__ */ new Map();
|
|
48083
48099
|
for (let n of e) {
|
|
48084
48100
|
let e = n.ruleId ?? "budget", r = t.get(e);
|
|
@@ -48104,7 +48120,7 @@ function o6(e) {
|
|
|
48104
48120
|
}
|
|
48105
48121
|
return a.join("\n");
|
|
48106
48122
|
}
|
|
48107
|
-
function
|
|
48123
|
+
function u6(e, t) {
|
|
48108
48124
|
let n = Array.from(new Set(e.map((e) => e.ruleId).filter((e) => !!e))).sort(), r = [];
|
|
48109
48125
|
for (let e of n) {
|
|
48110
48126
|
let n = t.rules[e];
|
|
@@ -48131,35 +48147,35 @@ function s6(e, t) {
|
|
|
48131
48147
|
"",
|
|
48132
48148
|
"---",
|
|
48133
48149
|
"",
|
|
48134
|
-
|
|
48150
|
+
l6(e)
|
|
48135
48151
|
].join("\n");
|
|
48136
48152
|
}
|
|
48137
|
-
var
|
|
48153
|
+
var d6 = "bippy-0.5.43", f6 = Object.defineProperty, p6 = Object.prototype.hasOwnProperty, m6 = () => {}, h6 = (e) => {
|
|
48138
48154
|
try {
|
|
48139
48155
|
Function.prototype.toString.call(e).indexOf("^_^") > -1 && setTimeout(() => {
|
|
48140
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");
|
|
48141
48157
|
});
|
|
48142
48158
|
} catch {}
|
|
48143
|
-
},
|
|
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) => {
|
|
48144
48160
|
let t = /* @__PURE__ */ new Map(), n = 0, r = {
|
|
48145
48161
|
_instrumentationIsActive: !1,
|
|
48146
|
-
_instrumentationSource:
|
|
48147
|
-
checkDCE:
|
|
48162
|
+
_instrumentationSource: d6,
|
|
48163
|
+
checkDCE: h6,
|
|
48148
48164
|
hasUnsupportedRendererAttached: !1,
|
|
48149
48165
|
inject(e) {
|
|
48150
48166
|
let i = ++n;
|
|
48151
|
-
return t.set(i, e),
|
|
48167
|
+
return t.set(i, e), x6.add(e), r._instrumentationIsActive || (r._instrumentationIsActive = !0, b6.forEach((e) => e())), i;
|
|
48152
48168
|
},
|
|
48153
|
-
on:
|
|
48154
|
-
onCommitFiberRoot:
|
|
48155
|
-
onCommitFiberUnmount:
|
|
48156
|
-
onPostCommitFiberRoot:
|
|
48169
|
+
on: m6,
|
|
48170
|
+
onCommitFiberRoot: m6,
|
|
48171
|
+
onCommitFiberUnmount: m6,
|
|
48172
|
+
onPostCommitFiberRoot: m6,
|
|
48157
48173
|
renderers: t,
|
|
48158
48174
|
supportsFiber: !0,
|
|
48159
48175
|
supportsFlight: !0
|
|
48160
48176
|
};
|
|
48161
48177
|
try {
|
|
48162
|
-
|
|
48178
|
+
f6(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
|
|
48163
48179
|
configurable: !0,
|
|
48164
48180
|
enumerable: !0,
|
|
48165
48181
|
get() {
|
|
@@ -48169,13 +48185,13 @@ var c6 = "bippy-0.5.43", l6 = Object.defineProperty, u6 = Object.prototype.hasOw
|
|
|
48169
48185
|
if (t && typeof t == "object") {
|
|
48170
48186
|
let n = r.renderers;
|
|
48171
48187
|
r = t, n.size > 0 && (n.forEach((e, n) => {
|
|
48172
|
-
|
|
48173
|
-
}),
|
|
48188
|
+
x6.add(e), t.renderers.set(n, e);
|
|
48189
|
+
}), C6(e));
|
|
48174
48190
|
}
|
|
48175
48191
|
}
|
|
48176
48192
|
});
|
|
48177
48193
|
let t = window.hasOwnProperty, n = !1;
|
|
48178
|
-
|
|
48194
|
+
f6(window, "hasOwnProperty", {
|
|
48179
48195
|
configurable: !0,
|
|
48180
48196
|
value: function(...e) {
|
|
48181
48197
|
try {
|
|
@@ -48186,47 +48202,47 @@ var c6 = "bippy-0.5.43", l6 = Object.defineProperty, u6 = Object.prototype.hasOw
|
|
|
48186
48202
|
writable: !0
|
|
48187
48203
|
});
|
|
48188
48204
|
} catch {
|
|
48189
|
-
|
|
48205
|
+
C6(e);
|
|
48190
48206
|
}
|
|
48191
48207
|
return r;
|
|
48192
|
-
},
|
|
48193
|
-
e &&
|
|
48208
|
+
}, C6 = (e) => {
|
|
48209
|
+
e && b6.add(e);
|
|
48194
48210
|
try {
|
|
48195
48211
|
let t = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
|
|
48196
48212
|
if (!t) return;
|
|
48197
48213
|
if (!t._instrumentationSource) {
|
|
48198
|
-
t.checkDCE =
|
|
48199
|
-
let e =
|
|
48200
|
-
if (e || (t.on =
|
|
48201
|
-
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());
|
|
48202
48218
|
return;
|
|
48203
48219
|
}
|
|
48204
|
-
let n = t.inject, r =
|
|
48205
|
-
r && !e && (
|
|
48220
|
+
let n = t.inject, r = y6(t);
|
|
48221
|
+
r && !e && (_6 = !0, t.inject({ scheduleRefresh() {} }) && (t._instrumentationIsActive = !0)), t.inject = (e) => {
|
|
48206
48222
|
let i = n(e);
|
|
48207
|
-
return
|
|
48223
|
+
return x6.add(e), r && t.renderers.set(i, e), t._instrumentationIsActive = !0, b6.forEach((e) => e()), i;
|
|
48208
48224
|
};
|
|
48209
48225
|
}
|
|
48210
|
-
(t.renderers.size || t._instrumentationIsActive ||
|
|
48226
|
+
(t.renderers.size || t._instrumentationIsActive || y6()) && e?.();
|
|
48211
48227
|
} catch {}
|
|
48212
|
-
},
|
|
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"));
|
|
48213
48229
|
//#endregion
|
|
48214
48230
|
//#region node_modules/bippy/dist/install-hook-only.js
|
|
48215
48231
|
(() => {
|
|
48216
48232
|
try {
|
|
48217
|
-
|
|
48233
|
+
E6() && T6();
|
|
48218
48234
|
} catch {}
|
|
48219
48235
|
})();
|
|
48220
48236
|
//#endregion
|
|
48221
48237
|
//#region node_modules/bippy/dist/core.js
|
|
48222
|
-
var
|
|
48238
|
+
var D6 = 60111, O6 = "Symbol(react.concurrent_mode)", k6 = "Symbol(react.async_mode)", A6 = (e) => {
|
|
48223
48239
|
switch (e.tag) {
|
|
48224
48240
|
case 5:
|
|
48225
48241
|
case 26:
|
|
48226
48242
|
case 27: return !0;
|
|
48227
48243
|
default: return typeof e.type == "string";
|
|
48228
48244
|
}
|
|
48229
|
-
},
|
|
48245
|
+
}, j6 = (e) => {
|
|
48230
48246
|
switch (e.tag) {
|
|
48231
48247
|
case 1:
|
|
48232
48248
|
case 11:
|
|
@@ -48235,7 +48251,7 @@ var w6 = 60111, T6 = "Symbol(react.concurrent_mode)", E6 = "Symbol(react.async_m
|
|
|
48235
48251
|
case 15: return !0;
|
|
48236
48252
|
default: return !1;
|
|
48237
48253
|
}
|
|
48238
|
-
},
|
|
48254
|
+
}, M6 = (e) => {
|
|
48239
48255
|
let t = e.memoizedProps, n = e.alternate?.memoizedProps || {}, r = e.flags ?? e.effectTag ?? 0;
|
|
48240
48256
|
switch (e.tag) {
|
|
48241
48257
|
case 1:
|
|
@@ -48246,7 +48262,7 @@ var w6 = 60111, T6 = "Symbol(react.concurrent_mode)", E6 = "Symbol(react.async_m
|
|
|
48246
48262
|
case 15: return (r & 1) == 1;
|
|
48247
48263
|
default: return !e.alternate || n !== t || e.alternate.memoizedState !== e.memoizedState || e.alternate.ref !== e.ref;
|
|
48248
48264
|
}
|
|
48249
|
-
},
|
|
48265
|
+
}, N6 = (e) => {
|
|
48250
48266
|
switch (e.tag) {
|
|
48251
48267
|
case 18: return !0;
|
|
48252
48268
|
case 7:
|
|
@@ -48257,25 +48273,25 @@ var w6 = 60111, T6 = "Symbol(react.concurrent_mode)", E6 = "Symbol(react.async_m
|
|
|
48257
48273
|
default: {
|
|
48258
48274
|
let t = typeof e.type == "object" && e.type !== null ? e.type.$$typeof : e.type;
|
|
48259
48275
|
switch (typeof t == "symbol" ? t.toString() : t) {
|
|
48260
|
-
case
|
|
48261
|
-
case
|
|
48262
|
-
case
|
|
48276
|
+
case D6:
|
|
48277
|
+
case O6:
|
|
48278
|
+
case k6: return !0;
|
|
48263
48279
|
default: return !1;
|
|
48264
48280
|
}
|
|
48265
48281
|
}
|
|
48266
48282
|
}
|
|
48267
|
-
},
|
|
48268
|
-
let n =
|
|
48269
|
-
return n ||=
|
|
48283
|
+
}, P6 = (e, t = !1) => {
|
|
48284
|
+
let n = F6(e, A6, t);
|
|
48285
|
+
return n ||= F6(e, A6, !t), n;
|
|
48270
48286
|
};
|
|
48271
|
-
function
|
|
48287
|
+
function F6(e, t, n = !1) {
|
|
48272
48288
|
if (!e) return null;
|
|
48273
48289
|
let r = t(e);
|
|
48274
48290
|
if (r instanceof Promise) return (async () => {
|
|
48275
48291
|
if (await r === !0) return e;
|
|
48276
48292
|
let i = n ? e.return : e.child;
|
|
48277
48293
|
for (; i;) {
|
|
48278
|
-
let e = await
|
|
48294
|
+
let e = await L6(i, t, n);
|
|
48279
48295
|
if (e) return e;
|
|
48280
48296
|
i = n ? null : i.sibling;
|
|
48281
48297
|
}
|
|
@@ -48284,118 +48300,118 @@ function M6(e, t, n = !1) {
|
|
|
48284
48300
|
if (r === !0) return e;
|
|
48285
48301
|
let i = n ? e.return : e.child;
|
|
48286
48302
|
for (; i;) {
|
|
48287
|
-
let e =
|
|
48303
|
+
let e = I6(i, t, n);
|
|
48288
48304
|
if (e) return e;
|
|
48289
48305
|
i = n ? null : i.sibling;
|
|
48290
48306
|
}
|
|
48291
48307
|
return null;
|
|
48292
48308
|
}
|
|
48293
|
-
var
|
|
48309
|
+
var I6 = (e, t, n = !1) => {
|
|
48294
48310
|
if (!e) return null;
|
|
48295
48311
|
if (t(e) === !0) return e;
|
|
48296
48312
|
let r = n ? e.return : e.child;
|
|
48297
48313
|
for (; r;) {
|
|
48298
|
-
let e =
|
|
48314
|
+
let e = I6(r, t, n);
|
|
48299
48315
|
if (e) return e;
|
|
48300
48316
|
r = n ? null : r.sibling;
|
|
48301
48317
|
}
|
|
48302
48318
|
return null;
|
|
48303
|
-
},
|
|
48319
|
+
}, L6 = async (e, t, n = !1) => {
|
|
48304
48320
|
if (!e) return null;
|
|
48305
48321
|
if (await t(e) === !0) return e;
|
|
48306
48322
|
let r = n ? e.return : e.child;
|
|
48307
48323
|
for (; r;) {
|
|
48308
|
-
let e = await
|
|
48324
|
+
let e = await L6(r, t, n);
|
|
48309
48325
|
if (e) return e;
|
|
48310
48326
|
r = n ? null : r.sibling;
|
|
48311
48327
|
}
|
|
48312
48328
|
return null;
|
|
48313
|
-
},
|
|
48329
|
+
}, R6 = (e) => {
|
|
48314
48330
|
let t = e?.actualDuration ?? 0, n = t, r = e?.child ?? null;
|
|
48315
48331
|
for (; t > 0 && r != null;) n -= r.actualDuration ?? 0, r = r.sibling;
|
|
48316
48332
|
return {
|
|
48317
48333
|
selfTime: n,
|
|
48318
48334
|
totalTime: t
|
|
48319
48335
|
};
|
|
48320
|
-
},
|
|
48336
|
+
}, z6 = (e) => {
|
|
48321
48337
|
let t = e;
|
|
48322
|
-
return typeof t == "function" ? t : typeof t == "object" && t ?
|
|
48323
|
-
},
|
|
48338
|
+
return typeof t == "function" ? t : typeof t == "object" && t ? z6(t.type || t.render) : null;
|
|
48339
|
+
}, B6 = (e) => {
|
|
48324
48340
|
let t = e;
|
|
48325
48341
|
if (typeof t == "string") return t;
|
|
48326
48342
|
if (typeof t != "function" && !(typeof t == "object" && t)) return null;
|
|
48327
48343
|
let n = t.displayName || t.name || null;
|
|
48328
48344
|
if (n) return n;
|
|
48329
|
-
let r =
|
|
48345
|
+
let r = z6(t);
|
|
48330
48346
|
return r && (r.displayName || r.name) || null;
|
|
48331
|
-
},
|
|
48332
|
-
|
|
48333
|
-
},
|
|
48334
|
-
let t =
|
|
48335
|
-
return !t && e.alternate && (t =
|
|
48336
|
-
},
|
|
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) => {
|
|
48337
48353
|
let r = t;
|
|
48338
48354
|
for (; r != null;) {
|
|
48339
|
-
if (
|
|
48355
|
+
if (H6.has(r) || W6(r), !N6(r) && M6(r) && e(r, "mount"), r.tag === 13) if (r.memoizedState !== null) {
|
|
48340
48356
|
let t = r.child, n = t ? t.sibling : null;
|
|
48341
48357
|
if (n) {
|
|
48342
48358
|
let t = n.child;
|
|
48343
|
-
t !== null &&
|
|
48359
|
+
t !== null && G6(e, t, !1);
|
|
48344
48360
|
}
|
|
48345
48361
|
} else {
|
|
48346
48362
|
let t = null;
|
|
48347
|
-
r.child !== null && (t = r.child.child), t !== null &&
|
|
48363
|
+
r.child !== null && (t = r.child.child), t !== null && G6(e, t, !1);
|
|
48348
48364
|
}
|
|
48349
|
-
else r.child != null &&
|
|
48365
|
+
else r.child != null && G6(e, r.child, !0);
|
|
48350
48366
|
r = n ? r.sibling : null;
|
|
48351
48367
|
}
|
|
48352
|
-
},
|
|
48353
|
-
if (
|
|
48354
|
-
|
|
48355
|
-
let i = t.tag === 13, a = !
|
|
48356
|
-
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");
|
|
48357
48373
|
let o = i && n.memoizedState !== null, s = i && t.memoizedState !== null;
|
|
48358
48374
|
if (o && s) {
|
|
48359
48375
|
let r = t.child?.sibling ?? null, i = n.child?.sibling ?? null;
|
|
48360
|
-
r !== null && i !== null &&
|
|
48376
|
+
r !== null && i !== null && K6(e, r, i, t);
|
|
48361
48377
|
} else if (o && !s) {
|
|
48362
48378
|
let n = t.child;
|
|
48363
|
-
n !== null &&
|
|
48379
|
+
n !== null && G6(e, n, !0);
|
|
48364
48380
|
} else if (!o && s) {
|
|
48365
|
-
|
|
48381
|
+
J6(e, n);
|
|
48366
48382
|
let r = t.child?.sibling ?? null;
|
|
48367
|
-
r !== null &&
|
|
48383
|
+
r !== null && G6(e, r, !0);
|
|
48368
48384
|
} else if (t.child !== n.child) {
|
|
48369
48385
|
let n = t.child;
|
|
48370
48386
|
for (; n;) {
|
|
48371
48387
|
if (n.alternate) {
|
|
48372
48388
|
let i = n.alternate;
|
|
48373
|
-
|
|
48374
|
-
} else
|
|
48389
|
+
K6(e, n, i, a ? t : r);
|
|
48390
|
+
} else G6(e, n, !1);
|
|
48375
48391
|
n = n.sibling;
|
|
48376
48392
|
}
|
|
48377
48393
|
}
|
|
48378
|
-
},
|
|
48379
|
-
(t.tag === 3 || !
|
|
48380
|
-
},
|
|
48394
|
+
}, q6 = (e, t) => {
|
|
48395
|
+
(t.tag === 3 || !N6(t)) && e(t, "unmount");
|
|
48396
|
+
}, J6 = (e, t) => {
|
|
48381
48397
|
let n = t.tag === 13 && t.memoizedState !== null, r = t.child;
|
|
48382
|
-
for (n && (r = (t.child?.sibling ?? null)?.child ?? null); r !== null;) r.return !== null && (
|
|
48383
|
-
},
|
|
48384
|
-
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);
|
|
48385
48401
|
r || (r = {
|
|
48386
|
-
id:
|
|
48402
|
+
id: Y6++,
|
|
48387
48403
|
prevFiber: null
|
|
48388
|
-
},
|
|
48404
|
+
}, X6.set(e, r));
|
|
48389
48405
|
let { prevFiber: i } = r;
|
|
48390
|
-
if (!n)
|
|
48406
|
+
if (!n) q6(t, n);
|
|
48391
48407
|
else if (i !== null) {
|
|
48392
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;
|
|
48393
|
-
!e && r ?
|
|
48394
|
-
} 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);
|
|
48395
48411
|
r.prevFiber = n;
|
|
48396
|
-
},
|
|
48397
|
-
let t =
|
|
48398
|
-
t._instrumentationSource = e.name ??
|
|
48412
|
+
}, Q6 = (e) => {
|
|
48413
|
+
let t = T6(e.onActive);
|
|
48414
|
+
t._instrumentationSource = e.name ?? d6;
|
|
48399
48415
|
let n = t.onCommitFiberRoot;
|
|
48400
48416
|
if (e.onCommitFiberRoot) {
|
|
48401
48417
|
let r = (t, i, a) => {
|
|
@@ -48418,52 +48434,52 @@ var N6 = (e, t, n = !1) => {
|
|
|
48418
48434
|
t.onPostCommitFiberRoot = n;
|
|
48419
48435
|
}
|
|
48420
48436
|
return t;
|
|
48421
|
-
},
|
|
48422
|
-
function
|
|
48423
|
-
|
|
48437
|
+
}, $6 = !1, e8 = !1, t8 = [], n8 = -Infinity, r8 = 200, i8 = 4e3, a8 = 100;
|
|
48438
|
+
function o8() {
|
|
48439
|
+
n8 = c8();
|
|
48424
48440
|
}
|
|
48425
|
-
var
|
|
48441
|
+
var s8 = [
|
|
48426
48442
|
"scroll",
|
|
48427
48443
|
"wheel",
|
|
48428
48444
|
"pointermove"
|
|
48429
48445
|
];
|
|
48430
|
-
function
|
|
48446
|
+
function c8() {
|
|
48431
48447
|
return typeof performance < "u" ? performance.now() : Date.now();
|
|
48432
48448
|
}
|
|
48433
|
-
function
|
|
48449
|
+
function l8(e, t) {
|
|
48434
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 = [];
|
|
48435
48451
|
for (let e of i) {
|
|
48436
48452
|
if (e === "children") continue;
|
|
48437
48453
|
let t = n[e], i = r[e];
|
|
48438
|
-
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}`));
|
|
48439
48455
|
}
|
|
48440
48456
|
return a;
|
|
48441
48457
|
}
|
|
48442
|
-
function
|
|
48458
|
+
function u8(e, t) {
|
|
48443
48459
|
let n = Object.keys(e), r = Object.keys(t);
|
|
48444
48460
|
if (n.length !== r.length) return !1;
|
|
48445
48461
|
for (let r of n) if (!Object.is(e[r], t[r])) return !1;
|
|
48446
48462
|
return !0;
|
|
48447
48463
|
}
|
|
48448
|
-
function
|
|
48464
|
+
function d8(e) {
|
|
48449
48465
|
let t = [], n = {};
|
|
48450
|
-
|
|
48451
|
-
if (r === "unmount" || !
|
|
48452
|
-
let i =
|
|
48466
|
+
Z6(e, (e, r) => {
|
|
48467
|
+
if (r === "unmount" || !j6(e)) return;
|
|
48468
|
+
let i = B6(e.type) ?? "Anonymous";
|
|
48453
48469
|
r === "mount" && (n[i] = (n[i] ?? 0) + 1);
|
|
48454
48470
|
let a = 0;
|
|
48455
48471
|
try {
|
|
48456
|
-
a =
|
|
48472
|
+
a = R6(e).selfTime || 0;
|
|
48457
48473
|
} catch {}
|
|
48458
48474
|
let o = [];
|
|
48459
48475
|
if (r === "update" && e.alternate) try {
|
|
48460
|
-
o =
|
|
48476
|
+
o = l8(e.alternate.memoizedProps, e.memoizedProps);
|
|
48461
48477
|
} catch {
|
|
48462
48478
|
o = ["prop:(unknown)"];
|
|
48463
48479
|
}
|
|
48464
48480
|
let s = null;
|
|
48465
48481
|
try {
|
|
48466
|
-
let t =
|
|
48482
|
+
let t = P6(e)?.stateNode;
|
|
48467
48483
|
t && typeof WeakRef < "u" && t instanceof Element && (s = new WeakRef(t));
|
|
48468
48484
|
} catch {}
|
|
48469
48485
|
t.push({
|
|
@@ -48474,10 +48490,10 @@ function c8(e) {
|
|
|
48474
48490
|
el: s
|
|
48475
48491
|
});
|
|
48476
48492
|
}), t.sort((e, t) => t.selfTime - e.selfTime);
|
|
48477
|
-
let r = t.slice(0,
|
|
48493
|
+
let r = t.slice(0, r8), i = Math.max(0, t.length - r8), a = 0;
|
|
48478
48494
|
for (let e of t) a += e.selfTime;
|
|
48479
|
-
let o =
|
|
48480
|
-
|
|
48495
|
+
let o = c8(), s = o - n8 <= a8;
|
|
48496
|
+
t8.push({
|
|
48481
48497
|
at: o,
|
|
48482
48498
|
duration: a,
|
|
48483
48499
|
entries: r,
|
|
@@ -48486,55 +48502,55 @@ function c8(e) {
|
|
|
48486
48502
|
nearInput: s
|
|
48487
48503
|
});
|
|
48488
48504
|
}
|
|
48489
|
-
function
|
|
48490
|
-
if (
|
|
48491
|
-
|
|
48505
|
+
function f8() {
|
|
48506
|
+
if (!$6 && !(typeof window > "u")) {
|
|
48507
|
+
$6 = !0;
|
|
48492
48508
|
try {
|
|
48493
|
-
|
|
48494
|
-
if (
|
|
48495
|
-
|
|
48509
|
+
Q6({ onCommitFiberRoot: (e, t) => {
|
|
48510
|
+
if (e8 && !(t8.length >= i8)) try {
|
|
48511
|
+
d8(t);
|
|
48496
48512
|
} catch {}
|
|
48497
48513
|
} });
|
|
48498
48514
|
} catch {}
|
|
48499
48515
|
}
|
|
48500
48516
|
}
|
|
48501
|
-
function
|
|
48502
|
-
if (!(typeof window > "u") && !
|
|
48503
|
-
|
|
48517
|
+
function p8() {
|
|
48518
|
+
if (!(typeof window > "u") && !e8) {
|
|
48519
|
+
t8 = [], n8 = -Infinity, f8();
|
|
48504
48520
|
try {
|
|
48505
|
-
for (let e of
|
|
48521
|
+
for (let e of s8) window.addEventListener(e, o8, {
|
|
48506
48522
|
capture: !0,
|
|
48507
48523
|
passive: !0
|
|
48508
48524
|
});
|
|
48509
48525
|
} catch {}
|
|
48510
|
-
|
|
48526
|
+
e8 = !0;
|
|
48511
48527
|
}
|
|
48512
48528
|
}
|
|
48513
|
-
function
|
|
48514
|
-
|
|
48529
|
+
function m8() {
|
|
48530
|
+
e8 = !1;
|
|
48515
48531
|
try {
|
|
48516
|
-
for (let e of
|
|
48532
|
+
for (let e of s8) window.removeEventListener(e, o8, { capture: !0 });
|
|
48517
48533
|
} catch {}
|
|
48518
|
-
let e =
|
|
48519
|
-
return
|
|
48534
|
+
let e = t8;
|
|
48535
|
+
return t8 = [], n8 = -Infinity, e;
|
|
48520
48536
|
}
|
|
48521
|
-
function
|
|
48522
|
-
let e =
|
|
48523
|
-
return
|
|
48537
|
+
function h8() {
|
|
48538
|
+
let e = t8;
|
|
48539
|
+
return t8 = [], e;
|
|
48524
48540
|
}
|
|
48525
48541
|
//#endregion
|
|
48526
48542
|
//#region src/lib/renderRulebook.ts
|
|
48527
|
-
var
|
|
48543
|
+
var g8 = {
|
|
48528
48544
|
budgets: {
|
|
48529
48545
|
selfMs: 2,
|
|
48530
48546
|
commitMs: 8
|
|
48531
48547
|
},
|
|
48532
48548
|
rules: {}
|
|
48533
|
-
},
|
|
48534
|
-
function
|
|
48535
|
-
return
|
|
48549
|
+
}, _8 = /^###\s+(R\d+)\s*[·.\-–—:]?\s*`([^`]+)`.*?\((error|warn)\)\s*$/;
|
|
48550
|
+
function v8(e) {
|
|
48551
|
+
return _8.test(e.trim());
|
|
48536
48552
|
}
|
|
48537
|
-
function
|
|
48553
|
+
function y8(e, t) {
|
|
48538
48554
|
let n = e.split("\n"), r = RegExp(`^\\s*\\*\\*${t.source}[^*]*:\\*\\*\\s*(.*)$`, "i"), i = /^\s*\*\*[^*]+:\*\*/, a = 0;
|
|
48539
48555
|
for (; a < n.length && !r.test(n[a]); a++);
|
|
48540
48556
|
if (a >= n.length) return "";
|
|
@@ -48549,43 +48565,43 @@ function g8(e, t) {
|
|
|
48549
48565
|
if (e >= n.length || i.test(n[e]) || /^###\s|^##\s|^---\s*$/.test(n[e])) break;
|
|
48550
48566
|
}
|
|
48551
48567
|
}
|
|
48552
|
-
return
|
|
48568
|
+
return b8(s.join(" ")).trim();
|
|
48553
48569
|
}
|
|
48554
|
-
function
|
|
48570
|
+
function b8(e) {
|
|
48555
48571
|
return e.replace(/\*\*([^*]+)\*\*/g, "$1").replace(/__([^_]+)__/g, "$1").replace(/(^|[\s(])[*_]([^*_\s][^*_]*?)[*_]([\s.,;:)]|$)/g, "$1$2$3").replace(/\s{2,}/g, " ");
|
|
48556
48572
|
}
|
|
48557
|
-
function
|
|
48573
|
+
function x8(e) {
|
|
48558
48574
|
let t = e.match(/≤(\d+(?:\.\d+)?)ms self/), n = e.match(/commit >(\d+(?:\.\d+)?)ms/) ?? e.match(/>(\d+(?:\.\d+)?)ms of React work/);
|
|
48559
48575
|
return {
|
|
48560
|
-
selfMs: t ? parseFloat(t[1]) :
|
|
48561
|
-
commitMs: n ? parseFloat(n[1]) :
|
|
48576
|
+
selfMs: t ? parseFloat(t[1]) : g8.budgets.selfMs,
|
|
48577
|
+
commitMs: n ? parseFloat(n[1]) : g8.budgets.commitMs
|
|
48562
48578
|
};
|
|
48563
48579
|
}
|
|
48564
|
-
function
|
|
48565
|
-
let t =
|
|
48580
|
+
function S8(e) {
|
|
48581
|
+
let t = x8(e), n = {}, r = e.split("\n"), i = 0;
|
|
48566
48582
|
for (; i < r.length;) {
|
|
48567
48583
|
let e = r[i];
|
|
48568
|
-
if (!
|
|
48584
|
+
if (!v8(e)) {
|
|
48569
48585
|
i++;
|
|
48570
48586
|
continue;
|
|
48571
48587
|
}
|
|
48572
48588
|
let t = e.trim(), a = [], o = i + 1;
|
|
48573
48589
|
for (; o < r.length; o++) {
|
|
48574
48590
|
let e = r[o];
|
|
48575
|
-
if (
|
|
48591
|
+
if (v8(e) || /^##\s/.test(e.trim()) || /^---\s*$/.test(e.trim())) break;
|
|
48576
48592
|
a.push(e);
|
|
48577
48593
|
}
|
|
48578
48594
|
try {
|
|
48579
|
-
let e = t.match(
|
|
48595
|
+
let e = t.match(_8);
|
|
48580
48596
|
if (e) {
|
|
48581
48597
|
let [, t, r, i] = e, o = a.join("\n");
|
|
48582
48598
|
n[t] = {
|
|
48583
48599
|
id: t,
|
|
48584
48600
|
slug: r,
|
|
48585
48601
|
severity: i === "warn" ? "warn" : "error",
|
|
48586
|
-
ruleText:
|
|
48587
|
-
fixText:
|
|
48588
|
-
detectText:
|
|
48602
|
+
ruleText: y8(o, /Rule/),
|
|
48603
|
+
fixText: y8(o, /Fix/),
|
|
48604
|
+
detectText: y8(o, /Detect/)
|
|
48589
48605
|
};
|
|
48590
48606
|
}
|
|
48591
48607
|
} catch {}
|
|
@@ -48599,114 +48615,114 @@ function y8(e) {
|
|
|
48599
48615
|
//#endregion
|
|
48600
48616
|
//#region src/lib/renderScanStore.ts
|
|
48601
48617
|
Br();
|
|
48602
|
-
var
|
|
48603
|
-
function
|
|
48604
|
-
return
|
|
48605
|
-
}
|
|
48606
|
-
function
|
|
48607
|
-
|
|
48608
|
-
for (let e of
|
|
48609
|
-
}
|
|
48610
|
-
function
|
|
48611
|
-
|
|
48612
|
-
for (let e of
|
|
48613
|
-
return
|
|
48614
|
-
|
|
48615
|
-
for (let e of
|
|
48616
|
-
|
|
48618
|
+
var C8 = [], w8 = /* @__PURE__ */ new Set();
|
|
48619
|
+
function T8(e) {
|
|
48620
|
+
return w8.add(e), e(C8), () => void w8.delete(e);
|
|
48621
|
+
}
|
|
48622
|
+
function E8() {
|
|
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);
|
|
48617
48633
|
}), e;
|
|
48618
48634
|
}
|
|
48619
|
-
var
|
|
48620
|
-
function
|
|
48621
|
-
return
|
|
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);
|
|
48622
48638
|
}
|
|
48623
|
-
function
|
|
48624
|
-
if (!(
|
|
48625
|
-
|
|
48626
|
-
for (let e of
|
|
48639
|
+
function M8() {
|
|
48640
|
+
if (!(P8 || k8)) {
|
|
48641
|
+
p8(), k8 = !0, A8 = Date.now();
|
|
48642
|
+
for (let e of O8) e(!0, A8);
|
|
48627
48643
|
}
|
|
48628
48644
|
}
|
|
48629
|
-
async function
|
|
48630
|
-
if (!
|
|
48631
|
-
let e =
|
|
48632
|
-
|
|
48633
|
-
for (let e of
|
|
48634
|
-
let t = await
|
|
48635
|
-
return
|
|
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) => ({
|
|
48636
48652
|
...e,
|
|
48637
48653
|
page: n
|
|
48638
48654
|
})), n);
|
|
48639
48655
|
}
|
|
48640
|
-
var
|
|
48656
|
+
var P8 = !1;
|
|
48641
48657
|
try {
|
|
48642
|
-
|
|
48658
|
+
P8 = localStorage.getItem("linear-grab:render-live") === "1";
|
|
48643
48659
|
} catch {}
|
|
48644
|
-
var
|
|
48645
|
-
function
|
|
48646
|
-
return
|
|
48647
|
-
}
|
|
48648
|
-
var
|
|
48649
|
-
function
|
|
48650
|
-
if (e !==
|
|
48651
|
-
|
|
48660
|
+
var F8 = /* @__PURE__ */ new Set();
|
|
48661
|
+
function I8(e) {
|
|
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;
|
|
48652
48668
|
try {
|
|
48653
48669
|
localStorage.setItem("linear-grab:render-live", e ? "1" : "0");
|
|
48654
48670
|
} catch {}
|
|
48655
|
-
for (let t of
|
|
48656
|
-
e ? (
|
|
48657
|
-
|
|
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 = [];
|
|
48658
48674
|
}));
|
|
48659
48675
|
}
|
|
48660
48676
|
}
|
|
48661
|
-
async function
|
|
48677
|
+
async function U8(e) {
|
|
48662
48678
|
try {
|
|
48663
48679
|
let t = location.pathname;
|
|
48664
|
-
if (t !==
|
|
48665
|
-
let e =
|
|
48666
|
-
|
|
48667
|
-
|
|
48668
|
-
for (let e of
|
|
48669
|
-
|
|
48670
|
-
}),
|
|
48671
|
-
}
|
|
48672
|
-
|
|
48673
|
-
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) => ({
|
|
48674
48690
|
...e,
|
|
48675
48691
|
page: t
|
|
48676
48692
|
}));
|
|
48677
|
-
|
|
48678
|
-
for (let e of
|
|
48693
|
+
C8 = [...r, ...C8.filter((e) => e.page !== t)];
|
|
48694
|
+
for (let e of w8) e(C8);
|
|
48679
48695
|
if (e) {
|
|
48680
|
-
await
|
|
48681
|
-
for (let e of
|
|
48682
|
-
|
|
48696
|
+
await $8(r), C8 = [...C8];
|
|
48697
|
+
for (let e of w8) e(C8);
|
|
48698
|
+
e5(r);
|
|
48683
48699
|
}
|
|
48684
48700
|
} catch {}
|
|
48685
48701
|
}
|
|
48686
|
-
function
|
|
48687
|
-
typeof window > "u" || !
|
|
48702
|
+
function W8() {
|
|
48703
|
+
typeof window > "u" || !P8 || z8 || (p8(), B8 = [], V8 = location.pathname, z8 = setInterval(() => void U8(!1), L8));
|
|
48688
48704
|
}
|
|
48689
|
-
function
|
|
48705
|
+
function G8() {
|
|
48690
48706
|
let e = location.pathname;
|
|
48691
|
-
return
|
|
48707
|
+
return D8(e6(document).map((t) => ({
|
|
48692
48708
|
...t,
|
|
48693
48709
|
page: e
|
|
48694
48710
|
})), e);
|
|
48695
48711
|
}
|
|
48696
|
-
var
|
|
48697
|
-
async function
|
|
48698
|
-
if (
|
|
48699
|
-
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;
|
|
48700
48716
|
try {
|
|
48701
48717
|
let t = await YO(), n = await (await fetch(`${t}/scan/rulebook`)).json();
|
|
48702
|
-
n.ok && n.text && (e =
|
|
48718
|
+
n.ok && n.text && (e = S8(n.text));
|
|
48703
48719
|
} catch {}
|
|
48704
|
-
return e = await
|
|
48720
|
+
return e = await Q8(e), q8 = e, J8 = Date.now(), e;
|
|
48705
48721
|
}
|
|
48706
|
-
function
|
|
48707
|
-
return
|
|
48722
|
+
function X8() {
|
|
48723
|
+
return q8;
|
|
48708
48724
|
}
|
|
48709
|
-
async function
|
|
48725
|
+
async function Z8() {
|
|
48710
48726
|
try {
|
|
48711
48727
|
let e = await Tr();
|
|
48712
48728
|
return Array.isArray(e.renderIgnore) ? e.renderIgnore : void 0;
|
|
@@ -48714,7 +48730,7 @@ async function J8() {
|
|
|
48714
48730
|
return;
|
|
48715
48731
|
}
|
|
48716
48732
|
}
|
|
48717
|
-
async function
|
|
48733
|
+
async function Q8(e) {
|
|
48718
48734
|
try {
|
|
48719
48735
|
let t = (await Tr()).renderBudgets;
|
|
48720
48736
|
if (t && (t.selfMs != null || t.commitMs != null)) return {
|
|
@@ -48727,7 +48743,7 @@ async function Y8(e) {
|
|
|
48727
48743
|
} catch {}
|
|
48728
48744
|
return e;
|
|
48729
48745
|
}
|
|
48730
|
-
async function
|
|
48746
|
+
async function $8(e) {
|
|
48731
48747
|
let t = null;
|
|
48732
48748
|
try {
|
|
48733
48749
|
t = (await Promise.resolve().then(() => (RZ(), AZ))).getGlobalApi() ?? null;
|
|
@@ -48756,7 +48772,7 @@ async function X8(e) {
|
|
|
48756
48772
|
if (!(!n && !a)) for (let e of i) !e.component && n && (e.component = n), a && (e.source = a);
|
|
48757
48773
|
}
|
|
48758
48774
|
}
|
|
48759
|
-
function
|
|
48775
|
+
function e5(e) {
|
|
48760
48776
|
if (e.length === 0) return;
|
|
48761
48777
|
let t = Date.now(), n = e.slice(0, 200).map(({ el: e, ...n }) => ({
|
|
48762
48778
|
kind: "render-scan",
|
|
@@ -48772,8 +48788,8 @@ function Z8(e) {
|
|
|
48772
48788
|
}
|
|
48773
48789
|
//#endregion
|
|
48774
48790
|
//#region src/panel/views/RendersView.tsx
|
|
48775
|
-
var
|
|
48776
|
-
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) {
|
|
48777
48793
|
let t = e.el?.deref();
|
|
48778
48794
|
if (!(t instanceof HTMLElement) || !t.isConnected) return !1;
|
|
48779
48795
|
t.scrollIntoView({
|
|
@@ -48785,45 +48801,45 @@ function w5(e) {
|
|
|
48785
48801
|
t.style.outline = n, t.style.outlineOffset = r;
|
|
48786
48802
|
}, 1400), !0;
|
|
48787
48803
|
}
|
|
48788
|
-
function
|
|
48804
|
+
function O5(e) {
|
|
48789
48805
|
let t = Math.max(0, Math.floor(e / 1e3));
|
|
48790
48806
|
return `${Math.floor(t / 60)}:${String(t % 60).padStart(2, "0")}`;
|
|
48791
48807
|
}
|
|
48792
|
-
function
|
|
48808
|
+
function k5(e) {
|
|
48793
48809
|
return e.replace(/^prop:/, "");
|
|
48794
48810
|
}
|
|
48795
|
-
function
|
|
48811
|
+
function A5() {
|
|
48796
48812
|
let [e, t] = T([]);
|
|
48797
|
-
ae(
|
|
48813
|
+
ae(T8(t));
|
|
48798
48814
|
let [n, r] = T(!1), [i, a] = T(null), [o, s] = T(Date.now()), c = null, l = () => {
|
|
48799
48815
|
c && clearInterval(c), c = null;
|
|
48800
48816
|
};
|
|
48801
|
-
ae(l), ae(
|
|
48817
|
+
ae(l), ae(j8((e, t) => {
|
|
48802
48818
|
r(e), a(t), e ? (s(Date.now()), c ||= setInterval(() => s(Date.now()), 500)) : l();
|
|
48803
48819
|
}));
|
|
48804
48820
|
let [u, d] = T(!1);
|
|
48805
|
-
ae(
|
|
48806
|
-
let [f, p] = T(
|
|
48807
|
-
|
|
48821
|
+
ae(I8(d));
|
|
48822
|
+
let [f, p] = T(X8());
|
|
48823
|
+
Y8().then(p);
|
|
48808
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 () => {
|
|
48809
48825
|
if (h(null), n()) try {
|
|
48810
|
-
let e = await
|
|
48811
|
-
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.");
|
|
48812
48828
|
} catch (e) {
|
|
48813
48829
|
h(e instanceof Error ? e.message : String(e));
|
|
48814
48830
|
}
|
|
48815
|
-
else
|
|
48831
|
+
else M8();
|
|
48816
48832
|
}, te = () => {
|
|
48817
48833
|
h(null), C(!0);
|
|
48818
48834
|
try {
|
|
48819
|
-
|
|
48835
|
+
G8(), _(null);
|
|
48820
48836
|
} catch (e) {
|
|
48821
48837
|
h(e instanceof Error ? e.message : String(e));
|
|
48822
48838
|
} finally {
|
|
48823
48839
|
C(!1);
|
|
48824
48840
|
}
|
|
48825
48841
|
}, A = () => {
|
|
48826
|
-
|
|
48842
|
+
E8(), _(null);
|
|
48827
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 = () => {
|
|
48828
48844
|
let e = /* @__PURE__ */ new Map();
|
|
48829
48845
|
for (let t of re()) {
|
|
@@ -48836,19 +48852,19 @@ function D5() {
|
|
|
48836
48852
|
return t ? `${e} · ${t}` : e;
|
|
48837
48853
|
}, le = async () => {
|
|
48838
48854
|
try {
|
|
48839
|
-
await navigator.clipboard.writeText(
|
|
48855
|
+
await navigator.clipboard.writeText(l6(re())), E(!0), setTimeout(() => E(!1), 1600);
|
|
48840
48856
|
} catch {
|
|
48841
48857
|
h("Clipboard was blocked — click Copy again.");
|
|
48842
48858
|
}
|
|
48843
48859
|
}, ue = async () => {
|
|
48844
48860
|
try {
|
|
48845
|
-
await navigator.clipboard.writeText(
|
|
48861
|
+
await navigator.clipboard.writeText(u6(re(), await Y8())), k(!0), setTimeout(() => k(!1), 1600);
|
|
48846
48862
|
} catch {
|
|
48847
48863
|
h("Clipboard was blocked — click Copy again.");
|
|
48848
48864
|
}
|
|
48849
48865
|
};
|
|
48850
48866
|
return (() => {
|
|
48851
|
-
var t =
|
|
48867
|
+
var t = m5(), r = t.firstChild.firstChild.firstChild;
|
|
48852
48868
|
r.firstChild;
|
|
48853
48869
|
var a = r.nextSibling;
|
|
48854
48870
|
return P(r, j(M, {
|
|
@@ -48856,7 +48872,7 @@ function D5() {
|
|
|
48856
48872
|
return ne() > 1;
|
|
48857
48873
|
},
|
|
48858
48874
|
get children() {
|
|
48859
|
-
var e =
|
|
48875
|
+
var e = t5(), t = e.firstChild.nextSibling;
|
|
48860
48876
|
return t.nextSibling, P(e, ne, t), e;
|
|
48861
48877
|
}
|
|
48862
48878
|
}), null), P(a, j(M, {
|
|
@@ -48864,9 +48880,9 @@ function D5() {
|
|
|
48864
48880
|
return n();
|
|
48865
48881
|
},
|
|
48866
48882
|
get children() {
|
|
48867
|
-
return [
|
|
48868
|
-
var e =
|
|
48869
|
-
return P(e, () =>
|
|
48883
|
+
return [n5(), (() => {
|
|
48884
|
+
var e = r5();
|
|
48885
|
+
return P(e, () => O5(o() - (i() ?? o()))), e;
|
|
48870
48886
|
})()];
|
|
48871
48887
|
}
|
|
48872
48888
|
}), null), P(a, j(q, {
|
|
@@ -48891,10 +48907,10 @@ function D5() {
|
|
|
48891
48907
|
return n();
|
|
48892
48908
|
},
|
|
48893
48909
|
get fallback() {
|
|
48894
|
-
return
|
|
48910
|
+
return h5();
|
|
48895
48911
|
},
|
|
48896
48912
|
get children() {
|
|
48897
|
-
return
|
|
48913
|
+
return i5();
|
|
48898
48914
|
}
|
|
48899
48915
|
});
|
|
48900
48916
|
}
|
|
@@ -48909,24 +48925,24 @@ function D5() {
|
|
|
48909
48925
|
return u() ? "Pause live render scan" : "Live render scan — findings update as you browse";
|
|
48910
48926
|
},
|
|
48911
48927
|
"aria-label": "Toggle live render scan",
|
|
48912
|
-
onClick: () =>
|
|
48928
|
+
onClick: () => H8(!u()),
|
|
48913
48929
|
get children() {
|
|
48914
48930
|
return [j(M, {
|
|
48915
48931
|
get when() {
|
|
48916
48932
|
return u();
|
|
48917
48933
|
},
|
|
48918
48934
|
get fallback() {
|
|
48919
|
-
return
|
|
48935
|
+
return g5();
|
|
48920
48936
|
},
|
|
48921
48937
|
get children() {
|
|
48922
|
-
return
|
|
48938
|
+
return a5();
|
|
48923
48939
|
}
|
|
48924
48940
|
}), j(M, {
|
|
48925
48941
|
get when() {
|
|
48926
48942
|
return u();
|
|
48927
48943
|
},
|
|
48928
48944
|
get children() {
|
|
48929
|
-
return
|
|
48945
|
+
return o5();
|
|
48930
48946
|
}
|
|
48931
48947
|
})];
|
|
48932
48948
|
}
|
|
@@ -48941,7 +48957,7 @@ function D5() {
|
|
|
48941
48957
|
"aria-label": "Snapshot scan",
|
|
48942
48958
|
onClick: te,
|
|
48943
48959
|
get children() {
|
|
48944
|
-
return
|
|
48960
|
+
return s5();
|
|
48945
48961
|
}
|
|
48946
48962
|
}), null), P(a, j(q, {
|
|
48947
48963
|
class: "size-7 px-0",
|
|
@@ -48958,10 +48974,10 @@ function D5() {
|
|
|
48958
48974
|
return O();
|
|
48959
48975
|
},
|
|
48960
48976
|
get fallback() {
|
|
48961
|
-
return
|
|
48977
|
+
return _5();
|
|
48962
48978
|
},
|
|
48963
48979
|
get children() {
|
|
48964
|
-
return
|
|
48980
|
+
return c5();
|
|
48965
48981
|
}
|
|
48966
48982
|
});
|
|
48967
48983
|
}
|
|
@@ -48980,10 +48996,10 @@ function D5() {
|
|
|
48980
48996
|
return w();
|
|
48981
48997
|
},
|
|
48982
48998
|
get fallback() {
|
|
48983
|
-
return
|
|
48999
|
+
return v5();
|
|
48984
49000
|
},
|
|
48985
49001
|
get children() {
|
|
48986
|
-
return
|
|
49002
|
+
return c5();
|
|
48987
49003
|
}
|
|
48988
49004
|
});
|
|
48989
49005
|
}
|
|
@@ -48995,7 +49011,7 @@ function D5() {
|
|
|
48995
49011
|
"aria-label": "Clear findings",
|
|
48996
49012
|
onClick: A,
|
|
48997
49013
|
get children() {
|
|
48998
|
-
return
|
|
49014
|
+
return l5();
|
|
48999
49015
|
}
|
|
49000
49016
|
}), null), P(t, j(M, {
|
|
49001
49017
|
get when() {
|
|
@@ -49011,14 +49027,14 @@ function D5() {
|
|
|
49011
49027
|
return n();
|
|
49012
49028
|
},
|
|
49013
49029
|
get children() {
|
|
49014
|
-
return
|
|
49030
|
+
return u5();
|
|
49015
49031
|
}
|
|
49016
49032
|
}), null), P(t, j(M, {
|
|
49017
49033
|
get when() {
|
|
49018
49034
|
return $e(() => !!u())() && !n();
|
|
49019
49035
|
},
|
|
49020
49036
|
get children() {
|
|
49021
|
-
return
|
|
49037
|
+
return d5();
|
|
49022
49038
|
}
|
|
49023
49039
|
}), null), P(t, j(M, {
|
|
49024
49040
|
get when() {
|
|
@@ -49039,7 +49055,7 @@ function D5() {
|
|
|
49039
49055
|
},
|
|
49040
49056
|
get children() {
|
|
49041
49057
|
return [(() => {
|
|
49042
|
-
var e =
|
|
49058
|
+
var e = f5(), t = e.firstChild, n = t.firstChild, r = t.nextSibling, i = r.firstChild;
|
|
49043
49059
|
return t.$$click = () => y(!v()), P(t, ie, n), r.$$click = () => x(!b()), P(r, oe, i), D((e) => {
|
|
49044
49060
|
var n = {
|
|
49045
49061
|
"text-danger bg-danger/10 border-danger/40": v(),
|
|
@@ -49056,7 +49072,7 @@ function D5() {
|
|
|
49056
49072
|
o: void 0
|
|
49057
49073
|
}), e;
|
|
49058
49074
|
})(), (() => {
|
|
49059
|
-
var e =
|
|
49075
|
+
var e = p5();
|
|
49060
49076
|
return P(e, j(We, {
|
|
49061
49077
|
get each() {
|
|
49062
49078
|
return se();
|
|
@@ -49064,7 +49080,7 @@ function D5() {
|
|
|
49064
49080
|
children: ([e, t]) => {
|
|
49065
49081
|
let n = t[0], r = () => g() === e;
|
|
49066
49082
|
return (() => {
|
|
49067
|
-
var i =
|
|
49083
|
+
var i = b5(), a = i.firstChild, o = a.firstChild, s = o.nextSibling, c = s.nextSibling;
|
|
49068
49084
|
c.firstChild;
|
|
49069
49085
|
var l = c.nextSibling;
|
|
49070
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, {
|
|
@@ -49072,21 +49088,21 @@ function D5() {
|
|
|
49072
49088
|
return r();
|
|
49073
49089
|
},
|
|
49074
49090
|
get children() {
|
|
49075
|
-
var e =
|
|
49091
|
+
var e = y5();
|
|
49076
49092
|
return P(e, j(We, {
|
|
49077
49093
|
each: t,
|
|
49078
49094
|
children: (e) => {
|
|
49079
49095
|
let t = () => e.el?.deref() != null;
|
|
49080
49096
|
return (() => {
|
|
49081
|
-
var n =
|
|
49097
|
+
var n = T5(), r = n.firstChild, i = r.nextSibling;
|
|
49082
49098
|
return n.$$click = () => {
|
|
49083
|
-
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.`));
|
|
49084
49100
|
}, P(r, j(M, {
|
|
49085
49101
|
get when() {
|
|
49086
49102
|
return ne() > 1;
|
|
49087
49103
|
},
|
|
49088
49104
|
get children() {
|
|
49089
|
-
var t =
|
|
49105
|
+
var t = x5(), n = t.firstChild;
|
|
49090
49106
|
return P(t, () => e.page, n), t;
|
|
49091
49107
|
}
|
|
49092
49108
|
}), null), P(r, () => e.description, null), P(r, j(M, {
|
|
@@ -49094,7 +49110,7 @@ function D5() {
|
|
|
49094
49110
|
return (e.count ?? 1) > 1;
|
|
49095
49111
|
},
|
|
49096
49112
|
get children() {
|
|
49097
|
-
var t =
|
|
49113
|
+
var t = S5();
|
|
49098
49114
|
return t.firstChild, P(t, () => e.count, null), t;
|
|
49099
49115
|
}
|
|
49100
49116
|
}), null), P(n, j(M, {
|
|
@@ -49102,14 +49118,14 @@ function D5() {
|
|
|
49102
49118
|
return e.changes.length > 0;
|
|
49103
49119
|
},
|
|
49104
49120
|
get children() {
|
|
49105
|
-
var t =
|
|
49121
|
+
var t = C5();
|
|
49106
49122
|
return P(t, j(We, {
|
|
49107
49123
|
get each() {
|
|
49108
49124
|
return e.changes;
|
|
49109
49125
|
},
|
|
49110
49126
|
children: (e) => (() => {
|
|
49111
|
-
var t =
|
|
49112
|
-
return P(t, () =>
|
|
49127
|
+
var t = E5();
|
|
49128
|
+
return P(t, () => k5(e)), t;
|
|
49113
49129
|
})()
|
|
49114
49130
|
})), t;
|
|
49115
49131
|
}
|
|
@@ -49118,7 +49134,7 @@ function D5() {
|
|
|
49118
49134
|
return e.component || e.source;
|
|
49119
49135
|
},
|
|
49120
49136
|
get children() {
|
|
49121
|
-
var t =
|
|
49137
|
+
var t = w5();
|
|
49122
49138
|
return t.firstChild, P(t, () => [e.component, e.source].filter(Boolean).join(" @ "), null), t;
|
|
49123
49139
|
}
|
|
49124
49140
|
}), null), D((e) => {
|
|
@@ -49151,7 +49167,7 @@ function D5() {
|
|
|
49151
49167
|
rt(["click"]);
|
|
49152
49168
|
//#endregion
|
|
49153
49169
|
//#region src/lib/projectConfig.ts
|
|
49154
|
-
var
|
|
49170
|
+
var j5 = [
|
|
49155
49171
|
"defaultTeamId",
|
|
49156
49172
|
"defaultProjectId",
|
|
49157
49173
|
"defaultLabelIds",
|
|
@@ -49168,29 +49184,29 @@ var O5 = [
|
|
|
49168
49184
|
"renderBudgets",
|
|
49169
49185
|
"renderIgnore"
|
|
49170
49186
|
];
|
|
49171
|
-
function
|
|
49187
|
+
function M5(e) {
|
|
49172
49188
|
let t = {};
|
|
49173
|
-
for (let n of
|
|
49189
|
+
for (let n of j5) {
|
|
49174
49190
|
let r = e[n];
|
|
49175
49191
|
r !== void 0 && r !== "" && !(Array.isArray(r) && r.length === 0) && (t[n] = r);
|
|
49176
49192
|
}
|
|
49177
49193
|
return t;
|
|
49178
49194
|
}
|
|
49179
|
-
function
|
|
49195
|
+
function N5(e, t) {
|
|
49180
49196
|
let n = {};
|
|
49181
|
-
for (let r of
|
|
49197
|
+
for (let r of j5) e[r] === void 0 && t[r] !== void 0 && (n[r] = t[r]);
|
|
49182
49198
|
return Object.keys(n).length ? n : null;
|
|
49183
49199
|
}
|
|
49184
49200
|
//#endregion
|
|
49185
49201
|
//#region src/lib/linear/auth.ts
|
|
49186
49202
|
Br();
|
|
49187
|
-
function
|
|
49203
|
+
function P5(e) {
|
|
49188
49204
|
let t = "";
|
|
49189
49205
|
for (let n of e) t += String.fromCharCode(n);
|
|
49190
49206
|
return btoa(t).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
49191
49207
|
}
|
|
49192
|
-
async function
|
|
49193
|
-
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");
|
|
49194
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");
|
|
49195
49211
|
let s = await chrome.identity.launchWebAuthFlow({
|
|
49196
49212
|
url: o.toString(),
|
|
@@ -49218,15 +49234,15 @@ async function M5(e) {
|
|
|
49218
49234
|
linearOauthClientId: e
|
|
49219
49235
|
});
|
|
49220
49236
|
}
|
|
49221
|
-
async function
|
|
49237
|
+
async function I5() {
|
|
49222
49238
|
await Er({
|
|
49223
49239
|
linearAccessToken: void 0,
|
|
49224
49240
|
linearApiKey: void 0
|
|
49225
49241
|
});
|
|
49226
49242
|
}
|
|
49227
49243
|
Br(), Sr(), Ix(), _D();
|
|
49228
|
-
var
|
|
49229
|
-
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() {
|
|
49230
49246
|
let e = sr(), t = _r(() => ({
|
|
49231
49247
|
queryKey: ["settings"],
|
|
49232
49248
|
queryFn: Tr,
|
|
@@ -49254,13 +49270,13 @@ function v7() {
|
|
|
49254
49270
|
retry: 0
|
|
49255
49271
|
})), [l, u] = T(!1), d = async () => {
|
|
49256
49272
|
try {
|
|
49257
|
-
await navigator.clipboard.writeText(JSON.stringify(
|
|
49273
|
+
await navigator.clipboard.writeText(JSON.stringify(M5(n()), null, 2) + "\n"), u(!0), setTimeout(() => u(!1), 1800);
|
|
49258
49274
|
} catch {}
|
|
49259
49275
|
}, f = () => {
|
|
49260
49276
|
let e = c.data?.projectConfig;
|
|
49261
49277
|
if (!e) return;
|
|
49262
49278
|
let t = {};
|
|
49263
|
-
for (let n of
|
|
49279
|
+
for (let n of j5) e[n] !== void 0 && (t[n] = e[n]);
|
|
49264
49280
|
r(t);
|
|
49265
49281
|
}, p = _r(() => ({
|
|
49266
49282
|
queryKey: ["linear-labels"],
|
|
@@ -49293,7 +49309,7 @@ function v7() {
|
|
|
49293
49309
|
}
|
|
49294
49310
|
E(!0), ee("");
|
|
49295
49311
|
try {
|
|
49296
|
-
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"] });
|
|
49297
49313
|
} catch (e) {
|
|
49298
49314
|
ee(e instanceof Error ? e.message : "OAuth flow failed.");
|
|
49299
49315
|
} finally {
|
|
@@ -49304,7 +49320,7 @@ function v7() {
|
|
|
49304
49320
|
async function re() {
|
|
49305
49321
|
ne(!0);
|
|
49306
49322
|
try {
|
|
49307
|
-
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"] });
|
|
49308
49324
|
} finally {
|
|
49309
49325
|
ne(!1);
|
|
49310
49326
|
}
|
|
@@ -49320,12 +49336,12 @@ function v7() {
|
|
|
49320
49336
|
return e ? `Drafting with ${e} — ${Px[e].fast} (fast) / ${Px[e].best} (best)` : null;
|
|
49321
49337
|
});
|
|
49322
49338
|
return (() => {
|
|
49323
|
-
var e =
|
|
49339
|
+
var e = c7();
|
|
49324
49340
|
return P(e, j(Rj, {
|
|
49325
49341
|
title: "Workflow",
|
|
49326
49342
|
get children() {
|
|
49327
49343
|
return [(() => {
|
|
49328
|
-
var e =
|
|
49344
|
+
var e = L5();
|
|
49329
49345
|
return P(e, j(We, {
|
|
49330
49346
|
each: [{
|
|
49331
49347
|
id: "cloud",
|
|
@@ -49335,19 +49351,19 @@ function v7() {
|
|
|
49335
49351
|
label: "Local · clipboard"
|
|
49336
49352
|
}],
|
|
49337
49353
|
children: (e) => (() => {
|
|
49338
|
-
var t =
|
|
49354
|
+
var t = l7();
|
|
49339
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;
|
|
49340
49356
|
})()
|
|
49341
49357
|
})), e;
|
|
49342
|
-
})(),
|
|
49358
|
+
})(), R5()];
|
|
49343
49359
|
}
|
|
49344
49360
|
}), null), P(e, j(Rj, {
|
|
49345
49361
|
title: "Capture",
|
|
49346
49362
|
get children() {
|
|
49347
49363
|
return [(() => {
|
|
49348
|
-
var e =
|
|
49364
|
+
var e = z5(), t = e.firstChild;
|
|
49349
49365
|
return t.addEventListener("change", (e) => void r({ captureShots: e.currentTarget.checked || void 0 })), D(() => t.checked = !!n().captureShots), e;
|
|
49350
|
-
})(),
|
|
49366
|
+
})(), B5()];
|
|
49351
49367
|
}
|
|
49352
49368
|
}), null), P(e, j(Rj, {
|
|
49353
49369
|
title: "Linear",
|
|
@@ -49358,13 +49374,13 @@ function v7() {
|
|
|
49358
49374
|
},
|
|
49359
49375
|
get fallback() {
|
|
49360
49376
|
return (() => {
|
|
49361
|
-
var e =
|
|
49377
|
+
var e = p7();
|
|
49362
49378
|
return P(e, j(Lj, {
|
|
49363
49379
|
label: "Personal API key",
|
|
49364
49380
|
hint: "Create one at linear.app → Settings → API — fastest path.",
|
|
49365
49381
|
get children() {
|
|
49366
49382
|
return [(() => {
|
|
49367
|
-
var e =
|
|
49383
|
+
var e = u7();
|
|
49368
49384
|
return P(e, j(jj, {
|
|
49369
49385
|
type: "password",
|
|
49370
49386
|
placeholder: "lin_api_…",
|
|
@@ -49401,12 +49417,12 @@ function v7() {
|
|
|
49401
49417
|
}), null), P(e, j(M, {
|
|
49402
49418
|
when: xr,
|
|
49403
49419
|
get children() {
|
|
49404
|
-
return [
|
|
49420
|
+
return [d7(), j(Lj, {
|
|
49405
49421
|
label: "OAuth client ID",
|
|
49406
49422
|
get children() {
|
|
49407
49423
|
return [
|
|
49408
49424
|
(() => {
|
|
49409
|
-
var e =
|
|
49425
|
+
var e = u7();
|
|
49410
49426
|
return P(e, j(jj, {
|
|
49411
49427
|
placeholder: "your-client-id",
|
|
49412
49428
|
get value() {
|
|
@@ -49434,7 +49450,7 @@ function v7() {
|
|
|
49434
49450
|
}
|
|
49435
49451
|
}),
|
|
49436
49452
|
(() => {
|
|
49437
|
-
var e =
|
|
49453
|
+
var e = f7(), t = e.firstChild.nextSibling.nextSibling;
|
|
49438
49454
|
return P(t, ie), e;
|
|
49439
49455
|
})()
|
|
49440
49456
|
];
|
|
@@ -49445,13 +49461,13 @@ function v7() {
|
|
|
49445
49461
|
})();
|
|
49446
49462
|
},
|
|
49447
49463
|
get children() {
|
|
49448
|
-
var e =
|
|
49464
|
+
var e = H5(), t = e.firstChild;
|
|
49449
49465
|
return P(t, j(M, {
|
|
49450
49466
|
get when() {
|
|
49451
49467
|
return !a.isLoading;
|
|
49452
49468
|
},
|
|
49453
49469
|
get fallback() {
|
|
49454
|
-
return
|
|
49470
|
+
return m7();
|
|
49455
49471
|
},
|
|
49456
49472
|
get children() {
|
|
49457
49473
|
return j(M, {
|
|
@@ -49464,7 +49480,7 @@ function v7() {
|
|
|
49464
49480
|
return a.isError;
|
|
49465
49481
|
},
|
|
49466
49482
|
get fallback() {
|
|
49467
|
-
return
|
|
49483
|
+
return m7();
|
|
49468
49484
|
},
|
|
49469
49485
|
get children() {
|
|
49470
49486
|
return j(Hj, { message: "Key rejected — reconnect" });
|
|
@@ -49472,7 +49488,7 @@ function v7() {
|
|
|
49472
49488
|
});
|
|
49473
49489
|
},
|
|
49474
49490
|
get children() {
|
|
49475
|
-
var e =
|
|
49491
|
+
var e = V5(), t = e.firstChild.nextSibling, n = t.nextSibling.nextSibling;
|
|
49476
49492
|
return P(t, () => a.data.name), P(n, () => a.data.email), e;
|
|
49477
49493
|
}
|
|
49478
49494
|
});
|
|
@@ -49513,7 +49529,7 @@ function v7() {
|
|
|
49513
49529
|
return o.isLoading;
|
|
49514
49530
|
},
|
|
49515
49531
|
get children() {
|
|
49516
|
-
return [
|
|
49532
|
+
return [U5(), j(M, {
|
|
49517
49533
|
get when() {
|
|
49518
49534
|
return o.data;
|
|
49519
49535
|
},
|
|
@@ -49523,7 +49539,7 @@ function v7() {
|
|
|
49523
49539
|
return o.data;
|
|
49524
49540
|
},
|
|
49525
49541
|
children: (e) => (() => {
|
|
49526
|
-
var t =
|
|
49542
|
+
var t = h7(), r = t.firstChild, i = r.nextSibling;
|
|
49527
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;
|
|
49528
49544
|
})()
|
|
49529
49545
|
});
|
|
@@ -49547,14 +49563,14 @@ function v7() {
|
|
|
49547
49563
|
},
|
|
49548
49564
|
get children() {
|
|
49549
49565
|
return [(() => {
|
|
49550
|
-
var e =
|
|
49566
|
+
var e = W5();
|
|
49551
49567
|
return D(() => e.selected = !n().defaultProjectId), e;
|
|
49552
49568
|
})(), j(We, {
|
|
49553
49569
|
get each() {
|
|
49554
49570
|
return s.data ?? [];
|
|
49555
49571
|
},
|
|
49556
49572
|
children: (e) => (() => {
|
|
49557
|
-
var t =
|
|
49573
|
+
var t = g7();
|
|
49558
49574
|
return P(t, () => e.name), D(() => t.selected = e.id === n().defaultProjectId), D(() => t.value = e.id), t;
|
|
49559
49575
|
})()
|
|
49560
49576
|
})];
|
|
@@ -49566,7 +49582,7 @@ function v7() {
|
|
|
49566
49582
|
label: "Default labels",
|
|
49567
49583
|
hint: "Applied to every issue created from the panel.",
|
|
49568
49584
|
get children() {
|
|
49569
|
-
var e =
|
|
49585
|
+
var e = G5();
|
|
49570
49586
|
return P(e, j(We, {
|
|
49571
49587
|
get each() {
|
|
49572
49588
|
return p.data ?? [];
|
|
@@ -49574,7 +49590,7 @@ function v7() {
|
|
|
49574
49590
|
children: (e) => {
|
|
49575
49591
|
let t = () => (n().defaultLabelIds ?? []).includes(e.id);
|
|
49576
49592
|
return (() => {
|
|
49577
|
-
var i =
|
|
49593
|
+
var i = _7(), a = i.firstChild;
|
|
49578
49594
|
return i.$$click = () => {
|
|
49579
49595
|
let i = n().defaultLabelIds ?? [];
|
|
49580
49596
|
r({ defaultLabelIds: t() ? i.filter((t) => t !== e.id) : [...i, e.id] });
|
|
@@ -49591,7 +49607,7 @@ function v7() {
|
|
|
49591
49607
|
}
|
|
49592
49608
|
}),
|
|
49593
49609
|
(() => {
|
|
49594
|
-
var e =
|
|
49610
|
+
var e = K5(), t = e.firstChild;
|
|
49595
49611
|
return t.addEventListener("change", (e) => void r({ shareLinearKey: e.currentTarget.checked })), D(() => t.checked = !!n().shareLinearKey), e;
|
|
49596
49612
|
})(),
|
|
49597
49613
|
j(Lj, {
|
|
@@ -49641,7 +49657,7 @@ function v7() {
|
|
|
49641
49657
|
return m.isLoading;
|
|
49642
49658
|
},
|
|
49643
49659
|
get children() {
|
|
49644
|
-
return [
|
|
49660
|
+
return [v7(), j(M, {
|
|
49645
49661
|
get when() {
|
|
49646
49662
|
return m.data;
|
|
49647
49663
|
},
|
|
@@ -49651,7 +49667,7 @@ function v7() {
|
|
|
49651
49667
|
return m.data;
|
|
49652
49668
|
},
|
|
49653
49669
|
children: (e) => (() => {
|
|
49654
|
-
var t =
|
|
49670
|
+
var t = g7();
|
|
49655
49671
|
return P(t, () => e.displayName), D(() => t.selected = e.id === n().cursorAgentId), D(() => t.value = e.id), t;
|
|
49656
49672
|
})()
|
|
49657
49673
|
});
|
|
@@ -49661,7 +49677,7 @@ function v7() {
|
|
|
49661
49677
|
});
|
|
49662
49678
|
},
|
|
49663
49679
|
get children() {
|
|
49664
|
-
return
|
|
49680
|
+
return q5();
|
|
49665
49681
|
}
|
|
49666
49682
|
});
|
|
49667
49683
|
}
|
|
@@ -49709,7 +49725,7 @@ function v7() {
|
|
|
49709
49725
|
onBlur: (e) => {
|
|
49710
49726
|
r({ issueTemplate: e.currentTarget.value.trim() || void 0 });
|
|
49711
49727
|
}
|
|
49712
|
-
}),
|
|
49728
|
+
}), J5()];
|
|
49713
49729
|
}
|
|
49714
49730
|
}),
|
|
49715
49731
|
j(Lj, {
|
|
@@ -49766,7 +49782,7 @@ function v7() {
|
|
|
49766
49782
|
label: "Test account",
|
|
49767
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.",
|
|
49768
49784
|
get children() {
|
|
49769
|
-
var e =
|
|
49785
|
+
var e = Y5();
|
|
49770
49786
|
return P(e, j(jj, {
|
|
49771
49787
|
placeholder: "Username or email (e.g. demo@yourapp.com)",
|
|
49772
49788
|
get value() {
|
|
@@ -49798,7 +49814,7 @@ function v7() {
|
|
|
49798
49814
|
title: "Panel",
|
|
49799
49815
|
get children() {
|
|
49800
49816
|
return [(() => {
|
|
49801
|
-
var e =
|
|
49817
|
+
var e = X5(), t = e.firstChild.nextSibling;
|
|
49802
49818
|
return P(t, j(We, {
|
|
49803
49819
|
each: [{
|
|
49804
49820
|
id: "overlay",
|
|
@@ -49808,7 +49824,7 @@ function v7() {
|
|
|
49808
49824
|
label: "Beside page"
|
|
49809
49825
|
}],
|
|
49810
49826
|
children: (e) => (() => {
|
|
49811
|
-
var t =
|
|
49827
|
+
var t = l7();
|
|
49812
49828
|
return t.$$click = () => void r({
|
|
49813
49829
|
panelMode: e.id,
|
|
49814
49830
|
panelPos: void 0
|
|
@@ -49816,11 +49832,11 @@ function v7() {
|
|
|
49816
49832
|
})()
|
|
49817
49833
|
})), e;
|
|
49818
49834
|
})(), (() => {
|
|
49819
|
-
var e =
|
|
49835
|
+
var e = Z5(), t = e.firstChild.nextSibling;
|
|
49820
49836
|
return P(t, j(We, {
|
|
49821
49837
|
each: ["left", "right"],
|
|
49822
49838
|
children: (e) => (() => {
|
|
49823
|
-
var t =
|
|
49839
|
+
var t = l7();
|
|
49824
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;
|
|
49825
49841
|
})()
|
|
49826
49842
|
})), e;
|
|
@@ -49850,8 +49866,8 @@ function v7() {
|
|
|
49850
49866
|
}), null), P(e, j(Rj, {
|
|
49851
49867
|
title: "Project config (.lineargrab.json)",
|
|
49852
49868
|
get children() {
|
|
49853
|
-
return [
|
|
49854
|
-
var e =
|
|
49869
|
+
return [Q5(), (() => {
|
|
49870
|
+
var e = e7();
|
|
49855
49871
|
return P(e, j(M, {
|
|
49856
49872
|
get when() {
|
|
49857
49873
|
return c.data?.projectConfig;
|
|
@@ -49882,7 +49898,7 @@ function v7() {
|
|
|
49882
49898
|
},
|
|
49883
49899
|
onClick: () => void d(),
|
|
49884
49900
|
get children() {
|
|
49885
|
-
var e =
|
|
49901
|
+
var e = $5();
|
|
49886
49902
|
return P(e, () => l() ? "Copied ✓" : "Copy config"), e;
|
|
49887
49903
|
}
|
|
49888
49904
|
}), null), e;
|
|
@@ -49973,12 +49989,12 @@ function v7() {
|
|
|
49973
49989
|
});
|
|
49974
49990
|
},
|
|
49975
49991
|
get children() {
|
|
49976
|
-
return [
|
|
49992
|
+
return [t7(), j(We, {
|
|
49977
49993
|
get each() {
|
|
49978
49994
|
return ae.data ?? [];
|
|
49979
49995
|
},
|
|
49980
49996
|
children: (e) => (() => {
|
|
49981
|
-
var t =
|
|
49997
|
+
var t = y7();
|
|
49982
49998
|
return t.firstChild, P(t, () => e.name, null), D(() => t.selected = e.id === n().slackChannelId), D(() => t.value = e.id), t;
|
|
49983
49999
|
})()
|
|
49984
50000
|
})];
|
|
@@ -50029,10 +50045,10 @@ function v7() {
|
|
|
50029
50045
|
}
|
|
50030
50046
|
}),
|
|
50031
50047
|
(() => {
|
|
50032
|
-
var e =
|
|
50048
|
+
var e = n7(), t = e.firstChild;
|
|
50033
50049
|
return t.addEventListener("change", (e) => void r({ notifyOnCreate: e.currentTarget.checked ? void 0 : !1 })), D(() => t.checked = n().notifyOnCreate !== !1), e;
|
|
50034
50050
|
})(),
|
|
50035
|
-
|
|
50051
|
+
r7()
|
|
50036
50052
|
];
|
|
50037
50053
|
}
|
|
50038
50054
|
}), null), P(e, j(Rj, {
|
|
@@ -50070,7 +50086,7 @@ function v7() {
|
|
|
50070
50086
|
}
|
|
50071
50087
|
}),
|
|
50072
50088
|
(() => {
|
|
50073
|
-
var e =
|
|
50089
|
+
var e = i7(), t = e.firstChild.nextSibling.firstChild, i = t.nextSibling, a = i.nextSibling;
|
|
50074
50090
|
return t.$$click = () => void r({ preferredProvider: void 0 }), i.$$click = () => void r({ preferredProvider: "openai" }), a.$$click = () => void r({ preferredProvider: "anthropic" }), D((e) => {
|
|
50075
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;
|
|
50076
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;
|
|
@@ -50083,16 +50099,16 @@ function v7() {
|
|
|
50083
50099
|
}), e;
|
|
50084
50100
|
})(),
|
|
50085
50101
|
(() => {
|
|
50086
|
-
var e =
|
|
50102
|
+
var e = o7();
|
|
50087
50103
|
return P(e, j(M, {
|
|
50088
50104
|
get when() {
|
|
50089
50105
|
return se();
|
|
50090
50106
|
},
|
|
50091
50107
|
get fallback() {
|
|
50092
|
-
return
|
|
50108
|
+
return b7();
|
|
50093
50109
|
},
|
|
50094
50110
|
get children() {
|
|
50095
|
-
var e =
|
|
50111
|
+
var e = a7();
|
|
50096
50112
|
return P(e, se), e;
|
|
50097
50113
|
}
|
|
50098
50114
|
})), e;
|
|
@@ -50102,7 +50118,7 @@ function v7() {
|
|
|
50102
50118
|
}), null), P(e, j(Rj, {
|
|
50103
50119
|
title: "How it works",
|
|
50104
50120
|
get children() {
|
|
50105
|
-
return
|
|
50121
|
+
return s7();
|
|
50106
50122
|
}
|
|
50107
50123
|
}), null), e;
|
|
50108
50124
|
})();
|
|
@@ -50110,38 +50126,38 @@ function v7() {
|
|
|
50110
50126
|
rt(["click"]);
|
|
50111
50127
|
//#endregion
|
|
50112
50128
|
//#region src/lib/idbCache.ts
|
|
50113
|
-
var
|
|
50129
|
+
var S7 = "linear-grab", C7 = "queries", w7 = [
|
|
50114
50130
|
"my-issues",
|
|
50115
50131
|
"issue",
|
|
50116
50132
|
"sessions",
|
|
50117
50133
|
"teams",
|
|
50118
50134
|
"agents"
|
|
50119
50135
|
];
|
|
50120
|
-
function
|
|
50136
|
+
function T7() {
|
|
50121
50137
|
return new Promise((e) => {
|
|
50122
50138
|
try {
|
|
50123
|
-
let t = indexedDB.open(
|
|
50124
|
-
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);
|
|
50125
50141
|
} catch {
|
|
50126
50142
|
e(null);
|
|
50127
50143
|
}
|
|
50128
50144
|
});
|
|
50129
50145
|
}
|
|
50130
|
-
function
|
|
50131
|
-
return typeof e[0] == "string" &&
|
|
50146
|
+
function E7(e) {
|
|
50147
|
+
return typeof e[0] == "string" && w7.includes(e[0]);
|
|
50132
50148
|
}
|
|
50133
|
-
async function
|
|
50134
|
-
let t = await
|
|
50149
|
+
async function D7(e) {
|
|
50150
|
+
let t = await T7();
|
|
50135
50151
|
if (!t) return () => {};
|
|
50136
50152
|
await new Promise((n) => {
|
|
50137
50153
|
try {
|
|
50138
|
-
let r = t.transaction(
|
|
50154
|
+
let r = t.transaction(C7, "readonly").objectStore(C7).openCursor();
|
|
50139
50155
|
r.onsuccess = () => {
|
|
50140
50156
|
let t = r.result;
|
|
50141
50157
|
if (!t) return n();
|
|
50142
50158
|
try {
|
|
50143
50159
|
let { queryKey: n, data: r } = t.value;
|
|
50144
|
-
|
|
50160
|
+
E7(n) && e.getQueryData(n) === void 0 && e.setQueryData(n, r, { updatedAt: 0 });
|
|
50145
50161
|
} catch {}
|
|
50146
50162
|
t.continue();
|
|
50147
50163
|
}, r.onerror = () => n();
|
|
@@ -50152,14 +50168,14 @@ async function w7(e) {
|
|
|
50152
50168
|
let n = /* @__PURE__ */ new Map(), r = e.getQueryCache().subscribe((r) => {
|
|
50153
50169
|
if (r.type !== "updated" || r.action.type !== "success") return;
|
|
50154
50170
|
let { queryKey: i, queryHash: a } = r.query;
|
|
50155
|
-
if (!
|
|
50171
|
+
if (!E7(i)) return;
|
|
50156
50172
|
let o = n.get(a);
|
|
50157
50173
|
o && clearTimeout(o), n.set(a, setTimeout(() => {
|
|
50158
50174
|
n.delete(a);
|
|
50159
50175
|
try {
|
|
50160
50176
|
let n = e.getQueryData(i);
|
|
50161
50177
|
if (n === void 0) return;
|
|
50162
|
-
t.transaction(
|
|
50178
|
+
t.transaction(C7, "readwrite").objectStore(C7).put({
|
|
50163
50179
|
queryKey: i,
|
|
50164
50180
|
data: n
|
|
50165
50181
|
}, a);
|
|
@@ -50175,7 +50191,7 @@ async function w7(e) {
|
|
|
50175
50191
|
//#endregion
|
|
50176
50192
|
//#region src/panel/App.tsx
|
|
50177
50193
|
Br();
|
|
50178
|
-
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 = [
|
|
50179
50195
|
{
|
|
50180
50196
|
id: "draft",
|
|
50181
50197
|
label: "Draft"
|
|
@@ -50216,35 +50232,35 @@ var T7 = /*#__PURE__*/ N("<svg viewBox=\"0 0 100 100\"fill=currentColor aria-hid
|
|
|
50216
50232
|
id: "settings",
|
|
50217
50233
|
label: "Settings"
|
|
50218
50234
|
}
|
|
50219
|
-
],
|
|
50220
|
-
function
|
|
50221
|
-
if (
|
|
50222
|
-
|
|
50235
|
+
], P7 = /* @__PURE__ */ new Set();
|
|
50236
|
+
function F7(e, t, n) {
|
|
50237
|
+
if (P7.has(e) || typeof Notification > "u") return;
|
|
50238
|
+
P7.add(e);
|
|
50223
50239
|
let r = () => new Notification(t, { body: n });
|
|
50224
50240
|
Notification.permission === "granted" ? r() : Notification.permission === "default" && Notification.requestPermission().then((e) => e === "granted" && r());
|
|
50225
50241
|
}
|
|
50226
|
-
function
|
|
50242
|
+
function I7() {
|
|
50227
50243
|
setInterval(() => {
|
|
50228
50244
|
PO().then((e) => {
|
|
50229
50245
|
for (let t of e) {
|
|
50230
50246
|
if (t.status !== "running") continue;
|
|
50231
50247
|
let e = t.lastEventAt ?? t.startedAt;
|
|
50232
|
-
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.`);
|
|
50233
50249
|
}
|
|
50234
50250
|
}).catch(() => {}), _O().then((e) => {
|
|
50235
|
-
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.`);
|
|
50236
50252
|
}).catch(() => {});
|
|
50237
50253
|
}, 6e4);
|
|
50238
50254
|
}
|
|
50239
|
-
|
|
50240
|
-
var
|
|
50255
|
+
I7();
|
|
50256
|
+
var L7 = new gr({ defaultOptions: { queries: {
|
|
50241
50257
|
retry: 1,
|
|
50242
50258
|
refetchOnWindowFocus: !1,
|
|
50243
50259
|
staleTime: 5e3
|
|
50244
50260
|
} } });
|
|
50245
|
-
function
|
|
50261
|
+
function R7(e) {
|
|
50246
50262
|
return (() => {
|
|
50247
|
-
var t =
|
|
50263
|
+
var t = O7();
|
|
50248
50264
|
return D((n) => {
|
|
50249
50265
|
var r = e.size ?? 14, i = e.size ?? 14;
|
|
50250
50266
|
return r !== n.e && it(t, "width", n.e = r), i !== n.t && it(t, "height", n.t = i), n;
|
|
@@ -50254,36 +50270,36 @@ function F7(e) {
|
|
|
50254
50270
|
}), t;
|
|
50255
50271
|
})();
|
|
50256
50272
|
}
|
|
50257
|
-
function
|
|
50273
|
+
function z7(e) {
|
|
50258
50274
|
let [t, n] = T("draft"), r = () => {
|
|
50259
|
-
|
|
50275
|
+
L7.invalidateQueries({ queryKey: ["grab"] }), lj() === "capture" && n("capture"), e.onGrab?.();
|
|
50260
50276
|
};
|
|
50261
50277
|
return O(() => {
|
|
50262
50278
|
let e = rj();
|
|
50263
50279
|
e && n(e);
|
|
50264
50280
|
}), ie(() => {
|
|
50265
|
-
let e =
|
|
50281
|
+
let e = D7(L7), t = XZ(r), n = () => {
|
|
50266
50282
|
YO().then(y$), HO(), NO().then(async (e) => {
|
|
50267
50283
|
if (!e.projectConfig) return;
|
|
50268
|
-
let t =
|
|
50284
|
+
let t = N5(await Tr(), e.projectConfig);
|
|
50269
50285
|
t && await Er(t);
|
|
50270
50286
|
}).catch(() => {});
|
|
50271
50287
|
};
|
|
50272
50288
|
n();
|
|
50273
50289
|
let i = Mr((e) => {
|
|
50274
|
-
e === "settings" && (
|
|
50290
|
+
e === "settings" && (L7.invalidateQueries({ queryKey: ["settings"] }), n()), e === "grab" && r();
|
|
50275
50291
|
});
|
|
50276
50292
|
ae(() => {
|
|
50277
50293
|
t(), i(), e.then((e) => e());
|
|
50278
50294
|
});
|
|
50279
50295
|
}), j(cr, {
|
|
50280
|
-
client:
|
|
50296
|
+
client: L7,
|
|
50281
50297
|
get children() {
|
|
50282
|
-
var r =
|
|
50283
|
-
return i.$$pointerdown = (t) => e.onHeaderPointerDown?.(t), P(a, j(
|
|
50284
|
-
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,
|
|
50285
50301
|
children: (e) => (() => {
|
|
50286
|
-
var r =
|
|
50302
|
+
var r = M7();
|
|
50287
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;
|
|
50288
50304
|
})()
|
|
50289
50305
|
})), P(i, j(M, {
|
|
@@ -50291,7 +50307,7 @@ function I7(e) {
|
|
|
50291
50307
|
return e.onTogglePin;
|
|
50292
50308
|
},
|
|
50293
50309
|
get children() {
|
|
50294
|
-
var t =
|
|
50310
|
+
var t = k7();
|
|
50295
50311
|
return t.$$click = () => e.onTogglePin?.(), D((n) => {
|
|
50296
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"}`;
|
|
50297
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;
|
|
@@ -50306,10 +50322,10 @@ function I7(e) {
|
|
|
50306
50322
|
return e.onClose;
|
|
50307
50323
|
},
|
|
50308
50324
|
get children() {
|
|
50309
|
-
var t =
|
|
50325
|
+
var t = A7();
|
|
50310
50326
|
return t.$$click = () => e.onClose?.(), t;
|
|
50311
50327
|
}
|
|
50312
|
-
}), 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) => {
|
|
50313
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";
|
|
50314
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;
|
|
50315
50331
|
}, {
|
|
@@ -50331,16 +50347,16 @@ function I7(e) {
|
|
|
50331
50347
|
rt(["pointerdown", "click"]);
|
|
50332
50348
|
//#endregion
|
|
50333
50349
|
//#region src/styles/app.css?inline
|
|
50334
|
-
var L7 = "/*! 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}}";
|
|
50335
50351
|
//#endregion
|
|
50336
50352
|
//#region src/page/index.tsx
|
|
50337
50353
|
Br();
|
|
50338
|
-
var
|
|
50339
|
-
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 = {}) {
|
|
50340
50356
|
if (typeof window > "u" || window.__LINEAR_GRAB_PAGE__) return;
|
|
50341
50357
|
window.__LINEAR_GRAB_PAGE__ = !0;
|
|
50342
50358
|
let t = () => {
|
|
50343
|
-
uk(), z2(),
|
|
50359
|
+
uk(), z2(), Q4(), W8(), JZ();
|
|
50344
50360
|
let t = document.createElement("div");
|
|
50345
50361
|
t.id = "linear-grab-root", document.body.appendChild(t);
|
|
50346
50362
|
let n = (e) => {
|
|
@@ -50368,17 +50384,17 @@ function t9(e = {}) {
|
|
|
50368
50384
|
"keypress"
|
|
50369
50385
|
]) window.addEventListener(e, n, { capture: !0 });
|
|
50370
50386
|
let r = t.attachShadow({ mode: "open" }), i = document.createElement("style");
|
|
50371
|
-
i.textContent =
|
|
50387
|
+
i.textContent = B7, r.appendChild(i);
|
|
50372
50388
|
let a = document.createElement("div");
|
|
50373
50389
|
r.appendChild(a);
|
|
50374
|
-
let o = () => a.setAttribute("data-theme",
|
|
50375
|
-
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() {
|
|
50376
50392
|
return e.defaultOpen ?? !1;
|
|
50377
50393
|
} }), a);
|
|
50378
50394
|
};
|
|
50379
50395
|
document.body ? t() : document.addEventListener("DOMContentLoaded", t, { once: !0 });
|
|
50380
50396
|
}
|
|
50381
|
-
function
|
|
50397
|
+
function a9() {
|
|
50382
50398
|
try {
|
|
50383
50399
|
let e = [document.body, document.documentElement];
|
|
50384
50400
|
for (let t of e) {
|
|
@@ -50388,11 +50404,11 @@ function n9() {
|
|
|
50388
50404
|
} catch {}
|
|
50389
50405
|
return matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark";
|
|
50390
50406
|
}
|
|
50391
|
-
var
|
|
50392
|
-
function
|
|
50407
|
+
var o9 = 130, s9 = 36, c9 = 380, l9 = 280, u9 = 720;
|
|
50408
|
+
function d9(e) {
|
|
50393
50409
|
let [t, n] = T(e.defaultOpen), [r, i] = T("right"), [a, o] = T({
|
|
50394
|
-
x: Math.max(8, window.innerWidth -
|
|
50395
|
-
y: Math.max(8, window.innerHeight -
|
|
50410
|
+
x: Math.max(8, window.innerWidth - o9 - 24),
|
|
50411
|
+
y: Math.max(8, window.innerHeight - s9 - 20)
|
|
50396
50412
|
}), [s, c] = T({
|
|
50397
50413
|
running: [],
|
|
50398
50414
|
review: []
|
|
@@ -50412,12 +50428,12 @@ function c9(e) {
|
|
|
50412
50428
|
let t = Math.floor(e / 1e3);
|
|
50413
50429
|
return `${Math.floor(t / 60)}:${String(t % 60).padStart(2, "0")}`;
|
|
50414
50430
|
}, [b, x] = T(null), S = (e) => ({
|
|
50415
|
-
x: Math.min(Math.max(8, e.x), window.innerWidth -
|
|
50416
|
-
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)
|
|
50417
50433
|
}), C = (e) => ({
|
|
50418
50434
|
x: Math.min(Math.max(8 - (ne() - 80), e.x), window.innerWidth - 80),
|
|
50419
50435
|
y: Math.min(Math.max(0, e.y), window.innerHeight - 80)
|
|
50420
|
-
}), [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)));
|
|
50421
50437
|
O(() => {
|
|
50422
50438
|
let e = document.documentElement, n = t() && w();
|
|
50423
50439
|
e.style.marginRight = n && r() === "right" ? `${ne()}px` : "", e.style.marginLeft = n && r() === "left" ? `${ne()}px` : "";
|
|
@@ -50531,7 +50547,7 @@ function c9(e) {
|
|
|
50531
50547
|
return !t();
|
|
50532
50548
|
},
|
|
50533
50549
|
get children() {
|
|
50534
|
-
var e =
|
|
50550
|
+
var e = K7(), t = e.firstChild;
|
|
50535
50551
|
return t.$$click = () => {
|
|
50536
50552
|
ce || p() === "recording" || h().active || (f(!1), n(!0));
|
|
50537
50553
|
}, t.$$pointerdown = le, P(t, j(M, {
|
|
@@ -50541,14 +50557,14 @@ function c9(e) {
|
|
|
50541
50557
|
get fallback() {
|
|
50542
50558
|
return [
|
|
50543
50559
|
(() => {
|
|
50544
|
-
var e =
|
|
50560
|
+
var e = J7();
|
|
50545
50561
|
return e.$$click = () => {
|
|
50546
50562
|
ce || (f(!1), n(!0));
|
|
50547
|
-
}, P(e, j(
|
|
50563
|
+
}, P(e, j(R7, { size: 13 })), e;
|
|
50548
50564
|
})(),
|
|
50549
|
-
|
|
50565
|
+
Y7(),
|
|
50550
50566
|
(() => {
|
|
50551
|
-
var e =
|
|
50567
|
+
var e = Q7(), t = e.firstChild, n = t.nextSibling;
|
|
50552
50568
|
return e.$$click = (e) => {
|
|
50553
50569
|
e.stopPropagation(), !ce && f((e) => !e);
|
|
50554
50570
|
}, P(n, (() => {
|
|
@@ -50559,8 +50575,8 @@ function c9(e) {
|
|
|
50559
50575
|
return $e(() => !te())() && u().length > 0;
|
|
50560
50576
|
},
|
|
50561
50577
|
get children() {
|
|
50562
|
-
return [
|
|
50563
|
-
var e =
|
|
50578
|
+
return [X7(), (() => {
|
|
50579
|
+
var e = Z7(), t = e.firstChild;
|
|
50564
50580
|
return P(e, () => u().length, t), e;
|
|
50565
50581
|
})()];
|
|
50566
50582
|
}
|
|
@@ -50581,17 +50597,17 @@ function c9(e) {
|
|
|
50581
50597
|
},
|
|
50582
50598
|
get fallback() {
|
|
50583
50599
|
return [
|
|
50584
|
-
|
|
50600
|
+
$7(),
|
|
50585
50601
|
(() => {
|
|
50586
|
-
var e =
|
|
50602
|
+
var e = e9(), t = e.firstChild;
|
|
50587
50603
|
return P(e, () => Math.ceil(h().msLeft / 1e3), t), e;
|
|
50588
50604
|
})(),
|
|
50589
50605
|
(() => {
|
|
50590
|
-
var e =
|
|
50606
|
+
var e = t9(), t = e.firstChild;
|
|
50591
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;
|
|
50592
50608
|
})(),
|
|
50593
50609
|
(() => {
|
|
50594
|
-
var e =
|
|
50610
|
+
var e = U7();
|
|
50595
50611
|
return e.$$click = (e) => {
|
|
50596
50612
|
e.stopPropagation(), !ce && o2();
|
|
50597
50613
|
}, e;
|
|
@@ -50600,13 +50616,13 @@ function c9(e) {
|
|
|
50600
50616
|
},
|
|
50601
50617
|
get children() {
|
|
50602
50618
|
return [
|
|
50603
|
-
|
|
50619
|
+
V7(),
|
|
50604
50620
|
(() => {
|
|
50605
|
-
var e =
|
|
50621
|
+
var e = H7();
|
|
50606
50622
|
return P(e, () => y(_())), e;
|
|
50607
50623
|
})(),
|
|
50608
50624
|
(() => {
|
|
50609
|
-
var e =
|
|
50625
|
+
var e = U7();
|
|
50610
50626
|
return e.$$click = () => {
|
|
50611
50627
|
ce || tO();
|
|
50612
50628
|
}, e;
|
|
@@ -50620,17 +50636,17 @@ function c9(e) {
|
|
|
50620
50636
|
return d();
|
|
50621
50637
|
},
|
|
50622
50638
|
get children() {
|
|
50623
|
-
var e =
|
|
50639
|
+
var e = G7(), t = e.firstChild;
|
|
50624
50640
|
return P(e, j(M, {
|
|
50625
50641
|
get when() {
|
|
50626
50642
|
return u().length > 0;
|
|
50627
50643
|
},
|
|
50628
50644
|
get children() {
|
|
50629
|
-
return [
|
|
50645
|
+
return [W7(), j(We, {
|
|
50630
50646
|
get each() {
|
|
50631
50647
|
return u();
|
|
50632
50648
|
},
|
|
50633
|
-
children: (e) => j(
|
|
50649
|
+
children: (e) => j(f9, {
|
|
50634
50650
|
agent: e,
|
|
50635
50651
|
review: !0,
|
|
50636
50652
|
onOpen: de
|
|
@@ -50642,14 +50658,14 @@ function c9(e) {
|
|
|
50642
50658
|
return l().length > 0;
|
|
50643
50659
|
},
|
|
50644
50660
|
get fallback() {
|
|
50645
|
-
return
|
|
50661
|
+
return n9();
|
|
50646
50662
|
},
|
|
50647
50663
|
get children() {
|
|
50648
50664
|
return j(We, {
|
|
50649
50665
|
get each() {
|
|
50650
50666
|
return l();
|
|
50651
50667
|
},
|
|
50652
|
-
children: (e) => j(
|
|
50668
|
+
children: (e) => j(f9, {
|
|
50653
50669
|
agent: e,
|
|
50654
50670
|
onOpen: de
|
|
50655
50671
|
})
|
|
@@ -50670,8 +50686,8 @@ function c9(e) {
|
|
|
50670
50686
|
return t();
|
|
50671
50687
|
},
|
|
50672
50688
|
get children() {
|
|
50673
|
-
var e =
|
|
50674
|
-
return t.$$pointerdown = fe, P(e, j(
|
|
50689
|
+
var e = q7(), t = e.firstChild;
|
|
50690
|
+
return t.$$pointerdown = fe, P(e, j(z7, {
|
|
50675
50691
|
onGrab: () => n(!0),
|
|
50676
50692
|
onClose: () => n(!1),
|
|
50677
50693
|
get onHeaderPointerDown() {
|
|
@@ -50699,19 +50715,19 @@ function c9(e) {
|
|
|
50699
50715
|
}
|
|
50700
50716
|
})];
|
|
50701
50717
|
}
|
|
50702
|
-
function
|
|
50718
|
+
function f9(e) {
|
|
50703
50719
|
return (() => {
|
|
50704
|
-
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;
|
|
50705
50721
|
return c.nextSibling, t.$$click = () => e.onOpen(e.agent.id), P(i, () => e.agent.identifier), P(a, () => e.agent.title), P(o, (() => {
|
|
50706
50722
|
var t = $e(() => !!e.review);
|
|
50707
50723
|
return () => t() ? "PR ready · needs review" : e.agent.stateName;
|
|
50708
|
-
})(), 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;
|
|
50709
50725
|
})();
|
|
50710
50726
|
}
|
|
50711
|
-
function
|
|
50727
|
+
function p9(e) {
|
|
50712
50728
|
let t = Math.max(0, Math.floor((Date.now() - Date.parse(e)) / 1e3));
|
|
50713
50729
|
return t < 60 ? "now" : t < 3600 ? `${Math.floor(t / 60)}m` : t < 86400 ? `${Math.floor(t / 3600)}h` : `${Math.floor(t / 86400)}d`;
|
|
50714
50730
|
}
|
|
50715
50731
|
rt(["pointerdown", "click"]);
|
|
50716
50732
|
//#endregion
|
|
50717
|
-
export {
|
|
50733
|
+
export { i9 as init };
|