pptx-react-viewer 4.27.0 → 4.30.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 (128) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/README.md +37 -33
  3. package/dist/{AiChatPanel-3J6XGIJ4.mjs → AiChatPanel-42FL4CPM.mjs} +2 -2
  4. package/dist/AiChatPanel-42FL4CPM.mjs.br +0 -0
  5. package/dist/AiChatPanel-42FL4CPM.mjs.gz +0 -0
  6. package/dist/{AiChatPanel-EGTSK4T5.js → AiChatPanel-6VWCT6NE.js} +10 -10
  7. package/dist/AiChatPanel-6VWCT6NE.js.br +0 -0
  8. package/dist/AiChatPanel-6VWCT6NE.js.gz +0 -0
  9. package/dist/{Model3DScene-2V2GQ6FY.mjs → Model3DScene-EZDCI7TT.mjs} +1 -1
  10. package/dist/Model3DScene-EZDCI7TT.mjs.br +0 -0
  11. package/dist/Model3DScene-EZDCI7TT.mjs.gz +0 -0
  12. package/dist/{Model3DScene-Q3XEZSWV.js → Model3DScene-KYIYYLMY.js} +1 -1
  13. package/dist/Model3DScene-KYIYYLMY.js.br +0 -0
  14. package/dist/Model3DScene-KYIYYLMY.js.gz +0 -0
  15. package/dist/{chunk-QGM4M3NI.js → chunk-DFFCFNK2.js} +2 -0
  16. package/dist/chunk-DFFCFNK2.js.br +0 -0
  17. package/dist/chunk-DFFCFNK2.js.gz +0 -0
  18. package/dist/{chunk-6DZX6EAA.mjs → chunk-GDQSMJQZ.mjs} +2 -1
  19. package/dist/chunk-GDQSMJQZ.mjs.br +0 -0
  20. package/dist/chunk-GDQSMJQZ.mjs.gz +0 -0
  21. package/dist/{chunk-ZK7UEEXE.mjs → chunk-GXMGJ5A3.mjs} +85 -87
  22. package/dist/chunk-GXMGJ5A3.mjs.br +0 -0
  23. package/dist/chunk-GXMGJ5A3.mjs.gz +0 -0
  24. package/dist/{chunk-34AXBLYH.mjs → chunk-KRXS36RB.mjs} +83 -87
  25. package/dist/chunk-KRXS36RB.mjs.br +0 -0
  26. package/dist/chunk-KRXS36RB.mjs.gz +0 -0
  27. package/dist/{chunk-MQCBMO6A.js → chunk-MFGD7XVJ.js} +264 -268
  28. package/dist/chunk-MFGD7XVJ.js.br +0 -0
  29. package/dist/chunk-MFGD7XVJ.js.gz +0 -0
  30. package/dist/chunk-RHNJ4IU2.js +4229 -0
  31. package/dist/chunk-RHNJ4IU2.js.br +0 -0
  32. package/dist/chunk-RHNJ4IU2.js.gz +0 -0
  33. package/dist/{chunk-5RQTZ376.js → chunk-XKV2QDAO.js} +396 -398
  34. package/dist/chunk-XKV2QDAO.js.br +0 -0
  35. package/dist/chunk-XKV2QDAO.js.gz +0 -0
  36. package/dist/chunk-ZIBAN7RL.mjs +3888 -0
  37. package/dist/chunk-ZIBAN7RL.mjs.br +0 -0
  38. package/dist/chunk-ZIBAN7RL.mjs.gz +0 -0
  39. package/dist/i18n.js +1 -1
  40. package/dist/i18n.js.br +2 -2
  41. package/dist/i18n.js.gz +0 -0
  42. package/dist/i18n.mjs +1 -1
  43. package/dist/i18n.mjs.br +0 -0
  44. package/dist/i18n.mjs.gz +0 -0
  45. package/dist/index.d.ts +22 -0
  46. package/dist/index.js +25 -25
  47. package/dist/index.js.br +0 -0
  48. package/dist/index.js.gz +0 -0
  49. package/dist/index.mjs +4 -4
  50. package/dist/index.mjs.br +0 -0
  51. package/dist/index.mjs.gz +0 -0
  52. package/dist/internals.d.ts +11 -1
  53. package/dist/internals.js +82 -82
  54. package/dist/internals.js.br +0 -0
  55. package/dist/internals.js.gz +0 -0
  56. package/dist/internals.mjs +3 -3
  57. package/dist/internals.mjs.br +0 -0
  58. package/dist/internals.mjs.gz +0 -0
  59. package/dist/{three.module-A6ACXOES.mjs → three.module-2R4ADL7W.mjs} +1 -1
  60. package/dist/three.module-2R4ADL7W.mjs.br +0 -0
  61. package/dist/three.module-2R4ADL7W.mjs.gz +0 -0
  62. package/dist/{three.module-IORLGCSX.js → three.module-LS32MK23.js} +1 -1
  63. package/dist/three.module-LS32MK23.js.br +0 -0
  64. package/dist/three.module-LS32MK23.js.gz +0 -0
  65. package/dist/viewer/index.d.ts +22 -0
  66. package/dist/viewer/index.js +20 -20
  67. package/dist/viewer/index.js.br +0 -0
  68. package/dist/viewer/index.js.gz +0 -0
  69. package/dist/viewer/index.mjs +4 -4
  70. package/dist/viewer/index.mjs.br +0 -0
  71. package/dist/viewer/index.mjs.gz +0 -0
  72. package/dist/{y-webrtc-F5IA7T5S.mjs → y-webrtc-6DZI5KUK.mjs} +1 -1
  73. package/dist/y-webrtc-6DZI5KUK.mjs.br +0 -0
  74. package/dist/y-webrtc-6DZI5KUK.mjs.gz +0 -0
  75. package/dist/{y-webrtc-6LID3XZO.js → y-webrtc-OTRGEYOH.js} +5 -5
  76. package/dist/y-webrtc-OTRGEYOH.js.br +0 -0
  77. package/dist/y-webrtc-OTRGEYOH.js.gz +0 -0
  78. package/dist/{y-websocket-HOY2HFMH.js → y-websocket-AWBYMAHL.js} +1 -1
  79. package/dist/y-websocket-AWBYMAHL.js.br +0 -0
  80. package/dist/y-websocket-AWBYMAHL.js.gz +0 -0
  81. package/dist/{y-websocket-VGLBV2HJ.mjs → y-websocket-VAKUVRQT.mjs} +1 -1
  82. package/dist/y-websocket-VAKUVRQT.mjs.br +0 -0
  83. package/dist/y-websocket-VAKUVRQT.mjs.gz +0 -0
  84. package/package.json +4 -3
  85. package/dist/AiChatPanel-3J6XGIJ4.mjs.br +0 -0
  86. package/dist/AiChatPanel-3J6XGIJ4.mjs.gz +0 -0
  87. package/dist/AiChatPanel-EGTSK4T5.js.br +0 -0
  88. package/dist/AiChatPanel-EGTSK4T5.js.gz +0 -0
  89. package/dist/Model3DScene-2V2GQ6FY.mjs.br +0 -0
  90. package/dist/Model3DScene-2V2GQ6FY.mjs.gz +0 -0
  91. package/dist/Model3DScene-Q3XEZSWV.js.br +0 -2
  92. package/dist/Model3DScene-Q3XEZSWV.js.gz +0 -0
  93. package/dist/UTIF-RPFRSSC5.mjs +0 -6400
  94. package/dist/UTIF-RPFRSSC5.mjs.br +0 -0
  95. package/dist/UTIF-RPFRSSC5.mjs.gz +0 -0
  96. package/dist/UTIF-XWCKRN6V.js +0 -6402
  97. package/dist/UTIF-XWCKRN6V.js.br +0 -0
  98. package/dist/UTIF-XWCKRN6V.js.gz +0 -0
  99. package/dist/chunk-34AXBLYH.mjs.br +0 -0
  100. package/dist/chunk-34AXBLYH.mjs.gz +0 -0
  101. package/dist/chunk-5RQTZ376.js.br +0 -0
  102. package/dist/chunk-5RQTZ376.js.gz +0 -0
  103. package/dist/chunk-6DZX6EAA.mjs.br +0 -0
  104. package/dist/chunk-6DZX6EAA.mjs.gz +0 -0
  105. package/dist/chunk-MQCBMO6A.js.br +0 -0
  106. package/dist/chunk-MQCBMO6A.js.gz +0 -0
  107. package/dist/chunk-QGM4M3NI.js.br +0 -0
  108. package/dist/chunk-QGM4M3NI.js.gz +0 -0
  109. package/dist/chunk-TYJZJJZ6.mjs +0 -208183
  110. package/dist/chunk-TYJZJJZ6.mjs.br +0 -0
  111. package/dist/chunk-TYJZJJZ6.mjs.gz +0 -0
  112. package/dist/chunk-WK6JBJCT.js +0 -208548
  113. package/dist/chunk-WK6JBJCT.js.br +0 -0
  114. package/dist/chunk-WK6JBJCT.js.gz +0 -0
  115. package/dist/chunk-ZK7UEEXE.mjs.br +0 -0
  116. package/dist/chunk-ZK7UEEXE.mjs.gz +0 -0
  117. package/dist/three.module-A6ACXOES.mjs.br +0 -0
  118. package/dist/three.module-A6ACXOES.mjs.gz +0 -0
  119. package/dist/three.module-IORLGCSX.js.br +0 -0
  120. package/dist/three.module-IORLGCSX.js.gz +0 -0
  121. package/dist/y-webrtc-6LID3XZO.js.br +0 -0
  122. package/dist/y-webrtc-6LID3XZO.js.gz +0 -0
  123. package/dist/y-webrtc-F5IA7T5S.mjs.br +0 -0
  124. package/dist/y-webrtc-F5IA7T5S.mjs.gz +0 -0
  125. package/dist/y-websocket-HOY2HFMH.js.br +0 -0
  126. package/dist/y-websocket-HOY2HFMH.js.gz +0 -0
  127. package/dist/y-websocket-VGLBV2HJ.mjs.br +0 -0
  128. package/dist/y-websocket-VGLBV2HJ.mjs.gz +0 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,112 @@ A release listed with no entries carried no Conventional Commit in this package'
7
7
  scope: scripts/release-plan.mjs releases whenever any published file changes, not only on
8
8
  conventional commits.
9
9
 
10
+ ## [4.30.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.30.0) - 2026-10-08
11
+
12
+ ### Features
13
+
14
+ - **chart:** Add the neutral chartSpace model ([2544c31](https://github.com/ChristopherVR/ooxml/commit/2544c31319b5cc723b26a2c37b519719693f62b8))
15
+ - **chart:** Parse chart parts from the shared DOM ([49c1b76](https://github.com/ChristopherVR/ooxml/commit/49c1b76e41b5fac972c52a5d8169e9ad14478cfd))
16
+ - **opc:** Patch property parts in place and model app statistics ([66c4cf1](https://github.com/ChristopherVR/ooxml/commit/66c4cf1043d73a6df05131d813cbae7f5af6e35e))
17
+ - **chart:** Write chartSpace parts from the neutral model ([bf6920f](https://github.com/ChristopherVR/ooxml/commit/bf6920fb553ff32c32c3edf9bff652cad3bd71ac))
18
+ - **chart:** Accept text bodies given as XML and drop invalid characters ([816830f](https://github.com/ChristopherVR/ooxml/commit/816830fa29a42491d72b835a9b6eb7b5a617f234))
19
+ - **chart:** Render chartSpace parts to svg ([eb2c12f](https://github.com/ChristopherVR/ooxml/commit/eb2c12f877c0f4c7521a9d71e323120fb9084ca6))
20
+ - **chart:** Model display units, data tables and walls ([b95531a](https://github.com/ChristopherVR/ooxml/commit/b95531a3ff55f09c83676291c4b4857d1943189c))
21
+ - **ui:** Add showCompatibilityToasts root option ([992adda](https://github.com/ChristopherVR/ooxml/commit/992adda597325f8d2c9ca5fcbf612ac4da1b65c0))
22
+ - **opc:** Support shared suite files and embedded editing ([41614b1](https://github.com/ChristopherVR/ooxml/commit/41614b10ef62522fe2dceae695b478b53cca293a))
23
+
24
+ ### Bug Fixes
25
+
26
+ - **chart:** Paint coincident linear stops as the native one-step ramp ([eabbc5e](https://github.com/ChristopherVR/ooxml/commit/eabbc5e3dc968f0d40246293238ef88ae7b004f4))
27
+ - **pptx:** List line breaks in slide titles as spaces in app.xml ([45f496a](https://github.com/ChristopherVR/ooxml/commit/45f496ab747f90f7b8764a295c8d0df8414141c0))
28
+ - **pptx:** Export the neutral SmartArt type names from the public entry ([0f081d2](https://github.com/ChristopherVR/ooxml/commit/0f081d260fbaf034129114fcba6137c900dbf846))
29
+ - **chart:** Read the line chart group's own c:smooth ([a5cfd0d](https://github.com/ChristopherVR/ooxml/commit/a5cfd0d45af11e2b2214a9abdc86ce33ba5312be))
30
+ - **ui:** Map chart style numbers to the palettes office uses ([c16145d](https://github.com/ChristopherVR/ooxml/commit/c16145de0c649e401259f25a0cacc06a3f5c409d))
31
+ - **pptx:** Read chart style numbers from the mc:Fallback ([045faf7](https://github.com/ChristopherVR/ooxml/commit/045faf71cadf05f1c9bc4b3155003abe9520b764))
32
+ - **pptx:** Treat a bare data-label switch as on ([637f938](https://github.com/ChristopherVR/ooxml/commit/637f938814baced0d2f72aeca7142e2281db0ca3))
33
+ - **pptx:** Declare c15 and c16 prefixes in chart extension writers ([7b93a01](https://github.com/ChristopherVR/ooxml/commit/7b93a010a77c1ef8433f75fc8d2f3ad810659c75))
34
+ - **pptx:** Repair chart parts this library once saved with undeclared prefixes ([a5f77af](https://github.com/ChristopherVR/ooxml/commit/a5f77af3bf0a2661af35091da920ca707e4fcb96))
35
+ - **pptx:** Paint chart label fonts in every binding ([13493fc](https://github.com/ChristopherVR/ooxml/commit/13493fc180d39cb2622d5f22fd331a9e0abbb781))
36
+ - **pptx:** Build chart style palettes over the deck theme ([7ab9527](https://github.com/ChristopherVR/ooxml/commit/7ab9527743dbb1dc1438d2d3e6e73553b13e54b7))
37
+ - **pptx:** Read each table cell paragraph's own layout ([bcc61f3](https://github.com/ChristopherVR/ooxml/commit/bcc61f3b3e98564e50d018a4a37576f3b237fb57))
38
+ - **pptx:** Lay out table cell paragraphs with their own spacing ([c3db7c5](https://github.com/ChristopherVR/ooxml/commit/c3db7c57596d8f31e24b2d556ed1eea8dddad90a))
39
+ - **pptx:** Save each table cell paragraph's own alignment ([0d43f35](https://github.com/ChristopherVR/ooxml/commit/0d43f3530d5cefd52b98193be98329b4ec66547b))
40
+ - **pptx:** Align every paragraph when a table cell is aligned ([1bb7e7d](https://github.com/ChristopherVR/ooxml/commit/1bb7e7de568a0d8a6808862fd6dc4367782e9686))
41
+ - **pptx:** Skip chart axis lines and gridlines set to no line ([c6a9fcb](https://github.com/ChristopherVR/ooxml/commit/c6a9fcb0fb07498acf6db64d9ee9417339a6f2ac))
42
+ - **pptx:** Apply a table cell run's character spacing ([6d1ee14](https://github.com/ChristopherVR/ooxml/commit/6d1ee148cbd0ea058ae032a7a3b8fe9cdace1ce1))
43
+ - **pptx:** Size an empty table cell from its end paragraph properties ([30da656](https://github.com/ChristopherVR/ooxml/commit/30da656aa60039fff3c912c20cd286dc49055adf))
44
+
45
+ ### Performance
46
+
47
+ - **xml:** Add a lightweight reader for large plain fragments ([5e0318f](https://github.com/ChristopherVR/ooxml/commit/5e0318facba5e0766dd6d1f26172eb94177fe471))
48
+
49
+ ### Refactor
50
+
51
+ - **pptx:** Compile the ui helpers under the strict project ([edbff0a](https://github.com/ChristopherVR/ooxml/commit/edbff0a3fd1863efa394da6c9fe826514fda5f7c))
52
+ - **chart:** Use the Drawing type names ([76bf49c](https://github.com/ChristopherVR/ooxml/commit/76bf49c0a96519816c79375eed1aa9ead84f8b10))
53
+ - **diagram:** Add the neutral SmartArt model types ([b8f4e74](https://github.com/ChristopherVR/ooxml/commit/b8f4e7406362570e085c701dd1e342d534fcc048))
54
+ - **geometry:** Move the preset shape evaluator out of pptx ([c670910](https://github.com/ChristopherVR/ooxml/commit/c670910349b7f6d6d02c335a551518265efde6a9))
55
+ - **diagram:** Move the layout engine out of pptx ([91767c0](https://github.com/ChristopherVR/ooxml/commit/91767c03d4ec9fb2225c47eddd0adc850f187022))
56
+ - **pptx:** Update document properties through opc/properties ([a295f6a](https://github.com/ChristopherVR/ooxml/commit/a295f6a2182eb344e6c9e9a6fe70ba5366268b9c))
57
+ - **diagram:** Port the dgm:choose walkers to ordered XML ([2dfc037](https://github.com/ChristopherVR/ooxml/commit/2dfc0371bb0d4b72e5a3ef4b4cb71bd1a5cb7f81))
58
+ - **diagram:** Move the SmartArt constraint solver into diagram ([bd91ad8](https://github.com/ChristopherVR/ooxml/commit/bd91ad884cf00947957b9620309c885df21d6985))
59
+ - **diagram:** Move the SmartArt interpreter model into diagram ([b24d320](https://github.com/ChristopherVR/ooxml/commit/b24d3200af42eda7c1d7fcc7dcf592202e2fc0f8))
60
+ - **chart:** Move the svg painter into the chart area ([0f9169d](https://github.com/ChristopherVR/ooxml/commit/0f9169d11c5bf92342bc291fdb3f8ef8d84927c5))
61
+ - **pptx:** Build chart models from the neutral parser ([1e38985](https://github.com/ChristopherVR/ooxml/commit/1e389856ae308843d0d86c83b41f6a62284ef1d2))
62
+ - **pptx:** Delete the legacy object-tree chart parser ([b4f0f4f](https://github.com/ChristopherVR/ooxml/commit/b4f0f4f8af4b2eefe49749f5b3c1b1ee7492dba9))
63
+ - **diagram:** Move the SmartArt hierarchy arranger into diagram ([989744c](https://github.com/ChristopherVR/ooxml/commit/989744c5a2ed121eda9b2b11a37815e295c14740))
64
+ - **diagram:** Move the SmartArt layout interpreters into diagram ([3725b73](https://github.com/ChristopherVR/ooxml/commit/3725b7359b5d845012fa7b84b3cddc421446cfbd))
65
+
66
+ ### Testing
67
+
68
+ - **pptx:** Compare chart parts with the neutral parser on every deck ([58b16be](https://github.com/ChristopherVR/ooxml/commit/58b16be72bdcf27e291ff5b9bebc139db9cd3607))
69
+
70
+ ## [4.29.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.29.0) - 2026-10-08
71
+
72
+ ### Features
73
+
74
+ - **xlsx:** Render imported manual legend layouts ([5173750](https://github.com/ChristopherVR/ooxml/commit/5173750a97a560e50d408d3f2f39df6d162d78d5))
75
+
76
+ ## [4.28.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.28.0) - 2026-10-07
77
+
78
+ ### Features
79
+
80
+ - **xlsx:** Author chart series gradients with shared controls ([a932dbd](https://github.com/ChristopherVR/ooxml/commit/a932dbd724eb5bcf6f34473bd5e6f1fc80c07849))
81
+ - **xlsx:** Edit gradient stop brightness with shared color logic ([a49baa4](https://github.com/ChristopherVR/ooxml/commit/a49baa4d275182dd89bb3bd61fd5b7c9e2e719db))
82
+ - **xlsx:** Add native named gradient preset gallery ([47ec692](https://github.com/ChristopherVR/ooxml/commit/47ec69208803df71d035ba191653134ec475ff26))
83
+ - **xlsx:** Add rectangular gradient geometry controls ([e10c21a](https://github.com/ChristopherVR/ooxml/commit/e10c21a08bf6fdc3238504d7434db3f0b2a8b68f))
84
+ - **xlsx:** Author radial and path fills on chart series ([2d3652a](https://github.com/ChristopherVR/ooxml/commit/2d3652ad10b2422302dbe457bb6899f2e56cb7bb))
85
+ - **xlsx:** Format chart and plot background fills ([9237f7f](https://github.com/ChristopherVR/ooxml/commit/9237f7f2ec5851088a28d2af5ca82d02806f5438))
86
+ - **visio:** Rotate shapes with shared pointer geometry ([407fa61](https://github.com/ChristopherVR/ooxml/commit/407fa614c7f919052d44d9e31f7abfbcfe6df50d))
87
+ - **xlsx:** Render and preserve mixed chart title text ([4f3f87e](https://github.com/ChristopherVR/ooxml/commit/4f3f87ea6eff2802393f24448a1b48931282d012))
88
+ - **xlsx:** Render and preserve chart title paragraph spacing ([4f0d619](https://github.com/ChristopherVR/ooxml/commit/4f0d6198d90ab3befbfa6b9806965f01492bce45))
89
+ - **xlsx:** Wrap chart titles with shared text flow ([14a33ed](https://github.com/ChristopherVR/ooxml/commit/14a33ed2ee58f8469e5d24a0a36923a3922f23c4))
90
+
91
+ ### Bug Fixes
92
+
93
+ - **chart:** Match native scaled linear gradient paint ([8bd1171](https://github.com/ChristopherVR/ooxml/commit/8bd1171809210e886f9a459a5d634b2109ad06e9))
94
+ - **chart:** Paint native rectangular path gradients ([af81015](https://github.com/ChristopherVR/ooxml/commit/af81015bca6823dc505c26c006b2a99eb2e85c8f))
95
+ - **xlsx:** Paint native circular chart backgrounds ([e2bddbf](https://github.com/ChristopherVR/ooxml/commit/e2bddbfdafdfe31792ec9f9e6e5002350e5d2f4f))
96
+ - **xlsx:** Preserve chart axis visibility on export ([da056bb](https://github.com/ChristopherVR/ooxml/commit/da056bb9ebbc70561d63b1dc9e1f558997c0f946))
97
+ - **xlsx:** Preserve direct chart fills on export ([c3b3491](https://github.com/ChristopherVR/ooxml/commit/c3b3491a109720a2e38599b3b5272e9d84964309))
98
+ - **pptx:** Copy owned package parts when duplicating slides ([6940f93](https://github.com/ChristopherVR/ooxml/commit/6940f936cc1f804a498aea941480357ad4236edb))
99
+ - **pptx:** Generate complete native 3d chart axes ([6de35d9](https://github.com/ChristopherVR/ooxml/commit/6de35d96c68b4c7a6118b7bcb2a9ac27fa7f3ecc))
100
+ - **pptx:** Write text properties before paragraph content ([a5fe6e7](https://github.com/ChristopherVR/ooxml/commit/a5fe6e78fe4889804f4a553dcbf4ce4a1c6c92e4))
101
+ - **xlsx:** Preserve native built-in chart text defaults ([f3b9335](https://github.com/ChristopherVR/ooxml/commit/f3b93358bc0fd123c1eb83cfba9237e183ae31e6))
102
+ - **xlsx:** Inherit and preserve chart text formatting ([b292d16](https://github.com/ChristopherVR/ooxml/commit/b292d167b07c6cebaa9168f7a01ab113135d3857))
103
+ - **xlsx:** Align chart title lines with measured font boxes ([8499a58](https://github.com/ChristopherVR/ooxml/commit/8499a584ea11a03cb25517f3d6dad3b16104b375))
104
+ - **pptx:** Project rectangular chart gradients in every binding ([8bc5ee3](https://github.com/ChristopherVR/ooxml/commit/8bc5ee3be9584e37a251ae72701ed9d2d392448f))
105
+ - **ci:** Clear lint errors in chart and drawing checks ([f331e67](https://github.com/ChristopherVR/ooxml/commit/f331e670ca9c52a76e048648e55d0660d925f7c4))
106
+ - **pptx:** Preserve rectangular chart gradient paths ([27c6ddb](https://github.com/ChristopherVR/ooxml/commit/27c6ddbf0b123266a67c794b4bbaa0b7c0d062ef))
107
+
108
+ ### Performance
109
+
110
+ - **pptx:** Share the engine and load metafile conversion lazily ([e00b1d7](https://github.com/ChristopherVR/ooxml/commit/e00b1d748b9adb79dac8579f67db24e75f0a7fe2))
111
+
112
+ ### Testing
113
+
114
+ - **xlsx:** Measure native linear gradient paint profiles ([ccc4ceb](https://github.com/ChristopherVR/ooxml/commit/ccc4cebc6408a47f73e85ce95262ebe61973deda))
115
+
10
116
  ## [4.27.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.27.0) - 2026-10-07
11
117
 
12
118
  ### Features
package/README.md CHANGED
@@ -91,40 +91,44 @@ const bytes = await viewerRef.current?.getContent(); // Uint8Array of a valid .p
91
91
 
92
92
  ### `PowerPointViewer` props
93
93
 
94
- | Prop | Type | Default | Description |
95
- | -------------------------------------------------------------------------- | --------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
96
- | `content` | `Uint8Array` | required | Raw .pptx file bytes |
97
- | `filePath` | `string` | n/a | Optional file path (for display and autosave recovery) |
98
- | `fileName` | `string` | n/a | Display name of the open document, shown in the title bar |
99
- | `className` | `string` | n/a | Class applied to the root element |
100
- | `canEdit` | `boolean` | `false` | Enable editing mode |
101
- | `fonts` | `ViewerFontSource[]` | n/a | Licensed font sources supplied by the host application |
102
- | `authorName` | `string` | n/a | Author name for comments/annotations and collaboration presence |
103
- | `collaboration` | `CollaborationConfig` | n/a | Yjs real-time collaboration config (server URL, room, role) |
104
- | `shareDefaults` | `{ roomId?, userName?, serverUrl? }` | n/a | Seed values for the Share dialog fields |
105
- | `smartArt3D` | `boolean` | `false` | Opt-in Three.js 3D SmartArt renderer (needs the optional `three` dependency; falls back to SVG without it) |
106
- | `surfaceChart3D`, `barChart3D`, `lineChart3D`, `areaChart3D`, `pieChart3D` | `boolean` | `false` | Independently opt in to interactive Three.js renderers for the matching 3D chart kinds; each falls back to SVG when WebGL is unavailable. |
107
- | `ai` | `PptxAiConfig` | n/a | Optional AI assistant configuration. The SDK peers load only when its panel is opened. |
108
- | `onOpenFile` | `() => void` | n/a | Host override for File > Open; bypasses the built-in file picker |
109
- | `onContentChange` | `(content: Uint8Array) => void` | n/a | Called with freshly serialised `.pptx` bytes when the content changes |
110
- | `onDirtyChange` | `(isDirty: boolean) => void` | n/a | Called when dirty state changes |
111
- | `onActiveSlideChange` | `(index: number) => void` | n/a | Called when the active slide changes |
112
- | `onModeChange` | `(mode: ViewerMode) => void` | n/a | Called when the viewer mode changes |
113
- | `onZoomChange` | `(zoom: number) => void` | n/a | Called when the zoom level changes |
114
- | `onSelectionChange` | `(ids: string[]) => void` | n/a | Called when element selection changes |
115
- | `onSlideCountChange` | `(count: number) => void` | n/a | Called when the total slide count changes |
116
- | `onStartCollaboration` | `(config: CollaborationConfig) => void` | n/a | Called when the user starts a collaboration session from the Share dialog |
117
- | `onStopCollaboration` | `() => void` | n/a | Called when the collaboration session stops |
118
- | `theme` | `ViewerTheme` | n/a | Theme configuration for customising colours, radius, and CSS vars |
119
- | `hiddenActions` | `ToolbarActionId[]` | n/a | Hide individual toolbar buttons and/or ribbon tabs (e.g. `['share', 'broadcast']`) instead of the whole toolbar; omitted hides nothing |
94
+ | Prop | Type | Default | Description |
95
+ | -------------------------------------------------------------------------- | --------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
96
+ | `content` | `Uint8Array` | required | Raw .pptx file bytes |
97
+ | `filePath` | `string` | n/a | Optional file path (for display and autosave recovery) |
98
+ | `fileName` | `string` | n/a | Display name of the open document, shown in the title bar |
99
+ | `className` | `string` | n/a | Class applied to the root element |
100
+ | `canEdit` | `boolean` | `false` | Enable editing mode |
101
+ | `initialSlide` | `number` | `0` | Zero-based slide shown after each load, clamped into the deck. |
102
+ | `showToolbar` | `boolean` | `true` | Editor chrome: title bar, ribbon, toolbar, banners and status bar. |
103
+ | `showThumbnails` | `boolean` | `true` | Slide thumbnail pane. |
104
+ | `showCompatibilityToasts` | `boolean` | `true` | Compatibility warning toast stack; `false` hides it, warnings are still collected. |
105
+ | `fonts` | `ViewerFontSource[]` | n/a | Licensed font sources supplied by the host application |
106
+ | `authorName` | `string` | n/a | Author name for comments/annotations and collaboration presence |
107
+ | `collaboration` | `CollaborationConfig` | n/a | Yjs real-time collaboration config (server URL, room, role) |
108
+ | `shareDefaults` | `{ roomId?, userName?, serverUrl? }` | n/a | Seed values for the Share dialog fields |
109
+ | `smartArt3D` | `boolean` | `false` | Opt-in Three.js 3D SmartArt renderer (needs the optional `three` dependency; falls back to SVG without it) |
110
+ | `surfaceChart3D`, `barChart3D`, `lineChart3D`, `areaChart3D`, `pieChart3D` | `boolean` | `false` | Independently opt in to interactive Three.js renderers for the matching 3D chart kinds; each falls back to SVG when WebGL is unavailable. |
111
+ | `ai` | `PptxAiConfig` | n/a | Optional AI assistant configuration. The SDK peers load only when its panel is opened. |
112
+ | `onOpenFile` | `() => void` | n/a | Host override for File > Open; bypasses the built-in file picker |
113
+ | `onContentChange` | `(content: Uint8Array) => void` | n/a | Called with freshly serialised `.pptx` bytes when the content changes |
114
+ | `onDirtyChange` | `(isDirty: boolean) => void` | n/a | Called when dirty state changes |
115
+ | `onActiveSlideChange` | `(index: number) => void` | n/a | Called when the active slide changes |
116
+ | `onModeChange` | `(mode: ViewerMode) => void` | n/a | Called when the viewer mode changes |
117
+ | `onZoomChange` | `(zoom: number) => void` | n/a | Called when the zoom level changes |
118
+ | `onSelectionChange` | `(ids: string[]) => void` | n/a | Called when element selection changes |
119
+ | `onSlideCountChange` | `(count: number) => void` | n/a | Called when the total slide count changes |
120
+ | `onStartCollaboration` | `(config: CollaborationConfig) => void` | n/a | Called when the user starts a collaboration session from the Share dialog |
121
+ | `onStopCollaboration` | `() => void` | n/a | Called when the collaboration session stops |
122
+ | `theme` | `ViewerTheme` | n/a | Theme configuration for customising colours, radius, and CSS vars |
123
+ | `hiddenActions` | `ToolbarActionId[]` | n/a | Hide individual toolbar buttons and/or ribbon tabs (e.g. `['share', 'broadcast']`) instead of the whole toolbar; omitted hides nothing |
120
124
  | `customization` | `ViewerCustomization` | - | Hide, lock or remap any part of the UI (ribbon tabs/buttons, File > Options pages/sections/settings, File tab, context menus, shortcuts, panels, AI/collaboration, dialogs); the same helpers (`hideRibbonTab`, `lockSetting`, ...) are on the `ref` handle. See the [UI Customization guide](https://christophervr.github.io/ooxml/pptx/guide/customization). |
121
- | `defaultThemeKey` | `string` | n/a | Initial File > Options > Appearance selection when no persisted preference exists |
122
- | `availableThemes` | `ThemeCatalogEntry[]` | n/a | Theme choices offered by File > Options > Appearance (defaults to the built-in catalog) |
123
- | `onThemeChange` | `(key: string) => void` | n/a | Host hook for the appearance picker; when set, the host owns persisting the choice |
124
- | `defaultLocale` | `string` | n/a | Initial locale code when no persisted preference exists |
125
- | `availableLocales` | `LocaleCatalogEntry[]` | n/a | Locale choices offered by File > Options > Language (defaults to the registered i18next locales) |
126
- | `onLocaleChange` | `(code: string) => void` | n/a | Host hook for the language picker; when set, the host owns applying/persisting the switch |
127
- | `accountAuth` | `AccountAuthConfig` | n/a | Optional sign-in hook point for File > Account (disabled unless `enabled: true`) |
125
+ | `defaultThemeKey` | `string` | n/a | Initial File > Options > Appearance selection when no persisted preference exists |
126
+ | `availableThemes` | `ThemeCatalogEntry[]` | n/a | Theme choices offered by File > Options > Appearance (defaults to the built-in catalog) |
127
+ | `onThemeChange` | `(key: string) => void` | n/a | Host hook for the appearance picker; when set, the host owns persisting the choice |
128
+ | `defaultLocale` | `string` | n/a | Initial locale code when no persisted preference exists |
129
+ | `availableLocales` | `LocaleCatalogEntry[]` | n/a | Locale choices offered by File > Options > Language (defaults to the registered i18next locales) |
130
+ | `onLocaleChange` | `(code: string) => void` | n/a | Host hook for the language picker; when set, the host owns applying/persisting the switch |
131
+ | `accountAuth` | `AccountAuthConfig` | n/a | Optional sign-in hook point for File > Account (disabled unless `enabled: true`) |
128
132
 
129
133
  ### `PowerPointViewerHandle` (via `ref`)
130
134
 
@@ -1,5 +1,5 @@
1
- import { cn } from './chunk-TYJZJJZ6.mjs';
2
- import './chunk-6DZX6EAA.mjs';
1
+ import { cn } from './chunk-ZIBAN7RL.mjs';
2
+ import './chunk-GDQSMJQZ.mjs';
3
3
  import { useMemo, useRef, useState, useEffect, useReducer, useCallback } from 'react';
4
4
  import { useTranslation } from 'react-i18next';
5
5
  import { LuSparkles, LuX, LuLoaderCircle, LuTriangleAlert, LuHistory, LuMessageSquarePlus, LuTrash2, LuPlus, LuGitMerge, LuCrosshair, LuPinOff, LuPin, LuUser, LuBot, LuCheck, LuSquare, LuSend, LuMessageSquare, LuPalette, LuUndo2, LuWrench, LuStickyNote, LuFilm, LuNavigation, LuSearch, LuMove, LuChartColumn, LuLayoutTemplate, LuTable, LuShapes, LuType, LuEye } from 'react-icons/lu';
Binary file
Binary file
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkWK6JBJCT_js = require('./chunk-WK6JBJCT.js');
4
- require('./chunk-QGM4M3NI.js');
3
+ var chunkRHNJ4IU2_js = require('./chunk-RHNJ4IU2.js');
4
+ require('./chunk-DFFCFNK2.js');
5
5
  var react = require('react');
6
6
  var reactI18next = require('react-i18next');
7
7
  var lu = require('react-icons/lu');
@@ -365,7 +365,7 @@ function AiComposer({
365
365
  disabled: value.trim().length === 0,
366
366
  title: t("pptx.ai.send"),
367
367
  "aria-label": t("pptx.ai.send"),
368
- className: chunkWK6JBJCT_js.cn(
368
+ className: chunkRHNJ4IU2_js.cn(
369
369
  "shrink-0 rounded-sm p-1.5 transition-colors",
370
370
  value.trim().length === 0 ? "text-muted-foreground/50" : "bg-primary text-primary-foreground hover:bg-primary/90"
371
371
  ),
@@ -396,7 +396,7 @@ function AiFocusBar({
396
396
  chips.map((chip) => /* @__PURE__ */ jsxRuntime.jsx(
397
397
  "span",
398
398
  {
399
- className: chunkWK6JBJCT_js.cn(
399
+ className: chunkRHNJ4IU2_js.cn(
400
400
  "inline-flex max-w-[10rem] items-center rounded-full px-2 py-0.5 text-[11px]",
401
401
  hasPicks || isPinned ? "bg-primary/15 text-primary" : "bg-muted text-muted-foreground"
402
402
  ),
@@ -433,7 +433,7 @@ function AiFocusBar({
433
433
  title: t("pptx.ai.pickElement"),
434
434
  "aria-label": t("pptx.ai.pickAria"),
435
435
  "aria-pressed": pickMode,
436
- className: chunkWK6JBJCT_js.cn(
436
+ className: chunkRHNJ4IU2_js.cn(
437
437
  "rounded-sm p-1 max-md:min-w-[44px]! max-md:min-h-[44px]! flex items-center justify-center",
438
438
  pickMode ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-accent"
439
439
  ),
@@ -512,7 +512,7 @@ function AiHistoryList({ chats, activeChatId, onResume, onDelete }) {
512
512
  {
513
513
  type: "button",
514
514
  onClick: () => onResume(chat.id),
515
- className: chunkWK6JBJCT_js.cn(
515
+ className: chunkRHNJ4IU2_js.cn(
516
516
  "flex min-w-0 flex-1 items-start gap-2 rounded-sm px-2 py-1.5 text-left hover:bg-accent",
517
517
  chat.id === activeChatId && "bg-accent/60"
518
518
  ),
@@ -676,17 +676,17 @@ function AiToolCallCard({ part }) {
676
676
  /* @__PURE__ */ jsxRuntime.jsx(
677
677
  Icon,
678
678
  {
679
- className: chunkWK6JBJCT_js.cn(
679
+ className: chunkRHNJ4IU2_js.cn(
680
680
  "w-3.5 h-3.5 shrink-0",
681
681
  failed ? "text-destructive" : "text-muted-foreground"
682
682
  )
683
683
  }
684
684
  ),
685
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkWK6JBJCT_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
685
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkRHNJ4IU2_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
686
686
  /* @__PURE__ */ jsxRuntime.jsxs(
687
687
  "span",
688
688
  {
689
- className: chunkWK6JBJCT_js.cn(
689
+ className: chunkRHNJ4IU2_js.cn(
690
690
  "ml-auto inline-flex items-center gap-1 rounded-sm px-1.5 py-0.5 text-[10px]",
691
691
  failed ? "bg-destructive/15 text-destructive" : done ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"
692
692
  ),
@@ -734,7 +734,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
734
734
  /* @__PURE__ */ jsxRuntime.jsx(
735
735
  "div",
736
736
  {
737
- className: chunkWK6JBJCT_js.cn(
737
+ className: chunkRHNJ4IU2_js.cn(
738
738
  "mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full",
739
739
  isUser ? "bg-secondary text-muted-foreground" : "bg-primary/15 text-primary"
740
740
  ),
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- import './chunk-6DZX6EAA.mjs';
1
+ import './chunk-GDQSMJQZ.mjs';
2
2
  import { mountModel3D } from 'ooxml-ui/pptx';
3
3
  import { useRef, useEffect } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- require('./chunk-QGM4M3NI.js');
3
+ require('./chunk-DFFCFNK2.js');
4
4
  var pptx = require('ooxml-ui/pptx');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
Binary file
Binary file
@@ -23,6 +23,7 @@ var __copyProps = (to, from, except, desc) => {
23
23
  }
24
24
  return to;
25
25
  };
26
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
26
27
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
27
28
  // If the importer is in node compatibility mode or this is not an ESM
28
29
  // file that has been converted to a CommonJS file using a Babel-
@@ -33,5 +34,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
33
34
  ));
34
35
 
35
36
  exports.__commonJS = __commonJS;
37
+ exports.__reExport = __reExport;
36
38
  exports.__require = __require;
37
39
  exports.__toESM = __toESM;
Binary file
Binary file
@@ -21,6 +21,7 @@ var __copyProps = (to, from, except, desc) => {
21
21
  }
22
22
  return to;
23
23
  };
24
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
24
25
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
26
  // If the importer is in node compatibility mode or this is not an ESM
26
27
  // file that has been converted to a CommonJS file using a Babel-
@@ -30,4 +31,4 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
31
  mod
31
32
  ));
32
33
 
33
- export { __commonJS, __require, __toESM };
34
+ export { __commonJS, __reExport, __require, __toESM };
Binary file
Binary file