pptx-react-viewer 2.6.1 → 2.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/{AiChatPanel-RVZOGGFK.mjs → AiChatPanel-5IAXQYGH.mjs} +3 -3
  3. package/dist/AiChatPanel-5IAXQYGH.mjs.br +0 -0
  4. package/dist/AiChatPanel-5IAXQYGH.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-LBK6YRKH.js → AiChatPanel-IC2Q3H3N.js} +22 -22
  6. package/dist/AiChatPanel-IC2Q3H3N.js.br +0 -0
  7. package/dist/AiChatPanel-IC2Q3H3N.js.gz +0 -0
  8. package/dist/{Model3DScene-L46RNRU5.js → Model3DScene-GOFY2PQS.js} +2 -2
  9. package/dist/Model3DScene-GOFY2PQS.js.br +0 -0
  10. package/dist/Model3DScene-GOFY2PQS.js.gz +0 -0
  11. package/dist/{Model3DScene-WBUZ74G3.mjs → Model3DScene-UEU7L4QY.mjs} +1 -1
  12. package/dist/Model3DScene-UEU7L4QY.mjs.br +0 -0
  13. package/dist/Model3DScene-UEU7L4QY.mjs.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-RWMGMREC.js → SurfaceChart3DScene-5TILKZMY.js} +2 -2
  15. package/dist/SurfaceChart3DScene-5TILKZMY.js.br +0 -0
  16. package/dist/SurfaceChart3DScene-5TILKZMY.js.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-CB32AJS4.mjs → SurfaceChart3DScene-KCJUDJUK.mjs} +1 -1
  18. package/dist/{SurfaceChart3DScene-CB32AJS4.mjs.br → SurfaceChart3DScene-KCJUDJUK.mjs.br} +0 -0
  19. package/dist/SurfaceChart3DScene-KCJUDJUK.mjs.gz +0 -0
  20. package/dist/{chunk-T7AMP24E.js → chunk-G7PJSVUS.js} +8 -1
  21. package/dist/chunk-G7PJSVUS.js.br +0 -0
  22. package/dist/{chunk-T7AMP24E.js.gz → chunk-G7PJSVUS.js.gz} +0 -0
  23. package/dist/{chunk-AX4Q5JWN.js → chunk-IGYK3NK5.js} +3 -3
  24. package/dist/chunk-IGYK3NK5.js.br +0 -0
  25. package/dist/chunk-IGYK3NK5.js.gz +0 -0
  26. package/dist/{chunk-BL3WW2BS.mjs → chunk-LJPRMPNA.mjs} +7 -7
  27. package/dist/chunk-LJPRMPNA.mjs.br +0 -0
  28. package/dist/chunk-LJPRMPNA.mjs.gz +0 -0
  29. package/dist/{chunk-54FSVX3O.mjs → chunk-MQYNBEOY.mjs} +2 -2
  30. package/dist/chunk-MQYNBEOY.mjs.br +0 -0
  31. package/dist/chunk-MQYNBEOY.mjs.gz +0 -0
  32. package/dist/{chunk-IEFH47TF.js → chunk-TMU7Z3CU.js} +843 -843
  33. package/dist/chunk-TMU7Z3CU.js.br +0 -0
  34. package/dist/chunk-TMU7Z3CU.js.gz +0 -0
  35. package/dist/{chunk-ZUNDIOGD.mjs → chunk-UV5R7IQY.mjs} +2 -2
  36. package/dist/chunk-UV5R7IQY.mjs.br +0 -0
  37. package/dist/chunk-UV5R7IQY.mjs.gz +0 -0
  38. package/dist/{chunk-2VE3LVKZ.js → chunk-W27U3GQS.js} +315 -315
  39. package/dist/chunk-W27U3GQS.js.br +0 -0
  40. package/dist/chunk-W27U3GQS.js.gz +0 -0
  41. package/dist/{chunk-4O7PPQ2V.js → chunk-XROVGBFQ.js} +236 -236
  42. package/dist/chunk-XROVGBFQ.js.br +0 -0
  43. package/dist/chunk-XROVGBFQ.js.gz +0 -0
  44. package/dist/{chunk-GC6HQMVG.mjs → chunk-Y4TIW2MM.mjs} +1 -1
  45. package/dist/chunk-Y4TIW2MM.mjs.br +0 -0
  46. package/dist/chunk-Y4TIW2MM.mjs.gz +0 -0
  47. package/dist/{chunk-EI456HZK.mjs → chunk-Y6H2RSLB.mjs} +8 -1
  48. package/dist/chunk-Y6H2RSLB.mjs.br +0 -0
  49. package/dist/{chunk-EI456HZK.mjs.gz → chunk-Y6H2RSLB.mjs.gz} +0 -0
  50. package/dist/index.js +34 -34
  51. package/dist/index.js.br +0 -0
  52. package/dist/index.js.gz +0 -0
  53. package/dist/index.mjs +5 -5
  54. package/dist/index.mjs.br +0 -0
  55. package/dist/index.mjs.gz +0 -0
  56. package/dist/internals.js +78 -78
  57. package/dist/internals.js.br +0 -0
  58. package/dist/internals.js.gz +0 -0
  59. package/dist/internals.mjs +3 -3
  60. package/dist/internals.mjs.br +0 -0
  61. package/dist/internals.mjs.gz +0 -0
  62. package/dist/viewer/index.js +21 -21
  63. package/dist/viewer/index.js.br +0 -0
  64. package/dist/viewer/index.js.gz +0 -0
  65. package/dist/viewer/index.mjs +5 -5
  66. package/dist/viewer/index.mjs.br +0 -0
  67. package/dist/viewer/index.mjs.gz +0 -0
  68. package/package.json +1 -1
  69. package/dist/AiChatPanel-LBK6YRKH.js.br +0 -0
  70. package/dist/AiChatPanel-LBK6YRKH.js.gz +0 -0
  71. package/dist/AiChatPanel-RVZOGGFK.mjs.br +0 -0
  72. package/dist/AiChatPanel-RVZOGGFK.mjs.gz +0 -0
  73. package/dist/Model3DScene-L46RNRU5.js.br +0 -0
  74. package/dist/Model3DScene-L46RNRU5.js.gz +0 -0
  75. package/dist/Model3DScene-WBUZ74G3.mjs.br +0 -0
  76. package/dist/Model3DScene-WBUZ74G3.mjs.gz +0 -0
  77. package/dist/SurfaceChart3DScene-CB32AJS4.mjs.gz +0 -0
  78. package/dist/SurfaceChart3DScene-RWMGMREC.js.br +0 -0
  79. package/dist/SurfaceChart3DScene-RWMGMREC.js.gz +0 -0
  80. package/dist/chunk-2VE3LVKZ.js.br +0 -0
  81. package/dist/chunk-2VE3LVKZ.js.gz +0 -0
  82. package/dist/chunk-4O7PPQ2V.js.br +0 -0
  83. package/dist/chunk-4O7PPQ2V.js.gz +0 -0
  84. package/dist/chunk-54FSVX3O.mjs.br +0 -0
  85. package/dist/chunk-54FSVX3O.mjs.gz +0 -0
  86. package/dist/chunk-AX4Q5JWN.js.br +0 -0
  87. package/dist/chunk-AX4Q5JWN.js.gz +0 -0
  88. package/dist/chunk-BL3WW2BS.mjs.br +0 -0
  89. package/dist/chunk-BL3WW2BS.mjs.gz +0 -0
  90. package/dist/chunk-EI456HZK.mjs.br +0 -0
  91. package/dist/chunk-GC6HQMVG.mjs.br +0 -0
  92. package/dist/chunk-GC6HQMVG.mjs.gz +0 -0
  93. package/dist/chunk-IEFH47TF.js.br +0 -0
  94. package/dist/chunk-IEFH47TF.js.gz +0 -0
  95. package/dist/chunk-T7AMP24E.js.br +0 -0
  96. package/dist/chunk-ZUNDIOGD.mjs.br +0 -0
  97. package/dist/chunk-ZUNDIOGD.mjs.gz +0 -0
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunk4O7PPQ2V_js = require('./chunk-4O7PPQ2V.js');
3
+ var chunkXROVGBFQ_js = require('./chunk-XROVGBFQ.js');
4
4
  var chunk25VSL2BB_js = require('./chunk-25VSL2BB.js');
5
- var chunkT7AMP24E_js = require('./chunk-T7AMP24E.js');
5
+ var chunkG7PJSVUS_js = require('./chunk-G7PJSVUS.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 = chunkT7AMP24E_js.DEFAULT_VIRTUAL_OVERSCAN
17
+ overscan = chunkG7PJSVUS_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 = chunkT7AMP24E_js.computeVirtualRange(totalItems, itemHeight, scrollTop, viewportHeight, overscan);
47
+ const range = chunkG7PJSVUS_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") => {
@@ -107,7 +107,7 @@ function usePresenceTracking({
107
107
  awareness.setLocalStateField("presence", state);
108
108
  lastBroadcastRef.current = Date.now();
109
109
  };
110
- if (elapsed >= chunkT7AMP24E_js.BROADCAST_THROTTLE_MS) {
110
+ if (elapsed >= chunkG7PJSVUS_js.BROADCAST_THROTTLE_MS) {
111
111
  if (pendingBroadcastRef.current) {
112
112
  clearTimeout(pendingBroadcastRef.current);
113
113
  pendingBroadcastRef.current = null;
@@ -117,7 +117,7 @@ function usePresenceTracking({
117
117
  pendingBroadcastRef.current = setTimeout(() => {
118
118
  pendingBroadcastRef.current = null;
119
119
  flush();
120
- }, chunkT7AMP24E_js.BROADCAST_THROTTLE_MS - elapsed);
120
+ }, chunkG7PJSVUS_js.BROADCAST_THROTTLE_MS - elapsed);
121
121
  }
122
122
  },
123
123
  [awareness, userName, userColor, userAvatar, role]
@@ -142,7 +142,7 @@ function usePresenceTracking({
142
142
  return;
143
143
  }
144
144
  const handleChange = () => {
145
- const users = chunkT7AMP24E_js.derivePresenceList(
145
+ const users = chunkG7PJSVUS_js.derivePresenceList(
146
146
  awareness.getStates(),
147
147
  localClientId,
148
148
  canvasWidth,
@@ -194,7 +194,7 @@ function useYjsProvider({ config }) {
194
194
  const departureRef = react.useRef(null);
195
195
  const gateRef = react.useRef(null);
196
196
  if (!gateRef.current) {
197
- gateRef.current = chunkT7AMP24E_js.createSyncGate(() => setSynced(true));
197
+ gateRef.current = chunkG7PJSVUS_js.createSyncGate(() => setSynced(true));
198
198
  }
199
199
  const teardown = react.useCallback(() => {
200
200
  if (timeoutRef.current) {
@@ -214,7 +214,7 @@ function useYjsProvider({ config }) {
214
214
  const buildCleanup = react.useCallback(
215
215
  (provider, yDoc) => () => {
216
216
  announceDeparture();
217
- chunkT7AMP24E_js.clearLocalAwareness(provider.awareness);
217
+ chunkG7PJSVUS_js.clearLocalAwareness(provider.awareness);
218
218
  provider.destroy();
219
219
  yDoc.destroy();
220
220
  setDoc(null);
@@ -239,9 +239,9 @@ function useYjsProvider({ config }) {
239
239
  if (config.authToken) {
240
240
  opts.password = config.authToken;
241
241
  }
242
- const roomId = chunkT7AMP24E_js.validateRoomId(config.roomId);
242
+ const roomId = chunkG7PJSVUS_js.validateRoomId(config.roomId);
243
243
  const provider = new WebrtcProvider(roomId, yDoc, opts);
244
- departureRef.current = chunkT7AMP24E_js.createDepartureChannel(roomId, provider.awareness);
244
+ departureRef.current = chunkG7PJSVUS_js.createDepartureChannel(roomId, provider.awareness);
245
245
  setDoc(yDoc);
246
246
  setAwareness(provider.awareness);
247
247
  setClientId(provider.awareness.clientID);
@@ -283,13 +283,13 @@ function useYjsProvider({ config }) {
283
283
  if (!config) {
284
284
  return;
285
285
  }
286
- const roomId = chunkT7AMP24E_js.validateRoomId(config.roomId);
287
- const transport = config.transport ?? chunkT7AMP24E_js.resolveTransportForServerUrl(config.serverUrl);
286
+ const roomId = chunkG7PJSVUS_js.validateRoomId(config.roomId);
287
+ const transport = config.transport ?? chunkG7PJSVUS_js.resolveTransportForServerUrl(config.serverUrl);
288
288
  if (transport === "webrtc") {
289
289
  await initWebrtc();
290
290
  return;
291
291
  }
292
- if (chunkT7AMP24E_js.isMixedContentBlocked(config.serverUrl)) {
292
+ if (chunkG7PJSVUS_js.isMixedContentBlocked(config.serverUrl)) {
293
293
  console.warn(
294
294
  `[pptx-viewer] Refusing to connect: insecure ws:// server "${config.serverUrl}" is blocked from a secure (https) page. Use a wss:// URL.`
295
295
  );
@@ -303,7 +303,7 @@ function useYjsProvider({ config }) {
303
303
  const provider = new WebsocketProvider(config.serverUrl, roomId, yDoc, {
304
304
  params: config.authToken ? { token: config.authToken } : void 0
305
305
  });
306
- departureRef.current = chunkT7AMP24E_js.createDepartureChannel(roomId, provider.awareness);
306
+ departureRef.current = chunkG7PJSVUS_js.createDepartureChannel(roomId, provider.awareness);
307
307
  let connected = false;
308
308
  const handleStatus = (event) => {
309
309
  if (event.status === "connected") {
@@ -343,7 +343,7 @@ function useYjsProvider({ config }) {
343
343
  provider.off("status", handleStatus);
344
344
  provider.off("sync", handleSynced);
345
345
  announceDeparture();
346
- chunkT7AMP24E_js.clearLocalAwareness(provider.awareness);
346
+ chunkG7PJSVUS_js.clearLocalAwareness(provider.awareness);
347
347
  provider.destroy();
348
348
  yDoc.destroy();
349
349
  setDoc(null);
@@ -352,7 +352,7 @@ function useYjsProvider({ config }) {
352
352
  cleanupRef.current = null;
353
353
  setStatus("error");
354
354
  }
355
- }, chunkT7AMP24E_js.CONNECTION_TIMEOUT_MS);
355
+ }, chunkG7PJSVUS_js.CONNECTION_TIMEOUT_MS);
356
356
  }
357
357
  setDoc(yDoc);
358
358
  setAwareness(provider.awareness);
@@ -361,7 +361,7 @@ function useYjsProvider({ config }) {
361
361
  provider.off("status", handleStatus);
362
362
  provider.off("sync", handleSynced);
363
363
  announceDeparture();
364
- chunkT7AMP24E_js.clearLocalAwareness(provider.awareness);
364
+ chunkG7PJSVUS_js.clearLocalAwareness(provider.awareness);
365
365
  provider.destroy();
366
366
  yDoc.destroy();
367
367
  setDoc(null);
@@ -387,7 +387,7 @@ function useYjsProvider({ config }) {
387
387
  ]);
388
388
  react.useEffect(() => {
389
389
  init();
390
- const disposeTeardown = chunkT7AMP24E_js.registerCollaborationTeardown({
390
+ const disposeTeardown = chunkG7PJSVUS_js.registerCollaborationTeardown({
391
391
  leave: teardown,
392
392
  rejoin: init
393
393
  });
@@ -408,7 +408,7 @@ function useCollaborativeState({
408
408
  canvasWidth,
409
409
  canvasHeight
410
410
  }) {
411
- const userColor = chunkT7AMP24E_js.sanitizeColor(config?.userColor, "#6366f1");
411
+ const userColor = chunkG7PJSVUS_js.sanitizeColor(config?.userColor, "#6366f1");
412
412
  const { status, awareness, doc, clientId, synced, retry } = useYjsProvider({ config });
413
413
  const { remoteUsers, broadcastPresence } = usePresenceTracking({
414
414
  awareness,
@@ -517,8 +517,8 @@ function useEditorHistory(input) {
517
517
  width: canvasSize.width,
518
518
  height: canvasSize.height,
519
519
  activeSlideIndex,
520
- slides: slides.map(chunkT7AMP24E_js.cloneSlide),
521
- templateElementsBySlideId: chunkT7AMP24E_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
520
+ slides: slides.map(chunkG7PJSVUS_js.cloneSlide),
521
+ templateElementsBySlideId: chunkG7PJSVUS_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
522
522
  ...actionLabel ? { actionLabel } : {}
523
523
  };
524
524
  },
@@ -531,9 +531,9 @@ function useEditorHistory(input) {
531
531
  width: snapshot.width,
532
532
  height: snapshot.height
533
533
  });
534
- setSlides(snapshot.slides.map(chunkT7AMP24E_js.cloneSlide));
534
+ setSlides(snapshot.slides.map(chunkG7PJSVUS_js.cloneSlide));
535
535
  setTemplateElementsBySlideId(
536
- chunkT7AMP24E_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
536
+ chunkG7PJSVUS_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
537
537
  );
538
538
  setActiveSlideIndex(Math.min(snapshot.activeSlideIndex, maxSlideIndex));
539
539
  setSelectedElementIds([]);
@@ -567,8 +567,8 @@ function useEditorHistory(input) {
567
567
  const currentSnapshot = buildHistorySnapshot();
568
568
  historyFutureRef.current.push(currentSnapshot);
569
569
  isApplyingHistoryRef.current = true;
570
- const nextSnapshot = chunk4O7PPQ2V_js.cloneHistorySnapshot(previousSnapshot);
571
- lastHistorySnapshotRef.current = chunk4O7PPQ2V_js.cloneHistorySnapshot(nextSnapshot);
570
+ const nextSnapshot = chunkXROVGBFQ_js.cloneHistorySnapshot(previousSnapshot);
571
+ lastHistorySnapshotRef.current = chunkXROVGBFQ_js.cloneHistorySnapshot(nextSnapshot);
572
572
  lastHistorySerializedRef.current = JSON.stringify(nextSnapshot);
573
573
  applyHistorySnapshot(nextSnapshot);
574
574
  updateHistoryAvailability();
@@ -589,8 +589,8 @@ function useEditorHistory(input) {
589
589
  const currentSnapshot = buildHistorySnapshot();
590
590
  historyPastRef.current.push(currentSnapshot);
591
591
  isApplyingHistoryRef.current = true;
592
- const targetSnapshot = chunk4O7PPQ2V_js.cloneHistorySnapshot(nextSnapshot);
593
- lastHistorySnapshotRef.current = chunk4O7PPQ2V_js.cloneHistorySnapshot(targetSnapshot);
592
+ const targetSnapshot = chunkXROVGBFQ_js.cloneHistorySnapshot(nextSnapshot);
593
+ lastHistorySnapshotRef.current = chunkXROVGBFQ_js.cloneHistorySnapshot(targetSnapshot);
594
594
  lastHistorySerializedRef.current = JSON.stringify(targetSnapshot);
595
595
  applyHistorySnapshot(targetSnapshot);
596
596
  updateHistoryAvailability();
@@ -608,7 +608,7 @@ function useEditorHistory(input) {
608
608
  historyPastRef.current = [];
609
609
  historyFutureRef.current = [];
610
610
  if (initialSnapshot) {
611
- const clonedInitial = chunk4O7PPQ2V_js.cloneHistorySnapshot(initialSnapshot);
611
+ const clonedInitial = chunkXROVGBFQ_js.cloneHistorySnapshot(initialSnapshot);
612
612
  lastHistorySnapshotRef.current = clonedInitial;
613
613
  lastHistorySerializedRef.current = JSON.stringify(clonedInitial);
614
614
  } else {
@@ -649,18 +649,18 @@ function useEditorHistory(input) {
649
649
  }
650
650
  const previousSnapshot = lastHistorySnapshotRef.current;
651
651
  if (!previousSnapshot) {
652
- lastHistorySnapshotRef.current = chunk4O7PPQ2V_js.cloneHistorySnapshot(snapshot);
652
+ lastHistorySnapshotRef.current = chunkXROVGBFQ_js.cloneHistorySnapshot(snapshot);
653
653
  lastHistorySerializedRef.current = serialized;
654
654
  lastCheapHashRef.current = cheapHash;
655
655
  updateHistoryAvailability();
656
656
  return;
657
657
  }
658
- historyPastRef.current.push(chunk4O7PPQ2V_js.cloneHistorySnapshot(previousSnapshot));
658
+ historyPastRef.current.push(chunkXROVGBFQ_js.cloneHistorySnapshot(previousSnapshot));
659
659
  while (historyPastRef.current.length > Math.max(1, maxHistoryEntries)) {
660
660
  historyPastRef.current.shift();
661
661
  }
662
662
  historyFutureRef.current = [];
663
- lastHistorySnapshotRef.current = chunk4O7PPQ2V_js.cloneHistorySnapshot(snapshot);
663
+ lastHistorySnapshotRef.current = chunkXROVGBFQ_js.cloneHistorySnapshot(snapshot);
664
664
  lastHistorySerializedRef.current = serialized;
665
665
  lastCheapHashRef.current = cheapHash;
666
666
  updateHistoryAvailability();
@@ -749,7 +749,7 @@ function useZoomViewport({
749
749
  if (!wrapper || !canvasViewport) {
750
750
  return;
751
751
  }
752
- const boundedScale = Math.min(Math.max(nextScale, chunk4O7PPQ2V_js.MIN_ZOOM_SCALE), chunk4O7PPQ2V_js.MAX_ZOOM_SCALE);
752
+ const boundedScale = Math.min(Math.max(nextScale, chunkXROVGBFQ_js.MIN_ZOOM_SCALE), chunkXROVGBFQ_js.MAX_ZOOM_SCALE);
753
753
  const nextEditorScale = fitScale * boundedScale;
754
754
  const centerX = (bounds.minX + bounds.maxX) / 2;
755
755
  const centerY = (bounds.minY + bounds.maxY) / 2;
@@ -764,10 +764,10 @@ function useZoomViewport({
764
764
  [fitScale]
765
765
  );
766
766
  const handleZoomIn = react.useCallback(() => {
767
- setScale((currentScale) => Math.min(currentScale + 0.1, chunk4O7PPQ2V_js.MAX_ZOOM_SCALE));
767
+ setScale((currentScale) => Math.min(currentScale + 0.1, chunkXROVGBFQ_js.MAX_ZOOM_SCALE));
768
768
  }, []);
769
769
  const handleZoomOut = react.useCallback(() => {
770
- setScale((currentScale) => Math.max(currentScale - 0.1, chunk4O7PPQ2V_js.MIN_ZOOM_SCALE));
770
+ setScale((currentScale) => Math.max(currentScale - 0.1, chunkXROVGBFQ_js.MIN_ZOOM_SCALE));
771
771
  }, []);
772
772
  const handleResetZoom = react.useCallback(() => {
773
773
  setScale(1);
@@ -786,22 +786,22 @@ function useZoomViewport({
786
786
  selectedElements.forEach((element) => {
787
787
  minX = Math.min(minX, element.x);
788
788
  minY = Math.min(minY, element.y);
789
- maxX = Math.max(maxX, element.x + Math.max(element.width, chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE));
790
- maxY = Math.max(maxY, element.y + Math.max(element.height, chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE));
789
+ maxX = Math.max(maxX, element.x + Math.max(element.width, chunkXROVGBFQ_js.MIN_ELEMENT_SIZE));
790
+ maxY = Math.max(maxY, element.y + Math.max(element.height, chunkXROVGBFQ_js.MIN_ELEMENT_SIZE));
791
791
  });
792
792
  if (!Number.isFinite(minX) || !Number.isFinite(minY) || !Number.isFinite(maxX) || !Number.isFinite(maxY)) {
793
793
  return;
794
794
  }
795
795
  const selectionBounds = { minX, minY, maxX, maxY };
796
- const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE);
797
- const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE);
796
+ const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkXROVGBFQ_js.MIN_ELEMENT_SIZE);
797
+ const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkXROVGBFQ_js.MIN_ELEMENT_SIZE);
798
798
  const availableWidth = Math.max(
799
- effectiveEditorDimensions.width - chunk4O7PPQ2V_js.ZOOM_TO_SELECTION_PADDING,
800
- chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE
799
+ effectiveEditorDimensions.width - chunkXROVGBFQ_js.ZOOM_TO_SELECTION_PADDING,
800
+ chunkXROVGBFQ_js.MIN_ELEMENT_SIZE
801
801
  );
802
802
  const availableHeight = Math.max(
803
- effectiveEditorDimensions.height - chunk4O7PPQ2V_js.ZOOM_TO_SELECTION_PADDING,
804
- chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE
803
+ effectiveEditorDimensions.height - chunkXROVGBFQ_js.ZOOM_TO_SELECTION_PADDING,
804
+ chunkXROVGBFQ_js.MIN_ELEMENT_SIZE
805
805
  );
806
806
  const targetEditorScale = Math.min(
807
807
  availableWidth / boundsWidth,
@@ -809,8 +809,8 @@ function useZoomViewport({
809
809
  );
810
810
  const safeFitScale = fitScale > Number.EPSILON ? fitScale : Number.EPSILON;
811
811
  const nextScale = Math.min(
812
- Math.max(targetEditorScale / safeFitScale, chunk4O7PPQ2V_js.MIN_ZOOM_SCALE),
813
- chunk4O7PPQ2V_js.MAX_ZOOM_SCALE
812
+ Math.max(targetEditorScale / safeFitScale, chunkXROVGBFQ_js.MIN_ZOOM_SCALE),
813
+ chunkXROVGBFQ_js.MAX_ZOOM_SCALE
814
814
  );
815
815
  setScale(nextScale);
816
816
  window.requestAnimationFrame(() => {
@@ -832,7 +832,7 @@ function useZoomViewport({
832
832
  event.preventDefault();
833
833
  const delta = event.deltaY * -1e-3;
834
834
  setScale(
835
- (currentScale) => Math.min(Math.max(currentScale + delta, chunk4O7PPQ2V_js.MIN_ZOOM_SCALE), chunk4O7PPQ2V_js.MAX_ZOOM_SCALE)
835
+ (currentScale) => Math.min(Math.max(currentScale + delta, chunkXROVGBFQ_js.MIN_ZOOM_SCALE), chunkXROVGBFQ_js.MAX_ZOOM_SCALE)
836
836
  );
837
837
  }, []);
838
838
  react.useEffect(() => {
@@ -910,7 +910,7 @@ function applyAnimationGroupSteps(group, onPlayActionSound, setPresentationEleme
910
910
  const command = step.command;
911
911
  const timer = window.setTimeout(
912
912
  () => {
913
- chunk4O7PPQ2V_js.executeMediaCommand(command);
913
+ chunkXROVGBFQ_js.executeMediaCommand(command);
914
914
  },
915
915
  Math.max(0, step.delayMs)
916
916
  );
@@ -1026,7 +1026,7 @@ function useAnimationPlayback(input) {
1026
1026
  (controller, group) => {
1027
1027
  driveBuildReveal(
1028
1028
  controller,
1029
- chunkT7AMP24E_js.PresentationAnimationController.collectBuildStepIds(group),
1029
+ chunkG7PJSVUS_js.PresentationAnimationController.collectBuildStepIds(group),
1030
1030
  setPresentationElementStates,
1031
1031
  buildRafRef
1032
1032
  );
@@ -1089,7 +1089,7 @@ function useAnimationPlayback(input) {
1089
1089
  setHoverTriggerShapeIds(/* @__PURE__ */ new Set());
1090
1090
  return;
1091
1091
  }
1092
- const controller = chunkT7AMP24E_js.PresentationAnimationController.fromSlide(slide);
1092
+ const controller = chunkG7PJSVUS_js.PresentationAnimationController.fromSlide(slide);
1093
1093
  controllerRef.current = controller;
1094
1094
  setPresentationKeyframesCss(controller.keyframesCss);
1095
1095
  setInteractiveTriggerShapeIds(controller.interactiveTriggerShapeIds);
@@ -1237,7 +1237,7 @@ function useAnimationPlayback(input) {
1237
1237
  }))
1238
1238
  );
1239
1239
  entranceAnimations.forEach((animation, animationIndex) => {
1240
- const delay = chunkT7AMP24E_js.computeEntranceAnimationDelay(animation.delayMs, animationIndex);
1240
+ const delay = chunkG7PJSVUS_js.computeEntranceAnimationDelay(animation.delayMs, animationIndex);
1241
1241
  const timer = window.setTimeout(() => {
1242
1242
  setPresentationAnimations(
1243
1243
  (previousAnimations) => previousAnimations.map(
@@ -1274,12 +1274,12 @@ function useAnimationPlayback(input) {
1274
1274
  presentationTimersRef
1275
1275
  };
1276
1276
  }
1277
- var PRESENTER_CHANNEL_NAME = chunkT7AMP24E_js.PRESENTATION_CHANNEL_NAME;
1278
- var AUDIENCE_HASH = chunkT7AMP24E_js.PRESENTATION_HASH;
1279
- var PRESENTER_MSG_ORIGIN = chunkT7AMP24E_js.PRESENTATION_MESSAGE_ORIGIN;
1280
- var AUDIENCE_NONCE_KEY = chunkT7AMP24E_js.PRESENTATION_NONCE_KEY;
1277
+ var PRESENTER_CHANNEL_NAME = chunkG7PJSVUS_js.PRESENTATION_CHANNEL_NAME;
1278
+ var AUDIENCE_HASH = chunkG7PJSVUS_js.PRESENTATION_HASH;
1279
+ var PRESENTER_MSG_ORIGIN = chunkG7PJSVUS_js.PRESENTATION_MESSAGE_ORIGIN;
1280
+ var AUDIENCE_NONCE_KEY = chunkG7PJSVUS_js.PRESENTATION_NONCE_KEY;
1281
1281
  function generateSessionId() {
1282
- return chunkT7AMP24E_js.createPresentationSessionId();
1282
+ return chunkG7PJSVUS_js.createPresentationSessionId();
1283
1283
  }
1284
1284
  function parseAudienceNonce() {
1285
1285
  const hash = window.location.hash;
@@ -1315,7 +1315,7 @@ function usePresenterWindow(input) {
1315
1315
  }, []);
1316
1316
  const swapDisplays = react.useCallback(async () => {
1317
1317
  const audience = audienceWindowRef.current;
1318
- return audience && !audience.closed ? chunkT7AMP24E_js.swapPresentationWindows(window, audience) : false;
1318
+ return audience && !audience.closed ? chunkG7PJSVUS_js.swapPresentationWindows(window, audience) : false;
1319
1319
  }, []);
1320
1320
  const syncSlideToAudience = react.useCallback(
1321
1321
  (slideIndex) => {
@@ -1379,7 +1379,7 @@ function usePresenterWindow(input) {
1379
1379
  pollTimerRef.current = null;
1380
1380
  }
1381
1381
  if (closingSessionId) {
1382
- void chunkT7AMP24E_js.clearAudienceContent(closingSessionId);
1382
+ void chunkG7PJSVUS_js.clearAudienceContent(closingSessionId);
1383
1383
  }
1384
1384
  }, [getChannel]);
1385
1385
  const openAudienceWindow = react.useCallback(() => {
@@ -1397,10 +1397,10 @@ function usePresenterWindow(input) {
1397
1397
  audienceWindowRef.current = blankWin;
1398
1398
  const sessionId = generateSessionId();
1399
1399
  sessionIdRef.current = sessionId;
1400
- const audienceUrl = chunkT7AMP24E_js.buildPresentationAudienceUrl(window.location.href, sessionId);
1401
- void chunkT7AMP24E_js.resolveAudienceScreenPlacement(window).then((placement) => {
1400
+ const audienceUrl = chunkG7PJSVUS_js.buildPresentationAudienceUrl(window.location.href, sessionId);
1401
+ void chunkG7PJSVUS_js.resolveAudienceScreenPlacement(window).then((placement) => {
1402
1402
  if (placement && audienceWindowRef.current === blankWin && !blankWin.closed) {
1403
- chunkT7AMP24E_js.placeAudienceWindow(blankWin, placement);
1403
+ chunkG7PJSVUS_js.placeAudienceWindow(blankWin, placement);
1404
1404
  }
1405
1405
  return void 0;
1406
1406
  });
@@ -1430,7 +1430,7 @@ function usePresenterWindow(input) {
1430
1430
  }
1431
1431
  };
1432
1432
  if (content) {
1433
- void chunkT7AMP24E_js.storeAudienceContent(content, sessionId).then(() => navigateOrClose(true)).catch(() => navigateOrClose(false));
1433
+ void chunkG7PJSVUS_js.storeAudienceContent(content, sessionId).then(() => navigateOrClose(true)).catch(() => navigateOrClose(false));
1434
1434
  } else {
1435
1435
  navigateOrClose(true);
1436
1436
  }
@@ -1456,7 +1456,7 @@ function usePresenterWindow(input) {
1456
1456
  }
1457
1457
  const handleMessage = (event) => {
1458
1458
  const message = event.data;
1459
- if (chunkT7AMP24E_js.isPresentationSessionMessage(message) && message.type === "audience-ready" && message.sessionId === sessionIdRef.current) {
1459
+ if (chunkG7PJSVUS_js.isPresentationSessionMessage(message) && message.type === "audience-ready" && message.sessionId === sessionIdRef.current) {
1460
1460
  syncStateToAudience(snapshotRef.current);
1461
1461
  }
1462
1462
  };
@@ -1485,7 +1485,7 @@ function usePresenterWindow(input) {
1485
1485
  react.useEffect(() => {
1486
1486
  const handleBeforeUnload = () => {
1487
1487
  if (sessionIdRef.current) {
1488
- void chunkT7AMP24E_js.clearAudienceContent(sessionIdRef.current);
1488
+ void chunkG7PJSVUS_js.clearAudienceContent(sessionIdRef.current);
1489
1489
  }
1490
1490
  };
1491
1491
  window.addEventListener("beforeunload", handleBeforeUnload);
@@ -1547,7 +1547,7 @@ function useAudienceMode(input) {
1547
1547
  }
1548
1548
  channel.onmessage = (event) => {
1549
1549
  const data = event.data;
1550
- if (!chunkT7AMP24E_js.isPresentationSessionMessage(data) || data.origin !== PRESENTER_MSG_ORIGIN) {
1550
+ if (!chunkG7PJSVUS_js.isPresentationSessionMessage(data) || data.origin !== PRESENTER_MSG_ORIGIN) {
1551
1551
  return;
1552
1552
  }
1553
1553
  if (expectedSessionId && data.sessionId !== expectedSessionId) {
@@ -1563,16 +1563,16 @@ function useAudienceMode(input) {
1563
1563
  }
1564
1564
  if (data.type === "presenter-exit") {
1565
1565
  if (expectedSessionId) {
1566
- void chunkT7AMP24E_js.clearAudienceContent(expectedSessionId);
1566
+ void chunkG7PJSVUS_js.clearAudienceContent(expectedSessionId);
1567
1567
  }
1568
- if (chunkT7AMP24E_js.endAudienceDisplay(window)) {
1568
+ if (chunkG7PJSVUS_js.endAudienceDisplay(window)) {
1569
1569
  handlers.onPresenterEnded?.();
1570
1570
  }
1571
1571
  }
1572
1572
  };
1573
1573
  if (expectedSessionId) {
1574
1574
  channel.postMessage({
1575
- origin: chunkT7AMP24E_js.PRESENTATION_MESSAGE_ORIGIN,
1575
+ origin: chunkG7PJSVUS_js.PRESENTATION_MESSAGE_ORIGIN,
1576
1576
  type: "audience-ready",
1577
1577
  sessionId: expectedSessionId
1578
1578
  });
@@ -1604,14 +1604,14 @@ function usePresentationKeyboard(input) {
1604
1604
  presentationSlideIndex,
1605
1605
  setShowRehearsalSummary
1606
1606
  } = input;
1607
- const keyBufferRef = react.useRef(chunkT7AMP24E_js.createPresentationKeyBuffer());
1607
+ const keyBufferRef = react.useRef(chunkG7PJSVUS_js.createPresentationKeyBuffer());
1608
1608
  react.useEffect(() => {
1609
- if (mode !== "present" || !chunkT7AMP24E_js.acceptsPresentationInput()) {
1610
- keyBufferRef.current = chunkT7AMP24E_js.createPresentationKeyBuffer();
1609
+ if (mode !== "present" || !chunkG7PJSVUS_js.acceptsPresentationInput()) {
1610
+ keyBufferRef.current = chunkG7PJSVUS_js.createPresentationKeyBuffer();
1611
1611
  return;
1612
1612
  }
1613
1613
  const handleKeyDown = (event) => {
1614
- const mapped = chunkT7AMP24E_js.mapPresentationKey(event, keyBufferRef.current);
1614
+ const mapped = chunkG7PJSVUS_js.mapPresentationKey(event, keyBufferRef.current);
1615
1615
  if (mapped.action === "none") {
1616
1616
  return;
1617
1617
  }
@@ -1819,7 +1819,7 @@ function handlePresentationActionImpl(action, deps) {
1819
1819
  return;
1820
1820
  }
1821
1821
  if (action.url && !actionStr.includes("hlinksldjump")) {
1822
- if (chunkT7AMP24E_js.isUrlSafe(action.url)) {
1822
+ if (chunkG7PJSVUS_js.isUrlSafe(action.url)) {
1823
1823
  window.open(action.url, "_blank", "noopener,noreferrer");
1824
1824
  }
1825
1825
  }
@@ -1829,7 +1829,7 @@ function handlePresentationActionImpl(action, deps) {
1829
1829
  function executeSlideTransition(nextSlideIndex, deps) {
1830
1830
  const incomingSlide = deps.slides[nextSlideIndex];
1831
1831
  const transition = incomingSlide?.transition;
1832
- const durationMs = deps.playTransition ? chunkT7AMP24E_js.resolveTransitionDurationMs(transition) : 0;
1832
+ const durationMs = deps.playTransition ? chunkG7PJSVUS_js.resolveTransitionDurationMs(transition) : 0;
1833
1833
  deps.clearPresentationTimers();
1834
1834
  deps.setPresentationSlideIndex(nextSlideIndex);
1835
1835
  deps.onSetActiveSlideIndex(nextSlideIndex);
@@ -2079,17 +2079,17 @@ function useZoomNavigation(input) {
2079
2079
  };
2080
2080
  }
2081
2081
  function usePresenterConsole(slideIndex) {
2082
- const timerRef = react.useRef(chunkT7AMP24E_js.createPresenterTimer());
2083
- const [snapshot, setSnapshot] = react.useState(() => chunkT7AMP24E_js.createInitialPresentationSnapshot(slideIndex));
2082
+ const timerRef = react.useRef(chunkG7PJSVUS_js.createPresenterTimer());
2083
+ const [snapshot, setSnapshot] = react.useState(() => chunkG7PJSVUS_js.createInitialPresentationSnapshot(slideIndex));
2084
2084
  const patch = react.useCallback((value) => {
2085
- setSnapshot((current) => chunkT7AMP24E_js.mergePresentationSnapshot(current, value));
2085
+ setSnapshot((current) => chunkG7PJSVUS_js.mergePresentationSnapshot(current, value));
2086
2086
  }, []);
2087
2087
  react.useEffect(() => patch({ slideIndex }), [patch, slideIndex]);
2088
2088
  react.useEffect(() => {
2089
2089
  const timer = window.setInterval(() => {
2090
2090
  patch({
2091
2091
  paused: timerRef.current.paused,
2092
- elapsedMs: chunkT7AMP24E_js.presenterElapsed(timerRef.current)
2092
+ elapsedMs: chunkG7PJSVUS_js.presenterElapsed(timerRef.current)
2093
2093
  });
2094
2094
  }, 1e3);
2095
2095
  return () => window.clearInterval(timer);
@@ -2099,19 +2099,19 @@ function usePresenterConsole(slideIndex) {
2099
2099
  applyAudienceSnapshot: setSnapshot,
2100
2100
  setBlackout: (blackout) => patch({ blackout }),
2101
2101
  toggleTimer: () => {
2102
- timerRef.current = chunkT7AMP24E_js.togglePresenterTimer(timerRef.current);
2102
+ timerRef.current = chunkG7PJSVUS_js.togglePresenterTimer(timerRef.current);
2103
2103
  patch({
2104
2104
  paused: timerRef.current.paused,
2105
- elapsedMs: chunkT7AMP24E_js.presenterElapsed(timerRef.current)
2105
+ elapsedMs: chunkG7PJSVUS_js.presenterElapsed(timerRef.current)
2106
2106
  });
2107
2107
  },
2108
2108
  resetTimer: () => {
2109
- timerRef.current = chunkT7AMP24E_js.resetPresenterTimer();
2109
+ timerRef.current = chunkG7PJSVUS_js.resetPresenterTimer();
2110
2110
  patch({ paused: false, elapsedMs: 0 });
2111
2111
  },
2112
2112
  stepZoom: (direction) => setSnapshot(
2113
- (current) => chunkT7AMP24E_js.mergePresentationSnapshot(current, {
2114
- zoom: chunkT7AMP24E_js.stepPresenterZoom(
2113
+ (current) => chunkG7PJSVUS_js.mergePresentationSnapshot(current, {
2114
+ zoom: chunkG7PJSVUS_js.stepPresenterZoom(
2115
2115
  current.zoom ?? { scale: 1, originX: 0.5, originY: 0.5 },
2116
2116
  direction
2117
2117
  )
@@ -2232,7 +2232,7 @@ function usePresentationMode(input) {
2232
2232
  });
2233
2233
  const movePresentationSlide = react.useCallback(
2234
2234
  (direction, trigger = "explicit") => {
2235
- if (!chunkT7AMP24E_js.acceptsPresentationInput()) {
2235
+ if (!chunkG7PJSVUS_js.acceptsPresentationInput()) {
2236
2236
  return;
2237
2237
  }
2238
2238
  if (endOfShowVisible) {
@@ -2434,11 +2434,11 @@ function usePresentationMode(input) {
2434
2434
  if (!transitionOverlay || transitionOverlay.transition.type !== "morph") {
2435
2435
  return void 0;
2436
2436
  }
2437
- return chunkT7AMP24E_js.buildMorphTransitionPlan(
2437
+ return chunkG7PJSVUS_js.buildMorphTransitionPlan(
2438
2438
  slides[transitionOverlay.outgoingSlideIndex],
2439
2439
  slides[transitionOverlay.incomingSlideIndex],
2440
2440
  transitionOverlay.durationMs,
2441
- chunkT7AMP24E_js.morphOptionToMode(transitionOverlay.transition.morphOption)
2441
+ chunkG7PJSVUS_js.morphOptionToMode(transitionOverlay.transition.morphOption)
2442
2442
  );
2443
2443
  }, [transitionOverlay, slides]);
2444
2444
  const morphedElementStates = react.useMemo(() => {
@@ -2744,7 +2744,7 @@ function findInSlides(slides, findQuery, findMatchCase) {
2744
2744
  const normalised = findMatchCase ? findQuery : findQuery.toLowerCase();
2745
2745
  slides.forEach((slide, slideIndex) => {
2746
2746
  for (const element of slide.elements || []) {
2747
- if (!chunkT7AMP24E_js.hasTextProperties(element)) {
2747
+ if (!chunkG7PJSVUS_js.hasTextProperties(element)) {
2748
2748
  continue;
2749
2749
  }
2750
2750
  const segments = element.textSegments ?? [];
@@ -2795,7 +2795,7 @@ function applyFindReplacements(slides, toReplace, replaceQuery) {
2795
2795
  continue;
2796
2796
  }
2797
2797
  const element = slide.elements[elIdx];
2798
- if (!chunkT7AMP24E_js.hasTextProperties(element)) {
2798
+ if (!chunkG7PJSVUS_js.hasTextProperties(element)) {
2799
2799
  continue;
2800
2800
  }
2801
2801
  const segments = [...element.textSegments ?? []];
@@ -3393,7 +3393,7 @@ function useViewerCoreState(_input) {
3393
3393
  const shapeAdjustmentDragStateRef = react.useRef(null);
3394
3394
  const marqueeStateRef = react.useRef(null);
3395
3395
  const isDrawingRef = react.useRef(false);
3396
- const livePatcher = react.useMemo(() => chunkT7AMP24E_js.createCollaborationLivePatcher(), []);
3396
+ const livePatcher = react.useMemo(() => chunkG7PJSVUS_js.createCollaborationLivePatcher(), []);
3397
3397
  react.useEffect(() => () => livePatcher.dispose(), [livePatcher]);
3398
3398
  const slidesRef = react.useRef([]);
3399
3399
  const [mode, setMode] = react.useState("edit");
@@ -3402,8 +3402,8 @@ function useViewerCoreState(_input) {
3402
3402
  const [slides, setSlides] = react.useState([]);
3403
3403
  const [templateElementsBySlideId, setTemplateElementsBySlideId] = react.useState({});
3404
3404
  const [canvasSize, setCanvasSize] = react.useState({
3405
- width: chunk4O7PPQ2V_js.DEFAULT_CANVAS_WIDTH,
3406
- height: chunk4O7PPQ2V_js.DEFAULT_CANVAS_HEIGHT
3405
+ width: chunkXROVGBFQ_js.DEFAULT_CANVAS_WIDTH,
3406
+ height: chunkXROVGBFQ_js.DEFAULT_CANVAS_HEIGHT
3407
3407
  });
3408
3408
  const [activeSlideIndex, setActiveSlideIndex] = react.useState(0);
3409
3409
  const [selectedElementId, setSelectedElementId] = react.useState(null);
@@ -3423,7 +3423,7 @@ function useViewerCoreState(_input) {
3423
3423
  const resolved = typeof value === "function" ? value(inlineEditingTextRef.current) : value;
3424
3424
  inlineEditingTextRef.current = resolved;
3425
3425
  setInlineEditingTextBase(value);
3426
- chunkT7AMP24E_js.publishLiveInlineText(
3426
+ chunkG7PJSVUS_js.publishLiveInlineText(
3427
3427
  livePatcher,
3428
3428
  slidesRef.current[activeSlideIndexRef.current],
3429
3429
  inlineEditingElementIdRef.current,
@@ -3748,7 +3748,7 @@ function useLoadContent({
3748
3748
  );
3749
3749
  }
3750
3750
  const previousHandler = handlerRef.current;
3751
- const handler = new chunkT7AMP24E_js.PptxHandler();
3751
+ const handler = new chunkG7PJSVUS_js.PptxHandler();
3752
3752
  const parsed = await handler.load(buffer);
3753
3753
  if (cancelled || token !== renderTokenRef.current) {
3754
3754
  handler.dispose();
@@ -3760,7 +3760,7 @@ function useLoadContent({
3760
3760
  handlerRef.current = null;
3761
3761
  const mediaElements = [];
3762
3762
  for (const slide of parsed.slides) {
3763
- chunkT7AMP24E_js.collectMediaElements(slide.elements, mediaElements);
3763
+ chunkG7PJSVUS_js.collectMediaElements(slide.elements, mediaElements);
3764
3764
  }
3765
3765
  for (const url of mediaDataUrls.values()) {
3766
3766
  if (url.startsWith("blob:")) {
@@ -3801,7 +3801,7 @@ function useLoadContent({
3801
3801
  }
3802
3802
  })
3803
3803
  );
3804
- const { paths: imagePaths, refs: imageRefs } = chunkT7AMP24E_js.collectImagePaths(parsed.slides);
3804
+ const { paths: imagePaths, refs: imageRefs } = chunkG7PJSVUS_js.collectImagePaths(parsed.slides);
3805
3805
  let nextSlides = parsed.slides;
3806
3806
  if (imagePaths.size > 0) {
3807
3807
  const resolvedMap = /* @__PURE__ */ new Map();
@@ -3856,12 +3856,12 @@ function useLoadContent({
3856
3856
  }
3857
3857
  }
3858
3858
  handlerRef.current = handler;
3859
- const partition = chunk4O7PPQ2V_js.partitionTemplateElements(nextSlides);
3859
+ const partition = chunkXROVGBFQ_js.partitionTemplateElements(nextSlides);
3860
3860
  setSlides(partition.slides);
3861
3861
  setTemplateElementsBySlideId(partition.templateElementsBySlideId);
3862
3862
  setCanvasSize({
3863
- width: parsed.width ?? chunk4O7PPQ2V_js.DEFAULT_CANVAS_WIDTH,
3864
- height: parsed.height ?? chunk4O7PPQ2V_js.DEFAULT_CANVAS_HEIGHT
3863
+ width: parsed.width ?? chunkXROVGBFQ_js.DEFAULT_CANVAS_WIDTH,
3864
+ height: parsed.height ?? chunkXROVGBFQ_js.DEFAULT_CANVAS_HEIGHT
3865
3865
  });
3866
3866
  setHeaderFooter(parsed.headerFooter ?? {});
3867
3867
  setLayoutOptions(parsed.layoutOptions ?? []);
@@ -3890,7 +3890,7 @@ function useLoadContent({
3890
3890
  setHasMacros(parsed.hasMacros === true);
3891
3891
  setHasDigitalSignatures(parsed.hasDigitalSignatures === true);
3892
3892
  setDigitalSignatureCount(parsed.digitalSignatureCount ?? 0);
3893
- setGuides(chunkT7AMP24E_js.buildInitialGuides(parsed.presentationGuides, parsed.slides[0]?.guides));
3893
+ setGuides(chunkG7PJSVUS_js.buildInitialGuides(parsed.presentationGuides, parsed.slides[0]?.guides));
3894
3894
  setActiveSlideIndex(0);
3895
3895
  clearSelection();
3896
3896
  setIsDirty(false);
@@ -3898,7 +3898,7 @@ function useLoadContent({
3898
3898
  onContentApplied?.();
3899
3899
  } catch (err) {
3900
3900
  if (!cancelled && token === renderTokenRef.current) {
3901
- if (err instanceof chunkT7AMP24E_js.EncryptedFileError) {
3901
+ if (err instanceof chunkG7PJSVUS_js.EncryptedFileError) {
3902
3902
  setIsEncrypted(true);
3903
3903
  } else {
3904
3904
  setError(err instanceof Error ? err.message : String(err));
@@ -3975,7 +3975,7 @@ function useAutosave(input) {
3975
3975
  isSavingRef.current = false;
3976
3976
  return;
3977
3977
  }
3978
- await chunkT7AMP24E_js.saveAutosaveSnapshot(filePathRef.current, data);
3978
+ await chunkG7PJSVUS_js.saveAutosaveSnapshot(filePathRef.current, data);
3979
3979
  setAutosaveStatus({ state: "saved", timestamp: Date.now() });
3980
3980
  } catch (err) {
3981
3981
  setAutosaveStatus({
@@ -4040,7 +4040,7 @@ function useElementOperations(input) {
4040
4040
  }, [applySelection, setInlineEditingElementId, setContextMenuState]);
4041
4041
  const updateElementById = react.useCallback(
4042
4042
  (elementId, updates) => {
4043
- if (chunkT7AMP24E_js.isTemplateElementId(elementId)) {
4043
+ if (chunkG7PJSVUS_js.isTemplateElementId(elementId)) {
4044
4044
  const slideId = activeSlide?.id;
4045
4045
  if (slideId) {
4046
4046
  setTemplateElementsBySlideId((prev) => ({
@@ -4080,7 +4080,7 @@ function useElementOperations(input) {
4080
4080
  );
4081
4081
  const updateSelectedShapeStyle = react.useCallback(
4082
4082
  (updates) => {
4083
- if (!selectedElement || !chunkT7AMP24E_js.hasShapeProperties(selectedElement)) {
4083
+ if (!selectedElement || !chunkG7PJSVUS_js.hasShapeProperties(selectedElement)) {
4084
4084
  return;
4085
4085
  }
4086
4086
  updateSelectedElement({
@@ -4091,17 +4091,17 @@ function useElementOperations(input) {
4091
4091
  );
4092
4092
  const updateSelectedTextStyle = react.useCallback(
4093
4093
  (updates) => {
4094
- if (!selectedElement || !chunkT7AMP24E_js.hasTextProperties(selectedElement)) {
4094
+ if (!selectedElement || !chunkG7PJSVUS_js.hasTextProperties(selectedElement)) {
4095
4095
  return;
4096
4096
  }
4097
- const inlineSel = chunkT7AMP24E_js.getInlineEditorSelection(selectedElement.textSegments);
4097
+ const inlineSel = chunkG7PJSVUS_js.getInlineEditorSelection(selectedElement.textSegments);
4098
4098
  if (inlineSel && selectedElement.textSegments) {
4099
- const { newSegments: newSegments2, newSelection } = chunkT7AMP24E_js.applyStyleToSelectedSegments(
4099
+ const { newSegments: newSegments2, newSelection } = chunkG7PJSVUS_js.applyStyleToSelectedSegments(
4100
4100
  selectedElement.textSegments,
4101
4101
  inlineSel,
4102
4102
  updates
4103
4103
  );
4104
- chunkT7AMP24E_js.setPendingSelectionRestore(newSelection);
4104
+ chunkG7PJSVUS_js.setPendingSelectionRestore(newSelection);
4105
4105
  updateSelectedElement({
4106
4106
  textSegments: newSegments2
4107
4107
  });
@@ -4121,12 +4121,12 @@ function useElementOperations(input) {
4121
4121
  );
4122
4122
  const updateSelectedTextCase = react.useCallback(
4123
4123
  (mode) => {
4124
- if (!selectedElement || !chunkT7AMP24E_js.hasTextProperties(selectedElement)) {
4124
+ if (!selectedElement || !chunkG7PJSVUS_js.hasTextProperties(selectedElement)) {
4125
4125
  return;
4126
4126
  }
4127
- const inlineSel = chunkT7AMP24E_js.getInlineEditorSelection(selectedElement.textSegments);
4127
+ const inlineSel = chunkG7PJSVUS_js.getInlineEditorSelection(selectedElement.textSegments);
4128
4128
  if (inlineSel && selectedElement.textSegments) {
4129
- const newSegments = chunkT7AMP24E_js.applyCaseTransformToSegments(
4129
+ const newSegments = chunkG7PJSVUS_js.applyCaseTransformToSegments(
4130
4130
  selectedElement.textSegments,
4131
4131
  inlineSel,
4132
4132
  mode
@@ -4136,14 +4136,14 @@ function useElementOperations(input) {
4136
4136
  }
4137
4137
  const updates = {};
4138
4138
  if (selectedElement.textSegments && selectedElement.textSegments.length > 0) {
4139
- updates.textSegments = chunkT7AMP24E_js.applyCaseTransformToSegments(
4139
+ updates.textSegments = chunkG7PJSVUS_js.applyCaseTransformToSegments(
4140
4140
  selectedElement.textSegments,
4141
4141
  null,
4142
4142
  mode
4143
4143
  );
4144
4144
  }
4145
4145
  if (typeof selectedElement.text === "string") {
4146
- updates.text = chunkT7AMP24E_js.transformTextCase(selectedElement.text, mode);
4146
+ updates.text = chunkG7PJSVUS_js.transformTextCase(selectedElement.text, mode);
4147
4147
  }
4148
4148
  updateSelectedElement(updates);
4149
4149
  },
@@ -4198,7 +4198,7 @@ function useSectionOperations(input) {
4198
4198
  const { sections, setSections, slides, setSlides, markDirty } = input;
4199
4199
  const addSection2 = react.useCallback(
4200
4200
  (name, afterSlideIndex) => {
4201
- const result = chunkT7AMP24E_js.addSection(sections, slides, name, afterSlideIndex);
4201
+ const result = chunkG7PJSVUS_js.addSection(sections, slides, name, afterSlideIndex);
4202
4202
  setSlides(result.slides);
4203
4203
  setSections(result.sections);
4204
4204
  markDirty();
@@ -4207,7 +4207,7 @@ function useSectionOperations(input) {
4207
4207
  );
4208
4208
  const renameSection2 = react.useCallback(
4209
4209
  (sectionId, newName) => {
4210
- const result = chunkT7AMP24E_js.renameSection(sections, slides, sectionId, newName);
4210
+ const result = chunkG7PJSVUS_js.renameSection(sections, slides, sectionId, newName);
4211
4211
  setSections(result.sections);
4212
4212
  setSlides(result.slides);
4213
4213
  markDirty();
@@ -4216,7 +4216,7 @@ function useSectionOperations(input) {
4216
4216
  );
4217
4217
  const deleteSection2 = react.useCallback(
4218
4218
  (sectionId) => {
4219
- const result = chunkT7AMP24E_js.deleteSection(sections, slides, sectionId);
4219
+ const result = chunkG7PJSVUS_js.deleteSection(sections, slides, sectionId);
4220
4220
  setSections(result.sections);
4221
4221
  setSlides(result.slides);
4222
4222
  markDirty();
@@ -4225,21 +4225,21 @@ function useSectionOperations(input) {
4225
4225
  );
4226
4226
  const moveSectionUp2 = react.useCallback(
4227
4227
  (sectionId) => {
4228
- setSections(chunkT7AMP24E_js.moveSectionUp(sections, sectionId));
4228
+ setSections(chunkG7PJSVUS_js.moveSectionUp(sections, sectionId));
4229
4229
  markDirty();
4230
4230
  },
4231
4231
  [sections, setSections, markDirty]
4232
4232
  );
4233
4233
  const moveSectionDown2 = react.useCallback(
4234
4234
  (sectionId) => {
4235
- setSections(chunkT7AMP24E_js.moveSectionDown(sections, sectionId));
4235
+ setSections(chunkG7PJSVUS_js.moveSectionDown(sections, sectionId));
4236
4236
  markDirty();
4237
4237
  },
4238
4238
  [sections, setSections, markDirty]
4239
4239
  );
4240
4240
  const moveSlidesToSection2 = react.useCallback(
4241
4241
  (slideIndexes, targetSectionId) => {
4242
- const result = chunkT7AMP24E_js.moveSlidesToSection(sections, slides, slideIndexes, targetSectionId);
4242
+ const result = chunkG7PJSVUS_js.moveSlidesToSection(sections, slides, slideIndexes, targetSectionId);
4243
4243
  setSlides(result.slides);
4244
4244
  setSections(result.sections);
4245
4245
  markDirty();
@@ -4258,19 +4258,19 @@ function useSectionOperations(input) {
4258
4258
 
4259
4259
  // src/viewer/hooks/pointer-move-handlers.ts
4260
4260
  function computeResizeGeometry(handle, startX, startY, startWidth, startHeight, dx, dy, snapToGrid, gridSpacingPx) {
4261
- const resized = chunkT7AMP24E_js.applyResize(
4261
+ const resized = chunkG7PJSVUS_js.applyResize(
4262
4262
  { x: startX, y: startY, width: startWidth, height: startHeight },
4263
4263
  handle,
4264
4264
  dx,
4265
4265
  dy,
4266
4266
  1,
4267
- { minSize: chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE }
4267
+ { minSize: chunkXROVGBFQ_js.MIN_ELEMENT_SIZE }
4268
4268
  );
4269
4269
  const box = { x: resized.x, y: resized.y, width: resized.width, height: resized.height };
4270
4270
  if (!snapToGrid) {
4271
4271
  return box;
4272
4272
  }
4273
- return chunkT7AMP24E_js.snapBoxToGrid(box, handle, gridSpacingPx, chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE);
4273
+ return chunkG7PJSVUS_js.snapBoxToGrid(box, handle, gridSpacingPx, chunkXROVGBFQ_js.MIN_ELEMENT_SIZE);
4274
4274
  }
4275
4275
  function computeAdjustmentValue(startAdjustment, dx, startWidth) {
4276
4276
  const range = startWidth || 200;
@@ -4388,7 +4388,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
4388
4388
  width: el.width,
4389
4389
  height: el.height
4390
4390
  }));
4391
- const snapResult = chunkT7AMP24E_js.computeSnapToShape(
4391
+ const snapResult = chunkG7PJSVUS_js.computeSnapToShape(
4392
4392
  targetX,
4393
4393
  targetY,
4394
4394
  primaryEl.width,
@@ -4427,7 +4427,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
4427
4427
  if (live) {
4428
4428
  for (const id of Object.keys(drag.startPositionsById)) {
4429
4429
  const start = drag.startPositionsById[id];
4430
- chunkT7AMP24E_js.publishLiveGeometry(live.patcher, live.slideId, id, {
4430
+ chunkG7PJSVUS_js.publishLiveGeometry(live.patcher, live.slideId, id, {
4431
4431
  x: start.x + appliedDx,
4432
4432
  y: start.y + appliedDy
4433
4433
  });
@@ -4461,15 +4461,15 @@ function processResizeMove(e, rs, editorScale, snapToGrid, gridSpacingPx, live)
4461
4461
  if (rs.domEl) {
4462
4462
  rs.domEl.style.left = `${geo.x}px`;
4463
4463
  rs.domEl.style.top = `${geo.y}px`;
4464
- rs.domEl.style.width = `${Math.max(geo.width, chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE)}px`;
4465
- rs.domEl.style.height = `${Math.max(geo.height, chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE)}px`;
4464
+ rs.domEl.style.width = `${Math.max(geo.width, chunkXROVGBFQ_js.MIN_ELEMENT_SIZE)}px`;
4465
+ rs.domEl.style.height = `${Math.max(geo.height, chunkXROVGBFQ_js.MIN_ELEMENT_SIZE)}px`;
4466
4466
  }
4467
4467
  if (live) {
4468
- chunkT7AMP24E_js.publishLiveGeometry(live.patcher, live.slideId, rs.elementId, {
4468
+ chunkG7PJSVUS_js.publishLiveGeometry(live.patcher, live.slideId, rs.elementId, {
4469
4469
  x: geo.x,
4470
4470
  y: geo.y,
4471
- width: Math.max(geo.width, chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE),
4472
- height: Math.max(geo.height, chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE)
4471
+ width: Math.max(geo.width, chunkXROVGBFQ_js.MIN_ELEMENT_SIZE),
4472
+ height: Math.max(geo.height, chunkXROVGBFQ_js.MIN_ELEMENT_SIZE)
4473
4473
  });
4474
4474
  }
4475
4475
  }
@@ -4549,13 +4549,13 @@ function processPointerUp(input) {
4549
4549
  if (i !== activeSlideIndex) {
4550
4550
  return s;
4551
4551
  }
4552
- const rerouted = chunkT7AMP24E_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
4552
+ const rerouted = chunkG7PJSVUS_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
4553
4553
  if (rerouted.length === 0) {
4554
4554
  return s;
4555
4555
  }
4556
4556
  return {
4557
4557
  ...s,
4558
- elements: chunkT7AMP24E_js.applyReroutedConnectors(s.elements, rerouted)
4558
+ elements: chunkG7PJSVUS_js.applyReroutedConnectors(s.elements, rerouted)
4559
4559
  };
4560
4560
  })
4561
4561
  );
@@ -4577,9 +4577,9 @@ function processPointerUp(input) {
4577
4577
  }
4578
4578
  function commitMarquee(marquee, editTemplateMode, templateElements, activeSlide, applySelection, clearSelection) {
4579
4579
  const sourceElements = editTemplateMode ? templateElements : activeSlide?.elements ?? [];
4580
- const hitIds = chunkT7AMP24E_js.computeMarqueeHitIds(marquee, sourceElements);
4580
+ const hitIds = chunkG7PJSVUS_js.computeMarqueeHitIds(marquee, sourceElements);
4581
4581
  if (marquee.additive) {
4582
- const merged = chunkT7AMP24E_js.mergeAdditiveSelection(marquee.baseSelectionIds, hitIds);
4582
+ const merged = chunkG7PJSVUS_js.mergeAdditiveSelection(marquee.baseSelectionIds, hitIds);
4583
4583
  if (merged.length > 0) {
4584
4584
  applySelection(merged[0], merged);
4585
4585
  } else {
@@ -4602,8 +4602,8 @@ function commitDrag(drag, editTemplateMode, activeSlide, activeSlideIndex, setTe
4602
4602
  }
4603
4603
  return { ...el, x: start.x + dx, y: start.y + dy };
4604
4604
  });
4605
- const rerouted = chunkT7AMP24E_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
4606
- return chunkT7AMP24E_js.applyReroutedConnectors(movedElements, rerouted);
4605
+ const rerouted = chunkG7PJSVUS_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
4606
+ return chunkG7PJSVUS_js.applyReroutedConnectors(movedElements, rerouted);
4607
4607
  };
4608
4608
  if (editTemplateMode) {
4609
4609
  const slideId = activeSlide?.id;
@@ -4756,9 +4756,9 @@ function useCanvasInteractions(input) {
4756
4756
  return;
4757
4757
  }
4758
4758
  const el = elementLookup.get(editId);
4759
- if (el && chunkT7AMP24E_js.hasTextProperties(el)) {
4759
+ if (el && chunkG7PJSVUS_js.hasTextProperties(el)) {
4760
4760
  const committedText = transformCommittedText ? transformCommittedText(inlineEditingText) : inlineEditingText;
4761
- const newSegments = chunkT7AMP24E_js.remapTextToSegments(committedText, el.textSegments, el.textStyle);
4761
+ const newSegments = chunkG7PJSVUS_js.remapTextToSegments(committedText, el.textSegments, el.textStyle);
4762
4762
  ops.updateElementById(editId, {
4763
4763
  text: committedText,
4764
4764
  textSegments: newSegments
@@ -4769,7 +4769,7 @@ function useCanvasInteractions(input) {
4769
4769
  setInlineEditingText("");
4770
4770
  };
4771
4771
  const openEquationEditorForElement = (el) => {
4772
- if (!chunkT7AMP24E_js.hasTextProperties(el)) {
4772
+ if (!chunkG7PJSVUS_js.hasTextProperties(el)) {
4773
4773
  return false;
4774
4774
  }
4775
4775
  const eqSeg = el.textSegments?.find((seg) => seg.equationXml);
@@ -4798,7 +4798,7 @@ function useCanvasInteractions(input) {
4798
4798
  justSelectedRef.current = false;
4799
4799
  } else {
4800
4800
  const el = elementLookup.get(elementId);
4801
- if (el && chunkT7AMP24E_js.hasTextProperties(el) && !el.locks?.noTextEdit) {
4801
+ if (el && chunkG7PJSVUS_js.hasTextProperties(el) && !el.locks?.noTextEdit) {
4802
4802
  if (!openEquationEditorForElement(el)) {
4803
4803
  setInlineEditingElementId(elementId);
4804
4804
  setInlineEditingText(el.text ?? "");
@@ -4817,7 +4817,7 @@ function useCanvasInteractions(input) {
4817
4817
  if (openEquationEditorForElement(el)) {
4818
4818
  return;
4819
4819
  }
4820
- if (chunkT7AMP24E_js.hasTextProperties(el)) {
4820
+ if (chunkG7PJSVUS_js.hasTextProperties(el)) {
4821
4821
  setInlineEditingElementId(elementId);
4822
4822
  setInlineEditingText(el.text ?? "");
4823
4823
  }
@@ -5007,7 +5007,7 @@ function createFileHandlers(deps) {
5007
5007
  h = Math.round(h * scale);
5008
5008
  }
5009
5009
  addElement({
5010
- id: chunkT7AMP24E_js.generateElementId(),
5010
+ id: chunkG7PJSVUS_js.generateElementId(),
5011
5011
  type: "image",
5012
5012
  x: Math.round((canvasSize.width - w) / 2),
5013
5013
  y: Math.round((canvasSize.height - h) / 2),
@@ -5018,7 +5018,7 @@ function createFileHandlers(deps) {
5018
5018
  };
5019
5019
  img.onerror = () => {
5020
5020
  addElement({
5021
- id: chunkT7AMP24E_js.generateElementId(),
5021
+ id: chunkG7PJSVUS_js.generateElementId(),
5022
5022
  type: "image",
5023
5023
  x: 100,
5024
5024
  y: 100,
@@ -5044,7 +5044,7 @@ function createFileHandlers(deps) {
5044
5044
  const elFilePath = file.path;
5045
5045
  const insertMediaElement = (mediaSourceUrl, width, height) => {
5046
5046
  addElement({
5047
- id: chunkT7AMP24E_js.generateElementId(),
5047
+ id: chunkG7PJSVUS_js.generateElementId(),
5048
5048
  type: "media",
5049
5049
  mediaType,
5050
5050
  mediaMimeType: file.type || void 0,
@@ -5219,13 +5219,13 @@ function createStructuredElementHandlers(deps) {
5219
5219
  return;
5220
5220
  }
5221
5221
  addElement({
5222
- id: chunkT7AMP24E_js.generateElementId(),
5222
+ id: chunkG7PJSVUS_js.generateElementId(),
5223
5223
  type: "smartArt",
5224
5224
  x: 100,
5225
5225
  y: 120,
5226
5226
  width: 600,
5227
5227
  height: 340,
5228
- smartArtData: chunkT7AMP24E_js.buildSmartArtPresetData(
5228
+ smartArtData: chunkG7PJSVUS_js.buildSmartArtPresetData(
5229
5229
  layout,
5230
5230
  defaultItems,
5231
5231
  (i) => `node-${Date.now()}-${i}-${Math.random().toString(36).slice(2, 8)}`
@@ -5237,7 +5237,7 @@ function createStructuredElementHandlers(deps) {
5237
5237
  return;
5238
5238
  }
5239
5239
  addElement({
5240
- id: chunkT7AMP24E_js.generateElementId(),
5240
+ id: chunkG7PJSVUS_js.generateElementId(),
5241
5241
  type: "shape",
5242
5242
  x: 120,
5243
5243
  y: 200,
@@ -5296,7 +5296,7 @@ function createStructuredElementHandlers(deps) {
5296
5296
  const displayText = value || fieldTexts[fieldType] || fieldType;
5297
5297
  const fieldGuid = `{${crypto.randomUUID().toUpperCase()}}`;
5298
5298
  addElement({
5299
- id: chunkT7AMP24E_js.generateElementId(),
5299
+ id: chunkG7PJSVUS_js.generateElementId(),
5300
5300
  type: "shape",
5301
5301
  x: 120,
5302
5302
  y: 200,
@@ -5318,11 +5318,11 @@ function createStructuredElementHandlers(deps) {
5318
5318
  if (!activeSlide) {
5319
5319
  return;
5320
5320
  }
5321
- const preset = chunkT7AMP24E_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
5321
+ const preset = chunkG7PJSVUS_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
5322
5322
  if (!preset) {
5323
5323
  return;
5324
5324
  }
5325
- const defaultPptxAction = chunkT7AMP24E_js.elementActionToPptxAction({
5325
+ const defaultPptxAction = chunkG7PJSVUS_js.elementActionToPptxAction({
5326
5326
  trigger: "click",
5327
5327
  type: preset.defaultAction
5328
5328
  });
@@ -5331,7 +5331,7 @@ function createStructuredElementHandlers(deps) {
5331
5331
  defaultPptxAction.highlightClick = true;
5332
5332
  }
5333
5333
  addElement({
5334
- id: chunkT7AMP24E_js.generateElementId(),
5334
+ id: chunkG7PJSVUS_js.generateElementId(),
5335
5335
  type: "shape",
5336
5336
  x: 150,
5337
5337
  y: 150,
@@ -5398,14 +5398,14 @@ function useInsertElements(input) {
5398
5398
  return;
5399
5399
  }
5400
5400
  addElement({
5401
- id: chunkT7AMP24E_js.generateElementId(),
5401
+ id: chunkG7PJSVUS_js.generateElementId(),
5402
5402
  type: "text",
5403
5403
  x: 100,
5404
5404
  y: 100,
5405
5405
  width: 300,
5406
5406
  height: 60,
5407
5407
  text: "",
5408
- textStyle: { fontSize: chunk4O7PPQ2V_js.DEFAULT_TEXT_FONT_SIZE }
5408
+ textStyle: { fontSize: chunkXROVGBFQ_js.DEFAULT_TEXT_FONT_SIZE }
5409
5409
  });
5410
5410
  };
5411
5411
  const handleAddShape = () => {
@@ -5413,7 +5413,7 @@ function useInsertElements(input) {
5413
5413
  return;
5414
5414
  }
5415
5415
  addElement({
5416
- id: chunkT7AMP24E_js.generateElementId(),
5416
+ id: chunkG7PJSVUS_js.generateElementId(),
5417
5417
  type: "shape",
5418
5418
  x: 150,
5419
5419
  y: 150,
@@ -5432,15 +5432,15 @@ function useInsertElements(input) {
5432
5432
  return;
5433
5433
  }
5434
5434
  addElement({
5435
- ...chunkT7AMP24E_js.newTableElement(chunk4O7PPQ2V_js.DEFAULT_TABLE_ROWS, chunk4O7PPQ2V_js.DEFAULT_TABLE_COLUMNS, 100, 200),
5436
- id: chunkT7AMP24E_js.generateElementId()
5435
+ ...chunkG7PJSVUS_js.newTableElement(chunkXROVGBFQ_js.DEFAULT_TABLE_ROWS, chunkXROVGBFQ_js.DEFAULT_TABLE_COLUMNS, 100, 200),
5436
+ id: chunkG7PJSVUS_js.generateElementId()
5437
5437
  });
5438
5438
  };
5439
5439
  const handleAddChart = (chartType) => {
5440
5440
  if (!activeSlide) {
5441
5441
  return;
5442
5442
  }
5443
- addElement(chunkT7AMP24E_js.createDefaultChartElement(chartType));
5443
+ addElement(chunkG7PJSVUS_js.createDefaultChartElement(chartType));
5444
5444
  };
5445
5445
  const structured = createStructuredElementHandlers({
5446
5446
  activeSlide,
@@ -5510,7 +5510,7 @@ function useClipboardHandlers(input) {
5510
5510
  if (!selectedElement) {
5511
5511
  return;
5512
5512
  }
5513
- setClipboardPayload(chunkT7AMP24E_js.buildElementClipboardPayload(selectedElement, editTemplateMode));
5513
+ setClipboardPayload(chunkG7PJSVUS_js.buildElementClipboardPayload(selectedElement, editTemplateMode));
5514
5514
  };
5515
5515
  const handleDelete = () => {
5516
5516
  const idsToDelete = effectiveSelectedIds;
@@ -5527,7 +5527,7 @@ function useClipboardHandlers(input) {
5527
5527
  handleDelete();
5528
5528
  };
5529
5529
  const insertClone = (source) => {
5530
- const clone = chunkT7AMP24E_js.cloneElementForPaste(source, { intoTemplate: editTemplateMode });
5530
+ const clone = chunkG7PJSVUS_js.cloneElementForPaste(source, { intoTemplate: editTemplateMode });
5531
5531
  ops.updateActiveElements((els) => [...els, clone]);
5532
5532
  ops.applySelection(clone.id);
5533
5533
  history.markDirty();
@@ -5562,7 +5562,7 @@ function resolveShapePath(el) {
5562
5562
  return el.pathData;
5563
5563
  }
5564
5564
  if ("shapeType" in el && typeof el.shapeType === "string") {
5565
- const clipPath = chunkT7AMP24E_js.getPresetShapeClipPath(el.shapeType);
5565
+ const clipPath = chunkG7PJSVUS_js.getPresetShapeClipPath(el.shapeType);
5566
5566
  if (clipPath) {
5567
5567
  const svgPath = clipPathToSvgPath(clipPath, el.width, el.height);
5568
5568
  if (svgPath) {
@@ -5613,7 +5613,7 @@ function clipPathToSvgPath(clipPath, width, height) {
5613
5613
  return parts.join(" ");
5614
5614
  }
5615
5615
  function transformPathToGlobal(pathData, el) {
5616
- const polys = chunkT7AMP24E_js.svgPathToPolygons(pathData);
5616
+ const polys = chunkG7PJSVUS_js.svgPathToPolygons(pathData);
5617
5617
  if (polys.length === 0) {
5618
5618
  return pathData;
5619
5619
  }
@@ -5633,10 +5633,10 @@ function transformPathToGlobal(pathData, el) {
5633
5633
  y: pt.y * scaleY + el.y
5634
5634
  }))
5635
5635
  );
5636
- return chunkT7AMP24E_js.polygonsToSvgPath(transformed);
5636
+ return chunkG7PJSVUS_js.polygonsToSvgPath(transformed);
5637
5637
  }
5638
5638
  function transformPathToLocal(pathData, x, y, _width, _height) {
5639
- const polys = chunkT7AMP24E_js.svgPathToPolygons(pathData);
5639
+ const polys = chunkG7PJSVUS_js.svgPathToPolygons(pathData);
5640
5640
  if (polys.length === 0) {
5641
5641
  return pathData;
5642
5642
  }
@@ -5646,10 +5646,10 @@ function transformPathToLocal(pathData, x, y, _width, _height) {
5646
5646
  y: pt.y - y
5647
5647
  }))
5648
5648
  );
5649
- return chunkT7AMP24E_js.polygonsToSvgPath(transformed);
5649
+ return chunkG7PJSVUS_js.polygonsToSvgPath(transformed);
5650
5650
  }
5651
5651
  function pathBounds(pathData) {
5652
- const polys = chunkT7AMP24E_js.svgPathToPolygons(pathData);
5652
+ const polys = chunkG7PJSVUS_js.svgPathToPolygons(pathData);
5653
5653
  let minX = Infinity;
5654
5654
  let minY = Infinity;
5655
5655
  let maxX = -Infinity;
@@ -5708,7 +5708,7 @@ function useMergeShapesHandler(input) {
5708
5708
  let allFragments = [];
5709
5709
  let remaining = globalPaths[0];
5710
5710
  for (let i = 1; i < globalPaths.length; i++) {
5711
- const frags = chunkT7AMP24E_js.mergeShapes("fragment", remaining, globalPaths[i]);
5711
+ const frags = chunkG7PJSVUS_js.mergeShapes("fragment", remaining, globalPaths[i]);
5712
5712
  if (Array.isArray(frags)) {
5713
5713
  allFragments = frags;
5714
5714
  }
@@ -5737,7 +5737,7 @@ function useMergeShapesHandler(input) {
5737
5737
  bounds.height
5738
5738
  );
5739
5739
  const newEl = {
5740
- id: chunkT7AMP24E_js.generateElementId(),
5740
+ id: chunkG7PJSVUS_js.generateElementId(),
5741
5741
  type: "shape",
5742
5742
  x: bounds.x,
5743
5743
  y: bounds.y,
@@ -5775,7 +5775,7 @@ function useMergeShapesHandler(input) {
5775
5775
  } else {
5776
5776
  let resultPath = globalPaths[0];
5777
5777
  for (let i = 1; i < globalPaths.length; i++) {
5778
- const result = chunkT7AMP24E_js.mergeShapes(operation, resultPath, globalPaths[i]);
5778
+ const result = chunkG7PJSVUS_js.mergeShapes(operation, resultPath, globalPaths[i]);
5779
5779
  if (typeof result === "string") {
5780
5780
  resultPath = result;
5781
5781
  }
@@ -5796,7 +5796,7 @@ function useMergeShapesHandler(input) {
5796
5796
  );
5797
5797
  const primary = targets[0];
5798
5798
  const newEl = {
5799
- id: chunkT7AMP24E_js.generateElementId(),
5799
+ id: chunkG7PJSVUS_js.generateElementId(),
5800
5800
  type: "shape",
5801
5801
  x: bounds.x,
5802
5802
  y: bounds.y,
@@ -5859,7 +5859,7 @@ function useGroupAlignLayerHandlers(input) {
5859
5859
  if (ids.length < 2 || !activeSlide) {
5860
5860
  return;
5861
5861
  }
5862
- const { elements, groupId } = chunkT7AMP24E_js.groupElements(ops.activeElements, ids, chunkT7AMP24E_js.generateElementId());
5862
+ const { elements, groupId } = chunkG7PJSVUS_js.groupElements(ops.activeElements, ids, chunkG7PJSVUS_js.generateElementId());
5863
5863
  if (groupId === null) {
5864
5864
  return;
5865
5865
  }
@@ -5872,12 +5872,12 @@ function useGroupAlignLayerHandlers(input) {
5872
5872
  return;
5873
5873
  }
5874
5874
  const group = selectedElement;
5875
- const intoTemplate = chunkT7AMP24E_js.isTemplateElementId(group.id);
5875
+ const intoTemplate = chunkG7PJSVUS_js.isTemplateElementId(group.id);
5876
5876
  const ungrouped = group.children.map((child) => ({
5877
5877
  ...structuredClone(child),
5878
5878
  // Keep child ids in the same store as the group so later edits route
5879
5879
  // correctly: template groups yield template-prefixed child ids.
5880
- id: intoTemplate ? chunkT7AMP24E_js.makeCloneId(true, child.id || group.id) : child.id || chunkT7AMP24E_js.generateElementId(),
5880
+ id: intoTemplate ? chunkG7PJSVUS_js.makeCloneId(true, child.id || group.id) : child.id || chunkG7PJSVUS_js.generateElementId(),
5881
5881
  x: child.x + group.x,
5882
5882
  y: child.y + group.y
5883
5883
  }));
@@ -5901,7 +5901,7 @@ function useGroupAlignLayerHandlers(input) {
5901
5901
  if (!edge) {
5902
5902
  return;
5903
5903
  }
5904
- const positions = chunkT7AMP24E_js.alignElements(selectedElements, edge);
5904
+ const positions = chunkG7PJSVUS_js.alignElements(selectedElements, edge);
5905
5905
  for (const [id, pos] of positions) {
5906
5906
  const el = elementLookup.get(id);
5907
5907
  if (!el) {
@@ -5919,7 +5919,7 @@ function useGroupAlignLayerHandlers(input) {
5919
5919
  if (!distAxis) {
5920
5920
  return;
5921
5921
  }
5922
- const positions = chunkT7AMP24E_js.distributeElements(selectedElements, distAxis);
5922
+ const positions = chunkG7PJSVUS_js.distributeElements(selectedElements, distAxis);
5923
5923
  for (const [id, pos] of positions) {
5924
5924
  const el = elementLookup.get(id);
5925
5925
  if (!el) {
@@ -5936,7 +5936,7 @@ function useGroupAlignLayerHandlers(input) {
5936
5936
  }
5937
5937
  const id = selectedElement.id;
5938
5938
  ops.updateActiveElements(
5939
- (els) => direction === "forward" ? chunkT7AMP24E_js.bringForward(els, id) : direction === "backward" ? chunkT7AMP24E_js.sendBackward(els, id) : els
5939
+ (els) => direction === "forward" ? chunkG7PJSVUS_js.bringForward(els, id) : direction === "backward" ? chunkG7PJSVUS_js.sendBackward(els, id) : els
5940
5940
  );
5941
5941
  history.markDirty();
5942
5942
  };
@@ -5946,7 +5946,7 @@ function useGroupAlignLayerHandlers(input) {
5946
5946
  }
5947
5947
  const id = selectedElement.id;
5948
5948
  ops.updateActiveElements(
5949
- (els) => direction === "front" ? chunkT7AMP24E_js.bringToFront(els, id) : chunkT7AMP24E_js.sendToBack(els, id)
5949
+ (els) => direction === "front" ? chunkG7PJSVUS_js.bringToFront(els, id) : chunkG7PJSVUS_js.sendToBack(els, id)
5950
5950
  );
5951
5951
  history.markDirty();
5952
5952
  };
@@ -6068,7 +6068,7 @@ function insertSlideFromLayoutUpdater(slides, activeIndex, draft) {
6068
6068
  function useSlideManagement(input) {
6069
6069
  const { slides, activeSlideIndex, setActiveSlideIndex, ops, history, handlerRef } = input;
6070
6070
  const handleAddSlide = () => {
6071
- const newSlide = chunkT7AMP24E_js.createBlankSlide(slides.length + 1);
6071
+ const newSlide = chunkG7PJSVUS_js.createBlankSlide(slides.length + 1);
6072
6072
  ops.updateSlides((prev) => {
6073
6073
  const next = [...prev];
6074
6074
  next.splice(activeSlideIndex + 1, 0, newSlide);
@@ -6131,7 +6131,7 @@ function useSlideManagement(input) {
6131
6131
  }
6132
6132
  const clone = {
6133
6133
  ...src,
6134
- id: chunkT7AMP24E_js.makeSlideId(),
6134
+ id: chunkG7PJSVUS_js.makeSlideId(),
6135
6135
  elements: src.elements.map((el) => ({
6136
6136
  ...el,
6137
6137
  id: `${el.id}-dup-${Math.random().toString(36).slice(2, 6)}`
@@ -6163,7 +6163,7 @@ function useSlideManagement(input) {
6163
6163
  const handleInsertSlideFromLayout = (layoutPath, layoutName) => {
6164
6164
  const insertAt = activeSlideIndex + 1;
6165
6165
  const draft = {
6166
- ...chunkT7AMP24E_js.createBlankSlide(slides.length + 1),
6166
+ ...chunkG7PJSVUS_js.createBlankSlide(slides.length + 1),
6167
6167
  layoutPath,
6168
6168
  ...layoutName ? { layoutName } : {}
6169
6169
  };
@@ -6224,7 +6224,7 @@ function createTableMergeHandlers(input) {
6224
6224
  if (!nextCell || nextCell.hMerge || nextCell.vMerge) {
6225
6225
  return;
6226
6226
  }
6227
- const newTableData = chunkT7AMP24E_js.mergeCells(
6227
+ const newTableData = chunkG7PJSVUS_js.mergeCells(
6228
6228
  [
6229
6229
  { row: rowIndex, col: columnIndex },
6230
6230
  { row: rowIndex, col: nextColIdx }
@@ -6232,7 +6232,7 @@ function createTableMergeHandlers(input) {
6232
6232
  td
6233
6233
  );
6234
6234
  const updates = { tableData: newTableData };
6235
- const newRawXml = chunkT7AMP24E_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6235
+ const newRawXml = chunkG7PJSVUS_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6236
6236
  if (newRawXml) {
6237
6237
  updates.rawXml = newRawXml;
6238
6238
  }
@@ -6258,7 +6258,7 @@ function createTableMergeHandlers(input) {
6258
6258
  if (!targetNextCell || targetNextCell.hMerge || targetNextCell.vMerge) {
6259
6259
  return;
6260
6260
  }
6261
- const newTableData = chunkT7AMP24E_js.mergeCells(
6261
+ const newTableData = chunkG7PJSVUS_js.mergeCells(
6262
6262
  [
6263
6263
  { row: rowIndex, col: columnIndex },
6264
6264
  { row: targetNextRowIdx, col: columnIndex }
@@ -6266,7 +6266,7 @@ function createTableMergeHandlers(input) {
6266
6266
  td
6267
6267
  );
6268
6268
  const updates = { tableData: newTableData };
6269
- const newRawXml = chunkT7AMP24E_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6269
+ const newRawXml = chunkG7PJSVUS_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6270
6270
  if (newRawXml) {
6271
6271
  updates.rawXml = newRawXml;
6272
6272
  }
@@ -6281,9 +6281,9 @@ function createTableMergeHandlers(input) {
6281
6281
  return;
6282
6282
  }
6283
6283
  const td = selectedElement.tableData;
6284
- const newTableData = chunkT7AMP24E_js.mergeCells(ts.selectedCells, td);
6284
+ const newTableData = chunkG7PJSVUS_js.mergeCells(ts.selectedCells, td);
6285
6285
  const updates = { tableData: newTableData };
6286
- const newRawXml = chunkT7AMP24E_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6286
+ const newRawXml = chunkG7PJSVUS_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6287
6287
  if (newRawXml) {
6288
6288
  updates.rawXml = newRawXml;
6289
6289
  }
@@ -6300,9 +6300,9 @@ function createTableMergeHandlers(input) {
6300
6300
  }
6301
6301
  const { rowIndex, columnIndex } = ts;
6302
6302
  const td = selectedElement.tableData;
6303
- const newTableData = chunkT7AMP24E_js.splitCell(rowIndex, columnIndex, td);
6303
+ const newTableData = chunkG7PJSVUS_js.splitCell(rowIndex, columnIndex, td);
6304
6304
  const updates = { tableData: newTableData };
6305
- const newRawXml = chunkT7AMP24E_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6305
+ const newRawXml = chunkG7PJSVUS_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6306
6306
  if (newRawXml) {
6307
6307
  updates.rawXml = newRawXml;
6308
6308
  }
@@ -6346,7 +6346,7 @@ function createTableStructHandlers(input) {
6346
6346
  updates.tableData = { ...el.tableData, rows: newRows };
6347
6347
  }
6348
6348
  if (el.rawXml) {
6349
- const newRawXml = chunkT7AMP24E_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
6349
+ const newRawXml = chunkG7PJSVUS_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
6350
6350
  if (newRawXml) {
6351
6351
  updates.rawXml = newRawXml;
6352
6352
  }
@@ -6370,7 +6370,7 @@ function createTableStructHandlers(input) {
6370
6370
  const { rowIndex, columnIndex: colIndex } = ts;
6371
6371
  const updates = {};
6372
6372
  if (selectedElement.rawXml) {
6373
- const newRawXml = chunkT7AMP24E_js.updateCellTextStyleInRawXml(
6373
+ const newRawXml = chunkG7PJSVUS_js.updateCellTextStyleInRawXml(
6374
6374
  selectedElement,
6375
6375
  rowIndex,
6376
6376
  colIndex,
@@ -6434,9 +6434,9 @@ function createTableStructHandlers(input) {
6434
6434
  return;
6435
6435
  }
6436
6436
  const rowIdx = ts?.rowIndex ?? 0;
6437
- const newTableData = chunkT7AMP24E_js.insertTableRow(selectedElement.tableData, rowIdx, position);
6437
+ const newTableData = chunkG7PJSVUS_js.insertTableRow(selectedElement.tableData, rowIdx, position);
6438
6438
  const updates = { tableData: newTableData };
6439
- const newRawXml = chunkT7AMP24E_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6439
+ const newRawXml = chunkG7PJSVUS_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6440
6440
  if (newRawXml) {
6441
6441
  updates.rawXml = newRawXml;
6442
6442
  }
@@ -6449,12 +6449,12 @@ function createTableStructHandlers(input) {
6449
6449
  }
6450
6450
  const td = selectedElement.tableData;
6451
6451
  const rowIdx = ts?.rowIndex ?? 0;
6452
- const newTableData = chunkT7AMP24E_js.deleteTableRow(td, rowIdx);
6452
+ const newTableData = chunkG7PJSVUS_js.deleteTableRow(td, rowIdx);
6453
6453
  if (newTableData === td) {
6454
6454
  return;
6455
6455
  }
6456
6456
  const updates = { tableData: newTableData };
6457
- const newRawXml = chunkT7AMP24E_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6457
+ const newRawXml = chunkG7PJSVUS_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6458
6458
  if (newRawXml) {
6459
6459
  updates.rawXml = newRawXml;
6460
6460
  }
@@ -6466,9 +6466,9 @@ function createTableStructHandlers(input) {
6466
6466
  return;
6467
6467
  }
6468
6468
  const colIdx = ts?.columnIndex ?? 0;
6469
- const newTableData = chunkT7AMP24E_js.insertTableColumn(selectedElement.tableData, colIdx, position);
6469
+ const newTableData = chunkG7PJSVUS_js.insertTableColumn(selectedElement.tableData, colIdx, position);
6470
6470
  const updates = { tableData: newTableData };
6471
- const newRawXml = chunkT7AMP24E_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6471
+ const newRawXml = chunkG7PJSVUS_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6472
6472
  if (newRawXml) {
6473
6473
  updates.rawXml = newRawXml;
6474
6474
  }
@@ -6481,12 +6481,12 @@ function createTableStructHandlers(input) {
6481
6481
  }
6482
6482
  const td = selectedElement.tableData;
6483
6483
  const colIdx = ts?.columnIndex ?? 0;
6484
- const newTableData = chunkT7AMP24E_js.deleteTableColumn(td, colIdx);
6484
+ const newTableData = chunkG7PJSVUS_js.deleteTableColumn(td, colIdx);
6485
6485
  if (newTableData === td) {
6486
6486
  return;
6487
6487
  }
6488
6488
  const updates = { tableData: newTableData };
6489
- const newRawXml = chunkT7AMP24E_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6489
+ const newRawXml = chunkG7PJSVUS_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6490
6490
  if (newRawXml) {
6491
6491
  updates.rawXml = newRawXml;
6492
6492
  }
@@ -6522,8 +6522,8 @@ async function renderToCanvas(element, options = {}) {
6522
6522
  return html2canvasPro(element, {
6523
6523
  ...options,
6524
6524
  onclone: async (doc, clonedEl) => {
6525
- await chunkT7AMP24E_js.normalizeColorsForCapture(doc, clonedEl);
6526
- chunkT7AMP24E_js.preprocessCssForCapture(clonedEl);
6525
+ await chunkG7PJSVUS_js.normalizeColorsForCapture(doc, clonedEl);
6526
+ chunkG7PJSVUS_js.preprocessCssForCapture(clonedEl);
6527
6527
  if (typeof userOnClone === "function") {
6528
6528
  userOnClone(doc, clonedEl);
6529
6529
  }
@@ -6579,7 +6579,7 @@ async function exportSlideToPngBlob(slideElement, options = {}) {
6579
6579
  }
6580
6580
  async function exportSlideAsPng(slideElement, slideIndex, options = {}) {
6581
6581
  const blob = await exportSlideToPngBlob(slideElement, options);
6582
- chunkT7AMP24E_js.downloadBlob(blob, `slide-${slideIndex + 1}.png`);
6582
+ chunkG7PJSVUS_js.downloadBlob(blob, `slide-${slideIndex + 1}.png`);
6583
6583
  }
6584
6584
  async function copySlideToClipboard(slideElement, options = {}) {
6585
6585
  const blob = await exportSlideToPngBlob(slideElement, options);
@@ -6601,15 +6601,15 @@ async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide,
6601
6601
  continue;
6602
6602
  }
6603
6603
  const canvas = await renderElementToCanvas(stageEl, scale);
6604
- images.push(chunkT7AMP24E_js.canvasToJpegData(canvas));
6604
+ images.push(chunkG7PJSVUS_js.canvasToJpegData(canvas));
6605
6605
  }
6606
6606
  onProgress?.(totalSlides, totalSlides);
6607
6607
  setActiveSlide(currentSlideIndex);
6608
6608
  if (images.length === 0) {
6609
6609
  throw new Error(chunk25VSL2BB_js.translationsEn["pptx.export.errorNoSlidesPdf"]);
6610
6610
  }
6611
- const pdfBlobUrl = chunk4O7PPQ2V_js.buildPdfFromImageData(images);
6612
- chunkT7AMP24E_js.downloadDataUrl(pdfBlobUrl, filename);
6611
+ const pdfBlobUrl = chunkXROVGBFQ_js.buildPdfFromImageData(images);
6612
+ chunkG7PJSVUS_js.downloadDataUrl(pdfBlobUrl, filename);
6613
6613
  }
6614
6614
  async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, options = {}) {
6615
6615
  const { scale = 2, onProgress } = options;
@@ -6657,8 +6657,8 @@ async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSl
6657
6657
  if (pages.length === 0) {
6658
6658
  throw new Error(chunk25VSL2BB_js.translationsEn["pptx.export.errorNoSlidesNotesPdf"]);
6659
6659
  }
6660
- const pdfDataUrl = chunk4O7PPQ2V_js.buildNotesPdf(pages);
6661
- chunkT7AMP24E_js.downloadDataUrl(pdfDataUrl, filename);
6660
+ const pdfDataUrl = chunkXROVGBFQ_js.buildNotesPdf(pages);
6661
+ chunkG7PJSVUS_js.downloadDataUrl(pdfDataUrl, filename);
6662
6662
  }
6663
6663
 
6664
6664
  // src/viewer/utils/export-video.ts
@@ -6702,7 +6702,7 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
6702
6702
  const fps = 30;
6703
6703
  const stream = recordingCanvas.captureStream(fps);
6704
6704
  const recorder = new MediaRecorder(stream, {
6705
- mimeType: chunkT7AMP24E_js.pickSupportedMimeType([...chunkT7AMP24E_js.WEBM_MIME_CANDIDATES]),
6705
+ mimeType: chunkG7PJSVUS_js.pickSupportedMimeType([...chunkG7PJSVUS_js.WEBM_MIME_CANDIDATES]),
6706
6706
  videoBitsPerSecond: 5e6
6707
6707
  });
6708
6708
  const chunks = [];
@@ -6725,8 +6725,8 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
6725
6725
  const duration = slideTimingsMs?.[i] ?? slideDurationMs;
6726
6726
  ctx.clearRect(0, 0, recordingCanvas.width, recordingCanvas.height);
6727
6727
  ctx.drawImage(slideCanvases[i], 0, 0);
6728
- const frameInterval = chunkT7AMP24E_js.fpsToFrameIntervalMs(fps);
6729
- const framesNeeded = chunkT7AMP24E_js.segmentFrameCount(duration, fps);
6728
+ const frameInterval = chunkG7PJSVUS_js.fpsToFrameIntervalMs(fps);
6729
+ const framesNeeded = chunkG7PJSVUS_js.segmentFrameCount(duration, fps);
6730
6730
  for (let f = 0; f < framesNeeded; f++) {
6731
6731
  if (signal?.aborted) {
6732
6732
  recorder.stop();
@@ -6775,7 +6775,7 @@ async function exportAllSlidesAsGif(slideStageRef, totalSlides, setActiveSlide,
6775
6775
  if (frames.length === 0) {
6776
6776
  throw new Error(chunk25VSL2BB_js.translationsEn["pptx.export.errorNoSlidesGif"]);
6777
6777
  }
6778
- const gifBytes = chunkT7AMP24E_js.encodeGif(frames, Math.round(slideDurationMs / 10));
6778
+ const gifBytes = chunkG7PJSVUS_js.encodeGif(frames, Math.round(slideDurationMs / 10));
6779
6779
  onProgress?.(totalSlides, totalSlides);
6780
6780
  const buf = new ArrayBuffer(gifBytes.length);
6781
6781
  new Uint8Array(buf).set(gifBytes);
@@ -6829,7 +6829,7 @@ function exportAllSlidesToSvg(data, options = {}) {
6829
6829
  continue;
6830
6830
  }
6831
6831
  onProgress?.(processedCount, data.slides.length);
6832
- let svg = chunkT7AMP24E_js.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
6832
+ let svg = chunkG7PJSVUS_js.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
6833
6833
  if (embedFonts && fontFaces?.length) {
6834
6834
  svg = injectFontFaces(svg, fontFaces);
6835
6835
  }
@@ -6889,7 +6889,7 @@ function useExportSaveAs(input) {
6889
6889
  }
6890
6890
  setExportProgress(70);
6891
6891
  setExportStatusMessage("Writing README...");
6892
- const readme = chunkT7AMP24E_js.generatePackageReadme(pptxFilename);
6892
+ const readme = chunkG7PJSVUS_js.generatePackageReadme(pptxFilename);
6893
6893
  pkgFolder.file("README.txt", readme);
6894
6894
  if (abortCtrl.signal.aborted) {
6895
6895
  throw new DOMException("Export cancelled", "AbortError");
@@ -6900,7 +6900,7 @@ function useExportSaveAs(input) {
6900
6900
  setExportProgress(95);
6901
6901
  setExportStatusMessage("Downloading...");
6902
6902
  const baseName = pptxFilename.replace(/\.[^.]+$/u, "");
6903
- chunkT7AMP24E_js.downloadBlob(zipBlob, `${baseName}-package.zip`);
6903
+ chunkG7PJSVUS_js.downloadBlob(zipBlob, `${baseName}-package.zip`);
6904
6904
  setExportProgress(100);
6905
6905
  } catch (err) {
6906
6906
  if (err.name !== "AbortError") {
@@ -6923,7 +6923,7 @@ function useExportSaveAs(input) {
6923
6923
  const blob = new Blob([data], {
6924
6924
  type: "application/vnd.openxmlformats-officedocument.presentationml.presentation"
6925
6925
  });
6926
- chunkT7AMP24E_js.downloadBlob(blob, `${baseName}.${ext}`);
6926
+ chunkG7PJSVUS_js.downloadBlob(blob, `${baseName}.${ext}`);
6927
6927
  } catch (err) {
6928
6928
  console.error(`[PowerPointViewer] Save as .${ext} failed:`, err);
6929
6929
  }
@@ -6936,14 +6936,14 @@ function useExportSaveAs(input) {
6936
6936
  const pptxGuides = guides.map((g) => ({
6937
6937
  id: g.id,
6938
6938
  orientation: g.axis === "h" ? "horz" : "vert",
6939
- positionEmu: chunkT7AMP24E_js.guidePxToEmu(g.position)
6939
+ positionEmu: chunkG7PJSVUS_js.guidePxToEmu(g.position)
6940
6940
  }));
6941
6941
  return {
6942
6942
  ...slide,
6943
6943
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
6944
6944
  };
6945
6945
  });
6946
- const slidesToSave = chunk4O7PPQ2V_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
6946
+ const slidesToSave = chunkXROVGBFQ_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
6947
6947
  const saveOptions = {
6948
6948
  headerFooter,
6949
6949
  presentationProperties,
@@ -7000,7 +7000,7 @@ function safeConfirm(message) {
7000
7000
  }
7001
7001
  }
7002
7002
  function downloadBlob2(blob, filename) {
7003
- chunkT7AMP24E_js.downloadBlob(blob, chunkT7AMP24E_js.sanitizeDownloadFilename(filename));
7003
+ chunkG7PJSVUS_js.downloadBlob(blob, chunkG7PJSVUS_js.sanitizeDownloadFilename(filename));
7004
7004
  }
7005
7005
 
7006
7006
  // src/viewer/hooks/useExportHandlers.ts
@@ -7101,21 +7101,21 @@ function useExportHandlers(input) {
7101
7101
  {
7102
7102
  scale: 2,
7103
7103
  onProgress: (current, total) => {
7104
- setExportProgress(chunkT7AMP24E_js.slideProgressPercent(current, total));
7105
- setExportStatusMessage(chunkT7AMP24E_js.slideStatusLabel("Rendering", current, total));
7104
+ setExportProgress(chunkG7PJSVUS_js.slideProgressPercent(current, total));
7105
+ setExportStatusMessage(chunkG7PJSVUS_js.slideStatusLabel("Rendering", current, total));
7106
7106
  },
7107
7107
  signal: abortCtrl.signal
7108
7108
  }
7109
7109
  );
7110
- setExportProgress(chunkT7AMP24E_js.EXPORT_ASSEMBLING_PERCENT);
7110
+ setExportProgress(chunkG7PJSVUS_js.EXPORT_ASSEMBLING_PERCENT);
7111
7111
  setExportStatusMessage("Building PDF...");
7112
7112
  await new Promise((r) => {
7113
7113
  setTimeout(r, 100);
7114
7114
  });
7115
- setExportProgress(chunkT7AMP24E_js.EXPORT_DONE_PERCENT);
7115
+ setExportProgress(chunkG7PJSVUS_js.EXPORT_DONE_PERCENT);
7116
7116
  setExportStatusMessage("Done!");
7117
7117
  } catch (err) {
7118
- if (!chunkT7AMP24E_js.isExportAbortError(err)) {
7118
+ if (!chunkG7PJSVUS_js.isExportAbortError(err)) {
7119
7119
  console.error("[PowerPointViewer] PDF export failed:", err);
7120
7120
  }
7121
7121
  } finally {
@@ -7145,21 +7145,21 @@ function useExportHandlers(input) {
7145
7145
  {
7146
7146
  scale: 2,
7147
7147
  onProgress: (current, total) => {
7148
- setExportProgress(chunkT7AMP24E_js.slideProgressPercent(current, total));
7149
- setExportStatusMessage(chunkT7AMP24E_js.slideStatusLabel("Rendering", current, total));
7148
+ setExportProgress(chunkG7PJSVUS_js.slideProgressPercent(current, total));
7149
+ setExportStatusMessage(chunkG7PJSVUS_js.slideStatusLabel("Rendering", current, total));
7150
7150
  },
7151
7151
  signal: abortCtrl.signal
7152
7152
  }
7153
7153
  );
7154
- setExportProgress(chunkT7AMP24E_js.EXPORT_ASSEMBLING_PERCENT);
7154
+ setExportProgress(chunkG7PJSVUS_js.EXPORT_ASSEMBLING_PERCENT);
7155
7155
  setExportStatusMessage("Building PDF...");
7156
7156
  await new Promise((r) => {
7157
7157
  setTimeout(r, 100);
7158
7158
  });
7159
- setExportProgress(chunkT7AMP24E_js.EXPORT_DONE_PERCENT);
7159
+ setExportProgress(chunkG7PJSVUS_js.EXPORT_DONE_PERCENT);
7160
7160
  setExportStatusMessage("Done!");
7161
7161
  } catch (err) {
7162
- if (!chunkT7AMP24E_js.isExportAbortError(err)) {
7162
+ if (!chunkG7PJSVUS_js.isExportAbortError(err)) {
7163
7163
  console.error("[PowerPointViewer] Notes PDF export failed:", err);
7164
7164
  }
7165
7165
  } finally {
@@ -7200,22 +7200,22 @@ function useExportHandlers(input) {
7200
7200
  scale: 1,
7201
7201
  slideDurationMs: 3e3,
7202
7202
  onProgress: (current, total) => {
7203
- setExportProgress(chunkT7AMP24E_js.slideProgressPercent(current, total, 45));
7204
- setExportStatusMessage(chunkT7AMP24E_js.slideStatusLabel("Capturing", current, total));
7203
+ setExportProgress(chunkG7PJSVUS_js.slideProgressPercent(current, total, 45));
7204
+ setExportStatusMessage(chunkG7PJSVUS_js.slideStatusLabel("Capturing", current, total));
7205
7205
  },
7206
7206
  onRecordProgress: (current, total) => {
7207
- setExportProgress(chunkT7AMP24E_js.recordProgressPercent(current, total));
7208
- setExportStatusMessage(chunkT7AMP24E_js.slideStatusLabel("Recording", current, total));
7207
+ setExportProgress(chunkG7PJSVUS_js.recordProgressPercent(current, total));
7208
+ setExportStatusMessage(chunkG7PJSVUS_js.slideStatusLabel("Recording", current, total));
7209
7209
  },
7210
7210
  signal: abortCtrl.signal
7211
7211
  }
7212
7212
  );
7213
- setExportProgress(chunkT7AMP24E_js.EXPORT_ASSEMBLING_PERCENT);
7213
+ setExportProgress(chunkG7PJSVUS_js.EXPORT_ASSEMBLING_PERCENT);
7214
7214
  setExportStatusMessage("Saving file...");
7215
7215
  downloadBlob2(blob, "presentation.webm");
7216
- setExportProgress(chunkT7AMP24E_js.EXPORT_DONE_PERCENT);
7216
+ setExportProgress(chunkG7PJSVUS_js.EXPORT_DONE_PERCENT);
7217
7217
  } catch (err) {
7218
- if (!chunkT7AMP24E_js.isExportAbortError(err)) {
7218
+ if (!chunkG7PJSVUS_js.isExportAbortError(err)) {
7219
7219
  console.error("[PowerPointViewer] Video export failed:", err);
7220
7220
  }
7221
7221
  } finally {
@@ -7243,18 +7243,18 @@ function useExportHandlers(input) {
7243
7243
  scale: 0.5,
7244
7244
  slideDurationMs: 2e3,
7245
7245
  onProgress: (current, total) => {
7246
- setExportProgress(chunkT7AMP24E_js.slideProgressPercent(current, total));
7247
- setExportStatusMessage(chunkT7AMP24E_js.slideStatusLabel("Encoding", current, total));
7246
+ setExportProgress(chunkG7PJSVUS_js.slideProgressPercent(current, total));
7247
+ setExportStatusMessage(chunkG7PJSVUS_js.slideStatusLabel("Encoding", current, total));
7248
7248
  },
7249
7249
  signal: abortCtrl.signal
7250
7250
  }
7251
7251
  );
7252
- setExportProgress(chunkT7AMP24E_js.EXPORT_ASSEMBLING_PERCENT);
7252
+ setExportProgress(chunkG7PJSVUS_js.EXPORT_ASSEMBLING_PERCENT);
7253
7253
  setExportStatusMessage("Saving file...");
7254
7254
  downloadBlob2(blob, "presentation.gif");
7255
- setExportProgress(chunkT7AMP24E_js.EXPORT_DONE_PERCENT);
7255
+ setExportProgress(chunkG7PJSVUS_js.EXPORT_DONE_PERCENT);
7256
7256
  } catch (err) {
7257
- if (!chunkT7AMP24E_js.isExportAbortError(err)) {
7257
+ if (!chunkG7PJSVUS_js.isExportAbortError(err)) {
7258
7258
  console.error("[PowerPointViewer] GIF export failed:", err);
7259
7259
  }
7260
7260
  } finally {
@@ -7294,7 +7294,7 @@ function openPrintWindow(title, bodyHtml, orientation, colorFilter, frameSlides)
7294
7294
  }
7295
7295
  printWindow.document.open();
7296
7296
  printWindow.document.write(
7297
- chunkT7AMP24E_js.buildPrintHtmlDocument({ title, bodyHtml, orientation, colorFilter, frameSlides })
7297
+ chunkG7PJSVUS_js.buildPrintHtmlDocument({ title, bodyHtml, orientation, colorFilter, frameSlides })
7298
7298
  );
7299
7299
  printWindow.document.close();
7300
7300
  printWindow.focus();
@@ -7355,7 +7355,7 @@ function usePrintHandlers(input) {
7355
7355
  if (svgs.length === 0) {
7356
7356
  return;
7357
7357
  }
7358
- const printDoc = chunkT7AMP24E_js.buildPrintDocument(svgs, pptxData.width, pptxData.height, {
7358
+ const printDoc = chunkG7PJSVUS_js.buildPrintDocument(svgs, pptxData.width, pptxData.height, {
7359
7359
  title: "Slides (Vector)",
7360
7360
  orientation: settings.orientation,
7361
7361
  colorFilter
@@ -7391,7 +7391,7 @@ function usePrintHandlers(input) {
7391
7391
  if (settings.printWhat === "outline") {
7392
7392
  openPrintWindow(
7393
7393
  "Outline",
7394
- `<div class="outline-page">${chunkT7AMP24E_js.buildOutlineHtml(slideIndices, slides)}</div>`,
7394
+ `<div class="outline-page">${chunkG7PJSVUS_js.buildOutlineHtml(slideIndices, slides)}</div>`,
7395
7395
  settings.orientation,
7396
7396
  colorFilter,
7397
7397
  settings.frameSlides
@@ -7416,7 +7416,7 @@ function usePrintHandlers(input) {
7416
7416
  if (settings.printWhat === "slides") {
7417
7417
  openPrintWindow(
7418
7418
  "Slides",
7419
- chunkT7AMP24E_js.buildSlidesHtml(slideImages, slideIndices),
7419
+ chunkG7PJSVUS_js.buildSlidesHtml(slideImages, slideIndices),
7420
7420
  settings.orientation,
7421
7421
  colorFilter,
7422
7422
  settings.frameSlides
@@ -7426,7 +7426,7 @@ function usePrintHandlers(input) {
7426
7426
  if (settings.printWhat === "notes") {
7427
7427
  openPrintWindow(
7428
7428
  "Notes Pages",
7429
- chunkT7AMP24E_js.buildNotesHtml(slideImages, slideIndices, slides),
7429
+ chunkG7PJSVUS_js.buildNotesHtml(slideImages, slideIndices, slides),
7430
7430
  "portrait",
7431
7431
  colorFilter,
7432
7432
  settings.frameSlides
@@ -7437,7 +7437,7 @@ function usePrintHandlers(input) {
7437
7437
  const spp = settings.slidesPerPage;
7438
7438
  openPrintWindow(
7439
7439
  `Handout ${spp} per page`,
7440
- chunkT7AMP24E_js.buildHandoutsHtml(slideImages, slideIndices, spp),
7440
+ chunkG7PJSVUS_js.buildHandoutsHtml(slideImages, slideIndices, spp),
7441
7441
  "portrait",
7442
7442
  colorFilter,
7443
7443
  settings.frameSlides
@@ -7501,8 +7501,8 @@ function useThemeHandlers(input) {
7501
7501
  return;
7502
7502
  }
7503
7503
  await handler.updateThemeColorScheme(colorScheme);
7504
- const previousMap = theme?.colorScheme ? chunkT7AMP24E_js.buildThemeColorMap(theme.colorScheme) : {};
7505
- setSlides((prev) => chunkT7AMP24E_js.reResolveSlideColors(prev, previousMap, colorScheme));
7504
+ const previousMap = theme?.colorScheme ? chunkG7PJSVUS_js.buildThemeColorMap(theme.colorScheme) : {};
7505
+ setSlides((prev) => chunkG7PJSVUS_js.reResolveSlideColors(prev, previousMap, colorScheme));
7506
7506
  setTheme((prev) => prev ? { ...prev, colorScheme } : { colorScheme });
7507
7507
  bumpHistory();
7508
7508
  history.markDirty();
@@ -7607,7 +7607,7 @@ function useThemeSwitching(input) {
7607
7607
  }
7608
7608
  try {
7609
7609
  await handler.applyTheme(preset.colorScheme, preset.fontScheme, preset.name);
7610
- const newData = chunkT7AMP24E_js.applyThemeToData(data, preset.colorScheme, preset.fontScheme, preset.name);
7610
+ const newData = chunkG7PJSVUS_js.applyThemeToData(data, preset.colorScheme, preset.fontScheme, preset.name);
7611
7611
  onDataChange(newData);
7612
7612
  onThemeChanged?.(preset);
7613
7613
  } catch (error) {
@@ -7624,7 +7624,7 @@ function useThemeSwitching(input) {
7624
7624
  }
7625
7625
  try {
7626
7626
  await handler.applyTheme(colorScheme, fontScheme ?? {}, themeName);
7627
- const newData = chunkT7AMP24E_js.applyThemeToData(data, colorScheme, fontScheme, themeName);
7627
+ const newData = chunkG7PJSVUS_js.applyThemeToData(data, colorScheme, fontScheme, themeName);
7628
7628
  onDataChange(newData);
7629
7629
  } catch (error) {
7630
7630
  console.error("Failed to switch to custom theme:", error);
@@ -7636,12 +7636,12 @@ function useThemeSwitching(input) {
7636
7636
  if (!data?.theme?.colorScheme) {
7637
7637
  return void 0;
7638
7638
  }
7639
- return chunkT7AMP24E_js.THEME_PRESETS.find(
7640
- (p) => chunkT7AMP24E_js.themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
7639
+ return chunkG7PJSVUS_js.THEME_PRESETS.find(
7640
+ (p) => chunkG7PJSVUS_js.themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
7641
7641
  );
7642
7642
  }, [data?.theme?.colorScheme]);
7643
7643
  return {
7644
- presets: chunkT7AMP24E_js.THEME_PRESETS,
7644
+ presets: chunkG7PJSVUS_js.THEME_PRESETS,
7645
7645
  switchToPreset,
7646
7646
  switchToCustom,
7647
7647
  currentPreset
@@ -7716,7 +7716,7 @@ function usePropertyHandlers(input) {
7716
7716
  }
7717
7717
  try {
7718
7718
  const ab = await file.arrayBuffer();
7719
- const h = new chunkT7AMP24E_js.PptxHandler();
7719
+ const h = new chunkG7PJSVUS_js.PptxHandler();
7720
7720
  const other = await h.load(ab);
7721
7721
  if (!other) {
7722
7722
  return;
@@ -7726,7 +7726,7 @@ function usePropertyHandlers(input) {
7726
7726
  width: canvasSize.width,
7727
7727
  height: canvasSize.height
7728
7728
  };
7729
- setCompareResult(chunkT7AMP24E_js.comparePresentation(cur, other));
7729
+ setCompareResult(chunkG7PJSVUS_js.comparePresentation(cur, other));
7730
7730
  setIsComparePanelOpen(true);
7731
7731
  } catch (err) {
7732
7732
  console.warn("Compare failed:", err);
@@ -7743,7 +7743,7 @@ function usePropertyHandlers(input) {
7743
7743
  if (!diff || diff.status === "unchanged") {
7744
7744
  return;
7745
7745
  }
7746
- setSlides((prev) => chunkT7AMP24E_js.applyAcceptSlide(prev, diff));
7746
+ setSlides((prev) => chunkG7PJSVUS_js.applyAcceptSlide(prev, diff));
7747
7747
  setIsDirty(true);
7748
7748
  },
7749
7749
  [compareResult, setSlides, setIsDirty]
@@ -7754,10 +7754,10 @@ function usePropertyHandlers(input) {
7754
7754
  if (!compareResult) {
7755
7755
  return;
7756
7756
  }
7757
- setSlides((prev) => chunkT7AMP24E_js.applyAcceptAllSlides(prev, compareResult));
7757
+ setSlides((prev) => chunkG7PJSVUS_js.applyAcceptAllSlides(prev, compareResult));
7758
7758
  setIsDirty(true);
7759
7759
  }, [compareResult, setSlides, setIsDirty]);
7760
- const usedFontFamilies = react.useMemo(() => chunkT7AMP24E_js.collectUsedFonts(slides), [slides]);
7760
+ const usedFontFamilies = react.useMemo(() => chunkG7PJSVUS_js.collectUsedFonts(slides), [slides]);
7761
7761
  return {
7762
7762
  handleUpdateNotes,
7763
7763
  handleUpdateSlide,
@@ -7876,7 +7876,7 @@ function useIsMobile(input) {
7876
7876
  const containerRef = input?.containerRef;
7877
7877
  const isTouchDevice = react.useSyncExternalStore(
7878
7878
  subscribeTouchCapability,
7879
- chunkT7AMP24E_js.detectTouchDevice,
7879
+ chunkG7PJSVUS_js.detectTouchDevice,
7880
7880
  () => false
7881
7881
  // server snapshot
7882
7882
  );
@@ -7892,7 +7892,7 @@ function useIsMobile(input) {
7892
7892
  }
7893
7893
  return containerRef?.current?.clientHeight ?? window.innerHeight;
7894
7894
  });
7895
- const [orientation, setOrientation] = react.useState(chunkT7AMP24E_js.detectOrientation);
7895
+ const [orientation, setOrientation] = react.useState(chunkG7PJSVUS_js.detectOrientation);
7896
7896
  const [isVirtualKeyboardOpen, setIsVirtualKeyboardOpen] = react.useState(false);
7897
7897
  const [initialViewportHeight] = react.useState(
7898
7898
  () => typeof window !== "undefined" ? window.innerHeight : 800
@@ -7936,7 +7936,7 @@ function useIsMobile(input) {
7936
7936
  return;
7937
7937
  }
7938
7938
  const handleOrientationChange = () => {
7939
- setOrientation(chunkT7AMP24E_js.detectOrientation());
7939
+ setOrientation(chunkG7PJSVUS_js.detectOrientation());
7940
7940
  };
7941
7941
  if (screen.orientation) {
7942
7942
  screen.orientation.addEventListener("change", handleOrientationChange);
@@ -7966,9 +7966,9 @@ function useIsMobile(input) {
7966
7966
  window.addEventListener("resize", handleResize);
7967
7967
  return () => window.removeEventListener("resize", handleResize);
7968
7968
  }, [isTouchDevice, initialViewportHeight]);
7969
- const isMobile = chunkT7AMP24E_js.isMobileViewport(containerWidth, containerHeight, isTouchDevice);
7970
- const isTablet = !isMobile && containerWidth >= chunkT7AMP24E_js.MOBILE_BREAKPOINT && containerWidth < chunkT7AMP24E_js.TABLET_BREAKPOINT;
7971
- const isDesktop = !isMobile && containerWidth >= chunkT7AMP24E_js.TABLET_BREAKPOINT;
7969
+ const isMobile = chunkG7PJSVUS_js.isMobileViewport(containerWidth, containerHeight, isTouchDevice);
7970
+ const isTablet = !isMobile && containerWidth >= chunkG7PJSVUS_js.MOBILE_BREAKPOINT && containerWidth < chunkG7PJSVUS_js.TABLET_BREAKPOINT;
7971
+ const isDesktop = !isMobile && containerWidth >= chunkG7PJSVUS_js.TABLET_BREAKPOINT;
7972
7972
  return {
7973
7973
  isMobile,
7974
7974
  isTablet,
@@ -8029,11 +8029,11 @@ function useViewerDialogs(input) {
8029
8029
  );
8030
8030
  const [embedFontsEnabled, setEmbedFontsEnabled] = react.useState(false);
8031
8031
  const [isNarrowViewport, setIsNarrowViewport] = react.useState(
8032
- () => typeof window !== "undefined" ? chunkT7AMP24E_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch()) : false
8032
+ () => typeof window !== "undefined" ? chunkG7PJSVUS_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch()) : false
8033
8033
  );
8034
8034
  react.useEffect(() => {
8035
8035
  const handleWindow = () => setIsNarrowViewport(
8036
- chunkT7AMP24E_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch())
8036
+ chunkG7PJSVUS_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch())
8037
8037
  );
8038
8038
  let observer = null;
8039
8039
  let raf = 0;
@@ -8047,12 +8047,12 @@ function useViewerDialogs(input) {
8047
8047
  const entry = entries[0];
8048
8048
  if (entry) {
8049
8049
  setIsNarrowViewport(
8050
- chunkT7AMP24E_js.isMobileViewport(entry.contentRect.width, entry.contentRect.height, viewportIsTouch())
8050
+ chunkG7PJSVUS_js.isMobileViewport(entry.contentRect.width, entry.contentRect.height, viewportIsTouch())
8051
8051
  );
8052
8052
  }
8053
8053
  });
8054
8054
  observer.observe(el);
8055
- setIsNarrowViewport(chunkT7AMP24E_js.isMobileViewport(el.clientWidth, el.clientHeight, viewportIsTouch()));
8055
+ setIsNarrowViewport(chunkG7PJSVUS_js.isMobileViewport(el.clientWidth, el.clientHeight, viewportIsTouch()));
8056
8056
  };
8057
8057
  attach();
8058
8058
  window.addEventListener("resize", handleWindow);
@@ -8210,12 +8210,12 @@ function useViewerDialogs(input) {
8210
8210
  }
8211
8211
  function computeGridSpacingPx(presentationGridSpacing) {
8212
8212
  if (presentationGridSpacing) {
8213
- const px = Math.round(presentationGridSpacing.cx / chunk4O7PPQ2V_js.EMU_PER_PX);
8213
+ const px = Math.round(presentationGridSpacing.cx / chunkXROVGBFQ_js.EMU_PER_PX);
8214
8214
  if (px > 0) {
8215
8215
  return px;
8216
8216
  }
8217
8217
  }
8218
- return chunk4O7PPQ2V_js.GRID_SIZE;
8218
+ return chunkXROVGBFQ_js.GRID_SIZE;
8219
8219
  }
8220
8220
  function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows) {
8221
8221
  if (activeCustomShowId) {
@@ -8229,8 +8229,8 @@ function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows) {
8229
8229
  return slides.map((_, i) => i).filter((i) => !slides[i]?.hidden);
8230
8230
  }
8231
8231
  function computeSlideSectionGroups(slides, sections) {
8232
- return chunkT7AMP24E_js.groupSlidesBySection(sections, slides).map((group) => ({
8233
- id: group.section?.id ?? (sections.length > 0 ? chunk4O7PPQ2V_js.UNGROUPED_SECTION_ID : "default"),
8232
+ return chunkG7PJSVUS_js.groupSlidesBySection(sections, slides).map((group) => ({
8233
+ id: group.section?.id ?? (sections.length > 0 ? chunkXROVGBFQ_js.UNGROUPED_SECTION_ID : "default"),
8234
8234
  label: group.section?.name ?? (sections.length > 0 ? "Ungrouped Slides" : "Slides"),
8235
8235
  slideIndexes: group.slideIndexes,
8236
8236
  ...group.section?.color !== void 0 ? { color: group.section.color } : {},
@@ -8285,7 +8285,7 @@ function useDerivedSlideState(input) {
8285
8285
  );
8286
8286
  const slideSectionGroups = react.useMemo(
8287
8287
  () => computeSlideSectionGroups(slides, sections).map((group) => {
8288
- if (group.id === chunk4O7PPQ2V_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
8288
+ if (group.id === chunkXROVGBFQ_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
8289
8289
  return { ...group, label: t("pptx.slides.ungroupedSlides") };
8290
8290
  }
8291
8291
  if (group.id === "default" && group.label === "Slides") {
@@ -8388,13 +8388,13 @@ function useAnnotationHandlers(input) {
8388
8388
  }, [annotations, setMode, setSlides, history]);
8389
8389
  const handleSetMode = react.useCallback(
8390
8390
  (nextMode) => {
8391
- if (mode === "present" && nextMode !== "present" && !chunkT7AMP24E_js.mayLeaveSlideShow()) {
8391
+ if (mode === "present" && nextMode !== "present" && !chunkG7PJSVUS_js.mayLeaveSlideShow()) {
8392
8392
  return;
8393
8393
  }
8394
8394
  if (nextMode === "present") {
8395
8395
  presentation.enterPresentMode();
8396
8396
  } else if (mode === "present" && annotations.hasAnyAnnotations) {
8397
- chunk4O7PPQ2V_js.stopAllPersistentAudio();
8397
+ chunkXROVGBFQ_js.stopAllPersistentAudio();
8398
8398
  pendingModeAfterAnnotationsRef.current = nextMode;
8399
8399
  if (promptKeepInkAnnotations) {
8400
8400
  setShowKeepAnnotationsDialog(true);
@@ -8403,7 +8403,7 @@ function useAnnotationHandlers(input) {
8403
8403
  }
8404
8404
  } else {
8405
8405
  if (mode === "present") {
8406
- chunk4O7PPQ2V_js.stopAllPersistentAudio();
8406
+ chunkXROVGBFQ_js.stopAllPersistentAudio();
8407
8407
  }
8408
8408
  setMode(nextMode);
8409
8409
  }
@@ -8469,13 +8469,13 @@ function useSerialize(input) {
8469
8469
  let processedSlide = slide;
8470
8470
  if (pendingEditId) {
8471
8471
  const updatedElements = slide.elements.map((el) => {
8472
- if (el.id !== pendingEditId || !chunkT7AMP24E_js.hasTextProperties(el)) {
8472
+ if (el.id !== pendingEditId || !chunkG7PJSVUS_js.hasTextProperties(el)) {
8473
8473
  return el;
8474
8474
  }
8475
8475
  return {
8476
8476
  ...el,
8477
8477
  text: pendingEditText,
8478
- textSegments: chunkT7AMP24E_js.remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
8478
+ textSegments: chunkG7PJSVUS_js.remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
8479
8479
  };
8480
8480
  });
8481
8481
  if (updatedElements.some((el, i) => el !== slide.elements[i])) {
@@ -8488,14 +8488,14 @@ function useSerialize(input) {
8488
8488
  const pptxGuides = guides.map((g) => ({
8489
8489
  id: g.id,
8490
8490
  orientation: g.axis === "h" ? "horz" : "vert",
8491
- positionEmu: chunkT7AMP24E_js.guidePxToEmu(g.position)
8491
+ positionEmu: chunkG7PJSVUS_js.guidePxToEmu(g.position)
8492
8492
  }));
8493
8493
  return {
8494
8494
  ...processedSlide,
8495
8495
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
8496
8496
  };
8497
8497
  });
8498
- const slidesToSave = chunk4O7PPQ2V_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
8498
+ const slidesToSave = chunkXROVGBFQ_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
8499
8499
  const saveOptions = {
8500
8500
  headerFooter,
8501
8501
  presentationProperties,
@@ -8664,7 +8664,7 @@ function usePresentationSetup(input) {
8664
8664
  containerRef,
8665
8665
  content,
8666
8666
  onSetMode: (nextMode) => {
8667
- if (mode === "present" && nextMode !== "present" && !chunkT7AMP24E_js.mayLeaveSlideShow()) {
8667
+ if (mode === "present" && nextMode !== "present" && !chunkG7PJSVUS_js.mayLeaveSlideShow()) {
8668
8668
  return;
8669
8669
  }
8670
8670
  if (mode === "present" && nextMode !== "present" && annotations.hasAnyAnnotations && promptKeepInkAnnotations) {
@@ -8672,7 +8672,7 @@ function usePresentationSetup(input) {
8672
8672
  setShowKeepAnnotationsDialog(true);
8673
8673
  } else {
8674
8674
  if (mode === "present" && nextMode !== "present") {
8675
- chunk4O7PPQ2V_js.stopAllPersistentAudio();
8675
+ chunkXROVGBFQ_js.stopAllPersistentAudio();
8676
8676
  stopAnimationSound();
8677
8677
  }
8678
8678
  setMode(nextMode);
@@ -8726,10 +8726,10 @@ function usePresentationSetup(input) {
8726
8726
  onToggleInkMarkup: () => annotations.setInkMarkupVisible(!annotations.inkMarkupVisible),
8727
8727
  onToggleToolbar: () => annotations.setToolbarVisible(!annotations.toolbarVisible),
8728
8728
  onSaveRehearsalTimings: (timings) => {
8729
- setSlides((prev) => chunkT7AMP24E_js.applyRehearsalTimings(prev, timings));
8729
+ setSlides((prev) => chunkG7PJSVUS_js.applyRehearsalTimings(prev, timings));
8730
8730
  history.markDirty();
8731
8731
  },
8732
- loopContinuously: chunkT7AMP24E_js.shouldLoopContinuously(presentationProperties),
8732
+ loopContinuously: chunkG7PJSVUS_js.shouldLoopContinuously(presentationProperties),
8733
8733
  showWithAnimation: presentationProperties.showWithAnimation,
8734
8734
  useTimings: presentationProperties.advanceMode !== "manual",
8735
8735
  endWithBlackSlide
@@ -8891,7 +8891,7 @@ function useEditorOperations(input) {
8891
8891
  const { formatPainterActive, setFormatPainterActive, elementLookup } = state;
8892
8892
  react.useEffect(() => {
8893
8893
  if (formatPainterActive && !prevFormatPainterRef.current && selectedElement) {
8894
- copiedFormatRef.current = chunkT7AMP24E_js.copyFormatFromElement(selectedElement);
8894
+ copiedFormatRef.current = chunkG7PJSVUS_js.copyFormatFromElement(selectedElement);
8895
8895
  } else if (!formatPainterActive) {
8896
8896
  copiedFormatRef.current = null;
8897
8897
  }
@@ -8917,12 +8917,12 @@ function useEditorOperations(input) {
8917
8917
  e.stopPropagation();
8918
8918
  const element = elementLookup.get(elementId);
8919
8919
  if (element) {
8920
- const updated = chunkT7AMP24E_js.applyFormatToElement(element, copiedFormatRef.current);
8920
+ const updated = chunkG7PJSVUS_js.applyFormatToElement(element, copiedFormatRef.current);
8921
8921
  const updates = {};
8922
- if (chunkT7AMP24E_js.hasShapeProperties(updated)) {
8922
+ if (chunkG7PJSVUS_js.hasShapeProperties(updated)) {
8923
8923
  updates.shapeStyle = updated.shapeStyle;
8924
8924
  }
8925
- if (chunkT7AMP24E_js.hasTextProperties(updated)) {
8925
+ if (chunkG7PJSVUS_js.hasTextProperties(updated)) {
8926
8926
  updates.textStyle = updated.textStyle;
8927
8927
  }
8928
8928
  ops.updateElementById(elementId, updates);
@@ -9069,7 +9069,7 @@ function collectReferencedFontFamilies(slides) {
9069
9069
  const families = /* @__PURE__ */ new Set();
9070
9070
  for (const slide of slides) {
9071
9071
  for (const el of slide.elements) {
9072
- if (chunkT7AMP24E_js.hasTextProperties(el) && el.textSegments) {
9072
+ if (chunkG7PJSVUS_js.hasTextProperties(el) && el.textSegments) {
9073
9073
  for (const seg of el.textSegments) {
9074
9074
  if (seg.style.fontFamily) {
9075
9075
  families.add(seg.style.fontFamily);
@@ -9638,7 +9638,7 @@ function useViewerIntegration(input) {
9638
9638
  return zoom.scale;
9639
9639
  },
9640
9640
  setZoom(level) {
9641
- zoom.setScale(Math.min(Math.max(level, chunk4O7PPQ2V_js.MIN_ZOOM_SCALE), chunk4O7PPQ2V_js.MAX_ZOOM_SCALE));
9641
+ zoom.setScale(Math.min(Math.max(level, chunkXROVGBFQ_js.MIN_ZOOM_SCALE), chunkXROVGBFQ_js.MAX_ZOOM_SCALE));
9642
9642
  },
9643
9643
  zoomIn() {
9644
9644
  zoom.handleZoomIn();
@@ -9853,7 +9853,7 @@ function useReducedMotion() {
9853
9853
  }
9854
9854
  function useViewerOptions() {
9855
9855
  const storeRef = react.useRef(null);
9856
- storeRef.current ??= chunkT7AMP24E_js.createViewerOptionsStore();
9856
+ storeRef.current ??= chunkG7PJSVUS_js.createViewerOptionsStore();
9857
9857
  const store = storeRef.current;
9858
9858
  const options = react.useSyncExternalStore(
9859
9859
  (onStoreChange) => store.subscribe(onStoreChange),
@@ -9862,9 +9862,9 @@ function useViewerOptions() {
9862
9862
  );
9863
9863
  return { optionsStore: store, options };
9864
9864
  }
9865
- var KNOWN_TAB_IDS = new Set(chunkT7AMP24E_js.TOOLBAR_TABS.map((tab) => tab.id));
9865
+ var KNOWN_TAB_IDS = new Set(chunkG7PJSVUS_js.TOOLBAR_TABS.map((tab) => tab.id));
9866
9866
  function computeToolbarVisibility(hiddenActions) {
9867
- const isHidden = (id) => chunkT7AMP24E_js.isActionHidden(id, hiddenActions);
9867
+ const isHidden = (id) => chunkG7PJSVUS_js.isActionHidden(id, hiddenActions);
9868
9868
  const isTabVisible = (id) => !KNOWN_TAB_IDS.has(id) || !isHidden(id);
9869
9869
  return { isHidden, isTabVisible };
9870
9870
  }
@@ -9949,12 +9949,12 @@ function useYjsDocumentSync({
9949
9949
  return;
9950
9950
  }
9951
9951
  try {
9952
- const handler = new chunkT7AMP24E_js.PptxHandler();
9952
+ const handler = new chunkG7PJSVUS_js.PptxHandler();
9953
9953
  await handler.load(sourceBytes.buffer);
9954
- const currentSlides = chunkT7AMP24E_js.readSlidesFromYDoc(
9954
+ const currentSlides = chunkG7PJSVUS_js.readSlidesFromYDoc(
9955
9955
  doc
9956
9956
  );
9957
- const slidesToSave = chunk4O7PPQ2V_js.buildSaveSlides(currentSlides, templateElementsBySlideId);
9957
+ const slidesToSave = chunkXROVGBFQ_js.buildSaveSlides(currentSlides, templateElementsBySlideId);
9958
9958
  const bytes = await handler.save(slidesToSave);
9959
9959
  config.onWriteBack(bytes);
9960
9960
  } catch {
@@ -9969,7 +9969,7 @@ function useYjsDocumentSync({
9969
9969
  if (!doc || !isConnected) {
9970
9970
  return;
9971
9971
  }
9972
- const docSlides = chunkT7AMP24E_js.readSlidesFromYDoc(
9972
+ const docSlides = chunkG7PJSVUS_js.readSlidesFromYDoc(
9973
9973
  doc
9974
9974
  );
9975
9975
  if (docSlides.length === 0) {
@@ -9991,11 +9991,11 @@ function useYjsDocumentSync({
9991
9991
  lastSyncedRef.current = serialized;
9992
9992
  void (async () => {
9993
9993
  const factories = await getFactories();
9994
- chunkT7AMP24E_js.reconcileSlidesInYDoc(
9994
+ chunkG7PJSVUS_js.reconcileSlidesInYDoc(
9995
9995
  slides,
9996
9996
  doc,
9997
9997
  factories,
9998
- chunkT7AMP24E_js.LOCAL_SYNC_ORIGIN
9998
+ chunkG7PJSVUS_js.LOCAL_SYNC_ORIGIN
9999
9999
  );
10000
10000
  scheduleWriteBack();
10001
10001
  })();
@@ -10009,10 +10009,10 @@ function useYjsDocumentSync({
10009
10009
  return;
10010
10010
  }
10011
10011
  const handleChange = (_events, transaction) => {
10012
- if (transaction?.origin === chunkT7AMP24E_js.LOCAL_SYNC_ORIGIN) {
10012
+ if (transaction?.origin === chunkG7PJSVUS_js.LOCAL_SYNC_ORIGIN) {
10013
10013
  return;
10014
10014
  }
10015
- const remoteSlides = chunkT7AMP24E_js.readSlidesFromYDoc(
10015
+ const remoteSlides = chunkG7PJSVUS_js.readSlidesFromYDoc(
10016
10016
  doc
10017
10017
  );
10018
10018
  if (remoteSlides.length === 0) {
@@ -10028,7 +10028,7 @@ function useYjsDocumentSync({
10028
10028
  isApplyingRemoteRef.current = false;
10029
10029
  scheduleWriteBack();
10030
10030
  };
10031
- const unobserve = chunkT7AMP24E_js.observeYDocSlides(
10031
+ const unobserve = chunkG7PJSVUS_js.observeYDocSlides(
10032
10032
  doc,
10033
10033
  handleChange
10034
10034
  );
@@ -10066,7 +10066,7 @@ function useBroadcastFollower({
10066
10066
  if (!broadcaster) {
10067
10067
  return;
10068
10068
  }
10069
- if (!chunkT7AMP24E_js.shouldAutoFollowBroadcaster({
10069
+ if (!chunkG7PJSVUS_js.shouldAutoFollowBroadcaster({
10070
10070
  localRole: collab.config.role,
10071
10071
  broadcasterRole: broadcaster.role
10072
10072
  })) {
@@ -10226,10 +10226,10 @@ function useTouchGestures(input) {
10226
10226
  if (!el || !enabled) {
10227
10227
  return;
10228
10228
  }
10229
- const recognizer = chunkT7AMP24E_js.createTouchGestureRecognizer({
10229
+ const recognizer = chunkG7PJSVUS_js.createTouchGestureRecognizer({
10230
10230
  getScale: () => scaleRef.current,
10231
- minScale: chunk4O7PPQ2V_js.MIN_ZOOM_SCALE,
10232
- maxScale: chunk4O7PPQ2V_js.MAX_ZOOM_SCALE,
10231
+ minScale: chunkXROVGBFQ_js.MIN_ZOOM_SCALE,
10232
+ maxScale: chunkXROVGBFQ_js.MAX_ZOOM_SCALE,
10233
10233
  callbacks: {
10234
10234
  onPinchZoom: (newScale) => callbacksRef.current.onPinchZoom?.(newScale),
10235
10235
  onSwipe: (direction) => callbacksRef.current.onSwipe?.(direction),
@@ -10269,7 +10269,7 @@ function scrollFocusedIntoView(keyboardInset) {
10269
10269
  return;
10270
10270
  }
10271
10271
  const rect = active.getBoundingClientRect();
10272
- const delta = chunkT7AMP24E_js.computeScrollDelta(
10272
+ const delta = chunkG7PJSVUS_js.computeScrollDelta(
10273
10273
  { top: rect.top, bottom: rect.bottom },
10274
10274
  window.innerHeight,
10275
10275
  keyboardInset
@@ -10289,8 +10289,8 @@ function useKeyboardInsets(enabled = true) {
10289
10289
  return;
10290
10290
  }
10291
10291
  const update = () => {
10292
- const metrics = chunkT7AMP24E_js.readViewportMetrics(window);
10293
- const inset = metrics ? chunkT7AMP24E_js.computeKeyboardInset(metrics) : 0;
10292
+ const metrics = chunkG7PJSVUS_js.readViewportMetrics(window);
10293
+ const inset = metrics ? chunkG7PJSVUS_js.computeKeyboardInset(metrics) : 0;
10294
10294
  setKeyboardInset(inset);
10295
10295
  if (inset > 0) {
10296
10296
  window.requestAnimationFrame(() => scrollFocusedIntoView(inset));
@@ -10301,8 +10301,8 @@ function useKeyboardInsets(enabled = true) {
10301
10301
  vv.addEventListener("scroll", update);
10302
10302
  const onFocusIn = () => {
10303
10303
  window.requestAnimationFrame(() => {
10304
- const metrics = chunkT7AMP24E_js.readViewportMetrics(window);
10305
- const inset = metrics ? chunkT7AMP24E_js.computeKeyboardInset(metrics) : 0;
10304
+ const metrics = chunkG7PJSVUS_js.readViewportMetrics(window);
10305
+ const inset = metrics ? chunkG7PJSVUS_js.computeKeyboardInset(metrics) : 0;
10306
10306
  if (inset > 0) {
10307
10307
  scrollFocusedIntoView(inset);
10308
10308
  }
@@ -10315,7 +10315,7 @@ function useKeyboardInsets(enabled = true) {
10315
10315
  document.removeEventListener("focusin", onFocusIn);
10316
10316
  };
10317
10317
  }, [enabled]);
10318
- return { keyboardInset, isKeyboardOpen: chunkT7AMP24E_js.isKeyboardOpen(keyboardInset) };
10318
+ return { keyboardInset, isKeyboardOpen: chunkG7PJSVUS_js.isKeyboardOpen(keyboardInset) };
10319
10319
  }
10320
10320
 
10321
10321
  // src/viewer/hooks/useViewerBuildingBlocks-canvas-props.ts
@@ -10370,13 +10370,13 @@ function buildCanvasProps(input) {
10370
10370
  if (mode === "present") {
10371
10371
  presentation.handlePresentationAction(action);
10372
10372
  } else if (action.url) {
10373
- chunkT7AMP24E_js.safeOpenUrl(action.url);
10373
+ chunkG7PJSVUS_js.safeOpenUrl(action.url);
10374
10374
  }
10375
10375
  };
10376
10376
  const handleHyperlinkClick = (url) => {
10377
- if (chunkT7AMP24E_js.isPpactionUrl(url)) {
10377
+ if (chunkG7PJSVUS_js.isPpactionUrl(url)) {
10378
10378
  if (mode === "present") {
10379
- const parsed = chunkT7AMP24E_js.parsePpactionUrl(url);
10379
+ const parsed = chunkG7PJSVUS_js.parsePpactionUrl(url);
10380
10380
  if (parsed) {
10381
10381
  presentation.handlePresentationAction({
10382
10382
  action: parsed.action,
@@ -10386,7 +10386,7 @@ function buildCanvasProps(input) {
10386
10386
  }
10387
10387
  return;
10388
10388
  }
10389
- chunkT7AMP24E_js.safeOpenUrl(url);
10389
+ chunkG7PJSVUS_js.safeOpenUrl(url);
10390
10390
  };
10391
10391
  return {
10392
10392
  activeSlide: effectiveSlide,
@@ -10706,7 +10706,7 @@ function buildToolbarProps(input) {
10706
10706
  onOpenFile,
10707
10707
  onOpenRecentFile,
10708
10708
  onCreatePresentation: (templateId) => {
10709
- s.setSlides(chunkT7AMP24E_js.createBackstagePresentation(templateId));
10709
+ s.setSlides(chunkG7PJSVUS_js.createBackstagePresentation(templateId));
10710
10710
  s.setActiveSlideIndex(0);
10711
10711
  s.setSelectedElementId(null);
10712
10712
  s.setSelectedElementIds([]);
@@ -10761,7 +10761,7 @@ function buildToolbarProps(input) {
10761
10761
  isCommentsPanelOpen: s.isInspectorPaneOpen,
10762
10762
  slideCommentCount: activeSlide?.comments?.length ?? 0,
10763
10763
  formatPainterActive: s.formatPainterActive,
10764
- canActivateFormatPainter: chunkT7AMP24E_js.hasCopyableFormat(selectedElement),
10764
+ canActivateFormatPainter: chunkG7PJSVUS_js.hasCopyableFormat(selectedElement),
10765
10765
  onToggleFormatPainter: () => s.setFormatPainterActive((p) => !p),
10766
10766
  isSelectionPaneOpen: s.isSelectionPaneOpen,
10767
10767
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -11024,7 +11024,7 @@ function useViewerBuildingBlocks(input) {
11024
11024
  }, [incomingContent]);
11025
11025
  const onOpenFile = react.useCallback(() => {
11026
11026
  void (async () => {
11027
- const picked = await chunkT7AMP24E_js.openPptxFile();
11027
+ const picked = await chunkG7PJSVUS_js.openPptxFile();
11028
11028
  if (picked) {
11029
11029
  setContent(picked.buffer);
11030
11030
  }
@@ -11032,7 +11032,7 @@ function useViewerBuildingBlocks(input) {
11032
11032
  }, []);
11033
11033
  const onOpenRecentFile = react.useCallback((key) => {
11034
11034
  void (async () => {
11035
- const bytes = await chunkT7AMP24E_js.readBackstageRecentFile(key);
11035
+ const bytes = await chunkG7PJSVUS_js.readBackstageRecentFile(key);
11036
11036
  if (bytes) {
11037
11037
  setContent(bytes);
11038
11038
  }