@pixelmatters/markup 1.19.0 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/widget.js +350 -291
- 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
|
@@ -45,7 +45,7 @@ function w(e, t) {
|
|
|
45
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), ne(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, ie(i, o, a), n.__e = n.__ = null, o.__e != r && E(o);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
function E(e) {
|
|
@@ -65,13 +65,13 @@ function O() {
|
|
|
65
65
|
}
|
|
66
66
|
function ee(e, t, n, r, i, a, o, s, c, l, u) {
|
|
67
67
|
var d, f, p, g, _, v, y, b = r && r.__k || h, x = t.length;
|
|
68
|
-
for (c = k(n, t, b, c, x), d = 0; d < x; d++) (p = n.__k[d]) != null && (f = p.__i != -1 && b[p.__i] || m, p.__i = d, v =
|
|
68
|
+
for (c = k(n, t, b, c, x), d = 0; d < x; d++) (p = n.__k[d]) != null && (f = p.__i != -1 && b[p.__i] || m, p.__i = d, v = ne(e, p, f, i, a, o, s, c, l, u), g = p.__e, p.ref && f.ref != p.ref && (f.ref && se(f.ref, null, p), u.push(p.ref, p.__c || g, p)), _ == null && g != null && (_ = g), (y = !!(4 & p.__u)) || f.__k === p.__k ? (c = A(p, c, e, y), y && 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
71
|
function k(e, t, n, r, i) {
|
|
72
72
|
var a, o, s, c, l, u = n.length, d = u, f = 0;
|
|
73
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
|
-
if (d) for (a = 0; a < u; a++) (s = n[a]) != null && !(2 & s.__u) && (s.__e == r && (r = w(s)),
|
|
74
|
+
if (d) for (a = 0; a < u; a++) (s = n[a]) != null && !(2 & s.__u) && (s.__e == r && (r = w(s)), ce(s, s));
|
|
75
75
|
return r;
|
|
76
76
|
}
|
|
77
77
|
function A(e, t, n, r) {
|
|
@@ -94,15 +94,15 @@ function j(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") if (typeof n == "string") e.style.cssText = n;
|
|
103
103
|
else {
|
|
104
|
-
if (typeof r == "string" && (e.style.cssText = r = ""), r) for (t in r) n && t in n ||
|
|
105
|
-
if (n) for (t in n) r && n[t] == r[t] ||
|
|
104
|
+
if (typeof r == "string" && (e.style.cssText = r = ""), r) for (t in r) n && t in n || M(e.style, t, "");
|
|
105
|
+
if (n) for (t in n) r && n[t] == r[t] || M(e.style, t, n[t]);
|
|
106
106
|
}
|
|
107
107
|
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);
|
|
108
108
|
else {
|
|
@@ -114,7 +114,7 @@ function M(e, t, n, r, i) {
|
|
|
114
114
|
typeof n == "function" || (n == null || !1 === n && t[4] != "-" ? e.removeAttribute(t) : e.setAttribute(t, t == "popover" && n == 1 ? "" : n));
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
-
function
|
|
117
|
+
function te(e) {
|
|
118
118
|
return function(n) {
|
|
119
119
|
if (this.l) {
|
|
120
120
|
var r = this.l[n.type + e];
|
|
@@ -124,16 +124,16 @@ function ne(e) {
|
|
|
124
124
|
}
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
|
-
function
|
|
128
|
-
var d, f, p, m, g, b, x, w, T, E, D, O, k, A, j,
|
|
127
|
+
function ne(e, n, r, i, a, o, s, c, l, u) {
|
|
128
|
+
var d, f, p, m, g, b, x, w, T, E, D, O, k, A, j, M, N = n.type;
|
|
129
129
|
if (n.constructor !== void 0) return null;
|
|
130
130
|
128 & r.__u && (l = !!(32 & r.__u), o = [c = n.__e = r.__e]), (d = t.__b) && d(n);
|
|
131
|
-
n: if (typeof
|
|
131
|
+
n: if (typeof N == "function") {
|
|
132
132
|
f = s.length;
|
|
133
133
|
try {
|
|
134
|
-
if (T = n.props, E =
|
|
134
|
+
if (T = n.props, E = N.prototype && N.prototype.render, D = (d = N.contextType) && i[d.__c], O = d ? D ? D.props.value : d.__ : i, r.__c ? w = (p = n.__c = r.__c).__ = p.__E : (E ? n.__c = p = new N(T, O) : (n.__c = p = new C(T, O), p.constructor = N, p.render = le), D && D.sub(p), p.state || (p.state = {}), p.__n = i, m = p.__d = !0, p.__h = [], p._sb = []), E && p.__s == null && (p.__s = p.state), E && N.getDerivedStateFromProps != null && (p.__s == p.state && (p.__s = v({}, p.__s)), v(p.__s, N.getDerivedStateFromProps(T, p.__s))), g = p.props, b = p.state, p.__v = n, m) E && N.getDerivedStateFromProps == null && p.componentWillMount != null && p.componentWillMount(), E && p.componentDidMount != null && p.__h.push(p.componentDidMount);
|
|
135
135
|
else {
|
|
136
|
-
if (E &&
|
|
136
|
+
if (E && N.getDerivedStateFromProps == null && T !== g && p.componentWillReceiveProps != null && p.componentWillReceiveProps(T, O), n.__v == r.__v || !p.__e && p.shouldComponentUpdate != null && !1 === p.shouldComponentUpdate(T, p.__s, O)) {
|
|
137
137
|
n.__v != r.__v && (p.props = T, p.state = p.__s, p.__d = !1), n.__e = r.__e, n.__k = r.__k, n.__k.some(function(e) {
|
|
138
138
|
e && (e.__ = n);
|
|
139
139
|
}), h.push.apply(p.__h, p._sb), p._sb = [], p.__h.length && s.push(p);
|
|
@@ -147,24 +147,24 @@ function re(e, n, r, i, a, o, s, c, l, u) {
|
|
|
147
147
|
else do
|
|
148
148
|
p.__d = !1, k && k(n), d = p.render(p.props, p.state, p.context), p.state = p.__s;
|
|
149
149
|
while (p.__d && ++A < 25);
|
|
150
|
-
p.state = p.__s, p.getChildContext != null && (i = v(v({}, i), p.getChildContext())), E && !m && p.getSnapshotBeforeUpdate != null && (x = p.getSnapshotBeforeUpdate(g, b)), j = d != null && d.type === S && d.key == null ?
|
|
150
|
+
p.state = p.__s, p.getChildContext != null && (i = v(v({}, i), p.getChildContext())), E && !m && p.getSnapshotBeforeUpdate != null && (x = p.getSnapshotBeforeUpdate(g, b)), j = d != null && d.type === S && d.key == null ? ae(d.props.children) : d, c = ee(e, _(j) ? j : [j], n, r, i, a, o, s, c, l, u), p.base = n.__e, n.__u &= -161, p.__h.length && s.push(p), w && (p.__E = p.__ = null);
|
|
151
151
|
} catch (e) {
|
|
152
152
|
if (s.length = f, n.__v = null, l || o != null) {
|
|
153
153
|
if (e.then) {
|
|
154
154
|
for (n.__u |= l ? 160 : 128; c && c.nodeType == 8 && c.nextSibling;) c = c.nextSibling;
|
|
155
155
|
o != null && (o[o.indexOf(c)] = null), n.__e = c;
|
|
156
|
-
} else if (o != null) for (
|
|
156
|
+
} else if (o != null) for (M = o.length; M--;) y(o[M]);
|
|
157
157
|
} else n.__e = r.__e;
|
|
158
|
-
n.__k ??= r.__k || [], e.then ||
|
|
158
|
+
n.__k ??= r.__k || [], e.then || re(n), t.__e(e, n, r);
|
|
159
159
|
}
|
|
160
|
-
} else o == null && n.__v == r.__v ? (n.__k = r.__k, n.__e = r.__e) : c = n.__e =
|
|
160
|
+
} else o == null && n.__v == r.__v ? (n.__k = r.__k, n.__e = r.__e) : c = n.__e = oe(r.__e, n, r, i, a, o, s, l, u);
|
|
161
161
|
return (d = t.diffed) && d(n), 128 & n.__u ? void 0 : c;
|
|
162
162
|
}
|
|
163
|
-
function
|
|
164
|
-
e && (e.__c && (e.__c.__e = !0), e.__k && e.__k.some(
|
|
163
|
+
function re(e) {
|
|
164
|
+
e && (e.__c && (e.__c.__e = !0), e.__k && e.__k.some(re));
|
|
165
165
|
}
|
|
166
|
-
function
|
|
167
|
-
for (var i = 0; i < r.length; i++)
|
|
166
|
+
function ie(e, n, r) {
|
|
167
|
+
for (var i = 0; i < r.length; i++) se(r[i], r[++i], r[++i]);
|
|
168
168
|
t.__c && t.__c(n, e), e.some(function(n) {
|
|
169
169
|
try {
|
|
170
170
|
e = n.__h, n.__h = [], e.some(function(e) {
|
|
@@ -175,10 +175,10 @@ function ae(e, n, r) {
|
|
|
175
175
|
}
|
|
176
176
|
});
|
|
177
177
|
}
|
|
178
|
-
function
|
|
179
|
-
return typeof e != "object" || !e || e.__b > 0 ? e : _(e) ? e.map(
|
|
178
|
+
function ae(e) {
|
|
179
|
+
return typeof e != "object" || !e || e.__b > 0 ? e : _(e) ? e.map(ae) : e.constructor === void 0 ? v({}, e) : null;
|
|
180
180
|
}
|
|
181
|
-
function
|
|
181
|
+
function oe(n, r, i, a, o, s, c, l, u) {
|
|
182
182
|
var d, f, p, h, g, v, b, x = i.props || m, S = r.props, C = r.type;
|
|
183
183
|
if (C == "svg" ? o = "http://www.w3.org/2000/svg" : C == "math" ? o = "http://www.w3.org/1998/Math/MathML" : o ||= "http://www.w3.org/1999/xhtml", s != null) {
|
|
184
184
|
for (d = 0; d < s.length; d++) if ((g = s[d]) && "setAttribute" in g == !!C && (C ? g.localName == C : g.nodeType == 3)) {
|
|
@@ -193,15 +193,15 @@ function se(n, r, i, a, o, s, c, l, u) {
|
|
|
193
193
|
if (C == null) x === S || l && n.data == S || (n.data = S);
|
|
194
194
|
else {
|
|
195
195
|
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;
|
|
196
|
-
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 ||
|
|
197
|
-
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 ||
|
|
196
|
+
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);
|
|
197
|
+
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);
|
|
198
198
|
if (f) l || p && (f.__html == p.__html || f.__html == n.innerHTML) || (n.innerHTML = f.__html), r.__k = [];
|
|
199
199
|
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]);
|
|
200
|
-
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
|
+
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));
|
|
201
201
|
}
|
|
202
202
|
return n;
|
|
203
203
|
}
|
|
204
|
-
function
|
|
204
|
+
function se(e, n, r) {
|
|
205
205
|
try {
|
|
206
206
|
if (typeof e == "function") {
|
|
207
207
|
var i = typeof e.__u == "function";
|
|
@@ -211,9 +211,9 @@ function ce(e, n, r) {
|
|
|
211
211
|
t.__e(e, r);
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
|
-
function
|
|
214
|
+
function ce(e, n, r) {
|
|
215
215
|
var i, a;
|
|
216
|
-
if (t.unmount && t.unmount(e), (i = e.ref) && (i.current && i.current != e.__e ||
|
|
216
|
+
if (t.unmount && t.unmount(e), (i = e.ref) && (i.current && i.current != e.__e || se(i, null, n)), (i = e.__c) != null) {
|
|
217
217
|
if (i.componentWillUnmount) try {
|
|
218
218
|
i.componentWillUnmount();
|
|
219
219
|
} catch (e) {
|
|
@@ -221,15 +221,15 @@ function le(e, n, r) {
|
|
|
221
221
|
}
|
|
222
222
|
i.base = i.__P = i.__n = null;
|
|
223
223
|
}
|
|
224
|
-
if (i = e.__k) for (a = 0; a < i.length; a++) i[a] &&
|
|
224
|
+
if (i = e.__k) for (a = 0; a < i.length; a++) i[a] && ce(i[a], n, r || typeof e.type != "function");
|
|
225
225
|
r || y(e.__e), e.__c = e.__ = e.__e = void 0;
|
|
226
226
|
}
|
|
227
|
-
function
|
|
227
|
+
function le(e, t, n) {
|
|
228
228
|
return this.constructor(e, n);
|
|
229
229
|
}
|
|
230
|
-
function
|
|
230
|
+
function ue(n, r, i) {
|
|
231
231
|
var a, o, s, c;
|
|
232
|
-
r == document && (r = document.documentElement), t.__ && t.__(n, r), o = (a = typeof i == "function") ? null : i && i.__k || r.__k, s = [], c = [],
|
|
232
|
+
r == document && (r = document.documentElement), t.__ && t.__(n, r), o = (a = typeof i == "function") ? null : i && i.__k || r.__k, s = [], c = [], ne(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), ie(s, n, c), n.props.children = null;
|
|
233
233
|
}
|
|
234
234
|
e = h.slice, t = { __e: function(e, t, n, r) {
|
|
235
235
|
for (var i, a, o; t = t.__;) if ((i = t.__c) && !i.__) try {
|
|
@@ -245,49 +245,49 @@ e = h.slice, t = { __e: function(e, t, n, r) {
|
|
|
245
245
|
this.__v && (this.__e = !0, e && this.__h.push(e), D(this));
|
|
246
246
|
}, C.prototype.render = S, r = [], a = typeof Promise == "function" ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, o = function(e, t) {
|
|
247
247
|
return e.__v.__b - t.__v.__b;
|
|
248
|
-
}, O.__r = 0, s = Math.random().toString(8), c = "__d" + s, l = "__a" + s, u = /(PointerCapture)$|Capture$/i, d = 0, f =
|
|
248
|
+
}, O.__r = 0, s = Math.random().toString(8), c = "__d" + s, l = "__a" + s, u = /(PointerCapture)$|Capture$/i, d = 0, f = te(!1), p = te(!0);
|
|
249
249
|
//#endregion
|
|
250
250
|
//#region src/styles.css?inline
|
|
251
|
-
var fe = ":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-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);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);display:inline-flex;position:fixed;bottom:22px;left:100%;transform:translate(calc(-100% - 22px))}.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]{width:260px;padding:6px}.markup-pop[data-pop=identity]{width:240px;padding:6px}.markup-pop[data-pop=inbox]{width:380px;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-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: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);margin-left:auto;font-size:10.5px}.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:8px;margin-top:6px;padding:8px 10px;font-size:10.5px;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,.32s ease-in 4.6s forwards markup-hud-hidden-out;display:inline-flex;position:fixed;bottom:24px}.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;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: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-unresolved{opacity:.6}.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);cursor:crosshair;pointer-events:auto;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:360px;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}}.markup-popover.is-hud-hidden{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);padding:4px;animation:.12s ease-out markup-menu-in;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:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.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-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{animation-name:markup-menu-in-up;top:auto;bottom:calc(100% + 6px)}.markup-comment-menu.is-side .markup-thread-menu-list{animation-name:markup-menu-in-side;top:-4px;right:calc(100% + 2px)}@keyframes markup-menu-in-side{0%{opacity:0;transform:translate(4px)}to{opacity:1;transform:translate(0)}}@keyframes markup-menu-in-up{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.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);border-radius:8px;gap:2px;padding:4px;animation:.12s markup-menu-in;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{animation-name:markup-menu-in-up;top:auto;bottom:calc(100% + 6px)}.markup-reaction-picker-wrap.is-side .markup-reaction-picker{animation-name:markup-menu-in-side;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-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);flex-direction:column;justify-content:center;gap:4px;padding:16px;animation:.12s ease-out markup-menu-in;display:flex;position:absolute;inset:0}.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{border:1px solid var(--markup-border-strong);object-fit:cover;object-position:top;border-radius:3px;width:auto;height:22px;margin:-4px 0 -4px 4px;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}.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-tb-btn,.markup-tb-badge,.markup-comment,.markup-pin,.markup-icon-btn,.markup-btn,.markup-popover,.markup-pin-ghost,.markup-placement-overlay,.markup-placement-cursor-help,.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;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 0 4px;padding:4px;list-style:none;position:absolute;bottom:100%;left:0;right:0;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:380px;max-width:calc(100vw - 24px);position:fixed;bottom:76px}.markup-panel-pop[data-panel=privacy]{width:340px}.markup-panel-pop[data-panel=shortcuts]{width:320px}.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%;animation:.14s cubic-bezier(.2,.7,.2,1) markup-pop-in;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-pop[data-pop=privacy],.markup-pop[data-pop=shortcuts]{padding:0}.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-body{flex:1;padding:4px 14px 14px;overflow-y:auto}.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}", pe = 1e4, N = 20, me = 60, he = null, ge = [], P = null, _e = !1, ve = ye();
|
|
252
|
-
function
|
|
251
|
+
var de = ":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-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);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);display:inline-flex;position:fixed;bottom:22px;left:100%;transform:translate(calc(-100% - 22px))}.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]{width:260px;padding:6px}.markup-pop[data-pop=identity]{width:240px;padding:6px}.markup-pop[data-pop=inbox]{width:380px;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-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: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);margin-left:auto;font-size:10.5px}.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:8px;margin-top:6px;padding:8px 10px;font-size:10.5px;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,.32s ease-in 4.6s forwards markup-hud-hidden-out;display:inline-flex;position:fixed;bottom:24px}.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;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: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-unresolved{opacity:.6}.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:360px;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}}.markup-popover.is-hud-hidden{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);padding:4px;animation:.12s ease-out markup-menu-in;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:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.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-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{animation-name:markup-menu-in-up;top:auto;bottom:calc(100% + 6px)}.markup-comment-menu.is-side .markup-thread-menu-list{animation-name:markup-menu-in-side;top:-4px;right:calc(100% + 2px)}@keyframes markup-menu-in-side{0%{opacity:0;transform:translate(4px)}to{opacity:1;transform:translate(0)}}@keyframes markup-menu-in-up{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.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);border-radius:8px;gap:2px;padding:4px;animation:.12s markup-menu-in;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{animation-name:markup-menu-in-up;top:auto;bottom:calc(100% + 6px)}.markup-reaction-picker-wrap.is-side .markup-reaction-picker{animation-name:markup-menu-in-side;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-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);flex-direction:column;justify-content:center;gap:4px;padding:16px;animation:.12s ease-out markup-menu-in;display:flex;position:absolute;inset:0}.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}.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-tb-btn,.markup-tb-badge,.markup-comment,.markup-pin,.markup-icon-btn,.markup-btn,.markup-popover,.markup-pin-ghost,.markup-placement-overlay,.markup-placement-cursor-help,.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;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 0 4px;padding:4px;list-style:none;position:absolute;bottom:100%;left:0;right:0;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:380px;max-width:calc(100vw - 24px);position:fixed;bottom:76px}.markup-panel-pop[data-panel=privacy]{width:340px}.markup-panel-pop[data-panel=shortcuts]{width:320px}.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%;animation:.14s cubic-bezier(.2,.7,.2,1) markup-pop-in;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-pop[data-pop=privacy],.markup-pop[data-pop=shortcuts]{padding:0}.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-body{flex:1;padding:4px 14px 14px;overflow-y:auto}.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}", fe = 1e4, P = 20, pe = 60, me = null, he = [], F = null, ge = !1, _e = ve();
|
|
252
|
+
function ve() {
|
|
253
253
|
return typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : `s-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
|
|
254
254
|
}
|
|
255
|
-
function
|
|
256
|
-
if (
|
|
257
|
-
|
|
255
|
+
function ye(e) {
|
|
256
|
+
if (me = e, !e) {
|
|
257
|
+
he = [], F &&= (clearTimeout(F), null);
|
|
258
258
|
return;
|
|
259
259
|
}
|
|
260
260
|
Se();
|
|
261
261
|
}
|
|
262
|
-
function
|
|
263
|
-
if (
|
|
264
|
-
if (
|
|
262
|
+
function be(e, t) {
|
|
263
|
+
if (me && !(he.length >= pe)) {
|
|
264
|
+
if (he.push({
|
|
265
265
|
name: e,
|
|
266
266
|
properties: t,
|
|
267
267
|
timestamp: Date.now()
|
|
268
|
-
}),
|
|
268
|
+
}), he.length >= P) {
|
|
269
269
|
xe();
|
|
270
270
|
return;
|
|
271
271
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
},
|
|
272
|
+
F ||= setTimeout(() => {
|
|
273
|
+
F = null, xe();
|
|
274
|
+
}, fe);
|
|
275
275
|
}
|
|
276
276
|
}
|
|
277
277
|
async function xe() {
|
|
278
|
-
if (!
|
|
279
|
-
let e =
|
|
280
|
-
|
|
278
|
+
if (!me || he.length === 0) return;
|
|
279
|
+
let e = he.splice(0, P);
|
|
280
|
+
F &&= (clearTimeout(F), null);
|
|
281
281
|
try {
|
|
282
|
-
await fetch(`${
|
|
282
|
+
await fetch(`${me.apiUrl.replace(/\/+$/, "")}/widget/events`, {
|
|
283
283
|
method: "POST",
|
|
284
284
|
headers: {
|
|
285
285
|
"content-type": "application/json",
|
|
286
|
-
"x-markup-api-key":
|
|
286
|
+
"x-markup-api-key": me.apiKey
|
|
287
287
|
},
|
|
288
288
|
body: JSON.stringify({
|
|
289
|
-
sessionId:
|
|
290
|
-
widgetVersion:
|
|
289
|
+
sessionId: _e,
|
|
290
|
+
widgetVersion: me.widgetVersion,
|
|
291
291
|
events: e.map((e) => ({
|
|
292
292
|
name: e.name,
|
|
293
293
|
properties: e.properties,
|
|
@@ -297,13 +297,13 @@ async function xe() {
|
|
|
297
297
|
keepalive: !0
|
|
298
298
|
});
|
|
299
299
|
} catch {}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
},
|
|
300
|
+
me && he.length > 0 && !F && (F = setTimeout(() => {
|
|
301
|
+
F = null, xe();
|
|
302
|
+
}, fe));
|
|
303
303
|
}
|
|
304
304
|
function Se() {
|
|
305
|
-
if (
|
|
306
|
-
|
|
305
|
+
if (ge || typeof window > "u") return;
|
|
306
|
+
ge = !0;
|
|
307
307
|
let e = () => void xe();
|
|
308
308
|
window.addEventListener("pagehide", e), document.addEventListener("visibilitychange", () => {
|
|
309
309
|
document.visibilityState === "hidden" && e();
|
|
@@ -5331,14 +5331,16 @@ var Ys = "https://markup.pixelmatters.dev/docs/install#9-screenshots-privacy";
|
|
|
5331
5331
|
function Xs({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolving: i, isSigningIn: a, isPending: o, error: s, screenshot: c, isScreenshotCapturing: l, screenshotFailed: u, screenshotRedactedCount: d, screenshotRedactedSelectors: f, members: p = [], onAuthor: m, onSignIn: h, onSubmit: g, onClose: _ }) {
|
|
5332
5332
|
let v = H(null);
|
|
5333
5333
|
bs(v, !0);
|
|
5334
|
-
let y = H(!1),
|
|
5335
|
-
|
|
5336
|
-
}, [
|
|
5337
|
-
|
|
5338
|
-
}, [
|
|
5334
|
+
let y = H(!1), b = H(!1), [x, C] = B(!1), w = U((e) => {
|
|
5335
|
+
b.current = e, C(e);
|
|
5336
|
+
}, []), T = U(() => {
|
|
5337
|
+
b.current || (y.current ? w(!0) : _());
|
|
5338
|
+
}, [_, w]), E = U(() => {
|
|
5339
|
+
w(!1), v.current?.querySelector(".markup-mention-input")?.focus();
|
|
5340
|
+
}, [w]), [D, O] = B(!1), [ee, k] = B(!1), A = xs(c), j = H(null), [M, N] = B(null), { onPointerDown: te, isDragging: ne } = _s({
|
|
5339
5341
|
targetRef: v,
|
|
5340
5342
|
shouldStart: (e) => !e.target?.closest("button, a, input, textarea, select"),
|
|
5341
|
-
onMove:
|
|
5343
|
+
onMove: N
|
|
5342
5344
|
});
|
|
5343
5345
|
V(() => {
|
|
5344
5346
|
let e = v.current;
|
|
@@ -5350,50 +5352,46 @@ function Xs({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolv
|
|
|
5350
5352
|
if (!e) return;
|
|
5351
5353
|
function t(t) {
|
|
5352
5354
|
if (!t.composedPath().includes(e)) {
|
|
5353
|
-
if (b) {
|
|
5355
|
+
if (b.current) {
|
|
5354
5356
|
t.preventDefault(), t.stopPropagation();
|
|
5355
5357
|
return;
|
|
5356
5358
|
}
|
|
5357
|
-
y.current && (t.preventDefault(), t.stopPropagation()),
|
|
5359
|
+
y.current && (t.preventDefault(), t.stopPropagation()), T();
|
|
5358
5360
|
}
|
|
5359
5361
|
}
|
|
5360
5362
|
function n(e) {
|
|
5361
|
-
e.key !== "Escape" || e.defaultPrevented || (e.preventDefault(), b ?
|
|
5363
|
+
e.key !== "Escape" || e.defaultPrevented || j.current?.open || (e.preventDefault(), b.current ? E() : T());
|
|
5362
5364
|
}
|
|
5363
5365
|
return document.addEventListener("click", t, !0), document.addEventListener("keydown", n), () => {
|
|
5364
5366
|
document.removeEventListener("click", t, !0), document.removeEventListener("keydown", n);
|
|
5365
5367
|
};
|
|
5366
|
-
}, [
|
|
5367
|
-
|
|
5368
|
-
|
|
5369
|
-
|
|
5370
|
-
]), V(() => {
|
|
5371
|
-
b && v.current?.querySelector(".markup-discard-confirm-keep")?.focus();
|
|
5372
|
-
}, [b]);
|
|
5373
|
-
let M = Zs(e - window.scrollX + 16, 12, window.innerWidth - 320 - 12), ne = Zs(t - window.scrollY - 16, 12, window.innerHeight - 220), re = typeof window < "u" ? window.location.href : "", ie = c != null, ae = l || ie || u, oe = T && ie;
|
|
5368
|
+
}, [T, E]), V(() => {
|
|
5369
|
+
x && v.current?.querySelector(".markup-discard-confirm-keep")?.focus();
|
|
5370
|
+
}, [x]);
|
|
5371
|
+
let re = Zs(e - window.scrollX + 16, 12, window.innerWidth - 320 - 12), ie = Zs(t - window.scrollY - 16, 12, window.innerHeight - 220), ae = typeof window < "u" ? window.location.href : "", oe = c != null, se = l || oe || u, ce = D && oe;
|
|
5374
5372
|
return /* @__PURE__ */ Q("div", {
|
|
5375
5373
|
ref: v,
|
|
5376
|
-
class: Z("markup-popover",
|
|
5374
|
+
class: Z("markup-popover", M && "is-floating", ne && "is-dragging"),
|
|
5377
5375
|
popover: "manual",
|
|
5378
5376
|
style: {
|
|
5379
|
-
"--markup-pop-x": `${
|
|
5380
|
-
"--markup-pop-y": `${
|
|
5377
|
+
"--markup-pop-x": `${M?.left ?? re}px`,
|
|
5378
|
+
"--markup-pop-y": `${M?.top ?? ie}px`
|
|
5381
5379
|
},
|
|
5382
5380
|
role: "dialog",
|
|
5383
5381
|
"aria-label": "New markup",
|
|
5384
5382
|
children: [
|
|
5385
5383
|
/* @__PURE__ */ Q("header", {
|
|
5386
5384
|
class: "markup-popover-header",
|
|
5387
|
-
onPointerDown:
|
|
5385
|
+
onPointerDown: te,
|
|
5388
5386
|
children: [/* @__PURE__ */ Q("span", {
|
|
5389
5387
|
class: "markup-popover-title",
|
|
5390
|
-
title:
|
|
5388
|
+
title: ae,
|
|
5391
5389
|
children: "New comment"
|
|
5392
5390
|
}), /* @__PURE__ */ Q("button", {
|
|
5393
5391
|
type: "button",
|
|
5394
5392
|
class: "markup-icon-btn",
|
|
5395
5393
|
"aria-label": "Discard pin",
|
|
5396
|
-
onClick:
|
|
5394
|
+
onClick: T,
|
|
5397
5395
|
children: /* @__PURE__ */ Q(qo, { size: 16 })
|
|
5398
5396
|
})]
|
|
5399
5397
|
}),
|
|
@@ -5427,66 +5425,80 @@ function Xs({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolv
|
|
|
5427
5425
|
submitLabel: "Post markup",
|
|
5428
5426
|
isPending: o,
|
|
5429
5427
|
error: s,
|
|
5430
|
-
onSubmit: (e) => g(e,
|
|
5428
|
+
onSubmit: (e) => g(e, D && oe),
|
|
5431
5429
|
onDirtyChange: (e) => {
|
|
5432
5430
|
y.current = e;
|
|
5433
5431
|
},
|
|
5434
5432
|
members: p
|
|
5435
5433
|
}),
|
|
5436
|
-
|
|
5437
|
-
class: Z("markup-screenshot-row", u && "is-failed",
|
|
5434
|
+
se ? /* @__PURE__ */ Q("div", {
|
|
5435
|
+
class: Z("markup-screenshot-row", u && "is-failed", ce && "is-attached"),
|
|
5438
5436
|
children: [/* @__PURE__ */ Q("div", {
|
|
5439
5437
|
class: "markup-screenshot-row-head",
|
|
5440
|
-
children: [
|
|
5441
|
-
|
|
5442
|
-
|
|
5443
|
-
|
|
5444
|
-
|
|
5445
|
-
|
|
5446
|
-
|
|
5447
|
-
|
|
5448
|
-
|
|
5449
|
-
|
|
5450
|
-
|
|
5451
|
-
|
|
5452
|
-
|
|
5453
|
-
|
|
5454
|
-
|
|
5455
|
-
|
|
5456
|
-
|
|
5457
|
-
|
|
5458
|
-
|
|
5459
|
-
|
|
5460
|
-
|
|
5461
|
-
|
|
5462
|
-
|
|
5463
|
-
|
|
5464
|
-
|
|
5465
|
-
|
|
5466
|
-
|
|
5438
|
+
children: [
|
|
5439
|
+
l ? /* @__PURE__ */ Q("span", {
|
|
5440
|
+
class: "markup-screenshot-status",
|
|
5441
|
+
children: [
|
|
5442
|
+
/* @__PURE__ */ Q("input", {
|
|
5443
|
+
type: "checkbox",
|
|
5444
|
+
class: "markup-screenshot-checkbox",
|
|
5445
|
+
disabled: !0
|
|
5446
|
+
}),
|
|
5447
|
+
/* @__PURE__ */ Q(Zo, { size: 12 }),
|
|
5448
|
+
/* @__PURE__ */ Q("span", { children: "Capturing…" })
|
|
5449
|
+
]
|
|
5450
|
+
}) : u ? /* @__PURE__ */ Q("span", {
|
|
5451
|
+
class: "markup-screenshot-status",
|
|
5452
|
+
title: "This page has something the capture can't read, often a third-party image. Your comment will post without a screenshot.",
|
|
5453
|
+
children: [/* @__PURE__ */ Q(Zo, { size: 12 }), /* @__PURE__ */ Q("span", { children: "Screenshot unavailable" })]
|
|
5454
|
+
}) : /* @__PURE__ */ Q("label", {
|
|
5455
|
+
class: "markup-screenshot-toggle",
|
|
5456
|
+
children: [
|
|
5457
|
+
/* @__PURE__ */ Q("input", {
|
|
5458
|
+
type: "checkbox",
|
|
5459
|
+
class: "markup-screenshot-checkbox",
|
|
5460
|
+
checked: D,
|
|
5461
|
+
onChange: (e) => O(e.currentTarget.checked)
|
|
5462
|
+
}),
|
|
5463
|
+
/* @__PURE__ */ Q(Zo, { size: 12 }),
|
|
5464
|
+
/* @__PURE__ */ Q("span", { children: "Attach screenshot" })
|
|
5465
|
+
]
|
|
5466
|
+
}),
|
|
5467
|
+
ce && A ? /* @__PURE__ */ Q("a", {
|
|
5468
|
+
class: "markup-screenshot-thumb-link",
|
|
5469
|
+
href: A,
|
|
5470
|
+
target: "_blank",
|
|
5471
|
+
rel: "noopener",
|
|
5472
|
+
title: "Preview screenshot",
|
|
5473
|
+
"aria-label": "Preview screenshot",
|
|
5474
|
+
onClick: (e) => {
|
|
5475
|
+
e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || e.button !== 0 || (e.preventDefault(), j.current?.showModal());
|
|
5476
|
+
},
|
|
5477
|
+
children: /* @__PURE__ */ Q("img", {
|
|
5467
5478
|
class: "markup-screenshot-thumb",
|
|
5468
|
-
src:
|
|
5469
|
-
alt: "
|
|
5470
|
-
})
|
|
5471
|
-
|
|
5472
|
-
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
|
|
5476
|
-
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5485
|
-
|
|
5486
|
-
|
|
5487
|
-
|
|
5488
|
-
|
|
5489
|
-
|
|
5479
|
+
src: A,
|
|
5480
|
+
alt: ""
|
|
5481
|
+
})
|
|
5482
|
+
}) : null,
|
|
5483
|
+
ce && d > 0 ? /* @__PURE__ */ Q("button", {
|
|
5484
|
+
type: "button",
|
|
5485
|
+
class: "markup-screenshot-redacted-chip",
|
|
5486
|
+
"aria-expanded": ee,
|
|
5487
|
+
onClick: () => k((e) => !e),
|
|
5488
|
+
children: [
|
|
5489
|
+
/* @__PURE__ */ Q("em", {
|
|
5490
|
+
class: "markup-screenshot-redacted-arrow",
|
|
5491
|
+
children: ee ? "▾" : "▸"
|
|
5492
|
+
}),
|
|
5493
|
+
d,
|
|
5494
|
+
" ",
|
|
5495
|
+
d === 1 ? "field" : "fields",
|
|
5496
|
+
" ",
|
|
5497
|
+
"redacted"
|
|
5498
|
+
]
|
|
5499
|
+
}) : null
|
|
5500
|
+
]
|
|
5501
|
+
}), ce ? /* @__PURE__ */ Q(S, { children: [ee && d > 0 ? /* @__PURE__ */ Q("div", {
|
|
5490
5502
|
class: "markup-screenshot-redacted-list",
|
|
5491
5503
|
children: f.map((e) => /* @__PURE__ */ Q("code", {
|
|
5492
5504
|
class: "markup-screenshot-redacted-selector",
|
|
@@ -5509,7 +5521,26 @@ function Xs({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolv
|
|
|
5509
5521
|
}) : null
|
|
5510
5522
|
]
|
|
5511
5523
|
}),
|
|
5512
|
-
|
|
5524
|
+
ce && A ? /* @__PURE__ */ Q("dialog", {
|
|
5525
|
+
ref: j,
|
|
5526
|
+
class: "markup-lightbox",
|
|
5527
|
+
onClick: () => j.current?.close(),
|
|
5528
|
+
children: [/* @__PURE__ */ Q("button", {
|
|
5529
|
+
type: "button",
|
|
5530
|
+
class: "markup-lightbox-close markup-icon-btn",
|
|
5531
|
+
"aria-label": "Close screenshot",
|
|
5532
|
+
onClick: (e) => {
|
|
5533
|
+
e.stopPropagation(), j.current?.close();
|
|
5534
|
+
},
|
|
5535
|
+
children: /* @__PURE__ */ Q(qo, { size: 16 })
|
|
5536
|
+
}), /* @__PURE__ */ Q("img", {
|
|
5537
|
+
class: "markup-lightbox-img",
|
|
5538
|
+
src: A,
|
|
5539
|
+
alt: "Screenshot preview",
|
|
5540
|
+
onClick: (e) => e.stopPropagation()
|
|
5541
|
+
})]
|
|
5542
|
+
}) : null,
|
|
5543
|
+
x ? /* @__PURE__ */ Q("div", {
|
|
5513
5544
|
class: "markup-discard-confirm",
|
|
5514
5545
|
role: "alertdialog",
|
|
5515
5546
|
"aria-labelledby": "markup-discard-confirm-title",
|
|
@@ -5530,7 +5561,7 @@ function Xs({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolv
|
|
|
5530
5561
|
children: [/* @__PURE__ */ Q("button", {
|
|
5531
5562
|
type: "button",
|
|
5532
5563
|
class: "markup-btn markup-btn-primary markup-discard-confirm-keep",
|
|
5533
|
-
onClick:
|
|
5564
|
+
onClick: E,
|
|
5534
5565
|
children: "Keep editing"
|
|
5535
5566
|
}), /* @__PURE__ */ Q("button", {
|
|
5536
5567
|
type: "button",
|
|
@@ -6042,22 +6073,39 @@ function sc({ pageX: e, pageY: t }) {
|
|
|
6042
6073
|
//#endregion
|
|
6043
6074
|
//#region src/runtime/ui/placement-overlay.tsx
|
|
6044
6075
|
function cc({ onPlace: e, onCancel: t }) {
|
|
6045
|
-
|
|
6046
|
-
|
|
6076
|
+
let n = H(null);
|
|
6077
|
+
return rt(() => {
|
|
6078
|
+
let r = n.current?.getRootNode() ?? null, i = (e) => r !== null && e.composedPath().includes(r);
|
|
6079
|
+
function a(e) {
|
|
6047
6080
|
e.key === "Escape" && t();
|
|
6048
6081
|
}
|
|
6049
|
-
|
|
6050
|
-
|
|
6051
|
-
|
|
6052
|
-
|
|
6053
|
-
|
|
6054
|
-
|
|
6055
|
-
|
|
6056
|
-
|
|
6057
|
-
|
|
6082
|
+
function o(e) {
|
|
6083
|
+
i(e) || (e.preventDefault(), e.stopPropagation());
|
|
6084
|
+
}
|
|
6085
|
+
function s(t) {
|
|
6086
|
+
i(t) || (t.preventDefault(), t.stopPropagation(), e(vi(t), t.clientX, t.clientY));
|
|
6087
|
+
}
|
|
6088
|
+
let c = { capture: !0 }, l = [
|
|
6089
|
+
"pointerdown",
|
|
6090
|
+
"pointerup",
|
|
6091
|
+
"mousedown",
|
|
6092
|
+
"mouseup",
|
|
6093
|
+
"dblclick",
|
|
6094
|
+
"auxclick",
|
|
6095
|
+
"contextmenu"
|
|
6096
|
+
];
|
|
6097
|
+
window.addEventListener("keydown", a);
|
|
6098
|
+
for (let e of l) window.addEventListener(e, o, c);
|
|
6099
|
+
window.addEventListener("click", s, c);
|
|
6100
|
+
let u = lc();
|
|
6101
|
+
return () => {
|
|
6102
|
+
window.removeEventListener("keydown", a);
|
|
6103
|
+
for (let e of l) window.removeEventListener(e, o, c);
|
|
6104
|
+
window.removeEventListener("click", s, c), u();
|
|
6105
|
+
};
|
|
6106
|
+
}, [e, t]), /* @__PURE__ */ Q("div", {
|
|
6058
6107
|
class: "markup-placement-overlay",
|
|
6059
|
-
|
|
6060
|
-
onClick: n,
|
|
6108
|
+
ref: n,
|
|
6061
6109
|
role: "presentation",
|
|
6062
6110
|
children: /* @__PURE__ */ Q("div", {
|
|
6063
6111
|
class: "markup-placement-cursor-help",
|
|
@@ -6065,9 +6113,20 @@ function cc({ onPlace: e, onCancel: t }) {
|
|
|
6065
6113
|
})
|
|
6066
6114
|
});
|
|
6067
6115
|
}
|
|
6116
|
+
function lc() {
|
|
6117
|
+
let e = "html, html * { cursor: crosshair !important; }";
|
|
6118
|
+
if ("adoptedStyleSheets" in document && "replaceSync" in CSSStyleSheet.prototype) {
|
|
6119
|
+
let t = new CSSStyleSheet();
|
|
6120
|
+
return t.replaceSync(e), document.adoptedStyleSheets = [...document.adoptedStyleSheets, t], () => {
|
|
6121
|
+
document.adoptedStyleSheets = document.adoptedStyleSheets.filter((e) => e !== t);
|
|
6122
|
+
};
|
|
6123
|
+
}
|
|
6124
|
+
let t = document.createElement("style");
|
|
6125
|
+
return t.textContent = e, document.head.appendChild(t), () => t.remove();
|
|
6126
|
+
}
|
|
6068
6127
|
//#endregion
|
|
6069
6128
|
//#region src/runtime/ui/privacy-panel.tsx
|
|
6070
|
-
function
|
|
6129
|
+
function uc({ identity: e, apiUrl: t, autoCapture: n, autoCaptureLocked: r, isForgettingMe: i, forgetMeError: a, onForgetMe: o, onClose: s }) {
|
|
6071
6130
|
let [c, l] = B(!1), u = Yi(e), d = e.kind === "verified", f = d ? e.identity.email : void 0, p = e.kind === "anon";
|
|
6072
6131
|
return /* @__PURE__ */ Q("div", {
|
|
6073
6132
|
class: "markup-panel",
|
|
@@ -6167,7 +6226,7 @@ function lc({ identity: e, apiUrl: t, autoCapture: n, autoCaptureLocked: r, isFo
|
|
|
6167
6226
|
"Only ",
|
|
6168
6227
|
/* @__PURE__ */ Q("span", {
|
|
6169
6228
|
class: "markup-panel-mono",
|
|
6170
|
-
children:
|
|
6229
|
+
children: dc(t)
|
|
6171
6230
|
}),
|
|
6172
6231
|
". No analytics, no ad tech, no third-party requests from the widget. If the widget itself crashes it posts the error, this page's URL and your user-agent to that same host, never your identity or what you were writing."
|
|
6173
6232
|
]
|
|
@@ -6203,7 +6262,7 @@ function lc({ identity: e, apiUrl: t, autoCapture: n, autoCaptureLocked: r, isFo
|
|
|
6203
6262
|
})]
|
|
6204
6263
|
});
|
|
6205
6264
|
}
|
|
6206
|
-
function
|
|
6265
|
+
function dc(e) {
|
|
6207
6266
|
try {
|
|
6208
6267
|
return new URL(e).host;
|
|
6209
6268
|
} catch {
|
|
@@ -6212,7 +6271,7 @@ function uc(e) {
|
|
|
6212
6271
|
}
|
|
6213
6272
|
//#endregion
|
|
6214
6273
|
//#region src/runtime/ui/shortcuts-panel.tsx
|
|
6215
|
-
function
|
|
6274
|
+
function fc({ onClose: e }) {
|
|
6216
6275
|
let { mod: t, enter: n } = Wo();
|
|
6217
6276
|
return /* @__PURE__ */ Q("div", {
|
|
6218
6277
|
class: "markup-panel",
|
|
@@ -6307,14 +6366,14 @@ function dc({ onClose: e }) {
|
|
|
6307
6366
|
}
|
|
6308
6367
|
//#endregion
|
|
6309
6368
|
//#region src/runtime/ui/thread-popover.tsx
|
|
6310
|
-
var
|
|
6369
|
+
var pc = [
|
|
6311
6370
|
"👍",
|
|
6312
6371
|
"❤️",
|
|
6313
6372
|
"🎉",
|
|
6314
6373
|
"😮",
|
|
6315
6374
|
"😄",
|
|
6316
6375
|
"❓"
|
|
6317
|
-
],
|
|
6376
|
+
], mc = Ur({
|
|
6318
6377
|
none: {
|
|
6319
6378
|
"toggle-thread-menu": () => ({
|
|
6320
6379
|
kind: "thread-menu",
|
|
@@ -6370,8 +6429,8 @@ var fc = [
|
|
|
6370
6429
|
dismiss: () => ({ kind: "none" })
|
|
6371
6430
|
}
|
|
6372
6431
|
});
|
|
6373
|
-
function
|
|
6374
|
-
let b = H(null), x = H(null), S = H(null), C = H(null), [w, T] = Wr(
|
|
6432
|
+
function hc({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIdentityResolving: i, isSigningIn: a, canDelete: o, isPending: s, error: c, isHidden: l = !1, members: u = [], onAuthor: d, onSignIn: f, onClose: p, onReply: m, onEditComment: h, onDeleteComment: g, onToggleReaction: _, onResolve: v, onDelete: y }) {
|
|
6433
|
+
let b = H(null), x = H(null), S = H(null), C = H(null), [w, T] = Wr(mc, { kind: "none" }), [E, D] = B(null), { onPointerDown: O, isDragging: ee } = _s({
|
|
6375
6434
|
targetRef: b,
|
|
6376
6435
|
shouldStart: (e) => !e.target?.closest("button, a, input, textarea, select"),
|
|
6377
6436
|
onMove: D
|
|
@@ -6398,12 +6457,12 @@ function mc({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6398
6457
|
V(() => {
|
|
6399
6458
|
j.current ??= A.at(-1)?.createdAt ?? 0;
|
|
6400
6459
|
}, [A]);
|
|
6401
|
-
let
|
|
6460
|
+
let M = H(!0);
|
|
6402
6461
|
V(() => {
|
|
6403
6462
|
let e = x.current;
|
|
6404
6463
|
if (e) {
|
|
6405
|
-
if (
|
|
6406
|
-
|
|
6464
|
+
if (M.current) {
|
|
6465
|
+
M.current = !1, e.scrollTop = e.scrollHeight;
|
|
6407
6466
|
return;
|
|
6408
6467
|
}
|
|
6409
6468
|
e.scrollHeight - e.scrollTop - e.clientHeight < 80 && (e.scrollTop = e.scrollHeight);
|
|
@@ -6419,15 +6478,15 @@ function mc({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6419
6478
|
}
|
|
6420
6479
|
return e.addEventListener("toggle", t), () => e.removeEventListener("toggle", t);
|
|
6421
6480
|
}, [p]);
|
|
6422
|
-
let
|
|
6481
|
+
let N = it(() => {
|
|
6423
6482
|
let t = yi({
|
|
6424
6483
|
anchorX: e.anchorX,
|
|
6425
6484
|
anchorY: e.anchorY,
|
|
6426
6485
|
anchorSelector: e.anchorSelector
|
|
6427
6486
|
});
|
|
6428
6487
|
return {
|
|
6429
|
-
left:
|
|
6430
|
-
top:
|
|
6488
|
+
left: yc(t.pageX - window.scrollX + 16, 12, window.innerWidth - 320 - 12),
|
|
6489
|
+
top: yc(t.pageY - window.scrollY - 16, 12, window.innerHeight - 200)
|
|
6431
6490
|
};
|
|
6432
6491
|
}, [
|
|
6433
6492
|
e.anchorX,
|
|
@@ -6440,8 +6499,8 @@ function mc({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6440
6499
|
class: Z("markup-popover", E && "is-floating", ee && "is-dragging", l && "is-hud-hidden"),
|
|
6441
6500
|
popover: "auto",
|
|
6442
6501
|
style: {
|
|
6443
|
-
"--markup-pop-x": `${E?.left ??
|
|
6444
|
-
"--markup-pop-y": `${E?.top ??
|
|
6502
|
+
"--markup-pop-x": `${E?.left ?? N.left}px`,
|
|
6503
|
+
"--markup-pop-y": `${E?.top ?? N.top}px`
|
|
6445
6504
|
},
|
|
6446
6505
|
role: "dialog",
|
|
6447
6506
|
"aria-label": "Markup thread",
|
|
@@ -6515,10 +6574,10 @@ function mc({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6515
6574
|
return /* @__PURE__ */ Q("li", {
|
|
6516
6575
|
class: Z("markup-comment", j.current != null && t.createdAt > j.current && "is-new"),
|
|
6517
6576
|
children: [
|
|
6518
|
-
/* @__PURE__ */ Q(
|
|
6577
|
+
/* @__PURE__ */ Q(bc, {
|
|
6519
6578
|
name: t.authorName,
|
|
6520
6579
|
image: t.authorImage,
|
|
6521
|
-
tone:
|
|
6580
|
+
tone: Sc(t.authorClientId ?? t.authorName)
|
|
6522
6581
|
}),
|
|
6523
6582
|
/* @__PURE__ */ Q("div", {
|
|
6524
6583
|
class: "markup-comment-meta",
|
|
@@ -6537,18 +6596,18 @@ function mc({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6537
6596
|
/* @__PURE__ */ Q("time", {
|
|
6538
6597
|
class: "markup-comment-time",
|
|
6539
6598
|
datetime: new Date(t.createdAt).toISOString(),
|
|
6540
|
-
title:
|
|
6541
|
-
children:
|
|
6599
|
+
title: wc(t.createdAt),
|
|
6600
|
+
children: Cc(t.createdAt)
|
|
6542
6601
|
}),
|
|
6543
6602
|
t.editedAt == null ? null : /* @__PURE__ */ Q("time", {
|
|
6544
6603
|
class: "markup-comment-edited",
|
|
6545
6604
|
datetime: new Date(t.editedAt).toISOString(),
|
|
6546
|
-
title:
|
|
6605
|
+
title: wc(t.editedAt),
|
|
6547
6606
|
children: "edited"
|
|
6548
6607
|
}),
|
|
6549
6608
|
/* @__PURE__ */ Q("div", {
|
|
6550
6609
|
class: "markup-thread-actions",
|
|
6551
|
-
children: [!k && !l ? /* @__PURE__ */ Q(
|
|
6610
|
+
children: [!k && !l ? /* @__PURE__ */ Q(gc, {
|
|
6552
6611
|
comment: t,
|
|
6553
6612
|
pickerOpen: m,
|
|
6554
6613
|
pickerDirection: v,
|
|
@@ -6695,7 +6754,7 @@ function mc({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6695
6754
|
alt: "Screenshot"
|
|
6696
6755
|
})
|
|
6697
6756
|
}) : null,
|
|
6698
|
-
!l && t.reactions.length > 0 ? /* @__PURE__ */ Q(
|
|
6757
|
+
!l && t.reactions.length > 0 ? /* @__PURE__ */ Q(_c, {
|
|
6699
6758
|
comment: t,
|
|
6700
6759
|
isResolved: k,
|
|
6701
6760
|
onToggle: (e) => _(t._id, e)
|
|
@@ -6759,7 +6818,7 @@ function mc({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6759
6818
|
]
|
|
6760
6819
|
});
|
|
6761
6820
|
}
|
|
6762
|
-
function
|
|
6821
|
+
function gc({ comment: e, pickerOpen: t, pickerDirection: n, pickerSide: r, pickerRef: i, onPickerClick: a, onPickerSelect: o }) {
|
|
6763
6822
|
return /* @__PURE__ */ Q("div", {
|
|
6764
6823
|
class: Z("markup-reaction-picker-wrap", t && "is-open", t && n === "up" && "is-up", r && "is-side"),
|
|
6765
6824
|
ref: i,
|
|
@@ -6773,7 +6832,7 @@ function hc({ comment: e, pickerOpen: t, pickerDirection: n, pickerSide: r, pick
|
|
|
6773
6832
|
}), t ? /* @__PURE__ */ Q("div", {
|
|
6774
6833
|
class: "markup-reaction-picker",
|
|
6775
6834
|
role: "menu",
|
|
6776
|
-
children:
|
|
6835
|
+
children: pc.map((t) => /* @__PURE__ */ Q("button", {
|
|
6777
6836
|
type: "button",
|
|
6778
6837
|
role: "menuitem",
|
|
6779
6838
|
class: Z("markup-reaction-picker-item", (e.reactions.find((e) => e.emoji === t)?.mine ?? !1) && "is-mine"),
|
|
@@ -6783,11 +6842,11 @@ function hc({ comment: e, pickerOpen: t, pickerDirection: n, pickerSide: r, pick
|
|
|
6783
6842
|
}) : null]
|
|
6784
6843
|
});
|
|
6785
6844
|
}
|
|
6786
|
-
function
|
|
6845
|
+
function _c({ comment: e, isResolved: t, onToggle: n }) {
|
|
6787
6846
|
return /* @__PURE__ */ Q("div", {
|
|
6788
6847
|
class: "markup-reactions",
|
|
6789
6848
|
children: e.reactions.map((e) => {
|
|
6790
|
-
let r =
|
|
6849
|
+
let r = vc(e.reactors, e.mine, e.count, e.emoji);
|
|
6791
6850
|
return /* @__PURE__ */ Q("button", {
|
|
6792
6851
|
type: "button",
|
|
6793
6852
|
class: Z("markup-reaction-chip", e.mine && "is-mine"),
|
|
@@ -6808,14 +6867,14 @@ function gc({ comment: e, isResolved: t, onToggle: n }) {
|
|
|
6808
6867
|
})
|
|
6809
6868
|
});
|
|
6810
6869
|
}
|
|
6811
|
-
function
|
|
6870
|
+
function vc(e, t, n, r) {
|
|
6812
6871
|
let i = e.slice(), a = i.length + +!!t, o = Math.max(0, n - a);
|
|
6813
6872
|
return o > 0 && i.push(`${o} other${o === 1 ? "" : "s"}`), t && i.push("you"), i.length === 0 ? `${n} reacted with ${r}` : `${i.length === 1 ? i[0] : `${i.slice(0, -1).join(", ")} and ${i[i.length - 1]}`} reacted with ${r}`;
|
|
6814
6873
|
}
|
|
6815
|
-
function
|
|
6874
|
+
function yc(e, t, n) {
|
|
6816
6875
|
return Math.max(t, Math.min(n, e));
|
|
6817
6876
|
}
|
|
6818
|
-
function
|
|
6877
|
+
function bc({ name: e, image: t, tone: n }) {
|
|
6819
6878
|
let [r, i] = B(null);
|
|
6820
6879
|
return /* @__PURE__ */ Q("span", {
|
|
6821
6880
|
class: "markup-comment-avatar",
|
|
@@ -6831,11 +6890,11 @@ function yc({ name: e, image: t, tone: n }) {
|
|
|
6831
6890
|
onError: () => i(t)
|
|
6832
6891
|
}) : /* @__PURE__ */ Q("span", {
|
|
6833
6892
|
class: "markup-avatar-initials",
|
|
6834
|
-
children:
|
|
6893
|
+
children: xc(e)
|
|
6835
6894
|
})
|
|
6836
6895
|
});
|
|
6837
6896
|
}
|
|
6838
|
-
function
|
|
6897
|
+
function xc(e) {
|
|
6839
6898
|
let t = e.trim();
|
|
6840
6899
|
if (!t) return "??";
|
|
6841
6900
|
let n = t.split(/\s+/).filter(Boolean), r = n[0] ?? "";
|
|
@@ -6843,12 +6902,12 @@ function bc(e) {
|
|
|
6843
6902
|
let i = n[n.length - 1] ?? "";
|
|
6844
6903
|
return ((r[0] ?? "") + (i[0] ?? "")).toUpperCase();
|
|
6845
6904
|
}
|
|
6846
|
-
function
|
|
6905
|
+
function Sc(e) {
|
|
6847
6906
|
let t = 0;
|
|
6848
6907
|
for (let n = 0; n < e.length; n++) t = t * 31 + e.charCodeAt(n) | 0;
|
|
6849
6908
|
return Math.abs(t) % 5 + 1;
|
|
6850
6909
|
}
|
|
6851
|
-
function
|
|
6910
|
+
function Cc(e) {
|
|
6852
6911
|
let t = Date.now() - e, n = Math.floor(t / 1e3);
|
|
6853
6912
|
if (n < 60) return "just now";
|
|
6854
6913
|
let r = Math.floor(n / 60);
|
|
@@ -6865,7 +6924,7 @@ function Sc(e) {
|
|
|
6865
6924
|
year: "numeric"
|
|
6866
6925
|
});
|
|
6867
6926
|
}
|
|
6868
|
-
function
|
|
6927
|
+
function wc(e) {
|
|
6869
6928
|
return new Date(e).toLocaleDateString([], {
|
|
6870
6929
|
month: "long",
|
|
6871
6930
|
day: "numeric",
|
|
@@ -6876,7 +6935,7 @@ function Cc(e) {
|
|
|
6876
6935
|
}
|
|
6877
6936
|
//#endregion
|
|
6878
6937
|
//#region src/runtime/ui/toolbar.tsx
|
|
6879
|
-
function
|
|
6938
|
+
function Tc({ isActive: e, onToggle: t, onHide: n, position: r = "bottom-right", unreadCount: i = 0, showInbox: a = !1, onOpenInbox: o, inboxOpen: s = !1, pinsVisible: c = !0, onTogglePins: l, identityButton: u, overflowButton: d }) {
|
|
6880
6939
|
let f = H(0);
|
|
6881
6940
|
i > 0 && (f.current = i);
|
|
6882
6941
|
let p = r === "bottom-left" ? "markup-toolbar-left" : r === "bottom-center" ? "markup-toolbar-center" : "markup-toolbar-right";
|
|
@@ -6953,7 +7012,7 @@ function wc({ isActive: e, onToggle: t, onHide: n, position: r = "bottom-right",
|
|
|
6953
7012
|
}
|
|
6954
7013
|
//#endregion
|
|
6955
7014
|
//#region src/runtime/ui/app.tsx
|
|
6956
|
-
function
|
|
7015
|
+
function Ec(e) {
|
|
6957
7016
|
let t = {
|
|
6958
7017
|
clientId: `markup_user_${e.identity.id}`,
|
|
6959
7018
|
name: e.identity.name,
|
|
@@ -6979,17 +7038,17 @@ function Tc(e) {
|
|
|
6979
7038
|
} : {}
|
|
6980
7039
|
};
|
|
6981
7040
|
}
|
|
6982
|
-
function
|
|
7041
|
+
function Dc() {
|
|
6983
7042
|
let e = document.activeElement;
|
|
6984
7043
|
for (; e && e.shadowRoot && e.shadowRoot.activeElement;) e = e.shadowRoot.activeElement;
|
|
6985
7044
|
if (!e) return !1;
|
|
6986
7045
|
let t = e.tagName;
|
|
6987
7046
|
return t === "INPUT" || t === "TEXTAREA" || t === "SELECT" || e.isContentEditable;
|
|
6988
7047
|
}
|
|
6989
|
-
function
|
|
7048
|
+
function Oc() {
|
|
6990
7049
|
return window.location.host + window.location.pathname;
|
|
6991
7050
|
}
|
|
6992
|
-
var
|
|
7051
|
+
var kc = Ur({
|
|
6993
7052
|
visible: {
|
|
6994
7053
|
"hide-with-toast": () => ({ kind: "hidden-with-toast" }),
|
|
6995
7054
|
toggle: () => ({ kind: "hidden" })
|
|
@@ -7000,26 +7059,26 @@ var Oc = Ur({
|
|
|
7000
7059
|
},
|
|
7001
7060
|
hidden: { toggle: () => ({ kind: "visible" }) }
|
|
7002
7061
|
});
|
|
7003
|
-
function
|
|
7062
|
+
function Ac(e) {
|
|
7004
7063
|
return qi(e), e;
|
|
7005
7064
|
}
|
|
7006
|
-
var
|
|
7065
|
+
var jc = Ur({
|
|
7007
7066
|
unresolved: {
|
|
7008
|
-
"mint-success": (e, t) =>
|
|
7067
|
+
"mint-success": (e, t) => Ac({
|
|
7009
7068
|
kind: "anon",
|
|
7010
7069
|
identity: t.identity
|
|
7011
7070
|
}),
|
|
7012
|
-
"signed-in": (e, t) =>
|
|
7071
|
+
"signed-in": (e, t) => Ac({
|
|
7013
7072
|
kind: "verified",
|
|
7014
7073
|
identity: t.identity
|
|
7015
7074
|
})
|
|
7016
7075
|
},
|
|
7017
7076
|
anon: {
|
|
7018
|
-
"signed-in": (e, t) =>
|
|
7077
|
+
"signed-in": (e, t) => Ac({
|
|
7019
7078
|
kind: "verified",
|
|
7020
7079
|
identity: t.identity
|
|
7021
7080
|
}),
|
|
7022
|
-
"author-set": (e, t) =>
|
|
7081
|
+
"author-set": (e, t) => Ac({
|
|
7023
7082
|
kind: "anon",
|
|
7024
7083
|
identity: {
|
|
7025
7084
|
...e.identity,
|
|
@@ -7027,35 +7086,35 @@ var Ac = Ur({
|
|
|
7027
7086
|
email: t.email
|
|
7028
7087
|
}
|
|
7029
7088
|
}),
|
|
7030
|
-
"forget-me": () =>
|
|
7089
|
+
"forget-me": () => Ac({ kind: "unresolved" })
|
|
7031
7090
|
},
|
|
7032
7091
|
verified: {
|
|
7033
|
-
"signed-in": (e, t) =>
|
|
7092
|
+
"signed-in": (e, t) => Ac({
|
|
7034
7093
|
kind: "verified",
|
|
7035
7094
|
identity: t.identity
|
|
7036
7095
|
}),
|
|
7037
|
-
unauthorized: (e) =>
|
|
7096
|
+
unauthorized: (e) => Ac({
|
|
7038
7097
|
kind: "recovering",
|
|
7039
7098
|
preserved: {
|
|
7040
7099
|
name: e.identity.name,
|
|
7041
7100
|
email: e.identity.email
|
|
7042
7101
|
}
|
|
7043
7102
|
}),
|
|
7044
|
-
"signed-out": () =>
|
|
7103
|
+
"signed-out": () => Ac({ kind: "unresolved" })
|
|
7045
7104
|
},
|
|
7046
7105
|
recovering: {
|
|
7047
|
-
"mint-success": (e, t) =>
|
|
7106
|
+
"mint-success": (e, t) => Ac({
|
|
7048
7107
|
kind: "anon",
|
|
7049
7108
|
identity: t.identity
|
|
7050
7109
|
}),
|
|
7051
|
-
"signed-in": (e, t) =>
|
|
7110
|
+
"signed-in": (e, t) => Ac({
|
|
7052
7111
|
kind: "verified",
|
|
7053
7112
|
identity: t.identity
|
|
7054
7113
|
})
|
|
7055
7114
|
}
|
|
7056
7115
|
});
|
|
7057
|
-
function
|
|
7058
|
-
let [a, o] = B(
|
|
7116
|
+
function Mc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r, dashboardUrl: i }) {
|
|
7117
|
+
let [a, o] = B(Oc), [s, c] = B([]), [l, u] = B(!1), d = it(() => Ki(), []), [f, p] = Wr(jc, d.state), [m, h] = B(null);
|
|
7059
7118
|
V(() => {
|
|
7060
7119
|
let n = !1;
|
|
7061
7120
|
return Mi(e, t).then((e) => {
|
|
@@ -7103,15 +7162,15 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7103
7162
|
e = !0;
|
|
7104
7163
|
};
|
|
7105
7164
|
}, [E]);
|
|
7106
|
-
let [A, j] = B(0), [
|
|
7107
|
-
|
|
7108
|
-
|
|
7165
|
+
let [A, j] = B(0), [M, N] = B([]), [te, ne] = B(!1), [re, ie] = B(void 0), [ae, oe] = B(!1), se = U(() => {
|
|
7166
|
+
ne(!0), ie(void 0), E.listNotifications().then((e) => {
|
|
7167
|
+
N(e.notifications);
|
|
7109
7168
|
}).catch((e) => {
|
|
7110
|
-
|
|
7169
|
+
ie(e instanceof Error ? e.message : "Failed to load.");
|
|
7111
7170
|
}).finally(() => {
|
|
7112
|
-
|
|
7171
|
+
ne(!1);
|
|
7113
7172
|
});
|
|
7114
|
-
}, [E]),
|
|
7173
|
+
}, [E]), ce = Zr(), le = Zr(), ue = Zr(), de = Zr(), fe = Zr(), { run: P, reset: pe } = ce, { run: me } = le, { run: he, reset: F } = ue, { run: ge } = de, { run: _e } = fe, ve = fe.isPending, ye = ce.isPending, xe = ce.error ?? le.error ?? ue.error, [Se, Ce] = Wr(kc, { kind: "visible" }), we = Se.kind !== "visible", [Te, Ee] = B(0), De = H(null), Oe = Yi(f), ke = f.kind === "verified", Ae = f.kind === "unresolved" || f.kind === "recovering", je = Ji(f);
|
|
7115
7174
|
V(() => {
|
|
7116
7175
|
if (f.kind !== "unresolved" && f.kind !== "recovering") return;
|
|
7117
7176
|
let e = f.kind === "recovering" ? f.preserved : d.preserved, t = !1, n = null, r = 1e3;
|
|
@@ -7150,7 +7209,7 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7150
7209
|
}, [e]);
|
|
7151
7210
|
let L = H(!1);
|
|
7152
7211
|
V(() => {
|
|
7153
|
-
if (!(!Me || !I)) return
|
|
7212
|
+
if (!(!Me || !I)) return pe(), F(), Me.onUpdate(Nn("widget/queries:subscribeThreadsForRoute"), {
|
|
7154
7213
|
subscriptionToken: I,
|
|
7155
7214
|
route: a,
|
|
7156
7215
|
viewerClientId: je
|
|
@@ -7162,8 +7221,8 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7162
7221
|
I,
|
|
7163
7222
|
a,
|
|
7164
7223
|
je,
|
|
7165
|
-
|
|
7166
|
-
|
|
7224
|
+
pe,
|
|
7225
|
+
F
|
|
7167
7226
|
]), V(() => {
|
|
7168
7227
|
if (f.kind !== "verified") {
|
|
7169
7228
|
j(0);
|
|
@@ -7187,7 +7246,7 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7187
7246
|
}), history.replaceState(null, "", window.location.pathname + window.location.search);
|
|
7188
7247
|
}
|
|
7189
7248
|
L.current = !0;
|
|
7190
|
-
}, [s, l]), V(() => zi(() => o(
|
|
7249
|
+
}, [s, l]), V(() => zi(() => o(Oc())), []), V(() => {
|
|
7191
7250
|
function e(e) {
|
|
7192
7251
|
e.key === "." && (e.metaKey || e.ctrlKey) && (e.altKey || e.shiftKey || (e.preventDefault(), Ce({ type: "toggle" })));
|
|
7193
7252
|
}
|
|
@@ -7212,11 +7271,11 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7212
7271
|
};
|
|
7213
7272
|
}, []);
|
|
7214
7273
|
let Pe = U(() => {
|
|
7215
|
-
|
|
7216
|
-
}, [
|
|
7274
|
+
pe(), F(), be("comment_started"), O({ kind: "placing" });
|
|
7275
|
+
}, [pe, F]);
|
|
7217
7276
|
V(() => {
|
|
7218
7277
|
function e(e) {
|
|
7219
|
-
e.key === "c" && (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey || D.kind === "idle" && (we ||
|
|
7278
|
+
e.key === "c" && (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey || D.kind === "idle" && (we || Dc() || (e.preventDefault(), Pe())));
|
|
7220
7279
|
}
|
|
7221
7280
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
7222
7281
|
}, [
|
|
@@ -7225,8 +7284,8 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7225
7284
|
Pe
|
|
7226
7285
|
]);
|
|
7227
7286
|
let Fe = U(() => {
|
|
7228
|
-
O({ kind: "idle" }),
|
|
7229
|
-
}, [
|
|
7287
|
+
O({ kind: "idle" }), pe(), F();
|
|
7288
|
+
}, [pe, F]), Ie = H(0), Le = U((e, t, n) => {
|
|
7230
7289
|
let i = t + window.scrollX, a = n + window.scrollY, o = ++Ie.current;
|
|
7231
7290
|
if (r?.enabled === !1 || !b) {
|
|
7232
7291
|
O({
|
|
@@ -7270,7 +7329,7 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7270
7329
|
screenshotFailed: e == null,
|
|
7271
7330
|
screenshotRedactedCount: e?.redactedCount ?? 0,
|
|
7272
7331
|
screenshotRedactedSelectors: e?.redactedSelectors ?? []
|
|
7273
|
-
}),
|
|
7332
|
+
}), be("screenshot_captured", { ok: e != null });
|
|
7274
7333
|
});
|
|
7275
7334
|
}, [r, b]), Re = U((e, t) => {
|
|
7276
7335
|
p({
|
|
@@ -7278,9 +7337,9 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7278
7337
|
name: e,
|
|
7279
7338
|
email: t
|
|
7280
7339
|
});
|
|
7281
|
-
}, [p]), ze =
|
|
7282
|
-
|
|
7283
|
-
let n =
|
|
7340
|
+
}, [p]), ze = le.isPending, Be = U(async () => {
|
|
7341
|
+
be("sign_in_started"), await me(async () => {
|
|
7342
|
+
let n = Ec(await ta({
|
|
7284
7343
|
apiUrl: e,
|
|
7285
7344
|
apiKey: t,
|
|
7286
7345
|
useCookies: m === !0
|
|
@@ -7289,18 +7348,18 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7289
7348
|
p({
|
|
7290
7349
|
type: "signed-in",
|
|
7291
7350
|
identity: n
|
|
7292
|
-
}),
|
|
7351
|
+
}), be("sign_in_completed");
|
|
7293
7352
|
});
|
|
7294
7353
|
}, [
|
|
7295
7354
|
e,
|
|
7296
7355
|
t,
|
|
7297
7356
|
m,
|
|
7298
|
-
|
|
7357
|
+
me,
|
|
7299
7358
|
p
|
|
7300
7359
|
]), Ve = U(async (e, t) => {
|
|
7301
7360
|
if (D.kind !== "composing-new") return;
|
|
7302
7361
|
let n = Xi(f);
|
|
7303
|
-
n && await
|
|
7362
|
+
n && await P(async () => {
|
|
7304
7363
|
let r;
|
|
7305
7364
|
if (t && D.screenshot) {
|
|
7306
7365
|
let { uploadUrl: e } = await E.getScreenshotUploadUrl(), t;
|
|
@@ -7335,7 +7394,7 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7335
7394
|
mentions: i.length > 0 ? i : void 0,
|
|
7336
7395
|
screenshotStorageId: r
|
|
7337
7396
|
});
|
|
7338
|
-
c((e) => [...e, o.thread]),
|
|
7397
|
+
c((e) => [...e, o.thread]), be("comment_submitted", {
|
|
7339
7398
|
hasScreenshot: r != null,
|
|
7340
7399
|
hasMentions: i.length > 0
|
|
7341
7400
|
}), O({
|
|
@@ -7348,30 +7407,30 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7348
7407
|
f,
|
|
7349
7408
|
D,
|
|
7350
7409
|
a,
|
|
7351
|
-
|
|
7410
|
+
P
|
|
7352
7411
|
]), He = U(async () => {
|
|
7353
7412
|
if (D.kind !== "thread") return;
|
|
7354
7413
|
let e = D.threadId;
|
|
7355
|
-
await
|
|
7414
|
+
await P(async () => {
|
|
7356
7415
|
await E.deleteThread(e), c((t) => t.filter((t) => t._id !== e)), O({ kind: "idle" });
|
|
7357
7416
|
});
|
|
7358
7417
|
}, [
|
|
7359
7418
|
E,
|
|
7360
7419
|
D,
|
|
7361
|
-
|
|
7420
|
+
P
|
|
7362
7421
|
]), Ue = U(async () => {
|
|
7363
7422
|
if (D.kind !== "thread") return;
|
|
7364
7423
|
let e = D.threadId;
|
|
7365
|
-
await
|
|
7366
|
-
await E.resolveThread(e, je), c((t) => t.filter((t) => t._id !== e)),
|
|
7424
|
+
await P(async () => {
|
|
7425
|
+
await E.resolveThread(e, je), c((t) => t.filter((t) => t._id !== e)), be("thread_resolved"), O({ kind: "idle" });
|
|
7367
7426
|
});
|
|
7368
7427
|
}, [
|
|
7369
7428
|
E,
|
|
7370
7429
|
D,
|
|
7371
7430
|
je,
|
|
7372
|
-
|
|
7431
|
+
P
|
|
7373
7432
|
]), We = U((e) => {
|
|
7374
|
-
if (e.readAt ?? (j((e) => Math.max(0, e - 1)),
|
|
7433
|
+
if (e.readAt ?? (j((e) => Math.max(0, e - 1)), N((t) => t.map((t) => t._id === e._id ? {
|
|
7375
7434
|
...t,
|
|
7376
7435
|
readAt: Date.now()
|
|
7377
7436
|
} : t)), E.markNotificationRead(e._id).catch(() => {})), s.some((t) => t._id === e.threadId)) O({
|
|
@@ -7383,33 +7442,33 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7383
7442
|
t && (t.hash = `markup-thread=${e.threadId}`, window.location.href = t.toString());
|
|
7384
7443
|
}
|
|
7385
7444
|
}, [E, s]), R = U(() => {
|
|
7386
|
-
|
|
7445
|
+
oe(!0), j(0), N((e) => e.map((e) => e.readAt == null ? {
|
|
7387
7446
|
...e,
|
|
7388
7447
|
readAt: Date.now()
|
|
7389
|
-
} : e)), E.markAllNotificationsRead().catch(() => {}).finally(() =>
|
|
7448
|
+
} : e)), E.markAllNotificationsRead().catch(() => {}).finally(() => oe(!1));
|
|
7390
7449
|
}, [E]), Ge = U(async (e) => {
|
|
7391
7450
|
if (D.kind !== "thread") return;
|
|
7392
7451
|
let t = Xi(f);
|
|
7393
7452
|
if (!t) return;
|
|
7394
7453
|
let n = D.threadId;
|
|
7395
|
-
await
|
|
7454
|
+
await P(async () => {
|
|
7396
7455
|
let r = qr(e), i = await E.addComment(n, {
|
|
7397
7456
|
body: e,
|
|
7398
7457
|
authorName: t.name,
|
|
7399
7458
|
authorEmail: t.email,
|
|
7400
7459
|
mentions: r.length > 0 ? r : void 0
|
|
7401
7460
|
});
|
|
7402
|
-
c((e) => e.map((e) => e._id === n ? i.thread : e)),
|
|
7461
|
+
c((e) => e.map((e) => e._id === n ? i.thread : e)), be("reply_submitted", { hasMentions: r.length > 0 });
|
|
7403
7462
|
});
|
|
7404
7463
|
}, [
|
|
7405
7464
|
E,
|
|
7406
7465
|
f,
|
|
7407
7466
|
D,
|
|
7408
|
-
|
|
7467
|
+
P
|
|
7409
7468
|
]), Ke = U(async (e, t) => {
|
|
7410
7469
|
if (D.kind !== "thread" || f.kind !== "anon" && f.kind !== "verified") return;
|
|
7411
7470
|
let n = D.threadId;
|
|
7412
|
-
await
|
|
7471
|
+
await P(async () => {
|
|
7413
7472
|
let r = qr(t), i = await E.editComment(n, e, {
|
|
7414
7473
|
body: t,
|
|
7415
7474
|
mentions: r.length > 0 ? r : void 0
|
|
@@ -7420,11 +7479,11 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7420
7479
|
E,
|
|
7421
7480
|
f,
|
|
7422
7481
|
D,
|
|
7423
|
-
|
|
7482
|
+
P
|
|
7424
7483
|
]), qe = U(async (e) => {
|
|
7425
7484
|
if (D.kind !== "thread" || f.kind !== "anon" && f.kind !== "verified") return;
|
|
7426
7485
|
let t = D.threadId;
|
|
7427
|
-
await
|
|
7486
|
+
await P(async () => {
|
|
7428
7487
|
let n = await E.deleteComment(t, e);
|
|
7429
7488
|
c((e) => e.map((e) => e._id === t ? n.thread : e));
|
|
7430
7489
|
});
|
|
@@ -7432,32 +7491,32 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7432
7491
|
E,
|
|
7433
7492
|
f,
|
|
7434
7493
|
D,
|
|
7435
|
-
|
|
7494
|
+
P
|
|
7436
7495
|
]), Je = U(async (e, t) => {
|
|
7437
7496
|
if (D.kind !== "thread") return;
|
|
7438
7497
|
let n = Xi(f);
|
|
7439
7498
|
if (!n) return;
|
|
7440
7499
|
let r = D.threadId;
|
|
7441
|
-
await
|
|
7500
|
+
await he(async () => {
|
|
7442
7501
|
let i = await E.toggleReaction(e, {
|
|
7443
7502
|
emoji: t,
|
|
7444
7503
|
authorName: n.name
|
|
7445
7504
|
});
|
|
7446
|
-
c((e) => e.map((e) => e._id === r ? i.thread : e)),
|
|
7505
|
+
c((e) => e.map((e) => e._id === r ? i.thread : e)), be("reaction_added");
|
|
7447
7506
|
});
|
|
7448
7507
|
}, [
|
|
7449
7508
|
E,
|
|
7450
7509
|
f,
|
|
7451
7510
|
D,
|
|
7452
|
-
|
|
7511
|
+
he
|
|
7453
7512
|
]), [z, Ye] = B(!1), Xe = U(async () => {
|
|
7454
|
-
await
|
|
7513
|
+
await ge(async () => {
|
|
7455
7514
|
await E.forgetMe(), O({ kind: "idle" }), w(), p({ type: "forget-me" }), Ye(!0);
|
|
7456
7515
|
});
|
|
7457
7516
|
}, [
|
|
7458
7517
|
E,
|
|
7459
7518
|
w,
|
|
7460
|
-
|
|
7519
|
+
ge,
|
|
7461
7520
|
p
|
|
7462
7521
|
]);
|
|
7463
7522
|
V(() => {
|
|
@@ -7466,12 +7525,12 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7466
7525
|
return () => window.clearTimeout(e);
|
|
7467
7526
|
}, [z]);
|
|
7468
7527
|
let [Ze, Qe] = B(!1), $e = U(async () => {
|
|
7469
|
-
await
|
|
7528
|
+
await _e(async () => {
|
|
7470
7529
|
await E.signOut(), O({ kind: "idle" }), p({ type: "signed-out" }), Qe(!0);
|
|
7471
7530
|
});
|
|
7472
7531
|
}, [
|
|
7473
7532
|
E,
|
|
7474
|
-
|
|
7533
|
+
_e,
|
|
7475
7534
|
p
|
|
7476
7535
|
]);
|
|
7477
7536
|
V(() => {
|
|
@@ -7545,7 +7604,7 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7545
7604
|
isActive: n,
|
|
7546
7605
|
isUnresolved: !t.resolved,
|
|
7547
7606
|
onClick: () => {
|
|
7548
|
-
|
|
7607
|
+
be("thread_opened", { commentCount: r }), O({
|
|
7549
7608
|
kind: "thread",
|
|
7550
7609
|
threadId: e._id
|
|
7551
7610
|
});
|
|
@@ -7560,7 +7619,7 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7560
7619
|
onPlace: Le,
|
|
7561
7620
|
onCancel: Fe
|
|
7562
7621
|
}) : null,
|
|
7563
|
-
D.kind === "thread" && et ? /* @__PURE__ */ Q(
|
|
7622
|
+
D.kind === "thread" && et ? /* @__PURE__ */ Q(hc, {
|
|
7564
7623
|
thread: et,
|
|
7565
7624
|
authorName: Oe,
|
|
7566
7625
|
currentClientId: je ?? null,
|
|
@@ -7568,7 +7627,7 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7568
7627
|
isIdentityResolving: Ae,
|
|
7569
7628
|
isSigningIn: ze,
|
|
7570
7629
|
canDelete: tt,
|
|
7571
|
-
isPending:
|
|
7630
|
+
isPending: ye,
|
|
7572
7631
|
error: xe,
|
|
7573
7632
|
isHidden: we,
|
|
7574
7633
|
members: ee,
|
|
@@ -7589,7 +7648,7 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7589
7648
|
isVerified: ke,
|
|
7590
7649
|
isIdentityResolving: Ae,
|
|
7591
7650
|
isSigningIn: ze,
|
|
7592
|
-
isPending:
|
|
7651
|
+
isPending: ye,
|
|
7593
7652
|
error: xe,
|
|
7594
7653
|
screenshot: D.screenshot,
|
|
7595
7654
|
isScreenshotCapturing: D.isScreenshotCapturing,
|
|
@@ -7602,7 +7661,7 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7602
7661
|
onSubmit: Ve,
|
|
7603
7662
|
onClose: Fe
|
|
7604
7663
|
}) : null,
|
|
7605
|
-
!we || D.kind === "placing" || D.kind === "composing-new" ? /* @__PURE__ */ Q(
|
|
7664
|
+
!we || D.kind === "placing" || D.kind === "composing-new" ? /* @__PURE__ */ Q(Tc, {
|
|
7606
7665
|
isActive: D.kind === "placing",
|
|
7607
7666
|
onToggle: () => D.kind === "placing" ? Fe() : Pe(),
|
|
7608
7667
|
onHide: () => Ce({ type: "hide-with-toast" }),
|
|
@@ -7612,7 +7671,7 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7612
7671
|
inboxOpen: S === "inbox",
|
|
7613
7672
|
onOpenInbox: () => {
|
|
7614
7673
|
let e = S === "inbox" ? null : "inbox";
|
|
7615
|
-
C(e), e && (
|
|
7674
|
+
C(e), e && (be("notifications_opened", { unreadCount: A }), se());
|
|
7616
7675
|
},
|
|
7617
7676
|
pinsVisible: v,
|
|
7618
7677
|
onTogglePins: () => y((e) => !e),
|
|
@@ -7620,7 +7679,7 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7620
7679
|
identity: f,
|
|
7621
7680
|
position: g,
|
|
7622
7681
|
isSigningIn: ze,
|
|
7623
|
-
isSigningOut:
|
|
7682
|
+
isSigningOut: ve,
|
|
7624
7683
|
dashboardUrl: i,
|
|
7625
7684
|
onSignIn: Be,
|
|
7626
7685
|
onSignOut: $e,
|
|
@@ -7635,7 +7694,7 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7635
7694
|
onOpenPrivacy: () => C("privacy"),
|
|
7636
7695
|
onOpenShortcuts: () => C("shortcuts"),
|
|
7637
7696
|
onHideForSession: () => Ce({ type: "hide-with-toast" }),
|
|
7638
|
-
version: "1.
|
|
7697
|
+
version: "1.20.0",
|
|
7639
7698
|
dashboardUrl: i
|
|
7640
7699
|
})
|
|
7641
7700
|
}) : null,
|
|
@@ -7646,10 +7705,10 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7646
7705
|
ignoreToolbarKind: "inbox",
|
|
7647
7706
|
onClose: w,
|
|
7648
7707
|
children: /* @__PURE__ */ Q(Qs, {
|
|
7649
|
-
items:
|
|
7650
|
-
isLoading:
|
|
7651
|
-
error:
|
|
7652
|
-
isMarkingAll:
|
|
7708
|
+
items: M,
|
|
7709
|
+
isLoading: te,
|
|
7710
|
+
error: re,
|
|
7711
|
+
isMarkingAll: ae,
|
|
7653
7712
|
onBack: w,
|
|
7654
7713
|
onItemClick: (e) => {
|
|
7655
7714
|
w(), We(e);
|
|
@@ -7662,13 +7721,13 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7662
7721
|
label: "Privacy and data",
|
|
7663
7722
|
position: g,
|
|
7664
7723
|
onClose: w,
|
|
7665
|
-
children: /* @__PURE__ */ Q(
|
|
7724
|
+
children: /* @__PURE__ */ Q(uc, {
|
|
7666
7725
|
identity: f,
|
|
7667
7726
|
apiUrl: e,
|
|
7668
7727
|
autoCapture: b && r?.enabled !== !1,
|
|
7669
7728
|
autoCaptureLocked: r?.enabled === !1,
|
|
7670
|
-
isForgettingMe:
|
|
7671
|
-
forgetMeError:
|
|
7729
|
+
isForgettingMe: de.isPending,
|
|
7730
|
+
forgetMeError: de.error,
|
|
7672
7731
|
onForgetMe: Xe,
|
|
7673
7732
|
onClose: w
|
|
7674
7733
|
})
|
|
@@ -7678,15 +7737,15 @@ function jc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7678
7737
|
label: "Keyboard shortcuts",
|
|
7679
7738
|
position: g,
|
|
7680
7739
|
onClose: w,
|
|
7681
|
-
children: /* @__PURE__ */ Q(
|
|
7740
|
+
children: /* @__PURE__ */ Q(fc, { onClose: w })
|
|
7682
7741
|
}) : null,
|
|
7683
|
-
Se.kind === "hidden-with-toast" ? /* @__PURE__ */ Q(
|
|
7684
|
-
z ? /* @__PURE__ */ Q(
|
|
7685
|
-
Ze ? /* @__PURE__ */ Q(
|
|
7742
|
+
Se.kind === "hidden-with-toast" ? /* @__PURE__ */ Q(Nc, { position: g }) : null,
|
|
7743
|
+
z ? /* @__PURE__ */ Q(Pc, { position: g }) : null,
|
|
7744
|
+
Ze ? /* @__PURE__ */ Q(Fc, { position: g }) : null
|
|
7686
7745
|
]
|
|
7687
7746
|
});
|
|
7688
7747
|
}
|
|
7689
|
-
function
|
|
7748
|
+
function Nc({ position: e }) {
|
|
7690
7749
|
let { mod: t } = Wo();
|
|
7691
7750
|
return /* @__PURE__ */ Q("div", {
|
|
7692
7751
|
class: Z("markup-hud-hidden-toast", e === "bottom-left" ? "markup-hud-hidden-toast-left" : e === "bottom-center" ? "markup-hud-hidden-toast-center" : "markup-hud-hidden-toast-right"),
|
|
@@ -7706,7 +7765,7 @@ function Mc({ position: e }) {
|
|
|
7706
7765
|
]
|
|
7707
7766
|
});
|
|
7708
7767
|
}
|
|
7709
|
-
function
|
|
7768
|
+
function Pc({ position: e }) {
|
|
7710
7769
|
return /* @__PURE__ */ Q("div", {
|
|
7711
7770
|
class: Z("markup-hud-hidden-toast", e === "bottom-left" ? "markup-hud-hidden-toast-left" : e === "bottom-center" ? "markup-hud-hidden-toast-center" : "markup-hud-hidden-toast-right"),
|
|
7712
7771
|
role: "status",
|
|
@@ -7714,7 +7773,7 @@ function Nc({ position: e }) {
|
|
|
7714
7773
|
children: "Forgotten on this site — your name and email were cleared."
|
|
7715
7774
|
});
|
|
7716
7775
|
}
|
|
7717
|
-
function
|
|
7776
|
+
function Fc({ position: e }) {
|
|
7718
7777
|
return /* @__PURE__ */ Q("div", {
|
|
7719
7778
|
class: Z("markup-hud-hidden-toast", e === "bottom-left" ? "markup-hud-hidden-toast-left" : e === "bottom-center" ? "markup-hud-hidden-toast-center" : "markup-hud-hidden-toast-right"),
|
|
7720
7779
|
role: "status",
|
|
@@ -7724,52 +7783,52 @@ function Pc({ position: e }) {
|
|
|
7724
7783
|
}
|
|
7725
7784
|
//#endregion
|
|
7726
7785
|
//#region src/runtime/mount.tsx
|
|
7727
|
-
function
|
|
7786
|
+
function Ic(e, t) {
|
|
7728
7787
|
e.style.position = "fixed", e.style.inset = "0", e.style.zIndex = "2147483647", e.style.pointerEvents = "none", Re(e, t.theme ?? "auto");
|
|
7729
7788
|
let n = Ue(), r = e.attachShadow({ mode: "open" }), i = document.createElement("style");
|
|
7730
|
-
i.textContent =
|
|
7789
|
+
i.textContent = de, r.appendChild(i);
|
|
7731
7790
|
let a = document.createElement("div");
|
|
7732
7791
|
a.className = "markup-shadow-root", r.appendChild(a), je({
|
|
7733
7792
|
apiUrl: t.apiUrl,
|
|
7734
7793
|
apiKey: t.apiKey,
|
|
7735
|
-
widgetVersion: "1.
|
|
7736
|
-
}),
|
|
7794
|
+
widgetVersion: "1.20.0"
|
|
7795
|
+
}), ye(t.analytics === !1 ? null : {
|
|
7737
7796
|
apiUrl: t.apiUrl,
|
|
7738
7797
|
apiKey: t.apiKey,
|
|
7739
|
-
widgetVersion: "1.
|
|
7740
|
-
}),
|
|
7798
|
+
widgetVersion: "1.20.0"
|
|
7799
|
+
}), be("widget_loaded");
|
|
7741
7800
|
let { theme: o, analytics: s, ...c } = t;
|
|
7742
|
-
return
|
|
7801
|
+
return ue(/* @__PURE__ */ Q(Ce, {
|
|
7743
7802
|
onError: (e) => I(e, { context: "render" }),
|
|
7744
|
-
children: /* @__PURE__ */ Q(
|
|
7803
|
+
children: /* @__PURE__ */ Q(Mc, { ...c })
|
|
7745
7804
|
}), a), () => {
|
|
7746
|
-
n(), je(null),
|
|
7805
|
+
n(), je(null), ye(null), ue(null, a);
|
|
7747
7806
|
};
|
|
7748
7807
|
}
|
|
7749
7808
|
//#endregion
|
|
7750
7809
|
//#region src/widget.ts
|
|
7751
|
-
var
|
|
7752
|
-
function
|
|
7810
|
+
var Lc = null, Rc = null, zc = null, Bc = !1;
|
|
7811
|
+
function Vc(e) {
|
|
7753
7812
|
if (!e.apiUrl || !e.apiKey) return console.warn("[markup] init() requires both apiUrl and apiKey, so the widget was not mounted"), () => {};
|
|
7754
|
-
e.fab != null && !
|
|
7813
|
+
e.fab != null && !Bc && (Bc = !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.")), Hc();
|
|
7755
7814
|
let t = () => {
|
|
7756
|
-
if (
|
|
7815
|
+
if (zc = null, !document.body) return;
|
|
7757
7816
|
let t = document.createElement("div");
|
|
7758
|
-
t.id = "markup-widget", document.body.appendChild(t),
|
|
7817
|
+
t.id = "markup-widget", document.body.appendChild(t), Rc = t, Lc = Ic(t, e);
|
|
7759
7818
|
};
|
|
7760
7819
|
if (document.readyState === "loading" || !document.body) {
|
|
7761
7820
|
let e = () => t();
|
|
7762
|
-
|
|
7821
|
+
zc = () => document.removeEventListener("DOMContentLoaded", e), document.addEventListener("DOMContentLoaded", e, { once: !0 });
|
|
7763
7822
|
} else t();
|
|
7764
|
-
return
|
|
7823
|
+
return Hc;
|
|
7765
7824
|
}
|
|
7766
|
-
function
|
|
7767
|
-
|
|
7825
|
+
function Hc() {
|
|
7826
|
+
zc &&= (zc(), null), Lc &&= (Lc(), null), Rc?.parentNode && Rc.parentNode.removeChild(Rc), Rc = null;
|
|
7768
7827
|
}
|
|
7769
7828
|
if (typeof document < "u") {
|
|
7770
7829
|
let e = document.currentScript ?? document.querySelector("script[data-markup-widget=\"true\"]"), t = e?.dataset.apiUrl, n = e?.dataset.apiKey;
|
|
7771
7830
|
if (t && n) {
|
|
7772
|
-
let r = e?.dataset.position, i = e?.dataset.theme, a = e?.dataset.fab, o = e?.dataset.dashboardUrl, s = e?.dataset.analytics !== "false", c = () =>
|
|
7831
|
+
let r = e?.dataset.position, i = e?.dataset.theme, a = e?.dataset.fab, o = e?.dataset.dashboardUrl, s = e?.dataset.analytics !== "false", c = () => Vc({
|
|
7773
7832
|
apiUrl: t,
|
|
7774
7833
|
apiKey: n,
|
|
7775
7834
|
position: r,
|
|
@@ -7782,6 +7841,6 @@ if (typeof document < "u") {
|
|
|
7782
7841
|
}
|
|
7783
7842
|
}
|
|
7784
7843
|
//#endregion
|
|
7785
|
-
export {
|
|
7844
|
+
export { Hc as destroy, Vc as init };
|
|
7786
7845
|
|
|
7787
7846
|
//# sourceMappingURL=widget.js.map
|