pptx-react-viewer 3.9.0 → 3.11.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.
Files changed (163) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/{AiChatPanel-3A42W7RW.js → AiChatPanel-A3ZMMVUA.js} +25 -25
  3. package/dist/AiChatPanel-A3ZMMVUA.js.br +0 -0
  4. package/dist/AiChatPanel-A3ZMMVUA.js.gz +0 -0
  5. package/dist/{AiChatPanel-II6VOOAL.mjs → AiChatPanel-L5H455NZ.mjs} +4 -4
  6. package/dist/AiChatPanel-L5H455NZ.mjs.br +0 -0
  7. package/dist/AiChatPanel-L5H455NZ.mjs.gz +0 -0
  8. package/dist/{Area3DChartScene-JM3CQ3WQ.mjs → Area3DChartScene-OAD36KIX.mjs} +1 -1
  9. package/dist/{Area3DChartScene-JM3CQ3WQ.mjs.br → Area3DChartScene-OAD36KIX.mjs.br} +0 -0
  10. package/dist/Area3DChartScene-OAD36KIX.mjs.gz +0 -0
  11. package/dist/{Area3DChartScene-XJK4ZA4R.js → Area3DChartScene-R2CKCYCB.js} +2 -2
  12. package/dist/{Area3DChartScene-XJK4ZA4R.js.br → Area3DChartScene-R2CKCYCB.js.br} +0 -0
  13. package/dist/Area3DChartScene-R2CKCYCB.js.gz +0 -0
  14. package/dist/{Bar3DChartScene-RGRZY5P6.js → Bar3DChartScene-CRRPMXGQ.js} +2 -2
  15. package/dist/Bar3DChartScene-CRRPMXGQ.js.br +0 -0
  16. package/dist/Bar3DChartScene-CRRPMXGQ.js.gz +0 -0
  17. package/dist/{Bar3DChartScene-VNFWI2QG.mjs → Bar3DChartScene-XNNXF26T.mjs} +1 -1
  18. package/dist/{Bar3DChartScene-VNFWI2QG.mjs.br → Bar3DChartScene-XNNXF26T.mjs.br} +0 -0
  19. package/dist/Bar3DChartScene-XNNXF26T.mjs.gz +0 -0
  20. package/dist/{Line3DChartScene-MEY42DBF.js → Line3DChartScene-44PLZML2.js} +2 -2
  21. package/dist/Line3DChartScene-44PLZML2.js.br +0 -0
  22. package/dist/Line3DChartScene-44PLZML2.js.gz +0 -0
  23. package/dist/{Line3DChartScene-GXOWGIFJ.mjs → Line3DChartScene-MNNPB3LZ.mjs} +1 -1
  24. package/dist/{Line3DChartScene-GXOWGIFJ.mjs.br → Line3DChartScene-MNNPB3LZ.mjs.br} +0 -0
  25. package/dist/Line3DChartScene-MNNPB3LZ.mjs.gz +0 -0
  26. package/dist/{Model3DScene-WJ3MMIZH.mjs → Model3DScene-5MUREFLY.mjs} +1 -1
  27. package/dist/Model3DScene-5MUREFLY.mjs.br +0 -0
  28. package/dist/Model3DScene-5MUREFLY.mjs.gz +0 -0
  29. package/dist/{Model3DScene-MWXTGHDM.js → Model3DScene-RYPYQPJH.js} +2 -2
  30. package/dist/Model3DScene-RYPYQPJH.js.br +0 -0
  31. package/dist/Model3DScene-RYPYQPJH.js.gz +0 -0
  32. package/dist/{PieChart3DScene-FJJGOQIS.js → PieChart3DScene-GACYCSSQ.js} +2 -2
  33. package/dist/{PieChart3DScene-FJJGOQIS.js.br → PieChart3DScene-GACYCSSQ.js.br} +0 -0
  34. package/dist/PieChart3DScene-GACYCSSQ.js.gz +0 -0
  35. package/dist/{PieChart3DScene-WXJEDYMK.mjs → PieChart3DScene-KYZSSG5X.mjs} +1 -1
  36. package/dist/PieChart3DScene-KYZSSG5X.mjs.br +0 -0
  37. package/dist/PieChart3DScene-KYZSSG5X.mjs.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-VDK3F224.js → SurfaceChart3DScene-RI5G4BHS.js} +2 -2
  39. package/dist/{SurfaceChart3DScene-VDK3F224.js.br → SurfaceChart3DScene-RI5G4BHS.js.br} +0 -0
  40. package/dist/SurfaceChart3DScene-RI5G4BHS.js.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-IKPE2SVE.mjs → SurfaceChart3DScene-ZUP4PRUZ.mjs} +1 -1
  42. package/dist/SurfaceChart3DScene-ZUP4PRUZ.mjs.br +0 -0
  43. package/dist/SurfaceChart3DScene-ZUP4PRUZ.mjs.gz +0 -0
  44. package/dist/{chunk-3NIJ5HIZ.js → chunk-4PL3GBSD.js} +1818 -1279
  45. package/dist/chunk-4PL3GBSD.js.br +0 -0
  46. package/dist/chunk-4PL3GBSD.js.gz +0 -0
  47. package/dist/{chunk-NTWFXLZX.mjs → chunk-5T4Y4QPV.mjs} +2 -2
  48. package/dist/chunk-5T4Y4QPV.mjs.br +0 -0
  49. package/dist/chunk-5T4Y4QPV.mjs.gz +0 -0
  50. package/dist/{chunk-VQX7G75Z.mjs → chunk-6BNPHEEX.mjs} +70521 -52117
  51. package/dist/chunk-6BNPHEEX.mjs.br +0 -0
  52. package/dist/chunk-6BNPHEEX.mjs.gz +0 -0
  53. package/dist/{chunk-K6Q6KLA6.js → chunk-BX4XVY5X.js} +6168 -1929
  54. package/dist/chunk-BX4XVY5X.js.br +0 -0
  55. package/dist/chunk-BX4XVY5X.js.gz +0 -0
  56. package/dist/{chunk-LBJAVP3H.js → chunk-IK25LY4C.js} +176 -176
  57. package/dist/chunk-IK25LY4C.js.br +0 -0
  58. package/dist/chunk-IK25LY4C.js.gz +0 -0
  59. package/dist/{chunk-G3JPCRKN.js → chunk-LY5535CF.js} +70559 -52147
  60. package/dist/chunk-LY5535CF.js.br +0 -0
  61. package/dist/chunk-LY5535CF.js.gz +0 -0
  62. package/dist/{chunk-5CPGDXD6.js → chunk-MRBHJ26I.js} +457 -445
  63. package/dist/chunk-MRBHJ26I.js.br +0 -0
  64. package/dist/chunk-MRBHJ26I.js.gz +0 -0
  65. package/dist/{chunk-76Z3X6JX.mjs → chunk-N75WRHON.mjs} +599 -60
  66. package/dist/chunk-N75WRHON.mjs.br +0 -0
  67. package/dist/chunk-N75WRHON.mjs.gz +0 -0
  68. package/dist/{chunk-3Y63XPIN.mjs → chunk-SUEZMQRT.mjs} +6164 -1925
  69. package/dist/chunk-SUEZMQRT.mjs.br +0 -0
  70. package/dist/chunk-SUEZMQRT.mjs.gz +0 -0
  71. package/dist/{chunk-JBSAKP4Z.mjs → chunk-TAGG5YNA.mjs} +61 -1
  72. package/dist/chunk-TAGG5YNA.mjs.br +0 -0
  73. package/dist/chunk-TAGG5YNA.mjs.gz +0 -0
  74. package/dist/{chunk-PCCM7NVY.mjs → chunk-VHFPZBUW.mjs} +21 -10
  75. package/dist/chunk-VHFPZBUW.mjs.br +0 -0
  76. package/dist/chunk-VHFPZBUW.mjs.gz +0 -0
  77. package/dist/{chunk-TEVGDXVW.js → chunk-Y6GG2OOW.js} +61 -1
  78. package/dist/chunk-Y6GG2OOW.js.br +0 -0
  79. package/dist/chunk-Y6GG2OOW.js.gz +0 -0
  80. package/dist/i18n.js +4 -4
  81. package/dist/i18n.js.br +0 -0
  82. package/dist/i18n.js.gz +0 -0
  83. package/dist/i18n.mjs +1 -1
  84. package/dist/i18n.mjs.br +0 -0
  85. package/dist/i18n.mjs.gz +0 -0
  86. package/dist/index-CGKutKk1.d.ts.map +1 -1
  87. package/dist/index.d.ts +241 -19
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +47 -47
  90. package/dist/index.js.br +0 -0
  91. package/dist/index.js.gz +0 -0
  92. package/dist/index.mjs +6 -6
  93. package/dist/index.mjs.br +0 -0
  94. package/dist/index.mjs.gz +0 -0
  95. package/dist/internals.d.ts +230 -10
  96. package/dist/internals.d.ts.map +1 -1
  97. package/dist/internals.js +79 -79
  98. package/dist/internals.js.br +0 -0
  99. package/dist/internals.js.gz +0 -0
  100. package/dist/internals.mjs +4 -4
  101. package/dist/internals.mjs.br +0 -0
  102. package/dist/internals.mjs.gz +0 -0
  103. package/dist/pptx-viewer.css +1 -1
  104. package/dist/pptx-viewer.css.br +0 -0
  105. package/dist/pptx-viewer.css.gz +0 -0
  106. package/dist/{useViewerBuildingBlocks-C8F_4Pzb.d.ts → useViewerBuildingBlocks-FbK-4ORi.d.ts} +2 -1
  107. package/dist/useViewerBuildingBlocks-FbK-4ORi.d.ts.map +1 -0
  108. package/dist/viewer/index.d.ts +220 -5
  109. package/dist/viewer/index.d.ts.map +1 -1
  110. package/dist/viewer/index.js +27 -27
  111. package/dist/viewer/index.js.br +0 -0
  112. package/dist/viewer/index.js.gz +0 -0
  113. package/dist/viewer/index.mjs +6 -6
  114. package/dist/viewer/index.mjs.br +0 -0
  115. package/dist/viewer/index.mjs.gz +0 -0
  116. package/package.json +9 -9
  117. package/dist/AiChatPanel-3A42W7RW.js.br +0 -0
  118. package/dist/AiChatPanel-3A42W7RW.js.gz +0 -0
  119. package/dist/AiChatPanel-II6VOOAL.mjs.br +0 -0
  120. package/dist/AiChatPanel-II6VOOAL.mjs.gz +0 -0
  121. package/dist/Area3DChartScene-JM3CQ3WQ.mjs.gz +0 -0
  122. package/dist/Area3DChartScene-XJK4ZA4R.js.gz +0 -0
  123. package/dist/Bar3DChartScene-RGRZY5P6.js.br +0 -0
  124. package/dist/Bar3DChartScene-RGRZY5P6.js.gz +0 -0
  125. package/dist/Bar3DChartScene-VNFWI2QG.mjs.gz +0 -0
  126. package/dist/Line3DChartScene-GXOWGIFJ.mjs.gz +0 -0
  127. package/dist/Line3DChartScene-MEY42DBF.js.br +0 -0
  128. package/dist/Line3DChartScene-MEY42DBF.js.gz +0 -0
  129. package/dist/Model3DScene-MWXTGHDM.js.br +0 -0
  130. package/dist/Model3DScene-MWXTGHDM.js.gz +0 -0
  131. package/dist/Model3DScene-WJ3MMIZH.mjs.br +0 -0
  132. package/dist/Model3DScene-WJ3MMIZH.mjs.gz +0 -0
  133. package/dist/PieChart3DScene-FJJGOQIS.js.gz +0 -0
  134. package/dist/PieChart3DScene-WXJEDYMK.mjs.br +0 -0
  135. package/dist/PieChart3DScene-WXJEDYMK.mjs.gz +0 -0
  136. package/dist/SurfaceChart3DScene-IKPE2SVE.mjs.br +0 -0
  137. package/dist/SurfaceChart3DScene-IKPE2SVE.mjs.gz +0 -0
  138. package/dist/SurfaceChart3DScene-VDK3F224.js.gz +0 -0
  139. package/dist/chunk-3NIJ5HIZ.js.br +0 -0
  140. package/dist/chunk-3NIJ5HIZ.js.gz +0 -0
  141. package/dist/chunk-3Y63XPIN.mjs.br +0 -0
  142. package/dist/chunk-3Y63XPIN.mjs.gz +0 -0
  143. package/dist/chunk-5CPGDXD6.js.br +0 -0
  144. package/dist/chunk-5CPGDXD6.js.gz +0 -0
  145. package/dist/chunk-76Z3X6JX.mjs.br +0 -0
  146. package/dist/chunk-76Z3X6JX.mjs.gz +0 -0
  147. package/dist/chunk-G3JPCRKN.js.br +0 -0
  148. package/dist/chunk-G3JPCRKN.js.gz +0 -0
  149. package/dist/chunk-JBSAKP4Z.mjs.br +0 -0
  150. package/dist/chunk-JBSAKP4Z.mjs.gz +0 -0
  151. package/dist/chunk-K6Q6KLA6.js.br +0 -0
  152. package/dist/chunk-K6Q6KLA6.js.gz +0 -0
  153. package/dist/chunk-LBJAVP3H.js.br +0 -0
  154. package/dist/chunk-LBJAVP3H.js.gz +0 -0
  155. package/dist/chunk-NTWFXLZX.mjs.br +0 -0
  156. package/dist/chunk-NTWFXLZX.mjs.gz +0 -0
  157. package/dist/chunk-PCCM7NVY.mjs.br +0 -0
  158. package/dist/chunk-PCCM7NVY.mjs.gz +0 -0
  159. package/dist/chunk-TEVGDXVW.js.br +0 -0
  160. package/dist/chunk-TEVGDXVW.js.gz +0 -0
  161. package/dist/chunk-VQX7G75Z.mjs.br +0 -0
  162. package/dist/chunk-VQX7G75Z.mjs.gz +0 -0
  163. package/dist/useViewerBuildingBlocks-C8F_4Pzb.d.ts.map +0 -1
@@ -3078,6 +3078,18 @@ interface PptxChartDataPoint {
3078
3078
  }
3079
3079
  /** Schema values accepted by `c:dLblPos`. */
3080
3080
  type PptxChartDataLabelPosition = 'bestFit' | 'b' | 'ctr' | 'inBase' | 'inEnd' | 'l' | 'outEnd' | 'r' | 't';
3081
+ /**
3082
+ * `c15:dlblRangeCache`/`c15:datalabelsRange` (CT_SeriesDataLabelsRange):
3083
+ * PowerPoint 2013+'s "Value From Cells" custom label source, one cell range
3084
+ * supplying every label in a group (chart-type or series `c:dLbls`), with a
3085
+ * cache aligned to point order. See `utils/chart-data-labels-range.ts`.
3086
+ */
3087
+ interface PptxChartDataLabelsRange {
3088
+ /** `c15:f`: the cell range formula (e.g. `Sheet1!$D$2:$D$5`). */
3089
+ formula: string;
3090
+ /** `c15:dlblRangeCache`: cached label text, index-aligned with data points. */
3091
+ cache: string[];
3092
+ }
3081
3093
  /** Individual data label override (c:dLbl). */
3082
3094
  interface PptxChartDataLabel {
3083
3095
  idx: number;
@@ -3119,6 +3131,14 @@ interface PptxChartDataLabel {
3119
3131
  * over any chart/series-level default when set.
3120
3132
  */
3121
3133
  spPr?: PptxChartShapeProps;
3134
+ /**
3135
+ * `c15:xForSave`: this override exists only so its properties survive a
3136
+ * save/reload round trip; PowerPoint merges it back onto the series'
3137
+ * default label on load. Round-tripped as-is (an edited chart keeps an
3138
+ * existing point's whole `extLst`, this flag included); introspection
3139
+ * only otherwise. See `utils/chart-data-labels-range.ts`.
3140
+ */
3141
+ savedForCompatibilityOnly?: boolean;
3122
3142
  }
3123
3143
  /** Axis number format. */
3124
3144
  interface PptxChartAxisNumFmt {
@@ -3507,6 +3527,22 @@ interface PptxChartDataLabelOptions {
3507
3527
  * (point > series > chart-type).
3508
3528
  */
3509
3529
  txPr?: PptxChartLegendTextStyle;
3530
+ /**
3531
+ * PowerPoint 2013+ "Value From Cells", series-wide form
3532
+ * (`c15:datalabelsRange`, chart15 uri `{CE6537A1-...}`): one cell range
3533
+ * supplies every label in this group, aligned by point index. A
3534
+ * SERIES-WIDE alternative to the per-point `c15:dlblFieldTable` mechanism
3535
+ * (already resolved into {@link PptxChartDataLabel.text} at parse time).
3536
+ * See `utils/chart-data-labels-range.ts`.
3537
+ */
3538
+ dataLabelsRange?: PptxChartDataLabelsRange;
3539
+ /**
3540
+ * `c15:showDataLabelsRange` at the SAME level as {@link dataLabelsRange}:
3541
+ * whether every label in this group resolves through the range's cache.
3542
+ * Distinct from the per-point {@link PptxChartDataLabel} flag of the same
3543
+ * XML name. Only meaningful when {@link dataLabelsRange} is set.
3544
+ */
3545
+ showDataLabelsRange?: boolean;
3510
3546
  }
3511
3547
  /** Typed text defaults for a single chart legend entry. */
3512
3548
  interface PptxChartLegendTextStyle {
@@ -3781,6 +3817,19 @@ interface PptxChartData {
3781
3817
  * when the chart has no such extension. See {@link PptxChartFilteredSeries}.
3782
3818
  */
3783
3819
  filteredSeries?: PptxChartFilteredSeries[];
3820
+ /**
3821
+ * `c15:filteredSeriesTitle`: the auto-generated series title text (e.g.
3822
+ * "Series 3") PowerPoint preserved when the chart filter hid the series
3823
+ * whose data would otherwise have supplied it. See
3824
+ * `utils/chart-ext-titles.ts`. Read-mostly like {@link filteredSeries}.
3825
+ */
3826
+ filteredSeriesTitle?: string;
3827
+ /**
3828
+ * `c15:filteredCategoryTitle`: the auto-numbered category labels ("1",
3829
+ * "2", "3", ...) PowerPoint preserved when the chart filter hid the
3830
+ * category axis source entirely. See `utils/chart-ext-titles.ts`.
3831
+ */
3832
+ filteredCategoryTitle?: string[];
3784
3833
  /** Chart style/formatting metadata. */
3785
3834
  style?: PptxChartStyle;
3786
3835
  /** Grouping mode for bar/area/line charts: 'clustered' | 'stacked' | 'percentStacked' */
@@ -4703,7 +4752,108 @@ interface PptxSmartArtLayoutNode {
4703
4752
  rules?: PptxSmartArtNumericRule[];
4704
4753
  /** `dgm:shape`: this node's own preset geometry override, when present. */
4705
4754
  shape?: PptxSmartArtLayoutNodeShape;
4755
+ /**
4756
+ * `dgm:presOf` (CT_PresentationOf, same iterator shape as `dgm:forEach`):
4757
+ * which data-model point(s) this node's OWN text/geometry binds to -
4758
+ * `axis: ['self']` the point currently being iterated, `['des']` all of
4759
+ * its descendants, `['ch']` its direct children, and so on. Absent or
4760
+ * empty `axis` (including a bare `<dgm:presOf/>`) means the node carries
4761
+ * no text of its own (a pure positioning/decoration wrapper - `composite`,
4762
+ * `sp` spacer, connector cap). See `smartart-layout-interpreter-item-
4763
+ * roles.ts`, the one consumer: it is what lets the interpreter tell a
4764
+ * text-bearing per-item role (a list layout's `childText`, a card
4765
+ * layout's `roleText`/`bodyText`) apart from a same-generation sibling
4766
+ * that positions or decorates instead.
4767
+ */
4768
+ presentationOf?: PptxSmartArtIteratorAttributes;
4769
+ /**
4770
+ * EVERY `dgm:constr` reachable from this node, including ones declared
4771
+ * inside a `dgm:choose`/`dgm:if`/`dgm:else` that wraps THIS layoutNode's
4772
+ * `constrLst` (a genuinely conditional constraint set, e.g. one branch
4773
+ * per data-point count - `gear`'s composite positions its `gear1`/
4774
+ * `gear2`/`gear3` slots this way, so its plain, direct-child-only
4775
+ * `constraints` above is empty for it). Stops at a nested `dgm:layoutNode`
4776
+ * boundary: that child's own conditional constrLst becomes ITS
4777
+ * `allConstraints`, not folded into the parent's. Read-only /
4778
+ * interpretation-only - `constraints` above (this node's own DIRECT
4779
+ * constrLst) remains the one `applySmartArtLayoutDefinition` round-trips,
4780
+ * so editing an unrelated property can never collapse a genuinely
4781
+ * conditional constrLst into a single branch. `undefined` when this node
4782
+ * declares no constrLst at all, in or out of a choose (the common case);
4783
+ * otherwise a superset of `constraints` (every branch, blindly unioned -
4784
+ * this interpreter does not evaluate `dgm:choose` conditions when
4785
+ * indexing constraints, matching the same "flatten both branches"
4786
+ * convention `nestedLayoutNodes` already uses for `children`). See
4787
+ * `smartart-constraint-solver.ts`'s `buildConstraintIndex`, the only
4788
+ * consumer.
4789
+ */
4790
+ allConstraints?: PptxSmartArtConstraint[];
4706
4791
  children?: PptxSmartArtLayoutNode[];
4792
+ /**
4793
+ * The iterator attributes of the ENCLOSING `dgm:forEach` this node was
4794
+ * found through, when `nestedLayoutNodes` (`smartart-layout-definition
4795
+ * .ts`) reached it by walking one - as opposed to being a direct child of
4796
+ * its parent layoutNode, or reached only through a `dgm:choose` wrapper
4797
+ * (a condition, not an iteration, leaves this `undefined`).
4798
+ *
4799
+ * `forEach` above records a node's OWN direct `dgm:forEach` children
4800
+ * (which wrap ITS descendants); this is the opposite direction - the
4801
+ * forEach that wraps the node ITSELF, one level up. A layoutNode can sit
4802
+ * inside more than one enclosing forEach only via nesting, so this is
4803
+ * always the SINGLE nearest one, not a list.
4804
+ *
4805
+ * This is what tells a genuinely repeated per-child template
4806
+ * (`axis="ch"`, `ptType` absent or `"node"`) apart from a once-only or
4807
+ * transition-only sibling that merely happens to sit inside SOME
4808
+ * `dgm:forEach` (a `ptType="parTrans"`/`"sibTrans"` connector, or
4809
+ * `axis="followSib" cnt="1"`) - both can be direct siblings under the
4810
+ * SAME parent layoutNode (`lProcess1`'s `vertFlow` has one forEach for
4811
+ * its `parTrans` connector and a SEPARATE one, `axis="ch"`, for its
4812
+ * repeated `child` items; `vertFlow.forEach` bundles both, but only
4813
+ * `child.forEachOrigin` says which ONE produced it). See
4814
+ * `smartart-layout-interpreter-item-roles-recursive.ts`, the one
4815
+ * consumer. Read-only / interpretation-only, like `allConstraints`:
4816
+ * never round-tripped by `applySmartArtLayoutDefinition`.
4817
+ */
4818
+ forEachOrigin?: PptxSmartArtIteratorAttributes;
4819
+ /**
4820
+ * The conditions of EVERY enclosing `dgm:if` this node was found through,
4821
+ * outermost first, when `nestedLayoutNodes` (`smartart-layout-
4822
+ * definition.ts`) reached it via one or more `dgm:choose`'s `if` branches
4823
+ * (as opposed to a direct child, a `dgm:else` branch contributing no
4824
+ * condition of its own - see below - or a `dgm:forEach`, which sets
4825
+ * {@link forEachOrigin} instead). ALL must hold (evaluate `!== false`,
4826
+ * per {@link chooseGuard}'s own AND semantics - see `evaluateWhen`) for
4827
+ * this node's branch to be genuinely live. A caller that already has the
4828
+ * data-model node list can use this instead of treating every
4829
+ * choose-flattened branch as unconditionally present
4830
+ * (`nestedLayoutNodes`' pre-existing "flatten every branch" convention,
4831
+ * still the default when this is absent or a caller does not evaluate
4832
+ * it) - e.g. `cycle-matrix--fallback-n2.pptx`'s `child1group`..
4833
+ * `child4group`, each gated on a DIFFERENT top-level point existing and
4834
+ * having its own child (`axis="ch ch" st="N 1" cnt="1 0" func="cnt"
4835
+ * op="gte" val="1"`).
4836
+ *
4837
+ * A CHAIN, not a single condition, because a node can sit inside NESTED
4838
+ * `dgm:choose`s whose OWN conditions are each individually necessary -
4839
+ * `sub-step-process--hier5.pptx`'s `chLin1`..`chLin7` each sit inside
4840
+ * BOTH an outer `dgm:if func="pos" op="equ" val="N"` (which one of the
4841
+ * 7 hand-duplicated per-position templates this is) AND an inner,
4842
+ * nearly-vacuous `dgm:if func="cnt" op="gte" val="1"` (has >= 1 point at
4843
+ * all) - keeping only the NEAREST (inner) one, as an earlier single-
4844
+ * condition design did, loses the ONE piece of information (the outer
4845
+ * `pos` guard) that actually discriminates `chLin1` from `chLin2`.
4846
+ *
4847
+ * A `dgm:else` branch contributes NO condition of its own (ECMA-376
4848
+ * defines it as "none of the sibling ifs matched", which would need the
4849
+ * FULL sibling list's conditions negated and ANDed together, not a
4850
+ * single condition - no gallery fixture measured needs an else branch's
4851
+ * own guard yet, so it is left unconditional, matching the pre-existing
4852
+ * flatten-everything behaviour) but does NOT clear any OUTER ancestor
4853
+ * guard already accumulated before it. Evaluate with `smartart-layout-
4854
+ * interpreter-when.ts`'s `evaluateWhen`, once per entry, ANDed.
4855
+ */
4856
+ chooseGuard?: PptxSmartArtWhen[];
4707
4857
  }
4708
4858
  /** Metadata and root node from DiagramML CT_DiagramDefinition. */
4709
4859
  interface PptxSmartArtLayoutDefinition {
@@ -5336,6 +5486,14 @@ interface PptxSmartArtData {
5336
5486
  * Consulted by the fallback layout engine for direction/org-chart hints.
5337
5487
  */
5338
5488
  presLayoutVars?: PptxSmartArtPresLayoutVars;
5489
+ /**
5490
+ * The deck's own theme minor-Latin font (`a:fontScheme/a:minorFont/a:latin/
5491
+ * @typeface`): what SmartArt text actually renders in when no per-run
5492
+ * `a:latin` override is present (the common case - see
5493
+ * `smartart-layout-item-font-size.ts`'s font-fit, the one consumer).
5494
+ * Undefined when the theme carries no font scheme at all.
5495
+ */
5496
+ themeMinorFont?: string;
5339
5497
  /** Relationship ID for the diagram data part (for round-trip save). */
5340
5498
  dataRelId?: string;
5341
5499
  /** Relationship ID for the diagram layout part. */
@@ -6295,7 +6453,7 @@ interface SmartArtPptxElement extends PptxElementBase {
6295
6453
  *
6296
6454
  * Used to show type-specific icons and previews in the editor.
6297
6455
  */
6298
- type OleObjectType = 'excel' | 'word' | 'pdf' | 'visio' | 'mathtype' | 'package' | 'unknown';
6456
+ type OleObjectType = 'excel' | 'word' | 'powerpoint' | 'pdf' | 'visio' | 'mathtype' | 'package' | 'unknown';
6299
6457
  /**
6300
6458
  * An OLE (Object Linking and Embedding) object.
6301
6459
  *
@@ -6373,6 +6531,15 @@ interface OlePptxElement extends PptxElementBase {
6373
6531
  * `false`; `undefined` means the source authored no explicit value.
6374
6532
  */
6375
6533
  oleUpdateAutomatic?: boolean;
6534
+ /**
6535
+ * Set by the in-viewer OLE content editors (`ole-edit-api.ts`) whenever
6536
+ * `oleEmbeddedData` and/or `previewImageData` have been changed in memory
6537
+ * and still need to be written back into the saved package. Never
6538
+ * authored from a parsed file; purely an in-memory save signal, mirroring
6539
+ * `PptxSlide.isDirty`. The save writer clears it once the pending write
6540
+ * has been queued.
6541
+ */
6542
+ oleContentDirty?: boolean;
6376
6543
  /** Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr`. */
6377
6544
  altText?: string;
6378
6545
  /** Accessibility title from `p:nvGraphicFramePr/p:cNvPr/@title`. */
@@ -7292,10 +7459,27 @@ interface PptxNativeAnimation {
7292
7459
  buildLevel?: number;
7293
7460
  /** Group ID linking a `p:bldP` entry to its timing animation node. */
7294
7461
  groupId?: string;
7295
- /** Sound relationship ID to play when animation triggers (`p:stSnd`). */
7462
+ /**
7463
+ * Sound relationship ID to play when animation triggers. Modern PowerPoint
7464
+ * (COM-verified against 2016) writes this as a `p:audio/p:cMediaNode`
7465
+ * sibling of the effect's own `p:childTnLst`, targeting `p:sndTgt` rather
7466
+ * than a shape; the legacy `p:stSnd` form (directly on `p:cTn`) is still
7467
+ * accepted on load for round-trip of older-authored decks, but PowerPoint
7468
+ * itself no longer writes it and does not recognise it back
7469
+ * (`Effect.EffectInformation.SoundEffect` reads empty against it).
7470
+ */
7296
7471
  soundRId?: string;
7297
7472
  /** Resolved sound file path from relationship. */
7298
7473
  soundPath?: string;
7474
+ /**
7475
+ * The embedded sound's `@_name` (from `p:snd`/`p:sndTgt`). For one of
7476
+ * PowerPoint's 19 built-in stock sounds this is the exact upper-case file
7477
+ * name PowerPoint itself writes (e.g. `"CHIMES.WAV"`); see
7478
+ * `pptx-viewer-shared`'s `effect-sound-catalogue.ts`, which matches this
7479
+ * value back to a gallery entry. Absent for a custom sound with no name,
7480
+ * or when unresolved.
7481
+ */
7482
+ soundName?: string;
7299
7483
  /** Whether to stop any currently playing sound (`p:endSnd`). */
7300
7484
  stopSound?: boolean;
7301
7485
  /**
@@ -7855,10 +8039,24 @@ interface PptxElementAnimation {
7855
8039
  motionPathRotationCenterX?: number;
7856
8040
  /** Motion-path rotation centre Y in slide percentage units (`p:rCtr/@y`). */
7857
8041
  motionPathRotationCenterY?: number;
7858
- /** Sound relationship ID to play when animation triggers (`p:stSnd`). */
8042
+ /**
8043
+ * Sound relationship ID to play when animation triggers. Written on save
8044
+ * as a `p:audio/p:cMediaNode` sibling of the effect's own `p:childTnLst`
8045
+ * (see `PptxNativeAnimation.soundRId` for the COM-verified detail).
8046
+ */
7859
8047
  soundRId?: string;
7860
8048
  /** Resolved sound file path from relationship. */
7861
8049
  soundPath?: string;
8050
+ /**
8051
+ * The `@_name` to write on the embedded sound (`p:sndTgt`). For a stock
8052
+ * gallery pick this is the exact PowerPoint file name (e.g.
8053
+ * `"CHIMES.WAV"`), which is what makes PowerPoint itself recognise the
8054
+ * sound as that built-in entry when it reopens the saved deck (there is no
8055
+ * separate "built-in" flag anywhere in the schema). Set by
8056
+ * `pptx-viewer-shared`'s `setEffectSound` when the pick carries a
8057
+ * `soundName`; absent for a custom file with no meaningful name.
8058
+ */
8059
+ soundName?: string;
7862
8060
  /** Whether to stop any currently playing sound (`p:endSnd`). */
7863
8061
  stopSound?: boolean;
7864
8062
  /**
@@ -7873,7 +8071,9 @@ interface PptxElementAnimation {
7873
8071
  /**
7874
8072
  * Display name for the chosen sound (e.g. the uploaded file's name),
7875
8073
  * shown by the authoring UI's sound picker. Purely cosmetic; has no
7876
- * OOXML equivalent and is not required for playback.
8074
+ * OOXML equivalent and is not required for playback. For a stock gallery
8075
+ * pick, the UI derives its label from {@link soundName} via the catalogue
8076
+ * instead of this field.
7877
8077
  */
7878
8078
  soundFileName?: string;
7879
8079
  /**
@@ -10221,7 +10421,7 @@ interface PptxHandlerLoadOptions {
10221
10421
  allowExternalImages?: boolean;
10222
10422
  }
10223
10423
  /** Output format for the save pipeline. */
10224
- type PptxSaveFormat = 'pptx' | 'ppsx' | 'pptm';
10424
+ type PptxSaveFormat = 'pptx' | 'ppsx' | 'pptm' | 'ppt';
10225
10425
  interface PptxHandlerSaveOptions {
10226
10426
  headerFooter?: PptxHeaderFooter;
10227
10427
  presentationProperties?: PptxPresentationProperties;
@@ -10317,8 +10517,23 @@ interface PptxHandlerSaveOptions {
10317
10517
  * - `'pptx'` (default): Standard presentation.
10318
10518
  * - `'ppsx'`: Slide-show file (opens in presentation mode).
10319
10519
  * - `'pptm'`: Macro-enabled presentation (requires VBA data).
10520
+ * - `'ppt'`: Legacy binary PowerPoint 97-2003 presentation. Bypasses the
10521
+ * OOXML ZIP pipeline entirely; see `PptxHandlerRuntimeSaveLegacyPpt`.
10522
+ * Elements with no binary equivalent (charts, SmartArt, media, OLE, ink,
10523
+ * 3D models) are degraded to a rasterised preview picture or a labelled
10524
+ * placeholder, each reported via a `scope: 'save'`-adjacent
10525
+ * `PptxCompatibilityWarning`.
10320
10526
  */
10321
10527
  outputFormat?: PptxSaveFormat;
10528
+ /**
10529
+ * Password for RC4 CryptoAPI encryption of a `'ppt'`-format save. Ignored
10530
+ * for every other {@link outputFormat}; encrypting a `.pptx`/`.ppsx`/`.pptm`
10531
+ * save uses {@link IPptxHandlerRuntime.saveEncrypted}'s separate AES/Agile
10532
+ * OLE2 wrapping instead, since the legacy binary format's own encryption
10533
+ * scheme is embedded directly in the `.ppt` stream rather than wrapping an
10534
+ * already-produced package.
10535
+ */
10536
+ pptPassword?: string;
10322
10537
  /**
10323
10538
  * Embedded fonts to write back (or add) to the saved PPTX.
10324
10539
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/viewer/components/collaboration/CollaborationProvider.tsx","../../src/viewer/components/collaboration/RemoteUserCursors.tsx","../../src/viewer/components/collaboration/UserAvatarBar.tsx","../../src/viewer/components/collaboration/CollaborationStatusIndicator.tsx"],"mappings":";;;;;;;UA2CiB;;EAEhB,SAAS;EACT;EACA;EACA,UAAU,MAAM;;iBAGD,wBACf,QACA,aACA,cACA,YACE,6BAA6B,MAAM;;;UCtCrB;;EAEhB,aAAa;;EAEb;;EAEA;;EAEA;;iBAOe,oBACf,aACA,kBACA,aACA,gBACE,yBAAyB,MAAM;;;UCRjB;;EAEhB,aAAa;;EAEb;;EAEA;;EAEA;;EAEA,QAAQ;;EAER;;iBAqDe,gBACf,aACA,eACA,gBACA,iBACA,QACA,cACE,qBAAqB,MAAM;;;UCrFb;;EAEhB,QAAQ;;EAER;;EAEA;;iBAkCe,+BACf,QACA,gBACA,WACE,oCAAoC,MAAM"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/viewer/components/collaboration/CollaborationProvider.tsx","../../src/viewer/components/collaboration/RemoteUserCursors.tsx","../../src/viewer/components/collaboration/UserAvatarBar.tsx","../../src/viewer/components/collaboration/CollaborationStatusIndicator.tsx"],"mappings":";;;;;;;UA2CiB;;EAEhB,SAAS;EACT;EACA;EACA,UAAU,MAAM;;wBAGD,wBACf,QACA,aACA,cACA,YACE,6BAA6B,MAAM;;;UCtCrB;;EAEhB,aAAa;;EAEb;;EAEA;;EAEA;;wBAOe,oBACf,aACA,kBACA,aACA,gBACE,yBAAyB,MAAM;;;UCRjB;;EAEhB,aAAa;;EAEb;;EAEA;;EAEA;;EAEA,QAAQ;;EAER;;wBAqDe,gBACf,aACA,eACA,gBACA,iBACA,QACA,cACE,qBAAqB,MAAM;;;UCrFb;;EAEhB,QAAQ;;EAER;;EAEA;;wBAkCe,+BACf,QACA,gBACA,WACE,oCAAoC,MAAM"}
@@ -1,96 +1,96 @@
1
1
  'use strict';
2
2
 
3
- var chunk3NIJ5HIZ_js = require('../chunk-3NIJ5HIZ.js');
4
- require('../chunk-K6Q6KLA6.js');
5
- var chunk5CPGDXD6_js = require('../chunk-5CPGDXD6.js');
6
- var chunkLBJAVP3H_js = require('../chunk-LBJAVP3H.js');
7
- var chunkG3JPCRKN_js = require('../chunk-G3JPCRKN.js');
8
- require('../chunk-TEVGDXVW.js');
3
+ var chunk4PL3GBSD_js = require('../chunk-4PL3GBSD.js');
4
+ require('../chunk-BX4XVY5X.js');
5
+ var chunkMRBHJ26I_js = require('../chunk-MRBHJ26I.js');
6
+ var chunkIK25LY4C_js = require('../chunk-IK25LY4C.js');
7
+ var chunkLY5535CF_js = require('../chunk-LY5535CF.js');
8
+ require('../chunk-Y6GG2OOW.js');
9
9
  require('../chunk-4VNS5WPM.js');
10
10
 
11
11
 
12
12
 
13
13
  Object.defineProperty(exports, "CollaborationProvider", {
14
14
  enumerable: true,
15
- get: function () { return chunk3NIJ5HIZ_js.CollaborationProvider; }
15
+ get: function () { return chunk4PL3GBSD_js.CollaborationProvider; }
16
16
  });
17
17
  Object.defineProperty(exports, "CollaborationStatusIndicator", {
18
18
  enumerable: true,
19
- get: function () { return chunk3NIJ5HIZ_js.CollaborationStatusIndicator; }
19
+ get: function () { return chunk4PL3GBSD_js.CollaborationStatusIndicator; }
20
20
  });
21
21
  Object.defineProperty(exports, "PowerPointViewer", {
22
22
  enumerable: true,
23
- get: function () { return chunk3NIJ5HIZ_js.PowerPointViewer; }
23
+ get: function () { return chunk4PL3GBSD_js.PowerPointViewer; }
24
24
  });
25
25
  Object.defineProperty(exports, "RemoteUserCursors", {
26
26
  enumerable: true,
27
- get: function () { return chunk3NIJ5HIZ_js.RemoteUserCursors; }
27
+ get: function () { return chunk4PL3GBSD_js.RemoteUserCursors; }
28
28
  });
29
29
  Object.defineProperty(exports, "UserAvatarBar", {
30
30
  enumerable: true,
31
- get: function () { return chunk3NIJ5HIZ_js.UserAvatarBar; }
31
+ get: function () { return chunk4PL3GBSD_js.UserAvatarBar; }
32
32
  });
33
33
  Object.defineProperty(exports, "isAudienceTab", {
34
34
  enumerable: true,
35
- get: function () { return chunk5CPGDXD6_js.isAudienceTab; }
35
+ get: function () { return chunkMRBHJ26I_js.isAudienceTab; }
36
36
  });
37
37
  Object.defineProperty(exports, "parseAudienceNonce", {
38
38
  enumerable: true,
39
- get: function () { return chunk5CPGDXD6_js.parseAudienceNonce; }
39
+ get: function () { return chunkMRBHJ26I_js.parseAudienceNonce; }
40
40
  });
41
41
  Object.defineProperty(exports, "useCollaborativeHistory", {
42
42
  enumerable: true,
43
- get: function () { return chunk5CPGDXD6_js.useCollaborativeHistory; }
43
+ get: function () { return chunkMRBHJ26I_js.useCollaborativeHistory; }
44
44
  });
45
45
  Object.defineProperty(exports, "useCollaborativeState", {
46
46
  enumerable: true,
47
- get: function () { return chunk5CPGDXD6_js.useCollaborativeState; }
47
+ get: function () { return chunkMRBHJ26I_js.useCollaborativeState; }
48
48
  });
49
49
  Object.defineProperty(exports, "usePresenceTracking", {
50
50
  enumerable: true,
51
- get: function () { return chunk5CPGDXD6_js.usePresenceTracking; }
51
+ get: function () { return chunkMRBHJ26I_js.usePresenceTracking; }
52
52
  });
53
53
  Object.defineProperty(exports, "useThemeSwitching", {
54
54
  enumerable: true,
55
- get: function () { return chunk5CPGDXD6_js.useThemeSwitching; }
55
+ get: function () { return chunkMRBHJ26I_js.useThemeSwitching; }
56
56
  });
57
57
  Object.defineProperty(exports, "useYjsProvider", {
58
58
  enumerable: true,
59
- get: function () { return chunk5CPGDXD6_js.useYjsProvider; }
59
+ get: function () { return chunkMRBHJ26I_js.useYjsProvider; }
60
60
  });
61
61
  Object.defineProperty(exports, "getAnimationInitialStyle", {
62
62
  enumerable: true,
63
- get: function () { return chunkLBJAVP3H_js.getAnimationInitialStyle; }
63
+ get: function () { return chunkIK25LY4C_js.getAnimationInitialStyle; }
64
64
  });
65
65
  Object.defineProperty(exports, "clearAudienceContent", {
66
66
  enumerable: true,
67
- get: function () { return chunkG3JPCRKN_js.clearAudienceContent; }
67
+ get: function () { return chunkLY5535CF_js.clearAudienceContent; }
68
68
  });
69
69
  Object.defineProperty(exports, "forgetSessionDeck", {
70
70
  enumerable: true,
71
- get: function () { return chunkG3JPCRKN_js.forgetSessionDeck; }
71
+ get: function () { return chunkLY5535CF_js.forgetSessionDeck; }
72
72
  });
73
73
  Object.defineProperty(exports, "getSessionTabId", {
74
74
  enumerable: true,
75
- get: function () { return chunkG3JPCRKN_js.getSessionTabId; }
75
+ get: function () { return chunkLY5535CF_js.getSessionTabId; }
76
76
  });
77
77
  Object.defineProperty(exports, "loadAudienceContent", {
78
78
  enumerable: true,
79
- get: function () { return chunkG3JPCRKN_js.loadAudienceContent; }
79
+ get: function () { return chunkLY5535CF_js.loadAudienceContent; }
80
80
  });
81
81
  Object.defineProperty(exports, "loadSessionDeck", {
82
82
  enumerable: true,
83
- get: function () { return chunkG3JPCRKN_js.loadSessionDeck; }
83
+ get: function () { return chunkLY5535CF_js.loadSessionDeck; }
84
84
  });
85
85
  Object.defineProperty(exports, "rememberSessionDeck", {
86
86
  enumerable: true,
87
- get: function () { return chunkG3JPCRKN_js.rememberSessionDeck; }
87
+ get: function () { return chunkLY5535CF_js.rememberSessionDeck; }
88
88
  });
89
89
  Object.defineProperty(exports, "restoreSessionDeck", {
90
90
  enumerable: true,
91
- get: function () { return chunkG3JPCRKN_js.restoreSessionDeck; }
91
+ get: function () { return chunkLY5535CF_js.restoreSessionDeck; }
92
92
  });
93
93
  Object.defineProperty(exports, "storeAudienceContent", {
94
94
  enumerable: true,
95
- get: function () { return chunkG3JPCRKN_js.storeAudienceContent; }
95
+ get: function () { return chunkLY5535CF_js.storeAudienceContent; }
96
96
  });
Binary file
Binary file
@@ -1,7 +1,7 @@
1
- export { CollaborationProvider, CollaborationStatusIndicator, PowerPointViewer, RemoteUserCursors, UserAvatarBar } from '../chunk-76Z3X6JX.mjs';
2
- import '../chunk-3Y63XPIN.mjs';
3
- export { isAudienceTab, parseAudienceNonce, useCollaborativeHistory, useCollaborativeState, usePresenceTracking, useThemeSwitching, useYjsProvider } from '../chunk-PCCM7NVY.mjs';
4
- export { getAnimationInitialStyle } from '../chunk-NTWFXLZX.mjs';
5
- export { clearAudienceContent, forgetSessionDeck, getSessionTabId, loadAudienceContent, loadSessionDeck, rememberSessionDeck, restoreSessionDeck, storeAudienceContent } from '../chunk-VQX7G75Z.mjs';
6
- import '../chunk-JBSAKP4Z.mjs';
1
+ export { CollaborationProvider, CollaborationStatusIndicator, PowerPointViewer, RemoteUserCursors, UserAvatarBar } from '../chunk-N75WRHON.mjs';
2
+ import '../chunk-SUEZMQRT.mjs';
3
+ export { isAudienceTab, parseAudienceNonce, useCollaborativeHistory, useCollaborativeState, usePresenceTracking, useThemeSwitching, useYjsProvider } from '../chunk-VHFPZBUW.mjs';
4
+ export { getAnimationInitialStyle } from '../chunk-5T4Y4QPV.mjs';
5
+ export { clearAudienceContent, forgetSessionDeck, getSessionTabId, loadAudienceContent, loadSessionDeck, rememberSessionDeck, restoreSessionDeck, storeAudienceContent } from '../chunk-6BNPHEEX.mjs';
6
+ import '../chunk-TAGG5YNA.mjs';
7
7
  import '../chunk-XGB3TDIC.mjs';
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pptx-react-viewer",
3
- "version": "3.9.0",
3
+ "version": "3.11.0",
4
4
  "description": "React PowerPoint viewer and editor component: render, edit, and export PPTX slides in the browser.",
5
5
  "keywords": [
6
6
  "editor",
@@ -76,22 +76,22 @@
76
76
  },
77
77
  "dependencies": {
78
78
  "clsx": "^2.1.1",
79
- "dompurify": "^3.4.14",
80
- "html2canvas-pro": "^2.3.2",
81
- "pptx-viewer-mcp": "^2.4.0",
79
+ "dompurify": "^3.4.15",
80
+ "html2canvas-pro": "^2.4.2",
81
+ "pptx-viewer-mcp": "^2.5.0",
82
82
  "tailwind-merge": "^3.6.0"
83
83
  },
84
84
  "devDependencies": {
85
- "@ai-sdk/react": "^4.0.76",
85
+ "@ai-sdk/react": "^4.0.100",
86
86
  "@tailwindcss/cli": "^4.3.3",
87
87
  "@types/dompurify": "^3.2.0",
88
- "@types/react": "^19.2.17",
89
- "@types/react-dom": "^19.2.3",
88
+ "@types/react": "^19.3.0",
89
+ "@types/react-dom": "^19.3.0",
90
90
  "tailwindcss": "^4.3.3",
91
- "tsdown": "^0.22.14",
91
+ "tsdown": "^0.23.0",
92
92
  "tsup": "^8.5.1",
93
93
  "typescript": "^7.0.2",
94
- "vitest": "^4.1.10",
94
+ "vitest": "^4.1.11",
95
95
  "y-webrtc": "^10.3.0",
96
96
  "y-websocket": "^3.1.0",
97
97
  "yjs": "^13.6.32"
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file