pptx-react-viewer 4.39.0 → 4.40.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 (85) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/{AiChatPanel-5O6PHRSH.mjs → AiChatPanel-IDP326YW.mjs} +1 -1
  3. package/dist/AiChatPanel-IDP326YW.mjs.br +0 -0
  4. package/dist/AiChatPanel-IDP326YW.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-FNHDAKPB.js → AiChatPanel-KEVVVR7C.js} +9 -9
  6. package/dist/AiChatPanel-KEVVVR7C.js.br +0 -0
  7. package/dist/AiChatPanel-KEVVVR7C.js.gz +0 -0
  8. package/dist/{chunk-43TOUP5U.js → chunk-3PKYNJJG.js} +8 -14
  9. package/dist/chunk-3PKYNJJG.js.br +0 -0
  10. package/dist/chunk-3PKYNJJG.js.gz +0 -0
  11. package/dist/{chunk-5XBS7MCX.mjs → chunk-EQTNWM5Y.mjs} +16 -6
  12. package/dist/chunk-EQTNWM5Y.mjs.br +0 -0
  13. package/dist/chunk-EQTNWM5Y.mjs.gz +0 -0
  14. package/dist/{chunk-UC2VQORY.mjs → chunk-MNT2CXDI.mjs} +9 -15
  15. package/dist/chunk-MNT2CXDI.mjs.br +0 -0
  16. package/dist/chunk-MNT2CXDI.mjs.gz +0 -0
  17. package/dist/{chunk-TYULCCA6.mjs → chunk-MZKSWYSM.mjs} +247 -101
  18. package/dist/chunk-MZKSWYSM.mjs.br +0 -0
  19. package/dist/chunk-MZKSWYSM.mjs.gz +0 -0
  20. package/dist/{chunk-HOKZJLT5.js → chunk-QJ4X7Y7S.js} +258 -248
  21. package/dist/chunk-QJ4X7Y7S.js.br +0 -0
  22. package/dist/chunk-QJ4X7Y7S.js.gz +0 -0
  23. package/dist/{chunk-2LNWGZPT.js → chunk-WM7LBTSB.js} +1546 -1400
  24. package/dist/chunk-WM7LBTSB.js.br +0 -0
  25. package/dist/chunk-WM7LBTSB.js.gz +0 -0
  26. package/dist/i18n/de.cjs +321 -50
  27. package/dist/i18n/de.cjs.br +0 -0
  28. package/dist/i18n/de.cjs.gz +0 -0
  29. package/dist/i18n/de.mjs +321 -50
  30. package/dist/i18n/de.mjs.br +0 -0
  31. package/dist/i18n/de.mjs.gz +0 -0
  32. package/dist/i18n/es.cjs +326 -55
  33. package/dist/i18n/es.cjs.br +0 -0
  34. package/dist/i18n/es.cjs.gz +0 -0
  35. package/dist/i18n/es.mjs +326 -55
  36. package/dist/i18n/es.mjs.br +0 -0
  37. package/dist/i18n/es.mjs.gz +0 -0
  38. package/dist/i18n/fr.cjs +338 -67
  39. package/dist/i18n/fr.cjs.br +0 -0
  40. package/dist/i18n/fr.cjs.gz +0 -0
  41. package/dist/i18n/fr.mjs +338 -67
  42. package/dist/i18n/fr.mjs.br +0 -0
  43. package/dist/i18n/fr.mjs.gz +0 -0
  44. package/dist/i18n/zh-CN.cjs +330 -59
  45. package/dist/i18n/zh-CN.cjs.br +0 -0
  46. package/dist/i18n/zh-CN.cjs.gz +0 -0
  47. package/dist/i18n/zh-CN.mjs +330 -59
  48. package/dist/i18n/zh-CN.mjs.br +0 -0
  49. package/dist/i18n/zh-CN.mjs.gz +0 -0
  50. package/dist/index.js +24 -24
  51. package/dist/index.js.br +0 -0
  52. package/dist/index.js.gz +0 -0
  53. package/dist/index.mjs +3 -3
  54. package/dist/index.mjs.br +0 -0
  55. package/dist/index.mjs.gz +0 -0
  56. package/dist/internals.d.ts +19 -0
  57. package/dist/internals.js +81 -81
  58. package/dist/internals.js.br +0 -0
  59. package/dist/internals.js.gz +0 -0
  60. package/dist/internals.mjs +2 -2
  61. package/dist/internals.mjs.br +0 -0
  62. package/dist/internals.mjs.gz +0 -0
  63. package/dist/viewer/index.js +19 -19
  64. package/dist/viewer/index.js.br +0 -0
  65. package/dist/viewer/index.js.gz +0 -0
  66. package/dist/viewer/index.mjs +3 -3
  67. package/dist/viewer/index.mjs.br +0 -0
  68. package/dist/viewer/index.mjs.gz +0 -0
  69. package/package.json +3 -3
  70. package/dist/AiChatPanel-5O6PHRSH.mjs.br +0 -0
  71. package/dist/AiChatPanel-5O6PHRSH.mjs.gz +0 -0
  72. package/dist/AiChatPanel-FNHDAKPB.js.br +0 -0
  73. package/dist/AiChatPanel-FNHDAKPB.js.gz +0 -0
  74. package/dist/chunk-2LNWGZPT.js.br +0 -0
  75. package/dist/chunk-2LNWGZPT.js.gz +0 -0
  76. package/dist/chunk-43TOUP5U.js.br +0 -0
  77. package/dist/chunk-43TOUP5U.js.gz +0 -0
  78. package/dist/chunk-5XBS7MCX.mjs.br +0 -0
  79. package/dist/chunk-5XBS7MCX.mjs.gz +0 -0
  80. package/dist/chunk-HOKZJLT5.js.br +0 -0
  81. package/dist/chunk-HOKZJLT5.js.gz +0 -0
  82. package/dist/chunk-TYULCCA6.mjs.br +0 -0
  83. package/dist/chunk-TYULCCA6.mjs.gz +0 -0
  84. package/dist/chunk-UC2VQORY.mjs.br +0 -0
  85. package/dist/chunk-UC2VQORY.mjs.gz +0 -0
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk43TOUP5U_js = require('./chunk-43TOUP5U.js');
3
+ var chunk3PKYNJJG_js = require('./chunk-3PKYNJJG.js');
4
4
  var pptx = require('ooxml-ui/pptx');
5
5
  var React17 = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -684,9 +684,9 @@ function serializeHistoryDocument(snapshot) {
684
684
  }
685
685
  function recordExplicitSlideUpdate(past, future, previous, before, label, maxDepth) {
686
686
  if (previous && serializeHistoryDocument(previous) !== serializeHistoryDocument(before)) {
687
- past.push(chunk43TOUP5U_js.cloneHistorySnapshot(previous));
687
+ past.push(chunk3PKYNJJG_js.cloneHistorySnapshot(previous));
688
688
  }
689
- past.push({ ...chunk43TOUP5U_js.cloneHistorySnapshot(before), actionLabel: label });
689
+ past.push({ ...chunk3PKYNJJG_js.cloneHistorySnapshot(before), actionLabel: label });
690
690
  while (past.length > Math.max(1, maxDepth)) {
691
691
  past.shift();
692
692
  }
@@ -752,6 +752,7 @@ function useEditorHistory(input) {
752
752
  const lastHistorySerializedRef = React17.useRef("");
753
753
  const lastCheapHashRef = React17.useRef("");
754
754
  const isApplyingHistoryRef = React17.useRef(false);
755
+ const trackingHeldRef = React17.useRef(false);
755
756
  const unlockHistoryTimerRef = React17.useRef(null);
756
757
  const [canUndo, setCanUndo] = React17.useState(false);
757
758
  const [canRedo, setCanRedo] = React17.useState(false);
@@ -775,8 +776,8 @@ function useEditorHistory(input) {
775
776
  width: canvasSize.width,
776
777
  height: canvasSize.height,
777
778
  activeSlideIndex,
778
- slides: slides.map(chunk43TOUP5U_js.cloneSlide),
779
- templateElementsBySlideId: chunk43TOUP5U_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
779
+ slides: slides.map(chunk3PKYNJJG_js.cloneSlide),
780
+ templateElementsBySlideId: chunk3PKYNJJG_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
780
781
  ...actionLabel ? { actionLabel } : {}
781
782
  };
782
783
  },
@@ -789,9 +790,9 @@ function useEditorHistory(input) {
789
790
  width: snapshot.width,
790
791
  height: snapshot.height
791
792
  });
792
- setSlides(snapshot.slides.map(chunk43TOUP5U_js.cloneSlide));
793
+ setSlides(snapshot.slides.map(chunk3PKYNJJG_js.cloneSlide));
793
794
  setTemplateElementsBySlideId(
794
- chunk43TOUP5U_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
795
+ chunk3PKYNJJG_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
795
796
  );
796
797
  setActiveSlideIndex(Math.min(snapshot.activeSlideIndex, maxSlideIndex));
797
798
  setSelectedElementIds([]);
@@ -830,8 +831,8 @@ function useEditorHistory(input) {
830
831
  const currentSnapshot = buildHistorySnapshot(previousSnapshot.actionLabel);
831
832
  historyFutureRef.current.push(currentSnapshot);
832
833
  isApplyingHistoryRef.current = true;
833
- const nextSnapshot = chunk43TOUP5U_js.cloneHistorySnapshot(previousSnapshot);
834
- lastHistorySnapshotRef.current = chunk43TOUP5U_js.cloneHistorySnapshot(nextSnapshot);
834
+ const nextSnapshot = chunk3PKYNJJG_js.cloneHistorySnapshot(previousSnapshot);
835
+ lastHistorySnapshotRef.current = chunk3PKYNJJG_js.cloneHistorySnapshot(nextSnapshot);
835
836
  lastHistorySerializedRef.current = serializeHistoryDocument(nextSnapshot);
836
837
  applyHistorySnapshot(nextSnapshot);
837
838
  updateHistoryAvailability();
@@ -852,8 +853,8 @@ function useEditorHistory(input) {
852
853
  const currentSnapshot = buildHistorySnapshot(nextSnapshot.actionLabel);
853
854
  historyPastRef.current.push(currentSnapshot);
854
855
  isApplyingHistoryRef.current = true;
855
- const targetSnapshot = chunk43TOUP5U_js.cloneHistorySnapshot(nextSnapshot);
856
- lastHistorySnapshotRef.current = chunk43TOUP5U_js.cloneHistorySnapshot(targetSnapshot);
856
+ const targetSnapshot = chunk3PKYNJJG_js.cloneHistorySnapshot(nextSnapshot);
857
+ lastHistorySnapshotRef.current = chunk3PKYNJJG_js.cloneHistorySnapshot(targetSnapshot);
857
858
  lastHistorySerializedRef.current = serializeHistoryDocument(targetSnapshot);
858
859
  applyHistorySnapshot(targetSnapshot);
859
860
  updateHistoryAvailability();
@@ -871,7 +872,7 @@ function useEditorHistory(input) {
871
872
  historyPastRef.current = [];
872
873
  historyFutureRef.current = [];
873
874
  if (initialSnapshot) {
874
- const clonedInitial = chunk43TOUP5U_js.cloneHistorySnapshot(initialSnapshot);
875
+ const clonedInitial = chunk3PKYNJJG_js.cloneHistorySnapshot(initialSnapshot);
875
876
  lastHistorySnapshotRef.current = clonedInitial;
876
877
  lastHistorySerializedRef.current = serializeHistoryDocument(clonedInitial);
877
878
  } else {
@@ -894,7 +895,7 @@ function useEditorHistory(input) {
894
895
  if (loading || error) {
895
896
  return;
896
897
  }
897
- if (isApplyingHistoryRef.current) {
898
+ if (isApplyingHistoryRef.current || trackingHeldRef.current) {
898
899
  return;
899
900
  }
900
901
  if (hasActivePointerInteraction()) {
@@ -953,8 +954,8 @@ function useEditorHistory(input) {
953
954
  updateHistoryAvailability
954
955
  ]);
955
956
  const commitSlides = (nextSlides, label, beforeSlides = slides) => {
956
- const before = { ...buildHistorySnapshot(), slides: beforeSlides.map(chunk43TOUP5U_js.cloneSlide) };
957
- const after = { ...before, slides: nextSlides.map(chunk43TOUP5U_js.cloneSlide) };
957
+ const before = { ...buildHistorySnapshot(), slides: beforeSlides.map(chunk3PKYNJJG_js.cloneSlide) };
958
+ const after = { ...before, slides: nextSlides.map(chunk3PKYNJJG_js.cloneSlide) };
958
959
  recordExplicitSlideUpdate(
959
960
  historyPastRef.current,
960
961
  historyFutureRef.current,
@@ -963,15 +964,19 @@ function useEditorHistory(input) {
963
964
  label,
964
965
  maxHistoryEntries
965
966
  );
966
- lastHistorySnapshotRef.current = chunk43TOUP5U_js.cloneHistorySnapshot(after);
967
+ lastHistorySnapshotRef.current = chunk3PKYNJJG_js.cloneHistorySnapshot(after);
967
968
  lastHistorySerializedRef.current = serializeHistoryDocument(after);
968
969
  isApplyingHistoryRef.current = false;
969
970
  setSlides(nextSlides);
970
971
  onDirtyRef.current?.();
971
972
  updateHistoryAvailability();
972
973
  };
974
+ const holdTracking = React17.useCallback((held) => {
975
+ trackingHeldRef.current = held;
976
+ }, []);
973
977
  return {
974
978
  commitSlides,
979
+ holdTracking,
975
980
  canUndo,
976
981
  canRedo,
977
982
  undoLabel,
@@ -1146,22 +1151,22 @@ function useZoomViewport({
1146
1151
  selectedElements.forEach((element) => {
1147
1152
  minX = Math.min(minX, element.x);
1148
1153
  minY = Math.min(minY, element.y);
1149
- maxX = Math.max(maxX, element.x + Math.max(element.width, chunk43TOUP5U_js.MIN_ELEMENT_SIZE));
1150
- maxY = Math.max(maxY, element.y + Math.max(element.height, chunk43TOUP5U_js.MIN_ELEMENT_SIZE));
1154
+ maxX = Math.max(maxX, element.x + Math.max(element.width, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE));
1155
+ maxY = Math.max(maxY, element.y + Math.max(element.height, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE));
1151
1156
  });
1152
1157
  if (!Number.isFinite(minX) || !Number.isFinite(minY) || !Number.isFinite(maxX) || !Number.isFinite(maxY)) {
1153
1158
  return;
1154
1159
  }
1155
1160
  const selectionBounds = { minX, minY, maxX, maxY };
1156
- const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunk43TOUP5U_js.MIN_ELEMENT_SIZE);
1157
- const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunk43TOUP5U_js.MIN_ELEMENT_SIZE);
1161
+ const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE);
1162
+ const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE);
1158
1163
  const availableWidth = Math.max(
1159
- effectiveEditorDimensions.width - chunk43TOUP5U_js.ZOOM_TO_SELECTION_PADDING,
1160
- chunk43TOUP5U_js.MIN_ELEMENT_SIZE
1164
+ effectiveEditorDimensions.width - chunk3PKYNJJG_js.ZOOM_TO_SELECTION_PADDING,
1165
+ chunk3PKYNJJG_js.MIN_ELEMENT_SIZE
1161
1166
  );
1162
1167
  const availableHeight = Math.max(
1163
- effectiveEditorDimensions.height - chunk43TOUP5U_js.ZOOM_TO_SELECTION_PADDING,
1164
- chunk43TOUP5U_js.MIN_ELEMENT_SIZE
1168
+ effectiveEditorDimensions.height - chunk3PKYNJJG_js.ZOOM_TO_SELECTION_PADDING,
1169
+ chunk3PKYNJJG_js.MIN_ELEMENT_SIZE
1165
1170
  );
1166
1171
  const targetEditorScale = Math.min(
1167
1172
  availableWidth / boundsWidth,
@@ -4128,8 +4133,8 @@ function useViewerCoreState(_input) {
4128
4133
  const { slides, setSlides, slidesRef } = useSlideState();
4129
4134
  const [templateElementsBySlideId, setTemplateElementsBySlideId] = React17.useState({});
4130
4135
  const [canvasSize, setCanvasSize] = React17.useState({
4131
- width: chunk43TOUP5U_js.DEFAULT_CANVAS_WIDTH,
4132
- height: chunk43TOUP5U_js.DEFAULT_CANVAS_HEIGHT
4136
+ width: chunk3PKYNJJG_js.DEFAULT_CANVAS_WIDTH,
4137
+ height: chunk3PKYNJJG_js.DEFAULT_CANVAS_HEIGHT
4133
4138
  });
4134
4139
  const [slideSizeEmu, setSlideSizeEmu] = React17.useState();
4135
4140
  const [activeSlideIndex, setActiveSlideIndex] = React17.useState(0);
@@ -4160,6 +4165,7 @@ function useViewerCoreState(_input) {
4160
4165
  const [modernCommentAuthors, setModernCommentAuthors] = React17.useState([]);
4161
4166
  const [recentColors, setRecentColors] = React17.useState([]);
4162
4167
  const [theme, setTheme] = React17.useState();
4168
+ const deckStyleHeldRef = React17.useRef(void 0);
4163
4169
  const [tableStyleMap, setTableStyleMap] = React17.useState();
4164
4170
  const [tableStylesDefaultId, setTableStylesDefaultId] = React17.useState();
4165
4171
  const [tableStylesToDelete, setTableStylesToDelete] = React17.useState([]);
@@ -4257,6 +4263,7 @@ function useViewerCoreState(_input) {
4257
4263
  recentColors,
4258
4264
  setRecentColors,
4259
4265
  theme,
4266
+ deckStyleHeldRef,
4260
4267
  setTheme,
4261
4268
  tableStyleMap,
4262
4269
  setTableStyleMap,
@@ -4515,7 +4522,7 @@ function useLoadContent({
4515
4522
  }
4516
4523
  let cancelled = false;
4517
4524
  const token = ++renderTokenRef.current;
4518
- const handler = new chunk43TOUP5U_js.dist_exports.PptxHandler();
4525
+ const handler = new chunk3PKYNJJG_js.dist_exports.PptxHandler();
4519
4526
  const resources = pptx.createPresentationLoadResources(handler);
4520
4527
  const loadBlobUrls = resources.blobUrls;
4521
4528
  (async () => {
@@ -4600,12 +4607,12 @@ function useLoadContent({
4600
4607
  }
4601
4608
  resources.commit();
4602
4609
  handlerRef.current = handler;
4603
- const partition = chunk43TOUP5U_js.partitionTemplateElements(nextSlides);
4610
+ const partition = chunk3PKYNJJG_js.partitionTemplateElements(nextSlides);
4604
4611
  setSlides(partition.slides);
4605
4612
  setTemplateElementsBySlideId(partition.templateElementsBySlideId);
4606
4613
  setCanvasSize({
4607
- width: parsed.width ?? chunk43TOUP5U_js.DEFAULT_CANVAS_WIDTH,
4608
- height: parsed.height ?? chunk43TOUP5U_js.DEFAULT_CANVAS_HEIGHT
4614
+ width: parsed.width ?? chunk3PKYNJJG_js.DEFAULT_CANVAS_WIDTH,
4615
+ height: parsed.height ?? chunk3PKYNJJG_js.DEFAULT_CANVAS_HEIGHT
4609
4616
  });
4610
4617
  setSlideSizeEmu(
4611
4618
  typeof parsed.widthEmu === "number" && typeof parsed.heightEmu === "number" && parsed.widthEmu > 0 && parsed.heightEmu > 0 ? {
@@ -4669,7 +4676,7 @@ function useLoadContent({
4669
4676
  onContentApplied?.();
4670
4677
  } catch (err) {
4671
4678
  if (!cancelled && token === renderTokenRef.current) {
4672
- if (err instanceof chunk43TOUP5U_js.dist_exports.EncryptedFileError) {
4679
+ if (err instanceof chunk3PKYNJJG_js.dist_exports.EncryptedFileError) {
4673
4680
  setIsEncrypted(true);
4674
4681
  } else {
4675
4682
  console.error("[pptx] Failed to load presentation content:", err);
@@ -4794,7 +4801,7 @@ function useTextElementOperations(input) {
4794
4801
  updateSelectedElement
4795
4802
  } = input;
4796
4803
  const liveTextSegments = React17.useCallback(() => {
4797
- if (!selectedElement || !(0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(selectedElement)) {
4804
+ if (!selectedElement || !(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(selectedElement)) {
4798
4805
  return void 0;
4799
4806
  }
4800
4807
  if (selectedElement.id !== inlineEditingElementId) {
@@ -4812,7 +4819,7 @@ function useTextElementOperations(input) {
4812
4819
  }, [selectedElement, inlineEditingElementId, inlineEditingText, inlineEditingSnapshotRef]);
4813
4820
  const updateSelectedTextStyle = React17.useCallback(
4814
4821
  (updates) => {
4815
- if (!selectedElement || !(0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(selectedElement)) {
4822
+ if (!selectedElement || !(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(selectedElement)) {
4816
4823
  return;
4817
4824
  }
4818
4825
  const isLiveEditing = selectedElement.id === inlineEditingElementId;
@@ -4890,7 +4897,7 @@ function useTextElementOperations(input) {
4890
4897
  );
4891
4898
  const toggleSelectedBullets = React17.useCallback(
4892
4899
  (kind) => {
4893
- if (!selectedElement || !(0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(selectedElement)) {
4900
+ if (!selectedElement || !(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(selectedElement)) {
4894
4901
  return;
4895
4902
  }
4896
4903
  const currentSegments = liveTextSegments();
@@ -4941,7 +4948,7 @@ function useTextElementOperations(input) {
4941
4948
  );
4942
4949
  const updateSelectedTextCase = React17.useCallback(
4943
4950
  (mode) => {
4944
- if (!selectedElement || !(0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(selectedElement)) {
4951
+ if (!selectedElement || !(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(selectedElement)) {
4945
4952
  return;
4946
4953
  }
4947
4954
  const isLiveEditing = selectedElement.id === inlineEditingElementId;
@@ -5057,7 +5064,7 @@ function useElementOperations(input) {
5057
5064
  );
5058
5065
  return;
5059
5066
  }
5060
- if (chunk43TOUP5U_js.isTemplateElementId(elementId)) {
5067
+ if (chunk3PKYNJJG_js.isTemplateElementId(elementId)) {
5061
5068
  const slideId = activeSlide?.id;
5062
5069
  if (slideId) {
5063
5070
  setTemplateElementsBySlideId((prev) => ({
@@ -5093,7 +5100,7 @@ function useElementOperations(input) {
5093
5100
  );
5094
5101
  const updateSelectedShapeStyle = React17.useCallback(
5095
5102
  (updates) => {
5096
- if (!selectedElement || !(0, chunk43TOUP5U_js.dist_exports.hasShapeProperties)(selectedElement)) {
5103
+ if (!selectedElement || !(0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(selectedElement)) {
5097
5104
  return;
5098
5105
  }
5099
5106
  updateSelectedElement({
@@ -5297,15 +5304,15 @@ function syncSelectionHandleOverlay(elementNode, elementId, geometry) {
5297
5304
  // src/viewer/hooks/pointer-move-handlers.ts
5298
5305
  function computeResizeGeometry(handle, startX, startY, startWidth, startHeight, dx, dy, snapToGrid, gridSpacingPx, lockAspect = false) {
5299
5306
  const startBox = { x: startX, y: startY, width: startWidth, height: startHeight };
5300
- let resized = pptx.applyResize(startBox, handle, dx, dy, 1, { minSize: chunk43TOUP5U_js.MIN_ELEMENT_SIZE });
5307
+ let resized = pptx.applyResize(startBox, handle, dx, dy, 1, { minSize: chunk3PKYNJJG_js.MIN_ELEMENT_SIZE });
5301
5308
  if (lockAspect) {
5302
- resized = pptx.lockResizeAspect(resized, startBox, handle, chunk43TOUP5U_js.MIN_ELEMENT_SIZE);
5309
+ resized = pptx.lockResizeAspect(resized, startBox, handle, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE);
5303
5310
  }
5304
5311
  const box = { x: resized.x, y: resized.y, width: resized.width, height: resized.height };
5305
5312
  if (!snapToGrid) {
5306
5313
  return box;
5307
5314
  }
5308
- return pptx.snapBoxToGrid(box, handle, gridSpacingPx, chunk43TOUP5U_js.MIN_ELEMENT_SIZE);
5315
+ return pptx.snapBoxToGrid(box, handle, gridSpacingPx, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE);
5309
5316
  }
5310
5317
  function resolveLiveTarget(input) {
5311
5318
  const { livePatcher, editTemplateMode, activeSlide } = input;
@@ -5418,7 +5425,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
5418
5425
  width: el.width,
5419
5426
  height: el.height
5420
5427
  }));
5421
- const snapResult = chunk43TOUP5U_js.computeSnapToShape(
5428
+ const snapResult = chunk3PKYNJJG_js.computeSnapToShape(
5422
5429
  targetX,
5423
5430
  targetY,
5424
5431
  primaryEl.width,
@@ -5492,8 +5499,8 @@ function processResizeMove(e, rs, editorScale, snapToGrid, gridSpacingPx, live)
5492
5499
  rs.lastY = geo.y;
5493
5500
  rs.lastWidth = geo.width;
5494
5501
  rs.lastHeight = geo.height;
5495
- const width = Math.max(geo.width, chunk43TOUP5U_js.MIN_ELEMENT_SIZE);
5496
- const height = Math.max(geo.height, chunk43TOUP5U_js.MIN_ELEMENT_SIZE);
5502
+ const width = Math.max(geo.width, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE);
5503
+ const height = Math.max(geo.height, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE);
5497
5504
  if (rs.domEl) {
5498
5505
  rs.domEl.style.left = `${geo.x}px`;
5499
5506
  rs.domEl.style.top = `${geo.y}px`;
@@ -5586,13 +5593,13 @@ function processPointerUp(input) {
5586
5593
  if (i !== activeSlideIndex) {
5587
5594
  return s;
5588
5595
  }
5589
- const rerouted = chunk43TOUP5U_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
5596
+ const rerouted = chunk3PKYNJJG_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
5590
5597
  if (rerouted.length === 0) {
5591
5598
  return s;
5592
5599
  }
5593
5600
  return {
5594
5601
  ...s,
5595
- elements: chunk43TOUP5U_js.applyReroutedConnectors(s.elements, rerouted)
5602
+ elements: chunk3PKYNJJG_js.applyReroutedConnectors(s.elements, rerouted)
5596
5603
  };
5597
5604
  })
5598
5605
  );
@@ -5644,8 +5651,8 @@ function commitDrag(drag, editTemplateMode, activeSlide, activeSlideIndex, setTe
5644
5651
  }
5645
5652
  return { ...el, x: start.x + dx, y: start.y + dy };
5646
5653
  });
5647
- const rerouted = chunk43TOUP5U_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
5648
- return chunk43TOUP5U_js.applyReroutedConnectors(movedElements, rerouted);
5654
+ const rerouted = chunk3PKYNJJG_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
5655
+ return chunk3PKYNJJG_js.applyReroutedConnectors(movedElements, rerouted);
5649
5656
  };
5650
5657
  if (editTemplateMode) {
5651
5658
  const slideId = activeSlide?.id;
@@ -5833,7 +5840,7 @@ function useCanvasInteractions(input) {
5833
5840
  return;
5834
5841
  }
5835
5842
  const el = elementLookup.get(editId);
5836
- if (el && (0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(el)) {
5843
+ if (el && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el)) {
5837
5844
  const reader = inlineEditingReaderRef?.current;
5838
5845
  const read = reader?.elementId === editId ? reader.read() : void 0;
5839
5846
  if (read?.kind === "unsupported") {
@@ -5880,7 +5887,7 @@ function useCanvasInteractions(input) {
5880
5887
  wasEditable.current = canEdit;
5881
5888
  }, [canEdit]);
5882
5889
  const openEquationEditorForElement = (el) => {
5883
- if (!(0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(el)) {
5890
+ if (!(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el)) {
5884
5891
  return false;
5885
5892
  }
5886
5893
  const eqSeg = el.textSegments?.find((seg) => seg.equationXml);
@@ -5913,7 +5920,7 @@ function useCanvasInteractions(input) {
5913
5920
  justInteractedRef.current = false;
5914
5921
  } else {
5915
5922
  const el = elementLookup.get(elementId);
5916
- if (el && (0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(el) && pptx.canInteractWithElement(el, "textEdit")) {
5923
+ if (el && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) && pptx.canInteractWithElement(el, "textEdit")) {
5917
5924
  if (!openEquationEditorForElement(el)) {
5918
5925
  pptx.setPendingCaretPoint(e);
5919
5926
  setInlineEditingElementId(elementId);
@@ -5939,7 +5946,7 @@ function useCanvasInteractions(input) {
5939
5946
  if (openEquationEditorForElement(el)) {
5940
5947
  return;
5941
5948
  }
5942
- if ((0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(el) && pptx.canInteractWithElement(el, "textEdit")) {
5949
+ if ((0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) && pptx.canInteractWithElement(el, "textEdit")) {
5943
5950
  setInlineEditingElementId(elementId);
5944
5951
  setInlineEditingText(el.text ?? "");
5945
5952
  }
@@ -6404,7 +6411,7 @@ function createStructuredElementHandlers(deps) {
6404
6411
  return;
6405
6412
  }
6406
6413
  const resolved = resolveHyperlinkEditResult(data);
6407
- if (resolved.url && !chunk43TOUP5U_js.isUrlSafe(resolved.url)) {
6414
+ if (resolved.url && !chunk3PKYNJJG_js.isUrlSafe(resolved.url)) {
6408
6415
  return;
6409
6416
  }
6410
6417
  const actionClick = {
@@ -6450,11 +6457,11 @@ function createStructuredElementHandlers(deps) {
6450
6457
  if (!activeSlide) {
6451
6458
  return;
6452
6459
  }
6453
- const preset = chunk43TOUP5U_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
6460
+ const preset = chunk3PKYNJJG_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
6454
6461
  if (!preset) {
6455
6462
  return;
6456
6463
  }
6457
- const defaultPptxAction = (0, chunk43TOUP5U_js.dist_exports.elementActionToPptxAction)({
6464
+ const defaultPptxAction = (0, chunk3PKYNJJG_js.dist_exports.elementActionToPptxAction)({
6458
6465
  trigger: "click",
6459
6466
  type: preset.defaultAction
6460
6467
  });
@@ -6537,7 +6544,7 @@ function useInsertElements(input) {
6537
6544
  width: 300,
6538
6545
  height: 60,
6539
6546
  text: "",
6540
- textStyle: { fontSize: chunk43TOUP5U_js.DEFAULT_TEXT_FONT_SIZE }
6547
+ textStyle: { fontSize: chunk3PKYNJJG_js.DEFAULT_TEXT_FONT_SIZE }
6541
6548
  });
6542
6549
  };
6543
6550
  const handleAddShape = () => {
@@ -6559,7 +6566,7 @@ function useInsertElements(input) {
6559
6566
  }
6560
6567
  });
6561
6568
  };
6562
- const handleAddTable = (rows = chunk43TOUP5U_js.DEFAULT_TABLE_ROWS, columns = chunk43TOUP5U_js.DEFAULT_TABLE_COLUMNS) => {
6569
+ const handleAddTable = (rows = chunk3PKYNJJG_js.DEFAULT_TABLE_ROWS, columns = chunk3PKYNJJG_js.DEFAULT_TABLE_COLUMNS) => {
6563
6570
  if (!activeSlide) {
6564
6571
  return;
6565
6572
  }
@@ -6733,7 +6740,7 @@ function useGroupAlignLayerHandlers(input) {
6733
6740
  history
6734
6741
  } = input;
6735
6742
  const updateElementsOwning = (elementId, updater) => {
6736
- if (editTemplateMode && !chunk43TOUP5U_js.isTemplateElementId(elementId)) {
6743
+ if (editTemplateMode && !chunk3PKYNJJG_js.isTemplateElementId(elementId)) {
6737
6744
  ops.updateSlides(
6738
6745
  (prev) => prev.map(
6739
6746
  (slide, index) => index === activeSlideIndex ? { ...slide, elements: updater(slide.elements) } : slide
@@ -6767,9 +6774,9 @@ function useGroupAlignLayerHandlers(input) {
6767
6774
  return;
6768
6775
  }
6769
6776
  const group = selectedElement;
6770
- const intoTemplate = chunk43TOUP5U_js.isTemplateElementId(group.id);
6777
+ const intoTemplate = chunk3PKYNJJG_js.isTemplateElementId(group.id);
6771
6778
  const childIds = group.children.map(
6772
- (child) => intoTemplate ? chunk43TOUP5U_js.makeCloneId(true, child.id || group.id) : child.id || pptx.generateElementId()
6779
+ (child) => intoTemplate ? chunk3PKYNJJG_js.makeCloneId(true, child.id || group.id) : child.id || pptx.generateElementId()
6773
6780
  );
6774
6781
  const { elements, childIds: usedIds } = pptx.ungroupElements(
6775
6782
  ops.activeElements,
@@ -7101,7 +7108,7 @@ function useSlideManagement(input) {
7101
7108
  if (!src) {
7102
7109
  continue;
7103
7110
  }
7104
- const clone = { ...(0, chunk43TOUP5U_js.dist_exports.duplicateSlide)(src, next.length + 1), id: pptx.makeSlideId() };
7111
+ const clone = { ...(0, chunk3PKYNJJG_js.dist_exports.duplicateSlide)(src, next.length + 1), id: pptx.makeSlideId() };
7105
7112
  next.splice(i + offset + 1, 0, clone);
7106
7113
  offset++;
7107
7114
  }
@@ -7205,7 +7212,7 @@ function createTableMergeHandlers(input) {
7205
7212
  if (!nextCell || nextCell.hMerge || nextCell.vMerge) {
7206
7213
  return;
7207
7214
  }
7208
- const newTableData = chunk43TOUP5U_js.mergeCells(
7215
+ const newTableData = chunk3PKYNJJG_js.mergeCells(
7209
7216
  [
7210
7217
  { row: rowIndex, col: columnIndex },
7211
7218
  { row: rowIndex, col: nextColIdx }
@@ -7213,7 +7220,7 @@ function createTableMergeHandlers(input) {
7213
7220
  td
7214
7221
  );
7215
7222
  const updates = { tableData: newTableData };
7216
- const newRawXml = (0, chunk43TOUP5U_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7223
+ const newRawXml = (0, chunk3PKYNJJG_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7217
7224
  if (newRawXml) {
7218
7225
  updates.rawXml = newRawXml;
7219
7226
  }
@@ -7239,7 +7246,7 @@ function createTableMergeHandlers(input) {
7239
7246
  if (!targetNextCell || targetNextCell.hMerge || targetNextCell.vMerge) {
7240
7247
  return;
7241
7248
  }
7242
- const newTableData = chunk43TOUP5U_js.mergeCells(
7249
+ const newTableData = chunk3PKYNJJG_js.mergeCells(
7243
7250
  [
7244
7251
  { row: rowIndex, col: columnIndex },
7245
7252
  { row: targetNextRowIdx, col: columnIndex }
@@ -7247,7 +7254,7 @@ function createTableMergeHandlers(input) {
7247
7254
  td
7248
7255
  );
7249
7256
  const updates = { tableData: newTableData };
7250
- const newRawXml = (0, chunk43TOUP5U_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7257
+ const newRawXml = (0, chunk3PKYNJJG_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7251
7258
  if (newRawXml) {
7252
7259
  updates.rawXml = newRawXml;
7253
7260
  }
@@ -7262,9 +7269,9 @@ function createTableMergeHandlers(input) {
7262
7269
  return;
7263
7270
  }
7264
7271
  const td = selectedElement.tableData;
7265
- const newTableData = chunk43TOUP5U_js.mergeCells(ts.selectedCells, td);
7272
+ const newTableData = chunk3PKYNJJG_js.mergeCells(ts.selectedCells, td);
7266
7273
  const updates = { tableData: newTableData };
7267
- const newRawXml = (0, chunk43TOUP5U_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7274
+ const newRawXml = (0, chunk3PKYNJJG_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7268
7275
  if (newRawXml) {
7269
7276
  updates.rawXml = newRawXml;
7270
7277
  }
@@ -7281,9 +7288,9 @@ function createTableMergeHandlers(input) {
7281
7288
  }
7282
7289
  const { rowIndex, columnIndex } = ts;
7283
7290
  const td = selectedElement.tableData;
7284
- const newTableData = chunk43TOUP5U_js.splitCell(rowIndex, columnIndex, td);
7291
+ const newTableData = chunk3PKYNJJG_js.splitCell(rowIndex, columnIndex, td);
7285
7292
  const updates = { tableData: newTableData };
7286
- const newRawXml = (0, chunk43TOUP5U_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7293
+ const newRawXml = (0, chunk3PKYNJJG_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7287
7294
  if (newRawXml) {
7288
7295
  updates.rawXml = newRawXml;
7289
7296
  }
@@ -7318,7 +7325,7 @@ function createTableStructHandlers(input) {
7318
7325
  updates.tableData = pptx.setCellText(el, rowIndex, colIndex, text).tableData;
7319
7326
  }
7320
7327
  if (el.rawXml) {
7321
- const newRawXml = (0, chunk43TOUP5U_js.dist_exports.updateCellTextInRawXml)(el, rowIndex, colIndex, text);
7328
+ const newRawXml = (0, chunk3PKYNJJG_js.dist_exports.updateCellTextInRawXml)(el, rowIndex, colIndex, text);
7322
7329
  if (newRawXml) {
7323
7330
  updates.rawXml = newRawXml;
7324
7331
  }
@@ -7342,7 +7349,7 @@ function createTableStructHandlers(input) {
7342
7349
  const { rowIndex, columnIndex: colIndex } = ts;
7343
7350
  const updates = {};
7344
7351
  if (selectedElement.rawXml) {
7345
- const newRawXml = (0, chunk43TOUP5U_js.dist_exports.updateCellTextStyleInRawXml)(
7352
+ const newRawXml = (0, chunk3PKYNJJG_js.dist_exports.updateCellTextStyleInRawXml)(
7346
7353
  selectedElement,
7347
7354
  rowIndex,
7348
7355
  colIndex,
@@ -7509,7 +7516,7 @@ function useExportSaveAs(input) {
7509
7516
  const sourceName = filePath ? filePath.replace(/\\/gu, "/").split("/").pop() : void 0;
7510
7517
  const slideSize = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size;
7511
7518
  const data = {
7512
- slides: chunk43TOUP5U_js.buildSaveSlides(slides, templateElementsBySlideId),
7519
+ slides: chunk3PKYNJJG_js.buildSaveSlides(slides, templateElementsBySlideId),
7513
7520
  width: canvasSize.width,
7514
7521
  height: canvasSize.height,
7515
7522
  widthEmu: slideSize.widthEmu,
@@ -7667,7 +7674,7 @@ async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActi
7667
7674
  }
7668
7675
  function tilesToPdfPage(tilesResult) {
7669
7676
  return tilesResult.tiles.map((tile) => ({
7670
- image: chunk43TOUP5U_js.canvasToJpegData(tile.canvas),
7677
+ image: chunk3PKYNJJG_js.canvasToJpegData(tile.canvas),
7671
7678
  placement: pptx.placeTileOnPage(
7672
7679
  tile,
7673
7680
  tilesResult.fullWidth,
@@ -7700,7 +7707,7 @@ async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide,
7700
7707
  if (pages.length === 0) {
7701
7708
  throw new Error(i18n.translationsEn["pptx.export.errorNoSlidesPdf"]);
7702
7709
  }
7703
- const pdfBlobUrl = chunk43TOUP5U_js.buildPdfFromTiledImageData(pages);
7710
+ const pdfBlobUrl = chunk3PKYNJJG_js.buildPdfFromTiledImageData(pages);
7704
7711
  pptx.downloadDataUrl(pdfBlobUrl, filename);
7705
7712
  }
7706
7713
  async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, slideNotes, filename = "presentation-notes.pdf", options = {}) {
@@ -7730,7 +7737,7 @@ async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSl
7730
7737
  if (pages.length === 0) {
7731
7738
  throw new Error(i18n.translationsEn["pptx.export.errorNoSlidesNotesPdf"]);
7732
7739
  }
7733
- const pdfDataUrl = chunk43TOUP5U_js.buildNotesPdf(pages);
7740
+ const pdfDataUrl = chunk3PKYNJJG_js.buildNotesPdf(pages);
7734
7741
  pptx.downloadDataUrl(pdfDataUrl, filename);
7735
7742
  }
7736
7743
  async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, options = {}) {
@@ -7925,7 +7932,7 @@ function exportAllSlidesToSvg(data, options = {}) {
7925
7932
  continue;
7926
7933
  }
7927
7934
  onProgress?.(processedCount, data.slides.length);
7928
- let svg = chunk43TOUP5U_js.dist_exports.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
7935
+ let svg = chunk3PKYNJJG_js.dist_exports.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
7929
7936
  if (embedFonts && fontFaces?.length) {
7930
7937
  svg = injectFontFaces(svg, fontFaces);
7931
7938
  }
@@ -8514,10 +8521,10 @@ async function applyThemeEditorEdit(input, { colorScheme, fontScheme, name }) {
8514
8521
  return;
8515
8522
  }
8516
8523
  await handler.applyTheme(colorScheme, fontScheme, name);
8517
- const previousMap = theme?.colorScheme ? (0, chunk43TOUP5U_js.dist_exports.buildThemeColorMap)(theme.colorScheme) : {};
8524
+ const previousMap = theme?.colorScheme ? (0, chunk3PKYNJJG_js.dist_exports.buildThemeColorMap)(theme.colorScheme) : {};
8518
8525
  bumpHistory();
8519
8526
  setSlides(
8520
- (slides) => (0, chunk43TOUP5U_js.dist_exports.applyThemeToData)(
8527
+ (slides) => (0, chunk3PKYNJJG_js.dist_exports.applyThemeToData)(
8521
8528
  { slides, theme, themeColorMap: previousMap },
8522
8529
  colorScheme,
8523
8530
  fontScheme,
@@ -8528,8 +8535,8 @@ async function applyThemeEditorEdit(input, { colorScheme, fontScheme, name }) {
8528
8535
  (prev) => Object.fromEntries(
8529
8536
  Object.entries(prev).map(([id, elements]) => [
8530
8537
  id,
8531
- (0, chunk43TOUP5U_js.dist_exports.reResolveElementFonts)(
8532
- (0, chunk43TOUP5U_js.dist_exports.reResolveElementColors)(elements, previousMap, colorScheme),
8538
+ (0, chunk3PKYNJJG_js.dist_exports.reResolveElementFonts)(
8539
+ (0, chunk3PKYNJJG_js.dist_exports.reResolveElementColors)(elements, previousMap, colorScheme),
8533
8540
  theme?.fontScheme,
8534
8541
  fontScheme
8535
8542
  )
@@ -8587,13 +8594,13 @@ function useThemeHandlers(input) {
8587
8594
  return;
8588
8595
  }
8589
8596
  await handler.updateThemeColorScheme(colorScheme);
8590
- const previousMap = theme?.colorScheme ? (0, chunk43TOUP5U_js.dist_exports.buildThemeColorMap)(theme.colorScheme) : {};
8591
- setSlides((prev) => (0, chunk43TOUP5U_js.dist_exports.reResolveSlideColors)(prev, previousMap, colorScheme));
8597
+ const previousMap = theme?.colorScheme ? (0, chunk3PKYNJJG_js.dist_exports.buildThemeColorMap)(theme.colorScheme) : {};
8598
+ setSlides((prev) => (0, chunk3PKYNJJG_js.dist_exports.reResolveSlideColors)(prev, previousMap, colorScheme));
8592
8599
  if (Object.keys(templateElementsBySlideId).length > 0) {
8593
8600
  setTemplateElementsBySlideId((prev) => {
8594
8601
  const next = {};
8595
8602
  for (const [slideId, elements] of Object.entries(prev)) {
8596
- next[slideId] = (0, chunk43TOUP5U_js.dist_exports.reResolveElementColors)(elements, previousMap, colorScheme);
8603
+ next[slideId] = (0, chunk3PKYNJJG_js.dist_exports.reResolveElementColors)(elements, previousMap, colorScheme);
8597
8604
  }
8598
8605
  return next;
8599
8606
  });
@@ -8704,7 +8711,7 @@ function useThemeSwitching(input) {
8704
8711
  }
8705
8712
  try {
8706
8713
  await handler.applyTheme(preset.colorScheme, preset.fontScheme, preset.name);
8707
- const newData = (0, chunk43TOUP5U_js.dist_exports.applyThemeToData)(data, preset.colorScheme, preset.fontScheme, preset.name);
8714
+ const newData = (0, chunk3PKYNJJG_js.dist_exports.applyThemeToData)(data, preset.colorScheme, preset.fontScheme, preset.name);
8708
8715
  onDataChange(newData);
8709
8716
  onThemeChanged?.(preset);
8710
8717
  } catch (error) {
@@ -8721,7 +8728,7 @@ function useThemeSwitching(input) {
8721
8728
  }
8722
8729
  try {
8723
8730
  await handler.applyTheme(colorScheme, fontScheme ?? {}, themeName);
8724
- const newData = (0, chunk43TOUP5U_js.dist_exports.applyThemeToData)(data, colorScheme, fontScheme, themeName);
8731
+ const newData = (0, chunk3PKYNJJG_js.dist_exports.applyThemeToData)(data, colorScheme, fontScheme, themeName);
8725
8732
  onDataChange(newData);
8726
8733
  } catch (error) {
8727
8734
  console.error("Failed to switch to custom theme:", error);
@@ -8733,12 +8740,12 @@ function useThemeSwitching(input) {
8733
8740
  if (!data?.theme?.colorScheme) {
8734
8741
  return void 0;
8735
8742
  }
8736
- return chunk43TOUP5U_js.dist_exports.THEME_PRESETS.find(
8737
- (p) => (0, chunk43TOUP5U_js.dist_exports.themeColorSchemesEqual)(data.theme?.colorScheme, p.colorScheme)
8743
+ return chunk3PKYNJJG_js.dist_exports.THEME_PRESETS.find(
8744
+ (p) => (0, chunk3PKYNJJG_js.dist_exports.themeColorSchemesEqual)(data.theme?.colorScheme, p.colorScheme)
8738
8745
  );
8739
8746
  }, [data?.theme?.colorScheme]);
8740
8747
  return {
8741
- presets: chunk43TOUP5U_js.dist_exports.THEME_PRESETS,
8748
+ presets: chunk3PKYNJJG_js.dist_exports.THEME_PRESETS,
8742
8749
  switchToPreset,
8743
8750
  switchToCustom,
8744
8751
  currentPreset
@@ -8815,7 +8822,7 @@ function usePropertyHandlers(input) {
8815
8822
  }
8816
8823
  try {
8817
8824
  const ab = await file.arrayBuffer();
8818
- const h = new chunk43TOUP5U_js.dist_exports.PptxHandler();
8825
+ const h = new chunk3PKYNJJG_js.dist_exports.PptxHandler();
8819
8826
  const other = await h.load(ab);
8820
8827
  if (!other) {
8821
8828
  return;
@@ -8825,7 +8832,7 @@ function usePropertyHandlers(input) {
8825
8832
  width: canvasSize.width,
8826
8833
  height: canvasSize.height
8827
8834
  };
8828
- setCompareResult(chunk43TOUP5U_js.comparePresentation(cur, other));
8835
+ setCompareResult(chunk3PKYNJJG_js.comparePresentation(cur, other));
8829
8836
  setIsComparePanelOpen(true);
8830
8837
  } catch (err) {
8831
8838
  console.warn("Compare failed:", err);
@@ -9178,7 +9185,7 @@ function useViewerDialogs(input) {
9178
9185
  };
9179
9186
  }
9180
9187
  function computeGridSpacingPx(documentGridSpacing) {
9181
- return pptx.computeGridSpacingPx(documentGridSpacing, chunk43TOUP5U_js.GRID_SIZE);
9188
+ return pptx.computeGridSpacingPx(documentGridSpacing, chunk3PKYNJJG_js.GRID_SIZE);
9182
9189
  }
9183
9190
  function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows, presentationProperties) {
9184
9191
  const activeShow = activeCustomShowId ? customShows.find((show) => show.id === activeCustomShowId) : void 0;
@@ -9187,7 +9194,7 @@ function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows, pre
9187
9194
  }
9188
9195
  function computeSlideSectionGroups(slides, sections) {
9189
9196
  return pptx.groupSlidesBySection(sections, slides).map((group) => ({
9190
- id: group.section?.id ?? (sections.length > 0 ? chunk43TOUP5U_js.UNGROUPED_SECTION_ID : chunk43TOUP5U_js.DEFAULT_SECTION_GROUP_ID),
9197
+ id: group.section?.id ?? (sections.length > 0 ? chunk3PKYNJJG_js.UNGROUPED_SECTION_ID : chunk3PKYNJJG_js.DEFAULT_SECTION_GROUP_ID),
9191
9198
  label: group.section?.name ?? (sections.length > 0 ? "Ungrouped Slides" : "Slides"),
9192
9199
  slideIndexes: group.slideIndexes,
9193
9200
  ...group.section?.color !== void 0 ? { color: group.section.color } : {},
@@ -9232,10 +9239,10 @@ function useDerivedSlideState(input) {
9232
9239
  );
9233
9240
  const slideSectionGroups = React17.useMemo(
9234
9241
  () => computeSlideSectionGroups(slides, sections).map((group) => {
9235
- if (group.id === chunk43TOUP5U_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
9242
+ if (group.id === chunk3PKYNJJG_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
9236
9243
  return { ...group, label: t("pptx.slides.ungroupedSlides") };
9237
9244
  }
9238
- if (group.id === chunk43TOUP5U_js.DEFAULT_SECTION_GROUP_ID && group.label === "Slides") {
9245
+ if (group.id === chunk3PKYNJJG_js.DEFAULT_SECTION_GROUP_ID && group.label === "Slides") {
9239
9246
  return { ...group, label: t("pptx.sections.slides") };
9240
9247
  }
9241
9248
  return group;
@@ -9342,7 +9349,7 @@ function useAnnotationHandlers(input) {
9342
9349
  if (nextMode === "present") {
9343
9350
  presentation.enterPresentMode();
9344
9351
  } else if (mode === "present" && annotations.hasAnyAnnotations) {
9345
- chunk43TOUP5U_js.stopAllPersistentAudio();
9352
+ chunk3PKYNJJG_js.stopAllPersistentAudio();
9346
9353
  if (promptKeepInkAnnotations) {
9347
9354
  pendingModeAfterAnnotationsRef.current = nextMode;
9348
9355
  setShowKeepAnnotationsDialog(true);
@@ -9352,7 +9359,7 @@ function useAnnotationHandlers(input) {
9352
9359
  }
9353
9360
  } else {
9354
9361
  if (mode === "present") {
9355
- chunk43TOUP5U_js.stopAllPersistentAudio();
9362
+ chunk3PKYNJJG_js.stopAllPersistentAudio();
9356
9363
  }
9357
9364
  setMode(nextMode);
9358
9365
  }
@@ -9423,7 +9430,7 @@ function overlayPendingInlineEdit(document2, elementId, text, snapshot, transfor
9423
9430
  (slide) => !elementId ? slide : {
9424
9431
  ...slide,
9425
9432
  elements: slide.elements.map(
9426
- (element) => element.id === elementId && (0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(element) ? {
9433
+ (element) => element.id === elementId && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element) ? {
9427
9434
  ...element,
9428
9435
  text,
9429
9436
  textSegments: pptx.remapTextToSegments(
@@ -9465,6 +9472,7 @@ function useSerialize(input) {
9465
9472
  notesMaster,
9466
9473
  handoutMaster,
9467
9474
  handlerRef,
9475
+ heldDeckRef,
9468
9476
  inlineEditingElementIdRef,
9469
9477
  inlineEditingTextRef,
9470
9478
  inlineEditingSnapshotRef,
@@ -9490,8 +9498,8 @@ function useSerialize(input) {
9490
9498
  const pendingSnapshot = read?.snapshot ?? inlineEditingSnapshotRef?.current;
9491
9499
  const pending = overlayPendingInlineEdit(
9492
9500
  {
9493
- slides,
9494
- templateElementsBySlideId,
9501
+ slides: heldDeckRef?.current?.slides ?? slides,
9502
+ templateElementsBySlideId: heldDeckRef?.current?.templateElementsBySlideId ?? templateElementsBySlideId,
9495
9503
  activeSlideIndex,
9496
9504
  editTemplateMode,
9497
9505
  masterViewTarget,
@@ -9511,14 +9519,14 @@ function useSerialize(input) {
9511
9519
  const pptxGuides = guides.map((g) => ({
9512
9520
  id: g.id,
9513
9521
  orientation: g.axis === "h" ? "horz" : "vert",
9514
- positionEmu: (0, chunk43TOUP5U_js.dist_exports.guidePxToEmu)(g.position)
9522
+ positionEmu: (0, chunk3PKYNJJG_js.dist_exports.guidePxToEmu)(g.position)
9515
9523
  }));
9516
9524
  return {
9517
9525
  ...slide,
9518
9526
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
9519
9527
  };
9520
9528
  });
9521
- const slidesToSave = chunk43TOUP5U_js.buildSaveSlides(slidesWithGuides, pending.templateElementsBySlideId);
9529
+ const slidesToSave = chunk3PKYNJJG_js.buildSaveSlides(slidesWithGuides, pending.templateElementsBySlideId);
9522
9530
  const saveOptions = pptx.buildDeckSaveOptions({
9523
9531
  // Without this the Slide Size card edited a viewer-only pixel value and
9524
9532
  // the saved `p:sldSz` never moved: passing `slideSize` is the only way a
@@ -9699,7 +9707,7 @@ function usePresentationSetup(input) {
9699
9707
  return;
9700
9708
  }
9701
9709
  if (mode === "present" && nextMode !== "present") {
9702
- chunk43TOUP5U_js.stopAllPersistentAudio();
9710
+ chunk3PKYNJJG_js.stopAllPersistentAudio();
9703
9711
  stopAnimationSound();
9704
9712
  const exitHandler = exitModeHandlerRef.current;
9705
9713
  if (exitHandler) {
@@ -9820,12 +9828,12 @@ function useCanvasImagePaste(input) {
9820
9828
  );
9821
9829
  }
9822
9830
  function formatPatchFor(element, format) {
9823
- const updated = chunk43TOUP5U_js.applyFormatToElement(element, format);
9831
+ const updated = chunk3PKYNJJG_js.applyFormatToElement(element, format);
9824
9832
  const updates = {};
9825
- if ((0, chunk43TOUP5U_js.dist_exports.hasShapeProperties)(updated)) {
9833
+ if ((0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(updated)) {
9826
9834
  updates.shapeStyle = updated.shapeStyle;
9827
9835
  }
9828
- if ((0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(updated)) {
9836
+ if ((0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(updated)) {
9829
9837
  updates.textStyle = updated.textStyle;
9830
9838
  }
9831
9839
  return updates;
@@ -9843,7 +9851,7 @@ function useFormatPainterEditing(input) {
9843
9851
  const prevFormatPainterRef = React17.useRef(false);
9844
9852
  React17.useEffect(() => {
9845
9853
  if (formatPainterActive && !prevFormatPainterRef.current && selectedElement) {
9846
- copiedFormatRef.current = chunk43TOUP5U_js.copyFormatFromElement(selectedElement);
9854
+ copiedFormatRef.current = chunk3PKYNJJG_js.copyFormatFromElement(selectedElement);
9847
9855
  } else if (!formatPainterActive) {
9848
9856
  copiedFormatRef.current = null;
9849
9857
  }
@@ -10621,6 +10629,7 @@ function useContentLifecycle(input) {
10621
10629
  notesMaster: state.notesMaster,
10622
10630
  handoutMaster: state.handoutMaster,
10623
10631
  handlerRef,
10632
+ heldDeckRef: state.deckStyleHeldRef,
10624
10633
  inlineEditingElementIdRef: state.inlineEditingElementIdRef,
10625
10634
  inlineEditingTextRef: state.inlineEditingTextRef,
10626
10635
  inlineEditingSnapshotRef: state.inlineEditingSnapshotRef,
@@ -10933,7 +10942,7 @@ function useKeyboardShortcutWiring(input) {
10933
10942
  }
10934
10943
  function stepSelectedFontSize(state, ops, direction) {
10935
10944
  const selected = state.selectedElement;
10936
- const currentPx = (selected && (0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(selected) ? selected.textStyle?.fontSize : void 0) ?? pptx.textFontSizePtToPx(18);
10945
+ const currentPx = (selected && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(selected) ? selected.textStyle?.fontSize : void 0) ?? pptx.textFontSizePtToPx(18);
10937
10946
  const nextPt = pptx.stepFontSizePt(pptx.textFontSizePxToPt(currentPx), direction);
10938
10947
  ops.updateSelectedTextStyle({ fontSize: pptx.textFontSizePtToPx(nextPt) });
10939
10948
  }
@@ -11490,7 +11499,7 @@ function useCollaborationWriteBack(input) {
11490
11499
  getSourceBytes: () => latest.current.getSourceBytes?.() ?? null,
11491
11500
  getSaveOptions: () => latest.current.getSaveOptions?.(),
11492
11501
  getTemplateElements: () => latest.current.templateElementsBySlideId,
11493
- mergeTemplateElements: chunk43TOUP5U_js.buildSaveSlides
11502
+ mergeTemplateElements: chunk3PKYNJJG_js.buildSaveSlides
11494
11503
  }),
11495
11504
  [latest]
11496
11505
  );
@@ -12043,8 +12052,8 @@ function useTouchGestures(input) {
12043
12052
  }
12044
12053
  const recognizer = pptx.createTouchGestureRecognizer({
12045
12054
  getScale: () => scaleRef.current,
12046
- minScale: chunk43TOUP5U_js.MIN_ZOOM_SCALE,
12047
- maxScale: chunk43TOUP5U_js.MAX_ZOOM_SCALE,
12055
+ minScale: chunk3PKYNJJG_js.MIN_ZOOM_SCALE,
12056
+ maxScale: chunk3PKYNJJG_js.MAX_ZOOM_SCALE,
12048
12057
  callbacks: {
12049
12058
  onPinchZoom: (newScale) => callbacksRef.current.onPinchZoom?.(newScale),
12050
12059
  onSwipe: (direction) => callbacksRef.current.onSwipe?.(direction),
@@ -12168,7 +12177,7 @@ function buildCanvasProps(input) {
12168
12177
  if (pptx.shouldConfirmExternalHyperlink(viewerOptions, url) && !window.confirm(buildHyperlinkConfirmMessage(url))) {
12169
12178
  return;
12170
12179
  }
12171
- chunk43TOUP5U_js.safeOpenUrl(url, target);
12180
+ chunk3PKYNJJG_js.safeOpenUrl(url, target);
12172
12181
  };
12173
12182
  const handleActionClick = (elementId, action) => {
12174
12183
  if (mode === "present") {
@@ -12183,9 +12192,9 @@ function buildCanvasProps(input) {
12183
12192
  }
12184
12193
  };
12185
12194
  const handleHyperlinkClick = (url, target) => {
12186
- if (chunk43TOUP5U_js.isPpactionUrl(url)) {
12195
+ if (chunk3PKYNJJG_js.isPpactionUrl(url)) {
12187
12196
  if (mode === "present") {
12188
- const parsed = chunk43TOUP5U_js.parsePpactionUrl(url);
12197
+ const parsed = chunk3PKYNJJG_js.parsePpactionUrl(url);
12189
12198
  if (parsed) {
12190
12199
  presentation.handlePresentationAction({
12191
12200
  action: parsed.action,
@@ -12611,7 +12620,7 @@ function buildToolbarProps(input) {
12611
12620
  markDirty: history.markDirty
12612
12621
  }),
12613
12622
  formatPainterActive: s.formatPainterActive,
12614
- canActivateFormatPainter: chunk43TOUP5U_js.hasCopyableFormat(selectedElement),
12623
+ canActivateFormatPainter: chunk3PKYNJJG_js.hasCopyableFormat(selectedElement),
12615
12624
  onToggleFormatPainter: () => s.setFormatPainterActive((p) => !p),
12616
12625
  isSelectionPaneOpen: s.isSelectionPaneOpen,
12617
12626
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -12934,7 +12943,7 @@ function useViewerBuildingBlocksCore(input) {
12934
12943
  documentGridSpacing: state.viewProperties?.gridSpacing
12935
12944
  });
12936
12945
  const themeColorMap = React17.useMemo(
12937
- () => state.theme?.colorScheme ? (0, chunk43TOUP5U_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
12946
+ () => state.theme?.colorScheme ? (0, chunk3PKYNJJG_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
12938
12947
  [state.theme?.colorScheme]
12939
12948
  );
12940
12949
  const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = usePresentationSetup({
@@ -13509,23 +13518,23 @@ function ColorChangedImage({
13509
13518
  className,
13510
13519
  alt
13511
13520
  }) {
13512
- const tolerance = tolerancePct ?? chunk43TOUP5U_js.DEFAULT_COLOR_CHANGE_TOLERANCE;
13513
- const cacheKey = chunk43TOUP5U_js.buildCacheKey(
13521
+ const tolerance = tolerancePct ?? chunk3PKYNJJG_js.DEFAULT_COLOR_CHANGE_TOLERANCE;
13522
+ const cacheKey = chunk3PKYNJJG_js.buildCacheKey(
13514
13523
  src,
13515
13524
  clrChange.clrFrom,
13516
13525
  clrChange.clrTo,
13517
13526
  tolerance,
13518
13527
  Boolean(clrChange.clrToTransparent)
13519
13528
  );
13520
- const cached = chunk43TOUP5U_js.getCachedResult(cacheKey);
13529
+ const cached = chunk3PKYNJJG_js.getCachedResult(cacheKey);
13521
13530
  const [processedSrc, setProcessedSrc] = React17.useState(cached ?? null);
13522
13531
  React17.useEffect(() => {
13523
- if (chunk43TOUP5U_js.getCachedResult(cacheKey)) {
13524
- setProcessedSrc(chunk43TOUP5U_js.getCachedResult(cacheKey) ?? null);
13532
+ if (chunk3PKYNJJG_js.getCachedResult(cacheKey)) {
13533
+ setProcessedSrc(chunk3PKYNJJG_js.getCachedResult(cacheKey) ?? null);
13525
13534
  return;
13526
13535
  }
13527
13536
  let cancelled = false;
13528
- chunk43TOUP5U_js.applyColorChange(
13537
+ chunk3PKYNJJG_js.applyColorChange(
13529
13538
  src,
13530
13539
  clrChange.clrFrom,
13531
13540
  clrChange.clrTo,
@@ -13533,7 +13542,7 @@ function ColorChangedImage({
13533
13542
  Boolean(clrChange.clrToTransparent)
13534
13543
  ).then((result) => {
13535
13544
  if (!cancelled) {
13536
- chunk43TOUP5U_js.setCachedResult(cacheKey, result.dataUrl);
13545
+ chunk3PKYNJJG_js.setCachedResult(cacheKey, result.dataUrl);
13537
13546
  setProcessedSrc(result.dataUrl);
13538
13547
  }
13539
13548
  return void 0;
@@ -13625,7 +13634,7 @@ function TiledImageLayer({
13625
13634
  cancelled = true;
13626
13635
  };
13627
13636
  }, [src]);
13628
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style: { ...chunk43TOUP5U_js.getImageTilingStyle(element, nativeSize), ...style } });
13637
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style: { ...chunk3PKYNJJG_js.getImageTilingStyle(element, nativeSize), ...style } });
13629
13638
  }
13630
13639
  function renderImageEffectDefinitions(element, excludeDuotone = false) {
13631
13640
  return pptx.getImageSvgFilters(element).filter((definition) => !excludeDuotone || definition.id !== `duotone-${element.id}`).map((definition) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -13694,7 +13703,7 @@ function renderImg(el, style, filter, alt, opacity) {
13694
13703
  ...filter ? { filter } : {},
13695
13704
  ...opacity !== void 0 ? { opacity } : {}
13696
13705
  };
13697
- if (chunk43TOUP5U_js.isImageTiled(el)) {
13706
+ if (chunk3PKYNJJG_js.isImageTiled(el)) {
13698
13707
  const tileSrc = imgSrc(el);
13699
13708
  if (!tileSrc) {
13700
13709
  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" });
@@ -13713,12 +13722,12 @@ function renderImg(el, style, filter, alt, opacity) {
13713
13722
  ] });
13714
13723
  }
13715
13724
  const colorWash = pptx.getImageColorWashStyle(
13716
- (0, chunk43TOUP5U_js.dist_exports.isImageLikeElement)(el) ? el.imageEffects?.colorWash : void 0
13725
+ (0, chunk3PKYNJJG_js.dist_exports.isImageLikeElement)(el) ? el.imageEffects?.colorWash : void 0
13717
13726
  );
13718
13727
  const clrChange = "imageEffects" in el ? el.imageEffects?.clrChange : void 0;
13719
- const duotoneColors = chunk43TOUP5U_js.getDuotoneColors(el);
13728
+ const duotoneColors = chunk3PKYNJJG_js.getDuotoneColors(el);
13720
13729
  const useDuotoneCanvas = Boolean(duotoneColors && !clrChange);
13721
- const filterForImg = useDuotoneCanvas ? chunk43TOUP5U_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
13730
+ const filterForImg = useDuotoneCanvas ? chunk3PKYNJJG_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
13722
13731
  const canvasEffectStyles = {
13723
13732
  ...filterForImg ? { filter: filterForImg } : {},
13724
13733
  ...opacity !== void 0 ? { opacity } : {}
@@ -13794,10 +13803,10 @@ function SlideBackgroundImageLayer({
13794
13803
  style: { zIndex: 0 },
13795
13804
  children: renderImg(
13796
13805
  backgroundElement,
13797
- chunk43TOUP5U_js.getImageRenderStyle(backgroundElement),
13798
- chunk43TOUP5U_js.getImageEffectsFilter(backgroundElement),
13806
+ chunk3PKYNJJG_js.getImageRenderStyle(backgroundElement),
13807
+ chunk3PKYNJJG_js.getImageEffectsFilter(backgroundElement),
13799
13808
  "",
13800
- chunk43TOUP5U_js.getImageEffectsOpacity(backgroundElement)
13809
+ chunk3PKYNJJG_js.getImageEffectsOpacity(backgroundElement)
13801
13810
  )
13802
13811
  }
13803
13812
  );
@@ -14060,6 +14069,7 @@ function ChartElementView({
14060
14069
  onUpdateElement,
14061
14070
  animationState
14062
14071
  }) {
14072
+ const { t } = reactI18next.useTranslation();
14063
14073
  const wrapperRef = React17.useRef(null);
14064
14074
  const { selection, setSelection } = useChartPartSelection();
14065
14075
  const [titleDraft, setTitleDraft] = React17.useState(null);
@@ -14074,7 +14084,7 @@ function ChartElementView({
14074
14084
  pptx.getBarFacePicturePixelSampleVersion
14075
14085
  );
14076
14086
  const viewModel = React17.useMemo(() => {
14077
- return canEdit ? chunk43TOUP5U_js.buildReactChartViewModel(element) : null;
14087
+ return canEdit ? chunk3PKYNJJG_js.buildReactChartViewModel(element) : null;
14078
14088
  }, [canEdit, element, barFacePictureSampleVersion]);
14079
14089
  React17.useEffect(pptx.ensureChartInteractionStyles, []);
14080
14090
  React17.useEffect(() => {
@@ -14179,9 +14189,9 @@ function ChartElementView({
14179
14189
  textStyle: animationState?.textStyle,
14180
14190
  onSelect: chart3D.onSelect,
14181
14191
  onDrag: chart3D.onDrag,
14182
- children: chunk43TOUP5U_js.renderChartElement(renderedElement)
14192
+ children: chunk3PKYNJJG_js.renderChartElement(renderedElement, (key) => t(key))
14183
14193
  }
14184
- ) : chunk43TOUP5U_js.renderChartElement(renderedElement),
14194
+ ) : chunk3PKYNJJG_js.renderChartElement(renderedElement, (key) => t(key)),
14185
14195
  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) }),
14186
14196
  titleDraft !== null && /* @__PURE__ */ jsxRuntime.jsx(
14187
14197
  "input",
@@ -14511,7 +14521,7 @@ function ResizeHandles({
14511
14521
  "aria-label": t("pptx.selectionOverlay.resize", { handle }),
14512
14522
  "data-pptx-handle-kind": "resize",
14513
14523
  "data-pptx-compact": true,
14514
- className: chunk43TOUP5U_js.cn(
14524
+ className: chunk3PKYNJJG_js.cn(
14515
14525
  "absolute z-10 group border-0 bg-transparent p-0",
14516
14526
  RESIZE_DEFAULT_CLASSES,
14517
14527
  posClass,
@@ -14537,7 +14547,7 @@ function ResizeHandles({
14537
14547
  "div",
14538
14548
  {
14539
14549
  "data-pptx-handle-hit": true,
14540
- className: chunk43TOUP5U_js.cn(
14550
+ className: chunk3PKYNJJG_js.cn(
14541
14551
  "absolute -inset-px pointer-events-auto [--pptx-handle-hit-inset:-1px]",
14542
14552
  corner ? "max-md:-inset-1.5 max-md:[--pptx-handle-hit-inset:-6px]" : "max-md:-inset-2 max-md:[--pptx-handle-hit-inset:-8px]"
14543
14553
  ),
@@ -14558,7 +14568,7 @@ function ResizeHandles({
14558
14568
  "aria-label": t("pptx.selectionOverlay.rotate"),
14559
14569
  "data-pptx-handle-kind": "rotate",
14560
14570
  "data-pptx-compact": true,
14561
- className: chunk43TOUP5U_js.cn(
14571
+ className: chunk3PKYNJJG_js.cn(
14562
14572
  "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",
14563
14573
  ROTATE_DEFAULT_CLASSES
14564
14574
  ),
@@ -14628,17 +14638,17 @@ var ConnectorElementRenderer = React17__default.default.memo(
14628
14638
  animationState,
14629
14639
  textStyleOverrideCss
14630
14640
  }) {
14631
- const shapeEl = (0, chunk43TOUP5U_js.dist_exports.hasShapeProperties)(el) ? el : void 0;
14641
+ const shapeEl = (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(el) ? el : void 0;
14632
14642
  const viewWidth = Math.max(el.width, 0);
14633
14643
  const viewHeight = Math.max(el.height, 0);
14634
14644
  const svgWidth = Math.max(el.width, 1);
14635
14645
  const svgHeight = Math.max(el.height, 1);
14636
14646
  const ss = shapeEl?.shapeStyle;
14637
14647
  const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
14638
- const strokeColor = chunk43TOUP5U_js.normalizeHexColor(ss?.strokeColor, chunk43TOUP5U_js.DEFAULT_STROKE_COLOR);
14639
- const strokePaint = chunk43TOUP5U_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
14640
- const dashType = chunk43TOUP5U_js.normalizeStrokeDashType(ss?.strokeDash);
14641
- const dashArray = chunk43TOUP5U_js.getSvgStrokeDasharray(
14648
+ const strokeColor = chunk3PKYNJJG_js.normalizeHexColor(ss?.strokeColor, chunk3PKYNJJG_js.DEFAULT_STROKE_COLOR);
14649
+ const strokePaint = chunk3PKYNJJG_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
14650
+ const dashType = chunk3PKYNJJG_js.normalizeStrokeDashType(ss?.strokeDash);
14651
+ const dashArray = chunk3PKYNJJG_js.getSvgStrokeDasharray(
14642
14652
  dashType,
14643
14653
  Math.max(strokeWidth, 1),
14644
14654
  ss?.customDashSegments
@@ -14649,14 +14659,14 @@ var ConnectorElementRenderer = React17__default.default.memo(
14649
14659
  const markerSeed = el.id.replace(/[^a-zA-Z0-9_-]/gu, "_");
14650
14660
  const startMarkerId = `${markerSeed}-sel-start`;
14651
14661
  const endMarkerId = `${markerSeed}-sel-end`;
14652
- const compoundOffsets = chunk43TOUP5U_js.getCompoundLineOffsets(compoundLine, strokeWidth);
14653
- const compoundWidths = chunk43TOUP5U_js.getCompoundLineWidths(compoundLine, strokeWidth);
14662
+ const compoundOffsets = chunk3PKYNJJG_js.getCompoundLineOffsets(compoundLine, strokeWidth);
14663
+ const compoundWidths = chunk3PKYNJJG_js.getCompoundLineWidths(compoundLine, strokeWidth);
14654
14664
  const strokeCap = pptx.svgLineCap(ss?.lineCap);
14655
- const textEl = (0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(el) ? el : void 0;
14665
+ const textEl = (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) ? el : void 0;
14656
14666
  const connectorText = textEl?.text?.trim() ?? "";
14657
14667
  const connectorTextSegments = textEl?.textSegments;
14658
14668
  const connectorTextStyle = textEl?.textStyle;
14659
- const pathGeometry = shapeEl ? chunk43TOUP5U_js.getConnectorPathGeometry(shapeEl) : {
14669
+ const pathGeometry = shapeEl ? chunk3PKYNJJG_js.getConnectorPathGeometry(shapeEl) : {
14660
14670
  pathData: `M 0 0 L ${viewWidth} ${viewHeight}`,
14661
14671
  startX: 0,
14662
14672
  startY: 0,
@@ -14665,16 +14675,16 @@ var ConnectorElementRenderer = React17__default.default.memo(
14665
14675
  };
14666
14676
  const hitTargetWidth = Math.max(strokeWidth * 3, 14);
14667
14677
  const selColor = selClr === "blue-400" ? "#60a5fa" : "#3b82f6";
14668
- const lineShadow = chunk43TOUP5U_js.buildLineShadowCss(el);
14669
- const lineGlow = chunk43TOUP5U_js.buildLineGlowFilter(el);
14678
+ const lineShadow = chunk3PKYNJJG_js.buildLineShadowCss(el);
14679
+ const lineGlow = chunk3PKYNJJG_js.buildLineGlowFilter(el);
14670
14680
  return /* @__PURE__ */ jsxRuntime.jsxs(
14671
14681
  "div",
14672
14682
  {
14673
14683
  "data-pptx-element": "true",
14674
14684
  "data-element-id": el.id,
14675
- role: chunk43TOUP5U_js.getAriaRole(el, { actionable: false }),
14676
- "aria-label": chunk43TOUP5U_js.getAriaLabel(el),
14677
- "aria-roledescription": chunk43TOUP5U_js.getAriaRoleDescription(el),
14685
+ role: chunk3PKYNJJG_js.getAriaRole(el, { actionable: false }),
14686
+ "aria-label": chunk3PKYNJJG_js.getAriaLabel(el),
14687
+ "aria-roledescription": chunk3PKYNJJG_js.getAriaRoleDescription(el),
14678
14688
  "aria-selected": isSelected ? true : void 0,
14679
14689
  className: "absolute",
14680
14690
  style: {
@@ -14707,14 +14717,14 @@ var ConnectorElementRenderer = React17__default.default.memo(
14707
14717
  style: { overflow: "visible", pointerEvents: "none" },
14708
14718
  children: [
14709
14719
  /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
14710
- chunk43TOUP5U_js.renderConnectorMarker(
14720
+ chunk3PKYNJJG_js.renderConnectorMarker(
14711
14721
  startMarkerId,
14712
14722
  startArrow,
14713
14723
  strokePaint,
14714
14724
  ss?.connectorStartArrowWidth,
14715
14725
  ss?.connectorStartArrowLength
14716
14726
  ),
14717
- chunk43TOUP5U_js.renderConnectorMarker(
14727
+ chunk3PKYNJJG_js.renderConnectorMarker(
14718
14728
  endMarkerId,
14719
14729
  endArrow,
14720
14730
  strokePaint,
@@ -14920,14 +14930,14 @@ function getElementInteractionProps({
14920
14930
  };
14921
14931
  }
14922
14932
  function renderDagDuotoneFilterForElement(el) {
14923
- if (!chunk43TOUP5U_js.hasDagDuotoneEffect(el)) {
14933
+ if (!chunk3PKYNJJG_js.hasDagDuotoneEffect(el)) {
14924
14934
  return null;
14925
14935
  }
14926
14936
  const duotone = el.shapeStyle?.dagDuotone;
14927
14937
  if (!duotone) {
14928
14938
  return null;
14929
14939
  }
14930
- return chunk43TOUP5U_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
14940
+ return chunk3PKYNJJG_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
14931
14941
  }
14932
14942
  function getContainerStyle({
14933
14943
  el,
@@ -14940,7 +14950,7 @@ function getContainerStyle({
14940
14950
  has3DExtrusion,
14941
14951
  templateEditing
14942
14952
  }) {
14943
- const ss = (0, chunk43TOUP5U_js.dist_exports.hasShapeProperties)(el) ? el.shapeStyle : void 0;
14953
+ const ss = (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(el) ? el.shapeStyle : void 0;
14944
14954
  const isPicture = el.type === "picture" || el.type === "image";
14945
14955
  const blurGrowVisible = Boolean(
14946
14956
  ss?.blurGrow && typeof ss.blurRadius === "number" && ss.blurRadius > 0
@@ -14954,10 +14964,10 @@ function getContainerStyle({
14954
14964
  top: isFullscreenMedia ? fs.top : el.y,
14955
14965
  width: isFullscreenMedia ? fs.width : painted.width,
14956
14966
  ...heightStyle,
14957
- transform: isFullscreenMedia ? fs.transform : chunk43TOUP5U_js.getElementTransform(el),
14967
+ transform: isFullscreenMedia ? fs.transform : chunk3PKYNJJG_js.getElementTransform(el),
14958
14968
  transformOrigin: "center",
14959
14969
  overflow: overflowValue,
14960
- clipPath: isPicture ? void 0 : isImg && !has3DExtrusion ? chunk43TOUP5U_js.getCropShapeClipPath(el) : void 0,
14970
+ clipPath: isPicture ? void 0 : isImg && !has3DExtrusion ? chunk3PKYNJJG_js.getCropShapeClipPath(el) : void 0,
14961
14971
  zIndex: isFullscreenMedia ? fs.zIndex : zIndex,
14962
14972
  visibility: animationState?.visible === false ? "hidden" : "visible",
14963
14973
  animation: animationState?.cssAnimation,
@@ -14992,11 +15002,11 @@ function getContainerStyle({
14992
15002
  };
14993
15003
  }
14994
15004
  function shapeParams(element) {
14995
- const style = (0, chunk43TOUP5U_js.dist_exports.hasShapeProperties)(element) ? element.shapeStyle : void 0;
15005
+ const style = (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(element) ? element.shapeStyle : void 0;
14996
15006
  const strokeWidth = pptx.paintedStrokeWidth(style);
14997
- const strokeColor = chunk43TOUP5U_js.normalizeHexColor(style?.strokeColor, chunk43TOUP5U_js.DEFAULT_STROKE_COLOR);
14998
- const fillColor = chunk43TOUP5U_js.normalizeHexColor(style?.fillColor, chunk43TOUP5U_js.DEFAULT_FILL_COLOR);
14999
- const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunk43TOUP5U_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
15007
+ const strokeColor = chunk3PKYNJJG_js.normalizeHexColor(style?.strokeColor, chunk3PKYNJJG_js.DEFAULT_STROKE_COLOR);
15008
+ const fillColor = chunk3PKYNJJG_js.normalizeHexColor(style?.fillColor, chunk3PKYNJJG_js.DEFAULT_FILL_COLOR);
15009
+ const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunk3PKYNJJG_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
15000
15010
  return { hf: hasFill, fc: fillColor, sw: strokeWidth, sc: strokeColor };
15001
15011
  }
15002
15012
  var Extrusion3DOverlay = React17__default.default.memo(
@@ -15101,7 +15111,7 @@ function ShapeEffectOverlay({
15101
15111
  const fillOverlayStyle = overlay ? {
15102
15112
  position: "absolute",
15103
15113
  inset: 0,
15104
- ...(0, chunk43TOUP5U_js.dist_exports.isImageLikeElement)(element) ? chunk43TOUP5U_js.getImageSurfaceMaskStyle(element) : {},
15114
+ ...(0, chunk3PKYNJJG_js.dist_exports.isImageLikeElement)(element) ? chunk3PKYNJJG_js.getImageSurfaceMaskStyle(element) : {},
15105
15115
  background: overlay.color,
15106
15116
  mixBlendMode: overlay.blendMode,
15107
15117
  pointerEvents: "none"
@@ -15305,10 +15315,10 @@ var ElementRenderer = React17__default.default.memo(
15305
15315
  const backgroundAnimationState = pptx.getBackgroundAnimationState(el, presentationElementStates);
15306
15316
  const effectPlacement = pptx.getShapeEffectLayerPlacement(el);
15307
15317
  const visualAnimationState = backgroundAnimationState ?? animationState;
15308
- const isTxt = chunk43TOUP5U_js.isEditableTextElement(el) && allow.textEditable;
15309
- const txtSE = (0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(el) ? el.textStyle : void 0;
15318
+ const isTxt = chunk3PKYNJJG_js.isEditableTextElement(el) && allow.textEditable;
15319
+ const txtSE = (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) ? el.textStyle : void 0;
15310
15320
  const textStyleOverrideCss = pptx.buildTextStyleOverrideCss(el.id, visualAnimationState?.textStyle);
15311
- const ss = chunk43TOUP5U_js.getShapeVisualStyle(
15321
+ const ss = chunk3PKYNJJG_js.getShapeVisualStyle(
15312
15322
  el,
15313
15323
  hf,
15314
15324
  fc,
@@ -15317,9 +15327,9 @@ var ElementRenderer = React17__default.default.memo(
15317
15327
  visualAnimationState?.animatesFill,
15318
15328
  visualAnimationState?.animatesStroke
15319
15329
  );
15320
- const ts = chunk43TOUP5U_js.getTextStyleForElement(el, chunk43TOUP5U_js.DEFAULT_TEXT_COLOR);
15330
+ const ts = chunk3PKYNJJG_js.getTextStyleForElement(el, chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR);
15321
15331
  const isImg = el.type === "picture" || el.type === "image";
15322
- const vs = chunk43TOUP5U_js.renderVectorShape(
15332
+ const vs = chunk3PKYNJJG_js.renderVectorShape(
15323
15333
  el,
15324
15334
  isImg ? false : hf,
15325
15335
  fc,
@@ -15329,10 +15339,10 @@ var ElementRenderer = React17__default.default.memo(
15329
15339
  visualAnimationState?.animatesStroke
15330
15340
  );
15331
15341
  const isModel3D = el.type === "model3d";
15332
- const isConn = chunk43TOUP5U_js.isConnectorOrLineElement(el);
15333
- const shapeStyle3d = (0, chunk43TOUP5U_js.dist_exports.hasShapeProperties)(el) ? el.shapeStyle : void 0;
15342
+ const isConn = chunk3PKYNJJG_js.isConnectorOrLineElement(el);
15343
+ const shapeStyle3d = (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(el) ? el.shapeStyle : void 0;
15334
15344
  const extrusionData = React17.useMemo(
15335
- () => chunk43TOUP5U_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
15345
+ () => chunk3PKYNJJG_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
15336
15346
  [shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height]
15337
15347
  );
15338
15348
  const actionAffordance = useActionAffordance(el, canInteract);
@@ -15422,7 +15432,7 @@ var ElementRenderer = React17__default.default.memo(
15422
15432
  "aria-hidden": aria.hidden ? true : void 0,
15423
15433
  "aria-selected": isSelected ? true : void 0,
15424
15434
  tabIndex: isFocusable ? 0 : -1,
15425
- className: chunk43TOUP5U_js.cn(
15435
+ className: chunk3PKYNJJG_js.cn(
15426
15436
  "absolute",
15427
15437
  "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500",
15428
15438
  cur,
@@ -15495,9 +15505,9 @@ var ElementRenderer = React17__default.default.memo(
15495
15505
  txtSE,
15496
15506
  txtS: ts,
15497
15507
  vecShape: backgroundAnimationState && !isImg ? null : vs,
15498
- imgStyle: chunk43TOUP5U_js.getImageRenderStyle(el),
15499
- imgFilter: chunk43TOUP5U_js.getImageEffectsFilter(el),
15500
- imgOpacity: chunk43TOUP5U_js.getImageEffectsOpacity(el),
15508
+ imgStyle: chunk3PKYNJJG_js.getImageRenderStyle(el),
15509
+ imgFilter: chunk3PKYNJJG_js.getImageEffectsFilter(el),
15510
+ imgOpacity: chunk3PKYNJJG_js.getImageEffectsOpacity(el),
15501
15511
  imgAlt: imageAltText,
15502
15512
  isTxtEl: isTxt,
15503
15513
  media: mediaDataUrls,
@@ -15634,10 +15644,10 @@ function renderStrokeView(view, pressureSensitive, replayStyle, key) {
15634
15644
  }
15635
15645
  function renderInk(el, options) {
15636
15646
  const replay = options?.replay ?? false;
15637
- const strokes = chunk43TOUP5U_js.buildInkGroupStrokes(el, { color: "#000", width: 3 });
15647
+ const strokes = chunk3PKYNJJG_js.buildInkGroupStrokes(el, { color: "#000", width: 3 });
15638
15648
  strokes.some((s) => s.circles || s.nibMarks);
15639
15649
  const pressureSensitive = options?.pressureSensitive;
15640
- const replayStyles = replay ? chunk43TOUP5U_js.getInkReplayStyles(el, options?.replayConfig) : null;
15650
+ const replayStyles = replay ? chunk3PKYNJJG_js.getInkReplayStyles(el, options?.replayConfig) : null;
15641
15651
  return /* @__PURE__ */ jsxRuntime.jsxs(
15642
15652
  "svg",
15643
15653
  {
@@ -15645,7 +15655,7 @@ function renderInk(el, options) {
15645
15655
  viewBox: `0 0 ${Math.max(el.width, 1)} ${Math.max(el.height, 1)}`,
15646
15656
  preserveAspectRatio: "none",
15647
15657
  children: [
15648
- replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk43TOUP5U_js.INK_REPLAY_KEYFRAMES }),
15658
+ replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk3PKYNJJG_js.INK_REPLAY_KEYFRAMES }),
15649
15659
  strokes.map(
15650
15660
  (s, i) => renderStrokeView(s, pressureSensitive, replayStyles?.[i], `${el.id}-ink-${i}`)
15651
15661
  )
@@ -15656,7 +15666,7 @@ function renderInk(el, options) {
15656
15666
  function renderGroup(children, parentGroupFill) {
15657
15667
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full h-full pointer-events-none", children: pptx.filterRenderedElements(children).map((c, childIndex) => {
15658
15668
  const { hf, fc, sw, sc } = shapeParams(c);
15659
- const baseSs = chunk43TOUP5U_js.getShapeVisualStyle(c, hf, fc, sw, sc);
15669
+ const baseSs = chunk3PKYNJJG_js.getShapeVisualStyle(c, hf, fc, sw, sc);
15660
15670
  const inheritedFill = pptx.resolveGroupChildFill(c, parentGroupFill);
15661
15671
  const ss = inheritedFill ? {
15662
15672
  ...baseSs,
@@ -15667,9 +15677,9 @@ function renderGroup(children, parentGroupFill) {
15667
15677
  backgroundPosition: inheritedFill.backgroundPosition
15668
15678
  } : baseSs;
15669
15679
  const isI = c.type === "picture" || c.type === "image";
15670
- const vs = chunk43TOUP5U_js.renderVectorShape(c, isI ? false : hf, fc, sw, sc);
15671
- const ts = chunk43TOUP5U_js.getTextStyleForElement(c, chunk43TOUP5U_js.DEFAULT_TEXT_COLOR);
15672
- const isTxt = chunk43TOUP5U_js.isEditableTextElement(c);
15680
+ const vs = chunk3PKYNJJG_js.renderVectorShape(c, isI ? false : hf, fc, sw, sc);
15681
+ const ts = chunk3PKYNJJG_js.getTextStyleForElement(c, chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR);
15682
+ const isTxt = chunk3PKYNJJG_js.isEditableTextElement(c);
15673
15683
  return /* @__PURE__ */ jsxRuntime.jsxs(
15674
15684
  "div",
15675
15685
  {
@@ -15678,9 +15688,9 @@ function renderGroup(children, parentGroupFill) {
15678
15688
  style: {
15679
15689
  left: c.x,
15680
15690
  top: c.y,
15681
- width: Math.max(c.width, chunk43TOUP5U_js.MIN_ELEMENT_SIZE),
15682
- height: Math.max(c.height, chunk43TOUP5U_js.MIN_ELEMENT_SIZE),
15683
- transform: chunk43TOUP5U_js.getElementTransform(c),
15691
+ width: Math.max(c.width, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE),
15692
+ height: Math.max(c.height, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE),
15693
+ transform: chunk3PKYNJJG_js.getElementTransform(c),
15684
15694
  transformOrigin: "center",
15685
15695
  ...ss,
15686
15696
  ...isI ? {
@@ -15705,8 +15715,8 @@ function renderGroup(children, parentGroupFill) {
15705
15715
  // A nested group: recurse, chaining the inherited fill so a
15706
15716
  // `grpFill` shape under a fill-less sub-group still paints.
15707
15717
  renderGroup(c.children, pptx.getGroupChildParentFill(c, parentGroupFill))
15708
- ) : isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunk43TOUP5U_js.getImageSurfaceStyle(c), children: [
15709
- chunk43TOUP5U_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
15718
+ ) : isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunk3PKYNJJG_js.getImageSurfaceStyle(c), children: [
15719
+ chunk3PKYNJJG_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
15710
15720
  TiledImageLayer,
15711
15721
  {
15712
15722
  element: c,
@@ -15719,7 +15729,7 @@ function renderGroup(children, parentGroupFill) {
15719
15729
  src: "svgData" in c && c.svgData ? c.svgData : c.imageData,
15720
15730
  alt: i18n.translationsEn["pptx.ink.groupChildAlt"],
15721
15731
  className: "pointer-events-none select-none",
15722
- style: chunk43TOUP5U_js.getImageRenderStyle(c),
15732
+ style: chunk3PKYNJJG_js.getImageRenderStyle(c),
15723
15733
  draggable: false
15724
15734
  }
15725
15735
  ),
@@ -15731,7 +15741,7 @@ function renderGroup(children, parentGroupFill) {
15731
15741
  {
15732
15742
  className: "relative z-10 w-full h-full pointer-events-none whitespace-pre-wrap break-words leading-[1.3]",
15733
15743
  style: ts,
15734
- children: chunk43TOUP5U_js.renderTextSegments(c, chunk43TOUP5U_js.DEFAULT_TEXT_COLOR)
15744
+ children: chunk3PKYNJJG_js.renderTextSegments(c, chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR)
15735
15745
  }
15736
15746
  ) : null
15737
15747
  ] })
@@ -15745,8 +15755,8 @@ function renderContentPart(el, options) {
15745
15755
  if (el.inkStrokes && el.inkStrokes.length > 0) {
15746
15756
  const replay = options?.replay ?? false;
15747
15757
  const pressureSensitive = options?.pressureSensitive ?? true;
15748
- const strokes = chunk43TOUP5U_js.buildContentPartStrokes(el);
15749
- const replayStyles = replay ? chunk43TOUP5U_js.getContentPartReplayStyles(el.inkStrokes, options?.replayConfig) : null;
15758
+ const strokes = chunk3PKYNJJG_js.buildContentPartStrokes(el);
15759
+ const replayStyles = replay ? chunk3PKYNJJG_js.getContentPartReplayStyles(el.inkStrokes, options?.replayConfig) : null;
15750
15760
  return /* @__PURE__ */ jsxRuntime.jsxs(
15751
15761
  "svg",
15752
15762
  {
@@ -15754,7 +15764,7 @@ function renderContentPart(el, options) {
15754
15764
  viewBox: `0 0 ${Math.max(el.width, 1)} ${Math.max(el.height, 1)}`,
15755
15765
  preserveAspectRatio: "none",
15756
15766
  children: [
15757
- replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk43TOUP5U_js.INK_REPLAY_KEYFRAMES }),
15767
+ replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk3PKYNJJG_js.INK_REPLAY_KEYFRAMES }),
15758
15768
  strokes.map(
15759
15769
  (s, i) => renderStrokeView(s, pressureSensitive, replayStyles?.[i], `${el.id}-cp-ink-${i}`)
15760
15770
  )
@@ -15981,9 +15991,9 @@ function useInlineListEditor(element, rootRef, onChange, onModelReplacement) {
15981
15991
  collaboration: connected,
15982
15992
  model: pptx.createInlineListModelObserver(element),
15983
15993
  activationSelection,
15984
- children: seed && !connected ? chunk43TOUP5U_js.renderTextSegments(
15994
+ children: seed && !connected ? chunk3PKYNJJG_js.renderTextSegments(
15985
15995
  element,
15986
- chunk43TOUP5U_js.DEFAULT_TEXT_COLOR,
15996
+ chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR,
15987
15997
  void 0,
15988
15998
  void 0,
15989
15999
  void 0,
@@ -16153,7 +16163,7 @@ function InlineTextEditor({
16153
16163
  seedRef.current = {
16154
16164
  initialText,
16155
16165
  hasRichSegments: Boolean(
16156
- (0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(element) && element.textSegments && element.textSegments.length > 0
16166
+ (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element) && element.textSegments && element.textSegments.length > 0
16157
16167
  )
16158
16168
  };
16159
16169
  }
@@ -16219,8 +16229,8 @@ function InlineTextEditor({
16219
16229
  pending.endOffset
16220
16230
  );
16221
16231
  });
16222
- const warpStyle = chunk43TOUP5U_js.getTextWarpStyle(textStyleRaw);
16223
- const compensationTransform = chunk43TOUP5U_js.getTextCompensationTransform(element);
16232
+ const warpStyle = chunk3PKYNJJG_js.getTextWarpStyle(textStyleRaw);
16233
+ const compensationTransform = chunk3PKYNJJG_js.getTextCompensationTransform(element);
16224
16234
  const warpTransform = warpStyle?.transform;
16225
16235
  const mergedTransform = [compensationTransform, warpTransform].filter(Boolean).join(" ") || void 0;
16226
16236
  const wrapperStyle = {
@@ -16231,7 +16241,7 @@ function InlineTextEditor({
16231
16241
  transformOrigin: warpStyle?.transformOrigin || "center"
16232
16242
  };
16233
16243
  const nextInlineStyleValue = (property) => {
16234
- if (!(0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(element)) {
16244
+ if (!(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element)) {
16235
16245
  return true;
16236
16246
  }
16237
16247
  const result = pptx.getInlineEditorSelectionResult(element.textSegments);
@@ -16308,7 +16318,7 @@ function InlineTextEditor({
16308
16318
  const text = e.clipboardData.getData("text/plain");
16309
16319
  document.execCommand("insertText", false, text);
16310
16320
  },
16311
- children: list.seed ? list.children : seed.hasRichSegments ? chunk43TOUP5U_js.renderTextSegments(element, chunk43TOUP5U_js.DEFAULT_TEXT_COLOR) : seed.initialText
16321
+ children: list.seed ? list.children : seed.hasRichSegments ? chunk3PKYNJJG_js.renderTextSegments(element, chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR) : seed.initialText
16312
16322
  },
16313
16323
  list.seed?.paragraphs[0].token ?? "plain"
16314
16324
  );
@@ -17245,7 +17255,7 @@ function SmartArtRendererImpl({
17245
17255
  if (!onUpdateElement || !pptx.shouldCommitSmartArtNodeText(smartArtData, nodeId, text)) {
17246
17256
  return;
17247
17257
  }
17248
- const updated = (0, chunk43TOUP5U_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text);
17258
+ const updated = (0, chunk3PKYNJJG_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text);
17249
17259
  const box = { width: element.width, height: element.height };
17250
17260
  const reflowed = pptx.rebuildDrawingShapesIfCleared(
17251
17261
  updated,
@@ -17261,7 +17271,7 @@ function SmartArtRendererImpl({
17261
17271
  if (!onUpdateElement) {
17262
17272
  return;
17263
17273
  }
17264
- const next = (0, chunk43TOUP5U_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, { fillColor: fill });
17274
+ const next = (0, chunk3PKYNJJG_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, { fillColor: fill });
17265
17275
  if (next !== smartArtData) {
17266
17276
  const box = { width: element.width, height: element.height };
17267
17277
  const reflowed = pptx.rebuildDrawingShapesIfCleared(
@@ -17455,7 +17465,7 @@ function groupIntoParagraphs(element, fieldContext) {
17455
17465
  element,
17456
17466
  fieldContext ? (seg) => {
17457
17467
  if (seg.fieldType) {
17458
- const substituted = chunk43TOUP5U_js.substituteFieldText(
17468
+ const substituted = chunk3PKYNJJG_js.substituteFieldText(
17459
17469
  seg.text,
17460
17470
  seg.fieldType,
17461
17471
  fieldContext,
@@ -17490,13 +17500,13 @@ function getSegmentTspanProps(segment, element, fallbackColor) {
17490
17500
  if (s.strikethrough) {
17491
17501
  decos.push("line-through");
17492
17502
  }
17493
- const fill = s.hyperlink ? chunk43TOUP5U_js.normalizeHexColor(s.color || element.textStyle?.color, chunk43TOUP5U_js.HYPERLINK_COLOR) : chunk43TOUP5U_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
17503
+ const fill = s.hyperlink ? chunk3PKYNJJG_js.normalizeHexColor(s.color || element.textStyle?.color, chunk3PKYNJJG_js.HYPERLINK_COLOR) : chunk3PKYNJJG_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
17494
17504
  return {
17495
17505
  fill,
17496
- fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunk43TOUP5U_js.DEFAULT_TEXT_FONT_SIZE,
17506
+ fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunk3PKYNJJG_js.DEFAULT_TEXT_FONT_SIZE,
17497
17507
  fontWeight: s.bold ? 700 : 400,
17498
17508
  fontStyle: s.italic ? "italic" : void 0,
17499
- fontFamily: s.fontFamily || element.textStyle?.fontFamily ? (0, chunk43TOUP5U_js.dist_exports.getSubstituteFontFamily)(s.fontFamily || element.textStyle?.fontFamily || "") : chunk43TOUP5U_js.DEFAULT_FONT_FAMILY,
17509
+ fontFamily: s.fontFamily || element.textStyle?.fontFamily ? (0, chunk3PKYNJJG_js.dist_exports.getSubstituteFontFamily)(s.fontFamily || element.textStyle?.fontFamily || "") : chunk3PKYNJJG_js.DEFAULT_FONT_FAMILY,
17500
17510
  textDecoration: decos.length > 0 ? decos.join(" ") : void 0
17501
17511
  };
17502
17512
  }
@@ -17504,8 +17514,8 @@ function resolveSegmentFont(segment, element) {
17504
17514
  const s = segment.style || {};
17505
17515
  const family = s.fontFamily || element.textStyle?.fontFamily;
17506
17516
  return {
17507
- fontFamily: family ? (0, chunk43TOUP5U_js.dist_exports.getSubstituteFontFamily)(family) : chunk43TOUP5U_js.DEFAULT_FONT_FAMILY,
17508
- fontSizePx: s.fontSize ?? element.textStyle?.fontSize ?? chunk43TOUP5U_js.DEFAULT_TEXT_FONT_SIZE,
17517
+ fontFamily: family ? (0, chunk3PKYNJJG_js.dist_exports.getSubstituteFontFamily)(family) : chunk3PKYNJJG_js.DEFAULT_FONT_FAMILY,
17518
+ fontSizePx: s.fontSize ?? element.textStyle?.fontSize ?? chunk3PKYNJJG_js.DEFAULT_TEXT_FONT_SIZE,
17509
17519
  bold: s.bold ?? element.textStyle?.bold,
17510
17520
  italic: s.italic ?? element.textStyle?.italic
17511
17521
  };
@@ -17571,7 +17581,7 @@ function WarpedText({
17571
17581
  fallbackColor,
17572
17582
  fieldContext
17573
17583
  }) {
17574
- if (!(0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(element)) {
17584
+ if (!(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element)) {
17575
17585
  return null;
17576
17586
  }
17577
17587
  const textEl = element;
@@ -17589,9 +17599,9 @@ function WarpedText({
17589
17599
  const warpAdj2 = textEl.textStyle?.textWarpAdj2;
17590
17600
  const align = textEl.textStyle?.align ?? "center";
17591
17601
  const { startOffset, textAnchor } = getAlignmentProps(align);
17592
- const baseFontSize = textEl.textStyle?.fontSize ?? chunk43TOUP5U_js.DEFAULT_TEXT_FONT_SIZE;
17593
- const baseFontFamily = textEl.textStyle?.fontFamily ? (0, chunk43TOUP5U_js.dist_exports.getSubstituteFontFamily)(textEl.textStyle.fontFamily) : chunk43TOUP5U_js.DEFAULT_FONT_FAMILY;
17594
- const baseFill = chunk43TOUP5U_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
17602
+ const baseFontSize = textEl.textStyle?.fontSize ?? chunk3PKYNJJG_js.DEFAULT_TEXT_FONT_SIZE;
17603
+ const baseFontFamily = textEl.textStyle?.fontFamily ? (0, chunk3PKYNJJG_js.dist_exports.getSubstituteFontFamily)(textEl.textStyle.fontFamily) : chunk3PKYNJJG_js.DEFAULT_FONT_FAMILY;
17604
+ const baseFill = chunk3PKYNJJG_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
17595
17605
  if (pptx.hasGlyphEnvelope(preset)) {
17596
17606
  const perLine = pptx.buildGlyphEnvelopeBlock(
17597
17607
  preset,
@@ -17691,7 +17701,7 @@ function WarpedText({
17691
17701
  );
17692
17702
  }
17693
17703
  var GLYPH_BY_SHAPE = Object.fromEntries(
17694
- chunk43TOUP5U_js.ACTION_BUTTON_PRESETS.map((p) => [p.shapeType, p.iconPath])
17704
+ chunk3PKYNJJG_js.ACTION_BUTTON_PRESETS.map((p) => [p.shapeType, p.iconPath])
17695
17705
  );
17696
17706
  GLYPH_BY_SHAPE["actionButtonForwardOrNext"] = GLYPH_BY_SHAPE["actionButtonForwardNext"];
17697
17707
  GLYPH_BY_SHAPE["actionButtonBackOrPrevious"] = GLYPH_BY_SHAPE["actionButtonBackPrevious"];
@@ -17761,11 +17771,11 @@ function renderTextElementBody(options) {
17761
17771
  const isLinkedTextBox = pptx.isLinkedTextBox(el);
17762
17772
  const linkedSegments = pptx.getOverflowSegments(el, slideElements);
17763
17773
  const useSvgWarp = pptx.shouldUseSvgWarp(
17764
- (0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(el) ? el.textStyle?.textWarpPreset : void 0
17774
+ (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) ? el.textStyle?.textWarpPreset : void 0
17765
17775
  );
17766
- const scene3dStyle = (0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(el) ? chunk43TOUP5U_js.buildTextBody3DSceneStyle(el.textStyle, { width: el.width, height: el.height }) : void 0;
17776
+ const scene3dStyle = (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) ? chunk3PKYNJJG_js.buildTextBody3DSceneStyle(el.textStyle, { width: el.width, height: el.height }) : void 0;
17767
17777
  const rotationTransform = pptx.getTextBodyRotationTransform(el);
17768
- const composedTransform = [rotationTransform, chunk43TOUP5U_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
17778
+ const composedTransform = [rotationTransform, chunk3PKYNJJG_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
17769
17779
  const transformStyle = {
17770
17780
  transform: composedTransform,
17771
17781
  // A COM-measured homography (`scene3dStyle.transformOrigin === '0 0'`)
@@ -17795,18 +17805,18 @@ function renderTextElementBody(options) {
17795
17805
  shouldRenderText && (useSvgWarp ? /* @__PURE__ */ jsxRuntime.jsx(
17796
17806
  "div",
17797
17807
  {
17798
- className: chunk43TOUP5U_js.cn(
17808
+ className: chunk3PKYNJJG_js.cn(
17799
17809
  "relative z-10 w-full h-full",
17800
17810
  onHyperlinkClick ? "" : "pointer-events-none"
17801
17811
  ),
17802
- style: { ...chunk43TOUP5U_js.getTextLayoutStyle(el), ...transformStyle },
17812
+ style: { ...chunk3PKYNJJG_js.getTextLayoutStyle(el), ...transformStyle },
17803
17813
  children: /* @__PURE__ */ jsxRuntime.jsx(
17804
17814
  WarpedText,
17805
17815
  {
17806
17816
  element: el,
17807
17817
  width: el.width,
17808
17818
  height: el.height,
17809
- fallbackColor: chunk43TOUP5U_js.DEFAULT_TEXT_COLOR,
17819
+ fallbackColor: chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR,
17810
17820
  findHighlights: findHl,
17811
17821
  fieldContext
17812
17822
  }
@@ -17815,19 +17825,19 @@ function renderTextElementBody(options) {
17815
17825
  ) : /* @__PURE__ */ jsxRuntime.jsx(
17816
17826
  "div",
17817
17827
  {
17818
- className: chunk43TOUP5U_js.cn(
17828
+ className: chunk3PKYNJJG_js.cn(
17819
17829
  "relative z-10 w-full h-full whitespace-pre-wrap break-words leading-[1.3]",
17820
17830
  onHyperlinkClick ? "" : "pointer-events-none"
17821
17831
  ),
17822
17832
  style: {
17823
- ...chunk43TOUP5U_js.getTextLayoutStyle(el),
17833
+ ...chunk3PKYNJJG_js.getTextLayoutStyle(el),
17824
17834
  ...txtS,
17825
- ...chunk43TOUP5U_js.getTextWarpStyle(txtSE),
17835
+ ...chunk3PKYNJJG_js.getTextWarpStyle(txtSE),
17826
17836
  ...transformStyle
17827
17837
  },
17828
- children: chunk43TOUP5U_js.renderTextSegments(
17838
+ children: chunk3PKYNJJG_js.renderTextSegments(
17829
17839
  el,
17830
- chunk43TOUP5U_js.DEFAULT_TEXT_COLOR,
17840
+ chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR,
17831
17841
  void 0,
17832
17842
  findHl,
17833
17843
  onHyperlinkClick,
@@ -18146,7 +18156,7 @@ function renderBody(options) {
18146
18156
  );
18147
18157
  }
18148
18158
  if (isImg) {
18149
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunk43TOUP5U_js.getImageSurfaceStyle(el), children: [
18159
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunk3PKYNJJG_js.getImageSurfaceStyle(el), children: [
18150
18160
  renderImg(el, imgStyle, imgFilter, imgAlt, imgOpacity),
18151
18161
  vecShape ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0", children: vecShape }) : null
18152
18162
  ] });
@@ -18163,7 +18173,7 @@ function renderBody(options) {
18163
18173
  textDirection: txtSE?.textDirection,
18164
18174
  textStyle: txtS,
18165
18175
  textStyleRaw: txtSE,
18166
- layoutStyle: chunk43TOUP5U_js.getTextLayoutStyle(el),
18176
+ layoutStyle: chunk3PKYNJJG_js.getTextLayoutStyle(el),
18167
18177
  element: el,
18168
18178
  onCommit,
18169
18179
  onCancel,
@@ -18174,7 +18184,7 @@ function renderBody(options) {
18174
18184
  ] });
18175
18185
  }
18176
18186
  if (el.type === "table") {
18177
- return chunk43TOUP5U_js.renderTableElement(el, txtS, {
18187
+ return chunk3PKYNJJG_js.renderTableElement(el, txtS, {
18178
18188
  editable: isSel,
18179
18189
  selectedCell: isSel ? tableSt : null,
18180
18190
  onSelectCell: onCellSel,
@@ -18207,7 +18217,7 @@ function renderBody(options) {
18207
18217
  );
18208
18218
  }
18209
18219
  if (el.type === "media") {
18210
- return chunk43TOUP5U_js.renderMediaElement(el, media, {
18220
+ return chunk3PKYNJJG_js.renderMediaElement(el, media, {
18211
18221
  // Present mode autoplays every media element on the active slide,
18212
18222
  // not only ones persisted with their own `autoPlay` flag (matching
18213
18223
  // the other four bindings' unconditional `presenting`-gated
@@ -18230,7 +18240,7 @@ function renderBody(options) {
18230
18240
  onPlayStateChange: handleMediaPlayStateChange
18231
18241
  });
18232
18242
  }
18233
- if (doInk && (0, chunk43TOUP5U_js.dist_exports.isInkElement)(el)) {
18243
+ if (doInk && (0, chunk3PKYNJJG_js.dist_exports.isInkElement)(el)) {
18234
18244
  return renderInk(el, {
18235
18245
  replay: isPresentationPassive,
18236
18246
  pressureSensitive: true
@@ -18259,27 +18269,27 @@ function renderBody(options) {
18259
18269
  }
18260
18270
  return renderGroup(el.children, pptx.getGroupChildParentFill(el));
18261
18271
  }
18262
- if (chunk43TOUP5U_js.shouldRenderFallbackLabel(el, isTxtEl)) {
18263
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk43TOUP5U_js.getElementLabel(el) });
18272
+ if (chunk3PKYNJJG_js.shouldRenderFallbackLabel(el, isTxtEl)) {
18273
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3PKYNJJG_js.getElementLabel(el) });
18264
18274
  }
18265
18275
  return renderTextElementBody(options);
18266
18276
  }
18267
18277
  function defaultTextColorForFill(fillColor) {
18268
18278
  const hex = String(fillColor ?? "").replace(/^#/u, "");
18269
18279
  if (!/^[0-9a-f]{6}$/iu.test(hex)) {
18270
- return chunk43TOUP5U_js.DEFAULT_TEXT_COLOR;
18280
+ return chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR;
18271
18281
  }
18272
18282
  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);
18273
18283
  const luminance = channels[0] * 0.2126 + channels[1] * 0.7152 + channels[2] * 0.0722;
18274
- return luminance > 0.179 ? chunk43TOUP5U_js.DEFAULT_TEXT_COLOR : "#ffffff";
18284
+ return luminance > 0.179 ? chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR : "#ffffff";
18275
18285
  }
18276
18286
  function getStaticElementVisualState(element, parentGroupFill) {
18277
- const style = (0, chunk43TOUP5U_js.dist_exports.hasShapeProperties)(element) ? element.shapeStyle : void 0;
18278
- const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunk43TOUP5U_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
18279
- const fill = chunk43TOUP5U_js.normalizeHexColor(style?.fillColor, chunk43TOUP5U_js.DEFAULT_FILL_COLOR);
18287
+ const style = (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(element) ? element.shapeStyle : void 0;
18288
+ const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunk3PKYNJJG_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
18289
+ const fill = chunk3PKYNJJG_js.normalizeHexColor(style?.fillColor, chunk3PKYNJJG_js.DEFAULT_FILL_COLOR);
18280
18290
  const strokeWidth = pptx.paintedStrokeWidth(style);
18281
- const stroke = chunk43TOUP5U_js.normalizeHexColor(style?.strokeColor, chunk43TOUP5U_js.DEFAULT_STROKE_COLOR);
18282
- const baseVisualStyle = chunk43TOUP5U_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
18291
+ const stroke = chunk3PKYNJJG_js.normalizeHexColor(style?.strokeColor, chunk3PKYNJJG_js.DEFAULT_STROKE_COLOR);
18292
+ const baseVisualStyle = chunk3PKYNJJG_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
18283
18293
  const inheritedFill = pptx.resolveGroupChildFill(element, parentGroupFill);
18284
18294
  const visualStyle = inheritedFill ? {
18285
18295
  ...baseVisualStyle,
@@ -18289,13 +18299,13 @@ function getStaticElementVisualState(element, parentGroupFill) {
18289
18299
  backgroundSize: inheritedFill.backgroundSize,
18290
18300
  backgroundPosition: inheritedFill.backgroundPosition
18291
18301
  } : baseVisualStyle;
18292
- const textStyle = chunk43TOUP5U_js.getTextStyleForElement(
18302
+ const textStyle = chunk3PKYNJJG_js.getTextStyleForElement(
18293
18303
  element,
18294
- element.type === "shape" && hasFill ? defaultTextColorForFill(fill) : chunk43TOUP5U_js.DEFAULT_TEXT_COLOR
18304
+ element.type === "shape" && hasFill ? defaultTextColorForFill(fill) : chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR
18295
18305
  );
18296
18306
  const isImage = element.type === "picture" || element.type === "image";
18297
- const letsTextOverflow = (0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(element) && element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
18298
- const shapeType = (0, chunk43TOUP5U_js.dist_exports.hasShapeProperties)(element) ? element.shapeType : void 0;
18307
+ const letsTextOverflow = (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element) && element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
18308
+ const shapeType = (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(element) ? element.shapeType : void 0;
18299
18309
  const isCallout = pptx.isWedgeCalloutPresetShape(shapeType) || String(shapeType ?? "").toLowerCase().includes("callout");
18300
18310
  return {
18301
18311
  hasFill,
@@ -18316,7 +18326,7 @@ function getStaticElementInteractionState(element, hasActionHandler, exposeEleme
18316
18326
  return { action, isActionable, contractRole };
18317
18327
  }
18318
18328
  function getStaticElementWrapperClassName(element, visual, positioned, isActionable) {
18319
- const overflowClass = visual.isImage || element.type === "group" || chunk43TOUP5U_js.isConnectorOrLineElement(element) || visual.isCallout || visual.letsTextOverflow ? "" : "overflow-hidden";
18329
+ const overflowClass = visual.isImage || element.type === "group" || chunk3PKYNJJG_js.isConnectorOrLineElement(element) || visual.isCallout || visual.letsTextOverflow ? "" : "overflow-hidden";
18320
18330
  const pointerClass = isActionable ? "pointer-events-auto cursor-pointer" : "pointer-events-none";
18321
18331
  return `${positioned ? "absolute" : "relative"} ${overflowClass} ${pointerClass}`;
18322
18332
  }
@@ -18399,7 +18409,7 @@ function StaticElementRendererImpl({
18399
18409
  top: positioned ? element.y : void 0,
18400
18410
  width: positioned ? Math.max(element.width, 1) : "100%",
18401
18411
  height: positioned ? Math.max(element.height, 1) : "100%",
18402
- transform: positioned ? chunk43TOUP5U_js.getElementTransform(element) : void 0,
18412
+ transform: positioned ? chunk3PKYNJJG_js.getElementTransform(element) : void 0,
18403
18413
  transformOrigin: "center",
18404
18414
  zIndex,
18405
18415
  ...visualStyle,
@@ -18440,20 +18450,20 @@ function StaticElementRendererImpl({
18440
18450
  isEditing: false,
18441
18451
  editText: "",
18442
18452
  spellCheck: false,
18443
- txtSE: (0, chunk43TOUP5U_js.dist_exports.hasTextProperties)(element) ? element.textStyle : void 0,
18453
+ txtSE: (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element) ? element.textStyle : void 0,
18444
18454
  txtS: textStyle,
18445
- vecShape: chunk43TOUP5U_js.renderVectorShape(
18455
+ vecShape: chunk3PKYNJJG_js.renderVectorShape(
18446
18456
  element,
18447
18457
  isImage ? false : hasFill,
18448
18458
  fill,
18449
18459
  strokeWidth,
18450
18460
  stroke
18451
18461
  ),
18452
- imgStyle: imageAnimation ? { ...chunk43TOUP5U_js.getImageRenderStyle(element), animation: imageAnimation } : chunk43TOUP5U_js.getImageRenderStyle(element),
18453
- imgFilter: chunk43TOUP5U_js.getImageEffectsFilter(element),
18454
- imgOpacity: chunk43TOUP5U_js.getImageEffectsOpacity(element),
18462
+ imgStyle: imageAnimation ? { ...chunk3PKYNJJG_js.getImageRenderStyle(element), animation: imageAnimation } : chunk3PKYNJJG_js.getImageRenderStyle(element),
18463
+ imgFilter: chunk3PKYNJJG_js.getImageEffectsFilter(element),
18464
+ imgOpacity: chunk3PKYNJJG_js.getImageEffectsOpacity(element),
18455
18465
  imgAlt: "",
18456
- isTxtEl: chunk43TOUP5U_js.isEditableTextElement(element),
18466
+ isTxtEl: chunk3PKYNJJG_js.isEditableTextElement(element),
18457
18467
  media: mediaDataUrls,
18458
18468
  tableSt: null,
18459
18469
  isSel: false,
@@ -18499,7 +18509,7 @@ function SlideLayer({
18499
18509
  style: {
18500
18510
  width: safeWidth,
18501
18511
  height: safeHeight,
18502
- backgroundColor: slide.backgroundColor ? chunk43TOUP5U_js.normalizeHexColor(slide.backgroundColor, "#ffffff") : "#ffffff",
18512
+ backgroundColor: slide.backgroundColor ? chunk3PKYNJJG_js.normalizeHexColor(slide.backgroundColor, "#ffffff") : "#ffffff",
18503
18513
  backgroundImage: slide.backgroundImage ? `url(${slide.backgroundImage})` : slide.backgroundGradient ? slide.backgroundGradient : void 0,
18504
18514
  backgroundSize: slide.backgroundImage ? "cover" : void 0,
18505
18515
  backgroundPosition: slide.backgroundImage ? "center" : void 0