pptx-react-viewer 4.9.0 → 4.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/dist/{AiChatPanel-YRWC7C3B.mjs → AiChatPanel-AR2K2XN2.mjs} +3 -3
  3. package/dist/AiChatPanel-AR2K2XN2.mjs.br +0 -0
  4. package/dist/AiChatPanel-AR2K2XN2.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-WJ64Q6KO.js → AiChatPanel-X6E22UAR.js} +27 -27
  6. package/dist/AiChatPanel-X6E22UAR.js.br +0 -0
  7. package/dist/AiChatPanel-X6E22UAR.js.gz +0 -0
  8. package/dist/{Model3DScene-DS6AQWFV.mjs → Model3DScene-FF4RCG4O.mjs} +1 -1
  9. package/dist/Model3DScene-FF4RCG4O.mjs.br +0 -0
  10. package/dist/Model3DScene-FF4RCG4O.mjs.gz +0 -0
  11. package/dist/{Model3DScene-VHDYCHO5.js → Model3DScene-ZSCVKXZE.js} +2 -2
  12. package/dist/Model3DScene-ZSCVKXZE.js.br +0 -0
  13. package/dist/Model3DScene-ZSCVKXZE.js.gz +0 -0
  14. package/dist/{chunk-M6KW27TZ.mjs → chunk-22ODJ4CT.mjs} +17 -13
  15. package/dist/chunk-22ODJ4CT.mjs.br +0 -0
  16. package/dist/chunk-22ODJ4CT.mjs.gz +0 -0
  17. package/dist/{chunk-7NTNFOPT.js → chunk-7EP22XCS.js} +187 -187
  18. package/dist/chunk-7EP22XCS.js.br +0 -0
  19. package/dist/chunk-7EP22XCS.js.gz +0 -0
  20. package/dist/{chunk-NMXIX7E4.js → chunk-ICOJBMRC.js} +1179 -1179
  21. package/dist/chunk-ICOJBMRC.js.br +0 -0
  22. package/dist/chunk-ICOJBMRC.js.gz +0 -0
  23. package/dist/{chunk-YWAFJZ23.js → chunk-JJE4AACM.js} +861 -346
  24. package/dist/chunk-JJE4AACM.js.br +0 -0
  25. package/dist/chunk-JJE4AACM.js.gz +0 -0
  26. package/dist/{chunk-PJT2DTOS.mjs → chunk-LDRA5LJT.mjs} +861 -346
  27. package/dist/chunk-LDRA5LJT.mjs.br +0 -0
  28. package/dist/chunk-LDRA5LJT.mjs.gz +0 -0
  29. package/dist/{chunk-Y7RTQOD6.mjs → chunk-NE4USMMB.mjs} +1 -1
  30. package/dist/chunk-NE4USMMB.mjs.br +0 -0
  31. package/dist/chunk-NE4USMMB.mjs.gz +0 -0
  32. package/dist/{chunk-K5HZD63F.mjs → chunk-QPWNFTU5.mjs} +6 -6
  33. package/dist/chunk-QPWNFTU5.mjs.br +0 -0
  34. package/dist/chunk-QPWNFTU5.mjs.gz +0 -0
  35. package/dist/{chunk-ZZY24BB7.mjs → chunk-VOD4C7OS.mjs} +1 -1
  36. package/dist/chunk-VOD4C7OS.mjs.br +0 -0
  37. package/dist/chunk-VOD4C7OS.mjs.gz +0 -0
  38. package/dist/{chunk-ZZ6IPWOP.js → chunk-VYJFYRT4.js} +820 -816
  39. package/dist/chunk-VYJFYRT4.js.br +0 -0
  40. package/dist/chunk-VYJFYRT4.js.gz +0 -0
  41. package/dist/{chunk-PSJTZIIK.js → chunk-WLEFW2F4.js} +5 -5
  42. package/dist/chunk-WLEFW2F4.js.br +0 -0
  43. package/dist/chunk-WLEFW2F4.js.gz +0 -0
  44. package/dist/index.d.ts +20 -4
  45. package/dist/index.js +61 -61
  46. package/dist/index.js.br +0 -0
  47. package/dist/index.js.gz +0 -0
  48. package/dist/index.mjs +5 -5
  49. package/dist/index.mjs.br +0 -0
  50. package/dist/index.mjs.gz +0 -0
  51. package/dist/internals.d.ts +22 -6
  52. package/dist/internals.js +104 -104
  53. package/dist/internals.js.br +0 -0
  54. package/dist/internals.js.gz +0 -0
  55. package/dist/internals.mjs +3 -3
  56. package/dist/internals.mjs.br +0 -0
  57. package/dist/internals.mjs.gz +0 -0
  58. package/dist/viewer/index.d.ts +20 -4
  59. package/dist/viewer/index.js +26 -26
  60. package/dist/viewer/index.js.br +0 -0
  61. package/dist/viewer/index.js.gz +0 -0
  62. package/dist/viewer/index.mjs +5 -5
  63. package/dist/viewer/index.mjs.br +0 -0
  64. package/dist/viewer/index.mjs.gz +0 -0
  65. package/package.json +2 -2
  66. package/dist/AiChatPanel-WJ64Q6KO.js.br +0 -0
  67. package/dist/AiChatPanel-WJ64Q6KO.js.gz +0 -0
  68. package/dist/AiChatPanel-YRWC7C3B.mjs.br +0 -0
  69. package/dist/AiChatPanel-YRWC7C3B.mjs.gz +0 -0
  70. package/dist/Model3DScene-DS6AQWFV.mjs.br +0 -0
  71. package/dist/Model3DScene-DS6AQWFV.mjs.gz +0 -0
  72. package/dist/Model3DScene-VHDYCHO5.js.br +0 -0
  73. package/dist/Model3DScene-VHDYCHO5.js.gz +0 -0
  74. package/dist/chunk-7NTNFOPT.js.br +0 -0
  75. package/dist/chunk-7NTNFOPT.js.gz +0 -0
  76. package/dist/chunk-K5HZD63F.mjs.br +0 -0
  77. package/dist/chunk-K5HZD63F.mjs.gz +0 -0
  78. package/dist/chunk-M6KW27TZ.mjs.br +0 -0
  79. package/dist/chunk-M6KW27TZ.mjs.gz +0 -0
  80. package/dist/chunk-NMXIX7E4.js.br +0 -0
  81. package/dist/chunk-NMXIX7E4.js.gz +0 -0
  82. package/dist/chunk-PJT2DTOS.mjs.br +0 -0
  83. package/dist/chunk-PJT2DTOS.mjs.gz +0 -0
  84. package/dist/chunk-PSJTZIIK.js.br +0 -0
  85. package/dist/chunk-PSJTZIIK.js.gz +0 -0
  86. package/dist/chunk-Y7RTQOD6.mjs.br +0 -0
  87. package/dist/chunk-Y7RTQOD6.mjs.gz +0 -0
  88. package/dist/chunk-YWAFJZ23.js.br +0 -0
  89. package/dist/chunk-YWAFJZ23.js.gz +0 -0
  90. package/dist/chunk-ZZ6IPWOP.js.br +0 -0
  91. package/dist/chunk-ZZ6IPWOP.js.gz +0 -0
  92. package/dist/chunk-ZZY24BB7.mjs.br +0 -0
  93. package/dist/chunk-ZZY24BB7.mjs.gz +0 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,80 @@ 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
+ ## [4.10.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@4.10.0) - 2026-09-26
11
+
12
+ ### Features
13
+
14
+ - **core:** Style regenerated SmartArt shapes by their own style label (by @claude) ([67ea2fb](https://github.com/ChristopherVR/pptx-viewer/commit/67ea2fbe0efdded17cb3cfce73921dcef8712d85))
15
+
16
+ ### Bug Fixes
17
+
18
+ - **react:** Keep the slide rail's virtual window after the pane reopens (by @claude) ([fb9e101](https://github.com/ChristopherVR/pptx-viewer/commit/fb9e101bfb111d772cd218182403add205f7962f))
19
+ - **shared:** Page slides with Up, Down, PageUp and PageDown in the editor (by @claude) ([c0cc4dc](https://github.com/ChristopherVR/pptx-viewer/commit/c0cc4dcdff6525e06aac39f7091723aa3bb9d882))
20
+ - **core:** Draw a merged SmartArt text node's labels in its own colour (by @claude) ([7e6232d](https://github.com/ChristopherVR/pptx-viewer/commit/7e6232d6b8115f448c328db4a1a8478c2a934345))
21
+ - **shared:** Blend translucent SmartArt solids once and draw clear as glass (by @claude) ([52128d7](https://github.com/ChristopherVR/pptx-viewer/commit/52128d737ebf2b3b3c37ccd60edc4ccd5fa9ea20))
22
+
23
+ ## [4.9.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@4.9.0) - 2026-09-25
24
+
25
+ ### Features
26
+
27
+ - **shared:** Draw horizontal 3D bars without right-angle axes on the perspective box (by @claude) ([e0c1aad](https://github.com/ChristopherVR/pptx-viewer/commit/e0c1aad3797be9fe75e2b02cd225d19106d38eb0))
28
+ - **shared:** Draw right-angle-axes 3D line, area and surface charts obliquely (by @claude) ([e74306a](https://github.com/ChristopherVR/pptx-viewer/commit/e74306a1a2cf6a69cd3f9672c560cc80550cff16))
29
+ - **core:** Write the slide master's placeholders and theme into .ppt (by @ChristopherVR) ([95b2e26](https://github.com/ChristopherVR/pptx-viewer/commit/95b2e26e31a5f8a5da931394f19b460c38177981))
30
+ - **shared:** Ribbon group/control ids and the style gallery framework (by @ChristopherVR) ([adda887](https://github.com/ChristopherVR/pptx-viewer/commit/adda8870353bdb2f476ff63532fe8c726f9cab50))
31
+ - **locales:** Translate the ribbon gallery and contextual tab strings (by @ChristopherVR) ([dad9566](https://github.com/ChristopherVR/pptx-viewer/commit/dad95669edd0a8298f8b4f5a6c685e785312cdc1))
32
+ - **react:** Ribbon style galleries, contextual tabs and group customisation (by @ChristopherVR) ([4e67c19](https://github.com/ChristopherVR/pptx-viewer/commit/4e67c195b700dec326c20e839ed9221a89c29846))
33
+ - **core:** Keep a text reflection's end position and direction (by @ChristopherVR) ([afb807d](https://github.com/ChristopherVR/pptx-viewer/commit/afb807d81d18c017367d1af5bd01ddf5bb9a036e))
34
+ - **shared:** Fill the ribbon style galleries (by @ChristopherVR) ([2a743b9](https://github.com/ChristopherVR/pptx-viewer/commit/2a743b97996e32f2cef891329c9ea86b070e2a0f))
35
+ - **locales:** Translate the table, chart, SmartArt and theme gallery names (by @ChristopherVR) ([a80c0a8](https://github.com/ChristopherVR/pptx-viewer/commit/a80c0a875ab180f7804fd08fa1f7e9be71ac15a4))
36
+ - **locales:** Translate the Shape Effects, WordArt and list gallery tiles (by @ChristopherVR) ([7b665fe](https://github.com/ChristopherVR/pptx-viewer/commit/7b665fed8d6bfca94ab43721aaab597509f9c9f2))
37
+ - **shared:** Picture Styles gallery with PowerPoint's 28 styles (by @ChristopherVR) ([2d56881](https://github.com/ChristopherVR/pptx-viewer/commit/2d56881a23e1a49b631e8554d42a2bdc9366f527))
38
+ - **locales:** Translate the Picture Styles gallery names (by @ChristopherVR) ([0e1eab2](https://github.com/ChristopherVR/pptx-viewer/commit/0e1eab2bd66ed087cc71f75f66506b99cbc17d79))
39
+ - **shared:** Find the gallery theme preset a deck's theme matches (by @ChristopherVR) ([15d0e41](https://github.com/ChristopherVR/pptx-viewer/commit/15d0e41ad8b560325e366dbc36aa4303af2d9e36))
40
+ - **shared:** Play entrances and exits from the deck's behaviour tree (by @ChristopherVR) ([18c512e](https://github.com/ChristopherVR/pptx-viewer/commit/18c512ecf11aeaa19140124f2c85c66f525af010))
41
+ - **shared:** Offer only the directions PowerPoint has for a preset (by @ChristopherVR) ([999208d](https://github.com/ChristopherVR/pptx-viewer/commit/999208d9906bd26b6b7d1d36ce143acaf6630957))
42
+ - **shared:** Preview entrances and exits with PowerPoint's own tree (by @ChristopherVR) ([b3cc6c6](https://github.com/ChristopherVR/pptx-viewer/commit/b3cc6c67383c236c3d9ed386a20f8c7e478bd2a5))
43
+ - **react:** Offer PowerPoint's directions and preview from its tree (by @ChristopherVR) ([033c4c0](https://github.com/ChristopherVR/pptx-viewer/commit/033c4c034e51693bc1fb5264a07381e9e23af64d))
44
+
45
+ ### Bug Fixes
46
+
47
+ - **shared:** Break East Asian text across runs like PowerPoint (by @ChristopherVR) ([56ea24e](https://github.com/ChristopherVR/pptx-viewer/commit/56ea24eb3afb76a32689ee917f3ccb2759d8039f))
48
+ - **react:** Hand East Asian breaks the text after each run (by @ChristopherVR) ([b59b51f](https://github.com/ChristopherVR/pptx-viewer/commit/b59b51f206a3704204cbcd3b5820b8557983d9b9))
49
+ - **shared:** Size data-label boxes from the measured text (by @ChristopherVR) ([328d0f0](https://github.com/ChristopherVR/pptx-viewer/commit/328d0f074b794a4a0e4c58815c7b4ccf3d9dce99))
50
+ - **shared:** Place bestFit pie labels where PowerPoint does (by @ChristopherVR) ([63e1dc3](https://github.com/ChristopherVR/pptx-viewer/commit/63e1dc35dbddc50fe2cf9337e55b4bdff0df1be7))
51
+ - **core:** Keep paragraph markup on a rewritten slide (by @ChristopherVR) ([ff79c00](https://github.com/ChristopherVR/pptx-viewer/commit/ff79c002df8e79eb4f9967c0261b7259fee44223))
52
+ - **core:** Recompute Words and Paragraphs in docProps/app.xml on save (by @ChristopherVR) ([85ef0d6](https://github.com/ChristopherVR/pptx-viewer/commit/85ef0d6c9879670b8fb85b3c072c8105397d3d55))
53
+ - **core:** Write .ppt group members the way PowerPoint reads them (by @ChristopherVR) ([8cf3852](https://github.com/ChristopherVR/pptx-viewer/commit/8cf3852a1cde14e089dbdbca8fcba50005c982c2))
54
+ - **core:** Write DIFAT sectors for compound files past 109 FAT sectors (by @ChristopherVR) ([9e26fe8](https://github.com/ChristopherVR/pptx-viewer/commit/9e26fe8775a14d7e3ae2b69fbc982167a76cadf3))
55
+ - **core:** Write a new p:style between spPr and txBody (by @ChristopherVR) ([c7a45b9](https://github.com/ChristopherVR/pptx-viewer/commit/c7a45b9c077c94355d62a2e1e6196d1c33598458))
56
+ - **shared:** Write Shape Styles presets with PowerPoint's zero references (by @ChristopherVR) ([fdea69d](https://github.com/ChristopherVR/pptx-viewer/commit/fdea69d93436881bf7038e1b32792d7fe8b87e89))
57
+ - **shared:** Name every Shape Effects, WordArt and list gallery tile (by @ChristopherVR) ([0e16dae](https://github.com/ChristopherVR/pptx-viewer/commit/0e16dae2cf34c1c611746b8ad1b4eaa2cd806d85))
58
+ - **react:** Stop ribbon controls in a group scope from shrinking (by @ChristopherVR) ([bb18a71](https://github.com/ChristopherVR/pptx-viewer/commit/bb18a717184a5a1405c93604af60be954aba40a5))
59
+ - **shared:** Stop 3D SmartArt and charts rotating while dragged (by @claude) ([1f4e09e](https://github.com/ChristopherVR/pptx-viewer/commit/1f4e09e3c797acf365cb4d34aaa9b5a9e72ed157))
60
+ - **core:** Parse every behaviour of an effect with its own timing (by @ChristopherVR) ([12ea267](https://github.com/ChristopherVR/pptx-viewer/commit/12ea26750633b1315e8b05cc78386fcc5c289151))
61
+ - **core:** Rebuild an edited effect's behaviour tree on save (by @ChristopherVR) ([d6e22c7](https://github.com/ChristopherVR/pptx-viewer/commit/d6e22c70e67126d38f7880de658b3258db3c66ad))
62
+ - **shared:** Reveal wipes, splits and mask reveals the way PowerPoint does (by @ChristopherVR) ([87ff378](https://github.com/ChristopherVR/pptx-viewer/commit/87ff378d591a3caf0d78a0b6f18d6312319fe559))
63
+ - **react:** Give the slide show the slide size and theme colours (by @ChristopherVR) ([6a94502](https://github.com/ChristopherVR/pptx-viewer/commit/6a94502acecc86b484828ea4ba11f03f4b33a9ff))
64
+
65
+ ### Documentation
66
+
67
+ - Drop orbit wording from 3D view and chart flag docs (by @claude) ([a1fa63d](https://github.com/ChristopherVR/pptx-viewer/commit/a1fa63d34f0c61a16f10c1e2c3c53f178dcec947))
68
+
69
+ ### Testing
70
+
71
+ - **e2e:** Pin East Asian breaks to PowerPoint's own lines (by @ChristopherVR) ([a358b4f](https://github.com/ChristopherVR/pptx-viewer/commit/a358b4fdd5beeccdf81be9eb50166138430e292d))
72
+ - **e2e:** Pin pie bestFit labels and label boxes to PowerPoint (by @ChristopherVR) ([3480d42](https://github.com/ChristopherVR/pptx-viewer/commit/3480d429183f8b44ae8427a17f6823fb596aceb7))
73
+ - **e2e:** Pick a Picture Styles tile from Picture Format in every binding (by @ChristopherVR) ([27c37ad](https://github.com/ChristopherVR/pptx-viewer/commit/27c37adffae73f7901af3230cc0aa127c8012277))
74
+ - **e2e:** Pin behaviour-tree playback and PowerPoint's wipe edge (by @ChristopherVR) ([4cbb061](https://github.com/ChristopherVR/pptx-viewer/commit/4cbb061eaca3042229cd601b4cacffa8d97f076e))
75
+
76
+ ### Styling
77
+
78
+ - **shared:** Clear the lint warnings in the ribbon gallery modules (by @ChristopherVR) ([f178627](https://github.com/ChristopherVR/pptx-viewer/commit/f1786274cfe55be4189724b10e3e2b3c8c1e75f2))
79
+
80
+ ### Chores
81
+
82
+ - **npm:** Surface every package in an npm search for pptx-viewer (by @ChristopherVR) ([ac67fda](https://github.com/ChristopherVR/pptx-viewer/commit/ac67fdafcfaf664412f59eee9a0627182340782f))
83
+
10
84
  ## [4.8.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@4.8.0) - 2026-09-25
11
85
 
12
86
  ### Features
@@ -1,6 +1,6 @@
1
- import { deckIdFromBridge, isAiAvailable, createAiChatSession, extractReadyToolCalls, toolCanvasTarget, createChatHistoryStore, focusTargetChips, isTwoTableFocus, mergeTablesDirective, toRenderableParts, humanizeDiffLine, buildDeckContext, describeToolActivity, summarizeToolArgs, toolLabel } from './chunk-ZZY24BB7.mjs';
2
- import { cn } from './chunk-Y7RTQOD6.mjs';
3
- import './chunk-PJT2DTOS.mjs';
1
+ import { deckIdFromBridge, isAiAvailable, createAiChatSession, extractReadyToolCalls, toolCanvasTarget, createChatHistoryStore, focusTargetChips, isTwoTableFocus, mergeTablesDirective, toRenderableParts, humanizeDiffLine, buildDeckContext, describeToolActivity, summarizeToolArgs, toolLabel } from './chunk-VOD4C7OS.mjs';
2
+ import { cn } from './chunk-NE4USMMB.mjs';
3
+ import './chunk-LDRA5LJT.mjs';
4
4
  import './chunk-HDH4KFDK.mjs';
5
5
  import './chunk-XGB3TDIC.mjs';
6
6
  import { useMemo, useRef, useState, useEffect, useReducer, useCallback } from 'react';
Binary file
Binary file
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkPSJTZIIK_js = require('./chunk-PSJTZIIK.js');
4
- var chunk7NTNFOPT_js = require('./chunk-7NTNFOPT.js');
5
- require('./chunk-YWAFJZ23.js');
3
+ var chunkWLEFW2F4_js = require('./chunk-WLEFW2F4.js');
4
+ var chunk7EP22XCS_js = require('./chunk-7EP22XCS.js');
5
+ require('./chunk-JJE4AACM.js');
6
6
  require('./chunk-KPKO2ELT.js');
7
7
  require('./chunk-4VNS5WPM.js');
8
8
  var react = require('react');
@@ -22,7 +22,7 @@ function useAiChat(bridge, config) {
22
22
  setInitError(void 0);
23
23
  void (async () => {
24
24
  try {
25
- const available = await chunkPSJTZIIK_js.isAiAvailable();
25
+ const available = await chunkWLEFW2F4_js.isAiAvailable();
26
26
  if (cancelled) {
27
27
  return;
28
28
  }
@@ -30,7 +30,7 @@ function useAiChat(bridge, config) {
30
30
  setState("unavailable");
31
31
  return;
32
32
  }
33
- const built = await chunkPSJTZIIK_js.createAiChatSession(bridge, configRef.current);
33
+ const built = await chunkWLEFW2F4_js.createAiChatSession(bridge, configRef.current);
34
34
  if (cancelled) {
35
35
  return;
36
36
  }
@@ -87,7 +87,7 @@ function withDeckContext(inner, bridge, strategy) {
87
87
  }
88
88
  let context = "";
89
89
  try {
90
- context = await chunkPSJTZIIK_js.buildDeckContext(bridge, { strategy, focus: {} });
90
+ context = await chunkWLEFW2F4_js.buildDeckContext(bridge, { strategy, focus: {} });
91
91
  } catch {
92
92
  context = "";
93
93
  }
@@ -145,12 +145,12 @@ function useAiConversation(useChat, session, config, bridge, options = {}) {
145
145
  chatRef.current = chat;
146
146
  react.useEffect(() => {
147
147
  const seen = seenToolCallsRef.current;
148
- for (const call of chunkPSJTZIIK_js.extractReadyToolCalls(chat.messages)) {
148
+ for (const call of chunkWLEFW2F4_js.extractReadyToolCalls(chat.messages)) {
149
149
  if (seen.has(call.toolCallId)) {
150
150
  continue;
151
151
  }
152
152
  seen.add(call.toolCallId);
153
- onToolTargetRef.current?.(chunkPSJTZIIK_js.toolCanvasTarget(call.toolName, call.input));
153
+ onToolTargetRef.current?.(chunkWLEFW2F4_js.toolCanvasTarget(call.toolName, call.input));
154
154
  }
155
155
  }, [chat.messages]);
156
156
  const send = react.useCallback(
@@ -184,7 +184,7 @@ function useAiConversation(useChat, session, config, bridge, options = {}) {
184
184
  const setMessages = react.useCallback(
185
185
  (next) => {
186
186
  chat.setMessages(next);
187
- for (const call of chunkPSJTZIIK_js.extractReadyToolCalls(next)) {
187
+ for (const call of chunkWLEFW2F4_js.extractReadyToolCalls(next)) {
188
188
  seenToolCallsRef.current.add(call.toolCallId);
189
189
  }
190
190
  session.proposals.clear();
@@ -226,7 +226,7 @@ function deriveTitle(messages) {
226
226
  }
227
227
  function useAiHistory(input) {
228
228
  const { deckId, messages, setMessages } = input;
229
- const store = react.useMemo(() => input.store ?? chunkPSJTZIIK_js.createChatHistoryStore(), [input.store]);
229
+ const store = react.useMemo(() => input.store ?? chunkWLEFW2F4_js.createChatHistoryStore(), [input.store]);
230
230
  const [activeChatId, setActiveChatId] = react.useState(newChatId);
231
231
  const [chats, setChats] = react.useState([]);
232
232
  const createdAtRef = react.useRef(Date.now());
@@ -369,7 +369,7 @@ function AiComposer({
369
369
  disabled: value.trim().length === 0,
370
370
  title: t("pptx.ai.send"),
371
371
  "aria-label": t("pptx.ai.send"),
372
- className: chunk7NTNFOPT_js.cn(
372
+ className: chunk7EP22XCS_js.cn(
373
373
  "shrink-0 rounded-sm p-1.5 transition-colors",
374
374
  value.trim().length === 0 ? "text-muted-foreground/50" : "bg-primary text-primary-foreground hover:bg-primary/90"
375
375
  ),
@@ -392,15 +392,15 @@ function AiFocusBar({
392
392
  onClearPicks
393
393
  }) {
394
394
  const { t } = reactI18next.useTranslation();
395
- const chips = chunkPSJTZIIK_js.focusTargetChips(targets, slides);
396
- const twoTables = chunkPSJTZIIK_js.isTwoTableFocus(targets, slides);
395
+ const chips = chunkWLEFW2F4_js.focusTargetChips(targets, slides);
396
+ const twoTables = chunkWLEFW2F4_js.isTwoTableFocus(targets, slides);
397
397
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border bg-secondary/30", children: [
398
398
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1 px-2.5 py-1.5", children: [
399
399
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wide text-muted-foreground", children: t("pptx.ai.focusScope") }),
400
400
  chips.map((chip) => /* @__PURE__ */ jsxRuntime.jsx(
401
401
  "span",
402
402
  {
403
- className: chunk7NTNFOPT_js.cn(
403
+ className: chunk7EP22XCS_js.cn(
404
404
  "inline-flex max-w-[10rem] items-center rounded-full px-2 py-0.5 text-[11px]",
405
405
  hasPicks || isPinned ? "bg-primary/15 text-primary" : "bg-muted text-muted-foreground"
406
406
  ),
@@ -416,7 +416,7 @@ function AiFocusBar({
416
416
  {
417
417
  type: "button",
418
418
  onClick: () => onSendDirective(
419
- chunkPSJTZIIK_js.mergeTablesDirective(
419
+ chunkWLEFW2F4_js.mergeTablesDirective(
420
420
  twoTables.slideIndex,
421
421
  twoTables.elementIdA,
422
422
  twoTables.elementIdB
@@ -437,7 +437,7 @@ function AiFocusBar({
437
437
  title: t("pptx.ai.pickElement"),
438
438
  "aria-label": t("pptx.ai.pickAria"),
439
439
  "aria-pressed": pickMode,
440
- className: chunk7NTNFOPT_js.cn(
440
+ className: chunk7EP22XCS_js.cn(
441
441
  "rounded-sm p-1 max-md:min-w-[44px]! max-md:min-h-[44px]! flex items-center justify-center",
442
442
  pickMode ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-accent"
443
443
  ),
@@ -516,7 +516,7 @@ function AiHistoryList({ chats, activeChatId, onResume, onDelete }) {
516
516
  {
517
517
  type: "button",
518
518
  onClick: () => onResume(chat.id),
519
- className: chunk7NTNFOPT_js.cn(
519
+ className: chunk7EP22XCS_js.cn(
520
520
  "flex min-w-0 flex-1 items-start gap-2 rounded-sm px-2 py-1.5 text-left hover:bg-accent",
521
521
  chat.id === activeChatId && "bg-accent/60"
522
522
  ),
@@ -671,26 +671,26 @@ function AiToolCallCard({ part }) {
671
671
  const failed = part.state === "output-error";
672
672
  const done = part.state === "output-available";
673
673
  const running = !failed && !done;
674
- const activity = chunkPSJTZIIK_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
674
+ const activity = chunkWLEFW2F4_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
675
675
  const Icon = ICONS[activity.icon] ?? lu.LuWrench;
676
- const rawSummary = chunkPSJTZIIK_js.summarizeToolArgs(part.input);
676
+ const rawSummary = chunkWLEFW2F4_js.summarizeToolArgs(part.input);
677
677
  const statusLabel = failed ? t("pptx.ai.toolFailed") : done ? t("pptx.ai.toolDone") : t("pptx.ai.toolRunning");
678
678
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[12px]", children: [
679
679
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
680
680
  /* @__PURE__ */ jsxRuntime.jsx(
681
681
  Icon,
682
682
  {
683
- className: chunk7NTNFOPT_js.cn(
683
+ className: chunk7EP22XCS_js.cn(
684
684
  "w-3.5 h-3.5 shrink-0",
685
685
  failed ? "text-destructive" : "text-muted-foreground"
686
686
  )
687
687
  }
688
688
  ),
689
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk7NTNFOPT_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
689
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk7EP22XCS_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
690
690
  /* @__PURE__ */ jsxRuntime.jsxs(
691
691
  "span",
692
692
  {
693
- className: chunk7NTNFOPT_js.cn(
693
+ className: chunk7EP22XCS_js.cn(
694
694
  "ml-auto inline-flex items-center gap-1 rounded-sm px-1.5 py-0.5 text-[10px]",
695
695
  failed ? "bg-destructive/15 text-destructive" : done ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"
696
696
  ),
@@ -707,7 +707,7 @@ function AiToolCallCard({ part }) {
707
707
  rawSummary && /* @__PURE__ */ jsxRuntime.jsxs("details", { className: "group mt-0.5 pl-5", children: [
708
708
  /* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer list-none text-[10px] text-muted-foreground/70 hover:text-muted-foreground", children: t("pptx.ai.toolDetails") }),
709
709
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-0.5 break-words font-mono text-[10px] text-muted-foreground/80", children: [
710
- chunkPSJTZIIK_js.toolLabel(part.toolName),
710
+ chunkWLEFW2F4_js.toolLabel(part.toolName),
711
711
  ": ",
712
712
  rawSummary
713
713
  ] })
@@ -730,7 +730,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
730
730
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-3 overflow-y-auto px-3 py-3", children: [
731
731
  messages.map((message) => {
732
732
  const isUser = message.role === "user";
733
- const parts = chunkPSJTZIIK_js.toRenderableParts(message);
733
+ const parts = chunkWLEFW2F4_js.toRenderableParts(message);
734
734
  if (parts.length === 0 && !isUser) {
735
735
  return null;
736
736
  }
@@ -738,7 +738,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
738
738
  /* @__PURE__ */ jsxRuntime.jsx(
739
739
  "div",
740
740
  {
741
- className: chunk7NTNFOPT_js.cn(
741
+ className: chunk7EP22XCS_js.cn(
742
742
  "mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full",
743
743
  isUser ? "bg-secondary text-muted-foreground" : "bg-primary/15 text-primary"
744
744
  ),
@@ -785,7 +785,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
785
785
  }
786
786
  function AiProposalCard({ proposal, onAccept, onReject }) {
787
787
  const { t } = reactI18next.useTranslation();
788
- const lines = proposal.summary.map(chunkPSJTZIIK_js.humanizeDiffLine);
788
+ const lines = proposal.summary.map(chunkWLEFW2F4_js.humanizeDiffLine);
789
789
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-primary/40 bg-primary/5 p-2.5", children: [
790
790
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1.5 text-[11px] font-semibold uppercase tracking-wide text-primary", children: t("pptx.ai.proposedChange") }),
791
791
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[12px] font-medium text-foreground", children: proposal.label }),
@@ -993,7 +993,7 @@ function AiChatPanel({
993
993
  }) {
994
994
  const { t } = reactI18next.useTranslation();
995
995
  const { state, session, initError } = useAiChat(bridge, config);
996
- const deckId = react.useMemo(() => chunkPSJTZIIK_js.deckIdFromBridge(bridge), [bridge]);
996
+ const deckId = react.useMemo(() => chunkWLEFW2F4_js.deckIdFromBridge(bridge), [bridge]);
997
997
  return /* @__PURE__ */ jsxRuntime.jsxs(
998
998
  "div",
999
999
  {
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- import { mountModel3D } from './chunk-PJT2DTOS.mjs';
1
+ import { mountModel3D } from './chunk-LDRA5LJT.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 chunkYWAFJZ23_js = require('./chunk-YWAFJZ23.js');
3
+ var chunkJJE4AACM_js = require('./chunk-JJE4AACM.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 chunkYWAFJZ23_js.mountModel3D(container, modelUrl, { width, height, interactive }).then((handle) => {
17
+ void chunkJJE4AACM_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,5 +1,5 @@
1
- import { DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getImageSurfaceStyle, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, DEFAULT_FILL_COLOR, getCropShapeClipPath, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getImageSurfaceMaskStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, MIN_ELEMENT_SIZE, buildTextBody3DSceneStyle, getImageTilingStyle, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, HYPERLINK_COLOR, cloneHistorySnapshot, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, buildPdfFromTiledImageData, GRID_SIZE, buildNotesPdf } from './chunk-Y7RTQOD6.mjs';
2
- import { GlyphOutlineFontCache, createGlyphOutlineLookup, DEFAULT_VIEWER_OPTIONS, TOOLBAR_TABS, defineThreeViewElement, getSelectionControlArtworkStyle, hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getSelectionOutlineColor, connectorWrapperTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, buildTextStyleOverrideCss, isElementRendered, resolveElementAriaAttributes, isMediaFullscreenActive, shouldRenderHitTarget, elementHitTargetStyle, getImageEffectsOpacity, getImageEffectsFilter, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, oleActionsVisible, getGroupChildParentFill, getElementLabel, getResizeHandleHitAreaStyle, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, paintedElementSize, MEDIA_FULLSCREEN_OVERLAY_STYLE, elementContainerHeightStyle, getElementTransform, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, getEffectStyleSource, getBevelLightingSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, strokeOutlineViewBox, resolveRevealedSmartArtNodes, resolveRevealedDrawingShapes, buildSmartArtA11y, canDrillDown, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, readEditableText, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, mapInlineTextFormatKey, subscribeBarFacePicturePixelSamples, getBarFacePicturePixelSampleVersion, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, buildInkGroupStrokes, getInkReplayStyles, INK_REPLAY_KEYFRAMES, buildContentPartStrokes, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, attachRotateHandlePlacement, elementIdSelector, createRotationDrag, 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, resolveRevealedDrawingShapeNodeIds, styleShadowFilter, buildChromeStyle, measureSvgViewportRect, modelDataToBlobUrl, resolveZoomNavigationTarget, getImageSvgFilters, getCachedNativeImageSize, probeNativeImageSize, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, inlineListBodyText, createInlineListSeed, readListActivationSelection, createInlineListModelObserver, attachCollaborationInlineEditor, bindInlineListParagraph, bindInlineListRun, attachInlineListController, restoreInlineListBodySelection, getInlineEditorSelectionResult, isBulletMarkerSegment, resolveChartThreeViewSpec, applyChart3DDrag, applyChart3DSelect, findChartPartTarget, withChartTitle, resolveSmartArtThreeViewSpec, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, hasGlyphEnvelope, buildGlyphEnvelopeBlock, getWarpPath, isWedgeCalloutPresetShape, isElementActionable, centeredSvgTextLines, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, advanceChartMarkDrag, advanceChartValueDrag, resolveChartKind, buildChartMarkDragGeometry, beginChartMarkDrag, beginChartValueDrag, groupIntoParagraphs, substituteFieldText, computeInlineEditorRect, MIN_TOUCH_TARGET_PX, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, createPresenceProjector, BROADCAST_THROTTLE_MS, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, createActiveAnimationGroup, cancelBuildReveal, clearPlaybackTimers, PresentationAnimationController, resolveMediaTimeNodeElementIds, resolveMediaBookmarkTimesMs, advanceMainSequence, playGroup, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, resolveForwardSlideWithZoomReturn, buildZoomTransitionOverride, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, beginZoomExcursion, createPresenterShowGuard, firstShowSlideIndex, attachPresentationVisibilityPause, presentationEntrySlideIndex, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, findInSlides, applyFindReplacements, visibleTemplateElements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, createPresentationLoadResources, collectMediaElements, resolveMediaElementSource, collectImagePaths, applyImagePathPatches, resolveTableCellImageUrls, resolveTableStyleImageUrls, resolveTextFillBlipUrls, partitionTemplateElements, seedRecentColors, resolveAuthoredCustomShowId, buildInitialGuides, readOnlyRecommendation, compatibilityWarningToasts, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, updateMasterViewElement, isTemplateElementId, updateElement, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, canMergeShapes, canInteractWithElement, prepareHtml2CanvasClone, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, resolveImageResolutionScale, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, describeFontEmbedding, isMobileViewport, resolveAuthoredSlideRange, mayLeaveSlideShow, stopAllPersistentAudio, guidePxToEmu, buildSaveSlides, buildDeckSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, shouldProbeAutosaveRecovery, probeAutosaveRecovery, acceptAutosaveRecovery, acknowledgeAutosaveRecovery, discardAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, rasterResultToPngBlob, downloadBlob, elementPictureFilename, canEditElementPoints, collectReferencedFontFamilies, resolveGoogleWebfontHref, syncGoogleWebfontStylesheet, selectGoogleWebfontFamilies, fetchGoogleWebfontOutlineBytes, isFeatureEnabled, mapSlideShowStartKey, mapCustomizedEditorKey, isEditorControlTarget, isEditorTextInputTarget, textFontSizePtToPx, stepFontSizePt, textFontSizePxToPt, cycleSelectableElement, createCustomizationController, prepareElementForInsertion, createViewerOptionsStore, observeYDocSlides, LOCAL_SYNC_ORIGIN, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, shouldAutoFollowBroadcaster, detectTouchDevice, detectOrientation, deriveViewportBreakpoints, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, scopeLayoutOptionsToSlide, checkModifyPassword, viewerPreferencesFromViewProperties, DEFAULT_VIEWER_PREFERENCES, viewPropertiesPatchFromPreferences, openPptxFile, readBackstageRecentFile, resolveCollaborationShellEditability, resolveCollaborationShellState, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, getSlideTransitionAnimations, getFragmentedTransitionDescriptor, SLIDE_TRANSITION_KEYFRAMES, isActionHidden, buildInlineTextCommitPatch, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, contextMenuInspectorAnchor, savedPresentationFileName, exportDeckJson, groupElements, generateElementId, makeCloneId, ungroupElements, alignElements, distributeElements, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, planMergeShapes, applyMergeShapesPlan, mapPresentationKey, lastShowSlideIndex, mapPresentationWheel, openPendingPrintWindow, computeColorFilter, filterHiddenSlideIndices, computeSlideIndices, buildPrintDocument, finishPrintWindow, buildPrintHtmlDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, reResolveElementColors, resolveViewportFitOptions, calculateViewportFit, scheduleAutoAdvanceChain, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, resolveTransitionSoundAction, runPresentationAction, safeOpenUrl, buildRunProgramNotice, toggleStageElementMedia, resolveOleVerbTarget, downloadDataUrl, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, remapTextToSegments, buildInlineListStylePatch, applyActiveInlineListFormatting, applyListStyleUpdate, setPendingSelectionRestore, applyTextStyleUpdate, toggleSelectionBullets, transformInlineListCase, applyCaseTransformToSegments, transformTextCase, resolveExportCaptureDecision, recordProgressPercent, computeGridSpacingPx, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, overlayMasterViewInlineSnapshot, overlayInlineTextSnapshot, rasterizeElement, cloneElementForPaste, applyPasteSpecialFormat, buildRasterPictureElement, copyFormatFromElement, cloneElementUpdates, assertElementUpdateTarget, prepareElementUpdateBatch, createWriteBackScheduler, observeExternalCollaborationReadiness, resolveHistoryDepth, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, scrollInspectorSectionIntoView, computeScrollDelta, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, replyToCommentInList, removeTableElementColumn, insertTableElementColumn, removeTableElementRow, insertTableElementRow, updateCellTextStyleInRawXml, setCellText, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, stopCaptureStream, GIF_POST_CAPTURE_MAX_SIDE, encodeGif, rasterizeElementTiles, placeTileOnPage, PDF_SLIDES_PAGE_WIDTH_PT, PDF_SLIDES_PAGE_HEIGHT_PT, canvasToJpegData, applyFormatToElement, createSnapshotTextPositions, isPpactionUrl, parsePpactionUrl, resolvePresentationAction, elementActionToPptxAction, isUrlSafe, buildSmartArtPresetData, classifyMediaType, computeSnapToShape, publishLiveGeometry, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, rasterizeElementTiledToCanvas, borrowExternalCollaborationAwareness, observeExternalCollaborationSession, clampGifDimensions, rasterResultToPngDataUrl, shouldConfirmExternalHyperlink, applyResize, lockResizeAspect, snapBoxToGrid, applyMotionPathPreset, bringForward, sendBackward, bringToFront, sendToBack } from './chunk-PJT2DTOS.mjs';
1
+ import { DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getImageSurfaceStyle, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, DEFAULT_FILL_COLOR, getCropShapeClipPath, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getImageSurfaceMaskStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, MIN_ELEMENT_SIZE, buildTextBody3DSceneStyle, getImageTilingStyle, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, HYPERLINK_COLOR, cloneHistorySnapshot, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, buildPdfFromTiledImageData, GRID_SIZE, buildNotesPdf } from './chunk-NE4USMMB.mjs';
2
+ import { GlyphOutlineFontCache, createGlyphOutlineLookup, DEFAULT_VIEWER_OPTIONS, TOOLBAR_TABS, defineThreeViewElement, getSelectionControlArtworkStyle, hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getSelectionOutlineColor, connectorWrapperTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, buildTextStyleOverrideCss, isElementRendered, resolveElementAriaAttributes, isMediaFullscreenActive, shouldRenderHitTarget, elementHitTargetStyle, getImageEffectsOpacity, getImageEffectsFilter, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, oleActionsVisible, getGroupChildParentFill, getElementLabel, getResizeHandleHitAreaStyle, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, paintedElementSize, MEDIA_FULLSCREEN_OVERLAY_STYLE, elementContainerHeightStyle, getElementTransform, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, getEffectStyleSource, getBevelLightingSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, strokeOutlineViewBox, resolveRevealedSmartArtNodes, resolveRevealedDrawingShapes, buildSmartArtA11y, canDrillDown, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, readEditableText, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, mapInlineTextFormatKey, subscribeBarFacePicturePixelSamples, getBarFacePicturePixelSampleVersion, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, buildInkGroupStrokes, getInkReplayStyles, INK_REPLAY_KEYFRAMES, buildContentPartStrokes, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, attachRotateHandlePlacement, elementIdSelector, createRotationDrag, 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, resolveRevealedDrawingShapeNodeIds, styleShadowFilter, buildChromeStyle, measureSvgViewportRect, modelDataToBlobUrl, resolveZoomNavigationTarget, getImageSvgFilters, getCachedNativeImageSize, probeNativeImageSize, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, inlineListBodyText, createInlineListSeed, readListActivationSelection, createInlineListModelObserver, attachCollaborationInlineEditor, bindInlineListParagraph, bindInlineListRun, attachInlineListController, restoreInlineListBodySelection, getInlineEditorSelectionResult, isBulletMarkerSegment, resolveChartThreeViewSpec, applyChart3DDrag, applyChart3DSelect, findChartPartTarget, withChartTitle, resolveSmartArtThreeViewSpec, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, hasGlyphEnvelope, buildGlyphEnvelopeBlock, getWarpPath, isWedgeCalloutPresetShape, isElementActionable, centeredSvgTextLines, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, advanceChartMarkDrag, advanceChartValueDrag, resolveChartKind, buildChartMarkDragGeometry, beginChartMarkDrag, beginChartValueDrag, groupIntoParagraphs, substituteFieldText, computeInlineEditorRect, MIN_TOUCH_TARGET_PX, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, createPresenceProjector, BROADCAST_THROTTLE_MS, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, createActiveAnimationGroup, cancelBuildReveal, clearPlaybackTimers, PresentationAnimationController, resolveMediaTimeNodeElementIds, resolveMediaBookmarkTimesMs, advanceMainSequence, playGroup, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, resolveForwardSlideWithZoomReturn, buildZoomTransitionOverride, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, beginZoomExcursion, createPresenterShowGuard, firstShowSlideIndex, attachPresentationVisibilityPause, presentationEntrySlideIndex, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, findInSlides, applyFindReplacements, visibleTemplateElements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, createPresentationLoadResources, collectMediaElements, resolveMediaElementSource, collectImagePaths, applyImagePathPatches, resolveTableCellImageUrls, resolveTableStyleImageUrls, resolveTextFillBlipUrls, partitionTemplateElements, seedRecentColors, resolveAuthoredCustomShowId, buildInitialGuides, readOnlyRecommendation, compatibilityWarningToasts, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, updateMasterViewElement, isTemplateElementId, updateElement, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, canMergeShapes, canInteractWithElement, prepareHtml2CanvasClone, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, resolveImageResolutionScale, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, describeFontEmbedding, isMobileViewport, resolveAuthoredSlideRange, mayLeaveSlideShow, stopAllPersistentAudio, guidePxToEmu, buildSaveSlides, buildDeckSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, shouldProbeAutosaveRecovery, probeAutosaveRecovery, acceptAutosaveRecovery, acknowledgeAutosaveRecovery, discardAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, rasterResultToPngBlob, downloadBlob, elementPictureFilename, canEditElementPoints, collectReferencedFontFamilies, resolveGoogleWebfontHref, syncGoogleWebfontStylesheet, selectGoogleWebfontFamilies, fetchGoogleWebfontOutlineBytes, isFeatureEnabled, mapSlideShowStartKey, mapCustomizedEditorKey, isEditorControlTarget, isEditorTextInputTarget, textFontSizePtToPx, stepFontSizePt, textFontSizePxToPt, cycleSelectableElement, createCustomizationController, prepareElementForInsertion, createViewerOptionsStore, observeYDocSlides, LOCAL_SYNC_ORIGIN, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, shouldAutoFollowBroadcaster, detectTouchDevice, detectOrientation, deriveViewportBreakpoints, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, scopeLayoutOptionsToSlide, checkModifyPassword, viewerPreferencesFromViewProperties, DEFAULT_VIEWER_PREFERENCES, viewPropertiesPatchFromPreferences, openPptxFile, readBackstageRecentFile, resolveCollaborationShellEditability, resolveCollaborationShellState, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, getSlideTransitionAnimations, getFragmentedTransitionDescriptor, SLIDE_TRANSITION_KEYFRAMES, isActionHidden, buildInlineTextCommitPatch, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, contextMenuInspectorAnchor, savedPresentationFileName, exportDeckJson, groupElements, generateElementId, makeCloneId, ungroupElements, alignElements, distributeElements, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, planMergeShapes, applyMergeShapesPlan, mapPresentationKey, lastShowSlideIndex, mapPresentationWheel, openPendingPrintWindow, computeColorFilter, filterHiddenSlideIndices, computeSlideIndices, buildPrintDocument, finishPrintWindow, buildPrintHtmlDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, reResolveElementColors, resolveViewportFitOptions, calculateViewportFit, scheduleAutoAdvanceChain, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, resolveTransitionSoundAction, runPresentationAction, safeOpenUrl, buildRunProgramNotice, toggleStageElementMedia, resolveOleVerbTarget, downloadDataUrl, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, remapTextToSegments, buildInlineListStylePatch, applyActiveInlineListFormatting, applyListStyleUpdate, setPendingSelectionRestore, applyTextStyleUpdate, toggleSelectionBullets, transformInlineListCase, applyCaseTransformToSegments, transformTextCase, resolveExportCaptureDecision, recordProgressPercent, computeGridSpacingPx, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, overlayMasterViewInlineSnapshot, overlayInlineTextSnapshot, rasterizeElement, cloneElementForPaste, applyPasteSpecialFormat, buildRasterPictureElement, copyFormatFromElement, cloneElementUpdates, assertElementUpdateTarget, prepareElementUpdateBatch, createWriteBackScheduler, observeExternalCollaborationReadiness, resolveHistoryDepth, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, scrollInspectorSectionIntoView, computeScrollDelta, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, replyToCommentInList, removeTableElementColumn, insertTableElementColumn, removeTableElementRow, insertTableElementRow, updateCellTextStyleInRawXml, setCellText, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, stopCaptureStream, GIF_POST_CAPTURE_MAX_SIDE, encodeGif, rasterizeElementTiles, placeTileOnPage, PDF_SLIDES_PAGE_WIDTH_PT, PDF_SLIDES_PAGE_HEIGHT_PT, canvasToJpegData, applyFormatToElement, createSnapshotTextPositions, isPpactionUrl, parsePpactionUrl, resolvePresentationAction, elementActionToPptxAction, isUrlSafe, buildSmartArtPresetData, classifyMediaType, computeSnapToShape, publishLiveGeometry, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, rasterizeElementTiledToCanvas, borrowExternalCollaborationAwareness, observeExternalCollaborationSession, clampGifDimensions, rasterResultToPngDataUrl, shouldConfirmExternalHyperlink, applyResize, lockResizeAspect, snapBoxToGrid, applyMotionPathPreset, bringForward, sendBackward, bringToFront, sendToBack } from './chunk-LDRA5LJT.mjs';
3
3
  import { translationsEn } from './chunk-HDH4KFDK.mjs';
4
4
  import React17, { createContext, useMemo, useState, useCallback, useEffect, Suspense, useRef, useLayoutEffect, useContext, useSyncExternalStore, useImperativeHandle } from 'react';
5
5
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -12,11 +12,15 @@ function useVirtualizedSlides({
12
12
  itemHeight,
13
13
  overscan = DEFAULT_VIRTUAL_OVERSCAN
14
14
  }) {
15
- const scrollContainerRef = useRef(null);
15
+ const containerElRef = useRef(null);
16
+ const [container, setContainer] = useState(null);
17
+ const scrollContainerRef = useCallback((el) => {
18
+ containerElRef.current = el;
19
+ setContainer(el);
20
+ }, []);
16
21
  const [scrollTop, setScrollTop] = useState(0);
17
22
  const [viewportHeight, setViewportHeight] = useState(0);
18
23
  useEffect(() => {
19
- const container = scrollContainerRef.current;
20
24
  if (!container) {
21
25
  return;
22
26
  }
@@ -39,24 +43,24 @@ function useVirtualizedSlides({
39
43
  container.removeEventListener("scroll", handleScroll);
40
44
  resizeObserver?.disconnect();
41
45
  };
42
- }, []);
46
+ }, [container]);
43
47
  const range = computeVirtualRange(totalItems, itemHeight, scrollTop, viewportHeight, overscan);
44
48
  const safeItemHeight = Math.max(itemHeight, 1);
45
49
  const scrollToIndex = useCallback(
46
50
  (index, behavior = "smooth") => {
47
- const container = scrollContainerRef.current;
48
- if (!container) {
51
+ const el = containerElRef.current;
52
+ if (!el) {
49
53
  return;
50
54
  }
51
55
  const targetTop = index * safeItemHeight;
52
56
  const targetBottom = targetTop + safeItemHeight;
53
- const containerTop = container.scrollTop;
54
- const containerBottom = containerTop + container.clientHeight;
57
+ const containerTop = el.scrollTop;
58
+ const containerBottom = containerTop + el.clientHeight;
55
59
  if (targetTop < containerTop) {
56
- container.scrollTo({ top: targetTop, behavior });
60
+ el.scrollTo({ top: targetTop, behavior });
57
61
  } else if (targetBottom > containerBottom) {
58
- container.scrollTo({
59
- top: targetBottom - container.clientHeight,
62
+ el.scrollTo({
63
+ top: targetBottom - el.clientHeight,
60
64
  behavior
61
65
  });
62
66
  }
@@ -16130,7 +16134,7 @@ function FailedToLoad() {
16130
16134
  var LazyModel3DScene = React17.lazy(
16131
16135
  async () => {
16132
16136
  try {
16133
- return await import('./Model3DScene-DS6AQWFV.mjs');
16137
+ return await import('./Model3DScene-FF4RCG4O.mjs');
16134
16138
  } catch {
16135
16139
  return { default: FailedToLoad };
16136
16140
  }
Binary file
Binary file