diff --git a/packages/ui/src/pierre/virtualizer.ts b/packages/ui/src/pierre/virtualizer.ts index 4957afc12..42c3a4ca3 100644 --- a/packages/ui/src/pierre/virtualizer.ts +++ b/packages/ui/src/pierre/virtualizer.ts @@ -19,12 +19,35 @@ export const virtualMetrics: Partial = { fileGap: 0, } +function scrollable(value: string) { + return value === "auto" || value === "scroll" || value === "overlay" +} + +function scrollRoot(container: HTMLElement) { + let node = container.parentElement + while (node) { + const style = getComputedStyle(node) + if (scrollable(style.overflowY)) return node + node = node.parentElement + } +} + function target(container: HTMLElement): Target | undefined { if (typeof document === "undefined") return - const root = container.closest("[data-component='session-review']") - if (root instanceof HTMLElement) { - const content = root.querySelector("[data-slot='session-review-container']") + const review = container.closest("[data-component='session-review']") + if (review instanceof HTMLElement) { + const content = review.querySelector("[data-slot='session-review-container']") + return { + key: review, + root: review, + content: content instanceof HTMLElement ? content : undefined, + } + } + + const root = scrollRoot(container) + if (root) { + const content = root.querySelector("[role='log']") return { key: root, root,