pptx-react-viewer 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/dist/{AiChatPanel-VVTLQXQ5.js → AiChatPanel-7UQA25FA.js} +28 -28
- package/dist/AiChatPanel-7UQA25FA.js.br +0 -0
- package/dist/AiChatPanel-7UQA25FA.js.gz +0 -0
- package/dist/{AiChatPanel-SEIRQ3XP.mjs → AiChatPanel-UCEK3ZTD.mjs} +4 -4
- package/dist/AiChatPanel-UCEK3ZTD.mjs.br +0 -0
- package/dist/AiChatPanel-UCEK3ZTD.mjs.gz +0 -0
- package/dist/{Model3DScene-DCTVSK2F.mjs → Model3DScene-AI2JTBQM.mjs} +1 -1
- package/dist/Model3DScene-AI2JTBQM.mjs.br +0 -0
- package/dist/Model3DScene-AI2JTBQM.mjs.gz +0 -0
- package/dist/{Model3DScene-SCWQXMEA.js → Model3DScene-X3DS3ELB.js} +2 -2
- package/dist/Model3DScene-X3DS3ELB.js.br +0 -0
- package/dist/Model3DScene-X3DS3ELB.js.gz +0 -0
- package/dist/{chunk-VPJOJJ36.mjs → chunk-3UWJWJCR.mjs} +16274 -7901
- package/dist/chunk-3UWJWJCR.mjs.br +0 -0
- package/dist/chunk-3UWJWJCR.mjs.gz +0 -0
- package/dist/{chunk-KTSDPBQZ.js → chunk-42XEZVUQ.js} +1076 -1069
- package/dist/chunk-42XEZVUQ.js.br +0 -0
- package/dist/chunk-42XEZVUQ.js.gz +0 -0
- package/dist/{chunk-5MRNT4V6.js → chunk-E7O4HTS5.js} +195 -187
- package/dist/chunk-E7O4HTS5.js.br +0 -0
- package/dist/chunk-E7O4HTS5.js.gz +0 -0
- package/dist/{chunk-3WYNGYB6.js → chunk-KAO5USPE.js} +5 -5
- package/dist/chunk-KAO5USPE.js.br +0 -0
- package/dist/chunk-KAO5USPE.js.gz +0 -0
- package/dist/{chunk-PC7H3C5W.mjs → chunk-OBQ453H6.mjs} +2 -2
- package/dist/chunk-OBQ453H6.mjs.br +0 -0
- package/dist/chunk-OBQ453H6.mjs.gz +0 -0
- package/dist/{chunk-B5YZABYX.mjs → chunk-PLDG3CXW.mjs} +18 -10
- package/dist/chunk-PLDG3CXW.mjs.br +0 -0
- package/dist/chunk-PLDG3CXW.mjs.gz +0 -0
- package/dist/{chunk-ZYIJODUR.mjs → chunk-RXYLPESV.mjs} +17 -10
- package/dist/chunk-RXYLPESV.mjs.br +0 -0
- package/dist/chunk-RXYLPESV.mjs.gz +0 -0
- package/dist/{chunk-4GTDG2FH.mjs → chunk-SKTZSG7Q.mjs} +362 -157
- package/dist/chunk-SKTZSG7Q.mjs.br +0 -0
- package/dist/chunk-SKTZSG7Q.mjs.gz +0 -0
- package/dist/{chunk-S65QSO6T.js → chunk-UTI4CLYJ.js} +16291 -7909
- package/dist/chunk-UTI4CLYJ.js.br +0 -0
- package/dist/chunk-UTI4CLYJ.js.gz +0 -0
- package/dist/{chunk-NXGUR2DO.js → chunk-W5KLLGVH.js} +2 -2
- package/dist/chunk-W5KLLGVH.js.br +0 -0
- package/dist/chunk-W5KLLGVH.js.gz +0 -0
- package/dist/{chunk-P2SBIMYF.js → chunk-Y7LI2JIR.js} +1865 -1660
- package/dist/chunk-Y7LI2JIR.js.br +0 -0
- package/dist/chunk-Y7LI2JIR.js.gz +0 -0
- package/dist/{chunk-L4XBWL7J.mjs → chunk-YQJOCGOK.mjs} +1 -1
- package/dist/chunk-YQJOCGOK.mjs.br +0 -0
- package/dist/{chunk-L4XBWL7J.mjs.gz → chunk-YQJOCGOK.mjs.gz} +0 -0
- package/dist/i18n/de.cjs +2 -2
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +2 -2
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +2 -2
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +2 -2
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +2 -2
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +2 -2
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +2 -2
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +2 -2
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.br +0 -0
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +1 -1
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/index.d.ts +245 -4
- package/dist/index.js +49 -49
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +293 -4
- package/dist/internals.js +105 -105
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -4
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/viewer/index.d.ts +230 -2
- package/dist/viewer/index.js +27 -27
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +6 -6
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-SEIRQ3XP.mjs.br +0 -0
- package/dist/AiChatPanel-SEIRQ3XP.mjs.gz +0 -0
- package/dist/AiChatPanel-VVTLQXQ5.js.br +0 -0
- package/dist/AiChatPanel-VVTLQXQ5.js.gz +0 -0
- package/dist/Model3DScene-DCTVSK2F.mjs.br +0 -0
- package/dist/Model3DScene-DCTVSK2F.mjs.gz +0 -0
- package/dist/Model3DScene-SCWQXMEA.js.br +0 -0
- package/dist/Model3DScene-SCWQXMEA.js.gz +0 -0
- package/dist/chunk-3WYNGYB6.js.br +0 -0
- package/dist/chunk-3WYNGYB6.js.gz +0 -0
- package/dist/chunk-4GTDG2FH.mjs.br +0 -0
- package/dist/chunk-4GTDG2FH.mjs.gz +0 -0
- package/dist/chunk-5MRNT4V6.js.br +0 -0
- package/dist/chunk-5MRNT4V6.js.gz +0 -0
- package/dist/chunk-B5YZABYX.mjs.br +0 -0
- package/dist/chunk-B5YZABYX.mjs.gz +0 -0
- package/dist/chunk-KTSDPBQZ.js.br +0 -0
- package/dist/chunk-KTSDPBQZ.js.gz +0 -0
- package/dist/chunk-L4XBWL7J.mjs.br +0 -0
- package/dist/chunk-NXGUR2DO.js.br +0 -0
- package/dist/chunk-NXGUR2DO.js.gz +0 -0
- package/dist/chunk-P2SBIMYF.js.br +0 -0
- package/dist/chunk-P2SBIMYF.js.gz +0 -0
- package/dist/chunk-PC7H3C5W.mjs.br +0 -0
- package/dist/chunk-PC7H3C5W.mjs.gz +0 -0
- package/dist/chunk-S65QSO6T.js.br +0 -0
- package/dist/chunk-S65QSO6T.js.gz +0 -0
- package/dist/chunk-VPJOJJ36.mjs.br +0 -0
- package/dist/chunk-VPJOJJ36.mjs.gz +0 -0
- package/dist/chunk-ZYIJODUR.mjs.br +0 -0
- package/dist/chunk-ZYIJODUR.mjs.gz +0 -0
package/dist/internals.d.ts
CHANGED
|
@@ -1396,6 +1396,32 @@ interface TextStyle {
|
|
|
1396
1396
|
* @see element-paragraph-geometry.ts
|
|
1397
1397
|
*/
|
|
1398
1398
|
resolvedParagraphGeometry?: TextStyle;
|
|
1399
|
+
/**
|
|
1400
|
+
* Snapshot of the ELEMENT-scope `a:bodyPr` properties (vertical anchor,
|
|
1401
|
+
* text direction, columns, overflow, autofit, body insets, text wrap, and
|
|
1402
|
+
* the boolean/rotation attributes) as the load pipeline resolved them.
|
|
1403
|
+
*
|
|
1404
|
+
* A shape's own `a:bodyPr` is parsed first, then whatever it left
|
|
1405
|
+
* `undefined` is back-filled from the placeholder / layout / master
|
|
1406
|
+
* defaults (`applyPlaceholderBodyDefaults`), and a placeholder shape with
|
|
1407
|
+
* no `a:bodyPr` of its own has the INHERITED one parsed as if it were its
|
|
1408
|
+
* own. None of those three sources is distinguishable at
|
|
1409
|
+
* `element.textStyle` once the cascade finishes, so a writer that
|
|
1410
|
+
* re-emits every defined field turns an inherited anchor, inset, autofit
|
|
1411
|
+
* mode or `rtlCol` into a value pinned on the slide forever (and an
|
|
1412
|
+
* inherited `a:normAutofit` with no scale gets written back as
|
|
1413
|
+
* `a:spAutoFit`, flipping AutoSize from "shrink text" to "resize shape").
|
|
1414
|
+
*
|
|
1415
|
+
* Present only on an `element.textStyle` that came from a parsed deck.
|
|
1416
|
+
* The save path diffs the live style against this snapshot: a field that
|
|
1417
|
+
* still matches is an inheritance artefact and the writer leaves the
|
|
1418
|
+
* underlying `a:bodyPr` attribute untouched (whatever it already is,
|
|
1419
|
+
* present or absent); a field that differs was authored or has since
|
|
1420
|
+
* been edited and is written out.
|
|
1421
|
+
*
|
|
1422
|
+
* @see element-body-properties.ts
|
|
1423
|
+
*/
|
|
1424
|
+
resolvedBodyProperties?: TextStyle;
|
|
1399
1425
|
fontFamily?: string;
|
|
1400
1426
|
fontSize?: number;
|
|
1401
1427
|
/** When true, some form of autofit is in effect; see {@link autoFitMode} for which. */
|
|
@@ -1578,6 +1604,16 @@ interface TextStyle {
|
|
|
1578
1604
|
align: 'l' | 'ctr' | 'r' | 'dec';
|
|
1579
1605
|
leader?: 'none' | 'dot' | 'hyphen' | 'underscore';
|
|
1580
1606
|
}>;
|
|
1607
|
+
/**
|
|
1608
|
+
* True when the paragraph's own `a:pPr` authored an EMPTY `<a:tabLst/>`
|
|
1609
|
+
* (explicitly "no tab stops", overriding whatever the cascade would
|
|
1610
|
+
* otherwise supply) rather than omitting the element entirely (inherit).
|
|
1611
|
+
* fast-xml-parser gives a childless element as the empty string, so
|
|
1612
|
+
* `tabLst` and no-`tabLst` are otherwise indistinguishable once `tabStops`
|
|
1613
|
+
* comes back empty either way. Paragraph-scope only; not part of the
|
|
1614
|
+
* element-level geometry cascade.
|
|
1615
|
+
*/
|
|
1616
|
+
tabStopsExplicitEmpty?: boolean;
|
|
1581
1617
|
/** Body text wrapping mode from `a:bodyPr/@wrap`. */
|
|
1582
1618
|
textWrap?: 'square' | 'none';
|
|
1583
1619
|
/** Preset text warp type from `a:bodyPr/a:prstTxWarp`. */
|
|
@@ -1620,6 +1656,20 @@ interface TextStyle {
|
|
|
1620
1656
|
* serialised back on save, so it never disturbs the round-trip typefaces.
|
|
1621
1657
|
*/
|
|
1622
1658
|
scriptFallbackFont?: string;
|
|
1659
|
+
/**
|
|
1660
|
+
* Set alongside {@link scriptFallbackFont} when the resolved {@link fontFamily}
|
|
1661
|
+
* came only from the paragraph/list-style/theme CASCADE (the run's own
|
|
1662
|
+
* `a:rPr` authored no `a:latin`/`a:ea`/`a:cs` of its own). A run always
|
|
1663
|
+
* inherits SOME font this way (typically the theme's `+mn-lt`), so without
|
|
1664
|
+
* this flag `fontFamily` was indistinguishable from a run that genuinely
|
|
1665
|
+
* chose that font itself, and the renderer never applied the theme's
|
|
1666
|
+
* per-script override (see #83): `+mn-lt` names only the LATIN member of
|
|
1667
|
+
* the font scheme and was never meant to cover text in a different
|
|
1668
|
+
* dominant script. An explicit `a:latin`/`a:ea`/`a:cs` authored on the run
|
|
1669
|
+
* itself still always wins; only the cascade default yields to the
|
|
1670
|
+
* script-specific override.
|
|
1671
|
+
*/
|
|
1672
|
+
fontFamilyIsCascadeDefault?: boolean;
|
|
1623
1673
|
/** Text language from `a:rPr/@lang`. */
|
|
1624
1674
|
language?: string;
|
|
1625
1675
|
/** Hyperlink mouse-over target from `a:hlinkMouseOver`. */
|
|
@@ -1972,6 +2022,18 @@ interface BulletInfo {
|
|
|
1972
2022
|
/** When true, `<a:buSzTx/>` was specified — inherit the bullet size from
|
|
1973
2023
|
* the run text font size. */
|
|
1974
2024
|
sizeInherit?: boolean;
|
|
2025
|
+
/**
|
|
2026
|
+
* True when this bullet resolution came from the paragraph's OWN `a:pPr`
|
|
2027
|
+
* rather than the shape's `a:lstStyle`, an inherited placeholder, or the
|
|
2028
|
+
* master's `a:defPPr` / `p:txStyles`. `resolveParagraphBulletInfo` walks
|
|
2029
|
+
* that cascade and returns the first match, so without this flag a
|
|
2030
|
+
* writer that re-emits every resolved `BulletInfo` in full pins an
|
|
2031
|
+
* inherited bullet (e.g. a master `buFont="Arial"` / `buChar="•"`) onto
|
|
2032
|
+
* every paragraph's own `a:pPr` the moment the slide is rewritten. The
|
|
2033
|
+
* save path only writes the bullet group when this is `true`, mirroring
|
|
2034
|
+
* how `paragraphProperties` gates every other per-paragraph field.
|
|
2035
|
+
*/
|
|
2036
|
+
ownedByParagraph?: boolean;
|
|
1975
2037
|
}
|
|
1976
2038
|
/**
|
|
1977
2039
|
* A single text run within a paragraph.
|
|
@@ -2014,6 +2076,23 @@ interface TextSegment {
|
|
|
2014
2076
|
fieldParagraphPropertiesXml?: XmlObject;
|
|
2015
2077
|
/** Raw OMML XML node for equation segments (from `a14:m` / `m:oMathPara`). */
|
|
2016
2078
|
equationXml?: Record<string, unknown>;
|
|
2079
|
+
/**
|
|
2080
|
+
* The ORIGINAL top-level paragraph child that carried this equation,
|
|
2081
|
+
* captured verbatim at parse time and keyed by its own tag: `{ 'a14:m':
|
|
2082
|
+
* ... }`, `{ 'm:oMathPara': ... }`, `{ 'm:oMath': ... }`, or `{
|
|
2083
|
+
* 'mc:AlternateContent': ... }` for an equation authored behind a
|
|
2084
|
+
* Choice/Fallback switch. `equationXml` above is the resolved math content
|
|
2085
|
+
* used for rendering (unwrapped one level for `a14:m`/`mc:AlternateContent`
|
|
2086
|
+
* sources); this field exists solely so the writer can re-emit an UNTOUCHED
|
|
2087
|
+
* equation byte-for-byte, Choice and Fallback both, instead of collapsing
|
|
2088
|
+
* it to a bare math element PowerPoint's own writer never produces.
|
|
2089
|
+
* `undefined` for a freshly inserted or edited equation, which the writer
|
|
2090
|
+
* instead reconstructs from `equationXml` (always `{ 'm:oMathPara': ... }`
|
|
2091
|
+
* or `{ 'm:oMath': ... }` for those cases). Any code that replaces
|
|
2092
|
+
* `equationXml` on an existing segment must drop this field, or the writer
|
|
2093
|
+
* would keep re-emitting the equation's OLD XML instead of the edit.
|
|
2094
|
+
*/
|
|
2095
|
+
equationSourceXml?: Record<string, unknown>;
|
|
2017
2096
|
/**
|
|
2018
2097
|
* Optional equation number for numbered equations (e.g. "(1)", "(2.3)").
|
|
2019
2098
|
* When present, the equation is rendered centered with the number right-aligned.
|
|
@@ -2298,6 +2377,24 @@ interface PptxShapeProperties {
|
|
|
2298
2377
|
*/
|
|
2299
2378
|
interface PlaceholderTextLevelStyle {
|
|
2300
2379
|
fontFamily?: string;
|
|
2380
|
+
/**
|
|
2381
|
+
* The RAW `a:defRPr/a:latin/@typeface` string (verbatim: a theme alias
|
|
2382
|
+
* such as `+mj-lt`/`+mn-lt`, or a literal face name) {@link fontFamily}
|
|
2383
|
+
* was resolved from. Master/layout text styles are parsed once and
|
|
2384
|
+
* cached, so `fontFamily` is a resolved-for-display snapshot; re-emitting
|
|
2385
|
+
* it as the literal name on every save (the master-level analogue of
|
|
2386
|
+
* `colorChoiceXml` below) flattens the theme alias the moment ANYTHING
|
|
2387
|
+
* about the deck is rewritten, even when this level was never touched.
|
|
2388
|
+
* Absent when the level declares no `a:latin`.
|
|
2389
|
+
*/
|
|
2390
|
+
fontTypefaceXml?: string;
|
|
2391
|
+
/**
|
|
2392
|
+
* Snapshot of {@link fontFamily} exactly as parsed, before any edit. The
|
|
2393
|
+
* save path diffs the live value against this: unchanged means re-emit
|
|
2394
|
+
* {@link fontTypefaceXml} verbatim (preserve the alias); different means
|
|
2395
|
+
* a genuine edit, so the new literal name is written instead.
|
|
2396
|
+
*/
|
|
2397
|
+
resolvedFontFamily?: string;
|
|
2301
2398
|
fontSize?: number;
|
|
2302
2399
|
bold?: boolean;
|
|
2303
2400
|
italic?: boolean;
|
|
@@ -2347,8 +2444,32 @@ interface PlaceholderTextLevelStyle {
|
|
|
2347
2444
|
tabStops?: TextStyle['tabStops'];
|
|
2348
2445
|
lineSpacing?: number;
|
|
2349
2446
|
lineSpacingExactPt?: number;
|
|
2447
|
+
/**
|
|
2448
|
+
* Space before the paragraph in px, resolved from EITHER `a:spcPts`
|
|
2449
|
+
* (absolute) or `a:spcPct` (a percentage of this level's own `a:defRPr`
|
|
2450
|
+
* font size) - the OOXML source is not distinguishable from this field
|
|
2451
|
+
* alone. See {@link spaceBeforePercent} / {@link resolvedSpaceBefore}.
|
|
2452
|
+
*/
|
|
2350
2453
|
spaceBefore?: number;
|
|
2351
2454
|
spaceAfter?: number;
|
|
2455
|
+
/**
|
|
2456
|
+
* Snapshot of {@link spaceBefore} / {@link spaceAfter} exactly as parsed.
|
|
2457
|
+
* Diffed the same way as {@link resolvedFontFamily}: unchanged means the
|
|
2458
|
+
* writer re-emits the ORIGINAL form (`a:spcPct` when
|
|
2459
|
+
* {@link spaceBeforePercent} / {@link spaceAfterPercent} is set); a value
|
|
2460
|
+
* that has since moved away from the snapshot is a genuine edit and is
|
|
2461
|
+
* always written as `a:spcPts`, since an editor works in absolute units.
|
|
2462
|
+
*/
|
|
2463
|
+
resolvedSpaceBefore?: number;
|
|
2464
|
+
resolvedSpaceAfter?: number;
|
|
2465
|
+
/**
|
|
2466
|
+
* The raw `a:spcPct` fraction (e.g. `0.2` for 20%) {@link spaceBefore} /
|
|
2467
|
+
* {@link spaceAfter} was resolved from, when the source used percentage
|
|
2468
|
+
* spacing rather than `a:spcPts`. Absent when the source used `a:spcPts`
|
|
2469
|
+
* (or authored no spacing at all).
|
|
2470
|
+
*/
|
|
2471
|
+
spaceBeforePercent?: number;
|
|
2472
|
+
spaceAfterPercent?: number;
|
|
2352
2473
|
/** Default tab interval in CSS pixels (`a:lvlXpPr/@defTabSz`). */
|
|
2353
2474
|
defaultTabSize?: number;
|
|
2354
2475
|
/** Whether East Asian line-breaking rules are enabled. */
|
|
@@ -5081,6 +5202,18 @@ interface PptxSmartArtLayoutDefinition {
|
|
|
5081
5202
|
rootNode: PptxSmartArtLayoutNode;
|
|
5082
5203
|
/** Original definition retained for constraint evaluation and foreign rules. */
|
|
5083
5204
|
rawXml?: XmlObject;
|
|
5205
|
+
/**
|
|
5206
|
+
* The un-parsed layout-definition part text (starting at `<dgm:layoutDef>`,
|
|
5207
|
+
* XML declaration included). `rawXml` above loses the document order of
|
|
5208
|
+
* differently-named siblings (the package-wide `fast-xml-parser`
|
|
5209
|
+
* configuration groups children into one array per tag), which the
|
|
5210
|
+
* per-point DiagramML engine (`core/utils/smartart-engine/`) needs to
|
|
5211
|
+
* execute a `layoutNode` body's `forEach`/`choose`/`constrLst` statements
|
|
5212
|
+
* in their real declared sequence - see that package's `ordered-xml.ts`.
|
|
5213
|
+
* `undefined` when the part could not be read (matches `rawXml`'s own
|
|
5214
|
+
* optionality); the engine falls back to the legacy interpreter then.
|
|
5215
|
+
*/
|
|
5216
|
+
rawXmlText?: string;
|
|
5084
5217
|
}
|
|
5085
5218
|
//#endregion
|
|
5086
5219
|
//#region src/core/types/smart-art-node.d.ts
|
|
@@ -6193,6 +6326,20 @@ interface PptxTableData {
|
|
|
6193
6326
|
* present when there is at least one effect.
|
|
6194
6327
|
*/
|
|
6195
6328
|
tableEffects?: ParsedTableStyleEffect[];
|
|
6329
|
+
/**
|
|
6330
|
+
* Table-cell-context default text size in points, resolved from the
|
|
6331
|
+
* slide's master `p:otherStyle` (ECMA-376 §19.3.1.42 CT_TextListStyle,
|
|
6332
|
+
* §19.3.1.52 for `p:txStyles`). PowerPoint sizes a table cell's text off
|
|
6333
|
+
* this master default (commonly 18pt) whenever neither the run nor the
|
|
6334
|
+
* (size-less) table style provides one; without it, cell text without an
|
|
6335
|
+
* explicit `a:rPr@sz` fell back to the browser's own default font size
|
|
6336
|
+
* (16px / 12pt) instead. A render-only hint: it is not part of any
|
|
6337
|
+
* individual cell's parsed style and is never written back on save, so
|
|
6338
|
+
* resaving an unstyled cell does not bake in an explicit size that was
|
|
6339
|
+
* never authored. `undefined` when no master/otherStyle size resolves
|
|
6340
|
+
* (renderers should leave the browser default in place in that case).
|
|
6341
|
+
*/
|
|
6342
|
+
defaultCellFontSize?: number;
|
|
6196
6343
|
}
|
|
6197
6344
|
/**
|
|
6198
6345
|
* A single fill reference within a table style section.
|
|
@@ -6218,6 +6365,14 @@ interface ParsedTableStyleFill {
|
|
|
6218
6365
|
tint?: number;
|
|
6219
6366
|
/** Shade value (0-100 000). */
|
|
6220
6367
|
shade?: number;
|
|
6368
|
+
/**
|
|
6369
|
+
* Alpha (opacity) value (0-100 000, where 100 000 is fully opaque) from an
|
|
6370
|
+
* `a:alpha` child of `a:schemeClr`/`a:srgbClr`. Several built-in table
|
|
6371
|
+
* styles (e.g. "Light Style 1/3", "Themed Style 1/2") band their rows with
|
|
6372
|
+
* a partially transparent tint of the theme colour rather than a tint/shade
|
|
6373
|
+
* blend.
|
|
6374
|
+
*/
|
|
6375
|
+
alpha?: number;
|
|
6221
6376
|
/** Explicit sRGB hex colour (e.g. `#FF8800`) from `a:srgbClr`. */
|
|
6222
6377
|
color?: string;
|
|
6223
6378
|
/** The fill was `a:noFill`: renders transparent and clears lower layers. */
|
|
@@ -7053,6 +7208,20 @@ interface ContentPartInkStroke {
|
|
|
7053
7208
|
* NAMES differ.
|
|
7054
7209
|
*/
|
|
7055
7210
|
tiltEncoding?: 'vector' | 'azimuthAltitude';
|
|
7211
|
+
/**
|
|
7212
|
+
* Per-point timestamps (milliseconds), decoded from the source InkML
|
|
7213
|
+
* trace's `T` channel when it declared one.
|
|
7214
|
+
*
|
|
7215
|
+
* Absent for the overwhelming majority of real decks: PowerPoint's own
|
|
7216
|
+
* SaveAs output declares only `X`/`Y` and has no per-point time channel at
|
|
7217
|
+
* all (see `contentpart-real-ink-roundtrip.test.ts`'s fixture), so this is
|
|
7218
|
+
* populated only for InkML sources that genuinely author one (a captured
|
|
7219
|
+
* digitizer session, OneNote, a Surface Hub export). When present, ink
|
|
7220
|
+
* replay ("watch the ink get drawn") uses each stroke's own first/last
|
|
7221
|
+
* timestamp to time its reveal instead of the fixed per-stroke cascade; see
|
|
7222
|
+
* `pptx-viewer-shared`'s `render/ink-replay-timeline.ts`.
|
|
7223
|
+
*/
|
|
7224
|
+
pointTimestamps?: number[];
|
|
7056
7225
|
}
|
|
7057
7226
|
/**
|
|
7058
7227
|
* A content-part element wrapped in `mc:AlternateContent`.
|
|
@@ -7097,6 +7266,28 @@ interface ZoomPptxElement extends PptxElementBase, PptxImageProperties {
|
|
|
7097
7266
|
summaryTargets?: SummaryZoomTarget[];
|
|
7098
7267
|
/** Layout mode authored on the Summary Zoom container. */
|
|
7099
7268
|
summaryLayout?: 'grid' | 'fixed';
|
|
7269
|
+
/**
|
|
7270
|
+
* `zmPr/@returnToParent` (MS-PPTX `CT_ZoomObjectProperties`, shared by all
|
|
7271
|
+
* three Zoom kinds): whether continuing forward from the destination slide
|
|
7272
|
+
* during a live show returns to this Zoom's origin slide instead of
|
|
7273
|
+
* advancing linearly through the deck. OOXML default is `true` when the
|
|
7274
|
+
* attribute is present but this codebase leaves it `undefined` when the
|
|
7275
|
+
* source XML omits it, so a round-trip never fabricates the attribute.
|
|
7276
|
+
* For `zoomType: 'summary'`, this mirrors the first tile's own value; see
|
|
7277
|
+
* {@link SummaryZoomTarget.returnToParent} for the per-tile value.
|
|
7278
|
+
*/
|
|
7279
|
+
returnToParent?: boolean;
|
|
7280
|
+
/**
|
|
7281
|
+
* `zmPr/@transitionDur` (MS-PPTX `CT_ZoomObjectProperties`): the
|
|
7282
|
+
* zoom-transition length in milliseconds. PowerPoint's own writer emits a
|
|
7283
|
+
* unitless decimal-millisecond value for every OOXML `ST_UniversalTimeOffset`
|
|
7284
|
+
* this codebase has observed (see the media-trim/-fade parsers), so this
|
|
7285
|
+
* follows the same convention rather than the full TIMEOFFSET grammar's
|
|
7286
|
+
* unit suffixes. Undefined uses the destination slide's own transition.
|
|
7287
|
+
* For `zoomType: 'summary'`, this mirrors the first tile's own value; see
|
|
7288
|
+
* {@link SummaryZoomTarget.transitionDurationMs} for the per-tile value.
|
|
7289
|
+
*/
|
|
7290
|
+
transitionDurationMs?: number;
|
|
7100
7291
|
}
|
|
7101
7292
|
/** A single section tile within a PowerPoint Summary Zoom container. */
|
|
7102
7293
|
interface SummaryZoomTarget extends PptxImageProperties {
|
|
@@ -7112,6 +7303,10 @@ interface SummaryZoomTarget extends PptxImageProperties {
|
|
|
7112
7303
|
offsetFactorY?: number;
|
|
7113
7304
|
scaleFactorX?: number;
|
|
7114
7305
|
scaleFactorY?: number;
|
|
7306
|
+
/** This tile's own `zmPr/@returnToParent`; see {@link ZoomPptxElement.returnToParent}. */
|
|
7307
|
+
returnToParent?: boolean;
|
|
7308
|
+
/** This tile's own `zmPr/@transitionDur` in milliseconds; see {@link ZoomPptxElement.transitionDurationMs}. */
|
|
7309
|
+
transitionDurationMs?: number;
|
|
7115
7310
|
rawXml?: XmlObject;
|
|
7116
7311
|
}
|
|
7117
7312
|
/**
|
|
@@ -8112,6 +8307,17 @@ interface PptxAttributeAnimation {
|
|
|
8112
8307
|
* IS consulted regardless of this field's value. Absent means `lin`.
|
|
8113
8308
|
*/
|
|
8114
8309
|
calcMode?: 'discrete' | 'lin' | 'fmla';
|
|
8310
|
+
/**
|
|
8311
|
+
* `p:anim/@_p14:bounceEnd` (Office 2010 `p14` extension attribute,
|
|
8312
|
+
* MS-OI29500), normalized to a 0-1 fraction of this behaviour's own
|
|
8313
|
+
* duration. PowerPoint's Fly In "Bounce End" effect option writes this on
|
|
8314
|
+
* the position-ramp `p:anim` node(s): the fraction of the duration at
|
|
8315
|
+
* which the primary travel completes, with the remainder spent bouncing
|
|
8316
|
+
* and settling at the final value. Mirrored verbatim by PowerPoint onto
|
|
8317
|
+
* the enclosing `p:cTn/@_p14:presetBounceEnd`. Absent for every animation
|
|
8318
|
+
* that doesn't use this effect option (the overwhelming majority).
|
|
8319
|
+
*/
|
|
8320
|
+
bounceEnd?: number;
|
|
8115
8321
|
}
|
|
8116
8322
|
/** Signed HSL channel deltas parsed from `p:animClr/p:by/p:hsl`. */
|
|
8117
8323
|
interface PptxHslColorDelta {
|
|
@@ -8193,7 +8399,19 @@ interface PptxTextAnimationTarget {
|
|
|
8193
8399
|
* These map directly to OOXML condition event attribute values
|
|
8194
8400
|
* (ISO/IEC 29500-1 S19.5.28 CT_TLTimeCondition).
|
|
8195
8401
|
*/
|
|
8196
|
-
type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick' | 'onMouseOver' | 'onMouseOut' | 'onNext' | 'onPrev' | 'onStopAudio' | 'onDblClick';
|
|
8402
|
+
type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick' | 'onMouseOver' | 'onMouseOut' | 'onNext' | 'onPrev' | 'onStopAudio' | 'onDblClick' | 'onMediaBookmark';
|
|
8403
|
+
/**
|
|
8404
|
+
* `p14:bmkTgt` (Office 2010 `p14` extension, MS-OI29500): names the specific
|
|
8405
|
+
* media element and bookmark an `evt="onMediaBookmark"` condition fires for.
|
|
8406
|
+
* `bookmarkName` matches a `p14:bmk/@_name` on that media element's own
|
|
8407
|
+
* `p14:bmkLst` (see `MediaBookmark.label` in `core/types/elements.ts`).
|
|
8408
|
+
*/
|
|
8409
|
+
interface PptxMediaBookmarkTarget {
|
|
8410
|
+
/** `p14:bmkTgt/@_spid`: the media element's shape id. */
|
|
8411
|
+
shapeId: string;
|
|
8412
|
+
/** `p14:bmkTgt/@_bmkName`: the bookmark's name. */
|
|
8413
|
+
bookmarkName: string;
|
|
8414
|
+
}
|
|
8197
8415
|
/**
|
|
8198
8416
|
* Structured representation of a single OOXML animation condition
|
|
8199
8417
|
* from `p:cond` elements inside `p:stCondLst` or `p:endCondLst`.
|
|
@@ -8213,6 +8431,11 @@ type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick'
|
|
|
8213
8431
|
interface AnimationCondition {
|
|
8214
8432
|
/** Event that triggers the condition. */
|
|
8215
8433
|
event?: AnimationConditionEvent;
|
|
8434
|
+
/**
|
|
8435
|
+
* The media element/bookmark this condition fires for, when
|
|
8436
|
+
* {@link event} is `onMediaBookmark`. See {@link PptxMediaBookmarkTarget}.
|
|
8437
|
+
*/
|
|
8438
|
+
bookmarkTarget?: PptxMediaBookmarkTarget;
|
|
8216
8439
|
/** Delay in milliseconds (from `@_delay`). "indefinite" is represented as -1. */
|
|
8217
8440
|
delay?: number;
|
|
8218
8441
|
/** Target time node ID reference (from `@_tn`). */
|
|
@@ -9531,7 +9754,12 @@ interface PptxHeaderFooter {
|
|
|
9531
9754
|
hasDateTime?: boolean;
|
|
9532
9755
|
dateTimeText?: string;
|
|
9533
9756
|
dateTimeAuto?: boolean;
|
|
9534
|
-
/**
|
|
9757
|
+
/**
|
|
9758
|
+
* The master date placeholder's own `a:fld/@type` (e.g. "datetime2"), NOT a
|
|
9759
|
+
* format pattern. It is one of the predefined OOXML datetime field types
|
|
9760
|
+
* (`datetime1`-`datetime13`); the display pattern for each is resolved by
|
|
9761
|
+
* `resolveFieldDateText` in `packages/shared/src/render/text-field-substitution.ts`.
|
|
9762
|
+
*/
|
|
9535
9763
|
dateFormat?: string;
|
|
9536
9764
|
hasSlideNumber?: boolean;
|
|
9537
9765
|
}
|
|
@@ -12308,13 +12536,21 @@ type InlineListReadResult = {
|
|
|
12308
12536
|
* Pure string logic: resolves OOXML field runs (slide number, date/time,
|
|
12309
12537
|
* header/footer, document properties, slide title) into their display text.
|
|
12310
12538
|
* Extracted from the React `viewer/utils/text-field-substitution` module so
|
|
12311
|
-
* every binding substitutes identically.
|
|
12539
|
+
* every binding substitutes identically. The locale-aware datetime engine
|
|
12540
|
+
* lives in `text-field-datetime.ts`.
|
|
12312
12541
|
*/
|
|
12313
12542
|
/** Context for substituting field placeholders (slide number, date/time, header/footer, etc.). */
|
|
12314
12543
|
interface FieldSubstitutionContext {
|
|
12315
12544
|
slideNumber?: number;
|
|
12316
12545
|
dateTimeText?: string;
|
|
12317
|
-
/**
|
|
12546
|
+
/**
|
|
12547
|
+
* The deck's master date-field default TYPE (`a:fld/@type` on the slide
|
|
12548
|
+
* master's `dt` placeholder, e.g. "datetime2"; see `header-footer-parts.ts`).
|
|
12549
|
+
* This is a field TYPE, not a format pattern, and is used ONLY as a
|
|
12550
|
+
* fallback for a field authored with the generic, unnumbered `datetime`
|
|
12551
|
+
* type - a field that already names its own `datetime1`-`datetime13` type
|
|
12552
|
+
* always uses that type, never this one (see `substituteFieldText`).
|
|
12553
|
+
*/
|
|
12318
12554
|
dateFormat?: string;
|
|
12319
12555
|
/** Footer text from PptxHeaderFooter settings. */
|
|
12320
12556
|
footerText?: string;
|
|
@@ -13938,6 +14174,11 @@ interface ToolbarProps {
|
|
|
13938
14174
|
onOpenSettings?: () => void;
|
|
13939
14175
|
onRunAccessibilityCheck: () => void;
|
|
13940
14176
|
onToggleSlideSorter: () => void;
|
|
14177
|
+
/**
|
|
14178
|
+
* View > Normal: leave whichever alternate view (slide sorter, reading,
|
|
14179
|
+
* outline, master) is open and return to the ordinary editing canvas.
|
|
14180
|
+
*/
|
|
14181
|
+
onGoToNormalView?: () => void;
|
|
13941
14182
|
/** Enter PowerPoint's Reading View (full window, not the fullscreen show). */
|
|
13942
14183
|
onOpenReadingView: () => void;
|
|
13943
14184
|
/** Enter PowerPoint's Outline view: the deck as editable indented text. */
|
|
@@ -15413,6 +15654,18 @@ interface EditorOperationsResult {
|
|
|
15413
15654
|
manipulation: ElementManipulationHandlers;
|
|
15414
15655
|
slideOps: SlideManagementHandlers;
|
|
15415
15656
|
tableOps: TableOperationHandlers;
|
|
15657
|
+
/**
|
|
15658
|
+
* Ctrl/Cmd+Shift+C: copy the selected element's format, the same capture
|
|
15659
|
+
* the format-painter ribbon toggle triggers, without requiring a
|
|
15660
|
+
* follow-up click to apply it.
|
|
15661
|
+
*/
|
|
15662
|
+
copyFormatFromSelection: () => void;
|
|
15663
|
+
/**
|
|
15664
|
+
* Ctrl/Cmd+Shift+V: apply whatever format `copyFormatFromSelection` (or the
|
|
15665
|
+
* ribbon's format painter) captured onto every given element id, then
|
|
15666
|
+
* clear the copied format the same way the click-to-apply path does.
|
|
15667
|
+
*/
|
|
15668
|
+
pasteFormatToSelection: (targetIds: string[]) => void;
|
|
15416
15669
|
}
|
|
15417
15670
|
declare function useEditorOperations(input: UseEditorOperationsInput): EditorOperationsResult;
|
|
15418
15671
|
//#endregion
|
|
@@ -16957,6 +17210,14 @@ interface UseKeyboardShortcutWiringInput {
|
|
|
16957
17210
|
* apply the same way they do for the button).
|
|
16958
17211
|
*/
|
|
16959
17212
|
onSetMode: (mode: ViewerMode) => void;
|
|
17213
|
+
/** Ctrl/Cmd+M: the same entry point the ribbon's "New Slide" button uses. */
|
|
17214
|
+
handleAddSlide: () => void;
|
|
17215
|
+
/** Ctrl/Cmd+K: open the hyperlink dialog for the current selection. */
|
|
17216
|
+
onOpenHyperlinkDialog: () => void;
|
|
17217
|
+
/** Ctrl/Cmd+Shift+C: capture the current selection's format for the format painter. */
|
|
17218
|
+
copyFormatFromSelection: () => void;
|
|
17219
|
+
/** Ctrl/Cmd+Shift+V: apply the copied format to the given element ids. */
|
|
17220
|
+
pasteFormatToSelection: (targetIds: string[]) => void;
|
|
16960
17221
|
}
|
|
16961
17222
|
declare function useKeyboardShortcutWiring(input: UseKeyboardShortcutWiringInput): void;
|
|
16962
17223
|
//#endregion
|
|
@@ -17468,6 +17729,34 @@ interface UseKeyboardShortcutsInput {
|
|
|
17468
17729
|
onStartShowFromBeginning: () => void;
|
|
17469
17730
|
/** `Shift+F5`: start the show on the current slide. Same entry point as the ribbon's "From Current Slide". */
|
|
17470
17731
|
onStartShowFromCurrent: () => void;
|
|
17732
|
+
/** Ctrl/Cmd+L: set paragraph alignment to left. */
|
|
17733
|
+
onAlignLeft?: () => void;
|
|
17734
|
+
/** Ctrl/Cmd+E: set paragraph alignment to center. */
|
|
17735
|
+
onAlignCenter?: () => void;
|
|
17736
|
+
/** Ctrl/Cmd+R: set paragraph alignment to right. */
|
|
17737
|
+
onAlignRight?: () => void;
|
|
17738
|
+
/** Ctrl/Cmd+J: set paragraph alignment to justify. */
|
|
17739
|
+
onAlignJustify?: () => void;
|
|
17740
|
+
/** Ctrl/Cmd+Shift+> or Ctrl/Cmd+]: step the selection's font size up PowerPoint's size ladder. */
|
|
17741
|
+
onIncreaseFontSize?: () => void;
|
|
17742
|
+
/** Ctrl/Cmd+Shift+< or Ctrl/Cmd+[: step the selection's font size down PowerPoint's size ladder. */
|
|
17743
|
+
onDecreaseFontSize?: () => void;
|
|
17744
|
+
/** Ctrl/Cmd+Shift+C: copy the selection's formatting (format painter). */
|
|
17745
|
+
onCopyFormat?: () => void;
|
|
17746
|
+
/** Ctrl/Cmd+Shift+V: apply the copied formatting to the selection. */
|
|
17747
|
+
onPasteFormat?: () => void;
|
|
17748
|
+
/** Ctrl/Cmd+M: insert a new slide. */
|
|
17749
|
+
onNewSlide?: () => void;
|
|
17750
|
+
/** Ctrl/Cmd+K: open the hyperlink dialog. */
|
|
17751
|
+
onHyperlink?: () => void;
|
|
17752
|
+
/** Ctrl/Cmd+H: open Find and Replace. */
|
|
17753
|
+
onFindReplace?: () => void;
|
|
17754
|
+
/** Ctrl/Cmd+Space: clear character formatting on the selection. */
|
|
17755
|
+
onClearFormatting?: () => void;
|
|
17756
|
+
/** Tab: select the next element on the slide. */
|
|
17757
|
+
onCycleSelectionNext?: () => void;
|
|
17758
|
+
/** Shift+Tab: select the previous element on the slide. */
|
|
17759
|
+
onCycleSelectionPrev?: () => void;
|
|
17471
17760
|
}
|
|
17472
17761
|
declare function useKeyboardShortcuts(input: UseKeyboardShortcutsInput): void;
|
|
17473
17762
|
//#endregion
|