pptx-react-viewer 2.6.1 → 2.6.3

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 +4 -0
  2. package/dist/{AiChatPanel-RVZOGGFK.mjs → AiChatPanel-XT26Z3KM.mjs} +3 -3
  3. package/dist/AiChatPanel-XT26Z3KM.mjs.br +0 -0
  4. package/dist/AiChatPanel-XT26Z3KM.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-LBK6YRKH.js → AiChatPanel-Y4XJ4THX.js} +22 -22
  6. package/dist/AiChatPanel-Y4XJ4THX.js.br +0 -0
  7. package/dist/AiChatPanel-Y4XJ4THX.js.gz +0 -0
  8. package/dist/{Model3DScene-WBUZ74G3.mjs → Model3DScene-IQDJJZAM.mjs} +1 -1
  9. package/dist/Model3DScene-IQDJJZAM.mjs.br +0 -0
  10. package/dist/Model3DScene-IQDJJZAM.mjs.gz +0 -0
  11. package/dist/{Model3DScene-L46RNRU5.js → Model3DScene-OBG67YKJ.js} +2 -2
  12. package/dist/Model3DScene-OBG67YKJ.js.br +0 -0
  13. package/dist/Model3DScene-OBG67YKJ.js.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-CB32AJS4.mjs → SurfaceChart3DScene-KFIHKHEB.mjs} +1 -1
  15. package/dist/{SurfaceChart3DScene-CB32AJS4.mjs.br → SurfaceChart3DScene-KFIHKHEB.mjs.br} +0 -0
  16. package/dist/SurfaceChart3DScene-KFIHKHEB.mjs.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-RWMGMREC.js → SurfaceChart3DScene-OJR7PBUU.js} +2 -2
  18. package/dist/SurfaceChart3DScene-OJR7PBUU.js.br +0 -0
  19. package/dist/SurfaceChart3DScene-OJR7PBUU.js.gz +0 -0
  20. package/dist/{chunk-4O7PPQ2V.js → chunk-5ZI2ZG5E.js} +236 -236
  21. package/dist/chunk-5ZI2ZG5E.js.br +0 -0
  22. package/dist/chunk-5ZI2ZG5E.js.gz +0 -0
  23. package/dist/{chunk-IEFH47TF.js → chunk-6W4AEXA3.js} +843 -843
  24. package/dist/chunk-6W4AEXA3.js.br +0 -0
  25. package/dist/chunk-6W4AEXA3.js.gz +0 -0
  26. package/dist/{chunk-ZUNDIOGD.mjs → chunk-77XK7DJE.mjs} +2 -2
  27. package/dist/chunk-77XK7DJE.mjs.br +0 -0
  28. package/dist/chunk-77XK7DJE.mjs.gz +0 -0
  29. package/dist/{chunk-AX4Q5JWN.js → chunk-AH5DPIY2.js} +3 -3
  30. package/dist/chunk-AH5DPIY2.js.br +0 -0
  31. package/dist/chunk-AH5DPIY2.js.gz +0 -0
  32. package/dist/{chunk-EI456HZK.mjs → chunk-FV5GXJ4L.mjs} +22 -2
  33. package/dist/chunk-FV5GXJ4L.mjs.br +0 -0
  34. package/dist/{chunk-EI456HZK.mjs.gz → chunk-FV5GXJ4L.mjs.gz} +0 -0
  35. package/dist/{chunk-T7AMP24E.js → chunk-HHQRYCLW.js} +22 -2
  36. package/dist/chunk-HHQRYCLW.js.br +0 -0
  37. package/dist/{chunk-T7AMP24E.js.gz → chunk-HHQRYCLW.js.gz} +0 -0
  38. package/dist/{chunk-54FSVX3O.mjs → chunk-I6XL525L.mjs} +10 -4
  39. package/dist/chunk-I6XL525L.mjs.br +0 -0
  40. package/dist/chunk-I6XL525L.mjs.gz +0 -0
  41. package/dist/{chunk-2VE3LVKZ.js → chunk-JPACC7ZB.js} +323 -317
  42. package/dist/chunk-JPACC7ZB.js.br +0 -0
  43. package/dist/chunk-JPACC7ZB.js.gz +0 -0
  44. package/dist/{chunk-GC6HQMVG.mjs → chunk-KYAV5V7C.mjs} +1 -1
  45. package/dist/chunk-KYAV5V7C.mjs.br +0 -0
  46. package/dist/chunk-KYAV5V7C.mjs.gz +0 -0
  47. package/dist/{chunk-BL3WW2BS.mjs → chunk-V6HOH4XZ.mjs} +7 -7
  48. package/dist/chunk-V6HOH4XZ.mjs.br +0 -0
  49. package/dist/chunk-V6HOH4XZ.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 chunk5ZI2ZG5E_js = require('./chunk-5ZI2ZG5E.js');
4
4
  var chunk25VSL2BB_js = require('./chunk-25VSL2BB.js');
5
- var chunkT7AMP24E_js = require('./chunk-T7AMP24E.js');
5
+ var chunkHHQRYCLW_js = require('./chunk-HHQRYCLW.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 = chunkHHQRYCLW_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 = chunkHHQRYCLW_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 >= chunkHHQRYCLW_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
+ }, chunkHHQRYCLW_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 = chunkHHQRYCLW_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 = chunkHHQRYCLW_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
+ chunkHHQRYCLW_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 = chunkHHQRYCLW_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 = chunkHHQRYCLW_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 = chunkHHQRYCLW_js.validateRoomId(config.roomId);
287
+ const transport = config.transport ?? chunkHHQRYCLW_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 (chunkHHQRYCLW_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 = chunkHHQRYCLW_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
+ chunkHHQRYCLW_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
+ }, chunkHHQRYCLW_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
+ chunkHHQRYCLW_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 = chunkHHQRYCLW_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 = chunkHHQRYCLW_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(chunkHHQRYCLW_js.cloneSlide),
521
+ templateElementsBySlideId: chunkHHQRYCLW_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(chunkHHQRYCLW_js.cloneSlide));
535
535
  setTemplateElementsBySlideId(
536
- chunkT7AMP24E_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
536
+ chunkHHQRYCLW_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 = chunk5ZI2ZG5E_js.cloneHistorySnapshot(previousSnapshot);
571
+ lastHistorySnapshotRef.current = chunk5ZI2ZG5E_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 = chunk5ZI2ZG5E_js.cloneHistorySnapshot(nextSnapshot);
593
+ lastHistorySnapshotRef.current = chunk5ZI2ZG5E_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 = chunk5ZI2ZG5E_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 = chunk5ZI2ZG5E_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(chunk5ZI2ZG5E_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 = chunk5ZI2ZG5E_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, chunk5ZI2ZG5E_js.MIN_ZOOM_SCALE), chunk5ZI2ZG5E_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, chunk5ZI2ZG5E_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, chunk5ZI2ZG5E_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, chunk5ZI2ZG5E_js.MIN_ELEMENT_SIZE));
790
+ maxY = Math.max(maxY, element.y + Math.max(element.height, chunk5ZI2ZG5E_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, chunk5ZI2ZG5E_js.MIN_ELEMENT_SIZE);
797
+ const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunk5ZI2ZG5E_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 - chunk5ZI2ZG5E_js.ZOOM_TO_SELECTION_PADDING,
800
+ chunk5ZI2ZG5E_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 - chunk5ZI2ZG5E_js.ZOOM_TO_SELECTION_PADDING,
804
+ chunk5ZI2ZG5E_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, chunk5ZI2ZG5E_js.MIN_ZOOM_SCALE),
813
+ chunk5ZI2ZG5E_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, chunk5ZI2ZG5E_js.MIN_ZOOM_SCALE), chunk5ZI2ZG5E_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
+ chunk5ZI2ZG5E_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
+ chunkHHQRYCLW_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 = chunkHHQRYCLW_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 = chunkHHQRYCLW_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 = chunkHHQRYCLW_js.PRESENTATION_CHANNEL_NAME;
1278
+ var AUDIENCE_HASH = chunkHHQRYCLW_js.PRESENTATION_HASH;
1279
+ var PRESENTER_MSG_ORIGIN = chunkHHQRYCLW_js.PRESENTATION_MESSAGE_ORIGIN;
1280
+ var AUDIENCE_NONCE_KEY = chunkHHQRYCLW_js.PRESENTATION_NONCE_KEY;
1281
1281
  function generateSessionId() {
1282
- return chunkT7AMP24E_js.createPresentationSessionId();
1282
+ return chunkHHQRYCLW_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 ? chunkHHQRYCLW_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 chunkHHQRYCLW_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 = chunkHHQRYCLW_js.buildPresentationAudienceUrl(window.location.href, sessionId);
1401
+ void chunkHHQRYCLW_js.resolveAudienceScreenPlacement(window).then((placement) => {
1402
1402
  if (placement && audienceWindowRef.current === blankWin && !blankWin.closed) {
1403
- chunkT7AMP24E_js.placeAudienceWindow(blankWin, placement);
1403
+ chunkHHQRYCLW_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 chunkHHQRYCLW_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 (chunkHHQRYCLW_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 chunkHHQRYCLW_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 (!chunkHHQRYCLW_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 chunkHHQRYCLW_js.clearAudienceContent(expectedSessionId);
1567
1567
  }
1568
- if (chunkT7AMP24E_js.endAudienceDisplay(window)) {
1568
+ if (chunkHHQRYCLW_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: chunkHHQRYCLW_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(chunkHHQRYCLW_js.createPresentationKeyBuffer());
1608
1608
  react.useEffect(() => {
1609
- if (mode !== "present" || !chunkT7AMP24E_js.acceptsPresentationInput()) {
1610
- keyBufferRef.current = chunkT7AMP24E_js.createPresentationKeyBuffer();
1609
+ if (mode !== "present" || !chunkHHQRYCLW_js.acceptsPresentationInput()) {
1610
+ keyBufferRef.current = chunkHHQRYCLW_js.createPresentationKeyBuffer();
1611
1611
  return;
1612
1612
  }
1613
1613
  const handleKeyDown = (event) => {
1614
- const mapped = chunkT7AMP24E_js.mapPresentationKey(event, keyBufferRef.current);
1614
+ const mapped = chunkHHQRYCLW_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 (chunkHHQRYCLW_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 ? chunkHHQRYCLW_js.resolveTransitionDurationMs(transition) : 0;
1833
1833
  deps.clearPresentationTimers();
1834
1834
  deps.setPresentationSlideIndex(nextSlideIndex);
1835
1835
  deps.onSetActiveSlideIndex(nextSlideIndex);
@@ -2012,8 +2012,14 @@ function useSlideNavigation(input) {
2012
2012
  scheduleAutoAdvanceForSlide,
2013
2013
  presentationTimersRef,
2014
2014
  setTransitionOverlay,
2015
- // Direct jumps (action buttons, zoom tiles) are transition-less.
2016
- playTransition: false
2015
+ // A jump ENTERS the target slide, so PowerPoint plays that slide's
2016
+ // transition exactly as it does for a forward advance - hyperlinks,
2017
+ // action buttons, Home/End and "type a number + Enter" all animate.
2018
+ // Suppressing it here is why a deck navigated by clicking its own
2019
+ // on-slide links (this is how the issue #131 reporter drives their
2020
+ // wheel menu) appeared to have no morph at all, while the same
2021
+ // transition played fine on PageDown.
2022
+ playTransition: true
2017
2023
  });
2018
2024
  },
2019
2025
  [
@@ -2079,17 +2085,17 @@ function useZoomNavigation(input) {
2079
2085
  };
2080
2086
  }
2081
2087
  function usePresenterConsole(slideIndex) {
2082
- const timerRef = react.useRef(chunkT7AMP24E_js.createPresenterTimer());
2083
- const [snapshot, setSnapshot] = react.useState(() => chunkT7AMP24E_js.createInitialPresentationSnapshot(slideIndex));
2088
+ const timerRef = react.useRef(chunkHHQRYCLW_js.createPresenterTimer());
2089
+ const [snapshot, setSnapshot] = react.useState(() => chunkHHQRYCLW_js.createInitialPresentationSnapshot(slideIndex));
2084
2090
  const patch = react.useCallback((value) => {
2085
- setSnapshot((current) => chunkT7AMP24E_js.mergePresentationSnapshot(current, value));
2091
+ setSnapshot((current) => chunkHHQRYCLW_js.mergePresentationSnapshot(current, value));
2086
2092
  }, []);
2087
2093
  react.useEffect(() => patch({ slideIndex }), [patch, slideIndex]);
2088
2094
  react.useEffect(() => {
2089
2095
  const timer = window.setInterval(() => {
2090
2096
  patch({
2091
2097
  paused: timerRef.current.paused,
2092
- elapsedMs: chunkT7AMP24E_js.presenterElapsed(timerRef.current)
2098
+ elapsedMs: chunkHHQRYCLW_js.presenterElapsed(timerRef.current)
2093
2099
  });
2094
2100
  }, 1e3);
2095
2101
  return () => window.clearInterval(timer);
@@ -2099,19 +2105,19 @@ function usePresenterConsole(slideIndex) {
2099
2105
  applyAudienceSnapshot: setSnapshot,
2100
2106
  setBlackout: (blackout) => patch({ blackout }),
2101
2107
  toggleTimer: () => {
2102
- timerRef.current = chunkT7AMP24E_js.togglePresenterTimer(timerRef.current);
2108
+ timerRef.current = chunkHHQRYCLW_js.togglePresenterTimer(timerRef.current);
2103
2109
  patch({
2104
2110
  paused: timerRef.current.paused,
2105
- elapsedMs: chunkT7AMP24E_js.presenterElapsed(timerRef.current)
2111
+ elapsedMs: chunkHHQRYCLW_js.presenterElapsed(timerRef.current)
2106
2112
  });
2107
2113
  },
2108
2114
  resetTimer: () => {
2109
- timerRef.current = chunkT7AMP24E_js.resetPresenterTimer();
2115
+ timerRef.current = chunkHHQRYCLW_js.resetPresenterTimer();
2110
2116
  patch({ paused: false, elapsedMs: 0 });
2111
2117
  },
2112
2118
  stepZoom: (direction) => setSnapshot(
2113
- (current) => chunkT7AMP24E_js.mergePresentationSnapshot(current, {
2114
- zoom: chunkT7AMP24E_js.stepPresenterZoom(
2119
+ (current) => chunkHHQRYCLW_js.mergePresentationSnapshot(current, {
2120
+ zoom: chunkHHQRYCLW_js.stepPresenterZoom(
2115
2121
  current.zoom ?? { scale: 1, originX: 0.5, originY: 0.5 },
2116
2122
  direction
2117
2123
  )
@@ -2232,7 +2238,7 @@ function usePresentationMode(input) {
2232
2238
  });
2233
2239
  const movePresentationSlide = react.useCallback(
2234
2240
  (direction, trigger = "explicit") => {
2235
- if (!chunkT7AMP24E_js.acceptsPresentationInput()) {
2241
+ if (!chunkHHQRYCLW_js.acceptsPresentationInput()) {
2236
2242
  return;
2237
2243
  }
2238
2244
  if (endOfShowVisible) {
@@ -2434,11 +2440,11 @@ function usePresentationMode(input) {
2434
2440
  if (!transitionOverlay || transitionOverlay.transition.type !== "morph") {
2435
2441
  return void 0;
2436
2442
  }
2437
- return chunkT7AMP24E_js.buildMorphTransitionPlan(
2443
+ return chunkHHQRYCLW_js.buildMorphTransitionPlan(
2438
2444
  slides[transitionOverlay.outgoingSlideIndex],
2439
2445
  slides[transitionOverlay.incomingSlideIndex],
2440
2446
  transitionOverlay.durationMs,
2441
- chunkT7AMP24E_js.morphOptionToMode(transitionOverlay.transition.morphOption)
2447
+ chunkHHQRYCLW_js.morphOptionToMode(transitionOverlay.transition.morphOption)
2442
2448
  );
2443
2449
  }, [transitionOverlay, slides]);
2444
2450
  const morphedElementStates = react.useMemo(() => {
@@ -2744,7 +2750,7 @@ function findInSlides(slides, findQuery, findMatchCase) {
2744
2750
  const normalised = findMatchCase ? findQuery : findQuery.toLowerCase();
2745
2751
  slides.forEach((slide, slideIndex) => {
2746
2752
  for (const element of slide.elements || []) {
2747
- if (!chunkT7AMP24E_js.hasTextProperties(element)) {
2753
+ if (!chunkHHQRYCLW_js.hasTextProperties(element)) {
2748
2754
  continue;
2749
2755
  }
2750
2756
  const segments = element.textSegments ?? [];
@@ -2795,7 +2801,7 @@ function applyFindReplacements(slides, toReplace, replaceQuery) {
2795
2801
  continue;
2796
2802
  }
2797
2803
  const element = slide.elements[elIdx];
2798
- if (!chunkT7AMP24E_js.hasTextProperties(element)) {
2804
+ if (!chunkHHQRYCLW_js.hasTextProperties(element)) {
2799
2805
  continue;
2800
2806
  }
2801
2807
  const segments = [...element.textSegments ?? []];
@@ -3393,7 +3399,7 @@ function useViewerCoreState(_input) {
3393
3399
  const shapeAdjustmentDragStateRef = react.useRef(null);
3394
3400
  const marqueeStateRef = react.useRef(null);
3395
3401
  const isDrawingRef = react.useRef(false);
3396
- const livePatcher = react.useMemo(() => chunkT7AMP24E_js.createCollaborationLivePatcher(), []);
3402
+ const livePatcher = react.useMemo(() => chunkHHQRYCLW_js.createCollaborationLivePatcher(), []);
3397
3403
  react.useEffect(() => () => livePatcher.dispose(), [livePatcher]);
3398
3404
  const slidesRef = react.useRef([]);
3399
3405
  const [mode, setMode] = react.useState("edit");
@@ -3402,8 +3408,8 @@ function useViewerCoreState(_input) {
3402
3408
  const [slides, setSlides] = react.useState([]);
3403
3409
  const [templateElementsBySlideId, setTemplateElementsBySlideId] = react.useState({});
3404
3410
  const [canvasSize, setCanvasSize] = react.useState({
3405
- width: chunk4O7PPQ2V_js.DEFAULT_CANVAS_WIDTH,
3406
- height: chunk4O7PPQ2V_js.DEFAULT_CANVAS_HEIGHT
3411
+ width: chunk5ZI2ZG5E_js.DEFAULT_CANVAS_WIDTH,
3412
+ height: chunk5ZI2ZG5E_js.DEFAULT_CANVAS_HEIGHT
3407
3413
  });
3408
3414
  const [activeSlideIndex, setActiveSlideIndex] = react.useState(0);
3409
3415
  const [selectedElementId, setSelectedElementId] = react.useState(null);
@@ -3423,7 +3429,7 @@ function useViewerCoreState(_input) {
3423
3429
  const resolved = typeof value === "function" ? value(inlineEditingTextRef.current) : value;
3424
3430
  inlineEditingTextRef.current = resolved;
3425
3431
  setInlineEditingTextBase(value);
3426
- chunkT7AMP24E_js.publishLiveInlineText(
3432
+ chunkHHQRYCLW_js.publishLiveInlineText(
3427
3433
  livePatcher,
3428
3434
  slidesRef.current[activeSlideIndexRef.current],
3429
3435
  inlineEditingElementIdRef.current,
@@ -3748,7 +3754,7 @@ function useLoadContent({
3748
3754
  );
3749
3755
  }
3750
3756
  const previousHandler = handlerRef.current;
3751
- const handler = new chunkT7AMP24E_js.PptxHandler();
3757
+ const handler = new chunkHHQRYCLW_js.PptxHandler();
3752
3758
  const parsed = await handler.load(buffer);
3753
3759
  if (cancelled || token !== renderTokenRef.current) {
3754
3760
  handler.dispose();
@@ -3760,7 +3766,7 @@ function useLoadContent({
3760
3766
  handlerRef.current = null;
3761
3767
  const mediaElements = [];
3762
3768
  for (const slide of parsed.slides) {
3763
- chunkT7AMP24E_js.collectMediaElements(slide.elements, mediaElements);
3769
+ chunkHHQRYCLW_js.collectMediaElements(slide.elements, mediaElements);
3764
3770
  }
3765
3771
  for (const url of mediaDataUrls.values()) {
3766
3772
  if (url.startsWith("blob:")) {
@@ -3801,7 +3807,7 @@ function useLoadContent({
3801
3807
  }
3802
3808
  })
3803
3809
  );
3804
- const { paths: imagePaths, refs: imageRefs } = chunkT7AMP24E_js.collectImagePaths(parsed.slides);
3810
+ const { paths: imagePaths, refs: imageRefs } = chunkHHQRYCLW_js.collectImagePaths(parsed.slides);
3805
3811
  let nextSlides = parsed.slides;
3806
3812
  if (imagePaths.size > 0) {
3807
3813
  const resolvedMap = /* @__PURE__ */ new Map();
@@ -3856,12 +3862,12 @@ function useLoadContent({
3856
3862
  }
3857
3863
  }
3858
3864
  handlerRef.current = handler;
3859
- const partition = chunk4O7PPQ2V_js.partitionTemplateElements(nextSlides);
3865
+ const partition = chunk5ZI2ZG5E_js.partitionTemplateElements(nextSlides);
3860
3866
  setSlides(partition.slides);
3861
3867
  setTemplateElementsBySlideId(partition.templateElementsBySlideId);
3862
3868
  setCanvasSize({
3863
- width: parsed.width ?? chunk4O7PPQ2V_js.DEFAULT_CANVAS_WIDTH,
3864
- height: parsed.height ?? chunk4O7PPQ2V_js.DEFAULT_CANVAS_HEIGHT
3869
+ width: parsed.width ?? chunk5ZI2ZG5E_js.DEFAULT_CANVAS_WIDTH,
3870
+ height: parsed.height ?? chunk5ZI2ZG5E_js.DEFAULT_CANVAS_HEIGHT
3865
3871
  });
3866
3872
  setHeaderFooter(parsed.headerFooter ?? {});
3867
3873
  setLayoutOptions(parsed.layoutOptions ?? []);
@@ -3890,7 +3896,7 @@ function useLoadContent({
3890
3896
  setHasMacros(parsed.hasMacros === true);
3891
3897
  setHasDigitalSignatures(parsed.hasDigitalSignatures === true);
3892
3898
  setDigitalSignatureCount(parsed.digitalSignatureCount ?? 0);
3893
- setGuides(chunkT7AMP24E_js.buildInitialGuides(parsed.presentationGuides, parsed.slides[0]?.guides));
3899
+ setGuides(chunkHHQRYCLW_js.buildInitialGuides(parsed.presentationGuides, parsed.slides[0]?.guides));
3894
3900
  setActiveSlideIndex(0);
3895
3901
  clearSelection();
3896
3902
  setIsDirty(false);
@@ -3898,7 +3904,7 @@ function useLoadContent({
3898
3904
  onContentApplied?.();
3899
3905
  } catch (err) {
3900
3906
  if (!cancelled && token === renderTokenRef.current) {
3901
- if (err instanceof chunkT7AMP24E_js.EncryptedFileError) {
3907
+ if (err instanceof chunkHHQRYCLW_js.EncryptedFileError) {
3902
3908
  setIsEncrypted(true);
3903
3909
  } else {
3904
3910
  setError(err instanceof Error ? err.message : String(err));
@@ -3975,7 +3981,7 @@ function useAutosave(input) {
3975
3981
  isSavingRef.current = false;
3976
3982
  return;
3977
3983
  }
3978
- await chunkT7AMP24E_js.saveAutosaveSnapshot(filePathRef.current, data);
3984
+ await chunkHHQRYCLW_js.saveAutosaveSnapshot(filePathRef.current, data);
3979
3985
  setAutosaveStatus({ state: "saved", timestamp: Date.now() });
3980
3986
  } catch (err) {
3981
3987
  setAutosaveStatus({
@@ -4040,7 +4046,7 @@ function useElementOperations(input) {
4040
4046
  }, [applySelection, setInlineEditingElementId, setContextMenuState]);
4041
4047
  const updateElementById = react.useCallback(
4042
4048
  (elementId, updates) => {
4043
- if (chunkT7AMP24E_js.isTemplateElementId(elementId)) {
4049
+ if (chunkHHQRYCLW_js.isTemplateElementId(elementId)) {
4044
4050
  const slideId = activeSlide?.id;
4045
4051
  if (slideId) {
4046
4052
  setTemplateElementsBySlideId((prev) => ({
@@ -4080,7 +4086,7 @@ function useElementOperations(input) {
4080
4086
  );
4081
4087
  const updateSelectedShapeStyle = react.useCallback(
4082
4088
  (updates) => {
4083
- if (!selectedElement || !chunkT7AMP24E_js.hasShapeProperties(selectedElement)) {
4089
+ if (!selectedElement || !chunkHHQRYCLW_js.hasShapeProperties(selectedElement)) {
4084
4090
  return;
4085
4091
  }
4086
4092
  updateSelectedElement({
@@ -4091,17 +4097,17 @@ function useElementOperations(input) {
4091
4097
  );
4092
4098
  const updateSelectedTextStyle = react.useCallback(
4093
4099
  (updates) => {
4094
- if (!selectedElement || !chunkT7AMP24E_js.hasTextProperties(selectedElement)) {
4100
+ if (!selectedElement || !chunkHHQRYCLW_js.hasTextProperties(selectedElement)) {
4095
4101
  return;
4096
4102
  }
4097
- const inlineSel = chunkT7AMP24E_js.getInlineEditorSelection(selectedElement.textSegments);
4103
+ const inlineSel = chunkHHQRYCLW_js.getInlineEditorSelection(selectedElement.textSegments);
4098
4104
  if (inlineSel && selectedElement.textSegments) {
4099
- const { newSegments: newSegments2, newSelection } = chunkT7AMP24E_js.applyStyleToSelectedSegments(
4105
+ const { newSegments: newSegments2, newSelection } = chunkHHQRYCLW_js.applyStyleToSelectedSegments(
4100
4106
  selectedElement.textSegments,
4101
4107
  inlineSel,
4102
4108
  updates
4103
4109
  );
4104
- chunkT7AMP24E_js.setPendingSelectionRestore(newSelection);
4110
+ chunkHHQRYCLW_js.setPendingSelectionRestore(newSelection);
4105
4111
  updateSelectedElement({
4106
4112
  textSegments: newSegments2
4107
4113
  });
@@ -4121,12 +4127,12 @@ function useElementOperations(input) {
4121
4127
  );
4122
4128
  const updateSelectedTextCase = react.useCallback(
4123
4129
  (mode) => {
4124
- if (!selectedElement || !chunkT7AMP24E_js.hasTextProperties(selectedElement)) {
4130
+ if (!selectedElement || !chunkHHQRYCLW_js.hasTextProperties(selectedElement)) {
4125
4131
  return;
4126
4132
  }
4127
- const inlineSel = chunkT7AMP24E_js.getInlineEditorSelection(selectedElement.textSegments);
4133
+ const inlineSel = chunkHHQRYCLW_js.getInlineEditorSelection(selectedElement.textSegments);
4128
4134
  if (inlineSel && selectedElement.textSegments) {
4129
- const newSegments = chunkT7AMP24E_js.applyCaseTransformToSegments(
4135
+ const newSegments = chunkHHQRYCLW_js.applyCaseTransformToSegments(
4130
4136
  selectedElement.textSegments,
4131
4137
  inlineSel,
4132
4138
  mode
@@ -4136,14 +4142,14 @@ function useElementOperations(input) {
4136
4142
  }
4137
4143
  const updates = {};
4138
4144
  if (selectedElement.textSegments && selectedElement.textSegments.length > 0) {
4139
- updates.textSegments = chunkT7AMP24E_js.applyCaseTransformToSegments(
4145
+ updates.textSegments = chunkHHQRYCLW_js.applyCaseTransformToSegments(
4140
4146
  selectedElement.textSegments,
4141
4147
  null,
4142
4148
  mode
4143
4149
  );
4144
4150
  }
4145
4151
  if (typeof selectedElement.text === "string") {
4146
- updates.text = chunkT7AMP24E_js.transformTextCase(selectedElement.text, mode);
4152
+ updates.text = chunkHHQRYCLW_js.transformTextCase(selectedElement.text, mode);
4147
4153
  }
4148
4154
  updateSelectedElement(updates);
4149
4155
  },
@@ -4198,7 +4204,7 @@ function useSectionOperations(input) {
4198
4204
  const { sections, setSections, slides, setSlides, markDirty } = input;
4199
4205
  const addSection2 = react.useCallback(
4200
4206
  (name, afterSlideIndex) => {
4201
- const result = chunkT7AMP24E_js.addSection(sections, slides, name, afterSlideIndex);
4207
+ const result = chunkHHQRYCLW_js.addSection(sections, slides, name, afterSlideIndex);
4202
4208
  setSlides(result.slides);
4203
4209
  setSections(result.sections);
4204
4210
  markDirty();
@@ -4207,7 +4213,7 @@ function useSectionOperations(input) {
4207
4213
  );
4208
4214
  const renameSection2 = react.useCallback(
4209
4215
  (sectionId, newName) => {
4210
- const result = chunkT7AMP24E_js.renameSection(sections, slides, sectionId, newName);
4216
+ const result = chunkHHQRYCLW_js.renameSection(sections, slides, sectionId, newName);
4211
4217
  setSections(result.sections);
4212
4218
  setSlides(result.slides);
4213
4219
  markDirty();
@@ -4216,7 +4222,7 @@ function useSectionOperations(input) {
4216
4222
  );
4217
4223
  const deleteSection2 = react.useCallback(
4218
4224
  (sectionId) => {
4219
- const result = chunkT7AMP24E_js.deleteSection(sections, slides, sectionId);
4225
+ const result = chunkHHQRYCLW_js.deleteSection(sections, slides, sectionId);
4220
4226
  setSections(result.sections);
4221
4227
  setSlides(result.slides);
4222
4228
  markDirty();
@@ -4225,21 +4231,21 @@ function useSectionOperations(input) {
4225
4231
  );
4226
4232
  const moveSectionUp2 = react.useCallback(
4227
4233
  (sectionId) => {
4228
- setSections(chunkT7AMP24E_js.moveSectionUp(sections, sectionId));
4234
+ setSections(chunkHHQRYCLW_js.moveSectionUp(sections, sectionId));
4229
4235
  markDirty();
4230
4236
  },
4231
4237
  [sections, setSections, markDirty]
4232
4238
  );
4233
4239
  const moveSectionDown2 = react.useCallback(
4234
4240
  (sectionId) => {
4235
- setSections(chunkT7AMP24E_js.moveSectionDown(sections, sectionId));
4241
+ setSections(chunkHHQRYCLW_js.moveSectionDown(sections, sectionId));
4236
4242
  markDirty();
4237
4243
  },
4238
4244
  [sections, setSections, markDirty]
4239
4245
  );
4240
4246
  const moveSlidesToSection2 = react.useCallback(
4241
4247
  (slideIndexes, targetSectionId) => {
4242
- const result = chunkT7AMP24E_js.moveSlidesToSection(sections, slides, slideIndexes, targetSectionId);
4248
+ const result = chunkHHQRYCLW_js.moveSlidesToSection(sections, slides, slideIndexes, targetSectionId);
4243
4249
  setSlides(result.slides);
4244
4250
  setSections(result.sections);
4245
4251
  markDirty();
@@ -4258,19 +4264,19 @@ function useSectionOperations(input) {
4258
4264
 
4259
4265
  // src/viewer/hooks/pointer-move-handlers.ts
4260
4266
  function computeResizeGeometry(handle, startX, startY, startWidth, startHeight, dx, dy, snapToGrid, gridSpacingPx) {
4261
- const resized = chunkT7AMP24E_js.applyResize(
4267
+ const resized = chunkHHQRYCLW_js.applyResize(
4262
4268
  { x: startX, y: startY, width: startWidth, height: startHeight },
4263
4269
  handle,
4264
4270
  dx,
4265
4271
  dy,
4266
4272
  1,
4267
- { minSize: chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE }
4273
+ { minSize: chunk5ZI2ZG5E_js.MIN_ELEMENT_SIZE }
4268
4274
  );
4269
4275
  const box = { x: resized.x, y: resized.y, width: resized.width, height: resized.height };
4270
4276
  if (!snapToGrid) {
4271
4277
  return box;
4272
4278
  }
4273
- return chunkT7AMP24E_js.snapBoxToGrid(box, handle, gridSpacingPx, chunk4O7PPQ2V_js.MIN_ELEMENT_SIZE);
4279
+ return chunkHHQRYCLW_js.snapBoxToGrid(box, handle, gridSpacingPx, chunk5ZI2ZG5E_js.MIN_ELEMENT_SIZE);
4274
4280
  }
4275
4281
  function computeAdjustmentValue(startAdjustment, dx, startWidth) {
4276
4282
  const range = startWidth || 200;
@@ -4388,7 +4394,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
4388
4394
  width: el.width,
4389
4395
  height: el.height
4390
4396
  }));
4391
- const snapResult = chunkT7AMP24E_js.computeSnapToShape(
4397
+ const snapResult = chunkHHQRYCLW_js.computeSnapToShape(
4392
4398
  targetX,
4393
4399
  targetY,
4394
4400
  primaryEl.width,
@@ -4427,7 +4433,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
4427
4433
  if (live) {
4428
4434
  for (const id of Object.keys(drag.startPositionsById)) {
4429
4435
  const start = drag.startPositionsById[id];
4430
- chunkT7AMP24E_js.publishLiveGeometry(live.patcher, live.slideId, id, {
4436
+ chunkHHQRYCLW_js.publishLiveGeometry(live.patcher, live.slideId, id, {
4431
4437
  x: start.x + appliedDx,
4432
4438
  y: start.y + appliedDy
4433
4439
  });
@@ -4461,15 +4467,15 @@ function processResizeMove(e, rs, editorScale, snapToGrid, gridSpacingPx, live)
4461
4467
  if (rs.domEl) {
4462
4468
  rs.domEl.style.left = `${geo.x}px`;
4463
4469
  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`;
4470
+ rs.domEl.style.width = `${Math.max(geo.width, chunk5ZI2ZG5E_js.MIN_ELEMENT_SIZE)}px`;
4471
+ rs.domEl.style.height = `${Math.max(geo.height, chunk5ZI2ZG5E_js.MIN_ELEMENT_SIZE)}px`;
4466
4472
  }
4467
4473
  if (live) {
4468
- chunkT7AMP24E_js.publishLiveGeometry(live.patcher, live.slideId, rs.elementId, {
4474
+ chunkHHQRYCLW_js.publishLiveGeometry(live.patcher, live.slideId, rs.elementId, {
4469
4475
  x: geo.x,
4470
4476
  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)
4477
+ width: Math.max(geo.width, chunk5ZI2ZG5E_js.MIN_ELEMENT_SIZE),
4478
+ height: Math.max(geo.height, chunk5ZI2ZG5E_js.MIN_ELEMENT_SIZE)
4473
4479
  });
4474
4480
  }
4475
4481
  }
@@ -4549,13 +4555,13 @@ function processPointerUp(input) {
4549
4555
  if (i !== activeSlideIndex) {
4550
4556
  return s;
4551
4557
  }
4552
- const rerouted = chunkT7AMP24E_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
4558
+ const rerouted = chunkHHQRYCLW_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
4553
4559
  if (rerouted.length === 0) {
4554
4560
  return s;
4555
4561
  }
4556
4562
  return {
4557
4563
  ...s,
4558
- elements: chunkT7AMP24E_js.applyReroutedConnectors(s.elements, rerouted)
4564
+ elements: chunkHHQRYCLW_js.applyReroutedConnectors(s.elements, rerouted)
4559
4565
  };
4560
4566
  })
4561
4567
  );
@@ -4577,9 +4583,9 @@ function processPointerUp(input) {
4577
4583
  }
4578
4584
  function commitMarquee(marquee, editTemplateMode, templateElements, activeSlide, applySelection, clearSelection) {
4579
4585
  const sourceElements = editTemplateMode ? templateElements : activeSlide?.elements ?? [];
4580
- const hitIds = chunkT7AMP24E_js.computeMarqueeHitIds(marquee, sourceElements);
4586
+ const hitIds = chunkHHQRYCLW_js.computeMarqueeHitIds(marquee, sourceElements);
4581
4587
  if (marquee.additive) {
4582
- const merged = chunkT7AMP24E_js.mergeAdditiveSelection(marquee.baseSelectionIds, hitIds);
4588
+ const merged = chunkHHQRYCLW_js.mergeAdditiveSelection(marquee.baseSelectionIds, hitIds);
4583
4589
  if (merged.length > 0) {
4584
4590
  applySelection(merged[0], merged);
4585
4591
  } else {
@@ -4602,8 +4608,8 @@ function commitDrag(drag, editTemplateMode, activeSlide, activeSlideIndex, setTe
4602
4608
  }
4603
4609
  return { ...el, x: start.x + dx, y: start.y + dy };
4604
4610
  });
4605
- const rerouted = chunkT7AMP24E_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
4606
- return chunkT7AMP24E_js.applyReroutedConnectors(movedElements, rerouted);
4611
+ const rerouted = chunkHHQRYCLW_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
4612
+ return chunkHHQRYCLW_js.applyReroutedConnectors(movedElements, rerouted);
4607
4613
  };
4608
4614
  if (editTemplateMode) {
4609
4615
  const slideId = activeSlide?.id;
@@ -4756,9 +4762,9 @@ function useCanvasInteractions(input) {
4756
4762
  return;
4757
4763
  }
4758
4764
  const el = elementLookup.get(editId);
4759
- if (el && chunkT7AMP24E_js.hasTextProperties(el)) {
4765
+ if (el && chunkHHQRYCLW_js.hasTextProperties(el)) {
4760
4766
  const committedText = transformCommittedText ? transformCommittedText(inlineEditingText) : inlineEditingText;
4761
- const newSegments = chunkT7AMP24E_js.remapTextToSegments(committedText, el.textSegments, el.textStyle);
4767
+ const newSegments = chunkHHQRYCLW_js.remapTextToSegments(committedText, el.textSegments, el.textStyle);
4762
4768
  ops.updateElementById(editId, {
4763
4769
  text: committedText,
4764
4770
  textSegments: newSegments
@@ -4769,7 +4775,7 @@ function useCanvasInteractions(input) {
4769
4775
  setInlineEditingText("");
4770
4776
  };
4771
4777
  const openEquationEditorForElement = (el) => {
4772
- if (!chunkT7AMP24E_js.hasTextProperties(el)) {
4778
+ if (!chunkHHQRYCLW_js.hasTextProperties(el)) {
4773
4779
  return false;
4774
4780
  }
4775
4781
  const eqSeg = el.textSegments?.find((seg) => seg.equationXml);
@@ -4798,7 +4804,7 @@ function useCanvasInteractions(input) {
4798
4804
  justSelectedRef.current = false;
4799
4805
  } else {
4800
4806
  const el = elementLookup.get(elementId);
4801
- if (el && chunkT7AMP24E_js.hasTextProperties(el) && !el.locks?.noTextEdit) {
4807
+ if (el && chunkHHQRYCLW_js.hasTextProperties(el) && !el.locks?.noTextEdit) {
4802
4808
  if (!openEquationEditorForElement(el)) {
4803
4809
  setInlineEditingElementId(elementId);
4804
4810
  setInlineEditingText(el.text ?? "");
@@ -4817,7 +4823,7 @@ function useCanvasInteractions(input) {
4817
4823
  if (openEquationEditorForElement(el)) {
4818
4824
  return;
4819
4825
  }
4820
- if (chunkT7AMP24E_js.hasTextProperties(el)) {
4826
+ if (chunkHHQRYCLW_js.hasTextProperties(el)) {
4821
4827
  setInlineEditingElementId(elementId);
4822
4828
  setInlineEditingText(el.text ?? "");
4823
4829
  }
@@ -5007,7 +5013,7 @@ function createFileHandlers(deps) {
5007
5013
  h = Math.round(h * scale);
5008
5014
  }
5009
5015
  addElement({
5010
- id: chunkT7AMP24E_js.generateElementId(),
5016
+ id: chunkHHQRYCLW_js.generateElementId(),
5011
5017
  type: "image",
5012
5018
  x: Math.round((canvasSize.width - w) / 2),
5013
5019
  y: Math.round((canvasSize.height - h) / 2),
@@ -5018,7 +5024,7 @@ function createFileHandlers(deps) {
5018
5024
  };
5019
5025
  img.onerror = () => {
5020
5026
  addElement({
5021
- id: chunkT7AMP24E_js.generateElementId(),
5027
+ id: chunkHHQRYCLW_js.generateElementId(),
5022
5028
  type: "image",
5023
5029
  x: 100,
5024
5030
  y: 100,
@@ -5044,7 +5050,7 @@ function createFileHandlers(deps) {
5044
5050
  const elFilePath = file.path;
5045
5051
  const insertMediaElement = (mediaSourceUrl, width, height) => {
5046
5052
  addElement({
5047
- id: chunkT7AMP24E_js.generateElementId(),
5053
+ id: chunkHHQRYCLW_js.generateElementId(),
5048
5054
  type: "media",
5049
5055
  mediaType,
5050
5056
  mediaMimeType: file.type || void 0,
@@ -5219,13 +5225,13 @@ function createStructuredElementHandlers(deps) {
5219
5225
  return;
5220
5226
  }
5221
5227
  addElement({
5222
- id: chunkT7AMP24E_js.generateElementId(),
5228
+ id: chunkHHQRYCLW_js.generateElementId(),
5223
5229
  type: "smartArt",
5224
5230
  x: 100,
5225
5231
  y: 120,
5226
5232
  width: 600,
5227
5233
  height: 340,
5228
- smartArtData: chunkT7AMP24E_js.buildSmartArtPresetData(
5234
+ smartArtData: chunkHHQRYCLW_js.buildSmartArtPresetData(
5229
5235
  layout,
5230
5236
  defaultItems,
5231
5237
  (i) => `node-${Date.now()}-${i}-${Math.random().toString(36).slice(2, 8)}`
@@ -5237,7 +5243,7 @@ function createStructuredElementHandlers(deps) {
5237
5243
  return;
5238
5244
  }
5239
5245
  addElement({
5240
- id: chunkT7AMP24E_js.generateElementId(),
5246
+ id: chunkHHQRYCLW_js.generateElementId(),
5241
5247
  type: "shape",
5242
5248
  x: 120,
5243
5249
  y: 200,
@@ -5296,7 +5302,7 @@ function createStructuredElementHandlers(deps) {
5296
5302
  const displayText = value || fieldTexts[fieldType] || fieldType;
5297
5303
  const fieldGuid = `{${crypto.randomUUID().toUpperCase()}}`;
5298
5304
  addElement({
5299
- id: chunkT7AMP24E_js.generateElementId(),
5305
+ id: chunkHHQRYCLW_js.generateElementId(),
5300
5306
  type: "shape",
5301
5307
  x: 120,
5302
5308
  y: 200,
@@ -5318,11 +5324,11 @@ function createStructuredElementHandlers(deps) {
5318
5324
  if (!activeSlide) {
5319
5325
  return;
5320
5326
  }
5321
- const preset = chunkT7AMP24E_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
5327
+ const preset = chunkHHQRYCLW_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
5322
5328
  if (!preset) {
5323
5329
  return;
5324
5330
  }
5325
- const defaultPptxAction = chunkT7AMP24E_js.elementActionToPptxAction({
5331
+ const defaultPptxAction = chunkHHQRYCLW_js.elementActionToPptxAction({
5326
5332
  trigger: "click",
5327
5333
  type: preset.defaultAction
5328
5334
  });
@@ -5331,7 +5337,7 @@ function createStructuredElementHandlers(deps) {
5331
5337
  defaultPptxAction.highlightClick = true;
5332
5338
  }
5333
5339
  addElement({
5334
- id: chunkT7AMP24E_js.generateElementId(),
5340
+ id: chunkHHQRYCLW_js.generateElementId(),
5335
5341
  type: "shape",
5336
5342
  x: 150,
5337
5343
  y: 150,
@@ -5398,14 +5404,14 @@ function useInsertElements(input) {
5398
5404
  return;
5399
5405
  }
5400
5406
  addElement({
5401
- id: chunkT7AMP24E_js.generateElementId(),
5407
+ id: chunkHHQRYCLW_js.generateElementId(),
5402
5408
  type: "text",
5403
5409
  x: 100,
5404
5410
  y: 100,
5405
5411
  width: 300,
5406
5412
  height: 60,
5407
5413
  text: "",
5408
- textStyle: { fontSize: chunk4O7PPQ2V_js.DEFAULT_TEXT_FONT_SIZE }
5414
+ textStyle: { fontSize: chunk5ZI2ZG5E_js.DEFAULT_TEXT_FONT_SIZE }
5409
5415
  });
5410
5416
  };
5411
5417
  const handleAddShape = () => {
@@ -5413,7 +5419,7 @@ function useInsertElements(input) {
5413
5419
  return;
5414
5420
  }
5415
5421
  addElement({
5416
- id: chunkT7AMP24E_js.generateElementId(),
5422
+ id: chunkHHQRYCLW_js.generateElementId(),
5417
5423
  type: "shape",
5418
5424
  x: 150,
5419
5425
  y: 150,
@@ -5432,15 +5438,15 @@ function useInsertElements(input) {
5432
5438
  return;
5433
5439
  }
5434
5440
  addElement({
5435
- ...chunkT7AMP24E_js.newTableElement(chunk4O7PPQ2V_js.DEFAULT_TABLE_ROWS, chunk4O7PPQ2V_js.DEFAULT_TABLE_COLUMNS, 100, 200),
5436
- id: chunkT7AMP24E_js.generateElementId()
5441
+ ...chunkHHQRYCLW_js.newTableElement(chunk5ZI2ZG5E_js.DEFAULT_TABLE_ROWS, chunk5ZI2ZG5E_js.DEFAULT_TABLE_COLUMNS, 100, 200),
5442
+ id: chunkHHQRYCLW_js.generateElementId()
5437
5443
  });
5438
5444
  };
5439
5445
  const handleAddChart = (chartType) => {
5440
5446
  if (!activeSlide) {
5441
5447
  return;
5442
5448
  }
5443
- addElement(chunkT7AMP24E_js.createDefaultChartElement(chartType));
5449
+ addElement(chunkHHQRYCLW_js.createDefaultChartElement(chartType));
5444
5450
  };
5445
5451
  const structured = createStructuredElementHandlers({
5446
5452
  activeSlide,
@@ -5510,7 +5516,7 @@ function useClipboardHandlers(input) {
5510
5516
  if (!selectedElement) {
5511
5517
  return;
5512
5518
  }
5513
- setClipboardPayload(chunkT7AMP24E_js.buildElementClipboardPayload(selectedElement, editTemplateMode));
5519
+ setClipboardPayload(chunkHHQRYCLW_js.buildElementClipboardPayload(selectedElement, editTemplateMode));
5514
5520
  };
5515
5521
  const handleDelete = () => {
5516
5522
  const idsToDelete = effectiveSelectedIds;
@@ -5527,7 +5533,7 @@ function useClipboardHandlers(input) {
5527
5533
  handleDelete();
5528
5534
  };
5529
5535
  const insertClone = (source) => {
5530
- const clone = chunkT7AMP24E_js.cloneElementForPaste(source, { intoTemplate: editTemplateMode });
5536
+ const clone = chunkHHQRYCLW_js.cloneElementForPaste(source, { intoTemplate: editTemplateMode });
5531
5537
  ops.updateActiveElements((els) => [...els, clone]);
5532
5538
  ops.applySelection(clone.id);
5533
5539
  history.markDirty();
@@ -5562,7 +5568,7 @@ function resolveShapePath(el) {
5562
5568
  return el.pathData;
5563
5569
  }
5564
5570
  if ("shapeType" in el && typeof el.shapeType === "string") {
5565
- const clipPath = chunkT7AMP24E_js.getPresetShapeClipPath(el.shapeType);
5571
+ const clipPath = chunkHHQRYCLW_js.getPresetShapeClipPath(el.shapeType);
5566
5572
  if (clipPath) {
5567
5573
  const svgPath = clipPathToSvgPath(clipPath, el.width, el.height);
5568
5574
  if (svgPath) {
@@ -5613,7 +5619,7 @@ function clipPathToSvgPath(clipPath, width, height) {
5613
5619
  return parts.join(" ");
5614
5620
  }
5615
5621
  function transformPathToGlobal(pathData, el) {
5616
- const polys = chunkT7AMP24E_js.svgPathToPolygons(pathData);
5622
+ const polys = chunkHHQRYCLW_js.svgPathToPolygons(pathData);
5617
5623
  if (polys.length === 0) {
5618
5624
  return pathData;
5619
5625
  }
@@ -5633,10 +5639,10 @@ function transformPathToGlobal(pathData, el) {
5633
5639
  y: pt.y * scaleY + el.y
5634
5640
  }))
5635
5641
  );
5636
- return chunkT7AMP24E_js.polygonsToSvgPath(transformed);
5642
+ return chunkHHQRYCLW_js.polygonsToSvgPath(transformed);
5637
5643
  }
5638
5644
  function transformPathToLocal(pathData, x, y, _width, _height) {
5639
- const polys = chunkT7AMP24E_js.svgPathToPolygons(pathData);
5645
+ const polys = chunkHHQRYCLW_js.svgPathToPolygons(pathData);
5640
5646
  if (polys.length === 0) {
5641
5647
  return pathData;
5642
5648
  }
@@ -5646,10 +5652,10 @@ function transformPathToLocal(pathData, x, y, _width, _height) {
5646
5652
  y: pt.y - y
5647
5653
  }))
5648
5654
  );
5649
- return chunkT7AMP24E_js.polygonsToSvgPath(transformed);
5655
+ return chunkHHQRYCLW_js.polygonsToSvgPath(transformed);
5650
5656
  }
5651
5657
  function pathBounds(pathData) {
5652
- const polys = chunkT7AMP24E_js.svgPathToPolygons(pathData);
5658
+ const polys = chunkHHQRYCLW_js.svgPathToPolygons(pathData);
5653
5659
  let minX = Infinity;
5654
5660
  let minY = Infinity;
5655
5661
  let maxX = -Infinity;
@@ -5708,7 +5714,7 @@ function useMergeShapesHandler(input) {
5708
5714
  let allFragments = [];
5709
5715
  let remaining = globalPaths[0];
5710
5716
  for (let i = 1; i < globalPaths.length; i++) {
5711
- const frags = chunkT7AMP24E_js.mergeShapes("fragment", remaining, globalPaths[i]);
5717
+ const frags = chunkHHQRYCLW_js.mergeShapes("fragment", remaining, globalPaths[i]);
5712
5718
  if (Array.isArray(frags)) {
5713
5719
  allFragments = frags;
5714
5720
  }
@@ -5737,7 +5743,7 @@ function useMergeShapesHandler(input) {
5737
5743
  bounds.height
5738
5744
  );
5739
5745
  const newEl = {
5740
- id: chunkT7AMP24E_js.generateElementId(),
5746
+ id: chunkHHQRYCLW_js.generateElementId(),
5741
5747
  type: "shape",
5742
5748
  x: bounds.x,
5743
5749
  y: bounds.y,
@@ -5775,7 +5781,7 @@ function useMergeShapesHandler(input) {
5775
5781
  } else {
5776
5782
  let resultPath = globalPaths[0];
5777
5783
  for (let i = 1; i < globalPaths.length; i++) {
5778
- const result = chunkT7AMP24E_js.mergeShapes(operation, resultPath, globalPaths[i]);
5784
+ const result = chunkHHQRYCLW_js.mergeShapes(operation, resultPath, globalPaths[i]);
5779
5785
  if (typeof result === "string") {
5780
5786
  resultPath = result;
5781
5787
  }
@@ -5796,7 +5802,7 @@ function useMergeShapesHandler(input) {
5796
5802
  );
5797
5803
  const primary = targets[0];
5798
5804
  const newEl = {
5799
- id: chunkT7AMP24E_js.generateElementId(),
5805
+ id: chunkHHQRYCLW_js.generateElementId(),
5800
5806
  type: "shape",
5801
5807
  x: bounds.x,
5802
5808
  y: bounds.y,
@@ -5859,7 +5865,7 @@ function useGroupAlignLayerHandlers(input) {
5859
5865
  if (ids.length < 2 || !activeSlide) {
5860
5866
  return;
5861
5867
  }
5862
- const { elements, groupId } = chunkT7AMP24E_js.groupElements(ops.activeElements, ids, chunkT7AMP24E_js.generateElementId());
5868
+ const { elements, groupId } = chunkHHQRYCLW_js.groupElements(ops.activeElements, ids, chunkHHQRYCLW_js.generateElementId());
5863
5869
  if (groupId === null) {
5864
5870
  return;
5865
5871
  }
@@ -5872,12 +5878,12 @@ function useGroupAlignLayerHandlers(input) {
5872
5878
  return;
5873
5879
  }
5874
5880
  const group = selectedElement;
5875
- const intoTemplate = chunkT7AMP24E_js.isTemplateElementId(group.id);
5881
+ const intoTemplate = chunkHHQRYCLW_js.isTemplateElementId(group.id);
5876
5882
  const ungrouped = group.children.map((child) => ({
5877
5883
  ...structuredClone(child),
5878
5884
  // Keep child ids in the same store as the group so later edits route
5879
5885
  // correctly: template groups yield template-prefixed child ids.
5880
- id: intoTemplate ? chunkT7AMP24E_js.makeCloneId(true, child.id || group.id) : child.id || chunkT7AMP24E_js.generateElementId(),
5886
+ id: intoTemplate ? chunkHHQRYCLW_js.makeCloneId(true, child.id || group.id) : child.id || chunkHHQRYCLW_js.generateElementId(),
5881
5887
  x: child.x + group.x,
5882
5888
  y: child.y + group.y
5883
5889
  }));
@@ -5901,7 +5907,7 @@ function useGroupAlignLayerHandlers(input) {
5901
5907
  if (!edge) {
5902
5908
  return;
5903
5909
  }
5904
- const positions = chunkT7AMP24E_js.alignElements(selectedElements, edge);
5910
+ const positions = chunkHHQRYCLW_js.alignElements(selectedElements, edge);
5905
5911
  for (const [id, pos] of positions) {
5906
5912
  const el = elementLookup.get(id);
5907
5913
  if (!el) {
@@ -5919,7 +5925,7 @@ function useGroupAlignLayerHandlers(input) {
5919
5925
  if (!distAxis) {
5920
5926
  return;
5921
5927
  }
5922
- const positions = chunkT7AMP24E_js.distributeElements(selectedElements, distAxis);
5928
+ const positions = chunkHHQRYCLW_js.distributeElements(selectedElements, distAxis);
5923
5929
  for (const [id, pos] of positions) {
5924
5930
  const el = elementLookup.get(id);
5925
5931
  if (!el) {
@@ -5936,7 +5942,7 @@ function useGroupAlignLayerHandlers(input) {
5936
5942
  }
5937
5943
  const id = selectedElement.id;
5938
5944
  ops.updateActiveElements(
5939
- (els) => direction === "forward" ? chunkT7AMP24E_js.bringForward(els, id) : direction === "backward" ? chunkT7AMP24E_js.sendBackward(els, id) : els
5945
+ (els) => direction === "forward" ? chunkHHQRYCLW_js.bringForward(els, id) : direction === "backward" ? chunkHHQRYCLW_js.sendBackward(els, id) : els
5940
5946
  );
5941
5947
  history.markDirty();
5942
5948
  };
@@ -5946,7 +5952,7 @@ function useGroupAlignLayerHandlers(input) {
5946
5952
  }
5947
5953
  const id = selectedElement.id;
5948
5954
  ops.updateActiveElements(
5949
- (els) => direction === "front" ? chunkT7AMP24E_js.bringToFront(els, id) : chunkT7AMP24E_js.sendToBack(els, id)
5955
+ (els) => direction === "front" ? chunkHHQRYCLW_js.bringToFront(els, id) : chunkHHQRYCLW_js.sendToBack(els, id)
5950
5956
  );
5951
5957
  history.markDirty();
5952
5958
  };
@@ -6068,7 +6074,7 @@ function insertSlideFromLayoutUpdater(slides, activeIndex, draft) {
6068
6074
  function useSlideManagement(input) {
6069
6075
  const { slides, activeSlideIndex, setActiveSlideIndex, ops, history, handlerRef } = input;
6070
6076
  const handleAddSlide = () => {
6071
- const newSlide = chunkT7AMP24E_js.createBlankSlide(slides.length + 1);
6077
+ const newSlide = chunkHHQRYCLW_js.createBlankSlide(slides.length + 1);
6072
6078
  ops.updateSlides((prev) => {
6073
6079
  const next = [...prev];
6074
6080
  next.splice(activeSlideIndex + 1, 0, newSlide);
@@ -6131,7 +6137,7 @@ function useSlideManagement(input) {
6131
6137
  }
6132
6138
  const clone = {
6133
6139
  ...src,
6134
- id: chunkT7AMP24E_js.makeSlideId(),
6140
+ id: chunkHHQRYCLW_js.makeSlideId(),
6135
6141
  elements: src.elements.map((el) => ({
6136
6142
  ...el,
6137
6143
  id: `${el.id}-dup-${Math.random().toString(36).slice(2, 6)}`
@@ -6163,7 +6169,7 @@ function useSlideManagement(input) {
6163
6169
  const handleInsertSlideFromLayout = (layoutPath, layoutName) => {
6164
6170
  const insertAt = activeSlideIndex + 1;
6165
6171
  const draft = {
6166
- ...chunkT7AMP24E_js.createBlankSlide(slides.length + 1),
6172
+ ...chunkHHQRYCLW_js.createBlankSlide(slides.length + 1),
6167
6173
  layoutPath,
6168
6174
  ...layoutName ? { layoutName } : {}
6169
6175
  };
@@ -6224,7 +6230,7 @@ function createTableMergeHandlers(input) {
6224
6230
  if (!nextCell || nextCell.hMerge || nextCell.vMerge) {
6225
6231
  return;
6226
6232
  }
6227
- const newTableData = chunkT7AMP24E_js.mergeCells(
6233
+ const newTableData = chunkHHQRYCLW_js.mergeCells(
6228
6234
  [
6229
6235
  { row: rowIndex, col: columnIndex },
6230
6236
  { row: rowIndex, col: nextColIdx }
@@ -6232,7 +6238,7 @@ function createTableMergeHandlers(input) {
6232
6238
  td
6233
6239
  );
6234
6240
  const updates = { tableData: newTableData };
6235
- const newRawXml = chunkT7AMP24E_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6241
+ const newRawXml = chunkHHQRYCLW_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6236
6242
  if (newRawXml) {
6237
6243
  updates.rawXml = newRawXml;
6238
6244
  }
@@ -6258,7 +6264,7 @@ function createTableMergeHandlers(input) {
6258
6264
  if (!targetNextCell || targetNextCell.hMerge || targetNextCell.vMerge) {
6259
6265
  return;
6260
6266
  }
6261
- const newTableData = chunkT7AMP24E_js.mergeCells(
6267
+ const newTableData = chunkHHQRYCLW_js.mergeCells(
6262
6268
  [
6263
6269
  { row: rowIndex, col: columnIndex },
6264
6270
  { row: targetNextRowIdx, col: columnIndex }
@@ -6266,7 +6272,7 @@ function createTableMergeHandlers(input) {
6266
6272
  td
6267
6273
  );
6268
6274
  const updates = { tableData: newTableData };
6269
- const newRawXml = chunkT7AMP24E_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6275
+ const newRawXml = chunkHHQRYCLW_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6270
6276
  if (newRawXml) {
6271
6277
  updates.rawXml = newRawXml;
6272
6278
  }
@@ -6281,9 +6287,9 @@ function createTableMergeHandlers(input) {
6281
6287
  return;
6282
6288
  }
6283
6289
  const td = selectedElement.tableData;
6284
- const newTableData = chunkT7AMP24E_js.mergeCells(ts.selectedCells, td);
6290
+ const newTableData = chunkHHQRYCLW_js.mergeCells(ts.selectedCells, td);
6285
6291
  const updates = { tableData: newTableData };
6286
- const newRawXml = chunkT7AMP24E_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6292
+ const newRawXml = chunkHHQRYCLW_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6287
6293
  if (newRawXml) {
6288
6294
  updates.rawXml = newRawXml;
6289
6295
  }
@@ -6300,9 +6306,9 @@ function createTableMergeHandlers(input) {
6300
6306
  }
6301
6307
  const { rowIndex, columnIndex } = ts;
6302
6308
  const td = selectedElement.tableData;
6303
- const newTableData = chunkT7AMP24E_js.splitCell(rowIndex, columnIndex, td);
6309
+ const newTableData = chunkHHQRYCLW_js.splitCell(rowIndex, columnIndex, td);
6304
6310
  const updates = { tableData: newTableData };
6305
- const newRawXml = chunkT7AMP24E_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6311
+ const newRawXml = chunkHHQRYCLW_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6306
6312
  if (newRawXml) {
6307
6313
  updates.rawXml = newRawXml;
6308
6314
  }
@@ -6346,7 +6352,7 @@ function createTableStructHandlers(input) {
6346
6352
  updates.tableData = { ...el.tableData, rows: newRows };
6347
6353
  }
6348
6354
  if (el.rawXml) {
6349
- const newRawXml = chunkT7AMP24E_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
6355
+ const newRawXml = chunkHHQRYCLW_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
6350
6356
  if (newRawXml) {
6351
6357
  updates.rawXml = newRawXml;
6352
6358
  }
@@ -6370,7 +6376,7 @@ function createTableStructHandlers(input) {
6370
6376
  const { rowIndex, columnIndex: colIndex } = ts;
6371
6377
  const updates = {};
6372
6378
  if (selectedElement.rawXml) {
6373
- const newRawXml = chunkT7AMP24E_js.updateCellTextStyleInRawXml(
6379
+ const newRawXml = chunkHHQRYCLW_js.updateCellTextStyleInRawXml(
6374
6380
  selectedElement,
6375
6381
  rowIndex,
6376
6382
  colIndex,
@@ -6434,9 +6440,9 @@ function createTableStructHandlers(input) {
6434
6440
  return;
6435
6441
  }
6436
6442
  const rowIdx = ts?.rowIndex ?? 0;
6437
- const newTableData = chunkT7AMP24E_js.insertTableRow(selectedElement.tableData, rowIdx, position);
6443
+ const newTableData = chunkHHQRYCLW_js.insertTableRow(selectedElement.tableData, rowIdx, position);
6438
6444
  const updates = { tableData: newTableData };
6439
- const newRawXml = chunkT7AMP24E_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6445
+ const newRawXml = chunkHHQRYCLW_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6440
6446
  if (newRawXml) {
6441
6447
  updates.rawXml = newRawXml;
6442
6448
  }
@@ -6449,12 +6455,12 @@ function createTableStructHandlers(input) {
6449
6455
  }
6450
6456
  const td = selectedElement.tableData;
6451
6457
  const rowIdx = ts?.rowIndex ?? 0;
6452
- const newTableData = chunkT7AMP24E_js.deleteTableRow(td, rowIdx);
6458
+ const newTableData = chunkHHQRYCLW_js.deleteTableRow(td, rowIdx);
6453
6459
  if (newTableData === td) {
6454
6460
  return;
6455
6461
  }
6456
6462
  const updates = { tableData: newTableData };
6457
- const newRawXml = chunkT7AMP24E_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6463
+ const newRawXml = chunkHHQRYCLW_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6458
6464
  if (newRawXml) {
6459
6465
  updates.rawXml = newRawXml;
6460
6466
  }
@@ -6466,9 +6472,9 @@ function createTableStructHandlers(input) {
6466
6472
  return;
6467
6473
  }
6468
6474
  const colIdx = ts?.columnIndex ?? 0;
6469
- const newTableData = chunkT7AMP24E_js.insertTableColumn(selectedElement.tableData, colIdx, position);
6475
+ const newTableData = chunkHHQRYCLW_js.insertTableColumn(selectedElement.tableData, colIdx, position);
6470
6476
  const updates = { tableData: newTableData };
6471
- const newRawXml = chunkT7AMP24E_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6477
+ const newRawXml = chunkHHQRYCLW_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6472
6478
  if (newRawXml) {
6473
6479
  updates.rawXml = newRawXml;
6474
6480
  }
@@ -6481,12 +6487,12 @@ function createTableStructHandlers(input) {
6481
6487
  }
6482
6488
  const td = selectedElement.tableData;
6483
6489
  const colIdx = ts?.columnIndex ?? 0;
6484
- const newTableData = chunkT7AMP24E_js.deleteTableColumn(td, colIdx);
6490
+ const newTableData = chunkHHQRYCLW_js.deleteTableColumn(td, colIdx);
6485
6491
  if (newTableData === td) {
6486
6492
  return;
6487
6493
  }
6488
6494
  const updates = { tableData: newTableData };
6489
- const newRawXml = chunkT7AMP24E_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6495
+ const newRawXml = chunkHHQRYCLW_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6490
6496
  if (newRawXml) {
6491
6497
  updates.rawXml = newRawXml;
6492
6498
  }
@@ -6522,8 +6528,8 @@ async function renderToCanvas(element, options = {}) {
6522
6528
  return html2canvasPro(element, {
6523
6529
  ...options,
6524
6530
  onclone: async (doc, clonedEl) => {
6525
- await chunkT7AMP24E_js.normalizeColorsForCapture(doc, clonedEl);
6526
- chunkT7AMP24E_js.preprocessCssForCapture(clonedEl);
6531
+ await chunkHHQRYCLW_js.normalizeColorsForCapture(doc, clonedEl);
6532
+ chunkHHQRYCLW_js.preprocessCssForCapture(clonedEl);
6527
6533
  if (typeof userOnClone === "function") {
6528
6534
  userOnClone(doc, clonedEl);
6529
6535
  }
@@ -6579,7 +6585,7 @@ async function exportSlideToPngBlob(slideElement, options = {}) {
6579
6585
  }
6580
6586
  async function exportSlideAsPng(slideElement, slideIndex, options = {}) {
6581
6587
  const blob = await exportSlideToPngBlob(slideElement, options);
6582
- chunkT7AMP24E_js.downloadBlob(blob, `slide-${slideIndex + 1}.png`);
6588
+ chunkHHQRYCLW_js.downloadBlob(blob, `slide-${slideIndex + 1}.png`);
6583
6589
  }
6584
6590
  async function copySlideToClipboard(slideElement, options = {}) {
6585
6591
  const blob = await exportSlideToPngBlob(slideElement, options);
@@ -6601,15 +6607,15 @@ async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide,
6601
6607
  continue;
6602
6608
  }
6603
6609
  const canvas = await renderElementToCanvas(stageEl, scale);
6604
- images.push(chunkT7AMP24E_js.canvasToJpegData(canvas));
6610
+ images.push(chunkHHQRYCLW_js.canvasToJpegData(canvas));
6605
6611
  }
6606
6612
  onProgress?.(totalSlides, totalSlides);
6607
6613
  setActiveSlide(currentSlideIndex);
6608
6614
  if (images.length === 0) {
6609
6615
  throw new Error(chunk25VSL2BB_js.translationsEn["pptx.export.errorNoSlidesPdf"]);
6610
6616
  }
6611
- const pdfBlobUrl = chunk4O7PPQ2V_js.buildPdfFromImageData(images);
6612
- chunkT7AMP24E_js.downloadDataUrl(pdfBlobUrl, filename);
6617
+ const pdfBlobUrl = chunk5ZI2ZG5E_js.buildPdfFromImageData(images);
6618
+ chunkHHQRYCLW_js.downloadDataUrl(pdfBlobUrl, filename);
6613
6619
  }
6614
6620
  async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, options = {}) {
6615
6621
  const { scale = 2, onProgress } = options;
@@ -6657,8 +6663,8 @@ async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSl
6657
6663
  if (pages.length === 0) {
6658
6664
  throw new Error(chunk25VSL2BB_js.translationsEn["pptx.export.errorNoSlidesNotesPdf"]);
6659
6665
  }
6660
- const pdfDataUrl = chunk4O7PPQ2V_js.buildNotesPdf(pages);
6661
- chunkT7AMP24E_js.downloadDataUrl(pdfDataUrl, filename);
6666
+ const pdfDataUrl = chunk5ZI2ZG5E_js.buildNotesPdf(pages);
6667
+ chunkHHQRYCLW_js.downloadDataUrl(pdfDataUrl, filename);
6662
6668
  }
6663
6669
 
6664
6670
  // src/viewer/utils/export-video.ts
@@ -6702,7 +6708,7 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
6702
6708
  const fps = 30;
6703
6709
  const stream = recordingCanvas.captureStream(fps);
6704
6710
  const recorder = new MediaRecorder(stream, {
6705
- mimeType: chunkT7AMP24E_js.pickSupportedMimeType([...chunkT7AMP24E_js.WEBM_MIME_CANDIDATES]),
6711
+ mimeType: chunkHHQRYCLW_js.pickSupportedMimeType([...chunkHHQRYCLW_js.WEBM_MIME_CANDIDATES]),
6706
6712
  videoBitsPerSecond: 5e6
6707
6713
  });
6708
6714
  const chunks = [];
@@ -6725,8 +6731,8 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
6725
6731
  const duration = slideTimingsMs?.[i] ?? slideDurationMs;
6726
6732
  ctx.clearRect(0, 0, recordingCanvas.width, recordingCanvas.height);
6727
6733
  ctx.drawImage(slideCanvases[i], 0, 0);
6728
- const frameInterval = chunkT7AMP24E_js.fpsToFrameIntervalMs(fps);
6729
- const framesNeeded = chunkT7AMP24E_js.segmentFrameCount(duration, fps);
6734
+ const frameInterval = chunkHHQRYCLW_js.fpsToFrameIntervalMs(fps);
6735
+ const framesNeeded = chunkHHQRYCLW_js.segmentFrameCount(duration, fps);
6730
6736
  for (let f = 0; f < framesNeeded; f++) {
6731
6737
  if (signal?.aborted) {
6732
6738
  recorder.stop();
@@ -6775,7 +6781,7 @@ async function exportAllSlidesAsGif(slideStageRef, totalSlides, setActiveSlide,
6775
6781
  if (frames.length === 0) {
6776
6782
  throw new Error(chunk25VSL2BB_js.translationsEn["pptx.export.errorNoSlidesGif"]);
6777
6783
  }
6778
- const gifBytes = chunkT7AMP24E_js.encodeGif(frames, Math.round(slideDurationMs / 10));
6784
+ const gifBytes = chunkHHQRYCLW_js.encodeGif(frames, Math.round(slideDurationMs / 10));
6779
6785
  onProgress?.(totalSlides, totalSlides);
6780
6786
  const buf = new ArrayBuffer(gifBytes.length);
6781
6787
  new Uint8Array(buf).set(gifBytes);
@@ -6829,7 +6835,7 @@ function exportAllSlidesToSvg(data, options = {}) {
6829
6835
  continue;
6830
6836
  }
6831
6837
  onProgress?.(processedCount, data.slides.length);
6832
- let svg = chunkT7AMP24E_js.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
6838
+ let svg = chunkHHQRYCLW_js.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
6833
6839
  if (embedFonts && fontFaces?.length) {
6834
6840
  svg = injectFontFaces(svg, fontFaces);
6835
6841
  }
@@ -6889,7 +6895,7 @@ function useExportSaveAs(input) {
6889
6895
  }
6890
6896
  setExportProgress(70);
6891
6897
  setExportStatusMessage("Writing README...");
6892
- const readme = chunkT7AMP24E_js.generatePackageReadme(pptxFilename);
6898
+ const readme = chunkHHQRYCLW_js.generatePackageReadme(pptxFilename);
6893
6899
  pkgFolder.file("README.txt", readme);
6894
6900
  if (abortCtrl.signal.aborted) {
6895
6901
  throw new DOMException("Export cancelled", "AbortError");
@@ -6900,7 +6906,7 @@ function useExportSaveAs(input) {
6900
6906
  setExportProgress(95);
6901
6907
  setExportStatusMessage("Downloading...");
6902
6908
  const baseName = pptxFilename.replace(/\.[^.]+$/u, "");
6903
- chunkT7AMP24E_js.downloadBlob(zipBlob, `${baseName}-package.zip`);
6909
+ chunkHHQRYCLW_js.downloadBlob(zipBlob, `${baseName}-package.zip`);
6904
6910
  setExportProgress(100);
6905
6911
  } catch (err) {
6906
6912
  if (err.name !== "AbortError") {
@@ -6923,7 +6929,7 @@ function useExportSaveAs(input) {
6923
6929
  const blob = new Blob([data], {
6924
6930
  type: "application/vnd.openxmlformats-officedocument.presentationml.presentation"
6925
6931
  });
6926
- chunkT7AMP24E_js.downloadBlob(blob, `${baseName}.${ext}`);
6932
+ chunkHHQRYCLW_js.downloadBlob(blob, `${baseName}.${ext}`);
6927
6933
  } catch (err) {
6928
6934
  console.error(`[PowerPointViewer] Save as .${ext} failed:`, err);
6929
6935
  }
@@ -6936,14 +6942,14 @@ function useExportSaveAs(input) {
6936
6942
  const pptxGuides = guides.map((g) => ({
6937
6943
  id: g.id,
6938
6944
  orientation: g.axis === "h" ? "horz" : "vert",
6939
- positionEmu: chunkT7AMP24E_js.guidePxToEmu(g.position)
6945
+ positionEmu: chunkHHQRYCLW_js.guidePxToEmu(g.position)
6940
6946
  }));
6941
6947
  return {
6942
6948
  ...slide,
6943
6949
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
6944
6950
  };
6945
6951
  });
6946
- const slidesToSave = chunk4O7PPQ2V_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
6952
+ const slidesToSave = chunk5ZI2ZG5E_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
6947
6953
  const saveOptions = {
6948
6954
  headerFooter,
6949
6955
  presentationProperties,
@@ -7000,7 +7006,7 @@ function safeConfirm(message) {
7000
7006
  }
7001
7007
  }
7002
7008
  function downloadBlob2(blob, filename) {
7003
- chunkT7AMP24E_js.downloadBlob(blob, chunkT7AMP24E_js.sanitizeDownloadFilename(filename));
7009
+ chunkHHQRYCLW_js.downloadBlob(blob, chunkHHQRYCLW_js.sanitizeDownloadFilename(filename));
7004
7010
  }
7005
7011
 
7006
7012
  // src/viewer/hooks/useExportHandlers.ts
@@ -7101,21 +7107,21 @@ function useExportHandlers(input) {
7101
7107
  {
7102
7108
  scale: 2,
7103
7109
  onProgress: (current, total) => {
7104
- setExportProgress(chunkT7AMP24E_js.slideProgressPercent(current, total));
7105
- setExportStatusMessage(chunkT7AMP24E_js.slideStatusLabel("Rendering", current, total));
7110
+ setExportProgress(chunkHHQRYCLW_js.slideProgressPercent(current, total));
7111
+ setExportStatusMessage(chunkHHQRYCLW_js.slideStatusLabel("Rendering", current, total));
7106
7112
  },
7107
7113
  signal: abortCtrl.signal
7108
7114
  }
7109
7115
  );
7110
- setExportProgress(chunkT7AMP24E_js.EXPORT_ASSEMBLING_PERCENT);
7116
+ setExportProgress(chunkHHQRYCLW_js.EXPORT_ASSEMBLING_PERCENT);
7111
7117
  setExportStatusMessage("Building PDF...");
7112
7118
  await new Promise((r) => {
7113
7119
  setTimeout(r, 100);
7114
7120
  });
7115
- setExportProgress(chunkT7AMP24E_js.EXPORT_DONE_PERCENT);
7121
+ setExportProgress(chunkHHQRYCLW_js.EXPORT_DONE_PERCENT);
7116
7122
  setExportStatusMessage("Done!");
7117
7123
  } catch (err) {
7118
- if (!chunkT7AMP24E_js.isExportAbortError(err)) {
7124
+ if (!chunkHHQRYCLW_js.isExportAbortError(err)) {
7119
7125
  console.error("[PowerPointViewer] PDF export failed:", err);
7120
7126
  }
7121
7127
  } finally {
@@ -7145,21 +7151,21 @@ function useExportHandlers(input) {
7145
7151
  {
7146
7152
  scale: 2,
7147
7153
  onProgress: (current, total) => {
7148
- setExportProgress(chunkT7AMP24E_js.slideProgressPercent(current, total));
7149
- setExportStatusMessage(chunkT7AMP24E_js.slideStatusLabel("Rendering", current, total));
7154
+ setExportProgress(chunkHHQRYCLW_js.slideProgressPercent(current, total));
7155
+ setExportStatusMessage(chunkHHQRYCLW_js.slideStatusLabel("Rendering", current, total));
7150
7156
  },
7151
7157
  signal: abortCtrl.signal
7152
7158
  }
7153
7159
  );
7154
- setExportProgress(chunkT7AMP24E_js.EXPORT_ASSEMBLING_PERCENT);
7160
+ setExportProgress(chunkHHQRYCLW_js.EXPORT_ASSEMBLING_PERCENT);
7155
7161
  setExportStatusMessage("Building PDF...");
7156
7162
  await new Promise((r) => {
7157
7163
  setTimeout(r, 100);
7158
7164
  });
7159
- setExportProgress(chunkT7AMP24E_js.EXPORT_DONE_PERCENT);
7165
+ setExportProgress(chunkHHQRYCLW_js.EXPORT_DONE_PERCENT);
7160
7166
  setExportStatusMessage("Done!");
7161
7167
  } catch (err) {
7162
- if (!chunkT7AMP24E_js.isExportAbortError(err)) {
7168
+ if (!chunkHHQRYCLW_js.isExportAbortError(err)) {
7163
7169
  console.error("[PowerPointViewer] Notes PDF export failed:", err);
7164
7170
  }
7165
7171
  } finally {
@@ -7200,22 +7206,22 @@ function useExportHandlers(input) {
7200
7206
  scale: 1,
7201
7207
  slideDurationMs: 3e3,
7202
7208
  onProgress: (current, total) => {
7203
- setExportProgress(chunkT7AMP24E_js.slideProgressPercent(current, total, 45));
7204
- setExportStatusMessage(chunkT7AMP24E_js.slideStatusLabel("Capturing", current, total));
7209
+ setExportProgress(chunkHHQRYCLW_js.slideProgressPercent(current, total, 45));
7210
+ setExportStatusMessage(chunkHHQRYCLW_js.slideStatusLabel("Capturing", current, total));
7205
7211
  },
7206
7212
  onRecordProgress: (current, total) => {
7207
- setExportProgress(chunkT7AMP24E_js.recordProgressPercent(current, total));
7208
- setExportStatusMessage(chunkT7AMP24E_js.slideStatusLabel("Recording", current, total));
7213
+ setExportProgress(chunkHHQRYCLW_js.recordProgressPercent(current, total));
7214
+ setExportStatusMessage(chunkHHQRYCLW_js.slideStatusLabel("Recording", current, total));
7209
7215
  },
7210
7216
  signal: abortCtrl.signal
7211
7217
  }
7212
7218
  );
7213
- setExportProgress(chunkT7AMP24E_js.EXPORT_ASSEMBLING_PERCENT);
7219
+ setExportProgress(chunkHHQRYCLW_js.EXPORT_ASSEMBLING_PERCENT);
7214
7220
  setExportStatusMessage("Saving file...");
7215
7221
  downloadBlob2(blob, "presentation.webm");
7216
- setExportProgress(chunkT7AMP24E_js.EXPORT_DONE_PERCENT);
7222
+ setExportProgress(chunkHHQRYCLW_js.EXPORT_DONE_PERCENT);
7217
7223
  } catch (err) {
7218
- if (!chunkT7AMP24E_js.isExportAbortError(err)) {
7224
+ if (!chunkHHQRYCLW_js.isExportAbortError(err)) {
7219
7225
  console.error("[PowerPointViewer] Video export failed:", err);
7220
7226
  }
7221
7227
  } finally {
@@ -7243,18 +7249,18 @@ function useExportHandlers(input) {
7243
7249
  scale: 0.5,
7244
7250
  slideDurationMs: 2e3,
7245
7251
  onProgress: (current, total) => {
7246
- setExportProgress(chunkT7AMP24E_js.slideProgressPercent(current, total));
7247
- setExportStatusMessage(chunkT7AMP24E_js.slideStatusLabel("Encoding", current, total));
7252
+ setExportProgress(chunkHHQRYCLW_js.slideProgressPercent(current, total));
7253
+ setExportStatusMessage(chunkHHQRYCLW_js.slideStatusLabel("Encoding", current, total));
7248
7254
  },
7249
7255
  signal: abortCtrl.signal
7250
7256
  }
7251
7257
  );
7252
- setExportProgress(chunkT7AMP24E_js.EXPORT_ASSEMBLING_PERCENT);
7258
+ setExportProgress(chunkHHQRYCLW_js.EXPORT_ASSEMBLING_PERCENT);
7253
7259
  setExportStatusMessage("Saving file...");
7254
7260
  downloadBlob2(blob, "presentation.gif");
7255
- setExportProgress(chunkT7AMP24E_js.EXPORT_DONE_PERCENT);
7261
+ setExportProgress(chunkHHQRYCLW_js.EXPORT_DONE_PERCENT);
7256
7262
  } catch (err) {
7257
- if (!chunkT7AMP24E_js.isExportAbortError(err)) {
7263
+ if (!chunkHHQRYCLW_js.isExportAbortError(err)) {
7258
7264
  console.error("[PowerPointViewer] GIF export failed:", err);
7259
7265
  }
7260
7266
  } finally {
@@ -7294,7 +7300,7 @@ function openPrintWindow(title, bodyHtml, orientation, colorFilter, frameSlides)
7294
7300
  }
7295
7301
  printWindow.document.open();
7296
7302
  printWindow.document.write(
7297
- chunkT7AMP24E_js.buildPrintHtmlDocument({ title, bodyHtml, orientation, colorFilter, frameSlides })
7303
+ chunkHHQRYCLW_js.buildPrintHtmlDocument({ title, bodyHtml, orientation, colorFilter, frameSlides })
7298
7304
  );
7299
7305
  printWindow.document.close();
7300
7306
  printWindow.focus();
@@ -7355,7 +7361,7 @@ function usePrintHandlers(input) {
7355
7361
  if (svgs.length === 0) {
7356
7362
  return;
7357
7363
  }
7358
- const printDoc = chunkT7AMP24E_js.buildPrintDocument(svgs, pptxData.width, pptxData.height, {
7364
+ const printDoc = chunkHHQRYCLW_js.buildPrintDocument(svgs, pptxData.width, pptxData.height, {
7359
7365
  title: "Slides (Vector)",
7360
7366
  orientation: settings.orientation,
7361
7367
  colorFilter
@@ -7391,7 +7397,7 @@ function usePrintHandlers(input) {
7391
7397
  if (settings.printWhat === "outline") {
7392
7398
  openPrintWindow(
7393
7399
  "Outline",
7394
- `<div class="outline-page">${chunkT7AMP24E_js.buildOutlineHtml(slideIndices, slides)}</div>`,
7400
+ `<div class="outline-page">${chunkHHQRYCLW_js.buildOutlineHtml(slideIndices, slides)}</div>`,
7395
7401
  settings.orientation,
7396
7402
  colorFilter,
7397
7403
  settings.frameSlides
@@ -7416,7 +7422,7 @@ function usePrintHandlers(input) {
7416
7422
  if (settings.printWhat === "slides") {
7417
7423
  openPrintWindow(
7418
7424
  "Slides",
7419
- chunkT7AMP24E_js.buildSlidesHtml(slideImages, slideIndices),
7425
+ chunkHHQRYCLW_js.buildSlidesHtml(slideImages, slideIndices),
7420
7426
  settings.orientation,
7421
7427
  colorFilter,
7422
7428
  settings.frameSlides
@@ -7426,7 +7432,7 @@ function usePrintHandlers(input) {
7426
7432
  if (settings.printWhat === "notes") {
7427
7433
  openPrintWindow(
7428
7434
  "Notes Pages",
7429
- chunkT7AMP24E_js.buildNotesHtml(slideImages, slideIndices, slides),
7435
+ chunkHHQRYCLW_js.buildNotesHtml(slideImages, slideIndices, slides),
7430
7436
  "portrait",
7431
7437
  colorFilter,
7432
7438
  settings.frameSlides
@@ -7437,7 +7443,7 @@ function usePrintHandlers(input) {
7437
7443
  const spp = settings.slidesPerPage;
7438
7444
  openPrintWindow(
7439
7445
  `Handout ${spp} per page`,
7440
- chunkT7AMP24E_js.buildHandoutsHtml(slideImages, slideIndices, spp),
7446
+ chunkHHQRYCLW_js.buildHandoutsHtml(slideImages, slideIndices, spp),
7441
7447
  "portrait",
7442
7448
  colorFilter,
7443
7449
  settings.frameSlides
@@ -7501,8 +7507,8 @@ function useThemeHandlers(input) {
7501
7507
  return;
7502
7508
  }
7503
7509
  await handler.updateThemeColorScheme(colorScheme);
7504
- const previousMap = theme?.colorScheme ? chunkT7AMP24E_js.buildThemeColorMap(theme.colorScheme) : {};
7505
- setSlides((prev) => chunkT7AMP24E_js.reResolveSlideColors(prev, previousMap, colorScheme));
7510
+ const previousMap = theme?.colorScheme ? chunkHHQRYCLW_js.buildThemeColorMap(theme.colorScheme) : {};
7511
+ setSlides((prev) => chunkHHQRYCLW_js.reResolveSlideColors(prev, previousMap, colorScheme));
7506
7512
  setTheme((prev) => prev ? { ...prev, colorScheme } : { colorScheme });
7507
7513
  bumpHistory();
7508
7514
  history.markDirty();
@@ -7607,7 +7613,7 @@ function useThemeSwitching(input) {
7607
7613
  }
7608
7614
  try {
7609
7615
  await handler.applyTheme(preset.colorScheme, preset.fontScheme, preset.name);
7610
- const newData = chunkT7AMP24E_js.applyThemeToData(data, preset.colorScheme, preset.fontScheme, preset.name);
7616
+ const newData = chunkHHQRYCLW_js.applyThemeToData(data, preset.colorScheme, preset.fontScheme, preset.name);
7611
7617
  onDataChange(newData);
7612
7618
  onThemeChanged?.(preset);
7613
7619
  } catch (error) {
@@ -7624,7 +7630,7 @@ function useThemeSwitching(input) {
7624
7630
  }
7625
7631
  try {
7626
7632
  await handler.applyTheme(colorScheme, fontScheme ?? {}, themeName);
7627
- const newData = chunkT7AMP24E_js.applyThemeToData(data, colorScheme, fontScheme, themeName);
7633
+ const newData = chunkHHQRYCLW_js.applyThemeToData(data, colorScheme, fontScheme, themeName);
7628
7634
  onDataChange(newData);
7629
7635
  } catch (error) {
7630
7636
  console.error("Failed to switch to custom theme:", error);
@@ -7636,12 +7642,12 @@ function useThemeSwitching(input) {
7636
7642
  if (!data?.theme?.colorScheme) {
7637
7643
  return void 0;
7638
7644
  }
7639
- return chunkT7AMP24E_js.THEME_PRESETS.find(
7640
- (p) => chunkT7AMP24E_js.themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
7645
+ return chunkHHQRYCLW_js.THEME_PRESETS.find(
7646
+ (p) => chunkHHQRYCLW_js.themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
7641
7647
  );
7642
7648
  }, [data?.theme?.colorScheme]);
7643
7649
  return {
7644
- presets: chunkT7AMP24E_js.THEME_PRESETS,
7650
+ presets: chunkHHQRYCLW_js.THEME_PRESETS,
7645
7651
  switchToPreset,
7646
7652
  switchToCustom,
7647
7653
  currentPreset
@@ -7716,7 +7722,7 @@ function usePropertyHandlers(input) {
7716
7722
  }
7717
7723
  try {
7718
7724
  const ab = await file.arrayBuffer();
7719
- const h = new chunkT7AMP24E_js.PptxHandler();
7725
+ const h = new chunkHHQRYCLW_js.PptxHandler();
7720
7726
  const other = await h.load(ab);
7721
7727
  if (!other) {
7722
7728
  return;
@@ -7726,7 +7732,7 @@ function usePropertyHandlers(input) {
7726
7732
  width: canvasSize.width,
7727
7733
  height: canvasSize.height
7728
7734
  };
7729
- setCompareResult(chunkT7AMP24E_js.comparePresentation(cur, other));
7735
+ setCompareResult(chunkHHQRYCLW_js.comparePresentation(cur, other));
7730
7736
  setIsComparePanelOpen(true);
7731
7737
  } catch (err) {
7732
7738
  console.warn("Compare failed:", err);
@@ -7743,7 +7749,7 @@ function usePropertyHandlers(input) {
7743
7749
  if (!diff || diff.status === "unchanged") {
7744
7750
  return;
7745
7751
  }
7746
- setSlides((prev) => chunkT7AMP24E_js.applyAcceptSlide(prev, diff));
7752
+ setSlides((prev) => chunkHHQRYCLW_js.applyAcceptSlide(prev, diff));
7747
7753
  setIsDirty(true);
7748
7754
  },
7749
7755
  [compareResult, setSlides, setIsDirty]
@@ -7754,10 +7760,10 @@ function usePropertyHandlers(input) {
7754
7760
  if (!compareResult) {
7755
7761
  return;
7756
7762
  }
7757
- setSlides((prev) => chunkT7AMP24E_js.applyAcceptAllSlides(prev, compareResult));
7763
+ setSlides((prev) => chunkHHQRYCLW_js.applyAcceptAllSlides(prev, compareResult));
7758
7764
  setIsDirty(true);
7759
7765
  }, [compareResult, setSlides, setIsDirty]);
7760
- const usedFontFamilies = react.useMemo(() => chunkT7AMP24E_js.collectUsedFonts(slides), [slides]);
7766
+ const usedFontFamilies = react.useMemo(() => chunkHHQRYCLW_js.collectUsedFonts(slides), [slides]);
7761
7767
  return {
7762
7768
  handleUpdateNotes,
7763
7769
  handleUpdateSlide,
@@ -7876,7 +7882,7 @@ function useIsMobile(input) {
7876
7882
  const containerRef = input?.containerRef;
7877
7883
  const isTouchDevice = react.useSyncExternalStore(
7878
7884
  subscribeTouchCapability,
7879
- chunkT7AMP24E_js.detectTouchDevice,
7885
+ chunkHHQRYCLW_js.detectTouchDevice,
7880
7886
  () => false
7881
7887
  // server snapshot
7882
7888
  );
@@ -7892,7 +7898,7 @@ function useIsMobile(input) {
7892
7898
  }
7893
7899
  return containerRef?.current?.clientHeight ?? window.innerHeight;
7894
7900
  });
7895
- const [orientation, setOrientation] = react.useState(chunkT7AMP24E_js.detectOrientation);
7901
+ const [orientation, setOrientation] = react.useState(chunkHHQRYCLW_js.detectOrientation);
7896
7902
  const [isVirtualKeyboardOpen, setIsVirtualKeyboardOpen] = react.useState(false);
7897
7903
  const [initialViewportHeight] = react.useState(
7898
7904
  () => typeof window !== "undefined" ? window.innerHeight : 800
@@ -7936,7 +7942,7 @@ function useIsMobile(input) {
7936
7942
  return;
7937
7943
  }
7938
7944
  const handleOrientationChange = () => {
7939
- setOrientation(chunkT7AMP24E_js.detectOrientation());
7945
+ setOrientation(chunkHHQRYCLW_js.detectOrientation());
7940
7946
  };
7941
7947
  if (screen.orientation) {
7942
7948
  screen.orientation.addEventListener("change", handleOrientationChange);
@@ -7966,9 +7972,9 @@ function useIsMobile(input) {
7966
7972
  window.addEventListener("resize", handleResize);
7967
7973
  return () => window.removeEventListener("resize", handleResize);
7968
7974
  }, [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;
7975
+ const isMobile = chunkHHQRYCLW_js.isMobileViewport(containerWidth, containerHeight, isTouchDevice);
7976
+ const isTablet = !isMobile && containerWidth >= chunkHHQRYCLW_js.MOBILE_BREAKPOINT && containerWidth < chunkHHQRYCLW_js.TABLET_BREAKPOINT;
7977
+ const isDesktop = !isMobile && containerWidth >= chunkHHQRYCLW_js.TABLET_BREAKPOINT;
7972
7978
  return {
7973
7979
  isMobile,
7974
7980
  isTablet,
@@ -8029,11 +8035,11 @@ function useViewerDialogs(input) {
8029
8035
  );
8030
8036
  const [embedFontsEnabled, setEmbedFontsEnabled] = react.useState(false);
8031
8037
  const [isNarrowViewport, setIsNarrowViewport] = react.useState(
8032
- () => typeof window !== "undefined" ? chunkT7AMP24E_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch()) : false
8038
+ () => typeof window !== "undefined" ? chunkHHQRYCLW_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch()) : false
8033
8039
  );
8034
8040
  react.useEffect(() => {
8035
8041
  const handleWindow = () => setIsNarrowViewport(
8036
- chunkT7AMP24E_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch())
8042
+ chunkHHQRYCLW_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch())
8037
8043
  );
8038
8044
  let observer = null;
8039
8045
  let raf = 0;
@@ -8047,12 +8053,12 @@ function useViewerDialogs(input) {
8047
8053
  const entry = entries[0];
8048
8054
  if (entry) {
8049
8055
  setIsNarrowViewport(
8050
- chunkT7AMP24E_js.isMobileViewport(entry.contentRect.width, entry.contentRect.height, viewportIsTouch())
8056
+ chunkHHQRYCLW_js.isMobileViewport(entry.contentRect.width, entry.contentRect.height, viewportIsTouch())
8051
8057
  );
8052
8058
  }
8053
8059
  });
8054
8060
  observer.observe(el);
8055
- setIsNarrowViewport(chunkT7AMP24E_js.isMobileViewport(el.clientWidth, el.clientHeight, viewportIsTouch()));
8061
+ setIsNarrowViewport(chunkHHQRYCLW_js.isMobileViewport(el.clientWidth, el.clientHeight, viewportIsTouch()));
8056
8062
  };
8057
8063
  attach();
8058
8064
  window.addEventListener("resize", handleWindow);
@@ -8210,12 +8216,12 @@ function useViewerDialogs(input) {
8210
8216
  }
8211
8217
  function computeGridSpacingPx(presentationGridSpacing) {
8212
8218
  if (presentationGridSpacing) {
8213
- const px = Math.round(presentationGridSpacing.cx / chunk4O7PPQ2V_js.EMU_PER_PX);
8219
+ const px = Math.round(presentationGridSpacing.cx / chunk5ZI2ZG5E_js.EMU_PER_PX);
8214
8220
  if (px > 0) {
8215
8221
  return px;
8216
8222
  }
8217
8223
  }
8218
- return chunk4O7PPQ2V_js.GRID_SIZE;
8224
+ return chunk5ZI2ZG5E_js.GRID_SIZE;
8219
8225
  }
8220
8226
  function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows) {
8221
8227
  if (activeCustomShowId) {
@@ -8229,8 +8235,8 @@ function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows) {
8229
8235
  return slides.map((_, i) => i).filter((i) => !slides[i]?.hidden);
8230
8236
  }
8231
8237
  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"),
8238
+ return chunkHHQRYCLW_js.groupSlidesBySection(sections, slides).map((group) => ({
8239
+ id: group.section?.id ?? (sections.length > 0 ? chunk5ZI2ZG5E_js.UNGROUPED_SECTION_ID : "default"),
8234
8240
  label: group.section?.name ?? (sections.length > 0 ? "Ungrouped Slides" : "Slides"),
8235
8241
  slideIndexes: group.slideIndexes,
8236
8242
  ...group.section?.color !== void 0 ? { color: group.section.color } : {},
@@ -8285,7 +8291,7 @@ function useDerivedSlideState(input) {
8285
8291
  );
8286
8292
  const slideSectionGroups = react.useMemo(
8287
8293
  () => computeSlideSectionGroups(slides, sections).map((group) => {
8288
- if (group.id === chunk4O7PPQ2V_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
8294
+ if (group.id === chunk5ZI2ZG5E_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
8289
8295
  return { ...group, label: t("pptx.slides.ungroupedSlides") };
8290
8296
  }
8291
8297
  if (group.id === "default" && group.label === "Slides") {
@@ -8388,13 +8394,13 @@ function useAnnotationHandlers(input) {
8388
8394
  }, [annotations, setMode, setSlides, history]);
8389
8395
  const handleSetMode = react.useCallback(
8390
8396
  (nextMode) => {
8391
- if (mode === "present" && nextMode !== "present" && !chunkT7AMP24E_js.mayLeaveSlideShow()) {
8397
+ if (mode === "present" && nextMode !== "present" && !chunkHHQRYCLW_js.mayLeaveSlideShow()) {
8392
8398
  return;
8393
8399
  }
8394
8400
  if (nextMode === "present") {
8395
8401
  presentation.enterPresentMode();
8396
8402
  } else if (mode === "present" && annotations.hasAnyAnnotations) {
8397
- chunk4O7PPQ2V_js.stopAllPersistentAudio();
8403
+ chunk5ZI2ZG5E_js.stopAllPersistentAudio();
8398
8404
  pendingModeAfterAnnotationsRef.current = nextMode;
8399
8405
  if (promptKeepInkAnnotations) {
8400
8406
  setShowKeepAnnotationsDialog(true);
@@ -8403,7 +8409,7 @@ function useAnnotationHandlers(input) {
8403
8409
  }
8404
8410
  } else {
8405
8411
  if (mode === "present") {
8406
- chunk4O7PPQ2V_js.stopAllPersistentAudio();
8412
+ chunk5ZI2ZG5E_js.stopAllPersistentAudio();
8407
8413
  }
8408
8414
  setMode(nextMode);
8409
8415
  }
@@ -8469,13 +8475,13 @@ function useSerialize(input) {
8469
8475
  let processedSlide = slide;
8470
8476
  if (pendingEditId) {
8471
8477
  const updatedElements = slide.elements.map((el) => {
8472
- if (el.id !== pendingEditId || !chunkT7AMP24E_js.hasTextProperties(el)) {
8478
+ if (el.id !== pendingEditId || !chunkHHQRYCLW_js.hasTextProperties(el)) {
8473
8479
  return el;
8474
8480
  }
8475
8481
  return {
8476
8482
  ...el,
8477
8483
  text: pendingEditText,
8478
- textSegments: chunkT7AMP24E_js.remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
8484
+ textSegments: chunkHHQRYCLW_js.remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
8479
8485
  };
8480
8486
  });
8481
8487
  if (updatedElements.some((el, i) => el !== slide.elements[i])) {
@@ -8488,14 +8494,14 @@ function useSerialize(input) {
8488
8494
  const pptxGuides = guides.map((g) => ({
8489
8495
  id: g.id,
8490
8496
  orientation: g.axis === "h" ? "horz" : "vert",
8491
- positionEmu: chunkT7AMP24E_js.guidePxToEmu(g.position)
8497
+ positionEmu: chunkHHQRYCLW_js.guidePxToEmu(g.position)
8492
8498
  }));
8493
8499
  return {
8494
8500
  ...processedSlide,
8495
8501
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
8496
8502
  };
8497
8503
  });
8498
- const slidesToSave = chunk4O7PPQ2V_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
8504
+ const slidesToSave = chunk5ZI2ZG5E_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
8499
8505
  const saveOptions = {
8500
8506
  headerFooter,
8501
8507
  presentationProperties,
@@ -8664,7 +8670,7 @@ function usePresentationSetup(input) {
8664
8670
  containerRef,
8665
8671
  content,
8666
8672
  onSetMode: (nextMode) => {
8667
- if (mode === "present" && nextMode !== "present" && !chunkT7AMP24E_js.mayLeaveSlideShow()) {
8673
+ if (mode === "present" && nextMode !== "present" && !chunkHHQRYCLW_js.mayLeaveSlideShow()) {
8668
8674
  return;
8669
8675
  }
8670
8676
  if (mode === "present" && nextMode !== "present" && annotations.hasAnyAnnotations && promptKeepInkAnnotations) {
@@ -8672,7 +8678,7 @@ function usePresentationSetup(input) {
8672
8678
  setShowKeepAnnotationsDialog(true);
8673
8679
  } else {
8674
8680
  if (mode === "present" && nextMode !== "present") {
8675
- chunk4O7PPQ2V_js.stopAllPersistentAudio();
8681
+ chunk5ZI2ZG5E_js.stopAllPersistentAudio();
8676
8682
  stopAnimationSound();
8677
8683
  }
8678
8684
  setMode(nextMode);
@@ -8726,10 +8732,10 @@ function usePresentationSetup(input) {
8726
8732
  onToggleInkMarkup: () => annotations.setInkMarkupVisible(!annotations.inkMarkupVisible),
8727
8733
  onToggleToolbar: () => annotations.setToolbarVisible(!annotations.toolbarVisible),
8728
8734
  onSaveRehearsalTimings: (timings) => {
8729
- setSlides((prev) => chunkT7AMP24E_js.applyRehearsalTimings(prev, timings));
8735
+ setSlides((prev) => chunkHHQRYCLW_js.applyRehearsalTimings(prev, timings));
8730
8736
  history.markDirty();
8731
8737
  },
8732
- loopContinuously: chunkT7AMP24E_js.shouldLoopContinuously(presentationProperties),
8738
+ loopContinuously: chunkHHQRYCLW_js.shouldLoopContinuously(presentationProperties),
8733
8739
  showWithAnimation: presentationProperties.showWithAnimation,
8734
8740
  useTimings: presentationProperties.advanceMode !== "manual",
8735
8741
  endWithBlackSlide
@@ -8891,7 +8897,7 @@ function useEditorOperations(input) {
8891
8897
  const { formatPainterActive, setFormatPainterActive, elementLookup } = state;
8892
8898
  react.useEffect(() => {
8893
8899
  if (formatPainterActive && !prevFormatPainterRef.current && selectedElement) {
8894
- copiedFormatRef.current = chunkT7AMP24E_js.copyFormatFromElement(selectedElement);
8900
+ copiedFormatRef.current = chunkHHQRYCLW_js.copyFormatFromElement(selectedElement);
8895
8901
  } else if (!formatPainterActive) {
8896
8902
  copiedFormatRef.current = null;
8897
8903
  }
@@ -8917,12 +8923,12 @@ function useEditorOperations(input) {
8917
8923
  e.stopPropagation();
8918
8924
  const element = elementLookup.get(elementId);
8919
8925
  if (element) {
8920
- const updated = chunkT7AMP24E_js.applyFormatToElement(element, copiedFormatRef.current);
8926
+ const updated = chunkHHQRYCLW_js.applyFormatToElement(element, copiedFormatRef.current);
8921
8927
  const updates = {};
8922
- if (chunkT7AMP24E_js.hasShapeProperties(updated)) {
8928
+ if (chunkHHQRYCLW_js.hasShapeProperties(updated)) {
8923
8929
  updates.shapeStyle = updated.shapeStyle;
8924
8930
  }
8925
- if (chunkT7AMP24E_js.hasTextProperties(updated)) {
8931
+ if (chunkHHQRYCLW_js.hasTextProperties(updated)) {
8926
8932
  updates.textStyle = updated.textStyle;
8927
8933
  }
8928
8934
  ops.updateElementById(elementId, updates);
@@ -9069,7 +9075,7 @@ function collectReferencedFontFamilies(slides) {
9069
9075
  const families = /* @__PURE__ */ new Set();
9070
9076
  for (const slide of slides) {
9071
9077
  for (const el of slide.elements) {
9072
- if (chunkT7AMP24E_js.hasTextProperties(el) && el.textSegments) {
9078
+ if (chunkHHQRYCLW_js.hasTextProperties(el) && el.textSegments) {
9073
9079
  for (const seg of el.textSegments) {
9074
9080
  if (seg.style.fontFamily) {
9075
9081
  families.add(seg.style.fontFamily);
@@ -9638,7 +9644,7 @@ function useViewerIntegration(input) {
9638
9644
  return zoom.scale;
9639
9645
  },
9640
9646
  setZoom(level) {
9641
- zoom.setScale(Math.min(Math.max(level, chunk4O7PPQ2V_js.MIN_ZOOM_SCALE), chunk4O7PPQ2V_js.MAX_ZOOM_SCALE));
9647
+ zoom.setScale(Math.min(Math.max(level, chunk5ZI2ZG5E_js.MIN_ZOOM_SCALE), chunk5ZI2ZG5E_js.MAX_ZOOM_SCALE));
9642
9648
  },
9643
9649
  zoomIn() {
9644
9650
  zoom.handleZoomIn();
@@ -9853,7 +9859,7 @@ function useReducedMotion() {
9853
9859
  }
9854
9860
  function useViewerOptions() {
9855
9861
  const storeRef = react.useRef(null);
9856
- storeRef.current ??= chunkT7AMP24E_js.createViewerOptionsStore();
9862
+ storeRef.current ??= chunkHHQRYCLW_js.createViewerOptionsStore();
9857
9863
  const store = storeRef.current;
9858
9864
  const options = react.useSyncExternalStore(
9859
9865
  (onStoreChange) => store.subscribe(onStoreChange),
@@ -9862,9 +9868,9 @@ function useViewerOptions() {
9862
9868
  );
9863
9869
  return { optionsStore: store, options };
9864
9870
  }
9865
- var KNOWN_TAB_IDS = new Set(chunkT7AMP24E_js.TOOLBAR_TABS.map((tab) => tab.id));
9871
+ var KNOWN_TAB_IDS = new Set(chunkHHQRYCLW_js.TOOLBAR_TABS.map((tab) => tab.id));
9866
9872
  function computeToolbarVisibility(hiddenActions) {
9867
- const isHidden = (id) => chunkT7AMP24E_js.isActionHidden(id, hiddenActions);
9873
+ const isHidden = (id) => chunkHHQRYCLW_js.isActionHidden(id, hiddenActions);
9868
9874
  const isTabVisible = (id) => !KNOWN_TAB_IDS.has(id) || !isHidden(id);
9869
9875
  return { isHidden, isTabVisible };
9870
9876
  }
@@ -9949,12 +9955,12 @@ function useYjsDocumentSync({
9949
9955
  return;
9950
9956
  }
9951
9957
  try {
9952
- const handler = new chunkT7AMP24E_js.PptxHandler();
9958
+ const handler = new chunkHHQRYCLW_js.PptxHandler();
9953
9959
  await handler.load(sourceBytes.buffer);
9954
- const currentSlides = chunkT7AMP24E_js.readSlidesFromYDoc(
9960
+ const currentSlides = chunkHHQRYCLW_js.readSlidesFromYDoc(
9955
9961
  doc
9956
9962
  );
9957
- const slidesToSave = chunk4O7PPQ2V_js.buildSaveSlides(currentSlides, templateElementsBySlideId);
9963
+ const slidesToSave = chunk5ZI2ZG5E_js.buildSaveSlides(currentSlides, templateElementsBySlideId);
9958
9964
  const bytes = await handler.save(slidesToSave);
9959
9965
  config.onWriteBack(bytes);
9960
9966
  } catch {
@@ -9969,7 +9975,7 @@ function useYjsDocumentSync({
9969
9975
  if (!doc || !isConnected) {
9970
9976
  return;
9971
9977
  }
9972
- const docSlides = chunkT7AMP24E_js.readSlidesFromYDoc(
9978
+ const docSlides = chunkHHQRYCLW_js.readSlidesFromYDoc(
9973
9979
  doc
9974
9980
  );
9975
9981
  if (docSlides.length === 0) {
@@ -9991,11 +9997,11 @@ function useYjsDocumentSync({
9991
9997
  lastSyncedRef.current = serialized;
9992
9998
  void (async () => {
9993
9999
  const factories = await getFactories();
9994
- chunkT7AMP24E_js.reconcileSlidesInYDoc(
10000
+ chunkHHQRYCLW_js.reconcileSlidesInYDoc(
9995
10001
  slides,
9996
10002
  doc,
9997
10003
  factories,
9998
- chunkT7AMP24E_js.LOCAL_SYNC_ORIGIN
10004
+ chunkHHQRYCLW_js.LOCAL_SYNC_ORIGIN
9999
10005
  );
10000
10006
  scheduleWriteBack();
10001
10007
  })();
@@ -10009,10 +10015,10 @@ function useYjsDocumentSync({
10009
10015
  return;
10010
10016
  }
10011
10017
  const handleChange = (_events, transaction) => {
10012
- if (transaction?.origin === chunkT7AMP24E_js.LOCAL_SYNC_ORIGIN) {
10018
+ if (transaction?.origin === chunkHHQRYCLW_js.LOCAL_SYNC_ORIGIN) {
10013
10019
  return;
10014
10020
  }
10015
- const remoteSlides = chunkT7AMP24E_js.readSlidesFromYDoc(
10021
+ const remoteSlides = chunkHHQRYCLW_js.readSlidesFromYDoc(
10016
10022
  doc
10017
10023
  );
10018
10024
  if (remoteSlides.length === 0) {
@@ -10028,7 +10034,7 @@ function useYjsDocumentSync({
10028
10034
  isApplyingRemoteRef.current = false;
10029
10035
  scheduleWriteBack();
10030
10036
  };
10031
- const unobserve = chunkT7AMP24E_js.observeYDocSlides(
10037
+ const unobserve = chunkHHQRYCLW_js.observeYDocSlides(
10032
10038
  doc,
10033
10039
  handleChange
10034
10040
  );
@@ -10066,7 +10072,7 @@ function useBroadcastFollower({
10066
10072
  if (!broadcaster) {
10067
10073
  return;
10068
10074
  }
10069
- if (!chunkT7AMP24E_js.shouldAutoFollowBroadcaster({
10075
+ if (!chunkHHQRYCLW_js.shouldAutoFollowBroadcaster({
10070
10076
  localRole: collab.config.role,
10071
10077
  broadcasterRole: broadcaster.role
10072
10078
  })) {
@@ -10226,10 +10232,10 @@ function useTouchGestures(input) {
10226
10232
  if (!el || !enabled) {
10227
10233
  return;
10228
10234
  }
10229
- const recognizer = chunkT7AMP24E_js.createTouchGestureRecognizer({
10235
+ const recognizer = chunkHHQRYCLW_js.createTouchGestureRecognizer({
10230
10236
  getScale: () => scaleRef.current,
10231
- minScale: chunk4O7PPQ2V_js.MIN_ZOOM_SCALE,
10232
- maxScale: chunk4O7PPQ2V_js.MAX_ZOOM_SCALE,
10237
+ minScale: chunk5ZI2ZG5E_js.MIN_ZOOM_SCALE,
10238
+ maxScale: chunk5ZI2ZG5E_js.MAX_ZOOM_SCALE,
10233
10239
  callbacks: {
10234
10240
  onPinchZoom: (newScale) => callbacksRef.current.onPinchZoom?.(newScale),
10235
10241
  onSwipe: (direction) => callbacksRef.current.onSwipe?.(direction),
@@ -10269,7 +10275,7 @@ function scrollFocusedIntoView(keyboardInset) {
10269
10275
  return;
10270
10276
  }
10271
10277
  const rect = active.getBoundingClientRect();
10272
- const delta = chunkT7AMP24E_js.computeScrollDelta(
10278
+ const delta = chunkHHQRYCLW_js.computeScrollDelta(
10273
10279
  { top: rect.top, bottom: rect.bottom },
10274
10280
  window.innerHeight,
10275
10281
  keyboardInset
@@ -10289,8 +10295,8 @@ function useKeyboardInsets(enabled = true) {
10289
10295
  return;
10290
10296
  }
10291
10297
  const update = () => {
10292
- const metrics = chunkT7AMP24E_js.readViewportMetrics(window);
10293
- const inset = metrics ? chunkT7AMP24E_js.computeKeyboardInset(metrics) : 0;
10298
+ const metrics = chunkHHQRYCLW_js.readViewportMetrics(window);
10299
+ const inset = metrics ? chunkHHQRYCLW_js.computeKeyboardInset(metrics) : 0;
10294
10300
  setKeyboardInset(inset);
10295
10301
  if (inset > 0) {
10296
10302
  window.requestAnimationFrame(() => scrollFocusedIntoView(inset));
@@ -10301,8 +10307,8 @@ function useKeyboardInsets(enabled = true) {
10301
10307
  vv.addEventListener("scroll", update);
10302
10308
  const onFocusIn = () => {
10303
10309
  window.requestAnimationFrame(() => {
10304
- const metrics = chunkT7AMP24E_js.readViewportMetrics(window);
10305
- const inset = metrics ? chunkT7AMP24E_js.computeKeyboardInset(metrics) : 0;
10310
+ const metrics = chunkHHQRYCLW_js.readViewportMetrics(window);
10311
+ const inset = metrics ? chunkHHQRYCLW_js.computeKeyboardInset(metrics) : 0;
10306
10312
  if (inset > 0) {
10307
10313
  scrollFocusedIntoView(inset);
10308
10314
  }
@@ -10315,7 +10321,7 @@ function useKeyboardInsets(enabled = true) {
10315
10321
  document.removeEventListener("focusin", onFocusIn);
10316
10322
  };
10317
10323
  }, [enabled]);
10318
- return { keyboardInset, isKeyboardOpen: chunkT7AMP24E_js.isKeyboardOpen(keyboardInset) };
10324
+ return { keyboardInset, isKeyboardOpen: chunkHHQRYCLW_js.isKeyboardOpen(keyboardInset) };
10319
10325
  }
10320
10326
 
10321
10327
  // src/viewer/hooks/useViewerBuildingBlocks-canvas-props.ts
@@ -10370,13 +10376,13 @@ function buildCanvasProps(input) {
10370
10376
  if (mode === "present") {
10371
10377
  presentation.handlePresentationAction(action);
10372
10378
  } else if (action.url) {
10373
- chunkT7AMP24E_js.safeOpenUrl(action.url);
10379
+ chunkHHQRYCLW_js.safeOpenUrl(action.url);
10374
10380
  }
10375
10381
  };
10376
10382
  const handleHyperlinkClick = (url) => {
10377
- if (chunkT7AMP24E_js.isPpactionUrl(url)) {
10383
+ if (chunkHHQRYCLW_js.isPpactionUrl(url)) {
10378
10384
  if (mode === "present") {
10379
- const parsed = chunkT7AMP24E_js.parsePpactionUrl(url);
10385
+ const parsed = chunkHHQRYCLW_js.parsePpactionUrl(url);
10380
10386
  if (parsed) {
10381
10387
  presentation.handlePresentationAction({
10382
10388
  action: parsed.action,
@@ -10386,7 +10392,7 @@ function buildCanvasProps(input) {
10386
10392
  }
10387
10393
  return;
10388
10394
  }
10389
- chunkT7AMP24E_js.safeOpenUrl(url);
10395
+ chunkHHQRYCLW_js.safeOpenUrl(url);
10390
10396
  };
10391
10397
  return {
10392
10398
  activeSlide: effectiveSlide,
@@ -10706,7 +10712,7 @@ function buildToolbarProps(input) {
10706
10712
  onOpenFile,
10707
10713
  onOpenRecentFile,
10708
10714
  onCreatePresentation: (templateId) => {
10709
- s.setSlides(chunkT7AMP24E_js.createBackstagePresentation(templateId));
10715
+ s.setSlides(chunkHHQRYCLW_js.createBackstagePresentation(templateId));
10710
10716
  s.setActiveSlideIndex(0);
10711
10717
  s.setSelectedElementId(null);
10712
10718
  s.setSelectedElementIds([]);
@@ -10761,7 +10767,7 @@ function buildToolbarProps(input) {
10761
10767
  isCommentsPanelOpen: s.isInspectorPaneOpen,
10762
10768
  slideCommentCount: activeSlide?.comments?.length ?? 0,
10763
10769
  formatPainterActive: s.formatPainterActive,
10764
- canActivateFormatPainter: chunkT7AMP24E_js.hasCopyableFormat(selectedElement),
10770
+ canActivateFormatPainter: chunkHHQRYCLW_js.hasCopyableFormat(selectedElement),
10765
10771
  onToggleFormatPainter: () => s.setFormatPainterActive((p) => !p),
10766
10772
  isSelectionPaneOpen: s.isSelectionPaneOpen,
10767
10773
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -11024,7 +11030,7 @@ function useViewerBuildingBlocks(input) {
11024
11030
  }, [incomingContent]);
11025
11031
  const onOpenFile = react.useCallback(() => {
11026
11032
  void (async () => {
11027
- const picked = await chunkT7AMP24E_js.openPptxFile();
11033
+ const picked = await chunkHHQRYCLW_js.openPptxFile();
11028
11034
  if (picked) {
11029
11035
  setContent(picked.buffer);
11030
11036
  }
@@ -11032,7 +11038,7 @@ function useViewerBuildingBlocks(input) {
11032
11038
  }, []);
11033
11039
  const onOpenRecentFile = react.useCallback((key) => {
11034
11040
  void (async () => {
11035
- const bytes = await chunkT7AMP24E_js.readBackstageRecentFile(key);
11041
+ const bytes = await chunkHHQRYCLW_js.readBackstageRecentFile(key);
11036
11042
  if (bytes) {
11037
11043
  setContent(bytes);
11038
11044
  }