pptx-react-viewer 2.7.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/{AiChatPanel-G6DKXSM3.js → AiChatPanel-GTCK35EI.js} +22 -22
  3. package/dist/AiChatPanel-GTCK35EI.js.br +0 -0
  4. package/dist/AiChatPanel-GTCK35EI.js.gz +0 -0
  5. package/dist/{AiChatPanel-J5IGSCYA.mjs → AiChatPanel-UXPHPUQV.mjs} +3 -3
  6. package/dist/AiChatPanel-UXPHPUQV.mjs.br +0 -0
  7. package/dist/AiChatPanel-UXPHPUQV.mjs.gz +0 -0
  8. package/dist/{Model3DScene-ID6CQKEJ.mjs → Model3DScene-HDUHTKPF.mjs} +1 -1
  9. package/dist/Model3DScene-HDUHTKPF.mjs.br +0 -0
  10. package/dist/Model3DScene-HDUHTKPF.mjs.gz +0 -0
  11. package/dist/{Model3DScene-S7LKZ6IA.js → Model3DScene-USPBP3KE.js} +2 -2
  12. package/dist/Model3DScene-USPBP3KE.js.br +0 -0
  13. package/dist/Model3DScene-USPBP3KE.js.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-V5H6MXYW.mjs → SurfaceChart3DScene-7SLM73XC.mjs} +1 -1
  15. package/dist/{SurfaceChart3DScene-V5H6MXYW.mjs.br → SurfaceChart3DScene-7SLM73XC.mjs.br} +0 -0
  16. package/dist/SurfaceChart3DScene-7SLM73XC.mjs.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-XSJXJM6H.js → SurfaceChart3DScene-NZ3K5CC6.js} +2 -2
  18. package/dist/SurfaceChart3DScene-NZ3K5CC6.js.br +0 -0
  19. package/dist/SurfaceChart3DScene-NZ3K5CC6.js.gz +0 -0
  20. package/dist/{chunk-IGKLB7NQ.mjs → chunk-AHPZGUL7.mjs} +2 -2
  21. package/dist/chunk-AHPZGUL7.mjs.br +0 -0
  22. package/dist/chunk-AHPZGUL7.mjs.gz +0 -0
  23. package/dist/{chunk-4KMTZLNS.js → chunk-KGXDCDA5.js} +320 -327
  24. package/dist/chunk-KGXDCDA5.js.br +0 -0
  25. package/dist/chunk-KGXDCDA5.js.gz +0 -0
  26. package/dist/{chunk-2LOBDOTK.js → chunk-MZJMOEEX.js} +155 -66
  27. package/dist/chunk-MZJMOEEX.js.br +0 -0
  28. package/dist/chunk-MZJMOEEX.js.gz +0 -0
  29. package/dist/{chunk-YUHEJWUN.mjs → chunk-OIH753PJ.mjs} +7 -14
  30. package/dist/chunk-OIH753PJ.mjs.br +0 -0
  31. package/dist/chunk-OIH753PJ.mjs.gz +0 -0
  32. package/dist/{chunk-SOLHDKNK.mjs → chunk-PVCUYPU7.mjs} +1 -1
  33. package/dist/chunk-PVCUYPU7.mjs.br +0 -0
  34. package/dist/chunk-PVCUYPU7.mjs.gz +0 -0
  35. package/dist/{chunk-B4XJTZR4.js → chunk-SMW4QYGK.js} +236 -236
  36. package/dist/chunk-SMW4QYGK.js.br +0 -0
  37. package/dist/chunk-SMW4QYGK.js.gz +0 -0
  38. package/dist/{chunk-GLQFRVAN.js → chunk-SOBKYMMR.js} +988 -961
  39. package/dist/chunk-SOBKYMMR.js.br +0 -0
  40. package/dist/chunk-SOBKYMMR.js.gz +0 -0
  41. package/dist/{chunk-Y4EB65WB.mjs → chunk-TJ5QMUUJ.mjs} +152 -125
  42. package/dist/chunk-TJ5QMUUJ.mjs.br +0 -0
  43. package/dist/chunk-TJ5QMUUJ.mjs.gz +0 -0
  44. package/dist/{chunk-6C4UY7GX.js → chunk-VFLBLJ4G.js} +3 -3
  45. package/dist/chunk-VFLBLJ4G.js.br +0 -0
  46. package/dist/chunk-VFLBLJ4G.js.gz +0 -0
  47. package/dist/{chunk-WH46JCNF.mjs → chunk-VH2QF5CT.mjs} +154 -67
  48. package/dist/chunk-VH2QF5CT.mjs.br +0 -0
  49. package/dist/chunk-VH2QF5CT.mjs.gz +0 -0
  50. package/dist/index.js +34 -34
  51. package/dist/index.js.br +0 -0
  52. package/dist/index.js.gz +0 -0
  53. package/dist/index.mjs +5 -5
  54. package/dist/index.mjs.br +0 -0
  55. package/dist/index.mjs.gz +0 -0
  56. package/dist/internals.d.ts.map +1 -1
  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 +21 -21
  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 +1 -1
  70. package/dist/AiChatPanel-G6DKXSM3.js.br +0 -0
  71. package/dist/AiChatPanel-G6DKXSM3.js.gz +0 -0
  72. package/dist/AiChatPanel-J5IGSCYA.mjs.br +0 -0
  73. package/dist/AiChatPanel-J5IGSCYA.mjs.gz +0 -0
  74. package/dist/Model3DScene-ID6CQKEJ.mjs.br +0 -0
  75. package/dist/Model3DScene-ID6CQKEJ.mjs.gz +0 -0
  76. package/dist/Model3DScene-S7LKZ6IA.js.br +0 -0
  77. package/dist/Model3DScene-S7LKZ6IA.js.gz +0 -0
  78. package/dist/SurfaceChart3DScene-V5H6MXYW.mjs.gz +0 -0
  79. package/dist/SurfaceChart3DScene-XSJXJM6H.js.br +0 -0
  80. package/dist/SurfaceChart3DScene-XSJXJM6H.js.gz +0 -0
  81. package/dist/chunk-2LOBDOTK.js.br +0 -0
  82. package/dist/chunk-2LOBDOTK.js.gz +0 -0
  83. package/dist/chunk-4KMTZLNS.js.br +0 -0
  84. package/dist/chunk-4KMTZLNS.js.gz +0 -0
  85. package/dist/chunk-6C4UY7GX.js.br +0 -0
  86. package/dist/chunk-6C4UY7GX.js.gz +0 -0
  87. package/dist/chunk-B4XJTZR4.js.br +0 -0
  88. package/dist/chunk-B4XJTZR4.js.gz +0 -0
  89. package/dist/chunk-GLQFRVAN.js.br +0 -0
  90. package/dist/chunk-GLQFRVAN.js.gz +0 -0
  91. package/dist/chunk-IGKLB7NQ.mjs.br +0 -0
  92. package/dist/chunk-IGKLB7NQ.mjs.gz +0 -0
  93. package/dist/chunk-SOLHDKNK.mjs.br +0 -0
  94. package/dist/chunk-SOLHDKNK.mjs.gz +0 -0
  95. package/dist/chunk-WH46JCNF.mjs.br +0 -0
  96. package/dist/chunk-WH46JCNF.mjs.gz +0 -0
  97. package/dist/chunk-Y4EB65WB.mjs.br +0 -0
  98. package/dist/chunk-Y4EB65WB.mjs.gz +0 -0
  99. package/dist/chunk-YUHEJWUN.mjs.br +0 -0
  100. package/dist/chunk-YUHEJWUN.mjs.gz +0 -0
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkB4XJTZR4_js = require('./chunk-B4XJTZR4.js');
3
+ var chunkSMW4QYGK_js = require('./chunk-SMW4QYGK.js');
4
4
  var chunk25VSL2BB_js = require('./chunk-25VSL2BB.js');
5
- var chunk2LOBDOTK_js = require('./chunk-2LOBDOTK.js');
5
+ var chunkMZJMOEEX_js = require('./chunk-MZJMOEEX.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 = chunk2LOBDOTK_js.DEFAULT_VIRTUAL_OVERSCAN
17
+ overscan = chunkMZJMOEEX_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 = chunk2LOBDOTK_js.computeVirtualRange(totalItems, itemHeight, scrollTop, viewportHeight, overscan);
47
+ const range = chunkMZJMOEEX_js.computeVirtualRange(totalItems, itemHeight, scrollTop, viewportHeight, overscan);
48
48
  const safeItemHeight = Math.max(itemHeight, 1);
49
49
  const scrollToIndex = react.useCallback(
50
50
  (index, behavior = "smooth") => {
@@ -107,7 +107,7 @@ function usePresenceTracking({
107
107
  awareness.setLocalStateField("presence", state);
108
108
  lastBroadcastRef.current = Date.now();
109
109
  };
110
- if (elapsed >= chunk2LOBDOTK_js.BROADCAST_THROTTLE_MS) {
110
+ if (elapsed >= chunkMZJMOEEX_js.BROADCAST_THROTTLE_MS) {
111
111
  if (pendingBroadcastRef.current) {
112
112
  clearTimeout(pendingBroadcastRef.current);
113
113
  pendingBroadcastRef.current = null;
@@ -117,7 +117,7 @@ function usePresenceTracking({
117
117
  pendingBroadcastRef.current = setTimeout(() => {
118
118
  pendingBroadcastRef.current = null;
119
119
  flush();
120
- }, chunk2LOBDOTK_js.BROADCAST_THROTTLE_MS - elapsed);
120
+ }, chunkMZJMOEEX_js.BROADCAST_THROTTLE_MS - elapsed);
121
121
  }
122
122
  },
123
123
  [awareness, userName, userColor, userAvatar, role]
@@ -142,7 +142,7 @@ function usePresenceTracking({
142
142
  return;
143
143
  }
144
144
  const handleChange = () => {
145
- const users = chunk2LOBDOTK_js.derivePresenceList(
145
+ const users = chunkMZJMOEEX_js.derivePresenceList(
146
146
  awareness.getStates(),
147
147
  localClientId,
148
148
  canvasWidth,
@@ -194,7 +194,7 @@ function useYjsProvider({ config }) {
194
194
  const departureRef = react.useRef(null);
195
195
  const gateRef = react.useRef(null);
196
196
  if (!gateRef.current) {
197
- gateRef.current = chunk2LOBDOTK_js.createSyncGate(() => setSynced(true));
197
+ gateRef.current = chunkMZJMOEEX_js.createSyncGate(() => setSynced(true));
198
198
  }
199
199
  const teardown = react.useCallback(() => {
200
200
  if (timeoutRef.current) {
@@ -214,7 +214,7 @@ function useYjsProvider({ config }) {
214
214
  const buildCleanup = react.useCallback(
215
215
  (provider, yDoc) => () => {
216
216
  announceDeparture();
217
- chunk2LOBDOTK_js.clearLocalAwareness(provider.awareness);
217
+ chunkMZJMOEEX_js.clearLocalAwareness(provider.awareness);
218
218
  provider.destroy();
219
219
  yDoc.destroy();
220
220
  setDoc(null);
@@ -239,9 +239,9 @@ function useYjsProvider({ config }) {
239
239
  if (config.authToken) {
240
240
  opts.password = config.authToken;
241
241
  }
242
- const roomId = chunk2LOBDOTK_js.validateRoomId(config.roomId);
242
+ const roomId = chunkMZJMOEEX_js.validateRoomId(config.roomId);
243
243
  const provider = new WebrtcProvider(roomId, yDoc, opts);
244
- departureRef.current = chunk2LOBDOTK_js.createDepartureChannel(roomId, provider.awareness);
244
+ departureRef.current = chunkMZJMOEEX_js.createDepartureChannel(roomId, provider.awareness);
245
245
  setDoc(yDoc);
246
246
  setAwareness(provider.awareness);
247
247
  setClientId(provider.awareness.clientID);
@@ -283,13 +283,13 @@ function useYjsProvider({ config }) {
283
283
  if (!config) {
284
284
  return;
285
285
  }
286
- const roomId = chunk2LOBDOTK_js.validateRoomId(config.roomId);
287
- const transport = config.transport ?? chunk2LOBDOTK_js.resolveTransportForServerUrl(config.serverUrl);
286
+ const roomId = chunkMZJMOEEX_js.validateRoomId(config.roomId);
287
+ const transport = config.transport ?? chunkMZJMOEEX_js.resolveTransportForServerUrl(config.serverUrl);
288
288
  if (transport === "webrtc") {
289
289
  await initWebrtc();
290
290
  return;
291
291
  }
292
- if (chunk2LOBDOTK_js.isMixedContentBlocked(config.serverUrl)) {
292
+ if (chunkMZJMOEEX_js.isMixedContentBlocked(config.serverUrl)) {
293
293
  console.warn(
294
294
  `[pptx-viewer] Refusing to connect: insecure ws:// server "${config.serverUrl}" is blocked from a secure (https) page. Use a wss:// URL.`
295
295
  );
@@ -303,7 +303,7 @@ function useYjsProvider({ config }) {
303
303
  const provider = new WebsocketProvider(config.serverUrl, roomId, yDoc, {
304
304
  params: config.authToken ? { token: config.authToken } : void 0
305
305
  });
306
- departureRef.current = chunk2LOBDOTK_js.createDepartureChannel(roomId, provider.awareness);
306
+ departureRef.current = chunkMZJMOEEX_js.createDepartureChannel(roomId, provider.awareness);
307
307
  let connected = false;
308
308
  const handleStatus = (event) => {
309
309
  if (event.status === "connected") {
@@ -343,7 +343,7 @@ function useYjsProvider({ config }) {
343
343
  provider.off("status", handleStatus);
344
344
  provider.off("sync", handleSynced);
345
345
  announceDeparture();
346
- chunk2LOBDOTK_js.clearLocalAwareness(provider.awareness);
346
+ chunkMZJMOEEX_js.clearLocalAwareness(provider.awareness);
347
347
  provider.destroy();
348
348
  yDoc.destroy();
349
349
  setDoc(null);
@@ -352,7 +352,7 @@ function useYjsProvider({ config }) {
352
352
  cleanupRef.current = null;
353
353
  setStatus("error");
354
354
  }
355
- }, chunk2LOBDOTK_js.CONNECTION_TIMEOUT_MS);
355
+ }, chunkMZJMOEEX_js.CONNECTION_TIMEOUT_MS);
356
356
  }
357
357
  setDoc(yDoc);
358
358
  setAwareness(provider.awareness);
@@ -361,7 +361,7 @@ function useYjsProvider({ config }) {
361
361
  provider.off("status", handleStatus);
362
362
  provider.off("sync", handleSynced);
363
363
  announceDeparture();
364
- chunk2LOBDOTK_js.clearLocalAwareness(provider.awareness);
364
+ chunkMZJMOEEX_js.clearLocalAwareness(provider.awareness);
365
365
  provider.destroy();
366
366
  yDoc.destroy();
367
367
  setDoc(null);
@@ -387,7 +387,7 @@ function useYjsProvider({ config }) {
387
387
  ]);
388
388
  react.useEffect(() => {
389
389
  init();
390
- const disposeTeardown = chunk2LOBDOTK_js.registerCollaborationTeardown({
390
+ const disposeTeardown = chunkMZJMOEEX_js.registerCollaborationTeardown({
391
391
  leave: teardown,
392
392
  rejoin: init
393
393
  });
@@ -408,7 +408,7 @@ function useCollaborativeState({
408
408
  canvasWidth,
409
409
  canvasHeight
410
410
  }) {
411
- const userColor = chunk2LOBDOTK_js.sanitizeColor(config?.userColor, "#6366f1");
411
+ const userColor = chunkMZJMOEEX_js.sanitizeColor(config?.userColor, "#6366f1");
412
412
  const { status, awareness, doc, clientId, synced, retry } = useYjsProvider({ config });
413
413
  const { remoteUsers, broadcastPresence } = usePresenceTracking({
414
414
  awareness,
@@ -517,8 +517,8 @@ function useEditorHistory(input) {
517
517
  width: canvasSize.width,
518
518
  height: canvasSize.height,
519
519
  activeSlideIndex,
520
- slides: slides.map(chunk2LOBDOTK_js.cloneSlide),
521
- templateElementsBySlideId: chunk2LOBDOTK_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
520
+ slides: slides.map(chunkMZJMOEEX_js.cloneSlide),
521
+ templateElementsBySlideId: chunkMZJMOEEX_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
522
522
  ...actionLabel ? { actionLabel } : {}
523
523
  };
524
524
  },
@@ -531,9 +531,9 @@ function useEditorHistory(input) {
531
531
  width: snapshot.width,
532
532
  height: snapshot.height
533
533
  });
534
- setSlides(snapshot.slides.map(chunk2LOBDOTK_js.cloneSlide));
534
+ setSlides(snapshot.slides.map(chunkMZJMOEEX_js.cloneSlide));
535
535
  setTemplateElementsBySlideId(
536
- chunk2LOBDOTK_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
536
+ chunkMZJMOEEX_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
537
537
  );
538
538
  setActiveSlideIndex(Math.min(snapshot.activeSlideIndex, maxSlideIndex));
539
539
  setSelectedElementIds([]);
@@ -567,8 +567,8 @@ function useEditorHistory(input) {
567
567
  const currentSnapshot = buildHistorySnapshot();
568
568
  historyFutureRef.current.push(currentSnapshot);
569
569
  isApplyingHistoryRef.current = true;
570
- const nextSnapshot = chunkB4XJTZR4_js.cloneHistorySnapshot(previousSnapshot);
571
- lastHistorySnapshotRef.current = chunkB4XJTZR4_js.cloneHistorySnapshot(nextSnapshot);
570
+ const nextSnapshot = chunkSMW4QYGK_js.cloneHistorySnapshot(previousSnapshot);
571
+ lastHistorySnapshotRef.current = chunkSMW4QYGK_js.cloneHistorySnapshot(nextSnapshot);
572
572
  lastHistorySerializedRef.current = JSON.stringify(nextSnapshot);
573
573
  applyHistorySnapshot(nextSnapshot);
574
574
  updateHistoryAvailability();
@@ -589,8 +589,8 @@ function useEditorHistory(input) {
589
589
  const currentSnapshot = buildHistorySnapshot();
590
590
  historyPastRef.current.push(currentSnapshot);
591
591
  isApplyingHistoryRef.current = true;
592
- const targetSnapshot = chunkB4XJTZR4_js.cloneHistorySnapshot(nextSnapshot);
593
- lastHistorySnapshotRef.current = chunkB4XJTZR4_js.cloneHistorySnapshot(targetSnapshot);
592
+ const targetSnapshot = chunkSMW4QYGK_js.cloneHistorySnapshot(nextSnapshot);
593
+ lastHistorySnapshotRef.current = chunkSMW4QYGK_js.cloneHistorySnapshot(targetSnapshot);
594
594
  lastHistorySerializedRef.current = JSON.stringify(targetSnapshot);
595
595
  applyHistorySnapshot(targetSnapshot);
596
596
  updateHistoryAvailability();
@@ -608,7 +608,7 @@ function useEditorHistory(input) {
608
608
  historyPastRef.current = [];
609
609
  historyFutureRef.current = [];
610
610
  if (initialSnapshot) {
611
- const clonedInitial = chunkB4XJTZR4_js.cloneHistorySnapshot(initialSnapshot);
611
+ const clonedInitial = chunkSMW4QYGK_js.cloneHistorySnapshot(initialSnapshot);
612
612
  lastHistorySnapshotRef.current = clonedInitial;
613
613
  lastHistorySerializedRef.current = JSON.stringify(clonedInitial);
614
614
  } else {
@@ -649,18 +649,18 @@ function useEditorHistory(input) {
649
649
  }
650
650
  const previousSnapshot = lastHistorySnapshotRef.current;
651
651
  if (!previousSnapshot) {
652
- lastHistorySnapshotRef.current = chunkB4XJTZR4_js.cloneHistorySnapshot(snapshot);
652
+ lastHistorySnapshotRef.current = chunkSMW4QYGK_js.cloneHistorySnapshot(snapshot);
653
653
  lastHistorySerializedRef.current = serialized;
654
654
  lastCheapHashRef.current = cheapHash;
655
655
  updateHistoryAvailability();
656
656
  return;
657
657
  }
658
- historyPastRef.current.push(chunkB4XJTZR4_js.cloneHistorySnapshot(previousSnapshot));
658
+ historyPastRef.current.push(chunkSMW4QYGK_js.cloneHistorySnapshot(previousSnapshot));
659
659
  while (historyPastRef.current.length > Math.max(1, maxHistoryEntries)) {
660
660
  historyPastRef.current.shift();
661
661
  }
662
662
  historyFutureRef.current = [];
663
- lastHistorySnapshotRef.current = chunkB4XJTZR4_js.cloneHistorySnapshot(snapshot);
663
+ lastHistorySnapshotRef.current = chunkSMW4QYGK_js.cloneHistorySnapshot(snapshot);
664
664
  lastHistorySerializedRef.current = serialized;
665
665
  lastCheapHashRef.current = cheapHash;
666
666
  updateHistoryAvailability();
@@ -749,7 +749,7 @@ function useZoomViewport({
749
749
  if (!wrapper || !canvasViewport) {
750
750
  return;
751
751
  }
752
- const boundedScale = Math.min(Math.max(nextScale, chunkB4XJTZR4_js.MIN_ZOOM_SCALE), chunkB4XJTZR4_js.MAX_ZOOM_SCALE);
752
+ const boundedScale = Math.min(Math.max(nextScale, chunkSMW4QYGK_js.MIN_ZOOM_SCALE), chunkSMW4QYGK_js.MAX_ZOOM_SCALE);
753
753
  const nextEditorScale = fitScale * boundedScale;
754
754
  const centerX = (bounds.minX + bounds.maxX) / 2;
755
755
  const centerY = (bounds.minY + bounds.maxY) / 2;
@@ -764,10 +764,10 @@ function useZoomViewport({
764
764
  [fitScale]
765
765
  );
766
766
  const handleZoomIn = react.useCallback(() => {
767
- setScale((currentScale) => Math.min(currentScale + 0.1, chunkB4XJTZR4_js.MAX_ZOOM_SCALE));
767
+ setScale((currentScale) => Math.min(currentScale + 0.1, chunkSMW4QYGK_js.MAX_ZOOM_SCALE));
768
768
  }, []);
769
769
  const handleZoomOut = react.useCallback(() => {
770
- setScale((currentScale) => Math.max(currentScale - 0.1, chunkB4XJTZR4_js.MIN_ZOOM_SCALE));
770
+ setScale((currentScale) => Math.max(currentScale - 0.1, chunkSMW4QYGK_js.MIN_ZOOM_SCALE));
771
771
  }, []);
772
772
  const handleResetZoom = react.useCallback(() => {
773
773
  setScale(1);
@@ -786,22 +786,22 @@ function useZoomViewport({
786
786
  selectedElements.forEach((element) => {
787
787
  minX = Math.min(minX, element.x);
788
788
  minY = Math.min(minY, element.y);
789
- maxX = Math.max(maxX, element.x + Math.max(element.width, chunkB4XJTZR4_js.MIN_ELEMENT_SIZE));
790
- maxY = Math.max(maxY, element.y + Math.max(element.height, chunkB4XJTZR4_js.MIN_ELEMENT_SIZE));
789
+ maxX = Math.max(maxX, element.x + Math.max(element.width, chunkSMW4QYGK_js.MIN_ELEMENT_SIZE));
790
+ maxY = Math.max(maxY, element.y + Math.max(element.height, chunkSMW4QYGK_js.MIN_ELEMENT_SIZE));
791
791
  });
792
792
  if (!Number.isFinite(minX) || !Number.isFinite(minY) || !Number.isFinite(maxX) || !Number.isFinite(maxY)) {
793
793
  return;
794
794
  }
795
795
  const selectionBounds = { minX, minY, maxX, maxY };
796
- const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkB4XJTZR4_js.MIN_ELEMENT_SIZE);
797
- const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkB4XJTZR4_js.MIN_ELEMENT_SIZE);
796
+ const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkSMW4QYGK_js.MIN_ELEMENT_SIZE);
797
+ const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkSMW4QYGK_js.MIN_ELEMENT_SIZE);
798
798
  const availableWidth = Math.max(
799
- effectiveEditorDimensions.width - chunkB4XJTZR4_js.ZOOM_TO_SELECTION_PADDING,
800
- chunkB4XJTZR4_js.MIN_ELEMENT_SIZE
799
+ effectiveEditorDimensions.width - chunkSMW4QYGK_js.ZOOM_TO_SELECTION_PADDING,
800
+ chunkSMW4QYGK_js.MIN_ELEMENT_SIZE
801
801
  );
802
802
  const availableHeight = Math.max(
803
- effectiveEditorDimensions.height - chunkB4XJTZR4_js.ZOOM_TO_SELECTION_PADDING,
804
- chunkB4XJTZR4_js.MIN_ELEMENT_SIZE
803
+ effectiveEditorDimensions.height - chunkSMW4QYGK_js.ZOOM_TO_SELECTION_PADDING,
804
+ chunkSMW4QYGK_js.MIN_ELEMENT_SIZE
805
805
  );
806
806
  const targetEditorScale = Math.min(
807
807
  availableWidth / boundsWidth,
@@ -809,8 +809,8 @@ function useZoomViewport({
809
809
  );
810
810
  const safeFitScale = fitScale > Number.EPSILON ? fitScale : Number.EPSILON;
811
811
  const nextScale = Math.min(
812
- Math.max(targetEditorScale / safeFitScale, chunkB4XJTZR4_js.MIN_ZOOM_SCALE),
813
- chunkB4XJTZR4_js.MAX_ZOOM_SCALE
812
+ Math.max(targetEditorScale / safeFitScale, chunkSMW4QYGK_js.MIN_ZOOM_SCALE),
813
+ chunkSMW4QYGK_js.MAX_ZOOM_SCALE
814
814
  );
815
815
  setScale(nextScale);
816
816
  window.requestAnimationFrame(() => {
@@ -832,7 +832,7 @@ function useZoomViewport({
832
832
  event.preventDefault();
833
833
  const delta = event.deltaY * -1e-3;
834
834
  setScale(
835
- (currentScale) => Math.min(Math.max(currentScale + delta, chunkB4XJTZR4_js.MIN_ZOOM_SCALE), chunkB4XJTZR4_js.MAX_ZOOM_SCALE)
835
+ (currentScale) => Math.min(Math.max(currentScale + delta, chunkSMW4QYGK_js.MIN_ZOOM_SCALE), chunkSMW4QYGK_js.MAX_ZOOM_SCALE)
836
836
  );
837
837
  }, []);
838
838
  react.useEffect(() => {
@@ -910,7 +910,7 @@ function applyAnimationGroupSteps(group, onPlayActionSound, setPresentationEleme
910
910
  const command = step.command;
911
911
  const timer = window.setTimeout(
912
912
  () => {
913
- chunkB4XJTZR4_js.executeMediaCommand(command);
913
+ chunkSMW4QYGK_js.executeMediaCommand(command);
914
914
  },
915
915
  Math.max(0, step.delayMs)
916
916
  );
@@ -1026,7 +1026,7 @@ function useAnimationPlayback(input) {
1026
1026
  (controller, group) => {
1027
1027
  driveBuildReveal(
1028
1028
  controller,
1029
- chunk2LOBDOTK_js.PresentationAnimationController.collectBuildStepIds(group),
1029
+ chunkMZJMOEEX_js.PresentationAnimationController.collectBuildStepIds(group),
1030
1030
  setPresentationElementStates,
1031
1031
  buildRafRef
1032
1032
  );
@@ -1089,7 +1089,7 @@ function useAnimationPlayback(input) {
1089
1089
  setHoverTriggerShapeIds(/* @__PURE__ */ new Set());
1090
1090
  return;
1091
1091
  }
1092
- const controller = chunk2LOBDOTK_js.PresentationAnimationController.fromSlide(slide);
1092
+ const controller = chunkMZJMOEEX_js.PresentationAnimationController.fromSlide(slide);
1093
1093
  controllerRef.current = controller;
1094
1094
  setPresentationKeyframesCss(controller.keyframesCss);
1095
1095
  setInteractiveTriggerShapeIds(controller.interactiveTriggerShapeIds);
@@ -1237,7 +1237,7 @@ function useAnimationPlayback(input) {
1237
1237
  }))
1238
1238
  );
1239
1239
  entranceAnimations.forEach((animation, animationIndex) => {
1240
- const delay = chunk2LOBDOTK_js.computeEntranceAnimationDelay(animation.delayMs, animationIndex);
1240
+ const delay = chunkMZJMOEEX_js.computeEntranceAnimationDelay(animation.delayMs, animationIndex);
1241
1241
  const timer = window.setTimeout(() => {
1242
1242
  setPresentationAnimations(
1243
1243
  (previousAnimations) => previousAnimations.map(
@@ -1274,12 +1274,12 @@ function useAnimationPlayback(input) {
1274
1274
  presentationTimersRef
1275
1275
  };
1276
1276
  }
1277
- var PRESENTER_CHANNEL_NAME = chunk2LOBDOTK_js.PRESENTATION_CHANNEL_NAME;
1278
- var AUDIENCE_HASH = chunk2LOBDOTK_js.PRESENTATION_HASH;
1279
- var PRESENTER_MSG_ORIGIN = chunk2LOBDOTK_js.PRESENTATION_MESSAGE_ORIGIN;
1280
- var AUDIENCE_NONCE_KEY = chunk2LOBDOTK_js.PRESENTATION_NONCE_KEY;
1277
+ var PRESENTER_CHANNEL_NAME = chunkMZJMOEEX_js.PRESENTATION_CHANNEL_NAME;
1278
+ var AUDIENCE_HASH = chunkMZJMOEEX_js.PRESENTATION_HASH;
1279
+ var PRESENTER_MSG_ORIGIN = chunkMZJMOEEX_js.PRESENTATION_MESSAGE_ORIGIN;
1280
+ var AUDIENCE_NONCE_KEY = chunkMZJMOEEX_js.PRESENTATION_NONCE_KEY;
1281
1281
  function generateSessionId() {
1282
- return chunk2LOBDOTK_js.createPresentationSessionId();
1282
+ return chunkMZJMOEEX_js.createPresentationSessionId();
1283
1283
  }
1284
1284
  function parseAudienceNonce() {
1285
1285
  const hash = window.location.hash;
@@ -1315,7 +1315,7 @@ function usePresenterWindow(input) {
1315
1315
  }, []);
1316
1316
  const swapDisplays = react.useCallback(async () => {
1317
1317
  const audience = audienceWindowRef.current;
1318
- return audience && !audience.closed ? chunk2LOBDOTK_js.swapPresentationWindows(window, audience) : false;
1318
+ return audience && !audience.closed ? chunkMZJMOEEX_js.swapPresentationWindows(window, audience) : false;
1319
1319
  }, []);
1320
1320
  const syncSlideToAudience = react.useCallback(
1321
1321
  (slideIndex) => {
@@ -1379,7 +1379,7 @@ function usePresenterWindow(input) {
1379
1379
  pollTimerRef.current = null;
1380
1380
  }
1381
1381
  if (closingSessionId) {
1382
- void chunk2LOBDOTK_js.clearAudienceContent(closingSessionId);
1382
+ void chunkMZJMOEEX_js.clearAudienceContent(closingSessionId);
1383
1383
  }
1384
1384
  }, [getChannel]);
1385
1385
  const openAudienceWindow = react.useCallback(() => {
@@ -1397,10 +1397,10 @@ function usePresenterWindow(input) {
1397
1397
  audienceWindowRef.current = blankWin;
1398
1398
  const sessionId = generateSessionId();
1399
1399
  sessionIdRef.current = sessionId;
1400
- const audienceUrl = chunk2LOBDOTK_js.buildPresentationAudienceUrl(window.location.href, sessionId);
1401
- void chunk2LOBDOTK_js.resolveAudienceScreenPlacement(window).then((placement) => {
1400
+ const audienceUrl = chunkMZJMOEEX_js.buildPresentationAudienceUrl(window.location.href, sessionId);
1401
+ void chunkMZJMOEEX_js.resolveAudienceScreenPlacement(window).then((placement) => {
1402
1402
  if (placement && audienceWindowRef.current === blankWin && !blankWin.closed) {
1403
- chunk2LOBDOTK_js.placeAudienceWindow(blankWin, placement);
1403
+ chunkMZJMOEEX_js.placeAudienceWindow(blankWin, placement);
1404
1404
  }
1405
1405
  return void 0;
1406
1406
  });
@@ -1430,7 +1430,7 @@ function usePresenterWindow(input) {
1430
1430
  }
1431
1431
  };
1432
1432
  if (content) {
1433
- void chunk2LOBDOTK_js.storeAudienceContent(content, sessionId).then(() => navigateOrClose(true)).catch(() => navigateOrClose(false));
1433
+ void chunkMZJMOEEX_js.storeAudienceContent(content, sessionId).then(() => navigateOrClose(true)).catch(() => navigateOrClose(false));
1434
1434
  } else {
1435
1435
  navigateOrClose(true);
1436
1436
  }
@@ -1456,7 +1456,7 @@ function usePresenterWindow(input) {
1456
1456
  }
1457
1457
  const handleMessage = (event) => {
1458
1458
  const message = event.data;
1459
- if (chunk2LOBDOTK_js.isPresentationSessionMessage(message) && message.type === "audience-ready" && message.sessionId === sessionIdRef.current) {
1459
+ if (chunkMZJMOEEX_js.isPresentationSessionMessage(message) && message.type === "audience-ready" && message.sessionId === sessionIdRef.current) {
1460
1460
  syncStateToAudience(snapshotRef.current);
1461
1461
  }
1462
1462
  };
@@ -1485,7 +1485,7 @@ function usePresenterWindow(input) {
1485
1485
  react.useEffect(() => {
1486
1486
  const handleBeforeUnload = () => {
1487
1487
  if (sessionIdRef.current) {
1488
- void chunk2LOBDOTK_js.clearAudienceContent(sessionIdRef.current);
1488
+ void chunkMZJMOEEX_js.clearAudienceContent(sessionIdRef.current);
1489
1489
  }
1490
1490
  };
1491
1491
  window.addEventListener("beforeunload", handleBeforeUnload);
@@ -1547,7 +1547,7 @@ function useAudienceMode(input) {
1547
1547
  }
1548
1548
  channel.onmessage = (event) => {
1549
1549
  const data = event.data;
1550
- if (!chunk2LOBDOTK_js.isPresentationSessionMessage(data) || data.origin !== PRESENTER_MSG_ORIGIN) {
1550
+ if (!chunkMZJMOEEX_js.isPresentationSessionMessage(data) || data.origin !== PRESENTER_MSG_ORIGIN) {
1551
1551
  return;
1552
1552
  }
1553
1553
  if (expectedSessionId && data.sessionId !== expectedSessionId) {
@@ -1563,16 +1563,16 @@ function useAudienceMode(input) {
1563
1563
  }
1564
1564
  if (data.type === "presenter-exit") {
1565
1565
  if (expectedSessionId) {
1566
- void chunk2LOBDOTK_js.clearAudienceContent(expectedSessionId);
1566
+ void chunkMZJMOEEX_js.clearAudienceContent(expectedSessionId);
1567
1567
  }
1568
- if (chunk2LOBDOTK_js.endAudienceDisplay(window)) {
1568
+ if (chunkMZJMOEEX_js.endAudienceDisplay(window)) {
1569
1569
  handlers.onPresenterEnded?.();
1570
1570
  }
1571
1571
  }
1572
1572
  };
1573
1573
  if (expectedSessionId) {
1574
1574
  channel.postMessage({
1575
- origin: chunk2LOBDOTK_js.PRESENTATION_MESSAGE_ORIGIN,
1575
+ origin: chunkMZJMOEEX_js.PRESENTATION_MESSAGE_ORIGIN,
1576
1576
  type: "audience-ready",
1577
1577
  sessionId: expectedSessionId
1578
1578
  });
@@ -1604,14 +1604,14 @@ function usePresentationKeyboard(input) {
1604
1604
  presentationSlideIndex,
1605
1605
  setShowRehearsalSummary
1606
1606
  } = input;
1607
- const keyBufferRef = react.useRef(chunk2LOBDOTK_js.createPresentationKeyBuffer());
1607
+ const keyBufferRef = react.useRef(chunkMZJMOEEX_js.createPresentationKeyBuffer());
1608
1608
  react.useEffect(() => {
1609
- if (mode !== "present" || !chunk2LOBDOTK_js.acceptsPresentationInput()) {
1610
- keyBufferRef.current = chunk2LOBDOTK_js.createPresentationKeyBuffer();
1609
+ if (mode !== "present" || !chunkMZJMOEEX_js.acceptsPresentationInput()) {
1610
+ keyBufferRef.current = chunkMZJMOEEX_js.createPresentationKeyBuffer();
1611
1611
  return;
1612
1612
  }
1613
1613
  const handleKeyDown = (event) => {
1614
- const mapped = chunk2LOBDOTK_js.mapPresentationKey(event, keyBufferRef.current);
1614
+ const mapped = chunkMZJMOEEX_js.mapPresentationKey(event, keyBufferRef.current);
1615
1615
  if (mapped.action === "none") {
1616
1616
  return;
1617
1617
  }
@@ -1819,7 +1819,7 @@ function handlePresentationActionImpl(action, deps) {
1819
1819
  return;
1820
1820
  }
1821
1821
  if (action.url && !actionStr.includes("hlinksldjump")) {
1822
- if (chunk2LOBDOTK_js.isUrlSafe(action.url)) {
1822
+ if (chunkMZJMOEEX_js.isUrlSafe(action.url)) {
1823
1823
  window.open(action.url, "_blank", "noopener,noreferrer");
1824
1824
  }
1825
1825
  }
@@ -1829,7 +1829,7 @@ function handlePresentationActionImpl(action, deps) {
1829
1829
  function executeSlideTransition(nextSlideIndex, deps) {
1830
1830
  const incomingSlide = deps.slides[nextSlideIndex];
1831
1831
  const transition = incomingSlide?.transition;
1832
- const durationMs = deps.playTransition ? chunk2LOBDOTK_js.resolveTransitionDurationMs(transition) : 0;
1832
+ const durationMs = deps.playTransition ? chunkMZJMOEEX_js.resolveTransitionDurationMs(transition) : 0;
1833
1833
  deps.clearPresentationTimers();
1834
1834
  deps.setPresentationSlideIndex(nextSlideIndex);
1835
1835
  deps.onSetActiveSlideIndex(nextSlideIndex);
@@ -1888,20 +1888,13 @@ function useSlideNavigation(input) {
1888
1888
  });
1889
1889
  const scheduleAutoAdvanceForSlide = react.useCallback(
1890
1890
  (slideIndex) => {
1891
- if (useTimings === false) {
1891
+ const delayMs = chunkMZJMOEEX_js.resolveAutoAdvanceDelayMs(slides[slideIndex], { useTimings });
1892
+ if (delayMs === void 0) {
1892
1893
  return;
1893
1894
  }
1894
- const slide = slides[slideIndex];
1895
- const advanceAfterMs = slide?.transition?.advanceAfterMs;
1896
- if (typeof advanceAfterMs !== "number" || !Number.isFinite(advanceAfterMs) || advanceAfterMs < 0) {
1897
- return;
1898
- }
1899
- const timer = window.setTimeout(
1900
- () => {
1901
- movePresentationSlideRef.current(1);
1902
- },
1903
- Math.max(0, advanceAfterMs)
1904
- );
1895
+ const timer = window.setTimeout(() => {
1896
+ movePresentationSlideRef.current(1);
1897
+ }, delayMs);
1905
1898
  presentationTimersRef.current.push(timer);
1906
1899
  },
1907
1900
  [slides, presentationTimersRef, useTimings]
@@ -2085,17 +2078,17 @@ function useZoomNavigation(input) {
2085
2078
  };
2086
2079
  }
2087
2080
  function usePresenterConsole(slideIndex) {
2088
- const timerRef = react.useRef(chunk2LOBDOTK_js.createPresenterTimer());
2089
- const [snapshot, setSnapshot] = react.useState(() => chunk2LOBDOTK_js.createInitialPresentationSnapshot(slideIndex));
2081
+ const timerRef = react.useRef(chunkMZJMOEEX_js.createPresenterTimer());
2082
+ const [snapshot, setSnapshot] = react.useState(() => chunkMZJMOEEX_js.createInitialPresentationSnapshot(slideIndex));
2090
2083
  const patch = react.useCallback((value) => {
2091
- setSnapshot((current) => chunk2LOBDOTK_js.mergePresentationSnapshot(current, value));
2084
+ setSnapshot((current) => chunkMZJMOEEX_js.mergePresentationSnapshot(current, value));
2092
2085
  }, []);
2093
2086
  react.useEffect(() => patch({ slideIndex }), [patch, slideIndex]);
2094
2087
  react.useEffect(() => {
2095
2088
  const timer = window.setInterval(() => {
2096
2089
  patch({
2097
2090
  paused: timerRef.current.paused,
2098
- elapsedMs: chunk2LOBDOTK_js.presenterElapsed(timerRef.current)
2091
+ elapsedMs: chunkMZJMOEEX_js.presenterElapsed(timerRef.current)
2099
2092
  });
2100
2093
  }, 1e3);
2101
2094
  return () => window.clearInterval(timer);
@@ -2105,19 +2098,19 @@ function usePresenterConsole(slideIndex) {
2105
2098
  applyAudienceSnapshot: setSnapshot,
2106
2099
  setBlackout: (blackout) => patch({ blackout }),
2107
2100
  toggleTimer: () => {
2108
- timerRef.current = chunk2LOBDOTK_js.togglePresenterTimer(timerRef.current);
2101
+ timerRef.current = chunkMZJMOEEX_js.togglePresenterTimer(timerRef.current);
2109
2102
  patch({
2110
2103
  paused: timerRef.current.paused,
2111
- elapsedMs: chunk2LOBDOTK_js.presenterElapsed(timerRef.current)
2104
+ elapsedMs: chunkMZJMOEEX_js.presenterElapsed(timerRef.current)
2112
2105
  });
2113
2106
  },
2114
2107
  resetTimer: () => {
2115
- timerRef.current = chunk2LOBDOTK_js.resetPresenterTimer();
2108
+ timerRef.current = chunkMZJMOEEX_js.resetPresenterTimer();
2116
2109
  patch({ paused: false, elapsedMs: 0 });
2117
2110
  },
2118
2111
  stepZoom: (direction) => setSnapshot(
2119
- (current) => chunk2LOBDOTK_js.mergePresentationSnapshot(current, {
2120
- zoom: chunk2LOBDOTK_js.stepPresenterZoom(
2112
+ (current) => chunkMZJMOEEX_js.mergePresentationSnapshot(current, {
2113
+ zoom: chunkMZJMOEEX_js.stepPresenterZoom(
2121
2114
  current.zoom ?? { scale: 1, originX: 0.5, originY: 0.5 },
2122
2115
  direction
2123
2116
  )
@@ -2238,7 +2231,7 @@ function usePresentationMode(input) {
2238
2231
  });
2239
2232
  const movePresentationSlide = react.useCallback(
2240
2233
  (direction, trigger = "explicit") => {
2241
- if (!chunk2LOBDOTK_js.acceptsPresentationInput()) {
2234
+ if (!chunkMZJMOEEX_js.acceptsPresentationInput()) {
2242
2235
  return;
2243
2236
  }
2244
2237
  if (endOfShowVisible) {
@@ -2440,11 +2433,11 @@ function usePresentationMode(input) {
2440
2433
  if (!transitionOverlay || transitionOverlay.transition.type !== "morph") {
2441
2434
  return void 0;
2442
2435
  }
2443
- return chunk2LOBDOTK_js.buildMorphTransitionPlan(
2436
+ return chunkMZJMOEEX_js.buildMorphTransitionPlan(
2444
2437
  slides[transitionOverlay.outgoingSlideIndex],
2445
2438
  slides[transitionOverlay.incomingSlideIndex],
2446
2439
  transitionOverlay.durationMs,
2447
- chunk2LOBDOTK_js.morphOptionToMode(transitionOverlay.transition.morphOption)
2440
+ chunkMZJMOEEX_js.morphOptionToMode(transitionOverlay.transition.morphOption)
2448
2441
  );
2449
2442
  }, [transitionOverlay, slides]);
2450
2443
  const morphedElementStates = react.useMemo(() => {
@@ -2750,7 +2743,7 @@ function findInSlides(slides, findQuery, findMatchCase) {
2750
2743
  const normalised = findMatchCase ? findQuery : findQuery.toLowerCase();
2751
2744
  slides.forEach((slide, slideIndex) => {
2752
2745
  for (const element of slide.elements || []) {
2753
- if (!chunk2LOBDOTK_js.hasTextProperties(element)) {
2746
+ if (!chunkMZJMOEEX_js.hasTextProperties(element)) {
2754
2747
  continue;
2755
2748
  }
2756
2749
  const segments = element.textSegments ?? [];
@@ -2801,7 +2794,7 @@ function applyFindReplacements(slides, toReplace, replaceQuery) {
2801
2794
  continue;
2802
2795
  }
2803
2796
  const element = slide.elements[elIdx];
2804
- if (!chunk2LOBDOTK_js.hasTextProperties(element)) {
2797
+ if (!chunkMZJMOEEX_js.hasTextProperties(element)) {
2805
2798
  continue;
2806
2799
  }
2807
2800
  const segments = [...element.textSegments ?? []];
@@ -3399,7 +3392,7 @@ function useViewerCoreState(_input) {
3399
3392
  const shapeAdjustmentDragStateRef = react.useRef(null);
3400
3393
  const marqueeStateRef = react.useRef(null);
3401
3394
  const isDrawingRef = react.useRef(false);
3402
- const livePatcher = react.useMemo(() => chunk2LOBDOTK_js.createCollaborationLivePatcher(), []);
3395
+ const livePatcher = react.useMemo(() => chunkMZJMOEEX_js.createCollaborationLivePatcher(), []);
3403
3396
  react.useEffect(() => () => livePatcher.dispose(), [livePatcher]);
3404
3397
  const slidesRef = react.useRef([]);
3405
3398
  const [mode, setMode] = react.useState("edit");
@@ -3408,8 +3401,8 @@ function useViewerCoreState(_input) {
3408
3401
  const [slides, setSlides] = react.useState([]);
3409
3402
  const [templateElementsBySlideId, setTemplateElementsBySlideId] = react.useState({});
3410
3403
  const [canvasSize, setCanvasSize] = react.useState({
3411
- width: chunkB4XJTZR4_js.DEFAULT_CANVAS_WIDTH,
3412
- height: chunkB4XJTZR4_js.DEFAULT_CANVAS_HEIGHT
3404
+ width: chunkSMW4QYGK_js.DEFAULT_CANVAS_WIDTH,
3405
+ height: chunkSMW4QYGK_js.DEFAULT_CANVAS_HEIGHT
3413
3406
  });
3414
3407
  const [activeSlideIndex, setActiveSlideIndex] = react.useState(0);
3415
3408
  const [selectedElementId, setSelectedElementId] = react.useState(null);
@@ -3429,7 +3422,7 @@ function useViewerCoreState(_input) {
3429
3422
  const resolved = typeof value === "function" ? value(inlineEditingTextRef.current) : value;
3430
3423
  inlineEditingTextRef.current = resolved;
3431
3424
  setInlineEditingTextBase(value);
3432
- chunk2LOBDOTK_js.publishLiveInlineText(
3425
+ chunkMZJMOEEX_js.publishLiveInlineText(
3433
3426
  livePatcher,
3434
3427
  slidesRef.current[activeSlideIndexRef.current],
3435
3428
  inlineEditingElementIdRef.current,
@@ -3754,7 +3747,7 @@ function useLoadContent({
3754
3747
  );
3755
3748
  }
3756
3749
  const previousHandler = handlerRef.current;
3757
- const handler = new chunk2LOBDOTK_js.PptxHandler();
3750
+ const handler = new chunkMZJMOEEX_js.PptxHandler();
3758
3751
  const parsed = await handler.load(buffer);
3759
3752
  if (cancelled || token !== renderTokenRef.current) {
3760
3753
  handler.dispose();
@@ -3766,7 +3759,7 @@ function useLoadContent({
3766
3759
  handlerRef.current = null;
3767
3760
  const mediaElements = [];
3768
3761
  for (const slide of parsed.slides) {
3769
- chunk2LOBDOTK_js.collectMediaElements(slide.elements, mediaElements);
3762
+ chunkMZJMOEEX_js.collectMediaElements(slide.elements, mediaElements);
3770
3763
  }
3771
3764
  for (const url of mediaDataUrls.values()) {
3772
3765
  if (url.startsWith("blob:")) {
@@ -3807,7 +3800,7 @@ function useLoadContent({
3807
3800
  }
3808
3801
  })
3809
3802
  );
3810
- const { paths: imagePaths, refs: imageRefs } = chunk2LOBDOTK_js.collectImagePaths(parsed.slides);
3803
+ const { paths: imagePaths, refs: imageRefs } = chunkMZJMOEEX_js.collectImagePaths(parsed.slides);
3811
3804
  let nextSlides = parsed.slides;
3812
3805
  if (imagePaths.size > 0) {
3813
3806
  const resolvedMap = /* @__PURE__ */ new Map();
@@ -3862,12 +3855,12 @@ function useLoadContent({
3862
3855
  }
3863
3856
  }
3864
3857
  handlerRef.current = handler;
3865
- const partition = chunkB4XJTZR4_js.partitionTemplateElements(nextSlides);
3858
+ const partition = chunkSMW4QYGK_js.partitionTemplateElements(nextSlides);
3866
3859
  setSlides(partition.slides);
3867
3860
  setTemplateElementsBySlideId(partition.templateElementsBySlideId);
3868
3861
  setCanvasSize({
3869
- width: parsed.width ?? chunkB4XJTZR4_js.DEFAULT_CANVAS_WIDTH,
3870
- height: parsed.height ?? chunkB4XJTZR4_js.DEFAULT_CANVAS_HEIGHT
3862
+ width: parsed.width ?? chunkSMW4QYGK_js.DEFAULT_CANVAS_WIDTH,
3863
+ height: parsed.height ?? chunkSMW4QYGK_js.DEFAULT_CANVAS_HEIGHT
3871
3864
  });
3872
3865
  setHeaderFooter(parsed.headerFooter ?? {});
3873
3866
  setLayoutOptions(parsed.layoutOptions ?? []);
@@ -3896,7 +3889,7 @@ function useLoadContent({
3896
3889
  setHasMacros(parsed.hasMacros === true);
3897
3890
  setHasDigitalSignatures(parsed.hasDigitalSignatures === true);
3898
3891
  setDigitalSignatureCount(parsed.digitalSignatureCount ?? 0);
3899
- setGuides(chunk2LOBDOTK_js.buildInitialGuides(parsed.presentationGuides, parsed.slides[0]?.guides));
3892
+ setGuides(chunkMZJMOEEX_js.buildInitialGuides(parsed.presentationGuides, parsed.slides[0]?.guides));
3900
3893
  setActiveSlideIndex(0);
3901
3894
  clearSelection();
3902
3895
  setIsDirty(false);
@@ -3904,7 +3897,7 @@ function useLoadContent({
3904
3897
  onContentApplied?.();
3905
3898
  } catch (err) {
3906
3899
  if (!cancelled && token === renderTokenRef.current) {
3907
- if (err instanceof chunk2LOBDOTK_js.EncryptedFileError) {
3900
+ if (err instanceof chunkMZJMOEEX_js.EncryptedFileError) {
3908
3901
  setIsEncrypted(true);
3909
3902
  } else {
3910
3903
  setError(err instanceof Error ? err.message : String(err));
@@ -3981,7 +3974,7 @@ function useAutosave(input) {
3981
3974
  isSavingRef.current = false;
3982
3975
  return;
3983
3976
  }
3984
- await chunk2LOBDOTK_js.saveAutosaveSnapshot(filePathRef.current, data);
3977
+ await chunkMZJMOEEX_js.saveAutosaveSnapshot(filePathRef.current, data);
3985
3978
  setAutosaveStatus({ state: "saved", timestamp: Date.now() });
3986
3979
  } catch (err) {
3987
3980
  setAutosaveStatus({
@@ -4046,7 +4039,7 @@ function useElementOperations(input) {
4046
4039
  }, [applySelection, setInlineEditingElementId, setContextMenuState]);
4047
4040
  const updateElementById = react.useCallback(
4048
4041
  (elementId, updates) => {
4049
- if (chunk2LOBDOTK_js.isTemplateElementId(elementId)) {
4042
+ if (chunkMZJMOEEX_js.isTemplateElementId(elementId)) {
4050
4043
  const slideId = activeSlide?.id;
4051
4044
  if (slideId) {
4052
4045
  setTemplateElementsBySlideId((prev) => ({
@@ -4086,7 +4079,7 @@ function useElementOperations(input) {
4086
4079
  );
4087
4080
  const updateSelectedShapeStyle = react.useCallback(
4088
4081
  (updates) => {
4089
- if (!selectedElement || !chunk2LOBDOTK_js.hasShapeProperties(selectedElement)) {
4082
+ if (!selectedElement || !chunkMZJMOEEX_js.hasShapeProperties(selectedElement)) {
4090
4083
  return;
4091
4084
  }
4092
4085
  updateSelectedElement({
@@ -4097,17 +4090,17 @@ function useElementOperations(input) {
4097
4090
  );
4098
4091
  const updateSelectedTextStyle = react.useCallback(
4099
4092
  (updates) => {
4100
- if (!selectedElement || !chunk2LOBDOTK_js.hasTextProperties(selectedElement)) {
4093
+ if (!selectedElement || !chunkMZJMOEEX_js.hasTextProperties(selectedElement)) {
4101
4094
  return;
4102
4095
  }
4103
- const inlineSel = chunk2LOBDOTK_js.getInlineEditorSelection(selectedElement.textSegments);
4096
+ const inlineSel = chunkMZJMOEEX_js.getInlineEditorSelection(selectedElement.textSegments);
4104
4097
  if (inlineSel && selectedElement.textSegments) {
4105
- const { newSegments: newSegments2, newSelection } = chunk2LOBDOTK_js.applyStyleToSelectedSegments(
4098
+ const { newSegments: newSegments2, newSelection } = chunkMZJMOEEX_js.applyStyleToSelectedSegments(
4106
4099
  selectedElement.textSegments,
4107
4100
  inlineSel,
4108
4101
  updates
4109
4102
  );
4110
- chunk2LOBDOTK_js.setPendingSelectionRestore(newSelection);
4103
+ chunkMZJMOEEX_js.setPendingSelectionRestore(newSelection);
4111
4104
  updateSelectedElement({
4112
4105
  textSegments: newSegments2
4113
4106
  });
@@ -4127,12 +4120,12 @@ function useElementOperations(input) {
4127
4120
  );
4128
4121
  const updateSelectedTextCase = react.useCallback(
4129
4122
  (mode) => {
4130
- if (!selectedElement || !chunk2LOBDOTK_js.hasTextProperties(selectedElement)) {
4123
+ if (!selectedElement || !chunkMZJMOEEX_js.hasTextProperties(selectedElement)) {
4131
4124
  return;
4132
4125
  }
4133
- const inlineSel = chunk2LOBDOTK_js.getInlineEditorSelection(selectedElement.textSegments);
4126
+ const inlineSel = chunkMZJMOEEX_js.getInlineEditorSelection(selectedElement.textSegments);
4134
4127
  if (inlineSel && selectedElement.textSegments) {
4135
- const newSegments = chunk2LOBDOTK_js.applyCaseTransformToSegments(
4128
+ const newSegments = chunkMZJMOEEX_js.applyCaseTransformToSegments(
4136
4129
  selectedElement.textSegments,
4137
4130
  inlineSel,
4138
4131
  mode
@@ -4142,14 +4135,14 @@ function useElementOperations(input) {
4142
4135
  }
4143
4136
  const updates = {};
4144
4137
  if (selectedElement.textSegments && selectedElement.textSegments.length > 0) {
4145
- updates.textSegments = chunk2LOBDOTK_js.applyCaseTransformToSegments(
4138
+ updates.textSegments = chunkMZJMOEEX_js.applyCaseTransformToSegments(
4146
4139
  selectedElement.textSegments,
4147
4140
  null,
4148
4141
  mode
4149
4142
  );
4150
4143
  }
4151
4144
  if (typeof selectedElement.text === "string") {
4152
- updates.text = chunk2LOBDOTK_js.transformTextCase(selectedElement.text, mode);
4145
+ updates.text = chunkMZJMOEEX_js.transformTextCase(selectedElement.text, mode);
4153
4146
  }
4154
4147
  updateSelectedElement(updates);
4155
4148
  },
@@ -4204,7 +4197,7 @@ function useSectionOperations(input) {
4204
4197
  const { sections, setSections, slides, setSlides, markDirty } = input;
4205
4198
  const addSection2 = react.useCallback(
4206
4199
  (name, afterSlideIndex) => {
4207
- const result = chunk2LOBDOTK_js.addSection(sections, slides, name, afterSlideIndex);
4200
+ const result = chunkMZJMOEEX_js.addSection(sections, slides, name, afterSlideIndex);
4208
4201
  setSlides(result.slides);
4209
4202
  setSections(result.sections);
4210
4203
  markDirty();
@@ -4213,7 +4206,7 @@ function useSectionOperations(input) {
4213
4206
  );
4214
4207
  const renameSection2 = react.useCallback(
4215
4208
  (sectionId, newName) => {
4216
- const result = chunk2LOBDOTK_js.renameSection(sections, slides, sectionId, newName);
4209
+ const result = chunkMZJMOEEX_js.renameSection(sections, slides, sectionId, newName);
4217
4210
  setSections(result.sections);
4218
4211
  setSlides(result.slides);
4219
4212
  markDirty();
@@ -4222,7 +4215,7 @@ function useSectionOperations(input) {
4222
4215
  );
4223
4216
  const deleteSection2 = react.useCallback(
4224
4217
  (sectionId) => {
4225
- const result = chunk2LOBDOTK_js.deleteSection(sections, slides, sectionId);
4218
+ const result = chunkMZJMOEEX_js.deleteSection(sections, slides, sectionId);
4226
4219
  setSections(result.sections);
4227
4220
  setSlides(result.slides);
4228
4221
  markDirty();
@@ -4231,21 +4224,21 @@ function useSectionOperations(input) {
4231
4224
  );
4232
4225
  const moveSectionUp2 = react.useCallback(
4233
4226
  (sectionId) => {
4234
- setSections(chunk2LOBDOTK_js.moveSectionUp(sections, sectionId));
4227
+ setSections(chunkMZJMOEEX_js.moveSectionUp(sections, sectionId));
4235
4228
  markDirty();
4236
4229
  },
4237
4230
  [sections, setSections, markDirty]
4238
4231
  );
4239
4232
  const moveSectionDown2 = react.useCallback(
4240
4233
  (sectionId) => {
4241
- setSections(chunk2LOBDOTK_js.moveSectionDown(sections, sectionId));
4234
+ setSections(chunkMZJMOEEX_js.moveSectionDown(sections, sectionId));
4242
4235
  markDirty();
4243
4236
  },
4244
4237
  [sections, setSections, markDirty]
4245
4238
  );
4246
4239
  const moveSlidesToSection2 = react.useCallback(
4247
4240
  (slideIndexes, targetSectionId) => {
4248
- const result = chunk2LOBDOTK_js.moveSlidesToSection(sections, slides, slideIndexes, targetSectionId);
4241
+ const result = chunkMZJMOEEX_js.moveSlidesToSection(sections, slides, slideIndexes, targetSectionId);
4249
4242
  setSlides(result.slides);
4250
4243
  setSections(result.sections);
4251
4244
  markDirty();
@@ -4264,19 +4257,19 @@ function useSectionOperations(input) {
4264
4257
 
4265
4258
  // src/viewer/hooks/pointer-move-handlers.ts
4266
4259
  function computeResizeGeometry(handle, startX, startY, startWidth, startHeight, dx, dy, snapToGrid, gridSpacingPx) {
4267
- const resized = chunk2LOBDOTK_js.applyResize(
4260
+ const resized = chunkMZJMOEEX_js.applyResize(
4268
4261
  { x: startX, y: startY, width: startWidth, height: startHeight },
4269
4262
  handle,
4270
4263
  dx,
4271
4264
  dy,
4272
4265
  1,
4273
- { minSize: chunkB4XJTZR4_js.MIN_ELEMENT_SIZE }
4266
+ { minSize: chunkSMW4QYGK_js.MIN_ELEMENT_SIZE }
4274
4267
  );
4275
4268
  const box = { x: resized.x, y: resized.y, width: resized.width, height: resized.height };
4276
4269
  if (!snapToGrid) {
4277
4270
  return box;
4278
4271
  }
4279
- return chunk2LOBDOTK_js.snapBoxToGrid(box, handle, gridSpacingPx, chunkB4XJTZR4_js.MIN_ELEMENT_SIZE);
4272
+ return chunkMZJMOEEX_js.snapBoxToGrid(box, handle, gridSpacingPx, chunkSMW4QYGK_js.MIN_ELEMENT_SIZE);
4280
4273
  }
4281
4274
  function computeAdjustmentValue(startAdjustment, dx, startWidth) {
4282
4275
  const range = startWidth || 200;
@@ -4394,7 +4387,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
4394
4387
  width: el.width,
4395
4388
  height: el.height
4396
4389
  }));
4397
- const snapResult = chunk2LOBDOTK_js.computeSnapToShape(
4390
+ const snapResult = chunkMZJMOEEX_js.computeSnapToShape(
4398
4391
  targetX,
4399
4392
  targetY,
4400
4393
  primaryEl.width,
@@ -4433,7 +4426,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
4433
4426
  if (live) {
4434
4427
  for (const id of Object.keys(drag.startPositionsById)) {
4435
4428
  const start = drag.startPositionsById[id];
4436
- chunk2LOBDOTK_js.publishLiveGeometry(live.patcher, live.slideId, id, {
4429
+ chunkMZJMOEEX_js.publishLiveGeometry(live.patcher, live.slideId, id, {
4437
4430
  x: start.x + appliedDx,
4438
4431
  y: start.y + appliedDy
4439
4432
  });
@@ -4467,15 +4460,15 @@ function processResizeMove(e, rs, editorScale, snapToGrid, gridSpacingPx, live)
4467
4460
  if (rs.domEl) {
4468
4461
  rs.domEl.style.left = `${geo.x}px`;
4469
4462
  rs.domEl.style.top = `${geo.y}px`;
4470
- rs.domEl.style.width = `${Math.max(geo.width, chunkB4XJTZR4_js.MIN_ELEMENT_SIZE)}px`;
4471
- rs.domEl.style.height = `${Math.max(geo.height, chunkB4XJTZR4_js.MIN_ELEMENT_SIZE)}px`;
4463
+ rs.domEl.style.width = `${Math.max(geo.width, chunkSMW4QYGK_js.MIN_ELEMENT_SIZE)}px`;
4464
+ rs.domEl.style.height = `${Math.max(geo.height, chunkSMW4QYGK_js.MIN_ELEMENT_SIZE)}px`;
4472
4465
  }
4473
4466
  if (live) {
4474
- chunk2LOBDOTK_js.publishLiveGeometry(live.patcher, live.slideId, rs.elementId, {
4467
+ chunkMZJMOEEX_js.publishLiveGeometry(live.patcher, live.slideId, rs.elementId, {
4475
4468
  x: geo.x,
4476
4469
  y: geo.y,
4477
- width: Math.max(geo.width, chunkB4XJTZR4_js.MIN_ELEMENT_SIZE),
4478
- height: Math.max(geo.height, chunkB4XJTZR4_js.MIN_ELEMENT_SIZE)
4470
+ width: Math.max(geo.width, chunkSMW4QYGK_js.MIN_ELEMENT_SIZE),
4471
+ height: Math.max(geo.height, chunkSMW4QYGK_js.MIN_ELEMENT_SIZE)
4479
4472
  });
4480
4473
  }
4481
4474
  }
@@ -4555,13 +4548,13 @@ function processPointerUp(input) {
4555
4548
  if (i !== activeSlideIndex) {
4556
4549
  return s;
4557
4550
  }
4558
- const rerouted = chunk2LOBDOTK_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
4551
+ const rerouted = chunkMZJMOEEX_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
4559
4552
  if (rerouted.length === 0) {
4560
4553
  return s;
4561
4554
  }
4562
4555
  return {
4563
4556
  ...s,
4564
- elements: chunk2LOBDOTK_js.applyReroutedConnectors(s.elements, rerouted)
4557
+ elements: chunkMZJMOEEX_js.applyReroutedConnectors(s.elements, rerouted)
4565
4558
  };
4566
4559
  })
4567
4560
  );
@@ -4583,9 +4576,9 @@ function processPointerUp(input) {
4583
4576
  }
4584
4577
  function commitMarquee(marquee, editTemplateMode, templateElements, activeSlide, applySelection, clearSelection) {
4585
4578
  const sourceElements = editTemplateMode ? templateElements : activeSlide?.elements ?? [];
4586
- const hitIds = chunk2LOBDOTK_js.computeMarqueeHitIds(marquee, sourceElements);
4579
+ const hitIds = chunkMZJMOEEX_js.computeMarqueeHitIds(marquee, sourceElements);
4587
4580
  if (marquee.additive) {
4588
- const merged = chunk2LOBDOTK_js.mergeAdditiveSelection(marquee.baseSelectionIds, hitIds);
4581
+ const merged = chunkMZJMOEEX_js.mergeAdditiveSelection(marquee.baseSelectionIds, hitIds);
4589
4582
  if (merged.length > 0) {
4590
4583
  applySelection(merged[0], merged);
4591
4584
  } else {
@@ -4608,8 +4601,8 @@ function commitDrag(drag, editTemplateMode, activeSlide, activeSlideIndex, setTe
4608
4601
  }
4609
4602
  return { ...el, x: start.x + dx, y: start.y + dy };
4610
4603
  });
4611
- const rerouted = chunk2LOBDOTK_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
4612
- return chunk2LOBDOTK_js.applyReroutedConnectors(movedElements, rerouted);
4604
+ const rerouted = chunkMZJMOEEX_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
4605
+ return chunkMZJMOEEX_js.applyReroutedConnectors(movedElements, rerouted);
4613
4606
  };
4614
4607
  if (editTemplateMode) {
4615
4608
  const slideId = activeSlide?.id;
@@ -4762,9 +4755,9 @@ function useCanvasInteractions(input) {
4762
4755
  return;
4763
4756
  }
4764
4757
  const el = elementLookup.get(editId);
4765
- if (el && chunk2LOBDOTK_js.hasTextProperties(el)) {
4758
+ if (el && chunkMZJMOEEX_js.hasTextProperties(el)) {
4766
4759
  const committedText = transformCommittedText ? transformCommittedText(inlineEditingText) : inlineEditingText;
4767
- const newSegments = chunk2LOBDOTK_js.remapTextToSegments(committedText, el.textSegments, el.textStyle);
4760
+ const newSegments = chunkMZJMOEEX_js.remapTextToSegments(committedText, el.textSegments, el.textStyle);
4768
4761
  ops.updateElementById(editId, {
4769
4762
  text: committedText,
4770
4763
  textSegments: newSegments
@@ -4775,7 +4768,7 @@ function useCanvasInteractions(input) {
4775
4768
  setInlineEditingText("");
4776
4769
  };
4777
4770
  const openEquationEditorForElement = (el) => {
4778
- if (!chunk2LOBDOTK_js.hasTextProperties(el)) {
4771
+ if (!chunkMZJMOEEX_js.hasTextProperties(el)) {
4779
4772
  return false;
4780
4773
  }
4781
4774
  const eqSeg = el.textSegments?.find((seg) => seg.equationXml);
@@ -4804,7 +4797,7 @@ function useCanvasInteractions(input) {
4804
4797
  justSelectedRef.current = false;
4805
4798
  } else {
4806
4799
  const el = elementLookup.get(elementId);
4807
- if (el && chunk2LOBDOTK_js.hasTextProperties(el) && !el.locks?.noTextEdit) {
4800
+ if (el && chunkMZJMOEEX_js.hasTextProperties(el) && !el.locks?.noTextEdit) {
4808
4801
  if (!openEquationEditorForElement(el)) {
4809
4802
  setInlineEditingElementId(elementId);
4810
4803
  setInlineEditingText(el.text ?? "");
@@ -4823,7 +4816,7 @@ function useCanvasInteractions(input) {
4823
4816
  if (openEquationEditorForElement(el)) {
4824
4817
  return;
4825
4818
  }
4826
- if (chunk2LOBDOTK_js.hasTextProperties(el)) {
4819
+ if (chunkMZJMOEEX_js.hasTextProperties(el)) {
4827
4820
  setInlineEditingElementId(elementId);
4828
4821
  setInlineEditingText(el.text ?? "");
4829
4822
  }
@@ -5013,7 +5006,7 @@ function createFileHandlers(deps) {
5013
5006
  h = Math.round(h * scale);
5014
5007
  }
5015
5008
  addElement({
5016
- id: chunk2LOBDOTK_js.generateElementId(),
5009
+ id: chunkMZJMOEEX_js.generateElementId(),
5017
5010
  type: "image",
5018
5011
  x: Math.round((canvasSize.width - w) / 2),
5019
5012
  y: Math.round((canvasSize.height - h) / 2),
@@ -5024,7 +5017,7 @@ function createFileHandlers(deps) {
5024
5017
  };
5025
5018
  img.onerror = () => {
5026
5019
  addElement({
5027
- id: chunk2LOBDOTK_js.generateElementId(),
5020
+ id: chunkMZJMOEEX_js.generateElementId(),
5028
5021
  type: "image",
5029
5022
  x: 100,
5030
5023
  y: 100,
@@ -5050,7 +5043,7 @@ function createFileHandlers(deps) {
5050
5043
  const elFilePath = file.path;
5051
5044
  const insertMediaElement = (mediaSourceUrl, width, height) => {
5052
5045
  addElement({
5053
- id: chunk2LOBDOTK_js.generateElementId(),
5046
+ id: chunkMZJMOEEX_js.generateElementId(),
5054
5047
  type: "media",
5055
5048
  mediaType,
5056
5049
  mediaMimeType: file.type || void 0,
@@ -5225,13 +5218,13 @@ function createStructuredElementHandlers(deps) {
5225
5218
  return;
5226
5219
  }
5227
5220
  addElement({
5228
- id: chunk2LOBDOTK_js.generateElementId(),
5221
+ id: chunkMZJMOEEX_js.generateElementId(),
5229
5222
  type: "smartArt",
5230
5223
  x: 100,
5231
5224
  y: 120,
5232
5225
  width: 600,
5233
5226
  height: 340,
5234
- smartArtData: chunk2LOBDOTK_js.buildSmartArtPresetData(
5227
+ smartArtData: chunkMZJMOEEX_js.buildSmartArtPresetData(
5235
5228
  layout,
5236
5229
  defaultItems,
5237
5230
  (i) => `node-${Date.now()}-${i}-${Math.random().toString(36).slice(2, 8)}`
@@ -5243,7 +5236,7 @@ function createStructuredElementHandlers(deps) {
5243
5236
  return;
5244
5237
  }
5245
5238
  addElement({
5246
- id: chunk2LOBDOTK_js.generateElementId(),
5239
+ id: chunkMZJMOEEX_js.generateElementId(),
5247
5240
  type: "shape",
5248
5241
  x: 120,
5249
5242
  y: 200,
@@ -5302,7 +5295,7 @@ function createStructuredElementHandlers(deps) {
5302
5295
  const displayText = value || fieldTexts[fieldType] || fieldType;
5303
5296
  const fieldGuid = `{${crypto.randomUUID().toUpperCase()}}`;
5304
5297
  addElement({
5305
- id: chunk2LOBDOTK_js.generateElementId(),
5298
+ id: chunkMZJMOEEX_js.generateElementId(),
5306
5299
  type: "shape",
5307
5300
  x: 120,
5308
5301
  y: 200,
@@ -5324,11 +5317,11 @@ function createStructuredElementHandlers(deps) {
5324
5317
  if (!activeSlide) {
5325
5318
  return;
5326
5319
  }
5327
- const preset = chunk2LOBDOTK_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
5320
+ const preset = chunkMZJMOEEX_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
5328
5321
  if (!preset) {
5329
5322
  return;
5330
5323
  }
5331
- const defaultPptxAction = chunk2LOBDOTK_js.elementActionToPptxAction({
5324
+ const defaultPptxAction = chunkMZJMOEEX_js.elementActionToPptxAction({
5332
5325
  trigger: "click",
5333
5326
  type: preset.defaultAction
5334
5327
  });
@@ -5337,7 +5330,7 @@ function createStructuredElementHandlers(deps) {
5337
5330
  defaultPptxAction.highlightClick = true;
5338
5331
  }
5339
5332
  addElement({
5340
- id: chunk2LOBDOTK_js.generateElementId(),
5333
+ id: chunkMZJMOEEX_js.generateElementId(),
5341
5334
  type: "shape",
5342
5335
  x: 150,
5343
5336
  y: 150,
@@ -5404,14 +5397,14 @@ function useInsertElements(input) {
5404
5397
  return;
5405
5398
  }
5406
5399
  addElement({
5407
- id: chunk2LOBDOTK_js.generateElementId(),
5400
+ id: chunkMZJMOEEX_js.generateElementId(),
5408
5401
  type: "text",
5409
5402
  x: 100,
5410
5403
  y: 100,
5411
5404
  width: 300,
5412
5405
  height: 60,
5413
5406
  text: "",
5414
- textStyle: { fontSize: chunkB4XJTZR4_js.DEFAULT_TEXT_FONT_SIZE }
5407
+ textStyle: { fontSize: chunkSMW4QYGK_js.DEFAULT_TEXT_FONT_SIZE }
5415
5408
  });
5416
5409
  };
5417
5410
  const handleAddShape = () => {
@@ -5419,7 +5412,7 @@ function useInsertElements(input) {
5419
5412
  return;
5420
5413
  }
5421
5414
  addElement({
5422
- id: chunk2LOBDOTK_js.generateElementId(),
5415
+ id: chunkMZJMOEEX_js.generateElementId(),
5423
5416
  type: "shape",
5424
5417
  x: 150,
5425
5418
  y: 150,
@@ -5438,15 +5431,15 @@ function useInsertElements(input) {
5438
5431
  return;
5439
5432
  }
5440
5433
  addElement({
5441
- ...chunk2LOBDOTK_js.newTableElement(chunkB4XJTZR4_js.DEFAULT_TABLE_ROWS, chunkB4XJTZR4_js.DEFAULT_TABLE_COLUMNS, 100, 200),
5442
- id: chunk2LOBDOTK_js.generateElementId()
5434
+ ...chunkMZJMOEEX_js.newTableElement(chunkSMW4QYGK_js.DEFAULT_TABLE_ROWS, chunkSMW4QYGK_js.DEFAULT_TABLE_COLUMNS, 100, 200),
5435
+ id: chunkMZJMOEEX_js.generateElementId()
5443
5436
  });
5444
5437
  };
5445
5438
  const handleAddChart = (chartType) => {
5446
5439
  if (!activeSlide) {
5447
5440
  return;
5448
5441
  }
5449
- addElement(chunk2LOBDOTK_js.createDefaultChartElement(chartType));
5442
+ addElement(chunkMZJMOEEX_js.createDefaultChartElement(chartType));
5450
5443
  };
5451
5444
  const structured = createStructuredElementHandlers({
5452
5445
  activeSlide,
@@ -5516,7 +5509,7 @@ function useClipboardHandlers(input) {
5516
5509
  if (!selectedElement) {
5517
5510
  return;
5518
5511
  }
5519
- setClipboardPayload(chunk2LOBDOTK_js.buildElementClipboardPayload(selectedElement, editTemplateMode));
5512
+ setClipboardPayload(chunkMZJMOEEX_js.buildElementClipboardPayload(selectedElement, editTemplateMode));
5520
5513
  };
5521
5514
  const handleDelete = () => {
5522
5515
  const idsToDelete = effectiveSelectedIds;
@@ -5533,7 +5526,7 @@ function useClipboardHandlers(input) {
5533
5526
  handleDelete();
5534
5527
  };
5535
5528
  const insertClone = (source) => {
5536
- const clone = chunk2LOBDOTK_js.cloneElementForPaste(source, { intoTemplate: editTemplateMode });
5529
+ const clone = chunkMZJMOEEX_js.cloneElementForPaste(source, { intoTemplate: editTemplateMode });
5537
5530
  ops.updateActiveElements((els) => [...els, clone]);
5538
5531
  ops.applySelection(clone.id);
5539
5532
  history.markDirty();
@@ -5568,7 +5561,7 @@ function resolveShapePath(el) {
5568
5561
  return el.pathData;
5569
5562
  }
5570
5563
  if ("shapeType" in el && typeof el.shapeType === "string") {
5571
- const clipPath = chunk2LOBDOTK_js.getPresetShapeClipPath(el.shapeType);
5564
+ const clipPath = chunkMZJMOEEX_js.getPresetShapeClipPath(el.shapeType);
5572
5565
  if (clipPath) {
5573
5566
  const svgPath = clipPathToSvgPath(clipPath, el.width, el.height);
5574
5567
  if (svgPath) {
@@ -5619,7 +5612,7 @@ function clipPathToSvgPath(clipPath, width, height) {
5619
5612
  return parts.join(" ");
5620
5613
  }
5621
5614
  function transformPathToGlobal(pathData, el) {
5622
- const polys = chunk2LOBDOTK_js.svgPathToPolygons(pathData);
5615
+ const polys = chunkMZJMOEEX_js.svgPathToPolygons(pathData);
5623
5616
  if (polys.length === 0) {
5624
5617
  return pathData;
5625
5618
  }
@@ -5639,10 +5632,10 @@ function transformPathToGlobal(pathData, el) {
5639
5632
  y: pt.y * scaleY + el.y
5640
5633
  }))
5641
5634
  );
5642
- return chunk2LOBDOTK_js.polygonsToSvgPath(transformed);
5635
+ return chunkMZJMOEEX_js.polygonsToSvgPath(transformed);
5643
5636
  }
5644
5637
  function transformPathToLocal(pathData, x, y, _width, _height) {
5645
- const polys = chunk2LOBDOTK_js.svgPathToPolygons(pathData);
5638
+ const polys = chunkMZJMOEEX_js.svgPathToPolygons(pathData);
5646
5639
  if (polys.length === 0) {
5647
5640
  return pathData;
5648
5641
  }
@@ -5652,10 +5645,10 @@ function transformPathToLocal(pathData, x, y, _width, _height) {
5652
5645
  y: pt.y - y
5653
5646
  }))
5654
5647
  );
5655
- return chunk2LOBDOTK_js.polygonsToSvgPath(transformed);
5648
+ return chunkMZJMOEEX_js.polygonsToSvgPath(transformed);
5656
5649
  }
5657
5650
  function pathBounds(pathData) {
5658
- const polys = chunk2LOBDOTK_js.svgPathToPolygons(pathData);
5651
+ const polys = chunkMZJMOEEX_js.svgPathToPolygons(pathData);
5659
5652
  let minX = Infinity;
5660
5653
  let minY = Infinity;
5661
5654
  let maxX = -Infinity;
@@ -5714,7 +5707,7 @@ function useMergeShapesHandler(input) {
5714
5707
  let allFragments = [];
5715
5708
  let remaining = globalPaths[0];
5716
5709
  for (let i = 1; i < globalPaths.length; i++) {
5717
- const frags = chunk2LOBDOTK_js.mergeShapes("fragment", remaining, globalPaths[i]);
5710
+ const frags = chunkMZJMOEEX_js.mergeShapes("fragment", remaining, globalPaths[i]);
5718
5711
  if (Array.isArray(frags)) {
5719
5712
  allFragments = frags;
5720
5713
  }
@@ -5743,7 +5736,7 @@ function useMergeShapesHandler(input) {
5743
5736
  bounds.height
5744
5737
  );
5745
5738
  const newEl = {
5746
- id: chunk2LOBDOTK_js.generateElementId(),
5739
+ id: chunkMZJMOEEX_js.generateElementId(),
5747
5740
  type: "shape",
5748
5741
  x: bounds.x,
5749
5742
  y: bounds.y,
@@ -5781,7 +5774,7 @@ function useMergeShapesHandler(input) {
5781
5774
  } else {
5782
5775
  let resultPath = globalPaths[0];
5783
5776
  for (let i = 1; i < globalPaths.length; i++) {
5784
- const result = chunk2LOBDOTK_js.mergeShapes(operation, resultPath, globalPaths[i]);
5777
+ const result = chunkMZJMOEEX_js.mergeShapes(operation, resultPath, globalPaths[i]);
5785
5778
  if (typeof result === "string") {
5786
5779
  resultPath = result;
5787
5780
  }
@@ -5802,7 +5795,7 @@ function useMergeShapesHandler(input) {
5802
5795
  );
5803
5796
  const primary = targets[0];
5804
5797
  const newEl = {
5805
- id: chunk2LOBDOTK_js.generateElementId(),
5798
+ id: chunkMZJMOEEX_js.generateElementId(),
5806
5799
  type: "shape",
5807
5800
  x: bounds.x,
5808
5801
  y: bounds.y,
@@ -5865,7 +5858,7 @@ function useGroupAlignLayerHandlers(input) {
5865
5858
  if (ids.length < 2 || !activeSlide) {
5866
5859
  return;
5867
5860
  }
5868
- const { elements, groupId } = chunk2LOBDOTK_js.groupElements(ops.activeElements, ids, chunk2LOBDOTK_js.generateElementId());
5861
+ const { elements, groupId } = chunkMZJMOEEX_js.groupElements(ops.activeElements, ids, chunkMZJMOEEX_js.generateElementId());
5869
5862
  if (groupId === null) {
5870
5863
  return;
5871
5864
  }
@@ -5878,12 +5871,12 @@ function useGroupAlignLayerHandlers(input) {
5878
5871
  return;
5879
5872
  }
5880
5873
  const group = selectedElement;
5881
- const intoTemplate = chunk2LOBDOTK_js.isTemplateElementId(group.id);
5874
+ const intoTemplate = chunkMZJMOEEX_js.isTemplateElementId(group.id);
5882
5875
  const ungrouped = group.children.map((child) => ({
5883
5876
  ...structuredClone(child),
5884
5877
  // Keep child ids in the same store as the group so later edits route
5885
5878
  // correctly: template groups yield template-prefixed child ids.
5886
- id: intoTemplate ? chunk2LOBDOTK_js.makeCloneId(true, child.id || group.id) : child.id || chunk2LOBDOTK_js.generateElementId(),
5879
+ id: intoTemplate ? chunkMZJMOEEX_js.makeCloneId(true, child.id || group.id) : child.id || chunkMZJMOEEX_js.generateElementId(),
5887
5880
  x: child.x + group.x,
5888
5881
  y: child.y + group.y
5889
5882
  }));
@@ -5907,7 +5900,7 @@ function useGroupAlignLayerHandlers(input) {
5907
5900
  if (!edge) {
5908
5901
  return;
5909
5902
  }
5910
- const positions = chunk2LOBDOTK_js.alignElements(selectedElements, edge);
5903
+ const positions = chunkMZJMOEEX_js.alignElements(selectedElements, edge);
5911
5904
  for (const [id, pos] of positions) {
5912
5905
  const el = elementLookup.get(id);
5913
5906
  if (!el) {
@@ -5925,7 +5918,7 @@ function useGroupAlignLayerHandlers(input) {
5925
5918
  if (!distAxis) {
5926
5919
  return;
5927
5920
  }
5928
- const positions = chunk2LOBDOTK_js.distributeElements(selectedElements, distAxis);
5921
+ const positions = chunkMZJMOEEX_js.distributeElements(selectedElements, distAxis);
5929
5922
  for (const [id, pos] of positions) {
5930
5923
  const el = elementLookup.get(id);
5931
5924
  if (!el) {
@@ -5942,7 +5935,7 @@ function useGroupAlignLayerHandlers(input) {
5942
5935
  }
5943
5936
  const id = selectedElement.id;
5944
5937
  ops.updateActiveElements(
5945
- (els) => direction === "forward" ? chunk2LOBDOTK_js.bringForward(els, id) : direction === "backward" ? chunk2LOBDOTK_js.sendBackward(els, id) : els
5938
+ (els) => direction === "forward" ? chunkMZJMOEEX_js.bringForward(els, id) : direction === "backward" ? chunkMZJMOEEX_js.sendBackward(els, id) : els
5946
5939
  );
5947
5940
  history.markDirty();
5948
5941
  };
@@ -5952,7 +5945,7 @@ function useGroupAlignLayerHandlers(input) {
5952
5945
  }
5953
5946
  const id = selectedElement.id;
5954
5947
  ops.updateActiveElements(
5955
- (els) => direction === "front" ? chunk2LOBDOTK_js.bringToFront(els, id) : chunk2LOBDOTK_js.sendToBack(els, id)
5948
+ (els) => direction === "front" ? chunkMZJMOEEX_js.bringToFront(els, id) : chunkMZJMOEEX_js.sendToBack(els, id)
5956
5949
  );
5957
5950
  history.markDirty();
5958
5951
  };
@@ -6074,7 +6067,7 @@ function insertSlideFromLayoutUpdater(slides, activeIndex, draft) {
6074
6067
  function useSlideManagement(input) {
6075
6068
  const { slides, activeSlideIndex, setActiveSlideIndex, ops, history, handlerRef } = input;
6076
6069
  const handleAddSlide = () => {
6077
- const newSlide = chunk2LOBDOTK_js.createBlankSlide(slides.length + 1);
6070
+ const newSlide = chunkMZJMOEEX_js.createBlankSlide(slides.length + 1);
6078
6071
  ops.updateSlides((prev) => {
6079
6072
  const next = [...prev];
6080
6073
  next.splice(activeSlideIndex + 1, 0, newSlide);
@@ -6137,7 +6130,7 @@ function useSlideManagement(input) {
6137
6130
  }
6138
6131
  const clone = {
6139
6132
  ...src,
6140
- id: chunk2LOBDOTK_js.makeSlideId(),
6133
+ id: chunkMZJMOEEX_js.makeSlideId(),
6141
6134
  elements: src.elements.map((el) => ({
6142
6135
  ...el,
6143
6136
  id: `${el.id}-dup-${Math.random().toString(36).slice(2, 6)}`
@@ -6169,7 +6162,7 @@ function useSlideManagement(input) {
6169
6162
  const handleInsertSlideFromLayout = (layoutPath, layoutName) => {
6170
6163
  const insertAt = activeSlideIndex + 1;
6171
6164
  const draft = {
6172
- ...chunk2LOBDOTK_js.createBlankSlide(slides.length + 1),
6165
+ ...chunkMZJMOEEX_js.createBlankSlide(slides.length + 1),
6173
6166
  layoutPath,
6174
6167
  ...layoutName ? { layoutName } : {}
6175
6168
  };
@@ -6230,7 +6223,7 @@ function createTableMergeHandlers(input) {
6230
6223
  if (!nextCell || nextCell.hMerge || nextCell.vMerge) {
6231
6224
  return;
6232
6225
  }
6233
- const newTableData = chunk2LOBDOTK_js.mergeCells(
6226
+ const newTableData = chunkMZJMOEEX_js.mergeCells(
6234
6227
  [
6235
6228
  { row: rowIndex, col: columnIndex },
6236
6229
  { row: rowIndex, col: nextColIdx }
@@ -6238,7 +6231,7 @@ function createTableMergeHandlers(input) {
6238
6231
  td
6239
6232
  );
6240
6233
  const updates = { tableData: newTableData };
6241
- const newRawXml = chunk2LOBDOTK_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6234
+ const newRawXml = chunkMZJMOEEX_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6242
6235
  if (newRawXml) {
6243
6236
  updates.rawXml = newRawXml;
6244
6237
  }
@@ -6264,7 +6257,7 @@ function createTableMergeHandlers(input) {
6264
6257
  if (!targetNextCell || targetNextCell.hMerge || targetNextCell.vMerge) {
6265
6258
  return;
6266
6259
  }
6267
- const newTableData = chunk2LOBDOTK_js.mergeCells(
6260
+ const newTableData = chunkMZJMOEEX_js.mergeCells(
6268
6261
  [
6269
6262
  { row: rowIndex, col: columnIndex },
6270
6263
  { row: targetNextRowIdx, col: columnIndex }
@@ -6272,7 +6265,7 @@ function createTableMergeHandlers(input) {
6272
6265
  td
6273
6266
  );
6274
6267
  const updates = { tableData: newTableData };
6275
- const newRawXml = chunk2LOBDOTK_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6268
+ const newRawXml = chunkMZJMOEEX_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6276
6269
  if (newRawXml) {
6277
6270
  updates.rawXml = newRawXml;
6278
6271
  }
@@ -6287,9 +6280,9 @@ function createTableMergeHandlers(input) {
6287
6280
  return;
6288
6281
  }
6289
6282
  const td = selectedElement.tableData;
6290
- const newTableData = chunk2LOBDOTK_js.mergeCells(ts.selectedCells, td);
6283
+ const newTableData = chunkMZJMOEEX_js.mergeCells(ts.selectedCells, td);
6291
6284
  const updates = { tableData: newTableData };
6292
- const newRawXml = chunk2LOBDOTK_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6285
+ const newRawXml = chunkMZJMOEEX_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6293
6286
  if (newRawXml) {
6294
6287
  updates.rawXml = newRawXml;
6295
6288
  }
@@ -6306,9 +6299,9 @@ function createTableMergeHandlers(input) {
6306
6299
  }
6307
6300
  const { rowIndex, columnIndex } = ts;
6308
6301
  const td = selectedElement.tableData;
6309
- const newTableData = chunk2LOBDOTK_js.splitCell(rowIndex, columnIndex, td);
6302
+ const newTableData = chunkMZJMOEEX_js.splitCell(rowIndex, columnIndex, td);
6310
6303
  const updates = { tableData: newTableData };
6311
- const newRawXml = chunk2LOBDOTK_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6304
+ const newRawXml = chunkMZJMOEEX_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
6312
6305
  if (newRawXml) {
6313
6306
  updates.rawXml = newRawXml;
6314
6307
  }
@@ -6352,7 +6345,7 @@ function createTableStructHandlers(input) {
6352
6345
  updates.tableData = { ...el.tableData, rows: newRows };
6353
6346
  }
6354
6347
  if (el.rawXml) {
6355
- const newRawXml = chunk2LOBDOTK_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
6348
+ const newRawXml = chunkMZJMOEEX_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
6356
6349
  if (newRawXml) {
6357
6350
  updates.rawXml = newRawXml;
6358
6351
  }
@@ -6376,7 +6369,7 @@ function createTableStructHandlers(input) {
6376
6369
  const { rowIndex, columnIndex: colIndex } = ts;
6377
6370
  const updates = {};
6378
6371
  if (selectedElement.rawXml) {
6379
- const newRawXml = chunk2LOBDOTK_js.updateCellTextStyleInRawXml(
6372
+ const newRawXml = chunkMZJMOEEX_js.updateCellTextStyleInRawXml(
6380
6373
  selectedElement,
6381
6374
  rowIndex,
6382
6375
  colIndex,
@@ -6440,9 +6433,9 @@ function createTableStructHandlers(input) {
6440
6433
  return;
6441
6434
  }
6442
6435
  const rowIdx = ts?.rowIndex ?? 0;
6443
- const newTableData = chunk2LOBDOTK_js.insertTableRow(selectedElement.tableData, rowIdx, position);
6436
+ const newTableData = chunkMZJMOEEX_js.insertTableRow(selectedElement.tableData, rowIdx, position);
6444
6437
  const updates = { tableData: newTableData };
6445
- const newRawXml = chunk2LOBDOTK_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6438
+ const newRawXml = chunkMZJMOEEX_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6446
6439
  if (newRawXml) {
6447
6440
  updates.rawXml = newRawXml;
6448
6441
  }
@@ -6455,12 +6448,12 @@ function createTableStructHandlers(input) {
6455
6448
  }
6456
6449
  const td = selectedElement.tableData;
6457
6450
  const rowIdx = ts?.rowIndex ?? 0;
6458
- const newTableData = chunk2LOBDOTK_js.deleteTableRow(td, rowIdx);
6451
+ const newTableData = chunkMZJMOEEX_js.deleteTableRow(td, rowIdx);
6459
6452
  if (newTableData === td) {
6460
6453
  return;
6461
6454
  }
6462
6455
  const updates = { tableData: newTableData };
6463
- const newRawXml = chunk2LOBDOTK_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6456
+ const newRawXml = chunkMZJMOEEX_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6464
6457
  if (newRawXml) {
6465
6458
  updates.rawXml = newRawXml;
6466
6459
  }
@@ -6472,9 +6465,9 @@ function createTableStructHandlers(input) {
6472
6465
  return;
6473
6466
  }
6474
6467
  const colIdx = ts?.columnIndex ?? 0;
6475
- const newTableData = chunk2LOBDOTK_js.insertTableColumn(selectedElement.tableData, colIdx, position);
6468
+ const newTableData = chunkMZJMOEEX_js.insertTableColumn(selectedElement.tableData, colIdx, position);
6476
6469
  const updates = { tableData: newTableData };
6477
- const newRawXml = chunk2LOBDOTK_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6470
+ const newRawXml = chunkMZJMOEEX_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6478
6471
  if (newRawXml) {
6479
6472
  updates.rawXml = newRawXml;
6480
6473
  }
@@ -6487,12 +6480,12 @@ function createTableStructHandlers(input) {
6487
6480
  }
6488
6481
  const td = selectedElement.tableData;
6489
6482
  const colIdx = ts?.columnIndex ?? 0;
6490
- const newTableData = chunk2LOBDOTK_js.deleteTableColumn(td, colIdx);
6483
+ const newTableData = chunkMZJMOEEX_js.deleteTableColumn(td, colIdx);
6491
6484
  if (newTableData === td) {
6492
6485
  return;
6493
6486
  }
6494
6487
  const updates = { tableData: newTableData };
6495
- const newRawXml = chunk2LOBDOTK_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6488
+ const newRawXml = chunkMZJMOEEX_js.rebuildTableStructureInRawXml(selectedElement, newTableData);
6496
6489
  if (newRawXml) {
6497
6490
  updates.rawXml = newRawXml;
6498
6491
  }
@@ -6528,8 +6521,8 @@ async function renderToCanvas(element, options = {}) {
6528
6521
  return html2canvasPro(element, {
6529
6522
  ...options,
6530
6523
  onclone: async (doc, clonedEl) => {
6531
- await chunk2LOBDOTK_js.normalizeColorsForCapture(doc, clonedEl);
6532
- chunk2LOBDOTK_js.preprocessCssForCapture(clonedEl);
6524
+ await chunkMZJMOEEX_js.normalizeColorsForCapture(doc, clonedEl);
6525
+ chunkMZJMOEEX_js.preprocessCssForCapture(clonedEl);
6533
6526
  if (typeof userOnClone === "function") {
6534
6527
  userOnClone(doc, clonedEl);
6535
6528
  }
@@ -6585,7 +6578,7 @@ async function exportSlideToPngBlob(slideElement, options = {}) {
6585
6578
  }
6586
6579
  async function exportSlideAsPng(slideElement, slideIndex, options = {}) {
6587
6580
  const blob = await exportSlideToPngBlob(slideElement, options);
6588
- chunk2LOBDOTK_js.downloadBlob(blob, `slide-${slideIndex + 1}.png`);
6581
+ chunkMZJMOEEX_js.downloadBlob(blob, `slide-${slideIndex + 1}.png`);
6589
6582
  }
6590
6583
  async function copySlideToClipboard(slideElement, options = {}) {
6591
6584
  const blob = await exportSlideToPngBlob(slideElement, options);
@@ -6607,15 +6600,15 @@ async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide,
6607
6600
  continue;
6608
6601
  }
6609
6602
  const canvas = await renderElementToCanvas(stageEl, scale);
6610
- images.push(chunk2LOBDOTK_js.canvasToJpegData(canvas));
6603
+ images.push(chunkMZJMOEEX_js.canvasToJpegData(canvas));
6611
6604
  }
6612
6605
  onProgress?.(totalSlides, totalSlides);
6613
6606
  setActiveSlide(currentSlideIndex);
6614
6607
  if (images.length === 0) {
6615
6608
  throw new Error(chunk25VSL2BB_js.translationsEn["pptx.export.errorNoSlidesPdf"]);
6616
6609
  }
6617
- const pdfBlobUrl = chunkB4XJTZR4_js.buildPdfFromImageData(images);
6618
- chunk2LOBDOTK_js.downloadDataUrl(pdfBlobUrl, filename);
6610
+ const pdfBlobUrl = chunkSMW4QYGK_js.buildPdfFromImageData(images);
6611
+ chunkMZJMOEEX_js.downloadDataUrl(pdfBlobUrl, filename);
6619
6612
  }
6620
6613
  async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, options = {}) {
6621
6614
  const { scale = 2, onProgress } = options;
@@ -6663,8 +6656,8 @@ async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSl
6663
6656
  if (pages.length === 0) {
6664
6657
  throw new Error(chunk25VSL2BB_js.translationsEn["pptx.export.errorNoSlidesNotesPdf"]);
6665
6658
  }
6666
- const pdfDataUrl = chunkB4XJTZR4_js.buildNotesPdf(pages);
6667
- chunk2LOBDOTK_js.downloadDataUrl(pdfDataUrl, filename);
6659
+ const pdfDataUrl = chunkSMW4QYGK_js.buildNotesPdf(pages);
6660
+ chunkMZJMOEEX_js.downloadDataUrl(pdfDataUrl, filename);
6668
6661
  }
6669
6662
 
6670
6663
  // src/viewer/utils/export-video.ts
@@ -6708,7 +6701,7 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
6708
6701
  const fps = 30;
6709
6702
  const stream = recordingCanvas.captureStream(fps);
6710
6703
  const recorder = new MediaRecorder(stream, {
6711
- mimeType: chunk2LOBDOTK_js.pickSupportedMimeType([...chunk2LOBDOTK_js.WEBM_MIME_CANDIDATES]),
6704
+ mimeType: chunkMZJMOEEX_js.pickSupportedMimeType([...chunkMZJMOEEX_js.WEBM_MIME_CANDIDATES]),
6712
6705
  videoBitsPerSecond: 5e6
6713
6706
  });
6714
6707
  const chunks = [];
@@ -6731,8 +6724,8 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
6731
6724
  const duration = slideTimingsMs?.[i] ?? slideDurationMs;
6732
6725
  ctx.clearRect(0, 0, recordingCanvas.width, recordingCanvas.height);
6733
6726
  ctx.drawImage(slideCanvases[i], 0, 0);
6734
- const frameInterval = chunk2LOBDOTK_js.fpsToFrameIntervalMs(fps);
6735
- const framesNeeded = chunk2LOBDOTK_js.segmentFrameCount(duration, fps);
6727
+ const frameInterval = chunkMZJMOEEX_js.fpsToFrameIntervalMs(fps);
6728
+ const framesNeeded = chunkMZJMOEEX_js.segmentFrameCount(duration, fps);
6736
6729
  for (let f = 0; f < framesNeeded; f++) {
6737
6730
  if (signal?.aborted) {
6738
6731
  recorder.stop();
@@ -6781,7 +6774,7 @@ async function exportAllSlidesAsGif(slideStageRef, totalSlides, setActiveSlide,
6781
6774
  if (frames.length === 0) {
6782
6775
  throw new Error(chunk25VSL2BB_js.translationsEn["pptx.export.errorNoSlidesGif"]);
6783
6776
  }
6784
- const gifBytes = chunk2LOBDOTK_js.encodeGif(frames, Math.round(slideDurationMs / 10));
6777
+ const gifBytes = chunkMZJMOEEX_js.encodeGif(frames, Math.round(slideDurationMs / 10));
6785
6778
  onProgress?.(totalSlides, totalSlides);
6786
6779
  const buf = new ArrayBuffer(gifBytes.length);
6787
6780
  new Uint8Array(buf).set(gifBytes);
@@ -6835,7 +6828,7 @@ function exportAllSlidesToSvg(data, options = {}) {
6835
6828
  continue;
6836
6829
  }
6837
6830
  onProgress?.(processedCount, data.slides.length);
6838
- let svg = chunk2LOBDOTK_js.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
6831
+ let svg = chunkMZJMOEEX_js.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
6839
6832
  if (embedFonts && fontFaces?.length) {
6840
6833
  svg = injectFontFaces(svg, fontFaces);
6841
6834
  }
@@ -6895,7 +6888,7 @@ function useExportSaveAs(input) {
6895
6888
  }
6896
6889
  setExportProgress(70);
6897
6890
  setExportStatusMessage("Writing README...");
6898
- const readme = chunk2LOBDOTK_js.generatePackageReadme(pptxFilename);
6891
+ const readme = chunkMZJMOEEX_js.generatePackageReadme(pptxFilename);
6899
6892
  pkgFolder.file("README.txt", readme);
6900
6893
  if (abortCtrl.signal.aborted) {
6901
6894
  throw new DOMException("Export cancelled", "AbortError");
@@ -6906,7 +6899,7 @@ function useExportSaveAs(input) {
6906
6899
  setExportProgress(95);
6907
6900
  setExportStatusMessage("Downloading...");
6908
6901
  const baseName = pptxFilename.replace(/\.[^.]+$/u, "");
6909
- chunk2LOBDOTK_js.downloadBlob(zipBlob, `${baseName}-package.zip`);
6902
+ chunkMZJMOEEX_js.downloadBlob(zipBlob, `${baseName}-package.zip`);
6910
6903
  setExportProgress(100);
6911
6904
  } catch (err) {
6912
6905
  if (err.name !== "AbortError") {
@@ -6929,7 +6922,7 @@ function useExportSaveAs(input) {
6929
6922
  const blob = new Blob([data], {
6930
6923
  type: "application/vnd.openxmlformats-officedocument.presentationml.presentation"
6931
6924
  });
6932
- chunk2LOBDOTK_js.downloadBlob(blob, `${baseName}.${ext}`);
6925
+ chunkMZJMOEEX_js.downloadBlob(blob, `${baseName}.${ext}`);
6933
6926
  } catch (err) {
6934
6927
  console.error(`[PowerPointViewer] Save as .${ext} failed:`, err);
6935
6928
  }
@@ -6942,14 +6935,14 @@ function useExportSaveAs(input) {
6942
6935
  const pptxGuides = guides.map((g) => ({
6943
6936
  id: g.id,
6944
6937
  orientation: g.axis === "h" ? "horz" : "vert",
6945
- positionEmu: chunk2LOBDOTK_js.guidePxToEmu(g.position)
6938
+ positionEmu: chunkMZJMOEEX_js.guidePxToEmu(g.position)
6946
6939
  }));
6947
6940
  return {
6948
6941
  ...slide,
6949
6942
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
6950
6943
  };
6951
6944
  });
6952
- const slidesToSave = chunkB4XJTZR4_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
6945
+ const slidesToSave = chunkSMW4QYGK_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
6953
6946
  const saveOptions = {
6954
6947
  headerFooter,
6955
6948
  presentationProperties,
@@ -7006,7 +6999,7 @@ function safeConfirm(message) {
7006
6999
  }
7007
7000
  }
7008
7001
  function downloadBlob2(blob, filename) {
7009
- chunk2LOBDOTK_js.downloadBlob(blob, chunk2LOBDOTK_js.sanitizeDownloadFilename(filename));
7002
+ chunkMZJMOEEX_js.downloadBlob(blob, chunkMZJMOEEX_js.sanitizeDownloadFilename(filename));
7010
7003
  }
7011
7004
 
7012
7005
  // src/viewer/hooks/useExportHandlers.ts
@@ -7107,21 +7100,21 @@ function useExportHandlers(input) {
7107
7100
  {
7108
7101
  scale: 2,
7109
7102
  onProgress: (current, total) => {
7110
- setExportProgress(chunk2LOBDOTK_js.slideProgressPercent(current, total));
7111
- setExportStatusMessage(chunk2LOBDOTK_js.slideStatusLabel("Rendering", current, total));
7103
+ setExportProgress(chunkMZJMOEEX_js.slideProgressPercent(current, total));
7104
+ setExportStatusMessage(chunkMZJMOEEX_js.slideStatusLabel("Rendering", current, total));
7112
7105
  },
7113
7106
  signal: abortCtrl.signal
7114
7107
  }
7115
7108
  );
7116
- setExportProgress(chunk2LOBDOTK_js.EXPORT_ASSEMBLING_PERCENT);
7109
+ setExportProgress(chunkMZJMOEEX_js.EXPORT_ASSEMBLING_PERCENT);
7117
7110
  setExportStatusMessage("Building PDF...");
7118
7111
  await new Promise((r) => {
7119
7112
  setTimeout(r, 100);
7120
7113
  });
7121
- setExportProgress(chunk2LOBDOTK_js.EXPORT_DONE_PERCENT);
7114
+ setExportProgress(chunkMZJMOEEX_js.EXPORT_DONE_PERCENT);
7122
7115
  setExportStatusMessage("Done!");
7123
7116
  } catch (err) {
7124
- if (!chunk2LOBDOTK_js.isExportAbortError(err)) {
7117
+ if (!chunkMZJMOEEX_js.isExportAbortError(err)) {
7125
7118
  console.error("[PowerPointViewer] PDF export failed:", err);
7126
7119
  }
7127
7120
  } finally {
@@ -7151,21 +7144,21 @@ function useExportHandlers(input) {
7151
7144
  {
7152
7145
  scale: 2,
7153
7146
  onProgress: (current, total) => {
7154
- setExportProgress(chunk2LOBDOTK_js.slideProgressPercent(current, total));
7155
- setExportStatusMessage(chunk2LOBDOTK_js.slideStatusLabel("Rendering", current, total));
7147
+ setExportProgress(chunkMZJMOEEX_js.slideProgressPercent(current, total));
7148
+ setExportStatusMessage(chunkMZJMOEEX_js.slideStatusLabel("Rendering", current, total));
7156
7149
  },
7157
7150
  signal: abortCtrl.signal
7158
7151
  }
7159
7152
  );
7160
- setExportProgress(chunk2LOBDOTK_js.EXPORT_ASSEMBLING_PERCENT);
7153
+ setExportProgress(chunkMZJMOEEX_js.EXPORT_ASSEMBLING_PERCENT);
7161
7154
  setExportStatusMessage("Building PDF...");
7162
7155
  await new Promise((r) => {
7163
7156
  setTimeout(r, 100);
7164
7157
  });
7165
- setExportProgress(chunk2LOBDOTK_js.EXPORT_DONE_PERCENT);
7158
+ setExportProgress(chunkMZJMOEEX_js.EXPORT_DONE_PERCENT);
7166
7159
  setExportStatusMessage("Done!");
7167
7160
  } catch (err) {
7168
- if (!chunk2LOBDOTK_js.isExportAbortError(err)) {
7161
+ if (!chunkMZJMOEEX_js.isExportAbortError(err)) {
7169
7162
  console.error("[PowerPointViewer] Notes PDF export failed:", err);
7170
7163
  }
7171
7164
  } finally {
@@ -7206,22 +7199,22 @@ function useExportHandlers(input) {
7206
7199
  scale: 1,
7207
7200
  slideDurationMs: 3e3,
7208
7201
  onProgress: (current, total) => {
7209
- setExportProgress(chunk2LOBDOTK_js.slideProgressPercent(current, total, 45));
7210
- setExportStatusMessage(chunk2LOBDOTK_js.slideStatusLabel("Capturing", current, total));
7202
+ setExportProgress(chunkMZJMOEEX_js.slideProgressPercent(current, total, 45));
7203
+ setExportStatusMessage(chunkMZJMOEEX_js.slideStatusLabel("Capturing", current, total));
7211
7204
  },
7212
7205
  onRecordProgress: (current, total) => {
7213
- setExportProgress(chunk2LOBDOTK_js.recordProgressPercent(current, total));
7214
- setExportStatusMessage(chunk2LOBDOTK_js.slideStatusLabel("Recording", current, total));
7206
+ setExportProgress(chunkMZJMOEEX_js.recordProgressPercent(current, total));
7207
+ setExportStatusMessage(chunkMZJMOEEX_js.slideStatusLabel("Recording", current, total));
7215
7208
  },
7216
7209
  signal: abortCtrl.signal
7217
7210
  }
7218
7211
  );
7219
- setExportProgress(chunk2LOBDOTK_js.EXPORT_ASSEMBLING_PERCENT);
7212
+ setExportProgress(chunkMZJMOEEX_js.EXPORT_ASSEMBLING_PERCENT);
7220
7213
  setExportStatusMessage("Saving file...");
7221
7214
  downloadBlob2(blob, "presentation.webm");
7222
- setExportProgress(chunk2LOBDOTK_js.EXPORT_DONE_PERCENT);
7215
+ setExportProgress(chunkMZJMOEEX_js.EXPORT_DONE_PERCENT);
7223
7216
  } catch (err) {
7224
- if (!chunk2LOBDOTK_js.isExportAbortError(err)) {
7217
+ if (!chunkMZJMOEEX_js.isExportAbortError(err)) {
7225
7218
  console.error("[PowerPointViewer] Video export failed:", err);
7226
7219
  }
7227
7220
  } finally {
@@ -7249,18 +7242,18 @@ function useExportHandlers(input) {
7249
7242
  scale: 0.5,
7250
7243
  slideDurationMs: 2e3,
7251
7244
  onProgress: (current, total) => {
7252
- setExportProgress(chunk2LOBDOTK_js.slideProgressPercent(current, total));
7253
- setExportStatusMessage(chunk2LOBDOTK_js.slideStatusLabel("Encoding", current, total));
7245
+ setExportProgress(chunkMZJMOEEX_js.slideProgressPercent(current, total));
7246
+ setExportStatusMessage(chunkMZJMOEEX_js.slideStatusLabel("Encoding", current, total));
7254
7247
  },
7255
7248
  signal: abortCtrl.signal
7256
7249
  }
7257
7250
  );
7258
- setExportProgress(chunk2LOBDOTK_js.EXPORT_ASSEMBLING_PERCENT);
7251
+ setExportProgress(chunkMZJMOEEX_js.EXPORT_ASSEMBLING_PERCENT);
7259
7252
  setExportStatusMessage("Saving file...");
7260
7253
  downloadBlob2(blob, "presentation.gif");
7261
- setExportProgress(chunk2LOBDOTK_js.EXPORT_DONE_PERCENT);
7254
+ setExportProgress(chunkMZJMOEEX_js.EXPORT_DONE_PERCENT);
7262
7255
  } catch (err) {
7263
- if (!chunk2LOBDOTK_js.isExportAbortError(err)) {
7256
+ if (!chunkMZJMOEEX_js.isExportAbortError(err)) {
7264
7257
  console.error("[PowerPointViewer] GIF export failed:", err);
7265
7258
  }
7266
7259
  } finally {
@@ -7300,7 +7293,7 @@ function openPrintWindow(title, bodyHtml, orientation, colorFilter, frameSlides)
7300
7293
  }
7301
7294
  printWindow.document.open();
7302
7295
  printWindow.document.write(
7303
- chunk2LOBDOTK_js.buildPrintHtmlDocument({ title, bodyHtml, orientation, colorFilter, frameSlides })
7296
+ chunkMZJMOEEX_js.buildPrintHtmlDocument({ title, bodyHtml, orientation, colorFilter, frameSlides })
7304
7297
  );
7305
7298
  printWindow.document.close();
7306
7299
  printWindow.focus();
@@ -7361,7 +7354,7 @@ function usePrintHandlers(input) {
7361
7354
  if (svgs.length === 0) {
7362
7355
  return;
7363
7356
  }
7364
- const printDoc = chunk2LOBDOTK_js.buildPrintDocument(svgs, pptxData.width, pptxData.height, {
7357
+ const printDoc = chunkMZJMOEEX_js.buildPrintDocument(svgs, pptxData.width, pptxData.height, {
7365
7358
  title: "Slides (Vector)",
7366
7359
  orientation: settings.orientation,
7367
7360
  colorFilter
@@ -7397,7 +7390,7 @@ function usePrintHandlers(input) {
7397
7390
  if (settings.printWhat === "outline") {
7398
7391
  openPrintWindow(
7399
7392
  "Outline",
7400
- `<div class="outline-page">${chunk2LOBDOTK_js.buildOutlineHtml(slideIndices, slides)}</div>`,
7393
+ `<div class="outline-page">${chunkMZJMOEEX_js.buildOutlineHtml(slideIndices, slides)}</div>`,
7401
7394
  settings.orientation,
7402
7395
  colorFilter,
7403
7396
  settings.frameSlides
@@ -7422,7 +7415,7 @@ function usePrintHandlers(input) {
7422
7415
  if (settings.printWhat === "slides") {
7423
7416
  openPrintWindow(
7424
7417
  "Slides",
7425
- chunk2LOBDOTK_js.buildSlidesHtml(slideImages, slideIndices),
7418
+ chunkMZJMOEEX_js.buildSlidesHtml(slideImages, slideIndices),
7426
7419
  settings.orientation,
7427
7420
  colorFilter,
7428
7421
  settings.frameSlides
@@ -7432,7 +7425,7 @@ function usePrintHandlers(input) {
7432
7425
  if (settings.printWhat === "notes") {
7433
7426
  openPrintWindow(
7434
7427
  "Notes Pages",
7435
- chunk2LOBDOTK_js.buildNotesHtml(slideImages, slideIndices, slides),
7428
+ chunkMZJMOEEX_js.buildNotesHtml(slideImages, slideIndices, slides),
7436
7429
  "portrait",
7437
7430
  colorFilter,
7438
7431
  settings.frameSlides
@@ -7443,7 +7436,7 @@ function usePrintHandlers(input) {
7443
7436
  const spp = settings.slidesPerPage;
7444
7437
  openPrintWindow(
7445
7438
  `Handout ${spp} per page`,
7446
- chunk2LOBDOTK_js.buildHandoutsHtml(slideImages, slideIndices, spp),
7439
+ chunkMZJMOEEX_js.buildHandoutsHtml(slideImages, slideIndices, spp),
7447
7440
  "portrait",
7448
7441
  colorFilter,
7449
7442
  settings.frameSlides
@@ -7507,8 +7500,8 @@ function useThemeHandlers(input) {
7507
7500
  return;
7508
7501
  }
7509
7502
  await handler.updateThemeColorScheme(colorScheme);
7510
- const previousMap = theme?.colorScheme ? chunk2LOBDOTK_js.buildThemeColorMap(theme.colorScheme) : {};
7511
- setSlides((prev) => chunk2LOBDOTK_js.reResolveSlideColors(prev, previousMap, colorScheme));
7503
+ const previousMap = theme?.colorScheme ? chunkMZJMOEEX_js.buildThemeColorMap(theme.colorScheme) : {};
7504
+ setSlides((prev) => chunkMZJMOEEX_js.reResolveSlideColors(prev, previousMap, colorScheme));
7512
7505
  setTheme((prev) => prev ? { ...prev, colorScheme } : { colorScheme });
7513
7506
  bumpHistory();
7514
7507
  history.markDirty();
@@ -7613,7 +7606,7 @@ function useThemeSwitching(input) {
7613
7606
  }
7614
7607
  try {
7615
7608
  await handler.applyTheme(preset.colorScheme, preset.fontScheme, preset.name);
7616
- const newData = chunk2LOBDOTK_js.applyThemeToData(data, preset.colorScheme, preset.fontScheme, preset.name);
7609
+ const newData = chunkMZJMOEEX_js.applyThemeToData(data, preset.colorScheme, preset.fontScheme, preset.name);
7617
7610
  onDataChange(newData);
7618
7611
  onThemeChanged?.(preset);
7619
7612
  } catch (error) {
@@ -7630,7 +7623,7 @@ function useThemeSwitching(input) {
7630
7623
  }
7631
7624
  try {
7632
7625
  await handler.applyTheme(colorScheme, fontScheme ?? {}, themeName);
7633
- const newData = chunk2LOBDOTK_js.applyThemeToData(data, colorScheme, fontScheme, themeName);
7626
+ const newData = chunkMZJMOEEX_js.applyThemeToData(data, colorScheme, fontScheme, themeName);
7634
7627
  onDataChange(newData);
7635
7628
  } catch (error) {
7636
7629
  console.error("Failed to switch to custom theme:", error);
@@ -7642,12 +7635,12 @@ function useThemeSwitching(input) {
7642
7635
  if (!data?.theme?.colorScheme) {
7643
7636
  return void 0;
7644
7637
  }
7645
- return chunk2LOBDOTK_js.THEME_PRESETS.find(
7646
- (p) => chunk2LOBDOTK_js.themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
7638
+ return chunkMZJMOEEX_js.THEME_PRESETS.find(
7639
+ (p) => chunkMZJMOEEX_js.themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
7647
7640
  );
7648
7641
  }, [data?.theme?.colorScheme]);
7649
7642
  return {
7650
- presets: chunk2LOBDOTK_js.THEME_PRESETS,
7643
+ presets: chunkMZJMOEEX_js.THEME_PRESETS,
7651
7644
  switchToPreset,
7652
7645
  switchToCustom,
7653
7646
  currentPreset
@@ -7722,7 +7715,7 @@ function usePropertyHandlers(input) {
7722
7715
  }
7723
7716
  try {
7724
7717
  const ab = await file.arrayBuffer();
7725
- const h = new chunk2LOBDOTK_js.PptxHandler();
7718
+ const h = new chunkMZJMOEEX_js.PptxHandler();
7726
7719
  const other = await h.load(ab);
7727
7720
  if (!other) {
7728
7721
  return;
@@ -7732,7 +7725,7 @@ function usePropertyHandlers(input) {
7732
7725
  width: canvasSize.width,
7733
7726
  height: canvasSize.height
7734
7727
  };
7735
- setCompareResult(chunk2LOBDOTK_js.comparePresentation(cur, other));
7728
+ setCompareResult(chunkMZJMOEEX_js.comparePresentation(cur, other));
7736
7729
  setIsComparePanelOpen(true);
7737
7730
  } catch (err) {
7738
7731
  console.warn("Compare failed:", err);
@@ -7749,7 +7742,7 @@ function usePropertyHandlers(input) {
7749
7742
  if (!diff || diff.status === "unchanged") {
7750
7743
  return;
7751
7744
  }
7752
- setSlides((prev) => chunk2LOBDOTK_js.applyAcceptSlide(prev, diff));
7745
+ setSlides((prev) => chunkMZJMOEEX_js.applyAcceptSlide(prev, diff));
7753
7746
  setIsDirty(true);
7754
7747
  },
7755
7748
  [compareResult, setSlides, setIsDirty]
@@ -7760,10 +7753,10 @@ function usePropertyHandlers(input) {
7760
7753
  if (!compareResult) {
7761
7754
  return;
7762
7755
  }
7763
- setSlides((prev) => chunk2LOBDOTK_js.applyAcceptAllSlides(prev, compareResult));
7756
+ setSlides((prev) => chunkMZJMOEEX_js.applyAcceptAllSlides(prev, compareResult));
7764
7757
  setIsDirty(true);
7765
7758
  }, [compareResult, setSlides, setIsDirty]);
7766
- const usedFontFamilies = react.useMemo(() => chunk2LOBDOTK_js.collectUsedFonts(slides), [slides]);
7759
+ const usedFontFamilies = react.useMemo(() => chunkMZJMOEEX_js.collectUsedFonts(slides), [slides]);
7767
7760
  return {
7768
7761
  handleUpdateNotes,
7769
7762
  handleUpdateSlide,
@@ -7882,7 +7875,7 @@ function useIsMobile(input) {
7882
7875
  const containerRef = input?.containerRef;
7883
7876
  const isTouchDevice = react.useSyncExternalStore(
7884
7877
  subscribeTouchCapability,
7885
- chunk2LOBDOTK_js.detectTouchDevice,
7878
+ chunkMZJMOEEX_js.detectTouchDevice,
7886
7879
  () => false
7887
7880
  // server snapshot
7888
7881
  );
@@ -7898,7 +7891,7 @@ function useIsMobile(input) {
7898
7891
  }
7899
7892
  return containerRef?.current?.clientHeight ?? window.innerHeight;
7900
7893
  });
7901
- const [orientation, setOrientation] = react.useState(chunk2LOBDOTK_js.detectOrientation);
7894
+ const [orientation, setOrientation] = react.useState(chunkMZJMOEEX_js.detectOrientation);
7902
7895
  const [isVirtualKeyboardOpen, setIsVirtualKeyboardOpen] = react.useState(false);
7903
7896
  const [initialViewportHeight] = react.useState(
7904
7897
  () => typeof window !== "undefined" ? window.innerHeight : 800
@@ -7942,7 +7935,7 @@ function useIsMobile(input) {
7942
7935
  return;
7943
7936
  }
7944
7937
  const handleOrientationChange = () => {
7945
- setOrientation(chunk2LOBDOTK_js.detectOrientation());
7938
+ setOrientation(chunkMZJMOEEX_js.detectOrientation());
7946
7939
  };
7947
7940
  if (screen.orientation) {
7948
7941
  screen.orientation.addEventListener("change", handleOrientationChange);
@@ -7972,9 +7965,9 @@ function useIsMobile(input) {
7972
7965
  window.addEventListener("resize", handleResize);
7973
7966
  return () => window.removeEventListener("resize", handleResize);
7974
7967
  }, [isTouchDevice, initialViewportHeight]);
7975
- const isMobile = chunk2LOBDOTK_js.isMobileViewport(containerWidth, containerHeight, isTouchDevice);
7976
- const isTablet = !isMobile && containerWidth >= chunk2LOBDOTK_js.MOBILE_BREAKPOINT && containerWidth < chunk2LOBDOTK_js.TABLET_BREAKPOINT;
7977
- const isDesktop = !isMobile && containerWidth >= chunk2LOBDOTK_js.TABLET_BREAKPOINT;
7968
+ const isMobile = chunkMZJMOEEX_js.isMobileViewport(containerWidth, containerHeight, isTouchDevice);
7969
+ const isTablet = !isMobile && containerWidth >= chunkMZJMOEEX_js.MOBILE_BREAKPOINT && containerWidth < chunkMZJMOEEX_js.TABLET_BREAKPOINT;
7970
+ const isDesktop = !isMobile && containerWidth >= chunkMZJMOEEX_js.TABLET_BREAKPOINT;
7978
7971
  return {
7979
7972
  isMobile,
7980
7973
  isTablet,
@@ -8035,11 +8028,11 @@ function useViewerDialogs(input) {
8035
8028
  );
8036
8029
  const [embedFontsEnabled, setEmbedFontsEnabled] = react.useState(false);
8037
8030
  const [isNarrowViewport, setIsNarrowViewport] = react.useState(
8038
- () => typeof window !== "undefined" ? chunk2LOBDOTK_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch()) : false
8031
+ () => typeof window !== "undefined" ? chunkMZJMOEEX_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch()) : false
8039
8032
  );
8040
8033
  react.useEffect(() => {
8041
8034
  const handleWindow = () => setIsNarrowViewport(
8042
- chunk2LOBDOTK_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch())
8035
+ chunkMZJMOEEX_js.isMobileViewport(window.innerWidth, window.innerHeight, viewportIsTouch())
8043
8036
  );
8044
8037
  let observer = null;
8045
8038
  let raf = 0;
@@ -8053,12 +8046,12 @@ function useViewerDialogs(input) {
8053
8046
  const entry = entries[0];
8054
8047
  if (entry) {
8055
8048
  setIsNarrowViewport(
8056
- chunk2LOBDOTK_js.isMobileViewport(entry.contentRect.width, entry.contentRect.height, viewportIsTouch())
8049
+ chunkMZJMOEEX_js.isMobileViewport(entry.contentRect.width, entry.contentRect.height, viewportIsTouch())
8057
8050
  );
8058
8051
  }
8059
8052
  });
8060
8053
  observer.observe(el);
8061
- setIsNarrowViewport(chunk2LOBDOTK_js.isMobileViewport(el.clientWidth, el.clientHeight, viewportIsTouch()));
8054
+ setIsNarrowViewport(chunkMZJMOEEX_js.isMobileViewport(el.clientWidth, el.clientHeight, viewportIsTouch()));
8062
8055
  };
8063
8056
  attach();
8064
8057
  window.addEventListener("resize", handleWindow);
@@ -8216,12 +8209,12 @@ function useViewerDialogs(input) {
8216
8209
  }
8217
8210
  function computeGridSpacingPx(presentationGridSpacing) {
8218
8211
  if (presentationGridSpacing) {
8219
- const px = Math.round(presentationGridSpacing.cx / chunkB4XJTZR4_js.EMU_PER_PX);
8212
+ const px = Math.round(presentationGridSpacing.cx / chunkSMW4QYGK_js.EMU_PER_PX);
8220
8213
  if (px > 0) {
8221
8214
  return px;
8222
8215
  }
8223
8216
  }
8224
- return chunkB4XJTZR4_js.GRID_SIZE;
8217
+ return chunkSMW4QYGK_js.GRID_SIZE;
8225
8218
  }
8226
8219
  function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows) {
8227
8220
  if (activeCustomShowId) {
@@ -8235,8 +8228,8 @@ function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows) {
8235
8228
  return slides.map((_, i) => i).filter((i) => !slides[i]?.hidden);
8236
8229
  }
8237
8230
  function computeSlideSectionGroups(slides, sections) {
8238
- return chunk2LOBDOTK_js.groupSlidesBySection(sections, slides).map((group) => ({
8239
- id: group.section?.id ?? (sections.length > 0 ? chunkB4XJTZR4_js.UNGROUPED_SECTION_ID : "default"),
8231
+ return chunkMZJMOEEX_js.groupSlidesBySection(sections, slides).map((group) => ({
8232
+ id: group.section?.id ?? (sections.length > 0 ? chunkSMW4QYGK_js.UNGROUPED_SECTION_ID : "default"),
8240
8233
  label: group.section?.name ?? (sections.length > 0 ? "Ungrouped Slides" : "Slides"),
8241
8234
  slideIndexes: group.slideIndexes,
8242
8235
  ...group.section?.color !== void 0 ? { color: group.section.color } : {},
@@ -8291,7 +8284,7 @@ function useDerivedSlideState(input) {
8291
8284
  );
8292
8285
  const slideSectionGroups = react.useMemo(
8293
8286
  () => computeSlideSectionGroups(slides, sections).map((group) => {
8294
- if (group.id === chunkB4XJTZR4_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
8287
+ if (group.id === chunkSMW4QYGK_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
8295
8288
  return { ...group, label: t("pptx.slides.ungroupedSlides") };
8296
8289
  }
8297
8290
  if (group.id === "default" && group.label === "Slides") {
@@ -8394,13 +8387,13 @@ function useAnnotationHandlers(input) {
8394
8387
  }, [annotations, setMode, setSlides, history]);
8395
8388
  const handleSetMode = react.useCallback(
8396
8389
  (nextMode) => {
8397
- if (mode === "present" && nextMode !== "present" && !chunk2LOBDOTK_js.mayLeaveSlideShow()) {
8390
+ if (mode === "present" && nextMode !== "present" && !chunkMZJMOEEX_js.mayLeaveSlideShow()) {
8398
8391
  return;
8399
8392
  }
8400
8393
  if (nextMode === "present") {
8401
8394
  presentation.enterPresentMode();
8402
8395
  } else if (mode === "present" && annotations.hasAnyAnnotations) {
8403
- chunkB4XJTZR4_js.stopAllPersistentAudio();
8396
+ chunkSMW4QYGK_js.stopAllPersistentAudio();
8404
8397
  pendingModeAfterAnnotationsRef.current = nextMode;
8405
8398
  if (promptKeepInkAnnotations) {
8406
8399
  setShowKeepAnnotationsDialog(true);
@@ -8409,7 +8402,7 @@ function useAnnotationHandlers(input) {
8409
8402
  }
8410
8403
  } else {
8411
8404
  if (mode === "present") {
8412
- chunkB4XJTZR4_js.stopAllPersistentAudio();
8405
+ chunkSMW4QYGK_js.stopAllPersistentAudio();
8413
8406
  }
8414
8407
  setMode(nextMode);
8415
8408
  }
@@ -8475,13 +8468,13 @@ function useSerialize(input) {
8475
8468
  let processedSlide = slide;
8476
8469
  if (pendingEditId) {
8477
8470
  const updatedElements = slide.elements.map((el) => {
8478
- if (el.id !== pendingEditId || !chunk2LOBDOTK_js.hasTextProperties(el)) {
8471
+ if (el.id !== pendingEditId || !chunkMZJMOEEX_js.hasTextProperties(el)) {
8479
8472
  return el;
8480
8473
  }
8481
8474
  return {
8482
8475
  ...el,
8483
8476
  text: pendingEditText,
8484
- textSegments: chunk2LOBDOTK_js.remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
8477
+ textSegments: chunkMZJMOEEX_js.remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
8485
8478
  };
8486
8479
  });
8487
8480
  if (updatedElements.some((el, i) => el !== slide.elements[i])) {
@@ -8494,14 +8487,14 @@ function useSerialize(input) {
8494
8487
  const pptxGuides = guides.map((g) => ({
8495
8488
  id: g.id,
8496
8489
  orientation: g.axis === "h" ? "horz" : "vert",
8497
- positionEmu: chunk2LOBDOTK_js.guidePxToEmu(g.position)
8490
+ positionEmu: chunkMZJMOEEX_js.guidePxToEmu(g.position)
8498
8491
  }));
8499
8492
  return {
8500
8493
  ...processedSlide,
8501
8494
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
8502
8495
  };
8503
8496
  });
8504
- const slidesToSave = chunkB4XJTZR4_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
8497
+ const slidesToSave = chunkSMW4QYGK_js.buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
8505
8498
  const saveOptions = {
8506
8499
  headerFooter,
8507
8500
  presentationProperties,
@@ -8670,7 +8663,7 @@ function usePresentationSetup(input) {
8670
8663
  containerRef,
8671
8664
  content,
8672
8665
  onSetMode: (nextMode) => {
8673
- if (mode === "present" && nextMode !== "present" && !chunk2LOBDOTK_js.mayLeaveSlideShow()) {
8666
+ if (mode === "present" && nextMode !== "present" && !chunkMZJMOEEX_js.mayLeaveSlideShow()) {
8674
8667
  return;
8675
8668
  }
8676
8669
  if (mode === "present" && nextMode !== "present" && annotations.hasAnyAnnotations && promptKeepInkAnnotations) {
@@ -8678,7 +8671,7 @@ function usePresentationSetup(input) {
8678
8671
  setShowKeepAnnotationsDialog(true);
8679
8672
  } else {
8680
8673
  if (mode === "present" && nextMode !== "present") {
8681
- chunkB4XJTZR4_js.stopAllPersistentAudio();
8674
+ chunkSMW4QYGK_js.stopAllPersistentAudio();
8682
8675
  stopAnimationSound();
8683
8676
  }
8684
8677
  setMode(nextMode);
@@ -8732,10 +8725,10 @@ function usePresentationSetup(input) {
8732
8725
  onToggleInkMarkup: () => annotations.setInkMarkupVisible(!annotations.inkMarkupVisible),
8733
8726
  onToggleToolbar: () => annotations.setToolbarVisible(!annotations.toolbarVisible),
8734
8727
  onSaveRehearsalTimings: (timings) => {
8735
- setSlides((prev) => chunk2LOBDOTK_js.applyRehearsalTimings(prev, timings));
8728
+ setSlides((prev) => chunkMZJMOEEX_js.applyRehearsalTimings(prev, timings));
8736
8729
  history.markDirty();
8737
8730
  },
8738
- loopContinuously: chunk2LOBDOTK_js.shouldLoopContinuously(presentationProperties),
8731
+ loopContinuously: chunkMZJMOEEX_js.shouldLoopContinuously(presentationProperties),
8739
8732
  showWithAnimation: presentationProperties.showWithAnimation,
8740
8733
  useTimings: presentationProperties.advanceMode !== "manual",
8741
8734
  endWithBlackSlide
@@ -8897,7 +8890,7 @@ function useEditorOperations(input) {
8897
8890
  const { formatPainterActive, setFormatPainterActive, elementLookup } = state;
8898
8891
  react.useEffect(() => {
8899
8892
  if (formatPainterActive && !prevFormatPainterRef.current && selectedElement) {
8900
- copiedFormatRef.current = chunk2LOBDOTK_js.copyFormatFromElement(selectedElement);
8893
+ copiedFormatRef.current = chunkMZJMOEEX_js.copyFormatFromElement(selectedElement);
8901
8894
  } else if (!formatPainterActive) {
8902
8895
  copiedFormatRef.current = null;
8903
8896
  }
@@ -8923,12 +8916,12 @@ function useEditorOperations(input) {
8923
8916
  e.stopPropagation();
8924
8917
  const element = elementLookup.get(elementId);
8925
8918
  if (element) {
8926
- const updated = chunk2LOBDOTK_js.applyFormatToElement(element, copiedFormatRef.current);
8919
+ const updated = chunkMZJMOEEX_js.applyFormatToElement(element, copiedFormatRef.current);
8927
8920
  const updates = {};
8928
- if (chunk2LOBDOTK_js.hasShapeProperties(updated)) {
8921
+ if (chunkMZJMOEEX_js.hasShapeProperties(updated)) {
8929
8922
  updates.shapeStyle = updated.shapeStyle;
8930
8923
  }
8931
- if (chunk2LOBDOTK_js.hasTextProperties(updated)) {
8924
+ if (chunkMZJMOEEX_js.hasTextProperties(updated)) {
8932
8925
  updates.textStyle = updated.textStyle;
8933
8926
  }
8934
8927
  ops.updateElementById(elementId, updates);
@@ -9075,7 +9068,7 @@ function collectReferencedFontFamilies(slides) {
9075
9068
  const families = /* @__PURE__ */ new Set();
9076
9069
  for (const slide of slides) {
9077
9070
  for (const el of slide.elements) {
9078
- if (chunk2LOBDOTK_js.hasTextProperties(el) && el.textSegments) {
9071
+ if (chunkMZJMOEEX_js.hasTextProperties(el) && el.textSegments) {
9079
9072
  for (const seg of el.textSegments) {
9080
9073
  if (seg.style.fontFamily) {
9081
9074
  families.add(seg.style.fontFamily);
@@ -9644,7 +9637,7 @@ function useViewerIntegration(input) {
9644
9637
  return zoom.scale;
9645
9638
  },
9646
9639
  setZoom(level) {
9647
- zoom.setScale(Math.min(Math.max(level, chunkB4XJTZR4_js.MIN_ZOOM_SCALE), chunkB4XJTZR4_js.MAX_ZOOM_SCALE));
9640
+ zoom.setScale(Math.min(Math.max(level, chunkSMW4QYGK_js.MIN_ZOOM_SCALE), chunkSMW4QYGK_js.MAX_ZOOM_SCALE));
9648
9641
  },
9649
9642
  zoomIn() {
9650
9643
  zoom.handleZoomIn();
@@ -9859,7 +9852,7 @@ function useReducedMotion() {
9859
9852
  }
9860
9853
  function useViewerOptions() {
9861
9854
  const storeRef = react.useRef(null);
9862
- storeRef.current ??= chunk2LOBDOTK_js.createViewerOptionsStore();
9855
+ storeRef.current ??= chunkMZJMOEEX_js.createViewerOptionsStore();
9863
9856
  const store = storeRef.current;
9864
9857
  const options = react.useSyncExternalStore(
9865
9858
  (onStoreChange) => store.subscribe(onStoreChange),
@@ -9868,9 +9861,9 @@ function useViewerOptions() {
9868
9861
  );
9869
9862
  return { optionsStore: store, options };
9870
9863
  }
9871
- var KNOWN_TAB_IDS = new Set(chunk2LOBDOTK_js.TOOLBAR_TABS.map((tab) => tab.id));
9864
+ var KNOWN_TAB_IDS = new Set(chunkMZJMOEEX_js.TOOLBAR_TABS.map((tab) => tab.id));
9872
9865
  function computeToolbarVisibility(hiddenActions) {
9873
- const isHidden = (id) => chunk2LOBDOTK_js.isActionHidden(id, hiddenActions);
9866
+ const isHidden = (id) => chunkMZJMOEEX_js.isActionHidden(id, hiddenActions);
9874
9867
  const isTabVisible = (id) => !KNOWN_TAB_IDS.has(id) || !isHidden(id);
9875
9868
  return { isHidden, isTabVisible };
9876
9869
  }
@@ -9955,12 +9948,12 @@ function useYjsDocumentSync({
9955
9948
  return;
9956
9949
  }
9957
9950
  try {
9958
- const handler = new chunk2LOBDOTK_js.PptxHandler();
9951
+ const handler = new chunkMZJMOEEX_js.PptxHandler();
9959
9952
  await handler.load(sourceBytes.buffer);
9960
- const currentSlides = chunk2LOBDOTK_js.readSlidesFromYDoc(
9953
+ const currentSlides = chunkMZJMOEEX_js.readSlidesFromYDoc(
9961
9954
  doc
9962
9955
  );
9963
- const slidesToSave = chunkB4XJTZR4_js.buildSaveSlides(currentSlides, templateElementsBySlideId);
9956
+ const slidesToSave = chunkSMW4QYGK_js.buildSaveSlides(currentSlides, templateElementsBySlideId);
9964
9957
  const bytes = await handler.save(slidesToSave);
9965
9958
  config.onWriteBack(bytes);
9966
9959
  } catch {
@@ -9975,7 +9968,7 @@ function useYjsDocumentSync({
9975
9968
  if (!doc || !isConnected) {
9976
9969
  return;
9977
9970
  }
9978
- const docSlides = chunk2LOBDOTK_js.readSlidesFromYDoc(
9971
+ const docSlides = chunkMZJMOEEX_js.readSlidesFromYDoc(
9979
9972
  doc
9980
9973
  );
9981
9974
  if (docSlides.length === 0) {
@@ -9997,11 +9990,11 @@ function useYjsDocumentSync({
9997
9990
  lastSyncedRef.current = serialized;
9998
9991
  void (async () => {
9999
9992
  const factories = await getFactories();
10000
- chunk2LOBDOTK_js.reconcileSlidesInYDoc(
9993
+ chunkMZJMOEEX_js.reconcileSlidesInYDoc(
10001
9994
  slides,
10002
9995
  doc,
10003
9996
  factories,
10004
- chunk2LOBDOTK_js.LOCAL_SYNC_ORIGIN
9997
+ chunkMZJMOEEX_js.LOCAL_SYNC_ORIGIN
10005
9998
  );
10006
9999
  scheduleWriteBack();
10007
10000
  })();
@@ -10015,10 +10008,10 @@ function useYjsDocumentSync({
10015
10008
  return;
10016
10009
  }
10017
10010
  const handleChange = (_events, transaction) => {
10018
- if (transaction?.origin === chunk2LOBDOTK_js.LOCAL_SYNC_ORIGIN) {
10011
+ if (transaction?.origin === chunkMZJMOEEX_js.LOCAL_SYNC_ORIGIN) {
10019
10012
  return;
10020
10013
  }
10021
- const remoteSlides = chunk2LOBDOTK_js.readSlidesFromYDoc(
10014
+ const remoteSlides = chunkMZJMOEEX_js.readSlidesFromYDoc(
10022
10015
  doc
10023
10016
  );
10024
10017
  if (remoteSlides.length === 0) {
@@ -10034,7 +10027,7 @@ function useYjsDocumentSync({
10034
10027
  isApplyingRemoteRef.current = false;
10035
10028
  scheduleWriteBack();
10036
10029
  };
10037
- const unobserve = chunk2LOBDOTK_js.observeYDocSlides(
10030
+ const unobserve = chunkMZJMOEEX_js.observeYDocSlides(
10038
10031
  doc,
10039
10032
  handleChange
10040
10033
  );
@@ -10072,7 +10065,7 @@ function useBroadcastFollower({
10072
10065
  if (!broadcaster) {
10073
10066
  return;
10074
10067
  }
10075
- if (!chunk2LOBDOTK_js.shouldAutoFollowBroadcaster({
10068
+ if (!chunkMZJMOEEX_js.shouldAutoFollowBroadcaster({
10076
10069
  localRole: collab.config.role,
10077
10070
  broadcasterRole: broadcaster.role
10078
10071
  })) {
@@ -10232,10 +10225,10 @@ function useTouchGestures(input) {
10232
10225
  if (!el || !enabled) {
10233
10226
  return;
10234
10227
  }
10235
- const recognizer = chunk2LOBDOTK_js.createTouchGestureRecognizer({
10228
+ const recognizer = chunkMZJMOEEX_js.createTouchGestureRecognizer({
10236
10229
  getScale: () => scaleRef.current,
10237
- minScale: chunkB4XJTZR4_js.MIN_ZOOM_SCALE,
10238
- maxScale: chunkB4XJTZR4_js.MAX_ZOOM_SCALE,
10230
+ minScale: chunkSMW4QYGK_js.MIN_ZOOM_SCALE,
10231
+ maxScale: chunkSMW4QYGK_js.MAX_ZOOM_SCALE,
10239
10232
  callbacks: {
10240
10233
  onPinchZoom: (newScale) => callbacksRef.current.onPinchZoom?.(newScale),
10241
10234
  onSwipe: (direction) => callbacksRef.current.onSwipe?.(direction),
@@ -10275,7 +10268,7 @@ function scrollFocusedIntoView(keyboardInset) {
10275
10268
  return;
10276
10269
  }
10277
10270
  const rect = active.getBoundingClientRect();
10278
- const delta = chunk2LOBDOTK_js.computeScrollDelta(
10271
+ const delta = chunkMZJMOEEX_js.computeScrollDelta(
10279
10272
  { top: rect.top, bottom: rect.bottom },
10280
10273
  window.innerHeight,
10281
10274
  keyboardInset
@@ -10295,8 +10288,8 @@ function useKeyboardInsets(enabled = true) {
10295
10288
  return;
10296
10289
  }
10297
10290
  const update = () => {
10298
- const metrics = chunk2LOBDOTK_js.readViewportMetrics(window);
10299
- const inset = metrics ? chunk2LOBDOTK_js.computeKeyboardInset(metrics) : 0;
10291
+ const metrics = chunkMZJMOEEX_js.readViewportMetrics(window);
10292
+ const inset = metrics ? chunkMZJMOEEX_js.computeKeyboardInset(metrics) : 0;
10300
10293
  setKeyboardInset(inset);
10301
10294
  if (inset > 0) {
10302
10295
  window.requestAnimationFrame(() => scrollFocusedIntoView(inset));
@@ -10307,8 +10300,8 @@ function useKeyboardInsets(enabled = true) {
10307
10300
  vv.addEventListener("scroll", update);
10308
10301
  const onFocusIn = () => {
10309
10302
  window.requestAnimationFrame(() => {
10310
- const metrics = chunk2LOBDOTK_js.readViewportMetrics(window);
10311
- const inset = metrics ? chunk2LOBDOTK_js.computeKeyboardInset(metrics) : 0;
10303
+ const metrics = chunkMZJMOEEX_js.readViewportMetrics(window);
10304
+ const inset = metrics ? chunkMZJMOEEX_js.computeKeyboardInset(metrics) : 0;
10312
10305
  if (inset > 0) {
10313
10306
  scrollFocusedIntoView(inset);
10314
10307
  }
@@ -10321,7 +10314,7 @@ function useKeyboardInsets(enabled = true) {
10321
10314
  document.removeEventListener("focusin", onFocusIn);
10322
10315
  };
10323
10316
  }, [enabled]);
10324
- return { keyboardInset, isKeyboardOpen: chunk2LOBDOTK_js.isKeyboardOpen(keyboardInset) };
10317
+ return { keyboardInset, isKeyboardOpen: chunkMZJMOEEX_js.isKeyboardOpen(keyboardInset) };
10325
10318
  }
10326
10319
 
10327
10320
  // src/viewer/hooks/useViewerBuildingBlocks-canvas-props.ts
@@ -10376,13 +10369,13 @@ function buildCanvasProps(input) {
10376
10369
  if (mode === "present") {
10377
10370
  presentation.handlePresentationAction(action);
10378
10371
  } else if (action.url) {
10379
- chunk2LOBDOTK_js.safeOpenUrl(action.url);
10372
+ chunkMZJMOEEX_js.safeOpenUrl(action.url);
10380
10373
  }
10381
10374
  };
10382
10375
  const handleHyperlinkClick = (url) => {
10383
- if (chunk2LOBDOTK_js.isPpactionUrl(url)) {
10376
+ if (chunkMZJMOEEX_js.isPpactionUrl(url)) {
10384
10377
  if (mode === "present") {
10385
- const parsed = chunk2LOBDOTK_js.parsePpactionUrl(url);
10378
+ const parsed = chunkMZJMOEEX_js.parsePpactionUrl(url);
10386
10379
  if (parsed) {
10387
10380
  presentation.handlePresentationAction({
10388
10381
  action: parsed.action,
@@ -10392,7 +10385,7 @@ function buildCanvasProps(input) {
10392
10385
  }
10393
10386
  return;
10394
10387
  }
10395
- chunk2LOBDOTK_js.safeOpenUrl(url);
10388
+ chunkMZJMOEEX_js.safeOpenUrl(url);
10396
10389
  };
10397
10390
  return {
10398
10391
  activeSlide: effectiveSlide,
@@ -10712,7 +10705,7 @@ function buildToolbarProps(input) {
10712
10705
  onOpenFile,
10713
10706
  onOpenRecentFile,
10714
10707
  onCreatePresentation: (templateId) => {
10715
- s.setSlides(chunk2LOBDOTK_js.createBackstagePresentation(templateId));
10708
+ s.setSlides(chunkMZJMOEEX_js.createBackstagePresentation(templateId));
10716
10709
  s.setActiveSlideIndex(0);
10717
10710
  s.setSelectedElementId(null);
10718
10711
  s.setSelectedElementIds([]);
@@ -10767,7 +10760,7 @@ function buildToolbarProps(input) {
10767
10760
  isCommentsPanelOpen: s.isInspectorPaneOpen,
10768
10761
  slideCommentCount: activeSlide?.comments?.length ?? 0,
10769
10762
  formatPainterActive: s.formatPainterActive,
10770
- canActivateFormatPainter: chunk2LOBDOTK_js.hasCopyableFormat(selectedElement),
10763
+ canActivateFormatPainter: chunkMZJMOEEX_js.hasCopyableFormat(selectedElement),
10771
10764
  onToggleFormatPainter: () => s.setFormatPainterActive((p) => !p),
10772
10765
  isSelectionPaneOpen: s.isSelectionPaneOpen,
10773
10766
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -11030,7 +11023,7 @@ function useViewerBuildingBlocks(input) {
11030
11023
  }, [incomingContent]);
11031
11024
  const onOpenFile = react.useCallback(() => {
11032
11025
  void (async () => {
11033
- const picked = await chunk2LOBDOTK_js.openPptxFile();
11026
+ const picked = await chunkMZJMOEEX_js.openPptxFile();
11034
11027
  if (picked) {
11035
11028
  setContent(picked.buffer);
11036
11029
  }
@@ -11038,7 +11031,7 @@ function useViewerBuildingBlocks(input) {
11038
11031
  }, []);
11039
11032
  const onOpenRecentFile = react.useCallback((key) => {
11040
11033
  void (async () => {
11041
- const bytes = await chunk2LOBDOTK_js.readBackstageRecentFile(key);
11034
+ const bytes = await chunkMZJMOEEX_js.readBackstageRecentFile(key);
11042
11035
  if (bytes) {
11043
11036
  setContent(bytes);
11044
11037
  }