pptx-react-viewer 4.2.0 → 4.4.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 +138 -0
- package/dist/{AiChatPanel-SEIRQ3XP.mjs → AiChatPanel-QJHUDIWT.mjs} +4 -4
- package/dist/AiChatPanel-QJHUDIWT.mjs.br +0 -0
- package/dist/AiChatPanel-QJHUDIWT.mjs.gz +0 -0
- package/dist/{AiChatPanel-VVTLQXQ5.js → AiChatPanel-UFMSTNCB.js} +28 -28
- package/dist/AiChatPanel-UFMSTNCB.js.br +0 -0
- package/dist/AiChatPanel-UFMSTNCB.js.gz +0 -0
- package/dist/{Model3DScene-DCTVSK2F.mjs → Model3DScene-3GOC5HUS.mjs} +1 -1
- package/dist/Model3DScene-3GOC5HUS.mjs.br +0 -0
- package/dist/Model3DScene-3GOC5HUS.mjs.gz +0 -0
- package/dist/{Model3DScene-SCWQXMEA.js → Model3DScene-KXNJBAQD.js} +2 -2
- package/dist/Model3DScene-KXNJBAQD.js.br +0 -0
- package/dist/Model3DScene-KXNJBAQD.js.gz +0 -0
- package/dist/{chunk-S65QSO6T.js → chunk-7WWINBGF.js} +17172 -8075
- package/dist/chunk-7WWINBGF.js.br +0 -0
- package/dist/chunk-7WWINBGF.js.gz +0 -0
- package/dist/{chunk-KTSDPBQZ.js → chunk-AI6K5EAE.js} +1270 -1079
- package/dist/chunk-AI6K5EAE.js.br +0 -0
- package/dist/chunk-AI6K5EAE.js.gz +0 -0
- package/dist/{chunk-3WYNGYB6.js → chunk-CSY422LU.js} +5 -5
- package/dist/chunk-CSY422LU.js.br +0 -0
- package/dist/chunk-CSY422LU.js.gz +0 -0
- package/dist/{chunk-VPJOJJ36.mjs → chunk-D3TZOCQP.mjs} +17139 -8067
- package/dist/chunk-D3TZOCQP.mjs.br +0 -0
- package/dist/chunk-D3TZOCQP.mjs.gz +0 -0
- package/dist/{chunk-NXGUR2DO.js → chunk-I4D6JQOI.js} +27 -2
- package/dist/chunk-I4D6JQOI.js.br +0 -0
- package/dist/chunk-I4D6JQOI.js.gz +0 -0
- package/dist/{chunk-PC7H3C5W.mjs → chunk-JQXN6PO7.mjs} +27 -2
- package/dist/chunk-JQXN6PO7.mjs.br +0 -0
- package/dist/chunk-JQXN6PO7.mjs.gz +0 -0
- package/dist/{chunk-ZYIJODUR.mjs → chunk-LUHUYBGW.mjs} +211 -20
- package/dist/chunk-LUHUYBGW.mjs.br +0 -0
- package/dist/chunk-LUHUYBGW.mjs.gz +0 -0
- package/dist/{chunk-5MRNT4V6.js → chunk-OWTHF5N4.js} +209 -187
- package/dist/chunk-OWTHF5N4.js.br +0 -0
- package/dist/chunk-OWTHF5N4.js.gz +0 -0
- package/dist/{chunk-4GTDG2FH.mjs → chunk-WCHKDZP6.mjs} +660 -197
- package/dist/chunk-WCHKDZP6.mjs.br +0 -0
- package/dist/chunk-WCHKDZP6.mjs.gz +0 -0
- package/dist/{chunk-B5YZABYX.mjs → chunk-WNFHFFYE.mjs} +32 -10
- package/dist/chunk-WNFHFFYE.mjs.br +0 -0
- package/dist/chunk-WNFHFFYE.mjs.gz +0 -0
- package/dist/{chunk-L4XBWL7J.mjs → chunk-XMKLY2SE.mjs} +1 -1
- package/dist/chunk-XMKLY2SE.mjs.br +0 -0
- package/dist/chunk-XMKLY2SE.mjs.gz +0 -0
- package/dist/{chunk-P2SBIMYF.js → chunk-YJKR7Z3X.js} +2161 -1698
- package/dist/chunk-YJKR7Z3X.js.br +0 -0
- package/dist/chunk-YJKR7Z3X.js.gz +0 -0
- package/dist/i18n/de.cjs +25 -2
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +25 -2
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +25 -2
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +25 -2
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +25 -2
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +25 -2
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +25 -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 +25 -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 +311 -6
- 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 +461 -42
- 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/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/viewer/index.d.ts +274 -4
- 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-L4XBWL7J.mjs.gz +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/i18n/zh-CN.mjs
CHANGED
|
@@ -364,7 +364,7 @@ var translations4 = {
|
|
|
364
364
|
"pptx.animation.catalogPreset.entr27": "\u5B57\u5E55\u5F0F",
|
|
365
365
|
"pptx.animation.catalogPreset.entr28": "\u6D6E\u8D77",
|
|
366
366
|
"pptx.animation.catalogPreset.entr29": "\u98CE\u8F66",
|
|
367
|
-
"pptx.animation.catalogPreset.entr30": "\
|
|
367
|
+
"pptx.animation.catalogPreset.entr30": "\u6D6E\u5165",
|
|
368
368
|
"pptx.animation.catalogPreset.entr31": "\u6269\u5C55",
|
|
369
369
|
"pptx.animation.catalogPreset.entr32": "\u97AD\u6253",
|
|
370
370
|
"pptx.animation.catalogPreset.entr33": "\u5230\u8FBE",
|
|
@@ -432,7 +432,7 @@ var translations4 = {
|
|
|
432
432
|
"pptx.animation.catalogPreset.exit27": "\u5B57\u5E55\u5F0F",
|
|
433
433
|
"pptx.animation.catalogPreset.exit28": "\u5411\u4E0B\u6D6E\u52A8",
|
|
434
434
|
"pptx.animation.catalogPreset.exit29": "\u98CE\u8F66",
|
|
435
|
-
"pptx.animation.catalogPreset.exit30": "\
|
|
435
|
+
"pptx.animation.catalogPreset.exit30": "\u6D6E\u51FA",
|
|
436
436
|
"pptx.animation.catalogPreset.exit31": "\u6536\u62E2",
|
|
437
437
|
"pptx.animation.catalogPreset.exit32": "\u97AD\u6253",
|
|
438
438
|
"pptx.animation.catalogPreset.exit33": "\u79BB\u53BB",
|
|
@@ -1737,6 +1737,11 @@ var translations14 = {
|
|
|
1737
1737
|
"pptx.compare.noDifferences": "\u6CA1\u6709\u5DEE\u5F02",
|
|
1738
1738
|
"pptx.compare.summary": "\u6DFB\u52A0\u4E86 {{added}}\uFF0C\u5220\u9664\u4E86 {{removed}}\uFF0C\u66F4\u6539\u4E86 {{changed}}",
|
|
1739
1739
|
"pptx.compare.title": "\u6BD4\u8F83",
|
|
1740
|
+
"pptx.canvasContextMenu.formatBackground": "\u8BBE\u7F6E\u80CC\u666F\u683C\u5F0F...",
|
|
1741
|
+
"pptx.canvasContextMenu.gridAndGuides": "\u7F51\u683C\u548C\u53C2\u8003\u7EBF",
|
|
1742
|
+
"pptx.canvasContextMenu.layout": "\u7248\u5F0F",
|
|
1743
|
+
"pptx.canvasContextMenu.resetSlide": "\u91CD\u7F6E\u5E7B\u706F\u7247",
|
|
1744
|
+
"pptx.canvasContextMenu.ruler": "\u6807\u5C3A",
|
|
1740
1745
|
"pptx.contextMenu.addComment": "\u6DFB\u52A0\u6279\u6CE8",
|
|
1741
1746
|
"pptx.contextMenu.bringForward": "\u4E0A\u79FB\u4E00\u5C42",
|
|
1742
1747
|
"pptx.contextMenu.bringToFront": "\u7F6E\u4E8E\u9876\u5C42",
|
|
@@ -1746,7 +1751,10 @@ var translations14 = {
|
|
|
1746
1751
|
"pptx.contextMenu.deleteColumn": "\u5220\u9664\u5217",
|
|
1747
1752
|
"pptx.contextMenu.deleteRow": "\u5220\u9664\u884C",
|
|
1748
1753
|
"pptx.contextMenu.duplicate": "\u590D\u5236",
|
|
1754
|
+
"pptx.contextMenu.editAltText": "\u7F16\u8F91\u66FF\u6362\u6587\u5B57...",
|
|
1749
1755
|
"pptx.contextMenu.editHyperlink": "\u7F16\u8F91\u8D85\u94FE\u63A5",
|
|
1756
|
+
"pptx.contextMenu.editText": "\u7F16\u8F91\u6587\u5B57",
|
|
1757
|
+
"pptx.contextMenu.formatShape": "\u8BBE\u7F6E\u5F62\u72B6\u683C\u5F0F...",
|
|
1750
1758
|
"pptx.contextMenu.group": "\u7EC4\u5408",
|
|
1751
1759
|
"pptx.contextMenu.insertColumnLeft": "\u5411\u5DE6\u63D2\u5165\u5217",
|
|
1752
1760
|
"pptx.contextMenu.insertColumnRight": "\u5728\u53F3\u4FA7\u63D2\u5165\u5217",
|
|
@@ -1755,10 +1763,18 @@ var translations14 = {
|
|
|
1755
1763
|
"pptx.contextMenu.mergeCells": "\u5411\u53F3\u5408\u5E76",
|
|
1756
1764
|
"pptx.contextMenu.mergeSelectedCells": "\u5408\u5E76\u9009\u5B9A\u7684\u5355\u5143\u683C",
|
|
1757
1765
|
"pptx.contextMenu.paste": "\u7C98\u8D34",
|
|
1766
|
+
"pptx.contextMenu.saveAsPicture": "\u53E6\u5B58\u4E3A\u56FE\u7247...",
|
|
1758
1767
|
"pptx.contextMenu.sendBackward": "\u4E0B\u79FB\u4E00\u5C42",
|
|
1759
1768
|
"pptx.contextMenu.sendToBack": "\u7F6E\u4E8E\u5E95\u5C42",
|
|
1769
|
+
"pptx.contextMenu.sizeAndPosition": "\u5927\u5C0F\u548C\u4F4D\u7F6E...",
|
|
1760
1770
|
"pptx.contextMenu.splitCell": "\u62C6\u5206\u5355\u5143\u683C",
|
|
1761
1771
|
"pptx.contextMenu.ungroup": "\u53D6\u6D88\u7EC4\u5408",
|
|
1772
|
+
"pptx.pasteSpecial.dialogTitle": "\u9009\u62E9\u6027\u7C98\u8D34",
|
|
1773
|
+
"pptx.pasteSpecial.keepSourceFormatting": "\u4FDD\u7559\u6E90\u683C\u5F0F",
|
|
1774
|
+
"pptx.pasteSpecial.keepTextOnly": "\u53EA\u4FDD\u7559\u6587\u672C",
|
|
1775
|
+
"pptx.pasteSpecial.optionsLabel": "\u7C98\u8D34\u9009\u9879",
|
|
1776
|
+
"pptx.pasteSpecial.picture": "\u56FE\u7247",
|
|
1777
|
+
"pptx.pasteSpecial.useDestinationTheme": "\u4F7F\u7528\u76EE\u6807\u4E3B\u9898",
|
|
1762
1778
|
"pptx.hyperlink.actionEndShow": "\u7ED3\u675F\u653E\u6620",
|
|
1763
1779
|
"pptx.hyperlink.actionFirstSlide": "\u7B2C\u4E00\u5F20\u5E7B\u706F\u7247",
|
|
1764
1780
|
"pptx.hyperlink.actionLabel": "\u64CD\u4F5C",
|
|
@@ -2098,6 +2114,7 @@ var translations17 = {
|
|
|
2098
2114
|
"pptx.media.startAutomatically": "\u81EA\u52A8",
|
|
2099
2115
|
"pptx.media.playAcrossSlides": "\u8DE8\u5E7B\u706F\u7247\u64AD\u653E",
|
|
2100
2116
|
"pptx.media.fullScreen": "\u5168\u5C4F",
|
|
2117
|
+
"pptx.media.onlineVideoTitle": "\u5728\u7EBF\u89C6\u9891",
|
|
2101
2118
|
"pptx.media.hideWhenNotPlaying": "\u4E0D\u64AD\u653E\u65F6\u9690\u85CF",
|
|
2102
2119
|
"pptx.media.bookmarks": "\u4E66\u7B7E",
|
|
2103
2120
|
"pptx.media.bookmark": "\u4E66\u7B7E",
|
|
@@ -2740,6 +2757,12 @@ var translations21 = {
|
|
|
2740
2757
|
"pptx.transition.morphOption.byObject": "\u6309\u5BF9\u8C61",
|
|
2741
2758
|
"pptx.transition.morphOption.byWord": "\u6309\u5B57\u8BCD",
|
|
2742
2759
|
"pptx.transition.morphOption.byChar": "\u6309\u5B57\u7B26",
|
|
2760
|
+
"pptx.transition.pattern": "\u56FE\u6848",
|
|
2761
|
+
"pptx.transition.pattern.diamond": "\u83F1\u5F62",
|
|
2762
|
+
"pptx.transition.pattern.hexagon": "\u516D\u8FB9\u5F62",
|
|
2763
|
+
"pptx.transition.pattern.strip": "\u6761\u5E26",
|
|
2764
|
+
"pptx.transition.pattern.rectangle": "\u77E9\u5F62",
|
|
2765
|
+
"pptx.transition.thruBlk": "\u7ECF\u9ED1\u573A\u8FC7\u6E21",
|
|
2743
2766
|
"pptx.keepAnnotations.title": "\u4FDD\u7559\u58A8\u8FF9\u6807\u6CE8\uFF1F",
|
|
2744
2767
|
"pptx.keepAnnotations.description": "\u60A8\u5728 {{slides}} \u5F20\u5E7B\u706F\u7247\u4E0A\u6DFB\u52A0\u4E86 {{count}} \u6761\u58A8\u8FF9\u6807\u6CE8\u3002\u8981\u5C06\u5176\u4FDD\u7559\u5728\u5E7B\u706F\u7247\u4E0A\uFF0C\u8FD8\u662F\u653E\u5F03\uFF1F",
|
|
2745
2768
|
"pptx.keepAnnotations.discard": "\u653E\u5F03",
|
package/dist/i18n/zh-CN.mjs.br
CHANGED
|
Binary file
|
package/dist/i18n/zh-CN.mjs.gz
CHANGED
|
Binary file
|
package/dist/i18n.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkI4D6JQOI_js = require('./chunk-I4D6JQOI.js');
|
|
4
4
|
require('./chunk-4VNS5WPM.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "LOCALE_CATALOG", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkI4D6JQOI_js.LOCALE_CATALOG; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "keyToLabel", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkI4D6JQOI_js.keyToLabel; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "translationsEn", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkI4D6JQOI_js.translationsEn; }
|
|
19
19
|
});
|
package/dist/i18n.js.br
CHANGED
|
Binary file
|
package/dist/i18n.js.gz
CHANGED
|
Binary file
|
package/dist/i18n.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { LOCALE_CATALOG, keyToLabel, translationsEn } from './chunk-
|
|
1
|
+
export { LOCALE_CATALOG, keyToLabel, translationsEn } from './chunk-JQXN6PO7.mjs';
|
|
2
2
|
import './chunk-XGB3TDIC.mjs';
|
package/dist/i18n.mjs.br
CHANGED
|
Binary file
|
package/dist/i18n.mjs.gz
CHANGED
|
Binary file
|
package/dist/index.d.ts
CHANGED
|
@@ -1417,6 +1417,32 @@ interface TextStyle {
|
|
|
1417
1417
|
* @see element-paragraph-geometry.ts
|
|
1418
1418
|
*/
|
|
1419
1419
|
resolvedParagraphGeometry?: TextStyle;
|
|
1420
|
+
/**
|
|
1421
|
+
* Snapshot of the ELEMENT-scope `a:bodyPr` properties (vertical anchor,
|
|
1422
|
+
* text direction, columns, overflow, autofit, body insets, text wrap, and
|
|
1423
|
+
* the boolean/rotation attributes) as the load pipeline resolved them.
|
|
1424
|
+
*
|
|
1425
|
+
* A shape's own `a:bodyPr` is parsed first, then whatever it left
|
|
1426
|
+
* `undefined` is back-filled from the placeholder / layout / master
|
|
1427
|
+
* defaults (`applyPlaceholderBodyDefaults`), and a placeholder shape with
|
|
1428
|
+
* no `a:bodyPr` of its own has the INHERITED one parsed as if it were its
|
|
1429
|
+
* own. None of those three sources is distinguishable at
|
|
1430
|
+
* `element.textStyle` once the cascade finishes, so a writer that
|
|
1431
|
+
* re-emits every defined field turns an inherited anchor, inset, autofit
|
|
1432
|
+
* mode or `rtlCol` into a value pinned on the slide forever (and an
|
|
1433
|
+
* inherited `a:normAutofit` with no scale gets written back as
|
|
1434
|
+
* `a:spAutoFit`, flipping AutoSize from "shrink text" to "resize shape").
|
|
1435
|
+
*
|
|
1436
|
+
* Present only on an `element.textStyle` that came from a parsed deck.
|
|
1437
|
+
* The save path diffs the live style against this snapshot: a field that
|
|
1438
|
+
* still matches is an inheritance artefact and the writer leaves the
|
|
1439
|
+
* underlying `a:bodyPr` attribute untouched (whatever it already is,
|
|
1440
|
+
* present or absent); a field that differs was authored or has since
|
|
1441
|
+
* been edited and is written out.
|
|
1442
|
+
*
|
|
1443
|
+
* @see element-body-properties.ts
|
|
1444
|
+
*/
|
|
1445
|
+
resolvedBodyProperties?: TextStyle;
|
|
1420
1446
|
fontFamily?: string;
|
|
1421
1447
|
fontSize?: number;
|
|
1422
1448
|
/** When true, some form of autofit is in effect; see {@link autoFitMode} for which. */
|
|
@@ -1599,6 +1625,16 @@ interface TextStyle {
|
|
|
1599
1625
|
align: 'l' | 'ctr' | 'r' | 'dec';
|
|
1600
1626
|
leader?: 'none' | 'dot' | 'hyphen' | 'underscore';
|
|
1601
1627
|
}>;
|
|
1628
|
+
/**
|
|
1629
|
+
* True when the paragraph's own `a:pPr` authored an EMPTY `<a:tabLst/>`
|
|
1630
|
+
* (explicitly "no tab stops", overriding whatever the cascade would
|
|
1631
|
+
* otherwise supply) rather than omitting the element entirely (inherit).
|
|
1632
|
+
* fast-xml-parser gives a childless element as the empty string, so
|
|
1633
|
+
* `tabLst` and no-`tabLst` are otherwise indistinguishable once `tabStops`
|
|
1634
|
+
* comes back empty either way. Paragraph-scope only; not part of the
|
|
1635
|
+
* element-level geometry cascade.
|
|
1636
|
+
*/
|
|
1637
|
+
tabStopsExplicitEmpty?: boolean;
|
|
1602
1638
|
/** Body text wrapping mode from `a:bodyPr/@wrap`. */
|
|
1603
1639
|
textWrap?: 'square' | 'none';
|
|
1604
1640
|
/** Preset text warp type from `a:bodyPr/a:prstTxWarp`. */
|
|
@@ -1641,6 +1677,20 @@ interface TextStyle {
|
|
|
1641
1677
|
* serialised back on save, so it never disturbs the round-trip typefaces.
|
|
1642
1678
|
*/
|
|
1643
1679
|
scriptFallbackFont?: string;
|
|
1680
|
+
/**
|
|
1681
|
+
* Set alongside {@link scriptFallbackFont} when the resolved {@link fontFamily}
|
|
1682
|
+
* came only from the paragraph/list-style/theme CASCADE (the run's own
|
|
1683
|
+
* `a:rPr` authored no `a:latin`/`a:ea`/`a:cs` of its own). A run always
|
|
1684
|
+
* inherits SOME font this way (typically the theme's `+mn-lt`), so without
|
|
1685
|
+
* this flag `fontFamily` was indistinguishable from a run that genuinely
|
|
1686
|
+
* chose that font itself, and the renderer never applied the theme's
|
|
1687
|
+
* per-script override (see #83): `+mn-lt` names only the LATIN member of
|
|
1688
|
+
* the font scheme and was never meant to cover text in a different
|
|
1689
|
+
* dominant script. An explicit `a:latin`/`a:ea`/`a:cs` authored on the run
|
|
1690
|
+
* itself still always wins; only the cascade default yields to the
|
|
1691
|
+
* script-specific override.
|
|
1692
|
+
*/
|
|
1693
|
+
fontFamilyIsCascadeDefault?: boolean;
|
|
1644
1694
|
/** Text language from `a:rPr/@lang`. */
|
|
1645
1695
|
language?: string;
|
|
1646
1696
|
/** Hyperlink mouse-over target from `a:hlinkMouseOver`. */
|
|
@@ -1663,6 +1713,16 @@ interface TextStyle {
|
|
|
1663
1713
|
hyperlinkHighlightClick?: boolean;
|
|
1664
1714
|
/** Whether hyperlink ends a sound (`a:hlinkClick/@endSnd`). */
|
|
1665
1715
|
hyperlinkEndSound?: boolean;
|
|
1716
|
+
/**
|
|
1717
|
+
* Raw `a:hlinkClick/a:extLst` child, preserved verbatim for round-trip.
|
|
1718
|
+
* Carries vendor extensions this engine does not interpret, most commonly
|
|
1719
|
+
* `ahyp:hlinkClr` (Microsoft's "hyperlink color" extension,
|
|
1720
|
+
* `{A12FA001-AC4F-418D-AE19-62706E023703}`), which records whether a
|
|
1721
|
+
* hyperlink run should paint with the theme's text colour instead of the
|
|
1722
|
+
* hyperlink colour. Dropping the whole `a:extLst` silently reverted such a
|
|
1723
|
+
* run to the default (themed) hyperlink colour on save.
|
|
1724
|
+
*/
|
|
1725
|
+
hyperlinkExtensionXml?: XmlObject;
|
|
1666
1726
|
/** Kumimoji (ideographic text combining) flag for vertical CJK text (`a:rPr/@kumimoji`). */
|
|
1667
1727
|
kumimoji?: boolean;
|
|
1668
1728
|
/** Normalize height flag (`a:rPr/@normalizeH`). */
|
|
@@ -1816,6 +1876,15 @@ interface TextStyle {
|
|
|
1816
1876
|
textGlowRadius?: number;
|
|
1817
1877
|
/** Text glow opacity (0-1). */
|
|
1818
1878
|
textGlowOpacity?: number;
|
|
1879
|
+
/**
|
|
1880
|
+
* Original glow colour-choice XML (`a:glow`'s `a:schemeClr`/`a:srgbClr`/…
|
|
1881
|
+
* child), preserved verbatim so a theme colour reference round-trips
|
|
1882
|
+
* instead of always being re-serialized as a resolved `a:srgbClr` (which
|
|
1883
|
+
* cuts the glow off from theme/Recolor changes).
|
|
1884
|
+
*/
|
|
1885
|
+
textGlowColorXml?: XmlObject;
|
|
1886
|
+
/** Theme colour slot the glow colour resolved from, when it is `a:schemeClr`. */
|
|
1887
|
+
textGlowColorRef?: PptxThemeColorRef;
|
|
1819
1888
|
/** Text reflection enabled flag. */
|
|
1820
1889
|
textReflection?: boolean;
|
|
1821
1890
|
/** Text reflection blur radius in px. */
|
|
@@ -1952,6 +2021,18 @@ interface BulletInfo {
|
|
|
1952
2021
|
paragraphIndex?: number;
|
|
1953
2022
|
/** Bullet font family from `a:buFont`. */
|
|
1954
2023
|
fontFamily?: string;
|
|
2024
|
+
/**
|
|
2025
|
+
* PANOSE font-matching hint from `a:buFont/@panose`. `a:buFont` is a
|
|
2026
|
+
* CT_TextFont, the same complex type as `a:latin`/`a:ea`/`a:cs`/`a:sym`
|
|
2027
|
+
* (which carry the equivalent `TextStyle.latinFontPanose` etc.), so a
|
|
2028
|
+
* bullet's own PANOSE/pitch-family/charset decide the fallback glyph
|
|
2029
|
+
* PowerPoint substitutes when the named typeface is missing.
|
|
2030
|
+
*/
|
|
2031
|
+
fontPanose?: string;
|
|
2032
|
+
/** Font pitch-and-family byte from `a:buFont/@pitchFamily`. */
|
|
2033
|
+
fontPitchFamily?: number;
|
|
2034
|
+
/** Font character-set byte from `a:buFont/@charset`. */
|
|
2035
|
+
fontCharset?: number;
|
|
1955
2036
|
/** Bullet size as percentage of text font size from `a:buSzPct`. */
|
|
1956
2037
|
sizePercent?: number;
|
|
1957
2038
|
/** Bullet size in points from `a:buSzPts`. */
|
|
@@ -1993,6 +2074,18 @@ interface BulletInfo {
|
|
|
1993
2074
|
/** When true, `<a:buSzTx/>` was specified — inherit the bullet size from
|
|
1994
2075
|
* the run text font size. */
|
|
1995
2076
|
sizeInherit?: boolean;
|
|
2077
|
+
/**
|
|
2078
|
+
* True when this bullet resolution came from the paragraph's OWN `a:pPr`
|
|
2079
|
+
* rather than the shape's `a:lstStyle`, an inherited placeholder, or the
|
|
2080
|
+
* master's `a:defPPr` / `p:txStyles`. `resolveParagraphBulletInfo` walks
|
|
2081
|
+
* that cascade and returns the first match, so without this flag a
|
|
2082
|
+
* writer that re-emits every resolved `BulletInfo` in full pins an
|
|
2083
|
+
* inherited bullet (e.g. a master `buFont="Arial"` / `buChar="•"`) onto
|
|
2084
|
+
* every paragraph's own `a:pPr` the moment the slide is rewritten. The
|
|
2085
|
+
* save path only writes the bullet group when this is `true`, mirroring
|
|
2086
|
+
* how `paragraphProperties` gates every other per-paragraph field.
|
|
2087
|
+
*/
|
|
2088
|
+
ownedByParagraph?: boolean;
|
|
1996
2089
|
}
|
|
1997
2090
|
/**
|
|
1998
2091
|
* A single text run within a paragraph.
|
|
@@ -2035,6 +2128,23 @@ interface TextSegment {
|
|
|
2035
2128
|
fieldParagraphPropertiesXml?: XmlObject;
|
|
2036
2129
|
/** Raw OMML XML node for equation segments (from `a14:m` / `m:oMathPara`). */
|
|
2037
2130
|
equationXml?: Record<string, unknown>;
|
|
2131
|
+
/**
|
|
2132
|
+
* The ORIGINAL top-level paragraph child that carried this equation,
|
|
2133
|
+
* captured verbatim at parse time and keyed by its own tag: `{ 'a14:m':
|
|
2134
|
+
* ... }`, `{ 'm:oMathPara': ... }`, `{ 'm:oMath': ... }`, or `{
|
|
2135
|
+
* 'mc:AlternateContent': ... }` for an equation authored behind a
|
|
2136
|
+
* Choice/Fallback switch. `equationXml` above is the resolved math content
|
|
2137
|
+
* used for rendering (unwrapped one level for `a14:m`/`mc:AlternateContent`
|
|
2138
|
+
* sources); this field exists solely so the writer can re-emit an UNTOUCHED
|
|
2139
|
+
* equation byte-for-byte, Choice and Fallback both, instead of collapsing
|
|
2140
|
+
* it to a bare math element PowerPoint's own writer never produces.
|
|
2141
|
+
* `undefined` for a freshly inserted or edited equation, which the writer
|
|
2142
|
+
* instead reconstructs from `equationXml` (always `{ 'm:oMathPara': ... }`
|
|
2143
|
+
* or `{ 'm:oMath': ... }` for those cases). Any code that replaces
|
|
2144
|
+
* `equationXml` on an existing segment must drop this field, or the writer
|
|
2145
|
+
* would keep re-emitting the equation's OLD XML instead of the edit.
|
|
2146
|
+
*/
|
|
2147
|
+
equationSourceXml?: Record<string, unknown>;
|
|
2038
2148
|
/**
|
|
2039
2149
|
* Optional equation number for numbered equations (e.g. "(1)", "(2.3)").
|
|
2040
2150
|
* When present, the equation is rendered centered with the number right-aligned.
|
|
@@ -2319,6 +2429,24 @@ interface PptxShapeProperties {
|
|
|
2319
2429
|
*/
|
|
2320
2430
|
interface PlaceholderTextLevelStyle {
|
|
2321
2431
|
fontFamily?: string;
|
|
2432
|
+
/**
|
|
2433
|
+
* The RAW `a:defRPr/a:latin/@typeface` string (verbatim: a theme alias
|
|
2434
|
+
* such as `+mj-lt`/`+mn-lt`, or a literal face name) {@link fontFamily}
|
|
2435
|
+
* was resolved from. Master/layout text styles are parsed once and
|
|
2436
|
+
* cached, so `fontFamily` is a resolved-for-display snapshot; re-emitting
|
|
2437
|
+
* it as the literal name on every save (the master-level analogue of
|
|
2438
|
+
* `colorChoiceXml` below) flattens the theme alias the moment ANYTHING
|
|
2439
|
+
* about the deck is rewritten, even when this level was never touched.
|
|
2440
|
+
* Absent when the level declares no `a:latin`.
|
|
2441
|
+
*/
|
|
2442
|
+
fontTypefaceXml?: string;
|
|
2443
|
+
/**
|
|
2444
|
+
* Snapshot of {@link fontFamily} exactly as parsed, before any edit. The
|
|
2445
|
+
* save path diffs the live value against this: unchanged means re-emit
|
|
2446
|
+
* {@link fontTypefaceXml} verbatim (preserve the alias); different means
|
|
2447
|
+
* a genuine edit, so the new literal name is written instead.
|
|
2448
|
+
*/
|
|
2449
|
+
resolvedFontFamily?: string;
|
|
2322
2450
|
fontSize?: number;
|
|
2323
2451
|
bold?: boolean;
|
|
2324
2452
|
italic?: boolean;
|
|
@@ -2368,8 +2496,32 @@ interface PlaceholderTextLevelStyle {
|
|
|
2368
2496
|
tabStops?: TextStyle['tabStops'];
|
|
2369
2497
|
lineSpacing?: number;
|
|
2370
2498
|
lineSpacingExactPt?: number;
|
|
2499
|
+
/**
|
|
2500
|
+
* Space before the paragraph in px, resolved from EITHER `a:spcPts`
|
|
2501
|
+
* (absolute) or `a:spcPct` (a percentage of this level's own `a:defRPr`
|
|
2502
|
+
* font size) - the OOXML source is not distinguishable from this field
|
|
2503
|
+
* alone. See {@link spaceBeforePercent} / {@link resolvedSpaceBefore}.
|
|
2504
|
+
*/
|
|
2371
2505
|
spaceBefore?: number;
|
|
2372
2506
|
spaceAfter?: number;
|
|
2507
|
+
/**
|
|
2508
|
+
* Snapshot of {@link spaceBefore} / {@link spaceAfter} exactly as parsed.
|
|
2509
|
+
* Diffed the same way as {@link resolvedFontFamily}: unchanged means the
|
|
2510
|
+
* writer re-emits the ORIGINAL form (`a:spcPct` when
|
|
2511
|
+
* {@link spaceBeforePercent} / {@link spaceAfterPercent} is set); a value
|
|
2512
|
+
* that has since moved away from the snapshot is a genuine edit and is
|
|
2513
|
+
* always written as `a:spcPts`, since an editor works in absolute units.
|
|
2514
|
+
*/
|
|
2515
|
+
resolvedSpaceBefore?: number;
|
|
2516
|
+
resolvedSpaceAfter?: number;
|
|
2517
|
+
/**
|
|
2518
|
+
* The raw `a:spcPct` fraction (e.g. `0.2` for 20%) {@link spaceBefore} /
|
|
2519
|
+
* {@link spaceAfter} was resolved from, when the source used percentage
|
|
2520
|
+
* spacing rather than `a:spcPts`. Absent when the source used `a:spcPts`
|
|
2521
|
+
* (or authored no spacing at all).
|
|
2522
|
+
*/
|
|
2523
|
+
spaceBeforePercent?: number;
|
|
2524
|
+
spaceAfterPercent?: number;
|
|
2373
2525
|
/** Default tab interval in CSS pixels (`a:lvlXpPr/@defTabSz`). */
|
|
2374
2526
|
defaultTabSize?: number;
|
|
2375
2527
|
/** Whether East Asian line-breaking rules are enabled. */
|
|
@@ -5102,6 +5254,18 @@ interface PptxSmartArtLayoutDefinition {
|
|
|
5102
5254
|
rootNode: PptxSmartArtLayoutNode;
|
|
5103
5255
|
/** Original definition retained for constraint evaluation and foreign rules. */
|
|
5104
5256
|
rawXml?: XmlObject;
|
|
5257
|
+
/**
|
|
5258
|
+
* The un-parsed layout-definition part text (starting at `<dgm:layoutDef>`,
|
|
5259
|
+
* XML declaration included). `rawXml` above loses the document order of
|
|
5260
|
+
* differently-named siblings (the package-wide `fast-xml-parser`
|
|
5261
|
+
* configuration groups children into one array per tag), which the
|
|
5262
|
+
* per-point DiagramML engine (`core/utils/smartart-engine/`) needs to
|
|
5263
|
+
* execute a `layoutNode` body's `forEach`/`choose`/`constrLst` statements
|
|
5264
|
+
* in their real declared sequence - see that package's `ordered-xml.ts`.
|
|
5265
|
+
* `undefined` when the part could not be read (matches `rawXml`'s own
|
|
5266
|
+
* optionality); the engine falls back to the legacy interpreter then.
|
|
5267
|
+
*/
|
|
5268
|
+
rawXmlText?: string;
|
|
5105
5269
|
}
|
|
5106
5270
|
//#endregion
|
|
5107
5271
|
//#region src/core/types/smart-art-node.d.ts
|
|
@@ -6214,6 +6378,20 @@ interface PptxTableData {
|
|
|
6214
6378
|
* present when there is at least one effect.
|
|
6215
6379
|
*/
|
|
6216
6380
|
tableEffects?: ParsedTableStyleEffect[];
|
|
6381
|
+
/**
|
|
6382
|
+
* Table-cell-context default text size in points, resolved from the
|
|
6383
|
+
* slide's master `p:otherStyle` (ECMA-376 §19.3.1.42 CT_TextListStyle,
|
|
6384
|
+
* §19.3.1.52 for `p:txStyles`). PowerPoint sizes a table cell's text off
|
|
6385
|
+
* this master default (commonly 18pt) whenever neither the run nor the
|
|
6386
|
+
* (size-less) table style provides one; without it, cell text without an
|
|
6387
|
+
* explicit `a:rPr@sz` fell back to the browser's own default font size
|
|
6388
|
+
* (16px / 12pt) instead. A render-only hint: it is not part of any
|
|
6389
|
+
* individual cell's parsed style and is never written back on save, so
|
|
6390
|
+
* resaving an unstyled cell does not bake in an explicit size that was
|
|
6391
|
+
* never authored. `undefined` when no master/otherStyle size resolves
|
|
6392
|
+
* (renderers should leave the browser default in place in that case).
|
|
6393
|
+
*/
|
|
6394
|
+
defaultCellFontSize?: number;
|
|
6217
6395
|
}
|
|
6218
6396
|
/**
|
|
6219
6397
|
* A single fill reference within a table style section.
|
|
@@ -6239,6 +6417,14 @@ interface ParsedTableStyleFill {
|
|
|
6239
6417
|
tint?: number;
|
|
6240
6418
|
/** Shade value (0-100 000). */
|
|
6241
6419
|
shade?: number;
|
|
6420
|
+
/**
|
|
6421
|
+
* Alpha (opacity) value (0-100 000, where 100 000 is fully opaque) from an
|
|
6422
|
+
* `a:alpha` child of `a:schemeClr`/`a:srgbClr`. Several built-in table
|
|
6423
|
+
* styles (e.g. "Light Style 1/3", "Themed Style 1/2") band their rows with
|
|
6424
|
+
* a partially transparent tint of the theme colour rather than a tint/shade
|
|
6425
|
+
* blend.
|
|
6426
|
+
*/
|
|
6427
|
+
alpha?: number;
|
|
6242
6428
|
/** Explicit sRGB hex colour (e.g. `#FF8800`) from `a:srgbClr`. */
|
|
6243
6429
|
color?: string;
|
|
6244
6430
|
/** The fill was `a:noFill`: renders transparent and clears lower layers. */
|
|
@@ -7074,6 +7260,20 @@ interface ContentPartInkStroke {
|
|
|
7074
7260
|
* NAMES differ.
|
|
7075
7261
|
*/
|
|
7076
7262
|
tiltEncoding?: 'vector' | 'azimuthAltitude';
|
|
7263
|
+
/**
|
|
7264
|
+
* Per-point timestamps (milliseconds), decoded from the source InkML
|
|
7265
|
+
* trace's `T` channel when it declared one.
|
|
7266
|
+
*
|
|
7267
|
+
* Absent for the overwhelming majority of real decks: PowerPoint's own
|
|
7268
|
+
* SaveAs output declares only `X`/`Y` and has no per-point time channel at
|
|
7269
|
+
* all (see `contentpart-real-ink-roundtrip.test.ts`'s fixture), so this is
|
|
7270
|
+
* populated only for InkML sources that genuinely author one (a captured
|
|
7271
|
+
* digitizer session, OneNote, a Surface Hub export). When present, ink
|
|
7272
|
+
* replay ("watch the ink get drawn") uses each stroke's own first/last
|
|
7273
|
+
* timestamp to time its reveal instead of the fixed per-stroke cascade; see
|
|
7274
|
+
* `pptx-viewer-shared`'s `render/ink-replay-timeline.ts`.
|
|
7275
|
+
*/
|
|
7276
|
+
pointTimestamps?: number[];
|
|
7077
7277
|
}
|
|
7078
7278
|
/**
|
|
7079
7279
|
* A content-part element wrapped in `mc:AlternateContent`.
|
|
@@ -7118,6 +7318,34 @@ interface ZoomPptxElement extends PptxElementBase, PptxImageProperties {
|
|
|
7118
7318
|
summaryTargets?: SummaryZoomTarget[];
|
|
7119
7319
|
/** Layout mode authored on the Summary Zoom container. */
|
|
7120
7320
|
summaryLayout?: 'grid' | 'fixed';
|
|
7321
|
+
/**
|
|
7322
|
+
* `zmPr/@returnToParent` (MS-PPTX `CT_ZoomObjectProperties`, shared by all
|
|
7323
|
+
* three Zoom kinds): whether continuing forward from the destination slide
|
|
7324
|
+
* during a live show returns to this Zoom's origin slide instead of
|
|
7325
|
+
* advancing linearly through the deck. The schema declares `<xsd:attribute
|
|
7326
|
+
* name="returnToParent" type="xsd:boolean" use="optional" default="true"/>`,
|
|
7327
|
+
* so an ABSENT attribute means `true`, not `false`. This codebase still
|
|
7328
|
+
* leaves the field `undefined` (rather than fabricating `true`) when the
|
|
7329
|
+
* source XML omits it, so a round-trip never invents an attribute the
|
|
7330
|
+
* source never had; a CONSUMER of this field (playback, e.g.
|
|
7331
|
+
* `pptx-viewer-shared`'s `resolveZoomNavigationTarget`) must read
|
|
7332
|
+
* `returnToParent !== false`, not `Boolean(returnToParent)`, to get the
|
|
7333
|
+
* spec-correct effective value. For `zoomType: 'summary'`, this mirrors the
|
|
7334
|
+
* first tile's own value; see {@link SummaryZoomTarget.returnToParent} for
|
|
7335
|
+
* the per-tile value.
|
|
7336
|
+
*/
|
|
7337
|
+
returnToParent?: boolean;
|
|
7338
|
+
/**
|
|
7339
|
+
* `zmPr/@transitionDur` (MS-PPTX `CT_ZoomObjectProperties`): the
|
|
7340
|
+
* zoom-transition length in milliseconds. PowerPoint's own writer emits a
|
|
7341
|
+
* unitless decimal-millisecond value for every OOXML `ST_UniversalTimeOffset`
|
|
7342
|
+
* this codebase has observed (see the media-trim/-fade parsers), so this
|
|
7343
|
+
* follows the same convention rather than the full TIMEOFFSET grammar's
|
|
7344
|
+
* unit suffixes. Undefined uses the destination slide's own transition.
|
|
7345
|
+
* For `zoomType: 'summary'`, this mirrors the first tile's own value; see
|
|
7346
|
+
* {@link SummaryZoomTarget.transitionDurationMs} for the per-tile value.
|
|
7347
|
+
*/
|
|
7348
|
+
transitionDurationMs?: number;
|
|
7121
7349
|
}
|
|
7122
7350
|
/** A single section tile within a PowerPoint Summary Zoom container. */
|
|
7123
7351
|
interface SummaryZoomTarget extends PptxImageProperties {
|
|
@@ -7133,6 +7361,10 @@ interface SummaryZoomTarget extends PptxImageProperties {
|
|
|
7133
7361
|
offsetFactorY?: number;
|
|
7134
7362
|
scaleFactorX?: number;
|
|
7135
7363
|
scaleFactorY?: number;
|
|
7364
|
+
/** This tile's own `zmPr/@returnToParent`; see {@link ZoomPptxElement.returnToParent}. */
|
|
7365
|
+
returnToParent?: boolean;
|
|
7366
|
+
/** This tile's own `zmPr/@transitionDur` in milliseconds; see {@link ZoomPptxElement.transitionDurationMs}. */
|
|
7367
|
+
transitionDurationMs?: number;
|
|
7136
7368
|
rawXml?: XmlObject;
|
|
7137
7369
|
}
|
|
7138
7370
|
/**
|
|
@@ -8123,6 +8355,17 @@ interface PptxAttributeAnimation {
|
|
|
8123
8355
|
* IS consulted regardless of this field's value. Absent means `lin`.
|
|
8124
8356
|
*/
|
|
8125
8357
|
calcMode?: 'discrete' | 'lin' | 'fmla';
|
|
8358
|
+
/**
|
|
8359
|
+
* `p:anim/@_p14:bounceEnd` (Office 2010 `p14` extension attribute,
|
|
8360
|
+
* MS-OI29500), normalized to a 0-1 fraction of this behaviour's own
|
|
8361
|
+
* duration. PowerPoint's Fly In "Bounce End" effect option writes this on
|
|
8362
|
+
* the position-ramp `p:anim` node(s): the fraction of the duration at
|
|
8363
|
+
* which the primary travel completes, with the remainder spent bouncing
|
|
8364
|
+
* and settling at the final value. Mirrored verbatim by PowerPoint onto
|
|
8365
|
+
* the enclosing `p:cTn/@_p14:presetBounceEnd`. Absent for every animation
|
|
8366
|
+
* that doesn't use this effect option (the overwhelming majority).
|
|
8367
|
+
*/
|
|
8368
|
+
bounceEnd?: number;
|
|
8126
8369
|
}
|
|
8127
8370
|
/** Signed HSL channel deltas parsed from `p:animClr/p:by/p:hsl`. */
|
|
8128
8371
|
interface PptxHslColorDelta {
|
|
@@ -8204,7 +8447,19 @@ interface PptxTextAnimationTarget {
|
|
|
8204
8447
|
* These map directly to OOXML condition event attribute values
|
|
8205
8448
|
* (ISO/IEC 29500-1 S19.5.28 CT_TLTimeCondition).
|
|
8206
8449
|
*/
|
|
8207
|
-
type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick' | 'onMouseOver' | 'onMouseOut' | 'onNext' | 'onPrev' | 'onStopAudio' | 'onDblClick';
|
|
8450
|
+
type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick' | 'onMouseOver' | 'onMouseOut' | 'onNext' | 'onPrev' | 'onStopAudio' | 'onDblClick' | 'onMediaBookmark';
|
|
8451
|
+
/**
|
|
8452
|
+
* `p14:bmkTgt` (Office 2010 `p14` extension, MS-OI29500): names the specific
|
|
8453
|
+
* media element and bookmark an `evt="onMediaBookmark"` condition fires for.
|
|
8454
|
+
* `bookmarkName` matches a `p14:bmk/@_name` on that media element's own
|
|
8455
|
+
* `p14:bmkLst` (see `MediaBookmark.label` in `core/types/elements.ts`).
|
|
8456
|
+
*/
|
|
8457
|
+
interface PptxMediaBookmarkTarget {
|
|
8458
|
+
/** `p14:bmkTgt/@_spid`: the media element's shape id. */
|
|
8459
|
+
shapeId: string;
|
|
8460
|
+
/** `p14:bmkTgt/@_bmkName`: the bookmark's name. */
|
|
8461
|
+
bookmarkName: string;
|
|
8462
|
+
}
|
|
8208
8463
|
/**
|
|
8209
8464
|
* Structured representation of a single OOXML animation condition
|
|
8210
8465
|
* from `p:cond` elements inside `p:stCondLst` or `p:endCondLst`.
|
|
@@ -8224,6 +8479,11 @@ type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick'
|
|
|
8224
8479
|
interface AnimationCondition {
|
|
8225
8480
|
/** Event that triggers the condition. */
|
|
8226
8481
|
event?: AnimationConditionEvent;
|
|
8482
|
+
/**
|
|
8483
|
+
* The media element/bookmark this condition fires for, when
|
|
8484
|
+
* {@link event} is `onMediaBookmark`. See {@link PptxMediaBookmarkTarget}.
|
|
8485
|
+
*/
|
|
8486
|
+
bookmarkTarget?: PptxMediaBookmarkTarget;
|
|
8227
8487
|
/** Delay in milliseconds (from `@_delay`). "indefinite" is represented as -1. */
|
|
8228
8488
|
delay?: number;
|
|
8229
8489
|
/** Target time node ID reference (from `@_tn`). */
|
|
@@ -9072,7 +9332,12 @@ interface PptxSlideTransition {
|
|
|
9072
9332
|
spokes?: number;
|
|
9073
9333
|
/** Pattern type for shred transition. */
|
|
9074
9334
|
pattern?: string;
|
|
9075
|
-
/**
|
|
9335
|
+
/**
|
|
9336
|
+
* Through-black flag (OOXML `@_thruBlk`). COM-verified to actually apply to
|
|
9337
|
+
* `cut` and `fade` (see {@link TRANSITION_THRUBLK_TYPES}); parsed generically
|
|
9338
|
+
* off any standard transition child so an unexpected authored value still
|
|
9339
|
+
* round-trips.
|
|
9340
|
+
*/
|
|
9076
9341
|
thruBlk?: boolean;
|
|
9077
9342
|
/** Split orientation (horz/vert) parsed from `@_orient`. */
|
|
9078
9343
|
orient?: PptxSplitOrientation;
|
|
@@ -9542,7 +9807,12 @@ interface PptxHeaderFooter {
|
|
|
9542
9807
|
hasDateTime?: boolean;
|
|
9543
9808
|
dateTimeText?: string;
|
|
9544
9809
|
dateTimeAuto?: boolean;
|
|
9545
|
-
/**
|
|
9810
|
+
/**
|
|
9811
|
+
* The master date placeholder's own `a:fld/@type` (e.g. "datetime2"), NOT a
|
|
9812
|
+
* format pattern. It is one of the predefined OOXML datetime field types
|
|
9813
|
+
* (`datetime1`-`datetime13`); the display pattern for each is resolved by
|
|
9814
|
+
* `resolveFieldDateText` in `packages/shared/src/render/text-field-substitution.ts`.
|
|
9815
|
+
*/
|
|
9546
9816
|
dateFormat?: string;
|
|
9547
9817
|
hasSlideNumber?: boolean;
|
|
9548
9818
|
}
|
|
@@ -12517,13 +12787,21 @@ type InlineListReadResult = {
|
|
|
12517
12787
|
* Pure string logic: resolves OOXML field runs (slide number, date/time,
|
|
12518
12788
|
* header/footer, document properties, slide title) into their display text.
|
|
12519
12789
|
* Extracted from the React `viewer/utils/text-field-substitution` module so
|
|
12520
|
-
* every binding substitutes identically.
|
|
12790
|
+
* every binding substitutes identically. The locale-aware datetime engine
|
|
12791
|
+
* lives in `text-field-datetime.ts`.
|
|
12521
12792
|
*/
|
|
12522
12793
|
/** Context for substituting field placeholders (slide number, date/time, header/footer, etc.). */
|
|
12523
12794
|
interface FieldSubstitutionContext {
|
|
12524
12795
|
slideNumber?: number;
|
|
12525
12796
|
dateTimeText?: string;
|
|
12526
|
-
/**
|
|
12797
|
+
/**
|
|
12798
|
+
* The deck's master date-field default TYPE (`a:fld/@type` on the slide
|
|
12799
|
+
* master's `dt` placeholder, e.g. "datetime2"; see `header-footer-parts.ts`).
|
|
12800
|
+
* This is a field TYPE, not a format pattern, and is used ONLY as a
|
|
12801
|
+
* fallback for a field authored with the generic, unnumbered `datetime`
|
|
12802
|
+
* type - a field that already names its own `datetime1`-`datetime13` type
|
|
12803
|
+
* always uses that type, never this one (see `substituteFieldText`).
|
|
12804
|
+
*/
|
|
12527
12805
|
dateFormat?: string;
|
|
12528
12806
|
/** Footer text from PptxHeaderFooter settings. */
|
|
12529
12807
|
footerText?: string;
|
|
@@ -12917,6 +13195,28 @@ interface EditorImagePasteOptions {
|
|
|
12917
13195
|
insertElement(element: ImagePptxElement): void;
|
|
12918
13196
|
}
|
|
12919
13197
|
//#endregion
|
|
13198
|
+
//#region src/render/zoom-return-navigation.d.ts
|
|
13199
|
+
/**
|
|
13200
|
+
* The navigation-relevant fields of a Zoom click target, independent of
|
|
13201
|
+
* `zoomType`.
|
|
13202
|
+
*
|
|
13203
|
+
* `returnToParent` is already resolved to its EFFECTIVE value here (not the
|
|
13204
|
+
* raw, possibly-`undefined` `ZoomPptxElement`/`SummaryZoomTarget` field):
|
|
13205
|
+
* `CT_ZoomObjectProperties/@returnToParent` (MS-PPTX) is `<xsd:attribute
|
|
13206
|
+
* name="returnToParent" type="xsd:boolean" use="optional" default="true"/>`,
|
|
13207
|
+
* so an ABSENT attribute means true, not false. Core deliberately stores
|
|
13208
|
+
* `undefined` rather than fabricating `true` (so a round-trip never invents
|
|
13209
|
+
* an attribute the source never had), which makes `Boolean(x)` the wrong way
|
|
13210
|
+
* to read it; the two `resolve*NavigationTarget` functions below are the only
|
|
13211
|
+
* place that distinction should be made.
|
|
13212
|
+
*/
|
|
13213
|
+
interface ZoomNavigationTarget {
|
|
13214
|
+
targetSlideIndex: number;
|
|
13215
|
+
targetSectionId?: string;
|
|
13216
|
+
returnToParent: boolean;
|
|
13217
|
+
transitionDurationMs?: number;
|
|
13218
|
+
}
|
|
13219
|
+
//#endregion
|
|
12920
13220
|
//#region src/render/account.d.ts
|
|
12921
13221
|
/** Local-only display profile shown in File > Account. Never sent anywhere; purely cosmetic. */
|
|
12922
13222
|
interface ViewerProfile {
|
|
@@ -13987,6 +14287,11 @@ interface ToolbarProps {
|
|
|
13987
14287
|
onOpenSettings?: () => void;
|
|
13988
14288
|
onRunAccessibilityCheck: () => void;
|
|
13989
14289
|
onToggleSlideSorter: () => void;
|
|
14290
|
+
/**
|
|
14291
|
+
* View > Normal: leave whichever alternate view (slide sorter, reading,
|
|
14292
|
+
* outline, master) is open and return to the ordinary editing canvas.
|
|
14293
|
+
*/
|
|
14294
|
+
onGoToNormalView?: () => void;
|
|
13990
14295
|
/** Enter PowerPoint's Reading View (full window, not the fullscreen show). */
|
|
13991
14296
|
onOpenReadingView: () => void;
|
|
13992
14297
|
/** Enter PowerPoint's Outline view: the deck as editable indented text. */
|
|
@@ -14253,7 +14558,7 @@ interface SlideCanvasProps {
|
|
|
14253
14558
|
/** All slides in the presentation (for zoom element thumbnails). */
|
|
14254
14559
|
allSlides?: readonly PptxSlide[];
|
|
14255
14560
|
/** Callback fired when a zoom element is clicked in presentation mode. */
|
|
14256
|
-
onZoomClick?: (
|
|
14561
|
+
onZoomClick?: (target: ZoomNavigationTarget, returnSlideIndex: number) => void;
|
|
14257
14562
|
/** Index of the current slide (for zoom return navigation). */
|
|
14258
14563
|
sourceSlideIndex?: number;
|
|
14259
14564
|
/** Context for text field placeholder substitution (slide number, header/footer, etc.). */
|