pptx-react-viewer 3.0.1 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/{AiChatPanel-NLIUZ5RI.js → AiChatPanel-235ZZA3Y.js} +23 -23
  3. package/dist/AiChatPanel-235ZZA3Y.js.br +0 -0
  4. package/dist/AiChatPanel-235ZZA3Y.js.gz +0 -0
  5. package/dist/{AiChatPanel-DMBQPAGB.mjs → AiChatPanel-DYOBY6OG.mjs} +3 -3
  6. package/dist/AiChatPanel-DYOBY6OG.mjs.br +0 -0
  7. package/dist/AiChatPanel-DYOBY6OG.mjs.gz +0 -0
  8. package/dist/{Model3DScene-JNZN42TU.js → Model3DScene-5QDYQF55.js} +2 -2
  9. package/dist/Model3DScene-5QDYQF55.js.br +0 -0
  10. package/dist/Model3DScene-5QDYQF55.js.gz +0 -0
  11. package/dist/{Model3DScene-ZO6U7YVU.mjs → Model3DScene-A3652H7T.mjs} +1 -1
  12. package/dist/Model3DScene-A3652H7T.mjs.br +0 -0
  13. package/dist/Model3DScene-A3652H7T.mjs.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-P6CVRWDQ.mjs → SurfaceChart3DScene-N66TY4SW.mjs} +1 -1
  15. package/dist/SurfaceChart3DScene-N66TY4SW.mjs.br +0 -0
  16. package/dist/SurfaceChart3DScene-N66TY4SW.mjs.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-PGD4ZCLI.js → SurfaceChart3DScene-QHENN3AF.js} +2 -2
  18. package/dist/SurfaceChart3DScene-QHENN3AF.js.br +0 -0
  19. package/dist/SurfaceChart3DScene-QHENN3AF.js.gz +0 -0
  20. package/dist/{chunk-SDOQKSKI.js → chunk-35YJ5RLU.js} +10 -10
  21. package/dist/chunk-35YJ5RLU.js.br +0 -0
  22. package/dist/{chunk-SDOQKSKI.js.gz → chunk-35YJ5RLU.js.gz} +0 -0
  23. package/dist/{chunk-VGHEHM66.mjs → chunk-4LHG6ZL7.mjs} +185 -163
  24. package/dist/chunk-4LHG6ZL7.mjs.br +0 -0
  25. package/dist/chunk-4LHG6ZL7.mjs.gz +0 -0
  26. package/dist/{chunk-3MW6F3K7.js → chunk-7HUYHWQS.js} +389 -389
  27. package/dist/chunk-7HUYHWQS.js.br +0 -0
  28. package/dist/chunk-7HUYHWQS.js.gz +0 -0
  29. package/dist/{chunk-OB4PKKIN.mjs → chunk-EVXT7HLY.mjs} +1 -1
  30. package/dist/chunk-EVXT7HLY.mjs.br +0 -0
  31. package/dist/chunk-EVXT7HLY.mjs.gz +0 -0
  32. package/dist/{chunk-WFMSDYVQ.js → chunk-GJ7E44BG.js} +3 -3
  33. package/dist/chunk-GJ7E44BG.js.br +0 -0
  34. package/dist/chunk-GJ7E44BG.js.gz +0 -0
  35. package/dist/{chunk-OXPD2UYI.mjs → chunk-M2TISD4A.mjs} +10 -10
  36. package/dist/chunk-M2TISD4A.mjs.br +0 -0
  37. package/dist/{chunk-OXPD2UYI.mjs.gz → chunk-M2TISD4A.mjs.gz} +0 -0
  38. package/dist/{chunk-S6PFSR7I.mjs → chunk-QG7TXWXP.mjs} +1 -1
  39. package/dist/chunk-QG7TXWXP.mjs.br +0 -0
  40. package/dist/chunk-QG7TXWXP.mjs.gz +0 -0
  41. package/dist/{chunk-54SDLPJY.js → chunk-RYLLTHFD.js} +1218 -1196
  42. package/dist/chunk-RYLLTHFD.js.br +0 -0
  43. package/dist/chunk-RYLLTHFD.js.gz +0 -0
  44. package/dist/{chunk-XMLPTDPM.js → chunk-UU6NFFRR.js} +147 -147
  45. package/dist/chunk-UU6NFFRR.js.br +0 -0
  46. package/dist/chunk-UU6NFFRR.js.gz +0 -0
  47. package/dist/{chunk-BGAJLL4N.mjs → chunk-YISXETNN.mjs} +2 -2
  48. package/dist/chunk-YISXETNN.mjs.br +0 -0
  49. package/dist/chunk-YISXETNN.mjs.gz +0 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +45 -45
  52. package/dist/index.js.br +0 -0
  53. package/dist/index.js.gz +0 -0
  54. package/dist/index.mjs +5 -5
  55. package/dist/index.mjs.br +0 -0
  56. package/dist/index.mjs.gz +0 -0
  57. package/dist/internals.js +78 -78
  58. package/dist/internals.js.br +0 -0
  59. package/dist/internals.js.gz +0 -0
  60. package/dist/internals.mjs +3 -3
  61. package/dist/internals.mjs.br +0 -0
  62. package/dist/internals.mjs.gz +0 -0
  63. package/dist/viewer/index.js +26 -26
  64. package/dist/viewer/index.js.br +0 -0
  65. package/dist/viewer/index.js.gz +0 -0
  66. package/dist/viewer/index.mjs +5 -5
  67. package/dist/viewer/index.mjs.br +0 -0
  68. package/dist/viewer/index.mjs.gz +0 -0
  69. package/package.json +2 -2
  70. package/dist/AiChatPanel-DMBQPAGB.mjs.br +0 -0
  71. package/dist/AiChatPanel-DMBQPAGB.mjs.gz +0 -0
  72. package/dist/AiChatPanel-NLIUZ5RI.js.br +0 -0
  73. package/dist/AiChatPanel-NLIUZ5RI.js.gz +0 -0
  74. package/dist/Model3DScene-JNZN42TU.js.br +0 -0
  75. package/dist/Model3DScene-JNZN42TU.js.gz +0 -0
  76. package/dist/Model3DScene-ZO6U7YVU.mjs.br +0 -0
  77. package/dist/Model3DScene-ZO6U7YVU.mjs.gz +0 -0
  78. package/dist/SurfaceChart3DScene-P6CVRWDQ.mjs.br +0 -0
  79. package/dist/SurfaceChart3DScene-P6CVRWDQ.mjs.gz +0 -0
  80. package/dist/SurfaceChart3DScene-PGD4ZCLI.js.br +0 -0
  81. package/dist/SurfaceChart3DScene-PGD4ZCLI.js.gz +0 -0
  82. package/dist/chunk-3MW6F3K7.js.br +0 -0
  83. package/dist/chunk-3MW6F3K7.js.gz +0 -0
  84. package/dist/chunk-54SDLPJY.js.br +0 -0
  85. package/dist/chunk-54SDLPJY.js.gz +0 -0
  86. package/dist/chunk-BGAJLL4N.mjs.br +0 -0
  87. package/dist/chunk-BGAJLL4N.mjs.gz +0 -0
  88. package/dist/chunk-OB4PKKIN.mjs.br +0 -0
  89. package/dist/chunk-OB4PKKIN.mjs.gz +0 -0
  90. package/dist/chunk-OXPD2UYI.mjs.br +0 -0
  91. package/dist/chunk-S6PFSR7I.mjs.br +0 -0
  92. package/dist/chunk-S6PFSR7I.mjs.gz +0 -0
  93. package/dist/chunk-SDOQKSKI.js.br +0 -0
  94. package/dist/chunk-VGHEHM66.mjs.br +0 -0
  95. package/dist/chunk-VGHEHM66.mjs.gz +0 -0
  96. package/dist/chunk-WFMSDYVQ.js.br +0 -0
  97. package/dist/chunk-WFMSDYVQ.js.gz +0 -0
  98. package/dist/chunk-XMLPTDPM.js.br +0 -0
  99. package/dist/chunk-XMLPTDPM.js.gz +0 -0
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkXMLPTDPM_js = require('./chunk-XMLPTDPM.js');
3
+ var chunkUU6NFFRR_js = require('./chunk-UU6NFFRR.js');
4
4
  var chunkU6A5FWWE_js = require('./chunk-U6A5FWWE.js');
5
- var chunkSDOQKSKI_js = require('./chunk-SDOQKSKI.js');
5
+ var chunk35YJ5RLU_js = require('./chunk-35YJ5RLU.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 = chunkSDOQKSKI_js.DEFAULT_VIRTUAL_OVERSCAN
17
+ overscan = chunk35YJ5RLU_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 = chunkSDOQKSKI_js.computeVirtualRange(totalItems, itemHeight, scrollTop, viewportHeight, overscan);
47
+ const range = chunk35YJ5RLU_js.computeVirtualRange(totalItems, itemHeight, scrollTop, viewportHeight, overscan);
48
48
  const safeItemHeight = Math.max(itemHeight, 1);
49
49
  const scrollToIndex = react.useCallback(
50
50
  (index, behavior = "smooth") => {
@@ -85,7 +85,7 @@ function usePresenceTracking({
85
85
  }) {
86
86
  const [remoteUsers, setRemoteUsers] = react.useState([]);
87
87
  const projectorRef = react.useRef(null);
88
- projectorRef.current ??= chunkSDOQKSKI_js.createPresenceProjector();
88
+ projectorRef.current ??= chunk35YJ5RLU_js.createPresenceProjector();
89
89
  const projector = projectorRef.current;
90
90
  const lastBroadcastRef = react.useRef(0);
91
91
  const pendingBroadcastRef = react.useRef(null);
@@ -110,7 +110,7 @@ function usePresenceTracking({
110
110
  awareness.setLocalStateField("presence", state);
111
111
  lastBroadcastRef.current = Date.now();
112
112
  };
113
- if (elapsed >= chunkSDOQKSKI_js.BROADCAST_THROTTLE_MS) {
113
+ if (elapsed >= chunk35YJ5RLU_js.BROADCAST_THROTTLE_MS) {
114
114
  if (pendingBroadcastRef.current) {
115
115
  clearTimeout(pendingBroadcastRef.current);
116
116
  pendingBroadcastRef.current = null;
@@ -120,7 +120,7 @@ function usePresenceTracking({
120
120
  pendingBroadcastRef.current = setTimeout(() => {
121
121
  pendingBroadcastRef.current = null;
122
122
  flush();
123
- }, chunkSDOQKSKI_js.BROADCAST_THROTTLE_MS - elapsed);
123
+ }, chunk35YJ5RLU_js.BROADCAST_THROTTLE_MS - elapsed);
124
124
  }
125
125
  },
126
126
  [awareness, userName, userColor, userAvatar, role]
@@ -200,7 +200,7 @@ function useYjsProvider({ config }) {
200
200
  const departureRef = react.useRef(null);
201
201
  const gateRef = react.useRef(null);
202
202
  if (!gateRef.current) {
203
- gateRef.current = chunkSDOQKSKI_js.createSyncGate(() => setSynced(true));
203
+ gateRef.current = chunk35YJ5RLU_js.createSyncGate(() => setSynced(true));
204
204
  }
205
205
  const teardown = react.useCallback(() => {
206
206
  if (timeoutRef.current) {
@@ -220,7 +220,7 @@ function useYjsProvider({ config }) {
220
220
  const buildCleanup = react.useCallback(
221
221
  (provider, yDoc) => () => {
222
222
  announceDeparture();
223
- chunkSDOQKSKI_js.clearLocalAwareness(provider.awareness);
223
+ chunk35YJ5RLU_js.clearLocalAwareness(provider.awareness);
224
224
  provider.destroy();
225
225
  yDoc.destroy();
226
226
  setDoc(null);
@@ -245,9 +245,9 @@ function useYjsProvider({ config }) {
245
245
  if (config.authToken) {
246
246
  opts.password = config.authToken;
247
247
  }
248
- const roomId = chunkSDOQKSKI_js.validateRoomId(config.roomId);
248
+ const roomId = chunk35YJ5RLU_js.validateRoomId(config.roomId);
249
249
  const provider = new WebrtcProvider(roomId, yDoc, opts);
250
- departureRef.current = chunkSDOQKSKI_js.createDepartureChannel(roomId, provider.awareness);
250
+ departureRef.current = chunk35YJ5RLU_js.createDepartureChannel(roomId, provider.awareness);
251
251
  setDoc(yDoc);
252
252
  setAwareness(provider.awareness);
253
253
  setClientId(provider.awareness.clientID);
@@ -289,13 +289,13 @@ function useYjsProvider({ config }) {
289
289
  if (!config) {
290
290
  return;
291
291
  }
292
- const roomId = chunkSDOQKSKI_js.validateRoomId(config.roomId);
293
- const transport = config.transport ?? chunkSDOQKSKI_js.resolveTransportForServerUrl(config.serverUrl);
292
+ const roomId = chunk35YJ5RLU_js.validateRoomId(config.roomId);
293
+ const transport = config.transport ?? chunk35YJ5RLU_js.resolveTransportForServerUrl(config.serverUrl);
294
294
  if (transport === "webrtc") {
295
295
  await initWebrtc();
296
296
  return;
297
297
  }
298
- if (chunkSDOQKSKI_js.isMixedContentBlocked(config.serverUrl)) {
298
+ if (chunk35YJ5RLU_js.isMixedContentBlocked(config.serverUrl)) {
299
299
  console.warn(
300
300
  `[pptx-viewer] Refusing to connect: insecure ws:// server "${config.serverUrl}" is blocked from a secure (https) page. Use a wss:// URL.`
301
301
  );
@@ -309,7 +309,7 @@ function useYjsProvider({ config }) {
309
309
  const provider = new WebsocketProvider(config.serverUrl, roomId, yDoc, {
310
310
  params: config.authToken ? { token: config.authToken } : void 0
311
311
  });
312
- departureRef.current = chunkSDOQKSKI_js.createDepartureChannel(roomId, provider.awareness);
312
+ departureRef.current = chunk35YJ5RLU_js.createDepartureChannel(roomId, provider.awareness);
313
313
  let connected = false;
314
314
  const handleStatus = (event) => {
315
315
  if (event.status === "connected") {
@@ -349,7 +349,7 @@ function useYjsProvider({ config }) {
349
349
  provider.off("status", handleStatus);
350
350
  provider.off("sync", handleSynced);
351
351
  announceDeparture();
352
- chunkSDOQKSKI_js.clearLocalAwareness(provider.awareness);
352
+ chunk35YJ5RLU_js.clearLocalAwareness(provider.awareness);
353
353
  provider.destroy();
354
354
  yDoc.destroy();
355
355
  setDoc(null);
@@ -358,7 +358,7 @@ function useYjsProvider({ config }) {
358
358
  cleanupRef.current = null;
359
359
  setStatus("error");
360
360
  }
361
- }, chunkSDOQKSKI_js.CONNECTION_TIMEOUT_MS);
361
+ }, chunk35YJ5RLU_js.CONNECTION_TIMEOUT_MS);
362
362
  }
363
363
  setDoc(yDoc);
364
364
  setAwareness(provider.awareness);
@@ -367,7 +367,7 @@ function useYjsProvider({ config }) {
367
367
  provider.off("status", handleStatus);
368
368
  provider.off("sync", handleSynced);
369
369
  announceDeparture();
370
- chunkSDOQKSKI_js.clearLocalAwareness(provider.awareness);
370
+ chunk35YJ5RLU_js.clearLocalAwareness(provider.awareness);
371
371
  provider.destroy();
372
372
  yDoc.destroy();
373
373
  setDoc(null);
@@ -393,7 +393,7 @@ function useYjsProvider({ config }) {
393
393
  ]);
394
394
  react.useEffect(() => {
395
395
  init();
396
- const disposeTeardown = chunkSDOQKSKI_js.registerCollaborationTeardown({
396
+ const disposeTeardown = chunk35YJ5RLU_js.registerCollaborationTeardown({
397
397
  leave: teardown,
398
398
  rejoin: init
399
399
  });
@@ -414,7 +414,7 @@ function useCollaborativeState({
414
414
  canvasWidth,
415
415
  canvasHeight
416
416
  }) {
417
- const userColor = chunkSDOQKSKI_js.sanitizeColor(config?.userColor, "#6366f1");
417
+ const userColor = chunk35YJ5RLU_js.sanitizeColor(config?.userColor, "#6366f1");
418
418
  const { status, awareness, doc, clientId, synced, retry } = useYjsProvider({ config });
419
419
  const { remoteUsers, broadcastPresence } = usePresenceTracking({
420
420
  awareness,
@@ -532,8 +532,8 @@ function useEditorHistory(input) {
532
532
  width: canvasSize.width,
533
533
  height: canvasSize.height,
534
534
  activeSlideIndex,
535
- slides: slides.map(chunkSDOQKSKI_js.cloneSlide),
536
- templateElementsBySlideId: chunkSDOQKSKI_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
535
+ slides: slides.map(chunk35YJ5RLU_js.cloneSlide),
536
+ templateElementsBySlideId: chunk35YJ5RLU_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
537
537
  ...actionLabel ? { actionLabel } : {}
538
538
  };
539
539
  },
@@ -546,9 +546,9 @@ function useEditorHistory(input) {
546
546
  width: snapshot.width,
547
547
  height: snapshot.height
548
548
  });
549
- setSlides(snapshot.slides.map(chunkSDOQKSKI_js.cloneSlide));
549
+ setSlides(snapshot.slides.map(chunk35YJ5RLU_js.cloneSlide));
550
550
  setTemplateElementsBySlideId(
551
- chunkSDOQKSKI_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
551
+ chunk35YJ5RLU_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
552
552
  );
553
553
  setActiveSlideIndex(Math.min(snapshot.activeSlideIndex, maxSlideIndex));
554
554
  setSelectedElementIds([]);
@@ -587,8 +587,8 @@ function useEditorHistory(input) {
587
587
  const currentSnapshot = buildHistorySnapshot();
588
588
  historyFutureRef.current.push(currentSnapshot);
589
589
  isApplyingHistoryRef.current = true;
590
- const nextSnapshot = chunkXMLPTDPM_js.cloneHistorySnapshot(previousSnapshot);
591
- lastHistorySnapshotRef.current = chunkXMLPTDPM_js.cloneHistorySnapshot(nextSnapshot);
590
+ const nextSnapshot = chunkUU6NFFRR_js.cloneHistorySnapshot(previousSnapshot);
591
+ lastHistorySnapshotRef.current = chunkUU6NFFRR_js.cloneHistorySnapshot(nextSnapshot);
592
592
  lastHistorySerializedRef.current = serializeDocument(nextSnapshot);
593
593
  applyHistorySnapshot(nextSnapshot);
594
594
  updateHistoryAvailability();
@@ -609,8 +609,8 @@ function useEditorHistory(input) {
609
609
  const currentSnapshot = buildHistorySnapshot();
610
610
  historyPastRef.current.push(currentSnapshot);
611
611
  isApplyingHistoryRef.current = true;
612
- const targetSnapshot = chunkXMLPTDPM_js.cloneHistorySnapshot(nextSnapshot);
613
- lastHistorySnapshotRef.current = chunkXMLPTDPM_js.cloneHistorySnapshot(targetSnapshot);
612
+ const targetSnapshot = chunkUU6NFFRR_js.cloneHistorySnapshot(nextSnapshot);
613
+ lastHistorySnapshotRef.current = chunkUU6NFFRR_js.cloneHistorySnapshot(targetSnapshot);
614
614
  lastHistorySerializedRef.current = serializeDocument(targetSnapshot);
615
615
  applyHistorySnapshot(targetSnapshot);
616
616
  updateHistoryAvailability();
@@ -628,7 +628,7 @@ function useEditorHistory(input) {
628
628
  historyPastRef.current = [];
629
629
  historyFutureRef.current = [];
630
630
  if (initialSnapshot) {
631
- const clonedInitial = chunkXMLPTDPM_js.cloneHistorySnapshot(initialSnapshot);
631
+ const clonedInitial = chunkUU6NFFRR_js.cloneHistorySnapshot(initialSnapshot);
632
632
  lastHistorySnapshotRef.current = clonedInitial;
633
633
  lastHistorySerializedRef.current = serializeDocument(clonedInitial);
634
634
  } else {
@@ -676,19 +676,19 @@ function useEditorHistory(input) {
676
676
  }
677
677
  const previousSnapshot = lastHistorySnapshotRef.current;
678
678
  if (!previousSnapshot) {
679
- lastHistorySnapshotRef.current = chunkXMLPTDPM_js.cloneHistorySnapshot(snapshot);
679
+ lastHistorySnapshotRef.current = chunkUU6NFFRR_js.cloneHistorySnapshot(snapshot);
680
680
  lastHistorySerializedRef.current = serialized;
681
681
  lastCheapHashRef.current = cheapHash;
682
682
  updateHistoryAvailability();
683
683
  return;
684
684
  }
685
685
  onDirtyRef.current?.();
686
- historyPastRef.current.push(chunkXMLPTDPM_js.cloneHistorySnapshot(previousSnapshot));
686
+ historyPastRef.current.push(chunkUU6NFFRR_js.cloneHistorySnapshot(previousSnapshot));
687
687
  while (historyPastRef.current.length > Math.max(1, maxHistoryEntries)) {
688
688
  historyPastRef.current.shift();
689
689
  }
690
690
  historyFutureRef.current = [];
691
- lastHistorySnapshotRef.current = chunkXMLPTDPM_js.cloneHistorySnapshot(snapshot);
691
+ lastHistorySnapshotRef.current = chunkUU6NFFRR_js.cloneHistorySnapshot(snapshot);
692
692
  lastHistorySerializedRef.current = serialized;
693
693
  lastCheapHashRef.current = cheapHash;
694
694
  updateHistoryAvailability();
@@ -748,9 +748,9 @@ function useZoomViewport({
748
748
  const canvasStageRef = react.useRef(null);
749
749
  const canvasViewportRef = react.useRef(null);
750
750
  const renderScaleRef = react.useRef(1);
751
- const wheelBufferRef = react.useRef(chunkSDOQKSKI_js.createWheelStepBuffer());
751
+ const wheelBufferRef = react.useRef(chunk35YJ5RLU_js.createWheelStepBuffer());
752
752
  const storeRef = react.useRef(null);
753
- storeRef.current ??= chunkSDOQKSKI_js.createViewerZoomStore();
753
+ storeRef.current ??= chunk35YJ5RLU_js.createViewerZoomStore();
754
754
  const store = storeRef.current;
755
755
  const scale = useViewerStore(store, selectZoom);
756
756
  const setScale = react.useCallback(
@@ -811,7 +811,7 @@ function useZoomViewport({
811
811
  if (!wrapper || !canvasViewport) {
812
812
  return;
813
813
  }
814
- const boundedScale = chunkSDOQKSKI_js.clampZoomScale(nextScale);
814
+ const boundedScale = chunk35YJ5RLU_js.clampZoomScale(nextScale);
815
815
  const nextEditorScale = fitScale * boundedScale;
816
816
  const centerX = (bounds.minX + bounds.maxX) / 2;
817
817
  const centerY = (bounds.minY + bounds.maxY) / 2;
@@ -848,29 +848,29 @@ function useZoomViewport({
848
848
  selectedElements.forEach((element) => {
849
849
  minX = Math.min(minX, element.x);
850
850
  minY = Math.min(minY, element.y);
851
- maxX = Math.max(maxX, element.x + Math.max(element.width, chunkXMLPTDPM_js.MIN_ELEMENT_SIZE));
852
- maxY = Math.max(maxY, element.y + Math.max(element.height, chunkXMLPTDPM_js.MIN_ELEMENT_SIZE));
851
+ maxX = Math.max(maxX, element.x + Math.max(element.width, chunkUU6NFFRR_js.MIN_ELEMENT_SIZE));
852
+ maxY = Math.max(maxY, element.y + Math.max(element.height, chunkUU6NFFRR_js.MIN_ELEMENT_SIZE));
853
853
  });
854
854
  if (!Number.isFinite(minX) || !Number.isFinite(minY) || !Number.isFinite(maxX) || !Number.isFinite(maxY)) {
855
855
  return;
856
856
  }
857
857
  const selectionBounds = { minX, minY, maxX, maxY };
858
- const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkXMLPTDPM_js.MIN_ELEMENT_SIZE);
859
- const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkXMLPTDPM_js.MIN_ELEMENT_SIZE);
858
+ const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkUU6NFFRR_js.MIN_ELEMENT_SIZE);
859
+ const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkUU6NFFRR_js.MIN_ELEMENT_SIZE);
860
860
  const availableWidth = Math.max(
861
- effectiveEditorDimensions.width - chunkXMLPTDPM_js.ZOOM_TO_SELECTION_PADDING,
862
- chunkXMLPTDPM_js.MIN_ELEMENT_SIZE
861
+ effectiveEditorDimensions.width - chunkUU6NFFRR_js.ZOOM_TO_SELECTION_PADDING,
862
+ chunkUU6NFFRR_js.MIN_ELEMENT_SIZE
863
863
  );
864
864
  const availableHeight = Math.max(
865
- effectiveEditorDimensions.height - chunkXMLPTDPM_js.ZOOM_TO_SELECTION_PADDING,
866
- chunkXMLPTDPM_js.MIN_ELEMENT_SIZE
865
+ effectiveEditorDimensions.height - chunkUU6NFFRR_js.ZOOM_TO_SELECTION_PADDING,
866
+ chunkUU6NFFRR_js.MIN_ELEMENT_SIZE
867
867
  );
868
868
  const targetEditorScale = Math.min(
869
869
  availableWidth / boundsWidth,
870
870
  availableHeight / boundsHeight
871
871
  );
872
872
  const safeFitScale = fitScale > Number.EPSILON ? fitScale : Number.EPSILON;
873
- const nextScale = chunkSDOQKSKI_js.clampZoomScale(targetEditorScale / safeFitScale);
873
+ const nextScale = chunk35YJ5RLU_js.clampZoomScale(targetEditorScale / safeFitScale);
874
874
  setScale(nextScale);
875
875
  window.requestAnimationFrame(() => {
876
876
  window.requestAnimationFrame(() => {
@@ -887,14 +887,14 @@ function useZoomViewport({
887
887
  ]);
888
888
  const handleWheel = react.useCallback(
889
889
  (event) => {
890
- const mapped = chunkSDOQKSKI_js.mapEditingWheel(event, wheelBufferRef.current, true);
890
+ const mapped = chunk35YJ5RLU_js.mapEditingWheel(event, wheelBufferRef.current, true);
891
891
  if (mapped.intent !== "zoom") {
892
892
  return;
893
893
  }
894
894
  event.preventDefault();
895
895
  store.dispatch({
896
896
  type: "set-zoom",
897
- zoom: chunkSDOQKSKI_js.clampZoomScale(store.getState().zoom + mapped.deltaScale)
897
+ zoom: chunk35YJ5RLU_js.clampZoomScale(store.getState().zoom + mapped.deltaScale)
898
898
  });
899
899
  },
900
900
  [store]
@@ -982,7 +982,7 @@ function applyAnimationGroupSteps(group, onPlayActionSound, setPresentationEleme
982
982
  const command = step.command;
983
983
  const timer = window.setTimeout(
984
984
  () => {
985
- chunkXMLPTDPM_js.executeMediaCommand(command);
985
+ chunkUU6NFFRR_js.executeMediaCommand(command);
986
986
  },
987
987
  Math.max(0, step.delayMs)
988
988
  );
@@ -1119,7 +1119,7 @@ function scheduleEntranceAnimationTimers(slide, setPresentationAnimations, prese
1119
1119
  }))
1120
1120
  );
1121
1121
  entranceAnimations.forEach((animation, animationIndex) => {
1122
- const delay = chunkSDOQKSKI_js.computeEntranceAnimationDelay(animation.delayMs, animationIndex);
1122
+ const delay = chunk35YJ5RLU_js.computeEntranceAnimationDelay(animation.delayMs, animationIndex);
1123
1123
  const timer = window.setTimeout(() => {
1124
1124
  setPresentationAnimations(
1125
1125
  (previousAnimations) => previousAnimations.map(
@@ -1151,7 +1151,7 @@ function useAnimationPlayback(input) {
1151
1151
  (controller, group) => {
1152
1152
  driveBuildReveal(
1153
1153
  controller,
1154
- chunkSDOQKSKI_js.PresentationAnimationController.collectBuildStepIds(group),
1154
+ chunk35YJ5RLU_js.PresentationAnimationController.collectBuildStepIds(group),
1155
1155
  setPresentationElementStates,
1156
1156
  buildRafRef
1157
1157
  );
@@ -1220,7 +1220,7 @@ function useAnimationPlayback(input) {
1220
1220
  setHoverTriggerShapeIds(/* @__PURE__ */ new Set());
1221
1221
  return;
1222
1222
  }
1223
- const controller = chunkSDOQKSKI_js.PresentationAnimationController.fromSlide(slide);
1223
+ const controller = chunk35YJ5RLU_js.PresentationAnimationController.fromSlide(slide);
1224
1224
  controllerRef.current = controller;
1225
1225
  setPresentationKeyframesCss(controller.keyframesCss);
1226
1226
  setInteractiveTriggerShapeIds(controller.interactiveTriggerShapeIds);
@@ -1378,12 +1378,12 @@ function useAnimationPlayback(input) {
1378
1378
  presentationTimersRef
1379
1379
  };
1380
1380
  }
1381
- var PRESENTER_CHANNEL_NAME = chunkSDOQKSKI_js.PRESENTATION_CHANNEL_NAME;
1382
- var AUDIENCE_HASH = chunkSDOQKSKI_js.PRESENTATION_HASH;
1383
- var PRESENTER_MSG_ORIGIN = chunkSDOQKSKI_js.PRESENTATION_MESSAGE_ORIGIN;
1384
- var AUDIENCE_NONCE_KEY = chunkSDOQKSKI_js.PRESENTATION_NONCE_KEY;
1381
+ var PRESENTER_CHANNEL_NAME = chunk35YJ5RLU_js.PRESENTATION_CHANNEL_NAME;
1382
+ var AUDIENCE_HASH = chunk35YJ5RLU_js.PRESENTATION_HASH;
1383
+ var PRESENTER_MSG_ORIGIN = chunk35YJ5RLU_js.PRESENTATION_MESSAGE_ORIGIN;
1384
+ var AUDIENCE_NONCE_KEY = chunk35YJ5RLU_js.PRESENTATION_NONCE_KEY;
1385
1385
  function generateSessionId() {
1386
- return chunkSDOQKSKI_js.createPresentationSessionId();
1386
+ return chunk35YJ5RLU_js.createPresentationSessionId();
1387
1387
  }
1388
1388
  function parseAudienceNonce() {
1389
1389
  const hash = window.location.hash;
@@ -1419,7 +1419,7 @@ function usePresenterWindow(input) {
1419
1419
  }, []);
1420
1420
  const swapDisplays = react.useCallback(async () => {
1421
1421
  const audience = audienceWindowRef.current;
1422
- return audience && !audience.closed ? chunkSDOQKSKI_js.swapPresentationWindows(window, audience) : false;
1422
+ return audience && !audience.closed ? chunk35YJ5RLU_js.swapPresentationWindows(window, audience) : false;
1423
1423
  }, []);
1424
1424
  const syncSlideToAudience = react.useCallback(
1425
1425
  (slideIndex) => {
@@ -1483,7 +1483,7 @@ function usePresenterWindow(input) {
1483
1483
  pollTimerRef.current = null;
1484
1484
  }
1485
1485
  if (closingSessionId) {
1486
- void chunkSDOQKSKI_js.clearAudienceContent(closingSessionId);
1486
+ void chunk35YJ5RLU_js.clearAudienceContent(closingSessionId);
1487
1487
  }
1488
1488
  }, [getChannel]);
1489
1489
  const openAudienceWindow = react.useCallback(() => {
@@ -1501,10 +1501,10 @@ function usePresenterWindow(input) {
1501
1501
  audienceWindowRef.current = blankWin;
1502
1502
  const sessionId = generateSessionId();
1503
1503
  sessionIdRef.current = sessionId;
1504
- const audienceUrl = chunkSDOQKSKI_js.buildPresentationAudienceUrl(window.location.href, sessionId);
1505
- void chunkSDOQKSKI_js.resolveAudienceScreenPlacement(window).then((placement) => {
1504
+ const audienceUrl = chunk35YJ5RLU_js.buildPresentationAudienceUrl(window.location.href, sessionId);
1505
+ void chunk35YJ5RLU_js.resolveAudienceScreenPlacement(window).then((placement) => {
1506
1506
  if (placement && audienceWindowRef.current === blankWin && !blankWin.closed) {
1507
- chunkSDOQKSKI_js.placeAudienceWindow(blankWin, placement);
1507
+ chunk35YJ5RLU_js.placeAudienceWindow(blankWin, placement);
1508
1508
  }
1509
1509
  return void 0;
1510
1510
  });
@@ -1534,7 +1534,7 @@ function usePresenterWindow(input) {
1534
1534
  }
1535
1535
  };
1536
1536
  if (content) {
1537
- void chunkSDOQKSKI_js.storeAudienceContent(content, sessionId).then(() => navigateOrClose(true)).catch(() => navigateOrClose(false));
1537
+ void chunk35YJ5RLU_js.storeAudienceContent(content, sessionId).then(() => navigateOrClose(true)).catch(() => navigateOrClose(false));
1538
1538
  } else {
1539
1539
  navigateOrClose(true);
1540
1540
  }
@@ -1560,7 +1560,7 @@ function usePresenterWindow(input) {
1560
1560
  }
1561
1561
  const handleMessage = (event) => {
1562
1562
  const message = event.data;
1563
- if (chunkSDOQKSKI_js.isPresentationSessionMessage(message) && message.type === "audience-ready" && message.sessionId === sessionIdRef.current) {
1563
+ if (chunk35YJ5RLU_js.isPresentationSessionMessage(message) && message.type === "audience-ready" && message.sessionId === sessionIdRef.current) {
1564
1564
  syncStateToAudience(snapshotRef.current);
1565
1565
  }
1566
1566
  };
@@ -1589,7 +1589,7 @@ function usePresenterWindow(input) {
1589
1589
  react.useEffect(() => {
1590
1590
  const handleBeforeUnload = () => {
1591
1591
  if (sessionIdRef.current) {
1592
- void chunkSDOQKSKI_js.clearAudienceContent(sessionIdRef.current);
1592
+ void chunk35YJ5RLU_js.clearAudienceContent(sessionIdRef.current);
1593
1593
  }
1594
1594
  };
1595
1595
  window.addEventListener("beforeunload", handleBeforeUnload);
@@ -1651,7 +1651,7 @@ function useAudienceMode(input) {
1651
1651
  }
1652
1652
  channel.onmessage = (event) => {
1653
1653
  const data = event.data;
1654
- if (!chunkSDOQKSKI_js.isPresentationSessionMessage(data) || data.origin !== PRESENTER_MSG_ORIGIN) {
1654
+ if (!chunk35YJ5RLU_js.isPresentationSessionMessage(data) || data.origin !== PRESENTER_MSG_ORIGIN) {
1655
1655
  return;
1656
1656
  }
1657
1657
  if (expectedSessionId && data.sessionId !== expectedSessionId) {
@@ -1667,16 +1667,16 @@ function useAudienceMode(input) {
1667
1667
  }
1668
1668
  if (data.type === "presenter-exit") {
1669
1669
  if (expectedSessionId) {
1670
- void chunkSDOQKSKI_js.clearAudienceContent(expectedSessionId);
1670
+ void chunk35YJ5RLU_js.clearAudienceContent(expectedSessionId);
1671
1671
  }
1672
- if (chunkSDOQKSKI_js.endAudienceDisplay(window)) {
1672
+ if (chunk35YJ5RLU_js.endAudienceDisplay(window)) {
1673
1673
  handlers.onPresenterEnded?.();
1674
1674
  }
1675
1675
  }
1676
1676
  };
1677
1677
  if (expectedSessionId) {
1678
1678
  channel.postMessage({
1679
- origin: chunkSDOQKSKI_js.PRESENTATION_MESSAGE_ORIGIN,
1679
+ origin: chunk35YJ5RLU_js.PRESENTATION_MESSAGE_ORIGIN,
1680
1680
  type: "audience-ready",
1681
1681
  sessionId: expectedSessionId
1682
1682
  });
@@ -1690,7 +1690,7 @@ function useAudienceMode(input) {
1690
1690
  }, []);
1691
1691
  }
1692
1692
  function usePresentationKeyboard(input) {
1693
- const wheelBufferRef = react.useRef(chunkSDOQKSKI_js.createWheelStepBuffer());
1693
+ const wheelBufferRef = react.useRef(chunk35YJ5RLU_js.createWheelStepBuffer());
1694
1694
  const {
1695
1695
  mode,
1696
1696
  movePresentationSlide,
@@ -1711,14 +1711,14 @@ function usePresentationKeyboard(input) {
1711
1711
  presentationSlideIndex,
1712
1712
  setShowRehearsalSummary
1713
1713
  } = input;
1714
- const keyBufferRef = react.useRef(chunkSDOQKSKI_js.createPresentationKeyBuffer());
1714
+ const keyBufferRef = react.useRef(chunk35YJ5RLU_js.createPresentationKeyBuffer());
1715
1715
  react.useEffect(() => {
1716
- if (mode !== "present" || !chunkSDOQKSKI_js.acceptsPresentationInput()) {
1717
- keyBufferRef.current = chunkSDOQKSKI_js.createPresentationKeyBuffer();
1716
+ if (mode !== "present" || !chunk35YJ5RLU_js.acceptsPresentationInput()) {
1717
+ keyBufferRef.current = chunk35YJ5RLU_js.createPresentationKeyBuffer();
1718
1718
  return;
1719
1719
  }
1720
1720
  const handleKeyDown = (event) => {
1721
- const mapped = chunkSDOQKSKI_js.mapPresentationKey(event, keyBufferRef.current);
1721
+ const mapped = chunk35YJ5RLU_js.mapPresentationKey(event, keyBufferRef.current);
1722
1722
  if (mapped.action === "none") {
1723
1723
  return;
1724
1724
  }
@@ -1738,12 +1738,12 @@ function usePresentationKeyboard(input) {
1738
1738
  movePresentationSlide(-1);
1739
1739
  return;
1740
1740
  case "first": {
1741
- const first = chunkSDOQKSKI_js.firstShowSlideIndex(showSlideIndexes);
1741
+ const first = chunk35YJ5RLU_js.firstShowSlideIndex(showSlideIndexes);
1742
1742
  navigateToSlide(first ?? 0);
1743
1743
  return;
1744
1744
  }
1745
1745
  case "last": {
1746
- const last = chunkSDOQKSKI_js.lastShowSlideIndex(showSlideIndexes);
1746
+ const last = chunk35YJ5RLU_js.lastShowSlideIndex(showSlideIndexes);
1747
1747
  navigateToSlide(last ?? Math.max(0, slideCount - 1));
1748
1748
  return;
1749
1749
  }
@@ -1781,10 +1781,10 @@ function usePresentationKeyboard(input) {
1781
1781
  }
1782
1782
  };
1783
1783
  const handleWheel = (event) => {
1784
- if (mode !== "present" || !chunkSDOQKSKI_js.acceptsPresentationInput()) {
1784
+ if (mode !== "present" || !chunk35YJ5RLU_js.acceptsPresentationInput()) {
1785
1785
  return;
1786
1786
  }
1787
- const mapped = chunkSDOQKSKI_js.mapPresentationWheel(event, wheelBufferRef.current);
1787
+ const mapped = chunk35YJ5RLU_js.mapPresentationWheel(event, wheelBufferRef.current);
1788
1788
  if (mapped.intent === "next-slide") {
1789
1789
  event.preventDefault();
1790
1790
  movePresentationSlide(1);
@@ -1917,7 +1917,7 @@ function useRehearsalTimings(input) {
1917
1917
 
1918
1918
  // src/viewer/hooks/presentation-mode/presentation-actions.ts
1919
1919
  function handlePresentationActionImpl(action, deps) {
1920
- chunkSDOQKSKI_js.runPresentationAction(
1920
+ chunk35YJ5RLU_js.runPresentationAction(
1921
1921
  action,
1922
1922
  { slideCount: deps.slidesLength },
1923
1923
  {
@@ -1939,7 +1939,7 @@ function handlePresentationActionImpl(action, deps) {
1939
1939
  function executeSlideTransition(nextSlideIndex, deps) {
1940
1940
  const incomingSlide = deps.slides[nextSlideIndex];
1941
1941
  const transition = incomingSlide?.transition;
1942
- const durationMs = deps.playTransition ? chunkSDOQKSKI_js.resolveTransitionDurationMs(transition) : 0;
1942
+ const durationMs = deps.playTransition ? chunk35YJ5RLU_js.resolveTransitionDurationMs(transition) : 0;
1943
1943
  deps.clearPresentationTimers();
1944
1944
  deps.setPresentationSlideIndex(nextSlideIndex);
1945
1945
  deps.onSetActiveSlideIndex(nextSlideIndex);
@@ -1998,7 +1998,7 @@ function useSlideNavigation(input) {
1998
1998
  });
1999
1999
  const scheduleAutoAdvanceForSlide = react.useCallback(
2000
2000
  (slideIndex) => {
2001
- const delayMs = chunkSDOQKSKI_js.resolveAutoAdvanceDelayMs(slides[slideIndex], { useTimings });
2001
+ const delayMs = chunk35YJ5RLU_js.resolveAutoAdvanceDelayMs(slides[slideIndex], { useTimings });
2002
2002
  if (delayMs === void 0) {
2003
2003
  return;
2004
2004
  }
@@ -2021,7 +2021,7 @@ function useSlideNavigation(input) {
2021
2021
  if (availableSlideIndexes.length === 0) {
2022
2022
  return;
2023
2023
  }
2024
- const pastLastSlide = direction === 1 && !chunkSDOQKSKI_js.hasShowSlideAfter(presentationSlideIndex, availableSlideIndexes);
2024
+ const pastLastSlide = direction === 1 && !chunk35YJ5RLU_js.hasShowSlideAfter(presentationSlideIndex, availableSlideIndexes);
2025
2025
  if (rehearsing && pastLastSlide) {
2026
2026
  recordCurrentSlideTime(presentationSlideIndex);
2027
2027
  try {
@@ -2039,9 +2039,9 @@ function useSlideNavigation(input) {
2039
2039
  onAdvancePastLastSlide();
2040
2040
  return;
2041
2041
  }
2042
- const nextSlideIndex = direction === 1 ? chunkSDOQKSKI_js.nextShowSlideIndex(presentationSlideIndex, availableSlideIndexes, {
2042
+ const nextSlideIndex = direction === 1 ? chunk35YJ5RLU_js.nextShowSlideIndex(presentationSlideIndex, availableSlideIndexes, {
2043
2043
  loop: Boolean(loopContinuously) && !rehearsing
2044
- }) : chunkSDOQKSKI_js.previousShowSlideIndex(presentationSlideIndex, availableSlideIndexes);
2044
+ }) : chunk35YJ5RLU_js.previousShowSlideIndex(presentationSlideIndex, availableSlideIndexes);
2045
2045
  if (nextSlideIndex === void 0 || nextSlideIndex === presentationSlideIndex) {
2046
2046
  return;
2047
2047
  }
@@ -2186,22 +2186,22 @@ function useZoomNavigation(input) {
2186
2186
  };
2187
2187
  }
2188
2188
  function usePresenterConsole(slideIndex, active) {
2189
- const timerRef = react.useRef(chunkSDOQKSKI_js.createPresenterTimer());
2190
- const [snapshot, setSnapshot] = react.useState(() => chunkSDOQKSKI_js.createInitialPresentationSnapshot(slideIndex));
2189
+ const timerRef = react.useRef(chunk35YJ5RLU_js.createPresenterTimer());
2190
+ const [snapshot, setSnapshot] = react.useState(() => chunk35YJ5RLU_js.createInitialPresentationSnapshot(slideIndex));
2191
2191
  const patch = react.useCallback((value) => {
2192
- setSnapshot((current) => chunkSDOQKSKI_js.mergePresentationSnapshot(current, value));
2192
+ setSnapshot((current) => chunk35YJ5RLU_js.mergePresentationSnapshot(current, value));
2193
2193
  }, []);
2194
2194
  react.useEffect(() => patch({ slideIndex }), [patch, slideIndex]);
2195
2195
  react.useEffect(() => {
2196
2196
  if (!active) {
2197
2197
  return;
2198
2198
  }
2199
- timerRef.current = chunkSDOQKSKI_js.resetPresenterTimer();
2199
+ timerRef.current = chunk35YJ5RLU_js.resetPresenterTimer();
2200
2200
  patch({ paused: false, elapsedMs: 0 });
2201
2201
  const timer = window.setInterval(() => {
2202
2202
  patch({
2203
2203
  paused: timerRef.current.paused,
2204
- elapsedMs: chunkSDOQKSKI_js.presenterElapsed(timerRef.current)
2204
+ elapsedMs: chunk35YJ5RLU_js.presenterElapsed(timerRef.current)
2205
2205
  });
2206
2206
  }, 1e3);
2207
2207
  return () => window.clearInterval(timer);
@@ -2211,19 +2211,19 @@ function usePresenterConsole(slideIndex, active) {
2211
2211
  applyAudienceSnapshot: setSnapshot,
2212
2212
  setBlackout: (blackout) => patch({ blackout }),
2213
2213
  toggleTimer: () => {
2214
- timerRef.current = chunkSDOQKSKI_js.togglePresenterTimer(timerRef.current);
2214
+ timerRef.current = chunk35YJ5RLU_js.togglePresenterTimer(timerRef.current);
2215
2215
  patch({
2216
2216
  paused: timerRef.current.paused,
2217
- elapsedMs: chunkSDOQKSKI_js.presenterElapsed(timerRef.current)
2217
+ elapsedMs: chunk35YJ5RLU_js.presenterElapsed(timerRef.current)
2218
2218
  });
2219
2219
  },
2220
2220
  resetTimer: () => {
2221
- timerRef.current = chunkSDOQKSKI_js.resetPresenterTimer();
2221
+ timerRef.current = chunk35YJ5RLU_js.resetPresenterTimer();
2222
2222
  patch({ paused: false, elapsedMs: 0 });
2223
2223
  },
2224
2224
  stepZoom: (direction) => setSnapshot(
2225
- (current) => chunkSDOQKSKI_js.mergePresentationSnapshot(current, {
2226
- zoom: chunkSDOQKSKI_js.stepPresenterZoom(
2225
+ (current) => chunk35YJ5RLU_js.mergePresentationSnapshot(current, {
2226
+ zoom: chunk35YJ5RLU_js.stepPresenterZoom(
2227
2227
  current.zoom ?? { scale: 1, originX: 0.5, originY: 0.5 },
2228
2228
  direction
2229
2229
  )
@@ -2269,7 +2269,7 @@ function usePresentationMode(input) {
2269
2269
  const [allSlidesOpen, setAllSlidesOpen] = react.useState(false);
2270
2270
  const [endOfShowVisible, setEndOfShowVisible] = react.useState(false);
2271
2271
  const [presentationStartTime, setPresentationStartTime] = react.useState(null);
2272
- const showGuard = react.useMemo(() => chunkSDOQKSKI_js.createPresenterShowGuard(), []);
2272
+ const showGuard = react.useMemo(() => chunk35YJ5RLU_js.createPresenterShowGuard(), []);
2273
2273
  const {
2274
2274
  presentationAnimations,
2275
2275
  presentationElementStates,
@@ -2348,7 +2348,7 @@ function usePresentationMode(input) {
2348
2348
  });
2349
2349
  const movePresentationSlide = react.useCallback(
2350
2350
  (direction, trigger = "explicit") => {
2351
- if (!chunkSDOQKSKI_js.acceptsPresentationInput()) {
2351
+ if (!chunk35YJ5RLU_js.acceptsPresentationInput()) {
2352
2352
  return;
2353
2353
  }
2354
2354
  if (endOfShowVisible) {
@@ -2486,7 +2486,7 @@ function usePresentationMode(input) {
2486
2486
  if (mode !== "present") {
2487
2487
  return;
2488
2488
  }
2489
- return chunkSDOQKSKI_js.attachPresentationVisibilityPause({
2489
+ return chunk35YJ5RLU_js.attachPresentationVisibilityPause({
2490
2490
  root: containerRef.current ?? void 0,
2491
2491
  onHidden: () => clearPresentationTimersRef.current(),
2492
2492
  onVisible: () => scheduleAutoAdvanceRef.current(presentationSlideIndexRef.current)
@@ -2566,11 +2566,11 @@ function usePresentationMode(input) {
2566
2566
  if (!transitionOverlay || transitionOverlay.transition.type !== "morph") {
2567
2567
  return void 0;
2568
2568
  }
2569
- return chunkSDOQKSKI_js.buildMorphTransitionPlan(
2569
+ return chunk35YJ5RLU_js.buildMorphTransitionPlan(
2570
2570
  slides[transitionOverlay.outgoingSlideIndex],
2571
2571
  slides[transitionOverlay.incomingSlideIndex],
2572
2572
  transitionOverlay.durationMs,
2573
- chunkSDOQKSKI_js.morphOptionToMode(transitionOverlay.transition.morphOption)
2573
+ chunk35YJ5RLU_js.morphOptionToMode(transitionOverlay.transition.morphOption)
2574
2574
  );
2575
2575
  }, [transitionOverlay, slides]);
2576
2576
  const morphedElementStates = react.useMemo(() => {
@@ -2591,7 +2591,7 @@ function usePresentationMode(input) {
2591
2591
  if (!morphPlan) {
2592
2592
  return presentationKeyframesCss;
2593
2593
  }
2594
- const imageRules = chunkSDOQKSKI_js.buildMorphAnimationRules(morphPlan, "", "incoming", "image");
2594
+ const imageRules = chunk35YJ5RLU_js.buildMorphAnimationRules(morphPlan, "", "incoming", "image");
2595
2595
  return `${presentationKeyframesCss ?? ""}
2596
2596
  ${morphPlan.keyframesCss}
2597
2597
  ${imageRules}`;
@@ -2887,7 +2887,7 @@ function useFindReplace({
2887
2887
  const [findResults, setFindResults] = react.useState([]);
2888
2888
  const [findResultIndex, setFindResultIndex] = react.useState(-1);
2889
2889
  const performFind = react.useCallback(() => {
2890
- const results = chunkSDOQKSKI_js.findInSlides(slides, findQuery, { matchCase: findMatchCase });
2890
+ const results = chunk35YJ5RLU_js.findInSlides(slides, findQuery, { matchCase: findMatchCase });
2891
2891
  if (!findQuery) {
2892
2892
  setFindResults([]);
2893
2893
  setFindResultIndex(-1);
@@ -2921,7 +2921,7 @@ function useFindReplace({
2921
2921
  return;
2922
2922
  }
2923
2923
  onUpdateSlides(
2924
- (prevSlides) => chunkSDOQKSKI_js.applyFindReplacements(prevSlides, toReplace, replaceQuery).slides
2924
+ (prevSlides) => chunk35YJ5RLU_js.applyFindReplacements(prevSlides, toReplace, replaceQuery).slides
2925
2925
  );
2926
2926
  onMarkDirty();
2927
2927
  },
@@ -2943,9 +2943,9 @@ function useFindReplace({
2943
2943
  }, [findResults, applyReplacements, performFind]);
2944
2944
  react.useEffect(() => {
2945
2945
  const handler = (event) => {
2946
- const { action } = chunkSDOQKSKI_js.mapEditorKey(event, {
2946
+ const { action } = chunk35YJ5RLU_js.mapEditorKey(event, {
2947
2947
  canEdit: mode === "edit",
2948
- isTextInputTarget: chunkSDOQKSKI_js.isEditorTextInputTarget(event.target)
2948
+ isTextInputTarget: chunk35YJ5RLU_js.isEditorTextInputTarget(event.target)
2949
2949
  });
2950
2950
  if (action !== "find") {
2951
2951
  return;
@@ -3024,7 +3024,7 @@ function addCommentToSlide(slides, slideIndex, text, authorName, elementId) {
3024
3024
  if (!slide) {
3025
3025
  return { slides, didAdd: false };
3026
3026
  }
3027
- const next = chunkSDOQKSKI_js.addCommentToList(
3027
+ const next = chunk35YJ5RLU_js.addCommentToList(
3028
3028
  slide.comments || [],
3029
3029
  text,
3030
3030
  authorName,
@@ -3042,7 +3042,7 @@ function removeCommentFromSlide(slides, slideIndex, commentId) {
3042
3042
  if (!slide) {
3043
3043
  return { slides, didDelete: false };
3044
3044
  }
3045
- const next = chunkSDOQKSKI_js.removeCommentFromList(slide.comments || [], commentId);
3045
+ const next = chunk35YJ5RLU_js.removeCommentFromList(slide.comments || [], commentId);
3046
3046
  if (!next) {
3047
3047
  return { slides, didDelete: false };
3048
3048
  }
@@ -3053,7 +3053,7 @@ function editCommentInSlide(slides, slideIndex, commentId, newText) {
3053
3053
  if (!slide) {
3054
3054
  return { slides, didUpdate: false };
3055
3055
  }
3056
- const next = chunkSDOQKSKI_js.editCommentInList(slide.comments || [], commentId, newText);
3056
+ const next = chunk35YJ5RLU_js.editCommentInList(slide.comments || [], commentId, newText);
3057
3057
  if (!next) {
3058
3058
  return { slides, didUpdate: false };
3059
3059
  }
@@ -3064,7 +3064,7 @@ function toggleResolvedInSlide(slides, slideIndex, commentId) {
3064
3064
  if (!slide) {
3065
3065
  return { slides, didUpdate: false };
3066
3066
  }
3067
- const next = chunkSDOQKSKI_js.toggleCommentResolvedInList(slide.comments || [], commentId);
3067
+ const next = chunk35YJ5RLU_js.toggleCommentResolvedInList(slide.comments || [], commentId);
3068
3068
  if (!next) {
3069
3069
  return { slides, didUpdate: false };
3070
3070
  }
@@ -3075,7 +3075,7 @@ function addReplyToSlide(slides, slideIndex, parentId, text, authorName) {
3075
3075
  if (!slide) {
3076
3076
  return { slides, didAdd: false };
3077
3077
  }
3078
- const next = chunkSDOQKSKI_js.replyToCommentInList(slide.comments || [], parentId, text, authorName);
3078
+ const next = chunk35YJ5RLU_js.replyToCommentInList(slide.comments || [], parentId, text, authorName);
3079
3079
  if (!next) {
3080
3080
  return { slides, didAdd: false };
3081
3081
  }
@@ -3449,7 +3449,7 @@ function useViewerCoreState(_input) {
3449
3449
  const marqueeStateRef = react.useRef(null);
3450
3450
  const isDrawingRef = react.useRef(false);
3451
3451
  const justInteractedRef = react.useRef(false);
3452
- const livePatcher = react.useMemo(() => chunkSDOQKSKI_js.createCollaborationLivePatcher(), []);
3452
+ const livePatcher = react.useMemo(() => chunk35YJ5RLU_js.createCollaborationLivePatcher(), []);
3453
3453
  react.useEffect(() => () => livePatcher.dispose(), [livePatcher]);
3454
3454
  const slidesRef = react.useRef([]);
3455
3455
  const [mode, setMode] = react.useState("edit");
@@ -3458,8 +3458,8 @@ function useViewerCoreState(_input) {
3458
3458
  const [slides, setSlides] = react.useState([]);
3459
3459
  const [templateElementsBySlideId, setTemplateElementsBySlideId] = react.useState({});
3460
3460
  const [canvasSize, setCanvasSize] = react.useState({
3461
- width: chunkXMLPTDPM_js.DEFAULT_CANVAS_WIDTH,
3462
- height: chunkXMLPTDPM_js.DEFAULT_CANVAS_HEIGHT
3461
+ width: chunkUU6NFFRR_js.DEFAULT_CANVAS_WIDTH,
3462
+ height: chunkUU6NFFRR_js.DEFAULT_CANVAS_HEIGHT
3463
3463
  });
3464
3464
  const [slideSizeEmu, setSlideSizeEmu] = react.useState();
3465
3465
  const [activeSlideIndex, setActiveSlideIndex] = react.useState(0);
@@ -3480,7 +3480,7 @@ function useViewerCoreState(_input) {
3480
3480
  const resolved = typeof value === "function" ? value(inlineEditingTextRef.current) : value;
3481
3481
  inlineEditingTextRef.current = resolved;
3482
3482
  setInlineEditingTextBase(value);
3483
- chunkSDOQKSKI_js.publishLiveInlineText(
3483
+ chunk35YJ5RLU_js.publishLiveInlineText(
3484
3484
  livePatcher,
3485
3485
  slidesRef.current[activeSlideIndexRef.current],
3486
3486
  inlineEditingElementIdRef.current,
@@ -3823,7 +3823,7 @@ function useLoadContent({
3823
3823
  );
3824
3824
  }
3825
3825
  const previousHandler = handlerRef.current;
3826
- const handler = new chunkSDOQKSKI_js.PptxHandler();
3826
+ const handler = new chunk35YJ5RLU_js.PptxHandler();
3827
3827
  const parsed = await handler.load(buffer);
3828
3828
  if (cancelled || token !== renderTokenRef.current) {
3829
3829
  handler.dispose();
@@ -3835,7 +3835,7 @@ function useLoadContent({
3835
3835
  handlerRef.current = null;
3836
3836
  const mediaElements = [];
3837
3837
  for (const slide of parsed.slides) {
3838
- chunkSDOQKSKI_js.collectMediaElements(slide.elements, mediaElements);
3838
+ chunk35YJ5RLU_js.collectMediaElements(slide.elements, mediaElements);
3839
3839
  }
3840
3840
  for (const url of mediaDataUrls.values()) {
3841
3841
  if (url.startsWith("blob:")) {
@@ -3876,7 +3876,7 @@ function useLoadContent({
3876
3876
  }
3877
3877
  })
3878
3878
  );
3879
- const { paths: imagePaths, refs: imageRefs } = chunkSDOQKSKI_js.collectImagePaths(parsed.slides);
3879
+ const { paths: imagePaths, refs: imageRefs } = chunk35YJ5RLU_js.collectImagePaths(parsed.slides);
3880
3880
  let nextSlides = parsed.slides;
3881
3881
  if (imagePaths.size > 0) {
3882
3882
  const resolvedMap = /* @__PURE__ */ new Map();
@@ -3930,7 +3930,7 @@ function useLoadContent({
3930
3930
  });
3931
3931
  }
3932
3932
  }
3933
- const { paths: tableImagePaths, refs: tableImageRefs } = chunkSDOQKSKI_js.collectTableCellImagePaths(nextSlides);
3933
+ const { paths: tableImagePaths, refs: tableImageRefs } = chunk35YJ5RLU_js.collectTableCellImagePaths(nextSlides);
3934
3934
  if (tableImagePaths.size > 0) {
3935
3935
  const resolvedTableMap = /* @__PURE__ */ new Map();
3936
3936
  await Promise.all(
@@ -3946,7 +3946,7 @@ function useLoadContent({
3946
3946
  );
3947
3947
  if (resolvedTableMap.size > 0) {
3948
3948
  nextSlides = nextSlides.map((s) => {
3949
- const newElements = chunkSDOQKSKI_js.applyTableCellImagePatches(
3949
+ const newElements = chunk35YJ5RLU_js.applyTableCellImagePatches(
3950
3950
  s.elements,
3951
3951
  resolvedTableMap,
3952
3952
  tableImageRefs
@@ -3956,7 +3956,7 @@ function useLoadContent({
3956
3956
  }
3957
3957
  }
3958
3958
  let nextTableStyleMap = parsed.tableStyleMap;
3959
- const { paths: tableStyleImagePaths, refs: tableStyleImageRefs } = chunkSDOQKSKI_js.collectTableStyleImagePaths(nextTableStyleMap);
3959
+ const { paths: tableStyleImagePaths, refs: tableStyleImageRefs } = chunk35YJ5RLU_js.collectTableStyleImagePaths(nextTableStyleMap);
3960
3960
  if (tableStyleImagePaths.size > 0) {
3961
3961
  const resolvedStyleMap = /* @__PURE__ */ new Map();
3962
3962
  await Promise.all(
@@ -3971,7 +3971,7 @@ function useLoadContent({
3971
3971
  })
3972
3972
  );
3973
3973
  if (resolvedStyleMap.size > 0 && nextTableStyleMap) {
3974
- nextTableStyleMap = chunkSDOQKSKI_js.applyTableStyleImagePatches(
3974
+ nextTableStyleMap = chunk35YJ5RLU_js.applyTableStyleImagePatches(
3975
3975
  nextTableStyleMap,
3976
3976
  resolvedStyleMap,
3977
3977
  tableStyleImageRefs
@@ -3979,12 +3979,12 @@ function useLoadContent({
3979
3979
  }
3980
3980
  }
3981
3981
  handlerRef.current = handler;
3982
- const partition = chunkSDOQKSKI_js.partitionTemplateElements(nextSlides);
3982
+ const partition = chunk35YJ5RLU_js.partitionTemplateElements(nextSlides);
3983
3983
  setSlides(partition.slides);
3984
3984
  setTemplateElementsBySlideId(partition.templateElementsBySlideId);
3985
3985
  setCanvasSize({
3986
- width: parsed.width ?? chunkXMLPTDPM_js.DEFAULT_CANVAS_WIDTH,
3987
- height: parsed.height ?? chunkXMLPTDPM_js.DEFAULT_CANVAS_HEIGHT
3986
+ width: parsed.width ?? chunkUU6NFFRR_js.DEFAULT_CANVAS_WIDTH,
3987
+ height: parsed.height ?? chunkUU6NFFRR_js.DEFAULT_CANVAS_HEIGHT
3988
3988
  });
3989
3989
  setSlideSizeEmu(
3990
3990
  typeof parsed.widthEmu === "number" && typeof parsed.heightEmu === "number" && parsed.widthEmu > 0 && parsed.heightEmu > 0 ? {
@@ -4001,7 +4001,7 @@ function useLoadContent({
4001
4001
  setThemeOptions(parsed.themeOptions ?? []);
4002
4002
  setCustomShows(parsed.customShows ?? []);
4003
4003
  setActiveCustomShowId(
4004
- chunkSDOQKSKI_js.resolveAuthoredCustomShowId(parsed.presentationProperties, parsed.customShows) ?? null
4004
+ chunk35YJ5RLU_js.resolveAuthoredCustomShowId(parsed.presentationProperties, parsed.customShows) ?? null
4005
4005
  );
4006
4006
  setSections(parsed.sections ?? []);
4007
4007
  setPresentationProperties(parsed.presentationProperties ?? {});
@@ -4024,7 +4024,7 @@ function useLoadContent({
4024
4024
  setHasMacros(parsed.hasMacros === true);
4025
4025
  setHasDigitalSignatures(parsed.hasDigitalSignatures === true);
4026
4026
  setDigitalSignatureCount(parsed.digitalSignatureCount ?? 0);
4027
- setGuides(chunkSDOQKSKI_js.buildInitialGuides(parsed.presentationGuides, parsed.slides[0]?.guides));
4027
+ setGuides(chunk35YJ5RLU_js.buildInitialGuides(parsed.presentationGuides, parsed.slides[0]?.guides));
4028
4028
  setActiveSlideIndex(0);
4029
4029
  clearSelection();
4030
4030
  setIsDirty(false);
@@ -4032,7 +4032,7 @@ function useLoadContent({
4032
4032
  onContentApplied?.();
4033
4033
  } catch (err) {
4034
4034
  if (!cancelled && token === renderTokenRef.current) {
4035
- if (err instanceof chunkSDOQKSKI_js.EncryptedFileError) {
4035
+ if (err instanceof chunk35YJ5RLU_js.EncryptedFileError) {
4036
4036
  setIsEncrypted(true);
4037
4037
  } else {
4038
4038
  console.error("[pptx] Failed to load presentation content:", err);
@@ -4060,7 +4060,7 @@ function useLoadContent({
4060
4060
  }
4061
4061
  function useAutosave(input) {
4062
4062
  const { isDirty, filePath, serializeSlides, enabled = true, getChangeSources } = input;
4063
- const intervalMs = chunkSDOQKSKI_js.resolveAutosaveIntervalMs({
4063
+ const intervalMs = chunk35YJ5RLU_js.resolveAutosaveIntervalMs({
4064
4064
  hostIntervalMs: input.intervalMs,
4065
4065
  optionsIntervalSeconds: input.intervalSeconds
4066
4066
  });
@@ -4091,7 +4091,7 @@ function useAutosave(input) {
4091
4091
  return;
4092
4092
  }
4093
4093
  const sources = changeSourcesRef.current?.() ?? [];
4094
- if (!chunkSDOQKSKI_js.shouldWriteAutosaveSnapshot({
4094
+ if (!chunk35YJ5RLU_js.shouldWriteAutosaveSnapshot({
4095
4095
  filePath: path,
4096
4096
  isDirty: isDirtyRef.current,
4097
4097
  saving: isSavingRef.current,
@@ -4109,8 +4109,8 @@ function useAutosave(input) {
4109
4109
  isSavingRef.current = false;
4110
4110
  return;
4111
4111
  }
4112
- await chunkSDOQKSKI_js.saveAutosaveSnapshot(path, data);
4113
- lastSnapshotRef.current = chunkSDOQKSKI_js.autosaveSnapshotMark(path, sources);
4112
+ await chunk35YJ5RLU_js.saveAutosaveSnapshot(path, data);
4113
+ lastSnapshotRef.current = chunk35YJ5RLU_js.autosaveSnapshotMark(path, sources);
4114
4114
  setAutosaveStatus({ state: "saved", timestamp: Date.now() });
4115
4115
  } catch (err) {
4116
4116
  setAutosaveStatus({
@@ -4196,11 +4196,11 @@ function useElementOperations(input) {
4196
4196
  (elementId, updates) => {
4197
4197
  if (masterView?.target) {
4198
4198
  applyMasterViewWrite(
4199
- chunkSDOQKSKI_js.updateMasterViewElement(masterView, masterView.target, elementId, updates)
4199
+ chunk35YJ5RLU_js.updateMasterViewElement(masterView, masterView.target, elementId, updates)
4200
4200
  );
4201
4201
  return;
4202
4202
  }
4203
- if (chunkSDOQKSKI_js.isTemplateElementId(elementId)) {
4203
+ if (chunk35YJ5RLU_js.isTemplateElementId(elementId)) {
4204
4204
  const slideId = activeSlide?.id;
4205
4205
  if (slideId) {
4206
4206
  setTemplateElementsBySlideId((prev) => ({
@@ -4248,7 +4248,7 @@ function useElementOperations(input) {
4248
4248
  );
4249
4249
  const updateSelectedShapeStyle = react.useCallback(
4250
4250
  (updates) => {
4251
- if (!selectedElement || !chunkSDOQKSKI_js.hasShapeProperties(selectedElement)) {
4251
+ if (!selectedElement || !chunk35YJ5RLU_js.hasShapeProperties(selectedElement)) {
4252
4252
  return;
4253
4253
  }
4254
4254
  updateSelectedElement({
@@ -4259,17 +4259,17 @@ function useElementOperations(input) {
4259
4259
  );
4260
4260
  const updateSelectedTextStyle = react.useCallback(
4261
4261
  (updates) => {
4262
- if (!selectedElement || !chunkSDOQKSKI_js.hasTextProperties(selectedElement)) {
4262
+ if (!selectedElement || !chunk35YJ5RLU_js.hasTextProperties(selectedElement)) {
4263
4263
  return;
4264
4264
  }
4265
- const inlineSel = chunkSDOQKSKI_js.getInlineEditorSelection(selectedElement.textSegments);
4265
+ const inlineSel = chunk35YJ5RLU_js.getInlineEditorSelection(selectedElement.textSegments);
4266
4266
  if (inlineSel && selectedElement.textSegments) {
4267
- const { newSegments: newSegments2, newSelection } = chunkSDOQKSKI_js.applyStyleToSelectedSegments(
4267
+ const { newSegments: newSegments2, newSelection } = chunk35YJ5RLU_js.applyStyleToSelectedSegments(
4268
4268
  selectedElement.textSegments,
4269
4269
  inlineSel,
4270
4270
  updates
4271
4271
  );
4272
- chunkSDOQKSKI_js.setPendingSelectionRestore(newSelection);
4272
+ chunk35YJ5RLU_js.setPendingSelectionRestore(newSelection);
4273
4273
  updateSelectedElement({
4274
4274
  textSegments: newSegments2
4275
4275
  });
@@ -4289,12 +4289,12 @@ function useElementOperations(input) {
4289
4289
  );
4290
4290
  const updateSelectedTextCase = react.useCallback(
4291
4291
  (mode) => {
4292
- if (!selectedElement || !chunkSDOQKSKI_js.hasTextProperties(selectedElement)) {
4292
+ if (!selectedElement || !chunk35YJ5RLU_js.hasTextProperties(selectedElement)) {
4293
4293
  return;
4294
4294
  }
4295
- const inlineSel = chunkSDOQKSKI_js.getInlineEditorSelection(selectedElement.textSegments);
4295
+ const inlineSel = chunk35YJ5RLU_js.getInlineEditorSelection(selectedElement.textSegments);
4296
4296
  if (inlineSel && selectedElement.textSegments) {
4297
- const newSegments = chunkSDOQKSKI_js.applyCaseTransformToSegments(
4297
+ const newSegments = chunk35YJ5RLU_js.applyCaseTransformToSegments(
4298
4298
  selectedElement.textSegments,
4299
4299
  inlineSel,
4300
4300
  mode
@@ -4304,14 +4304,14 @@ function useElementOperations(input) {
4304
4304
  }
4305
4305
  const updates = {};
4306
4306
  if (selectedElement.textSegments && selectedElement.textSegments.length > 0) {
4307
- updates.textSegments = chunkSDOQKSKI_js.applyCaseTransformToSegments(
4307
+ updates.textSegments = chunk35YJ5RLU_js.applyCaseTransformToSegments(
4308
4308
  selectedElement.textSegments,
4309
4309
  null,
4310
4310
  mode
4311
4311
  );
4312
4312
  }
4313
4313
  if (typeof selectedElement.text === "string") {
4314
- updates.text = chunkSDOQKSKI_js.transformTextCase(selectedElement.text, mode);
4314
+ updates.text = chunk35YJ5RLU_js.transformTextCase(selectedElement.text, mode);
4315
4315
  }
4316
4316
  updateSelectedElement(updates);
4317
4317
  },
@@ -4324,15 +4324,15 @@ function useElementOperations(input) {
4324
4324
  [setSlides]
4325
4325
  );
4326
4326
  const masterViewTarget = masterView?.target ?? null;
4327
- const activeElements = masterViewTarget ? chunkSDOQKSKI_js.masterViewElements(masterView, masterViewTarget) : editTemplateMode ? templateElements : activeSlide?.elements ?? [];
4327
+ const activeElements = masterViewTarget ? chunk35YJ5RLU_js.masterViewElements(masterView, masterViewTarget) : editTemplateMode ? templateElements : activeSlide?.elements ?? [];
4328
4328
  const updateActiveElements = react.useCallback(
4329
4329
  (updater) => {
4330
4330
  if (masterView?.target) {
4331
4331
  applyMasterViewWrite(
4332
- chunkSDOQKSKI_js.replaceMasterViewElements(
4332
+ chunk35YJ5RLU_js.replaceMasterViewElements(
4333
4333
  masterView,
4334
4334
  masterView.target,
4335
- updater(chunkSDOQKSKI_js.masterViewElements(masterView, masterView.target))
4335
+ updater(chunk35YJ5RLU_js.masterViewElements(masterView, masterView.target))
4336
4336
  )
4337
4337
  );
4338
4338
  return;
@@ -4385,7 +4385,7 @@ function useSectionOperations(input) {
4385
4385
  const { sections, setSections, slides, setSlides, markDirty } = input;
4386
4386
  const addSection2 = react.useCallback(
4387
4387
  (name, afterSlideIndex) => {
4388
- const result = chunkSDOQKSKI_js.addSection(sections, slides, name, afterSlideIndex);
4388
+ const result = chunk35YJ5RLU_js.addSection(sections, slides, name, afterSlideIndex);
4389
4389
  setSlides(result.slides);
4390
4390
  setSections(result.sections);
4391
4391
  markDirty();
@@ -4394,7 +4394,7 @@ function useSectionOperations(input) {
4394
4394
  );
4395
4395
  const renameSection2 = react.useCallback(
4396
4396
  (sectionId, newName) => {
4397
- const result = chunkSDOQKSKI_js.renameSection(sections, slides, sectionId, newName);
4397
+ const result = chunk35YJ5RLU_js.renameSection(sections, slides, sectionId, newName);
4398
4398
  setSections(result.sections);
4399
4399
  setSlides(result.slides);
4400
4400
  markDirty();
@@ -4403,7 +4403,7 @@ function useSectionOperations(input) {
4403
4403
  );
4404
4404
  const deleteSection2 = react.useCallback(
4405
4405
  (sectionId) => {
4406
- const result = chunkSDOQKSKI_js.deleteSection(sections, slides, sectionId);
4406
+ const result = chunk35YJ5RLU_js.deleteSection(sections, slides, sectionId);
4407
4407
  setSections(result.sections);
4408
4408
  setSlides(result.slides);
4409
4409
  markDirty();
@@ -4412,21 +4412,21 @@ function useSectionOperations(input) {
4412
4412
  );
4413
4413
  const moveSectionUp2 = react.useCallback(
4414
4414
  (sectionId) => {
4415
- setSections(chunkSDOQKSKI_js.moveSectionUp(sections, sectionId));
4415
+ setSections(chunk35YJ5RLU_js.moveSectionUp(sections, sectionId));
4416
4416
  markDirty();
4417
4417
  },
4418
4418
  [sections, setSections, markDirty]
4419
4419
  );
4420
4420
  const moveSectionDown2 = react.useCallback(
4421
4421
  (sectionId) => {
4422
- setSections(chunkSDOQKSKI_js.moveSectionDown(sections, sectionId));
4422
+ setSections(chunk35YJ5RLU_js.moveSectionDown(sections, sectionId));
4423
4423
  markDirty();
4424
4424
  },
4425
4425
  [sections, setSections, markDirty]
4426
4426
  );
4427
4427
  const moveSlidesToSection2 = react.useCallback(
4428
4428
  (slideIndexes, targetSectionId) => {
4429
- const result = chunkSDOQKSKI_js.moveSlidesToSection(sections, slides, slideIndexes, targetSectionId);
4429
+ const result = chunk35YJ5RLU_js.moveSlidesToSection(sections, slides, slideIndexes, targetSectionId);
4430
4430
  setSlides(result.slides);
4431
4431
  setSections(result.sections);
4432
4432
  markDirty();
@@ -4455,19 +4455,19 @@ function useSectionOperations(input) {
4455
4455
 
4456
4456
  // src/viewer/hooks/pointer-move-handlers.ts
4457
4457
  function computeResizeGeometry(handle, startX, startY, startWidth, startHeight, dx, dy, snapToGrid, gridSpacingPx) {
4458
- const resized = chunkSDOQKSKI_js.applyResize(
4458
+ const resized = chunk35YJ5RLU_js.applyResize(
4459
4459
  { x: startX, y: startY, width: startWidth, height: startHeight },
4460
4460
  handle,
4461
4461
  dx,
4462
4462
  dy,
4463
4463
  1,
4464
- { minSize: chunkXMLPTDPM_js.MIN_ELEMENT_SIZE }
4464
+ { minSize: chunkUU6NFFRR_js.MIN_ELEMENT_SIZE }
4465
4465
  );
4466
4466
  const box = { x: resized.x, y: resized.y, width: resized.width, height: resized.height };
4467
4467
  if (!snapToGrid) {
4468
4468
  return box;
4469
4469
  }
4470
- return chunkSDOQKSKI_js.snapBoxToGrid(box, handle, gridSpacingPx, chunkXMLPTDPM_js.MIN_ELEMENT_SIZE);
4470
+ return chunk35YJ5RLU_js.snapBoxToGrid(box, handle, gridSpacingPx, chunkUU6NFFRR_js.MIN_ELEMENT_SIZE);
4471
4471
  }
4472
4472
  function resolveLiveTarget(input) {
4473
4473
  const { livePatcher, editTemplateMode, activeSlide } = input;
@@ -4580,7 +4580,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
4580
4580
  width: el.width,
4581
4581
  height: el.height
4582
4582
  }));
4583
- const snapResult = chunkSDOQKSKI_js.computeSnapToShape(
4583
+ const snapResult = chunk35YJ5RLU_js.computeSnapToShape(
4584
4584
  targetX,
4585
4585
  targetY,
4586
4586
  primaryEl.width,
@@ -4619,7 +4619,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
4619
4619
  if (live) {
4620
4620
  for (const id of Object.keys(drag.startPositionsById)) {
4621
4621
  const start = drag.startPositionsById[id];
4622
- chunkSDOQKSKI_js.publishLiveGeometry(live.patcher, live.slideId, id, {
4622
+ chunk35YJ5RLU_js.publishLiveGeometry(live.patcher, live.slideId, id, {
4623
4623
  x: start.x + appliedDx,
4624
4624
  y: start.y + appliedDy
4625
4625
  });
@@ -4653,22 +4653,22 @@ function processResizeMove(e, rs, editorScale, snapToGrid, gridSpacingPx, live)
4653
4653
  if (rs.domEl) {
4654
4654
  rs.domEl.style.left = `${geo.x}px`;
4655
4655
  rs.domEl.style.top = `${geo.y}px`;
4656
- rs.domEl.style.width = `${Math.max(geo.width, chunkXMLPTDPM_js.MIN_ELEMENT_SIZE)}px`;
4657
- rs.domEl.style.height = `${Math.max(geo.height, chunkXMLPTDPM_js.MIN_ELEMENT_SIZE)}px`;
4656
+ rs.domEl.style.width = `${Math.max(geo.width, chunkUU6NFFRR_js.MIN_ELEMENT_SIZE)}px`;
4657
+ rs.domEl.style.height = `${Math.max(geo.height, chunkUU6NFFRR_js.MIN_ELEMENT_SIZE)}px`;
4658
4658
  }
4659
4659
  if (live) {
4660
- chunkSDOQKSKI_js.publishLiveGeometry(live.patcher, live.slideId, rs.elementId, {
4660
+ chunk35YJ5RLU_js.publishLiveGeometry(live.patcher, live.slideId, rs.elementId, {
4661
4661
  x: geo.x,
4662
4662
  y: geo.y,
4663
- width: Math.max(geo.width, chunkXMLPTDPM_js.MIN_ELEMENT_SIZE),
4664
- height: Math.max(geo.height, chunkXMLPTDPM_js.MIN_ELEMENT_SIZE)
4663
+ width: Math.max(geo.width, chunkUU6NFFRR_js.MIN_ELEMENT_SIZE),
4664
+ height: Math.max(geo.height, chunkUU6NFFRR_js.MIN_ELEMENT_SIZE)
4665
4665
  });
4666
4666
  }
4667
4667
  }
4668
4668
  function processAdjustmentMove(e, adj, editorScale, updateElementById) {
4669
4669
  const dx = (e.clientX - adj.startClientX) / editorScale;
4670
4670
  const dy = (e.clientY - adj.startClientY) / editorScale;
4671
- const adjustments = chunkSDOQKSKI_js.getDraggedShapeAdjustments(adj, dx, dy);
4671
+ const adjustments = chunk35YJ5RLU_js.getDraggedShapeAdjustments(adj, dx, dy);
4672
4672
  if (!adj.moved && Math.hypot(dx, dy) > 2) {
4673
4673
  adj.moved = true;
4674
4674
  }
@@ -4743,13 +4743,13 @@ function processPointerUp(input) {
4743
4743
  if (i !== activeSlideIndex) {
4744
4744
  return s;
4745
4745
  }
4746
- const rerouted = chunkSDOQKSKI_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
4746
+ const rerouted = chunk35YJ5RLU_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
4747
4747
  if (rerouted.length === 0) {
4748
4748
  return s;
4749
4749
  }
4750
4750
  return {
4751
4751
  ...s,
4752
- elements: chunkSDOQKSKI_js.applyReroutedConnectors(s.elements, rerouted)
4752
+ elements: chunk35YJ5RLU_js.applyReroutedConnectors(s.elements, rerouted)
4753
4753
  };
4754
4754
  })
4755
4755
  );
@@ -4774,9 +4774,9 @@ function processPointerUp(input) {
4774
4774
  }
4775
4775
  function commitMarquee(marquee, editTemplateMode, templateElements, activeSlide, applySelection, clearSelection) {
4776
4776
  const sourceElements = editTemplateMode ? templateElements : activeSlide?.elements ?? [];
4777
- const hitIds = chunkSDOQKSKI_js.computeMarqueeHitIds(marquee, sourceElements);
4777
+ const hitIds = chunk35YJ5RLU_js.computeMarqueeHitIds(marquee, sourceElements);
4778
4778
  if (marquee.additive) {
4779
- const merged = chunkSDOQKSKI_js.mergeAdditiveSelection(marquee.baseSelectionIds, hitIds);
4779
+ const merged = chunk35YJ5RLU_js.mergeAdditiveSelection(marquee.baseSelectionIds, hitIds);
4780
4780
  if (merged.length > 0) {
4781
4781
  applySelection(merged[0], merged);
4782
4782
  } else {
@@ -4799,8 +4799,8 @@ function commitDrag(drag, editTemplateMode, activeSlide, activeSlideIndex, setTe
4799
4799
  }
4800
4800
  return { ...el, x: start.x + dx, y: start.y + dy };
4801
4801
  });
4802
- const rerouted = chunkSDOQKSKI_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
4803
- return chunkSDOQKSKI_js.applyReroutedConnectors(movedElements, rerouted);
4802
+ const rerouted = chunk35YJ5RLU_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
4803
+ return chunk35YJ5RLU_js.applyReroutedConnectors(movedElements, rerouted);
4804
4804
  };
4805
4805
  if (editTemplateMode) {
4806
4806
  const slideId = activeSlide?.id;
@@ -4957,11 +4957,11 @@ function useCanvasInteractions(input) {
4957
4957
  return;
4958
4958
  }
4959
4959
  const el = elementLookup.get(editId);
4960
- if (el && chunkSDOQKSKI_js.hasTextProperties(el)) {
4960
+ if (el && chunk35YJ5RLU_js.hasTextProperties(el)) {
4961
4961
  const committedText = transformCommittedText ? transformCommittedText(inlineEditingText) : inlineEditingText;
4962
- const newSegments = chunkSDOQKSKI_js.remapTextToSegments(committedText, el.textSegments, el.textStyle);
4962
+ const newSegments = chunk35YJ5RLU_js.remapTextToSegments(committedText, el.textSegments, el.textStyle);
4963
4963
  const editorEl = document.querySelector("[data-inline-editor]");
4964
- const newHeight = chunkSDOQKSKI_js.resolveInlineEditAutoFitHeight(el.textStyle, el.height, editorEl);
4964
+ const newHeight = chunk35YJ5RLU_js.resolveInlineEditAutoFitHeight(el.textStyle, el.height, editorEl);
4965
4965
  ops.updateElementById(editId, {
4966
4966
  text: committedText,
4967
4967
  textSegments: newSegments,
@@ -4973,7 +4973,7 @@ function useCanvasInteractions(input) {
4973
4973
  setInlineEditingText("");
4974
4974
  };
4975
4975
  const openEquationEditorForElement = (el) => {
4976
- if (!chunkSDOQKSKI_js.hasTextProperties(el)) {
4976
+ if (!chunk35YJ5RLU_js.hasTextProperties(el)) {
4977
4977
  return false;
4978
4978
  }
4979
4979
  const eqSeg = el.textSegments?.find((seg) => seg.equationXml);
@@ -5003,7 +5003,7 @@ function useCanvasInteractions(input) {
5003
5003
  justInteractedRef.current = false;
5004
5004
  } else {
5005
5005
  const el = elementLookup.get(elementId);
5006
- if (el && chunkSDOQKSKI_js.hasTextProperties(el) && chunkSDOQKSKI_js.canInteractWithElement(el, "textEdit")) {
5006
+ if (el && chunk35YJ5RLU_js.hasTextProperties(el) && chunk35YJ5RLU_js.canInteractWithElement(el, "textEdit")) {
5007
5007
  if (!openEquationEditorForElement(el)) {
5008
5008
  setInlineEditingElementId(elementId);
5009
5009
  setInlineEditingText(el.text ?? "");
@@ -5022,7 +5022,7 @@ function useCanvasInteractions(input) {
5022
5022
  if (openEquationEditorForElement(el)) {
5023
5023
  return;
5024
5024
  }
5025
- if (chunkSDOQKSKI_js.hasTextProperties(el) && chunkSDOQKSKI_js.canInteractWithElement(el, "textEdit")) {
5025
+ if (chunk35YJ5RLU_js.hasTextProperties(el) && chunk35YJ5RLU_js.canInteractWithElement(el, "textEdit")) {
5026
5026
  setInlineEditingElementId(elementId);
5027
5027
  setInlineEditingText(el.text ?? "");
5028
5028
  }
@@ -5045,7 +5045,7 @@ function useCanvasInteractions(input) {
5045
5045
  justSelectedRef.current = false;
5046
5046
  }
5047
5047
  const ids = !wasSelected ? [elementId] : effectiveSelectedIds.length ? effectiveSelectedIds : [elementId];
5048
- const movableIds = chunkSDOQKSKI_js.filterInteractableIds(ids, (id) => elementLookup.get(id), "move");
5048
+ const movableIds = chunk35YJ5RLU_js.filterInteractableIds(ids, (id) => elementLookup.get(id), "move");
5049
5049
  if (movableIds.length === 0) {
5050
5050
  return;
5051
5051
  }
@@ -5115,7 +5115,7 @@ function useCanvasInteractions(input) {
5115
5115
  const handleResizePointerDown = (elementId, e, handle) => {
5116
5116
  e.stopPropagation();
5117
5117
  const el = elementLookup.get(elementId);
5118
- if (!el || !chunkSDOQKSKI_js.canInteractWithElement(el, "resize")) {
5118
+ if (!el || !chunk35YJ5RLU_js.canInteractWithElement(el, "resize")) {
5119
5119
  return;
5120
5120
  }
5121
5121
  resizeStateRef.current = {
@@ -5137,7 +5137,7 @@ function useCanvasInteractions(input) {
5137
5137
  };
5138
5138
  const handleRotate = (elementId, rotationDeg) => {
5139
5139
  const el = elementLookup.get(elementId);
5140
- if (!el || !chunkSDOQKSKI_js.canInteractWithElement(el, "rotate")) {
5140
+ if (!el || !chunk35YJ5RLU_js.canInteractWithElement(el, "rotate")) {
5141
5141
  return;
5142
5142
  }
5143
5143
  ops.updateElementById(elementId, { rotation: rotationDeg });
@@ -5157,10 +5157,10 @@ function useCanvasInteractions(input) {
5157
5157
  const handleAdjustmentPointerDown = (elementId, e, descriptor) => {
5158
5158
  e.stopPropagation();
5159
5159
  const el = elementLookup.get(elementId);
5160
- if (!el || !chunkSDOQKSKI_js.canInteractWithElement(el, "adjustHandle")) {
5160
+ if (!el || !chunk35YJ5RLU_js.canInteractWithElement(el, "adjustHandle")) {
5161
5161
  return;
5162
5162
  }
5163
- shapeAdjustmentDragStateRef.current = chunkSDOQKSKI_js.beginShapeAdjustment(
5163
+ shapeAdjustmentDragStateRef.current = chunk35YJ5RLU_js.beginShapeAdjustment(
5164
5164
  el,
5165
5165
  descriptor,
5166
5166
  e.clientX,
@@ -5207,7 +5207,7 @@ function createFileHandlers(deps) {
5207
5207
  h = Math.round(h * scale);
5208
5208
  }
5209
5209
  addElement({
5210
- id: chunkSDOQKSKI_js.generateElementId(),
5210
+ id: chunk35YJ5RLU_js.generateElementId(),
5211
5211
  type: "image",
5212
5212
  x: Math.round((canvasSize.width - w) / 2),
5213
5213
  y: Math.round((canvasSize.height - h) / 2),
@@ -5218,7 +5218,7 @@ function createFileHandlers(deps) {
5218
5218
  };
5219
5219
  img.onerror = () => {
5220
5220
  addElement({
5221
- id: chunkSDOQKSKI_js.generateElementId(),
5221
+ id: chunk35YJ5RLU_js.generateElementId(),
5222
5222
  type: "image",
5223
5223
  x: 100,
5224
5224
  y: 100,
@@ -5237,14 +5237,14 @@ function createFileHandlers(deps) {
5237
5237
  return;
5238
5238
  }
5239
5239
  e.target.value = "";
5240
- const mediaType = chunkSDOQKSKI_js.classifyMediaType(file.type);
5240
+ const mediaType = chunk35YJ5RLU_js.classifyMediaType(file.type);
5241
5241
  if (!mediaType) {
5242
5242
  return;
5243
5243
  }
5244
5244
  const elFilePath = file.path;
5245
5245
  const insertMediaElement = (mediaSourceUrl, width, height) => {
5246
5246
  addElement({
5247
- id: chunkSDOQKSKI_js.generateElementId(),
5247
+ id: chunk35YJ5RLU_js.generateElementId(),
5248
5248
  type: "media",
5249
5249
  mediaType,
5250
5250
  mediaMimeType: file.type || void 0,
@@ -5419,13 +5419,13 @@ function createStructuredElementHandlers(deps) {
5419
5419
  return;
5420
5420
  }
5421
5421
  addElement({
5422
- id: chunkSDOQKSKI_js.generateElementId(),
5422
+ id: chunk35YJ5RLU_js.generateElementId(),
5423
5423
  type: "smartArt",
5424
5424
  x: 100,
5425
5425
  y: 120,
5426
5426
  width: 600,
5427
5427
  height: 340,
5428
- smartArtData: chunkSDOQKSKI_js.buildSmartArtPresetData(
5428
+ smartArtData: chunk35YJ5RLU_js.buildSmartArtPresetData(
5429
5429
  layout,
5430
5430
  defaultItems,
5431
5431
  (i) => `node-${Date.now()}-${i}-${Math.random().toString(36).slice(2, 8)}`
@@ -5437,7 +5437,7 @@ function createStructuredElementHandlers(deps) {
5437
5437
  return;
5438
5438
  }
5439
5439
  addElement({
5440
- id: chunkSDOQKSKI_js.generateElementId(),
5440
+ id: chunk35YJ5RLU_js.generateElementId(),
5441
5441
  type: "shape",
5442
5442
  x: 120,
5443
5443
  y: 200,
@@ -5475,7 +5475,7 @@ function createStructuredElementHandlers(deps) {
5475
5475
  return;
5476
5476
  }
5477
5477
  const resolved = resolveHyperlinkEditResult(data);
5478
- if (resolved.url && !chunkSDOQKSKI_js.isUrlSafe(resolved.url)) {
5478
+ if (resolved.url && !chunk35YJ5RLU_js.isUrlSafe(resolved.url)) {
5479
5479
  return;
5480
5480
  }
5481
5481
  const actionClick = {
@@ -5499,7 +5499,7 @@ function createStructuredElementHandlers(deps) {
5499
5499
  const displayText = value || fieldTexts[fieldType] || fieldType;
5500
5500
  const fieldGuid = `{${crypto.randomUUID().toUpperCase()}}`;
5501
5501
  addElement({
5502
- id: chunkSDOQKSKI_js.generateElementId(),
5502
+ id: chunk35YJ5RLU_js.generateElementId(),
5503
5503
  type: "shape",
5504
5504
  x: 120,
5505
5505
  y: 200,
@@ -5521,11 +5521,11 @@ function createStructuredElementHandlers(deps) {
5521
5521
  if (!activeSlide) {
5522
5522
  return;
5523
5523
  }
5524
- const preset = chunkSDOQKSKI_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
5524
+ const preset = chunk35YJ5RLU_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
5525
5525
  if (!preset) {
5526
5526
  return;
5527
5527
  }
5528
- const defaultPptxAction = chunkSDOQKSKI_js.elementActionToPptxAction({
5528
+ const defaultPptxAction = chunk35YJ5RLU_js.elementActionToPptxAction({
5529
5529
  trigger: "click",
5530
5530
  type: preset.defaultAction
5531
5531
  });
@@ -5534,7 +5534,7 @@ function createStructuredElementHandlers(deps) {
5534
5534
  defaultPptxAction.highlightClick = true;
5535
5535
  }
5536
5536
  addElement({
5537
- id: chunkSDOQKSKI_js.generateElementId(),
5537
+ id: chunk35YJ5RLU_js.generateElementId(),
5538
5538
  type: "shape",
5539
5539
  x: 150,
5540
5540
  y: 150,
@@ -5601,14 +5601,14 @@ function useInsertElements(input) {
5601
5601
  return;
5602
5602
  }
5603
5603
  addElement({
5604
- id: chunkSDOQKSKI_js.generateElementId(),
5604
+ id: chunk35YJ5RLU_js.generateElementId(),
5605
5605
  type: "text",
5606
5606
  x: 100,
5607
5607
  y: 100,
5608
5608
  width: 300,
5609
5609
  height: 60,
5610
5610
  text: "",
5611
- textStyle: { fontSize: chunkXMLPTDPM_js.DEFAULT_TEXT_FONT_SIZE }
5611
+ textStyle: { fontSize: chunkUU6NFFRR_js.DEFAULT_TEXT_FONT_SIZE }
5612
5612
  });
5613
5613
  };
5614
5614
  const handleAddShape = () => {
@@ -5616,7 +5616,7 @@ function useInsertElements(input) {
5616
5616
  return;
5617
5617
  }
5618
5618
  addElement({
5619
- id: chunkSDOQKSKI_js.generateElementId(),
5619
+ id: chunk35YJ5RLU_js.generateElementId(),
5620
5620
  type: "shape",
5621
5621
  x: 150,
5622
5622
  y: 150,
@@ -5635,15 +5635,15 @@ function useInsertElements(input) {
5635
5635
  return;
5636
5636
  }
5637
5637
  addElement({
5638
- ...chunkSDOQKSKI_js.newTableElement(chunkXMLPTDPM_js.DEFAULT_TABLE_ROWS, chunkXMLPTDPM_js.DEFAULT_TABLE_COLUMNS, 100, 200),
5639
- id: chunkSDOQKSKI_js.generateElementId()
5638
+ ...chunk35YJ5RLU_js.newTableElement(chunkUU6NFFRR_js.DEFAULT_TABLE_ROWS, chunkUU6NFFRR_js.DEFAULT_TABLE_COLUMNS, 100, 200),
5639
+ id: chunk35YJ5RLU_js.generateElementId()
5640
5640
  });
5641
5641
  };
5642
5642
  const handleAddChart = (chartKind) => {
5643
5643
  if (!activeSlide) {
5644
5644
  return;
5645
5645
  }
5646
- addElement(chunkSDOQKSKI_js.createDefaultChartElement(chartKind));
5646
+ addElement(chunk35YJ5RLU_js.createDefaultChartElement(chartKind));
5647
5647
  };
5648
5648
  const structured = createStructuredElementHandlers({
5649
5649
  activeSlide,
@@ -5713,7 +5713,7 @@ function useClipboardHandlers(input) {
5713
5713
  if (!selectedElement) {
5714
5714
  return;
5715
5715
  }
5716
- setClipboardPayload(chunkSDOQKSKI_js.buildElementClipboardPayload(selectedElement, editTemplateMode));
5716
+ setClipboardPayload(chunk35YJ5RLU_js.buildElementClipboardPayload(selectedElement, editTemplateMode));
5717
5717
  };
5718
5718
  const handleDelete = () => {
5719
5719
  const idsToDelete = effectiveSelectedIds;
@@ -5730,7 +5730,7 @@ function useClipboardHandlers(input) {
5730
5730
  handleDelete();
5731
5731
  };
5732
5732
  const insertClone = (source) => {
5733
- const clone = chunkSDOQKSKI_js.cloneElementForPaste(source, { intoTemplate: editTemplateMode });
5733
+ const clone = chunk35YJ5RLU_js.cloneElementForPaste(source, { intoTemplate: editTemplateMode });
5734
5734
  ops.updateActiveElements((els) => [...els, clone]);
5735
5735
  ops.applySelection(clone.id);
5736
5736
  history.markDirty();
@@ -5765,7 +5765,7 @@ function resolveShapePath(el) {
5765
5765
  return el.pathData;
5766
5766
  }
5767
5767
  if ("shapeType" in el && typeof el.shapeType === "string") {
5768
- const clipPath = chunkSDOQKSKI_js.getPresetShapeClipPath(el.shapeType);
5768
+ const clipPath = chunk35YJ5RLU_js.getPresetShapeClipPath(el.shapeType);
5769
5769
  if (clipPath) {
5770
5770
  const svgPath = clipPathToSvgPath(clipPath, el.width, el.height);
5771
5771
  if (svgPath) {
@@ -5816,7 +5816,7 @@ function clipPathToSvgPath(clipPath, width, height) {
5816
5816
  return parts.join(" ");
5817
5817
  }
5818
5818
  function transformPathToGlobal(pathData, el) {
5819
- const polys = chunkSDOQKSKI_js.svgPathToPolygons(pathData);
5819
+ const polys = chunk35YJ5RLU_js.svgPathToPolygons(pathData);
5820
5820
  if (polys.length === 0) {
5821
5821
  return pathData;
5822
5822
  }
@@ -5836,10 +5836,10 @@ function transformPathToGlobal(pathData, el) {
5836
5836
  y: pt.y * scaleY + el.y
5837
5837
  }))
5838
5838
  );
5839
- return chunkSDOQKSKI_js.polygonsToSvgPath(transformed);
5839
+ return chunk35YJ5RLU_js.polygonsToSvgPath(transformed);
5840
5840
  }
5841
5841
  function transformPathToLocal(pathData, x, y, _width, _height) {
5842
- const polys = chunkSDOQKSKI_js.svgPathToPolygons(pathData);
5842
+ const polys = chunk35YJ5RLU_js.svgPathToPolygons(pathData);
5843
5843
  if (polys.length === 0) {
5844
5844
  return pathData;
5845
5845
  }
@@ -5849,10 +5849,10 @@ function transformPathToLocal(pathData, x, y, _width, _height) {
5849
5849
  y: pt.y - y
5850
5850
  }))
5851
5851
  );
5852
- return chunkSDOQKSKI_js.polygonsToSvgPath(transformed);
5852
+ return chunk35YJ5RLU_js.polygonsToSvgPath(transformed);
5853
5853
  }
5854
5854
  function pathBounds(pathData) {
5855
- const polys = chunkSDOQKSKI_js.svgPathToPolygons(pathData);
5855
+ const polys = chunk35YJ5RLU_js.svgPathToPolygons(pathData);
5856
5856
  let minX = Infinity;
5857
5857
  let minY = Infinity;
5858
5858
  let maxX = -Infinity;
@@ -5911,7 +5911,7 @@ function useMergeShapesHandler(input) {
5911
5911
  let allFragments = [];
5912
5912
  let remaining = globalPaths[0];
5913
5913
  for (let i = 1; i < globalPaths.length; i++) {
5914
- const frags = chunkSDOQKSKI_js.mergeShapes("fragment", remaining, globalPaths[i]);
5914
+ const frags = chunk35YJ5RLU_js.mergeShapes("fragment", remaining, globalPaths[i]);
5915
5915
  if (Array.isArray(frags)) {
5916
5916
  allFragments = frags;
5917
5917
  }
@@ -5940,7 +5940,7 @@ function useMergeShapesHandler(input) {
5940
5940
  bounds.height
5941
5941
  );
5942
5942
  const newEl = {
5943
- id: chunkSDOQKSKI_js.generateElementId(),
5943
+ id: chunk35YJ5RLU_js.generateElementId(),
5944
5944
  type: "shape",
5945
5945
  x: bounds.x,
5946
5946
  y: bounds.y,
@@ -5978,7 +5978,7 @@ function useMergeShapesHandler(input) {
5978
5978
  } else {
5979
5979
  let resultPath = globalPaths[0];
5980
5980
  for (let i = 1; i < globalPaths.length; i++) {
5981
- const result = chunkSDOQKSKI_js.mergeShapes(operation, resultPath, globalPaths[i]);
5981
+ const result = chunk35YJ5RLU_js.mergeShapes(operation, resultPath, globalPaths[i]);
5982
5982
  if (typeof result === "string") {
5983
5983
  resultPath = result;
5984
5984
  }
@@ -5999,7 +5999,7 @@ function useMergeShapesHandler(input) {
5999
5999
  );
6000
6000
  const primary = targets[0];
6001
6001
  const newEl = {
6002
- id: chunkSDOQKSKI_js.generateElementId(),
6002
+ id: chunk35YJ5RLU_js.generateElementId(),
6003
6003
  type: "shape",
6004
6004
  x: bounds.x,
6005
6005
  y: bounds.y,
@@ -6062,7 +6062,7 @@ function useGroupAlignLayerHandlers(input) {
6062
6062
  if (ids.length < 2 || !activeSlide) {
6063
6063
  return;
6064
6064
  }
6065
- const { elements, groupId } = chunkSDOQKSKI_js.groupElements(ops.activeElements, ids, chunkSDOQKSKI_js.generateElementId());
6065
+ const { elements, groupId } = chunk35YJ5RLU_js.groupElements(ops.activeElements, ids, chunk35YJ5RLU_js.generateElementId());
6066
6066
  if (groupId === null) {
6067
6067
  return;
6068
6068
  }
@@ -6075,11 +6075,11 @@ function useGroupAlignLayerHandlers(input) {
6075
6075
  return;
6076
6076
  }
6077
6077
  const group = selectedElement;
6078
- const intoTemplate = chunkSDOQKSKI_js.isTemplateElementId(group.id);
6078
+ const intoTemplate = chunk35YJ5RLU_js.isTemplateElementId(group.id);
6079
6079
  const childIds = group.children.map(
6080
- (child) => intoTemplate ? chunkSDOQKSKI_js.makeCloneId(true, child.id || group.id) : child.id || chunkSDOQKSKI_js.generateElementId()
6080
+ (child) => intoTemplate ? chunk35YJ5RLU_js.makeCloneId(true, child.id || group.id) : child.id || chunk35YJ5RLU_js.generateElementId()
6081
6081
  );
6082
- const { elements, childIds: usedIds } = chunkSDOQKSKI_js.ungroupElements(
6082
+ const { elements, childIds: usedIds } = chunk35YJ5RLU_js.ungroupElements(
6083
6083
  ops.activeElements,
6084
6084
  group.id,
6085
6085
  childIds,
@@ -6108,7 +6108,7 @@ function useGroupAlignLayerHandlers(input) {
6108
6108
  if (!edge) {
6109
6109
  return;
6110
6110
  }
6111
- const positions = chunkSDOQKSKI_js.alignElements(selectedElements, edge);
6111
+ const positions = chunk35YJ5RLU_js.alignElements(selectedElements, edge);
6112
6112
  for (const [id, pos] of positions) {
6113
6113
  const el = elementLookup.get(id);
6114
6114
  if (!el) {
@@ -6126,7 +6126,7 @@ function useGroupAlignLayerHandlers(input) {
6126
6126
  if (!distAxis) {
6127
6127
  return;
6128
6128
  }
6129
- const positions = chunkSDOQKSKI_js.distributeElements(selectedElements, distAxis);
6129
+ const positions = chunk35YJ5RLU_js.distributeElements(selectedElements, distAxis);
6130
6130
  for (const [id, pos] of positions) {
6131
6131
  const el = elementLookup.get(id);
6132
6132
  if (!el) {
@@ -6143,7 +6143,7 @@ function useGroupAlignLayerHandlers(input) {
6143
6143
  }
6144
6144
  const id = selectedElement.id;
6145
6145
  ops.updateActiveElements(
6146
- (els) => direction === "forward" ? chunkSDOQKSKI_js.bringForward(els, id) : direction === "backward" ? chunkSDOQKSKI_js.sendBackward(els, id) : els
6146
+ (els) => direction === "forward" ? chunk35YJ5RLU_js.bringForward(els, id) : direction === "backward" ? chunk35YJ5RLU_js.sendBackward(els, id) : els
6147
6147
  );
6148
6148
  history.markDirty();
6149
6149
  };
@@ -6153,7 +6153,7 @@ function useGroupAlignLayerHandlers(input) {
6153
6153
  }
6154
6154
  const id = selectedElement.id;
6155
6155
  ops.updateActiveElements(
6156
- (els) => direction === "front" ? chunkSDOQKSKI_js.bringToFront(els, id) : chunkSDOQKSKI_js.sendToBack(els, id)
6156
+ (els) => direction === "front" ? chunk35YJ5RLU_js.bringToFront(els, id) : chunk35YJ5RLU_js.sendToBack(els, id)
6157
6157
  );
6158
6158
  history.markDirty();
6159
6159
  };
@@ -6284,7 +6284,7 @@ function useSlideManagement(input) {
6284
6284
  theme
6285
6285
  } = input;
6286
6286
  const handleAddSlide = () => {
6287
- const newSlide = chunkSDOQKSKI_js.createBlankSlide(slides.length + 1);
6287
+ const newSlide = chunk35YJ5RLU_js.createBlankSlide(slides.length + 1);
6288
6288
  ops.updateSlides((prev) => {
6289
6289
  const next = [...prev];
6290
6290
  next.splice(activeSlideIndex + 1, 0, newSlide);
@@ -6347,7 +6347,7 @@ function useSlideManagement(input) {
6347
6347
  }
6348
6348
  const clone = {
6349
6349
  ...src,
6350
- id: chunkSDOQKSKI_js.makeSlideId(),
6350
+ id: chunk35YJ5RLU_js.makeSlideId(),
6351
6351
  elements: src.elements.map((el) => ({
6352
6352
  ...el,
6353
6353
  id: `${el.id}-dup-${Math.random().toString(36).slice(2, 6)}`
@@ -6379,7 +6379,7 @@ function useSlideManagement(input) {
6379
6379
  const handleInsertSlideFromLayout = (layoutPath, layoutName) => {
6380
6380
  const insertAt = activeSlideIndex + 1;
6381
6381
  const draft = {
6382
- ...chunkSDOQKSKI_js.createBlankSlide(slides.length + 1),
6382
+ ...chunk35YJ5RLU_js.createBlankSlide(slides.length + 1),
6383
6383
  layoutPath,
6384
6384
  ...layoutName ? { layoutName } : {}
6385
6385
  };
@@ -6412,9 +6412,9 @@ function useSlideManagement(input) {
6412
6412
  };
6413
6413
  const handleInsertSlideFromTemplate = (templateId) => {
6414
6414
  const insertAt = activeSlideIndex + 1;
6415
- const draft = chunkSDOQKSKI_js.buildSlideTemplateSlide(templateId, chunkSDOQKSKI_js.makeSlideId(), slides.length + 1, {
6415
+ const draft = chunk35YJ5RLU_js.buildSlideTemplateSlide(templateId, chunk35YJ5RLU_js.makeSlideId(), slides.length + 1, {
6416
6416
  ...canvasSize ? { slideWidth: canvasSize.width, slideHeight: canvasSize.height } : {},
6417
- scheme: chunkSDOQKSKI_js.templateSchemeFromTheme(theme?.colorScheme)
6417
+ scheme: chunk35YJ5RLU_js.templateSchemeFromTheme(theme?.colorScheme)
6418
6418
  });
6419
6419
  ops.updateSlides((prev) => insertSlideFromLayoutUpdater(prev, activeSlideIndex, draft));
6420
6420
  setActiveSlideIndex(insertAt);
@@ -6451,7 +6451,7 @@ function createTableMergeHandlers(input) {
6451
6451
  if (!nextCell || nextCell.hMerge || nextCell.vMerge) {
6452
6452
  return;
6453
6453
  }
6454
- const newTableData = chunkSDOQKSKI_js.mergeCells(
6454
+ const newTableData = chunk35YJ5RLU_js.mergeCells(
6455
6455
  [
6456
6456
  { row: rowIndex, col: columnIndex },
6457
6457
  { row: rowIndex, col: nextColIdx }
@@ -6459,7 +6459,7 @@ function createTableMergeHandlers(input) {
6459
6459
  td
6460
6460
  );
6461
6461
  const updates = { tableData: newTableData };
6462
- const newRawXml = chunkSDOQKSKI_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6462
+ const newRawXml = chunk35YJ5RLU_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6463
6463
  if (newRawXml) {
6464
6464
  updates.rawXml = newRawXml;
6465
6465
  }
@@ -6485,7 +6485,7 @@ function createTableMergeHandlers(input) {
6485
6485
  if (!targetNextCell || targetNextCell.hMerge || targetNextCell.vMerge) {
6486
6486
  return;
6487
6487
  }
6488
- const newTableData = chunkSDOQKSKI_js.mergeCells(
6488
+ const newTableData = chunk35YJ5RLU_js.mergeCells(
6489
6489
  [
6490
6490
  { row: rowIndex, col: columnIndex },
6491
6491
  { row: targetNextRowIdx, col: columnIndex }
@@ -6493,7 +6493,7 @@ function createTableMergeHandlers(input) {
6493
6493
  td
6494
6494
  );
6495
6495
  const updates = { tableData: newTableData };
6496
- const newRawXml = chunkSDOQKSKI_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6496
+ const newRawXml = chunk35YJ5RLU_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6497
6497
  if (newRawXml) {
6498
6498
  updates.rawXml = newRawXml;
6499
6499
  }
@@ -6508,9 +6508,9 @@ function createTableMergeHandlers(input) {
6508
6508
  return;
6509
6509
  }
6510
6510
  const td = selectedElement.tableData;
6511
- const newTableData = chunkSDOQKSKI_js.mergeCells(ts.selectedCells, td);
6511
+ const newTableData = chunk35YJ5RLU_js.mergeCells(ts.selectedCells, td);
6512
6512
  const updates = { tableData: newTableData };
6513
- const newRawXml = chunkSDOQKSKI_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6513
+ const newRawXml = chunk35YJ5RLU_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6514
6514
  if (newRawXml) {
6515
6515
  updates.rawXml = newRawXml;
6516
6516
  }
@@ -6527,9 +6527,9 @@ function createTableMergeHandlers(input) {
6527
6527
  }
6528
6528
  const { rowIndex, columnIndex } = ts;
6529
6529
  const td = selectedElement.tableData;
6530
- const newTableData = chunkSDOQKSKI_js.splitCell(rowIndex, columnIndex, td);
6530
+ const newTableData = chunk35YJ5RLU_js.splitCell(rowIndex, columnIndex, td);
6531
6531
  const updates = { tableData: newTableData };
6532
- const newRawXml = chunkSDOQKSKI_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6532
+ const newRawXml = chunk35YJ5RLU_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6533
6533
  if (newRawXml) {
6534
6534
  updates.rawXml = newRawXml;
6535
6535
  }
@@ -6561,10 +6561,10 @@ function createTableStructHandlers(input) {
6561
6561
  }
6562
6562
  const updates = {};
6563
6563
  if (el.tableData) {
6564
- updates.tableData = chunkSDOQKSKI_js.setCellText(el, rowIndex, colIndex, text).tableData;
6564
+ updates.tableData = chunk35YJ5RLU_js.setCellText(el, rowIndex, colIndex, text).tableData;
6565
6565
  }
6566
6566
  if (el.rawXml) {
6567
- const newRawXml = chunkSDOQKSKI_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
6567
+ const newRawXml = chunk35YJ5RLU_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
6568
6568
  if (newRawXml) {
6569
6569
  updates.rawXml = newRawXml;
6570
6570
  }
@@ -6588,7 +6588,7 @@ function createTableStructHandlers(input) {
6588
6588
  const { rowIndex, columnIndex: colIndex } = ts;
6589
6589
  const updates = {};
6590
6590
  if (selectedElement.rawXml) {
6591
- const newRawXml = chunkSDOQKSKI_js.updateCellTextStyleInRawXml(
6591
+ const newRawXml = chunk35YJ5RLU_js.updateCellTextStyleInRawXml(
6592
6592
  selectedElement,
6593
6593
  rowIndex,
6594
6594
  colIndex,
@@ -6652,9 +6652,9 @@ function createTableStructHandlers(input) {
6652
6652
  return;
6653
6653
  }
6654
6654
  const rowIdx = ts?.rowIndex ?? 0;
6655
- const newTableData = chunkSDOQKSKI_js.insertTableRow(selectedElement.tableData, rowIdx, position);
6655
+ const newTableData = chunk35YJ5RLU_js.insertTableRow(selectedElement.tableData, rowIdx, position);
6656
6656
  const updates = { tableData: newTableData };
6657
- const newRawXml = chunkSDOQKSKI_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6657
+ const newRawXml = chunk35YJ5RLU_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6658
6658
  if (newRawXml) {
6659
6659
  updates.rawXml = newRawXml;
6660
6660
  }
@@ -6667,12 +6667,12 @@ function createTableStructHandlers(input) {
6667
6667
  }
6668
6668
  const td = selectedElement.tableData;
6669
6669
  const rowIdx = ts?.rowIndex ?? 0;
6670
- const newTableData = chunkSDOQKSKI_js.deleteTableRow(td, rowIdx);
6670
+ const newTableData = chunk35YJ5RLU_js.deleteTableRow(td, rowIdx);
6671
6671
  if (newTableData === td) {
6672
6672
  return;
6673
6673
  }
6674
6674
  const updates = { tableData: newTableData };
6675
- const newRawXml = chunkSDOQKSKI_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6675
+ const newRawXml = chunk35YJ5RLU_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6676
6676
  if (newRawXml) {
6677
6677
  updates.rawXml = newRawXml;
6678
6678
  }
@@ -6684,9 +6684,9 @@ function createTableStructHandlers(input) {
6684
6684
  return;
6685
6685
  }
6686
6686
  const colIdx = ts?.columnIndex ?? 0;
6687
- const newTableData = chunkSDOQKSKI_js.insertTableColumn(selectedElement.tableData, colIdx, position);
6687
+ const newTableData = chunk35YJ5RLU_js.insertTableColumn(selectedElement.tableData, colIdx, position);
6688
6688
  const updates = { tableData: newTableData };
6689
- const newRawXml = chunkSDOQKSKI_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6689
+ const newRawXml = chunk35YJ5RLU_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6690
6690
  if (newRawXml) {
6691
6691
  updates.rawXml = newRawXml;
6692
6692
  }
@@ -6699,12 +6699,12 @@ function createTableStructHandlers(input) {
6699
6699
  }
6700
6700
  const td = selectedElement.tableData;
6701
6701
  const colIdx = ts?.columnIndex ?? 0;
6702
- const newTableData = chunkSDOQKSKI_js.deleteTableColumn(td, colIdx);
6702
+ const newTableData = chunk35YJ5RLU_js.deleteTableColumn(td, colIdx);
6703
6703
  if (newTableData === td) {
6704
6704
  return;
6705
6705
  }
6706
6706
  const updates = { tableData: newTableData };
6707
- const newRawXml = chunkSDOQKSKI_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6707
+ const newRawXml = chunk35YJ5RLU_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6708
6708
  if (newRawXml) {
6709
6709
  updates.rawXml = newRawXml;
6710
6710
  }
@@ -6740,8 +6740,8 @@ async function renderToCanvas(element, options = {}) {
6740
6740
  return html2canvasPro(element, {
6741
6741
  ...options,
6742
6742
  onclone: async (doc, clonedEl) => {
6743
- await chunkSDOQKSKI_js.normalizeColorsForCapture(doc, clonedEl);
6744
- chunkSDOQKSKI_js.preprocessCssForCapture(clonedEl);
6743
+ await chunk35YJ5RLU_js.normalizeColorsForCapture(doc, clonedEl);
6744
+ chunk35YJ5RLU_js.preprocessCssForCapture(clonedEl);
6745
6745
  if (typeof userOnClone === "function") {
6746
6746
  userOnClone(doc, clonedEl);
6747
6747
  }
@@ -6797,7 +6797,7 @@ async function exportSlideToPngBlob(slideElement, options = {}) {
6797
6797
  }
6798
6798
  async function exportSlideAsPng(slideElement, slideIndex, options = {}) {
6799
6799
  const blob = await exportSlideToPngBlob(slideElement, options);
6800
- chunkSDOQKSKI_js.downloadBlob(blob, `slide-${slideIndex + 1}.png`);
6800
+ chunk35YJ5RLU_js.downloadBlob(blob, `slide-${slideIndex + 1}.png`);
6801
6801
  }
6802
6802
  async function copySlideToClipboard(slideElement, options = {}) {
6803
6803
  const blob = await exportSlideToPngBlob(slideElement, options);
@@ -6819,15 +6819,15 @@ async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide,
6819
6819
  continue;
6820
6820
  }
6821
6821
  const canvas = await renderElementToCanvas(stageEl, scale);
6822
- images.push(chunkSDOQKSKI_js.canvasToJpegData(canvas));
6822
+ images.push(chunk35YJ5RLU_js.canvasToJpegData(canvas));
6823
6823
  }
6824
6824
  onProgress?.(totalSlides, totalSlides);
6825
6825
  setActiveSlide(currentSlideIndex);
6826
6826
  if (images.length === 0) {
6827
6827
  throw new Error(chunkU6A5FWWE_js.translationsEn["pptx.export.errorNoSlidesPdf"]);
6828
6828
  }
6829
- const pdfBlobUrl = chunkXMLPTDPM_js.buildPdfFromImageData(images);
6830
- chunkSDOQKSKI_js.downloadDataUrl(pdfBlobUrl, filename);
6829
+ const pdfBlobUrl = chunkUU6NFFRR_js.buildPdfFromImageData(images);
6830
+ chunk35YJ5RLU_js.downloadDataUrl(pdfBlobUrl, filename);
6831
6831
  }
6832
6832
  async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, options = {}) {
6833
6833
  const { scale = 2, onProgress } = options;
@@ -6875,8 +6875,8 @@ async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSl
6875
6875
  if (pages.length === 0) {
6876
6876
  throw new Error(chunkU6A5FWWE_js.translationsEn["pptx.export.errorNoSlidesNotesPdf"]);
6877
6877
  }
6878
- const pdfDataUrl = chunkXMLPTDPM_js.buildNotesPdf(pages);
6879
- chunkSDOQKSKI_js.downloadDataUrl(pdfDataUrl, filename);
6878
+ const pdfDataUrl = chunkUU6NFFRR_js.buildNotesPdf(pages);
6879
+ chunk35YJ5RLU_js.downloadDataUrl(pdfDataUrl, filename);
6880
6880
  }
6881
6881
 
6882
6882
  // src/viewer/utils/export-video.ts
@@ -6920,7 +6920,7 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
6920
6920
  const fps = 30;
6921
6921
  const stream = recordingCanvas.captureStream(fps);
6922
6922
  const recorder = new MediaRecorder(stream, {
6923
- mimeType: chunkSDOQKSKI_js.pickSupportedMimeType([...chunkSDOQKSKI_js.WEBM_MIME_CANDIDATES]),
6923
+ mimeType: chunk35YJ5RLU_js.pickSupportedMimeType([...chunk35YJ5RLU_js.WEBM_MIME_CANDIDATES]),
6924
6924
  videoBitsPerSecond: 5e6
6925
6925
  });
6926
6926
  const chunks = [];
@@ -6943,8 +6943,8 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
6943
6943
  const duration = slideTimingsMs?.[i] ?? slideDurationMs;
6944
6944
  ctx.clearRect(0, 0, recordingCanvas.width, recordingCanvas.height);
6945
6945
  ctx.drawImage(slideCanvases[i], 0, 0);
6946
- const frameInterval = chunkSDOQKSKI_js.fpsToFrameIntervalMs(fps);
6947
- const framesNeeded = chunkSDOQKSKI_js.segmentFrameCount(duration, fps);
6946
+ const frameInterval = chunk35YJ5RLU_js.fpsToFrameIntervalMs(fps);
6947
+ const framesNeeded = chunk35YJ5RLU_js.segmentFrameCount(duration, fps);
6948
6948
  for (let f = 0; f < framesNeeded; f++) {
6949
6949
  if (signal?.aborted) {
6950
6950
  recorder.stop();
@@ -6993,7 +6993,7 @@ async function exportAllSlidesAsGif(slideStageRef, totalSlides, setActiveSlide,
6993
6993
  if (frames.length === 0) {
6994
6994
  throw new Error(chunkU6A5FWWE_js.translationsEn["pptx.export.errorNoSlidesGif"]);
6995
6995
  }
6996
- const gifBytes = chunkSDOQKSKI_js.encodeGif(frames, Math.round(slideDurationMs / 10));
6996
+ const gifBytes = chunk35YJ5RLU_js.encodeGif(frames, Math.round(slideDurationMs / 10));
6997
6997
  onProgress?.(totalSlides, totalSlides);
6998
6998
  const buf = new ArrayBuffer(gifBytes.length);
6999
6999
  new Uint8Array(buf).set(gifBytes);
@@ -7047,7 +7047,7 @@ function exportAllSlidesToSvg(data, options = {}) {
7047
7047
  continue;
7048
7048
  }
7049
7049
  onProgress?.(processedCount, data.slides.length);
7050
- let svg = chunkSDOQKSKI_js.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
7050
+ let svg = chunk35YJ5RLU_js.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
7051
7051
  if (embedFonts && fontFaces?.length) {
7052
7052
  svg = injectFontFaces(svg, fontFaces);
7053
7053
  }
@@ -7105,13 +7105,13 @@ function useExportSaveAs(input) {
7105
7105
  setExportProgress(10);
7106
7106
  setExportStatusMessage("Adding presentation...");
7107
7107
  const pptxData = await serializeSlides();
7108
- const pptxFilename = chunkSDOQKSKI_js.savedPresentationFileName(filePath);
7108
+ const pptxFilename = chunk35YJ5RLU_js.savedPresentationFileName(filePath);
7109
7109
  if (pptxData) {
7110
7110
  pkgFolder.file(pptxFilename, pptxData);
7111
7111
  }
7112
7112
  setExportProgress(70);
7113
7113
  setExportStatusMessage("Writing README...");
7114
- const readme = chunkSDOQKSKI_js.generatePackageReadme(pptxFilename);
7114
+ const readme = chunk35YJ5RLU_js.generatePackageReadme(pptxFilename);
7115
7115
  pkgFolder.file("README.txt", readme);
7116
7116
  if (abortCtrl.signal.aborted) {
7117
7117
  throw new DOMException("Export cancelled", "AbortError");
@@ -7121,7 +7121,7 @@ function useExportSaveAs(input) {
7121
7121
  const zipBlob = await zip.generateAsync({ type: "blob" });
7122
7122
  setExportProgress(95);
7123
7123
  setExportStatusMessage("Downloading...");
7124
- chunkSDOQKSKI_js.downloadBlob(zipBlob, `${chunkSDOQKSKI_js.presentationBaseName(pptxFilename)}-package.zip`);
7124
+ chunk35YJ5RLU_js.downloadBlob(zipBlob, `${chunk35YJ5RLU_js.presentationBaseName(pptxFilename)}-package.zip`);
7125
7125
  setExportProgress(100);
7126
7126
  } catch (err) {
7127
7127
  if (err.name !== "AbortError") {
@@ -7137,13 +7137,13 @@ function useExportSaveAs(input) {
7137
7137
  if (!handler) {
7138
7138
  return;
7139
7139
  }
7140
- const downloadName = chunkSDOQKSKI_js.savedPresentationFileName(filePath, format);
7140
+ const downloadName = chunk35YJ5RLU_js.savedPresentationFileName(filePath, format);
7141
7141
  try {
7142
7142
  const data = await buildSaveAsData(handler, format);
7143
7143
  const blob = new Blob([data], {
7144
7144
  type: "application/vnd.openxmlformats-officedocument.presentationml.presentation"
7145
7145
  });
7146
- chunkSDOQKSKI_js.downloadBlob(blob, downloadName);
7146
+ chunk35YJ5RLU_js.downloadBlob(blob, downloadName);
7147
7147
  } catch (err) {
7148
7148
  console.error(`[PowerPointViewer] Save as .${format} failed:`, err);
7149
7149
  }
@@ -7156,18 +7156,18 @@ function useExportSaveAs(input) {
7156
7156
  const pptxGuides = guides.map((g) => ({
7157
7157
  id: g.id,
7158
7158
  orientation: g.axis === "h" ? "horz" : "vert",
7159
- positionEmu: chunkSDOQKSKI_js.guidePxToEmu(g.position)
7159
+ positionEmu: chunk35YJ5RLU_js.guidePxToEmu(g.position)
7160
7160
  }));
7161
7161
  return {
7162
7162
  ...slide,
7163
7163
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
7164
7164
  };
7165
7165
  });
7166
- const slidesToSave = chunkSDOQKSKI_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
7166
+ const slidesToSave = chunk35YJ5RLU_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
7167
7167
  const saveOptions = {
7168
7168
  // Save As shares Save's slide-size decision; leaving it out here is how
7169
7169
  // a preset picked in the inspector reached one save path and not the other.
7170
- slideSize: chunkSDOQKSKI_js.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size,
7170
+ slideSize: chunk35YJ5RLU_js.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size,
7171
7171
  headerFooter,
7172
7172
  presentationProperties,
7173
7173
  customShows: customShows.length > 0 ? customShows : void 0,
@@ -7181,13 +7181,13 @@ function useExportSaveAs(input) {
7181
7181
  handoutMaster,
7182
7182
  outputFormat: format
7183
7183
  };
7184
- return chunkSDOQKSKI_js.saveDeckWithPassword(handler, slidesToSave, saveOptions, password);
7184
+ return chunk35YJ5RLU_js.saveDeckWithPassword(handler, slidesToSave, saveOptions, password);
7185
7185
  };
7186
7186
  const handleExportJson = () => {
7187
7187
  const sourceName = filePath ? filePath.replace(/\\/gu, "/").split("/").pop() : void 0;
7188
- const slideSize = chunkSDOQKSKI_js.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size;
7188
+ const slideSize = chunk35YJ5RLU_js.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size;
7189
7189
  const data = {
7190
- slides: chunkSDOQKSKI_js.buildSaveSlides(slides, templateElementsBySlideId),
7190
+ slides: chunk35YJ5RLU_js.buildSaveSlides(slides, templateElementsBySlideId),
7191
7191
  width: canvasSize.width,
7192
7192
  height: canvasSize.height,
7193
7193
  widthEmu: slideSize.widthEmu,
@@ -7206,7 +7206,7 @@ function useExportSaveAs(input) {
7206
7206
  handoutMaster
7207
7207
  };
7208
7208
  try {
7209
- chunkSDOQKSKI_js.exportDeckJson(data, sourceName);
7209
+ chunk35YJ5RLU_js.exportDeckJson(data, sourceName);
7210
7210
  } catch (err) {
7211
7211
  console.error("[PowerPointViewer] JSON export failed:", err);
7212
7212
  }
@@ -7353,21 +7353,21 @@ function useExportHandlers(input) {
7353
7353
  {
7354
7354
  scale: 2,
7355
7355
  onProgress: (current, total) => {
7356
- setExportProgress(chunkSDOQKSKI_js.slideProgressPercent(current, total));
7357
- setExportStatusMessage(chunkSDOQKSKI_js.slideStatusLabel("Rendering", current, total));
7356
+ setExportProgress(chunk35YJ5RLU_js.slideProgressPercent(current, total));
7357
+ setExportStatusMessage(chunk35YJ5RLU_js.slideStatusLabel("Rendering", current, total));
7358
7358
  },
7359
7359
  signal: abortCtrl.signal
7360
7360
  }
7361
7361
  );
7362
- setExportProgress(chunkSDOQKSKI_js.EXPORT_ASSEMBLING_PERCENT);
7362
+ setExportProgress(chunk35YJ5RLU_js.EXPORT_ASSEMBLING_PERCENT);
7363
7363
  setExportStatusMessage("Building PDF...");
7364
7364
  await new Promise((r) => {
7365
7365
  setTimeout(r, 100);
7366
7366
  });
7367
- setExportProgress(chunkSDOQKSKI_js.EXPORT_DONE_PERCENT);
7367
+ setExportProgress(chunk35YJ5RLU_js.EXPORT_DONE_PERCENT);
7368
7368
  setExportStatusMessage("Done!");
7369
7369
  } catch (err) {
7370
- if (!chunkSDOQKSKI_js.isExportAbortError(err)) {
7370
+ if (!chunk35YJ5RLU_js.isExportAbortError(err)) {
7371
7371
  console.error("[PowerPointViewer] PDF export failed:", err);
7372
7372
  }
7373
7373
  } finally {
@@ -7397,21 +7397,21 @@ function useExportHandlers(input) {
7397
7397
  {
7398
7398
  scale: 2,
7399
7399
  onProgress: (current, total) => {
7400
- setExportProgress(chunkSDOQKSKI_js.slideProgressPercent(current, total));
7401
- setExportStatusMessage(chunkSDOQKSKI_js.slideStatusLabel("Rendering", current, total));
7400
+ setExportProgress(chunk35YJ5RLU_js.slideProgressPercent(current, total));
7401
+ setExportStatusMessage(chunk35YJ5RLU_js.slideStatusLabel("Rendering", current, total));
7402
7402
  },
7403
7403
  signal: abortCtrl.signal
7404
7404
  }
7405
7405
  );
7406
- setExportProgress(chunkSDOQKSKI_js.EXPORT_ASSEMBLING_PERCENT);
7406
+ setExportProgress(chunk35YJ5RLU_js.EXPORT_ASSEMBLING_PERCENT);
7407
7407
  setExportStatusMessage("Building PDF...");
7408
7408
  await new Promise((r) => {
7409
7409
  setTimeout(r, 100);
7410
7410
  });
7411
- setExportProgress(chunkSDOQKSKI_js.EXPORT_DONE_PERCENT);
7411
+ setExportProgress(chunk35YJ5RLU_js.EXPORT_DONE_PERCENT);
7412
7412
  setExportStatusMessage("Done!");
7413
7413
  } catch (err) {
7414
- if (!chunkSDOQKSKI_js.isExportAbortError(err)) {
7414
+ if (!chunk35YJ5RLU_js.isExportAbortError(err)) {
7415
7415
  console.error("[PowerPointViewer] Notes PDF export failed:", err);
7416
7416
  }
7417
7417
  } finally {
@@ -7452,22 +7452,22 @@ function useExportHandlers(input) {
7452
7452
  scale: 1,
7453
7453
  slideDurationMs: 3e3,
7454
7454
  onProgress: (current, total) => {
7455
- setExportProgress(chunkSDOQKSKI_js.slideProgressPercent(current, total, 45));
7456
- setExportStatusMessage(chunkSDOQKSKI_js.slideStatusLabel("Capturing", current, total));
7455
+ setExportProgress(chunk35YJ5RLU_js.slideProgressPercent(current, total, 45));
7456
+ setExportStatusMessage(chunk35YJ5RLU_js.slideStatusLabel("Capturing", current, total));
7457
7457
  },
7458
7458
  onRecordProgress: (current, total) => {
7459
- setExportProgress(chunkSDOQKSKI_js.recordProgressPercent(current, total));
7460
- setExportStatusMessage(chunkSDOQKSKI_js.slideStatusLabel("Recording", current, total));
7459
+ setExportProgress(chunk35YJ5RLU_js.recordProgressPercent(current, total));
7460
+ setExportStatusMessage(chunk35YJ5RLU_js.slideStatusLabel("Recording", current, total));
7461
7461
  },
7462
7462
  signal: abortCtrl.signal
7463
7463
  }
7464
7464
  );
7465
- setExportProgress(chunkSDOQKSKI_js.EXPORT_ASSEMBLING_PERCENT);
7465
+ setExportProgress(chunk35YJ5RLU_js.EXPORT_ASSEMBLING_PERCENT);
7466
7466
  setExportStatusMessage("Saving file...");
7467
- chunkSDOQKSKI_js.downloadBlob(blob, "presentation.webm");
7468
- setExportProgress(chunkSDOQKSKI_js.EXPORT_DONE_PERCENT);
7467
+ chunk35YJ5RLU_js.downloadBlob(blob, "presentation.webm");
7468
+ setExportProgress(chunk35YJ5RLU_js.EXPORT_DONE_PERCENT);
7469
7469
  } catch (err) {
7470
- if (!chunkSDOQKSKI_js.isExportAbortError(err)) {
7470
+ if (!chunk35YJ5RLU_js.isExportAbortError(err)) {
7471
7471
  console.error("[PowerPointViewer] Video export failed:", err);
7472
7472
  }
7473
7473
  } finally {
@@ -7495,18 +7495,18 @@ function useExportHandlers(input) {
7495
7495
  scale: 0.5,
7496
7496
  slideDurationMs: 2e3,
7497
7497
  onProgress: (current, total) => {
7498
- setExportProgress(chunkSDOQKSKI_js.slideProgressPercent(current, total));
7499
- setExportStatusMessage(chunkSDOQKSKI_js.slideStatusLabel("Encoding", current, total));
7498
+ setExportProgress(chunk35YJ5RLU_js.slideProgressPercent(current, total));
7499
+ setExportStatusMessage(chunk35YJ5RLU_js.slideStatusLabel("Encoding", current, total));
7500
7500
  },
7501
7501
  signal: abortCtrl.signal
7502
7502
  }
7503
7503
  );
7504
- setExportProgress(chunkSDOQKSKI_js.EXPORT_ASSEMBLING_PERCENT);
7504
+ setExportProgress(chunk35YJ5RLU_js.EXPORT_ASSEMBLING_PERCENT);
7505
7505
  setExportStatusMessage("Saving file...");
7506
- chunkSDOQKSKI_js.downloadBlob(blob, "presentation.gif");
7507
- setExportProgress(chunkSDOQKSKI_js.EXPORT_DONE_PERCENT);
7506
+ chunk35YJ5RLU_js.downloadBlob(blob, "presentation.gif");
7507
+ setExportProgress(chunk35YJ5RLU_js.EXPORT_DONE_PERCENT);
7508
7508
  } catch (err) {
7509
- if (!chunkSDOQKSKI_js.isExportAbortError(err)) {
7509
+ if (!chunk35YJ5RLU_js.isExportAbortError(err)) {
7510
7510
  console.error("[PowerPointViewer] GIF export failed:", err);
7511
7511
  }
7512
7512
  } finally {
@@ -7547,7 +7547,7 @@ function openPrintWindow(title, bodyHtml, orientation, colorFilter, frameSlides)
7547
7547
  }
7548
7548
  printWindow.document.open();
7549
7549
  printWindow.document.write(
7550
- chunkSDOQKSKI_js.buildPrintHtmlDocument({ title, bodyHtml, orientation, colorFilter, frameSlides })
7550
+ chunk35YJ5RLU_js.buildPrintHtmlDocument({ title, bodyHtml, orientation, colorFilter, frameSlides })
7551
7551
  );
7552
7552
  printWindow.document.close();
7553
7553
  printWindow.focus();
@@ -7581,8 +7581,8 @@ function usePrintHandlers(input) {
7581
7581
  if (!pptxData || settings.printWhat !== "slides") {
7582
7582
  return handlePrintWithSettings(settings);
7583
7583
  }
7584
- const colorFilter = chunkSDOQKSKI_js.computeColorFilter(settings.colorMode);
7585
- const slideIndices = chunkSDOQKSKI_js.computeSlideIndices(
7584
+ const colorFilter = chunk35YJ5RLU_js.computeColorFilter(settings.colorMode);
7585
+ const slideIndices = chunk35YJ5RLU_js.computeSlideIndices(
7586
7586
  settings.slideRange,
7587
7587
  activeSlideIndex,
7588
7588
  slides.length,
@@ -7596,7 +7596,7 @@ function usePrintHandlers(input) {
7596
7596
  if (svgs.length === 0) {
7597
7597
  return;
7598
7598
  }
7599
- const printDoc = chunkSDOQKSKI_js.buildPrintDocument(svgs, pptxData.width, pptxData.height, {
7599
+ const printDoc = chunk35YJ5RLU_js.buildPrintDocument(svgs, pptxData.width, pptxData.height, {
7600
7600
  title: "Slides (Vector)",
7601
7601
  orientation: settings.orientation,
7602
7602
  colorFilter
@@ -7609,8 +7609,8 @@ function usePrintHandlers(input) {
7609
7609
  };
7610
7610
  const handlePrintWithSettings = async (settings) => {
7611
7611
  setIsPrintDialogOpen(false);
7612
- const colorFilter = chunkSDOQKSKI_js.computeColorFilter(settings.colorMode);
7613
- const slideIndices = chunkSDOQKSKI_js.computeSlideIndices(
7612
+ const colorFilter = chunk35YJ5RLU_js.computeColorFilter(settings.colorMode);
7613
+ const slideIndices = chunk35YJ5RLU_js.computeSlideIndices(
7614
7614
  settings.slideRange,
7615
7615
  activeSlideIndex,
7616
7616
  slides.length,
@@ -7620,7 +7620,7 @@ function usePrintHandlers(input) {
7620
7620
  if (settings.printWhat === "outline") {
7621
7621
  openPrintWindow(
7622
7622
  "Outline",
7623
- `<div class="outline-page">${chunkSDOQKSKI_js.buildOutlineHtml(slideIndices, slides)}</div>`,
7623
+ `<div class="outline-page">${chunk35YJ5RLU_js.buildOutlineHtml(slideIndices, slides)}</div>`,
7624
7624
  settings.orientation,
7625
7625
  colorFilter,
7626
7626
  settings.frameSlides
@@ -7645,7 +7645,7 @@ function usePrintHandlers(input) {
7645
7645
  if (settings.printWhat === "slides") {
7646
7646
  openPrintWindow(
7647
7647
  "Slides",
7648
- chunkSDOQKSKI_js.buildSlidesHtml(slideImages, slideIndices),
7648
+ chunk35YJ5RLU_js.buildSlidesHtml(slideImages, slideIndices),
7649
7649
  settings.orientation,
7650
7650
  colorFilter,
7651
7651
  settings.frameSlides
@@ -7655,7 +7655,7 @@ function usePrintHandlers(input) {
7655
7655
  if (settings.printWhat === "notes") {
7656
7656
  openPrintWindow(
7657
7657
  "Notes Pages",
7658
- chunkSDOQKSKI_js.buildNotesHtml(slideImages, slideIndices, slides),
7658
+ chunk35YJ5RLU_js.buildNotesHtml(slideImages, slideIndices, slides),
7659
7659
  "portrait",
7660
7660
  colorFilter,
7661
7661
  settings.frameSlides
@@ -7666,7 +7666,7 @@ function usePrintHandlers(input) {
7666
7666
  const spp = settings.slidesPerPage;
7667
7667
  openPrintWindow(
7668
7668
  `Handout ${spp} per page`,
7669
- chunkSDOQKSKI_js.buildHandoutsHtml(slideImages, slideIndices, spp),
7669
+ chunk35YJ5RLU_js.buildHandoutsHtml(slideImages, slideIndices, spp),
7670
7670
  "portrait",
7671
7671
  colorFilter,
7672
7672
  settings.frameSlides
@@ -7730,8 +7730,8 @@ function useThemeHandlers(input) {
7730
7730
  return;
7731
7731
  }
7732
7732
  await handler.updateThemeColorScheme(colorScheme);
7733
- const previousMap = theme?.colorScheme ? chunkSDOQKSKI_js.buildThemeColorMap(theme.colorScheme) : {};
7734
- setSlides((prev) => chunkSDOQKSKI_js.reResolveSlideColors(prev, previousMap, colorScheme));
7733
+ const previousMap = theme?.colorScheme ? chunk35YJ5RLU_js.buildThemeColorMap(theme.colorScheme) : {};
7734
+ setSlides((prev) => chunk35YJ5RLU_js.reResolveSlideColors(prev, previousMap, colorScheme));
7735
7735
  setTheme((prev) => prev ? { ...prev, colorScheme } : { colorScheme });
7736
7736
  bumpHistory();
7737
7737
  history.markDirty();
@@ -7836,7 +7836,7 @@ function useThemeSwitching(input) {
7836
7836
  }
7837
7837
  try {
7838
7838
  await handler.applyTheme(preset.colorScheme, preset.fontScheme, preset.name);
7839
- const newData = chunkSDOQKSKI_js.applyThemeToData(data, preset.colorScheme, preset.fontScheme, preset.name);
7839
+ const newData = chunk35YJ5RLU_js.applyThemeToData(data, preset.colorScheme, preset.fontScheme, preset.name);
7840
7840
  onDataChange(newData);
7841
7841
  onThemeChanged?.(preset);
7842
7842
  } catch (error) {
@@ -7853,7 +7853,7 @@ function useThemeSwitching(input) {
7853
7853
  }
7854
7854
  try {
7855
7855
  await handler.applyTheme(colorScheme, fontScheme ?? {}, themeName);
7856
- const newData = chunkSDOQKSKI_js.applyThemeToData(data, colorScheme, fontScheme, themeName);
7856
+ const newData = chunk35YJ5RLU_js.applyThemeToData(data, colorScheme, fontScheme, themeName);
7857
7857
  onDataChange(newData);
7858
7858
  } catch (error) {
7859
7859
  console.error("Failed to switch to custom theme:", error);
@@ -7865,12 +7865,12 @@ function useThemeSwitching(input) {
7865
7865
  if (!data?.theme?.colorScheme) {
7866
7866
  return void 0;
7867
7867
  }
7868
- return chunkSDOQKSKI_js.THEME_PRESETS.find(
7869
- (p) => chunkSDOQKSKI_js.themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
7868
+ return chunk35YJ5RLU_js.THEME_PRESETS.find(
7869
+ (p) => chunk35YJ5RLU_js.themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
7870
7870
  );
7871
7871
  }, [data?.theme?.colorScheme]);
7872
7872
  return {
7873
- presets: chunkSDOQKSKI_js.THEME_PRESETS,
7873
+ presets: chunk35YJ5RLU_js.THEME_PRESETS,
7874
7874
  switchToPreset,
7875
7875
  switchToCustom,
7876
7876
  currentPreset
@@ -7945,7 +7945,7 @@ function usePropertyHandlers(input) {
7945
7945
  }
7946
7946
  try {
7947
7947
  const ab = await file.arrayBuffer();
7948
- const h = new chunkSDOQKSKI_js.PptxHandler();
7948
+ const h = new chunk35YJ5RLU_js.PptxHandler();
7949
7949
  const other = await h.load(ab);
7950
7950
  if (!other) {
7951
7951
  return;
@@ -7955,7 +7955,7 @@ function usePropertyHandlers(input) {
7955
7955
  width: canvasSize.width,
7956
7956
  height: canvasSize.height
7957
7957
  };
7958
- setCompareResult(chunkSDOQKSKI_js.comparePresentation(cur, other));
7958
+ setCompareResult(chunk35YJ5RLU_js.comparePresentation(cur, other));
7959
7959
  setIsComparePanelOpen(true);
7960
7960
  } catch (err) {
7961
7961
  console.warn("Compare failed:", err);
@@ -7972,7 +7972,7 @@ function usePropertyHandlers(input) {
7972
7972
  if (!diff || diff.status === "unchanged") {
7973
7973
  return;
7974
7974
  }
7975
- setSlides((prev) => chunkSDOQKSKI_js.applyAcceptSlide(prev, diff));
7975
+ setSlides((prev) => chunk35YJ5RLU_js.applyAcceptSlide(prev, diff));
7976
7976
  setIsDirty(true);
7977
7977
  },
7978
7978
  [compareResult, setSlides, setIsDirty]
@@ -7983,10 +7983,10 @@ function usePropertyHandlers(input) {
7983
7983
  if (!compareResult) {
7984
7984
  return;
7985
7985
  }
7986
- setSlides((prev) => chunkSDOQKSKI_js.applyAcceptAllSlides(prev, compareResult));
7986
+ setSlides((prev) => chunk35YJ5RLU_js.applyAcceptAllSlides(prev, compareResult));
7987
7987
  setIsDirty(true);
7988
7988
  }, [compareResult, setSlides, setIsDirty]);
7989
- const usedFontFamilies = react.useMemo(() => chunkSDOQKSKI_js.collectUsedFonts(slides), [slides]);
7989
+ const usedFontFamilies = react.useMemo(() => chunk35YJ5RLU_js.collectUsedFonts(slides), [slides]);
7990
7990
  return {
7991
7991
  handleUpdateNotes,
7992
7992
  handleUpdateSlide,
@@ -8105,7 +8105,7 @@ function useIsMobile(input) {
8105
8105
  const containerRef = input?.containerRef;
8106
8106
  const isTouchDevice = react.useSyncExternalStore(
8107
8107
  subscribeTouchCapability,
8108
- chunkSDOQKSKI_js.detectTouchDevice,
8108
+ chunk35YJ5RLU_js.detectTouchDevice,
8109
8109
  () => false
8110
8110
  // server snapshot
8111
8111
  );
@@ -8121,7 +8121,7 @@ function useIsMobile(input) {
8121
8121
  }
8122
8122
  return containerRef?.current?.clientHeight ?? window.innerHeight;
8123
8123
  });
8124
- const [orientation, setOrientation] = react.useState(chunkSDOQKSKI_js.detectOrientation);
8124
+ const [orientation, setOrientation] = react.useState(chunk35YJ5RLU_js.detectOrientation);
8125
8125
  const [isVirtualKeyboardOpen, setIsVirtualKeyboardOpen] = react.useState(false);
8126
8126
  const [initialViewportHeight] = react.useState(
8127
8127
  () => typeof window !== "undefined" ? window.innerHeight : 800
@@ -8165,7 +8165,7 @@ function useIsMobile(input) {
8165
8165
  return;
8166
8166
  }
8167
8167
  const handleOrientationChange = () => {
8168
- setOrientation(chunkSDOQKSKI_js.detectOrientation());
8168
+ setOrientation(chunk35YJ5RLU_js.detectOrientation());
8169
8169
  };
8170
8170
  if (screen.orientation) {
8171
8171
  screen.orientation.addEventListener("change", handleOrientationChange);
@@ -8195,9 +8195,9 @@ function useIsMobile(input) {
8195
8195
  window.addEventListener("resize", handleResize);
8196
8196
  return () => window.removeEventListener("resize", handleResize);
8197
8197
  }, [isTouchDevice, initialViewportHeight]);
8198
- const isMobile = chunkSDOQKSKI_js.isMobileViewport(containerWidth, containerHeight, isTouchDevice);
8199
- const isTablet = !isMobile && containerWidth >= chunkSDOQKSKI_js.MOBILE_BREAKPOINT && containerWidth < chunkSDOQKSKI_js.TABLET_BREAKPOINT;
8200
- const isDesktop = !isMobile && containerWidth >= chunkSDOQKSKI_js.TABLET_BREAKPOINT;
8198
+ const isMobile = chunk35YJ5RLU_js.isMobileViewport(containerWidth, containerHeight, isTouchDevice);
8199
+ const isTablet = !isMobile && containerWidth >= chunk35YJ5RLU_js.MOBILE_BREAKPOINT && containerWidth < chunk35YJ5RLU_js.TABLET_BREAKPOINT;
8200
+ const isDesktop = !isMobile && containerWidth >= chunk35YJ5RLU_js.TABLET_BREAKPOINT;
8201
8201
  return {
8202
8202
  isMobile,
8203
8203
  isTablet,
@@ -8259,7 +8259,7 @@ function useViewerDialogs(input) {
8259
8259
  );
8260
8260
  const embeddedFontKey = (embeddedFontFamilies ?? []).join("\0");
8261
8261
  const fontEmbedding = react.useMemo(
8262
- () => chunkSDOQKSKI_js.describeFontEmbedding(embeddedFontKey ? embeddedFontKey.split("\0") : []),
8262
+ () => chunk35YJ5RLU_js.describeFontEmbedding(embeddedFontKey ? embeddedFontKey.split("\0") : []),
8263
8263
  [embeddedFontKey]
8264
8264
  );
8265
8265
  const [embedFontsEnabled, setEmbedFontsEnabled] = react.useState(fontEmbedding.initialEnabled);
@@ -8267,11 +8267,11 @@ function useViewerDialogs(input) {
8267
8267
  setEmbedFontsEnabled(fontEmbedding.initialEnabled);
8268
8268
  }, [fontEmbedding]);
8269
8269
  const [isNarrowViewport, setIsNarrowViewport] = react.useState(
8270
- () => typeof window !== "undefined" ? chunkSDOQKSKI_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch()) : false
8270
+ () => typeof window !== "undefined" ? chunk35YJ5RLU_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch()) : false
8271
8271
  );
8272
8272
  react.useEffect(() => {
8273
8273
  const handleWindow = () => setIsNarrowViewport(
8274
- chunkSDOQKSKI_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch())
8274
+ chunk35YJ5RLU_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch())
8275
8275
  );
8276
8276
  let observer = null;
8277
8277
  let raf = 0;
@@ -8285,12 +8285,12 @@ function useViewerDialogs(input) {
8285
8285
  const entry = entries[0];
8286
8286
  if (entry) {
8287
8287
  setIsNarrowViewport(
8288
- chunkSDOQKSKI_js.isMobileViewport(entry.contentRect.width, entry.contentRect.height, viewportIsTouch())
8288
+ chunk35YJ5RLU_js.isMobileViewport(entry.contentRect.width, entry.contentRect.height, viewportIsTouch())
8289
8289
  );
8290
8290
  }
8291
8291
  });
8292
8292
  observer.observe(el);
8293
- setIsNarrowViewport(chunkSDOQKSKI_js.isMobileViewport(el.clientWidth, el.clientHeight, viewportIsTouch()));
8293
+ setIsNarrowViewport(chunk35YJ5RLU_js.isMobileViewport(el.clientWidth, el.clientHeight, viewportIsTouch()));
8294
8294
  };
8295
8295
  attach();
8296
8296
  window.addEventListener("resize", handleWindow);
@@ -8448,15 +8448,15 @@ function useViewerDialogs(input) {
8448
8448
  };
8449
8449
  }
8450
8450
  function computeGridSpacingPx2(documentGridSpacing) {
8451
- return chunkSDOQKSKI_js.computeGridSpacingPx(documentGridSpacing, chunkXMLPTDPM_js.GRID_SIZE);
8451
+ return chunk35YJ5RLU_js.computeGridSpacingPx(documentGridSpacing, chunkUU6NFFRR_js.GRID_SIZE);
8452
8452
  }
8453
8453
  function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows) {
8454
8454
  const activeShow = activeCustomShowId ? customShows.find((show) => show.id === activeCustomShowId) : void 0;
8455
- return chunkSDOQKSKI_js.resolveShowSlideIndexes(slides, activeShow);
8455
+ return chunk35YJ5RLU_js.resolveShowSlideIndexes(slides, activeShow);
8456
8456
  }
8457
8457
  function computeSlideSectionGroups(slides, sections) {
8458
- return chunkSDOQKSKI_js.groupSlidesBySection(sections, slides).map((group) => ({
8459
- id: group.section?.id ?? (sections.length > 0 ? chunkXMLPTDPM_js.UNGROUPED_SECTION_ID : chunkXMLPTDPM_js.DEFAULT_SECTION_GROUP_ID),
8458
+ return chunk35YJ5RLU_js.groupSlidesBySection(sections, slides).map((group) => ({
8459
+ id: group.section?.id ?? (sections.length > 0 ? chunkUU6NFFRR_js.UNGROUPED_SECTION_ID : chunkUU6NFFRR_js.DEFAULT_SECTION_GROUP_ID),
8460
8460
  label: group.section?.name ?? (sections.length > 0 ? "Ungrouped Slides" : "Slides"),
8461
8461
  slideIndexes: group.slideIndexes,
8462
8462
  ...group.section?.color !== void 0 ? { color: group.section.color } : {},
@@ -8468,7 +8468,7 @@ function computeMasterPseudoSlide(mode, activeLayout, activeMaster) {
8468
8468
  return void 0;
8469
8469
  }
8470
8470
  const document2 = activeLayout ? { slideMasters: [{ ...activeMaster, layouts: [activeLayout] }] } : { slideMasters: [activeMaster] };
8471
- return chunkSDOQKSKI_js.masterViewPseudoSlide(document2, {
8471
+ return chunk35YJ5RLU_js.masterViewPseudoSlide(document2, {
8472
8472
  tab: "slides",
8473
8473
  masterIndex: 0,
8474
8474
  layoutIndex: activeLayout ? 0 : null
@@ -8496,10 +8496,10 @@ function useDerivedSlideState(input) {
8496
8496
  );
8497
8497
  const slideSectionGroups = react.useMemo(
8498
8498
  () => computeSlideSectionGroups(slides, sections).map((group) => {
8499
- if (group.id === chunkXMLPTDPM_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
8499
+ if (group.id === chunkUU6NFFRR_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
8500
8500
  return { ...group, label: t("pptx.slides.ungroupedSlides") };
8501
8501
  }
8502
- if (group.id === chunkXMLPTDPM_js.DEFAULT_SECTION_GROUP_ID && group.label === "Slides") {
8502
+ if (group.id === chunkUU6NFFRR_js.DEFAULT_SECTION_GROUP_ID && group.label === "Slides") {
8503
8503
  return { ...group, label: t("pptx.sections.slides") };
8504
8504
  }
8505
8505
  return group;
@@ -8599,13 +8599,13 @@ function useAnnotationHandlers(input) {
8599
8599
  }, [annotations, setMode, setSlides, history]);
8600
8600
  const handleSetMode = react.useCallback(
8601
8601
  (nextMode) => {
8602
- if (mode === "present" && nextMode !== "present" && !chunkSDOQKSKI_js.mayLeaveSlideShow()) {
8602
+ if (mode === "present" && nextMode !== "present" && !chunk35YJ5RLU_js.mayLeaveSlideShow()) {
8603
8603
  return;
8604
8604
  }
8605
8605
  if (nextMode === "present") {
8606
8606
  presentation.enterPresentMode();
8607
8607
  } else if (mode === "present" && annotations.hasAnyAnnotations) {
8608
- chunkSDOQKSKI_js.stopAllPersistentAudio();
8608
+ chunk35YJ5RLU_js.stopAllPersistentAudio();
8609
8609
  pendingModeAfterAnnotationsRef.current = nextMode;
8610
8610
  if (promptKeepInkAnnotations) {
8611
8611
  setShowKeepAnnotationsDialog(true);
@@ -8614,7 +8614,7 @@ function useAnnotationHandlers(input) {
8614
8614
  }
8615
8615
  } else {
8616
8616
  if (mode === "present") {
8617
- chunkSDOQKSKI_js.stopAllPersistentAudio();
8617
+ chunk35YJ5RLU_js.stopAllPersistentAudio();
8618
8618
  }
8619
8619
  setMode(nextMode);
8620
8620
  }
@@ -8685,13 +8685,13 @@ function useSerialize(input) {
8685
8685
  let processedSlide = slide;
8686
8686
  if (pendingEditId) {
8687
8687
  const updatedElements = slide.elements.map((el) => {
8688
- if (el.id !== pendingEditId || !chunkSDOQKSKI_js.hasTextProperties(el)) {
8688
+ if (el.id !== pendingEditId || !chunk35YJ5RLU_js.hasTextProperties(el)) {
8689
8689
  return el;
8690
8690
  }
8691
8691
  return {
8692
8692
  ...el,
8693
8693
  text: pendingEditText,
8694
- textSegments: chunkSDOQKSKI_js.remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
8694
+ textSegments: chunk35YJ5RLU_js.remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
8695
8695
  };
8696
8696
  });
8697
8697
  if (updatedElements.some((el, i) => el !== slide.elements[i])) {
@@ -8704,19 +8704,19 @@ function useSerialize(input) {
8704
8704
  const pptxGuides = guides.map((g) => ({
8705
8705
  id: g.id,
8706
8706
  orientation: g.axis === "h" ? "horz" : "vert",
8707
- positionEmu: chunkSDOQKSKI_js.guidePxToEmu(g.position)
8707
+ positionEmu: chunk35YJ5RLU_js.guidePxToEmu(g.position)
8708
8708
  }));
8709
8709
  return {
8710
8710
  ...processedSlide,
8711
8711
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
8712
8712
  };
8713
8713
  });
8714
- const slidesToSave = chunkSDOQKSKI_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
8714
+ const slidesToSave = chunk35YJ5RLU_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
8715
8715
  const saveOptions = {
8716
8716
  // Without this the Slide Size card edited a viewer-only pixel value and
8717
8717
  // the saved `p:sldSz` never moved: passing `slideSize` is the only way a
8718
8718
  // slide-size edit reaches the file.
8719
- slideSize: chunkSDOQKSKI_js.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size,
8719
+ slideSize: chunk35YJ5RLU_js.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size,
8720
8720
  headerFooter,
8721
8721
  presentationProperties,
8722
8722
  customShows: customShows.length > 0 ? customShows : void 0,
@@ -8728,9 +8728,9 @@ function useSerialize(input) {
8728
8728
  slideMasters,
8729
8729
  notesMaster,
8730
8730
  handoutMaster,
8731
- ...chunkSDOQKSKI_js.embeddedFontSaveOptions(embedFonts)
8731
+ ...chunk35YJ5RLU_js.embeddedFontSaveOptions(embedFonts)
8732
8732
  };
8733
- return chunkSDOQKSKI_js.saveDeckWithPassword(handler, slidesToSave, saveOptions, { password, purpose });
8733
+ return chunk35YJ5RLU_js.saveDeckWithPassword(handler, slidesToSave, saveOptions, { password, purpose });
8734
8734
  }, [
8735
8735
  slides,
8736
8736
  templateElementsBySlideId,
@@ -8765,7 +8765,7 @@ function useRecoveryDetection(input) {
8765
8765
  const onRestore = input.onRestore;
8766
8766
  const openVersionHistory = input.openVersionHistory;
8767
8767
  react.useEffect(() => {
8768
- if (!chunkSDOQKSKI_js.shouldProbeAutosaveRecovery({
8768
+ if (!chunk35YJ5RLU_js.shouldProbeAutosaveRecovery({
8769
8769
  alreadyChecked: recoveryCheckedRef.current,
8770
8770
  filePath,
8771
8771
  loading,
@@ -8777,7 +8777,7 @@ function useRecoveryDetection(input) {
8777
8777
  }
8778
8778
  recoveryCheckedRef.current = true;
8779
8779
  void (async () => {
8780
- const offer = await chunkSDOQKSKI_js.probeAutosaveRecovery(filePath);
8780
+ const offer = await chunk35YJ5RLU_js.probeAutosaveRecovery(filePath);
8781
8781
  if (!offer) {
8782
8782
  return;
8783
8783
  }
@@ -8790,7 +8790,7 @@ function useRecoveryDetection(input) {
8790
8790
  const record = recordRef.current;
8791
8791
  setPrompt(null);
8792
8792
  if (record && onRestore) {
8793
- onRestore(chunkSDOQKSKI_js.acceptAutosaveRecovery(record));
8793
+ onRestore(chunk35YJ5RLU_js.acceptAutosaveRecovery(record));
8794
8794
  }
8795
8795
  recordRef.current = null;
8796
8796
  }, [onRestore]);
@@ -8799,7 +8799,7 @@ function useRecoveryDetection(input) {
8799
8799
  setPrompt(null);
8800
8800
  recordRef.current = null;
8801
8801
  if (record) {
8802
- void chunkSDOQKSKI_js.discardAutosaveRecovery(record);
8802
+ void chunk35YJ5RLU_js.discardAutosaveRecovery(record);
8803
8803
  }
8804
8804
  }, []);
8805
8805
  return { prompt, restore, discard };
@@ -8839,7 +8839,7 @@ function usePresentationSetup(input) {
8839
8839
  containerRef,
8840
8840
  content,
8841
8841
  onSetMode: (nextMode) => {
8842
- if (mode === "present" && nextMode !== "present" && !chunkSDOQKSKI_js.mayLeaveSlideShow()) {
8842
+ if (mode === "present" && nextMode !== "present" && !chunk35YJ5RLU_js.mayLeaveSlideShow()) {
8843
8843
  return;
8844
8844
  }
8845
8845
  if (mode === "present" && nextMode !== "present" && annotations.hasAnyAnnotations && promptKeepInkAnnotations) {
@@ -8847,7 +8847,7 @@ function usePresentationSetup(input) {
8847
8847
  setShowKeepAnnotationsDialog(true);
8848
8848
  } else {
8849
8849
  if (mode === "present" && nextMode !== "present") {
8850
- chunkSDOQKSKI_js.stopAllPersistentAudio();
8850
+ chunk35YJ5RLU_js.stopAllPersistentAudio();
8851
8851
  stopAnimationSound();
8852
8852
  }
8853
8853
  setMode(nextMode);
@@ -8902,10 +8902,10 @@ function usePresentationSetup(input) {
8902
8902
  onToggleToolbar: () => annotations.setToolbarVisible(!annotations.toolbarVisible),
8903
8903
  onToggleSubtitles,
8904
8904
  onSaveRehearsalTimings: (timings) => {
8905
- setSlides((prev) => chunkSDOQKSKI_js.applyRehearsalTimings(prev, timings));
8905
+ setSlides((prev) => chunk35YJ5RLU_js.applyRehearsalTimings(prev, timings));
8906
8906
  history.markDirty();
8907
8907
  },
8908
- loopContinuously: chunkSDOQKSKI_js.shouldLoopContinuously(presentationProperties),
8908
+ loopContinuously: chunk35YJ5RLU_js.shouldLoopContinuously(presentationProperties),
8909
8909
  showWithAnimation: presentationProperties.showWithAnimation,
8910
8910
  useTimings: presentationProperties.advanceMode !== "manual",
8911
8911
  endWithBlackSlide
@@ -9098,7 +9098,7 @@ function useEditorOperations(input) {
9098
9098
  const { formatPainterActive, setFormatPainterActive, elementLookup } = state;
9099
9099
  react.useEffect(() => {
9100
9100
  if (formatPainterActive && !prevFormatPainterRef.current && selectedElement) {
9101
- copiedFormatRef.current = chunkSDOQKSKI_js.copyFormatFromElement(selectedElement);
9101
+ copiedFormatRef.current = chunk35YJ5RLU_js.copyFormatFromElement(selectedElement);
9102
9102
  } else if (!formatPainterActive) {
9103
9103
  copiedFormatRef.current = null;
9104
9104
  }
@@ -9124,12 +9124,12 @@ function useEditorOperations(input) {
9124
9124
  e.stopPropagation();
9125
9125
  const element = elementLookup.get(elementId);
9126
9126
  if (element) {
9127
- const updated = chunkSDOQKSKI_js.applyFormatToElement(element, copiedFormatRef.current);
9127
+ const updated = chunk35YJ5RLU_js.applyFormatToElement(element, copiedFormatRef.current);
9128
9128
  const updates = {};
9129
- if (chunkSDOQKSKI_js.hasShapeProperties(updated)) {
9129
+ if (chunk35YJ5RLU_js.hasShapeProperties(updated)) {
9130
9130
  updates.shapeStyle = updated.shapeStyle;
9131
9131
  }
9132
- if (chunkSDOQKSKI_js.hasTextProperties(updated)) {
9132
+ if (chunk35YJ5RLU_js.hasTextProperties(updated)) {
9133
9133
  updates.textStyle = updated.textStyle;
9134
9134
  }
9135
9135
  ops.updateElementById(elementId, updates);
@@ -9283,7 +9283,7 @@ function collectReferencedFontFamilies(slides) {
9283
9283
  const families = /* @__PURE__ */ new Set();
9284
9284
  for (const slide of slides) {
9285
9285
  for (const el of slide.elements) {
9286
- if (chunkSDOQKSKI_js.hasTextProperties(el) && el.textSegments) {
9286
+ if (chunk35YJ5RLU_js.hasTextProperties(el) && el.textSegments) {
9287
9287
  for (const seg of el.textSegments) {
9288
9288
  if (seg.style.fontFamily) {
9289
9289
  families.add(seg.style.fontFamily);
@@ -9531,7 +9531,7 @@ function useKeyboardShortcuts(input) {
9531
9531
  inputRef.current = input;
9532
9532
  const handleKeyDown = react.useCallback((e) => {
9533
9533
  const current = inputRef.current;
9534
- const { action, dx, dy } = chunkSDOQKSKI_js.mapEditorKey(e, {
9534
+ const { action, dx, dy } = chunk35YJ5RLU_js.mapEditorKey(e, {
9535
9535
  canEdit: current.canEdit,
9536
9536
  // The Slide Master view is an editing surface, not a viewing one.
9537
9537
  // Gating on `mode !== 'edit'` alone made `mapEditorKey` return
@@ -9544,7 +9544,7 @@ function useKeyboardShortcuts(input) {
9544
9544
  hasSelection: current.hasSelection,
9545
9545
  isEditingText: Boolean(current.inlineEditingElementId || current.tableEditorState?.isEditing),
9546
9546
  isDrawing: current.activeTool !== "select",
9547
- isTextInputTarget: chunkSDOQKSKI_js.isEditorTextInputTarget(e.target)
9547
+ isTextInputTarget: chunk35YJ5RLU_js.isEditorTextInputTarget(e.target)
9548
9548
  });
9549
9549
  if (action === null) {
9550
9550
  return;
@@ -9850,7 +9850,7 @@ function useViewerIntegration(input) {
9850
9850
  return zoom.scale;
9851
9851
  },
9852
9852
  setZoom(level) {
9853
- zoom.setScale(chunkSDOQKSKI_js.clampZoomScale(level));
9853
+ zoom.setScale(chunk35YJ5RLU_js.clampZoomScale(level));
9854
9854
  },
9855
9855
  zoomIn() {
9856
9856
  zoom.handleZoomIn();
@@ -10066,7 +10066,7 @@ function useReducedMotion() {
10066
10066
  }
10067
10067
  function useViewerOptions() {
10068
10068
  const storeRef = react.useRef(null);
10069
- storeRef.current ??= chunkSDOQKSKI_js.createViewerOptionsStore();
10069
+ storeRef.current ??= chunk35YJ5RLU_js.createViewerOptionsStore();
10070
10070
  const store = storeRef.current;
10071
10071
  const options = react.useSyncExternalStore(
10072
10072
  (onStoreChange) => store.subscribe(onStoreChange),
@@ -10075,9 +10075,9 @@ function useViewerOptions() {
10075
10075
  );
10076
10076
  return { optionsStore: store, options };
10077
10077
  }
10078
- var KNOWN_TAB_IDS = new Set(chunkSDOQKSKI_js.TOOLBAR_TABS.map((tab) => tab.id));
10078
+ var KNOWN_TAB_IDS = new Set(chunk35YJ5RLU_js.TOOLBAR_TABS.map((tab) => tab.id));
10079
10079
  function computeToolbarVisibility(hiddenActions) {
10080
- const isHidden = (id) => chunkSDOQKSKI_js.isActionHidden(id, hiddenActions);
10080
+ const isHidden = (id) => chunk35YJ5RLU_js.isActionHidden(id, hiddenActions);
10081
10081
  const isTabVisible = (id) => !KNOWN_TAB_IDS.has(id) || !isHidden(id);
10082
10082
  return { isHidden, isTabVisible };
10083
10083
  }
@@ -10163,12 +10163,12 @@ function useYjsDocumentSync({
10163
10163
  return;
10164
10164
  }
10165
10165
  try {
10166
- const handler = new chunkSDOQKSKI_js.PptxHandler();
10166
+ const handler = new chunk35YJ5RLU_js.PptxHandler();
10167
10167
  await handler.load(sourceBytes.buffer);
10168
- const currentSlides = chunkSDOQKSKI_js.readSlidesFromYDoc(
10168
+ const currentSlides = chunk35YJ5RLU_js.readSlidesFromYDoc(
10169
10169
  doc
10170
10170
  );
10171
- const slidesToSave = chunkSDOQKSKI_js.buildSaveSlides(currentSlides, templateElementsBySlideId);
10171
+ const slidesToSave = chunk35YJ5RLU_js.buildSaveSlides(currentSlides, templateElementsBySlideId);
10172
10172
  const bytes = await handler.save(slidesToSave);
10173
10173
  config.onWriteBack(bytes);
10174
10174
  } catch {
@@ -10183,10 +10183,10 @@ function useYjsDocumentSync({
10183
10183
  if (!doc || !isConnected) {
10184
10184
  return;
10185
10185
  }
10186
- const docSlides = chunkSDOQKSKI_js.readSlidesFromYDoc(
10186
+ const docSlides = chunk35YJ5RLU_js.readSlidesFromYDoc(
10187
10187
  doc
10188
10188
  );
10189
- if (!chunkSDOQKSKI_js.shouldRoomSlidesReplaceLoad(loadOrigin, docSlides.length)) {
10189
+ if (!chunk35YJ5RLU_js.shouldRoomSlidesReplaceLoad(loadOrigin, docSlides.length)) {
10190
10190
  return;
10191
10191
  }
10192
10192
  lastSyncedRef.current = JSON.stringify(docSlides);
@@ -10205,11 +10205,11 @@ function useYjsDocumentSync({
10205
10205
  lastSyncedRef.current = serialized;
10206
10206
  void (async () => {
10207
10207
  const factories = await getFactories();
10208
- chunkSDOQKSKI_js.reconcileSlidesInYDoc(
10208
+ chunk35YJ5RLU_js.reconcileSlidesInYDoc(
10209
10209
  slides,
10210
10210
  doc,
10211
10211
  factories,
10212
- chunkSDOQKSKI_js.LOCAL_SYNC_ORIGIN
10212
+ chunk35YJ5RLU_js.LOCAL_SYNC_ORIGIN
10213
10213
  );
10214
10214
  scheduleWriteBack();
10215
10215
  })();
@@ -10223,10 +10223,10 @@ function useYjsDocumentSync({
10223
10223
  return;
10224
10224
  }
10225
10225
  const handleChange = (_events, transaction) => {
10226
- if (transaction?.origin === chunkSDOQKSKI_js.LOCAL_SYNC_ORIGIN) {
10226
+ if (transaction?.origin === chunk35YJ5RLU_js.LOCAL_SYNC_ORIGIN) {
10227
10227
  return;
10228
10228
  }
10229
- const remoteSlides = chunkSDOQKSKI_js.readSlidesFromYDoc(
10229
+ const remoteSlides = chunk35YJ5RLU_js.readSlidesFromYDoc(
10230
10230
  doc
10231
10231
  );
10232
10232
  if (remoteSlides.length === 0) {
@@ -10242,7 +10242,7 @@ function useYjsDocumentSync({
10242
10242
  isApplyingRemoteRef.current = false;
10243
10243
  scheduleWriteBack();
10244
10244
  };
10245
- const unobserve = chunkSDOQKSKI_js.observeYDocSlides(
10245
+ const unobserve = chunk35YJ5RLU_js.observeYDocSlides(
10246
10246
  doc,
10247
10247
  handleChange
10248
10248
  );
@@ -10280,7 +10280,7 @@ function useBroadcastFollower({
10280
10280
  if (!broadcaster) {
10281
10281
  return;
10282
10282
  }
10283
- if (!chunkSDOQKSKI_js.shouldAutoFollowBroadcaster({
10283
+ if (!chunk35YJ5RLU_js.shouldAutoFollowBroadcaster({
10284
10284
  localRole: collab.config.role,
10285
10285
  broadcasterRole: broadcaster.role
10286
10286
  })) {
@@ -10455,10 +10455,10 @@ function useTouchGestures(input) {
10455
10455
  if (!el || !enabled) {
10456
10456
  return;
10457
10457
  }
10458
- const recognizer = chunkSDOQKSKI_js.createTouchGestureRecognizer({
10458
+ const recognizer = chunk35YJ5RLU_js.createTouchGestureRecognizer({
10459
10459
  getScale: () => scaleRef.current,
10460
- minScale: chunkSDOQKSKI_js.MIN_ZOOM_SCALE,
10461
- maxScale: chunkSDOQKSKI_js.MAX_ZOOM_SCALE,
10460
+ minScale: chunk35YJ5RLU_js.MIN_ZOOM_SCALE,
10461
+ maxScale: chunk35YJ5RLU_js.MAX_ZOOM_SCALE,
10462
10462
  callbacks: {
10463
10463
  onPinchZoom: (newScale) => callbacksRef.current.onPinchZoom?.(newScale),
10464
10464
  onSwipe: (direction) => callbacksRef.current.onSwipe?.(direction),
@@ -10498,7 +10498,7 @@ function scrollFocusedIntoView(keyboardInset) {
10498
10498
  return;
10499
10499
  }
10500
10500
  const rect = active.getBoundingClientRect();
10501
- const delta = chunkSDOQKSKI_js.computeScrollDelta(
10501
+ const delta = chunk35YJ5RLU_js.computeScrollDelta(
10502
10502
  { top: rect.top, bottom: rect.bottom },
10503
10503
  window.innerHeight,
10504
10504
  keyboardInset
@@ -10518,8 +10518,8 @@ function useKeyboardInsets(enabled = true) {
10518
10518
  return;
10519
10519
  }
10520
10520
  const update = () => {
10521
- const metrics = chunkSDOQKSKI_js.readViewportMetrics(window);
10522
- const inset = metrics ? chunkSDOQKSKI_js.computeKeyboardInset(metrics) : 0;
10521
+ const metrics = chunk35YJ5RLU_js.readViewportMetrics(window);
10522
+ const inset = metrics ? chunk35YJ5RLU_js.computeKeyboardInset(metrics) : 0;
10523
10523
  setKeyboardInset(inset);
10524
10524
  if (inset > 0) {
10525
10525
  window.requestAnimationFrame(() => scrollFocusedIntoView(inset));
@@ -10530,8 +10530,8 @@ function useKeyboardInsets(enabled = true) {
10530
10530
  vv.addEventListener("scroll", update);
10531
10531
  const onFocusIn = () => {
10532
10532
  window.requestAnimationFrame(() => {
10533
- const metrics = chunkSDOQKSKI_js.readViewportMetrics(window);
10534
- const inset = metrics ? chunkSDOQKSKI_js.computeKeyboardInset(metrics) : 0;
10533
+ const metrics = chunk35YJ5RLU_js.readViewportMetrics(window);
10534
+ const inset = metrics ? chunk35YJ5RLU_js.computeKeyboardInset(metrics) : 0;
10535
10535
  if (inset > 0) {
10536
10536
  scrollFocusedIntoView(inset);
10537
10537
  }
@@ -10544,7 +10544,7 @@ function useKeyboardInsets(enabled = true) {
10544
10544
  document.removeEventListener("focusin", onFocusIn);
10545
10545
  };
10546
10546
  }, [enabled]);
10547
- return { keyboardInset, isKeyboardOpen: chunkSDOQKSKI_js.isKeyboardOpen(keyboardInset) };
10547
+ return { keyboardInset, isKeyboardOpen: chunk35YJ5RLU_js.isKeyboardOpen(keyboardInset) };
10548
10548
  }
10549
10549
 
10550
10550
  // src/viewer/hooks/useViewerBuildingBlocks-canvas-props.ts
@@ -10571,7 +10571,7 @@ function buildCanvasProps(input) {
10571
10571
  } = input;
10572
10572
  const effectiveSlide = mode === "master" ? masterPseudoSlide : activeSlide;
10573
10573
  const effectiveTemplateElements = mode === "master" ? s.activeLayout ? s.activeMaster?.elements ?? [] : [] : templateElements;
10574
- const fieldContext = chunkSDOQKSKI_js.buildFieldSubstitutionContext({
10574
+ const fieldContext = chunk35YJ5RLU_js.buildFieldSubstitutionContext({
10575
10575
  headerFooter: s.headerFooter,
10576
10576
  customProperties: s.customProperties,
10577
10577
  slide: activeSlide
@@ -10581,13 +10581,13 @@ function buildCanvasProps(input) {
10581
10581
  if (mode === "present") {
10582
10582
  presentation.handlePresentationAction(action);
10583
10583
  } else if (action.url) {
10584
- chunkSDOQKSKI_js.safeOpenUrl(action.url);
10584
+ chunk35YJ5RLU_js.safeOpenUrl(action.url);
10585
10585
  }
10586
10586
  };
10587
10587
  const handleHyperlinkClick = (url) => {
10588
- if (chunkSDOQKSKI_js.isPpactionUrl(url)) {
10588
+ if (chunk35YJ5RLU_js.isPpactionUrl(url)) {
10589
10589
  if (mode === "present") {
10590
- const parsed = chunkSDOQKSKI_js.parsePpactionUrl(url);
10590
+ const parsed = chunk35YJ5RLU_js.parsePpactionUrl(url);
10591
10591
  if (parsed) {
10592
10592
  presentation.handlePresentationAction({
10593
10593
  action: parsed.action,
@@ -10597,7 +10597,7 @@ function buildCanvasProps(input) {
10597
10597
  }
10598
10598
  return;
10599
10599
  }
10600
- chunkSDOQKSKI_js.safeOpenUrl(url);
10600
+ chunk35YJ5RLU_js.safeOpenUrl(url);
10601
10601
  };
10602
10602
  return {
10603
10603
  activeSlide: effectiveSlide,
@@ -10693,7 +10693,7 @@ function buildCanvasProps(input) {
10693
10693
 
10694
10694
  // src/viewer/hooks/useScopedLayoutOptions.ts
10695
10695
  function scopeLayoutOptionsToActiveSlide(options, activeSlide) {
10696
- return chunkSDOQKSKI_js.scopeLayoutOptionsToSlide(options, activeSlide?.layoutPath);
10696
+ return chunk35YJ5RLU_js.scopeLayoutOptionsToSlide(options, activeSlide?.layoutPath);
10697
10697
  }
10698
10698
 
10699
10699
  // src/viewer/hooks/useViewerBuildingBlocks-toolbar-handlers.ts
@@ -10706,7 +10706,7 @@ function buildToolbarAnimationHandlers(input) {
10706
10706
  const current = activeSlide.animations ?? [];
10707
10707
  if (group === "motionPath") {
10708
10708
  propertyHandlers.handleUpdateSlide({
10709
- animations: chunkSDOQKSKI_js.applyMotionPathPreset(current, selectedElement.id, preset)
10709
+ animations: chunk35YJ5RLU_js.applyMotionPathPreset(current, selectedElement.id, preset)
10710
10710
  });
10711
10711
  return;
10712
10712
  }
@@ -10901,7 +10901,7 @@ function buildToolbarProps(input) {
10901
10901
  onOpenFile,
10902
10902
  onOpenRecentFile,
10903
10903
  onCreatePresentation: (templateId) => {
10904
- s.setSlides(chunkSDOQKSKI_js.createBackstagePresentation(templateId));
10904
+ s.setSlides(chunk35YJ5RLU_js.createBackstagePresentation(templateId));
10905
10905
  s.setActiveSlideIndex(0);
10906
10906
  s.setSelectedElementId(null);
10907
10907
  s.setSelectedElementIds([]);
@@ -10930,7 +10930,7 @@ function buildToolbarProps(input) {
10930
10930
  loadLayoutPreviews: input.loadLayoutPreviews,
10931
10931
  onInsertSlideFromLayout: slideOps.handleInsertSlideFromLayout,
10932
10932
  onInsertSlideFromTemplate: slideOps.handleInsertSlideFromTemplate,
10933
- templateScheme: chunkSDOQKSKI_js.templateSchemeFromTheme(s.theme?.colorScheme),
10933
+ templateScheme: chunk35YJ5RLU_js.templateSchemeFromTheme(s.theme?.colorScheme),
10934
10934
  customShows: s.customShows,
10935
10935
  activeCustomShowId: s.activeCustomShowId,
10936
10936
  onSetActiveCustomShowId: s.setActiveCustomShowId,
@@ -10971,7 +10971,7 @@ function buildToolbarProps(input) {
10971
10971
  isCommentsPanelOpen: s.isInspectorPaneOpen,
10972
10972
  slideCommentCount: activeSlide?.comments?.length ?? 0,
10973
10973
  formatPainterActive: s.formatPainterActive,
10974
- canActivateFormatPainter: chunkSDOQKSKI_js.hasCopyableFormat(selectedElement),
10974
+ canActivateFormatPainter: chunk35YJ5RLU_js.hasCopyableFormat(selectedElement),
10975
10975
  onToggleFormatPainter: () => s.setFormatPainterActive((p) => !p),
10976
10976
  isSelectionPaneOpen: s.isSelectionPaneOpen,
10977
10977
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -11259,7 +11259,7 @@ function useViewerBuildingBlocks(input) {
11259
11259
  }, [incomingContent]);
11260
11260
  const onOpenFile = react.useCallback(() => {
11261
11261
  void (async () => {
11262
- const picked = await chunkSDOQKSKI_js.openPptxFile();
11262
+ const picked = await chunk35YJ5RLU_js.openPptxFile();
11263
11263
  if (picked) {
11264
11264
  setContent(picked.buffer);
11265
11265
  }
@@ -11267,7 +11267,7 @@ function useViewerBuildingBlocks(input) {
11267
11267
  }, []);
11268
11268
  const onOpenRecentFile = react.useCallback((key) => {
11269
11269
  void (async () => {
11270
- const bytes = await chunkSDOQKSKI_js.readBackstageRecentFile(key);
11270
+ const bytes = await chunk35YJ5RLU_js.readBackstageRecentFile(key);
11271
11271
  if (bytes) {
11272
11272
  setContent(bytes);
11273
11273
  }