pptx-react-viewer 3.0.0 → 3.0.2

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 (99) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/{AiChatPanel-NLIUZ5RI.js → AiChatPanel-235ZZA3Y.js} +23 -23
  3. package/dist/AiChatPanel-235ZZA3Y.js.br +0 -0
  4. package/dist/AiChatPanel-235ZZA3Y.js.gz +0 -0
  5. package/dist/{AiChatPanel-DMBQPAGB.mjs → AiChatPanel-DYOBY6OG.mjs} +3 -3
  6. package/dist/AiChatPanel-DYOBY6OG.mjs.br +0 -0
  7. package/dist/AiChatPanel-DYOBY6OG.mjs.gz +0 -0
  8. package/dist/{Model3DScene-JNZN42TU.js → Model3DScene-5QDYQF55.js} +2 -2
  9. package/dist/Model3DScene-5QDYQF55.js.br +0 -0
  10. package/dist/Model3DScene-5QDYQF55.js.gz +0 -0
  11. package/dist/{Model3DScene-ZO6U7YVU.mjs → Model3DScene-A3652H7T.mjs} +1 -1
  12. package/dist/Model3DScene-A3652H7T.mjs.br +0 -0
  13. package/dist/Model3DScene-A3652H7T.mjs.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-P6CVRWDQ.mjs → SurfaceChart3DScene-N66TY4SW.mjs} +1 -1
  15. package/dist/SurfaceChart3DScene-N66TY4SW.mjs.br +0 -0
  16. package/dist/SurfaceChart3DScene-N66TY4SW.mjs.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-PGD4ZCLI.js → SurfaceChart3DScene-QHENN3AF.js} +2 -2
  18. package/dist/SurfaceChart3DScene-QHENN3AF.js.br +0 -0
  19. package/dist/SurfaceChart3DScene-QHENN3AF.js.gz +0 -0
  20. package/dist/{chunk-SDOQKSKI.js → chunk-35YJ5RLU.js} +10 -10
  21. package/dist/chunk-35YJ5RLU.js.br +0 -0
  22. package/dist/{chunk-SDOQKSKI.js.gz → chunk-35YJ5RLU.js.gz} +0 -0
  23. package/dist/{chunk-H2ONCGFZ.mjs → chunk-4LHG6ZL7.mjs} +71 -23
  24. package/dist/chunk-4LHG6ZL7.mjs.br +0 -0
  25. package/dist/chunk-4LHG6ZL7.mjs.gz +0 -0
  26. package/dist/{chunk-3MW6F3K7.js → chunk-7HUYHWQS.js} +389 -389
  27. package/dist/chunk-7HUYHWQS.js.br +0 -0
  28. package/dist/chunk-7HUYHWQS.js.gz +0 -0
  29. package/dist/{chunk-OB4PKKIN.mjs → chunk-EVXT7HLY.mjs} +1 -1
  30. package/dist/chunk-EVXT7HLY.mjs.br +0 -0
  31. package/dist/chunk-EVXT7HLY.mjs.gz +0 -0
  32. package/dist/{chunk-WFMSDYVQ.js → chunk-GJ7E44BG.js} +3 -3
  33. package/dist/chunk-GJ7E44BG.js.br +0 -0
  34. package/dist/chunk-GJ7E44BG.js.gz +0 -0
  35. package/dist/{chunk-OXPD2UYI.mjs → chunk-M2TISD4A.mjs} +10 -10
  36. package/dist/chunk-M2TISD4A.mjs.br +0 -0
  37. package/dist/{chunk-OXPD2UYI.mjs.gz → chunk-M2TISD4A.mjs.gz} +0 -0
  38. package/dist/{chunk-S6PFSR7I.mjs → chunk-QG7TXWXP.mjs} +1 -1
  39. package/dist/chunk-QG7TXWXP.mjs.br +0 -0
  40. package/dist/chunk-QG7TXWXP.mjs.gz +0 -0
  41. package/dist/{chunk-RSEZYBKT.js → chunk-RYLLTHFD.js} +1112 -1064
  42. package/dist/chunk-RYLLTHFD.js.br +0 -0
  43. package/dist/chunk-RYLLTHFD.js.gz +0 -0
  44. package/dist/{chunk-XMLPTDPM.js → chunk-UU6NFFRR.js} +147 -147
  45. package/dist/chunk-UU6NFFRR.js.br +0 -0
  46. package/dist/chunk-UU6NFFRR.js.gz +0 -0
  47. package/dist/{chunk-BGAJLL4N.mjs → chunk-YISXETNN.mjs} +2 -2
  48. package/dist/chunk-YISXETNN.mjs.br +0 -0
  49. package/dist/chunk-YISXETNN.mjs.gz +0 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +45 -45
  52. package/dist/index.js.br +0 -0
  53. package/dist/index.js.gz +0 -0
  54. package/dist/index.mjs +5 -5
  55. package/dist/index.mjs.br +0 -0
  56. package/dist/index.mjs.gz +0 -0
  57. package/dist/internals.js +78 -78
  58. package/dist/internals.js.br +0 -0
  59. package/dist/internals.js.gz +0 -0
  60. package/dist/internals.mjs +3 -3
  61. package/dist/internals.mjs.br +0 -0
  62. package/dist/internals.mjs.gz +0 -0
  63. package/dist/viewer/index.js +26 -26
  64. package/dist/viewer/index.js.br +0 -0
  65. package/dist/viewer/index.js.gz +0 -0
  66. package/dist/viewer/index.mjs +5 -5
  67. package/dist/viewer/index.mjs.br +0 -0
  68. package/dist/viewer/index.mjs.gz +0 -0
  69. package/package.json +2 -2
  70. package/dist/AiChatPanel-DMBQPAGB.mjs.br +0 -0
  71. package/dist/AiChatPanel-DMBQPAGB.mjs.gz +0 -0
  72. package/dist/AiChatPanel-NLIUZ5RI.js.br +0 -0
  73. package/dist/AiChatPanel-NLIUZ5RI.js.gz +0 -0
  74. package/dist/Model3DScene-JNZN42TU.js.br +0 -0
  75. package/dist/Model3DScene-JNZN42TU.js.gz +0 -0
  76. package/dist/Model3DScene-ZO6U7YVU.mjs.br +0 -0
  77. package/dist/Model3DScene-ZO6U7YVU.mjs.gz +0 -0
  78. package/dist/SurfaceChart3DScene-P6CVRWDQ.mjs.br +0 -0
  79. package/dist/SurfaceChart3DScene-P6CVRWDQ.mjs.gz +0 -0
  80. package/dist/SurfaceChart3DScene-PGD4ZCLI.js.br +0 -0
  81. package/dist/SurfaceChart3DScene-PGD4ZCLI.js.gz +0 -0
  82. package/dist/chunk-3MW6F3K7.js.br +0 -0
  83. package/dist/chunk-3MW6F3K7.js.gz +0 -0
  84. package/dist/chunk-BGAJLL4N.mjs.br +0 -0
  85. package/dist/chunk-BGAJLL4N.mjs.gz +0 -0
  86. package/dist/chunk-H2ONCGFZ.mjs.br +0 -0
  87. package/dist/chunk-H2ONCGFZ.mjs.gz +0 -0
  88. package/dist/chunk-OB4PKKIN.mjs.br +0 -0
  89. package/dist/chunk-OB4PKKIN.mjs.gz +0 -0
  90. package/dist/chunk-OXPD2UYI.mjs.br +0 -0
  91. package/dist/chunk-RSEZYBKT.js.br +0 -0
  92. package/dist/chunk-RSEZYBKT.js.gz +0 -0
  93. package/dist/chunk-S6PFSR7I.mjs.br +0 -0
  94. package/dist/chunk-S6PFSR7I.mjs.gz +0 -0
  95. package/dist/chunk-SDOQKSKI.js.br +0 -0
  96. package/dist/chunk-WFMSDYVQ.js.br +0 -0
  97. package/dist/chunk-WFMSDYVQ.js.gz +0 -0
  98. package/dist/chunk-XMLPTDPM.js.br +0 -0
  99. package/dist/chunk-XMLPTDPM.js.gz +0 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,57 @@ A release listed with no entries carried no Conventional Commit in this package'
7
7
  scope: scripts/release-plan.mjs re-releases a package whenever any of its files
8
8
  change, not only on conventional ones.
9
9
 
10
+ ## [3.0.1](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@3.0.1) - 2026-08-22
11
+
12
+ ### Bug Fixes
13
+
14
+ - **core:** Spell the SmartArt role sentinel as a unicode escape (by @ChristopherVR) ([a2d4993](https://github.com/ChristopherVR/pptx-viewer/commit/a2d4993390bcdc28a3b24c1bf501c64f638f68d9))
15
+ - **react,angular:** Unclip selection handles and stop Angular text runs leaking whitespace (by @ChristopherVR) ([18eebb6](https://github.com/ChristopherVR/pptx-viewer/commit/18eebb6fd8451e1f1d46d0c248c1e0a5b0d94a53))
16
+
17
+ ## [3.0.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@3.0.0) - 2026-08-22
18
+
19
+ ### Features
20
+
21
+ - **core:** Unify SmartArt layout onto one DiagramML interpreter (by @ChristopherVR) ([89116b1](https://github.com/ChristopherVR/pptx-viewer/commit/89116b131a3f13fb6b65789c46d3f9a7814d04db))
22
+ - **core:** Write chart edits back to the embedded workbook (by @ChristopherVR) ([dee19fc](https://github.com/ChristopherVR/pptx-viewer/commit/dee19fc69b02ad36eadd39f48e589de9e76689fa))
23
+ - **core:** Solve relative SmartArt constraints and apply org-chart hints (by @ChristopherVR) ([65eee20](https://github.com/ChristopherVR/pptx-viewer/commit/65eee20e9e772ab40317df0ba1acf0c26a412973))
24
+ - **shared:** Print notes pages in every binding, and honour notesStyle in the master preview (by @ChristopherVR) ([6f2f54d](https://github.com/ChristopherVR/pptx-viewer/commit/6f2f54d503806054ae48bfc8f0d0c0ee565977ce))
25
+ - **core:** Author tag elements, model embedTrueTypeFonts, and add a text-style edit path (by @ChristopherVR) ([0048d16](https://github.com/ChristopherVR/pptx-viewer/commit/0048d163c6dd87d7a0bdc3207cbcbd4db39f8d0e))
26
+ - **core,shared:** Serialize data-table styling, and paint 3D chart surfaces (by @ChristopherVR) ([bd9595a](https://github.com/ChristopherVR/pptx-viewer/commit/bd9595a7bae6c545a649ff8e1929b27a638fcb5b))
27
+ - **core:** Honour per-node shapes, style roles and connector text in SmartArt (by @ChristopherVR) ([c823fca](https://github.com/ChristopherVR/pptx-viewer/commit/c823fca506f99e3c4f42ec11513e56cdb30f9a68))
28
+ - **core,shared:** Model timing templates and play animEffect filters (by @ChristopherVR) ([8bf91f2](https://github.com/ChristopherVR/pptx-viewer/commit/8bf91f20c907f9d92abbcd5a59fb424ddfabdbd8))
29
+ - **core,shared:** Cross-browser reflections, overlay fills, and remaining text gaps (by @ChristopherVR) ([c0b0d6d](https://github.com/ChristopherVR/pptx-viewer/commit/c0b0d6d6805c6383ba2a01da3c8a22792eb22cdb))
30
+
31
+ ### Bug Fixes
32
+
33
+ - **core:** Close five OpenXML parse and serialize fidelity gaps (by @ChristopherVR) ([641b0b2](https://github.com/ChristopherVR/pptx-viewer/commit/641b0b21d82442262f3f2d0e4ed2894cd71c07e9))
34
+ - **core,shared:** Correct animation preset IDs against PowerPoint COM ground truth (by @ChristopherVR) ([61b0014](https://github.com/ChristopherVR/pptx-viewer/commit/61b001440de0bf73bfcd6efd21c8df21bd47e5c8))
35
+ - **shared:** Honour a:ln/@algn and per-subpath fill modes (by @ChristopherVR) ([d049a8f](https://github.com/ChristopherVR/pptx-viewer/commit/d049a8f7806b7efb85e643e12643393372ccf603))
36
+ - **shared:** Correct autofit and paragraph-spacing semantics (by @ChristopherVR) ([86f61e9](https://github.com/ChristopherVR/pptx-viewer/commit/86f61e9b6e2cb0fe34f2e958273f35702f58fc6a))
37
+ - **shared:** Move per-script fonts and measured tab layout out of React (by @ChristopherVR) ([dbd3442](https://github.com/ChristopherVR/pptx-viewer/commit/dbd3442e2173a8b8b397af592f01e39daad95ff8))
38
+ - **shared:** Render table cell image fill, zero margins and authored grid spacing (by @ChristopherVR) ([d4079d2](https://github.com/ChristopherVR/pptx-viewer/commit/d4079d20b6517a0aac4655882e27228abc06ae09))
39
+ - **react:** Consume the shared render decisions and fix a swallowed load error (by @ChristopherVR) ([7ec6892](https://github.com/ChristopherVR/pptx-viewer/commit/7ec6892d445980597d584166c905d2bd26375752))
40
+ - **core,shared:** Honour cTn timing attributes, after-animation and effect sound (by @ChristopherVR) ([07ee51f](https://github.com/ChristopherVR/pptx-viewer/commit/07ee51f8b11431153e9ce2553c4c11a51e15316e))
41
+ - **core:** Close slide-structure, notes-style and DrawingML parse gaps (by @ChristopherVR) ([ee1dbcd](https://github.com/ChristopherVR/pptx-viewer/commit/ee1dbcd3278e2bde7b066c4085a82f56cc818f6a))
42
+ - **shared:** Render data tables, legend entries, image overlays and 3D text (by @ChristopherVR) ([ecec502](https://github.com/ChristopherVR/pptx-viewer/commit/ecec502e205f06c1bb7dec042f7693ac4fd8a74e))
43
+ - **react:** Consume the shared decisions for the second parity wave (by @ChristopherVR) ([7238a36](https://github.com/ChristopherVR/pptx-viewer/commit/7238a36e63c639376f241316b5d8c661e824fedb))
44
+
45
+ ### Refactor
46
+
47
+ - **shared:** Split oversized text modules and add the circle-in keyframe (by @ChristopherVR) ([1c0797f](https://github.com/ChristopherVR/pptx-viewer/commit/1c0797f7d5468dca16f6cb53c1ad413db4fc29e0))
48
+
49
+ ### Documentation
50
+
51
+ - **core:** Record audited OpenXML construct coverage in the manifest (by @ChristopherVR) ([812fe61](https://github.com/ChristopherVR/pptx-viewer/commit/812fe61e66687a48c2cd19eeb0c502767c25e3c1))
52
+
53
+ ### Testing
54
+
55
+ - **core:** Evidence previously unverified OpenXML constructs, and record what is not implemented (by @ChristopherVR) ([4dc6028](https://github.com/ChristopherVR/pptx-viewer/commit/4dc602876bd49cdb03b084f9f4fa2268aa01f22f))
56
+
57
+ ### Chores
58
+
59
+ - **core:** Complete barrel and runtime wiring for the preceding two changes (by @ChristopherVR) ([115379e](https://github.com/ChristopherVR/pptx-viewer/commit/115379e9a757b029fbc0cbb74ae51628f7fb3e27))
60
+
10
61
  ## [2.22.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@2.22.0) - 2026-08-21
11
62
 
12
63
  ### Features
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkWFMSDYVQ_js = require('./chunk-WFMSDYVQ.js');
4
- var chunkXMLPTDPM_js = require('./chunk-XMLPTDPM.js');
3
+ var chunkGJ7E44BG_js = require('./chunk-GJ7E44BG.js');
4
+ var chunkUU6NFFRR_js = require('./chunk-UU6NFFRR.js');
5
5
  require('./chunk-U6A5FWWE.js');
6
- require('./chunk-SDOQKSKI.js');
6
+ require('./chunk-35YJ5RLU.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 chunkWFMSDYVQ_js.isAiAvailable();
26
+ const available = await chunkGJ7E44BG_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 chunkWFMSDYVQ_js.createAiChatSession(bridge, configRef.current);
34
+ const built = await chunkGJ7E44BG_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 chunkWFMSDYVQ_js.buildDeckContext(bridge, { strategy, focus: {} });
140
+ context = await chunkGJ7E44BG_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?.(chunkWFMSDYVQ_js.toolCanvasTarget(call.toolName, call.input));
203
+ onToolTargetRef.current?.(chunkGJ7E44BG_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 ?? chunkWFMSDYVQ_js.createChatHistoryStore(), [input.store]);
279
+ const store = react.useMemo(() => input.store ?? chunkGJ7E44BG_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: chunkXMLPTDPM_js.cn(
422
+ className: chunkUU6NFFRR_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 = chunkWFMSDYVQ_js.focusTargetChips(targets, slides);
449
- const twoTables = chunkWFMSDYVQ_js.isTwoTableFocus(targets, slides);
448
+ const chips = chunkGJ7E44BG_js.focusTargetChips(targets, slides);
449
+ const twoTables = chunkGJ7E44BG_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: chunkXMLPTDPM_js.cn(
456
+ className: chunkUU6NFFRR_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: chunkXMLPTDPM_js.cn(
489
+ className: chunkUU6NFFRR_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: chunkXMLPTDPM_js.cn(
568
+ className: chunkUU6NFFRR_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 = chunkWFMSDYVQ_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
723
+ const activity = chunkGJ7E44BG_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
724
724
  const Icon = ICONS[activity.icon] ?? lu.LuWrench;
725
- const rawSummary = chunkWFMSDYVQ_js.summarizeToolArgs(part.input);
725
+ const rawSummary = chunkGJ7E44BG_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: chunkXMLPTDPM_js.cn(
732
+ className: chunkUU6NFFRR_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: chunkXMLPTDPM_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
738
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkUU6NFFRR_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
739
739
  /* @__PURE__ */ jsxRuntime.jsxs(
740
740
  "span",
741
741
  {
742
- className: chunkXMLPTDPM_js.cn(
742
+ className: chunkUU6NFFRR_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
- chunkWFMSDYVQ_js.toolLabel(part.toolName),
759
+ chunkGJ7E44BG_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: chunkXMLPTDPM_js.cn(
790
+ className: chunkUU6NFFRR_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(chunkWFMSDYVQ_js.humanizeDiffLine);
837
+ const lines = proposal.summary.map(chunkGJ7E44BG_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(() => chunkWFMSDYVQ_js.deckIdFromBridge(bridge), [bridge]);
1045
+ const deckId = react.useMemo(() => chunkGJ7E44BG_js.deckIdFromBridge(bridge), [bridge]);
1046
1046
  return /* @__PURE__ */ jsxRuntime.jsxs(
1047
1047
  "div",
1048
1048
  {
Binary file
Binary file
@@ -1,7 +1,7 @@
1
- import { deckIdFromBridge, isAiAvailable, createAiChatSession, toolCanvasTarget, createChatHistoryStore, focusTargetChips, isTwoTableFocus, humanizeDiffLine, buildDeckContext, describeToolActivity, summarizeToolArgs, toolLabel } from './chunk-OB4PKKIN.mjs';
2
- import { cn } from './chunk-S6PFSR7I.mjs';
1
+ import { deckIdFromBridge, isAiAvailable, createAiChatSession, toolCanvasTarget, createChatHistoryStore, focusTargetChips, isTwoTableFocus, humanizeDiffLine, buildDeckContext, describeToolActivity, summarizeToolArgs, toolLabel } from './chunk-EVXT7HLY.mjs';
2
+ import { cn } from './chunk-QG7TXWXP.mjs';
3
3
  import './chunk-L5MNLIQF.mjs';
4
- import './chunk-OXPD2UYI.mjs';
4
+ import './chunk-M2TISD4A.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,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkSDOQKSKI_js = require('./chunk-SDOQKSKI.js');
3
+ var chunk35YJ5RLU_js = require('./chunk-35YJ5RLU.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 chunkSDOQKSKI_js.mountModel3D(container, modelUrl, { width, height, interactive }).then((handle) => {
17
+ void chunk35YJ5RLU_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,4 +1,4 @@
1
- import { mountModel3D } from './chunk-OXPD2UYI.mjs';
1
+ import { mountModel3D } from './chunk-M2TISD4A.mjs';
2
2
  import './chunk-XGB3TDIC.mjs';
3
3
  import { useRef, useEffect } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,4 +1,4 @@
1
- import { mountSurfaceChart3D } from './chunk-OXPD2UYI.mjs';
1
+ import { mountSurfaceChart3D } from './chunk-M2TISD4A.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 chunkSDOQKSKI_js = require('./chunk-SDOQKSKI.js');
3
+ var chunk35YJ5RLU_js = require('./chunk-35YJ5RLU.js');
4
4
  require('./chunk-4VNS5WPM.js');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -16,7 +16,7 @@ function SurfaceChart3DScene({
16
16
  return;
17
17
  }
18
18
  let disposed = false;
19
- void chunkSDOQKSKI_js.mountSurfaceChart3D(container, options).then((handle) => {
19
+ void chunk35YJ5RLU_js.mountSurfaceChart3D(container, options).then((handle) => {
20
20
  if (disposed) {
21
21
  handle.dispose();
22
22
  } else {
@@ -99818,6 +99818,15 @@ function strokeOnlyPresetPathData(element) {
99818
99818
  const stroked = paths.filter((path) => path.stroke !== false).map((path) => path.d);
99819
99819
  return stroked.length > 0 ? stroked.join(" ") : void 0;
99820
99820
  }
99821
+ function hasStrokePaint(style) {
99822
+ if (!style || Math.max(0, style.strokeWidth ?? 0) <= 0) {
99823
+ return false;
99824
+ }
99825
+ return style.strokeColor !== void 0 || style.strokeFillMode !== void 0;
99826
+ }
99827
+ function paintedStrokeWidth(style) {
99828
+ return hasStrokePaint(style) ? Math.max(0, style?.strokeWidth ?? 0) : 0;
99829
+ }
99821
99830
  function clampUnit(value) {
99822
99831
  return value < 0 ? 0 : value > 1 ? 1 : value;
99823
99832
  }
@@ -100391,7 +100400,7 @@ function outlineStrands(compoundLine, strokeWidth) {
100391
100400
  return offsets.map((offset, idx) => ({ strokeWidth: widths[idx] ?? strokeWidth, offset }));
100392
100401
  }
100393
100402
  function needsCenteredStrokeOverlay(element, style, declaredWidth) {
100394
- if (!style || declaredWidth <= 0 || element.type === "connector") {
100403
+ if (!style || declaredWidth <= 0 || element.type === "connector" || !hasStrokePaint(style)) {
100395
100404
  return false;
100396
100405
  }
100397
100406
  const shapeType = getShapeType(element.shapeType);
@@ -100542,15 +100551,6 @@ function resolveShapeGeometry(element) {
100542
100551
  }
100543
100552
  return { kind: "none" };
100544
100553
  }
100545
- function hasStrokePaint(style) {
100546
- if (!style || Math.max(0, style.strokeWidth ?? 0) <= 0) {
100547
- return false;
100548
- }
100549
- return style.strokeColor !== void 0 || style.strokeFillMode !== void 0;
100550
- }
100551
- function paintedStrokeWidth(style) {
100552
- return hasStrokePaint(style) ? Math.max(0, style?.strokeWidth ?? 0) : 0;
100553
- }
100554
100554
  var NO_STROKE = {
100555
100555
  borderWidth: 0,
100556
100556
  borderStyle: void 0,
Binary file
@@ -1,8 +1,8 @@
1
- import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-OB4PKKIN.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-BGAJLL4N.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-S6PFSR7I.mjs';
1
+ import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-EVXT7HLY.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-YISXETNN.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-QG7TXWXP.mjs';
4
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, buildSubpathFillOverlay, isImageLikeElement, getComputedFillStyle, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, 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, buildSurfaceChart3DDataForElement, 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, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, 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, CHART_TYPE_OPTIONS, 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-OXPD2UYI.mjs';
5
+ import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, isElementActionable, getImageEffectsOpacity, getImageEffectsFilter, 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, buildSubpathFillOverlay, isImageLikeElement, getComputedFillStyle, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, 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, buildSurfaceChart3DDataForElement, 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, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, 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, getElementTransformWithoutRotation, 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, CHART_TYPE_OPTIONS, 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-M2TISD4A.mjs';
6
6
  import React15, { 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';
@@ -485,7 +485,7 @@ function FailedToLoad() {
485
485
  var LazySurfaceChart3DScene = React15.lazy(
486
486
  async () => {
487
487
  try {
488
- return await import('./SurfaceChart3DScene-P6CVRWDQ.mjs');
488
+ return await import('./SurfaceChart3DScene-N66TY4SW.mjs');
489
489
  } catch {
490
490
  return { default: FailedToLoad };
491
491
  }
@@ -1839,7 +1839,6 @@ var ElementRenderer = React15.memo(
1839
1839
  adjustmentHandles: adjH,
1840
1840
  onResizePointerDown,
1841
1841
  onAdjustmentPointerDown,
1842
- onRotate,
1843
1842
  onInlineEditChange,
1844
1843
  onInlineEditCommit,
1845
1844
  onInlineEditCancel,
@@ -1933,7 +1932,6 @@ var ElementRenderer = React15.memo(
1933
1932
  );
1934
1933
  }
1935
1934
  const effectiveCanInteract = canInteract && allow.selectable;
1936
- const effectiveShowResizeHandles = showResizeHandles && allow.resizable;
1937
1935
  const effectiveIsInlineEditing = isInlineEditing && allow.textEditable;
1938
1936
  const canEditSmartArt = effectiveCanInteract && allow.textEditable;
1939
1937
  const canEditChart = effectiveCanInteract;
@@ -2075,19 +2073,7 @@ var ElementRenderer = React15.memo(
2075
2073
  onUpdateChartElement: chartUpdateHandler,
2076
2074
  onFormatText
2077
2075
  }),
2078
- /* @__PURE__ */ jsx(ActionAffordances, { affordance: actionAffordance }),
2079
- effectiveShowResizeHandles && !effectiveIsInlineEditing && /* @__PURE__ */ jsx(
2080
- ResizeHandles,
2081
- {
2082
- elementId: el.id,
2083
- adjustmentHandles: adjH,
2084
- onResizePointerDown,
2085
- onAdjustmentPointerDown,
2086
- rotation: el.rotation,
2087
- nonRotationTransform: getElementTransformWithoutRotation(el),
2088
- onRotate: allow.rotatable ? onRotate : void 0
2089
- }
2090
- )
2076
+ /* @__PURE__ */ jsx(ActionAffordances, { affordance: actionAffordance })
2091
2077
  ]
2092
2078
  }
2093
2079
  );
@@ -2652,7 +2638,7 @@ function FailedToLoad2() {
2652
2638
  var LazyModel3DScene = React15.lazy(
2653
2639
  async () => {
2654
2640
  try {
2655
- return await import('./Model3DScene-ZO6U7YVU.mjs');
2641
+ return await import('./Model3DScene-A3652H7T.mjs');
2656
2642
  } catch {
2657
2643
  return { default: FailedToLoad2 };
2658
2644
  }
@@ -5846,7 +5832,7 @@ function AccountPage() {
5846
5832
  return void 0;
5847
5833
  });
5848
5834
  };
5849
- const version = "2.22.0" ;
5835
+ const version = "3.0.1" ;
5850
5836
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
5851
5837
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
5852
5838
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -11059,6 +11045,55 @@ function Ruler({
11059
11045
  )
11060
11046
  ] });
11061
11047
  }
11048
+ function SelectionHandleOverlay({
11049
+ element,
11050
+ adjustmentHandles,
11051
+ onResizePointerDown,
11052
+ onAdjustmentPointerDown,
11053
+ onRotate,
11054
+ onClick,
11055
+ onDoubleClick,
11056
+ onContextMenu
11057
+ }) {
11058
+ const allow = resolveElementInteractivity(element);
11059
+ return /* @__PURE__ */ jsx(
11060
+ "div",
11061
+ {
11062
+ "data-element-id": element.id,
11063
+ "data-pptx-selection-handle-host": "true",
11064
+ style: {
11065
+ position: "absolute",
11066
+ left: element.x,
11067
+ top: element.y,
11068
+ width: Math.max(element.width, MIN_ELEMENT_SIZE),
11069
+ height: Math.max(element.height, MIN_ELEMENT_SIZE),
11070
+ transform: getElementTransform(element),
11071
+ transformOrigin: "center",
11072
+ // Transparent everywhere a handle button is not, so a click that
11073
+ // misses every handle still reaches the shape (or whatever is
11074
+ // behind it) exactly as if this host did not exist. `ResizeHandles`
11075
+ // renders with `forcePointerEvents` so its own buttons opt back in.
11076
+ pointerEvents: "none"
11077
+ },
11078
+ onClick: (e) => onClick(element.id, e),
11079
+ onDoubleClick: (e) => onDoubleClick(element.id, e),
11080
+ onContextMenu: (e) => onContextMenu(element.id, e),
11081
+ children: /* @__PURE__ */ jsx(
11082
+ ResizeHandles,
11083
+ {
11084
+ elementId: element.id,
11085
+ adjustmentHandles,
11086
+ onResizePointerDown,
11087
+ onAdjustmentPointerDown,
11088
+ rotation: element.rotation,
11089
+ nonRotationTransform: getElementTransformWithoutRotation(element),
11090
+ onRotate: allow.rotatable ? onRotate : void 0,
11091
+ forcePointerEvents: true
11092
+ }
11093
+ )
11094
+ }
11095
+ );
11096
+ }
11062
11097
 
11063
11098
  // src/viewer/components/canvas/canvas-types.ts
11064
11099
  function getElementIdFromEvent(e) {
@@ -11996,6 +12031,19 @@ function SlideCanvas({
11996
12031
  },
11997
12032
  element.id
11998
12033
  )),
12034
+ isEditableCanvas && selectedElement && selectedElementIdSet.size <= 1 && !inlineEditingElementId && !isConnectorOrLineElement(selectedElement) && /* @__PURE__ */ jsx(
12035
+ SelectionHandleOverlay,
12036
+ {
12037
+ element: selectedElement,
12038
+ adjustmentHandles: getShapeAdjustmentHandleDescriptors(selectedElement),
12039
+ onResizePointerDown: stableResizePointerDown,
12040
+ onAdjustmentPointerDown: stableAdjustmentPointerDown,
12041
+ onRotate: stableRotate,
12042
+ onClick,
12043
+ onDoubleClick,
12044
+ onContextMenu
12045
+ }
12046
+ ),
11999
12047
  /* @__PURE__ */ jsx(MarqueeOverlay, { marqueeSelectionState }),
12000
12048
  activeSlide?.activeXControls && activeSlide.activeXControls.length > 0 && /* @__PURE__ */ jsx(ActiveXControlOverlay, { controls: activeSlide.activeXControls, canvasSize }),
12001
12049
  showCommentMarkers && comments && comments.length > 0 && /* @__PURE__ */ jsx(
@@ -34546,7 +34594,7 @@ ${url}`)) {
34546
34594
  var AiChatPanel = lazy(async () => {
34547
34595
  const [{ useChat }, { default: Panel }] = await Promise.all([
34548
34596
  import('@ai-sdk/react'),
34549
- import('./AiChatPanel-DMBQPAGB.mjs')
34597
+ import('./AiChatPanel-DYOBY6OG.mjs')
34550
34598
  ]);
34551
34599
  function BoundAiChatPanel(props) {
34552
34600
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
Binary file
Binary file