@pixelmatters/markup 1.3.2 → 1.3.4
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 +328 -294
- package/package.json +1 -1
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), N(e.__P, o, n, e.__n, e.__P.namespaceURI, 32 & n.__u ? [r] : null, i, r ?? w(n), !!(32 & n.__u), a), o.__v = n.__v, o.__.__k[o.__i] = o, ie(i, o, a), n.__e = n.__ = null, o.__e != r && E(o);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
function E(e) {
|
|
@@ -65,7 +65,7 @@ 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 = N(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) {
|
|
@@ -114,7 +114,7 @@ function te(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 ne(e) {
|
|
118
118
|
return function(n) {
|
|
119
119
|
if (this.l) {
|
|
120
120
|
var r = this.l[n.type + e];
|
|
@@ -124,7 +124,7 @@ function N(e) {
|
|
|
124
124
|
}
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
|
-
function
|
|
127
|
+
function N(e, n, r, i, a, o, s, c, l, u) {
|
|
128
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);
|
|
@@ -145,25 +145,25 @@ function P(e, n, r, i, a, o, s, c, l, u) {
|
|
|
145
145
|
else do
|
|
146
146
|
f.__d = !1, O && O(n), d = f.render(f.props, f.state, f.context), f.state = f.__s;
|
|
147
147
|
while (f.__d && ++k < 25);
|
|
148
|
-
f.state = f.__s, f.getChildContext != null && (i = v(v({}, i), f.getChildContext())), T && !p && f.getSnapshotBeforeUpdate != null && (b = f.getSnapshotBeforeUpdate(m, g)), A = d != null && d.type === S && d.key == null ?
|
|
148
|
+
f.state = f.__s, f.getChildContext != null && (i = v(v({}, i), f.getChildContext())), T && !p && f.getSnapshotBeforeUpdate != null && (b = f.getSnapshotBeforeUpdate(m, g)), A = d != null && d.type === S && d.key == null ? P(d.props.children) : d, c = ee(e, _(A) ? A : [A], n, r, i, a, o, s, c, l, u), f.base = n.__e, n.__u &= -161, f.__h.length && s.push(f), x && (f.__E = f.__ = null);
|
|
149
149
|
} catch (e) {
|
|
150
150
|
if (n.__v = null, l || o != null) if (e.then) {
|
|
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
154
|
for (j = o.length; j--;) y(o[j]);
|
|
155
|
-
|
|
155
|
+
re(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 || re(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 re(e) {
|
|
164
|
+
e && (e.__c && (e.__c.__e = !0), e.__k && e.__k.some(re));
|
|
165
165
|
}
|
|
166
|
-
function
|
|
166
|
+
function ie(e, n, r) {
|
|
167
167
|
for (var i = 0; i < r.length; i++) oe(r[i], r[++i], r[++i]);
|
|
168
168
|
t.__c && t.__c(n, e), e.some(function(n) {
|
|
169
169
|
try {
|
|
@@ -175,8 +175,8 @@ function re(e, n, r) {
|
|
|
175
175
|
}
|
|
176
176
|
});
|
|
177
177
|
}
|
|
178
|
-
function
|
|
179
|
-
return typeof e != "object" || !e || e.__b > 0 ? e : _(e) ? e.map(
|
|
178
|
+
function P(e) {
|
|
179
|
+
return typeof e != "object" || !e || e.__b > 0 ? e : _(e) ? e.map(P) : v({}, e);
|
|
180
180
|
}
|
|
181
181
|
function ae(n, r, i, a, o, s, c, l, u) {
|
|
182
182
|
var d, f, p, h, g, v, b, x = i.props || m, S = r.props, C = r.type;
|
|
@@ -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 = [], N(r, n = (!a && i || r).__k = b(S, null, [n]), o || m, m, r.namespaceURI, !a && i ? [i] : o ? null : r.firstChild ? e.call(r.childNodes) : null, s, !a && i ? i : o ? o.__e : r.firstChild, a, c), ie(s, n, c);
|
|
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,12 +245,12 @@ 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 = ne(!1), p = ne(!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, L, de, fe = 0, pe = [], R = t, me = R.__b, he = R.__r, ge = R.diffed, _e = R.__c, ve = R.unmount, ye = R.__;
|
|
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}}.markup-popover.is-hud-hidden{display:none}@keyframes markup-popover-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.markup-popover-header{border-bottom:1px solid var(--markup-border);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.markup-popover.is-dragging .markup-popover-header{cursor:grabbing}.markup-popover-header-actions{align-items:center;gap:4px;display:flex}.markup-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, L = 0, pe = [], R = t, me = R.__b, he = R.__r, ge = R.diffed, _e = R.__c, ve = R.unmount, ye = R.__;
|
|
252
252
|
function be(e, t) {
|
|
253
|
-
R.__h && R.__h(I, e,
|
|
253
|
+
R.__h && R.__h(I, e, L || t), L = 0;
|
|
254
254
|
var n = I.__H ||= {
|
|
255
255
|
__: [],
|
|
256
256
|
__h: []
|
|
@@ -258,7 +258,7 @@ function be(e, t) {
|
|
|
258
258
|
return e >= n.__.length && n.__.push({}), n.__[e];
|
|
259
259
|
}
|
|
260
260
|
function z(e) {
|
|
261
|
-
return
|
|
261
|
+
return L = 1, xe(ke, e);
|
|
262
262
|
}
|
|
263
263
|
function xe(e, t, n) {
|
|
264
264
|
var r = be(F++, 2);
|
|
@@ -299,7 +299,7 @@ function B(e, t) {
|
|
|
299
299
|
!R.__s && Oe(n.__H, t) && (n.__ = e, n.u = t, I.__H.__h.push(n));
|
|
300
300
|
}
|
|
301
301
|
function V(e) {
|
|
302
|
-
return
|
|
302
|
+
return L = 5, Se(function() {
|
|
303
303
|
return { current: e };
|
|
304
304
|
}, []);
|
|
305
305
|
}
|
|
@@ -308,7 +308,7 @@ function Se(e, t) {
|
|
|
308
308
|
return Oe(n.__H, t) && (n.__ = e(), n.__H = t, n.__h = e), n.__;
|
|
309
309
|
}
|
|
310
310
|
function H(e, t) {
|
|
311
|
-
return
|
|
311
|
+
return L = 8, Se(function() {
|
|
312
312
|
return e;
|
|
313
313
|
}, t);
|
|
314
314
|
}
|
|
@@ -329,15 +329,15 @@ R.__b = function(e) {
|
|
|
329
329
|
}, R.__r = function(e) {
|
|
330
330
|
he && he(e), F = 0;
|
|
331
331
|
var t = (I = e.__c).__H;
|
|
332
|
-
t && (
|
|
332
|
+
t && (de === 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(Ee), t.__h.some(De), t.__h = [], F = 0)),
|
|
334
|
+
})) : (t.__h.some(Ee), t.__h.some(De), t.__h = [], F = 0)), de = I;
|
|
335
335
|
}, R.diffed = function(e) {
|
|
336
336
|
ge && ge(e);
|
|
337
337
|
var t = e.__c;
|
|
338
|
-
t && t.__H && (t.__H.__h.length && (pe.push(t) !== 1 &&
|
|
338
|
+
t && t.__H && (t.__H.__h.length && (pe.push(t) !== 1 && fe === R.requestAnimationFrame || ((fe = R.requestAnimationFrame) || Te)(Ce)), t.__H.__.some(function(e) {
|
|
339
339
|
e.u && (e.__H = e.u), e.u = void 0;
|
|
340
|
-
})),
|
|
340
|
+
})), de = I = null;
|
|
341
341
|
}, R.__c = function(e, t) {
|
|
342
342
|
t.some(function(e) {
|
|
343
343
|
try {
|
|
@@ -2858,7 +2858,7 @@ async function Nr(e, t) {
|
|
|
2858
2858
|
let i = Math.max(0, window.screenX + (window.outerWidth - 420) / 2), a = Math.max(0, window.screenY + (window.outerHeight - 560) / 2), o = window.open(r, "markup-auth", `width=420,height=560,left=${i},top=${a}`);
|
|
2859
2859
|
return o ? new Promise((e, t) => {
|
|
2860
2860
|
function r() {
|
|
2861
|
-
window.removeEventListener("message", i), clearInterval(a);
|
|
2861
|
+
window.removeEventListener("message", i), clearInterval(a), clearTimeout(s);
|
|
2862
2862
|
}
|
|
2863
2863
|
function i(i) {
|
|
2864
2864
|
if (i.origin !== n) return;
|
|
@@ -2871,7 +2871,9 @@ async function Nr(e, t) {
|
|
|
2871
2871
|
}
|
|
2872
2872
|
let a = window.setInterval(() => {
|
|
2873
2873
|
o.closed && (r(), t(/* @__PURE__ */ Error("Sign-in cancelled")));
|
|
2874
|
-
}, 500)
|
|
2874
|
+
}, 500), s = window.setTimeout(() => {
|
|
2875
|
+
r(), t(/* @__PURE__ */ Error("Sign-in timed out"));
|
|
2876
|
+
}, 3e5);
|
|
2875
2877
|
window.addEventListener("message", i);
|
|
2876
2878
|
}) : Promise.reject(/* @__PURE__ */ Error("Popup blocked — allow popups for this site to sign in"));
|
|
2877
2879
|
}
|
|
@@ -3500,29 +3502,35 @@ function ua({ active: e, onToggle: t, onHide: n, position: r = "bottom-right", o
|
|
|
3500
3502
|
try {
|
|
3501
3503
|
n.setPointerCapture(e.pointerId);
|
|
3502
3504
|
} catch {}
|
|
3503
|
-
function _(
|
|
3504
|
-
|
|
3505
|
+
function _(t) {
|
|
3506
|
+
if (t.pointerId !== e.pointerId) return;
|
|
3507
|
+
let n = t.clientX - s, r = t.clientY - l;
|
|
3505
3508
|
if (!g) {
|
|
3506
|
-
if (Math.abs(
|
|
3509
|
+
if (Math.abs(n) + Math.abs(r) < 4) return;
|
|
3507
3510
|
g = !0, d.current = !0, u(!0);
|
|
3508
3511
|
}
|
|
3509
|
-
let
|
|
3512
|
+
let i = Math.max(8, window.innerWidth - m - 8), a = Math.max(8, window.innerHeight - h - 8);
|
|
3510
3513
|
c({
|
|
3511
|
-
left: da(f +
|
|
3512
|
-
top: da(p +
|
|
3514
|
+
left: da(f + n, 8, i),
|
|
3515
|
+
top: da(p + r, 8, a)
|
|
3513
3516
|
});
|
|
3514
3517
|
}
|
|
3515
3518
|
function v(e) {
|
|
3516
3519
|
try {
|
|
3517
3520
|
n.releasePointerCapture(e.pointerId);
|
|
3518
3521
|
} catch {}
|
|
3519
|
-
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
+
n.removeEventListener("pointermove", _), n.removeEventListener("pointerup", y), n.removeEventListener("pointercancel", b), c(null), u(!1);
|
|
3523
|
+
}
|
|
3524
|
+
function y(t) {
|
|
3525
|
+
if (t.pointerId === e.pointerId && (v(t), g)) {
|
|
3526
|
+
let e = t.clientX < window.innerWidth / 2 ? "bottom-left" : "bottom-right";
|
|
3527
|
+
e !== r && i?.(e);
|
|
3522
3528
|
}
|
|
3523
|
-
c(null), u(!1);
|
|
3524
3529
|
}
|
|
3525
|
-
|
|
3530
|
+
function b(t) {
|
|
3531
|
+
t.pointerId === e.pointerId && (v(t), d.current = !1);
|
|
3532
|
+
}
|
|
3533
|
+
n.addEventListener("pointermove", _), n.addEventListener("pointerup", y), n.addEventListener("pointercancel", b);
|
|
3526
3534
|
}
|
|
3527
3535
|
function p(e) {
|
|
3528
3536
|
if (e.preventDefault(), e.stopPropagation(), d.current) {
|
|
@@ -3586,27 +3594,27 @@ function pa(e, t) {
|
|
|
3586
3594
|
}
|
|
3587
3595
|
//#endregion
|
|
3588
3596
|
//#region src/runtime/ui/author-prompt.tsx
|
|
3589
|
-
function ma({ pending: e, connecting: t = !1,
|
|
3590
|
-
let [
|
|
3597
|
+
function ma({ pending: e, connecting: t = !1, signingIn: n = !1, onSubmit: r, onCancel: i, onSignIn: a }) {
|
|
3598
|
+
let [o, s] = z(""), [c, l] = z(""), u = V(null);
|
|
3591
3599
|
B(() => {
|
|
3592
|
-
|
|
3600
|
+
u.current?.focus();
|
|
3593
3601
|
}, []);
|
|
3594
|
-
function
|
|
3595
|
-
|
|
3596
|
-
let i =
|
|
3597
|
-
!i || e || t ||
|
|
3602
|
+
function d(n) {
|
|
3603
|
+
n?.preventDefault();
|
|
3604
|
+
let i = o.trim();
|
|
3605
|
+
!i || e || t || r(i, c.trim() || void 0);
|
|
3598
3606
|
}
|
|
3599
|
-
let
|
|
3607
|
+
let f = e || t;
|
|
3600
3608
|
return /* @__PURE__ */ $("form", {
|
|
3601
3609
|
class: "markup-author-prompt",
|
|
3602
|
-
onSubmit:
|
|
3610
|
+
onSubmit: d,
|
|
3603
3611
|
children: [
|
|
3604
|
-
|
|
3612
|
+
a ? /* @__PURE__ */ $(S, { children: [/* @__PURE__ */ $("button", {
|
|
3605
3613
|
type: "button",
|
|
3606
3614
|
class: "markup-btn markup-btn-primary",
|
|
3607
|
-
onClick:
|
|
3608
|
-
disabled: e,
|
|
3609
|
-
children: "Sign in with Markup"
|
|
3615
|
+
onClick: a,
|
|
3616
|
+
disabled: e || n,
|
|
3617
|
+
children: n ? "Signing in…" : "Sign in with Markup"
|
|
3610
3618
|
}), /* @__PURE__ */ $("p", {
|
|
3611
3619
|
class: "markup-author-divider",
|
|
3612
3620
|
children: "or continue as a guest"
|
|
@@ -3615,16 +3623,16 @@ function ma({ pending: e, connecting: t = !1, onSubmit: n, onCancel: r, onSignIn
|
|
|
3615
3623
|
children: "who's leaving feedback?"
|
|
3616
3624
|
}),
|
|
3617
3625
|
/* @__PURE__ */ $("input", {
|
|
3618
|
-
ref:
|
|
3626
|
+
ref: u,
|
|
3619
3627
|
class: "markup-input",
|
|
3620
3628
|
type: "text",
|
|
3621
3629
|
name: "name",
|
|
3622
3630
|
placeholder: "Your name",
|
|
3623
|
-
value:
|
|
3631
|
+
value: o,
|
|
3624
3632
|
maxLength: 80,
|
|
3625
3633
|
autoComplete: "name",
|
|
3626
|
-
onInput: (e) =>
|
|
3627
|
-
disabled:
|
|
3634
|
+
onInput: (e) => s(e.currentTarget.value),
|
|
3635
|
+
disabled: f,
|
|
3628
3636
|
"data-1p-ignore": !0
|
|
3629
3637
|
}),
|
|
3630
3638
|
/* @__PURE__ */ $("input", {
|
|
@@ -3632,11 +3640,11 @@ function ma({ pending: e, connecting: t = !1, onSubmit: n, onCancel: r, onSignIn
|
|
|
3632
3640
|
type: "email",
|
|
3633
3641
|
name: "email",
|
|
3634
3642
|
placeholder: "Email (optional)",
|
|
3635
|
-
value:
|
|
3643
|
+
value: c,
|
|
3636
3644
|
maxLength: 254,
|
|
3637
3645
|
autoComplete: "email",
|
|
3638
|
-
onInput: (e) =>
|
|
3639
|
-
disabled:
|
|
3646
|
+
onInput: (e) => l(e.currentTarget.value),
|
|
3647
|
+
disabled: f,
|
|
3640
3648
|
"data-1p-ignore": !0
|
|
3641
3649
|
}),
|
|
3642
3650
|
t ? /* @__PURE__ */ $("p", {
|
|
@@ -3650,13 +3658,13 @@ function ma({ pending: e, connecting: t = !1, onSubmit: n, onCancel: r, onSignIn
|
|
|
3650
3658
|
children: [/* @__PURE__ */ $("button", {
|
|
3651
3659
|
type: "button",
|
|
3652
3660
|
class: "markup-btn markup-btn-ghost",
|
|
3653
|
-
onClick:
|
|
3661
|
+
onClick: i,
|
|
3654
3662
|
disabled: e,
|
|
3655
3663
|
children: "Cancel"
|
|
3656
3664
|
}), /* @__PURE__ */ $("button", {
|
|
3657
3665
|
type: "submit",
|
|
3658
3666
|
class: "markup-btn markup-btn-primary",
|
|
3659
|
-
disabled: !
|
|
3667
|
+
disabled: !o.trim() || f,
|
|
3660
3668
|
children: "Continue"
|
|
3661
3669
|
})]
|
|
3662
3670
|
})
|
|
@@ -3676,20 +3684,21 @@ function ga({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "
|
|
|
3676
3684
|
}, [s]), B(() => {
|
|
3677
3685
|
u.current && !i && !a && (c(""), l.current?.focus()), u.current = i;
|
|
3678
3686
|
}, [i, a]);
|
|
3679
|
-
|
|
3687
|
+
let d = ha - s.length, f = d < 0;
|
|
3688
|
+
function p(e) {
|
|
3680
3689
|
e?.preventDefault();
|
|
3681
3690
|
let t = s.trim();
|
|
3682
|
-
!t || i || o(t);
|
|
3691
|
+
!t || i || f || o(t);
|
|
3683
3692
|
}
|
|
3684
|
-
function
|
|
3685
|
-
(e.metaKey || e.ctrlKey) && e.key === "Enter" &&
|
|
3693
|
+
function m(e) {
|
|
3694
|
+
(e.metaKey || e.ctrlKey) && e.key === "Enter" && p(e);
|
|
3686
3695
|
}
|
|
3687
|
-
let
|
|
3696
|
+
let h = s.length > 0;
|
|
3688
3697
|
function g(e) {
|
|
3689
3698
|
return /* @__PURE__ */ $("button", {
|
|
3690
3699
|
type: "submit",
|
|
3691
3700
|
class: "markup-btn markup-btn-primary",
|
|
3692
|
-
disabled: i || !s.trim() ||
|
|
3701
|
+
disabled: i || !s.trim() || f,
|
|
3693
3702
|
"aria-label": i ? "Sending…" : n,
|
|
3694
3703
|
title: i ? "Sending…" : n,
|
|
3695
3704
|
tabIndex: e,
|
|
@@ -3698,7 +3707,7 @@ function ga({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "
|
|
|
3698
3707
|
}
|
|
3699
3708
|
return /* @__PURE__ */ $("form", {
|
|
3700
3709
|
class: Q("markup-composer", h && "is-filled"),
|
|
3701
|
-
onSubmit:
|
|
3710
|
+
onSubmit: p,
|
|
3702
3711
|
children: [
|
|
3703
3712
|
/* @__PURE__ */ $("textarea", {
|
|
3704
3713
|
ref: l,
|
|
@@ -3709,7 +3718,7 @@ function ga({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "
|
|
|
3709
3718
|
maxLength: ha + 100,
|
|
3710
3719
|
value: s,
|
|
3711
3720
|
onInput: (e) => c(e.currentTarget.value),
|
|
3712
|
-
onKeyDown:
|
|
3721
|
+
onKeyDown: m,
|
|
3713
3722
|
disabled: i,
|
|
3714
3723
|
"aria-label": e
|
|
3715
3724
|
}),
|
|
@@ -3722,9 +3731,9 @@ function ga({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "
|
|
|
3722
3731
|
children: a ? /* @__PURE__ */ $("span", {
|
|
3723
3732
|
class: "markup-composer-error",
|
|
3724
3733
|
children: a
|
|
3725
|
-
}) :
|
|
3734
|
+
}) : f ? /* @__PURE__ */ $("span", {
|
|
3726
3735
|
class: "markup-composer-error",
|
|
3727
|
-
children: [Math.abs(
|
|
3736
|
+
children: [Math.abs(d), " too long"]
|
|
3728
3737
|
}) : /* @__PURE__ */ $("span", { children: "⌘↵ to send" })
|
|
3729
3738
|
}), /* @__PURE__ */ $("div", {
|
|
3730
3739
|
class: "markup-composer-actions",
|
|
@@ -3742,67 +3751,73 @@ function ga({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "
|
|
|
3742
3751
|
}
|
|
3743
3752
|
//#endregion
|
|
3744
3753
|
//#region src/runtime/ui/new-thread-popover.tsx
|
|
3745
|
-
function _a({ pageX: e, pageY: t, authorName: n, isVerified: r, identityResolving: i,
|
|
3746
|
-
let
|
|
3747
|
-
pa(
|
|
3748
|
-
let [
|
|
3754
|
+
function _a({ pageX: e, pageY: t, authorName: n, isVerified: r, identityResolving: i, signingIn: a, pending: o, error: s, screenshot: c, screenshotCapturing: l, onAuthor: u, onSignIn: d, onSubmit: f, onClose: p }) {
|
|
3755
|
+
let m = V(null);
|
|
3756
|
+
pa(m, !0);
|
|
3757
|
+
let [h, g] = z(!1), [_, v] = z(null), [y, b] = z(null), [x, S] = z(!1);
|
|
3749
3758
|
B(() => {
|
|
3750
|
-
if (!
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3754
|
-
let e =
|
|
3759
|
+
if (!c) {
|
|
3760
|
+
v(null);
|
|
3761
|
+
return;
|
|
3762
|
+
}
|
|
3763
|
+
let e = URL.createObjectURL(c);
|
|
3764
|
+
return v(e), () => URL.revokeObjectURL(e);
|
|
3765
|
+
}, [c]), B(() => {
|
|
3766
|
+
let e = m.current;
|
|
3755
3767
|
if (!e) return;
|
|
3756
3768
|
if (typeof e.showPopover == "function" && !e.matches(":popover-open")) try {
|
|
3757
3769
|
e.showPopover();
|
|
3758
3770
|
} catch {}
|
|
3759
3771
|
function t(e) {
|
|
3760
|
-
e.newState === "closed" &&
|
|
3772
|
+
e.newState === "closed" && p();
|
|
3761
3773
|
}
|
|
3762
3774
|
return e.addEventListener("toggle", t), () => e.removeEventListener("toggle", t);
|
|
3763
|
-
}, [
|
|
3764
|
-
let
|
|
3765
|
-
function
|
|
3775
|
+
}, [p]);
|
|
3776
|
+
let C = va(e - window.scrollX + 16, 12, window.innerWidth - 320 - 12), w = va(t - window.scrollY - 16, 12, window.innerHeight - 220), T = c != null, E = l || T;
|
|
3777
|
+
function D(e) {
|
|
3766
3778
|
if (e.button !== 0 || e.target?.closest("button, a, input, textarea, select")) return;
|
|
3767
|
-
let t =
|
|
3779
|
+
let t = m.current;
|
|
3768
3780
|
if (!t) return;
|
|
3769
3781
|
let n = t.getBoundingClientRect(), r = e.clientX, i = e.clientY, a = n.left, o = n.top, s = n.width, c = n.height, l = e.currentTarget, u = !1;
|
|
3770
3782
|
try {
|
|
3771
3783
|
l.setPointerCapture(e.pointerId);
|
|
3772
3784
|
} catch {}
|
|
3773
|
-
function d(
|
|
3774
|
-
|
|
3785
|
+
function d(t) {
|
|
3786
|
+
if (t.pointerId !== e.pointerId) return;
|
|
3787
|
+
let n = t.clientX - r, l = t.clientY - i;
|
|
3775
3788
|
if (!u) {
|
|
3776
|
-
if (Math.abs(
|
|
3777
|
-
u = !0,
|
|
3789
|
+
if (Math.abs(n) + Math.abs(l) < 4) return;
|
|
3790
|
+
u = !0, S(!0);
|
|
3778
3791
|
}
|
|
3779
|
-
let
|
|
3780
|
-
|
|
3781
|
-
left: va(a +
|
|
3782
|
-
top: va(o +
|
|
3792
|
+
let d = Math.max(8, window.innerWidth - s - 8), f = Math.max(8, window.innerHeight - c - 8);
|
|
3793
|
+
b({
|
|
3794
|
+
left: va(a + n, 8, d),
|
|
3795
|
+
top: va(o + l, 8, f)
|
|
3783
3796
|
});
|
|
3784
3797
|
}
|
|
3785
|
-
function f(
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
|
|
3798
|
+
function f(t) {
|
|
3799
|
+
if (t.pointerId === e.pointerId) {
|
|
3800
|
+
try {
|
|
3801
|
+
l.releasePointerCapture(t.pointerId);
|
|
3802
|
+
} catch {}
|
|
3803
|
+
l.removeEventListener("pointermove", d), l.removeEventListener("pointerup", f), l.removeEventListener("pointercancel", f), S(!1);
|
|
3804
|
+
}
|
|
3790
3805
|
}
|
|
3791
3806
|
l.addEventListener("pointermove", d), l.addEventListener("pointerup", f), l.addEventListener("pointercancel", f);
|
|
3792
3807
|
}
|
|
3793
3808
|
return /* @__PURE__ */ $("div", {
|
|
3794
|
-
ref:
|
|
3795
|
-
class: Q("markup-popover",
|
|
3809
|
+
ref: m,
|
|
3810
|
+
class: Q("markup-popover", y && "is-floating", x && "is-dragging"),
|
|
3796
3811
|
popover: "auto",
|
|
3797
3812
|
style: {
|
|
3798
|
-
"--markup-pop-x": `${
|
|
3799
|
-
"--markup-pop-y": `${
|
|
3813
|
+
"--markup-pop-x": `${y?.left ?? C}px`,
|
|
3814
|
+
"--markup-pop-y": `${y?.top ?? w}px`
|
|
3800
3815
|
},
|
|
3801
3816
|
role: "dialog",
|
|
3802
3817
|
"aria-label": "New markup",
|
|
3803
3818
|
children: [/* @__PURE__ */ $("header", {
|
|
3804
3819
|
class: "markup-popover-header",
|
|
3805
|
-
onPointerDown:
|
|
3820
|
+
onPointerDown: D,
|
|
3806
3821
|
children: [/* @__PURE__ */ $("span", {
|
|
3807
3822
|
class: "markup-eyebrow",
|
|
3808
3823
|
children: "new · markup"
|
|
@@ -3810,15 +3825,16 @@ function _a({ pageX: e, pageY: t, authorName: n, isVerified: r, identityResolvin
|
|
|
3810
3825
|
type: "button",
|
|
3811
3826
|
class: "markup-icon-btn",
|
|
3812
3827
|
"aria-label": "Discard pin",
|
|
3813
|
-
onClick:
|
|
3828
|
+
onClick: p,
|
|
3814
3829
|
children: /* @__PURE__ */ $(ia, { size: 16 })
|
|
3815
3830
|
})]
|
|
3816
3831
|
}), n == null ? /* @__PURE__ */ $(ma, {
|
|
3817
|
-
pending:
|
|
3832
|
+
pending: o,
|
|
3818
3833
|
connecting: i,
|
|
3819
|
-
|
|
3820
|
-
|
|
3821
|
-
|
|
3834
|
+
signingIn: a,
|
|
3835
|
+
onSubmit: u,
|
|
3836
|
+
onCancel: p,
|
|
3837
|
+
onSignIn: d
|
|
3822
3838
|
}) : /* @__PURE__ */ $("div", {
|
|
3823
3839
|
class: "markup-popover-body",
|
|
3824
3840
|
children: [
|
|
@@ -3840,13 +3856,13 @@ function _a({ pageX: e, pageY: t, authorName: n, isVerified: r, identityResolvin
|
|
|
3840
3856
|
label: "Feedback",
|
|
3841
3857
|
placeholder: "What's wrong, missing, or worth noting?",
|
|
3842
3858
|
submitLabel: "Post markup",
|
|
3843
|
-
pending:
|
|
3844
|
-
error:
|
|
3845
|
-
onSubmit: (e) =>
|
|
3859
|
+
pending: o,
|
|
3860
|
+
error: s,
|
|
3861
|
+
onSubmit: (e) => f(e, h && T)
|
|
3846
3862
|
}),
|
|
3847
|
-
|
|
3863
|
+
E ? /* @__PURE__ */ $("div", {
|
|
3848
3864
|
class: "markup-screenshot-row",
|
|
3849
|
-
children:
|
|
3865
|
+
children: l ? /* @__PURE__ */ $("span", {
|
|
3850
3866
|
class: "markup-screenshot-status",
|
|
3851
3867
|
children: [
|
|
3852
3868
|
/* @__PURE__ */ $("input", {
|
|
@@ -3863,14 +3879,14 @@ function _a({ pageX: e, pageY: t, authorName: n, isVerified: r, identityResolvin
|
|
|
3863
3879
|
/* @__PURE__ */ $("input", {
|
|
3864
3880
|
type: "checkbox",
|
|
3865
3881
|
class: "markup-screenshot-checkbox",
|
|
3866
|
-
checked:
|
|
3867
|
-
onChange: (e) =>
|
|
3882
|
+
checked: h,
|
|
3883
|
+
onChange: (e) => g(e.currentTarget.checked)
|
|
3868
3884
|
}),
|
|
3869
3885
|
/* @__PURE__ */ $(sa, { size: 12 }),
|
|
3870
3886
|
/* @__PURE__ */ $("span", { children: "Attach screenshot" }),
|
|
3871
|
-
|
|
3887
|
+
_ && h ? /* @__PURE__ */ $("img", {
|
|
3872
3888
|
class: "markup-screenshot-thumb",
|
|
3873
|
-
src:
|
|
3889
|
+
src: _,
|
|
3874
3890
|
alt: "Screenshot preview"
|
|
3875
3891
|
}) : null
|
|
3876
3892
|
]
|
|
@@ -3958,95 +3974,98 @@ var Sa = [
|
|
|
3958
3974
|
"😄",
|
|
3959
3975
|
"❓"
|
|
3960
3976
|
];
|
|
3961
|
-
function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, identityResolving: i,
|
|
3962
|
-
let
|
|
3963
|
-
pa(
|
|
3964
|
-
let
|
|
3965
|
-
function
|
|
3966
|
-
|
|
3977
|
+
function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, identityResolving: i, signingIn: a, canDelete: o, pending: s, error: c, hidden: l = !1, onAuthor: u, onSignIn: d, onClose: f, onReply: p, onEditComment: m, onDeleteComment: h, onToggleReaction: g, onResolve: _, onDelete: v }) {
|
|
3978
|
+
let y = V(null), b = V(null), x = V(null), S = V(null), C = V(null), [w, T] = z(!1), [E, D] = z(!1), [O, ee] = z(null), [k, A] = z(""), [j, M] = z(null), [te, ne] = z("down"), [N, re] = z(null), [ie, P] = z(null), [ae, oe] = z("down"), se = V(null), [ce, le] = z(null), [ue, F] = z(!1);
|
|
3979
|
+
pa(y, !0);
|
|
3980
|
+
let I = e.resolvedAt != null, de = Se(() => e.comments.filter((e) => !e.deleted), [e.comments]);
|
|
3981
|
+
function fe(e, t) {
|
|
3982
|
+
ee(e), A(t);
|
|
3967
3983
|
}
|
|
3968
3984
|
function L() {
|
|
3969
|
-
|
|
3985
|
+
ee(null), A("");
|
|
3970
3986
|
}
|
|
3971
3987
|
B(() => {
|
|
3972
|
-
if (!
|
|
3973
|
-
let t = e.comments.find((e) => e._id ===
|
|
3988
|
+
if (!O) return;
|
|
3989
|
+
let t = e.comments.find((e) => e._id === O);
|
|
3974
3990
|
(!t || t.deleted) && L();
|
|
3975
|
-
}, [e.comments,
|
|
3976
|
-
let
|
|
3991
|
+
}, [e.comments, O]);
|
|
3992
|
+
let pe = V(!0);
|
|
3977
3993
|
B(() => {
|
|
3978
|
-
let e =
|
|
3994
|
+
let e = S.current;
|
|
3979
3995
|
if (e) {
|
|
3980
|
-
if (
|
|
3981
|
-
|
|
3996
|
+
if (pe.current) {
|
|
3997
|
+
pe.current = !1, e.scrollTop = e.scrollHeight;
|
|
3982
3998
|
return;
|
|
3983
3999
|
}
|
|
3984
4000
|
e.scrollHeight - e.scrollTop - e.clientHeight < 80 && (e.scrollTop = e.scrollHeight);
|
|
3985
4001
|
}
|
|
3986
|
-
}, [
|
|
3987
|
-
if (!
|
|
3988
|
-
|
|
4002
|
+
}, [de.length]), B(() => {
|
|
4003
|
+
if (!w) {
|
|
4004
|
+
D(!1);
|
|
3989
4005
|
return;
|
|
3990
4006
|
}
|
|
3991
4007
|
function e(e) {
|
|
3992
|
-
|
|
4008
|
+
b.current && !e.composedPath().includes(b.current) && T(!1);
|
|
3993
4009
|
}
|
|
3994
4010
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
3995
|
-
}, [
|
|
3996
|
-
if (!
|
|
3997
|
-
|
|
4011
|
+
}, [w]), B(() => {
|
|
4012
|
+
if (!j) {
|
|
4013
|
+
re(null);
|
|
3998
4014
|
return;
|
|
3999
4015
|
}
|
|
4000
4016
|
function e(e) {
|
|
4001
|
-
|
|
4017
|
+
x.current && !e.composedPath().includes(x.current) && M(null);
|
|
4002
4018
|
}
|
|
4003
4019
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
4004
|
-
}, [
|
|
4005
|
-
if (!
|
|
4020
|
+
}, [j]), B(() => {
|
|
4021
|
+
if (!ie) return;
|
|
4006
4022
|
function e(e) {
|
|
4007
|
-
|
|
4023
|
+
se.current && !e.composedPath().includes(se.current) && P(null);
|
|
4008
4024
|
}
|
|
4009
4025
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
4010
|
-
}, [
|
|
4011
|
-
let e =
|
|
4026
|
+
}, [ie]), B(() => {
|
|
4027
|
+
let e = y.current;
|
|
4012
4028
|
if (!e) return;
|
|
4013
4029
|
if (typeof e.showPopover == "function" && !e.matches(":popover-open")) try {
|
|
4014
4030
|
e.showPopover();
|
|
4015
4031
|
} catch {}
|
|
4016
4032
|
function t(e) {
|
|
4017
|
-
e.newState === "closed" &&
|
|
4033
|
+
e.newState === "closed" && f();
|
|
4018
4034
|
}
|
|
4019
4035
|
return e.addEventListener("toggle", t), () => e.removeEventListener("toggle", t);
|
|
4020
|
-
}, [
|
|
4021
|
-
function
|
|
4036
|
+
}, [f]);
|
|
4037
|
+
function R(e) {
|
|
4022
4038
|
if (e.button !== 0 || e.target?.closest("button, a, input, textarea, select")) return;
|
|
4023
|
-
let t =
|
|
4039
|
+
let t = y.current;
|
|
4024
4040
|
if (!t) return;
|
|
4025
4041
|
let n = t.getBoundingClientRect(), r = e.clientX, i = e.clientY, a = n.left, o = n.top, s = n.width, c = n.height, l = e.currentTarget, u = !1;
|
|
4026
4042
|
try {
|
|
4027
4043
|
l.setPointerCapture(e.pointerId);
|
|
4028
4044
|
} catch {}
|
|
4029
|
-
function d(
|
|
4030
|
-
|
|
4045
|
+
function d(t) {
|
|
4046
|
+
if (t.pointerId !== e.pointerId) return;
|
|
4047
|
+
let n = t.clientX - r, l = t.clientY - i;
|
|
4031
4048
|
if (!u) {
|
|
4032
|
-
if (Math.abs(
|
|
4033
|
-
u = !0,
|
|
4049
|
+
if (Math.abs(n) + Math.abs(l) < 4) return;
|
|
4050
|
+
u = !0, F(!0);
|
|
4034
4051
|
}
|
|
4035
|
-
let
|
|
4036
|
-
|
|
4037
|
-
left: Da(a +
|
|
4038
|
-
top: Da(o +
|
|
4052
|
+
let d = Math.max(8, window.innerWidth - s - 8), f = Math.max(8, window.innerHeight - c - 8);
|
|
4053
|
+
le({
|
|
4054
|
+
left: Da(a + n, 8, d),
|
|
4055
|
+
top: Da(o + l, 8, f)
|
|
4039
4056
|
});
|
|
4040
4057
|
}
|
|
4041
|
-
function f(
|
|
4042
|
-
|
|
4043
|
-
|
|
4044
|
-
|
|
4045
|
-
|
|
4058
|
+
function f(t) {
|
|
4059
|
+
if (t.pointerId === e.pointerId) {
|
|
4060
|
+
try {
|
|
4061
|
+
l.releasePointerCapture(t.pointerId);
|
|
4062
|
+
} catch {}
|
|
4063
|
+
l.removeEventListener("pointermove", d), l.removeEventListener("pointerup", f), l.removeEventListener("pointercancel", f), F(!1);
|
|
4064
|
+
}
|
|
4046
4065
|
}
|
|
4047
4066
|
l.addEventListener("pointermove", d), l.addEventListener("pointerup", f), l.addEventListener("pointercancel", f);
|
|
4048
4067
|
}
|
|
4049
|
-
let
|
|
4068
|
+
let me = Se(() => {
|
|
4050
4069
|
let t = Tr({
|
|
4051
4070
|
anchorX: e.anchorX,
|
|
4052
4071
|
anchorY: e.anchorY,
|
|
@@ -4062,58 +4081,59 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4062
4081
|
e.anchorSelector
|
|
4063
4082
|
]);
|
|
4064
4083
|
return /* @__PURE__ */ $("div", {
|
|
4065
|
-
ref:
|
|
4084
|
+
ref: y,
|
|
4066
4085
|
id: "markup-thread-popover",
|
|
4067
|
-
class: Q("markup-popover",
|
|
4086
|
+
class: Q("markup-popover", ce && "is-floating", ue && "is-dragging", l && "is-hud-hidden"),
|
|
4068
4087
|
popover: "auto",
|
|
4069
4088
|
style: {
|
|
4070
|
-
"--markup-pop-x": `${
|
|
4071
|
-
"--markup-pop-y": `${
|
|
4089
|
+
"--markup-pop-x": `${ce?.left ?? me.left}px`,
|
|
4090
|
+
"--markup-pop-y": `${ce?.top ?? me.top}px`
|
|
4072
4091
|
},
|
|
4073
4092
|
role: "dialog",
|
|
4074
4093
|
"aria-label": "Markup thread",
|
|
4094
|
+
"aria-hidden": l || void 0,
|
|
4075
4095
|
children: [
|
|
4076
4096
|
/* @__PURE__ */ $("header", {
|
|
4077
4097
|
class: "markup-popover-header",
|
|
4078
|
-
onPointerDown:
|
|
4098
|
+
onPointerDown: R,
|
|
4079
4099
|
children: [/* @__PURE__ */ $("span", {
|
|
4080
4100
|
class: "markup-eyebrow",
|
|
4081
4101
|
children: [
|
|
4082
4102
|
"thread · ",
|
|
4083
|
-
|
|
4103
|
+
de.length,
|
|
4084
4104
|
" ",
|
|
4085
|
-
|
|
4105
|
+
de.length === 1 ? "comment" : "comments"
|
|
4086
4106
|
]
|
|
4087
4107
|
}), /* @__PURE__ */ $("div", {
|
|
4088
4108
|
class: "markup-popover-header-actions",
|
|
4089
4109
|
children: [
|
|
4090
4110
|
/* @__PURE__ */ $("div", {
|
|
4091
4111
|
class: "markup-thread-menu",
|
|
4092
|
-
ref:
|
|
4112
|
+
ref: b,
|
|
4093
4113
|
children: [/* @__PURE__ */ $("button", {
|
|
4094
4114
|
type: "button",
|
|
4095
|
-
class: Q("markup-icon-btn",
|
|
4115
|
+
class: Q("markup-icon-btn", w && "is-open"),
|
|
4096
4116
|
title: "More options",
|
|
4097
|
-
onClick: () =>
|
|
4117
|
+
onClick: () => T((e) => !e),
|
|
4098
4118
|
children: /* @__PURE__ */ $(aa, { size: 16 })
|
|
4099
|
-
}),
|
|
4119
|
+
}), w ? /* @__PURE__ */ $("div", {
|
|
4100
4120
|
class: "markup-thread-menu-list",
|
|
4101
4121
|
children: [/* @__PURE__ */ $("button", {
|
|
4102
4122
|
type: "button",
|
|
4103
4123
|
class: "markup-thread-menu-item",
|
|
4104
4124
|
onClick: () => {
|
|
4105
4125
|
let t = new URL(e.url);
|
|
4106
|
-
t.hash = `markup-thread=${e._id}`, navigator.clipboard.writeText(t.toString()).catch(() => {}),
|
|
4126
|
+
t.hash = `markup-thread=${e._id}`, navigator.clipboard.writeText(t.toString()).catch(() => {}), T(!1);
|
|
4107
4127
|
},
|
|
4108
4128
|
children: "Copy link"
|
|
4109
|
-
}),
|
|
4129
|
+
}), o ? /* @__PURE__ */ $("button", {
|
|
4110
4130
|
type: "button",
|
|
4111
|
-
class: Q("markup-thread-menu-item",
|
|
4112
|
-
disabled:
|
|
4131
|
+
class: Q("markup-thread-menu-item", E && "is-danger"),
|
|
4132
|
+
disabled: s,
|
|
4113
4133
|
onClick: () => {
|
|
4114
|
-
|
|
4134
|
+
E ? (T(!1), v()) : D(!0);
|
|
4115
4135
|
},
|
|
4116
|
-
children:
|
|
4136
|
+
children: E ? "Confirm delete" : "Delete thread…"
|
|
4117
4137
|
}) : null]
|
|
4118
4138
|
}) : null]
|
|
4119
4139
|
}),
|
|
@@ -4121,25 +4141,25 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4121
4141
|
type: "button",
|
|
4122
4142
|
class: "markup-icon-btn",
|
|
4123
4143
|
title: "Mark as resolved",
|
|
4124
|
-
disabled:
|
|
4125
|
-
onClick:
|
|
4144
|
+
disabled: s,
|
|
4145
|
+
onClick: _,
|
|
4126
4146
|
children: /* @__PURE__ */ $(oa, { size: 16 })
|
|
4127
4147
|
}) : null,
|
|
4128
4148
|
/* @__PURE__ */ $("button", {
|
|
4129
4149
|
type: "button",
|
|
4130
4150
|
class: "markup-icon-btn",
|
|
4131
4151
|
title: "Close thread",
|
|
4132
|
-
onClick:
|
|
4152
|
+
onClick: f,
|
|
4133
4153
|
children: /* @__PURE__ */ $(ia, { size: 16 })
|
|
4134
4154
|
})
|
|
4135
4155
|
]
|
|
4136
4156
|
})]
|
|
4137
4157
|
}),
|
|
4138
4158
|
/* @__PURE__ */ $("ol", {
|
|
4139
|
-
ref:
|
|
4159
|
+
ref: S,
|
|
4140
4160
|
class: "markup-comments",
|
|
4141
|
-
children:
|
|
4142
|
-
let i = !t.fromDashboard && n != null && t.authorClientId === n, a = r === 0,
|
|
4161
|
+
children: de.map((t, r) => {
|
|
4162
|
+
let i = !t.fromDashboard && n != null && t.authorClientId === n, a = r === 0, o = i && !I && !t.deleted, c = i && !I && !t.deleted && !a, l = O === t._id, u = (o || c) && !l && !t.deleted, d = j === t._id, f = N === t._id;
|
|
4143
4163
|
return /* @__PURE__ */ $("li", {
|
|
4144
4164
|
class: Q("markup-comment", t.fromDashboard && "is-team"),
|
|
4145
4165
|
children: [
|
|
@@ -4162,58 +4182,58 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4162
4182
|
}),
|
|
4163
4183
|
/* @__PURE__ */ $("div", {
|
|
4164
4184
|
class: "markup-thread-actions",
|
|
4165
|
-
children: [!
|
|
4185
|
+
children: [!I && !l ? /* @__PURE__ */ $(wa, {
|
|
4166
4186
|
comment: t,
|
|
4167
|
-
pickerOpen:
|
|
4168
|
-
pickerDirection:
|
|
4187
|
+
pickerOpen: ie === t._id,
|
|
4188
|
+
pickerDirection: ae,
|
|
4169
4189
|
pickerRef: (e) => {
|
|
4170
|
-
|
|
4190
|
+
ie === t._id && (se.current = e);
|
|
4171
4191
|
},
|
|
4172
4192
|
onPickerClick: (e) => {
|
|
4173
|
-
if (
|
|
4174
|
-
|
|
4193
|
+
if (ie === t._id) {
|
|
4194
|
+
P(null);
|
|
4175
4195
|
return;
|
|
4176
4196
|
}
|
|
4177
|
-
let n = e.currentTarget.getBoundingClientRect(), r =
|
|
4178
|
-
|
|
4197
|
+
let n = e.currentTarget.getBoundingClientRect(), r = S.current?.getBoundingClientRect();
|
|
4198
|
+
oe((r ? r.bottom - n.bottom : Infinity) < 44 ? "up" : "down"), P(t._id);
|
|
4179
4199
|
},
|
|
4180
4200
|
onPickerSelect: (e) => {
|
|
4181
|
-
|
|
4201
|
+
P(null), g(t._id, e);
|
|
4182
4202
|
}
|
|
4183
4203
|
}) : null, u ? /* @__PURE__ */ $("div", {
|
|
4184
|
-
class: Q("markup-thread-menu markup-comment-menu", d && "is-open", d &&
|
|
4204
|
+
class: Q("markup-thread-menu markup-comment-menu", d && "is-open", d && te === "up" && "is-up"),
|
|
4185
4205
|
ref: (e) => {
|
|
4186
|
-
d && (
|
|
4206
|
+
d && (x.current = e);
|
|
4187
4207
|
},
|
|
4188
4208
|
children: [/* @__PURE__ */ $("button", {
|
|
4189
4209
|
type: "button",
|
|
4190
4210
|
class: Q("markup-icon-btn", d && "is-open"),
|
|
4191
4211
|
title: "More options",
|
|
4192
4212
|
onClick: (e) => {
|
|
4193
|
-
if (
|
|
4194
|
-
|
|
4213
|
+
if (j === t._id) {
|
|
4214
|
+
M(null);
|
|
4195
4215
|
return;
|
|
4196
4216
|
}
|
|
4197
|
-
let n = e.currentTarget.getBoundingClientRect(), r =
|
|
4198
|
-
|
|
4217
|
+
let n = e.currentTarget.getBoundingClientRect(), r = S.current?.getBoundingClientRect(), i = (+!!o + +!!c) * 32 + 8 + 6;
|
|
4218
|
+
ne((r ? r.bottom - n.bottom : Infinity) < i ? "up" : "down"), M(t._id);
|
|
4199
4219
|
},
|
|
4200
4220
|
children: /* @__PURE__ */ $(aa, { size: 16 })
|
|
4201
4221
|
}), d ? /* @__PURE__ */ $("div", {
|
|
4202
4222
|
class: "markup-thread-menu-list",
|
|
4203
|
-
children: [
|
|
4223
|
+
children: [o ? /* @__PURE__ */ $("button", {
|
|
4204
4224
|
type: "button",
|
|
4205
4225
|
class: "markup-thread-menu-item",
|
|
4206
4226
|
onClick: () => {
|
|
4207
|
-
|
|
4227
|
+
M(null), fe(t._id, t.body);
|
|
4208
4228
|
},
|
|
4209
4229
|
children: "Edit"
|
|
4210
4230
|
}) : null, c ? /* @__PURE__ */ $("button", {
|
|
4211
4231
|
type: "button",
|
|
4212
|
-
class: Q("markup-thread-menu-item",
|
|
4232
|
+
class: Q("markup-thread-menu-item", f && "is-danger"),
|
|
4213
4233
|
onClick: () => {
|
|
4214
|
-
|
|
4234
|
+
f ? (M(null), h(t._id)) : re(t._id);
|
|
4215
4235
|
},
|
|
4216
|
-
children:
|
|
4236
|
+
children: f ? "Confirm delete" : "Delete…"
|
|
4217
4237
|
}) : null]
|
|
4218
4238
|
}) : null]
|
|
4219
4239
|
}) : null]
|
|
@@ -4224,34 +4244,34 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4224
4244
|
class: "markup-comment-edit-form",
|
|
4225
4245
|
onSubmit: async (e) => {
|
|
4226
4246
|
e.preventDefault();
|
|
4227
|
-
let n =
|
|
4247
|
+
let n = k.trim();
|
|
4228
4248
|
if (!n || n === t.body) {
|
|
4229
4249
|
L();
|
|
4230
4250
|
return;
|
|
4231
4251
|
}
|
|
4232
4252
|
try {
|
|
4233
|
-
await
|
|
4253
|
+
await m(t._id, n), L();
|
|
4234
4254
|
} catch {}
|
|
4235
4255
|
},
|
|
4236
4256
|
children: [/* @__PURE__ */ $("textarea", {
|
|
4237
4257
|
class: "markup-textarea",
|
|
4238
|
-
value:
|
|
4239
|
-
onInput: (e) =>
|
|
4258
|
+
value: k,
|
|
4259
|
+
onInput: (e) => A(e.currentTarget.value),
|
|
4240
4260
|
rows: 3,
|
|
4241
4261
|
autoFocus: !0,
|
|
4242
|
-
disabled:
|
|
4262
|
+
disabled: s
|
|
4243
4263
|
}), /* @__PURE__ */ $("div", {
|
|
4244
4264
|
class: "markup-comment-edit-actions",
|
|
4245
4265
|
children: [/* @__PURE__ */ $("button", {
|
|
4246
4266
|
type: "button",
|
|
4247
4267
|
class: "markup-btn markup-btn-ghost",
|
|
4248
4268
|
onClick: L,
|
|
4249
|
-
disabled:
|
|
4269
|
+
disabled: s,
|
|
4250
4270
|
children: "Cancel"
|
|
4251
4271
|
}), /* @__PURE__ */ $("button", {
|
|
4252
4272
|
type: "submit",
|
|
4253
4273
|
class: "markup-btn markup-btn-primary",
|
|
4254
|
-
disabled:
|
|
4274
|
+
disabled: s || k.trim().length === 0,
|
|
4255
4275
|
children: "Save"
|
|
4256
4276
|
})]
|
|
4257
4277
|
})]
|
|
@@ -4266,13 +4286,13 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4266
4286
|
}),
|
|
4267
4287
|
!l && t.reactions.length > 0 ? /* @__PURE__ */ $(Ta, {
|
|
4268
4288
|
comment: t,
|
|
4269
|
-
isResolved:
|
|
4270
|
-
onToggle: (e) =>
|
|
4289
|
+
isResolved: I,
|
|
4290
|
+
onToggle: (e) => g(t._id, e)
|
|
4271
4291
|
}) : null,
|
|
4272
4292
|
r === 0 && e.screenshotUrl ? /* @__PURE__ */ $("button", {
|
|
4273
4293
|
type: "button",
|
|
4274
4294
|
class: "markup-comment-screenshot",
|
|
4275
|
-
onClick: () =>
|
|
4295
|
+
onClick: () => C.current?.showModal(),
|
|
4276
4296
|
children: /* @__PURE__ */ $("img", {
|
|
4277
4297
|
src: e.screenshotUrl,
|
|
4278
4298
|
alt: "Screenshot"
|
|
@@ -4283,15 +4303,15 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4283
4303
|
})
|
|
4284
4304
|
}),
|
|
4285
4305
|
e.screenshotUrl ? /* @__PURE__ */ $("dialog", {
|
|
4286
|
-
ref:
|
|
4306
|
+
ref: C,
|
|
4287
4307
|
class: "markup-lightbox",
|
|
4288
|
-
onClick: () =>
|
|
4308
|
+
onClick: () => C.current?.close(),
|
|
4289
4309
|
children: [/* @__PURE__ */ $("button", {
|
|
4290
4310
|
type: "button",
|
|
4291
4311
|
class: "markup-lightbox-close markup-icon-btn",
|
|
4292
4312
|
"aria-label": "Close screenshot",
|
|
4293
4313
|
onClick: (e) => {
|
|
4294
|
-
e.stopPropagation(),
|
|
4314
|
+
e.stopPropagation(), C.current?.close();
|
|
4295
4315
|
},
|
|
4296
4316
|
children: /* @__PURE__ */ $(ia, { size: 16 })
|
|
4297
4317
|
}), /* @__PURE__ */ $("img", {
|
|
@@ -4302,11 +4322,12 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4302
4322
|
})]
|
|
4303
4323
|
}) : null,
|
|
4304
4324
|
t == null ? /* @__PURE__ */ $(ma, {
|
|
4305
|
-
pending:
|
|
4325
|
+
pending: s,
|
|
4306
4326
|
connecting: i,
|
|
4307
|
-
|
|
4308
|
-
|
|
4309
|
-
|
|
4327
|
+
signingIn: a,
|
|
4328
|
+
onSubmit: u,
|
|
4329
|
+
onCancel: f,
|
|
4330
|
+
onSignIn: d
|
|
4310
4331
|
}) : /* @__PURE__ */ $("div", {
|
|
4311
4332
|
class: "markup-popover-body",
|
|
4312
4333
|
children: [/* @__PURE__ */ $("p", {
|
|
@@ -4327,9 +4348,9 @@ function Ca({ thread: e, authorName: t, currentClientId: n, isVerified: r, ident
|
|
|
4327
4348
|
placeholder: "Write a reply…",
|
|
4328
4349
|
submitLabel: "Reply",
|
|
4329
4350
|
initialFocus: !1,
|
|
4330
|
-
pending:
|
|
4331
|
-
error:
|
|
4332
|
-
onSubmit:
|
|
4351
|
+
pending: s,
|
|
4352
|
+
error: c,
|
|
4353
|
+
onSubmit: p
|
|
4333
4354
|
})]
|
|
4334
4355
|
})
|
|
4335
4356
|
]
|
|
@@ -4501,17 +4522,16 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4501
4522
|
e = !0, t && clearTimeout(t);
|
|
4502
4523
|
};
|
|
4503
4524
|
}, [m]);
|
|
4504
|
-
let j =
|
|
4525
|
+
let [j, M] = z(null);
|
|
4505
4526
|
B(() => {
|
|
4506
4527
|
let t = new rr(e.replace(/\.convex\.site(\/.*)?$/, ".convex.cloud"));
|
|
4507
|
-
return
|
|
4508
|
-
t.close(),
|
|
4528
|
+
return M(t), () => {
|
|
4529
|
+
t.close(), M((e) => e === t ? null : e);
|
|
4509
4530
|
};
|
|
4510
4531
|
}, [e]);
|
|
4511
|
-
let
|
|
4532
|
+
let te = V(!1);
|
|
4512
4533
|
B(() => {
|
|
4513
|
-
|
|
4514
|
-
if (!(!e || !k)) return M.current = !1, b(null), e.onUpdate(qt("widget/queries:subscribeThreadsForRoute"), {
|
|
4534
|
+
if (!(!j || !k)) return b(null), j.onUpdate(qt("widget/queries:subscribeThreadsForRoute"), {
|
|
4515
4535
|
subscriptionToken: k,
|
|
4516
4536
|
route: r,
|
|
4517
4537
|
viewerClientId: s?.clientId ?? void 0
|
|
@@ -4519,33 +4539,34 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4519
4539
|
e !== void 0 && o(e);
|
|
4520
4540
|
});
|
|
4521
4541
|
}, [
|
|
4542
|
+
j,
|
|
4522
4543
|
k,
|
|
4523
4544
|
r,
|
|
4524
4545
|
s?.clientId
|
|
4525
4546
|
]), B(() => {
|
|
4526
|
-
if (
|
|
4547
|
+
if (te.current) return;
|
|
4527
4548
|
let e = window.location.hash.match(/^#markup-thread=(.+)$/);
|
|
4528
|
-
if (
|
|
4529
|
-
|
|
4530
|
-
|
|
4549
|
+
if (e) {
|
|
4550
|
+
let t = decodeURIComponent(e[1] ?? "");
|
|
4551
|
+
a.find((e) => e._id === t) && g({
|
|
4552
|
+
kind: "thread",
|
|
4553
|
+
threadId: t
|
|
4554
|
+
}), history.replaceState(null, "", window.location.pathname + window.location.search);
|
|
4531
4555
|
}
|
|
4532
|
-
|
|
4533
|
-
a.find((e) => e._id === t) && (M.current = !0, g({
|
|
4534
|
-
kind: "thread",
|
|
4535
|
-
threadId: t
|
|
4536
|
-
}), history.replaceState(null, "", window.location.pathname + window.location.search));
|
|
4556
|
+
te.current = !0;
|
|
4537
4557
|
}, [a]), B(() => {
|
|
4538
|
-
|
|
4539
|
-
|
|
4558
|
+
let e = !0;
|
|
4559
|
+
function t() {
|
|
4560
|
+
e && i(window.location.pathname);
|
|
4540
4561
|
}
|
|
4541
|
-
window.addEventListener("popstate",
|
|
4542
|
-
let
|
|
4543
|
-
return history.pushState = function(...
|
|
4544
|
-
|
|
4545
|
-
}, history.replaceState = function(...
|
|
4546
|
-
|
|
4562
|
+
window.addEventListener("popstate", t);
|
|
4563
|
+
let n = history.pushState, r = history.replaceState;
|
|
4564
|
+
return history.pushState = function(...e) {
|
|
4565
|
+
n.apply(this, e), t();
|
|
4566
|
+
}, history.replaceState = function(...e) {
|
|
4567
|
+
r.apply(this, e), t();
|
|
4547
4568
|
}, () => {
|
|
4548
|
-
window.removeEventListener("popstate",
|
|
4569
|
+
e = !1, window.removeEventListener("popstate", t);
|
|
4549
4570
|
};
|
|
4550
4571
|
}, []), B(() => {
|
|
4551
4572
|
function e(e) {
|
|
@@ -4561,21 +4582,24 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4561
4582
|
let e = window.setTimeout(() => w(!1), 5e3);
|
|
4562
4583
|
return () => window.clearTimeout(e);
|
|
4563
4584
|
}, [C, x]), B(() => {
|
|
4564
|
-
|
|
4565
|
-
|
|
4585
|
+
let e = null;
|
|
4586
|
+
function t() {
|
|
4587
|
+
e ??= requestAnimationFrame(() => {
|
|
4588
|
+
e = null, T((e) => e + 1);
|
|
4589
|
+
});
|
|
4566
4590
|
}
|
|
4567
|
-
window.addEventListener("scroll",
|
|
4568
|
-
let
|
|
4569
|
-
return
|
|
4570
|
-
window.removeEventListener("scroll",
|
|
4591
|
+
window.addEventListener("scroll", t, { passive: !0 }), window.addEventListener("resize", t);
|
|
4592
|
+
let n = new ResizeObserver(t);
|
|
4593
|
+
return n.observe(document.body), () => {
|
|
4594
|
+
window.removeEventListener("scroll", t), window.removeEventListener("resize", t), n.disconnect(), e != null && cancelAnimationFrame(e);
|
|
4571
4595
|
};
|
|
4572
4596
|
}, []);
|
|
4573
|
-
let
|
|
4597
|
+
let ne = H(() => {
|
|
4574
4598
|
b(null), g({ kind: "placing" });
|
|
4575
4599
|
}, []), N = H(() => {
|
|
4576
4600
|
g({ kind: "idle" }), b(null);
|
|
4577
|
-
}, []),
|
|
4578
|
-
let r = t + window.scrollX, i = n + window.scrollY, a = ++
|
|
4601
|
+
}, []), re = V(0), ie = H((e, t, n) => {
|
|
4602
|
+
let r = t + window.scrollX, i = n + window.scrollY, a = ++re.current;
|
|
4579
4603
|
g({
|
|
4580
4604
|
kind: "composing-new",
|
|
4581
4605
|
coords: e,
|
|
@@ -4594,7 +4618,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4594
4618
|
screenshotCapturing: !1
|
|
4595
4619
|
});
|
|
4596
4620
|
});
|
|
4597
|
-
}, []),
|
|
4621
|
+
}, []), P = H((e, t) => {
|
|
4598
4622
|
if (!s) return;
|
|
4599
4623
|
let n = {
|
|
4600
4624
|
...s,
|
|
@@ -4602,15 +4626,23 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4602
4626
|
email: t
|
|
4603
4627
|
};
|
|
4604
4628
|
Mr(n), c(n);
|
|
4605
|
-
}, [s]),
|
|
4606
|
-
|
|
4607
|
-
|
|
4608
|
-
|
|
4609
|
-
|
|
4610
|
-
|
|
4611
|
-
|
|
4629
|
+
}, [s]), [ae, oe] = z(!1), se = H(async () => {
|
|
4630
|
+
if (!ae) {
|
|
4631
|
+
b(null), oe(!0);
|
|
4632
|
+
try {
|
|
4633
|
+
let n = Aa(await Nr(e, t));
|
|
4634
|
+
Mr(n), c(n);
|
|
4635
|
+
} catch (e) {
|
|
4636
|
+
b(e instanceof Error ? e.message : "Sign-in failed");
|
|
4637
|
+
} finally {
|
|
4638
|
+
oe(!1);
|
|
4639
|
+
}
|
|
4612
4640
|
}
|
|
4613
|
-
}, [
|
|
4641
|
+
}, [
|
|
4642
|
+
e,
|
|
4643
|
+
t,
|
|
4644
|
+
ae
|
|
4645
|
+
]), ce = H(async (e, t) => {
|
|
4614
4646
|
if (!(h.kind !== "composing-new" || !s?.name)) {
|
|
4615
4647
|
v(!0), b(null);
|
|
4616
4648
|
try {
|
|
@@ -4621,10 +4653,9 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4621
4653
|
headers: { "Content-Type": h.screenshot.type || "image/png" },
|
|
4622
4654
|
body: h.screenshot
|
|
4623
4655
|
});
|
|
4624
|
-
if (t.ok) {
|
|
4625
|
-
|
|
4626
|
-
|
|
4627
|
-
}
|
|
4656
|
+
if (!t.ok) throw Error(`Screenshot upload failed (${t.status})`);
|
|
4657
|
+
let { storageId: r } = await t.json();
|
|
4658
|
+
n = r;
|
|
4628
4659
|
}
|
|
4629
4660
|
let i = await m.createThread({
|
|
4630
4661
|
url: window.location.href,
|
|
@@ -4657,7 +4688,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4657
4688
|
s,
|
|
4658
4689
|
h,
|
|
4659
4690
|
r
|
|
4660
|
-
]),
|
|
4691
|
+
]), le = H(async () => {
|
|
4661
4692
|
if (h.kind !== "thread") return;
|
|
4662
4693
|
let e = h.threadId;
|
|
4663
4694
|
v(!0), b(null);
|
|
@@ -4668,7 +4699,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4668
4699
|
} finally {
|
|
4669
4700
|
v(!1);
|
|
4670
4701
|
}
|
|
4671
|
-
}, [m, h]),
|
|
4702
|
+
}, [m, h]), ue = H(async () => {
|
|
4672
4703
|
if (h.kind !== "thread") return;
|
|
4673
4704
|
let e = h.threadId;
|
|
4674
4705
|
v(!0), b(null);
|
|
@@ -4683,7 +4714,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4683
4714
|
m,
|
|
4684
4715
|
h,
|
|
4685
4716
|
s?.clientId
|
|
4686
|
-
]),
|
|
4717
|
+
]), F = H(async (e) => {
|
|
4687
4718
|
if (h.kind !== "thread" || !s?.name) return;
|
|
4688
4719
|
let t = h.threadId;
|
|
4689
4720
|
v(!0), b(null);
|
|
@@ -4703,7 +4734,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4703
4734
|
m,
|
|
4704
4735
|
s,
|
|
4705
4736
|
h
|
|
4706
|
-
]),
|
|
4737
|
+
]), I = H(async (e, t) => {
|
|
4707
4738
|
if (h.kind !== "thread" || !s) return;
|
|
4708
4739
|
let n = h.threadId;
|
|
4709
4740
|
v(!0), b(null);
|
|
@@ -4719,7 +4750,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4719
4750
|
m,
|
|
4720
4751
|
s,
|
|
4721
4752
|
h
|
|
4722
|
-
]),
|
|
4753
|
+
]), de = H(async (e) => {
|
|
4723
4754
|
if (h.kind !== "thread" || !s) return;
|
|
4724
4755
|
let t = h.threadId;
|
|
4725
4756
|
v(!0), b(null);
|
|
@@ -4735,7 +4766,7 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4735
4766
|
m,
|
|
4736
4767
|
s,
|
|
4737
4768
|
h
|
|
4738
|
-
]),
|
|
4769
|
+
]), fe = H(async (e, t) => {
|
|
4739
4770
|
if (h.kind !== "thread" || !s) return;
|
|
4740
4771
|
let n = h.threadId;
|
|
4741
4772
|
b(null);
|
|
@@ -4752,12 +4783,12 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4752
4783
|
m,
|
|
4753
4784
|
s,
|
|
4754
4785
|
h
|
|
4755
|
-
]),
|
|
4786
|
+
]), L = h.kind === "thread" ? a.find((e) => e._id === h.threadId) ?? null : null, pe = O || s?.clientId != null && s.clientId === L?.authorClientId;
|
|
4756
4787
|
return B(() => {
|
|
4757
|
-
h.kind === "thread" &&
|
|
4788
|
+
h.kind === "thread" && L == null && N();
|
|
4758
4789
|
}, [
|
|
4759
4790
|
h,
|
|
4760
|
-
|
|
4791
|
+
L,
|
|
4761
4792
|
N
|
|
4762
4793
|
]), /* @__PURE__ */ $("div", {
|
|
4763
4794
|
class: "markup-root",
|
|
@@ -4789,46 +4820,49 @@ function ja({ apiUrl: e, apiKey: t, position: n = "bottom-right" }) {
|
|
|
4789
4820
|
}) : null]
|
|
4790
4821
|
}),
|
|
4791
4822
|
h.kind === "placing" ? /* @__PURE__ */ $(xa, {
|
|
4792
|
-
onPlace:
|
|
4823
|
+
onPlace: ie,
|
|
4793
4824
|
onCancel: N
|
|
4794
4825
|
}) : null,
|
|
4795
|
-
h.kind === "thread" &&
|
|
4796
|
-
thread:
|
|
4826
|
+
h.kind === "thread" && L ? /* @__PURE__ */ $(Ca, {
|
|
4827
|
+
thread: L,
|
|
4797
4828
|
authorName: D,
|
|
4798
4829
|
currentClientId: s?.clientId ?? null,
|
|
4799
4830
|
isVerified: O,
|
|
4800
4831
|
identityResolving: ee,
|
|
4801
|
-
|
|
4832
|
+
signingIn: ae,
|
|
4833
|
+
canDelete: pe,
|
|
4802
4834
|
pending: _,
|
|
4803
4835
|
error: y,
|
|
4804
|
-
|
|
4805
|
-
|
|
4836
|
+
hidden: x,
|
|
4837
|
+
onAuthor: P,
|
|
4838
|
+
onSignIn: se,
|
|
4806
4839
|
onClose: N,
|
|
4807
|
-
onReply:
|
|
4808
|
-
onEditComment:
|
|
4809
|
-
onDeleteComment:
|
|
4810
|
-
onToggleReaction:
|
|
4811
|
-
onDelete:
|
|
4812
|
-
onResolve:
|
|
4813
|
-
},
|
|
4840
|
+
onReply: F,
|
|
4841
|
+
onEditComment: I,
|
|
4842
|
+
onDeleteComment: de,
|
|
4843
|
+
onToggleReaction: fe,
|
|
4844
|
+
onDelete: le,
|
|
4845
|
+
onResolve: ue
|
|
4846
|
+
}, L._id) : null,
|
|
4814
4847
|
h.kind === "composing-new" ? /* @__PURE__ */ $(_a, {
|
|
4815
4848
|
pageX: h.pageX,
|
|
4816
4849
|
pageY: h.pageY,
|
|
4817
4850
|
authorName: D,
|
|
4818
4851
|
isVerified: O,
|
|
4819
4852
|
identityResolving: ee,
|
|
4853
|
+
signingIn: ae,
|
|
4820
4854
|
pending: _,
|
|
4821
4855
|
error: y,
|
|
4822
4856
|
screenshot: h.screenshot,
|
|
4823
4857
|
screenshotCapturing: h.screenshotCapturing,
|
|
4824
|
-
onAuthor:
|
|
4825
|
-
onSignIn:
|
|
4826
|
-
onSubmit:
|
|
4858
|
+
onAuthor: P,
|
|
4859
|
+
onSignIn: se,
|
|
4860
|
+
onSubmit: ce,
|
|
4827
4861
|
onClose: N
|
|
4828
4862
|
}) : null,
|
|
4829
4863
|
!x || h.kind === "placing" || h.kind === "composing-new" ? /* @__PURE__ */ $(ua, {
|
|
4830
4864
|
active: h.kind === "placing",
|
|
4831
|
-
onToggle: () => h.kind === "placing" ? N() :
|
|
4865
|
+
onToggle: () => h.kind === "placing" ? N() : ne(),
|
|
4832
4866
|
onHide: () => {
|
|
4833
4867
|
S(!0), w(!0);
|
|
4834
4868
|
},
|