PML — slide-timing graph (<p:timing>, par/seq/excl + cTn + child time nodes).

Module pmlAnimations | Source packages/front/office/ooxml/src/extra/pml-animations.js | Deps xml | Worker-safe yes

Parses the recursive timing tree that drives PowerPoint animations on a slide.

Resolve

const ext = pmlAnimations.factory(xml);

API

Method Signature Returns
parseTiming (el) => Timing full <p:timing>
renderTiming (t) => xmlNode back to XML
parseTimeNode (el) => TimeNode recursive helper
renderTimeNode (n) => xmlNode recursive
parseCTn / renderCTn — <p:cTn> common time node (cond lists, iterate, child/sub time-node lists, endSync)
parseCBhvr / renderCBhvr — <p:cBhvr> common behaviour (attrs + cTn + tgtEl + attrNameLst)
parseCond / renderCond — <p:cond> (tgtEl, tn, rtn)
parseTgtEl / renderTgtEl — <p:tgtEl> (spTgt/sldTgt/sndTgt/inkTgt)
parseSpTgt / renderSpTgt — <p:spTgt> (bg/txEl/subSp/oleChartEl/graphicEl)
parseTxEl / renderTxEl — <p:txEl> (charRg, pRg)
parseIterate / renderIterate — <p:iterate> (tmAbs, tmPct)
parseTavLst / renderTavLst — <p:tavLst> (list of <p:tav>)
parseAnimVal / renderAnimVal — <p:val>/<p:to>/<p:from>/<p:by>/<p:progress> value variant wrapper
parseClrVal / renderClrVal — <p:clrVal> (rgb/hsl)
parseCMediaNode / renderCMediaNode — <p:cMediaNode> shared by audio/video (cTn + tgtEl)
parseCmd / renderCmd — <p:cmd> (wraps cBhvr)
parseAttrNameLst / renderAttrNameLst — <p:attrNameLst> (list of <p:attrName> text values)
parseBld / renderBld — one <p:bldP>/<p:bldDgm>/<p:bldGraphic>/<p:bldOleChart>/<p:bldSub> build entry (tmplLst, bldAsOne, bldSub)
TIME_NODE_TAGS Set<string> tag names accepted as children of a time-node list
BLD_TAGS Set<string> tag names accepted as children of <p:bldLst>

Elements typed

timing, tnLst, cTn, par, seq, excl, iterate, tmAbs, tmPct, attrNameLst, attrName, cBhvr, set, anim, animClr, animEffect, animMotion, animRot, animScale, cmd, subTnLst, endSync, endCondLst, stCondLst, cond, tgtEl, spTgt, tn, tev.

Roundtrip example

pptx.use(pmlAnimations.factory(xml));
const r = pptx.read(bytes);
r.slides[0].timing.tnLst[0].cTn.dur; // '500'

Notes

  • The behaviour graph is sparse — most slides only set iterate / cTn.dur.
  • Trigger conditions are kept as typed nodes (cond.evt, cond.delay).

See also