2.2 KiB
2.2 KiB
Context
The current PPT editor uses an image-first model: each slide is a Frame whose primary content is a full-slide image plus light pptMeta. This maps naturally to PowerPoint slide transitions, but not to element-level animation.
pptxgenjs@4.0.1 does not expose a slide transition API, so exported PPTX transition support requires writing transition XML into ppt/slides/slideN.xml after generation.
Goals
- Store transition configuration per PPT page without duplicating media data.
- Offer a right-click submenu that is quick to scan and works via hover.
- Make in-app slideshow playback honor the selected transition.
- Make downloaded PPTX files contain matching slide transition metadata.
- Keep memory usage bounded for high-page-count decks.
Non-Goals
- Element-level animation such as text fly-in, object emphasis, or path animation.
- New dependency-heavy PPT generation pipeline.
- Auto-advance timing unless added in a later change.
Decisions
- Use a small enum-like
PPTSlideTransitionTypewith PowerPoint-aligned names: none, fade, push, wipe, split, cover, uncover. - Store transition data on
PPTFrameMeta.transitionwith a duration in milliseconds. - Apply playback effects as CSS transforms/opacity on a lightweight overlay around the visible Frame area.
- Export transitions by generating a Blob/ArrayBuffer from
pptxgenjs, loading it through the existingjszipdependency, patching slide XML, then triggering the same download behavior. - Treat unsupported or malformed transition metadata as
none.
Risks / Trade-offs
- OOXML transition tags can vary across PowerPoint/WPS/Keynote. Keep the initial transition set small and test generated XML directly.
- PPTX post-processing holds the generated PPTX zip in memory. Avoid additional image decoding or full-slide rasterization during this phase.
- In-app CSS playback can approximate PowerPoint transitions but will not be pixel-perfect for every office suite.
Validation
- Unit test transition sanitization and XML injection.
- Targeted PPT export test verifies generated slide XML contains expected transition tags.
- Manual browser check verifies right-click hover submenu, metadata persistence, and slideshow transition playback.