✨(frontend) Export presenter slides as PDF#2487
Draft
PanchoutNathan wants to merge 16 commits into
Draft
Conversation
createDoc returned before the ProseMirror editor was visible, so tests that immediately typed or opened the presenter raced the load. Wait for the editor container before handing control back.
Move presenter ownership out of DocToolBox into a top-level PresenterRoot driven by a zustand store, lazy-load the overlay and paint a boot cover while the editor boots. Groundwork for the deep-link and present-from-here features (#2466).
Pull the BlockNote rendering out of PresenterSlide into PresenterSlideContent so it can be reused by the title slide and the PDF export. Add a PresenterSlideData union (title | content) and a shared PresenterBlock type.
Prepend a slide with the document title (emoji stripped) so every presentation opens on a cover, announced to screen readers like any other slide (#2466).
Dividers with children are kept as structural parents so their slide keeps its indentation; the divider's own rule is hidden. Empty paragraphs around a divider are dropped so habitual spacing no longer offsets slides. Closes #2398
A selected image (or any selected node) leaked its editing outline into the read-only slide. Suppress the selected-node outline so nothing looks focused unless the user tabs or clicks. Closes #2393
Cover generated title slides, divider grouping, and presenter focus. Keep e2e coverage aligned with the first present-mode slice.
Slim the divider to a 1px rule with a brand-colored selected state, matching the mockups. Closes #2474
Support ?view=present&slide=N deep-links (clamped, URL kept in sync) and a "Copy link to slide" action in the floating bar. Ignore the deep-link on mobile. Closes #2397
Exercise direct present links, copied slide URLs, and mobile behavior. Keep the e2e slice scoped to the share-link workflow.
Add a "Present" item to the block side menu that opens the presenter on the slide containing that block. Map any block id (incl. nested or divider ids) to its rendered content slide. Closes #2470
Exercise block-to-slide mapping and the editor side-menu action. Keep coverage scoped to starting the presenter from a block.
wrapMediaWithLink / wrapInterlinksWithAnchor defaulted to document. Accept a root node so the presenter export can reuse them on its off-screen tree.
Show a monochrome Docs logo in the slide corner (web and PDF) to signal the document was made with Docs. Closes #2472
Render the slides off-screen as A4 landscape pages and print them via the browser, one slide per page with the watermark. Add a "Download PDF" action to the floating bar. Closes #2446
Exercise PDF print pages, file blocks, and tall slide clipping. Keep coverage scoped to the presenter export workflow.
Contributor
|
Size Change: +6.48 kB (+0.15%) Total Size: 4.35 MB 📦 View Changed
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Refs #2466
Closes #2446
Closes #2472