You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tightens the popout so annotations work inside it and chrome doesn't
overlap the dialog.
Annotation flow inside popout:
- Radix Dialog modal={false} so the focus trap doesn't yank focus back
from CommentPopover's textarea (CommentPopover portals to document.body,
outside the dialog's DOM subtree).
- Dialog.Content onInteractOutside handler whitelists the annotation
toolbar, CommentPopover, and FloatingQuickLabelPicker so clicking
them doesn't dismiss the dialog. Backdrop click + Escape still close.
- aria-describedby={undefined} on Dialog.Content (Radix opt-out; the
popout doesn't need a description).
- React.memo on TablePopout with a custom comparator (block id/content,
open, container, imageBaseDir, githubRepo). Prevents upstream Viewer
re-renders from re-running TanStack's flexRender on every cell, which
conflicted with web-highlighter's live DOM mutations and caused a
NotFoundError in React's reconciler.
Widget markers for :has()-based chrome stacking:
- [data-comment-popover="true"] on CommentPopover (both popover + dialog
variants).
- [data-floating-picker="true"] on FloatingQuickLabelPicker.
- [data-sidebar-tabs="true"] on SidebarTabs (left-side TOC/Files/Versions
flags that sit on top of the dialog otherwise).
- theme.css extended: sidebar tabs join the annotation sidebar, sticky
header lane, app header, and overlay scrollbars in dropping to
z-index -1 while body:has([data-popout="true"]) matches.
Known limitation (not addressed): annotations created inside the popout
show their <mark> only while the popout is open; when it closes, the
<mark> unmounts with the popout's DOM and does not reappear on the
collapsed table. The annotation itself persists in state (sidebar,
shared URLs, exports). Round-tripping visual marks between popout and
collapsed view requires either a second web-highlighter instance or a
switch to the CSS Custom Highlight API — out of scope here.
For provenance purposes, this commit was AI assisted.
0 commit comments