pptx-react-viewer 3.1.4 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{AiChatPanel-ITCVRVKP.mjs → AiChatPanel-C3E7NLX3.mjs} +4 -4
  3. package/dist/AiChatPanel-C3E7NLX3.mjs.br +0 -0
  4. package/dist/AiChatPanel-C3E7NLX3.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-TO5PHBGW.js → AiChatPanel-TKBVSYD2.js} +24 -24
  6. package/dist/AiChatPanel-TKBVSYD2.js.br +0 -0
  7. package/dist/AiChatPanel-TKBVSYD2.js.gz +0 -0
  8. package/dist/{Area3DChartScene-2UNQ3J3V.js → Area3DChartScene-3A3CXKN3.js} +2 -2
  9. package/dist/Area3DChartScene-3A3CXKN3.js.br +0 -0
  10. package/dist/Area3DChartScene-3A3CXKN3.js.gz +0 -0
  11. package/dist/{Area3DChartScene-7PHPDOTG.mjs → Area3DChartScene-7YCFWEGX.mjs} +1 -1
  12. package/dist/Area3DChartScene-7YCFWEGX.mjs.br +3 -0
  13. package/dist/Area3DChartScene-7YCFWEGX.mjs.gz +0 -0
  14. package/dist/{Bar3DChartScene-BLPUHYRZ.mjs → Bar3DChartScene-7CNSJ35X.mjs} +1 -1
  15. package/dist/Bar3DChartScene-7CNSJ35X.mjs.br +0 -0
  16. package/dist/Bar3DChartScene-7CNSJ35X.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-MC5S3AGT.js → Bar3DChartScene-BDUENAWJ.js} +2 -2
  18. package/dist/Bar3DChartScene-BDUENAWJ.js.br +0 -0
  19. package/dist/Bar3DChartScene-BDUENAWJ.js.gz +0 -0
  20. package/dist/{Line3DChartScene-JVVZRIDD.js → Line3DChartScene-R352CZ5U.js} +2 -2
  21. package/dist/Line3DChartScene-R352CZ5U.js.br +0 -0
  22. package/dist/Line3DChartScene-R352CZ5U.js.gz +0 -0
  23. package/dist/{Line3DChartScene-L5B4YFG3.mjs → Line3DChartScene-SMTHK6MD.mjs} +1 -1
  24. package/dist/Line3DChartScene-SMTHK6MD.mjs.br +3 -0
  25. package/dist/Line3DChartScene-SMTHK6MD.mjs.gz +0 -0
  26. package/dist/{Model3DScene-6TNWS5LV.mjs → Model3DScene-AUVJXXPV.mjs} +1 -1
  27. package/dist/Model3DScene-AUVJXXPV.mjs.br +0 -0
  28. package/dist/Model3DScene-AUVJXXPV.mjs.gz +0 -0
  29. package/dist/{Model3DScene-LRDNQNKJ.js → Model3DScene-Y4SGFQYW.js} +2 -2
  30. package/dist/{Model3DScene-LRDNQNKJ.js.br → Model3DScene-Y4SGFQYW.js.br} +0 -0
  31. package/dist/Model3DScene-Y4SGFQYW.js.gz +0 -0
  32. package/dist/{PieChart3DScene-PZWZCXHX.js → PieChart3DScene-TK2VT4RS.js} +2 -2
  33. package/dist/PieChart3DScene-TK2VT4RS.js.br +0 -0
  34. package/dist/PieChart3DScene-TK2VT4RS.js.gz +0 -0
  35. package/dist/{PieChart3DScene-XXAIVP4I.mjs → PieChart3DScene-UD7GRH55.mjs} +1 -1
  36. package/dist/PieChart3DScene-UD7GRH55.mjs.br +0 -0
  37. package/dist/PieChart3DScene-UD7GRH55.mjs.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-UBQV3ZN2.js → SurfaceChart3DScene-ERFXZW2O.js} +2 -2
  39. package/dist/SurfaceChart3DScene-ERFXZW2O.js.br +0 -0
  40. package/dist/SurfaceChart3DScene-ERFXZW2O.js.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-CRUGJSCY.mjs → SurfaceChart3DScene-TXY6UZSW.mjs} +1 -1
  42. package/dist/SurfaceChart3DScene-TXY6UZSW.mjs.br +0 -0
  43. package/dist/SurfaceChart3DScene-TXY6UZSW.mjs.gz +0 -0
  44. package/dist/{chunk-SWRY3SI5.js → chunk-ALO4ZOHQ.js} +46 -1
  45. package/dist/chunk-ALO4ZOHQ.js.br +0 -0
  46. package/dist/{chunk-SWRY3SI5.js.gz → chunk-ALO4ZOHQ.js.gz} +0 -0
  47. package/dist/{chunk-LXYDXLKZ.js → chunk-ARQGUUYU.js} +421 -460
  48. package/dist/chunk-ARQGUUYU.js.br +0 -0
  49. package/dist/chunk-ARQGUUYU.js.gz +0 -0
  50. package/dist/{chunk-T2QG2HD5.js → chunk-B6UIVRFA.js} +167 -167
  51. package/dist/chunk-B6UIVRFA.js.br +0 -0
  52. package/dist/chunk-B6UIVRFA.js.gz +0 -0
  53. package/dist/{chunk-YDEEINER.js → chunk-FJDZ7AEE.js} +6446 -3739
  54. package/dist/chunk-FJDZ7AEE.js.br +0 -0
  55. package/dist/chunk-FJDZ7AEE.js.gz +0 -0
  56. package/dist/{chunk-BPWSJLLG.mjs → chunk-FMEEIS6L.mjs} +2 -2
  57. package/dist/chunk-FMEEIS6L.mjs.br +0 -0
  58. package/dist/chunk-FMEEIS6L.mjs.gz +0 -0
  59. package/dist/{chunk-XIHK52SB.mjs → chunk-G7UBIKAG.mjs} +6445 -3740
  60. package/dist/chunk-G7UBIKAG.mjs.br +0 -0
  61. package/dist/chunk-G7UBIKAG.mjs.gz +0 -0
  62. package/dist/{chunk-57MGKBJ4.mjs → chunk-PPNXPEEZ.mjs} +20 -14
  63. package/dist/chunk-PPNXPEEZ.mjs.br +0 -0
  64. package/dist/chunk-PPNXPEEZ.mjs.gz +0 -0
  65. package/dist/{chunk-LGVNUG3G.js → chunk-Q52HT4EZ.js} +9 -8
  66. package/dist/chunk-Q52HT4EZ.js.br +0 -0
  67. package/dist/chunk-Q52HT4EZ.js.gz +0 -0
  68. package/dist/{chunk-ARJE3V6V.mjs → chunk-RHSA5BW5.mjs} +46 -1
  69. package/dist/chunk-RHSA5BW5.mjs.br +0 -0
  70. package/dist/{chunk-ARJE3V6V.mjs.gz → chunk-RHSA5BW5.mjs.gz} +0 -0
  71. package/dist/{chunk-T44LBKF6.js → chunk-RRAL4Y7V.js} +1136 -1130
  72. package/dist/chunk-RRAL4Y7V.js.br +0 -0
  73. package/dist/chunk-RRAL4Y7V.js.gz +0 -0
  74. package/dist/{chunk-QOLYY7E3.mjs → chunk-RX6FE24O.mjs} +7 -6
  75. package/dist/chunk-RX6FE24O.mjs.br +0 -0
  76. package/dist/chunk-RX6FE24O.mjs.gz +0 -0
  77. package/dist/{chunk-A2UAUSJM.mjs → chunk-UHR7EYFM.mjs} +18 -57
  78. package/dist/chunk-UHR7EYFM.mjs.br +0 -0
  79. package/dist/chunk-UHR7EYFM.mjs.gz +0 -0
  80. package/dist/i18n.js +4 -4
  81. package/dist/i18n.js.br +0 -0
  82. package/dist/i18n.js.gz +0 -0
  83. package/dist/i18n.mjs +1 -1
  84. package/dist/i18n.mjs.br +0 -0
  85. package/dist/i18n.mjs.gz +0 -0
  86. package/dist/index.d.ts +170 -17
  87. package/dist/index.js +47 -47
  88. package/dist/index.js.br +0 -0
  89. package/dist/index.js.gz +0 -0
  90. package/dist/index.mjs +6 -6
  91. package/dist/index.mjs.br +0 -0
  92. package/dist/index.mjs.gz +0 -0
  93. package/dist/internals.d.ts +170 -17
  94. package/dist/internals.d.ts.map +1 -1
  95. package/dist/internals.js +79 -79
  96. package/dist/internals.js.br +0 -0
  97. package/dist/internals.js.gz +0 -0
  98. package/dist/internals.mjs +4 -4
  99. package/dist/internals.mjs.br +0 -0
  100. package/dist/internals.mjs.gz +0 -0
  101. package/dist/viewer/index.d.ts +170 -17
  102. package/dist/viewer/index.js +27 -27
  103. package/dist/viewer/index.js.br +0 -0
  104. package/dist/viewer/index.js.gz +0 -0
  105. package/dist/viewer/index.mjs +6 -6
  106. package/dist/viewer/index.mjs.br +0 -0
  107. package/dist/viewer/index.mjs.gz +0 -0
  108. package/package.json +1 -1
  109. package/dist/AiChatPanel-ITCVRVKP.mjs.br +0 -0
  110. package/dist/AiChatPanel-ITCVRVKP.mjs.gz +0 -0
  111. package/dist/AiChatPanel-TO5PHBGW.js.br +0 -0
  112. package/dist/AiChatPanel-TO5PHBGW.js.gz +0 -0
  113. package/dist/Area3DChartScene-2UNQ3J3V.js.br +0 -0
  114. package/dist/Area3DChartScene-2UNQ3J3V.js.gz +0 -0
  115. package/dist/Area3DChartScene-7PHPDOTG.mjs.br +0 -0
  116. package/dist/Area3DChartScene-7PHPDOTG.mjs.gz +0 -0
  117. package/dist/Bar3DChartScene-BLPUHYRZ.mjs.br +0 -0
  118. package/dist/Bar3DChartScene-BLPUHYRZ.mjs.gz +0 -0
  119. package/dist/Bar3DChartScene-MC5S3AGT.js.br +0 -0
  120. package/dist/Bar3DChartScene-MC5S3AGT.js.gz +0 -0
  121. package/dist/Line3DChartScene-JVVZRIDD.js.br +0 -0
  122. package/dist/Line3DChartScene-JVVZRIDD.js.gz +0 -0
  123. package/dist/Line3DChartScene-L5B4YFG3.mjs.br +0 -0
  124. package/dist/Line3DChartScene-L5B4YFG3.mjs.gz +0 -0
  125. package/dist/Model3DScene-6TNWS5LV.mjs.br +0 -0
  126. package/dist/Model3DScene-6TNWS5LV.mjs.gz +0 -0
  127. package/dist/Model3DScene-LRDNQNKJ.js.gz +0 -0
  128. package/dist/PieChart3DScene-PZWZCXHX.js.br +0 -0
  129. package/dist/PieChart3DScene-PZWZCXHX.js.gz +0 -0
  130. package/dist/PieChart3DScene-XXAIVP4I.mjs.br +0 -0
  131. package/dist/PieChart3DScene-XXAIVP4I.mjs.gz +0 -0
  132. package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.br +0 -1
  133. package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.gz +0 -0
  134. package/dist/SurfaceChart3DScene-UBQV3ZN2.js.br +0 -0
  135. package/dist/SurfaceChart3DScene-UBQV3ZN2.js.gz +0 -0
  136. package/dist/chunk-57MGKBJ4.mjs.br +0 -0
  137. package/dist/chunk-57MGKBJ4.mjs.gz +0 -0
  138. package/dist/chunk-A2UAUSJM.mjs.br +0 -0
  139. package/dist/chunk-A2UAUSJM.mjs.gz +0 -0
  140. package/dist/chunk-ARJE3V6V.mjs.br +0 -0
  141. package/dist/chunk-BPWSJLLG.mjs.br +0 -0
  142. package/dist/chunk-BPWSJLLG.mjs.gz +0 -0
  143. package/dist/chunk-LGVNUG3G.js.br +0 -0
  144. package/dist/chunk-LGVNUG3G.js.gz +0 -0
  145. package/dist/chunk-LXYDXLKZ.js.br +0 -0
  146. package/dist/chunk-LXYDXLKZ.js.gz +0 -0
  147. package/dist/chunk-QOLYY7E3.mjs.br +0 -0
  148. package/dist/chunk-QOLYY7E3.mjs.gz +0 -0
  149. package/dist/chunk-SWRY3SI5.js.br +0 -0
  150. package/dist/chunk-T2QG2HD5.js.br +0 -0
  151. package/dist/chunk-T2QG2HD5.js.gz +0 -0
  152. package/dist/chunk-T44LBKF6.js.br +0 -0
  153. package/dist/chunk-T44LBKF6.js.gz +0 -0
  154. package/dist/chunk-XIHK52SB.mjs.br +0 -0
  155. package/dist/chunk-XIHK52SB.mjs.gz +0 -0
  156. package/dist/chunk-YDEEINER.js.br +0 -0
  157. package/dist/chunk-YDEEINER.js.gz +0 -0
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var chunkT2QG2HD5_js = require('./chunk-T2QG2HD5.js');
4
- var chunkYDEEINER_js = require('./chunk-YDEEINER.js');
5
- var chunkSWRY3SI5_js = require('./chunk-SWRY3SI5.js');
3
+ var chunkB6UIVRFA_js = require('./chunk-B6UIVRFA.js');
4
+ var chunkFJDZ7AEE_js = require('./chunk-FJDZ7AEE.js');
5
+ var chunkALO4ZOHQ_js = require('./chunk-ALO4ZOHQ.js');
6
6
  var react = require('react');
7
7
  var reactI18next = require('react-i18next');
8
8
 
9
9
  function useVirtualizedSlides({
10
10
  totalItems,
11
11
  itemHeight,
12
- overscan = chunkYDEEINER_js.DEFAULT_VIRTUAL_OVERSCAN
12
+ overscan = chunkFJDZ7AEE_js.DEFAULT_VIRTUAL_OVERSCAN
13
13
  }) {
14
14
  const scrollContainerRef = react.useRef(null);
15
15
  const [scrollTop, setScrollTop] = react.useState(0);
@@ -39,7 +39,7 @@ function useVirtualizedSlides({
39
39
  resizeObserver?.disconnect();
40
40
  };
41
41
  }, []);
42
- const range = chunkYDEEINER_js.computeVirtualRange(totalItems, itemHeight, scrollTop, viewportHeight, overscan);
42
+ const range = chunkFJDZ7AEE_js.computeVirtualRange(totalItems, itemHeight, scrollTop, viewportHeight, overscan);
43
43
  const safeItemHeight = Math.max(itemHeight, 1);
44
44
  const scrollToIndex = react.useCallback(
45
45
  (index, behavior = "smooth") => {
@@ -80,7 +80,7 @@ function usePresenceTracking({
80
80
  }) {
81
81
  const [remoteUsers, setRemoteUsers] = react.useState([]);
82
82
  const projectorRef = react.useRef(null);
83
- projectorRef.current ??= chunkYDEEINER_js.createPresenceProjector();
83
+ projectorRef.current ??= chunkFJDZ7AEE_js.createPresenceProjector();
84
84
  const projector = projectorRef.current;
85
85
  const lastBroadcastRef = react.useRef(0);
86
86
  const pendingBroadcastRef = react.useRef(null);
@@ -105,7 +105,7 @@ function usePresenceTracking({
105
105
  awareness.setLocalStateField("presence", state);
106
106
  lastBroadcastRef.current = Date.now();
107
107
  };
108
- if (elapsed >= chunkYDEEINER_js.BROADCAST_THROTTLE_MS) {
108
+ if (elapsed >= chunkFJDZ7AEE_js.BROADCAST_THROTTLE_MS) {
109
109
  if (pendingBroadcastRef.current) {
110
110
  clearTimeout(pendingBroadcastRef.current);
111
111
  pendingBroadcastRef.current = null;
@@ -115,7 +115,7 @@ function usePresenceTracking({
115
115
  pendingBroadcastRef.current = setTimeout(() => {
116
116
  pendingBroadcastRef.current = null;
117
117
  flush();
118
- }, chunkYDEEINER_js.BROADCAST_THROTTLE_MS - elapsed);
118
+ }, chunkFJDZ7AEE_js.BROADCAST_THROTTLE_MS - elapsed);
119
119
  }
120
120
  },
121
121
  [awareness, userName, userColor, userAvatar, role]
@@ -195,7 +195,7 @@ function useYjsProvider({ config }) {
195
195
  const departureRef = react.useRef(null);
196
196
  const gateRef = react.useRef(null);
197
197
  if (!gateRef.current) {
198
- gateRef.current = chunkYDEEINER_js.createSyncGate(() => setSynced(true));
198
+ gateRef.current = chunkFJDZ7AEE_js.createSyncGate(() => setSynced(true));
199
199
  }
200
200
  const teardown = react.useCallback(() => {
201
201
  if (timeoutRef.current) {
@@ -215,7 +215,7 @@ function useYjsProvider({ config }) {
215
215
  const buildCleanup = react.useCallback(
216
216
  (provider, yDoc) => () => {
217
217
  announceDeparture();
218
- chunkYDEEINER_js.clearLocalAwareness(provider.awareness);
218
+ chunkFJDZ7AEE_js.clearLocalAwareness(provider.awareness);
219
219
  provider.destroy();
220
220
  yDoc.destroy();
221
221
  setDoc(null);
@@ -240,9 +240,9 @@ function useYjsProvider({ config }) {
240
240
  if (config.authToken) {
241
241
  opts.password = config.authToken;
242
242
  }
243
- const roomId = chunkYDEEINER_js.validateRoomId(config.roomId);
243
+ const roomId = chunkFJDZ7AEE_js.validateRoomId(config.roomId);
244
244
  const provider = new WebrtcProvider(roomId, yDoc, opts);
245
- departureRef.current = chunkYDEEINER_js.createDepartureChannel(roomId, provider.awareness);
245
+ departureRef.current = chunkFJDZ7AEE_js.createDepartureChannel(roomId, provider.awareness);
246
246
  setDoc(yDoc);
247
247
  setAwareness(provider.awareness);
248
248
  setClientId(provider.awareness.clientID);
@@ -284,13 +284,13 @@ function useYjsProvider({ config }) {
284
284
  if (!config) {
285
285
  return;
286
286
  }
287
- const roomId = chunkYDEEINER_js.validateRoomId(config.roomId);
288
- const transport = config.transport ?? chunkYDEEINER_js.resolveTransportForServerUrl(config.serverUrl);
287
+ const roomId = chunkFJDZ7AEE_js.validateRoomId(config.roomId);
288
+ const transport = config.transport ?? chunkFJDZ7AEE_js.resolveTransportForServerUrl(config.serverUrl);
289
289
  if (transport === "webrtc") {
290
290
  await initWebrtc();
291
291
  return;
292
292
  }
293
- if (chunkYDEEINER_js.isMixedContentBlocked(config.serverUrl)) {
293
+ if (chunkFJDZ7AEE_js.isMixedContentBlocked(config.serverUrl)) {
294
294
  console.warn(
295
295
  `[pptx-viewer] Refusing to connect: insecure ws:// server "${config.serverUrl}" is blocked from a secure (https) page. Use a wss:// URL.`
296
296
  );
@@ -304,7 +304,7 @@ function useYjsProvider({ config }) {
304
304
  const provider = new WebsocketProvider(config.serverUrl, roomId, yDoc, {
305
305
  params: config.authToken ? { token: config.authToken } : void 0
306
306
  });
307
- departureRef.current = chunkYDEEINER_js.createDepartureChannel(roomId, provider.awareness);
307
+ departureRef.current = chunkFJDZ7AEE_js.createDepartureChannel(roomId, provider.awareness);
308
308
  let connected = false;
309
309
  const handleStatus = (event) => {
310
310
  if (event.status === "connected") {
@@ -344,7 +344,7 @@ function useYjsProvider({ config }) {
344
344
  provider.off("status", handleStatus);
345
345
  provider.off("sync", handleSynced);
346
346
  announceDeparture();
347
- chunkYDEEINER_js.clearLocalAwareness(provider.awareness);
347
+ chunkFJDZ7AEE_js.clearLocalAwareness(provider.awareness);
348
348
  provider.destroy();
349
349
  yDoc.destroy();
350
350
  setDoc(null);
@@ -353,7 +353,7 @@ function useYjsProvider({ config }) {
353
353
  cleanupRef.current = null;
354
354
  setStatus("error");
355
355
  }
356
- }, chunkYDEEINER_js.CONNECTION_TIMEOUT_MS);
356
+ }, chunkFJDZ7AEE_js.CONNECTION_TIMEOUT_MS);
357
357
  }
358
358
  setDoc(yDoc);
359
359
  setAwareness(provider.awareness);
@@ -362,7 +362,7 @@ function useYjsProvider({ config }) {
362
362
  provider.off("status", handleStatus);
363
363
  provider.off("sync", handleSynced);
364
364
  announceDeparture();
365
- chunkYDEEINER_js.clearLocalAwareness(provider.awareness);
365
+ chunkFJDZ7AEE_js.clearLocalAwareness(provider.awareness);
366
366
  provider.destroy();
367
367
  yDoc.destroy();
368
368
  setDoc(null);
@@ -388,7 +388,7 @@ function useYjsProvider({ config }) {
388
388
  ]);
389
389
  react.useEffect(() => {
390
390
  init();
391
- const disposeTeardown = chunkYDEEINER_js.registerCollaborationTeardown({
391
+ const disposeTeardown = chunkFJDZ7AEE_js.registerCollaborationTeardown({
392
392
  leave: teardown,
393
393
  rejoin: init
394
394
  });
@@ -409,7 +409,7 @@ function useCollaborativeState({
409
409
  canvasWidth,
410
410
  canvasHeight
411
411
  }) {
412
- const userColor = chunkYDEEINER_js.sanitizeColor(config?.userColor, "#6366f1");
412
+ const userColor = chunkFJDZ7AEE_js.sanitizeColor(config?.userColor, "#6366f1");
413
413
  const { status, awareness, doc, clientId, synced, retry } = useYjsProvider({ config });
414
414
  const { remoteUsers, broadcastPresence } = usePresenceTracking({
415
415
  awareness,
@@ -527,8 +527,8 @@ function useEditorHistory(input) {
527
527
  width: canvasSize.width,
528
528
  height: canvasSize.height,
529
529
  activeSlideIndex,
530
- slides: slides.map(chunkYDEEINER_js.cloneSlide),
531
- templateElementsBySlideId: chunkYDEEINER_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
530
+ slides: slides.map(chunkFJDZ7AEE_js.cloneSlide),
531
+ templateElementsBySlideId: chunkFJDZ7AEE_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
532
532
  ...actionLabel ? { actionLabel } : {}
533
533
  };
534
534
  },
@@ -541,9 +541,9 @@ function useEditorHistory(input) {
541
541
  width: snapshot.width,
542
542
  height: snapshot.height
543
543
  });
544
- setSlides(snapshot.slides.map(chunkYDEEINER_js.cloneSlide));
544
+ setSlides(snapshot.slides.map(chunkFJDZ7AEE_js.cloneSlide));
545
545
  setTemplateElementsBySlideId(
546
- chunkYDEEINER_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
546
+ chunkFJDZ7AEE_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
547
547
  );
548
548
  setActiveSlideIndex(Math.min(snapshot.activeSlideIndex, maxSlideIndex));
549
549
  setSelectedElementIds([]);
@@ -582,8 +582,8 @@ function useEditorHistory(input) {
582
582
  const currentSnapshot = buildHistorySnapshot();
583
583
  historyFutureRef.current.push(currentSnapshot);
584
584
  isApplyingHistoryRef.current = true;
585
- const nextSnapshot = chunkT2QG2HD5_js.cloneHistorySnapshot(previousSnapshot);
586
- lastHistorySnapshotRef.current = chunkT2QG2HD5_js.cloneHistorySnapshot(nextSnapshot);
585
+ const nextSnapshot = chunkB6UIVRFA_js.cloneHistorySnapshot(previousSnapshot);
586
+ lastHistorySnapshotRef.current = chunkB6UIVRFA_js.cloneHistorySnapshot(nextSnapshot);
587
587
  lastHistorySerializedRef.current = serializeDocument(nextSnapshot);
588
588
  applyHistorySnapshot(nextSnapshot);
589
589
  updateHistoryAvailability();
@@ -604,8 +604,8 @@ function useEditorHistory(input) {
604
604
  const currentSnapshot = buildHistorySnapshot();
605
605
  historyPastRef.current.push(currentSnapshot);
606
606
  isApplyingHistoryRef.current = true;
607
- const targetSnapshot = chunkT2QG2HD5_js.cloneHistorySnapshot(nextSnapshot);
608
- lastHistorySnapshotRef.current = chunkT2QG2HD5_js.cloneHistorySnapshot(targetSnapshot);
607
+ const targetSnapshot = chunkB6UIVRFA_js.cloneHistorySnapshot(nextSnapshot);
608
+ lastHistorySnapshotRef.current = chunkB6UIVRFA_js.cloneHistorySnapshot(targetSnapshot);
609
609
  lastHistorySerializedRef.current = serializeDocument(targetSnapshot);
610
610
  applyHistorySnapshot(targetSnapshot);
611
611
  updateHistoryAvailability();
@@ -623,7 +623,7 @@ function useEditorHistory(input) {
623
623
  historyPastRef.current = [];
624
624
  historyFutureRef.current = [];
625
625
  if (initialSnapshot) {
626
- const clonedInitial = chunkT2QG2HD5_js.cloneHistorySnapshot(initialSnapshot);
626
+ const clonedInitial = chunkB6UIVRFA_js.cloneHistorySnapshot(initialSnapshot);
627
627
  lastHistorySnapshotRef.current = clonedInitial;
628
628
  lastHistorySerializedRef.current = serializeDocument(clonedInitial);
629
629
  } else {
@@ -671,19 +671,19 @@ function useEditorHistory(input) {
671
671
  }
672
672
  const previousSnapshot = lastHistorySnapshotRef.current;
673
673
  if (!previousSnapshot) {
674
- lastHistorySnapshotRef.current = chunkT2QG2HD5_js.cloneHistorySnapshot(snapshot);
674
+ lastHistorySnapshotRef.current = chunkB6UIVRFA_js.cloneHistorySnapshot(snapshot);
675
675
  lastHistorySerializedRef.current = serialized;
676
676
  lastCheapHashRef.current = cheapHash;
677
677
  updateHistoryAvailability();
678
678
  return;
679
679
  }
680
680
  onDirtyRef.current?.();
681
- historyPastRef.current.push(chunkT2QG2HD5_js.cloneHistorySnapshot(previousSnapshot));
681
+ historyPastRef.current.push(chunkB6UIVRFA_js.cloneHistorySnapshot(previousSnapshot));
682
682
  while (historyPastRef.current.length > Math.max(1, maxHistoryEntries)) {
683
683
  historyPastRef.current.shift();
684
684
  }
685
685
  historyFutureRef.current = [];
686
- lastHistorySnapshotRef.current = chunkT2QG2HD5_js.cloneHistorySnapshot(snapshot);
686
+ lastHistorySnapshotRef.current = chunkB6UIVRFA_js.cloneHistorySnapshot(snapshot);
687
687
  lastHistorySerializedRef.current = serialized;
688
688
  lastCheapHashRef.current = cheapHash;
689
689
  updateHistoryAvailability();
@@ -743,9 +743,9 @@ function useZoomViewport({
743
743
  const canvasStageRef = react.useRef(null);
744
744
  const canvasViewportRef = react.useRef(null);
745
745
  const renderScaleRef = react.useRef(1);
746
- const wheelBufferRef = react.useRef(chunkYDEEINER_js.createWheelStepBuffer());
746
+ const wheelBufferRef = react.useRef(chunkFJDZ7AEE_js.createWheelStepBuffer());
747
747
  const storeRef = react.useRef(null);
748
- storeRef.current ??= chunkYDEEINER_js.createViewerZoomStore();
748
+ storeRef.current ??= chunkFJDZ7AEE_js.createViewerZoomStore();
749
749
  const store = storeRef.current;
750
750
  const scale = useViewerStore(store, selectZoom);
751
751
  const setScale = react.useCallback(
@@ -806,7 +806,7 @@ function useZoomViewport({
806
806
  if (!wrapper || !canvasViewport) {
807
807
  return;
808
808
  }
809
- const boundedScale = chunkYDEEINER_js.clampZoomScale(nextScale);
809
+ const boundedScale = chunkFJDZ7AEE_js.clampZoomScale(nextScale);
810
810
  const nextEditorScale = fitScale * boundedScale;
811
811
  const centerX = (bounds.minX + bounds.maxX) / 2;
812
812
  const centerY = (bounds.minY + bounds.maxY) / 2;
@@ -843,29 +843,29 @@ function useZoomViewport({
843
843
  selectedElements.forEach((element) => {
844
844
  minX = Math.min(minX, element.x);
845
845
  minY = Math.min(minY, element.y);
846
- maxX = Math.max(maxX, element.x + Math.max(element.width, chunkT2QG2HD5_js.MIN_ELEMENT_SIZE));
847
- maxY = Math.max(maxY, element.y + Math.max(element.height, chunkT2QG2HD5_js.MIN_ELEMENT_SIZE));
846
+ maxX = Math.max(maxX, element.x + Math.max(element.width, chunkB6UIVRFA_js.MIN_ELEMENT_SIZE));
847
+ maxY = Math.max(maxY, element.y + Math.max(element.height, chunkB6UIVRFA_js.MIN_ELEMENT_SIZE));
848
848
  });
849
849
  if (!Number.isFinite(minX) || !Number.isFinite(minY) || !Number.isFinite(maxX) || !Number.isFinite(maxY)) {
850
850
  return;
851
851
  }
852
852
  const selectionBounds = { minX, minY, maxX, maxY };
853
- const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkT2QG2HD5_js.MIN_ELEMENT_SIZE);
854
- const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkT2QG2HD5_js.MIN_ELEMENT_SIZE);
853
+ const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkB6UIVRFA_js.MIN_ELEMENT_SIZE);
854
+ const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkB6UIVRFA_js.MIN_ELEMENT_SIZE);
855
855
  const availableWidth = Math.max(
856
- effectiveEditorDimensions.width - chunkT2QG2HD5_js.ZOOM_TO_SELECTION_PADDING,
857
- chunkT2QG2HD5_js.MIN_ELEMENT_SIZE
856
+ effectiveEditorDimensions.width - chunkB6UIVRFA_js.ZOOM_TO_SELECTION_PADDING,
857
+ chunkB6UIVRFA_js.MIN_ELEMENT_SIZE
858
858
  );
859
859
  const availableHeight = Math.max(
860
- effectiveEditorDimensions.height - chunkT2QG2HD5_js.ZOOM_TO_SELECTION_PADDING,
861
- chunkT2QG2HD5_js.MIN_ELEMENT_SIZE
860
+ effectiveEditorDimensions.height - chunkB6UIVRFA_js.ZOOM_TO_SELECTION_PADDING,
861
+ chunkB6UIVRFA_js.MIN_ELEMENT_SIZE
862
862
  );
863
863
  const targetEditorScale = Math.min(
864
864
  availableWidth / boundsWidth,
865
865
  availableHeight / boundsHeight
866
866
  );
867
867
  const safeFitScale = fitScale > Number.EPSILON ? fitScale : Number.EPSILON;
868
- const nextScale = chunkYDEEINER_js.clampZoomScale(targetEditorScale / safeFitScale);
868
+ const nextScale = chunkFJDZ7AEE_js.clampZoomScale(targetEditorScale / safeFitScale);
869
869
  setScale(nextScale);
870
870
  window.requestAnimationFrame(() => {
871
871
  window.requestAnimationFrame(() => {
@@ -882,14 +882,14 @@ function useZoomViewport({
882
882
  ]);
883
883
  const handleWheel = react.useCallback(
884
884
  (event) => {
885
- const mapped = chunkYDEEINER_js.mapEditingWheel(event, wheelBufferRef.current, true);
885
+ const mapped = chunkFJDZ7AEE_js.mapEditingWheel(event, wheelBufferRef.current, true);
886
886
  if (mapped.intent !== "zoom") {
887
887
  return;
888
888
  }
889
889
  event.preventDefault();
890
890
  store.dispatch({
891
891
  type: "set-zoom",
892
- zoom: chunkYDEEINER_js.clampZoomScale(store.getState().zoom + mapped.deltaScale)
892
+ zoom: chunkFJDZ7AEE_js.clampZoomScale(store.getState().zoom + mapped.deltaScale)
893
893
  });
894
894
  },
895
895
  [store]
@@ -977,7 +977,7 @@ function applyAnimationGroupSteps(group, onPlayActionSound, setPresentationEleme
977
977
  const command = step.command;
978
978
  const timer = window.setTimeout(
979
979
  () => {
980
- chunkT2QG2HD5_js.executeMediaCommand(command);
980
+ chunkB6UIVRFA_js.executeMediaCommand(command);
981
981
  },
982
982
  Math.max(0, step.delayMs)
983
983
  );
@@ -1186,7 +1186,7 @@ function scheduleEntranceAnimationTimers(slide, setPresentationAnimations, prese
1186
1186
  }))
1187
1187
  );
1188
1188
  entranceAnimations.forEach((animation, animationIndex) => {
1189
- const delay = chunkYDEEINER_js.computeEntranceAnimationDelay(animation.delayMs, animationIndex);
1189
+ const delay = chunkFJDZ7AEE_js.computeEntranceAnimationDelay(animation.delayMs, animationIndex);
1190
1190
  const timer = window.setTimeout(() => {
1191
1191
  setPresentationAnimations(
1192
1192
  (previousAnimations) => previousAnimations.map(
@@ -1220,7 +1220,7 @@ function useAnimationPlayback(input) {
1220
1220
  (controller, group) => {
1221
1221
  driveBuildReveal(
1222
1222
  controller,
1223
- chunkYDEEINER_js.PresentationAnimationController.collectBuildStepIds(group),
1223
+ chunkFJDZ7AEE_js.PresentationAnimationController.collectBuildStepIds(group),
1224
1224
  setPresentationElementStates,
1225
1225
  buildRafRef
1226
1226
  );
@@ -1296,7 +1296,7 @@ function useAnimationPlayback(input) {
1296
1296
  setHoverTriggerShapeIds(/* @__PURE__ */ new Set());
1297
1297
  return;
1298
1298
  }
1299
- const controller = chunkYDEEINER_js.PresentationAnimationController.fromSlide(slide);
1299
+ const controller = chunkFJDZ7AEE_js.PresentationAnimationController.fromSlide(slide);
1300
1300
  controllerRef.current = controller;
1301
1301
  setPresentationKeyframesCss(controller.keyframesCss);
1302
1302
  setInteractiveTriggerShapeIds(controller.interactiveTriggerShapeIds);
@@ -1313,7 +1313,7 @@ function useAnimationPlayback(input) {
1313
1313
  const activeGroup = activeAnimationGroupRef.current;
1314
1314
  if (controller && controller.hasMoreSteps() && shouldSeekAnimationGroup(activeGroup, activeAnimationEndAtRef.current, performance.now())) {
1315
1315
  finishDomAnimationsForGroup(activeGroup);
1316
- const buildIds = chunkYDEEINER_js.PresentationAnimationController.collectBuildStepIds(activeGroup);
1316
+ const buildIds = chunkFJDZ7AEE_js.PresentationAnimationController.collectBuildStepIds(activeGroup);
1317
1317
  const completedStates = controller.computeStatesFor(buildIds);
1318
1318
  clearPresentationTimers();
1319
1319
  finishAnimationGroupSteps(activeGroup, setPresentationElementStates, completedStates);
@@ -1480,12 +1480,12 @@ function useAnimationPlayback(input) {
1480
1480
  presentationTimersRef
1481
1481
  };
1482
1482
  }
1483
- var PRESENTER_CHANNEL_NAME = chunkYDEEINER_js.PRESENTATION_CHANNEL_NAME;
1484
- var AUDIENCE_HASH = chunkYDEEINER_js.PRESENTATION_HASH;
1485
- var PRESENTER_MSG_ORIGIN = chunkYDEEINER_js.PRESENTATION_MESSAGE_ORIGIN;
1486
- var AUDIENCE_NONCE_KEY = chunkYDEEINER_js.PRESENTATION_NONCE_KEY;
1483
+ var PRESENTER_CHANNEL_NAME = chunkFJDZ7AEE_js.PRESENTATION_CHANNEL_NAME;
1484
+ var AUDIENCE_HASH = chunkFJDZ7AEE_js.PRESENTATION_HASH;
1485
+ var PRESENTER_MSG_ORIGIN = chunkFJDZ7AEE_js.PRESENTATION_MESSAGE_ORIGIN;
1486
+ var AUDIENCE_NONCE_KEY = chunkFJDZ7AEE_js.PRESENTATION_NONCE_KEY;
1487
1487
  function generateSessionId() {
1488
- return chunkYDEEINER_js.createPresentationSessionId();
1488
+ return chunkFJDZ7AEE_js.createPresentationSessionId();
1489
1489
  }
1490
1490
  function parseAudienceNonce() {
1491
1491
  const hash = window.location.hash;
@@ -1521,7 +1521,7 @@ function usePresenterWindow(input) {
1521
1521
  }, []);
1522
1522
  const swapDisplays = react.useCallback(async () => {
1523
1523
  const audience = audienceWindowRef.current;
1524
- return audience && !audience.closed ? chunkYDEEINER_js.swapPresentationWindows(window, audience) : false;
1524
+ return audience && !audience.closed ? chunkFJDZ7AEE_js.swapPresentationWindows(window, audience) : false;
1525
1525
  }, []);
1526
1526
  const syncSlideToAudience = react.useCallback(
1527
1527
  (slideIndex) => {
@@ -1585,7 +1585,7 @@ function usePresenterWindow(input) {
1585
1585
  pollTimerRef.current = null;
1586
1586
  }
1587
1587
  if (closingSessionId) {
1588
- void chunkYDEEINER_js.clearAudienceContent(closingSessionId);
1588
+ void chunkFJDZ7AEE_js.clearAudienceContent(closingSessionId);
1589
1589
  }
1590
1590
  }, [getChannel]);
1591
1591
  const openAudienceWindow = react.useCallback(() => {
@@ -1603,10 +1603,10 @@ function usePresenterWindow(input) {
1603
1603
  audienceWindowRef.current = blankWin;
1604
1604
  const sessionId = generateSessionId();
1605
1605
  sessionIdRef.current = sessionId;
1606
- const audienceUrl = chunkYDEEINER_js.buildPresentationAudienceUrl(window.location.href, sessionId);
1607
- void chunkYDEEINER_js.resolveAudienceScreenPlacement(window).then((placement) => {
1606
+ const audienceUrl = chunkFJDZ7AEE_js.buildPresentationAudienceUrl(window.location.href, sessionId);
1607
+ void chunkFJDZ7AEE_js.resolveAudienceScreenPlacement(window).then((placement) => {
1608
1608
  if (placement && audienceWindowRef.current === blankWin && !blankWin.closed) {
1609
- chunkYDEEINER_js.placeAudienceWindow(blankWin, placement);
1609
+ chunkFJDZ7AEE_js.placeAudienceWindow(blankWin, placement);
1610
1610
  }
1611
1611
  return void 0;
1612
1612
  });
@@ -1636,7 +1636,7 @@ function usePresenterWindow(input) {
1636
1636
  }
1637
1637
  };
1638
1638
  if (content) {
1639
- void chunkYDEEINER_js.storeAudienceContent(content, sessionId).then(() => navigateOrClose(true)).catch(() => navigateOrClose(false));
1639
+ void chunkFJDZ7AEE_js.storeAudienceContent(content, sessionId).then(() => navigateOrClose(true)).catch(() => navigateOrClose(false));
1640
1640
  } else {
1641
1641
  navigateOrClose(true);
1642
1642
  }
@@ -1662,7 +1662,7 @@ function usePresenterWindow(input) {
1662
1662
  }
1663
1663
  const handleMessage = (event) => {
1664
1664
  const message = event.data;
1665
- if (chunkYDEEINER_js.isPresentationSessionMessage(message) && message.type === "audience-ready" && message.sessionId === sessionIdRef.current) {
1665
+ if (chunkFJDZ7AEE_js.isPresentationSessionMessage(message) && message.type === "audience-ready" && message.sessionId === sessionIdRef.current) {
1666
1666
  syncStateToAudience(snapshotRef.current);
1667
1667
  }
1668
1668
  };
@@ -1691,7 +1691,7 @@ function usePresenterWindow(input) {
1691
1691
  react.useEffect(() => {
1692
1692
  const handleBeforeUnload = () => {
1693
1693
  if (sessionIdRef.current) {
1694
- void chunkYDEEINER_js.clearAudienceContent(sessionIdRef.current);
1694
+ void chunkFJDZ7AEE_js.clearAudienceContent(sessionIdRef.current);
1695
1695
  }
1696
1696
  };
1697
1697
  window.addEventListener("beforeunload", handleBeforeUnload);
@@ -1753,7 +1753,7 @@ function useAudienceMode(input) {
1753
1753
  }
1754
1754
  channel.onmessage = (event) => {
1755
1755
  const data = event.data;
1756
- if (!chunkYDEEINER_js.isPresentationSessionMessage(data) || data.origin !== PRESENTER_MSG_ORIGIN) {
1756
+ if (!chunkFJDZ7AEE_js.isPresentationSessionMessage(data) || data.origin !== PRESENTER_MSG_ORIGIN) {
1757
1757
  return;
1758
1758
  }
1759
1759
  if (expectedSessionId && data.sessionId !== expectedSessionId) {
@@ -1769,16 +1769,16 @@ function useAudienceMode(input) {
1769
1769
  }
1770
1770
  if (data.type === "presenter-exit") {
1771
1771
  if (expectedSessionId) {
1772
- void chunkYDEEINER_js.clearAudienceContent(expectedSessionId);
1772
+ void chunkFJDZ7AEE_js.clearAudienceContent(expectedSessionId);
1773
1773
  }
1774
- if (chunkYDEEINER_js.endAudienceDisplay(window)) {
1774
+ if (chunkFJDZ7AEE_js.endAudienceDisplay(window)) {
1775
1775
  handlers.onPresenterEnded?.();
1776
1776
  }
1777
1777
  }
1778
1778
  };
1779
1779
  if (expectedSessionId) {
1780
1780
  channel.postMessage({
1781
- origin: chunkYDEEINER_js.PRESENTATION_MESSAGE_ORIGIN,
1781
+ origin: chunkFJDZ7AEE_js.PRESENTATION_MESSAGE_ORIGIN,
1782
1782
  type: "audience-ready",
1783
1783
  sessionId: expectedSessionId
1784
1784
  });
@@ -1792,7 +1792,7 @@ function useAudienceMode(input) {
1792
1792
  }, []);
1793
1793
  }
1794
1794
  function usePresentationKeyboard(input) {
1795
- const wheelBufferRef = react.useRef(chunkYDEEINER_js.createWheelStepBuffer());
1795
+ const wheelBufferRef = react.useRef(chunkFJDZ7AEE_js.createWheelStepBuffer());
1796
1796
  const {
1797
1797
  mode,
1798
1798
  movePresentationSlide,
@@ -1813,14 +1813,14 @@ function usePresentationKeyboard(input) {
1813
1813
  presentationSlideIndex,
1814
1814
  setShowRehearsalSummary
1815
1815
  } = input;
1816
- const keyBufferRef = react.useRef(chunkYDEEINER_js.createPresentationKeyBuffer());
1816
+ const keyBufferRef = react.useRef(chunkFJDZ7AEE_js.createPresentationKeyBuffer());
1817
1817
  react.useEffect(() => {
1818
- if (mode !== "present" || !chunkYDEEINER_js.acceptsPresentationInput()) {
1819
- keyBufferRef.current = chunkYDEEINER_js.createPresentationKeyBuffer();
1818
+ if (mode !== "present" || !chunkFJDZ7AEE_js.acceptsPresentationInput()) {
1819
+ keyBufferRef.current = chunkFJDZ7AEE_js.createPresentationKeyBuffer();
1820
1820
  return;
1821
1821
  }
1822
1822
  const handleKeyDown = (event) => {
1823
- const mapped = chunkYDEEINER_js.mapPresentationKey(event, keyBufferRef.current);
1823
+ const mapped = chunkFJDZ7AEE_js.mapPresentationKey(event, keyBufferRef.current);
1824
1824
  if (mapped.action === "none") {
1825
1825
  return;
1826
1826
  }
@@ -1840,12 +1840,12 @@ function usePresentationKeyboard(input) {
1840
1840
  movePresentationSlide(-1);
1841
1841
  return;
1842
1842
  case "first": {
1843
- const first = chunkYDEEINER_js.firstShowSlideIndex(showSlideIndexes);
1843
+ const first = chunkFJDZ7AEE_js.firstShowSlideIndex(showSlideIndexes);
1844
1844
  navigateToSlide(first ?? 0);
1845
1845
  return;
1846
1846
  }
1847
1847
  case "last": {
1848
- const last = chunkYDEEINER_js.lastShowSlideIndex(showSlideIndexes);
1848
+ const last = chunkFJDZ7AEE_js.lastShowSlideIndex(showSlideIndexes);
1849
1849
  navigateToSlide(last ?? Math.max(0, slideCount - 1));
1850
1850
  return;
1851
1851
  }
@@ -1883,10 +1883,10 @@ function usePresentationKeyboard(input) {
1883
1883
  }
1884
1884
  };
1885
1885
  const handleWheel = (event) => {
1886
- if (mode !== "present" || !chunkYDEEINER_js.acceptsPresentationInput()) {
1886
+ if (mode !== "present" || !chunkFJDZ7AEE_js.acceptsPresentationInput()) {
1887
1887
  return;
1888
1888
  }
1889
- const mapped = chunkYDEEINER_js.mapPresentationWheel(event, wheelBufferRef.current);
1889
+ const mapped = chunkFJDZ7AEE_js.mapPresentationWheel(event, wheelBufferRef.current);
1890
1890
  if (mapped.intent === "next-slide") {
1891
1891
  event.preventDefault();
1892
1892
  movePresentationSlide(1);
@@ -2019,7 +2019,7 @@ function useRehearsalTimings(input) {
2019
2019
 
2020
2020
  // src/viewer/hooks/presentation-mode/presentation-actions.ts
2021
2021
  function handlePresentationActionImpl(action, deps) {
2022
- chunkYDEEINER_js.runPresentationAction(
2022
+ chunkFJDZ7AEE_js.runPresentationAction(
2023
2023
  action,
2024
2024
  { slideCount: deps.slidesLength },
2025
2025
  {
@@ -2041,7 +2041,7 @@ function handlePresentationActionImpl(action, deps) {
2041
2041
  function executeSlideTransition(nextSlideIndex, deps) {
2042
2042
  const incomingSlide = deps.slides[nextSlideIndex];
2043
2043
  const transition = incomingSlide?.transition;
2044
- const durationMs = deps.playTransition ? chunkYDEEINER_js.resolveTransitionDurationMs(transition) : 0;
2044
+ const durationMs = deps.playTransition ? chunkFJDZ7AEE_js.resolveTransitionDurationMs(transition) : 0;
2045
2045
  deps.clearPresentationTimers();
2046
2046
  deps.setPresentationSlideIndex(nextSlideIndex);
2047
2047
  deps.onSetActiveSlideIndex(nextSlideIndex);
@@ -2100,7 +2100,7 @@ function useSlideNavigation(input) {
2100
2100
  });
2101
2101
  const scheduleAutoAdvanceForSlide = react.useCallback(
2102
2102
  (slideIndex) => {
2103
- const delayMs = chunkYDEEINER_js.resolveAutoAdvanceDelayMs(slides[slideIndex], { useTimings });
2103
+ const delayMs = chunkFJDZ7AEE_js.resolveAutoAdvanceDelayMs(slides[slideIndex], { useTimings });
2104
2104
  if (delayMs === void 0) {
2105
2105
  return;
2106
2106
  }
@@ -2123,7 +2123,7 @@ function useSlideNavigation(input) {
2123
2123
  if (availableSlideIndexes.length === 0) {
2124
2124
  return;
2125
2125
  }
2126
- const pastLastSlide = direction === 1 && !chunkYDEEINER_js.hasShowSlideAfter(presentationSlideIndex, availableSlideIndexes);
2126
+ const pastLastSlide = direction === 1 && !chunkFJDZ7AEE_js.hasShowSlideAfter(presentationSlideIndex, availableSlideIndexes);
2127
2127
  if (rehearsing && pastLastSlide) {
2128
2128
  recordCurrentSlideTime(presentationSlideIndex);
2129
2129
  try {
@@ -2141,9 +2141,9 @@ function useSlideNavigation(input) {
2141
2141
  onAdvancePastLastSlide();
2142
2142
  return;
2143
2143
  }
2144
- const nextSlideIndex = direction === 1 ? chunkYDEEINER_js.nextShowSlideIndex(presentationSlideIndex, availableSlideIndexes, {
2144
+ const nextSlideIndex = direction === 1 ? chunkFJDZ7AEE_js.nextShowSlideIndex(presentationSlideIndex, availableSlideIndexes, {
2145
2145
  loop: Boolean(loopContinuously) && !rehearsing
2146
- }) : chunkYDEEINER_js.previousShowSlideIndex(presentationSlideIndex, availableSlideIndexes);
2146
+ }) : chunkFJDZ7AEE_js.previousShowSlideIndex(presentationSlideIndex, availableSlideIndexes);
2147
2147
  if (nextSlideIndex === void 0 || nextSlideIndex === presentationSlideIndex) {
2148
2148
  return;
2149
2149
  }
@@ -2288,22 +2288,22 @@ function useZoomNavigation(input) {
2288
2288
  };
2289
2289
  }
2290
2290
  function usePresenterConsole(slideIndex, active) {
2291
- const timerRef = react.useRef(chunkYDEEINER_js.createPresenterTimer());
2292
- const [snapshot, setSnapshot] = react.useState(() => chunkYDEEINER_js.createInitialPresentationSnapshot(slideIndex));
2291
+ const timerRef = react.useRef(chunkFJDZ7AEE_js.createPresenterTimer());
2292
+ const [snapshot, setSnapshot] = react.useState(() => chunkFJDZ7AEE_js.createInitialPresentationSnapshot(slideIndex));
2293
2293
  const patch = react.useCallback((value) => {
2294
- setSnapshot((current) => chunkYDEEINER_js.mergePresentationSnapshot(current, value));
2294
+ setSnapshot((current) => chunkFJDZ7AEE_js.mergePresentationSnapshot(current, value));
2295
2295
  }, []);
2296
2296
  react.useEffect(() => patch({ slideIndex }), [patch, slideIndex]);
2297
2297
  react.useEffect(() => {
2298
2298
  if (!active) {
2299
2299
  return;
2300
2300
  }
2301
- timerRef.current = chunkYDEEINER_js.resetPresenterTimer();
2301
+ timerRef.current = chunkFJDZ7AEE_js.resetPresenterTimer();
2302
2302
  patch({ paused: false, elapsedMs: 0 });
2303
2303
  const timer = window.setInterval(() => {
2304
2304
  patch({
2305
2305
  paused: timerRef.current.paused,
2306
- elapsedMs: chunkYDEEINER_js.presenterElapsed(timerRef.current)
2306
+ elapsedMs: chunkFJDZ7AEE_js.presenterElapsed(timerRef.current)
2307
2307
  });
2308
2308
  }, 1e3);
2309
2309
  return () => window.clearInterval(timer);
@@ -2313,19 +2313,19 @@ function usePresenterConsole(slideIndex, active) {
2313
2313
  applyAudienceSnapshot: setSnapshot,
2314
2314
  setBlackout: (blackout) => patch({ blackout }),
2315
2315
  toggleTimer: () => {
2316
- timerRef.current = chunkYDEEINER_js.togglePresenterTimer(timerRef.current);
2316
+ timerRef.current = chunkFJDZ7AEE_js.togglePresenterTimer(timerRef.current);
2317
2317
  patch({
2318
2318
  paused: timerRef.current.paused,
2319
- elapsedMs: chunkYDEEINER_js.presenterElapsed(timerRef.current)
2319
+ elapsedMs: chunkFJDZ7AEE_js.presenterElapsed(timerRef.current)
2320
2320
  });
2321
2321
  },
2322
2322
  resetTimer: () => {
2323
- timerRef.current = chunkYDEEINER_js.resetPresenterTimer();
2323
+ timerRef.current = chunkFJDZ7AEE_js.resetPresenterTimer();
2324
2324
  patch({ paused: false, elapsedMs: 0 });
2325
2325
  },
2326
2326
  stepZoom: (direction) => setSnapshot(
2327
- (current) => chunkYDEEINER_js.mergePresentationSnapshot(current, {
2328
- zoom: chunkYDEEINER_js.stepPresenterZoom(
2327
+ (current) => chunkFJDZ7AEE_js.mergePresentationSnapshot(current, {
2328
+ zoom: chunkFJDZ7AEE_js.stepPresenterZoom(
2329
2329
  current.zoom ?? { scale: 1, originX: 0.5, originY: 0.5 },
2330
2330
  direction
2331
2331
  )
@@ -2371,7 +2371,7 @@ function usePresentationMode(input) {
2371
2371
  const [allSlidesOpen, setAllSlidesOpen] = react.useState(false);
2372
2372
  const [endOfShowVisible, setEndOfShowVisible] = react.useState(false);
2373
2373
  const [presentationStartTime, setPresentationStartTime] = react.useState(null);
2374
- const showGuard = react.useMemo(() => chunkYDEEINER_js.createPresenterShowGuard(), []);
2374
+ const showGuard = react.useMemo(() => chunkFJDZ7AEE_js.createPresenterShowGuard(), []);
2375
2375
  const {
2376
2376
  presentationAnimations,
2377
2377
  presentationElementStates,
@@ -2450,7 +2450,7 @@ function usePresentationMode(input) {
2450
2450
  });
2451
2451
  const movePresentationSlide = react.useCallback(
2452
2452
  (direction, trigger = "explicit") => {
2453
- if (!chunkYDEEINER_js.acceptsPresentationInput()) {
2453
+ if (!chunkFJDZ7AEE_js.acceptsPresentationInput()) {
2454
2454
  return;
2455
2455
  }
2456
2456
  if (endOfShowVisible) {
@@ -2588,7 +2588,7 @@ function usePresentationMode(input) {
2588
2588
  if (mode !== "present") {
2589
2589
  return;
2590
2590
  }
2591
- return chunkYDEEINER_js.attachPresentationVisibilityPause({
2591
+ return chunkFJDZ7AEE_js.attachPresentationVisibilityPause({
2592
2592
  root: containerRef.current ?? void 0,
2593
2593
  onHidden: () => clearPresentationTimersRef.current(),
2594
2594
  onVisible: () => scheduleAutoAdvanceRef.current(presentationSlideIndexRef.current)
@@ -2668,11 +2668,11 @@ function usePresentationMode(input) {
2668
2668
  if (!transitionOverlay || transitionOverlay.transition.type !== "morph") {
2669
2669
  return void 0;
2670
2670
  }
2671
- return chunkYDEEINER_js.buildMorphTransitionPlan(
2671
+ return chunkFJDZ7AEE_js.buildMorphTransitionPlan(
2672
2672
  slides[transitionOverlay.outgoingSlideIndex],
2673
2673
  slides[transitionOverlay.incomingSlideIndex],
2674
2674
  transitionOverlay.durationMs,
2675
- chunkYDEEINER_js.morphOptionToMode(transitionOverlay.transition.morphOption)
2675
+ chunkFJDZ7AEE_js.morphOptionToMode(transitionOverlay.transition.morphOption)
2676
2676
  );
2677
2677
  }, [transitionOverlay, slides]);
2678
2678
  const morphedElementStates = react.useMemo(() => {
@@ -2693,7 +2693,7 @@ function usePresentationMode(input) {
2693
2693
  if (!morphPlan) {
2694
2694
  return presentationKeyframesCss;
2695
2695
  }
2696
- const imageRules = chunkYDEEINER_js.buildMorphAnimationRules(morphPlan, "", "incoming", "image");
2696
+ const imageRules = chunkFJDZ7AEE_js.buildMorphAnimationRules(morphPlan, "", "incoming", "image");
2697
2697
  return `${presentationKeyframesCss ?? ""}
2698
2698
  ${morphPlan.keyframesCss}
2699
2699
  ${imageRules}`;
@@ -2989,7 +2989,7 @@ function useFindReplace({
2989
2989
  const [findResults, setFindResults] = react.useState([]);
2990
2990
  const [findResultIndex, setFindResultIndex] = react.useState(-1);
2991
2991
  const performFind = react.useCallback(() => {
2992
- const results = chunkYDEEINER_js.findInSlides(slides, findQuery, { matchCase: findMatchCase });
2992
+ const results = chunkFJDZ7AEE_js.findInSlides(slides, findQuery, { matchCase: findMatchCase });
2993
2993
  if (!findQuery) {
2994
2994
  setFindResults([]);
2995
2995
  setFindResultIndex(-1);
@@ -3023,7 +3023,7 @@ function useFindReplace({
3023
3023
  return;
3024
3024
  }
3025
3025
  onUpdateSlides(
3026
- (prevSlides) => chunkYDEEINER_js.applyFindReplacements(prevSlides, toReplace, replaceQuery).slides
3026
+ (prevSlides) => chunkFJDZ7AEE_js.applyFindReplacements(prevSlides, toReplace, replaceQuery).slides
3027
3027
  );
3028
3028
  onMarkDirty();
3029
3029
  },
@@ -3045,9 +3045,9 @@ function useFindReplace({
3045
3045
  }, [findResults, applyReplacements, performFind]);
3046
3046
  react.useEffect(() => {
3047
3047
  const handler = (event) => {
3048
- const { action } = chunkYDEEINER_js.mapEditorKey(event, {
3048
+ const { action } = chunkFJDZ7AEE_js.mapEditorKey(event, {
3049
3049
  canEdit: mode === "edit",
3050
- isTextInputTarget: chunkYDEEINER_js.isEditorTextInputTarget(event.target)
3050
+ isTextInputTarget: chunkFJDZ7AEE_js.isEditorTextInputTarget(event.target)
3051
3051
  });
3052
3052
  if (action !== "find") {
3053
3053
  return;
@@ -3126,7 +3126,7 @@ function addCommentToSlide(slides, slideIndex, text, authorName, elementId) {
3126
3126
  if (!slide) {
3127
3127
  return { slides, didAdd: false };
3128
3128
  }
3129
- const next = chunkYDEEINER_js.addCommentToList(
3129
+ const next = chunkFJDZ7AEE_js.addCommentToList(
3130
3130
  slide.comments || [],
3131
3131
  text,
3132
3132
  authorName,
@@ -3144,7 +3144,7 @@ function removeCommentFromSlide(slides, slideIndex, commentId) {
3144
3144
  if (!slide) {
3145
3145
  return { slides, didDelete: false };
3146
3146
  }
3147
- const next = chunkYDEEINER_js.removeCommentFromList(slide.comments || [], commentId);
3147
+ const next = chunkFJDZ7AEE_js.removeCommentFromList(slide.comments || [], commentId);
3148
3148
  if (!next) {
3149
3149
  return { slides, didDelete: false };
3150
3150
  }
@@ -3155,7 +3155,7 @@ function editCommentInSlide(slides, slideIndex, commentId, newText) {
3155
3155
  if (!slide) {
3156
3156
  return { slides, didUpdate: false };
3157
3157
  }
3158
- const next = chunkYDEEINER_js.editCommentInList(slide.comments || [], commentId, newText);
3158
+ const next = chunkFJDZ7AEE_js.editCommentInList(slide.comments || [], commentId, newText);
3159
3159
  if (!next) {
3160
3160
  return { slides, didUpdate: false };
3161
3161
  }
@@ -3166,7 +3166,7 @@ function toggleResolvedInSlide(slides, slideIndex, commentId) {
3166
3166
  if (!slide) {
3167
3167
  return { slides, didUpdate: false };
3168
3168
  }
3169
- const next = chunkYDEEINER_js.toggleCommentResolvedInList(slide.comments || [], commentId);
3169
+ const next = chunkFJDZ7AEE_js.toggleCommentResolvedInList(slide.comments || [], commentId);
3170
3170
  if (!next) {
3171
3171
  return { slides, didUpdate: false };
3172
3172
  }
@@ -3177,7 +3177,7 @@ function addReplyToSlide(slides, slideIndex, parentId, text, authorName) {
3177
3177
  if (!slide) {
3178
3178
  return { slides, didAdd: false };
3179
3179
  }
3180
- const next = chunkYDEEINER_js.replyToCommentInList(slide.comments || [], parentId, text, authorName);
3180
+ const next = chunkFJDZ7AEE_js.replyToCommentInList(slide.comments || [], parentId, text, authorName);
3181
3181
  if (!next) {
3182
3182
  return { slides, didAdd: false };
3183
3183
  }
@@ -3551,7 +3551,7 @@ function useViewerCoreState(_input) {
3551
3551
  const marqueeStateRef = react.useRef(null);
3552
3552
  const isDrawingRef = react.useRef(false);
3553
3553
  const justInteractedRef = react.useRef(false);
3554
- const livePatcher = react.useMemo(() => chunkYDEEINER_js.createCollaborationLivePatcher(), []);
3554
+ const livePatcher = react.useMemo(() => chunkFJDZ7AEE_js.createCollaborationLivePatcher(), []);
3555
3555
  react.useEffect(() => () => livePatcher.dispose(), [livePatcher]);
3556
3556
  const slidesRef = react.useRef([]);
3557
3557
  const [mode, setMode] = react.useState("edit");
@@ -3560,8 +3560,8 @@ function useViewerCoreState(_input) {
3560
3560
  const [slides, setSlides] = react.useState([]);
3561
3561
  const [templateElementsBySlideId, setTemplateElementsBySlideId] = react.useState({});
3562
3562
  const [canvasSize, setCanvasSize] = react.useState({
3563
- width: chunkT2QG2HD5_js.DEFAULT_CANVAS_WIDTH,
3564
- height: chunkT2QG2HD5_js.DEFAULT_CANVAS_HEIGHT
3563
+ width: chunkB6UIVRFA_js.DEFAULT_CANVAS_WIDTH,
3564
+ height: chunkB6UIVRFA_js.DEFAULT_CANVAS_HEIGHT
3565
3565
  });
3566
3566
  const [slideSizeEmu, setSlideSizeEmu] = react.useState();
3567
3567
  const [activeSlideIndex, setActiveSlideIndex] = react.useState(0);
@@ -3582,7 +3582,7 @@ function useViewerCoreState(_input) {
3582
3582
  const resolved = typeof value === "function" ? value(inlineEditingTextRef.current) : value;
3583
3583
  inlineEditingTextRef.current = resolved;
3584
3584
  setInlineEditingTextBase(value);
3585
- chunkYDEEINER_js.publishLiveInlineText(
3585
+ chunkFJDZ7AEE_js.publishLiveInlineText(
3586
3586
  livePatcher,
3587
3587
  slidesRef.current[activeSlideIndexRef.current],
3588
3588
  inlineEditingElementIdRef.current,
@@ -3926,7 +3926,7 @@ function useLoadContent({
3926
3926
  );
3927
3927
  }
3928
3928
  const previousHandler = handlerRef.current;
3929
- const handler = new chunkYDEEINER_js.PptxHandler();
3929
+ const handler = new chunkFJDZ7AEE_js.PptxHandler();
3930
3930
  const parsed = await handler.load(buffer, { allowExternalImages });
3931
3931
  if (cancelled || token !== renderTokenRef.current) {
3932
3932
  handler.dispose();
@@ -3938,7 +3938,7 @@ function useLoadContent({
3938
3938
  handlerRef.current = null;
3939
3939
  const mediaElements = [];
3940
3940
  for (const slide of parsed.slides) {
3941
- chunkYDEEINER_js.collectMediaElements(slide.elements, mediaElements);
3941
+ chunkFJDZ7AEE_js.collectMediaElements(slide.elements, mediaElements);
3942
3942
  }
3943
3943
  for (const url of mediaDataUrls.values()) {
3944
3944
  if (url.startsWith("blob:")) {
@@ -3979,7 +3979,7 @@ function useLoadContent({
3979
3979
  }
3980
3980
  })
3981
3981
  );
3982
- const { paths: imagePaths, refs: imageRefs } = chunkYDEEINER_js.collectImagePaths(parsed.slides);
3982
+ const { paths: imagePaths, refs: imageRefs } = chunkFJDZ7AEE_js.collectImagePaths(parsed.slides);
3983
3983
  let nextSlides = parsed.slides;
3984
3984
  if (imagePaths.size > 0) {
3985
3985
  const resolvedMap = /* @__PURE__ */ new Map();
@@ -4033,7 +4033,7 @@ function useLoadContent({
4033
4033
  });
4034
4034
  }
4035
4035
  }
4036
- const { paths: tableImagePaths, refs: tableImageRefs } = chunkYDEEINER_js.collectTableCellImagePaths(nextSlides);
4036
+ const { paths: tableImagePaths, refs: tableImageRefs } = chunkFJDZ7AEE_js.collectTableCellImagePaths(nextSlides);
4037
4037
  if (tableImagePaths.size > 0) {
4038
4038
  const resolvedTableMap = /* @__PURE__ */ new Map();
4039
4039
  await Promise.all(
@@ -4049,7 +4049,7 @@ function useLoadContent({
4049
4049
  );
4050
4050
  if (resolvedTableMap.size > 0) {
4051
4051
  nextSlides = nextSlides.map((s) => {
4052
- const newElements = chunkYDEEINER_js.applyTableCellImagePatches(
4052
+ const newElements = chunkFJDZ7AEE_js.applyTableCellImagePatches(
4053
4053
  s.elements,
4054
4054
  resolvedTableMap,
4055
4055
  tableImageRefs
@@ -4059,7 +4059,7 @@ function useLoadContent({
4059
4059
  }
4060
4060
  }
4061
4061
  let nextTableStyleMap = parsed.tableStyleMap;
4062
- const { paths: tableStyleImagePaths, refs: tableStyleImageRefs } = chunkYDEEINER_js.collectTableStyleImagePaths(nextTableStyleMap);
4062
+ const { paths: tableStyleImagePaths, refs: tableStyleImageRefs } = chunkFJDZ7AEE_js.collectTableStyleImagePaths(nextTableStyleMap);
4063
4063
  if (tableStyleImagePaths.size > 0) {
4064
4064
  const resolvedStyleMap = /* @__PURE__ */ new Map();
4065
4065
  await Promise.all(
@@ -4074,7 +4074,7 @@ function useLoadContent({
4074
4074
  })
4075
4075
  );
4076
4076
  if (resolvedStyleMap.size > 0 && nextTableStyleMap) {
4077
- nextTableStyleMap = chunkYDEEINER_js.applyTableStyleImagePatches(
4077
+ nextTableStyleMap = chunkFJDZ7AEE_js.applyTableStyleImagePatches(
4078
4078
  nextTableStyleMap,
4079
4079
  resolvedStyleMap,
4080
4080
  tableStyleImageRefs
@@ -4082,12 +4082,12 @@ function useLoadContent({
4082
4082
  }
4083
4083
  }
4084
4084
  handlerRef.current = handler;
4085
- const partition = chunkYDEEINER_js.partitionTemplateElements(nextSlides);
4085
+ const partition = chunkFJDZ7AEE_js.partitionTemplateElements(nextSlides);
4086
4086
  setSlides(partition.slides);
4087
4087
  setTemplateElementsBySlideId(partition.templateElementsBySlideId);
4088
4088
  setCanvasSize({
4089
- width: parsed.width ?? chunkT2QG2HD5_js.DEFAULT_CANVAS_WIDTH,
4090
- height: parsed.height ?? chunkT2QG2HD5_js.DEFAULT_CANVAS_HEIGHT
4089
+ width: parsed.width ?? chunkB6UIVRFA_js.DEFAULT_CANVAS_WIDTH,
4090
+ height: parsed.height ?? chunkB6UIVRFA_js.DEFAULT_CANVAS_HEIGHT
4091
4091
  });
4092
4092
  setSlideSizeEmu(
4093
4093
  typeof parsed.widthEmu === "number" && typeof parsed.heightEmu === "number" && parsed.widthEmu > 0 && parsed.heightEmu > 0 ? {
@@ -4104,7 +4104,7 @@ function useLoadContent({
4104
4104
  setThemeOptions(parsed.themeOptions ?? []);
4105
4105
  setCustomShows(parsed.customShows ?? []);
4106
4106
  setActiveCustomShowId(
4107
- chunkYDEEINER_js.resolveAuthoredCustomShowId(parsed.presentationProperties, parsed.customShows) ?? null
4107
+ chunkFJDZ7AEE_js.resolveAuthoredCustomShowId(parsed.presentationProperties, parsed.customShows) ?? null
4108
4108
  );
4109
4109
  setSections(parsed.sections ?? []);
4110
4110
  setPresentationProperties(parsed.presentationProperties ?? {});
@@ -4127,7 +4127,7 @@ function useLoadContent({
4127
4127
  setHasMacros(parsed.hasMacros === true);
4128
4128
  setHasDigitalSignatures(parsed.hasDigitalSignatures === true);
4129
4129
  setDigitalSignatureCount(parsed.digitalSignatureCount ?? 0);
4130
- setGuides(chunkYDEEINER_js.buildInitialGuides(parsed.presentationGuides, parsed.slides[0]?.guides));
4130
+ setGuides(chunkFJDZ7AEE_js.buildInitialGuides(parsed.presentationGuides, parsed.slides[0]?.guides));
4131
4131
  setActiveSlideIndex(0);
4132
4132
  clearSelection();
4133
4133
  setIsDirty(false);
@@ -4135,7 +4135,7 @@ function useLoadContent({
4135
4135
  onContentApplied?.();
4136
4136
  } catch (err) {
4137
4137
  if (!cancelled && token === renderTokenRef.current) {
4138
- if (err instanceof chunkYDEEINER_js.EncryptedFileError) {
4138
+ if (err instanceof chunkFJDZ7AEE_js.EncryptedFileError) {
4139
4139
  setIsEncrypted(true);
4140
4140
  } else {
4141
4141
  console.error("[pptx] Failed to load presentation content:", err);
@@ -4163,7 +4163,7 @@ function useLoadContent({
4163
4163
  }
4164
4164
  function useAutosave(input) {
4165
4165
  const { isDirty, filePath, serializeSlides, enabled = true, getChangeSources } = input;
4166
- const intervalMs = chunkYDEEINER_js.resolveAutosaveIntervalMs({
4166
+ const intervalMs = chunkFJDZ7AEE_js.resolveAutosaveIntervalMs({
4167
4167
  hostIntervalMs: input.intervalMs,
4168
4168
  optionsIntervalSeconds: input.intervalSeconds
4169
4169
  });
@@ -4194,7 +4194,7 @@ function useAutosave(input) {
4194
4194
  return;
4195
4195
  }
4196
4196
  const sources = changeSourcesRef.current?.() ?? [];
4197
- if (!chunkYDEEINER_js.shouldWriteAutosaveSnapshot({
4197
+ if (!chunkFJDZ7AEE_js.shouldWriteAutosaveSnapshot({
4198
4198
  filePath: path,
4199
4199
  isDirty: isDirtyRef.current,
4200
4200
  saving: isSavingRef.current,
@@ -4212,8 +4212,8 @@ function useAutosave(input) {
4212
4212
  isSavingRef.current = false;
4213
4213
  return;
4214
4214
  }
4215
- await chunkYDEEINER_js.saveAutosaveSnapshot(path, data);
4216
- lastSnapshotRef.current = chunkYDEEINER_js.autosaveSnapshotMark(path, sources);
4215
+ await chunkFJDZ7AEE_js.saveAutosaveSnapshot(path, data);
4216
+ lastSnapshotRef.current = chunkFJDZ7AEE_js.autosaveSnapshotMark(path, sources);
4217
4217
  setAutosaveStatus({ state: "saved", timestamp: Date.now() });
4218
4218
  } catch (err) {
4219
4219
  setAutosaveStatus({
@@ -4299,11 +4299,11 @@ function useElementOperations(input) {
4299
4299
  (elementId, updates) => {
4300
4300
  if (masterView?.target) {
4301
4301
  applyMasterViewWrite(
4302
- chunkYDEEINER_js.updateMasterViewElement(masterView, masterView.target, elementId, updates)
4302
+ chunkFJDZ7AEE_js.updateMasterViewElement(masterView, masterView.target, elementId, updates)
4303
4303
  );
4304
4304
  return;
4305
4305
  }
4306
- if (chunkYDEEINER_js.isTemplateElementId(elementId)) {
4306
+ if (chunkFJDZ7AEE_js.isTemplateElementId(elementId)) {
4307
4307
  const slideId = activeSlide?.id;
4308
4308
  if (slideId) {
4309
4309
  setTemplateElementsBySlideId((prev) => ({
@@ -4351,7 +4351,7 @@ function useElementOperations(input) {
4351
4351
  );
4352
4352
  const updateSelectedShapeStyle = react.useCallback(
4353
4353
  (updates) => {
4354
- if (!selectedElement || !chunkYDEEINER_js.hasShapeProperties(selectedElement)) {
4354
+ if (!selectedElement || !chunkFJDZ7AEE_js.hasShapeProperties(selectedElement)) {
4355
4355
  return;
4356
4356
  }
4357
4357
  updateSelectedElement({
@@ -4362,17 +4362,17 @@ function useElementOperations(input) {
4362
4362
  );
4363
4363
  const updateSelectedTextStyle = react.useCallback(
4364
4364
  (updates) => {
4365
- if (!selectedElement || !chunkYDEEINER_js.hasTextProperties(selectedElement)) {
4365
+ if (!selectedElement || !chunkFJDZ7AEE_js.hasTextProperties(selectedElement)) {
4366
4366
  return;
4367
4367
  }
4368
- const inlineSel = chunkYDEEINER_js.getInlineEditorSelection(selectedElement.textSegments);
4368
+ const inlineSel = chunkFJDZ7AEE_js.getInlineEditorSelection(selectedElement.textSegments);
4369
4369
  if (inlineSel && selectedElement.textSegments) {
4370
- const { newSegments: newSegments2, newSelection } = chunkYDEEINER_js.applyStyleToSelectedSegments(
4370
+ const { newSegments: newSegments2, newSelection } = chunkFJDZ7AEE_js.applyStyleToSelectedSegments(
4371
4371
  selectedElement.textSegments,
4372
4372
  inlineSel,
4373
4373
  updates
4374
4374
  );
4375
- chunkYDEEINER_js.setPendingSelectionRestore(newSelection);
4375
+ chunkFJDZ7AEE_js.setPendingSelectionRestore(newSelection);
4376
4376
  updateSelectedElement({
4377
4377
  textSegments: newSegments2
4378
4378
  });
@@ -4392,12 +4392,12 @@ function useElementOperations(input) {
4392
4392
  );
4393
4393
  const updateSelectedTextCase = react.useCallback(
4394
4394
  (mode) => {
4395
- if (!selectedElement || !chunkYDEEINER_js.hasTextProperties(selectedElement)) {
4395
+ if (!selectedElement || !chunkFJDZ7AEE_js.hasTextProperties(selectedElement)) {
4396
4396
  return;
4397
4397
  }
4398
- const inlineSel = chunkYDEEINER_js.getInlineEditorSelection(selectedElement.textSegments);
4398
+ const inlineSel = chunkFJDZ7AEE_js.getInlineEditorSelection(selectedElement.textSegments);
4399
4399
  if (inlineSel && selectedElement.textSegments) {
4400
- const newSegments = chunkYDEEINER_js.applyCaseTransformToSegments(
4400
+ const newSegments = chunkFJDZ7AEE_js.applyCaseTransformToSegments(
4401
4401
  selectedElement.textSegments,
4402
4402
  inlineSel,
4403
4403
  mode
@@ -4407,14 +4407,14 @@ function useElementOperations(input) {
4407
4407
  }
4408
4408
  const updates = {};
4409
4409
  if (selectedElement.textSegments && selectedElement.textSegments.length > 0) {
4410
- updates.textSegments = chunkYDEEINER_js.applyCaseTransformToSegments(
4410
+ updates.textSegments = chunkFJDZ7AEE_js.applyCaseTransformToSegments(
4411
4411
  selectedElement.textSegments,
4412
4412
  null,
4413
4413
  mode
4414
4414
  );
4415
4415
  }
4416
4416
  if (typeof selectedElement.text === "string") {
4417
- updates.text = chunkYDEEINER_js.transformTextCase(selectedElement.text, mode);
4417
+ updates.text = chunkFJDZ7AEE_js.transformTextCase(selectedElement.text, mode);
4418
4418
  }
4419
4419
  updateSelectedElement(updates);
4420
4420
  },
@@ -4427,15 +4427,15 @@ function useElementOperations(input) {
4427
4427
  [setSlides]
4428
4428
  );
4429
4429
  const masterViewTarget = masterView?.target ?? null;
4430
- const activeElements = masterViewTarget ? chunkYDEEINER_js.masterViewElements(masterView, masterViewTarget) : editTemplateMode ? templateElements : activeSlide?.elements ?? [];
4430
+ const activeElements = masterViewTarget ? chunkFJDZ7AEE_js.masterViewElements(masterView, masterViewTarget) : editTemplateMode ? templateElements : activeSlide?.elements ?? [];
4431
4431
  const updateActiveElements = react.useCallback(
4432
4432
  (updater) => {
4433
4433
  if (masterView?.target) {
4434
4434
  applyMasterViewWrite(
4435
- chunkYDEEINER_js.replaceMasterViewElements(
4435
+ chunkFJDZ7AEE_js.replaceMasterViewElements(
4436
4436
  masterView,
4437
4437
  masterView.target,
4438
- updater(chunkYDEEINER_js.masterViewElements(masterView, masterView.target))
4438
+ updater(chunkFJDZ7AEE_js.masterViewElements(masterView, masterView.target))
4439
4439
  )
4440
4440
  );
4441
4441
  return;
@@ -4488,7 +4488,7 @@ function useSectionOperations(input) {
4488
4488
  const { sections, setSections, slides, setSlides, markDirty } = input;
4489
4489
  const addSection2 = react.useCallback(
4490
4490
  (name, afterSlideIndex) => {
4491
- const result = chunkYDEEINER_js.addSection(sections, slides, name, afterSlideIndex);
4491
+ const result = chunkFJDZ7AEE_js.addSection(sections, slides, name, afterSlideIndex);
4492
4492
  setSlides(result.slides);
4493
4493
  setSections(result.sections);
4494
4494
  markDirty();
@@ -4497,7 +4497,7 @@ function useSectionOperations(input) {
4497
4497
  );
4498
4498
  const renameSection2 = react.useCallback(
4499
4499
  (sectionId, newName) => {
4500
- const result = chunkYDEEINER_js.renameSection(sections, slides, sectionId, newName);
4500
+ const result = chunkFJDZ7AEE_js.renameSection(sections, slides, sectionId, newName);
4501
4501
  setSections(result.sections);
4502
4502
  setSlides(result.slides);
4503
4503
  markDirty();
@@ -4506,7 +4506,7 @@ function useSectionOperations(input) {
4506
4506
  );
4507
4507
  const deleteSection2 = react.useCallback(
4508
4508
  (sectionId) => {
4509
- const result = chunkYDEEINER_js.deleteSection(sections, slides, sectionId);
4509
+ const result = chunkFJDZ7AEE_js.deleteSection(sections, slides, sectionId);
4510
4510
  setSections(result.sections);
4511
4511
  setSlides(result.slides);
4512
4512
  markDirty();
@@ -4515,21 +4515,21 @@ function useSectionOperations(input) {
4515
4515
  );
4516
4516
  const moveSectionUp2 = react.useCallback(
4517
4517
  (sectionId) => {
4518
- setSections(chunkYDEEINER_js.moveSectionUp(sections, sectionId));
4518
+ setSections(chunkFJDZ7AEE_js.moveSectionUp(sections, sectionId));
4519
4519
  markDirty();
4520
4520
  },
4521
4521
  [sections, setSections, markDirty]
4522
4522
  );
4523
4523
  const moveSectionDown2 = react.useCallback(
4524
4524
  (sectionId) => {
4525
- setSections(chunkYDEEINER_js.moveSectionDown(sections, sectionId));
4525
+ setSections(chunkFJDZ7AEE_js.moveSectionDown(sections, sectionId));
4526
4526
  markDirty();
4527
4527
  },
4528
4528
  [sections, setSections, markDirty]
4529
4529
  );
4530
4530
  const moveSlidesToSection2 = react.useCallback(
4531
4531
  (slideIndexes, targetSectionId) => {
4532
- const result = chunkYDEEINER_js.moveSlidesToSection(sections, slides, slideIndexes, targetSectionId);
4532
+ const result = chunkFJDZ7AEE_js.moveSlidesToSection(sections, slides, slideIndexes, targetSectionId);
4533
4533
  setSlides(result.slides);
4534
4534
  setSections(result.sections);
4535
4535
  markDirty();
@@ -4558,19 +4558,19 @@ function useSectionOperations(input) {
4558
4558
 
4559
4559
  // src/viewer/hooks/pointer-move-handlers.ts
4560
4560
  function computeResizeGeometry(handle, startX, startY, startWidth, startHeight, dx, dy, snapToGrid, gridSpacingPx) {
4561
- const resized = chunkYDEEINER_js.applyResize(
4561
+ const resized = chunkFJDZ7AEE_js.applyResize(
4562
4562
  { x: startX, y: startY, width: startWidth, height: startHeight },
4563
4563
  handle,
4564
4564
  dx,
4565
4565
  dy,
4566
4566
  1,
4567
- { minSize: chunkT2QG2HD5_js.MIN_ELEMENT_SIZE }
4567
+ { minSize: chunkB6UIVRFA_js.MIN_ELEMENT_SIZE }
4568
4568
  );
4569
4569
  const box = { x: resized.x, y: resized.y, width: resized.width, height: resized.height };
4570
4570
  if (!snapToGrid) {
4571
4571
  return box;
4572
4572
  }
4573
- return chunkYDEEINER_js.snapBoxToGrid(box, handle, gridSpacingPx, chunkT2QG2HD5_js.MIN_ELEMENT_SIZE);
4573
+ return chunkFJDZ7AEE_js.snapBoxToGrid(box, handle, gridSpacingPx, chunkB6UIVRFA_js.MIN_ELEMENT_SIZE);
4574
4574
  }
4575
4575
  function resolveLiveTarget(input) {
4576
4576
  const { livePatcher, editTemplateMode, activeSlide } = input;
@@ -4683,7 +4683,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
4683
4683
  width: el.width,
4684
4684
  height: el.height
4685
4685
  }));
4686
- const snapResult = chunkYDEEINER_js.computeSnapToShape(
4686
+ const snapResult = chunkFJDZ7AEE_js.computeSnapToShape(
4687
4687
  targetX,
4688
4688
  targetY,
4689
4689
  primaryEl.width,
@@ -4722,7 +4722,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
4722
4722
  if (live) {
4723
4723
  for (const id of Object.keys(drag.startPositionsById)) {
4724
4724
  const start = drag.startPositionsById[id];
4725
- chunkYDEEINER_js.publishLiveGeometry(live.patcher, live.slideId, id, {
4725
+ chunkFJDZ7AEE_js.publishLiveGeometry(live.patcher, live.slideId, id, {
4726
4726
  x: start.x + appliedDx,
4727
4727
  y: start.y + appliedDy
4728
4728
  });
@@ -4756,22 +4756,22 @@ function processResizeMove(e, rs, editorScale, snapToGrid, gridSpacingPx, live)
4756
4756
  if (rs.domEl) {
4757
4757
  rs.domEl.style.left = `${geo.x}px`;
4758
4758
  rs.domEl.style.top = `${geo.y}px`;
4759
- rs.domEl.style.width = `${Math.max(geo.width, chunkT2QG2HD5_js.MIN_ELEMENT_SIZE)}px`;
4760
- rs.domEl.style.height = `${Math.max(geo.height, chunkT2QG2HD5_js.MIN_ELEMENT_SIZE)}px`;
4759
+ rs.domEl.style.width = `${Math.max(geo.width, chunkB6UIVRFA_js.MIN_ELEMENT_SIZE)}px`;
4760
+ rs.domEl.style.height = `${Math.max(geo.height, chunkB6UIVRFA_js.MIN_ELEMENT_SIZE)}px`;
4761
4761
  }
4762
4762
  if (live) {
4763
- chunkYDEEINER_js.publishLiveGeometry(live.patcher, live.slideId, rs.elementId, {
4763
+ chunkFJDZ7AEE_js.publishLiveGeometry(live.patcher, live.slideId, rs.elementId, {
4764
4764
  x: geo.x,
4765
4765
  y: geo.y,
4766
- width: Math.max(geo.width, chunkT2QG2HD5_js.MIN_ELEMENT_SIZE),
4767
- height: Math.max(geo.height, chunkT2QG2HD5_js.MIN_ELEMENT_SIZE)
4766
+ width: Math.max(geo.width, chunkB6UIVRFA_js.MIN_ELEMENT_SIZE),
4767
+ height: Math.max(geo.height, chunkB6UIVRFA_js.MIN_ELEMENT_SIZE)
4768
4768
  });
4769
4769
  }
4770
4770
  }
4771
4771
  function processAdjustmentMove(e, adj, editorScale, updateElementById) {
4772
4772
  const dx = (e.clientX - adj.startClientX) / editorScale;
4773
4773
  const dy = (e.clientY - adj.startClientY) / editorScale;
4774
- const adjustments = chunkYDEEINER_js.getDraggedShapeAdjustments(adj, dx, dy);
4774
+ const adjustments = chunkFJDZ7AEE_js.getDraggedShapeAdjustments(adj, dx, dy);
4775
4775
  if (!adj.moved && Math.hypot(dx, dy) > 2) {
4776
4776
  adj.moved = true;
4777
4777
  }
@@ -4846,13 +4846,13 @@ function processPointerUp(input) {
4846
4846
  if (i !== activeSlideIndex) {
4847
4847
  return s;
4848
4848
  }
4849
- const rerouted = chunkYDEEINER_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
4849
+ const rerouted = chunkFJDZ7AEE_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
4850
4850
  if (rerouted.length === 0) {
4851
4851
  return s;
4852
4852
  }
4853
4853
  return {
4854
4854
  ...s,
4855
- elements: chunkYDEEINER_js.applyReroutedConnectors(s.elements, rerouted)
4855
+ elements: chunkFJDZ7AEE_js.applyReroutedConnectors(s.elements, rerouted)
4856
4856
  };
4857
4857
  })
4858
4858
  );
@@ -4877,9 +4877,9 @@ function processPointerUp(input) {
4877
4877
  }
4878
4878
  function commitMarquee(marquee, editTemplateMode, templateElements, activeSlide, applySelection, clearSelection) {
4879
4879
  const sourceElements = editTemplateMode ? templateElements : activeSlide?.elements ?? [];
4880
- const hitIds = chunkYDEEINER_js.computeMarqueeHitIds(marquee, sourceElements);
4880
+ const hitIds = chunkFJDZ7AEE_js.computeMarqueeHitIds(marquee, sourceElements);
4881
4881
  if (marquee.additive) {
4882
- const merged = chunkYDEEINER_js.mergeAdditiveSelection(marquee.baseSelectionIds, hitIds);
4882
+ const merged = chunkFJDZ7AEE_js.mergeAdditiveSelection(marquee.baseSelectionIds, hitIds);
4883
4883
  if (merged.length > 0) {
4884
4884
  applySelection(merged[0], merged);
4885
4885
  } else {
@@ -4902,8 +4902,8 @@ function commitDrag(drag, editTemplateMode, activeSlide, activeSlideIndex, setTe
4902
4902
  }
4903
4903
  return { ...el, x: start.x + dx, y: start.y + dy };
4904
4904
  });
4905
- const rerouted = chunkYDEEINER_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
4906
- return chunkYDEEINER_js.applyReroutedConnectors(movedElements, rerouted);
4905
+ const rerouted = chunkFJDZ7AEE_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
4906
+ return chunkFJDZ7AEE_js.applyReroutedConnectors(movedElements, rerouted);
4907
4907
  };
4908
4908
  if (editTemplateMode) {
4909
4909
  const slideId = activeSlide?.id;
@@ -5059,11 +5059,11 @@ function useCanvasInteractions(input) {
5059
5059
  return;
5060
5060
  }
5061
5061
  const el = elementLookup.get(editId);
5062
- if (el && chunkYDEEINER_js.hasTextProperties(el)) {
5062
+ if (el && chunkFJDZ7AEE_js.hasTextProperties(el)) {
5063
5063
  const committedText = transformCommittedText ? transformCommittedText(inlineEditingText) : inlineEditingText;
5064
- const newSegments = chunkYDEEINER_js.remapTextToSegments(committedText, el.textSegments, el.textStyle);
5064
+ const newSegments = chunkFJDZ7AEE_js.remapTextToSegments(committedText, el.textSegments, el.textStyle);
5065
5065
  const editorEl = document.querySelector("[data-inline-editor]");
5066
- const newHeight = chunkYDEEINER_js.resolveInlineEditAutoFitHeight(el.textStyle, el.height, editorEl);
5066
+ const newHeight = chunkFJDZ7AEE_js.resolveInlineEditAutoFitHeight(el.textStyle, el.height, editorEl);
5067
5067
  ops.updateElementById(editId, {
5068
5068
  text: committedText,
5069
5069
  textSegments: newSegments,
@@ -5075,7 +5075,7 @@ function useCanvasInteractions(input) {
5075
5075
  setInlineEditingText("");
5076
5076
  };
5077
5077
  const openEquationEditorForElement = (el) => {
5078
- if (!chunkYDEEINER_js.hasTextProperties(el)) {
5078
+ if (!chunkFJDZ7AEE_js.hasTextProperties(el)) {
5079
5079
  return false;
5080
5080
  }
5081
5081
  const eqSeg = el.textSegments?.find((seg) => seg.equationXml);
@@ -5105,7 +5105,7 @@ function useCanvasInteractions(input) {
5105
5105
  justInteractedRef.current = false;
5106
5106
  } else {
5107
5107
  const el = elementLookup.get(elementId);
5108
- if (el && chunkYDEEINER_js.hasTextProperties(el) && chunkYDEEINER_js.canInteractWithElement(el, "textEdit")) {
5108
+ if (el && chunkFJDZ7AEE_js.hasTextProperties(el) && chunkFJDZ7AEE_js.canInteractWithElement(el, "textEdit")) {
5109
5109
  if (!openEquationEditorForElement(el)) {
5110
5110
  setInlineEditingElementId(elementId);
5111
5111
  setInlineEditingText(el.text ?? "");
@@ -5124,7 +5124,7 @@ function useCanvasInteractions(input) {
5124
5124
  if (openEquationEditorForElement(el)) {
5125
5125
  return;
5126
5126
  }
5127
- if (chunkYDEEINER_js.hasTextProperties(el) && chunkYDEEINER_js.canInteractWithElement(el, "textEdit")) {
5127
+ if (chunkFJDZ7AEE_js.hasTextProperties(el) && chunkFJDZ7AEE_js.canInteractWithElement(el, "textEdit")) {
5128
5128
  setInlineEditingElementId(elementId);
5129
5129
  setInlineEditingText(el.text ?? "");
5130
5130
  }
@@ -5147,7 +5147,7 @@ function useCanvasInteractions(input) {
5147
5147
  justSelectedRef.current = false;
5148
5148
  }
5149
5149
  const ids = !wasSelected ? [elementId] : effectiveSelectedIds.length ? effectiveSelectedIds : [elementId];
5150
- const movableIds = chunkYDEEINER_js.filterInteractableIds(ids, (id) => elementLookup.get(id), "move");
5150
+ const movableIds = chunkFJDZ7AEE_js.filterInteractableIds(ids, (id) => elementLookup.get(id), "move");
5151
5151
  if (movableIds.length === 0) {
5152
5152
  return;
5153
5153
  }
@@ -5217,7 +5217,7 @@ function useCanvasInteractions(input) {
5217
5217
  const handleResizePointerDown = (elementId, e, handle) => {
5218
5218
  e.stopPropagation();
5219
5219
  const el = elementLookup.get(elementId);
5220
- if (!el || !chunkYDEEINER_js.canInteractWithElement(el, "resize")) {
5220
+ if (!el || !chunkFJDZ7AEE_js.canInteractWithElement(el, "resize")) {
5221
5221
  return;
5222
5222
  }
5223
5223
  resizeStateRef.current = {
@@ -5239,7 +5239,7 @@ function useCanvasInteractions(input) {
5239
5239
  };
5240
5240
  const handleRotate = (elementId, rotationDeg) => {
5241
5241
  const el = elementLookup.get(elementId);
5242
- if (!el || !chunkYDEEINER_js.canInteractWithElement(el, "rotate")) {
5242
+ if (!el || !chunkFJDZ7AEE_js.canInteractWithElement(el, "rotate")) {
5243
5243
  return;
5244
5244
  }
5245
5245
  ops.updateElementById(elementId, { rotation: rotationDeg });
@@ -5259,10 +5259,10 @@ function useCanvasInteractions(input) {
5259
5259
  const handleAdjustmentPointerDown = (elementId, e, descriptor) => {
5260
5260
  e.stopPropagation();
5261
5261
  const el = elementLookup.get(elementId);
5262
- if (!el || !chunkYDEEINER_js.canInteractWithElement(el, "adjustHandle")) {
5262
+ if (!el || !chunkFJDZ7AEE_js.canInteractWithElement(el, "adjustHandle")) {
5263
5263
  return;
5264
5264
  }
5265
- shapeAdjustmentDragStateRef.current = chunkYDEEINER_js.beginShapeAdjustment(
5265
+ shapeAdjustmentDragStateRef.current = chunkFJDZ7AEE_js.beginShapeAdjustment(
5266
5266
  el,
5267
5267
  descriptor,
5268
5268
  e.clientX,
@@ -5309,7 +5309,7 @@ function createFileHandlers(deps) {
5309
5309
  h = Math.round(h * scale);
5310
5310
  }
5311
5311
  addElement({
5312
- id: chunkYDEEINER_js.generateElementId(),
5312
+ id: chunkFJDZ7AEE_js.generateElementId(),
5313
5313
  type: "image",
5314
5314
  x: Math.round((canvasSize.width - w) / 2),
5315
5315
  y: Math.round((canvasSize.height - h) / 2),
@@ -5320,7 +5320,7 @@ function createFileHandlers(deps) {
5320
5320
  };
5321
5321
  img.onerror = () => {
5322
5322
  addElement({
5323
- id: chunkYDEEINER_js.generateElementId(),
5323
+ id: chunkFJDZ7AEE_js.generateElementId(),
5324
5324
  type: "image",
5325
5325
  x: 100,
5326
5326
  y: 100,
@@ -5339,14 +5339,14 @@ function createFileHandlers(deps) {
5339
5339
  return;
5340
5340
  }
5341
5341
  e.target.value = "";
5342
- const mediaType = chunkYDEEINER_js.classifyMediaType(file.type);
5342
+ const mediaType = chunkFJDZ7AEE_js.classifyMediaType(file.type);
5343
5343
  if (!mediaType) {
5344
5344
  return;
5345
5345
  }
5346
5346
  const elFilePath = file.path;
5347
5347
  const insertMediaElement = (mediaSourceUrl, width, height) => {
5348
5348
  addElement({
5349
- id: chunkYDEEINER_js.generateElementId(),
5349
+ id: chunkFJDZ7AEE_js.generateElementId(),
5350
5350
  type: "media",
5351
5351
  mediaType,
5352
5352
  mediaMimeType: file.type || void 0,
@@ -5521,13 +5521,13 @@ function createStructuredElementHandlers(deps) {
5521
5521
  return;
5522
5522
  }
5523
5523
  addElement({
5524
- id: chunkYDEEINER_js.generateElementId(),
5524
+ id: chunkFJDZ7AEE_js.generateElementId(),
5525
5525
  type: "smartArt",
5526
5526
  x: 100,
5527
5527
  y: 120,
5528
5528
  width: 600,
5529
5529
  height: 340,
5530
- smartArtData: chunkYDEEINER_js.buildSmartArtPresetData(
5530
+ smartArtData: chunkFJDZ7AEE_js.buildSmartArtPresetData(
5531
5531
  layout,
5532
5532
  defaultItems,
5533
5533
  (i) => `node-${Date.now()}-${i}-${Math.random().toString(36).slice(2, 8)}`
@@ -5539,7 +5539,7 @@ function createStructuredElementHandlers(deps) {
5539
5539
  return;
5540
5540
  }
5541
5541
  addElement({
5542
- id: chunkYDEEINER_js.generateElementId(),
5542
+ id: chunkFJDZ7AEE_js.generateElementId(),
5543
5543
  type: "shape",
5544
5544
  x: 120,
5545
5545
  y: 200,
@@ -5577,7 +5577,7 @@ function createStructuredElementHandlers(deps) {
5577
5577
  return;
5578
5578
  }
5579
5579
  const resolved = resolveHyperlinkEditResult(data);
5580
- if (resolved.url && !chunkYDEEINER_js.isUrlSafe(resolved.url)) {
5580
+ if (resolved.url && !chunkFJDZ7AEE_js.isUrlSafe(resolved.url)) {
5581
5581
  return;
5582
5582
  }
5583
5583
  const actionClick = {
@@ -5601,7 +5601,7 @@ function createStructuredElementHandlers(deps) {
5601
5601
  const displayText = value || fieldTexts[fieldType] || fieldType;
5602
5602
  const fieldGuid = `{${crypto.randomUUID().toUpperCase()}}`;
5603
5603
  addElement({
5604
- id: chunkYDEEINER_js.generateElementId(),
5604
+ id: chunkFJDZ7AEE_js.generateElementId(),
5605
5605
  type: "shape",
5606
5606
  x: 120,
5607
5607
  y: 200,
@@ -5623,11 +5623,11 @@ function createStructuredElementHandlers(deps) {
5623
5623
  if (!activeSlide) {
5624
5624
  return;
5625
5625
  }
5626
- const preset = chunkYDEEINER_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
5626
+ const preset = chunkFJDZ7AEE_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
5627
5627
  if (!preset) {
5628
5628
  return;
5629
5629
  }
5630
- const defaultPptxAction = chunkYDEEINER_js.elementActionToPptxAction({
5630
+ const defaultPptxAction = chunkFJDZ7AEE_js.elementActionToPptxAction({
5631
5631
  trigger: "click",
5632
5632
  type: preset.defaultAction
5633
5633
  });
@@ -5636,7 +5636,7 @@ function createStructuredElementHandlers(deps) {
5636
5636
  defaultPptxAction.highlightClick = true;
5637
5637
  }
5638
5638
  addElement({
5639
- id: chunkYDEEINER_js.generateElementId(),
5639
+ id: chunkFJDZ7AEE_js.generateElementId(),
5640
5640
  type: "shape",
5641
5641
  x: 150,
5642
5642
  y: 150,
@@ -5703,14 +5703,14 @@ function useInsertElements(input) {
5703
5703
  return;
5704
5704
  }
5705
5705
  addElement({
5706
- id: chunkYDEEINER_js.generateElementId(),
5706
+ id: chunkFJDZ7AEE_js.generateElementId(),
5707
5707
  type: "text",
5708
5708
  x: 100,
5709
5709
  y: 100,
5710
5710
  width: 300,
5711
5711
  height: 60,
5712
5712
  text: "",
5713
- textStyle: { fontSize: chunkT2QG2HD5_js.DEFAULT_TEXT_FONT_SIZE }
5713
+ textStyle: { fontSize: chunkB6UIVRFA_js.DEFAULT_TEXT_FONT_SIZE }
5714
5714
  });
5715
5715
  };
5716
5716
  const handleAddShape = () => {
@@ -5718,7 +5718,7 @@ function useInsertElements(input) {
5718
5718
  return;
5719
5719
  }
5720
5720
  addElement({
5721
- id: chunkYDEEINER_js.generateElementId(),
5721
+ id: chunkFJDZ7AEE_js.generateElementId(),
5722
5722
  type: "shape",
5723
5723
  x: 150,
5724
5724
  y: 150,
@@ -5737,15 +5737,15 @@ function useInsertElements(input) {
5737
5737
  return;
5738
5738
  }
5739
5739
  addElement({
5740
- ...chunkYDEEINER_js.newTableElement(chunkT2QG2HD5_js.DEFAULT_TABLE_ROWS, chunkT2QG2HD5_js.DEFAULT_TABLE_COLUMNS, 100, 200),
5741
- id: chunkYDEEINER_js.generateElementId()
5740
+ ...chunkFJDZ7AEE_js.newTableElement(chunkB6UIVRFA_js.DEFAULT_TABLE_ROWS, chunkB6UIVRFA_js.DEFAULT_TABLE_COLUMNS, 100, 200),
5741
+ id: chunkFJDZ7AEE_js.generateElementId()
5742
5742
  });
5743
5743
  };
5744
5744
  const handleAddChart = (chartKind) => {
5745
5745
  if (!activeSlide) {
5746
5746
  return;
5747
5747
  }
5748
- addElement(chunkYDEEINER_js.createDefaultChartElement(chartKind));
5748
+ addElement(chunkFJDZ7AEE_js.createDefaultChartElement(chartKind));
5749
5749
  };
5750
5750
  const structured = createStructuredElementHandlers({
5751
5751
  activeSlide,
@@ -5815,7 +5815,7 @@ function useClipboardHandlers(input) {
5815
5815
  if (!selectedElement) {
5816
5816
  return;
5817
5817
  }
5818
- setClipboardPayload(chunkYDEEINER_js.buildElementClipboardPayload(selectedElement, editTemplateMode));
5818
+ setClipboardPayload(chunkFJDZ7AEE_js.buildElementClipboardPayload(selectedElement, editTemplateMode));
5819
5819
  };
5820
5820
  const handleDelete = () => {
5821
5821
  const idsToDelete = effectiveSelectedIds;
@@ -5832,7 +5832,7 @@ function useClipboardHandlers(input) {
5832
5832
  handleDelete();
5833
5833
  };
5834
5834
  const insertClone = (source) => {
5835
- const clone = chunkYDEEINER_js.cloneElementForPaste(source, { intoTemplate: editTemplateMode });
5835
+ const clone = chunkFJDZ7AEE_js.cloneElementForPaste(source, { intoTemplate: editTemplateMode });
5836
5836
  ops.updateActiveElements((els) => [...els, clone]);
5837
5837
  ops.applySelection(clone.id);
5838
5838
  history.markDirty();
@@ -5867,7 +5867,7 @@ function resolveShapePath(el) {
5867
5867
  return el.pathData;
5868
5868
  }
5869
5869
  if ("shapeType" in el && typeof el.shapeType === "string") {
5870
- const clipPath = chunkYDEEINER_js.getPresetShapeClipPath(el.shapeType);
5870
+ const clipPath = chunkFJDZ7AEE_js.getPresetShapeClipPath(el.shapeType);
5871
5871
  if (clipPath) {
5872
5872
  const svgPath = clipPathToSvgPath(clipPath, el.width, el.height);
5873
5873
  if (svgPath) {
@@ -5918,7 +5918,7 @@ function clipPathToSvgPath(clipPath, width, height) {
5918
5918
  return parts.join(" ");
5919
5919
  }
5920
5920
  function transformPathToGlobal(pathData, el) {
5921
- const polys = chunkYDEEINER_js.svgPathToPolygons(pathData);
5921
+ const polys = chunkFJDZ7AEE_js.svgPathToPolygons(pathData);
5922
5922
  if (polys.length === 0) {
5923
5923
  return pathData;
5924
5924
  }
@@ -5938,10 +5938,10 @@ function transformPathToGlobal(pathData, el) {
5938
5938
  y: pt.y * scaleY + el.y
5939
5939
  }))
5940
5940
  );
5941
- return chunkYDEEINER_js.polygonsToSvgPath(transformed);
5941
+ return chunkFJDZ7AEE_js.polygonsToSvgPath(transformed);
5942
5942
  }
5943
5943
  function transformPathToLocal(pathData, x, y, _width, _height) {
5944
- const polys = chunkYDEEINER_js.svgPathToPolygons(pathData);
5944
+ const polys = chunkFJDZ7AEE_js.svgPathToPolygons(pathData);
5945
5945
  if (polys.length === 0) {
5946
5946
  return pathData;
5947
5947
  }
@@ -5951,10 +5951,10 @@ function transformPathToLocal(pathData, x, y, _width, _height) {
5951
5951
  y: pt.y - y
5952
5952
  }))
5953
5953
  );
5954
- return chunkYDEEINER_js.polygonsToSvgPath(transformed);
5954
+ return chunkFJDZ7AEE_js.polygonsToSvgPath(transformed);
5955
5955
  }
5956
5956
  function pathBounds(pathData) {
5957
- const polys = chunkYDEEINER_js.svgPathToPolygons(pathData);
5957
+ const polys = chunkFJDZ7AEE_js.svgPathToPolygons(pathData);
5958
5958
  let minX = Infinity;
5959
5959
  let minY = Infinity;
5960
5960
  let maxX = -Infinity;
@@ -6013,7 +6013,7 @@ function useMergeShapesHandler(input) {
6013
6013
  let allFragments = [];
6014
6014
  let remaining = globalPaths[0];
6015
6015
  for (let i = 1; i < globalPaths.length; i++) {
6016
- const frags = chunkYDEEINER_js.mergeShapes("fragment", remaining, globalPaths[i]);
6016
+ const frags = chunkFJDZ7AEE_js.mergeShapes("fragment", remaining, globalPaths[i]);
6017
6017
  if (Array.isArray(frags)) {
6018
6018
  allFragments = frags;
6019
6019
  }
@@ -6042,7 +6042,7 @@ function useMergeShapesHandler(input) {
6042
6042
  bounds.height
6043
6043
  );
6044
6044
  const newEl = {
6045
- id: chunkYDEEINER_js.generateElementId(),
6045
+ id: chunkFJDZ7AEE_js.generateElementId(),
6046
6046
  type: "shape",
6047
6047
  x: bounds.x,
6048
6048
  y: bounds.y,
@@ -6080,7 +6080,7 @@ function useMergeShapesHandler(input) {
6080
6080
  } else {
6081
6081
  let resultPath = globalPaths[0];
6082
6082
  for (let i = 1; i < globalPaths.length; i++) {
6083
- const result = chunkYDEEINER_js.mergeShapes(operation, resultPath, globalPaths[i]);
6083
+ const result = chunkFJDZ7AEE_js.mergeShapes(operation, resultPath, globalPaths[i]);
6084
6084
  if (typeof result === "string") {
6085
6085
  resultPath = result;
6086
6086
  }
@@ -6101,7 +6101,7 @@ function useMergeShapesHandler(input) {
6101
6101
  );
6102
6102
  const primary = targets[0];
6103
6103
  const newEl = {
6104
- id: chunkYDEEINER_js.generateElementId(),
6104
+ id: chunkFJDZ7AEE_js.generateElementId(),
6105
6105
  type: "shape",
6106
6106
  x: bounds.x,
6107
6107
  y: bounds.y,
@@ -6164,7 +6164,7 @@ function useGroupAlignLayerHandlers(input) {
6164
6164
  if (ids.length < 2 || !activeSlide) {
6165
6165
  return;
6166
6166
  }
6167
- const { elements, groupId } = chunkYDEEINER_js.groupElements(ops.activeElements, ids, chunkYDEEINER_js.generateElementId());
6167
+ const { elements, groupId } = chunkFJDZ7AEE_js.groupElements(ops.activeElements, ids, chunkFJDZ7AEE_js.generateElementId());
6168
6168
  if (groupId === null) {
6169
6169
  return;
6170
6170
  }
@@ -6177,11 +6177,11 @@ function useGroupAlignLayerHandlers(input) {
6177
6177
  return;
6178
6178
  }
6179
6179
  const group = selectedElement;
6180
- const intoTemplate = chunkYDEEINER_js.isTemplateElementId(group.id);
6180
+ const intoTemplate = chunkFJDZ7AEE_js.isTemplateElementId(group.id);
6181
6181
  const childIds = group.children.map(
6182
- (child) => intoTemplate ? chunkYDEEINER_js.makeCloneId(true, child.id || group.id) : child.id || chunkYDEEINER_js.generateElementId()
6182
+ (child) => intoTemplate ? chunkFJDZ7AEE_js.makeCloneId(true, child.id || group.id) : child.id || chunkFJDZ7AEE_js.generateElementId()
6183
6183
  );
6184
- const { elements, childIds: usedIds } = chunkYDEEINER_js.ungroupElements(
6184
+ const { elements, childIds: usedIds } = chunkFJDZ7AEE_js.ungroupElements(
6185
6185
  ops.activeElements,
6186
6186
  group.id,
6187
6187
  childIds,
@@ -6210,7 +6210,7 @@ function useGroupAlignLayerHandlers(input) {
6210
6210
  if (!edge) {
6211
6211
  return;
6212
6212
  }
6213
- const positions = chunkYDEEINER_js.alignElements(selectedElements, edge);
6213
+ const positions = chunkFJDZ7AEE_js.alignElements(selectedElements, edge);
6214
6214
  for (const [id, pos] of positions) {
6215
6215
  const el = elementLookup.get(id);
6216
6216
  if (!el) {
@@ -6228,7 +6228,7 @@ function useGroupAlignLayerHandlers(input) {
6228
6228
  if (!distAxis) {
6229
6229
  return;
6230
6230
  }
6231
- const positions = chunkYDEEINER_js.distributeElements(selectedElements, distAxis);
6231
+ const positions = chunkFJDZ7AEE_js.distributeElements(selectedElements, distAxis);
6232
6232
  for (const [id, pos] of positions) {
6233
6233
  const el = elementLookup.get(id);
6234
6234
  if (!el) {
@@ -6245,7 +6245,7 @@ function useGroupAlignLayerHandlers(input) {
6245
6245
  }
6246
6246
  const id = selectedElement.id;
6247
6247
  ops.updateActiveElements(
6248
- (els) => direction === "forward" ? chunkYDEEINER_js.bringForward(els, id) : direction === "backward" ? chunkYDEEINER_js.sendBackward(els, id) : els
6248
+ (els) => direction === "forward" ? chunkFJDZ7AEE_js.bringForward(els, id) : direction === "backward" ? chunkFJDZ7AEE_js.sendBackward(els, id) : els
6249
6249
  );
6250
6250
  history.markDirty();
6251
6251
  };
@@ -6255,7 +6255,7 @@ function useGroupAlignLayerHandlers(input) {
6255
6255
  }
6256
6256
  const id = selectedElement.id;
6257
6257
  ops.updateActiveElements(
6258
- (els) => direction === "front" ? chunkYDEEINER_js.bringToFront(els, id) : chunkYDEEINER_js.sendToBack(els, id)
6258
+ (els) => direction === "front" ? chunkFJDZ7AEE_js.bringToFront(els, id) : chunkFJDZ7AEE_js.sendToBack(els, id)
6259
6259
  );
6260
6260
  history.markDirty();
6261
6261
  };
@@ -6386,7 +6386,7 @@ function useSlideManagement(input) {
6386
6386
  theme
6387
6387
  } = input;
6388
6388
  const handleAddSlide = () => {
6389
- const newSlide = chunkYDEEINER_js.createBlankSlide(slides.length + 1);
6389
+ const newSlide = chunkFJDZ7AEE_js.createBlankSlide(slides.length + 1);
6390
6390
  ops.updateSlides((prev) => {
6391
6391
  const next = [...prev];
6392
6392
  next.splice(activeSlideIndex + 1, 0, newSlide);
@@ -6449,7 +6449,7 @@ function useSlideManagement(input) {
6449
6449
  }
6450
6450
  const clone = {
6451
6451
  ...src,
6452
- id: chunkYDEEINER_js.makeSlideId(),
6452
+ id: chunkFJDZ7AEE_js.makeSlideId(),
6453
6453
  elements: src.elements.map((el) => ({
6454
6454
  ...el,
6455
6455
  id: `${el.id}-dup-${Math.random().toString(36).slice(2, 6)}`
@@ -6481,7 +6481,7 @@ function useSlideManagement(input) {
6481
6481
  const handleInsertSlideFromLayout = (layoutPath, layoutName) => {
6482
6482
  const insertAt = activeSlideIndex + 1;
6483
6483
  const draft = {
6484
- ...chunkYDEEINER_js.createBlankSlide(slides.length + 1),
6484
+ ...chunkFJDZ7AEE_js.createBlankSlide(slides.length + 1),
6485
6485
  layoutPath,
6486
6486
  ...layoutName ? { layoutName } : {}
6487
6487
  };
@@ -6514,9 +6514,9 @@ function useSlideManagement(input) {
6514
6514
  };
6515
6515
  const handleInsertSlideFromTemplate = (templateId) => {
6516
6516
  const insertAt = activeSlideIndex + 1;
6517
- const draft = chunkYDEEINER_js.buildSlideTemplateSlide(templateId, chunkYDEEINER_js.makeSlideId(), slides.length + 1, {
6517
+ const draft = chunkFJDZ7AEE_js.buildSlideTemplateSlide(templateId, chunkFJDZ7AEE_js.makeSlideId(), slides.length + 1, {
6518
6518
  ...canvasSize ? { slideWidth: canvasSize.width, slideHeight: canvasSize.height } : {},
6519
- scheme: chunkYDEEINER_js.templateSchemeFromTheme(theme?.colorScheme)
6519
+ scheme: chunkFJDZ7AEE_js.templateSchemeFromTheme(theme?.colorScheme)
6520
6520
  });
6521
6521
  ops.updateSlides((prev) => insertSlideFromLayoutUpdater(prev, activeSlideIndex, draft));
6522
6522
  setActiveSlideIndex(insertAt);
@@ -6553,7 +6553,7 @@ function createTableMergeHandlers(input) {
6553
6553
  if (!nextCell || nextCell.hMerge || nextCell.vMerge) {
6554
6554
  return;
6555
6555
  }
6556
- const newTableData = chunkYDEEINER_js.mergeCells(
6556
+ const newTableData = chunkFJDZ7AEE_js.mergeCells(
6557
6557
  [
6558
6558
  { row: rowIndex, col: columnIndex },
6559
6559
  { row: rowIndex, col: nextColIdx }
@@ -6561,7 +6561,7 @@ function createTableMergeHandlers(input) {
6561
6561
  td
6562
6562
  );
6563
6563
  const updates = { tableData: newTableData };
6564
- const newRawXml = chunkYDEEINER_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6564
+ const newRawXml = chunkFJDZ7AEE_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6565
6565
  if (newRawXml) {
6566
6566
  updates.rawXml = newRawXml;
6567
6567
  }
@@ -6587,7 +6587,7 @@ function createTableMergeHandlers(input) {
6587
6587
  if (!targetNextCell || targetNextCell.hMerge || targetNextCell.vMerge) {
6588
6588
  return;
6589
6589
  }
6590
- const newTableData = chunkYDEEINER_js.mergeCells(
6590
+ const newTableData = chunkFJDZ7AEE_js.mergeCells(
6591
6591
  [
6592
6592
  { row: rowIndex, col: columnIndex },
6593
6593
  { row: targetNextRowIdx, col: columnIndex }
@@ -6595,7 +6595,7 @@ function createTableMergeHandlers(input) {
6595
6595
  td
6596
6596
  );
6597
6597
  const updates = { tableData: newTableData };
6598
- const newRawXml = chunkYDEEINER_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6598
+ const newRawXml = chunkFJDZ7AEE_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6599
6599
  if (newRawXml) {
6600
6600
  updates.rawXml = newRawXml;
6601
6601
  }
@@ -6610,9 +6610,9 @@ function createTableMergeHandlers(input) {
6610
6610
  return;
6611
6611
  }
6612
6612
  const td = selectedElement.tableData;
6613
- const newTableData = chunkYDEEINER_js.mergeCells(ts.selectedCells, td);
6613
+ const newTableData = chunkFJDZ7AEE_js.mergeCells(ts.selectedCells, td);
6614
6614
  const updates = { tableData: newTableData };
6615
- const newRawXml = chunkYDEEINER_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6615
+ const newRawXml = chunkFJDZ7AEE_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6616
6616
  if (newRawXml) {
6617
6617
  updates.rawXml = newRawXml;
6618
6618
  }
@@ -6629,9 +6629,9 @@ function createTableMergeHandlers(input) {
6629
6629
  }
6630
6630
  const { rowIndex, columnIndex } = ts;
6631
6631
  const td = selectedElement.tableData;
6632
- const newTableData = chunkYDEEINER_js.splitCell(rowIndex, columnIndex, td);
6632
+ const newTableData = chunkFJDZ7AEE_js.splitCell(rowIndex, columnIndex, td);
6633
6633
  const updates = { tableData: newTableData };
6634
- const newRawXml = chunkYDEEINER_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6634
+ const newRawXml = chunkFJDZ7AEE_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6635
6635
  if (newRawXml) {
6636
6636
  updates.rawXml = newRawXml;
6637
6637
  }
@@ -6665,10 +6665,10 @@ function createTableStructHandlers(input) {
6665
6665
  const text = transformCommittedText ? transformCommittedText(rawText) : rawText;
6666
6666
  const updates = {};
6667
6667
  if (el.tableData) {
6668
- updates.tableData = chunkYDEEINER_js.setCellText(el, rowIndex, colIndex, text).tableData;
6668
+ updates.tableData = chunkFJDZ7AEE_js.setCellText(el, rowIndex, colIndex, text).tableData;
6669
6669
  }
6670
6670
  if (el.rawXml) {
6671
- const newRawXml = chunkYDEEINER_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
6671
+ const newRawXml = chunkFJDZ7AEE_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
6672
6672
  if (newRawXml) {
6673
6673
  updates.rawXml = newRawXml;
6674
6674
  }
@@ -6692,7 +6692,7 @@ function createTableStructHandlers(input) {
6692
6692
  const { rowIndex, columnIndex: colIndex } = ts;
6693
6693
  const updates = {};
6694
6694
  if (selectedElement.rawXml) {
6695
- const newRawXml = chunkYDEEINER_js.updateCellTextStyleInRawXml(
6695
+ const newRawXml = chunkFJDZ7AEE_js.updateCellTextStyleInRawXml(
6696
6696
  selectedElement,
6697
6697
  rowIndex,
6698
6698
  colIndex,
@@ -6756,9 +6756,9 @@ function createTableStructHandlers(input) {
6756
6756
  return;
6757
6757
  }
6758
6758
  const rowIdx = ts?.rowIndex ?? 0;
6759
- const newTableData = chunkYDEEINER_js.insertTableRow(selectedElement.tableData, rowIdx, position);
6759
+ const newTableData = chunkFJDZ7AEE_js.insertTableRow(selectedElement.tableData, rowIdx, position);
6760
6760
  const updates = { tableData: newTableData };
6761
- const newRawXml = chunkYDEEINER_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6761
+ const newRawXml = chunkFJDZ7AEE_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6762
6762
  if (newRawXml) {
6763
6763
  updates.rawXml = newRawXml;
6764
6764
  }
@@ -6771,12 +6771,12 @@ function createTableStructHandlers(input) {
6771
6771
  }
6772
6772
  const td = selectedElement.tableData;
6773
6773
  const rowIdx = ts?.rowIndex ?? 0;
6774
- const newTableData = chunkYDEEINER_js.deleteTableRow(td, rowIdx);
6774
+ const newTableData = chunkFJDZ7AEE_js.deleteTableRow(td, rowIdx);
6775
6775
  if (newTableData === td) {
6776
6776
  return;
6777
6777
  }
6778
6778
  const updates = { tableData: newTableData };
6779
- const newRawXml = chunkYDEEINER_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6779
+ const newRawXml = chunkFJDZ7AEE_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6780
6780
  if (newRawXml) {
6781
6781
  updates.rawXml = newRawXml;
6782
6782
  }
@@ -6788,9 +6788,9 @@ function createTableStructHandlers(input) {
6788
6788
  return;
6789
6789
  }
6790
6790
  const colIdx = ts?.columnIndex ?? 0;
6791
- const newTableData = chunkYDEEINER_js.insertTableColumn(selectedElement.tableData, colIdx, position);
6791
+ const newTableData = chunkFJDZ7AEE_js.insertTableColumn(selectedElement.tableData, colIdx, position);
6792
6792
  const updates = { tableData: newTableData };
6793
- const newRawXml = chunkYDEEINER_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6793
+ const newRawXml = chunkFJDZ7AEE_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6794
6794
  if (newRawXml) {
6795
6795
  updates.rawXml = newRawXml;
6796
6796
  }
@@ -6803,12 +6803,12 @@ function createTableStructHandlers(input) {
6803
6803
  }
6804
6804
  const td = selectedElement.tableData;
6805
6805
  const colIdx = ts?.columnIndex ?? 0;
6806
- const newTableData = chunkYDEEINER_js.deleteTableColumn(td, colIdx);
6806
+ const newTableData = chunkFJDZ7AEE_js.deleteTableColumn(td, colIdx);
6807
6807
  if (newTableData === td) {
6808
6808
  return;
6809
6809
  }
6810
6810
  const updates = { tableData: newTableData };
6811
- const newRawXml = chunkYDEEINER_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6811
+ const newRawXml = chunkFJDZ7AEE_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6812
6812
  if (newRawXml) {
6813
6813
  updates.rawXml = newRawXml;
6814
6814
  }
@@ -6844,8 +6844,8 @@ async function renderToCanvas(element, options = {}) {
6844
6844
  return html2canvasPro(element, {
6845
6845
  ...options,
6846
6846
  onclone: async (doc, clonedEl) => {
6847
- await chunkYDEEINER_js.normalizeColorsForCapture(doc, clonedEl);
6848
- chunkYDEEINER_js.preprocessCssForCapture(clonedEl);
6847
+ await chunkFJDZ7AEE_js.normalizeColorsForCapture(doc, clonedEl);
6848
+ chunkFJDZ7AEE_js.preprocessCssForCapture(clonedEl);
6849
6849
  if (typeof userOnClone === "function") {
6850
6850
  userOnClone(doc, clonedEl);
6851
6851
  }
@@ -6883,13 +6883,13 @@ function useExportSaveAs(input) {
6883
6883
  if (!handler) {
6884
6884
  return;
6885
6885
  }
6886
- const downloadName = chunkYDEEINER_js.savedPresentationFileName(filePath, format);
6886
+ const downloadName = chunkFJDZ7AEE_js.savedPresentationFileName(filePath, format);
6887
6887
  try {
6888
6888
  const data = await buildSaveAsData(handler, format);
6889
6889
  const blob = new Blob([data], {
6890
6890
  type: "application/vnd.openxmlformats-officedocument.presentationml.presentation"
6891
6891
  });
6892
- chunkYDEEINER_js.downloadBlob(blob, downloadName);
6892
+ chunkFJDZ7AEE_js.downloadBlob(blob, downloadName);
6893
6893
  } catch (err) {
6894
6894
  console.error(`[PowerPointViewer] Save as .${format} failed:`, err);
6895
6895
  }
@@ -6902,18 +6902,18 @@ function useExportSaveAs(input) {
6902
6902
  const pptxGuides = guides.map((g) => ({
6903
6903
  id: g.id,
6904
6904
  orientation: g.axis === "h" ? "horz" : "vert",
6905
- positionEmu: chunkYDEEINER_js.guidePxToEmu(g.position)
6905
+ positionEmu: chunkFJDZ7AEE_js.guidePxToEmu(g.position)
6906
6906
  }));
6907
6907
  return {
6908
6908
  ...slide,
6909
6909
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
6910
6910
  };
6911
6911
  });
6912
- const slidesToSave = chunkYDEEINER_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
6912
+ const slidesToSave = chunkFJDZ7AEE_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
6913
6913
  const saveOptions = {
6914
6914
  // Save As shares Save's slide-size decision; leaving it out here is how
6915
6915
  // a preset picked in the inspector reached one save path and not the other.
6916
- slideSize: chunkYDEEINER_js.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size,
6916
+ slideSize: chunkFJDZ7AEE_js.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size,
6917
6917
  headerFooter,
6918
6918
  presentationProperties,
6919
6919
  customShows: customShows.length > 0 ? customShows : void 0,
@@ -6927,13 +6927,13 @@ function useExportSaveAs(input) {
6927
6927
  handoutMaster,
6928
6928
  outputFormat: format
6929
6929
  };
6930
- return chunkYDEEINER_js.saveDeckWithPassword(handler, slidesToSave, saveOptions, password);
6930
+ return chunkFJDZ7AEE_js.saveDeckWithPassword(handler, slidesToSave, saveOptions, password);
6931
6931
  };
6932
6932
  const handleExportJson = () => {
6933
6933
  const sourceName = filePath ? filePath.replace(/\\/gu, "/").split("/").pop() : void 0;
6934
- const slideSize = chunkYDEEINER_js.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size;
6934
+ const slideSize = chunkFJDZ7AEE_js.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size;
6935
6935
  const data = {
6936
- slides: chunkYDEEINER_js.buildSaveSlides(slides, templateElementsBySlideId),
6936
+ slides: chunkFJDZ7AEE_js.buildSaveSlides(slides, templateElementsBySlideId),
6937
6937
  width: canvasSize.width,
6938
6938
  height: canvasSize.height,
6939
6939
  widthEmu: slideSize.widthEmu,
@@ -6952,7 +6952,7 @@ function useExportSaveAs(input) {
6952
6952
  handoutMaster
6953
6953
  };
6954
6954
  try {
6955
- chunkYDEEINER_js.exportDeckJson(data, sourceName);
6955
+ chunkFJDZ7AEE_js.exportDeckJson(data, sourceName);
6956
6956
  } catch (err) {
6957
6957
  console.error("[PowerPointViewer] JSON export failed:", err);
6958
6958
  }
@@ -7039,7 +7039,7 @@ async function exportSlideToPngBlob(slideElement, options = {}) {
7039
7039
  }
7040
7040
  async function exportSlideAsPng(slideElement, slideIndex, options = {}) {
7041
7041
  const blob = await exportSlideToPngBlob(slideElement, options);
7042
- chunkYDEEINER_js.downloadBlob(blob, `slide-${slideIndex + 1}.png`);
7042
+ chunkFJDZ7AEE_js.downloadBlob(blob, `slide-${slideIndex + 1}.png`);
7043
7043
  }
7044
7044
  async function copySlideToClipboard(slideElement, options = {}) {
7045
7045
  const blob = await exportSlideToPngBlob(slideElement, options);
@@ -7061,15 +7061,15 @@ async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide,
7061
7061
  continue;
7062
7062
  }
7063
7063
  const canvas = await renderElementToCanvas(stageEl, scale);
7064
- images.push(chunkYDEEINER_js.canvasToJpegData(canvas));
7064
+ images.push(chunkFJDZ7AEE_js.canvasToJpegData(canvas));
7065
7065
  }
7066
7066
  onProgress?.(totalSlides, totalSlides);
7067
7067
  setActiveSlide(currentSlideIndex);
7068
7068
  if (images.length === 0) {
7069
- throw new Error(chunkSWRY3SI5_js.translationsEn["pptx.export.errorNoSlidesPdf"]);
7069
+ throw new Error(chunkALO4ZOHQ_js.translationsEn["pptx.export.errorNoSlidesPdf"]);
7070
7070
  }
7071
- const pdfBlobUrl = chunkT2QG2HD5_js.buildPdfFromImageData(images);
7072
- chunkYDEEINER_js.downloadDataUrl(pdfBlobUrl, filename);
7071
+ const pdfBlobUrl = chunkB6UIVRFA_js.buildPdfFromImageData(images);
7072
+ chunkFJDZ7AEE_js.downloadDataUrl(pdfBlobUrl, filename);
7073
7073
  }
7074
7074
  async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, options = {}) {
7075
7075
  const { scale = 2, onProgress } = options;
@@ -7115,10 +7115,10 @@ async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSl
7115
7115
  onProgress?.(totalSlides, totalSlides);
7116
7116
  setActiveSlide(currentSlideIndex);
7117
7117
  if (pages.length === 0) {
7118
- throw new Error(chunkSWRY3SI5_js.translationsEn["pptx.export.errorNoSlidesNotesPdf"]);
7118
+ throw new Error(chunkALO4ZOHQ_js.translationsEn["pptx.export.errorNoSlidesNotesPdf"]);
7119
7119
  }
7120
- const pdfDataUrl = chunkT2QG2HD5_js.buildNotesPdf(pages);
7121
- chunkYDEEINER_js.downloadDataUrl(pdfDataUrl, filename);
7120
+ const pdfDataUrl = chunkB6UIVRFA_js.buildNotesPdf(pages);
7121
+ chunkFJDZ7AEE_js.downloadDataUrl(pdfDataUrl, filename);
7122
7122
  }
7123
7123
 
7124
7124
  // src/viewer/utils/export-video.ts
@@ -7149,7 +7149,7 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
7149
7149
  }
7150
7150
  setActiveSlide(currentSlideIndex);
7151
7151
  if (slideCanvases.length === 0) {
7152
- throw new Error(chunkSWRY3SI5_js.translationsEn["pptx.export.errorNoSlidesVideo"]);
7152
+ throw new Error(chunkALO4ZOHQ_js.translationsEn["pptx.export.errorNoSlidesVideo"]);
7153
7153
  }
7154
7154
  const firstCanvas = slideCanvases[0];
7155
7155
  const recordingCanvas = document.createElement("canvas");
@@ -7157,12 +7157,12 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
7157
7157
  recordingCanvas.height = firstCanvas.height;
7158
7158
  const ctx = recordingCanvas.getContext("2d");
7159
7159
  if (!ctx) {
7160
- throw new Error(chunkSWRY3SI5_js.translationsEn["pptx.export.errorNo2dContext"]);
7160
+ throw new Error(chunkALO4ZOHQ_js.translationsEn["pptx.export.errorNo2dContext"]);
7161
7161
  }
7162
7162
  const fps = 30;
7163
7163
  const stream = recordingCanvas.captureStream(fps);
7164
7164
  const recorder = new MediaRecorder(stream, {
7165
- mimeType: chunkYDEEINER_js.pickSupportedMimeType([...chunkYDEEINER_js.WEBM_MIME_CANDIDATES]),
7165
+ mimeType: chunkFJDZ7AEE_js.pickSupportedMimeType([...chunkFJDZ7AEE_js.WEBM_MIME_CANDIDATES]),
7166
7166
  videoBitsPerSecond: 5e6
7167
7167
  });
7168
7168
  const chunks = [];
@@ -7185,8 +7185,8 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
7185
7185
  const duration = slideTimingsMs?.[i] ?? slideDurationMs;
7186
7186
  ctx.clearRect(0, 0, recordingCanvas.width, recordingCanvas.height);
7187
7187
  ctx.drawImage(slideCanvases[i], 0, 0);
7188
- const frameInterval = chunkYDEEINER_js.fpsToFrameIntervalMs(fps);
7189
- const framesNeeded = chunkYDEEINER_js.segmentFrameCount(duration, fps);
7188
+ const frameInterval = chunkFJDZ7AEE_js.fpsToFrameIntervalMs(fps);
7189
+ const framesNeeded = chunkFJDZ7AEE_js.segmentFrameCount(duration, fps);
7190
7190
  for (let f = 0; f < framesNeeded; f++) {
7191
7191
  if (signal?.aborted) {
7192
7192
  recorder.stop();
@@ -7233,9 +7233,9 @@ async function exportAllSlidesAsGif(slideStageRef, totalSlides, setActiveSlide,
7233
7233
  }
7234
7234
  setActiveSlide(currentSlideIndex);
7235
7235
  if (frames.length === 0) {
7236
- throw new Error(chunkSWRY3SI5_js.translationsEn["pptx.export.errorNoSlidesGif"]);
7236
+ throw new Error(chunkALO4ZOHQ_js.translationsEn["pptx.export.errorNoSlidesGif"]);
7237
7237
  }
7238
- const gifBytes = chunkYDEEINER_js.encodeGif(frames, Math.round(slideDurationMs / 10));
7238
+ const gifBytes = chunkFJDZ7AEE_js.encodeGif(frames, Math.round(slideDurationMs / 10));
7239
7239
  onProgress?.(totalSlides, totalSlides);
7240
7240
  const buf = new ArrayBuffer(gifBytes.length);
7241
7241
  new Uint8Array(buf).set(gifBytes);
@@ -7289,7 +7289,7 @@ function exportAllSlidesToSvg(data, options = {}) {
7289
7289
  continue;
7290
7290
  }
7291
7291
  onProgress?.(processedCount, data.slides.length);
7292
- let svg = chunkYDEEINER_js.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
7292
+ let svg = chunkFJDZ7AEE_js.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
7293
7293
  if (embedFonts && fontFaces?.length) {
7294
7294
  svg = injectFontFaces(svg, fontFaces);
7295
7295
  }
@@ -7398,21 +7398,21 @@ function useExportHandlers(input) {
7398
7398
  {
7399
7399
  scale: imageExportScale,
7400
7400
  onProgress: (current, total) => {
7401
- setExportProgress(chunkYDEEINER_js.slideProgressPercent(current, total));
7402
- setExportStatusMessage(chunkYDEEINER_js.slideStatusLabel("Rendering", current, total));
7401
+ setExportProgress(chunkFJDZ7AEE_js.slideProgressPercent(current, total));
7402
+ setExportStatusMessage(chunkFJDZ7AEE_js.slideStatusLabel("Rendering", current, total));
7403
7403
  },
7404
7404
  signal: abortCtrl.signal
7405
7405
  }
7406
7406
  );
7407
- setExportProgress(chunkYDEEINER_js.EXPORT_ASSEMBLING_PERCENT);
7407
+ setExportProgress(chunkFJDZ7AEE_js.EXPORT_ASSEMBLING_PERCENT);
7408
7408
  setExportStatusMessage("Building PDF...");
7409
7409
  await new Promise((r) => {
7410
7410
  setTimeout(r, 100);
7411
7411
  });
7412
- setExportProgress(chunkYDEEINER_js.EXPORT_DONE_PERCENT);
7412
+ setExportProgress(chunkFJDZ7AEE_js.EXPORT_DONE_PERCENT);
7413
7413
  setExportStatusMessage("Done!");
7414
7414
  } catch (err) {
7415
- if (!chunkYDEEINER_js.isExportAbortError(err)) {
7415
+ if (!chunkFJDZ7AEE_js.isExportAbortError(err)) {
7416
7416
  console.error("[PowerPointViewer] PDF export failed:", err);
7417
7417
  }
7418
7418
  } finally {
@@ -7442,21 +7442,21 @@ function useExportHandlers(input) {
7442
7442
  {
7443
7443
  scale: imageExportScale,
7444
7444
  onProgress: (current, total) => {
7445
- setExportProgress(chunkYDEEINER_js.slideProgressPercent(current, total));
7446
- setExportStatusMessage(chunkYDEEINER_js.slideStatusLabel("Rendering", current, total));
7445
+ setExportProgress(chunkFJDZ7AEE_js.slideProgressPercent(current, total));
7446
+ setExportStatusMessage(chunkFJDZ7AEE_js.slideStatusLabel("Rendering", current, total));
7447
7447
  },
7448
7448
  signal: abortCtrl.signal
7449
7449
  }
7450
7450
  );
7451
- setExportProgress(chunkYDEEINER_js.EXPORT_ASSEMBLING_PERCENT);
7451
+ setExportProgress(chunkFJDZ7AEE_js.EXPORT_ASSEMBLING_PERCENT);
7452
7452
  setExportStatusMessage("Building PDF...");
7453
7453
  await new Promise((r) => {
7454
7454
  setTimeout(r, 100);
7455
7455
  });
7456
- setExportProgress(chunkYDEEINER_js.EXPORT_DONE_PERCENT);
7456
+ setExportProgress(chunkFJDZ7AEE_js.EXPORT_DONE_PERCENT);
7457
7457
  setExportStatusMessage("Done!");
7458
7458
  } catch (err) {
7459
- if (!chunkYDEEINER_js.isExportAbortError(err)) {
7459
+ if (!chunkFJDZ7AEE_js.isExportAbortError(err)) {
7460
7460
  console.error("[PowerPointViewer] Notes PDF export failed:", err);
7461
7461
  }
7462
7462
  } finally {
@@ -7498,22 +7498,22 @@ function useExportHandlers(input) {
7498
7498
  scale: 1,
7499
7499
  slideDurationMs: 3e3,
7500
7500
  onProgress: (current, total) => {
7501
- setExportProgress(chunkYDEEINER_js.slideProgressPercent(current, total, 45));
7502
- setExportStatusMessage(chunkYDEEINER_js.slideStatusLabel("Capturing", current, total));
7501
+ setExportProgress(chunkFJDZ7AEE_js.slideProgressPercent(current, total, 45));
7502
+ setExportStatusMessage(chunkFJDZ7AEE_js.slideStatusLabel("Capturing", current, total));
7503
7503
  },
7504
7504
  onRecordProgress: (current, total) => {
7505
- setExportProgress(chunkYDEEINER_js.recordProgressPercent(current, total));
7506
- setExportStatusMessage(chunkYDEEINER_js.slideStatusLabel("Recording", current, total));
7505
+ setExportProgress(chunkFJDZ7AEE_js.recordProgressPercent(current, total));
7506
+ setExportStatusMessage(chunkFJDZ7AEE_js.slideStatusLabel("Recording", current, total));
7507
7507
  },
7508
7508
  signal: abortCtrl.signal
7509
7509
  }
7510
7510
  );
7511
- setExportProgress(chunkYDEEINER_js.EXPORT_ASSEMBLING_PERCENT);
7511
+ setExportProgress(chunkFJDZ7AEE_js.EXPORT_ASSEMBLING_PERCENT);
7512
7512
  setExportStatusMessage("Saving file...");
7513
- chunkYDEEINER_js.downloadBlob(blob, "presentation.webm");
7514
- setExportProgress(chunkYDEEINER_js.EXPORT_DONE_PERCENT);
7513
+ chunkFJDZ7AEE_js.downloadBlob(blob, "presentation.webm");
7514
+ setExportProgress(chunkFJDZ7AEE_js.EXPORT_DONE_PERCENT);
7515
7515
  } catch (err) {
7516
- if (!chunkYDEEINER_js.isExportAbortError(err)) {
7516
+ if (!chunkFJDZ7AEE_js.isExportAbortError(err)) {
7517
7517
  console.error("[PowerPointViewer] Video export failed:", err);
7518
7518
  }
7519
7519
  } finally {
@@ -7541,18 +7541,18 @@ function useExportHandlers(input) {
7541
7541
  scale: 0.5,
7542
7542
  slideDurationMs: 2e3,
7543
7543
  onProgress: (current, total) => {
7544
- setExportProgress(chunkYDEEINER_js.slideProgressPercent(current, total));
7545
- setExportStatusMessage(chunkYDEEINER_js.slideStatusLabel("Encoding", current, total));
7544
+ setExportProgress(chunkFJDZ7AEE_js.slideProgressPercent(current, total));
7545
+ setExportStatusMessage(chunkFJDZ7AEE_js.slideStatusLabel("Encoding", current, total));
7546
7546
  },
7547
7547
  signal: abortCtrl.signal
7548
7548
  }
7549
7549
  );
7550
- setExportProgress(chunkYDEEINER_js.EXPORT_ASSEMBLING_PERCENT);
7550
+ setExportProgress(chunkFJDZ7AEE_js.EXPORT_ASSEMBLING_PERCENT);
7551
7551
  setExportStatusMessage("Saving file...");
7552
- chunkYDEEINER_js.downloadBlob(blob, "presentation.gif");
7553
- setExportProgress(chunkYDEEINER_js.EXPORT_DONE_PERCENT);
7552
+ chunkFJDZ7AEE_js.downloadBlob(blob, "presentation.gif");
7553
+ setExportProgress(chunkFJDZ7AEE_js.EXPORT_DONE_PERCENT);
7554
7554
  } catch (err) {
7555
- if (!chunkYDEEINER_js.isExportAbortError(err)) {
7555
+ if (!chunkFJDZ7AEE_js.isExportAbortError(err)) {
7556
7556
  console.error("[PowerPointViewer] GIF export failed:", err);
7557
7557
  }
7558
7558
  } finally {
@@ -7585,7 +7585,7 @@ function useExportHandlers(input) {
7585
7585
  exportStatusMessage
7586
7586
  };
7587
7587
  }
7588
- var ViewerOptionsContext = react.createContext(chunkYDEEINER_js.DEFAULT_VIEWER_OPTIONS);
7588
+ var ViewerOptionsContext = react.createContext(chunkFJDZ7AEE_js.DEFAULT_VIEWER_OPTIONS);
7589
7589
  function useViewerOptionsContext() {
7590
7590
  return react.useContext(ViewerOptionsContext);
7591
7591
  }
@@ -7597,13 +7597,13 @@ function usePrintHandlers(input) {
7597
7597
  const { t } = reactI18next.useTranslation();
7598
7598
  const viewerOptions = useViewerOptionsContext();
7599
7599
  const includeHiddenSlides = viewerOptions.advanced.printHiddenSlides;
7600
- const printRasterScale = (viewerOptions.advanced.printHighQuality ? 4 : 3) * chunkYDEEINER_js.resolveImageResolutionScale(viewerOptions);
7600
+ const printRasterScale = (viewerOptions.advanced.printHighQuality ? 4 : 3) * chunkFJDZ7AEE_js.resolveImageResolutionScale(viewerOptions);
7601
7601
  const handlePrint = () => {
7602
7602
  setIsPrintDialogOpen(true);
7603
7603
  };
7604
7604
  const handlePrintSvg = async (settings) => {
7605
7605
  setIsPrintDialogOpen(false);
7606
- const printWindow = chunkYDEEINER_js.openPendingPrintWindow(t("pptx.print.preparingToPrint"));
7606
+ const printWindow = chunkFJDZ7AEE_js.openPendingPrintWindow(t("pptx.print.preparingToPrint"));
7607
7607
  if (!printWindow) {
7608
7608
  console.warn(
7609
7609
  "[PowerPointViewer] Print window was blocked by the browser. Allow popups for this site to print."
@@ -7613,9 +7613,9 @@ function usePrintHandlers(input) {
7613
7613
  if (!pptxData || settings.printWhat !== "slides") {
7614
7614
  return runRasterPrint(printWindow, settings);
7615
7615
  }
7616
- const colorFilter = chunkYDEEINER_js.computeColorFilter(settings.colorMode);
7617
- const slideIndices = chunkYDEEINER_js.filterHiddenSlideIndices(
7618
- chunkYDEEINER_js.computeSlideIndices(
7616
+ const colorFilter = chunkFJDZ7AEE_js.computeColorFilter(settings.colorMode);
7617
+ const slideIndices = chunkFJDZ7AEE_js.filterHiddenSlideIndices(
7618
+ chunkFJDZ7AEE_js.computeSlideIndices(
7619
7619
  settings.slideRange,
7620
7620
  activeSlideIndex,
7621
7621
  slides.length,
@@ -7633,22 +7633,22 @@ function usePrintHandlers(input) {
7633
7633
  printWindow.close();
7634
7634
  return;
7635
7635
  }
7636
- const printDoc = chunkYDEEINER_js.buildPrintDocument(svgs, pptxData.width, pptxData.height, {
7636
+ const printDoc = chunkFJDZ7AEE_js.buildPrintDocument(svgs, pptxData.width, pptxData.height, {
7637
7637
  title: "Slides (Vector)",
7638
7638
  orientation: settings.orientation,
7639
7639
  colorFilter,
7640
7640
  scaleToFit: settings.scaleToFit
7641
7641
  });
7642
- chunkYDEEINER_js.finishPrintWindow(printWindow, printDoc);
7642
+ chunkFJDZ7AEE_js.finishPrintWindow(printWindow, printDoc);
7643
7643
  } catch (err) {
7644
7644
  console.warn("[PowerPointViewer] SVG print path failed, falling back to raster:", err);
7645
7645
  return runRasterPrint(printWindow, settings);
7646
7646
  }
7647
7647
  };
7648
7648
  const runRasterPrint = async (printWindow, settings) => {
7649
- const colorFilter = chunkYDEEINER_js.computeColorFilter(settings.colorMode);
7650
- const slideIndices = chunkYDEEINER_js.filterHiddenSlideIndices(
7651
- chunkYDEEINER_js.computeSlideIndices(
7649
+ const colorFilter = chunkFJDZ7AEE_js.computeColorFilter(settings.colorMode);
7650
+ const slideIndices = chunkFJDZ7AEE_js.filterHiddenSlideIndices(
7651
+ chunkFJDZ7AEE_js.computeSlideIndices(
7652
7652
  settings.slideRange,
7653
7653
  activeSlideIndex,
7654
7654
  slides.length,
@@ -7659,11 +7659,11 @@ function usePrintHandlers(input) {
7659
7659
  includeHiddenSlides
7660
7660
  );
7661
7661
  if (settings.printWhat === "outline") {
7662
- chunkYDEEINER_js.finishPrintWindow(
7662
+ chunkFJDZ7AEE_js.finishPrintWindow(
7663
7663
  printWindow,
7664
- chunkYDEEINER_js.buildPrintHtmlDocument({
7664
+ chunkFJDZ7AEE_js.buildPrintHtmlDocument({
7665
7665
  title: "Outline",
7666
- bodyHtml: `<div class="outline-page">${chunkYDEEINER_js.buildOutlineHtml(slideIndices, slides)}</div>`,
7666
+ bodyHtml: `<div class="outline-page">${chunkFJDZ7AEE_js.buildOutlineHtml(slideIndices, slides)}</div>`,
7667
7667
  orientation: settings.orientation,
7668
7668
  colorFilter,
7669
7669
  frameSlides: settings.frameSlides,
@@ -7690,11 +7690,11 @@ function usePrintHandlers(input) {
7690
7690
  }
7691
7691
  const slideImages = slideIndices.map((idx) => allImages[idx]).filter(Boolean);
7692
7692
  if (settings.printWhat === "slides") {
7693
- chunkYDEEINER_js.finishPrintWindow(
7693
+ chunkFJDZ7AEE_js.finishPrintWindow(
7694
7694
  printWindow,
7695
- chunkYDEEINER_js.buildPrintHtmlDocument({
7695
+ chunkFJDZ7AEE_js.buildPrintHtmlDocument({
7696
7696
  title: "Slides",
7697
- bodyHtml: chunkYDEEINER_js.buildSlidesHtml(slideImages, slideIndices),
7697
+ bodyHtml: chunkFJDZ7AEE_js.buildSlidesHtml(slideImages, slideIndices),
7698
7698
  orientation: settings.orientation,
7699
7699
  colorFilter,
7700
7700
  frameSlides: settings.frameSlides,
@@ -7704,11 +7704,11 @@ function usePrintHandlers(input) {
7704
7704
  return;
7705
7705
  }
7706
7706
  if (settings.printWhat === "notes") {
7707
- chunkYDEEINER_js.finishPrintWindow(
7707
+ chunkFJDZ7AEE_js.finishPrintWindow(
7708
7708
  printWindow,
7709
- chunkYDEEINER_js.buildPrintHtmlDocument({
7709
+ chunkFJDZ7AEE_js.buildPrintHtmlDocument({
7710
7710
  title: "Notes Pages",
7711
- bodyHtml: chunkYDEEINER_js.buildNotesHtml(slideImages, slideIndices, slides),
7711
+ bodyHtml: chunkFJDZ7AEE_js.buildNotesHtml(slideImages, slideIndices, slides),
7712
7712
  orientation: "portrait",
7713
7713
  colorFilter,
7714
7714
  frameSlides: settings.frameSlides,
@@ -7719,11 +7719,11 @@ function usePrintHandlers(input) {
7719
7719
  }
7720
7720
  if (settings.printWhat === "handouts") {
7721
7721
  const spp = settings.slidesPerPage;
7722
- chunkYDEEINER_js.finishPrintWindow(
7722
+ chunkFJDZ7AEE_js.finishPrintWindow(
7723
7723
  printWindow,
7724
- chunkYDEEINER_js.buildPrintHtmlDocument({
7724
+ chunkFJDZ7AEE_js.buildPrintHtmlDocument({
7725
7725
  title: `Handout ${spp} per page`,
7726
- bodyHtml: chunkYDEEINER_js.buildHandoutsHtml(slideImages, slideIndices, spp),
7726
+ bodyHtml: chunkFJDZ7AEE_js.buildHandoutsHtml(slideImages, slideIndices, spp),
7727
7727
  orientation: "portrait",
7728
7728
  colorFilter,
7729
7729
  frameSlides: settings.frameSlides,
@@ -7737,7 +7737,7 @@ function usePrintHandlers(input) {
7737
7737
  };
7738
7738
  const handlePrintWithSettings = async (settings) => {
7739
7739
  setIsPrintDialogOpen(false);
7740
- const printWindow = chunkYDEEINER_js.openPendingPrintWindow(t("pptx.print.preparingToPrint"));
7740
+ const printWindow = chunkFJDZ7AEE_js.openPendingPrintWindow(t("pptx.print.preparingToPrint"));
7741
7741
  if (!printWindow) {
7742
7742
  console.warn(
7743
7743
  "[PowerPointViewer] Print window was blocked by the browser. Allow popups for this site to print."
@@ -7800,8 +7800,8 @@ function useThemeHandlers(input) {
7800
7800
  return;
7801
7801
  }
7802
7802
  await handler.updateThemeColorScheme(colorScheme);
7803
- const previousMap = theme?.colorScheme ? chunkYDEEINER_js.buildThemeColorMap(theme.colorScheme) : {};
7804
- setSlides((prev) => chunkYDEEINER_js.reResolveSlideColors(prev, previousMap, colorScheme));
7803
+ const previousMap = theme?.colorScheme ? chunkFJDZ7AEE_js.buildThemeColorMap(theme.colorScheme) : {};
7804
+ setSlides((prev) => chunkFJDZ7AEE_js.reResolveSlideColors(prev, previousMap, colorScheme));
7805
7805
  setTheme((prev) => prev ? { ...prev, colorScheme } : { colorScheme });
7806
7806
  bumpHistory();
7807
7807
  history.markDirty();
@@ -7906,7 +7906,7 @@ function useThemeSwitching(input) {
7906
7906
  }
7907
7907
  try {
7908
7908
  await handler.applyTheme(preset.colorScheme, preset.fontScheme, preset.name);
7909
- const newData = chunkYDEEINER_js.applyThemeToData(data, preset.colorScheme, preset.fontScheme, preset.name);
7909
+ const newData = chunkFJDZ7AEE_js.applyThemeToData(data, preset.colorScheme, preset.fontScheme, preset.name);
7910
7910
  onDataChange(newData);
7911
7911
  onThemeChanged?.(preset);
7912
7912
  } catch (error) {
@@ -7923,7 +7923,7 @@ function useThemeSwitching(input) {
7923
7923
  }
7924
7924
  try {
7925
7925
  await handler.applyTheme(colorScheme, fontScheme ?? {}, themeName);
7926
- const newData = chunkYDEEINER_js.applyThemeToData(data, colorScheme, fontScheme, themeName);
7926
+ const newData = chunkFJDZ7AEE_js.applyThemeToData(data, colorScheme, fontScheme, themeName);
7927
7927
  onDataChange(newData);
7928
7928
  } catch (error) {
7929
7929
  console.error("Failed to switch to custom theme:", error);
@@ -7935,12 +7935,12 @@ function useThemeSwitching(input) {
7935
7935
  if (!data?.theme?.colorScheme) {
7936
7936
  return void 0;
7937
7937
  }
7938
- return chunkYDEEINER_js.THEME_PRESETS.find(
7939
- (p) => chunkYDEEINER_js.themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
7938
+ return chunkFJDZ7AEE_js.THEME_PRESETS.find(
7939
+ (p) => chunkFJDZ7AEE_js.themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
7940
7940
  );
7941
7941
  }, [data?.theme?.colorScheme]);
7942
7942
  return {
7943
- presets: chunkYDEEINER_js.THEME_PRESETS,
7943
+ presets: chunkFJDZ7AEE_js.THEME_PRESETS,
7944
7944
  switchToPreset,
7945
7945
  switchToCustom,
7946
7946
  currentPreset
@@ -8015,7 +8015,7 @@ function usePropertyHandlers(input) {
8015
8015
  }
8016
8016
  try {
8017
8017
  const ab = await file.arrayBuffer();
8018
- const h = new chunkYDEEINER_js.PptxHandler();
8018
+ const h = new chunkFJDZ7AEE_js.PptxHandler();
8019
8019
  const other = await h.load(ab);
8020
8020
  if (!other) {
8021
8021
  return;
@@ -8025,7 +8025,7 @@ function usePropertyHandlers(input) {
8025
8025
  width: canvasSize.width,
8026
8026
  height: canvasSize.height
8027
8027
  };
8028
- setCompareResult(chunkYDEEINER_js.comparePresentation(cur, other));
8028
+ setCompareResult(chunkFJDZ7AEE_js.comparePresentation(cur, other));
8029
8029
  setIsComparePanelOpen(true);
8030
8030
  } catch (err) {
8031
8031
  console.warn("Compare failed:", err);
@@ -8042,7 +8042,7 @@ function usePropertyHandlers(input) {
8042
8042
  if (!diff || diff.status === "unchanged") {
8043
8043
  return;
8044
8044
  }
8045
- setSlides((prev) => chunkYDEEINER_js.applyAcceptSlide(prev, diff));
8045
+ setSlides((prev) => chunkFJDZ7AEE_js.applyAcceptSlide(prev, diff));
8046
8046
  setIsDirty(true);
8047
8047
  },
8048
8048
  [compareResult, setSlides, setIsDirty]
@@ -8053,10 +8053,10 @@ function usePropertyHandlers(input) {
8053
8053
  if (!compareResult) {
8054
8054
  return;
8055
8055
  }
8056
- setSlides((prev) => chunkYDEEINER_js.applyAcceptAllSlides(prev, compareResult));
8056
+ setSlides((prev) => chunkFJDZ7AEE_js.applyAcceptAllSlides(prev, compareResult));
8057
8057
  setIsDirty(true);
8058
8058
  }, [compareResult, setSlides, setIsDirty]);
8059
- const usedFontFamilies = react.useMemo(() => chunkYDEEINER_js.collectUsedFonts(slides), [slides]);
8059
+ const usedFontFamilies = react.useMemo(() => chunkFJDZ7AEE_js.collectUsedFonts(slides), [slides]);
8060
8060
  return {
8061
8061
  handleUpdateNotes,
8062
8062
  handleUpdateSlide,
@@ -8211,7 +8211,7 @@ function useViewerDialogs(input) {
8211
8211
  );
8212
8212
  const embeddedFontKey = (embeddedFontFamilies ?? []).join("\0");
8213
8213
  const fontEmbedding = react.useMemo(
8214
- () => chunkYDEEINER_js.describeFontEmbedding(embeddedFontKey ? embeddedFontKey.split("\0") : []),
8214
+ () => chunkFJDZ7AEE_js.describeFontEmbedding(embeddedFontKey ? embeddedFontKey.split("\0") : []),
8215
8215
  [embeddedFontKey]
8216
8216
  );
8217
8217
  const [embedFontsEnabled, setEmbedFontsEnabled] = react.useState(fontEmbedding.initialEnabled);
@@ -8221,11 +8221,11 @@ function useViewerDialogs(input) {
8221
8221
  setEmbedFontsEnabled(fontEmbedding.initialEnabled);
8222
8222
  }
8223
8223
  const [isNarrowViewport, setIsNarrowViewport] = react.useState(
8224
- () => typeof window !== "undefined" ? chunkYDEEINER_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch()) : false
8224
+ () => typeof window !== "undefined" ? chunkFJDZ7AEE_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch()) : false
8225
8225
  );
8226
8226
  react.useEffect(() => {
8227
8227
  const handleWindow = () => setIsNarrowViewport(
8228
- chunkYDEEINER_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch())
8228
+ chunkFJDZ7AEE_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch())
8229
8229
  );
8230
8230
  window.addEventListener("resize", handleWindow);
8231
8231
  return () => window.removeEventListener("resize", handleWindow);
@@ -8378,15 +8378,15 @@ function useViewerDialogs(input) {
8378
8378
  };
8379
8379
  }
8380
8380
  function computeGridSpacingPx2(documentGridSpacing) {
8381
- return chunkYDEEINER_js.computeGridSpacingPx(documentGridSpacing, chunkT2QG2HD5_js.GRID_SIZE);
8381
+ return chunkFJDZ7AEE_js.computeGridSpacingPx(documentGridSpacing, chunkB6UIVRFA_js.GRID_SIZE);
8382
8382
  }
8383
8383
  function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows) {
8384
8384
  const activeShow = activeCustomShowId ? customShows.find((show) => show.id === activeCustomShowId) : void 0;
8385
- return chunkYDEEINER_js.resolveShowSlideIndexes(slides, activeShow);
8385
+ return chunkFJDZ7AEE_js.resolveShowSlideIndexes(slides, activeShow);
8386
8386
  }
8387
8387
  function computeSlideSectionGroups(slides, sections) {
8388
- return chunkYDEEINER_js.groupSlidesBySection(sections, slides).map((group) => ({
8389
- id: group.section?.id ?? (sections.length > 0 ? chunkT2QG2HD5_js.UNGROUPED_SECTION_ID : chunkT2QG2HD5_js.DEFAULT_SECTION_GROUP_ID),
8388
+ return chunkFJDZ7AEE_js.groupSlidesBySection(sections, slides).map((group) => ({
8389
+ id: group.section?.id ?? (sections.length > 0 ? chunkB6UIVRFA_js.UNGROUPED_SECTION_ID : chunkB6UIVRFA_js.DEFAULT_SECTION_GROUP_ID),
8390
8390
  label: group.section?.name ?? (sections.length > 0 ? "Ungrouped Slides" : "Slides"),
8391
8391
  slideIndexes: group.slideIndexes,
8392
8392
  ...group.section?.color !== void 0 ? { color: group.section.color } : {},
@@ -8398,7 +8398,7 @@ function computeMasterPseudoSlide(mode, activeLayout, activeMaster) {
8398
8398
  return void 0;
8399
8399
  }
8400
8400
  const document2 = activeLayout ? { slideMasters: [{ ...activeMaster, layouts: [activeLayout] }] } : { slideMasters: [activeMaster] };
8401
- return chunkYDEEINER_js.masterViewPseudoSlide(document2, {
8401
+ return chunkFJDZ7AEE_js.masterViewPseudoSlide(document2, {
8402
8402
  tab: "slides",
8403
8403
  masterIndex: 0,
8404
8404
  layoutIndex: activeLayout ? 0 : null
@@ -8426,10 +8426,10 @@ function useDerivedSlideState(input) {
8426
8426
  );
8427
8427
  const slideSectionGroups = react.useMemo(
8428
8428
  () => computeSlideSectionGroups(slides, sections).map((group) => {
8429
- if (group.id === chunkT2QG2HD5_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
8429
+ if (group.id === chunkB6UIVRFA_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
8430
8430
  return { ...group, label: t("pptx.slides.ungroupedSlides") };
8431
8431
  }
8432
- if (group.id === chunkT2QG2HD5_js.DEFAULT_SECTION_GROUP_ID && group.label === "Slides") {
8432
+ if (group.id === chunkB6UIVRFA_js.DEFAULT_SECTION_GROUP_ID && group.label === "Slides") {
8433
8433
  return { ...group, label: t("pptx.sections.slides") };
8434
8434
  }
8435
8435
  return group;
@@ -8529,13 +8529,13 @@ function useAnnotationHandlers(input) {
8529
8529
  }, [annotations, setMode, setSlides, history]);
8530
8530
  const handleSetMode = react.useCallback(
8531
8531
  (nextMode) => {
8532
- if (mode === "present" && nextMode !== "present" && !chunkYDEEINER_js.mayLeaveSlideShow()) {
8532
+ if (mode === "present" && nextMode !== "present" && !chunkFJDZ7AEE_js.mayLeaveSlideShow()) {
8533
8533
  return;
8534
8534
  }
8535
8535
  if (nextMode === "present") {
8536
8536
  presentation.enterPresentMode();
8537
8537
  } else if (mode === "present" && annotations.hasAnyAnnotations) {
8538
- chunkYDEEINER_js.stopAllPersistentAudio();
8538
+ chunkFJDZ7AEE_js.stopAllPersistentAudio();
8539
8539
  if (promptKeepInkAnnotations) {
8540
8540
  pendingModeAfterAnnotationsRef.current = nextMode;
8541
8541
  setShowKeepAnnotationsDialog(true);
@@ -8545,7 +8545,7 @@ function useAnnotationHandlers(input) {
8545
8545
  }
8546
8546
  } else {
8547
8547
  if (mode === "present") {
8548
- chunkYDEEINER_js.stopAllPersistentAudio();
8548
+ chunkFJDZ7AEE_js.stopAllPersistentAudio();
8549
8549
  }
8550
8550
  setMode(nextMode);
8551
8551
  }
@@ -8609,13 +8609,13 @@ function useSerialize(input) {
8609
8609
  let processedSlide = slide;
8610
8610
  if (pendingEditId) {
8611
8611
  const updatedElements = slide.elements.map((el) => {
8612
- if (el.id !== pendingEditId || !chunkYDEEINER_js.hasTextProperties(el)) {
8612
+ if (el.id !== pendingEditId || !chunkFJDZ7AEE_js.hasTextProperties(el)) {
8613
8613
  return el;
8614
8614
  }
8615
8615
  return {
8616
8616
  ...el,
8617
8617
  text: pendingEditText,
8618
- textSegments: chunkYDEEINER_js.remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
8618
+ textSegments: chunkFJDZ7AEE_js.remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
8619
8619
  };
8620
8620
  });
8621
8621
  if (updatedElements.some((el, i) => el !== slide.elements[i])) {
@@ -8628,19 +8628,19 @@ function useSerialize(input) {
8628
8628
  const pptxGuides = guides.map((g) => ({
8629
8629
  id: g.id,
8630
8630
  orientation: g.axis === "h" ? "horz" : "vert",
8631
- positionEmu: chunkYDEEINER_js.guidePxToEmu(g.position)
8631
+ positionEmu: chunkFJDZ7AEE_js.guidePxToEmu(g.position)
8632
8632
  }));
8633
8633
  return {
8634
8634
  ...processedSlide,
8635
8635
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
8636
8636
  };
8637
8637
  });
8638
- const slidesToSave = chunkYDEEINER_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
8638
+ const slidesToSave = chunkFJDZ7AEE_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
8639
8639
  const saveOptions = {
8640
8640
  // Without this the Slide Size card edited a viewer-only pixel value and
8641
8641
  // the saved `p:sldSz` never moved: passing `slideSize` is the only way a
8642
8642
  // slide-size edit reaches the file.
8643
- slideSize: chunkYDEEINER_js.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size,
8643
+ slideSize: chunkFJDZ7AEE_js.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size,
8644
8644
  headerFooter,
8645
8645
  presentationProperties,
8646
8646
  customShows: customShows.length > 0 ? customShows : void 0,
@@ -8652,9 +8652,9 @@ function useSerialize(input) {
8652
8652
  slideMasters,
8653
8653
  notesMaster,
8654
8654
  handoutMaster,
8655
- ...chunkYDEEINER_js.embeddedFontSaveOptions(embedFonts)
8655
+ ...chunkFJDZ7AEE_js.embeddedFontSaveOptions(embedFonts)
8656
8656
  };
8657
- return chunkYDEEINER_js.saveDeckWithPassword(handler, slidesToSave, saveOptions, { password, purpose });
8657
+ return chunkFJDZ7AEE_js.saveDeckWithPassword(handler, slidesToSave, saveOptions, { password, purpose });
8658
8658
  }, [
8659
8659
  slides,
8660
8660
  templateElementsBySlideId,
@@ -8689,7 +8689,7 @@ function useRecoveryDetection(input) {
8689
8689
  const onRestore = input.onRestore;
8690
8690
  const openVersionHistory = input.openVersionHistory;
8691
8691
  react.useEffect(() => {
8692
- if (!chunkYDEEINER_js.shouldProbeAutosaveRecovery({
8692
+ if (!chunkFJDZ7AEE_js.shouldProbeAutosaveRecovery({
8693
8693
  alreadyChecked: recoveryCheckedRef.current,
8694
8694
  filePath,
8695
8695
  loading,
@@ -8701,7 +8701,7 @@ function useRecoveryDetection(input) {
8701
8701
  }
8702
8702
  recoveryCheckedRef.current = true;
8703
8703
  void (async () => {
8704
- const offer = await chunkYDEEINER_js.probeAutosaveRecovery(filePath);
8704
+ const offer = await chunkFJDZ7AEE_js.probeAutosaveRecovery(filePath);
8705
8705
  if (!offer) {
8706
8706
  return;
8707
8707
  }
@@ -8714,7 +8714,7 @@ function useRecoveryDetection(input) {
8714
8714
  const record = recordRef.current;
8715
8715
  setPrompt(null);
8716
8716
  if (record && onRestore) {
8717
- onRestore(chunkYDEEINER_js.acceptAutosaveRecovery(record));
8717
+ onRestore(chunkFJDZ7AEE_js.acceptAutosaveRecovery(record));
8718
8718
  }
8719
8719
  recordRef.current = null;
8720
8720
  }, [onRestore]);
@@ -8723,7 +8723,7 @@ function useRecoveryDetection(input) {
8723
8723
  setPrompt(null);
8724
8724
  recordRef.current = null;
8725
8725
  if (record) {
8726
- void chunkYDEEINER_js.discardAutosaveRecovery(record);
8726
+ void chunkFJDZ7AEE_js.discardAutosaveRecovery(record);
8727
8727
  }
8728
8728
  }, []);
8729
8729
  return { prompt, restore, discard };
@@ -8762,11 +8762,11 @@ function usePresentationSetup(input) {
8762
8762
  containerRef,
8763
8763
  content,
8764
8764
  onSetMode: (nextMode) => {
8765
- if (mode === "present" && nextMode !== "present" && !chunkYDEEINER_js.mayLeaveSlideShow()) {
8765
+ if (mode === "present" && nextMode !== "present" && !chunkFJDZ7AEE_js.mayLeaveSlideShow()) {
8766
8766
  return;
8767
8767
  }
8768
8768
  if (mode === "present" && nextMode !== "present") {
8769
- chunkYDEEINER_js.stopAllPersistentAudio();
8769
+ chunkFJDZ7AEE_js.stopAllPersistentAudio();
8770
8770
  stopAnimationSound();
8771
8771
  const exitHandler = exitModeHandlerRef.current;
8772
8772
  if (exitHandler) {
@@ -8828,10 +8828,10 @@ function usePresentationSetup(input) {
8828
8828
  onToggleToolbar: () => annotations.setToolbarVisible(!annotations.toolbarVisible),
8829
8829
  onToggleSubtitles,
8830
8830
  onSaveRehearsalTimings: (timings) => {
8831
- setSlides((prev) => chunkYDEEINER_js.applyRehearsalTimings(prev, timings));
8831
+ setSlides((prev) => chunkFJDZ7AEE_js.applyRehearsalTimings(prev, timings));
8832
8832
  history.markDirty();
8833
8833
  },
8834
- loopContinuously: chunkYDEEINER_js.shouldLoopContinuously(presentationProperties),
8834
+ loopContinuously: chunkFJDZ7AEE_js.shouldLoopContinuously(presentationProperties),
8835
8835
  showWithAnimation: presentationProperties.showWithAnimation,
8836
8836
  useTimings: presentationProperties.advanceMode !== "manual",
8837
8837
  endWithBlackSlide
@@ -9032,7 +9032,7 @@ function useEditorOperations(input) {
9032
9032
  const { formatPainterActive, setFormatPainterActive, elementLookup } = state;
9033
9033
  react.useEffect(() => {
9034
9034
  if (formatPainterActive && !prevFormatPainterRef.current && selectedElement) {
9035
- copiedFormatRef.current = chunkYDEEINER_js.copyFormatFromElement(selectedElement);
9035
+ copiedFormatRef.current = chunkFJDZ7AEE_js.copyFormatFromElement(selectedElement);
9036
9036
  } else if (!formatPainterActive) {
9037
9037
  copiedFormatRef.current = null;
9038
9038
  }
@@ -9058,12 +9058,12 @@ function useEditorOperations(input) {
9058
9058
  e.stopPropagation();
9059
9059
  const element = elementLookup.get(elementId);
9060
9060
  if (element) {
9061
- const updated = chunkYDEEINER_js.applyFormatToElement(element, copiedFormatRef.current);
9061
+ const updated = chunkFJDZ7AEE_js.applyFormatToElement(element, copiedFormatRef.current);
9062
9062
  const updates = {};
9063
- if (chunkYDEEINER_js.hasShapeProperties(updated)) {
9063
+ if (chunkFJDZ7AEE_js.hasShapeProperties(updated)) {
9064
9064
  updates.shapeStyle = updated.shapeStyle;
9065
9065
  }
9066
- if (chunkYDEEINER_js.hasTextProperties(updated)) {
9066
+ if (chunkFJDZ7AEE_js.hasTextProperties(updated)) {
9067
9067
  updates.textStyle = updated.textStyle;
9068
9068
  }
9069
9069
  ops.updateElementById(elementId, updates);
@@ -9181,28 +9181,6 @@ function useIOHandlers(input) {
9181
9181
  });
9182
9182
  return { exportHandlers, printHandlers, themeHandlers, propertyHandlers };
9183
9183
  }
9184
- var GOOGLE_FONTS_AVAILABLE = {
9185
- "Atkinson Hyperlegible": "Atkinson+Hyperlegible:wght@400;700",
9186
- Roboto: "Roboto:wght@400;700",
9187
- "Open Sans": "Open+Sans:wght@400;700",
9188
- Lato: "Lato:wght@400;700",
9189
- Montserrat: "Montserrat:wght@400;700",
9190
- Poppins: "Poppins:wght@400;700",
9191
- Raleway: "Raleway:wght@400;700",
9192
- Nunito: "Nunito:wght@400;700",
9193
- "Playfair Display": "Playfair+Display:wght@400;700",
9194
- "Source Sans Pro": "Source+Sans+Pro:wght@400;700",
9195
- "PT Sans": "PT+Sans:wght@400;700",
9196
- Merriweather: "Merriweather:wght@400;700",
9197
- Ubuntu: "Ubuntu:wght@400;700",
9198
- Oswald: "Oswald:wght@400;700",
9199
- "Noto Sans": "Noto+Sans:wght@400;700",
9200
- "Fira Sans": "Fira+Sans:wght@400;700",
9201
- Inter: "Inter:wght@400;700",
9202
- "Work Sans": "Work+Sans:wght@400;700",
9203
- Quicksand: "Quicksand:wght@400;700",
9204
- Cabin: "Cabin:wght@400;700"
9205
- };
9206
9184
  var EMBEDDED_FONTS_STYLE_ID = "pptx-embedded-fonts";
9207
9185
  var GOOGLE_FONTS_LINK_ID = "pptx-google-fonts";
9208
9186
  var SYMBOL_FONTS_STYLE_ID = "pptx-symbol-font-fallback";
@@ -9213,21 +9191,6 @@ var SYMBOL_FONT_FAMILIES = [
9213
9191
  "Symbol",
9214
9192
  "Webdings"
9215
9193
  ];
9216
- function collectReferencedFontFamilies(slides) {
9217
- const families = /* @__PURE__ */ new Set();
9218
- for (const slide of slides) {
9219
- for (const el of slide.elements) {
9220
- if (chunkYDEEINER_js.hasTextProperties(el) && el.textSegments) {
9221
- for (const seg of el.textSegments) {
9222
- if (seg.style.fontFamily) {
9223
- families.add(seg.style.fontFamily);
9224
- }
9225
- }
9226
- }
9227
- }
9228
- }
9229
- return families;
9230
- }
9231
9194
  var FONT_NAME_UNSAFE_CHARS = /["\\\n\r;}<>]/u;
9232
9195
  var FONT_FORMAT_ALLOWED = /* @__PURE__ */ new Set([
9233
9196
  "truetype",
@@ -9286,33 +9249,31 @@ function useFontInjection({ embeddedFonts, slides }) {
9286
9249
  }
9287
9250
  };
9288
9251
  }, [embeddedFonts]);
9289
- const referencedFamilies = react.useMemo(() => collectReferencedFontFamilies(slides), [slides]);
9252
+ const referencedFamilies = react.useMemo(() => chunkFJDZ7AEE_js.collectReferencedFontFamilies(slides), [slides]);
9290
9253
  react.useEffect(() => {
9291
- const embeddedFamilies = new Set(embeddedFonts.map((f) => f.name));
9292
- const googleFamilies = [];
9293
- for (const family of referencedFamilies) {
9294
- if (embeddedFamilies.has(family)) {
9295
- continue;
9254
+ let cancelled = false;
9255
+ void chunkFJDZ7AEE_js.resolveGoogleWebfontHref(slides, embeddedFonts).then((href) => {
9256
+ if (cancelled) {
9257
+ return null;
9296
9258
  }
9297
- if (GOOGLE_FONTS_AVAILABLE[family]) {
9298
- googleFamilies.push(family);
9259
+ if (!href || document.getElementById(GOOGLE_FONTS_LINK_ID)) {
9260
+ return null;
9299
9261
  }
9300
- }
9301
- if (googleFamilies.length === 0) {
9302
- return;
9303
- }
9304
- const linkEl = document.createElement("link");
9305
- linkEl.id = GOOGLE_FONTS_LINK_ID;
9306
- linkEl.rel = "stylesheet";
9307
- linkEl.href = `https://fonts.googleapis.com/css2?${googleFamilies.map((f) => `family=${encodeURIComponent(GOOGLE_FONTS_AVAILABLE[f])}`).join("&")}&display=swap`;
9308
- document.head.appendChild(linkEl);
9262
+ const linkEl = document.createElement("link");
9263
+ linkEl.id = GOOGLE_FONTS_LINK_ID;
9264
+ linkEl.rel = "stylesheet";
9265
+ linkEl.href = href;
9266
+ document.head.appendChild(linkEl);
9267
+ return href;
9268
+ });
9309
9269
  return () => {
9270
+ cancelled = true;
9310
9271
  const existing = document.getElementById(GOOGLE_FONTS_LINK_ID);
9311
9272
  if (existing) {
9312
9273
  document.head.removeChild(existing);
9313
9274
  }
9314
9275
  };
9315
- }, [embeddedFonts, referencedFamilies]);
9276
+ }, [embeddedFonts, slides]);
9316
9277
  react.useEffect(() => {
9317
9278
  const neededSymbolFonts = SYMBOL_FONT_FAMILIES.filter((f) => referencedFamilies.has(f));
9318
9279
  if (neededSymbolFonts.length === 0) {
@@ -9467,7 +9428,7 @@ function useKeyboardShortcuts(input) {
9467
9428
  inputRef.current = input;
9468
9429
  const handleKeyDown = react.useCallback((e) => {
9469
9430
  const current = inputRef.current;
9470
- const { action, dx, dy } = chunkYDEEINER_js.mapEditorKey(e, {
9431
+ const { action, dx, dy } = chunkFJDZ7AEE_js.mapEditorKey(e, {
9471
9432
  canEdit: current.canEdit,
9472
9433
  // The Slide Master view is an editing surface, not a viewing one.
9473
9434
  // Gating on `mode !== 'edit'` alone made `mapEditorKey` return
@@ -9480,7 +9441,7 @@ function useKeyboardShortcuts(input) {
9480
9441
  hasSelection: current.hasSelection,
9481
9442
  isEditingText: Boolean(current.inlineEditingElementId || current.tableEditorState?.isEditing),
9482
9443
  isDrawing: current.activeTool !== "select",
9483
- isTextInputTarget: chunkYDEEINER_js.isEditorTextInputTarget(e.target)
9444
+ isTextInputTarget: chunkFJDZ7AEE_js.isEditorTextInputTarget(e.target)
9484
9445
  });
9485
9446
  if (action === null) {
9486
9447
  return;
@@ -9791,7 +9752,7 @@ function useViewerIntegration(input) {
9791
9752
  return zoom.scale;
9792
9753
  },
9793
9754
  setZoom(level) {
9794
- zoom.setScale(chunkYDEEINER_js.clampZoomScale(level));
9755
+ zoom.setScale(chunkFJDZ7AEE_js.clampZoomScale(level));
9795
9756
  },
9796
9757
  zoomIn() {
9797
9758
  zoom.handleZoomIn();
@@ -10007,7 +9968,7 @@ function useReducedMotion() {
10007
9968
  }
10008
9969
  function useViewerOptions() {
10009
9970
  const storeRef = react.useRef(null);
10010
- storeRef.current ??= chunkYDEEINER_js.createViewerOptionsStore();
9971
+ storeRef.current ??= chunkFJDZ7AEE_js.createViewerOptionsStore();
10011
9972
  const store = storeRef.current;
10012
9973
  const options = react.useSyncExternalStore(
10013
9974
  (onStoreChange) => store.subscribe(onStoreChange),
@@ -10016,9 +9977,9 @@ function useViewerOptions() {
10016
9977
  );
10017
9978
  return { optionsStore: store, options };
10018
9979
  }
10019
- var KNOWN_TAB_IDS = new Set(chunkYDEEINER_js.TOOLBAR_TABS.map((tab) => tab.id));
9980
+ var KNOWN_TAB_IDS = new Set(chunkFJDZ7AEE_js.TOOLBAR_TABS.map((tab) => tab.id));
10020
9981
  function computeToolbarVisibility(hiddenActions, hiddenTabIds = []) {
10021
- const isHidden = (id) => chunkYDEEINER_js.isActionHidden(id, hiddenActions);
9982
+ const isHidden = (id) => chunkFJDZ7AEE_js.isActionHidden(id, hiddenActions);
10022
9983
  const userHidden = new Set(hiddenTabIds);
10023
9984
  userHidden.delete("file");
10024
9985
  const isTabVisible = (id) => !KNOWN_TAB_IDS.has(id) || !isHidden(id) && !userHidden.has(id);
@@ -10110,12 +10071,12 @@ function useYjsDocumentSync({
10110
10071
  return;
10111
10072
  }
10112
10073
  try {
10113
- const handler = new chunkYDEEINER_js.PptxHandler();
10074
+ const handler = new chunkFJDZ7AEE_js.PptxHandler();
10114
10075
  await handler.load(sourceBytes.buffer);
10115
- const currentSlides = chunkYDEEINER_js.readSlidesFromYDoc(
10076
+ const currentSlides = chunkFJDZ7AEE_js.readSlidesFromYDoc(
10116
10077
  doc
10117
10078
  );
10118
- const slidesToSave = chunkYDEEINER_js.buildSaveSlides(currentSlides, templateElementsBySlideId);
10079
+ const slidesToSave = chunkFJDZ7AEE_js.buildSaveSlides(currentSlides, templateElementsBySlideId);
10119
10080
  const bytes = await handler.save(slidesToSave);
10120
10081
  config.onWriteBack(bytes);
10121
10082
  } catch {
@@ -10130,10 +10091,10 @@ function useYjsDocumentSync({
10130
10091
  if (!doc || !isConnected) {
10131
10092
  return;
10132
10093
  }
10133
- const docSlides = chunkYDEEINER_js.readSlidesFromYDoc(
10094
+ const docSlides = chunkFJDZ7AEE_js.readSlidesFromYDoc(
10134
10095
  doc
10135
10096
  );
10136
- if (!chunkYDEEINER_js.shouldRoomSlidesReplaceLoad(loadOrigin, docSlides.length)) {
10097
+ if (!chunkFJDZ7AEE_js.shouldRoomSlidesReplaceLoad(loadOrigin, docSlides.length)) {
10137
10098
  return;
10138
10099
  }
10139
10100
  lastSyncedRef.current = JSON.stringify(docSlides);
@@ -10152,11 +10113,11 @@ function useYjsDocumentSync({
10152
10113
  lastSyncedRef.current = serialized;
10153
10114
  void (async () => {
10154
10115
  const factories = await getFactories();
10155
- chunkYDEEINER_js.reconcileSlidesInYDoc(
10116
+ chunkFJDZ7AEE_js.reconcileSlidesInYDoc(
10156
10117
  slides,
10157
10118
  doc,
10158
10119
  factories,
10159
- chunkYDEEINER_js.LOCAL_SYNC_ORIGIN
10120
+ chunkFJDZ7AEE_js.LOCAL_SYNC_ORIGIN
10160
10121
  );
10161
10122
  scheduleWriteBack();
10162
10123
  })();
@@ -10170,10 +10131,10 @@ function useYjsDocumentSync({
10170
10131
  return;
10171
10132
  }
10172
10133
  const handleChange = (_events, transaction) => {
10173
- if (transaction?.origin === chunkYDEEINER_js.LOCAL_SYNC_ORIGIN) {
10134
+ if (transaction?.origin === chunkFJDZ7AEE_js.LOCAL_SYNC_ORIGIN) {
10174
10135
  return;
10175
10136
  }
10176
- const remoteSlides = chunkYDEEINER_js.readSlidesFromYDoc(
10137
+ const remoteSlides = chunkFJDZ7AEE_js.readSlidesFromYDoc(
10177
10138
  doc
10178
10139
  );
10179
10140
  if (remoteSlides.length === 0) {
@@ -10189,7 +10150,7 @@ function useYjsDocumentSync({
10189
10150
  isApplyingRemoteRef.current = false;
10190
10151
  scheduleWriteBack();
10191
10152
  };
10192
- const unobserve = chunkYDEEINER_js.observeYDocSlides(
10153
+ const unobserve = chunkFJDZ7AEE_js.observeYDocSlides(
10193
10154
  doc,
10194
10155
  handleChange
10195
10156
  );
@@ -10227,7 +10188,7 @@ function useBroadcastFollower({
10227
10188
  if (!broadcaster) {
10228
10189
  return;
10229
10190
  }
10230
- if (!chunkYDEEINER_js.shouldAutoFollowBroadcaster({
10191
+ if (!chunkFJDZ7AEE_js.shouldAutoFollowBroadcaster({
10231
10192
  localRole: collab.config.role,
10232
10193
  broadcasterRole: broadcaster.role
10233
10194
  })) {
@@ -10398,7 +10359,7 @@ function subscribeTouchCapability(callback) {
10398
10359
  function useIsMobile() {
10399
10360
  const isTouchDevice = react.useSyncExternalStore(
10400
10361
  subscribeTouchCapability,
10401
- chunkYDEEINER_js.detectTouchDevice,
10362
+ chunkFJDZ7AEE_js.detectTouchDevice,
10402
10363
  () => false
10403
10364
  // server snapshot
10404
10365
  );
@@ -10408,7 +10369,7 @@ function useIsMobile() {
10408
10369
  const [viewportHeight, setViewportHeight] = react.useState(
10409
10370
  () => typeof window === "undefined" ? 768 : window.innerHeight
10410
10371
  );
10411
- const [orientation, setOrientation] = react.useState(chunkYDEEINER_js.detectOrientation);
10372
+ const [orientation, setOrientation] = react.useState(chunkFJDZ7AEE_js.detectOrientation);
10412
10373
  const [isVirtualKeyboardOpen, setIsVirtualKeyboardOpen] = react.useState(false);
10413
10374
  const [initialViewportHeight] = react.useState(
10414
10375
  () => typeof window !== "undefined" ? window.innerHeight : 800
@@ -10429,7 +10390,7 @@ function useIsMobile() {
10429
10390
  return;
10430
10391
  }
10431
10392
  const handleOrientationChange = () => {
10432
- setOrientation(chunkYDEEINER_js.detectOrientation());
10393
+ setOrientation(chunkFJDZ7AEE_js.detectOrientation());
10433
10394
  };
10434
10395
  if (screen.orientation) {
10435
10396
  screen.orientation.addEventListener("change", handleOrientationChange);
@@ -10459,7 +10420,7 @@ function useIsMobile() {
10459
10420
  window.addEventListener("resize", handleResize);
10460
10421
  return () => window.removeEventListener("resize", handleResize);
10461
10422
  }, [isTouchDevice, initialViewportHeight]);
10462
- const { isMobile, isTablet, isDesktop } = chunkYDEEINER_js.deriveViewportBreakpoints(
10423
+ const { isMobile, isTablet, isDesktop } = chunkFJDZ7AEE_js.deriveViewportBreakpoints(
10463
10424
  viewportWidth,
10464
10425
  viewportHeight,
10465
10426
  isTouchDevice
@@ -10490,10 +10451,10 @@ function useTouchGestures(input) {
10490
10451
  if (!el || !enabled) {
10491
10452
  return;
10492
10453
  }
10493
- const recognizer = chunkYDEEINER_js.createTouchGestureRecognizer({
10454
+ const recognizer = chunkFJDZ7AEE_js.createTouchGestureRecognizer({
10494
10455
  getScale: () => scaleRef.current,
10495
- minScale: chunkYDEEINER_js.MIN_ZOOM_SCALE,
10496
- maxScale: chunkYDEEINER_js.MAX_ZOOM_SCALE,
10456
+ minScale: chunkFJDZ7AEE_js.MIN_ZOOM_SCALE,
10457
+ maxScale: chunkFJDZ7AEE_js.MAX_ZOOM_SCALE,
10497
10458
  callbacks: {
10498
10459
  onPinchZoom: (newScale) => callbacksRef.current.onPinchZoom?.(newScale),
10499
10460
  onSwipe: (direction) => callbacksRef.current.onSwipe?.(direction),
@@ -10533,7 +10494,7 @@ function scrollFocusedIntoView(keyboardInset) {
10533
10494
  return;
10534
10495
  }
10535
10496
  const rect = active.getBoundingClientRect();
10536
- const delta = chunkYDEEINER_js.computeScrollDelta(
10497
+ const delta = chunkFJDZ7AEE_js.computeScrollDelta(
10537
10498
  { top: rect.top, bottom: rect.bottom },
10538
10499
  window.innerHeight,
10539
10500
  keyboardInset
@@ -10553,8 +10514,8 @@ function useKeyboardInsets(enabled = true) {
10553
10514
  return;
10554
10515
  }
10555
10516
  const update = () => {
10556
- const metrics = chunkYDEEINER_js.readViewportMetrics(window);
10557
- const inset = metrics ? chunkYDEEINER_js.computeKeyboardInset(metrics) : 0;
10517
+ const metrics = chunkFJDZ7AEE_js.readViewportMetrics(window);
10518
+ const inset = metrics ? chunkFJDZ7AEE_js.computeKeyboardInset(metrics) : 0;
10558
10519
  setKeyboardInset(inset);
10559
10520
  if (inset > 0) {
10560
10521
  window.requestAnimationFrame(() => scrollFocusedIntoView(inset));
@@ -10565,8 +10526,8 @@ function useKeyboardInsets(enabled = true) {
10565
10526
  vv.addEventListener("scroll", update);
10566
10527
  const onFocusIn = () => {
10567
10528
  window.requestAnimationFrame(() => {
10568
- const metrics = chunkYDEEINER_js.readViewportMetrics(window);
10569
- const inset = metrics ? chunkYDEEINER_js.computeKeyboardInset(metrics) : 0;
10529
+ const metrics = chunkFJDZ7AEE_js.readViewportMetrics(window);
10530
+ const inset = metrics ? chunkFJDZ7AEE_js.computeKeyboardInset(metrics) : 0;
10570
10531
  if (inset > 0) {
10571
10532
  scrollFocusedIntoView(inset);
10572
10533
  }
@@ -10579,7 +10540,7 @@ function useKeyboardInsets(enabled = true) {
10579
10540
  document.removeEventListener("focusin", onFocusIn);
10580
10541
  };
10581
10542
  }, [enabled]);
10582
- return { keyboardInset, isKeyboardOpen: chunkYDEEINER_js.isKeyboardOpen(keyboardInset) };
10543
+ return { keyboardInset, isKeyboardOpen: chunkFJDZ7AEE_js.isKeyboardOpen(keyboardInset) };
10583
10544
  }
10584
10545
 
10585
10546
  // src/viewer/hooks/useViewerBuildingBlocks-canvas-props.ts
@@ -10608,21 +10569,21 @@ function buildCanvasProps(input) {
10608
10569
  } = input;
10609
10570
  const effectiveSlide = mode === "master" ? masterPseudoSlide : activeSlide;
10610
10571
  const effectiveTemplateElements = mode === "master" ? s.activeLayout ? s.activeMaster?.elements ?? [] : [] : templateElements;
10611
- const fieldContext = chunkYDEEINER_js.buildFieldSubstitutionContext({
10572
+ const fieldContext = chunkFJDZ7AEE_js.buildFieldSubstitutionContext({
10612
10573
  headerFooter: s.headerFooter,
10613
10574
  customProperties: s.customProperties,
10614
10575
  slide: activeSlide
10615
10576
  });
10616
10577
  const tableStyleContext = s.theme || s.tableStyleMap ? { theme: s.theme, tableStyleMap: s.tableStyleMap } : void 0;
10617
10578
  const openExternalUrl = (url) => {
10618
- if (chunkYDEEINER_js.shouldConfirmExternalHyperlink(viewerOptions, url) && !window.confirm(buildHyperlinkConfirmMessage(url))) {
10579
+ if (chunkFJDZ7AEE_js.shouldConfirmExternalHyperlink(viewerOptions, url) && !window.confirm(buildHyperlinkConfirmMessage(url))) {
10619
10580
  return;
10620
10581
  }
10621
- chunkYDEEINER_js.safeOpenUrl(url);
10582
+ chunkFJDZ7AEE_js.safeOpenUrl(url);
10622
10583
  };
10623
10584
  const handleActionClick = (_elementId, action) => {
10624
10585
  if (mode === "present") {
10625
- const resolved = chunkYDEEINER_js.resolvePresentationAction(action, { slideCount: slides.length });
10586
+ const resolved = chunkFJDZ7AEE_js.resolvePresentationAction(action, { slideCount: slides.length });
10626
10587
  if (resolved.intent.kind === "openUrl") {
10627
10588
  openExternalUrl(resolved.intent.url);
10628
10589
  return;
@@ -10633,9 +10594,9 @@ function buildCanvasProps(input) {
10633
10594
  }
10634
10595
  };
10635
10596
  const handleHyperlinkClick = (url) => {
10636
- if (chunkYDEEINER_js.isPpactionUrl(url)) {
10597
+ if (chunkFJDZ7AEE_js.isPpactionUrl(url)) {
10637
10598
  if (mode === "present") {
10638
- const parsed = chunkYDEEINER_js.parsePpactionUrl(url);
10599
+ const parsed = chunkFJDZ7AEE_js.parsePpactionUrl(url);
10639
10600
  if (parsed) {
10640
10601
  presentation.handlePresentationAction({
10641
10602
  action: parsed.action,
@@ -10741,7 +10702,7 @@ function buildCanvasProps(input) {
10741
10702
 
10742
10703
  // src/viewer/hooks/useScopedLayoutOptions.ts
10743
10704
  function scopeLayoutOptionsToActiveSlide(options, activeSlide) {
10744
- return chunkYDEEINER_js.scopeLayoutOptionsToSlide(options, activeSlide?.layoutPath);
10705
+ return chunkFJDZ7AEE_js.scopeLayoutOptionsToSlide(options, activeSlide?.layoutPath);
10745
10706
  }
10746
10707
 
10747
10708
  // src/viewer/hooks/useViewerBuildingBlocks-toolbar-handlers.ts
@@ -10754,7 +10715,7 @@ function buildToolbarAnimationHandlers(input) {
10754
10715
  const current = activeSlide.animations ?? [];
10755
10716
  if (group === "motionPath") {
10756
10717
  propertyHandlers.handleUpdateSlide({
10757
- animations: chunkYDEEINER_js.applyMotionPathPreset(current, selectedElement.id, preset)
10718
+ animations: chunkFJDZ7AEE_js.applyMotionPathPreset(current, selectedElement.id, preset)
10758
10719
  });
10759
10720
  return;
10760
10721
  }
@@ -10948,7 +10909,7 @@ function buildToolbarProps(input) {
10948
10909
  onOpenFile,
10949
10910
  onOpenRecentFile,
10950
10911
  onCreatePresentation: (templateId) => {
10951
- s.setSlides(chunkYDEEINER_js.createBackstagePresentation(templateId));
10912
+ s.setSlides(chunkFJDZ7AEE_js.createBackstagePresentation(templateId));
10952
10913
  s.setActiveSlideIndex(0);
10953
10914
  s.setSelectedElementId(null);
10954
10915
  s.setSelectedElementIds([]);
@@ -10977,7 +10938,7 @@ function buildToolbarProps(input) {
10977
10938
  loadLayoutPreviews: input.loadLayoutPreviews,
10978
10939
  onInsertSlideFromLayout: slideOps.handleInsertSlideFromLayout,
10979
10940
  onInsertSlideFromTemplate: slideOps.handleInsertSlideFromTemplate,
10980
- templateScheme: chunkYDEEINER_js.templateSchemeFromTheme(s.theme?.colorScheme),
10941
+ templateScheme: chunkFJDZ7AEE_js.templateSchemeFromTheme(s.theme?.colorScheme),
10981
10942
  customShows: s.customShows,
10982
10943
  activeCustomShowId: s.activeCustomShowId,
10983
10944
  onSetActiveCustomShowId: s.setActiveCustomShowId,
@@ -11018,7 +10979,7 @@ function buildToolbarProps(input) {
11018
10979
  isCommentsPanelOpen: s.isInspectorPaneOpen,
11019
10980
  slideCommentCount: activeSlide?.comments?.length ?? 0,
11020
10981
  formatPainterActive: s.formatPainterActive,
11021
- canActivateFormatPainter: chunkYDEEINER_js.hasCopyableFormat(selectedElement),
10982
+ canActivateFormatPainter: chunkFJDZ7AEE_js.hasCopyableFormat(selectedElement),
11022
10983
  onToggleFormatPainter: () => s.setFormatPainterActive((p) => !p),
11023
10984
  isSelectionPaneOpen: s.isSelectionPaneOpen,
11024
10985
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -11092,7 +11053,7 @@ function useViewerBuildingBlocksCore(input) {
11092
11053
  headerFooter: state.headerFooter,
11093
11054
  loading,
11094
11055
  error,
11095
- maxHistoryEntries: chunkYDEEINER_js.resolveHistoryDepth(viewerOptions),
11056
+ maxHistoryEntries: chunkFJDZ7AEE_js.resolveHistoryDepth(viewerOptions),
11096
11057
  hasActivePointerInteraction,
11097
11058
  pointerCommitNonce: state.pointerCommitNonce,
11098
11059
  setSlides: state.setSlides,
@@ -11157,7 +11118,7 @@ function useViewerBuildingBlocksCore(input) {
11157
11118
  gridSpacingPx,
11158
11119
  // Multiplied against the pre-existing 2x baseline; see the matching
11159
11120
  // comment in `PowerPointViewer.tsx`.
11160
- imageExportScale: 2 * chunkYDEEINER_js.resolveImageResolutionScale(viewerOptions),
11121
+ imageExportScale: 2 * chunkFJDZ7AEE_js.resolveImageResolutionScale(viewerOptions),
11161
11122
  viewerOptions
11162
11123
  };
11163
11124
  }
@@ -11327,7 +11288,7 @@ function useViewerBuildingBlocks(input) {
11327
11288
  }, [incomingContent]);
11328
11289
  const onOpenFile = react.useCallback(() => {
11329
11290
  void (async () => {
11330
- const picked = await chunkYDEEINER_js.openPptxFile();
11291
+ const picked = await chunkFJDZ7AEE_js.openPptxFile();
11331
11292
  if (picked) {
11332
11293
  setContent(picked.buffer);
11333
11294
  }
@@ -11335,7 +11296,7 @@ function useViewerBuildingBlocks(input) {
11335
11296
  }, []);
11336
11297
  const onOpenRecentFile = react.useCallback((key) => {
11337
11298
  void (async () => {
11338
- const bytes = await chunkYDEEINER_js.readBackstageRecentFile(key);
11299
+ const bytes = await chunkFJDZ7AEE_js.readBackstageRecentFile(key);
11339
11300
  if (bytes) {
11340
11301
  setContent(bytes);
11341
11302
  }