pptx-react-viewer 3.2.0 → 3.4.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 +53 -0
- package/dist/{AiChatPanel-TKBVSYD2.js → AiChatPanel-3Q4STA5E.js} +29 -28
- package/dist/AiChatPanel-3Q4STA5E.js.br +0 -0
- package/dist/AiChatPanel-3Q4STA5E.js.gz +0 -0
- package/dist/{AiChatPanel-C3E7NLX3.mjs → AiChatPanel-NQZBZIRM.mjs} +9 -8
- package/dist/AiChatPanel-NQZBZIRM.mjs.br +0 -0
- package/dist/AiChatPanel-NQZBZIRM.mjs.gz +0 -0
- package/dist/{Area3DChartScene-7YCFWEGX.mjs → Area3DChartScene-7PARQDOZ.mjs} +1 -1
- package/dist/Area3DChartScene-7PARQDOZ.mjs.br +3 -0
- package/dist/Area3DChartScene-7PARQDOZ.mjs.gz +0 -0
- package/dist/{Area3DChartScene-3A3CXKN3.js → Area3DChartScene-THLG74CM.js} +2 -2
- package/dist/Area3DChartScene-THLG74CM.js.br +0 -0
- package/dist/Area3DChartScene-THLG74CM.js.gz +0 -0
- package/dist/{Bar3DChartScene-BDUENAWJ.js → Bar3DChartScene-OLZ2V56I.js} +2 -2
- package/dist/Bar3DChartScene-OLZ2V56I.js.br +2 -0
- package/dist/Bar3DChartScene-OLZ2V56I.js.gz +0 -0
- package/dist/{Bar3DChartScene-7CNSJ35X.mjs → Bar3DChartScene-QUU6RUXM.mjs} +1 -1
- package/dist/Bar3DChartScene-QUU6RUXM.mjs.br +0 -0
- package/dist/Bar3DChartScene-QUU6RUXM.mjs.gz +0 -0
- package/dist/{Line3DChartScene-R352CZ5U.js → Line3DChartScene-2VZS52IB.js} +2 -2
- package/dist/Line3DChartScene-2VZS52IB.js.br +0 -0
- package/dist/Line3DChartScene-2VZS52IB.js.gz +0 -0
- package/dist/{Line3DChartScene-SMTHK6MD.mjs → Line3DChartScene-D77ORA4K.mjs} +1 -1
- package/dist/Line3DChartScene-D77ORA4K.mjs.br +3 -0
- package/dist/Line3DChartScene-D77ORA4K.mjs.gz +0 -0
- package/dist/{Model3DScene-Y4SGFQYW.js → Model3DScene-3WCALTXO.js} +2 -2
- package/dist/Model3DScene-3WCALTXO.js.br +0 -0
- package/dist/Model3DScene-3WCALTXO.js.gz +0 -0
- package/dist/{Model3DScene-AUVJXXPV.mjs → Model3DScene-ZEGWNILH.mjs} +1 -1
- package/dist/Model3DScene-ZEGWNILH.mjs.br +0 -0
- package/dist/Model3DScene-ZEGWNILH.mjs.gz +0 -0
- package/dist/{PieChart3DScene-TK2VT4RS.js → PieChart3DScene-7C3ACGKN.js} +2 -2
- package/dist/PieChart3DScene-7C3ACGKN.js.br +0 -0
- package/dist/PieChart3DScene-7C3ACGKN.js.gz +0 -0
- package/dist/{PieChart3DScene-UD7GRH55.mjs → PieChart3DScene-DGD4PZVV.mjs} +1 -1
- package/dist/PieChart3DScene-DGD4PZVV.mjs.br +0 -0
- package/dist/PieChart3DScene-DGD4PZVV.mjs.gz +0 -0
- package/dist/PowerPointViewer-Cl6jBPNw.d.ts.map +1 -1
- package/dist/{SurfaceChart3DScene-TXY6UZSW.mjs → SurfaceChart3DScene-QGH3OLJV.mjs} +1 -1
- package/dist/SurfaceChart3DScene-QGH3OLJV.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-QGH3OLJV.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-ERFXZW2O.js → SurfaceChart3DScene-SJPQGGGE.js} +2 -2
- package/dist/SurfaceChart3DScene-SJPQGGGE.js.br +0 -0
- package/dist/SurfaceChart3DScene-SJPQGGGE.js.gz +0 -0
- package/dist/{chunk-RRAL4Y7V.js → chunk-7E6SM42A.js} +2604 -2024
- package/dist/chunk-7E6SM42A.js.br +0 -0
- package/dist/chunk-7E6SM42A.js.gz +0 -0
- package/dist/{chunk-G7UBIKAG.mjs → chunk-B7WAGQW4.mjs} +5383 -873
- package/dist/chunk-B7WAGQW4.mjs.br +0 -0
- package/dist/chunk-B7WAGQW4.mjs.gz +0 -0
- package/dist/{chunk-RX6FE24O.mjs → chunk-C4WTQIC6.mjs} +302 -61
- package/dist/chunk-C4WTQIC6.mjs.br +0 -0
- package/dist/chunk-C4WTQIC6.mjs.gz +0 -0
- package/dist/{chunk-Q52HT4EZ.js → chunk-KY6JQJXK.js} +307 -63
- package/dist/chunk-KY6JQJXK.js.br +0 -0
- package/dist/chunk-KY6JQJXK.js.gz +0 -0
- package/dist/{chunk-PPNXPEEZ.mjs → chunk-L5MRKDRM.mjs} +1514 -934
- package/dist/chunk-L5MRKDRM.mjs.br +0 -0
- package/dist/chunk-L5MRKDRM.mjs.gz +0 -0
- package/dist/{chunk-UHR7EYFM.mjs → chunk-MSUUPLQ7.mjs} +718 -435
- package/dist/chunk-MSUUPLQ7.mjs.br +0 -0
- package/dist/chunk-MSUUPLQ7.mjs.gz +0 -0
- package/dist/{chunk-FJDZ7AEE.js → chunk-PCW2KT7Z.js} +5446 -879
- package/dist/chunk-PCW2KT7Z.js.br +0 -0
- package/dist/chunk-PCW2KT7Z.js.gz +0 -0
- package/dist/{chunk-FMEEIS6L.mjs → chunk-SFMATKNJ.mjs} +13 -114
- package/dist/chunk-SFMATKNJ.mjs.br +0 -0
- package/dist/chunk-SFMATKNJ.mjs.gz +0 -0
- package/dist/{chunk-ARQGUUYU.js → chunk-TJNG5VEK.js} +1114 -826
- package/dist/chunk-TJNG5VEK.js.br +0 -0
- package/dist/chunk-TJNG5VEK.js.gz +0 -0
- package/dist/{chunk-ALO4ZOHQ.js → chunk-UNIJUD5C.js} +45 -1
- package/dist/chunk-UNIJUD5C.js.br +0 -0
- package/dist/chunk-UNIJUD5C.js.gz +0 -0
- package/dist/{chunk-B6UIVRFA.js → chunk-XBTHWXNO.js} +177 -279
- package/dist/chunk-XBTHWXNO.js.br +0 -0
- package/dist/chunk-XBTHWXNO.js.gz +0 -0
- package/dist/{chunk-RHSA5BW5.mjs → chunk-XWUMM2TX.mjs} +45 -1
- package/dist/chunk-XWUMM2TX.mjs.br +0 -0
- package/dist/chunk-XWUMM2TX.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 +7 -0
- package/dist/index.js +47 -47
- 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 +176 -5
- package/dist/internals.d.ts.map +1 -1
- package/dist/internals.js +79 -79
- 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/{useViewerBuildingBlocks-X1L8BjsQ.d.ts → useViewerBuildingBlocks-f6oNGKMX.d.ts} +8 -1
- package/dist/useViewerBuildingBlocks-f6oNGKMX.d.ts.map +1 -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-C3E7NLX3.mjs.br +0 -0
- package/dist/AiChatPanel-C3E7NLX3.mjs.gz +0 -0
- package/dist/AiChatPanel-TKBVSYD2.js.br +0 -0
- package/dist/AiChatPanel-TKBVSYD2.js.gz +0 -0
- package/dist/Area3DChartScene-3A3CXKN3.js.br +0 -0
- package/dist/Area3DChartScene-3A3CXKN3.js.gz +0 -0
- package/dist/Area3DChartScene-7YCFWEGX.mjs.br +0 -3
- package/dist/Area3DChartScene-7YCFWEGX.mjs.gz +0 -0
- package/dist/Bar3DChartScene-7CNSJ35X.mjs.br +0 -0
- package/dist/Bar3DChartScene-7CNSJ35X.mjs.gz +0 -0
- package/dist/Bar3DChartScene-BDUENAWJ.js.br +0 -0
- package/dist/Bar3DChartScene-BDUENAWJ.js.gz +0 -0
- package/dist/Line3DChartScene-R352CZ5U.js.br +0 -0
- package/dist/Line3DChartScene-R352CZ5U.js.gz +0 -0
- package/dist/Line3DChartScene-SMTHK6MD.mjs.br +0 -3
- package/dist/Line3DChartScene-SMTHK6MD.mjs.gz +0 -0
- package/dist/Model3DScene-AUVJXXPV.mjs.br +0 -0
- package/dist/Model3DScene-AUVJXXPV.mjs.gz +0 -0
- package/dist/Model3DScene-Y4SGFQYW.js.br +0 -0
- package/dist/Model3DScene-Y4SGFQYW.js.gz +0 -0
- package/dist/PieChart3DScene-TK2VT4RS.js.br +0 -0
- package/dist/PieChart3DScene-TK2VT4RS.js.gz +0 -0
- package/dist/PieChart3DScene-UD7GRH55.mjs.br +0 -0
- package/dist/PieChart3DScene-UD7GRH55.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-ERFXZW2O.js.br +0 -0
- package/dist/SurfaceChart3DScene-ERFXZW2O.js.gz +0 -0
- package/dist/SurfaceChart3DScene-TXY6UZSW.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-TXY6UZSW.mjs.gz +0 -0
- package/dist/chunk-ALO4ZOHQ.js.br +0 -0
- package/dist/chunk-ALO4ZOHQ.js.gz +0 -0
- package/dist/chunk-ARQGUUYU.js.br +0 -0
- package/dist/chunk-ARQGUUYU.js.gz +0 -0
- package/dist/chunk-B6UIVRFA.js.br +0 -0
- package/dist/chunk-B6UIVRFA.js.gz +0 -0
- package/dist/chunk-FJDZ7AEE.js.br +0 -0
- package/dist/chunk-FJDZ7AEE.js.gz +0 -0
- package/dist/chunk-FMEEIS6L.mjs.br +0 -0
- package/dist/chunk-FMEEIS6L.mjs.gz +0 -0
- package/dist/chunk-G7UBIKAG.mjs.br +0 -0
- package/dist/chunk-G7UBIKAG.mjs.gz +0 -0
- package/dist/chunk-PPNXPEEZ.mjs.br +0 -0
- package/dist/chunk-PPNXPEEZ.mjs.gz +0 -0
- package/dist/chunk-Q52HT4EZ.js.br +0 -0
- package/dist/chunk-Q52HT4EZ.js.gz +0 -0
- package/dist/chunk-RHSA5BW5.mjs.br +0 -0
- package/dist/chunk-RHSA5BW5.mjs.gz +0 -0
- package/dist/chunk-RRAL4Y7V.js.br +0 -0
- package/dist/chunk-RRAL4Y7V.js.gz +0 -0
- package/dist/chunk-RX6FE24O.mjs.br +0 -0
- package/dist/chunk-RX6FE24O.mjs.gz +0 -0
- package/dist/chunk-UHR7EYFM.mjs.br +0 -0
- package/dist/chunk-UHR7EYFM.mjs.gz +0 -0
- package/dist/useViewerBuildingBlocks-X1L8BjsQ.d.ts.map +0 -1
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ThemePresets, PptxMarkdownConverter } from './chunk-
|
|
1
|
+
import { ThemePresets, PptxMarkdownConverter, hasTextProperties, hasShapeProperties } from './chunk-B7WAGQW4.mjs';
|
|
2
2
|
import { __export } from './chunk-XGB3TDIC.mjs';
|
|
3
3
|
import * as mcp from 'pptx-viewer-mcp';
|
|
4
4
|
import * as mcpSchemas from 'pptx-viewer-mcp/schemas';
|
|
@@ -16235,12 +16235,312 @@ function toRenderableParts(message) {
|
|
|
16235
16235
|
}
|
|
16236
16236
|
return out;
|
|
16237
16237
|
}
|
|
16238
|
+
function isoOf(ms) {
|
|
16239
|
+
const n = Number.isFinite(ms) ? ms : 0;
|
|
16240
|
+
return new Date(n).toISOString();
|
|
16241
|
+
}
|
|
16242
|
+
function toLogChat(chat, detailed) {
|
|
16243
|
+
const messages = chat.messages.map((message) => {
|
|
16244
|
+
const parts = toRenderableParts(message);
|
|
16245
|
+
const textRuns = [];
|
|
16246
|
+
const toolCalls = [];
|
|
16247
|
+
for (const part of parts) {
|
|
16248
|
+
if (part.kind === "text") {
|
|
16249
|
+
textRuns.push(part.text);
|
|
16250
|
+
continue;
|
|
16251
|
+
}
|
|
16252
|
+
toolCalls.push({
|
|
16253
|
+
toolName: part.toolName,
|
|
16254
|
+
toolCallId: part.toolCallId,
|
|
16255
|
+
state: part.state,
|
|
16256
|
+
input: detailed ? part.input : void 0,
|
|
16257
|
+
output: detailed ? part.output : void 0,
|
|
16258
|
+
errorText: part.errorText
|
|
16259
|
+
});
|
|
16260
|
+
}
|
|
16261
|
+
return {
|
|
16262
|
+
role: message.role,
|
|
16263
|
+
text: textRuns.join("\n\n"),
|
|
16264
|
+
toolCalls
|
|
16265
|
+
};
|
|
16266
|
+
});
|
|
16267
|
+
return {
|
|
16268
|
+
id: chat.id,
|
|
16269
|
+
title: chat.title,
|
|
16270
|
+
deckId: chat.deckId,
|
|
16271
|
+
createdAt: chat.createdAt,
|
|
16272
|
+
updatedAt: chat.updatedAt,
|
|
16273
|
+
createdAtIso: isoOf(chat.createdAt),
|
|
16274
|
+
updatedAtIso: isoOf(chat.updatedAt),
|
|
16275
|
+
messageCount: chat.messages.length,
|
|
16276
|
+
messages
|
|
16277
|
+
};
|
|
16278
|
+
}
|
|
16279
|
+
function buildChatLogExport(chats, options) {
|
|
16280
|
+
const detailed = options?.detailed ?? true;
|
|
16281
|
+
const now = options?.now ?? Date.now();
|
|
16282
|
+
return {
|
|
16283
|
+
format: "pptx-ai-chat-log",
|
|
16284
|
+
version: 1,
|
|
16285
|
+
exportedAt: isoOf(now),
|
|
16286
|
+
detailed,
|
|
16287
|
+
chatCount: chats.length,
|
|
16288
|
+
chats: chats.map((chat) => toLogChat(chat, detailed))
|
|
16289
|
+
};
|
|
16290
|
+
}
|
|
16291
|
+
function toolCallLine(call, detailed) {
|
|
16292
|
+
const lines = [`- Tool \`${call.toolName}\` (${call.state})`];
|
|
16293
|
+
if (call.errorText) {
|
|
16294
|
+
lines.push(` - error: ${call.errorText}`);
|
|
16295
|
+
}
|
|
16296
|
+
if (detailed) {
|
|
16297
|
+
lines.push(" - input:");
|
|
16298
|
+
lines.push(" ```json");
|
|
16299
|
+
lines.push(JSON.stringify(call.input ?? null, null, 2));
|
|
16300
|
+
lines.push(" ```");
|
|
16301
|
+
lines.push(" - output:");
|
|
16302
|
+
lines.push(" ```json");
|
|
16303
|
+
lines.push(JSON.stringify(call.output ?? null, null, 2));
|
|
16304
|
+
lines.push(" ```");
|
|
16305
|
+
}
|
|
16306
|
+
return lines.join("\n");
|
|
16307
|
+
}
|
|
16308
|
+
function buildChatLogMarkdown(doc) {
|
|
16309
|
+
const out = [
|
|
16310
|
+
`# AI chat logs`,
|
|
16311
|
+
"",
|
|
16312
|
+
`Exported: ${doc.exportedAt}`,
|
|
16313
|
+
`Chats: ${doc.chatCount}`,
|
|
16314
|
+
""
|
|
16315
|
+
];
|
|
16316
|
+
for (const chat of doc.chats) {
|
|
16317
|
+
out.push(`## ${chat.title || chat.id}`);
|
|
16318
|
+
out.push("");
|
|
16319
|
+
out.push(`- id: ${chat.id}`);
|
|
16320
|
+
if (chat.deckId) {
|
|
16321
|
+
out.push(`- deck: ${chat.deckId}`);
|
|
16322
|
+
}
|
|
16323
|
+
out.push(`- created: ${chat.createdAtIso}`);
|
|
16324
|
+
out.push(`- updated: ${chat.updatedAtIso}`);
|
|
16325
|
+
out.push(`- messages: ${chat.messageCount}`);
|
|
16326
|
+
out.push("");
|
|
16327
|
+
for (const message of chat.messages) {
|
|
16328
|
+
out.push(`### ${message.role}`);
|
|
16329
|
+
out.push("");
|
|
16330
|
+
if (message.text) {
|
|
16331
|
+
out.push(message.text);
|
|
16332
|
+
out.push("");
|
|
16333
|
+
}
|
|
16334
|
+
for (const call of message.toolCalls) {
|
|
16335
|
+
out.push(toolCallLine(call, doc.detailed));
|
|
16336
|
+
out.push("");
|
|
16337
|
+
}
|
|
16338
|
+
}
|
|
16339
|
+
}
|
|
16340
|
+
return out.join("\n");
|
|
16341
|
+
}
|
|
16342
|
+
async function collectStoredChats(store = createChatHistoryStore()) {
|
|
16343
|
+
const summaries = await store.listChats();
|
|
16344
|
+
const chats = [];
|
|
16345
|
+
for (const summary of summaries) {
|
|
16346
|
+
const chat = await store.loadChat(summary.id);
|
|
16347
|
+
if (chat) {
|
|
16348
|
+
chats.push(chat);
|
|
16349
|
+
}
|
|
16350
|
+
}
|
|
16351
|
+
return chats;
|
|
16352
|
+
}
|
|
16353
|
+
function timestampSlug(now) {
|
|
16354
|
+
const d = new Date(now);
|
|
16355
|
+
const p = (n) => String(n).padStart(2, "0");
|
|
16356
|
+
return `${d.getFullYear()}${p(d.getMonth() + 1)}${p(d.getDate())}-${p(d.getHours())}${p(d.getMinutes())}${p(d.getSeconds())}`;
|
|
16357
|
+
}
|
|
16358
|
+
function exportAiChatLogs(chats, meta3, save) {
|
|
16359
|
+
if (chats.length === 0) {
|
|
16360
|
+
return 0;
|
|
16361
|
+
}
|
|
16362
|
+
const now = meta3?.now ?? Date.now();
|
|
16363
|
+
const doc = buildChatLogExport(chats, { detailed: meta3?.detailed ?? true, now });
|
|
16364
|
+
const slug = timestampSlug(now);
|
|
16365
|
+
const format = meta3?.format ?? "json";
|
|
16366
|
+
if (format === "markdown") {
|
|
16367
|
+
save(`pptx-ai-chats-${slug}.md`, buildChatLogMarkdown(doc), "text/markdown");
|
|
16368
|
+
} else {
|
|
16369
|
+
save(`pptx-ai-chats-${slug}.json`, JSON.stringify(doc, null, 2), "application/json");
|
|
16370
|
+
}
|
|
16371
|
+
return chats.length;
|
|
16372
|
+
}
|
|
16373
|
+
function computeFocusTargets(input) {
|
|
16374
|
+
const { activeSlideIndex, selectedElementIds, selectedElementId } = input;
|
|
16375
|
+
const ids = selectedElementIds.length > 0 ? [...selectedElementIds] : selectedElementId ? [selectedElementId] : [];
|
|
16376
|
+
if (ids.length === 0) {
|
|
16377
|
+
return [{ kind: "slide", slideIndex: activeSlideIndex }];
|
|
16378
|
+
}
|
|
16379
|
+
return ids.map((elementId2) => ({ kind: "element", slideIndex: activeSlideIndex, elementId: elementId2 }));
|
|
16380
|
+
}
|
|
16381
|
+
function elementTypeLabel(type) {
|
|
16382
|
+
if (type === "smartArt") {
|
|
16383
|
+
return "SmartArt";
|
|
16384
|
+
}
|
|
16385
|
+
if (type === "ole") {
|
|
16386
|
+
return "OLE";
|
|
16387
|
+
}
|
|
16388
|
+
return type.charAt(0).toUpperCase() + type.slice(1);
|
|
16389
|
+
}
|
|
16390
|
+
function shortElementId(id) {
|
|
16391
|
+
const trimmed = id.trimEnd();
|
|
16392
|
+
let start = trimmed.length;
|
|
16393
|
+
while (start > 0 && isAsciiDigit(trimmed.charCodeAt(start - 1))) {
|
|
16394
|
+
start -= 1;
|
|
16395
|
+
}
|
|
16396
|
+
if (start < trimmed.length) {
|
|
16397
|
+
return trimmed.slice(start);
|
|
16398
|
+
}
|
|
16399
|
+
const separator = Math.max(id.lastIndexOf("/"), id.lastIndexOf("."), id.lastIndexOf("-"));
|
|
16400
|
+
const tail = separator === -1 ? id : id.slice(separator + 1);
|
|
16401
|
+
return tail || id;
|
|
16402
|
+
}
|
|
16403
|
+
function isAsciiDigit(code) {
|
|
16404
|
+
return code >= 48 && code <= 57;
|
|
16405
|
+
}
|
|
16406
|
+
function focusTargetChips(targets, slides) {
|
|
16407
|
+
return targets.map((target, index) => {
|
|
16408
|
+
if (target.kind === "slide") {
|
|
16409
|
+
const label2 = `Slide ${target.slideIndex + 1}`;
|
|
16410
|
+
return { key: `slide-${target.slideIndex}-${index}`, label: label2, title: label2 };
|
|
16411
|
+
}
|
|
16412
|
+
const el = slides[target.slideIndex]?.elements.find((e) => e.id === target.elementId);
|
|
16413
|
+
const typeLabel = el ? elementTypeLabel(el.type) : "Element";
|
|
16414
|
+
const label = el ? `${typeLabel} ${shortElementId(target.elementId)}` : `${typeLabel} (missing)`;
|
|
16415
|
+
return {
|
|
16416
|
+
key: `el-${target.elementId}-${index}`,
|
|
16417
|
+
label,
|
|
16418
|
+
title: `${typeLabel}: ${target.elementId}`
|
|
16419
|
+
};
|
|
16420
|
+
});
|
|
16421
|
+
}
|
|
16422
|
+
function isTwoTableFocus(targets, slides) {
|
|
16423
|
+
if (targets.length !== 2 || targets.some((target) => target.kind !== "element")) {
|
|
16424
|
+
return false;
|
|
16425
|
+
}
|
|
16426
|
+
const [a, b] = targets;
|
|
16427
|
+
if (a.slideIndex !== b.slideIndex) {
|
|
16428
|
+
return false;
|
|
16429
|
+
}
|
|
16430
|
+
const slide = slides[a.slideIndex];
|
|
16431
|
+
const elA = slide?.elements.find((e) => e.id === a.elementId);
|
|
16432
|
+
const elB = slide?.elements.find((e) => e.id === b.elementId);
|
|
16433
|
+
if (elA?.type !== "table" || elB?.type !== "table") {
|
|
16434
|
+
return false;
|
|
16435
|
+
}
|
|
16436
|
+
return { slideIndex: a.slideIndex, elementIdA: a.elementId, elementIdB: b.elementId };
|
|
16437
|
+
}
|
|
16438
|
+
function mergeTablesDirective(slideIndex2, elementIdA, elementIdB) {
|
|
16439
|
+
return `Merge the two selected tables (elementIdA=${elementIdA}, elementIdB=${elementIdB}) on slide ${slideIndex2 + 1} using merge_tables; stage it now, do not ask me to confirm.`;
|
|
16440
|
+
}
|
|
16238
16441
|
init_chat_history_store();
|
|
16239
16442
|
function deckIdFromBridge(bridge) {
|
|
16240
16443
|
const meta3 = bridge.getDeckMeta();
|
|
16241
16444
|
const title = (meta3.title ?? "deck").trim().toLowerCase().replace(/\s+/gu, "-").slice(0, 60);
|
|
16242
16445
|
return `${title || "deck"}::${meta3.slideCount}`;
|
|
16243
16446
|
}
|
|
16447
|
+
function applyElementUpdate(el, u) {
|
|
16448
|
+
if (u.x !== void 0) {
|
|
16449
|
+
el.x = u.x;
|
|
16450
|
+
}
|
|
16451
|
+
if (u.y !== void 0) {
|
|
16452
|
+
el.y = u.y;
|
|
16453
|
+
}
|
|
16454
|
+
if (u.width !== void 0) {
|
|
16455
|
+
el.width = u.width;
|
|
16456
|
+
}
|
|
16457
|
+
if (u.height !== void 0) {
|
|
16458
|
+
el.height = u.height;
|
|
16459
|
+
}
|
|
16460
|
+
if (u.rotation !== void 0) {
|
|
16461
|
+
el.rotation = u.rotation;
|
|
16462
|
+
}
|
|
16463
|
+
if (u.opacity !== void 0) {
|
|
16464
|
+
el.opacity = u.opacity;
|
|
16465
|
+
}
|
|
16466
|
+
if (u.hidden !== void 0) {
|
|
16467
|
+
el.hidden = u.hidden;
|
|
16468
|
+
}
|
|
16469
|
+
if (u.flipHorizontal !== void 0) {
|
|
16470
|
+
el.flipHorizontal = u.flipHorizontal;
|
|
16471
|
+
}
|
|
16472
|
+
if (u.flipVertical !== void 0) {
|
|
16473
|
+
el.flipVertical = u.flipVertical;
|
|
16474
|
+
}
|
|
16475
|
+
applyTextUpdate(el, u);
|
|
16476
|
+
applyShapeStyleUpdate(el, u);
|
|
16477
|
+
}
|
|
16478
|
+
function applyTextUpdate(el, u) {
|
|
16479
|
+
if (!hasTextProperties(el)) {
|
|
16480
|
+
return;
|
|
16481
|
+
}
|
|
16482
|
+
const textEl = el;
|
|
16483
|
+
if (u.text !== void 0) {
|
|
16484
|
+
textEl.text = u.text;
|
|
16485
|
+
if (textEl.textSegments && textEl.textSegments.length > 0) {
|
|
16486
|
+
textEl.textSegments[0].text = u.text;
|
|
16487
|
+
} else {
|
|
16488
|
+
textEl.textSegments = [{ text: u.text, style: {} }];
|
|
16489
|
+
}
|
|
16490
|
+
}
|
|
16491
|
+
if (u.fontSize === void 0 && u.fontFamily === void 0 && u.fontColor === void 0 && u.bold === void 0 && u.italic === void 0 && u.underline === void 0 && u.align === void 0) {
|
|
16492
|
+
return;
|
|
16493
|
+
}
|
|
16494
|
+
const textStyle = {};
|
|
16495
|
+
if (u.fontSize !== void 0) {
|
|
16496
|
+
textStyle.fontSize = u.fontSize;
|
|
16497
|
+
}
|
|
16498
|
+
if (u.fontFamily !== void 0) {
|
|
16499
|
+
textStyle.fontFamily = u.fontFamily;
|
|
16500
|
+
}
|
|
16501
|
+
if (u.fontColor !== void 0) {
|
|
16502
|
+
textStyle.color = u.fontColor;
|
|
16503
|
+
}
|
|
16504
|
+
if (u.bold !== void 0) {
|
|
16505
|
+
textStyle.bold = u.bold;
|
|
16506
|
+
}
|
|
16507
|
+
if (u.italic !== void 0) {
|
|
16508
|
+
textStyle.italic = u.italic;
|
|
16509
|
+
}
|
|
16510
|
+
if (u.underline !== void 0) {
|
|
16511
|
+
textStyle.underline = u.underline;
|
|
16512
|
+
}
|
|
16513
|
+
if (u.align !== void 0) {
|
|
16514
|
+
textStyle.align = u.align;
|
|
16515
|
+
}
|
|
16516
|
+
textEl.textStyle = { ...textEl.textStyle, ...textStyle };
|
|
16517
|
+
if (textEl.textSegments) {
|
|
16518
|
+
textEl.textSegments = textEl.textSegments.map((seg) => ({
|
|
16519
|
+
...seg,
|
|
16520
|
+
style: { ...seg.style, ...textStyle }
|
|
16521
|
+
}));
|
|
16522
|
+
}
|
|
16523
|
+
}
|
|
16524
|
+
function applyShapeStyleUpdate(el, u) {
|
|
16525
|
+
if (u.fillColor === void 0 && u.strokeColor === void 0 && u.strokeWidth === void 0) {
|
|
16526
|
+
return;
|
|
16527
|
+
}
|
|
16528
|
+
if (!hasShapeProperties(el)) {
|
|
16529
|
+
return;
|
|
16530
|
+
}
|
|
16531
|
+
const holder = el;
|
|
16532
|
+
holder.shapeStyle ??= {};
|
|
16533
|
+
const style = holder.shapeStyle;
|
|
16534
|
+
if (u.fillColor !== void 0) {
|
|
16535
|
+
style.fillColor = u.fillColor;
|
|
16536
|
+
}
|
|
16537
|
+
if (u.strokeColor !== void 0) {
|
|
16538
|
+
style.strokeColor = u.strokeColor;
|
|
16539
|
+
}
|
|
16540
|
+
if (u.strokeWidth !== void 0) {
|
|
16541
|
+
style.strokeWidth = u.strokeWidth;
|
|
16542
|
+
}
|
|
16543
|
+
}
|
|
16244
16544
|
function toolLabel(toolName) {
|
|
16245
16545
|
if (!toolName) {
|
|
16246
16546
|
return "Tool";
|
|
@@ -16642,63 +16942,4 @@ function toolCanvasTarget(toolName, input) {
|
|
|
16642
16942
|
return { slideIndex: slideIndex2, elementIds };
|
|
16643
16943
|
}
|
|
16644
16944
|
|
|
16645
|
-
|
|
16646
|
-
function computeFocusTargets(input) {
|
|
16647
|
-
const { activeSlideIndex, selectedElementIds, selectedElementId } = input;
|
|
16648
|
-
const ids = selectedElementIds.length > 0 ? selectedElementIds : selectedElementId ? [selectedElementId] : [];
|
|
16649
|
-
if (ids.length === 0) {
|
|
16650
|
-
return [{ kind: "slide", slideIndex: activeSlideIndex }];
|
|
16651
|
-
}
|
|
16652
|
-
return ids.map((elementId2) => ({ kind: "element", slideIndex: activeSlideIndex, elementId: elementId2 }));
|
|
16653
|
-
}
|
|
16654
|
-
function elementTypeLabel(type) {
|
|
16655
|
-
if (type === "smartArt") {
|
|
16656
|
-
return "SmartArt";
|
|
16657
|
-
}
|
|
16658
|
-
if (type === "ole") {
|
|
16659
|
-
return "OLE";
|
|
16660
|
-
}
|
|
16661
|
-
return type.charAt(0).toUpperCase() + type.slice(1);
|
|
16662
|
-
}
|
|
16663
|
-
function shortElementId(id) {
|
|
16664
|
-
const trailingNumber = id.match(/(\d+)\s*$/u);
|
|
16665
|
-
if (trailingNumber) {
|
|
16666
|
-
return trailingNumber[1];
|
|
16667
|
-
}
|
|
16668
|
-
const tail = id.replace(/^.*[/.-]/u, "");
|
|
16669
|
-
return tail || id;
|
|
16670
|
-
}
|
|
16671
|
-
function focusTargetChips(targets, slides) {
|
|
16672
|
-
return targets.map((target, index) => {
|
|
16673
|
-
if (target.kind === "slide") {
|
|
16674
|
-
const label2 = `Slide ${target.slideIndex + 1}`;
|
|
16675
|
-
return { key: `slide-${target.slideIndex}-${index}`, label: label2, title: label2 };
|
|
16676
|
-
}
|
|
16677
|
-
const el = slides[target.slideIndex]?.elements.find((e) => e.id === target.elementId);
|
|
16678
|
-
const typeLabel = el ? elementTypeLabel(el.type) : "Element";
|
|
16679
|
-
const label = el ? `${typeLabel} ${shortElementId(target.elementId)}` : `${typeLabel} (missing)`;
|
|
16680
|
-
return {
|
|
16681
|
-
key: `el-${target.elementId}-${index}`,
|
|
16682
|
-
label,
|
|
16683
|
-
title: `${typeLabel}: ${target.elementId}`
|
|
16684
|
-
};
|
|
16685
|
-
});
|
|
16686
|
-
}
|
|
16687
|
-
function isTwoTableFocus(targets, slides) {
|
|
16688
|
-
if (targets.length !== 2 || targets.some((t) => t.kind !== "element")) {
|
|
16689
|
-
return false;
|
|
16690
|
-
}
|
|
16691
|
-
const [a, b] = targets;
|
|
16692
|
-
if (a.slideIndex !== b.slideIndex) {
|
|
16693
|
-
return false;
|
|
16694
|
-
}
|
|
16695
|
-
const slide = slides[a.slideIndex];
|
|
16696
|
-
const elA = slide?.elements.find((e) => e.id === a.elementId);
|
|
16697
|
-
const elB = slide?.elements.find((e) => e.id === b.elementId);
|
|
16698
|
-
if (elA?.type !== "table" || elB?.type !== "table") {
|
|
16699
|
-
return false;
|
|
16700
|
-
}
|
|
16701
|
-
return { slideIndex: a.slideIndex, elementIdA: a.elementId, elementIdB: b.elementId };
|
|
16702
|
-
}
|
|
16703
|
-
|
|
16704
|
-
export { aiChangeAnimationCss, buildDeckContext, changeGhostStyle, computeFocusTargets, createAiChatSession, createChatHistoryStore, deckIdFromBridge, describeToolActivity, focusTargetChips, humanizeDiffLine, isAiAvailable, isTwoTableFocus, summarizeToolArgs, toRenderableParts, toolCanvasTarget, toolLabel };
|
|
16945
|
+
export { aiChangeAnimationCss, applyElementUpdate, buildDeckContext, changeGhostStyle, collectStoredChats, computeFocusTargets, createAiChatSession, createChatHistoryStore, deckIdFromBridge, describeToolActivity, exportAiChatLogs, focusTargetChips, humanizeDiffLine, isAiAvailable, isTwoTableFocus, mergeTablesDirective, summarizeToolArgs, toolCanvasTarget, toolLabel };
|
|
Binary file
|
|
Binary file
|