pptx-react-viewer 3.1.5 → 3.2.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.
Files changed (157) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{AiChatPanel-ITCVRVKP.mjs → AiChatPanel-C3E7NLX3.mjs} +4 -4
  3. package/dist/AiChatPanel-C3E7NLX3.mjs.br +0 -0
  4. package/dist/AiChatPanel-C3E7NLX3.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-TO5PHBGW.js → AiChatPanel-TKBVSYD2.js} +24 -24
  6. package/dist/AiChatPanel-TKBVSYD2.js.br +0 -0
  7. package/dist/AiChatPanel-TKBVSYD2.js.gz +0 -0
  8. package/dist/{Area3DChartScene-2UNQ3J3V.js → Area3DChartScene-3A3CXKN3.js} +2 -2
  9. package/dist/Area3DChartScene-3A3CXKN3.js.br +0 -0
  10. package/dist/Area3DChartScene-3A3CXKN3.js.gz +0 -0
  11. package/dist/{Area3DChartScene-7PHPDOTG.mjs → Area3DChartScene-7YCFWEGX.mjs} +1 -1
  12. package/dist/Area3DChartScene-7YCFWEGX.mjs.br +3 -0
  13. package/dist/Area3DChartScene-7YCFWEGX.mjs.gz +0 -0
  14. package/dist/{Bar3DChartScene-BLPUHYRZ.mjs → Bar3DChartScene-7CNSJ35X.mjs} +1 -1
  15. package/dist/Bar3DChartScene-7CNSJ35X.mjs.br +0 -0
  16. package/dist/Bar3DChartScene-7CNSJ35X.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-MC5S3AGT.js → Bar3DChartScene-BDUENAWJ.js} +2 -2
  18. package/dist/Bar3DChartScene-BDUENAWJ.js.br +0 -0
  19. package/dist/Bar3DChartScene-BDUENAWJ.js.gz +0 -0
  20. package/dist/{Line3DChartScene-JVVZRIDD.js → Line3DChartScene-R352CZ5U.js} +2 -2
  21. package/dist/Line3DChartScene-R352CZ5U.js.br +0 -0
  22. package/dist/Line3DChartScene-R352CZ5U.js.gz +0 -0
  23. package/dist/{Line3DChartScene-L5B4YFG3.mjs → Line3DChartScene-SMTHK6MD.mjs} +1 -1
  24. package/dist/Line3DChartScene-SMTHK6MD.mjs.br +3 -0
  25. package/dist/Line3DChartScene-SMTHK6MD.mjs.gz +0 -0
  26. package/dist/{Model3DScene-6TNWS5LV.mjs → Model3DScene-AUVJXXPV.mjs} +1 -1
  27. package/dist/Model3DScene-AUVJXXPV.mjs.br +0 -0
  28. package/dist/Model3DScene-AUVJXXPV.mjs.gz +0 -0
  29. package/dist/{Model3DScene-LRDNQNKJ.js → Model3DScene-Y4SGFQYW.js} +2 -2
  30. package/dist/{Model3DScene-LRDNQNKJ.js.br → Model3DScene-Y4SGFQYW.js.br} +0 -0
  31. package/dist/Model3DScene-Y4SGFQYW.js.gz +0 -0
  32. package/dist/{PieChart3DScene-PZWZCXHX.js → PieChart3DScene-TK2VT4RS.js} +2 -2
  33. package/dist/PieChart3DScene-TK2VT4RS.js.br +0 -0
  34. package/dist/PieChart3DScene-TK2VT4RS.js.gz +0 -0
  35. package/dist/{PieChart3DScene-XXAIVP4I.mjs → PieChart3DScene-UD7GRH55.mjs} +1 -1
  36. package/dist/PieChart3DScene-UD7GRH55.mjs.br +0 -0
  37. package/dist/PieChart3DScene-UD7GRH55.mjs.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-UBQV3ZN2.js → SurfaceChart3DScene-ERFXZW2O.js} +2 -2
  39. package/dist/SurfaceChart3DScene-ERFXZW2O.js.br +0 -0
  40. package/dist/SurfaceChart3DScene-ERFXZW2O.js.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-CRUGJSCY.mjs → SurfaceChart3DScene-TXY6UZSW.mjs} +1 -1
  42. package/dist/SurfaceChart3DScene-TXY6UZSW.mjs.br +0 -0
  43. package/dist/SurfaceChart3DScene-TXY6UZSW.mjs.gz +0 -0
  44. package/dist/{chunk-SWRY3SI5.js → chunk-ALO4ZOHQ.js} +46 -1
  45. package/dist/chunk-ALO4ZOHQ.js.br +0 -0
  46. package/dist/{chunk-SWRY3SI5.js.gz → chunk-ALO4ZOHQ.js.gz} +0 -0
  47. package/dist/{chunk-LXYDXLKZ.js → chunk-ARQGUUYU.js} +421 -460
  48. package/dist/chunk-ARQGUUYU.js.br +0 -0
  49. package/dist/chunk-ARQGUUYU.js.gz +0 -0
  50. package/dist/{chunk-T2QG2HD5.js → chunk-B6UIVRFA.js} +167 -167
  51. package/dist/chunk-B6UIVRFA.js.br +0 -0
  52. package/dist/chunk-B6UIVRFA.js.gz +0 -0
  53. package/dist/{chunk-YDEEINER.js → chunk-FJDZ7AEE.js} +6446 -3739
  54. package/dist/chunk-FJDZ7AEE.js.br +0 -0
  55. package/dist/chunk-FJDZ7AEE.js.gz +0 -0
  56. package/dist/{chunk-BPWSJLLG.mjs → chunk-FMEEIS6L.mjs} +2 -2
  57. package/dist/chunk-FMEEIS6L.mjs.br +0 -0
  58. package/dist/chunk-FMEEIS6L.mjs.gz +0 -0
  59. package/dist/{chunk-XIHK52SB.mjs → chunk-G7UBIKAG.mjs} +6445 -3740
  60. package/dist/chunk-G7UBIKAG.mjs.br +0 -0
  61. package/dist/chunk-G7UBIKAG.mjs.gz +0 -0
  62. package/dist/{chunk-P3VXXUZM.mjs → chunk-PPNXPEEZ.mjs} +20 -14
  63. package/dist/chunk-PPNXPEEZ.mjs.br +0 -0
  64. package/dist/chunk-PPNXPEEZ.mjs.gz +0 -0
  65. package/dist/{chunk-LGVNUG3G.js → chunk-Q52HT4EZ.js} +9 -8
  66. package/dist/chunk-Q52HT4EZ.js.br +0 -0
  67. package/dist/chunk-Q52HT4EZ.js.gz +0 -0
  68. package/dist/{chunk-ARJE3V6V.mjs → chunk-RHSA5BW5.mjs} +46 -1
  69. package/dist/chunk-RHSA5BW5.mjs.br +0 -0
  70. package/dist/{chunk-ARJE3V6V.mjs.gz → chunk-RHSA5BW5.mjs.gz} +0 -0
  71. package/dist/{chunk-ZPF4L6SD.js → chunk-RRAL4Y7V.js} +1136 -1130
  72. package/dist/chunk-RRAL4Y7V.js.br +0 -0
  73. package/dist/chunk-RRAL4Y7V.js.gz +0 -0
  74. package/dist/{chunk-QOLYY7E3.mjs → chunk-RX6FE24O.mjs} +7 -6
  75. package/dist/chunk-RX6FE24O.mjs.br +0 -0
  76. package/dist/chunk-RX6FE24O.mjs.gz +0 -0
  77. package/dist/{chunk-A2UAUSJM.mjs → chunk-UHR7EYFM.mjs} +18 -57
  78. package/dist/chunk-UHR7EYFM.mjs.br +0 -0
  79. package/dist/chunk-UHR7EYFM.mjs.gz +0 -0
  80. package/dist/i18n.js +4 -4
  81. package/dist/i18n.js.br +0 -0
  82. package/dist/i18n.js.gz +0 -0
  83. package/dist/i18n.mjs +1 -1
  84. package/dist/i18n.mjs.br +0 -0
  85. package/dist/i18n.mjs.gz +0 -0
  86. package/dist/index.d.ts +170 -17
  87. package/dist/index.js +47 -47
  88. package/dist/index.js.br +0 -0
  89. package/dist/index.js.gz +0 -0
  90. package/dist/index.mjs +6 -6
  91. package/dist/index.mjs.br +0 -0
  92. package/dist/index.mjs.gz +0 -0
  93. package/dist/internals.d.ts +170 -17
  94. package/dist/internals.d.ts.map +1 -1
  95. package/dist/internals.js +79 -79
  96. package/dist/internals.js.br +0 -0
  97. package/dist/internals.js.gz +0 -0
  98. package/dist/internals.mjs +4 -4
  99. package/dist/internals.mjs.br +0 -0
  100. package/dist/internals.mjs.gz +0 -0
  101. package/dist/viewer/index.d.ts +170 -17
  102. package/dist/viewer/index.js +27 -27
  103. package/dist/viewer/index.js.br +0 -0
  104. package/dist/viewer/index.js.gz +0 -0
  105. package/dist/viewer/index.mjs +6 -6
  106. package/dist/viewer/index.mjs.br +0 -0
  107. package/dist/viewer/index.mjs.gz +0 -0
  108. package/package.json +1 -1
  109. package/dist/AiChatPanel-ITCVRVKP.mjs.br +0 -0
  110. package/dist/AiChatPanel-ITCVRVKP.mjs.gz +0 -0
  111. package/dist/AiChatPanel-TO5PHBGW.js.br +0 -0
  112. package/dist/AiChatPanel-TO5PHBGW.js.gz +0 -0
  113. package/dist/Area3DChartScene-2UNQ3J3V.js.br +0 -0
  114. package/dist/Area3DChartScene-2UNQ3J3V.js.gz +0 -0
  115. package/dist/Area3DChartScene-7PHPDOTG.mjs.br +0 -0
  116. package/dist/Area3DChartScene-7PHPDOTG.mjs.gz +0 -0
  117. package/dist/Bar3DChartScene-BLPUHYRZ.mjs.br +0 -0
  118. package/dist/Bar3DChartScene-BLPUHYRZ.mjs.gz +0 -0
  119. package/dist/Bar3DChartScene-MC5S3AGT.js.br +0 -0
  120. package/dist/Bar3DChartScene-MC5S3AGT.js.gz +0 -0
  121. package/dist/Line3DChartScene-JVVZRIDD.js.br +0 -0
  122. package/dist/Line3DChartScene-JVVZRIDD.js.gz +0 -0
  123. package/dist/Line3DChartScene-L5B4YFG3.mjs.br +0 -0
  124. package/dist/Line3DChartScene-L5B4YFG3.mjs.gz +0 -0
  125. package/dist/Model3DScene-6TNWS5LV.mjs.br +0 -0
  126. package/dist/Model3DScene-6TNWS5LV.mjs.gz +0 -0
  127. package/dist/Model3DScene-LRDNQNKJ.js.gz +0 -0
  128. package/dist/PieChart3DScene-PZWZCXHX.js.br +0 -0
  129. package/dist/PieChart3DScene-PZWZCXHX.js.gz +0 -0
  130. package/dist/PieChart3DScene-XXAIVP4I.mjs.br +0 -0
  131. package/dist/PieChart3DScene-XXAIVP4I.mjs.gz +0 -0
  132. package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.br +0 -1
  133. package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.gz +0 -0
  134. package/dist/SurfaceChart3DScene-UBQV3ZN2.js.br +0 -0
  135. package/dist/SurfaceChart3DScene-UBQV3ZN2.js.gz +0 -0
  136. package/dist/chunk-A2UAUSJM.mjs.br +0 -0
  137. package/dist/chunk-A2UAUSJM.mjs.gz +0 -0
  138. package/dist/chunk-ARJE3V6V.mjs.br +0 -0
  139. package/dist/chunk-BPWSJLLG.mjs.br +0 -0
  140. package/dist/chunk-BPWSJLLG.mjs.gz +0 -0
  141. package/dist/chunk-LGVNUG3G.js.br +0 -0
  142. package/dist/chunk-LGVNUG3G.js.gz +0 -0
  143. package/dist/chunk-LXYDXLKZ.js.br +0 -0
  144. package/dist/chunk-LXYDXLKZ.js.gz +0 -0
  145. package/dist/chunk-P3VXXUZM.mjs.br +0 -0
  146. package/dist/chunk-P3VXXUZM.mjs.gz +0 -0
  147. package/dist/chunk-QOLYY7E3.mjs.br +0 -0
  148. package/dist/chunk-QOLYY7E3.mjs.gz +0 -0
  149. package/dist/chunk-SWRY3SI5.js.br +0 -0
  150. package/dist/chunk-T2QG2HD5.js.br +0 -0
  151. package/dist/chunk-T2QG2HD5.js.gz +0 -0
  152. package/dist/chunk-XIHK52SB.mjs.br +0 -0
  153. package/dist/chunk-XIHK52SB.mjs.gz +0 -0
  154. package/dist/chunk-YDEEINER.js.br +0 -0
  155. package/dist/chunk-YDEEINER.js.gz +0 -0
  156. package/dist/chunk-ZPF4L6SD.js.br +0 -0
  157. package/dist/chunk-ZPF4L6SD.js.gz +0 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ 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
+ ## [3.1.5](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@3.1.5) - 2026-09-01
11
+
12
+ ### Chores
13
+
14
+ - **deps-dev:** Bump the minor-and-patch group with 2 updates ([#186](https://github.com/ChristopherVR/pptx-viewer/issues/186)) (by @dependabot[bot]) ([effb251](https://github.com/ChristopherVR/pptx-viewer/commit/effb2510e3a6cf633ceb3dd0c1234bb0998c275c))
15
+
10
16
  ## [3.1.4](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@3.1.4) - 2026-08-29
11
17
 
12
18
  ### Bug Fixes
@@ -1,7 +1,7 @@
1
- import { deckIdFromBridge, isAiAvailable, createAiChatSession, toolCanvasTarget, createChatHistoryStore, focusTargetChips, isTwoTableFocus, humanizeDiffLine, buildDeckContext, describeToolActivity, summarizeToolArgs, toolLabel } from './chunk-QOLYY7E3.mjs';
2
- import { cn } from './chunk-BPWSJLLG.mjs';
3
- import './chunk-XIHK52SB.mjs';
4
- import './chunk-ARJE3V6V.mjs';
1
+ import { deckIdFromBridge, isAiAvailable, createAiChatSession, toolCanvasTarget, createChatHistoryStore, focusTargetChips, isTwoTableFocus, humanizeDiffLine, buildDeckContext, describeToolActivity, summarizeToolArgs, toolLabel } from './chunk-RX6FE24O.mjs';
2
+ import { cn } from './chunk-FMEEIS6L.mjs';
3
+ import './chunk-G7UBIKAG.mjs';
4
+ import './chunk-RHSA5BW5.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 chunkLGVNUG3G_js = require('./chunk-LGVNUG3G.js');
4
- var chunkT2QG2HD5_js = require('./chunk-T2QG2HD5.js');
5
- require('./chunk-YDEEINER.js');
6
- require('./chunk-SWRY3SI5.js');
3
+ var chunkQ52HT4EZ_js = require('./chunk-Q52HT4EZ.js');
4
+ var chunkB6UIVRFA_js = require('./chunk-B6UIVRFA.js');
5
+ require('./chunk-FJDZ7AEE.js');
6
+ require('./chunk-ALO4ZOHQ.js');
7
7
  require('./chunk-4VNS5WPM.js');
8
8
  var react = require('react');
9
9
  var reactI18next = require('react-i18next');
@@ -23,7 +23,7 @@ function useAiChat(bridge, config) {
23
23
  setInitError(void 0);
24
24
  void (async () => {
25
25
  try {
26
- const available = await chunkLGVNUG3G_js.isAiAvailable();
26
+ const available = await chunkQ52HT4EZ_js.isAiAvailable();
27
27
  if (cancelled) {
28
28
  return;
29
29
  }
@@ -31,7 +31,7 @@ function useAiChat(bridge, config) {
31
31
  setState("unavailable");
32
32
  return;
33
33
  }
34
- const built = await chunkLGVNUG3G_js.createAiChatSession(bridge, configRef.current);
34
+ const built = await chunkQ52HT4EZ_js.createAiChatSession(bridge, configRef.current);
35
35
  if (cancelled) {
36
36
  return;
37
37
  }
@@ -137,7 +137,7 @@ function withDeckContext(inner, bridge, strategy) {
137
137
  }
138
138
  let context = "";
139
139
  try {
140
- context = await chunkLGVNUG3G_js.buildDeckContext(bridge, { strategy, focus: {} });
140
+ context = await chunkQ52HT4EZ_js.buildDeckContext(bridge, { strategy, focus: {} });
141
141
  } catch {
142
142
  context = "";
143
143
  }
@@ -200,7 +200,7 @@ function useAiConversation(useChat, session, config, bridge, options = {}) {
200
200
  continue;
201
201
  }
202
202
  seen.add(call.toolCallId);
203
- onToolTargetRef.current?.(chunkLGVNUG3G_js.toolCanvasTarget(call.toolName, call.input));
203
+ onToolTargetRef.current?.(chunkQ52HT4EZ_js.toolCanvasTarget(call.toolName, call.input));
204
204
  }
205
205
  }, [chat.messages]);
206
206
  const send = react.useCallback(
@@ -276,7 +276,7 @@ function deriveTitle(messages) {
276
276
  }
277
277
  function useAiHistory(input) {
278
278
  const { deckId, messages, setMessages } = input;
279
- const store = react.useMemo(() => input.store ?? chunkLGVNUG3G_js.createChatHistoryStore(), [input.store]);
279
+ const store = react.useMemo(() => input.store ?? chunkQ52HT4EZ_js.createChatHistoryStore(), [input.store]);
280
280
  const [activeChatId, setActiveChatId] = react.useState(newChatId);
281
281
  const [chats, setChats] = react.useState([]);
282
282
  const createdAtRef = react.useRef(Date.now());
@@ -419,7 +419,7 @@ function AiComposer({
419
419
  disabled: value.trim().length === 0,
420
420
  title: t("pptx.ai.send"),
421
421
  "aria-label": t("pptx.ai.send"),
422
- className: chunkT2QG2HD5_js.cn(
422
+ className: chunkB6UIVRFA_js.cn(
423
423
  "shrink-0 rounded-sm p-1.5 transition-colors",
424
424
  value.trim().length === 0 ? "text-muted-foreground/50" : "bg-primary text-primary-foreground hover:bg-primary/90"
425
425
  ),
@@ -445,15 +445,15 @@ function AiFocusBar({
445
445
  onClearPicks
446
446
  }) {
447
447
  const { t } = reactI18next.useTranslation();
448
- const chips = chunkLGVNUG3G_js.focusTargetChips(targets, slides);
449
- const twoTables = chunkLGVNUG3G_js.isTwoTableFocus(targets, slides);
448
+ const chips = chunkQ52HT4EZ_js.focusTargetChips(targets, slides);
449
+ const twoTables = chunkQ52HT4EZ_js.isTwoTableFocus(targets, slides);
450
450
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border bg-secondary/30", children: [
451
451
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1 px-2.5 py-1.5", children: [
452
452
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wide text-muted-foreground", children: t("pptx.ai.focusScope") }),
453
453
  chips.map((chip) => /* @__PURE__ */ jsxRuntime.jsx(
454
454
  "span",
455
455
  {
456
- className: chunkT2QG2HD5_js.cn(
456
+ className: chunkB6UIVRFA_js.cn(
457
457
  "inline-flex max-w-[10rem] items-center rounded-full px-2 py-0.5 text-[11px]",
458
458
  hasPicks || isPinned ? "bg-primary/15 text-primary" : "bg-muted text-muted-foreground"
459
459
  ),
@@ -486,7 +486,7 @@ function AiFocusBar({
486
486
  title: t("pptx.ai.pickElement"),
487
487
  "aria-label": t("pptx.ai.pickAria"),
488
488
  "aria-pressed": pickMode,
489
- className: chunkT2QG2HD5_js.cn(
489
+ className: chunkB6UIVRFA_js.cn(
490
490
  "rounded-sm p-1",
491
491
  pickMode ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-accent"
492
492
  ),
@@ -565,7 +565,7 @@ function AiHistoryList({ chats, activeChatId, onResume, onDelete }) {
565
565
  {
566
566
  type: "button",
567
567
  onClick: () => onResume(chat.id),
568
- className: chunkT2QG2HD5_js.cn(
568
+ className: chunkB6UIVRFA_js.cn(
569
569
  "flex min-w-0 flex-1 items-start gap-2 rounded-sm px-2 py-1.5 text-left hover:bg-accent",
570
570
  chat.id === activeChatId && "bg-accent/60"
571
571
  ),
@@ -720,26 +720,26 @@ function AiToolCallCard({ part }) {
720
720
  const failed = part.state === "output-error";
721
721
  const done = part.state === "output-available";
722
722
  const running = !failed && !done;
723
- const activity = chunkLGVNUG3G_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
723
+ const activity = chunkQ52HT4EZ_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
724
724
  const Icon = ICONS[activity.icon] ?? lu.LuWrench;
725
- const rawSummary = chunkLGVNUG3G_js.summarizeToolArgs(part.input);
725
+ const rawSummary = chunkQ52HT4EZ_js.summarizeToolArgs(part.input);
726
726
  const statusLabel = failed ? t("pptx.ai.toolFailed") : done ? t("pptx.ai.toolDone") : t("pptx.ai.toolRunning");
727
727
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[12px]", children: [
728
728
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
729
729
  /* @__PURE__ */ jsxRuntime.jsx(
730
730
  Icon,
731
731
  {
732
- className: chunkT2QG2HD5_js.cn(
732
+ className: chunkB6UIVRFA_js.cn(
733
733
  "w-3.5 h-3.5 shrink-0",
734
734
  failed ? "text-destructive" : "text-muted-foreground"
735
735
  )
736
736
  }
737
737
  ),
738
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkT2QG2HD5_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
738
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkB6UIVRFA_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
739
739
  /* @__PURE__ */ jsxRuntime.jsxs(
740
740
  "span",
741
741
  {
742
- className: chunkT2QG2HD5_js.cn(
742
+ className: chunkB6UIVRFA_js.cn(
743
743
  "ml-auto inline-flex items-center gap-1 rounded-sm px-1.5 py-0.5 text-[10px]",
744
744
  failed ? "bg-destructive/15 text-destructive" : done ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"
745
745
  ),
@@ -756,7 +756,7 @@ function AiToolCallCard({ part }) {
756
756
  rawSummary && /* @__PURE__ */ jsxRuntime.jsxs("details", { className: "group mt-0.5 pl-5", children: [
757
757
  /* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer list-none text-[10px] text-muted-foreground/70 hover:text-muted-foreground", children: t("pptx.ai.toolDetails") }),
758
758
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-0.5 break-words font-mono text-[10px] text-muted-foreground/80", children: [
759
- chunkLGVNUG3G_js.toolLabel(part.toolName),
759
+ chunkQ52HT4EZ_js.toolLabel(part.toolName),
760
760
  ": ",
761
761
  rawSummary
762
762
  ] })
@@ -787,7 +787,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
787
787
  /* @__PURE__ */ jsxRuntime.jsx(
788
788
  "div",
789
789
  {
790
- className: chunkT2QG2HD5_js.cn(
790
+ className: chunkB6UIVRFA_js.cn(
791
791
  "mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full",
792
792
  isUser ? "bg-secondary text-muted-foreground" : "bg-primary/15 text-primary"
793
793
  ),
@@ -834,7 +834,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
834
834
  }
835
835
  function AiProposalCard({ proposal, onAccept, onReject }) {
836
836
  const { t } = reactI18next.useTranslation();
837
- const lines = proposal.summary.map(chunkLGVNUG3G_js.humanizeDiffLine);
837
+ const lines = proposal.summary.map(chunkQ52HT4EZ_js.humanizeDiffLine);
838
838
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-primary/40 bg-primary/5 p-2.5", children: [
839
839
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1.5 text-[11px] font-semibold uppercase tracking-wide text-primary", children: t("pptx.ai.proposedChange") }),
840
840
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[12px] font-medium text-foreground", children: proposal.label }),
@@ -1042,7 +1042,7 @@ function AiChatPanel({
1042
1042
  }) {
1043
1043
  const { t } = reactI18next.useTranslation();
1044
1044
  const { state, session, initError } = useAiChat(bridge, config);
1045
- const deckId = react.useMemo(() => chunkLGVNUG3G_js.deckIdFromBridge(bridge), [bridge]);
1045
+ const deckId = react.useMemo(() => chunkQ52HT4EZ_js.deckIdFromBridge(bridge), [bridge]);
1046
1046
  return /* @__PURE__ */ jsxRuntime.jsxs(
1047
1047
  "div",
1048
1048
  {
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYDEEINER_js = require('./chunk-YDEEINER.js');
3
+ var chunkFJDZ7AEE_js = require('./chunk-FJDZ7AEE.js');
4
4
  require('./chunk-4VNS5WPM.js');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -14,7 +14,7 @@ function Area3DChartScene({ options }) {
14
14
  return;
15
15
  }
16
16
  let disposed = false;
17
- void chunkYDEEINER_js.mountAreaChart3D(container, options).then((handle) => {
17
+ void chunkFJDZ7AEE_js.mountAreaChart3D(container, options).then((handle) => {
18
18
  if (disposed) {
19
19
  handle.dispose();
20
20
  } else {
@@ -1,4 +1,4 @@
1
- import { mountAreaChart3D } from './chunk-XIHK52SB.mjs';
1
+ import { mountAreaChart3D } from './chunk-G7UBIKAG.mjs';
2
2
  import './chunk-XGB3TDIC.mjs';
3
3
  import { useRef, useEffect } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -0,0 +1,3 @@
1
+ [ "���_SM����@~��B�$����:p��n&�n�hK�d�ڨ-��1�ը�K^�M:���:��|:$~�8]��v�(�Z�J-Srn�'KL+���������_\N��djb�GL[/�=�6�-�|וxp/[A-l�\$�З��1'�A�?����録��dJBO||�b8xQ�7 �"�H$����$x�� ~ N���?��O�c=9�琛�?��2���m �Ю��RG J��ZM?�Z��kQ�;{R
2
+ 6��D2��Tr�[GE�s"]Bmr^ܳx��͖��g3���cg�? ����M6��}�,�:͚Pq�$ެ���J��k[�������
3
+ �m��Zp�hr�g���3?'+T�
@@ -1,4 +1,4 @@
1
- import { mountBarChart3D } from './chunk-XIHK52SB.mjs';
1
+ import { mountBarChart3D } from './chunk-G7UBIKAG.mjs';
2
2
  import './chunk-XGB3TDIC.mjs';
3
3
  import { useRef, useEffect } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYDEEINER_js = require('./chunk-YDEEINER.js');
3
+ var chunkFJDZ7AEE_js = require('./chunk-FJDZ7AEE.js');
4
4
  require('./chunk-4VNS5WPM.js');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -14,7 +14,7 @@ function Bar3DChartScene({ options }) {
14
14
  return;
15
15
  }
16
16
  let disposed = false;
17
- void chunkYDEEINER_js.mountBarChart3D(container, options).then((handle) => {
17
+ void chunkFJDZ7AEE_js.mountBarChart3D(container, options).then((handle) => {
18
18
  if (disposed) {
19
19
  handle.dispose();
20
20
  } else {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYDEEINER_js = require('./chunk-YDEEINER.js');
3
+ var chunkFJDZ7AEE_js = require('./chunk-FJDZ7AEE.js');
4
4
  require('./chunk-4VNS5WPM.js');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -14,7 +14,7 @@ function Line3DChartScene({ options }) {
14
14
  return;
15
15
  }
16
16
  let disposed = false;
17
- void chunkYDEEINER_js.mountLineChart3D(container, options).then((handle) => {
17
+ void chunkFJDZ7AEE_js.mountLineChart3D(container, options).then((handle) => {
18
18
  if (disposed) {
19
19
  handle.dispose();
20
20
  } else {
@@ -1,4 +1,4 @@
1
- import { mountLineChart3D } from './chunk-XIHK52SB.mjs';
1
+ import { mountLineChart3D } from './chunk-G7UBIKAG.mjs';
2
2
  import './chunk-XGB3TDIC.mjs';
3
3
  import { useRef, useEffect } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -0,0 +1,3 @@
1
+ [ "���_SM����@~��B�$����:p��n&�n�hK�d�ڨ-��1�ը�K^�M*���:��|:$~�8]��v�(�Z�J-Srn�'KL+���������_\N��djb�GL[/�=�6�-�|וxp/[A-l�\$�З��1'�A�?����録��dJBO||�b8xQ�7 �"�H$����$x�� ~ N���?��O�c=9�琛�?��2���m �Ю��RG J��ZM?�Z��kQ�;{R
2
+ 6��D2��Tr�[GE�s"]Bmr^ܳx��͖��g3���cg�? y���M6��}�,�:͚Pq�$ެ���J��k[�������
3
+ �m��Zp�hr�g���3?'+T�
@@ -1,4 +1,4 @@
1
- import { mountModel3D } from './chunk-XIHK52SB.mjs';
1
+ import { mountModel3D } from './chunk-G7UBIKAG.mjs';
2
2
  import './chunk-XGB3TDIC.mjs';
3
3
  import { useRef, useEffect } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYDEEINER_js = require('./chunk-YDEEINER.js');
3
+ var chunkFJDZ7AEE_js = require('./chunk-FJDZ7AEE.js');
4
4
  require('./chunk-4VNS5WPM.js');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -14,7 +14,7 @@ function Model3DScene({ modelUrl, interactive, width, height }) {
14
14
  return;
15
15
  }
16
16
  let disposed = false;
17
- void chunkYDEEINER_js.mountModel3D(container, modelUrl, { width, height, interactive }).then((handle) => {
17
+ void chunkFJDZ7AEE_js.mountModel3D(container, modelUrl, { width, height, interactive }).then((handle) => {
18
18
  if (disposed) {
19
19
  handle.dispose();
20
20
  } else {
Binary file
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYDEEINER_js = require('./chunk-YDEEINER.js');
3
+ var chunkFJDZ7AEE_js = require('./chunk-FJDZ7AEE.js');
4
4
  require('./chunk-4VNS5WPM.js');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -14,7 +14,7 @@ function PieChart3DScene({ options }) {
14
14
  return;
15
15
  }
16
16
  let disposed = false;
17
- void chunkYDEEINER_js.mountPieChart3D(container, options).then((handle) => {
17
+ void chunkFJDZ7AEE_js.mountPieChart3D(container, options).then((handle) => {
18
18
  if (disposed) {
19
19
  handle.dispose();
20
20
  } else {
@@ -1,4 +1,4 @@
1
- import { mountPieChart3D } from './chunk-XIHK52SB.mjs';
1
+ import { mountPieChart3D } from './chunk-G7UBIKAG.mjs';
2
2
  import './chunk-XGB3TDIC.mjs';
3
3
  import { useRef, useEffect } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYDEEINER_js = require('./chunk-YDEEINER.js');
3
+ var chunkFJDZ7AEE_js = require('./chunk-FJDZ7AEE.js');
4
4
  require('./chunk-4VNS5WPM.js');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -16,7 +16,7 @@ function SurfaceChart3DScene({
16
16
  return;
17
17
  }
18
18
  let disposed = false;
19
- void chunkYDEEINER_js.mountSurfaceChart3D(container, options).then((handle) => {
19
+ void chunkFJDZ7AEE_js.mountSurfaceChart3D(container, options).then((handle) => {
20
20
  if (disposed) {
21
21
  handle.dispose();
22
22
  } else {
@@ -1,4 +1,4 @@
1
- import { mountSurfaceChart3D } from './chunk-XIHK52SB.mjs';
1
+ import { mountSurfaceChart3D } from './chunk-G7UBIKAG.mjs';
2
2
  import './chunk-XGB3TDIC.mjs';
3
3
  import { useRef, useEffect } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -3626,7 +3626,52 @@ var translationsEn = {
3626
3626
  "pptx.transitionPresets.pageCurlDouble": "Page Curl Double",
3627
3627
  "pptx.transitionPresets.pageCurlSingle": "Page Curl Single",
3628
3628
  "pptx.transitionPresets.airplane": "Airplane",
3629
- "pptx.transitionPresets.origami": "Origami"
3629
+ "pptx.transitionPresets.origami": "Origami",
3630
+ // Write-protection recommendation (presentation parity wave 2)
3631
+ "pptx.readOnly.modifyVerifierRecommended": "This presentation is password-protected. Opened read-only until the password is provided.",
3632
+ "pptx.readOnly.markedFinal": "This presentation was marked as final by its author. Opened read-only to discourage editing.",
3633
+ // Compatibility warning toasts (presentation parity wave 2)
3634
+ "pptx.compatibility.generic": "This presentation contains a feature that may not be fully supported ({{code}}).",
3635
+ "pptx.compatibility.unmodelledPresentationMarkup": "Some presentation-level settings are preserved but not editable in this viewer.",
3636
+ "pptx.compatibility.unmodelledSlideMarkup": "Some slide-level settings are preserved but not editable in this viewer.",
3637
+ "pptx.compatibility.unmodelledShapeProperty": "Some shape properties are preserved but not editable in this viewer.",
3638
+ "pptx.compatibility.unmodelledTextBodyMarkup": "Some text formatting is preserved but not editable in this viewer.",
3639
+ "pptx.compatibility.unmodelledBlipFillMarkup": "Some picture fill settings are preserved but not editable in this viewer.",
3640
+ "pptx.compatibility.unmodelledImageEffect": "Some image effects are preserved but not rendered in this viewer.",
3641
+ "pptx.compatibility.externalImageReference": "This presentation links to an image outside the file, which may not load for other people.",
3642
+ "pptx.compatibility.slideSynchronizationMetadata": "This slide is linked to another presentation for synchronization; that link is preserved but not applied here.",
3643
+ "pptx.compatibility.unsupportedAlternateContentChoice": "This presentation uses a newer PowerPoint feature; a compatible fallback was used instead.",
3644
+ "pptx.compatibility.groupDepthExceeded": "A group of shapes is nested more deeply than this viewer supports and was flattened.",
3645
+ "pptx.compatibility.saveNotesRelationshipMissing": "Speaker notes could not be linked to this slide when saving.",
3646
+ "pptx.compatibility.saveNotesPartMissing": "Speaker notes could not be saved for this slide.",
3647
+ "pptx.compatibility.saveNotesUpdateSkipped": "Changes to speaker notes were not saved for this slide.",
3648
+ "pptx.compatibility.chartExternalDataWritebackUnsupported": "This chart uses external data that cannot be updated by this viewer.",
3649
+ "pptx.compatibility.chartEmbeddedWorkbookMissing": "This chart's embedded data workbook is missing, so its data could not be saved.",
3650
+ "pptx.compatibility.chartEmbeddedWorkbookUnreadable": "This chart's embedded data workbook could not be read, so its data could not be saved.",
3651
+ "pptx.compatibility.chartEmbeddedWorkbookPartialWriteback": "Only some of this chart's data changes could be saved to its embedded workbook.",
3652
+ "pptx.compatibility.saveImagePayloadUnsupported": "One image could not be saved in its original format and was skipped.",
3653
+ "pptx.compatibility.saveMediaPayloadUnsupported": "One audio or video clip could not be saved in its original format and was skipped.",
3654
+ "pptx.compatibility.saveElementSkipped": "One slide element could not be saved and was skipped.",
3655
+ "pptx.compatibility.saveSignaturesStripped": "This presentation had digital signatures, which are removed once the file is edited and saved.",
3656
+ "pptx.compatibility.saveGroupChildSkipped": "One shape inside a group could not be saved and was skipped.",
3657
+ "pptx.compatibility.saveAnimationSoundPayloadUnsupported": "One animation sound could not be saved and was skipped.",
3658
+ "pptx.compatibility.saveBackgroundImageUnsupported": "One slide background image could not be saved and was skipped.",
3659
+ "pptx.compatibility.shapeIdDeduplicated": "Two shapes shared the same internal id; one was reassigned automatically.",
3660
+ "pptx.compatibility.saveTransitionSoundPayloadUnsupported": "One slide transition sound could not be saved and was skipped.",
3661
+ "pptx.compatibility.diagramRelationshipIdsIncomplete": "This SmartArt diagram is missing some internal references, so it may not display exactly as authored.",
3662
+ "pptx.compatibility.exportBackendUnavailable": "Export to this format is not available in the current environment.",
3663
+ // bar3D shape / radar style / surface wireframe pickers (chart subtypes wave 2)
3664
+ "pptx.chart.bar3DShapeBox": "Box",
3665
+ "pptx.chart.bar3DShapeCylinder": "Cylinder",
3666
+ "pptx.chart.bar3DShapeFullPyramid": "Full Pyramid",
3667
+ "pptx.chart.bar3DShapePartialPyramid": "Partial Pyramid",
3668
+ "pptx.chart.bar3DShapeFullCone": "Full Cone",
3669
+ "pptx.chart.bar3DShapePartialCone": "Partial Cone",
3670
+ "pptx.chart.radarStyleStandard": "Standard",
3671
+ "pptx.chart.radarStyleMarker": "Markers",
3672
+ "pptx.chart.radarStyleFilled": "Filled",
3673
+ "pptx.chart.wireframeOn": "Wireframe",
3674
+ "pptx.chart.wireframeOff": "Solid"
3630
3675
  };
3631
3676
  function keyToLabel(key) {
3632
3677
  const last = key.split(".").pop() ?? key;
Binary file