pptx-react-viewer 4.12.0 → 4.13.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 +16 -0
- package/dist/{AiChatPanel-ZMVKLTNX.mjs → AiChatPanel-AQDB2BLO.mjs} +4 -4
- package/dist/AiChatPanel-AQDB2BLO.mjs.br +0 -0
- package/dist/AiChatPanel-AQDB2BLO.mjs.gz +0 -0
- package/dist/{AiChatPanel-FV22KLWM.js → AiChatPanel-VXQUQNZ6.js} +28 -28
- package/dist/AiChatPanel-VXQUQNZ6.js.br +0 -0
- package/dist/AiChatPanel-VXQUQNZ6.js.gz +0 -0
- package/dist/{Model3DScene-DWLMI554.js → Model3DScene-I6OVMXEE.js} +10 -4
- package/dist/Model3DScene-I6OVMXEE.js.br +0 -0
- package/dist/Model3DScene-I6OVMXEE.js.gz +0 -0
- package/dist/{Model3DScene-JGW2QDN3.mjs → Model3DScene-UHHKYZSK.mjs} +10 -4
- package/dist/Model3DScene-UHHKYZSK.mjs.br +0 -0
- package/dist/Model3DScene-UHHKYZSK.mjs.gz +0 -0
- package/dist/{chunk-HDH4KFDK.mjs → chunk-55OLQ7HS.mjs} +28 -0
- package/dist/chunk-55OLQ7HS.mjs.br +0 -0
- package/dist/chunk-55OLQ7HS.mjs.gz +0 -0
- package/dist/{chunk-I2EV62KC.js → chunk-57RBEPPQ.js} +818 -817
- package/dist/chunk-57RBEPPQ.js.br +0 -0
- package/dist/chunk-57RBEPPQ.js.gz +0 -0
- package/dist/{chunk-YXRSLJEB.mjs → chunk-5DQNWKOF.mjs} +2 -2
- package/dist/chunk-5DQNWKOF.mjs.br +0 -0
- package/dist/chunk-5DQNWKOF.mjs.gz +0 -0
- package/dist/{chunk-73CSPIMU.js → chunk-5YW6N5KJ.js} +197 -197
- package/dist/chunk-5YW6N5KJ.js.br +0 -0
- package/dist/chunk-5YW6N5KJ.js.gz +0 -0
- package/dist/{chunk-NAL3FTKM.mjs → chunk-C5ZJGQ2F.mjs} +33 -12
- package/dist/chunk-C5ZJGQ2F.mjs.br +0 -0
- package/dist/chunk-C5ZJGQ2F.mjs.gz +0 -0
- package/dist/{chunk-KPKO2ELT.js → chunk-HIYK7HPX.js} +28 -0
- package/dist/chunk-HIYK7HPX.js.br +0 -0
- package/dist/chunk-HIYK7HPX.js.gz +0 -0
- package/dist/{chunk-HOIC3XAF.mjs → chunk-HJBTQ234.mjs} +6 -5
- package/dist/chunk-HJBTQ234.mjs.br +0 -0
- package/dist/chunk-HJBTQ234.mjs.gz +0 -0
- package/dist/{chunk-36223DLG.mjs → chunk-JUUI5DHB.mjs} +3346 -2019
- package/dist/chunk-JUUI5DHB.mjs.br +0 -0
- package/dist/chunk-JUUI5DHB.mjs.gz +0 -0
- package/dist/{chunk-XDTZVM5K.js → chunk-KA24ZRTJ.js} +1207 -1186
- package/dist/chunk-KA24ZRTJ.js.br +0 -0
- package/dist/chunk-KA24ZRTJ.js.gz +0 -0
- package/dist/{chunk-RRT4LIRN.js → chunk-MXH7RMTF.js} +5 -5
- package/dist/chunk-MXH7RMTF.js.br +0 -0
- package/dist/chunk-MXH7RMTF.js.gz +0 -0
- package/dist/{chunk-R7FGWOEG.mjs → chunk-SLMDLVFV.mjs} +1 -1
- package/dist/chunk-SLMDLVFV.mjs.br +0 -0
- package/dist/chunk-SLMDLVFV.mjs.gz +0 -0
- package/dist/{chunk-QFTHDPEA.js → chunk-UOS5HJLG.js} +3346 -2018
- package/dist/chunk-UOS5HJLG.js.br +0 -0
- package/dist/chunk-UOS5HJLG.js.gz +0 -0
- package/dist/i18n/de.cjs +45 -15
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +45 -15
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +45 -15
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +45 -15
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +45 -15
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +45 -15
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +46 -16
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +46 -16
- 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 +71 -0
- 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 +71 -0
- 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/viewer/index.d.ts +71 -0
- 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/package.json +1 -1
- package/dist/AiChatPanel-FV22KLWM.js.br +0 -0
- package/dist/AiChatPanel-FV22KLWM.js.gz +0 -0
- package/dist/AiChatPanel-ZMVKLTNX.mjs.br +0 -0
- package/dist/AiChatPanel-ZMVKLTNX.mjs.gz +0 -0
- package/dist/Model3DScene-DWLMI554.js.br +0 -0
- package/dist/Model3DScene-DWLMI554.js.gz +0 -0
- package/dist/Model3DScene-JGW2QDN3.mjs.br +0 -0
- package/dist/Model3DScene-JGW2QDN3.mjs.gz +0 -0
- package/dist/chunk-36223DLG.mjs.br +0 -0
- package/dist/chunk-36223DLG.mjs.gz +0 -0
- package/dist/chunk-73CSPIMU.js.br +0 -0
- package/dist/chunk-73CSPIMU.js.gz +0 -0
- package/dist/chunk-HDH4KFDK.mjs.br +0 -0
- package/dist/chunk-HDH4KFDK.mjs.gz +0 -0
- package/dist/chunk-HOIC3XAF.mjs.br +0 -0
- package/dist/chunk-HOIC3XAF.mjs.gz +0 -0
- package/dist/chunk-I2EV62KC.js.br +0 -0
- package/dist/chunk-I2EV62KC.js.gz +0 -0
- package/dist/chunk-KPKO2ELT.js.br +0 -0
- package/dist/chunk-KPKO2ELT.js.gz +0 -0
- package/dist/chunk-NAL3FTKM.mjs.br +0 -0
- package/dist/chunk-NAL3FTKM.mjs.gz +0 -0
- package/dist/chunk-QFTHDPEA.js.br +0 -0
- package/dist/chunk-QFTHDPEA.js.gz +0 -0
- package/dist/chunk-R7FGWOEG.mjs.br +0 -0
- package/dist/chunk-R7FGWOEG.mjs.gz +0 -0
- package/dist/chunk-RRT4LIRN.js.br +0 -0
- package/dist/chunk-RRT4LIRN.js.gz +0 -0
- package/dist/chunk-XDTZVM5K.js.br +0 -0
- package/dist/chunk-XDTZVM5K.js.gz +0 -0
- package/dist/chunk-YXRSLJEB.mjs.br +0 -0
- package/dist/chunk-YXRSLJEB.mjs.gz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,22 @@ 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.12.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@4.12.0) - 2026-09-26
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **shared:** Smartart 3d edit-layer helpers (by @claude) ([4780b3d](https://github.com/ChristopherVR/pptx-viewer/commit/4780b3d437bf76cdd634cedde26e7bd1ebad1032))
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
- **react:** Route the ai log checkbox through WebCheckbox (by @claude) ([97e622f](https://github.com/ChristopherVR/pptx-viewer/commit/97e622f74ba919cb9c599b7072e384142380561b))
|
|
19
|
+
- **packages:** Verify isolated binding imports and repair runtime dependencies (by @ChristopherVR) ([6ec8bef](https://github.com/ChristopherVR/pptx-viewer/commit/6ec8befd524daac570110d2c41f93db6ca45199f))
|
|
20
|
+
|
|
21
|
+
### Refactor
|
|
22
|
+
|
|
23
|
+
- **core:** Share legacy Office codecs through ole2 (by @ChristopherVR) ([375d9a7](https://github.com/ChristopherVR/pptx-viewer/commit/375d9a7d4dac661c18083dfd9e88ebb345ce724c))
|
|
24
|
+
- **core:** Consume shared PPT writer and legacy Excel codecs (by @ChristopherVR) ([439460f](https://github.com/ChristopherVR/pptx-viewer/commit/439460f52a7f851daec2a7850df6eee9bfe608b6))
|
|
25
|
+
|
|
10
26
|
## [4.11.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@4.11.0) - 2026-09-26
|
|
11
27
|
|
|
12
28
|
### Features
|
|
@@ -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-SLMDLVFV.mjs';
|
|
2
|
+
import { cn } from './chunk-5DQNWKOF.mjs';
|
|
3
|
+
import './chunk-JUUI5DHB.mjs';
|
|
4
|
+
import './chunk-55OLQ7HS.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,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
require('./chunk-
|
|
6
|
-
require('./chunk-
|
|
3
|
+
var chunkMXH7RMTF_js = require('./chunk-MXH7RMTF.js');
|
|
4
|
+
var chunk5YW6N5KJ_js = require('./chunk-5YW6N5KJ.js');
|
|
5
|
+
require('./chunk-UOS5HJLG.js');
|
|
6
|
+
require('./chunk-HIYK7HPX.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 chunkMXH7RMTF_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 chunkMXH7RMTF_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 chunkMXH7RMTF_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 chunkMXH7RMTF_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?.(chunkMXH7RMTF_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 chunkMXH7RMTF_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 ?? chunkMXH7RMTF_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: chunk5YW6N5KJ_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 = chunkMXH7RMTF_js.focusTargetChips(targets, slides);
|
|
396
|
+
const twoTables = chunkMXH7RMTF_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: chunk5YW6N5KJ_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
|
+
chunkMXH7RMTF_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: chunk5YW6N5KJ_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: chunk5YW6N5KJ_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 = chunkMXH7RMTF_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
|
|
675
675
|
const Icon = ICONS[activity.icon] ?? lu.LuWrench;
|
|
676
|
-
const rawSummary =
|
|
676
|
+
const rawSummary = chunkMXH7RMTF_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: chunk5YW6N5KJ_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: chunk5YW6N5KJ_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: chunk5YW6N5KJ_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
|
+
chunkMXH7RMTF_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 = chunkMXH7RMTF_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: chunk5YW6N5KJ_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(chunkMXH7RMTF_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(() => chunkMXH7RMTF_js.deckIdFromBridge(bridge), [bridge]);
|
|
997
997
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
998
998
|
"div",
|
|
999
999
|
{
|
|
Binary file
|
|
Binary file
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkUOS5HJLG_js = require('./chunk-UOS5HJLG.js');
|
|
4
4
|
require('./chunk-4VNS5WPM.js');
|
|
5
5
|
var react = require('react');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
|
|
8
|
-
function Model3DScene({
|
|
8
|
+
function Model3DScene({
|
|
9
|
+
modelUrl,
|
|
10
|
+
interactive,
|
|
11
|
+
width,
|
|
12
|
+
height,
|
|
13
|
+
scene
|
|
14
|
+
}) {
|
|
9
15
|
const containerRef = react.useRef(null);
|
|
10
16
|
const handleRef = react.useRef(null);
|
|
11
17
|
react.useEffect(() => {
|
|
@@ -14,7 +20,7 @@ function Model3DScene({ modelUrl, interactive, width, height }) {
|
|
|
14
20
|
return;
|
|
15
21
|
}
|
|
16
22
|
let disposed = false;
|
|
17
|
-
void
|
|
23
|
+
void chunkUOS5HJLG_js.mountModel3D(container, modelUrl, { width, height, interactive, scene }).then((handle) => {
|
|
18
24
|
if (disposed) {
|
|
19
25
|
handle.dispose();
|
|
20
26
|
} else {
|
|
@@ -27,7 +33,7 @@ function Model3DScene({ modelUrl, interactive, width, height }) {
|
|
|
27
33
|
handleRef.current?.dispose();
|
|
28
34
|
handleRef.current = null;
|
|
29
35
|
};
|
|
30
|
-
}, [modelUrl]);
|
|
36
|
+
}, [modelUrl, scene]);
|
|
31
37
|
react.useEffect(() => {
|
|
32
38
|
handleRef.current?.setInteractive(interactive);
|
|
33
39
|
}, [interactive]);
|
|
Binary file
|
|
Binary file
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import { mountModel3D } from './chunk-
|
|
1
|
+
import { mountModel3D } from './chunk-JUUI5DHB.mjs';
|
|
2
2
|
import './chunk-XGB3TDIC.mjs';
|
|
3
3
|
import { useRef, useEffect } from 'react';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
6
|
-
function Model3DScene({
|
|
6
|
+
function Model3DScene({
|
|
7
|
+
modelUrl,
|
|
8
|
+
interactive,
|
|
9
|
+
width,
|
|
10
|
+
height,
|
|
11
|
+
scene
|
|
12
|
+
}) {
|
|
7
13
|
const containerRef = useRef(null);
|
|
8
14
|
const handleRef = useRef(null);
|
|
9
15
|
useEffect(() => {
|
|
@@ -12,7 +18,7 @@ function Model3DScene({ modelUrl, interactive, width, height }) {
|
|
|
12
18
|
return;
|
|
13
19
|
}
|
|
14
20
|
let disposed = false;
|
|
15
|
-
void mountModel3D(container, modelUrl, { width, height, interactive }).then((handle) => {
|
|
21
|
+
void mountModel3D(container, modelUrl, { width, height, interactive, scene }).then((handle) => {
|
|
16
22
|
if (disposed) {
|
|
17
23
|
handle.dispose();
|
|
18
24
|
} else {
|
|
@@ -25,7 +31,7 @@ function Model3DScene({ modelUrl, interactive, width, height }) {
|
|
|
25
31
|
handleRef.current?.dispose();
|
|
26
32
|
handleRef.current = null;
|
|
27
33
|
};
|
|
28
|
-
}, [modelUrl]);
|
|
34
|
+
}, [modelUrl, scene]);
|
|
29
35
|
useEffect(() => {
|
|
30
36
|
handleRef.current?.setInteractive(interactive);
|
|
31
37
|
}, [interactive]);
|
|
Binary file
|
|
Binary file
|
|
@@ -271,6 +271,33 @@ var galleryTranslationsEn = {
|
|
|
271
271
|
"pptx.gallery.shapeStyles.solidFill": "Solid Fill - {{color}}",
|
|
272
272
|
"pptx.gallery.shapeStyles.gradientFill": "Gradient Fill - {{color}}"
|
|
273
273
|
};
|
|
274
|
+
var galleryAdjustTranslationsEn = {
|
|
275
|
+
"pptx.ribbon.groupAdjust": "Adjust",
|
|
276
|
+
"pptx.gallery.pictureCorrections.title": "Corrections",
|
|
277
|
+
"pptx.gallery.pictureCorrections.sharpenSoften": "Sharpen/Soften",
|
|
278
|
+
"pptx.gallery.pictureCorrections.brightnessContrastTitle": "Brightness/Contrast",
|
|
279
|
+
"pptx.gallery.pictureCorrections.soften": "Soften: {{amount}}%",
|
|
280
|
+
"pptx.gallery.pictureCorrections.sharpen": "Sharpen: {{amount}}%",
|
|
281
|
+
"pptx.gallery.pictureCorrections.sharpenNormal": "Sharpen: 0% (Normal)",
|
|
282
|
+
"pptx.gallery.pictureCorrections.brightnessContrast": "Brightness: {{brightness}}% Contrast: {{contrast}}%",
|
|
283
|
+
"pptx.gallery.pictureCorrections.brightnessContrastNormal": "Brightness: 0% Contrast: 0% (Normal)",
|
|
284
|
+
"pptx.gallery.pictureColor.title": "Color",
|
|
285
|
+
"pptx.gallery.pictureColor.saturationTitle": "Color Saturation",
|
|
286
|
+
"pptx.gallery.pictureColor.toneTitle": "Color Tone",
|
|
287
|
+
"pptx.gallery.pictureColor.recolorTitle": "Recolor",
|
|
288
|
+
"pptx.gallery.pictureColor.saturation": "Saturation: {{amount}}%",
|
|
289
|
+
"pptx.gallery.pictureColor.saturationNormal": "Saturation: 100% (Normal)",
|
|
290
|
+
"pptx.gallery.pictureColor.tone": "Temperature: {{kelvin}} K",
|
|
291
|
+
"pptx.gallery.pictureColor.toneNormal": "Temperature: 6500 K (Normal)",
|
|
292
|
+
"pptx.gallery.pictureColor.recolorNone": "No Recolor",
|
|
293
|
+
"pptx.gallery.pictureColor.recolorGrayscale": "Grayscale",
|
|
294
|
+
"pptx.gallery.pictureColor.recolorSepia": "Sepia",
|
|
295
|
+
"pptx.gallery.pictureColor.recolorWashout": "Washout",
|
|
296
|
+
"pptx.gallery.pictureColor.recolorBlackWhite": "Black and White: {{amount}}%",
|
|
297
|
+
"pptx.gallery.pictureColor.recolorAccentDark": "Accent {{n}}, Dark",
|
|
298
|
+
"pptx.gallery.pictureColor.recolorAccentLight": "Accent {{n}}, Light",
|
|
299
|
+
"pptx.gallery.pictureArtisticEffects.title": "Artistic Effects"
|
|
300
|
+
};
|
|
274
301
|
var galleryDataTranslationsEn = {
|
|
275
302
|
"pptx.gallery.tableStyles.section.bestMatch": "Best Match for Document",
|
|
276
303
|
"pptx.gallery.tableStyles.section.light": "Light",
|
|
@@ -492,6 +519,7 @@ var translationsEn = {
|
|
|
492
519
|
...galleryEffectsTranslationsEn,
|
|
493
520
|
...galleryDataTranslationsEn,
|
|
494
521
|
...galleryPictureTranslationsEn,
|
|
522
|
+
...galleryAdjustTranslationsEn,
|
|
495
523
|
// Status bar
|
|
496
524
|
"pptx.statusBar.allSaved": "All saved",
|
|
497
525
|
"pptx.statusBar.unsavedChanges": "Unsaved changes",
|
|
Binary file
|
|
Binary file
|