pptx-react-viewer 4.24.3 → 4.26.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 +68 -0
- package/README.md +12 -12
- package/dist/{AiChatPanel-XFP4F344.js → AiChatPanel-PGZDMW4M.js} +28 -28
- package/dist/AiChatPanel-PGZDMW4M.js.br +0 -0
- package/dist/AiChatPanel-PGZDMW4M.js.gz +0 -0
- package/dist/{AiChatPanel-B7LBWZ46.mjs → AiChatPanel-TIJ3MRTR.mjs} +4 -4
- package/dist/AiChatPanel-TIJ3MRTR.mjs.br +0 -0
- package/dist/AiChatPanel-TIJ3MRTR.mjs.gz +0 -0
- package/dist/{GLTFLoader-QWUPTGI5.mjs → GLTFLoader-O7FNKCHG.mjs} +4 -4
- package/dist/GLTFLoader-O7FNKCHG.mjs.br +0 -0
- package/dist/GLTFLoader-O7FNKCHG.mjs.gz +0 -0
- package/dist/{GLTFLoader-GO2CQTAO.js → GLTFLoader-UM56GMCK.js} +133 -133
- package/dist/GLTFLoader-UM56GMCK.js.br +0 -0
- package/dist/GLTFLoader-UM56GMCK.js.gz +0 -0
- package/dist/{Model3DScene-XCWVVQRN.js → Model3DScene-LQBTZGVN.js} +2 -2
- package/dist/Model3DScene-LQBTZGVN.js.br +0 -0
- package/dist/Model3DScene-LQBTZGVN.js.gz +0 -0
- package/dist/{Model3DScene-FLE6KYYG.mjs → Model3DScene-SJGIK2TB.mjs} +1 -1
- package/dist/Model3DScene-SJGIK2TB.mjs.br +0 -0
- package/dist/Model3DScene-SJGIK2TB.mjs.gz +0 -0
- package/dist/{OrbitControls-KHUJI7AC.js → OrbitControls-EXEHIXFI.js} +39 -39
- package/dist/OrbitControls-EXEHIXFI.js.br +0 -0
- package/dist/OrbitControls-EXEHIXFI.js.gz +0 -0
- package/dist/{OrbitControls-QYTXPPOG.mjs → OrbitControls-PZQ4CBVS.mjs} +2 -2
- package/dist/OrbitControls-PZQ4CBVS.mjs.br +0 -0
- package/dist/OrbitControls-PZQ4CBVS.mjs.gz +0 -0
- package/dist/{UTIF-POYWAAGO.js → UTIF-6SHLXCNF.js} +36 -36
- package/dist/UTIF-6SHLXCNF.js.br +0 -0
- package/dist/UTIF-6SHLXCNF.js.gz +0 -0
- package/dist/{UTIF-LAD5QYGQ.mjs → UTIF-CNNXS5Z5.mjs} +36 -36
- package/dist/UTIF-CNNXS5Z5.mjs.br +0 -0
- package/dist/UTIF-CNNXS5Z5.mjs.gz +0 -0
- package/dist/{chunk-5W2GW4XX.mjs → chunk-3VVZGHHY.mjs} +35 -27
- package/dist/chunk-3VVZGHHY.mjs.br +0 -0
- package/dist/chunk-3VVZGHHY.mjs.gz +0 -0
- package/dist/{chunk-LKL6DQ55.js → chunk-6HMJTCFO.js} +1 -0
- package/dist/chunk-6HMJTCFO.js.br +0 -0
- package/dist/chunk-6HMJTCFO.js.gz +0 -0
- package/dist/{chunk-SDSL4ZDQ.mjs → chunk-DKMPRUXL.mjs} +96 -96
- package/dist/chunk-DKMPRUXL.mjs.br +0 -0
- package/dist/chunk-DKMPRUXL.mjs.gz +0 -0
- package/dist/{chunk-HB5Z3SSC.mjs → chunk-K564H64A.mjs} +16 -14
- package/dist/chunk-K564H64A.mjs.br +0 -0
- package/dist/chunk-K564H64A.mjs.gz +0 -0
- package/dist/{chunk-TJG3I5L4.mjs → chunk-LCWNHXHZ.mjs} +4471 -3069
- package/dist/chunk-LCWNHXHZ.mjs.br +0 -0
- package/dist/chunk-LCWNHXHZ.mjs.gz +0 -0
- package/dist/{chunk-6L3VDF2A.mjs → chunk-NJYF5KTY.mjs} +2 -2
- package/dist/chunk-NJYF5KTY.mjs.br +0 -0
- package/dist/chunk-NJYF5KTY.mjs.gz +0 -0
- package/dist/{chunk-XONAKVNH.js → chunk-NUNDT6EL.js} +35 -27
- package/dist/chunk-NUNDT6EL.js.br +0 -0
- package/dist/chunk-NUNDT6EL.js.gz +0 -0
- package/dist/{chunk-HNUSASYH.js → chunk-NWZKMLGC.js} +100 -100
- package/dist/chunk-NWZKMLGC.js.br +0 -0
- package/dist/chunk-NWZKMLGC.js.gz +0 -0
- package/dist/{chunk-7YRLWWRY.js → chunk-PW3YOZFA.js} +845 -843
- package/dist/chunk-PW3YOZFA.js.br +0 -0
- package/dist/chunk-PW3YOZFA.js.gz +0 -0
- package/dist/{chunk-HF2JXYZT.mjs → chunk-QJNZZBVF.mjs} +8 -16
- package/dist/chunk-QJNZZBVF.mjs.br +0 -0
- package/dist/chunk-QJNZZBVF.mjs.gz +0 -0
- package/dist/{chunk-CBDUFZ77.js → chunk-QS3GAPPA.js} +2 -2
- package/dist/chunk-QS3GAPPA.js.br +0 -0
- package/dist/chunk-QS3GAPPA.js.gz +0 -0
- package/dist/{chunk-XEESKNA6.js → chunk-UHW3R465.js} +4472 -3069
- package/dist/chunk-UHW3R465.js.br +0 -0
- package/dist/chunk-UHW3R465.js.gz +0 -0
- package/dist/{chunk-C7SKC34H.mjs → chunk-USJXG5TE.mjs} +2 -2
- package/dist/chunk-USJXG5TE.mjs.br +0 -0
- package/dist/chunk-USJXG5TE.mjs.gz +0 -0
- package/dist/{chunk-MDVRIMCW.js → chunk-VEVEP7VF.js} +197 -197
- package/dist/chunk-VEVEP7VF.js.br +0 -0
- package/dist/chunk-VEVEP7VF.js.gz +0 -0
- package/dist/{chunk-Q4HRYUEP.mjs → chunk-XLPQM7OJ.mjs} +1 -0
- package/dist/chunk-XLPQM7OJ.mjs.br +0 -0
- package/dist/chunk-XLPQM7OJ.mjs.gz +0 -0
- package/dist/{chunk-7MPBJ5S4.js → chunk-ZW2WNQN7.js} +1117 -1125
- package/dist/chunk-ZW2WNQN7.js.br +0 -0
- package/dist/chunk-ZW2WNQN7.js.gz +0 -0
- package/dist/i18n/de.cjs +1 -0
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +1 -0
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +1 -0
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +1 -0
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +1 -0
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +1 -0
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +1 -0
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +1 -0
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.br +0 -0
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +1 -1
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +63 -63
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +2 -2
- package/dist/internals.js +105 -105
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -4
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/smartart-layouts-5T2QZGLG.js +2494 -0
- package/dist/smartart-layouts-5T2QZGLG.js.br +0 -0
- package/dist/smartart-layouts-5T2QZGLG.js.gz +0 -0
- package/dist/smartart-layouts-UCAFYVFW.mjs +2487 -0
- package/dist/smartart-layouts-UCAFYVFW.mjs.br +0 -0
- package/dist/smartart-layouts-UCAFYVFW.mjs.gz +0 -0
- package/dist/{three.module-BNAKYYCP.js → three.module-BLHG4FHZ.js} +445 -445
- package/dist/three.module-BLHG4FHZ.js.br +0 -0
- package/dist/three.module-BLHG4FHZ.js.gz +0 -0
- package/dist/{three.module-AUSRQGHJ.mjs → three.module-ZSSMKKHW.mjs} +1 -1
- package/dist/three.module-ZSSMKKHW.mjs.br +0 -0
- package/dist/three.module-ZSSMKKHW.mjs.gz +0 -0
- package/dist/viewer/index.d.ts +2 -2
- package/dist/viewer/index.js +27 -27
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +6 -6
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/dist/{y-webrtc-TRVZ75W3.js → y-webrtc-F2H7BRUK.js} +141 -141
- package/dist/y-webrtc-F2H7BRUK.js.br +0 -0
- package/dist/y-webrtc-F2H7BRUK.js.gz +0 -0
- package/dist/{y-webrtc-ETJMZ5LO.mjs → y-webrtc-GAHCEZSS.mjs} +18 -18
- package/dist/y-webrtc-GAHCEZSS.mjs.br +0 -0
- package/dist/y-webrtc-GAHCEZSS.mjs.gz +0 -0
- package/dist/{y-websocket-EHPOLGCR.js → y-websocket-FBMB63F4.js} +80 -80
- package/dist/y-websocket-FBMB63F4.js.br +0 -0
- package/dist/y-websocket-FBMB63F4.js.gz +0 -0
- package/dist/{y-websocket-FLUSL2B2.mjs → y-websocket-MAGDFVLN.mjs} +3 -3
- package/dist/y-websocket-MAGDFVLN.mjs.br +0 -0
- package/dist/y-websocket-MAGDFVLN.mjs.gz +0 -0
- package/package.json +8 -7
- package/dist/AiChatPanel-B7LBWZ46.mjs.br +0 -0
- package/dist/AiChatPanel-B7LBWZ46.mjs.gz +0 -0
- package/dist/AiChatPanel-XFP4F344.js.br +0 -0
- package/dist/AiChatPanel-XFP4F344.js.gz +0 -0
- package/dist/GLTFLoader-GO2CQTAO.js.br +0 -0
- package/dist/GLTFLoader-GO2CQTAO.js.gz +0 -0
- package/dist/GLTFLoader-QWUPTGI5.mjs.br +0 -0
- package/dist/GLTFLoader-QWUPTGI5.mjs.gz +0 -0
- package/dist/Model3DScene-FLE6KYYG.mjs.br +0 -0
- package/dist/Model3DScene-FLE6KYYG.mjs.gz +0 -0
- package/dist/Model3DScene-XCWVVQRN.js.br +0 -0
- package/dist/Model3DScene-XCWVVQRN.js.gz +0 -0
- package/dist/OrbitControls-KHUJI7AC.js.br +0 -0
- package/dist/OrbitControls-KHUJI7AC.js.gz +0 -0
- package/dist/OrbitControls-QYTXPPOG.mjs.br +0 -0
- package/dist/OrbitControls-QYTXPPOG.mjs.gz +0 -0
- package/dist/UTIF-LAD5QYGQ.mjs.br +0 -0
- package/dist/UTIF-LAD5QYGQ.mjs.gz +0 -0
- package/dist/UTIF-POYWAAGO.js.br +0 -0
- package/dist/UTIF-POYWAAGO.js.gz +0 -0
- package/dist/chunk-5W2GW4XX.mjs.br +0 -0
- package/dist/chunk-5W2GW4XX.mjs.gz +0 -0
- package/dist/chunk-6L3VDF2A.mjs.br +0 -0
- package/dist/chunk-6L3VDF2A.mjs.gz +0 -0
- package/dist/chunk-7MPBJ5S4.js.br +0 -0
- package/dist/chunk-7MPBJ5S4.js.gz +0 -0
- package/dist/chunk-7YRLWWRY.js.br +0 -0
- package/dist/chunk-7YRLWWRY.js.gz +0 -0
- package/dist/chunk-C7SKC34H.mjs.br +0 -0
- package/dist/chunk-C7SKC34H.mjs.gz +0 -0
- package/dist/chunk-CBDUFZ77.js.br +0 -0
- package/dist/chunk-CBDUFZ77.js.gz +0 -0
- package/dist/chunk-HB5Z3SSC.mjs.br +0 -0
- package/dist/chunk-HB5Z3SSC.mjs.gz +0 -0
- package/dist/chunk-HF2JXYZT.mjs.br +0 -0
- package/dist/chunk-HF2JXYZT.mjs.gz +0 -0
- package/dist/chunk-HNUSASYH.js.br +0 -0
- package/dist/chunk-HNUSASYH.js.gz +0 -0
- package/dist/chunk-LKL6DQ55.js.br +0 -0
- package/dist/chunk-LKL6DQ55.js.gz +0 -0
- package/dist/chunk-MDVRIMCW.js.br +0 -0
- package/dist/chunk-MDVRIMCW.js.gz +0 -0
- package/dist/chunk-Q4HRYUEP.mjs.br +0 -0
- package/dist/chunk-Q4HRYUEP.mjs.gz +0 -0
- package/dist/chunk-SDSL4ZDQ.mjs.br +0 -0
- package/dist/chunk-SDSL4ZDQ.mjs.gz +0 -0
- package/dist/chunk-TJG3I5L4.mjs.br +0 -0
- package/dist/chunk-TJG3I5L4.mjs.gz +0 -0
- package/dist/chunk-XEESKNA6.js.br +0 -0
- package/dist/chunk-XEESKNA6.js.gz +0 -0
- package/dist/chunk-XONAKVNH.js.br +0 -0
- package/dist/chunk-XONAKVNH.js.gz +0 -0
- package/dist/three.module-AUSRQGHJ.mjs.br +0 -0
- package/dist/three.module-AUSRQGHJ.mjs.gz +0 -0
- package/dist/three.module-BNAKYYCP.js.br +0 -0
- package/dist/three.module-BNAKYYCP.js.gz +0 -0
- package/dist/y-webrtc-ETJMZ5LO.mjs.br +0 -0
- package/dist/y-webrtc-ETJMZ5LO.mjs.gz +0 -0
- package/dist/y-webrtc-TRVZ75W3.js.br +0 -0
- package/dist/y-webrtc-TRVZ75W3.js.gz +0 -0
- package/dist/y-websocket-EHPOLGCR.js.br +0 -0
- package/dist/y-websocket-EHPOLGCR.js.gz +0 -0
- package/dist/y-websocket-FLUSL2B2.mjs.br +0 -0
- package/dist/y-websocket-FLUSL2B2.mjs.gz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,65 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
All notable changes to this project are documented here.
|
|
4
|
+
This file is generated from [Conventional Commits](https://www.conventionalcommits.org)
|
|
5
|
+
by [git-cliff](https://git-cliff.org); do not edit it by hand.
|
|
6
|
+
A release listed with no entries carried no Conventional Commit in this package's
|
|
7
|
+
scope: scripts/release-plan.mjs releases whenever any published file changes, not only on
|
|
8
|
+
conventional commits.
|
|
9
|
+
|
|
10
|
+
## [4.26.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.26.0) - 2026-10-07
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **pptx:** Add PowerPoint's built-in SmartArt layout definitions ([9c6cd97](https://github.com/ChristopherVR/ooxml/commit/9c6cd97ba6276a441aadf0d527d3bdc81fabce5e))
|
|
15
|
+
- **pptx:** Apply built-in SmartArt layouts synchronously and save them ([4ddf31c](https://github.com/ChristopherVR/ooxml/commit/4ddf31c5f2f2a1b17e8af411ecd42bee7deaa491))
|
|
16
|
+
- **shared:** Offer PowerPoint's built-in SmartArt layouts in every binding ([29100c4](https://github.com/ChristopherVR/ooxml/commit/29100c431c61983400e5af19ffd7d85ec2653463))
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
- **shared:** Size SmartArt 3D labels to their text and sharpen them ([79318b6](https://github.com/ChristopherVR/ooxml/commit/79318b60fe12b81612c16de58e1c47584a2af008))
|
|
21
|
+
- **shared:** Draw SmartArt connectors in the 3D view ([5795dcf](https://github.com/ChristopherVR/ooxml/commit/5795dcff0b489e9e79722781d000bba6d9b2f7a7))
|
|
22
|
+
|
|
23
|
+
## [4.25.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.25.0) - 2026-10-06
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
- **pptx:** Parse chart legend overlay from c:overlay ([dce36c6](https://github.com/ChristopherVR/ooxml/commit/dce36c6134cdaded271b73f541091b37223b6da2))
|
|
28
|
+
- **chart:** Move pie, radar, treemap and trendline helpers from pptx viewer ([c08a02b](https://github.com/ChristopherVR/ooxml/commit/c08a02b91b210c0f99c8c2dfbde02c2e1329fc57))
|
|
29
|
+
- **color:** Move text contrast and unit rgb helpers from pptx viewer ([2dcc341](https://github.com/ChristopherVR/ooxml/commit/2dcc341bd931610a9e9a8f4e8d53483cffbed8ec))
|
|
30
|
+
- **text:** Move tab leader and decimal tab helpers from pptx viewer ([3a5bcf0](https://github.com/ChristopherVR/ooxml/commit/3a5bcf0f4675db3d6831430c37db0c66c6814ef3))
|
|
31
|
+
- **geometry:** Move snap guides and align/distribute from pptx viewer ([3400e87](https://github.com/ChristopherVR/ooxml/commit/3400e8776661df9e2148e1be78819b1c12564b79))
|
|
32
|
+
- **pptx:** Forward the viewer's duplicated chart and theme helpers ([c22b276](https://github.com/ChristopherVR/ooxml/commit/c22b2766272ec08218ea14fadfc3cafd3c2b9ff6))
|
|
33
|
+
|
|
34
|
+
### Bug Fixes
|
|
35
|
+
|
|
36
|
+
- **pptx:** Clear the old layout definition on a SmartArt layout switch ([086e06c](https://github.com/ChristopherVR/ooxml/commit/086e06cc28b0389da820f35b5fd4f482f2312de8))
|
|
37
|
+
- **shared:** Make 3D SmartArt editing and layout switching reliable in every binding ([43e3e07](https://github.com/ChristopherVR/ooxml/commit/43e3e07e6f4996c9777d175ffd3536a341dadc86))
|
|
38
|
+
- **shared:** Hide the fill swatches when the pointer leaves a 3D SmartArt node ([c718e77](https://github.com/ChristopherVR/ooxml/commit/c718e77bb15f7d74721c252189bf99b1f77a9d0d))
|
|
39
|
+
- **ci:** Resolve pptx-viewer-core/ui in the binding test and demo configs ([dfffe69](https://github.com/ChristopherVR/ooxml/commit/dfffe6988b58d3765cf748df5adbd4c3b86b5fbe))
|
|
40
|
+
- **xlsx:** Harden code-scanning findings across areas ([90ee4b3](https://github.com/ChristopherVR/ooxml/commit/90ee4b33e1253f21cd0df299af468d550f85eddc))
|
|
41
|
+
- **xlsx:** Use Reflect for dynamic property writes and tighten sanitizers ([b663413](https://github.com/ChristopherVR/ooxml/commit/b66341384d972d73182b06c6b4c706c0462f9364))
|
|
42
|
+
|
|
43
|
+
### Refactor
|
|
44
|
+
|
|
45
|
+
- Move the library into src/core, next to src/ui ([3933a88](https://github.com/ChristopherVR/ooxml/commit/3933a88e36784ce5f4bfab0af1ca12eb65d3cd0c))
|
|
46
|
+
|
|
47
|
+
### Documentation
|
|
48
|
+
|
|
49
|
+
- Bring the pptx docs and agent guide up to date with the move ([8cc3f5e](https://github.com/ChristopherVR/ooxml/commit/8cc3f5e364232d39d2a2286e25056fd67b594108))
|
|
50
|
+
|
|
51
|
+
### Build & CI
|
|
52
|
+
|
|
53
|
+
- **deps:** Adopt ooxml-ui 0.29.1 and ooxml-core 0.21.1 ([56e1979](https://github.com/ChristopherVR/ooxml/commit/56e197912df02e3d6ce674025115dab206338138))
|
|
54
|
+
- **pptx:** Move the pptx demos and browser tests to the repository root ([a23994d](https://github.com/ChristopherVR/ooxml/commit/a23994d534fc34721f182d5eba9cd4abb97e44f8))
|
|
55
|
+
- **release:** Publish the pptx viewer packages from this repository ([21e790f](https://github.com/ChristopherVR/ooxml/commit/21e790f582b3d7072f3770d7a1bd9fc2ad035e53))
|
|
56
|
+
|
|
57
|
+
### Chores
|
|
58
|
+
|
|
59
|
+
- **viewers:** Import the pptx-viewer repository with its history ([dde62be](https://github.com/ChristopherVR/ooxml/commit/dde62beb12d38f53fcddf016a4de243fe7151712))
|
|
60
|
+
|
|
61
|
+
# Changelog
|
|
62
|
+
|
|
3
63
|
All notable changes to this project are documented here.
|
|
4
64
|
This file is generated from [Conventional Commits](https://www.conventionalcommits.org)
|
|
5
65
|
by [git-cliff](https://git-cliff.org); do not edit it by hand.
|
|
@@ -7,6 +67,14 @@ A release listed with no entries carried no Conventional Commit in this package'
|
|
|
7
67
|
scope: scripts/release-plan.mjs re-releases a package whenever any of its files
|
|
8
68
|
change, not only on conventional ones.
|
|
9
69
|
|
|
70
|
+
## [4.24.3](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@4.24.3) - 2026-10-06
|
|
71
|
+
|
|
72
|
+
### Bug Fixes
|
|
73
|
+
|
|
74
|
+
- **react,vue:** Keep chart quick-action buttons from overlapping when zoomed out (by @ChristopherVR) ([3bf1bfc](https://github.com/ChristopherVR/pptx-viewer/commit/3bf1bfcaa37876a2da97b75793ea982b13d16289))
|
|
75
|
+
- **shared:** Make 3D SmartArt rotate, edit and recolour like the 2D diagram (by @ChristopherVR) ([29473d4](https://github.com/ChristopherVR/pptx-viewer/commit/29473d42fdfd8a1b5dff4f2259ecad68ecbd57bc))
|
|
76
|
+
- Draw no default table cell border, and let the ooxml sync push to main ([#408](https://github.com/ChristopherVR/pptx-viewer/issues/408)) (by @ChristopherVR) ([11914db](https://github.com/ChristopherVR/pptx-viewer/commit/11914db10cd8f65504e1e5a777848731d88a949a))
|
|
77
|
+
|
|
10
78
|
## [4.24.2](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@4.24.2) - 2026-10-05
|
|
11
79
|
|
|
12
80
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# pptx-react-viewer
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/pptx-react-viewer)
|
|
4
|
-
[](https://github.com/ChristopherVR/
|
|
4
|
+
[](https://github.com/ChristopherVR/ooxml/blob/main/viewers/pptx/LICENSE)
|
|
5
5
|
[](https://www.npmjs.com/package/pptx-react-viewer)
|
|
6
6
|
|
|
7
7
|
> A drop-in **React** component that turns a `.pptx` file into a fully interactive PowerPoint: **view, edit, present, collaborate, and export**, entirely in the browser.
|
|
8
8
|
|
|
9
|
-

|
|
10
10
|
|
|
11
11
|
Slides render with real **HTML/CSS** (not `<canvas>`), so text stays crisp at any zoom, is selectable and screen-reader accessible, and every element is directly editable. The parsing/editing engine ([`pptx-viewer-core`](https://www.npmjs.com/package/pptx-viewer-core)) is **bundled in**, so you install just one package.
|
|
12
12
|
|
|
13
|
-
<samp>**[▶️ Try the live demo](https://christophervr.github.io/pptx
|
|
13
|
+
<samp>**[▶️ Try the live demo](https://christophervr.github.io/ooxml/pptx/demo/)** · **[📦 npm](https://www.npmjs.com/package/pptx-react-viewer)** · **[📖 Full docs](https://christophervr.github.io/ooxml/pptx/)** · **[🧩 Core SDK](https://www.npmjs.com/package/pptx-viewer-core)**</samp>
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
@@ -117,7 +117,7 @@ const bytes = await viewerRef.current?.getContent(); // Uint8Array of a valid .p
|
|
|
117
117
|
| `onStopCollaboration` | `() => void` | n/a | Called when the collaboration session stops |
|
|
118
118
|
| `theme` | `ViewerTheme` | n/a | Theme configuration for customising colours, radius, and CSS vars |
|
|
119
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 |
|
|
120
|
-
| `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/pptx
|
|
120
|
+
| `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
121
|
| `defaultThemeKey` | `string` | n/a | Initial File > Options > Appearance selection when no persisted preference exists |
|
|
122
122
|
| `availableThemes` | `ThemeCatalogEntry[]` | n/a | Theme choices offered by File > Options > Appearance (defaults to the built-in catalog) |
|
|
123
123
|
| `onThemeChange` | `(key: string) => void` | n/a | Host hook for the appearance picker; when set, the host owns persisting the choice |
|
|
@@ -161,7 +161,7 @@ slide/element manipulation methods are also available:
|
|
|
161
161
|
`addElement(element)`, `updateElement(id, patch)`, `deleteElements(ids)`, and
|
|
162
162
|
`duplicateElement(id)`.
|
|
163
163
|
|
|
164
|
-
See [element insertion](https://christophervr.github.io/pptx
|
|
164
|
+
See [element insertion](https://christophervr.github.io/ooxml/pptx/react/handle#add-element)
|
|
165
165
|
for the `addElement` contract, including the headless handle, and a core-factory example.
|
|
166
166
|
|
|
167
167
|
### `renderToCanvas`
|
|
@@ -243,9 +243,9 @@ Override specific values with the `theme` prop:
|
|
|
243
243
|
/>
|
|
244
244
|
```
|
|
245
245
|
|
|
246
|
-
All `ViewerTheme.colors` keys are optional; override only what you need. Helpers `defaultThemeColors`, `defaultRadius`, `themeToCssVars`, `defaultCssVars`, `ViewerThemeProvider`, and `useViewerTheme` are exported for advanced use. See the [full docs](https://christophervr.github.io/pptx
|
|
246
|
+
All `ViewerTheme.colors` keys are optional; override only what you need. Helpers `defaultThemeColors`, `defaultRadius`, `themeToCssVars`, `defaultCssVars`, `ViewerThemeProvider`, and `useViewerTheme` are exported for advanced use. See the [full docs](https://christophervr.github.io/ooxml/pptx/) for the complete token list.
|
|
247
247
|
|
|
248
|
-
Two ready-made presets ship with the package: `vermilionLightTheme` (warm paper canvas) and `vermilionDarkTheme` (dimmed presenter room), the same vermilion brand look as the [documentation site](https://christophervr.github.io/pptx
|
|
248
|
+
Two ready-made presets ship with the package: `vermilionLightTheme` (warm paper canvas) and `vermilionDarkTheme` (dimmed presenter room), the same vermilion brand look as the [documentation site](https://christophervr.github.io/ooxml/pptx/):
|
|
249
249
|
|
|
250
250
|
```tsx
|
|
251
251
|
import { PowerPointViewer, vermilionLightTheme } from 'pptx-react-viewer';
|
|
@@ -257,13 +257,13 @@ The underlying palettes (`vermilionLightColors`, `vermilionDarkColors`) and radi
|
|
|
257
257
|
|
|
258
258
|
## Localization (i18n)
|
|
259
259
|
|
|
260
|
-
UI labels go through [i18next](https://www.i18next.com/) / [react-i18next](https://react.i18next.com/) with dotted keys such as `pptx.statusBar.allSaved`. Initialise an i18next instance and wrap your app in `I18nextProvider` (the demo's `demo/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/pptx
|
|
260
|
+
UI labels go through [i18next](https://www.i18next.com/) / [react-i18next](https://react.i18next.com/) with dotted keys such as `pptx.statusBar.allSaved`. Initialise an i18next instance and wrap your app in `I18nextProvider` (the demo's `demo/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.
|
|
261
261
|
|
|
262
262
|
## How it's built
|
|
263
263
|
|
|
264
|
-
You only need the `<PowerPointViewer>` component; everything else is internal. Behind it, the logic lives in many small, focused React hooks, and the components themselves just draw what those hooks produce. Slides are rendered as ordinary HTML and CSS (charts as inline SVG, tables as real `<table>` elements), which is why text stays sharp, selectable, and accessible. For the full component tree, the rendering pipeline, the animation and transition engine, connector routing, collaboration, and a file-by-file map, see the [full documentation](https://christophervr.github.io/pptx
|
|
264
|
+
You only need the `<PowerPointViewer>` component; everything else is internal. Behind it, the logic lives in many small, focused React hooks, and the components themselves just draw what those hooks produce. Slides are rendered as ordinary HTML and CSS (charts as inline SVG, tables as real `<table>` elements), which is why text stays sharp, selectable, and accessible. For the full component tree, the rendering pipeline, the animation and transition engine, connector routing, collaboration, and a file-by-file map, see the [full documentation](https://christophervr.github.io/ooxml/pptx/).
|
|
265
265
|
|
|
266
|
-
A small curated set of those hooks is exported from `pptx-react-viewer/viewer` with a stable API; the complete set (80+) is also importable from `pptx-react-viewer/internals` for advanced integrations. The `internals` subpath is **not covered by semver**: prefer the stable root exports. See the [Hooks reference](https://christophervr.github.io/pptx
|
|
266
|
+
A small curated set of those hooks is exported from `pptx-react-viewer/viewer` with a stable API; the complete set (80+) is also importable from `pptx-react-viewer/internals` for advanced integrations. The `internals` subpath is **not covered by semver**: prefer the stable root exports. See the [Hooks reference](https://christophervr.github.io/ooxml/pptx/react/hooks-reference) for the full list.
|
|
267
267
|
|
|
268
268
|
The bulk of that cross-framework logic (colour/geometry/connector/animation/chart math, slide
|
|
269
269
|
transitions, and more) actually lives in `pptx-viewer-shared`, an internal package that is
|
|
@@ -275,7 +275,7 @@ so you never need `pptx-viewer-shared` yourself.
|
|
|
275
275
|
|
|
276
276
|
## Limitations
|
|
277
277
|
|
|
278
|
-
CSS-based rendering trades a few visual effects for crisp text, accessibility, and DOM interactivity: `backdrop-filter` becomes semi-transparent backgrounds and path gradients approximate as elliptical radials, while `mix-blend-mode` and CSS 3D transforms render natively on screen but flatten in raster export. Text uses fonts available in the browser (embedded fonts are injected when present). Media playback depends on browser codec support. SmartArt is decomposed into editable shapes with a live reflow engine for structural edits. Charts are editable directly on the canvas (hover a mark for its tooltip, click to select, drag it to a new value, double-click the title to rename), except for stacked/percent-stacked, pie, radar, surface and map kinds, which are click-to-select and edited in the inspector data grid. 3D models need the optional Three.js peer. See the [full docs](https://christophervr.github.io/pptx
|
|
278
|
+
CSS-based rendering trades a few visual effects for crisp text, accessibility, and DOM interactivity: `backdrop-filter` becomes semi-transparent backgrounds and path gradients approximate as elliptical radials, while `mix-blend-mode` and CSS 3D transforms render natively on screen but flatten in raster export. Text uses fonts available in the browser (embedded fonts are injected when present). Media playback depends on browser codec support. SmartArt is decomposed into editable shapes with a live reflow engine for structural edits. Charts are editable directly on the canvas (hover a mark for its tooltip, click to select, drag it to a new value, double-click the title to rename), except for stacked/percent-stacked, pie, radar, surface and map kinds, which are click-to-select and edited in the inspector data grid. 3D models need the optional Three.js peer. See the [full docs](https://christophervr.github.io/ooxml/pptx/) for the complete list.
|
|
279
279
|
|
|
280
280
|
## Reference translations
|
|
281
281
|
|
|
@@ -288,7 +288,7 @@ import { translationsZhCN } from 'pptx-react-viewer/i18n/zh-CN';
|
|
|
288
288
|
|
|
289
289
|
The other subpaths are `i18n/fr` (`translationsFr`), `i18n/es`
|
|
290
290
|
(`translationsEs`), and `i18n/de` (`translationsDe`). See the
|
|
291
|
-
[localization guide](https://christophervr.github.io/pptx
|
|
291
|
+
[localization guide](https://christophervr.github.io/ooxml/pptx/guide/localization)
|
|
292
292
|
for registration and runtime switching. Existing English imports are unchanged.
|
|
293
293
|
|
|
294
294
|
## License
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
require('./chunk-
|
|
6
|
-
require('./chunk-
|
|
3
|
+
var chunkNWZKMLGC_js = require('./chunk-NWZKMLGC.js');
|
|
4
|
+
var chunkVEVEP7VF_js = require('./chunk-VEVEP7VF.js');
|
|
5
|
+
require('./chunk-UHW3R465.js');
|
|
6
|
+
require('./chunk-6HMJTCFO.js');
|
|
7
7
|
require('./chunk-4VNS5WPM.js');
|
|
8
8
|
var react = require('react');
|
|
9
9
|
var reactI18next = require('react-i18next');
|
|
@@ -22,7 +22,7 @@ function useAiChat(bridge, config) {
|
|
|
22
22
|
setInitError(void 0);
|
|
23
23
|
void (async () => {
|
|
24
24
|
try {
|
|
25
|
-
const available = await
|
|
25
|
+
const available = await chunkNWZKMLGC_js.isAiAvailable();
|
|
26
26
|
if (cancelled) {
|
|
27
27
|
return;
|
|
28
28
|
}
|
|
@@ -30,7 +30,7 @@ function useAiChat(bridge, config) {
|
|
|
30
30
|
setState("unavailable");
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
33
|
-
const built = await
|
|
33
|
+
const built = await chunkNWZKMLGC_js.createAiChatSession(bridge, configRef.current);
|
|
34
34
|
if (cancelled) {
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
@@ -87,7 +87,7 @@ function withDeckContext(inner, bridge, strategy) {
|
|
|
87
87
|
}
|
|
88
88
|
let context = "";
|
|
89
89
|
try {
|
|
90
|
-
context = await
|
|
90
|
+
context = await chunkNWZKMLGC_js.buildDeckContext(bridge, { strategy, focus: {} });
|
|
91
91
|
} catch {
|
|
92
92
|
context = "";
|
|
93
93
|
}
|
|
@@ -145,12 +145,12 @@ function useAiConversation(useChat, session, config, bridge, options = {}) {
|
|
|
145
145
|
chatRef.current = chat;
|
|
146
146
|
react.useEffect(() => {
|
|
147
147
|
const seen = seenToolCallsRef.current;
|
|
148
|
-
for (const call of
|
|
148
|
+
for (const call of chunkNWZKMLGC_js.extractReadyToolCalls(chat.messages)) {
|
|
149
149
|
if (seen.has(call.toolCallId)) {
|
|
150
150
|
continue;
|
|
151
151
|
}
|
|
152
152
|
seen.add(call.toolCallId);
|
|
153
|
-
onToolTargetRef.current?.(
|
|
153
|
+
onToolTargetRef.current?.(chunkNWZKMLGC_js.toolCanvasTarget(call.toolName, call.input));
|
|
154
154
|
}
|
|
155
155
|
}, [chat.messages]);
|
|
156
156
|
const send = react.useCallback(
|
|
@@ -184,7 +184,7 @@ function useAiConversation(useChat, session, config, bridge, options = {}) {
|
|
|
184
184
|
const setMessages = react.useCallback(
|
|
185
185
|
(next) => {
|
|
186
186
|
chat.setMessages(next);
|
|
187
|
-
for (const call of
|
|
187
|
+
for (const call of chunkNWZKMLGC_js.extractReadyToolCalls(next)) {
|
|
188
188
|
seenToolCallsRef.current.add(call.toolCallId);
|
|
189
189
|
}
|
|
190
190
|
session.proposals.clear();
|
|
@@ -226,7 +226,7 @@ function deriveTitle(messages) {
|
|
|
226
226
|
}
|
|
227
227
|
function useAiHistory(input) {
|
|
228
228
|
const { deckId, messages, setMessages } = input;
|
|
229
|
-
const store = react.useMemo(() => input.store ??
|
|
229
|
+
const store = react.useMemo(() => input.store ?? chunkNWZKMLGC_js.createChatHistoryStore(), [input.store]);
|
|
230
230
|
const [activeChatId, setActiveChatId] = react.useState(newChatId);
|
|
231
231
|
const [chats, setChats] = react.useState([]);
|
|
232
232
|
const createdAtRef = react.useRef(Date.now());
|
|
@@ -369,7 +369,7 @@ function AiComposer({
|
|
|
369
369
|
disabled: value.trim().length === 0,
|
|
370
370
|
title: t("pptx.ai.send"),
|
|
371
371
|
"aria-label": t("pptx.ai.send"),
|
|
372
|
-
className:
|
|
372
|
+
className: chunkVEVEP7VF_js.cn(
|
|
373
373
|
"shrink-0 rounded-sm p-1.5 transition-colors",
|
|
374
374
|
value.trim().length === 0 ? "text-muted-foreground/50" : "bg-primary text-primary-foreground hover:bg-primary/90"
|
|
375
375
|
),
|
|
@@ -392,15 +392,15 @@ function AiFocusBar({
|
|
|
392
392
|
onClearPicks
|
|
393
393
|
}) {
|
|
394
394
|
const { t } = reactI18next.useTranslation();
|
|
395
|
-
const chips =
|
|
396
|
-
const twoTables =
|
|
395
|
+
const chips = chunkNWZKMLGC_js.focusTargetChips(targets, slides);
|
|
396
|
+
const twoTables = chunkNWZKMLGC_js.isTwoTableFocus(targets, slides);
|
|
397
397
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border bg-secondary/30", children: [
|
|
398
398
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1 px-2.5 py-1.5", children: [
|
|
399
399
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wide text-muted-foreground", children: t("pptx.ai.focusScope") }),
|
|
400
400
|
chips.map((chip) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
401
401
|
"span",
|
|
402
402
|
{
|
|
403
|
-
className:
|
|
403
|
+
className: chunkVEVEP7VF_js.cn(
|
|
404
404
|
"inline-flex max-w-[10rem] items-center rounded-full px-2 py-0.5 text-[11px]",
|
|
405
405
|
hasPicks || isPinned ? "bg-primary/15 text-primary" : "bg-muted text-muted-foreground"
|
|
406
406
|
),
|
|
@@ -416,7 +416,7 @@ function AiFocusBar({
|
|
|
416
416
|
{
|
|
417
417
|
type: "button",
|
|
418
418
|
onClick: () => onSendDirective(
|
|
419
|
-
|
|
419
|
+
chunkNWZKMLGC_js.mergeTablesDirective(
|
|
420
420
|
twoTables.slideIndex,
|
|
421
421
|
twoTables.elementIdA,
|
|
422
422
|
twoTables.elementIdB
|
|
@@ -437,7 +437,7 @@ function AiFocusBar({
|
|
|
437
437
|
title: t("pptx.ai.pickElement"),
|
|
438
438
|
"aria-label": t("pptx.ai.pickAria"),
|
|
439
439
|
"aria-pressed": pickMode,
|
|
440
|
-
className:
|
|
440
|
+
className: chunkVEVEP7VF_js.cn(
|
|
441
441
|
"rounded-sm p-1 max-md:min-w-[44px]! max-md:min-h-[44px]! flex items-center justify-center",
|
|
442
442
|
pickMode ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-accent"
|
|
443
443
|
),
|
|
@@ -516,7 +516,7 @@ function AiHistoryList({ chats, activeChatId, onResume, onDelete }) {
|
|
|
516
516
|
{
|
|
517
517
|
type: "button",
|
|
518
518
|
onClick: () => onResume(chat.id),
|
|
519
|
-
className:
|
|
519
|
+
className: chunkVEVEP7VF_js.cn(
|
|
520
520
|
"flex min-w-0 flex-1 items-start gap-2 rounded-sm px-2 py-1.5 text-left hover:bg-accent",
|
|
521
521
|
chat.id === activeChatId && "bg-accent/60"
|
|
522
522
|
),
|
|
@@ -671,26 +671,26 @@ function AiToolCallCard({ part }) {
|
|
|
671
671
|
const failed = part.state === "output-error";
|
|
672
672
|
const done = part.state === "output-available";
|
|
673
673
|
const running = !failed && !done;
|
|
674
|
-
const activity =
|
|
674
|
+
const activity = chunkNWZKMLGC_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
|
|
675
675
|
const Icon = ICONS[activity.icon] ?? lu.LuWrench;
|
|
676
|
-
const rawSummary =
|
|
676
|
+
const rawSummary = chunkNWZKMLGC_js.summarizeToolArgs(part.input);
|
|
677
677
|
const statusLabel = failed ? t("pptx.ai.toolFailed") : done ? t("pptx.ai.toolDone") : t("pptx.ai.toolRunning");
|
|
678
678
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[12px]", children: [
|
|
679
679
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
680
680
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
681
681
|
Icon,
|
|
682
682
|
{
|
|
683
|
-
className:
|
|
683
|
+
className: chunkVEVEP7VF_js.cn(
|
|
684
684
|
"w-3.5 h-3.5 shrink-0",
|
|
685
685
|
failed ? "text-destructive" : "text-muted-foreground"
|
|
686
686
|
)
|
|
687
687
|
}
|
|
688
688
|
),
|
|
689
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
689
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkVEVEP7VF_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
|
|
690
690
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
691
691
|
"span",
|
|
692
692
|
{
|
|
693
|
-
className:
|
|
693
|
+
className: chunkVEVEP7VF_js.cn(
|
|
694
694
|
"ml-auto inline-flex items-center gap-1 rounded-sm px-1.5 py-0.5 text-[10px]",
|
|
695
695
|
failed ? "bg-destructive/15 text-destructive" : done ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"
|
|
696
696
|
),
|
|
@@ -707,7 +707,7 @@ function AiToolCallCard({ part }) {
|
|
|
707
707
|
rawSummary && /* @__PURE__ */ jsxRuntime.jsxs("details", { className: "group mt-0.5 pl-5", children: [
|
|
708
708
|
/* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer list-none text-[10px] text-muted-foreground/70 hover:text-muted-foreground", children: t("pptx.ai.toolDetails") }),
|
|
709
709
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-0.5 break-words font-mono text-[10px] text-muted-foreground/80", children: [
|
|
710
|
-
|
|
710
|
+
chunkNWZKMLGC_js.toolLabel(part.toolName),
|
|
711
711
|
": ",
|
|
712
712
|
rawSummary
|
|
713
713
|
] })
|
|
@@ -730,7 +730,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
|
|
|
730
730
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-3 overflow-y-auto px-3 py-3", children: [
|
|
731
731
|
messages.map((message) => {
|
|
732
732
|
const isUser = message.role === "user";
|
|
733
|
-
const parts =
|
|
733
|
+
const parts = chunkNWZKMLGC_js.toRenderableParts(message);
|
|
734
734
|
if (parts.length === 0 && !isUser) {
|
|
735
735
|
return null;
|
|
736
736
|
}
|
|
@@ -738,7 +738,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
|
|
|
738
738
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
739
739
|
"div",
|
|
740
740
|
{
|
|
741
|
-
className:
|
|
741
|
+
className: chunkVEVEP7VF_js.cn(
|
|
742
742
|
"mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full",
|
|
743
743
|
isUser ? "bg-secondary text-muted-foreground" : "bg-primary/15 text-primary"
|
|
744
744
|
),
|
|
@@ -785,7 +785,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
|
|
|
785
785
|
}
|
|
786
786
|
function AiProposalCard({ proposal, onAccept, onReject }) {
|
|
787
787
|
const { t } = reactI18next.useTranslation();
|
|
788
|
-
const lines = proposal.summary.map(
|
|
788
|
+
const lines = proposal.summary.map(chunkNWZKMLGC_js.humanizeDiffLine);
|
|
789
789
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-primary/40 bg-primary/5 p-2.5", children: [
|
|
790
790
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1.5 text-[11px] font-semibold uppercase tracking-wide text-primary", children: t("pptx.ai.proposedChange") }),
|
|
791
791
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[12px] font-medium text-foreground", children: proposal.label }),
|
|
@@ -993,7 +993,7 @@ function AiChatPanel({
|
|
|
993
993
|
}) {
|
|
994
994
|
const { t } = reactI18next.useTranslation();
|
|
995
995
|
const { state, session, initError } = useAiChat(bridge, config);
|
|
996
|
-
const deckId = react.useMemo(() =>
|
|
996
|
+
const deckId = react.useMemo(() => chunkNWZKMLGC_js.deckIdFromBridge(bridge), [bridge]);
|
|
997
997
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
998
998
|
"div",
|
|
999
999
|
{
|
|
Binary file
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { deckIdFromBridge, isAiAvailable, createAiChatSession, extractReadyToolCalls, toolCanvasTarget, createChatHistoryStore, focusTargetChips, isTwoTableFocus, mergeTablesDirective, toRenderableParts, humanizeDiffLine, buildDeckContext, describeToolActivity, summarizeToolArgs, toolLabel } from './chunk-
|
|
2
|
-
import { cn } from './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import './chunk-
|
|
1
|
+
import { deckIdFromBridge, isAiAvailable, createAiChatSession, extractReadyToolCalls, toolCanvasTarget, createChatHistoryStore, focusTargetChips, isTwoTableFocus, mergeTablesDirective, toRenderableParts, humanizeDiffLine, buildDeckContext, describeToolActivity, summarizeToolArgs, toolLabel } from './chunk-DKMPRUXL.mjs';
|
|
2
|
+
import { cn } from './chunk-USJXG5TE.mjs';
|
|
3
|
+
import './chunk-LCWNHXHZ.mjs';
|
|
4
|
+
import './chunk-XLPQM7OJ.mjs';
|
|
5
5
|
import './chunk-XGB3TDIC.mjs';
|
|
6
6
|
import { useMemo, useRef, useState, useEffect, useReducer, useCallback } from 'react';
|
|
7
7
|
import { useTranslation } from 'react-i18next';
|
|
Binary file
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Quaternion, Matrix4, Loader, LoaderUtils, FileLoader, Color, LinearSRGBColorSpace, SpotLight, PointLight, DirectionalLight, MeshBasicMaterial, SRGBColorSpace, MeshPhysicalMaterial, Vector2, Vector3, InstancedMesh, InstancedBufferAttribute, BufferGeometry, Object3D, TextureLoader, ImageBitmapLoader, BufferAttribute, InterleavedBuffer, InterleavedBufferAttribute, LinearMipmapLinearFilter, NearestMipmapLinearFilter, LinearMipmapNearestFilter, NearestMipmapNearestFilter, LinearFilter, NearestFilter, RepeatWrapping, MirroredRepeatWrapping, ClampToEdgeWrapping, PointsMaterial, Material, LineBasicMaterial, MeshStandardMaterial, DoubleSide, PropertyBinding, SkinnedMesh, Mesh, LineSegments, Line, LineLoop, Points, Group, PerspectiveCamera, MathUtils, OrthographicCamera, Skeleton, AnimationClip, Bone, InterpolateDiscrete, InterpolateLinear, ColorManagement, Texture, VectorKeyframeTrack, NumberKeyframeTrack, QuaternionKeyframeTrack, TrianglesDrawMode, TriangleFanDrawMode, TriangleStripDrawMode, FrontSide, Interpolant, Box3, Sphere } from './chunk-
|
|
1
|
+
import { Quaternion, Matrix4, Loader, LoaderUtils, FileLoader, Color, LinearSRGBColorSpace, SpotLight, PointLight, DirectionalLight, MeshBasicMaterial, SRGBColorSpace, MeshPhysicalMaterial, Vector2, Vector3, InstancedMesh, InstancedBufferAttribute, BufferGeometry, Object3D, TextureLoader, ImageBitmapLoader, BufferAttribute, InterleavedBuffer, InterleavedBufferAttribute, LinearMipmapLinearFilter, NearestMipmapLinearFilter, LinearMipmapNearestFilter, NearestMipmapNearestFilter, LinearFilter, NearestFilter, RepeatWrapping, MirroredRepeatWrapping, ClampToEdgeWrapping, PointsMaterial, Material, LineBasicMaterial, MeshStandardMaterial, DoubleSide, PropertyBinding, SkinnedMesh, Mesh, LineSegments, Line, LineLoop, Points, Group, PerspectiveCamera, MathUtils, OrthographicCamera, Skeleton, AnimationClip, Bone, InterpolateDiscrete, InterpolateLinear, ColorManagement, Texture, VectorKeyframeTrack, NumberKeyframeTrack, QuaternionKeyframeTrack, TrianglesDrawMode, TriangleFanDrawMode, TriangleStripDrawMode, FrontSide, Interpolant, Box3, Sphere } from './chunk-NJYF5KTY.mjs';
|
|
2
2
|
import './chunk-XGB3TDIC.mjs';
|
|
3
3
|
|
|
4
|
-
//
|
|
4
|
+
// ../../../../node_modules/.bun/three@0.186.1/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js
|
|
5
5
|
function toTrianglesDrawMode(geometry, drawMode) {
|
|
6
6
|
if (drawMode === TrianglesDrawMode) {
|
|
7
7
|
console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.");
|
|
@@ -56,7 +56,7 @@ function toTrianglesDrawMode(geometry, drawMode) {
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
//
|
|
59
|
+
// ../../../../node_modules/.bun/three@0.186.1/node_modules/three/examples/jsm/utils/SkeletonUtils.js
|
|
60
60
|
function clone(source) {
|
|
61
61
|
const sourceLookup = /* @__PURE__ */ new Map();
|
|
62
62
|
const cloneLookup = /* @__PURE__ */ new Map();
|
|
@@ -86,7 +86,7 @@ function parallelTraverse(a, b, callback) {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
//
|
|
89
|
+
// ../../../../node_modules/.bun/three@0.186.1/node_modules/three/examples/jsm/loaders/GLTFLoader.js
|
|
90
90
|
var GLTFLoader = class extends Loader {
|
|
91
91
|
/**
|
|
92
92
|
* Constructs a new glTF loader.
|
|
Binary file
|
|
Binary file
|