@ascribed/review 0.1.2-next.5 → 0.1.2-next.6
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/dist/github/index.js.map +1 -1
- package/dist/github/marker.js.map +1 -1
- package/dist/github/queries.js.map +1 -1
- package/dist/github/read.js.map +1 -1
- package/dist/github/repository.js.map +1 -1
- package/dist/github/requests.js.map +1 -1
- package/dist/github/session.js.map +1 -1
- package/dist/github/transport.js.map +1 -1
- package/dist/marks/index.js.map +1 -1
- package/dist/overlay/index.js.map +1 -1
- package/dist/overlay/markdown.js.map +1 -1
- package/dist/overlay/overlay.js.map +1 -1
- package/dist/overlay/style.js.map +1 -1
- package/dist/overlay/text.js.map +1 -1
- package/dist/overlay/types.js.map +1 -1
- package/dist/place/anchor.js.map +1 -1
- package/dist/place/index.js.map +1 -1
- package/dist/place/lines.js.map +1 -1
- package/dist/place/place.js.map +1 -1
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/git.js.map +1 -1
- package/dist/shared/types.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../src/overlay/overlay.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../src/overlay/overlay.ts"],"names":[],"mappings":"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","sourcesContent":["// The review overlay: a pull request's threads beside the blocks of a rendered\n// page. It reads the page's source anchors to find each thread's block, gets\n// everything else from its host (`OverlayHost`), and draws in shadow roots of\n// its own, so the page's styles and the overlay's stay apart:\n//\n// - above the page, the threads with no block on it (detached);\n// - over the page, in a layer: at wide widths, a column of threads beside the\n// page, each aligned with its block, with a line between them on hover and\n// focus; at narrow widths, the panel a block's count marker opens; and the\n// dialogs (submit, all comments);\n// - below the page, a bar while there are unsent comments;\n// - in the page, on the block under the pointer or focus, a Comment button,\n// at narrow widths a count marker on each block with threads, and on a\n// tab's label and a `<details>`' summary how many comments they hold. These are\n// elements with `data-ascribe-ui`, as the marks' are, each holding a shadow\n// root, so they sit in the page's reading and tab order.\n//\n// Comment bodies are rendered by `markdown.ts`, as DOM nodes.\nimport { findBlock, goTo, reveal, tabButton } from \"../marks/index.js\";\nimport { anchorKey, formatSource, type Anchor } from \"../place/anchor.js\";\nimport type { LocatedThread } from \"../place/place.js\";\nimport { renderMarkdown } from \"./markdown.js\";\nimport { OVERLAY_CSS } from \"./style.js\";\nimport {\n authorName,\n blockText,\n hasUnsent,\n initials,\n linesLabel,\n listLabel,\n onRemovedText,\n plural,\n relativeTime,\n whereLabel,\n} from \"./text.js\";\nimport type {\n CommentTarget,\n HostError,\n OverlayData,\n OverlayHost,\n ReviewEvent,\n ThreadSummary,\n} from \"./types.js\";\n\n/** Options for `createOverlay`. */\nexport interface OverlayOptions {\n /** The rendered page, with source anchors. */\n root: HTMLElement;\n host: OverlayHost;\n /**\n * The least width, in pixels, of the page's container at which threads\n * show in a column beside the page. Narrower, each block with threads gets\n * a count marker that opens a panel. Default 600.\n */\n columnAt?: number;\n /** Called after the overlay redraws: for a host showing the thread count. */\n onUpdate?: () => void;\n /**\n * Whether to draw the bar of unsent comments below the page. Default true.\n * A host that shows the count itself (`unsentCount`) turns it off and opens\n * the submit dialog with `submitReview`.\n */\n unsentBar?: boolean;\n}\n\n/** The overlay on one page. */\nexport interface Overlay {\n /** Reads the threads again from the host and redraws. */\n refresh(): Promise<void>;\n /** Places the threads again, after the page changed size or what it shows. */\n layout(): void;\n /** Goes to a thread on this page, now or once the threads are read. Whether it's on the page. */\n goToThread(threadId: string): boolean;\n /** Opens the list of every thread on the pull request's pages. */\n showAllComments(): void;\n /** How many threads the pull request has on its pages, once read. */\n threadCount(): number | undefined;\n /** How many comments are unsent, once read. */\n unsentCount(): number | undefined;\n /**\n * Where the column of threads starts, in the viewport's pixels from its\n * left, while it shows: for a host that keeps its own controls clear of it.\n */\n columnStart(): number | undefined;\n /** Opens the submit dialog, when there's something to submit. */\n submitReview(): void;\n /** Removes the overlay and everything it put on the page. */\n dispose(): void;\n}\n\nconst COLUMN_WIDTH = 250;\nconst COLUMN_GAP = 12;\nconst MARKER_ROOM = \"44px\";\n\n/** A block with threads, or one being commented on, in the page's order. */\ninterface Entry {\n key: string;\n anchor: Anchor;\n threads: LocatedThread[];\n /** On removed text: the block is the marks' stand-in for what was removed. */\n removed: boolean;\n element: HTMLElement | null;\n}\n\ninterface Composer {\n key: string;\n anchor: Anchor;\n /** `undefined` while the host works it out. */\n target: CommentTarget | undefined;\n busy: boolean;\n error: string | undefined;\n}\n\ntype Filter = \"open\" | \"resolved\" | \"detached\" | \"unsent\";\n\nconst EVENTS: [ReviewEvent, string][] = [\n [\"COMMENT\", \"Comment\"],\n [\"APPROVE\", \"Approve\"],\n [\"REQUEST_CHANGES\", \"Request changes\"],\n];\n\n/** Puts the review overlay on a rendered page. */\nexport function createOverlay(options: OverlayOptions): Overlay {\n return new ReviewOverlay(options);\n}\n\nclass ReviewOverlay implements Overlay {\n private readonly root: HTMLElement;\n private readonly host: OverlayHost;\n private readonly doc: Document;\n private readonly columnAt: number;\n private readonly onUpdate: (() => void) | undefined;\n private readonly unsentBar: boolean;\n\n private readonly beforeHost: HTMLElement;\n private readonly afterHost: HTMLElement;\n private readonly layerHost: HTMLElement;\n private readonly toolsHost: HTMLElement;\n private readonly before: ShadowRoot;\n private readonly after: ShadowRoot;\n private readonly layer: ShadowRoot;\n private readonly tools: ShadowRoot;\n private readonly live: HTMLElement;\n\n private data: OverlayData | undefined;\n private all: ThreadSummary[] | undefined;\n private entries: Entry[] = [];\n private wide = true;\n private loadSeq = 0;\n private composer: Composer | undefined;\n private panel: string | undefined;\n /** The block the panel is for, which may have no threads yet. */\n private panelAnchor: Anchor | undefined;\n private dialog: \"submit\" | \"all\" | undefined;\n private discardAsk = false;\n private submitting = false;\n private dialogError: string | undefined;\n private filter: Filter = \"open\";\n private event: ReviewEvent = \"COMMENT\";\n private readonly expanded = new Set<string>();\n private readonly original = new Set<string>();\n private readonly drafts = new Map<string, string>();\n private readonly busy = new Set<string>();\n private readonly errors = new Map<string, string>();\n private linked: string | undefined;\n /** Which entries were hidden in the page when last drawn. */\n private drawnHidden = \"\";\n private linkTimer: ReturnType<typeof setTimeout> | undefined;\n private pendingGoTo: string | undefined;\n /** The read whose threads are drawn. */\n private loaded = 0;\n /** The block the Comment button is on. */\n private toolsOn: HTMLElement | undefined;\n /** What had focus before a dialog or the panel opened, to give it back. */\n private opener: HTMLElement | undefined;\n /** The page's blocks this overlay made focusable, and the blocks it made room on. */\n private focusable: HTMLElement[] = [];\n private padded: { element: HTMLElement; before: string }[] = [];\n private markers: { host: HTMLElement; block: HTMLElement }[] = [];\n /** The comment counts on tabs' labels and `<details>`' summaries. */\n private hints: HTMLElement[] = [];\n private containerPosition: string | undefined;\n /** The padding below the page for the column to end in, in pixels. */\n private room = 0;\n private readonly cleanups: (() => void)[] = [];\n private disposed = false;\n\n constructor(options: OverlayOptions) {\n this.root = options.root;\n this.host = options.host;\n this.doc = this.root.ownerDocument;\n this.columnAt = options.columnAt ?? 600;\n this.onUpdate = options.onUpdate;\n this.unsentBar = options.unsentBar ?? true;\n\n this.beforeHost = this.uiHost(\"div\");\n this.afterHost = this.uiHost(\"div\");\n this.layerHost = this.uiHost(\"div\");\n this.toolsHost = this.uiHost(\"span\");\n this.before = this.shadow(this.beforeHost);\n this.after = this.shadow(this.afterHost);\n this.layer = this.shadow(this.layerHost);\n this.tools = this.shadow(this.toolsHost);\n\n const container = this.container();\n if (this.doc.defaultView?.getComputedStyle(container).position === \"static\") {\n this.containerPosition = container.style.position;\n container.style.position = \"relative\";\n }\n this.root.before(this.beforeHost);\n this.root.after(this.afterHost);\n this.afterHost.after(this.layerHost);\n Object.assign(this.afterHost.style, { position: \"sticky\", bottom: \"0\", zIndex: \"3\" });\n Object.assign(this.layerHost.style, {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n width: \"100%\",\n height: \"100%\",\n pointerEvents: \"none\",\n });\n Object.assign(this.toolsHost.style, { position: \"absolute\", zIndex: \"2\" });\n this.toolsHost.hidden = true;\n\n this.live = this.el(\"div\", \"sr-only\");\n this.live.setAttribute(\"role\", \"status\");\n this.live.setAttribute(\"aria-live\", \"polite\");\n this.layer.append(this.live);\n\n this.listen();\n this.host.onDidChange(() => {\n if (!this.disposed) void this.refresh();\n });\n void this.refresh();\n }\n\n // --- Public ---\n\n async refresh(): Promise<void> {\n const seq = ++this.loadSeq;\n let data: OverlayData;\n let all: ThreadSummary[] | undefined;\n try {\n [data, all] = await Promise.all([\n this.host.load(),\n this.host.allThreads().catch(() => undefined),\n ]);\n } catch (error) {\n if (seq !== this.loadSeq || this.disposed) return;\n this.announce(messageOf(error));\n return;\n }\n if (seq !== this.loadSeq || this.disposed) return;\n this.data = data;\n this.loaded = seq;\n if (all !== undefined) this.all = all;\n this.render();\n const goal = this.pendingGoTo;\n if (goal !== undefined) {\n this.pendingGoTo = undefined;\n this.goToThread(goal);\n }\n }\n\n layout(): void {\n if (this.disposed || this.data === undefined) return;\n // Crossing the column's width, or a tab or `<details>` showing or hiding\n // a block with threads, changes what's drawn, not only where.\n if (this.measureWide() !== this.wide || this.hiddenState() !== this.drawnHidden) {\n this.render();\n return;\n }\n this.place();\n }\n\n goToThread(threadId: string): boolean {\n // Until the threads being read arrive: the page may have just changed.\n if (this.data === undefined || this.loaded !== this.loadSeq) {\n this.pendingGoTo = threadId;\n return true;\n }\n const entry = this.entries.find((e) => e.threads.some((t) => t.id === threadId));\n const detached = this.data.threads.detached.some((t) => t.id === threadId);\n if (entry === undefined && !detached) return false;\n this.dialog = undefined;\n this.expanded.add(threadId);\n if (entry?.element) {\n reveal(entry.element);\n if (!this.wide) {\n this.panel = entry.key;\n this.panelAnchor = entry.removed ? undefined : entry.anchor;\n }\n this.render();\n goTo(entry.element);\n if (this.wide) this.link(entry.key, 1800);\n } else {\n this.render();\n }\n const card = this.findCard(threadId);\n if (card) {\n if (typeof card.scrollIntoView === \"function\" && !entry?.element) {\n card.scrollIntoView({ block: \"center\" });\n }\n card.focus({ preventScroll: true });\n }\n return true;\n }\n\n showAllComments(): void {\n this.openDialog(\"all\");\n }\n\n threadCount(): number | undefined {\n return this.all?.length;\n }\n\n unsentCount(): number | undefined {\n return this.data?.pending.count;\n }\n\n columnStart(): number | undefined {\n if (this.disposed || !this.wide || this.data === undefined) return undefined;\n return this.root.getBoundingClientRect().right + COLUMN_GAP;\n }\n\n submitReview(): void {\n if ((this.data?.pending.count ?? 0) > 0) this.openDialog(\"submit\");\n }\n\n dispose(): void {\n if (this.disposed) return;\n this.disposed = true;\n for (const cleanup of this.cleanups) cleanup();\n this.undecorate();\n this.beforeHost.remove();\n this.afterHost.remove();\n this.layerHost.remove();\n this.toolsHost.remove();\n if (this.containerPosition !== undefined) {\n this.container().style.position = this.containerPosition;\n }\n this.root.style.removeProperty(\"margin-inline-end\");\n this.makeRoom(0);\n if (this.linkTimer) clearTimeout(this.linkTimer);\n }\n\n // --- Setup ---\n\n private container(): HTMLElement {\n return this.root.parentElement ?? this.doc.body;\n }\n\n private uiHost(tag: \"div\" | \"span\"): HTMLElement {\n const host = this.doc.createElement(tag);\n host.setAttribute(\"data-ascribe-ui\", \"\");\n host.setAttribute(\"data-ascribe-overlay\", \"\");\n return host;\n }\n\n private shadow(host: HTMLElement): ShadowRoot {\n const shadow = host.attachShadow({ mode: \"open\" });\n adoptStyles(shadow, this.doc);\n return shadow;\n }\n\n private listen(): void {\n const on = <K extends keyof HTMLElementEventMap>(\n target: HTMLElement | ShadowRoot | Window,\n type: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n options?: AddEventListenerOptions,\n ): void => {\n target.addEventListener(type, handler as EventListener, options);\n this.cleanups.push(() => target.removeEventListener(type, handler as EventListener, options));\n };\n on(this.root, \"mouseover\", (event) => this.pointAt(event.target));\n on(this.root, \"focusin\", (event) => this.pointAt(event.target));\n on(this.root, \"mouseout\", (event) => {\n const to = event.relatedTarget;\n if (to instanceof Node && this.toolsOn?.contains(to)) return;\n if (to instanceof Node && (this.toolsHost.contains(to) || to === this.toolsHost)) return;\n if (!this.toolsOn?.contains(this.doc.activeElement)) this.hideTools();\n this.link(undefined);\n });\n on(this.root, \"focusout\", (event) => {\n const to = event.relatedTarget;\n if (to instanceof Node && this.toolsOn?.contains(to)) return;\n this.hideTools();\n this.link(undefined);\n });\n on(this.root, \"click\", (event) => this.clickBlock(event));\n on(this.root, \"keydown\", (event) => this.keyOnBlock(event));\n // A tab or a `<details>` in the page changed what shows: place again.\n on(this.root, \"toggle\", () => this.layout(), { capture: true });\n on(this.root, \"click\", () => requestFrame(this.doc, () => this.layout()));\n for (const shadow of [this.before, this.after, this.layer, this.tools]) {\n on(shadow, \"click\", (event) => this.clickLink(event));\n on(shadow, \"keydown\", (event) => this.keyInOverlay(event));\n on(shadow, \"dblclick\", (event) => event.stopPropagation());\n }\n const view = this.doc.defaultView;\n if (view) on(view, \"resize\", () => this.layout());\n if (view && \"ResizeObserver\" in view) {\n // Placed in the next frame: placing can pad the page, which resizes\n // what's observed, and doing that inside the observer's callback is a\n // \"ResizeObserver loop\" error on the page (a dev server reports it).\n let queued = false;\n const observer = new view.ResizeObserver(() => {\n if (queued) return;\n queued = true;\n requestFrame(this.doc, () => {\n queued = false;\n this.layout();\n });\n });\n observer.observe(this.root);\n observer.observe(this.container());\n this.cleanups.push(() => observer.disconnect());\n }\n }\n\n // --- Reading the page ---\n\n private measureWide(): boolean {\n return this.container().clientWidth >= this.columnAt;\n }\n\n private anchorOf(element: Element): Anchor | undefined {\n const source = element.getAttribute(\"data-ascribe-source\");\n if (source === null) return undefined;\n const via = (element.getAttribute(\"data-ascribe-via\") ?? \"\").split(\" \").filter(Boolean);\n return { source, via };\n }\n\n /** The block an event's target is in: the innermost anchored element. */\n private blockOf(target: EventTarget | null): HTMLElement | undefined {\n if (!(target instanceof Element)) return undefined;\n if (target.closest(\"[data-ascribe-overlay]\") && target !== this.toolsHost) {\n // A marker: the block it's on.\n const marker = this.markers.find((m) => m.host === target.closest(\"[data-ascribe-overlay]\"));\n if (marker) return marker.block;\n }\n const block = target.closest<HTMLElement>(\"[data-ascribe-source]\");\n return block && this.root.contains(block) ? block : undefined;\n }\n\n /** The block's text as the page shows it, for a comment to quote. */\n private shownText(anchor: Anchor): string | undefined {\n const key = anchorKey(anchor);\n for (const el of Array.from(this.root.querySelectorAll<HTMLElement>(\"[data-ascribe-source]\"))) {\n const at = this.anchorOf(el);\n if (at && anchorKey(at) === key) return blockText(el) || undefined;\n }\n return undefined;\n }\n\n private removedElement(anchor: Anchor): HTMLElement | null {\n for (const el of Array.from(\n this.root.querySelectorAll<HTMLElement>(\"[data-ascribe-was-source]\"),\n )) {\n if (el.getAttribute(\"data-ascribe-was-source\") === anchor.source) return el;\n }\n return null;\n }\n\n private readEntries(): Entry[] {\n const data = this.data;\n if (!data) return [];\n const entries: Entry[] = [];\n for (const { anchor, threads } of data.threads.blocks) {\n entries.push({\n key: anchorKey(anchor),\n anchor,\n threads,\n removed: false,\n element: findBlock(this.root, anchor),\n });\n }\n for (const { anchor, threads } of data.threads.removed) {\n entries.push({\n key: `removed ${anchorKey(anchor)}`,\n anchor,\n threads,\n removed: true,\n element: this.removedElement(anchor),\n });\n }\n // A block being commented on, or whose panel is open, may have no threads yet.\n for (const anchor of [this.composer?.anchor, this.panelAnchor]) {\n if (anchor === undefined) continue;\n const key = anchorKey(anchor);\n if (entries.some((e) => e.key === key)) continue;\n entries.push({\n key,\n anchor,\n threads: [],\n removed: false,\n element: findBlock(this.root, anchor),\n });\n }\n // Page order.\n entries.sort((a, b) => {\n if (!a.element || !b.element || a.element === b.element) return 0;\n return a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_FOLLOWING\n ? -1\n : 1;\n });\n return entries;\n }\n\n /** Whether what the page shows hides a block: removed text in \"as it will be\", new text in \"as it was\". */\n private hiddenByShow(element: HTMLElement): boolean {\n const show = this.root.getAttribute(\"data-ascribe-show\");\n const kind = element.closest(\"[data-ascribe-change]\")?.getAttribute(\"data-ascribe-change\");\n if (show === \"will\") return kind === \"removed\" || kind === \"moved-from\";\n if (show === \"was\") return kind === \"added\" || kind === \"moved\";\n return false;\n }\n\n /** Where a block is hidden in the page: an unselected tab or a closed `<details>`. */\n private hiddenIn(element: HTMLElement): string | undefined {\n for (\n let node: HTMLElement | null = element.parentElement;\n node !== null && node !== this.root.parentElement;\n node = node.parentElement\n ) {\n if (node.localName === \"ascribe-tab\" && node.hidden) {\n return `In the ${node.getAttribute(\"label\") ?? \"\"} tab, which isn't showing.`;\n }\n if (node.localName === \"details\" && !(node as HTMLDetailsElement).open) {\n const summary = node.querySelector(\":scope > summary\");\n if (summary?.contains(element)) continue;\n return `Inside “${summary ? blockText(summary) : \"\"}”, which is closed.`;\n }\n }\n return undefined;\n }\n\n private hiddenState(): string {\n return this.entries\n .map((e) => (e.element && (this.hiddenIn(e.element) || this.hiddenByShow(e.element)) ? 1 : 0))\n .join(\"\");\n }\n\n /**\n * The element to align a block's threads with: the block, or, while it's\n * in an unselected tab or a closed `<details>`, the tabs or the details.\n */\n private visibleFor(element: HTMLElement | null): HTMLElement | null {\n let shown = element;\n for (\n let node = element?.parentElement ?? null;\n node !== null && node !== this.root;\n node = node.parentElement\n ) {\n if (node.localName === \"ascribe-tab\" && node.hidden) shown = node.parentElement;\n if (node.localName === \"details\" && !(node as HTMLDetailsElement).open) {\n const summary = node.querySelector(\":scope > summary\");\n if (!(shown && summary?.contains(shown))) shown = node;\n }\n }\n return shown;\n }\n\n // --- Drawing ---\n\n private render(): void {\n if (this.disposed) return;\n const focus = this.focusKey();\n this.wide = this.measureWide();\n this.entries = this.readEntries();\n if (this.panel !== undefined && !this.entries.some((e) => e.key === this.panel)) {\n this.panel = undefined;\n this.panelAnchor = undefined;\n }\n this.drawnHidden = this.hiddenState();\n this.decorate();\n this.before.replaceChildren(...this.styleNodes(this.before), ...this.drawDetached());\n this.after.replaceChildren(...this.styleNodes(this.after), ...this.drawUnsentBar());\n const layer = this.el(\"div\", \"layer\");\n if (this.wide) layer.append(...this.drawColumn());\n const sheet = this.wide ? null : this.drawSheet();\n if (sheet) layer.append(sheet);\n const dialog = this.drawDialog();\n if (dialog) layer.append(dialog);\n this.layer.replaceChildren(...this.styleNodes(this.layer), layer, this.live);\n this.drawTools();\n this.restoreFocus(focus);\n this.place();\n this.onUpdate?.();\n }\n\n /** A `<style>` element where constructed stylesheets aren't available. */\n private styleNodes(shadow: ShadowRoot): Node[] {\n return Array.from(shadow.children).filter(\n (child) => child.localName === \"style\" && child.hasAttribute(\"data-overlay\"),\n );\n }\n\n /** Makes the page's blocks focusable, and at narrow widths puts count markers on them. */\n private decorate(): void {\n this.undecorate();\n const threadsOn = this.data !== undefined;\n if (!threadsOn) {\n this.root.style.removeProperty(\"margin-inline-end\");\n return;\n }\n if (this.wide)\n this.root.style.setProperty(\"margin-inline-end\", `${COLUMN_WIDTH + COLUMN_GAP}px`);\n else this.root.style.removeProperty(\"margin-inline-end\");\n for (const el of Array.from(this.root.querySelectorAll<HTMLElement>(\"[data-ascribe-source]\"))) {\n if (el.hasAttribute(\"tabindex\")) continue;\n el.tabIndex = 0;\n this.focusable.push(el);\n }\n this.drawHints();\n if (this.wide) return;\n for (const entry of this.entries) {\n const count = entry.threads.length;\n if (count === 0 || !entry.element || this.hiddenByShow(entry.element)) continue;\n const host = this.uiHost(\"span\");\n Object.assign(host.style, { position: \"absolute\", zIndex: \"1\" });\n const shadow = this.shadow(host);\n const marker = this.button(\"marker\", String(count), () => this.openEntry(entry));\n marker.setAttribute(\n \"aria-label\",\n `${plural(count, \"comment\")} on this block. Show ${count === 1 ? \"it\" : \"them\"}.`,\n );\n marker.setAttribute(\"aria-haspopup\", \"dialog\");\n shadow.append(marker);\n // A block in a closed `<details>` or an unselected tab has its marker\n // on what shows in its place; its panel says where it is.\n const element = this.visibleFor(entry.element) ?? entry.element;\n if (this.markers.some((m) => m.block === element)) continue;\n if (isVoid(element)) element.after(host);\n else element.append(host);\n this.markers.push({ host, block: element });\n this.padded.push({ element, before: element.style.paddingInlineEnd });\n element.style.paddingInlineEnd = MARKER_ROOM;\n }\n }\n\n /**\n * On each tab's label and each `<details>`' summary, how many comments are\n * on the blocks they can hide, which an unselected tab or a closed\n * `<details>` would otherwise keep out of sight.\n */\n private drawHints(): void {\n const counts = new Map<HTMLElement, number>();\n for (const entry of this.entries) {\n const element = entry.element;\n const count = entry.threads.length;\n if (count === 0 || !element || this.hiddenByShow(element)) continue;\n for (\n let node = element.parentElement;\n node !== null && node !== this.root;\n node = node.parentElement\n ) {\n let on: HTMLElement | null = null;\n if (node.localName === \"ascribe-tab\") on = tabButton(node);\n if (node.localName === \"details\") {\n const summary = node.querySelector<HTMLElement>(\":scope > summary\");\n if (summary && !summary.contains(element)) on = summary;\n }\n if (on) counts.set(on, (counts.get(on) ?? 0) + count);\n }\n }\n // Each count starts with a space, as the marks' hints do, so the label\n // reads \"Linux 1 change 1 comment\".\n for (const [on, count] of counts) {\n const host = this.uiHost(\"span\");\n this.shadow(host).append(this.el(\"span\", \"hint-count\", ` ${plural(count, \"comment\")}`));\n on.append(host);\n this.hints.push(host);\n }\n }\n\n private undecorate(): void {\n for (const host of this.hints) host.remove();\n this.hints = [];\n for (const el of this.focusable) el.removeAttribute(\"tabindex\");\n this.focusable = [];\n for (const { element, before } of this.padded) element.style.paddingInlineEnd = before;\n this.padded = [];\n for (const { host } of this.markers) host.remove();\n this.markers = [];\n }\n\n private drawDetached(): HTMLElement[] {\n const detached = this.data?.threads.detached ?? [];\n if (detached.length === 0) return [];\n const box = this.el(\"section\", \"detached\");\n box.setAttribute(\"aria-label\", \"Comments with no block on this page\");\n box.append(\n this.el(\n \"div\",\n \"\",\n detached.length === 1\n ? \"1 comment has no block on this page any more:\"\n : `${detached.length} comments have no block on this page any more:`,\n ),\n ...detached.map((thread) => this.card(thread, \"detached\", undefined)),\n );\n return [box];\n }\n\n private drawUnsentBar(): HTMLElement[] {\n const count = this.data?.pending.count ?? 0;\n if (count === 0 || !this.unsentBar) return [];\n const bar = this.el(\"div\", \"unsent-bar\");\n bar.setAttribute(\"role\", \"region\");\n bar.setAttribute(\"aria-label\", \"Unsent comments\");\n bar.append(\n this.el(\"b\", \"\", plural(count, \"unsent comment\")),\n this.el(\"span\", \"hint\", `Only you can see ${count === 1 ? \"it\" : \"them\"} until you submit.`),\n this.el(\"span\", \"spacer\"),\n this.button(\"primary\", \"Submit review…\", () => this.openDialog(\"submit\"), \"submit-open\"),\n );\n return [bar];\n }\n\n private drawColumn(): Element[] {\n const column = this.el(\"div\", \"column\");\n for (const entry of this.entries) {\n if (entry.element && this.hiddenByShow(entry.element)) continue;\n const cards = this.cardsFor(entry, \"column\");\n if (cards.length === 0) continue;\n const slot = this.el(\"div\", \"slot\");\n slot.dataset[\"key\"] = entry.key;\n slot.append(...cards);\n slot.addEventListener(\"mouseenter\", () => this.link(entry.key));\n slot.addEventListener(\"mouseleave\", () => this.link(undefined));\n slot.addEventListener(\"focusin\", () => this.link(entry.key));\n slot.addEventListener(\"focusout\", (event) => {\n if (!(event.relatedTarget instanceof Node && slot.contains(event.relatedTarget))) {\n this.link(undefined);\n }\n });\n column.append(slot);\n }\n const highlight = this.el(\"div\", \"highlight\");\n highlight.hidden = true;\n const svg = this.doc.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"class\", \"connector\");\n svg.setAttribute(\"aria-hidden\", \"true\");\n return [highlight, svg, column];\n }\n\n private cardsFor(entry: Entry, view: \"column\" | \"panel\"): HTMLElement[] {\n const cards = entry.threads.map((thread) => this.card(thread, view, entry));\n if (this.composer?.key === entry.key) cards.push(this.drawComposer(this.composer));\n return cards;\n }\n\n private drawSheet(): HTMLElement | null {\n const entry = this.entries.find((e) => e.key === this.panel);\n if (!entry) return null;\n const sheet = this.el(\"div\", \"sheet\");\n sheet.setAttribute(\"role\", \"dialog\");\n sheet.setAttribute(\"aria-label\", \"Comments on this block\");\n const head = this.el(\"div\", \"head\");\n head.append(\n this.el(\"b\", \"\", entry.removed ? \"Removed text\" : sourceLabel(entry.anchor)),\n this.el(\"span\", \"spacer\"),\n );\n if (!entry.removed) {\n head.append(this.button(\"ghost\", \"Source\", () => this.host.openSource(entry.anchor)));\n if (this.composer?.key !== entry.key) {\n head.append(this.button(\"ghost\", \"Comment\", () => this.startComment(entry.anchor)));\n }\n }\n head.append(this.button(\"ghost\", \"Close\", () => this.closePanel(), \"panel-close\"));\n sheet.append(head);\n const cards = this.cardsFor(entry, \"panel\");\n if (cards.length === 0) sheet.append(this.el(\"p\", \"hint\", \"No comments on this block yet.\"));\n sheet.append(...cards);\n return sheet;\n }\n\n private card(\n thread: LocatedThread,\n view: \"column\" | \"panel\" | \"detached\",\n entry: Entry | undefined,\n ): HTMLElement {\n const data = this.data;\n const viewer = data?.viewer ?? \"\";\n const collapsed = thread.resolved && !this.expanded.has(thread.id);\n const card = this.el(\"article\", `thread${collapsed ? \" collapsed\" : \"\"}`);\n card.dataset[\"thread\"] = thread.id;\n card.dataset[\"focus\"] = `thread:${thread.id}`;\n card.tabIndex = -1;\n const first = thread.comments[0];\n card.setAttribute(\n \"aria-label\",\n `Comment by ${first ? authorName(first.author, viewer) : \"someone\"} on ${whereLabel(thread)}`,\n );\n\n const head = this.el(\"div\", \"th\");\n const where = whereLabel(thread);\n // In the narrow panel, the sheet's title already names the block.\n if (!(view === \"panel\" && entry && !entry.removed && where === sourceLabel(entry.anchor))) {\n head.append(this.el(\"span\", \"\", where));\n }\n if (onRemovedText(thread)) head.append(this.badge(\"removed\", \"On removed text\"));\n if (thread.resolved) head.append(this.badge(\"resolved\", \"Resolved\"));\n if (thread.detached !== undefined) head.append(this.badge(\"detached\", \"Detached\"));\n if (thread.outdated && thread.detached === undefined) {\n head.append(this.badge(\"outdated\", \"Outdated\"));\n }\n if (thread.kind === \"conversation\") head.append(this.badge(\"summary\", \"In the review summary\"));\n if (hasUnsent(thread)) head.append(this.badge(\"unsent\", \"Unsent\"));\n if (head.childElementCount > 0) card.append(head);\n\n // Actions sit on their own row, so the header never pushes one onto a line by itself.\n const acts = this.el(\"div\", \"acts\");\n if (thread.resolved) {\n acts.append(\n this.button(\n \"link\",\n collapsed ? \"Expand\" : \"Collapse\",\n () => {\n if (collapsed) this.expanded.add(thread.id);\n else this.expanded.delete(thread.id);\n this.render();\n },\n `expand:${thread.id}`,\n ),\n );\n }\n if (thread.outdated && thread.detached === undefined && thread.quote !== undefined) {\n const open = this.original.has(thread.id);\n acts.append(\n this.button(\n \"link\",\n open ? \"Hide original text\" : \"Original text\",\n () => {\n if (open) this.original.delete(thread.id);\n else this.original.add(thread.id);\n this.render();\n },\n `original:${thread.id}`,\n ),\n );\n }\n if (entry && !entry.removed) {\n acts.append(\n this.button(\"link\", \"Open source\", () => this.host.openSource(threadSource(thread, entry))),\n );\n }\n // A detached thread has no block to go to: GitHub shows it in full.\n const url = thread.comments.at(-1)?.url ?? thread.comments[0]?.url;\n if (thread.detached !== undefined && url !== undefined && /^https?:\\/\\//i.test(url)) {\n const github = this.el(\"a\", \"link\", \"View on GitHub\");\n github.setAttribute(\"href\", url);\n github.setAttribute(\"target\", \"_blank\");\n github.setAttribute(\"rel\", \"noopener noreferrer\");\n acts.append(github);\n }\n if (thread.kind === \"review\") {\n const can = thread.resolved ? thread.canUnresolve : thread.canResolve;\n if (can) {\n const resolve = this.button(\n \"link\",\n thread.resolved ? \"Reopen\" : \"Resolve\",\n () => void this.resolve(thread),\n `resolve:${thread.id}`,\n );\n resolve.title = \"Sent to GitHub right away, not held with your review\";\n resolve.disabled = this.busy.has(thread.id);\n acts.append(resolve);\n }\n }\n if (acts.childElementCount > 0) card.append(acts);\n\n const hidden = view !== \"detached\" && entry?.element ? this.hiddenIn(entry.element) : undefined;\n if (hidden && entry?.element) {\n const element = entry.element;\n const inside = this.el(\"div\", \"inside\", `${hidden} `);\n inside.append(\n this.button(\"link\", \"Show it\", () => {\n reveal(element);\n this.render();\n goTo(element);\n this.link(entry.key, 1800);\n }),\n );\n card.append(inside);\n }\n if (collapsed) return card;\n\n if (\n thread.quote !== undefined &&\n thread.quote.trim() !== \"\" &&\n (thread.detached !== undefined || this.original.has(thread.id))\n ) {\n const orig = this.el(\"div\", \"orig\");\n orig.append(\n this.el(\n \"span\",\n \"\",\n thread.detached !== undefined\n ? \"The comment was on this text, which is no longer on the page: \"\n : \"The text when the comment was made: \",\n ),\n this.el(\"q\", \"\", thread.quote),\n );\n card.append(orig);\n }\n\n const now = Date.now();\n for (const comment of thread.comments) {\n const row = this.el(\"div\", \"comment\");\n const avatar = this.el(\"span\", \"avatar\", initials(comment.author));\n avatar.setAttribute(\"aria-hidden\", \"true\");\n const text = this.el(\"div\", \"\");\n text.append(\n this.el(\"span\", \"who\", authorName(comment.author, viewer)),\n this.el(\n \"span\",\n \"when\",\n comment.pending ? \"not sent yet\" : relativeTime(comment.createdAt, now),\n ),\n );\n const body = this.el(\"div\", \"body\");\n body.append(renderMarkdown(this.doc, comment.body));\n text.append(body);\n row.append(avatar, text);\n card.append(row);\n }\n\n if (thread.kind === \"review\" && thread.canReply) {\n card.append(this.drawReply(thread));\n }\n return card;\n }\n\n private drawReply(thread: LocatedThread): HTMLElement {\n const key = `reply:${thread.id}`;\n const box = this.el(\"div\", \"reply\");\n const input = this.doc.createElement(\"textarea\");\n input.rows = 1;\n input.placeholder = \"Reply…\";\n input.setAttribute(\"aria-label\", \"Reply to thread\");\n input.dataset[\"focus\"] = key;\n input.value = this.drafts.get(key) ?? \"\";\n const busy = this.busy.has(thread.id);\n input.disabled = busy;\n input.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\" && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n void this.reply(thread, \"withReview\");\n }\n });\n const held = (this.data?.pending.count ?? 0) > 0;\n const now = this.button(\n \"ghost\",\n \"Reply now\",\n () => {\n if (held) {\n this.announce(HELD_REASON);\n return;\n }\n void this.reply(thread, \"now\");\n },\n `reply-now:${thread.id}`,\n );\n // GitHub adds every reply to the review while it has unsent comments, so\n // a reply can't go at once until it's submitted or discarded. The button\n // stays focusable, so the reason can be read.\n if (held) {\n now.setAttribute(\"aria-disabled\", \"true\");\n now.title = HELD_REASON;\n const reason = this.el(\"span\", \"sr-only\", HELD_REASON);\n reason.id = `held-${cssId(thread.id)}`;\n now.setAttribute(\"aria-describedby\", reason.id);\n box.append(reason);\n } else {\n now.title = \"Send this reply to GitHub right away\";\n }\n const add = this.button(\n \"ghost\",\n \"Add to review\",\n () => void this.reply(thread, \"withReview\"),\n `reply-add:${thread.id}`,\n );\n add.title = \"Hold this reply until you submit the review\";\n // Nothing to send until there's a reply. \"Reply now\" stays focusable\n // while it's held, so its reason can be read.\n const enable = () => {\n const empty = input.value.trim() === \"\";\n now.disabled = busy || (empty && !held);\n add.disabled = busy || empty;\n };\n enable();\n input.addEventListener(\"input\", () => {\n this.drafts.set(key, input.value);\n enable();\n });\n box.prepend(input);\n box.append(now, add);\n const error = this.errors.get(key);\n if (error) {\n const line = this.el(\"div\", \"error\", error);\n line.setAttribute(\"role\", \"alert\");\n box.append(line);\n }\n return box;\n }\n\n private drawComposer(composer: Composer): HTMLElement {\n const key = `comment:${composer.key}`;\n const box = this.el(\"div\", \"composer\");\n box.setAttribute(\"role\", \"group\");\n box.setAttribute(\"aria-label\", `Comment on ${sourceLabel(composer.anchor)}`);\n const target = composer.target;\n const refused = target?.kind === \"push-first\";\n if (target === undefined)\n box.append(this.el(\"div\", \"hint\", \"Checking where this comment can go…\"));\n if (target?.kind === \"summary\") {\n box.append(\n this.el(\n \"div\",\n \"hint\",\n target.reason === \"file\"\n ? \"This page's file isn't in the pull request, so GitHub can't put a comment on its lines. Your comment will go in your review's summary and still show here.\"\n : \"GitHub only takes comments on the lines a pull request changes and the few around them. Your comment will go in your review's summary and still show here.\",\n ),\n );\n }\n if (target?.kind === \"push-first\") {\n const refuse = this.el(\"div\", \"refuse\", target.message);\n refuse.setAttribute(\"role\", \"alert\");\n box.append(refuse);\n }\n const text = this.doc.createElement(\"textarea\");\n text.setAttribute(\"aria-label\", \"Comment\");\n text.placeholder = `Comment on ${sourceLabel(composer.anchor)}`;\n text.dataset[\"focus\"] = key;\n text.value = this.drafts.get(key) ?? \"\";\n text.disabled = refused || composer.busy;\n text.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\" && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n void this.addComment();\n }\n });\n box.append(text);\n if (composer.error) {\n const error = this.el(\"div\", \"error\", composer.error);\n error.setAttribute(\"role\", \"alert\");\n box.append(error);\n }\n const row = this.el(\"div\", \"row\");\n const add = this.button(\n \"primary\",\n \"Add to review\",\n () => void this.addComment(),\n \"composer-add\",\n );\n const enable = () => {\n add.disabled = refused || composer.busy || target === undefined || text.value.trim() === \"\";\n };\n enable();\n text.addEventListener(\"input\", () => {\n this.drafts.set(key, text.value);\n enable();\n });\n row.append(\n add,\n this.button(\"ghost\", \"Cancel\", () => this.cancelComment(), \"composer-cancel\"),\n );\n if (!refused)\n row.append(this.el(\"span\", \"hint\", \"Nothing is sent until you submit the review.\"));\n box.append(row);\n return box;\n }\n\n private drawDialog(): HTMLElement | null {\n const data = this.data;\n if (!data || this.dialog === undefined) return null;\n const backdrop = this.el(\"div\", \"backdrop\");\n backdrop.addEventListener(\"click\", (event) => {\n if (event.target === backdrop) this.closeDialog();\n });\n const dialog = this.el(\"div\", \"dialog\");\n dialog.setAttribute(\"role\", \"dialog\");\n dialog.setAttribute(\"aria-modal\", \"true\");\n backdrop.append(dialog);\n if (this.dialog === \"all\") this.drawAll(dialog, data);\n else this.drawSubmit(dialog, data);\n return backdrop;\n }\n\n private drawAll(dialog: HTMLElement, data: OverlayData): void {\n dialog.setAttribute(\"aria-label\", \"All comments\");\n const head = this.el(\"div\", \"row\");\n head.append(\n this.el(\"h2\", \"\", `All comments on #${data.pullRequest.number}`),\n this.el(\"span\", \"spacer\"),\n this.button(\"ghost\", \"Close\", () => this.closeDialog(), \"dialog-close\"),\n );\n dialog.append(head);\n const all = this.all;\n if (all === undefined) {\n dialog.append(this.el(\"p\", \"hint\", \"Reading the comments…\"));\n return;\n }\n const groups: Record<Filter, ThreadSummary[]> = {\n open: all.filter((s) => !s.thread.resolved && s.thread.detached === undefined),\n resolved: all.filter((s) => s.thread.resolved),\n detached: all.filter((s) => s.thread.detached !== undefined),\n unsent: all.filter((s) => hasUnsent(s.thread)),\n };\n const filters = this.el(\"div\", \"segmented\");\n filters.setAttribute(\"role\", \"group\");\n filters.setAttribute(\"aria-label\", \"Filter\");\n for (const [filter, label] of [\n [\"open\", \"Open\"],\n [\"resolved\", \"Resolved\"],\n [\"detached\", \"Detached\"],\n [\"unsent\", \"Unsent\"],\n ] as const) {\n const choice = this.button(\n \"\",\n `${label} ${groups[filter].length}`,\n () => {\n this.filter = filter;\n this.render();\n },\n `filter:${filter}`,\n );\n choice.setAttribute(\"aria-pressed\", String(this.filter === filter));\n filters.append(choice);\n }\n dialog.append(filters);\n const list = this.el(\"ul\", \"thread-list\");\n for (const summary of groups[this.filter]) {\n const { thread, pages } = summary;\n const first = thread.comments[0];\n const page =\n pages.length > 1 ? `on ${pages.length} pages` : (pages[0]?.title ?? pages[0]?.path ?? \"\");\n // As on its card: a thread with no block is detached, not outdated.\n const outdated = thread.outdated && thread.detached === undefined;\n const where = [listLabel(thread), outdated ? \"outdated\" : \"\", page]\n .filter(Boolean)\n .join(\" · \");\n const more = thread.comments.length > 1 ? ` (+${thread.comments.length - 1})` : \"\";\n const item = this.el(\"li\", \"\");\n const jump = this.button(\"\", \"\", () => this.jump(summary), `jump:${thread.id}`);\n jump.append(\n this.el(\"span\", \"where\", where),\n this.el(\n \"span\",\n \"first\",\n first ? `${authorName(first.author, data.viewer)}: ${oneLine(first.body)}${more}` : \"\",\n ),\n );\n item.append(jump);\n list.append(item);\n }\n if (groups[this.filter].length === 0) list.append(this.el(\"li\", \"hint\", \"None.\"));\n dialog.append(list);\n }\n\n private drawSubmit(dialog: HTMLElement, data: OverlayData): void {\n dialog.setAttribute(\"aria-label\", \"Submit review\");\n const count = data.pending.count;\n dialog.append(this.el(\"h2\", \"\", `Submit review to #${data.pullRequest.number}`));\n if (count > 0) {\n dialog.append(\n this.el(\n \"span\",\n \"hint\",\n count === 1 ? \"This one will be sent:\" : `These ${count} will be sent:`,\n ),\n );\n const list = this.el(\"ul\", \"unsent-list\");\n for (const summary of this.all ?? []) {\n const { thread } = summary;\n thread.comments.forEach((comment, index) => {\n if (!comment.pending) return;\n const item = this.el(\"li\", \"\");\n item.append(this.button(\"link\", listLabel(thread), () => this.jump(summary)));\n const how =\n index > 0\n ? \" (reply): \"\n : thread.kind === \"conversation\"\n ? \" (in the summary): \"\n : \": \";\n item.append(this.el(\"span\", \"\", `${how}${oneLine(comment.body)}`));\n list.append(item);\n });\n }\n dialog.append(list);\n }\n const choices = this.doc.createElement(\"fieldset\");\n const legend = this.el(\"legend\", \"hint\", \"Submit as\");\n choices.append(legend);\n for (const [event, label] of EVENTS) {\n const option = this.doc.createElement(\"label\");\n const radio = this.doc.createElement(\"input\");\n radio.type = \"radio\";\n radio.name = \"event\";\n radio.value = event;\n radio.checked = this.event === event;\n radio.dataset[\"focus\"] = `event:${event}`;\n radio.addEventListener(\"change\", () => {\n if (radio.checked) this.event = event;\n });\n option.append(radio, ` ${label}`);\n choices.append(option);\n }\n dialog.append(choices);\n const summary = this.doc.createElement(\"textarea\");\n summary.placeholder = \"Summary (optional)\";\n summary.setAttribute(\"aria-label\", \"Summary (optional)\");\n summary.dataset[\"focus\"] = \"summary\";\n summary.value = this.drafts.get(\"summary\") ?? \"\";\n summary.addEventListener(\"input\", () => this.drafts.set(\"summary\", summary.value));\n dialog.append(summary);\n if (this.dialogError) {\n const error = this.el(\"div\", \"error\", this.dialogError);\n error.setAttribute(\"role\", \"alert\");\n dialog.append(error);\n }\n if (this.discardAsk) {\n const confirm = this.el(\"div\", \"confirm\");\n confirm.setAttribute(\"role\", \"alert\");\n const row = this.el(\"div\", \"row\");\n row.append(\n this.button(\"danger\", \"Discard comments\", () => void this.discard(), \"discard-yes\"),\n this.button(\n \"ghost\",\n \"Keep review\",\n () => {\n this.discardAsk = false;\n this.render();\n },\n \"discard-no\",\n ),\n );\n confirm.append(\n this.el(\"b\", \"\", `Discard ${plural(count, \"unsent comment\")}?`),\n this.el(\"span\", \"\", \" They will be deleted and can't be brought back.\"),\n row,\n );\n dialog.append(confirm);\n return;\n }\n const row = this.el(\"div\", \"row\");\n const submit = this.button(\"primary\", \"Submit review\", () => void this.submit(), \"submit\");\n submit.disabled = this.submitting;\n row.append(\n submit,\n this.button(\"ghost\", \"Cancel\", () => this.closeDialog(), \"dialog-close\"),\n this.el(\"span\", \"spacer\"),\n );\n if (count > 0) {\n row.append(\n this.button(\n \"link\",\n \"Discard…\",\n () => {\n this.discardAsk = true;\n this.render();\n this.focusOn(\"discard-no\");\n },\n \"discard\",\n ),\n );\n }\n dialog.append(row);\n }\n\n /** The Comment button, on the block under the pointer or focus. */\n private drawTools(): void {\n const button = this.button(\n \"tool\",\n \"Comment\",\n () => {\n const block = this.toolsOn;\n const anchor = block && this.anchorOf(block);\n if (anchor) this.startComment(anchor);\n },\n \"tools\",\n );\n button.setAttribute(\"aria-label\", \"Comment on this block\");\n this.tools.replaceChildren(...this.styleNodes(this.tools), button);\n if (!this.wide || this.data === undefined) this.hideTools();\n }\n\n // --- Placing ---\n\n private place(): void {\n if (this.disposed) return;\n const base = this.layerHost.getBoundingClientRect();\n const column = this.layer.querySelector<HTMLElement>(\".column\");\n if (column) {\n const page = this.root.getBoundingClientRect();\n column.style.left = `${page.right - base.left + COLUMN_GAP}px`;\n column.style.width = `${COLUMN_WIDTH}px`;\n let previous = 0;\n for (const slot of Array.from(column.querySelectorAll<HTMLElement>(\":scope > .slot\"))) {\n const entry = this.entries.find((e) => e.key === slot.dataset[\"key\"]);\n const element = this.visibleFor(entry?.element ?? null);\n const at = element ? element.getBoundingClientRect().top - base.top : previous;\n const top = Math.max(at, previous);\n slot.style.top = `${top}px`;\n previous = top + slot.offsetHeight + 2;\n }\n column.style.height = `${previous}px`;\n // The column can run past the page: make room below it. The room\n // already made isn't the page's, or making it would undo it.\n const overrun = Math.ceil(previous - (page.bottom - this.room - base.top));\n this.makeRoom(overrun > 0 ? overrun : 0);\n } else {\n this.makeRoom(0);\n }\n for (const { host, block } of this.markers) this.pin(host, block);\n if (this.toolsOn && !this.toolsHost.hidden) this.pin(this.toolsHost, this.toolsOn);\n if (this.linked !== undefined) this.drawLink(this.linked);\n }\n\n /** Pads the page's bottom by `room` pixels, for the column to end in. */\n private makeRoom(room: number): void {\n if (room === this.room) return;\n this.room = room;\n if (room > 0) this.root.style.setProperty(\"padding-bottom\", `${room}px`);\n else this.root.style.removeProperty(\"padding-bottom\");\n }\n\n /** Positions an element of the page at a block's top right corner. */\n private pin(host: HTMLElement, block: HTMLElement): void {\n const parent = host.offsetParent ?? this.doc.body;\n const outer = parent.getBoundingClientRect();\n const box = block.getBoundingClientRect();\n host.style.top = `${box.top - outer.top - parent.clientTop}px`;\n host.style.left = `${box.right - outer.left - parent.clientLeft - host.offsetWidth}px`;\n }\n\n private pointAt(target: EventTarget | null): void {\n if (this.data === undefined) return;\n const block = this.blockOf(target);\n if (!block) return;\n if (this.wide) {\n const key = this.anchorKeyOf(block);\n if (key !== undefined && this.entries.some((e) => e.key === key)) this.link(key);\n if (block !== this.toolsOn || this.toolsHost.hidden) this.showTools(block);\n }\n }\n\n private anchorKeyOf(block: HTMLElement): string | undefined {\n const anchor = this.anchorOf(block);\n return anchor && anchorKey(anchor);\n }\n\n private showTools(block: HTMLElement): void {\n if (this.toolsHost.parentElement !== block) {\n if (isVoid(block)) block.after(this.toolsHost);\n else block.append(this.toolsHost);\n }\n this.toolsOn = block;\n this.toolsHost.hidden = false;\n this.pin(this.toolsHost, block);\n }\n\n private hideTools(): void {\n this.toolsHost.hidden = true;\n }\n\n /** Highlights a block and its threads and joins them with a line; `undefined` clears it. */\n private link(key: string | undefined, forMs?: number): void {\n if (this.linkTimer) clearTimeout(this.linkTimer);\n this.linkTimer = undefined;\n this.linked = key;\n this.drawLink(key);\n if (key !== undefined && forMs !== undefined) {\n this.linkTimer = setTimeout(() => this.link(undefined), forMs);\n }\n }\n\n private drawLink(key: string | undefined): void {\n const svg = this.layer.querySelector(\"svg.connector\");\n const highlight = this.layer.querySelector<HTMLElement>(\".highlight\");\n for (const slot of Array.from(this.layer.querySelectorAll(\".slot.linked\"))) {\n slot.classList.remove(\"linked\");\n }\n svg?.replaceChildren();\n if (highlight) highlight.hidden = true;\n if (key === undefined || !svg || !highlight) return;\n const entry = this.entries.find((e) => e.key === key);\n const element = this.visibleFor(entry?.element ?? null);\n const slot = Array.from(this.layer.querySelectorAll<HTMLElement>(\".slot\")).find(\n (s) => s.dataset[\"key\"] === key,\n );\n if (!element || !slot) return;\n slot.classList.add(\"linked\");\n const base = this.layerHost.getBoundingClientRect();\n const a = element.getBoundingClientRect();\n const s = slot.getBoundingClientRect();\n Object.assign(highlight.style, {\n top: `${a.top - base.top}px`,\n left: `${a.left - base.left}px`,\n width: `${a.width}px`,\n height: `${a.height}px`,\n });\n highlight.hidden = false;\n const x1 = a.right - base.left;\n const y1 = a.top - base.top + 12;\n const x2 = s.left - base.left;\n const y2 = s.top - base.top + 14;\n const mid = (x1 + x2) / 2;\n const path = this.doc.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n path.setAttribute(\"d\", `M${x1} ${y1} H${mid} V${y2} H${x2}`);\n svg.append(path);\n }\n\n // --- What the reviewer does ---\n\n private clickBlock(event: MouseEvent): void {\n if (this.data === undefined || this.wide || event.defaultPrevented) return;\n const target = event.target instanceof Element ? event.target : null;\n if (!target || target.closest(\"a, button, input, textarea, select, summary, [role=tab]\"))\n return;\n if (this.doc.getSelection()?.isCollapsed === false) return;\n const block = this.blockOf(target);\n const anchor = block && this.anchorOf(block);\n if (anchor) this.openPanel(anchor);\n }\n\n private keyOnBlock(event: KeyboardEvent): void {\n if (this.data === undefined) return;\n if (event.key === \"Escape\") {\n this.escape();\n return;\n }\n const block = event.target instanceof HTMLElement ? event.target : null;\n if (!block || !this.focusable.includes(block)) return;\n if (event.key !== \"Enter\") return;\n event.preventDefault();\n const anchor = this.anchorOf(block);\n if (!anchor) return;\n if (this.wide) this.startComment(anchor);\n else this.openPanel(anchor);\n }\n\n private keyInOverlay(event: KeyboardEvent): void {\n if (event.key === \"Escape\") {\n event.stopPropagation();\n this.escape();\n return;\n }\n if (event.key === \"Tab\" && this.dialog !== undefined) this.trapFocus(event);\n }\n\n private escape(): void {\n if (this.dialog !== undefined) this.closeDialog();\n else if (this.composer !== undefined) this.cancelComment();\n else if (this.panel !== undefined) this.closePanel();\n }\n\n private clickLink(event: MouseEvent): void {\n const target = event.composedPath()[0];\n const link = target instanceof Element ? target.closest(\"a[href]\") : null;\n if (!link || !this.host.openLink) return;\n event.preventDefault();\n this.host.openLink(link.getAttribute(\"href\") ?? \"\");\n }\n\n private startComment(anchor: Anchor): void {\n const key = anchorKey(anchor);\n if (this.composer?.key === key) {\n this.focusOn(`comment:${key}`);\n return;\n }\n this.rememberOpener();\n this.composer = { key, anchor, target: undefined, busy: false, error: undefined };\n if (!this.wide) {\n this.panel = key;\n this.panelAnchor = anchor;\n }\n this.render();\n this.focusOn(`comment:${key}`);\n const composer = this.composer;\n this.host.commentTarget(anchor).then(\n (target) => {\n if (this.composer !== composer) return;\n composer.target = target;\n this.render();\n if (target.kind !== \"push-first\") this.focusOn(`comment:${key}`);\n else this.focusOn(\"composer-cancel\");\n },\n () => {\n if (this.composer !== composer) return;\n // Nothing to say up front: try it, and the session holds it if it must.\n composer.target = { kind: \"thread\" };\n this.render();\n },\n );\n }\n\n private cancelComment(): void {\n const composer = this.composer;\n if (!composer) return;\n this.composer = undefined;\n this.drafts.delete(`comment:${composer.key}`);\n this.render();\n this.giveBackFocus();\n }\n\n private async addComment(): Promise<void> {\n const composer = this.composer;\n const key = composer && `comment:${composer.key}`;\n const body = key ? (this.drafts.get(key) ?? \"\").trim() : \"\";\n if (!composer || !key || composer.busy || body === \"\") return;\n composer.busy = true;\n composer.error = undefined;\n this.render();\n try {\n const thread = await this.host.comment(\n composer.anchor,\n body,\n this.shownText(composer.anchor),\n );\n this.composer = undefined;\n this.drafts.delete(key);\n this.announce(\n thread.kind === \"conversation\"\n ? \"Added to your review's summary. Nothing is sent until you submit the review.\"\n : \"Added to your review. Nothing is sent until you submit the review.\",\n );\n await this.refresh();\n if (!this.focusOn(`reply:${thread.id}`)) this.findCard(thread.id)?.focus();\n } catch (error) {\n composer.busy = false;\n composer.error = messageOf(error);\n if (codeOf(error) === \"push-first\")\n composer.target = { kind: \"push-first\", message: composer.error };\n this.announce(composer.error);\n this.render();\n }\n }\n\n private async reply(thread: LocatedThread, when: \"now\" | \"withReview\"): Promise<void> {\n const key = `reply:${thread.id}`;\n const body = (this.drafts.get(key) ?? \"\").trim();\n if (body === \"\" || this.busy.has(thread.id)) return;\n this.busy.add(thread.id);\n this.errors.delete(key);\n this.render();\n try {\n await this.host.reply(thread.id, body, when);\n this.drafts.delete(key);\n this.busy.delete(thread.id);\n const message = when === \"now\" ? \"Reply sent to GitHub.\" : \"Reply added to your review.\";\n this.announce(message);\n if (when === \"now\") this.host.notify?.(message);\n await this.refresh();\n this.focusOn(key);\n } catch (error) {\n this.busy.delete(thread.id);\n this.errors.set(key, messageOf(error));\n this.announce(messageOf(error));\n // The session refused because the review has unsent comments: read again, so the bar shows them.\n if (codeOf(error) === \"reply-held\") await this.refresh();\n else this.render();\n this.focusOn(key);\n }\n }\n\n private async resolve(thread: LocatedThread): Promise<void> {\n if (this.busy.has(thread.id)) return;\n const resolved = !thread.resolved;\n this.busy.add(thread.id);\n this.render();\n try {\n await this.host.resolve(thread.id, resolved);\n this.busy.delete(thread.id);\n this.expanded.delete(thread.id);\n const message = resolved\n ? \"Resolved on GitHub. Resolving is sent right away, not held with your review.\"\n : \"Reopened on GitHub.\";\n this.announce(message);\n this.host.notify?.(message);\n await this.refresh();\n if (!this.focusOn(`resolve:${thread.id}`)) this.focusOn(`expand:${thread.id}`);\n } catch (error) {\n this.busy.delete(thread.id);\n this.announce(messageOf(error));\n this.host.notify?.(messageOf(error));\n this.render();\n }\n }\n\n private async submit(): Promise<void> {\n const data = this.data;\n if (!data || this.submitting) return;\n this.submitting = true;\n this.dialogError = undefined;\n this.render();\n const summary = (this.drafts.get(\"summary\") ?? \"\").trim();\n try {\n await this.host.submit(this.event, summary === \"\" ? undefined : summary);\n this.submitting = false;\n this.drafts.delete(\"summary\");\n this.dialog = undefined;\n const number = data.pullRequest.number;\n const done =\n this.event === \"APPROVE\"\n ? `Approved #${number}.`\n : this.event === \"REQUEST_CHANGES\"\n ? `Requested changes on #${number}.`\n : `Review submitted to #${number}.`;\n const message = `${done} Your comments are now on GitHub.`;\n this.event = \"COMMENT\";\n this.announce(message);\n this.host.notify?.(message);\n await this.refresh();\n this.giveBackFocus();\n } catch (error) {\n this.submitting = false;\n this.dialogError = messageOf(error);\n this.announce(this.dialogError);\n this.render();\n }\n }\n\n private async discard(): Promise<void> {\n try {\n await this.host.discard();\n this.dialog = undefined;\n this.discardAsk = false;\n const message = \"Discarded your unsent comments.\";\n this.announce(message);\n this.host.notify?.(message);\n await this.refresh();\n this.giveBackFocus();\n } catch (error) {\n this.discardAsk = false;\n this.dialogError = messageOf(error);\n this.announce(this.dialogError);\n this.render();\n }\n }\n\n /** Goes to a thread from a list: on this page, or on the page the host opens. */\n private jump(summary: ThreadSummary): void {\n const { thread, pages } = summary;\n this.dialog = undefined;\n this.discardAsk = false;\n if (this.goToThread(thread.id)) return;\n this.render();\n const page = pages[0];\n if (page) {\n this.host.openThread(thread.id, page.path);\n return;\n }\n const lines = thread.lines ?? { first: 1, last: 1 };\n this.host.openSource({\n source: formatSource({ path: thread.path, first: lines.first, last: lines.last }),\n via: [],\n });\n }\n\n private openPanel(anchor: Anchor): void {\n this.rememberOpener();\n this.panel = anchorKey(anchor);\n this.panelAnchor = anchor;\n this.render();\n const sheet = this.layer.querySelector<HTMLElement>(\".sheet\");\n (\n sheet?.querySelector<HTMLElement>(\".thread\") ?? sheet?.querySelector<HTMLElement>(\"button\")\n )?.focus();\n }\n\n /** Opens the panel of a block with threads (which may be removed text). */\n private openEntry(entry: Entry): void {\n this.rememberOpener();\n this.panel = entry.key;\n this.panelAnchor = entry.removed ? undefined : entry.anchor;\n this.render();\n const sheet = this.layer.querySelector<HTMLElement>(\".sheet\");\n (\n sheet?.querySelector<HTMLElement>(\".thread\") ?? sheet?.querySelector<HTMLElement>(\"button\")\n )?.focus();\n }\n\n private closePanel(): void {\n this.panel = undefined;\n this.panelAnchor = undefined;\n this.composer = undefined;\n this.render();\n this.giveBackFocus();\n }\n\n private openDialog(dialog: \"submit\" | \"all\"): void {\n if (this.data === undefined) return;\n this.rememberOpener();\n this.dialog = dialog;\n this.discardAsk = false;\n this.dialogError = undefined;\n this.render();\n this.focusDialog();\n // The lists need every thread; read them again, since they may have changed.\n void this.host.allThreads().then(\n (all) => {\n if (this.disposed) return;\n this.all = all;\n if (this.dialog === dialog) {\n const focus = this.focusKey();\n this.render();\n if (!this.restoreFocus(focus)) this.focusDialog();\n }\n },\n () => undefined,\n );\n }\n\n private closeDialog(): void {\n this.dialog = undefined;\n this.discardAsk = false;\n this.render();\n this.giveBackFocus();\n }\n\n private focusDialog(): void {\n const dialog = this.layer.querySelector<HTMLElement>(\".dialog\");\n const first = dialog?.querySelector<HTMLElement>(\n this.dialog === \"submit\" ? \"input[type=radio]:checked\" : \"[aria-pressed=true]\",\n );\n first?.focus();\n }\n\n private trapFocus(event: KeyboardEvent): void {\n const dialog = this.layer.querySelector<HTMLElement>(\".dialog\");\n if (!dialog) return;\n const focusable = Array.from(\n dialog.querySelectorAll<HTMLElement>(\"button, textarea, input, [tabindex]\"),\n ).filter((el) => !(el as HTMLButtonElement).disabled && el.tabIndex >= 0);\n const first = focusable[0];\n const last = focusable.at(-1);\n const active = this.layer.activeElement;\n if (event.shiftKey && active === first) {\n event.preventDefault();\n last?.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first?.focus();\n }\n }\n\n // --- Focus ---\n\n private rememberOpener(): void {\n if (this.opener !== undefined) return;\n const active = this.activeElement();\n this.opener = active instanceof HTMLElement ? active : undefined;\n }\n\n private giveBackFocus(): void {\n const opener = this.opener;\n this.opener = undefined;\n if (opener?.isConnected) opener.focus({ preventScroll: true });\n }\n\n /** The focused element, inside the overlay's shadow roots or out. */\n private activeElement(): Element | null {\n let active = this.doc.activeElement;\n while (active?.shadowRoot?.activeElement) active = active.shadowRoot.activeElement;\n return active;\n }\n\n private focusKey(): { key: string; start: number; end: number } | undefined {\n const active = this.activeElement();\n const key = active instanceof HTMLElement ? active.dataset[\"focus\"] : undefined;\n if (key === undefined || !active) return undefined;\n const field = active as HTMLTextAreaElement;\n return {\n key,\n start: typeof field.selectionStart === \"number\" ? field.selectionStart : 0,\n end: typeof field.selectionEnd === \"number\" ? field.selectionEnd : 0,\n };\n }\n\n private restoreFocus(focus: { key: string; start: number; end: number } | undefined): boolean {\n if (!focus) return false;\n const el = this.byFocusKey(focus.key);\n if (!el || (el as HTMLButtonElement).disabled) return false;\n el.focus({ preventScroll: true });\n if (el instanceof HTMLTextAreaElement) el.setSelectionRange(focus.start, focus.end);\n return true;\n }\n\n private byFocusKey(key: string): HTMLElement | undefined {\n for (const shadow of [this.layer, this.before, this.after, this.tools]) {\n for (const el of Array.from(shadow.querySelectorAll<HTMLElement>(\"[data-focus]\"))) {\n if (el.dataset[\"focus\"] === key) return el;\n }\n }\n return undefined;\n }\n\n private focusOn(key: string): boolean {\n const el = this.byFocusKey(key);\n if (!el || (el as HTMLButtonElement).disabled) return false;\n el.focus({ preventScroll: true });\n return true;\n }\n\n private findCard(threadId: string): HTMLElement | undefined {\n for (const shadow of [this.layer, this.before]) {\n for (const el of Array.from(shadow.querySelectorAll<HTMLElement>(\".thread\"))) {\n if (el.dataset[\"thread\"] === threadId) return el;\n }\n }\n return undefined;\n }\n\n private announce(message: string): void {\n // A change of text is what's announced: clear it first, so the same message is said again.\n this.live.textContent = \"\";\n requestFrame(this.doc, () => {\n this.live.textContent = message;\n });\n }\n\n // --- Elements ---\n\n private el<K extends keyof HTMLElementTagNameMap>(\n tag: K,\n className: string,\n text?: string,\n ): HTMLElementTagNameMap[K] {\n const el = this.doc.createElement(tag);\n if (className) el.className = className;\n if (text !== undefined) el.textContent = text;\n return el;\n }\n\n private button(\n className: string,\n text: string,\n onClick: () => void,\n focusKey?: string,\n ): HTMLButtonElement {\n const button = this.el(\"button\", className, text);\n button.type = \"button\";\n if (focusKey !== undefined) button.dataset[\"focus\"] = focusKey;\n button.addEventListener(\"click\", (event) => {\n event.stopPropagation();\n onClick();\n });\n return button;\n }\n\n private badge(kind: string, text: string): HTMLElement {\n return this.el(\"span\", `badge ${kind}`, text);\n }\n}\n\nconst HELD_REASON =\n \"You have unsent comments, so GitHub adds replies to your review. Submit or discard it to reply at once.\";\n\n/** `rollouts.md:28`, from a block's anchor. */\nfunction sourceLabel(anchor: Anchor): string {\n const colon = anchor.source.lastIndexOf(\":\");\n const match = /^(\\d+)-(\\d+)$/.exec(anchor.source.slice(colon + 1));\n if (colon < 0 || !match) return anchor.source;\n let path = anchor.source.slice(0, colon);\n try {\n path = decodeURIComponent(path);\n } catch {\n // Show it as it is.\n }\n return linesLabel(path, { first: Number(match[1]), last: Number(match[2]) });\n}\n\n/** A comment's first line, for a list. */\nfunction oneLine(body: string): string {\n return body.replace(/\\s+/g, \" \").trim();\n}\n\nfunction messageOf(error: unknown): string {\n if (typeof error === \"object\" && error !== null && \"message\" in error) {\n return String((error as HostError).message);\n }\n return String(error);\n}\n\nfunction codeOf(error: unknown): string | undefined {\n if (typeof error === \"object\" && error !== null && \"code\" in error) {\n const code = (error as HostError).code;\n return typeof code === \"string\" ? code : undefined;\n }\n return undefined;\n}\n\n/** An element that can't hold children: the overlay's things go after it. */\nfunction isVoid(element: Element): boolean {\n return /^(img|hr|br|input|video|audio|iframe|embed|object|svg|math|canvas)$/.test(\n element.localName,\n );\n}\n\nfunction cssId(text: string): string {\n return text.replace(/[^A-Za-z0-9_-]/g, \"_\");\n}\n\nfunction requestFrame(doc: Document, callback: () => void): void {\n const view = doc.defaultView;\n if (view && typeof view.requestAnimationFrame === \"function\")\n view.requestAnimationFrame(callback);\n else setTimeout(callback, 0);\n}\n\nlet sheet: { doc: Document; sheet: CSSStyleSheet } | undefined;\n\n/**\n * Gives a shadow root the overlay's stylesheet: one constructed stylesheet,\n * shared, where the browser has them (a content security policy that allows\n * no inline styles still allows these); a `<style>` element elsewhere.\n */\nfunction adoptStyles(shadow: ShadowRoot, doc: Document): void {\n const view = doc.defaultView as (Window & { CSSStyleSheet?: typeof CSSStyleSheet }) | null;\n if (view?.CSSStyleSheet && \"adoptedStyleSheets\" in shadow) {\n try {\n if (sheet?.doc !== doc) {\n const constructed = new view.CSSStyleSheet();\n constructed.replaceSync(OVERLAY_CSS);\n sheet = { doc, sheet: constructed };\n }\n shadow.adoptedStyleSheets = [sheet.sheet];\n return;\n } catch {\n // Not constructable here: fall back to an element.\n }\n }\n const style = doc.createElement(\"style\");\n style.setAttribute(\"data-overlay\", \"\");\n style.textContent = OVERLAY_CSS;\n shadow.append(style);\n}\n\n/** Where a thread's Open source goes: its own lines when it has them, else its block's. */\nfunction threadSource(thread: LocatedThread, entry: { anchor: Anchor }): Anchor {\n if (thread.lines === undefined || (thread.kind === \"review\" && thread.side === \"LEFT\")) {\n return entry.anchor;\n }\n return {\n source: formatSource({ path: thread.path, first: thread.lines.first, last: thread.lines.last }),\n via: entry.anchor.via,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/overlay/style.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,kDAAkD;AAElD,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmjB1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/overlay/style.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,kDAAkD;AAElD,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmjB1B,CAAC","sourcesContent":["// The overlay's stylesheet. It applies inside the overlay's shadow roots only,\n// so the page's styles don't reach the overlay and the overlay's don't reach\n// the page. Colors come from the page's --ascribe-review-* custom properties\n// (`marks.css` sets them, with light and dark values; a host can set its own),\n// which reach inside shadow roots by inheritance.\n\nexport const OVERLAY_CSS = `\n:host {\n all: initial;\n --text: var(--ascribe-review-text, CanvasText);\n --muted: var(--ascribe-review-muted, #5b6475);\n --line: var(--ascribe-review-border, #d3d8e0);\n --surface: var(--ascribe-review-surface, Canvas);\n --thread: var(--ascribe-review-thread, #f5f7fb);\n --accent: var(--ascribe-review-focus, #1f6feb);\n --accent-text: var(--ascribe-review-accent-text, #ffffff);\n --input: var(--ascribe-review-input, var(--surface));\n --flash: var(--ascribe-review-flash, #fff6bf);\n --added: var(--ascribe-review-added, #1a7f37);\n --changed: var(--ascribe-review-changed, #8a5a00);\n --changed-background: var(--ascribe-review-changed-background, #fff1c2);\n --removed: var(--ascribe-review-removed, #c4222d);\n --removed-background: var(--ascribe-review-removed-background, #ffe4e2);\n --mono: var(--ascribe-review-mono, ui-monospace, monospace);\n font-family: var(--ascribe-review-font, system-ui, -apple-system, \"Segoe UI\", sans-serif);\n font-size: 12.5px;\n line-height: 1.45;\n color: var(--text);\n}\n* {\n box-sizing: border-box;\n}\n[hidden] {\n display: none !important;\n}\nbutton,\ntextarea,\ninput {\n font: inherit;\n color: inherit;\n}\nbutton {\n cursor: pointer;\n}\nbutton:disabled,\nbutton[aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton:focus-visible,\ntextarea:focus-visible,\ninput:focus-visible,\n.thread:focus-visible {\n outline: 2px solid var(--accent);\n outline-offset: 1px;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n/* Buttons */\n.ghost {\n border: 1px solid var(--line);\n background: var(--surface);\n border-radius: 5px;\n padding: 2px 8px;\n font-size: 12px;\n min-height: 24px;\n}\n.ghost:hover:not(:disabled):not([aria-disabled=\"true\"]) {\n border-color: var(--accent);\n color: var(--accent);\n}\n.primary {\n border: 1px solid var(--accent);\n background: var(--accent);\n color: var(--accent-text);\n border-radius: 5px;\n padding: 2px 10px;\n font-size: 12.5px;\n font-weight: 600;\n min-height: 24px;\n}\n.danger {\n border: 1px solid var(--removed);\n background: var(--removed);\n color: var(--surface);\n border-radius: 5px;\n padding: 2px 10px;\n font-size: 12.5px;\n font-weight: 600;\n min-height: 24px;\n}\n.link {\n border: 0;\n background: transparent;\n color: var(--accent);\n padding: 0;\n font-size: inherit;\n text-align: inherit;\n}\na.link {\n text-decoration: none;\n}\n.link:hover {\n text-decoration: underline;\n}\n.hint {\n color: var(--muted);\n font-size: 11.5px;\n}\n.refuse,\n.error {\n color: var(--removed);\n font-size: 12px;\n}\n.spacer {\n flex: 1;\n}\n\n/* The layer over the page: the column, markers' panel, dialogs. */\n.layer {\n position: absolute;\n inset: 0;\n pointer-events: none;\n}\n.layer > *,\n.column > * {\n pointer-events: auto;\n}\n.column {\n position: absolute;\n top: 0;\n width: 250px;\n pointer-events: none;\n}\n.slot {\n position: absolute;\n left: 0;\n right: 0;\n}\n.slot > .thread,\n.slot > .composer {\n margin: 0 0 6px;\n}\n.slot.linked .thread,\n.slot.linked .composer {\n border-color: var(--accent);\n}\n.highlight {\n position: absolute;\n pointer-events: none;\n background: color-mix(in srgb, var(--flash) 55%, transparent);\n border-radius: 3px;\n /* Over the page's text, a tint that keeps the text as it was: multiplied\n on a light page, screened on a dark one. */\n mix-blend-mode: var(--ascribe-review-blend, multiply);\n}\nsvg.connector {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: visible;\n pointer-events: none;\n}\nsvg.connector path {\n fill: none;\n stroke: var(--accent);\n stroke-width: 1.5;\n}\n\n/* The block tools: the Comment button, and the count marker at narrow widths. */\n.tool {\n border: 1px solid var(--line);\n background: var(--surface);\n border-radius: 5px;\n font-size: 11.5px;\n padding: 0 7px;\n min-height: 22px;\n color: var(--accent);\n white-space: nowrap;\n}\n.hint-count {\n margin-inline-start: 2px;\n font-size: 11px;\n font-weight: 600;\n color: var(--accent);\n}\n\n.marker {\n border: 1px solid var(--accent);\n background: var(--surface);\n color: var(--accent);\n border-radius: 999px;\n font-size: 11px;\n font-weight: 700;\n padding: 0 8px;\n min-width: 30px;\n min-height: 24px;\n}\n\n/* Threads */\n.thread {\n background: var(--thread);\n border: 1px solid var(--line);\n border-radius: 6px;\n margin: 6px 0 10px;\n}\n.th {\n display: flex;\n flex-wrap: wrap;\n gap: 3px 8px;\n align-items: center;\n padding: 5px 9px 2px;\n font-size: 11.5px;\n color: var(--muted);\n}\n.acts {\n display: flex;\n flex-wrap: wrap;\n gap: 2px 12px;\n padding: 0 9px 5px;\n border-bottom: 1px solid var(--line);\n font-size: 11.5px;\n}\n.thread.collapsed .acts {\n border-bottom: 0;\n}\n.orig,\n.inside {\n padding: 5px 9px;\n border-bottom: 1px solid var(--line);\n font-size: 11.5px;\n color: var(--muted);\n}\n.orig q {\n color: var(--text);\n white-space: pre-wrap;\n}\n.badge {\n border-radius: 999px;\n padding: 0 7px;\n font-size: 10.5px;\n font-weight: 600;\n border: 1px solid currentColor;\n white-space: nowrap;\n}\n.badge.unsent {\n color: var(--changed);\n}\n.badge.resolved {\n color: var(--added);\n}\n.badge.outdated {\n color: var(--muted);\n}\n.badge.summary {\n color: var(--accent);\n}\n.badge.removed,\n.badge.detached {\n color: var(--removed);\n}\n.comment {\n display: grid;\n grid-template-columns: 22px minmax(0, 1fr);\n gap: 7px;\n padding: 6px 9px;\n}\n.comment + .comment {\n border-top: 1px dashed var(--line);\n}\n.avatar {\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background: var(--accent);\n color: var(--accent-text);\n display: grid;\n place-items: center;\n font-size: 9.5px;\n font-weight: 700;\n}\n.who {\n font-weight: 600;\n}\n.when {\n color: var(--muted);\n font-size: 11px;\n margin-left: 6px;\n}\n.body {\n overflow-wrap: anywhere;\n}\n.body > :first-child {\n margin-top: 1px;\n}\n.body > :last-child {\n margin-bottom: 0;\n}\n.body p,\n.body ul,\n.body ol,\n.body blockquote,\n.body pre {\n margin: 4px 0;\n}\n.body ul,\n.body ol {\n padding-left: 18px;\n}\n.body blockquote {\n border-left: 3px solid var(--line);\n padding-left: 8px;\n color: var(--muted);\n}\n.body code {\n font-family: var(--mono);\n font-size: 0.92em;\n background: color-mix(in srgb, var(--muted) 14%, transparent);\n padding: 0.05em 0.3em;\n border-radius: 3px;\n}\n.body pre {\n overflow-x: auto;\n padding: 6px 8px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--muted) 14%, transparent);\n}\n.body pre code {\n background: none;\n padding: 0;\n}\n.body a {\n color: var(--accent);\n}\n.reply {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 6px 9px 8px;\n border-top: 1px solid var(--line);\n}\n.reply textarea {\n flex: 1 1 100%;\n min-width: 80px;\n padding: 2px 8px;\n border: 1px solid var(--line);\n border-radius: 5px;\n background: var(--input);\n resize: vertical;\n field-sizing: content;\n min-height: 26px;\n max-height: 160px;\n}\n.reply .error,\n.reply .hint {\n flex-basis: 100%;\n}\n.composer {\n background: var(--thread);\n border: 1px solid var(--accent);\n border-radius: 6px;\n padding: 8px 10px;\n margin: 6px 0 10px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.composer textarea {\n width: 100%;\n min-height: 56px;\n resize: vertical;\n padding: 6px 8px;\n border: 1px solid var(--line);\n border-radius: 5px;\n background: var(--input);\n}\n.row {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n align-items: center;\n}\n\n/* The detached list, above the page */\n.detached {\n margin: 12px 0;\n border: 1px dashed var(--line);\n border-radius: 6px;\n padding: 8px 10px 2px;\n color: var(--muted);\n max-width: 520px;\n}\n.detached .thread {\n color: var(--text);\n}\n\n/* The unsent bar, at the bottom */\n.unsent-bar {\n background: var(--changed-background);\n border-top: 1px solid var(--line);\n padding: 6px 10px;\n display: flex;\n flex-wrap: wrap;\n gap: 6px 10px;\n align-items: center;\n}\n.unsent-bar .hint {\n font-size: 12px;\n}\n\n/* The panel for one block's threads, at narrow widths */\n.sheet {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n max-height: 62vh;\n overflow: auto;\n background: var(--surface);\n border-top: 2px solid var(--accent);\n box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.22);\n padding: 8px 12px 10px;\n z-index: 4;\n}\n.sheet .head {\n display: flex;\n gap: 8px;\n align-items: center;\n font-size: 12px;\n color: var(--muted);\n}\n\n/* Dialogs */\n.backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 8;\n display: grid;\n place-items: center;\n padding: 12px;\n}\n.dialog {\n background: var(--surface);\n border: 1px solid var(--line);\n border-radius: 8px;\n width: min(480px, 100%);\n max-height: 100%;\n overflow: auto;\n padding: 12px 14px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n font-size: 13px;\n}\n.dialog h2 {\n margin: 0;\n font-size: 14px;\n}\n.dialog ul.unsent-list {\n margin: 0;\n padding-left: 18px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.dialog fieldset {\n border: 0;\n padding: 0;\n margin: 0;\n display: flex;\n flex-wrap: wrap;\n gap: 4px 14px;\n}\n.dialog textarea {\n width: 100%;\n min-height: 56px;\n resize: vertical;\n padding: 6px 8px;\n border: 1px solid var(--line);\n border-radius: 5px;\n background: var(--input);\n}\n.confirm {\n border: 1px solid var(--removed);\n background: var(--removed-background);\n border-radius: 6px;\n padding: 8px 10px;\n}\n.segmented {\n display: inline-flex;\n flex-wrap: wrap;\n align-self: flex-start;\n border: 1px solid var(--line);\n border-radius: 5px;\n overflow: hidden;\n}\n.segmented button {\n border: 0;\n background: transparent;\n padding: 2px 9px;\n font-size: 12px;\n color: var(--muted);\n min-height: 24px;\n}\n.segmented button + button {\n border-left: 1px solid var(--line);\n}\n.segmented button[aria-pressed=\"true\"] {\n background: var(--accent);\n color: var(--accent-text);\n}\n.thread-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.thread-list li + li {\n border-top: 1px solid var(--line);\n}\n.thread-list button {\n display: flex;\n flex-direction: column;\n gap: 1px;\n width: 100%;\n text-align: left;\n border: 0;\n background: transparent;\n padding: 6px 4px;\n}\n.thread-list button:hover,\n.thread-list button:focus-visible {\n background: color-mix(in srgb, var(--muted) 12%, transparent);\n}\n.thread-list .where {\n font-size: 11.5px;\n color: var(--muted);\n}\n.thread-list .first {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.flash {\n animation: flash 1.4s ease-out;\n}\n@keyframes flash {\n from {\n box-shadow: 0 0 0 3px var(--accent);\n }\n to {\n box-shadow: 0 0 0 0 transparent;\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .flash {\n animation: none;\n outline: 2px solid var(--accent);\n }\n}\n`;\n"]}
|