@pixelmatters/markup 1.3.1 → 1.3.2
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 +227 -219
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,9 +35,9 @@ CDN drop-in (no build step) — paste this just before `</body>`:
|
|
|
35
35
|
```html
|
|
36
36
|
<script type="module">
|
|
37
37
|
// Pin the exact version — esm.sh resolves it from npm
|
|
38
|
-
import { init } from 'https://esm.sh/@pixelmatters/markup@1.3.
|
|
38
|
+
import { init } from 'https://esm.sh/@pixelmatters/markup@1.3.2'
|
|
39
39
|
// or
|
|
40
|
-
// import { init } from 'https://esm.run/@pixelmatters/markup@1.3.
|
|
40
|
+
// import { init } from 'https://esm.run/@pixelmatters/markup@1.3.2'
|
|
41
41
|
|
|
42
42
|
init({
|
|
43
43
|
apiUrl: 'https://your-deployment.convex.site',
|
|
@@ -48,14 +48,14 @@ CDN drop-in (no build step) — paste this just before `</body>`:
|
|
|
48
48
|
</script>
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
> **Why pin the version?** CDN URLs without a version (`@pixelmatters/markup`) resolve to whatever's `latest` on npm — a future major release will break your page silently. Always pin (`@pixelmatters/markup@1.3.
|
|
51
|
+
> **Why pin the version?** CDN URLs without a version (`@pixelmatters/markup`) resolve to whatever's `latest` on npm — a future major release will break your page silently. Always pin (`@pixelmatters/markup@1.3.2`).
|
|
52
52
|
|
|
53
53
|
If your platform doesn't allow inline JS (some CMS / page-builder editors), use the auto-init form instead — point a `<script src=…>` at the bundle and pass config via `data-*` attributes:
|
|
54
54
|
|
|
55
55
|
```html
|
|
56
56
|
<script
|
|
57
57
|
type="module"
|
|
58
|
-
src="https://esm.sh/@pixelmatters/markup@1.3.
|
|
58
|
+
src="https://esm.sh/@pixelmatters/markup@1.3.2"
|
|
59
59
|
data-markup-widget="true"
|
|
60
60
|
data-api-url="https://your-deployment.convex.site"
|
|
61
61
|
data-api-key="markup_..."
|
|
@@ -231,7 +231,7 @@ For a `<script>` tag drop-in (no bundler), use the inline ESM form and **pin the
|
|
|
231
231
|
|
|
232
232
|
```html
|
|
233
233
|
<script type="module">
|
|
234
|
-
import { init } from 'https://esm.sh/@pixelmatters/markup@1.3.
|
|
234
|
+
import { init } from 'https://esm.sh/@pixelmatters/markup@1.3.2'
|
|
235
235
|
|
|
236
236
|
init({
|
|
237
237
|
apiUrl: '...',
|
|
@@ -247,7 +247,7 @@ If inline JS is disallowed (some CMS / page-builder editors), use the auto-init
|
|
|
247
247
|
```html
|
|
248
248
|
<script
|
|
249
249
|
type="module"
|
|
250
|
-
src="https://esm.sh/@pixelmatters/markup@1.3.
|
|
250
|
+
src="https://esm.sh/@pixelmatters/markup@1.3.2"
|
|
251
251
|
data-markup-widget="true"
|
|
252
252
|
data-api-url="..."
|
|
253
253
|
data-api-key="..."
|
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), P(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, re(i, o, a), n.__e = n.__ = null, o.__e != r && E(o);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
function E(e) {
|
|
@@ -65,12 +65,12 @@ 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 = P(e, p, f, i, a, o, s, c, l, u), g = p.__e, p.ref && f.ref != p.ref && (f.ref && oe(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
|
-
for (e.__k = Array(i), a = 0; a < i; a++) (o = t[a]) != null && typeof o != "boolean" && typeof o != "function" ? (typeof o == "string" || typeof o == "number" || typeof o == "bigint" || o.constructor == String ? o = e.__k[a] = x(null, o, null, null, null) : _(o) ? o = e.__k[a] = x(S, { children: o }, null, null, null) : o.constructor === void 0 && o.__b > 0 ? o = e.__k[a] = x(o.type, o.props, o.key, o.ref ? o.ref : null, o.__v) : e.__k[a] = o, c = a + f, o.__ = e, o.__b = e.__b + 1, s = null, (l = o.__i =
|
|
73
|
+
for (e.__k = Array(i), a = 0; a < i; a++) (o = t[a]) != null && typeof o != "boolean" && typeof o != "function" ? (typeof o == "string" || typeof o == "number" || typeof o == "bigint" || o.constructor == String ? o = e.__k[a] = x(null, o, null, null, null) : _(o) ? o = e.__k[a] = x(S, { children: o }, null, null, null) : o.constructor === void 0 && o.__b > 0 ? o = e.__k[a] = x(o.type, o.props, o.key, o.ref ? o.ref : null, o.__v) : e.__k[a] = o, c = a + f, o.__ = e, o.__b = e.__b + 1, s = null, (l = o.__i = j(o, n, c, d)) != -1 && (d--, (s = n[l]) && (s.__u |= 2)), s == null || s.__v == null ? (l == -1 && (i > u ? f-- : i < u && f++), typeof o.type != "function" && (o.__u |= 4)) : l != c && (l == c - 1 ? f-- : l == c + 1 ? f++ : (l > c ? f-- : f++, o.__u |= 4))) : e.__k[a] = null;
|
|
74
74
|
if (d) for (a = 0; a < u; a++) (s = n[a]) != null && !(2 & s.__u) && (s.__e == r && (r = w(s)), se(s, s));
|
|
75
75
|
return r;
|
|
76
76
|
}
|
|
@@ -86,7 +86,7 @@ function A(e, t, n, r) {
|
|
|
86
86
|
while (t != null && t.nodeType == 8);
|
|
87
87
|
return t;
|
|
88
88
|
}
|
|
89
|
-
function
|
|
89
|
+
function j(e, t, n, r) {
|
|
90
90
|
var i, a, o, s = e.key, c = e.type, l = t[n], u = l != null && (2 & l.__u) == 0;
|
|
91
91
|
if (l === null && s == null || u && s == l.key && c == l.type) return n;
|
|
92
92
|
if (r > +!!u) {
|
|
@@ -94,15 +94,15 @@ function te(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 te(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 ne(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 N(e) {
|
|
118
118
|
return function(n) {
|
|
119
119
|
if (this.l) {
|
|
120
120
|
var r = this.l[n.type + e];
|
|
@@ -124,14 +124,14 @@ function M(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,
|
|
127
|
+
function P(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.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
|
|
132
|
-
if (w = n.props, T =
|
|
131
|
+
n: if (typeof M == "function") try {
|
|
132
|
+
if (w = n.props, T = M.prototype && M.prototype.render, E = (d = M.contextType) && i[d.__c], D = d ? E ? E.props.value : d.__ : i, r.__c ? x = (f = n.__c = r.__c).__ = f.__E : (T ? n.__c = f = new M(w, D) : (n.__c = f = new C(w, D), f.constructor = M, f.render = ce), E && E.sub(f), f.state ||= {}, f.__n = i, p = f.__d = !0, f.__h = [], f._sb = []), T && f.__s == null && (f.__s = f.state), T && M.getDerivedStateFromProps != null && (f.__s == f.state && (f.__s = v({}, f.__s)), v(f.__s, M.getDerivedStateFromProps(w, f.__s))), m = f.props, g = f.state, f.__v = n, p) T && M.getDerivedStateFromProps == null && f.componentWillMount != null && f.componentWillMount(), T && f.componentDidMount != null && f.__h.push(f.componentDidMount);
|
|
133
133
|
else {
|
|
134
|
-
if (T &&
|
|
134
|
+
if (T && M.getDerivedStateFromProps == null && w !== m && f.componentWillReceiveProps != null && f.componentWillReceiveProps(w, D), n.__v == r.__v || !f.__e && f.shouldComponentUpdate != null && !1 === f.shouldComponentUpdate(w, f.__s, D)) {
|
|
135
135
|
n.__v != r.__v && (f.props = w, f.state = f.__s, f.__d = !1), n.__e = r.__e, n.__k = r.__k, n.__k.some(function(e) {
|
|
136
136
|
e && (e.__ = n);
|
|
137
137
|
}), h.push.apply(f.__h, f._sb), f._sb = [], f.__h.length && s.push(f);
|
|
@@ -151,17 +151,17 @@ function N(e, n, r, i, a, o, s, c, l, u) {
|
|
|
151
151
|
for (n.__u |= l ? 160 : 128; c && c.nodeType == 8 && c.nextSibling;) c = c.nextSibling;
|
|
152
152
|
o[o.indexOf(c)] = null, n.__e = c;
|
|
153
153
|
} else {
|
|
154
|
-
for (
|
|
155
|
-
|
|
154
|
+
for (j = o.length; j--;) y(o[j]);
|
|
155
|
+
ne(n);
|
|
156
156
|
}
|
|
157
|
-
else n.__e = r.__e, n.__k = r.__k, e.then ||
|
|
157
|
+
else n.__e = r.__e, n.__k = r.__k, e.then || ne(n);
|
|
158
158
|
t.__e(e, n, r);
|
|
159
159
|
}
|
|
160
160
|
else o == null && n.__v == r.__v ? (n.__k = r.__k, n.__e = r.__e) : c = n.__e = ae(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 ne(e) {
|
|
164
|
+
e && (e.__c && (e.__c.__e = !0), e.__k && e.__k.some(ne));
|
|
165
165
|
}
|
|
166
166
|
function re(e, n, r) {
|
|
167
167
|
for (var i = 0; i < r.length; i++) oe(r[i], r[++i], r[++i]);
|
|
@@ -193,11 +193,11 @@ function ae(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 &&= 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 || te(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 || te(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 || (d = "value", C == "progress" && v == null ? n.removeAttribute("value") : v != null && (v !== n[d] || C == "progress" && !v || C == "option" && v != x[d]) &&
|
|
200
|
+
l || (d = "value", C == "progress" && v == null ? n.removeAttribute("value") : v != null && (v !== n[d] || C == "progress" && !v || C == "option" && v != x[d]) && te(n, d, v, x[d], o), d = "checked", b != null && b != n[d] && te(n, d, b, x[d], o));
|
|
201
201
|
}
|
|
202
202
|
return n;
|
|
203
203
|
}
|
|
@@ -229,7 +229,7 @@ function ce(e, t, n) {
|
|
|
229
229
|
}
|
|
230
230
|
function le(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 = [], P(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), re(s, n, c);
|
|
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,24 +245,24 @@ 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 = N(!1), p = N(!0);
|
|
249
249
|
//#endregion
|
|
250
250
|
//#region src/styles.css?inline
|
|
251
|
-
var ue = ":host{--markup-paper:#fdfcfa;--markup-ink:#1a1614;--markup-muted:#6b6661;--markup-border:#1a16141a;--markup-border-strong:#1a16142e;--markup-brand:#e35d2a;--markup-brand-hover:#c84d20;--markup-team:#2a4ac8;--markup-shadow:0 1px 2px #1a16140f, 0 8px 28px #1a16141f;--markup-overlay-tint:#1a16140a;--markup-danger:#dc2626;--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-ink:#fdfcfa;--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}@media (prefers-color-scheme:dark){:host(:not([data-theme=light])){--markup-paper:#1a1614;--markup-ink:#fdfcfa;--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}}.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-fab{z-index:10;background:var(--markup-ink);color:var(--markup-paper);cursor:pointer;touch-action:none;letter-spacing:-.01em;pointer-events:auto;box-shadow:0 0 0 1px color-mix(in srgb, var(--markup-brand) 35%, transparent), var(--markup-shadow);border:none;border-radius:999px;align-items:center;gap:8px;padding:9px 14px;font-size:13px;font-weight:500;transition:background .15s,box-shadow .15s,transform .15s;display:inline-flex;position:fixed;bottom:24px}.markup-fab:hover{background:var(--markup-brand);box-shadow:0 0 0 1px color-mix(in srgb, var(--markup-brand) 0%, transparent), var(--markup-shadow)}.markup-fab:active{transform:translateY(1px)}.markup-fab.is-active{background:var(--markup-brand);box-shadow:var(--markup-shadow)}.markup-fab.is-active:hover{background:var(--markup-brand-hover)}.markup-fab .markup-fab-icon{color:var(--markup-brand);transition:color .15s}.markup-fab:hover .markup-fab-icon,.markup-fab.is-active .markup-fab-icon{color:var(--markup-paper)}.markup-fab-right{right:24px}.markup-fab-left{left:24px}.markup-fab.is-floating{inset:0 auto auto 0}.markup-fab.is-dragging{cursor:grabbing;transition:none}.markup-fab-icon{align-items:center;display:inline-flex}.markup-fab-label{font-family:var(--markup-font)}.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-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}@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{background:var(--markup-ink);width:28px;height:28px;color:var(--markup-brand);cursor:pointer;pointer-events:auto;box-shadow:0 0 0 2px var(--markup-paper), 0 0 0 3px color-mix(in srgb, var(--markup-brand) 35%, transparent), var(--markup-shadow);border:none;border-radius:50% 50% 50% 4px;justify-content:center;align-items:center;margin-top:-28px;padding:0;transition:transform .15s,background .15s,color .15s;display:inline-flex;position:absolute}.markup-pin:hover,.markup-pin.is-active{background:var(--markup-brand);color:var(--markup-paper)}.markup-pin.is-anchor{anchor-name:--markup-active-anchor}.markup-pin-ghost{background:var(--markup-brand);color:var(--markup-paper);cursor:default;pointer-events:none;animation:1.2s ease-in-out infinite markup-ghost-pulse}.markup-pin-dot{background:currentColor;border-radius:50%;width:6px;height:6px;display:inline-block}.markup-pin-count{background:var(--markup-brand);min-width:16px;height:16px;color:var(--markup-paper);font-family:var(--markup-font-mono);text-align:center;box-shadow:0 0 0 2px var(--markup-paper);border-radius:999px;padding:0 4px;font-size:9px;font-weight:600;line-height:16px;position:absolute;top:-4px;left:50%;transform:translate(-50%,-50%)}@keyframes markup-ghost-pulse{0%,to{box-shadow:0 0 0 2px var(--markup-paper), 0 0 0 0 #e35d2a66}50%{box-shadow:0 0 0 2px var(--markup-paper), 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:320px;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}}@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-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{padding:12px}.markup-popover-byline{color:var(--markup-muted);align-items:center;gap:4px;margin:0 0 8px;font-size:12px;display:flex}.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;display:inline-flex}.markup-icon-btn:hover,.markup-icon-btn.is-open{background:var(--markup-border);color:var(--markup-ink)}.markup-comments{border-bottom:1px solid var(--markup-border);background:linear-gradient(var(--markup-paper), transparent) top / 100% 20px no-repeat local, linear-gradient(transparent, var(--markup-paper)) bottom / 100% 20px no-repeat local, radial-gradient(farthest-side at 50% 0%, #1a16141a, transparent) top / 100% 10px no-repeat scroll, radial-gradient(farthest-side at 50% 100%, #1a16141a, transparent) bottom / 100% 10px no-repeat scroll;flex-direction:column;gap:12px;max-height:280px;margin:0;padding:8px 12px 4px;list-style:none;display:flex;overflow-y:auto}.markup-comment{flex-direction:column;gap:4px;display:flex}.markup-comment-meta{align-items:center;gap:6px;font-size:11px;display:flex}.markup-comment-author{color:var(--markup-ink);font-weight:600}.markup-comment.is-team .markup-comment-author{color:var(--markup-team)}.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-time{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;font-size:10px}.markup-comment-body{white-space:pre-wrap;word-break:break-word;margin:0;font-size:13px;line-height:1.5}.markup-comment-edited{color:var(--markup-muted);font-size:11px}.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)}@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:2px;display:flex}.markup-reaction-chip{border:1px solid var(--markup-border);height:22px;color:var(--markup-ink);font:inherit;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:0 7px 0 6px;font-size:11px;line-height:1;transition:background .12s,border-color .12s;display:inline-flex}.markup-reaction-chip:hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 5%, transparent)}.markup-reaction-chip.is-mine{border-color:color-mix(in srgb, var(--markup-brand) 45%, transparent);background:color-mix(in srgb, var(--markup-brand) 10%, transparent)}.markup-reaction-chip.is-mine:hover:not(:disabled){background:color-mix(in srgb, var(--markup-brand) 16%, 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:10px}.markup-reaction-chip.is-mine .markup-reaction-count{color:var(--markup-brand)}.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{border:1px dashed var(--markup-border-strong);width:22px;height:22px;color:var(--markup-muted);font:inherit;cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;font-size:13px;line-height:1;transition:background .12s,color .12s,border-color .12s;display:inline-flex}.markup-reaction-add:hover,.markup-reaction-add.is-open{background:color-mix(in srgb, var(--markup-ink) 5%, transparent);color:var(--markup-ink);border-style:solid}.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-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-form .markup-textarea{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;color:var(--markup-ink);resize:vertical;font:inherit;outline:none;padding:8px 10px;font-size:13px;line-height:1.5}.markup-comment-edit-form .markup-textarea:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-comment-edit-actions{justify-content:flex-end;gap:6px;display:flex}.markup-composer{flex-direction:column;display:flex;position:relative}.markup-composer-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;min-height:36px;max-height:96px;color:var(--markup-ink);resize:none;font-family:var(--markup-font);outline:none;padding:8px 10px;font-size:13px;line-height:1.5;transition:border-color .12s,box-shadow .12s,border-bottom-left-radius .15s,border-bottom-right-radius .15s}.markup-composer-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-composer-input:disabled{opacity:.6}.markup-composer-input::placeholder{color:var(--markup-muted)}.markup-composer.is-filled .markup-composer-input{border-bottom-right-radius:0;border-bottom-left-radius:0}.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{border:1px solid var(--markup-border-strong);border-radius:0 0 var(--markup-radius-sm) var(--markup-radius-sm);opacity:0;border-top:none;justify-content:space-between;align-items:center;gap:8px;padding:2px 2px 2px 10px;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:.06em;color:var(--markup-muted);font-size:10px}.markup-composer-error{color:var(--markup-brand)}.markup-composer-actions{align-items:center;gap:6px;display:flex}.markup-composer-actions-empty{transition:opacity .12s;position:absolute;top:3px;right:3px}.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;display:inline-flex}.markup-btn:disabled{opacity:.5;cursor:not-allowed}.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-screenshot-row{border-top:1px solid var(--markup-border);margin-top:8px;padding-top:8px}.markup-screenshot-status{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.06em;align-items:center;gap:5px;font-size:10px;display:flex}.markup-screenshot-toggle{cursor:pointer;color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.06em;align-items:center;gap:5px;font-size:10px;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;border-radius:3px;flex-shrink:0;width:auto;height:25px;margin:-5px 0 -5px auto;display:block}.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-fab,.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}}", F, I, de, fe, pe = 0, me = [], L = t, he = L.__b, ge = L.__r, _e = L.diffed, ve = L.__c, ye = L.unmount, be = L.__;
|
|
252
|
-
function
|
|
253
|
-
|
|
251
|
+
var ue = ":host{--markup-paper:#fdfcfa;--markup-ink:#1a1614;--markup-muted:#6b6661;--markup-border:#1a16141a;--markup-border-strong:#1a16142e;--markup-brand:#e35d2a;--markup-brand-hover:#c84d20;--markup-team:#2a4ac8;--markup-shadow:0 1px 2px #1a16140f, 0 8px 28px #1a16141f;--markup-overlay-tint:#1a16140a;--markup-danger:#dc2626;--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-ink:#fdfcfa;--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}@media (prefers-color-scheme:dark){:host(:not([data-theme=light])){--markup-paper:#1a1614;--markup-ink:#fdfcfa;--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}}.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-fab{z-index:10;background:var(--markup-ink);color:var(--markup-paper);cursor:pointer;touch-action:none;letter-spacing:-.01em;pointer-events:auto;box-shadow:0 0 0 1px color-mix(in srgb, var(--markup-brand) 35%, transparent), var(--markup-shadow);border:none;border-radius:999px;align-items:center;gap:8px;padding:9px 14px;font-size:13px;font-weight:500;transition:background .15s,box-shadow .15s,transform .15s;display:inline-flex;position:fixed;bottom:24px}.markup-fab:hover{background:var(--markup-brand);box-shadow:0 0 0 1px color-mix(in srgb, var(--markup-brand) 0%, transparent), var(--markup-shadow)}.markup-fab:active{transform:translateY(1px)}.markup-fab.is-active{background:var(--markup-brand);box-shadow:var(--markup-shadow)}.markup-fab.is-active:hover{background:var(--markup-brand-hover)}.markup-fab .markup-fab-icon{color:var(--markup-brand);transition:color .15s}.markup-fab:hover .markup-fab-icon,.markup-fab.is-active .markup-fab-icon{color:var(--markup-paper)}.markup-fab-right{right:24px}.markup-fab-left{left:24px}.markup-fab.is-floating{inset:0 auto auto 0}.markup-fab.is-dragging{cursor:grabbing;transition:none}.markup-fab-icon{align-items:center;display:inline-flex}.markup-fab-label{font-family:var(--markup-font)}.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-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}@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{background:var(--markup-ink);width:28px;height:28px;color:var(--markup-brand);cursor:pointer;pointer-events:auto;box-shadow:0 0 0 2px var(--markup-paper), 0 0 0 3px color-mix(in srgb, var(--markup-brand) 35%, transparent), var(--markup-shadow);border:none;border-radius:50% 50% 50% 4px;justify-content:center;align-items:center;margin-top:-28px;padding:0;transition:transform .15s,background .15s,color .15s;display:inline-flex;position:absolute}.markup-pin:hover,.markup-pin.is-active{background:var(--markup-brand);color:var(--markup-paper)}.markup-pin.is-anchor{anchor-name:--markup-active-anchor}.markup-pin-ghost{background:var(--markup-brand);color:var(--markup-paper);cursor:default;pointer-events:none;animation:1.2s ease-in-out infinite markup-ghost-pulse}.markup-pin-dot{background:currentColor;border-radius:50%;width:6px;height:6px;display:inline-block}.markup-pin-count{background:var(--markup-brand);min-width:16px;height:16px;color:var(--markup-paper);font-family:var(--markup-font-mono);text-align:center;box-shadow:0 0 0 2px var(--markup-paper);border-radius:999px;padding:0 4px;font-size:9px;font-weight:600;line-height:16px;position:absolute;top:-4px;left:50%;transform:translate(-50%,-50%)}@keyframes markup-ghost-pulse{0%,to{box-shadow:0 0 0 2px var(--markup-paper), 0 0 0 0 #e35d2a66}50%{box-shadow:0 0 0 2px var(--markup-paper), 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:320px;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}}@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-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{padding:12px}.markup-popover-byline{color:var(--markup-muted);align-items:center;gap:4px;margin:0 0 8px;font-size:12px;display:flex}.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;display:inline-flex}.markup-icon-btn:hover,.markup-icon-btn.is-open{background:var(--markup-border);color:var(--markup-ink)}.markup-comments{border-bottom:1px solid var(--markup-border);background:linear-gradient(var(--markup-paper), transparent) top / 100% 20px no-repeat local, linear-gradient(transparent, var(--markup-paper)) bottom / 100% 20px no-repeat local, radial-gradient(farthest-side at 50% 0%, #1a16141a, transparent) top / 100% 10px no-repeat scroll, radial-gradient(farthest-side at 50% 100%, #1a16141a, transparent) bottom / 100% 10px no-repeat scroll;flex-direction:column;gap:12px;max-height:280px;margin:0;padding:8px 12px 4px;list-style:none;display:flex;overflow-y:auto}.markup-comment{flex-direction:column;gap:4px;display:flex}.markup-comment-meta{align-items:center;gap:6px;font-size:11px;display:flex}.markup-comment-author{color:var(--markup-ink);font-weight:600}.markup-comment.is-team .markup-comment-author{color:var(--markup-team)}.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-time{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;font-size:10px}.markup-comment-body{white-space:pre-wrap;word-break:break-word;margin:0;font-size:13px;line-height:1.5}.markup-comment-edited{color:var(--markup-muted);font-size:11px}.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)}@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:2px;display:flex}.markup-reaction-chip{border:1px solid var(--markup-border);height:22px;color:var(--markup-ink);font:inherit;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:0 7px 0 6px;font-size:11px;line-height:1;transition:background .12s,border-color .12s;display:inline-flex}.markup-reaction-chip:hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 5%, transparent)}.markup-reaction-chip.is-mine{border-color:color-mix(in srgb, var(--markup-brand) 45%, transparent);background:color-mix(in srgb, var(--markup-brand) 10%, transparent)}.markup-reaction-chip.is-mine:hover:not(:disabled){background:color-mix(in srgb, var(--markup-brand) 16%, 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:10px}.markup-reaction-chip.is-mine .markup-reaction-count{color:var(--markup-brand)}.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{border:1px dashed var(--markup-border-strong);width:22px;height:22px;color:var(--markup-muted);font:inherit;cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;font-size:13px;line-height:1;transition:background .12s,color .12s,border-color .12s;display:inline-flex}.markup-reaction-add:hover,.markup-reaction-add.is-open{background:color-mix(in srgb, var(--markup-ink) 5%, transparent);color:var(--markup-ink);border-style:solid}.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-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-form .markup-textarea{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;color:var(--markup-ink);resize:vertical;font:inherit;outline:none;padding:8px 10px;font-size:13px;line-height:1.5}.markup-comment-edit-form .markup-textarea:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-comment-edit-actions{justify-content:flex-end;gap:6px;display:flex}.markup-composer{flex-direction:column;display:flex;position:relative}.markup-composer-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;min-height:36px;max-height:96px;color:var(--markup-ink);resize:none;font-family:var(--markup-font);outline:none;padding:8px 10px;font-size:13px;line-height:1.5;transition:border-color .12s,box-shadow .12s,border-bottom-left-radius .15s,border-bottom-right-radius .15s}.markup-composer-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-composer-input:disabled{opacity:.6}.markup-composer-input::placeholder{color:var(--markup-muted)}.markup-composer.is-filled .markup-composer-input{border-bottom-right-radius:0;border-bottom-left-radius:0}.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{border:1px solid var(--markup-border-strong);border-radius:0 0 var(--markup-radius-sm) var(--markup-radius-sm);opacity:0;border-top:none;justify-content:space-between;align-items:center;gap:8px;padding:2px 2px 2px 10px;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:.06em;color:var(--markup-muted);font-size:10px}.markup-composer-error{color:var(--markup-brand)}.markup-composer-actions{align-items:center;gap:6px;display:flex}.markup-composer-actions-empty{transition:opacity .12s;position:absolute;top:3px;right:3px}.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;display:inline-flex}.markup-btn:disabled{opacity:.5;cursor:not-allowed}.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-screenshot-row{border-top:1px solid var(--markup-border);margin-top:8px;padding-top:8px}.markup-screenshot-status{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.06em;align-items:center;gap:5px;font-size:10px;display:flex}.markup-screenshot-toggle{cursor:pointer;color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.06em;align-items:center;gap:5px;font-size:10px;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;border-radius:3px;flex-shrink:0;width:auto;height:25px;margin:-5px 0 -5px auto;display:block}.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-fab,.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}}", F, I, L, de, fe = 0, pe = [], R = t, me = R.__b, he = R.__r, ge = R.diffed, _e = R.__c, ve = R.unmount, ye = R.__;
|
|
252
|
+
function be(e, t) {
|
|
253
|
+
R.__h && R.__h(I, e, fe || t), fe = 0;
|
|
254
254
|
var n = I.__H ||= {
|
|
255
255
|
__: [],
|
|
256
256
|
__h: []
|
|
257
257
|
};
|
|
258
258
|
return e >= n.__.length && n.__.push({}), n.__[e];
|
|
259
259
|
}
|
|
260
|
-
function
|
|
261
|
-
return
|
|
260
|
+
function z(e) {
|
|
261
|
+
return fe = 1, xe(ke, e);
|
|
262
262
|
}
|
|
263
|
-
function
|
|
264
|
-
var r =
|
|
265
|
-
if (r.t = e, !r.__c && (r.__ = [n ? n(t) :
|
|
263
|
+
function xe(e, t, n) {
|
|
264
|
+
var r = be(F++, 2);
|
|
265
|
+
if (r.t = e, !r.__c && (r.__ = [n ? n(t) : ke(void 0, t), function(e) {
|
|
266
266
|
var t = r.__N ? r.__N[0] : r.__[0], n = r.t(t, e);
|
|
267
267
|
t !== n && (r.__N = [n, r.__[1]], r.__c.setState({}));
|
|
268
268
|
}], r.__c = I, !I.__f)) {
|
|
@@ -294,99 +294,99 @@ function Se(e, t, n) {
|
|
|
294
294
|
}
|
|
295
295
|
return r.__N || r.__;
|
|
296
296
|
}
|
|
297
|
-
function
|
|
298
|
-
var n =
|
|
299
|
-
!
|
|
297
|
+
function B(e, t) {
|
|
298
|
+
var n = be(F++, 3);
|
|
299
|
+
!R.__s && Oe(n.__H, t) && (n.__ = e, n.u = t, I.__H.__h.push(n));
|
|
300
300
|
}
|
|
301
|
-
function
|
|
302
|
-
return
|
|
301
|
+
function V(e) {
|
|
302
|
+
return fe = 5, Se(function() {
|
|
303
303
|
return { current: e };
|
|
304
304
|
}, []);
|
|
305
305
|
}
|
|
306
|
-
function
|
|
307
|
-
var n =
|
|
308
|
-
return
|
|
306
|
+
function Se(e, t) {
|
|
307
|
+
var n = be(F++, 7);
|
|
308
|
+
return Oe(n.__H, t) && (n.__ = e(), n.__H = t, n.__h = e), n.__;
|
|
309
309
|
}
|
|
310
|
-
function
|
|
311
|
-
return
|
|
310
|
+
function H(e, t) {
|
|
311
|
+
return fe = 8, Se(function() {
|
|
312
312
|
return e;
|
|
313
313
|
}, t);
|
|
314
314
|
}
|
|
315
|
-
function
|
|
316
|
-
for (var e; e =
|
|
315
|
+
function Ce() {
|
|
316
|
+
for (var e; e = pe.shift();) {
|
|
317
317
|
var t = e.__H;
|
|
318
318
|
if (e.__P && t) try {
|
|
319
|
-
t.__h.some(
|
|
319
|
+
t.__h.some(Ee), t.__h.some(De), t.__h = [];
|
|
320
320
|
} catch (n) {
|
|
321
|
-
t.__h = [],
|
|
321
|
+
t.__h = [], R.__e(n, e.__v);
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
|
-
|
|
326
|
-
I = null,
|
|
327
|
-
},
|
|
328
|
-
e && t.__k && t.__k.__m && (e.__m = t.__k.__m),
|
|
329
|
-
},
|
|
330
|
-
|
|
325
|
+
R.__b = function(e) {
|
|
326
|
+
I = null, me && me(e);
|
|
327
|
+
}, R.__ = function(e, t) {
|
|
328
|
+
e && t.__k && t.__k.__m && (e.__m = t.__k.__m), ye && ye(e, t);
|
|
329
|
+
}, R.__r = function(e) {
|
|
330
|
+
he && he(e), F = 0;
|
|
331
331
|
var t = (I = e.__c).__H;
|
|
332
|
-
t && (
|
|
332
|
+
t && (L === I ? (t.__h = [], I.__h = [], t.__.some(function(e) {
|
|
333
333
|
e.__N && (e.__ = e.__N), e.u = e.__N = void 0;
|
|
334
|
-
})) : (t.__h.some(
|
|
335
|
-
},
|
|
336
|
-
|
|
334
|
+
})) : (t.__h.some(Ee), t.__h.some(De), t.__h = [], F = 0)), L = I;
|
|
335
|
+
}, R.diffed = function(e) {
|
|
336
|
+
ge && ge(e);
|
|
337
337
|
var t = e.__c;
|
|
338
|
-
t && t.__H && (t.__H.__h.length && (
|
|
338
|
+
t && t.__H && (t.__H.__h.length && (pe.push(t) !== 1 && de === R.requestAnimationFrame || ((de = R.requestAnimationFrame) || Te)(Ce)), t.__H.__.some(function(e) {
|
|
339
339
|
e.u && (e.__H = e.u), e.u = void 0;
|
|
340
|
-
})),
|
|
341
|
-
},
|
|
340
|
+
})), L = I = null;
|
|
341
|
+
}, R.__c = function(e, t) {
|
|
342
342
|
t.some(function(e) {
|
|
343
343
|
try {
|
|
344
|
-
e.__h.some(
|
|
345
|
-
return !e.__ ||
|
|
344
|
+
e.__h.some(Ee), e.__h = e.__h.filter(function(e) {
|
|
345
|
+
return !e.__ || De(e);
|
|
346
346
|
});
|
|
347
347
|
} catch (n) {
|
|
348
348
|
t.some(function(e) {
|
|
349
349
|
e.__h &&= [];
|
|
350
|
-
}), t = [],
|
|
350
|
+
}), t = [], R.__e(n, e.__v);
|
|
351
351
|
}
|
|
352
|
-
}),
|
|
353
|
-
},
|
|
354
|
-
|
|
352
|
+
}), _e && _e(e, t);
|
|
353
|
+
}, R.unmount = function(e) {
|
|
354
|
+
ve && ve(e);
|
|
355
355
|
var t, n = e.__c;
|
|
356
356
|
n && n.__H && (n.__H.__.some(function(e) {
|
|
357
357
|
try {
|
|
358
|
-
|
|
358
|
+
Ee(e);
|
|
359
359
|
} catch (e) {
|
|
360
360
|
t = e;
|
|
361
361
|
}
|
|
362
|
-
}), n.__H = void 0, t &&
|
|
362
|
+
}), n.__H = void 0, t && R.__e(t, n.__v));
|
|
363
363
|
};
|
|
364
|
-
var
|
|
365
|
-
function
|
|
364
|
+
var we = typeof requestAnimationFrame == "function";
|
|
365
|
+
function Te(e) {
|
|
366
366
|
var t, n = function() {
|
|
367
|
-
clearTimeout(r),
|
|
367
|
+
clearTimeout(r), we && cancelAnimationFrame(t), setTimeout(e);
|
|
368
368
|
}, r = setTimeout(n, 35);
|
|
369
|
-
|
|
369
|
+
we && (t = requestAnimationFrame(n));
|
|
370
370
|
}
|
|
371
|
-
function
|
|
371
|
+
function Ee(e) {
|
|
372
372
|
var t = I, n = e.__c;
|
|
373
373
|
typeof n == "function" && (e.__c = void 0, n()), I = t;
|
|
374
374
|
}
|
|
375
|
-
function
|
|
375
|
+
function De(e) {
|
|
376
376
|
var t = I;
|
|
377
377
|
e.__c = e.__(), I = t;
|
|
378
378
|
}
|
|
379
|
-
function
|
|
379
|
+
function Oe(e, t) {
|
|
380
380
|
return !e || e.length !== t.length || t.some(function(t, n) {
|
|
381
381
|
return t !== e[n];
|
|
382
382
|
});
|
|
383
383
|
}
|
|
384
|
-
function
|
|
384
|
+
function ke(e, t) {
|
|
385
385
|
return typeof t == "function" ? t(e) : t;
|
|
386
386
|
}
|
|
387
|
-
for (var
|
|
388
|
-
|
|
389
|
-
function
|
|
387
|
+
for (var Ae = "1.37.0", U = [], W = [], je = Uint8Array, Me = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", Ne = 0, Pe = Me.length; Ne < Pe; ++Ne) U[Ne] = Me[Ne], W[Me.charCodeAt(Ne)] = Ne;
|
|
388
|
+
W[45] = 62, W[95] = 63;
|
|
389
|
+
function Fe(e) {
|
|
390
390
|
var t = e.length;
|
|
391
391
|
if (t % 4 > 0) throw Error("Invalid string. Length must be a multiple of 4");
|
|
392
392
|
var n = e.indexOf("=");
|
|
@@ -394,28 +394,28 @@ function Ie(e) {
|
|
|
394
394
|
var r = n === t ? 0 : 4 - n % 4;
|
|
395
395
|
return [n, r];
|
|
396
396
|
}
|
|
397
|
-
function
|
|
397
|
+
function Ie(e, t, n) {
|
|
398
398
|
return (t + n) * 3 / 4 - n;
|
|
399
399
|
}
|
|
400
|
-
function
|
|
401
|
-
var t, n =
|
|
402
|
-
for (c = 0; c < s; c += 4) t =
|
|
403
|
-
return i === 2 && (t =
|
|
400
|
+
function Le(e) {
|
|
401
|
+
var t, n = Fe(e), r = n[0], i = n[1], a = new je(Ie(e, r, i)), o = 0, s = i > 0 ? r - 4 : r, c;
|
|
402
|
+
for (c = 0; c < s; c += 4) t = W[e.charCodeAt(c)] << 18 | W[e.charCodeAt(c + 1)] << 12 | W[e.charCodeAt(c + 2)] << 6 | W[e.charCodeAt(c + 3)], a[o++] = t >> 16 & 255, a[o++] = t >> 8 & 255, a[o++] = t & 255;
|
|
403
|
+
return i === 2 && (t = W[e.charCodeAt(c)] << 2 | W[e.charCodeAt(c + 1)] >> 4, a[o++] = t & 255), i === 1 && (t = W[e.charCodeAt(c)] << 10 | W[e.charCodeAt(c + 1)] << 4 | W[e.charCodeAt(c + 2)] >> 2, a[o++] = t >> 8 & 255, a[o++] = t & 255), a;
|
|
404
404
|
}
|
|
405
|
-
function
|
|
406
|
-
return
|
|
405
|
+
function Re(e) {
|
|
406
|
+
return U[e >> 18 & 63] + U[e >> 12 & 63] + U[e >> 6 & 63] + U[e & 63];
|
|
407
407
|
}
|
|
408
|
-
function
|
|
409
|
-
for (var r, i = [], a = t; a < n; a += 3) r = (e[a] << 16 & 16711680) + (e[a + 1] << 8 & 65280) + (e[a + 2] & 255), i.push(
|
|
408
|
+
function ze(e, t, n) {
|
|
409
|
+
for (var r, i = [], a = t; a < n; a += 3) r = (e[a] << 16 & 16711680) + (e[a + 1] << 8 & 65280) + (e[a + 2] & 255), i.push(Re(r));
|
|
410
410
|
return i.join("");
|
|
411
411
|
}
|
|
412
|
-
function
|
|
413
|
-
for (var t, n = e.length, r = n % 3, i = [], a = 16383, o = 0, s = n - r; o < s; o += a) i.push(
|
|
414
|
-
return r === 1 ? (t = e[n - 1], i.push(
|
|
412
|
+
function Be(e) {
|
|
413
|
+
for (var t, n = e.length, r = n % 3, i = [], a = 16383, o = 0, s = n - r; o < s; o += a) i.push(ze(e, o, o + a > s ? s : o + a));
|
|
414
|
+
return r === 1 ? (t = e[n - 1], i.push(U[t >> 2] + U[t << 4 & 63] + "==")) : r === 2 && (t = (e[n - 2] << 8) + e[n - 1], i.push(U[t >> 10] + U[t >> 4 & 63] + U[t << 2 & 63] + "=")), i.join("");
|
|
415
415
|
}
|
|
416
416
|
//#endregion
|
|
417
417
|
//#region ../../node_modules/.pnpm/convex@1.37.0_react@19.2.6/node_modules/convex/dist/esm/common/index.js
|
|
418
|
-
function
|
|
418
|
+
function Ve(e) {
|
|
419
419
|
if (e === void 0) return {};
|
|
420
420
|
if (!Ue(e)) throw Error(`The arguments to a Convex function must be an object. Received: ${e}`);
|
|
421
421
|
return e;
|
|
@@ -447,10 +447,10 @@ function Ze(e) {
|
|
|
447
447
|
t.length % 2 == 1 && (t = "0" + t);
|
|
448
448
|
let n = new Uint8Array(/* @__PURE__ */ new ArrayBuffer(8)), r = 0;
|
|
449
449
|
for (let i of t.match(/.{2}/g).reverse()) n.set([parseInt(i, 16)], r++), e >>= Je;
|
|
450
|
-
return
|
|
450
|
+
return Be(n);
|
|
451
451
|
}
|
|
452
452
|
function Qe(e) {
|
|
453
|
-
let t =
|
|
453
|
+
let t = Le(e);
|
|
454
454
|
if (t.byteLength !== 8) throw Error(`Received ${t.byteLength} bytes, expected 8 for $integer`);
|
|
455
455
|
let n = qe, r = qe;
|
|
456
456
|
for (let e of t) n += BigInt(e) * Ye ** r, r++;
|
|
@@ -459,10 +459,10 @@ function Qe(e) {
|
|
|
459
459
|
function $e(e) {
|
|
460
460
|
if (e < Ge || Ke < e) throw Error(`BigInt ${e} does not fit into a 64-bit signed integer.`);
|
|
461
461
|
let t = /* @__PURE__ */ new ArrayBuffer(8);
|
|
462
|
-
return new DataView(t).setBigInt64(0, e, !0),
|
|
462
|
+
return new DataView(t).setBigInt64(0, e, !0), Be(new Uint8Array(t));
|
|
463
463
|
}
|
|
464
464
|
function et(e) {
|
|
465
|
-
let t =
|
|
465
|
+
let t = Le(e);
|
|
466
466
|
if (t.byteLength !== 8) throw Error(`Received ${t.byteLength} bytes, expected 8 for $integer`);
|
|
467
467
|
return new DataView(t.buffer).getBigInt64(0, !0);
|
|
468
468
|
}
|
|
@@ -484,7 +484,7 @@ function at(e) {
|
|
|
484
484
|
let n = t[0][0];
|
|
485
485
|
if (n === "$bytes") {
|
|
486
486
|
if (typeof e.$bytes != "string") throw Error(`Malformed $bytes field on ${e}`);
|
|
487
|
-
return
|
|
487
|
+
return Le(e.$bytes).buffer;
|
|
488
488
|
}
|
|
489
489
|
if (n === "$integer") {
|
|
490
490
|
if (typeof e.$integer != "string") throw Error(`Malformed $integer field on ${e}`);
|
|
@@ -492,7 +492,7 @@ function at(e) {
|
|
|
492
492
|
}
|
|
493
493
|
if (n === "$float") {
|
|
494
494
|
if (typeof e.$float != "string") throw Error(`Malformed $float field on ${e}`);
|
|
495
|
-
let t =
|
|
495
|
+
let t = Le(e.$float);
|
|
496
496
|
if (t.byteLength !== 8) throw Error(`Received ${t.byteLength} bytes, expected 8 for $float`);
|
|
497
497
|
let n = new DataView(t.buffer).getFloat64(0, We);
|
|
498
498
|
if (!Xe(n)) throw Error(`Float ${n} should be encoded as a number`);
|
|
@@ -526,10 +526,10 @@ function ct(e, t, n, r) {
|
|
|
526
526
|
}
|
|
527
527
|
if (typeof e == "number") if (Xe(e)) {
|
|
528
528
|
let t = /* @__PURE__ */ new ArrayBuffer(8);
|
|
529
|
-
return new DataView(t).setFloat64(0, e, We), { $float:
|
|
529
|
+
return new DataView(t).setFloat64(0, e, We), { $float: Be(new Uint8Array(t)) };
|
|
530
530
|
} else return e;
|
|
531
531
|
if (typeof e == "boolean" || typeof e == "string") return e;
|
|
532
|
-
if (e instanceof ArrayBuffer) return { $bytes:
|
|
532
|
+
if (e instanceof ArrayBuffer) return { $bytes: Be(new Uint8Array(e)) };
|
|
533
533
|
if (Array.isArray(e)) return e.map((e, r) => ct(e, t, n + `[${r}]`, !1));
|
|
534
534
|
if (e instanceof Set) throw Error(lt(n, "Set", [...e], t));
|
|
535
535
|
if (e instanceof Map) throw Error(lt(n, "Map", [...e], t));
|
|
@@ -1047,7 +1047,7 @@ var Yt = Object.defineProperty, Xt = (e, t, n) => t in e ? Yt(e, t, {
|
|
|
1047
1047
|
Zt(this, "queryResults"), Zt(this, "modifiedQueries"), this.queryResults = e, this.modifiedQueries = [];
|
|
1048
1048
|
}
|
|
1049
1049
|
getQuery(t, ...n) {
|
|
1050
|
-
let r =
|
|
1050
|
+
let r = Ve(n[0]), i = K(t), a = this.queryResults.get(Mt(i, r));
|
|
1051
1051
|
if (a !== void 0) return e.queryValue(a.result);
|
|
1052
1052
|
}
|
|
1053
1053
|
getAllQueries(t) {
|
|
@@ -1059,7 +1059,7 @@ var Yt = Object.defineProperty, Xt = (e, t, n) => t in e ? Yt(e, t, {
|
|
|
1059
1059
|
return n;
|
|
1060
1060
|
}
|
|
1061
1061
|
setQuery(e, t, n) {
|
|
1062
|
-
let r =
|
|
1062
|
+
let r = Ve(t), i = K(e), a = Mt(i, r), o;
|
|
1063
1063
|
o = n === void 0 ? void 0 : {
|
|
1064
1064
|
success: !0,
|
|
1065
1065
|
value: n,
|
|
@@ -1225,11 +1225,11 @@ var Yt = Object.defineProperty, Xt = (e, t, n) => t in e ? Yt(e, t, {
|
|
|
1225
1225
|
//#endregion
|
|
1226
1226
|
//#region ../../node_modules/.pnpm/convex@1.37.0_react@19.2.6/node_modules/convex/dist/esm/browser/sync/protocol.js
|
|
1227
1227
|
function mn(e) {
|
|
1228
|
-
let t =
|
|
1228
|
+
let t = Le(e);
|
|
1229
1229
|
return rn.fromBytesLE(Array.from(t));
|
|
1230
1230
|
}
|
|
1231
1231
|
function hn(e) {
|
|
1232
|
-
return
|
|
1232
|
+
return Be(new Uint8Array(e.toBytesLE()));
|
|
1233
1233
|
}
|
|
1234
1234
|
function gn(e) {
|
|
1235
1235
|
switch (e.type) {
|
|
@@ -1868,7 +1868,7 @@ var Gn = Object.defineProperty, Kn = (e, t, n) => t in e ? Gn(e, t, {
|
|
|
1868
1868
|
if (s === "http") c = "ws";
|
|
1869
1869
|
else if (s === "https") c = "wss";
|
|
1870
1870
|
else throw Error(`Unknown parent protocol ${s}`);
|
|
1871
|
-
let l = `${c}://${o}/api/${
|
|
1871
|
+
let l = `${c}://${o}/api/${Ae}/sync`;
|
|
1872
1872
|
this.state = new Lt(), this.remoteQuerySet = new pn((e) => this.state.queryPath(e), this.logger), this.requestManager = new Vt(this.logger, this.markConnectionStateDirty);
|
|
1873
1873
|
let u = () => {
|
|
1874
1874
|
this.webSocketManager.pause(), this.state.pause();
|
|
@@ -2022,7 +2022,7 @@ var Gn = Object.defineProperty, Kn = (e, t, n) => t in e ? Gn(e, t, {
|
|
|
2022
2022
|
this.webSocketManager.sendMessage(e);
|
|
2023
2023
|
}
|
|
2024
2024
|
subscribe(e, t, n) {
|
|
2025
|
-
let r =
|
|
2025
|
+
let r = Ve(t), { modification: i, queryToken: a, unsubscribe: o } = this.state.subscribe(e, r, n?.journal, n?.componentPath);
|
|
2026
2026
|
return i !== null && this.webSocketManager.sendMessage(i), {
|
|
2027
2027
|
queryToken: a,
|
|
2028
2028
|
unsubscribe: () => {
|
|
@@ -2032,7 +2032,7 @@ var Gn = Object.defineProperty, Kn = (e, t, n) => t in e ? Gn(e, t, {
|
|
|
2032
2032
|
};
|
|
2033
2033
|
}
|
|
2034
2034
|
localQueryResult(e, t) {
|
|
2035
|
-
let n = Mt(e,
|
|
2035
|
+
let n = Mt(e, Ve(t));
|
|
2036
2036
|
return this.optimisticQueryResults.queryResult(n);
|
|
2037
2037
|
}
|
|
2038
2038
|
localQueryResultByToken(e) {
|
|
@@ -2042,11 +2042,11 @@ var Gn = Object.defineProperty, Kn = (e, t, n) => t in e ? Gn(e, t, {
|
|
|
2042
2042
|
return this.optimisticQueryResults.hasQueryResult(e);
|
|
2043
2043
|
}
|
|
2044
2044
|
localQueryLogs(e, t) {
|
|
2045
|
-
let n = Mt(e,
|
|
2045
|
+
let n = Mt(e, Ve(t));
|
|
2046
2046
|
return this.optimisticQueryResults.queryLogs(n);
|
|
2047
2047
|
}
|
|
2048
2048
|
queryJournal(e, t) {
|
|
2049
|
-
let n = Mt(e,
|
|
2049
|
+
let n = Mt(e, Ve(t));
|
|
2050
2050
|
return this.state.queryJournal(n);
|
|
2051
2051
|
}
|
|
2052
2052
|
connectionState() {
|
|
@@ -2078,7 +2078,7 @@ var Gn = Object.defineProperty, Kn = (e, t, n) => t in e ? Gn(e, t, {
|
|
|
2078
2078
|
return i;
|
|
2079
2079
|
}
|
|
2080
2080
|
enqueueMutation(e, t, n, r) {
|
|
2081
|
-
let i =
|
|
2081
|
+
let i = Ve(t);
|
|
2082
2082
|
this.tryReportLongDisconnect();
|
|
2083
2083
|
let a = this.nextRequestId;
|
|
2084
2084
|
if (this._nextRequestId++, n !== void 0) {
|
|
@@ -2125,7 +2125,7 @@ var Gn = Object.defineProperty, Kn = (e, t, n) => t in e ? Gn(e, t, {
|
|
|
2125
2125
|
return n.value;
|
|
2126
2126
|
}
|
|
2127
2127
|
async actionInternal(e, t, n) {
|
|
2128
|
-
let r =
|
|
2128
|
+
let r = Ve(t), i = this.nextRequestId;
|
|
2129
2129
|
this._nextRequestId++, this.tryReportLongDisconnect();
|
|
2130
2130
|
let a = {
|
|
2131
2131
|
type: "Action",
|
|
@@ -2167,7 +2167,7 @@ var Gn = Object.defineProperty, Kn = (e, t, n) => t in e ? Gn(e, t, {
|
|
|
2167
2167
|
method: "POST",
|
|
2168
2168
|
headers: {
|
|
2169
2169
|
"Content-Type": "application/json",
|
|
2170
|
-
"Convex-Client": `npm-${
|
|
2170
|
+
"Convex-Client": `npm-${Ae}`
|
|
2171
2171
|
},
|
|
2172
2172
|
body: JSON.stringify({ event: "LongWebsocketDisconnect" })
|
|
2173
2173
|
}).then((e) => {
|
|
@@ -3490,7 +3490,7 @@ function la({ size: e = 16 }) {
|
|
|
3490
3490
|
//#endregion
|
|
3491
3491
|
//#region src/runtime/ui/fab.tsx
|
|
3492
3492
|
function ua({ active: e, onToggle: t, onHide: n, position: r = "bottom-right", onPositionChange: i }) {
|
|
3493
|
-
let a = r === "bottom-left" ? "markup-fab-left" : "markup-fab-right", o =
|
|
3493
|
+
let a = r === "bottom-left" ? "markup-fab-left" : "markup-fab-right", o = V(null), [s, c] = z(null), [l, u] = z(!1), d = V(!1);
|
|
3494
3494
|
function f(e) {
|
|
3495
3495
|
if (e.stopPropagation(), e.button !== 0) return;
|
|
3496
3496
|
let t = o.current;
|
|
@@ -3570,7 +3570,7 @@ var fa = [
|
|
|
3570
3570
|
"[tabindex]:not([tabindex=\"-1\"])"
|
|
3571
3571
|
].join(",");
|
|
3572
3572
|
function pa(e, t) {
|
|
3573
|
-
|
|
3573
|
+
B(() => {
|
|
3574
3574
|
if (!t) return;
|
|
3575
3575
|
let n = e.current;
|
|
3576
3576
|
if (!n) return;
|
|
@@ -3587,8 +3587,8 @@ function pa(e, t) {
|
|
|
3587
3587
|
//#endregion
|
|
3588
3588
|
//#region src/runtime/ui/author-prompt.tsx
|
|
3589
3589
|
function ma({ pending: e, connecting: t = !1, onSubmit: n, onCancel: r, onSignIn: i }) {
|
|
3590
|
-
let [a, o] =
|
|
3591
|
-
|
|
3590
|
+
let [a, o] = z(""), [s, c] = z(""), l = V(null);
|
|
3591
|
+
B(() => {
|
|
3592
3592
|
l.current?.focus();
|
|
3593
3593
|
}, []);
|
|
3594
3594
|
function u(r) {
|
|
@@ -3667,13 +3667,13 @@ function ma({ pending: e, connecting: t = !1, onSubmit: n, onCancel: r, onSignIn
|
|
|
3667
3667
|
//#region src/runtime/ui/composer.tsx
|
|
3668
3668
|
var ha = 4e3;
|
|
3669
3669
|
function ga({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "Post", initialFocus: r = !0, pending: i, error: a, onSubmit: o }) {
|
|
3670
|
-
let [s, c] =
|
|
3671
|
-
|
|
3670
|
+
let [s, c] = z(""), l = V(null), u = V(!1);
|
|
3671
|
+
B(() => {
|
|
3672
3672
|
r && l.current?.focus();
|
|
3673
|
-
}, [r]),
|
|
3673
|
+
}, [r]), B(() => {
|
|
3674
3674
|
let e = l.current;
|
|
3675
3675
|
e && (e.style.height = "auto", e.style.height = `${Math.min(e.scrollHeight, 160)}px`);
|
|
3676
|
-
}, [s]),
|
|
3676
|
+
}, [s]), B(() => {
|
|
3677
3677
|
u.current && !i && !a && (c(""), l.current?.focus()), u.current = i;
|
|
3678
3678
|
}, [i, a]);
|
|
3679
3679
|
function d(e) {
|
|
@@ -3743,14 +3743,14 @@ function ga({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "
|
|
|
3743
3743
|
//#endregion
|
|
3744
3744
|
//#region src/runtime/ui/new-thread-popover.tsx
|
|
3745
3745
|
function _a({ pageX: e, pageY: t, authorName: n, isVerified: r, identityResolving: i, pending: a, error: o, screenshot: s, screenshotCapturing: c, onAuthor: l, onSignIn: u, onSubmit: d, onClose: f }) {
|
|
3746
|
-
let p =
|
|
3746
|
+
let p = V(null);
|
|
3747
3747
|
pa(p, !0);
|
|
3748
|
-
let [m, h] =
|
|
3749
|
-
|
|
3748
|
+
let [m, h] = z(!1), [g, _] = z(null), [v, y] = z(null), [b, x] = z(!1);
|
|
3749
|
+
B(() => {
|
|
3750
3750
|
if (!s) return;
|
|
3751
3751
|
let e = URL.createObjectURL(s);
|
|
3752
3752
|
return _(e), () => URL.revokeObjectURL(e);
|
|
3753
|
-
}, [s]),
|
|
3753
|
+
}, [s]), B(() => {
|
|
3754
3754
|
let e = p.current;
|
|
3755
3755
|
if (!e) return;
|
|
3756
3756
|
if (typeof e.showPopover == "function" && !e.matches(":popover-open")) try {
|
|
@@ -3925,7 +3925,7 @@ function ba({ pageX: e, pageY: t }) {
|
|
|
3925
3925
|
//#endregion
|
|
3926
3926
|
//#region src/runtime/ui/placement-overlay.tsx
|
|
3927
3927
|
function xa({ onPlace: e, onCancel: t }) {
|
|
3928
|
-
|
|
3928
|
+
B(() => {
|
|
3929
3929
|
function e(e) {
|
|
3930
3930
|
e.key === "Escape" && t();
|
|
3931
3931
|
}
|
|
@@ -3959,31 +3959,31 @@ var Sa = [
|
|
|
3959
3959
|
"❓"
|
|
3960
3960
|
];
|
|
3961
3961
|
function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, identityResolving: i, canDelete: a, pending: o, error: s, onAuthor: c, onSignIn: l, onClose: u, onReply: d, onEditComment: f, onDeleteComment: p, onToggleReaction: m, onResolve: h, onDelete: g }) {
|
|
3962
|
-
let _ =
|
|
3962
|
+
let _ = V(null), v = V(null), y = V(null), b = V(null), x = V(null), [S, C] = z(!1), [w, T] = z(!1), [E, D] = z(null), [O, ee] = z(""), [k, A] = z(null), [j, M] = z("down"), [te, N] = z(null), [P, ne] = z(null), [re, ie] = z("down"), ae = V(null), [oe, se] = z(null), [ce, le] = z(!1);
|
|
3963
3963
|
pa(_, !0);
|
|
3964
|
-
let ue = e.resolvedAt != null, F =
|
|
3964
|
+
let ue = e.resolvedAt != null, F = Se(() => e.comments.filter((e) => !e.deleted), [e.comments]);
|
|
3965
3965
|
function I(e, t) {
|
|
3966
3966
|
D(e), ee(t);
|
|
3967
3967
|
}
|
|
3968
|
-
function
|
|
3968
|
+
function L() {
|
|
3969
3969
|
D(null), ee("");
|
|
3970
3970
|
}
|
|
3971
|
-
|
|
3971
|
+
B(() => {
|
|
3972
3972
|
if (!E) return;
|
|
3973
3973
|
let t = e.comments.find((e) => e._id === E);
|
|
3974
|
-
(!t || t.deleted) &&
|
|
3974
|
+
(!t || t.deleted) && L();
|
|
3975
3975
|
}, [e.comments, E]);
|
|
3976
|
-
let
|
|
3977
|
-
|
|
3976
|
+
let de = V(!0);
|
|
3977
|
+
B(() => {
|
|
3978
3978
|
let e = b.current;
|
|
3979
3979
|
if (e) {
|
|
3980
|
-
if (
|
|
3981
|
-
|
|
3980
|
+
if (de.current) {
|
|
3981
|
+
de.current = !1, e.scrollTop = e.scrollHeight;
|
|
3982
3982
|
return;
|
|
3983
3983
|
}
|
|
3984
3984
|
e.scrollHeight - e.scrollTop - e.clientHeight < 80 && (e.scrollTop = e.scrollHeight);
|
|
3985
3985
|
}
|
|
3986
|
-
}, [F.length]),
|
|
3986
|
+
}, [F.length]), B(() => {
|
|
3987
3987
|
if (!S) {
|
|
3988
3988
|
T(!1);
|
|
3989
3989
|
return;
|
|
@@ -3992,22 +3992,22 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
3992
3992
|
v.current && !e.composedPath().includes(v.current) && C(!1);
|
|
3993
3993
|
}
|
|
3994
3994
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
3995
|
-
}, [S]),
|
|
3995
|
+
}, [S]), B(() => {
|
|
3996
3996
|
if (!k) {
|
|
3997
|
-
|
|
3997
|
+
N(null);
|
|
3998
3998
|
return;
|
|
3999
3999
|
}
|
|
4000
4000
|
function e(e) {
|
|
4001
4001
|
y.current && !e.composedPath().includes(y.current) && A(null);
|
|
4002
4002
|
}
|
|
4003
4003
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
4004
|
-
}, [k]),
|
|
4005
|
-
if (!
|
|
4004
|
+
}, [k]), B(() => {
|
|
4005
|
+
if (!P) return;
|
|
4006
4006
|
function e(e) {
|
|
4007
|
-
ae.current && !e.composedPath().includes(ae.current) &&
|
|
4007
|
+
ae.current && !e.composedPath().includes(ae.current) && ne(null);
|
|
4008
4008
|
}
|
|
4009
4009
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
4010
|
-
}, [
|
|
4010
|
+
}, [P]), B(() => {
|
|
4011
4011
|
let e = _.current;
|
|
4012
4012
|
if (!e) return;
|
|
4013
4013
|
if (typeof e.showPopover == "function" && !e.matches(":popover-open")) try {
|
|
@@ -4018,7 +4018,7 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4018
4018
|
}
|
|
4019
4019
|
return e.addEventListener("toggle", t), () => e.removeEventListener("toggle", t);
|
|
4020
4020
|
}, [u]);
|
|
4021
|
-
function
|
|
4021
|
+
function fe(e) {
|
|
4022
4022
|
if (e.button !== 0 || e.target?.closest("button, a, input, textarea, select")) return;
|
|
4023
4023
|
let t = _.current;
|
|
4024
4024
|
if (!t) return;
|
|
@@ -4046,7 +4046,7 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4046
4046
|
}
|
|
4047
4047
|
l.addEventListener("pointermove", d), l.addEventListener("pointerup", f), l.addEventListener("pointercancel", f);
|
|
4048
4048
|
}
|
|
4049
|
-
let
|
|
4049
|
+
let pe = Se(() => {
|
|
4050
4050
|
let t = Tr({
|
|
4051
4051
|
anchorX: e.anchorX,
|
|
4052
4052
|
anchorY: e.anchorY,
|
|
@@ -4067,15 +4067,15 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4067
4067
|
class: Q("markup-popover", oe && "is-floating", ce && "is-dragging"),
|
|
4068
4068
|
popover: "auto",
|
|
4069
4069
|
style: {
|
|
4070
|
-
"--markup-pop-x": `${oe?.left ??
|
|
4071
|
-
"--markup-pop-y": `${oe?.top ??
|
|
4070
|
+
"--markup-pop-x": `${oe?.left ?? pe.left}px`,
|
|
4071
|
+
"--markup-pop-y": `${oe?.top ?? pe.top}px`
|
|
4072
4072
|
},
|
|
4073
4073
|
role: "dialog",
|
|
4074
4074
|
"aria-label": "Markup thread",
|
|
4075
4075
|
children: [
|
|
4076
4076
|
/* @__PURE__ */ $("header", {
|
|
4077
4077
|
class: "markup-popover-header",
|
|
4078
|
-
onPointerDown:
|
|
4078
|
+
onPointerDown: fe,
|
|
4079
4079
|
children: [/* @__PURE__ */ $("span", {
|
|
4080
4080
|
class: "markup-eyebrow",
|
|
4081
4081
|
children: [
|
|
@@ -4139,7 +4139,7 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4139
4139
|
ref: b,
|
|
4140
4140
|
class: "markup-comments",
|
|
4141
4141
|
children: F.map((t, r) => {
|
|
4142
|
-
let i = !t.fromDashboard && n != null && t.authorClientId === n, a = r === 0, s = i && !ue && !t.deleted, c = i && !ue && !t.deleted && !a, l = E === t._id, u = (s || c) && !l && !t.deleted, d = k === t._id, h =
|
|
4142
|
+
let i = !t.fromDashboard && n != null && t.authorClientId === n, a = r === 0, s = i && !ue && !t.deleted, c = i && !ue && !t.deleted && !a, l = E === t._id, u = (s || c) && !l && !t.deleted, d = k === t._id, h = te === t._id;
|
|
4143
4143
|
return /* @__PURE__ */ $("li", {
|
|
4144
4144
|
class: Q("markup-comment", t.fromDashboard && "is-team"),
|
|
4145
4145
|
children: [
|
|
@@ -4164,24 +4164,24 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4164
4164
|
class: "markup-thread-actions",
|
|
4165
4165
|
children: [!ue && !l ? /* @__PURE__ */ $(wa, {
|
|
4166
4166
|
comment: t,
|
|
4167
|
-
pickerOpen:
|
|
4167
|
+
pickerOpen: P === t._id,
|
|
4168
4168
|
pickerDirection: re,
|
|
4169
4169
|
pickerRef: (e) => {
|
|
4170
|
-
|
|
4170
|
+
P === t._id && (ae.current = e);
|
|
4171
4171
|
},
|
|
4172
4172
|
onPickerClick: (e) => {
|
|
4173
|
-
if (
|
|
4174
|
-
|
|
4173
|
+
if (P === t._id) {
|
|
4174
|
+
ne(null);
|
|
4175
4175
|
return;
|
|
4176
4176
|
}
|
|
4177
4177
|
let n = e.currentTarget.getBoundingClientRect(), r = b.current?.getBoundingClientRect();
|
|
4178
|
-
ie((r ? r.bottom - n.bottom : Infinity) < 44 ? "up" : "down"),
|
|
4178
|
+
ie((r ? r.bottom - n.bottom : Infinity) < 44 ? "up" : "down"), ne(t._id);
|
|
4179
4179
|
},
|
|
4180
4180
|
onPickerSelect: (e) => {
|
|
4181
|
-
|
|
4181
|
+
ne(null), m(t._id, e);
|
|
4182
4182
|
}
|
|
4183
4183
|
}) : null, u ? /* @__PURE__ */ $("div", {
|
|
4184
|
-
class: Q("markup-thread-menu markup-comment-menu", d && "is-open", d &&
|
|
4184
|
+
class: Q("markup-thread-menu markup-comment-menu", d && "is-open", d && j === "up" && "is-up"),
|
|
4185
4185
|
ref: (e) => {
|
|
4186
4186
|
d && (y.current = e);
|
|
4187
4187
|
},
|
|
@@ -4195,7 +4195,7 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4195
4195
|
return;
|
|
4196
4196
|
}
|
|
4197
4197
|
let n = e.currentTarget.getBoundingClientRect(), r = b.current?.getBoundingClientRect(), i = (+!!s + +!!c) * 32 + 8 + 6;
|
|
4198
|
-
|
|
4198
|
+
M((r ? r.bottom - n.bottom : Infinity) < i ? "up" : "down"), A(t._id);
|
|
4199
4199
|
},
|
|
4200
4200
|
children: /* @__PURE__ */ $(aa, { size: 16 })
|
|
4201
4201
|
}), d ? /* @__PURE__ */ $("div", {
|
|
@@ -4211,7 +4211,7 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4211
4211
|
type: "button",
|
|
4212
4212
|
class: Q("markup-thread-menu-item", h && "is-danger"),
|
|
4213
4213
|
onClick: () => {
|
|
4214
|
-
h ? (A(null), p(t._id)) :
|
|
4214
|
+
h ? (A(null), p(t._id)) : N(t._id);
|
|
4215
4215
|
},
|
|
4216
4216
|
children: h ? "Confirm delete" : "Delete…"
|
|
4217
4217
|
}) : null]
|
|
@@ -4226,11 +4226,11 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4226
4226
|
e.preventDefault();
|
|
4227
4227
|
let n = O.trim();
|
|
4228
4228
|
if (!n || n === t.body) {
|
|
4229
|
-
|
|
4229
|
+
L();
|
|
4230
4230
|
return;
|
|
4231
4231
|
}
|
|
4232
4232
|
try {
|
|
4233
|
-
await f(t._id, n),
|
|
4233
|
+
await f(t._id, n), L();
|
|
4234
4234
|
} catch {}
|
|
4235
4235
|
},
|
|
4236
4236
|
children: [/* @__PURE__ */ $("textarea", {
|
|
@@ -4245,7 +4245,7 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4245
4245
|
children: [/* @__PURE__ */ $("button", {
|
|
4246
4246
|
type: "button",
|
|
4247
4247
|
class: "markup-btn markup-btn-ghost",
|
|
4248
|
-
onClick:
|
|
4248
|
+
onClick: L,
|
|
4249
4249
|
disabled: o,
|
|
4250
4250
|
children: "Cancel"
|
|
4251
4251
|
}), /* @__PURE__ */ $("button", {
|
|
@@ -4430,9 +4430,9 @@ function Aa(e) {
|
|
|
4430
4430
|
};
|
|
4431
4431
|
}
|
|
4432
4432
|
function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
4433
|
-
let [r, i] =
|
|
4433
|
+
let [r, i] = z(() => window.location.pathname), [a, o] = z([]), [s, c] = z(null), [l, u] = z(n), d = V(null);
|
|
4434
4434
|
d.current = s;
|
|
4435
|
-
let [f, p] =
|
|
4435
|
+
let [f, p] = z(0), m = Se(() => Or({
|
|
4436
4436
|
apiUrl: e,
|
|
4437
4437
|
apiKey: t,
|
|
4438
4438
|
getToken: () => {
|
|
@@ -4456,8 +4456,8 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4456
4456
|
};
|
|
4457
4457
|
d.current = t, c(t), Mr(t), p((e) => e + 1);
|
|
4458
4458
|
}
|
|
4459
|
-
}), [e, t]), [h, g] =
|
|
4460
|
-
|
|
4459
|
+
}), [e, t]), [h, g] = z({ kind: "idle" }), [_, v] = z(!1), [y, b] = z(null), [x, S] = z(!1), [C, w] = z(!1), [, T] = z(0), E = V(null), D = s?.name ?? null, O = s?.isVerified ?? !1, ee = s == null;
|
|
4460
|
+
B(() => {
|
|
4461
4461
|
let e = jr();
|
|
4462
4462
|
if (e?.anonToken || e?.isVerified) {
|
|
4463
4463
|
c(e);
|
|
@@ -4482,8 +4482,8 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4482
4482
|
t = !0, n && clearTimeout(n);
|
|
4483
4483
|
};
|
|
4484
4484
|
}, [m, f]);
|
|
4485
|
-
let [k, A] =
|
|
4486
|
-
|
|
4485
|
+
let [k, A] = z(null);
|
|
4486
|
+
B(() => {
|
|
4487
4487
|
let e = !1, t = null;
|
|
4488
4488
|
async function n() {
|
|
4489
4489
|
try {
|
|
@@ -4501,17 +4501,17 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4501
4501
|
e = !0, t && clearTimeout(t);
|
|
4502
4502
|
};
|
|
4503
4503
|
}, [m]);
|
|
4504
|
-
let
|
|
4505
|
-
|
|
4504
|
+
let j = V(null);
|
|
4505
|
+
B(() => {
|
|
4506
4506
|
let t = new rr(e.replace(/\.convex\.site(\/.*)?$/, ".convex.cloud"));
|
|
4507
|
-
return
|
|
4508
|
-
t.close(),
|
|
4507
|
+
return j.current = t, () => {
|
|
4508
|
+
t.close(), j.current = null;
|
|
4509
4509
|
};
|
|
4510
4510
|
}, [e]);
|
|
4511
|
-
let
|
|
4512
|
-
|
|
4513
|
-
let e =
|
|
4514
|
-
if (!(!e || !k)) return
|
|
4511
|
+
let M = V(!1);
|
|
4512
|
+
B(() => {
|
|
4513
|
+
let e = j.current;
|
|
4514
|
+
if (!(!e || !k)) return M.current = !1, b(null), e.onUpdate(qt("widget/queries:subscribeThreadsForRoute"), {
|
|
4515
4515
|
subscriptionToken: k,
|
|
4516
4516
|
route: r,
|
|
4517
4517
|
viewerClientId: s?.clientId ?? void 0
|
|
@@ -4522,19 +4522,19 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4522
4522
|
k,
|
|
4523
4523
|
r,
|
|
4524
4524
|
s?.clientId
|
|
4525
|
-
]),
|
|
4526
|
-
if (
|
|
4525
|
+
]), B(() => {
|
|
4526
|
+
if (M.current) return;
|
|
4527
4527
|
let e = window.location.hash.match(/^#markup-thread=(.+)$/);
|
|
4528
4528
|
if (!e) {
|
|
4529
|
-
|
|
4529
|
+
M.current = !0;
|
|
4530
4530
|
return;
|
|
4531
4531
|
}
|
|
4532
4532
|
let t = decodeURIComponent(e[1] ?? "");
|
|
4533
|
-
a.find((e) => e._id === t) && (
|
|
4533
|
+
a.find((e) => e._id === t) && (M.current = !0, g({
|
|
4534
4534
|
kind: "thread",
|
|
4535
4535
|
threadId: t
|
|
4536
4536
|
}), history.replaceState(null, "", window.location.pathname + window.location.search));
|
|
4537
|
-
}, [a]),
|
|
4537
|
+
}, [a]), B(() => {
|
|
4538
4538
|
function e() {
|
|
4539
4539
|
i(window.location.pathname);
|
|
4540
4540
|
}
|
|
@@ -4547,12 +4547,12 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4547
4547
|
}, () => {
|
|
4548
4548
|
window.removeEventListener("popstate", e), history.pushState = t, history.replaceState = n;
|
|
4549
4549
|
};
|
|
4550
|
-
}, []),
|
|
4550
|
+
}, []), B(() => {
|
|
4551
4551
|
function e(e) {
|
|
4552
4552
|
e.key === "." && (e.metaKey || e.ctrlKey) && (e.altKey || e.shiftKey || (e.preventDefault(), S((e) => !e)));
|
|
4553
4553
|
}
|
|
4554
4554
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
4555
|
-
}, []),
|
|
4555
|
+
}, []), B(() => {
|
|
4556
4556
|
if (!C) return;
|
|
4557
4557
|
if (!x) {
|
|
4558
4558
|
w(!1);
|
|
@@ -4560,7 +4560,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4560
4560
|
}
|
|
4561
4561
|
let e = window.setTimeout(() => w(!1), 5e3);
|
|
4562
4562
|
return () => window.clearTimeout(e);
|
|
4563
|
-
}, [C, x]),
|
|
4563
|
+
}, [C, x]), B(() => {
|
|
4564
4564
|
function e() {
|
|
4565
4565
|
T((e) => e + 1);
|
|
4566
4566
|
}
|
|
@@ -4570,29 +4570,31 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4570
4570
|
window.removeEventListener("scroll", e), window.removeEventListener("resize", e), t.disconnect();
|
|
4571
4571
|
};
|
|
4572
4572
|
}, []);
|
|
4573
|
-
let
|
|
4573
|
+
let te = H(() => {
|
|
4574
4574
|
b(null), g({ kind: "placing" });
|
|
4575
|
-
}, []),
|
|
4575
|
+
}, []), N = H(() => {
|
|
4576
4576
|
g({ kind: "idle" }), b(null);
|
|
4577
|
-
}, []),
|
|
4577
|
+
}, []), P = V(0), ne = H((e, t, n) => {
|
|
4578
|
+
let r = t + window.scrollX, i = n + window.scrollY, a = ++P.current;
|
|
4578
4579
|
g({
|
|
4579
4580
|
kind: "composing-new",
|
|
4580
4581
|
coords: e,
|
|
4581
|
-
pageX:
|
|
4582
|
-
pageY:
|
|
4582
|
+
pageX: r,
|
|
4583
|
+
pageY: i,
|
|
4583
4584
|
screenshot: null,
|
|
4584
|
-
screenshotCapturing: !0
|
|
4585
|
+
screenshotCapturing: !0,
|
|
4586
|
+
captureToken: a
|
|
4585
4587
|
}), $i(E.current != null && E.current.getRootNode() instanceof ShadowRoot ? E.current.getRootNode().host : null, {
|
|
4586
4588
|
x: t,
|
|
4587
4589
|
y: n
|
|
4588
4590
|
}).then((e) => {
|
|
4589
|
-
g((t) => t.kind
|
|
4591
|
+
g((t) => t.kind !== "composing-new" || t.captureToken !== a ? t : {
|
|
4590
4592
|
...t,
|
|
4591
4593
|
screenshot: e,
|
|
4592
4594
|
screenshotCapturing: !1
|
|
4593
|
-
}
|
|
4595
|
+
});
|
|
4594
4596
|
});
|
|
4595
|
-
}, []),
|
|
4597
|
+
}, []), re = H((e, t) => {
|
|
4596
4598
|
if (!s) return;
|
|
4597
4599
|
let n = {
|
|
4598
4600
|
...s,
|
|
@@ -4600,7 +4602,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4600
4602
|
email: t
|
|
4601
4603
|
};
|
|
4602
4604
|
Mr(n), c(n);
|
|
4603
|
-
}, [s]),
|
|
4605
|
+
}, [s]), ie = H(async () => {
|
|
4604
4606
|
b(null);
|
|
4605
4607
|
try {
|
|
4606
4608
|
let n = Aa(await Nr(e, t));
|
|
@@ -4608,7 +4610,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4608
4610
|
} catch (e) {
|
|
4609
4611
|
b(e instanceof Error ? e.message : "Sign-in failed");
|
|
4610
4612
|
}
|
|
4611
|
-
}, [e, t]),
|
|
4613
|
+
}, [e, t]), ae = H(async (e, t) => {
|
|
4612
4614
|
if (!(h.kind !== "composing-new" || !s?.name)) {
|
|
4613
4615
|
v(!0), b(null);
|
|
4614
4616
|
try {
|
|
@@ -4655,7 +4657,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4655
4657
|
s,
|
|
4656
4658
|
h,
|
|
4657
4659
|
r
|
|
4658
|
-
]),
|
|
4660
|
+
]), oe = H(async () => {
|
|
4659
4661
|
if (h.kind !== "thread") return;
|
|
4660
4662
|
let e = h.threadId;
|
|
4661
4663
|
v(!0), b(null);
|
|
@@ -4666,7 +4668,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4666
4668
|
} finally {
|
|
4667
4669
|
v(!1);
|
|
4668
4670
|
}
|
|
4669
|
-
}, [m, h]),
|
|
4671
|
+
}, [m, h]), se = H(async () => {
|
|
4670
4672
|
if (h.kind !== "thread") return;
|
|
4671
4673
|
let e = h.threadId;
|
|
4672
4674
|
v(!0), b(null);
|
|
@@ -4681,7 +4683,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4681
4683
|
m,
|
|
4682
4684
|
h,
|
|
4683
4685
|
s?.clientId
|
|
4684
|
-
]),
|
|
4686
|
+
]), ce = H(async (e) => {
|
|
4685
4687
|
if (h.kind !== "thread" || !s?.name) return;
|
|
4686
4688
|
let t = h.threadId;
|
|
4687
4689
|
v(!0), b(null);
|
|
@@ -4701,7 +4703,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4701
4703
|
m,
|
|
4702
4704
|
s,
|
|
4703
4705
|
h
|
|
4704
|
-
]),
|
|
4706
|
+
]), le = H(async (e, t) => {
|
|
4705
4707
|
if (h.kind !== "thread" || !s) return;
|
|
4706
4708
|
let n = h.threadId;
|
|
4707
4709
|
v(!0), b(null);
|
|
@@ -4717,7 +4719,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4717
4719
|
m,
|
|
4718
4720
|
s,
|
|
4719
4721
|
h
|
|
4720
|
-
]),
|
|
4722
|
+
]), ue = H(async (e) => {
|
|
4721
4723
|
if (h.kind !== "thread" || !s) return;
|
|
4722
4724
|
let t = h.threadId;
|
|
4723
4725
|
v(!0), b(null);
|
|
@@ -4733,7 +4735,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4733
4735
|
m,
|
|
4734
4736
|
s,
|
|
4735
4737
|
h
|
|
4736
|
-
]),
|
|
4738
|
+
]), F = H(async (e, t) => {
|
|
4737
4739
|
if (h.kind !== "thread" || !s) return;
|
|
4738
4740
|
let n = h.threadId;
|
|
4739
4741
|
b(null);
|
|
@@ -4750,8 +4752,14 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4750
4752
|
m,
|
|
4751
4753
|
s,
|
|
4752
4754
|
h
|
|
4753
|
-
]),
|
|
4754
|
-
return
|
|
4755
|
+
]), I = h.kind === "thread" ? a.find((e) => e._id === h.threadId) ?? null : null, L = O || s?.clientId != null && s.clientId === I?.authorClientId;
|
|
4756
|
+
return B(() => {
|
|
4757
|
+
h.kind === "thread" && I == null && N();
|
|
4758
|
+
}, [
|
|
4759
|
+
h,
|
|
4760
|
+
I,
|
|
4761
|
+
N
|
|
4762
|
+
]), /* @__PURE__ */ $("div", {
|
|
4755
4763
|
class: "markup-root",
|
|
4756
4764
|
ref: E,
|
|
4757
4765
|
children: [
|
|
@@ -4781,28 +4789,28 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4781
4789
|
}) : null]
|
|
4782
4790
|
}),
|
|
4783
4791
|
h.kind === "placing" ? /* @__PURE__ */ $(xa, {
|
|
4784
|
-
onPlace:
|
|
4785
|
-
onCancel:
|
|
4792
|
+
onPlace: ne,
|
|
4793
|
+
onCancel: N
|
|
4786
4794
|
}) : null,
|
|
4787
|
-
h.kind === "thread" &&
|
|
4788
|
-
thread:
|
|
4795
|
+
h.kind === "thread" && I && !x ? /* @__PURE__ */ $(Ca, {
|
|
4796
|
+
thread: I,
|
|
4789
4797
|
authorName: D,
|
|
4790
4798
|
currentClientId: s?.clientId ?? null,
|
|
4791
4799
|
isVerified: O,
|
|
4792
4800
|
identityResolving: ee,
|
|
4793
|
-
canDelete:
|
|
4801
|
+
canDelete: L,
|
|
4794
4802
|
pending: _,
|
|
4795
4803
|
error: y,
|
|
4796
|
-
onAuthor:
|
|
4797
|
-
onSignIn:
|
|
4798
|
-
onClose:
|
|
4799
|
-
onReply:
|
|
4800
|
-
onEditComment:
|
|
4801
|
-
onDeleteComment:
|
|
4802
|
-
onToggleReaction:
|
|
4803
|
-
onDelete:
|
|
4804
|
-
onResolve:
|
|
4805
|
-
}) : null,
|
|
4804
|
+
onAuthor: re,
|
|
4805
|
+
onSignIn: ie,
|
|
4806
|
+
onClose: N,
|
|
4807
|
+
onReply: ce,
|
|
4808
|
+
onEditComment: le,
|
|
4809
|
+
onDeleteComment: ue,
|
|
4810
|
+
onToggleReaction: F,
|
|
4811
|
+
onDelete: oe,
|
|
4812
|
+
onResolve: se
|
|
4813
|
+
}, I._id) : null,
|
|
4806
4814
|
h.kind === "composing-new" ? /* @__PURE__ */ $(_a, {
|
|
4807
4815
|
pageX: h.pageX,
|
|
4808
4816
|
pageY: h.pageY,
|
|
@@ -4813,14 +4821,14 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4813
4821
|
error: y,
|
|
4814
4822
|
screenshot: h.screenshot,
|
|
4815
4823
|
screenshotCapturing: h.screenshotCapturing,
|
|
4816
|
-
onAuthor:
|
|
4817
|
-
onSignIn:
|
|
4818
|
-
onSubmit:
|
|
4819
|
-
onClose:
|
|
4824
|
+
onAuthor: re,
|
|
4825
|
+
onSignIn: ie,
|
|
4826
|
+
onSubmit: ae,
|
|
4827
|
+
onClose: N
|
|
4820
4828
|
}) : null,
|
|
4821
4829
|
!x || h.kind === "placing" || h.kind === "composing-new" ? /* @__PURE__ */ $(ua, {
|
|
4822
4830
|
active: h.kind === "placing",
|
|
4823
|
-
onToggle: () => h.kind === "placing" ?
|
|
4831
|
+
onToggle: () => h.kind === "placing" ? N() : te(),
|
|
4824
4832
|
onHide: () => {
|
|
4825
4833
|
S(!0), w(!0);
|
|
4826
4834
|
},
|