pptx-react-viewer 4.42.1 → 4.44.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 (66) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/dist/{AiChatPanel-VI2IQ7XU.js → AiChatPanel-TGZQBH3L.js} +9 -9
  3. package/dist/AiChatPanel-TGZQBH3L.js.br +0 -0
  4. package/dist/AiChatPanel-TGZQBH3L.js.gz +0 -0
  5. package/dist/{AiChatPanel-R5UTSMXU.mjs → AiChatPanel-Z5VHI4WA.mjs} +1 -1
  6. package/dist/AiChatPanel-Z5VHI4WA.mjs.br +0 -0
  7. package/dist/AiChatPanel-Z5VHI4WA.mjs.gz +0 -0
  8. package/dist/{chunk-3LIHPZKS.mjs → chunk-FBN7UFW2.mjs} +15 -9
  9. package/dist/chunk-FBN7UFW2.mjs.br +0 -0
  10. package/dist/chunk-FBN7UFW2.mjs.gz +0 -0
  11. package/dist/{chunk-UACDKMXF.mjs → chunk-NXOETWSO.mjs} +18 -17
  12. package/dist/chunk-NXOETWSO.mjs.br +0 -0
  13. package/dist/chunk-NXOETWSO.mjs.gz +0 -0
  14. package/dist/{chunk-GLWV52C6.js → chunk-OYK6O2UM.js} +260 -259
  15. package/dist/chunk-OYK6O2UM.js.br +0 -0
  16. package/dist/chunk-OYK6O2UM.js.gz +0 -0
  17. package/dist/{chunk-FKY33ZKL.js → chunk-VJZJESNT.js} +14 -8
  18. package/dist/chunk-VJZJESNT.js.br +0 -0
  19. package/dist/chunk-VJZJESNT.js.gz +0 -0
  20. package/dist/{chunk-PZUBHPGJ.mjs → chunk-W6PDVBAF.mjs} +114 -127
  21. package/dist/chunk-W6PDVBAF.mjs.br +0 -0
  22. package/dist/chunk-W6PDVBAF.mjs.gz +0 -0
  23. package/dist/{chunk-2XVYVT25.js → chunk-YIYIJB3X.js} +1421 -1434
  24. package/dist/chunk-YIYIJB3X.js.br +0 -0
  25. package/dist/chunk-YIYIJB3X.js.gz +0 -0
  26. package/dist/index.d.ts +3 -3
  27. package/dist/index.js +24 -24
  28. package/dist/index.js.br +0 -0
  29. package/dist/index.js.gz +0 -0
  30. package/dist/index.mjs +3 -3
  31. package/dist/index.mjs.br +0 -0
  32. package/dist/index.mjs.gz +0 -0
  33. package/dist/internals.d.ts +2 -2
  34. package/dist/internals.js +81 -81
  35. package/dist/internals.js.br +0 -0
  36. package/dist/internals.js.gz +0 -0
  37. package/dist/internals.mjs +2 -2
  38. package/dist/internals.mjs.br +0 -0
  39. package/dist/internals.mjs.gz +0 -0
  40. package/dist/pptx-viewer.css +1 -1
  41. package/dist/pptx-viewer.css.br +0 -0
  42. package/dist/pptx-viewer.css.gz +0 -0
  43. package/dist/viewer/index.d.ts +2 -2
  44. package/dist/viewer/index.js +19 -19
  45. package/dist/viewer/index.js.br +0 -0
  46. package/dist/viewer/index.js.gz +0 -0
  47. package/dist/viewer/index.mjs +3 -3
  48. package/dist/viewer/index.mjs.br +0 -0
  49. package/dist/viewer/index.mjs.gz +0 -0
  50. package/package.json +3 -3
  51. package/dist/AiChatPanel-R5UTSMXU.mjs.br +0 -0
  52. package/dist/AiChatPanel-R5UTSMXU.mjs.gz +0 -0
  53. package/dist/AiChatPanel-VI2IQ7XU.js.br +0 -0
  54. package/dist/AiChatPanel-VI2IQ7XU.js.gz +0 -0
  55. package/dist/chunk-2XVYVT25.js.br +0 -0
  56. package/dist/chunk-2XVYVT25.js.gz +0 -0
  57. package/dist/chunk-3LIHPZKS.mjs.br +0 -0
  58. package/dist/chunk-3LIHPZKS.mjs.gz +0 -0
  59. package/dist/chunk-FKY33ZKL.js.br +0 -0
  60. package/dist/chunk-FKY33ZKL.js.gz +0 -0
  61. package/dist/chunk-GLWV52C6.js.br +0 -0
  62. package/dist/chunk-GLWV52C6.js.gz +0 -0
  63. package/dist/chunk-PZUBHPGJ.mjs.br +0 -0
  64. package/dist/chunk-PZUBHPGJ.mjs.gz +0 -0
  65. package/dist/chunk-UACDKMXF.mjs.br +0 -0
  66. package/dist/chunk-UACDKMXF.mjs.gz +0 -0
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkFKY33ZKL_js = require('./chunk-FKY33ZKL.js');
3
+ var chunkVJZJESNT_js = require('./chunk-VJZJESNT.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(chunkFKY33ZKL_js.cloneHistorySnapshot(previous));
687
+ past.push(chunkVJZJESNT_js.cloneHistorySnapshot(previous));
688
688
  }
689
- past.push({ ...chunkFKY33ZKL_js.cloneHistorySnapshot(before), actionLabel: label });
689
+ past.push({ ...chunkVJZJESNT_js.cloneHistorySnapshot(before), actionLabel: label });
690
690
  while (past.length > Math.max(1, maxDepth)) {
691
691
  past.shift();
692
692
  }
@@ -776,8 +776,8 @@ function useEditorHistory(input) {
776
776
  width: canvasSize.width,
777
777
  height: canvasSize.height,
778
778
  activeSlideIndex,
779
- slides: slides.map(chunkFKY33ZKL_js.cloneSlide),
780
- templateElementsBySlideId: chunkFKY33ZKL_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
779
+ slides: slides.map(chunkVJZJESNT_js.cloneSlide),
780
+ templateElementsBySlideId: chunkVJZJESNT_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
781
781
  ...actionLabel ? { actionLabel } : {}
782
782
  };
783
783
  },
@@ -790,9 +790,9 @@ function useEditorHistory(input) {
790
790
  width: snapshot.width,
791
791
  height: snapshot.height
792
792
  });
793
- setSlides(snapshot.slides.map(chunkFKY33ZKL_js.cloneSlide));
793
+ setSlides(snapshot.slides.map(chunkVJZJESNT_js.cloneSlide));
794
794
  setTemplateElementsBySlideId(
795
- chunkFKY33ZKL_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
795
+ chunkVJZJESNT_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
796
796
  );
797
797
  setActiveSlideIndex(Math.min(snapshot.activeSlideIndex, maxSlideIndex));
798
798
  setSelectedElementIds([]);
@@ -831,8 +831,8 @@ function useEditorHistory(input) {
831
831
  const currentSnapshot = buildHistorySnapshot(previousSnapshot.actionLabel);
832
832
  historyFutureRef.current.push(currentSnapshot);
833
833
  isApplyingHistoryRef.current = true;
834
- const nextSnapshot = chunkFKY33ZKL_js.cloneHistorySnapshot(previousSnapshot);
835
- lastHistorySnapshotRef.current = chunkFKY33ZKL_js.cloneHistorySnapshot(nextSnapshot);
834
+ const nextSnapshot = chunkVJZJESNT_js.cloneHistorySnapshot(previousSnapshot);
835
+ lastHistorySnapshotRef.current = chunkVJZJESNT_js.cloneHistorySnapshot(nextSnapshot);
836
836
  lastHistorySerializedRef.current = serializeHistoryDocument(nextSnapshot);
837
837
  applyHistorySnapshot(nextSnapshot);
838
838
  updateHistoryAvailability();
@@ -853,8 +853,8 @@ function useEditorHistory(input) {
853
853
  const currentSnapshot = buildHistorySnapshot(nextSnapshot.actionLabel);
854
854
  historyPastRef.current.push(currentSnapshot);
855
855
  isApplyingHistoryRef.current = true;
856
- const targetSnapshot = chunkFKY33ZKL_js.cloneHistorySnapshot(nextSnapshot);
857
- lastHistorySnapshotRef.current = chunkFKY33ZKL_js.cloneHistorySnapshot(targetSnapshot);
856
+ const targetSnapshot = chunkVJZJESNT_js.cloneHistorySnapshot(nextSnapshot);
857
+ lastHistorySnapshotRef.current = chunkVJZJESNT_js.cloneHistorySnapshot(targetSnapshot);
858
858
  lastHistorySerializedRef.current = serializeHistoryDocument(targetSnapshot);
859
859
  applyHistorySnapshot(targetSnapshot);
860
860
  updateHistoryAvailability();
@@ -872,7 +872,7 @@ function useEditorHistory(input) {
872
872
  historyPastRef.current = [];
873
873
  historyFutureRef.current = [];
874
874
  if (initialSnapshot) {
875
- const clonedInitial = chunkFKY33ZKL_js.cloneHistorySnapshot(initialSnapshot);
875
+ const clonedInitial = chunkVJZJESNT_js.cloneHistorySnapshot(initialSnapshot);
876
876
  lastHistorySnapshotRef.current = clonedInitial;
877
877
  lastHistorySerializedRef.current = serializeHistoryDocument(clonedInitial);
878
878
  } else {
@@ -954,8 +954,8 @@ function useEditorHistory(input) {
954
954
  updateHistoryAvailability
955
955
  ]);
956
956
  const commitSlides = (nextSlides, label, beforeSlides = slides) => {
957
- const before = { ...buildHistorySnapshot(), slides: beforeSlides.map(chunkFKY33ZKL_js.cloneSlide) };
958
- const after = { ...before, slides: nextSlides.map(chunkFKY33ZKL_js.cloneSlide) };
957
+ const before = { ...buildHistorySnapshot(), slides: beforeSlides.map(chunkVJZJESNT_js.cloneSlide) };
958
+ const after = { ...before, slides: nextSlides.map(chunkVJZJESNT_js.cloneSlide) };
959
959
  recordExplicitSlideUpdate(
960
960
  historyPastRef.current,
961
961
  historyFutureRef.current,
@@ -964,7 +964,7 @@ function useEditorHistory(input) {
964
964
  label,
965
965
  maxHistoryEntries
966
966
  );
967
- lastHistorySnapshotRef.current = chunkFKY33ZKL_js.cloneHistorySnapshot(after);
967
+ lastHistorySnapshotRef.current = chunkVJZJESNT_js.cloneHistorySnapshot(after);
968
968
  lastHistorySerializedRef.current = serializeHistoryDocument(after);
969
969
  isApplyingHistoryRef.current = false;
970
970
  setSlides(nextSlides);
@@ -1151,22 +1151,22 @@ function useZoomViewport({
1151
1151
  selectedElements.forEach((element) => {
1152
1152
  minX = Math.min(minX, element.x);
1153
1153
  minY = Math.min(minY, element.y);
1154
- maxX = Math.max(maxX, element.x + Math.max(element.width, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE));
1155
- maxY = Math.max(maxY, element.y + Math.max(element.height, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE));
1154
+ maxX = Math.max(maxX, element.x + Math.max(element.width, chunkVJZJESNT_js.MIN_ELEMENT_SIZE));
1155
+ maxY = Math.max(maxY, element.y + Math.max(element.height, chunkVJZJESNT_js.MIN_ELEMENT_SIZE));
1156
1156
  });
1157
1157
  if (!Number.isFinite(minX) || !Number.isFinite(minY) || !Number.isFinite(maxX) || !Number.isFinite(maxY)) {
1158
1158
  return;
1159
1159
  }
1160
1160
  const selectionBounds = { minX, minY, maxX, maxY };
1161
- const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE);
1162
- const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE);
1161
+ const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunkVJZJESNT_js.MIN_ELEMENT_SIZE);
1162
+ const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunkVJZJESNT_js.MIN_ELEMENT_SIZE);
1163
1163
  const availableWidth = Math.max(
1164
- effectiveEditorDimensions.width - chunkFKY33ZKL_js.ZOOM_TO_SELECTION_PADDING,
1165
- chunkFKY33ZKL_js.MIN_ELEMENT_SIZE
1164
+ effectiveEditorDimensions.width - chunkVJZJESNT_js.ZOOM_TO_SELECTION_PADDING,
1165
+ chunkVJZJESNT_js.MIN_ELEMENT_SIZE
1166
1166
  );
1167
1167
  const availableHeight = Math.max(
1168
- effectiveEditorDimensions.height - chunkFKY33ZKL_js.ZOOM_TO_SELECTION_PADDING,
1169
- chunkFKY33ZKL_js.MIN_ELEMENT_SIZE
1168
+ effectiveEditorDimensions.height - chunkVJZJESNT_js.ZOOM_TO_SELECTION_PADDING,
1169
+ chunkVJZJESNT_js.MIN_ELEMENT_SIZE
1170
1170
  );
1171
1171
  const targetEditorScale = Math.min(
1172
1172
  availableWidth / boundsWidth,
@@ -4133,8 +4133,8 @@ function useViewerCoreState(_input) {
4133
4133
  const { slides, setSlides, slidesRef } = useSlideState();
4134
4134
  const [templateElementsBySlideId, setTemplateElementsBySlideId] = React17.useState({});
4135
4135
  const [canvasSize, setCanvasSize] = React17.useState({
4136
- width: chunkFKY33ZKL_js.DEFAULT_CANVAS_WIDTH,
4137
- height: chunkFKY33ZKL_js.DEFAULT_CANVAS_HEIGHT
4136
+ width: chunkVJZJESNT_js.DEFAULT_CANVAS_WIDTH,
4137
+ height: chunkVJZJESNT_js.DEFAULT_CANVAS_HEIGHT
4138
4138
  });
4139
4139
  const [slideSizeEmu, setSlideSizeEmu] = React17.useState();
4140
4140
  const [activeSlideIndex, setActiveSlideIndex] = React17.useState(0);
@@ -4522,7 +4522,7 @@ function useLoadContent({
4522
4522
  }
4523
4523
  let cancelled = false;
4524
4524
  const token = ++renderTokenRef.current;
4525
- const handler = new chunkFKY33ZKL_js.dist_exports.PptxHandler();
4525
+ const handler = new chunkVJZJESNT_js.dist_exports.PptxHandler();
4526
4526
  const resources = pptx.createPresentationLoadResources(handler);
4527
4527
  const loadBlobUrls = resources.blobUrls;
4528
4528
  (async () => {
@@ -4607,12 +4607,12 @@ function useLoadContent({
4607
4607
  }
4608
4608
  resources.commit();
4609
4609
  handlerRef.current = handler;
4610
- const partition = chunkFKY33ZKL_js.partitionTemplateElements(nextSlides);
4610
+ const partition = chunkVJZJESNT_js.partitionTemplateElements(nextSlides);
4611
4611
  setSlides(partition.slides);
4612
4612
  setTemplateElementsBySlideId(partition.templateElementsBySlideId);
4613
4613
  setCanvasSize({
4614
- width: parsed.width ?? chunkFKY33ZKL_js.DEFAULT_CANVAS_WIDTH,
4615
- height: parsed.height ?? chunkFKY33ZKL_js.DEFAULT_CANVAS_HEIGHT
4614
+ width: parsed.width ?? chunkVJZJESNT_js.DEFAULT_CANVAS_WIDTH,
4615
+ height: parsed.height ?? chunkVJZJESNT_js.DEFAULT_CANVAS_HEIGHT
4616
4616
  });
4617
4617
  setSlideSizeEmu(
4618
4618
  typeof parsed.widthEmu === "number" && typeof parsed.heightEmu === "number" && parsed.widthEmu > 0 && parsed.heightEmu > 0 ? {
@@ -4676,7 +4676,7 @@ function useLoadContent({
4676
4676
  onContentApplied?.();
4677
4677
  } catch (err) {
4678
4678
  if (!cancelled && token === renderTokenRef.current) {
4679
- if (err instanceof chunkFKY33ZKL_js.dist_exports.EncryptedFileError) {
4679
+ if (err instanceof chunkVJZJESNT_js.dist_exports.EncryptedFileError) {
4680
4680
  setIsEncrypted(true);
4681
4681
  } else {
4682
4682
  console.error("[pptx] Failed to load presentation content:", err);
@@ -4801,7 +4801,7 @@ function useTextElementOperations(input) {
4801
4801
  updateSelectedElement
4802
4802
  } = input;
4803
4803
  const liveTextSegments = React17.useCallback(() => {
4804
- if (!selectedElement || !(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(selectedElement)) {
4804
+ if (!selectedElement || !(0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(selectedElement)) {
4805
4805
  return void 0;
4806
4806
  }
4807
4807
  if (selectedElement.id !== inlineEditingElementId) {
@@ -4819,7 +4819,7 @@ function useTextElementOperations(input) {
4819
4819
  }, [selectedElement, inlineEditingElementId, inlineEditingText, inlineEditingSnapshotRef]);
4820
4820
  const updateSelectedTextStyle = React17.useCallback(
4821
4821
  (updates) => {
4822
- if (!selectedElement || !(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(selectedElement)) {
4822
+ if (!selectedElement || !(0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(selectedElement)) {
4823
4823
  return;
4824
4824
  }
4825
4825
  const isLiveEditing = selectedElement.id === inlineEditingElementId;
@@ -4897,7 +4897,7 @@ function useTextElementOperations(input) {
4897
4897
  );
4898
4898
  const toggleSelectedBullets = React17.useCallback(
4899
4899
  (kind) => {
4900
- if (!selectedElement || !(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(selectedElement)) {
4900
+ if (!selectedElement || !(0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(selectedElement)) {
4901
4901
  return;
4902
4902
  }
4903
4903
  const currentSegments = liveTextSegments();
@@ -4948,7 +4948,7 @@ function useTextElementOperations(input) {
4948
4948
  );
4949
4949
  const updateSelectedTextCase = React17.useCallback(
4950
4950
  (mode) => {
4951
- if (!selectedElement || !(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(selectedElement)) {
4951
+ if (!selectedElement || !(0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(selectedElement)) {
4952
4952
  return;
4953
4953
  }
4954
4954
  const isLiveEditing = selectedElement.id === inlineEditingElementId;
@@ -5064,7 +5064,7 @@ function useElementOperations(input) {
5064
5064
  );
5065
5065
  return;
5066
5066
  }
5067
- if (chunkFKY33ZKL_js.isTemplateElementId(elementId)) {
5067
+ if (chunkVJZJESNT_js.isTemplateElementId(elementId)) {
5068
5068
  const slideId = activeSlide?.id;
5069
5069
  if (slideId) {
5070
5070
  setTemplateElementsBySlideId((prev) => ({
@@ -5100,7 +5100,7 @@ function useElementOperations(input) {
5100
5100
  );
5101
5101
  const updateSelectedShapeStyle = React17.useCallback(
5102
5102
  (updates) => {
5103
- if (!selectedElement || !(0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(selectedElement)) {
5103
+ if (!selectedElement || !(0, chunkVJZJESNT_js.dist_exports.hasShapeProperties)(selectedElement)) {
5104
5104
  return;
5105
5105
  }
5106
5106
  updateSelectedElement({
@@ -5304,15 +5304,15 @@ function syncSelectionHandleOverlay(elementNode, elementId, geometry) {
5304
5304
  // src/viewer/hooks/pointer-move-handlers.ts
5305
5305
  function computeResizeGeometry(handle, startX, startY, startWidth, startHeight, dx, dy, snapToGrid, gridSpacingPx, lockAspect = false) {
5306
5306
  const startBox = { x: startX, y: startY, width: startWidth, height: startHeight };
5307
- let resized = pptx.applyResize(startBox, handle, dx, dy, 1, { minSize: chunkFKY33ZKL_js.MIN_ELEMENT_SIZE });
5307
+ let resized = pptx.applyResize(startBox, handle, dx, dy, 1, { minSize: chunkVJZJESNT_js.MIN_ELEMENT_SIZE });
5308
5308
  if (lockAspect) {
5309
- resized = pptx.lockResizeAspect(resized, startBox, handle, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE);
5309
+ resized = pptx.lockResizeAspect(resized, startBox, handle, chunkVJZJESNT_js.MIN_ELEMENT_SIZE);
5310
5310
  }
5311
5311
  const box = { x: resized.x, y: resized.y, width: resized.width, height: resized.height };
5312
5312
  if (!snapToGrid) {
5313
5313
  return box;
5314
5314
  }
5315
- return pptx.snapBoxToGrid(box, handle, gridSpacingPx, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE);
5315
+ return pptx.snapBoxToGrid(box, handle, gridSpacingPx, chunkVJZJESNT_js.MIN_ELEMENT_SIZE);
5316
5316
  }
5317
5317
  function resolveLiveTarget(input) {
5318
5318
  const { livePatcher, editTemplateMode, activeSlide } = input;
@@ -5425,7 +5425,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
5425
5425
  width: el.width,
5426
5426
  height: el.height
5427
5427
  }));
5428
- const snapResult = chunkFKY33ZKL_js.computeSnapToShape(
5428
+ const snapResult = chunkVJZJESNT_js.computeSnapToShape(
5429
5429
  targetX,
5430
5430
  targetY,
5431
5431
  primaryEl.width,
@@ -5499,8 +5499,8 @@ function processResizeMove(e, rs, editorScale, snapToGrid, gridSpacingPx, live)
5499
5499
  rs.lastY = geo.y;
5500
5500
  rs.lastWidth = geo.width;
5501
5501
  rs.lastHeight = geo.height;
5502
- const width = Math.max(geo.width, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE);
5503
- const height = Math.max(geo.height, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE);
5502
+ const width = Math.max(geo.width, chunkVJZJESNT_js.MIN_ELEMENT_SIZE);
5503
+ const height = Math.max(geo.height, chunkVJZJESNT_js.MIN_ELEMENT_SIZE);
5504
5504
  if (rs.domEl) {
5505
5505
  rs.domEl.style.left = `${geo.x}px`;
5506
5506
  rs.domEl.style.top = `${geo.y}px`;
@@ -5593,13 +5593,13 @@ function processPointerUp(input) {
5593
5593
  if (i !== activeSlideIndex) {
5594
5594
  return s;
5595
5595
  }
5596
- const rerouted = chunkFKY33ZKL_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
5596
+ const rerouted = chunkVJZJESNT_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
5597
5597
  if (rerouted.length === 0) {
5598
5598
  return s;
5599
5599
  }
5600
5600
  return {
5601
5601
  ...s,
5602
- elements: chunkFKY33ZKL_js.applyReroutedConnectors(s.elements, rerouted)
5602
+ elements: chunkVJZJESNT_js.applyReroutedConnectors(s.elements, rerouted)
5603
5603
  };
5604
5604
  })
5605
5605
  );
@@ -5651,8 +5651,8 @@ function commitDrag(drag, editTemplateMode, activeSlide, activeSlideIndex, setTe
5651
5651
  }
5652
5652
  return { ...el, x: start.x + dx, y: start.y + dy };
5653
5653
  });
5654
- const rerouted = chunkFKY33ZKL_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
5655
- return chunkFKY33ZKL_js.applyReroutedConnectors(movedElements, rerouted);
5654
+ const rerouted = chunkVJZJESNT_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
5655
+ return chunkVJZJESNT_js.applyReroutedConnectors(movedElements, rerouted);
5656
5656
  };
5657
5657
  if (editTemplateMode) {
5658
5658
  const slideId = activeSlide?.id;
@@ -5840,7 +5840,7 @@ function useCanvasInteractions(input) {
5840
5840
  return;
5841
5841
  }
5842
5842
  const el = elementLookup.get(editId);
5843
- if (el && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(el)) {
5843
+ if (el && (0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(el)) {
5844
5844
  const reader = inlineEditingReaderRef?.current;
5845
5845
  const read = reader?.elementId === editId ? reader.read() : void 0;
5846
5846
  if (read?.kind === "unsupported") {
@@ -5887,7 +5887,7 @@ function useCanvasInteractions(input) {
5887
5887
  wasEditable.current = canEdit;
5888
5888
  }, [canEdit]);
5889
5889
  const openEquationEditorForElement = (el) => {
5890
- if (!(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(el)) {
5890
+ if (!(0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(el)) {
5891
5891
  return false;
5892
5892
  }
5893
5893
  const eqSeg = el.textSegments?.find((seg) => seg.equationXml);
@@ -5920,7 +5920,7 @@ function useCanvasInteractions(input) {
5920
5920
  justInteractedRef.current = false;
5921
5921
  } else {
5922
5922
  const el = elementLookup.get(elementId);
5923
- if (el && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(el) && pptx.canInteractWithElement(el, "textEdit")) {
5923
+ if (el && (0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(el) && pptx.canInteractWithElement(el, "textEdit")) {
5924
5924
  if (!openEquationEditorForElement(el)) {
5925
5925
  pptx.setPendingCaretPoint(e);
5926
5926
  setInlineEditingElementId(elementId);
@@ -5946,7 +5946,7 @@ function useCanvasInteractions(input) {
5946
5946
  if (openEquationEditorForElement(el)) {
5947
5947
  return;
5948
5948
  }
5949
- if ((0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(el) && pptx.canInteractWithElement(el, "textEdit")) {
5949
+ if ((0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(el) && pptx.canInteractWithElement(el, "textEdit")) {
5950
5950
  setInlineEditingElementId(elementId);
5951
5951
  setInlineEditingText(el.text ?? "");
5952
5952
  }
@@ -6411,7 +6411,7 @@ function createStructuredElementHandlers(deps) {
6411
6411
  return;
6412
6412
  }
6413
6413
  const resolved = resolveHyperlinkEditResult(data);
6414
- if (resolved.url && !chunkFKY33ZKL_js.isUrlSafe(resolved.url)) {
6414
+ if (resolved.url && !chunkVJZJESNT_js.isUrlSafe(resolved.url)) {
6415
6415
  return;
6416
6416
  }
6417
6417
  const actionClick = {
@@ -6457,11 +6457,11 @@ function createStructuredElementHandlers(deps) {
6457
6457
  if (!activeSlide) {
6458
6458
  return;
6459
6459
  }
6460
- const preset = chunkFKY33ZKL_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
6460
+ const preset = chunkVJZJESNT_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
6461
6461
  if (!preset) {
6462
6462
  return;
6463
6463
  }
6464
- const defaultPptxAction = (0, chunkFKY33ZKL_js.dist_exports.elementActionToPptxAction)({
6464
+ const defaultPptxAction = (0, chunkVJZJESNT_js.dist_exports.elementActionToPptxAction)({
6465
6465
  trigger: "click",
6466
6466
  type: preset.defaultAction
6467
6467
  });
@@ -6544,7 +6544,7 @@ function useInsertElements(input) {
6544
6544
  width: 300,
6545
6545
  height: 60,
6546
6546
  text: "",
6547
- textStyle: { fontSize: chunkFKY33ZKL_js.DEFAULT_TEXT_FONT_SIZE }
6547
+ textStyle: { fontSize: chunkVJZJESNT_js.DEFAULT_TEXT_FONT_SIZE }
6548
6548
  });
6549
6549
  };
6550
6550
  const handleAddShape = () => {
@@ -6566,7 +6566,7 @@ function useInsertElements(input) {
6566
6566
  }
6567
6567
  });
6568
6568
  };
6569
- const handleAddTable = (rows = chunkFKY33ZKL_js.DEFAULT_TABLE_ROWS, columns = chunkFKY33ZKL_js.DEFAULT_TABLE_COLUMNS) => {
6569
+ const handleAddTable = (rows = chunkVJZJESNT_js.DEFAULT_TABLE_ROWS, columns = chunkVJZJESNT_js.DEFAULT_TABLE_COLUMNS) => {
6570
6570
  if (!activeSlide) {
6571
6571
  return;
6572
6572
  }
@@ -6740,7 +6740,7 @@ function useGroupAlignLayerHandlers(input) {
6740
6740
  history
6741
6741
  } = input;
6742
6742
  const updateElementsOwning = (elementId, updater) => {
6743
- if (editTemplateMode && !chunkFKY33ZKL_js.isTemplateElementId(elementId)) {
6743
+ if (editTemplateMode && !chunkVJZJESNT_js.isTemplateElementId(elementId)) {
6744
6744
  ops.updateSlides(
6745
6745
  (prev) => prev.map(
6746
6746
  (slide, index) => index === activeSlideIndex ? { ...slide, elements: updater(slide.elements) } : slide
@@ -6774,9 +6774,9 @@ function useGroupAlignLayerHandlers(input) {
6774
6774
  return;
6775
6775
  }
6776
6776
  const group = selectedElement;
6777
- const intoTemplate = chunkFKY33ZKL_js.isTemplateElementId(group.id);
6777
+ const intoTemplate = chunkVJZJESNT_js.isTemplateElementId(group.id);
6778
6778
  const childIds = group.children.map(
6779
- (child) => intoTemplate ? chunkFKY33ZKL_js.makeCloneId(true, child.id || group.id) : child.id || pptx.generateElementId()
6779
+ (child) => intoTemplate ? chunkVJZJESNT_js.makeCloneId(true, child.id || group.id) : child.id || pptx.generateElementId()
6780
6780
  );
6781
6781
  const { elements, childIds: usedIds } = pptx.ungroupElements(
6782
6782
  ops.activeElements,
@@ -7108,7 +7108,7 @@ function useSlideManagement(input) {
7108
7108
  if (!src) {
7109
7109
  continue;
7110
7110
  }
7111
- const clone = { ...(0, chunkFKY33ZKL_js.dist_exports.duplicateSlide)(src, next.length + 1), id: pptx.makeSlideId() };
7111
+ const clone = { ...(0, chunkVJZJESNT_js.dist_exports.duplicateSlide)(src, next.length + 1), id: pptx.makeSlideId() };
7112
7112
  next.splice(i + offset + 1, 0, clone);
7113
7113
  offset++;
7114
7114
  }
@@ -7212,7 +7212,7 @@ function createTableMergeHandlers(input) {
7212
7212
  if (!nextCell || nextCell.hMerge || nextCell.vMerge) {
7213
7213
  return;
7214
7214
  }
7215
- const newTableData = chunkFKY33ZKL_js.mergeCells(
7215
+ const newTableData = chunkVJZJESNT_js.mergeCells(
7216
7216
  [
7217
7217
  { row: rowIndex, col: columnIndex },
7218
7218
  { row: rowIndex, col: nextColIdx }
@@ -7220,7 +7220,7 @@ function createTableMergeHandlers(input) {
7220
7220
  td
7221
7221
  );
7222
7222
  const updates = { tableData: newTableData };
7223
- const newRawXml = (0, chunkFKY33ZKL_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7223
+ const newRawXml = (0, chunkVJZJESNT_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7224
7224
  if (newRawXml) {
7225
7225
  updates.rawXml = newRawXml;
7226
7226
  }
@@ -7246,7 +7246,7 @@ function createTableMergeHandlers(input) {
7246
7246
  if (!targetNextCell || targetNextCell.hMerge || targetNextCell.vMerge) {
7247
7247
  return;
7248
7248
  }
7249
- const newTableData = chunkFKY33ZKL_js.mergeCells(
7249
+ const newTableData = chunkVJZJESNT_js.mergeCells(
7250
7250
  [
7251
7251
  { row: rowIndex, col: columnIndex },
7252
7252
  { row: targetNextRowIdx, col: columnIndex }
@@ -7254,7 +7254,7 @@ function createTableMergeHandlers(input) {
7254
7254
  td
7255
7255
  );
7256
7256
  const updates = { tableData: newTableData };
7257
- const newRawXml = (0, chunkFKY33ZKL_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7257
+ const newRawXml = (0, chunkVJZJESNT_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7258
7258
  if (newRawXml) {
7259
7259
  updates.rawXml = newRawXml;
7260
7260
  }
@@ -7269,9 +7269,9 @@ function createTableMergeHandlers(input) {
7269
7269
  return;
7270
7270
  }
7271
7271
  const td = selectedElement.tableData;
7272
- const newTableData = chunkFKY33ZKL_js.mergeCells(ts.selectedCells, td);
7272
+ const newTableData = chunkVJZJESNT_js.mergeCells(ts.selectedCells, td);
7273
7273
  const updates = { tableData: newTableData };
7274
- const newRawXml = (0, chunkFKY33ZKL_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7274
+ const newRawXml = (0, chunkVJZJESNT_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7275
7275
  if (newRawXml) {
7276
7276
  updates.rawXml = newRawXml;
7277
7277
  }
@@ -7288,9 +7288,9 @@ function createTableMergeHandlers(input) {
7288
7288
  }
7289
7289
  const { rowIndex, columnIndex } = ts;
7290
7290
  const td = selectedElement.tableData;
7291
- const newTableData = chunkFKY33ZKL_js.splitCell(rowIndex, columnIndex, td);
7291
+ const newTableData = chunkVJZJESNT_js.splitCell(rowIndex, columnIndex, td);
7292
7292
  const updates = { tableData: newTableData };
7293
- const newRawXml = (0, chunkFKY33ZKL_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7293
+ const newRawXml = (0, chunkVJZJESNT_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
7294
7294
  if (newRawXml) {
7295
7295
  updates.rawXml = newRawXml;
7296
7296
  }
@@ -7325,7 +7325,7 @@ function createTableStructHandlers(input) {
7325
7325
  updates.tableData = pptx.setCellText(el, rowIndex, colIndex, text).tableData;
7326
7326
  }
7327
7327
  if (el.rawXml) {
7328
- const newRawXml = (0, chunkFKY33ZKL_js.dist_exports.updateCellTextInRawXml)(el, rowIndex, colIndex, text);
7328
+ const newRawXml = (0, chunkVJZJESNT_js.dist_exports.updateCellTextInRawXml)(el, rowIndex, colIndex, text);
7329
7329
  if (newRawXml) {
7330
7330
  updates.rawXml = newRawXml;
7331
7331
  }
@@ -7349,7 +7349,7 @@ function createTableStructHandlers(input) {
7349
7349
  const { rowIndex, columnIndex: colIndex } = ts;
7350
7350
  const updates = {};
7351
7351
  if (selectedElement.rawXml) {
7352
- const newRawXml = (0, chunkFKY33ZKL_js.dist_exports.updateCellTextStyleInRawXml)(
7352
+ const newRawXml = (0, chunkVJZJESNT_js.dist_exports.updateCellTextStyleInRawXml)(
7353
7353
  selectedElement,
7354
7354
  rowIndex,
7355
7355
  colIndex,
@@ -7516,7 +7516,7 @@ function useExportSaveAs(input) {
7516
7516
  const sourceName = filePath ? filePath.replace(/\\/gu, "/").split("/").pop() : void 0;
7517
7517
  const slideSize = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size;
7518
7518
  const data = {
7519
- slides: chunkFKY33ZKL_js.buildSaveSlides(slides, templateElementsBySlideId),
7519
+ slides: chunkVJZJESNT_js.buildSaveSlides(slides, templateElementsBySlideId),
7520
7520
  width: canvasSize.width,
7521
7521
  height: canvasSize.height,
7522
7522
  widthEmu: slideSize.widthEmu,
@@ -7674,7 +7674,7 @@ async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActi
7674
7674
  }
7675
7675
  function tilesToPdfPage(tilesResult) {
7676
7676
  return tilesResult.tiles.map((tile) => ({
7677
- image: chunkFKY33ZKL_js.canvasToJpegData(tile.canvas),
7677
+ image: chunkVJZJESNT_js.canvasToJpegData(tile.canvas),
7678
7678
  placement: pptx.placeTileOnPage(
7679
7679
  tile,
7680
7680
  tilesResult.fullWidth,
@@ -7707,7 +7707,7 @@ async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide,
7707
7707
  if (pages.length === 0) {
7708
7708
  throw new Error(i18n.translationsEn["pptx.export.errorNoSlidesPdf"]);
7709
7709
  }
7710
- const pdfBlobUrl = chunkFKY33ZKL_js.buildPdfFromTiledImageData(pages);
7710
+ const pdfBlobUrl = chunkVJZJESNT_js.buildPdfFromTiledImageData(pages);
7711
7711
  pptx.downloadDataUrl(pdfBlobUrl, filename);
7712
7712
  }
7713
7713
  async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, slideNotes, filename = "presentation-notes.pdf", options = {}) {
@@ -7737,7 +7737,7 @@ async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSl
7737
7737
  if (pages.length === 0) {
7738
7738
  throw new Error(i18n.translationsEn["pptx.export.errorNoSlidesNotesPdf"]);
7739
7739
  }
7740
- const pdfDataUrl = chunkFKY33ZKL_js.buildNotesPdf(pages);
7740
+ const pdfDataUrl = chunkVJZJESNT_js.buildNotesPdf(pages);
7741
7741
  pptx.downloadDataUrl(pdfDataUrl, filename);
7742
7742
  }
7743
7743
  async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, options = {}) {
@@ -7932,7 +7932,7 @@ function exportAllSlidesToSvg(data, options = {}) {
7932
7932
  continue;
7933
7933
  }
7934
7934
  onProgress?.(processedCount, data.slides.length);
7935
- let svg = chunkFKY33ZKL_js.dist_exports.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
7935
+ let svg = chunkVJZJESNT_js.dist_exports.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
7936
7936
  if (embedFonts && fontFaces?.length) {
7937
7937
  svg = injectFontFaces(svg, fontFaces);
7938
7938
  }
@@ -8521,10 +8521,10 @@ async function applyThemeEditorEdit(input, { colorScheme, fontScheme, name }) {
8521
8521
  return;
8522
8522
  }
8523
8523
  await handler.applyTheme(colorScheme, fontScheme, name);
8524
- const previousMap = theme?.colorScheme ? (0, chunkFKY33ZKL_js.dist_exports.buildThemeColorMap)(theme.colorScheme) : {};
8524
+ const previousMap = theme?.colorScheme ? (0, chunkVJZJESNT_js.dist_exports.buildThemeColorMap)(theme.colorScheme) : {};
8525
8525
  bumpHistory();
8526
8526
  setSlides(
8527
- (slides) => (0, chunkFKY33ZKL_js.dist_exports.applyThemeToData)(
8527
+ (slides) => (0, chunkVJZJESNT_js.dist_exports.applyThemeToData)(
8528
8528
  { slides, theme, themeColorMap: previousMap },
8529
8529
  colorScheme,
8530
8530
  fontScheme,
@@ -8535,8 +8535,8 @@ async function applyThemeEditorEdit(input, { colorScheme, fontScheme, name }) {
8535
8535
  (prev) => Object.fromEntries(
8536
8536
  Object.entries(prev).map(([id, elements]) => [
8537
8537
  id,
8538
- (0, chunkFKY33ZKL_js.dist_exports.reResolveElementFonts)(
8539
- (0, chunkFKY33ZKL_js.dist_exports.reResolveElementColors)(elements, previousMap, colorScheme),
8538
+ (0, chunkVJZJESNT_js.dist_exports.reResolveElementFonts)(
8539
+ (0, chunkVJZJESNT_js.dist_exports.reResolveElementColors)(elements, previousMap, colorScheme),
8540
8540
  theme?.fontScheme,
8541
8541
  fontScheme
8542
8542
  )
@@ -8594,13 +8594,13 @@ function useThemeHandlers(input) {
8594
8594
  return;
8595
8595
  }
8596
8596
  await handler.updateThemeColorScheme(colorScheme);
8597
- const previousMap = theme?.colorScheme ? (0, chunkFKY33ZKL_js.dist_exports.buildThemeColorMap)(theme.colorScheme) : {};
8598
- setSlides((prev) => (0, chunkFKY33ZKL_js.dist_exports.reResolveSlideColors)(prev, previousMap, colorScheme));
8597
+ const previousMap = theme?.colorScheme ? (0, chunkVJZJESNT_js.dist_exports.buildThemeColorMap)(theme.colorScheme) : {};
8598
+ setSlides((prev) => (0, chunkVJZJESNT_js.dist_exports.reResolveSlideColors)(prev, previousMap, colorScheme));
8599
8599
  if (Object.keys(templateElementsBySlideId).length > 0) {
8600
8600
  setTemplateElementsBySlideId((prev) => {
8601
8601
  const next = {};
8602
8602
  for (const [slideId, elements] of Object.entries(prev)) {
8603
- next[slideId] = (0, chunkFKY33ZKL_js.dist_exports.reResolveElementColors)(elements, previousMap, colorScheme);
8603
+ next[slideId] = (0, chunkVJZJESNT_js.dist_exports.reResolveElementColors)(elements, previousMap, colorScheme);
8604
8604
  }
8605
8605
  return next;
8606
8606
  });
@@ -8711,7 +8711,7 @@ function useThemeSwitching(input) {
8711
8711
  }
8712
8712
  try {
8713
8713
  await handler.applyTheme(preset.colorScheme, preset.fontScheme, preset.name);
8714
- const newData = (0, chunkFKY33ZKL_js.dist_exports.applyThemeToData)(data, preset.colorScheme, preset.fontScheme, preset.name);
8714
+ const newData = (0, chunkVJZJESNT_js.dist_exports.applyThemeToData)(data, preset.colorScheme, preset.fontScheme, preset.name);
8715
8715
  onDataChange(newData);
8716
8716
  onThemeChanged?.(preset);
8717
8717
  } catch (error) {
@@ -8728,7 +8728,7 @@ function useThemeSwitching(input) {
8728
8728
  }
8729
8729
  try {
8730
8730
  await handler.applyTheme(colorScheme, fontScheme ?? {}, themeName);
8731
- const newData = (0, chunkFKY33ZKL_js.dist_exports.applyThemeToData)(data, colorScheme, fontScheme, themeName);
8731
+ const newData = (0, chunkVJZJESNT_js.dist_exports.applyThemeToData)(data, colorScheme, fontScheme, themeName);
8732
8732
  onDataChange(newData);
8733
8733
  } catch (error) {
8734
8734
  console.error("Failed to switch to custom theme:", error);
@@ -8740,12 +8740,12 @@ function useThemeSwitching(input) {
8740
8740
  if (!data?.theme?.colorScheme) {
8741
8741
  return void 0;
8742
8742
  }
8743
- return chunkFKY33ZKL_js.dist_exports.THEME_PRESETS.find(
8744
- (p) => (0, chunkFKY33ZKL_js.dist_exports.themeColorSchemesEqual)(data.theme?.colorScheme, p.colorScheme)
8743
+ return chunkVJZJESNT_js.dist_exports.THEME_PRESETS.find(
8744
+ (p) => (0, chunkVJZJESNT_js.dist_exports.themeColorSchemesEqual)(data.theme?.colorScheme, p.colorScheme)
8745
8745
  );
8746
8746
  }, [data?.theme?.colorScheme]);
8747
8747
  return {
8748
- presets: chunkFKY33ZKL_js.dist_exports.THEME_PRESETS,
8748
+ presets: chunkVJZJESNT_js.dist_exports.THEME_PRESETS,
8749
8749
  switchToPreset,
8750
8750
  switchToCustom,
8751
8751
  currentPreset
@@ -8822,7 +8822,7 @@ function usePropertyHandlers(input) {
8822
8822
  }
8823
8823
  try {
8824
8824
  const ab = await file.arrayBuffer();
8825
- const h = new chunkFKY33ZKL_js.dist_exports.PptxHandler();
8825
+ const h = new chunkVJZJESNT_js.dist_exports.PptxHandler();
8826
8826
  const other = await h.load(ab);
8827
8827
  if (!other) {
8828
8828
  return;
@@ -8832,7 +8832,7 @@ function usePropertyHandlers(input) {
8832
8832
  width: canvasSize.width,
8833
8833
  height: canvasSize.height
8834
8834
  };
8835
- setCompareResult(chunkFKY33ZKL_js.comparePresentation(cur, other));
8835
+ setCompareResult(chunkVJZJESNT_js.comparePresentation(cur, other));
8836
8836
  setIsComparePanelOpen(true);
8837
8837
  } catch (err) {
8838
8838
  console.warn("Compare failed:", err);
@@ -9185,7 +9185,7 @@ function useViewerDialogs(input) {
9185
9185
  };
9186
9186
  }
9187
9187
  function computeGridSpacingPx(documentGridSpacing) {
9188
- return pptx.computeGridSpacingPx(documentGridSpacing, chunkFKY33ZKL_js.GRID_SIZE);
9188
+ return pptx.computeGridSpacingPx(documentGridSpacing, chunkVJZJESNT_js.GRID_SIZE);
9189
9189
  }
9190
9190
  function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows, presentationProperties) {
9191
9191
  const activeShow = activeCustomShowId ? customShows.find((show) => show.id === activeCustomShowId) : void 0;
@@ -9194,7 +9194,7 @@ function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows, pre
9194
9194
  }
9195
9195
  function computeSlideSectionGroups(slides, sections) {
9196
9196
  return pptx.groupSlidesBySection(sections, slides).map((group) => ({
9197
- id: group.section?.id ?? (sections.length > 0 ? chunkFKY33ZKL_js.UNGROUPED_SECTION_ID : chunkFKY33ZKL_js.DEFAULT_SECTION_GROUP_ID),
9197
+ id: group.section?.id ?? (sections.length > 0 ? chunkVJZJESNT_js.UNGROUPED_SECTION_ID : chunkVJZJESNT_js.DEFAULT_SECTION_GROUP_ID),
9198
9198
  label: group.section?.name ?? (sections.length > 0 ? "Ungrouped Slides" : "Slides"),
9199
9199
  slideIndexes: group.slideIndexes,
9200
9200
  ...group.section?.color !== void 0 ? { color: group.section.color } : {},
@@ -9239,10 +9239,10 @@ function useDerivedSlideState(input) {
9239
9239
  );
9240
9240
  const slideSectionGroups = React17.useMemo(
9241
9241
  () => computeSlideSectionGroups(slides, sections).map((group) => {
9242
- if (group.id === chunkFKY33ZKL_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
9242
+ if (group.id === chunkVJZJESNT_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
9243
9243
  return { ...group, label: t("pptx.slides.ungroupedSlides") };
9244
9244
  }
9245
- if (group.id === chunkFKY33ZKL_js.DEFAULT_SECTION_GROUP_ID && group.label === "Slides") {
9245
+ if (group.id === chunkVJZJESNT_js.DEFAULT_SECTION_GROUP_ID && group.label === "Slides") {
9246
9246
  return { ...group, label: t("pptx.sections.slides") };
9247
9247
  }
9248
9248
  return group;
@@ -9349,7 +9349,7 @@ function useAnnotationHandlers(input) {
9349
9349
  if (nextMode === "present") {
9350
9350
  presentation.enterPresentMode();
9351
9351
  } else if (mode === "present" && annotations.hasAnyAnnotations) {
9352
- chunkFKY33ZKL_js.stopAllPersistentAudio();
9352
+ chunkVJZJESNT_js.stopAllPersistentAudio();
9353
9353
  if (promptKeepInkAnnotations) {
9354
9354
  pendingModeAfterAnnotationsRef.current = nextMode;
9355
9355
  setShowKeepAnnotationsDialog(true);
@@ -9359,7 +9359,7 @@ function useAnnotationHandlers(input) {
9359
9359
  }
9360
9360
  } else {
9361
9361
  if (mode === "present") {
9362
- chunkFKY33ZKL_js.stopAllPersistentAudio();
9362
+ chunkVJZJESNT_js.stopAllPersistentAudio();
9363
9363
  }
9364
9364
  setMode(nextMode);
9365
9365
  }
@@ -9430,7 +9430,7 @@ function overlayPendingInlineEdit(document2, elementId, text, snapshot, transfor
9430
9430
  (slide) => !elementId ? slide : {
9431
9431
  ...slide,
9432
9432
  elements: slide.elements.map(
9433
- (element) => element.id === elementId && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element) ? {
9433
+ (element) => element.id === elementId && (0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(element) ? {
9434
9434
  ...element,
9435
9435
  text,
9436
9436
  textSegments: pptx.remapTextToSegments(
@@ -9519,14 +9519,14 @@ function useSerialize(input) {
9519
9519
  const pptxGuides = guides.map((g) => ({
9520
9520
  id: g.id,
9521
9521
  orientation: g.axis === "h" ? "horz" : "vert",
9522
- positionEmu: (0, chunkFKY33ZKL_js.dist_exports.guidePxToEmu)(g.position)
9522
+ positionEmu: (0, chunkVJZJESNT_js.dist_exports.guidePxToEmu)(g.position)
9523
9523
  }));
9524
9524
  return {
9525
9525
  ...slide,
9526
9526
  guides: pptxGuides.length > 0 ? pptxGuides : void 0
9527
9527
  };
9528
9528
  });
9529
- const slidesToSave = chunkFKY33ZKL_js.buildSaveSlides(slidesWithGuides, pending.templateElementsBySlideId);
9529
+ const slidesToSave = chunkVJZJESNT_js.buildSaveSlides(slidesWithGuides, pending.templateElementsBySlideId);
9530
9530
  const saveOptions = pptx.buildDeckSaveOptions({
9531
9531
  // Without this the Slide Size card edited a viewer-only pixel value and
9532
9532
  // the saved `p:sldSz` never moved: passing `slideSize` is the only way a
@@ -9707,7 +9707,7 @@ function usePresentationSetup(input) {
9707
9707
  return;
9708
9708
  }
9709
9709
  if (mode === "present" && nextMode !== "present") {
9710
- chunkFKY33ZKL_js.stopAllPersistentAudio();
9710
+ chunkVJZJESNT_js.stopAllPersistentAudio();
9711
9711
  stopAnimationSound();
9712
9712
  const exitHandler = exitModeHandlerRef.current;
9713
9713
  if (exitHandler) {
@@ -9828,12 +9828,12 @@ function useCanvasImagePaste(input) {
9828
9828
  );
9829
9829
  }
9830
9830
  function formatPatchFor(element, format) {
9831
- const updated = chunkFKY33ZKL_js.applyFormatToElement(element, format);
9831
+ const updated = chunkVJZJESNT_js.applyFormatToElement(element, format);
9832
9832
  const updates = {};
9833
- if ((0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(updated)) {
9833
+ if ((0, chunkVJZJESNT_js.dist_exports.hasShapeProperties)(updated)) {
9834
9834
  updates.shapeStyle = updated.shapeStyle;
9835
9835
  }
9836
- if ((0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(updated)) {
9836
+ if ((0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(updated)) {
9837
9837
  updates.textStyle = updated.textStyle;
9838
9838
  }
9839
9839
  return updates;
@@ -9851,7 +9851,7 @@ function useFormatPainterEditing(input) {
9851
9851
  const prevFormatPainterRef = React17.useRef(false);
9852
9852
  React17.useEffect(() => {
9853
9853
  if (formatPainterActive && !prevFormatPainterRef.current && selectedElement) {
9854
- copiedFormatRef.current = chunkFKY33ZKL_js.copyFormatFromElement(selectedElement);
9854
+ copiedFormatRef.current = chunkVJZJESNT_js.copyFormatFromElement(selectedElement);
9855
9855
  } else if (!formatPainterActive) {
9856
9856
  copiedFormatRef.current = null;
9857
9857
  }
@@ -10404,7 +10404,7 @@ function useFontInjection({ embeddedFonts, slides }) {
10404
10404
  }
10405
10405
  const styleEl = document.createElement("style");
10406
10406
  styleEl.id = EMBEDDED_FONTS_STYLE_ID;
10407
- const cssRules = embeddedFonts.flatMap((font) => {
10407
+ const cssRules = pptx.selectTrustedEmbeddedFonts(embeddedFonts).flatMap((font) => {
10408
10408
  if (typeof font.name !== "string" || font.name.length === 0 || FONT_NAME_UNSAFE_CHARS.test(font.name)) {
10409
10409
  return [];
10410
10410
  }
@@ -10415,8 +10415,8 @@ function useFontInjection({ embeddedFonts, slides }) {
10415
10415
  if (!FONT_FORMAT_ALLOWED.has(fontFormat)) {
10416
10416
  return [];
10417
10417
  }
10418
- const fontWeight = font.bold ? "700" : "400";
10419
- const fontStyleCss = font.italic ? "italic" : "normal";
10418
+ const fontWeight = String(pptx.resolveFontWeight(font.name, font.bold));
10419
+ const fontStyleCss = pptx.resolveFontItalic(font.name, font.italic) ? "italic" : "normal";
10420
10420
  return [
10421
10421
  `@font-face {
10422
10422
  font-family: "${font.name}";
@@ -10457,7 +10457,7 @@ function useFontInjection({ embeddedFonts, slides }) {
10457
10457
  const referenced = pptx.collectReferencedFontFamilies(slides);
10458
10458
  const candidates = pptx.selectGoogleWebfontFamilies(
10459
10459
  referenced,
10460
- embeddedFonts.map((font) => font.name)
10460
+ pptx.selectTrustedEmbeddedFonts(embeddedFonts).map((font) => font.name)
10461
10461
  );
10462
10462
  if (candidates.length === 0) {
10463
10463
  return;
@@ -10942,7 +10942,7 @@ function useKeyboardShortcutWiring(input) {
10942
10942
  }
10943
10943
  function stepSelectedFontSize(state, ops, direction) {
10944
10944
  const selected = state.selectedElement;
10945
- const currentPx = (selected && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(selected) ? selected.textStyle?.fontSize : void 0) ?? pptx.textFontSizePtToPx(18);
10945
+ const currentPx = (selected && (0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(selected) ? selected.textStyle?.fontSize : void 0) ?? pptx.textFontSizePtToPx(18);
10946
10946
  const nextPt = pptx.stepFontSizePt(pptx.textFontSizePxToPt(currentPx), direction);
10947
10947
  ops.updateSelectedTextStyle({ fontSize: pptx.textFontSizePtToPx(nextPt) });
10948
10948
  }
@@ -11499,7 +11499,7 @@ function useCollaborationWriteBack(input) {
11499
11499
  getSourceBytes: () => latest.current.getSourceBytes?.() ?? null,
11500
11500
  getSaveOptions: () => latest.current.getSaveOptions?.(),
11501
11501
  getTemplateElements: () => latest.current.templateElementsBySlideId,
11502
- mergeTemplateElements: chunkFKY33ZKL_js.buildSaveSlides
11502
+ mergeTemplateElements: chunkVJZJESNT_js.buildSaveSlides
11503
11503
  }),
11504
11504
  [latest]
11505
11505
  );
@@ -12052,8 +12052,8 @@ function useTouchGestures(input) {
12052
12052
  }
12053
12053
  const recognizer = pptx.createTouchGestureRecognizer({
12054
12054
  getScale: () => scaleRef.current,
12055
- minScale: chunkFKY33ZKL_js.MIN_ZOOM_SCALE,
12056
- maxScale: chunkFKY33ZKL_js.MAX_ZOOM_SCALE,
12055
+ minScale: chunkVJZJESNT_js.MIN_ZOOM_SCALE,
12056
+ maxScale: chunkVJZJESNT_js.MAX_ZOOM_SCALE,
12057
12057
  callbacks: {
12058
12058
  onPinchZoom: (newScale) => callbacksRef.current.onPinchZoom?.(newScale),
12059
12059
  onSwipe: (direction) => callbacksRef.current.onSwipe?.(direction),
@@ -12177,7 +12177,7 @@ function buildCanvasProps(input) {
12177
12177
  if (pptx.shouldConfirmExternalHyperlink(viewerOptions, url) && !window.confirm(buildHyperlinkConfirmMessage(url))) {
12178
12178
  return;
12179
12179
  }
12180
- chunkFKY33ZKL_js.safeOpenUrl(url, target);
12180
+ chunkVJZJESNT_js.safeOpenUrl(url, target);
12181
12181
  };
12182
12182
  const handleActionClick = (elementId, action) => {
12183
12183
  if (mode === "present") {
@@ -12192,9 +12192,9 @@ function buildCanvasProps(input) {
12192
12192
  }
12193
12193
  };
12194
12194
  const handleHyperlinkClick = (url, target) => {
12195
- if (chunkFKY33ZKL_js.isPpactionUrl(url)) {
12195
+ if (chunkVJZJESNT_js.isPpactionUrl(url)) {
12196
12196
  if (mode === "present") {
12197
- const parsed = chunkFKY33ZKL_js.parsePpactionUrl(url);
12197
+ const parsed = chunkVJZJESNT_js.parsePpactionUrl(url);
12198
12198
  if (parsed) {
12199
12199
  presentation.handlePresentationAction({
12200
12200
  action: parsed.action,
@@ -12620,7 +12620,7 @@ function buildToolbarProps(input) {
12620
12620
  markDirty: history.markDirty
12621
12621
  }),
12622
12622
  formatPainterActive: s.formatPainterActive,
12623
- canActivateFormatPainter: chunkFKY33ZKL_js.hasCopyableFormat(selectedElement),
12623
+ canActivateFormatPainter: chunkVJZJESNT_js.hasCopyableFormat(selectedElement),
12624
12624
  onToggleFormatPainter: () => s.setFormatPainterActive((p) => !p),
12625
12625
  isSelectionPaneOpen: s.isSelectionPaneOpen,
12626
12626
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -12943,7 +12943,7 @@ function useViewerBuildingBlocksCore(input) {
12943
12943
  documentGridSpacing: state.viewProperties?.gridSpacing
12944
12944
  });
12945
12945
  const themeColorMap = React17.useMemo(
12946
- () => state.theme?.colorScheme ? (0, chunkFKY33ZKL_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
12946
+ () => state.theme?.colorScheme ? (0, chunkVJZJESNT_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
12947
12947
  [state.theme?.colorScheme]
12948
12948
  );
12949
12949
  const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = usePresentationSetup({
@@ -13331,7 +13331,8 @@ function useViewerBuildingBlocks(input) {
13331
13331
  onOpenHeaderFooter,
13332
13332
  onOpenShareDialog
13333
13333
  } = input;
13334
- const [collaborationReadOnly, setCollaborationReadOnly] = React17.useState(Boolean(input.collaboration));
13334
+ const collaborationConfig = pptx.resolveCollaborationConfig(input.collaboration);
13335
+ const [collaborationReadOnly, setCollaborationReadOnly] = React17.useState(Boolean(collaborationConfig));
13335
13336
  const { t } = reactI18next.useTranslation();
13336
13337
  const [content, setContent] = React17.useState(incomingContent ?? null);
13337
13338
  const [loadOrigin, setLoadOrigin] = React17.useState("bootstrap");
@@ -13380,7 +13381,7 @@ function useViewerBuildingBlocks(input) {
13380
13381
  } = core;
13381
13382
  const canEdit = pptx.resolveCollaborationShellEditability({
13382
13383
  authorizedCanEdit: requestedCanEdit,
13383
- configured: Boolean(input.collaboration),
13384
+ configured: Boolean(collaborationConfig),
13384
13385
  readOnly: collaborationReadOnly,
13385
13386
  sourcePending: Boolean(content) && loading,
13386
13387
  sourceError: Boolean(error)
@@ -13416,7 +13417,7 @@ function useViewerBuildingBlocks(input) {
13416
13417
  });
13417
13418
  const { collaboration, overlay } = useViewerBuildingBlocksCollaboration({
13418
13419
  core,
13419
- config: input.collaboration,
13420
+ config: collaborationConfig,
13420
13421
  content,
13421
13422
  loadOrigin,
13422
13423
  loadVersion,
@@ -13481,7 +13482,7 @@ ${url}`
13481
13482
  const shellState = React17.useMemo(
13482
13483
  () => pptx.resolveCollaborationShellState({
13483
13484
  authorizedCanEdit: requestedCanEdit,
13484
- configured: Boolean(input.collaboration),
13485
+ configured: Boolean(collaborationConfig),
13485
13486
  readOnly: collaborationReadOnly,
13486
13487
  sourcePending: Boolean(content) && loading,
13487
13488
  sourceError: Boolean(error),
@@ -13490,7 +13491,7 @@ ${url}`
13490
13491
  }),
13491
13492
  [
13492
13493
  requestedCanEdit,
13493
- input.collaboration,
13494
+ collaborationConfig,
13494
13495
  collaborationReadOnly,
13495
13496
  content,
13496
13497
  loading,
@@ -13518,23 +13519,23 @@ function ColorChangedImage({
13518
13519
  className,
13519
13520
  alt
13520
13521
  }) {
13521
- const tolerance = tolerancePct ?? chunkFKY33ZKL_js.DEFAULT_COLOR_CHANGE_TOLERANCE;
13522
- const cacheKey = chunkFKY33ZKL_js.buildCacheKey(
13522
+ const tolerance = tolerancePct ?? chunkVJZJESNT_js.DEFAULT_COLOR_CHANGE_TOLERANCE;
13523
+ const cacheKey = chunkVJZJESNT_js.buildCacheKey(
13523
13524
  src,
13524
13525
  clrChange.clrFrom,
13525
13526
  clrChange.clrTo,
13526
13527
  tolerance,
13527
13528
  Boolean(clrChange.clrToTransparent)
13528
13529
  );
13529
- const cached = chunkFKY33ZKL_js.getCachedResult(cacheKey);
13530
+ const cached = chunkVJZJESNT_js.getCachedResult(cacheKey);
13530
13531
  const [processedSrc, setProcessedSrc] = React17.useState(cached ?? null);
13531
13532
  React17.useEffect(() => {
13532
- if (chunkFKY33ZKL_js.getCachedResult(cacheKey)) {
13533
- setProcessedSrc(chunkFKY33ZKL_js.getCachedResult(cacheKey) ?? null);
13533
+ if (chunkVJZJESNT_js.getCachedResult(cacheKey)) {
13534
+ setProcessedSrc(chunkVJZJESNT_js.getCachedResult(cacheKey) ?? null);
13534
13535
  return;
13535
13536
  }
13536
13537
  let cancelled = false;
13537
- chunkFKY33ZKL_js.applyColorChange(
13538
+ chunkVJZJESNT_js.applyColorChange(
13538
13539
  src,
13539
13540
  clrChange.clrFrom,
13540
13541
  clrChange.clrTo,
@@ -13542,7 +13543,7 @@ function ColorChangedImage({
13542
13543
  Boolean(clrChange.clrToTransparent)
13543
13544
  ).then((result) => {
13544
13545
  if (!cancelled) {
13545
- chunkFKY33ZKL_js.setCachedResult(cacheKey, result.dataUrl);
13546
+ chunkVJZJESNT_js.setCachedResult(cacheKey, result.dataUrl);
13546
13547
  setProcessedSrc(result.dataUrl);
13547
13548
  }
13548
13549
  return void 0;
@@ -13634,7 +13635,7 @@ function TiledImageLayer({
13634
13635
  cancelled = true;
13635
13636
  };
13636
13637
  }, [src]);
13637
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style: { ...chunkFKY33ZKL_js.getImageTilingStyle(element, nativeSize), ...style } });
13638
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style: { ...chunkVJZJESNT_js.getImageTilingStyle(element, nativeSize), ...style } });
13638
13639
  }
13639
13640
  function renderImageEffectDefinitions(element, excludeDuotone = false) {
13640
13641
  return pptx.getImageSvgFilters(element).filter((definition) => !excludeDuotone || definition.id !== `duotone-${element.id}`).map((definition) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -13703,7 +13704,7 @@ function renderImg(el, style, filter, alt, opacity) {
13703
13704
  ...filter ? { filter } : {},
13704
13705
  ...opacity !== void 0 ? { opacity } : {}
13705
13706
  };
13706
- if (chunkFKY33ZKL_js.isImageTiled(el)) {
13707
+ if (chunkVJZJESNT_js.isImageTiled(el)) {
13707
13708
  const tileSrc = imgSrc(el);
13708
13709
  if (!tileSrc) {
13709
13710
  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" });
@@ -13722,12 +13723,12 @@ function renderImg(el, style, filter, alt, opacity) {
13722
13723
  ] });
13723
13724
  }
13724
13725
  const colorWash = pptx.getImageColorWashStyle(
13725
- (0, chunkFKY33ZKL_js.dist_exports.isImageLikeElement)(el) ? el.imageEffects?.colorWash : void 0
13726
+ (0, chunkVJZJESNT_js.dist_exports.isImageLikeElement)(el) ? el.imageEffects?.colorWash : void 0
13726
13727
  );
13727
13728
  const clrChange = "imageEffects" in el ? el.imageEffects?.clrChange : void 0;
13728
- const duotoneColors = chunkFKY33ZKL_js.getDuotoneColors(el);
13729
+ const duotoneColors = chunkVJZJESNT_js.getDuotoneColors(el);
13729
13730
  const useDuotoneCanvas = Boolean(duotoneColors && !clrChange);
13730
- const filterForImg = useDuotoneCanvas ? chunkFKY33ZKL_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
13731
+ const filterForImg = useDuotoneCanvas ? chunkVJZJESNT_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
13731
13732
  const canvasEffectStyles = {
13732
13733
  ...filterForImg ? { filter: filterForImg } : {},
13733
13734
  ...opacity !== void 0 ? { opacity } : {}
@@ -13803,10 +13804,10 @@ function SlideBackgroundImageLayer({
13803
13804
  style: { zIndex: 0 },
13804
13805
  children: renderImg(
13805
13806
  backgroundElement,
13806
- chunkFKY33ZKL_js.getImageRenderStyle(backgroundElement),
13807
- chunkFKY33ZKL_js.getImageEffectsFilter(backgroundElement),
13807
+ chunkVJZJESNT_js.getImageRenderStyle(backgroundElement),
13808
+ chunkVJZJESNT_js.getImageEffectsFilter(backgroundElement),
13808
13809
  "",
13809
- chunkFKY33ZKL_js.getImageEffectsOpacity(backgroundElement)
13810
+ chunkVJZJESNT_js.getImageEffectsOpacity(backgroundElement)
13810
13811
  )
13811
13812
  }
13812
13813
  );
@@ -14084,7 +14085,7 @@ function ChartElementView({
14084
14085
  pptx.getBarFacePicturePixelSampleVersion
14085
14086
  );
14086
14087
  const viewModel = React17.useMemo(() => {
14087
- return canEdit ? chunkFKY33ZKL_js.buildReactChartViewModel(element) : null;
14088
+ return canEdit ? chunkVJZJESNT_js.buildReactChartViewModel(element) : null;
14088
14089
  }, [canEdit, element, barFacePictureSampleVersion]);
14089
14090
  React17.useEffect(pptx.ensureChartInteractionStyles, []);
14090
14091
  React17.useEffect(() => {
@@ -14189,9 +14190,9 @@ function ChartElementView({
14189
14190
  textStyle: animationState?.textStyle,
14190
14191
  onSelect: chart3D.onSelect,
14191
14192
  onDrag: chart3D.onDrag,
14192
- children: chunkFKY33ZKL_js.renderChartElement(renderedElement, (key) => t(key))
14193
+ children: chunkVJZJESNT_js.renderChartElement(renderedElement, (key) => t(key))
14193
14194
  }
14194
- ) : chunkFKY33ZKL_js.renderChartElement(renderedElement, (key) => t(key)),
14195
+ ) : chunkVJZJESNT_js.renderChartElement(renderedElement, (key) => t(key)),
14195
14196
  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) }),
14196
14197
  titleDraft !== null && /* @__PURE__ */ jsxRuntime.jsx(
14197
14198
  "input",
@@ -14521,7 +14522,7 @@ function ResizeHandles({
14521
14522
  "aria-label": t("pptx.selectionOverlay.resize", { handle }),
14522
14523
  "data-pptx-handle-kind": "resize",
14523
14524
  "data-pptx-compact": true,
14524
- className: chunkFKY33ZKL_js.cn(
14525
+ className: chunkVJZJESNT_js.cn(
14525
14526
  "absolute z-10 group border-0 bg-transparent p-0",
14526
14527
  RESIZE_DEFAULT_CLASSES,
14527
14528
  posClass,
@@ -14547,7 +14548,7 @@ function ResizeHandles({
14547
14548
  "div",
14548
14549
  {
14549
14550
  "data-pptx-handle-hit": true,
14550
- className: chunkFKY33ZKL_js.cn(
14551
+ className: chunkVJZJESNT_js.cn(
14551
14552
  "absolute -inset-px pointer-events-auto [--pptx-handle-hit-inset:-1px]",
14552
14553
  corner ? "max-md:-inset-1.5 max-md:[--pptx-handle-hit-inset:-6px]" : "max-md:-inset-2 max-md:[--pptx-handle-hit-inset:-8px]"
14553
14554
  ),
@@ -14568,7 +14569,7 @@ function ResizeHandles({
14568
14569
  "aria-label": t("pptx.selectionOverlay.rotate"),
14569
14570
  "data-pptx-handle-kind": "rotate",
14570
14571
  "data-pptx-compact": true,
14571
- className: chunkFKY33ZKL_js.cn(
14572
+ className: chunkVJZJESNT_js.cn(
14572
14573
  "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",
14573
14574
  ROTATE_DEFAULT_CLASSES
14574
14575
  ),
@@ -14638,17 +14639,17 @@ var ConnectorElementRenderer = React17__default.default.memo(
14638
14639
  animationState,
14639
14640
  textStyleOverrideCss
14640
14641
  }) {
14641
- const shapeEl = (0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(el) ? el : void 0;
14642
+ const shapeEl = (0, chunkVJZJESNT_js.dist_exports.hasShapeProperties)(el) ? el : void 0;
14642
14643
  const viewWidth = Math.max(el.width, 0);
14643
14644
  const viewHeight = Math.max(el.height, 0);
14644
14645
  const svgWidth = Math.max(el.width, 1);
14645
14646
  const svgHeight = Math.max(el.height, 1);
14646
14647
  const ss = shapeEl?.shapeStyle;
14647
14648
  const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
14648
- const strokeColor = chunkFKY33ZKL_js.normalizeHexColor(ss?.strokeColor, chunkFKY33ZKL_js.DEFAULT_STROKE_COLOR);
14649
- const strokePaint = chunkFKY33ZKL_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
14650
- const dashType = chunkFKY33ZKL_js.normalizeStrokeDashType(ss?.strokeDash);
14651
- const dashArray = chunkFKY33ZKL_js.getSvgStrokeDasharray(
14649
+ const strokeColor = chunkVJZJESNT_js.normalizeHexColor(ss?.strokeColor, chunkVJZJESNT_js.DEFAULT_STROKE_COLOR);
14650
+ const strokePaint = chunkVJZJESNT_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
14651
+ const dashType = chunkVJZJESNT_js.normalizeStrokeDashType(ss?.strokeDash);
14652
+ const dashArray = chunkVJZJESNT_js.getSvgStrokeDasharray(
14652
14653
  dashType,
14653
14654
  Math.max(strokeWidth, 1),
14654
14655
  ss?.customDashSegments
@@ -14659,14 +14660,14 @@ var ConnectorElementRenderer = React17__default.default.memo(
14659
14660
  const markerSeed = el.id.replace(/[^a-zA-Z0-9_-]/gu, "_");
14660
14661
  const startMarkerId = `${markerSeed}-sel-start`;
14661
14662
  const endMarkerId = `${markerSeed}-sel-end`;
14662
- const compoundOffsets = chunkFKY33ZKL_js.getCompoundLineOffsets(compoundLine, strokeWidth);
14663
- const compoundWidths = chunkFKY33ZKL_js.getCompoundLineWidths(compoundLine, strokeWidth);
14663
+ const compoundOffsets = chunkVJZJESNT_js.getCompoundLineOffsets(compoundLine, strokeWidth);
14664
+ const compoundWidths = chunkVJZJESNT_js.getCompoundLineWidths(compoundLine, strokeWidth);
14664
14665
  const strokeCap = pptx.svgLineCap(ss?.lineCap);
14665
- const textEl = (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(el) ? el : void 0;
14666
+ const textEl = (0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(el) ? el : void 0;
14666
14667
  const connectorText = textEl?.text?.trim() ?? "";
14667
14668
  const connectorTextSegments = textEl?.textSegments;
14668
14669
  const connectorTextStyle = textEl?.textStyle;
14669
- const pathGeometry = shapeEl ? chunkFKY33ZKL_js.getConnectorPathGeometry(shapeEl) : {
14670
+ const pathGeometry = shapeEl ? chunkVJZJESNT_js.getConnectorPathGeometry(shapeEl) : {
14670
14671
  pathData: `M 0 0 L ${viewWidth} ${viewHeight}`,
14671
14672
  startX: 0,
14672
14673
  startY: 0,
@@ -14675,16 +14676,16 @@ var ConnectorElementRenderer = React17__default.default.memo(
14675
14676
  };
14676
14677
  const hitTargetWidth = Math.max(strokeWidth * 3, 14);
14677
14678
  const selColor = selClr === "blue-400" ? "#60a5fa" : "#3b82f6";
14678
- const lineShadow = chunkFKY33ZKL_js.buildLineShadowCss(el);
14679
- const lineGlow = chunkFKY33ZKL_js.buildLineGlowFilter(el);
14679
+ const lineShadow = chunkVJZJESNT_js.buildLineShadowCss(el);
14680
+ const lineGlow = chunkVJZJESNT_js.buildLineGlowFilter(el);
14680
14681
  return /* @__PURE__ */ jsxRuntime.jsxs(
14681
14682
  "div",
14682
14683
  {
14683
14684
  "data-pptx-element": "true",
14684
14685
  "data-element-id": el.id,
14685
- role: chunkFKY33ZKL_js.getAriaRole(el, { actionable: false }),
14686
- "aria-label": chunkFKY33ZKL_js.getAriaLabel(el),
14687
- "aria-roledescription": chunkFKY33ZKL_js.getAriaRoleDescription(el),
14686
+ role: chunkVJZJESNT_js.getAriaRole(el, { actionable: false }),
14687
+ "aria-label": chunkVJZJESNT_js.getAriaLabel(el),
14688
+ "aria-roledescription": chunkVJZJESNT_js.getAriaRoleDescription(el),
14688
14689
  "aria-selected": isSelected ? true : void 0,
14689
14690
  className: "absolute",
14690
14691
  style: {
@@ -14717,14 +14718,14 @@ var ConnectorElementRenderer = React17__default.default.memo(
14717
14718
  style: { overflow: "visible", pointerEvents: "none" },
14718
14719
  children: [
14719
14720
  /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
14720
- chunkFKY33ZKL_js.renderConnectorMarker(
14721
+ chunkVJZJESNT_js.renderConnectorMarker(
14721
14722
  startMarkerId,
14722
14723
  startArrow,
14723
14724
  strokePaint,
14724
14725
  ss?.connectorStartArrowWidth,
14725
14726
  ss?.connectorStartArrowLength
14726
14727
  ),
14727
- chunkFKY33ZKL_js.renderConnectorMarker(
14728
+ chunkVJZJESNT_js.renderConnectorMarker(
14728
14729
  endMarkerId,
14729
14730
  endArrow,
14730
14731
  strokePaint,
@@ -14930,14 +14931,14 @@ function getElementInteractionProps({
14930
14931
  };
14931
14932
  }
14932
14933
  function renderDagDuotoneFilterForElement(el) {
14933
- if (!chunkFKY33ZKL_js.hasDagDuotoneEffect(el)) {
14934
+ if (!chunkVJZJESNT_js.hasDagDuotoneEffect(el)) {
14934
14935
  return null;
14935
14936
  }
14936
14937
  const duotone = el.shapeStyle?.dagDuotone;
14937
14938
  if (!duotone) {
14938
14939
  return null;
14939
14940
  }
14940
- return chunkFKY33ZKL_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
14941
+ return chunkVJZJESNT_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
14941
14942
  }
14942
14943
  function getContainerStyle({
14943
14944
  el,
@@ -14950,7 +14951,7 @@ function getContainerStyle({
14950
14951
  has3DExtrusion,
14951
14952
  templateEditing
14952
14953
  }) {
14953
- const ss = (0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(el) ? el.shapeStyle : void 0;
14954
+ const ss = (0, chunkVJZJESNT_js.dist_exports.hasShapeProperties)(el) ? el.shapeStyle : void 0;
14954
14955
  const isPicture = el.type === "picture" || el.type === "image";
14955
14956
  const blurGrowVisible = Boolean(
14956
14957
  ss?.blurGrow && typeof ss.blurRadius === "number" && ss.blurRadius > 0
@@ -14964,10 +14965,10 @@ function getContainerStyle({
14964
14965
  top: isFullscreenMedia ? fs.top : el.y,
14965
14966
  width: isFullscreenMedia ? fs.width : painted.width,
14966
14967
  ...heightStyle,
14967
- transform: isFullscreenMedia ? fs.transform : chunkFKY33ZKL_js.getElementTransform(el),
14968
+ transform: isFullscreenMedia ? fs.transform : chunkVJZJESNT_js.getElementTransform(el),
14968
14969
  transformOrigin: "center",
14969
14970
  overflow: overflowValue,
14970
- clipPath: isPicture ? void 0 : isImg && !has3DExtrusion ? chunkFKY33ZKL_js.getCropShapeClipPath(el) : void 0,
14971
+ clipPath: isPicture ? void 0 : isImg && !has3DExtrusion ? chunkVJZJESNT_js.getCropShapeClipPath(el) : void 0,
14971
14972
  zIndex: isFullscreenMedia ? fs.zIndex : zIndex,
14972
14973
  visibility: animationState?.visible === false ? "hidden" : "visible",
14973
14974
  animation: animationState?.cssAnimation,
@@ -15002,11 +15003,11 @@ function getContainerStyle({
15002
15003
  };
15003
15004
  }
15004
15005
  function shapeParams(element) {
15005
- const style = (0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(element) ? element.shapeStyle : void 0;
15006
+ const style = (0, chunkVJZJESNT_js.dist_exports.hasShapeProperties)(element) ? element.shapeStyle : void 0;
15006
15007
  const strokeWidth = pptx.paintedStrokeWidth(style);
15007
- const strokeColor = chunkFKY33ZKL_js.normalizeHexColor(style?.strokeColor, chunkFKY33ZKL_js.DEFAULT_STROKE_COLOR);
15008
- const fillColor = chunkFKY33ZKL_js.normalizeHexColor(style?.fillColor, chunkFKY33ZKL_js.DEFAULT_FILL_COLOR);
15009
- const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkFKY33ZKL_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
15008
+ const strokeColor = chunkVJZJESNT_js.normalizeHexColor(style?.strokeColor, chunkVJZJESNT_js.DEFAULT_STROKE_COLOR);
15009
+ const fillColor = chunkVJZJESNT_js.normalizeHexColor(style?.fillColor, chunkVJZJESNT_js.DEFAULT_FILL_COLOR);
15010
+ const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkVJZJESNT_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
15010
15011
  return { hf: hasFill, fc: fillColor, sw: strokeWidth, sc: strokeColor };
15011
15012
  }
15012
15013
  var Extrusion3DOverlay = React17__default.default.memo(
@@ -15111,7 +15112,7 @@ function ShapeEffectOverlay({
15111
15112
  const fillOverlayStyle = overlay ? {
15112
15113
  position: "absolute",
15113
15114
  inset: 0,
15114
- ...(0, chunkFKY33ZKL_js.dist_exports.isImageLikeElement)(element) ? chunkFKY33ZKL_js.getImageSurfaceMaskStyle(element) : {},
15115
+ ...(0, chunkVJZJESNT_js.dist_exports.isImageLikeElement)(element) ? chunkVJZJESNT_js.getImageSurfaceMaskStyle(element) : {},
15115
15116
  background: overlay.color,
15116
15117
  mixBlendMode: overlay.blendMode,
15117
15118
  pointerEvents: "none"
@@ -15318,10 +15319,10 @@ var ElementRenderer = React17__default.default.memo(
15318
15319
  const backgroundAnimationState = pptx.getBackgroundAnimationState(el, presentationElementStates);
15319
15320
  const effectPlacement = pptx.getShapeEffectLayerPlacement(el);
15320
15321
  const visualAnimationState = backgroundAnimationState ?? animationState;
15321
- const isTxt = chunkFKY33ZKL_js.isEditableTextElement(el) && allow.textEditable;
15322
- const txtSE = (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(el) ? el.textStyle : void 0;
15322
+ const isTxt = chunkVJZJESNT_js.isEditableTextElement(el) && allow.textEditable;
15323
+ const txtSE = (0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(el) ? el.textStyle : void 0;
15323
15324
  const textStyleOverrideCss = pptx.buildTextStyleOverrideCss(el.id, visualAnimationState?.textStyle);
15324
- const ss = chunkFKY33ZKL_js.getShapeVisualStyle(
15325
+ const ss = chunkVJZJESNT_js.getShapeVisualStyle(
15325
15326
  el,
15326
15327
  hf,
15327
15328
  fc,
@@ -15330,9 +15331,9 @@ var ElementRenderer = React17__default.default.memo(
15330
15331
  visualAnimationState?.animatesFill,
15331
15332
  visualAnimationState?.animatesStroke
15332
15333
  );
15333
- const ts = chunkFKY33ZKL_js.getTextStyleForElement(el, chunkFKY33ZKL_js.DEFAULT_TEXT_COLOR);
15334
+ const ts = chunkVJZJESNT_js.getTextStyleForElement(el, chunkVJZJESNT_js.DEFAULT_TEXT_COLOR);
15334
15335
  const isImg = el.type === "picture" || el.type === "image";
15335
- const vs = chunkFKY33ZKL_js.renderVectorShape(
15336
+ const vs = chunkVJZJESNT_js.renderVectorShape(
15336
15337
  el,
15337
15338
  isImg ? false : hf,
15338
15339
  fc,
@@ -15342,10 +15343,10 @@ var ElementRenderer = React17__default.default.memo(
15342
15343
  visualAnimationState?.animatesStroke
15343
15344
  );
15344
15345
  const isModel3D = el.type === "model3d";
15345
- const isConn = chunkFKY33ZKL_js.isConnectorOrLineElement(el);
15346
- const shapeStyle3d = (0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(el) ? el.shapeStyle : void 0;
15346
+ const isConn = chunkVJZJESNT_js.isConnectorOrLineElement(el);
15347
+ const shapeStyle3d = (0, chunkVJZJESNT_js.dist_exports.hasShapeProperties)(el) ? el.shapeStyle : void 0;
15347
15348
  const extrusionData = React17.useMemo(
15348
- () => chunkFKY33ZKL_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
15349
+ () => chunkVJZJESNT_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
15349
15350
  [shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height]
15350
15351
  );
15351
15352
  const actionAffordance = useActionAffordance(el, canInteract);
@@ -15435,7 +15436,7 @@ var ElementRenderer = React17__default.default.memo(
15435
15436
  "aria-hidden": aria.hidden ? true : void 0,
15436
15437
  "aria-selected": isSelected ? true : void 0,
15437
15438
  tabIndex: isFocusable ? 0 : -1,
15438
- className: chunkFKY33ZKL_js.cn(
15439
+ className: chunkVJZJESNT_js.cn(
15439
15440
  "absolute",
15440
15441
  "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500",
15441
15442
  cur,
@@ -15508,9 +15509,9 @@ var ElementRenderer = React17__default.default.memo(
15508
15509
  txtSE,
15509
15510
  txtS: ts,
15510
15511
  vecShape: backgroundAnimationState && !isImg ? null : vs,
15511
- imgStyle: chunkFKY33ZKL_js.getImageRenderStyle(el),
15512
- imgFilter: chunkFKY33ZKL_js.getImageEffectsFilter(el),
15513
- imgOpacity: chunkFKY33ZKL_js.getImageEffectsOpacity(el),
15512
+ imgStyle: chunkVJZJESNT_js.getImageRenderStyle(el),
15513
+ imgFilter: chunkVJZJESNT_js.getImageEffectsFilter(el),
15514
+ imgOpacity: chunkVJZJESNT_js.getImageEffectsOpacity(el),
15514
15515
  imgAlt: imageAltText,
15515
15516
  isTxtEl: isTxt,
15516
15517
  media: mediaDataUrls,
@@ -15647,10 +15648,10 @@ function renderStrokeView(view, pressureSensitive, replayStyle, key) {
15647
15648
  }
15648
15649
  function renderInk(el, options) {
15649
15650
  const replay = options?.replay ?? false;
15650
- const strokes = chunkFKY33ZKL_js.buildInkGroupStrokes(el, { color: "#000", width: 3 });
15651
+ const strokes = chunkVJZJESNT_js.buildInkGroupStrokes(el, { color: "#000", width: 3 });
15651
15652
  strokes.some((s) => s.circles || s.nibMarks);
15652
15653
  const pressureSensitive = options?.pressureSensitive;
15653
- const replayStyles = replay ? chunkFKY33ZKL_js.getInkReplayStyles(el, options?.replayConfig) : null;
15654
+ const replayStyles = replay ? chunkVJZJESNT_js.getInkReplayStyles(el, options?.replayConfig) : null;
15654
15655
  return /* @__PURE__ */ jsxRuntime.jsxs(
15655
15656
  "svg",
15656
15657
  {
@@ -15658,7 +15659,7 @@ function renderInk(el, options) {
15658
15659
  viewBox: `0 0 ${Math.max(el.width, 1)} ${Math.max(el.height, 1)}`,
15659
15660
  preserveAspectRatio: "none",
15660
15661
  children: [
15661
- replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkFKY33ZKL_js.INK_REPLAY_KEYFRAMES }),
15662
+ replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkVJZJESNT_js.INK_REPLAY_KEYFRAMES }),
15662
15663
  strokes.map(
15663
15664
  (s, i) => renderStrokeView(s, pressureSensitive, replayStyles?.[i], `${el.id}-ink-${i}`)
15664
15665
  )
@@ -15669,7 +15670,7 @@ function renderInk(el, options) {
15669
15670
  function renderGroup(children, parentGroupFill) {
15670
15671
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full h-full pointer-events-none", children: pptx.filterRenderedElements(children).map((c, childIndex) => {
15671
15672
  const { hf, fc, sw, sc } = shapeParams(c);
15672
- const baseSs = chunkFKY33ZKL_js.getShapeVisualStyle(c, hf, fc, sw, sc);
15673
+ const baseSs = chunkVJZJESNT_js.getShapeVisualStyle(c, hf, fc, sw, sc);
15673
15674
  const inheritedFill = pptx.resolveGroupChildFill(c, parentGroupFill);
15674
15675
  const ss = inheritedFill ? {
15675
15676
  ...baseSs,
@@ -15680,9 +15681,9 @@ function renderGroup(children, parentGroupFill) {
15680
15681
  backgroundPosition: inheritedFill.backgroundPosition
15681
15682
  } : baseSs;
15682
15683
  const isI = c.type === "picture" || c.type === "image";
15683
- const vs = chunkFKY33ZKL_js.renderVectorShape(c, isI ? false : hf, fc, sw, sc);
15684
- const ts = chunkFKY33ZKL_js.getTextStyleForElement(c, chunkFKY33ZKL_js.DEFAULT_TEXT_COLOR);
15685
- const isTxt = chunkFKY33ZKL_js.isEditableTextElement(c);
15684
+ const vs = chunkVJZJESNT_js.renderVectorShape(c, isI ? false : hf, fc, sw, sc);
15685
+ const ts = chunkVJZJESNT_js.getTextStyleForElement(c, chunkVJZJESNT_js.DEFAULT_TEXT_COLOR);
15686
+ const isTxt = chunkVJZJESNT_js.isEditableTextElement(c);
15686
15687
  return /* @__PURE__ */ jsxRuntime.jsxs(
15687
15688
  "div",
15688
15689
  {
@@ -15691,9 +15692,9 @@ function renderGroup(children, parentGroupFill) {
15691
15692
  style: {
15692
15693
  left: c.x,
15693
15694
  top: c.y,
15694
- width: Math.max(c.width, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE),
15695
- height: Math.max(c.height, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE),
15696
- transform: chunkFKY33ZKL_js.getElementTransform(c),
15695
+ width: Math.max(c.width, chunkVJZJESNT_js.MIN_ELEMENT_SIZE),
15696
+ height: Math.max(c.height, chunkVJZJESNT_js.MIN_ELEMENT_SIZE),
15697
+ transform: chunkVJZJESNT_js.getElementTransform(c),
15697
15698
  transformOrigin: "center",
15698
15699
  ...ss,
15699
15700
  ...isI ? {
@@ -15718,8 +15719,8 @@ function renderGroup(children, parentGroupFill) {
15718
15719
  // A nested group: recurse, chaining the inherited fill so a
15719
15720
  // `grpFill` shape under a fill-less sub-group still paints.
15720
15721
  renderGroup(c.children, pptx.getGroupChildParentFill(c, parentGroupFill))
15721
- ) : isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunkFKY33ZKL_js.getImageSurfaceStyle(c), children: [
15722
- chunkFKY33ZKL_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
15722
+ ) : isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunkVJZJESNT_js.getImageSurfaceStyle(c), children: [
15723
+ chunkVJZJESNT_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
15723
15724
  TiledImageLayer,
15724
15725
  {
15725
15726
  element: c,
@@ -15732,7 +15733,7 @@ function renderGroup(children, parentGroupFill) {
15732
15733
  src: "svgData" in c && c.svgData ? c.svgData : c.imageData,
15733
15734
  alt: i18n.translationsEn["pptx.ink.groupChildAlt"],
15734
15735
  className: "pointer-events-none select-none",
15735
- style: chunkFKY33ZKL_js.getImageRenderStyle(c),
15736
+ style: chunkVJZJESNT_js.getImageRenderStyle(c),
15736
15737
  draggable: false
15737
15738
  }
15738
15739
  ),
@@ -15744,7 +15745,7 @@ function renderGroup(children, parentGroupFill) {
15744
15745
  {
15745
15746
  className: "relative z-10 w-full h-full pointer-events-none whitespace-pre-wrap break-words leading-[1.3]",
15746
15747
  style: ts,
15747
- children: chunkFKY33ZKL_js.renderTextSegments(c, chunkFKY33ZKL_js.DEFAULT_TEXT_COLOR)
15748
+ children: chunkVJZJESNT_js.renderTextSegments(c, chunkVJZJESNT_js.DEFAULT_TEXT_COLOR)
15748
15749
  }
15749
15750
  ) : null
15750
15751
  ] })
@@ -15758,8 +15759,8 @@ function renderContentPart(el, options) {
15758
15759
  if (el.inkStrokes && el.inkStrokes.length > 0) {
15759
15760
  const replay = options?.replay ?? false;
15760
15761
  const pressureSensitive = options?.pressureSensitive ?? true;
15761
- const strokes = chunkFKY33ZKL_js.buildContentPartStrokes(el);
15762
- const replayStyles = replay ? chunkFKY33ZKL_js.getContentPartReplayStyles(el.inkStrokes, options?.replayConfig) : null;
15762
+ const strokes = chunkVJZJESNT_js.buildContentPartStrokes(el);
15763
+ const replayStyles = replay ? chunkVJZJESNT_js.getContentPartReplayStyles(el.inkStrokes, options?.replayConfig) : null;
15763
15764
  return /* @__PURE__ */ jsxRuntime.jsxs(
15764
15765
  "svg",
15765
15766
  {
@@ -15767,7 +15768,7 @@ function renderContentPart(el, options) {
15767
15768
  viewBox: `0 0 ${Math.max(el.width, 1)} ${Math.max(el.height, 1)}`,
15768
15769
  preserveAspectRatio: "none",
15769
15770
  children: [
15770
- replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkFKY33ZKL_js.INK_REPLAY_KEYFRAMES }),
15771
+ replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkVJZJESNT_js.INK_REPLAY_KEYFRAMES }),
15771
15772
  strokes.map(
15772
15773
  (s, i) => renderStrokeView(s, pressureSensitive, replayStyles?.[i], `${el.id}-cp-ink-${i}`)
15773
15774
  )
@@ -15994,9 +15995,9 @@ function useInlineListEditor(element, rootRef, onChange, onModelReplacement) {
15994
15995
  collaboration: connected,
15995
15996
  model: pptx.createInlineListModelObserver(element),
15996
15997
  activationSelection,
15997
- children: seed && !connected ? chunkFKY33ZKL_js.renderTextSegments(
15998
+ children: seed && !connected ? chunkVJZJESNT_js.renderTextSegments(
15998
15999
  element,
15999
- chunkFKY33ZKL_js.DEFAULT_TEXT_COLOR,
16000
+ chunkVJZJESNT_js.DEFAULT_TEXT_COLOR,
16000
16001
  void 0,
16001
16002
  void 0,
16002
16003
  void 0,
@@ -16166,7 +16167,7 @@ function InlineTextEditor({
16166
16167
  seedRef.current = {
16167
16168
  initialText,
16168
16169
  hasRichSegments: Boolean(
16169
- (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element) && element.textSegments && element.textSegments.length > 0
16170
+ (0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(element) && element.textSegments && element.textSegments.length > 0
16170
16171
  )
16171
16172
  };
16172
16173
  }
@@ -16232,8 +16233,8 @@ function InlineTextEditor({
16232
16233
  pending.endOffset
16233
16234
  );
16234
16235
  });
16235
- const warpStyle = chunkFKY33ZKL_js.getTextWarpStyle(textStyleRaw);
16236
- const compensationTransform = chunkFKY33ZKL_js.getTextCompensationTransform(element);
16236
+ const warpStyle = chunkVJZJESNT_js.getTextWarpStyle(textStyleRaw);
16237
+ const compensationTransform = chunkVJZJESNT_js.getTextCompensationTransform(element);
16237
16238
  const warpTransform = warpStyle?.transform;
16238
16239
  const mergedTransform = [compensationTransform, warpTransform].filter(Boolean).join(" ") || void 0;
16239
16240
  const wrapperStyle = {
@@ -16244,7 +16245,7 @@ function InlineTextEditor({
16244
16245
  transformOrigin: warpStyle?.transformOrigin || "center"
16245
16246
  };
16246
16247
  const nextInlineStyleValue = (property) => {
16247
- if (!(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element)) {
16248
+ if (!(0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(element)) {
16248
16249
  return true;
16249
16250
  }
16250
16251
  const result = pptx.getInlineEditorSelectionResult(element.textSegments);
@@ -16321,7 +16322,7 @@ function InlineTextEditor({
16321
16322
  const text = e.clipboardData.getData("text/plain");
16322
16323
  document.execCommand("insertText", false, text);
16323
16324
  },
16324
- children: list.seed ? list.children : seed.hasRichSegments ? chunkFKY33ZKL_js.renderTextSegments(element, chunkFKY33ZKL_js.DEFAULT_TEXT_COLOR) : seed.initialText
16325
+ children: list.seed ? list.children : seed.hasRichSegments ? chunkVJZJESNT_js.renderTextSegments(element, chunkVJZJESNT_js.DEFAULT_TEXT_COLOR) : seed.initialText
16325
16326
  },
16326
16327
  list.seed?.paragraphs[0].token ?? "plain"
16327
16328
  );
@@ -17258,7 +17259,7 @@ function SmartArtRendererImpl({
17258
17259
  if (!onUpdateElement || !pptx.shouldCommitSmartArtNodeText(smartArtData, nodeId, text)) {
17259
17260
  return;
17260
17261
  }
17261
- const updated = (0, chunkFKY33ZKL_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text);
17262
+ const updated = (0, chunkVJZJESNT_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text);
17262
17263
  const box = { width: element.width, height: element.height };
17263
17264
  const reflowed = pptx.rebuildDrawingShapesIfCleared(
17264
17265
  updated,
@@ -17274,7 +17275,7 @@ function SmartArtRendererImpl({
17274
17275
  if (!onUpdateElement) {
17275
17276
  return;
17276
17277
  }
17277
- const next = (0, chunkFKY33ZKL_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, { fillColor: fill });
17278
+ const next = (0, chunkVJZJESNT_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, { fillColor: fill });
17278
17279
  if (next !== smartArtData) {
17279
17280
  const box = { width: element.width, height: element.height };
17280
17281
  const reflowed = pptx.rebuildDrawingShapesIfCleared(
@@ -17468,7 +17469,7 @@ function groupIntoParagraphs(element, fieldContext) {
17468
17469
  element,
17469
17470
  fieldContext ? (seg) => {
17470
17471
  if (seg.fieldType) {
17471
- const substituted = chunkFKY33ZKL_js.substituteFieldText(
17472
+ const substituted = chunkVJZJESNT_js.substituteFieldText(
17472
17473
  seg.text,
17473
17474
  seg.fieldType,
17474
17475
  fieldContext,
@@ -17503,13 +17504,13 @@ function getSegmentTspanProps(segment, element, fallbackColor) {
17503
17504
  if (s.strikethrough) {
17504
17505
  decos.push("line-through");
17505
17506
  }
17506
- const fill = s.hyperlink ? chunkFKY33ZKL_js.normalizeHexColor(s.color || element.textStyle?.color, chunkFKY33ZKL_js.HYPERLINK_COLOR) : chunkFKY33ZKL_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
17507
+ const fill = s.hyperlink ? chunkVJZJESNT_js.normalizeHexColor(s.color || element.textStyle?.color, chunkVJZJESNT_js.HYPERLINK_COLOR) : chunkVJZJESNT_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
17507
17508
  return {
17508
17509
  fill,
17509
- fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunkFKY33ZKL_js.DEFAULT_TEXT_FONT_SIZE,
17510
- fontWeight: s.bold ? 700 : 400,
17511
- fontStyle: s.italic ? "italic" : void 0,
17512
- fontFamily: s.fontFamily || element.textStyle?.fontFamily ? (0, chunkFKY33ZKL_js.dist_exports.getSubstituteFontFamily)(s.fontFamily || element.textStyle?.fontFamily || "") : chunkFKY33ZKL_js.DEFAULT_FONT_FAMILY,
17510
+ fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunkVJZJESNT_js.DEFAULT_TEXT_FONT_SIZE,
17511
+ fontWeight: pptx.resolveFontWeight(s.fontFamily || element.textStyle?.fontFamily, s.bold),
17512
+ fontStyle: pptx.resolveFontItalic(s.fontFamily || element.textStyle?.fontFamily, s.italic) ? "italic" : void 0,
17513
+ fontFamily: s.fontFamily || element.textStyle?.fontFamily ? (0, chunkVJZJESNT_js.dist_exports.getSubstituteFontFamily)(s.fontFamily || element.textStyle?.fontFamily || "") : chunkVJZJESNT_js.DEFAULT_FONT_FAMILY,
17513
17514
  textDecoration: decos.length > 0 ? decos.join(" ") : void 0
17514
17515
  };
17515
17516
  }
@@ -17517,8 +17518,8 @@ function resolveSegmentFont(segment, element) {
17517
17518
  const s = segment.style || {};
17518
17519
  const family = s.fontFamily || element.textStyle?.fontFamily;
17519
17520
  return {
17520
- fontFamily: family ? (0, chunkFKY33ZKL_js.dist_exports.getSubstituteFontFamily)(family) : chunkFKY33ZKL_js.DEFAULT_FONT_FAMILY,
17521
- fontSizePx: s.fontSize ?? element.textStyle?.fontSize ?? chunkFKY33ZKL_js.DEFAULT_TEXT_FONT_SIZE,
17521
+ fontFamily: family ? (0, chunkVJZJESNT_js.dist_exports.getSubstituteFontFamily)(family) : chunkVJZJESNT_js.DEFAULT_FONT_FAMILY,
17522
+ fontSizePx: s.fontSize ?? element.textStyle?.fontSize ?? chunkVJZJESNT_js.DEFAULT_TEXT_FONT_SIZE,
17522
17523
  bold: s.bold ?? element.textStyle?.bold,
17523
17524
  italic: s.italic ?? element.textStyle?.italic
17524
17525
  };
@@ -17584,7 +17585,7 @@ function WarpedText({
17584
17585
  fallbackColor,
17585
17586
  fieldContext
17586
17587
  }) {
17587
- if (!(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element)) {
17588
+ if (!(0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(element)) {
17588
17589
  return null;
17589
17590
  }
17590
17591
  const textEl = element;
@@ -17602,9 +17603,9 @@ function WarpedText({
17602
17603
  const warpAdj2 = textEl.textStyle?.textWarpAdj2;
17603
17604
  const align = textEl.textStyle?.align ?? "center";
17604
17605
  const { startOffset, textAnchor } = getAlignmentProps(align);
17605
- const baseFontSize = textEl.textStyle?.fontSize ?? chunkFKY33ZKL_js.DEFAULT_TEXT_FONT_SIZE;
17606
- const baseFontFamily = textEl.textStyle?.fontFamily ? (0, chunkFKY33ZKL_js.dist_exports.getSubstituteFontFamily)(textEl.textStyle.fontFamily) : chunkFKY33ZKL_js.DEFAULT_FONT_FAMILY;
17607
- const baseFill = chunkFKY33ZKL_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
17606
+ const baseFontSize = textEl.textStyle?.fontSize ?? chunkVJZJESNT_js.DEFAULT_TEXT_FONT_SIZE;
17607
+ const baseFontFamily = textEl.textStyle?.fontFamily ? (0, chunkVJZJESNT_js.dist_exports.getSubstituteFontFamily)(textEl.textStyle.fontFamily) : chunkVJZJESNT_js.DEFAULT_FONT_FAMILY;
17608
+ const baseFill = chunkVJZJESNT_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
17608
17609
  if (pptx.hasGlyphEnvelope(preset)) {
17609
17610
  const perLine = pptx.buildGlyphEnvelopeBlock(
17610
17611
  preset,
@@ -17678,8 +17679,8 @@ function WarpedText({
17678
17679
  fontSize: baseFontSize,
17679
17680
  fontFamily: baseFontFamily,
17680
17681
  fill: baseFill,
17681
- fontWeight: textEl.textStyle?.bold ? 700 : 400,
17682
- fontStyle: textEl.textStyle?.italic ? "italic" : "normal",
17682
+ fontWeight: pptx.resolveFontWeight(textEl.textStyle?.fontFamily, textEl.textStyle?.bold),
17683
+ fontStyle: pptx.resolveFontItalic(textEl.textStyle?.fontFamily, textEl.textStyle?.italic) ? "italic" : "normal",
17683
17684
  children: /* @__PURE__ */ jsxRuntime.jsx(
17684
17685
  "textPath",
17685
17686
  {
@@ -17704,7 +17705,7 @@ function WarpedText({
17704
17705
  );
17705
17706
  }
17706
17707
  var GLYPH_BY_SHAPE = Object.fromEntries(
17707
- chunkFKY33ZKL_js.ACTION_BUTTON_PRESETS.map((p) => [p.shapeType, p.iconPath])
17708
+ chunkVJZJESNT_js.ACTION_BUTTON_PRESETS.map((p) => [p.shapeType, p.iconPath])
17708
17709
  );
17709
17710
  GLYPH_BY_SHAPE["actionButtonForwardOrNext"] = GLYPH_BY_SHAPE["actionButtonForwardNext"];
17710
17711
  GLYPH_BY_SHAPE["actionButtonBackOrPrevious"] = GLYPH_BY_SHAPE["actionButtonBackPrevious"];
@@ -17774,11 +17775,11 @@ function renderTextElementBody(options) {
17774
17775
  const isLinkedTextBox = pptx.isLinkedTextBox(el);
17775
17776
  const linkedSegments = pptx.getOverflowSegments(el, slideElements);
17776
17777
  const useSvgWarp = pptx.shouldUseSvgWarp(
17777
- (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(el) ? el.textStyle?.textWarpPreset : void 0
17778
+ (0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(el) ? el.textStyle?.textWarpPreset : void 0
17778
17779
  );
17779
- const scene3dStyle = (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(el) ? chunkFKY33ZKL_js.buildTextBody3DSceneStyle(el.textStyle, { width: el.width, height: el.height }) : void 0;
17780
+ const scene3dStyle = (0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(el) ? chunkVJZJESNT_js.buildTextBody3DSceneStyle(el.textStyle, { width: el.width, height: el.height }) : void 0;
17780
17781
  const rotationTransform = pptx.getTextBodyRotationTransform(el);
17781
- const composedTransform = [rotationTransform, chunkFKY33ZKL_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
17782
+ const composedTransform = [rotationTransform, chunkVJZJESNT_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
17782
17783
  const transformStyle = {
17783
17784
  transform: composedTransform,
17784
17785
  // A COM-measured homography (`scene3dStyle.transformOrigin === '0 0'`)
@@ -17808,18 +17809,18 @@ function renderTextElementBody(options) {
17808
17809
  shouldRenderText && (useSvgWarp ? /* @__PURE__ */ jsxRuntime.jsx(
17809
17810
  "div",
17810
17811
  {
17811
- className: chunkFKY33ZKL_js.cn(
17812
+ className: chunkVJZJESNT_js.cn(
17812
17813
  "relative z-10 w-full h-full",
17813
17814
  onHyperlinkClick ? "" : "pointer-events-none"
17814
17815
  ),
17815
- style: { ...chunkFKY33ZKL_js.getTextLayoutStyle(el), ...transformStyle },
17816
+ style: { ...chunkVJZJESNT_js.getTextLayoutStyle(el), ...transformStyle },
17816
17817
  children: /* @__PURE__ */ jsxRuntime.jsx(
17817
17818
  WarpedText,
17818
17819
  {
17819
17820
  element: el,
17820
17821
  width: el.width,
17821
17822
  height: el.height,
17822
- fallbackColor: chunkFKY33ZKL_js.DEFAULT_TEXT_COLOR,
17823
+ fallbackColor: chunkVJZJESNT_js.DEFAULT_TEXT_COLOR,
17823
17824
  findHighlights: findHl,
17824
17825
  fieldContext
17825
17826
  }
@@ -17828,19 +17829,19 @@ function renderTextElementBody(options) {
17828
17829
  ) : /* @__PURE__ */ jsxRuntime.jsx(
17829
17830
  "div",
17830
17831
  {
17831
- className: chunkFKY33ZKL_js.cn(
17832
+ className: chunkVJZJESNT_js.cn(
17832
17833
  "relative z-10 w-full h-full whitespace-pre-wrap break-words leading-[1.3]",
17833
17834
  onHyperlinkClick ? "" : "pointer-events-none"
17834
17835
  ),
17835
17836
  style: {
17836
- ...chunkFKY33ZKL_js.getTextLayoutStyle(el),
17837
+ ...chunkVJZJESNT_js.getTextLayoutStyle(el),
17837
17838
  ...txtS,
17838
- ...chunkFKY33ZKL_js.getTextWarpStyle(txtSE),
17839
+ ...chunkVJZJESNT_js.getTextWarpStyle(txtSE),
17839
17840
  ...transformStyle
17840
17841
  },
17841
- children: chunkFKY33ZKL_js.renderTextSegments(
17842
+ children: chunkVJZJESNT_js.renderTextSegments(
17842
17843
  el,
17843
- chunkFKY33ZKL_js.DEFAULT_TEXT_COLOR,
17844
+ chunkVJZJESNT_js.DEFAULT_TEXT_COLOR,
17844
17845
  void 0,
17845
17846
  findHl,
17846
17847
  onHyperlinkClick,
@@ -18159,7 +18160,7 @@ function renderBody(options) {
18159
18160
  );
18160
18161
  }
18161
18162
  if (isImg) {
18162
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunkFKY33ZKL_js.getImageSurfaceStyle(el), children: [
18163
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunkVJZJESNT_js.getImageSurfaceStyle(el), children: [
18163
18164
  renderImg(el, imgStyle, imgFilter, imgAlt, imgOpacity),
18164
18165
  vecShape ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0", children: vecShape }) : null
18165
18166
  ] });
@@ -18176,7 +18177,7 @@ function renderBody(options) {
18176
18177
  textDirection: txtSE?.textDirection,
18177
18178
  textStyle: txtS,
18178
18179
  textStyleRaw: txtSE,
18179
- layoutStyle: chunkFKY33ZKL_js.getTextLayoutStyle(el),
18180
+ layoutStyle: chunkVJZJESNT_js.getTextLayoutStyle(el),
18180
18181
  element: el,
18181
18182
  onCommit,
18182
18183
  onCancel,
@@ -18187,7 +18188,7 @@ function renderBody(options) {
18187
18188
  ] });
18188
18189
  }
18189
18190
  if (el.type === "table") {
18190
- return chunkFKY33ZKL_js.renderTableElement(el, txtS, {
18191
+ return chunkVJZJESNT_js.renderTableElement(el, txtS, {
18191
18192
  editable: isSel,
18192
18193
  selectedCell: isSel ? tableSt : null,
18193
18194
  onSelectCell: onCellSel,
@@ -18220,7 +18221,7 @@ function renderBody(options) {
18220
18221
  );
18221
18222
  }
18222
18223
  if (el.type === "media") {
18223
- return chunkFKY33ZKL_js.renderMediaElement(el, media, {
18224
+ return chunkVJZJESNT_js.renderMediaElement(el, media, {
18224
18225
  // Present mode autoplays every media element on the active slide,
18225
18226
  // not only ones persisted with their own `autoPlay` flag (matching
18226
18227
  // the other four bindings' unconditional `presenting`-gated
@@ -18243,7 +18244,7 @@ function renderBody(options) {
18243
18244
  onPlayStateChange: handleMediaPlayStateChange
18244
18245
  });
18245
18246
  }
18246
- if (doInk && (0, chunkFKY33ZKL_js.dist_exports.isInkElement)(el)) {
18247
+ if (doInk && (0, chunkVJZJESNT_js.dist_exports.isInkElement)(el)) {
18247
18248
  return renderInk(el, {
18248
18249
  replay: isPresentationPassive,
18249
18250
  pressureSensitive: true
@@ -18272,27 +18273,27 @@ function renderBody(options) {
18272
18273
  }
18273
18274
  return renderGroup(el.children, pptx.getGroupChildParentFill(el));
18274
18275
  }
18275
- if (chunkFKY33ZKL_js.shouldRenderFallbackLabel(el, isTxtEl)) {
18276
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkFKY33ZKL_js.getElementLabel(el) });
18276
+ if (chunkVJZJESNT_js.shouldRenderFallbackLabel(el, isTxtEl)) {
18277
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkVJZJESNT_js.getElementLabel(el) });
18277
18278
  }
18278
18279
  return renderTextElementBody(options);
18279
18280
  }
18280
18281
  function defaultTextColorForFill(fillColor) {
18281
18282
  const hex = String(fillColor ?? "").replace(/^#/u, "");
18282
18283
  if (!/^[0-9a-f]{6}$/iu.test(hex)) {
18283
- return chunkFKY33ZKL_js.DEFAULT_TEXT_COLOR;
18284
+ return chunkVJZJESNT_js.DEFAULT_TEXT_COLOR;
18284
18285
  }
18285
18286
  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);
18286
18287
  const luminance = channels[0] * 0.2126 + channels[1] * 0.7152 + channels[2] * 0.0722;
18287
- return luminance > 0.179 ? chunkFKY33ZKL_js.DEFAULT_TEXT_COLOR : "#ffffff";
18288
+ return luminance > 0.179 ? chunkVJZJESNT_js.DEFAULT_TEXT_COLOR : "#ffffff";
18288
18289
  }
18289
18290
  function getStaticElementVisualState(element, parentGroupFill) {
18290
- const style = (0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(element) ? element.shapeStyle : void 0;
18291
- const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkFKY33ZKL_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
18292
- const fill = chunkFKY33ZKL_js.normalizeHexColor(style?.fillColor, chunkFKY33ZKL_js.DEFAULT_FILL_COLOR);
18291
+ const style = (0, chunkVJZJESNT_js.dist_exports.hasShapeProperties)(element) ? element.shapeStyle : void 0;
18292
+ const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkVJZJESNT_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
18293
+ const fill = chunkVJZJESNT_js.normalizeHexColor(style?.fillColor, chunkVJZJESNT_js.DEFAULT_FILL_COLOR);
18293
18294
  const strokeWidth = pptx.paintedStrokeWidth(style);
18294
- const stroke = chunkFKY33ZKL_js.normalizeHexColor(style?.strokeColor, chunkFKY33ZKL_js.DEFAULT_STROKE_COLOR);
18295
- const baseVisualStyle = chunkFKY33ZKL_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
18295
+ const stroke = chunkVJZJESNT_js.normalizeHexColor(style?.strokeColor, chunkVJZJESNT_js.DEFAULT_STROKE_COLOR);
18296
+ const baseVisualStyle = chunkVJZJESNT_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
18296
18297
  const inheritedFill = pptx.resolveGroupChildFill(element, parentGroupFill);
18297
18298
  const visualStyle = inheritedFill ? {
18298
18299
  ...baseVisualStyle,
@@ -18302,13 +18303,13 @@ function getStaticElementVisualState(element, parentGroupFill) {
18302
18303
  backgroundSize: inheritedFill.backgroundSize,
18303
18304
  backgroundPosition: inheritedFill.backgroundPosition
18304
18305
  } : baseVisualStyle;
18305
- const textStyle = chunkFKY33ZKL_js.getTextStyleForElement(
18306
+ const textStyle = chunkVJZJESNT_js.getTextStyleForElement(
18306
18307
  element,
18307
- element.type === "shape" && hasFill ? defaultTextColorForFill(fill) : chunkFKY33ZKL_js.DEFAULT_TEXT_COLOR
18308
+ element.type === "shape" && hasFill ? defaultTextColorForFill(fill) : chunkVJZJESNT_js.DEFAULT_TEXT_COLOR
18308
18309
  );
18309
18310
  const isImage = element.type === "picture" || element.type === "image";
18310
- const letsTextOverflow = (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element) && element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
18311
- const shapeType = (0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(element) ? element.shapeType : void 0;
18311
+ const letsTextOverflow = (0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(element) && element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
18312
+ const shapeType = (0, chunkVJZJESNT_js.dist_exports.hasShapeProperties)(element) ? element.shapeType : void 0;
18312
18313
  const isCallout = pptx.isWedgeCalloutPresetShape(shapeType) || String(shapeType ?? "").toLowerCase().includes("callout");
18313
18314
  return {
18314
18315
  hasFill,
@@ -18329,7 +18330,7 @@ function getStaticElementInteractionState(element, hasActionHandler, exposeEleme
18329
18330
  return { action, isActionable, contractRole };
18330
18331
  }
18331
18332
  function getStaticElementWrapperClassName(element, visual, positioned, isActionable) {
18332
- const overflowClass = visual.isImage || element.type === "group" || chunkFKY33ZKL_js.isConnectorOrLineElement(element) || visual.isCallout || visual.letsTextOverflow ? "" : "overflow-hidden";
18333
+ const overflowClass = visual.isImage || visual.strokeWidth > 0 || element.type === "group" || chunkVJZJESNT_js.isConnectorOrLineElement(element) || visual.isCallout || visual.letsTextOverflow ? "" : "overflow-hidden";
18333
18334
  const pointerClass = isActionable ? "pointer-events-auto cursor-pointer" : "pointer-events-none";
18334
18335
  return `${positioned ? "absolute" : "relative"} ${overflowClass} ${pointerClass}`;
18335
18336
  }
@@ -18382,7 +18383,7 @@ function StaticElementRendererImpl({
18382
18383
  "data-pptx-action": isActionable ? "click" : void 0,
18383
18384
  className: getStaticElementWrapperClassName(
18384
18385
  element,
18385
- { isImage, letsTextOverflow, isCallout },
18386
+ { isImage, letsTextOverflow, isCallout, strokeWidth },
18386
18387
  positioned,
18387
18388
  isActionable
18388
18389
  ),
@@ -18412,7 +18413,7 @@ function StaticElementRendererImpl({
18412
18413
  top: positioned ? element.y : void 0,
18413
18414
  width: positioned ? Math.max(element.width, 1) : "100%",
18414
18415
  height: positioned ? Math.max(element.height, 1) : "100%",
18415
- transform: positioned ? chunkFKY33ZKL_js.getElementTransform(element) : void 0,
18416
+ transform: positioned ? chunkVJZJESNT_js.getElementTransform(element) : void 0,
18416
18417
  transformOrigin: "center",
18417
18418
  zIndex,
18418
18419
  ...visualStyle,
@@ -18453,20 +18454,20 @@ function StaticElementRendererImpl({
18453
18454
  isEditing: false,
18454
18455
  editText: "",
18455
18456
  spellCheck: false,
18456
- txtSE: (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element) ? element.textStyle : void 0,
18457
+ txtSE: (0, chunkVJZJESNT_js.dist_exports.hasTextProperties)(element) ? element.textStyle : void 0,
18457
18458
  txtS: textStyle,
18458
- vecShape: chunkFKY33ZKL_js.renderVectorShape(
18459
+ vecShape: chunkVJZJESNT_js.renderVectorShape(
18459
18460
  element,
18460
18461
  isImage ? false : hasFill,
18461
18462
  fill,
18462
18463
  strokeWidth,
18463
18464
  stroke
18464
18465
  ),
18465
- imgStyle: imageAnimation ? { ...chunkFKY33ZKL_js.getImageRenderStyle(element), animation: imageAnimation } : chunkFKY33ZKL_js.getImageRenderStyle(element),
18466
- imgFilter: chunkFKY33ZKL_js.getImageEffectsFilter(element),
18467
- imgOpacity: chunkFKY33ZKL_js.getImageEffectsOpacity(element),
18466
+ imgStyle: imageAnimation ? { ...chunkVJZJESNT_js.getImageRenderStyle(element), animation: imageAnimation } : chunkVJZJESNT_js.getImageRenderStyle(element),
18467
+ imgFilter: chunkVJZJESNT_js.getImageEffectsFilter(element),
18468
+ imgOpacity: chunkVJZJESNT_js.getImageEffectsOpacity(element),
18468
18469
  imgAlt: "",
18469
- isTxtEl: chunkFKY33ZKL_js.isEditableTextElement(element),
18470
+ isTxtEl: chunkVJZJESNT_js.isEditableTextElement(element),
18470
18471
  media: mediaDataUrls,
18471
18472
  tableSt: null,
18472
18473
  isSel: false,
@@ -18512,7 +18513,7 @@ function SlideLayer({
18512
18513
  style: {
18513
18514
  width: safeWidth,
18514
18515
  height: safeHeight,
18515
- backgroundColor: slide.backgroundColor ? chunkFKY33ZKL_js.normalizeHexColor(slide.backgroundColor, "#ffffff") : "#ffffff",
18516
+ backgroundColor: slide.backgroundColor ? chunkVJZJESNT_js.normalizeHexColor(slide.backgroundColor, "#ffffff") : "#ffffff",
18516
18517
  backgroundImage: slide.backgroundImage ? `url(${slide.backgroundImage})` : slide.backgroundGradient ? slide.backgroundGradient : void 0,
18517
18518
  backgroundSize: slide.backgroundImage ? "cover" : void 0,
18518
18519
  backgroundPosition: slide.backgroundImage ? "center" : void 0