pptx-react-viewer 2.16.2 → 2.16.4

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 (168) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/{AiChatPanel-WJXPCHQK.mjs → AiChatPanel-7DDN4QUA.mjs} +4 -4
  3. package/dist/AiChatPanel-7DDN4QUA.mjs.br +0 -0
  4. package/dist/AiChatPanel-7DDN4QUA.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-MCGNCS7Q.js → AiChatPanel-KEORKCTT.js} +23 -23
  6. package/dist/AiChatPanel-KEORKCTT.js.br +0 -0
  7. package/dist/AiChatPanel-KEORKCTT.js.gz +0 -0
  8. package/dist/{Model3DScene-IXW2AKAU.mjs → Model3DScene-DEAQMMUS.mjs} +1 -1
  9. package/dist/{Model3DScene-IXW2AKAU.mjs.br → Model3DScene-DEAQMMUS.mjs.br} +0 -0
  10. package/dist/Model3DScene-DEAQMMUS.mjs.gz +0 -0
  11. package/dist/{Model3DScene-Q2DTGVQ7.js → Model3DScene-SBUYEWHL.js} +2 -2
  12. package/dist/Model3DScene-SBUYEWHL.js.br +0 -0
  13. package/dist/Model3DScene-SBUYEWHL.js.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-AD43LAOO.js → SurfaceChart3DScene-I5D54YQ3.js} +2 -2
  15. package/dist/SurfaceChart3DScene-I5D54YQ3.js.br +0 -0
  16. package/dist/SurfaceChart3DScene-I5D54YQ3.js.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-MODEHQ6G.mjs → SurfaceChart3DScene-TXGS2PBK.mjs} +1 -1
  18. package/dist/{SurfaceChart3DScene-MODEHQ6G.mjs.br → SurfaceChart3DScene-TXGS2PBK.mjs.br} +0 -0
  19. package/dist/SurfaceChart3DScene-TXGS2PBK.mjs.gz +0 -0
  20. package/dist/{audience-content-store-DaABTAcQ.d.ts → audience-content-store-BvqKy7Hf.d.ts} +2 -2
  21. package/dist/{audience-content-store-DaABTAcQ.d.ts.map → audience-content-store-BvqKy7Hf.d.ts.map} +1 -1
  22. package/dist/{chunk-MDFCBYEM.mjs → chunk-23WSCMWN.mjs} +133 -68
  23. package/dist/chunk-23WSCMWN.mjs.br +0 -0
  24. package/dist/chunk-23WSCMWN.mjs.gz +0 -0
  25. package/dist/{chunk-5YV26HMJ.mjs → chunk-5IUEPQTK.mjs} +1 -0
  26. package/dist/chunk-5IUEPQTK.mjs.br +0 -0
  27. package/dist/chunk-5IUEPQTK.mjs.gz +0 -0
  28. package/dist/{chunk-3ISYPBSX.js → chunk-DVZF4ARG.js} +1 -0
  29. package/dist/chunk-DVZF4ARG.js.br +0 -0
  30. package/dist/chunk-DVZF4ARG.js.gz +0 -0
  31. package/dist/{chunk-OYF6ISXZ.mjs → chunk-DWIIYEOG.mjs} +4 -4
  32. package/dist/chunk-DWIIYEOG.mjs.br +0 -0
  33. package/dist/{chunk-OYF6ISXZ.mjs.gz → chunk-DWIIYEOG.mjs.gz} +0 -0
  34. package/dist/{chunk-JV6DI7AK.js → chunk-FQ3FTNKV.js} +1062 -1062
  35. package/dist/chunk-FQ3FTNKV.js.br +0 -0
  36. package/dist/chunk-FQ3FTNKV.js.gz +0 -0
  37. package/dist/{chunk-3OYWYONZ.mjs → chunk-FXGO5KLU.mjs} +3 -3
  38. package/dist/chunk-FXGO5KLU.mjs.br +0 -0
  39. package/dist/chunk-FXGO5KLU.mjs.gz +0 -0
  40. package/dist/{chunk-LDD2UVCV.mjs → chunk-GSAOP4Z4.mjs} +10 -10
  41. package/dist/chunk-GSAOP4Z4.mjs.br +0 -0
  42. package/dist/chunk-GSAOP4Z4.mjs.gz +0 -0
  43. package/dist/{chunk-CIK6XUOH.js → chunk-GZ2V3PWN.js} +3 -3
  44. package/dist/chunk-GZ2V3PWN.js.br +0 -0
  45. package/dist/chunk-GZ2V3PWN.js.gz +0 -0
  46. package/dist/{chunk-P6KM7RO5.js → chunk-HAQDKQ52.js} +266 -266
  47. package/dist/chunk-HAQDKQ52.js.br +0 -0
  48. package/dist/chunk-HAQDKQ52.js.gz +0 -0
  49. package/dist/{chunk-QI2JCXTH.mjs → chunk-J4QZVO3S.mjs} +1 -1
  50. package/dist/chunk-J4QZVO3S.mjs.br +0 -0
  51. package/dist/chunk-J4QZVO3S.mjs.gz +0 -0
  52. package/dist/{chunk-UWYHBCLM.mjs → chunk-LLTUDPRE.mjs} +18 -8
  53. package/dist/chunk-LLTUDPRE.mjs.br +0 -0
  54. package/dist/chunk-LLTUDPRE.mjs.gz +0 -0
  55. package/dist/{chunk-4GX347MG.js → chunk-MZ47MV52.js} +133 -68
  56. package/dist/chunk-MZ47MV52.js.br +0 -0
  57. package/dist/chunk-MZ47MV52.js.gz +0 -0
  58. package/dist/{chunk-PYV6FIYK.js → chunk-NB7M4XBG.js} +38 -38
  59. package/dist/chunk-NB7M4XBG.js.br +0 -0
  60. package/dist/chunk-NB7M4XBG.js.gz +0 -0
  61. package/dist/{chunk-Z4CS2ZYN.mjs → chunk-PLBS7OL2.mjs} +3 -3
  62. package/dist/chunk-PLBS7OL2.mjs.br +0 -0
  63. package/dist/chunk-PLBS7OL2.mjs.gz +0 -0
  64. package/dist/{chunk-NKE64XVV.js → chunk-RBQUSVYR.js} +361 -351
  65. package/dist/chunk-RBQUSVYR.js.br +0 -0
  66. package/dist/chunk-RBQUSVYR.js.gz +0 -0
  67. package/dist/{chunk-MMFM7JRT.js → chunk-ZYQT7I5C.js} +4 -4
  68. package/dist/chunk-ZYQT7I5C.js.br +0 -0
  69. package/dist/chunk-ZYQT7I5C.js.gz +0 -0
  70. package/dist/i18n.js +4 -4
  71. package/dist/i18n.js.br +0 -0
  72. package/dist/i18n.js.gz +0 -0
  73. package/dist/i18n.mjs +1 -1
  74. package/dist/i18n.mjs.br +0 -0
  75. package/dist/i18n.mjs.gz +0 -0
  76. package/dist/index.js +41 -41
  77. package/dist/index.js.br +0 -0
  78. package/dist/index.js.gz +0 -0
  79. package/dist/index.mjs +6 -6
  80. package/dist/index.mjs.br +0 -0
  81. package/dist/index.mjs.gz +0 -0
  82. package/dist/internals.d.ts +30 -1
  83. package/dist/internals.d.ts.map +1 -1
  84. package/dist/internals.js +79 -79
  85. package/dist/internals.js.br +0 -0
  86. package/dist/internals.js.gz +0 -0
  87. package/dist/internals.mjs +4 -4
  88. package/dist/internals.mjs.br +0 -0
  89. package/dist/internals.mjs.gz +0 -0
  90. package/dist/viewer/index.d.ts +1 -1
  91. package/dist/viewer/index.js +27 -27
  92. package/dist/viewer/index.js.br +0 -0
  93. package/dist/viewer/index.js.gz +0 -0
  94. package/dist/viewer/index.mjs +6 -6
  95. package/dist/viewer/index.mjs.br +0 -0
  96. package/dist/viewer/index.mjs.gz +0 -0
  97. package/dist/{y-webrtc-DGVURJIF.mjs → y-webrtc-7DLWG3LJ.mjs} +5 -5
  98. package/dist/y-webrtc-7DLWG3LJ.mjs.br +0 -0
  99. package/dist/y-webrtc-7DLWG3LJ.mjs.gz +0 -0
  100. package/dist/{y-webrtc-YN53KW3J.js → y-webrtc-TAJBJIKH.js} +107 -107
  101. package/dist/y-webrtc-TAJBJIKH.js.br +0 -0
  102. package/dist/y-webrtc-TAJBJIKH.js.gz +0 -0
  103. package/dist/{y-websocket-P5LTAJ5T.mjs → y-websocket-DCTJ76B7.mjs} +4 -4
  104. package/dist/y-websocket-DCTJ76B7.mjs.br +0 -0
  105. package/dist/y-websocket-DCTJ76B7.mjs.gz +0 -0
  106. package/dist/{y-websocket-HZCIQLM6.js → y-websocket-DQLOWGV6.js} +81 -81
  107. package/dist/y-websocket-DQLOWGV6.js.br +0 -0
  108. package/dist/y-websocket-DQLOWGV6.js.gz +0 -0
  109. package/dist/{yjs-FKGX4QHS.mjs → yjs-4ED7E5CZ.mjs} +1 -1
  110. package/dist/yjs-4ED7E5CZ.mjs.br +0 -0
  111. package/dist/yjs-4ED7E5CZ.mjs.gz +0 -0
  112. package/dist/{yjs-HBLSEMHP.js → yjs-OWUA3UHD.js} +104 -104
  113. package/dist/yjs-OWUA3UHD.js.br +0 -0
  114. package/dist/yjs-OWUA3UHD.js.gz +0 -0
  115. package/package.json +7 -7
  116. package/dist/AiChatPanel-MCGNCS7Q.js.br +0 -0
  117. package/dist/AiChatPanel-MCGNCS7Q.js.gz +0 -0
  118. package/dist/AiChatPanel-WJXPCHQK.mjs.br +0 -0
  119. package/dist/AiChatPanel-WJXPCHQK.mjs.gz +0 -0
  120. package/dist/Model3DScene-IXW2AKAU.mjs.gz +0 -0
  121. package/dist/Model3DScene-Q2DTGVQ7.js.br +0 -0
  122. package/dist/Model3DScene-Q2DTGVQ7.js.gz +0 -0
  123. package/dist/SurfaceChart3DScene-AD43LAOO.js.br +0 -0
  124. package/dist/SurfaceChart3DScene-AD43LAOO.js.gz +0 -0
  125. package/dist/SurfaceChart3DScene-MODEHQ6G.mjs.gz +0 -0
  126. package/dist/chunk-3ISYPBSX.js.br +0 -0
  127. package/dist/chunk-3ISYPBSX.js.gz +0 -0
  128. package/dist/chunk-3OYWYONZ.mjs.br +0 -0
  129. package/dist/chunk-3OYWYONZ.mjs.gz +0 -0
  130. package/dist/chunk-4GX347MG.js.br +0 -0
  131. package/dist/chunk-4GX347MG.js.gz +0 -0
  132. package/dist/chunk-5YV26HMJ.mjs.br +0 -0
  133. package/dist/chunk-5YV26HMJ.mjs.gz +0 -0
  134. package/dist/chunk-CIK6XUOH.js.br +0 -0
  135. package/dist/chunk-CIK6XUOH.js.gz +0 -0
  136. package/dist/chunk-JV6DI7AK.js.br +0 -0
  137. package/dist/chunk-JV6DI7AK.js.gz +0 -0
  138. package/dist/chunk-LDD2UVCV.mjs.br +0 -0
  139. package/dist/chunk-LDD2UVCV.mjs.gz +0 -0
  140. package/dist/chunk-MDFCBYEM.mjs.br +0 -0
  141. package/dist/chunk-MDFCBYEM.mjs.gz +0 -0
  142. package/dist/chunk-MMFM7JRT.js.br +0 -0
  143. package/dist/chunk-MMFM7JRT.js.gz +0 -0
  144. package/dist/chunk-NKE64XVV.js.br +0 -0
  145. package/dist/chunk-NKE64XVV.js.gz +0 -0
  146. package/dist/chunk-OYF6ISXZ.mjs.br +0 -0
  147. package/dist/chunk-P6KM7RO5.js.br +0 -0
  148. package/dist/chunk-P6KM7RO5.js.gz +0 -0
  149. package/dist/chunk-PYV6FIYK.js.br +0 -0
  150. package/dist/chunk-PYV6FIYK.js.gz +0 -0
  151. package/dist/chunk-QI2JCXTH.mjs.br +0 -0
  152. package/dist/chunk-QI2JCXTH.mjs.gz +0 -0
  153. package/dist/chunk-UWYHBCLM.mjs.br +0 -0
  154. package/dist/chunk-UWYHBCLM.mjs.gz +0 -0
  155. package/dist/chunk-Z4CS2ZYN.mjs.br +0 -0
  156. package/dist/chunk-Z4CS2ZYN.mjs.gz +0 -0
  157. package/dist/y-webrtc-DGVURJIF.mjs.br +0 -0
  158. package/dist/y-webrtc-DGVURJIF.mjs.gz +0 -0
  159. package/dist/y-webrtc-YN53KW3J.js.br +0 -0
  160. package/dist/y-webrtc-YN53KW3J.js.gz +0 -0
  161. package/dist/y-websocket-HZCIQLM6.js.br +0 -0
  162. package/dist/y-websocket-HZCIQLM6.js.gz +0 -0
  163. package/dist/y-websocket-P5LTAJ5T.mjs.br +0 -0
  164. package/dist/y-websocket-P5LTAJ5T.mjs.gz +0 -0
  165. package/dist/yjs-FKGX4QHS.mjs.br +0 -0
  166. package/dist/yjs-FKGX4QHS.mjs.gz +0 -0
  167. package/dist/yjs-HBLSEMHP.js.br +0 -0
  168. package/dist/yjs-HBLSEMHP.js.gz +0 -0
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkP6KM7RO5_js = require('./chunk-P6KM7RO5.js');
4
- var chunk3ISYPBSX_js = require('./chunk-3ISYPBSX.js');
5
- var chunk4GX347MG_js = require('./chunk-4GX347MG.js');
3
+ var chunkHAQDKQ52_js = require('./chunk-HAQDKQ52.js');
4
+ var chunkDVZF4ARG_js = require('./chunk-DVZF4ARG.js');
5
+ var chunkMZ47MV52_js = require('./chunk-MZ47MV52.js');
6
6
  var react = require('react');
7
7
  var JSZip = require('jszip');
8
8
  var reactI18next = require('react-i18next');
@@ -14,7 +14,7 @@ var JSZip__default = /*#__PURE__*/_interopDefault(JSZip);
14
14
  function useVirtualizedSlides({
15
15
  totalItems,
16
16
  itemHeight,
17
- overscan = chunk4GX347MG_js.DEFAULT_VIRTUAL_OVERSCAN
17
+ overscan = chunkMZ47MV52_js.DEFAULT_VIRTUAL_OVERSCAN
18
18
  }) {
19
19
  const scrollContainerRef = react.useRef(null);
20
20
  const [scrollTop, setScrollTop] = react.useState(0);
@@ -44,7 +44,7 @@ function useVirtualizedSlides({
44
44
  resizeObserver?.disconnect();
45
45
  };
46
46
  }, []);
47
- const range = chunk4GX347MG_js.computeVirtualRange(totalItems, itemHeight, scrollTop, viewportHeight, overscan);
47
+ const range = chunkMZ47MV52_js.computeVirtualRange(totalItems, itemHeight, scrollTop, viewportHeight, overscan);
48
48
  const safeItemHeight = Math.max(itemHeight, 1);
49
49
  const scrollToIndex = react.useCallback(
50
50
  (index, behavior = "smooth") => {
@@ -85,7 +85,7 @@ function usePresenceTracking({
85
85
  }) {
86
86
  const [remoteUsers, setRemoteUsers] = react.useState([]);
87
87
  const projectorRef = react.useRef(null);
88
- projectorRef.current ??= chunk4GX347MG_js.createPresenceProjector();
88
+ projectorRef.current ??= chunkMZ47MV52_js.createPresenceProjector();
89
89
  const projector = projectorRef.current;
90
90
  const lastBroadcastRef = react.useRef(0);
91
91
  const pendingBroadcastRef = react.useRef(null);
@@ -110,7 +110,7 @@ function usePresenceTracking({
110
110
  awareness.setLocalStateField("presence", state);
111
111
  lastBroadcastRef.current = Date.now();
112
112
  };
113
- if (elapsed >= chunk4GX347MG_js.BROADCAST_THROTTLE_MS) {
113
+ if (elapsed >= chunkMZ47MV52_js.BROADCAST_THROTTLE_MS) {
114
114
  if (pendingBroadcastRef.current) {
115
115
  clearTimeout(pendingBroadcastRef.current);
116
116
  pendingBroadcastRef.current = null;
@@ -120,7 +120,7 @@ function usePresenceTracking({
120
120
  pendingBroadcastRef.current = setTimeout(() => {
121
121
  pendingBroadcastRef.current = null;
122
122
  flush();
123
- }, chunk4GX347MG_js.BROADCAST_THROTTLE_MS - elapsed);
123
+ }, chunkMZ47MV52_js.BROADCAST_THROTTLE_MS - elapsed);
124
124
  }
125
125
  },
126
126
  [awareness, userName, userColor, userAvatar, role]
@@ -200,7 +200,7 @@ function useYjsProvider({ config }) {
200
200
  const departureRef = react.useRef(null);
201
201
  const gateRef = react.useRef(null);
202
202
  if (!gateRef.current) {
203
- gateRef.current = chunk4GX347MG_js.createSyncGate(() => setSynced(true));
203
+ gateRef.current = chunkMZ47MV52_js.createSyncGate(() => setSynced(true));
204
204
  }
205
205
  const teardown = react.useCallback(() => {
206
206
  if (timeoutRef.current) {
@@ -220,7 +220,7 @@ function useYjsProvider({ config }) {
220
220
  const buildCleanup = react.useCallback(
221
221
  (provider, yDoc) => () => {
222
222
  announceDeparture();
223
- chunk4GX347MG_js.clearLocalAwareness(provider.awareness);
223
+ chunkMZ47MV52_js.clearLocalAwareness(provider.awareness);
224
224
  provider.destroy();
225
225
  yDoc.destroy();
226
226
  setDoc(null);
@@ -236,7 +236,7 @@ function useYjsProvider({ config }) {
236
236
  }
237
237
  setStatus("connecting");
238
238
  try {
239
- const [Y, { WebrtcProvider }] = await Promise.all([import('./yjs-HBLSEMHP.js'), import('./y-webrtc-YN53KW3J.js')]);
239
+ const [Y, { WebrtcProvider }] = await Promise.all([import('./yjs-OWUA3UHD.js'), import('./y-webrtc-TAJBJIKH.js')]);
240
240
  const yDoc = new Y.Doc();
241
241
  const opts = {};
242
242
  if (config.signaling && config.signaling.length > 0) {
@@ -245,9 +245,9 @@ function useYjsProvider({ config }) {
245
245
  if (config.authToken) {
246
246
  opts.password = config.authToken;
247
247
  }
248
- const roomId = chunk4GX347MG_js.validateRoomId(config.roomId);
248
+ const roomId = chunkMZ47MV52_js.validateRoomId(config.roomId);
249
249
  const provider = new WebrtcProvider(roomId, yDoc, opts);
250
- departureRef.current = chunk4GX347MG_js.createDepartureChannel(roomId, provider.awareness);
250
+ departureRef.current = chunkMZ47MV52_js.createDepartureChannel(roomId, provider.awareness);
251
251
  setDoc(yDoc);
252
252
  setAwareness(provider.awareness);
253
253
  setClientId(provider.awareness.clientID);
@@ -289,13 +289,13 @@ function useYjsProvider({ config }) {
289
289
  if (!config) {
290
290
  return;
291
291
  }
292
- const roomId = chunk4GX347MG_js.validateRoomId(config.roomId);
293
- const transport = config.transport ?? chunk4GX347MG_js.resolveTransportForServerUrl(config.serverUrl);
292
+ const roomId = chunkMZ47MV52_js.validateRoomId(config.roomId);
293
+ const transport = config.transport ?? chunkMZ47MV52_js.resolveTransportForServerUrl(config.serverUrl);
294
294
  if (transport === "webrtc") {
295
295
  await initWebrtc();
296
296
  return;
297
297
  }
298
- if (chunk4GX347MG_js.isMixedContentBlocked(config.serverUrl)) {
298
+ if (chunkMZ47MV52_js.isMixedContentBlocked(config.serverUrl)) {
299
299
  console.warn(
300
300
  `[pptx-viewer] Refusing to connect: insecure ws:// server "${config.serverUrl}" is blocked from a secure (https) page. Use a wss:// URL.`
301
301
  );
@@ -304,12 +304,12 @@ function useYjsProvider({ config }) {
304
304
  }
305
305
  setStatus("connecting");
306
306
  try {
307
- const [Y, { WebsocketProvider }] = await Promise.all([import('./yjs-HBLSEMHP.js'), import('./y-websocket-HZCIQLM6.js')]);
307
+ const [Y, { WebsocketProvider }] = await Promise.all([import('./yjs-OWUA3UHD.js'), import('./y-websocket-DQLOWGV6.js')]);
308
308
  const yDoc = new Y.Doc();
309
309
  const provider = new WebsocketProvider(config.serverUrl, roomId, yDoc, {
310
310
  params: config.authToken ? { token: config.authToken } : void 0
311
311
  });
312
- departureRef.current = chunk4GX347MG_js.createDepartureChannel(roomId, provider.awareness);
312
+ departureRef.current = chunkMZ47MV52_js.createDepartureChannel(roomId, provider.awareness);
313
313
  let connected = false;
314
314
  const handleStatus = (event) => {
315
315
  if (event.status === "connected") {
@@ -349,7 +349,7 @@ function useYjsProvider({ config }) {
349
349
  provider.off("status", handleStatus);
350
350
  provider.off("sync", handleSynced);
351
351
  announceDeparture();
352
- chunk4GX347MG_js.clearLocalAwareness(provider.awareness);
352
+ chunkMZ47MV52_js.clearLocalAwareness(provider.awareness);
353
353
  provider.destroy();
354
354
  yDoc.destroy();
355
355
  setDoc(null);
@@ -358,7 +358,7 @@ function useYjsProvider({ config }) {
358
358
  cleanupRef.current = null;
359
359
  setStatus("error");
360
360
  }
361
- }, chunk4GX347MG_js.CONNECTION_TIMEOUT_MS);
361
+ }, chunkMZ47MV52_js.CONNECTION_TIMEOUT_MS);
362
362
  }
363
363
  setDoc(yDoc);
364
364
  setAwareness(provider.awareness);
@@ -367,7 +367,7 @@ function useYjsProvider({ config }) {
367
367
  provider.off("status", handleStatus);
368
368
  provider.off("sync", handleSynced);
369
369
  announceDeparture();
370
- chunk4GX347MG_js.clearLocalAwareness(provider.awareness);
370
+ chunkMZ47MV52_js.clearLocalAwareness(provider.awareness);
371
371
  provider.destroy();
372
372
  yDoc.destroy();
373
373
  setDoc(null);
@@ -393,7 +393,7 @@ function useYjsProvider({ config }) {
393
393
  ]);
394
394
  react.useEffect(() => {
395
395
  init();
396
- const disposeTeardown = chunk4GX347MG_js.registerCollaborationTeardown({
396
+ const disposeTeardown = chunkMZ47MV52_js.registerCollaborationTeardown({
397
397
  leave: teardown,
398
398
  rejoin: init
399
399
  });
@@ -414,7 +414,7 @@ function useCollaborativeState({
414
414
  canvasWidth,
415
415
  canvasHeight
416
416
  }) {
417
- const userColor = chunk4GX347MG_js.sanitizeColor(config?.userColor, "#6366f1");
417
+ const userColor = chunkMZ47MV52_js.sanitizeColor(config?.userColor, "#6366f1");
418
418
  const { status, awareness, doc, clientId, synced, retry } = useYjsProvider({ config });
419
419
  const { remoteUsers, broadcastPresence } = usePresenceTracking({
420
420
  awareness,
@@ -523,8 +523,8 @@ function useEditorHistory(input) {
523
523
  width: canvasSize.width,
524
524
  height: canvasSize.height,
525
525
  activeSlideIndex,
526
- slides: slides.map(chunk4GX347MG_js.cloneSlide),
527
- templateElementsBySlideId: chunk4GX347MG_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
526
+ slides: slides.map(chunkMZ47MV52_js.cloneSlide),
527
+ templateElementsBySlideId: chunkMZ47MV52_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
528
528
  ...actionLabel ? { actionLabel } : {}
529
529
  };
530
530
  },
@@ -537,9 +537,9 @@ function useEditorHistory(input) {
537
537
  width: snapshot.width,
538
538
  height: snapshot.height
539
539
  });
540
- setSlides(snapshot.slides.map(chunk4GX347MG_js.cloneSlide));
540
+ setSlides(snapshot.slides.map(chunkMZ47MV52_js.cloneSlide));
541
541
  setTemplateElementsBySlideId(
542
- chunk4GX347MG_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
542
+ chunkMZ47MV52_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
543
543
  );
544
544
  setActiveSlideIndex(Math.min(snapshot.activeSlideIndex, maxSlideIndex));
545
545
  setSelectedElementIds([]);
@@ -573,8 +573,8 @@ function useEditorHistory(input) {
573
573
  const currentSnapshot = buildHistorySnapshot();
574
574
  historyFutureRef.current.push(currentSnapshot);
575
575
  isApplyingHistoryRef.current = true;
576
- const nextSnapshot = chunkP6KM7RO5_js.cloneHistorySnapshot(previousSnapshot);
577
- lastHistorySnapshotRef.current = chunkP6KM7RO5_js.cloneHistorySnapshot(nextSnapshot);
576
+ const nextSnapshot = chunkHAQDKQ52_js.cloneHistorySnapshot(previousSnapshot);
577
+ lastHistorySnapshotRef.current = chunkHAQDKQ52_js.cloneHistorySnapshot(nextSnapshot);
578
578
  lastHistorySerializedRef.current = JSON.stringify(nextSnapshot);
579
579
  applyHistorySnapshot(nextSnapshot);
580
580
  updateHistoryAvailability();
@@ -595,8 +595,8 @@ function useEditorHistory(input) {
595
595
  const currentSnapshot = buildHistorySnapshot();
596
596
  historyPastRef.current.push(currentSnapshot);
597
597
  isApplyingHistoryRef.current = true;
598
- const targetSnapshot = chunkP6KM7RO5_js.cloneHistorySnapshot(nextSnapshot);
599
- lastHistorySnapshotRef.current = chunkP6KM7RO5_js.cloneHistorySnapshot(targetSnapshot);
598
+ const targetSnapshot = chunkHAQDKQ52_js.cloneHistorySnapshot(nextSnapshot);
599
+ lastHistorySnapshotRef.current = chunkHAQDKQ52_js.cloneHistorySnapshot(targetSnapshot);
600
600
  lastHistorySerializedRef.current = JSON.stringify(targetSnapshot);
601
601
  applyHistorySnapshot(targetSnapshot);
602
602
  updateHistoryAvailability();
@@ -614,7 +614,7 @@ function useEditorHistory(input) {
614
614
  historyPastRef.current = [];
615
615
  historyFutureRef.current = [];
616
616
  if (initialSnapshot) {
617
- const clonedInitial = chunkP6KM7RO5_js.cloneHistorySnapshot(initialSnapshot);
617
+ const clonedInitial = chunkHAQDKQ52_js.cloneHistorySnapshot(initialSnapshot);
618
618
  lastHistorySnapshotRef.current = clonedInitial;
619
619
  lastHistorySerializedRef.current = JSON.stringify(clonedInitial);
620
620
  } else {
@@ -655,18 +655,18 @@ function useEditorHistory(input) {
655
655
  }
656
656
  const previousSnapshot = lastHistorySnapshotRef.current;
657
657
  if (!previousSnapshot) {
658
- lastHistorySnapshotRef.current = chunkP6KM7RO5_js.cloneHistorySnapshot(snapshot);
658
+ lastHistorySnapshotRef.current = chunkHAQDKQ52_js.cloneHistorySnapshot(snapshot);
659
659
  lastHistorySerializedRef.current = serialized;
660
660
  lastCheapHashRef.current = cheapHash;
661
661
  updateHistoryAvailability();
662
662
  return;
663
663
  }
664
- historyPastRef.current.push(chunkP6KM7RO5_js.cloneHistorySnapshot(previousSnapshot));
664
+ historyPastRef.current.push(chunkHAQDKQ52_js.cloneHistorySnapshot(previousSnapshot));
665
665
  while (historyPastRef.current.length > Math.max(1, maxHistoryEntries)) {
666
666
  historyPastRef.current.shift();
667
667
  }
668
668
  historyFutureRef.current = [];
669
- lastHistorySnapshotRef.current = chunkP6KM7RO5_js.cloneHistorySnapshot(snapshot);
669
+ lastHistorySnapshotRef.current = chunkHAQDKQ52_js.cloneHistorySnapshot(snapshot);
670
670
  lastHistorySerializedRef.current = serialized;
671
671
  lastCheapHashRef.current = cheapHash;
672
672
  updateHistoryAvailability();
@@ -726,9 +726,9 @@ function useZoomViewport({
726
726
  const canvasStageRef = react.useRef(null);
727
727
  const canvasViewportRef = react.useRef(null);
728
728
  const renderScaleRef = react.useRef(1);
729
- const wheelBufferRef = react.useRef(chunk4GX347MG_js.createWheelStepBuffer());
729
+ const wheelBufferRef = react.useRef(chunkMZ47MV52_js.createWheelStepBuffer());
730
730
  const storeRef = react.useRef(null);
731
- storeRef.current ??= chunk4GX347MG_js.createViewerZoomStore();
731
+ storeRef.current ??= chunkMZ47MV52_js.createViewerZoomStore();
732
732
  const store = storeRef.current;
733
733
  const scale = useViewerStore(store, selectZoom);
734
734
  const setScale = react.useCallback(
@@ -789,7 +789,7 @@ function useZoomViewport({
789
789
  if (!wrapper || !canvasViewport) {
790
790
  return;
791
791
  }
792
- const boundedScale = chunk4GX347MG_js.clampZoomScale(nextScale);
792
+ const boundedScale = chunkMZ47MV52_js.clampZoomScale(nextScale);
793
793
  const nextEditorScale = fitScale * boundedScale;
794
794
  const centerX = (bounds.minX + bounds.maxX) / 2;
795
795
  const centerY = (bounds.minY + bounds.maxY) / 2;
@@ -826,29 +826,29 @@ function useZoomViewport({
826
826
  selectedElements.forEach((element) => {
827
827
  minX = Math.min(minX, element.x);
828
828
  minY = Math.min(minY, element.y);
829
- maxX = Math.max(maxX, element.x + Math.max(element.width, chunkP6KM7RO5_js.MIN_ELEMENT_SIZE));
830
- maxY = Math.max(maxY, element.y + Math.max(element.height, chunkP6KM7RO5_js.MIN_ELEMENT_SIZE));
829
+ maxX = Math.max(maxX, element.x + Math.max(element.width, chunkHAQDKQ52_js.MIN_ELEMENT_SIZE));
830
+ maxY = Math.max(maxY, element.y + Math.max(element.height, chunkHAQDKQ52_js.MIN_ELEMENT_SIZE));
831
831
  });
832
832
  if (!Number.isFinite(minX) || !Number.isFinite(minY) || !Number.isFinite(maxX) || !Number.isFinite(maxY)) {
833
833
  return;
834
834
  }
835
835
  const selectionBounds = { minX, minY, maxX, maxY };
836
- const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkP6KM7RO5_js.MIN_ELEMENT_SIZE);
837
- const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkP6KM7RO5_js.MIN_ELEMENT_SIZE);
836
+ const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkHAQDKQ52_js.MIN_ELEMENT_SIZE);
837
+ const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkHAQDKQ52_js.MIN_ELEMENT_SIZE);
838
838
  const availableWidth = Math.max(
839
- effectiveEditorDimensions.width - chunkP6KM7RO5_js.ZOOM_TO_SELECTION_PADDING,
840
- chunkP6KM7RO5_js.MIN_ELEMENT_SIZE
839
+ effectiveEditorDimensions.width - chunkHAQDKQ52_js.ZOOM_TO_SELECTION_PADDING,
840
+ chunkHAQDKQ52_js.MIN_ELEMENT_SIZE
841
841
  );
842
842
  const availableHeight = Math.max(
843
- effectiveEditorDimensions.height - chunkP6KM7RO5_js.ZOOM_TO_SELECTION_PADDING,
844
- chunkP6KM7RO5_js.MIN_ELEMENT_SIZE
843
+ effectiveEditorDimensions.height - chunkHAQDKQ52_js.ZOOM_TO_SELECTION_PADDING,
844
+ chunkHAQDKQ52_js.MIN_ELEMENT_SIZE
845
845
  );
846
846
  const targetEditorScale = Math.min(
847
847
  availableWidth / boundsWidth,
848
848
  availableHeight / boundsHeight
849
849
  );
850
850
  const safeFitScale = fitScale > Number.EPSILON ? fitScale : Number.EPSILON;
851
- const nextScale = chunk4GX347MG_js.clampZoomScale(targetEditorScale / safeFitScale);
851
+ const nextScale = chunkMZ47MV52_js.clampZoomScale(targetEditorScale / safeFitScale);
852
852
  setScale(nextScale);
853
853
  window.requestAnimationFrame(() => {
854
854
  window.requestAnimationFrame(() => {
@@ -865,14 +865,14 @@ function useZoomViewport({
865
865
  ]);
866
866
  const handleWheel = react.useCallback(
867
867
  (event) => {
868
- const mapped = chunk4GX347MG_js.mapEditingWheel(event, wheelBufferRef.current, true);
868
+ const mapped = chunkMZ47MV52_js.mapEditingWheel(event, wheelBufferRef.current, true);
869
869
  if (mapped.intent !== "zoom") {
870
870
  return;
871
871
  }
872
872
  event.preventDefault();
873
873
  store.dispatch({
874
874
  type: "set-zoom",
875
- zoom: chunk4GX347MG_js.clampZoomScale(store.getState().zoom + mapped.deltaScale)
875
+ zoom: chunkMZ47MV52_js.clampZoomScale(store.getState().zoom + mapped.deltaScale)
876
876
  });
877
877
  },
878
878
  [store]
@@ -960,7 +960,7 @@ function applyAnimationGroupSteps(group, onPlayActionSound, setPresentationEleme
960
960
  const command = step.command;
961
961
  const timer = window.setTimeout(
962
962
  () => {
963
- chunkP6KM7RO5_js.executeMediaCommand(command);
963
+ chunkHAQDKQ52_js.executeMediaCommand(command);
964
964
  },
965
965
  Math.max(0, step.delayMs)
966
966
  );
@@ -1097,7 +1097,7 @@ function scheduleEntranceAnimationTimers(slide, setPresentationAnimations, prese
1097
1097
  }))
1098
1098
  );
1099
1099
  entranceAnimations.forEach((animation, animationIndex) => {
1100
- const delay = chunk4GX347MG_js.computeEntranceAnimationDelay(animation.delayMs, animationIndex);
1100
+ const delay = chunkMZ47MV52_js.computeEntranceAnimationDelay(animation.delayMs, animationIndex);
1101
1101
  const timer = window.setTimeout(() => {
1102
1102
  setPresentationAnimations(
1103
1103
  (previousAnimations) => previousAnimations.map(
@@ -1129,7 +1129,7 @@ function useAnimationPlayback(input) {
1129
1129
  (controller, group) => {
1130
1130
  driveBuildReveal(
1131
1131
  controller,
1132
- chunk4GX347MG_js.PresentationAnimationController.collectBuildStepIds(group),
1132
+ chunkMZ47MV52_js.PresentationAnimationController.collectBuildStepIds(group),
1133
1133
  setPresentationElementStates,
1134
1134
  buildRafRef
1135
1135
  );
@@ -1192,7 +1192,7 @@ function useAnimationPlayback(input) {
1192
1192
  setHoverTriggerShapeIds(/* @__PURE__ */ new Set());
1193
1193
  return;
1194
1194
  }
1195
- const controller = chunk4GX347MG_js.PresentationAnimationController.fromSlide(slide);
1195
+ const controller = chunkMZ47MV52_js.PresentationAnimationController.fromSlide(slide);
1196
1196
  controllerRef.current = controller;
1197
1197
  setPresentationKeyframesCss(controller.keyframesCss);
1198
1198
  setInteractiveTriggerShapeIds(controller.interactiveTriggerShapeIds);
@@ -1350,12 +1350,12 @@ function useAnimationPlayback(input) {
1350
1350
  presentationTimersRef
1351
1351
  };
1352
1352
  }
1353
- var PRESENTER_CHANNEL_NAME = chunk4GX347MG_js.PRESENTATION_CHANNEL_NAME;
1354
- var AUDIENCE_HASH = chunk4GX347MG_js.PRESENTATION_HASH;
1355
- var PRESENTER_MSG_ORIGIN = chunk4GX347MG_js.PRESENTATION_MESSAGE_ORIGIN;
1356
- var AUDIENCE_NONCE_KEY = chunk4GX347MG_js.PRESENTATION_NONCE_KEY;
1353
+ var PRESENTER_CHANNEL_NAME = chunkMZ47MV52_js.PRESENTATION_CHANNEL_NAME;
1354
+ var AUDIENCE_HASH = chunkMZ47MV52_js.PRESENTATION_HASH;
1355
+ var PRESENTER_MSG_ORIGIN = chunkMZ47MV52_js.PRESENTATION_MESSAGE_ORIGIN;
1356
+ var AUDIENCE_NONCE_KEY = chunkMZ47MV52_js.PRESENTATION_NONCE_KEY;
1357
1357
  function generateSessionId() {
1358
- return chunk4GX347MG_js.createPresentationSessionId();
1358
+ return chunkMZ47MV52_js.createPresentationSessionId();
1359
1359
  }
1360
1360
  function parseAudienceNonce() {
1361
1361
  const hash = window.location.hash;
@@ -1391,7 +1391,7 @@ function usePresenterWindow(input) {
1391
1391
  }, []);
1392
1392
  const swapDisplays = react.useCallback(async () => {
1393
1393
  const audience = audienceWindowRef.current;
1394
- return audience && !audience.closed ? chunk4GX347MG_js.swapPresentationWindows(window, audience) : false;
1394
+ return audience && !audience.closed ? chunkMZ47MV52_js.swapPresentationWindows(window, audience) : false;
1395
1395
  }, []);
1396
1396
  const syncSlideToAudience = react.useCallback(
1397
1397
  (slideIndex) => {
@@ -1455,7 +1455,7 @@ function usePresenterWindow(input) {
1455
1455
  pollTimerRef.current = null;
1456
1456
  }
1457
1457
  if (closingSessionId) {
1458
- void chunk4GX347MG_js.clearAudienceContent(closingSessionId);
1458
+ void chunkMZ47MV52_js.clearAudienceContent(closingSessionId);
1459
1459
  }
1460
1460
  }, [getChannel]);
1461
1461
  const openAudienceWindow = react.useCallback(() => {
@@ -1473,10 +1473,10 @@ function usePresenterWindow(input) {
1473
1473
  audienceWindowRef.current = blankWin;
1474
1474
  const sessionId = generateSessionId();
1475
1475
  sessionIdRef.current = sessionId;
1476
- const audienceUrl = chunk4GX347MG_js.buildPresentationAudienceUrl(window.location.href, sessionId);
1477
- void chunk4GX347MG_js.resolveAudienceScreenPlacement(window).then((placement) => {
1476
+ const audienceUrl = chunkMZ47MV52_js.buildPresentationAudienceUrl(window.location.href, sessionId);
1477
+ void chunkMZ47MV52_js.resolveAudienceScreenPlacement(window).then((placement) => {
1478
1478
  if (placement && audienceWindowRef.current === blankWin && !blankWin.closed) {
1479
- chunk4GX347MG_js.placeAudienceWindow(blankWin, placement);
1479
+ chunkMZ47MV52_js.placeAudienceWindow(blankWin, placement);
1480
1480
  }
1481
1481
  return void 0;
1482
1482
  });
@@ -1506,7 +1506,7 @@ function usePresenterWindow(input) {
1506
1506
  }
1507
1507
  };
1508
1508
  if (content) {
1509
- void chunk4GX347MG_js.storeAudienceContent(content, sessionId).then(() => navigateOrClose(true)).catch(() => navigateOrClose(false));
1509
+ void chunkMZ47MV52_js.storeAudienceContent(content, sessionId).then(() => navigateOrClose(true)).catch(() => navigateOrClose(false));
1510
1510
  } else {
1511
1511
  navigateOrClose(true);
1512
1512
  }
@@ -1532,7 +1532,7 @@ function usePresenterWindow(input) {
1532
1532
  }
1533
1533
  const handleMessage = (event) => {
1534
1534
  const message = event.data;
1535
- if (chunk4GX347MG_js.isPresentationSessionMessage(message) && message.type === "audience-ready" && message.sessionId === sessionIdRef.current) {
1535
+ if (chunkMZ47MV52_js.isPresentationSessionMessage(message) && message.type === "audience-ready" && message.sessionId === sessionIdRef.current) {
1536
1536
  syncStateToAudience(snapshotRef.current);
1537
1537
  }
1538
1538
  };
@@ -1561,7 +1561,7 @@ function usePresenterWindow(input) {
1561
1561
  react.useEffect(() => {
1562
1562
  const handleBeforeUnload = () => {
1563
1563
  if (sessionIdRef.current) {
1564
- void chunk4GX347MG_js.clearAudienceContent(sessionIdRef.current);
1564
+ void chunkMZ47MV52_js.clearAudienceContent(sessionIdRef.current);
1565
1565
  }
1566
1566
  };
1567
1567
  window.addEventListener("beforeunload", handleBeforeUnload);
@@ -1623,7 +1623,7 @@ function useAudienceMode(input) {
1623
1623
  }
1624
1624
  channel.onmessage = (event) => {
1625
1625
  const data = event.data;
1626
- if (!chunk4GX347MG_js.isPresentationSessionMessage(data) || data.origin !== PRESENTER_MSG_ORIGIN) {
1626
+ if (!chunkMZ47MV52_js.isPresentationSessionMessage(data) || data.origin !== PRESENTER_MSG_ORIGIN) {
1627
1627
  return;
1628
1628
  }
1629
1629
  if (expectedSessionId && data.sessionId !== expectedSessionId) {
@@ -1639,16 +1639,16 @@ function useAudienceMode(input) {
1639
1639
  }
1640
1640
  if (data.type === "presenter-exit") {
1641
1641
  if (expectedSessionId) {
1642
- void chunk4GX347MG_js.clearAudienceContent(expectedSessionId);
1642
+ void chunkMZ47MV52_js.clearAudienceContent(expectedSessionId);
1643
1643
  }
1644
- if (chunk4GX347MG_js.endAudienceDisplay(window)) {
1644
+ if (chunkMZ47MV52_js.endAudienceDisplay(window)) {
1645
1645
  handlers.onPresenterEnded?.();
1646
1646
  }
1647
1647
  }
1648
1648
  };
1649
1649
  if (expectedSessionId) {
1650
1650
  channel.postMessage({
1651
- origin: chunk4GX347MG_js.PRESENTATION_MESSAGE_ORIGIN,
1651
+ origin: chunkMZ47MV52_js.PRESENTATION_MESSAGE_ORIGIN,
1652
1652
  type: "audience-ready",
1653
1653
  sessionId: expectedSessionId
1654
1654
  });
@@ -1662,7 +1662,7 @@ function useAudienceMode(input) {
1662
1662
  }, []);
1663
1663
  }
1664
1664
  function usePresentationKeyboard(input) {
1665
- const wheelBufferRef = react.useRef(chunk4GX347MG_js.createWheelStepBuffer());
1665
+ const wheelBufferRef = react.useRef(chunkMZ47MV52_js.createWheelStepBuffer());
1666
1666
  const {
1667
1667
  mode,
1668
1668
  movePresentationSlide,
@@ -1682,14 +1682,14 @@ function usePresentationKeyboard(input) {
1682
1682
  presentationSlideIndex,
1683
1683
  setShowRehearsalSummary
1684
1684
  } = input;
1685
- const keyBufferRef = react.useRef(chunk4GX347MG_js.createPresentationKeyBuffer());
1685
+ const keyBufferRef = react.useRef(chunkMZ47MV52_js.createPresentationKeyBuffer());
1686
1686
  react.useEffect(() => {
1687
- if (mode !== "present" || !chunk4GX347MG_js.acceptsPresentationInput()) {
1688
- keyBufferRef.current = chunk4GX347MG_js.createPresentationKeyBuffer();
1687
+ if (mode !== "present" || !chunkMZ47MV52_js.acceptsPresentationInput()) {
1688
+ keyBufferRef.current = chunkMZ47MV52_js.createPresentationKeyBuffer();
1689
1689
  return;
1690
1690
  }
1691
1691
  const handleKeyDown = (event) => {
1692
- const mapped = chunk4GX347MG_js.mapPresentationKey(event, keyBufferRef.current);
1692
+ const mapped = chunkMZ47MV52_js.mapPresentationKey(event, keyBufferRef.current);
1693
1693
  if (mapped.action === "none") {
1694
1694
  return;
1695
1695
  }
@@ -1709,12 +1709,12 @@ function usePresentationKeyboard(input) {
1709
1709
  movePresentationSlide(-1);
1710
1710
  return;
1711
1711
  case "first": {
1712
- const first = chunk4GX347MG_js.firstShowSlideIndex(showSlideIndexes);
1712
+ const first = chunkMZ47MV52_js.firstShowSlideIndex(showSlideIndexes);
1713
1713
  navigateToSlide(first ?? 0);
1714
1714
  return;
1715
1715
  }
1716
1716
  case "last": {
1717
- const last = chunk4GX347MG_js.lastShowSlideIndex(showSlideIndexes);
1717
+ const last = chunkMZ47MV52_js.lastShowSlideIndex(showSlideIndexes);
1718
1718
  navigateToSlide(last ?? Math.max(0, slideCount - 1));
1719
1719
  return;
1720
1720
  }
@@ -1749,10 +1749,10 @@ function usePresentationKeyboard(input) {
1749
1749
  }
1750
1750
  };
1751
1751
  const handleWheel = (event) => {
1752
- if (mode !== "present" || !chunk4GX347MG_js.acceptsPresentationInput()) {
1752
+ if (mode !== "present" || !chunkMZ47MV52_js.acceptsPresentationInput()) {
1753
1753
  return;
1754
1754
  }
1755
- const mapped = chunk4GX347MG_js.mapPresentationWheel(event, wheelBufferRef.current);
1755
+ const mapped = chunkMZ47MV52_js.mapPresentationWheel(event, wheelBufferRef.current);
1756
1756
  if (mapped.intent === "next-slide") {
1757
1757
  event.preventDefault();
1758
1758
  movePresentationSlide(1);
@@ -1884,7 +1884,7 @@ function useRehearsalTimings(input) {
1884
1884
 
1885
1885
  // src/viewer/hooks/presentation-mode/presentation-actions.ts
1886
1886
  function handlePresentationActionImpl(action, deps) {
1887
- chunk4GX347MG_js.runPresentationAction(
1887
+ chunkMZ47MV52_js.runPresentationAction(
1888
1888
  action,
1889
1889
  { slideCount: deps.slidesLength },
1890
1890
  {
@@ -1906,7 +1906,7 @@ function handlePresentationActionImpl(action, deps) {
1906
1906
  function executeSlideTransition(nextSlideIndex, deps) {
1907
1907
  const incomingSlide = deps.slides[nextSlideIndex];
1908
1908
  const transition = incomingSlide?.transition;
1909
- const durationMs = deps.playTransition ? chunk4GX347MG_js.resolveTransitionDurationMs(transition) : 0;
1909
+ const durationMs = deps.playTransition ? chunkMZ47MV52_js.resolveTransitionDurationMs(transition) : 0;
1910
1910
  deps.clearPresentationTimers();
1911
1911
  deps.setPresentationSlideIndex(nextSlideIndex);
1912
1912
  deps.onSetActiveSlideIndex(nextSlideIndex);
@@ -1965,7 +1965,7 @@ function useSlideNavigation(input) {
1965
1965
  });
1966
1966
  const scheduleAutoAdvanceForSlide = react.useCallback(
1967
1967
  (slideIndex) => {
1968
- const delayMs = chunk4GX347MG_js.resolveAutoAdvanceDelayMs(slides[slideIndex], { useTimings });
1968
+ const delayMs = chunkMZ47MV52_js.resolveAutoAdvanceDelayMs(slides[slideIndex], { useTimings });
1969
1969
  if (delayMs === void 0) {
1970
1970
  return;
1971
1971
  }
@@ -1988,7 +1988,7 @@ function useSlideNavigation(input) {
1988
1988
  if (availableSlideIndexes.length === 0) {
1989
1989
  return;
1990
1990
  }
1991
- const pastLastSlide = direction === 1 && !chunk4GX347MG_js.hasShowSlideAfter(presentationSlideIndex, availableSlideIndexes);
1991
+ const pastLastSlide = direction === 1 && !chunkMZ47MV52_js.hasShowSlideAfter(presentationSlideIndex, availableSlideIndexes);
1992
1992
  if (rehearsing && pastLastSlide) {
1993
1993
  recordCurrentSlideTime(presentationSlideIndex);
1994
1994
  try {
@@ -2006,9 +2006,9 @@ function useSlideNavigation(input) {
2006
2006
  onAdvancePastLastSlide();
2007
2007
  return;
2008
2008
  }
2009
- const nextSlideIndex = direction === 1 ? chunk4GX347MG_js.nextShowSlideIndex(presentationSlideIndex, availableSlideIndexes, {
2009
+ const nextSlideIndex = direction === 1 ? chunkMZ47MV52_js.nextShowSlideIndex(presentationSlideIndex, availableSlideIndexes, {
2010
2010
  loop: Boolean(loopContinuously) && !rehearsing
2011
- }) : chunk4GX347MG_js.previousShowSlideIndex(presentationSlideIndex, availableSlideIndexes);
2011
+ }) : chunkMZ47MV52_js.previousShowSlideIndex(presentationSlideIndex, availableSlideIndexes);
2012
2012
  if (nextSlideIndex === void 0 || nextSlideIndex === presentationSlideIndex) {
2013
2013
  return;
2014
2014
  }
@@ -2153,22 +2153,22 @@ function useZoomNavigation(input) {
2153
2153
  };
2154
2154
  }
2155
2155
  function usePresenterConsole(slideIndex, active) {
2156
- const timerRef = react.useRef(chunk4GX347MG_js.createPresenterTimer());
2157
- const [snapshot, setSnapshot] = react.useState(() => chunk4GX347MG_js.createInitialPresentationSnapshot(slideIndex));
2156
+ const timerRef = react.useRef(chunkMZ47MV52_js.createPresenterTimer());
2157
+ const [snapshot, setSnapshot] = react.useState(() => chunkMZ47MV52_js.createInitialPresentationSnapshot(slideIndex));
2158
2158
  const patch = react.useCallback((value) => {
2159
- setSnapshot((current) => chunk4GX347MG_js.mergePresentationSnapshot(current, value));
2159
+ setSnapshot((current) => chunkMZ47MV52_js.mergePresentationSnapshot(current, value));
2160
2160
  }, []);
2161
2161
  react.useEffect(() => patch({ slideIndex }), [patch, slideIndex]);
2162
2162
  react.useEffect(() => {
2163
2163
  if (!active) {
2164
2164
  return;
2165
2165
  }
2166
- timerRef.current = chunk4GX347MG_js.resetPresenterTimer();
2166
+ timerRef.current = chunkMZ47MV52_js.resetPresenterTimer();
2167
2167
  patch({ paused: false, elapsedMs: 0 });
2168
2168
  const timer = window.setInterval(() => {
2169
2169
  patch({
2170
2170
  paused: timerRef.current.paused,
2171
- elapsedMs: chunk4GX347MG_js.presenterElapsed(timerRef.current)
2171
+ elapsedMs: chunkMZ47MV52_js.presenterElapsed(timerRef.current)
2172
2172
  });
2173
2173
  }, 1e3);
2174
2174
  return () => window.clearInterval(timer);
@@ -2178,19 +2178,19 @@ function usePresenterConsole(slideIndex, active) {
2178
2178
  applyAudienceSnapshot: setSnapshot,
2179
2179
  setBlackout: (blackout) => patch({ blackout }),
2180
2180
  toggleTimer: () => {
2181
- timerRef.current = chunk4GX347MG_js.togglePresenterTimer(timerRef.current);
2181
+ timerRef.current = chunkMZ47MV52_js.togglePresenterTimer(timerRef.current);
2182
2182
  patch({
2183
2183
  paused: timerRef.current.paused,
2184
- elapsedMs: chunk4GX347MG_js.presenterElapsed(timerRef.current)
2184
+ elapsedMs: chunkMZ47MV52_js.presenterElapsed(timerRef.current)
2185
2185
  });
2186
2186
  },
2187
2187
  resetTimer: () => {
2188
- timerRef.current = chunk4GX347MG_js.resetPresenterTimer();
2188
+ timerRef.current = chunkMZ47MV52_js.resetPresenterTimer();
2189
2189
  patch({ paused: false, elapsedMs: 0 });
2190
2190
  },
2191
2191
  stepZoom: (direction) => setSnapshot(
2192
- (current) => chunk4GX347MG_js.mergePresentationSnapshot(current, {
2193
- zoom: chunk4GX347MG_js.stepPresenterZoom(
2192
+ (current) => chunkMZ47MV52_js.mergePresentationSnapshot(current, {
2193
+ zoom: chunkMZ47MV52_js.stepPresenterZoom(
2194
2194
  current.zoom ?? { scale: 1, originX: 0.5, originY: 0.5 },
2195
2195
  direction
2196
2196
  )
@@ -2235,7 +2235,7 @@ function usePresentationMode(input) {
2235
2235
  const [allSlidesOpen, setAllSlidesOpen] = react.useState(false);
2236
2236
  const [endOfShowVisible, setEndOfShowVisible] = react.useState(false);
2237
2237
  const [presentationStartTime, setPresentationStartTime] = react.useState(null);
2238
- const showGuard = react.useMemo(() => chunk4GX347MG_js.createPresenterShowGuard(), []);
2238
+ const showGuard = react.useMemo(() => chunkMZ47MV52_js.createPresenterShowGuard(), []);
2239
2239
  const {
2240
2240
  presentationAnimations,
2241
2241
  presentationElementStates,
@@ -2314,7 +2314,7 @@ function usePresentationMode(input) {
2314
2314
  });
2315
2315
  const movePresentationSlide = react.useCallback(
2316
2316
  (direction, trigger = "explicit") => {
2317
- if (!chunk4GX347MG_js.acceptsPresentationInput()) {
2317
+ if (!chunkMZ47MV52_js.acceptsPresentationInput()) {
2318
2318
  return;
2319
2319
  }
2320
2320
  if (endOfShowVisible) {
@@ -2451,7 +2451,7 @@ function usePresentationMode(input) {
2451
2451
  if (mode !== "present") {
2452
2452
  return;
2453
2453
  }
2454
- return chunk4GX347MG_js.attachPresentationVisibilityPause({
2454
+ return chunkMZ47MV52_js.attachPresentationVisibilityPause({
2455
2455
  root: containerRef.current ?? void 0,
2456
2456
  onHidden: () => clearPresentationTimersRef.current(),
2457
2457
  onVisible: () => scheduleAutoAdvanceRef.current(presentationSlideIndexRef.current)
@@ -2531,11 +2531,11 @@ function usePresentationMode(input) {
2531
2531
  if (!transitionOverlay || transitionOverlay.transition.type !== "morph") {
2532
2532
  return void 0;
2533
2533
  }
2534
- return chunk4GX347MG_js.buildMorphTransitionPlan(
2534
+ return chunkMZ47MV52_js.buildMorphTransitionPlan(
2535
2535
  slides[transitionOverlay.outgoingSlideIndex],
2536
2536
  slides[transitionOverlay.incomingSlideIndex],
2537
2537
  transitionOverlay.durationMs,
2538
- chunk4GX347MG_js.morphOptionToMode(transitionOverlay.transition.morphOption)
2538
+ chunkMZ47MV52_js.morphOptionToMode(transitionOverlay.transition.morphOption)
2539
2539
  );
2540
2540
  }, [transitionOverlay, slides]);
2541
2541
  const morphedElementStates = react.useMemo(() => {
@@ -2556,7 +2556,7 @@ function usePresentationMode(input) {
2556
2556
  if (!morphPlan) {
2557
2557
  return presentationKeyframesCss;
2558
2558
  }
2559
- const imageRules = chunk4GX347MG_js.buildMorphAnimationRules(morphPlan, "", "incoming", "image");
2559
+ const imageRules = chunkMZ47MV52_js.buildMorphAnimationRules(morphPlan, "", "incoming", "image");
2560
2560
  return `${presentationKeyframesCss ?? ""}
2561
2561
  ${morphPlan.keyframesCss}
2562
2562
  ${imageRules}`;
@@ -2845,7 +2845,7 @@ function findInSlides(slides, findQuery, findMatchCase) {
2845
2845
  const normalised = findMatchCase ? findQuery : findQuery.toLowerCase();
2846
2846
  slides.forEach((slide, slideIndex) => {
2847
2847
  for (const element of slide.elements || []) {
2848
- if (!chunk4GX347MG_js.hasTextProperties(element)) {
2848
+ if (!chunkMZ47MV52_js.hasTextProperties(element)) {
2849
2849
  continue;
2850
2850
  }
2851
2851
  const segments = element.textSegments ?? [];
@@ -2896,7 +2896,7 @@ function applyFindReplacements(slides, toReplace, replaceQuery) {
2896
2896
  continue;
2897
2897
  }
2898
2898
  const element = slide.elements[elIdx];
2899
- if (!chunk4GX347MG_js.hasTextProperties(element)) {
2899
+ if (!chunkMZ47MV52_js.hasTextProperties(element)) {
2900
2900
  continue;
2901
2901
  }
2902
2902
  const segments = [...element.textSegments ?? []];
@@ -3494,7 +3494,8 @@ function useViewerCoreState(_input) {
3494
3494
  const shapeAdjustmentDragStateRef = react.useRef(null);
3495
3495
  const marqueeStateRef = react.useRef(null);
3496
3496
  const isDrawingRef = react.useRef(false);
3497
- const livePatcher = react.useMemo(() => chunk4GX347MG_js.createCollaborationLivePatcher(), []);
3497
+ const justInteractedRef = react.useRef(false);
3498
+ const livePatcher = react.useMemo(() => chunkMZ47MV52_js.createCollaborationLivePatcher(), []);
3498
3499
  react.useEffect(() => () => livePatcher.dispose(), [livePatcher]);
3499
3500
  const slidesRef = react.useRef([]);
3500
3501
  const [mode, setMode] = react.useState("edit");
@@ -3503,8 +3504,8 @@ function useViewerCoreState(_input) {
3503
3504
  const [slides, setSlides] = react.useState([]);
3504
3505
  const [templateElementsBySlideId, setTemplateElementsBySlideId] = react.useState({});
3505
3506
  const [canvasSize, setCanvasSize] = react.useState({
3506
- width: chunkP6KM7RO5_js.DEFAULT_CANVAS_WIDTH,
3507
- height: chunkP6KM7RO5_js.DEFAULT_CANVAS_HEIGHT
3507
+ width: chunkHAQDKQ52_js.DEFAULT_CANVAS_WIDTH,
3508
+ height: chunkHAQDKQ52_js.DEFAULT_CANVAS_HEIGHT
3508
3509
  });
3509
3510
  const [activeSlideIndex, setActiveSlideIndex] = react.useState(0);
3510
3511
  const [selectedElementId, setSelectedElementId] = react.useState(null);
@@ -3524,7 +3525,7 @@ function useViewerCoreState(_input) {
3524
3525
  const resolved = typeof value === "function" ? value(inlineEditingTextRef.current) : value;
3525
3526
  inlineEditingTextRef.current = resolved;
3526
3527
  setInlineEditingTextBase(value);
3527
- chunk4GX347MG_js.publishLiveInlineText(
3528
+ chunkMZ47MV52_js.publishLiveInlineText(
3528
3529
  livePatcher,
3529
3530
  slidesRef.current[activeSlideIndexRef.current],
3530
3531
  inlineEditingElementIdRef.current,
@@ -3590,6 +3591,7 @@ function useViewerCoreState(_input) {
3590
3591
  shapeAdjustmentDragStateRef,
3591
3592
  marqueeStateRef,
3592
3593
  isDrawingRef,
3594
+ justInteractedRef,
3593
3595
  livePatcher,
3594
3596
  mode,
3595
3597
  setMode,
@@ -3858,7 +3860,7 @@ function useLoadContent({
3858
3860
  );
3859
3861
  }
3860
3862
  const previousHandler = handlerRef.current;
3861
- const handler = new chunk4GX347MG_js.PptxHandler();
3863
+ const handler = new chunkMZ47MV52_js.PptxHandler();
3862
3864
  const parsed = await handler.load(buffer);
3863
3865
  if (cancelled || token !== renderTokenRef.current) {
3864
3866
  handler.dispose();
@@ -3870,7 +3872,7 @@ function useLoadContent({
3870
3872
  handlerRef.current = null;
3871
3873
  const mediaElements = [];
3872
3874
  for (const slide of parsed.slides) {
3873
- chunk4GX347MG_js.collectMediaElements(slide.elements, mediaElements);
3875
+ chunkMZ47MV52_js.collectMediaElements(slide.elements, mediaElements);
3874
3876
  }
3875
3877
  for (const url of mediaDataUrls.values()) {
3876
3878
  if (url.startsWith("blob:")) {
@@ -3911,7 +3913,7 @@ function useLoadContent({
3911
3913
  }
3912
3914
  })
3913
3915
  );
3914
- const { paths: imagePaths, refs: imageRefs } = chunk4GX347MG_js.collectImagePaths(parsed.slides);
3916
+ const { paths: imagePaths, refs: imageRefs } = chunkMZ47MV52_js.collectImagePaths(parsed.slides);
3915
3917
  let nextSlides = parsed.slides;
3916
3918
  if (imagePaths.size > 0) {
3917
3919
  const resolvedMap = /* @__PURE__ */ new Map();
@@ -3966,12 +3968,12 @@ function useLoadContent({
3966
3968
  }
3967
3969
  }
3968
3970
  handlerRef.current = handler;
3969
- const partition = chunkP6KM7RO5_js.partitionTemplateElements(nextSlides);
3971
+ const partition = chunkHAQDKQ52_js.partitionTemplateElements(nextSlides);
3970
3972
  setSlides(partition.slides);
3971
3973
  setTemplateElementsBySlideId(partition.templateElementsBySlideId);
3972
3974
  setCanvasSize({
3973
- width: parsed.width ?? chunkP6KM7RO5_js.DEFAULT_CANVAS_WIDTH,
3974
- height: parsed.height ?? chunkP6KM7RO5_js.DEFAULT_CANVAS_HEIGHT
3975
+ width: parsed.width ?? chunkHAQDKQ52_js.DEFAULT_CANVAS_WIDTH,
3976
+ height: parsed.height ?? chunkHAQDKQ52_js.DEFAULT_CANVAS_HEIGHT
3975
3977
  });
3976
3978
  setHeaderFooter(parsed.headerFooter ?? {});
3977
3979
  setLayoutOptions(parsed.layoutOptions ?? []);
@@ -4000,7 +4002,7 @@ function useLoadContent({
4000
4002
  setHasMacros(parsed.hasMacros === true);
4001
4003
  setHasDigitalSignatures(parsed.hasDigitalSignatures === true);
4002
4004
  setDigitalSignatureCount(parsed.digitalSignatureCount ?? 0);
4003
- setGuides(chunk4GX347MG_js.buildInitialGuides(parsed.presentationGuides, parsed.slides[0]?.guides));
4005
+ setGuides(chunkMZ47MV52_js.buildInitialGuides(parsed.presentationGuides, parsed.slides[0]?.guides));
4004
4006
  setActiveSlideIndex(0);
4005
4007
  clearSelection();
4006
4008
  setIsDirty(false);
@@ -4008,7 +4010,7 @@ function useLoadContent({
4008
4010
  onContentApplied?.();
4009
4011
  } catch (err) {
4010
4012
  if (!cancelled && token === renderTokenRef.current) {
4011
- if (err instanceof chunk4GX347MG_js.EncryptedFileError) {
4013
+ if (err instanceof chunkMZ47MV52_js.EncryptedFileError) {
4012
4014
  setIsEncrypted(true);
4013
4015
  } else {
4014
4016
  setError(err instanceof Error ? err.message : String(err));
@@ -4085,7 +4087,7 @@ function useAutosave(input) {
4085
4087
  isSavingRef.current = false;
4086
4088
  return;
4087
4089
  }
4088
- await chunk4GX347MG_js.saveAutosaveSnapshot(filePathRef.current, data);
4090
+ await chunkMZ47MV52_js.saveAutosaveSnapshot(filePathRef.current, data);
4089
4091
  setAutosaveStatus({ state: "saved", timestamp: Date.now() });
4090
4092
  } catch (err) {
4091
4093
  setAutosaveStatus({
@@ -4150,7 +4152,7 @@ function useElementOperations(input) {
4150
4152
  }, [applySelection, setInlineEditingElementId, setContextMenuState]);
4151
4153
  const updateElementById = react.useCallback(
4152
4154
  (elementId, updates) => {
4153
- if (chunk4GX347MG_js.isTemplateElementId(elementId)) {
4155
+ if (chunkMZ47MV52_js.isTemplateElementId(elementId)) {
4154
4156
  const slideId = activeSlide?.id;
4155
4157
  if (slideId) {
4156
4158
  setTemplateElementsBySlideId((prev) => ({
@@ -4190,7 +4192,7 @@ function useElementOperations(input) {
4190
4192
  );
4191
4193
  const updateSelectedShapeStyle = react.useCallback(
4192
4194
  (updates) => {
4193
- if (!selectedElement || !chunk4GX347MG_js.hasShapeProperties(selectedElement)) {
4195
+ if (!selectedElement || !chunkMZ47MV52_js.hasShapeProperties(selectedElement)) {
4194
4196
  return;
4195
4197
  }
4196
4198
  updateSelectedElement({
@@ -4201,17 +4203,17 @@ function useElementOperations(input) {
4201
4203
  );
4202
4204
  const updateSelectedTextStyle = react.useCallback(
4203
4205
  (updates) => {
4204
- if (!selectedElement || !chunk4GX347MG_js.hasTextProperties(selectedElement)) {
4206
+ if (!selectedElement || !chunkMZ47MV52_js.hasTextProperties(selectedElement)) {
4205
4207
  return;
4206
4208
  }
4207
- const inlineSel = chunk4GX347MG_js.getInlineEditorSelection(selectedElement.textSegments);
4209
+ const inlineSel = chunkMZ47MV52_js.getInlineEditorSelection(selectedElement.textSegments);
4208
4210
  if (inlineSel && selectedElement.textSegments) {
4209
- const { newSegments: newSegments2, newSelection } = chunk4GX347MG_js.applyStyleToSelectedSegments(
4211
+ const { newSegments: newSegments2, newSelection } = chunkMZ47MV52_js.applyStyleToSelectedSegments(
4210
4212
  selectedElement.textSegments,
4211
4213
  inlineSel,
4212
4214
  updates
4213
4215
  );
4214
- chunk4GX347MG_js.setPendingSelectionRestore(newSelection);
4216
+ chunkMZ47MV52_js.setPendingSelectionRestore(newSelection);
4215
4217
  updateSelectedElement({
4216
4218
  textSegments: newSegments2
4217
4219
  });
@@ -4231,12 +4233,12 @@ function useElementOperations(input) {
4231
4233
  );
4232
4234
  const updateSelectedTextCase = react.useCallback(
4233
4235
  (mode) => {
4234
- if (!selectedElement || !chunk4GX347MG_js.hasTextProperties(selectedElement)) {
4236
+ if (!selectedElement || !chunkMZ47MV52_js.hasTextProperties(selectedElement)) {
4235
4237
  return;
4236
4238
  }
4237
- const inlineSel = chunk4GX347MG_js.getInlineEditorSelection(selectedElement.textSegments);
4239
+ const inlineSel = chunkMZ47MV52_js.getInlineEditorSelection(selectedElement.textSegments);
4238
4240
  if (inlineSel && selectedElement.textSegments) {
4239
- const newSegments = chunk4GX347MG_js.applyCaseTransformToSegments(
4241
+ const newSegments = chunkMZ47MV52_js.applyCaseTransformToSegments(
4240
4242
  selectedElement.textSegments,
4241
4243
  inlineSel,
4242
4244
  mode
@@ -4246,14 +4248,14 @@ function useElementOperations(input) {
4246
4248
  }
4247
4249
  const updates = {};
4248
4250
  if (selectedElement.textSegments && selectedElement.textSegments.length > 0) {
4249
- updates.textSegments = chunk4GX347MG_js.applyCaseTransformToSegments(
4251
+ updates.textSegments = chunkMZ47MV52_js.applyCaseTransformToSegments(
4250
4252
  selectedElement.textSegments,
4251
4253
  null,
4252
4254
  mode
4253
4255
  );
4254
4256
  }
4255
4257
  if (typeof selectedElement.text === "string") {
4256
- updates.text = chunk4GX347MG_js.transformTextCase(selectedElement.text, mode);
4258
+ updates.text = chunkMZ47MV52_js.transformTextCase(selectedElement.text, mode);
4257
4259
  }
4258
4260
  updateSelectedElement(updates);
4259
4261
  },
@@ -4308,7 +4310,7 @@ function useSectionOperations(input) {
4308
4310
  const { sections, setSections, slides, setSlides, markDirty } = input;
4309
4311
  const addSection2 = react.useCallback(
4310
4312
  (name, afterSlideIndex) => {
4311
- const result = chunk4GX347MG_js.addSection(sections, slides, name, afterSlideIndex);
4313
+ const result = chunkMZ47MV52_js.addSection(sections, slides, name, afterSlideIndex);
4312
4314
  setSlides(result.slides);
4313
4315
  setSections(result.sections);
4314
4316
  markDirty();
@@ -4317,7 +4319,7 @@ function useSectionOperations(input) {
4317
4319
  );
4318
4320
  const renameSection2 = react.useCallback(
4319
4321
  (sectionId, newName) => {
4320
- const result = chunk4GX347MG_js.renameSection(sections, slides, sectionId, newName);
4322
+ const result = chunkMZ47MV52_js.renameSection(sections, slides, sectionId, newName);
4321
4323
  setSections(result.sections);
4322
4324
  setSlides(result.slides);
4323
4325
  markDirty();
@@ -4326,7 +4328,7 @@ function useSectionOperations(input) {
4326
4328
  );
4327
4329
  const deleteSection2 = react.useCallback(
4328
4330
  (sectionId) => {
4329
- const result = chunk4GX347MG_js.deleteSection(sections, slides, sectionId);
4331
+ const result = chunkMZ47MV52_js.deleteSection(sections, slides, sectionId);
4330
4332
  setSections(result.sections);
4331
4333
  setSlides(result.slides);
4332
4334
  markDirty();
@@ -4335,21 +4337,21 @@ function useSectionOperations(input) {
4335
4337
  );
4336
4338
  const moveSectionUp2 = react.useCallback(
4337
4339
  (sectionId) => {
4338
- setSections(chunk4GX347MG_js.moveSectionUp(sections, sectionId));
4340
+ setSections(chunkMZ47MV52_js.moveSectionUp(sections, sectionId));
4339
4341
  markDirty();
4340
4342
  },
4341
4343
  [sections, setSections, markDirty]
4342
4344
  );
4343
4345
  const moveSectionDown2 = react.useCallback(
4344
4346
  (sectionId) => {
4345
- setSections(chunk4GX347MG_js.moveSectionDown(sections, sectionId));
4347
+ setSections(chunkMZ47MV52_js.moveSectionDown(sections, sectionId));
4346
4348
  markDirty();
4347
4349
  },
4348
4350
  [sections, setSections, markDirty]
4349
4351
  );
4350
4352
  const moveSlidesToSection2 = react.useCallback(
4351
4353
  (slideIndexes, targetSectionId) => {
4352
- const result = chunk4GX347MG_js.moveSlidesToSection(sections, slides, slideIndexes, targetSectionId);
4354
+ const result = chunkMZ47MV52_js.moveSlidesToSection(sections, slides, slideIndexes, targetSectionId);
4353
4355
  setSlides(result.slides);
4354
4356
  setSections(result.sections);
4355
4357
  markDirty();
@@ -4368,19 +4370,19 @@ function useSectionOperations(input) {
4368
4370
 
4369
4371
  // src/viewer/hooks/pointer-move-handlers.ts
4370
4372
  function computeResizeGeometry(handle, startX, startY, startWidth, startHeight, dx, dy, snapToGrid, gridSpacingPx) {
4371
- const resized = chunk4GX347MG_js.applyResize(
4373
+ const resized = chunkMZ47MV52_js.applyResize(
4372
4374
  { x: startX, y: startY, width: startWidth, height: startHeight },
4373
4375
  handle,
4374
4376
  dx,
4375
4377
  dy,
4376
4378
  1,
4377
- { minSize: chunkP6KM7RO5_js.MIN_ELEMENT_SIZE }
4379
+ { minSize: chunkHAQDKQ52_js.MIN_ELEMENT_SIZE }
4378
4380
  );
4379
4381
  const box = { x: resized.x, y: resized.y, width: resized.width, height: resized.height };
4380
4382
  if (!snapToGrid) {
4381
4383
  return box;
4382
4384
  }
4383
- return chunk4GX347MG_js.snapBoxToGrid(box, handle, gridSpacingPx, chunkP6KM7RO5_js.MIN_ELEMENT_SIZE);
4385
+ return chunkMZ47MV52_js.snapBoxToGrid(box, handle, gridSpacingPx, chunkHAQDKQ52_js.MIN_ELEMENT_SIZE);
4384
4386
  }
4385
4387
  function computeAdjustmentValue(startAdjustment, dx, startWidth) {
4386
4388
  const range = startWidth || 200;
@@ -4498,7 +4500,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
4498
4500
  width: el.width,
4499
4501
  height: el.height
4500
4502
  }));
4501
- const snapResult = chunk4GX347MG_js.computeSnapToShape(
4503
+ const snapResult = chunkMZ47MV52_js.computeSnapToShape(
4502
4504
  targetX,
4503
4505
  targetY,
4504
4506
  primaryEl.width,
@@ -4537,7 +4539,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
4537
4539
  if (live) {
4538
4540
  for (const id of Object.keys(drag.startPositionsById)) {
4539
4541
  const start = drag.startPositionsById[id];
4540
- chunk4GX347MG_js.publishLiveGeometry(live.patcher, live.slideId, id, {
4542
+ chunkMZ47MV52_js.publishLiveGeometry(live.patcher, live.slideId, id, {
4541
4543
  x: start.x + appliedDx,
4542
4544
  y: start.y + appliedDy
4543
4545
  });
@@ -4571,15 +4573,15 @@ function processResizeMove(e, rs, editorScale, snapToGrid, gridSpacingPx, live)
4571
4573
  if (rs.domEl) {
4572
4574
  rs.domEl.style.left = `${geo.x}px`;
4573
4575
  rs.domEl.style.top = `${geo.y}px`;
4574
- rs.domEl.style.width = `${Math.max(geo.width, chunkP6KM7RO5_js.MIN_ELEMENT_SIZE)}px`;
4575
- rs.domEl.style.height = `${Math.max(geo.height, chunkP6KM7RO5_js.MIN_ELEMENT_SIZE)}px`;
4576
+ rs.domEl.style.width = `${Math.max(geo.width, chunkHAQDKQ52_js.MIN_ELEMENT_SIZE)}px`;
4577
+ rs.domEl.style.height = `${Math.max(geo.height, chunkHAQDKQ52_js.MIN_ELEMENT_SIZE)}px`;
4576
4578
  }
4577
4579
  if (live) {
4578
- chunk4GX347MG_js.publishLiveGeometry(live.patcher, live.slideId, rs.elementId, {
4580
+ chunkMZ47MV52_js.publishLiveGeometry(live.patcher, live.slideId, rs.elementId, {
4579
4581
  x: geo.x,
4580
4582
  y: geo.y,
4581
- width: Math.max(geo.width, chunkP6KM7RO5_js.MIN_ELEMENT_SIZE),
4582
- height: Math.max(geo.height, chunkP6KM7RO5_js.MIN_ELEMENT_SIZE)
4583
+ width: Math.max(geo.width, chunkHAQDKQ52_js.MIN_ELEMENT_SIZE),
4584
+ height: Math.max(geo.height, chunkHAQDKQ52_js.MIN_ELEMENT_SIZE)
4583
4585
  });
4584
4586
  }
4585
4587
  }
@@ -4607,6 +4609,7 @@ function processPointerUp(input) {
4607
4609
  dragStateRef,
4608
4610
  resizeStateRef,
4609
4611
  shapeAdjustmentDragStateRef,
4612
+ justInteractedRef,
4610
4613
  setMarqueeSelectionState,
4611
4614
  setSnapLines,
4612
4615
  setTemplateElementsBySlideId,
@@ -4659,18 +4662,21 @@ function processPointerUp(input) {
4659
4662
  if (i !== activeSlideIndex) {
4660
4663
  return s;
4661
4664
  }
4662
- const rerouted = chunk4GX347MG_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
4665
+ const rerouted = chunkMZ47MV52_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
4663
4666
  if (rerouted.length === 0) {
4664
4667
  return s;
4665
4668
  }
4666
4669
  return {
4667
4670
  ...s,
4668
- elements: chunk4GX347MG_js.applyReroutedConnectors(s.elements, rerouted)
4671
+ elements: chunkMZ47MV52_js.applyReroutedConnectors(s.elements, rerouted)
4669
4672
  };
4670
4673
  })
4671
4674
  );
4672
4675
  }
4673
4676
  const wasMoved = drag?.moved || rs?.moved || adj?.moved;
4677
+ if (wasMoved) {
4678
+ justInteractedRef.current = true;
4679
+ }
4674
4680
  if (wasMoved) {
4675
4681
  livePatcher?.flush();
4676
4682
  }
@@ -4687,9 +4693,9 @@ function processPointerUp(input) {
4687
4693
  }
4688
4694
  function commitMarquee(marquee, editTemplateMode, templateElements, activeSlide, applySelection, clearSelection) {
4689
4695
  const sourceElements = editTemplateMode ? templateElements : activeSlide?.elements ?? [];
4690
- const hitIds = chunk4GX347MG_js.computeMarqueeHitIds(marquee, sourceElements);
4696
+ const hitIds = chunkMZ47MV52_js.computeMarqueeHitIds(marquee, sourceElements);
4691
4697
  if (marquee.additive) {
4692
- const merged = chunk4GX347MG_js.mergeAdditiveSelection(marquee.baseSelectionIds, hitIds);
4698
+ const merged = chunkMZ47MV52_js.mergeAdditiveSelection(marquee.baseSelectionIds, hitIds);
4693
4699
  if (merged.length > 0) {
4694
4700
  applySelection(merged[0], merged);
4695
4701
  } else {
@@ -4712,8 +4718,8 @@ function commitDrag(drag, editTemplateMode, activeSlide, activeSlideIndex, setTe
4712
4718
  }
4713
4719
  return { ...el, x: start.x + dx, y: start.y + dy };
4714
4720
  });
4715
- const rerouted = chunk4GX347MG_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
4716
- return chunk4GX347MG_js.applyReroutedConnectors(movedElements, rerouted);
4721
+ const rerouted = chunkMZ47MV52_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
4722
+ return chunkMZ47MV52_js.applyReroutedConnectors(movedElements, rerouted);
4717
4723
  };
4718
4724
  if (editTemplateMode) {
4719
4725
  const slideId = activeSlide?.id;
@@ -4848,6 +4854,7 @@ function useCanvasInteractions(input) {
4848
4854
  resizeStateRef,
4849
4855
  shapeAdjustmentDragStateRef,
4850
4856
  marqueeStateRef,
4857
+ justInteractedRef,
4851
4858
  setInlineEditingElementId,
4852
4859
  setInlineEditingText,
4853
4860
  setContextMenuState,
@@ -4869,9 +4876,9 @@ function useCanvasInteractions(input) {
4869
4876
  return;
4870
4877
  }
4871
4878
  const el = elementLookup.get(editId);
4872
- if (el && chunk4GX347MG_js.hasTextProperties(el)) {
4879
+ if (el && chunkMZ47MV52_js.hasTextProperties(el)) {
4873
4880
  const committedText = transformCommittedText ? transformCommittedText(inlineEditingText) : inlineEditingText;
4874
- const newSegments = chunk4GX347MG_js.remapTextToSegments(committedText, el.textSegments, el.textStyle);
4881
+ const newSegments = chunkMZ47MV52_js.remapTextToSegments(committedText, el.textSegments, el.textStyle);
4875
4882
  ops.updateElementById(editId, {
4876
4883
  text: committedText,
4877
4884
  textSegments: newSegments
@@ -4882,7 +4889,7 @@ function useCanvasInteractions(input) {
4882
4889
  setInlineEditingText("");
4883
4890
  };
4884
4891
  const openEquationEditorForElement = (el) => {
4885
- if (!chunk4GX347MG_js.hasTextProperties(el)) {
4892
+ if (!chunkMZ47MV52_js.hasTextProperties(el)) {
4886
4893
  return false;
4887
4894
  }
4888
4895
  const eqSeg = el.textSegments?.find((seg) => seg.equationXml);
@@ -4907,11 +4914,12 @@ function useCanvasInteractions(input) {
4907
4914
  const newIds = ids.includes(elementId) ? ids.filter((id) => id !== elementId) : [...ids, elementId];
4908
4915
  ops.applySelection(newIds[0] ?? null, newIds);
4909
4916
  } else if (selectedElementIdSet.has(elementId) && !inlineEditingElementId) {
4910
- if (justSelectedRef.current) {
4917
+ if (justSelectedRef.current || justInteractedRef.current) {
4911
4918
  justSelectedRef.current = false;
4919
+ justInteractedRef.current = false;
4912
4920
  } else {
4913
4921
  const el = elementLookup.get(elementId);
4914
- if (el && chunk4GX347MG_js.hasTextProperties(el) && !el.locks?.noTextEdit) {
4922
+ if (el && chunkMZ47MV52_js.hasTextProperties(el) && !el.locks?.noTextEdit) {
4915
4923
  if (!openEquationEditorForElement(el)) {
4916
4924
  setInlineEditingElementId(elementId);
4917
4925
  setInlineEditingText(el.text ?? "");
@@ -4930,7 +4938,7 @@ function useCanvasInteractions(input) {
4930
4938
  if (openEquationEditorForElement(el)) {
4931
4939
  return;
4932
4940
  }
4933
- if (chunk4GX347MG_js.hasTextProperties(el)) {
4941
+ if (chunkMZ47MV52_js.hasTextProperties(el)) {
4934
4942
  setInlineEditingElementId(elementId);
4935
4943
  setInlineEditingText(el.text ?? "");
4936
4944
  }
@@ -5123,7 +5131,7 @@ function createFileHandlers(deps) {
5123
5131
  h = Math.round(h * scale);
5124
5132
  }
5125
5133
  addElement({
5126
- id: chunk4GX347MG_js.generateElementId(),
5134
+ id: chunkMZ47MV52_js.generateElementId(),
5127
5135
  type: "image",
5128
5136
  x: Math.round((canvasSize.width - w) / 2),
5129
5137
  y: Math.round((canvasSize.height - h) / 2),
@@ -5134,7 +5142,7 @@ function createFileHandlers(deps) {
5134
5142
  };
5135
5143
  img.onerror = () => {
5136
5144
  addElement({
5137
- id: chunk4GX347MG_js.generateElementId(),
5145
+ id: chunkMZ47MV52_js.generateElementId(),
5138
5146
  type: "image",
5139
5147
  x: 100,
5140
5148
  y: 100,
@@ -5160,7 +5168,7 @@ function createFileHandlers(deps) {
5160
5168
  const elFilePath = file.path;
5161
5169
  const insertMediaElement = (mediaSourceUrl, width, height) => {
5162
5170
  addElement({
5163
- id: chunk4GX347MG_js.generateElementId(),
5171
+ id: chunkMZ47MV52_js.generateElementId(),
5164
5172
  type: "media",
5165
5173
  mediaType,
5166
5174
  mediaMimeType: file.type || void 0,
@@ -5335,13 +5343,13 @@ function createStructuredElementHandlers(deps) {
5335
5343
  return;
5336
5344
  }
5337
5345
  addElement({
5338
- id: chunk4GX347MG_js.generateElementId(),
5346
+ id: chunkMZ47MV52_js.generateElementId(),
5339
5347
  type: "smartArt",
5340
5348
  x: 100,
5341
5349
  y: 120,
5342
5350
  width: 600,
5343
5351
  height: 340,
5344
- smartArtData: chunk4GX347MG_js.buildSmartArtPresetData(
5352
+ smartArtData: chunkMZ47MV52_js.buildSmartArtPresetData(
5345
5353
  layout,
5346
5354
  defaultItems,
5347
5355
  (i) => `node-${Date.now()}-${i}-${Math.random().toString(36).slice(2, 8)}`
@@ -5353,7 +5361,7 @@ function createStructuredElementHandlers(deps) {
5353
5361
  return;
5354
5362
  }
5355
5363
  addElement({
5356
- id: chunk4GX347MG_js.generateElementId(),
5364
+ id: chunkMZ47MV52_js.generateElementId(),
5357
5365
  type: "shape",
5358
5366
  x: 120,
5359
5367
  y: 200,
@@ -5412,7 +5420,7 @@ function createStructuredElementHandlers(deps) {
5412
5420
  const displayText = value || fieldTexts[fieldType] || fieldType;
5413
5421
  const fieldGuid = `{${crypto.randomUUID().toUpperCase()}}`;
5414
5422
  addElement({
5415
- id: chunk4GX347MG_js.generateElementId(),
5423
+ id: chunkMZ47MV52_js.generateElementId(),
5416
5424
  type: "shape",
5417
5425
  x: 120,
5418
5426
  y: 200,
@@ -5434,11 +5442,11 @@ function createStructuredElementHandlers(deps) {
5434
5442
  if (!activeSlide) {
5435
5443
  return;
5436
5444
  }
5437
- const preset = chunk4GX347MG_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
5445
+ const preset = chunkMZ47MV52_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
5438
5446
  if (!preset) {
5439
5447
  return;
5440
5448
  }
5441
- const defaultPptxAction = chunk4GX347MG_js.elementActionToPptxAction({
5449
+ const defaultPptxAction = chunkMZ47MV52_js.elementActionToPptxAction({
5442
5450
  trigger: "click",
5443
5451
  type: preset.defaultAction
5444
5452
  });
@@ -5447,7 +5455,7 @@ function createStructuredElementHandlers(deps) {
5447
5455
  defaultPptxAction.highlightClick = true;
5448
5456
  }
5449
5457
  addElement({
5450
- id: chunk4GX347MG_js.generateElementId(),
5458
+ id: chunkMZ47MV52_js.generateElementId(),
5451
5459
  type: "shape",
5452
5460
  x: 150,
5453
5461
  y: 150,
@@ -5514,14 +5522,14 @@ function useInsertElements(input) {
5514
5522
  return;
5515
5523
  }
5516
5524
  addElement({
5517
- id: chunk4GX347MG_js.generateElementId(),
5525
+ id: chunkMZ47MV52_js.generateElementId(),
5518
5526
  type: "text",
5519
5527
  x: 100,
5520
5528
  y: 100,
5521
5529
  width: 300,
5522
5530
  height: 60,
5523
5531
  text: "",
5524
- textStyle: { fontSize: chunkP6KM7RO5_js.DEFAULT_TEXT_FONT_SIZE }
5532
+ textStyle: { fontSize: chunkHAQDKQ52_js.DEFAULT_TEXT_FONT_SIZE }
5525
5533
  });
5526
5534
  };
5527
5535
  const handleAddShape = () => {
@@ -5529,7 +5537,7 @@ function useInsertElements(input) {
5529
5537
  return;
5530
5538
  }
5531
5539
  addElement({
5532
- id: chunk4GX347MG_js.generateElementId(),
5540
+ id: chunkMZ47MV52_js.generateElementId(),
5533
5541
  type: "shape",
5534
5542
  x: 150,
5535
5543
  y: 150,
@@ -5548,15 +5556,15 @@ function useInsertElements(input) {
5548
5556
  return;
5549
5557
  }
5550
5558
  addElement({
5551
- ...chunk4GX347MG_js.newTableElement(chunkP6KM7RO5_js.DEFAULT_TABLE_ROWS, chunkP6KM7RO5_js.DEFAULT_TABLE_COLUMNS, 100, 200),
5552
- id: chunk4GX347MG_js.generateElementId()
5559
+ ...chunkMZ47MV52_js.newTableElement(chunkHAQDKQ52_js.DEFAULT_TABLE_ROWS, chunkHAQDKQ52_js.DEFAULT_TABLE_COLUMNS, 100, 200),
5560
+ id: chunkMZ47MV52_js.generateElementId()
5553
5561
  });
5554
5562
  };
5555
5563
  const handleAddChart = (chartKind) => {
5556
5564
  if (!activeSlide) {
5557
5565
  return;
5558
5566
  }
5559
- addElement(chunk4GX347MG_js.createDefaultChartElement(chartKind));
5567
+ addElement(chunkMZ47MV52_js.createDefaultChartElement(chartKind));
5560
5568
  };
5561
5569
  const structured = createStructuredElementHandlers({
5562
5570
  activeSlide,
@@ -5626,7 +5634,7 @@ function useClipboardHandlers(input) {
5626
5634
  if (!selectedElement) {
5627
5635
  return;
5628
5636
  }
5629
- setClipboardPayload(chunk4GX347MG_js.buildElementClipboardPayload(selectedElement, editTemplateMode));
5637
+ setClipboardPayload(chunkMZ47MV52_js.buildElementClipboardPayload(selectedElement, editTemplateMode));
5630
5638
  };
5631
5639
  const handleDelete = () => {
5632
5640
  const idsToDelete = effectiveSelectedIds;
@@ -5643,7 +5651,7 @@ function useClipboardHandlers(input) {
5643
5651
  handleDelete();
5644
5652
  };
5645
5653
  const insertClone = (source) => {
5646
- const clone = chunk4GX347MG_js.cloneElementForPaste(source, { intoTemplate: editTemplateMode });
5654
+ const clone = chunkMZ47MV52_js.cloneElementForPaste(source, { intoTemplate: editTemplateMode });
5647
5655
  ops.updateActiveElements((els) => [...els, clone]);
5648
5656
  ops.applySelection(clone.id);
5649
5657
  history.markDirty();
@@ -5678,7 +5686,7 @@ function resolveShapePath(el) {
5678
5686
  return el.pathData;
5679
5687
  }
5680
5688
  if ("shapeType" in el && typeof el.shapeType === "string") {
5681
- const clipPath = chunk4GX347MG_js.getPresetShapeClipPath(el.shapeType);
5689
+ const clipPath = chunkMZ47MV52_js.getPresetShapeClipPath(el.shapeType);
5682
5690
  if (clipPath) {
5683
5691
  const svgPath = clipPathToSvgPath(clipPath, el.width, el.height);
5684
5692
  if (svgPath) {
@@ -5729,7 +5737,7 @@ function clipPathToSvgPath(clipPath, width, height) {
5729
5737
  return parts.join(" ");
5730
5738
  }
5731
5739
  function transformPathToGlobal(pathData, el) {
5732
- const polys = chunk4GX347MG_js.svgPathToPolygons(pathData);
5740
+ const polys = chunkMZ47MV52_js.svgPathToPolygons(pathData);
5733
5741
  if (polys.length === 0) {
5734
5742
  return pathData;
5735
5743
  }
@@ -5749,10 +5757,10 @@ function transformPathToGlobal(pathData, el) {
5749
5757
  y: pt.y * scaleY + el.y
5750
5758
  }))
5751
5759
  );
5752
- return chunk4GX347MG_js.polygonsToSvgPath(transformed);
5760
+ return chunkMZ47MV52_js.polygonsToSvgPath(transformed);
5753
5761
  }
5754
5762
  function transformPathToLocal(pathData, x, y, _width, _height) {
5755
- const polys = chunk4GX347MG_js.svgPathToPolygons(pathData);
5763
+ const polys = chunkMZ47MV52_js.svgPathToPolygons(pathData);
5756
5764
  if (polys.length === 0) {
5757
5765
  return pathData;
5758
5766
  }
@@ -5762,10 +5770,10 @@ function transformPathToLocal(pathData, x, y, _width, _height) {
5762
5770
  y: pt.y - y
5763
5771
  }))
5764
5772
  );
5765
- return chunk4GX347MG_js.polygonsToSvgPath(transformed);
5773
+ return chunkMZ47MV52_js.polygonsToSvgPath(transformed);
5766
5774
  }
5767
5775
  function pathBounds(pathData) {
5768
- const polys = chunk4GX347MG_js.svgPathToPolygons(pathData);
5776
+ const polys = chunkMZ47MV52_js.svgPathToPolygons(pathData);
5769
5777
  let minX = Infinity;
5770
5778
  let minY = Infinity;
5771
5779
  let maxX = -Infinity;
@@ -5824,7 +5832,7 @@ function useMergeShapesHandler(input) {
5824
5832
  let allFragments = [];
5825
5833
  let remaining = globalPaths[0];
5826
5834
  for (let i = 1; i < globalPaths.length; i++) {
5827
- const frags = chunk4GX347MG_js.mergeShapes("fragment", remaining, globalPaths[i]);
5835
+ const frags = chunkMZ47MV52_js.mergeShapes("fragment", remaining, globalPaths[i]);
5828
5836
  if (Array.isArray(frags)) {
5829
5837
  allFragments = frags;
5830
5838
  }
@@ -5853,7 +5861,7 @@ function useMergeShapesHandler(input) {
5853
5861
  bounds.height
5854
5862
  );
5855
5863
  const newEl = {
5856
- id: chunk4GX347MG_js.generateElementId(),
5864
+ id: chunkMZ47MV52_js.generateElementId(),
5857
5865
  type: "shape",
5858
5866
  x: bounds.x,
5859
5867
  y: bounds.y,
@@ -5891,7 +5899,7 @@ function useMergeShapesHandler(input) {
5891
5899
  } else {
5892
5900
  let resultPath = globalPaths[0];
5893
5901
  for (let i = 1; i < globalPaths.length; i++) {
5894
- const result = chunk4GX347MG_js.mergeShapes(operation, resultPath, globalPaths[i]);
5902
+ const result = chunkMZ47MV52_js.mergeShapes(operation, resultPath, globalPaths[i]);
5895
5903
  if (typeof result === "string") {
5896
5904
  resultPath = result;
5897
5905
  }
@@ -5912,7 +5920,7 @@ function useMergeShapesHandler(input) {
5912
5920
  );
5913
5921
  const primary = targets[0];
5914
5922
  const newEl = {
5915
- id: chunk4GX347MG_js.generateElementId(),
5923
+ id: chunkMZ47MV52_js.generateElementId(),
5916
5924
  type: "shape",
5917
5925
  x: bounds.x,
5918
5926
  y: bounds.y,
@@ -5975,7 +5983,7 @@ function useGroupAlignLayerHandlers(input) {
5975
5983
  if (ids.length < 2 || !activeSlide) {
5976
5984
  return;
5977
5985
  }
5978
- const { elements, groupId } = chunk4GX347MG_js.groupElements(ops.activeElements, ids, chunk4GX347MG_js.generateElementId());
5986
+ const { elements, groupId } = chunkMZ47MV52_js.groupElements(ops.activeElements, ids, chunkMZ47MV52_js.generateElementId());
5979
5987
  if (groupId === null) {
5980
5988
  return;
5981
5989
  }
@@ -5988,12 +5996,12 @@ function useGroupAlignLayerHandlers(input) {
5988
5996
  return;
5989
5997
  }
5990
5998
  const group = selectedElement;
5991
- const intoTemplate = chunk4GX347MG_js.isTemplateElementId(group.id);
5999
+ const intoTemplate = chunkMZ47MV52_js.isTemplateElementId(group.id);
5992
6000
  const ungrouped = group.children.map((child) => ({
5993
6001
  ...structuredClone(child),
5994
6002
  // Keep child ids in the same store as the group so later edits route
5995
6003
  // correctly: template groups yield template-prefixed child ids.
5996
- id: intoTemplate ? chunk4GX347MG_js.makeCloneId(true, child.id || group.id) : child.id || chunk4GX347MG_js.generateElementId(),
6004
+ id: intoTemplate ? chunkMZ47MV52_js.makeCloneId(true, child.id || group.id) : child.id || chunkMZ47MV52_js.generateElementId(),
5997
6005
  x: child.x + group.x,
5998
6006
  y: child.y + group.y
5999
6007
  }));
@@ -6017,7 +6025,7 @@ function useGroupAlignLayerHandlers(input) {
6017
6025
  if (!edge) {
6018
6026
  return;
6019
6027
  }
6020
- const positions = chunk4GX347MG_js.alignElements(selectedElements, edge);
6028
+ const positions = chunkMZ47MV52_js.alignElements(selectedElements, edge);
6021
6029
  for (const [id, pos] of positions) {
6022
6030
  const el = elementLookup.get(id);
6023
6031
  if (!el) {
@@ -6035,7 +6043,7 @@ function useGroupAlignLayerHandlers(input) {
6035
6043
  if (!distAxis) {
6036
6044
  return;
6037
6045
  }
6038
- const positions = chunk4GX347MG_js.distributeElements(selectedElements, distAxis);
6046
+ const positions = chunkMZ47MV52_js.distributeElements(selectedElements, distAxis);
6039
6047
  for (const [id, pos] of positions) {
6040
6048
  const el = elementLookup.get(id);
6041
6049
  if (!el) {
@@ -6052,7 +6060,7 @@ function useGroupAlignLayerHandlers(input) {
6052
6060
  }
6053
6061
  const id = selectedElement.id;
6054
6062
  ops.updateActiveElements(
6055
- (els) => direction === "forward" ? chunk4GX347MG_js.bringForward(els, id) : direction === "backward" ? chunk4GX347MG_js.sendBackward(els, id) : els
6063
+ (els) => direction === "forward" ? chunkMZ47MV52_js.bringForward(els, id) : direction === "backward" ? chunkMZ47MV52_js.sendBackward(els, id) : els
6056
6064
  );
6057
6065
  history.markDirty();
6058
6066
  };
@@ -6062,7 +6070,7 @@ function useGroupAlignLayerHandlers(input) {
6062
6070
  }
6063
6071
  const id = selectedElement.id;
6064
6072
  ops.updateActiveElements(
6065
- (els) => direction === "front" ? chunk4GX347MG_js.bringToFront(els, id) : chunk4GX347MG_js.sendToBack(els, id)
6073
+ (els) => direction === "front" ? chunkMZ47MV52_js.bringToFront(els, id) : chunkMZ47MV52_js.sendToBack(els, id)
6066
6074
  );
6067
6075
  history.markDirty();
6068
6076
  };
@@ -6193,7 +6201,7 @@ function useSlideManagement(input) {
6193
6201
  theme
6194
6202
  } = input;
6195
6203
  const handleAddSlide = () => {
6196
- const newSlide = chunk4GX347MG_js.createBlankSlide(slides.length + 1);
6204
+ const newSlide = chunkMZ47MV52_js.createBlankSlide(slides.length + 1);
6197
6205
  ops.updateSlides((prev) => {
6198
6206
  const next = [...prev];
6199
6207
  next.splice(activeSlideIndex + 1, 0, newSlide);
@@ -6256,7 +6264,7 @@ function useSlideManagement(input) {
6256
6264
  }
6257
6265
  const clone = {
6258
6266
  ...src,
6259
- id: chunk4GX347MG_js.makeSlideId(),
6267
+ id: chunkMZ47MV52_js.makeSlideId(),
6260
6268
  elements: src.elements.map((el) => ({
6261
6269
  ...el,
6262
6270
  id: `${el.id}-dup-${Math.random().toString(36).slice(2, 6)}`
@@ -6288,7 +6296,7 @@ function useSlideManagement(input) {
6288
6296
  const handleInsertSlideFromLayout = (layoutPath, layoutName) => {
6289
6297
  const insertAt = activeSlideIndex + 1;
6290
6298
  const draft = {
6291
- ...chunk4GX347MG_js.createBlankSlide(slides.length + 1),
6299
+ ...chunkMZ47MV52_js.createBlankSlide(slides.length + 1),
6292
6300
  layoutPath,
6293
6301
  ...layoutName ? { layoutName } : {}
6294
6302
  };
@@ -6321,9 +6329,9 @@ function useSlideManagement(input) {
6321
6329
  };
6322
6330
  const handleInsertSlideFromTemplate = (templateId) => {
6323
6331
  const insertAt = activeSlideIndex + 1;
6324
- const draft = chunk4GX347MG_js.buildSlideTemplateSlide(templateId, chunk4GX347MG_js.makeSlideId(), slides.length + 1, {
6332
+ const draft = chunkMZ47MV52_js.buildSlideTemplateSlide(templateId, chunkMZ47MV52_js.makeSlideId(), slides.length + 1, {
6325
6333
  ...canvasSize ? { slideWidth: canvasSize.width, slideHeight: canvasSize.height } : {},
6326
- scheme: chunk4GX347MG_js.templateSchemeFromTheme(theme?.colorScheme)
6334
+ scheme: chunkMZ47MV52_js.templateSchemeFromTheme(theme?.colorScheme)
6327
6335
  });
6328
6336
  ops.updateSlides((prev) => insertSlideFromLayoutUpdater(prev, activeSlideIndex, draft));
6329
6337
  setActiveSlideIndex(insertAt);
@@ -6360,7 +6368,7 @@ function createTableMergeHandlers(input) {
6360
6368
  if (!nextCell || nextCell.hMerge || nextCell.vMerge) {
6361
6369
  return;
6362
6370
  }
6363
- const newTableData = chunk4GX347MG_js.mergeCells(
6371
+ const newTableData = chunkMZ47MV52_js.mergeCells(
6364
6372
  [
6365
6373
  { row: rowIndex, col: columnIndex },
6366
6374
  { row: rowIndex, col: nextColIdx }
@@ -6368,7 +6376,7 @@ function createTableMergeHandlers(input) {
6368
6376
  td
6369
6377
  );
6370
6378
  const updates = { tableData: newTableData };
6371
- const newRawXml = chunk4GX347MG_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6379
+ const newRawXml = chunkMZ47MV52_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6372
6380
  if (newRawXml) {
6373
6381
  updates.rawXml = newRawXml;
6374
6382
  }
@@ -6394,7 +6402,7 @@ function createTableMergeHandlers(input) {
6394
6402
  if (!targetNextCell || targetNextCell.hMerge || targetNextCell.vMerge) {
6395
6403
  return;
6396
6404
  }
6397
- const newTableData = chunk4GX347MG_js.mergeCells(
6405
+ const newTableData = chunkMZ47MV52_js.mergeCells(
6398
6406
  [
6399
6407
  { row: rowIndex, col: columnIndex },
6400
6408
  { row: targetNextRowIdx, col: columnIndex }
@@ -6402,7 +6410,7 @@ function createTableMergeHandlers(input) {
6402
6410
  td
6403
6411
  );
6404
6412
  const updates = { tableData: newTableData };
6405
- const newRawXml = chunk4GX347MG_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6413
+ const newRawXml = chunkMZ47MV52_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6406
6414
  if (newRawXml) {
6407
6415
  updates.rawXml = newRawXml;
6408
6416
  }
@@ -6417,9 +6425,9 @@ function createTableMergeHandlers(input) {
6417
6425
  return;
6418
6426
  }
6419
6427
  const td = selectedElement.tableData;
6420
- const newTableData = chunk4GX347MG_js.mergeCells(ts.selectedCells, td);
6428
+ const newTableData = chunkMZ47MV52_js.mergeCells(ts.selectedCells, td);
6421
6429
  const updates = { tableData: newTableData };
6422
- const newRawXml = chunk4GX347MG_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6430
+ const newRawXml = chunkMZ47MV52_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6423
6431
  if (newRawXml) {
6424
6432
  updates.rawXml = newRawXml;
6425
6433
  }
@@ -6436,9 +6444,9 @@ function createTableMergeHandlers(input) {
6436
6444
  }
6437
6445
  const { rowIndex, columnIndex } = ts;
6438
6446
  const td = selectedElement.tableData;
6439
- const newTableData = chunk4GX347MG_js.splitCell(rowIndex, columnIndex, td);
6447
+ const newTableData = chunkMZ47MV52_js.splitCell(rowIndex, columnIndex, td);
6440
6448
  const updates = { tableData: newTableData };
6441
- const newRawXml = chunk4GX347MG_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6449
+ const newRawXml = chunkMZ47MV52_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6442
6450
  if (newRawXml) {
6443
6451
  updates.rawXml = newRawXml;
6444
6452
  }
@@ -6482,7 +6490,7 @@ function createTableStructHandlers(input) {
6482
6490
  updates.tableData = { ...el.tableData, rows: newRows };
6483
6491
  }
6484
6492
  if (el.rawXml) {
6485
- const newRawXml = chunk4GX347MG_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
6493
+ const newRawXml = chunkMZ47MV52_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
6486
6494
  if (newRawXml) {
6487
6495
  updates.rawXml = newRawXml;
6488
6496
  }
@@ -6506,7 +6514,7 @@ function createTableStructHandlers(input) {
6506
6514
  const { rowIndex, columnIndex: colIndex } = ts;
6507
6515
  const updates = {};
6508
6516
  if (selectedElement.rawXml) {
6509
- const newRawXml = chunk4GX347MG_js.updateCellTextStyleInRawXml(
6517
+ const newRawXml = chunkMZ47MV52_js.updateCellTextStyleInRawXml(
6510
6518
  selectedElement,
6511
6519
  rowIndex,
6512
6520
  colIndex,
@@ -6570,9 +6578,9 @@ function createTableStructHandlers(input) {
6570
6578
  return;
6571
6579
  }
6572
6580
  const rowIdx = ts?.rowIndex ?? 0;
6573
- const newTableData = chunk4GX347MG_js.insertTableRow(selectedElement.tableData, rowIdx, position);
6581
+ const newTableData = chunkMZ47MV52_js.insertTableRow(selectedElement.tableData, rowIdx, position);
6574
6582
  const updates = { tableData: newTableData };
6575
- const newRawXml = chunk4GX347MG_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6583
+ const newRawXml = chunkMZ47MV52_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6576
6584
  if (newRawXml) {
6577
6585
  updates.rawXml = newRawXml;
6578
6586
  }
@@ -6585,12 +6593,12 @@ function createTableStructHandlers(input) {
6585
6593
  }
6586
6594
  const td = selectedElement.tableData;
6587
6595
  const rowIdx = ts?.rowIndex ?? 0;
6588
- const newTableData = chunk4GX347MG_js.deleteTableRow(td, rowIdx);
6596
+ const newTableData = chunkMZ47MV52_js.deleteTableRow(td, rowIdx);
6589
6597
  if (newTableData === td) {
6590
6598
  return;
6591
6599
  }
6592
6600
  const updates = { tableData: newTableData };
6593
- const newRawXml = chunk4GX347MG_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6601
+ const newRawXml = chunkMZ47MV52_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6594
6602
  if (newRawXml) {
6595
6603
  updates.rawXml = newRawXml;
6596
6604
  }
@@ -6602,9 +6610,9 @@ function createTableStructHandlers(input) {
6602
6610
  return;
6603
6611
  }
6604
6612
  const colIdx = ts?.columnIndex ?? 0;
6605
- const newTableData = chunk4GX347MG_js.insertTableColumn(selectedElement.tableData, colIdx, position);
6613
+ const newTableData = chunkMZ47MV52_js.insertTableColumn(selectedElement.tableData, colIdx, position);
6606
6614
  const updates = { tableData: newTableData };
6607
- const newRawXml = chunk4GX347MG_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6615
+ const newRawXml = chunkMZ47MV52_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6608
6616
  if (newRawXml) {
6609
6617
  updates.rawXml = newRawXml;
6610
6618
  }
@@ -6617,12 +6625,12 @@ function createTableStructHandlers(input) {
6617
6625
  }
6618
6626
  const td = selectedElement.tableData;
6619
6627
  const colIdx = ts?.columnIndex ?? 0;
6620
- const newTableData = chunk4GX347MG_js.deleteTableColumn(td, colIdx);
6628
+ const newTableData = chunkMZ47MV52_js.deleteTableColumn(td, colIdx);
6621
6629
  if (newTableData === td) {
6622
6630
  return;
6623
6631
  }
6624
6632
  const updates = { tableData: newTableData };
6625
- const newRawXml = chunk4GX347MG_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6633
+ const newRawXml = chunkMZ47MV52_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6626
6634
  if (newRawXml) {
6627
6635
  updates.rawXml = newRawXml;
6628
6636
  }
@@ -6658,8 +6666,8 @@ async function renderToCanvas(element, options = {}) {
6658
6666
  return html2canvasPro(element, {
6659
6667
  ...options,
6660
6668
  onclone: async (doc, clonedEl) => {
6661
- await chunk4GX347MG_js.normalizeColorsForCapture(doc, clonedEl);
6662
- chunk4GX347MG_js.preprocessCssForCapture(clonedEl);
6669
+ await chunkMZ47MV52_js.normalizeColorsForCapture(doc, clonedEl);
6670
+ chunkMZ47MV52_js.preprocessCssForCapture(clonedEl);
6663
6671
  if (typeof userOnClone === "function") {
6664
6672
  userOnClone(doc, clonedEl);
6665
6673
  }
@@ -6715,7 +6723,7 @@ async function exportSlideToPngBlob(slideElement, options = {}) {
6715
6723
  }
6716
6724
  async function exportSlideAsPng(slideElement, slideIndex, options = {}) {
6717
6725
  const blob = await exportSlideToPngBlob(slideElement, options);
6718
- chunk4GX347MG_js.downloadBlob(blob, `slide-${slideIndex + 1}.png`);
6726
+ chunkMZ47MV52_js.downloadBlob(blob, `slide-${slideIndex + 1}.png`);
6719
6727
  }
6720
6728
  async function copySlideToClipboard(slideElement, options = {}) {
6721
6729
  const blob = await exportSlideToPngBlob(slideElement, options);
@@ -6737,15 +6745,15 @@ async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide,
6737
6745
  continue;
6738
6746
  }
6739
6747
  const canvas = await renderElementToCanvas(stageEl, scale);
6740
- images.push(chunk4GX347MG_js.canvasToJpegData(canvas));
6748
+ images.push(chunkMZ47MV52_js.canvasToJpegData(canvas));
6741
6749
  }
6742
6750
  onProgress?.(totalSlides, totalSlides);
6743
6751
  setActiveSlide(currentSlideIndex);
6744
6752
  if (images.length === 0) {
6745
- throw new Error(chunk3ISYPBSX_js.translationsEn["pptx.export.errorNoSlidesPdf"]);
6753
+ throw new Error(chunkDVZF4ARG_js.translationsEn["pptx.export.errorNoSlidesPdf"]);
6746
6754
  }
6747
- const pdfBlobUrl = chunkP6KM7RO5_js.buildPdfFromImageData(images);
6748
- chunk4GX347MG_js.downloadDataUrl(pdfBlobUrl, filename);
6755
+ const pdfBlobUrl = chunkHAQDKQ52_js.buildPdfFromImageData(images);
6756
+ chunkMZ47MV52_js.downloadDataUrl(pdfBlobUrl, filename);
6749
6757
  }
6750
6758
  async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, options = {}) {
6751
6759
  const { scale = 2, onProgress } = options;
@@ -6791,10 +6799,10 @@ async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSl
6791
6799
  onProgress?.(totalSlides, totalSlides);
6792
6800
  setActiveSlide(currentSlideIndex);
6793
6801
  if (pages.length === 0) {
6794
- throw new Error(chunk3ISYPBSX_js.translationsEn["pptx.export.errorNoSlidesNotesPdf"]);
6802
+ throw new Error(chunkDVZF4ARG_js.translationsEn["pptx.export.errorNoSlidesNotesPdf"]);
6795
6803
  }
6796
- const pdfDataUrl = chunkP6KM7RO5_js.buildNotesPdf(pages);
6797
- chunk4GX347MG_js.downloadDataUrl(pdfDataUrl, filename);
6804
+ const pdfDataUrl = chunkHAQDKQ52_js.buildNotesPdf(pages);
6805
+ chunkMZ47MV52_js.downloadDataUrl(pdfDataUrl, filename);
6798
6806
  }
6799
6807
 
6800
6808
  // src/viewer/utils/export-video.ts
@@ -6825,7 +6833,7 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
6825
6833
  }
6826
6834
  setActiveSlide(currentSlideIndex);
6827
6835
  if (slideCanvases.length === 0) {
6828
- throw new Error(chunk3ISYPBSX_js.translationsEn["pptx.export.errorNoSlidesVideo"]);
6836
+ throw new Error(chunkDVZF4ARG_js.translationsEn["pptx.export.errorNoSlidesVideo"]);
6829
6837
  }
6830
6838
  const firstCanvas = slideCanvases[0];
6831
6839
  const recordingCanvas = document.createElement("canvas");
@@ -6833,12 +6841,12 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
6833
6841
  recordingCanvas.height = firstCanvas.height;
6834
6842
  const ctx = recordingCanvas.getContext("2d");
6835
6843
  if (!ctx) {
6836
- throw new Error(chunk3ISYPBSX_js.translationsEn["pptx.export.errorNo2dContext"]);
6844
+ throw new Error(chunkDVZF4ARG_js.translationsEn["pptx.export.errorNo2dContext"]);
6837
6845
  }
6838
6846
  const fps = 30;
6839
6847
  const stream = recordingCanvas.captureStream(fps);
6840
6848
  const recorder = new MediaRecorder(stream, {
6841
- mimeType: chunk4GX347MG_js.pickSupportedMimeType([...chunk4GX347MG_js.WEBM_MIME_CANDIDATES]),
6849
+ mimeType: chunkMZ47MV52_js.pickSupportedMimeType([...chunkMZ47MV52_js.WEBM_MIME_CANDIDATES]),
6842
6850
  videoBitsPerSecond: 5e6
6843
6851
  });
6844
6852
  const chunks = [];
@@ -6861,8 +6869,8 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
6861
6869
  const duration = slideTimingsMs?.[i] ?? slideDurationMs;
6862
6870
  ctx.clearRect(0, 0, recordingCanvas.width, recordingCanvas.height);
6863
6871
  ctx.drawImage(slideCanvases[i], 0, 0);
6864
- const frameInterval = chunk4GX347MG_js.fpsToFrameIntervalMs(fps);
6865
- const framesNeeded = chunk4GX347MG_js.segmentFrameCount(duration, fps);
6872
+ const frameInterval = chunkMZ47MV52_js.fpsToFrameIntervalMs(fps);
6873
+ const framesNeeded = chunkMZ47MV52_js.segmentFrameCount(duration, fps);
6866
6874
  for (let f = 0; f < framesNeeded; f++) {
6867
6875
  if (signal?.aborted) {
6868
6876
  recorder.stop();
@@ -6909,9 +6917,9 @@ async function exportAllSlidesAsGif(slideStageRef, totalSlides, setActiveSlide,
6909
6917
  }
6910
6918
  setActiveSlide(currentSlideIndex);
6911
6919
  if (frames.length === 0) {
6912
- throw new Error(chunk3ISYPBSX_js.translationsEn["pptx.export.errorNoSlidesGif"]);
6920
+ throw new Error(chunkDVZF4ARG_js.translationsEn["pptx.export.errorNoSlidesGif"]);
6913
6921
  }
6914
- const gifBytes = chunk4GX347MG_js.encodeGif(frames, Math.round(slideDurationMs / 10));
6922
+ const gifBytes = chunkMZ47MV52_js.encodeGif(frames, Math.round(slideDurationMs / 10));
6915
6923
  onProgress?.(totalSlides, totalSlides);
6916
6924
  const buf = new ArrayBuffer(gifBytes.length);
6917
6925
  new Uint8Array(buf).set(gifBytes);
@@ -6965,7 +6973,7 @@ function exportAllSlidesToSvg(data, options = {}) {
6965
6973
  continue;
6966
6974
  }
6967
6975
  onProgress?.(processedCount, data.slides.length);
6968
- let svg = chunk4GX347MG_js.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
6976
+ let svg = chunkMZ47MV52_js.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
6969
6977
  if (embedFonts && fontFaces?.length) {
6970
6978
  svg = injectFontFaces(svg, fontFaces);
6971
6979
  }
@@ -7027,7 +7035,7 @@ function useExportSaveAs(input) {
7027
7035
  }
7028
7036
  setExportProgress(70);
7029
7037
  setExportStatusMessage("Writing README...");
7030
- const readme = chunk4GX347MG_js.generatePackageReadme(pptxFilename);
7038
+ const readme = chunkMZ47MV52_js.generatePackageReadme(pptxFilename);
7031
7039
  pkgFolder.file("README.txt", readme);
7032
7040
  if (abortCtrl.signal.aborted) {
7033
7041
  throw new DOMException("Export cancelled", "AbortError");
@@ -7038,7 +7046,7 @@ function useExportSaveAs(input) {
7038
7046
  setExportProgress(95);
7039
7047
  setExportStatusMessage("Downloading...");
7040
7048
  const baseName = pptxFilename.replace(/\.[^.]+$/u, "");
7041
- chunk4GX347MG_js.downloadBlob(zipBlob, `${baseName}-package.zip`);
7049
+ chunkMZ47MV52_js.downloadBlob(zipBlob, `${baseName}-package.zip`);
7042
7050
  setExportProgress(100);
7043
7051
  } catch (err) {
7044
7052
  if (err.name !== "AbortError") {
@@ -7061,7 +7069,7 @@ function useExportSaveAs(input) {
7061
7069
  const blob = new Blob([data], {
7062
7070
  type: "application/vnd.openxmlformats-officedocument.presentationml.presentation"
7063
7071
  });
7064
- chunk4GX347MG_js.downloadBlob(blob, `${baseName}.${ext}`);
7072
+ chunkMZ47MV52_js.downloadBlob(blob, `${baseName}.${ext}`);
7065
7073
  } catch (err) {
7066
7074
  console.error(`[PowerPointViewer] Save as .${ext} failed:`, err);
7067
7075
  }
@@ -7074,14 +7082,14 @@ function useExportSaveAs(input) {
7074
7082
  const pptxGuides = guides.map((g) => ({
7075
7083
  id: g.id,
7076
7084
  orientation: g.axis === "h" ? "horz" : "vert",
7077
- positionEmu: chunk4GX347MG_js.guidePxToEmu(g.position)
7085
+ positionEmu: chunkMZ47MV52_js.guidePxToEmu(g.position)
7078
7086
  }));
7079
7087
  return {
7080
7088
  ...slide,
7081
7089
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
7082
7090
  };
7083
7091
  });
7084
- const slidesToSave = chunkP6KM7RO5_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
7092
+ const slidesToSave = chunkHAQDKQ52_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
7085
7093
  const saveOptions = {
7086
7094
  headerFooter,
7087
7095
  presentationProperties,
@@ -7107,11 +7115,11 @@ function useExportSaveAs(input) {
7107
7115
  const handleExportJson = () => {
7108
7116
  const sourceName = filePath ? filePath.replace(/\\/gu, "/").split("/").pop() : void 0;
7109
7117
  const data = {
7110
- slides: chunkP6KM7RO5_js.buildSaveSlides(slides, templateElementsBySlideId),
7118
+ slides: chunkHAQDKQ52_js.buildSaveSlides(slides, templateElementsBySlideId),
7111
7119
  width: canvasSize.width,
7112
7120
  height: canvasSize.height,
7113
- widthEmu: chunk4GX347MG_js.guidePxToEmu(canvasSize.width),
7114
- heightEmu: chunk4GX347MG_js.guidePxToEmu(canvasSize.height),
7121
+ widthEmu: chunkMZ47MV52_js.guidePxToEmu(canvasSize.width),
7122
+ heightEmu: chunkMZ47MV52_js.guidePxToEmu(canvasSize.height),
7115
7123
  theme,
7116
7124
  headerFooter,
7117
7125
  presentationProperties,
@@ -7125,7 +7133,7 @@ function useExportSaveAs(input) {
7125
7133
  handoutMaster
7126
7134
  };
7127
7135
  try {
7128
- chunk4GX347MG_js.exportDeckJson(data, sourceName);
7136
+ chunkMZ47MV52_js.exportDeckJson(data, sourceName);
7129
7137
  } catch (err) {
7130
7138
  console.error("[PowerPointViewer] JSON export failed:", err);
7131
7139
  }
@@ -7165,7 +7173,7 @@ function safeConfirm(message) {
7165
7173
  }
7166
7174
  }
7167
7175
  function downloadBlob2(blob, filename) {
7168
- chunk4GX347MG_js.downloadBlob(blob, chunk4GX347MG_js.sanitizeDownloadFilename(filename));
7176
+ chunkMZ47MV52_js.downloadBlob(blob, chunkMZ47MV52_js.sanitizeDownloadFilename(filename));
7169
7177
  }
7170
7178
 
7171
7179
  // src/viewer/hooks/useExportHandlers.ts
@@ -7271,21 +7279,21 @@ function useExportHandlers(input) {
7271
7279
  {
7272
7280
  scale: 2,
7273
7281
  onProgress: (current, total) => {
7274
- setExportProgress(chunk4GX347MG_js.slideProgressPercent(current, total));
7275
- setExportStatusMessage(chunk4GX347MG_js.slideStatusLabel("Rendering", current, total));
7282
+ setExportProgress(chunkMZ47MV52_js.slideProgressPercent(current, total));
7283
+ setExportStatusMessage(chunkMZ47MV52_js.slideStatusLabel("Rendering", current, total));
7276
7284
  },
7277
7285
  signal: abortCtrl.signal
7278
7286
  }
7279
7287
  );
7280
- setExportProgress(chunk4GX347MG_js.EXPORT_ASSEMBLING_PERCENT);
7288
+ setExportProgress(chunkMZ47MV52_js.EXPORT_ASSEMBLING_PERCENT);
7281
7289
  setExportStatusMessage("Building PDF...");
7282
7290
  await new Promise((r) => {
7283
7291
  setTimeout(r, 100);
7284
7292
  });
7285
- setExportProgress(chunk4GX347MG_js.EXPORT_DONE_PERCENT);
7293
+ setExportProgress(chunkMZ47MV52_js.EXPORT_DONE_PERCENT);
7286
7294
  setExportStatusMessage("Done!");
7287
7295
  } catch (err) {
7288
- if (!chunk4GX347MG_js.isExportAbortError(err)) {
7296
+ if (!chunkMZ47MV52_js.isExportAbortError(err)) {
7289
7297
  console.error("[PowerPointViewer] PDF export failed:", err);
7290
7298
  }
7291
7299
  } finally {
@@ -7315,21 +7323,21 @@ function useExportHandlers(input) {
7315
7323
  {
7316
7324
  scale: 2,
7317
7325
  onProgress: (current, total) => {
7318
- setExportProgress(chunk4GX347MG_js.slideProgressPercent(current, total));
7319
- setExportStatusMessage(chunk4GX347MG_js.slideStatusLabel("Rendering", current, total));
7326
+ setExportProgress(chunkMZ47MV52_js.slideProgressPercent(current, total));
7327
+ setExportStatusMessage(chunkMZ47MV52_js.slideStatusLabel("Rendering", current, total));
7320
7328
  },
7321
7329
  signal: abortCtrl.signal
7322
7330
  }
7323
7331
  );
7324
- setExportProgress(chunk4GX347MG_js.EXPORT_ASSEMBLING_PERCENT);
7332
+ setExportProgress(chunkMZ47MV52_js.EXPORT_ASSEMBLING_PERCENT);
7325
7333
  setExportStatusMessage("Building PDF...");
7326
7334
  await new Promise((r) => {
7327
7335
  setTimeout(r, 100);
7328
7336
  });
7329
- setExportProgress(chunk4GX347MG_js.EXPORT_DONE_PERCENT);
7337
+ setExportProgress(chunkMZ47MV52_js.EXPORT_DONE_PERCENT);
7330
7338
  setExportStatusMessage("Done!");
7331
7339
  } catch (err) {
7332
- if (!chunk4GX347MG_js.isExportAbortError(err)) {
7340
+ if (!chunkMZ47MV52_js.isExportAbortError(err)) {
7333
7341
  console.error("[PowerPointViewer] Notes PDF export failed:", err);
7334
7342
  }
7335
7343
  } finally {
@@ -7370,22 +7378,22 @@ function useExportHandlers(input) {
7370
7378
  scale: 1,
7371
7379
  slideDurationMs: 3e3,
7372
7380
  onProgress: (current, total) => {
7373
- setExportProgress(chunk4GX347MG_js.slideProgressPercent(current, total, 45));
7374
- setExportStatusMessage(chunk4GX347MG_js.slideStatusLabel("Capturing", current, total));
7381
+ setExportProgress(chunkMZ47MV52_js.slideProgressPercent(current, total, 45));
7382
+ setExportStatusMessage(chunkMZ47MV52_js.slideStatusLabel("Capturing", current, total));
7375
7383
  },
7376
7384
  onRecordProgress: (current, total) => {
7377
- setExportProgress(chunk4GX347MG_js.recordProgressPercent(current, total));
7378
- setExportStatusMessage(chunk4GX347MG_js.slideStatusLabel("Recording", current, total));
7385
+ setExportProgress(chunkMZ47MV52_js.recordProgressPercent(current, total));
7386
+ setExportStatusMessage(chunkMZ47MV52_js.slideStatusLabel("Recording", current, total));
7379
7387
  },
7380
7388
  signal: abortCtrl.signal
7381
7389
  }
7382
7390
  );
7383
- setExportProgress(chunk4GX347MG_js.EXPORT_ASSEMBLING_PERCENT);
7391
+ setExportProgress(chunkMZ47MV52_js.EXPORT_ASSEMBLING_PERCENT);
7384
7392
  setExportStatusMessage("Saving file...");
7385
7393
  downloadBlob2(blob, "presentation.webm");
7386
- setExportProgress(chunk4GX347MG_js.EXPORT_DONE_PERCENT);
7394
+ setExportProgress(chunkMZ47MV52_js.EXPORT_DONE_PERCENT);
7387
7395
  } catch (err) {
7388
- if (!chunk4GX347MG_js.isExportAbortError(err)) {
7396
+ if (!chunkMZ47MV52_js.isExportAbortError(err)) {
7389
7397
  console.error("[PowerPointViewer] Video export failed:", err);
7390
7398
  }
7391
7399
  } finally {
@@ -7413,18 +7421,18 @@ function useExportHandlers(input) {
7413
7421
  scale: 0.5,
7414
7422
  slideDurationMs: 2e3,
7415
7423
  onProgress: (current, total) => {
7416
- setExportProgress(chunk4GX347MG_js.slideProgressPercent(current, total));
7417
- setExportStatusMessage(chunk4GX347MG_js.slideStatusLabel("Encoding", current, total));
7424
+ setExportProgress(chunkMZ47MV52_js.slideProgressPercent(current, total));
7425
+ setExportStatusMessage(chunkMZ47MV52_js.slideStatusLabel("Encoding", current, total));
7418
7426
  },
7419
7427
  signal: abortCtrl.signal
7420
7428
  }
7421
7429
  );
7422
- setExportProgress(chunk4GX347MG_js.EXPORT_ASSEMBLING_PERCENT);
7430
+ setExportProgress(chunkMZ47MV52_js.EXPORT_ASSEMBLING_PERCENT);
7423
7431
  setExportStatusMessage("Saving file...");
7424
7432
  downloadBlob2(blob, "presentation.gif");
7425
- setExportProgress(chunk4GX347MG_js.EXPORT_DONE_PERCENT);
7433
+ setExportProgress(chunkMZ47MV52_js.EXPORT_DONE_PERCENT);
7426
7434
  } catch (err) {
7427
- if (!chunk4GX347MG_js.isExportAbortError(err)) {
7435
+ if (!chunkMZ47MV52_js.isExportAbortError(err)) {
7428
7436
  console.error("[PowerPointViewer] GIF export failed:", err);
7429
7437
  }
7430
7438
  } finally {
@@ -7465,7 +7473,7 @@ function openPrintWindow(title, bodyHtml, orientation, colorFilter, frameSlides)
7465
7473
  }
7466
7474
  printWindow.document.open();
7467
7475
  printWindow.document.write(
7468
- chunk4GX347MG_js.buildPrintHtmlDocument({ title, bodyHtml, orientation, colorFilter, frameSlides })
7476
+ chunkMZ47MV52_js.buildPrintHtmlDocument({ title, bodyHtml, orientation, colorFilter, frameSlides })
7469
7477
  );
7470
7478
  printWindow.document.close();
7471
7479
  printWindow.focus();
@@ -7526,7 +7534,7 @@ function usePrintHandlers(input) {
7526
7534
  if (svgs.length === 0) {
7527
7535
  return;
7528
7536
  }
7529
- const printDoc = chunk4GX347MG_js.buildPrintDocument(svgs, pptxData.width, pptxData.height, {
7537
+ const printDoc = chunkMZ47MV52_js.buildPrintDocument(svgs, pptxData.width, pptxData.height, {
7530
7538
  title: "Slides (Vector)",
7531
7539
  orientation: settings.orientation,
7532
7540
  colorFilter
@@ -7562,7 +7570,7 @@ function usePrintHandlers(input) {
7562
7570
  if (settings.printWhat === "outline") {
7563
7571
  openPrintWindow(
7564
7572
  "Outline",
7565
- `<div class="outline-page">${chunk4GX347MG_js.buildOutlineHtml(slideIndices, slides)}</div>`,
7573
+ `<div class="outline-page">${chunkMZ47MV52_js.buildOutlineHtml(slideIndices, slides)}</div>`,
7566
7574
  settings.orientation,
7567
7575
  colorFilter,
7568
7576
  settings.frameSlides
@@ -7587,7 +7595,7 @@ function usePrintHandlers(input) {
7587
7595
  if (settings.printWhat === "slides") {
7588
7596
  openPrintWindow(
7589
7597
  "Slides",
7590
- chunk4GX347MG_js.buildSlidesHtml(slideImages, slideIndices),
7598
+ chunkMZ47MV52_js.buildSlidesHtml(slideImages, slideIndices),
7591
7599
  settings.orientation,
7592
7600
  colorFilter,
7593
7601
  settings.frameSlides
@@ -7597,7 +7605,7 @@ function usePrintHandlers(input) {
7597
7605
  if (settings.printWhat === "notes") {
7598
7606
  openPrintWindow(
7599
7607
  "Notes Pages",
7600
- chunk4GX347MG_js.buildNotesHtml(slideImages, slideIndices, slides),
7608
+ chunkMZ47MV52_js.buildNotesHtml(slideImages, slideIndices, slides),
7601
7609
  "portrait",
7602
7610
  colorFilter,
7603
7611
  settings.frameSlides
@@ -7608,7 +7616,7 @@ function usePrintHandlers(input) {
7608
7616
  const spp = settings.slidesPerPage;
7609
7617
  openPrintWindow(
7610
7618
  `Handout ${spp} per page`,
7611
- chunk4GX347MG_js.buildHandoutsHtml(slideImages, slideIndices, spp),
7619
+ chunkMZ47MV52_js.buildHandoutsHtml(slideImages, slideIndices, spp),
7612
7620
  "portrait",
7613
7621
  colorFilter,
7614
7622
  settings.frameSlides
@@ -7672,8 +7680,8 @@ function useThemeHandlers(input) {
7672
7680
  return;
7673
7681
  }
7674
7682
  await handler.updateThemeColorScheme(colorScheme);
7675
- const previousMap = theme?.colorScheme ? chunk4GX347MG_js.buildThemeColorMap(theme.colorScheme) : {};
7676
- setSlides((prev) => chunk4GX347MG_js.reResolveSlideColors(prev, previousMap, colorScheme));
7683
+ const previousMap = theme?.colorScheme ? chunkMZ47MV52_js.buildThemeColorMap(theme.colorScheme) : {};
7684
+ setSlides((prev) => chunkMZ47MV52_js.reResolveSlideColors(prev, previousMap, colorScheme));
7677
7685
  setTheme((prev) => prev ? { ...prev, colorScheme } : { colorScheme });
7678
7686
  bumpHistory();
7679
7687
  history.markDirty();
@@ -7778,7 +7786,7 @@ function useThemeSwitching(input) {
7778
7786
  }
7779
7787
  try {
7780
7788
  await handler.applyTheme(preset.colorScheme, preset.fontScheme, preset.name);
7781
- const newData = chunk4GX347MG_js.applyThemeToData(data, preset.colorScheme, preset.fontScheme, preset.name);
7789
+ const newData = chunkMZ47MV52_js.applyThemeToData(data, preset.colorScheme, preset.fontScheme, preset.name);
7782
7790
  onDataChange(newData);
7783
7791
  onThemeChanged?.(preset);
7784
7792
  } catch (error) {
@@ -7795,7 +7803,7 @@ function useThemeSwitching(input) {
7795
7803
  }
7796
7804
  try {
7797
7805
  await handler.applyTheme(colorScheme, fontScheme ?? {}, themeName);
7798
- const newData = chunk4GX347MG_js.applyThemeToData(data, colorScheme, fontScheme, themeName);
7806
+ const newData = chunkMZ47MV52_js.applyThemeToData(data, colorScheme, fontScheme, themeName);
7799
7807
  onDataChange(newData);
7800
7808
  } catch (error) {
7801
7809
  console.error("Failed to switch to custom theme:", error);
@@ -7807,12 +7815,12 @@ function useThemeSwitching(input) {
7807
7815
  if (!data?.theme?.colorScheme) {
7808
7816
  return void 0;
7809
7817
  }
7810
- return chunk4GX347MG_js.THEME_PRESETS.find(
7811
- (p) => chunk4GX347MG_js.themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
7818
+ return chunkMZ47MV52_js.THEME_PRESETS.find(
7819
+ (p) => chunkMZ47MV52_js.themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
7812
7820
  );
7813
7821
  }, [data?.theme?.colorScheme]);
7814
7822
  return {
7815
- presets: chunk4GX347MG_js.THEME_PRESETS,
7823
+ presets: chunkMZ47MV52_js.THEME_PRESETS,
7816
7824
  switchToPreset,
7817
7825
  switchToCustom,
7818
7826
  currentPreset
@@ -7887,7 +7895,7 @@ function usePropertyHandlers(input) {
7887
7895
  }
7888
7896
  try {
7889
7897
  const ab = await file.arrayBuffer();
7890
- const h = new chunk4GX347MG_js.PptxHandler();
7898
+ const h = new chunkMZ47MV52_js.PptxHandler();
7891
7899
  const other = await h.load(ab);
7892
7900
  if (!other) {
7893
7901
  return;
@@ -7897,7 +7905,7 @@ function usePropertyHandlers(input) {
7897
7905
  width: canvasSize.width,
7898
7906
  height: canvasSize.height
7899
7907
  };
7900
- setCompareResult(chunk4GX347MG_js.comparePresentation(cur, other));
7908
+ setCompareResult(chunkMZ47MV52_js.comparePresentation(cur, other));
7901
7909
  setIsComparePanelOpen(true);
7902
7910
  } catch (err) {
7903
7911
  console.warn("Compare failed:", err);
@@ -7914,7 +7922,7 @@ function usePropertyHandlers(input) {
7914
7922
  if (!diff || diff.status === "unchanged") {
7915
7923
  return;
7916
7924
  }
7917
- setSlides((prev) => chunk4GX347MG_js.applyAcceptSlide(prev, diff));
7925
+ setSlides((prev) => chunkMZ47MV52_js.applyAcceptSlide(prev, diff));
7918
7926
  setIsDirty(true);
7919
7927
  },
7920
7928
  [compareResult, setSlides, setIsDirty]
@@ -7925,10 +7933,10 @@ function usePropertyHandlers(input) {
7925
7933
  if (!compareResult) {
7926
7934
  return;
7927
7935
  }
7928
- setSlides((prev) => chunk4GX347MG_js.applyAcceptAllSlides(prev, compareResult));
7936
+ setSlides((prev) => chunkMZ47MV52_js.applyAcceptAllSlides(prev, compareResult));
7929
7937
  setIsDirty(true);
7930
7938
  }, [compareResult, setSlides, setIsDirty]);
7931
- const usedFontFamilies = react.useMemo(() => chunk4GX347MG_js.collectUsedFonts(slides), [slides]);
7939
+ const usedFontFamilies = react.useMemo(() => chunkMZ47MV52_js.collectUsedFonts(slides), [slides]);
7932
7940
  return {
7933
7941
  handleUpdateNotes,
7934
7942
  handleUpdateSlide,
@@ -8047,7 +8055,7 @@ function useIsMobile(input) {
8047
8055
  const containerRef = input?.containerRef;
8048
8056
  const isTouchDevice = react.useSyncExternalStore(
8049
8057
  subscribeTouchCapability,
8050
- chunk4GX347MG_js.detectTouchDevice,
8058
+ chunkMZ47MV52_js.detectTouchDevice,
8051
8059
  () => false
8052
8060
  // server snapshot
8053
8061
  );
@@ -8063,7 +8071,7 @@ function useIsMobile(input) {
8063
8071
  }
8064
8072
  return containerRef?.current?.clientHeight ?? window.innerHeight;
8065
8073
  });
8066
- const [orientation, setOrientation] = react.useState(chunk4GX347MG_js.detectOrientation);
8074
+ const [orientation, setOrientation] = react.useState(chunkMZ47MV52_js.detectOrientation);
8067
8075
  const [isVirtualKeyboardOpen, setIsVirtualKeyboardOpen] = react.useState(false);
8068
8076
  const [initialViewportHeight] = react.useState(
8069
8077
  () => typeof window !== "undefined" ? window.innerHeight : 800
@@ -8107,7 +8115,7 @@ function useIsMobile(input) {
8107
8115
  return;
8108
8116
  }
8109
8117
  const handleOrientationChange = () => {
8110
- setOrientation(chunk4GX347MG_js.detectOrientation());
8118
+ setOrientation(chunkMZ47MV52_js.detectOrientation());
8111
8119
  };
8112
8120
  if (screen.orientation) {
8113
8121
  screen.orientation.addEventListener("change", handleOrientationChange);
@@ -8137,9 +8145,9 @@ function useIsMobile(input) {
8137
8145
  window.addEventListener("resize", handleResize);
8138
8146
  return () => window.removeEventListener("resize", handleResize);
8139
8147
  }, [isTouchDevice, initialViewportHeight]);
8140
- const isMobile = chunk4GX347MG_js.isMobileViewport(containerWidth, containerHeight, isTouchDevice);
8141
- const isTablet = !isMobile && containerWidth >= chunk4GX347MG_js.MOBILE_BREAKPOINT && containerWidth < chunk4GX347MG_js.TABLET_BREAKPOINT;
8142
- const isDesktop = !isMobile && containerWidth >= chunk4GX347MG_js.TABLET_BREAKPOINT;
8148
+ const isMobile = chunkMZ47MV52_js.isMobileViewport(containerWidth, containerHeight, isTouchDevice);
8149
+ const isTablet = !isMobile && containerWidth >= chunkMZ47MV52_js.MOBILE_BREAKPOINT && containerWidth < chunkMZ47MV52_js.TABLET_BREAKPOINT;
8150
+ const isDesktop = !isMobile && containerWidth >= chunkMZ47MV52_js.TABLET_BREAKPOINT;
8143
8151
  return {
8144
8152
  isMobile,
8145
8153
  isTablet,
@@ -8200,11 +8208,11 @@ function useViewerDialogs(input) {
8200
8208
  );
8201
8209
  const [embedFontsEnabled, setEmbedFontsEnabled] = react.useState(false);
8202
8210
  const [isNarrowViewport, setIsNarrowViewport] = react.useState(
8203
- () => typeof window !== "undefined" ? chunk4GX347MG_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch()) : false
8211
+ () => typeof window !== "undefined" ? chunkMZ47MV52_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch()) : false
8204
8212
  );
8205
8213
  react.useEffect(() => {
8206
8214
  const handleWindow = () => setIsNarrowViewport(
8207
- chunk4GX347MG_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch())
8215
+ chunkMZ47MV52_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch())
8208
8216
  );
8209
8217
  let observer = null;
8210
8218
  let raf = 0;
@@ -8218,12 +8226,12 @@ function useViewerDialogs(input) {
8218
8226
  const entry = entries[0];
8219
8227
  if (entry) {
8220
8228
  setIsNarrowViewport(
8221
- chunk4GX347MG_js.isMobileViewport(entry.contentRect.width, entry.contentRect.height, viewportIsTouch())
8229
+ chunkMZ47MV52_js.isMobileViewport(entry.contentRect.width, entry.contentRect.height, viewportIsTouch())
8222
8230
  );
8223
8231
  }
8224
8232
  });
8225
8233
  observer.observe(el);
8226
- setIsNarrowViewport(chunk4GX347MG_js.isMobileViewport(el.clientWidth, el.clientHeight, viewportIsTouch()));
8234
+ setIsNarrowViewport(chunkMZ47MV52_js.isMobileViewport(el.clientWidth, el.clientHeight, viewportIsTouch()));
8227
8235
  };
8228
8236
  attach();
8229
8237
  window.addEventListener("resize", handleWindow);
@@ -8381,20 +8389,20 @@ function useViewerDialogs(input) {
8381
8389
  }
8382
8390
  function computeGridSpacingPx(presentationGridSpacing) {
8383
8391
  if (presentationGridSpacing) {
8384
- const px = Math.round(presentationGridSpacing.cx / chunkP6KM7RO5_js.EMU_PER_PX);
8392
+ const px = Math.round(presentationGridSpacing.cx / chunkHAQDKQ52_js.EMU_PER_PX);
8385
8393
  if (px > 0) {
8386
8394
  return px;
8387
8395
  }
8388
8396
  }
8389
- return chunkP6KM7RO5_js.GRID_SIZE;
8397
+ return chunkHAQDKQ52_js.GRID_SIZE;
8390
8398
  }
8391
8399
  function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows) {
8392
8400
  const activeShow = activeCustomShowId ? customShows.find((show) => show.id === activeCustomShowId) : void 0;
8393
- return chunk4GX347MG_js.resolveShowSlideIndexes(slides, activeShow);
8401
+ return chunkMZ47MV52_js.resolveShowSlideIndexes(slides, activeShow);
8394
8402
  }
8395
8403
  function computeSlideSectionGroups(slides, sections) {
8396
- return chunk4GX347MG_js.groupSlidesBySection(sections, slides).map((group) => ({
8397
- id: group.section?.id ?? (sections.length > 0 ? chunkP6KM7RO5_js.UNGROUPED_SECTION_ID : "default"),
8404
+ return chunkMZ47MV52_js.groupSlidesBySection(sections, slides).map((group) => ({
8405
+ id: group.section?.id ?? (sections.length > 0 ? chunkHAQDKQ52_js.UNGROUPED_SECTION_ID : "default"),
8398
8406
  label: group.section?.name ?? (sections.length > 0 ? "Ungrouped Slides" : "Slides"),
8399
8407
  slideIndexes: group.slideIndexes,
8400
8408
  ...group.section?.color !== void 0 ? { color: group.section.color } : {},
@@ -8449,7 +8457,7 @@ function useDerivedSlideState(input) {
8449
8457
  );
8450
8458
  const slideSectionGroups = react.useMemo(
8451
8459
  () => computeSlideSectionGroups(slides, sections).map((group) => {
8452
- if (group.id === chunkP6KM7RO5_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
8460
+ if (group.id === chunkHAQDKQ52_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
8453
8461
  return { ...group, label: t("pptx.slides.ungroupedSlides") };
8454
8462
  }
8455
8463
  if (group.id === "default" && group.label === "Slides") {
@@ -8552,13 +8560,13 @@ function useAnnotationHandlers(input) {
8552
8560
  }, [annotations, setMode, setSlides, history]);
8553
8561
  const handleSetMode = react.useCallback(
8554
8562
  (nextMode) => {
8555
- if (mode === "present" && nextMode !== "present" && !chunk4GX347MG_js.mayLeaveSlideShow()) {
8563
+ if (mode === "present" && nextMode !== "present" && !chunkMZ47MV52_js.mayLeaveSlideShow()) {
8556
8564
  return;
8557
8565
  }
8558
8566
  if (nextMode === "present") {
8559
8567
  presentation.enterPresentMode();
8560
8568
  } else if (mode === "present" && annotations.hasAnyAnnotations) {
8561
- chunk4GX347MG_js.stopAllPersistentAudio();
8569
+ chunkMZ47MV52_js.stopAllPersistentAudio();
8562
8570
  pendingModeAfterAnnotationsRef.current = nextMode;
8563
8571
  if (promptKeepInkAnnotations) {
8564
8572
  setShowKeepAnnotationsDialog(true);
@@ -8567,7 +8575,7 @@ function useAnnotationHandlers(input) {
8567
8575
  }
8568
8576
  } else {
8569
8577
  if (mode === "present") {
8570
- chunk4GX347MG_js.stopAllPersistentAudio();
8578
+ chunkMZ47MV52_js.stopAllPersistentAudio();
8571
8579
  }
8572
8580
  setMode(nextMode);
8573
8581
  }
@@ -8633,13 +8641,13 @@ function useSerialize(input) {
8633
8641
  let processedSlide = slide;
8634
8642
  if (pendingEditId) {
8635
8643
  const updatedElements = slide.elements.map((el) => {
8636
- if (el.id !== pendingEditId || !chunk4GX347MG_js.hasTextProperties(el)) {
8644
+ if (el.id !== pendingEditId || !chunkMZ47MV52_js.hasTextProperties(el)) {
8637
8645
  return el;
8638
8646
  }
8639
8647
  return {
8640
8648
  ...el,
8641
8649
  text: pendingEditText,
8642
- textSegments: chunk4GX347MG_js.remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
8650
+ textSegments: chunkMZ47MV52_js.remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
8643
8651
  };
8644
8652
  });
8645
8653
  if (updatedElements.some((el, i) => el !== slide.elements[i])) {
@@ -8652,14 +8660,14 @@ function useSerialize(input) {
8652
8660
  const pptxGuides = guides.map((g) => ({
8653
8661
  id: g.id,
8654
8662
  orientation: g.axis === "h" ? "horz" : "vert",
8655
- positionEmu: chunk4GX347MG_js.guidePxToEmu(g.position)
8663
+ positionEmu: chunkMZ47MV52_js.guidePxToEmu(g.position)
8656
8664
  }));
8657
8665
  return {
8658
8666
  ...processedSlide,
8659
8667
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
8660
8668
  };
8661
8669
  });
8662
- const slidesToSave = chunkP6KM7RO5_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
8670
+ const slidesToSave = chunkHAQDKQ52_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
8663
8671
  const saveOptions = {
8664
8672
  headerFooter,
8665
8673
  presentationProperties,
@@ -8828,7 +8836,7 @@ function usePresentationSetup(input) {
8828
8836
  containerRef,
8829
8837
  content,
8830
8838
  onSetMode: (nextMode) => {
8831
- if (mode === "present" && nextMode !== "present" && !chunk4GX347MG_js.mayLeaveSlideShow()) {
8839
+ if (mode === "present" && nextMode !== "present" && !chunkMZ47MV52_js.mayLeaveSlideShow()) {
8832
8840
  return;
8833
8841
  }
8834
8842
  if (mode === "present" && nextMode !== "present" && annotations.hasAnyAnnotations && promptKeepInkAnnotations) {
@@ -8836,7 +8844,7 @@ function usePresentationSetup(input) {
8836
8844
  setShowKeepAnnotationsDialog(true);
8837
8845
  } else {
8838
8846
  if (mode === "present" && nextMode !== "present") {
8839
- chunk4GX347MG_js.stopAllPersistentAudio();
8847
+ chunkMZ47MV52_js.stopAllPersistentAudio();
8840
8848
  stopAnimationSound();
8841
8849
  }
8842
8850
  setMode(nextMode);
@@ -8890,10 +8898,10 @@ function usePresentationSetup(input) {
8890
8898
  onToggleInkMarkup: () => annotations.setInkMarkupVisible(!annotations.inkMarkupVisible),
8891
8899
  onToggleToolbar: () => annotations.setToolbarVisible(!annotations.toolbarVisible),
8892
8900
  onSaveRehearsalTimings: (timings) => {
8893
- setSlides((prev) => chunk4GX347MG_js.applyRehearsalTimings(prev, timings));
8901
+ setSlides((prev) => chunkMZ47MV52_js.applyRehearsalTimings(prev, timings));
8894
8902
  history.markDirty();
8895
8903
  },
8896
- loopContinuously: chunk4GX347MG_js.shouldLoopContinuously(presentationProperties),
8904
+ loopContinuously: chunkMZ47MV52_js.shouldLoopContinuously(presentationProperties),
8897
8905
  showWithAnimation: presentationProperties.showWithAnimation,
8898
8906
  useTimings: presentationProperties.advanceMode !== "manual",
8899
8907
  endWithBlackSlide
@@ -8976,6 +8984,7 @@ function useEditorOperations(input) {
8976
8984
  resizeStateRef: state.resizeStateRef,
8977
8985
  shapeAdjustmentDragStateRef: state.shapeAdjustmentDragStateRef,
8978
8986
  marqueeStateRef: state.marqueeStateRef,
8987
+ justInteractedRef: state.justInteractedRef,
8979
8988
  setInlineEditingElementId: state.setInlineEditingElementId,
8980
8989
  setInlineEditingText: state.setInlineEditingText,
8981
8990
  setContextMenuState: state.setContextMenuState,
@@ -9057,7 +9066,7 @@ function useEditorOperations(input) {
9057
9066
  const { formatPainterActive, setFormatPainterActive, elementLookup } = state;
9058
9067
  react.useEffect(() => {
9059
9068
  if (formatPainterActive && !prevFormatPainterRef.current && selectedElement) {
9060
- copiedFormatRef.current = chunk4GX347MG_js.copyFormatFromElement(selectedElement);
9069
+ copiedFormatRef.current = chunkMZ47MV52_js.copyFormatFromElement(selectedElement);
9061
9070
  } else if (!formatPainterActive) {
9062
9071
  copiedFormatRef.current = null;
9063
9072
  }
@@ -9083,12 +9092,12 @@ function useEditorOperations(input) {
9083
9092
  e.stopPropagation();
9084
9093
  const element = elementLookup.get(elementId);
9085
9094
  if (element) {
9086
- const updated = chunk4GX347MG_js.applyFormatToElement(element, copiedFormatRef.current);
9095
+ const updated = chunkMZ47MV52_js.applyFormatToElement(element, copiedFormatRef.current);
9087
9096
  const updates = {};
9088
- if (chunk4GX347MG_js.hasShapeProperties(updated)) {
9097
+ if (chunkMZ47MV52_js.hasShapeProperties(updated)) {
9089
9098
  updates.shapeStyle = updated.shapeStyle;
9090
9099
  }
9091
- if (chunk4GX347MG_js.hasTextProperties(updated)) {
9100
+ if (chunkMZ47MV52_js.hasTextProperties(updated)) {
9092
9101
  updates.textStyle = updated.textStyle;
9093
9102
  }
9094
9103
  ops.updateElementById(elementId, updates);
@@ -9237,7 +9246,7 @@ function collectReferencedFontFamilies(slides) {
9237
9246
  const families = /* @__PURE__ */ new Set();
9238
9247
  for (const slide of slides) {
9239
9248
  for (const el of slide.elements) {
9240
- if (chunk4GX347MG_js.hasTextProperties(el) && el.textSegments) {
9249
+ if (chunkMZ47MV52_js.hasTextProperties(el) && el.textSegments) {
9241
9250
  for (const seg of el.textSegments) {
9242
9251
  if (seg.style.fontFamily) {
9243
9252
  families.add(seg.style.fontFamily);
@@ -9449,13 +9458,13 @@ function useKeyboardShortcuts(input) {
9449
9458
  inputRef.current = input;
9450
9459
  const handleKeyDown = react.useCallback((e) => {
9451
9460
  const current = inputRef.current;
9452
- const { action, dx, dy } = chunk4GX347MG_js.mapEditorKey(e, {
9461
+ const { action, dx, dy } = chunkMZ47MV52_js.mapEditorKey(e, {
9453
9462
  canEdit: current.canEdit,
9454
9463
  isPresenting: current.mode !== "edit",
9455
9464
  hasSelection: current.hasSelection,
9456
9465
  isEditingText: Boolean(current.inlineEditingElementId || current.tableEditorState?.isEditing),
9457
9466
  isDrawing: current.activeTool !== "select",
9458
- isTextInputTarget: chunk4GX347MG_js.isEditorTextInputTarget(e.target)
9467
+ isTextInputTarget: chunkMZ47MV52_js.isEditorTextInputTarget(e.target)
9459
9468
  });
9460
9469
  if (action === null) {
9461
9470
  return;
@@ -9635,6 +9644,7 @@ function useViewerIntegration(input) {
9635
9644
  resizeStateRef: state.resizeStateRef,
9636
9645
  shapeAdjustmentDragStateRef: state.shapeAdjustmentDragStateRef,
9637
9646
  marqueeStateRef: state.marqueeStateRef,
9647
+ justInteractedRef: state.justInteractedRef,
9638
9648
  editTemplateMode: state.editTemplateMode,
9639
9649
  snapToGrid: state.snapToGrid,
9640
9650
  snapToShape: state.snapToShape,
@@ -9748,7 +9758,7 @@ function useViewerIntegration(input) {
9748
9758
  return zoom.scale;
9749
9759
  },
9750
9760
  setZoom(level) {
9751
- zoom.setScale(chunk4GX347MG_js.clampZoomScale(level));
9761
+ zoom.setScale(chunkMZ47MV52_js.clampZoomScale(level));
9752
9762
  },
9753
9763
  zoomIn() {
9754
9764
  zoom.handleZoomIn();
@@ -9963,7 +9973,7 @@ function useReducedMotion() {
9963
9973
  }
9964
9974
  function useViewerOptions() {
9965
9975
  const storeRef = react.useRef(null);
9966
- storeRef.current ??= chunk4GX347MG_js.createViewerOptionsStore();
9976
+ storeRef.current ??= chunkMZ47MV52_js.createViewerOptionsStore();
9967
9977
  const store = storeRef.current;
9968
9978
  const options = react.useSyncExternalStore(
9969
9979
  (onStoreChange) => store.subscribe(onStoreChange),
@@ -9972,9 +9982,9 @@ function useViewerOptions() {
9972
9982
  );
9973
9983
  return { optionsStore: store, options };
9974
9984
  }
9975
- var KNOWN_TAB_IDS = new Set(chunk4GX347MG_js.TOOLBAR_TABS.map((tab) => tab.id));
9985
+ var KNOWN_TAB_IDS = new Set(chunkMZ47MV52_js.TOOLBAR_TABS.map((tab) => tab.id));
9976
9986
  function computeToolbarVisibility(hiddenActions) {
9977
- const isHidden = (id) => chunk4GX347MG_js.isActionHidden(id, hiddenActions);
9987
+ const isHidden = (id) => chunkMZ47MV52_js.isActionHidden(id, hiddenActions);
9978
9988
  const isTabVisible = (id) => !KNOWN_TAB_IDS.has(id) || !isHidden(id);
9979
9989
  return { isHidden, isTabVisible };
9980
9990
  }
@@ -10032,7 +10042,7 @@ function useYjsDocumentSync({
10032
10042
  if (factoriesRef.current) {
10033
10043
  return factoriesRef.current;
10034
10044
  }
10035
- const Y = await import('./yjs-HBLSEMHP.js');
10045
+ const Y = await import('./yjs-OWUA3UHD.js');
10036
10046
  const factories = {
10037
10047
  createMap: () => new Y.Map(),
10038
10048
  createArray: () => new Y.Array(),
@@ -10059,12 +10069,12 @@ function useYjsDocumentSync({
10059
10069
  return;
10060
10070
  }
10061
10071
  try {
10062
- const handler = new chunk4GX347MG_js.PptxHandler();
10072
+ const handler = new chunkMZ47MV52_js.PptxHandler();
10063
10073
  await handler.load(sourceBytes.buffer);
10064
- const currentSlides = chunk4GX347MG_js.readSlidesFromYDoc(
10074
+ const currentSlides = chunkMZ47MV52_js.readSlidesFromYDoc(
10065
10075
  doc
10066
10076
  );
10067
- const slidesToSave = chunkP6KM7RO5_js.buildSaveSlides(currentSlides, templateElementsBySlideId);
10077
+ const slidesToSave = chunkHAQDKQ52_js.buildSaveSlides(currentSlides, templateElementsBySlideId);
10068
10078
  const bytes = await handler.save(slidesToSave);
10069
10079
  config.onWriteBack(bytes);
10070
10080
  } catch {
@@ -10079,7 +10089,7 @@ function useYjsDocumentSync({
10079
10089
  if (!doc || !isConnected) {
10080
10090
  return;
10081
10091
  }
10082
- const docSlides = chunk4GX347MG_js.readSlidesFromYDoc(
10092
+ const docSlides = chunkMZ47MV52_js.readSlidesFromYDoc(
10083
10093
  doc
10084
10094
  );
10085
10095
  if (docSlides.length === 0) {
@@ -10101,11 +10111,11 @@ function useYjsDocumentSync({
10101
10111
  lastSyncedRef.current = serialized;
10102
10112
  void (async () => {
10103
10113
  const factories = await getFactories();
10104
- chunk4GX347MG_js.reconcileSlidesInYDoc(
10114
+ chunkMZ47MV52_js.reconcileSlidesInYDoc(
10105
10115
  slides,
10106
10116
  doc,
10107
10117
  factories,
10108
- chunk4GX347MG_js.LOCAL_SYNC_ORIGIN
10118
+ chunkMZ47MV52_js.LOCAL_SYNC_ORIGIN
10109
10119
  );
10110
10120
  scheduleWriteBack();
10111
10121
  })();
@@ -10119,10 +10129,10 @@ function useYjsDocumentSync({
10119
10129
  return;
10120
10130
  }
10121
10131
  const handleChange = (_events, transaction) => {
10122
- if (transaction?.origin === chunk4GX347MG_js.LOCAL_SYNC_ORIGIN) {
10132
+ if (transaction?.origin === chunkMZ47MV52_js.LOCAL_SYNC_ORIGIN) {
10123
10133
  return;
10124
10134
  }
10125
- const remoteSlides = chunk4GX347MG_js.readSlidesFromYDoc(
10135
+ const remoteSlides = chunkMZ47MV52_js.readSlidesFromYDoc(
10126
10136
  doc
10127
10137
  );
10128
10138
  if (remoteSlides.length === 0) {
@@ -10138,7 +10148,7 @@ function useYjsDocumentSync({
10138
10148
  isApplyingRemoteRef.current = false;
10139
10149
  scheduleWriteBack();
10140
10150
  };
10141
- const unobserve = chunk4GX347MG_js.observeYDocSlides(
10151
+ const unobserve = chunkMZ47MV52_js.observeYDocSlides(
10142
10152
  doc,
10143
10153
  handleChange
10144
10154
  );
@@ -10176,7 +10186,7 @@ function useBroadcastFollower({
10176
10186
  if (!broadcaster) {
10177
10187
  return;
10178
10188
  }
10179
- if (!chunk4GX347MG_js.shouldAutoFollowBroadcaster({
10189
+ if (!chunkMZ47MV52_js.shouldAutoFollowBroadcaster({
10180
10190
  localRole: collab.config.role,
10181
10191
  broadcasterRole: broadcaster.role
10182
10192
  })) {
@@ -10248,7 +10258,7 @@ function useCollaborationLivePatch({
10248
10258
  }
10249
10259
  let cancelled = false;
10250
10260
  void (async () => {
10251
- const Y = await import('./yjs-HBLSEMHP.js');
10261
+ const Y = await import('./yjs-OWUA3UHD.js');
10252
10262
  if (cancelled) {
10253
10263
  return;
10254
10264
  }
@@ -10336,10 +10346,10 @@ function useTouchGestures(input) {
10336
10346
  if (!el || !enabled) {
10337
10347
  return;
10338
10348
  }
10339
- const recognizer = chunk4GX347MG_js.createTouchGestureRecognizer({
10349
+ const recognizer = chunkMZ47MV52_js.createTouchGestureRecognizer({
10340
10350
  getScale: () => scaleRef.current,
10341
- minScale: chunk4GX347MG_js.MIN_ZOOM_SCALE,
10342
- maxScale: chunk4GX347MG_js.MAX_ZOOM_SCALE,
10351
+ minScale: chunkMZ47MV52_js.MIN_ZOOM_SCALE,
10352
+ maxScale: chunkMZ47MV52_js.MAX_ZOOM_SCALE,
10343
10353
  callbacks: {
10344
10354
  onPinchZoom: (newScale) => callbacksRef.current.onPinchZoom?.(newScale),
10345
10355
  onSwipe: (direction) => callbacksRef.current.onSwipe?.(direction),
@@ -10379,7 +10389,7 @@ function scrollFocusedIntoView(keyboardInset) {
10379
10389
  return;
10380
10390
  }
10381
10391
  const rect = active.getBoundingClientRect();
10382
- const delta = chunk4GX347MG_js.computeScrollDelta(
10392
+ const delta = chunkMZ47MV52_js.computeScrollDelta(
10383
10393
  { top: rect.top, bottom: rect.bottom },
10384
10394
  window.innerHeight,
10385
10395
  keyboardInset
@@ -10399,8 +10409,8 @@ function useKeyboardInsets(enabled = true) {
10399
10409
  return;
10400
10410
  }
10401
10411
  const update = () => {
10402
- const metrics = chunk4GX347MG_js.readViewportMetrics(window);
10403
- const inset = metrics ? chunk4GX347MG_js.computeKeyboardInset(metrics) : 0;
10412
+ const metrics = chunkMZ47MV52_js.readViewportMetrics(window);
10413
+ const inset = metrics ? chunkMZ47MV52_js.computeKeyboardInset(metrics) : 0;
10404
10414
  setKeyboardInset(inset);
10405
10415
  if (inset > 0) {
10406
10416
  window.requestAnimationFrame(() => scrollFocusedIntoView(inset));
@@ -10411,8 +10421,8 @@ function useKeyboardInsets(enabled = true) {
10411
10421
  vv.addEventListener("scroll", update);
10412
10422
  const onFocusIn = () => {
10413
10423
  window.requestAnimationFrame(() => {
10414
- const metrics = chunk4GX347MG_js.readViewportMetrics(window);
10415
- const inset = metrics ? chunk4GX347MG_js.computeKeyboardInset(metrics) : 0;
10424
+ const metrics = chunkMZ47MV52_js.readViewportMetrics(window);
10425
+ const inset = metrics ? chunkMZ47MV52_js.computeKeyboardInset(metrics) : 0;
10416
10426
  if (inset > 0) {
10417
10427
  scrollFocusedIntoView(inset);
10418
10428
  }
@@ -10425,7 +10435,7 @@ function useKeyboardInsets(enabled = true) {
10425
10435
  document.removeEventListener("focusin", onFocusIn);
10426
10436
  };
10427
10437
  }, [enabled]);
10428
- return { keyboardInset, isKeyboardOpen: chunk4GX347MG_js.isKeyboardOpen(keyboardInset) };
10438
+ return { keyboardInset, isKeyboardOpen: chunkMZ47MV52_js.isKeyboardOpen(keyboardInset) };
10429
10439
  }
10430
10440
 
10431
10441
  // src/viewer/hooks/useViewerBuildingBlocks-canvas-props.ts
@@ -10452,7 +10462,7 @@ function buildCanvasProps(input) {
10452
10462
  } = input;
10453
10463
  const effectiveSlide = mode === "master" ? masterPseudoSlide : activeSlide;
10454
10464
  const effectiveTemplateElements = mode === "master" ? s.activeLayout ? s.activeMaster?.elements ?? [] : [] : templateElements;
10455
- const fieldContext = chunk4GX347MG_js.buildFieldSubstitutionContext({
10465
+ const fieldContext = chunkMZ47MV52_js.buildFieldSubstitutionContext({
10456
10466
  headerFooter: s.headerFooter,
10457
10467
  customProperties: s.customProperties,
10458
10468
  slide: activeSlide
@@ -10462,13 +10472,13 @@ function buildCanvasProps(input) {
10462
10472
  if (mode === "present") {
10463
10473
  presentation.handlePresentationAction(action);
10464
10474
  } else if (action.url) {
10465
- chunk4GX347MG_js.safeOpenUrl(action.url);
10475
+ chunkMZ47MV52_js.safeOpenUrl(action.url);
10466
10476
  }
10467
10477
  };
10468
10478
  const handleHyperlinkClick = (url) => {
10469
- if (chunk4GX347MG_js.isPpactionUrl(url)) {
10479
+ if (chunkMZ47MV52_js.isPpactionUrl(url)) {
10470
10480
  if (mode === "present") {
10471
- const parsed = chunk4GX347MG_js.parsePpactionUrl(url);
10481
+ const parsed = chunkMZ47MV52_js.parsePpactionUrl(url);
10472
10482
  if (parsed) {
10473
10483
  presentation.handlePresentationAction({
10474
10484
  action: parsed.action,
@@ -10478,7 +10488,7 @@ function buildCanvasProps(input) {
10478
10488
  }
10479
10489
  return;
10480
10490
  }
10481
- chunk4GX347MG_js.safeOpenUrl(url);
10491
+ chunkMZ47MV52_js.safeOpenUrl(url);
10482
10492
  };
10483
10493
  return {
10484
10494
  activeSlide: effectiveSlide,
@@ -10621,7 +10631,7 @@ function buildToolbarAnimationHandlers(input) {
10621
10631
  const current = activeSlide.animations ?? [];
10622
10632
  if (group === "motionPath") {
10623
10633
  propertyHandlers.handleUpdateSlide({
10624
- animations: chunk4GX347MG_js.applyMotionPathPreset(current, selectedElement.id, preset)
10634
+ animations: chunkMZ47MV52_js.applyMotionPathPreset(current, selectedElement.id, preset)
10625
10635
  });
10626
10636
  return;
10627
10637
  }
@@ -10816,7 +10826,7 @@ function buildToolbarProps(input) {
10816
10826
  onOpenFile,
10817
10827
  onOpenRecentFile,
10818
10828
  onCreatePresentation: (templateId) => {
10819
- s.setSlides(chunk4GX347MG_js.createBackstagePresentation(templateId));
10829
+ s.setSlides(chunkMZ47MV52_js.createBackstagePresentation(templateId));
10820
10830
  s.setActiveSlideIndex(0);
10821
10831
  s.setSelectedElementId(null);
10822
10832
  s.setSelectedElementIds([]);
@@ -10843,7 +10853,7 @@ function buildToolbarProps(input) {
10843
10853
  layoutOptions: scopedLayoutOptions,
10844
10854
  onInsertSlideFromLayout: slideOps.handleInsertSlideFromLayout,
10845
10855
  onInsertSlideFromTemplate: slideOps.handleInsertSlideFromTemplate,
10846
- templateScheme: chunk4GX347MG_js.templateSchemeFromTheme(s.theme?.colorScheme),
10856
+ templateScheme: chunkMZ47MV52_js.templateSchemeFromTheme(s.theme?.colorScheme),
10847
10857
  customShows: s.customShows,
10848
10858
  activeCustomShowId: s.activeCustomShowId,
10849
10859
  onSetActiveCustomShowId: s.setActiveCustomShowId,
@@ -10875,7 +10885,7 @@ function buildToolbarProps(input) {
10875
10885
  isCommentsPanelOpen: s.isInspectorPaneOpen,
10876
10886
  slideCommentCount: activeSlide?.comments?.length ?? 0,
10877
10887
  formatPainterActive: s.formatPainterActive,
10878
- canActivateFormatPainter: chunk4GX347MG_js.hasCopyableFormat(selectedElement),
10888
+ canActivateFormatPainter: chunkMZ47MV52_js.hasCopyableFormat(selectedElement),
10879
10889
  onToggleFormatPainter: () => s.setFormatPainterActive((p) => !p),
10880
10890
  isSelectionPaneOpen: s.isSelectionPaneOpen,
10881
10891
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -11144,7 +11154,7 @@ function useViewerBuildingBlocks(input) {
11144
11154
  }, [incomingContent]);
11145
11155
  const onOpenFile = react.useCallback(() => {
11146
11156
  void (async () => {
11147
- const picked = await chunk4GX347MG_js.openPptxFile();
11157
+ const picked = await chunkMZ47MV52_js.openPptxFile();
11148
11158
  if (picked) {
11149
11159
  setContent(picked.buffer);
11150
11160
  }
@@ -11152,7 +11162,7 @@ function useViewerBuildingBlocks(input) {
11152
11162
  }, []);
11153
11163
  const onOpenRecentFile = react.useCallback((key) => {
11154
11164
  void (async () => {
11155
- const bytes = await chunk4GX347MG_js.readBackstageRecentFile(key);
11165
+ const bytes = await chunkMZ47MV52_js.readBackstageRecentFile(key);
11156
11166
  if (bytes) {
11157
11167
  setContent(bytes);
11158
11168
  }