pptx-react-viewer 3.1.5 → 3.3.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 +35 -0
- package/dist/{AiChatPanel-ITCVRVKP.mjs → AiChatPanel-BNFDBP4S.mjs} +9 -8
- package/dist/AiChatPanel-BNFDBP4S.mjs.br +0 -0
- package/dist/AiChatPanel-BNFDBP4S.mjs.gz +0 -0
- package/dist/{AiChatPanel-TO5PHBGW.js → AiChatPanel-WNQCTQB5.js} +29 -28
- package/dist/AiChatPanel-WNQCTQB5.js.br +0 -0
- package/dist/AiChatPanel-WNQCTQB5.js.gz +0 -0
- package/dist/{Area3DChartScene-2UNQ3J3V.js → Area3DChartScene-FXBSLIGX.js} +2 -2
- package/dist/Area3DChartScene-FXBSLIGX.js.br +0 -0
- package/dist/Area3DChartScene-FXBSLIGX.js.gz +0 -0
- package/dist/{Area3DChartScene-7PHPDOTG.mjs → Area3DChartScene-SAQVRYOH.mjs} +1 -1
- package/dist/Area3DChartScene-SAQVRYOH.mjs.br +0 -0
- package/dist/Area3DChartScene-SAQVRYOH.mjs.gz +0 -0
- package/dist/{Bar3DChartScene-MC5S3AGT.js → Bar3DChartScene-7HVUTP2E.js} +2 -2
- package/dist/Bar3DChartScene-7HVUTP2E.js.br +0 -0
- package/dist/Bar3DChartScene-7HVUTP2E.js.gz +0 -0
- package/dist/{Bar3DChartScene-BLPUHYRZ.mjs → Bar3DChartScene-LUA6E2K6.mjs} +1 -1
- package/dist/Bar3DChartScene-LUA6E2K6.mjs.br +3 -0
- package/dist/Bar3DChartScene-LUA6E2K6.mjs.gz +0 -0
- package/dist/{Line3DChartScene-L5B4YFG3.mjs → Line3DChartScene-IW4JGH57.mjs} +1 -1
- package/dist/Line3DChartScene-IW4JGH57.mjs.br +0 -0
- package/dist/Line3DChartScene-IW4JGH57.mjs.gz +0 -0
- package/dist/{Line3DChartScene-JVVZRIDD.js → Line3DChartScene-OVPULUTF.js} +2 -2
- package/dist/Line3DChartScene-OVPULUTF.js.br +0 -0
- package/dist/Line3DChartScene-OVPULUTF.js.gz +0 -0
- package/dist/{Model3DScene-LRDNQNKJ.js → Model3DScene-5KP6BVCV.js} +2 -2
- package/dist/Model3DScene-5KP6BVCV.js.br +0 -0
- package/dist/Model3DScene-5KP6BVCV.js.gz +0 -0
- package/dist/{Model3DScene-6TNWS5LV.mjs → Model3DScene-BERTZYCJ.mjs} +1 -1
- package/dist/Model3DScene-BERTZYCJ.mjs.br +0 -0
- package/dist/Model3DScene-BERTZYCJ.mjs.gz +0 -0
- package/dist/{PieChart3DScene-PZWZCXHX.js → PieChart3DScene-3R2ETTGA.js} +2 -2
- package/dist/PieChart3DScene-3R2ETTGA.js.br +0 -0
- package/dist/PieChart3DScene-3R2ETTGA.js.gz +0 -0
- package/dist/{PieChart3DScene-XXAIVP4I.mjs → PieChart3DScene-O6FFK5L7.mjs} +1 -1
- package/dist/PieChart3DScene-O6FFK5L7.mjs.br +0 -0
- package/dist/PieChart3DScene-O6FFK5L7.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-CRUGJSCY.mjs → SurfaceChart3DScene-OCR26R5D.mjs} +1 -1
- package/dist/SurfaceChart3DScene-OCR26R5D.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-OCR26R5D.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-UBQV3ZN2.js → SurfaceChart3DScene-TGFAOLHL.js} +2 -2
- package/dist/SurfaceChart3DScene-TGFAOLHL.js.br +0 -0
- package/dist/SurfaceChart3DScene-TGFAOLHL.js.gz +0 -0
- package/dist/{chunk-QOLYY7E3.mjs → chunk-2FTJAMFA.mjs} +300 -66
- package/dist/chunk-2FTJAMFA.mjs.br +0 -0
- package/dist/chunk-2FTJAMFA.mjs.gz +0 -0
- package/dist/{chunk-P3VXXUZM.mjs → chunk-3B5FRKYU.mjs} +137 -438
- package/dist/chunk-3B5FRKYU.mjs.br +0 -0
- package/dist/chunk-3B5FRKYU.mjs.gz +0 -0
- package/dist/{chunk-SWRY3SI5.js → chunk-3P7FYHJH.js} +47 -1
- package/dist/chunk-3P7FYHJH.js.br +0 -0
- package/dist/chunk-3P7FYHJH.js.gz +0 -0
- package/dist/{chunk-T2QG2HD5.js → chunk-44CQ67GQ.js} +173 -262
- package/dist/chunk-44CQ67GQ.js.br +0 -0
- package/dist/chunk-44CQ67GQ.js.gz +0 -0
- package/dist/{chunk-ARJE3V6V.mjs → chunk-AMRT3AE4.mjs} +47 -1
- package/dist/chunk-AMRT3AE4.mjs.br +0 -0
- package/dist/chunk-AMRT3AE4.mjs.gz +0 -0
- package/dist/{chunk-XIHK52SB.mjs → chunk-DM2IZCSD.mjs} +8499 -3404
- package/dist/chunk-DM2IZCSD.mjs.br +0 -0
- package/dist/chunk-DM2IZCSD.mjs.gz +0 -0
- package/dist/{chunk-LGVNUG3G.js → chunk-FSQCEAMG.js} +305 -68
- package/dist/chunk-FSQCEAMG.js.br +0 -0
- package/dist/chunk-FSQCEAMG.js.gz +0 -0
- package/dist/{chunk-LXYDXLKZ.js → chunk-GR6SJJIT.js} +463 -776
- package/dist/chunk-GR6SJJIT.js.br +0 -0
- package/dist/chunk-GR6SJJIT.js.gz +0 -0
- package/dist/{chunk-BPWSJLLG.mjs → chunk-ITN5NYYM.mjs} +10 -98
- package/dist/chunk-ITN5NYYM.mjs.br +0 -0
- package/dist/chunk-ITN5NYYM.mjs.gz +0 -0
- package/dist/{chunk-YDEEINER.js → chunk-K6R2JNCK.js} +8531 -3410
- package/dist/chunk-K6R2JNCK.js.br +0 -0
- package/dist/chunk-K6R2JNCK.js.gz +0 -0
- package/dist/{chunk-A2UAUSJM.mjs → chunk-QEEU4S4Z.mjs} +65 -378
- package/dist/chunk-QEEU4S4Z.mjs.br +0 -0
- package/dist/chunk-QEEU4S4Z.mjs.gz +0 -0
- package/dist/{chunk-ZPF4L6SD.js → chunk-QKSYKQEL.js} +1243 -1544
- package/dist/chunk-QKSYKQEL.js.br +0 -0
- package/dist/chunk-QKSYKQEL.js.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 +170 -17
- 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 +170 -17
- 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/viewer/index.d.ts +170 -17
- 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-ITCVRVKP.mjs.br +0 -0
- package/dist/AiChatPanel-ITCVRVKP.mjs.gz +0 -0
- package/dist/AiChatPanel-TO5PHBGW.js.br +0 -0
- package/dist/AiChatPanel-TO5PHBGW.js.gz +0 -0
- package/dist/Area3DChartScene-2UNQ3J3V.js.br +0 -0
- package/dist/Area3DChartScene-2UNQ3J3V.js.gz +0 -0
- package/dist/Area3DChartScene-7PHPDOTG.mjs.br +0 -0
- package/dist/Area3DChartScene-7PHPDOTG.mjs.gz +0 -0
- package/dist/Bar3DChartScene-BLPUHYRZ.mjs.br +0 -0
- package/dist/Bar3DChartScene-BLPUHYRZ.mjs.gz +0 -0
- package/dist/Bar3DChartScene-MC5S3AGT.js.br +0 -0
- package/dist/Bar3DChartScene-MC5S3AGT.js.gz +0 -0
- package/dist/Line3DChartScene-JVVZRIDD.js.br +0 -0
- package/dist/Line3DChartScene-JVVZRIDD.js.gz +0 -0
- package/dist/Line3DChartScene-L5B4YFG3.mjs.br +0 -0
- package/dist/Line3DChartScene-L5B4YFG3.mjs.gz +0 -0
- package/dist/Model3DScene-6TNWS5LV.mjs.br +0 -0
- package/dist/Model3DScene-6TNWS5LV.mjs.gz +0 -0
- package/dist/Model3DScene-LRDNQNKJ.js.br +0 -0
- package/dist/Model3DScene-LRDNQNKJ.js.gz +0 -0
- package/dist/PieChart3DScene-PZWZCXHX.js.br +0 -0
- package/dist/PieChart3DScene-PZWZCXHX.js.gz +0 -0
- package/dist/PieChart3DScene-XXAIVP4I.mjs.br +0 -0
- package/dist/PieChart3DScene-XXAIVP4I.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.br +0 -1
- package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-UBQV3ZN2.js.br +0 -0
- package/dist/SurfaceChart3DScene-UBQV3ZN2.js.gz +0 -0
- package/dist/chunk-A2UAUSJM.mjs.br +0 -0
- package/dist/chunk-A2UAUSJM.mjs.gz +0 -0
- package/dist/chunk-ARJE3V6V.mjs.br +0 -0
- package/dist/chunk-ARJE3V6V.mjs.gz +0 -0
- package/dist/chunk-BPWSJLLG.mjs.br +0 -0
- package/dist/chunk-BPWSJLLG.mjs.gz +0 -0
- package/dist/chunk-LGVNUG3G.js.br +0 -0
- package/dist/chunk-LGVNUG3G.js.gz +0 -0
- package/dist/chunk-LXYDXLKZ.js.br +0 -0
- package/dist/chunk-LXYDXLKZ.js.gz +0 -0
- package/dist/chunk-P3VXXUZM.mjs.br +0 -0
- package/dist/chunk-P3VXXUZM.mjs.gz +0 -0
- package/dist/chunk-QOLYY7E3.mjs.br +0 -0
- package/dist/chunk-QOLYY7E3.mjs.gz +0 -0
- package/dist/chunk-SWRY3SI5.js.br +0 -0
- package/dist/chunk-SWRY3SI5.js.gz +0 -0
- package/dist/chunk-T2QG2HD5.js.br +0 -0
- package/dist/chunk-T2QG2HD5.js.gz +0 -0
- package/dist/chunk-XIHK52SB.mjs.br +0 -0
- package/dist/chunk-XIHK52SB.mjs.gz +0 -0
- package/dist/chunk-YDEEINER.js.br +0 -0
- package/dist/chunk-YDEEINER.js.gz +0 -0
- package/dist/chunk-ZPF4L6SD.js.br +0 -0
- package/dist/chunk-ZPF4L6SD.js.gz +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ThemePresets, PptxMarkdownConverter } from './chunk-
|
|
1
|
+
import { ThemePresets, PptxMarkdownConverter, hasTextProperties, hasShapeProperties } from './chunk-DM2IZCSD.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';
|
|
@@ -16195,11 +16195,6 @@ function changeGhostStyle(change, phase, config2) {
|
|
|
16195
16195
|
}
|
|
16196
16196
|
init_chat_history_store();
|
|
16197
16197
|
init_chat_history_store();
|
|
16198
|
-
function deckIdFromBridge(bridge) {
|
|
16199
|
-
const meta3 = bridge.getDeckMeta();
|
|
16200
|
-
const title = (meta3.title ?? "deck").trim().toLowerCase().replace(/\s+/gu, "-").slice(0, 60);
|
|
16201
|
-
return `${title || "deck"}::${meta3.slideCount}`;
|
|
16202
|
-
}
|
|
16203
16198
|
function isTextPart(part) {
|
|
16204
16199
|
return part.type === "text";
|
|
16205
16200
|
}
|
|
@@ -16240,6 +16235,304 @@ function toRenderableParts(message) {
|
|
|
16240
16235
|
}
|
|
16241
16236
|
return out;
|
|
16242
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 trailingNumber = id.match(/(\d+)\s*$/u);
|
|
16392
|
+
if (trailingNumber) {
|
|
16393
|
+
return trailingNumber[1];
|
|
16394
|
+
}
|
|
16395
|
+
const tail = id.replace(/^.*[/.-]/u, "");
|
|
16396
|
+
return tail || id;
|
|
16397
|
+
}
|
|
16398
|
+
function focusTargetChips(targets, slides) {
|
|
16399
|
+
return targets.map((target, index) => {
|
|
16400
|
+
if (target.kind === "slide") {
|
|
16401
|
+
const label2 = `Slide ${target.slideIndex + 1}`;
|
|
16402
|
+
return { key: `slide-${target.slideIndex}-${index}`, label: label2, title: label2 };
|
|
16403
|
+
}
|
|
16404
|
+
const el = slides[target.slideIndex]?.elements.find((e) => e.id === target.elementId);
|
|
16405
|
+
const typeLabel = el ? elementTypeLabel(el.type) : "Element";
|
|
16406
|
+
const label = el ? `${typeLabel} ${shortElementId(target.elementId)}` : `${typeLabel} (missing)`;
|
|
16407
|
+
return {
|
|
16408
|
+
key: `el-${target.elementId}-${index}`,
|
|
16409
|
+
label,
|
|
16410
|
+
title: `${typeLabel}: ${target.elementId}`
|
|
16411
|
+
};
|
|
16412
|
+
});
|
|
16413
|
+
}
|
|
16414
|
+
function isTwoTableFocus(targets, slides) {
|
|
16415
|
+
if (targets.length !== 2 || targets.some((target) => target.kind !== "element")) {
|
|
16416
|
+
return false;
|
|
16417
|
+
}
|
|
16418
|
+
const [a, b] = targets;
|
|
16419
|
+
if (a.slideIndex !== b.slideIndex) {
|
|
16420
|
+
return false;
|
|
16421
|
+
}
|
|
16422
|
+
const slide = slides[a.slideIndex];
|
|
16423
|
+
const elA = slide?.elements.find((e) => e.id === a.elementId);
|
|
16424
|
+
const elB = slide?.elements.find((e) => e.id === b.elementId);
|
|
16425
|
+
if (elA?.type !== "table" || elB?.type !== "table") {
|
|
16426
|
+
return false;
|
|
16427
|
+
}
|
|
16428
|
+
return { slideIndex: a.slideIndex, elementIdA: a.elementId, elementIdB: b.elementId };
|
|
16429
|
+
}
|
|
16430
|
+
function mergeTablesDirective(slideIndex2, elementIdA, elementIdB) {
|
|
16431
|
+
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.`;
|
|
16432
|
+
}
|
|
16433
|
+
init_chat_history_store();
|
|
16434
|
+
function deckIdFromBridge(bridge) {
|
|
16435
|
+
const meta3 = bridge.getDeckMeta();
|
|
16436
|
+
const title = (meta3.title ?? "deck").trim().toLowerCase().replace(/\s+/gu, "-").slice(0, 60);
|
|
16437
|
+
return `${title || "deck"}::${meta3.slideCount}`;
|
|
16438
|
+
}
|
|
16439
|
+
function applyElementUpdate(el, u) {
|
|
16440
|
+
if (u.x !== void 0) {
|
|
16441
|
+
el.x = u.x;
|
|
16442
|
+
}
|
|
16443
|
+
if (u.y !== void 0) {
|
|
16444
|
+
el.y = u.y;
|
|
16445
|
+
}
|
|
16446
|
+
if (u.width !== void 0) {
|
|
16447
|
+
el.width = u.width;
|
|
16448
|
+
}
|
|
16449
|
+
if (u.height !== void 0) {
|
|
16450
|
+
el.height = u.height;
|
|
16451
|
+
}
|
|
16452
|
+
if (u.rotation !== void 0) {
|
|
16453
|
+
el.rotation = u.rotation;
|
|
16454
|
+
}
|
|
16455
|
+
if (u.opacity !== void 0) {
|
|
16456
|
+
el.opacity = u.opacity;
|
|
16457
|
+
}
|
|
16458
|
+
if (u.hidden !== void 0) {
|
|
16459
|
+
el.hidden = u.hidden;
|
|
16460
|
+
}
|
|
16461
|
+
if (u.flipHorizontal !== void 0) {
|
|
16462
|
+
el.flipHorizontal = u.flipHorizontal;
|
|
16463
|
+
}
|
|
16464
|
+
if (u.flipVertical !== void 0) {
|
|
16465
|
+
el.flipVertical = u.flipVertical;
|
|
16466
|
+
}
|
|
16467
|
+
applyTextUpdate(el, u);
|
|
16468
|
+
applyShapeStyleUpdate(el, u);
|
|
16469
|
+
}
|
|
16470
|
+
function applyTextUpdate(el, u) {
|
|
16471
|
+
if (!hasTextProperties(el)) {
|
|
16472
|
+
return;
|
|
16473
|
+
}
|
|
16474
|
+
const textEl = el;
|
|
16475
|
+
if (u.text !== void 0) {
|
|
16476
|
+
textEl.text = u.text;
|
|
16477
|
+
if (textEl.textSegments && textEl.textSegments.length > 0) {
|
|
16478
|
+
textEl.textSegments[0].text = u.text;
|
|
16479
|
+
} else {
|
|
16480
|
+
textEl.textSegments = [{ text: u.text, style: {} }];
|
|
16481
|
+
}
|
|
16482
|
+
}
|
|
16483
|
+
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) {
|
|
16484
|
+
return;
|
|
16485
|
+
}
|
|
16486
|
+
const textStyle = {};
|
|
16487
|
+
if (u.fontSize !== void 0) {
|
|
16488
|
+
textStyle.fontSize = u.fontSize;
|
|
16489
|
+
}
|
|
16490
|
+
if (u.fontFamily !== void 0) {
|
|
16491
|
+
textStyle.fontFamily = u.fontFamily;
|
|
16492
|
+
}
|
|
16493
|
+
if (u.fontColor !== void 0) {
|
|
16494
|
+
textStyle.color = u.fontColor;
|
|
16495
|
+
}
|
|
16496
|
+
if (u.bold !== void 0) {
|
|
16497
|
+
textStyle.bold = u.bold;
|
|
16498
|
+
}
|
|
16499
|
+
if (u.italic !== void 0) {
|
|
16500
|
+
textStyle.italic = u.italic;
|
|
16501
|
+
}
|
|
16502
|
+
if (u.underline !== void 0) {
|
|
16503
|
+
textStyle.underline = u.underline;
|
|
16504
|
+
}
|
|
16505
|
+
if (u.align !== void 0) {
|
|
16506
|
+
textStyle.align = u.align;
|
|
16507
|
+
}
|
|
16508
|
+
textEl.textStyle = { ...textEl.textStyle, ...textStyle };
|
|
16509
|
+
if (textEl.textSegments) {
|
|
16510
|
+
textEl.textSegments = textEl.textSegments.map((seg) => ({
|
|
16511
|
+
...seg,
|
|
16512
|
+
style: { ...seg.style, ...textStyle }
|
|
16513
|
+
}));
|
|
16514
|
+
}
|
|
16515
|
+
}
|
|
16516
|
+
function applyShapeStyleUpdate(el, u) {
|
|
16517
|
+
if (u.fillColor === void 0 && u.strokeColor === void 0 && u.strokeWidth === void 0) {
|
|
16518
|
+
return;
|
|
16519
|
+
}
|
|
16520
|
+
if (!hasShapeProperties(el)) {
|
|
16521
|
+
return;
|
|
16522
|
+
}
|
|
16523
|
+
const holder = el;
|
|
16524
|
+
holder.shapeStyle ??= {};
|
|
16525
|
+
const style = holder.shapeStyle;
|
|
16526
|
+
if (u.fillColor !== void 0) {
|
|
16527
|
+
style.fillColor = u.fillColor;
|
|
16528
|
+
}
|
|
16529
|
+
if (u.strokeColor !== void 0) {
|
|
16530
|
+
style.strokeColor = u.strokeColor;
|
|
16531
|
+
}
|
|
16532
|
+
if (u.strokeWidth !== void 0) {
|
|
16533
|
+
style.strokeWidth = u.strokeWidth;
|
|
16534
|
+
}
|
|
16535
|
+
}
|
|
16243
16536
|
function toolLabel(toolName) {
|
|
16244
16537
|
if (!toolName) {
|
|
16245
16538
|
return "Tool";
|
|
@@ -16641,63 +16934,4 @@ function toolCanvasTarget(toolName, input) {
|
|
|
16641
16934
|
return { slideIndex: slideIndex2, elementIds };
|
|
16642
16935
|
}
|
|
16643
16936
|
|
|
16644
|
-
|
|
16645
|
-
function computeFocusTargets(input) {
|
|
16646
|
-
const { activeSlideIndex, selectedElementIds, selectedElementId } = input;
|
|
16647
|
-
const ids = selectedElementIds.length > 0 ? selectedElementIds : selectedElementId ? [selectedElementId] : [];
|
|
16648
|
-
if (ids.length === 0) {
|
|
16649
|
-
return [{ kind: "slide", slideIndex: activeSlideIndex }];
|
|
16650
|
-
}
|
|
16651
|
-
return ids.map((elementId2) => ({ kind: "element", slideIndex: activeSlideIndex, elementId: elementId2 }));
|
|
16652
|
-
}
|
|
16653
|
-
function elementTypeLabel(type) {
|
|
16654
|
-
if (type === "smartArt") {
|
|
16655
|
-
return "SmartArt";
|
|
16656
|
-
}
|
|
16657
|
-
if (type === "ole") {
|
|
16658
|
-
return "OLE";
|
|
16659
|
-
}
|
|
16660
|
-
return type.charAt(0).toUpperCase() + type.slice(1);
|
|
16661
|
-
}
|
|
16662
|
-
function shortElementId(id) {
|
|
16663
|
-
const trailingNumber = id.match(/(\d+)\s*$/u);
|
|
16664
|
-
if (trailingNumber) {
|
|
16665
|
-
return trailingNumber[1];
|
|
16666
|
-
}
|
|
16667
|
-
const tail = id.replace(/^.*[/.-]/u, "");
|
|
16668
|
-
return tail || id;
|
|
16669
|
-
}
|
|
16670
|
-
function focusTargetChips(targets, slides) {
|
|
16671
|
-
return targets.map((target, index) => {
|
|
16672
|
-
if (target.kind === "slide") {
|
|
16673
|
-
const label2 = `Slide ${target.slideIndex + 1}`;
|
|
16674
|
-
return { key: `slide-${target.slideIndex}-${index}`, label: label2, title: label2 };
|
|
16675
|
-
}
|
|
16676
|
-
const el = slides[target.slideIndex]?.elements.find((e) => e.id === target.elementId);
|
|
16677
|
-
const typeLabel = el ? elementTypeLabel(el.type) : "Element";
|
|
16678
|
-
const label = el ? `${typeLabel} ${shortElementId(target.elementId)}` : `${typeLabel} (missing)`;
|
|
16679
|
-
return {
|
|
16680
|
-
key: `el-${target.elementId}-${index}`,
|
|
16681
|
-
label,
|
|
16682
|
-
title: `${typeLabel}: ${target.elementId}`
|
|
16683
|
-
};
|
|
16684
|
-
});
|
|
16685
|
-
}
|
|
16686
|
-
function isTwoTableFocus(targets, slides) {
|
|
16687
|
-
if (targets.length !== 2 || targets.some((t) => t.kind !== "element")) {
|
|
16688
|
-
return false;
|
|
16689
|
-
}
|
|
16690
|
-
const [a, b] = targets;
|
|
16691
|
-
if (a.slideIndex !== b.slideIndex) {
|
|
16692
|
-
return false;
|
|
16693
|
-
}
|
|
16694
|
-
const slide = slides[a.slideIndex];
|
|
16695
|
-
const elA = slide?.elements.find((e) => e.id === a.elementId);
|
|
16696
|
-
const elB = slide?.elements.find((e) => e.id === b.elementId);
|
|
16697
|
-
if (elA?.type !== "table" || elB?.type !== "table") {
|
|
16698
|
-
return false;
|
|
16699
|
-
}
|
|
16700
|
-
return { slideIndex: a.slideIndex, elementIdA: a.elementId, elementIdB: b.elementId };
|
|
16701
|
-
}
|
|
16702
|
-
|
|
16703
|
-
export { aiChangeAnimationCss, buildDeckContext, changeGhostStyle, computeFocusTargets, createAiChatSession, createChatHistoryStore, deckIdFromBridge, describeToolActivity, focusTargetChips, humanizeDiffLine, isAiAvailable, isTwoTableFocus, summarizeToolArgs, toRenderableParts, toolCanvasTarget, toolLabel };
|
|
16937
|
+
export { aiChangeAnimationCss, applyElementUpdate, buildDeckContext, changeGhostStyle, collectStoredChats, computeFocusTargets, createAiChatSession, createChatHistoryStore, deckIdFromBridge, describeToolActivity, exportAiChatLogs, focusTargetChips, humanizeDiffLine, isAiAvailable, isTwoTableFocus, mergeTablesDirective, summarizeToolArgs, toolCanvasTarget, toolLabel };
|
|
Binary file
|
|
Binary file
|