@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.
Files changed (3) hide show
  1. package/README.md +6 -6
  2. package/dist/widget.js +328 -294
  3. 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), P(e.__P, o, n, e.__n, e.__P.namespaceURI, 32 & n.__u ? [r] : null, i, r ?? w(n), !!(32 & n.__u), a), o.__v = n.__v, o.__.__k[o.__i] = o, re(i, o, a), n.__e = n.__ = null, o.__e != r && E(o);
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 = P(e, p, f, i, a, o, s, c, l, u), g = p.__e, p.ref && f.ref != p.ref && (f.ref && oe(f.ref, null, p), u.push(p.ref, p.__c || g, p)), _ == null && g != null && (_ = g), (y = !!(4 & p.__u)) || f.__k === p.__k ? (c = A(p, c, e, y), y && f.__e && (f.__e = null)) : typeof p.type == "function" && v !== void 0 ? c = v : g && (c = g.nextSibling), p.__u &= -7);
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 N(e) {
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 P(e, n, r, i, a, o, s, c, l, u) {
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 ? ie(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);
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
- ne(n);
155
+ re(n);
156
156
  }
157
- else n.__e = r.__e, n.__k = r.__k, e.then || ne(n);
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 ne(e) {
164
- e && (e.__c && (e.__c.__e = !0), e.__k && e.__k.some(ne));
163
+ function re(e) {
164
+ e && (e.__c && (e.__c.__e = !0), e.__k && e.__k.some(re));
165
165
  }
166
- function re(e, n, r) {
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 ie(e) {
179
- return typeof e != "object" || !e || e.__b > 0 ? e : _(e) ? e.map(ie) : v({}, e);
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 = [], P(r, n = (!a && i || r).__k = b(S, null, [n]), o || m, m, r.namespaceURI, !a && i ? [i] : o ? null : r.firstChild ? e.call(r.childNodes) : null, s, !a && i ? i : o ? o.__e : r.firstChild, a, c), re(s, n, c);
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 = N(!1), p = N(!0);
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, fe || t), fe = 0;
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 fe = 1, xe(ke, e);
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 fe = 5, Se(function() {
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 fe = 8, Se(function() {
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 && (L === I ? (t.__h = [], I.__h = [], t.__.some(function(e) {
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)), L = I;
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 && de === R.requestAnimationFrame || ((de = R.requestAnimationFrame) || Te)(Ce)), t.__H.__.some(function(e) {
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
- })), L = I = null;
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 _(e) {
3504
- let t = e.clientX - s, n = e.clientY - l;
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(t) + Math.abs(n) < 4) return;
3509
+ if (Math.abs(n) + Math.abs(r) < 4) return;
3507
3510
  g = !0, d.current = !0, u(!0);
3508
3511
  }
3509
- let r = Math.max(8, window.innerWidth - m - 8), i = Math.max(8, window.innerHeight - h - 8);
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 + t, 8, r),
3512
- top: da(p + n, 8, i)
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
- if (n.removeEventListener("pointermove", _), n.removeEventListener("pointerup", v), n.removeEventListener("pointercancel", v), g) {
3520
- let t = e.clientX < window.innerWidth / 2 ? "bottom-left" : "bottom-right";
3521
- t !== r && i?.(t);
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
- n.addEventListener("pointermove", _), n.addEventListener("pointerup", v), n.addEventListener("pointercancel", v);
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, onSubmit: n, onCancel: r, onSignIn: i }) {
3590
- let [a, o] = z(""), [s, c] = z(""), l = V(null);
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
- l.current?.focus();
3600
+ u.current?.focus();
3593
3601
  }, []);
3594
- function u(r) {
3595
- r?.preventDefault();
3596
- let i = a.trim();
3597
- !i || e || t || n(i, s.trim() || void 0);
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 d = e || t;
3607
+ let f = e || t;
3600
3608
  return /* @__PURE__ */ $("form", {
3601
3609
  class: "markup-author-prompt",
3602
- onSubmit: u,
3610
+ onSubmit: d,
3603
3611
  children: [
3604
- i ? /* @__PURE__ */ $(S, { children: [/* @__PURE__ */ $("button", {
3612
+ a ? /* @__PURE__ */ $(S, { children: [/* @__PURE__ */ $("button", {
3605
3613
  type: "button",
3606
3614
  class: "markup-btn markup-btn-primary",
3607
- onClick: i,
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: l,
3626
+ ref: u,
3619
3627
  class: "markup-input",
3620
3628
  type: "text",
3621
3629
  name: "name",
3622
3630
  placeholder: "Your name",
3623
- value: a,
3631
+ value: o,
3624
3632
  maxLength: 80,
3625
3633
  autoComplete: "name",
3626
- onInput: (e) => o(e.currentTarget.value),
3627
- disabled: d,
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: s,
3643
+ value: c,
3636
3644
  maxLength: 254,
3637
3645
  autoComplete: "email",
3638
- onInput: (e) => c(e.currentTarget.value),
3639
- disabled: d,
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: r,
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: !a.trim() || d,
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
- function d(e) {
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 f(e) {
3685
- (e.metaKey || e.ctrlKey) && e.key === "Enter" && d(e);
3693
+ function m(e) {
3694
+ (e.metaKey || e.ctrlKey) && e.key === "Enter" && p(e);
3686
3695
  }
3687
- let p = ha - s.length, m = p < 0, h = s.length > 0;
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() || m,
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: d,
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: f,
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
- }) : m ? /* @__PURE__ */ $("span", {
3734
+ }) : f ? /* @__PURE__ */ $("span", {
3726
3735
  class: "markup-composer-error",
3727
- children: [Math.abs(p), " too long"]
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, pending: a, error: o, screenshot: s, screenshotCapturing: c, onAuthor: l, onSignIn: u, onSubmit: d, onClose: f }) {
3746
- let p = V(null);
3747
- pa(p, !0);
3748
- let [m, h] = z(!1), [g, _] = z(null), [v, y] = z(null), [b, x] = z(!1);
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 (!s) return;
3751
- let e = URL.createObjectURL(s);
3752
- return _(e), () => URL.revokeObjectURL(e);
3753
- }, [s]), B(() => {
3754
- let e = p.current;
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" && f();
3772
+ e.newState === "closed" && p();
3761
3773
  }
3762
3774
  return e.addEventListener("toggle", t), () => e.removeEventListener("toggle", t);
3763
- }, [f]);
3764
- let S = va(e - window.scrollX + 16, 12, window.innerWidth - 320 - 12), C = va(t - window.scrollY - 16, 12, window.innerHeight - 220), w = s != null, T = c || w;
3765
- function E(e) {
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 = p.current;
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(e) {
3774
- let t = e.clientX - r, n = e.clientY - i;
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(t) + Math.abs(n) < 4) return;
3777
- u = !0, x(!0);
3789
+ if (Math.abs(n) + Math.abs(l) < 4) return;
3790
+ u = !0, S(!0);
3778
3791
  }
3779
- let l = Math.max(8, window.innerWidth - s - 8), d = Math.max(8, window.innerHeight - c - 8);
3780
- y({
3781
- left: va(a + t, 8, l),
3782
- top: va(o + n, 8, d)
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(e) {
3786
- try {
3787
- l.releasePointerCapture(e.pointerId);
3788
- } catch {}
3789
- l.removeEventListener("pointermove", d), l.removeEventListener("pointerup", f), l.removeEventListener("pointercancel", f), x(!1);
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: p,
3795
- class: Q("markup-popover", v && "is-floating", b && "is-dragging"),
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": `${v?.left ?? S}px`,
3799
- "--markup-pop-y": `${v?.top ?? C}px`
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: E,
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: f,
3828
+ onClick: p,
3814
3829
  children: /* @__PURE__ */ $(ia, { size: 16 })
3815
3830
  })]
3816
3831
  }), n == null ? /* @__PURE__ */ $(ma, {
3817
- pending: a,
3832
+ pending: o,
3818
3833
  connecting: i,
3819
- onSubmit: l,
3820
- onCancel: f,
3821
- onSignIn: u
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: a,
3844
- error: o,
3845
- onSubmit: (e) => d(e, m && w)
3859
+ pending: o,
3860
+ error: s,
3861
+ onSubmit: (e) => f(e, h && T)
3846
3862
  }),
3847
- T ? /* @__PURE__ */ $("div", {
3863
+ E ? /* @__PURE__ */ $("div", {
3848
3864
  class: "markup-screenshot-row",
3849
- children: c ? /* @__PURE__ */ $("span", {
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: m,
3867
- onChange: (e) => h(e.currentTarget.checked)
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
- g && m ? /* @__PURE__ */ $("img", {
3887
+ _ && h ? /* @__PURE__ */ $("img", {
3872
3888
  class: "markup-screenshot-thumb",
3873
- src: g,
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, canDelete: a, pending: o, error: s, onAuthor: c, onSignIn: l, onClose: u, onReply: d, onEditComment: f, onDeleteComment: p, onToggleReaction: m, onResolve: h, onDelete: g }) {
3962
- let _ = V(null), v = V(null), y = V(null), b = V(null), x = V(null), [S, C] = z(!1), [w, T] = z(!1), [E, D] = z(null), [O, ee] = z(""), [k, A] = z(null), [j, M] = z("down"), [te, N] = z(null), [P, ne] = z(null), [re, ie] = z("down"), ae = V(null), [oe, se] = z(null), [ce, le] = z(!1);
3963
- pa(_, !0);
3964
- let ue = e.resolvedAt != null, F = Se(() => e.comments.filter((e) => !e.deleted), [e.comments]);
3965
- function I(e, t) {
3966
- D(e), ee(t);
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
- D(null), ee("");
3985
+ ee(null), A("");
3970
3986
  }
3971
3987
  B(() => {
3972
- if (!E) return;
3973
- let t = e.comments.find((e) => e._id === E);
3988
+ if (!O) return;
3989
+ let t = e.comments.find((e) => e._id === O);
3974
3990
  (!t || t.deleted) && L();
3975
- }, [e.comments, E]);
3976
- let de = V(!0);
3991
+ }, [e.comments, O]);
3992
+ let pe = V(!0);
3977
3993
  B(() => {
3978
- let e = b.current;
3994
+ let e = S.current;
3979
3995
  if (e) {
3980
- if (de.current) {
3981
- de.current = !1, e.scrollTop = e.scrollHeight;
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
- }, [F.length]), B(() => {
3987
- if (!S) {
3988
- T(!1);
4002
+ }, [de.length]), B(() => {
4003
+ if (!w) {
4004
+ D(!1);
3989
4005
  return;
3990
4006
  }
3991
4007
  function e(e) {
3992
- v.current && !e.composedPath().includes(v.current) && C(!1);
4008
+ b.current && !e.composedPath().includes(b.current) && T(!1);
3993
4009
  }
3994
4010
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
3995
- }, [S]), B(() => {
3996
- if (!k) {
3997
- N(null);
4011
+ }, [w]), B(() => {
4012
+ if (!j) {
4013
+ re(null);
3998
4014
  return;
3999
4015
  }
4000
4016
  function e(e) {
4001
- y.current && !e.composedPath().includes(y.current) && A(null);
4017
+ x.current && !e.composedPath().includes(x.current) && M(null);
4002
4018
  }
4003
4019
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
4004
- }, [k]), B(() => {
4005
- if (!P) return;
4020
+ }, [j]), B(() => {
4021
+ if (!ie) return;
4006
4022
  function e(e) {
4007
- ae.current && !e.composedPath().includes(ae.current) && ne(null);
4023
+ se.current && !e.composedPath().includes(se.current) && P(null);
4008
4024
  }
4009
4025
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
4010
- }, [P]), B(() => {
4011
- let e = _.current;
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" && u();
4033
+ e.newState === "closed" && f();
4018
4034
  }
4019
4035
  return e.addEventListener("toggle", t), () => e.removeEventListener("toggle", t);
4020
- }, [u]);
4021
- function fe(e) {
4036
+ }, [f]);
4037
+ function R(e) {
4022
4038
  if (e.button !== 0 || e.target?.closest("button, a, input, textarea, select")) return;
4023
- let t = _.current;
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(e) {
4030
- let t = e.clientX - r, n = e.clientY - i;
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(t) + Math.abs(n) < 4) return;
4033
- u = !0, le(!0);
4049
+ if (Math.abs(n) + Math.abs(l) < 4) return;
4050
+ u = !0, F(!0);
4034
4051
  }
4035
- let l = Math.max(8, window.innerWidth - s - 8), d = Math.max(8, window.innerHeight - c - 8);
4036
- se({
4037
- left: Da(a + t, 8, l),
4038
- top: Da(o + n, 8, d)
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(e) {
4042
- try {
4043
- l.releasePointerCapture(e.pointerId);
4044
- } catch {}
4045
- l.removeEventListener("pointermove", d), l.removeEventListener("pointerup", f), l.removeEventListener("pointercancel", f), le(!1);
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 pe = Se(() => {
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", oe && "is-floating", ce && "is-dragging"),
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": `${oe?.left ?? pe.left}px`,
4071
- "--markup-pop-y": `${oe?.top ?? pe.top}px`
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: fe,
4098
+ onPointerDown: R,
4079
4099
  children: [/* @__PURE__ */ $("span", {
4080
4100
  class: "markup-eyebrow",
4081
4101
  children: [
4082
4102
  "thread · ",
4083
- F.length,
4103
+ de.length,
4084
4104
  " ",
4085
- F.length === 1 ? "comment" : "comments"
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: v,
4112
+ ref: b,
4093
4113
  children: [/* @__PURE__ */ $("button", {
4094
4114
  type: "button",
4095
- class: Q("markup-icon-btn", S && "is-open"),
4115
+ class: Q("markup-icon-btn", w && "is-open"),
4096
4116
  title: "More options",
4097
- onClick: () => C((e) => !e),
4117
+ onClick: () => T((e) => !e),
4098
4118
  children: /* @__PURE__ */ $(aa, { size: 16 })
4099
- }), S ? /* @__PURE__ */ $("div", {
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(() => {}), C(!1);
4126
+ t.hash = `markup-thread=${e._id}`, navigator.clipboard.writeText(t.toString()).catch(() => {}), T(!1);
4107
4127
  },
4108
4128
  children: "Copy link"
4109
- }), a ? /* @__PURE__ */ $("button", {
4129
+ }), o ? /* @__PURE__ */ $("button", {
4110
4130
  type: "button",
4111
- class: Q("markup-thread-menu-item", w && "is-danger"),
4112
- disabled: o,
4131
+ class: Q("markup-thread-menu-item", E && "is-danger"),
4132
+ disabled: s,
4113
4133
  onClick: () => {
4114
- w ? (C(!1), g()) : T(!0);
4134
+ E ? (T(!1), v()) : D(!0);
4115
4135
  },
4116
- children: w ? "Confirm delete" : "Delete thread…"
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: o,
4125
- onClick: h,
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: u,
4152
+ onClick: f,
4133
4153
  children: /* @__PURE__ */ $(ia, { size: 16 })
4134
4154
  })
4135
4155
  ]
4136
4156
  })]
4137
4157
  }),
4138
4158
  /* @__PURE__ */ $("ol", {
4139
- ref: b,
4159
+ ref: S,
4140
4160
  class: "markup-comments",
4141
- children: F.map((t, r) => {
4142
- let i = !t.fromDashboard && n != null && t.authorClientId === n, a = r === 0, s = i && !ue && !t.deleted, c = i && !ue && !t.deleted && !a, l = E === t._id, u = (s || c) && !l && !t.deleted, d = k === t._id, h = te === t._id;
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: [!ue && !l ? /* @__PURE__ */ $(wa, {
4185
+ children: [!I && !l ? /* @__PURE__ */ $(wa, {
4166
4186
  comment: t,
4167
- pickerOpen: P === t._id,
4168
- pickerDirection: re,
4187
+ pickerOpen: ie === t._id,
4188
+ pickerDirection: ae,
4169
4189
  pickerRef: (e) => {
4170
- P === t._id && (ae.current = e);
4190
+ ie === t._id && (se.current = e);
4171
4191
  },
4172
4192
  onPickerClick: (e) => {
4173
- if (P === t._id) {
4174
- ne(null);
4193
+ if (ie === t._id) {
4194
+ P(null);
4175
4195
  return;
4176
4196
  }
4177
- let n = e.currentTarget.getBoundingClientRect(), r = b.current?.getBoundingClientRect();
4178
- ie((r ? r.bottom - n.bottom : Infinity) < 44 ? "up" : "down"), ne(t._id);
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
- ne(null), m(t._id, e);
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 && j === "up" && "is-up"),
4204
+ class: Q("markup-thread-menu markup-comment-menu", d && "is-open", d && te === "up" && "is-up"),
4185
4205
  ref: (e) => {
4186
- d && (y.current = e);
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 (k === t._id) {
4194
- A(null);
4213
+ if (j === t._id) {
4214
+ M(null);
4195
4215
  return;
4196
4216
  }
4197
- let n = e.currentTarget.getBoundingClientRect(), r = b.current?.getBoundingClientRect(), i = (+!!s + +!!c) * 32 + 8 + 6;
4198
- M((r ? r.bottom - n.bottom : Infinity) < i ? "up" : "down"), A(t._id);
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: [s ? /* @__PURE__ */ $("button", {
4223
+ children: [o ? /* @__PURE__ */ $("button", {
4204
4224
  type: "button",
4205
4225
  class: "markup-thread-menu-item",
4206
4226
  onClick: () => {
4207
- A(null), I(t._id, t.body);
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", h && "is-danger"),
4232
+ class: Q("markup-thread-menu-item", f && "is-danger"),
4213
4233
  onClick: () => {
4214
- h ? (A(null), p(t._id)) : N(t._id);
4234
+ f ? (M(null), h(t._id)) : re(t._id);
4215
4235
  },
4216
- children: h ? "Confirm delete" : "Delete…"
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 = O.trim();
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 f(t._id, n), L();
4253
+ await m(t._id, n), L();
4234
4254
  } catch {}
4235
4255
  },
4236
4256
  children: [/* @__PURE__ */ $("textarea", {
4237
4257
  class: "markup-textarea",
4238
- value: O,
4239
- onInput: (e) => ee(e.currentTarget.value),
4258
+ value: k,
4259
+ onInput: (e) => A(e.currentTarget.value),
4240
4260
  rows: 3,
4241
4261
  autoFocus: !0,
4242
- disabled: o
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: o,
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: o || O.trim().length === 0,
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: ue,
4270
- onToggle: (e) => m(t._id, 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: () => x.current?.showModal(),
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: x,
4306
+ ref: C,
4287
4307
  class: "markup-lightbox",
4288
- onClick: () => x.current?.close(),
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(), x.current?.close();
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: o,
4325
+ pending: s,
4306
4326
  connecting: i,
4307
- onSubmit: c,
4308
- onCancel: u,
4309
- onSignIn: l
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: o,
4331
- error: s,
4332
- onSubmit: d
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 = V(null);
4525
+ let [j, M] = z(null);
4505
4526
  B(() => {
4506
4527
  let t = new rr(e.replace(/\.convex\.site(\/.*)?$/, ".convex.cloud"));
4507
- return j.current = t, () => {
4508
- t.close(), j.current = null;
4528
+ return M(t), () => {
4529
+ t.close(), M((e) => e === t ? null : e);
4509
4530
  };
4510
4531
  }, [e]);
4511
- let M = V(!1);
4532
+ let te = V(!1);
4512
4533
  B(() => {
4513
- let e = j.current;
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 (M.current) return;
4547
+ if (te.current) return;
4527
4548
  let e = window.location.hash.match(/^#markup-thread=(.+)$/);
4528
- if (!e) {
4529
- M.current = !0;
4530
- return;
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
- let t = decodeURIComponent(e[1] ?? "");
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
- function e() {
4539
- i(window.location.pathname);
4558
+ let e = !0;
4559
+ function t() {
4560
+ e && i(window.location.pathname);
4540
4561
  }
4541
- window.addEventListener("popstate", e);
4542
- let t = history.pushState, n = history.replaceState;
4543
- return history.pushState = function(...n) {
4544
- t.apply(this, n), e();
4545
- }, history.replaceState = function(...t) {
4546
- n.apply(this, t), e();
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", e), history.pushState = t, history.replaceState = n;
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
- function e() {
4565
- T((e) => e + 1);
4585
+ let e = null;
4586
+ function t() {
4587
+ e ??= requestAnimationFrame(() => {
4588
+ e = null, T((e) => e + 1);
4589
+ });
4566
4590
  }
4567
- window.addEventListener("scroll", e, { passive: !0 }), window.addEventListener("resize", e);
4568
- let t = new ResizeObserver(e);
4569
- return t.observe(document.body), () => {
4570
- window.removeEventListener("scroll", e), window.removeEventListener("resize", e), t.disconnect();
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 te = H(() => {
4597
+ let ne = H(() => {
4574
4598
  b(null), g({ kind: "placing" });
4575
4599
  }, []), N = H(() => {
4576
4600
  g({ kind: "idle" }), b(null);
4577
- }, []), P = V(0), ne = H((e, t, n) => {
4578
- let r = t + window.scrollX, i = n + window.scrollY, a = ++P.current;
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
- }, []), re = H((e, t) => {
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]), ie = H(async () => {
4606
- b(null);
4607
- try {
4608
- let n = Aa(await Nr(e, t));
4609
- Mr(n), c(n);
4610
- } catch (e) {
4611
- b(e instanceof Error ? e.message : "Sign-in failed");
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
- }, [e, t]), ae = H(async (e, t) => {
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
- let { storageId: e } = await t.json();
4626
- n = e;
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
- ]), oe = H(async () => {
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]), se = H(async () => {
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
- ]), ce = H(async (e) => {
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
- ]), le = H(async (e, t) => {
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
- ]), ue = H(async (e) => {
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
- ]), F = H(async (e, t) => {
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
- ]), I = h.kind === "thread" ? a.find((e) => e._id === h.threadId) ?? null : null, L = O || s?.clientId != null && s.clientId === I?.authorClientId;
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" && I == null && N();
4788
+ h.kind === "thread" && L == null && N();
4758
4789
  }, [
4759
4790
  h,
4760
- I,
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: ne,
4823
+ onPlace: ie,
4793
4824
  onCancel: N
4794
4825
  }) : null,
4795
- h.kind === "thread" && I && !x ? /* @__PURE__ */ $(Ca, {
4796
- thread: I,
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
- canDelete: L,
4832
+ signingIn: ae,
4833
+ canDelete: pe,
4802
4834
  pending: _,
4803
4835
  error: y,
4804
- onAuthor: re,
4805
- onSignIn: ie,
4836
+ hidden: x,
4837
+ onAuthor: P,
4838
+ onSignIn: se,
4806
4839
  onClose: N,
4807
- onReply: ce,
4808
- onEditComment: le,
4809
- onDeleteComment: ue,
4810
- onToggleReaction: F,
4811
- onDelete: oe,
4812
- onResolve: se
4813
- }, I._id) : null,
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: re,
4825
- onSignIn: ie,
4826
- onSubmit: ae,
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() : te(),
4865
+ onToggle: () => h.kind === "placing" ? N() : ne(),
4832
4866
  onHide: () => {
4833
4867
  S(!0), w(!0);
4834
4868
  },