pptx-react-viewer 4.47.0 → 4.48.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 (63) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/{AiChatPanel-6S4LWXGM.mjs → AiChatPanel-NKTBHT5B.mjs} +1 -1
  3. package/dist/AiChatPanel-NKTBHT5B.mjs.br +0 -0
  4. package/dist/AiChatPanel-NKTBHT5B.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-IEM43TTZ.js → AiChatPanel-S4WNQCY4.js} +9 -9
  6. package/dist/AiChatPanel-S4WNQCY4.js.br +0 -0
  7. package/dist/AiChatPanel-S4WNQCY4.js.gz +0 -0
  8. package/dist/{chunk-SSANGQ35.js → chunk-5FAX7F3O.js} +1349 -1347
  9. package/dist/chunk-5FAX7F3O.js.br +0 -0
  10. package/dist/chunk-5FAX7F3O.js.gz +0 -0
  11. package/dist/{chunk-OWZSRPAH.mjs → chunk-H7JRMKYC.mjs} +85 -83
  12. package/dist/chunk-H7JRMKYC.mjs.br +0 -0
  13. package/dist/chunk-H7JRMKYC.mjs.gz +0 -0
  14. package/dist/{chunk-MA2BI7LX.js → chunk-JAI42EXQ.js} +0 -4
  15. package/dist/chunk-JAI42EXQ.js.br +0 -0
  16. package/dist/{chunk-MA2BI7LX.js.gz → chunk-JAI42EXQ.js.gz} +0 -0
  17. package/dist/{chunk-HDOR67HF.mjs → chunk-JHQHAO43.mjs} +53 -50
  18. package/dist/chunk-JHQHAO43.mjs.br +0 -0
  19. package/dist/chunk-JHQHAO43.mjs.gz +0 -0
  20. package/dist/{chunk-MRSGNERC.js → chunk-JKZNL6HP.js} +245 -242
  21. package/dist/chunk-JKZNL6HP.js.br +0 -0
  22. package/dist/chunk-JKZNL6HP.js.gz +0 -0
  23. package/dist/{chunk-BVQSH5SS.mjs → chunk-PFV626ED.mjs} +1 -1
  24. package/dist/chunk-PFV626ED.mjs.br +0 -0
  25. package/dist/chunk-PFV626ED.mjs.gz +0 -0
  26. package/dist/index.js +24 -24
  27. package/dist/index.js.br +0 -0
  28. package/dist/index.js.gz +0 -0
  29. package/dist/index.mjs +3 -3
  30. package/dist/index.mjs.br +0 -0
  31. package/dist/index.mjs.gz +0 -0
  32. package/dist/internals.d.ts +8 -1
  33. package/dist/internals.js +81 -81
  34. package/dist/internals.js.br +0 -0
  35. package/dist/internals.js.gz +0 -0
  36. package/dist/internals.mjs +2 -2
  37. package/dist/internals.mjs.br +0 -0
  38. package/dist/internals.mjs.gz +0 -0
  39. package/dist/pptx-viewer.css +1 -1
  40. package/dist/pptx-viewer.css.br +0 -0
  41. package/dist/pptx-viewer.css.gz +0 -0
  42. package/dist/viewer/index.js +19 -19
  43. package/dist/viewer/index.js.br +0 -0
  44. package/dist/viewer/index.js.gz +0 -0
  45. package/dist/viewer/index.mjs +3 -3
  46. package/dist/viewer/index.mjs.br +0 -0
  47. package/dist/viewer/index.mjs.gz +0 -0
  48. package/package.json +3 -3
  49. package/dist/AiChatPanel-6S4LWXGM.mjs.br +0 -0
  50. package/dist/AiChatPanel-6S4LWXGM.mjs.gz +0 -0
  51. package/dist/AiChatPanel-IEM43TTZ.js.br +0 -0
  52. package/dist/AiChatPanel-IEM43TTZ.js.gz +0 -0
  53. package/dist/chunk-BVQSH5SS.mjs.br +0 -0
  54. package/dist/chunk-BVQSH5SS.mjs.gz +0 -0
  55. package/dist/chunk-HDOR67HF.mjs.br +0 -0
  56. package/dist/chunk-HDOR67HF.mjs.gz +0 -0
  57. package/dist/chunk-MA2BI7LX.js.br +0 -0
  58. package/dist/chunk-MRSGNERC.js.br +0 -0
  59. package/dist/chunk-MRSGNERC.js.gz +0 -0
  60. package/dist/chunk-OWZSRPAH.mjs.br +0 -0
  61. package/dist/chunk-OWZSRPAH.mjs.gz +0 -0
  62. package/dist/chunk-SSANGQ35.js.br +0 -0
  63. package/dist/chunk-SSANGQ35.js.gz +0 -0
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkMA2BI7LX_js = require('./chunk-MA2BI7LX.js');
3
+ var chunkJAI42EXQ_js = require('./chunk-JAI42EXQ.js');
4
4
  var pptx = require('ooxml-ui/pptx');
5
5
  var React17 = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -764,9 +764,9 @@ function serializeHistoryDocument(snapshot) {
764
764
  }
765
765
  function recordExplicitSlideUpdate(past, future, previous, before, label, maxDepth) {
766
766
  if (previous && serializeHistoryDocument(previous) !== serializeHistoryDocument(before)) {
767
- past.push(chunkMA2BI7LX_js.cloneHistorySnapshot(previous));
767
+ past.push(chunkJAI42EXQ_js.cloneHistorySnapshot(previous));
768
768
  }
769
- past.push({ ...chunkMA2BI7LX_js.cloneHistorySnapshot(before), actionLabel: label });
769
+ past.push({ ...chunkJAI42EXQ_js.cloneHistorySnapshot(before), actionLabel: label });
770
770
  while (past.length > Math.max(1, maxDepth)) {
771
771
  past.shift();
772
772
  }
@@ -856,8 +856,8 @@ function useEditorHistory(input) {
856
856
  width: canvasSize.width,
857
857
  height: canvasSize.height,
858
858
  activeSlideIndex,
859
- slides: slides.map(chunkMA2BI7LX_js.cloneSlide),
860
- templateElementsBySlideId: chunkMA2BI7LX_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
859
+ slides: slides.map(chunkJAI42EXQ_js.cloneSlide),
860
+ templateElementsBySlideId: chunkJAI42EXQ_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
861
861
  ...actionLabel ? { actionLabel } : {}
862
862
  };
863
863
  },
@@ -870,9 +870,9 @@ function useEditorHistory(input) {
870
870
  width: snapshot.width,
871
871
  height: snapshot.height
872
872
  });
873
- setSlides(snapshot.slides.map(chunkMA2BI7LX_js.cloneSlide));
873
+ setSlides(snapshot.slides.map(chunkJAI42EXQ_js.cloneSlide));
874
874
  setTemplateElementsBySlideId(
875
- chunkMA2BI7LX_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
875
+ chunkJAI42EXQ_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
876
876
  );
877
877
  setActiveSlideIndex(Math.min(snapshot.activeSlideIndex, maxSlideIndex));
878
878
  setSelectedElementIds([]);
@@ -911,8 +911,8 @@ function useEditorHistory(input) {
911
911
  const currentSnapshot = buildHistorySnapshot(previousSnapshot.actionLabel);
912
912
  historyFutureRef.current.push(currentSnapshot);
913
913
  isApplyingHistoryRef.current = true;
914
- const nextSnapshot = chunkMA2BI7LX_js.cloneHistorySnapshot(previousSnapshot);
915
- lastHistorySnapshotRef.current = chunkMA2BI7LX_js.cloneHistorySnapshot(nextSnapshot);
914
+ const nextSnapshot = chunkJAI42EXQ_js.cloneHistorySnapshot(previousSnapshot);
915
+ lastHistorySnapshotRef.current = chunkJAI42EXQ_js.cloneHistorySnapshot(nextSnapshot);
916
916
  lastHistorySerializedRef.current = serializeHistoryDocument(nextSnapshot);
917
917
  applyHistorySnapshot(nextSnapshot);
918
918
  updateHistoryAvailability();
@@ -933,8 +933,8 @@ function useEditorHistory(input) {
933
933
  const currentSnapshot = buildHistorySnapshot(nextSnapshot.actionLabel);
934
934
  historyPastRef.current.push(currentSnapshot);
935
935
  isApplyingHistoryRef.current = true;
936
- const targetSnapshot = chunkMA2BI7LX_js.cloneHistorySnapshot(nextSnapshot);
937
- lastHistorySnapshotRef.current = chunkMA2BI7LX_js.cloneHistorySnapshot(targetSnapshot);
936
+ const targetSnapshot = chunkJAI42EXQ_js.cloneHistorySnapshot(nextSnapshot);
937
+ lastHistorySnapshotRef.current = chunkJAI42EXQ_js.cloneHistorySnapshot(targetSnapshot);
938
938
  lastHistorySerializedRef.current = serializeHistoryDocument(targetSnapshot);
939
939
  applyHistorySnapshot(targetSnapshot);
940
940
  updateHistoryAvailability();
@@ -952,7 +952,7 @@ function useEditorHistory(input) {
952
952
  historyPastRef.current = [];
953
953
  historyFutureRef.current = [];
954
954
  if (initialSnapshot) {
955
- const clonedInitial = chunkMA2BI7LX_js.cloneHistorySnapshot(initialSnapshot);
955
+ const clonedInitial = chunkJAI42EXQ_js.cloneHistorySnapshot(initialSnapshot);
956
956
  lastHistorySnapshotRef.current = clonedInitial;
957
957
  lastHistorySerializedRef.current = serializeHistoryDocument(clonedInitial);
958
958
  } else {
@@ -1034,8 +1034,8 @@ function useEditorHistory(input) {
1034
1034
  updateHistoryAvailability
1035
1035
  ]);
1036
1036
  const commitSlides = (nextSlides, label, beforeSlides = slides) => {
1037
- const before = { ...buildHistorySnapshot(), slides: beforeSlides.map(chunkMA2BI7LX_js.cloneSlide) };
1038
- const after = { ...before, slides: nextSlides.map(chunkMA2BI7LX_js.cloneSlide) };
1037
+ const before = { ...buildHistorySnapshot(), slides: beforeSlides.map(chunkJAI42EXQ_js.cloneSlide) };
1038
+ const after = { ...before, slides: nextSlides.map(chunkJAI42EXQ_js.cloneSlide) };
1039
1039
  recordExplicitSlideUpdate(
1040
1040
  historyPastRef.current,
1041
1041
  historyFutureRef.current,
@@ -1044,7 +1044,7 @@ function useEditorHistory(input) {
1044
1044
  label,
1045
1045
  maxHistoryEntries
1046
1046
  );
1047
- lastHistorySnapshotRef.current = chunkMA2BI7LX_js.cloneHistorySnapshot(after);
1047
+ lastHistorySnapshotRef.current = chunkJAI42EXQ_js.cloneHistorySnapshot(after);
1048
1048
  lastHistorySerializedRef.current = serializeHistoryDocument(after);
1049
1049
  isApplyingHistoryRef.current = false;
1050
1050
  setSlides(nextSlides);
@@ -1104,18 +1104,18 @@ function useViewportFit(canvasSize, viewportRef, options, viewportNode) {
1104
1104
  if (viewportNode === null) {
1105
1105
  return;
1106
1106
  }
1107
- let observer = null;
1107
+ let stopObserving = null;
1108
1108
  let raf = 0;
1109
- const measure = (element) => {
1109
+ const measure = (client) => {
1110
1110
  const { availableWidth: width, availableHeight: height } = pptx.calculateViewportFit({
1111
- viewportWidth: element.clientWidth,
1112
- viewportHeight: element.clientHeight,
1111
+ viewportWidth: client.width,
1112
+ viewportHeight: client.height,
1113
1113
  canvasWidth: canvasSize.width,
1114
1114
  canvasHeight: canvasSize.height,
1115
1115
  // The host's padding when it gave one, else the width-aware editor default.
1116
1116
  ...pptx.resolveViewportFitOptions(
1117
1117
  { fitPadding: hostPadding },
1118
- pptx.editorViewportFitFor(element.clientWidth)
1118
+ pptx.editorViewportFitFor(client.width)
1119
1119
  )
1120
1120
  });
1121
1121
  if (width > 0 && height > 0) {
@@ -1128,14 +1128,12 @@ function useViewportFit(canvasSize, viewportRef, options, viewportNode) {
1128
1128
  raf = requestAnimationFrame(attach);
1129
1129
  return;
1130
1130
  }
1131
- observer = new ResizeObserver(() => measure(element));
1132
- observer.observe(element);
1133
- measure(element);
1131
+ stopObserving = pptx.observeViewportClientSize(element, measure);
1134
1132
  };
1135
1133
  attach();
1136
1134
  return () => {
1137
1135
  cancelAnimationFrame(raf);
1138
- observer?.disconnect();
1136
+ stopObserving?.();
1139
1137
  };
1140
1138
  }, [viewportRef, viewportNode, canvasSize.width, canvasSize.height, hostPadding]);
1141
1139
  return { editorDimensions, setEditorDimensions, effectiveEditorDimensions, fitScale };
@@ -1232,22 +1230,22 @@ function useZoomViewport({
1232
1230
  selectedElements.forEach((element) => {
1233
1231
  minX = Math.min(minX, element.x);
1234
1232
  minY = Math.min(minY, element.y);
1235
- maxX = Math.max(maxX, element.x + Math.max(element.width, chunkMA2BI7LX_js.MIN_ELEMENT_SIZE));
1236
- maxY = Math.max(maxY, element.y + Math.max(element.height, chunkMA2BI7LX_js.MIN_ELEMENT_SIZE));
1233
+ maxX = Math.max(maxX, element.x + Math.max(element.width, chunkJAI42EXQ_js.MIN_ELEMENT_SIZE));
1234
+ maxY = Math.max(maxY, element.y + Math.max(element.height, chunkJAI42EXQ_js.MIN_ELEMENT_SIZE));
1237
1235
  });
1238
1236
  if (!Number.isFinite(minX) || !Number.isFinite(minY) || !Number.isFinite(maxX) || !Number.isFinite(maxY)) {
1239
1237
  return;
1240
1238
  }
1241
1239
  const selectionBounds = { minX, minY, maxX, maxY };
1242
- const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkMA2BI7LX_js.MIN_ELEMENT_SIZE);
1243
- const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkMA2BI7LX_js.MIN_ELEMENT_SIZE);
1240
+ const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkJAI42EXQ_js.MIN_ELEMENT_SIZE);
1241
+ const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkJAI42EXQ_js.MIN_ELEMENT_SIZE);
1244
1242
  const availableWidth = Math.max(
1245
- effectiveEditorDimensions.width - chunkMA2BI7LX_js.ZOOM_TO_SELECTION_PADDING,
1246
- chunkMA2BI7LX_js.MIN_ELEMENT_SIZE
1243
+ effectiveEditorDimensions.width - chunkJAI42EXQ_js.ZOOM_TO_SELECTION_PADDING,
1244
+ chunkJAI42EXQ_js.MIN_ELEMENT_SIZE
1247
1245
  );
1248
1246
  const availableHeight = Math.max(
1249
- effectiveEditorDimensions.height - chunkMA2BI7LX_js.ZOOM_TO_SELECTION_PADDING,
1250
- chunkMA2BI7LX_js.MIN_ELEMENT_SIZE
1247
+ effectiveEditorDimensions.height - chunkJAI42EXQ_js.ZOOM_TO_SELECTION_PADDING,
1248
+ chunkJAI42EXQ_js.MIN_ELEMENT_SIZE
1251
1249
  );
1252
1250
  const targetEditorScale = Math.min(
1253
1251
  availableWidth / boundsWidth,
@@ -4214,8 +4212,8 @@ function useViewerCoreState(_input) {
4214
4212
  const { slides, setSlides, slidesRef } = useSlideState();
4215
4213
  const [templateElementsBySlideId, setTemplateElementsBySlideId] = React17.useState({});
4216
4214
  const [canvasSize, setCanvasSize] = React17.useState({
4217
- width: chunkMA2BI7LX_js.DEFAULT_CANVAS_WIDTH,
4218
- height: chunkMA2BI7LX_js.DEFAULT_CANVAS_HEIGHT
4215
+ width: chunkJAI42EXQ_js.DEFAULT_CANVAS_WIDTH,
4216
+ height: chunkJAI42EXQ_js.DEFAULT_CANVAS_HEIGHT
4219
4217
  });
4220
4218
  const [slideSizeEmu, setSlideSizeEmu] = React17.useState();
4221
4219
  const [activeSlideIndex, setActiveSlideIndex] = React17.useState(0);
@@ -4688,12 +4686,12 @@ function useLoadContent({
4688
4686
  }
4689
4687
  resources.commit();
4690
4688
  handlerRef.current = handler;
4691
- const partition = chunkMA2BI7LX_js.partitionTemplateElements(nextSlides);
4689
+ const partition = chunkJAI42EXQ_js.partitionTemplateElements(nextSlides);
4692
4690
  setSlides(partition.slides);
4693
4691
  setTemplateElementsBySlideId(partition.templateElementsBySlideId);
4694
4692
  setCanvasSize({
4695
- width: parsed.width ?? chunkMA2BI7LX_js.DEFAULT_CANVAS_WIDTH,
4696
- height: parsed.height ?? chunkMA2BI7LX_js.DEFAULT_CANVAS_HEIGHT
4693
+ width: parsed.width ?? chunkJAI42EXQ_js.DEFAULT_CANVAS_WIDTH,
4694
+ height: parsed.height ?? chunkJAI42EXQ_js.DEFAULT_CANVAS_HEIGHT
4697
4695
  });
4698
4696
  setSlideSizeEmu(
4699
4697
  typeof parsed.widthEmu === "number" && typeof parsed.heightEmu === "number" && parsed.widthEmu > 0 && parsed.heightEmu > 0 ? {
@@ -5152,7 +5150,7 @@ function useElementOperations(input) {
5152
5150
  );
5153
5151
  return;
5154
5152
  }
5155
- if (chunkMA2BI7LX_js.isTemplateElementId(elementId)) {
5153
+ if (chunkJAI42EXQ_js.isTemplateElementId(elementId)) {
5156
5154
  const slideId = activeSlide?.id;
5157
5155
  if (slideId) {
5158
5156
  setTemplateElementsBySlideId((prev) => ({
@@ -5392,15 +5390,15 @@ function syncSelectionHandleOverlay(elementNode, elementId, geometry) {
5392
5390
  // src/viewer/hooks/pointer-move-handlers.ts
5393
5391
  function computeResizeGeometry(handle, startX, startY, startWidth, startHeight, dx, dy, snapToGrid, gridSpacingPx, lockAspect = false) {
5394
5392
  const startBox = { x: startX, y: startY, width: startWidth, height: startHeight };
5395
- let resized = pptx.applyResize(startBox, handle, dx, dy, 1, { minSize: chunkMA2BI7LX_js.MIN_ELEMENT_SIZE });
5393
+ let resized = pptx.applyResize(startBox, handle, dx, dy, 1, { minSize: chunkJAI42EXQ_js.MIN_ELEMENT_SIZE });
5396
5394
  if (lockAspect) {
5397
- resized = pptx.lockResizeAspect(resized, startBox, handle, chunkMA2BI7LX_js.MIN_ELEMENT_SIZE);
5395
+ resized = pptx.lockResizeAspect(resized, startBox, handle, chunkJAI42EXQ_js.MIN_ELEMENT_SIZE);
5398
5396
  }
5399
5397
  const box = { x: resized.x, y: resized.y, width: resized.width, height: resized.height };
5400
5398
  if (!snapToGrid) {
5401
5399
  return box;
5402
5400
  }
5403
- return pptx.snapBoxToGrid(box, handle, gridSpacingPx, chunkMA2BI7LX_js.MIN_ELEMENT_SIZE);
5401
+ return pptx.snapBoxToGrid(box, handle, gridSpacingPx, chunkJAI42EXQ_js.MIN_ELEMENT_SIZE);
5404
5402
  }
5405
5403
  function resolveLiveTarget(input) {
5406
5404
  const { livePatcher, editTemplateMode, activeSlide } = input;
@@ -5513,7 +5511,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
5513
5511
  width: el.width,
5514
5512
  height: el.height
5515
5513
  }));
5516
- const snapResult = chunkMA2BI7LX_js.computeSnapToShape(
5514
+ const snapResult = chunkJAI42EXQ_js.computeSnapToShape(
5517
5515
  targetX,
5518
5516
  targetY,
5519
5517
  primaryEl.width,
@@ -5587,8 +5585,8 @@ function processResizeMove(e, rs, editorScale, snapToGrid, gridSpacingPx, live)
5587
5585
  rs.lastY = geo.y;
5588
5586
  rs.lastWidth = geo.width;
5589
5587
  rs.lastHeight = geo.height;
5590
- const width = Math.max(geo.width, chunkMA2BI7LX_js.MIN_ELEMENT_SIZE);
5591
- const height = Math.max(geo.height, chunkMA2BI7LX_js.MIN_ELEMENT_SIZE);
5588
+ const width = Math.max(geo.width, chunkJAI42EXQ_js.MIN_ELEMENT_SIZE);
5589
+ const height = Math.max(geo.height, chunkJAI42EXQ_js.MIN_ELEMENT_SIZE);
5592
5590
  if (rs.domEl) {
5593
5591
  rs.domEl.style.left = `${geo.x}px`;
5594
5592
  rs.domEl.style.top = `${geo.y}px`;
@@ -5681,13 +5679,13 @@ function processPointerUp(input) {
5681
5679
  if (i !== activeSlideIndex) {
5682
5680
  return s;
5683
5681
  }
5684
- const rerouted = chunkMA2BI7LX_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
5682
+ const rerouted = chunkJAI42EXQ_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
5685
5683
  if (rerouted.length === 0) {
5686
5684
  return s;
5687
5685
  }
5688
5686
  return {
5689
5687
  ...s,
5690
- elements: chunkMA2BI7LX_js.applyReroutedConnectors(s.elements, rerouted)
5688
+ elements: chunkJAI42EXQ_js.applyReroutedConnectors(s.elements, rerouted)
5691
5689
  };
5692
5690
  })
5693
5691
  );
@@ -5739,8 +5737,8 @@ function commitDrag(drag, editTemplateMode, activeSlide, activeSlideIndex, setTe
5739
5737
  }
5740
5738
  return { ...el, x: start.x + dx, y: start.y + dy };
5741
5739
  });
5742
- const rerouted = chunkMA2BI7LX_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
5743
- return chunkMA2BI7LX_js.applyReroutedConnectors(movedElements, rerouted);
5740
+ const rerouted = chunkJAI42EXQ_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
5741
+ return chunkJAI42EXQ_js.applyReroutedConnectors(movedElements, rerouted);
5744
5742
  };
5745
5743
  if (editTemplateMode) {
5746
5744
  const slideId = activeSlide?.id;
@@ -6499,7 +6497,7 @@ function createStructuredElementHandlers(deps) {
6499
6497
  return;
6500
6498
  }
6501
6499
  const resolved = resolveHyperlinkEditResult(data);
6502
- if (resolved.url && !chunkMA2BI7LX_js.isUrlSafe(resolved.url)) {
6500
+ if (resolved.url && !chunkJAI42EXQ_js.isUrlSafe(resolved.url)) {
6503
6501
  return;
6504
6502
  }
6505
6503
  const actionClick = {
@@ -6545,7 +6543,7 @@ function createStructuredElementHandlers(deps) {
6545
6543
  if (!activeSlide) {
6546
6544
  return;
6547
6545
  }
6548
- const preset = chunkMA2BI7LX_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
6546
+ const preset = chunkJAI42EXQ_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
6549
6547
  if (!preset) {
6550
6548
  return;
6551
6549
  }
@@ -6632,7 +6630,7 @@ function useInsertElements(input) {
6632
6630
  width: 300,
6633
6631
  height: 60,
6634
6632
  text: "",
6635
- textStyle: { fontSize: chunkMA2BI7LX_js.DEFAULT_TEXT_FONT_SIZE }
6633
+ textStyle: { fontSize: chunkJAI42EXQ_js.DEFAULT_TEXT_FONT_SIZE }
6636
6634
  });
6637
6635
  };
6638
6636
  const handleAddShape = () => {
@@ -6654,7 +6652,7 @@ function useInsertElements(input) {
6654
6652
  }
6655
6653
  });
6656
6654
  };
6657
- const handleAddTable = (rows = chunkMA2BI7LX_js.DEFAULT_TABLE_ROWS, columns = chunkMA2BI7LX_js.DEFAULT_TABLE_COLUMNS) => {
6655
+ const handleAddTable = (rows = chunkJAI42EXQ_js.DEFAULT_TABLE_ROWS, columns = chunkJAI42EXQ_js.DEFAULT_TABLE_COLUMNS) => {
6658
6656
  if (!activeSlide) {
6659
6657
  return;
6660
6658
  }
@@ -6828,7 +6826,7 @@ function useGroupAlignLayerHandlers(input) {
6828
6826
  history
6829
6827
  } = input;
6830
6828
  const updateElementsOwning = (elementId, updater) => {
6831
- if (editTemplateMode && !chunkMA2BI7LX_js.isTemplateElementId(elementId)) {
6829
+ if (editTemplateMode && !chunkJAI42EXQ_js.isTemplateElementId(elementId)) {
6832
6830
  ops.updateSlides(
6833
6831
  (prev) => prev.map(
6834
6832
  (slide, index) => index === activeSlideIndex ? { ...slide, elements: updater(slide.elements) } : slide
@@ -6862,9 +6860,9 @@ function useGroupAlignLayerHandlers(input) {
6862
6860
  return;
6863
6861
  }
6864
6862
  const group = selectedElement;
6865
- const intoTemplate = chunkMA2BI7LX_js.isTemplateElementId(group.id);
6863
+ const intoTemplate = chunkJAI42EXQ_js.isTemplateElementId(group.id);
6866
6864
  const childIds = group.children.map(
6867
- (child) => intoTemplate ? chunkMA2BI7LX_js.makeCloneId(true, child.id || group.id) : child.id || pptx.generateElementId()
6865
+ (child) => intoTemplate ? chunkJAI42EXQ_js.makeCloneId(true, child.id || group.id) : child.id || pptx.generateElementId()
6868
6866
  );
6869
6867
  const { elements, childIds: usedIds } = pptx.ungroupElements(
6870
6868
  ops.activeElements,
@@ -7300,7 +7298,7 @@ function createTableMergeHandlers(input) {
7300
7298
  if (!nextCell || nextCell.hMerge || nextCell.vMerge) {
7301
7299
  return;
7302
7300
  }
7303
- const newTableData = chunkMA2BI7LX_js.mergeCells(
7301
+ const newTableData = chunkJAI42EXQ_js.mergeCells(
7304
7302
  [
7305
7303
  { row: rowIndex, col: columnIndex },
7306
7304
  { row: rowIndex, col: nextColIdx }
@@ -7308,7 +7306,7 @@ function createTableMergeHandlers(input) {
7308
7306
  td
7309
7307
  );
7310
7308
  const updates = { tableData: newTableData };
7311
- const newRawXml = chunkMA2BI7LX_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
7309
+ const newRawXml = chunkJAI42EXQ_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
7312
7310
  if (newRawXml) {
7313
7311
  updates.rawXml = newRawXml;
7314
7312
  }
@@ -7334,7 +7332,7 @@ function createTableMergeHandlers(input) {
7334
7332
  if (!targetNextCell || targetNextCell.hMerge || targetNextCell.vMerge) {
7335
7333
  return;
7336
7334
  }
7337
- const newTableData = chunkMA2BI7LX_js.mergeCells(
7335
+ const newTableData = chunkJAI42EXQ_js.mergeCells(
7338
7336
  [
7339
7337
  { row: rowIndex, col: columnIndex },
7340
7338
  { row: targetNextRowIdx, col: columnIndex }
@@ -7342,7 +7340,7 @@ function createTableMergeHandlers(input) {
7342
7340
  td
7343
7341
  );
7344
7342
  const updates = { tableData: newTableData };
7345
- const newRawXml = chunkMA2BI7LX_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
7343
+ const newRawXml = chunkJAI42EXQ_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
7346
7344
  if (newRawXml) {
7347
7345
  updates.rawXml = newRawXml;
7348
7346
  }
@@ -7357,9 +7355,9 @@ function createTableMergeHandlers(input) {
7357
7355
  return;
7358
7356
  }
7359
7357
  const td = selectedElement.tableData;
7360
- const newTableData = chunkMA2BI7LX_js.mergeCells(ts.selectedCells, td);
7358
+ const newTableData = chunkJAI42EXQ_js.mergeCells(ts.selectedCells, td);
7361
7359
  const updates = { tableData: newTableData };
7362
- const newRawXml = chunkMA2BI7LX_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
7360
+ const newRawXml = chunkJAI42EXQ_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
7363
7361
  if (newRawXml) {
7364
7362
  updates.rawXml = newRawXml;
7365
7363
  }
@@ -7376,9 +7374,9 @@ function createTableMergeHandlers(input) {
7376
7374
  }
7377
7375
  const { rowIndex, columnIndex } = ts;
7378
7376
  const td = selectedElement.tableData;
7379
- const newTableData = chunkMA2BI7LX_js.splitCell(rowIndex, columnIndex, td);
7377
+ const newTableData = chunkJAI42EXQ_js.splitCell(rowIndex, columnIndex, td);
7380
7378
  const updates = { tableData: newTableData };
7381
- const newRawXml = chunkMA2BI7LX_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
7379
+ const newRawXml = chunkJAI42EXQ_js.updateMergeAttrsInRawXml(selectedElement, newTableData);
7382
7380
  if (newRawXml) {
7383
7381
  updates.rawXml = newRawXml;
7384
7382
  }
@@ -7413,7 +7411,7 @@ function createTableStructHandlers(input) {
7413
7411
  updates.tableData = pptx.setCellText(el, rowIndex, colIndex, text).tableData;
7414
7412
  }
7415
7413
  if (el.rawXml) {
7416
- const newRawXml = chunkMA2BI7LX_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
7414
+ const newRawXml = chunkJAI42EXQ_js.updateCellTextInRawXml(el, rowIndex, colIndex, text);
7417
7415
  if (newRawXml) {
7418
7416
  updates.rawXml = newRawXml;
7419
7417
  }
@@ -7437,7 +7435,7 @@ function createTableStructHandlers(input) {
7437
7435
  const { rowIndex, columnIndex: colIndex } = ts;
7438
7436
  const updates = {};
7439
7437
  if (selectedElement.rawXml) {
7440
- const newRawXml = chunkMA2BI7LX_js.updateCellTextStyleInRawXml(
7438
+ const newRawXml = chunkJAI42EXQ_js.updateCellTextStyleInRawXml(
7441
7439
  selectedElement,
7442
7440
  rowIndex,
7443
7441
  colIndex,
@@ -7613,7 +7611,7 @@ function useExportSaveAs(input) {
7613
7611
  const sourceName = filePath ? filePath.replace(/\\/gu, "/").split("/").pop() : void 0;
7614
7612
  const slideSize = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size;
7615
7613
  const data = {
7616
- slides: chunkMA2BI7LX_js.buildSaveSlides(slides, templateElementsBySlideId),
7614
+ slides: chunkJAI42EXQ_js.buildSaveSlides(slides, templateElementsBySlideId),
7617
7615
  width: canvasSize.width,
7618
7616
  height: canvasSize.height,
7619
7617
  widthEmu: slideSize.widthEmu,
@@ -7775,7 +7773,7 @@ async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActi
7775
7773
  }
7776
7774
  function tilesToPdfPage(tilesResult) {
7777
7775
  return tilesResult.tiles.map((tile) => ({
7778
- image: chunkMA2BI7LX_js.canvasToJpegData(tile.canvas),
7776
+ image: chunkJAI42EXQ_js.canvasToJpegData(tile.canvas),
7779
7777
  placement: pptx.placeTileOnPage(
7780
7778
  tile,
7781
7779
  tilesResult.fullWidth,
@@ -7808,7 +7806,7 @@ async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide,
7808
7806
  if (pages.length === 0) {
7809
7807
  throw new Error(i18n.translationsEn["pptx.export.errorNoSlidesPdf"]);
7810
7808
  }
7811
- const pdfBlobUrl = chunkMA2BI7LX_js.buildPdfFromTiledImageData(pages);
7809
+ const pdfBlobUrl = chunkJAI42EXQ_js.buildPdfFromTiledImageData(pages);
7812
7810
  pptx.downloadDataUrl(pdfBlobUrl, filename);
7813
7811
  }
7814
7812
  async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, slideNotes, filename = "presentation-notes.pdf", options = {}) {
@@ -7838,7 +7836,7 @@ async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSl
7838
7836
  if (pages.length === 0) {
7839
7837
  throw new Error(i18n.translationsEn["pptx.export.errorNoSlidesNotesPdf"]);
7840
7838
  }
7841
- const pdfDataUrl = chunkMA2BI7LX_js.buildNotesPdf(pages);
7839
+ const pdfDataUrl = chunkJAI42EXQ_js.buildNotesPdf(pages);
7842
7840
  pptx.downloadDataUrl(pdfDataUrl, filename);
7843
7841
  }
7844
7842
  async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, options = {}) {
@@ -8941,7 +8939,7 @@ function usePropertyHandlers(input) {
8941
8939
  width: canvasSize.width,
8942
8940
  height: canvasSize.height
8943
8941
  };
8944
- setCompareResult(chunkMA2BI7LX_js.comparePresentation(cur, other));
8942
+ setCompareResult(chunkJAI42EXQ_js.comparePresentation(cur, other));
8945
8943
  setIsComparePanelOpen(true);
8946
8944
  } catch (err) {
8947
8945
  console.warn("Compare failed:", err);
@@ -9294,7 +9292,7 @@ function useViewerDialogs(input) {
9294
9292
  };
9295
9293
  }
9296
9294
  function computeGridSpacingPx(documentGridSpacing) {
9297
- return pptx.computeGridSpacingPx(documentGridSpacing, chunkMA2BI7LX_js.GRID_SIZE);
9295
+ return pptx.computeGridSpacingPx(documentGridSpacing, chunkJAI42EXQ_js.GRID_SIZE);
9298
9296
  }
9299
9297
  function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows, presentationProperties) {
9300
9298
  const activeShow = activeCustomShowId ? customShows.find((show) => show.id === activeCustomShowId) : void 0;
@@ -9303,7 +9301,7 @@ function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows, pre
9303
9301
  }
9304
9302
  function computeSlideSectionGroups(slides, sections) {
9305
9303
  return pptx.groupSlidesBySection(sections, slides).map((group) => ({
9306
- id: group.section?.id ?? (sections.length > 0 ? chunkMA2BI7LX_js.UNGROUPED_SECTION_ID : chunkMA2BI7LX_js.DEFAULT_SECTION_GROUP_ID),
9304
+ id: group.section?.id ?? (sections.length > 0 ? chunkJAI42EXQ_js.UNGROUPED_SECTION_ID : chunkJAI42EXQ_js.DEFAULT_SECTION_GROUP_ID),
9307
9305
  label: group.section?.name ?? (sections.length > 0 ? "Ungrouped Slides" : "Slides"),
9308
9306
  slideIndexes: group.slideIndexes,
9309
9307
  ...group.section?.color !== void 0 ? { color: group.section.color } : {},
@@ -9348,10 +9346,10 @@ function useDerivedSlideState(input) {
9348
9346
  );
9349
9347
  const slideSectionGroups = React17.useMemo(
9350
9348
  () => computeSlideSectionGroups(slides, sections).map((group) => {
9351
- if (group.id === chunkMA2BI7LX_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
9349
+ if (group.id === chunkJAI42EXQ_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
9352
9350
  return { ...group, label: t("pptx.slides.ungroupedSlides") };
9353
9351
  }
9354
- if (group.id === chunkMA2BI7LX_js.DEFAULT_SECTION_GROUP_ID && group.label === "Slides") {
9352
+ if (group.id === chunkJAI42EXQ_js.DEFAULT_SECTION_GROUP_ID && group.label === "Slides") {
9355
9353
  return { ...group, label: t("pptx.sections.slides") };
9356
9354
  }
9357
9355
  return group;
@@ -9458,7 +9456,7 @@ function useAnnotationHandlers(input) {
9458
9456
  if (nextMode === "present") {
9459
9457
  presentation.enterPresentMode();
9460
9458
  } else if (mode === "present" && annotations.hasAnyAnnotations) {
9461
- chunkMA2BI7LX_js.stopAllPersistentAudio();
9459
+ chunkJAI42EXQ_js.stopAllPersistentAudio();
9462
9460
  if (promptKeepInkAnnotations) {
9463
9461
  pendingModeAfterAnnotationsRef.current = nextMode;
9464
9462
  setShowKeepAnnotationsDialog(true);
@@ -9468,7 +9466,7 @@ function useAnnotationHandlers(input) {
9468
9466
  }
9469
9467
  } else {
9470
9468
  if (mode === "present") {
9471
- chunkMA2BI7LX_js.stopAllPersistentAudio();
9469
+ chunkJAI42EXQ_js.stopAllPersistentAudio();
9472
9470
  }
9473
9471
  setMode(nextMode);
9474
9472
  }
@@ -9635,7 +9633,7 @@ function useSerialize(input) {
9635
9633
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
9636
9634
  };
9637
9635
  });
9638
- const slidesToSave = chunkMA2BI7LX_js.buildSaveSlides(slidesWithGuides, pending.templateElementsBySlideId);
9636
+ const slidesToSave = chunkJAI42EXQ_js.buildSaveSlides(slidesWithGuides, pending.templateElementsBySlideId);
9639
9637
  const saveOptions = pptx.buildDeckSaveOptions({
9640
9638
  // Without this the Slide Size card edited a viewer-only pixel value and
9641
9639
  // the saved `p:sldSz` never moved: passing `slideSize` is the only way a
@@ -9828,7 +9826,7 @@ function usePresentationSetup(input) {
9828
9826
  return;
9829
9827
  }
9830
9828
  if (mode === "present" && nextMode !== "present") {
9831
- chunkMA2BI7LX_js.stopAllPersistentAudio();
9829
+ chunkJAI42EXQ_js.stopAllPersistentAudio();
9832
9830
  stopAnimationSound();
9833
9831
  const exitHandler = exitModeHandlerRef.current;
9834
9832
  if (exitHandler) {
@@ -9949,7 +9947,7 @@ function useCanvasImagePaste(input) {
9949
9947
  );
9950
9948
  }
9951
9949
  function formatPatchFor(element, format) {
9952
- const updated = chunkMA2BI7LX_js.applyFormatToElement(element, format);
9950
+ const updated = chunkJAI42EXQ_js.applyFormatToElement(element, format);
9953
9951
  const updates = {};
9954
9952
  if (pptx$1.hasShapeProperties(updated)) {
9955
9953
  updates.shapeStyle = updated.shapeStyle;
@@ -9972,7 +9970,7 @@ function useFormatPainterEditing(input) {
9972
9970
  const prevFormatPainterRef = React17.useRef(false);
9973
9971
  React17.useEffect(() => {
9974
9972
  if (formatPainterActive && !prevFormatPainterRef.current && selectedElement) {
9975
- copiedFormatRef.current = chunkMA2BI7LX_js.copyFormatFromElement(selectedElement);
9973
+ copiedFormatRef.current = chunkJAI42EXQ_js.copyFormatFromElement(selectedElement);
9976
9974
  } else if (!formatPainterActive) {
9977
9975
  copiedFormatRef.current = null;
9978
9976
  }
@@ -11664,7 +11662,7 @@ function useCollaborationWriteBack(input) {
11664
11662
  getSourceBytes: () => latest.current.getSourceBytes?.() ?? null,
11665
11663
  getSaveOptions: () => latest.current.getSaveOptions?.(),
11666
11664
  getTemplateElements: () => latest.current.templateElementsBySlideId,
11667
- mergeTemplateElements: chunkMA2BI7LX_js.buildSaveSlides,
11665
+ mergeTemplateElements: chunkJAI42EXQ_js.buildSaveSlides,
11668
11666
  onWriteBackStatus: () => latest.current.onWriteBackStatus?.(
11669
11667
  pptx.writeBackReport(latest.current.config, created.getState())
11670
11668
  )
@@ -12223,8 +12221,8 @@ function useTouchGestures(input) {
12223
12221
  }
12224
12222
  const recognizer = pptx.createTouchGestureRecognizer({
12225
12223
  getScale: () => scaleRef.current,
12226
- minScale: chunkMA2BI7LX_js.MIN_ZOOM_SCALE,
12227
- maxScale: chunkMA2BI7LX_js.MAX_ZOOM_SCALE,
12224
+ minScale: chunkJAI42EXQ_js.MIN_ZOOM_SCALE,
12225
+ maxScale: chunkJAI42EXQ_js.MAX_ZOOM_SCALE,
12228
12226
  callbacks: {
12229
12227
  onPinchZoom: (newScale) => callbacksRef.current.onPinchZoom?.(newScale),
12230
12228
  onSwipe: (direction) => callbacksRef.current.onSwipe?.(direction),
@@ -12348,7 +12346,7 @@ function buildCanvasProps(input) {
12348
12346
  if (pptx.shouldConfirmExternalHyperlink(viewerOptions, url) && !window.confirm(buildHyperlinkConfirmMessage(url))) {
12349
12347
  return;
12350
12348
  }
12351
- chunkMA2BI7LX_js.safeOpenUrl(url, target);
12349
+ chunkJAI42EXQ_js.safeOpenUrl(url, target);
12352
12350
  };
12353
12351
  const handleActionClick = (elementId, action) => {
12354
12352
  if (mode === "present") {
@@ -12363,9 +12361,9 @@ function buildCanvasProps(input) {
12363
12361
  }
12364
12362
  };
12365
12363
  const handleHyperlinkClick = (url, target) => {
12366
- if (chunkMA2BI7LX_js.isPpactionUrl(url)) {
12364
+ if (chunkJAI42EXQ_js.isPpactionUrl(url)) {
12367
12365
  if (mode === "present") {
12368
- const parsed = chunkMA2BI7LX_js.parsePpactionUrl(url);
12366
+ const parsed = chunkJAI42EXQ_js.parsePpactionUrl(url);
12369
12367
  if (parsed) {
12370
12368
  presentation.handlePresentationAction({
12371
12369
  action: parsed.action,
@@ -12792,7 +12790,7 @@ function buildToolbarProps(input) {
12792
12790
  markDirty: history.markDirty
12793
12791
  }),
12794
12792
  formatPainterActive: s.formatPainterActive,
12795
- canActivateFormatPainter: chunkMA2BI7LX_js.hasCopyableFormat(selectedElement),
12793
+ canActivateFormatPainter: chunkJAI42EXQ_js.hasCopyableFormat(selectedElement),
12796
12794
  onToggleFormatPainter: () => s.setFormatPainterActive((p) => !p),
12797
12795
  isSelectionPaneOpen: s.isSelectionPaneOpen,
12798
12796
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -13696,23 +13694,23 @@ function ColorChangedImage({
13696
13694
  className,
13697
13695
  alt
13698
13696
  }) {
13699
- const tolerance = tolerancePct ?? chunkMA2BI7LX_js.DEFAULT_COLOR_CHANGE_TOLERANCE;
13700
- const cacheKey = chunkMA2BI7LX_js.buildCacheKey(
13697
+ const tolerance = tolerancePct ?? chunkJAI42EXQ_js.DEFAULT_COLOR_CHANGE_TOLERANCE;
13698
+ const cacheKey = chunkJAI42EXQ_js.buildCacheKey(
13701
13699
  src,
13702
13700
  clrChange.clrFrom,
13703
13701
  clrChange.clrTo,
13704
13702
  tolerance,
13705
13703
  Boolean(clrChange.clrToTransparent)
13706
13704
  );
13707
- const cached = chunkMA2BI7LX_js.getCachedResult(cacheKey);
13705
+ const cached = chunkJAI42EXQ_js.getCachedResult(cacheKey);
13708
13706
  const [processedSrc, setProcessedSrc] = React17.useState(cached ?? null);
13709
13707
  React17.useEffect(() => {
13710
- if (chunkMA2BI7LX_js.getCachedResult(cacheKey)) {
13711
- setProcessedSrc(chunkMA2BI7LX_js.getCachedResult(cacheKey) ?? null);
13708
+ if (chunkJAI42EXQ_js.getCachedResult(cacheKey)) {
13709
+ setProcessedSrc(chunkJAI42EXQ_js.getCachedResult(cacheKey) ?? null);
13712
13710
  return;
13713
13711
  }
13714
13712
  let cancelled = false;
13715
- chunkMA2BI7LX_js.applyColorChange(
13713
+ chunkJAI42EXQ_js.applyColorChange(
13716
13714
  src,
13717
13715
  clrChange.clrFrom,
13718
13716
  clrChange.clrTo,
@@ -13720,7 +13718,7 @@ function ColorChangedImage({
13720
13718
  Boolean(clrChange.clrToTransparent)
13721
13719
  ).then((result) => {
13722
13720
  if (!cancelled) {
13723
- chunkMA2BI7LX_js.setCachedResult(cacheKey, result.dataUrl);
13721
+ chunkJAI42EXQ_js.setCachedResult(cacheKey, result.dataUrl);
13724
13722
  setProcessedSrc(result.dataUrl);
13725
13723
  }
13726
13724
  return void 0;
@@ -13812,7 +13810,7 @@ function TiledImageLayer({
13812
13810
  cancelled = true;
13813
13811
  };
13814
13812
  }, [src]);
13815
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style: { ...chunkMA2BI7LX_js.getImageTilingStyle(element, nativeSize), ...style } });
13813
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style: { ...chunkJAI42EXQ_js.getImageTilingStyle(element, nativeSize), ...style } });
13816
13814
  }
13817
13815
  function renderImageEffectDefinitions(element, excludeDuotone = false) {
13818
13816
  return pptx.getImageSvgFilters(element).filter((definition) => !excludeDuotone || definition.id !== `duotone-${element.id}`).map((definition) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -13881,7 +13879,7 @@ function renderImg(el, style, filter, alt, opacity) {
13881
13879
  ...filter ? { filter } : {},
13882
13880
  ...opacity !== void 0 ? { opacity } : {}
13883
13881
  };
13884
- if (chunkMA2BI7LX_js.isImageTiled(el)) {
13882
+ if (chunkJAI42EXQ_js.isImageTiled(el)) {
13885
13883
  const tileSrc = imgSrc(el);
13886
13884
  if (!tileSrc) {
13887
13885
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-gray-500 bg-gray-100", children: "Image" });
@@ -13903,9 +13901,9 @@ function renderImg(el, style, filter, alt, opacity) {
13903
13901
  pptx$1.isImageLikeElement(el) ? el.imageEffects?.colorWash : void 0
13904
13902
  );
13905
13903
  const clrChange = "imageEffects" in el ? el.imageEffects?.clrChange : void 0;
13906
- const duotoneColors = chunkMA2BI7LX_js.getDuotoneColors(el);
13904
+ const duotoneColors = chunkJAI42EXQ_js.getDuotoneColors(el);
13907
13905
  const useDuotoneCanvas = Boolean(duotoneColors && !clrChange);
13908
- const filterForImg = useDuotoneCanvas ? chunkMA2BI7LX_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
13906
+ const filterForImg = useDuotoneCanvas ? chunkJAI42EXQ_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
13909
13907
  const canvasEffectStyles = {
13910
13908
  ...filterForImg ? { filter: filterForImg } : {},
13911
13909
  ...opacity !== void 0 ? { opacity } : {}
@@ -13981,10 +13979,10 @@ function SlideBackgroundImageLayer({
13981
13979
  style: { zIndex: 0 },
13982
13980
  children: renderImg(
13983
13981
  backgroundElement,
13984
- chunkMA2BI7LX_js.getImageRenderStyle(backgroundElement),
13985
- chunkMA2BI7LX_js.getImageEffectsFilter(backgroundElement),
13982
+ chunkJAI42EXQ_js.getImageRenderStyle(backgroundElement),
13983
+ chunkJAI42EXQ_js.getImageEffectsFilter(backgroundElement),
13986
13984
  "",
13987
- chunkMA2BI7LX_js.getImageEffectsOpacity(backgroundElement)
13985
+ chunkJAI42EXQ_js.getImageEffectsOpacity(backgroundElement)
13988
13986
  )
13989
13987
  }
13990
13988
  );
@@ -14270,7 +14268,7 @@ function ChartElementView({
14270
14268
  pptx.getBarFacePicturePixelSampleVersion
14271
14269
  );
14272
14270
  const viewModel = React17.useMemo(() => {
14273
- return canEdit ? chunkMA2BI7LX_js.buildReactChartViewModel(element) : null;
14271
+ return canEdit ? chunkJAI42EXQ_js.buildReactChartViewModel(element) : null;
14274
14272
  }, [canEdit, element, barFacePictureSampleVersion]);
14275
14273
  React17.useEffect(pptx.ensureChartInteractionStyles, []);
14276
14274
  React17.useEffect(() => {
@@ -14375,9 +14373,9 @@ function ChartElementView({
14375
14373
  textStyle: animationState?.textStyle,
14376
14374
  onSelect: chart3D.onSelect,
14377
14375
  onDrag: chart3D.onDrag,
14378
- children: chunkMA2BI7LX_js.renderChartElement(renderedElement, (key) => t(key))
14376
+ children: chunkJAI42EXQ_js.renderChartElement(renderedElement, (key) => t(key))
14379
14377
  }
14380
- ) : chunkMA2BI7LX_js.renderChartElement(renderedElement, (key) => t(key)),
14378
+ ) : chunkJAI42EXQ_js.renderChartElement(renderedElement, (key) => t(key)),
14381
14379
  dragValue !== null && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1 right-1 z-10 rounded bg-primary/90 px-1.5 py-0.5 text-[10px] font-medium text-white pointer-events-none", children: pptx.formatAxisValue(dragValue) }),
14382
14380
  titleDraft !== null && /* @__PURE__ */ jsxRuntime.jsx(
14383
14381
  "input",
@@ -14707,7 +14705,7 @@ function ResizeHandles({
14707
14705
  "aria-label": t("pptx.selectionOverlay.resize", { handle }),
14708
14706
  "data-pptx-handle-kind": "resize",
14709
14707
  "data-pptx-compact": true,
14710
- className: chunkMA2BI7LX_js.cn(
14708
+ className: chunkJAI42EXQ_js.cn(
14711
14709
  "absolute z-10 group border-0 bg-transparent p-0",
14712
14710
  RESIZE_DEFAULT_CLASSES,
14713
14711
  posClass,
@@ -14733,7 +14731,7 @@ function ResizeHandles({
14733
14731
  "div",
14734
14732
  {
14735
14733
  "data-pptx-handle-hit": true,
14736
- className: chunkMA2BI7LX_js.cn(
14734
+ className: chunkJAI42EXQ_js.cn(
14737
14735
  "absolute -inset-px pointer-events-auto [--pptx-handle-hit-inset:-1px]",
14738
14736
  corner ? "max-md:-inset-1.5 max-md:[--pptx-handle-hit-inset:-6px]" : "max-md:-inset-2 max-md:[--pptx-handle-hit-inset:-8px]"
14739
14737
  ),
@@ -14754,7 +14752,7 @@ function ResizeHandles({
14754
14752
  "aria-label": t("pptx.selectionOverlay.rotate"),
14755
14753
  "data-pptx-handle-kind": "rotate",
14756
14754
  "data-pptx-compact": true,
14757
- className: chunkMA2BI7LX_js.cn(
14755
+ className: chunkJAI42EXQ_js.cn(
14758
14756
  "absolute left-1/2 top-0 -translate-x-1/2 -translate-y-1/2 z-20 border-0 bg-transparent p-0 cursor-grab active:cursor-grabbing",
14759
14757
  ROTATE_DEFAULT_CLASSES
14760
14758
  ),
@@ -14831,10 +14829,10 @@ var ConnectorElementRendererMemo = /* @__PURE__ */ React17__default.default.memo
14831
14829
  const svgHeight = Math.max(el.height, 1);
14832
14830
  const ss = shapeEl?.shapeStyle;
14833
14831
  const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
14834
- const strokeColor = chunkMA2BI7LX_js.normalizeHexColor(ss?.strokeColor, chunkMA2BI7LX_js.DEFAULT_STROKE_COLOR);
14835
- const strokePaint = chunkMA2BI7LX_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
14836
- const dashType = chunkMA2BI7LX_js.normalizeStrokeDashType(ss?.strokeDash);
14837
- const dashArray = chunkMA2BI7LX_js.getSvgStrokeDasharray(
14832
+ const strokeColor = chunkJAI42EXQ_js.normalizeHexColor(ss?.strokeColor, chunkJAI42EXQ_js.DEFAULT_STROKE_COLOR);
14833
+ const strokePaint = chunkJAI42EXQ_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
14834
+ const dashType = chunkJAI42EXQ_js.normalizeStrokeDashType(ss?.strokeDash);
14835
+ const dashArray = chunkJAI42EXQ_js.getSvgStrokeDasharray(
14838
14836
  dashType,
14839
14837
  Math.max(strokeWidth, 1),
14840
14838
  ss?.customDashSegments
@@ -14845,14 +14843,14 @@ var ConnectorElementRendererMemo = /* @__PURE__ */ React17__default.default.memo
14845
14843
  const markerSeed = el.id.replace(/[^a-zA-Z0-9_-]/gu, "_");
14846
14844
  const startMarkerId = `${markerSeed}-sel-start`;
14847
14845
  const endMarkerId = `${markerSeed}-sel-end`;
14848
- const compoundOffsets = chunkMA2BI7LX_js.getCompoundLineOffsets(compoundLine, strokeWidth);
14849
- const compoundWidths = chunkMA2BI7LX_js.getCompoundLineWidths(compoundLine, strokeWidth);
14846
+ const compoundOffsets = chunkJAI42EXQ_js.getCompoundLineOffsets(compoundLine, strokeWidth);
14847
+ const compoundWidths = chunkJAI42EXQ_js.getCompoundLineWidths(compoundLine, strokeWidth);
14850
14848
  const strokeCap = pptx.svgLineCap(ss?.lineCap);
14851
14849
  const textEl = pptx$1.hasTextProperties(el) ? el : void 0;
14852
14850
  const connectorText = textEl?.text?.trim() ?? "";
14853
14851
  const connectorTextSegments = textEl?.textSegments;
14854
14852
  const connectorTextStyle = textEl?.textStyle;
14855
- const pathGeometry = shapeEl ? chunkMA2BI7LX_js.getConnectorPathGeometry(shapeEl) : {
14853
+ const pathGeometry = shapeEl ? chunkJAI42EXQ_js.getConnectorPathGeometry(shapeEl) : {
14856
14854
  pathData: `M 0 0 L ${viewWidth} ${viewHeight}`,
14857
14855
  startX: 0,
14858
14856
  startY: 0,
@@ -14861,16 +14859,16 @@ var ConnectorElementRendererMemo = /* @__PURE__ */ React17__default.default.memo
14861
14859
  };
14862
14860
  const hitTargetWidth = Math.max(strokeWidth * 3, 14);
14863
14861
  const selColor = selClr === "blue-400" ? "#60a5fa" : "#3b82f6";
14864
- const lineShadow = chunkMA2BI7LX_js.buildLineShadowCss(el);
14865
- const lineGlow = chunkMA2BI7LX_js.buildLineGlowFilter(el);
14862
+ const lineShadow = chunkJAI42EXQ_js.buildLineShadowCss(el);
14863
+ const lineGlow = chunkJAI42EXQ_js.buildLineGlowFilter(el);
14866
14864
  return /* @__PURE__ */ jsxRuntime.jsxs(
14867
14865
  "div",
14868
14866
  {
14869
14867
  "data-pptx-element": "true",
14870
14868
  "data-element-id": el.id,
14871
- role: chunkMA2BI7LX_js.getAriaRole(el, { actionable: false }),
14872
- "aria-label": chunkMA2BI7LX_js.getAriaLabel(el),
14873
- "aria-roledescription": chunkMA2BI7LX_js.getAriaRoleDescription(el),
14869
+ role: chunkJAI42EXQ_js.getAriaRole(el, { actionable: false }),
14870
+ "aria-label": chunkJAI42EXQ_js.getAriaLabel(el),
14871
+ "aria-roledescription": chunkJAI42EXQ_js.getAriaRoleDescription(el),
14874
14872
  "aria-selected": isSelected ? true : void 0,
14875
14873
  className: "absolute",
14876
14874
  style: {
@@ -14903,14 +14901,14 @@ var ConnectorElementRendererMemo = /* @__PURE__ */ React17__default.default.memo
14903
14901
  style: { overflow: "visible", pointerEvents: "none" },
14904
14902
  children: [
14905
14903
  /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
14906
- chunkMA2BI7LX_js.renderConnectorMarker(
14904
+ chunkJAI42EXQ_js.renderConnectorMarker(
14907
14905
  startMarkerId,
14908
14906
  startArrow,
14909
14907
  strokePaint,
14910
14908
  ss?.connectorStartArrowWidth,
14911
14909
  ss?.connectorStartArrowLength
14912
14910
  ),
14913
- chunkMA2BI7LX_js.renderConnectorMarker(
14911
+ chunkJAI42EXQ_js.renderConnectorMarker(
14914
14912
  endMarkerId,
14915
14913
  endArrow,
14916
14914
  strokePaint,
@@ -15119,14 +15117,14 @@ function getElementInteractionProps({
15119
15117
  };
15120
15118
  }
15121
15119
  function renderDagDuotoneFilterForElement(el) {
15122
- if (!chunkMA2BI7LX_js.hasDagDuotoneEffect(el)) {
15120
+ if (!chunkJAI42EXQ_js.hasDagDuotoneEffect(el)) {
15123
15121
  return null;
15124
15122
  }
15125
15123
  const duotone = el.shapeStyle?.dagDuotone;
15126
15124
  if (!duotone) {
15127
15125
  return null;
15128
15126
  }
15129
- return chunkMA2BI7LX_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
15127
+ return chunkJAI42EXQ_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
15130
15128
  }
15131
15129
  function getContainerStyle({
15132
15130
  el,
@@ -15153,10 +15151,10 @@ function getContainerStyle({
15153
15151
  top: isFullscreenMedia ? fs.top : el.y,
15154
15152
  width: isFullscreenMedia ? fs.width : painted.width,
15155
15153
  ...heightStyle,
15156
- transform: isFullscreenMedia ? fs.transform : chunkMA2BI7LX_js.getElementTransform(el),
15154
+ transform: isFullscreenMedia ? fs.transform : chunkJAI42EXQ_js.getElementTransform(el),
15157
15155
  transformOrigin: "center",
15158
15156
  overflow: overflowValue,
15159
- clipPath: isPicture ? void 0 : isImg && !has3DExtrusion ? chunkMA2BI7LX_js.getCropShapeClipPath(el) : void 0,
15157
+ clipPath: isPicture ? void 0 : isImg && !has3DExtrusion ? chunkJAI42EXQ_js.getCropShapeClipPath(el) : void 0,
15160
15158
  zIndex: isFullscreenMedia ? fs.zIndex : zIndex,
15161
15159
  visibility: animationState?.visible === false ? "hidden" : "visible",
15162
15160
  animation: animationState?.cssAnimation,
@@ -15193,9 +15191,9 @@ function getContainerStyle({
15193
15191
  function shapeParams(element) {
15194
15192
  const style = pptx$1.hasShapeProperties(element) ? element.shapeStyle : void 0;
15195
15193
  const strokeWidth = pptx.paintedStrokeWidth(style);
15196
- const strokeColor = chunkMA2BI7LX_js.normalizeHexColor(style?.strokeColor, chunkMA2BI7LX_js.DEFAULT_STROKE_COLOR);
15197
- const fillColor = chunkMA2BI7LX_js.normalizeHexColor(style?.fillColor, chunkMA2BI7LX_js.DEFAULT_FILL_COLOR);
15198
- const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkMA2BI7LX_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
15194
+ const strokeColor = chunkJAI42EXQ_js.normalizeHexColor(style?.strokeColor, chunkJAI42EXQ_js.DEFAULT_STROKE_COLOR);
15195
+ const fillColor = chunkJAI42EXQ_js.normalizeHexColor(style?.fillColor, chunkJAI42EXQ_js.DEFAULT_FILL_COLOR);
15196
+ const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkJAI42EXQ_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
15199
15197
  return { hf: hasFill, fc: fillColor, sw: strokeWidth, sc: strokeColor };
15200
15198
  }
15201
15199
  var Extrusion3DOverlayMemo = /* @__PURE__ */ React17__default.default.memo(
@@ -15303,7 +15301,7 @@ function ShapeEffectOverlay({
15303
15301
  const fillOverlayStyle = overlay ? {
15304
15302
  position: "absolute",
15305
15303
  inset: 0,
15306
- ...pptx$1.isImageLikeElement(element) ? chunkMA2BI7LX_js.getImageSurfaceMaskStyle(element) : {},
15304
+ ...pptx$1.isImageLikeElement(element) ? chunkJAI42EXQ_js.getImageSurfaceMaskStyle(element) : {},
15307
15305
  background: overlay.color,
15308
15306
  mixBlendMode: overlay.blendMode,
15309
15307
  pointerEvents: "none"
@@ -15510,10 +15508,10 @@ var ElementRenderer = /* @__PURE__ */ React17__default.default.memo(
15510
15508
  const backgroundAnimationState = pptx.getBackgroundAnimationState(el, presentationElementStates);
15511
15509
  const effectPlacement = pptx.getShapeEffectLayerPlacement(el);
15512
15510
  const visualAnimationState = backgroundAnimationState ?? animationState;
15513
- const isTxt = chunkMA2BI7LX_js.isEditableTextElement(el) && allow.textEditable;
15511
+ const isTxt = chunkJAI42EXQ_js.isEditableTextElement(el) && allow.textEditable;
15514
15512
  const txtSE = pptx$1.hasTextProperties(el) ? el.textStyle : void 0;
15515
15513
  const textStyleOverrideCss = pptx.buildTextStyleOverrideCss(el.id, visualAnimationState?.textStyle);
15516
- const ss = chunkMA2BI7LX_js.getShapeVisualStyle(
15514
+ const ss = chunkJAI42EXQ_js.getShapeVisualStyle(
15517
15515
  el,
15518
15516
  hf,
15519
15517
  fc,
@@ -15522,9 +15520,9 @@ var ElementRenderer = /* @__PURE__ */ React17__default.default.memo(
15522
15520
  visualAnimationState?.animatesFill,
15523
15521
  visualAnimationState?.animatesStroke
15524
15522
  );
15525
- const ts = chunkMA2BI7LX_js.getTextStyleForElement(el, chunkMA2BI7LX_js.DEFAULT_TEXT_COLOR);
15523
+ const ts = chunkJAI42EXQ_js.getTextStyleForElement(el, chunkJAI42EXQ_js.DEFAULT_TEXT_COLOR);
15526
15524
  const isImg = el.type === "picture" || el.type === "image";
15527
- const vs = chunkMA2BI7LX_js.renderVectorShape(
15525
+ const vs = chunkJAI42EXQ_js.renderVectorShape(
15528
15526
  el,
15529
15527
  isImg ? false : hf,
15530
15528
  fc,
@@ -15534,10 +15532,10 @@ var ElementRenderer = /* @__PURE__ */ React17__default.default.memo(
15534
15532
  visualAnimationState?.animatesStroke
15535
15533
  );
15536
15534
  const isModel3D = el.type === "model3d";
15537
- const isConn = chunkMA2BI7LX_js.isConnectorOrLineElement(el);
15535
+ const isConn = chunkJAI42EXQ_js.isConnectorOrLineElement(el);
15538
15536
  const shapeStyle3d = pptx$1.hasShapeProperties(el) ? el.shapeStyle : void 0;
15539
15537
  const extrusionData = React17.useMemo(
15540
- () => chunkMA2BI7LX_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
15538
+ () => chunkJAI42EXQ_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
15541
15539
  [shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height]
15542
15540
  );
15543
15541
  const actionAffordance = useActionAffordance(el, canInteract);
@@ -15627,7 +15625,7 @@ var ElementRenderer = /* @__PURE__ */ React17__default.default.memo(
15627
15625
  "aria-hidden": aria.hidden ? true : void 0,
15628
15626
  "aria-selected": isSelected ? true : void 0,
15629
15627
  tabIndex: isFocusable ? 0 : -1,
15630
- className: chunkMA2BI7LX_js.cn(
15628
+ className: chunkJAI42EXQ_js.cn(
15631
15629
  "absolute",
15632
15630
  "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500",
15633
15631
  cur,
@@ -15700,9 +15698,9 @@ var ElementRenderer = /* @__PURE__ */ React17__default.default.memo(
15700
15698
  txtSE,
15701
15699
  txtS: ts,
15702
15700
  vecShape: backgroundAnimationState && !isImg ? null : vs,
15703
- imgStyle: chunkMA2BI7LX_js.getImageRenderStyle(el),
15704
- imgFilter: chunkMA2BI7LX_js.getImageEffectsFilter(el),
15705
- imgOpacity: chunkMA2BI7LX_js.getImageEffectsOpacity(el),
15701
+ imgStyle: chunkJAI42EXQ_js.getImageRenderStyle(el),
15702
+ imgFilter: chunkJAI42EXQ_js.getImageEffectsFilter(el),
15703
+ imgOpacity: chunkJAI42EXQ_js.getImageEffectsOpacity(el),
15706
15704
  imgAlt: imageAltText,
15707
15705
  isTxtEl: isTxt,
15708
15706
  media: mediaDataUrls,
@@ -15839,10 +15837,10 @@ function renderStrokeView(view, pressureSensitive, replayStyle, key) {
15839
15837
  }
15840
15838
  function renderInk(el, options) {
15841
15839
  const replay = options?.replay ?? false;
15842
- const strokes = chunkMA2BI7LX_js.buildInkGroupStrokes(el, { color: "#000", width: 3 });
15840
+ const strokes = chunkJAI42EXQ_js.buildInkGroupStrokes(el, { color: "#000", width: 3 });
15843
15841
  strokes.some((s) => s.circles || s.nibMarks);
15844
15842
  const pressureSensitive = options?.pressureSensitive;
15845
- const replayStyles = replay ? chunkMA2BI7LX_js.getInkReplayStyles(el, options?.replayConfig) : null;
15843
+ const replayStyles = replay ? chunkJAI42EXQ_js.getInkReplayStyles(el, options?.replayConfig) : null;
15846
15844
  return /* @__PURE__ */ jsxRuntime.jsxs(
15847
15845
  "svg",
15848
15846
  {
@@ -15850,7 +15848,7 @@ function renderInk(el, options) {
15850
15848
  viewBox: `0 0 ${Math.max(el.width, 1)} ${Math.max(el.height, 1)}`,
15851
15849
  preserveAspectRatio: "none",
15852
15850
  children: [
15853
- replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkMA2BI7LX_js.INK_REPLAY_KEYFRAMES }),
15851
+ replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkJAI42EXQ_js.INK_REPLAY_KEYFRAMES }),
15854
15852
  strokes.map(
15855
15853
  (s, i) => renderStrokeView(s, pressureSensitive, replayStyles?.[i], `${el.id}-ink-${i}`)
15856
15854
  )
@@ -15861,7 +15859,7 @@ function renderInk(el, options) {
15861
15859
  function renderGroup(children, parentGroupFill) {
15862
15860
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full h-full pointer-events-none", children: pptx.filterRenderedElements(children).map((c, childIndex) => {
15863
15861
  const { hf, fc, sw, sc } = shapeParams(c);
15864
- const baseSs = chunkMA2BI7LX_js.getShapeVisualStyle(c, hf, fc, sw, sc);
15862
+ const baseSs = chunkJAI42EXQ_js.getShapeVisualStyle(c, hf, fc, sw, sc);
15865
15863
  const inheritedFill = pptx.resolveGroupChildFill(c, parentGroupFill);
15866
15864
  const ss = inheritedFill ? {
15867
15865
  ...baseSs,
@@ -15872,9 +15870,9 @@ function renderGroup(children, parentGroupFill) {
15872
15870
  backgroundPosition: inheritedFill.backgroundPosition
15873
15871
  } : baseSs;
15874
15872
  const isI = c.type === "picture" || c.type === "image";
15875
- const vs = chunkMA2BI7LX_js.renderVectorShape(c, isI ? false : hf, fc, sw, sc);
15876
- const ts = chunkMA2BI7LX_js.getTextStyleForElement(c, chunkMA2BI7LX_js.DEFAULT_TEXT_COLOR);
15877
- const isTxt = chunkMA2BI7LX_js.isEditableTextElement(c);
15873
+ const vs = chunkJAI42EXQ_js.renderVectorShape(c, isI ? false : hf, fc, sw, sc);
15874
+ const ts = chunkJAI42EXQ_js.getTextStyleForElement(c, chunkJAI42EXQ_js.DEFAULT_TEXT_COLOR);
15875
+ const isTxt = chunkJAI42EXQ_js.isEditableTextElement(c);
15878
15876
  return /* @__PURE__ */ jsxRuntime.jsxs(
15879
15877
  "div",
15880
15878
  {
@@ -15883,9 +15881,9 @@ function renderGroup(children, parentGroupFill) {
15883
15881
  style: {
15884
15882
  left: c.x,
15885
15883
  top: c.y,
15886
- width: Math.max(c.width, chunkMA2BI7LX_js.MIN_ELEMENT_SIZE),
15887
- height: Math.max(c.height, chunkMA2BI7LX_js.MIN_ELEMENT_SIZE),
15888
- transform: chunkMA2BI7LX_js.getElementTransform(c),
15884
+ width: Math.max(c.width, chunkJAI42EXQ_js.MIN_ELEMENT_SIZE),
15885
+ height: Math.max(c.height, chunkJAI42EXQ_js.MIN_ELEMENT_SIZE),
15886
+ transform: chunkJAI42EXQ_js.getElementTransform(c),
15889
15887
  transformOrigin: "center",
15890
15888
  ...ss,
15891
15889
  ...isI ? {
@@ -15910,8 +15908,8 @@ function renderGroup(children, parentGroupFill) {
15910
15908
  // A nested group: recurse, chaining the inherited fill so a
15911
15909
  // `grpFill` shape under a fill-less sub-group still paints.
15912
15910
  renderGroup(c.children, pptx.getGroupChildParentFill(c, parentGroupFill))
15913
- ) : isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunkMA2BI7LX_js.getImageSurfaceStyle(c), children: [
15914
- chunkMA2BI7LX_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
15911
+ ) : isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunkJAI42EXQ_js.getImageSurfaceStyle(c), children: [
15912
+ chunkJAI42EXQ_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
15915
15913
  TiledImageLayer,
15916
15914
  {
15917
15915
  element: c,
@@ -15924,7 +15922,7 @@ function renderGroup(children, parentGroupFill) {
15924
15922
  src: "svgData" in c && c.svgData ? c.svgData : c.imageData,
15925
15923
  alt: i18n.translationsEn["pptx.ink.groupChildAlt"],
15926
15924
  className: "pointer-events-none select-none",
15927
- style: chunkMA2BI7LX_js.getImageRenderStyle(c),
15925
+ style: chunkJAI42EXQ_js.getImageRenderStyle(c),
15928
15926
  draggable: false
15929
15927
  }
15930
15928
  ),
@@ -15936,7 +15934,7 @@ function renderGroup(children, parentGroupFill) {
15936
15934
  {
15937
15935
  className: "relative z-10 w-full h-full pointer-events-none whitespace-pre-wrap break-words leading-[1.3]",
15938
15936
  style: ts,
15939
- children: chunkMA2BI7LX_js.renderTextSegments(c, chunkMA2BI7LX_js.DEFAULT_TEXT_COLOR)
15937
+ children: chunkJAI42EXQ_js.renderTextSegments(c, chunkJAI42EXQ_js.DEFAULT_TEXT_COLOR)
15940
15938
  }
15941
15939
  ) : null
15942
15940
  ] })
@@ -15950,8 +15948,8 @@ function renderContentPart(el, options) {
15950
15948
  if (el.inkStrokes && el.inkStrokes.length > 0) {
15951
15949
  const replay = options?.replay ?? false;
15952
15950
  const pressureSensitive = options?.pressureSensitive ?? true;
15953
- const strokes = chunkMA2BI7LX_js.buildContentPartStrokes(el);
15954
- const replayStyles = replay ? chunkMA2BI7LX_js.getContentPartReplayStyles(el.inkStrokes, options?.replayConfig) : null;
15951
+ const strokes = chunkJAI42EXQ_js.buildContentPartStrokes(el);
15952
+ const replayStyles = replay ? chunkJAI42EXQ_js.getContentPartReplayStyles(el.inkStrokes, options?.replayConfig) : null;
15955
15953
  return /* @__PURE__ */ jsxRuntime.jsxs(
15956
15954
  "svg",
15957
15955
  {
@@ -15959,7 +15957,7 @@ function renderContentPart(el, options) {
15959
15957
  viewBox: `0 0 ${Math.max(el.width, 1)} ${Math.max(el.height, 1)}`,
15960
15958
  preserveAspectRatio: "none",
15961
15959
  children: [
15962
- replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkMA2BI7LX_js.INK_REPLAY_KEYFRAMES }),
15960
+ replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkJAI42EXQ_js.INK_REPLAY_KEYFRAMES }),
15963
15961
  strokes.map(
15964
15962
  (s, i) => renderStrokeView(s, pressureSensitive, replayStyles?.[i], `${el.id}-cp-ink-${i}`)
15965
15963
  )
@@ -16186,9 +16184,9 @@ function useInlineListEditor(element, rootRef, onChange, onModelReplacement) {
16186
16184
  collaboration: connected,
16187
16185
  model: pptx.createInlineListModelObserver(element),
16188
16186
  activationSelection,
16189
- children: seed && !connected ? chunkMA2BI7LX_js.renderTextSegments(
16187
+ children: seed && !connected ? chunkJAI42EXQ_js.renderTextSegments(
16190
16188
  element,
16191
- chunkMA2BI7LX_js.DEFAULT_TEXT_COLOR,
16189
+ chunkJAI42EXQ_js.DEFAULT_TEXT_COLOR,
16192
16190
  void 0,
16193
16191
  void 0,
16194
16192
  void 0,
@@ -16424,8 +16422,8 @@ function InlineTextEditor({
16424
16422
  pending.endOffset
16425
16423
  );
16426
16424
  });
16427
- const warpStyle = chunkMA2BI7LX_js.getTextWarpStyle(textStyleRaw);
16428
- const compensationTransform = chunkMA2BI7LX_js.getTextCompensationTransform(element);
16425
+ const warpStyle = chunkJAI42EXQ_js.getTextWarpStyle(textStyleRaw);
16426
+ const compensationTransform = chunkJAI42EXQ_js.getTextCompensationTransform(element);
16429
16427
  const warpTransform = warpStyle?.transform;
16430
16428
  const mergedTransform = [compensationTransform, warpTransform].filter(Boolean).join(" ") || void 0;
16431
16429
  const wrapperStyle = {
@@ -16513,7 +16511,7 @@ function InlineTextEditor({
16513
16511
  const text = e.clipboardData.getData("text/plain");
16514
16512
  document.execCommand("insertText", false, text);
16515
16513
  },
16516
- children: list.seed ? list.children : seed.hasRichSegments ? chunkMA2BI7LX_js.renderTextSegments(element, chunkMA2BI7LX_js.DEFAULT_TEXT_COLOR) : seed.initialText
16514
+ children: list.seed ? list.children : seed.hasRichSegments ? chunkJAI42EXQ_js.renderTextSegments(element, chunkJAI42EXQ_js.DEFAULT_TEXT_COLOR) : seed.initialText
16517
16515
  },
16518
16516
  list.seed?.paragraphs[0].token ?? "plain"
16519
16517
  );
@@ -17660,7 +17658,7 @@ function groupIntoParagraphs(element, fieldContext) {
17660
17658
  element,
17661
17659
  fieldContext ? (seg) => {
17662
17660
  if (seg.fieldType) {
17663
- const substituted = chunkMA2BI7LX_js.substituteFieldText(
17661
+ const substituted = chunkJAI42EXQ_js.substituteFieldText(
17664
17662
  seg.text,
17665
17663
  seg.fieldType,
17666
17664
  fieldContext,
@@ -17695,13 +17693,13 @@ function getSegmentTspanProps(segment, element, fallbackColor) {
17695
17693
  if (s.strikethrough) {
17696
17694
  decos.push("line-through");
17697
17695
  }
17698
- const fill = s.hyperlink ? chunkMA2BI7LX_js.normalizeHexColor(s.color || element.textStyle?.color, chunkMA2BI7LX_js.HYPERLINK_COLOR) : chunkMA2BI7LX_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
17696
+ const fill = s.hyperlink ? chunkJAI42EXQ_js.normalizeHexColor(s.color || element.textStyle?.color, chunkJAI42EXQ_js.HYPERLINK_COLOR) : chunkJAI42EXQ_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
17699
17697
  return {
17700
17698
  fill,
17701
- fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunkMA2BI7LX_js.DEFAULT_TEXT_FONT_SIZE,
17699
+ fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunkJAI42EXQ_js.DEFAULT_TEXT_FONT_SIZE,
17702
17700
  fontWeight: pptx.resolveFontWeight(s.fontFamily || element.textStyle?.fontFamily, s.bold),
17703
17701
  fontStyle: pptx.resolveFontItalic(s.fontFamily || element.textStyle?.fontFamily, s.italic) ? "italic" : void 0,
17704
- fontFamily: s.fontFamily || element.textStyle?.fontFamily ? pptx$1.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") : chunkMA2BI7LX_js.DEFAULT_FONT_FAMILY,
17702
+ fontFamily: s.fontFamily || element.textStyle?.fontFamily ? pptx$1.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") : chunkJAI42EXQ_js.DEFAULT_FONT_FAMILY,
17705
17703
  textDecoration: decos.length > 0 ? decos.join(" ") : void 0
17706
17704
  };
17707
17705
  }
@@ -17709,8 +17707,8 @@ function resolveSegmentFont(segment, element) {
17709
17707
  const s = segment.style || {};
17710
17708
  const family = s.fontFamily || element.textStyle?.fontFamily;
17711
17709
  return {
17712
- fontFamily: family ? pptx$1.getSubstituteFontFamily(family) : chunkMA2BI7LX_js.DEFAULT_FONT_FAMILY,
17713
- fontSizePx: s.fontSize ?? element.textStyle?.fontSize ?? chunkMA2BI7LX_js.DEFAULT_TEXT_FONT_SIZE,
17710
+ fontFamily: family ? pptx$1.getSubstituteFontFamily(family) : chunkJAI42EXQ_js.DEFAULT_FONT_FAMILY,
17711
+ fontSizePx: s.fontSize ?? element.textStyle?.fontSize ?? chunkJAI42EXQ_js.DEFAULT_TEXT_FONT_SIZE,
17714
17712
  bold: s.bold ?? element.textStyle?.bold,
17715
17713
  italic: s.italic ?? element.textStyle?.italic
17716
17714
  };
@@ -17794,9 +17792,9 @@ function WarpedText({
17794
17792
  const warpAdj2 = textEl.textStyle?.textWarpAdj2;
17795
17793
  const align = textEl.textStyle?.align ?? "center";
17796
17794
  const { startOffset, textAnchor } = getAlignmentProps(align);
17797
- const baseFontSize = textEl.textStyle?.fontSize ?? chunkMA2BI7LX_js.DEFAULT_TEXT_FONT_SIZE;
17798
- const baseFontFamily = textEl.textStyle?.fontFamily ? pptx$1.getSubstituteFontFamily(textEl.textStyle.fontFamily) : chunkMA2BI7LX_js.DEFAULT_FONT_FAMILY;
17799
- const baseFill = chunkMA2BI7LX_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
17795
+ const baseFontSize = textEl.textStyle?.fontSize ?? chunkJAI42EXQ_js.DEFAULT_TEXT_FONT_SIZE;
17796
+ const baseFontFamily = textEl.textStyle?.fontFamily ? pptx$1.getSubstituteFontFamily(textEl.textStyle.fontFamily) : chunkJAI42EXQ_js.DEFAULT_FONT_FAMILY;
17797
+ const baseFill = chunkJAI42EXQ_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
17800
17798
  if (pptx.hasGlyphEnvelope(preset)) {
17801
17799
  const perLine = pptx.buildGlyphEnvelopeBlock(
17802
17800
  preset,
@@ -17898,7 +17896,7 @@ function WarpedText({
17898
17896
  var GLYPH_BY_SHAPE = /* @__PURE__ */ buildGlyphByShape();
17899
17897
  function buildGlyphByShape() {
17900
17898
  const glyphs = Object.fromEntries(
17901
- chunkMA2BI7LX_js.ACTION_BUTTON_PRESETS.map((p) => [p.shapeType, p.iconPath])
17899
+ chunkJAI42EXQ_js.ACTION_BUTTON_PRESETS.map((p) => [p.shapeType, p.iconPath])
17902
17900
  );
17903
17901
  glyphs["actionButtonForwardOrNext"] = glyphs["actionButtonForwardNext"];
17904
17902
  glyphs["actionButtonBackOrPrevious"] = glyphs["actionButtonBackPrevious"];
@@ -17972,9 +17970,9 @@ function renderTextElementBody(options) {
17972
17970
  const useSvgWarp = pptx.shouldUseSvgWarp(
17973
17971
  pptx$1.hasTextProperties(el) ? el.textStyle?.textWarpPreset : void 0
17974
17972
  );
17975
- const scene3dStyle = pptx$1.hasTextProperties(el) ? chunkMA2BI7LX_js.buildTextBody3DSceneStyle(el.textStyle, { width: el.width, height: el.height }) : void 0;
17973
+ const scene3dStyle = pptx$1.hasTextProperties(el) ? chunkJAI42EXQ_js.buildTextBody3DSceneStyle(el.textStyle, { width: el.width, height: el.height }) : void 0;
17976
17974
  const rotationTransform = pptx.getTextBodyRotationTransform(el);
17977
- const composedTransform = [rotationTransform, chunkMA2BI7LX_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
17975
+ const composedTransform = [rotationTransform, chunkJAI42EXQ_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
17978
17976
  const transformStyle = {
17979
17977
  transform: composedTransform,
17980
17978
  // A COM-measured homography (`scene3dStyle.transformOrigin === '0 0'`)
@@ -18004,18 +18002,18 @@ function renderTextElementBody(options) {
18004
18002
  shouldRenderText && (useSvgWarp ? /* @__PURE__ */ jsxRuntime.jsx(
18005
18003
  "div",
18006
18004
  {
18007
- className: chunkMA2BI7LX_js.cn(
18005
+ className: chunkJAI42EXQ_js.cn(
18008
18006
  "relative z-10 w-full h-full",
18009
18007
  onHyperlinkClick ? "" : "pointer-events-none"
18010
18008
  ),
18011
- style: { ...chunkMA2BI7LX_js.getTextLayoutStyle(el), ...transformStyle },
18009
+ style: { ...chunkJAI42EXQ_js.getTextLayoutStyle(el), ...transformStyle },
18012
18010
  children: /* @__PURE__ */ jsxRuntime.jsx(
18013
18011
  WarpedText,
18014
18012
  {
18015
18013
  element: el,
18016
18014
  width: el.width,
18017
18015
  height: el.height,
18018
- fallbackColor: chunkMA2BI7LX_js.DEFAULT_TEXT_COLOR,
18016
+ fallbackColor: chunkJAI42EXQ_js.DEFAULT_TEXT_COLOR,
18019
18017
  findHighlights: findHl,
18020
18018
  fieldContext
18021
18019
  }
@@ -18024,19 +18022,19 @@ function renderTextElementBody(options) {
18024
18022
  ) : /* @__PURE__ */ jsxRuntime.jsx(
18025
18023
  "div",
18026
18024
  {
18027
- className: chunkMA2BI7LX_js.cn(
18025
+ className: chunkJAI42EXQ_js.cn(
18028
18026
  "relative z-10 w-full h-full whitespace-pre-wrap break-words leading-[1.3]",
18029
18027
  onHyperlinkClick ? "" : "pointer-events-none"
18030
18028
  ),
18031
18029
  style: {
18032
- ...chunkMA2BI7LX_js.getTextLayoutStyle(el),
18030
+ ...chunkJAI42EXQ_js.getTextLayoutStyle(el),
18033
18031
  ...txtS,
18034
- ...chunkMA2BI7LX_js.getTextWarpStyle(txtSE),
18032
+ ...chunkJAI42EXQ_js.getTextWarpStyle(txtSE),
18035
18033
  ...transformStyle
18036
18034
  },
18037
- children: chunkMA2BI7LX_js.renderTextSegments(
18035
+ children: chunkJAI42EXQ_js.renderTextSegments(
18038
18036
  el,
18039
- chunkMA2BI7LX_js.DEFAULT_TEXT_COLOR,
18037
+ chunkJAI42EXQ_js.DEFAULT_TEXT_COLOR,
18040
18038
  void 0,
18041
18039
  findHl,
18042
18040
  onHyperlinkClick,
@@ -18355,7 +18353,7 @@ function renderBody(options) {
18355
18353
  );
18356
18354
  }
18357
18355
  if (isImg) {
18358
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunkMA2BI7LX_js.getImageSurfaceStyle(el), children: [
18356
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunkJAI42EXQ_js.getImageSurfaceStyle(el), children: [
18359
18357
  renderImg(el, imgStyle, imgFilter, imgAlt, imgOpacity),
18360
18358
  vecShape ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0", children: vecShape }) : null
18361
18359
  ] });
@@ -18372,7 +18370,7 @@ function renderBody(options) {
18372
18370
  textDirection: txtSE?.textDirection,
18373
18371
  textStyle: txtS,
18374
18372
  textStyleRaw: txtSE,
18375
- layoutStyle: chunkMA2BI7LX_js.getTextLayoutStyle(el),
18373
+ layoutStyle: chunkJAI42EXQ_js.getTextLayoutStyle(el),
18376
18374
  element: el,
18377
18375
  onCommit,
18378
18376
  onCancel,
@@ -18383,7 +18381,7 @@ function renderBody(options) {
18383
18381
  ] });
18384
18382
  }
18385
18383
  if (el.type === "table") {
18386
- return chunkMA2BI7LX_js.renderTableElement(el, txtS, {
18384
+ return chunkJAI42EXQ_js.renderTableElement(el, txtS, {
18387
18385
  editable: isSel,
18388
18386
  selectedCell: isSel ? tableSt : null,
18389
18387
  onSelectCell: onCellSel,
@@ -18416,7 +18414,7 @@ function renderBody(options) {
18416
18414
  );
18417
18415
  }
18418
18416
  if (el.type === "media") {
18419
- return chunkMA2BI7LX_js.renderMediaElement(el, media, {
18417
+ return chunkJAI42EXQ_js.renderMediaElement(el, media, {
18420
18418
  // Present mode autoplays every media element on the active slide,
18421
18419
  // not only ones persisted with their own `autoPlay` flag (matching
18422
18420
  // the other four bindings' unconditional `presenting`-gated
@@ -18468,27 +18466,27 @@ function renderBody(options) {
18468
18466
  }
18469
18467
  return renderGroup(el.children, pptx.getGroupChildParentFill(el));
18470
18468
  }
18471
- if (chunkMA2BI7LX_js.shouldRenderFallbackLabel(el, isTxtEl)) {
18472
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkMA2BI7LX_js.getElementLabel(el) });
18469
+ if (chunkJAI42EXQ_js.shouldRenderFallbackLabel(el, isTxtEl)) {
18470
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkJAI42EXQ_js.getElementLabel(el) });
18473
18471
  }
18474
18472
  return renderTextElementBody(options);
18475
18473
  }
18476
18474
  function defaultTextColorForFill(fillColor) {
18477
18475
  const hex = String(fillColor ?? "").replace(/^#/u, "");
18478
18476
  if (!/^[0-9a-f]{6}$/iu.test(hex)) {
18479
- return chunkMA2BI7LX_js.DEFAULT_TEXT_COLOR;
18477
+ return chunkJAI42EXQ_js.DEFAULT_TEXT_COLOR;
18480
18478
  }
18481
18479
  const channels = [0, 2, 4].map((offset) => Number.parseInt(hex.slice(offset, offset + 2), 16) / 255).map((channel) => channel <= 0.04045 ? channel / 12.92 : ((channel + 0.055) / 1.055) ** 2.4);
18482
18480
  const luminance = channels[0] * 0.2126 + channels[1] * 0.7152 + channels[2] * 0.0722;
18483
- return luminance > 0.179 ? chunkMA2BI7LX_js.DEFAULT_TEXT_COLOR : "#ffffff";
18481
+ return luminance > 0.179 ? chunkJAI42EXQ_js.DEFAULT_TEXT_COLOR : "#ffffff";
18484
18482
  }
18485
18483
  function getStaticElementVisualState(element, parentGroupFill) {
18486
18484
  const style = pptx$1.hasShapeProperties(element) ? element.shapeStyle : void 0;
18487
- const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkMA2BI7LX_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
18488
- const fill = chunkMA2BI7LX_js.normalizeHexColor(style?.fillColor, chunkMA2BI7LX_js.DEFAULT_FILL_COLOR);
18485
+ const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkJAI42EXQ_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
18486
+ const fill = chunkJAI42EXQ_js.normalizeHexColor(style?.fillColor, chunkJAI42EXQ_js.DEFAULT_FILL_COLOR);
18489
18487
  const strokeWidth = pptx.paintedStrokeWidth(style);
18490
- const stroke = chunkMA2BI7LX_js.normalizeHexColor(style?.strokeColor, chunkMA2BI7LX_js.DEFAULT_STROKE_COLOR);
18491
- const baseVisualStyle = chunkMA2BI7LX_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
18488
+ const stroke = chunkJAI42EXQ_js.normalizeHexColor(style?.strokeColor, chunkJAI42EXQ_js.DEFAULT_STROKE_COLOR);
18489
+ const baseVisualStyle = chunkJAI42EXQ_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
18492
18490
  const inheritedFill = pptx.resolveGroupChildFill(element, parentGroupFill);
18493
18491
  const visualStyle = inheritedFill ? {
18494
18492
  ...baseVisualStyle,
@@ -18498,9 +18496,9 @@ function getStaticElementVisualState(element, parentGroupFill) {
18498
18496
  backgroundSize: inheritedFill.backgroundSize,
18499
18497
  backgroundPosition: inheritedFill.backgroundPosition
18500
18498
  } : baseVisualStyle;
18501
- const textStyle = chunkMA2BI7LX_js.getTextStyleForElement(
18499
+ const textStyle = chunkJAI42EXQ_js.getTextStyleForElement(
18502
18500
  element,
18503
- element.type === "shape" && hasFill ? defaultTextColorForFill(fill) : chunkMA2BI7LX_js.DEFAULT_TEXT_COLOR
18501
+ element.type === "shape" && hasFill ? defaultTextColorForFill(fill) : chunkJAI42EXQ_js.DEFAULT_TEXT_COLOR
18504
18502
  );
18505
18503
  const isImage = element.type === "picture" || element.type === "image";
18506
18504
  const letsTextOverflow = pptx$1.hasTextProperties(element) && element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
@@ -18525,7 +18523,7 @@ function getStaticElementInteractionState(element, hasActionHandler, exposeEleme
18525
18523
  return { action, isActionable, contractRole };
18526
18524
  }
18527
18525
  function getStaticElementWrapperClassName(element, visual, positioned, isActionable) {
18528
- const overflowClass = visual.isImage || visual.strokeWidth > 0 || element.type === "group" || chunkMA2BI7LX_js.isConnectorOrLineElement(element) || visual.isCallout || visual.letsTextOverflow ? "" : "overflow-hidden";
18526
+ const overflowClass = visual.isImage || visual.strokeWidth > 0 || element.type === "group" || chunkJAI42EXQ_js.isConnectorOrLineElement(element) || visual.isCallout || visual.letsTextOverflow ? "" : "overflow-hidden";
18529
18527
  const pointerClass = isActionable ? "pointer-events-auto cursor-pointer" : "pointer-events-none";
18530
18528
  return `${positioned ? "absolute" : "relative"} ${overflowClass} ${pointerClass}`;
18531
18529
  }
@@ -18608,7 +18606,7 @@ function StaticElementRendererImpl({
18608
18606
  top: positioned ? element.y : void 0,
18609
18607
  width: positioned ? Math.max(element.width, 1) : "100%",
18610
18608
  height: positioned ? Math.max(element.height, 1) : "100%",
18611
- transform: positioned ? chunkMA2BI7LX_js.getElementTransform(element) : void 0,
18609
+ transform: positioned ? chunkJAI42EXQ_js.getElementTransform(element) : void 0,
18612
18610
  transformOrigin: "center",
18613
18611
  zIndex,
18614
18612
  ...visualStyle,
@@ -18651,18 +18649,18 @@ function StaticElementRendererImpl({
18651
18649
  spellCheck: false,
18652
18650
  txtSE: pptx$1.hasTextProperties(element) ? element.textStyle : void 0,
18653
18651
  txtS: textStyle,
18654
- vecShape: chunkMA2BI7LX_js.renderVectorShape(
18652
+ vecShape: chunkJAI42EXQ_js.renderVectorShape(
18655
18653
  element,
18656
18654
  isImage ? false : hasFill,
18657
18655
  fill,
18658
18656
  strokeWidth,
18659
18657
  stroke
18660
18658
  ),
18661
- imgStyle: imageAnimation ? { ...chunkMA2BI7LX_js.getImageRenderStyle(element), animation: imageAnimation } : chunkMA2BI7LX_js.getImageRenderStyle(element),
18662
- imgFilter: chunkMA2BI7LX_js.getImageEffectsFilter(element),
18663
- imgOpacity: chunkMA2BI7LX_js.getImageEffectsOpacity(element),
18659
+ imgStyle: imageAnimation ? { ...chunkJAI42EXQ_js.getImageRenderStyle(element), animation: imageAnimation } : chunkJAI42EXQ_js.getImageRenderStyle(element),
18660
+ imgFilter: chunkJAI42EXQ_js.getImageEffectsFilter(element),
18661
+ imgOpacity: chunkJAI42EXQ_js.getImageEffectsOpacity(element),
18664
18662
  imgAlt: "",
18665
- isTxtEl: chunkMA2BI7LX_js.isEditableTextElement(element),
18663
+ isTxtEl: chunkJAI42EXQ_js.isEditableTextElement(element),
18666
18664
  media: mediaDataUrls,
18667
18665
  tableSt: null,
18668
18666
  isSel: false,
@@ -18710,7 +18708,7 @@ function SlideLayer({
18710
18708
  style: {
18711
18709
  width: safeWidth,
18712
18710
  height: safeHeight,
18713
- backgroundColor: slide.backgroundColor ? chunkMA2BI7LX_js.normalizeHexColor(slide.backgroundColor, "#ffffff") : "#ffffff",
18711
+ backgroundColor: slide.backgroundColor ? chunkJAI42EXQ_js.normalizeHexColor(slide.backgroundColor, "#ffffff") : "#ffffff",
18714
18712
  backgroundImage: slide.backgroundImage ? `url(${slide.backgroundImage})` : slide.backgroundGradient ? slide.backgroundGradient : void 0,
18715
18713
  backgroundSize: slide.backgroundImage ? "cover" : void 0,
18716
18714
  backgroundPosition: slide.backgroundImage ? "center" : void 0
@@ -18783,6 +18781,9 @@ function FragmentedTransitionLayer({
18783
18781
  }
18784
18782
  );
18785
18783
  }
18784
+ function overlayEntries(plan, incomingSlide) {
18785
+ return plan.overlayLayers.filter((layer) => layer.side === "outgoing" || incomingSlide !== void 0).flatMap((layer) => layer.elements.map((element) => ({ element, side: layer.side }))).map((entry, zIndex) => ({ ...entry, zIndex }));
18786
+ }
18786
18787
  function MorphTransitionOverlay({
18787
18788
  canvasSize,
18788
18789
  scale,
@@ -18822,43 +18823,44 @@ function MorphTransitionOverlay({
18822
18823
  position: "relative"
18823
18824
  },
18824
18825
  children: [
18825
- morphPlan.outgoingElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
18826
- "div",
18827
- {
18828
- "data-pptx-morph-outgoing": element.id,
18829
- style: { position: "absolute", inset: 0 },
18830
- children: /* @__PURE__ */ jsxRuntime.jsx(
18831
- StaticElementRenderer,
18832
- {
18833
- element,
18834
- activeSlide: outgoingSlide,
18835
- allSlides: [outgoingSlide],
18836
- zIndex: index,
18837
- animation: morphPlan.outgoingAnimations.get(element.id),
18838
- imageAnimation: morphPlan.outgoingImageAnimations.get(element.id)
18839
- }
18840
- )
18841
- },
18842
- element.id
18843
- )),
18844
- incomingSlide && morphPlan.overlayIncomingElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
18845
- "div",
18846
- {
18847
- "data-pptx-morph-lifted": element.id,
18848
- style: { position: "absolute", inset: 0 },
18849
- children: /* @__PURE__ */ jsxRuntime.jsx(
18850
- StaticElementRenderer,
18851
- {
18852
- element,
18853
- activeSlide: incomingSlide,
18854
- allSlides: [incomingSlide],
18855
- zIndex: morphPlan.outgoingElements.length + index,
18856
- animation: morphPlan.overlayIncomingAnimations.get(element.id)
18857
- }
18858
- )
18859
- },
18860
- element.id
18861
- )),
18826
+ overlayEntries(morphPlan, incomingSlide).map(
18827
+ ({ element, side, zIndex }) => side === "outgoing" ? /* @__PURE__ */ jsxRuntime.jsx(
18828
+ "div",
18829
+ {
18830
+ "data-pptx-morph-outgoing": element.id,
18831
+ style: { position: "absolute", inset: 0 },
18832
+ children: /* @__PURE__ */ jsxRuntime.jsx(
18833
+ StaticElementRenderer,
18834
+ {
18835
+ element,
18836
+ activeSlide: outgoingSlide,
18837
+ allSlides: [outgoingSlide],
18838
+ zIndex,
18839
+ animation: morphPlan.outgoingAnimations.get(element.id),
18840
+ imageAnimation: morphPlan.outgoingImageAnimations.get(element.id)
18841
+ }
18842
+ )
18843
+ },
18844
+ element.id
18845
+ ) : incomingSlide && /* @__PURE__ */ jsxRuntime.jsx(
18846
+ "div",
18847
+ {
18848
+ "data-pptx-morph-lifted": element.id,
18849
+ style: { position: "absolute", inset: 0 },
18850
+ children: /* @__PURE__ */ jsxRuntime.jsx(
18851
+ StaticElementRenderer,
18852
+ {
18853
+ element,
18854
+ activeSlide: incomingSlide,
18855
+ allSlides: [incomingSlide],
18856
+ zIndex,
18857
+ animation: morphPlan.overlayIncomingAnimations.get(element.id)
18858
+ }
18859
+ )
18860
+ },
18861
+ element.id
18862
+ )
18863
+ ),
18862
18864
  incomingSlide && morphPlan.crossfadeGroups.map((group, index) => /* @__PURE__ */ jsxRuntime.jsxs(
18863
18865
  "div",
18864
18866
  {
@@ -18923,6 +18925,7 @@ function PresentationTransitionOverlay({
18923
18925
  scale: stageScale,
18924
18926
  morphPlan,
18925
18927
  incomingSlide,
18928
+ incomingTemplateElements = templateElements,
18926
18929
  onComplete
18927
18930
  }) {
18928
18931
  const containerRef = React17.useRef(null);
@@ -19012,7 +19015,7 @@ function PresentationTransitionOverlay({
19012
19015
  {
19013
19016
  layer: fragmented.incoming,
19014
19017
  slide: incomingSlide,
19015
- templateElements,
19018
+ templateElements: incomingTemplateElements,
19016
19019
  canvasSize,
19017
19020
  scale,
19018
19021
  zIndex: animations.outgoingOnTop ? 0 : 10,
@@ -19042,7 +19045,7 @@ function PresentationTransitionOverlay({
19042
19045
  SlideLayer,
19043
19046
  {
19044
19047
  slide: incomingSlide,
19045
- templateElements,
19048
+ templateElements: incomingTemplateElements,
19046
19049
  canvasSize
19047
19050
  }
19048
19051
  )