pptx-react-viewer 4.54.0 → 4.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +120 -0
- package/README.md +16 -1
- package/dist/{AiChatPanel-7GJQ66GR.js → AiChatPanel-7DESUEAZ.js} +19 -19
- package/dist/AiChatPanel-7DESUEAZ.js.br +0 -0
- package/dist/AiChatPanel-7DESUEAZ.js.gz +0 -0
- package/dist/{AiChatPanel-AI75AT6C.mjs → AiChatPanel-GQ64SIYP.mjs} +1 -1
- package/dist/AiChatPanel-GQ64SIYP.mjs.br +0 -0
- package/dist/AiChatPanel-GQ64SIYP.mjs.gz +0 -0
- package/dist/ai.d.ts +17 -0
- package/dist/ai.js +11 -0
- package/dist/ai.js.br +2 -0
- package/dist/ai.js.gz +0 -0
- package/dist/ai.mjs +9 -0
- package/dist/ai.mjs.br +0 -0
- package/dist/ai.mjs.gz +0 -0
- package/dist/{chunk-3TN5SUQR.js → chunk-5KFSMXI4.js} +6 -3
- package/dist/chunk-5KFSMXI4.js.br +0 -0
- package/dist/chunk-5KFSMXI4.js.gz +0 -0
- package/dist/{chunk-ISNT4VQN.js → chunk-BL2P6K67.js} +303 -213
- package/dist/chunk-BL2P6K67.js.br +0 -0
- package/dist/chunk-BL2P6K67.js.gz +0 -0
- package/dist/{chunk-RB6MRBJI.js → chunk-CNCPFDFS.js} +3596 -3615
- package/dist/chunk-CNCPFDFS.js.br +0 -0
- package/dist/chunk-CNCPFDFS.js.gz +0 -0
- package/dist/{chunk-GJB3TWLP.mjs → chunk-EZRO5ETF.mjs} +103 -13
- package/dist/chunk-EZRO5ETF.mjs.br +0 -0
- package/dist/chunk-EZRO5ETF.mjs.gz +0 -0
- package/dist/chunk-F6WCYCHV.js +40 -0
- package/dist/chunk-F6WCYCHV.js.br +0 -0
- package/dist/chunk-F6WCYCHV.js.gz +0 -0
- package/dist/{chunk-ID37Y3HG.mjs → chunk-MR3ZSEHS.mjs} +7 -4
- package/dist/chunk-MR3ZSEHS.mjs.br +0 -0
- package/dist/chunk-MR3ZSEHS.mjs.gz +0 -0
- package/dist/chunk-NE5JQMED.mjs +37 -0
- package/dist/chunk-NE5JQMED.mjs.br +0 -0
- package/dist/chunk-NE5JQMED.mjs.gz +0 -0
- package/dist/{chunk-6MMJBI4I.mjs → chunk-NESLWTLG.mjs} +3017 -3037
- package/dist/chunk-NESLWTLG.mjs.br +0 -0
- package/dist/chunk-NESLWTLG.mjs.gz +0 -0
- package/dist/i18n/de.cjs +421 -1
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +421 -1
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +421 -1
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +421 -1
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +421 -1
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +421 -1
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +421 -1
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +421 -1
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/index.d.ts +95 -14
- package/dist/index.js +30 -25
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +4 -3
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +64 -7
- package/dist/internals.js +81 -81
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +2 -2
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/pptx-viewer-canvas.css +1 -1
- package/dist/pptx-viewer-canvas.css.br +0 -0
- package/dist/pptx-viewer-canvas.css.gz +0 -0
- package/dist/viewer/index.d.ts +20 -10
- package/dist/viewer/index.js +21 -20
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +4 -3
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +9 -4
- package/dist/AiChatPanel-7GJQ66GR.js.br +0 -0
- package/dist/AiChatPanel-7GJQ66GR.js.gz +0 -0
- package/dist/AiChatPanel-AI75AT6C.mjs.br +0 -0
- package/dist/AiChatPanel-AI75AT6C.mjs.gz +0 -0
- package/dist/chunk-3TN5SUQR.js.br +0 -0
- package/dist/chunk-3TN5SUQR.js.gz +0 -0
- package/dist/chunk-6MMJBI4I.mjs.br +0 -0
- package/dist/chunk-6MMJBI4I.mjs.gz +0 -0
- package/dist/chunk-GJB3TWLP.mjs.br +0 -0
- package/dist/chunk-GJB3TWLP.mjs.gz +0 -0
- package/dist/chunk-ID37Y3HG.mjs.br +0 -0
- package/dist/chunk-ID37Y3HG.mjs.gz +0 -0
- package/dist/chunk-ISNT4VQN.js.br +0 -0
- package/dist/chunk-ISNT4VQN.js.gz +0 -0
- package/dist/chunk-RB6MRBJI.js.br +0 -0
- package/dist/chunk-RB6MRBJI.js.gz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,126 @@ 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.56.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.56.0) - 2026-10-28
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **pptx:** Expose the slide thumbnail rail as a building block in every binding ([#228](https://github.com/ChristopherVR/ooxml/issues/228)) ([2b77f02](https://github.com/ChristopherVR/ooxml/commit/2b77f026e1e26e6a5fe3c52f275608f39bc0ea8e))
|
|
15
|
+
- **text:** Share font selection with word script layout ([59ad0a2](https://github.com/ChristopherVR/ooxml/commit/59ad0a2e8249d3ffc9be34c2c9e6f9ffe8b3b07a))
|
|
16
|
+
- **chart:** Share manual plot layout across chart painters ([18b79c0](https://github.com/ChristopherVR/ooxml/commit/18b79c04bb1d2aa914630453413d995d0bb54922))
|
|
17
|
+
- **chart:** Share smooth series paths and authored strokes ([7329e5c](https://github.com/ChristopherVR/ooxml/commit/7329e5cbb546a041c0e67417fbe84e9d3dc415a2))
|
|
18
|
+
- **chart:** Share point label offsets and pie leader lines ([861f78f](https://github.com/ChristopherVR/ooxml/commit/861f78f5d9ba0fa93ed6e85ddfc209fd2bf828ca))
|
|
19
|
+
- **drawingml:** Render guide-driven custom shapes in word ([81558e6](https://github.com/ChristopherVR/ooxml/commit/81558e6fcfdb2a64ced22661410cbdfba954cea2))
|
|
20
|
+
- **drawingml:** Share picture crop with excel ([f093c0f](https://github.com/ChristopherVR/ooxml/commit/f093c0f6d1c2ea96736613990e870143d770774e))
|
|
21
|
+
- **chart:** Share calendar date axis rendering ([474de5c](https://github.com/ChristopherVR/ooxml/commit/474de5c4f2418ee7b67ec34a5e08c8eefa4bb992))
|
|
22
|
+
- **chart:** Share chart data table layout and rendering ([09fbdf1](https://github.com/ChristopherVR/ooxml/commit/09fbdf1ec8016b376b67053d8a5575fc3d1ef145))
|
|
23
|
+
- **drawingml:** Share ordered picture effects with excel ([b669575](https://github.com/ChristopherVR/ooxml/commit/b669575a041ab25169a7c83757075fe9dffe390a))
|
|
24
|
+
- **chart:** Share funnel geometry and neutral rendering ([28f6ce3](https://github.com/ChristopherVR/ooxml/commit/28f6ce302fa5791a11819209d6501e97e971b80b))
|
|
25
|
+
- **chart:** Share box distributions and neutral rendering ([6390e30](https://github.com/ChristopherVR/ooxml/commit/6390e30ac6994e6891f8324e4264949f66e0a0a0))
|
|
26
|
+
- **diagram:** Paint cached pictures in word and excel ([f254d51](https://github.com/ChristopherVR/ooxml/commit/f254d51eeed81279dd9f971cb7ac496364738ec2))
|
|
27
|
+
- **drawingml:** Share source-backed text body 3d codecs ([bcf2a0a](https://github.com/ChristopherVR/ooxml/commit/bcf2a0a491c6e4dc4e5fd4f5b615f3673285cadf))
|
|
28
|
+
- **pptx:** Add an /ai entry and createAiAssistant to every binding ([#219](https://github.com/ChristopherVR/ooxml/issues/219)) ([ecd4d43](https://github.com/ChristopherVR/ooxml/commit/ecd4d43acfc0133c2f9c1e3320f366244ba3bba3))
|
|
29
|
+
- **visio:** Improve selection dragging and resizing ([60cf8dd](https://github.com/ChristopherVR/ooxml/commit/60cf8dd9c547f16e114b98ae01fed0968aca5866))
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
- **pptx:** Scope collaboration undo to the local participant ([55b8bad](https://github.com/ChristopherVR/ooxml/commit/55b8badcf0ec06a7294debff8deff844dcfafb62))
|
|
34
|
+
- **pptx:** Autocorrect only the text typed in this edit ([0e5a85e](https://github.com/ChristopherVR/ooxml/commit/0e5a85e496e0d53e36c00e6fdfd5dd3749337d8a))
|
|
35
|
+
- **pptx:** Keep browser-local blob URLs out of the collaboration room ([433891b](https://github.com/ChristopherVR/ooxml/commit/433891b1db9a173780e6ad59cad56d92a5a0e929))
|
|
36
|
+
- **chart:** Resolve chartex axes by position to avoid prototype pollution ([16edc2f](https://github.com/ChristopherVR/ooxml/commit/16edc2fd96b261ecbfbe388491fe12494be15b89))
|
|
37
|
+
- **drawingml:** Separate guide and path coordinate spaces ([4db9fe1](https://github.com/ChristopherVR/ooxml/commit/4db9fe140ec43aae8cac6cae8846ccf4dad9ba58))
|
|
38
|
+
- **chart:** Export shared date format tokenizer ([b928657](https://github.com/ChristopherVR/ooxml/commit/b928657532d41bec6a83a5969c03be922ef0a90a))
|
|
39
|
+
- **drawingml:** Bound picture luminance and report extensions ([a36e847](https://github.com/ChristopherVR/ooxml/commit/a36e84725c483815ae7508872dd4d89c5a8375b2))
|
|
40
|
+
- **chart:** Paint date ticks over plot backgrounds ([e3fad37](https://github.com/ChristopherVR/ooxml/commit/e3fad379f6d990c1ad85658e751cb84176ca7852))
|
|
41
|
+
- **docx:** Load media for cached smartart pictures ([149b350](https://github.com/ChristopherVR/ooxml/commit/149b35025750b5189813e34cfa33cd1ff5757a17))
|
|
42
|
+
- **chart:** Retain table names and exclude hidden box series ([292dc25](https://github.com/ChristopherVR/ooxml/commit/292dc25c22544d9179d5c0fd31327a3d0aafb462))
|
|
43
|
+
- **chart:** Match native funnel label and box mean defaults ([06bbf26](https://github.com/ChristopherVR/ooxml/commit/06bbf26e496f00270eca67472087454496217cc1))
|
|
44
|
+
- **drawingml:** Preserve anchors and guard text 3d edits ([617a029](https://github.com/ChristopherVR/ooxml/commit/617a02979d5cdae5e3818afd8fb79af367de25eb))
|
|
45
|
+
- **drawingml:** Preserve omitted picture source formatting ([5e2d57d](https://github.com/ChristopherVR/ooxml/commit/5e2d57dfe0b3076be7c6cb5b086c596643eb5203))
|
|
46
|
+
|
|
47
|
+
### Refactor
|
|
48
|
+
|
|
49
|
+
- **opc:** Share hyperlink policy with explicit host protocols ([5f8ac72](https://github.com/ChristopherVR/ooxml/commit/5f8ac72edbe4fff4d2fa303ed3ce8a471762bd12))
|
|
50
|
+
|
|
51
|
+
### Documentation
|
|
52
|
+
|
|
53
|
+
- Record further shared office capability delivery ([845ee99](https://github.com/ChristopherVR/ooxml/commit/845ee99bdc290e148c485c87e64d853a5884e7f8))
|
|
54
|
+
|
|
55
|
+
### Testing
|
|
56
|
+
|
|
57
|
+
- **diagram:** Guard optional word media in picture assertion ([c8f5d14](https://github.com/ChristopherVR/ooxml/commit/c8f5d14ddcdef1ee04de6d4f3e557d1719eae5e8))
|
|
58
|
+
|
|
59
|
+
### Chores
|
|
60
|
+
|
|
61
|
+
- Integrate current main for reuse verification ([a22d5f5](https://github.com/ChristopherVR/ooxml/commit/a22d5f53406330909d3853ab64a4d850bc3c0ad1))
|
|
62
|
+
- Integrate main before shared capability push ([9dc78da](https://github.com/ChristopherVR/ooxml/commit/9dc78da5262a854807b9fc8395f1fd97f71c2eb4))
|
|
63
|
+
|
|
64
|
+
## [4.55.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.55.0) - 2026-10-28
|
|
65
|
+
|
|
66
|
+
### Features
|
|
67
|
+
|
|
68
|
+
- **pptx:** Save chart labels and series colours through core ([4b25d98](https://github.com/ChristopherVR/ooxml/commit/4b25d98dc70d336d400e185d2af60b190889c4fe))
|
|
69
|
+
- **chart:** Share rich title and axis save semantics ([d55e49d](https://github.com/ChristopherVR/ooxml/commit/d55e49da53b2beef0e8215d76376b42bb74e16cd))
|
|
70
|
+
- **drawingml:** Share outlines effects and theme style matrices ([1bcb6c2](https://github.com/ChristopherVR/ooxml/commit/1bcb6c228370994984ecc277f2d456705fae1134))
|
|
71
|
+
- **drawingml:** Preserve and author pattern and picture fills ([b30778e](https://github.com/ChristopherVR/ooxml/commit/b30778e085f626605c3c42edd1e966733dc77d78))
|
|
72
|
+
- **diagram:** Share interpreted SmartArt previews across products ([f9dd019](https://github.com/ChristopherVR/ooxml/commit/f9dd0197da1871da3178a2d3ee880fe27266f0c0))
|
|
73
|
+
- **chart:** Add safe hierarchical ChartEx editing primitives ([1759131](https://github.com/ChristopherVR/ooxml/commit/17591312e4b41bdf6a10873f54d43bea979cfcc6))
|
|
74
|
+
- **chart:** Bind ChartEx edits to Word and Excel storage ([8443244](https://github.com/ChristopherVR/ooxml/commit/8443244f5520e967b5ddda797b27ddf5929b7eb7))
|
|
75
|
+
- **chart:** Preserve hidden labels and edit cell label ranges ([b17afec](https://github.com/ChristopherVR/ooxml/commit/b17afecadcfc83aa94431d3cf89e8e7621c67ec2))
|
|
76
|
+
- **chart:** Add shared advanced formatting intents ([c4d6fa1](https://github.com/ChristopherVR/ooxml/commit/c4d6fa115445ef6bc99b341c92a46941a326859a))
|
|
77
|
+
- **chart:** Allocate fresh embedded workbook data sheets ([909bc58](https://github.com/ChristopherVR/ooxml/commit/909bc582f793e08b63671d82abe70440a49afdfd))
|
|
78
|
+
- **diagram:** Share SmartArt style and color authoring ([86b43a4](https://github.com/ChristopherVR/ooxml/commit/86b43a497b5effa071b25e73dab91ab4bb18c296))
|
|
79
|
+
- **chart:** Save structural edits with fresh workbook ranges ([99d0a3e](https://github.com/ChristopherVR/ooxml/commit/99d0a3e11ff95d002feb3a6060faa2eac3f6057b))
|
|
80
|
+
- **chart:** Share resolved appearance conversions across hosts ([f26c9ff](https://github.com/ChristopherVR/ooxml/commit/f26c9ffa072db97ae8632c5e97de960821d3cf8f))
|
|
81
|
+
- **chart:** Support structural ChartEx data edits across hosts ([8fd8d15](https://github.com/ChristopherVR/ooxml/commit/8fd8d15729d3c8347c8090451f2fefd420e03c4a))
|
|
82
|
+
- **chart:** Share standalone rich text formatting edits ([829764b](https://github.com/ChristopherVR/ooxml/commit/829764b41480dd4f91f7609cfc1d1071e6117de6))
|
|
83
|
+
- **chart:** Share appearance and chart family save operations ([e1b4f4a](https://github.com/ChristopherVR/ooxml/commit/e1b4f4ae337a2b0b99b9a127219dbbd4e7392109))
|
|
84
|
+
- **ui:** Edit ChartEx charts in Word and Excel ([35ca2bd](https://github.com/ChristopherVR/ooxml/commit/35ca2bd824525a67220c533b6487b604118526b2))
|
|
85
|
+
- **diagram:** Attach generated caches in Word and Excel ([0ba0947](https://github.com/ChristopherVR/ooxml/commit/0ba09477b7c5a6b251dd607d0775feec4655abf0))
|
|
86
|
+
- **chart:** Share chart text layout and point label saves ([a638df2](https://github.com/ChristopherVR/ooxml/commit/a638df2ea8d702b1595b96bddf668a94dc9946dc))
|
|
87
|
+
- **chart:** Split secondary series without changing targets ([cd1d2d5](https://github.com/ChristopherVR/ooxml/commit/cd1d2d5e3fb74bdb1ae7b05f1b2a0836e7ae34c2))
|
|
88
|
+
- **chart:** Share chart chrome and protection edits ([9d59053](https://github.com/ChristopherVR/ooxml/commit/9d590537db83f652b66a8e7c9431ca6b0f640c86))
|
|
89
|
+
- **chart:** Create extended charts through shared operations ([5a8ece7](https://github.com/ChristopherVR/ooxml/commit/5a8ece72b122382e57f8648c8c58a17dec8e5a09))
|
|
90
|
+
- **pptx:** Save extended chart families through the core ([f5c1091](https://github.com/ChristopherVR/ooxml/commit/f5c10914458e9cd31e92d6efdfd156f77de40dd0))
|
|
91
|
+
- **pptx:** Plan shared analysis and point chart saves ([3ab4c64](https://github.com/ChristopherVR/ooxml/commit/3ab4c6462e18ef7a24f35322f7b424337a668384))
|
|
92
|
+
- **chart:** Preserve series targets across combo type edits ([d991ecb](https://github.com/ChristopherVR/ooxml/commit/d991ecb51d855cec58efd752f7c959a8d5346f32))
|
|
93
|
+
- **chart:** Share axis labels and plot decorations ([0838fa8](https://github.com/ChristopherVR/ooxml/commit/0838fa8e6832d6442cec0f9a71e0a83051a5581d))
|
|
94
|
+
- **chart:** Edit rich title runs and typed data vectors ([a3b688e](https://github.com/ChristopherVR/ooxml/commit/a3b688e38ccecdf64d99856df1bed8a33e2866e6))
|
|
95
|
+
- **chart:** Share extended chart style and axis editing ([906594d](https://github.com/ChristopherVR/ooxml/commit/906594d527d0c472cd5435f60049fe0f3e1e4a2b))
|
|
96
|
+
|
|
97
|
+
### Bug Fixes
|
|
98
|
+
|
|
99
|
+
- **chart:** Preserve source content across chart consumers ([1ce74e9](https://github.com/ChristopherVR/ooxml/commit/1ce74e92f8864a046f3ef756b35bf8568c685c5b))
|
|
100
|
+
- **diagram:** Report partial interpreted preview capabilities ([ea9e474](https://github.com/ChristopherVR/ooxml/commit/ea9e4746aa826a00a8bc49ac58852687e62eaf12))
|
|
101
|
+
- **chart:** Preserve resolved gradient focus geometry ([0db31bf](https://github.com/ChristopherVR/ooxml/commit/0db31bf6be311d50eceb9aae66b809c15a9ca48c))
|
|
102
|
+
- **chart:** Retain histogram semantics when switching layouts ([95e9a75](https://github.com/ChristopherVR/ooxml/commit/95e9a75440adaf743bc3c76d399f2b39e40b662e))
|
|
103
|
+
- **pptx:** Preserve chart label defaults and retry workbook writes ([78e8efb](https://github.com/ChristopherVR/ooxml/commit/78e8efbe56ff2000e4d189657d7cc972057fd50f))
|
|
104
|
+
- **pptx:** Save ChartEx label content flags through the core ([88309ed](https://github.com/ChristopherVR/ooxml/commit/88309edce7d247d068fd9934cbf79990b40ea081))
|
|
105
|
+
- **chart:** Preserve source attributes and reuse workbook writes ([4a5f40b](https://github.com/ChristopherVR/ooxml/commit/4a5f40b51644afcb8fdc8690e14a89c41fc5b5bd))
|
|
106
|
+
- **pptx:** Refresh chart adapters after saving shared models ([fdebf79](https://github.com/ChristopherVR/ooxml/commit/fdebf796a8168693c678a9889d2b9b1135079f1e))
|
|
107
|
+
- **chart:** Activate newly allocated workbook data sheets ([7767080](https://github.com/ChristopherVR/ooxml/commit/77670803f1e87ffdab709138f57f4850e2946e50))
|
|
108
|
+
- **pptx:** Declare chart refresh across runtime mixins ([5f880e6](https://github.com/ChristopherVR/ooxml/commit/5f880e639b16111c9b591a6cb909a07d6d3f5607))
|
|
109
|
+
- **chart:** Accept host-allocated picture preview sources ([08fe91b](https://github.com/ChristopherVR/ooxml/commit/08fe91b613a007141ec2291a458a6d02cb6f61ab))
|
|
110
|
+
- **chart:** Preserve authored paint and typed category edits ([547e5c0](https://github.com/ChristopherVR/ooxml/commit/547e5c069fdbeb351e5a8fcddbcb67f790a2b677))
|
|
111
|
+
- **chart:** Preserve rich axis title style projection ([b5d5b7a](https://github.com/ChristopherVR/ooxml/commit/b5d5b7a728785576550957ecd07c202ad36ede0e))
|
|
112
|
+
- **pptx:** Default SmartArt reflow to its local origin ([ae8a59b](https://github.com/ChristopherVR/ooxml/commit/ae8a59b43dbf4dcfdec3d199cc0735b09f1d65ec))
|
|
113
|
+
- **pptx:** Morph offstage text size changes and keep run alpha ([75749c0](https://github.com/ChristopherVR/ooxml/commit/75749c0618fe24714d9f086ca7248f9f3e41e729))
|
|
114
|
+
- **pptx:** End inline edit on Escape and scope collab undo origin ([1338d38](https://github.com/ChristopherVR/ooxml/commit/1338d388f137f8542ce07dbd61f5b6186a842d41))
|
|
115
|
+
- **pptx:** Converge when two clients seed an empty room ([#217](https://github.com/ChristopherVR/ooxml/issues/217)) ([ee06f53](https://github.com/ChristopherVR/ooxml/commit/ee06f5389a9f277704640e4efaa567b3d5718507))
|
|
116
|
+
|
|
117
|
+
### Refactor
|
|
118
|
+
|
|
119
|
+
- **pptx:** Read ChartEx facts through the neutral model ([f78b582](https://github.com/ChristopherVR/ooxml/commit/f78b58266a5819121f92b9f954fdd5162b4c0eff))
|
|
120
|
+
- **pptx:** Project classic chart paint from neutral models ([76dbdc6](https://github.com/ChristopherVR/ooxml/commit/76dbdc6dc0ba1c3afc8fe98ba92f482abfdcccd2))
|
|
121
|
+
|
|
122
|
+
### Testing
|
|
123
|
+
|
|
124
|
+
- **pptx:** Compare authored ChartEx visibility and scaling ([5748e23](https://github.com/ChristopherVR/ooxml/commit/5748e234bbe1919b522479f440440457267c4abf))
|
|
125
|
+
|
|
126
|
+
### Styling
|
|
127
|
+
|
|
128
|
+
- **chart:** Apply workspace formatting to chart tests ([b3f3a08](https://github.com/ChristopherVR/ooxml/commit/b3f3a0887eaff025d3fd7bf88cd288977df4121f))
|
|
129
|
+
|
|
10
130
|
## [4.54.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.54.0) - 2026-10-26
|
|
11
131
|
|
|
12
132
|
### Features
|
package/README.md
CHANGED
|
@@ -110,7 +110,7 @@ const bytes = await viewerRef.current?.getContent(); // Uint8Array of a valid .p
|
|
|
110
110
|
| `shareDefaults` | `{ roomId?, userName?, serverUrl? }` | n/a | Seed values for the Share dialog fields |
|
|
111
111
|
| `smartArt3D` | `boolean` | `false` | Opt-in Three.js 3D SmartArt renderer (needs the optional `three` dependency; falls back to SVG without it) |
|
|
112
112
|
| `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. |
|
|
113
|
-
| `ai` | `PptxAiConfig`
|
|
113
|
+
| `ai` | `PptxAiAssistant \| PptxAiConfig` | n/a | Optional AI assistant: a handle from `createAiAssistant` (`pptx-react-viewer/ai`), or a plain config. The SDK peers load only when its panel is opened. See [AI assistant](#ai-assistant). |
|
|
114
114
|
| `onOpenFile` | `() => void` | n/a | Host override for File > Open; bypasses the built-in file picker |
|
|
115
115
|
| `onContentChange` | `(content: Uint8Array) => void` | n/a | Called with freshly serialised `.pptx` bytes when the content changes |
|
|
116
116
|
| `onDirtyChange` | `(isDirty: boolean) => void` | n/a | Called when dirty state changes |
|
|
@@ -265,6 +265,21 @@ import { PowerPointViewer, vermilionLightTheme } from 'pptx-react-viewer';
|
|
|
265
265
|
|
|
266
266
|
The underlying palettes (`vermilionLightColors`, `vermilionDarkColors`) and radius (`vermilionRadius`) are exported too, so you can spread them into your own variant.
|
|
267
267
|
|
|
268
|
+
## AI assistant
|
|
269
|
+
|
|
270
|
+
Create the assistant with `createAiAssistant` from the `pptx-react-viewer/ai` entry. Install the `ai` and `@ai-sdk/react` peers, create an assistant once (at module scope or in `useMemo`) and pass it to the `ai` prop:
|
|
271
|
+
|
|
272
|
+
```tsx
|
|
273
|
+
import { PowerPointViewer } from 'pptx-react-viewer';
|
|
274
|
+
import { createAiAssistant } from 'pptx-react-viewer/ai';
|
|
275
|
+
|
|
276
|
+
const assistant = createAiAssistant({ connection: { kind: 'endpoint', api: '/api/ai/chat' } });
|
|
277
|
+
|
|
278
|
+
<PowerPointViewer content={bytes} ai={assistant} />;
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
The panel still loads lazily, the first time the user opens it, and the main entries still reach the same lazy panel loader. The handle is opaque: only `createAiAssistant` makes one, and any other value is read as a plain config. A plain `PptxAiConfig` (`ai={{ connection }}`) keeps working through the viewer's own lazy panel and is not deprecated in this release; the handle is a preparatory, opt-in path for a later major release (see [The `/ai` entry](https://christophervr.github.io/ooxml/pptx/guide/ai-assistant#ai-entry)). The `PptxAi*` types are exported from both `pptx-react-viewer` and `pptx-react-viewer/ai`. See the [AI assistant guide](https://christophervr.github.io/ooxml/pptx/guide/ai-assistant) for connection modes, tools and the write policy.
|
|
282
|
+
|
|
268
283
|
## Localization (i18n)
|
|
269
284
|
|
|
270
285
|
UI labels go through [i18next](https://www.i18next.com/) / [react-i18next](https://react.i18next.com/) with dotted keys such as `pptx.statusBar.allSaved`, or through your own i18n library with `PptxI18nProvider` (see below). Initialise an i18next instance and wrap your app in `I18nextProvider` (the demo's `demos/pptx/demo-react/i18n.ts` shows a minimal config, including a `parseMissingKeyHandler` that derives Title Case labels for any key you don't explicitly translate). `pptx-react-viewer/i18n` exports `translationsEn` (the English dictionary), `keyToLabel` (the fallback), and a `TranslationKey` type you can use to type-check a new locale dictionary (`Record<TranslationKey, string>`) at compile time. Add a new language by supplying a resource bundle under its language code. See the [Localization guide](https://christophervr.github.io/ooxml/pptx/guide/localization) for full wiring examples and how to contribute a translation upstream; the live demo's language picker is a working reference.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk5KFSMXI4_js = require('./chunk-5KFSMXI4.js');
|
|
4
4
|
require('./chunk-PIRHQTI4.js');
|
|
5
5
|
var react = require('react');
|
|
6
6
|
var lu = require('react-icons/lu');
|
|
@@ -301,7 +301,7 @@ function AiComposer({
|
|
|
301
301
|
prefillText,
|
|
302
302
|
prefillNonce
|
|
303
303
|
}) {
|
|
304
|
-
const { t } =
|
|
304
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
305
305
|
const [value, setValue] = react.useState("");
|
|
306
306
|
const textareaRef = react.useRef(null);
|
|
307
307
|
const appliedNonce = react.useRef(void 0);
|
|
@@ -364,7 +364,7 @@ function AiComposer({
|
|
|
364
364
|
disabled: value.trim().length === 0,
|
|
365
365
|
title: t("pptx.ai.send"),
|
|
366
366
|
"aria-label": t("pptx.ai.send"),
|
|
367
|
-
className:
|
|
367
|
+
className: chunk5KFSMXI4_js.cn(
|
|
368
368
|
"shrink-0 rounded-sm p-1.5 transition-colors",
|
|
369
369
|
value.trim().length === 0 ? "text-muted-foreground/50" : "bg-primary text-primary-foreground hover:bg-primary/90"
|
|
370
370
|
),
|
|
@@ -386,7 +386,7 @@ function AiFocusBar({
|
|
|
386
386
|
onStopPick,
|
|
387
387
|
onClearPicks
|
|
388
388
|
}) {
|
|
389
|
-
const { t } =
|
|
389
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
390
390
|
const chips = ai.focusTargetChips(targets, slides);
|
|
391
391
|
const twoTables = ai.isTwoTableFocus(targets, slides);
|
|
392
392
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border bg-secondary/30", children: [
|
|
@@ -395,7 +395,7 @@ function AiFocusBar({
|
|
|
395
395
|
chips.map((chip) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
396
396
|
"span",
|
|
397
397
|
{
|
|
398
|
-
className:
|
|
398
|
+
className: chunk5KFSMXI4_js.cn(
|
|
399
399
|
"inline-flex max-w-[10rem] items-center rounded-full px-2 py-0.5 text-[11px]",
|
|
400
400
|
hasPicks || isPinned ? "bg-primary/15 text-primary" : "bg-muted text-muted-foreground"
|
|
401
401
|
),
|
|
@@ -432,7 +432,7 @@ function AiFocusBar({
|
|
|
432
432
|
title: t("pptx.ai.pickElement"),
|
|
433
433
|
"aria-label": t("pptx.ai.pickAria"),
|
|
434
434
|
"aria-pressed": pickMode,
|
|
435
|
-
className:
|
|
435
|
+
className: chunk5KFSMXI4_js.cn(
|
|
436
436
|
"rounded-sm p-1 max-md:min-w-[44px]! max-md:min-h-[44px]! flex items-center justify-center",
|
|
437
437
|
pickMode ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-accent"
|
|
438
438
|
),
|
|
@@ -501,7 +501,7 @@ function relativeTime(from, now = Date.now()) {
|
|
|
501
501
|
return `${weeks}w ago`;
|
|
502
502
|
}
|
|
503
503
|
function AiHistoryList({ chats, activeChatId, onResume, onDelete }) {
|
|
504
|
-
const { t } =
|
|
504
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
505
505
|
if (chats.length === 0) {
|
|
506
506
|
return /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-3 py-4 text-center text-[12px] text-muted-foreground", children: t("pptx.ai.historyEmpty") });
|
|
507
507
|
}
|
|
@@ -511,7 +511,7 @@ function AiHistoryList({ chats, activeChatId, onResume, onDelete }) {
|
|
|
511
511
|
{
|
|
512
512
|
type: "button",
|
|
513
513
|
onClick: () => onResume(chat.id),
|
|
514
|
-
className:
|
|
514
|
+
className: chunk5KFSMXI4_js.cn(
|
|
515
515
|
"flex min-w-0 flex-1 items-start gap-2 rounded-sm px-2 py-1.5 text-left hover:bg-accent",
|
|
516
516
|
chat.id === activeChatId && "bg-accent/60"
|
|
517
517
|
),
|
|
@@ -550,7 +550,7 @@ function AiHistoryMenu({
|
|
|
550
550
|
onNewChat,
|
|
551
551
|
onClose
|
|
552
552
|
}) {
|
|
553
|
-
const { t } =
|
|
553
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
554
554
|
const ref = react.useRef(null);
|
|
555
555
|
react.useEffect(() => {
|
|
556
556
|
const handler = (e) => {
|
|
@@ -616,7 +616,7 @@ function appliedThemeFromPart(part) {
|
|
|
616
616
|
return { summary: out.summary ?? "Theme updated", previous: out.previous ?? {} };
|
|
617
617
|
}
|
|
618
618
|
function AiAppliedThemeCard({ summary, onUndo }) {
|
|
619
|
-
const { t } =
|
|
619
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
620
620
|
const [undone, setUndone] = react.useState(false);
|
|
621
621
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 rounded-md border border-primary/30 bg-primary/5 px-2.5 py-1.5 text-[12px]", children: [
|
|
622
622
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuPalette, { className: "w-3.5 h-3.5 shrink-0 text-primary" }),
|
|
@@ -662,7 +662,7 @@ var ICONS = {
|
|
|
662
662
|
tool: lu.LuWrench
|
|
663
663
|
};
|
|
664
664
|
function AiToolCallCard({ part }) {
|
|
665
|
-
const { t } =
|
|
665
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
666
666
|
const failed = part.state === "output-error";
|
|
667
667
|
const done = part.state === "output-available";
|
|
668
668
|
const running = !failed && !done;
|
|
@@ -675,17 +675,17 @@ function AiToolCallCard({ part }) {
|
|
|
675
675
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
676
676
|
Icon,
|
|
677
677
|
{
|
|
678
|
-
className:
|
|
678
|
+
className: chunk5KFSMXI4_js.cn(
|
|
679
679
|
"w-3.5 h-3.5 shrink-0",
|
|
680
680
|
failed ? "text-destructive" : "text-muted-foreground"
|
|
681
681
|
)
|
|
682
682
|
}
|
|
683
683
|
),
|
|
684
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
684
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk5KFSMXI4_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
|
|
685
685
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
686
686
|
"span",
|
|
687
687
|
{
|
|
688
|
-
className:
|
|
688
|
+
className: chunk5KFSMXI4_js.cn(
|
|
689
689
|
"ml-auto inline-flex items-center gap-1 rounded-sm px-1.5 py-0.5 text-[10px]",
|
|
690
690
|
failed ? "bg-destructive/15 text-destructive" : done ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"
|
|
691
691
|
),
|
|
@@ -710,7 +710,7 @@ function AiToolCallCard({ part }) {
|
|
|
710
710
|
] });
|
|
711
711
|
}
|
|
712
712
|
function AiMessageList({ messages, isStreaming, bridge }) {
|
|
713
|
-
const { t } =
|
|
713
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
714
714
|
const endRef = react.useRef(null);
|
|
715
715
|
react.useEffect(() => {
|
|
716
716
|
endRef.current?.scrollIntoView({ block: "end" });
|
|
@@ -733,7 +733,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
|
|
|
733
733
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
734
734
|
"div",
|
|
735
735
|
{
|
|
736
|
-
className:
|
|
736
|
+
className: chunk5KFSMXI4_js.cn(
|
|
737
737
|
"mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full",
|
|
738
738
|
isUser ? "bg-secondary text-muted-foreground" : "bg-primary/15 text-primary"
|
|
739
739
|
),
|
|
@@ -779,7 +779,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
|
|
|
779
779
|
] });
|
|
780
780
|
}
|
|
781
781
|
function AiProposalCard({ proposal, onAccept, onReject }) {
|
|
782
|
-
const { t } =
|
|
782
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
783
783
|
const lines = proposal.summary.map(ai.humanizeDiffLine);
|
|
784
784
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-primary/40 bg-primary/5 p-2.5", children: [
|
|
785
785
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1.5 text-[11px] font-semibold uppercase tracking-wide text-primary", children: t("pptx.ai.proposedChange") }),
|
|
@@ -821,7 +821,7 @@ function AiConversation({
|
|
|
821
821
|
aiPanel,
|
|
822
822
|
deckId
|
|
823
823
|
}) {
|
|
824
|
-
const { t } =
|
|
824
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
825
825
|
const chat = useAiConversation(useChat, session, config, bridge, {
|
|
826
826
|
// Live "AI as a collaborator" focus: as each tool runs, navigate to and
|
|
827
827
|
// highlight the slide / element(s) it touches so the canvas mirrors the
|
|
@@ -986,7 +986,7 @@ function AiChatPanel({
|
|
|
986
986
|
onClose,
|
|
987
987
|
panelWidth
|
|
988
988
|
}) {
|
|
989
|
-
const { t } =
|
|
989
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
990
990
|
const { state, session, initError } = useAiChat(bridge, config);
|
|
991
991
|
const deckId = react.useMemo(() => ai.deckIdFromBridge(bridge), [bridge]);
|
|
992
992
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useTranslation, cn } from './chunk-
|
|
1
|
+
import { useTranslation, cn } from './chunk-MR3ZSEHS.mjs';
|
|
2
2
|
import './chunk-UV2HVMKZ.mjs';
|
|
3
3
|
import { useMemo, useRef, useState, useEffect, useReducer, useCallback } from 'react';
|
|
4
4
|
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
|
package/dist/ai.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { PptxAiConfig } from 'ooxml-ui/pptx/ai';
|
|
2
|
+
export { PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiToolName, PptxAiWritePolicy } from 'ooxml-ui/pptx/ai';
|
|
3
|
+
import { PptxAiAssistant } from 'ooxml-ui/pptx/ai/host';
|
|
4
|
+
export { PptxAiAssistant } from 'ooxml-ui/pptx/ai/host';
|
|
5
|
+
|
|
6
|
+
//#region src/ai.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* Create an AI assistant for the viewer's `ai` prop from a `PptxAiConfig`.
|
|
9
|
+
*
|
|
10
|
+
* The handle is opaque and loads nothing. It keeps `config` by reference; create a new
|
|
11
|
+
* handle to change it. Every handle renders the same chat panel component, so a handle
|
|
12
|
+
* created on every render (rather than in `useMemo` or at module scope) never remounts the
|
|
13
|
+
* chat.
|
|
14
|
+
*/
|
|
15
|
+
declare function createAiAssistant(config: PptxAiConfig): PptxAiAssistant;
|
|
16
|
+
|
|
17
|
+
export { createAiAssistant };
|
package/dist/ai.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkF6WCYCHV_js = require('./chunk-F6WCYCHV.js');
|
|
4
|
+
require('./chunk-PIRHQTI4.js');
|
|
5
|
+
|
|
6
|
+
// src/ai.ts
|
|
7
|
+
function createAiAssistant(config) {
|
|
8
|
+
return chunkF6WCYCHV_js.aiAssistants.register(config, chunkF6WCYCHV_js.AiChatPanelLazy);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
exports.createAiAssistant = createAiAssistant;
|
package/dist/ai.js.br
ADDED
package/dist/ai.js.gz
ADDED
|
Binary file
|
package/dist/ai.mjs
ADDED
package/dist/ai.mjs.br
ADDED
|
Binary file
|
package/dist/ai.mjs.gz
ADDED
|
Binary file
|
|
@@ -1398,9 +1398,12 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1398
1398
|
const segmentStyle = segment?.style ?? {};
|
|
1399
1399
|
const textValue = run.text;
|
|
1400
1400
|
const lines = textValue.split("\n");
|
|
1401
|
-
const resolvedSegmentColor = pptx.
|
|
1402
|
-
|
|
1403
|
-
|
|
1401
|
+
const resolvedSegmentColor = pptx.textRunColor(
|
|
1402
|
+
pptx.normalizeHexColor(
|
|
1403
|
+
segmentStyle.color || element.textStyle?.color,
|
|
1404
|
+
run.hyperlink ? HYPERLINK_COLOR : fallbackColor
|
|
1405
|
+
),
|
|
1406
|
+
segmentStyle.color ? segmentStyle.colorRef?.alpha : element.textStyle?.colorRef?.alpha
|
|
1404
1407
|
);
|
|
1405
1408
|
const rawBaseline = typeof segmentStyle.baseline === "number" ? segmentStyle.baseline : 0;
|
|
1406
1409
|
const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
|
|
Binary file
|
|
Binary file
|