pptx-react-viewer 4.18.0 → 4.19.1
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 +64 -0
- package/dist/{AiChatPanel-4RAGQKFE.js → AiChatPanel-L3IRMMYT.js} +28 -28
- package/dist/AiChatPanel-L3IRMMYT.js.br +0 -0
- package/dist/AiChatPanel-L3IRMMYT.js.gz +0 -0
- package/dist/{AiChatPanel-BIS3OYZ2.mjs → AiChatPanel-NUR5MVNW.mjs} +4 -4
- package/dist/AiChatPanel-NUR5MVNW.mjs.br +0 -0
- package/dist/AiChatPanel-NUR5MVNW.mjs.gz +0 -0
- package/dist/{Model3DScene-ZVXXKGMO.mjs → Model3DScene-653PWVVJ.mjs} +1 -1
- package/dist/Model3DScene-653PWVVJ.mjs.br +0 -0
- package/dist/Model3DScene-653PWVVJ.mjs.gz +0 -0
- package/dist/{Model3DScene-KJBH5LFE.js → Model3DScene-PXKI7V27.js} +2 -2
- package/dist/Model3DScene-PXKI7V27.js.br +0 -0
- package/dist/Model3DScene-PXKI7V27.js.gz +0 -0
- package/dist/{chunk-UWRUG37I.js → chunk-2NYN2CLG.js} +5 -5
- package/dist/chunk-2NYN2CLG.js.br +0 -0
- package/dist/chunk-2NYN2CLG.js.gz +0 -0
- package/dist/{chunk-X5O53JPT.mjs → chunk-3576DPVG.mjs} +2 -2
- package/dist/chunk-3576DPVG.mjs.br +0 -0
- package/dist/chunk-3576DPVG.mjs.gz +0 -0
- package/dist/{chunk-XZQNOZA6.js → chunk-5EO3Q2PH.js} +4693 -2413
- package/dist/chunk-5EO3Q2PH.js.br +0 -0
- package/dist/chunk-5EO3Q2PH.js.gz +0 -0
- package/dist/{chunk-EDQ436NK.mjs → chunk-6VQD24IV.mjs} +4687 -2401
- package/dist/chunk-6VQD24IV.mjs.br +0 -0
- package/dist/chunk-6VQD24IV.mjs.gz +0 -0
- package/dist/{chunk-SJJY4B4V.mjs → chunk-757NASG5.mjs} +4 -4
- package/dist/chunk-757NASG5.mjs.br +0 -0
- package/dist/chunk-757NASG5.mjs.gz +0 -0
- package/dist/{chunk-5OYCO5WW.mjs → chunk-CHWNGXWV.mjs} +1 -1
- package/dist/chunk-CHWNGXWV.mjs.br +0 -0
- package/dist/chunk-CHWNGXWV.mjs.gz +0 -0
- package/dist/{chunk-CJ3GYPF6.js → chunk-LFMZT6DP.js} +2829 -3781
- package/dist/chunk-LFMZT6DP.js.br +0 -0
- package/dist/chunk-LFMZT6DP.js.gz +0 -0
- package/dist/{chunk-2GRLCBMP.js → chunk-LKL6DQ55.js} +24 -4
- package/dist/chunk-LKL6DQ55.js.br +0 -0
- package/dist/chunk-LKL6DQ55.js.gz +0 -0
- package/dist/{chunk-NWWE7I6R.mjs → chunk-NEOMOXHN.mjs} +985 -1937
- package/dist/chunk-NEOMOXHN.mjs.br +0 -0
- package/dist/chunk-NEOMOXHN.mjs.gz +0 -0
- package/dist/{chunk-IDZ7S2O3.mjs → chunk-Q4HRYUEP.mjs} +24 -4
- package/dist/chunk-Q4HRYUEP.mjs.br +0 -0
- package/dist/chunk-Q4HRYUEP.mjs.gz +0 -0
- package/dist/{chunk-SJJ4AOLI.js → chunk-VC6357LY.js} +831 -831
- package/dist/chunk-VC6357LY.js.br +0 -0
- package/dist/chunk-VC6357LY.js.gz +0 -0
- package/dist/{chunk-7T64DQTQ.js → chunk-VLYVXFGF.js} +197 -197
- package/dist/chunk-VLYVXFGF.js.br +0 -0
- package/dist/chunk-VLYVXFGF.js.gz +0 -0
- package/dist/i18n/de.cjs +20 -0
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +20 -0
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +20 -0
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +20 -0
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +20 -0
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +20 -0
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +20 -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 +20 -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 +153 -5
- 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 +153 -5
- 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/viewer/index.d.ts +153 -5
- 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 +3 -1
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +2 -2
- package/dist/AiChatPanel-4RAGQKFE.js.br +0 -0
- package/dist/AiChatPanel-4RAGQKFE.js.gz +0 -0
- package/dist/AiChatPanel-BIS3OYZ2.mjs.br +0 -0
- package/dist/AiChatPanel-BIS3OYZ2.mjs.gz +0 -0
- package/dist/Model3DScene-KJBH5LFE.js.br +0 -0
- package/dist/Model3DScene-KJBH5LFE.js.gz +0 -0
- package/dist/Model3DScene-ZVXXKGMO.mjs.br +0 -0
- package/dist/Model3DScene-ZVXXKGMO.mjs.gz +0 -0
- package/dist/chunk-2GRLCBMP.js.br +0 -0
- package/dist/chunk-2GRLCBMP.js.gz +0 -0
- package/dist/chunk-5OYCO5WW.mjs.br +0 -0
- package/dist/chunk-5OYCO5WW.mjs.gz +0 -0
- package/dist/chunk-7T64DQTQ.js.br +0 -0
- package/dist/chunk-7T64DQTQ.js.gz +0 -0
- package/dist/chunk-CJ3GYPF6.js.br +0 -0
- package/dist/chunk-CJ3GYPF6.js.gz +0 -0
- package/dist/chunk-EDQ436NK.mjs.br +0 -0
- package/dist/chunk-EDQ436NK.mjs.gz +0 -0
- package/dist/chunk-IDZ7S2O3.mjs.br +0 -0
- package/dist/chunk-IDZ7S2O3.mjs.gz +0 -0
- package/dist/chunk-NWWE7I6R.mjs.br +0 -0
- package/dist/chunk-NWWE7I6R.mjs.gz +0 -0
- package/dist/chunk-SJJ4AOLI.js.br +0 -0
- package/dist/chunk-SJJ4AOLI.js.gz +0 -0
- package/dist/chunk-SJJY4B4V.mjs.br +0 -0
- package/dist/chunk-SJJY4B4V.mjs.gz +0 -0
- package/dist/chunk-UWRUG37I.js.br +0 -0
- package/dist/chunk-UWRUG37I.js.gz +0 -0
- package/dist/chunk-X5O53JPT.mjs.br +0 -0
- package/dist/chunk-X5O53JPT.mjs.gz +0 -0
- package/dist/chunk-XZQNOZA6.js.br +0 -0
- package/dist/chunk-XZQNOZA6.js.gz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,70 @@ A release listed with no entries carried no Conventional Commit in this package'
|
|
|
7
7
|
scope: scripts/release-plan.mjs re-releases a package whenever any of its files
|
|
8
8
|
change, not only on conventional ones.
|
|
9
9
|
|
|
10
|
+
## [4.19.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@4.19.0) - 2026-10-02
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **shared:** Add menus, colours, selects and galleries to the Home strips (by @ChristopherVR) ([c30aa60](https://github.com/ChristopherVR/pptx-viewer/commit/c30aa60c38c3d40e8b63584f98f38ed22741569e))
|
|
15
|
+
- **ui:** Shared radio and switch primitives, adopt in all bindings (by @ChristopherVR) ([37f8c8f](https://github.com/ChristopherVR/pptx-viewer/commit/37f8c8f0694b3e186437a09f051ce6714fd62523))
|
|
16
|
+
- **ui:** Match PowerPoint on Transitions, Animations, Review, View, SmartArt (by @ChristopherVR) ([cee954b](https://github.com/ChristopherVR/pptx-viewer/commit/cee954bf0a1dc126c365a51d6f34f6c54c66cb55))
|
|
17
|
+
- **ui:** Finish dialog footers and add the drift e2e (by @ChristopherVR) ([0e3ff44](https://github.com/ChristopherVR/pptx-viewer/commit/0e3ff4440d9f31d6c4bd87193ce0fc9fc270287e))
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- **shared:** Validate Home gallery picks and scope popup roles to open (by @ChristopherVR) ([94c8655](https://github.com/ChristopherVR/pptx-viewer/commit/94c86553d92c60de53ca00a3dcf698e69915444a))
|
|
22
|
+
- **shared:** Keep open Home popups and selects stable across state updates (by @ChristopherVR) ([85f2738](https://github.com/ChristopherVR/pptx-viewer/commit/85f2738aacafd3c23b25f89a462ef60484bdcadd))
|
|
23
|
+
|
|
24
|
+
### Refactor
|
|
25
|
+
|
|
26
|
+
- **react:** Use shared Home menus, colours, selects and galleries (by @ChristopherVR) ([531b8fb](https://github.com/ChristopherVR/pptx-viewer/commit/531b8fb6261eb300b6a1524df416b0746b59b559))
|
|
27
|
+
- **vanilla:** Adopt pptx-ui-dialog-footer in the remaining dialogs (by @ChristopherVR) ([a5c3c20](https://github.com/ChristopherVR/pptx-viewer/commit/a5c3c207fc342d3e93bd62137336923cfbb82531))
|
|
28
|
+
- **react:** Adopt pptx-ui-dialog-footer in the remaining dialogs (by @ChristopherVR) ([2145b47](https://github.com/ChristopherVR/pptx-viewer/commit/2145b47b2de1d145fcac2aa21812c273a3d5dae2))
|
|
29
|
+
- **vue:** Adopt pptx-ui-dialog-footer in the remaining dialogs (by @ChristopherVR) ([3e51932](https://github.com/ChristopherVR/pptx-viewer/commit/3e5193280c4da6121d6620f38c408a437dafaf9f))
|
|
30
|
+
|
|
31
|
+
### Testing
|
|
32
|
+
|
|
33
|
+
- **shared:** Allow the SmartArt Design tab to carry more than two galleries (by @ChristopherVR) ([566fa82](https://github.com/ChristopherVR/pptx-viewer/commit/566fa829748ccb53f43238a4e8b0f947f18ece28))
|
|
34
|
+
|
|
35
|
+
### Build & CI
|
|
36
|
+
|
|
37
|
+
- **core:** Depend on the unscoped ooxml-core package (by @ChristopherVR) ([5ae6159](https://github.com/ChristopherVR/pptx-viewer/commit/5ae615928d76d1328e46719c5b441afb5bfc2f7f))
|
|
38
|
+
|
|
39
|
+
## [4.18.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@4.18.0) - 2026-10-02
|
|
40
|
+
|
|
41
|
+
### Features
|
|
42
|
+
|
|
43
|
+
- **shared:** Add pptx-ui-status-bar element for the bottom bar (by @ChristopherVR) ([71020c5](https://github.com/ChristopherVR/pptx-viewer/commit/71020c578554bfe19c6454b2d3780af8c356e6de))
|
|
44
|
+
- **shared:** Add canonical control tokens for field, focus, checkbox (by @ChristopherVR) ([63be0fb](https://github.com/ChristopherVR/pptx-viewer/commit/63be0fb550e6a1a00d012624a4fc5a6fff737d4c))
|
|
45
|
+
- **ui:** Add inspector reset and clear actions to every binding (by @ChristopherVR) ([6618e04](https://github.com/ChristopherVR/pptx-viewer/commit/6618e040017faa22daf2763896a7febaef01e7e2))
|
|
46
|
+
- **ui:** Share the section, sorter and slide rail menus across bindings (by @ChristopherVR) ([e25816b](https://github.com/ChristopherVR/pptx-viewer/commit/e25816b24205d50a39f1179baa64ed11f14f079a))
|
|
47
|
+
- **shared:** Add Home slides, drawing and arrange shared strips (by @ChristopherVR) ([2ba2053](https://github.com/ChristopherVR/pptx-viewer/commit/2ba2053d1ad6093c8b323255d12a66f6bed78df8))
|
|
48
|
+
- **shared:** Add the pptx-ui-title-bar element (by @ChristopherVR) ([e8d07ad](https://github.com/ChristopherVR/pptx-viewer/commit/e8d07ad469b2da306642b1576ed80a3760d3d1fe))
|
|
49
|
+
- **shared:** Add read-only banner, paste options, toast, footer and mobile elements (by @ChristopherVR) ([1b59e08](https://github.com/ChristopherVR/pptx-viewer/commit/1b59e08dec576dd369950be8ef767b74317eb7b0))
|
|
50
|
+
- **shared:** Page keys, switch tokens and primitive ribbon pickers (by @ChristopherVR) ([9cdbe51](https://github.com/ChristopherVR/pptx-viewer/commit/9cdbe51a103f2189ac7ce511e4c4e518dbc5e159))
|
|
51
|
+
|
|
52
|
+
### Bug Fixes
|
|
53
|
+
|
|
54
|
+
- **shared:** Keep modal open when Escape closes a select popup (by @ChristopherVR) ([c17d694](https://github.com/ChristopherVR/pptx-viewer/commit/c17d694815539df72df7c16aa9146c8e8d847c1a))
|
|
55
|
+
- **shared:** Scope Home strip button styles to shared buttons (by @ChristopherVR) ([0abb22c](https://github.com/ChristopherVR/pptx-viewer/commit/0abb22c36326981cadd27aa59e77c72a8888a095))
|
|
56
|
+
- **svelte:** Re-translate shared Home strips on locale change (by @ChristopherVR) ([43ac2de](https://github.com/ChristopherVR/pptx-viewer/commit/43ac2de1ae0f44e4668b7aafca52baf0531f64e3))
|
|
57
|
+
|
|
58
|
+
### Refactor
|
|
59
|
+
|
|
60
|
+
- **react:** Use the shared status bar element (by @ChristopherVR) ([910f4f7](https://github.com/ChristopherVR/pptx-viewer/commit/910f4f75d35ecd2711b389dfa275879e4eb8bc11))
|
|
61
|
+
- **ui:** Share the notes toolbar across the five bindings (by @ChristopherVR) ([ec28b7e](https://github.com/ChristopherVR/pptx-viewer/commit/ec28b7ee08f59c4a87abbdad7f2113870ba4489c))
|
|
62
|
+
- **react:** Use shared Home slides, drawing and arrange strips (by @ChristopherVR) ([31dbe97](https://github.com/ChristopherVR/pptx-viewer/commit/31dbe976b62acf9ce6f31e8c46c62b7f84c28647))
|
|
63
|
+
- **ui:** Adopt the shared title bar in all five bindings (by @ChristopherVR) ([bb68dec](https://github.com/ChristopherVR/pptx-viewer/commit/bb68deca58d4198c2a8cd5d8e498f1014f385fcb))
|
|
64
|
+
- **ui:** Share the context menu rendering layer (by @ChristopherVR) ([7b63502](https://github.com/ChristopherVR/pptx-viewer/commit/7b63502bb5c16e08238e488582fea85118571845))
|
|
65
|
+
- **ui:** Share the mobile bottom bar and top toolbar (by @ChristopherVR) ([a84241b](https://github.com/ChristopherVR/pptx-viewer/commit/a84241b2849c49115f35f506cfabb1ab177efb5f))
|
|
66
|
+
- **ui:** Share the read-only banner, paste options, toasts and dialog footer (by @ChristopherVR) ([8d2233b](https://github.com/ChristopherVR/pptx-viewer/commit/8d2233b7c8788e4848ae44294a6174744357ab33))
|
|
67
|
+
- **ui:** Share the slide-show toolbar and presenter console strip (by @ChristopherVR) ([a937cf5](https://github.com/ChristopherVR/pptx-viewer/commit/a937cf58da8c8c6d80dd38bc36a0da64285f1431))
|
|
68
|
+
- **react:** Use the shared select and checkbox in dialogs and panels (by @ChristopherVR) ([bf7caa6](https://github.com/ChristopherVR/pptx-viewer/commit/bf7caa64efab3f412e6edb31551993ed12e165c6))
|
|
69
|
+
|
|
70
|
+
### Testing
|
|
71
|
+
|
|
72
|
+
- Guard SmartArt inline edit and contextual tabs on all bindings (by @ChristopherVR) ([c467945](https://github.com/ChristopherVR/pptx-viewer/commit/c46794514859ae2dfa56578bf735fd2f9fc5db07))
|
|
73
|
+
|
|
10
74
|
## [4.17.1](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@4.17.1) - 2026-10-02
|
|
11
75
|
|
|
12
76
|
### Bug Fixes
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
require('./chunk-
|
|
6
|
-
require('./chunk-
|
|
3
|
+
var chunk2NYN2CLG_js = require('./chunk-2NYN2CLG.js');
|
|
4
|
+
var chunkVLYVXFGF_js = require('./chunk-VLYVXFGF.js');
|
|
5
|
+
require('./chunk-5EO3Q2PH.js');
|
|
6
|
+
require('./chunk-LKL6DQ55.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 chunk2NYN2CLG_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 chunk2NYN2CLG_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 chunk2NYN2CLG_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 chunk2NYN2CLG_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?.(chunk2NYN2CLG_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 chunk2NYN2CLG_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 ?? chunk2NYN2CLG_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: chunkVLYVXFGF_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 = chunk2NYN2CLG_js.focusTargetChips(targets, slides);
|
|
396
|
+
const twoTables = chunk2NYN2CLG_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: chunkVLYVXFGF_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
|
+
chunk2NYN2CLG_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: chunkVLYVXFGF_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: chunkVLYVXFGF_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 = chunk2NYN2CLG_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
|
|
675
675
|
const Icon = ICONS[activity.icon] ?? lu.LuWrench;
|
|
676
|
-
const rawSummary =
|
|
676
|
+
const rawSummary = chunk2NYN2CLG_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: chunkVLYVXFGF_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: chunkVLYVXFGF_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: chunkVLYVXFGF_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
|
+
chunk2NYN2CLG_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 = chunk2NYN2CLG_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: chunkVLYVXFGF_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(chunk2NYN2CLG_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(() => chunk2NYN2CLG_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-CHWNGXWV.mjs';
|
|
2
|
+
import { cn } from './chunk-3576DPVG.mjs';
|
|
3
|
+
import './chunk-6VQD24IV.mjs';
|
|
4
|
+
import './chunk-Q4HRYUEP.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
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk5EO3Q2PH_js = require('./chunk-5EO3Q2PH.js');
|
|
4
4
|
require('./chunk-4VNS5WPM.js');
|
|
5
5
|
var react = require('react');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -20,7 +20,7 @@ function Model3DScene({
|
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
let disposed = false;
|
|
23
|
-
void
|
|
23
|
+
void chunk5EO3Q2PH_js.mountModel3D(container, modelUrl, { width, height, interactive, scene }).then((handle) => {
|
|
24
24
|
if (disposed) {
|
|
25
25
|
handle.dispose();
|
|
26
26
|
} else {
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk5EO3Q2PH_js = require('./chunk-5EO3Q2PH.js');
|
|
4
4
|
var chunk4VNS5WPM_js = require('./chunk-4VNS5WPM.js');
|
|
5
5
|
var mcp = require('pptx-viewer-mcp');
|
|
6
6
|
var mcpSchemas = require('pptx-viewer-mcp/schemas');
|
|
@@ -19079,7 +19079,7 @@ async function buildSlideMarkdown(slides, slideIndex2, meta3, options = {}) {
|
|
|
19079
19079
|
};
|
|
19080
19080
|
let markdown;
|
|
19081
19081
|
try {
|
|
19082
|
-
const converter = new
|
|
19082
|
+
const converter = new chunk5EO3Q2PH_js.PptxMarkdownConverter(
|
|
19083
19083
|
"",
|
|
19084
19084
|
{
|
|
19085
19085
|
sourceName: meta3.title ?? "deck.pptx",
|
|
@@ -19671,7 +19671,7 @@ var getTheme = (ctx) => {
|
|
|
19671
19671
|
name: theme?.name,
|
|
19672
19672
|
colorScheme: theme?.colorScheme,
|
|
19673
19673
|
fontScheme: theme?.fontScheme,
|
|
19674
|
-
availablePresets: Object.keys(
|
|
19674
|
+
availablePresets: Object.keys(chunk5EO3Q2PH_js.ThemePresets)
|
|
19675
19675
|
};
|
|
19676
19676
|
};
|
|
19677
19677
|
var readExecutors = {
|
|
@@ -20801,7 +20801,7 @@ function applyElementUpdate(el, u) {
|
|
|
20801
20801
|
applyShapeStyleUpdate(el, u);
|
|
20802
20802
|
}
|
|
20803
20803
|
function applyTextUpdate(el, u) {
|
|
20804
|
-
if (!
|
|
20804
|
+
if (!chunk5EO3Q2PH_js.hasTextProperties(el)) {
|
|
20805
20805
|
return;
|
|
20806
20806
|
}
|
|
20807
20807
|
const textEl = el;
|
|
@@ -20847,7 +20847,7 @@ function applyShapeStyleUpdate(el, u) {
|
|
|
20847
20847
|
if (u.fillColor === void 0 && u.strokeColor === void 0 && u.strokeWidth === void 0) {
|
|
20848
20848
|
return;
|
|
20849
20849
|
}
|
|
20850
|
-
if (!
|
|
20850
|
+
if (!chunk5EO3Q2PH_js.hasShapeProperties(el)) {
|
|
20851
20851
|
return;
|
|
20852
20852
|
}
|
|
20853
20853
|
const holder = el;
|
|
Binary file
|
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SHAPE_PRESET_DEFS, VIEWER_SHORTCUT_REFERENCE, STROKE_DASH_OPTIONS, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, getImageFitStyle, getImageFillCounterTransform, getComputedFillStyle, isImageLikeElement, getCropShapeClipPath, getImageTilingStyle, mediaPlaybackAttributes, getOnlineVideoEmbed, ONLINE_VIDEO_IFRAME_SANDBOX, ONLINE_VIDEO_IFRAME_ALLOW, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, buildTextBodyLayoutStyle, buildTextBody3DSceneStyle, buildParagraphs, followingText, colorWithOpacity, normalizeHexColor, hexToRgbUnit, build3DExtrusionData, getComputedEffectStyle, getComputedStrokeStyle, getAnimationColorBaseStyle, isStrokeOnlyPresetElement, resolveShapeGeometry, getConnectorPathGeometry, normalizeStrokeDashType, getSvgStrokeDasharray, buildSvgGradientDef, buildStrokeOutline, getPresetShapeVectorGeometry, isWedgeCalloutPresetShape, svgGradientFillRef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, canDrillDown, computeSelectionRect, DEFAULT_FONT_FAMILY, cellStyleToCss, rectToCells, isCellInRect, tableContainerCss, buildChartViewModel, resolveChartKind, chartPreserveAspectRatio, buildNotesPdfBytes, buildTiledSlidesPdfBytes, buildPreviewAnimation, measurePreviewGeometry, buildMotionPathPreview, mediaFallbackVisual, scheduleMediaTrimAndFade, registerCrossSlideAudio, shouldShowMediaFullscreenStopButton, withInlineListDecorationDefaults, segmentStyleToCss, resolveAutoFitFontScale, applyUnderlineVariant, nestedTextDecorationStyle, scaleFontSizeForAutoFit, resolveFontKerning, getSubstituteFontFamily, parsePanoseString, resolveScriptFontSet, hasDistinctScriptFonts, authoredLetterSpacingPx, pieceLetterSpacing, resolveMetricTrackingPx, hollowTextFillStyle, splitsUnderlineIntoWords, stripUnderlineDecoration, buildTabContext, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, apply3dEffects, customGeometryPathsToSvgSubpaths, buildSubpathPaints, computeColumnBoundaries, getTableCellBandStyle, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, xmlText, cellRunStyle, getChartStylePalette, computeChartLegendLayout, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, tableCellCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, ooxmlGradientAngleToCssDegrees, buildRectPathGradient, buildRunTabLines, chartPartToAttrs, splitWordsForUnderline, splitRunForMetrics, splitEastAsianBreaks, splitRunByScriptFont } from './chunk-
|
|
2
|
-
import { translationsEn } from './chunk-
|
|
1
|
+
import { SHAPE_PRESET_DEFS, VIEWER_SHORTCUT_REFERENCE, STROKE_DASH_OPTIONS, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, getImageFitStyle, getImageFillCounterTransform, getComputedFillStyle, isImageLikeElement, getCropShapeClipPath, getImageTilingStyle, mediaPlaybackAttributes, getOnlineVideoEmbed, ONLINE_VIDEO_IFRAME_SANDBOX, ONLINE_VIDEO_IFRAME_ALLOW, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, buildTextBodyLayoutStyle, buildTextBody3DSceneStyle, buildParagraphs, followingText, colorWithOpacity, normalizeHexColor, hexToRgbUnit, build3DExtrusionData, getComputedEffectStyle, getComputedStrokeStyle, getAnimationColorBaseStyle, isStrokeOnlyPresetElement, resolveShapeGeometry, getConnectorPathGeometry, normalizeStrokeDashType, getSvgStrokeDasharray, buildSvgGradientDef, buildStrokeOutline, getPresetShapeVectorGeometry, isWedgeCalloutPresetShape, svgGradientFillRef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, canDrillDown, computeSelectionRect, DEFAULT_FONT_FAMILY, cellStyleToCss, rectToCells, isCellInRect, tableContainerCss, buildChartViewModel, resolveChartKind, chartPreserveAspectRatio, buildNotesPdfBytes, buildTiledSlidesPdfBytes, buildPreviewAnimation, measurePreviewGeometry, buildMotionPathPreview, mediaFallbackVisual, scheduleMediaTrimAndFade, registerCrossSlideAudio, shouldShowMediaFullscreenStopButton, withInlineListDecorationDefaults, segmentStyleToCss, resolveAutoFitFontScale, applyUnderlineVariant, nestedTextDecorationStyle, scaleFontSizeForAutoFit, resolveFontKerning, getSubstituteFontFamily, parsePanoseString, resolveScriptFontSet, hasDistinctScriptFonts, authoredLetterSpacingPx, pieceLetterSpacing, resolveMetricTrackingPx, hollowTextFillStyle, splitsUnderlineIntoWords, stripUnderlineDecoration, buildTabContext, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, apply3dEffects, customGeometryPathsToSvgSubpaths, buildSubpathPaints, computeColumnBoundaries, getTableCellBandStyle, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, xmlText, cellRunStyle, getChartStylePalette, computeChartLegendLayout, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, tableCellCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, ooxmlGradientAngleToCssDegrees, buildRectPathGradient, buildRunTabLines, chartPartToAttrs, splitWordsForUnderline, splitRunForMetrics, splitEastAsianBreaks, splitRunByScriptFont } from './chunk-6VQD24IV.mjs';
|
|
2
|
+
import { translationsEn } from './chunk-Q4HRYUEP.mjs';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import React8, { useRef, useState, useEffect, useCallback, useMemo, useLayoutEffect } from 'react';
|
|
Binary file
|
|
Binary file
|