pptx-react-viewer 4.66.0 → 4.68.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 (102) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +10 -0
  3. package/dist/{AiChatPanel-JKWJQX4N.mjs → AiChatPanel-E7CJSTW7.mjs} +1 -1
  4. package/dist/AiChatPanel-E7CJSTW7.mjs.br +0 -0
  5. package/dist/AiChatPanel-E7CJSTW7.mjs.gz +0 -0
  6. package/dist/{AiChatPanel-DL7EBR2V.js → AiChatPanel-PLQ3NBTK.js} +19 -19
  7. package/dist/AiChatPanel-PLQ3NBTK.js.br +0 -0
  8. package/dist/AiChatPanel-PLQ3NBTK.js.gz +0 -0
  9. package/dist/ai.js +2 -2
  10. package/dist/ai.js.br +0 -0
  11. package/dist/ai.js.gz +0 -0
  12. package/dist/ai.mjs +1 -1
  13. package/dist/ai.mjs.br +0 -0
  14. package/dist/ai.mjs.gz +0 -0
  15. package/dist/{chunk-DORVZDQT.mjs → chunk-BJLJJUP3.mjs} +25 -11
  16. package/dist/chunk-BJLJJUP3.mjs.br +0 -0
  17. package/dist/chunk-BJLJJUP3.mjs.gz +0 -0
  18. package/dist/{chunk-A4K2TM2K.mjs → chunk-FBSPQYRE.mjs} +4 -1
  19. package/dist/chunk-FBSPQYRE.mjs.br +0 -0
  20. package/dist/{chunk-A4K2TM2K.mjs.gz → chunk-FBSPQYRE.mjs.gz} +0 -0
  21. package/dist/{chunk-ZRU67AVX.mjs → chunk-GG4I3L2W.mjs} +165 -135
  22. package/dist/chunk-GG4I3L2W.mjs.br +0 -0
  23. package/dist/chunk-GG4I3L2W.mjs.gz +0 -0
  24. package/dist/{chunk-SLFVXZHA.mjs → chunk-JZE6BORE.mjs} +1 -1
  25. package/dist/chunk-JZE6BORE.mjs.br +0 -0
  26. package/dist/chunk-JZE6BORE.mjs.gz +0 -0
  27. package/dist/{chunk-UC57KUGO.js → chunk-LVEFHZ76.js} +1 -1
  28. package/dist/chunk-LVEFHZ76.js.br +0 -0
  29. package/dist/chunk-LVEFHZ76.js.gz +0 -0
  30. package/dist/{chunk-YQ67KAQR.js → chunk-NRTPKXZX.js} +364 -334
  31. package/dist/chunk-NRTPKXZX.js.br +0 -0
  32. package/dist/chunk-NRTPKXZX.js.gz +0 -0
  33. package/dist/{chunk-73S5EOD3.js → chunk-P2COO2QO.js} +4 -1
  34. package/dist/chunk-P2COO2QO.js.br +0 -0
  35. package/dist/{chunk-73S5EOD3.js.gz → chunk-P2COO2QO.js.gz} +0 -0
  36. package/dist/{chunk-QLXYEA54.js → chunk-Q5QEVT54.js} +581 -567
  37. package/dist/chunk-Q5QEVT54.js.br +0 -0
  38. package/dist/chunk-Q5QEVT54.js.gz +0 -0
  39. package/dist/i18n/de.cjs +3 -0
  40. package/dist/i18n/de.cjs.br +0 -0
  41. package/dist/i18n/de.cjs.gz +0 -0
  42. package/dist/i18n/de.mjs +3 -0
  43. package/dist/i18n/de.mjs.br +0 -0
  44. package/dist/i18n/de.mjs.gz +0 -0
  45. package/dist/i18n/es.cjs +3 -0
  46. package/dist/i18n/es.cjs.br +0 -0
  47. package/dist/i18n/es.cjs.gz +0 -0
  48. package/dist/i18n/es.mjs +3 -0
  49. package/dist/i18n/es.mjs.br +0 -0
  50. package/dist/i18n/es.mjs.gz +0 -0
  51. package/dist/i18n/fr.cjs +3 -0
  52. package/dist/i18n/fr.cjs.br +0 -0
  53. package/dist/i18n/fr.cjs.gz +0 -0
  54. package/dist/i18n/fr.mjs +3 -0
  55. package/dist/i18n/fr.mjs.br +0 -0
  56. package/dist/i18n/fr.mjs.gz +0 -0
  57. package/dist/i18n/zh-CN.cjs +3 -0
  58. package/dist/i18n/zh-CN.cjs.br +0 -0
  59. package/dist/i18n/zh-CN.cjs.gz +0 -0
  60. package/dist/i18n/zh-CN.mjs +3 -0
  61. package/dist/i18n/zh-CN.mjs.br +0 -0
  62. package/dist/i18n/zh-CN.mjs.gz +0 -0
  63. package/dist/index.d.ts +4 -1
  64. package/dist/index.js +27 -27
  65. package/dist/index.js.br +0 -0
  66. package/dist/index.js.gz +0 -0
  67. package/dist/index.mjs +4 -4
  68. package/dist/index.mjs.br +0 -0
  69. package/dist/index.mjs.gz +0 -0
  70. package/dist/internals.d.ts +9 -2
  71. package/dist/internals.js +81 -81
  72. package/dist/internals.js.br +0 -0
  73. package/dist/internals.js.gz +0 -0
  74. package/dist/internals.mjs +2 -2
  75. package/dist/internals.mjs.br +0 -0
  76. package/dist/internals.mjs.gz +0 -0
  77. package/dist/viewer/index.d.ts +4 -1
  78. package/dist/viewer/index.js +21 -21
  79. package/dist/viewer/index.js.br +0 -0
  80. package/dist/viewer/index.js.gz +0 -0
  81. package/dist/viewer/index.mjs +4 -4
  82. package/dist/viewer/index.mjs.br +0 -0
  83. package/dist/viewer/index.mjs.gz +0 -0
  84. package/package.json +4 -4
  85. package/dist/AiChatPanel-DL7EBR2V.js.br +0 -0
  86. package/dist/AiChatPanel-DL7EBR2V.js.gz +0 -0
  87. package/dist/AiChatPanel-JKWJQX4N.mjs.br +0 -0
  88. package/dist/AiChatPanel-JKWJQX4N.mjs.gz +0 -0
  89. package/dist/chunk-73S5EOD3.js.br +0 -0
  90. package/dist/chunk-A4K2TM2K.mjs.br +0 -0
  91. package/dist/chunk-DORVZDQT.mjs.br +0 -0
  92. package/dist/chunk-DORVZDQT.mjs.gz +0 -0
  93. package/dist/chunk-QLXYEA54.js.br +0 -0
  94. package/dist/chunk-QLXYEA54.js.gz +0 -0
  95. package/dist/chunk-SLFVXZHA.mjs.br +0 -0
  96. package/dist/chunk-SLFVXZHA.mjs.gz +0 -0
  97. package/dist/chunk-UC57KUGO.js.br +0 -0
  98. package/dist/chunk-UC57KUGO.js.gz +0 -0
  99. package/dist/chunk-YQ67KAQR.js.br +0 -0
  100. package/dist/chunk-YQ67KAQR.js.gz +0 -0
  101. package/dist/chunk-ZRU67AVX.mjs.br +0 -0
  102. package/dist/chunk-ZRU67AVX.mjs.gz +0 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,44 @@ A release listed with no entries carried no Conventional Commit in this package'
7
7
  scope: scripts/release-plan.mjs releases whenever any published file changes, not only on
8
8
  conventional commits.
9
9
 
10
+ ## [4.68.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.68.0) - 2026-11-07
11
+
12
+ ### Features
13
+
14
+ - **text:** Share the webfont fallback with word, excel and visio ([296264b](https://github.com/ChristopherVR/ooxml/commit/296264b25560c6cd274bf5df62e94300783ef6bb))
15
+
16
+ ## [4.67.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.67.0) - 2026-11-06
17
+
18
+ ### Features
19
+
20
+ - **drawingml:** Share powerpoint's measured dash patterns ([9c36464](https://github.com/ChristopherVR/ooxml/commit/9c364649697f675ecea811c807188cb083c91078))
21
+ - **ui:** Match dashed square-cap ends and dash phase on straight lines ([7ea4139](https://github.com/ChristopherVR/ooxml/commit/7ea4139a8a759e8dbdec1650b6d6c7f792084d43))
22
+ - **drawingml:** Model PowerPoint's path="shape" gradient field ([afc2c2e](https://github.com/ChristopherVR/ooxml/commit/afc2c2e5243c859b71516e7aa921eac5f287ae0c))
23
+ - **ui:** Fit arch and circle text to its arc and space lines one pitch apart ([816e254](https://github.com/ChristopherVR/ooxml/commit/816e2541fc6af4dce45b8b3c2fa7896f650d5cb4))
24
+ - **ui:** Add a trust center option for downloading webfonts ([e260f16](https://github.com/ChristopherVR/ooxml/commit/e260f16f564e115657f8c60a4c8513ff9c4ddaf2))
25
+ - **pptx:** Honour the font download option in every binding ([6a153eb](https://github.com/ChristopherVR/ooxml/commit/6a153eb83186830490f8a0968d8ba29876562ca6))
26
+
27
+ ### Bug Fixes
28
+
29
+ - **geometry:** Reconstruct swooshArrow's guide chain from PowerPoint ([f427d84](https://github.com/ChristopherVR/ooxml/commit/f427d84088235985b4fbf1a681cc3bcaab84fdf0))
30
+ - **geometry:** Draw actionButtonHelp's question mark with elliptical arcs ([01275f1](https://github.com/ChristopherVR/ooxml/commit/01275f191ab8a1e0a19c52e9322b477084718bd2))
31
+ - **geometry:** Shade the scroll curl with the measured swirl, not discs ([1e3d8f9](https://github.com/ChristopherVR/ooxml/commit/1e3d8f93f777031900f8de7fdcd79c7e7a479dd4))
32
+ - **ui:** Paint path="shape" gradients as PowerPoint does in every binding ([9fd7ea8](https://github.com/ChristopherVR/ooxml/commit/9fd7ea856540a27e4f0d33eb853b66fa5bdef842))
33
+ - **pptx:** Read adj1 of the wave and pour text warps and write it back ([90f407a](https://github.com/ChristopherVR/ooxml/commit/90f407afc7726fde72f52fc93a9b6e0adf57df36))
34
+ - **pptx:** Persist canvas size changes from automation ([#252](https://github.com/ChristopherVR/ooxml/issues/252)) ([e9b76d4](https://github.com/ChristopherVR/ooxml/commit/e9b76d47fcb2b3432cefda7f061fc302370320bf))
35
+ - **pptx:** Preserve merged cells during table structure edits ([#253](https://github.com/ChristopherVR/ooxml/issues/253)) ([0158dda](https://github.com/ChristopherVR/ooxml/commit/0158dda7f0ad7ba5148dda05f9d7ecc23e468555))
36
+ - **pptx:** Wait for a deck's webfonts before showing it ([995b977](https://github.com/ChristopherVR/ooxml/commit/995b977e12041a798744eb9704d4d5735cd52a1a))
37
+ - **ui:** Break lines where powerpoint does when the deck font is missing ([40765e7](https://github.com/ChristopherVR/ooxml/commit/40765e7ac295ca1c6ee4346cd95109fd7be7d951))
38
+
39
+ ### Documentation
40
+
41
+ - Disclose every outbound request in PRIVACY.md ([eb1810b](https://github.com/ChristopherVR/ooxml/commit/eb1810bd3dd1ede67a8c4872f3fe5daa64472fe1))
42
+
43
+ ### Testing
44
+
45
+ - **react:** Pin the freeform circle path as an image paint server ([f7e0f32](https://github.com/ChristopherVR/ooxml/commit/f7e0f3267d35d8c33040795f79b8f36459b92cfd))
46
+ - **pptx:** Pin transparent outlines and text-box effects from the SDK ([#254](https://github.com/ChristopherVR/ooxml/issues/254)) ([6de0da1](https://github.com/ChristopherVR/ooxml/commit/6de0da1799532dbe4c6f093d93c75a44471f4375))
47
+
10
48
  ## [4.66.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.66.0) - 2026-11-06
11
49
 
12
50
  ### Features
package/README.md CHANGED
@@ -350,6 +350,16 @@ The other subpaths are `i18n/fr` (`translationsFr`), `i18n/es`
350
350
  [localization guide](https://christophervr.github.io/ooxml/pptx/guide/localization)
351
351
  for registration and runtime switching. Existing English imports are unchanged.
352
352
 
353
+ ## Privacy and network use
354
+
355
+ The viewer renders and saves decks in the browser and never uploads them. It contacts other servers only in these cases:
356
+
357
+ - **Fonts that are neither installed nor embedded.** When a deck uses such a font and Google Fonts serves it (or a metric-compatible clone, such as Carlito for Calibri), the viewer downloads it from `fonts.googleapis.com` and `fonts.gstatic.com`, so the reader's IP address and the needed family names reach Google. This is on by default, as in PowerPoint, which downloads its cloud fonts. Turn it off with `googleFonts: false`, or send the same requests to a self-hosted mirror with `googleFonts: { baseUrl: 'https://fonts.example.com/css2' }`. Readers can also turn it off in File > Options > Trust Center ("Download fonts that are not installed or embedded (Google Fonts)"); a host value locks that toggle. With downloads off, text uses installed, embedded or substitute fonts and line breaks can differ from PowerPoint. If the download is slow, the deck waits up to 8 seconds, and it opens at once when the font server cannot be reached (offline use works). See [font loading](https://github.com/ChristopherVR/ooxml/blob/main/docs/font-loading.md).
358
+ - **Linked pictures and media** in a deck are fetched from their URLs while the Trust Center option "Allow external content" is on (the default). `allowExternalContent: false` blocks them.
359
+ - **Share and Broadcast**, only when started: updates go to the server you configure; with no server, peers meet through y-webrtc's public signaling server and public STUN servers.
360
+
361
+ Nothing collects analytics or telemetry. The full list, including what is kept in local storage, is in [PRIVACY.md](https://github.com/ChristopherVR/ooxml/blob/main/PRIVACY.md).
362
+
353
363
  ## License
354
364
 
355
365
  [Apache-2.0](LICENSE). Please keep the [`NOTICE`](NOTICE) file with redistributions.
@@ -1,4 +1,4 @@
1
- import { useTranslation, cn } from './chunk-A4K2TM2K.mjs';
1
+ import { useTranslation, cn } from './chunk-FBSPQYRE.mjs';
2
2
  import './chunk-UV2HVMKZ.mjs';
3
3
  import { useMemo, useRef, useState, useEffect, useReducer, useCallback } from 'react';
4
4
  import { LuSparkles, LuX, LuLoaderCircle, LuTriangleAlert, LuHistory, LuMessageSquarePlus, LuTrash2, LuPlus, LuGitMerge, LuCrosshair, LuPinOff, LuPin, LuUser, LuBot, LuCheck, LuSquare, LuSend, LuMessageSquare, LuPalette, LuUndo2, LuWrench, LuStickyNote, LuFilm, LuNavigation, LuSearch, LuMove, LuChartColumn, LuLayoutTemplate, LuTable, LuShapes, LuType, LuEye } from 'react-icons/lu';
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk73S5EOD3_js = require('./chunk-73S5EOD3.js');
3
+ var chunkP2COO2QO_js = require('./chunk-P2COO2QO.js');
4
4
  require('./chunk-PIRHQTI4.js');
5
5
  var react = require('react');
6
6
  var lu = require('react-icons/lu');
@@ -301,7 +301,7 @@ function AiComposer({
301
301
  prefillText,
302
302
  prefillNonce
303
303
  }) {
304
- const { t } = chunk73S5EOD3_js.useTranslation();
304
+ const { t } = chunkP2COO2QO_js.useTranslation();
305
305
  const [value, setValue] = react.useState("");
306
306
  const textareaRef = react.useRef(null);
307
307
  const appliedNonce = react.useRef(void 0);
@@ -364,7 +364,7 @@ function AiComposer({
364
364
  disabled: value.trim().length === 0,
365
365
  title: t("pptx.ai.send"),
366
366
  "aria-label": t("pptx.ai.send"),
367
- className: chunk73S5EOD3_js.cn(
367
+ className: chunkP2COO2QO_js.cn(
368
368
  "shrink-0 rounded-sm p-1.5 transition-colors",
369
369
  value.trim().length === 0 ? "text-muted-foreground/50" : "bg-primary text-primary-foreground hover:bg-primary/90"
370
370
  ),
@@ -386,7 +386,7 @@ function AiFocusBar({
386
386
  onStopPick,
387
387
  onClearPicks
388
388
  }) {
389
- const { t } = chunk73S5EOD3_js.useTranslation();
389
+ const { t } = chunkP2COO2QO_js.useTranslation();
390
390
  const chips = ai.focusTargetChips(targets, slides);
391
391
  const twoTables = ai.isTwoTableFocus(targets, slides);
392
392
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border bg-secondary/30", children: [
@@ -395,7 +395,7 @@ function AiFocusBar({
395
395
  chips.map((chip) => /* @__PURE__ */ jsxRuntime.jsx(
396
396
  "span",
397
397
  {
398
- className: chunk73S5EOD3_js.cn(
398
+ className: chunkP2COO2QO_js.cn(
399
399
  "inline-flex max-w-[10rem] items-center rounded-full px-2 py-0.5 text-[11px]",
400
400
  hasPicks || isPinned ? "bg-primary/15 text-primary" : "bg-muted text-muted-foreground"
401
401
  ),
@@ -432,7 +432,7 @@ function AiFocusBar({
432
432
  title: t("pptx.ai.pickElement"),
433
433
  "aria-label": t("pptx.ai.pickAria"),
434
434
  "aria-pressed": pickMode,
435
- className: chunk73S5EOD3_js.cn(
435
+ className: chunkP2COO2QO_js.cn(
436
436
  "rounded-sm p-1 max-md:min-w-[44px]! max-md:min-h-[44px]! flex items-center justify-center",
437
437
  pickMode ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-accent"
438
438
  ),
@@ -501,7 +501,7 @@ function relativeTime(from, now = Date.now()) {
501
501
  return `${weeks}w ago`;
502
502
  }
503
503
  function AiHistoryList({ chats, activeChatId, onResume, onDelete }) {
504
- const { t } = chunk73S5EOD3_js.useTranslation();
504
+ const { t } = chunkP2COO2QO_js.useTranslation();
505
505
  if (chats.length === 0) {
506
506
  return /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-3 py-4 text-center text-[12px] text-muted-foreground", children: t("pptx.ai.historyEmpty") });
507
507
  }
@@ -511,7 +511,7 @@ function AiHistoryList({ chats, activeChatId, onResume, onDelete }) {
511
511
  {
512
512
  type: "button",
513
513
  onClick: () => onResume(chat.id),
514
- className: chunk73S5EOD3_js.cn(
514
+ className: chunkP2COO2QO_js.cn(
515
515
  "flex min-w-0 flex-1 items-start gap-2 rounded-sm px-2 py-1.5 text-left hover:bg-accent",
516
516
  chat.id === activeChatId && "bg-accent/60"
517
517
  ),
@@ -550,7 +550,7 @@ function AiHistoryMenu({
550
550
  onNewChat,
551
551
  onClose
552
552
  }) {
553
- const { t } = chunk73S5EOD3_js.useTranslation();
553
+ const { t } = chunkP2COO2QO_js.useTranslation();
554
554
  const ref = react.useRef(null);
555
555
  react.useEffect(() => {
556
556
  const handler = (e) => {
@@ -616,7 +616,7 @@ function appliedThemeFromPart(part) {
616
616
  return { summary: out.summary ?? "Theme updated", previous: out.previous ?? {} };
617
617
  }
618
618
  function AiAppliedThemeCard({ summary, onUndo }) {
619
- const { t } = chunk73S5EOD3_js.useTranslation();
619
+ const { t } = chunkP2COO2QO_js.useTranslation();
620
620
  const [undone, setUndone] = react.useState(false);
621
621
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 rounded-md border border-primary/30 bg-primary/5 px-2.5 py-1.5 text-[12px]", children: [
622
622
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuPalette, { className: "w-3.5 h-3.5 shrink-0 text-primary" }),
@@ -662,7 +662,7 @@ var ICONS = {
662
662
  tool: lu.LuWrench
663
663
  };
664
664
  function AiToolCallCard({ part }) {
665
- const { t } = chunk73S5EOD3_js.useTranslation();
665
+ const { t } = chunkP2COO2QO_js.useTranslation();
666
666
  const failed = part.state === "output-error";
667
667
  const done = part.state === "output-available";
668
668
  const running = !failed && !done;
@@ -675,17 +675,17 @@ function AiToolCallCard({ part }) {
675
675
  /* @__PURE__ */ jsxRuntime.jsx(
676
676
  Icon,
677
677
  {
678
- className: chunk73S5EOD3_js.cn(
678
+ className: chunkP2COO2QO_js.cn(
679
679
  "w-3.5 h-3.5 shrink-0",
680
680
  failed ? "text-destructive" : "text-muted-foreground"
681
681
  )
682
682
  }
683
683
  ),
684
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk73S5EOD3_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
684
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP2COO2QO_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
685
685
  /* @__PURE__ */ jsxRuntime.jsxs(
686
686
  "span",
687
687
  {
688
- className: chunk73S5EOD3_js.cn(
688
+ className: chunkP2COO2QO_js.cn(
689
689
  "ml-auto inline-flex items-center gap-1 rounded-sm px-1.5 py-0.5 text-[10px]",
690
690
  failed ? "bg-destructive/15 text-destructive" : done ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"
691
691
  ),
@@ -710,7 +710,7 @@ function AiToolCallCard({ part }) {
710
710
  ] });
711
711
  }
712
712
  function AiMessageList({ messages, isStreaming, bridge }) {
713
- const { t } = chunk73S5EOD3_js.useTranslation();
713
+ const { t } = chunkP2COO2QO_js.useTranslation();
714
714
  const endRef = react.useRef(null);
715
715
  react.useEffect(() => {
716
716
  endRef.current?.scrollIntoView({ block: "end" });
@@ -733,7 +733,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
733
733
  /* @__PURE__ */ jsxRuntime.jsx(
734
734
  "div",
735
735
  {
736
- className: chunk73S5EOD3_js.cn(
736
+ className: chunkP2COO2QO_js.cn(
737
737
  "mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full",
738
738
  isUser ? "bg-secondary text-muted-foreground" : "bg-primary/15 text-primary"
739
739
  ),
@@ -779,7 +779,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
779
779
  ] });
780
780
  }
781
781
  function AiProposalCard({ proposal, onAccept, onReject }) {
782
- const { t } = chunk73S5EOD3_js.useTranslation();
782
+ const { t } = chunkP2COO2QO_js.useTranslation();
783
783
  const lines = proposal.summary.map(ai.humanizeDiffLine);
784
784
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-primary/40 bg-primary/5 p-2.5", children: [
785
785
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1.5 text-[11px] font-semibold uppercase tracking-wide text-primary", children: t("pptx.ai.proposedChange") }),
@@ -821,7 +821,7 @@ function AiConversation({
821
821
  aiPanel,
822
822
  deckId
823
823
  }) {
824
- const { t } = chunk73S5EOD3_js.useTranslation();
824
+ const { t } = chunkP2COO2QO_js.useTranslation();
825
825
  const chat = useAiConversation(useChat, session, config, bridge, {
826
826
  // Live "AI as a collaborator" focus: as each tool runs, navigate to and
827
827
  // highlight the slide / element(s) it touches so the canvas mirrors the
@@ -986,7 +986,7 @@ function AiChatPanel({
986
986
  onClose,
987
987
  panelWidth
988
988
  }) {
989
- const { t } = chunk73S5EOD3_js.useTranslation();
989
+ const { t } = chunkP2COO2QO_js.useTranslation();
990
990
  const { state, session, initError } = useAiChat(bridge, config);
991
991
  const deckId = react.useMemo(() => ai.deckIdFromBridge(bridge), [bridge]);
992
992
  return /* @__PURE__ */ jsxRuntime.jsxs(
Binary file
Binary file
package/dist/ai.js CHANGED
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkUC57KUGO_js = require('./chunk-UC57KUGO.js');
3
+ var chunkLVEFHZ76_js = require('./chunk-LVEFHZ76.js');
4
4
  require('./chunk-PIRHQTI4.js');
5
5
 
6
6
  // src/ai.ts
7
7
  function createAiAssistant(config) {
8
- return chunkUC57KUGO_js.aiAssistants.register(config, chunkUC57KUGO_js.AiChatPanelLazy);
8
+ return chunkLVEFHZ76_js.aiAssistants.register(config, chunkLVEFHZ76_js.AiChatPanelLazy);
9
9
  }
10
10
 
11
11
  exports.createAiAssistant = createAiAssistant;
package/dist/ai.js.br CHANGED
Binary file
package/dist/ai.js.gz CHANGED
Binary file
package/dist/ai.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { aiAssistants, AiChatPanelLazy } from './chunk-SLFVXZHA.mjs';
1
+ import { aiAssistants, AiChatPanelLazy } from './chunk-JZE6BORE.mjs';
2
2
  import './chunk-UV2HVMKZ.mjs';
3
3
 
4
4
  // src/ai.ts
package/dist/ai.mjs.br CHANGED
Binary file
package/dist/ai.mjs.gz CHANGED
Binary file
@@ -1,7 +1,7 @@
1
- import { aiAssistants, AiChatPanelLazy } from './chunk-SLFVXZHA.mjs';
2
- import { useCollaboration, useVirtualizedSlides, StaticElementRenderer, useModalDismissDrag, useToolbarVisibility, useViewerOptionsContext, InlineCollaborationContext, SlideBackgroundImageLayer, ElementRenderer, withDisplayName, ResizeHandles, imgSrc, renderStrokeView, useChartFormatContext, useController, useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useClearSelectionOnSlideChange, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, Rendering3DFlagsContext, CollaborationProvider, ChartFormatContext, useSheetDismissDrag, playAnimationSound, ViewerOptionsStoreContext, scopeLayoutOptionsToActiveSlide, createReviewCommentsHost, ChartPartSelectionProvider, useKeyboardInsets, ViewerOptionsContext, useReportOnChange, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, useSwipeNavigation, RemoteSelectionOverlay, CollaborationCursorOverlay, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, PresentationTransitionOverlay, downloadBlob, useChartPartSelection, resolveSmartArtDataPalette, DUOTONE_PRESETS, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES } from './chunk-ZRU67AVX.mjs';
3
- import { useTranslation, DEFAULT_SECTION_GROUP_ID, cn, getShapeAdjustmentHandleDescriptors, isConnectorOrLineElement, PptxI18nContext, TOOLBAR_SECTIONS, GRID_SIZE, getElementTransformWithoutRotation, getElementTransform, MIN_ELEMENT_SIZE, UNGROUPED_SECTION_ID, ViewerLocaleControlsContext, hasCopyableFormat, ViewerI18nContext, useHostI18next, isPpactionUrl, parsePpactionUrl, SHORTCUT_REFERENCE_ITEMS, safeOpenUrl, isUrlSafe, computeHandoutLayout, getPrintableArea, generateNoteLineCount, normalizeHexColor, SLIDE_NAV_THUMBNAIL_WIDTH, SLIDE_TRANSITION_OPTIONS, getElementLabel, TABLE_STYLE_PRESETS, SHAPE_PRESETS, sanitizeGradientStops, formatCommentTimestamp, ANIMATION_PRESET_OPTIONS, clampCropValue, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, DEFAULT_FILL_COLOR, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, getPatternSvg, DEFAULT_STROKE_COLOR, openNativeEyeDropper } from './chunk-A4K2TM2K.mjs';
4
- import { ANIMATION_DIRECTION_LABEL_KEYS, buildQuickStylesGallery, editorThumbnailWidth, EDITOR_THUMBNAIL_WIDTH, buildSlideTemplateContent, SLIDE_TEMPLATES, homeLaunchers, attachRibbonOverflow, isPanelVisible, resolveStageEdgeBleeds, parentSelection, slideSpaceElement, isGroupMember, motionPathFor, setMotionPath, RULER_THICKNESS, shouldShowElementHandles, deviceStrokeStageStyle, editorThumbnailStep, resolveSlidePaneClick, SLIDE_VIRTUALIZATION_THRESHOLD, buildSectionContextMenuEntries, buildSlidePaneContextMenuEntries, slidePaneViewItems, activateModalFocus, visibleContextualTabs, resolveActiveRibbonTab, visibleRibbonAddIns, isDialogAvailable, resolveReadOnlyBadge, READ_ONLY_BADGE_ATTR, resolveScreenTip, RIBBON_ADD_IN_TAB_ATTR, contextualTabLabelKey, RIBBON_CONTEXTUAL_TAB_ATTR, buildTabRowActionsState, isFeatureEnabled, TAB_ROW_ACTION_CLASSES, tabRowActionsAttributes, buildTitleBarState, backstageNavEntries, BACKSTAGE_NAV, openPlacesLabels, listBackstageRecentFiles, BACKSTAGE_BACK_CLASSES, BACKSTAGE_NAV_CLASSES, CLOUD_OPEN_ACCEPT, DEFAULT_INSERT_CHART_KIND, FREEFORM_TOOL_IDS, isDrawingToolVisible, textFontSizePtToPx, withHomeGalleries, drawingHomeControls, homeGalleryControls, homeGalleryApply, shapeOutlineChange, shapeFillChange, editingHomeControls, arrangeHomeControls, arrangePainterHomeControls, arrangeAlignAction, DESIGN_RIBBON_GROUPS, FIXED_TAB_GALLERIES, DESIGN_RIBBON_COMMANDS, designCommandState, CONTEXTUAL_TAB_GROUPS, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, buildChartQuickActionsDescriptor, applyChartElementToggle, CHART_QUICK_ACTION_BUTTON_SIZE, applyChartStylePreset, hideChartSeries, restoreFilteredSeries, buildCropOverlay, CROP_HANDLE_ARIA_KEY, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, canEditElementPoints, getSlideBackgroundStyle, sectionAddAfterSlideIndex, EMPTY_RESOLVED_CUSTOMIZATION, getRegionRenderer, formatBackstageDate, formatBackstageSize, ViewerRegionHost, BACKSTAGE_TEMPLATES, customizeBackstageCards, backstageCardsFor, connectedServicesLabels, DEFAULT_VIEWER_PROFILE, readStoredViewerPrefs, resolveProfileInitial, AVATAR_COLOR_SWATCHES, clipboardHomeControls, slidesHomeControls, resolveInsertSlideLayout, resolveDefaultFontFamily, textFontSizePxToPt, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, fontPickerHomeControls, fontHomeControls, nextToggleValue, RIBBON_GROUP_ATTR, paragraphHomeAlign, paragraphHomeControls, paragraphHomeAction, arrangeShapeHomeControls, strokeWidthOf, canSetStrokeWidth, canUngroupSelection, canGroupSelection, buildRibbonGallery, readRibbonTransitionDraft, SLIDE_SHOW_COMMAND_GROUPS, buildRecordRibbon, trackActiveComment, commentCounts, findCommentLocation, buildReviewRibbon, buildHelpRibbon, galleryTextLabel, pictureSizeHomeControls, chartSelectionHomeControls, dispatchChartSelectionRequest, buildFreeformShapeElement, buildLiveInkStrokeView, beginCropDrag, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, FreeformToolSession, attachOverlayKeyboard, EditPointsSession, EDIT_POINTS_STYLE, createCloudDocumentController, resolveCloudDocumentView, createSaveProgressController, resolveCollaborationConfig, resolveViewerRootOptions, installSvgIdScope, buildUserFontFaceStyles, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, isEditingAllowed, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, attachViewerHyperlinks, shouldConfirmExternalHyperlink, confirmExternalHyperlinkDialog, applyAutoCorrectToEdit, resolveImageResolutionScale, resolveAllowExternalContent, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, saveFailureMessage, withSaveFailureToast, createSlidePackageClipboard, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, hiddenSlideCue, editorThumbnailHeight, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, MIN_TOUCH_TARGET_PX, getLocalStorageUsageSummary, saveViewerProfile, confirmDeleteDialog, clearAllLocalViewerData, getSelectionTextStyleFlags, TEXT_DECORATION_FLAGS, dispatchCropRequest, applyRibbonGalleryItem, ribbonTransitionsDraftPatch, ribbonTransitionUpdates, ribbonTransitionsSoundChange, ribbonTransitionStockSoundUrl, playSlideTransitionPreview, playAnimationRibbonPreview, SLIDE_SHOW_OPTIONS, createViewerOptionsStore, subtitleSettingsFromOptions, subtitleSettingsLabels, isReviewCommentCommand, runReviewCommentCommand, hasTiltData, RULER_FONT_SIZE, toElementAxes, dragCropHandle, panCropImage, clientToSlidePoint, EDIT_POINTS_TARGET_ATTR, themeToCssVars, createCustomizationController, resolveEffectiveHiddenActions, pruneExpiredAutosaveSnapshots, createDeckStyleHost, galleryDeckView, tableLayoutCells, commitsThroughDeckStyle, resetChartFormatTarget, savedPresentationRevision, isCleanAfterSave, masterViewCrudActions, promptNameDialog, applyMasterViewCrudAction, masterViewCrudFailureKey, forgetStepsUsingRemovedParts, EDITOR_CHROME_CSS, ribbonCustomizationCss, applyMotionPathPreset, resetSlideLayoutPath, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, deleteAutosaveSnapshot, dispatchReadOnlyBannerIntent, readOnlyBannerState, buildFieldSubstitutionContext, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, observeElementHeight, printPropertiesFrameSlides, printPropertiesSlidesPerPage, PASTE_SPECIAL_OPTIONS, findCanvasElementNode, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, getDensePanelTouchTargetPx, shouldStickyActionRow, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, updateSubtitleSettings, overlayPointerInput, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, clearAutosaveSnapshots, canCropElement, cropSessionChanged, cancelCropUpdate, startCropSession, masterViewBackgroundColor, openExternalHyperlinkConfirmed, resolvePresentationAction, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, resolveEditPointsAvailability, isCurrentLayout, EXPANDED_MAX_HEIGHT, statusBarState, statusBarViewMode, saveProgressStatus, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, createCustomShowsController, resolveDefaultPrintSettings, HANDOUT_OPTIONS, effectiveOrientation, computeSlideCount, estimatePageCount, computeSlideIndices, bindPptxOptionsDialog, optionsBlockSlot, optionsPaneSlot, DEFAULT_QUICK_ACCESS_COMMAND_IDS, AI_OPTIONS_CATEGORY, buildCollaborationShareUrl, buildActiveSessionUsers, slideClipboardLabels, sorterPasteInsertAt, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, listenForOutlineViewDismiss, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, createCollaborationStateReporter, buildCollaborationState, writeBackReport, cropModeKeyAction, isEditPointsEnabled, findReplacementAvailability, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, transitionTemplateElements, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, PRESENTER_NAVIGATOR_LABEL_KEYS, getPresentationContextMenuSections, CONTEXT_MENU_PRESENTATION_LAYER, presentationViewItems, subtitleRecognitionLanguage, getSpeechRecognitionCtor, mergeCaptionResults, customizeContextMenuEntries, buildContextMenuEntries, contextMenuViewItems, customizeCanvasContextMenuEntries, buildCanvasContextMenuEntries, buildLayoutPreviewGeometry, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, themeEditorLabels, resolveNotesSegments, defaultRichEnabled, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX as INDENT_PX$1, buildNotesPrintHtml, dispatchStatusBarIntent, toggleSheet, describeElementChange, sanitizeMathMl, compileEquationTemplateMathMl, computeAllNotesPages, getNotesPrintableArea, CUSTOM_FONT_ACCEPT, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, resolveViewerAddinRows, createSlideSorterState, sorterSelectionIndexes, selectSorterSlide, applySorterAction, sorterGridColumns, sorterMenuContext, buildSlideSorterContextMenuEntries, slideSorterContextMenuLabel, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, presenterConsoleAction, presenterConsoleViewState, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, masterViewPseudoSlide, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, computeAnchoredPopupPosition, applyTableStyleDelete, applyTableStyleMapChange, registerCustomFont, QUICK_ACCESS_COMMAND_CATALOG, handleReadingViewKey, visibleTemplateElements, buildPreviewElements, deriveSlideFieldContext, MERGE_SHAPES_MENU_ITEMS, hasMultipleSelectedTableCells, isElementLocked, ELEMENT_GEOMETRY_SECTIONS, mergeSlideTransition, slideBackgroundClearState, slideBackgroundClearPatch, effectiveDirection, TRIGGER_OPTIONS, effectiveTimingCurve, getAfterAnimationState, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, elementLockTogglePatch, resolveInspectorSections, inspectorTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, inspectorNumber, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setDataLabelsRangeCache, imageResetPatch, imageResetState, canInteractWithElement, buildOleObjectNamePatch, strokeColorChange, shouldShowAccessibilitySection, withFrameSlides, withSlidesPerPage, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, setTrigger, setTriggerBookmark, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, directionValuesFor, buildAnimationTimelineBars, motionPathPresetIdForPath, MOTION_PATH_FAMILIES, motionPathPresetsByFamily, motionPathPresetLabelKey, motionPathFamilyLabelKey, EFFECT_SOUND_CATALOGUE, listMediaBookmarkOptions, selectedBookmarkOptionValue, inspectorFieldPatch, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, resolveDisplayedChartType, CHART_TYPE_OPTIONS, chartDataLabelsTogglePatch, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, seriesColorClearState, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, rebuildDrawingShapesIfCleared, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, cropResetState, cropResetPatch, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimResetState, mediaTrimEndMsFromAbsoluteMs, mediaTrimResetPatch, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyTextStyleUpdate, buildThemeColorSwatchGrid, themeColorGridView, recentColorsGridView, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, getEffectSoundAsset, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, withCellStyle, LBL as LBL$1, SEL as SEL$1, FILL_MODE_OPTIONS as FILL_MODE_OPTIONS$1, SECTION_HEADING, NUM as NUM$1, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, smartArtLayoutSwitchPatch, mediaTrimEndMsFromSeconds, validateMediaTrimRange, OFFICE_COLOR_SWATCHES, officeColorSwatchLabel, PATTERN_PRESET_OPTIONS as PATTERN_PRESET_OPTIONS$1, SHAPE_LINE_SECTIONS, shapeQuickStylePatch, SHAPE_EFFECT_SECTIONS, createLiveColorInput, themeColorGridCommit, TEXT_BOX_SECTIONS, buildTextWarpGallery, TEXT_WARP_PRESETS, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS as GRADIENT_TYPE_OPTIONS$1, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, quickStyleShapeStyle, textWarpStyle, toggleText3dExtrusion, BEVEL_PRESETS, cropFit, cropFill, cropToAspectRatio } from 'ooxml-ui/pptx';
1
+ import { aiAssistants, AiChatPanelLazy } from './chunk-JZE6BORE.mjs';
2
+ import { useCollaboration, useVirtualizedSlides, StaticElementRenderer, useModalDismissDrag, useToolbarVisibility, useViewerOptionsContext, InlineCollaborationContext, SlideBackgroundImageLayer, ElementRenderer, withDisplayName, ResizeHandles, imgSrc, renderStrokeView, useChartFormatContext, useController, useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useClearSelectionOnSlideChange, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, Rendering3DFlagsContext, CollaborationProvider, ChartFormatContext, useSheetDismissDrag, playAnimationSound, ViewerOptionsStoreContext, scopeLayoutOptionsToActiveSlide, createReviewCommentsHost, ChartPartSelectionProvider, useKeyboardInsets, ViewerOptionsContext, useReportOnChange, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, useSwipeNavigation, RemoteSelectionOverlay, CollaborationCursorOverlay, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, PresentationTransitionOverlay, downloadBlob, useChartPartSelection, resolveSmartArtDataPalette, DUOTONE_PRESETS, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES } from './chunk-GG4I3L2W.mjs';
3
+ import { useTranslation, DEFAULT_SECTION_GROUP_ID, cn, getShapeAdjustmentHandleDescriptors, isConnectorOrLineElement, PptxI18nContext, TOOLBAR_SECTIONS, GRID_SIZE, getElementTransformWithoutRotation, getElementTransform, MIN_ELEMENT_SIZE, UNGROUPED_SECTION_ID, ViewerLocaleControlsContext, hasCopyableFormat, ViewerI18nContext, useHostI18next, isPpactionUrl, parsePpactionUrl, SHORTCUT_REFERENCE_ITEMS, safeOpenUrl, isUrlSafe, computeHandoutLayout, getPrintableArea, generateNoteLineCount, normalizeHexColor, SLIDE_NAV_THUMBNAIL_WIDTH, SLIDE_TRANSITION_OPTIONS, getElementLabel, TABLE_STYLE_PRESETS, SHAPE_PRESETS, sanitizeGradientStops, formatCommentTimestamp, ANIMATION_PRESET_OPTIONS, clampCropValue, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, DEFAULT_FILL_COLOR, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, getPatternSvg, DEFAULT_STROKE_COLOR, openNativeEyeDropper } from './chunk-FBSPQYRE.mjs';
4
+ import { ANIMATION_DIRECTION_LABEL_KEYS, buildQuickStylesGallery, editorThumbnailWidth, EDITOR_THUMBNAIL_WIDTH, buildSlideTemplateContent, SLIDE_TEMPLATES, homeLaunchers, attachRibbonOverflow, isPanelVisible, resolveStageEdgeBleeds, parentSelection, slideSpaceElement, isGroupMember, motionPathFor, setMotionPath, RULER_THICKNESS, shouldShowElementHandles, deviceStrokeStageStyle, editorThumbnailStep, resolveSlidePaneClick, SLIDE_VIRTUALIZATION_THRESHOLD, buildSectionContextMenuEntries, buildSlidePaneContextMenuEntries, slidePaneViewItems, activateModalFocus, visibleContextualTabs, resolveActiveRibbonTab, visibleRibbonAddIns, isDialogAvailable, resolveReadOnlyBadge, READ_ONLY_BADGE_ATTR, resolveScreenTip, RIBBON_ADD_IN_TAB_ATTR, contextualTabLabelKey, RIBBON_CONTEXTUAL_TAB_ATTR, buildTabRowActionsState, isFeatureEnabled, TAB_ROW_ACTION_CLASSES, tabRowActionsAttributes, buildTitleBarState, backstageNavEntries, BACKSTAGE_NAV, openPlacesLabels, listBackstageRecentFiles, BACKSTAGE_BACK_CLASSES, BACKSTAGE_NAV_CLASSES, CLOUD_OPEN_ACCEPT, DEFAULT_INSERT_CHART_KIND, FREEFORM_TOOL_IDS, isDrawingToolVisible, textFontSizePtToPx, withHomeGalleries, drawingHomeControls, homeGalleryControls, homeGalleryApply, shapeOutlineChange, shapeFillChange, editingHomeControls, arrangeHomeControls, arrangePainterHomeControls, arrangeAlignAction, DESIGN_RIBBON_GROUPS, FIXED_TAB_GALLERIES, DESIGN_RIBBON_COMMANDS, designCommandState, CONTEXTUAL_TAB_GROUPS, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, buildChartQuickActionsDescriptor, applyChartElementToggle, CHART_QUICK_ACTION_BUTTON_SIZE, applyChartStylePreset, hideChartSeries, restoreFilteredSeries, buildCropOverlay, CROP_HANDLE_ARIA_KEY, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, canEditElementPoints, getSlideBackgroundStyle, sectionAddAfterSlideIndex, EMPTY_RESOLVED_CUSTOMIZATION, getRegionRenderer, formatBackstageDate, formatBackstageSize, ViewerRegionHost, BACKSTAGE_TEMPLATES, customizeBackstageCards, backstageCardsFor, connectedServicesLabels, DEFAULT_VIEWER_PROFILE, readStoredViewerPrefs, resolveProfileInitial, AVATAR_COLOR_SWATCHES, clipboardHomeControls, slidesHomeControls, resolveInsertSlideLayout, resolveDefaultFontFamily, textFontSizePxToPt, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, fontPickerHomeControls, fontHomeControls, nextToggleValue, RIBBON_GROUP_ATTR, paragraphHomeAlign, paragraphHomeControls, paragraphHomeAction, arrangeShapeHomeControls, strokeWidthOf, canSetStrokeWidth, canUngroupSelection, canGroupSelection, buildRibbonGallery, readRibbonTransitionDraft, SLIDE_SHOW_COMMAND_GROUPS, buildRecordRibbon, trackActiveComment, commentCounts, findCommentLocation, buildReviewRibbon, buildHelpRibbon, galleryTextLabel, pictureSizeHomeControls, chartSelectionHomeControls, dispatchChartSelectionRequest, buildFreeformShapeElement, buildLiveInkStrokeView, beginCropDrag, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, FreeformToolSession, attachOverlayKeyboard, EditPointsSession, EDIT_POINTS_STYLE, createCloudDocumentController, resolveCloudDocumentView, createSaveProgressController, resolveCollaborationConfig, resolveViewerRootOptions, installSvgIdScope, buildUserFontFaceStyles, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, isEditingAllowed, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, attachViewerHyperlinks, shouldConfirmExternalHyperlink, confirmExternalHyperlinkDialog, applyAutoCorrectToEdit, resolveImageResolutionScale, resolveEffectiveGoogleFonts, resolveAllowExternalContent, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, saveFailureMessage, withSaveFailureToast, createSlidePackageClipboard, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, hiddenSlideCue, editorThumbnailHeight, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, MIN_TOUCH_TARGET_PX, getLocalStorageUsageSummary, saveViewerProfile, confirmDeleteDialog, clearAllLocalViewerData, getSelectionTextStyleFlags, TEXT_DECORATION_FLAGS, dispatchCropRequest, applyRibbonGalleryItem, ribbonTransitionsDraftPatch, ribbonTransitionUpdates, ribbonTransitionsSoundChange, ribbonTransitionStockSoundUrl, playSlideTransitionPreview, playAnimationRibbonPreview, SLIDE_SHOW_OPTIONS, createViewerOptionsStore, subtitleSettingsFromOptions, subtitleSettingsLabels, isReviewCommentCommand, runReviewCommentCommand, hasTiltData, RULER_FONT_SIZE, toElementAxes, dragCropHandle, panCropImage, clientToSlidePoint, EDIT_POINTS_TARGET_ATTR, themeToCssVars, createCustomizationController, resolveEffectiveHiddenActions, pruneExpiredAutosaveSnapshots, createDeckStyleHost, galleryDeckView, tableLayoutCells, commitsThroughDeckStyle, resetChartFormatTarget, savedPresentationRevision, isCleanAfterSave, masterViewCrudActions, promptNameDialog, applyMasterViewCrudAction, masterViewCrudFailureKey, forgetStepsUsingRemovedParts, EDITOR_CHROME_CSS, ribbonCustomizationCss, applyMotionPathPreset, resetSlideLayoutPath, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, deleteAutosaveSnapshot, dispatchReadOnlyBannerIntent, readOnlyBannerState, buildFieldSubstitutionContext, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, observeElementHeight, printPropertiesFrameSlides, printPropertiesSlidesPerPage, PASTE_SPECIAL_OPTIONS, findCanvasElementNode, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, getDensePanelTouchTargetPx, shouldStickyActionRow, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, updateSubtitleSettings, overlayPointerInput, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, clearAutosaveSnapshots, canCropElement, cropSessionChanged, cancelCropUpdate, startCropSession, masterViewBackgroundColor, openExternalHyperlinkConfirmed, resolvePresentationAction, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, resolveEditPointsAvailability, isCurrentLayout, EXPANDED_MAX_HEIGHT, statusBarState, statusBarViewMode, saveProgressStatus, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, createCustomShowsController, resolveDefaultPrintSettings, HANDOUT_OPTIONS, effectiveOrientation, computeSlideCount, estimatePageCount, computeSlideIndices, bindPptxOptionsDialog, optionsBlockSlot, optionsPaneSlot, DEFAULT_QUICK_ACCESS_COMMAND_IDS, AI_OPTIONS_CATEGORY, buildCollaborationShareUrl, buildActiveSessionUsers, slideClipboardLabels, sorterPasteInsertAt, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, listenForOutlineViewDismiss, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, createCollaborationStateReporter, buildCollaborationState, writeBackReport, cropModeKeyAction, isEditPointsEnabled, findReplacementAvailability, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, transitionTemplateElements, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, PRESENTER_NAVIGATOR_LABEL_KEYS, getPresentationContextMenuSections, CONTEXT_MENU_PRESENTATION_LAYER, presentationViewItems, subtitleRecognitionLanguage, getSpeechRecognitionCtor, mergeCaptionResults, customizeContextMenuEntries, buildContextMenuEntries, contextMenuViewItems, customizeCanvasContextMenuEntries, buildCanvasContextMenuEntries, buildLayoutPreviewGeometry, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, themeEditorLabels, resolveNotesSegments, defaultRichEnabled, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX as INDENT_PX$1, buildNotesPrintHtml, dispatchStatusBarIntent, toggleSheet, describeElementChange, sanitizeMathMl, compileEquationTemplateMathMl, computeAllNotesPages, getNotesPrintableArea, CUSTOM_FONT_ACCEPT, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, resolveViewerAddinRows, createSlideSorterState, sorterSelectionIndexes, selectSorterSlide, applySorterAction, sorterGridColumns, sorterMenuContext, buildSlideSorterContextMenuEntries, slideSorterContextMenuLabel, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, presenterConsoleAction, presenterConsoleViewState, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, masterViewPseudoSlide, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, computeAnchoredPopupPosition, applyTableStyleDelete, applyTableStyleMapChange, registerCustomFont, QUICK_ACCESS_COMMAND_CATALOG, handleReadingViewKey, visibleTemplateElements, buildPreviewElements, deriveSlideFieldContext, MERGE_SHAPES_MENU_ITEMS, hasMultipleSelectedTableCells, isElementLocked, ELEMENT_GEOMETRY_SECTIONS, mergeSlideTransition, slideBackgroundClearState, slideBackgroundClearPatch, effectiveDirection, TRIGGER_OPTIONS, effectiveTimingCurve, getAfterAnimationState, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, elementLockTogglePatch, resolveInspectorSections, inspectorTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, inspectorNumber, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setDataLabelsRangeCache, imageResetPatch, imageResetState, canInteractWithElement, buildOleObjectNamePatch, strokeColorChange, shouldShowAccessibilitySection, withFrameSlides, withSlidesPerPage, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, setTrigger, setTriggerBookmark, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, directionValuesFor, buildAnimationTimelineBars, motionPathPresetIdForPath, MOTION_PATH_FAMILIES, motionPathPresetsByFamily, motionPathPresetLabelKey, motionPathFamilyLabelKey, EFFECT_SOUND_CATALOGUE, listMediaBookmarkOptions, selectedBookmarkOptionValue, inspectorFieldPatch, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, resolveDisplayedChartType, CHART_TYPE_OPTIONS, chartDataLabelsTogglePatch, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, seriesColorClearState, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, rebuildDrawingShapesIfCleared, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, cropResetState, cropResetPatch, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimResetState, mediaTrimEndMsFromAbsoluteMs, mediaTrimResetPatch, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyTextStyleUpdate, buildThemeColorSwatchGrid, themeColorGridView, recentColorsGridView, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, getEffectSoundAsset, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, withCellStyle, LBL as LBL$1, SEL as SEL$1, FILL_MODE_OPTIONS as FILL_MODE_OPTIONS$1, SECTION_HEADING, NUM as NUM$1, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, smartArtLayoutSwitchPatch, mediaTrimEndMsFromSeconds, validateMediaTrimRange, OFFICE_COLOR_SWATCHES, officeColorSwatchLabel, PATTERN_PRESET_OPTIONS as PATTERN_PRESET_OPTIONS$1, SHAPE_LINE_SECTIONS, shapeQuickStylePatch, SHAPE_EFFECT_SECTIONS, createLiveColorInput, themeColorGridCommit, TEXT_BOX_SECTIONS, buildTextWarpGallery, TEXT_WARP_PRESETS, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS as GRADIENT_TYPE_OPTIONS$1, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, quickStyleShapeStyle, textWarpStyle, toggleText3dExtrusion, BEVEL_PRESETS, cropFit, cropFill, cropToAspectRatio } from 'ooxml-ui/pptx';
5
5
  export { THEME_CATALOG, defaultCssVars, defaultRadius, defaultThemeColors, resolveThemeCatalogEntry, themeToCssVars, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius } from 'ooxml-ui/pptx';
6
6
  import React108, { createContext, useContext, useRef, useMemo, useCallback, useEffect, useState, Fragment as Fragment$1, useLayoutEffect, forwardRef, useSyncExternalStore, useReducer, useId, useDeferredValue } from 'react';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -2848,7 +2848,7 @@ function AccountPage() {
2848
2848
  refreshUsage();
2849
2849
  setTimeout(() => setCleared(false), 4e3);
2850
2850
  };
2851
- const version = "4.66.0" ;
2851
+ const version = "4.68.0" ;
2852
2852
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
2853
2853
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
2854
2854
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -9025,7 +9025,7 @@ function SlideCanvasContent({
9025
9025
  }
9026
9026
  );
9027
9027
  }
9028
- function LoadingState({ className }) {
9028
+ function LoadingState({ className, fontProgress }) {
9029
9029
  const { t } = useTranslation();
9030
9030
  return /* @__PURE__ */ jsx(
9031
9031
  "div",
@@ -9045,7 +9045,10 @@ function LoadingState({ className }) {
9045
9045
  "aria-hidden": "true"
9046
9046
  }
9047
9047
  ),
9048
- /* @__PURE__ */ jsx("span", { children: t("pptx.viewer.loading") })
9048
+ /* @__PURE__ */ jsx("span", { children: fontProgress ? t("pptx.viewer.loadingFonts", {
9049
+ loaded: fontProgress.loaded,
9050
+ total: fontProgress.total
9051
+ }) : t("pptx.viewer.loading") })
9049
9052
  ] })
9050
9053
  }
9051
9054
  );
@@ -9222,6 +9225,7 @@ function StatusBar(p) {
9222
9225
  dirty: p.isDirty,
9223
9226
  autosave: p.autosaveStatus,
9224
9227
  saveProgress: p.saveProgress ? saveProgressStatus(p.saveProgress, t) : void 0,
9228
+ fontProgress: p.fontProgress,
9225
9229
  zoomPercent: p.scale !== void 0 && !p.hideZoomControls ? p.scale * 100 : void 0,
9226
9230
  notesExpanded: p.isNotesExpanded,
9227
9231
  viewMode: statusBarViewMode(p.mode),
@@ -28414,6 +28418,7 @@ function ViewerBottomPanels({
28414
28418
  isDirty,
28415
28419
  autosaveStatus,
28416
28420
  saveProgress,
28421
+ fontProgress,
28417
28422
  onToggleNotes,
28418
28423
  onUpdateNotes,
28419
28424
  collaborationSlot,
@@ -28488,6 +28493,7 @@ function ViewerBottomPanels({
28488
28493
  isDirty,
28489
28494
  autosaveStatus,
28490
28495
  saveProgress,
28496
+ fontProgress,
28491
28497
  scale,
28492
28498
  onZoomIn,
28493
28499
  onZoomOut,
@@ -33931,16 +33937,20 @@ function useShapeFormatCommands(input) {
33931
33937
  crop
33932
33938
  };
33933
33939
  }
33934
- function useViewerCustomization(customization, legacyHiddenActions, optionsStore, allowExternalContent) {
33940
+ function useViewerCustomization(customization, legacyHiddenActions, optionsStore, allowExternalContent, googleFonts) {
33935
33941
  const controllerRef = useRef(null);
33936
33942
  if (!controllerRef.current) {
33937
33943
  controllerRef.current = createCustomizationController(customization);
33938
33944
  controllerRef.current.setAllowExternalContent(allowExternalContent);
33945
+ controllerRef.current.setGoogleFonts(googleFonts);
33939
33946
  }
33940
33947
  const controller = controllerRef.current;
33941
33948
  useLayoutEffect(() => {
33942
33949
  controller.setAllowExternalContent(allowExternalContent);
33943
33950
  }, [controller, allowExternalContent]);
33951
+ useLayoutEffect(() => {
33952
+ controller.setGoogleFonts(googleFonts);
33953
+ }, [controller, googleFonts]);
33944
33954
  const appliedRef = useRef(customization);
33945
33955
  useLayoutEffect(() => {
33946
33956
  if (appliedRef.current === customization) {
@@ -34249,7 +34259,8 @@ var PowerPointViewerBody = /* @__PURE__ */ forwardRef(
34249
34259
  customization,
34250
34260
  legacyHiddenActions,
34251
34261
  optionsStore,
34252
- allowExternalContent
34262
+ allowExternalContent,
34263
+ googleFonts
34253
34264
  );
34254
34265
  const { resolved: customizationResolved, hiddenActions } = custom;
34255
34266
  const aiEnabled = Boolean(ai) && isFeatureEnabled(customizationResolved, "ai");
@@ -34719,7 +34730,9 @@ var PowerPointViewerBody = /* @__PURE__ */ forwardRef(
34719
34730
  // http(s) image sources actually load.
34720
34731
  allowExternalImages: resolveAllowExternalContent(allowExternalContent, viewerOptions),
34721
34732
  initialSlide,
34722
- googleFonts,
34733
+ // Host `googleFonts` first, else Trust Center > "Download fonts"; read per render, so the
34734
+ // managed webfont link follows the option and the next load never sees a stale value.
34735
+ googleFonts: resolveEffectiveGoogleFonts(googleFonts, viewerOptions),
34723
34736
  limits,
34724
34737
  setReadOnlyRecommendation: readOnlyRec.setRecommendation,
34725
34738
  setModifyVerifier: readOnlyRec.setModifyVerifier,
@@ -35012,7 +35025,7 @@ var PowerPointViewerBody = /* @__PURE__ */ forwardRef(
35012
35025
  ref: containerRef,
35013
35026
  tabIndex: 0,
35014
35027
  className: "h-full w-full flex flex-col overflow-hidden outline-none",
35015
- children: loading ? /* @__PURE__ */ jsx(LoadingState, {}) : error ? /* @__PURE__ */ jsx(ErrorState, { error }) : /* @__PURE__ */ jsx(ThemeColorMapProvider, { value: themeColorMapValue, children: /* @__PURE__ */ jsxs(RecentColorsProvider, { value: recentColorsValue, children: [
35028
+ children: loading ? /* @__PURE__ */ jsx(LoadingState, { fontProgress: state.fontProgress }) : error ? /* @__PURE__ */ jsx(ErrorState, { error }) : /* @__PURE__ */ jsx(ThemeColorMapProvider, { value: themeColorMapValue, children: /* @__PURE__ */ jsxs(RecentColorsProvider, { value: recentColorsValue, children: [
35016
35029
  mode !== "present" && rootOptions.showToolbar && /* @__PURE__ */ jsx(
35017
35030
  ViewerToolbarSection,
35018
35031
  {
@@ -35150,6 +35163,7 @@ var PowerPointViewerBody = /* @__PURE__ */ forwardRef(
35150
35163
  isDirty: state.isDirty,
35151
35164
  autosaveStatus,
35152
35165
  saveProgress: saveProgressState,
35166
+ fontProgress: state.fontProgress,
35153
35167
  onToggleNotes: () => state.setIsSlideNotesCollapsed((p) => !p),
35154
35168
  onUpdateNotes: propertyHandlers.handleUpdateNotes,
35155
35169
  collaborationSlot: collaboration && shareAvailable ? /* @__PURE__ */ jsx(CollaborationStatusStrip, {}) : void 0,
Binary file
Binary file
@@ -2152,7 +2152,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2152
2152
  // container's `background-image` is suppressed for custom geometry, so
2153
2153
  // without this the shape fell back to the parser's representative solid
2154
2154
  // and lost every fade (issue #132).
2155
- buildSvgGradientDef(element.shapeStyle, element.id)
2155
+ buildSvgGradientDef(element.shapeStyle, element.id, {
2156
+ width: element.width,
2157
+ height: element.height
2158
+ })
2156
2159
  );
2157
2160
  }
2158
2161
  if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !buildStrokeOutline(element)) {
Binary file