@pixelmatters/markup 1.16.1 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -13
- package/dist/widget.js +830 -573
- package/dist/widget.js.map +1 -1
- package/package.json +1 -1
package/dist/widget.js
CHANGED
|
@@ -248,7 +248,7 @@ e = h.slice, t = { __e: function(e, t, n, r) {
|
|
|
248
248
|
}, O.__r = 0, s = Math.random().toString(8), c = "__d" + s, l = "__a" + s, u = /(PointerCapture)$|Capture$/i, d = 0, f = re(!1), p = re(!0);
|
|
249
249
|
//#endregion
|
|
250
250
|
//#region src/styles.css?inline
|
|
251
|
-
var pe = ":host{--markup-paper:#fdfcfa;--markup-surface:#fff;--markup-surface-2:oklch(98.5% .002 250);--markup-surface-3:oklch(95% .003 250);--markup-hover:oklch(95% .003 250);--markup-ink:#1a1614;--markup-ink-soft:oklch(32% .005 250);--markup-muted:#6b6661;--markup-border:#1a16141a;--markup-border-strong:#1a16142e;--markup-brand:#e35d2a;--markup-brand-hover:#c84d20;--markup-accent-soft:oklch(95% .04 60);--markup-accent-ink:oklch(45% .14 38);--markup-accent-glow:color-mix(in srgb, var(--markup-brand) 28%, transparent);--markup-team:#2a4ac8;--markup-shadow:0 1px 2px #1a16140f, 0 8px 28px #1a16141f;--markup-shadow-toolbar:0 1px 1px #0000000a, 0 4px 10px -2px #0f14281a, 0 18px 36px -12px #0f14282e;--markup-shadow-pop:0 1px 1px #0000000a, 0 8px 24px -6px #0f14281f, 0 28px 60px -18px #0f142838;--markup-overlay-tint:#1a16140a;--markup-danger:#dc2626;--markup-success:oklch(62% .16 150);--markup-radius:6px;--markup-radius-sm:4px;--markup-font:\"Geist Variable\", \"Geist\", ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;--markup-font-mono:\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;all:initial;font-family:var(--markup-font);color:var(--markup-ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}:host([data-theme=dark]){--markup-paper:#1a1614;--markup-surface:oklch(16% .005 250);--markup-surface-2:oklch(20% .005 250);--markup-surface-3:oklch(24% .005 250);--markup-hover:oklch(24% .005 250);--markup-ink:#fdfcfa;--markup-ink-soft:oklch(80% .005 250);--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-accent-soft:color-mix(in srgb, var(--markup-brand) 22%, transparent);--markup-accent-ink:oklch(86% .13 55);--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-shadow-toolbar:0 1px 0 #ffffff0a inset, 0 1px 2px #0006, 0 12px 30px -10px #0000008c, 0 28px 60px -20px #00000080;--markup-shadow-pop:0 1px 0 #ffffff0a inset, 0 8px 24px -6px #00000073, 0 28px 60px -18px #0000008c;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}@media (prefers-color-scheme:dark){:host(:not([data-theme])){--markup-paper:#1a1614;--markup-surface:oklch(16% .005 250);--markup-surface-2:oklch(20% .005 250);--markup-surface-3:oklch(24% .005 250);--markup-hover:oklch(24% .005 250);--markup-ink:#fdfcfa;--markup-ink-soft:oklch(80% .005 250);--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-accent-soft:color-mix(in srgb, var(--markup-brand) 22%, transparent);--markup-accent-ink:oklch(86% .13 55);--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-shadow-toolbar:0 1px 0 #ffffff0a inset, 0 1px 2px #0006, 0 12px 30px -10px #0000008c, 0 28px 60px -20px #00000080;--markup-shadow-pop:0 1px 0 #ffffff0a inset, 0 8px 24px -6px #00000073, 0 28px 60px -18px #0000008c;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}}.markup-sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markup-shadow-root{font-family:var(--markup-font)}.markup-shadow-root *,.markup-shadow-root :before,.markup-shadow-root :after{box-sizing:border-box}:where(.markup-shadow-root button,.markup-shadow-root input,.markup-shadow-root textarea){font:inherit;color:inherit}.markup-eyebrow{font-family:var(--markup-font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--markup-muted);font-size:10px;font-weight:500}.markup-toolbar{z-index:10;background:var(--markup-surface);border:1px solid var(--markup-border);pointer-events:none;height:44px;box-shadow:var(--markup-shadow-toolbar);border-radius:9999px;align-items:center;gap:2px;padding:4px;transition:box-shadow .15s,left .22s cubic-bezier(.2,.7,.2,1),transform .22s cubic-bezier(.2,.7,.2,1);display:inline-flex;position:fixed;bottom:22px;left:100%;transform:translate(calc(-100% - 22px))}.markup-toolbar>*{pointer-events:auto}.markup-tb-btn{width:36px;height:36px;color:var(--markup-ink-soft);cursor:pointer;touch-action:none;font-family:var(--markup-font);background:0 0;border:1px solid #0000;border-radius:9999px;justify-content:center;align-items:center;gap:6px;padding:0;font-size:13px;font-weight:500;transition:background .12s,color .12s;display:inline-flex;position:relative}.markup-tb-btn:hover{background:var(--markup-hover);color:var(--markup-ink)}.markup-tb-btn:focus-visible{box-shadow:0 0 0 2px var(--markup-surface), 0 0 0 4px var(--markup-accent-glow);outline:none}.markup-tb-btn[data-on=true]{background:var(--markup-ink);color:var(--markup-paper)}@media (prefers-color-scheme:dark){:host(:not([data-theme])) .markup-tb-btn[data-on=true]{background:var(--markup-surface-3);color:var(--markup-ink)}}:host([data-theme=dark]) .markup-tb-btn[data-on=true]{background:var(--markup-surface-3);color:var(--markup-ink)}.markup-tb-btn[data-armed=true]{background:var(--markup-brand);color:#fff}.markup-tb-btn[data-armed=true]:hover{background:var(--markup-brand-hover);color:#fff}.markup-tb-btn[disabled]{color:color-mix(in srgb, var(--markup-muted) 60%, transparent);cursor:default}.markup-tb-btn[disabled]:hover{color:color-mix(in srgb, var(--markup-muted) 60%, transparent);background:0 0}.markup-tb-btn[data-kind=identity]{gap:6px;width:auto;padding:0 4px}.markup-tb-avatar{background:var(--markup-surface-3);width:28px;height:28px;font-family:var(--markup-font-mono);color:var(--markup-ink);border:1px solid var(--markup-border);border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;font-size:10.5px;font-weight:600;display:inline-flex;overflow:hidden}.markup-tb-avatar.is-anon{color:var(--markup-muted);background:var(--markup-surface-2)}.markup-tb-sep{background:var(--markup-border);flex-shrink:0;width:1px;height:20px;margin:0 4px}.markup-tb-badge{background:var(--markup-brand);color:#fff;min-width:16px;height:16px;font-family:var(--markup-font-mono);box-shadow:0 0 0 2px var(--markup-surface);pointer-events:none;border-radius:9999px;justify-content:center;align-items:center;padding:0 4px;font-size:9.5px;font-weight:600;line-height:1;display:inline-flex;position:absolute;top:0;right:0}.markup-toolbar-left{left:0;transform:translate(22px)}.markup-toolbar-center{left:50%;transform:translate(-50%)}.markup-toolbar-right{left:100%;transform:translate(calc(-100% - 22px))}.markup-pop{background:var(--markup-surface);border:1px solid var(--markup-border);box-shadow:var(--markup-shadow-pop);color:var(--markup-ink);z-index:11;border-radius:12px;font-size:13px;animation:.14s cubic-bezier(.2,.7,.2,1) markup-pop-in;position:absolute;bottom:calc(100% + 8px);overflow:hidden}.markup-pop[data-pop=overflow]{width:260px;padding:6px}.markup-pop[data-pop=identity]{width:240px;padding:6px}.markup-pop[data-pop=inbox]{width:380px;padding:0}.markup-pop.is-anchor-right{right:0}.markup-pop.is-anchor-left{left:0}.markup-pop.is-anchor-center{left:50%;transform:translate(-50%)}@keyframes markup-pop-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.markup-pop.is-anchor-center{animation-name:markup-pop-in-center}@keyframes markup-pop-in-center{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.markup-pop-group-label{font-family:var(--markup-font-mono);letter-spacing:.06em;color:var(--markup-muted);text-transform:lowercase;padding:8px 10px 4px;font-size:10px}.markup-segmented-row{border-radius:6px;align-items:center;gap:10px;padding:7px 8px;display:flex}.markup-segmented-row .lbl{min-width:0;color:var(--markup-ink);flex:1;font-size:13px}.markup-segmented{background:var(--markup-surface-3);border-radius:7px;gap:2px;padding:2px;display:inline-flex}.markup-segmented button{font:inherit;width:28px;height:24px;color:var(--markup-muted);cursor:pointer;background:0 0;border:none;border-radius:5px;justify-content:center;align-items:center;padding:0;transition:background .1s,color .1s;display:inline-flex}.markup-segmented button:hover{color:var(--markup-ink)}.markup-segmented button.is-on{background:var(--markup-surface);color:var(--markup-ink);box-shadow:0 1px 2px #0000000d}.markup-menu-row{cursor:pointer;width:100%;color:inherit;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:7px 8px;font-family:inherit;font-size:13px;display:flex}.markup-menu-row:hover{background:var(--markup-hover)}.markup-menu-row:disabled{opacity:.5;cursor:default}.markup-menu-row:disabled:hover{background:0 0}.markup-menu-row .ic{width:16px;height:16px;color:var(--markup-muted);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.markup-menu-row .lbl{flex-direction:column;flex:1;min-width:0;display:flex}.markup-menu-row .lbl .sub{color:var(--markup-muted);margin-top:1px;font-size:11px}.markup-menu-row .right{font-family:var(--markup-font-mono);color:var(--markup-muted);margin-left:auto;font-size:10.5px}.markup-menu-row.is-danger,.markup-menu-row.is-danger .ic{color:var(--markup-danger)}.markup-menu-row.is-danger:hover{background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-menu-row .switch{background:var(--markup-border-strong);border-radius:9999px;flex-shrink:0;width:26px;height:16px;transition:background .12s;position:relative}.markup-menu-row .switch:after{content:\"\";background:var(--markup-surface);border-radius:9999px;width:12px;height:12px;transition:left .12s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000026}.markup-menu-row[data-on=true] .switch{background:var(--markup-brand)}.markup-menu-row[data-on=true] .switch:after{left:12px}.markup-menu-divider{background:var(--markup-border);height:1px;margin:4px 0}.markup-brand-line{font-family:var(--markup-font-mono);color:var(--markup-muted);border-top:1px solid var(--markup-border);align-items:center;gap:8px;margin-top:6px;padding:8px 10px;font-size:10.5px;text-decoration:none;display:flex}.markup-brand-line:hover{color:var(--markup-ink)}.markup-brand-line svg{color:var(--markup-brand)}.markup-brand-line .ver{margin-left:auto}.markup-id-who{border-bottom:1px solid var(--markup-border);flex-direction:column;gap:2px;margin-bottom:4px;padding:10px 8px 12px;display:flex}.markup-id-who .nm{color:var(--markup-ink);font-size:13.5px;font-weight:600}.markup-id-who .em{font-family:var(--markup-font-mono);color:var(--markup-muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.markup-id-anon{text-align:left;flex-direction:column;gap:10px;padding:14px 10px;display:flex}.markup-id-anon .h{letter-spacing:-.005em;color:var(--markup-ink);font-size:14px;font-weight:600}.markup-id-anon .sub{color:var(--markup-muted);font-size:12.5px;line-height:18px}.markup-id-anon button:not(.markup-menu-row){background:var(--markup-ink);width:100%;color:var(--markup-paper);height:32px;font:inherit;cursor:pointer;border:none;border-radius:7px;justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:500;display:inline-flex}.markup-id-anon button:disabled{opacity:.7;cursor:default}.markup-id-anon button:not(.markup-menu-row):hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 88%, var(--markup-surface))}.markup-hud-hidden-toast{z-index:10;background:var(--markup-ink);color:var(--markup-paper);letter-spacing:-.01em;box-shadow:var(--markup-shadow);pointer-events:none;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:12px;font-weight:500;animation:.22s ease-out markup-hud-hidden-in,.32s ease-in 4.6s forwards markup-hud-hidden-out;display:inline-flex;position:fixed;bottom:24px}.markup-hud-hidden-toast-right{right:24px}.markup-hud-hidden-toast-left{left:24px}.markup-hud-hidden-toast-center{width:max-content;margin-inline:auto;left:0;right:0}.markup-kbd{background:color-mix(in srgb, var(--markup-paper) 14%, transparent);min-width:18px;height:18px;color:var(--markup-paper);font-family:var(--markup-font);border-radius:4px;justify-content:center;align-items:center;padding:0 5px;font-size:10px;font-weight:600;line-height:1;display:inline-flex}.markup-kbd.is-inline{background:color-mix(in srgb, var(--markup-ink) 8%, transparent);min-width:14px;height:14px;color:var(--markup-muted);border-radius:3px;padding:0 3px;font-size:9.5px}@keyframes markup-hud-hidden-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes markup-hud-hidden-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}.markup-pins-layer{pointer-events:none;position:fixed;inset:0}.markup-pin{border:2px solid var(--markup-paper);background:var(--markup-brand);color:#fff;width:28px;height:28px;font-family:var(--markup-font-mono);cursor:pointer;pointer-events:auto;box-shadow:0 4px 14px -4px #00000059, 0 0 0 1px color-mix(in srgb, var(--markup-brand) 50%, transparent);border-radius:999px 999px 999px 4px;justify-content:center;align-items:center;margin:0;padding:0;font-size:11.5px;font-weight:600;line-height:1;transition:background .15s,color .15s,opacity .15s,top .2s,left .2s;display:inline-flex;position:absolute;transform:translate(-50%,-100%)}.markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 92%, black)}:host([data-theme=dark]) .markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 88%, var(--markup-paper))}@media (prefers-color-scheme:dark){:host(:not([data-theme])) .markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 88%, var(--markup-paper))}}.markup-pin.is-active{background:var(--markup-brand);color:#fff;border-color:var(--markup-paper)}.markup-pin.is-anchor{anchor-name:--markup-active-anchor}.markup-pin.is-unresolved{opacity:.6}.markup-pin-ghost{background:var(--markup-brand);color:#fff;cursor:default;pointer-events:none;animation:1.2s ease-in-out infinite markup-ghost-pulse}.markup-pin-num{pointer-events:none;justify-content:center;align-items:center;display:inline-flex}.markup-pin-count{background:var(--markup-ink);min-width:16px;height:16px;color:var(--markup-paper);font-family:var(--markup-font-mono);text-align:center;border:2px solid var(--markup-paper);pointer-events:none;border-radius:999px;padding:0 4px;font-size:9.5px;font-weight:600;line-height:12px;position:absolute;top:-6px;right:-8px}@keyframes markup-ghost-pulse{0%,to{box-shadow:0 4px 14px -4px #00000059,0 0 #e35d2a66}50%{box-shadow:0 4px 14px -4px #00000059,0 0 0 10px #e35d2a00}}.markup-placement-overlay{background:var(--markup-overlay-tint);cursor:crosshair;pointer-events:auto;z-index:1;animation:.18s ease-out markup-overlay-in;position:fixed;inset:0}.markup-placement-cursor-help{background:var(--markup-ink);color:var(--markup-paper);letter-spacing:-.01em;box-shadow:var(--markup-shadow);pointer-events:none;border-radius:999px;padding:10px 16px;font-size:12px;font-weight:500;animation:.22s ease-out 60ms backwards markup-help-in;position:fixed;top:24px;left:50%;transform:translate(-50%)}@keyframes markup-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes markup-help-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}.markup-popover{width:360px;max-width:calc(100vw - 24px);height:auto;max-height:calc(100dvh - 24px);inset:auto;left:var(--markup-pop-x,0);top:var(--markup-pop-y,0);background:var(--markup-paper);color:var(--markup-ink);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius);box-shadow:var(--markup-shadow);pointer-events:auto;flex-direction:column;gap:0;margin:0;padding:0;animation:.16s ease-out markup-popover-in;display:flex;position:fixed;overflow:hidden}@supports (anchor-name:--x){.markup-popover{position-anchor:--markup-active-anchor;left:calc(anchor(right) + 8px);top:calc(anchor(top) - 9px);position-try-fallbacks:flip-block, flip-inline, flip-block flip-inline;position-try-order:most-block-size}.markup-popover.is-floating{left:var(--markup-pop-x,0);top:var(--markup-pop-y,0);position-try-fallbacks:none}}.markup-popover.is-hud-hidden{display:none}@keyframes markup-popover-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.markup-popover-header{border-bottom:1px solid var(--markup-border);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.markup-popover.is-dragging .markup-popover-header{cursor:grabbing}.markup-popover-header-actions{align-items:center;gap:4px;display:flex}.markup-popover-title{min-width:0;font-family:var(--markup-font-mono);letter-spacing:.02em;color:var(--markup-muted);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-size:11px;line-height:1;overflow:hidden}.markup-thread-menu{display:flex;position:relative}.markup-thread-menu-list{z-index:10;background:var(--markup-paper);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius);min-width:160px;box-shadow:var(--markup-shadow);padding:4px;animation:.12s ease-out markup-menu-in;position:absolute;top:calc(100% + 6px);right:0}.markup-thread-menu-item{border-radius:var(--markup-radius-sm);width:100%;color:var(--markup-ink);text-align:left;cursor:pointer;background:0 0;border:none;padding:7px 10px;font-size:13px;transition:background .1s,color .1s;display:block}.markup-thread-menu-item:hover{background:var(--markup-border)}.markup-thread-menu-item.is-danger{color:var(--markup-danger,#dc2626)}.markup-thread-menu-item.is-danger:hover{background:color-mix(in srgb, var(--markup-danger,#dc2626) 10%, transparent)}.markup-thread-menu-item:disabled{opacity:.5;cursor:default}@keyframes markup-menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.markup-popover-body{border-top:1px solid var(--markup-border);background:var(--markup-paper);flex-direction:column;gap:6px;padding:10px 12px 8px;display:flex}.markup-popover-header+.markup-popover-body{border-top:none}.markup-popover-byline{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markup-popover-name{color:var(--markup-ink);font-weight:500}.markup-icon-btn{border-radius:var(--markup-radius-sm);width:24px;height:24px;color:var(--markup-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:inline-flex}.markup-icon-btn:hover,.markup-icon-btn.is-open{background:var(--markup-border);color:var(--markup-ink)}.markup-comments{flex-direction:column;max-height:420px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.markup-comment{border-bottom:1px solid var(--markup-border);grid-template-columns:26px 1fr;align-items:start;gap:0 10px;padding:12px;display:grid}.markup-comment:last-child{border-bottom:none}.markup-comment>:not(.markup-comment-avatar){grid-column:2}.markup-comment-avatar{background:var(--markup-border);width:26px;height:26px;color:var(--markup-ink);font-family:var(--markup-font-mono);letter-spacing:.02em;text-transform:uppercase;-webkit-user-select:none;user-select:none;border-radius:999px;grid-area:1/1/span 4;justify-content:center;align-items:center;margin-top:-3px;font-size:10.5px;font-weight:600;display:inline-flex;overflow:hidden}.markup-avatar-initials{text-box-trim:trim-both;text-box-edge:cap alphabetic;line-height:1}.markup-avatar-img{object-fit:cover;width:100%;height:100%;display:block}.markup-comment-avatar[data-tone=\"1\"]{color:oklch(25% .07 230);background:oklch(85% .07 200)}.markup-comment-avatar[data-tone=\"2\"]{color:oklch(30% .1 150);background:oklch(88% .07 130)}.markup-comment-avatar[data-tone=\"3\"]{color:oklch(35% .1 40);background:oklch(90% .05 50)}.markup-comment-avatar[data-tone=\"4\"]{color:oklch(30% .1 320);background:oklch(87% .07 320)}.markup-comment-avatar[data-tone=\"5\"]{color:oklch(32% .09 70);background:oklch(88% .06 80)}.markup-comment-meta{align-items:center;gap:8px;min-width:0;margin-bottom:4px;font-size:13px;display:flex}.markup-comment-author{color:var(--markup-ink);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.markup-comment-badge{background:color-mix(in srgb, var(--markup-team) 12%, transparent);height:14px;color:var(--markup-team);font-family:var(--markup-font-mono);letter-spacing:.12em;text-transform:uppercase;border-radius:999px;align-items:center;padding:0 5px;font-size:9px;font-weight:500;line-height:1;display:inline-flex}.markup-comment-badge.is-agent{background:color-mix(in srgb, var(--markup-brand) 14%, transparent);color:var(--markup-brand);letter-spacing:normal;justify-content:center;width:14px;padding:0}.markup-comment-time{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;white-space:nowrap;flex-shrink:0;font-size:10.5px}.markup-comment-body{color:var(--markup-ink);white-space:pre-wrap;word-break:break-word;margin:0;font-size:13.5px;line-height:19px}.markup-comment-edited{color:var(--markup-muted);font-family:var(--markup-font-mono);margin-left:2px;font-size:10.5px}.markup-comment-edited:before{content:\" · \"}.markup-thread-actions{align-items:center;gap:4px;display:flex}.markup-comment-meta .markup-reaction-picker-wrap,.markup-thread-actions{margin-left:auto}.markup-comment-meta .markup-reaction-add{width:22px;height:22px;margin-top:-4px;margin-bottom:-4px}.markup-reaction-picker-wrap>.markup-icon-btn,.markup-comment-menu>.markup-icon-btn{margin-top:-4px;margin-bottom:-4px}.markup-comment-menu.is-up .markup-thread-menu-list{animation-name:markup-menu-in-up;top:auto;bottom:calc(100% + 6px)}.markup-comment-menu.is-side .markup-thread-menu-list{animation-name:markup-menu-in-side;top:-4px;right:calc(100% + 2px)}@keyframes markup-menu-in-side{0%{opacity:0;transform:translate(4px)}to{opacity:1;transform:translate(0)}}@keyframes markup-menu-in-up{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.markup-comment{position:relative}.markup-reactions{flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px;display:flex}.markup-reaction-chip{border:1px solid var(--markup-border);background:var(--markup-surface-3);color:var(--markup-ink);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 7px;font-size:11.5px;line-height:1.2;transition:background .12s,border-color .12s;display:inline-flex}.markup-reaction-chip:hover:not(:disabled){background:var(--markup-hover)}.markup-reaction-chip.is-mine{background:var(--markup-accent-soft);border-color:color-mix(in srgb, var(--markup-brand) 50%, transparent);color:var(--markup-accent-ink)}.markup-reaction-chip.is-mine:hover:not(:disabled){background:color-mix(in srgb, var(--markup-brand) 18%, transparent)}.markup-reaction-chip:disabled{cursor:default;opacity:.6}.markup-reaction-emoji{font-size:13px;line-height:1}.markup-reaction-count{font-family:var(--markup-font-mono);letter-spacing:.04em;color:var(--markup-muted);font-size:10.5px}.markup-reaction-chip.is-mine .markup-reaction-count{color:var(--markup-accent-ink)}.markup-reaction-picker-wrap{opacity:0;flex:none;transition:opacity .12s;display:inline-flex;position:relative}.markup-comment:hover .markup-reaction-picker-wrap,.markup-comment:focus-within .markup-reaction-picker-wrap,.markup-reaction-picker-wrap.is-open{opacity:1}.markup-reaction-add{width:22px;height:22px;color:var(--markup-muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:13px;line-height:1;transition:background .12s,color .12s;display:inline-flex}.markup-reaction-add:hover,.markup-reaction-add.is-open{background:var(--markup-hover);color:var(--markup-ink)}.markup-reaction-picker{z-index:1;border:1px solid var(--markup-border-strong);background:var(--markup-paper);border-radius:8px;gap:2px;padding:4px;animation:.12s markup-menu-in;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 1px 2px #1a16140f,0 8px 28px #1a16141a}.markup-reaction-picker-wrap.is-up .markup-reaction-picker{animation-name:markup-menu-in-up;top:auto;bottom:calc(100% + 6px)}.markup-reaction-picker-wrap.is-side .markup-reaction-picker{animation-name:markup-menu-in-side;top:-4px;right:calc(100% + 2px)}.markup-reaction-picker-item{cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:16px;line-height:1;transition:background .12s;display:inline-flex}.markup-reaction-picker-item:hover{background:color-mix(in srgb, var(--markup-ink) 8%, transparent)}.markup-reaction-picker-item.is-mine{background:color-mix(in srgb, var(--markup-brand) 14%, transparent)}.markup-comment-edit-form{flex-direction:column;gap:6px;display:flex}.markup-comment-edit-actions{justify-content:flex-end;gap:6px;display:flex}.markup-composer{flex-direction:column;display:flex;position:relative}.markup-composer-input{width:100%;min-height:38px;max-height:120px;color:var(--markup-ink);font-family:var(--markup-font);background:0 0;border:none;border-radius:0;padding:2px 0;font-size:13.5px;line-height:19px;transition:none;overflow-y:auto}.markup-composer-input:focus-visible{box-shadow:none;outline:none}.markup-composer-footer-wrap{grid-template-rows:0fr;transition:grid-template-rows .15s;display:grid}.markup-composer.is-filled .markup-composer-footer-wrap{grid-template-rows:1fr}.markup-composer-footer{opacity:0;background:0 0;border:none;border-radius:0;justify-content:space-between;align-items:center;gap:8px;padding:0;transition:opacity .1s;display:flex;overflow:hidden}.markup-composer.is-filled .markup-composer-footer{opacity:1;transition-delay:60ms}.markup-composer-hint{font-family:var(--markup-font-mono);letter-spacing:.04em;color:var(--markup-muted);align-items:center;gap:3px;font-size:10.5px;display:inline-flex}.markup-composer-hint-label{margin-left:2px}.markup-composer-error{color:var(--markup-brand)}.markup-composer-actions{align-items:center;gap:6px;display:flex}.markup-composer .markup-btn-primary{background:var(--markup-ink);height:26px;color:var(--markup-paper);border-radius:6px;padding:0 10px}.markup-composer .markup-btn-primary:hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 88%, var(--markup-paper))}.markup-composer-actions-empty{transition:opacity .12s;position:absolute;bottom:0;right:0}.markup-composer.is-filled .markup-composer-actions-empty{opacity:0;pointer-events:none}.markup-author-prompt{flex-direction:column;gap:10px;padding:12px;display:flex}.markup-author-status{color:var(--markup-muted);margin:0;font-size:12px}.markup-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;height:36px;color:var(--markup-ink);outline:none;padding:0 10px;font-size:14px;transition:border-color .12s,box-shadow .12s}.markup-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-btn{border-radius:var(--markup-radius-sm);height:30px;color:var(--markup-ink);cursor:pointer;letter-spacing:-.01em;white-space:nowrap;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:500;transition:background .12s,border-color .12s,color .12s,opacity .12s;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:1px dashed var(--markup-border-strong);color:var(--markup-muted);border-radius:6px;align-items:center;gap:8px;margin-top:0;padding:6px 8px;font-size:11.5px;display:flex}.markup-screenshot-status{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;display:flex}.markup-screenshot-row.is-failed{opacity:.85;border-style:dotted}.markup-screenshot-toggle{cursor:pointer;color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;transition:color .12s;display:flex}.markup-screenshot-toggle:hover{color:var(--markup-ink)}.markup-screenshot-checkbox{width:12px;height:12px;accent-color:var(--markup-brand);cursor:pointer;margin:0}.markup-screenshot-thumb{border:1px solid var(--markup-border-strong);object-fit:cover;border-radius:3px;flex-shrink:0;width:auto;height:25px;margin:-5px 0 -5px auto;display:block}.markup-screenshot-redacted{font-family:var(--markup-font-mono);color:var(--markup-muted);margin-left:auto;font-size:10px}.markup-screenshot-redacted-chip{background:color-mix(in srgb, var(--markup-success,oklch(62% .16 150)) 16%, transparent);color:var(--markup-success,oklch(62% .16 150));font-family:var(--markup-font-mono);cursor:pointer;border:none;border-radius:999px;align-items:center;gap:3px;padding:1px 7px;font-size:10px;display:inline-flex}.markup-screenshot-redacted-chip:hover{filter:brightness(1.05)}.markup-screenshot-redacted-arrow{font-style:normal}.markup-screenshot-redacted-list{margin-top:3px;padding-left:10px}.markup-screenshot-redacted-selector{font-family:var(--markup-font-mono);color:var(--markup-muted);font-size:9px;display:block}.markup-screenshot-help{font-family:var(--markup-font-mono);color:var(--markup-muted);margin:5px 0 0;font-size:10px;line-height:1.5}.markup-screenshot-help-code{font-family:var(--markup-font-mono);color:var(--markup-ink)}.markup-comment-screenshot{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);cursor:pointer;background:0 0;margin-top:8px;padding:0;transition:border-color .12s,opacity .12s;display:block;overflow:hidden}.markup-comment-screenshot:hover{border-color:var(--markup-brand);opacity:.9}.markup-comment-screenshot img{object-fit:cover;object-position:top;width:100%;height:auto;max-height:120px;display:block}.markup-lightbox{background:#1a1614e0;border:none;width:100%;max-width:100%;height:100%;max-height:100%;margin:0;padding:24px;position:fixed;inset:0}.markup-lightbox[open]{justify-content:center;align-items:center;display:flex}.markup-lightbox::backdrop{display:none}.markup-lightbox-img{border-radius:var(--markup-radius);object-fit:contain;max-width:100%;max-height:100%;box-shadow:var(--markup-shadow);animation:.16s ease-out markup-lightbox-in}.markup-lightbox-close{color:#fdfcfa;background:#1a161499;position:absolute;top:16px;right:16px}.markup-lightbox-close:hover{color:#fdfcfa;background:#1a1614d9}@keyframes markup-lightbox-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.markup-toolbar,.markup-pin,.markup-icon-btn,.markup-btn,.markup-popover,.markup-pin-ghost,.markup-placement-overlay,.markup-placement-cursor-help,.markup-lightbox-img{transition:none;animation:none}}.markup-mention-chip{background:var(--markup-accent-soft);color:var(--markup-accent-ink);border-radius:3px;padding:0 2px;font-weight:500;display:inline-block}.markup-mention-input{white-space:pre-wrap;overflow-wrap:anywhere;cursor:text;outline:none;position:relative}.markup-mention-input[aria-disabled=true]{opacity:.6;cursor:default}.markup-mention-input[data-empty]:before{content:attr(data-placeholder);color:var(--markup-muted);pointer-events:none;position:absolute;inset:0 auto auto 0}.markup-mention-input .markup-mention-chip{white-space:nowrap;padding:0 3px}.markup-comment-edit-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;min-height:58px;max-height:200px;color:var(--markup-ink);font:inherit;padding:8px 10px;font-size:13px;line-height:1.5;overflow-y:auto}.markup-comment-edit-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-comment-edit-input[data-empty]:before{inset:8px auto auto 10px}.markup-mention-picker{z-index:10;background:var(--markup-paper);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);max-height:180px;box-shadow:var(--markup-shadow);margin:0 0 4px;padding:4px;list-style:none;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto}.markup-mention-picker-item{border-radius:var(--markup-radius-sm);cursor:pointer;color:var(--markup-ink);justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.markup-mention-picker-item.is-active{background:color-mix(in srgb, var(--markup-brand) 12%, transparent)}.markup-mention-picker-name{font-weight:500}.markup-mention-picker-trigger{color:var(--markup-muted);font-family:var(--markup-font-mono);font-size:10px}.markup-notifications-panel{max-height:min(60vh,420px);color:var(--markup-ink);flex-direction:column;display:flex}.markup-notifications-panel-header{border-bottom:1px solid var(--markup-border);align-items:center;gap:8px;padding:8px 10px;display:flex}.markup-notifications-panel-header .markup-eyebrow{flex:1}.markup-notifications-panel-actions{align-items:center;gap:8px;display:flex}.markup-notifications-panel-mark-all{color:var(--markup-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:11px}.markup-notifications-panel-mark-all:hover{color:var(--markup-ink)}.markup-notifications-panel-body{flex:1;overflow-y:auto}.markup-notifications-panel-empty,.markup-notifications-panel-error{text-align:center;color:var(--markup-muted);padding:24px 12px;font-size:12px}.markup-notifications-panel-empty-title{color:var(--markup-ink);margin:0 0 4px;font-weight:500}.markup-notifications-panel-empty-sub{color:var(--markup-muted);margin:0;line-height:1.4}.markup-notifications-panel-error{color:var(--markup-danger,#b91c1c)}.markup-notifications-panel-list{margin:0;padding:4px;list-style:none}.markup-notifications-panel-row{border-radius:var(--markup-radius-sm);text-align:start;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:none;flex-direction:column;gap:4px;padding:8px 10px;display:flex}.markup-notifications-panel-row:hover{background:color-mix(in srgb, var(--markup-brand) 8%, transparent)}.markup-notifications-panel-row.is-unread{background:color-mix(in srgb, var(--markup-brand) 5%, transparent)}.markup-notifications-panel-meta{align-items:center;gap:6px;font-size:11px;display:flex}.markup-notifications-panel-dot{background:var(--markup-brand);border-radius:999px;flex-shrink:0;width:6px;height:6px}.markup-notifications-panel-actor{font-weight:600}.markup-notifications-panel-sep{color:var(--markup-muted)}.markup-notifications-panel-time{color:var(--markup-muted);font-family:var(--markup-font-mono);font-size:10px}.markup-notifications-panel-thread{color:var(--markup-muted);margin:0;font-size:12px}.markup-notifications-panel-thread-title{color:var(--markup-ink)}.markup-notifications-panel-excerpt{color:color-mix(in srgb, var(--markup-ink) 80%, transparent);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;font-style:italic;display:-webkit-box;overflow:hidden}.markup-inbox-pop{z-index:11;pointer-events:auto;width:380px;max-width:calc(100vw - 24px);position:fixed;bottom:76px}.markup-inbox-pop-right{right:22px}.markup-inbox-pop-left{left:22px}.markup-inbox-pop-center{left:50%;transform:translate(-50%)}.markup-inbox-pop .markup-pop{width:100%;animation:.14s cubic-bezier(.2,.7,.2,1) markup-pop-in;position:static}.markup-inbox-pop .markup-notifications-panel{max-height:min(60vh,480px)}.markup-inbox-pop .markup-notifications-panel-header{padding:12px 14px}.markup-inbox-pop .markup-notifications-panel-header .markup-icon-btn{display:none}", M = class extends C {
|
|
251
|
+
var pe = ":host{--markup-paper:#fdfcfa;--markup-surface:#fff;--markup-surface-2:oklch(98.5% .002 250);--markup-surface-3:oklch(95% .003 250);--markup-hover:oklch(95% .003 250);--markup-ink:#1a1614;--markup-ink-soft:oklch(32% .005 250);--markup-muted:#6b6661;--markup-border:#1a16141a;--markup-border-strong:#1a16142e;--markup-brand:#e35d2a;--markup-brand-hover:#c84d20;--markup-accent-soft:oklch(95% .04 60);--markup-accent-ink:oklch(45% .14 38);--markup-accent-glow:color-mix(in srgb, var(--markup-brand) 28%, transparent);--markup-team:#2a4ac8;--markup-shadow:0 1px 2px #1a16140f, 0 8px 28px #1a16141f;--markup-shadow-toolbar:0 1px 1px #0000000a, 0 4px 10px -2px #0f14281a, 0 18px 36px -12px #0f14282e;--markup-shadow-pop:0 1px 1px #0000000a, 0 8px 24px -6px #0f14281f, 0 28px 60px -18px #0f142838;--markup-overlay-tint:#1a16140a;--markup-danger:#dc2626;--markup-success:oklch(62% .16 150);--markup-radius:6px;--markup-radius-sm:4px;--markup-font:\"Geist Variable\", \"Geist\", ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;--markup-font-mono:\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;all:initial;font-family:var(--markup-font);color:var(--markup-ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}:host([data-theme=dark]){--markup-paper:#1a1614;--markup-surface:oklch(16% .005 250);--markup-surface-2:oklch(20% .005 250);--markup-surface-3:oklch(24% .005 250);--markup-hover:oklch(24% .005 250);--markup-ink:#fdfcfa;--markup-ink-soft:oklch(80% .005 250);--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-accent-soft:color-mix(in srgb, var(--markup-brand) 22%, transparent);--markup-accent-ink:oklch(86% .13 55);--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-shadow-toolbar:0 1px 0 #ffffff0a inset, 0 1px 2px #0006, 0 12px 30px -10px #0000008c, 0 28px 60px -20px #00000080;--markup-shadow-pop:0 1px 0 #ffffff0a inset, 0 8px 24px -6px #00000073, 0 28px 60px -18px #0000008c;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}@media (prefers-color-scheme:dark){:host(:not([data-theme])){--markup-paper:#1a1614;--markup-surface:oklch(16% .005 250);--markup-surface-2:oklch(20% .005 250);--markup-surface-3:oklch(24% .005 250);--markup-hover:oklch(24% .005 250);--markup-ink:#fdfcfa;--markup-ink-soft:oklch(80% .005 250);--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-accent-soft:color-mix(in srgb, var(--markup-brand) 22%, transparent);--markup-accent-ink:oklch(86% .13 55);--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-shadow-toolbar:0 1px 0 #ffffff0a inset, 0 1px 2px #0006, 0 12px 30px -10px #0000008c, 0 28px 60px -20px #00000080;--markup-shadow-pop:0 1px 0 #ffffff0a inset, 0 8px 24px -6px #00000073, 0 28px 60px -18px #0000008c;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}}.markup-sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markup-shadow-root{font-family:var(--markup-font)}.markup-shadow-root *,.markup-shadow-root :before,.markup-shadow-root :after{box-sizing:border-box}:where(.markup-shadow-root button,.markup-shadow-root input,.markup-shadow-root textarea){font:inherit;color:inherit}.markup-eyebrow{font-family:var(--markup-font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--markup-muted);font-size:10px;font-weight:500}.markup-toolbar{z-index:10;background:var(--markup-surface);border:1px solid var(--markup-border);pointer-events:none;height:44px;box-shadow:var(--markup-shadow-toolbar);border-radius:9999px;align-items:center;gap:2px;padding:4px;transition:box-shadow .15s,left .22s cubic-bezier(.2,.7,.2,1),transform .22s cubic-bezier(.2,.7,.2,1);display:inline-flex;position:fixed;bottom:22px;left:100%;transform:translate(calc(-100% - 22px))}.markup-toolbar>*{pointer-events:auto}.markup-tb-btn{width:36px;height:36px;color:var(--markup-ink-soft);cursor:pointer;touch-action:none;font-family:var(--markup-font);background:0 0;border:1px solid #0000;border-radius:9999px;justify-content:center;align-items:center;gap:6px;padding:0;font-size:13px;font-weight:500;transition:background .12s,color .12s;display:inline-flex;position:relative}.markup-tb-btn:hover{background:var(--markup-hover);color:var(--markup-ink)}.markup-tb-btn:focus-visible{box-shadow:0 0 0 2px var(--markup-surface), 0 0 0 4px var(--markup-accent-glow);outline:none}.markup-tb-btn[data-on=true]{background:var(--markup-ink);color:var(--markup-paper)}@media (prefers-color-scheme:dark){:host(:not([data-theme])) .markup-tb-btn[data-on=true]{background:var(--markup-surface-3);color:var(--markup-ink)}}:host([data-theme=dark]) .markup-tb-btn[data-on=true]{background:var(--markup-surface-3);color:var(--markup-ink)}.markup-tb-btn[data-armed=true]{background:var(--markup-brand);color:#fff}.markup-tb-btn[data-armed=true]:hover{background:var(--markup-brand-hover);color:#fff}.markup-tb-btn[disabled]{color:color-mix(in srgb, var(--markup-muted) 60%, transparent);cursor:default}.markup-tb-btn[disabled]:hover{color:color-mix(in srgb, var(--markup-muted) 60%, transparent);background:0 0}.markup-tb-btn[data-kind=identity]{gap:6px;width:auto;padding:0 4px}.markup-tb-avatar{background:var(--markup-surface-3);width:28px;height:28px;font-family:var(--markup-font-mono);color:var(--markup-ink);border:1px solid var(--markup-border);border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;font-size:10.5px;font-weight:600;display:inline-flex;overflow:hidden}.markup-tb-avatar.is-anon{color:var(--markup-muted);background:var(--markup-surface-2)}.markup-tb-sep{background:var(--markup-border);flex-shrink:0;width:1px;height:20px;margin:0 4px}.markup-tb-badge{background:var(--markup-brand);color:#fff;min-width:16px;height:16px;font-family:var(--markup-font-mono);box-shadow:0 0 0 2px var(--markup-surface);pointer-events:none;border-radius:9999px;justify-content:center;align-items:center;padding:0 4px;font-size:9.5px;font-weight:600;line-height:1;display:inline-flex;position:absolute;top:0;right:0}.markup-toolbar-left{left:0;transform:translate(22px)}.markup-toolbar-center{left:50%;transform:translate(-50%)}.markup-toolbar-right{left:100%;transform:translate(calc(-100% - 22px))}.markup-pop{background:var(--markup-surface);border:1px solid var(--markup-border);box-shadow:var(--markup-shadow-pop);color:var(--markup-ink);z-index:11;border-radius:12px;font-size:13px;animation:.14s cubic-bezier(.2,.7,.2,1) markup-pop-in;position:absolute;bottom:calc(100% + 8px);overflow:hidden}.markup-pop[data-pop=overflow]{width:260px;padding:6px}.markup-pop[data-pop=identity]{width:240px;padding:6px}.markup-pop[data-pop=inbox]{width:380px;padding:0}.markup-pop.is-anchor-right{right:0}.markup-pop.is-anchor-left{left:0}.markup-pop.is-anchor-center{left:50%;transform:translate(-50%)}@keyframes markup-pop-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.markup-pop.is-anchor-center{animation-name:markup-pop-in-center}@keyframes markup-pop-in-center{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.markup-pop-group-label{font-family:var(--markup-font-mono);letter-spacing:.06em;color:var(--markup-muted);text-transform:lowercase;padding:8px 10px 4px;font-size:10px}.markup-segmented-row{border-radius:6px;align-items:center;gap:10px;padding:7px 8px;display:flex}.markup-segmented-row .lbl{min-width:0;color:var(--markup-ink);flex:1;font-size:13px}.markup-segmented{background:var(--markup-surface-3);border-radius:7px;gap:2px;padding:2px;display:inline-flex}.markup-segmented button{font:inherit;width:28px;height:24px;color:var(--markup-muted);cursor:pointer;background:0 0;border:none;border-radius:5px;justify-content:center;align-items:center;padding:0;transition:background .1s,color .1s;display:inline-flex}.markup-segmented button:hover{color:var(--markup-ink)}.markup-segmented button.is-on{background:var(--markup-surface);color:var(--markup-ink);box-shadow:0 1px 2px #0000000d}.markup-menu-row{cursor:pointer;width:100%;color:inherit;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:7px 8px;font-family:inherit;font-size:13px;display:flex}.markup-menu-row:hover{background:var(--markup-hover)}.markup-menu-row:disabled{opacity:.5;cursor:default}.markup-menu-row:disabled:hover{background:0 0}.markup-menu-row .ic{width:16px;height:16px;color:var(--markup-muted);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.markup-menu-row .lbl{flex-direction:column;flex:1;min-width:0;display:flex}.markup-menu-row .lbl .sub{color:var(--markup-muted);margin-top:1px;font-size:11px}.markup-menu-row .right{font-family:var(--markup-font-mono);color:var(--markup-muted);margin-left:auto;font-size:10.5px}.markup-menu-row.is-danger,.markup-menu-row.is-danger .ic{color:var(--markup-danger)}.markup-menu-row.is-danger:hover{background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-menu-row .switch{background:var(--markup-border-strong);border-radius:9999px;flex-shrink:0;width:26px;height:16px;transition:background .12s;position:relative}.markup-menu-row .switch:after{content:\"\";background:var(--markup-surface);border-radius:9999px;width:12px;height:12px;transition:left .12s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000026}.markup-menu-row[data-on=true] .switch{background:var(--markup-brand)}.markup-menu-row[data-on=true] .switch:after{left:12px}.markup-menu-divider{background:var(--markup-border);height:1px;margin:4px 0}.markup-brand-line{font-family:var(--markup-font-mono);color:var(--markup-muted);border-top:1px solid var(--markup-border);align-items:center;gap:8px;margin-top:6px;padding:8px 10px;font-size:10.5px;text-decoration:none;display:flex}.markup-brand-line:hover{color:var(--markup-ink)}.markup-brand-line svg{color:var(--markup-brand)}.markup-brand-line .ver{margin-left:auto}.markup-id-who{border-bottom:1px solid var(--markup-border);flex-direction:column;gap:2px;margin-bottom:4px;padding:10px 8px 12px;display:flex}.markup-id-who .nm{color:var(--markup-ink);font-size:13.5px;font-weight:600}.markup-id-who .em{font-family:var(--markup-font-mono);color:var(--markup-muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.markup-id-anon{text-align:left;flex-direction:column;gap:10px;padding:14px 10px;display:flex}.markup-id-anon .h{letter-spacing:-.005em;color:var(--markup-ink);font-size:14px;font-weight:600}.markup-id-anon .sub{color:var(--markup-muted);font-size:12.5px;line-height:18px}.markup-id-anon button:not(.markup-menu-row){background:var(--markup-ink);width:100%;color:var(--markup-paper);height:32px;font:inherit;cursor:pointer;border:none;border-radius:7px;justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:500;display:inline-flex}.markup-id-anon button:disabled{opacity:.7;cursor:default}.markup-id-anon button:not(.markup-menu-row):hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 88%, var(--markup-surface))}.markup-hud-hidden-toast{z-index:10;background:var(--markup-ink);color:var(--markup-paper);letter-spacing:-.01em;box-shadow:var(--markup-shadow);pointer-events:none;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:12px;font-weight:500;animation:.22s ease-out markup-hud-hidden-in,.32s ease-in 4.6s forwards markup-hud-hidden-out;display:inline-flex;position:fixed;bottom:24px}.markup-hud-hidden-toast-right{right:24px}.markup-hud-hidden-toast-left{left:24px}.markup-hud-hidden-toast-center{width:max-content;margin-inline:auto;left:0;right:0}.markup-kbd{background:color-mix(in srgb, var(--markup-paper) 14%, transparent);min-width:18px;height:18px;color:var(--markup-paper);font-family:var(--markup-font);border-radius:4px;justify-content:center;align-items:center;padding:0 5px;font-size:10px;font-weight:600;line-height:1;display:inline-flex}.markup-kbd.is-inline{background:color-mix(in srgb, var(--markup-ink) 8%, transparent);min-width:14px;height:14px;color:var(--markup-muted);border-radius:3px;padding:0 3px;font-size:9.5px}@keyframes markup-hud-hidden-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes markup-hud-hidden-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}.markup-pins-layer{pointer-events:none;position:fixed;inset:0}.markup-pin{border:2px solid var(--markup-paper);background:var(--markup-brand);color:#fff;width:28px;height:28px;font-family:var(--markup-font-mono);cursor:pointer;pointer-events:auto;box-shadow:0 4px 14px -4px #00000059, 0 0 0 1px color-mix(in srgb, var(--markup-brand) 50%, transparent);border-radius:999px 999px 999px 4px;justify-content:center;align-items:center;margin:0;padding:0;font-size:11.5px;font-weight:600;line-height:1;transition:background .15s,color .15s,opacity .15s,top .2s,left .2s;display:inline-flex;position:absolute;transform:translate(-50%,-100%)}.markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 92%, black)}:host([data-theme=dark]) .markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 88%, var(--markup-paper))}@media (prefers-color-scheme:dark){:host(:not([data-theme])) .markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 88%, var(--markup-paper))}}.markup-pin.is-active{background:var(--markup-brand);color:#fff;border-color:var(--markup-paper)}.markup-pin.is-anchor{anchor-name:--markup-active-anchor}.markup-pin.is-unresolved{opacity:.6}.markup-pin-ghost{background:var(--markup-brand);color:#fff;cursor:default;pointer-events:none;animation:1.2s ease-in-out infinite markup-ghost-pulse}.markup-pin-num{pointer-events:none;justify-content:center;align-items:center;display:inline-flex}.markup-pin-count{background:var(--markup-ink);min-width:16px;height:16px;color:var(--markup-paper);font-family:var(--markup-font-mono);text-align:center;border:2px solid var(--markup-paper);pointer-events:none;border-radius:999px;padding:0 4px;font-size:9.5px;font-weight:600;line-height:12px;position:absolute;top:-6px;right:-8px}@keyframes markup-ghost-pulse{0%,to{box-shadow:0 4px 14px -4px #00000059,0 0 #e35d2a66}50%{box-shadow:0 4px 14px -4px #00000059,0 0 0 10px #e35d2a00}}.markup-placement-overlay{background:var(--markup-overlay-tint);cursor:crosshair;pointer-events:auto;z-index:1;animation:.18s ease-out markup-overlay-in;position:fixed;inset:0}.markup-placement-cursor-help{background:var(--markup-ink);color:var(--markup-paper);letter-spacing:-.01em;box-shadow:var(--markup-shadow);pointer-events:none;border-radius:999px;padding:10px 16px;font-size:12px;font-weight:500;animation:.22s ease-out 60ms backwards markup-help-in;position:fixed;top:24px;left:50%;transform:translate(-50%)}@keyframes markup-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes markup-help-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}.markup-popover{width:360px;max-width:calc(100vw - 24px);height:auto;max-height:calc(100dvh - 24px);inset:auto;left:var(--markup-pop-x,0);top:var(--markup-pop-y,0);background:var(--markup-paper);color:var(--markup-ink);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius);box-shadow:var(--markup-shadow);pointer-events:auto;flex-direction:column;gap:0;margin:0;padding:0;animation:.16s ease-out markup-popover-in;display:flex;position:fixed;overflow:hidden}@supports (anchor-name:--x){.markup-popover{position-anchor:--markup-active-anchor;left:calc(anchor(right) + 8px);top:calc(anchor(top) - 9px);position-try-fallbacks:flip-block, flip-inline, flip-block flip-inline;position-try-order:most-block-size}.markup-popover.is-floating{left:var(--markup-pop-x,0);top:var(--markup-pop-y,0);position-try-fallbacks:none}}.markup-popover.is-hud-hidden{display:none}@keyframes markup-popover-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.markup-popover-header{border-bottom:1px solid var(--markup-border);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.markup-popover.is-dragging .markup-popover-header{cursor:grabbing}.markup-popover-header-actions{align-items:center;gap:4px;display:flex}.markup-popover-title{min-width:0;font-family:var(--markup-font-mono);letter-spacing:.02em;color:var(--markup-muted);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-size:11px;line-height:1;overflow:hidden}.markup-thread-menu{display:flex;position:relative}.markup-thread-menu-list{z-index:10;background:var(--markup-paper);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius);min-width:160px;box-shadow:var(--markup-shadow);padding:4px;animation:.12s ease-out markup-menu-in;position:absolute;top:calc(100% + 6px);right:0}.markup-thread-menu-item{border-radius:var(--markup-radius-sm);width:100%;color:var(--markup-ink);text-align:left;cursor:pointer;background:0 0;border:none;padding:7px 10px;font-size:13px;transition:background .1s,color .1s;display:block}.markup-thread-menu-item:hover{background:var(--markup-border)}.markup-thread-menu-item.is-danger{color:var(--markup-danger,#dc2626)}.markup-thread-menu-item.is-danger:hover{background:color-mix(in srgb, var(--markup-danger,#dc2626) 10%, transparent)}.markup-thread-menu-item:disabled{opacity:.5;cursor:default}@keyframes markup-menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.markup-popover-body{border-top:1px solid var(--markup-border);background:var(--markup-paper);flex-direction:column;gap:6px;padding:10px 12px 8px;display:flex}.markup-popover-header+.markup-popover-body{border-top:none}.markup-popover-byline{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markup-popover-name{color:var(--markup-ink);font-weight:500}.markup-icon-btn{border-radius:var(--markup-radius-sm);width:24px;height:24px;color:var(--markup-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:inline-flex}.markup-icon-btn:hover,.markup-icon-btn.is-open{background:var(--markup-border);color:var(--markup-ink)}.markup-comments{flex-direction:column;max-height:420px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.markup-comment{border-bottom:1px solid var(--markup-border);grid-template-columns:26px 1fr;align-items:start;gap:0 10px;padding:12px;display:grid}.markup-comment:last-child{border-bottom:none}.markup-comment>:not(.markup-comment-avatar){grid-column:2}.markup-comment-avatar{background:var(--markup-border);width:26px;height:26px;color:var(--markup-ink);font-family:var(--markup-font-mono);letter-spacing:.02em;text-transform:uppercase;-webkit-user-select:none;user-select:none;border-radius:999px;grid-area:1/1/span 4;justify-content:center;align-items:center;margin-top:-3px;font-size:10.5px;font-weight:600;display:inline-flex;overflow:hidden}.markup-avatar-initials{text-box-trim:trim-both;text-box-edge:cap alphabetic;line-height:1}.markup-avatar-img{object-fit:cover;width:100%;height:100%;display:block}.markup-comment-avatar[data-tone=\"1\"]{color:oklch(25% .07 230);background:oklch(85% .07 200)}.markup-comment-avatar[data-tone=\"2\"]{color:oklch(30% .1 150);background:oklch(88% .07 130)}.markup-comment-avatar[data-tone=\"3\"]{color:oklch(35% .1 40);background:oklch(90% .05 50)}.markup-comment-avatar[data-tone=\"4\"]{color:oklch(30% .1 320);background:oklch(87% .07 320)}.markup-comment-avatar[data-tone=\"5\"]{color:oklch(32% .09 70);background:oklch(88% .06 80)}.markup-comment-meta{align-items:center;gap:8px;min-width:0;margin-bottom:4px;font-size:13px;display:flex}.markup-comment-author{color:var(--markup-ink);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.markup-comment-badge{background:color-mix(in srgb, var(--markup-team) 12%, transparent);height:14px;color:var(--markup-team);font-family:var(--markup-font-mono);letter-spacing:.12em;text-transform:uppercase;border-radius:999px;align-items:center;padding:0 5px;font-size:9px;font-weight:500;line-height:1;display:inline-flex}.markup-comment-badge.is-agent{background:color-mix(in srgb, var(--markup-brand) 14%, transparent);color:var(--markup-brand);letter-spacing:normal;justify-content:center;width:14px;padding:0}.markup-comment-time{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;white-space:nowrap;flex-shrink:0;font-size:10.5px}.markup-comment-body{color:var(--markup-ink);white-space:pre-wrap;word-break:break-word;margin:0;font-size:13.5px;line-height:19px}.markup-comment-edited{color:var(--markup-muted);font-family:var(--markup-font-mono);margin-left:2px;font-size:10.5px}.markup-comment-edited:before{content:\" · \"}.markup-thread-actions{align-items:center;gap:4px;display:flex}.markup-comment-meta .markup-reaction-picker-wrap,.markup-thread-actions{margin-left:auto}.markup-comment-meta .markup-reaction-add{width:22px;height:22px;margin-top:-4px;margin-bottom:-4px}.markup-reaction-picker-wrap>.markup-icon-btn,.markup-comment-menu>.markup-icon-btn{margin-top:-4px;margin-bottom:-4px}.markup-comment-menu.is-up .markup-thread-menu-list{animation-name:markup-menu-in-up;top:auto;bottom:calc(100% + 6px)}.markup-comment-menu.is-side .markup-thread-menu-list{animation-name:markup-menu-in-side;top:-4px;right:calc(100% + 2px)}@keyframes markup-menu-in-side{0%{opacity:0;transform:translate(4px)}to{opacity:1;transform:translate(0)}}@keyframes markup-menu-in-up{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.markup-comment{position:relative}.markup-reactions{flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px;display:flex}.markup-reaction-chip{border:1px solid var(--markup-border);background:var(--markup-surface-3);color:var(--markup-ink);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 7px;font-size:11.5px;line-height:1.2;transition:background .12s,border-color .12s;display:inline-flex}.markup-reaction-chip:hover:not(:disabled){background:var(--markup-hover)}.markup-reaction-chip.is-mine{background:var(--markup-accent-soft);border-color:color-mix(in srgb, var(--markup-brand) 50%, transparent);color:var(--markup-accent-ink)}.markup-reaction-chip.is-mine:hover:not(:disabled){background:color-mix(in srgb, var(--markup-brand) 18%, transparent)}.markup-reaction-chip:disabled{cursor:default;opacity:.6}.markup-reaction-emoji{font-size:13px;line-height:1}.markup-reaction-count{font-family:var(--markup-font-mono);letter-spacing:.04em;color:var(--markup-muted);font-size:10.5px}.markup-reaction-chip.is-mine .markup-reaction-count{color:var(--markup-accent-ink)}.markup-reaction-picker-wrap{opacity:0;flex:none;transition:opacity .12s;display:inline-flex;position:relative}.markup-comment:hover .markup-reaction-picker-wrap,.markup-comment:focus-within .markup-reaction-picker-wrap,.markup-reaction-picker-wrap.is-open{opacity:1}.markup-reaction-add{width:22px;height:22px;color:var(--markup-muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:13px;line-height:1;transition:background .12s,color .12s;display:inline-flex}.markup-reaction-add:hover,.markup-reaction-add.is-open{background:var(--markup-hover);color:var(--markup-ink)}.markup-reaction-picker{z-index:1;border:1px solid var(--markup-border-strong);background:var(--markup-paper);border-radius:8px;gap:2px;padding:4px;animation:.12s markup-menu-in;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 1px 2px #1a16140f,0 8px 28px #1a16141a}.markup-reaction-picker-wrap.is-up .markup-reaction-picker{animation-name:markup-menu-in-up;top:auto;bottom:calc(100% + 6px)}.markup-reaction-picker-wrap.is-side .markup-reaction-picker{animation-name:markup-menu-in-side;top:-4px;right:calc(100% + 2px)}.markup-reaction-picker-item{cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:16px;line-height:1;transition:background .12s;display:inline-flex}.markup-reaction-picker-item:hover{background:color-mix(in srgb, var(--markup-ink) 8%, transparent)}.markup-reaction-picker-item.is-mine{background:color-mix(in srgb, var(--markup-brand) 14%, transparent)}.markup-comment-edit-form{flex-direction:column;gap:6px;display:flex}.markup-comment-edit-actions{justify-content:flex-end;gap:6px;display:flex}.markup-composer{flex-direction:column;display:flex;position:relative}.markup-composer-input{width:100%;min-height:38px;max-height:120px;color:var(--markup-ink);font-family:var(--markup-font);background:0 0;border:none;border-radius:0;padding:2px 0;font-size:13.5px;line-height:19px;transition:none;overflow-y:auto}.markup-composer-input:focus-visible{box-shadow:none;outline:none}.markup-composer-footer-wrap{grid-template-rows:0fr;transition:grid-template-rows .15s;display:grid}.markup-composer.is-filled .markup-composer-footer-wrap{grid-template-rows:1fr}.markup-composer-footer{opacity:0;background:0 0;border:none;border-radius:0;justify-content:space-between;align-items:center;gap:8px;padding:0;transition:opacity .1s;display:flex;overflow:hidden}.markup-composer.is-filled .markup-composer-footer{opacity:1;transition-delay:60ms}.markup-composer-hint{font-family:var(--markup-font-mono);letter-spacing:.04em;color:var(--markup-muted);align-items:center;gap:3px;font-size:10.5px;display:inline-flex}.markup-composer-hint-label{margin-left:2px}.markup-composer-error{color:var(--markup-brand)}.markup-composer-actions{align-items:center;gap:6px;display:flex}.markup-composer .markup-btn-primary{background:var(--markup-ink);height:26px;color:var(--markup-paper);border-radius:6px;padding:0 10px}.markup-composer .markup-btn-primary:hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 88%, var(--markup-paper))}.markup-composer-actions-empty{transition:opacity .12s;position:absolute;bottom:0;right:0}.markup-composer.is-filled .markup-composer-actions-empty{opacity:0;pointer-events:none}.markup-author-prompt{flex-direction:column;gap:10px;padding:12px;display:flex}.markup-author-status{color:var(--markup-muted);margin:0;font-size:12px}.markup-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;height:36px;color:var(--markup-ink);outline:none;padding:0 10px;font-size:14px;transition:border-color .12s,box-shadow .12s}.markup-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-btn{border-radius:var(--markup-radius-sm);height:30px;color:var(--markup-ink);cursor:pointer;letter-spacing:-.01em;white-space:nowrap;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:500;transition:background .12s,border-color .12s,color .12s,opacity .12s;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:1px dashed var(--markup-border-strong);color:var(--markup-muted);border-radius:6px;align-items:center;gap:8px;margin-top:0;padding:6px 8px;font-size:11.5px;display:flex}.markup-screenshot-status{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;display:flex}.markup-screenshot-row.is-failed{opacity:.85;border-style:dotted}.markup-screenshot-toggle{cursor:pointer;color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;transition:color .12s;display:flex}.markup-screenshot-toggle:hover{color:var(--markup-ink)}.markup-screenshot-checkbox{width:12px;height:12px;accent-color:var(--markup-brand);cursor:pointer;margin:0}.markup-screenshot-thumb{border:1px solid var(--markup-border-strong);object-fit:cover;border-radius:3px;flex-shrink:0;width:auto;height:25px;margin:-5px 0 -5px auto;display:block}.markup-screenshot-redacted{font-family:var(--markup-font-mono);color:var(--markup-muted);margin-left:auto;font-size:10px}.markup-screenshot-redacted-chip{background:color-mix(in srgb, var(--markup-success,oklch(62% .16 150)) 16%, transparent);color:var(--markup-success,oklch(62% .16 150));font-family:var(--markup-font-mono);cursor:pointer;border:none;border-radius:999px;align-items:center;gap:3px;padding:1px 7px;font-size:10px;display:inline-flex}.markup-screenshot-redacted-chip:hover{filter:brightness(1.05)}.markup-screenshot-redacted-arrow{font-style:normal}.markup-screenshot-redacted-list{margin-top:3px;padding-left:10px}.markup-screenshot-redacted-selector{font-family:var(--markup-font-mono);color:var(--markup-muted);font-size:9px;display:block}.markup-screenshot-help{font-family:var(--markup-font-mono);color:var(--markup-muted);margin:5px 0 0;font-size:10px;line-height:1.5}.markup-screenshot-help-code{font-family:var(--markup-font-mono);color:var(--markup-ink)}.markup-comment-screenshot{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);cursor:pointer;background:0 0;margin-top:8px;padding:0;transition:border-color .12s,opacity .12s;display:block;overflow:hidden}.markup-comment-screenshot:hover{border-color:var(--markup-brand);opacity:.9}.markup-comment-screenshot img{object-fit:cover;object-position:top;width:100%;height:auto;max-height:120px;display:block}.markup-lightbox{background:#1a1614e0;border:none;width:100%;max-width:100%;height:100%;max-height:100%;margin:0;padding:24px;position:fixed;inset:0}.markup-lightbox[open]{justify-content:center;align-items:center;display:flex}.markup-lightbox::backdrop{display:none}.markup-lightbox-img{border-radius:var(--markup-radius);object-fit:contain;max-width:100%;max-height:100%;box-shadow:var(--markup-shadow);animation:.16s ease-out markup-lightbox-in}.markup-lightbox-close{color:#fdfcfa;background:#1a161499;position:absolute;top:16px;right:16px}.markup-lightbox-close:hover{color:#fdfcfa;background:#1a1614d9}@keyframes markup-lightbox-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.markup-toolbar,.markup-pin,.markup-icon-btn,.markup-btn,.markup-popover,.markup-pin-ghost,.markup-placement-overlay,.markup-placement-cursor-help,.markup-lightbox-img{transition:none;animation:none}}.markup-mention-chip{background:var(--markup-accent-soft);color:var(--markup-accent-ink);border-radius:3px;padding:0 2px;font-weight:500;display:inline-block}.markup-mention-input{white-space:pre-wrap;overflow-wrap:anywhere;cursor:text;outline:none;position:relative}.markup-mention-input[aria-disabled=true]{opacity:.6;cursor:default}.markup-mention-input[data-empty]:before{content:attr(data-placeholder);color:var(--markup-muted);pointer-events:none;position:absolute;inset:0 auto auto 0}.markup-mention-input .markup-mention-chip{white-space:nowrap;padding:0 3px}.markup-comment-edit-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;min-height:58px;max-height:200px;color:var(--markup-ink);font:inherit;padding:8px 10px;font-size:13px;line-height:1.5;overflow-y:auto}.markup-comment-edit-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-comment-edit-input[data-empty]:before{inset:8px auto auto 10px}.markup-mention-picker{z-index:10;background:var(--markup-paper);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);max-height:180px;box-shadow:var(--markup-shadow);margin:0 0 4px;padding:4px;list-style:none;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto}.markup-mention-picker-item{border-radius:var(--markup-radius-sm);cursor:pointer;color:var(--markup-ink);justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.markup-mention-picker-item.is-active{background:color-mix(in srgb, var(--markup-brand) 12%, transparent)}.markup-mention-picker-name{font-weight:500}.markup-mention-picker-trigger{color:var(--markup-muted);font-family:var(--markup-font-mono);font-size:10px}.markup-notifications-panel{max-height:min(60vh,420px);color:var(--markup-ink);flex-direction:column;display:flex}.markup-notifications-panel-header{border-bottom:1px solid var(--markup-border);align-items:center;gap:8px;padding:8px 10px;display:flex}.markup-notifications-panel-header .markup-eyebrow{flex:1}.markup-notifications-panel-actions{align-items:center;gap:8px;display:flex}.markup-notifications-panel-mark-all{color:var(--markup-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:11px}.markup-notifications-panel-mark-all:hover{color:var(--markup-ink)}.markup-notifications-panel-body{flex:1;overflow-y:auto}.markup-notifications-panel-empty,.markup-notifications-panel-error{text-align:center;color:var(--markup-muted);padding:24px 12px;font-size:12px}.markup-notifications-panel-empty-title{color:var(--markup-ink);margin:0 0 4px;font-weight:500}.markup-notifications-panel-empty-sub{color:var(--markup-muted);margin:0;line-height:1.4}.markup-notifications-panel-error{color:var(--markup-danger,#b91c1c)}.markup-notifications-panel-list{margin:0;padding:4px;list-style:none}.markup-notifications-panel-row{border-radius:var(--markup-radius-sm);text-align:start;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:none;flex-direction:column;gap:4px;padding:8px 10px;display:flex}.markup-notifications-panel-row:hover{background:color-mix(in srgb, var(--markup-brand) 8%, transparent)}.markup-notifications-panel-row.is-unread{background:color-mix(in srgb, var(--markup-brand) 5%, transparent)}.markup-notifications-panel-meta{align-items:center;gap:6px;font-size:11px;display:flex}.markup-notifications-panel-dot{background:var(--markup-brand);border-radius:999px;flex-shrink:0;width:6px;height:6px}.markup-notifications-panel-actor{font-weight:600}.markup-notifications-panel-sep{color:var(--markup-muted)}.markup-notifications-panel-time{color:var(--markup-muted);font-family:var(--markup-font-mono);font-size:10px}.markup-notifications-panel-thread{color:var(--markup-muted);margin:0;font-size:12px}.markup-notifications-panel-thread-title{color:var(--markup-ink)}.markup-notifications-panel-excerpt{color:color-mix(in srgb, var(--markup-ink) 80%, transparent);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;font-style:italic;display:-webkit-box;overflow:hidden}.markup-panel-pop{z-index:11;pointer-events:auto;width:380px;max-width:calc(100vw - 24px);position:fixed;bottom:76px}.markup-panel-pop[data-panel=privacy]{width:340px}.markup-panel-pop[data-panel=shortcuts]{width:320px}.markup-panel-pop-right{right:22px}.markup-panel-pop-left{left:22px}.markup-panel-pop-center{left:50%;transform:translate(-50%)}.markup-panel-pop .markup-pop{width:100%;animation:.14s cubic-bezier(.2,.7,.2,1) markup-pop-in;position:static}.markup-panel-pop .markup-notifications-panel{max-height:min(60vh,480px)}.markup-panel-pop .markup-notifications-panel-header{padding:12px 14px}.markup-panel-pop .markup-notifications-panel-header .markup-icon-btn{display:none}.markup-pop[data-pop=privacy],.markup-pop[data-pop=shortcuts]{padding:0}.markup-panel{max-height:min(70vh,520px);color:var(--markup-ink);flex-direction:column;display:flex}.markup-panel-header{border-bottom:1px solid var(--markup-border);align-items:center;gap:8px;padding:12px 14px;display:flex}.markup-panel-header .markup-eyebrow{flex:1}.markup-panel-body{flex:1;padding:4px 14px 14px;overflow-y:auto}.markup-panel-section{border-bottom:1px solid var(--markup-border);padding:10px 0}.markup-panel-section:last-child{border-bottom:none;padding-bottom:2px}.markup-panel-section-title{font-family:var(--markup-font-mono);letter-spacing:.06em;text-transform:lowercase;color:var(--markup-muted);margin:0 0 6px;font-size:10px;font-weight:400}.markup-panel-text{color:var(--markup-ink-soft);margin:0;font-size:12.5px;line-height:1.5}.markup-panel-text strong{color:var(--markup-ink);font-weight:600}.markup-panel-mono{font-family:var(--markup-font-mono);color:var(--markup-ink);word-break:break-all;font-size:11.5px}.markup-panel-list{color:var(--markup-ink-soft);margin:0;padding-left:16px;font-size:12.5px;line-height:1.5}.markup-panel-list li{margin-bottom:3px}.markup-panel-list li::marker{color:var(--markup-muted)}.markup-panel-note{color:var(--markup-muted);margin:8px 0 0;font-size:11.5px;line-height:1.45}.markup-panel-error{color:var(--markup-danger);margin:8px 0 0;font-size:11.5px;line-height:1.45}.markup-panel-action{border:1px solid var(--markup-border-strong);width:100%;height:30px;color:var(--markup-ink);font:inherit;cursor:pointer;background:0 0;border-radius:7px;margin-top:10px;padding:0 10px;font-size:12.5px;transition:background .12s,border-color .12s,color .12s}.markup-panel-action:hover:not(:disabled){background:var(--markup-hover)}.markup-panel-action:disabled{opacity:.6;cursor:default}.markup-panel-action.is-danger{border-color:color-mix(in srgb, var(--markup-danger) 45%, transparent);color:var(--markup-danger)}.markup-panel-action.is-danger:hover:not(:disabled){background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-shortcut-list{margin:0;padding:0;list-style:none}.markup-shortcut-row{align-items:center;gap:10px;min-height:24px;padding:2px 0;display:flex}.markup-shortcut-label{min-width:0;color:var(--markup-ink-soft);flex:1;font-size:12.5px;line-height:1.4}.markup-shortcut-keys{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.markup-shortcut-chord{align-items:center;gap:3px;display:inline-flex}.markup-shortcut-or{color:var(--markup-muted);margin-right:1px;font-size:10px}", me = class extends C {
|
|
252
252
|
state = { hasError: !1 };
|
|
253
253
|
static getDerivedStateFromError() {
|
|
254
254
|
return { hasError: !0 };
|
|
@@ -261,12 +261,12 @@ var pe = ":host{--markup-paper:#fdfcfa;--markup-surface:#fff;--markup-surface-2:
|
|
|
261
261
|
render() {
|
|
262
262
|
return this.state.hasError ? null : this.props.children;
|
|
263
263
|
}
|
|
264
|
-
},
|
|
264
|
+
}, M = 1e3;
|
|
265
265
|
function he(e) {
|
|
266
266
|
let t = !1, n = 0;
|
|
267
267
|
return (r) => {
|
|
268
268
|
let i = Date.now();
|
|
269
|
-
t || i - n <
|
|
269
|
+
t || i - n < M || (t = !0, n = i, fetch(`${e.apiUrl.replace(/\/+$/, "")}/widget/error`, {
|
|
270
270
|
method: "POST",
|
|
271
271
|
headers: {
|
|
272
272
|
"content-type": "application/json",
|
|
@@ -4630,167 +4630,8 @@ function es(e) {
|
|
|
4630
4630
|
return e && e.trim().split(/\s+/).slice(0, 2).map((e) => e[0]?.toUpperCase() ?? "").join("") || null;
|
|
4631
4631
|
}
|
|
4632
4632
|
//#endregion
|
|
4633
|
-
//#region src/runtime/ui/notifications-panel.tsx
|
|
4634
|
-
function ts({ items: e, isLoading: t, error: n, onBack: r, onItemClick: i, onMarkAllRead: a, isMarkingAll: o }) {
|
|
4635
|
-
let s = e.some((e) => e.readAt == null);
|
|
4636
|
-
return /* @__PURE__ */ Q("div", {
|
|
4637
|
-
class: "markup-notifications-panel",
|
|
4638
|
-
role: "dialog",
|
|
4639
|
-
"aria-label": "Notifications",
|
|
4640
|
-
children: [/* @__PURE__ */ Q("header", {
|
|
4641
|
-
class: "markup-notifications-panel-header",
|
|
4642
|
-
children: [
|
|
4643
|
-
/* @__PURE__ */ Q("button", {
|
|
4644
|
-
type: "button",
|
|
4645
|
-
class: "markup-icon-btn",
|
|
4646
|
-
title: "Back to menu",
|
|
4647
|
-
"aria-label": "Back to menu",
|
|
4648
|
-
onClick: r,
|
|
4649
|
-
children: /* @__PURE__ */ Q(Mo, { size: 16 })
|
|
4650
|
-
}),
|
|
4651
|
-
/* @__PURE__ */ Q("span", {
|
|
4652
|
-
class: "markup-eyebrow",
|
|
4653
|
-
children: "notifications"
|
|
4654
|
-
}),
|
|
4655
|
-
/* @__PURE__ */ Q("div", {
|
|
4656
|
-
class: "markup-notifications-panel-actions",
|
|
4657
|
-
children: s ? /* @__PURE__ */ Q("button", {
|
|
4658
|
-
type: "button",
|
|
4659
|
-
class: "markup-notifications-panel-mark-all",
|
|
4660
|
-
disabled: o,
|
|
4661
|
-
onClick: a,
|
|
4662
|
-
children: o ? "Marking…" : "Mark all read"
|
|
4663
|
-
}) : null
|
|
4664
|
-
})
|
|
4665
|
-
]
|
|
4666
|
-
}), /* @__PURE__ */ Q("div", {
|
|
4667
|
-
class: "markup-notifications-panel-body",
|
|
4668
|
-
children: n ? /* @__PURE__ */ Q("p", {
|
|
4669
|
-
class: "markup-notifications-panel-error",
|
|
4670
|
-
children: n
|
|
4671
|
-
}) : t ? /* @__PURE__ */ Q("p", {
|
|
4672
|
-
class: "markup-notifications-panel-empty",
|
|
4673
|
-
children: "Loading…"
|
|
4674
|
-
}) : e.length === 0 ? /* @__PURE__ */ Q("div", {
|
|
4675
|
-
class: "markup-notifications-panel-empty",
|
|
4676
|
-
children: [/* @__PURE__ */ Q("p", {
|
|
4677
|
-
class: "markup-notifications-panel-empty-title",
|
|
4678
|
-
children: "You're all caught up."
|
|
4679
|
-
}), /* @__PURE__ */ Q("p", {
|
|
4680
|
-
class: "markup-notifications-panel-empty-sub",
|
|
4681
|
-
children: "New @mentions on this site land here."
|
|
4682
|
-
})]
|
|
4683
|
-
}) : /* @__PURE__ */ Q("ul", {
|
|
4684
|
-
class: "markup-notifications-panel-list",
|
|
4685
|
-
children: e.map((e) => /* @__PURE__ */ Q("li", { children: /* @__PURE__ */ Q("button", {
|
|
4686
|
-
type: "button",
|
|
4687
|
-
class: Z("markup-notifications-panel-row", e.readAt == null && "is-unread"),
|
|
4688
|
-
onClick: () => i(e),
|
|
4689
|
-
children: [
|
|
4690
|
-
/* @__PURE__ */ Q("div", {
|
|
4691
|
-
class: "markup-notifications-panel-meta",
|
|
4692
|
-
children: [
|
|
4693
|
-
e.readAt == null ? /* @__PURE__ */ Q("span", {
|
|
4694
|
-
"aria-hidden": "true",
|
|
4695
|
-
class: "markup-notifications-panel-dot"
|
|
4696
|
-
}) : null,
|
|
4697
|
-
/* @__PURE__ */ Q("span", {
|
|
4698
|
-
class: "markup-notifications-panel-actor",
|
|
4699
|
-
children: e.actorName
|
|
4700
|
-
}),
|
|
4701
|
-
e.actorVia === "mcp" ? /* @__PURE__ */ Q("span", {
|
|
4702
|
-
class: "markup-comment-badge is-agent",
|
|
4703
|
-
role: "img",
|
|
4704
|
-
"aria-label": "Written by an AI agent",
|
|
4705
|
-
title: "Written by an AI agent on this person's behalf",
|
|
4706
|
-
children: /* @__PURE__ */ Q(Zo, { size: 11 })
|
|
4707
|
-
}) : null,
|
|
4708
|
-
/* @__PURE__ */ Q("span", {
|
|
4709
|
-
class: "markup-notifications-panel-sep",
|
|
4710
|
-
children: "·"
|
|
4711
|
-
}),
|
|
4712
|
-
/* @__PURE__ */ Q("span", {
|
|
4713
|
-
class: "markup-notifications-panel-time",
|
|
4714
|
-
children: ns(e.createdAt)
|
|
4715
|
-
})
|
|
4716
|
-
]
|
|
4717
|
-
}),
|
|
4718
|
-
/* @__PURE__ */ Q("p", {
|
|
4719
|
-
class: "markup-notifications-panel-thread",
|
|
4720
|
-
children: [
|
|
4721
|
-
"mentioned you in",
|
|
4722
|
-
" ",
|
|
4723
|
-
/* @__PURE__ */ Q("span", {
|
|
4724
|
-
class: "markup-notifications-panel-thread-title",
|
|
4725
|
-
children: e.threadTitle
|
|
4726
|
-
})
|
|
4727
|
-
]
|
|
4728
|
-
}),
|
|
4729
|
-
e.commentExcerpt ? /* @__PURE__ */ Q("p", {
|
|
4730
|
-
class: "markup-notifications-panel-excerpt",
|
|
4731
|
-
children: [
|
|
4732
|
-
"“",
|
|
4733
|
-
e.commentExcerpt,
|
|
4734
|
-
"”"
|
|
4735
|
-
]
|
|
4736
|
-
}) : null
|
|
4737
|
-
]
|
|
4738
|
-
}) }, e._id))
|
|
4739
|
-
})
|
|
4740
|
-
})]
|
|
4741
|
-
});
|
|
4742
|
-
}
|
|
4743
|
-
function ns(e) {
|
|
4744
|
-
let t = Date.now() - e, n = Math.floor(t / 1e3);
|
|
4745
|
-
if (n < 60) return "just now";
|
|
4746
|
-
let r = Math.floor(n / 60);
|
|
4747
|
-
if (r < 60) return `${r}m ago`;
|
|
4748
|
-
let i = Math.floor(r / 60);
|
|
4749
|
-
if (i < 24) return `${i}h ago`;
|
|
4750
|
-
let a = Math.floor(i / 24);
|
|
4751
|
-
return a < 30 ? `${a}d ago` : new Date(e).toLocaleDateString();
|
|
4752
|
-
}
|
|
4753
|
-
//#endregion
|
|
4754
|
-
//#region src/runtime/ui/inbox-popover.tsx
|
|
4755
|
-
function rs({ position: e, items: t, isLoading: n, error: r, isMarkingAll: i, onClose: a, onItemClick: o, onMarkAllRead: s }) {
|
|
4756
|
-
let c = z(null);
|
|
4757
|
-
return R(() => {
|
|
4758
|
-
function e(e) {
|
|
4759
|
-
let t = c.current;
|
|
4760
|
-
if (t && !e.composedPath().includes(t)) {
|
|
4761
|
-
if (e.composedPath().some((e) => e?.dataset?.kind === "inbox")) return;
|
|
4762
|
-
a();
|
|
4763
|
-
}
|
|
4764
|
-
}
|
|
4765
|
-
function t(e) {
|
|
4766
|
-
e.key === "Escape" && a();
|
|
4767
|
-
}
|
|
4768
|
-
return document.addEventListener("click", e, !0), document.addEventListener("keydown", t), () => {
|
|
4769
|
-
document.removeEventListener("click", e, !0), document.removeEventListener("keydown", t);
|
|
4770
|
-
};
|
|
4771
|
-
}, [a]), /* @__PURE__ */ Q("div", {
|
|
4772
|
-
ref: c,
|
|
4773
|
-
class: Z("markup-inbox-pop", e === "bottom-left" ? "markup-inbox-pop-left" : e === "bottom-center" ? "markup-inbox-pop-center" : "markup-inbox-pop-right"),
|
|
4774
|
-
role: "dialog",
|
|
4775
|
-
"aria-label": "Inbox",
|
|
4776
|
-
children: /* @__PURE__ */ Q("div", {
|
|
4777
|
-
class: "markup-pop",
|
|
4778
|
-
"data-pop": "inbox",
|
|
4779
|
-
children: /* @__PURE__ */ Q(ts, {
|
|
4780
|
-
items: t,
|
|
4781
|
-
isLoading: n,
|
|
4782
|
-
error: r,
|
|
4783
|
-
isMarkingAll: i,
|
|
4784
|
-
onBack: a,
|
|
4785
|
-
onItemClick: o,
|
|
4786
|
-
onMarkAllRead: s
|
|
4787
|
-
})
|
|
4788
|
-
})
|
|
4789
|
-
});
|
|
4790
|
-
}
|
|
4791
|
-
//#endregion
|
|
4792
4633
|
//#region src/runtime/use-drag.ts
|
|
4793
|
-
function
|
|
4634
|
+
function ts(e) {
|
|
4794
4635
|
let t = z(e);
|
|
4795
4636
|
t.current = e;
|
|
4796
4637
|
let [n, r] = L(!1);
|
|
@@ -4818,8 +4659,8 @@ function is(e) {
|
|
|
4818
4659
|
h = !0, r(!0), t.current.onStart?.();
|
|
4819
4660
|
}
|
|
4820
4661
|
let a = Math.max(p, window.innerWidth - u - p), _ = Math.max(p, window.innerHeight - d - p), v = {
|
|
4821
|
-
left:
|
|
4822
|
-
top:
|
|
4662
|
+
left: ns(c + n, p, a),
|
|
4663
|
+
top: ns(l + i, p, _)
|
|
4823
4664
|
};
|
|
4824
4665
|
g = v, t.current.onMove(v);
|
|
4825
4666
|
}
|
|
@@ -4834,12 +4675,12 @@ function is(e) {
|
|
|
4834
4675
|
isDragging: n
|
|
4835
4676
|
};
|
|
4836
4677
|
}
|
|
4837
|
-
function
|
|
4678
|
+
function ns(e, t, n) {
|
|
4838
4679
|
return Math.max(t, Math.min(n, e));
|
|
4839
4680
|
}
|
|
4840
4681
|
//#endregion
|
|
4841
4682
|
//#region src/runtime/use-focus-trap.ts
|
|
4842
|
-
var
|
|
4683
|
+
var rs = [
|
|
4843
4684
|
"a[href]",
|
|
4844
4685
|
"button:not([disabled])",
|
|
4845
4686
|
"input:not([disabled])",
|
|
@@ -4847,14 +4688,14 @@ var os = [
|
|
|
4847
4688
|
"textarea:not([disabled])",
|
|
4848
4689
|
"[tabindex]:not([tabindex=\"-1\"])"
|
|
4849
4690
|
].join(",");
|
|
4850
|
-
function
|
|
4691
|
+
function is(e, t) {
|
|
4851
4692
|
R(() => {
|
|
4852
4693
|
if (!t) return;
|
|
4853
4694
|
let n = e.current;
|
|
4854
4695
|
if (!n) return;
|
|
4855
4696
|
function r(e) {
|
|
4856
4697
|
if (e.key !== "Tab") return;
|
|
4857
|
-
let t = Array.from(n.querySelectorAll(
|
|
4698
|
+
let t = Array.from(n.querySelectorAll(rs)), r = t[0], i = t[t.length - 1];
|
|
4858
4699
|
if (!r || !i) return;
|
|
4859
4700
|
let a = n.getRootNode(), o = a instanceof ShadowRoot ? a.activeElement : document.activeElement;
|
|
4860
4701
|
(e.shiftKey ? o === r : o === i) && (e.preventDefault(), (e.shiftKey ? i : r).focus());
|
|
@@ -4864,7 +4705,7 @@ function ss(e, t) {
|
|
|
4864
4705
|
}
|
|
4865
4706
|
//#endregion
|
|
4866
4707
|
//#region src/runtime/use-object-url.ts
|
|
4867
|
-
function
|
|
4708
|
+
function as(e) {
|
|
4868
4709
|
let [t, n] = L(null);
|
|
4869
4710
|
return R(() => {
|
|
4870
4711
|
if (!e) {
|
|
@@ -4877,7 +4718,7 @@ function cs(e) {
|
|
|
4877
4718
|
}
|
|
4878
4719
|
//#endregion
|
|
4879
4720
|
//#region src/runtime/ui/author-prompt.tsx
|
|
4880
|
-
function
|
|
4721
|
+
function os({ isPending: e, isConnecting: t = !1, isSigningIn: n = !1, onSubmit: r, onCancel: i, onSignIn: a }) {
|
|
4881
4722
|
let [o, s] = L(""), [c, l] = L(""), u = z(null);
|
|
4882
4723
|
R(() => {
|
|
4883
4724
|
u.current?.focus();
|
|
@@ -4956,27 +4797,27 @@ function ls({ isPending: e, isConnecting: t = !1, isSigningIn: n = !1, onSubmit:
|
|
|
4956
4797
|
}
|
|
4957
4798
|
//#endregion
|
|
4958
4799
|
//#region src/runtime/mention-input.ts
|
|
4959
|
-
var
|
|
4800
|
+
var ss = "data-markup-mention", cs = "data-markup-mention-name", ls = new Set([
|
|
4960
4801
|
"DIV",
|
|
4961
4802
|
"P",
|
|
4962
4803
|
"LI",
|
|
4963
4804
|
"BLOCKQUOTE",
|
|
4964
4805
|
"PRE"
|
|
4965
|
-
]),
|
|
4966
|
-
function
|
|
4806
|
+
]), us = 3, ds = 1;
|
|
4807
|
+
function fs(e) {
|
|
4967
4808
|
let t = "", n = (r) => {
|
|
4968
4809
|
let i = r.childNodes;
|
|
4969
4810
|
for (let a = 0; a < i.length; a++) {
|
|
4970
4811
|
let o = i[a];
|
|
4971
4812
|
if (!o) continue;
|
|
4972
|
-
if (o.nodeType ===
|
|
4813
|
+
if (o.nodeType === us) {
|
|
4973
4814
|
t += o.data;
|
|
4974
4815
|
continue;
|
|
4975
4816
|
}
|
|
4976
|
-
if (o.nodeType !==
|
|
4977
|
-
let s = o, c = s.getAttribute(
|
|
4817
|
+
if (o.nodeType !== ds) continue;
|
|
4818
|
+
let s = o, c = s.getAttribute(ss);
|
|
4978
4819
|
if (c) {
|
|
4979
|
-
let e =
|
|
4820
|
+
let e = ps(s);
|
|
4980
4821
|
t += Ir({
|
|
4981
4822
|
userId: c,
|
|
4982
4823
|
name: e
|
|
@@ -4987,77 +4828,77 @@ function hs(e) {
|
|
|
4987
4828
|
r === e && a === i.length - 1 || (t += "\n");
|
|
4988
4829
|
continue;
|
|
4989
4830
|
}
|
|
4990
|
-
|
|
4831
|
+
ls.has(s.tagName) && t !== "" && !t.endsWith("\n") && (t += "\n"), n(s);
|
|
4991
4832
|
}
|
|
4992
4833
|
};
|
|
4993
4834
|
return n(e), t;
|
|
4994
4835
|
}
|
|
4995
|
-
function
|
|
4996
|
-
return e.getAttribute(
|
|
4836
|
+
function ps(e) {
|
|
4837
|
+
return e.getAttribute(cs) || (e.textContent ?? "").replace(/^@/, "");
|
|
4997
4838
|
}
|
|
4998
|
-
function
|
|
4839
|
+
function ms(e, t, n) {
|
|
4999
4840
|
let r = e.createElement("span");
|
|
5000
|
-
return r.className = n, r.setAttribute("contenteditable", "false"), r.setAttribute(
|
|
4841
|
+
return r.className = n, r.setAttribute("contenteditable", "false"), r.setAttribute(ss, t.userId), r.setAttribute(cs, t.name), r.textContent = `@${t.name}`, r;
|
|
5001
4842
|
}
|
|
5002
|
-
function
|
|
4843
|
+
function hs(e, t, n) {
|
|
5003
4844
|
let r = e.createDocumentFragment();
|
|
5004
4845
|
for (let i of Nr(t)) {
|
|
5005
4846
|
if (i.type === "text") {
|
|
5006
4847
|
i.value && r.appendChild(e.createTextNode(i.value));
|
|
5007
4848
|
continue;
|
|
5008
4849
|
}
|
|
5009
|
-
r.appendChild(
|
|
4850
|
+
r.appendChild(ms(e, {
|
|
5010
4851
|
userId: i.userId,
|
|
5011
4852
|
name: i.name
|
|
5012
4853
|
}, n));
|
|
5013
4854
|
}
|
|
5014
4855
|
return r;
|
|
5015
4856
|
}
|
|
5016
|
-
function
|
|
4857
|
+
function gs(e) {
|
|
5017
4858
|
let t = e.getRootNode();
|
|
5018
4859
|
return typeof t.getSelection == "function" ? t.getSelection() : e.ownerDocument.getSelection();
|
|
5019
4860
|
}
|
|
5020
|
-
function
|
|
5021
|
-
let t =
|
|
4861
|
+
function _s(e) {
|
|
4862
|
+
let t = gs(e);
|
|
5022
4863
|
if (!t || t.rangeCount === 0 || !t.isCollapsed) return null;
|
|
5023
4864
|
let n = t.focusNode;
|
|
5024
|
-
return !n || n.nodeType !==
|
|
4865
|
+
return !n || n.nodeType !== us || !e.contains(n) || vs(n, e) ? null : {
|
|
5025
4866
|
node: n,
|
|
5026
4867
|
offset: t.focusOffset
|
|
5027
4868
|
};
|
|
5028
4869
|
}
|
|
5029
|
-
function
|
|
4870
|
+
function vs(e, t) {
|
|
5030
4871
|
let n = e;
|
|
5031
4872
|
for (; n && n !== t;) {
|
|
5032
|
-
if (n.nodeType ===
|
|
4873
|
+
if (n.nodeType === ds && n.hasAttribute("data-markup-mention")) return n;
|
|
5033
4874
|
n = n.parentNode;
|
|
5034
4875
|
}
|
|
5035
4876
|
return null;
|
|
5036
4877
|
}
|
|
5037
|
-
function
|
|
5038
|
-
let t =
|
|
4878
|
+
function ys(e) {
|
|
4879
|
+
let t = gs(e);
|
|
5039
4880
|
if (!t || t.rangeCount === 0 || !t.isCollapsed) return;
|
|
5040
4881
|
let n = t.focusNode;
|
|
5041
4882
|
if (!n || !e.contains(n)) return;
|
|
5042
|
-
let r =
|
|
4883
|
+
let r = vs(n, e);
|
|
5043
4884
|
if (!r) return;
|
|
5044
4885
|
let i = r.nextSibling;
|
|
5045
|
-
(!i || i.nodeType !==
|
|
4886
|
+
(!i || i.nodeType !== us) && (i = e.ownerDocument.createTextNode(""), r.parentNode?.insertBefore(i, r.nextSibling)), bs(e, i, 0);
|
|
5046
4887
|
}
|
|
5047
|
-
function
|
|
5048
|
-
let r =
|
|
4888
|
+
function bs(e, t, n) {
|
|
4889
|
+
let r = gs(e);
|
|
5049
4890
|
if (!r) return;
|
|
5050
4891
|
let i = e.ownerDocument.createRange();
|
|
5051
4892
|
i.setStart(t, n), i.collapse(!0), r.removeAllRanges(), r.addRange(i);
|
|
5052
4893
|
}
|
|
5053
|
-
function
|
|
4894
|
+
function xs(e) {
|
|
5054
4895
|
let t = Fr(e.node.data, e.offset);
|
|
5055
4896
|
return t ? {
|
|
5056
4897
|
...t,
|
|
5057
4898
|
textNode: e.node
|
|
5058
4899
|
} : null;
|
|
5059
4900
|
}
|
|
5060
|
-
function
|
|
4901
|
+
function Ss(e, t, n, r) {
|
|
5061
4902
|
if (Ir(n) == null) return !1;
|
|
5062
4903
|
let i = t.textNode;
|
|
5063
4904
|
if (!e.contains(i)) return !1;
|
|
@@ -5065,31 +4906,31 @@ function Ts(e, t, n, r) {
|
|
|
5065
4906
|
if (!a || t.caret > i.data.length) return !1;
|
|
5066
4907
|
i.deleteData(t.at, t.caret - t.at);
|
|
5067
4908
|
let o = i.splitText(t.at);
|
|
5068
|
-
return a.insertBefore(
|
|
4909
|
+
return a.insertBefore(ms(e.ownerDocument, n, r), o), o.data.startsWith(" ") || o.insertData(0, " "), bs(e, o, 1), !0;
|
|
5069
4910
|
}
|
|
5070
|
-
function
|
|
5071
|
-
let n =
|
|
4911
|
+
function Cs(e, t) {
|
|
4912
|
+
let n = gs(e);
|
|
5072
4913
|
if (!n || n.rangeCount === 0) return;
|
|
5073
4914
|
let r = n.getRangeAt(0);
|
|
5074
4915
|
if (!e.contains(r.commonAncestorContainer)) return;
|
|
5075
4916
|
r.deleteContents();
|
|
5076
4917
|
let { startContainer: i, startOffset: a } = r;
|
|
5077
|
-
if (i.nodeType ===
|
|
4918
|
+
if (i.nodeType === us) {
|
|
5078
4919
|
let n = i;
|
|
5079
|
-
n.insertData(a, t),
|
|
4920
|
+
n.insertData(a, t), bs(e, n, a + t.length);
|
|
5080
4921
|
return;
|
|
5081
4922
|
}
|
|
5082
4923
|
let o = e.ownerDocument.createTextNode(t);
|
|
5083
|
-
r.insertNode(o),
|
|
4924
|
+
r.insertNode(o), bs(e, o, o.data.length);
|
|
5084
4925
|
}
|
|
5085
|
-
function
|
|
4926
|
+
function ws(e, t) {
|
|
5086
4927
|
let n = e.ownerDocument, r = null, i = null, a = !0;
|
|
5087
4928
|
function o(t) {
|
|
5088
4929
|
let n = t.length === 0;
|
|
5089
4930
|
n === a && e.hasAttribute("data-empty") === n || (a = n, e.toggleAttribute("data-empty", n));
|
|
5090
4931
|
}
|
|
5091
4932
|
function s() {
|
|
5092
|
-
let n =
|
|
4933
|
+
let n = fs(e);
|
|
5093
4934
|
o(n), t.onChange(n);
|
|
5094
4935
|
}
|
|
5095
4936
|
function c(e) {
|
|
@@ -5105,7 +4946,7 @@ function Ds(e, t) {
|
|
|
5105
4946
|
c(null);
|
|
5106
4947
|
return;
|
|
5107
4948
|
}
|
|
5108
|
-
let n =
|
|
4949
|
+
let n = _s(e), r = n ? xs(n) : null;
|
|
5109
4950
|
if (r && i && r.textNode === i.node && r.at === i.at) {
|
|
5110
4951
|
c(null);
|
|
5111
4952
|
return;
|
|
@@ -5113,29 +4954,29 @@ function Ds(e, t) {
|
|
|
5113
4954
|
i = null, c(r);
|
|
5114
4955
|
}
|
|
5115
4956
|
function u(r) {
|
|
5116
|
-
e.replaceChildren(
|
|
4957
|
+
e.replaceChildren(hs(n, r, t.chipClass)), o(fs(e)), i = null, c(null);
|
|
5117
4958
|
}
|
|
5118
4959
|
let d = () => {
|
|
5119
4960
|
s(), l();
|
|
5120
4961
|
}, f = () => l(), p = () => {
|
|
5121
|
-
|
|
4962
|
+
ys(e), l();
|
|
5122
4963
|
}, m = (t) => {
|
|
5123
4964
|
let n = t.clipboardData?.getData("text/plain");
|
|
5124
|
-
t.preventDefault(), n && (
|
|
4965
|
+
t.preventDefault(), n && (Cs(e, n.replace(/\r\n?/g, "\n")), s(), l());
|
|
5125
4966
|
}, h = (e) => {
|
|
5126
4967
|
e.preventDefault();
|
|
5127
4968
|
};
|
|
5128
4969
|
return e.addEventListener("input", d), e.addEventListener("keyup", f), e.addEventListener("mouseup", p), e.addEventListener("focus", p), e.addEventListener("paste", m), e.addEventListener("drop", h), u(t.initialValue ?? ""), {
|
|
5129
|
-
getValue: () =>
|
|
4970
|
+
getValue: () => fs(e),
|
|
5130
4971
|
setValue: u,
|
|
5131
4972
|
focus() {
|
|
5132
4973
|
e.focus();
|
|
5133
4974
|
let t = e.lastChild;
|
|
5134
|
-
t && (t.nodeType ===
|
|
4975
|
+
t && (t.nodeType === us ? bs(e, t, t.data.length) : bs(e, e, e.childNodes.length));
|
|
5135
4976
|
},
|
|
5136
4977
|
insertMention(n) {
|
|
5137
|
-
let a =
|
|
5138
|
-
o &&
|
|
4978
|
+
let a = _s(e), o = (a ? xs(a) : null) ?? r;
|
|
4979
|
+
o && Ss(e, o, n, t.chipClass) && (s(), i = null, c(null));
|
|
5139
4980
|
},
|
|
5140
4981
|
syncTrigger: l,
|
|
5141
4982
|
clearTrigger: () => c(null),
|
|
@@ -5150,21 +4991,21 @@ function Ds(e, t) {
|
|
|
5150
4991
|
}
|
|
5151
4992
|
};
|
|
5152
4993
|
}
|
|
5153
|
-
var
|
|
5154
|
-
function
|
|
5155
|
-
if (
|
|
4994
|
+
var Ts = null;
|
|
4995
|
+
function Es() {
|
|
4996
|
+
if (Ts) return Ts;
|
|
5156
4997
|
if (typeof document > "u") return "true";
|
|
5157
4998
|
let e = document.createElement("div");
|
|
5158
4999
|
try {
|
|
5159
|
-
e.contentEditable = "plaintext-only",
|
|
5000
|
+
e.contentEditable = "plaintext-only", Ts = e.contentEditable === "plaintext-only" ? "plaintext-only" : "true";
|
|
5160
5001
|
} catch {
|
|
5161
|
-
|
|
5002
|
+
Ts = "true";
|
|
5162
5003
|
}
|
|
5163
|
-
return
|
|
5004
|
+
return Ts;
|
|
5164
5005
|
}
|
|
5165
5006
|
//#endregion
|
|
5166
5007
|
//#region src/runtime/ui/mentions.tsx
|
|
5167
|
-
function
|
|
5008
|
+
function Ds({ body: e, mentions: t, trailing: n }) {
|
|
5168
5009
|
let r = B(() => new Set(t), [t]);
|
|
5169
5010
|
return /* @__PURE__ */ Q("p", {
|
|
5170
5011
|
class: "markup-comment-body",
|
|
@@ -5174,7 +5015,7 @@ function As({ body: e, mentions: t, trailing: n }) {
|
|
|
5174
5015
|
}, t) : /* @__PURE__ */ Q("span", { children: e.type === "mention" ? `@${e.name}` : e.value }, t)), n]
|
|
5175
5016
|
});
|
|
5176
5017
|
}
|
|
5177
|
-
function
|
|
5018
|
+
function Os(e) {
|
|
5178
5019
|
let { members: t, trigger: n, onSelect: r, onClose: i } = e, [a, o] = L(0), s = B(() => {
|
|
5179
5020
|
if (!n) return [];
|
|
5180
5021
|
let e = n.query.toLowerCase();
|
|
@@ -5202,7 +5043,7 @@ function js(e) {
|
|
|
5202
5043
|
handleKeyDown: c
|
|
5203
5044
|
};
|
|
5204
5045
|
}
|
|
5205
|
-
function
|
|
5046
|
+
function ks({ items: e, highlight: t, setHighlight: n, onSelect: r }) {
|
|
5206
5047
|
return e.length === 0 ? null : /* @__PURE__ */ Q("ul", {
|
|
5207
5048
|
class: "markup-mention-picker",
|
|
5208
5049
|
role: "listbox",
|
|
@@ -5228,7 +5069,7 @@ function Ms({ items: e, highlight: t, setHighlight: n, onSelect: r }) {
|
|
|
5228
5069
|
}
|
|
5229
5070
|
//#endregion
|
|
5230
5071
|
//#region src/runtime/ui/mention-input.tsx
|
|
5231
|
-
function
|
|
5072
|
+
function As({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeholder: a, disabled: o = !1, autoFocus: s = !1, class: c, handle: l }) {
|
|
5232
5073
|
let u = z(null), d = z(null), [f, p] = L(null), m = z(t);
|
|
5233
5074
|
m.current = t;
|
|
5234
5075
|
let h = z(r);
|
|
@@ -5237,7 +5078,7 @@ function Ns({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeho
|
|
|
5237
5078
|
qe(() => {
|
|
5238
5079
|
let e = u.current;
|
|
5239
5080
|
if (!e) return;
|
|
5240
|
-
let t =
|
|
5081
|
+
let t = ws(e, {
|
|
5241
5082
|
chipClass: "markup-mention-chip",
|
|
5242
5083
|
initialValue: g.current,
|
|
5243
5084
|
onChange: (e) => m.current(e),
|
|
@@ -5257,7 +5098,7 @@ function Ns({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeho
|
|
|
5257
5098
|
let t = d.current;
|
|
5258
5099
|
t && t.getValue() !== e && t.setValue(e);
|
|
5259
5100
|
}, [e]);
|
|
5260
|
-
let _ =
|
|
5101
|
+
let _ = Os({
|
|
5261
5102
|
members: r ?? [],
|
|
5262
5103
|
trigger: f,
|
|
5263
5104
|
onSelect: (e) => d.current?.insertMention(e),
|
|
@@ -5270,7 +5111,7 @@ function Ns({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeho
|
|
|
5270
5111
|
"aria-label": i,
|
|
5271
5112
|
"aria-disabled": o || void 0,
|
|
5272
5113
|
class: Z("markup-mention-input", c),
|
|
5273
|
-
contentEditable: o ? "false" :
|
|
5114
|
+
contentEditable: o ? "false" : Es(),
|
|
5274
5115
|
"data-placeholder": a,
|
|
5275
5116
|
tabIndex: o ? -1 : 0,
|
|
5276
5117
|
onKeyDown: (e) => {
|
|
@@ -5279,7 +5120,7 @@ function Ns({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeho
|
|
|
5279
5120
|
onBlur: () => {
|
|
5280
5121
|
setTimeout(() => d.current?.clearTrigger(), 120);
|
|
5281
5122
|
}
|
|
5282
|
-
}), _.isOpen ? /* @__PURE__ */ Q(
|
|
5123
|
+
}), _.isOpen ? /* @__PURE__ */ Q(ks, {
|
|
5283
5124
|
items: _.items,
|
|
5284
5125
|
highlight: _.highlight,
|
|
5285
5126
|
setHighlight: _.setHighlight,
|
|
@@ -5288,13 +5129,13 @@ function Ns({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeho
|
|
|
5288
5129
|
}
|
|
5289
5130
|
//#endregion
|
|
5290
5131
|
//#region src/runtime/ui/composer.tsx
|
|
5291
|
-
var
|
|
5292
|
-
function
|
|
5132
|
+
var js = 4e3;
|
|
5133
|
+
function Ms({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "Post", initialFocus: r = !0, isPending: i, error: a, onSubmit: o, members: s }) {
|
|
5293
5134
|
let [c, l] = L(""), u = z(null), d = z(!1);
|
|
5294
5135
|
R(() => {
|
|
5295
5136
|
d.current && !i && !a && (l(""), u.current?.focus()), d.current = i;
|
|
5296
5137
|
}, [i, a]);
|
|
5297
|
-
let f =
|
|
5138
|
+
let f = js - c.length, p = f < 0;
|
|
5298
5139
|
function m(e) {
|
|
5299
5140
|
e?.preventDefault();
|
|
5300
5141
|
let t = c.trim();
|
|
@@ -5319,7 +5160,7 @@ function Fs({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "
|
|
|
5319
5160
|
class: Z("markup-composer", g && "is-filled"),
|
|
5320
5161
|
onSubmit: m,
|
|
5321
5162
|
children: [
|
|
5322
|
-
/* @__PURE__ */ Q(
|
|
5163
|
+
/* @__PURE__ */ Q(As, {
|
|
5323
5164
|
class: "markup-composer-input",
|
|
5324
5165
|
label: e,
|
|
5325
5166
|
placeholder: t,
|
|
@@ -5373,10 +5214,10 @@ function Fs({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "
|
|
|
5373
5214
|
}
|
|
5374
5215
|
//#endregion
|
|
5375
5216
|
//#region src/runtime/ui/new-thread-popover.tsx
|
|
5376
|
-
function
|
|
5217
|
+
function Ns({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolving: i, isSigningIn: a, isPending: o, error: s, screenshot: c, isScreenshotCapturing: l, screenshotFailed: u, screenshotRedactedCount: d, screenshotRedactedSelectors: f, members: p = [], onAuthor: m, onSignIn: h, onSubmit: g, onClose: _ }) {
|
|
5377
5218
|
let v = z(null);
|
|
5378
|
-
|
|
5379
|
-
let [y, b] = L(!1), [x, C] = L(!1), w =
|
|
5219
|
+
is(v, !0);
|
|
5220
|
+
let [y, b] = L(!1), [x, C] = L(!1), w = as(c), [T, E] = L(null), { onPointerDown: D, isDragging: O } = ts({
|
|
5380
5221
|
targetRef: v,
|
|
5381
5222
|
shouldStart: (e) => !e.target?.closest("button, a, input, textarea, select"),
|
|
5382
5223
|
onMove: E
|
|
@@ -5392,7 +5233,7 @@ function Is({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolv
|
|
|
5392
5233
|
}
|
|
5393
5234
|
return e.addEventListener("toggle", t), () => e.removeEventListener("toggle", t);
|
|
5394
5235
|
}, [_]);
|
|
5395
|
-
let ee =
|
|
5236
|
+
let ee = Ps(e - window.scrollX + 16, 12, window.innerWidth - 320 - 12), te = Ps(t - window.scrollY - 16, 12, window.innerHeight - 220), k = typeof window < "u" ? window.location.href : "", A = c != null, j = l || A || u;
|
|
5396
5237
|
return /* @__PURE__ */ Q("div", {
|
|
5397
5238
|
ref: v,
|
|
5398
5239
|
class: Z("markup-popover", T && "is-floating", O && "is-dragging"),
|
|
@@ -5417,7 +5258,7 @@ function Is({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolv
|
|
|
5417
5258
|
onClick: _,
|
|
5418
5259
|
children: /* @__PURE__ */ Q(jo, { size: 16 })
|
|
5419
5260
|
})]
|
|
5420
|
-
}), n == null ? /* @__PURE__ */ Q(
|
|
5261
|
+
}), n == null ? /* @__PURE__ */ Q(os, {
|
|
5421
5262
|
isPending: o,
|
|
5422
5263
|
isConnecting: i,
|
|
5423
5264
|
isSigningIn: a,
|
|
@@ -5441,7 +5282,7 @@ function Is({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolv
|
|
|
5441
5282
|
}) : null
|
|
5442
5283
|
]
|
|
5443
5284
|
}),
|
|
5444
|
-
/* @__PURE__ */ Q(
|
|
5285
|
+
/* @__PURE__ */ Q(Ms, {
|
|
5445
5286
|
label: "Feedback",
|
|
5446
5287
|
placeholder: "What's wrong, missing, or worth noting?",
|
|
5447
5288
|
submitLabel: "Post markup",
|
|
@@ -5524,12 +5365,133 @@ function Is({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolv
|
|
|
5524
5365
|
})]
|
|
5525
5366
|
});
|
|
5526
5367
|
}
|
|
5527
|
-
function
|
|
5368
|
+
function Ps(e, t, n) {
|
|
5528
5369
|
return Math.max(t, Math.min(n, e));
|
|
5529
5370
|
}
|
|
5530
5371
|
//#endregion
|
|
5372
|
+
//#region src/runtime/ui/notifications-panel.tsx
|
|
5373
|
+
function Fs({ items: e, isLoading: t, error: n, onBack: r, onItemClick: i, onMarkAllRead: a, isMarkingAll: o }) {
|
|
5374
|
+
let s = e.some((e) => e.readAt == null);
|
|
5375
|
+
return /* @__PURE__ */ Q("div", {
|
|
5376
|
+
class: "markup-notifications-panel",
|
|
5377
|
+
role: "dialog",
|
|
5378
|
+
"aria-label": "Notifications",
|
|
5379
|
+
children: [/* @__PURE__ */ Q("header", {
|
|
5380
|
+
class: "markup-notifications-panel-header",
|
|
5381
|
+
children: [
|
|
5382
|
+
/* @__PURE__ */ Q("button", {
|
|
5383
|
+
type: "button",
|
|
5384
|
+
class: "markup-icon-btn",
|
|
5385
|
+
title: "Back to menu",
|
|
5386
|
+
"aria-label": "Back to menu",
|
|
5387
|
+
onClick: r,
|
|
5388
|
+
children: /* @__PURE__ */ Q(Mo, { size: 16 })
|
|
5389
|
+
}),
|
|
5390
|
+
/* @__PURE__ */ Q("span", {
|
|
5391
|
+
class: "markup-eyebrow",
|
|
5392
|
+
children: "notifications"
|
|
5393
|
+
}),
|
|
5394
|
+
/* @__PURE__ */ Q("div", {
|
|
5395
|
+
class: "markup-notifications-panel-actions",
|
|
5396
|
+
children: s ? /* @__PURE__ */ Q("button", {
|
|
5397
|
+
type: "button",
|
|
5398
|
+
class: "markup-notifications-panel-mark-all",
|
|
5399
|
+
disabled: o,
|
|
5400
|
+
onClick: a,
|
|
5401
|
+
children: o ? "Marking…" : "Mark all read"
|
|
5402
|
+
}) : null
|
|
5403
|
+
})
|
|
5404
|
+
]
|
|
5405
|
+
}), /* @__PURE__ */ Q("div", {
|
|
5406
|
+
class: "markup-notifications-panel-body",
|
|
5407
|
+
children: n ? /* @__PURE__ */ Q("p", {
|
|
5408
|
+
class: "markup-notifications-panel-error",
|
|
5409
|
+
children: n
|
|
5410
|
+
}) : t ? /* @__PURE__ */ Q("p", {
|
|
5411
|
+
class: "markup-notifications-panel-empty",
|
|
5412
|
+
children: "Loading…"
|
|
5413
|
+
}) : e.length === 0 ? /* @__PURE__ */ Q("div", {
|
|
5414
|
+
class: "markup-notifications-panel-empty",
|
|
5415
|
+
children: [/* @__PURE__ */ Q("p", {
|
|
5416
|
+
class: "markup-notifications-panel-empty-title",
|
|
5417
|
+
children: "You're all caught up."
|
|
5418
|
+
}), /* @__PURE__ */ Q("p", {
|
|
5419
|
+
class: "markup-notifications-panel-empty-sub",
|
|
5420
|
+
children: "New @mentions on this site land here."
|
|
5421
|
+
})]
|
|
5422
|
+
}) : /* @__PURE__ */ Q("ul", {
|
|
5423
|
+
class: "markup-notifications-panel-list",
|
|
5424
|
+
children: e.map((e) => /* @__PURE__ */ Q("li", { children: /* @__PURE__ */ Q("button", {
|
|
5425
|
+
type: "button",
|
|
5426
|
+
class: Z("markup-notifications-panel-row", e.readAt == null && "is-unread"),
|
|
5427
|
+
onClick: () => i(e),
|
|
5428
|
+
children: [
|
|
5429
|
+
/* @__PURE__ */ Q("div", {
|
|
5430
|
+
class: "markup-notifications-panel-meta",
|
|
5431
|
+
children: [
|
|
5432
|
+
e.readAt == null ? /* @__PURE__ */ Q("span", {
|
|
5433
|
+
"aria-hidden": "true",
|
|
5434
|
+
class: "markup-notifications-panel-dot"
|
|
5435
|
+
}) : null,
|
|
5436
|
+
/* @__PURE__ */ Q("span", {
|
|
5437
|
+
class: "markup-notifications-panel-actor",
|
|
5438
|
+
children: e.actorName
|
|
5439
|
+
}),
|
|
5440
|
+
e.actorVia === "mcp" ? /* @__PURE__ */ Q("span", {
|
|
5441
|
+
class: "markup-comment-badge is-agent",
|
|
5442
|
+
role: "img",
|
|
5443
|
+
"aria-label": "Written by an AI agent",
|
|
5444
|
+
title: "Written by an AI agent on this person's behalf",
|
|
5445
|
+
children: /* @__PURE__ */ Q(Zo, { size: 11 })
|
|
5446
|
+
}) : null,
|
|
5447
|
+
/* @__PURE__ */ Q("span", {
|
|
5448
|
+
class: "markup-notifications-panel-sep",
|
|
5449
|
+
children: "·"
|
|
5450
|
+
}),
|
|
5451
|
+
/* @__PURE__ */ Q("span", {
|
|
5452
|
+
class: "markup-notifications-panel-time",
|
|
5453
|
+
children: Is(e.createdAt)
|
|
5454
|
+
})
|
|
5455
|
+
]
|
|
5456
|
+
}),
|
|
5457
|
+
/* @__PURE__ */ Q("p", {
|
|
5458
|
+
class: "markup-notifications-panel-thread",
|
|
5459
|
+
children: [
|
|
5460
|
+
"mentioned you in",
|
|
5461
|
+
" ",
|
|
5462
|
+
/* @__PURE__ */ Q("span", {
|
|
5463
|
+
class: "markup-notifications-panel-thread-title",
|
|
5464
|
+
children: e.threadTitle
|
|
5465
|
+
})
|
|
5466
|
+
]
|
|
5467
|
+
}),
|
|
5468
|
+
e.commentExcerpt ? /* @__PURE__ */ Q("p", {
|
|
5469
|
+
class: "markup-notifications-panel-excerpt",
|
|
5470
|
+
children: [
|
|
5471
|
+
"“",
|
|
5472
|
+
e.commentExcerpt,
|
|
5473
|
+
"”"
|
|
5474
|
+
]
|
|
5475
|
+
}) : null
|
|
5476
|
+
]
|
|
5477
|
+
}) }, e._id))
|
|
5478
|
+
})
|
|
5479
|
+
})]
|
|
5480
|
+
});
|
|
5481
|
+
}
|
|
5482
|
+
function Is(e) {
|
|
5483
|
+
let t = Date.now() - e, n = Math.floor(t / 1e3);
|
|
5484
|
+
if (n < 60) return "just now";
|
|
5485
|
+
let r = Math.floor(n / 60);
|
|
5486
|
+
if (r < 60) return `${r}m ago`;
|
|
5487
|
+
let i = Math.floor(r / 60);
|
|
5488
|
+
if (i < 24) return `${i}h ago`;
|
|
5489
|
+
let a = Math.floor(i / 24);
|
|
5490
|
+
return a < 30 ? `${a}d ago` : new Date(e).toLocaleDateString();
|
|
5491
|
+
}
|
|
5492
|
+
//#endregion
|
|
5531
5493
|
//#region src/runtime/use-theme.ts
|
|
5532
|
-
function
|
|
5494
|
+
function Ls() {
|
|
5533
5495
|
let [, e] = L(0);
|
|
5534
5496
|
return R(() => Me(() => e((e) => e + 1)), []), {
|
|
5535
5497
|
mode: ke(),
|
|
@@ -5539,8 +5501,8 @@ function Rs() {
|
|
|
5539
5501
|
}
|
|
5540
5502
|
//#endregion
|
|
5541
5503
|
//#region src/runtime/ui/overflow-menu.tsx
|
|
5542
|
-
function
|
|
5543
|
-
let [u, d] = L(!1), f = z(null), p =
|
|
5504
|
+
function Rs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked: r = !1, onToggleAutoCapture: i, onOpenPrivacy: a, onOpenShortcuts: o, onHideForSession: s, version: c, dashboardUrl: l }) {
|
|
5505
|
+
let [u, d] = L(!1), f = z(null), p = Ls();
|
|
5544
5506
|
R(() => {
|
|
5545
5507
|
if (!u) return;
|
|
5546
5508
|
function e(e) {
|
|
@@ -5640,7 +5602,7 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
5640
5602
|
title: "Bottom left",
|
|
5641
5603
|
class: Z(e === "bottom-left" && "is-on"),
|
|
5642
5604
|
onClick: () => t("bottom-left"),
|
|
5643
|
-
children: /* @__PURE__ */ Q(
|
|
5605
|
+
children: /* @__PURE__ */ Q(zs, { side: "left" })
|
|
5644
5606
|
}),
|
|
5645
5607
|
/* @__PURE__ */ Q("button", {
|
|
5646
5608
|
type: "button",
|
|
@@ -5650,7 +5612,7 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
5650
5612
|
title: "Bottom center",
|
|
5651
5613
|
class: Z(e === "bottom-center" && "is-on"),
|
|
5652
5614
|
onClick: () => t("bottom-center"),
|
|
5653
|
-
children: /* @__PURE__ */ Q(
|
|
5615
|
+
children: /* @__PURE__ */ Q(zs, { side: "center" })
|
|
5654
5616
|
}),
|
|
5655
5617
|
/* @__PURE__ */ Q("button", {
|
|
5656
5618
|
type: "button",
|
|
@@ -5660,7 +5622,7 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
5660
5622
|
title: "Bottom right",
|
|
5661
5623
|
class: Z(e === "bottom-right" && "is-on"),
|
|
5662
5624
|
onClick: () => t("bottom-right"),
|
|
5663
|
-
children: /* @__PURE__ */ Q(
|
|
5625
|
+
children: /* @__PURE__ */ Q(zs, { side: "right" })
|
|
5664
5626
|
})
|
|
5665
5627
|
]
|
|
5666
5628
|
})]
|
|
@@ -5682,7 +5644,7 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
5682
5644
|
children: [
|
|
5683
5645
|
/* @__PURE__ */ Q("span", {
|
|
5684
5646
|
class: "ic",
|
|
5685
|
-
children: /* @__PURE__ */ Q(
|
|
5647
|
+
children: /* @__PURE__ */ Q(Bs, {})
|
|
5686
5648
|
}),
|
|
5687
5649
|
/* @__PURE__ */ Q("span", {
|
|
5688
5650
|
class: "lbl",
|
|
@@ -5701,9 +5663,8 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
5701
5663
|
type: "button",
|
|
5702
5664
|
role: "menuitem",
|
|
5703
5665
|
class: "markup-menu-row",
|
|
5704
|
-
disabled: !a,
|
|
5705
5666
|
onClick: () => {
|
|
5706
|
-
d(!1), a
|
|
5667
|
+
d(!1), a();
|
|
5707
5668
|
},
|
|
5708
5669
|
children: [/* @__PURE__ */ Q("span", {
|
|
5709
5670
|
class: "ic",
|
|
@@ -5717,24 +5678,16 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
5717
5678
|
type: "button",
|
|
5718
5679
|
role: "menuitem",
|
|
5719
5680
|
class: "markup-menu-row",
|
|
5720
|
-
disabled: !o,
|
|
5721
5681
|
onClick: () => {
|
|
5722
|
-
d(!1), o
|
|
5682
|
+
d(!1), o();
|
|
5723
5683
|
},
|
|
5724
|
-
children: [
|
|
5725
|
-
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
|
|
5729
|
-
|
|
5730
|
-
|
|
5731
|
-
children: "Keyboard shortcuts"
|
|
5732
|
-
}),
|
|
5733
|
-
/* @__PURE__ */ Q("span", {
|
|
5734
|
-
class: "right",
|
|
5735
|
-
children: "?"
|
|
5736
|
-
})
|
|
5737
|
-
]
|
|
5684
|
+
children: [/* @__PURE__ */ Q("span", {
|
|
5685
|
+
class: "ic",
|
|
5686
|
+
children: /* @__PURE__ */ Q(qo, { size: 16 })
|
|
5687
|
+
}), /* @__PURE__ */ Q("span", {
|
|
5688
|
+
class: "lbl",
|
|
5689
|
+
children: "Keyboard shortcuts"
|
|
5690
|
+
})]
|
|
5738
5691
|
}),
|
|
5739
5692
|
/* @__PURE__ */ Q("div", { class: "markup-menu-divider" }),
|
|
5740
5693
|
/* @__PURE__ */ Q("button", {
|
|
@@ -5747,7 +5700,7 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
5747
5700
|
children: [
|
|
5748
5701
|
/* @__PURE__ */ Q("span", {
|
|
5749
5702
|
class: "ic",
|
|
5750
|
-
children: /* @__PURE__ */ Q(
|
|
5703
|
+
children: /* @__PURE__ */ Q(Vs, {})
|
|
5751
5704
|
}),
|
|
5752
5705
|
/* @__PURE__ */ Q("span", {
|
|
5753
5706
|
class: "lbl",
|
|
@@ -5777,7 +5730,7 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
|
|
|
5777
5730
|
}) : null]
|
|
5778
5731
|
});
|
|
5779
5732
|
}
|
|
5780
|
-
function
|
|
5733
|
+
function zs({ side: e }) {
|
|
5781
5734
|
return /* @__PURE__ */ Q("svg", {
|
|
5782
5735
|
width: 14,
|
|
5783
5736
|
height: 14,
|
|
@@ -5803,7 +5756,7 @@ function Bs({ side: e }) {
|
|
|
5803
5756
|
})]
|
|
5804
5757
|
});
|
|
5805
5758
|
}
|
|
5806
|
-
function
|
|
5759
|
+
function Bs() {
|
|
5807
5760
|
return /* @__PURE__ */ Q("svg", {
|
|
5808
5761
|
width: 16,
|
|
5809
5762
|
height: 16,
|
|
@@ -5821,7 +5774,7 @@ function Vs() {
|
|
|
5821
5774
|
})]
|
|
5822
5775
|
});
|
|
5823
5776
|
}
|
|
5824
|
-
function
|
|
5777
|
+
function Vs() {
|
|
5825
5778
|
return /* @__PURE__ */ Q("svg", {
|
|
5826
5779
|
width: 16,
|
|
5827
5780
|
height: 16,
|
|
@@ -5841,6 +5794,36 @@ function Hs() {
|
|
|
5841
5794
|
});
|
|
5842
5795
|
}
|
|
5843
5796
|
//#endregion
|
|
5797
|
+
//#region src/runtime/ui/panel-popover.tsx
|
|
5798
|
+
function Hs({ kind: e, label: t, position: n, ignoreToolbarKind: r, onClose: i, children: a }) {
|
|
5799
|
+
let o = z(null);
|
|
5800
|
+
return R(() => {
|
|
5801
|
+
function e(e) {
|
|
5802
|
+
let t = o.current;
|
|
5803
|
+
if (!t) return;
|
|
5804
|
+
let n = e.composedPath();
|
|
5805
|
+
n.includes(t) || r != null && n.some((e) => e?.dataset?.kind === r) || i();
|
|
5806
|
+
}
|
|
5807
|
+
function t(e) {
|
|
5808
|
+
e.key === "Escape" && i();
|
|
5809
|
+
}
|
|
5810
|
+
return document.addEventListener("click", e, !0), document.addEventListener("keydown", t), () => {
|
|
5811
|
+
document.removeEventListener("click", e, !0), document.removeEventListener("keydown", t);
|
|
5812
|
+
};
|
|
5813
|
+
}, [i, r]), /* @__PURE__ */ Q("div", {
|
|
5814
|
+
ref: o,
|
|
5815
|
+
class: Z("markup-panel-pop", n === "bottom-left" ? "markup-panel-pop-left" : n === "bottom-center" ? "markup-panel-pop-center" : "markup-panel-pop-right"),
|
|
5816
|
+
"data-panel": e,
|
|
5817
|
+
role: "dialog",
|
|
5818
|
+
"aria-label": t,
|
|
5819
|
+
children: /* @__PURE__ */ Q("div", {
|
|
5820
|
+
class: "markup-pop",
|
|
5821
|
+
"data-pop": e,
|
|
5822
|
+
children: a
|
|
5823
|
+
})
|
|
5824
|
+
});
|
|
5825
|
+
}
|
|
5826
|
+
//#endregion
|
|
5844
5827
|
//#region src/runtime/ui/pin.tsx
|
|
5845
5828
|
function Us({ pageX: e, pageY: t, count: n, isActive: r, isUnresolved: i, onClick: a }) {
|
|
5846
5829
|
let o = t - window.scrollY, s = e - window.scrollX;
|
|
@@ -5880,7 +5863,7 @@ function Ws({ pageX: e, pageY: t }) {
|
|
|
5880
5863
|
//#endregion
|
|
5881
5864
|
//#region src/runtime/ui/placement-overlay.tsx
|
|
5882
5865
|
function Gs({ onPlace: e, onCancel: t }) {
|
|
5883
|
-
|
|
5866
|
+
qe(() => {
|
|
5884
5867
|
function e(e) {
|
|
5885
5868
|
e.key === "Escape" && t();
|
|
5886
5869
|
}
|
|
@@ -5904,15 +5887,255 @@ function Gs({ onPlace: e, onCancel: t }) {
|
|
|
5904
5887
|
});
|
|
5905
5888
|
}
|
|
5906
5889
|
//#endregion
|
|
5890
|
+
//#region src/runtime/ui/privacy-panel.tsx
|
|
5891
|
+
function Ks({ identity: e, apiUrl: t, autoCapture: n, autoCaptureLocked: r, isForgettingMe: i, forgetMeError: a, onForgetMe: o, onClose: s }) {
|
|
5892
|
+
let [c, l] = L(!1), u = Ni(e), d = e.kind === "verified", f = d ? e.identity.email : void 0, p = e.kind === "anon";
|
|
5893
|
+
return /* @__PURE__ */ Q("div", {
|
|
5894
|
+
class: "markup-panel",
|
|
5895
|
+
children: [/* @__PURE__ */ Q("header", {
|
|
5896
|
+
class: "markup-panel-header",
|
|
5897
|
+
children: [/* @__PURE__ */ Q("span", {
|
|
5898
|
+
class: "markup-eyebrow",
|
|
5899
|
+
children: "privacy & data"
|
|
5900
|
+
}), /* @__PURE__ */ Q("button", {
|
|
5901
|
+
type: "button",
|
|
5902
|
+
class: "markup-icon-btn",
|
|
5903
|
+
title: "Close",
|
|
5904
|
+
"aria-label": "Close privacy and data",
|
|
5905
|
+
onClick: s,
|
|
5906
|
+
children: /* @__PURE__ */ Q(jo, { size: 14 })
|
|
5907
|
+
})]
|
|
5908
|
+
}), /* @__PURE__ */ Q("div", {
|
|
5909
|
+
class: "markup-panel-body",
|
|
5910
|
+
children: [
|
|
5911
|
+
/* @__PURE__ */ Q("section", {
|
|
5912
|
+
class: "markup-panel-section",
|
|
5913
|
+
children: [/* @__PURE__ */ Q("h4", {
|
|
5914
|
+
class: "markup-panel-section-title",
|
|
5915
|
+
children: "who you are here"
|
|
5916
|
+
}), d ? /* @__PURE__ */ Q("p", {
|
|
5917
|
+
class: "markup-panel-text",
|
|
5918
|
+
children: [
|
|
5919
|
+
"Signed in as ",
|
|
5920
|
+
/* @__PURE__ */ Q("strong", { children: u ?? "you" }),
|
|
5921
|
+
f ? /* @__PURE__ */ Q("span", {
|
|
5922
|
+
class: "markup-panel-mono",
|
|
5923
|
+
children: [" ", f]
|
|
5924
|
+
}) : null,
|
|
5925
|
+
". Comments you post carry that name, and your email is visible to this project's team."
|
|
5926
|
+
]
|
|
5927
|
+
}) : u ? /* @__PURE__ */ Q("p", {
|
|
5928
|
+
class: "markup-panel-text",
|
|
5929
|
+
children: [
|
|
5930
|
+
"You post as ",
|
|
5931
|
+
/* @__PURE__ */ Q("strong", { children: u }),
|
|
5932
|
+
" — an anonymous commenter with a random id that only means anything on this site."
|
|
5933
|
+
]
|
|
5934
|
+
}) : /* @__PURE__ */ Q("p", {
|
|
5935
|
+
class: "markup-panel-text",
|
|
5936
|
+
children: "You're anonymous. Markup holds a random id scoped to this site and asks for a name the first time you post."
|
|
5937
|
+
})]
|
|
5938
|
+
}),
|
|
5939
|
+
/* @__PURE__ */ Q("section", {
|
|
5940
|
+
class: "markup-panel-section",
|
|
5941
|
+
children: [/* @__PURE__ */ Q("h4", {
|
|
5942
|
+
class: "markup-panel-section-title",
|
|
5943
|
+
children: "what posting sends"
|
|
5944
|
+
}), /* @__PURE__ */ Q("ul", {
|
|
5945
|
+
class: "markup-panel-list",
|
|
5946
|
+
children: [
|
|
5947
|
+
/* @__PURE__ */ Q("li", { children: "What you wrote, under the name (and email, if you gave one) you post with" }),
|
|
5948
|
+
/* @__PURE__ */ Q("li", { children: "This page's URL, your window size, and your browser's user-agent" }),
|
|
5949
|
+
/* @__PURE__ */ Q("li", { children: "A screenshot — only the ones you attach yourself" })
|
|
5950
|
+
]
|
|
5951
|
+
})]
|
|
5952
|
+
}),
|
|
5953
|
+
/* @__PURE__ */ Q("section", {
|
|
5954
|
+
class: "markup-panel-section",
|
|
5955
|
+
children: [
|
|
5956
|
+
/* @__PURE__ */ Q("h4", {
|
|
5957
|
+
class: "markup-panel-section-title",
|
|
5958
|
+
children: "kept in this browser"
|
|
5959
|
+
}),
|
|
5960
|
+
/* @__PURE__ */ Q("ul", {
|
|
5961
|
+
class: "markup-panel-list",
|
|
5962
|
+
children: [/* @__PURE__ */ Q("li", { children: d ? "Your sign-in token — in this site's storage, or a cookie only this site can send" : "Your commenter id and the token that proves it, in this site's storage" }), /* @__PURE__ */ Q("li", { children: "Your appearance and toolbar-position picks" })]
|
|
5963
|
+
}),
|
|
5964
|
+
/* @__PURE__ */ Q("p", {
|
|
5965
|
+
class: "markup-panel-note",
|
|
5966
|
+
children: "All of it is scoped to this site, so the same browser on another site is a different commenter to us. Nothing here follows you between sites."
|
|
5967
|
+
})
|
|
5968
|
+
]
|
|
5969
|
+
}),
|
|
5970
|
+
/* @__PURE__ */ Q("section", {
|
|
5971
|
+
class: "markup-panel-section",
|
|
5972
|
+
children: [/* @__PURE__ */ Q("h4", {
|
|
5973
|
+
class: "markup-panel-section-title",
|
|
5974
|
+
children: "screenshots"
|
|
5975
|
+
}), /* @__PURE__ */ Q("p", {
|
|
5976
|
+
class: "markup-panel-text",
|
|
5977
|
+
children: r ? "This site turned captures off, so none are taken." : n ? "Captured when you drop a pin. Passwords, card numbers and one-time codes are blacked out before the image exists, and the composer lists what it covered. Nothing uploads unless you post with it attached." : "Auto-capture is off, so no screenshots are taken. You can turn it back on from the menu."
|
|
5978
|
+
})]
|
|
5979
|
+
}),
|
|
5980
|
+
/* @__PURE__ */ Q("section", {
|
|
5981
|
+
class: "markup-panel-section",
|
|
5982
|
+
children: [/* @__PURE__ */ Q("h4", {
|
|
5983
|
+
class: "markup-panel-section-title",
|
|
5984
|
+
children: "where it goes"
|
|
5985
|
+
}), /* @__PURE__ */ Q("p", {
|
|
5986
|
+
class: "markup-panel-text",
|
|
5987
|
+
children: [
|
|
5988
|
+
"Only ",
|
|
5989
|
+
/* @__PURE__ */ Q("span", {
|
|
5990
|
+
class: "markup-panel-mono",
|
|
5991
|
+
children: qs(t)
|
|
5992
|
+
}),
|
|
5993
|
+
". No analytics, no ad tech, no third-party requests from the widget. If the widget itself crashes it posts the error, this page's URL and your user-agent to that same host — never your identity or what you were writing."
|
|
5994
|
+
]
|
|
5995
|
+
})]
|
|
5996
|
+
}),
|
|
5997
|
+
p ? /* @__PURE__ */ Q("section", {
|
|
5998
|
+
class: "markup-panel-section",
|
|
5999
|
+
children: [
|
|
6000
|
+
/* @__PURE__ */ Q("h4", {
|
|
6001
|
+
class: "markup-panel-section-title",
|
|
6002
|
+
children: "erase what you left"
|
|
6003
|
+
}),
|
|
6004
|
+
/* @__PURE__ */ Q("p", {
|
|
6005
|
+
class: "markup-panel-text",
|
|
6006
|
+
children: "Removes every comment and reaction this browser posted on this site, and clears the name and email held for you. Replies from other people stay."
|
|
6007
|
+
}),
|
|
6008
|
+
/* @__PURE__ */ Q("button", {
|
|
6009
|
+
type: "button",
|
|
6010
|
+
class: Z("markup-panel-action", c && "is-danger"),
|
|
6011
|
+
disabled: i,
|
|
6012
|
+
onClick: () => {
|
|
6013
|
+
c ? (o(), l(!1)) : l(!0);
|
|
6014
|
+
},
|
|
6015
|
+
children: i ? "Erasing…" : c ? "Confirm — erase and forget me" : "Forget me on this site…"
|
|
6016
|
+
}),
|
|
6017
|
+
a ? /* @__PURE__ */ Q("p", {
|
|
6018
|
+
class: "markup-panel-error",
|
|
6019
|
+
children: a
|
|
6020
|
+
}) : null
|
|
6021
|
+
]
|
|
6022
|
+
}) : null
|
|
6023
|
+
]
|
|
6024
|
+
})]
|
|
6025
|
+
});
|
|
6026
|
+
}
|
|
6027
|
+
function qs(e) {
|
|
6028
|
+
try {
|
|
6029
|
+
return new URL(e).host;
|
|
6030
|
+
} catch {
|
|
6031
|
+
return e;
|
|
6032
|
+
}
|
|
6033
|
+
}
|
|
6034
|
+
//#endregion
|
|
6035
|
+
//#region src/runtime/ui/shortcuts-panel.tsx
|
|
6036
|
+
function Js({ onClose: e }) {
|
|
6037
|
+
let { mod: t, enter: n } = Oo();
|
|
6038
|
+
return /* @__PURE__ */ Q("div", {
|
|
6039
|
+
class: "markup-panel",
|
|
6040
|
+
children: [/* @__PURE__ */ Q("header", {
|
|
6041
|
+
class: "markup-panel-header",
|
|
6042
|
+
children: [/* @__PURE__ */ Q("span", {
|
|
6043
|
+
class: "markup-eyebrow",
|
|
6044
|
+
children: "keyboard shortcuts"
|
|
6045
|
+
}), /* @__PURE__ */ Q("button", {
|
|
6046
|
+
type: "button",
|
|
6047
|
+
class: "markup-icon-btn",
|
|
6048
|
+
title: "Close",
|
|
6049
|
+
"aria-label": "Close keyboard shortcuts",
|
|
6050
|
+
onClick: e,
|
|
6051
|
+
children: /* @__PURE__ */ Q(jo, { size: 14 })
|
|
6052
|
+
})]
|
|
6053
|
+
}), /* @__PURE__ */ Q("div", {
|
|
6054
|
+
class: "markup-panel-body",
|
|
6055
|
+
children: [[{
|
|
6056
|
+
title: "on the page",
|
|
6057
|
+
items: [
|
|
6058
|
+
{
|
|
6059
|
+
chords: [["c"]],
|
|
6060
|
+
label: "Start a markup"
|
|
6061
|
+
},
|
|
6062
|
+
{
|
|
6063
|
+
chords: [[t, "."]],
|
|
6064
|
+
label: "Show or hide Markup"
|
|
6065
|
+
},
|
|
6066
|
+
{
|
|
6067
|
+
chords: [["Esc"]],
|
|
6068
|
+
label: "Cancel placement, or close a menu"
|
|
6069
|
+
}
|
|
6070
|
+
]
|
|
6071
|
+
}, {
|
|
6072
|
+
title: "while writing",
|
|
6073
|
+
items: [
|
|
6074
|
+
{
|
|
6075
|
+
chords: [["@"]],
|
|
6076
|
+
label: "Mention a teammate"
|
|
6077
|
+
},
|
|
6078
|
+
{
|
|
6079
|
+
chords: [["↑"], ["↓"]],
|
|
6080
|
+
label: "Move through the member list"
|
|
6081
|
+
},
|
|
6082
|
+
{
|
|
6083
|
+
chords: [[n], ["Tab"]],
|
|
6084
|
+
label: "Pick the highlighted member"
|
|
6085
|
+
},
|
|
6086
|
+
{
|
|
6087
|
+
chords: [[t, n]],
|
|
6088
|
+
label: "Post the comment"
|
|
6089
|
+
},
|
|
6090
|
+
{
|
|
6091
|
+
chords: [["Esc"]],
|
|
6092
|
+
label: "Dismiss the member list"
|
|
6093
|
+
}
|
|
6094
|
+
]
|
|
6095
|
+
}].map((e) => /* @__PURE__ */ Q("section", {
|
|
6096
|
+
class: "markup-panel-section",
|
|
6097
|
+
children: [/* @__PURE__ */ Q("h4", {
|
|
6098
|
+
class: "markup-panel-section-title",
|
|
6099
|
+
children: e.title
|
|
6100
|
+
}), /* @__PURE__ */ Q("ul", {
|
|
6101
|
+
class: "markup-shortcut-list",
|
|
6102
|
+
children: e.items.map((e) => /* @__PURE__ */ Q("li", {
|
|
6103
|
+
class: "markup-shortcut-row",
|
|
6104
|
+
children: [/* @__PURE__ */ Q("span", {
|
|
6105
|
+
class: "markup-shortcut-label",
|
|
6106
|
+
children: e.label
|
|
6107
|
+
}), /* @__PURE__ */ Q("span", {
|
|
6108
|
+
class: "markup-shortcut-keys",
|
|
6109
|
+
children: e.chords.map((e, t) => /* @__PURE__ */ Q("span", {
|
|
6110
|
+
class: "markup-shortcut-chord",
|
|
6111
|
+
children: [t > 0 ? /* @__PURE__ */ Q("span", {
|
|
6112
|
+
class: "markup-shortcut-or",
|
|
6113
|
+
children: "or"
|
|
6114
|
+
}) : null, e.map((e) => /* @__PURE__ */ Q("kbd", {
|
|
6115
|
+
class: "markup-kbd is-inline",
|
|
6116
|
+
children: e
|
|
6117
|
+
}, e))]
|
|
6118
|
+
}, e.join("+")))
|
|
6119
|
+
})]
|
|
6120
|
+
}, e.label))
|
|
6121
|
+
})]
|
|
6122
|
+
}, e.title)), /* @__PURE__ */ Q("p", {
|
|
6123
|
+
class: "markup-panel-note",
|
|
6124
|
+
children: [t, "-click the comment button to hide Markup without opening the menu. Drag a popover's header to move it off whatever it covers."]
|
|
6125
|
+
})]
|
|
6126
|
+
})]
|
|
6127
|
+
});
|
|
6128
|
+
}
|
|
6129
|
+
//#endregion
|
|
5907
6130
|
//#region src/runtime/ui/thread-popover.tsx
|
|
5908
|
-
var
|
|
6131
|
+
var Ys = [
|
|
5909
6132
|
"👍",
|
|
5910
6133
|
"❤️",
|
|
5911
6134
|
"🎉",
|
|
5912
6135
|
"😮",
|
|
5913
6136
|
"😄",
|
|
5914
6137
|
"❓"
|
|
5915
|
-
],
|
|
6138
|
+
], Xs = Ar({
|
|
5916
6139
|
none: {
|
|
5917
6140
|
"toggle-thread-menu": () => ({
|
|
5918
6141
|
kind: "thread-menu",
|
|
@@ -5968,13 +6191,13 @@ var Ks = [
|
|
|
5968
6191
|
dismiss: () => ({ kind: "none" })
|
|
5969
6192
|
}
|
|
5970
6193
|
});
|
|
5971
|
-
function
|
|
5972
|
-
let b = z(null), x = z(null), S = z(null), C = z(null), [w, T] = jr(
|
|
6194
|
+
function Zs({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIdentityResolving: i, isSigningIn: a, canDelete: o, isPending: s, error: c, isHidden: l = !1, members: u = [], onAuthor: d, onSignIn: f, onClose: p, onReply: m, onEditComment: h, onDeleteComment: g, onToggleReaction: _, onResolve: v, onDelete: y }) {
|
|
6195
|
+
let b = z(null), x = z(null), S = z(null), C = z(null), [w, T] = jr(Xs, { kind: "none" }), [E, D] = L(null), { onPointerDown: O, isDragging: ee } = ts({
|
|
5973
6196
|
targetRef: b,
|
|
5974
6197
|
shouldStart: (e) => !e.target?.closest("button, a, input, textarea, select"),
|
|
5975
6198
|
onMove: D
|
|
5976
6199
|
});
|
|
5977
|
-
|
|
6200
|
+
is(b, !0);
|
|
5978
6201
|
let te = e.resolvedAt != null, k = B(() => e.comments.filter((e) => !e.deleted), [e.comments]);
|
|
5979
6202
|
R(() => {
|
|
5980
6203
|
if (w.kind === "none" || w.kind === "editing") return;
|
|
@@ -6020,8 +6243,8 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6020
6243
|
anchorSelector: e.anchorSelector
|
|
6021
6244
|
});
|
|
6022
6245
|
return {
|
|
6023
|
-
left:
|
|
6024
|
-
top:
|
|
6246
|
+
left: tc(t.pageX - window.scrollX + 16, 12, window.innerWidth - 320 - 12),
|
|
6247
|
+
top: tc(t.pageY - window.scrollY - 16, 12, window.innerHeight - 200)
|
|
6025
6248
|
};
|
|
6026
6249
|
}, [
|
|
6027
6250
|
e.anchorX,
|
|
@@ -6109,10 +6332,10 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6109
6332
|
return /* @__PURE__ */ Q("li", {
|
|
6110
6333
|
class: "markup-comment",
|
|
6111
6334
|
children: [
|
|
6112
|
-
/* @__PURE__ */ Q(
|
|
6335
|
+
/* @__PURE__ */ Q(nc, {
|
|
6113
6336
|
name: t.authorName,
|
|
6114
6337
|
image: t.authorImage,
|
|
6115
|
-
tone:
|
|
6338
|
+
tone: ic(t.authorClientId ?? t.authorName)
|
|
6116
6339
|
}),
|
|
6117
6340
|
/* @__PURE__ */ Q("div", {
|
|
6118
6341
|
class: "markup-comment-meta",
|
|
@@ -6131,18 +6354,18 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6131
6354
|
/* @__PURE__ */ Q("time", {
|
|
6132
6355
|
class: "markup-comment-time",
|
|
6133
6356
|
datetime: new Date(t.createdAt).toISOString(),
|
|
6134
|
-
title:
|
|
6135
|
-
children:
|
|
6357
|
+
title: oc(t.createdAt),
|
|
6358
|
+
children: ac(t.createdAt)
|
|
6136
6359
|
}),
|
|
6137
6360
|
t.editedAt == null ? null : /* @__PURE__ */ Q("time", {
|
|
6138
6361
|
class: "markup-comment-edited",
|
|
6139
6362
|
datetime: new Date(t.editedAt).toISOString(),
|
|
6140
|
-
title:
|
|
6363
|
+
title: oc(t.editedAt),
|
|
6141
6364
|
children: "edited"
|
|
6142
6365
|
}),
|
|
6143
6366
|
/* @__PURE__ */ Q("div", {
|
|
6144
6367
|
class: "markup-thread-actions",
|
|
6145
|
-
children: [!te && !l ? /* @__PURE__ */ Q(
|
|
6368
|
+
children: [!te && !l ? /* @__PURE__ */ Q(Qs, {
|
|
6146
6369
|
comment: t,
|
|
6147
6370
|
pickerOpen: m,
|
|
6148
6371
|
pickerDirection: v,
|
|
@@ -6250,7 +6473,7 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6250
6473
|
await h(t._id, n), T({ type: "dismiss" });
|
|
6251
6474
|
} catch {}
|
|
6252
6475
|
},
|
|
6253
|
-
children: [/* @__PURE__ */ Q(
|
|
6476
|
+
children: [/* @__PURE__ */ Q(As, {
|
|
6254
6477
|
class: "markup-comment-edit-input",
|
|
6255
6478
|
label: "Edit comment",
|
|
6256
6479
|
value: w.draft,
|
|
@@ -6276,7 +6499,7 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6276
6499
|
children: "Save"
|
|
6277
6500
|
})]
|
|
6278
6501
|
})]
|
|
6279
|
-
}) : /* @__PURE__ */ Q(
|
|
6502
|
+
}) : /* @__PURE__ */ Q(Ds, {
|
|
6280
6503
|
body: t.body,
|
|
6281
6504
|
mentions: t.mentions
|
|
6282
6505
|
}),
|
|
@@ -6289,7 +6512,7 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6289
6512
|
alt: "Screenshot"
|
|
6290
6513
|
})
|
|
6291
6514
|
}) : null,
|
|
6292
|
-
!l && t.reactions.length > 0 ? /* @__PURE__ */ Q(
|
|
6515
|
+
!l && t.reactions.length > 0 ? /* @__PURE__ */ Q($s, {
|
|
6293
6516
|
comment: t,
|
|
6294
6517
|
isResolved: te,
|
|
6295
6518
|
onToggle: (e) => _(t._id, e)
|
|
@@ -6317,7 +6540,7 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6317
6540
|
onClick: (e) => e.stopPropagation()
|
|
6318
6541
|
})]
|
|
6319
6542
|
}) : null,
|
|
6320
|
-
t == null ? /* @__PURE__ */ Q(
|
|
6543
|
+
t == null ? /* @__PURE__ */ Q(os, {
|
|
6321
6544
|
isPending: s,
|
|
6322
6545
|
isConnecting: i,
|
|
6323
6546
|
isSigningIn: a,
|
|
@@ -6339,7 +6562,7 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6339
6562
|
children: "team"
|
|
6340
6563
|
}) : null
|
|
6341
6564
|
]
|
|
6342
|
-
}), /* @__PURE__ */ Q(
|
|
6565
|
+
}), /* @__PURE__ */ Q(Ms, {
|
|
6343
6566
|
label: "Reply",
|
|
6344
6567
|
placeholder: "Write a reply…",
|
|
6345
6568
|
submitLabel: "Reply",
|
|
@@ -6353,7 +6576,7 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
|
|
|
6353
6576
|
]
|
|
6354
6577
|
});
|
|
6355
6578
|
}
|
|
6356
|
-
function
|
|
6579
|
+
function Qs({ comment: e, pickerOpen: t, pickerDirection: n, pickerSide: r, pickerRef: i, onPickerClick: a, onPickerSelect: o }) {
|
|
6357
6580
|
return /* @__PURE__ */ Q("div", {
|
|
6358
6581
|
class: Z("markup-reaction-picker-wrap", t && "is-open", t && n === "up" && "is-up", r && "is-side"),
|
|
6359
6582
|
ref: i,
|
|
@@ -6367,7 +6590,7 @@ function Ys({ comment: e, pickerOpen: t, pickerDirection: n, pickerSide: r, pick
|
|
|
6367
6590
|
}), t ? /* @__PURE__ */ Q("div", {
|
|
6368
6591
|
class: "markup-reaction-picker",
|
|
6369
6592
|
role: "menu",
|
|
6370
|
-
children:
|
|
6593
|
+
children: Ys.map((t) => /* @__PURE__ */ Q("button", {
|
|
6371
6594
|
type: "button",
|
|
6372
6595
|
role: "menuitem",
|
|
6373
6596
|
class: Z("markup-reaction-picker-item", (e.reactions.find((e) => e.emoji === t)?.mine ?? !1) && "is-mine"),
|
|
@@ -6377,11 +6600,11 @@ function Ys({ comment: e, pickerOpen: t, pickerDirection: n, pickerSide: r, pick
|
|
|
6377
6600
|
}) : null]
|
|
6378
6601
|
});
|
|
6379
6602
|
}
|
|
6380
|
-
function
|
|
6603
|
+
function $s({ comment: e, isResolved: t, onToggle: n }) {
|
|
6381
6604
|
return /* @__PURE__ */ Q("div", {
|
|
6382
6605
|
class: "markup-reactions",
|
|
6383
6606
|
children: e.reactions.map((e) => {
|
|
6384
|
-
let r =
|
|
6607
|
+
let r = ec(e.reactors, e.mine, e.count, e.emoji);
|
|
6385
6608
|
return /* @__PURE__ */ Q("button", {
|
|
6386
6609
|
type: "button",
|
|
6387
6610
|
class: Z("markup-reaction-chip", e.mine && "is-mine"),
|
|
@@ -6402,14 +6625,14 @@ function Xs({ comment: e, isResolved: t, onToggle: n }) {
|
|
|
6402
6625
|
})
|
|
6403
6626
|
});
|
|
6404
6627
|
}
|
|
6405
|
-
function
|
|
6628
|
+
function ec(e, t, n, r) {
|
|
6406
6629
|
let i = e.slice(), a = i.length + +!!t, o = Math.max(0, n - a);
|
|
6407
6630
|
return o > 0 && i.push(`${o} other${o === 1 ? "" : "s"}`), t && i.push("you"), i.length === 0 ? `${n} reacted with ${r}` : `${i.length === 1 ? i[0] : `${i.slice(0, -1).join(", ")} and ${i[i.length - 1]}`} reacted with ${r}`;
|
|
6408
6631
|
}
|
|
6409
|
-
function
|
|
6632
|
+
function tc(e, t, n) {
|
|
6410
6633
|
return Math.max(t, Math.min(n, e));
|
|
6411
6634
|
}
|
|
6412
|
-
function
|
|
6635
|
+
function nc({ name: e, image: t, tone: n }) {
|
|
6413
6636
|
let [r, i] = L(null);
|
|
6414
6637
|
return /* @__PURE__ */ Q("span", {
|
|
6415
6638
|
class: "markup-comment-avatar",
|
|
@@ -6425,11 +6648,11 @@ function $s({ name: e, image: t, tone: n }) {
|
|
|
6425
6648
|
onError: () => i(t)
|
|
6426
6649
|
}) : /* @__PURE__ */ Q("span", {
|
|
6427
6650
|
class: "markup-avatar-initials",
|
|
6428
|
-
children:
|
|
6651
|
+
children: rc(e)
|
|
6429
6652
|
})
|
|
6430
6653
|
});
|
|
6431
6654
|
}
|
|
6432
|
-
function
|
|
6655
|
+
function rc(e) {
|
|
6433
6656
|
let t = e.trim();
|
|
6434
6657
|
if (!t) return "??";
|
|
6435
6658
|
let n = t.split(/\s+/).filter(Boolean), r = n[0] ?? "";
|
|
@@ -6437,12 +6660,12 @@ function ec(e) {
|
|
|
6437
6660
|
let i = n[n.length - 1] ?? "";
|
|
6438
6661
|
return ((r[0] ?? "") + (i[0] ?? "")).toUpperCase();
|
|
6439
6662
|
}
|
|
6440
|
-
function
|
|
6663
|
+
function ic(e) {
|
|
6441
6664
|
let t = 0;
|
|
6442
6665
|
for (let n = 0; n < e.length; n++) t = t * 31 + e.charCodeAt(n) | 0;
|
|
6443
6666
|
return Math.abs(t) % 5 + 1;
|
|
6444
6667
|
}
|
|
6445
|
-
function
|
|
6668
|
+
function ac(e) {
|
|
6446
6669
|
let t = Date.now() - e, n = Math.floor(t / 1e3);
|
|
6447
6670
|
if (n < 60) return "just now";
|
|
6448
6671
|
let r = Math.floor(n / 60);
|
|
@@ -6459,7 +6682,7 @@ function nc(e) {
|
|
|
6459
6682
|
year: "numeric"
|
|
6460
6683
|
});
|
|
6461
6684
|
}
|
|
6462
|
-
function
|
|
6685
|
+
function oc(e) {
|
|
6463
6686
|
return new Date(e).toLocaleDateString([], {
|
|
6464
6687
|
month: "long",
|
|
6465
6688
|
day: "numeric",
|
|
@@ -6470,7 +6693,7 @@ function rc(e) {
|
|
|
6470
6693
|
}
|
|
6471
6694
|
//#endregion
|
|
6472
6695
|
//#region src/runtime/ui/toolbar.tsx
|
|
6473
|
-
function
|
|
6696
|
+
function sc({ isActive: e, onToggle: t, onHide: n, position: r = "bottom-right", unreadCount: i = 0, showInbox: a = !1, onOpenInbox: o, inboxOpen: s = !1, pinsVisible: c = !0, onTogglePins: l, identityButton: u, overflowButton: d }) {
|
|
6474
6697
|
let f = r === "bottom-left" ? "markup-toolbar-left" : r === "bottom-center" ? "markup-toolbar-center" : "markup-toolbar-right";
|
|
6475
6698
|
function p(e) {
|
|
6476
6699
|
if (e.preventDefault(), e.stopPropagation(), (e.metaKey || e.ctrlKey) && n) {
|
|
@@ -6544,7 +6767,7 @@ function ic({ isActive: e, onToggle: t, onHide: n, position: r = "bottom-right",
|
|
|
6544
6767
|
}
|
|
6545
6768
|
//#endregion
|
|
6546
6769
|
//#region src/runtime/ui/app.tsx
|
|
6547
|
-
function
|
|
6770
|
+
function cc(e) {
|
|
6548
6771
|
let t = {
|
|
6549
6772
|
clientId: `markup_user_${e.identity.id}`,
|
|
6550
6773
|
name: e.identity.name,
|
|
@@ -6570,17 +6793,17 @@ function ac(e) {
|
|
|
6570
6793
|
} : {}
|
|
6571
6794
|
};
|
|
6572
6795
|
}
|
|
6573
|
-
function
|
|
6796
|
+
function lc() {
|
|
6574
6797
|
let e = document.activeElement;
|
|
6575
6798
|
for (; e && e.shadowRoot && e.shadowRoot.activeElement;) e = e.shadowRoot.activeElement;
|
|
6576
6799
|
if (!e) return !1;
|
|
6577
6800
|
let t = e.tagName;
|
|
6578
6801
|
return t === "INPUT" || t === "TEXTAREA" || t === "SELECT" ? !0 : e.isContentEditable;
|
|
6579
6802
|
}
|
|
6580
|
-
function
|
|
6803
|
+
function uc() {
|
|
6581
6804
|
return window.location.host + window.location.pathname;
|
|
6582
6805
|
}
|
|
6583
|
-
var
|
|
6806
|
+
var dc = Ar({
|
|
6584
6807
|
visible: {
|
|
6585
6808
|
"hide-with-toast": () => ({ kind: "hidden-with-toast" }),
|
|
6586
6809
|
toggle: () => ({ kind: "hidden" })
|
|
@@ -6591,26 +6814,26 @@ var cc = Ar({
|
|
|
6591
6814
|
},
|
|
6592
6815
|
hidden: { toggle: () => ({ kind: "visible" }) }
|
|
6593
6816
|
});
|
|
6594
|
-
function
|
|
6817
|
+
function fc(e) {
|
|
6595
6818
|
return ji(e), e;
|
|
6596
6819
|
}
|
|
6597
|
-
var
|
|
6820
|
+
var pc = Ar({
|
|
6598
6821
|
unresolved: {
|
|
6599
|
-
"mint-success": (e, t) =>
|
|
6822
|
+
"mint-success": (e, t) => fc({
|
|
6600
6823
|
kind: "anon",
|
|
6601
6824
|
identity: t.identity
|
|
6602
6825
|
}),
|
|
6603
|
-
"signed-in": (e, t) =>
|
|
6826
|
+
"signed-in": (e, t) => fc({
|
|
6604
6827
|
kind: "verified",
|
|
6605
6828
|
identity: t.identity
|
|
6606
6829
|
})
|
|
6607
6830
|
},
|
|
6608
6831
|
anon: {
|
|
6609
|
-
"signed-in": (e, t) =>
|
|
6832
|
+
"signed-in": (e, t) => fc({
|
|
6610
6833
|
kind: "verified",
|
|
6611
6834
|
identity: t.identity
|
|
6612
6835
|
}),
|
|
6613
|
-
"author-set": (e, t) =>
|
|
6836
|
+
"author-set": (e, t) => fc({
|
|
6614
6837
|
kind: "anon",
|
|
6615
6838
|
identity: {
|
|
6616
6839
|
...e.identity,
|
|
@@ -6618,35 +6841,35 @@ var uc = Ar({
|
|
|
6618
6841
|
email: t.email
|
|
6619
6842
|
}
|
|
6620
6843
|
}),
|
|
6621
|
-
"forget-me": () =>
|
|
6844
|
+
"forget-me": () => fc({ kind: "unresolved" })
|
|
6622
6845
|
},
|
|
6623
6846
|
verified: {
|
|
6624
|
-
"signed-in": (e, t) =>
|
|
6847
|
+
"signed-in": (e, t) => fc({
|
|
6625
6848
|
kind: "verified",
|
|
6626
6849
|
identity: t.identity
|
|
6627
6850
|
}),
|
|
6628
|
-
unauthorized: (e) =>
|
|
6851
|
+
unauthorized: (e) => fc({
|
|
6629
6852
|
kind: "recovering",
|
|
6630
6853
|
preserved: {
|
|
6631
6854
|
name: e.identity.name,
|
|
6632
6855
|
email: e.identity.email
|
|
6633
6856
|
}
|
|
6634
6857
|
}),
|
|
6635
|
-
"signed-out": () =>
|
|
6858
|
+
"signed-out": () => fc({ kind: "unresolved" })
|
|
6636
6859
|
},
|
|
6637
6860
|
recovering: {
|
|
6638
|
-
"mint-success": (e, t) =>
|
|
6861
|
+
"mint-success": (e, t) => fc({
|
|
6639
6862
|
kind: "anon",
|
|
6640
6863
|
identity: t.identity
|
|
6641
6864
|
}),
|
|
6642
|
-
"signed-in": (e, t) =>
|
|
6865
|
+
"signed-in": (e, t) => fc({
|
|
6643
6866
|
kind: "verified",
|
|
6644
6867
|
identity: t.identity
|
|
6645
6868
|
})
|
|
6646
6869
|
}
|
|
6647
6870
|
});
|
|
6648
|
-
function
|
|
6649
|
-
let [a, o] = L(
|
|
6871
|
+
function mc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r, dashboardUrl: i }) {
|
|
6872
|
+
let [a, o] = L(uc), [s, c] = L([]), [l, u] = L(!1), d = B(() => Ai(), []), [f, p] = jr(pc, d.state), [m, h] = L(null);
|
|
6650
6873
|
R(() => {
|
|
6651
6874
|
let n = !1;
|
|
6652
6875
|
return gi(e, t).then((e) => {
|
|
@@ -6655,27 +6878,27 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6655
6878
|
n = !0;
|
|
6656
6879
|
};
|
|
6657
6880
|
}, [e, t]);
|
|
6658
|
-
let [g, _] = L(n), [v, y] = L(!0), [b, x] = L(!0), [S, C] = L(
|
|
6659
|
-
|
|
6881
|
+
let [g, _] = L(n), [v, y] = L(!0), [b, x] = L(!0), [S, C] = L(null), w = V(() => C(null), []), T = z(f);
|
|
6882
|
+
T.current = f, Do(f, e, t, (e) => p({
|
|
6660
6883
|
type: "signed-in",
|
|
6661
6884
|
identity: e
|
|
6662
6885
|
}), () => p({ type: "unauthorized" }));
|
|
6663
|
-
let
|
|
6886
|
+
let E = B(() => pi({
|
|
6664
6887
|
apiUrl: e,
|
|
6665
6888
|
apiKey: t,
|
|
6666
6889
|
getToken: () => {
|
|
6667
|
-
let e =
|
|
6890
|
+
let e = T.current;
|
|
6668
6891
|
return e.kind !== "verified" || e.identity.token == null ? null : {
|
|
6669
6892
|
token: e.identity.token,
|
|
6670
6893
|
expiresAt: e.identity.tokenExpiresAt
|
|
6671
6894
|
};
|
|
6672
6895
|
},
|
|
6673
6896
|
getStorageMode: () => {
|
|
6674
|
-
let e =
|
|
6897
|
+
let e = T.current;
|
|
6675
6898
|
return e.kind === "verified" ? e.identity.storage : null;
|
|
6676
6899
|
},
|
|
6677
6900
|
getAnonToken: () => {
|
|
6678
|
-
let e =
|
|
6901
|
+
let e = T.current;
|
|
6679
6902
|
return e.kind === "anon" ? e.identity.anonToken : null;
|
|
6680
6903
|
},
|
|
6681
6904
|
onUnauthorized: () => {
|
|
@@ -6685,29 +6908,29 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6685
6908
|
e,
|
|
6686
6909
|
t,
|
|
6687
6910
|
p
|
|
6688
|
-
]), [
|
|
6911
|
+
]), [D, O] = L({ kind: "idle" }), [ee, te] = L([]);
|
|
6689
6912
|
R(() => {
|
|
6690
6913
|
let e = !1;
|
|
6691
|
-
return
|
|
6692
|
-
e ||
|
|
6914
|
+
return E.listMembers().then((t) => {
|
|
6915
|
+
e || te(t.members);
|
|
6693
6916
|
}).catch(() => {}), () => {
|
|
6694
6917
|
e = !0;
|
|
6695
6918
|
};
|
|
6696
|
-
}, [
|
|
6697
|
-
let [
|
|
6698
|
-
|
|
6699
|
-
|
|
6919
|
+
}, [E]);
|
|
6920
|
+
let [k, A] = L(0), [j, ne] = L([]), [re, ie] = L(!1), [ae, oe] = L(void 0), [se, ce] = L(!1), le = V(() => {
|
|
6921
|
+
ie(!0), oe(void 0), E.listNotifications().then((e) => {
|
|
6922
|
+
ne(e.notifications);
|
|
6700
6923
|
}).catch((e) => {
|
|
6701
|
-
|
|
6924
|
+
oe(e instanceof Error ? e.message : "Failed to load.");
|
|
6702
6925
|
}).finally(() => {
|
|
6703
|
-
|
|
6926
|
+
ie(!1);
|
|
6704
6927
|
});
|
|
6705
|
-
}, [
|
|
6928
|
+
}, [E]), ue = Rr(), de = Rr(), fe = Rr(), pe = Rr(), me = Rr(), { run: M, reset: he } = ue, { run: ge } = de, { run: _e, reset: ve } = fe, { run: ye } = pe, { run: be } = me, xe = me.isPending, N = ue.isPending, Se = ue.error ?? de.error ?? fe.error, [Ce, P] = jr(dc, { kind: "visible" }), we = Ce.kind !== "visible", [Te, Ee] = L(0), De = z(null), Oe = Ni(f), ke = f.kind === "verified", Ae = f.kind === "unresolved" || f.kind === "recovering", je = Mi(f);
|
|
6706
6929
|
R(() => {
|
|
6707
6930
|
if (f.kind !== "unresolved" && f.kind !== "recovering") return;
|
|
6708
6931
|
let e = f.kind === "recovering" ? f.preserved : d.preserved, t = !1, n = null, r = 1e3;
|
|
6709
6932
|
function i() {
|
|
6710
|
-
|
|
6933
|
+
E.mintAnonIdentity().then(({ clientId: n, token: r }) => {
|
|
6711
6934
|
t || p({
|
|
6712
6935
|
type: "mint-success",
|
|
6713
6936
|
identity: {
|
|
@@ -6725,71 +6948,73 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6725
6948
|
t = !0, n && clearTimeout(n);
|
|
6726
6949
|
};
|
|
6727
6950
|
}, [
|
|
6728
|
-
|
|
6951
|
+
E,
|
|
6729
6952
|
f,
|
|
6730
6953
|
p,
|
|
6731
6954
|
d
|
|
6732
6955
|
]);
|
|
6733
|
-
let
|
|
6956
|
+
let Me = Co(E), [Ne, Pe] = L(null);
|
|
6734
6957
|
R(() => {
|
|
6735
6958
|
let t = new kr(e.replace(/\.convex\.site(\/.*)?$/, ".convex.cloud"));
|
|
6736
|
-
return
|
|
6737
|
-
t.close(),
|
|
6959
|
+
return Pe(t), () => {
|
|
6960
|
+
t.close(), Pe((e) => e === t ? null : e);
|
|
6738
6961
|
};
|
|
6739
6962
|
}, [e]);
|
|
6740
|
-
let
|
|
6963
|
+
let F = z(!1);
|
|
6741
6964
|
R(() => {
|
|
6742
|
-
if (!(!
|
|
6743
|
-
subscriptionToken:
|
|
6965
|
+
if (!(!Ne || !Me)) return he(), ve(), Ne.onUpdate(bn("widget/queries:subscribeThreadsForRoute"), {
|
|
6966
|
+
subscriptionToken: Me,
|
|
6744
6967
|
route: a,
|
|
6745
|
-
viewerClientId:
|
|
6968
|
+
viewerClientId: je
|
|
6746
6969
|
}, (e) => {
|
|
6747
6970
|
e !== void 0 && (c(e), u(!0));
|
|
6748
6971
|
});
|
|
6749
6972
|
}, [
|
|
6973
|
+
Ne,
|
|
6750
6974
|
Me,
|
|
6751
|
-
je,
|
|
6752
6975
|
a,
|
|
6753
|
-
|
|
6754
|
-
|
|
6755
|
-
|
|
6976
|
+
je,
|
|
6977
|
+
he,
|
|
6978
|
+
ve
|
|
6756
6979
|
]), R(() => {
|
|
6757
6980
|
if (f.kind !== "verified") {
|
|
6758
|
-
|
|
6981
|
+
A(0);
|
|
6759
6982
|
return;
|
|
6760
6983
|
}
|
|
6761
|
-
if (!(!
|
|
6762
|
-
e !== void 0 &&
|
|
6984
|
+
if (!(!Ne || !Me)) return Ne.onUpdate(bn("widget/queries:subscribeUnreadCountForProject"), { subscriptionToken: Me }, (e) => {
|
|
6985
|
+
e !== void 0 && A(e.count);
|
|
6763
6986
|
});
|
|
6764
6987
|
}, [
|
|
6988
|
+
Ne,
|
|
6765
6989
|
Me,
|
|
6766
|
-
je,
|
|
6767
6990
|
f.kind
|
|
6768
6991
|
]), R(() => {
|
|
6769
|
-
if (
|
|
6992
|
+
if (F.current || !l) return;
|
|
6770
6993
|
let e = window.location.hash.match(/^#markup-thread=(.+)$/);
|
|
6771
6994
|
if (e) {
|
|
6772
6995
|
let t = decodeURIComponent(e[1] ?? "");
|
|
6773
|
-
s.find((e) => e._id === t) &&
|
|
6996
|
+
s.find((e) => e._id === t) && O({
|
|
6774
6997
|
kind: "thread",
|
|
6775
6998
|
threadId: t
|
|
6776
6999
|
}), history.replaceState(null, "", window.location.pathname + window.location.search);
|
|
6777
7000
|
}
|
|
6778
|
-
|
|
6779
|
-
}, [s, l]), R(() => Ci(() => o(
|
|
7001
|
+
F.current = !0;
|
|
7002
|
+
}, [s, l]), R(() => Ci(() => o(uc())), []), R(() => {
|
|
6780
7003
|
function e(e) {
|
|
6781
|
-
e.key === "." && (e.metaKey || e.ctrlKey) && (e.altKey || e.shiftKey || (e.preventDefault(),
|
|
7004
|
+
e.key === "." && (e.metaKey || e.ctrlKey) && (e.altKey || e.shiftKey || (e.preventDefault(), P({ type: "toggle" })));
|
|
6782
7005
|
}
|
|
6783
7006
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
6784
|
-
}, [
|
|
6785
|
-
|
|
6786
|
-
|
|
7007
|
+
}, [P]), R(() => {
|
|
7008
|
+
we && C(null);
|
|
7009
|
+
}, [we]), R(() => {
|
|
7010
|
+
if (Ce.kind !== "hidden-with-toast") return;
|
|
7011
|
+
let e = window.setTimeout(() => P({ type: "dismiss-toast" }), 5e3);
|
|
6787
7012
|
return () => window.clearTimeout(e);
|
|
6788
|
-
}, [
|
|
7013
|
+
}, [Ce.kind, P]), R(() => {
|
|
6789
7014
|
let e = null;
|
|
6790
7015
|
function t() {
|
|
6791
7016
|
e ??= requestAnimationFrame(() => {
|
|
6792
|
-
e = null,
|
|
7017
|
+
e = null, Ee((e) => e + 1);
|
|
6793
7018
|
});
|
|
6794
7019
|
}
|
|
6795
7020
|
window.addEventListener("scroll", t, { passive: !0 }), window.addEventListener("resize", t);
|
|
@@ -6798,25 +7023,25 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6798
7023
|
window.removeEventListener("scroll", t), window.removeEventListener("resize", t), n.disconnect(), e != null && cancelAnimationFrame(e);
|
|
6799
7024
|
};
|
|
6800
7025
|
}, []);
|
|
6801
|
-
let
|
|
6802
|
-
|
|
6803
|
-
}, [
|
|
7026
|
+
let Fe = V(() => {
|
|
7027
|
+
he(), ve(), O({ kind: "placing" });
|
|
7028
|
+
}, [he, ve]);
|
|
6804
7029
|
R(() => {
|
|
6805
7030
|
function e(e) {
|
|
6806
|
-
e.key === "c" && (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey ||
|
|
7031
|
+
e.key === "c" && (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey || D.kind === "idle" && (we || lc() || (e.preventDefault(), Fe())));
|
|
6807
7032
|
}
|
|
6808
7033
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
6809
7034
|
}, [
|
|
6810
|
-
|
|
6811
|
-
|
|
6812
|
-
|
|
7035
|
+
D.kind,
|
|
7036
|
+
we,
|
|
7037
|
+
Fe
|
|
6813
7038
|
]);
|
|
6814
|
-
let
|
|
6815
|
-
|
|
6816
|
-
}, [
|
|
6817
|
-
let i = t + window.scrollX, a = n + window.scrollY, o = ++
|
|
7039
|
+
let Ie = V(() => {
|
|
7040
|
+
O({ kind: "idle" }), he(), ve();
|
|
7041
|
+
}, [he, ve]), Le = z(0), Re = V((e, t, n) => {
|
|
7042
|
+
let i = t + window.scrollX, a = n + window.scrollY, o = ++Le.current;
|
|
6818
7043
|
if (r?.enabled === !1 || !b) {
|
|
6819
|
-
|
|
7044
|
+
O({
|
|
6820
7045
|
kind: "composing-new",
|
|
6821
7046
|
coords: e,
|
|
6822
7047
|
pageX: i,
|
|
@@ -6830,7 +7055,7 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6830
7055
|
});
|
|
6831
7056
|
return;
|
|
6832
7057
|
}
|
|
6833
|
-
|
|
7058
|
+
O({
|
|
6834
7059
|
kind: "composing-new",
|
|
6835
7060
|
coords: e,
|
|
6836
7061
|
pageX: i,
|
|
@@ -6842,7 +7067,7 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6842
7067
|
screenshotRedactedSelectors: [],
|
|
6843
7068
|
captureToken: o
|
|
6844
7069
|
});
|
|
6845
|
-
let s =
|
|
7070
|
+
let s = De.current != null && De.current.getRootNode() instanceof ShadowRoot ? De.current.getRootNode().host : null, c = {
|
|
6846
7071
|
strictScrub: r?.strictScrub,
|
|
6847
7072
|
redactSelector: r?.redactSelector
|
|
6848
7073
|
};
|
|
@@ -6850,7 +7075,7 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6850
7075
|
x: t,
|
|
6851
7076
|
y: n
|
|
6852
7077
|
}, c).then((e) => {
|
|
6853
|
-
|
|
7078
|
+
O((t) => t.kind !== "composing-new" || t.captureToken !== o ? t : {
|
|
6854
7079
|
...t,
|
|
6855
7080
|
screenshot: e?.blob ?? null,
|
|
6856
7081
|
isScreenshotCapturing: !1,
|
|
@@ -6859,15 +7084,15 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6859
7084
|
screenshotRedactedSelectors: e?.redactedSelectors ?? []
|
|
6860
7085
|
});
|
|
6861
7086
|
});
|
|
6862
|
-
}, [r, b]),
|
|
7087
|
+
}, [r, b]), I = V((e, t) => {
|
|
6863
7088
|
p({
|
|
6864
7089
|
type: "author-set",
|
|
6865
7090
|
name: e,
|
|
6866
7091
|
email: t
|
|
6867
7092
|
});
|
|
6868
|
-
}, [p]),
|
|
6869
|
-
await
|
|
6870
|
-
let n =
|
|
7093
|
+
}, [p]), ze = de.isPending, Be = V(async () => {
|
|
7094
|
+
await ge(async () => {
|
|
7095
|
+
let n = cc(await zi({
|
|
6871
7096
|
apiUrl: e,
|
|
6872
7097
|
apiKey: t,
|
|
6873
7098
|
useCookies: m === !0
|
|
@@ -6882,20 +7107,20 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6882
7107
|
e,
|
|
6883
7108
|
t,
|
|
6884
7109
|
m,
|
|
6885
|
-
|
|
7110
|
+
ge,
|
|
6886
7111
|
p
|
|
6887
|
-
]),
|
|
6888
|
-
if (
|
|
7112
|
+
]), Ve = V(async (e, t) => {
|
|
7113
|
+
if (D.kind !== "composing-new") return;
|
|
6889
7114
|
let n = Pi(f);
|
|
6890
7115
|
n && await M(async () => {
|
|
6891
7116
|
let r;
|
|
6892
|
-
if (t &&
|
|
6893
|
-
let { uploadUrl: e } = await
|
|
7117
|
+
if (t && D.screenshot) {
|
|
7118
|
+
let { uploadUrl: e } = await E.getScreenshotUploadUrl(), t;
|
|
6894
7119
|
try {
|
|
6895
7120
|
t = await fetch(e, {
|
|
6896
7121
|
method: "POST",
|
|
6897
|
-
headers: { "Content-Type":
|
|
6898
|
-
body:
|
|
7122
|
+
headers: { "Content-Type": D.screenshot.type || "image/png" },
|
|
7123
|
+
body: D.screenshot,
|
|
6899
7124
|
signal: AbortSignal.timeout(6e4)
|
|
6900
7125
|
});
|
|
6901
7126
|
} catch (e) {
|
|
@@ -6905,16 +7130,16 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6905
7130
|
let { storageId: n } = await t.json();
|
|
6906
7131
|
r = n;
|
|
6907
7132
|
}
|
|
6908
|
-
let i = Pr(e), o = await
|
|
7133
|
+
let i = Pr(e), o = await E.createThread({
|
|
6909
7134
|
url: window.location.href,
|
|
6910
7135
|
route: a,
|
|
6911
|
-
anchorSelector:
|
|
6912
|
-
anchorX:
|
|
6913
|
-
anchorY:
|
|
6914
|
-
anchorOffsetX:
|
|
6915
|
-
anchorOffsetY:
|
|
6916
|
-
viewportW:
|
|
6917
|
-
viewportY:
|
|
7136
|
+
anchorSelector: D.coords.anchorSelector,
|
|
7137
|
+
anchorX: D.coords.anchorX,
|
|
7138
|
+
anchorY: D.coords.anchorY,
|
|
7139
|
+
anchorOffsetX: D.coords.anchorOffsetX,
|
|
7140
|
+
anchorOffsetY: D.coords.anchorOffsetY,
|
|
7141
|
+
viewportW: D.coords.viewportW,
|
|
7142
|
+
viewportY: D.coords.viewportY,
|
|
6918
7143
|
userAgent: navigator.userAgent,
|
|
6919
7144
|
authorName: n.name,
|
|
6920
7145
|
authorEmail: n.email,
|
|
@@ -6922,43 +7147,43 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6922
7147
|
mentions: i.length > 0 ? i : void 0,
|
|
6923
7148
|
screenshotStorageId: r
|
|
6924
7149
|
});
|
|
6925
|
-
c((e) => [...e, o.thread]),
|
|
7150
|
+
c((e) => [...e, o.thread]), O({
|
|
6926
7151
|
kind: "thread",
|
|
6927
7152
|
threadId: o.thread._id
|
|
6928
7153
|
});
|
|
6929
7154
|
});
|
|
6930
7155
|
}, [
|
|
6931
|
-
T,
|
|
6932
|
-
f,
|
|
6933
7156
|
E,
|
|
7157
|
+
f,
|
|
7158
|
+
D,
|
|
6934
7159
|
a,
|
|
6935
7160
|
M
|
|
6936
|
-
]),
|
|
6937
|
-
if (
|
|
6938
|
-
let e =
|
|
7161
|
+
]), He = V(async () => {
|
|
7162
|
+
if (D.kind !== "thread") return;
|
|
7163
|
+
let e = D.threadId;
|
|
6939
7164
|
await M(async () => {
|
|
6940
|
-
await
|
|
7165
|
+
await E.deleteThread(e), c((t) => t.filter((t) => t._id !== e)), O({ kind: "idle" });
|
|
6941
7166
|
});
|
|
6942
7167
|
}, [
|
|
6943
|
-
T,
|
|
6944
7168
|
E,
|
|
7169
|
+
D,
|
|
6945
7170
|
M
|
|
6946
|
-
]),
|
|
6947
|
-
if (
|
|
6948
|
-
let e =
|
|
7171
|
+
]), Ue = V(async () => {
|
|
7172
|
+
if (D.kind !== "thread") return;
|
|
7173
|
+
let e = D.threadId;
|
|
6949
7174
|
await M(async () => {
|
|
6950
|
-
await
|
|
7175
|
+
await E.resolveThread(e, je), c((t) => t.filter((t) => t._id !== e)), O({ kind: "idle" });
|
|
6951
7176
|
});
|
|
6952
7177
|
}, [
|
|
6953
|
-
T,
|
|
6954
7178
|
E,
|
|
6955
|
-
|
|
7179
|
+
D,
|
|
7180
|
+
je,
|
|
6956
7181
|
M
|
|
6957
|
-
]),
|
|
6958
|
-
if (e.readAt ?? (
|
|
7182
|
+
]), We = V((e) => {
|
|
7183
|
+
if (e.readAt ?? (A((e) => Math.max(0, e - 1)), ne((t) => t.map((t) => t._id === e._id ? {
|
|
6959
7184
|
...t,
|
|
6960
7185
|
readAt: Date.now()
|
|
6961
|
-
} : t)),
|
|
7186
|
+
} : t)), E.markNotificationRead(e._id).catch(() => {})), s.some((t) => t._id === e.threadId)) O({
|
|
6962
7187
|
kind: "thread",
|
|
6963
7188
|
threadId: e.threadId
|
|
6964
7189
|
});
|
|
@@ -6966,18 +7191,18 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6966
7191
|
let t = Ti(e.threadUrl, window.location.href);
|
|
6967
7192
|
t && (t.hash = `markup-thread=${e.threadId}`, window.location.href = t.toString());
|
|
6968
7193
|
}
|
|
6969
|
-
}, [
|
|
6970
|
-
|
|
7194
|
+
}, [E, s]), Ge = V(() => {
|
|
7195
|
+
ce(!0), A(0), ne((e) => e.map((e) => e.readAt == null ? {
|
|
6971
7196
|
...e,
|
|
6972
7197
|
readAt: Date.now()
|
|
6973
|
-
} : e)),
|
|
6974
|
-
}, [
|
|
6975
|
-
if (
|
|
7198
|
+
} : e)), E.markAllNotificationsRead().catch(() => {}).finally(() => ce(!1));
|
|
7199
|
+
}, [E]), Ke = V(async (e) => {
|
|
7200
|
+
if (D.kind !== "thread") return;
|
|
6976
7201
|
let t = Pi(f);
|
|
6977
7202
|
if (!t) return;
|
|
6978
|
-
let n =
|
|
7203
|
+
let n = D.threadId;
|
|
6979
7204
|
await M(async () => {
|
|
6980
|
-
let r = Pr(e), i = await
|
|
7205
|
+
let r = Pr(e), i = await E.addComment(n, {
|
|
6981
7206
|
body: e,
|
|
6982
7207
|
authorName: t.name,
|
|
6983
7208
|
authorEmail: t.email,
|
|
@@ -6986,83 +7211,84 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
6986
7211
|
c((e) => e.map((e) => e._id === n ? i.thread : e));
|
|
6987
7212
|
});
|
|
6988
7213
|
}, [
|
|
6989
|
-
T,
|
|
6990
|
-
f,
|
|
6991
7214
|
E,
|
|
7215
|
+
f,
|
|
7216
|
+
D,
|
|
6992
7217
|
M
|
|
6993
|
-
]),
|
|
6994
|
-
if (
|
|
6995
|
-
let n =
|
|
7218
|
+
]), qe = V(async (e, t) => {
|
|
7219
|
+
if (D.kind !== "thread" || f.kind !== "anon" && f.kind !== "verified") return;
|
|
7220
|
+
let n = D.threadId;
|
|
6996
7221
|
await M(async () => {
|
|
6997
|
-
let r = Pr(t), i = await
|
|
7222
|
+
let r = Pr(t), i = await E.editComment(n, e, {
|
|
6998
7223
|
body: t,
|
|
6999
7224
|
mentions: r.length > 0 ? r : void 0
|
|
7000
7225
|
});
|
|
7001
7226
|
c((e) => e.map((e) => e._id === n ? i.thread : e));
|
|
7002
7227
|
}, { rethrow: !0 });
|
|
7003
7228
|
}, [
|
|
7004
|
-
T,
|
|
7005
|
-
f,
|
|
7006
7229
|
E,
|
|
7230
|
+
f,
|
|
7231
|
+
D,
|
|
7007
7232
|
M
|
|
7008
|
-
]),
|
|
7009
|
-
if (
|
|
7010
|
-
let t =
|
|
7233
|
+
]), Je = V(async (e) => {
|
|
7234
|
+
if (D.kind !== "thread" || f.kind !== "anon" && f.kind !== "verified") return;
|
|
7235
|
+
let t = D.threadId;
|
|
7011
7236
|
await M(async () => {
|
|
7012
|
-
let n = await
|
|
7237
|
+
let n = await E.deleteComment(t, e);
|
|
7013
7238
|
c((e) => e.map((e) => e._id === t ? n.thread : e));
|
|
7014
7239
|
});
|
|
7015
7240
|
}, [
|
|
7016
|
-
T,
|
|
7017
|
-
f,
|
|
7018
7241
|
E,
|
|
7242
|
+
f,
|
|
7243
|
+
D,
|
|
7019
7244
|
M
|
|
7020
|
-
]),
|
|
7021
|
-
if (
|
|
7245
|
+
]), Ye = V(async (e, t) => {
|
|
7246
|
+
if (D.kind !== "thread") return;
|
|
7022
7247
|
let n = Pi(f);
|
|
7023
7248
|
if (!n) return;
|
|
7024
|
-
let r =
|
|
7025
|
-
await
|
|
7026
|
-
let i = await
|
|
7249
|
+
let r = D.threadId;
|
|
7250
|
+
await _e(async () => {
|
|
7251
|
+
let i = await E.toggleReaction(e, {
|
|
7027
7252
|
emoji: t,
|
|
7028
7253
|
authorName: n.name
|
|
7029
7254
|
});
|
|
7030
7255
|
c((e) => e.map((e) => e._id === r ? i.thread : e));
|
|
7031
7256
|
});
|
|
7032
7257
|
}, [
|
|
7033
|
-
T,
|
|
7034
|
-
f,
|
|
7035
7258
|
E,
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
|
|
7259
|
+
f,
|
|
7260
|
+
D,
|
|
7261
|
+
_e
|
|
7262
|
+
]), [Xe, Ze] = L(!1), Qe = V(async () => {
|
|
7263
|
+
await ye(async () => {
|
|
7264
|
+
await E.forgetMe(), O({ kind: "idle" }), w(), p({ type: "forget-me" }), Ze(!0);
|
|
7040
7265
|
});
|
|
7041
7266
|
}, [
|
|
7042
|
-
|
|
7043
|
-
|
|
7267
|
+
E,
|
|
7268
|
+
w,
|
|
7269
|
+
ye,
|
|
7044
7270
|
p
|
|
7045
7271
|
]);
|
|
7046
7272
|
R(() => {
|
|
7047
|
-
if (!
|
|
7048
|
-
let e = window.setTimeout(() =>
|
|
7273
|
+
if (!Xe) return;
|
|
7274
|
+
let e = window.setTimeout(() => Ze(!1), 5e3);
|
|
7049
7275
|
return () => window.clearTimeout(e);
|
|
7050
|
-
}, [
|
|
7051
|
-
let [
|
|
7052
|
-
await
|
|
7053
|
-
await
|
|
7276
|
+
}, [Xe]);
|
|
7277
|
+
let [$e, et] = L(!1), tt = V(async () => {
|
|
7278
|
+
await be(async () => {
|
|
7279
|
+
await E.signOut(), O({ kind: "idle" }), p({ type: "signed-out" }), et(!0);
|
|
7054
7280
|
});
|
|
7055
7281
|
}, [
|
|
7056
|
-
|
|
7057
|
-
|
|
7282
|
+
E,
|
|
7283
|
+
be,
|
|
7058
7284
|
p
|
|
7059
7285
|
]);
|
|
7060
7286
|
R(() => {
|
|
7061
|
-
if (
|
|
7062
|
-
let e = window.setTimeout(() =>
|
|
7287
|
+
if (!$e) return;
|
|
7288
|
+
let e = window.setTimeout(() => et(!1), 5e3);
|
|
7063
7289
|
return () => window.clearTimeout(e);
|
|
7064
|
-
}, [
|
|
7065
|
-
let
|
|
7290
|
+
}, [$e]);
|
|
7291
|
+
let H = D.kind === "thread" ? s.find((e) => e._id === D.threadId) ?? null : null, U = ke || je != null && je === H?.authorClientId, nt = B(() => s.map((e) => ({
|
|
7066
7292
|
thread: e,
|
|
7067
7293
|
point: oi({
|
|
7068
7294
|
anchorX: e.anchorX,
|
|
@@ -7071,27 +7297,27 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7071
7297
|
anchorOffsetX: e.anchorOffsetX,
|
|
7072
7298
|
anchorOffsetY: e.anchorOffsetY
|
|
7073
7299
|
})
|
|
7074
|
-
})), [s,
|
|
7300
|
+
})), [s, Te]), rt = z({
|
|
7075
7301
|
retryable: !1,
|
|
7076
7302
|
elements: []
|
|
7077
7303
|
});
|
|
7078
7304
|
R(() => {
|
|
7079
|
-
|
|
7080
|
-
retryable:
|
|
7081
|
-
elements:
|
|
7305
|
+
rt.current = {
|
|
7306
|
+
retryable: nt.some((e) => !e.point.resolved && e.thread.anchorSelector != null),
|
|
7307
|
+
elements: nt.flatMap((e) => e.point.element ? [e.point.element] : [])
|
|
7082
7308
|
};
|
|
7083
|
-
}, [
|
|
7084
|
-
let
|
|
7309
|
+
}, [nt]);
|
|
7310
|
+
let it = s.some((e) => e.anchorSelector != null);
|
|
7085
7311
|
return R(() => {
|
|
7086
|
-
if (!
|
|
7312
|
+
if (!it) return;
|
|
7087
7313
|
let e = null;
|
|
7088
7314
|
function t() {
|
|
7089
7315
|
e ??= requestAnimationFrame(() => {
|
|
7090
|
-
e = null,
|
|
7316
|
+
e = null, Ee((e) => e + 1);
|
|
7091
7317
|
});
|
|
7092
7318
|
}
|
|
7093
7319
|
let n = new MutationObserver(() => {
|
|
7094
|
-
let { retryable: e, elements: n } =
|
|
7320
|
+
let { retryable: e, elements: n } = rt.current;
|
|
7095
7321
|
!e && n.every((e) => e.isConnected) || t();
|
|
7096
7322
|
});
|
|
7097
7323
|
return n.observe(document.body, {
|
|
@@ -7100,136 +7326,167 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
|
|
|
7100
7326
|
}), () => {
|
|
7101
7327
|
n.disconnect(), e != null && cancelAnimationFrame(e);
|
|
7102
7328
|
};
|
|
7103
|
-
}, [
|
|
7104
|
-
|
|
7329
|
+
}, [it]), R(() => {
|
|
7330
|
+
D.kind === "thread" && H == null && Ie();
|
|
7105
7331
|
}, [
|
|
7106
|
-
|
|
7107
|
-
|
|
7108
|
-
|
|
7332
|
+
D,
|
|
7333
|
+
H,
|
|
7334
|
+
Ie
|
|
7109
7335
|
]), /* @__PURE__ */ Q("div", {
|
|
7110
7336
|
class: "markup-root",
|
|
7111
|
-
ref:
|
|
7337
|
+
ref: De,
|
|
7112
7338
|
children: [
|
|
7113
|
-
|
|
7339
|
+
D.kind === "placing" ? null : /* @__PURE__ */ Q("div", {
|
|
7114
7340
|
class: "markup-pins-layer",
|
|
7115
|
-
children: [!
|
|
7116
|
-
let n =
|
|
7341
|
+
children: [!we && v ? nt.map(({ thread: e, point: t }) => {
|
|
7342
|
+
let n = D.kind === "thread" && D.threadId === e._id, r = e.comments.reduce((e, t) => e + +!t.deleted, 0);
|
|
7117
7343
|
return /* @__PURE__ */ Q(Us, {
|
|
7118
7344
|
pageX: t.pageX,
|
|
7119
7345
|
pageY: t.pageY,
|
|
7120
7346
|
count: r,
|
|
7121
7347
|
isActive: n,
|
|
7122
7348
|
isUnresolved: !t.resolved,
|
|
7123
|
-
onClick: () =>
|
|
7349
|
+
onClick: () => O({
|
|
7124
7350
|
kind: "thread",
|
|
7125
7351
|
threadId: e._id
|
|
7126
7352
|
})
|
|
7127
7353
|
}, e._id);
|
|
7128
|
-
}) : null,
|
|
7129
|
-
pageX:
|
|
7130
|
-
pageY:
|
|
7354
|
+
}) : null, D.kind === "composing-new" ? /* @__PURE__ */ Q(Ws, {
|
|
7355
|
+
pageX: D.pageX,
|
|
7356
|
+
pageY: D.pageY
|
|
7131
7357
|
}) : null]
|
|
7132
7358
|
}),
|
|
7133
|
-
|
|
7134
|
-
onPlace:
|
|
7135
|
-
onCancel:
|
|
7359
|
+
D.kind === "placing" ? /* @__PURE__ */ Q(Gs, {
|
|
7360
|
+
onPlace: Re,
|
|
7361
|
+
onCancel: Ie
|
|
7136
7362
|
}) : null,
|
|
7137
|
-
|
|
7138
|
-
thread:
|
|
7139
|
-
authorName:
|
|
7140
|
-
currentClientId:
|
|
7141
|
-
isVerified:
|
|
7142
|
-
isIdentityResolving:
|
|
7143
|
-
isSigningIn:
|
|
7144
|
-
canDelete:
|
|
7145
|
-
isPending:
|
|
7146
|
-
error:
|
|
7147
|
-
isHidden:
|
|
7148
|
-
members:
|
|
7149
|
-
onAuthor:
|
|
7150
|
-
onSignIn:
|
|
7151
|
-
onClose:
|
|
7152
|
-
onReply:
|
|
7153
|
-
onEditComment:
|
|
7154
|
-
onDeleteComment:
|
|
7155
|
-
onToggleReaction:
|
|
7156
|
-
onDelete:
|
|
7157
|
-
onResolve:
|
|
7158
|
-
},
|
|
7159
|
-
|
|
7160
|
-
pageX:
|
|
7161
|
-
pageY:
|
|
7162
|
-
authorName:
|
|
7163
|
-
isVerified:
|
|
7164
|
-
isIdentityResolving:
|
|
7165
|
-
isSigningIn:
|
|
7166
|
-
isPending:
|
|
7167
|
-
error:
|
|
7168
|
-
screenshot:
|
|
7169
|
-
isScreenshotCapturing:
|
|
7170
|
-
screenshotFailed:
|
|
7171
|
-
screenshotRedactedCount:
|
|
7172
|
-
screenshotRedactedSelectors:
|
|
7173
|
-
members:
|
|
7174
|
-
onAuthor:
|
|
7175
|
-
onSignIn:
|
|
7176
|
-
onSubmit:
|
|
7177
|
-
onClose:
|
|
7363
|
+
D.kind === "thread" && H ? /* @__PURE__ */ Q(Zs, {
|
|
7364
|
+
thread: H,
|
|
7365
|
+
authorName: Oe,
|
|
7366
|
+
currentClientId: je ?? null,
|
|
7367
|
+
isVerified: ke,
|
|
7368
|
+
isIdentityResolving: Ae,
|
|
7369
|
+
isSigningIn: ze,
|
|
7370
|
+
canDelete: U,
|
|
7371
|
+
isPending: N,
|
|
7372
|
+
error: Se,
|
|
7373
|
+
isHidden: we,
|
|
7374
|
+
members: ee,
|
|
7375
|
+
onAuthor: I,
|
|
7376
|
+
onSignIn: Be,
|
|
7377
|
+
onClose: Ie,
|
|
7378
|
+
onReply: Ke,
|
|
7379
|
+
onEditComment: qe,
|
|
7380
|
+
onDeleteComment: Je,
|
|
7381
|
+
onToggleReaction: Ye,
|
|
7382
|
+
onDelete: He,
|
|
7383
|
+
onResolve: Ue
|
|
7384
|
+
}, H._id) : null,
|
|
7385
|
+
D.kind === "composing-new" ? /* @__PURE__ */ Q(Ns, {
|
|
7386
|
+
pageX: D.pageX,
|
|
7387
|
+
pageY: D.pageY,
|
|
7388
|
+
authorName: Oe,
|
|
7389
|
+
isVerified: ke,
|
|
7390
|
+
isIdentityResolving: Ae,
|
|
7391
|
+
isSigningIn: ze,
|
|
7392
|
+
isPending: N,
|
|
7393
|
+
error: Se,
|
|
7394
|
+
screenshot: D.screenshot,
|
|
7395
|
+
isScreenshotCapturing: D.isScreenshotCapturing,
|
|
7396
|
+
screenshotFailed: D.screenshotFailed,
|
|
7397
|
+
screenshotRedactedCount: D.screenshotRedactedCount,
|
|
7398
|
+
screenshotRedactedSelectors: D.screenshotRedactedSelectors,
|
|
7399
|
+
members: ee,
|
|
7400
|
+
onAuthor: I,
|
|
7401
|
+
onSignIn: Be,
|
|
7402
|
+
onSubmit: Ve,
|
|
7403
|
+
onClose: Ie
|
|
7178
7404
|
}) : null,
|
|
7179
|
-
!
|
|
7180
|
-
isActive:
|
|
7181
|
-
onToggle: () =>
|
|
7182
|
-
onHide: () =>
|
|
7405
|
+
!we || D.kind === "placing" || D.kind === "composing-new" ? /* @__PURE__ */ Q(sc, {
|
|
7406
|
+
isActive: D.kind === "placing",
|
|
7407
|
+
onToggle: () => D.kind === "placing" ? Ie() : Fe(),
|
|
7408
|
+
onHide: () => P({ type: "hide-with-toast" }),
|
|
7183
7409
|
position: g,
|
|
7184
|
-
showInbox:
|
|
7185
|
-
unreadCount:
|
|
7186
|
-
inboxOpen: S,
|
|
7410
|
+
showInbox: ke,
|
|
7411
|
+
unreadCount: ke ? k : 0,
|
|
7412
|
+
inboxOpen: S === "inbox",
|
|
7187
7413
|
onOpenInbox: () => {
|
|
7188
|
-
let e =
|
|
7189
|
-
C(e), e &&
|
|
7414
|
+
let e = S === "inbox" ? null : "inbox";
|
|
7415
|
+
C(e), e && le();
|
|
7190
7416
|
},
|
|
7191
7417
|
pinsVisible: v,
|
|
7192
7418
|
onTogglePins: () => y((e) => !e),
|
|
7193
7419
|
identityButton: /* @__PURE__ */ Q($o, {
|
|
7194
7420
|
identity: f,
|
|
7195
7421
|
position: g,
|
|
7196
|
-
isSigningIn:
|
|
7197
|
-
isSigningOut:
|
|
7422
|
+
isSigningIn: ze,
|
|
7423
|
+
isSigningOut: xe,
|
|
7198
7424
|
dashboardUrl: i,
|
|
7199
|
-
onSignIn:
|
|
7200
|
-
onSignOut:
|
|
7201
|
-
onForgetMe:
|
|
7425
|
+
onSignIn: Be,
|
|
7426
|
+
onSignOut: tt,
|
|
7427
|
+
onForgetMe: Qe
|
|
7202
7428
|
}),
|
|
7203
|
-
overflowButton: /* @__PURE__ */ Q(
|
|
7429
|
+
overflowButton: /* @__PURE__ */ Q(Rs, {
|
|
7204
7430
|
position: g,
|
|
7205
7431
|
onSetPosition: _,
|
|
7206
7432
|
autoCapture: b && r?.enabled !== !1,
|
|
7207
7433
|
autoCaptureLocked: r?.enabled === !1,
|
|
7208
7434
|
onToggleAutoCapture: () => x((e) => !e),
|
|
7209
|
-
|
|
7210
|
-
|
|
7435
|
+
onOpenPrivacy: () => C("privacy"),
|
|
7436
|
+
onOpenShortcuts: () => C("shortcuts"),
|
|
7437
|
+
onHideForSession: () => P({ type: "hide-with-toast" }),
|
|
7438
|
+
version: "1.17.0",
|
|
7211
7439
|
dashboardUrl: i
|
|
7212
7440
|
})
|
|
7213
7441
|
}) : null,
|
|
7214
|
-
S &&
|
|
7442
|
+
S === "inbox" && ke ? /* @__PURE__ */ Q(Hs, {
|
|
7443
|
+
kind: "inbox",
|
|
7444
|
+
label: "Inbox",
|
|
7215
7445
|
position: g,
|
|
7216
|
-
|
|
7217
|
-
|
|
7218
|
-
|
|
7219
|
-
|
|
7220
|
-
|
|
7221
|
-
|
|
7222
|
-
|
|
7223
|
-
|
|
7224
|
-
|
|
7446
|
+
ignoreToolbarKind: "inbox",
|
|
7447
|
+
onClose: w,
|
|
7448
|
+
children: /* @__PURE__ */ Q(Fs, {
|
|
7449
|
+
items: j,
|
|
7450
|
+
isLoading: re,
|
|
7451
|
+
error: ae,
|
|
7452
|
+
isMarkingAll: se,
|
|
7453
|
+
onBack: w,
|
|
7454
|
+
onItemClick: (e) => {
|
|
7455
|
+
w(), We(e);
|
|
7456
|
+
},
|
|
7457
|
+
onMarkAllRead: Ge
|
|
7458
|
+
})
|
|
7459
|
+
}) : null,
|
|
7460
|
+
S === "privacy" ? /* @__PURE__ */ Q(Hs, {
|
|
7461
|
+
kind: "privacy",
|
|
7462
|
+
label: "Privacy and data",
|
|
7463
|
+
position: g,
|
|
7464
|
+
onClose: w,
|
|
7465
|
+
children: /* @__PURE__ */ Q(Ks, {
|
|
7466
|
+
identity: f,
|
|
7467
|
+
apiUrl: e,
|
|
7468
|
+
autoCapture: b && r?.enabled !== !1,
|
|
7469
|
+
autoCaptureLocked: r?.enabled === !1,
|
|
7470
|
+
isForgettingMe: pe.isPending,
|
|
7471
|
+
forgetMeError: pe.error,
|
|
7472
|
+
onForgetMe: Qe,
|
|
7473
|
+
onClose: w
|
|
7474
|
+
})
|
|
7475
|
+
}) : null,
|
|
7476
|
+
S === "shortcuts" ? /* @__PURE__ */ Q(Hs, {
|
|
7477
|
+
kind: "shortcuts",
|
|
7478
|
+
label: "Keyboard shortcuts",
|
|
7479
|
+
position: g,
|
|
7480
|
+
onClose: w,
|
|
7481
|
+
children: /* @__PURE__ */ Q(Js, { onClose: w })
|
|
7225
7482
|
}) : null,
|
|
7226
|
-
|
|
7227
|
-
|
|
7228
|
-
|
|
7483
|
+
Ce.kind === "hidden-with-toast" ? /* @__PURE__ */ Q(hc, { position: g }) : null,
|
|
7484
|
+
Xe ? /* @__PURE__ */ Q(gc, { position: g }) : null,
|
|
7485
|
+
$e ? /* @__PURE__ */ Q(_c, { position: g }) : null
|
|
7229
7486
|
]
|
|
7230
7487
|
});
|
|
7231
7488
|
}
|
|
7232
|
-
function
|
|
7489
|
+
function hc({ position: e }) {
|
|
7233
7490
|
let { mod: t } = Oo();
|
|
7234
7491
|
return /* @__PURE__ */ Q("div", {
|
|
7235
7492
|
class: Z("markup-hud-hidden-toast", e === "bottom-left" ? "markup-hud-hidden-toast-left" : e === "bottom-center" ? "markup-hud-hidden-toast-center" : "markup-hud-hidden-toast-right"),
|
|
@@ -7249,7 +7506,7 @@ function fc({ position: e }) {
|
|
|
7249
7506
|
]
|
|
7250
7507
|
});
|
|
7251
7508
|
}
|
|
7252
|
-
function
|
|
7509
|
+
function gc({ position: e }) {
|
|
7253
7510
|
return /* @__PURE__ */ Q("div", {
|
|
7254
7511
|
class: Z("markup-hud-hidden-toast", e === "bottom-left" ? "markup-hud-hidden-toast-left" : e === "bottom-center" ? "markup-hud-hidden-toast-center" : "markup-hud-hidden-toast-right"),
|
|
7255
7512
|
role: "status",
|
|
@@ -7257,7 +7514,7 @@ function pc({ position: e }) {
|
|
|
7257
7514
|
children: "Forgotten on this site — your name and email were cleared."
|
|
7258
7515
|
});
|
|
7259
7516
|
}
|
|
7260
|
-
function
|
|
7517
|
+
function _c({ position: e }) {
|
|
7261
7518
|
return /* @__PURE__ */ Q("div", {
|
|
7262
7519
|
class: Z("markup-hud-hidden-toast", e === "bottom-left" ? "markup-hud-hidden-toast-left" : e === "bottom-center" ? "markup-hud-hidden-toast-center" : "markup-hud-hidden-toast-right"),
|
|
7263
7520
|
role: "status",
|
|
@@ -7267,7 +7524,7 @@ function mc({ position: e }) {
|
|
|
7267
7524
|
}
|
|
7268
7525
|
//#endregion
|
|
7269
7526
|
//#region src/runtime/mount.tsx
|
|
7270
|
-
function
|
|
7527
|
+
function vc(e, t) {
|
|
7271
7528
|
e.style.position = "fixed", e.style.inset = "0", e.style.zIndex = "2147483647", e.style.pointerEvents = "none", Oe(e, t.theme ?? "auto");
|
|
7272
7529
|
let n = Ne(), r = e.attachShadow({ mode: "open" }), i = document.createElement("style");
|
|
7273
7530
|
i.textContent = pe, r.appendChild(i);
|
|
@@ -7275,40 +7532,40 @@ function hc(e, t) {
|
|
|
7275
7532
|
a.className = "markup-shadow-root", r.appendChild(a), xe({
|
|
7276
7533
|
apiUrl: t.apiUrl,
|
|
7277
7534
|
apiKey: t.apiKey,
|
|
7278
|
-
widgetVersion: "1.
|
|
7535
|
+
widgetVersion: "1.17.0"
|
|
7279
7536
|
});
|
|
7280
7537
|
let { theme: o, ...s } = t;
|
|
7281
|
-
return fe(/* @__PURE__ */ Q(
|
|
7538
|
+
return fe(/* @__PURE__ */ Q(me, {
|
|
7282
7539
|
onError: (e) => N(e, { context: "render" }),
|
|
7283
|
-
children: /* @__PURE__ */ Q(
|
|
7540
|
+
children: /* @__PURE__ */ Q(mc, { ...s })
|
|
7284
7541
|
}), a), () => {
|
|
7285
7542
|
n(), xe(null), fe(null, a);
|
|
7286
7543
|
};
|
|
7287
7544
|
}
|
|
7288
7545
|
//#endregion
|
|
7289
7546
|
//#region src/widget.ts
|
|
7290
|
-
var
|
|
7291
|
-
function
|
|
7547
|
+
var yc = null, bc = null, xc = null, Sc = !1;
|
|
7548
|
+
function Cc(e) {
|
|
7292
7549
|
if (!e.apiUrl || !e.apiKey) return console.warn("[markup] init() requires both apiUrl and apiKey — widget not mounted"), () => {};
|
|
7293
|
-
e.fab != null && !
|
|
7550
|
+
e.fab != null && !Sc && (Sc = !0, console.warn("[markup] the `fab` option is ignored and will be removed in the next major — the toolbar replaced the floating action button. Remove it from your config.")), wc();
|
|
7294
7551
|
let t = () => {
|
|
7295
|
-
if (
|
|
7552
|
+
if (xc = null, !document.body) return;
|
|
7296
7553
|
let t = document.createElement("div");
|
|
7297
|
-
t.id = "markup-widget", document.body.appendChild(t),
|
|
7554
|
+
t.id = "markup-widget", document.body.appendChild(t), bc = t, yc = vc(t, e);
|
|
7298
7555
|
};
|
|
7299
7556
|
if (document.readyState === "loading" || !document.body) {
|
|
7300
7557
|
let e = () => t();
|
|
7301
|
-
|
|
7558
|
+
xc = () => document.removeEventListener("DOMContentLoaded", e), document.addEventListener("DOMContentLoaded", e, { once: !0 });
|
|
7302
7559
|
} else t();
|
|
7303
|
-
return
|
|
7560
|
+
return wc;
|
|
7304
7561
|
}
|
|
7305
|
-
function
|
|
7306
|
-
|
|
7562
|
+
function wc() {
|
|
7563
|
+
xc &&= (xc(), null), yc &&= (yc(), null), bc?.parentNode && bc.parentNode.removeChild(bc), bc = null;
|
|
7307
7564
|
}
|
|
7308
7565
|
if (typeof document < "u") {
|
|
7309
7566
|
let e = document.currentScript ?? document.querySelector("script[data-markup-widget=\"true\"]"), t = e?.dataset.apiUrl, n = e?.dataset.apiKey;
|
|
7310
7567
|
if (t && n) {
|
|
7311
|
-
let r = e?.dataset.position, i = e?.dataset.theme, a = e?.dataset.fab, o = e?.dataset.dashboardUrl, s = () =>
|
|
7568
|
+
let r = e?.dataset.position, i = e?.dataset.theme, a = e?.dataset.fab, o = e?.dataset.dashboardUrl, s = () => Cc({
|
|
7312
7569
|
apiUrl: t,
|
|
7313
7570
|
apiKey: n,
|
|
7314
7571
|
position: r,
|
|
@@ -7320,6 +7577,6 @@ if (typeof document < "u") {
|
|
|
7320
7577
|
}
|
|
7321
7578
|
}
|
|
7322
7579
|
//#endregion
|
|
7323
|
-
export {
|
|
7580
|
+
export { wc as destroy, Cc as init };
|
|
7324
7581
|
|
|
7325
7582
|
//# sourceMappingURL=widget.js.map
|