pptx-react-viewer 4.6.0 → 4.7.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 (135) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/{AiChatPanel-3C7GM6ZF.js → AiChatPanel-3YILWCBX.js} +28 -28
  3. package/dist/AiChatPanel-3YILWCBX.js.br +0 -0
  4. package/dist/AiChatPanel-3YILWCBX.js.gz +0 -0
  5. package/dist/{AiChatPanel-L7DBCWE3.mjs → AiChatPanel-X2MVL5UP.mjs} +4 -4
  6. package/dist/AiChatPanel-X2MVL5UP.mjs.br +0 -0
  7. package/dist/AiChatPanel-X2MVL5UP.mjs.gz +0 -0
  8. package/dist/{Model3DScene-USKNPWWH.js → Model3DScene-G7P6ZAIO.js} +2 -2
  9. package/dist/{Model3DScene-USKNPWWH.js.br → Model3DScene-G7P6ZAIO.js.br} +0 -0
  10. package/dist/Model3DScene-G7P6ZAIO.js.gz +0 -0
  11. package/dist/{Model3DScene-IJ7YYTYU.mjs → Model3DScene-QFWI5CEE.mjs} +1 -1
  12. package/dist/Model3DScene-QFWI5CEE.mjs.br +0 -0
  13. package/dist/Model3DScene-QFWI5CEE.mjs.gz +0 -0
  14. package/dist/{chunk-5V5SMT5A.js → chunk-2BM4GBFZ.js} +5 -5
  15. package/dist/chunk-2BM4GBFZ.js.br +0 -0
  16. package/dist/chunk-2BM4GBFZ.js.gz +0 -0
  17. package/dist/{chunk-K6QHGABT.mjs → chunk-5J6NW3YS.mjs} +55 -28
  18. package/dist/chunk-5J6NW3YS.mjs.br +0 -0
  19. package/dist/chunk-5J6NW3YS.mjs.gz +0 -0
  20. package/dist/{chunk-FZSYLXJT.js → chunk-AQIXKTAT.js} +13118 -8704
  21. package/dist/chunk-AQIXKTAT.js.br +0 -0
  22. package/dist/chunk-AQIXKTAT.js.gz +0 -0
  23. package/dist/{chunk-VCAQSSGD.mjs → chunk-E5OIDWHO.mjs} +1 -1
  24. package/dist/chunk-E5OIDWHO.mjs.br +0 -0
  25. package/dist/chunk-E5OIDWHO.mjs.gz +0 -0
  26. package/dist/{chunk-Y4QUVWZC.js → chunk-FYAOOACZ.js} +241 -214
  27. package/dist/chunk-FYAOOACZ.js.br +0 -0
  28. package/dist/chunk-FYAOOACZ.js.gz +0 -0
  29. package/dist/{chunk-INX3E37P.mjs → chunk-OECUSL2B.mjs} +80 -283
  30. package/dist/chunk-OECUSL2B.mjs.br +0 -0
  31. package/dist/chunk-OECUSL2B.mjs.gz +0 -0
  32. package/dist/{chunk-ICEZL4TM.mjs → chunk-QLDHUKH2.mjs} +13074 -8701
  33. package/dist/chunk-QLDHUKH2.mjs.br +0 -0
  34. package/dist/chunk-QLDHUKH2.mjs.gz +0 -0
  35. package/dist/{chunk-IBHIXBC5.js → chunk-SR7ETIBF.js} +889 -1091
  36. package/dist/chunk-SR7ETIBF.js.br +0 -0
  37. package/dist/chunk-SR7ETIBF.js.gz +0 -0
  38. package/dist/{chunk-ZAQFTO4P.mjs → chunk-UBYFLXAU.mjs} +1174 -148
  39. package/dist/chunk-UBYFLXAU.mjs.br +0 -0
  40. package/dist/chunk-UBYFLXAU.mjs.gz +0 -0
  41. package/dist/{chunk-3JUZOKFI.js → chunk-UIAU3NR2.js} +44 -0
  42. package/dist/chunk-UIAU3NR2.js.br +0 -0
  43. package/dist/chunk-UIAU3NR2.js.gz +0 -0
  44. package/dist/{chunk-DFSWCVRW.js → chunk-VF4RA27Q.js} +3082 -2056
  45. package/dist/chunk-VF4RA27Q.js.br +0 -0
  46. package/dist/chunk-VF4RA27Q.js.gz +0 -0
  47. package/dist/{chunk-OOO4JL2N.mjs → chunk-WIEBQGQI.mjs} +44 -0
  48. package/dist/chunk-WIEBQGQI.mjs.br +0 -0
  49. package/dist/chunk-WIEBQGQI.mjs.gz +0 -0
  50. package/dist/i18n/de.cjs +70 -21
  51. package/dist/i18n/de.cjs.br +0 -0
  52. package/dist/i18n/de.cjs.gz +0 -0
  53. package/dist/i18n/de.mjs +70 -21
  54. package/dist/i18n/de.mjs.br +0 -0
  55. package/dist/i18n/de.mjs.gz +0 -0
  56. package/dist/i18n/es.cjs +70 -21
  57. package/dist/i18n/es.cjs.br +0 -0
  58. package/dist/i18n/es.cjs.gz +0 -0
  59. package/dist/i18n/es.mjs +70 -21
  60. package/dist/i18n/es.mjs.br +0 -0
  61. package/dist/i18n/es.mjs.gz +0 -0
  62. package/dist/i18n/fr.cjs +70 -21
  63. package/dist/i18n/fr.cjs.br +0 -0
  64. package/dist/i18n/fr.cjs.gz +0 -0
  65. package/dist/i18n/fr.mjs +70 -21
  66. package/dist/i18n/fr.mjs.br +0 -0
  67. package/dist/i18n/fr.mjs.gz +0 -0
  68. package/dist/i18n/zh-CN.cjs +48 -4
  69. package/dist/i18n/zh-CN.cjs.br +0 -0
  70. package/dist/i18n/zh-CN.cjs.gz +0 -0
  71. package/dist/i18n/zh-CN.mjs +48 -4
  72. package/dist/i18n/zh-CN.mjs.br +0 -0
  73. package/dist/i18n/zh-CN.mjs.gz +0 -0
  74. package/dist/i18n.js +4 -4
  75. package/dist/i18n.js.br +0 -0
  76. package/dist/i18n.js.gz +0 -0
  77. package/dist/i18n.mjs +1 -1
  78. package/dist/i18n.mjs.br +0 -0
  79. package/dist/i18n.mjs.gz +0 -0
  80. package/dist/index.d.ts +177 -15
  81. package/dist/index.js +63 -63
  82. package/dist/index.js.br +0 -0
  83. package/dist/index.js.gz +0 -0
  84. package/dist/index.mjs +6 -6
  85. package/dist/index.mjs.br +0 -0
  86. package/dist/index.mjs.gz +0 -0
  87. package/dist/internals.d.ts +230 -15
  88. package/dist/internals.js +105 -105
  89. package/dist/internals.js.br +0 -0
  90. package/dist/internals.js.gz +0 -0
  91. package/dist/internals.mjs +4 -4
  92. package/dist/internals.mjs.br +0 -0
  93. package/dist/internals.mjs.gz +0 -0
  94. package/dist/pptx-viewer.css +1 -1
  95. package/dist/pptx-viewer.css.br +0 -0
  96. package/dist/pptx-viewer.css.gz +0 -0
  97. package/dist/viewer/index.d.ts +149 -13
  98. package/dist/viewer/index.js +27 -27
  99. package/dist/viewer/index.js.br +0 -0
  100. package/dist/viewer/index.js.gz +0 -0
  101. package/dist/viewer/index.mjs +6 -6
  102. package/dist/viewer/index.mjs.br +3 -3
  103. package/dist/viewer/index.mjs.gz +0 -0
  104. package/package.json +1 -1
  105. package/dist/AiChatPanel-3C7GM6ZF.js.br +0 -0
  106. package/dist/AiChatPanel-3C7GM6ZF.js.gz +0 -0
  107. package/dist/AiChatPanel-L7DBCWE3.mjs.br +0 -0
  108. package/dist/AiChatPanel-L7DBCWE3.mjs.gz +0 -0
  109. package/dist/Model3DScene-IJ7YYTYU.mjs.br +0 -0
  110. package/dist/Model3DScene-IJ7YYTYU.mjs.gz +0 -0
  111. package/dist/Model3DScene-USKNPWWH.js.gz +0 -0
  112. package/dist/chunk-3JUZOKFI.js.br +0 -0
  113. package/dist/chunk-3JUZOKFI.js.gz +0 -0
  114. package/dist/chunk-5V5SMT5A.js.br +0 -0
  115. package/dist/chunk-5V5SMT5A.js.gz +0 -0
  116. package/dist/chunk-DFSWCVRW.js.br +0 -0
  117. package/dist/chunk-DFSWCVRW.js.gz +0 -0
  118. package/dist/chunk-FZSYLXJT.js.br +0 -0
  119. package/dist/chunk-FZSYLXJT.js.gz +0 -0
  120. package/dist/chunk-IBHIXBC5.js.br +0 -0
  121. package/dist/chunk-IBHIXBC5.js.gz +0 -0
  122. package/dist/chunk-ICEZL4TM.mjs.br +0 -0
  123. package/dist/chunk-ICEZL4TM.mjs.gz +0 -0
  124. package/dist/chunk-INX3E37P.mjs.br +0 -0
  125. package/dist/chunk-INX3E37P.mjs.gz +0 -0
  126. package/dist/chunk-K6QHGABT.mjs.br +0 -0
  127. package/dist/chunk-K6QHGABT.mjs.gz +0 -0
  128. package/dist/chunk-OOO4JL2N.mjs.br +0 -0
  129. package/dist/chunk-OOO4JL2N.mjs.gz +0 -0
  130. package/dist/chunk-VCAQSSGD.mjs.br +0 -0
  131. package/dist/chunk-VCAQSSGD.mjs.gz +0 -0
  132. package/dist/chunk-Y4QUVWZC.js.br +0 -0
  133. package/dist/chunk-Y4QUVWZC.js.gz +0 -0
  134. package/dist/chunk-ZAQFTO4P.mjs.br +0 -0
  135. package/dist/chunk-ZAQFTO4P.mjs.gz +0 -0
@@ -1485,8 +1485,16 @@ interface TextStyle {
1485
1485
  textOutlineWidth?: number;
1486
1486
  /** Text outline colour as hex string (`a:rPr > a:ln > a:solidFill`). */
1487
1487
  textOutlineColor?: string;
1488
+ /** Text outline dash preset (`a:rPr > a:ln > a:prstDash/@val`), e.g. `dash`; absent for solid. */
1489
+ textOutlineDash?: string;
1488
1490
  /** When true, the text body has no fill (`a:rPr > a:noFill`), producing hollow/outline-only text. */
1489
1491
  textFillNone?: boolean;
1492
+ /**
1493
+ * When true, the run authored an EMPTY `<a:effectLst/>`: an explicit "no
1494
+ * effects" override that blocks an inherited shadow or glow. Kept so a
1495
+ * rewrite re-emits it instead of letting the inherited effect return.
1496
+ */
1497
+ textEffectsExplicitNone?: boolean;
1490
1498
  /** Superscript/subscript baseline shift as percentage (`a:rPr/@baseline`). Positive = super, negative = sub. */
1491
1499
  baseline?: number;
1492
1500
  /** Character spacing in hundredths of a point (`a:rPr/@spc`). */
@@ -1520,6 +1528,25 @@ interface TextStyle {
1520
1528
  textFillPatternForeground?: string;
1521
1529
  /** Text-level pattern background colour. */
1522
1530
  textFillPatternBackground?: string;
1531
+ /**
1532
+ * Raw `a:rPr > a:blipFill` XML, preserved verbatim for round-trip
1533
+ * serialization AND as the input to the image resolution pass that fills
1534
+ * in {@link textFillBlipUrl} (parsing a run's fill happens synchronously,
1535
+ * with no zip/relationship access at that point; resolving the blip to a
1536
+ * displayable URL needs both, so it happens in a later async pass over
1537
+ * the slide's parsed elements, mirroring how a shape's OWN image fill is
1538
+ * resolved). A picture-filled text run (`a:rPr > a:blipFill`) was
1539
+ * documented as handled ("Handles gradient fills, pattern fills, and
1540
+ * image fills on text runs") but never actually parsed, so it silently
1541
+ * fell through to the run's plain `color` and rendered solid black
1542
+ * (COM-verified: `audit-text` slide 13's "PICTURE FILL" run shows the
1543
+ * fill image through the glyphs in PowerPoint).
1544
+ */
1545
+ textFillBlipXml?: XmlObject;
1546
+ /** Resolved displayable URL for {@link textFillBlipXml}, or the archive-relative path when unresolved (lazy decode). */
1547
+ textFillBlipUrl?: string;
1548
+ /** Tiling mode for {@link textFillBlipUrl} (`a:blipFill/a:tile` present -> 'tile', else 'stretch'). */
1549
+ textFillBlipMode?: 'stretch' | 'tile';
1523
1550
  hyperlink?: string;
1524
1551
  /** Relationship ID for the hyperlink (`a:hlinkClick/@r:id`) — preserved for round-trip serialization. */
1525
1552
  hyperlinkRId?: string;
@@ -1605,6 +1632,13 @@ interface TextStyle {
1605
1632
  position: number;
1606
1633
  align: 'l' | 'ctr' | 'r' | 'dec';
1607
1634
  leader?: 'none' | 'dot' | 'hyphen' | 'underscore';
1635
+ /**
1636
+ * True when the source spelled out the schema-default `@algn="l"`, so the
1637
+ * writer re-emits it instead of treating it as an omitted default.
1638
+ */
1639
+ alignAuthored?: boolean;
1640
+ /** True when the source spelled out the schema-default `@leader="none"`. */
1641
+ leaderAuthored?: boolean;
1608
1642
  }>;
1609
1643
  /**
1610
1644
  * True when the paragraph's own `a:pPr` authored an EMPTY `<a:tabLst/>`
@@ -1968,6 +2002,19 @@ interface TextStyle {
1968
2002
  * convention used for {@link bulletInfo} / {@link endParaRunProperties}).
1969
2003
  */
1970
2004
  paragraphDefaultRunPropertiesXml?: XmlObject;
2005
+ /**
2006
+ * The bullet colour / size / typeface children (`a:buClrTx`, `a:buClr`,
2007
+ * `a:buSzTx`, `a:buSzPct`, `a:buSzPts`, `a:buFontTx`, `a:buFont`) a
2008
+ * paragraph authored in its own `<a:pPr>` WITHOUT a bullet type
2009
+ * (`a:buNone` / `a:buChar` / `a:buAutoNum` / `a:buBlip`), captured
2010
+ * verbatim in source order. Such a paragraph restyles an inherited bullet
2011
+ * rather than declaring one, so its {@link BulletInfo} resolves from the
2012
+ * cascade and is (correctly) not written back; without this capture the
2013
+ * paragraph's own override vanished on every rewrite.
2014
+ *
2015
+ * Only meaningful on a paragraph's own authored properties.
2016
+ */
2017
+ paragraphBulletPropertiesXml?: XmlObject;
1971
2018
  }
1972
2019
  /**
1973
2020
  * Structured bullet metadata attached to the first {@link TextSegment}
@@ -3236,6 +3283,26 @@ type PptxChartMarkerSymbol = 'circle' | 'dash' | 'diamond' | 'dot' | 'none' | 'p
3236
3283
  */
3237
3284
  type PptxChartScatterStyle = 'none' | 'line' | 'lineMarker' | 'marker' | 'smooth' | 'smoothMarker';
3238
3285
  /** Shape properties extracted from c:spPr for chart formatting. */
3286
+ /**
3287
+ * A render-ready gradient fill from a chart `c:spPr/a:gradFill` (chart area,
3288
+ * plot area or series). Positions are 0..100; a linear gradient's `angle` is
3289
+ * in degrees clockwise from left-to-right (`a:lin/@ang`); a radial (`a:path`)
3290
+ * gradient centres on `focalPoint` (0..1 fractions of the box), the middle
3291
+ * when absent.
3292
+ */
3293
+ interface PptxChartGradientFill {
3294
+ type: 'linear' | 'radial';
3295
+ stops: Array<{
3296
+ color: string;
3297
+ position: number;
3298
+ opacity?: number;
3299
+ }>;
3300
+ angle?: number;
3301
+ focalPoint?: {
3302
+ x: number;
3303
+ y: number;
3304
+ };
3305
+ }
3239
3306
  interface PptxChartShapeProps {
3240
3307
  fillColor?: string;
3241
3308
  strokeColor?: string;
@@ -3561,6 +3628,12 @@ interface PptxChartSeries {
3561
3628
  */
3562
3629
  idx?: number;
3563
3630
  values: number[];
3631
+ /**
3632
+ * Series gradient fill (`c:ser/c:spPr/a:gradFill`), painted on every mark
3633
+ * of the series that has no per-point override. Render-only: the series'
3634
+ * own `c:spPr` round-trips untouched.
3635
+ */
3636
+ gradientFill?: PptxChartGradientFill;
3564
3637
  /**
3565
3638
  * Per-series x values from `c:ser/c:xVal` (scatter and bubble series only).
3566
3639
  *
@@ -3735,6 +3808,12 @@ interface PptxChartFilteredSeries {
3735
3808
  * and `c:dLblPos`.
3736
3809
  */
3737
3810
  interface PptxChartDataLabelOptions {
3811
+ /** Label box fill/outline (`c:dLbls/c:spPr`), see `chart-data-label-box.ts`. */
3812
+ labelShape?: PptxChartShapeProps;
3813
+ /** Callout geometry of the label box (`c15:spPr/a:prstGeom/@prst`, e.g. `wedgeRectCallout`). */
3814
+ calloutShape?: string;
3815
+ /** The chart15 extension's `c15:showLeaderLines`, which wins for a moved label's leader line. */
3816
+ extLeaderLines?: boolean;
3738
3817
  /** Show the numeric value (`c:showVal`). */
3739
3818
  showValue?: boolean;
3740
3819
  /** Show the category name (`c:showCatName`). */
@@ -3860,6 +3939,10 @@ interface PptxChartStyle {
3860
3939
  chartAreaFill?: string;
3861
3940
  /** Plot-area fill from `c:plotArea/c:spPr`. See {@link chartAreaFill}. */
3862
3941
  plotAreaFill?: string;
3942
+ /** Chart-area gradient (`c:chartSpace/c:spPr/a:gradFill`); wins over {@link chartAreaFill}. */
3943
+ chartAreaGradient?: PptxChartGradientFill;
3944
+ /** Plot-area gradient (`c:plotArea/c:spPr/a:gradFill`); wins over {@link plotAreaFill}. */
3945
+ plotAreaGradient?: PptxChartGradientFill;
3863
3946
  /** Whether data labels are shown. */
3864
3947
  hasDataLabels?: boolean;
3865
3948
  /** Chart-level data-label content/position options (when `hasDataLabels`). */
@@ -7728,7 +7811,15 @@ type PptxAnimationTimingCurve = 'ease' | 'ease-in' | 'ease-out' | 'linear';
7728
7811
  /** Repeat mode for animations. */
7729
7812
  type PptxAnimationRepeatMode = 'untilNextClick' | 'untilEndOfSlide';
7730
7813
  /** Animation trigger type from OOXML `p:cTn`. */
7731
- type PptxAnimationTrigger = 'onClick' | 'onShapeClick' | 'onHover' | 'afterPrevious' | 'withPrevious' | 'afterDelay';
7814
+ type PptxAnimationTrigger = 'onClick' | 'onShapeClick' | 'onHover' | 'afterPrevious' | 'withPrevious' | 'afterDelay' |
7815
+ /**
7816
+ * Starts when a media element's playback reaches a named bookmark
7817
+ * (PowerPoint's "Trigger > On Bookmark"). The media element is
7818
+ * {@link PptxElementAnimation.triggerShapeId} and the bookmark
7819
+ * {@link PptxElementAnimation.triggerBookmark}; saved as an interactive
7820
+ * sequence gated on `p:cond evt="onMediaBookmark"` with a `p14:bmkTgt`.
7821
+ */
7822
+ 'onMediaBookmark';
7732
7823
  /**
7733
7824
  * Native animation kind. The historic shape-targeted preset animations are
7734
7825
  * implicitly the default kind (`undefined`). Media animations (`p:audio`,
@@ -7881,8 +7972,13 @@ interface PptxNativeAnimation {
7881
7972
  target?: PptxAnimationTarget;
7882
7973
  /** Trigger type. */
7883
7974
  trigger?: PptxAnimationTrigger;
7884
- /** Shape ID that triggers this animation when clicked (interactive sequence). */
7975
+ /**
7976
+ * Shape ID that triggers this animation: the clicked shape of an
7977
+ * interactive sequence, or the media element of an `onMediaBookmark` one.
7978
+ */
7885
7979
  triggerShapeId?: string;
7980
+ /** Bookmark name an `onMediaBookmark` interactive sequence waits for. */
7981
+ triggerBookmark?: string;
7886
7982
  /** Whether this effect belongs to an OOXML `interactiveSeq`. */
7887
7983
  interactiveSequence?: boolean;
7888
7984
  /** Whether `p:endSync/p:rtn[@val="all"]` makes that sequence replayable. */
@@ -8381,12 +8477,15 @@ interface PptxAttributeAnimation {
8381
8477
  /**
8382
8478
  * `p:anim/@_p14:bounceEnd` (Office 2010 `p14` extension attribute,
8383
8479
  * MS-OI29500), normalized to a 0-1 fraction of this behaviour's own
8384
- * duration. PowerPoint's Fly In "Bounce End" effect option writes this on
8385
- * the position-ramp `p:anim` node(s): the fraction of the duration at
8386
- * which the primary travel completes, with the remainder spent bouncing
8387
- * and settling at the final value. Mirrored verbatim by PowerPoint onto
8388
- * the enclosing `p:cTn/@_p14:presetBounceEnd`. Absent for every animation
8389
- * that doesn't use this effect option (the overwhelming majority).
8480
+ * duration. PowerPoint's "Bounce End" effect option (COM:
8481
+ * `Effect.Timing.BounceEnd` + `BounceEndIntensity`) writes this on the
8482
+ * position-ramp `p:anim` node(s): the share of the duration spent
8483
+ * BOUNCING at the end. Measured from PowerPoint's own CreateVideo frames,
8484
+ * the travel completes at `1 - bounceEnd` and the rest is a damped
8485
+ * oscillation about the final value (see shared's `animation-bounce-end`).
8486
+ * Mirrored verbatim by PowerPoint onto the enclosing
8487
+ * `p:cTn/@_p14:presetBounceEnd`. Absent for every animation that doesn't
8488
+ * use this effect option (the overwhelming majority).
8390
8489
  */
8391
8490
  bounceEnd?: number;
8392
8491
  }
@@ -8564,9 +8663,24 @@ interface PptxElementAnimation {
8564
8663
  durationMs?: number;
8565
8664
  delayMs?: number;
8566
8665
  order?: number;
8666
+ /**
8667
+ * The {@link order} the loader derived from the slide's `p:timing` tree for
8668
+ * an entry whose `pptx:editorMeta` record authored no `@order`. The tree
8669
+ * already expresses that position (and every load re-derives it), so the
8670
+ * writer omits `@order` while `order` still equals this value; a reorder
8671
+ * changes `order` and the attribute is written again. Load-time bookkeeping
8672
+ * only; never set it by hand.
8673
+ */
8674
+ orderFromTimeline?: number;
8567
8675
  trigger?: PptxAnimationTrigger;
8568
- /** Shape ID that triggers this animation when clicked (interactive sequence). */
8676
+ /**
8677
+ * Shape ID that triggers this animation: the shape clicked for
8678
+ * `onShapeClick`, or the media element whose bookmark fires it for
8679
+ * `onMediaBookmark`.
8680
+ */
8569
8681
  triggerShapeId?: string;
8682
+ /** Bookmark name (`p14:bmk/@name`) an `onMediaBookmark` trigger waits for. */
8683
+ triggerBookmark?: string;
8570
8684
  timingCurve?: PptxAnimationTimingCurve;
8571
8685
  repeatCount?: number;
8572
8686
  repeatMode?: PptxAnimationRepeatMode;
@@ -12315,8 +12429,12 @@ declare function loadAudienceContent(sessionId?: string): Promise<Uint8Array | n
12315
12429
  declare function clearAudienceContent(sessionId?: string): Promise<void>;
12316
12430
  /** A logical editor command produced by one key press. */
12317
12431
  type EditorKeyActionName = 'undo' | 'redo' | 'copy' | 'cut' | 'paste' | 'duplicate' | 'delete' | 'selectAll' | 'group' | 'ungroup' | 'nudge' | 'prevSlide' | 'nextSlide' | 'escape' | 'find' | 'findReplace' | 'toggleShortcuts' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'increaseFontSize' | 'decreaseFontSize' | 'copyFormat' | 'pasteFormat' | 'newSlide' | 'hyperlink' | 'clearFormatting' | 'cycleSelectionNext' | 'cycleSelectionPrev' | 'pasteSpecial';
12432
+ //#endregion
12433
+ //#region src/render/merge-shapes/merge-shapes-menu.d.ts
12434
+ /** The right-click command id for each operation. */
12435
+ type MergeShapesCommandId = 'merge-union' | 'merge-combine' | 'merge-fragment' | 'merge-intersect' | 'merge-subtract';
12318
12436
  /** Every command a canvas context menu can offer, in no particular order. */
12319
- type ContextMenuCommandId = 'copy' | 'cut' | 'paste' | 'duplicate' | 'edit-text' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'ai-ask' | 'ai-fix' | 'comment' | 'hyperlink' | 'table-insert-row-above' | 'table-insert-row-below' | 'table-delete-row' | 'table-insert-col-left' | 'table-insert-col-right' | 'table-delete-col' | 'table-merge-selected' | 'table-merge-right' | 'table-merge-down' | 'table-split' | 'group' | 'ungroup' | 'save-as-picture' | 'edit-alt-text' | 'size-and-position' | 'format-shape' | 'delete';
12437
+ type ContextMenuCommandId = 'copy' | 'cut' | 'paste' | 'duplicate' | 'edit-text' | 'edit-points' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'ai-ask' | 'ai-fix' | 'comment' | 'hyperlink' | 'table-insert-row-above' | 'table-insert-row-below' | 'table-delete-row' | 'table-insert-col-left' | 'table-insert-col-right' | 'table-delete-col' | 'table-merge-selected' | 'table-merge-right' | 'table-merge-down' | 'table-split' | 'group' | 'ungroup' | 'crop' | MergeShapesCommandId | 'save-as-picture' | 'edit-alt-text' | 'size-and-position' | 'format-shape' | 'delete';
12320
12438
  //#endregion
12321
12439
  //#region src/render/canvas-context-menu-commands.d.ts
12322
12440
  /**
@@ -12391,7 +12509,7 @@ interface AccountAuthConfig {
12391
12509
  * whole control cluster (zoom in/out/fit, prev/next) rather than each button
12392
12510
  * in it, matching how hosts actually want to hide/keep them as a unit.
12393
12511
  */
12394
- type ToolbarButtonId = 'share' | 'broadcast' | 'export' | 'undo' | 'redo' | 'record' | 'notes' | 'fullscreen' | 'zoom' | 'navigation';
12512
+ type ToolbarButtonId = 'share' | 'broadcast' | 'export' | 'undo' | 'redo' | 'record' | 'notes' | 'fullscreen' | 'zoom' | 'navigation' | 'mergeShapes' | 'crop';
12395
12513
  /** A top-level ribbon tab. `record` intentionally shares its id with the quick-access Record button above: both surface the same recording feature, so hiding one hides the other. */
12396
12514
  type ToolbarTabId = 'file' | 'home' | 'insert' | 'draw' | 'design' | 'transitions' | 'animations' | 'slideShow' | 'record' | 'review' | 'view' | 'help';
12397
12515
  type ToolbarActionId = ToolbarButtonId | ToolbarTabId;
@@ -12554,6 +12672,12 @@ interface ViewerOptions {
12554
12672
  }
12555
12673
  type ViewerOptionsGroupId = keyof ViewerOptions;
12556
12674
  type ViewerOptionPrimitive = boolean | number | string;
12675
+ /** Every command the Edit Points right-click menu can offer. */
12676
+ type EditPointsCommandId = 'add-point' | 'delete-point' | 'delete-segment' | 'open-path' | 'close-path' | 'smooth-point' | 'straight-point' | 'corner-point' | 'straight-segment' | 'curved-segment' | 'exit';
12677
+ //#endregion
12678
+ //#region src/render/edit-points/freeform-tool-geometry.d.ts
12679
+ /** The two click-to-place drawing tools. */
12680
+ type FreeformToolKind = 'freeformShape' | 'curve';
12557
12681
  //#endregion
12558
12682
  //#region src/render/options/viewer-options-controls.d.ts
12559
12683
  /**
@@ -12624,6 +12748,11 @@ interface ContextMenuCustomization {
12624
12748
  hiddenElementCommands?: readonly ContextMenuCommandId[];
12625
12749
  /** Entries to remove from the empty-canvas menu. */
12626
12750
  hiddenCanvasCommands?: readonly CanvasContextMenuCommandId[];
12751
+ /**
12752
+ * Entries to remove from the Edit Points menu (right-click a vertex or a
12753
+ * segment while editing a shape's points).
12754
+ */
12755
+ hiddenEditPointsCommands?: readonly EditPointsCommandId[];
12627
12756
  /** Remove the element context menu entirely. */
12628
12757
  disableElementMenu?: boolean;
12629
12758
  /** Remove the empty-canvas context menu entirely. */
@@ -12653,7 +12782,12 @@ interface KeyboardCustomization {
12653
12782
  */
12654
12783
  type ViewerPanelId = 'statusBar' | 'slidesPane' | 'inspector' | 'notes' | 'quickAccessToolbar' | 'titleBar';
12655
12784
  /** Feature areas that can be switched off as a whole. */
12656
- type ViewerFeatureId = 'ai' | 'collaboration' | 'comments' | 'presentMode';
12785
+ type ViewerFeatureId = 'ai' | 'collaboration' | 'comments' | 'presentMode' | 'editPoints';
12786
+ /**
12787
+ * The click-to-place drawing tools of Insert > Shapes > Lines: Freeform:
12788
+ * Shape and Curve.
12789
+ */
12790
+ type ViewerDrawingToolId = FreeformToolKind;
12657
12791
  /** Dialogs (and the entry points that open them) a host can remove. */
12658
12792
  type ViewerDialogId = 'options' | 'share' | 'broadcast' | 'print' | 'export';
12659
12793
  /** Export formats offered by the File > Export page. */
@@ -12676,6 +12810,8 @@ interface ViewerCustomization {
12676
12810
  hiddenDialogs?: readonly ViewerDialogId[];
12677
12811
  /** Export formats to remove from File > Export. */
12678
12812
  hiddenExportFormats?: readonly ViewerExportFormatId[];
12813
+ /** Drawing tools to remove from the Insert > Shapes gallery. */
12814
+ hiddenDrawingTools?: readonly ViewerDrawingToolId[];
12679
12815
  }
12680
12816
  //#endregion
12681
12817
  //#region src/render/customization/customization-controller.d.ts
@@ -13185,7 +13321,7 @@ interface CanvasContextMenuState {
13185
13321
  y: number;
13186
13322
  }
13187
13323
  /** Identifies an action triggered from the element right-click context menu. */
13188
- type ElementContextMenuAction = 'copy' | 'cut' | 'paste' | 'duplicate' | 'delete' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'bringForward' | 'sendBackward' | 'bringToFront' | 'sendToBack' | 'comment' | 'addComment' | 'group' | 'ungroup' | 'editPoints' | 'editHyperlink' | 'edit-text' | 'save-as-picture' | 'edit-alt-text' | 'size-and-position' | 'format-shape';
13324
+ type ElementContextMenuAction = 'copy' | 'cut' | 'paste' | 'duplicate' | 'delete' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'bringForward' | 'sendBackward' | 'bringToFront' | 'sendToBack' | 'comment' | 'addComment' | 'group' | 'ungroup' | 'editPoints' | 'edit-points' | 'editHyperlink' | 'edit-text' | 'save-as-picture' | 'edit-alt-text' | 'size-and-position' | 'format-shape';
13189
13325
  /**
13190
13326
  * State of an active marquee (rubber-band) selection rectangle.
13191
13327
  * Created when the user clicks and drags on the canvas background,
@@ -1,96 +1,96 @@
1
1
  'use strict';
2
2
 
3
- var chunkDFSWCVRW_js = require('../chunk-DFSWCVRW.js');
4
- require('../chunk-5V5SMT5A.js');
5
- var chunkIBHIXBC5_js = require('../chunk-IBHIXBC5.js');
6
- var chunkY4QUVWZC_js = require('../chunk-Y4QUVWZC.js');
7
- var chunkFZSYLXJT_js = require('../chunk-FZSYLXJT.js');
8
- require('../chunk-3JUZOKFI.js');
3
+ var chunkVF4RA27Q_js = require('../chunk-VF4RA27Q.js');
4
+ require('../chunk-2BM4GBFZ.js');
5
+ var chunkSR7ETIBF_js = require('../chunk-SR7ETIBF.js');
6
+ var chunkFYAOOACZ_js = require('../chunk-FYAOOACZ.js');
7
+ var chunkAQIXKTAT_js = require('../chunk-AQIXKTAT.js');
8
+ require('../chunk-UIAU3NR2.js');
9
9
  require('../chunk-4VNS5WPM.js');
10
10
 
11
11
 
12
12
 
13
13
  Object.defineProperty(exports, "CollaborationStatusIndicator", {
14
14
  enumerable: true,
15
- get: function () { return chunkDFSWCVRW_js.CollaborationStatusIndicator; }
15
+ get: function () { return chunkVF4RA27Q_js.CollaborationStatusIndicator; }
16
16
  });
17
17
  Object.defineProperty(exports, "PowerPointViewer", {
18
18
  enumerable: true,
19
- get: function () { return chunkDFSWCVRW_js.PowerPointViewer; }
19
+ get: function () { return chunkVF4RA27Q_js.PowerPointViewer; }
20
20
  });
21
21
  Object.defineProperty(exports, "UserAvatarBar", {
22
22
  enumerable: true,
23
- get: function () { return chunkDFSWCVRW_js.UserAvatarBar; }
23
+ get: function () { return chunkVF4RA27Q_js.UserAvatarBar; }
24
24
  });
25
25
  Object.defineProperty(exports, "CollaborationProvider", {
26
26
  enumerable: true,
27
- get: function () { return chunkIBHIXBC5_js.CollaborationProvider; }
27
+ get: function () { return chunkSR7ETIBF_js.CollaborationProvider; }
28
28
  });
29
29
  Object.defineProperty(exports, "RemoteUserCursors", {
30
30
  enumerable: true,
31
- get: function () { return chunkIBHIXBC5_js.RemoteUserCursors; }
31
+ get: function () { return chunkSR7ETIBF_js.RemoteUserCursors; }
32
32
  });
33
33
  Object.defineProperty(exports, "isAudienceTab", {
34
34
  enumerable: true,
35
- get: function () { return chunkIBHIXBC5_js.isAudienceTab; }
35
+ get: function () { return chunkSR7ETIBF_js.isAudienceTab; }
36
36
  });
37
37
  Object.defineProperty(exports, "parseAudienceNonce", {
38
38
  enumerable: true,
39
- get: function () { return chunkIBHIXBC5_js.parseAudienceNonce; }
39
+ get: function () { return chunkSR7ETIBF_js.parseAudienceNonce; }
40
40
  });
41
41
  Object.defineProperty(exports, "useCollaborativeHistory", {
42
42
  enumerable: true,
43
- get: function () { return chunkIBHIXBC5_js.useCollaborativeHistory; }
43
+ get: function () { return chunkSR7ETIBF_js.useCollaborativeHistory; }
44
44
  });
45
45
  Object.defineProperty(exports, "useCollaborativeState", {
46
46
  enumerable: true,
47
- get: function () { return chunkIBHIXBC5_js.useCollaborativeState; }
47
+ get: function () { return chunkSR7ETIBF_js.useCollaborativeState; }
48
48
  });
49
49
  Object.defineProperty(exports, "usePresenceTracking", {
50
50
  enumerable: true,
51
- get: function () { return chunkIBHIXBC5_js.usePresenceTracking; }
51
+ get: function () { return chunkSR7ETIBF_js.usePresenceTracking; }
52
52
  });
53
53
  Object.defineProperty(exports, "useThemeSwitching", {
54
54
  enumerable: true,
55
- get: function () { return chunkIBHIXBC5_js.useThemeSwitching; }
55
+ get: function () { return chunkSR7ETIBF_js.useThemeSwitching; }
56
56
  });
57
57
  Object.defineProperty(exports, "useYjsProvider", {
58
58
  enumerable: true,
59
- get: function () { return chunkIBHIXBC5_js.useYjsProvider; }
59
+ get: function () { return chunkSR7ETIBF_js.useYjsProvider; }
60
60
  });
61
61
  Object.defineProperty(exports, "getAnimationInitialStyle", {
62
62
  enumerable: true,
63
- get: function () { return chunkY4QUVWZC_js.getAnimationInitialStyle; }
63
+ get: function () { return chunkFYAOOACZ_js.getAnimationInitialStyle; }
64
64
  });
65
65
  Object.defineProperty(exports, "clearAudienceContent", {
66
66
  enumerable: true,
67
- get: function () { return chunkFZSYLXJT_js.clearAudienceContent; }
67
+ get: function () { return chunkAQIXKTAT_js.clearAudienceContent; }
68
68
  });
69
69
  Object.defineProperty(exports, "forgetSessionDeck", {
70
70
  enumerable: true,
71
- get: function () { return chunkFZSYLXJT_js.forgetSessionDeck; }
71
+ get: function () { return chunkAQIXKTAT_js.forgetSessionDeck; }
72
72
  });
73
73
  Object.defineProperty(exports, "getSessionTabId", {
74
74
  enumerable: true,
75
- get: function () { return chunkFZSYLXJT_js.getSessionTabId; }
75
+ get: function () { return chunkAQIXKTAT_js.getSessionTabId; }
76
76
  });
77
77
  Object.defineProperty(exports, "loadAudienceContent", {
78
78
  enumerable: true,
79
- get: function () { return chunkFZSYLXJT_js.loadAudienceContent; }
79
+ get: function () { return chunkAQIXKTAT_js.loadAudienceContent; }
80
80
  });
81
81
  Object.defineProperty(exports, "loadSessionDeck", {
82
82
  enumerable: true,
83
- get: function () { return chunkFZSYLXJT_js.loadSessionDeck; }
83
+ get: function () { return chunkAQIXKTAT_js.loadSessionDeck; }
84
84
  });
85
85
  Object.defineProperty(exports, "rememberSessionDeck", {
86
86
  enumerable: true,
87
- get: function () { return chunkFZSYLXJT_js.rememberSessionDeck; }
87
+ get: function () { return chunkAQIXKTAT_js.rememberSessionDeck; }
88
88
  });
89
89
  Object.defineProperty(exports, "restoreSessionDeck", {
90
90
  enumerable: true,
91
- get: function () { return chunkFZSYLXJT_js.restoreSessionDeck; }
91
+ get: function () { return chunkAQIXKTAT_js.restoreSessionDeck; }
92
92
  });
93
93
  Object.defineProperty(exports, "storeAudienceContent", {
94
94
  enumerable: true,
95
- get: function () { return chunkFZSYLXJT_js.storeAudienceContent; }
95
+ get: function () { return chunkAQIXKTAT_js.storeAudienceContent; }
96
96
  });
Binary file
Binary file
@@ -1,7 +1,7 @@
1
- export { CollaborationStatusIndicator, PowerPointViewer, UserAvatarBar } from '../chunk-ZAQFTO4P.mjs';
2
- import '../chunk-VCAQSSGD.mjs';
3
- export { CollaborationProvider, RemoteUserCursors, isAudienceTab, parseAudienceNonce, useCollaborativeHistory, useCollaborativeState, usePresenceTracking, useThemeSwitching, useYjsProvider } from '../chunk-INX3E37P.mjs';
4
- export { getAnimationInitialStyle } from '../chunk-K6QHGABT.mjs';
5
- export { clearAudienceContent, forgetSessionDeck, getSessionTabId, loadAudienceContent, loadSessionDeck, rememberSessionDeck, restoreSessionDeck, storeAudienceContent } from '../chunk-ICEZL4TM.mjs';
6
- import '../chunk-OOO4JL2N.mjs';
1
+ export { CollaborationStatusIndicator, PowerPointViewer, UserAvatarBar } from '../chunk-UBYFLXAU.mjs';
2
+ import '../chunk-E5OIDWHO.mjs';
3
+ export { CollaborationProvider, RemoteUserCursors, isAudienceTab, parseAudienceNonce, useCollaborativeHistory, useCollaborativeState, usePresenceTracking, useThemeSwitching, useYjsProvider } from '../chunk-OECUSL2B.mjs';
4
+ export { getAnimationInitialStyle } from '../chunk-5J6NW3YS.mjs';
5
+ export { clearAudienceContent, forgetSessionDeck, getSessionTabId, loadAudienceContent, loadSessionDeck, rememberSessionDeck, restoreSessionDeck, storeAudienceContent } from '../chunk-QLDHUKH2.mjs';
6
+ import '../chunk-WIEBQGQI.mjs';
7
7
  import '../chunk-XGB3TDIC.mjs';
@@ -1,3 +1,3 @@
1
- ����8�� ݣ�u��vT��7Ra�m��6��^�a���x$�m[D챷�-��@���ɰ߽�ȶ�ƣ�����!��x���0Q��^���?D�T��[��c# ��|s���a'P�r����`��1
2
- ~�.W���*k;ܑEI�T����Ǩ��V�J]�+;��BE~a%J'��:�9��vPq:'1ɚ�x��>�'dp3�]1�LYɐr���XH|�5g��F]hc������[��B-���TB�9ΨL
3
- _�z��o<|7���@e*\��*
1
+ �@��&�i�%AS�Ju�i�n:�H��ͯ�iV
2
+ �H�
3
+ �wSS9��Ƣ9,]|
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pptx-react-viewer",
3
- "version": "4.6.0",
3
+ "version": "4.7.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",
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