Initial TrueGrowth source import
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
## 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 `PPTSlideTransitionType` with PowerPoint-aligned names: none, fade, push, wipe, split, cover, uncover.
|
||||
- Store transition data on `PPTFrameMeta.transition` with 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 existing `jszip` dependency, 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.
|
||||
Reference in New Issue
Block a user