@pixelmatters/markup 1.27.2 → 1.27.3
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/README.md +8 -8
- package/dist/widget.d.ts +7 -3
- package/dist/widget.js +323 -313
- package/dist/widget.js.map +1 -1
- package/package.json +1 -1
- package/skills/install-markup-widget/SKILL.md +4 -4
package/dist/widget.js
CHANGED
|
@@ -42,42 +42,42 @@ function w(e, t) {
|
|
|
42
42
|
for (var n; t < e.__k.length; t++) if ((n = e.__k[t]) != null && n.__e != null) return n.__e;
|
|
43
43
|
return typeof e.type == "function" ? w(e) : null;
|
|
44
44
|
}
|
|
45
|
-
function
|
|
45
|
+
function T(e) {
|
|
46
46
|
if (e.__P && e.__d) {
|
|
47
47
|
var n = e.__v, r = n.__e, i = [], a = [], o = v({}, n);
|
|
48
|
-
o.__v = n.__v + 1, t.vnode && t.vnode(o),
|
|
48
|
+
o.__v = n.__v + 1, t.vnode && t.vnode(o), F(e.__P, o, n, e.__n, e.__P.namespaceURI, 32 & n.__u ? [r] : null, i, r ?? w(n), !!(32 & n.__u), a), o.__v = n.__v, o.__.__k[o.__i] = o, ne(i, o, a), n.__e = n.__ = null, o.__e != r && E(o);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
function
|
|
51
|
+
function E(e) {
|
|
52
52
|
if ((e = e.__) != null && e.__c != null) return e.__e = e.__c.base = null, e.__k.some(function(t) {
|
|
53
53
|
if (t != null && t.__e != null) return e.__e = e.__c.base = t.__e;
|
|
54
|
-
}),
|
|
54
|
+
}), E(e);
|
|
55
55
|
}
|
|
56
|
-
function
|
|
57
|
-
(!e.__d && (e.__d = !0) && r.push(e) && !
|
|
56
|
+
function D(e) {
|
|
57
|
+
(!e.__d && (e.__d = !0) && r.push(e) && !O.__r++ || i != t.debounceRendering) && ((i = t.debounceRendering) || a)(O);
|
|
58
58
|
}
|
|
59
|
-
function
|
|
59
|
+
function O() {
|
|
60
60
|
try {
|
|
61
|
-
for (var e, t = 1; r.length;) r.length > t && r.sort(o), e = r.shift(), t = r.length,
|
|
61
|
+
for (var e, t = 1; r.length;) r.length > t && r.sort(o), e = r.shift(), t = r.length, T(e);
|
|
62
62
|
} finally {
|
|
63
|
-
r.length =
|
|
63
|
+
r.length = O.__r = 0;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
function
|
|
66
|
+
function ee(e, t, n, r, i, a, o, s, c, l, u) {
|
|
67
67
|
var d, f, p, g, _, v, y = r && r.__k || h, b = t.length;
|
|
68
|
-
for (c =
|
|
68
|
+
for (c = k(n, t, y, c, b), d = 0; d < b; d++) (p = n.__k[d]) != null && (f = p.__i != -1 && y[p.__i] || m, p.__i = d, v = F(e, p, f, i, a, o, s, c, l, u), g = p.__e, p.ref && f.ref != p.ref && (f.ref && ae(f.ref, null, p), u.push(p.ref, p.__c || g, p)), _ == null && g != null && (_ = g), 4 & p.__u ? (c = A(p, c, e), f.__e && (f.__e = null)) : typeof p.type == "function" && v !== void 0 ? c = v : g && (c = g.nextSibling), p.__u &= -7);
|
|
69
69
|
return n.__e = _, c;
|
|
70
70
|
}
|
|
71
|
-
function
|
|
71
|
+
function k(e, t, n, r, i) {
|
|
72
72
|
var a, o, s, c, l, u = n.length, d = u, f = 0;
|
|
73
|
-
for (e.__k = Array(i), a = 0; a < i; a++) (o = t[a]) != null && typeof o != "boolean" && typeof o != "function" ? (typeof o == "string" || typeof o == "number" || typeof o == "bigint" || o.constructor == String ? o = e.__k[a] = x(null, o, null, null, null) : _(o) ? o = e.__k[a] = x(S, { children: o }, null, null, null) : o.constructor === void 0 && o.__b > 0 ? o = e.__k[a] = x(o.type, o.props, o.key, o.ref ? o.ref : null, o.__v) : e.__k[a] = o, c = a + f, o.__ = e, o.__b = e.__b + 1, s = null, (l = o.__i =
|
|
73
|
+
for (e.__k = Array(i), a = 0; a < i; a++) (o = t[a]) != null && typeof o != "boolean" && typeof o != "function" ? (typeof o == "string" || typeof o == "number" || typeof o == "bigint" || o.constructor == String ? o = e.__k[a] = x(null, o, null, null, null) : _(o) ? o = e.__k[a] = x(S, { children: o }, null, null, null) : o.constructor === void 0 && o.__b > 0 ? o = e.__k[a] = x(o.type, o.props, o.key, o.ref ? o.ref : null, o.__v) : e.__k[a] = o, c = a + f, o.__ = e, o.__b = e.__b + 1, s = null, (l = o.__i = j(o, n, c, d)) != -1 && (d--, (s = n[l]) && (s.__u |= 2)), s == null || s.__v == null ? (l == -1 && (i > u ? f-- : i < u && f++), typeof o.type != "function" && (o.__u |= 4)) : l != c && (l == c - 1 ? f-- : l == c + 1 ? f++ : (l > c ? f-- : f++, o.__u |= 4))) : e.__k[a] = null;
|
|
74
74
|
if (d) for (a = 0; a < u; a++) (s = n[a]) != null && !(2 & s.__u) && (s.__e == r && (r = w(s)), oe(s, s));
|
|
75
75
|
return r;
|
|
76
76
|
}
|
|
77
|
-
function
|
|
77
|
+
function A(e, t, n) {
|
|
78
78
|
var r, i;
|
|
79
79
|
if (typeof e.type == "function") {
|
|
80
|
-
for (r = e.__k, i = 0; r && i < r.length; i++) r[i] && (r[i].__ = e, t =
|
|
80
|
+
for (r = e.__k, i = 0; r && i < r.length; i++) r[i] && (r[i].__ = e, t = A(r[i], t, n));
|
|
81
81
|
return t;
|
|
82
82
|
}
|
|
83
83
|
e.__e != t && (t && e.type && !t.parentNode && (t = w(e)), t = n.insertBefore(e.__e, t || null));
|
|
@@ -86,7 +86,7 @@ function k(e, t, n) {
|
|
|
86
86
|
while (t != null && t.nodeType == 8);
|
|
87
87
|
return t;
|
|
88
88
|
}
|
|
89
|
-
function
|
|
89
|
+
function j(e, t, n, r) {
|
|
90
90
|
var i, a, o, s = e.key, c = e.type, l = t[n], u = l != null && !(2 & l.__u);
|
|
91
91
|
if (l === null && s == null || u && s == l.key && c == l.type) return n;
|
|
92
92
|
if (r > +!!u) {
|
|
@@ -94,16 +94,16 @@ function A(e, t, n, r) {
|
|
|
94
94
|
}
|
|
95
95
|
return -1;
|
|
96
96
|
}
|
|
97
|
-
function
|
|
97
|
+
function M(e, t, n) {
|
|
98
98
|
t[0] == "-" ? e.setProperty(t, n ?? "") : e[t] = n == null ? "" : typeof n != "number" || g.test(t) ? n : n + "px";
|
|
99
99
|
}
|
|
100
|
-
function
|
|
100
|
+
function N(e, t, n, r, i) {
|
|
101
101
|
var a, o;
|
|
102
102
|
n: if (t == "style") {
|
|
103
103
|
if (typeof n == "string") e.style.cssText = n;
|
|
104
104
|
else {
|
|
105
|
-
if (typeof r == "string" && (e.style.cssText = r = ""), r) for (t in r) n && t in n ||
|
|
106
|
-
if (n) for (t in n) r && n[t] == r[t] ||
|
|
105
|
+
if (typeof r == "string" && (e.style.cssText = r = ""), r) for (t in r) n && t in n || M(e.style, t, "");
|
|
106
|
+
if (n) for (t in n) r && n[t] == r[t] || M(e.style, t, n[t]);
|
|
107
107
|
}
|
|
108
108
|
} else if (t[0] == "o" && t[1] == "n") a = t != (t = t.replace(u, "$1")), o = t.toLowerCase(), t = o in e || t == "onFocusOut" || t == "onFocusIn" ? o.slice(2) : t.slice(2), e.l ||= {}, e.l[t + a] = n, n ? r ? n[l] = r[l] : (n[l] = d, e.addEventListener(t, a ? p : f, a)) : e.removeEventListener(t, a ? p : f, a);
|
|
109
109
|
else {
|
|
@@ -115,7 +115,7 @@ function M(e, t, n, r, i) {
|
|
|
115
115
|
typeof n == "function" || (n == null || !1 === n && t[4] != "-" ? e.removeAttribute(t) : e.setAttribute(t, t == "popover" && n == 1 ? "" : n));
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
-
function
|
|
118
|
+
function P(e) {
|
|
119
119
|
return function(n) {
|
|
120
120
|
if (this.l) {
|
|
121
121
|
var r = this.l[n.type + e];
|
|
@@ -125,46 +125,46 @@ function N(e) {
|
|
|
125
125
|
}
|
|
126
126
|
};
|
|
127
127
|
}
|
|
128
|
-
function
|
|
129
|
-
var d, f, p, m, g, b, x,
|
|
128
|
+
function F(e, n, r, i, a, o, s, c, l, u) {
|
|
129
|
+
var d, f, p, m, g, b, x, T, E, D, O, k, A, j, M, N, P = n.type;
|
|
130
130
|
if (n.constructor !== void 0) return null;
|
|
131
131
|
128 & r.__u && (l = !!(32 & r.__u), o = [c = n.__e = r.__e]), (d = t.__b) && d(n);
|
|
132
|
-
n: if (typeof
|
|
132
|
+
n: if (typeof P == "function") {
|
|
133
133
|
f = s.length;
|
|
134
134
|
try {
|
|
135
|
-
if (
|
|
135
|
+
if (E = n.props, D = P.prototype && P.prototype.render, O = (d = P.contextType) && i[d.__c], k = d ? O ? O.props.value : d.__ : i, r.__c ? T = (p = n.__c = r.__c).__ = p.__E : (D ? n.__c = p = new P(E, k) : (n.__c = p = new C(E, k), p.constructor = P, p.render = se), O && O.sub(p), p.state || (p.state = {}), p.__n = i, m = p.__d = !0, p.__h = [], p._sb = []), D && p.__s == null && (p.__s = p.state), D && P.getDerivedStateFromProps != null && (p.__s == p.state && (p.__s = v({}, p.__s)), v(p.__s, P.getDerivedStateFromProps(E, p.__s))), g = p.props, b = p.state, p.__v = n, m) D && P.getDerivedStateFromProps == null && p.componentWillMount != null && p.componentWillMount(), D && p.componentDidMount != null && p.__h.push(p.componentDidMount);
|
|
136
136
|
else {
|
|
137
|
-
if (
|
|
138
|
-
n.__v != r.__v && (p.props =
|
|
137
|
+
if (D && P.getDerivedStateFromProps == null && E !== g && p.componentWillReceiveProps != null && p.componentWillReceiveProps(E, k), n.__v == r.__v || !p.__e && p.shouldComponentUpdate != null && !1 === p.shouldComponentUpdate(E, p.__s, k)) {
|
|
138
|
+
n.__v != r.__v && (p.props = E, p.state = p.__s, p.__d = !1), n.__e = r.__e, n.__k = r.__k, n.__k.some(function(e) {
|
|
139
139
|
e && (e.__ = n);
|
|
140
140
|
}), h.push.apply(p.__h, p._sb), p._sb = [], p.__h.length && s.push(p), c = w(r);
|
|
141
141
|
break n;
|
|
142
142
|
}
|
|
143
|
-
p.componentWillUpdate != null && p.componentWillUpdate(
|
|
143
|
+
p.componentWillUpdate != null && p.componentWillUpdate(E, p.__s, k), D && p.componentDidUpdate != null && p.__h.push(function() {
|
|
144
144
|
p.componentDidUpdate(g, b, x);
|
|
145
145
|
});
|
|
146
146
|
}
|
|
147
|
-
if (p.context =
|
|
147
|
+
if (p.context = k, p.props = E, p.__P = e, p.__e = !1, A = t.__r, j = 0, D) p.state = p.__s, p.__d = !1, A && A(n), d = p.render(p.props, p.state, p.context), h.push.apply(p.__h, p._sb), p._sb = [];
|
|
148
148
|
else do
|
|
149
|
-
p.__d = !1,
|
|
150
|
-
while (p.__d && ++
|
|
151
|
-
p.state = p.__s, p.getChildContext != null && (i = v(v({}, i), p.getChildContext())),
|
|
149
|
+
p.__d = !1, A && A(n), d = p.render(p.props, p.state, p.context), p.state = p.__s;
|
|
150
|
+
while (p.__d && ++j < 25);
|
|
151
|
+
p.state = p.__s, p.getChildContext != null && (i = v(v({}, i), p.getChildContext())), D && !m && p.getSnapshotBeforeUpdate != null && (x = p.getSnapshotBeforeUpdate(g, b)), M = d != null && d.type === S && d.key == null ? re(d.props.children) : d, c = ee(e, _(M) ? M : [M], n, r, i, a, o, s, c, l, u), p.base = n.__e, n.__u &= -161, p.__h.length && s.push(p), T && (p.__E = p.__ = null);
|
|
152
152
|
} catch (e) {
|
|
153
153
|
if (s.length = f, n.__v = null, l || o != null) {
|
|
154
154
|
if (e.then) {
|
|
155
155
|
for (n.__u |= l ? 160 : 128; c && c.nodeType == 8 && c.nextSibling;) c = c.nextSibling;
|
|
156
156
|
o != null && (o[o.indexOf(c)] = null), n.__e = c;
|
|
157
|
-
} else if (o != null) for (
|
|
157
|
+
} else if (o != null) for (N = o.length; N--;) y(o[N]);
|
|
158
158
|
} else n.__e = r.__e;
|
|
159
|
-
n.__k ??= r.__k || [], e.then ||
|
|
159
|
+
n.__k ??= r.__k || [], e.then || te(n), t.__e(e, n, r);
|
|
160
160
|
}
|
|
161
161
|
} else o == null && n.__v == r.__v ? (n.__k = r.__k, n.__e = r.__e) : c = n.__e = ie(r.__e, n, r, i, a, o, s, l, u);
|
|
162
162
|
return (d = t.diffed) && d(n), 128 & n.__u ? void 0 : c;
|
|
163
163
|
}
|
|
164
|
-
function
|
|
165
|
-
e && (e.__c && (e.__c.__e = !0), e.__k && e.__k.some(
|
|
164
|
+
function te(e) {
|
|
165
|
+
e && (e.__c && (e.__c.__e = !0), e.__k && e.__k.some(te));
|
|
166
166
|
}
|
|
167
|
-
function
|
|
167
|
+
function ne(e, n, r) {
|
|
168
168
|
for (var i = 0; i < r.length; i++) ae(r[i], r[++i], r[++i]);
|
|
169
169
|
t.__c && t.__c(n, e), e.some(function(n) {
|
|
170
170
|
try {
|
|
@@ -194,11 +194,11 @@ function ie(n, r, i, a, o, s, c, l, u) {
|
|
|
194
194
|
if (C == null) x === S || l && n.data == S || (n.data = S);
|
|
195
195
|
else {
|
|
196
196
|
if (s = C == "textarea" && S.defaultValue != null ? null : s && e.call(n.childNodes), !l && s != null) for (x = {}, d = 0; d < n.attributes.length; d++) x[(g = n.attributes[d]).name] = g.value;
|
|
197
|
-
for (d in x) g = x[d], d == "dangerouslySetInnerHTML" ? p = g : d == "children" || d in S || d == "value" && "defaultValue" in S || d == "checked" && "defaultChecked" in S ||
|
|
198
|
-
for (d in S) g = S[d], d == "children" ? h = g : d == "dangerouslySetInnerHTML" ? f = g : d == "value" ? v = g : d == "checked" ? b = g : l && typeof g != "function" || x[d] === g ||
|
|
197
|
+
for (d in x) g = x[d], d == "dangerouslySetInnerHTML" ? p = g : d == "children" || d in S || d == "value" && "defaultValue" in S || d == "checked" && "defaultChecked" in S || N(n, d, null, g, o);
|
|
198
|
+
for (d in S) g = S[d], d == "children" ? h = g : d == "dangerouslySetInnerHTML" ? f = g : d == "value" ? v = g : d == "checked" ? b = g : l && typeof g != "function" || x[d] === g || N(n, d, g, x[d], o);
|
|
199
199
|
if (f) l || p && (f.__html == p.__html || f.__html == n.innerHTML) || (n.innerHTML = f.__html), r.__k = [];
|
|
200
|
-
else if (p && (n.innerHTML = ""),
|
|
201
|
-
l && C != "textarea" || (d = "value", C == "progress" && v == null ? n.removeAttribute("value") : v != null && (v !== n[d] || C == "progress" && !v || C == "option" && v != x[d]) &&
|
|
200
|
+
else if (p && (n.innerHTML = ""), ee(r.type == "template" ? n.content : n, _(h) ? h : [h], r, i, a, C == "foreignObject" ? "http://www.w3.org/1999/xhtml" : o, s, c, s ? s[0] : i.__k && w(i, 0), l, u), s != null) for (d = s.length; d--;) y(s[d]);
|
|
201
|
+
l && C != "textarea" || (d = "value", C == "progress" && v == null ? n.removeAttribute("value") : v != null && (v !== n[d] || C == "progress" && !v || C == "option" && v != x[d]) && N(n, d, v, x[d], o), d = "checked", b != null && b != n[d] && N(n, d, b, x[d], o));
|
|
202
202
|
}
|
|
203
203
|
return n;
|
|
204
204
|
}
|
|
@@ -230,7 +230,7 @@ function se(e, t, n) {
|
|
|
230
230
|
}
|
|
231
231
|
function ce(n, r, i) {
|
|
232
232
|
var a, o, s, c;
|
|
233
|
-
r == document && (r = document.documentElement), t.__ && t.__(n, r), o = (a = typeof i == "function") ? null : i && i.__k || r.__k, s = [], c = [],
|
|
233
|
+
r == document && (r = document.documentElement), t.__ && t.__(n, r), o = (a = typeof i == "function") ? null : i && i.__k || r.__k, s = [], c = [], F(r, n = (!a && i || r).__k = b(S, null, [n]), o || m, m, r.namespaceURI, !a && i ? [i] : o ? null : r.firstChild ? e.call(r.childNodes) : null, s, !a && i ? i : o ? o.__e : r.firstChild, a, c), ne(s, n, c), n.props.children = null;
|
|
234
234
|
}
|
|
235
235
|
e = h.slice, t = { __e: function(e, t, n, r) {
|
|
236
236
|
for (var i, a, o; t = t.__;) if ((i = t.__c) && !i.__) try {
|
|
@@ -241,15 +241,15 @@ e = h.slice, t = { __e: function(e, t, n, r) {
|
|
|
241
241
|
throw e;
|
|
242
242
|
} }, n = 0, C.prototype.setState = function(e, t) {
|
|
243
243
|
var n = this.__s != null && this.__s != this.state ? this.__s : this.__s = v({}, this.state);
|
|
244
|
-
typeof e == "function" && (e = e(v({}, n), this.props)), e && v(n, e), e != null && this.__v && (t && this._sb.push(t),
|
|
244
|
+
typeof e == "function" && (e = e(v({}, n), this.props)), e && v(n, e), e != null && this.__v && (t && this._sb.push(t), D(this));
|
|
245
245
|
}, C.prototype.forceUpdate = function(e) {
|
|
246
|
-
this.__v && (this.__e = !0, e && this.__h.push(e),
|
|
246
|
+
this.__v && (this.__e = !0, e && this.__h.push(e), D(this));
|
|
247
247
|
}, C.prototype.render = S, r = [], a = typeof Promise == "function" ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, o = function(e, t) {
|
|
248
248
|
return e.__v.__b - t.__v.__b;
|
|
249
|
-
},
|
|
249
|
+
}, O.__r = 0, s = Math.random().toString(8), c = "__d" + s, l = "__a" + s, u = /(PointerCapture)$|Capture$/i, d = 0, f = P(!1), p = P(!0);
|
|
250
250
|
//#endregion
|
|
251
251
|
//#region src/styles.css?inline
|
|
252
|
-
var le = ":host{--markup-paper:#fdfcfa;--markup-surface:#fff;--markup-surface-2:oklch(98.5% .002 250);--markup-surface-3:oklch(95% .003 250);--markup-hover:oklch(95% .003 250);--markup-ink:#1a1614;--markup-ink-soft:oklch(32% .005 250);--markup-muted:#6b6661;--markup-border:#1a16141a;--markup-border-strong:#1a16142e;--markup-brand:#e35d2a;--markup-brand-hover:#c84d20;--markup-accent-soft:oklch(95% .04 60);--markup-accent-ink:oklch(45% .14 38);--markup-accent-glow:color-mix(in srgb, var(--markup-brand) 28%, transparent);--markup-team:#2a4ac8;--markup-shadow:0 1px 2px #1a16140f, 0 8px 28px #1a16141f;--markup-shadow-toolbar:0 1px 1px #0000000a, 0 4px 10px -2px #0f14281a, 0 18px 36px -12px #0f14282e;--markup-shadow-pop:0 1px 1px #0000000a, 0 8px 24px -6px #0f14281f, 0 28px 60px -18px #0f142838;--markup-overlay-tint:#1a16140a;--markup-danger:#dc2626;--markup-success:oklch(62% .16 150);--markup-radius:6px;--markup-radius-sm:4px;--markup-popover-w:360px;--markup-pin-enter:.18s;--markup-menu-in:.12s;--markup-font:\"Geist Variable\", \"Geist\", ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;--markup-font-mono:\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;all:initial;font-family:var(--markup-font);color:var(--markup-ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}:host([data-theme=dark]){--markup-paper:#1a1614;--markup-surface:oklch(16% .005 250);--markup-surface-2:oklch(20% .005 250);--markup-surface-3:oklch(24% .005 250);--markup-hover:oklch(24% .005 250);--markup-ink:#fdfcfa;--markup-ink-soft:oklch(80% .005 250);--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-accent-soft:color-mix(in srgb, var(--markup-brand) 22%, transparent);--markup-accent-ink:oklch(86% .13 55);--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-shadow-toolbar:0 1px 0 #ffffff0a inset, 0 1px 2px #0006, 0 12px 30px -10px #0000008c, 0 28px 60px -20px #00000080;--markup-shadow-pop:0 1px 0 #ffffff0a inset, 0 8px 24px -6px #00000073, 0 28px 60px -18px #0000008c;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}@media (prefers-color-scheme:dark){:host(:not([data-theme])){--markup-paper:#1a1614;--markup-surface:oklch(16% .005 250);--markup-surface-2:oklch(20% .005 250);--markup-surface-3:oklch(24% .005 250);--markup-hover:oklch(24% .005 250);--markup-ink:#fdfcfa;--markup-ink-soft:oklch(80% .005 250);--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-accent-soft:color-mix(in srgb, var(--markup-brand) 22%, transparent);--markup-accent-ink:oklch(86% .13 55);--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-shadow-toolbar:0 1px 0 #ffffff0a inset, 0 1px 2px #0006, 0 12px 30px -10px #0000008c, 0 28px 60px -20px #00000080;--markup-shadow-pop:0 1px 0 #ffffff0a inset, 0 8px 24px -6px #00000073, 0 28px 60px -18px #0000008c;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}}.markup-sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markup-shadow-root{font-family:var(--markup-font)}.markup-shadow-root *,.markup-shadow-root :before,.markup-shadow-root :after{box-sizing:border-box}:where(.markup-shadow-root button,.markup-shadow-root input,.markup-shadow-root textarea){font:inherit;color:inherit}.markup-eyebrow{font-family:var(--markup-font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--markup-muted);font-size:10px;font-weight:500}.markup-toolbar{z-index:10;background:var(--markup-surface);border:1px solid var(--markup-border);pointer-events:none;height:44px;box-shadow:var(--markup-shadow-toolbar);transform-origin:50% 100%;border-radius:9999px;align-items:center;gap:2px;padding:4px;transition:box-shadow .15s,left .22s cubic-bezier(.2,.7,.2,1),transform .22s cubic-bezier(.2,.7,.2,1);animation:.22s cubic-bezier(.2,.7,.2,1) backwards markup-toolbar-in;display:inline-flex;position:fixed;bottom:22px;left:100%;transform:translate(calc(-100% - 22px))}.markup-toolbar.is-leaving,.markup-toolbar.is-leaving>*{pointer-events:none}.markup-toolbar.is-leaving{animation-name:markup-toolbar-out;animation-duration:var(--markup-toolbar-leave);animation-timing-function:ease-in;animation-fill-mode:forwards}@keyframes markup-toolbar-in{0%{opacity:0;translate:0 10px;scale:.96}to{opacity:1;translate:0;scale:1}}@keyframes markup-toolbar-out{0%{opacity:1;translate:0;scale:1}to{opacity:0;translate:0 6px;scale:.97}}.markup-toolbar>*{pointer-events:auto}.markup-tb-btn{width:36px;height:36px;color:var(--markup-ink-soft);cursor:pointer;touch-action:none;font-family:var(--markup-font);background:0 0;border:1px solid #0000;border-radius:9999px;justify-content:center;align-items:center;gap:6px;padding:0;font-size:13px;font-weight:500;transition:background .12s,color .12s,transform .12s cubic-bezier(.2,.7,.2,1);display:inline-flex;position:relative}.markup-tb-btn:hover{background:var(--markup-hover);color:var(--markup-ink)}.markup-tb-btn:active{transform:scale(.97)}.markup-tb-btn:focus-visible{box-shadow:0 0 0 2px var(--markup-surface), 0 0 0 4px var(--markup-accent-glow);outline:none}.markup-tb-btn[data-on=true]{background:var(--markup-ink);color:var(--markup-paper)}@media (prefers-color-scheme:dark){:host(:not([data-theme])) .markup-tb-btn[data-on=true]{background:var(--markup-surface-3);color:var(--markup-ink)}}:host([data-theme=dark]) .markup-tb-btn[data-on=true]{background:var(--markup-surface-3);color:var(--markup-ink)}.markup-tb-btn[data-armed=true]{background:var(--markup-brand);color:#fff}.markup-tb-btn[data-armed=true]:hover{background:var(--markup-brand-hover);color:#fff}.markup-tb-btn[disabled]{color:color-mix(in srgb, var(--markup-muted) 60%, transparent);cursor:default}.markup-tb-btn[disabled]:hover{color:color-mix(in srgb, var(--markup-muted) 60%, transparent);background:0 0}.markup-tb-btn[data-kind=identity]{gap:6px;width:auto;padding:0 4px}.markup-tb-avatar{background:var(--markup-surface-3);width:28px;height:28px;font-family:var(--markup-font-mono);color:var(--markup-ink);border:1px solid var(--markup-border);border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;font-size:10.5px;font-weight:600;display:inline-flex;overflow:hidden}.markup-tb-avatar.is-anon{color:var(--markup-muted);background:var(--markup-surface-2)}.markup-tb-sep{background:var(--markup-border);flex-shrink:0;width:1px;height:20px;margin:0 4px}.markup-tb-badge{background:var(--markup-brand);color:#fff;min-width:16px;height:16px;font-family:var(--markup-font-mono);box-shadow:0 0 0 2px var(--markup-surface);pointer-events:none;border-radius:9999px;justify-content:center;align-items:center;padding:0 4px;font-size:9.5px;font-weight:600;line-height:1;transition:transform .15s cubic-bezier(.2,.7,.2,1),opacity .15s cubic-bezier(.2,.7,.2,1);display:inline-flex;position:absolute;top:0;right:0}.markup-tb-badge[data-unread=false]{opacity:0;transform:scale(.5)}.markup-toolbar-left{left:0;transform:translate(22px)}.markup-toolbar-center{left:50%;transform:translate(-50%)}.markup-toolbar-right{left:100%;transform:translate(calc(-100% - 22px))}.markup-pop{background:var(--markup-surface);border:1px solid var(--markup-border);box-shadow:var(--markup-shadow-pop);color:var(--markup-ink);z-index:11;border-radius:12px;font-size:13px;animation:.14s cubic-bezier(.2,.7,.2,1) markup-pop-in;position:absolute;bottom:calc(100% + 8px);overflow:hidden}.markup-pop[data-pop=overflow]{--markup-view-w:260px;--markup-view-fit:min(var(--markup-view-w), calc(100vw - 24px));width:var(--markup-view-fit);align-items:flex-end;transition:width .16s cubic-bezier(.2,.7,.2,1),height .16s cubic-bezier(.2,.7,.2,1);display:flex}.markup-pop[data-pop=overflow]>*{width:var(--markup-view-fit);flex:none}.markup-pop[data-pop=overflow].is-anchor-right{justify-content:flex-end}.markup-pop[data-pop=overflow].is-anchor-center{justify-content:center}.markup-pop[data-pop=overflow]:focus{outline:none}.markup-pop[data-pop=overflow][data-view=privacy]{--markup-view-w:340px}.markup-pop[data-pop=overflow][data-view=shortcuts]{--markup-view-w:320px}.markup-menu-view{padding:6px;display:block}.markup-pop[data-pop=identity]{width:240px;padding:6px}.markup-pop[data-pop=inbox]{width:var(--markup-popover-w);padding:0}.markup-pop.is-anchor-right{right:0}.markup-pop.is-anchor-left{left:0}.markup-pop.is-anchor-center{left:50%;transform:translate(-50%)}@keyframes markup-pop-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.markup-pop.is-anchor-center{animation-name:markup-pop-in-center}@keyframes markup-pop-in-center{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.markup-pop.is-leaving{pointer-events:none;animation-name:markup-pop-out;animation-duration:var(--markup-pop-leave);animation-timing-function:ease-in;animation-fill-mode:forwards}.markup-pop.is-anchor-center.is-leaving{animation-name:markup-pop-out-center}@keyframes markup-pop-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(6px)}}@keyframes markup-pop-out-center{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,6px)}}.markup-pop-group-label{font-family:var(--markup-font-mono);letter-spacing:.06em;color:var(--markup-muted);text-transform:lowercase;padding:8px 10px 4px;font-size:10px}.markup-segmented-row{border-radius:6px;align-items:center;gap:10px;padding:7px 8px;display:flex}.markup-segmented-row .lbl{min-width:0;color:var(--markup-ink);flex:1;font-size:13px}.markup-segmented{background:var(--markup-surface-3);border-radius:7px;gap:2px;padding:2px;display:inline-flex}.markup-segmented button{font:inherit;width:28px;height:24px;color:var(--markup-muted);cursor:pointer;background:0 0;border:none;border-radius:5px;justify-content:center;align-items:center;padding:0;transition:background .1s,color .1s;display:inline-flex}.markup-segmented button:hover{color:var(--markup-ink)}.markup-segmented button.is-on{background:var(--markup-surface);color:var(--markup-ink);box-shadow:0 1px 2px #0000000d}.markup-menu-row{cursor:pointer;width:100%;color:inherit;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:7px 8px;font-family:inherit;font-size:13px;display:flex}.markup-menu-row.no-underline{text-decoration:none}.markup-menu-row:hover{background:var(--markup-hover)}.markup-menu-row:disabled{opacity:.5;cursor:default}.markup-menu-row:disabled:hover{background:0 0}.markup-menu-row .ic{width:16px;height:16px;color:var(--markup-muted);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.markup-menu-row .lbl{flex-direction:column;flex:1;min-width:0;display:flex}.markup-menu-row .lbl .sub{color:var(--markup-muted);margin-top:1px;font-size:11px}.markup-menu-row .right{font-family:var(--markup-font-mono);color:var(--markup-muted);align-items:center;margin-left:auto;font-size:10.5px;display:inline-flex}.markup-menu-row.is-danger,.markup-menu-row.is-danger .ic{color:var(--markup-danger)}.markup-menu-row.is-danger:hover{background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-menu-row .switch{background:var(--markup-border-strong);border-radius:9999px;flex-shrink:0;width:26px;height:16px;transition:background .12s;position:relative}.markup-menu-row .switch:after{content:\"\";background:var(--markup-surface);border-radius:9999px;width:12px;height:12px;transition:left .12s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000026}.markup-menu-row[data-on=true] .switch{background:var(--markup-brand)}.markup-menu-row[data-on=true] .switch:after{left:12px}.markup-menu-divider{background:var(--markup-border);height:1px;margin:4px 0}.markup-brand-line{font-family:var(--markup-font-mono);color:var(--markup-muted);border-top:1px solid var(--markup-border);align-items:center;gap:10px;margin-top:6px;padding:14px 10px 8px;font-size:11px;text-decoration:none;display:flex}.markup-brand-line:hover{color:var(--markup-ink)}.markup-brand-line svg{color:var(--markup-brand)}.markup-brand-line .ver{margin-left:auto}.markup-id-who{border-bottom:1px solid var(--markup-border);flex-direction:column;gap:2px;margin-bottom:4px;padding:10px 8px 12px;display:flex}.markup-id-who .nm{color:var(--markup-ink);font-size:13.5px;font-weight:600}.markup-id-who .em{font-family:var(--markup-font-mono);color:var(--markup-muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.markup-id-anon{text-align:left;flex-direction:column;gap:10px;padding:14px 10px;display:flex}.markup-id-anon .h{letter-spacing:-.005em;color:var(--markup-ink);font-size:14px;font-weight:600}.markup-id-anon .sub{color:var(--markup-muted);font-size:12.5px;line-height:18px}.markup-id-anon button:not(.markup-menu-row){background:var(--markup-ink);width:100%;color:var(--markup-paper);height:32px;font:inherit;cursor:pointer;border:none;border-radius:7px;justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:500;display:inline-flex}.markup-id-anon button:disabled{opacity:.7;cursor:default}.markup-id-anon button:not(.markup-menu-row):hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 88%, var(--markup-surface))}.markup-hud-hidden-toast{z-index:10;background:var(--markup-ink);color:var(--markup-paper);letter-spacing:-.01em;box-shadow:var(--markup-shadow);pointer-events:none;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:12px;font-weight:500;animation:.22s ease-out markup-hud-hidden-in;display:inline-flex;position:fixed;bottom:24px}.markup-hud-hidden-toast.is-leaving{animation-name:markup-hud-hidden-out;animation-duration:var(--markup-toast-leave);animation-timing-function:ease-in;animation-fill-mode:forwards}.markup-hud-hidden-toast-right{right:24px}.markup-hud-hidden-toast-left{left:24px}.markup-hud-hidden-toast-center{width:max-content;margin-inline:auto;left:0;right:0}.markup-kbd{background:color-mix(in srgb, var(--markup-paper) 14%, transparent);min-width:18px;height:18px;color:var(--markup-paper);font-family:var(--markup-font);border-radius:4px;justify-content:center;align-items:center;padding:0 5px;font-size:10px;font-weight:600;line-height:1;display:inline-flex}.markup-kbd.is-inline{background:color-mix(in srgb, var(--markup-ink) 8%, transparent);min-width:14px;height:14px;color:var(--markup-muted);border-radius:3px;padding:0 3px;font-size:9.5px}@keyframes markup-hud-hidden-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes markup-hud-hidden-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}.markup-pins-layer{pointer-events:none;position:fixed;inset:0}.markup-pin{border:2px solid var(--markup-paper);background:var(--markup-brand);color:#fff;width:28px;height:28px;font-family:var(--markup-font-mono);cursor:pointer;pointer-events:auto;opacity:var(--markup-pin-opacity,1);transform-origin:0 100%;box-shadow:0 4px 14px -4px #00000059, 0 0 0 1px color-mix(in srgb, var(--markup-brand) 50%, transparent);border-radius:999px 999px 999px 4px;justify-content:center;align-items:center;margin:0;padding:0;font-size:11.5px;font-weight:600;line-height:1;transition:background .15s,color .15s,opacity .15s,top .2s,left .2s;display:inline-flex;position:absolute;transform:translate(-50%,-100%)}.markup-pin.is-entering{animation:markup-pin-in var(--markup-pin-enter) cubic-bezier(.2, .7, .2, 1) backwards}.markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 92%, black)}:host([data-theme=dark]) .markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 88%, var(--markup-paper))}@media (prefers-color-scheme:dark){:host(:not([data-theme])) .markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 88%, var(--markup-paper))}}.markup-pin.is-active{background:var(--markup-brand);color:#fff;border-color:var(--markup-paper)}.markup-pin.is-anchor{anchor-name:--markup-active-anchor}.markup-pin.is-leaving{pointer-events:none;animation-name:markup-pin-out;animation-duration:var(--markup-pin-leave);animation-timing-function:ease-in;animation-iteration-count:1;animation-fill-mode:forwards}.markup-pin-ghost.is-leaving{animation-duration:var(--markup-popover-leave)}@keyframes markup-pin-in{0%{opacity:0;transform:translate(-50%,-100%)scale(.5)}to{opacity:var(--markup-pin-opacity,1);transform:translate(-50%,-100%)scale(1)}}@keyframes markup-pin-out{0%{opacity:var(--markup-pin-opacity,1);transform:translate(-50%,-100%)scale(1)}to{opacity:0;transform:translate(-50%,-100%)scale(.7)}}.markup-pin.is-unresolved{--markup-pin-opacity:.6}.markup-pin.is-closed,.markup-pin.is-closed.is-active{background:var(--markup-paper);color:var(--markup-muted);border-color:var(--markup-muted);box-shadow:0 4px 14px -4px #00000040}.markup-pin.is-closed:hover{background:var(--markup-paper);color:var(--markup-ink)}.markup-pin-ghost{background:var(--markup-brand);color:#fff;cursor:default;pointer-events:none;animation:1.2s ease-in-out infinite markup-ghost-pulse}.markup-pin-num{pointer-events:none;justify-content:center;align-items:center;display:inline-flex}.markup-pin-count{background:var(--markup-ink);min-width:16px;height:16px;color:var(--markup-paper);font-family:var(--markup-font-mono);text-align:center;border:2px solid var(--markup-paper);pointer-events:none;border-radius:999px;padding:0 4px;font-size:9.5px;font-weight:600;line-height:12px;position:absolute;top:-6px;right:-8px}@keyframes markup-ghost-pulse{0%,to{box-shadow:0 4px 14px -4px #00000059,0 0 #e35d2a66}50%{box-shadow:0 4px 14px -4px #00000059,0 0 0 10px #e35d2a00}}.markup-placement-overlay{background:var(--markup-overlay-tint);pointer-events:none;z-index:1;animation:.18s ease-out markup-overlay-in;position:fixed;inset:0}.markup-placement-cursor-help{background:var(--markup-ink);color:var(--markup-paper);letter-spacing:-.01em;box-shadow:var(--markup-shadow);pointer-events:none;border-radius:999px;padding:10px 16px;font-size:12px;font-weight:500;animation:.22s ease-out 60ms backwards markup-help-in;position:fixed;top:24px;left:50%;transform:translate(-50%)}@keyframes markup-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes markup-help-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}.markup-popover{width:var(--markup-popover-w);max-width:calc(100vw - 24px);height:auto;max-height:calc(100dvh - 24px);inset:auto;left:var(--markup-pop-x,0);top:var(--markup-pop-y,0);background:var(--markup-paper);color:var(--markup-ink);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius);box-shadow:var(--markup-shadow);pointer-events:auto;flex-direction:column;gap:0;margin:0;padding:0;animation:.16s ease-out markup-popover-in;display:flex;position:fixed;overflow:hidden}@supports (anchor-name:--x){.markup-popover{position-anchor:--markup-active-anchor;left:calc(anchor(right) + 8px);top:calc(anchor(top) - 9px);position-try-fallbacks:flip-block, flip-inline, flip-block flip-inline;position-try-order:most-block-size}.markup-popover.is-floating{left:var(--markup-pop-x,0);top:var(--markup-pop-y,0);position-try-fallbacks:none}}@supports (transition-behavior:allow-discrete) and selector(:popover-open){.markup-popover{opacity:0;transition:opacity var(--markup-popover-leave) ease, transform var(--markup-popover-leave) ease, overlay var(--markup-popover-leave) allow-discrete, display var(--markup-popover-leave) allow-discrete;animation:none;display:none;transform:translateY(-4px)scale(.98)}.markup-popover:popover-open{opacity:1;display:flex;transform:none}@starting-style{.markup-popover:popover-open{opacity:0;transform:translateY(-4px)scale(.98)}}.markup-popover:not(:popover-open){pointer-events:none}}.markup-popover.is-leaving{pointer-events:none}.markup-popover.is-hud-hidden{transition-property:none;display:none}@keyframes markup-popover-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.markup-popover-header{border-bottom:1px solid var(--markup-border);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.markup-popover.is-dragging .markup-popover-header{cursor:grabbing}.markup-popover-header-actions{align-items:center;gap:4px;display:flex}.markup-popover-title{min-width:0;font-family:var(--markup-font-mono);letter-spacing:.02em;color:var(--markup-muted);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-size:11px;line-height:1;overflow:hidden}.markup-thread-menu{display:flex;position:relative}.markup-thread-menu-list{z-index:10;background:var(--markup-paper);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius);min-width:160px;box-shadow:var(--markup-shadow);animation:markup-menu-in var(--markup-menu-in) ease-out;padding:4px;position:absolute;top:calc(100% + 6px);right:0}.markup-thread-menu-item{border-radius:var(--markup-radius-sm);width:100%;color:var(--markup-ink);text-align:left;cursor:pointer;background:0 0;border:none;padding:7px 10px;font-size:13px;transition:background .1s,color .1s;display:block}.markup-thread-menu-item:hover{background:var(--markup-border)}.markup-thread-menu-item.is-danger{color:var(--markup-danger,#dc2626)}.markup-thread-menu-item.is-danger:hover{background:color-mix(in srgb, var(--markup-danger,#dc2626) 10%, transparent)}.markup-thread-menu-item:disabled{opacity:.5;cursor:default}@keyframes markup-menu-in{0%{opacity:0;transform:translate(var(--markup-menu-from-x,0), var(--markup-menu-from-y,-4px))}to{opacity:1;transform:translate(0)}}@keyframes markup-menu-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(var(--markup-menu-from-x,0), var(--markup-menu-from-y,-4px))}}.markup-popover-body{border-top:1px solid var(--markup-border);background:var(--markup-paper);flex-direction:column;gap:6px;padding:10px 12px 8px;display:flex}.markup-popover-header+.markup-popover-body{border-top:none}.markup-popover-byline{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markup-popover-name{color:var(--markup-ink);font-weight:500}.markup-icon-btn{border-radius:var(--markup-radius-sm);width:24px;height:24px;color:var(--markup-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s,transform .12s cubic-bezier(.2,.7,.2,1);display:inline-flex}.markup-icon-btn:hover,.markup-icon-btn.is-open{background:var(--markup-border);color:var(--markup-ink)}.markup-icon-btn:active{transform:scale(.97)}.markup-comments{flex-direction:column;max-height:420px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.markup-comment{border-bottom:1px solid var(--markup-border);grid-template-columns:26px 1fr;align-items:start;gap:0 10px;padding:12px;display:grid}.markup-comment:last-child{border-bottom:none}.markup-comment>:not(.markup-comment-avatar){grid-column:2}.markup-comment.is-new{animation:.2s cubic-bezier(.2,.7,.2,1) markup-comment-in}@keyframes markup-comment-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.markup-comment-avatar{background:var(--markup-border);width:26px;height:26px;color:var(--markup-ink);font-family:var(--markup-font-mono);letter-spacing:.02em;text-transform:uppercase;-webkit-user-select:none;user-select:none;border-radius:999px;grid-area:1/1/span 4;justify-content:center;align-items:center;margin-top:-3px;font-size:10.5px;font-weight:600;display:inline-flex;overflow:hidden}.markup-avatar-initials{text-box-trim:trim-both;text-box-edge:cap alphabetic;line-height:1}.markup-avatar-img{object-fit:cover;width:100%;height:100%;display:block}.markup-comment-avatar[data-tone=\"1\"]{color:oklch(25% .07 230);background:oklch(85% .07 200)}.markup-comment-avatar[data-tone=\"2\"]{color:oklch(30% .1 150);background:oklch(88% .07 130)}.markup-comment-avatar[data-tone=\"3\"]{color:oklch(35% .1 40);background:oklch(90% .05 50)}.markup-comment-avatar[data-tone=\"4\"]{color:oklch(30% .1 320);background:oklch(87% .07 320)}.markup-comment-avatar[data-tone=\"5\"]{color:oklch(32% .09 70);background:oklch(88% .06 80)}.markup-comment-meta{align-items:center;gap:8px;min-width:0;margin-bottom:4px;font-size:13px;display:flex}.markup-comment-author{color:var(--markup-ink);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.markup-comment-badge{background:color-mix(in srgb, var(--markup-team) 12%, transparent);height:14px;color:var(--markup-team);font-family:var(--markup-font-mono);letter-spacing:.12em;text-transform:uppercase;border-radius:999px;align-items:center;padding:0 5px;font-size:9px;font-weight:500;line-height:1;display:inline-flex}.markup-comment-badge.is-agent{background:color-mix(in srgb, var(--markup-brand) 14%, transparent);color:var(--markup-brand);letter-spacing:normal;justify-content:center;width:14px;padding:0}.markup-comment-time{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;white-space:nowrap;flex-shrink:0;font-size:10.5px}.markup-comment-body{color:var(--markup-ink);white-space:pre-wrap;word-break:break-word;margin:0;font-size:13.5px;line-height:19px}.markup-comment-link{color:var(--markup-brand);text-underline-offset:2px;text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--markup-brand) 40%, transparent);text-decoration-color:color-mix(in srgb, var(--markup-brand) 40%, transparent)}.markup-comment-link:hover{-webkit-text-decoration-color:var(--markup-brand);text-decoration-color:var(--markup-brand)}.markup-comment-edited{color:var(--markup-muted);font-family:var(--markup-font-mono);margin-left:2px;font-size:10.5px}.markup-comment-edited:before{content:\" · \"}.markup-thread-actions{align-items:center;gap:4px;display:flex}.markup-comment-meta .markup-reaction-picker-wrap,.markup-thread-actions{margin-left:auto}.markup-comment-meta .markup-reaction-add{width:22px;height:22px;margin-top:-4px;margin-bottom:-4px}.markup-reaction-picker-wrap>.markup-icon-btn,.markup-comment-menu>.markup-icon-btn{margin-top:-4px;margin-bottom:-4px}.markup-comment-menu.is-up .markup-thread-menu-list{--markup-menu-from-y:4px;top:auto;bottom:calc(100% + 6px)}.markup-comment-menu.is-side .markup-thread-menu-list{--markup-menu-from-x:4px;--markup-menu-from-y:0;top:-4px;right:calc(100% + 2px)}.markup-comment{position:relative}.markup-reactions{flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px;display:flex}.markup-reaction-chip{border:1px solid var(--markup-border);background:var(--markup-surface-3);color:var(--markup-ink);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 7px;font-size:11.5px;line-height:1.2;transition:background .12s,border-color .12s;display:inline-flex}.markup-reaction-chip:hover:not(:disabled){background:var(--markup-hover)}.markup-reaction-chip.is-mine{background:var(--markup-accent-soft);border-color:color-mix(in srgb, var(--markup-brand) 50%, transparent);color:var(--markup-accent-ink)}.markup-reaction-chip.is-mine:hover:not(:disabled){background:color-mix(in srgb, var(--markup-brand) 18%, transparent)}.markup-reaction-chip:disabled{cursor:default;opacity:.6}.markup-reaction-emoji{font-size:13px;line-height:1}.markup-reaction-count{font-family:var(--markup-font-mono);letter-spacing:.04em;color:var(--markup-muted);font-size:10.5px}.markup-reaction-chip.is-mine .markup-reaction-count{color:var(--markup-accent-ink)}.markup-reaction-picker-wrap{opacity:0;flex:none;transition:opacity .12s;display:inline-flex;position:relative}.markup-comment:hover .markup-reaction-picker-wrap,.markup-comment:focus-within .markup-reaction-picker-wrap,.markup-reaction-picker-wrap.is-open{opacity:1}.markup-reaction-add{width:22px;height:22px;color:var(--markup-muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:13px;line-height:1;transition:background .12s,color .12s;display:inline-flex}.markup-reaction-add:hover,.markup-reaction-add.is-open{background:var(--markup-hover);color:var(--markup-ink)}.markup-reaction-picker{z-index:1;border:1px solid var(--markup-border-strong);background:var(--markup-paper);animation:markup-menu-in var(--markup-menu-in) ease;border-radius:8px;gap:2px;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 1px 2px #1a16140f,0 8px 28px #1a16141a}.markup-reaction-picker-wrap.is-up .markup-reaction-picker{--markup-menu-from-y:4px;top:auto;bottom:calc(100% + 6px)}.markup-reaction-picker-wrap.is-side .markup-reaction-picker{--markup-menu-from-x:4px;--markup-menu-from-y:0;top:-4px;right:calc(100% + 2px)}.markup-reaction-picker-item{cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:16px;line-height:1;transition:background .12s;display:inline-flex}.markup-reaction-picker-item:hover{background:color-mix(in srgb, var(--markup-ink) 8%, transparent)}.markup-reaction-picker-item.is-mine{background:color-mix(in srgb, var(--markup-brand) 14%, transparent)}.markup-comment-edit-form{flex-direction:column;gap:6px;display:flex}.markup-comment-edit-actions{justify-content:flex-end;gap:6px;display:flex}.markup-composer{flex-direction:column;display:flex;position:relative}.markup-composer-input{width:100%;min-height:38px;max-height:120px;color:var(--markup-ink);font-family:var(--markup-font);background:0 0;border:none;border-radius:0;padding:2px 0;font-size:13.5px;line-height:19px;transition:none;overflow-y:auto}.markup-composer-input:focus-visible{box-shadow:none;outline:none}.markup-composer-footer-wrap{grid-template-rows:0fr;transition:grid-template-rows .15s;display:grid}.markup-composer.is-filled .markup-composer-footer-wrap{grid-template-rows:1fr}.markup-composer-footer{opacity:0;background:0 0;border:none;border-radius:0;justify-content:space-between;align-items:center;gap:8px;padding:0;transition:opacity .1s;display:flex;overflow:hidden}.markup-composer.is-filled .markup-composer-footer{opacity:1;transition-delay:60ms}.markup-composer-hint{font-family:var(--markup-font-mono);letter-spacing:.04em;color:var(--markup-muted);align-items:center;gap:3px;font-size:10.5px;display:inline-flex}.markup-composer-hint-label{margin-left:2px}.markup-composer-error{color:var(--markup-brand)}.markup-composer-actions{align-items:center;gap:6px;display:flex}.markup-composer .markup-btn-primary{background:var(--markup-ink);height:26px;color:var(--markup-paper);border-radius:6px;padding:0 10px}.markup-composer .markup-btn-primary:hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 88%, var(--markup-paper))}.markup-composer-actions-empty{transition:opacity .12s;position:absolute;bottom:0;right:0}.markup-composer.is-filled .markup-composer-actions-empty{opacity:0;pointer-events:none}.markup-author-prompt{flex-direction:column;gap:10px;padding:12px;display:flex}.markup-author-status{color:var(--markup-muted);margin:0;font-size:12px}.markup-author-copy{color:var(--markup-fg);margin:0;font-size:13px;line-height:1.5}.markup-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;height:36px;color:var(--markup-ink);outline:none;padding:0 10px;font-size:14px;transition:border-color .12s,box-shadow .12s}.markup-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-btn{border-radius:var(--markup-radius-sm);height:30px;color:var(--markup-ink);cursor:pointer;letter-spacing:-.01em;white-space:nowrap;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:500;transition:background .12s,border-color .12s,color .12s,opacity .12s,transform .12s cubic-bezier(.2,.7,.2,1);display:inline-flex}.markup-btn:disabled{opacity:.5;cursor:not-allowed}.markup-btn:active:not(:disabled){transform:scale(.97)}.markup-btn-primary{background:var(--markup-ink);color:var(--markup-paper)}.markup-btn-primary:hover:not(:disabled){background:var(--markup-brand)}.markup-btn-ghost{color:var(--markup-muted)}.markup-btn-ghost:hover:not(:disabled){background:var(--markup-border);color:var(--markup-ink)}.markup-btn-danger{color:var(--markup-danger)}.markup-btn-danger:hover:not(:disabled){background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-discard-confirm{background:color-mix(in srgb, var(--markup-paper) 92%, transparent);-webkit-backdrop-filter:blur(6px);animation:markup-menu-in var(--markup-menu-in) ease-out;flex-direction:column;justify-content:center;gap:4px;padding:16px;display:flex;position:absolute;inset:0}.markup-thread-menu-list.is-leaving,.markup-reaction-picker.is-leaving,.markup-discard-confirm.is-leaving{pointer-events:none;animation-name:markup-menu-out;animation-duration:var(--markup-menu-leave);animation-timing-function:ease-in;animation-fill-mode:forwards}.markup-discard-confirm-title{color:var(--markup-ink);margin:0;font-size:13px;font-weight:600}.markup-discard-confirm-desc{color:var(--markup-muted);margin:0;font-size:12px}.markup-discard-confirm-actions{gap:6px;margin-top:10px;display:flex}.markup-screenshot-row{border:1px dashed var(--markup-border-strong);color:var(--markup-muted);border-radius:6px;flex-direction:column;gap:8px;margin-top:0;padding:6px 8px;font-size:11.5px;display:flex}.markup-screenshot-row.is-attached{border-style:solid;border-color:var(--markup-border);padding:8px}.markup-screenshot-row-head{justify-content:space-between;align-items:center;gap:8px;min-height:16px;display:flex}.markup-screenshot-status{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;display:flex}.markup-screenshot-row.is-failed{opacity:.85;border-style:dotted}.markup-screenshot-toggle{cursor:pointer;color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;transition:color .12s;display:flex}.markup-screenshot-toggle:hover{color:var(--markup-ink)}.markup-screenshot-checkbox{width:12px;height:12px;accent-color:var(--markup-brand);cursor:pointer;margin:0}.markup-screenshot-thumb-link{border:1px solid var(--markup-border-strong);cursor:zoom-in;background:0 0;border-radius:3px;margin:-4px auto -4px -4px;padding:0;transition:border-color .12s;display:block;overflow:hidden}.markup-screenshot-thumb-link:hover,.markup-screenshot-thumb-link:focus-visible{border-color:var(--markup-brand)}.markup-screenshot-thumb{object-fit:cover;object-position:top;width:auto;height:22px;display:block}.markup-screenshot-redacted-chip{background:color-mix(in srgb, var(--markup-success,oklch(62% .16 150)) 16%, transparent);color:var(--markup-success,oklch(62% .16 150));font-family:var(--markup-font-mono);white-space:nowrap;cursor:pointer;border:none;border-radius:999px;align-items:center;gap:3px;padding:1px 7px;font-size:10px;display:inline-flex}.markup-screenshot-redacted-chip:hover{filter:brightness(1.05)}.markup-screenshot-redacted-arrow{font-style:normal}.markup-screenshot-redacted-list{flex-direction:column;gap:2px;display:flex}.markup-screenshot-redacted-selector{font-family:var(--markup-font-mono);color:var(--markup-muted);font-size:9px;display:block}.markup-screenshot-help{font-family:var(--markup-font-mono);color:var(--markup-muted);margin:0;font-size:10px;line-height:1.5}.markup-screenshot-help-link{color:var(--markup-ink);text-underline-offset:2px;text-decoration:underline}.markup-screenshot-help-link:hover{color:var(--markup-brand)}.markup-comment-screenshot{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);cursor:pointer;background:0 0;margin-top:8px;padding:0;transition:border-color .12s,opacity .12s;display:block;overflow:hidden}.markup-comment-screenshot:hover{border-color:var(--markup-brand);opacity:.9}.markup-comment-screenshot img{object-fit:cover;object-position:top;width:100%;height:auto;max-height:120px;display:block}.markup-lightbox{background:#1a1614e0;border:none;width:100%;max-width:100%;height:100%;max-height:100%;margin:0;padding:24px;position:fixed;inset:0}.markup-lightbox[open]{justify-content:center;align-items:center;display:flex}@supports (transition-behavior:allow-discrete){.markup-lightbox{opacity:0;transition:opacity var(--markup-lightbox-leave) ease, overlay var(--markup-lightbox-leave) allow-discrete, display var(--markup-lightbox-leave) allow-discrete}.markup-lightbox[open]{opacity:1}@starting-style{.markup-lightbox[open]{opacity:0}}}.markup-lightbox::backdrop{display:none}.markup-lightbox-img{border-radius:var(--markup-radius);object-fit:contain;max-width:100%;max-height:100%;box-shadow:var(--markup-shadow);animation:.16s ease-out markup-lightbox-in}.markup-lightbox-close{color:#fdfcfa;background:#1a161499;position:absolute;top:16px;right:16px}.markup-lightbox-close:hover{color:#fdfcfa;background:#1a1614d9}@keyframes markup-lightbox-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.markup-toolbar,.markup-toolbar.is-leaving,.markup-hud-hidden-toast,.markup-hud-hidden-toast.is-leaving,.markup-tb-btn,.markup-tb-badge,.markup-comment,.markup-pin,.markup-pin.is-entering,.markup-pin.is-leaving,.markup-pop,.markup-pop.is-leaving,.markup-pop[data-pop=overflow],.markup-pop.is-anchor-center,.markup-pop.is-anchor-center.is-leaving,.markup-thread-menu-list,.markup-thread-menu-list.is-leaving,.markup-reaction-picker,.markup-reaction-picker.is-leaving,.markup-discard-confirm,.markup-discard-confirm.is-leaving,.markup-icon-btn,.markup-btn,.markup-popover,.markup-pin-ghost,.markup-placement-overlay,.markup-placement-cursor-help,.markup-lightbox,.markup-lightbox-img{transition:none;animation:none}}.markup-mention-chip{background:var(--markup-accent-soft);color:var(--markup-accent-ink);border-radius:3px;padding:0 2px;font-weight:500;display:inline-block}.markup-mention-input{white-space:pre-wrap;overflow-wrap:anywhere;cursor:text;outline:none;position:relative}.markup-mention-input[aria-disabled=true]{opacity:.6;cursor:default}.markup-mention-input[data-empty]:before{content:attr(data-placeholder);color:var(--markup-muted);pointer-events:none;position:absolute;inset:0 auto auto 0}.markup-mention-input .markup-mention-chip{white-space:nowrap;padding:0 3px}.markup-comment-edit-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;min-height:58px;max-height:200px;color:var(--markup-ink);font:inherit;padding:8px 10px;font-size:13px;line-height:1.5;overflow-y:auto}.markup-comment-edit-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-comment-edit-input[data-empty]:before{inset:8px auto auto 10px}.markup-mention-picker{z-index:10;box-sizing:border-box;background:var(--markup-paper);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);max-height:180px;box-shadow:var(--markup-shadow);margin:0;padding:4px;list-style:none;position:fixed;overflow-y:auto}.markup-mention-picker-item{border-radius:var(--markup-radius-sm);cursor:pointer;color:var(--markup-ink);justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.markup-mention-picker-item.is-active{background:color-mix(in srgb, var(--markup-brand) 12%, transparent)}.markup-mention-picker-name{font-weight:500}.markup-mention-picker-trigger{color:var(--markup-muted);font-family:var(--markup-font-mono);font-size:10px}.markup-notifications-panel{max-height:min(60vh,420px);color:var(--markup-ink);flex-direction:column;display:flex}.markup-notifications-panel-header{border-bottom:1px solid var(--markup-border);align-items:center;gap:8px;padding:8px 10px;display:flex}.markup-notifications-panel-header .markup-eyebrow{flex:1}.markup-notifications-panel-actions{align-items:center;gap:8px;display:flex}.markup-notifications-panel-mark-all{color:var(--markup-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:11px}.markup-notifications-panel-mark-all:hover{color:var(--markup-ink)}.markup-notifications-panel-body{flex:1;overflow-y:auto}.markup-notifications-panel-empty,.markup-notifications-panel-error{text-align:center;color:var(--markup-muted);padding:24px 12px;font-size:12px}.markup-notifications-panel-empty-title{color:var(--markup-ink);margin:0 0 4px;font-weight:500}.markup-notifications-panel-empty-sub{color:var(--markup-muted);margin:0;line-height:1.4}.markup-notifications-panel-error{color:var(--markup-danger,#b91c1c)}.markup-notifications-panel-list{margin:0;padding:4px;list-style:none}.markup-notifications-panel-row{border-radius:var(--markup-radius-sm);text-align:start;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:none;flex-direction:column;gap:4px;padding:8px 10px;display:flex}.markup-notifications-panel-row:hover{background:color-mix(in srgb, var(--markup-brand) 8%, transparent)}.markup-notifications-panel-row.is-unread{background:color-mix(in srgb, var(--markup-brand) 5%, transparent)}.markup-notifications-panel-meta{align-items:center;gap:6px;font-size:11px;display:flex}.markup-notifications-panel-dot{background:var(--markup-brand);border-radius:999px;flex-shrink:0;width:6px;height:6px}.markup-notifications-panel-actor{font-weight:600}.markup-notifications-panel-sep{color:var(--markup-muted)}.markup-notifications-panel-time{color:var(--markup-muted);font-family:var(--markup-font-mono);font-size:10px}.markup-notifications-panel-thread{color:var(--markup-muted);margin:0;font-size:12px}.markup-notifications-panel-thread-title{color:var(--markup-ink)}.markup-notifications-panel-excerpt{color:color-mix(in srgb, var(--markup-ink) 80%, transparent);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;font-style:italic;display:-webkit-box;overflow:hidden}.markup-panel-pop{z-index:11;pointer-events:auto;width:var(--markup-popover-w);max-width:calc(100vw - 24px);position:fixed;bottom:76px}.markup-panel-pop-right{right:22px}.markup-panel-pop-left{left:22px}.markup-panel-pop-center{left:50%;transform:translate(-50%)}.markup-panel-pop .markup-pop{width:100%;position:static}.markup-panel-pop .markup-notifications-panel{max-height:min(60vh,480px)}.markup-panel-pop .markup-notifications-panel-header{padding:12px 14px}.markup-panel-pop .markup-notifications-panel-header .markup-icon-btn{display:none}.markup-panel{max-height:min(70vh,520px);color:var(--markup-ink);flex-direction:column;display:flex}.markup-panel-header{border-bottom:1px solid var(--markup-border);align-items:center;gap:8px;padding:12px 14px;display:flex}.markup-panel-header .markup-eyebrow{flex:1}.markup-panel-back{color:var(--markup-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;align-items:center;gap:2px;margin-left:-4px;padding:3px 6px 3px 4px;font-family:inherit;font-size:12px;display:inline-flex}.markup-panel-back:hover{background:var(--markup-hover);color:var(--markup-ink)}.markup-panel-body{flex:1;padding:4px 14px 14px;overflow-y:auto}.markup-panel-body:focus{outline:none}.markup-panel-body:focus-visible{box-shadow:inset 0 0 0 2px var(--markup-accent-glow);outline:none}.markup-panel-section{border-bottom:1px solid var(--markup-border);padding:10px 0}.markup-panel-section:last-child{border-bottom:none;padding-bottom:2px}.markup-panel-section-title{font-family:var(--markup-font-mono);letter-spacing:.06em;text-transform:lowercase;color:var(--markup-muted);margin:0 0 6px;font-size:10px;font-weight:400}.markup-panel-text{color:var(--markup-ink-soft);margin:0;font-size:12.5px;line-height:1.5}.markup-panel-text strong{color:var(--markup-ink);font-weight:600}.markup-panel-mono{font-family:var(--markup-font-mono);color:var(--markup-ink);word-break:break-all;font-size:11.5px}.markup-panel-list{color:var(--markup-ink-soft);margin:0;padding-left:16px;font-size:12.5px;line-height:1.5}.markup-panel-list li{margin-bottom:3px}.markup-panel-list li::marker{color:var(--markup-muted)}.markup-panel-note{color:var(--markup-muted);margin:8px 0 0;font-size:11.5px;line-height:1.45}.markup-panel-error{color:var(--markup-danger);margin:8px 0 0;font-size:11.5px;line-height:1.45}.markup-panel-action{border:1px solid var(--markup-border-strong);width:100%;height:30px;color:var(--markup-ink);font:inherit;cursor:pointer;background:0 0;border-radius:7px;margin-top:10px;padding:0 10px;font-size:12.5px;transition:background .12s,border-color .12s,color .12s}.markup-panel-action:hover:not(:disabled){background:var(--markup-hover)}.markup-panel-action:disabled{opacity:.6;cursor:default}.markup-panel-action.is-danger{border-color:color-mix(in srgb, var(--markup-danger) 45%, transparent);color:var(--markup-danger)}.markup-panel-action.is-danger:hover:not(:disabled){background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-shortcut-list{margin:0;padding:0;list-style:none}.markup-shortcut-row{align-items:center;gap:10px;min-height:24px;padding:2px 0;display:flex}.markup-shortcut-label{min-width:0;color:var(--markup-ink-soft);flex:1;font-size:12.5px;line-height:1.4}.markup-shortcut-keys{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.markup-shortcut-chord{align-items:center;gap:3px;display:inline-flex}.markup-shortcut-or{color:var(--markup-muted);margin-right:1px;font-size:10px}", ue = 1e4, de = 20, fe = 60, pe = null, me = [], he = null, ge = !1, _e = ve();
|
|
252
|
+
var le = ":host{--markup-paper:#fdfcfa;--markup-surface:#fff;--markup-surface-2:oklch(98.5% .002 250);--markup-surface-3:oklch(95% .003 250);--markup-hover:oklch(95% .003 250);--markup-ink:#1a1614;--markup-ink-soft:oklch(32% .005 250);--markup-muted:#6b6661;--markup-border:#1a16141a;--markup-border-strong:#1a16142e;--markup-brand:#e35d2a;--markup-brand-hover:#c84d20;--markup-accent-soft:oklch(95% .04 60);--markup-accent-ink:oklch(45% .14 38);--markup-brand-fill:var(--markup-brand-hover);--markup-accent-glow:color-mix(in srgb, var(--markup-brand) 28%, transparent);--markup-team:#2a4ac8;--markup-shadow:0 1px 2px #1a16140f, 0 8px 28px #1a16141f;--markup-shadow-toolbar:0 1px 1px #0000000a, 0 4px 10px -2px #0f14281a, 0 18px 36px -12px #0f14282e;--markup-shadow-pop:0 1px 1px #0000000a, 0 8px 24px -6px #0f14281f, 0 28px 60px -18px #0f142838;--markup-overlay-tint:#1a16140a;--markup-danger:#b91c1c;--markup-success:oklch(62% .16 150);--markup-success-ink:oklch(45% .13 150);--markup-radius:6px;--markup-radius-sm:4px;--markup-popover-w:360px;--markup-pin-enter:.18s;--markup-menu-in:.12s;--markup-font:\"Geist Variable\", \"Geist\", ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;--markup-font-mono:\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;all:initial;font-family:var(--markup-font);color:var(--markup-ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}:host([data-theme=dark]){--markup-paper:#1a1614;--markup-surface:oklch(16% .005 250);--markup-surface-2:oklch(20% .005 250);--markup-surface-3:oklch(24% .005 250);--markup-hover:oklch(24% .005 250);--markup-ink:#fdfcfa;--markup-ink-soft:oklch(80% .005 250);--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-accent-soft:color-mix(in srgb, var(--markup-brand) 22%, transparent);--markup-accent-ink:oklch(86% .13 55);--markup-brand-fill:var(--markup-brand);--markup-success-ink:oklch(80% .15 150);--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-shadow-toolbar:0 1px 0 #ffffff0a inset, 0 1px 2px #0006, 0 12px 30px -10px #0000008c, 0 28px 60px -20px #00000080;--markup-shadow-pop:0 1px 0 #ffffff0a inset, 0 8px 24px -6px #00000073, 0 28px 60px -18px #0000008c;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}@media (prefers-color-scheme:dark){:host(:not([data-theme])){--markup-paper:#1a1614;--markup-surface:oklch(16% .005 250);--markup-surface-2:oklch(20% .005 250);--markup-surface-3:oklch(24% .005 250);--markup-hover:oklch(24% .005 250);--markup-ink:#fdfcfa;--markup-ink-soft:oklch(80% .005 250);--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-accent-soft:color-mix(in srgb, var(--markup-brand) 22%, transparent);--markup-accent-ink:oklch(86% .13 55);--markup-brand-fill:var(--markup-brand);--markup-success-ink:oklch(80% .15 150);--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-shadow-toolbar:0 1px 0 #ffffff0a inset, 0 1px 2px #0006, 0 12px 30px -10px #0000008c, 0 28px 60px -20px #00000080;--markup-shadow-pop:0 1px 0 #ffffff0a inset, 0 8px 24px -6px #00000073, 0 28px 60px -18px #0000008c;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}}.markup-sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markup-shadow-root{font-family:var(--markup-font)}.markup-shadow-root *,.markup-shadow-root :before,.markup-shadow-root :after{box-sizing:border-box}:where(.markup-shadow-root button,.markup-shadow-root input,.markup-shadow-root textarea){font:inherit;color:inherit}.markup-eyebrow{font-family:var(--markup-font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--markup-muted);font-size:10px;font-weight:500}.markup-toolbar{z-index:10;background:var(--markup-surface);border:1px solid var(--markup-border);pointer-events:none;height:44px;box-shadow:var(--markup-shadow-toolbar);transform-origin:50% 100%;border-radius:9999px;align-items:center;gap:2px;padding:4px;transition:box-shadow .15s,left .22s cubic-bezier(.2,.7,.2,1),transform .22s cubic-bezier(.2,.7,.2,1);animation:.22s cubic-bezier(.2,.7,.2,1) backwards markup-toolbar-in;display:inline-flex;position:fixed;bottom:22px;left:100%;transform:translate(calc(-100% - 22px))}.markup-toolbar.is-leaving,.markup-toolbar.is-leaving>*{pointer-events:none}.markup-toolbar.is-leaving{animation-name:markup-toolbar-out;animation-duration:var(--markup-toolbar-leave);animation-timing-function:ease-in;animation-fill-mode:forwards}@keyframes markup-toolbar-in{0%{opacity:0;translate:0 10px;scale:.96}to{opacity:1;translate:0;scale:1}}@keyframes markup-toolbar-out{0%{opacity:1;translate:0;scale:1}to{opacity:0;translate:0 6px;scale:.97}}.markup-toolbar>*{pointer-events:auto}.markup-tb-btn{width:36px;height:36px;color:var(--markup-ink-soft);cursor:pointer;touch-action:none;font-family:var(--markup-font);background:0 0;border:1px solid #0000;border-radius:9999px;justify-content:center;align-items:center;gap:6px;padding:0;font-size:13px;font-weight:500;transition:background .12s,color .12s,transform .12s cubic-bezier(.2,.7,.2,1);display:inline-flex;position:relative}.markup-tb-btn:hover{background:var(--markup-hover);color:var(--markup-ink)}.markup-tb-btn:active{transform:scale(.97)}.markup-tb-btn:focus-visible{box-shadow:0 0 0 2px var(--markup-surface), 0 0 0 4px var(--markup-brand);outline:none}.markup-tb-btn[data-on=true]{background:var(--markup-ink);color:var(--markup-paper)}@media (prefers-color-scheme:dark){:host(:not([data-theme])) .markup-tb-btn[data-on=true]{background:var(--markup-surface-3);color:var(--markup-ink)}}:host([data-theme=dark]) .markup-tb-btn[data-on=true]{background:var(--markup-surface-3);color:var(--markup-ink)}.markup-tb-btn[data-armed=true]{background:var(--markup-brand);color:#fff}.markup-tb-btn[data-armed=true]:hover{background:var(--markup-brand-hover);color:#fff}.markup-tb-btn[disabled]{color:color-mix(in srgb, var(--markup-muted) 60%, transparent);cursor:default}.markup-tb-btn[disabled]:hover{color:color-mix(in srgb, var(--markup-muted) 60%, transparent);background:0 0}.markup-tb-btn[data-kind=identity]{gap:6px;width:auto;padding:0 4px}.markup-tb-avatar{background:var(--markup-surface-3);width:28px;height:28px;font-family:var(--markup-font-mono);color:var(--markup-ink);border:1px solid var(--markup-border);border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;font-size:10.5px;font-weight:600;display:inline-flex;overflow:hidden}.markup-tb-avatar.is-anon{color:var(--markup-muted);background:var(--markup-surface-2)}.markup-tb-sep{background:var(--markup-border);flex-shrink:0;width:1px;height:20px;margin:0 4px}.markup-tb-badge{background:var(--markup-brand);color:#fff;min-width:16px;height:16px;font-family:var(--markup-font-mono);box-shadow:0 0 0 2px var(--markup-surface);pointer-events:none;border-radius:9999px;justify-content:center;align-items:center;padding:0 4px;font-size:9.5px;font-weight:600;line-height:1;transition:transform .15s cubic-bezier(.2,.7,.2,1),opacity .15s cubic-bezier(.2,.7,.2,1);display:inline-flex;position:absolute;top:0;right:0}.markup-tb-badge[data-unread=false]{opacity:0;transform:scale(.5)}.markup-toolbar-left{left:0;transform:translate(22px)}.markup-toolbar-center{left:50%;transform:translate(-50%)}.markup-toolbar-right{left:100%;transform:translate(calc(-100% - 22px))}.markup-pop{background:var(--markup-surface);border:1px solid var(--markup-border);box-shadow:var(--markup-shadow-pop);color:var(--markup-ink);z-index:11;border-radius:12px;font-size:13px;animation:.14s cubic-bezier(.2,.7,.2,1) markup-pop-in;position:absolute;bottom:calc(100% + 8px);overflow:hidden}.markup-pop[data-pop=overflow]{--markup-view-w:260px;--markup-view-fit:min(var(--markup-view-w), calc(100vw - 24px));width:var(--markup-view-fit);align-items:flex-end;transition:width .16s cubic-bezier(.2,.7,.2,1),height .16s cubic-bezier(.2,.7,.2,1);display:flex}.markup-pop[data-pop=overflow]>*{width:var(--markup-view-fit);flex:none}.markup-pop[data-pop=overflow].is-anchor-right{justify-content:flex-end}.markup-pop[data-pop=overflow].is-anchor-center{justify-content:center}.markup-pop[data-pop=overflow]:focus{outline:none}.markup-pop[data-pop=overflow][data-view=privacy]{--markup-view-w:340px}.markup-pop[data-pop=overflow][data-view=shortcuts]{--markup-view-w:320px}.markup-menu-view{padding:6px;display:block}.markup-pop[data-pop=identity]{width:240px;padding:6px}.markup-pop[data-pop=inbox]{width:var(--markup-popover-w);padding:0}.markup-pop.is-anchor-right{right:0}.markup-pop.is-anchor-left{left:0}.markup-pop.is-anchor-center{left:50%;transform:translate(-50%)}@keyframes markup-pop-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.markup-pop.is-anchor-center{animation-name:markup-pop-in-center}@keyframes markup-pop-in-center{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.markup-pop.is-leaving{pointer-events:none;animation-name:markup-pop-out;animation-duration:var(--markup-pop-leave);animation-timing-function:ease-in;animation-fill-mode:forwards}.markup-pop.is-anchor-center.is-leaving{animation-name:markup-pop-out-center}@keyframes markup-pop-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(6px)}}@keyframes markup-pop-out-center{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,6px)}}.markup-pop-group-label{font-family:var(--markup-font-mono);letter-spacing:.06em;color:var(--markup-muted);text-transform:lowercase;padding:8px 10px 4px;font-size:10px}.markup-segmented-row{border-radius:6px;align-items:center;gap:10px;padding:7px 8px;display:flex}.markup-segmented-row .lbl{min-width:0;color:var(--markup-ink);flex:1;font-size:13px}.markup-segmented{background:var(--markup-surface-3);border-radius:7px;gap:2px;padding:2px;display:inline-flex}.markup-segmented button{font:inherit;width:28px;height:24px;color:var(--markup-muted);cursor:pointer;background:0 0;border:none;border-radius:5px;justify-content:center;align-items:center;padding:0;transition:background .1s,color .1s;display:inline-flex}.markup-segmented button:hover{color:var(--markup-ink)}.markup-segmented button.is-on{background:var(--markup-surface);color:var(--markup-ink);box-shadow:0 1px 2px #0000000d}.markup-menu-row{cursor:pointer;width:100%;color:inherit;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:7px 8px;font-family:inherit;font-size:13px;display:flex}.markup-menu-row.no-underline{text-decoration:none}.markup-menu-row:hover{background:var(--markup-hover)}.markup-menu-row:disabled{opacity:.5;cursor:default}.markup-menu-row:disabled:hover{background:0 0}.markup-menu-row .ic{width:16px;height:16px;color:var(--markup-muted);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.markup-menu-row .lbl{flex-direction:column;flex:1;min-width:0;display:flex}.markup-menu-row .lbl .sub{color:var(--markup-muted);margin-top:1px;font-size:11px}.markup-menu-row .right{font-family:var(--markup-font-mono);color:var(--markup-muted);align-items:center;margin-left:auto;font-size:10.5px;display:inline-flex}.markup-menu-row.is-danger,.markup-menu-row.is-danger .ic{color:var(--markup-danger)}.markup-menu-row.is-danger:hover{background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-menu-row .switch{background:var(--markup-border-strong);border-radius:9999px;flex-shrink:0;width:26px;height:16px;transition:background .12s;position:relative}.markup-menu-row .switch:after{content:\"\";background:var(--markup-surface);border-radius:9999px;width:12px;height:12px;transition:left .12s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000026}.markup-menu-row[data-on=true] .switch{background:var(--markup-brand)}.markup-menu-row[data-on=true] .switch:after{left:12px}.markup-menu-divider{background:var(--markup-border);height:1px;margin:4px 0}.markup-brand-line{font-family:var(--markup-font-mono);color:var(--markup-muted);border-top:1px solid var(--markup-border);align-items:center;gap:10px;margin-top:6px;padding:14px 10px 8px;font-size:11px;text-decoration:none;display:flex}.markup-brand-line:hover{color:var(--markup-ink)}.markup-brand-line svg{color:var(--markup-brand)}.markup-brand-line .ver{margin-left:auto}.markup-id-who{border-bottom:1px solid var(--markup-border);flex-direction:column;gap:2px;margin-bottom:4px;padding:10px 8px 12px;display:flex}.markup-id-who .nm{color:var(--markup-ink);font-size:13.5px;font-weight:600}.markup-id-who .em{font-family:var(--markup-font-mono);color:var(--markup-muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.markup-id-anon{text-align:left;flex-direction:column;gap:10px;padding:14px 10px;display:flex}.markup-id-anon .h{letter-spacing:-.005em;color:var(--markup-ink);font-size:14px;font-weight:600}.markup-id-anon .sub{color:var(--markup-muted);font-size:12.5px;line-height:18px}.markup-id-anon button:not(.markup-menu-row){background:var(--markup-ink);width:100%;color:var(--markup-paper);height:32px;font:inherit;cursor:pointer;border:none;border-radius:7px;justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:500;display:inline-flex}.markup-id-anon button:disabled{opacity:.7;cursor:default}.markup-id-anon button:not(.markup-menu-row):hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 88%, var(--markup-surface))}.markup-hud-hidden-toast{z-index:10;background:var(--markup-ink);color:var(--markup-paper);letter-spacing:-.01em;box-shadow:var(--markup-shadow);pointer-events:none;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:12px;font-weight:500;animation:.22s ease-out markup-hud-hidden-in;display:inline-flex;position:fixed;bottom:24px}.markup-hud-hidden-toast.is-leaving{animation-name:markup-hud-hidden-out;animation-duration:var(--markup-toast-leave);animation-timing-function:ease-in;animation-fill-mode:forwards}.markup-hud-hidden-toast-right{right:24px}.markup-hud-hidden-toast-left{left:24px}.markup-hud-hidden-toast-center{width:max-content;margin-inline:auto;left:0;right:0}.markup-kbd{background:color-mix(in srgb, var(--markup-paper) 14%, transparent);min-width:18px;height:18px;color:var(--markup-paper);font-family:var(--markup-font);border-radius:4px;justify-content:center;align-items:center;padding:0 5px;font-size:10px;font-weight:600;line-height:1;display:inline-flex}.markup-kbd.is-inline{background:color-mix(in srgb, var(--markup-ink) 8%, transparent);min-width:14px;height:14px;color:var(--markup-muted);border-radius:3px;padding:0 3px;font-size:9.5px}@keyframes markup-hud-hidden-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes markup-hud-hidden-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}.markup-pins-layer{pointer-events:none;position:fixed;inset:0}.markup-pin{border:2px solid var(--markup-paper);background:var(--markup-brand);color:#fff;width:28px;height:28px;font-family:var(--markup-font-mono);cursor:pointer;pointer-events:auto;opacity:var(--markup-pin-opacity,1);transform-origin:0 100%;box-shadow:0 4px 14px -4px #00000059, 0 0 0 1px color-mix(in srgb, var(--markup-brand) 50%, transparent);border-radius:999px 999px 999px 4px;justify-content:center;align-items:center;margin:0;padding:0;font-size:11.5px;font-weight:600;line-height:1;transition:background .15s,color .15s,opacity .15s,top .2s,left .2s;display:inline-flex;position:absolute;transform:translate(-50%,-100%)}.markup-pin.is-entering{animation:markup-pin-in var(--markup-pin-enter) cubic-bezier(.2, .7, .2, 1) backwards}.markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 92%, black)}:host([data-theme=dark]) .markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 88%, var(--markup-paper))}@media (prefers-color-scheme:dark){:host(:not([data-theme])) .markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 88%, var(--markup-paper))}}.markup-pin.is-active{background:var(--markup-brand);color:#fff;border-color:var(--markup-paper)}.markup-pin.is-anchor{anchor-name:--markup-active-anchor}.markup-pin.is-leaving{pointer-events:none;animation-name:markup-pin-out;animation-duration:var(--markup-pin-leave);animation-timing-function:ease-in;animation-iteration-count:1;animation-fill-mode:forwards}.markup-pin-ghost.is-leaving{animation-duration:var(--markup-popover-leave)}@keyframes markup-pin-in{0%{opacity:0;transform:translate(-50%,-100%)scale(.5)}to{opacity:var(--markup-pin-opacity,1);transform:translate(-50%,-100%)scale(1)}}@keyframes markup-pin-out{0%{opacity:var(--markup-pin-opacity,1);transform:translate(-50%,-100%)scale(1)}to{opacity:0;transform:translate(-50%,-100%)scale(.7)}}.markup-pin.is-unresolved{--markup-pin-opacity:.6}.markup-pin.is-closed,.markup-pin.is-closed.is-active{background:var(--markup-paper);color:var(--markup-muted);border-color:var(--markup-muted);box-shadow:0 4px 14px -4px #00000040}.markup-pin.is-closed:hover{background:var(--markup-paper);color:var(--markup-ink)}.markup-pin-ghost{background:var(--markup-brand);color:#fff;cursor:default;pointer-events:none;animation:1.2s ease-in-out infinite markup-ghost-pulse}.markup-pin-num{pointer-events:none;justify-content:center;align-items:center;display:inline-flex}.markup-pin-count{background:var(--markup-ink);min-width:16px;height:16px;color:var(--markup-paper);font-family:var(--markup-font-mono);text-align:center;border:2px solid var(--markup-paper);pointer-events:none;border-radius:999px;padding:0 4px;font-size:9.5px;font-weight:600;line-height:12px;position:absolute;top:-6px;right:-8px}@keyframes markup-ghost-pulse{0%,to{box-shadow:0 4px 14px -4px #00000059,0 0 #e35d2a66}50%{box-shadow:0 4px 14px -4px #00000059,0 0 0 10px #e35d2a00}}.markup-placement-overlay{background:var(--markup-overlay-tint);pointer-events:none;z-index:1;animation:.18s ease-out markup-overlay-in;position:fixed;inset:0}.markup-placement-cursor-help{background:var(--markup-ink);color:var(--markup-paper);letter-spacing:-.01em;box-shadow:var(--markup-shadow);pointer-events:none;border-radius:999px;padding:10px 16px;font-size:12px;font-weight:500;animation:.22s ease-out 60ms backwards markup-help-in;position:fixed;top:24px;left:50%;transform:translate(-50%)}@keyframes markup-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes markup-help-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}.markup-popover{width:var(--markup-popover-w);max-width:calc(100vw - 24px);height:auto;max-height:calc(100dvh - 24px);inset:auto;left:var(--markup-pop-x,0);top:var(--markup-pop-y,0);background:var(--markup-paper);color:var(--markup-ink);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius);box-shadow:var(--markup-shadow);pointer-events:auto;flex-direction:column;gap:0;margin:0;padding:0;animation:.16s ease-out markup-popover-in;display:flex;position:fixed;overflow:hidden}@supports (anchor-name:--x){.markup-popover{position-anchor:--markup-active-anchor;left:calc(anchor(right) + 8px);top:calc(anchor(top) - 9px);position-try-fallbacks:flip-block, flip-inline, flip-block flip-inline;position-try-order:most-block-size}.markup-popover.is-floating{left:var(--markup-pop-x,0);top:var(--markup-pop-y,0);position-try-fallbacks:none}}@supports (transition-behavior:allow-discrete) and selector(:popover-open){.markup-popover{opacity:0;transition:opacity var(--markup-popover-leave) ease, transform var(--markup-popover-leave) ease, overlay var(--markup-popover-leave) allow-discrete, display var(--markup-popover-leave) allow-discrete;animation:none;display:none;transform:translateY(-4px)scale(.98)}.markup-popover:popover-open{opacity:1;display:flex;transform:none}@starting-style{.markup-popover:popover-open{opacity:0;transform:translateY(-4px)scale(.98)}}.markup-popover:not(:popover-open){pointer-events:none}}.markup-popover.is-leaving{pointer-events:none}.markup-popover.is-hud-hidden{transition-property:none;display:none}@keyframes markup-popover-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.markup-popover-header{border-bottom:1px solid var(--markup-border);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.markup-popover.is-dragging .markup-popover-header{cursor:grabbing}.markup-popover-header-actions{align-items:center;gap:4px;display:flex}.markup-popover-title{min-width:0;font-family:var(--markup-font-mono);letter-spacing:.02em;color:var(--markup-muted);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-size:11px;line-height:1;overflow:hidden}.markup-thread-menu{display:flex;position:relative}.markup-thread-menu-list{z-index:10;background:var(--markup-paper);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius);min-width:160px;box-shadow:var(--markup-shadow);animation:markup-menu-in var(--markup-menu-in) ease-out;padding:4px;position:absolute;top:calc(100% + 6px);right:0}.markup-thread-menu-item{border-radius:var(--markup-radius-sm);width:100%;color:var(--markup-ink);text-align:left;cursor:pointer;background:0 0;border:none;padding:7px 10px;font-size:13px;transition:background .1s,color .1s;display:block}.markup-thread-menu-item:hover{background:var(--markup-border)}.markup-thread-menu-item.is-danger{color:var(--markup-danger)}.markup-thread-menu-item.is-danger:hover{background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-thread-menu-item:disabled{opacity:.5;cursor:default}@keyframes markup-menu-in{0%{opacity:0;transform:translate(var(--markup-menu-from-x,0), var(--markup-menu-from-y,-4px))}to{opacity:1;transform:translate(0)}}@keyframes markup-menu-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(var(--markup-menu-from-x,0), var(--markup-menu-from-y,-4px))}}.markup-popover-body{border-top:1px solid var(--markup-border);background:var(--markup-paper);flex-direction:column;gap:6px;padding:10px 12px 8px;display:flex}.markup-popover-header+.markup-popover-body{border-top:none}.markup-popover-byline{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markup-popover-name{color:var(--markup-ink);font-weight:500}.markup-icon-btn{border-radius:var(--markup-radius-sm);width:24px;height:24px;color:var(--markup-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s,transform .12s cubic-bezier(.2,.7,.2,1);display:inline-flex}.markup-icon-btn:hover,.markup-icon-btn.is-open{background:var(--markup-border);color:var(--markup-ink)}.markup-icon-btn:active{transform:scale(.97)}.markup-comments{flex-direction:column;max-height:420px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.markup-comment{border-bottom:1px solid var(--markup-border);grid-template-columns:26px 1fr;align-items:start;gap:0 10px;padding:12px;display:grid}.markup-comment:last-child{border-bottom:none}.markup-comment>:not(.markup-comment-avatar){grid-column:2}.markup-comment.is-new{animation:.2s cubic-bezier(.2,.7,.2,1) markup-comment-in}@keyframes markup-comment-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.markup-comment-avatar{background:var(--markup-border);width:26px;height:26px;color:var(--markup-ink);font-family:var(--markup-font-mono);letter-spacing:.02em;text-transform:uppercase;-webkit-user-select:none;user-select:none;border-radius:999px;grid-area:1/1/span 4;justify-content:center;align-items:center;margin-top:-3px;font-size:10.5px;font-weight:600;display:inline-flex;overflow:hidden}.markup-avatar-initials{text-box-trim:trim-both;text-box-edge:cap alphabetic;line-height:1}.markup-avatar-img{object-fit:cover;width:100%;height:100%;display:block}.markup-comment-avatar[data-tone=\"1\"]{color:oklch(25% .07 230);background:oklch(85% .07 200)}.markup-comment-avatar[data-tone=\"2\"]{color:oklch(30% .1 150);background:oklch(88% .07 130)}.markup-comment-avatar[data-tone=\"3\"]{color:oklch(35% .1 40);background:oklch(90% .05 50)}.markup-comment-avatar[data-tone=\"4\"]{color:oklch(30% .1 320);background:oklch(87% .07 320)}.markup-comment-avatar[data-tone=\"5\"]{color:oklch(32% .09 70);background:oklch(88% .06 80)}.markup-comment-meta{align-items:center;gap:8px;min-width:0;margin-bottom:4px;font-size:13px;display:flex}.markup-comment-author{color:var(--markup-ink);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.markup-comment-badge{background:color-mix(in srgb, var(--markup-team) 12%, transparent);height:14px;color:var(--markup-team);font-family:var(--markup-font-mono);letter-spacing:.12em;text-transform:uppercase;border-radius:999px;align-items:center;padding:0 5px;font-size:9px;font-weight:500;line-height:1;display:inline-flex}.markup-comment-badge.is-agent{background:color-mix(in srgb, var(--markup-brand) 14%, transparent);color:var(--markup-accent-ink);letter-spacing:normal;justify-content:center;width:14px;padding:0}.markup-comment-time{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;white-space:nowrap;flex-shrink:0;font-size:10.5px}.markup-comment-body{color:var(--markup-ink);white-space:pre-wrap;word-break:break-word;margin:0;font-size:13.5px;line-height:19px}.markup-comment-link{color:var(--markup-accent-ink);text-underline-offset:2px;text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--markup-accent-ink) 60%, transparent);text-decoration-color:color-mix(in srgb, var(--markup-accent-ink) 60%, transparent)}.markup-comment-link:hover{-webkit-text-decoration-color:var(--markup-accent-ink);text-decoration-color:var(--markup-accent-ink)}.markup-comment-edited{color:var(--markup-muted);font-family:var(--markup-font-mono);margin-left:2px;font-size:10.5px}.markup-comment-edited:before{content:\" · \"}.markup-thread-actions{align-items:center;gap:4px;display:flex}.markup-comment-meta .markup-reaction-picker-wrap,.markup-thread-actions{margin-left:auto}.markup-comment-meta .markup-reaction-add{width:22px;height:22px;margin-top:-4px;margin-bottom:-4px}.markup-reaction-picker-wrap>.markup-icon-btn,.markup-comment-menu>.markup-icon-btn{margin-top:-4px;margin-bottom:-4px}.markup-comment-menu.is-up .markup-thread-menu-list{--markup-menu-from-y:4px;top:auto;bottom:calc(100% + 6px)}.markup-comment-menu.is-side .markup-thread-menu-list{--markup-menu-from-x:4px;--markup-menu-from-y:0;top:-4px;right:calc(100% + 2px)}.markup-comment{position:relative}.markup-reactions{flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px;display:flex}.markup-reaction-chip{border:1px solid var(--markup-border);background:var(--markup-surface-3);color:var(--markup-ink);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 7px;font-size:11.5px;line-height:1.2;transition:background .12s,border-color .12s;display:inline-flex}.markup-reaction-chip:hover:not(:disabled){background:var(--markup-hover)}.markup-reaction-chip.is-mine{background:var(--markup-accent-soft);border-color:color-mix(in srgb, var(--markup-brand) 50%, transparent);color:var(--markup-accent-ink)}.markup-reaction-chip.is-mine:hover:not(:disabled){background:color-mix(in srgb, var(--markup-brand) 18%, transparent)}.markup-reaction-chip:disabled{cursor:default;opacity:.6}.markup-reaction-emoji{font-size:13px;line-height:1}.markup-reaction-count{font-family:var(--markup-font-mono);letter-spacing:.04em;color:var(--markup-muted);font-size:10.5px}.markup-reaction-chip.is-mine .markup-reaction-count{color:var(--markup-accent-ink)}.markup-reaction-picker-wrap{opacity:0;flex:none;transition:opacity .12s;display:inline-flex;position:relative}.markup-comment:hover .markup-reaction-picker-wrap,.markup-comment:focus-within .markup-reaction-picker-wrap,.markup-reaction-picker-wrap.is-open{opacity:1}.markup-reaction-add{width:22px;height:22px;color:var(--markup-muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:13px;line-height:1;transition:background .12s,color .12s;display:inline-flex}.markup-reaction-add:hover,.markup-reaction-add.is-open{background:var(--markup-hover);color:var(--markup-ink)}.markup-reaction-picker{z-index:1;border:1px solid var(--markup-border-strong);background:var(--markup-paper);animation:markup-menu-in var(--markup-menu-in) ease;border-radius:8px;gap:2px;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 1px 2px #1a16140f,0 8px 28px #1a16141a}.markup-reaction-picker-wrap.is-up .markup-reaction-picker{--markup-menu-from-y:4px;top:auto;bottom:calc(100% + 6px)}.markup-reaction-picker-wrap.is-side .markup-reaction-picker{--markup-menu-from-x:4px;--markup-menu-from-y:0;top:-4px;right:calc(100% + 2px)}.markup-reaction-picker-item{cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:16px;line-height:1;transition:background .12s;display:inline-flex}.markup-reaction-picker-item:hover{background:color-mix(in srgb, var(--markup-ink) 8%, transparent)}.markup-reaction-picker-item.is-mine{background:color-mix(in srgb, var(--markup-brand) 14%, transparent)}.markup-comment-edit-form{flex-direction:column;gap:6px;display:flex}.markup-comment-edit-actions{justify-content:flex-end;gap:6px;display:flex}.markup-composer{flex-direction:column;display:flex;position:relative}.markup-composer-input{width:100%;min-height:38px;max-height:120px;color:var(--markup-ink);font-family:var(--markup-font);background:0 0;border:none;border-radius:0;padding:2px 0;font-size:13.5px;line-height:19px;transition:none;overflow-y:auto}.markup-composer-input:focus-visible{box-shadow:none;outline:none}.markup-composer-footer-wrap{grid-template-rows:0fr;transition:grid-template-rows .15s;display:grid}.markup-composer.is-filled .markup-composer-footer-wrap{grid-template-rows:1fr}.markup-composer-footer{opacity:0;background:0 0;border:none;border-radius:0;justify-content:space-between;align-items:center;gap:8px;padding:0;transition:opacity .1s;display:flex;overflow:hidden}.markup-composer.is-filled .markup-composer-footer{opacity:1;transition-delay:60ms}.markup-composer-hint{font-family:var(--markup-font-mono);letter-spacing:.04em;color:var(--markup-muted);align-items:center;gap:3px;font-size:10.5px;display:inline-flex}.markup-composer-hint-label{margin-left:2px}.markup-composer-error{color:var(--markup-accent-ink)}.markup-composer-actions{align-items:center;gap:6px;display:flex}.markup-composer .markup-btn-primary{background:var(--markup-ink);height:26px;color:var(--markup-paper);border-radius:6px;padding:0 10px}.markup-composer .markup-btn-primary:hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 88%, var(--markup-paper))}.markup-composer-actions-empty{transition:opacity .12s;position:absolute;bottom:0;right:0}.markup-composer.is-filled .markup-composer-actions-empty{opacity:0;pointer-events:none}.markup-author-prompt{flex-direction:column;gap:10px;padding:12px;display:flex}.markup-author-status{color:var(--markup-muted);margin:0;font-size:12px}.markup-author-copy{color:var(--markup-ink);margin:0;font-size:13px;line-height:1.5}.markup-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;height:36px;color:var(--markup-ink);outline:none;padding:0 10px;font-size:14px;transition:border-color .12s,box-shadow .12s}.markup-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-btn{border-radius:var(--markup-radius-sm);height:30px;color:var(--markup-ink);cursor:pointer;letter-spacing:-.01em;white-space:nowrap;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:500;transition:background .12s,border-color .12s,color .12s,opacity .12s,transform .12s cubic-bezier(.2,.7,.2,1);display:inline-flex}.markup-btn:disabled{opacity:.5;cursor:not-allowed}.markup-btn:active:not(:disabled){transform:scale(.97)}.markup-btn-primary{background:var(--markup-ink);color:var(--markup-paper)}.markup-btn-primary:hover:not(:disabled){background:var(--markup-brand-fill)}.markup-btn-ghost{color:var(--markup-muted)}.markup-btn-ghost:hover:not(:disabled){background:var(--markup-border);color:var(--markup-ink)}.markup-btn-danger{color:var(--markup-danger)}.markup-btn-danger:hover:not(:disabled){background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-discard-confirm{background:color-mix(in srgb, var(--markup-paper) 92%, transparent);-webkit-backdrop-filter:blur(6px);animation:markup-menu-in var(--markup-menu-in) ease-out;flex-direction:column;justify-content:center;gap:4px;padding:16px;display:flex;position:absolute;inset:0}.markup-thread-menu-list.is-leaving,.markup-reaction-picker.is-leaving,.markup-discard-confirm.is-leaving{pointer-events:none;animation-name:markup-menu-out;animation-duration:var(--markup-menu-leave);animation-timing-function:ease-in;animation-fill-mode:forwards}.markup-discard-confirm-title{color:var(--markup-ink);margin:0;font-size:13px;font-weight:600}.markup-discard-confirm-desc{color:var(--markup-muted);margin:0;font-size:12px}.markup-discard-confirm-actions{gap:6px;margin-top:10px;display:flex}.markup-screenshot-row{border:1px dashed var(--markup-border-strong);color:var(--markup-muted);border-radius:6px;flex-direction:column;gap:8px;margin-top:0;padding:6px 8px;font-size:11.5px;display:flex}.markup-screenshot-row.is-attached{border-style:solid;border-color:var(--markup-border);padding:8px}.markup-screenshot-row-head{justify-content:space-between;align-items:center;gap:8px;min-height:16px;display:flex}.markup-screenshot-status{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;display:flex}.markup-screenshot-row.is-failed{opacity:.85;border-style:dotted}.markup-screenshot-toggle{cursor:pointer;color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;transition:color .12s;display:flex}.markup-screenshot-toggle:hover{color:var(--markup-ink)}.markup-screenshot-checkbox{width:12px;height:12px;accent-color:var(--markup-brand);cursor:pointer;margin:0}.markup-screenshot-thumb-link{border:1px solid var(--markup-border-strong);cursor:zoom-in;background:0 0;border-radius:3px;margin:-4px auto -4px -4px;padding:0;transition:border-color .12s;display:block;overflow:hidden}.markup-screenshot-thumb-link:hover,.markup-screenshot-thumb-link:focus-visible{border-color:var(--markup-brand)}.markup-screenshot-thumb{object-fit:cover;object-position:top;width:auto;height:22px;display:block}.markup-screenshot-redacted-chip{background:color-mix(in srgb, var(--markup-success,oklch(62% .16 150)) 16%, transparent);color:var(--markup-success-ink);font-family:var(--markup-font-mono);white-space:nowrap;cursor:pointer;border:none;border-radius:999px;align-items:center;gap:3px;padding:1px 7px;font-size:10px;display:inline-flex}.markup-screenshot-redacted-chip:hover{filter:brightness(1.05)}.markup-screenshot-redacted-arrow{font-style:normal}.markup-screenshot-redacted-list{flex-direction:column;gap:2px;display:flex}.markup-screenshot-redacted-selector{font-family:var(--markup-font-mono);color:var(--markup-muted);font-size:9px;display:block}.markup-screenshot-help{font-family:var(--markup-font-mono);color:var(--markup-muted);margin:0;font-size:10px;line-height:1.5}.markup-screenshot-help-link{color:var(--markup-ink);text-underline-offset:2px;text-decoration:underline}.markup-screenshot-help-link:hover{color:var(--markup-accent-ink)}.markup-comment-screenshot{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);cursor:pointer;background:0 0;margin-top:8px;padding:0;transition:border-color .12s,opacity .12s;display:block;overflow:hidden}.markup-comment-screenshot:hover{border-color:var(--markup-brand);opacity:.9}.markup-comment-screenshot img{object-fit:cover;object-position:top;width:100%;height:auto;max-height:120px;display:block}.markup-lightbox{background:#1a1614e0;border:none;width:100%;max-width:100%;height:100%;max-height:100%;margin:0;padding:24px;position:fixed;inset:0}.markup-lightbox[open]{justify-content:center;align-items:center;display:flex}@supports (transition-behavior:allow-discrete){.markup-lightbox{opacity:0;transition:opacity var(--markup-lightbox-leave) ease, overlay var(--markup-lightbox-leave) allow-discrete, display var(--markup-lightbox-leave) allow-discrete}.markup-lightbox[open]{opacity:1}@starting-style{.markup-lightbox[open]{opacity:0}}}.markup-lightbox::backdrop{display:none}.markup-lightbox-img{border-radius:var(--markup-radius);object-fit:contain;max-width:100%;max-height:100%;box-shadow:var(--markup-shadow);animation:.16s ease-out markup-lightbox-in}.markup-lightbox-close{color:#fdfcfa;background:#1a161499;position:absolute;top:16px;right:16px}.markup-lightbox-close:hover{color:#fdfcfa;background:#1a1614d9}@keyframes markup-lightbox-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.markup-toolbar,.markup-toolbar.is-leaving,.markup-hud-hidden-toast,.markup-hud-hidden-toast.is-leaving,.markup-tb-btn,.markup-tb-badge,.markup-comment,.markup-pin,.markup-pin.is-entering,.markup-pin.is-leaving,.markup-pop,.markup-pop.is-leaving,.markup-pop[data-pop=overflow],.markup-pop.is-anchor-center,.markup-pop.is-anchor-center.is-leaving,.markup-thread-menu-list,.markup-thread-menu-list.is-leaving,.markup-reaction-picker,.markup-reaction-picker.is-leaving,.markup-discard-confirm,.markup-discard-confirm.is-leaving,.markup-icon-btn,.markup-btn,.markup-popover,.markup-pin-ghost,.markup-placement-overlay,.markup-placement-cursor-help,.markup-lightbox,.markup-lightbox-img{transition:none;animation:none}}.markup-mention-chip{background:var(--markup-accent-soft);color:var(--markup-accent-ink);border-radius:3px;padding:0 2px;font-weight:500;display:inline-block}.markup-mention-input{white-space:pre-wrap;overflow-wrap:anywhere;cursor:text;outline:none;position:relative}.markup-mention-input[aria-disabled=true]{opacity:.6;cursor:default}.markup-mention-input[data-empty]:before{content:attr(data-placeholder);color:var(--markup-muted);pointer-events:none;position:absolute;inset:0 auto auto 0}.markup-mention-input .markup-mention-chip{white-space:nowrap;padding:0 3px}.markup-comment-edit-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;min-height:58px;max-height:200px;color:var(--markup-ink);font:inherit;padding:8px 10px;font-size:13px;line-height:1.5;overflow-y:auto}.markup-comment-edit-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-comment-edit-input[data-empty]:before{inset:8px auto auto 10px}.markup-mention-picker{z-index:10;box-sizing:border-box;background:var(--markup-paper);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);max-height:180px;box-shadow:var(--markup-shadow);margin:0;padding:4px;list-style:none;position:fixed;overflow-y:auto}.markup-mention-picker-item{border-radius:var(--markup-radius-sm);cursor:pointer;color:var(--markup-ink);justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.markup-mention-picker-item.is-active{background:color-mix(in srgb, var(--markup-brand) 12%, transparent)}.markup-mention-picker-name{font-weight:500}.markup-mention-picker-trigger{color:var(--markup-muted);font-family:var(--markup-font-mono);font-size:10px}.markup-notifications-panel{max-height:min(60vh,420px);color:var(--markup-ink);flex-direction:column;display:flex}.markup-notifications-panel-header{border-bottom:1px solid var(--markup-border);align-items:center;gap:8px;padding:8px 10px;display:flex}.markup-notifications-panel-header .markup-eyebrow{flex:1}.markup-notifications-panel-actions{align-items:center;gap:8px;display:flex}.markup-notifications-panel-mark-all{color:var(--markup-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:11px}.markup-notifications-panel-mark-all:hover{color:var(--markup-ink)}.markup-notifications-panel-body{flex:1;overflow-y:auto}.markup-notifications-panel-empty,.markup-notifications-panel-error{text-align:center;color:var(--markup-muted);padding:24px 12px;font-size:12px}.markup-notifications-panel-empty-title{color:var(--markup-ink);margin:0 0 4px;font-weight:500}.markup-notifications-panel-empty-sub{color:var(--markup-muted);margin:0;line-height:1.4}.markup-notifications-panel-error{color:var(--markup-danger,#b91c1c)}.markup-notifications-panel-list{margin:0;padding:4px;list-style:none}.markup-notifications-panel-row{border-radius:var(--markup-radius-sm);text-align:start;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:none;flex-direction:column;gap:4px;padding:8px 10px;display:flex}.markup-notifications-panel-row:hover{background:color-mix(in srgb, var(--markup-brand) 8%, transparent)}.markup-notifications-panel-row.is-unread{background:color-mix(in srgb, var(--markup-brand) 5%, transparent)}.markup-notifications-panel-meta{align-items:center;gap:6px;font-size:11px;display:flex}.markup-notifications-panel-dot{background:var(--markup-brand);border-radius:999px;flex-shrink:0;width:6px;height:6px}.markup-notifications-panel-actor{font-weight:600}.markup-notifications-panel-sep{color:var(--markup-muted)}.markup-notifications-panel-time{color:var(--markup-muted);font-family:var(--markup-font-mono);font-size:10px}.markup-notifications-panel-thread{color:var(--markup-muted);margin:0;font-size:12px}.markup-notifications-panel-thread-title{color:var(--markup-ink)}.markup-notifications-panel-excerpt{color:color-mix(in srgb, var(--markup-ink) 80%, transparent);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;font-style:italic;display:-webkit-box;overflow:hidden}.markup-panel-pop{z-index:11;pointer-events:auto;width:var(--markup-popover-w);max-width:calc(100vw - 24px);position:fixed;bottom:76px}.markup-panel-pop-right{right:22px}.markup-panel-pop-left{left:22px}.markup-panel-pop-center{left:50%;transform:translate(-50%)}.markup-panel-pop .markup-pop{width:100%;position:static}.markup-panel-pop .markup-notifications-panel{max-height:min(60vh,480px)}.markup-panel-pop .markup-notifications-panel-header{padding:12px 14px}.markup-panel-pop .markup-notifications-panel-header .markup-icon-btn{display:none}.markup-panel{max-height:min(70vh,520px);color:var(--markup-ink);flex-direction:column;display:flex}.markup-panel-header{border-bottom:1px solid var(--markup-border);align-items:center;gap:8px;padding:12px 14px;display:flex}.markup-panel-header .markup-eyebrow{flex:1}.markup-panel-back{color:var(--markup-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;align-items:center;gap:2px;margin-left:-4px;padding:3px 6px 3px 4px;font-family:inherit;font-size:12px;display:inline-flex}.markup-panel-back:hover{background:var(--markup-hover);color:var(--markup-ink)}.markup-panel-body{flex:1;padding:4px 14px 14px;overflow-y:auto}.markup-panel-body:focus{outline:none}.markup-panel-body:focus-visible{box-shadow:inset 0 0 0 2px var(--markup-accent-glow);outline:none}.markup-panel-section{border-bottom:1px solid var(--markup-border);padding:10px 0}.markup-panel-section:last-child{border-bottom:none;padding-bottom:2px}.markup-panel-section-title{font-family:var(--markup-font-mono);letter-spacing:.06em;text-transform:lowercase;color:var(--markup-muted);margin:0 0 6px;font-size:10px;font-weight:400}.markup-panel-text{color:var(--markup-ink-soft);margin:0;font-size:12.5px;line-height:1.5}.markup-panel-text strong{color:var(--markup-ink);font-weight:600}.markup-panel-mono{font-family:var(--markup-font-mono);color:var(--markup-ink);word-break:break-all;font-size:11.5px}.markup-panel-list{color:var(--markup-ink-soft);margin:0;padding-left:16px;font-size:12.5px;line-height:1.5}.markup-panel-list li{margin-bottom:3px}.markup-panel-list li::marker{color:var(--markup-muted)}.markup-panel-note{color:var(--markup-muted);margin:8px 0 0;font-size:11.5px;line-height:1.45}.markup-panel-error{color:var(--markup-danger);margin:8px 0 0;font-size:11.5px;line-height:1.45}.markup-panel-action{border:1px solid var(--markup-border-strong);width:100%;height:30px;color:var(--markup-ink);font:inherit;cursor:pointer;background:0 0;border-radius:7px;margin-top:10px;padding:0 10px;font-size:12.5px;transition:background .12s,border-color .12s,color .12s}.markup-panel-action:hover:not(:disabled){background:var(--markup-hover)}.markup-panel-action:disabled{opacity:.6;cursor:default}.markup-panel-action.is-danger{border-color:color-mix(in srgb, var(--markup-danger) 45%, transparent);color:var(--markup-danger)}.markup-panel-action.is-danger:hover:not(:disabled){background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-shortcut-list{margin:0;padding:0;list-style:none}.markup-shortcut-row{align-items:center;gap:10px;min-height:24px;padding:2px 0;display:flex}.markup-shortcut-label{min-width:0;color:var(--markup-ink-soft);flex:1;font-size:12.5px;line-height:1.4}.markup-shortcut-keys{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.markup-shortcut-chord{align-items:center;gap:3px;display:inline-flex}.markup-shortcut-or{color:var(--markup-muted);margin-right:1px;font-size:10px}", ue = 1e4, de = 20, fe = 60, pe = null, me = [], he = null, ge = !1, _e = ve();
|
|
253
253
|
function ve() {
|
|
254
254
|
return typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : `s-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
|
|
255
255
|
}
|
|
@@ -5019,7 +5019,7 @@ function Sc({ identity: e, position: t, isSigningIn: n, isSigningOut: r, dashboa
|
|
|
5019
5019
|
V(() => {
|
|
5020
5020
|
v || (m(!1), g(!1));
|
|
5021
5021
|
}, [v]);
|
|
5022
|
-
let y = aa(e), b = Cc(y), x = e.kind === "verified", C = e.kind === "verified" ? e.identity.image : void 0, [w,
|
|
5022
|
+
let y = aa(e), b = Cc(y), x = e.kind === "verified", C = e.kind === "verified" ? e.identity.image : void 0, [w, T] = B(null), E = x && C != null && w !== C, D = x ? e.identity.email : null, O = t === "bottom-left" ? "is-anchor-left" : t === "bottom-center" ? "is-anchor-center" : "is-anchor-right";
|
|
5023
5023
|
return /* @__PURE__ */ Q("div", {
|
|
5024
5024
|
ref: _,
|
|
5025
5025
|
style: {
|
|
@@ -5042,13 +5042,13 @@ function Sc({ identity: e, position: t, isSigningIn: n, isSigningOut: r, dashboa
|
|
|
5042
5042
|
children: [/* @__PURE__ */ Q("span", {
|
|
5043
5043
|
class: Z("markup-tb-avatar", !x && "is-anon"),
|
|
5044
5044
|
"aria-hidden": "true",
|
|
5045
|
-
children:
|
|
5045
|
+
children: E ? /* @__PURE__ */ Q("img", {
|
|
5046
5046
|
class: "markup-avatar-img",
|
|
5047
5047
|
src: C,
|
|
5048
5048
|
alt: "",
|
|
5049
5049
|
decoding: "async",
|
|
5050
5050
|
referrerpolicy: "no-referrer",
|
|
5051
|
-
onError: () =>
|
|
5051
|
+
onError: () => T(C)
|
|
5052
5052
|
}) : x && b ? /* @__PURE__ */ Q("span", {
|
|
5053
5053
|
class: "markup-avatar-initials",
|
|
5054
5054
|
children: b
|
|
@@ -5058,7 +5058,7 @@ function Sc({ identity: e, position: t, isSigningIn: n, isSigningOut: r, dashboa
|
|
|
5058
5058
|
children: y
|
|
5059
5059
|
}) : null]
|
|
5060
5060
|
}), d ? /* @__PURE__ */ Q("div", {
|
|
5061
|
-
class: Z("markup-pop",
|
|
5061
|
+
class: Z("markup-pop", O, f && "is-leaving"),
|
|
5062
5062
|
"data-pop": "identity",
|
|
5063
5063
|
role: "menu",
|
|
5064
5064
|
inert: f || void 0,
|
|
@@ -5068,9 +5068,9 @@ function Sc({ identity: e, position: t, isSigningIn: n, isSigningOut: r, dashboa
|
|
|
5068
5068
|
children: [/* @__PURE__ */ Q("span", {
|
|
5069
5069
|
class: "nm",
|
|
5070
5070
|
children: y ?? "Account"
|
|
5071
|
-
}),
|
|
5071
|
+
}), D ? /* @__PURE__ */ Q("span", {
|
|
5072
5072
|
class: "em",
|
|
5073
|
-
children:
|
|
5073
|
+
children: D
|
|
5074
5074
|
}) : null]
|
|
5075
5075
|
}),
|
|
5076
5076
|
/* @__PURE__ */ Q("a", {
|
|
@@ -5889,16 +5889,16 @@ var fl = [], pl = "https://markup.pixelmatters.dev/docs/install#9-screenshots-pr
|
|
|
5889
5889
|
function ml({ pageX: e, pageY: t, authorName: n, authorPromptMode: r, isVerified: i, isIdentityResolving: a, isSigningIn: o, isPending: s, error: c, screenshot: l, isScreenshotCapturing: u, screenshotFailed: d, screenshotRedactedCount: f, screenshotRedactedSelectors: p, members: m = fl, isLeaving: h = !1, onAuthor: g, onSignIn: _, onSignOut: v, onSubmit: y, onClose: b }) {
|
|
5890
5890
|
let x = U(null);
|
|
5891
5891
|
Dc(x, !h);
|
|
5892
|
-
let C = U(!1), w = U(!1), [
|
|
5893
|
-
w.current = e,
|
|
5894
|
-
}, []),
|
|
5895
|
-
w.current || (C.current ?
|
|
5896
|
-
}, [b,
|
|
5897
|
-
|
|
5898
|
-
}, [
|
|
5892
|
+
let C = U(!1), w = U(!1), [T, E] = B(!1), D = ei(T || null, 120), O = W((e) => {
|
|
5893
|
+
w.current = e, E(e);
|
|
5894
|
+
}, []), ee = W(() => {
|
|
5895
|
+
w.current || (C.current ? O(!0) : b());
|
|
5896
|
+
}, [b, O]), k = W(() => {
|
|
5897
|
+
O(!1), x.current?.querySelector(".markup-mention-input")?.focus();
|
|
5898
|
+
}, [O]), [A, j] = B(!1), [M, N] = B(!1), P = Oc(l), F = U(null), [te, ne] = B(null), { onPointerDown: re, isDragging: ie } = wc({
|
|
5899
5899
|
targetRef: x,
|
|
5900
5900
|
shouldStart: (e) => !e.target?.closest("button, a, input, textarea, select"),
|
|
5901
|
-
onMove:
|
|
5901
|
+
onMove: ne
|
|
5902
5902
|
});
|
|
5903
5903
|
H(() => {
|
|
5904
5904
|
let e = x.current;
|
|
@@ -5914,32 +5914,32 @@ function ml({ pageX: e, pageY: t, authorName: n, authorPromptMode: r, isVerified
|
|
|
5914
5914
|
t.preventDefault(), t.stopPropagation();
|
|
5915
5915
|
return;
|
|
5916
5916
|
}
|
|
5917
|
-
C.current && (t.preventDefault(), t.stopPropagation()),
|
|
5917
|
+
C.current && (t.preventDefault(), t.stopPropagation()), ee();
|
|
5918
5918
|
}
|
|
5919
5919
|
}
|
|
5920
5920
|
function n(e) {
|
|
5921
|
-
e.key !== "Escape" || e.defaultPrevented ||
|
|
5921
|
+
e.key !== "Escape" || e.defaultPrevented || F.current?.open || (e.preventDefault(), w.current ? k() : ee());
|
|
5922
5922
|
}
|
|
5923
5923
|
let r = bc(e, t);
|
|
5924
5924
|
return document.addEventListener("keydown", n), () => {
|
|
5925
5925
|
r(), document.removeEventListener("keydown", n);
|
|
5926
5926
|
};
|
|
5927
5927
|
}, [
|
|
5928
|
-
|
|
5929
|
-
|
|
5928
|
+
ee,
|
|
5929
|
+
k,
|
|
5930
5930
|
h
|
|
5931
5931
|
]), V(() => {
|
|
5932
|
-
|
|
5933
|
-
}, [
|
|
5934
|
-
let ae = hl(e - window.scrollX + 16, 12, window.innerWidth - 320 - 12), oe = hl(t - window.scrollY - 16, 12, window.innerHeight - 220), se = typeof window < "u" ? window.location.href : "", ce = l != null, le = u || ce || d, ue =
|
|
5932
|
+
T && x.current?.querySelector(".markup-discard-confirm-keep")?.focus();
|
|
5933
|
+
}, [T]);
|
|
5934
|
+
let ae = hl(e - window.scrollX + 16, 12, window.innerWidth - 320 - 12), oe = hl(t - window.scrollY - 16, 12, window.innerHeight - 220), se = typeof window < "u" ? window.location.href : "", ce = l != null, le = u || ce || d, ue = A && ce;
|
|
5935
5935
|
return /* @__PURE__ */ Q("div", {
|
|
5936
5936
|
ref: x,
|
|
5937
|
-
class: Z("markup-popover",
|
|
5937
|
+
class: Z("markup-popover", te && "is-floating", ie && "is-dragging", h && "is-leaving"),
|
|
5938
5938
|
popover: "manual",
|
|
5939
5939
|
inert: h || void 0,
|
|
5940
5940
|
style: {
|
|
5941
|
-
"--markup-pop-x": `${
|
|
5942
|
-
"--markup-pop-y": `${
|
|
5941
|
+
"--markup-pop-x": `${te?.left ?? ae}px`,
|
|
5942
|
+
"--markup-pop-y": `${te?.top ?? oe}px`
|
|
5943
5943
|
},
|
|
5944
5944
|
role: "dialog",
|
|
5945
5945
|
"aria-label": "New markup",
|
|
@@ -5955,7 +5955,7 @@ function ml({ pageX: e, pageY: t, authorName: n, authorPromptMode: r, isVerified
|
|
|
5955
5955
|
type: "button",
|
|
5956
5956
|
class: "markup-icon-btn",
|
|
5957
5957
|
"aria-label": "Discard pin",
|
|
5958
|
-
onClick:
|
|
5958
|
+
onClick: ee,
|
|
5959
5959
|
children: /* @__PURE__ */ Q(Ws, { size: 16 })
|
|
5960
5960
|
})]
|
|
5961
5961
|
}),
|
|
@@ -5982,7 +5982,7 @@ function ml({ pageX: e, pageY: t, authorName: n, authorPromptMode: r, isVerified
|
|
|
5982
5982
|
submitLabel: "Post markup",
|
|
5983
5983
|
isPending: s,
|
|
5984
5984
|
error: c,
|
|
5985
|
-
onSubmit: (e) => y(e,
|
|
5985
|
+
onSubmit: (e) => y(e, A && ce),
|
|
5986
5986
|
onDirtyChange: (e) => {
|
|
5987
5987
|
C.current = e;
|
|
5988
5988
|
},
|
|
@@ -6014,38 +6014,38 @@ function ml({ pageX: e, pageY: t, authorName: n, authorPromptMode: r, isVerified
|
|
|
6014
6014
|
/* @__PURE__ */ Q("input", {
|
|
6015
6015
|
type: "checkbox",
|
|
6016
6016
|
class: "markup-screenshot-checkbox",
|
|
6017
|
-
checked:
|
|
6018
|
-
onChange: (e) =>
|
|
6017
|
+
checked: A,
|
|
6018
|
+
onChange: (e) => j(e.currentTarget.checked)
|
|
6019
6019
|
}),
|
|
6020
6020
|
/* @__PURE__ */ Q(Ys, { size: 12 }),
|
|
6021
6021
|
/* @__PURE__ */ Q("span", { children: "Attach screenshot" })
|
|
6022
6022
|
]
|
|
6023
6023
|
}),
|
|
6024
|
-
ue &&
|
|
6024
|
+
ue && P ? /* @__PURE__ */ Q("a", {
|
|
6025
6025
|
class: "markup-screenshot-thumb-link",
|
|
6026
|
-
href:
|
|
6026
|
+
href: P,
|
|
6027
6027
|
target: "_blank",
|
|
6028
6028
|
rel: "noopener",
|
|
6029
6029
|
title: "Preview screenshot",
|
|
6030
6030
|
"aria-label": "Preview screenshot",
|
|
6031
6031
|
onClick: (e) => {
|
|
6032
|
-
e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || e.button !== 0 || (e.preventDefault(),
|
|
6032
|
+
e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || e.button !== 0 || (e.preventDefault(), F.current?.showModal());
|
|
6033
6033
|
},
|
|
6034
6034
|
children: /* @__PURE__ */ Q("img", {
|
|
6035
6035
|
class: "markup-screenshot-thumb",
|
|
6036
|
-
src:
|
|
6036
|
+
src: P,
|
|
6037
6037
|
alt: ""
|
|
6038
6038
|
})
|
|
6039
6039
|
}) : null,
|
|
6040
6040
|
ue && f > 0 ? /* @__PURE__ */ Q("button", {
|
|
6041
6041
|
type: "button",
|
|
6042
6042
|
class: "markup-screenshot-redacted-chip",
|
|
6043
|
-
"aria-expanded":
|
|
6044
|
-
onClick: () =>
|
|
6043
|
+
"aria-expanded": M,
|
|
6044
|
+
onClick: () => N((e) => !e),
|
|
6045
6045
|
children: [
|
|
6046
6046
|
/* @__PURE__ */ Q("em", {
|
|
6047
6047
|
class: "markup-screenshot-redacted-arrow",
|
|
6048
|
-
children:
|
|
6048
|
+
children: M ? "▾" : "▸"
|
|
6049
6049
|
}),
|
|
6050
6050
|
f,
|
|
6051
6051
|
" ",
|
|
@@ -6055,7 +6055,7 @@ function ml({ pageX: e, pageY: t, authorName: n, authorPromptMode: r, isVerified
|
|
|
6055
6055
|
]
|
|
6056
6056
|
}) : null
|
|
6057
6057
|
]
|
|
6058
|
-
}), ue ? /* @__PURE__ */ Q(S, { children: [
|
|
6058
|
+
}), ue ? /* @__PURE__ */ Q(S, { children: [M && f > 0 ? /* @__PURE__ */ Q("div", {
|
|
6059
6059
|
class: "markup-screenshot-redacted-list",
|
|
6060
6060
|
children: p.map((e) => /* @__PURE__ */ Q("code", {
|
|
6061
6061
|
class: "markup-screenshot-redacted-selector",
|
|
@@ -6087,31 +6087,31 @@ function ml({ pageX: e, pageY: t, authorName: n, authorPromptMode: r, isVerified
|
|
|
6087
6087
|
onSignIn: _,
|
|
6088
6088
|
onSignOut: v
|
|
6089
6089
|
}),
|
|
6090
|
-
ue &&
|
|
6091
|
-
ref:
|
|
6090
|
+
ue && P ? /* @__PURE__ */ Q("dialog", {
|
|
6091
|
+
ref: F,
|
|
6092
6092
|
class: "markup-lightbox",
|
|
6093
|
-
onClick: () =>
|
|
6093
|
+
onClick: () => F.current?.close(),
|
|
6094
6094
|
children: [/* @__PURE__ */ Q("button", {
|
|
6095
6095
|
type: "button",
|
|
6096
6096
|
class: "markup-lightbox-close markup-icon-btn",
|
|
6097
6097
|
"aria-label": "Close screenshot",
|
|
6098
6098
|
onClick: (e) => {
|
|
6099
|
-
e.stopPropagation(),
|
|
6099
|
+
e.stopPropagation(), F.current?.close();
|
|
6100
6100
|
},
|
|
6101
6101
|
children: /* @__PURE__ */ Q(Ws, { size: 16 })
|
|
6102
6102
|
}), /* @__PURE__ */ Q("img", {
|
|
6103
6103
|
class: "markup-lightbox-img",
|
|
6104
|
-
src:
|
|
6104
|
+
src: P,
|
|
6105
6105
|
alt: "Screenshot preview",
|
|
6106
6106
|
onClick: (e) => e.stopPropagation()
|
|
6107
6107
|
})]
|
|
6108
6108
|
}) : null,
|
|
6109
|
-
|
|
6110
|
-
class: Z("markup-discard-confirm",
|
|
6109
|
+
D ? /* @__PURE__ */ Q("div", {
|
|
6110
|
+
class: Z("markup-discard-confirm", D.isLeaving && "is-leaving"),
|
|
6111
6111
|
role: "alertdialog",
|
|
6112
6112
|
"aria-labelledby": "markup-discard-confirm-title",
|
|
6113
6113
|
"aria-describedby": "markup-discard-confirm-desc",
|
|
6114
|
-
inert:
|
|
6114
|
+
inert: D.isLeaving || void 0,
|
|
6115
6115
|
children: [
|
|
6116
6116
|
/* @__PURE__ */ Q("p", {
|
|
6117
6117
|
id: "markup-discard-confirm-title",
|
|
@@ -6128,7 +6128,7 @@ function ml({ pageX: e, pageY: t, authorName: n, authorPromptMode: r, isVerified
|
|
|
6128
6128
|
children: [/* @__PURE__ */ Q("button", {
|
|
6129
6129
|
type: "button",
|
|
6130
6130
|
class: "markup-btn markup-btn-primary markup-discard-confirm-keep",
|
|
6131
|
-
onClick:
|
|
6131
|
+
onClick: k,
|
|
6132
6132
|
children: "Keep editing"
|
|
6133
6133
|
}), /* @__PURE__ */ Q("button", {
|
|
6134
6134
|
type: "button",
|
|
@@ -6532,22 +6532,22 @@ var Sl = {
|
|
|
6532
6532
|
shortcuts: "Keyboard shortcuts"
|
|
6533
6533
|
};
|
|
6534
6534
|
function Cl({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked: r = !1, onToggleAutoCapture: i, showResolved: a, onToggleShowResolved: o, isUrlScoped: s, hiddenByUrlScope: c, onToggleUrlScope: l, onHideForSession: u, identity: d, apiUrl: f, commentAccess: p, isForgettingMe: m, forgetMeError: h, onForgetMe: g, version: _, dashboardUrl: v }) {
|
|
6535
|
-
let [y, b] = B(!1), [x, S] = B("menu"), C = ei(y || null, 140), w = C?.isLeaving ?? !1,
|
|
6536
|
-
|
|
6537
|
-
let
|
|
6535
|
+
let [y, b] = B(!1), [x, S] = B("menu"), C = ei(y || null, 140), w = C?.isLeaving ?? !1, T = U(null), E = U(null), D = U(null), O = U(null), ee = U("menu"), k = U(null), A = U(x);
|
|
6536
|
+
A.current = x;
|
|
6537
|
+
let j = vl();
|
|
6538
6538
|
V(() => {
|
|
6539
|
-
y && (S("menu"),
|
|
6539
|
+
y && (S("menu"), ee.current = "menu");
|
|
6540
6540
|
}, [y]), H(() => {
|
|
6541
6541
|
if (!y) return;
|
|
6542
6542
|
if (x !== "menu") {
|
|
6543
|
-
|
|
6543
|
+
E.current?.focus({ preventScroll: !0 });
|
|
6544
6544
|
return;
|
|
6545
6545
|
}
|
|
6546
|
-
let e =
|
|
6547
|
-
e !== "menu" && (
|
|
6546
|
+
let e = ee.current;
|
|
6547
|
+
e !== "menu" && (ee.current = "menu", (e === "privacy" ? D.current : O.current)?.focus({ preventScroll: !0 }));
|
|
6548
6548
|
}, [y, x]), H(() => {
|
|
6549
|
-
let e =
|
|
6550
|
-
if (
|
|
6549
|
+
let e = E.current, t = k.current;
|
|
6550
|
+
if (k.current = null, !e || t == null || window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
|
|
6551
6551
|
let n = e.getBoundingClientRect().height;
|
|
6552
6552
|
if (Math.round(n) === Math.round(t)) return;
|
|
6553
6553
|
e.style.height = `${t}px`, e.offsetHeight, e.style.height = `${n}px`;
|
|
@@ -6559,15 +6559,15 @@ function Cl({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
6559
6559
|
};
|
|
6560
6560
|
}, [x]), V(() => {
|
|
6561
6561
|
if (!y) return;
|
|
6562
|
-
let e =
|
|
6562
|
+
let e = T.current;
|
|
6563
6563
|
if (!e) return;
|
|
6564
6564
|
let t = (t) => {
|
|
6565
6565
|
t.composedPath().includes(e) || b(!1);
|
|
6566
6566
|
};
|
|
6567
6567
|
function n(e) {
|
|
6568
6568
|
if (e.key === "Escape") {
|
|
6569
|
-
if (
|
|
6570
|
-
|
|
6569
|
+
if (A.current !== "menu") {
|
|
6570
|
+
M("menu");
|
|
6571
6571
|
return;
|
|
6572
6572
|
}
|
|
6573
6573
|
b(!1);
|
|
@@ -6578,12 +6578,12 @@ function Cl({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
6578
6578
|
r(), document.removeEventListener("keydown", n);
|
|
6579
6579
|
};
|
|
6580
6580
|
}, [y]);
|
|
6581
|
-
function
|
|
6582
|
-
|
|
6581
|
+
function M(e) {
|
|
6582
|
+
k.current = E.current?.getBoundingClientRect().height ?? null, e !== "menu" && (ee.current = e), S(e);
|
|
6583
6583
|
}
|
|
6584
|
-
let
|
|
6584
|
+
let N = e === "bottom-left" ? "is-anchor-left" : e === "bottom-center" ? "is-anchor-center" : "is-anchor-right", { mod: P } = Vs();
|
|
6585
6585
|
return /* @__PURE__ */ Q("div", {
|
|
6586
|
-
ref:
|
|
6586
|
+
ref: T,
|
|
6587
6587
|
style: {
|
|
6588
6588
|
position: "relative",
|
|
6589
6589
|
display: "inline-flex"
|
|
@@ -6607,8 +6607,8 @@ function Cl({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
6607
6607
|
children: c > 9 ? "9+" : c
|
|
6608
6608
|
}) : null]
|
|
6609
6609
|
}), C ? /* @__PURE__ */ Q("div", {
|
|
6610
|
-
ref:
|
|
6611
|
-
class: Z("markup-pop",
|
|
6610
|
+
ref: E,
|
|
6611
|
+
class: Z("markup-pop", N, w && "is-leaving"),
|
|
6612
6612
|
"data-pop": "overflow",
|
|
6613
6613
|
"data-view": x,
|
|
6614
6614
|
role: "dialog",
|
|
@@ -6628,8 +6628,8 @@ function Cl({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
6628
6628
|
e && b(!1);
|
|
6629
6629
|
});
|
|
6630
6630
|
},
|
|
6631
|
-
onBack: () =>
|
|
6632
|
-
}) : x === "shortcuts" ? /* @__PURE__ */ Q(xl, { onBack: () =>
|
|
6631
|
+
onBack: () => M("menu")
|
|
6632
|
+
}) : x === "shortcuts" ? /* @__PURE__ */ Q(xl, { onBack: () => M("menu") }) : /* @__PURE__ */ Q("div", {
|
|
6633
6633
|
role: "menu",
|
|
6634
6634
|
class: "markup-menu-view",
|
|
6635
6635
|
children: [
|
|
@@ -6646,31 +6646,31 @@ function Cl({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
6646
6646
|
/* @__PURE__ */ Q("button", {
|
|
6647
6647
|
type: "button",
|
|
6648
6648
|
role: "radio",
|
|
6649
|
-
"aria-checked":
|
|
6649
|
+
"aria-checked": j.mode === "light",
|
|
6650
6650
|
"aria-label": "Light",
|
|
6651
6651
|
title: "Light",
|
|
6652
|
-
class: Z(
|
|
6653
|
-
onClick: () =>
|
|
6652
|
+
class: Z(j.mode === "light" && "is-on"),
|
|
6653
|
+
onClick: () => j.set("light"),
|
|
6654
6654
|
children: /* @__PURE__ */ Q(rc, { size: 14 })
|
|
6655
6655
|
}),
|
|
6656
6656
|
/* @__PURE__ */ Q("button", {
|
|
6657
6657
|
type: "button",
|
|
6658
6658
|
role: "radio",
|
|
6659
|
-
"aria-checked":
|
|
6659
|
+
"aria-checked": j.mode === "dark",
|
|
6660
6660
|
"aria-label": "Dark",
|
|
6661
6661
|
title: "Dark",
|
|
6662
|
-
class: Z(
|
|
6663
|
-
onClick: () =>
|
|
6662
|
+
class: Z(j.mode === "dark" && "is-on"),
|
|
6663
|
+
onClick: () => j.set("dark"),
|
|
6664
6664
|
children: /* @__PURE__ */ Q(ic, { size: 14 })
|
|
6665
6665
|
}),
|
|
6666
6666
|
/* @__PURE__ */ Q("button", {
|
|
6667
6667
|
type: "button",
|
|
6668
6668
|
role: "radio",
|
|
6669
|
-
"aria-checked":
|
|
6670
|
-
"aria-label": `Auto (currently ${
|
|
6671
|
-
title: `Auto, currently ${
|
|
6672
|
-
class: Z(
|
|
6673
|
-
onClick: () =>
|
|
6669
|
+
"aria-checked": j.mode === "auto",
|
|
6670
|
+
"aria-label": `Auto (currently ${j.resolved})`,
|
|
6671
|
+
title: `Auto, currently ${j.resolved}`,
|
|
6672
|
+
class: Z(j.mode === "auto" && "is-on"),
|
|
6673
|
+
onClick: () => j.set("auto"),
|
|
6674
6674
|
children: /* @__PURE__ */ Q(ac, { size: 14 })
|
|
6675
6675
|
})
|
|
6676
6676
|
]
|
|
@@ -6806,11 +6806,11 @@ function Cl({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
6806
6806
|
]
|
|
6807
6807
|
}),
|
|
6808
6808
|
/* @__PURE__ */ Q("button", {
|
|
6809
|
-
ref:
|
|
6809
|
+
ref: D,
|
|
6810
6810
|
type: "button",
|
|
6811
6811
|
role: "menuitem",
|
|
6812
6812
|
class: "markup-menu-row",
|
|
6813
|
-
onClick: () =>
|
|
6813
|
+
onClick: () => M("privacy"),
|
|
6814
6814
|
children: [
|
|
6815
6815
|
/* @__PURE__ */ Q("span", {
|
|
6816
6816
|
class: "ic",
|
|
@@ -6828,11 +6828,11 @@ function Cl({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
6828
6828
|
]
|
|
6829
6829
|
}),
|
|
6830
6830
|
/* @__PURE__ */ Q("button", {
|
|
6831
|
-
ref:
|
|
6831
|
+
ref: O,
|
|
6832
6832
|
type: "button",
|
|
6833
6833
|
role: "menuitem",
|
|
6834
6834
|
class: "markup-menu-row",
|
|
6835
|
-
onClick: () =>
|
|
6835
|
+
onClick: () => M("shortcuts"),
|
|
6836
6836
|
children: [
|
|
6837
6837
|
/* @__PURE__ */ Q("span", {
|
|
6838
6838
|
class: "ic",
|
|
@@ -6868,7 +6868,7 @@ function Cl({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
6868
6868
|
}),
|
|
6869
6869
|
/* @__PURE__ */ Q("span", {
|
|
6870
6870
|
class: "right",
|
|
6871
|
-
children: [
|
|
6871
|
+
children: [P, " ."]
|
|
6872
6872
|
})
|
|
6873
6873
|
]
|
|
6874
6874
|
}),
|
|
@@ -7165,33 +7165,33 @@ var Nl = [], Pl = [
|
|
|
7165
7165
|
}
|
|
7166
7166
|
});
|
|
7167
7167
|
function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r, isVerified: i, isIdentityResolving: a, isSigningIn: o, canDelete: s, isPending: c, error: l, isHidden: u = !1, isLeaving: d = !1, members: f = Nl, onAuthor: p, onSignIn: m, onSignOut: h, onClose: g, onReply: _, onEditComment: v, onDeleteComment: y, onToggleReaction: b, onResolve: x, onDelete: S }) {
|
|
7168
|
-
let C = U(null), w = U(null),
|
|
7168
|
+
let C = U(null), w = U(null), T = U(null), E = U(null), [D, O] = Hr(Fl, { kind: "none" }), ee = ei(D.kind === "none" || D.kind === "editing" ? null : D, 120), k = ee?.value ?? null, A = ee?.isLeaving ?? !1, j = k?.kind === "thread-menu" ? k : null, [M, N] = B(null), { onPointerDown: P, isDragging: F } = wc({
|
|
7169
7169
|
targetRef: C,
|
|
7170
7170
|
shouldStart: (e) => !e.target?.closest("button, a, input, textarea, select"),
|
|
7171
|
-
onMove:
|
|
7171
|
+
onMove: N
|
|
7172
7172
|
});
|
|
7173
7173
|
Dc(C, !d);
|
|
7174
|
-
let
|
|
7174
|
+
let te = e.resolvedAt != null, ne = rt(() => e.comments.filter((e) => !e.deleted), [e.comments]);
|
|
7175
7175
|
V(() => {
|
|
7176
|
-
if (
|
|
7176
|
+
if (D.kind === "none" || D.kind === "editing") return;
|
|
7177
7177
|
function e(e) {
|
|
7178
|
-
let t =
|
|
7179
|
-
t && !e.composedPath().includes(t) &&
|
|
7178
|
+
let t = E.current;
|
|
7179
|
+
t && !e.composedPath().includes(t) && O({ type: "dismiss" });
|
|
7180
7180
|
}
|
|
7181
7181
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
7182
|
-
}, [
|
|
7183
|
-
if (
|
|
7184
|
-
let t = e.comments.find((e) => e._id ===
|
|
7185
|
-
(!t || t.deleted) &&
|
|
7182
|
+
}, [D.kind, O]), V(() => {
|
|
7183
|
+
if (D.kind !== "editing") return;
|
|
7184
|
+
let t = e.comments.find((e) => e._id === D.commentId);
|
|
7185
|
+
(!t || t.deleted) && O({ type: "dismiss" });
|
|
7186
7186
|
}, [
|
|
7187
7187
|
e.comments,
|
|
7188
|
-
|
|
7189
|
-
|
|
7188
|
+
D,
|
|
7189
|
+
O
|
|
7190
7190
|
]);
|
|
7191
7191
|
let re = U(null);
|
|
7192
7192
|
V(() => {
|
|
7193
|
-
re.current ??=
|
|
7194
|
-
}, [
|
|
7193
|
+
re.current ??= ne.at(-1)?.createdAt ?? 0;
|
|
7194
|
+
}, [ne]);
|
|
7195
7195
|
let ie = U(!0);
|
|
7196
7196
|
V(() => {
|
|
7197
7197
|
let e = w.current;
|
|
@@ -7202,16 +7202,16 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7202
7202
|
}
|
|
7203
7203
|
e.scrollHeight - e.scrollTop - e.clientHeight < 80 && (e.scrollTop = e.scrollHeight);
|
|
7204
7204
|
}
|
|
7205
|
-
}, [
|
|
7205
|
+
}, [ne.length]);
|
|
7206
7206
|
let ae = U(null);
|
|
7207
7207
|
H(() => {
|
|
7208
7208
|
let e = C.current;
|
|
7209
7209
|
if (e && typeof e.showPopover == "function") try {
|
|
7210
|
-
d ? (
|
|
7210
|
+
d ? (N((e) => e ?? ae.current), e.matches(":popover-open") && e.hidePopover()) : e.matches(":popover-open") || e.showPopover();
|
|
7211
7211
|
} catch {}
|
|
7212
7212
|
}, [d]), H(() => {
|
|
7213
7213
|
let e = C.current;
|
|
7214
|
-
if (!e || d ||
|
|
7214
|
+
if (!e || d || M != null || typeof e.matches == "function" && !e.matches(":popover-open")) return;
|
|
7215
7215
|
let t = getComputedStyle(e), n = Number.parseFloat(t.left), r = Number.parseFloat(t.top);
|
|
7216
7216
|
Number.isFinite(n) && Number.isFinite(r) && (ae.current = {
|
|
7217
7217
|
left: n,
|
|
@@ -7247,11 +7247,11 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7247
7247
|
return /* @__PURE__ */ Q("div", {
|
|
7248
7248
|
ref: C,
|
|
7249
7249
|
id: d ? void 0 : "markup-thread-popover",
|
|
7250
|
-
class: Z("markup-popover",
|
|
7250
|
+
class: Z("markup-popover", M && "is-floating", F && "is-dragging", u && "is-hud-hidden", d && "is-leaving"),
|
|
7251
7251
|
popover: "auto",
|
|
7252
7252
|
style: {
|
|
7253
|
-
"--markup-pop-x": `${
|
|
7254
|
-
"--markup-pop-y": `${
|
|
7253
|
+
"--markup-pop-x": `${M?.left ?? se.left}px`,
|
|
7254
|
+
"--markup-pop-y": `${M?.top ?? se.top}px`
|
|
7255
7255
|
},
|
|
7256
7256
|
role: "dialog",
|
|
7257
7257
|
"aria-label": "Markup thread",
|
|
@@ -7260,44 +7260,44 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7260
7260
|
children: [
|
|
7261
7261
|
/* @__PURE__ */ Q("header", {
|
|
7262
7262
|
class: "markup-popover-header",
|
|
7263
|
-
onPointerDown:
|
|
7263
|
+
onPointerDown: P,
|
|
7264
7264
|
children: [/* @__PURE__ */ Q("span", {
|
|
7265
7265
|
class: "markup-popover-title",
|
|
7266
7266
|
title: e.url,
|
|
7267
|
-
children:
|
|
7267
|
+
children: ne.length === 1 ? "1 comment" : `${ne.length} comments`
|
|
7268
7268
|
}), /* @__PURE__ */ Q("div", {
|
|
7269
7269
|
class: "markup-popover-header-actions",
|
|
7270
7270
|
children: [
|
|
7271
7271
|
/* @__PURE__ */ Q("div", {
|
|
7272
7272
|
class: "markup-thread-menu",
|
|
7273
7273
|
ref: (e) => {
|
|
7274
|
-
|
|
7274
|
+
D.kind === "thread-menu" && (E.current = e);
|
|
7275
7275
|
},
|
|
7276
7276
|
children: [/* @__PURE__ */ Q("button", {
|
|
7277
7277
|
type: "button",
|
|
7278
|
-
class: Z("markup-icon-btn",
|
|
7278
|
+
class: Z("markup-icon-btn", j != null && "is-open"),
|
|
7279
7279
|
title: "More options",
|
|
7280
|
-
onClick: () =>
|
|
7280
|
+
onClick: () => O({ type: "toggle-thread-menu" }),
|
|
7281
7281
|
children: /* @__PURE__ */ Q(qs, { size: 16 })
|
|
7282
|
-
}),
|
|
7283
|
-
class: Z("markup-thread-menu-list",
|
|
7284
|
-
inert:
|
|
7282
|
+
}), j ? /* @__PURE__ */ Q("div", {
|
|
7283
|
+
class: Z("markup-thread-menu-list", A && "is-leaving"),
|
|
7284
|
+
inert: A || void 0,
|
|
7285
7285
|
children: [/* @__PURE__ */ Q("button", {
|
|
7286
7286
|
type: "button",
|
|
7287
7287
|
class: "markup-thread-menu-item",
|
|
7288
7288
|
onClick: () => {
|
|
7289
7289
|
let t = Oa(e.url, e._id);
|
|
7290
|
-
t && navigator.clipboard.writeText(t).catch(() => {}),
|
|
7290
|
+
t && navigator.clipboard.writeText(t).catch(() => {}), O({ type: "dismiss" });
|
|
7291
7291
|
},
|
|
7292
7292
|
children: "Copy link"
|
|
7293
7293
|
}), s ? /* @__PURE__ */ Q("button", {
|
|
7294
7294
|
type: "button",
|
|
7295
|
-
class: Z("markup-thread-menu-item",
|
|
7295
|
+
class: Z("markup-thread-menu-item", j.confirmDelete && "is-danger"),
|
|
7296
7296
|
disabled: c,
|
|
7297
7297
|
onClick: () => {
|
|
7298
|
-
|
|
7298
|
+
D.kind === "thread-menu" && (D.confirmDelete ? (O({ type: "dismiss" }), S()) : O({ type: "arm-thread-delete" }));
|
|
7299
7299
|
},
|
|
7300
|
-
children:
|
|
7300
|
+
children: j.confirmDelete ? "Confirm delete" : "Delete thread…"
|
|
7301
7301
|
}) : null]
|
|
7302
7302
|
}) : null]
|
|
7303
7303
|
}),
|
|
@@ -7322,8 +7322,8 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7322
7322
|
/* @__PURE__ */ Q("ol", {
|
|
7323
7323
|
ref: w,
|
|
7324
7324
|
class: "markup-comments",
|
|
7325
|
-
children:
|
|
7326
|
-
let i = !t.fromDashboard && r != null && t.authorClientId === r, a = n === 0, o = i && !
|
|
7325
|
+
children: ne.map((t, n) => {
|
|
7326
|
+
let i = !t.fromDashboard && r != null && t.authorClientId === r, a = n === 0, o = i && !te && !t.deleted, s = i && !te && !t.deleted && !a, l = D.kind === "editing" && D.commentId === t._id, u = (o || s) && !l && !t.deleted, d = k?.kind === "comment-menu" && k.commentId === t._id ? k : null, p = k?.kind === "reaction-picker" && k.commentId === t._id ? k : null, m = d != null, h = d?.confirmDelete ?? !1, g = p != null, _ = p?.direction ?? "down", x = d?.direction ?? "down";
|
|
7327
7327
|
return /* @__PURE__ */ Q("li", {
|
|
7328
7328
|
class: Z("markup-comment", re.current != null && t.createdAt > re.current && "is-new"),
|
|
7329
7329
|
children: [
|
|
@@ -7360,26 +7360,26 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7360
7360
|
}),
|
|
7361
7361
|
/* @__PURE__ */ Q("div", {
|
|
7362
7362
|
class: "markup-thread-actions",
|
|
7363
|
-
children: [!
|
|
7363
|
+
children: [!te && !l ? /* @__PURE__ */ Q(Ll, {
|
|
7364
7364
|
comment: t,
|
|
7365
7365
|
pickerOpen: g,
|
|
7366
|
-
pickerLeaving: g &&
|
|
7366
|
+
pickerLeaving: g && A,
|
|
7367
7367
|
pickerDirection: _,
|
|
7368
|
-
pickerSide:
|
|
7368
|
+
pickerSide: ne.length === 1,
|
|
7369
7369
|
pickerRef: (e) => {
|
|
7370
|
-
g && (
|
|
7370
|
+
g && (E.current = e);
|
|
7371
7371
|
},
|
|
7372
7372
|
onPickerClick: (e) => {
|
|
7373
7373
|
if (g) {
|
|
7374
|
-
|
|
7374
|
+
O({
|
|
7375
7375
|
type: "toggle-reaction-picker",
|
|
7376
7376
|
commentId: t._id,
|
|
7377
7377
|
direction: "down"
|
|
7378
7378
|
});
|
|
7379
7379
|
return;
|
|
7380
7380
|
}
|
|
7381
|
-
if (
|
|
7382
|
-
|
|
7381
|
+
if (ne.length === 1) {
|
|
7382
|
+
O({
|
|
7383
7383
|
type: "toggle-reaction-picker",
|
|
7384
7384
|
commentId: t._id,
|
|
7385
7385
|
direction: "down"
|
|
@@ -7387,19 +7387,19 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7387
7387
|
return;
|
|
7388
7388
|
}
|
|
7389
7389
|
let n = e.currentTarget.getBoundingClientRect(), r = w.current?.getBoundingClientRect(), i = r ? r.bottom - n.bottom : Infinity;
|
|
7390
|
-
|
|
7390
|
+
O({
|
|
7391
7391
|
type: "toggle-reaction-picker",
|
|
7392
7392
|
commentId: t._id,
|
|
7393
7393
|
direction: i < 44 ? "up" : "down"
|
|
7394
7394
|
});
|
|
7395
7395
|
},
|
|
7396
7396
|
onPickerSelect: (e) => {
|
|
7397
|
-
|
|
7397
|
+
O({ type: "dismiss" }), b(t._id, e);
|
|
7398
7398
|
}
|
|
7399
7399
|
}) : null, u ? /* @__PURE__ */ Q("div", {
|
|
7400
|
-
class: Z("markup-thread-menu markup-comment-menu", m && "is-open", m && x === "up" && "is-up",
|
|
7400
|
+
class: Z("markup-thread-menu markup-comment-menu", m && "is-open", m && x === "up" && "is-up", ne.length === 1 && "is-side"),
|
|
7401
7401
|
ref: (e) => {
|
|
7402
|
-
m && (
|
|
7402
|
+
m && (E.current = e);
|
|
7403
7403
|
},
|
|
7404
7404
|
children: [/* @__PURE__ */ Q("button", {
|
|
7405
7405
|
type: "button",
|
|
@@ -7407,15 +7407,15 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7407
7407
|
title: "More options",
|
|
7408
7408
|
onClick: (e) => {
|
|
7409
7409
|
if (m) {
|
|
7410
|
-
|
|
7410
|
+
O({
|
|
7411
7411
|
type: "toggle-comment-menu",
|
|
7412
7412
|
commentId: t._id,
|
|
7413
7413
|
direction: "down"
|
|
7414
7414
|
});
|
|
7415
7415
|
return;
|
|
7416
7416
|
}
|
|
7417
|
-
if (
|
|
7418
|
-
|
|
7417
|
+
if (ne.length === 1) {
|
|
7418
|
+
O({
|
|
7419
7419
|
type: "toggle-comment-menu",
|
|
7420
7420
|
commentId: t._id,
|
|
7421
7421
|
direction: "down"
|
|
@@ -7423,7 +7423,7 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7423
7423
|
return;
|
|
7424
7424
|
}
|
|
7425
7425
|
let n = e.currentTarget.getBoundingClientRect(), r = w.current?.getBoundingClientRect(), i = (+!!o + +!!s) * 32 + 8 + 6, a = r ? r.bottom - n.bottom : Infinity;
|
|
7426
|
-
|
|
7426
|
+
O({
|
|
7427
7427
|
type: "toggle-comment-menu",
|
|
7428
7428
|
commentId: t._id,
|
|
7429
7429
|
direction: a < i ? "up" : "down"
|
|
@@ -7431,13 +7431,13 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7431
7431
|
},
|
|
7432
7432
|
children: /* @__PURE__ */ Q(qs, { size: 16 })
|
|
7433
7433
|
}), m ? /* @__PURE__ */ Q("div", {
|
|
7434
|
-
class: Z("markup-thread-menu-list",
|
|
7435
|
-
inert:
|
|
7434
|
+
class: Z("markup-thread-menu-list", A && "is-leaving"),
|
|
7435
|
+
inert: A || void 0,
|
|
7436
7436
|
children: [o ? /* @__PURE__ */ Q("button", {
|
|
7437
7437
|
type: "button",
|
|
7438
7438
|
class: "markup-thread-menu-item",
|
|
7439
7439
|
onClick: () => {
|
|
7440
|
-
|
|
7440
|
+
O({
|
|
7441
7441
|
type: "start-edit",
|
|
7442
7442
|
commentId: t._id,
|
|
7443
7443
|
body: t.body
|
|
@@ -7448,7 +7448,7 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7448
7448
|
type: "button",
|
|
7449
7449
|
class: Z("markup-thread-menu-item", h && "is-danger"),
|
|
7450
7450
|
onClick: () => {
|
|
7451
|
-
|
|
7451
|
+
D.kind === "comment-menu" && (D.confirmDelete ? (O({ type: "dismiss" }), y(t._id)) : O({ type: "arm-comment-delete" }));
|
|
7452
7452
|
},
|
|
7453
7453
|
children: h ? "Confirm delete" : "Delete…"
|
|
7454
7454
|
}) : null]
|
|
@@ -7457,24 +7457,24 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7457
7457
|
})
|
|
7458
7458
|
]
|
|
7459
7459
|
}),
|
|
7460
|
-
l &&
|
|
7460
|
+
l && D.kind === "editing" ? /* @__PURE__ */ Q("form", {
|
|
7461
7461
|
class: "markup-comment-edit-form",
|
|
7462
7462
|
onSubmit: async (e) => {
|
|
7463
|
-
if (e.preventDefault(),
|
|
7464
|
-
let n =
|
|
7463
|
+
if (e.preventDefault(), D.kind !== "editing") return;
|
|
7464
|
+
let n = D.draft.trim();
|
|
7465
7465
|
if (!n || n === t.body) {
|
|
7466
|
-
|
|
7466
|
+
O({ type: "dismiss" });
|
|
7467
7467
|
return;
|
|
7468
7468
|
}
|
|
7469
7469
|
try {
|
|
7470
|
-
await v(t._id, n),
|
|
7470
|
+
await v(t._id, n), O({ type: "dismiss" });
|
|
7471
7471
|
} catch {}
|
|
7472
7472
|
},
|
|
7473
7473
|
children: [/* @__PURE__ */ Q(ll, {
|
|
7474
7474
|
class: "markup-comment-edit-input",
|
|
7475
7475
|
label: "Edit comment",
|
|
7476
|
-
value:
|
|
7477
|
-
onChange: (e) =>
|
|
7476
|
+
value: D.draft,
|
|
7477
|
+
onChange: (e) => O({
|
|
7478
7478
|
type: "update-draft",
|
|
7479
7479
|
draft: e
|
|
7480
7480
|
}),
|
|
@@ -7486,13 +7486,13 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7486
7486
|
children: [/* @__PURE__ */ Q("button", {
|
|
7487
7487
|
type: "button",
|
|
7488
7488
|
class: "markup-btn markup-btn-ghost",
|
|
7489
|
-
onClick: () =>
|
|
7489
|
+
onClick: () => O({ type: "dismiss" }),
|
|
7490
7490
|
disabled: c,
|
|
7491
7491
|
children: "Cancel"
|
|
7492
7492
|
}), /* @__PURE__ */ Q("button", {
|
|
7493
7493
|
type: "submit",
|
|
7494
7494
|
class: "markup-btn markup-btn-primary",
|
|
7495
|
-
disabled: c ||
|
|
7495
|
+
disabled: c || D.draft.trim().length === 0,
|
|
7496
7496
|
children: "Save"
|
|
7497
7497
|
})]
|
|
7498
7498
|
})]
|
|
@@ -7503,7 +7503,7 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7503
7503
|
n === 0 && e.screenshotUrl ? /* @__PURE__ */ Q("button", {
|
|
7504
7504
|
type: "button",
|
|
7505
7505
|
class: "markup-comment-screenshot",
|
|
7506
|
-
onClick: () =>
|
|
7506
|
+
onClick: () => T.current?.showModal(),
|
|
7507
7507
|
children: /* @__PURE__ */ Q("img", {
|
|
7508
7508
|
src: e.screenshotUrl,
|
|
7509
7509
|
alt: "Screenshot"
|
|
@@ -7511,7 +7511,7 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7511
7511
|
}) : null,
|
|
7512
7512
|
!l && t.reactions.length > 0 ? /* @__PURE__ */ Q(Rl, {
|
|
7513
7513
|
comment: t,
|
|
7514
|
-
isResolved:
|
|
7514
|
+
isResolved: te,
|
|
7515
7515
|
onToggle: (e) => b(t._id, e)
|
|
7516
7516
|
}) : null
|
|
7517
7517
|
]
|
|
@@ -7519,15 +7519,15 @@ function Il({ thread: e, authorName: t, authorPromptMode: n, currentClientId: r,
|
|
|
7519
7519
|
})
|
|
7520
7520
|
}),
|
|
7521
7521
|
e.screenshotUrl ? /* @__PURE__ */ Q("dialog", {
|
|
7522
|
-
ref:
|
|
7522
|
+
ref: T,
|
|
7523
7523
|
class: "markup-lightbox",
|
|
7524
|
-
onClick: () =>
|
|
7524
|
+
onClick: () => T.current?.close(),
|
|
7525
7525
|
children: [/* @__PURE__ */ Q("button", {
|
|
7526
7526
|
type: "button",
|
|
7527
7527
|
class: "markup-lightbox-close markup-icon-btn",
|
|
7528
7528
|
"aria-label": "Close screenshot",
|
|
7529
7529
|
onClick: (e) => {
|
|
7530
|
-
e.stopPropagation(),
|
|
7530
|
+
e.stopPropagation(), T.current?.close();
|
|
7531
7531
|
},
|
|
7532
7532
|
children: /* @__PURE__ */ Q(Ws, { size: 16 })
|
|
7533
7533
|
}), /* @__PURE__ */ Q("img", {
|
|
@@ -7894,27 +7894,27 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7894
7894
|
n = !0;
|
|
7895
7895
|
};
|
|
7896
7896
|
}, [e, t]);
|
|
7897
|
-
let [y, b] = B(n), [x, C] = B(!0), [w,
|
|
7898
|
-
|
|
7897
|
+
let [y, b] = B(n), [x, C] = B(!0), [w, T] = B(!1), [E, D] = B(!0), [O, ee] = B(!1), [k, A] = B(null), j = W(() => A(null), []), M = U(h);
|
|
7898
|
+
M.current = h, Bs(h, e, t, (e) => g({
|
|
7899
7899
|
type: "signed-in",
|
|
7900
7900
|
identity: e
|
|
7901
7901
|
}), () => g({ type: "unauthorized" }));
|
|
7902
|
-
let
|
|
7902
|
+
let N = rt(() => Fi({
|
|
7903
7903
|
apiUrl: e,
|
|
7904
7904
|
apiKey: t,
|
|
7905
7905
|
getToken: () => {
|
|
7906
|
-
let e =
|
|
7906
|
+
let e = M.current;
|
|
7907
7907
|
return e.kind !== "verified" || e.identity.token == null ? null : {
|
|
7908
7908
|
token: e.identity.token,
|
|
7909
7909
|
expiresAt: e.identity.tokenExpiresAt
|
|
7910
7910
|
};
|
|
7911
7911
|
},
|
|
7912
7912
|
getStorageMode: () => {
|
|
7913
|
-
let e =
|
|
7913
|
+
let e = M.current;
|
|
7914
7914
|
return e.kind === "verified" ? e.identity.storage : null;
|
|
7915
7915
|
},
|
|
7916
7916
|
getAnonToken: () => {
|
|
7917
|
-
let e =
|
|
7917
|
+
let e = M.current;
|
|
7918
7918
|
return e.kind === "anon" ? e.identity.anonToken : null;
|
|
7919
7919
|
},
|
|
7920
7920
|
onUnauthorized: () => {
|
|
@@ -7924,18 +7924,18 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7924
7924
|
e,
|
|
7925
7925
|
t,
|
|
7926
7926
|
g
|
|
7927
|
-
]), [
|
|
7927
|
+
]), [P, F] = B({ kind: "idle" }), [te, ne] = B([]);
|
|
7928
7928
|
V(() => {
|
|
7929
7929
|
let e = !1;
|
|
7930
|
-
return
|
|
7931
|
-
e ||
|
|
7930
|
+
return N.listMembers().then((t) => {
|
|
7931
|
+
e || ne(t.members);
|
|
7932
7932
|
}).catch(() => {}), () => {
|
|
7933
7933
|
e = !0;
|
|
7934
7934
|
};
|
|
7935
|
-
}, [
|
|
7935
|
+
}, [N]);
|
|
7936
7936
|
let [re, ie] = B(0), [ae, oe] = Hr(sa, { kind: "idle" }), [se, ce] = B(!1), le = U(0), ue = W(() => {
|
|
7937
7937
|
let e = le.current;
|
|
7938
|
-
oe({ type: "fetch" }),
|
|
7938
|
+
oe({ type: "fetch" }), N.listNotifications().then((t) => {
|
|
7939
7939
|
le.current === e && oe({
|
|
7940
7940
|
type: "loaded",
|
|
7941
7941
|
items: t.notifications
|
|
@@ -7946,7 +7946,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7946
7946
|
error: t instanceof Error ? t.message : "Failed to load."
|
|
7947
7947
|
});
|
|
7948
7948
|
});
|
|
7949
|
-
}, [
|
|
7949
|
+
}, [N, oe]), de = W((e) => {
|
|
7950
7950
|
le.current += 1, oe({
|
|
7951
7951
|
type: "patch",
|
|
7952
7952
|
update: e
|
|
@@ -7972,7 +7972,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7972
7972
|
if (h.kind !== "unresolved" && h.kind !== "recovering") return;
|
|
7973
7973
|
let e = h.kind === "recovering" ? h.preserved : m.preserved, t = !1, n = null, r = 1e3;
|
|
7974
7974
|
function i() {
|
|
7975
|
-
|
|
7975
|
+
N.mintAnonIdentity().then(({ clientId: n, token: r }) => {
|
|
7976
7976
|
if (t) return;
|
|
7977
7977
|
let i = {
|
|
7978
7978
|
clientId: n,
|
|
@@ -7992,12 +7992,12 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7992
7992
|
t = !0, n && clearTimeout(n);
|
|
7993
7993
|
};
|
|
7994
7994
|
}, [
|
|
7995
|
-
|
|
7995
|
+
N,
|
|
7996
7996
|
h,
|
|
7997
7997
|
g,
|
|
7998
7998
|
m
|
|
7999
7999
|
]);
|
|
8000
|
-
let { token: R, isCurrent: Ge } = Is(
|
|
8000
|
+
let { token: R, isCurrent: Ge } = Is(N, h), [Ke, qe] = B(null);
|
|
8001
8001
|
V(() => {
|
|
8002
8002
|
let t = new Br(e.replace(/\.convex\.site(\/.*)?$/, ".convex.cloud"));
|
|
8003
8003
|
return qe(t), () => {
|
|
@@ -8012,7 +8012,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8012
8012
|
subscriptionToken: R,
|
|
8013
8013
|
route: o,
|
|
8014
8014
|
viewerClientId: Le,
|
|
8015
|
-
includeResolved:
|
|
8015
|
+
includeResolved: O
|
|
8016
8016
|
}, (e) => {
|
|
8017
8017
|
e !== void 0 && (d(e), p(!0));
|
|
8018
8018
|
});
|
|
@@ -8021,7 +8021,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8021
8021
|
R,
|
|
8022
8022
|
o,
|
|
8023
8023
|
Le,
|
|
8024
|
-
|
|
8024
|
+
O,
|
|
8025
8025
|
ve,
|
|
8026
8026
|
Se
|
|
8027
8027
|
]), V(() => {
|
|
@@ -8046,7 +8046,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8046
8046
|
]), V(() => {
|
|
8047
8047
|
if (Je.current || !f) return;
|
|
8048
8048
|
let e = wa();
|
|
8049
|
-
e !== null && (u.find((t) => t._id === e) &&
|
|
8049
|
+
e !== null && (u.find((t) => t._id === e) && F({
|
|
8050
8050
|
kind: "thread",
|
|
8051
8051
|
threadId: e
|
|
8052
8052
|
}), Ea()), Je.current = !0;
|
|
@@ -8058,7 +8058,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8058
8058
|
}
|
|
8059
8059
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
8060
8060
|
}, [ke]), V(() => {
|
|
8061
|
-
Ae &&
|
|
8061
|
+
Ae && A(null);
|
|
8062
8062
|
}, [Ae]), V(() => {
|
|
8063
8063
|
if (Oe.kind !== "hidden-with-toast") return;
|
|
8064
8064
|
let e = window.setTimeout(() => ke({ type: "dismiss-toast" }), 5e3);
|
|
@@ -8083,24 +8083,24 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8083
8083
|
};
|
|
8084
8084
|
}, []);
|
|
8085
8085
|
let z = W(() => {
|
|
8086
|
-
ve(), Se(), be("comment_started"),
|
|
8086
|
+
ve(), Se(), be("comment_started"), F({ kind: "placing" });
|
|
8087
8087
|
}, [ve, Se]);
|
|
8088
8088
|
V(() => {
|
|
8089
8089
|
function e(e) {
|
|
8090
|
-
e.key === "c" && (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey ||
|
|
8090
|
+
e.key === "c" && (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey || P.kind === "idle" && (Ae || eu() || (e.preventDefault(), z())));
|
|
8091
8091
|
}
|
|
8092
8092
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
8093
8093
|
}, [
|
|
8094
|
-
|
|
8094
|
+
P.kind,
|
|
8095
8095
|
Ae,
|
|
8096
8096
|
z
|
|
8097
8097
|
]);
|
|
8098
8098
|
let Ye = W(() => {
|
|
8099
|
-
|
|
8099
|
+
F({ kind: "idle" }), ve(), Se();
|
|
8100
8100
|
}, [ve, Se]), Xe = U(0), Ze = W((e, t, n) => {
|
|
8101
8101
|
let i = t + window.scrollX, a = n + window.scrollY, o = ++Xe.current;
|
|
8102
|
-
if (r?.enabled === !1 || !
|
|
8103
|
-
|
|
8102
|
+
if (r?.enabled === !1 || !E) {
|
|
8103
|
+
F({
|
|
8104
8104
|
kind: "composing-new",
|
|
8105
8105
|
coords: e,
|
|
8106
8106
|
pageX: i,
|
|
@@ -8114,7 +8114,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8114
8114
|
});
|
|
8115
8115
|
return;
|
|
8116
8116
|
}
|
|
8117
|
-
|
|
8117
|
+
F({
|
|
8118
8118
|
kind: "composing-new",
|
|
8119
8119
|
coords: e,
|
|
8120
8120
|
pageX: i,
|
|
@@ -8134,7 +8134,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8134
8134
|
x: t,
|
|
8135
8135
|
y: n
|
|
8136
8136
|
}, c).then((e) => {
|
|
8137
|
-
|
|
8137
|
+
F((t) => t.kind !== "composing-new" || t.captureToken !== o ? t : {
|
|
8138
8138
|
...t,
|
|
8139
8139
|
screenshot: e?.blob ?? null,
|
|
8140
8140
|
isScreenshotCapturing: !1,
|
|
@@ -8143,7 +8143,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8143
8143
|
screenshotRedactedSelectors: e?.redactedSelectors ?? []
|
|
8144
8144
|
}), be("screenshot_captured", { ok: e != null });
|
|
8145
8145
|
});
|
|
8146
|
-
}, [r,
|
|
8146
|
+
}, [r, E]), Qe = W((e, t) => {
|
|
8147
8147
|
g({
|
|
8148
8148
|
type: "author-set",
|
|
8149
8149
|
name: e,
|
|
@@ -8169,17 +8169,17 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8169
8169
|
ye,
|
|
8170
8170
|
g
|
|
8171
8171
|
]), tt = W(async (e, t) => {
|
|
8172
|
-
if (
|
|
8172
|
+
if (P.kind !== "composing-new") return;
|
|
8173
8173
|
let n = oa(h);
|
|
8174
8174
|
n && await _e(async () => {
|
|
8175
8175
|
let r;
|
|
8176
|
-
if (t &&
|
|
8177
|
-
let { uploadUrl: e } = await
|
|
8176
|
+
if (t && P.screenshot) {
|
|
8177
|
+
let { uploadUrl: e } = await N.getScreenshotUploadUrl().catch(We), t;
|
|
8178
8178
|
try {
|
|
8179
8179
|
t = await fetch(e, {
|
|
8180
8180
|
method: "POST",
|
|
8181
|
-
headers: { "Content-Type":
|
|
8182
|
-
body:
|
|
8181
|
+
headers: { "Content-Type": P.screenshot.type || "image/png" },
|
|
8182
|
+
body: P.screenshot,
|
|
8183
8183
|
signal: AbortSignal.timeout(6e4)
|
|
8184
8184
|
});
|
|
8185
8185
|
} catch (e) {
|
|
@@ -8189,17 +8189,17 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8189
8189
|
let { storageId: n } = await t.json();
|
|
8190
8190
|
r = n;
|
|
8191
8191
|
}
|
|
8192
|
-
let i = Gr(e), a = await
|
|
8192
|
+
let i = Gr(e), a = await N.createThread({
|
|
8193
8193
|
url: window.location.href,
|
|
8194
8194
|
route: o,
|
|
8195
|
-
anchorSelector:
|
|
8196
|
-
anchorText:
|
|
8197
|
-
anchorX:
|
|
8198
|
-
anchorY:
|
|
8199
|
-
anchorOffsetX:
|
|
8200
|
-
anchorOffsetY:
|
|
8201
|
-
viewportW:
|
|
8202
|
-
viewportY:
|
|
8195
|
+
anchorSelector: P.coords.anchorSelector,
|
|
8196
|
+
anchorText: P.coords.anchorText,
|
|
8197
|
+
anchorX: P.coords.anchorX,
|
|
8198
|
+
anchorY: P.coords.anchorY,
|
|
8199
|
+
anchorOffsetX: P.coords.anchorOffsetX,
|
|
8200
|
+
anchorOffsetY: P.coords.anchorOffsetY,
|
|
8201
|
+
viewportW: P.coords.viewportW,
|
|
8202
|
+
viewportY: P.coords.viewportY,
|
|
8203
8203
|
userAgent: navigator.userAgent,
|
|
8204
8204
|
authorName: n.name,
|
|
8205
8205
|
authorEmail: n.email,
|
|
@@ -8210,44 +8210,44 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8210
8210
|
d((e) => [...e, a.thread]), be("comment_submitted", {
|
|
8211
8211
|
hasScreenshot: r != null,
|
|
8212
8212
|
hasMentions: i.length > 0
|
|
8213
|
-
}),
|
|
8213
|
+
}), F({
|
|
8214
8214
|
kind: "thread",
|
|
8215
8215
|
threadId: a.thread._id
|
|
8216
8216
|
});
|
|
8217
8217
|
});
|
|
8218
8218
|
}, [
|
|
8219
|
-
M,
|
|
8220
|
-
h,
|
|
8221
8219
|
N,
|
|
8220
|
+
h,
|
|
8221
|
+
P,
|
|
8222
8222
|
We,
|
|
8223
8223
|
o,
|
|
8224
8224
|
_e
|
|
8225
8225
|
]), nt = W(async () => {
|
|
8226
|
-
if (
|
|
8227
|
-
let e =
|
|
8226
|
+
if (P.kind !== "thread") return;
|
|
8227
|
+
let e = P.threadId;
|
|
8228
8228
|
await _e(async () => {
|
|
8229
|
-
await
|
|
8229
|
+
await N.deleteThread(e), d((t) => t.filter((t) => t._id !== e)), F({ kind: "idle" });
|
|
8230
8230
|
});
|
|
8231
8231
|
}, [
|
|
8232
|
-
M,
|
|
8233
8232
|
N,
|
|
8233
|
+
P,
|
|
8234
8234
|
_e
|
|
8235
8235
|
]), H = W(async () => {
|
|
8236
|
-
if (
|
|
8237
|
-
let e =
|
|
8236
|
+
if (P.kind !== "thread") return;
|
|
8237
|
+
let e = P.threadId;
|
|
8238
8238
|
await _e(async () => {
|
|
8239
|
-
await
|
|
8239
|
+
await N.resolveThread(e, Le), d((t) => t.filter((t) => t._id !== e)), be("thread_resolved"), F({ kind: "idle" });
|
|
8240
8240
|
});
|
|
8241
8241
|
}, [
|
|
8242
|
-
M,
|
|
8243
8242
|
N,
|
|
8243
|
+
P,
|
|
8244
8244
|
Le,
|
|
8245
8245
|
_e
|
|
8246
8246
|
]), it = W((e) => {
|
|
8247
8247
|
if (e.readAt ?? (ie((e) => Math.max(0, e - 1)), de((t) => t.map((t) => t._id === e._id ? {
|
|
8248
8248
|
...t,
|
|
8249
8249
|
readAt: Date.now()
|
|
8250
|
-
} : t)),
|
|
8250
|
+
} : t)), N.markNotificationRead(e._id).catch(() => {})), u.some((t) => t._id === e.threadId)) F({
|
|
8251
8251
|
kind: "thread",
|
|
8252
8252
|
threadId: e.threadId
|
|
8253
8253
|
});
|
|
@@ -8256,21 +8256,21 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8256
8256
|
t && (window.location.href = t);
|
|
8257
8257
|
}
|
|
8258
8258
|
}, [
|
|
8259
|
-
|
|
8259
|
+
N,
|
|
8260
8260
|
de,
|
|
8261
8261
|
u
|
|
8262
8262
|
]), at = W(() => {
|
|
8263
8263
|
ce(!0), ie(0), de((e) => e.map((e) => e.readAt == null ? {
|
|
8264
8264
|
...e,
|
|
8265
8265
|
readAt: Date.now()
|
|
8266
|
-
} : e)),
|
|
8267
|
-
}, [
|
|
8268
|
-
if (
|
|
8266
|
+
} : e)), N.markAllNotificationsRead().catch(() => {}).finally(() => ce(!1));
|
|
8267
|
+
}, [N, de]), ot = W(async (e) => {
|
|
8268
|
+
if (P.kind !== "thread") return;
|
|
8269
8269
|
let t = oa(h);
|
|
8270
8270
|
if (!t) return;
|
|
8271
|
-
let n =
|
|
8271
|
+
let n = P.threadId;
|
|
8272
8272
|
await _e(async () => {
|
|
8273
|
-
let r = Gr(e), i = await
|
|
8273
|
+
let r = Gr(e), i = await N.addComment(n, {
|
|
8274
8274
|
body: e,
|
|
8275
8275
|
authorName: t.name,
|
|
8276
8276
|
authorEmail: t.email,
|
|
@@ -8279,63 +8279,63 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8279
8279
|
d((e) => e.map((e) => e._id === n ? i.thread : e)), be("reply_submitted", { hasMentions: r.length > 0 });
|
|
8280
8280
|
});
|
|
8281
8281
|
}, [
|
|
8282
|
-
M,
|
|
8283
|
-
h,
|
|
8284
8282
|
N,
|
|
8283
|
+
h,
|
|
8284
|
+
P,
|
|
8285
8285
|
We,
|
|
8286
8286
|
_e
|
|
8287
8287
|
]), st = W(async (e, t) => {
|
|
8288
|
-
if (
|
|
8289
|
-
let n =
|
|
8288
|
+
if (P.kind !== "thread" || h.kind !== "anon" && h.kind !== "verified") return;
|
|
8289
|
+
let n = P.threadId;
|
|
8290
8290
|
await _e(async () => {
|
|
8291
|
-
let r = Gr(t), i = await
|
|
8291
|
+
let r = Gr(t), i = await N.editComment(n, e, {
|
|
8292
8292
|
body: t,
|
|
8293
8293
|
mentions: r.length > 0 ? r : void 0
|
|
8294
8294
|
});
|
|
8295
8295
|
d((e) => e.map((e) => e._id === n ? i.thread : e));
|
|
8296
8296
|
}, { rethrow: !0 });
|
|
8297
8297
|
}, [
|
|
8298
|
-
M,
|
|
8299
|
-
h,
|
|
8300
8298
|
N,
|
|
8299
|
+
h,
|
|
8300
|
+
P,
|
|
8301
8301
|
_e
|
|
8302
8302
|
]), ct = W(async (e) => {
|
|
8303
|
-
if (
|
|
8304
|
-
let t =
|
|
8303
|
+
if (P.kind !== "thread" || h.kind !== "anon" && h.kind !== "verified") return;
|
|
8304
|
+
let t = P.threadId;
|
|
8305
8305
|
await _e(async () => {
|
|
8306
|
-
let n = await
|
|
8306
|
+
let n = await N.deleteComment(t, e);
|
|
8307
8307
|
d((e) => e.map((e) => e._id === t ? n.thread : e));
|
|
8308
8308
|
});
|
|
8309
8309
|
}, [
|
|
8310
|
-
M,
|
|
8311
|
-
h,
|
|
8312
8310
|
N,
|
|
8311
|
+
h,
|
|
8312
|
+
P,
|
|
8313
8313
|
_e
|
|
8314
8314
|
]), lt = W(async (e, t) => {
|
|
8315
|
-
if (
|
|
8315
|
+
if (P.kind !== "thread") return;
|
|
8316
8316
|
if (!He) {
|
|
8317
8317
|
Ve("sign_in_required");
|
|
8318
8318
|
return;
|
|
8319
8319
|
}
|
|
8320
8320
|
let n = oa(h);
|
|
8321
8321
|
if (!n) return;
|
|
8322
|
-
let r =
|
|
8322
|
+
let r = P.threadId;
|
|
8323
8323
|
await xe(async () => {
|
|
8324
|
-
let i = await
|
|
8324
|
+
let i = await N.toggleReaction(e, {
|
|
8325
8325
|
emoji: t,
|
|
8326
8326
|
authorName: n.name
|
|
8327
8327
|
}).catch(We);
|
|
8328
8328
|
d((e) => e.map((e) => e._id === r ? i.thread : e)), be("reaction_added");
|
|
8329
8329
|
});
|
|
8330
8330
|
}, [
|
|
8331
|
-
|
|
8331
|
+
N,
|
|
8332
8332
|
He,
|
|
8333
8333
|
h,
|
|
8334
|
-
|
|
8334
|
+
P,
|
|
8335
8335
|
We,
|
|
8336
8336
|
xe
|
|
8337
|
-
]), [ut, dt] = B(!1), ft = W(async () => await Ce(async () => (await
|
|
8338
|
-
|
|
8337
|
+
]), [ut, dt] = B(!1), ft = W(async () => await Ce(async () => (await N.forgetMe(), F({ kind: "idle" }), g({ type: "forget-me" }), dt(!0), !0)) === !0, [
|
|
8338
|
+
N,
|
|
8339
8339
|
Ce,
|
|
8340
8340
|
g
|
|
8341
8341
|
]);
|
|
@@ -8346,10 +8346,10 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8346
8346
|
}, [ut]);
|
|
8347
8347
|
let [G, pt] = B(!1), mt = W(async () => {
|
|
8348
8348
|
await we(async () => {
|
|
8349
|
-
await
|
|
8349
|
+
await N.signOut(), F({ kind: "idle" }), g({ type: "signed-out" }), pt(!0);
|
|
8350
8350
|
});
|
|
8351
8351
|
}, [
|
|
8352
|
-
|
|
8352
|
+
N,
|
|
8353
8353
|
we,
|
|
8354
8354
|
g
|
|
8355
8355
|
]);
|
|
@@ -8358,13 +8358,13 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8358
8358
|
let e = window.setTimeout(() => pt(!1), 5e3);
|
|
8359
8359
|
return () => window.clearTimeout(e);
|
|
8360
8360
|
}, [G]);
|
|
8361
|
-
let ht =
|
|
8361
|
+
let ht = P.kind === "thread" ? u.find((e) => e._id === P.threadId) ?? null : null, gt = Fe || Le != null && Le === ht?.authorClientId, _t = P.kind === "thread" ? P.threadId : null, vt = rt(() => w ? u.filter((e) => e._id === _t || Ca(e.url, c, a) === void 0) : u, [
|
|
8362
8362
|
u,
|
|
8363
8363
|
w,
|
|
8364
8364
|
c,
|
|
8365
8365
|
_t,
|
|
8366
8366
|
a
|
|
8367
|
-
]), yt = x &&
|
|
8367
|
+
]), yt = x && P.kind !== "placing" ? u.length - vt.length : 0, bt = U(/* @__PURE__ */ new Map()), xt = rt(() => {
|
|
8368
8368
|
let e = bt.current, t = vt.map((t) => {
|
|
8369
8369
|
let { point: n, memory: r } = Ti({
|
|
8370
8370
|
anchorX: t.anchorX,
|
|
@@ -8396,7 +8396,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8396
8396
|
elements: xt.flatMap((e) => e.point.element ? [e.point.element] : [])
|
|
8397
8397
|
};
|
|
8398
8398
|
}, [xt]);
|
|
8399
|
-
let Ct = vt.some((e) => e.anchorSelector != null), wt = $r(
|
|
8399
|
+
let Ct = vt.some((e) => e.anchorSelector != null), wt = $r(P.kind !== "placing" && !Ae && x ? xt : Yl, (e) => e.thread._id, 140), Tt = $r(!Ae || P.kind === "placing" || P.kind === "composing-new" ? Zl : Ql, (e) => e.key, 160), Et = [];
|
|
8400
8400
|
Oe.kind === "hidden-with-toast" && Et.push({
|
|
8401
8401
|
key: "hud-hidden",
|
|
8402
8402
|
body: /* @__PURE__ */ Q(S, { children: [
|
|
@@ -8418,7 +8418,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8418
8418
|
key: "signed-out",
|
|
8419
8419
|
body: "Signed out — commenting anonymously again."
|
|
8420
8420
|
});
|
|
8421
|
-
let Dt = $r(Et, (e) => e.key, 220), Ot = $r(
|
|
8421
|
+
let Dt = $r(Et, (e) => e.key, 220), Ot = $r(P.kind === "thread" && ht ? [ht] : Xl, (e) => e._id, 160), K = ei(P.kind === "composing-new" ? P : null, 160), kt = ei(k, 140);
|
|
8422
8422
|
return V(() => {
|
|
8423
8423
|
if (!Ct) return;
|
|
8424
8424
|
let e = null, t = !1;
|
|
@@ -8438,9 +8438,9 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8438
8438
|
r.disconnect(), e != null && cancelAnimationFrame(e);
|
|
8439
8439
|
};
|
|
8440
8440
|
}, [Ct]), V(() => {
|
|
8441
|
-
|
|
8441
|
+
P.kind === "thread" && ht == null && Ye();
|
|
8442
8442
|
}, [
|
|
8443
|
-
|
|
8443
|
+
P,
|
|
8444
8444
|
ht,
|
|
8445
8445
|
Ye
|
|
8446
8446
|
]), /* @__PURE__ */ Q("div", {
|
|
@@ -8451,7 +8451,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8451
8451
|
/* @__PURE__ */ Q("div", {
|
|
8452
8452
|
class: "markup-pins-layer",
|
|
8453
8453
|
children: [wt.map(({ key: e, value: { thread: t, point: n }, isLeaving: r, enterDelayMs: i }) => {
|
|
8454
|
-
let o = !r &&
|
|
8454
|
+
let o = !r && P.kind === "thread" && P.threadId === t._id, s = t.comments.reduce((e, t) => e + +!t.deleted, 0);
|
|
8455
8455
|
return /* @__PURE__ */ Q(kl, {
|
|
8456
8456
|
pageX: n.pageX,
|
|
8457
8457
|
pageY: n.pageY,
|
|
@@ -8463,7 +8463,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8463
8463
|
enterDelayMs: i,
|
|
8464
8464
|
otherLocation: Ca(t.url, c, a),
|
|
8465
8465
|
onClick: () => {
|
|
8466
|
-
be("thread_opened", { commentCount: s }),
|
|
8466
|
+
be("thread_opened", { commentCount: s }), F({
|
|
8467
8467
|
kind: "thread",
|
|
8468
8468
|
threadId: t._id
|
|
8469
8469
|
});
|
|
@@ -8475,7 +8475,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8475
8475
|
isLeaving: K.isLeaving
|
|
8476
8476
|
}) : null]
|
|
8477
8477
|
}),
|
|
8478
|
-
|
|
8478
|
+
P.kind === "placing" ? /* @__PURE__ */ Q(jl, {
|
|
8479
8479
|
onPlace: Ze,
|
|
8480
8480
|
onCancel: Ye
|
|
8481
8481
|
}) : null,
|
|
@@ -8492,7 +8492,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8492
8492
|
isPending: Ee,
|
|
8493
8493
|
error: De,
|
|
8494
8494
|
isHidden: Ae,
|
|
8495
|
-
members:
|
|
8495
|
+
members: te,
|
|
8496
8496
|
onAuthor: Qe,
|
|
8497
8497
|
onSignIn: et,
|
|
8498
8498
|
onSignOut: mt,
|
|
@@ -8520,7 +8520,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8520
8520
|
screenshotFailed: K.value.screenshotFailed,
|
|
8521
8521
|
screenshotRedactedCount: K.value.screenshotRedactedCount,
|
|
8522
8522
|
screenshotRedactedSelectors: K.value.screenshotRedactedSelectors,
|
|
8523
|
-
members:
|
|
8523
|
+
members: te,
|
|
8524
8524
|
onAuthor: Qe,
|
|
8525
8525
|
onSignIn: et,
|
|
8526
8526
|
onSignOut: mt,
|
|
@@ -8529,16 +8529,16 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8529
8529
|
}) : null,
|
|
8530
8530
|
Tt.map((t) => /* @__PURE__ */ Q(ql, {
|
|
8531
8531
|
isLeaving: t.isLeaving,
|
|
8532
|
-
isActive:
|
|
8533
|
-
onToggle: () =>
|
|
8532
|
+
isActive: P.kind === "placing",
|
|
8533
|
+
onToggle: () => P.kind === "placing" ? Ye() : z(),
|
|
8534
8534
|
onHide: () => ke({ type: "hide-with-toast" }),
|
|
8535
8535
|
position: y,
|
|
8536
8536
|
showInbox: Fe,
|
|
8537
8537
|
unreadCount: Fe ? re : 0,
|
|
8538
|
-
inboxOpen:
|
|
8538
|
+
inboxOpen: k === "inbox",
|
|
8539
8539
|
onOpenInbox: () => {
|
|
8540
|
-
let e =
|
|
8541
|
-
|
|
8540
|
+
let e = k === "inbox" ? null : "inbox";
|
|
8541
|
+
A(e), e && (be("notifications_opened", { unreadCount: re }), ue());
|
|
8542
8542
|
},
|
|
8543
8543
|
pinsVisible: x,
|
|
8544
8544
|
onTogglePins: () => C((e) => !e),
|
|
@@ -8556,14 +8556,14 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8556
8556
|
overflowButton: /* @__PURE__ */ Q(Cl, {
|
|
8557
8557
|
position: y,
|
|
8558
8558
|
onSetPosition: b,
|
|
8559
|
-
autoCapture:
|
|
8559
|
+
autoCapture: E && r?.enabled !== !1,
|
|
8560
8560
|
autoCaptureLocked: r?.enabled === !1,
|
|
8561
|
-
onToggleAutoCapture: () =>
|
|
8561
|
+
onToggleAutoCapture: () => D((e) => !e),
|
|
8562
8562
|
isUrlScoped: w,
|
|
8563
8563
|
hiddenByUrlScope: yt,
|
|
8564
|
-
onToggleUrlScope: () =>
|
|
8565
|
-
showResolved:
|
|
8566
|
-
onToggleShowResolved: () =>
|
|
8564
|
+
onToggleUrlScope: () => T((e) => !e),
|
|
8565
|
+
showResolved: O,
|
|
8566
|
+
onToggleShowResolved: () => ee((e) => !e),
|
|
8567
8567
|
onHideForSession: () => ke({ type: "hide-with-toast" }),
|
|
8568
8568
|
identity: h,
|
|
8569
8569
|
apiUrl: e,
|
|
@@ -8571,7 +8571,7 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8571
8571
|
isForgettingMe: he.isPending,
|
|
8572
8572
|
forgetMeError: he.error,
|
|
8573
8573
|
onForgetMe: ft,
|
|
8574
|
-
version: "1.27.
|
|
8574
|
+
version: "1.27.3",
|
|
8575
8575
|
dashboardUrl: i
|
|
8576
8576
|
})
|
|
8577
8577
|
}, t.key)),
|
|
@@ -8581,13 +8581,13 @@ function iu({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
8581
8581
|
position: y,
|
|
8582
8582
|
ignoreToolbarKind: "inbox",
|
|
8583
8583
|
isLeaving: kt.isLeaving,
|
|
8584
|
-
onClose:
|
|
8584
|
+
onClose: j,
|
|
8585
8585
|
children: /* @__PURE__ */ Q(gl, {
|
|
8586
8586
|
state: ae,
|
|
8587
8587
|
isMarkingAll: se,
|
|
8588
|
-
onBack:
|
|
8588
|
+
onBack: j,
|
|
8589
8589
|
onItemClick: (e) => {
|
|
8590
|
-
|
|
8590
|
+
j(), it(e);
|
|
8591
8591
|
},
|
|
8592
8592
|
onMarkAllRead: at
|
|
8593
8593
|
})
|
|
@@ -8619,11 +8619,11 @@ function ou(e, t) {
|
|
|
8619
8619
|
a.className = "markup-shadow-root", r.appendChild(a), je({
|
|
8620
8620
|
apiUrl: t.apiUrl,
|
|
8621
8621
|
apiKey: t.apiKey,
|
|
8622
|
-
widgetVersion: "1.27.
|
|
8622
|
+
widgetVersion: "1.27.3"
|
|
8623
8623
|
}), ye(t.analytics === !1 ? null : {
|
|
8624
8624
|
apiUrl: t.apiUrl,
|
|
8625
8625
|
apiKey: t.apiKey,
|
|
8626
|
-
widgetVersion: "1.27.
|
|
8626
|
+
widgetVersion: "1.27.3"
|
|
8627
8627
|
}), be("widget_loaded");
|
|
8628
8628
|
let { theme: o, analytics: s, ...c } = t;
|
|
8629
8629
|
return ce(/* @__PURE__ */ Q(Ce, {
|
|
@@ -8635,28 +8635,38 @@ function ou(e, t) {
|
|
|
8635
8635
|
}
|
|
8636
8636
|
//#endregion
|
|
8637
8637
|
//#region src/widget.ts
|
|
8638
|
-
var su = null, cu = null, lu = null, uu = !1;
|
|
8639
|
-
function
|
|
8638
|
+
var su = null, cu = null, lu = null, uu = null, du = null, fu = !1;
|
|
8639
|
+
function pu(e) {
|
|
8640
|
+
return JSON.stringify(e, (e, t) => typeof t == "object" && t && !Array.isArray(t) ? Object.fromEntries(Object.entries(t).sort(([e], [t]) => e < t ? -1 : +(e > t))) : t);
|
|
8641
|
+
}
|
|
8642
|
+
function mu(e) {
|
|
8640
8643
|
if (!e.apiUrl || !e.apiKey) return console.warn("[markup] init() requires both apiUrl and apiKey, so the widget was not mounted"), () => {};
|
|
8641
|
-
e.fab != null && !
|
|
8642
|
-
let t = ()
|
|
8644
|
+
e.fab != null && !fu && (fu = !0, console.warn("[markup] the `fab` option is ignored and will be removed in the next major. The toolbar replaced the floating action button. Remove it from your config."));
|
|
8645
|
+
let t = pu(e);
|
|
8646
|
+
if (du && t === uu && (lu !== null || cu?.isConnected === !0)) return du;
|
|
8647
|
+
hu(), uu = t;
|
|
8648
|
+
let n = () => {
|
|
8649
|
+
du === n && hu();
|
|
8650
|
+
};
|
|
8651
|
+
du = n;
|
|
8652
|
+
let r = () => {
|
|
8643
8653
|
if (lu = null, !document.body) return;
|
|
8644
8654
|
let t = document.createElement("div");
|
|
8645
8655
|
t.id = "markup-widget", document.body.appendChild(t), cu = t, su = ou(t, e);
|
|
8646
8656
|
};
|
|
8647
8657
|
if (document.readyState === "loading" || !document.body) {
|
|
8648
|
-
let e = () =>
|
|
8658
|
+
let e = () => r();
|
|
8649
8659
|
lu = () => document.removeEventListener("DOMContentLoaded", e), document.addEventListener("DOMContentLoaded", e, { once: !0 });
|
|
8650
|
-
} else
|
|
8651
|
-
return
|
|
8660
|
+
} else r();
|
|
8661
|
+
return n;
|
|
8652
8662
|
}
|
|
8653
|
-
function
|
|
8654
|
-
lu &&= (lu(), null), su &&= (su(), null), cu?.parentNode && cu.parentNode.removeChild(cu), cu = null;
|
|
8663
|
+
function hu() {
|
|
8664
|
+
lu &&= (lu(), null), su &&= (su(), null), cu?.parentNode && cu.parentNode.removeChild(cu), cu = null, uu = null, du = null;
|
|
8655
8665
|
}
|
|
8656
8666
|
if (typeof document < "u") {
|
|
8657
8667
|
let e = document.currentScript ?? document.querySelector("script[data-markup-widget=\"true\"]"), t = e?.dataset.apiUrl, n = e?.dataset.apiKey;
|
|
8658
8668
|
if (t && n) {
|
|
8659
|
-
let r = e?.dataset.position, i = e?.dataset.theme, a = e?.dataset.fab, o = e?.dataset.dashboardUrl, s = e?.dataset.analytics !== "false", c = e?.dataset.routeParams?.split(",").map((e) => e.trim()).filter((e) => e !== ""), l = () =>
|
|
8669
|
+
let r = e?.dataset.position, i = e?.dataset.theme, a = e?.dataset.fab, o = e?.dataset.dashboardUrl, s = e?.dataset.analytics !== "false", c = e?.dataset.routeParams?.split(",").map((e) => e.trim()).filter((e) => e !== ""), l = () => mu({
|
|
8660
8670
|
apiUrl: t,
|
|
8661
8671
|
apiKey: n,
|
|
8662
8672
|
position: r,
|
|
@@ -8670,6 +8680,6 @@ if (typeof document < "u") {
|
|
|
8670
8680
|
}
|
|
8671
8681
|
}
|
|
8672
8682
|
//#endregion
|
|
8673
|
-
export {
|
|
8683
|
+
export { hu as destroy, mu as init };
|
|
8674
8684
|
|
|
8675
8685
|
//# sourceMappingURL=widget.js.map
|