Pre-wired bundle: pptx core + P0 + P1 extras (~95% real-world pptx coverage).
Module pptxLargeBundle | Source packages/front/office/ooxml/src/bundles/pptx-large.js | Deps pptx + 12 extras | Worker-safe yes
Included
pmlAnimations— slide timing graphpmlTransitions— slide transitionspmlNotes— notes / handout masterpmlLayoutsTyped— typed layout descriptorsdmlChartDataLabels— dLbls / dLbldmlChartTrendlines— trendlines / errBarsdmlChartAxesAdvanced— full axis configdmlChart3d— 3D scenesdmlChartOtherTypes— bubble / radar / stock / ofPiemathAdvanced— slide text bodies can carry OMMLdmlEffects— shadow / glow / blur / 3DdmlFillsAdvanced— gradient / image / pattern fills
Resolve
const pp = runtime.resolve('pptxLargeBundle');
// Returns the enriched `pptx` instance — same shape as resolving 'pptx'.
API
Pure fw factory descriptor — register it and its dependencies in a ModuleRuntime, then resolve 'pptxLargeBundle'.
| Resolve key | Returns | Dependencies (auto-wired) |
|---|---|---|
'pptxLargeBundle' |
enriched pptx API (same shape as pptx) |
pptx, plus every extra listed under Included |
Examples
import { ModuleRuntime } from '@awacloud/fw/core/runtime.js';
import { fw_require, modules, extras } from '@awacloud/ooxml';
import { pptxLargeBundle } from '@awacloud/ooxml/bundles/pptx-large';
const runtime = new ModuleRuntime();
runtime.registerAll(fw_require); // the @awacloud/fw modules the package consumes
runtime.registerAll(modules);
runtime.registerAll(extras);
runtime.register(pptxLargeBundle);
const pp = runtime.resolve('pptxLargeBundle');
const bytes = new Uint8Array(/* … */);
const result = pp.read(bytes); // → { presentation, package, unmodelledParts }
// The typed presentation lives under `result.presentation`.
const slide = result.presentation.slides[0];
console.log(slide.shapes.length);
console.log(result.presentation.slideLayouts?.length);
// Transitions and timing stay as raw elements on the slide's `_extras`
// until you decode them with the extra's own helpers:
const transitions = runtime.resolve('pmlTransitions');
const transEl = (slide._extras || []).find(e => e.name === 'p:transition');
if (transEl) console.log(transitions.parseTransition(transEl));
// Write back — `write` takes the PRESENTATION.
const out = pp.write(result.presentation);
Notes
pptx.read(bytes)returns{ presentation, package, unmodelledParts }andpptx.write(presentation)takes the presentation object — a parsed slide is{ type:'slide', shapes:[…], name?, bg?, clrMapOvr?, _extras? }, there is nocSld/spTreelevel in the typed model.- Of the 12 extras above, none declares the
hydrateRunProperties/hydrateParagraphProperties/hydrateSettingshooks thatpptxWalkerdispatches, so the read result is not enriched automatically; resolve the extra and call its parse/render helpers on the elements preserved in_extras. - Animations and transitions attach to the slide root — masters and layouts can carry their own (rare).
- For advanced custom-geometry shapes use
pptx-full.
Breaking change
The previous buildPptxLarge(pptx, { xml }) imperative helper has been removed. Replace any call sites with the ModuleRuntime pattern shown above.