pptx-react-viewer 2.20.5 → 2.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/{AiChatPanel-AYS6SCSC.mjs → AiChatPanel-E4NQEMEI.mjs} +4 -4
  3. package/dist/AiChatPanel-E4NQEMEI.mjs.br +0 -0
  4. package/dist/AiChatPanel-E4NQEMEI.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-3H5WGSM5.js → AiChatPanel-VKR2IFFC.js} +24 -24
  6. package/dist/AiChatPanel-VKR2IFFC.js.br +0 -0
  7. package/dist/AiChatPanel-VKR2IFFC.js.gz +0 -0
  8. package/dist/{Model3DScene-QQQEABW7.mjs → Model3DScene-65J6IE5Q.mjs} +1 -1
  9. package/dist/Model3DScene-65J6IE5Q.mjs.br +0 -0
  10. package/dist/Model3DScene-65J6IE5Q.mjs.gz +0 -0
  11. package/dist/{Model3DScene-6OVVKUSF.js → Model3DScene-JZKLB5YT.js} +2 -2
  12. package/dist/Model3DScene-JZKLB5YT.js.br +0 -0
  13. package/dist/Model3DScene-JZKLB5YT.js.gz +0 -0
  14. package/dist/{chunk-ZVFTYICH.mjs → chunk-2SNHVHHB.mjs} +7 -10
  15. package/dist/chunk-2SNHVHHB.mjs.br +0 -0
  16. package/dist/chunk-2SNHVHHB.mjs.gz +0 -0
  17. package/dist/{chunk-2LOKAZHT.js → chunk-C3JR7RMW.js} +3 -3
  18. package/dist/chunk-C3JR7RMW.js.br +0 -0
  19. package/dist/chunk-C3JR7RMW.js.gz +0 -0
  20. package/dist/{chunk-BSOTRNVG.mjs → chunk-CBGTLSY7.mjs} +34 -60
  21. package/dist/chunk-CBGTLSY7.mjs.br +0 -0
  22. package/dist/chunk-CBGTLSY7.mjs.gz +0 -0
  23. package/dist/{chunk-ETJBX4YT.js → chunk-DA6DF3EU.js} +156 -156
  24. package/dist/chunk-DA6DF3EU.js.br +0 -0
  25. package/dist/chunk-DA6DF3EU.js.gz +0 -0
  26. package/dist/{chunk-62EM4JYP.js → chunk-GJHO6HPF.js} +391 -395
  27. package/dist/chunk-GJHO6HPF.js.br +0 -0
  28. package/dist/chunk-GJHO6HPF.js.gz +0 -0
  29. package/dist/{chunk-BQJU7ZG6.js → chunk-HYUJVSQJ.js} +539 -214
  30. package/dist/chunk-HYUJVSQJ.js.br +0 -0
  31. package/dist/chunk-HYUJVSQJ.js.gz +0 -0
  32. package/dist/{chunk-MZOZNBRO.mjs → chunk-L5MNLIQF.mjs} +3 -0
  33. package/dist/chunk-L5MNLIQF.mjs.br +0 -0
  34. package/dist/chunk-L5MNLIQF.mjs.gz +0 -0
  35. package/dist/{chunk-JYVQ2MTO.js → chunk-OSPNGQF3.js} +1072 -1098
  36. package/dist/chunk-OSPNGQF3.js.br +0 -0
  37. package/dist/chunk-OSPNGQF3.js.gz +0 -0
  38. package/dist/{chunk-6CPUGAK7.js → chunk-U6A5FWWE.js} +3 -0
  39. package/dist/chunk-U6A5FWWE.js.br +0 -0
  40. package/dist/chunk-U6A5FWWE.js.gz +0 -0
  41. package/dist/{chunk-ULBSTLY3.mjs → chunk-VWCUKKR3.mjs} +537 -213
  42. package/dist/chunk-VWCUKKR3.mjs.br +0 -0
  43. package/dist/chunk-VWCUKKR3.mjs.gz +0 -0
  44. package/dist/{chunk-DIJWZ6ZS.mjs → chunk-WRJ76D5S.mjs} +1 -1
  45. package/dist/chunk-WRJ76D5S.mjs.br +0 -0
  46. package/dist/chunk-WRJ76D5S.mjs.gz +0 -0
  47. package/dist/{chunk-PBFNE5X5.mjs → chunk-WX3HQHR5.mjs} +2 -2
  48. package/dist/chunk-WX3HQHR5.mjs.br +0 -0
  49. package/dist/chunk-WX3HQHR5.mjs.gz +0 -0
  50. package/dist/i18n.js +4 -4
  51. package/dist/i18n.js.br +0 -0
  52. package/dist/i18n.js.gz +0 -0
  53. package/dist/i18n.mjs +1 -1
  54. package/dist/i18n.mjs.br +0 -0
  55. package/dist/i18n.mjs.gz +0 -0
  56. package/dist/index.d.ts +9 -0
  57. package/dist/index.js +47 -47
  58. package/dist/index.js.br +0 -0
  59. package/dist/index.js.gz +0 -0
  60. package/dist/index.mjs +6 -6
  61. package/dist/index.mjs.br +0 -0
  62. package/dist/index.mjs.gz +0 -0
  63. package/dist/internals.d.ts +9 -0
  64. package/dist/internals.js +79 -79
  65. package/dist/internals.js.br +0 -0
  66. package/dist/internals.js.gz +0 -0
  67. package/dist/internals.mjs +4 -4
  68. package/dist/internals.mjs.br +0 -0
  69. package/dist/internals.mjs.gz +0 -0
  70. package/dist/viewer/index.d.ts +9 -0
  71. package/dist/viewer/index.js +27 -27
  72. package/dist/viewer/index.js.br +0 -0
  73. package/dist/viewer/index.js.gz +0 -0
  74. package/dist/viewer/index.mjs +6 -6
  75. package/dist/viewer/index.mjs.br +0 -0
  76. package/dist/viewer/index.mjs.gz +0 -0
  77. package/package.json +1 -1
  78. package/dist/AiChatPanel-3H5WGSM5.js.br +0 -0
  79. package/dist/AiChatPanel-3H5WGSM5.js.gz +0 -0
  80. package/dist/AiChatPanel-AYS6SCSC.mjs.br +0 -0
  81. package/dist/AiChatPanel-AYS6SCSC.mjs.gz +0 -0
  82. package/dist/Model3DScene-6OVVKUSF.js.br +0 -0
  83. package/dist/Model3DScene-6OVVKUSF.js.gz +0 -0
  84. package/dist/Model3DScene-QQQEABW7.mjs.br +0 -0
  85. package/dist/Model3DScene-QQQEABW7.mjs.gz +0 -0
  86. package/dist/chunk-2LOKAZHT.js.br +0 -0
  87. package/dist/chunk-2LOKAZHT.js.gz +0 -0
  88. package/dist/chunk-62EM4JYP.js.br +0 -0
  89. package/dist/chunk-62EM4JYP.js.gz +0 -0
  90. package/dist/chunk-6CPUGAK7.js.br +0 -0
  91. package/dist/chunk-6CPUGAK7.js.gz +0 -0
  92. package/dist/chunk-BQJU7ZG6.js.br +0 -0
  93. package/dist/chunk-BQJU7ZG6.js.gz +0 -0
  94. package/dist/chunk-BSOTRNVG.mjs.br +0 -0
  95. package/dist/chunk-BSOTRNVG.mjs.gz +0 -0
  96. package/dist/chunk-DIJWZ6ZS.mjs.br +0 -0
  97. package/dist/chunk-DIJWZ6ZS.mjs.gz +0 -0
  98. package/dist/chunk-ETJBX4YT.js.br +0 -0
  99. package/dist/chunk-ETJBX4YT.js.gz +0 -0
  100. package/dist/chunk-JYVQ2MTO.js.br +0 -0
  101. package/dist/chunk-JYVQ2MTO.js.gz +0 -0
  102. package/dist/chunk-MZOZNBRO.mjs.br +0 -0
  103. package/dist/chunk-MZOZNBRO.mjs.gz +0 -0
  104. package/dist/chunk-PBFNE5X5.mjs.br +0 -0
  105. package/dist/chunk-PBFNE5X5.mjs.gz +0 -0
  106. package/dist/chunk-ULBSTLY3.mjs.br +0 -0
  107. package/dist/chunk-ULBSTLY3.mjs.gz +0 -0
  108. package/dist/chunk-ZVFTYICH.mjs.br +0 -0
  109. package/dist/chunk-ZVFTYICH.mjs.gz +0 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,35 @@ 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
+ ## [2.21.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@2.21.0) - 2026-08-21
11
+
12
+ ### Features
13
+
14
+ - **shared:** Add header-footer dialog draft helpers (by @ChristopherVR) ([0f640c8](https://github.com/ChristopherVR/pptx-viewer/commit/0f640c887c4d6447d2a6cbba2754049cec69e121))
15
+ - **shared:** Add classifyMediaType, the audio/video MIME classifier (by @ChristopherVR) ([56520a1](https://github.com/ChristopherVR/pptx-viewer/commit/56520a1138f342b2e4e33ff5bbedb64f5a8ca9e4))
16
+ - **shared:** Add resolveTemplateBackgroundRows for the template background card (by @ChristopherVR) ([67d327d](https://github.com/ChristopherVR/pptx-viewer/commit/67d327d737a06b7ca737feffb01d9afe637c108f))
17
+ - **shared:** Add patchChartData, the type-aware chart data patcher (by @ChristopherVR) ([5309296](https://github.com/ChristopherVR/pptx-viewer/commit/5309296df312affd6c9f9994cc7e4612310d8119))
18
+ - **shared:** Add pptx.group.childCount/groupedElement i18n keys (by @ChristopherVR) ([f5557e1](https://github.com/ChristopherVR/pptx-viewer/commit/f5557e1ac1ef74af4306cf81cd2c08c8b61dd960))
19
+
20
+ ### Bug Fixes
21
+
22
+ - **shared:** Sanitize every download filename, not just callers that remember to (by @ChristopherVR) ([7bdf73b](https://github.com/ChristopherVR/pptx-viewer/commit/7bdf73be98ae30b4664067a52b1611878d7d97b3))
23
+ - **shared:** Floor animation timeline bar width to a visible minimum (by @ChristopherVR) ([918ac2f](https://github.com/ChristopherVR/pptx-viewer/commit/918ac2f5a50d11fb1ad7e015956794f9cd44dfee))
24
+ - **react:** Route GroupInfoPanel text through t(), not hardcoded English (by @ChristopherVR) ([48cc85f](https://github.com/ChristopherVR/pptx-viewer/commit/48cc85f4b3b42d49bbdb321ab02191b8a7d1332a))
25
+
26
+ ### Refactor
27
+
28
+ - **react:** Drop now-redundant local download-sanitization wrapper (by @ChristopherVR) ([7b5e6a1](https://github.com/ChristopherVR/pptx-viewer/commit/7b5e6a1508a6b42b50165fd47eef5d7ee49b89bc))
29
+ - **react,vue,svelte,vanilla:** Repoint media-type check onto shared (by @ChristopherVR) ([bb8e95c](https://github.com/ChristopherVR/pptx-viewer/commit/bb8e95c810e2fd709e12f21d5b073b179e1dbf52))
30
+ - **react:** Repoint template background card onto shared row resolver (by @ChristopherVR) ([b27fd04](https://github.com/ChristopherVR/pptx-viewer/commit/b27fd04a1514377fca139b91b8c079ea3cf7ceec))
31
+ - **react:** Repoint chart type-change patch onto shared patchChartData (by @ChristopherVR) ([9a97113](https://github.com/ChristopherVR/pptx-viewer/commit/9a971139a5acd0ec7cf7e87b73b1f59e9a55f100))
32
+
33
+ ## [2.20.5](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@2.20.5) - 2026-08-21
34
+
35
+ ### Bug Fixes
36
+
37
+ - **core:** Parse full custom geometry on pictures, not just path data (by @ChristopherVR) ([b6cbef6](https://github.com/ChristopherVR/pptx-viewer/commit/b6cbef64296fade4b1a0c77c32847e68ea0a18c5))
38
+
10
39
  ## [2.20.4](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@2.20.4) - 2026-08-20
11
40
 
12
41
  ### Bug Fixes
@@ -1,7 +1,7 @@
1
- import { deckIdFromBridge, isAiAvailable, createAiChatSession, toolCanvasTarget, createChatHistoryStore, focusTargetChips, isTwoTableFocus, humanizeDiffLine, buildDeckContext, describeToolActivity, summarizeToolArgs, toolLabel } from './chunk-DIJWZ6ZS.mjs';
2
- import { cn } from './chunk-PBFNE5X5.mjs';
3
- import './chunk-MZOZNBRO.mjs';
4
- import './chunk-ULBSTLY3.mjs';
1
+ import { deckIdFromBridge, isAiAvailable, createAiChatSession, toolCanvasTarget, createChatHistoryStore, focusTargetChips, isTwoTableFocus, humanizeDiffLine, buildDeckContext, describeToolActivity, summarizeToolArgs, toolLabel } from './chunk-WRJ76D5S.mjs';
2
+ import { cn } from './chunk-WX3HQHR5.mjs';
3
+ import './chunk-L5MNLIQF.mjs';
4
+ import './chunk-VWCUKKR3.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 chunk2LOKAZHT_js = require('./chunk-2LOKAZHT.js');
4
- var chunkETJBX4YT_js = require('./chunk-ETJBX4YT.js');
5
- require('./chunk-6CPUGAK7.js');
6
- require('./chunk-BQJU7ZG6.js');
3
+ var chunkC3JR7RMW_js = require('./chunk-C3JR7RMW.js');
4
+ var chunkDA6DF3EU_js = require('./chunk-DA6DF3EU.js');
5
+ require('./chunk-U6A5FWWE.js');
6
+ require('./chunk-HYUJVSQJ.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 chunk2LOKAZHT_js.isAiAvailable();
26
+ const available = await chunkC3JR7RMW_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 chunk2LOKAZHT_js.createAiChatSession(bridge, configRef.current);
34
+ const built = await chunkC3JR7RMW_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 chunk2LOKAZHT_js.buildDeckContext(bridge, { strategy, focus: {} });
140
+ context = await chunkC3JR7RMW_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?.(chunk2LOKAZHT_js.toolCanvasTarget(call.toolName, call.input));
203
+ onToolTargetRef.current?.(chunkC3JR7RMW_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 ?? chunk2LOKAZHT_js.createChatHistoryStore(), [input.store]);
279
+ const store = react.useMemo(() => input.store ?? chunkC3JR7RMW_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: chunkETJBX4YT_js.cn(
422
+ className: chunkDA6DF3EU_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 = chunk2LOKAZHT_js.focusTargetChips(targets, slides);
449
- const twoTables = chunk2LOKAZHT_js.isTwoTableFocus(targets, slides);
448
+ const chips = chunkC3JR7RMW_js.focusTargetChips(targets, slides);
449
+ const twoTables = chunkC3JR7RMW_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: chunkETJBX4YT_js.cn(
456
+ className: chunkDA6DF3EU_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: chunkETJBX4YT_js.cn(
489
+ className: chunkDA6DF3EU_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: chunkETJBX4YT_js.cn(
568
+ className: chunkDA6DF3EU_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 = chunk2LOKAZHT_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
723
+ const activity = chunkC3JR7RMW_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
724
724
  const Icon = ICONS[activity.icon] ?? lu.LuWrench;
725
- const rawSummary = chunk2LOKAZHT_js.summarizeToolArgs(part.input);
725
+ const rawSummary = chunkC3JR7RMW_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: chunkETJBX4YT_js.cn(
732
+ className: chunkDA6DF3EU_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: chunkETJBX4YT_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
738
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkDA6DF3EU_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
739
739
  /* @__PURE__ */ jsxRuntime.jsxs(
740
740
  "span",
741
741
  {
742
- className: chunkETJBX4YT_js.cn(
742
+ className: chunkDA6DF3EU_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
- chunk2LOKAZHT_js.toolLabel(part.toolName),
759
+ chunkC3JR7RMW_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: chunkETJBX4YT_js.cn(
790
+ className: chunkDA6DF3EU_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(chunk2LOKAZHT_js.humanizeDiffLine);
837
+ const lines = proposal.summary.map(chunkC3JR7RMW_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(() => chunk2LOKAZHT_js.deckIdFromBridge(bridge), [bridge]);
1045
+ const deckId = react.useMemo(() => chunkC3JR7RMW_js.deckIdFromBridge(bridge), [bridge]);
1046
1046
  return /* @__PURE__ */ jsxRuntime.jsxs(
1047
1047
  "div",
1048
1048
  {
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- import { mountModel3D } from './chunk-ULBSTLY3.mjs';
1
+ import { mountModel3D } from './chunk-VWCUKKR3.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 chunkBQJU7ZG6_js = require('./chunk-BQJU7ZG6.js');
3
+ var chunkHYUJVSQJ_js = require('./chunk-HYUJVSQJ.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 chunkBQJU7ZG6_js.mountModel3D(container, modelUrl, { width, height, interactive }).then((handle) => {
17
+ void chunkHYUJVSQJ_js.mountModel3D(container, modelUrl, { width, height, interactive }).then((handle) => {
18
18
  if (disposed) {
19
19
  handle.dispose();
20
20
  } else {
Binary file
Binary file
@@ -1,6 +1,6 @@
1
- import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-PBFNE5X5.mjs';
2
- import { translationsEn } from './chunk-MZOZNBRO.mjs';
3
- import { TOOLBAR_TABS, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createPresenceProjector, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, PresentationAnimationController, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, createPresenterShowGuard, attachPresentationVisibilityPause, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, findInSlides, applyFindReplacements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, collectImagePaths, partitionTemplateElements, resolveAuthoredCustomShowId, buildInitialGuides, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, updateMasterViewElement, isTemplateElementId, hasShapeProperties, hasTextProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, downloadBlob, sanitizeDownloadFilename, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, describeFontEmbedding, mayLeaveSlideShow, stopAllPersistentAudio, remapTextToSegments, guidePxToEmu, buildSaveSlides, embeddedFontSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, shouldProbeAutosaveRecovery, probeAutosaveRecovery, acceptAutosaveRecovery, discardAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, scopeLayoutOptionsToSlide, openPptxFile, readBackstageRecentFile, isActionHidden, canInteractWithElement, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, savedPresentationFileName, generatePackageReadme, presentationBaseName, exportDeckJson, groupElements, generateElementId, makeCloneId, ungroupElements, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, firstShowSlideIndex, mapPresentationWheel, computeColorFilter, computeSlideIndices, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, runPresentationAction, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, replyToCommentInList, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, buildPrintHtmlDocument, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, setCellText, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, isPpactionUrl, parsePpactionUrl, safeOpenUrl, ACTION_BUTTON_PRESETS, elementActionToPptxAction, isUrlSafe, buildSmartArtPresetData, computeSnapToShape, publishLiveGeometry, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, applyResize, snapBoxToGrid, applyMotionPathPreset } from './chunk-ULBSTLY3.mjs';
1
+ import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-WX3HQHR5.mjs';
2
+ import { translationsEn } from './chunk-L5MNLIQF.mjs';
3
+ import { TOOLBAR_TABS, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createPresenceProjector, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, PresentationAnimationController, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, createPresenterShowGuard, attachPresentationVisibilityPause, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, findInSlides, applyFindReplacements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, collectImagePaths, partitionTemplateElements, resolveAuthoredCustomShowId, buildInitialGuides, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, updateMasterViewElement, isTemplateElementId, hasShapeProperties, hasTextProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, downloadBlob, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, describeFontEmbedding, mayLeaveSlideShow, stopAllPersistentAudio, remapTextToSegments, guidePxToEmu, buildSaveSlides, embeddedFontSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, shouldProbeAutosaveRecovery, probeAutosaveRecovery, acceptAutosaveRecovery, discardAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, scopeLayoutOptionsToSlide, openPptxFile, readBackstageRecentFile, isActionHidden, canInteractWithElement, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, savedPresentationFileName, generatePackageReadme, presentationBaseName, exportDeckJson, groupElements, generateElementId, makeCloneId, ungroupElements, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, firstShowSlideIndex, mapPresentationWheel, computeColorFilter, computeSlideIndices, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, runPresentationAction, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, replyToCommentInList, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, buildPrintHtmlDocument, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, setCellText, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, isPpactionUrl, parsePpactionUrl, safeOpenUrl, ACTION_BUTTON_PRESETS, elementActionToPptxAction, isUrlSafe, buildSmartArtPresetData, classifyMediaType, computeSnapToShape, publishLiveGeometry, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, applyResize, snapBoxToGrid, applyMotionPathPreset } from './chunk-VWCUKKR3.mjs';
4
4
  import { useRef, useState, useEffect, useCallback, useMemo, useLayoutEffect, useSyncExternalStore, useImperativeHandle } from 'react';
5
5
  import JSZip from 'jszip';
6
6
  import { useTranslation } from 'react-i18next';
@@ -5174,7 +5174,7 @@ function createFileHandlers(deps) {
5174
5174
  return;
5175
5175
  }
5176
5176
  e.target.value = "";
5177
- const mediaType = file.type.startsWith("audio/") ? "audio" : file.type.startsWith("video/") ? "video" : null;
5177
+ const mediaType = classifyMediaType(file.type);
5178
5178
  if (!mediaType) {
5179
5179
  return;
5180
5180
  }
@@ -7182,9 +7182,6 @@ function safeConfirm(message) {
7182
7182
  return false;
7183
7183
  }
7184
7184
  }
7185
- function downloadBlob2(blob, filename) {
7186
- downloadBlob(blob, sanitizeDownloadFilename(filename));
7187
- }
7188
7185
 
7189
7186
  // src/viewer/hooks/useExportHandlers.ts
7190
7187
  function useExportHandlers(input) {
@@ -7404,7 +7401,7 @@ function useExportHandlers(input) {
7404
7401
  );
7405
7402
  setExportProgress(EXPORT_ASSEMBLING_PERCENT);
7406
7403
  setExportStatusMessage("Saving file...");
7407
- downloadBlob2(blob, "presentation.webm");
7404
+ downloadBlob(blob, "presentation.webm");
7408
7405
  setExportProgress(EXPORT_DONE_PERCENT);
7409
7406
  } catch (err) {
7410
7407
  if (!isExportAbortError(err)) {
@@ -7443,7 +7440,7 @@ function useExportHandlers(input) {
7443
7440
  );
7444
7441
  setExportProgress(EXPORT_ASSEMBLING_PERCENT);
7445
7442
  setExportStatusMessage("Saving file...");
7446
- downloadBlob2(blob, "presentation.gif");
7443
+ downloadBlob(blob, "presentation.gif");
7447
7444
  setExportProgress(EXPORT_DONE_PERCENT);
7448
7445
  } catch (err) {
7449
7446
  if (!isExportAbortError(err)) {
@@ -11382,4 +11379,4 @@ function useResizablePanels() {
11382
11379
  };
11383
11380
  }
11384
11381
 
11385
- export { ACTION_VERB_MAP, MIN_TOUCH_TARGET, computeToolbarVisibility, detectTargetType, downloadBlob2 as downloadBlob, isAudienceTab, parseAudienceNonce, parseEmailUrl, parseSlideFromUrl, renderToCanvas, scopeLayoutOptionsToActiveSlide, useAnimationPlayback, useAnnotationHandlers, useAudienceMode, useAutosave, useBroadcastFollower, useCanvasInteractions, useClipboardHandlers, useCollaborationLivePatch, useCollaborativeHistory, useCollaborativeState, useComments, useContentLifecycle, useDerivedElementState, useDerivedSlideState, useDialogCustomShows, useEditorHistory, useEditorOperations, useElementManipulation, useElementOperations, useExportHandlers, useExportSaveAs, useFindReplace, useFollowMode, useFontInjection, useGroupAlignLayerHandlers, useIOHandlers, useInsertElements, useIsMobile, useKeyboardInsets, useKeyboardShortcutWiring, useKeyboardShortcuts, useLayoutSwitching, useLoadContent, useMergeShapesHandler, useModalDismissDrag, usePointerHandlers, usePresenceTracking, usePresentationAnnotations, usePresentationKeyboard, usePresentationMode, usePresentationSetup, usePresenterWindow, usePrintHandlers, usePropertyHandlers, useRecoveryDetection, useReducedMotion, useRehearsalTimings, useResizablePanels, useSectionOperations, useSerialize, useSheetDismissDrag, useSlideManagement, useSlideNavigation, useSwipeNavigation, useTableOperations, useThemeHandlers, useThemeSwitching, useToolbarVisibility, useTouchGestures, useViewerBuildingBlocks, useViewerCoreState, useViewerDialogs, useViewerIntegration, useViewerOptions, useViewerState, useViewerUIState, useVirtualizedSlides, useYjsDocumentSync, useYjsProvider, useZoomNavigation, useZoomViewport };
11382
+ export { ACTION_VERB_MAP, MIN_TOUCH_TARGET, computeToolbarVisibility, detectTargetType, isAudienceTab, parseAudienceNonce, parseEmailUrl, parseSlideFromUrl, renderToCanvas, scopeLayoutOptionsToActiveSlide, useAnimationPlayback, useAnnotationHandlers, useAudienceMode, useAutosave, useBroadcastFollower, useCanvasInteractions, useClipboardHandlers, useCollaborationLivePatch, useCollaborativeHistory, useCollaborativeState, useComments, useContentLifecycle, useDerivedElementState, useDerivedSlideState, useDialogCustomShows, useEditorHistory, useEditorOperations, useElementManipulation, useElementOperations, useExportHandlers, useExportSaveAs, useFindReplace, useFollowMode, useFontInjection, useGroupAlignLayerHandlers, useIOHandlers, useInsertElements, useIsMobile, useKeyboardInsets, useKeyboardShortcutWiring, useKeyboardShortcuts, useLayoutSwitching, useLoadContent, useMergeShapesHandler, useModalDismissDrag, usePointerHandlers, usePresenceTracking, usePresentationAnnotations, usePresentationKeyboard, usePresentationMode, usePresentationSetup, usePresenterWindow, usePrintHandlers, usePropertyHandlers, useRecoveryDetection, useReducedMotion, useRehearsalTimings, useResizablePanels, useSectionOperations, useSerialize, useSheetDismissDrag, useSlideManagement, useSlideNavigation, useSwipeNavigation, useTableOperations, useThemeHandlers, useThemeSwitching, useToolbarVisibility, useTouchGestures, useViewerBuildingBlocks, useViewerCoreState, useViewerDialogs, useViewerIntegration, useViewerOptions, useViewerState, useViewerUIState, useVirtualizedSlides, useYjsDocumentSync, useYjsProvider, useZoomNavigation, useZoomViewport };
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkBQJU7ZG6_js = require('./chunk-BQJU7ZG6.js');
3
+ var chunkHYUJVSQJ_js = require('./chunk-HYUJVSQJ.js');
4
4
  var chunk4VNS5WPM_js = require('./chunk-4VNS5WPM.js');
5
5
  var mcp = require('pptx-viewer-mcp');
6
6
  var mcpSchemas = require('pptx-viewer-mcp/schemas');
@@ -14879,7 +14879,7 @@ async function buildSlideMarkdown(slides, slideIndex2, meta3, options = {}) {
14879
14879
  };
14880
14880
  let markdown;
14881
14881
  try {
14882
- const converter = new chunkBQJU7ZG6_js.PptxMarkdownConverter(
14882
+ const converter = new chunkHYUJVSQJ_js.PptxMarkdownConverter(
14883
14883
  "",
14884
14884
  {
14885
14885
  sourceName: meta3.title ?? "deck.pptx",
@@ -15471,7 +15471,7 @@ var getTheme = (ctx) => {
15471
15471
  name: theme?.name,
15472
15472
  colorScheme: theme?.colorScheme,
15473
15473
  fontScheme: theme?.fontScheme,
15474
- availablePresets: Object.keys(chunkBQJU7ZG6_js.ThemePresets)
15474
+ availablePresets: Object.keys(chunkHYUJVSQJ_js.ThemePresets)
15475
15475
  };
15476
15476
  };
15477
15477
  var readExecutors = {
Binary file
Binary file
@@ -1,8 +1,8 @@
1
- import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-DIJWZ6ZS.mjs';
2
- import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useLayoutSwitching, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-ZVFTYICH.mjs';
3
- import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-PBFNE5X5.mjs';
4
- import { LOCALE_CATALOG, translationsEn } from './chunk-MZOZNBRO.mjs';
5
- import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, isElementActionable, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, isImageLikeElement, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, ensureChartInteractionStyles, applyChartPartHighlight, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, themeToCssVars, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, setMasterViewBackgroundColor, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, styleShadowFilter, resolveDrawingShapeNodeId, buildChromeStyle, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, advanceChartValueDrag, beginChartValueDrag, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, RIBBON_SHAPE_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, annotationOverlayZIndex, presentationInkPath, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, normalizeSegments, createPlainNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, escapeHtml2, toggleSheet, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, buildFontCatalog, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, generateTicks, rulerDragToGuidePosition, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, evenColumnWidths, redistributeColumnWidth, evenRowHeights, chartDataChangeType, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, resolveSlideSizeSelection, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, flattenTagCollections, formatCommentTimestamp, clearMotionPath, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, reorderAnimationTo, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-ULBSTLY3.mjs';
1
+ import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-WRJ76D5S.mjs';
2
+ import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useLayoutSwitching, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP } from './chunk-2SNHVHHB.mjs';
3
+ import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-WX3HQHR5.mjs';
4
+ import { LOCALE_CATALOG, translationsEn } from './chunk-L5MNLIQF.mjs';
5
+ import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, isElementActionable, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, isImageLikeElement, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, ensureChartInteractionStyles, applyChartPartHighlight, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, themeToCssVars, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, setMasterViewBackgroundColor, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, styleShadowFilter, resolveDrawingShapeNodeId, buildChromeStyle, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, advanceChartValueDrag, beginChartValueDrag, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, RIBBON_SHAPE_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, annotationOverlayZIndex, presentationInkPath, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, normalizeSegments, createPlainNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, escapeHtml2, toggleSheet, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, buildFontCatalog, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, generateTicks, rulerDragToGuidePosition, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, resolveSlideSizeSelection, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, clearMotionPath, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, reorderAnimationTo, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-VWCUKKR3.mjs';
6
6
  import React14, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, Suspense, useLayoutEffect, useContext, Fragment as Fragment$1, useDeferredValue } from 'react';
7
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
8
8
  import { useTranslation } from 'react-i18next';
@@ -2546,7 +2546,7 @@ function FailedToLoad() {
2546
2546
  var LazyModel3DScene = React14.lazy(
2547
2547
  async () => {
2548
2548
  try {
2549
- return await import('./Model3DScene-QQQEABW7.mjs');
2549
+ return await import('./Model3DScene-65J6IE5Q.mjs');
2550
2550
  } catch {
2551
2551
  return { default: FailedToLoad };
2552
2552
  }
@@ -5745,7 +5745,7 @@ function AccountPage() {
5745
5745
  return void 0;
5746
5746
  });
5747
5747
  };
5748
- const version = "2.20.4" ;
5748
+ const version = "2.21.0" ;
5749
5749
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
5750
5750
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
5751
5751
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -21436,17 +21436,9 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
21436
21436
  if (!chartData) {
21437
21437
  return;
21438
21438
  }
21439
- if (patch.chartType && patch.chartType !== chartData.chartType) {
21440
- const adapted = chartDataChangeType(chartData, patch.chartType);
21441
- const { chartType: _ct, ...rest } = patch;
21442
- replaceChartData({ ...adapted, ...rest });
21443
- return;
21444
- }
21445
- onUpdateElement({
21446
- chartData: { ...chartData, ...patch }
21447
- });
21439
+ replaceChartData(patchChartData(chartData, patch));
21448
21440
  },
21449
- [chartData, onUpdateElement, replaceChartData]
21441
+ [chartData, replaceChartData]
21450
21442
  );
21451
21443
  const updateStyle = useCallback(
21452
21444
  (patch) => {
@@ -21837,13 +21829,14 @@ function ConnectorPanel({
21837
21829
  function GroupInfoPanel({
21838
21830
  selectedElement
21839
21831
  }) {
21832
+ const { t } = useTranslation();
21840
21833
  if (selectedElement.type !== "group") {
21841
21834
  return null;
21842
21835
  }
21843
21836
  const group = selectedElement;
21844
21837
  return /* @__PURE__ */ jsxs("div", { className: CARD, children: [
21845
- /* @__PURE__ */ jsx("div", { className: HEADING, children: "Group" }),
21846
- /* @__PURE__ */ jsx("div", { className: "text-[11px] text-muted-foreground", children: Array.isArray(group.children) ? `${group.children.length} children` : "Grouped element" })
21838
+ /* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.elementType.group") }),
21839
+ /* @__PURE__ */ jsx("div", { className: "text-[11px] text-muted-foreground", children: Array.isArray(group.children) ? t("pptx.group.childCount", { count: group.children.length }) : t("pptx.group.groupedElement") })
21847
21840
  ] });
21848
21841
  }
21849
21842
  function OlePropertiesPanel({
@@ -28858,59 +28851,40 @@ function TemplateBackgroundCard({
28858
28851
  onGetTemplateBackgroundColor
28859
28852
  }) {
28860
28853
  const { t } = useTranslation();
28854
+ const rows = resolveTemplateBackgroundRows(
28855
+ activeSlide,
28856
+ slideMasters,
28857
+ t("pptx.master.layout"),
28858
+ t("pptx.master.master")
28859
+ );
28861
28860
  return /* @__PURE__ */ jsxs("div", { className: cn(CARD, "space-y-2"), children: [
28862
28861
  /* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
28863
- activeSlide.layoutPath && /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
28862
+ rows.layout && /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
28863
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
28864
28864
  /* @__PURE__ */ jsx(
28865
- "span",
28865
+ DebouncedColorInput,
28866
28866
  {
28867
- className: "text-muted-foreground w-14 shrink-0 truncate",
28868
- title: activeSlide.layoutName ?? activeSlide.layoutPath,
28869
- children: t("pptx.master.layout")
28867
+ value: normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
28868
+ disabled: !canEdit,
28869
+ className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
28870
+ onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
28870
28871
  }
28871
28872
  ),
28873
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-[10px] truncate", children: rows.layout.label })
28874
+ ] }),
28875
+ rows.master && /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
28876
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.master.title, children: t("pptx.master.master") }),
28872
28877
  /* @__PURE__ */ jsx(
28873
28878
  DebouncedColorInput,
28874
28879
  {
28875
- value: normalizeHexColor(
28876
- onGetTemplateBackgroundColor(activeSlide.layoutPath),
28877
- "#ffffff"
28878
- ),
28880
+ value: normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
28879
28881
  disabled: !canEdit,
28880
28882
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
28881
- onCommit: (hex) => onSetTemplateBackground(activeSlide.layoutPath, hex)
28883
+ onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
28882
28884
  }
28883
28885
  ),
28884
- /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-[10px] truncate", children: activeSlide.layoutName ?? t("pptx.master.layout") })
28885
- ] }),
28886
- (() => {
28887
- const master = slideMasters?.find(
28888
- (m) => m.layoutPaths?.includes(activeSlide.layoutPath ?? "")
28889
- );
28890
- if (!master) {
28891
- return null;
28892
- }
28893
- return /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
28894
- /* @__PURE__ */ jsx(
28895
- "span",
28896
- {
28897
- className: "text-muted-foreground w-14 shrink-0 truncate",
28898
- title: master.name ?? master.path,
28899
- children: t("pptx.master.master")
28900
- }
28901
- ),
28902
- /* @__PURE__ */ jsx(
28903
- DebouncedColorInput,
28904
- {
28905
- value: normalizeHexColor(onGetTemplateBackgroundColor(master.path), "#ffffff"),
28906
- disabled: !canEdit,
28907
- className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
28908
- onCommit: (hex) => onSetTemplateBackground(master.path, hex)
28909
- }
28910
- ),
28911
- /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-[10px] truncate", children: master.name ?? t("pptx.master.master") })
28912
- ] });
28913
- })()
28886
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-[10px] truncate", children: rows.master.label })
28887
+ ] })
28914
28888
  ] });
28915
28889
  }
28916
28890
  var ANIMATION_PANEL_MIN_HEIGHT = 80;
@@ -34512,7 +34486,7 @@ ${url}`)) {
34512
34486
  var AiChatPanel = lazy(async () => {
34513
34487
  const [{ useChat }, { default: Panel }] = await Promise.all([
34514
34488
  import('@ai-sdk/react'),
34515
- import('./AiChatPanel-AYS6SCSC.mjs')
34489
+ import('./AiChatPanel-E4NQEMEI.mjs')
34516
34490
  ]);
34517
34491
  function BoundAiChatPanel(props) {
34518
34492
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
Binary file
Binary file