pptx-react-viewer 1.19.0 → 1.20.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 (88) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/{Model3DScene-CQP7JLKK.js → Model3DScene-BLUWY36S.js} +2 -2
  3. package/dist/Model3DScene-BLUWY36S.js.br +0 -0
  4. package/dist/Model3DScene-BLUWY36S.js.gz +0 -0
  5. package/dist/{Model3DScene-J2KBVMEZ.mjs → Model3DScene-RYHVTFOT.mjs} +1 -1
  6. package/dist/Model3DScene-RYHVTFOT.mjs.br +0 -0
  7. package/dist/Model3DScene-RYHVTFOT.mjs.gz +0 -0
  8. package/dist/{SurfaceChart3DScene-U6LVKSKR.js → SurfaceChart3DScene-BW2YTOPQ.js} +2 -2
  9. package/dist/{SurfaceChart3DScene-U6LVKSKR.js.br → SurfaceChart3DScene-BW2YTOPQ.js.br} +0 -0
  10. package/dist/SurfaceChart3DScene-BW2YTOPQ.js.gz +0 -0
  11. package/dist/{SurfaceChart3DScene-52VUVZSC.mjs → SurfaceChart3DScene-U6QOMUJF.mjs} +1 -1
  12. package/dist/SurfaceChart3DScene-U6QOMUJF.mjs.br +0 -0
  13. package/dist/SurfaceChart3DScene-U6QOMUJF.mjs.gz +0 -0
  14. package/dist/{chunk-RIRK64DM.mjs → chunk-4LPWBQTH.mjs} +24 -0
  15. package/dist/chunk-4LPWBQTH.mjs.br +0 -0
  16. package/dist/chunk-4LPWBQTH.mjs.gz +0 -0
  17. package/dist/{chunk-AALZCSY4.js → chunk-4SRCC7NB.js} +24 -0
  18. package/dist/chunk-4SRCC7NB.js.br +0 -0
  19. package/dist/chunk-4SRCC7NB.js.gz +0 -0
  20. package/dist/{chunk-P3T4E6JQ.js → chunk-BXACB3BG.js} +9 -7
  21. package/dist/chunk-BXACB3BG.js.br +0 -0
  22. package/dist/chunk-BXACB3BG.js.gz +0 -0
  23. package/dist/{chunk-R7FTNSSP.mjs → chunk-GG2KBJSN.mjs} +9 -7
  24. package/dist/chunk-GG2KBJSN.mjs.br +0 -0
  25. package/dist/chunk-GG2KBJSN.mjs.gz +0 -0
  26. package/dist/{chunk-DBZLZMED.js → chunk-KRK367H5.js} +687 -705
  27. package/dist/chunk-KRK367H5.js.br +0 -0
  28. package/dist/chunk-KRK367H5.js.gz +0 -0
  29. package/dist/{chunk-YF6JD4DO.js → chunk-LXUMBK2O.js} +398 -398
  30. package/dist/chunk-LXUMBK2O.js.br +0 -0
  31. package/dist/chunk-LXUMBK2O.js.gz +0 -0
  32. package/dist/{chunk-SLJXGFZS.mjs → chunk-TUVSZMLW.mjs} +5 -22
  33. package/dist/chunk-TUVSZMLW.mjs.br +0 -0
  34. package/dist/chunk-TUVSZMLW.mjs.gz +0 -0
  35. package/dist/{chunk-XGTMHQR7.mjs → chunk-UDJHJM5B.mjs} +3 -3
  36. package/dist/chunk-UDJHJM5B.mjs.br +0 -0
  37. package/dist/chunk-UDJHJM5B.mjs.gz +0 -0
  38. package/dist/hooks-unstable.js +74 -74
  39. package/dist/hooks-unstable.js.br +0 -0
  40. package/dist/hooks-unstable.js.gz +0 -0
  41. package/dist/hooks-unstable.mjs +3 -3
  42. package/dist/hooks-unstable.mjs.br +0 -0
  43. package/dist/hooks-unstable.mjs.gz +0 -0
  44. package/dist/i18n.js +3 -3
  45. package/dist/i18n.js.br +0 -0
  46. package/dist/i18n.js.gz +0 -0
  47. package/dist/i18n.mjs +1 -1
  48. package/dist/i18n.mjs.br +0 -0
  49. package/dist/i18n.mjs.gz +0 -0
  50. package/dist/index.js +18 -18
  51. package/dist/index.js.br +0 -0
  52. package/dist/index.js.gz +0 -0
  53. package/dist/index.mjs +4 -4
  54. package/dist/index.mjs.br +0 -0
  55. package/dist/index.mjs.gz +0 -0
  56. package/dist/pptx-viewer.css +2 -2
  57. package/dist/pptx-viewer.css.br +0 -0
  58. package/dist/pptx-viewer.css.gz +0 -0
  59. package/dist/viewer/index.js +20 -20
  60. package/dist/viewer/index.js.br +0 -0
  61. package/dist/viewer/index.js.gz +0 -0
  62. package/dist/viewer/index.mjs +4 -4
  63. package/dist/viewer/index.mjs.br +0 -0
  64. package/dist/viewer/index.mjs.gz +0 -0
  65. package/package.json +12 -12
  66. package/dist/Model3DScene-CQP7JLKK.js.br +0 -0
  67. package/dist/Model3DScene-CQP7JLKK.js.gz +0 -0
  68. package/dist/Model3DScene-J2KBVMEZ.mjs.br +0 -0
  69. package/dist/Model3DScene-J2KBVMEZ.mjs.gz +0 -0
  70. package/dist/SurfaceChart3DScene-52VUVZSC.mjs.br +0 -0
  71. package/dist/SurfaceChart3DScene-52VUVZSC.mjs.gz +0 -0
  72. package/dist/SurfaceChart3DScene-U6LVKSKR.js.gz +0 -0
  73. package/dist/chunk-AALZCSY4.js.br +0 -0
  74. package/dist/chunk-AALZCSY4.js.gz +0 -0
  75. package/dist/chunk-DBZLZMED.js.br +0 -0
  76. package/dist/chunk-DBZLZMED.js.gz +0 -0
  77. package/dist/chunk-P3T4E6JQ.js.br +0 -0
  78. package/dist/chunk-P3T4E6JQ.js.gz +0 -0
  79. package/dist/chunk-R7FTNSSP.mjs.br +0 -0
  80. package/dist/chunk-R7FTNSSP.mjs.gz +0 -0
  81. package/dist/chunk-RIRK64DM.mjs.br +0 -0
  82. package/dist/chunk-RIRK64DM.mjs.gz +0 -0
  83. package/dist/chunk-SLJXGFZS.mjs.br +0 -0
  84. package/dist/chunk-SLJXGFZS.mjs.gz +0 -0
  85. package/dist/chunk-XGTMHQR7.mjs.br +0 -0
  86. package/dist/chunk-XGTMHQR7.mjs.gz +0 -0
  87. package/dist/chunk-YF6JD4DO.js.br +0 -0
  88. package/dist/chunk-YF6JD4DO.js.gz +0 -0
@@ -1,19 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var chunkYF6JD4DO_js = require('./chunk-YF6JD4DO.js');
4
- var chunkP3T4E6JQ_js = require('./chunk-P3T4E6JQ.js');
5
- var chunkAALZCSY4_js = require('./chunk-AALZCSY4.js');
3
+ var chunkLXUMBK2O_js = require('./chunk-LXUMBK2O.js');
4
+ var chunkBXACB3BG_js = require('./chunk-BXACB3BG.js');
5
+ var chunk4SRCC7NB_js = require('./chunk-4SRCC7NB.js');
6
6
  var chunkAD3EAEY6_js = require('./chunk-AD3EAEY6.js');
7
7
  var React14 = require('react');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
9
  var reactI18next = require('react-i18next');
10
10
  var lu = require('react-icons/lu');
11
- var DOMPurify = require('dompurify');
12
11
 
13
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
13
 
15
14
  var React14__default = /*#__PURE__*/_interopDefault(React14);
16
- var DOMPurify__default = /*#__PURE__*/_interopDefault(DOMPurify);
17
15
 
18
16
  var ViewerThemeContext = React14.createContext(void 0);
19
17
  function ViewerThemeProvider({ theme, children }) {
@@ -27,7 +25,7 @@ function useThemeStyle(theme) {
27
25
  if (!theme) {
28
26
  return void 0;
29
27
  }
30
- const vars = chunkP3T4E6JQ_js.themeToCssVars(theme);
28
+ const vars = chunkBXACB3BG_js.themeToCssVars(theme);
31
29
  if (Object.keys(vars).length === 0) {
32
30
  return void 0;
33
31
  }
@@ -44,7 +42,7 @@ function CollaborationProvider({
44
42
  canvasHeight,
45
43
  children
46
44
  }) {
47
- const value = chunkYF6JD4DO_js.useCollaborativeState({
45
+ const value = chunkLXUMBK2O_js.useCollaborativeState({
48
46
  config,
49
47
  canvasWidth,
50
48
  canvasHeight
@@ -476,7 +474,7 @@ function LoadingState({ className }) {
476
474
  role: "status",
477
475
  "aria-live": "polite",
478
476
  "aria-atomic": "true",
479
- className: chunkYF6JD4DO_js.cn(
477
+ className: chunkLXUMBK2O_js.cn(
480
478
  "h-full w-full flex items-center justify-center text-muted-foreground",
481
479
  className
482
480
  ),
@@ -499,7 +497,7 @@ function ErrorState({ className, error }) {
499
497
  {
500
498
  role: "alert",
501
499
  "aria-live": "assertive",
502
- className: chunkYF6JD4DO_js.cn(
500
+ className: chunkLXUMBK2O_js.cn(
503
501
  "h-full w-full flex items-center justify-center p-6 text-center text-red-400",
504
502
  className
505
503
  ),
@@ -530,7 +528,7 @@ function ShortcutPanel({ isOpen, onClose }) {
530
528
  }
531
529
  )
532
530
  ] }),
533
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkYF6JD4DO_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
531
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkLXUMBK2O_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
534
532
  "div",
535
533
  {
536
534
  className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
@@ -590,14 +588,14 @@ function AccessibilityPanel({
590
588
  "aria-label": t("pptx.accessibility.reduceMotion"),
591
589
  "aria-checked": reducedMotion ?? false,
592
590
  onClick: onToggleReducedMotion,
593
- className: chunkYF6JD4DO_js.cn(
591
+ className: chunkLXUMBK2O_js.cn(
594
592
  "relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
595
593
  reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
596
594
  ),
597
595
  children: /* @__PURE__ */ jsxRuntime.jsx(
598
596
  "span",
599
597
  {
600
- className: chunkYF6JD4DO_js.cn(
598
+ className: chunkLXUMBK2O_js.cn(
601
599
  "inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
602
600
  reducedMotion ? "translate-x-4" : "translate-x-0.5"
603
601
  )
@@ -616,7 +614,7 @@ function AccessibilityPanel({
616
614
  "div",
617
615
  {
618
616
  role: "listitem",
619
- className: chunkYF6JD4DO_js.cn(
617
+ className: chunkLXUMBK2O_js.cn(
620
618
  "flex items-start gap-2 rounded px-2 py-1.5 text-xs",
621
619
  /* Severity-based background and text colouring */
622
620
  issue.severity === "error" ? "bg-red-900/30 text-red-300" : issue.severity === "warning" ? "bg-amber-900/30 text-amber-300" : "bg-muted/50 text-muted-foreground"
@@ -648,7 +646,7 @@ function ExportProgressModal({
648
646
  if (!isOpen) {
649
647
  return null;
650
648
  }
651
- const clampedProgress = chunkP3T4E6JQ_js.clampPercent(progress);
649
+ const clampedProgress = chunkBXACB3BG_js.clampPercent(progress);
652
650
  return /* @__PURE__ */ jsxRuntime.jsx(
653
651
  "div",
654
652
  {
@@ -737,7 +735,7 @@ function StatusBar({
737
735
  /* @__PURE__ */ jsxRuntime.jsx(
738
736
  "span",
739
737
  {
740
- className: chunkYF6JD4DO_js.cn(
738
+ className: chunkLXUMBK2O_js.cn(
741
739
  "shrink-0 max-md:hidden",
742
740
  autosaveStatus?.state === "error" ? "text-red-400" : autosaveStatus?.state === "saving" ? "text-yellow-400" : ""
743
741
  ),
@@ -750,7 +748,7 @@ function StatusBar({
750
748
  {
751
749
  type: "button",
752
750
  onClick: onToggleNotes,
753
- className: chunkYF6JD4DO_js.cn(
751
+ className: chunkLXUMBK2O_js.cn(
754
752
  vb,
755
753
  "flex items-center gap-1 text-[10px]",
756
754
  isNotesExpanded && "text-primary"
@@ -770,7 +768,7 @@ function StatusBar({
770
768
  {
771
769
  type: "button",
772
770
  onClick: () => onSetMode("edit"),
773
- className: chunkYF6JD4DO_js.cn(vb, mode === "edit" && "text-primary"),
771
+ className: chunkLXUMBK2O_js.cn(vb, mode === "edit" && "text-primary"),
774
772
  title: t("pptx.statusBar.normalView"),
775
773
  "aria-label": t("pptx.statusBar.normalView"),
776
774
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuMonitor, { className: "w-3.5 h-3.5" })
@@ -792,7 +790,7 @@ function StatusBar({
792
790
  {
793
791
  type: "button",
794
792
  onClick: () => onSetMode("present"),
795
- className: chunkYF6JD4DO_js.cn(vb, mode === "present" && "text-primary"),
793
+ className: chunkLXUMBK2O_js.cn(vb, mode === "present" && "text-primary"),
796
794
  title: t("pptx.statusBar.slideShow"),
797
795
  "aria-label": t("pptx.statusBar.slideShow"),
798
796
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPresentation, { className: "w-3.5 h-3.5" })
@@ -882,7 +880,7 @@ function ResizeHandle({
882
880
  {
883
881
  role: "separator",
884
882
  "aria-orientation": direction,
885
- className: chunkYF6JD4DO_js.cn(
883
+ className: chunkLXUMBK2O_js.cn(
886
884
  // Outer container: generous hit area for easy clicking.
887
885
  // The visible indicator is rendered via the inner pseudo-element (::after).
888
886
  "relative flex-shrink-0 z-20 group",
@@ -893,7 +891,7 @@ function ResizeHandle({
893
891
  children: /* @__PURE__ */ jsxRuntime.jsx(
894
892
  "div",
895
893
  {
896
- className: chunkYF6JD4DO_js.cn(
894
+ className: chunkLXUMBK2O_js.cn(
897
895
  "absolute transition-colors",
898
896
  direction === "horizontal" ? "top-0 bottom-0 left-1/2 -translate-x-1/2 w-0.5 group-hover:w-1 group-hover:bg-primary/40 group-active:w-1 group-active:bg-primary/60" : "left-0 right-0 top-1/2 -translate-y-1/2 h-0.5 group-hover:h-1 group-hover:bg-primary/40 group-active:h-1 group-active:bg-primary/60"
899
897
  )
@@ -905,7 +903,7 @@ function ResizeHandle({
905
903
 
906
904
  // src/viewer/utils/slide-background-style.ts
907
905
  function getReactSlideBackgroundStyle(slide) {
908
- const style = chunkP3T4E6JQ_js.getSlideBackgroundStyle(slide);
906
+ const style = chunkBXACB3BG_js.getSlideBackgroundStyle(slide);
909
907
  return {
910
908
  backgroundColor: style["background-color"],
911
909
  backgroundImage: style["background-image"],
@@ -960,7 +958,7 @@ function ChartElementView({
960
958
  const selectedPart = selection?.elementId === element.id ? selection.part : null;
961
959
  const canEdit = editable && Boolean(onUpdateElement);
962
960
  const viewModel = React14.useMemo(
963
- () => canEdit ? chunkYF6JD4DO_js.buildReactChartViewModel(element) : null,
961
+ () => canEdit ? chunkLXUMBK2O_js.buildReactChartViewModel(element) : null,
964
962
  [canEdit, element]
965
963
  );
966
964
  React14.useEffect(ensureInteractionStyles, []);
@@ -1011,7 +1009,7 @@ function ChartElementView({
1011
1009
  if (!canEdit) {
1012
1010
  return;
1013
1011
  }
1014
- const part = chunkP3T4E6JQ_js.findChartPartTarget(e.target);
1012
+ const part = chunkBXACB3BG_js.findChartPartTarget(e.target);
1015
1013
  if (!part) {
1016
1014
  return;
1017
1015
  }
@@ -1029,7 +1027,7 @@ function ChartElementView({
1029
1027
  drag: viewModel.valueDrag,
1030
1028
  svgHeight: viewModel.svgHeight,
1031
1029
  startClientY: e.clientY,
1032
- anchorViewY: chunkP3T4E6JQ_js.dragAnchorViewY(startValue, viewModel.valueDrag, part.seriesIndex),
1030
+ anchorViewY: chunkBXACB3BG_js.dragAnchorViewY(startValue, viewModel.valueDrag, part.seriesIndex),
1033
1031
  baseChartData: element.chartData,
1034
1032
  moved: false,
1035
1033
  lastData: null
@@ -1055,8 +1053,8 @@ function ChartElementView({
1055
1053
  active.moved = true;
1056
1054
  const deltaViewY = (e.clientY - active.startClientY) / rect.height * active.svgHeight;
1057
1055
  const viewY = active.anchorViewY + deltaViewY;
1058
- const value = chunkP3T4E6JQ_js.dragValueForPart(viewY, active.drag, active.part.seriesIndex);
1059
- active.lastData = chunkP3T4E6JQ_js.withChartPointValue(
1056
+ const value = chunkBXACB3BG_js.dragValueForPart(viewY, active.drag, active.part.seriesIndex);
1057
+ active.lastData = chunkBXACB3BG_js.withChartPointValue(
1060
1058
  active.baseChartData,
1061
1059
  active.part.seriesIndex,
1062
1060
  active.part.pointIndex,
@@ -1083,14 +1081,14 @@ function ChartElementView({
1083
1081
  setTitleDraft(element.chartData?.title ?? "");
1084
1082
  return;
1085
1083
  }
1086
- if (chunkP3T4E6JQ_js.findChartPartTarget(e.target)) {
1084
+ if (chunkBXACB3BG_js.findChartPartTarget(e.target)) {
1087
1085
  e.stopPropagation();
1088
1086
  }
1089
1087
  };
1090
1088
  const commitTitle = () => {
1091
1089
  if (titleDraft !== null && element.chartData && onUpdateElement) {
1092
1090
  onUpdateElement({
1093
- chartData: chunkP3T4E6JQ_js.withChartTitle(element.chartData, titleDraft)
1091
+ chartData: chunkBXACB3BG_js.withChartTitle(element.chartData, titleDraft)
1094
1092
  });
1095
1093
  }
1096
1094
  setTitleDraft(null);
@@ -1106,8 +1104,8 @@ function ChartElementView({
1106
1104
  onPointerUp: handlePointerUp,
1107
1105
  onDoubleClick: handleDoubleClick,
1108
1106
  children: [
1109
- chunkYF6JD4DO_js.renderChartElement(renderedElement),
1110
- 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: chunkP3T4E6JQ_js.formatAxisValue(dragValue) }),
1107
+ chunkLXUMBK2O_js.renderChartElement(renderedElement),
1108
+ 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: chunkBXACB3BG_js.formatAxisValue(dragValue) }),
1111
1109
  titleDraft !== null && /* @__PURE__ */ jsxRuntime.jsx(
1112
1110
  "input",
1113
1111
  {
@@ -1141,23 +1139,23 @@ function ColorChangedImage({
1141
1139
  className,
1142
1140
  alt
1143
1141
  }) {
1144
- const tolerance = tolerancePct ?? chunkP3T4E6JQ_js.DEFAULT_COLOR_CHANGE_TOLERANCE;
1145
- const cacheKey = chunkP3T4E6JQ_js.buildCacheKey(
1142
+ const tolerance = tolerancePct ?? chunkBXACB3BG_js.DEFAULT_COLOR_CHANGE_TOLERANCE;
1143
+ const cacheKey = chunkBXACB3BG_js.buildCacheKey(
1146
1144
  src,
1147
1145
  clrChange.clrFrom,
1148
1146
  clrChange.clrTo,
1149
1147
  tolerance,
1150
1148
  Boolean(clrChange.clrToTransparent)
1151
1149
  );
1152
- const cached = chunkP3T4E6JQ_js.getCachedResult(cacheKey);
1150
+ const cached = chunkBXACB3BG_js.getCachedResult(cacheKey);
1153
1151
  const [processedSrc, setProcessedSrc] = React14.useState(cached ?? null);
1154
1152
  React14.useEffect(() => {
1155
- if (chunkP3T4E6JQ_js.getCachedResult(cacheKey)) {
1156
- setProcessedSrc(chunkP3T4E6JQ_js.getCachedResult(cacheKey) ?? null);
1153
+ if (chunkBXACB3BG_js.getCachedResult(cacheKey)) {
1154
+ setProcessedSrc(chunkBXACB3BG_js.getCachedResult(cacheKey) ?? null);
1157
1155
  return;
1158
1156
  }
1159
1157
  let cancelled = false;
1160
- chunkP3T4E6JQ_js.applyColorChange(
1158
+ chunkBXACB3BG_js.applyColorChange(
1161
1159
  src,
1162
1160
  clrChange.clrFrom,
1163
1161
  clrChange.clrTo,
@@ -1165,7 +1163,7 @@ function ColorChangedImage({
1165
1163
  Boolean(clrChange.clrToTransparent)
1166
1164
  ).then((result) => {
1167
1165
  if (!cancelled) {
1168
- chunkP3T4E6JQ_js.setCachedResult(cacheKey, result.dataUrl);
1166
+ chunkBXACB3BG_js.setCachedResult(cacheKey, result.dataUrl);
1169
1167
  setProcessedSrc(result.dataUrl);
1170
1168
  }
1171
1169
  return void 0;
@@ -1196,19 +1194,19 @@ function DuotoneImage({
1196
1194
  className,
1197
1195
  alt
1198
1196
  }) {
1199
- const cacheKey = chunkP3T4E6JQ_js.buildDuotoneCacheKey(src, duotone.color1, duotone.color2);
1200
- const cached = chunkP3T4E6JQ_js.getDuotoneCachedResult(cacheKey);
1197
+ const cacheKey = chunkBXACB3BG_js.buildDuotoneCacheKey(src, duotone.color1, duotone.color2);
1198
+ const cached = chunkBXACB3BG_js.getDuotoneCachedResult(cacheKey);
1201
1199
  const [processedSrc, setProcessedSrc] = React14.useState(cached ?? null);
1202
1200
  React14.useEffect(() => {
1203
- const cachedResult = chunkP3T4E6JQ_js.getDuotoneCachedResult(cacheKey);
1201
+ const cachedResult = chunkBXACB3BG_js.getDuotoneCachedResult(cacheKey);
1204
1202
  if (cachedResult) {
1205
1203
  setProcessedSrc(cachedResult);
1206
1204
  return;
1207
1205
  }
1208
1206
  let cancelled = false;
1209
- chunkP3T4E6JQ_js.applyDuotone(src, duotone.color1, duotone.color2).then((result) => {
1207
+ chunkBXACB3BG_js.applyDuotone(src, duotone.color1, duotone.color2).then((result) => {
1210
1208
  if (!cancelled) {
1211
- chunkP3T4E6JQ_js.setDuotoneCachedResult(cacheKey, result.dataUrl);
1209
+ chunkBXACB3BG_js.setDuotoneCachedResult(cacheKey, result.dataUrl);
1212
1210
  setProcessedSrc(result.dataUrl);
1213
1211
  }
1214
1212
  return void 0;
@@ -1233,7 +1231,7 @@ function DuotoneImage({
1233
1231
  );
1234
1232
  }
1235
1233
  function renderImageEffectDefinitions(element, excludeDuotone = false) {
1236
- return chunkP3T4E6JQ_js.getImageSvgFilters(element).filter((definition) => !excludeDuotone || definition.id !== `duotone-${element.id}`).map((definition) => /* @__PURE__ */ jsxRuntime.jsx(
1234
+ return chunkBXACB3BG_js.getImageSvgFilters(element).filter((definition) => !excludeDuotone || definition.id !== `duotone-${element.id}`).map((definition) => /* @__PURE__ */ jsxRuntime.jsx(
1237
1235
  "svg",
1238
1236
  {
1239
1237
  width: 0,
@@ -1293,13 +1291,13 @@ function renderImg(el, style, filter, alt, opacity) {
1293
1291
  ] });
1294
1292
  }
1295
1293
  }
1296
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-gray-500 bg-gray-100", children: chunkAALZCSY4_js.translationsEn["pptx.elementType.image"] });
1294
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-gray-500 bg-gray-100", children: chunk4SRCC7NB_js.translationsEn["pptx.elementType.image"] });
1297
1295
  }
1298
1296
  const effectStyles = {
1299
1297
  ...filter ? { filter } : {},
1300
1298
  ...opacity !== void 0 ? { opacity } : {}
1301
1299
  };
1302
- if (chunkYF6JD4DO_js.isImageTiled(el)) {
1300
+ if (chunkLXUMBK2O_js.isImageTiled(el)) {
1303
1301
  const tileSrc = imgSrc(el);
1304
1302
  if (!tileSrc) {
1305
1303
  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" });
@@ -1310,18 +1308,18 @@ function renderImg(el, style, filter, alt, opacity) {
1310
1308
  "div",
1311
1309
  {
1312
1310
  className: "pointer-events-none select-none w-full h-full",
1313
- style: { ...chunkYF6JD4DO_js.getImageTilingStyle(el), ...effectStyles }
1311
+ style: { ...chunkLXUMBK2O_js.getImageTilingStyle(el), ...effectStyles }
1314
1312
  }
1315
1313
  )
1316
1314
  ] });
1317
1315
  }
1318
- const colorWash = chunkP3T4E6JQ_js.getImageColorWashStyle(
1316
+ const colorWash = chunkBXACB3BG_js.getImageColorWashStyle(
1319
1317
  chunkAD3EAEY6_js.isImageLikeElement(el) ? el.imageEffects?.colorWash : void 0
1320
1318
  );
1321
1319
  const clrChange = "imageEffects" in el ? el.imageEffects?.clrChange : void 0;
1322
- const duotoneColors = chunkYF6JD4DO_js.getDuotoneColors(el);
1320
+ const duotoneColors = chunkLXUMBK2O_js.getDuotoneColors(el);
1323
1321
  const useDuotoneCanvas = Boolean(duotoneColors && !clrChange);
1324
- const filterForImg = useDuotoneCanvas ? chunkP3T4E6JQ_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
1322
+ const filterForImg = useDuotoneCanvas ? chunkBXACB3BG_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
1325
1323
  const canvasEffectStyles = {
1326
1324
  ...filterForImg ? { filter: filterForImg } : {},
1327
1325
  ...opacity !== void 0 ? { opacity } : {}
@@ -1532,7 +1530,7 @@ function ResizeHandles({
1532
1530
  "button",
1533
1531
  {
1534
1532
  type: "button",
1535
- className: chunkYF6JD4DO_js.cn("absolute z-10 group", posClass, cursor),
1533
+ className: chunkLXUMBK2O_js.cn("absolute z-10 group", posClass, cursor),
1536
1534
  style: peStyle,
1537
1535
  onPointerDown: (e) => handleResizePointer(e, handle),
1538
1536
  onMouseDown: (e) => {
@@ -1550,7 +1548,7 @@ function ResizeHandles({
1550
1548
  "button",
1551
1549
  {
1552
1550
  type: "button",
1553
- className: chunkYF6JD4DO_js.cn("absolute z-10", posClass, cursor),
1551
+ className: chunkLXUMBK2O_js.cn("absolute z-10", posClass, cursor),
1554
1552
  style: peStyle,
1555
1553
  onPointerDown: (e) => handleResizePointer(e, handle),
1556
1554
  onMouseDown: (e) => {
@@ -1558,7 +1556,7 @@ function ResizeHandles({
1558
1556
  onResizePointerDown(elementId, e, handle);
1559
1557
  },
1560
1558
  children: [
1561
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkYF6JD4DO_js.cn(sizeClass, "border border-white bg-primary shadow") }),
1559
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkLXUMBK2O_js.cn(sizeClass, "border border-white bg-primary shadow") }),
1562
1560
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -inset-2 max-md:-inset-1" })
1563
1561
  ]
1564
1562
  },
@@ -1637,10 +1635,10 @@ var ConnectorElementRenderer = React14__default.default.memo(
1637
1635
  const viewHeight = Math.max(el.height, 1);
1638
1636
  const ss = shapeEl?.shapeStyle;
1639
1637
  const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
1640
- const strokeColor = chunkP3T4E6JQ_js.normalizeHexColor(ss?.strokeColor, chunkYF6JD4DO_js.DEFAULT_STROKE_COLOR);
1641
- const strokePaint = chunkP3T4E6JQ_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
1642
- const dashType = chunkP3T4E6JQ_js.normalizeStrokeDashType(ss?.strokeDash);
1643
- const dashArray = chunkP3T4E6JQ_js.getSvgStrokeDasharray(
1638
+ const strokeColor = chunkBXACB3BG_js.normalizeHexColor(ss?.strokeColor, chunkLXUMBK2O_js.DEFAULT_STROKE_COLOR);
1639
+ const strokePaint = chunkBXACB3BG_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
1640
+ const dashType = chunkBXACB3BG_js.normalizeStrokeDashType(ss?.strokeDash);
1641
+ const dashArray = chunkBXACB3BG_js.getSvgStrokeDasharray(
1644
1642
  dashType,
1645
1643
  Math.max(strokeWidth, 1),
1646
1644
  ss?.customDashSegments
@@ -1651,14 +1649,14 @@ var ConnectorElementRenderer = React14__default.default.memo(
1651
1649
  const markerSeed = el.id.replace(/[^a-zA-Z0-9_-]/gu, "_");
1652
1650
  const startMarkerId = `${markerSeed}-sel-start`;
1653
1651
  const endMarkerId = `${markerSeed}-sel-end`;
1654
- const compoundOffsets = chunkP3T4E6JQ_js.getCompoundLineOffsets(compoundLine, strokeWidth);
1655
- const compoundWidths = chunkP3T4E6JQ_js.getCompoundLineWidths(compoundLine, strokeWidth);
1656
- const strokeCap = chunkP3T4E6JQ_js.svgLineCap(ss?.lineCap);
1652
+ const compoundOffsets = chunkBXACB3BG_js.getCompoundLineOffsets(compoundLine, strokeWidth);
1653
+ const compoundWidths = chunkBXACB3BG_js.getCompoundLineWidths(compoundLine, strokeWidth);
1654
+ const strokeCap = chunkBXACB3BG_js.svgLineCap(ss?.lineCap);
1657
1655
  const textEl = chunkAD3EAEY6_js.hasTextProperties(el) ? el : void 0;
1658
1656
  const connectorText = textEl?.text?.trim() ?? "";
1659
1657
  const connectorTextSegments = textEl?.textSegments;
1660
1658
  const connectorTextStyle = textEl?.textStyle;
1661
- const pathGeometry = shapeEl ? chunkYF6JD4DO_js.getConnectorPathGeometry(shapeEl) : {
1659
+ const pathGeometry = shapeEl ? chunkLXUMBK2O_js.getConnectorPathGeometry(shapeEl) : {
1662
1660
  pathData: `M 0 0 L ${viewWidth} ${viewHeight}`,
1663
1661
  startX: 0,
1664
1662
  startY: 0,
@@ -1667,8 +1665,8 @@ var ConnectorElementRenderer = React14__default.default.memo(
1667
1665
  };
1668
1666
  const hitTargetWidth = Math.max(strokeWidth * 3, 14);
1669
1667
  const selColor = selClr === "blue-400" ? "#60a5fa" : "#3b82f6";
1670
- const lineShadow = chunkYF6JD4DO_js.buildLineShadowCss(el);
1671
- const lineGlow = chunkYF6JD4DO_js.buildLineGlowFilter(el);
1668
+ const lineShadow = chunkLXUMBK2O_js.buildLineShadowCss(el);
1669
+ const lineGlow = chunkLXUMBK2O_js.buildLineGlowFilter(el);
1672
1670
  return /* @__PURE__ */ jsxRuntime.jsxs(
1673
1671
  "div",
1674
1672
  {
@@ -1678,9 +1676,9 @@ var ConnectorElementRenderer = React14__default.default.memo(
1678
1676
  style: {
1679
1677
  left: el.x,
1680
1678
  top: el.y,
1681
- width: Math.max(el.width, chunkYF6JD4DO_js.MIN_ELEMENT_SIZE),
1682
- height: Math.max(el.height, chunkYF6JD4DO_js.MIN_ELEMENT_SIZE),
1683
- transform: chunkP3T4E6JQ_js.getElementTransform(el),
1679
+ width: Math.max(el.width, chunkLXUMBK2O_js.MIN_ELEMENT_SIZE),
1680
+ height: Math.max(el.height, chunkLXUMBK2O_js.MIN_ELEMENT_SIZE),
1681
+ transform: chunkBXACB3BG_js.getElementTransform(el),
1684
1682
  transformOrigin: "center",
1685
1683
  background: "transparent",
1686
1684
  border: "none",
@@ -1701,14 +1699,14 @@ var ConnectorElementRenderer = React14__default.default.memo(
1701
1699
  style: { overflow: "visible", pointerEvents: "none" },
1702
1700
  children: [
1703
1701
  /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
1704
- chunkYF6JD4DO_js.renderConnectorMarker(
1702
+ chunkLXUMBK2O_js.renderConnectorMarker(
1705
1703
  startMarkerId,
1706
1704
  startArrow,
1707
1705
  strokePaint,
1708
1706
  ss?.connectorStartArrowWidth,
1709
1707
  ss?.connectorStartArrowLength
1710
1708
  ),
1711
- chunkYF6JD4DO_js.renderConnectorMarker(
1709
+ chunkLXUMBK2O_js.renderConnectorMarker(
1712
1710
  endMarkerId,
1713
1711
  endArrow,
1714
1712
  strokePaint,
@@ -1920,14 +1918,14 @@ function elementHasTextHyperlink(el) {
1920
1918
  return Boolean(el.textSegments?.some((segment) => Boolean(segment.style?.hyperlink)));
1921
1919
  }
1922
1920
  function renderDagDuotoneFilterForElement(el) {
1923
- if (!chunkYF6JD4DO_js.hasDagDuotoneEffect(el)) {
1921
+ if (!chunkLXUMBK2O_js.hasDagDuotoneEffect(el)) {
1924
1922
  return null;
1925
1923
  }
1926
1924
  const duotone = el.shapeStyle?.dagDuotone;
1927
1925
  if (!duotone) {
1928
1926
  return null;
1929
1927
  }
1930
- return chunkYF6JD4DO_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
1928
+ return chunkLXUMBK2O_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
1931
1929
  }
1932
1930
  function getContainerStyle({
1933
1931
  el,
@@ -1944,12 +1942,12 @@ function getContainerStyle({
1944
1942
  return {
1945
1943
  left: isFullscreenMedia ? 0 : el.x,
1946
1944
  top: isFullscreenMedia ? 0 : el.y,
1947
- width: isFullscreenMedia ? "100%" : Math.max(el.width, chunkYF6JD4DO_js.MIN_ELEMENT_SIZE),
1948
- height: isFullscreenMedia ? "100%" : Math.max(el.height, chunkYF6JD4DO_js.MIN_ELEMENT_SIZE),
1949
- transform: isFullscreenMedia ? "none" : chunkP3T4E6JQ_js.getElementTransform(el),
1945
+ width: isFullscreenMedia ? "100%" : Math.max(el.width, chunkLXUMBK2O_js.MIN_ELEMENT_SIZE),
1946
+ height: isFullscreenMedia ? "100%" : Math.max(el.height, chunkLXUMBK2O_js.MIN_ELEMENT_SIZE),
1947
+ transform: isFullscreenMedia ? "none" : chunkBXACB3BG_js.getElementTransform(el),
1950
1948
  transformOrigin: "center",
1951
1949
  overflow: overflowValue,
1952
- clipPath: isImg && !has3DExtrusion ? chunkYF6JD4DO_js.getCropShapeClipPath(el) : void 0,
1950
+ clipPath: isImg && !has3DExtrusion ? chunkLXUMBK2O_js.getCropShapeClipPath(el) : void 0,
1953
1951
  zIndex: isFullscreenMedia ? 20 : zIndex,
1954
1952
  opacity,
1955
1953
  visibility: animationState?.visible === false ? "hidden" : "visible",
@@ -1983,9 +1981,9 @@ function ActionIndicator({
1983
1981
  function shapeParams(element) {
1984
1982
  const style = chunkAD3EAEY6_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
1985
1983
  const strokeWidth = Math.max(0, style?.strokeWidth || 0);
1986
- const strokeColor = chunkP3T4E6JQ_js.normalizeHexColor(style?.strokeColor, chunkYF6JD4DO_js.DEFAULT_STROKE_COLOR);
1987
- const fillColor = chunkP3T4E6JQ_js.normalizeHexColor(style?.fillColor, chunkYF6JD4DO_js.DEFAULT_FILL_COLOR);
1988
- const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkP3T4E6JQ_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
1984
+ const strokeColor = chunkBXACB3BG_js.normalizeHexColor(style?.strokeColor, chunkLXUMBK2O_js.DEFAULT_STROKE_COLOR);
1985
+ const fillColor = chunkBXACB3BG_js.normalizeHexColor(style?.fillColor, chunkLXUMBK2O_js.DEFAULT_FILL_COLOR);
1986
+ const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkBXACB3BG_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
1989
1987
  return { hf: hasFill, fc: fillColor, sw: strokeWidth, sc: strokeColor };
1990
1988
  }
1991
1989
  var Extrusion3DOverlay = React14__default.default.memo(({ data }) => {
@@ -2104,17 +2102,17 @@ var ElementRenderer = React14__default.default.memo(
2104
2102
  const chartUpdateHandler = smartArtUpdateHandler;
2105
2103
  const { hf, fc, sw, sc } = shapeParams(el);
2106
2104
  const elementLocks = el.locks;
2107
- const isTxt = chunkP3T4E6JQ_js.isEditableTextElement(el) && !elementLocks?.noTextEdit;
2105
+ const isTxt = chunkBXACB3BG_js.isEditableTextElement(el) && !elementLocks?.noTextEdit;
2108
2106
  const txtSE = chunkAD3EAEY6_js.hasTextProperties(el) ? el.textStyle : void 0;
2109
- const ss = chunkYF6JD4DO_js.getShapeVisualStyle(el, hf, fc, sw, sc);
2110
- const ts = chunkYF6JD4DO_js.getTextStyleForElement(el, chunkYF6JD4DO_js.DEFAULT_TEXT_COLOR);
2111
- const vs = chunkYF6JD4DO_js.renderVectorShape(el, hf, fc, sw, sc);
2107
+ const ss = chunkLXUMBK2O_js.getShapeVisualStyle(el, hf, fc, sw, sc);
2108
+ const ts = chunkLXUMBK2O_js.getTextStyleForElement(el, chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR);
2109
+ const vs = chunkLXUMBK2O_js.renderVectorShape(el, hf, fc, sw, sc);
2112
2110
  const isImg = el.type === "picture" || el.type === "image";
2113
2111
  const isModel3D = el.type === "model3d";
2114
- const isConn = chunkYF6JD4DO_js.isConnectorOrLineElement(el);
2112
+ const isConn = chunkLXUMBK2O_js.isConnectorOrLineElement(el);
2115
2113
  const shapeStyle3d = chunkAD3EAEY6_js.hasShapeProperties(el) ? el.shapeStyle : void 0;
2116
2114
  const extrusionData = React14.useMemo(
2117
- () => chunkYF6JD4DO_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
2115
+ () => chunkLXUMBK2O_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
2118
2116
  [shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height]
2119
2117
  );
2120
2118
  const [isMediaPlaying, setIsMediaPlaying] = React14.useState(false);
@@ -2154,9 +2152,9 @@ var ElementRenderer = React14__default.default.memo(
2154
2152
  const cur = effectiveIsInlineEditing ? "cursor-text" : effectiveCanInteract ? elementLocks?.noMove ? "cursor-default" : "cursor-move" : hasAction || isZoom ? "cursor-pointer" : "";
2155
2153
  const isPresentationPassive = !effectiveCanInteract;
2156
2154
  const isFullscreenMedia = el.type === "media" && Boolean(el.fullScreen) && isPresentationPassive && isMediaPlaying;
2157
- const ariaRole = isActionable ? "button" : chunkP3T4E6JQ_js.getAriaRole(el);
2158
- const ariaLabel = chunkP3T4E6JQ_js.getAriaLabel(el);
2159
- const ariaRoleDescription = chunkP3T4E6JQ_js.getAriaRoleDescription(el);
2155
+ const ariaRole = isActionable ? "button" : chunkBXACB3BG_js.getAriaRole(el);
2156
+ const ariaLabel = chunkBXACB3BG_js.getAriaLabel(el);
2157
+ const ariaRoleDescription = chunkBXACB3BG_js.getAriaRoleDescription(el);
2160
2158
  const isFocusable = effectiveCanInteract || isActionable;
2161
2159
  const interactionProps = getElementInteractionProps({
2162
2160
  element: el,
@@ -2178,7 +2176,7 @@ var ElementRenderer = React14__default.default.memo(
2178
2176
  "aria-roledescription": ariaRoleDescription,
2179
2177
  "aria-selected": isSelected ? true : void 0,
2180
2178
  tabIndex: isFocusable ? 0 : -1,
2181
- className: chunkYF6JD4DO_js.cn(
2179
+ className: chunkLXUMBK2O_js.cn(
2182
2180
  "absolute border",
2183
2181
  "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500",
2184
2182
  cur,
@@ -2211,9 +2209,9 @@ var ElementRenderer = React14__default.default.memo(
2211
2209
  txtSE,
2212
2210
  txtS: ts,
2213
2211
  vecShape: vs,
2214
- imgStyle: chunkYF6JD4DO_js.getImageRenderStyle(el),
2215
- imgFilter: chunkP3T4E6JQ_js.getImageEffectsFilter(el),
2216
- imgOpacity: chunkP3T4E6JQ_js.getImageEffectsOpacity(el),
2212
+ imgStyle: chunkLXUMBK2O_js.getImageRenderStyle(el),
2213
+ imgFilter: chunkBXACB3BG_js.getImageEffectsFilter(el),
2214
+ imgOpacity: chunkBXACB3BG_js.getImageEffectsOpacity(el),
2217
2215
  imgAlt: imageAltText,
2218
2216
  isTxtEl: isTxt,
2219
2217
  media: mediaDataUrls,
@@ -2279,7 +2277,7 @@ var ElementRenderer = React14__default.default.memo(
2279
2277
  onResizePointerDown,
2280
2278
  onAdjustmentPointerDown,
2281
2279
  rotation: el.rotation,
2282
- nonRotationTransform: chunkP3T4E6JQ_js.getElementTransformWithoutRotation(el),
2280
+ nonRotationTransform: chunkBXACB3BG_js.getElementTransformWithoutRotation(el),
2283
2281
  onRotate: elementLocks?.noRotation ? void 0 : onRotate
2284
2282
  }
2285
2283
  )
@@ -2289,8 +2287,8 @@ var ElementRenderer = React14__default.default.memo(
2289
2287
  }
2290
2288
  );
2291
2289
  function renderPressureStroke(pathD, widths, baseWidth, color, opacity, keyPrefix) {
2292
- const points = chunkP3T4E6JQ_js.extractPathPoints(pathD);
2293
- const circles = chunkP3T4E6JQ_js.generatePressureCircles(points, widths, {
2290
+ const points = chunkBXACB3BG_js.extractPathPoints(pathD);
2291
+ const circles = chunkBXACB3BG_js.generatePressureCircles(points, widths, {
2294
2292
  baseWidth,
2295
2293
  minRadius: 0.5,
2296
2294
  maxRadius: baseWidth * 1.5
@@ -2300,8 +2298,8 @@ function renderPressureStroke(pathD, widths, baseWidth, color, opacity, keyPrefi
2300
2298
  function renderInk(el, options) {
2301
2299
  const replay = options?.replay ?? false;
2302
2300
  Boolean(el.inkPointPressures) && el.inkPointPressures.length > 0;
2303
- Boolean(el.inkWidths) && el.inkWidths.length > 1 && chunkP3T4E6JQ_js.hasPressureVariation(el.inkWidths);
2304
- const replayStyles = replay ? chunkP3T4E6JQ_js.getInkReplayStyles(el, options?.replayConfig) : null;
2301
+ Boolean(el.inkWidths) && el.inkWidths.length > 1 && chunkBXACB3BG_js.hasPressureVariation(el.inkWidths);
2302
+ const replayStyles = replay ? chunkBXACB3BG_js.getInkReplayStyles(el, options?.replayConfig) : null;
2305
2303
  return /* @__PURE__ */ jsxRuntime.jsxs(
2306
2304
  "svg",
2307
2305
  {
@@ -2309,18 +2307,18 @@ function renderInk(el, options) {
2309
2307
  viewBox: `0 0 ${Math.max(el.width, 1)} ${Math.max(el.height, 1)}`,
2310
2308
  preserveAspectRatio: "none",
2311
2309
  children: [
2312
- replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkP3T4E6JQ_js.INK_REPLAY_KEYFRAMES }),
2310
+ replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkBXACB3BG_js.INK_REPLAY_KEYFRAMES }),
2313
2311
  el.inkPaths.map((d, i) => {
2314
- const color = chunkP3T4E6JQ_js.resolveInkColor(el.inkColors, i);
2315
- const width = chunkP3T4E6JQ_js.resolveInkWidth(el.inkWidths, i);
2316
- const opacity = chunkP3T4E6JQ_js.resolveInkOpacity(el.inkOpacities, i);
2312
+ const color = chunkBXACB3BG_js.resolveInkColor(el.inkColors, i);
2313
+ const width = chunkBXACB3BG_js.resolveInkWidth(el.inkWidths, i);
2314
+ const opacity = chunkBXACB3BG_js.resolveInkOpacity(el.inkOpacities, i);
2317
2315
  {
2318
2316
  const pointPressures = el.inkPointPressures?.[i];
2319
- if (pointPressures && pointPressures.length > 1 && chunkP3T4E6JQ_js.hasPressureVariation(pointPressures)) {
2320
- const pointWidths = chunkP3T4E6JQ_js.pressuresToWidths(pointPressures, width);
2317
+ if (pointPressures && pointPressures.length > 1 && chunkBXACB3BG_js.hasPressureVariation(pointPressures)) {
2318
+ const pointWidths = chunkBXACB3BG_js.pressuresToWidths(pointPressures, width);
2321
2319
  return /* @__PURE__ */ jsxRuntime.jsx("g", { children: renderPressureStroke(d, pointWidths, width, color, opacity, `${el.id}-ink-${i}`) }, `${el.id}-ink-${i}`);
2322
2320
  }
2323
- if (el.inkWidths && el.inkWidths.length > 1 && chunkP3T4E6JQ_js.hasPressureVariation(el.inkWidths)) {
2321
+ if (el.inkWidths && el.inkWidths.length > 1 && chunkBXACB3BG_js.hasPressureVariation(el.inkWidths)) {
2324
2322
  return /* @__PURE__ */ jsxRuntime.jsx("g", { children: renderPressureStroke(d, el.inkWidths, width, color, opacity, `${el.id}-ink-${i}`) }, `${el.id}-ink-${i}`);
2325
2323
  }
2326
2324
  }
@@ -2355,10 +2353,10 @@ function renderInk(el, options) {
2355
2353
  function renderGroup(children) {
2356
2354
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full h-full pointer-events-none", children: children.map((c, childIndex) => {
2357
2355
  const { hf, fc, sw, sc } = shapeParams(c);
2358
- const ss = chunkYF6JD4DO_js.getShapeVisualStyle(c, hf, fc, sw, sc);
2359
- const vs = chunkYF6JD4DO_js.renderVectorShape(c, hf, fc, sw, sc);
2360
- const ts = chunkYF6JD4DO_js.getTextStyleForElement(c, chunkYF6JD4DO_js.DEFAULT_TEXT_COLOR);
2361
- const isTxt = chunkP3T4E6JQ_js.isEditableTextElement(c);
2356
+ const ss = chunkLXUMBK2O_js.getShapeVisualStyle(c, hf, fc, sw, sc);
2357
+ const vs = chunkLXUMBK2O_js.renderVectorShape(c, hf, fc, sw, sc);
2358
+ const ts = chunkLXUMBK2O_js.getTextStyleForElement(c, chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR);
2359
+ const isTxt = chunkBXACB3BG_js.isEditableTextElement(c);
2362
2360
  const isI = c.type === "picture" || c.type === "image";
2363
2361
  return /* @__PURE__ */ jsxRuntime.jsx(
2364
2362
  "div",
@@ -2367,12 +2365,12 @@ function renderGroup(children) {
2367
2365
  style: {
2368
2366
  left: c.x,
2369
2367
  top: c.y,
2370
- width: Math.max(c.width, chunkYF6JD4DO_js.MIN_ELEMENT_SIZE),
2371
- height: Math.max(c.height, chunkYF6JD4DO_js.MIN_ELEMENT_SIZE),
2372
- transform: chunkP3T4E6JQ_js.getElementTransform(c),
2368
+ width: Math.max(c.width, chunkLXUMBK2O_js.MIN_ELEMENT_SIZE),
2369
+ height: Math.max(c.height, chunkLXUMBK2O_js.MIN_ELEMENT_SIZE),
2370
+ transform: chunkBXACB3BG_js.getElementTransform(c),
2373
2371
  transformOrigin: "center",
2374
2372
  overflow: isI ? "hidden" : void 0,
2375
- clipPath: isI ? chunkYF6JD4DO_js.getCropShapeClipPath(c) : void 0,
2373
+ clipPath: isI ? chunkLXUMBK2O_js.getCropShapeClipPath(c) : void 0,
2376
2374
  ...ss,
2377
2375
  // Explicit z-index preserves document order stacking within the
2378
2376
  // group: later children in the array (= later in p:grpSp XML)
@@ -2380,19 +2378,19 @@ function renderGroup(children) {
2380
2378
  // Placed after ...ss to ensure it is never overwritten.
2381
2379
  zIndex: childIndex
2382
2380
  },
2383
- children: isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? chunkYF6JD4DO_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
2381
+ children: isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? chunkLXUMBK2O_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
2384
2382
  "div",
2385
2383
  {
2386
2384
  className: "pointer-events-none select-none w-full h-full",
2387
- style: chunkYF6JD4DO_js.getImageTilingStyle(c)
2385
+ style: chunkLXUMBK2O_js.getImageTilingStyle(c)
2388
2386
  }
2389
2387
  ) : /* @__PURE__ */ jsxRuntime.jsx(
2390
2388
  "img",
2391
2389
  {
2392
2390
  src: "svgData" in c && c.svgData ? c.svgData : c.imageData,
2393
- alt: chunkAALZCSY4_js.translationsEn["pptx.ink.groupChildAlt"],
2391
+ alt: chunk4SRCC7NB_js.translationsEn["pptx.ink.groupChildAlt"],
2394
2392
  className: "pointer-events-none select-none",
2395
- style: chunkYF6JD4DO_js.getImageRenderStyle(c),
2393
+ style: chunkLXUMBK2O_js.getImageRenderStyle(c),
2396
2394
  draggable: false
2397
2395
  }
2398
2396
  ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -2402,7 +2400,7 @@ function renderGroup(children) {
2402
2400
  {
2403
2401
  className: "relative z-10 w-full h-full pointer-events-none whitespace-pre-wrap break-words leading-[1.3]",
2404
2402
  style: ts,
2405
- children: chunkYF6JD4DO_js.renderTextSegments(c, chunkYF6JD4DO_js.DEFAULT_TEXT_COLOR)
2403
+ children: chunkLXUMBK2O_js.renderTextSegments(c, chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR)
2406
2404
  }
2407
2405
  ) : null
2408
2406
  ] })
@@ -2415,7 +2413,7 @@ function renderContentPart(el, options) {
2415
2413
  if (el.inkStrokes && el.inkStrokes.length > 0) {
2416
2414
  const replay = options?.replay ?? false;
2417
2415
  const pressureSensitive = options?.pressureSensitive ?? true;
2418
- const replayStyles = replay ? chunkP3T4E6JQ_js.getContentPartReplayStyles(el.inkStrokes, options?.replayConfig) : null;
2416
+ const replayStyles = replay ? chunkBXACB3BG_js.getContentPartReplayStyles(el.inkStrokes, options?.replayConfig) : null;
2419
2417
  return /* @__PURE__ */ jsxRuntime.jsxs(
2420
2418
  "svg",
2421
2419
  {
@@ -2423,10 +2421,10 @@ function renderContentPart(el, options) {
2423
2421
  viewBox: `0 0 ${Math.max(el.width, 1)} ${Math.max(el.height, 1)}`,
2424
2422
  preserveAspectRatio: "none",
2425
2423
  children: [
2426
- replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkP3T4E6JQ_js.INK_REPLAY_KEYFRAMES }),
2424
+ replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkBXACB3BG_js.INK_REPLAY_KEYFRAMES }),
2427
2425
  el.inkStrokes.map((stroke, i) => {
2428
- if (pressureSensitive && stroke.pressures && stroke.pressures.length > 1 && chunkP3T4E6JQ_js.hasPressureVariation(stroke.pressures)) {
2429
- const pointWidths = chunkP3T4E6JQ_js.pressuresToWidths(stroke.pressures, stroke.width);
2426
+ if (pressureSensitive && stroke.pressures && stroke.pressures.length > 1 && chunkBXACB3BG_js.hasPressureVariation(stroke.pressures)) {
2427
+ const pointWidths = chunkBXACB3BG_js.pressuresToWidths(stroke.pressures, stroke.width);
2430
2428
  return /* @__PURE__ */ jsxRuntime.jsx("g", { children: renderPressureStroke(
2431
2429
  stroke.path,
2432
2430
  pointWidths,
@@ -2464,7 +2462,7 @@ function renderContentPart(el, options) {
2464
2462
  }
2465
2463
  );
2466
2464
  }
2467
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkAALZCSY4_js.translationsEn["pptx.ink.contentPartFallback"] });
2465
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk4SRCC7NB_js.translationsEn["pptx.ink.contentPartFallback"] });
2468
2466
  }
2469
2467
  function ExcelIcon(color, size = 32) {
2470
2468
  return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", children: [
@@ -2522,7 +2520,7 @@ function PdfIcon(color, size = 32) {
2522
2520
  fill: "none"
2523
2521
  }
2524
2522
  ),
2525
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: "12", y: "14", textAnchor: "middle", fill: color, fontSize: "7", fontWeight: "bold", children: chunkAALZCSY4_js.translationsEn["pptx.file.pdf"] })
2523
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: "12", y: "14", textAnchor: "middle", fill: color, fontSize: "7", fontWeight: "bold", children: chunk4SRCC7NB_js.translationsEn["pptx.file.pdf"] })
2526
2524
  ] });
2527
2525
  }
2528
2526
  function VisioIcon(color, size = 32) {
@@ -2638,16 +2636,16 @@ function getOleIcon(type, color, size = 32) {
2638
2636
  }
2639
2637
  }
2640
2638
  function getOleAriaLabel(el) {
2641
- const oleType = chunkP3T4E6JQ_js.resolveOleType(el);
2642
- const typeLabel = chunkP3T4E6JQ_js.getOleTypeLabel(oleType);
2639
+ const oleType = chunkBXACB3BG_js.resolveOleType(el);
2640
+ const typeLabel = chunkBXACB3BG_js.getOleTypeLabel(oleType);
2643
2641
  if (el.fileName) {
2644
2642
  return `${typeLabel}: ${el.fileName}`;
2645
2643
  }
2646
2644
  return typeLabel;
2647
2645
  }
2648
2646
  function renderOleBadge(oleType) {
2649
- const color = chunkP3T4E6JQ_js.getOleTypeColor(oleType);
2650
- const shortLabel = chunkP3T4E6JQ_js.getOleBadgeLabel(oleType);
2647
+ const color = chunkBXACB3BG_js.getOleTypeColor(oleType);
2648
+ const shortLabel = chunkBXACB3BG_js.getOleBadgeLabel(oleType);
2651
2649
  return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", className: "absolute bottom-1 right-1 z-10", children: [
2652
2650
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "2", y: "2", width: "20", height: "20", rx: "3", fill: color }),
2653
2651
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2739,11 +2737,11 @@ function InlineTextEditor({
2739
2737
  mountedRef.current = true;
2740
2738
  return;
2741
2739
  }
2742
- const pending = chunkP3T4E6JQ_js.getPendingSelectionRestore();
2740
+ const pending = chunkBXACB3BG_js.getPendingSelectionRestore();
2743
2741
  if (!pending || !editorRef.current) {
2744
2742
  return;
2745
2743
  }
2746
- chunkP3T4E6JQ_js.restoreSegmentSelection(
2744
+ chunkBXACB3BG_js.restoreSegmentSelection(
2747
2745
  editorRef.current,
2748
2746
  pending.startSegIdx,
2749
2747
  pending.startOffset,
@@ -2751,8 +2749,8 @@ function InlineTextEditor({
2751
2749
  pending.endOffset
2752
2750
  );
2753
2751
  });
2754
- const warpStyle = chunkYF6JD4DO_js.getTextWarpStyle(textStyleRaw);
2755
- const compensationTransform = chunkP3T4E6JQ_js.getTextCompensationTransform(element);
2752
+ const warpStyle = chunkLXUMBK2O_js.getTextWarpStyle(textStyleRaw);
2753
+ const compensationTransform = chunkBXACB3BG_js.getTextCompensationTransform(element);
2756
2754
  const warpTransform = warpStyle?.transform;
2757
2755
  const mergedTransform = [compensationTransform, warpTransform].filter(Boolean).join(" ") || void 0;
2758
2756
  const wrapperStyle = {
@@ -2827,7 +2825,7 @@ function InlineTextEditor({
2827
2825
  const text = e.clipboardData.getData("text/plain");
2828
2826
  document.execCommand("insertText", false, text);
2829
2827
  },
2830
- children: seed.hasRichSegments ? chunkYF6JD4DO_js.renderTextSegments(element, chunkYF6JD4DO_js.DEFAULT_TEXT_COLOR) : seed.initialText
2828
+ children: seed.hasRichSegments ? chunkLXUMBK2O_js.renderTextSegments(element, chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR) : seed.initialText
2831
2829
  }
2832
2830
  );
2833
2831
  }
@@ -2837,7 +2835,7 @@ function FailedToLoad() {
2837
2835
  var LazyModel3DScene = React14__default.default.lazy(
2838
2836
  async () => {
2839
2837
  try {
2840
- return await import('./Model3DScene-CQP7JLKK.js');
2838
+ return await import('./Model3DScene-BLUWY36S.js');
2841
2839
  } catch {
2842
2840
  return { default: FailedToLoad };
2843
2841
  }
@@ -2982,11 +2980,11 @@ function buildEmbedInfo(el) {
2982
2980
  const canDownload = Boolean(el.oleEmbeddedData);
2983
2981
  return {
2984
2982
  fileName: el.oleEmbeddedFileName ?? el.fileName,
2985
- readableSize: chunkP3T4E6JQ_js.formatBytes(el.oleEmbeddedByteSize),
2983
+ readableSize: chunkBXACB3BG_js.formatBytes(el.oleEmbeddedByteSize),
2986
2984
  progId: el.oleProgId,
2987
- typeLabel: chunkP3T4E6JQ_js.getOleTypeLabel(chunkP3T4E6JQ_js.resolveOleType(el)),
2985
+ typeLabel: chunkBXACB3BG_js.getOleTypeLabel(chunkBXACB3BG_js.resolveOleType(el)),
2988
2986
  canDownload,
2989
- canOpenInBrowser: canDownload && chunkP3T4E6JQ_js.isBrowserOpenableMime(el.oleEmbeddedMimeType)
2987
+ canOpenInBrowser: canDownload && chunkBXACB3BG_js.isBrowserOpenableMime(el.oleEmbeddedMimeType)
2990
2988
  };
2991
2989
  }
2992
2990
  function buildTooltip(info) {
@@ -3036,7 +3034,7 @@ function OleActionFooter({ el, info }) {
3036
3034
  "button",
3037
3035
  {
3038
3036
  type: "button",
3039
- onClick: () => chunkP3T4E6JQ_js.openUrlInNewTab(el.oleEmbeddedData),
3037
+ onClick: () => chunkBXACB3BG_js.openUrlInNewTab(el.oleEmbeddedData),
3040
3038
  className: "rounded px-1.5 py-0.5 bg-white/15 hover:bg-white/25 focus-visible:outline focus-visible:outline-1 focus-visible:outline-white",
3041
3039
  title: `Open ${downloadName} in a new tab`,
3042
3040
  children: t("pptx.ole.open")
@@ -3048,7 +3046,7 @@ function OleActionFooter({ el, info }) {
3048
3046
  );
3049
3047
  }
3050
3048
  function OleRenderer({ element: el }) {
3051
- const oleType = chunkP3T4E6JQ_js.resolveOleType(el);
3049
+ const oleType = chunkBXACB3BG_js.resolveOleType(el);
3052
3050
  const ariaLabel = getOleAriaLabel(el);
3053
3051
  const info = buildEmbedInfo(el);
3054
3052
  const tooltip = buildTooltip(info);
@@ -3076,8 +3074,8 @@ function OleRenderer({ element: el }) {
3076
3074
  }
3077
3075
  );
3078
3076
  }
3079
- const color = chunkP3T4E6JQ_js.getOleTypeColor(oleType);
3080
- const label = chunkP3T4E6JQ_js.getOleTypeLabel(oleType);
3077
+ const color = chunkBXACB3BG_js.getOleTypeColor(oleType);
3078
+ const label = chunkBXACB3BG_js.getOleTypeLabel(oleType);
3081
3079
  const displayName = info.fileName ?? label;
3082
3080
  return /* @__PURE__ */ jsxRuntime.jsxs(
3083
3081
  "div",
@@ -3222,7 +3220,7 @@ function useSmartArtHoverState(containerRef) {
3222
3220
  cancelPendingHide();
3223
3221
  setHoveredNodeId(nodeEl.getAttribute(NODE_ID_ATTR));
3224
3222
  setHoveredNodeRect(
3225
- chunkP3T4E6JQ_js.computeInlineEditorRect(
3223
+ chunkBXACB3BG_js.computeInlineEditorRect(
3226
3224
  nodeEl.getBoundingClientRect(),
3227
3225
  container.getBoundingClientRect()
3228
3226
  )
@@ -3281,7 +3279,7 @@ function SmartArtEditableLayer({
3281
3279
  const textRect = textEl?.getBoundingClientRect();
3282
3280
  const hasTextRect = textRect !== void 0 && textRect.width > 0 && textRect.height > 0;
3283
3281
  const sourceRect = hasTextRect ? textRect : nodeEl.getBoundingClientRect();
3284
- const rect = chunkP3T4E6JQ_js.computeInlineEditorRect(sourceRect, container.getBoundingClientRect());
3282
+ const rect = chunkBXACB3BG_js.computeInlineEditorRect(sourceRect, container.getBoundingClientRect());
3285
3283
  const paddedRect = {
3286
3284
  left: rect.left - EDITOR_PADDING,
3287
3285
  top: rect.top - EDITOR_PADDING,
@@ -3298,7 +3296,7 @@ function SmartArtEditableLayer({
3298
3296
  if (!canEdit) {
3299
3297
  return children;
3300
3298
  }
3301
- const initialText = edit ? chunkP3T4E6JQ_js.findSmartArtNodeText(smartArtData, edit.nodeId) ?? "" : "";
3299
+ const initialText = edit ? chunkBXACB3BG_js.findSmartArtNodeText(smartArtData, edit.nodeId) ?? "" : "";
3302
3300
  const showStyleBar = !edit && hoveredNodeId !== null && hoveredNodeRect !== null && palette !== void 0 && onChangeNodeStyle !== void 0;
3303
3301
  return /* @__PURE__ */ jsxRuntime.jsxs(
3304
3302
  "div",
@@ -3397,8 +3395,8 @@ function DrawingShapeRenderer({
3397
3395
  }
3398
3396
  const drawingW = maxX - minX || 1;
3399
3397
  const drawingH = maxY - minY || 1;
3400
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
3401
- const sw = chunkYF6JD4DO_js.styleStroke(style);
3398
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
3399
+ const sw = chunkLXUMBK2O_js.styleStroke(style);
3402
3400
  return /* @__PURE__ */ jsxRuntime.jsx(
3403
3401
  "svg",
3404
3402
  {
@@ -3407,7 +3405,7 @@ function DrawingShapeRenderer({
3407
3405
  preserveAspectRatio: "xMidYMid meet",
3408
3406
  "data-testid": "smartart-drawing-shapes",
3409
3407
  children: shapes.map((shape, i) => {
3410
- const fill = shape.fillColor ?? chunkYF6JD4DO_js.colour(i, palette);
3408
+ const fill = shape.fillColor ?? chunkLXUMBK2O_js.colour(i, palette);
3411
3409
  const relX = shape.x - minX;
3412
3410
  const relY = shape.y - minY;
3413
3411
  const rx = shape.shapeType === "roundRect" ? Math.min(shape.width, shape.height) * 0.1 : 0;
@@ -3416,10 +3414,10 @@ function DrawingShapeRenderer({
3416
3414
  const rotation = shape.rotation ? `rotate(${shape.rotation} ${relX + shape.width / 2} ${relY + shape.height / 2})` : void 0;
3417
3415
  const strokeCol = shape.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none");
3418
3416
  const strokeW = shape.strokeWidth ?? sw;
3419
- const fontSize = shape.fontSize ?? chunkYF6JD4DO_js.fitFontSize(shape.text ?? "", shape.width * 0.85, shape.height, 14);
3420
- const nodeId = nodes ? chunkP3T4E6JQ_js.resolveDrawingShapeNodeId(shape, i, shapes, nodes) : void 0;
3417
+ const fontSize = shape.fontSize ?? chunkLXUMBK2O_js.fitFontSize(shape.text ?? "", shape.width * 0.85, shape.height, 14);
3418
+ const nodeId = nodes ? chunkBXACB3BG_js.resolveDrawingShapeNodeId(shape, i, shapes, nodes) : void 0;
3421
3419
  const nodeLabel = nodeId ? nodeLabels?.get(nodeId) : void 0;
3422
- const groupProps = nodeId ? chunkYF6JD4DO_js.smartArtNodeGroupProps(nodeId, shadow, nodeLabel) : { style: { filter: shadow } };
3420
+ const groupProps = nodeId ? chunkLXUMBK2O_js.smartArtNodeGroupProps(nodeId, shadow, nodeLabel) : { style: { filter: shadow } };
3423
3421
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { ...groupProps, children: [
3424
3422
  nodeLabel ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: nodeLabel }) : null,
3425
3423
  isEllipse ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -3437,7 +3435,7 @@ function DrawingShapeRenderer({
3437
3435
  ) : isChevron ? /* @__PURE__ */ jsxRuntime.jsx(
3438
3436
  "polygon",
3439
3437
  {
3440
- points: chunkYF6JD4DO_js.chevronPoints(relX, relY, shape.width, shape.height),
3438
+ points: chunkLXUMBK2O_js.chevronPoints(relX, relY, shape.width, shape.height),
3441
3439
  fill,
3442
3440
  stroke: strokeCol,
3443
3441
  strokeWidth: strokeW,
@@ -3458,11 +3456,11 @@ function DrawingShapeRenderer({
3458
3456
  }
3459
3457
  ),
3460
3458
  shape.text ? /* @__PURE__ */ jsxRuntime.jsx(
3461
- chunkYF6JD4DO_js.SmartArtNodeText,
3459
+ chunkLXUMBK2O_js.SmartArtNodeText,
3462
3460
  {
3463
3461
  x: relX + shape.width / 2,
3464
3462
  y: relY + shape.height / 2,
3465
- text: chunkYF6JD4DO_js.truncate(shape.text, 40),
3463
+ text: chunkLXUMBK2O_js.truncate(shape.text, 40),
3466
3464
  fill: shape.fontColor ?? "white",
3467
3465
  fontSize,
3468
3466
  className: "pointer-events-none"
@@ -3478,7 +3476,7 @@ function DrawingShapeRenderer({
3478
3476
  function resolveNodeStyle(node, index, palette) {
3479
3477
  const style = node.style;
3480
3478
  return {
3481
- fill: style?.fillColor ?? chunkYF6JD4DO_js.colour(index, palette),
3479
+ fill: style?.fillColor ?? chunkLXUMBK2O_js.colour(index, palette),
3482
3480
  fontColor: style?.fontColor ?? "white",
3483
3481
  fontWeight: style?.bold ? 700 : void 0,
3484
3482
  fontStyle: style?.italic ? "italic" : void 0,
@@ -3500,8 +3498,8 @@ function ListRenderer({
3500
3498
  const itemH = (usableH - gap * (nodes.length - 1)) / nodes.length;
3501
3499
  const itemW = w - pad * 2;
3502
3500
  const rx = Math.min(6, itemH * 0.15);
3503
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
3504
- const sw = chunkYF6JD4DO_js.styleStroke(style);
3501
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
3502
+ const sw = chunkLXUMBK2O_js.styleStroke(style);
3505
3503
  return /* @__PURE__ */ jsxRuntime.jsx(
3506
3504
  "svg",
3507
3505
  {
@@ -3511,13 +3509,13 @@ function ListRenderer({
3511
3509
  "data-testid": "smartart-list",
3512
3510
  children: nodes.map((node, i) => {
3513
3511
  const y = pad + i * (itemH + gap);
3514
- const fontSize = chunkYF6JD4DO_js.fitFontSize(node.text, itemW * 0.9, itemH, 12);
3512
+ const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, itemW * 0.9, itemH, 12);
3515
3513
  const ns = resolveNodeStyle(node, i, palette);
3516
3514
  const label = nodeLabels?.get(node.id);
3517
3515
  return /* @__PURE__ */ jsxRuntime.jsxs(
3518
3516
  "g",
3519
3517
  {
3520
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(node.id, shadow, label),
3518
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow, label),
3521
3519
  children: [
3522
3520
  label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
3523
3521
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3529,17 +3527,17 @@ function ListRenderer({
3529
3527
  height: itemH,
3530
3528
  rx,
3531
3529
  fill: ns.fill,
3532
- opacity: chunkYF6JD4DO_js.nodeOpacity(i, nodes.length, style),
3530
+ opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style),
3533
3531
  stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
3534
3532
  strokeWidth: sw
3535
3533
  }
3536
3534
  ),
3537
3535
  /* @__PURE__ */ jsxRuntime.jsx(
3538
- chunkYF6JD4DO_js.SmartArtNodeText,
3536
+ chunkLXUMBK2O_js.SmartArtNodeText,
3539
3537
  {
3540
3538
  x: pad + itemW / 2,
3541
3539
  y: y + itemH / 2,
3542
- text: chunkYF6JD4DO_js.truncate(node.text, 40),
3540
+ text: chunkLXUMBK2O_js.truncate(node.text, 40),
3543
3541
  fill: ns.fontColor,
3544
3542
  fontWeight: ns.fontWeight,
3545
3543
  fontStyle: ns.fontStyle,
@@ -3571,8 +3569,8 @@ function ProcessRenderer({
3571
3569
  const itemW = (usableW - gap * (nodes.length - 1)) / nodes.length;
3572
3570
  const itemH = Math.min(h - pad * 2, h * 0.6);
3573
3571
  const yMid = h / 2;
3574
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
3575
- const sw = chunkYF6JD4DO_js.styleStroke(style);
3572
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
3573
+ const sw = chunkLXUMBK2O_js.styleStroke(style);
3576
3574
  return /* @__PURE__ */ jsxRuntime.jsx(
3577
3575
  "svg",
3578
3576
  {
@@ -3586,13 +3584,13 @@ function ProcessRenderer({
3586
3584
  const isFirst = i === 0;
3587
3585
  const isLast = i === nodes.length - 1;
3588
3586
  const points = isFirst ? `${x},${yMid - halfH} ${x + itemW - chevronDepth},${yMid - halfH} ${x + itemW},${yMid} ${x + itemW - chevronDepth},${yMid + halfH} ${x},${yMid + halfH}` : isLast ? `${x},${yMid - halfH} ${x + itemW},${yMid - halfH} ${x + itemW},${yMid + halfH} ${x},${yMid + halfH} ${x + chevronDepth},${yMid}` : `${x},${yMid - halfH} ${x + itemW - chevronDepth},${yMid - halfH} ${x + itemW},${yMid} ${x + itemW - chevronDepth},${yMid + halfH} ${x},${yMid + halfH} ${x + chevronDepth},${yMid}`;
3589
- const fontSize = chunkYF6JD4DO_js.fitFontSize(node.text, itemW * 0.7, itemH, 12);
3587
+ const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, itemW * 0.7, itemH, 12);
3590
3588
  const ns = resolveNodeStyle(node, i, palette);
3591
3589
  const label = nodeLabels?.get(node.id);
3592
3590
  return /* @__PURE__ */ jsxRuntime.jsxs(
3593
3591
  "g",
3594
3592
  {
3595
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(node.id, shadow, label),
3593
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow, label),
3596
3594
  children: [
3597
3595
  label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
3598
3596
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3600,17 +3598,17 @@ function ProcessRenderer({
3600
3598
  {
3601
3599
  points,
3602
3600
  fill: ns.fill,
3603
- opacity: chunkYF6JD4DO_js.nodeOpacity(i, nodes.length, style),
3601
+ opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style),
3604
3602
  stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
3605
3603
  strokeWidth: sw
3606
3604
  }
3607
3605
  ),
3608
3606
  /* @__PURE__ */ jsxRuntime.jsx(
3609
- chunkYF6JD4DO_js.SmartArtNodeText,
3607
+ chunkLXUMBK2O_js.SmartArtNodeText,
3610
3608
  {
3611
3609
  x: x + itemW / 2,
3612
3610
  y: yMid,
3613
- text: chunkYF6JD4DO_js.truncate(node.text, 25),
3611
+ text: chunkLXUMBK2O_js.truncate(node.text, 25),
3614
3612
  fill: ns.fontColor,
3615
3613
  fontWeight: ns.fontWeight,
3616
3614
  fontStyle: ns.fontStyle,
@@ -3640,8 +3638,8 @@ function CycleRenderer({
3640
3638
  const cy = h / 2;
3641
3639
  const radius = size * 0.35;
3642
3640
  const nodeR = Math.max(size * 0.06, Math.min(size * 0.12, 200 / nodes.length));
3643
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
3644
- const sw = chunkYF6JD4DO_js.styleStroke(style);
3641
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
3642
+ const sw = chunkLXUMBK2O_js.styleStroke(style);
3645
3643
  return /* @__PURE__ */ jsxRuntime.jsxs(
3646
3644
  "svg",
3647
3645
  {
@@ -3680,13 +3678,13 @@ function CycleRenderer({
3680
3678
  const angle = i / nodes.length * Math.PI * 2 - Math.PI / 2;
3681
3679
  const nx = cx + radius * Math.cos(angle);
3682
3680
  const ny = cy + radius * Math.sin(angle);
3683
- const fontSize = chunkYF6JD4DO_js.fitFontSize(node.text, nodeR * 1.4, nodeR * 2, 11);
3681
+ const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, nodeR * 1.4, nodeR * 2, 11);
3684
3682
  const ns = resolveNodeStyle(node, i, palette);
3685
3683
  const label = nodeLabels?.get(node.id);
3686
3684
  return /* @__PURE__ */ jsxRuntime.jsxs(
3687
3685
  "g",
3688
3686
  {
3689
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(node.id, shadow, label),
3687
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow, label),
3690
3688
  children: [
3691
3689
  label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
3692
3690
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3696,17 +3694,17 @@ function CycleRenderer({
3696
3694
  cy: ny,
3697
3695
  r: nodeR,
3698
3696
  fill: ns.fill,
3699
- opacity: chunkYF6JD4DO_js.nodeOpacity(i, nodes.length, style),
3697
+ opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style),
3700
3698
  stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
3701
3699
  strokeWidth: sw
3702
3700
  }
3703
3701
  ),
3704
3702
  /* @__PURE__ */ jsxRuntime.jsx(
3705
- chunkYF6JD4DO_js.SmartArtNodeText,
3703
+ chunkLXUMBK2O_js.SmartArtNodeText,
3706
3704
  {
3707
3705
  x: nx,
3708
3706
  y: ny,
3709
- text: chunkYF6JD4DO_js.truncate(node.text, 20),
3707
+ text: chunkLXUMBK2O_js.truncate(node.text, 20),
3710
3708
  fill: ns.fontColor,
3711
3709
  fontWeight: ns.fontWeight,
3712
3710
  fontStyle: ns.fontStyle,
@@ -3741,8 +3739,8 @@ function MatrixRenderer({
3741
3739
  const cellW = (usableW - gap * (cols - 1)) / cols;
3742
3740
  const cellH = (usableH - gap * (rows - 1)) / rows;
3743
3741
  const rx = Math.min(6, Math.min(cellW, cellH) * 0.1);
3744
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
3745
- const sw = chunkYF6JD4DO_js.styleStroke(style);
3742
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
3743
+ const sw = chunkLXUMBK2O_js.styleStroke(style);
3746
3744
  return /* @__PURE__ */ jsxRuntime.jsx(
3747
3745
  "svg",
3748
3746
  {
@@ -3755,13 +3753,13 @@ function MatrixRenderer({
3755
3753
  const row = Math.floor(i / cols);
3756
3754
  const x = pad + col * (cellW + gap);
3757
3755
  const y = pad + row * (cellH + gap);
3758
- const fontSize = chunkYF6JD4DO_js.fitFontSize(node.text, cellW * 0.85, cellH, 12);
3756
+ const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, cellW * 0.85, cellH, 12);
3759
3757
  const ns = resolveNodeStyle(node, i, palette);
3760
3758
  const label = nodeLabels?.get(node.id);
3761
3759
  return /* @__PURE__ */ jsxRuntime.jsxs(
3762
3760
  "g",
3763
3761
  {
3764
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(node.id, shadow, label),
3762
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow, label),
3765
3763
  children: [
3766
3764
  label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
3767
3765
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3773,17 +3771,17 @@ function MatrixRenderer({
3773
3771
  height: cellH,
3774
3772
  rx,
3775
3773
  fill: ns.fill,
3776
- opacity: chunkYF6JD4DO_js.nodeOpacity(i, nodes.length, style),
3774
+ opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style),
3777
3775
  stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
3778
3776
  strokeWidth: sw
3779
3777
  }
3780
3778
  ),
3781
3779
  /* @__PURE__ */ jsxRuntime.jsx(
3782
- chunkYF6JD4DO_js.SmartArtNodeText,
3780
+ chunkLXUMBK2O_js.SmartArtNodeText,
3783
3781
  {
3784
3782
  x: x + cellW / 2,
3785
3783
  y: y + cellH / 2,
3786
- text: chunkYF6JD4DO_js.truncate(node.text, 30),
3784
+ text: chunkLXUMBK2O_js.truncate(node.text, 30),
3787
3785
  fill: ns.fontColor,
3788
3786
  fontWeight: ns.fontWeight ?? 500,
3789
3787
  fontStyle: ns.fontStyle,
@@ -3812,8 +3810,8 @@ function PyramidRenderer({
3812
3810
  const usableH = h - pad * 2;
3813
3811
  const bandH = (usableH - gap * (nodes.length - 1)) / nodes.length;
3814
3812
  const maxW = w - pad * 2;
3815
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
3816
- const sw = chunkYF6JD4DO_js.styleStroke(style);
3813
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
3814
+ const sw = chunkLXUMBK2O_js.styleStroke(style);
3817
3815
  return /* @__PURE__ */ jsxRuntime.jsx(
3818
3816
  "svg",
3819
3817
  {
@@ -3837,28 +3835,28 @@ function PyramidRenderer({
3837
3835
  `${bottomRight},${y + bandH}`,
3838
3836
  `${bottomLeft},${y + bandH}`
3839
3837
  ].join(" ");
3840
- const fontSize = chunkYF6JD4DO_js.fitFontSize(node.text, topW * 0.85, bandH, 12);
3838
+ const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, topW * 0.85, bandH, 12);
3841
3839
  return /* @__PURE__ */ jsxRuntime.jsxs(
3842
3840
  "g",
3843
3841
  {
3844
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(node.id, shadow),
3842
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
3845
3843
  children: [
3846
3844
  /* @__PURE__ */ jsxRuntime.jsx(
3847
3845
  "polygon",
3848
3846
  {
3849
3847
  points,
3850
- fill: chunkYF6JD4DO_js.colour(i, palette),
3851
- opacity: chunkYF6JD4DO_js.nodeOpacity(i, nodes.length, style),
3848
+ fill: chunkLXUMBK2O_js.colour(i, palette),
3849
+ opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style),
3852
3850
  stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
3853
3851
  strokeWidth: sw
3854
3852
  }
3855
3853
  ),
3856
3854
  /* @__PURE__ */ jsxRuntime.jsx(
3857
- chunkYF6JD4DO_js.SmartArtNodeText,
3855
+ chunkLXUMBK2O_js.SmartArtNodeText,
3858
3856
  {
3859
3857
  x: w / 2,
3860
3858
  y: y + bandH / 2,
3861
- text: chunkYF6JD4DO_js.truncate(node.text, 30),
3859
+ text: chunkLXUMBK2O_js.truncate(node.text, 30),
3862
3860
  fill: "white",
3863
3861
  fontSize,
3864
3862
  className: "pointer-events-none"
@@ -3880,7 +3878,7 @@ function VennRenderer({
3880
3878
  }) {
3881
3879
  const w = element.width;
3882
3880
  const h = element.height;
3883
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
3881
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
3884
3882
  if (nodes.length <= 4) {
3885
3883
  const cx = w / 2;
3886
3884
  const cy2 = h / 2;
@@ -3897,19 +3895,19 @@ function VennRenderer({
3897
3895
  const angle = i / nodes.length * Math.PI * 2 - Math.PI / 2;
3898
3896
  const nx = cx + spread * Math.cos(angle);
3899
3897
  const ny = cy2 + spread * Math.sin(angle);
3900
- const fontSize = chunkYF6JD4DO_js.fitFontSize(node.text, r2 * 1.2, r2 * 2, 11);
3898
+ const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, r2 * 1.2, r2 * 2, 11);
3901
3899
  return /* @__PURE__ */ jsxRuntime.jsxs(
3902
3900
  "g",
3903
3901
  {
3904
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(node.id, shadow),
3902
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
3905
3903
  children: [
3906
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy: ny, r: r2, fill: chunkYF6JD4DO_js.colour(i, palette), opacity: 0.35 }),
3904
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy: ny, r: r2, fill: chunkLXUMBK2O_js.colour(i, palette), opacity: 0.35 }),
3907
3905
  /* @__PURE__ */ jsxRuntime.jsx(
3908
- chunkYF6JD4DO_js.SmartArtNodeText,
3906
+ chunkLXUMBK2O_js.SmartArtNodeText,
3909
3907
  {
3910
3908
  x: nx,
3911
3909
  y: ny,
3912
- text: chunkYF6JD4DO_js.truncate(node.text, 20),
3910
+ text: chunkLXUMBK2O_js.truncate(node.text, 20),
3913
3911
  fill: "white",
3914
3912
  fontSize,
3915
3913
  fontWeight: "bold",
@@ -3938,19 +3936,19 @@ function VennRenderer({
3938
3936
  "data-testid": "smartart-venn",
3939
3937
  children: nodes.map((node, i) => {
3940
3938
  const nx = offsetX + i * (r * 2 - overlap);
3941
- const fontSize = chunkYF6JD4DO_js.fitFontSize(node.text, r * 1.2, r * 2, 10);
3939
+ const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, r * 1.2, r * 2, 10);
3942
3940
  return /* @__PURE__ */ jsxRuntime.jsxs(
3943
3941
  "g",
3944
3942
  {
3945
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(node.id, shadow),
3943
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
3946
3944
  children: [
3947
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy, r, fill: chunkYF6JD4DO_js.colour(i, palette), opacity: 0.35 }),
3945
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy, r, fill: chunkLXUMBK2O_js.colour(i, palette), opacity: 0.35 }),
3948
3946
  /* @__PURE__ */ jsxRuntime.jsx(
3949
- chunkYF6JD4DO_js.SmartArtNodeText,
3947
+ chunkLXUMBK2O_js.SmartArtNodeText,
3950
3948
  {
3951
3949
  x: nx,
3952
3950
  y: cy,
3953
- text: chunkYF6JD4DO_js.truncate(node.text, 20),
3951
+ text: chunkLXUMBK2O_js.truncate(node.text, 20),
3954
3952
  fill: "white",
3955
3953
  fontSize,
3956
3954
  fontWeight: "bold",
@@ -3976,7 +3974,7 @@ function FunnelRenderer({
3976
3974
  const pad = 8;
3977
3975
  const usableW = w - pad * 2;
3978
3976
  const stageH = (h - pad * 2) / nodes.length;
3979
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
3977
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
3980
3978
  return /* @__PURE__ */ jsxRuntime.jsx(
3981
3979
  "svg",
3982
3980
  {
@@ -3998,26 +3996,26 @@ function FunnelRenderer({
3998
3996
  `${bottomRight},${y + stageH}`,
3999
3997
  `${bottomLeft},${y + stageH}`
4000
3998
  ].join(" ");
4001
- const fontSize = chunkYF6JD4DO_js.fitFontSize(node.text, topWidth * 0.85, stageH, 11);
3999
+ const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, topWidth * 0.85, stageH, 11);
4002
4000
  return /* @__PURE__ */ jsxRuntime.jsxs(
4003
4001
  "g",
4004
4002
  {
4005
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(node.id, shadow),
4003
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
4006
4004
  children: [
4007
4005
  /* @__PURE__ */ jsxRuntime.jsx(
4008
4006
  "polygon",
4009
4007
  {
4010
4008
  points,
4011
- fill: chunkYF6JD4DO_js.colour(i, palette),
4012
- opacity: chunkYF6JD4DO_js.nodeOpacity(i, nodes.length, style)
4009
+ fill: chunkLXUMBK2O_js.colour(i, palette),
4010
+ opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style)
4013
4011
  }
4014
4012
  ),
4015
4013
  /* @__PURE__ */ jsxRuntime.jsx(
4016
- chunkYF6JD4DO_js.SmartArtNodeText,
4014
+ chunkLXUMBK2O_js.SmartArtNodeText,
4017
4015
  {
4018
4016
  x: w / 2,
4019
4017
  y: y + stageH / 2,
4020
- text: chunkYF6JD4DO_js.truncate(node.text, 30),
4018
+ text: chunkLXUMBK2O_js.truncate(node.text, 30),
4021
4019
  fill: "white",
4022
4020
  fontSize,
4023
4021
  className: "pointer-events-none"
@@ -4044,7 +4042,7 @@ function TargetRenderer({
4044
4042
  const maxR = Math.min(cx - 8, cy - 8);
4045
4043
  const fontSize = Math.max(7, Math.min(10, maxR / (nodes.length + 1)));
4046
4044
  const labelX = cx + maxR + 8;
4047
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
4045
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
4048
4046
  return /* @__PURE__ */ jsxRuntime.jsx(
4049
4047
  "svg",
4050
4048
  {
@@ -4057,7 +4055,7 @@ function TargetRenderer({
4057
4055
  return /* @__PURE__ */ jsxRuntime.jsxs(
4058
4056
  "g",
4059
4057
  {
4060
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(node.id, shadow),
4058
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
4061
4059
  children: [
4062
4060
  /* @__PURE__ */ jsxRuntime.jsx(
4063
4061
  "circle",
@@ -4065,8 +4063,8 @@ function TargetRenderer({
4065
4063
  cx,
4066
4064
  cy,
4067
4065
  r: Math.max(r, 4),
4068
- fill: chunkYF6JD4DO_js.colour(i, palette),
4069
- opacity: chunkYF6JD4DO_js.nodeOpacity(i, nodes.length, style)
4066
+ fill: chunkLXUMBK2O_js.colour(i, palette),
4067
+ opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style)
4070
4068
  }
4071
4069
  ),
4072
4070
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4076,7 +4074,7 @@ function TargetRenderer({
4076
4074
  y1: cy,
4077
4075
  x2: labelX - 2,
4078
4076
  y2: 8 + i * (fontSize + 6),
4079
- stroke: chunkYF6JD4DO_js.colour(i, palette),
4077
+ stroke: chunkLXUMBK2O_js.colour(i, palette),
4080
4078
  strokeWidth: 1,
4081
4079
  opacity: 0.6
4082
4080
  }
@@ -4088,10 +4086,10 @@ function TargetRenderer({
4088
4086
  y: 8 + i * (fontSize + 6) + fontSize / 2,
4089
4087
  textAnchor: "start",
4090
4088
  dominantBaseline: "central",
4091
- fill: chunkYF6JD4DO_js.colour(i, palette),
4089
+ fill: chunkLXUMBK2O_js.colour(i, palette),
4092
4090
  fontSize,
4093
4091
  className: "pointer-events-none",
4094
- children: chunkYF6JD4DO_js.truncate(node.text, 30)
4092
+ children: chunkLXUMBK2O_js.truncate(node.text, 30)
4095
4093
  }
4096
4094
  )
4097
4095
  ]
@@ -4108,12 +4106,12 @@ function HierarchyRenderer({
4108
4106
  palette,
4109
4107
  style
4110
4108
  }) {
4111
- const roots = chunkYF6JD4DO_js.buildTree(nodes);
4109
+ const roots = chunkLXUMBK2O_js.buildTree(nodes);
4112
4110
  if (roots.length === 0) {
4113
4111
  return /* @__PURE__ */ jsxRuntime.jsx(ListRenderer, { element, nodes, palette, style });
4114
4112
  }
4115
- const totalLeaves = roots.reduce((s, r) => s + chunkYF6JD4DO_js.treeWidth(r), 0);
4116
- const depth = Math.max(...roots.map(chunkYF6JD4DO_js.treeDepth));
4113
+ const totalLeaves = roots.reduce((s, r) => s + chunkLXUMBK2O_js.treeWidth(r), 0);
4114
+ const depth = Math.max(...roots.map(chunkLXUMBK2O_js.treeDepth));
4117
4115
  const svgW = element.width;
4118
4116
  const svgH = element.height;
4119
4117
  const cellW = svgW / totalLeaves;
@@ -4121,24 +4119,24 @@ function HierarchyRenderer({
4121
4119
  const boxW = Math.min(cellW * 0.8, 140);
4122
4120
  const boxH = Math.min(cellH * 0.4, 36);
4123
4121
  const rx = Math.min(6, boxH * 0.15);
4124
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
4125
- const sw = chunkYF6JD4DO_js.styleStroke(style);
4122
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
4123
+ const sw = chunkLXUMBK2O_js.styleStroke(style);
4126
4124
  const elements = [];
4127
4125
  let colourIdx = 0;
4128
4126
  function renderTreeNode(t, xOffset, level) {
4129
- const w = chunkYF6JD4DO_js.treeWidth(t);
4127
+ const w = chunkLXUMBK2O_js.treeWidth(t);
4130
4128
  const nodeCx = (xOffset + w / 2) * cellW;
4131
4129
  const nodeCy = level * cellH + cellH / 2;
4132
4130
  const ci = colourIdx++;
4133
- const fontSize = chunkYF6JD4DO_js.fitFontSize(t.node.text, boxW * 0.9, boxH, 11);
4131
+ const fontSize = chunkLXUMBK2O_js.fitFontSize(t.node.text, boxW * 0.9, boxH, 11);
4134
4132
  for (const child of t.children) {
4135
- const childW = chunkYF6JD4DO_js.treeWidth(child);
4133
+ const childW = chunkLXUMBK2O_js.treeWidth(child);
4136
4134
  let childOffset2 = xOffset;
4137
4135
  for (const c of t.children) {
4138
4136
  if (c === child) {
4139
4137
  break;
4140
4138
  }
4141
- childOffset2 += chunkYF6JD4DO_js.treeWidth(c);
4139
+ childOffset2 += chunkLXUMBK2O_js.treeWidth(c);
4142
4140
  }
4143
4141
  const childCx = (childOffset2 + childW / 2) * cellW;
4144
4142
  const childCy = (level + 1) * cellH + cellH / 2;
@@ -4161,7 +4159,7 @@ function HierarchyRenderer({
4161
4159
  /* @__PURE__ */ jsxRuntime.jsxs(
4162
4160
  "g",
4163
4161
  {
4164
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(t.node.id, shadow),
4162
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(t.node.id, shadow),
4165
4163
  children: [
4166
4164
  /* @__PURE__ */ jsxRuntime.jsx(
4167
4165
  "rect",
@@ -4171,18 +4169,18 @@ function HierarchyRenderer({
4171
4169
  width: boxW,
4172
4170
  height: boxH,
4173
4171
  rx,
4174
- fill: chunkYF6JD4DO_js.colour(ci, palette),
4175
- opacity: chunkYF6JD4DO_js.nodeOpacity(ci, nodes.length, style),
4172
+ fill: chunkLXUMBK2O_js.colour(ci, palette),
4173
+ opacity: chunkLXUMBK2O_js.nodeOpacity(ci, nodes.length, style),
4176
4174
  stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
4177
4175
  strokeWidth: sw
4178
4176
  }
4179
4177
  ),
4180
4178
  /* @__PURE__ */ jsxRuntime.jsx(
4181
- chunkYF6JD4DO_js.SmartArtNodeText,
4179
+ chunkLXUMBK2O_js.SmartArtNodeText,
4182
4180
  {
4183
4181
  x: nodeCx,
4184
4182
  y: nodeCy,
4185
- text: chunkYF6JD4DO_js.truncate(t.node.text, 40),
4183
+ text: chunkLXUMBK2O_js.truncate(t.node.text, 40),
4186
4184
  fill: "white",
4187
4185
  fontSize,
4188
4186
  className: "pointer-events-none"
@@ -4196,7 +4194,7 @@ function HierarchyRenderer({
4196
4194
  let childOffset = xOffset;
4197
4195
  for (const child of t.children) {
4198
4196
  renderTreeNode(child, childOffset, level + 1);
4199
- childOffset += chunkYF6JD4DO_js.treeWidth(child);
4197
+ childOffset += chunkLXUMBK2O_js.treeWidth(child);
4200
4198
  }
4201
4199
  return w;
4202
4200
  }
@@ -4231,7 +4229,7 @@ function GearRenderer({
4231
4229
  const gearR = Math.min(spacing * 0.4, h * 0.35);
4232
4230
  const innerR = gearR * 0.7;
4233
4231
  const teethCount = 8;
4234
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
4232
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
4235
4233
  return /* @__PURE__ */ jsxRuntime.jsxs(
4236
4234
  "svg",
4237
4235
  {
@@ -4243,27 +4241,27 @@ function GearRenderer({
4243
4241
  gearNodes.map((node, i) => {
4244
4242
  const gx = spacing * (i + 1);
4245
4243
  const gy = h / 2 + (i % 2 === 0 ? 0 : gearR * 0.35);
4246
- const fontSize = chunkYF6JD4DO_js.fitFontSize(node.text, innerR * 1.2, innerR * 2, 11);
4244
+ const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, innerR * 1.2, innerR * 2, 11);
4247
4245
  return /* @__PURE__ */ jsxRuntime.jsxs(
4248
4246
  "g",
4249
4247
  {
4250
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(node.id, shadow),
4248
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
4251
4249
  children: [
4252
4250
  /* @__PURE__ */ jsxRuntime.jsx(
4253
4251
  "path",
4254
4252
  {
4255
- d: chunkYF6JD4DO_js.gearPath(gx, gy, gearR, innerR, teethCount),
4256
- fill: chunkYF6JD4DO_js.colour(i, palette),
4257
- opacity: chunkYF6JD4DO_js.nodeOpacity(i, nodes.length, style)
4253
+ d: chunkLXUMBK2O_js.gearPath(gx, gy, gearR, innerR, teethCount),
4254
+ fill: chunkLXUMBK2O_js.colour(i, palette),
4255
+ opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style)
4258
4256
  }
4259
4257
  ),
4260
4258
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: gx, cy: gy, r: innerR * 0.5, fill: "white", opacity: 0.25 }),
4261
4259
  /* @__PURE__ */ jsxRuntime.jsx(
4262
- chunkYF6JD4DO_js.SmartArtNodeText,
4260
+ chunkLXUMBK2O_js.SmartArtNodeText,
4263
4261
  {
4264
4262
  x: gx,
4265
4263
  y: gy,
4266
- text: chunkYF6JD4DO_js.truncate(node.text, 20),
4264
+ text: chunkLXUMBK2O_js.truncate(node.text, 20),
4267
4265
  fill: "white",
4268
4266
  fontSize,
4269
4267
  fontWeight: "bold",
@@ -4285,8 +4283,8 @@ function GearRenderer({
4285
4283
  cx: lx,
4286
4284
  cy: ly,
4287
4285
  r: 3,
4288
- fill: chunkYF6JD4DO_js.colour(gearCount + i, palette),
4289
- opacity: chunkYF6JD4DO_js.nodeOpacity(gearCount + i, nodes.length, style)
4286
+ fill: chunkLXUMBK2O_js.colour(gearCount + i, palette),
4287
+ opacity: chunkLXUMBK2O_js.nodeOpacity(gearCount + i, nodes.length, style)
4290
4288
  }
4291
4289
  ),
4292
4290
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4296,10 +4294,10 @@ function GearRenderer({
4296
4294
  y: ly,
4297
4295
  textAnchor: "start",
4298
4296
  dominantBaseline: "central",
4299
- fill: chunkYF6JD4DO_js.colour(gearCount + i, palette),
4297
+ fill: chunkLXUMBK2O_js.colour(gearCount + i, palette),
4300
4298
  fontSize: 10,
4301
4299
  className: "pointer-events-none",
4302
- children: chunkYF6JD4DO_js.truncate(node.text, 30)
4300
+ children: chunkLXUMBK2O_js.truncate(node.text, 30)
4303
4301
  }
4304
4302
  )
4305
4303
  ] }, `${element.id}-gear-extra-${node.id}-${i}`);
@@ -4323,7 +4321,7 @@ function TimelineRenderer({
4323
4321
  const lineLen = lineEndX - lineStartX;
4324
4322
  const dotR = Math.max(4, Math.min(8, lineLen / (nodes.length * 4)));
4325
4323
  const labelOffset = Math.min(h * 0.28, 40);
4326
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
4324
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
4327
4325
  return /* @__PURE__ */ jsxRuntime.jsxs(
4328
4326
  "svg",
4329
4327
  {
@@ -4345,11 +4343,11 @@ function TimelineRenderer({
4345
4343
  const above = i % 2 === 0;
4346
4344
  const textY = above ? lineY - labelOffset : lineY + labelOffset;
4347
4345
  const stemEndY = above ? lineY - dotR - 2 : lineY + dotR + 2;
4348
- const fontSize = chunkYF6JD4DO_js.fitFontSize(node.text, lineLen / nodes.length * 0.9, labelOffset, 10);
4346
+ const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, lineLen / nodes.length * 0.9, labelOffset, 10);
4349
4347
  return /* @__PURE__ */ jsxRuntime.jsxs(
4350
4348
  "g",
4351
4349
  {
4352
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(node.id, shadow),
4350
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
4353
4351
  children: [
4354
4352
  /* @__PURE__ */ jsxRuntime.jsx(
4355
4353
  "line",
@@ -4358,7 +4356,7 @@ function TimelineRenderer({
4358
4356
  y1: stemEndY,
4359
4357
  x2: x,
4360
4358
  y2: textY + (above ? fontSize : -fontSize),
4361
- stroke: chunkYF6JD4DO_js.colour(i, palette),
4359
+ stroke: chunkLXUMBK2O_js.colour(i, palette),
4362
4360
  strokeWidth: 1,
4363
4361
  opacity: 0.5
4364
4362
  }
@@ -4369,17 +4367,17 @@ function TimelineRenderer({
4369
4367
  cx: x,
4370
4368
  cy: lineY,
4371
4369
  r: dotR,
4372
- fill: chunkYF6JD4DO_js.colour(i, palette),
4373
- opacity: chunkYF6JD4DO_js.nodeOpacity(i, nodes.length, style)
4370
+ fill: chunkLXUMBK2O_js.colour(i, palette),
4371
+ opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style)
4374
4372
  }
4375
4373
  ),
4376
4374
  /* @__PURE__ */ jsxRuntime.jsx(
4377
- chunkYF6JD4DO_js.SmartArtNodeText,
4375
+ chunkLXUMBK2O_js.SmartArtNodeText,
4378
4376
  {
4379
- text: chunkYF6JD4DO_js.truncate(node.text, 20) ?? "",
4377
+ text: chunkLXUMBK2O_js.truncate(node.text, 20) ?? "",
4380
4378
  x,
4381
4379
  y: textY,
4382
- fill: chunkYF6JD4DO_js.colour(i, palette),
4380
+ fill: chunkLXUMBK2O_js.colour(i, palette),
4383
4381
  fontSize,
4384
4382
  anchor: above ? "bottom" : "top",
4385
4383
  className: "pointer-events-none"
@@ -4412,8 +4410,8 @@ function BendingProcessRenderer({
4412
4410
  const boxH = Math.min(cellH * 0.6, 32);
4413
4411
  const rx = Math.min(5, boxH * 0.15);
4414
4412
  const arrowSize = 6;
4415
- const shadow = chunkYF6JD4DO_js.styleShadow(style);
4416
- const sw = chunkYF6JD4DO_js.styleStroke(style);
4413
+ const shadow = chunkLXUMBK2O_js.styleShadow(style);
4414
+ const sw = chunkLXUMBK2O_js.styleStroke(style);
4417
4415
  return /* @__PURE__ */ jsxRuntime.jsx(
4418
4416
  "svg",
4419
4417
  {
@@ -4427,7 +4425,7 @@ function BendingProcessRenderer({
4427
4425
  const col = row % 2 === 0 ? colInRow : COLS - 1 - colInRow;
4428
4426
  const nodeCx = padX + col * cellW + cellW / 2;
4429
4427
  const nodeCy = padY + row * cellH + cellH / 2;
4430
- const fontSize = chunkYF6JD4DO_js.fitFontSize(node.text, boxW * 0.85, boxH, 10);
4428
+ const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, boxW * 0.85, boxH, 10);
4431
4429
  let arrow = null;
4432
4430
  if (i < nodes.length - 1) {
4433
4431
  const nextRow = Math.floor((i + 1) / COLS);
@@ -4487,7 +4485,7 @@ function BendingProcessRenderer({
4487
4485
  return /* @__PURE__ */ jsxRuntime.jsxs(
4488
4486
  "g",
4489
4487
  {
4490
- ...chunkYF6JD4DO_js.smartArtNodeGroupProps(node.id, shadow),
4488
+ ...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
4491
4489
  children: [
4492
4490
  arrow,
4493
4491
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4498,18 +4496,18 @@ function BendingProcessRenderer({
4498
4496
  width: boxW,
4499
4497
  height: boxH,
4500
4498
  rx,
4501
- fill: chunkYF6JD4DO_js.colour(i, palette),
4502
- opacity: chunkYF6JD4DO_js.nodeOpacity(i, nodes.length, style),
4499
+ fill: chunkLXUMBK2O_js.colour(i, palette),
4500
+ opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style),
4503
4501
  stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
4504
4502
  strokeWidth: sw
4505
4503
  }
4506
4504
  ),
4507
4505
  /* @__PURE__ */ jsxRuntime.jsx(
4508
- chunkYF6JD4DO_js.SmartArtNodeText,
4506
+ chunkLXUMBK2O_js.SmartArtNodeText,
4509
4507
  {
4510
4508
  x: nodeCx,
4511
4509
  y: nodeCy,
4512
- text: chunkYF6JD4DO_js.truncate(node.text, 20),
4510
+ text: chunkLXUMBK2O_js.truncate(node.text, 20),
4513
4511
  fill: "white",
4514
4512
  fontSize,
4515
4513
  className: "pointer-events-none"
@@ -4550,21 +4548,21 @@ function SmartArtRendererImpl({
4550
4548
  }
4551
4549
  );
4552
4550
  }
4553
- const palette = chunkYF6JD4DO_js.resolvePalette(element);
4554
- const style = chunkYF6JD4DO_js.resolveStyle(element);
4555
- const a11y = chunkP3T4E6JQ_js.buildSmartArtA11y(smartArtData);
4551
+ const palette = chunkLXUMBK2O_js.resolvePalette(element);
4552
+ const style = chunkLXUMBK2O_js.resolveStyle(element);
4553
+ const a11y = chunkBXACB3BG_js.buildSmartArtA11y(smartArtData);
4556
4554
  const nodeLabels = new Map(a11y.nodes.map((n) => [n.id, n.label]));
4557
4555
  const editable = canEdit && Boolean(onUpdateElement);
4558
4556
  const handleCommitNodeText = (nodeId, text) => {
4559
- if (!onUpdateElement || !chunkP3T4E6JQ_js.shouldCommitSmartArtNodeText(smartArtData, nodeId, text)) {
4557
+ if (!onUpdateElement || !chunkBXACB3BG_js.shouldCommitSmartArtNodeText(smartArtData, nodeId, text)) {
4560
4558
  return;
4561
4559
  }
4562
4560
  const updated = chunkAD3EAEY6_js.updateSmartArtNodeText(smartArtData, nodeId, text);
4563
4561
  const box = { width: element.width, height: element.height };
4564
- const reflowed = chunkP3T4E6JQ_js.rebuildDrawingShapesIfCleared(
4562
+ const reflowed = chunkBXACB3BG_js.rebuildDrawingShapesIfCleared(
4565
4563
  updated,
4566
4564
  smartArtData.layout,
4567
- chunkYF6JD4DO_js.resolveSmartArtDataPalette(updated),
4565
+ chunkLXUMBK2O_js.resolveSmartArtDataPalette(updated),
4568
4566
  style,
4569
4567
  element.id,
4570
4568
  box
@@ -4578,10 +4576,10 @@ function SmartArtRendererImpl({
4578
4576
  const next = chunkAD3EAEY6_js.setSmartArtNodeStyle(smartArtData, nodeId, { fillColor: fill });
4579
4577
  if (next !== smartArtData) {
4580
4578
  const box = { width: element.width, height: element.height };
4581
- const reflowed = chunkP3T4E6JQ_js.rebuildDrawingShapesIfCleared(
4579
+ const reflowed = chunkBXACB3BG_js.rebuildDrawingShapesIfCleared(
4582
4580
  next,
4583
4581
  smartArtData.layout,
4584
- chunkYF6JD4DO_js.resolveSmartArtDataPalette(next),
4582
+ chunkLXUMBK2O_js.resolveSmartArtDataPalette(next),
4585
4583
  style,
4586
4584
  element.id,
4587
4585
  box
@@ -4604,7 +4602,7 @@ function SmartArtRendererImpl({
4604
4602
  );
4605
4603
  } else {
4606
4604
  const namedLayout = smartArtData.layout;
4607
- const layoutType = namedLayout ? chunkYF6JD4DO_js.layoutToCategory(namedLayout) : (smartArtData.resolvedLayoutType ?? smartArtData.layoutType ?? "list").toLowerCase();
4605
+ const layoutType = namedLayout ? chunkLXUMBK2O_js.layoutToCategory(namedLayout) : (smartArtData.resolvedLayoutType ?? smartArtData.layoutType ?? "list").toLowerCase();
4608
4606
  content = renderLayout(layoutType, element, nodes, palette, style, nodeLabels);
4609
4607
  }
4610
4608
  const body = editable ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -4618,7 +4616,7 @@ function SmartArtRendererImpl({
4618
4616
  children: content
4619
4617
  }
4620
4618
  ) : content;
4621
- return chunkYF6JD4DO_js.wrapChrome(chrome, body, className, { role: a11y.role, label: a11y.label });
4619
+ return chunkLXUMBK2O_js.wrapChrome(chrome, body, className, { role: a11y.role, label: a11y.label });
4622
4620
  }
4623
4621
  function renderLayout(layoutType, element, nodes, palette, style, nodeLabels) {
4624
4622
  if (layoutType.includes("hierarchy") || layoutType.includes("org")) {
@@ -4682,34 +4680,34 @@ function renderLayout(layoutType, element, nodes, palette, style, nodeLabels) {
4682
4680
  return /* @__PURE__ */ jsxRuntime.jsx(BendingProcessRenderer, { element, nodes, palette, style });
4683
4681
  }
4684
4682
  if (layoutType.includes("stepdown")) {
4685
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkYF6JD4DO_js.renderStepDownProcess(element, nodes, palette, style) });
4683
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderStepDownProcess(element, nodes, palette, style) });
4686
4684
  }
4687
4685
  if (layoutType.includes("alternatingflow") || layoutType.includes("alternating")) {
4688
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkYF6JD4DO_js.renderAlternatingFlow(element, nodes, palette, style) });
4686
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderAlternatingFlow(element, nodes, palette, style) });
4689
4687
  }
4690
4688
  if (layoutType.includes("descending")) {
4691
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkYF6JD4DO_js.renderDescendingProcess(element, nodes, palette, style) });
4689
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderDescendingProcess(element, nodes, palette, style) });
4692
4690
  }
4693
4691
  if (layoutType.includes("pictureaccent")) {
4694
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkYF6JD4DO_js.renderPictureAccentList(element, nodes, palette, style) });
4692
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderPictureAccentList(element, nodes, palette, style) });
4695
4693
  }
4696
4694
  if (layoutType.includes("verticalblock")) {
4697
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkYF6JD4DO_js.renderVerticalBlockList(element, nodes, palette, style) });
4695
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderVerticalBlockList(element, nodes, palette, style) });
4698
4696
  }
4699
4697
  if (layoutType.includes("grouped")) {
4700
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkYF6JD4DO_js.renderGroupedList(element, nodes, palette, style) });
4698
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderGroupedList(element, nodes, palette, style) });
4701
4699
  }
4702
4700
  if (layoutType.includes("pyramidlist")) {
4703
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkYF6JD4DO_js.renderPyramidList(element, nodes, palette, style) });
4701
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderPyramidList(element, nodes, palette, style) });
4704
4702
  }
4705
4703
  if (layoutType.includes("horizontalpicture")) {
4706
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkYF6JD4DO_js.renderHorizontalPictureList(element, nodes, palette, style) });
4704
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderHorizontalPictureList(element, nodes, palette, style) });
4707
4705
  }
4708
4706
  if (layoutType.includes("accentprocess")) {
4709
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkYF6JD4DO_js.renderAccentProcess(element, nodes, palette, style) });
4707
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderAccentProcess(element, nodes, palette, style) });
4710
4708
  }
4711
4709
  if (layoutType.includes("verticalchevron")) {
4712
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkYF6JD4DO_js.renderVerticalChevronList(element, nodes, palette, style) });
4710
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderVerticalChevronList(element, nodes, palette, style) });
4713
4711
  }
4714
4712
  return /* @__PURE__ */ jsxRuntime.jsx(
4715
4713
  ListRenderer,
@@ -4808,9 +4806,9 @@ function SmartArt3DRenderer({
4808
4806
  if (nodes.length === 0) {
4809
4807
  return null;
4810
4808
  }
4811
- const palette = chunkYF6JD4DO_js.resolvePalette(element);
4812
- const style = chunkYF6JD4DO_js.resolveStyle(element);
4813
- const layoutResult = chunkP3T4E6JQ_js.computeSmartArtLayout(
4809
+ const palette = chunkLXUMBK2O_js.resolvePalette(element);
4810
+ const style = chunkLXUMBK2O_js.resolveStyle(element);
4811
+ const layoutResult = chunkBXACB3BG_js.computeSmartArtLayout(
4814
4812
  nodes,
4815
4813
  { width: element.width, height: element.height },
4816
4814
  palette,
@@ -4819,7 +4817,7 @@ function SmartArt3DRenderer({
4819
4817
  resolvedLayoutType,
4820
4818
  layout
4821
4819
  );
4822
- return chunkP3T4E6JQ_js.buildSmartArt3DModel(layoutResult, {
4820
+ return chunkBXACB3BG_js.buildSmartArt3DModel(layoutResult, {
4823
4821
  background: chrome?.backgroundColor,
4824
4822
  spatial: true
4825
4823
  });
@@ -4846,7 +4844,7 @@ function SmartArt3DRenderer({
4846
4844
  return sceneNode;
4847
4845
  }
4848
4846
  const handleCommitNodeText = (nodeId, text) => {
4849
- if (!chunkP3T4E6JQ_js.shouldCommitSmartArtNodeText(smartArtData, nodeId, text)) {
4847
+ if (!chunkBXACB3BG_js.shouldCommitSmartArtNodeText(smartArtData, nodeId, text)) {
4850
4848
  return;
4851
4849
  }
4852
4850
  onUpdateElement({
@@ -4895,11 +4893,11 @@ function SmartArtElement({
4895
4893
  );
4896
4894
  }
4897
4895
  function groupIntoParagraphs2(element, fieldContext) {
4898
- return chunkP3T4E6JQ_js.groupIntoParagraphs(
4896
+ return chunkBXACB3BG_js.groupIntoParagraphs(
4899
4897
  element,
4900
4898
  fieldContext ? (seg) => {
4901
4899
  if (seg.fieldType) {
4902
- const substituted = chunkP3T4E6JQ_js.substituteFieldText(seg.text, seg.fieldType, fieldContext);
4900
+ const substituted = chunkBXACB3BG_js.substituteFieldText(seg.text, seg.fieldType, fieldContext);
4903
4901
  if (substituted !== seg.text) {
4904
4902
  return { ...seg, text: substituted };
4905
4903
  }
@@ -4929,13 +4927,13 @@ function getSegmentTspanProps(segment, element, fallbackColor) {
4929
4927
  if (s.strikethrough) {
4930
4928
  decos.push("line-through");
4931
4929
  }
4932
- const fill = s.hyperlink ? chunkP3T4E6JQ_js.normalizeHexColor(s.color || element.textStyle?.color, chunkYF6JD4DO_js.HYPERLINK_COLOR) : chunkP3T4E6JQ_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
4930
+ const fill = s.hyperlink ? chunkBXACB3BG_js.normalizeHexColor(s.color || element.textStyle?.color, chunkLXUMBK2O_js.HYPERLINK_COLOR) : chunkBXACB3BG_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
4933
4931
  return {
4934
4932
  fill,
4935
- fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunkYF6JD4DO_js.DEFAULT_TEXT_FONT_SIZE,
4933
+ fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunkLXUMBK2O_js.DEFAULT_TEXT_FONT_SIZE,
4936
4934
  fontWeight: s.bold ? 700 : 400,
4937
4935
  fontStyle: s.italic ? "italic" : void 0,
4938
- fontFamily: s.fontFamily || element.textStyle?.fontFamily ? chunkAD3EAEY6_js.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") : chunkYF6JD4DO_js.DEFAULT_FONT_FAMILY,
4936
+ fontFamily: s.fontFamily || element.textStyle?.fontFamily ? chunkAD3EAEY6_js.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") : chunkLXUMBK2O_js.DEFAULT_FONT_FAMILY,
4939
4937
  textDecoration: decos.length > 0 ? decos.join(" ") : void 0
4940
4938
  };
4941
4939
  }
@@ -4951,7 +4949,7 @@ function WarpedText({
4951
4949
  }
4952
4950
  const textEl = element;
4953
4951
  const preset = textEl.textStyle?.textWarpPreset;
4954
- if (!preset || !chunkP3T4E6JQ_js.shouldUseSvgWarp(preset)) {
4952
+ if (!preset || !chunkBXACB3BG_js.shouldUseSvgWarp(preset)) {
4955
4953
  return null;
4956
4954
  }
4957
4955
  const paragraphs = groupIntoParagraphs2(textEl, fieldContext);
@@ -4964,9 +4962,9 @@ function WarpedText({
4964
4962
  const warpAdj2 = textEl.textStyle?.textWarpAdj2;
4965
4963
  const align = textEl.textStyle?.align ?? "center";
4966
4964
  const { startOffset, textAnchor } = getAlignmentProps(align);
4967
- const baseFontSize = textEl.textStyle?.fontSize ?? chunkYF6JD4DO_js.DEFAULT_TEXT_FONT_SIZE;
4968
- const baseFontFamily = textEl.textStyle?.fontFamily ? chunkAD3EAEY6_js.getSubstituteFontFamily(textEl.textStyle.fontFamily) : chunkYF6JD4DO_js.DEFAULT_FONT_FAMILY;
4969
- const baseFill = chunkP3T4E6JQ_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
4965
+ const baseFontSize = textEl.textStyle?.fontSize ?? chunkLXUMBK2O_js.DEFAULT_TEXT_FONT_SIZE;
4966
+ const baseFontFamily = textEl.textStyle?.fontFamily ? chunkAD3EAEY6_js.getSubstituteFontFamily(textEl.textStyle.fontFamily) : chunkLXUMBK2O_js.DEFAULT_FONT_FAMILY;
4967
+ const baseFill = chunkBXACB3BG_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
4970
4968
  return /* @__PURE__ */ jsxRuntime.jsxs(
4971
4969
  "svg",
4972
4970
  {
@@ -4986,7 +4984,7 @@ function WarpedText({
4986
4984
  "path",
4987
4985
  {
4988
4986
  id: `${pathIdPrefix}-${i}`,
4989
- d: chunkP3T4E6JQ_js.getWarpPath(preset, width, height, i, lineCount, warpAdj, warpAdj2),
4987
+ d: chunkBXACB3BG_js.getWarpPath(preset, width, height, i, lineCount, warpAdj, warpAdj2),
4990
4988
  fill: "none"
4991
4989
  },
4992
4990
  `${pathIdPrefix}-def-${i}`
@@ -5023,7 +5021,7 @@ function WarpedText({
5023
5021
  );
5024
5022
  }
5025
5023
  var GLYPH_BY_SHAPE = Object.fromEntries(
5026
- chunkP3T4E6JQ_js.ACTION_BUTTON_PRESETS.map((p) => [p.shapeType, p.iconPath])
5024
+ chunkBXACB3BG_js.ACTION_BUTTON_PRESETS.map((p) => [p.shapeType, p.iconPath])
5027
5025
  );
5028
5026
  GLYPH_BY_SHAPE["actionButtonForwardOrNext"] = GLYPH_BY_SHAPE["actionButtonForwardNext"];
5029
5027
  GLYPH_BY_SHAPE["actionButtonBackOrPrevious"] = GLYPH_BY_SHAPE["actionButtonBackPrevious"];
@@ -5091,11 +5089,11 @@ function renderTextElementBody(options) {
5091
5089
  } = options;
5092
5090
  const isLinkedTextBox = chunkAD3EAEY6_js.hasTextProperties(el) && el.linkedTxbxId !== void 0;
5093
5091
  const linkedSegments = isLinkedTextBox && slideElements ? chunkAD3EAEY6_js.getLinkedTextBoxSegments(el, slideElements) : void 0;
5094
- const useSvgWarp = chunkP3T4E6JQ_js.shouldUseSvgWarp(
5092
+ const useSvgWarp = chunkBXACB3BG_js.shouldUseSvgWarp(
5095
5093
  chunkAD3EAEY6_js.hasTextProperties(el) ? el.textStyle?.textWarpPreset : void 0
5096
5094
  );
5097
- const scene3dStyle = chunkAD3EAEY6_js.hasTextProperties(el) ? chunkYF6JD4DO_js.buildTextBody3DSceneStyle(el.textStyle) : void 0;
5098
- const composedTransform = [chunkP3T4E6JQ_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
5095
+ const scene3dStyle = chunkAD3EAEY6_js.hasTextProperties(el) ? chunkLXUMBK2O_js.buildTextBody3DSceneStyle(el.textStyle) : void 0;
5096
+ const composedTransform = [chunkBXACB3BG_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
5099
5097
  const transformStyle = {
5100
5098
  transform: composedTransform,
5101
5099
  transformOrigin: "center",
@@ -5111,18 +5109,18 @@ function renderTextElementBody(options) {
5111
5109
  shouldRenderText && (useSvgWarp ? /* @__PURE__ */ jsxRuntime.jsx(
5112
5110
  "div",
5113
5111
  {
5114
- className: chunkYF6JD4DO_js.cn(
5112
+ className: chunkLXUMBK2O_js.cn(
5115
5113
  "relative z-10 w-full h-full",
5116
5114
  onHyperlinkClick ? "" : "pointer-events-none"
5117
5115
  ),
5118
- style: { ...chunkYF6JD4DO_js.getTextLayoutStyle(el), ...transformStyle },
5116
+ style: { ...chunkLXUMBK2O_js.getTextLayoutStyle(el), ...transformStyle },
5119
5117
  children: /* @__PURE__ */ jsxRuntime.jsx(
5120
5118
  WarpedText,
5121
5119
  {
5122
5120
  element: el,
5123
5121
  width: el.width,
5124
5122
  height: el.height,
5125
- fallbackColor: chunkYF6JD4DO_js.DEFAULT_TEXT_COLOR,
5123
+ fallbackColor: chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR,
5126
5124
  findHighlights: findHl,
5127
5125
  fieldContext
5128
5126
  }
@@ -5131,19 +5129,19 @@ function renderTextElementBody(options) {
5131
5129
  ) : /* @__PURE__ */ jsxRuntime.jsx(
5132
5130
  "div",
5133
5131
  {
5134
- className: chunkYF6JD4DO_js.cn(
5132
+ className: chunkLXUMBK2O_js.cn(
5135
5133
  "relative z-10 w-full h-full whitespace-pre-wrap break-words leading-[1.3]",
5136
5134
  onHyperlinkClick ? "" : "pointer-events-none"
5137
5135
  ),
5138
5136
  style: {
5139
- ...chunkYF6JD4DO_js.getTextLayoutStyle(el),
5137
+ ...chunkLXUMBK2O_js.getTextLayoutStyle(el),
5140
5138
  ...txtS,
5141
- ...chunkYF6JD4DO_js.getTextWarpStyle(txtSE),
5139
+ ...chunkLXUMBK2O_js.getTextWarpStyle(txtSE),
5142
5140
  ...transformStyle
5143
5141
  },
5144
- children: chunkYF6JD4DO_js.renderTextSegments(
5142
+ children: chunkLXUMBK2O_js.renderTextSegments(
5145
5143
  el,
5146
- chunkYF6JD4DO_js.DEFAULT_TEXT_COLOR,
5144
+ chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR,
5147
5145
  void 0,
5148
5146
  findHl,
5149
5147
  onHyperlinkClick,
@@ -5164,7 +5162,7 @@ function ZoomElementRenderer({
5164
5162
  sourceSlideIndex
5165
5163
  }) {
5166
5164
  const { t } = reactI18next.useTranslation();
5167
- const summaryView = chunkP3T4E6JQ_js.buildSummaryZoomView(element, (index) => {
5165
+ const summaryView = chunkBXACB3BG_js.buildSummaryZoomView(element, (index) => {
5168
5166
  const slide = slides?.[index];
5169
5167
  return slide ? {
5170
5168
  slideNumber: slide.slideNumber,
@@ -5443,7 +5441,7 @@ function renderBody(options) {
5443
5441
  textDirection: txtSE?.textDirection,
5444
5442
  textStyle: txtS,
5445
5443
  textStyleRaw: txtSE,
5446
- layoutStyle: chunkYF6JD4DO_js.getTextLayoutStyle(el),
5444
+ layoutStyle: chunkLXUMBK2O_js.getTextLayoutStyle(el),
5447
5445
  element: el,
5448
5446
  onCommit,
5449
5447
  onCancel,
@@ -5454,7 +5452,7 @@ function renderBody(options) {
5454
5452
  ] });
5455
5453
  }
5456
5454
  if (el.type === "table") {
5457
- return chunkYF6JD4DO_js.renderTableElement(el, txtS, {
5455
+ return chunkLXUMBK2O_js.renderTableElement(el, txtS, {
5458
5456
  editable: isSel,
5459
5457
  selectedCell: isSel ? tableSt : null,
5460
5458
  onSelectCell: onCellSel,
@@ -5485,7 +5483,7 @@ function renderBody(options) {
5485
5483
  );
5486
5484
  }
5487
5485
  if (el.type === "media") {
5488
- return chunkYF6JD4DO_js.renderMediaElement(el, media, {
5486
+ return chunkLXUMBK2O_js.renderMediaElement(el, media, {
5489
5487
  autoPlay: isPresentationPassive,
5490
5488
  fullScreen: isPresentationPassive && Boolean(el.fullScreen),
5491
5489
  isPresentationMode: isPresentationPassive,
@@ -5510,8 +5508,8 @@ function renderBody(options) {
5510
5508
  }
5511
5509
  return renderGroup(el.children);
5512
5510
  }
5513
- if (chunkYF6JD4DO_js.shouldRenderFallbackLabel(el, isTxtEl)) {
5514
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkP3T4E6JQ_js.getElementLabel(el) });
5511
+ if (chunkLXUMBK2O_js.shouldRenderFallbackLabel(el, isTxtEl)) {
5512
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkBXACB3BG_js.getElementLabel(el) });
5515
5513
  }
5516
5514
  return renderTextElementBody(options);
5517
5515
  }
@@ -5528,14 +5526,14 @@ function StaticElementRenderer({
5528
5526
  positioned = true
5529
5527
  }) {
5530
5528
  const style = chunkAD3EAEY6_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
5531
- const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkP3T4E6JQ_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
5532
- const fill = chunkP3T4E6JQ_js.normalizeHexColor(style?.fillColor, chunkYF6JD4DO_js.DEFAULT_FILL_COLOR);
5529
+ const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkBXACB3BG_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
5530
+ const fill = chunkBXACB3BG_js.normalizeHexColor(style?.fillColor, chunkLXUMBK2O_js.DEFAULT_FILL_COLOR);
5533
5531
  const strokeWidth = Math.max(0, style?.strokeWidth || 0);
5534
- const stroke = chunkP3T4E6JQ_js.normalizeHexColor(style?.strokeColor, chunkYF6JD4DO_js.DEFAULT_STROKE_COLOR);
5535
- const visualStyle = chunkYF6JD4DO_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
5536
- const textStyle = chunkYF6JD4DO_js.getTextStyleForElement(
5532
+ const stroke = chunkBXACB3BG_js.normalizeHexColor(style?.strokeColor, chunkLXUMBK2O_js.DEFAULT_STROKE_COLOR);
5533
+ const visualStyle = chunkLXUMBK2O_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
5534
+ const textStyle = chunkLXUMBK2O_js.getTextStyleForElement(
5537
5535
  element,
5538
- element.type === "shape" && hasFill ? "#ffffff" : chunkYF6JD4DO_js.DEFAULT_TEXT_COLOR
5536
+ element.type === "shape" && hasFill ? "#ffffff" : chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR
5539
5537
  );
5540
5538
  const isImage = element.type === "picture" || element.type === "image";
5541
5539
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -5548,7 +5546,7 @@ function StaticElementRenderer({
5548
5546
  top: positioned ? element.y : void 0,
5549
5547
  width: positioned ? Math.max(element.width, 1) : "100%",
5550
5548
  height: positioned ? Math.max(element.height, 1) : "100%",
5551
- transform: positioned ? chunkP3T4E6JQ_js.getElementTransform(element) : void 0,
5549
+ transform: positioned ? chunkBXACB3BG_js.getElementTransform(element) : void 0,
5552
5550
  transformOrigin: "center",
5553
5551
  zIndex,
5554
5552
  ...visualStyle
@@ -5572,12 +5570,12 @@ function StaticElementRenderer({
5572
5570
  spellCheck: false,
5573
5571
  txtSE: chunkAD3EAEY6_js.hasTextProperties(element) ? element.textStyle : void 0,
5574
5572
  txtS: textStyle,
5575
- vecShape: chunkYF6JD4DO_js.renderVectorShape(element, hasFill, fill, strokeWidth, stroke),
5576
- imgStyle: chunkYF6JD4DO_js.getImageRenderStyle(element),
5577
- imgFilter: chunkP3T4E6JQ_js.getImageEffectsFilter(element),
5578
- imgOpacity: chunkP3T4E6JQ_js.getImageEffectsOpacity(element),
5573
+ vecShape: chunkLXUMBK2O_js.renderVectorShape(element, hasFill, fill, strokeWidth, stroke),
5574
+ imgStyle: chunkLXUMBK2O_js.getImageRenderStyle(element),
5575
+ imgFilter: chunkBXACB3BG_js.getImageEffectsFilter(element),
5576
+ imgOpacity: chunkBXACB3BG_js.getImageEffectsOpacity(element),
5579
5577
  imgAlt: "",
5580
- isTxtEl: chunkP3T4E6JQ_js.isEditableTextElement(element),
5578
+ isTxtEl: chunkBXACB3BG_js.isEditableTextElement(element),
5581
5579
  media: mediaDataUrls,
5582
5580
  tableSt: null,
5583
5581
  isSel: false,
@@ -5603,12 +5601,12 @@ function SlideThumbnailImpl({
5603
5601
  }) {
5604
5602
  const safeCanvasWidth = Math.max(canvasSize.width, 1);
5605
5603
  const safeCanvasHeight = Math.max(canvasSize.height, 1);
5606
- const scale = chunkYF6JD4DO_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
5604
+ const scale = chunkLXUMBK2O_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
5607
5605
  const previewHeight = Math.max(56, Math.round(safeCanvasHeight * scale));
5608
5606
  const previewElements = [...templateElements, ...slide.elements].slice(0, 60);
5609
5607
  const { t } = reactI18next.useTranslation();
5610
5608
  const transitionLabel = slide.transition ? (() => {
5611
- const opt = chunkYF6JD4DO_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
5609
+ const opt = chunkLXUMBK2O_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
5612
5610
  return opt ? t(opt.i18nKey) : slide.transition.type;
5613
5611
  })() : void 0;
5614
5612
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -6301,7 +6299,7 @@ function SectionHeader({
6301
6299
  /* @__PURE__ */ jsxRuntime.jsx(
6302
6300
  lu.LuChevronDown,
6303
6301
  {
6304
- className: chunkYF6JD4DO_js.cn(
6302
+ className: chunkLXUMBK2O_js.cn(
6305
6303
  "h-3 w-3 flex-shrink-0 transition-transform",
6306
6304
  isCollapsed ? "-rotate-90" : "rotate-0"
6307
6305
  )
@@ -6403,7 +6401,7 @@ function LazyThumbnailInner({
6403
6401
  className: "relative w-full overflow-hidden rounded border border-border bg-muted/30 animate-pulse",
6404
6402
  style: {
6405
6403
  height: previewHeight,
6406
- minWidth: chunkYF6JD4DO_js.SLIDE_NAV_THUMBNAIL_WIDTH
6404
+ minWidth: chunkLXUMBK2O_js.SLIDE_NAV_THUMBNAIL_WIDTH
6407
6405
  }
6408
6406
  }
6409
6407
  ) });
@@ -6440,7 +6438,7 @@ function buildFlatPaneItems(sectionGroups, showSectionHeaders, collapsedSections
6440
6438
  function estimateSlideItemHeight(canvasWidth, canvasHeight) {
6441
6439
  const safeW = Math.max(canvasWidth, 1);
6442
6440
  const safeH = Math.max(canvasHeight, 1);
6443
- const scale = chunkYF6JD4DO_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeW;
6441
+ const scale = chunkLXUMBK2O_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeW;
6444
6442
  const previewHeight = Math.max(56, Math.round(safeH * scale));
6445
6443
  return previewHeight + 30;
6446
6444
  }
@@ -6477,7 +6475,7 @@ function SlideItemInner({
6477
6475
  );
6478
6476
  const safeCanvasWidth = Math.max(canvasSize.width, 1);
6479
6477
  const safeCanvasHeight = Math.max(canvasSize.height, 1);
6480
- const scale = chunkYF6JD4DO_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
6478
+ const scale = chunkLXUMBK2O_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
6481
6479
  const previewHeight = Math.max(56, Math.round(safeCanvasHeight * scale));
6482
6480
  return /* @__PURE__ */ jsxRuntime.jsxs(
6483
6481
  "button",
@@ -6486,7 +6484,7 @@ function SlideItemInner({
6486
6484
  ref: slideRef,
6487
6485
  "aria-label": `Go to slide ${slideIndex + 1}`,
6488
6486
  "aria-current": isActive ? "true" : void 0,
6489
- className: chunkYF6JD4DO_js.cn(
6487
+ className: chunkLXUMBK2O_js.cn(
6490
6488
  "group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
6491
6489
  isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
6492
6490
  isHidden && "opacity-50"
@@ -6502,7 +6500,7 @@ function SlideItemInner({
6502
6500
  /* @__PURE__ */ jsxRuntime.jsx(
6503
6501
  "span",
6504
6502
  {
6505
- className: chunkYF6JD4DO_js.cn(
6503
+ className: chunkLXUMBK2O_js.cn(
6506
6504
  "text-[10px] tabular-nums text-right select-none w-full",
6507
6505
  isActive ? "text-primary font-medium" : "text-muted-foreground"
6508
6506
  ),
@@ -6522,7 +6520,7 @@ function SlideItemInner({
6522
6520
  /* @__PURE__ */ jsxRuntime.jsxs(
6523
6521
  "div",
6524
6522
  {
6525
- className: chunkYF6JD4DO_js.cn(
6523
+ className: chunkLXUMBK2O_js.cn(
6526
6524
  "relative flex-1 overflow-hidden border transition-colors bg-white",
6527
6525
  isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
6528
6526
  ),
@@ -6655,7 +6653,7 @@ function useSlidePaneCallbacks(onMoveSlide, onRenameSection) {
6655
6653
  };
6656
6654
  }
6657
6655
  var EMPTY_TEMPLATE_ELEMENTS = [];
6658
- var VIRTUALIZATION_THRESHOLD = chunkP3T4E6JQ_js.SLIDE_VIRTUALIZATION_THRESHOLD;
6656
+ var VIRTUALIZATION_THRESHOLD = chunkBXACB3BG_js.SLIDE_VIRTUALIZATION_THRESHOLD;
6659
6657
  function SlidesPaneSidebar({
6660
6658
  slides,
6661
6659
  templateElementsBySlideId,
@@ -6727,7 +6725,7 @@ function SlidesPaneSidebar({
6727
6725
  [sectionGroups, showSectionHeaders, collapsedSections]
6728
6726
  );
6729
6727
  const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
6730
- const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkYF6JD4DO_js.useVirtualizedSlides({
6728
+ const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkLXUMBK2O_js.useVirtualizedSlides({
6731
6729
  totalItems: shouldVirtualize ? flatItems.length : 0,
6732
6730
  itemHeight: estimatedItemHeight
6733
6731
  });
@@ -6957,7 +6955,7 @@ function HandoutMasterPanel({
6957
6955
  {
6958
6956
  type: "button",
6959
6957
  "aria-pressed": slidesPerPage === count,
6960
- className: chunkYF6JD4DO_js.cn(
6958
+ className: chunkLXUMBK2O_js.cn(
6961
6959
  "px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
6962
6960
  slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
6963
6961
  ),
@@ -7085,7 +7083,7 @@ function SlideMastersList({
7085
7083
  "div",
7086
7084
  {
7087
7085
  ref: isMasterActive ? activeRef : void 0,
7088
- className: chunkYF6JD4DO_js.cn(
7086
+ className: chunkLXUMBK2O_js.cn(
7089
7087
  "group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
7090
7088
  isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
7091
7089
  ),
@@ -7102,7 +7100,7 @@ function SlideMastersList({
7102
7100
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
7103
7101
  "span",
7104
7102
  {
7105
- className: chunkYF6JD4DO_js.cn(
7103
+ className: chunkLXUMBK2O_js.cn(
7106
7104
  "text-[10px] font-medium",
7107
7105
  isMasterActive ? "text-amber-400" : "text-muted-foreground"
7108
7106
  ),
@@ -7118,7 +7116,7 @@ function SlideMastersList({
7118
7116
  "div",
7119
7117
  {
7120
7118
  ref: isLayoutActive ? activeRef : void 0,
7121
- className: chunkYF6JD4DO_js.cn(
7119
+ className: chunkLXUMBK2O_js.cn(
7122
7120
  "group relative cursor-pointer rounded-md border-2 p-0.5 transition-all",
7123
7121
  isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
7124
7122
  ),
@@ -7135,7 +7133,7 @@ function SlideMastersList({
7135
7133
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
7136
7134
  "span",
7137
7135
  {
7138
- className: chunkYF6JD4DO_js.cn(
7136
+ className: chunkLXUMBK2O_js.cn(
7139
7137
  "text-[9px]",
7140
7138
  isLayoutActive ? "text-primary" : "text-muted-foreground"
7141
7139
  ),
@@ -7219,7 +7217,7 @@ function MasterViewSidebar({
7219
7217
  type: "button",
7220
7218
  role: "tab",
7221
7219
  "aria-selected": masterViewTab === tab.key,
7222
- className: chunkYF6JD4DO_js.cn(
7220
+ className: chunkLXUMBK2O_js.cn(
7223
7221
  "flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
7224
7222
  masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
7225
7223
  ),
@@ -7691,7 +7689,7 @@ function SectionBlock({
7691
7689
  /* @__PURE__ */ jsxRuntime.jsx(
7692
7690
  lu.LuChevronDown,
7693
7691
  {
7694
- className: chunkYF6JD4DO_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
7692
+ className: chunkLXUMBK2O_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
7695
7693
  }
7696
7694
  ),
7697
7695
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
@@ -7738,7 +7736,7 @@ function SlideCardImpl({
7738
7736
  return /* @__PURE__ */ jsxRuntime.jsxs(
7739
7737
  "div",
7740
7738
  {
7741
- className: chunkYF6JD4DO_js.cn(
7739
+ className: chunkLXUMBK2O_js.cn(
7742
7740
  "group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
7743
7741
  isDragTarget ? "border-primary bg-primary/20" : isSelected ? "border-primary bg-primary/10 ring-1 ring-primary/50" : isActive ? "border-primary/50 bg-primary/5" : "border-border bg-background/50 hover:border-border",
7744
7742
  slide.hidden && "opacity-40"
@@ -7757,7 +7755,7 @@ function SlideCardImpl({
7757
7755
  /* @__PURE__ */ jsxRuntime.jsx(
7758
7756
  "span",
7759
7757
  {
7760
- className: chunkYF6JD4DO_js.cn(
7758
+ className: chunkLXUMBK2O_js.cn(
7761
7759
  "text-[11px] font-medium",
7762
7760
  isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
7763
7761
  ),
@@ -8758,7 +8756,7 @@ function segmentsToEditorHtml(segments) {
8758
8756
  inlineStyles.push(`font-family:${segment.style.fontFamily}`);
8759
8757
  }
8760
8758
  const text = escapeHtml(segment.text);
8761
- if (segment.style.hyperlink && chunkP3T4E6JQ_js.isUrlSafe(segment.style.hyperlink)) {
8759
+ if (segment.style.hyperlink && chunkBXACB3BG_js.isUrlSafe(segment.style.hyperlink)) {
8762
8760
  const href = escapeHtml(segment.style.hyperlink);
8763
8761
  return `<a href="${href}" style="color:#4a9eff;text-decoration:underline;cursor:pointer" data-hyperlink="${href}">${text}</a>`;
8764
8762
  }
@@ -8841,7 +8839,7 @@ function renderRichNotesSegments(segments) {
8841
8839
  if (segment.style.fontFamily) {
8842
8840
  style.fontFamily = segment.style.fontFamily;
8843
8841
  }
8844
- if (segment.style.hyperlink && chunkP3T4E6JQ_js.isUrlSafe(segment.style.hyperlink)) {
8842
+ if (segment.style.hyperlink && chunkBXACB3BG_js.isUrlSafe(segment.style.hyperlink)) {
8845
8843
  const safeHref = segment.style.hyperlink;
8846
8844
  style.color = "#4a9eff";
8847
8845
  style.textDecoration = "underline";
@@ -8854,7 +8852,7 @@ function renderRichNotesSegments(segments) {
8854
8852
  style,
8855
8853
  onClick: (e) => {
8856
8854
  e.preventDefault();
8857
- chunkP3T4E6JQ_js.safeOpenUrl(safeHref);
8855
+ chunkBXACB3BG_js.safeOpenUrl(safeHref);
8858
8856
  },
8859
8857
  children: segment.text
8860
8858
  },
@@ -9418,7 +9416,7 @@ function useSlideNotes({
9418
9416
  const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
9419
9417
  if (href && (e.ctrlKey || e.metaKey)) {
9420
9418
  e.preventDefault();
9421
- chunkP3T4E6JQ_js.safeOpenUrl(href);
9419
+ chunkBXACB3BG_js.safeOpenUrl(href);
9422
9420
  }
9423
9421
  }, []);
9424
9422
  return {
@@ -9492,7 +9490,7 @@ var SlideNotesPanel = ({
9492
9490
  });
9493
9491
  const hasNotes = draft.trim().length > 0;
9494
9492
  const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
9495
- const { dragY, handlers: dragHandlers } = chunkYF6JD4DO_js.useSheetDismissDrag(onToggle);
9493
+ const { dragY, handlers: dragHandlers } = chunkLXUMBK2O_js.useSheetDismissDrag(onToggle);
9496
9494
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9497
9495
  isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
9498
9496
  "button",
@@ -9506,7 +9504,7 @@ var SlideNotesPanel = ({
9506
9504
  /* @__PURE__ */ jsxRuntime.jsxs(
9507
9505
  "div",
9508
9506
  {
9509
- className: chunkYF6JD4DO_js.cn(
9507
+ className: chunkLXUMBK2O_js.cn(
9510
9508
  "flex flex-col border-t border-border/60 bg-background select-none",
9511
9509
  // On mobile, hide the entire notes strip when collapsed: the
9512
9510
  // MobileBottomBar's Notes button is the entry point instead.
@@ -9763,8 +9761,8 @@ function VersionHistoryPanel({
9763
9761
  className: "px-3 py-2.5 border-b border-border hover:bg-muted/50 group",
9764
9762
  children: [
9765
9763
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
9766
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-foreground", children: chunkP3T4E6JQ_js.formatVersionTimestamp(version.timestamp) }),
9767
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] text-muted-foreground", children: chunkP3T4E6JQ_js.formatRelativeTime(version.timestamp) })
9764
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-foreground", children: chunkBXACB3BG_js.formatVersionTimestamp(version.timestamp) }),
9765
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] text-muted-foreground", children: chunkBXACB3BG_js.formatRelativeTime(version.timestamp) })
9768
9766
  ] }),
9769
9767
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] text-muted-foreground mt-0.5", children: formatFileSize(version.size) }),
9770
9768
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 mt-1.5 opacity-0 group-hover:opacity-100 transition-opacity", children: [
@@ -9857,7 +9855,7 @@ function SlideDiffRow({
9857
9855
  return /* @__PURE__ */ jsxRuntime.jsxs(
9858
9856
  "div",
9859
9857
  {
9860
- className: chunkYF6JD4DO_js.cn(
9858
+ className: chunkLXUMBK2O_js.cn(
9861
9859
  "rounded-lg border transition-colors",
9862
9860
  isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
9863
9861
  ),
@@ -9871,7 +9869,7 @@ function SlideDiffRow({
9871
9869
  children: [
9872
9870
  expanded ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuChevronDown, { className: "w-3.5 h-3.5 text-muted-foreground flex-shrink-0" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuChevronRight, { className: "w-3.5 h-3.5 text-muted-foreground flex-shrink-0" }),
9873
9871
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
9874
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkYF6JD4DO_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
9872
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkLXUMBK2O_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
9875
9873
  diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
9876
9874
  diff.changes.length,
9877
9875
  " ",
@@ -9881,7 +9879,7 @@ function SlideDiffRow({
9881
9879
  isResolved && /* @__PURE__ */ jsxRuntime.jsx(
9882
9880
  "span",
9883
9881
  {
9884
- className: chunkYF6JD4DO_js.cn(
9882
+ className: chunkLXUMBK2O_js.cn(
9885
9883
  "text-[10px] font-medium",
9886
9884
  accepted ? "text-green-400" : "text-muted-foreground"
9887
9885
  ),
@@ -9909,7 +9907,7 @@ function SlideDiffRow({
9909
9907
  /* @__PURE__ */ jsxRuntime.jsx(
9910
9908
  "div",
9911
9909
  {
9912
- className: chunkYF6JD4DO_js.cn(
9910
+ className: chunkLXUMBK2O_js.cn(
9913
9911
  "rounded border overflow-hidden",
9914
9912
  diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
9915
9913
  ),
@@ -10075,7 +10073,7 @@ function useModalFocus(open, panelRef, onClose, initialFocusRef) {
10075
10073
  if (!open || !panel) {
10076
10074
  return;
10077
10075
  }
10078
- return chunkP3T4E6JQ_js.activateModalFocus(panel, {
10076
+ return chunkBXACB3BG_js.activateModalFocus(panel, {
10079
10077
  initialFocus: initialFocusRef?.current,
10080
10078
  onEscape: onClose
10081
10079
  });
@@ -10630,7 +10628,7 @@ function DocumentPropertiesDialog({
10630
10628
  const handleClose = React14.useCallback(() => {
10631
10629
  onClose();
10632
10630
  }, [onClose]);
10633
- const { panelStyle, handlers: dragHandlers } = chunkYF6JD4DO_js.useModalDismissDrag(handleClose);
10631
+ const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(handleClose);
10634
10632
  if (!isOpen) {
10635
10633
  return null;
10636
10634
  }
@@ -10778,7 +10776,7 @@ function FontEmbeddingPanel({
10778
10776
  const scanFonts = React14.useCallback(async () => {
10779
10777
  setScanning(true);
10780
10778
  try {
10781
- setAvailableFamilies(await chunkP3T4E6JQ_js.scanAvailableFontFamilies(usedFontFamilies));
10779
+ setAvailableFamilies(await chunkBXACB3BG_js.scanAvailableFontFamilies(usedFontFamilies));
10782
10780
  setScanned(true);
10783
10781
  } catch {
10784
10782
  } finally {
@@ -11161,7 +11159,7 @@ function PresentationAudienceEffects({ snapshot }) {
11161
11159
  children: strokes.map((stroke) => /* @__PURE__ */ jsxRuntime.jsx(
11162
11160
  "path",
11163
11161
  {
11164
- d: chunkP3T4E6JQ_js.presentationInkPath(stroke.points),
11162
+ d: chunkBXACB3BG_js.presentationInkPath(stroke.points),
11165
11163
  fill: "none",
11166
11164
  stroke: stroke.color,
11167
11165
  strokeWidth: stroke.width / 10,
@@ -11262,7 +11260,7 @@ function PresentationSubtitleBar({
11262
11260
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-14 left-1/2 -translate-x-1/2 z-[70] max-w-[80%] min-w-[300px]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-6 py-3 rounded-lg bg-black/75 backdrop-blur-sm border border-white/10", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-center text-[15px] text-white/70 italic", children: renderedText }) }) });
11263
11261
  }
11264
11262
  function renderNotesSegments(segments) {
11265
- return chunkP3T4E6JQ_js.notesSegmentsToSpans(segments).map((span) => {
11263
+ return chunkBXACB3BG_js.notesSegmentsToSpans(segments).map((span) => {
11266
11264
  if (span.kind === "break") {
11267
11265
  return React14__default.default.createElement("br", { key: span.key });
11268
11266
  }
@@ -11400,7 +11398,7 @@ function ScaledSlidePreviewImpl({
11400
11398
  {
11401
11399
  className: "absolute inset-0",
11402
11400
  style: {
11403
- backgroundColor: chunkP3T4E6JQ_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
11401
+ backgroundColor: chunkBXACB3BG_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
11404
11402
  }
11405
11403
  }
11406
11404
  ),
@@ -11490,7 +11488,7 @@ function PresenterNotesRail({
11490
11488
  const notesText = slide?.notes ?? "";
11491
11489
  const notesSegments = slide?.notesSegments;
11492
11490
  const [notesDraft, setNotesDraft] = React14.useState(notesText);
11493
- const [fontSize, setFontSize] = React14.useState(chunkP3T4E6JQ_js.NOTES_FONT_SIZE_DEFAULT);
11491
+ const [fontSize, setFontSize] = React14.useState(chunkBXACB3BG_js.NOTES_FONT_SIZE_DEFAULT);
11494
11492
  React14.useEffect(() => setNotesDraft(notesText), [current, notesText]);
11495
11493
  const notes = React14.useMemo(
11496
11494
  () => notesSegments?.length ? renderNotesSegments(notesSegments) : notesText.trim() ? notesText : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "italic text-muted-foreground", children: t("pptx.presenter.noNotes") }),
@@ -11500,11 +11498,11 @@ function PresenterNotesRail({
11500
11498
  /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "flex items-center justify-between border-b border-border/60 px-4 py-3", children: [
11501
11499
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
11502
11500
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] uppercase tracking-wider text-muted-foreground", children: t("pptx.presenter.currentTime") }),
11503
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-mono text-lg tabular-nums", children: chunkP3T4E6JQ_js.formatTime(new Date(now)) })
11501
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-mono text-lg tabular-nums", children: chunkBXACB3BG_js.formatTime(new Date(now)) })
11504
11502
  ] }),
11505
11503
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-right", children: [
11506
11504
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] uppercase tracking-wider text-muted-foreground", children: t("pptx.presenter.elapsed") }),
11507
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-mono text-lg tabular-nums text-primary", children: chunkP3T4E6JQ_js.formatElapsed(elapsed) })
11505
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-mono text-lg tabular-nums text-primary", children: chunkBXACB3BG_js.formatElapsed(elapsed) })
11508
11506
  ] })
11509
11507
  ] }),
11510
11508
  /* @__PURE__ */ jsxRuntime.jsxs("nav", { className: "flex items-center justify-between border-b border-border/60 px-4 py-2", children: [
@@ -11561,8 +11559,8 @@ function PresenterNotesRail({
11561
11559
  "button",
11562
11560
  {
11563
11561
  type: "button",
11564
- onClick: () => setFontSize(chunkP3T4E6JQ_js.clampNotesFontSize(fontSize - chunkP3T4E6JQ_js.NOTES_FONT_SIZE_STEP)),
11565
- disabled: fontSize <= chunkP3T4E6JQ_js.NOTES_FONT_SIZE_MIN,
11562
+ onClick: () => setFontSize(chunkBXACB3BG_js.clampNotesFontSize(fontSize - chunkBXACB3BG_js.NOTES_FONT_SIZE_STEP)),
11563
+ disabled: fontSize <= chunkBXACB3BG_js.NOTES_FONT_SIZE_MIN,
11566
11564
  "aria-label": t("pptx.presenter.decreaseFontSize"),
11567
11565
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuMinus, {})
11568
11566
  }
@@ -11575,8 +11573,8 @@ function PresenterNotesRail({
11575
11573
  "button",
11576
11574
  {
11577
11575
  type: "button",
11578
- onClick: () => setFontSize(chunkP3T4E6JQ_js.clampNotesFontSize(fontSize + chunkP3T4E6JQ_js.NOTES_FONT_SIZE_STEP)),
11579
- disabled: fontSize >= chunkP3T4E6JQ_js.NOTES_FONT_SIZE_MAX,
11576
+ onClick: () => setFontSize(chunkBXACB3BG_js.clampNotesFontSize(fontSize + chunkBXACB3BG_js.NOTES_FONT_SIZE_STEP)),
11577
+ disabled: fontSize >= chunkBXACB3BG_js.NOTES_FONT_SIZE_MAX,
11580
11578
  "aria-label": t("pptx.presenter.increaseFontSize"),
11581
11579
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPlus, {})
11582
11580
  }
@@ -11662,7 +11660,7 @@ function usePresenterInk(snapshot, onUpdate) {
11662
11660
  const nextPoint = point(event);
11663
11661
  if (pointer.tool === "eraser") {
11664
11662
  onUpdate({
11665
- inkStrokes: chunkP3T4E6JQ_js.erasePresentationInkAt(
11663
+ inkStrokes: chunkBXACB3BG_js.erasePresentationInkAt(
11666
11664
  snapshot.inkStrokes ?? [],
11667
11665
  snapshot.slideIndex,
11668
11666
  nextPoint
@@ -11692,11 +11690,11 @@ function usePresenterInk(snapshot, onUpdate) {
11692
11690
  return;
11693
11691
  }
11694
11692
  if (pointer.tool === "laser") {
11695
- onUpdate({ pointer: chunkP3T4E6JQ_js.movePresenterPointer(pointer, nextPoint.x, nextPoint.y) });
11693
+ onUpdate({ pointer: chunkBXACB3BG_js.movePresenterPointer(pointer, nextPoint.x, nextPoint.y) });
11696
11694
  }
11697
11695
  if (pointer.tool === "eraser" && event.buttons === 1) {
11698
11696
  onUpdate({
11699
- inkStrokes: chunkP3T4E6JQ_js.erasePresentationInkAt(
11697
+ inkStrokes: chunkBXACB3BG_js.erasePresentationInkAt(
11700
11698
  snapshot.inkStrokes ?? [],
11701
11699
  snapshot.slideIndex,
11702
11700
  nextPoint
@@ -11706,7 +11704,7 @@ function usePresenterInk(snapshot, onUpdate) {
11706
11704
  if (drawingId.current && event.buttons === 1) {
11707
11705
  onUpdate({
11708
11706
  inkStrokes: (snapshot.inkStrokes ?? []).map(
11709
- (stroke) => stroke.id === drawingId.current ? chunkP3T4E6JQ_js.appendPresentationInkPoint(stroke, nextPoint) : stroke
11707
+ (stroke) => stroke.id === drawingId.current ? chunkBXACB3BG_js.appendPresentationInkPoint(stroke, nextPoint) : stroke
11710
11708
  )
11711
11709
  });
11712
11710
  }
@@ -11857,7 +11855,7 @@ function PresenterView({
11857
11855
  "aria-valuemin": 0,
11858
11856
  "aria-valuemax": 100,
11859
11857
  "aria-label": t("pptx.presenter.timerProgress"),
11860
- title: `${chunkP3T4E6JQ_js.formatElapsed(elapsed)} (segment ${timerSegment + 1})`,
11858
+ title: `${chunkBXACB3BG_js.formatElapsed(elapsed)} (segment ${timerSegment + 1})`,
11861
11859
  children: /* @__PURE__ */ jsxRuntime.jsx(
11862
11860
  "div",
11863
11861
  {
@@ -11884,7 +11882,7 @@ function MobilePresenterView({
11884
11882
  const interval = window.setInterval(() => setNow(Date.now()), 1e3);
11885
11883
  return () => window.clearInterval(interval);
11886
11884
  }, []);
11887
- const elapsed = chunkP3T4E6JQ_js.mobileElapsedSince(presentationStartTime, now);
11885
+ const elapsed = chunkBXACB3BG_js.mobileElapsedSince(presentationStartTime, now);
11888
11886
  const currentSlide = slides[currentSlideIndex];
11889
11887
  const nextSlide = currentSlideIndex + 1 < slides.length ? slides[currentSlideIndex + 1] : void 0;
11890
11888
  if (!currentSlide) {
@@ -11893,8 +11891,8 @@ function MobilePresenterView({
11893
11891
  const notesText = currentSlide.notes ?? "";
11894
11892
  const notesSegments = currentSlide.notesSegments;
11895
11893
  const hasRichNotes = notesSegments && notesSegments.length > 0;
11896
- const atFirst = chunkP3T4E6JQ_js.isFirstSlide(currentSlideIndex);
11897
- const atLast = chunkP3T4E6JQ_js.isLastSlide(currentSlideIndex, slides.length);
11894
+ const atFirst = chunkBXACB3BG_js.isFirstSlide(currentSlideIndex);
11895
+ const atLast = chunkBXACB3BG_js.isLastSlide(currentSlideIndex, slides.length);
11898
11896
  const insetStyle = {
11899
11897
  paddingTop: "env(safe-area-inset-top, 0px)",
11900
11898
  paddingBottom: "env(safe-area-inset-bottom, 0px)",
@@ -11905,9 +11903,9 @@ function MobilePresenterView({
11905
11903
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2 px-4 py-2 border-b border-border/60", children: [
11906
11904
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
11907
11905
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground uppercase tracking-wider", children: t("pptx.presenter.elapsed") }),
11908
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-mono tabular-nums text-primary", children: chunkP3T4E6JQ_js.formatMobileElapsed(elapsed) })
11906
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-mono tabular-nums text-primary", children: chunkBXACB3BG_js.formatMobileElapsed(elapsed) })
11909
11907
  ] }),
11910
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-mono tabular-nums text-foreground", children: chunkP3T4E6JQ_js.mobileSlideCounter(currentSlideIndex, slides.length) }),
11908
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-mono tabular-nums text-foreground", children: chunkBXACB3BG_js.mobileSlideCounter(currentSlideIndex, slides.length) }),
11911
11909
  /* @__PURE__ */ jsxRuntime.jsx(
11912
11910
  "button",
11913
11911
  {
@@ -12249,7 +12247,7 @@ function SelectionPane({
12249
12247
  setDragIndex(null);
12250
12248
  setDragOverIndex(null);
12251
12249
  },
12252
- className: chunkYF6JD4DO_js.cn(
12250
+ className: chunkLXUMBK2O_js.cn(
12253
12251
  "flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
12254
12252
  isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
12255
12253
  dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
@@ -12306,7 +12304,7 @@ function RibbonGroup({
12306
12304
  return /* @__PURE__ */ jsxRuntime.jsxs(
12307
12305
  "section",
12308
12306
  {
12309
- className: chunkYF6JD4DO_js.cn(
12307
+ className: chunkLXUMBK2O_js.cn(
12310
12308
  "relative flex min-h-[78px] shrink-0 items-start gap-1 border-r border-border/60 px-2 pb-4 pt-1 last:border-r-0",
12311
12309
  className
12312
12310
  ),
@@ -12334,7 +12332,7 @@ function RibbonCommand({
12334
12332
  onClick,
12335
12333
  disabled,
12336
12334
  title: title ?? label,
12337
- className: chunkYF6JD4DO_js.cn(
12335
+ className: chunkLXUMBK2O_js.cn(
12338
12336
  "inline-flex rounded-sm text-foreground transition-colors hover:bg-accent disabled:cursor-not-allowed disabled:opacity-35",
12339
12337
  active && "bg-primary/15 text-primary ring-1 ring-primary/35",
12340
12338
  compact ? "h-[26px] min-w-[88px] items-center gap-1.5 px-1.5 text-left text-[10px] leading-3" : "h-[58px] min-w-[54px] max-w-[72px] flex-col items-center justify-start gap-0.5 px-1 py-1 text-center text-[9px] leading-[11px]"
@@ -12343,7 +12341,7 @@ function RibbonCommand({
12343
12341
  /* @__PURE__ */ jsxRuntime.jsx(
12344
12342
  "span",
12345
12343
  {
12346
- className: chunkYF6JD4DO_js.cn(
12344
+ className: chunkLXUMBK2O_js.cn(
12347
12345
  "grid shrink-0 place-items-center text-primary",
12348
12346
  compact ? "h-4 w-4 [&>svg]:h-4 [&>svg]:w-4" : "h-7 w-7 [&>svg]:h-6 [&>svg]:w-6"
12349
12347
  ),
@@ -12372,7 +12370,7 @@ function RibbonToggle({
12372
12370
  "label",
12373
12371
  {
12374
12372
  title,
12375
- className: chunkYF6JD4DO_js.cn(
12373
+ className: chunkLXUMBK2O_js.cn(
12376
12374
  "flex h-[19px] items-center gap-1 whitespace-nowrap rounded-sm px-1 text-[10px] text-foreground",
12377
12375
  checked && "bg-primary/15 text-primary"
12378
12376
  ),
@@ -12774,7 +12772,7 @@ function ArrangeSection(p) {
12774
12772
  disabled: !p.canEdit || p.canActivateFormatPainter === false && !p.formatPainterActive,
12775
12773
  "data-testid": "format-painter-toggle",
12776
12774
  "data-active": p.formatPainterActive ? "true" : "false",
12777
- className: chunkYF6JD4DO_js.cn(
12775
+ className: chunkLXUMBK2O_js.cn(
12778
12776
  pill,
12779
12777
  p.formatPainterActive ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
12780
12778
  ),
@@ -12887,7 +12885,7 @@ function DesignSection(p) {
12887
12885
  {
12888
12886
  onClick: p.onToggleThemeGallery,
12889
12887
  disabled: !p.canEdit,
12890
- className: chunkYF6JD4DO_js.cn(
12888
+ className: chunkLXUMBK2O_js.cn(
12891
12889
  pill,
12892
12890
  p.isThemeGalleryOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
12893
12891
  ),
@@ -12903,7 +12901,7 @@ function DesignSection(p) {
12903
12901
  {
12904
12902
  onClick: p.onToggleThemeEditor,
12905
12903
  disabled: !p.canEdit,
12906
- className: chunkYF6JD4DO_js.cn(pill, p.isThemeEditorOpen ? "bg-primary hover:bg-primary/80 text-white" : ""),
12904
+ className: chunkLXUMBK2O_js.cn(pill, p.isThemeEditorOpen ? "bg-primary hover:bg-primary/80 text-white" : ""),
12907
12905
  title: t("pptx.ribbon.editThemeTitle"),
12908
12906
  children: [
12909
12907
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuPencil, { className: ics }),
@@ -12928,7 +12926,7 @@ function DesignSection(p) {
12928
12926
  "button",
12929
12927
  {
12930
12928
  onClick: p.onToggleInspector,
12931
- className: chunkYF6JD4DO_js.cn(
12929
+ className: chunkLXUMBK2O_js.cn(
12932
12930
  pill,
12933
12931
  p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
12934
12932
  ),
@@ -12970,7 +12968,7 @@ function TransitionsSection(p) {
12970
12968
  {
12971
12969
  type: "button",
12972
12970
  onClick: () => setSelected(preset.value),
12973
- className: chunkYF6JD4DO_js.cn(
12971
+ className: chunkLXUMBK2O_js.cn(
12974
12972
  "flex-shrink-0 px-2 py-1 max-md:min-h-[44px] rounded border text-[11px] leading-tight transition-colors",
12975
12973
  selected === preset.value ? "border-primary bg-primary/10 text-primary font-medium" : "border-border bg-muted hover:bg-accent text-foreground"
12976
12974
  ),
@@ -13055,7 +13053,7 @@ function TransitionsSection(p) {
13055
13053
  {
13056
13054
  type: "button",
13057
13055
  onClick: p.onToggleInspector,
13058
- className: chunkYF6JD4DO_js.cn(
13056
+ className: chunkLXUMBK2O_js.cn(
13059
13057
  pill,
13060
13058
  p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
13061
13059
  ),
@@ -13076,7 +13074,7 @@ function DrawSection(p) {
13076
13074
  {
13077
13075
  type: "button",
13078
13076
  onClick: () => p.onSetActiveTool(tool.id),
13079
- className: chunkYF6JD4DO_js.cn(
13077
+ className: chunkLXUMBK2O_js.cn(
13080
13078
  i < a.length - 1 ? gB : gL,
13081
13079
  p.activeTool === tool.id ? tool.ac ?? "bg-accent text-foreground" : ""
13082
13080
  ),
@@ -13161,7 +13159,7 @@ function BackstageAction(props) {
13161
13159
  function BackstageNewGallery(props) {
13162
13160
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
13163
13161
  /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mt-7 text-[17px] font-semibold", children: "New" }),
13164
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-5 grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-6", children: chunkP3T4E6JQ_js.BACKSTAGE_TEMPLATES.map((template) => /* @__PURE__ */ jsxRuntime.jsxs(
13162
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-5 grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-6", children: chunkBXACB3BG_js.BACKSTAGE_TEMPLATES.map((template) => /* @__PURE__ */ jsxRuntime.jsxs(
13165
13163
  "button",
13166
13164
  {
13167
13165
  type: "button",
@@ -13204,8 +13202,8 @@ function BackstageRecentList(props) {
13204
13202
  /* @__PURE__ */ jsxRuntime.jsx("small", { className: "block truncate text-[11px] text-muted-foreground", children: file.location })
13205
13203
  ] })
13206
13204
  ] }),
13207
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] text-muted-foreground", children: chunkP3T4E6JQ_js.formatBackstageDate(file.timestamp) }),
13208
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] text-muted-foreground", children: chunkP3T4E6JQ_js.formatBackstageSize(file.size) })
13205
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] text-muted-foreground", children: chunkBXACB3BG_js.formatBackstageDate(file.timestamp) }),
13206
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] text-muted-foreground", children: chunkBXACB3BG_js.formatBackstageSize(file.size) })
13209
13207
  ]
13210
13208
  },
13211
13209
  file.key
@@ -13218,7 +13216,7 @@ function FileSection(p) {
13218
13216
  const [query, setQuery] = React14.useState("");
13219
13217
  const [recent, setRecent] = React14.useState([]);
13220
13218
  React14.useEffect(() => {
13221
- void chunkP3T4E6JQ_js.listBackstageRecentFiles().then(setRecent);
13219
+ void chunkBXACB3BG_js.listBackstageRecentFiles().then(setRecent);
13222
13220
  }, []);
13223
13221
  const visibleRecent = React14.useMemo(() => {
13224
13222
  const q = query.trim().toLowerCase();
@@ -13230,7 +13228,7 @@ function FileSection(p) {
13230
13228
  p.onClose();
13231
13229
  }
13232
13230
  };
13233
- const title = chunkP3T4E6JQ_js.BACKSTAGE_NAV.find((item) => item.id === page)?.label ?? "Home";
13231
+ const title = chunkBXACB3BG_js.BACKSTAGE_NAV.find((item) => item.id === page)?.label ?? "Home";
13234
13232
  return /* @__PURE__ */ jsxRuntime.jsxs(
13235
13233
  "div",
13236
13234
  {
@@ -13251,7 +13249,7 @@ function FileSection(p) {
13251
13249
  }
13252
13250
  ),
13253
13251
  /* @__PURE__ */ jsxRuntime.jsxs("nav", { className: "flex min-h-0 flex-1 flex-col py-2", children: [
13254
- chunkP3T4E6JQ_js.BACKSTAGE_NAV.filter((item) => !item.group).map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
13252
+ chunkBXACB3BG_js.BACKSTAGE_NAV.filter((item) => !item.group).map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
13255
13253
  "button",
13256
13254
  {
13257
13255
  type: "button",
@@ -13265,7 +13263,7 @@ function FileSection(p) {
13265
13263
  item.id
13266
13264
  )),
13267
13265
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1" }),
13268
- chunkP3T4E6JQ_js.BACKSTAGE_NAV.filter((item) => item.group).map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
13266
+ chunkBXACB3BG_js.BACKSTAGE_NAV.filter((item) => item.group).map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
13269
13267
  "button",
13270
13268
  {
13271
13269
  type: "button",
@@ -13553,7 +13551,7 @@ function SlidesGroup(p) {
13553
13551
  type: "button",
13554
13552
  onClick: handleNewSlide,
13555
13553
  disabled: !p.canEdit || p.layoutOptions.length === 0,
13556
- className: chunkYF6JD4DO_js.cn(
13554
+ className: chunkLXUMBK2O_js.cn(
13557
13555
  pill,
13558
13556
  "whitespace-nowrap",
13559
13557
  p.layoutOptions.length > 0 ? "rounded-r-none" : ""
@@ -13743,7 +13741,7 @@ function HomeSection(p) {
13743
13741
  setTimeout(() => setCutFeedback(false), 600);
13744
13742
  },
13745
13743
  disabled: !p.canEdit,
13746
- className: chunkYF6JD4DO_js.cn(gB, cutFeedback && "bg-green-600/20 text-green-400"),
13744
+ className: chunkLXUMBK2O_js.cn(gB, cutFeedback && "bg-green-600/20 text-green-400"),
13747
13745
  title: t("pptx.arrange.cut"),
13748
13746
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuScissors, { className: ic2 })
13749
13747
  }
@@ -13757,7 +13755,7 @@ function HomeSection(p) {
13757
13755
  setCopiedFeedback(true);
13758
13756
  setTimeout(() => setCopiedFeedback(false), 600);
13759
13757
  },
13760
- className: chunkYF6JD4DO_js.cn(gB, copiedFeedback && "bg-green-600/20 text-green-400"),
13758
+ className: chunkLXUMBK2O_js.cn(gB, copiedFeedback && "bg-green-600/20 text-green-400"),
13761
13759
  title: t("pptx.arrange.copy"),
13762
13760
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuCopy, { className: ic2 })
13763
13761
  }
@@ -13770,7 +13768,7 @@ function HomeSection(p) {
13770
13768
  disabled: !p.canEdit || p.canActivateFormatPainter === false && !p.formatPainterActive,
13771
13769
  "data-testid": "format-painter-toggle",
13772
13770
  "data-active": p.formatPainterActive ? "true" : "false",
13773
- className: chunkYF6JD4DO_js.cn(
13771
+ className: chunkLXUMBK2O_js.cn(
13774
13772
  gL,
13775
13773
  p.formatPainterActive ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
13776
13774
  ),
@@ -13862,7 +13860,7 @@ function InsertSection(p) {
13862
13860
  const [datePickerOpen, setDatePickerOpen] = React14.useState(false);
13863
13861
  const [datePickerValue, setDatePickerValue] = React14.useState("");
13864
13862
  const [dateFormat, setDateFormat] = React14.useState("locale");
13865
- const [newChartType, setNewChartType] = React14.useState(chunkP3T4E6JQ_js.DEFAULT_INSERT_CHART_TYPE);
13863
+ const [newChartType, setNewChartType] = React14.useState(chunkBXACB3BG_js.DEFAULT_INSERT_CHART_TYPE);
13866
13864
  const datePickerRef = React14.useRef(null);
13867
13865
  const openDatePicker = React14.useCallback(() => {
13868
13866
  const now = /* @__PURE__ */ new Date();
@@ -13945,7 +13943,7 @@ function InsertSection(p) {
13945
13943
  onChange: (e) => p.onSetNewShapeType(e.target.value),
13946
13944
  className: "bg-transparent py-1.5 pl-2 pr-1 outline-none text-xs",
13947
13945
  title: t("pptx.insert.shapeType"),
13948
- children: chunkYF6JD4DO_js.SHAPE_PRESETS.map((sp) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: sp.type, className: "bg-background", children: t(sp.i18nKey) }, sp.type))
13946
+ children: chunkLXUMBK2O_js.SHAPE_PRESETS.map((sp) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: sp.type, className: "bg-background", children: t(sp.i18nKey) }, sp.type))
13949
13947
  }
13950
13948
  ),
13951
13949
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -13956,7 +13954,7 @@ function InsertSection(p) {
13956
13954
  className: "inline-flex items-center gap-1.5 px-2.5 py-1.5 border-l border-border hover:bg-accent transition-colors text-xs",
13957
13955
  title: t("pptx.insert.addShape"),
13958
13956
  children: [
13959
- chunkYF6JD4DO_js.SHAPE_PRESETS.find((sp) => sp.type === p.newShapeType)?.icon || /* @__PURE__ */ jsxRuntime.jsx(lu.LuSquare, { className: ic2 }),
13957
+ chunkLXUMBK2O_js.SHAPE_PRESETS.find((sp) => sp.type === p.newShapeType)?.icon || /* @__PURE__ */ jsxRuntime.jsx(lu.LuSquare, { className: ic2 }),
13960
13958
  t("pptx.insert.shape")
13961
13959
  ]
13962
13960
  }
@@ -14009,7 +14007,7 @@ function InsertSection(p) {
14009
14007
  onChange: (e) => setNewChartType(e.target.value),
14010
14008
  className: "bg-transparent py-1.5 pl-2 pr-1 outline-none text-xs",
14011
14009
  title: t("pptx.ribbon.chartType"),
14012
- children: chunkP3T4E6JQ_js.INSERT_CHART_TYPES.map((ct) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: ct.type, className: "bg-background", children: ct.label }, ct.type))
14010
+ children: chunkBXACB3BG_js.INSERT_CHART_TYPES.map((ct) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: ct.type, className: "bg-background", children: ct.label }, ct.type))
14013
14011
  }
14014
14012
  ),
14015
14013
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -14111,7 +14109,7 @@ function InsertSection(p) {
14111
14109
  ]
14112
14110
  }
14113
14111
  ),
14114
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute left-0 top-full z-50 hidden group-hover:flex flex-col w-40 pt-1", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-border bg-popover backdrop-blur-lg shadow-2xl py-1", children: chunkP3T4E6JQ_js.ACTION_BUTTON_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
14112
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute left-0 top-full z-50 hidden group-hover:flex flex-col w-40 pt-1", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-border bg-popover backdrop-blur-lg shadow-2xl py-1", children: chunkBXACB3BG_js.ACTION_BUTTON_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
14115
14113
  "button",
14116
14114
  {
14117
14115
  type: "button",
@@ -14211,16 +14209,7 @@ function InsertSection(p) {
14211
14209
  )
14212
14210
  ] }) })
14213
14211
  ] }),
14214
- p.onOpenHeaderFooter && /* @__PURE__ */ jsxRuntime.jsx(
14215
- "button",
14216
- {
14217
- type: "button",
14218
- disabled: !canEdit,
14219
- className: pill,
14220
- onClick: p.onOpenHeaderFooter,
14221
- children: t("pptx.headerFooter.title")
14222
- }
14223
- ),
14212
+ p.onOpenHeaderFooter && /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", disabled: !canEdit, className: pill, onClick: p.onOpenHeaderFooter, children: t("pptx.headerFooter.title") }),
14224
14213
  datePickerOpen && /* @__PURE__ */ jsxRuntime.jsx(
14225
14214
  "div",
14226
14215
  {
@@ -15544,7 +15533,7 @@ function MobileSheet({
15544
15533
  headerRight
15545
15534
  }) {
15546
15535
  const sheetRef = React14.useRef(null);
15547
- const { dragY, dragging, handlers } = chunkYF6JD4DO_js.useSheetDismissDrag(onClose);
15536
+ const { dragY, dragging, handlers } = chunkLXUMBK2O_js.useSheetDismissDrag(onClose);
15548
15537
  useModalFocus(open, sheetRef, onClose);
15549
15538
  if (!open) {
15550
15539
  return null;
@@ -15568,7 +15557,7 @@ function MobileSheet({
15568
15557
  "aria-modal": "true",
15569
15558
  "aria-label": typeof title === "string" ? title : "Mobile panel",
15570
15559
  tabIndex: -1,
15571
- className: chunkYF6JD4DO_js.cn(
15560
+ className: chunkLXUMBK2O_js.cn(
15572
15561
  "relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
15573
15562
  "animate-in slide-in-from-bottom duration-200",
15574
15563
  className
@@ -15637,7 +15626,7 @@ function MobileMenuSheet(props) {
15637
15626
  {
15638
15627
  type: "button",
15639
15628
  onClick: () => setActive(active === key ? null : key),
15640
- className: chunkYF6JD4DO_js.cn(
15629
+ className: chunkLXUMBK2O_js.cn(
15641
15630
  "inline-flex items-center gap-1.5 shrink-0 px-3 py-2 rounded-full text-[12px] font-medium border transition-colors min-h-[36px]",
15642
15631
  active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
15643
15632
  ),
@@ -15934,7 +15923,7 @@ function MobileToolbar(props) {
15934
15923
  {
15935
15924
  type: "button",
15936
15925
  onClick: () => onSetMode("present"),
15937
- className: chunkYF6JD4DO_js.cn(btn, "text-primary"),
15926
+ className: chunkLXUMBK2O_js.cn(btn, "text-primary"),
15938
15927
  title: t("pptx.toolbar.present"),
15939
15928
  "aria-label": t("pptx.toolbar.present"),
15940
15929
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPresentation, { className: "w-5 h-5" })
@@ -15945,7 +15934,7 @@ function MobileToolbar(props) {
15945
15934
  {
15946
15935
  type: "button",
15947
15936
  onClick: props.onOpenShareDialog ?? props.onPackageForSharing,
15948
- className: chunkYF6JD4DO_js.cn(btn, "bg-primary text-white hover:bg-primary/90 px-3"),
15937
+ className: chunkLXUMBK2O_js.cn(btn, "bg-primary text-white hover:bg-primary/90 px-3"),
15949
15938
  title: t("pptx.toolbar.share"),
15950
15939
  "aria-label": t("pptx.toolbar.share"),
15951
15940
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuShare2, { className: "w-4 h-4" })
@@ -15970,7 +15959,7 @@ var FILL_COLORS = [
15970
15959
  "#008888",
15971
15960
  "#888888"
15972
15961
  ];
15973
- var TOP_SHAPES = chunkYF6JD4DO_js.SHAPE_PRESETS.slice(0, 12);
15962
+ var TOP_SHAPES = chunkLXUMBK2O_js.SHAPE_PRESETS.slice(0, 12);
15974
15963
  function DrawingGroup(p) {
15975
15964
  const { t } = reactI18next.useTranslation();
15976
15965
  const [shapesOpen, setShapesOpen] = React14.useState(false);
@@ -16051,7 +16040,7 @@ function DrawingGroup(p) {
16051
16040
  "button",
16052
16041
  {
16053
16042
  type: "button",
16054
- className: chunkYF6JD4DO_js.cn(
16043
+ className: chunkLXUMBK2O_js.cn(
16055
16044
  "flex items-center gap-2 w-full px-3 py-1.5 text-xs text-foreground hover:bg-muted transition-colors",
16056
16045
  p.newShapeType === s.type && "bg-accent"
16057
16046
  ),
@@ -16195,7 +16184,7 @@ function DrawingGroup(p) {
16195
16184
  {
16196
16185
  type: "button",
16197
16186
  disabled: true,
16198
- className: chunkYF6JD4DO_js.cn(pill, "opacity-50 cursor-not-allowed"),
16187
+ className: chunkLXUMBK2O_js.cn(pill, "opacity-50 cursor-not-allowed"),
16199
16188
  title: t("pptx.drawing.shapeEffectsUnavailable"),
16200
16189
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic2 })
16201
16190
  }
@@ -16308,11 +16297,11 @@ function TabRowActions(p) {
16308
16297
  {
16309
16298
  type: "button",
16310
16299
  onClick: p.onEnterRehearsalMode,
16311
- className: chunkP3T4E6JQ_js.TAB_ROW_ACTION_CLASSES.record,
16300
+ className: chunkBXACB3BG_js.TAB_ROW_ACTION_CLASSES.record,
16312
16301
  title: t("pptx.titleBar.record"),
16313
16302
  "aria-label": t("pptx.titleBar.record"),
16314
16303
  children: [
16315
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.TAB_ROW_ACTION_CLASSES.recordDot, "aria-hidden": "true" }),
16304
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TAB_ROW_ACTION_CLASSES.recordDot, "aria-hidden": "true" }),
16316
16305
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: t("pptx.titleBar.record") })
16317
16306
  ]
16318
16307
  }
@@ -16322,7 +16311,7 @@ function TabRowActions(p) {
16322
16311
  {
16323
16312
  type: "button",
16324
16313
  onClick: p.onOpenShareDialog ?? p.onPackageForSharing,
16325
- className: chunkYF6JD4DO_js.cn(
16314
+ className: chunkLXUMBK2O_js.cn(
16326
16315
  "relative inline-flex items-center gap-1 px-2.5 py-1 rounded-sm text-[11px] font-medium transition-colors whitespace-nowrap",
16327
16316
  isCollaborating ? "bg-green-600 hover:bg-green-500 text-white" : "bg-primary hover:bg-primary/90 text-white"
16328
16317
  ),
@@ -16402,7 +16391,7 @@ function CustomShowsControls({
16402
16391
  {
16403
16392
  type: "button",
16404
16393
  onClick: onToggleCurrentSlideInActiveShow,
16405
- className: chunkYF6JD4DO_js.cn(
16394
+ className: chunkLXUMBK2O_js.cn(
16406
16395
  "px-2 py-1 rounded text-[11px] transition-colors",
16407
16396
  isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
16408
16397
  ),
@@ -16450,7 +16439,7 @@ function PresentDropdown({
16450
16439
  {
16451
16440
  type: "button",
16452
16441
  onClick: onPresent,
16453
- className: chunkYF6JD4DO_js.cn(
16442
+ className: chunkLXUMBK2O_js.cn(
16454
16443
  "px-2 py-1 transition-colors",
16455
16444
  isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
16456
16445
  ),
@@ -16463,7 +16452,7 @@ function PresentDropdown({
16463
16452
  {
16464
16453
  type: "button",
16465
16454
  onClick: () => setOpen((prev) => !prev),
16466
- className: chunkYF6JD4DO_js.cn(
16455
+ className: chunkLXUMBK2O_js.cn(
16467
16456
  "px-1 py-1 transition-colors border-l border-border",
16468
16457
  open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
16469
16458
  ),
@@ -16651,7 +16640,7 @@ function OverflowMenu(p) {
16651
16640
  {
16652
16641
  type: "button",
16653
16642
  onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
16654
- className: chunkYF6JD4DO_js.cn(
16643
+ className: chunkLXUMBK2O_js.cn(
16655
16644
  "p-1.5 rounded transition-colors",
16656
16645
  p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
16657
16646
  ),
@@ -16706,7 +16695,7 @@ function ToolbarPrimaryRow(p) {
16706
16695
  {
16707
16696
  type: "button",
16708
16697
  onClick: onToggleSidebar,
16709
- className: chunkYF6JD4DO_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
16698
+ className: chunkLXUMBK2O_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
16710
16699
  title: t("pptx.toolbar.toggleSlidesPanel"),
16711
16700
  "aria-label": t("pptx.toolbar.toggleSlidesPanel"),
16712
16701
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic2 })
@@ -16718,7 +16707,7 @@ function ToolbarPrimaryRow(p) {
16718
16707
  {
16719
16708
  type: "button",
16720
16709
  onClick: p.onToggleComments,
16721
- className: chunkYF6JD4DO_js.cn(
16710
+ className: chunkLXUMBK2O_js.cn(
16722
16711
  qab,
16723
16712
  "relative max-md:hidden",
16724
16713
  p.isCommentsPanelOpen ? "text-foreground" : "text-muted-foreground"
@@ -16785,7 +16774,7 @@ function ToolbarPrimaryRow(p) {
16785
16774
  {
16786
16775
  type: "button",
16787
16776
  onClick: onToggleInspector,
16788
- className: chunkYF6JD4DO_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
16777
+ className: chunkLXUMBK2O_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
16789
16778
  title: t("pptx.toolbar.toggleInspector"),
16790
16779
  "aria-label": t("pptx.toolbar.toggleInspector"),
16791
16780
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic2 })
@@ -16796,7 +16785,7 @@ function ToolbarPrimaryRow(p) {
16796
16785
  {
16797
16786
  type: "button",
16798
16787
  onClick: p.onOpenSettings ?? p.onToggleShortcuts,
16799
- className: chunkYF6JD4DO_js.cn(qab, "text-muted-foreground"),
16788
+ className: chunkLXUMBK2O_js.cn(qab, "text-muted-foreground"),
16800
16789
  title: t("pptx.toolbar.settingsShortcuts"),
16801
16790
  "aria-label": t("pptx.toolbar.settings"),
16802
16791
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
@@ -16841,14 +16830,14 @@ function Toolbar(p) {
16841
16830
  role: "tablist",
16842
16831
  className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
16843
16832
  children: [
16844
- chunkYF6JD4DO_js.TOOLBAR_SECTIONS.map((s) => /* @__PURE__ */ jsxRuntime.jsx(
16833
+ chunkLXUMBK2O_js.TOOLBAR_SECTIONS.map((s) => /* @__PURE__ */ jsxRuntime.jsx(
16845
16834
  "button",
16846
16835
  {
16847
16836
  type: "button",
16848
16837
  role: "tab",
16849
16838
  "aria-selected": toolbarSection === s.id,
16850
16839
  onClick: () => onSetToolbarSection(s.id),
16851
- className: chunkYF6JD4DO_js.cn(
16840
+ className: chunkLXUMBK2O_js.cn(
16852
16841
  "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap transition-colors max-md:min-h-[36px] max-md:px-3",
16853
16842
  toolbarSection === s.id ? s.id === "file" ? "text-white bg-primary/80 rounded-sm" : "text-foreground after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary" : s.id === "file" ? "text-primary hover:bg-primary/15 rounded-sm" : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
16854
16843
  ),
@@ -16870,7 +16859,7 @@ function Toolbar(p) {
16870
16859
  {
16871
16860
  type: "button",
16872
16861
  onClick: p.onToggleCompactToolbar,
16873
- className: chunkYF6JD4DO_js.cn(
16862
+ className: chunkLXUMBK2O_js.cn(
16874
16863
  "px-2 py-1 rounded text-[11px] transition-colors mr-1",
16875
16864
  isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
16876
16865
  ),
@@ -16886,7 +16875,7 @@ function Toolbar(p) {
16886
16875
  showRibbon && /* @__PURE__ */ jsxRuntime.jsxs(
16887
16876
  "div",
16888
16877
  {
16889
- className: chunkYF6JD4DO_js.cn(
16878
+ className: chunkLXUMBK2O_js.cn(
16890
16879
  "flex min-h-[82px] items-stretch gap-0 overflow-visible px-1 py-0.5 max-md:min-h-0 max-md:px-1 max-md:py-0.5 flex-nowrap",
16891
16880
  isNarrowViewport && !isCompactToolbarOpen && "hidden"
16892
16881
  ),
@@ -17139,13 +17128,13 @@ function Toolbar(p) {
17139
17128
  }
17140
17129
  var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px]";
17141
17130
  var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px]";
17142
- var ENTRANCE_PRESETS = chunkYF6JD4DO_js.ANIMATION_PRESET_OPTIONS.filter(
17131
+ var ENTRANCE_PRESETS = chunkLXUMBK2O_js.ANIMATION_PRESET_OPTIONS.filter(
17143
17132
  (o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
17144
17133
  );
17145
- var EXIT_PRESETS = chunkYF6JD4DO_js.ANIMATION_PRESET_OPTIONS.filter(
17134
+ var EXIT_PRESETS = chunkLXUMBK2O_js.ANIMATION_PRESET_OPTIONS.filter(
17146
17135
  (o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
17147
17136
  );
17148
- var EMPHASIS_PRESETS = chunkYF6JD4DO_js.ANIMATION_PRESET_OPTIONS.filter(
17137
+ var EMPHASIS_PRESETS = chunkLXUMBK2O_js.ANIMATION_PRESET_OPTIONS.filter(
17149
17138
  (o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
17150
17139
  );
17151
17140
  var TRIGGER_OPTIONS = [
@@ -17247,7 +17236,7 @@ function AnimationTimelineSection({
17247
17236
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
17248
17237
  "div",
17249
17238
  {
17250
- className: chunkYF6JD4DO_js.cn(
17239
+ className: chunkLXUMBK2O_js.cn(
17251
17240
  "absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
17252
17241
  animationTypeColor(bar.anim),
17253
17242
  bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
@@ -17281,7 +17270,7 @@ function AnimationTimelineSection({
17281
17270
  onDragEnd: handleDragEnd,
17282
17271
  onMouseEnter: () => handleAnimationHover(anim),
17283
17272
  onMouseLeave: handleAnimationHoverEnd,
17284
- className: chunkYF6JD4DO_js.cn(
17273
+ className: chunkLXUMBK2O_js.cn(
17285
17274
  "flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
17286
17275
  isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
17287
17276
  isDragging && "opacity-40",
@@ -17445,13 +17434,13 @@ function useAnimationPreview({
17445
17434
  if (!preset || preset === "none") {
17446
17435
  return;
17447
17436
  }
17448
- chunkYF6JD4DO_js.startPreviewAnimation(anim.elementId, preset, {
17437
+ chunkLXUMBK2O_js.startPreviewAnimation(anim.elementId, preset, {
17449
17438
  direction: anim.direction,
17450
17439
  durationMs: anim.durationMs ?? 500,
17451
17440
  timingCurve: anim.timingCurve
17452
17441
  });
17453
17442
  }, []);
17454
- const handleAnimationHoverEnd = React14.useCallback(() => chunkYF6JD4DO_js.stopPreviewAnimation(), []);
17443
+ const handleAnimationHoverEnd = React14.useCallback(() => chunkLXUMBK2O_js.stopPreviewAnimation(), []);
17455
17444
  const handlePreviewClick = React14.useCallback(() => {
17456
17445
  if (!selectedElementAnimation) {
17457
17446
  return;
@@ -17460,7 +17449,7 @@ function useAnimationPreview({
17460
17449
  if (!preset || preset === "none") {
17461
17450
  return;
17462
17451
  }
17463
- chunkYF6JD4DO_js.startPreviewAnimation(selectedElementId, preset, {
17452
+ chunkLXUMBK2O_js.startPreviewAnimation(selectedElementId, preset, {
17464
17453
  direction: selectedElementAnimation.direction,
17465
17454
  durationMs: selectedElementAnimation.durationMs ?? 500,
17466
17455
  timingCurve: selectedElementAnimation.timingCurve
@@ -17633,14 +17622,14 @@ function useAnimationHandlers({
17633
17622
  return anim.elementId.slice(0, 8);
17634
17623
  }
17635
17624
  const text = chunkAD3EAEY6_js.hasTextProperties(el) ? el.text : void 0;
17636
- return text || chunkP3T4E6JQ_js.getElementLabel(el);
17625
+ return text || chunkBXACB3BG_js.getElementLabel(el);
17637
17626
  },
17638
17627
  [activeSlide.elements]
17639
17628
  );
17640
17629
  const hasAnimation = Boolean(
17641
17630
  selectedElementAnimation?.entrance || selectedElementAnimation?.exit || selectedElementAnimation?.emphasis
17642
17631
  );
17643
- const showDirectionPicker = hasAnimation && (chunkP3T4E6JQ_js.DIRECTIONAL_PRESETS.has(selectedElementAnimation?.entrance ?? "") || chunkP3T4E6JQ_js.DIRECTIONAL_PRESETS.has(selectedElementAnimation?.exit ?? ""));
17632
+ const showDirectionPicker = hasAnimation && (chunkBXACB3BG_js.DIRECTIONAL_PRESETS.has(selectedElementAnimation?.entrance ?? "") || chunkBXACB3BG_js.DIRECTIONAL_PRESETS.has(selectedElementAnimation?.exit ?? ""));
17644
17633
  const timelineBarData = React14.useMemo(() => {
17645
17634
  if (sortedAnimations.length === 0) {
17646
17635
  return [];
@@ -17792,7 +17781,7 @@ function AnimationPanel({
17792
17781
  {
17793
17782
  type: "button",
17794
17783
  disabled: !canEdit,
17795
- className: chunkYF6JD4DO_js.cn(
17784
+ className: chunkLXUMBK2O_js.cn(
17796
17785
  "flex items-center justify-center w-7 h-7 rounded border transition-colors",
17797
17786
  isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
17798
17787
  ),
@@ -17842,7 +17831,7 @@ function AnimationPanel({
17842
17831
  className: SELECT_CLS,
17843
17832
  children: [
17844
17833
  /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
17845
- activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkP3T4E6JQ_js.getElementLabel(el) }, el.id))
17834
+ activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkBXACB3BG_js.getElementLabel(el) }, el.id))
17846
17835
  ]
17847
17836
  }
17848
17837
  )
@@ -18034,7 +18023,7 @@ function ActionTriggerSection({
18034
18023
  "select",
18035
18024
  {
18036
18025
  disabled: !canEdit,
18037
- className: chunkYF6JD4DO_js.cn(INPUT, "w-full"),
18026
+ className: chunkLXUMBK2O_js.cn(INPUT, "w-full"),
18038
18027
  value: activeType,
18039
18028
  onChange: (e) => onChangeType(e.target.value),
18040
18029
  children: ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.label) }, o.value))
@@ -18045,7 +18034,7 @@ function ActionTriggerSection({
18045
18034
  {
18046
18035
  type: "text",
18047
18036
  disabled: !canEdit,
18048
- className: chunkYF6JD4DO_js.cn(INPUT, "w-full"),
18037
+ className: chunkLXUMBK2O_js.cn(INPUT, "w-full"),
18049
18038
  placeholder: "https://...",
18050
18039
  value: action?.url ?? fallbackUrl ?? "",
18051
18040
  onChange: (e) => onChangeUrl(e.target.value)
@@ -18056,7 +18045,7 @@ function ActionTriggerSection({
18056
18045
  {
18057
18046
  type: "number",
18058
18047
  disabled: !canEdit,
18059
- className: chunkYF6JD4DO_js.cn(INPUT, "w-full"),
18048
+ className: chunkLXUMBK2O_js.cn(INPUT, "w-full"),
18060
18049
  placeholder: t("pptx.action.slideNumberPlaceholder"),
18061
18050
  min: 1,
18062
18051
  max: slideCount,
@@ -19711,7 +19700,7 @@ function ConnectorPanel({
19711
19700
  "select",
19712
19701
  {
19713
19702
  disabled: !canEdit,
19714
- className: chunkYF6JD4DO_js.cn(INPUT, "w-full"),
19703
+ className: chunkLXUMBK2O_js.cn(INPUT, "w-full"),
19715
19704
  value: selectedElement.shapeStyle?.[key] ?? "none",
19716
19705
  onChange: (e) => onUpdateElementStyle({ [key]: e.target.value }),
19717
19706
  children: [
@@ -19763,7 +19752,7 @@ function OlePropertiesPanel({
19763
19752
  /* @__PURE__ */ jsxRuntime.jsx(
19764
19753
  "span",
19765
19754
  {
19766
- className: chunkYF6JD4DO_js.cn(
19755
+ className: chunkLXUMBK2O_js.cn(
19767
19756
  "inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
19768
19757
  ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
19769
19758
  ),
@@ -19822,7 +19811,7 @@ function LayerOrderButtons({
19822
19811
  "button",
19823
19812
  {
19824
19813
  type: "button",
19825
- className: chunkYF6JD4DO_js.cn("flex-1", BTN),
19814
+ className: chunkLXUMBK2O_js.cn("flex-1", BTN),
19826
19815
  disabled: !canEdit,
19827
19816
  onClick: () => onMoveLayer("forward"),
19828
19817
  children: "\u2191 Forward"
@@ -19832,7 +19821,7 @@ function LayerOrderButtons({
19832
19821
  "button",
19833
19822
  {
19834
19823
  type: "button",
19835
- className: chunkYF6JD4DO_js.cn("flex-1", BTN),
19824
+ className: chunkLXUMBK2O_js.cn("flex-1", BTN),
19836
19825
  disabled: !canEdit,
19837
19826
  onClick: () => onMoveLayer("backward"),
19838
19827
  children: "\u2193 Backward"
@@ -19849,14 +19838,14 @@ function ArtisticEffectsGallery({
19849
19838
  const { t } = reactI18next.useTranslation();
19850
19839
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
19851
19840
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.artisticEffects") }),
19852
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkP3T4E6JQ_js.ARTISTIC_EFFECTS.map(([effectName, tKey, cssFilter]) => {
19841
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkBXACB3BG_js.ARTISTIC_EFFECTS.map(([effectName, tKey, cssFilter]) => {
19853
19842
  const isActive = effectName === "none" ? !fx?.artisticEffect : fx?.artisticEffect === effectName;
19854
19843
  return /* @__PURE__ */ jsxRuntime.jsxs(
19855
19844
  "button",
19856
19845
  {
19857
19846
  type: "button",
19858
19847
  disabled: !canEdit,
19859
- className: chunkYF6JD4DO_js.cn(
19848
+ className: chunkLXUMBK2O_js.cn(
19860
19849
  "flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
19861
19850
  isActive ? "border-primary bg-primary/10" : "border-border"
19862
19851
  ),
@@ -19919,7 +19908,7 @@ function ColorChangeSection({
19919
19908
  DebouncedColorInput,
19920
19909
  {
19921
19910
  disabled: !canEdit,
19922
- value: chunkP3T4E6JQ_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
19911
+ value: chunkBXACB3BG_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
19923
19912
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
19924
19913
  onCommit: (hex) => updateEffects({
19925
19914
  clrChange: {
@@ -19937,7 +19926,7 @@ function ColorChangeSection({
19937
19926
  DebouncedColorInput,
19938
19927
  {
19939
19928
  disabled: !canEdit || Boolean(cc.clrToTransparent),
19940
- value: chunkP3T4E6JQ_js.normalizeHexColor(cc.clrTo, "#000000"),
19929
+ value: chunkBXACB3BG_js.normalizeHexColor(cc.clrTo, "#000000"),
19941
19930
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
19942
19931
  onCommit: (hex) => updateEffects({
19943
19932
  clrChange: {
@@ -19999,7 +19988,7 @@ function ColorWashSection({
19999
19988
  DebouncedColorInput,
20000
19989
  {
20001
19990
  disabled: !canEdit,
20002
- value: chunkP3T4E6JQ_js.normalizeHexColor(wash.color, "#0066cc"),
19991
+ value: chunkBXACB3BG_js.normalizeHexColor(wash.color, "#0066cc"),
20003
19992
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
20004
19993
  onCommit: (hex) => updateEffects({
20005
19994
  colorWash: { color: hex, opacity: wash.opacity ?? 40 }
@@ -20099,8 +20088,8 @@ function DuotonePanel({
20099
20088
  }
20100
20089
  });
20101
20090
  }, [effects, onUpdateElement]);
20102
- const shadowColor = chunkP3T4E6JQ_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
20103
- const highlightColor = chunkP3T4E6JQ_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
20091
+ const shadowColor = chunkBXACB3BG_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
20092
+ const highlightColor = chunkBXACB3BG_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
20104
20093
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
20105
20094
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
20106
20095
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -20131,7 +20120,7 @@ function DuotonePanel({
20131
20120
  ] }),
20132
20121
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
20133
20122
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
20134
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkP3T4E6JQ_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
20123
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkBXACB3BG_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
20135
20124
  "button",
20136
20125
  {
20137
20126
  type: "button",
@@ -20305,7 +20294,7 @@ function ImagePropertiesPanel({
20305
20294
  {
20306
20295
  rows: 2,
20307
20296
  disabled: !canEdit,
20308
- className: chunkYF6JD4DO_js.cn(INPUT, "resize-none text-[11px]"),
20297
+ className: chunkLXUMBK2O_js.cn(INPUT, "resize-none text-[11px]"),
20309
20298
  value: selectedElement.altText ?? "",
20310
20299
  onChange: (e) => onUpdateElement({
20311
20300
  altText: e.target.value
@@ -21264,11 +21253,11 @@ function ShapeTextPanels({
21264
21253
  {
21265
21254
  value: selectedElement.shapeType || "rect",
21266
21255
  disabled: !canEdit,
21267
- className: chunkYF6JD4DO_js.cn(INPUT, "w-full"),
21256
+ className: chunkLXUMBK2O_js.cn(INPUT, "w-full"),
21268
21257
  onChange: (e) => onUpdateElement({
21269
21258
  shapeType: e.target.value
21270
21259
  }),
21271
- children: chunkYF6JD4DO_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
21260
+ children: chunkLXUMBK2O_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
21272
21261
  }
21273
21262
  )
21274
21263
  ] }),
@@ -21281,7 +21270,7 @@ function ShapeTextPanels({
21281
21270
  DebouncedColorInput,
21282
21271
  {
21283
21272
  disabled: !canEdit,
21284
- value: chunkP3T4E6JQ_js.normalizeHexColor(selectedElement.shapeStyle?.fillColor, "#3b82f6"),
21273
+ value: chunkBXACB3BG_js.normalizeHexColor(selectedElement.shapeStyle?.fillColor, "#3b82f6"),
21285
21274
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
21286
21275
  onCommit: (hex) => onUpdateElementStyle({ fillColor: hex, fillMode: "solid" })
21287
21276
  }
@@ -21293,7 +21282,7 @@ function ShapeTextPanels({
21293
21282
  DebouncedColorInput,
21294
21283
  {
21295
21284
  disabled: !canEdit,
21296
- value: chunkP3T4E6JQ_js.normalizeHexColor(selectedElement.shapeStyle?.strokeColor, "#1f2937"),
21285
+ value: chunkBXACB3BG_js.normalizeHexColor(selectedElement.shapeStyle?.strokeColor, "#1f2937"),
21297
21286
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
21298
21287
  onCommit: (hex) => onUpdateElementStyle({ strokeColor: hex })
21299
21288
  }
@@ -21340,7 +21329,7 @@ function ShapeTextPanels({
21340
21329
  DebouncedColorInput,
21341
21330
  {
21342
21331
  disabled: !canEdit,
21343
- value: chunkP3T4E6JQ_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
21332
+ value: chunkBXACB3BG_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
21344
21333
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
21345
21334
  onCommit: (hex) => onUpdateTextStyle({ color: hex })
21346
21335
  }
@@ -21398,7 +21387,7 @@ function TextFormatToggle({
21398
21387
  {
21399
21388
  type: "button",
21400
21389
  disabled,
21401
- className: chunkYF6JD4DO_js.cn(
21390
+ className: chunkLXUMBK2O_js.cn(
21402
21391
  "px-2 py-1 rounded text-[11px] transition-colors",
21403
21392
  italic && "italic",
21404
21393
  underline && "underline",
@@ -21690,7 +21679,7 @@ function SmartArtLayoutSwitcher({
21690
21679
  type: "button",
21691
21680
  "data-testid": `smartart-layout-${type}`,
21692
21681
  disabled: !canEdit,
21693
- className: chunkYF6JD4DO_js.cn(
21682
+ className: chunkLXUMBK2O_js.cn(
21694
21683
  "flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
21695
21684
  "text-[9px] leading-tight",
21696
21685
  isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
@@ -21762,7 +21751,7 @@ function SmartArtNodeStyleControls({
21762
21751
  disabled: !canEdit,
21763
21752
  "aria-label": `Bold ${label}`,
21764
21753
  "aria-pressed": bold,
21765
- className: chunkYF6JD4DO_js.cn(
21754
+ className: chunkLXUMBK2O_js.cn(
21766
21755
  EMPHASIS_BTN,
21767
21756
  "font-bold",
21768
21757
  bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
@@ -21778,7 +21767,7 @@ function SmartArtNodeStyleControls({
21778
21767
  disabled: !canEdit,
21779
21768
  "aria-label": `Italic ${label}`,
21780
21769
  "aria-pressed": italic,
21781
- className: chunkYF6JD4DO_js.cn(
21770
+ className: chunkLXUMBK2O_js.cn(
21782
21771
  EMPHASIS_BTN,
21783
21772
  "italic",
21784
21773
  italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
@@ -21817,7 +21806,7 @@ function SmartArtNodeRow({
21817
21806
  "div",
21818
21807
  {
21819
21808
  role: "listitem",
21820
- className: chunkYF6JD4DO_js.cn(
21809
+ className: chunkLXUMBK2O_js.cn(
21821
21810
  "rounded border bg-background/60 p-1.5",
21822
21811
  isChild ? "border-border/60 ml-4" : "border-border"
21823
21812
  ),
@@ -21832,7 +21821,7 @@ function SmartArtNodeRow({
21832
21821
  "data-testid": "smartart-node-text",
21833
21822
  disabled: !canEdit,
21834
21823
  "aria-label": label,
21835
- className: chunkYF6JD4DO_js.cn(INPUT, "flex-1 text-[11px] py-0.5"),
21824
+ className: chunkLXUMBK2O_js.cn(INPUT, "flex-1 text-[11px] py-0.5"),
21836
21825
  value: text,
21837
21826
  onChange: (e) => onChangeText(nodeId, e.target.value),
21838
21827
  onKeyDown: (e) => onKeyDown(e, nodeId),
@@ -21881,7 +21870,7 @@ function SmartArtNodeRow({
21881
21870
  {
21882
21871
  type: "button",
21883
21872
  disabled: !canEdit || removeDisabled,
21884
- className: chunkYF6JD4DO_js.cn(MINI_BTN, "hover:text-red-400"),
21873
+ className: chunkLXUMBK2O_js.cn(MINI_BTN, "hover:text-red-400"),
21885
21874
  onClick: () => onRemove(nodeId),
21886
21875
  "aria-label": `Remove ${label}`,
21887
21876
  title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
@@ -21936,10 +21925,10 @@ function SmartArtPropertiesPanel({
21936
21925
  if (focusId) {
21937
21926
  pendingFocusId.current = focusId;
21938
21927
  }
21939
- const reflowed = box ? chunkP3T4E6JQ_js.rebuildDrawingShapesIfCleared(
21928
+ const reflowed = box ? chunkBXACB3BG_js.rebuildDrawingShapesIfCleared(
21940
21929
  newData,
21941
21930
  newData.layout,
21942
- chunkYF6JD4DO_js.resolveSmartArtDataPalette(newData),
21931
+ chunkLXUMBK2O_js.resolveSmartArtDataPalette(newData),
21943
21932
  newData.style ?? "flat",
21944
21933
  "inspector",
21945
21934
  box
@@ -22048,7 +22037,7 @@ function SmartArtPropertiesPanel({
22048
22037
  disabled: !canEdit,
22049
22038
  "data-testid": "smartart-color-scheme",
22050
22039
  "aria-label": t("pptx.smartart.colorScheme"),
22051
- className: chunkYF6JD4DO_js.cn(INPUT, "w-full"),
22040
+ className: chunkLXUMBK2O_js.cn(INPUT, "w-full"),
22052
22041
  value: smartArtData.colorScheme ?? "colorful1",
22053
22042
  onChange: (e) => updateSmartArt({ colorScheme: e.target.value }),
22054
22043
  children: COLOR_SCHEMES.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: cs }, cs))
@@ -22063,7 +22052,7 @@ function SmartArtPropertiesPanel({
22063
22052
  type: "button",
22064
22053
  disabled: !canEdit,
22065
22054
  "aria-pressed": (smartArtData.style ?? "flat") === s,
22066
- className: chunkYF6JD4DO_js.cn(
22055
+ className: chunkLXUMBK2O_js.cn(
22067
22056
  "flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
22068
22057
  (smartArtData.style ?? "flat") === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
22069
22058
  ),
@@ -22173,15 +22162,15 @@ function TableCellAdvancedFill({
22173
22162
  };
22174
22163
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
22175
22164
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
22176
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.LBL, children: t("pptx.table.fillMode") }),
22165
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.fillMode") }),
22177
22166
  /* @__PURE__ */ jsxRuntime.jsx(
22178
22167
  "select",
22179
22168
  {
22180
22169
  disabled: !canEdit,
22181
- className: chunkP3T4E6JQ_js.SEL,
22170
+ className: chunkBXACB3BG_js.SEL,
22182
22171
  value: fillMode,
22183
22172
  onChange: (e) => handleFillModeChange(e.target.value),
22184
- children: chunkP3T4E6JQ_js.FILL_MODE_OPTIONS.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt.value ?? "", children: t(opt.i18nKey) }, opt.value))
22173
+ children: chunkBXACB3BG_js.FILL_MODE_OPTIONS.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt.value ?? "", children: t(opt.i18nKey) }, opt.value))
22185
22174
  }
22186
22175
  )
22187
22176
  ] }),
@@ -22202,20 +22191,20 @@ function TableCellAdvancedFill({
22202
22191
  }
22203
22192
  ),
22204
22193
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
22205
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.SECTION_HEADING, children: t("pptx.table.margins") }),
22194
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.SECTION_HEADING, children: t("pptx.table.margins") }),
22206
22195
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-1.5", children: [
22207
22196
  ["marginTop", "pptx.table.marginTop"],
22208
22197
  ["marginBottom", "pptx.table.marginBottom"],
22209
22198
  ["marginLeft", "pptx.table.marginLeft"],
22210
22199
  ["marginRight", "pptx.table.marginRight"]
22211
22200
  ].map(([key, i18nKey]) => /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
22212
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.LBL, children: t(i18nKey) }),
22201
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t(i18nKey) }),
22213
22202
  /* @__PURE__ */ jsxRuntime.jsx(
22214
22203
  "input",
22215
22204
  {
22216
22205
  type: "number",
22217
22206
  disabled: !canEdit,
22218
- className: chunkP3T4E6JQ_js.NUM,
22207
+ className: chunkBXACB3BG_js.NUM,
22219
22208
  min: 0,
22220
22209
  max: 200,
22221
22210
  value: cellStyle[key] ?? 0,
@@ -22248,28 +22237,28 @@ function GradientControls({
22248
22237
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
22249
22238
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5", children: [
22250
22239
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
22251
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.LBL, children: t("pptx.table.gradientType") }),
22240
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.gradientType") }),
22252
22241
  /* @__PURE__ */ jsxRuntime.jsx(
22253
22242
  "select",
22254
22243
  {
22255
22244
  disabled: !canEdit,
22256
- className: chunkP3T4E6JQ_js.SEL,
22245
+ className: chunkBXACB3BG_js.SEL,
22257
22246
  value: gradType,
22258
22247
  onChange: (e) => onUpdateCellStyle({
22259
22248
  gradientFillType: e.target.value
22260
22249
  }),
22261
- children: chunkP3T4E6JQ_js.GRADIENT_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
22250
+ children: chunkBXACB3BG_js.GRADIENT_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
22262
22251
  }
22263
22252
  )
22264
22253
  ] }),
22265
22254
  gradType === "linear" && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
22266
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.LBL, children: t("pptx.table.gradientAngle") }),
22255
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.gradientAngle") }),
22267
22256
  /* @__PURE__ */ jsxRuntime.jsx(
22268
22257
  "input",
22269
22258
  {
22270
22259
  type: "number",
22271
22260
  disabled: !canEdit,
22272
- className: chunkP3T4E6JQ_js.NUM,
22261
+ className: chunkBXACB3BG_js.NUM,
22273
22262
  min: 0,
22274
22263
  max: 360,
22275
22264
  value: cellStyle.gradientFillAngle ?? 90,
@@ -22280,7 +22269,7 @@ function GradientControls({
22280
22269
  )
22281
22270
  ] })
22282
22271
  ] }),
22283
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.LBL, children: t("pptx.table.gradientStops") }),
22272
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.gradientStops") }),
22284
22273
  stops.map((stop, idx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
22285
22274
  /* @__PURE__ */ jsxRuntime.jsx(
22286
22275
  "input",
@@ -22297,7 +22286,7 @@ function GradientControls({
22297
22286
  {
22298
22287
  type: "number",
22299
22288
  disabled: !canEdit,
22300
- className: chunkP3T4E6JQ_js.NUM,
22289
+ className: chunkBXACB3BG_js.NUM,
22301
22290
  min: 0,
22302
22291
  max: 100,
22303
22292
  value: Math.round(stop.position),
@@ -22328,23 +22317,23 @@ function PatternControls({
22328
22317
  const { t } = reactI18next.useTranslation();
22329
22318
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
22330
22319
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
22331
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.LBL, children: t("pptx.table.patternPreset") }),
22320
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.patternPreset") }),
22332
22321
  /* @__PURE__ */ jsxRuntime.jsx(
22333
22322
  "select",
22334
22323
  {
22335
22324
  disabled: !canEdit,
22336
- className: chunkP3T4E6JQ_js.SEL,
22325
+ className: chunkBXACB3BG_js.SEL,
22337
22326
  value: cellStyle.patternFillPreset ?? "ltDnDiag",
22338
22327
  onChange: (e) => onUpdateCellStyle({
22339
22328
  patternFillPreset: e.target.value
22340
22329
  }),
22341
- children: chunkP3T4E6JQ_js.PATTERN_OPTIONS.map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p, children: p }, p))
22330
+ children: chunkBXACB3BG_js.PATTERN_OPTIONS.map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p, children: p }, p))
22342
22331
  }
22343
22332
  )
22344
22333
  ] }),
22345
22334
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5", children: [
22346
22335
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
22347
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.LBL, children: t("pptx.table.patternForeground") }),
22336
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.patternForeground") }),
22348
22337
  /* @__PURE__ */ jsxRuntime.jsx(
22349
22338
  "input",
22350
22339
  {
@@ -22359,7 +22348,7 @@ function PatternControls({
22359
22348
  )
22360
22349
  ] }),
22361
22350
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
22362
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.LBL, children: t("pptx.table.patternBackground") }),
22351
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.patternBackground") }),
22363
22352
  /* @__PURE__ */ jsxRuntime.jsx(
22364
22353
  "input",
22365
22354
  {
@@ -22431,7 +22420,7 @@ function TableCellFormattingPanel({
22431
22420
  DebouncedColorInput,
22432
22421
  {
22433
22422
  disabled: !canEdit,
22434
- value: chunkP3T4E6JQ_js.normalizeHexColor(cs.color, "#000000"),
22423
+ value: chunkBXACB3BG_js.normalizeHexColor(cs.color, "#000000"),
22435
22424
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
22436
22425
  onCommit: (hex) => updateCellStyle({ color: hex })
22437
22426
  }
@@ -22443,7 +22432,7 @@ function TableCellFormattingPanel({
22443
22432
  DebouncedColorInput,
22444
22433
  {
22445
22434
  disabled: !canEdit,
22446
- value: chunkP3T4E6JQ_js.normalizeHexColor(cs.backgroundColor, "#ffffff"),
22435
+ value: chunkBXACB3BG_js.normalizeHexColor(cs.backgroundColor, "#ffffff"),
22447
22436
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
22448
22437
  onCommit: (hex) => updateCellStyle({ backgroundColor: hex })
22449
22438
  }
@@ -22467,7 +22456,7 @@ function TableCellFormattingPanel({
22467
22456
  {
22468
22457
  type: "button",
22469
22458
  disabled: !canEdit,
22470
- className: chunkYF6JD4DO_js.cn(
22459
+ className: chunkLXUMBK2O_js.cn(
22471
22460
  "px-2 py-1 rounded text-[11px] transition-colors",
22472
22461
  cls,
22473
22462
  cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
@@ -22486,7 +22475,7 @@ function TableCellFormattingPanel({
22486
22475
  {
22487
22476
  type: "button",
22488
22477
  disabled: !canEdit,
22489
- className: chunkYF6JD4DO_js.cn(
22478
+ className: chunkLXUMBK2O_js.cn(
22490
22479
  "px-2 py-1 rounded text-[11px] transition-colors",
22491
22480
  cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
22492
22481
  ),
@@ -22504,7 +22493,7 @@ function TableCellFormattingPanel({
22504
22493
  {
22505
22494
  type: "button",
22506
22495
  disabled: !canEdit,
22507
- className: chunkYF6JD4DO_js.cn(
22496
+ className: chunkLXUMBK2O_js.cn(
22508
22497
  "px-2 py-1 rounded text-[11px] transition-colors",
22509
22498
  cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
22510
22499
  ),
@@ -22527,7 +22516,7 @@ function TableCellFormattingPanel({
22527
22516
  DebouncedColorInput,
22528
22517
  {
22529
22518
  disabled: !canEdit,
22530
- value: chunkP3T4E6JQ_js.normalizeHexColor(cs[colorKey], "#374151"),
22519
+ value: chunkBXACB3BG_js.normalizeHexColor(cs[colorKey], "#374151"),
22531
22520
  className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
22532
22521
  onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
22533
22522
  }
@@ -22537,7 +22526,7 @@ function TableCellFormattingPanel({
22537
22526
  {
22538
22527
  type: "number",
22539
22528
  disabled: !canEdit,
22540
- className: chunkYF6JD4DO_js.cn(INPUT, "w-14"),
22529
+ className: chunkLXUMBK2O_js.cn(INPUT, "w-14"),
22541
22530
  min: 0,
22542
22531
  max: 10,
22543
22532
  value: cs[widthKey] ?? 1,
@@ -22553,9 +22542,9 @@ function TableCellFormattingPanel({
22553
22542
  {
22554
22543
  type: "button",
22555
22544
  disabled: !canEdit,
22556
- className: chunkYF6JD4DO_js.cn(BTN, "text-center"),
22545
+ className: chunkLXUMBK2O_js.cn(BTN, "text-center"),
22557
22546
  onClick: () => {
22558
- const newRows = chunkP3T4E6JQ_js.computeMergeCellRight(td, rowIndex, columnIndex);
22547
+ const newRows = chunkBXACB3BG_js.computeMergeCellRight(td, rowIndex, columnIndex);
22559
22548
  if (newRows) {
22560
22549
  onUpdateTableData({ rows: newRows });
22561
22550
  }
@@ -22568,9 +22557,9 @@ function TableCellFormattingPanel({
22568
22557
  {
22569
22558
  type: "button",
22570
22559
  disabled: !canEdit,
22571
- className: chunkYF6JD4DO_js.cn(BTN, "text-center"),
22560
+ className: chunkLXUMBK2O_js.cn(BTN, "text-center"),
22572
22561
  onClick: () => {
22573
- const newRows = chunkP3T4E6JQ_js.computeMergeCellDown(td, rowIndex, columnIndex);
22562
+ const newRows = chunkBXACB3BG_js.computeMergeCellDown(td, rowIndex, columnIndex);
22574
22563
  if (newRows) {
22575
22564
  onUpdateTableData({ rows: newRows });
22576
22565
  }
@@ -22583,9 +22572,9 @@ function TableCellFormattingPanel({
22583
22572
  {
22584
22573
  type: "button",
22585
22574
  disabled: !canEdit,
22586
- className: chunkYF6JD4DO_js.cn(BTN, "text-center"),
22575
+ className: chunkLXUMBK2O_js.cn(BTN, "text-center"),
22587
22576
  onClick: () => {
22588
- const newRows = chunkP3T4E6JQ_js.computeSplitCell(td, rowIndex, columnIndex);
22577
+ const newRows = chunkBXACB3BG_js.computeSplitCell(td, rowIndex, columnIndex);
22589
22578
  if (newRows) {
22590
22579
  onUpdateTableData({ rows: newRows });
22591
22580
  }
@@ -22676,7 +22665,7 @@ function TablePropertiesPanel({
22676
22665
  ] }),
22677
22666
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
22678
22667
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.table.stylePresets") }),
22679
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkP3T4E6JQ_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
22668
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkBXACB3BG_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
22680
22669
  "button",
22681
22670
  {
22682
22671
  type: "button",
@@ -22991,7 +22980,7 @@ function InspectorCommentRow({
22991
22980
  return /* @__PURE__ */ jsxRuntime.jsxs(
22992
22981
  "div",
22993
22982
  {
22994
- className: chunkYF6JD4DO_js.cn(
22983
+ className: chunkLXUMBK2O_js.cn(
22995
22984
  "rounded border border-border bg-card p-2",
22996
22985
  depth > 0 && "ml-3 border-l-2 border-l-primary/40"
22997
22986
  ),
@@ -23004,7 +22993,7 @@ function InspectorCommentRow({
23004
22993
  t("pptx.comments.resolved")
23005
22994
  ] })
23006
22995
  ] }),
23007
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkP3T4E6JQ_js.formatCommentTimestamp(comment.createdAt) })
22996
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkBXACB3BG_js.formatCommentTimestamp(comment.createdAt) })
23008
22997
  ] }),
23009
22998
  comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
23010
22999
  "button",
@@ -23012,12 +23001,12 @@ function InspectorCommentRow({
23012
23001
  type: "button",
23013
23002
  className: "mt-1 inline-flex items-center gap-1 rounded bg-primary/20 px-1.5 py-0.5 text-[10px] text-primary hover:bg-primary/30 transition-colors",
23014
23003
  title: t("pptx.comments.commentingOn", {
23015
- element: chunkP3T4E6JQ_js.getElementLabel(targetElement)
23004
+ element: chunkBXACB3BG_js.getElementLabel(targetElement)
23016
23005
  }),
23017
23006
  onClick: () => onSelectElement(targetElement.id),
23018
23007
  children: [
23019
23008
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
23020
- chunkP3T4E6JQ_js.getElementLabel(targetElement)
23009
+ chunkBXACB3BG_js.getElementLabel(targetElement)
23021
23010
  ]
23022
23011
  }
23023
23012
  ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1 inline-flex items-center gap-1 rounded bg-muted/60 px-1.5 py-0.5 text-[10px] text-muted-foreground", children: t("pptx.comments.deletedElement") })),
@@ -23079,7 +23068,7 @@ function InspectorCommentRow({
23079
23068
  "button",
23080
23069
  {
23081
23070
  type: "button",
23082
- className: chunkYF6JD4DO_js.cn(
23071
+ className: chunkLXUMBK2O_js.cn(
23083
23072
  "inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
23084
23073
  comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
23085
23074
  ),
@@ -23246,7 +23235,7 @@ function InspectorCommentsSection({
23246
23235
  selectedElement && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1 rounded bg-primary/20 px-1.5 py-0.5 text-[10px] text-primary", children: [
23247
23236
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
23248
23237
  t("pptx.comments.commentingOn", {
23249
- element: chunkP3T4E6JQ_js.getElementLabel(selectedElement)
23238
+ element: chunkBXACB3BG_js.getElementLabel(selectedElement)
23250
23239
  })
23251
23240
  ] }),
23252
23241
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -23254,7 +23243,7 @@ function InspectorCommentsSection({
23254
23243
  {
23255
23244
  rows: 2,
23256
23245
  placeholder: selectedElement ? t("pptx.comments.addOnElement", {
23257
- element: chunkP3T4E6JQ_js.getElementLabel(selectedElement)
23246
+ element: chunkBXACB3BG_js.getElementLabel(selectedElement)
23258
23247
  }) : t("pptx.comments.addPlaceholder"),
23259
23248
  value: commentDraft,
23260
23249
  className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
@@ -23273,7 +23262,7 @@ function InspectorCommentsSection({
23273
23262
  type: "button",
23274
23263
  onClick: onAddComment,
23275
23264
  disabled: !commentDraft.trim(),
23276
- className: chunkYF6JD4DO_js.cn(
23265
+ className: chunkLXUMBK2O_js.cn(
23277
23266
  "w-full inline-flex items-center justify-center gap-1 rounded px-2 py-1 text-[11px] font-medium transition-colors",
23278
23267
  commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
23279
23268
  ),
@@ -23298,7 +23287,7 @@ function InspectorPaneHeader({
23298
23287
  {
23299
23288
  type: "button",
23300
23289
  title: label,
23301
- className: chunkYF6JD4DO_js.cn(
23290
+ className: chunkLXUMBK2O_js.cn(
23302
23291
  "flex items-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
23303
23292
  activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
23304
23293
  ),
@@ -23407,7 +23396,7 @@ function CustomPropertiesBlock({
23407
23396
  "button",
23408
23397
  {
23409
23398
  type: "button",
23410
- className: chunkYF6JD4DO_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
23399
+ className: chunkLXUMBK2O_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
23411
23400
  onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
23412
23401
  children: "\xD7"
23413
23402
  }
@@ -23542,7 +23531,7 @@ function PresentationSettingsCard({
23542
23531
  "select",
23543
23532
  {
23544
23533
  disabled: !canEdit,
23545
- className: chunkYF6JD4DO_js.cn(INPUT, "w-28"),
23534
+ className: chunkLXUMBK2O_js.cn(INPUT, "w-28"),
23546
23535
  value: presentationProperties.showType ?? "presented",
23547
23536
  onChange: (e) => onUpdate({
23548
23537
  showType: e.target.value
@@ -23600,7 +23589,7 @@ function PresentationSettingsCard({
23600
23589
  min: 1,
23601
23590
  max: 16,
23602
23591
  disabled: !canEdit,
23603
- className: chunkYF6JD4DO_js.cn(INPUT, "w-20"),
23592
+ className: chunkLXUMBK2O_js.cn(INPUT, "w-20"),
23604
23593
  value: presentationProperties.printSlidesPerPage ?? 1,
23605
23594
  onChange: (e) => onUpdate({ printSlidesPerPage: Number(e.target.value) })
23606
23595
  }
@@ -23897,7 +23886,7 @@ function TagsSection({
23897
23886
  "button",
23898
23887
  {
23899
23888
  type: "button",
23900
- className: chunkYF6JD4DO_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
23889
+ className: chunkLXUMBK2O_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
23901
23890
  title: t("pptx.tags.deleteTag"),
23902
23891
  onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
23903
23892
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
@@ -23997,7 +23986,7 @@ function PresentationPropertiesPanel({
23997
23986
  canEdit
23998
23987
  }
23999
23988
  ),
24000
- activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkYF6JD4DO_js.cn(CARD, "space-y-1"), children: [
23989
+ activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkLXUMBK2O_js.cn(CARD, "space-y-1"), children: [
24001
23990
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: "Slide" }),
24002
23991
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
24003
23992
  activeSlide.elements?.length ?? 0,
@@ -24018,14 +24007,14 @@ function SlideBackgroundPanel({
24018
24007
  const { t } = reactI18next.useTranslation();
24019
24008
  const bgImageInputRef = React14.useRef(null);
24020
24009
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
24021
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkYF6JD4DO_js.cn(CARD, "space-y-2"), children: [
24010
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkLXUMBK2O_js.cn(CARD, "space-y-2"), children: [
24022
24011
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: "Background" }),
24023
24012
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
24024
24013
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: "Colour" }),
24025
24014
  /* @__PURE__ */ jsxRuntime.jsx(
24026
24015
  DebouncedColorInput,
24027
24016
  {
24028
- value: chunkP3T4E6JQ_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
24017
+ value: chunkBXACB3BG_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
24029
24018
  disabled: !canEdit,
24030
24019
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
24031
24020
  onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
@@ -24064,7 +24053,7 @@ function SlideBackgroundPanel({
24064
24053
  "button",
24065
24054
  {
24066
24055
  type: "button",
24067
- className: chunkYF6JD4DO_js.cn(BTN, "flex-1 text-center"),
24056
+ className: chunkLXUMBK2O_js.cn(BTN, "flex-1 text-center"),
24068
24057
  disabled: !canEdit,
24069
24058
  onClick: () => bgImageInputRef.current?.click(),
24070
24059
  children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
@@ -24097,7 +24086,7 @@ function SlideBackgroundPanel({
24097
24086
  "button",
24098
24087
  {
24099
24088
  type: "button",
24100
- className: chunkYF6JD4DO_js.cn(BTN, "w-full text-center text-red-400 hover:text-red-300"),
24089
+ className: chunkLXUMBK2O_js.cn(BTN, "w-full text-center text-red-400 hover:text-red-300"),
24101
24090
  disabled: !canEdit,
24102
24091
  onClick: () => onUpdateSlide({
24103
24092
  backgroundColor: void 0,
@@ -24128,7 +24117,7 @@ function TemplateBackgroundCard({
24128
24117
  onGetTemplateBackgroundColor
24129
24118
  }) {
24130
24119
  const { t } = reactI18next.useTranslation();
24131
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkYF6JD4DO_js.cn(CARD, "space-y-2"), children: [
24120
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkLXUMBK2O_js.cn(CARD, "space-y-2"), children: [
24132
24121
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
24133
24122
  activeSlide.layoutPath && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
24134
24123
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -24142,7 +24131,7 @@ function TemplateBackgroundCard({
24142
24131
  /* @__PURE__ */ jsxRuntime.jsx(
24143
24132
  DebouncedColorInput,
24144
24133
  {
24145
- value: chunkP3T4E6JQ_js.normalizeHexColor(
24134
+ value: chunkBXACB3BG_js.normalizeHexColor(
24146
24135
  onGetTemplateBackgroundColor(activeSlide.layoutPath),
24147
24136
  "#ffffff"
24148
24137
  ),
@@ -24172,7 +24161,7 @@ function TemplateBackgroundCard({
24172
24161
  /* @__PURE__ */ jsxRuntime.jsx(
24173
24162
  DebouncedColorInput,
24174
24163
  {
24175
- value: chunkP3T4E6JQ_js.normalizeHexColor(onGetTemplateBackgroundColor(master.path), "#ffffff"),
24164
+ value: chunkBXACB3BG_js.normalizeHexColor(onGetTemplateBackgroundColor(master.path), "#ffffff"),
24176
24165
  disabled: !canEdit,
24177
24166
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
24178
24167
  onCommit: (hex) => onSetTemplateBackground(master.path, hex)
@@ -24275,7 +24264,7 @@ function InspectorPane(props) {
24275
24264
  } = props;
24276
24265
  const hasSelection = selectedElement !== null;
24277
24266
  const { t } = reactI18next.useTranslation();
24278
- const { dragY, handlers: dragHandlers } = chunkYF6JD4DO_js.useSheetDismissDrag(onClose);
24267
+ const { dragY, handlers: dragHandlers } = chunkLXUMBK2O_js.useSheetDismissDrag(onClose);
24279
24268
  const {
24280
24269
  animationPanelHeight,
24281
24270
  effectiveThemeOptions,
@@ -24296,7 +24285,7 @@ function InspectorPane(props) {
24296
24285
  /* @__PURE__ */ jsxRuntime.jsxs(
24297
24286
  "div",
24298
24287
  {
24299
- className: chunkYF6JD4DO_js.cn(
24288
+ className: chunkLXUMBK2O_js.cn(
24300
24289
  // Shared styles
24301
24290
  "bg-background flex flex-col text-xs text-foreground shadow-xl",
24302
24291
  // Mobile: absolute bottom sheet overlay sized via dvh so it
@@ -24334,7 +24323,7 @@ function InspectorPane(props) {
24334
24323
  ),
24335
24324
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 overflow-y-auto p-3 space-y-3", children: [
24336
24325
  activeTab === "elements" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
24337
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkYF6JD4DO_js.cn(HEADING, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24326
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkLXUMBK2O_js.cn(HEADING, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24338
24327
  activeSlide ? [...activeSlide.elements || []].reverse().map((el, ri) => {
24339
24328
  const idx = (activeSlide.elements || []).length - 1 - ri;
24340
24329
  const sel = selectedElement?.id === el.id || selectedElementIds.includes(el.id);
@@ -24343,7 +24332,7 @@ function InspectorPane(props) {
24343
24332
  "div",
24344
24333
  {
24345
24334
  title: `${el.type} \u2014 ${el.id}`,
24346
- className: chunkYF6JD4DO_js.cn(
24335
+ className: chunkLXUMBK2O_js.cn(
24347
24336
  "flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
24348
24337
  sel ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
24349
24338
  ),
@@ -24751,7 +24740,7 @@ function PresentationToolbar({
24751
24740
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuChevronLeft, { size: 18 })
24752
24741
  }
24753
24742
  ),
24754
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-mono tabular-nums text-white/80 px-1.5 select-none min-w-[48px] text-center", children: chunkP3T4E6JQ_js.formatSlideCounter(currentSlideIndex, totalSlides) }),
24743
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-mono tabular-nums text-white/80 px-1.5 select-none min-w-[48px] text-center", children: chunkBXACB3BG_js.formatSlideCounter(currentSlideIndex, totalSlides) }),
24755
24744
  /* @__PURE__ */ jsxRuntime.jsx(
24756
24745
  "button",
24757
24746
  {
@@ -24772,7 +24761,7 @@ function PresentationToolbar({
24772
24761
  title: t("pptx.presenter.elapsed"),
24773
24762
  children: [
24774
24763
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuTimer, { size: 14 }),
24775
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: chunkP3T4E6JQ_js.formatElapsed(elapsed) })
24764
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: chunkBXACB3BG_js.formatElapsed(elapsed) })
24776
24765
  ]
24777
24766
  }
24778
24767
  ),
@@ -24946,7 +24935,7 @@ function PresentationTouchControls({
24946
24935
  onEndPresentation
24947
24936
  }) {
24948
24937
  const { t } = reactI18next.useTranslation();
24949
- const { isTouchDevice } = chunkYF6JD4DO_js.useIsMobile();
24938
+ const { isTouchDevice } = chunkLXUMBK2O_js.useIsMobile();
24950
24939
  if (!isTouchDevice) {
24951
24940
  return null;
24952
24941
  }
@@ -25030,7 +25019,7 @@ function SlideLayer({ slide, templateElements, canvasSize }) {
25030
25019
  style: {
25031
25020
  width: safeWidth,
25032
25021
  height: safeHeight,
25033
- backgroundColor: slide.backgroundColor ? chunkP3T4E6JQ_js.normalizeHexColor(slide.backgroundColor, "#ffffff") : "#ffffff",
25022
+ backgroundColor: slide.backgroundColor ? chunkBXACB3BG_js.normalizeHexColor(slide.backgroundColor, "#ffffff") : "#ffffff",
25034
25023
  backgroundImage: slide.backgroundImage ? `url(${slide.backgroundImage})` : slide.backgroundGradient ? slide.backgroundGradient : void 0,
25035
25024
  backgroundSize: slide.backgroundImage ? "cover" : void 0,
25036
25025
  backgroundPosition: slide.backgroundImage ? "center" : void 0
@@ -25073,7 +25062,7 @@ function PresentationTransitionOverlay({
25073
25062
  };
25074
25063
  }, [durationMs, onComplete]);
25075
25064
  const animations = React14.useMemo(
25076
- () => chunkP3T4E6JQ_js.getSlideTransitionAnimations(
25065
+ () => chunkBXACB3BG_js.getSlideTransitionAnimations(
25077
25066
  transition.type,
25078
25067
  durationMs,
25079
25068
  transition.direction,
@@ -25099,7 +25088,7 @@ function PresentationTransitionOverlay({
25099
25088
  className: "pptx-react-transition-overlay absolute inset-0 pointer-events-none overflow-hidden",
25100
25089
  style: { zIndex: outgoingZIndex },
25101
25090
  children: [
25102
- /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkP3T4E6JQ_js.SLIDE_TRANSITION_KEYFRAMES }),
25091
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkBXACB3BG_js.SLIDE_TRANSITION_KEYFRAMES }),
25103
25092
  /* @__PURE__ */ jsxRuntime.jsx(
25104
25093
  "div",
25105
25094
  {
@@ -25199,8 +25188,8 @@ function NotesPagePreview({
25199
25188
  maxPages = 3
25200
25189
  }) {
25201
25190
  const { t } = reactI18next.useTranslation();
25202
- const pages = React14.useMemo(() => chunkP3T4E6JQ_js.computeAllNotesPages(slideIndices), [slideIndices]);
25203
- const printable = React14.useMemo(() => chunkP3T4E6JQ_js.getNotesPrintableArea(), []);
25191
+ const pages = React14.useMemo(() => chunkBXACB3BG_js.computeAllNotesPages(slideIndices), [slideIndices]);
25192
+ const printable = React14.useMemo(() => chunkBXACB3BG_js.getNotesPrintableArea(), []);
25204
25193
  const visiblePages = pages.slice(0, maxPages);
25205
25194
  const scaledW = printable.width * PREVIEW_SCALE;
25206
25195
  const scaledH = printable.height * PREVIEW_SCALE;
@@ -25288,13 +25277,13 @@ function PrintPreview({
25288
25277
  }) {
25289
25278
  const { t } = reactI18next.useTranslation();
25290
25279
  const pages = React14.useMemo(
25291
- () => chunkP3T4E6JQ_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
25280
+ () => chunkBXACB3BG_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
25292
25281
  [slideIndices, slidesPerPage, orientation]
25293
25282
  );
25294
- const printable = React14.useMemo(() => chunkP3T4E6JQ_js.getPrintableArea(orientation), [orientation]);
25283
+ const printable = React14.useMemo(() => chunkBXACB3BG_js.getPrintableArea(orientation), [orientation]);
25295
25284
  const visiblePages = pages.slice(0, maxPages);
25296
25285
  const isThreePerPage = slidesPerPage === 3;
25297
- const noteLineCount = chunkP3T4E6JQ_js.generateNoteLineCount();
25286
+ const noteLineCount = chunkBXACB3BG_js.generateNoteLineCount();
25298
25287
  const scaledW = printable.width * PREVIEW_SCALE2;
25299
25288
  const scaledH = printable.height * PREVIEW_SCALE2;
25300
25289
  const noteAreaFraction = 0.5;
@@ -25459,7 +25448,7 @@ function PrintSettingsPanel({
25459
25448
  ] }),
25460
25449
  printWhat === "handouts" && /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
25461
25450
  /* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-xs font-medium text-muted-foreground mb-2 uppercase tracking-wide", children: t("pptx.print.slidesPerPage") }),
25462
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1.5 flex-wrap", children: chunkP3T4E6JQ_js.HANDOUT_OPTIONS.map((n) => /* @__PURE__ */ jsxRuntime.jsx(
25451
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1.5 flex-wrap", children: chunkBXACB3BG_js.HANDOUT_OPTIONS.map((n) => /* @__PURE__ */ jsxRuntime.jsx(
25463
25452
  "button",
25464
25453
  {
25465
25454
  type: "button",
@@ -25645,13 +25634,13 @@ function PrintDialog({
25645
25634
  defaultFrameSlides
25646
25635
  }) {
25647
25636
  const { t } = reactI18next.useTranslation();
25648
- const { panelStyle, handlers: dragHandlers } = chunkYF6JD4DO_js.useModalDismissDrag(onClose);
25637
+ const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onClose);
25649
25638
  const [printWhat, setPrintWhat] = React14.useState("slides");
25650
25639
  const [orientation, setOrientation] = React14.useState("landscape");
25651
25640
  const [colorMode, setColorMode] = React14.useState("color");
25652
25641
  const [frameSlides, setFrameSlides] = React14.useState(defaultFrameSlides ?? false);
25653
25642
  const [slidesPerPage, setSlidesPerPage] = React14.useState(
25654
- chunkP3T4E6JQ_js.HANDOUT_OPTIONS.includes(defaultSlidesPerPage) ? defaultSlidesPerPage : 6
25643
+ chunkBXACB3BG_js.HANDOUT_OPTIONS.includes(defaultSlidesPerPage) ? defaultSlidesPerPage : 6
25655
25644
  );
25656
25645
  const [slideRange, setSlideRange] = React14.useState("all");
25657
25646
  const [customFrom, setCustomFrom] = React14.useState(1);
@@ -26174,19 +26163,19 @@ function BroadcastDialog({
26174
26163
  const [serverUrl, setServerUrl] = React14.useState("");
26175
26164
  const [copied, setCopied] = React14.useState(false);
26176
26165
  const dialogRef = React14.useRef(null);
26177
- const { panelStyle, handlers: dragHandlers } = chunkYF6JD4DO_js.useModalDismissDrag(onClose);
26166
+ const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onClose);
26178
26167
  useModalFocus(open, dialogRef, onClose);
26179
26168
  React14.useEffect(() => {
26180
26169
  if (open && !isBroadcasting) {
26181
- const broadcastRoom = defaultRoomId ? `broadcast-${defaultRoomId}` : chunkP3T4E6JQ_js.generateBroadcastRoomId();
26170
+ const broadcastRoom = defaultRoomId ? `broadcast-${defaultRoomId}` : chunkBXACB3BG_js.generateBroadcastRoomId();
26182
26171
  setRoomId(broadcastRoom);
26183
26172
  setUserName(defaultUserName ?? "");
26184
- setServerUrl(defaultServerUrl ?? chunkP3T4E6JQ_js.DEFAULT_BROADCAST_SERVER_URL);
26173
+ setServerUrl(defaultServerUrl ?? chunkBXACB3BG_js.DEFAULT_BROADCAST_SERVER_URL);
26185
26174
  }
26186
26175
  }, [open, isBroadcasting, defaultRoomId, defaultUserName, defaultServerUrl]);
26187
26176
  const activeRoomId = isBroadcasting ? collab.config.roomId : roomId;
26188
26177
  const activeServerUrl = isBroadcasting ? collab.config.serverUrl : serverUrl;
26189
- const broadcastUrl = typeof window !== "undefined" ? chunkP3T4E6JQ_js.buildBroadcastViewerUrl(activeRoomId, activeServerUrl, window.location) : activeRoomId;
26178
+ const broadcastUrl = typeof window !== "undefined" ? chunkBXACB3BG_js.buildBroadcastViewerUrl(activeRoomId, activeServerUrl, window.location) : activeRoomId;
26190
26179
  const handleCopyUrl = React14.useCallback(() => {
26191
26180
  void navigator.clipboard.writeText(broadcastUrl).then(() => {
26192
26181
  setCopied(true);
@@ -26205,7 +26194,7 @@ function BroadcastDialog({
26205
26194
  userName: userName.trim(),
26206
26195
  role: "owner",
26207
26196
  // A blank server broadcasts over the serverless peer-to-peer transport.
26208
- transport: chunkP3T4E6JQ_js.resolveTransportForServerUrl(trimmedServer)
26197
+ transport: chunkBXACB3BG_js.resolveTransportForServerUrl(trimmedServer)
26209
26198
  });
26210
26199
  setTimeout(() => {
26211
26200
  onStartPresenting?.();
@@ -26475,7 +26464,7 @@ function isP2P(config) {
26475
26464
  return config.transport === "webrtc" || !config.serverUrl?.trim();
26476
26465
  }
26477
26466
  function shareUrl(config) {
26478
- return chunkP3T4E6JQ_js.buildCollaborationShareUrl(
26467
+ return chunkBXACB3BG_js.buildCollaborationShareUrl(
26479
26468
  config,
26480
26469
  typeof window === "undefined" ? void 0 : { origin: window.location.origin, pathname: window.location.pathname }
26481
26470
  );
@@ -26711,7 +26700,7 @@ function StartSessionForm({
26711
26700
  ] });
26712
26701
  }
26713
26702
  function shareUrl2(config) {
26714
- return chunkP3T4E6JQ_js.buildCollaborationShareUrl(
26703
+ return chunkBXACB3BG_js.buildCollaborationShareUrl(
26715
26704
  config,
26716
26705
  typeof window === "undefined" ? void 0 : { origin: window.location.origin, pathname: window.location.pathname }
26717
26706
  );
@@ -26737,7 +26726,7 @@ function ShareDialog({
26737
26726
  const [invitation, setInvitation] = React14.useState("");
26738
26727
  const [copied, setCopied] = React14.useState(false);
26739
26728
  const dialogRef = React14.useRef(null);
26740
- const { panelStyle, handlers: dragHandlers } = chunkYF6JD4DO_js.useModalDismissDrag(onClose);
26729
+ const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onClose);
26741
26730
  useModalFocus(open, dialogRef, onClose);
26742
26731
  React14.useEffect(() => {
26743
26732
  if (activeCollaboration) {
@@ -26755,12 +26744,12 @@ function ShareDialog({
26755
26744
  });
26756
26745
  }, [activeCollaboration, roomId, serverUrl]);
26757
26746
  const handleStartSharing = React14.useCallback(() => {
26758
- const config = mode === "join" ? chunkP3T4E6JQ_js.buildJoinCollaborationConfig({ invitation, userName, serverUrl }) : chunkP3T4E6JQ_js.buildCreateCollaborationConfig({ roomId, userName, serverUrl });
26747
+ const config = mode === "join" ? chunkBXACB3BG_js.buildJoinCollaborationConfig({ invitation, userName, serverUrl }) : chunkBXACB3BG_js.buildCreateCollaborationConfig({ roomId, userName, serverUrl });
26759
26748
  if (config) {
26760
26749
  onStartCollaboration?.(config);
26761
26750
  }
26762
26751
  }, [invitation, mode, roomId, userName, serverUrl, onStartCollaboration]);
26763
- const canStart = (mode === "join" ? chunkP3T4E6JQ_js.buildJoinCollaborationConfig({ invitation, userName, serverUrl }) : chunkP3T4E6JQ_js.buildCreateCollaborationConfig({ roomId, userName, serverUrl })) !== null;
26752
+ const canStart = (mode === "join" ? chunkBXACB3BG_js.buildJoinCollaborationConfig({ invitation, userName, serverUrl }) : chunkBXACB3BG_js.buildCreateCollaborationConfig({ roomId, userName, serverUrl })) !== null;
26764
26753
  if (!open) {
26765
26754
  return null;
26766
26755
  }
@@ -27012,12 +27001,12 @@ function HyperlinkEditDialog({
27012
27001
  onCancel
27013
27002
  }) {
27014
27003
  const { t } = reactI18next.useTranslation();
27015
- const { panelStyle, handlers: dragHandlers } = chunkYF6JD4DO_js.useModalDismissDrag(onCancel);
27004
+ const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onCancel);
27016
27005
  const inputRef = React14.useRef(null);
27017
- const detectedType = chunkYF6JD4DO_js.detectTargetType(initialUrl, initialAction);
27018
- const emailParts = chunkYF6JD4DO_js.parseEmailUrl(initialUrl || "");
27019
- const detectedSlide = chunkYF6JD4DO_js.parseSlideFromUrl(initialUrl, initialAction);
27020
- const detectedVerb = initialAction ? chunkYF6JD4DO_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
27006
+ const detectedType = chunkLXUMBK2O_js.detectTargetType(initialUrl, initialAction);
27007
+ const emailParts = chunkLXUMBK2O_js.parseEmailUrl(initialUrl || "");
27008
+ const detectedSlide = chunkLXUMBK2O_js.parseSlideFromUrl(initialUrl, initialAction);
27009
+ const detectedVerb = initialAction ? chunkLXUMBK2O_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
27021
27010
  const [targetType, setTargetType] = React14.useState(detectedType);
27022
27011
  const [url, setUrl] = React14.useState(
27023
27012
  detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
@@ -27048,7 +27037,7 @@ function HyperlinkEditDialog({
27048
27037
  actionVerb
27049
27038
  });
27050
27039
  };
27051
- const tabCls = (active) => chunkYF6JD4DO_js.cn(
27040
+ const tabCls = (active) => chunkLXUMBK2O_js.cn(
27052
27041
  "px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
27053
27042
  active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
27054
27043
  );
@@ -27266,7 +27255,7 @@ function CommentMarkersOverlay({
27266
27255
  onCommentMarkerClick
27267
27256
  }) {
27268
27257
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 pointer-events-none z-[45]", children: comments.map((comment, idx) => {
27269
- const pos = chunkP3T4E6JQ_js.getCommentMarkerPosition(comment, idx, canvasSize.width, canvasSize.height);
27258
+ const pos = chunkBXACB3BG_js.getCommentMarkerPosition(comment, idx, canvasSize.width, canvasSize.height);
27270
27259
  return /* @__PURE__ */ jsxRuntime.jsx(
27271
27260
  "div",
27272
27261
  {
@@ -27318,7 +27307,7 @@ function ConnectorOverlay({
27318
27307
  style: { pointerEvents: connectorDragState ? "auto" : "none" },
27319
27308
  children: [
27320
27309
  activeSlide.elements.filter((el) => el.type !== "connector").map((el) => {
27321
- const sites = chunkP3T4E6JQ_js.getConnectionSites(el.width, el.height);
27310
+ const sites = chunkBXACB3BG_js.getConnectionSites(el.width, el.height);
27322
27311
  return sites.map((site) => /* @__PURE__ */ jsxRuntime.jsx(
27323
27312
  "div",
27324
27313
  {
@@ -27360,7 +27349,7 @@ function ConnectorDragPreview({
27360
27349
  if (!startEl) {
27361
27350
  return null;
27362
27351
  }
27363
- const startSites = chunkP3T4E6JQ_js.getConnectionSites(startEl.width, startEl.height);
27352
+ const startSites = chunkBXACB3BG_js.getConnectionSites(startEl.width, startEl.height);
27364
27353
  const startSite = startSites[connectorDragState.startSiteIndex] ?? startSites[0];
27365
27354
  const sx = startEl.x + startSite.x;
27366
27355
  const sy = startEl.y + startSite.y;
@@ -27438,7 +27427,7 @@ function DrawingOverlaySvg({
27438
27427
  }
27439
27428
  );
27440
27429
  }
27441
- function GridOverlay({ canvasSize, gridSpacingPx = chunkYF6JD4DO_js.GRID_SIZE, visible }) {
27430
+ function GridOverlay({ canvasSize, gridSpacingPx = chunkLXUMBK2O_js.GRID_SIZE, visible }) {
27442
27431
  const spacing = Math.max(gridSpacingPx, 2);
27443
27432
  const patternId = React14.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
27444
27433
  if (!visible) {
@@ -27459,15 +27448,15 @@ function GridOverlay({ canvasSize, gridSpacingPx = chunkYF6JD4DO_js.GRID_SIZE, v
27459
27448
  );
27460
27449
  }
27461
27450
  var HorizontalRuler = React14__default.default.memo(({ ticks, widthPx, highlight }) => {
27462
- return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: widthPx, height: chunkP3T4E6JQ_js.RULER_THICKNESS, className: "block select-none", "aria-hidden": "true", children: [
27463
- /* @__PURE__ */ jsxRuntime.jsx("rect", { width: widthPx, height: chunkP3T4E6JQ_js.RULER_THICKNESS, className: "fill-gray-100 dark:fill-gray-800" }),
27451
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: widthPx, height: chunkBXACB3BG_js.RULER_THICKNESS, className: "block select-none", "aria-hidden": "true", children: [
27452
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { width: widthPx, height: chunkBXACB3BG_js.RULER_THICKNESS, className: "fill-gray-100 dark:fill-gray-800" }),
27464
27453
  /* @__PURE__ */ jsxRuntime.jsx(
27465
27454
  "line",
27466
27455
  {
27467
27456
  x1: 0,
27468
- y1: chunkP3T4E6JQ_js.RULER_THICKNESS - 0.5,
27457
+ y1: chunkBXACB3BG_js.RULER_THICKNESS - 0.5,
27469
27458
  x2: widthPx,
27470
- y2: chunkP3T4E6JQ_js.RULER_THICKNESS - 0.5,
27459
+ y2: chunkBXACB3BG_js.RULER_THICKNESS - 0.5,
27471
27460
  className: "stroke-border",
27472
27461
  strokeWidth: 1
27473
27462
  }
@@ -27478,20 +27467,20 @@ var HorizontalRuler = React14__default.default.memo(({ ticks, widthPx, highlight
27478
27467
  x: highlight.start,
27479
27468
  y: 0,
27480
27469
  width: Math.max(highlight.end - highlight.start, 1),
27481
- height: chunkP3T4E6JQ_js.RULER_THICKNESS,
27470
+ height: chunkBXACB3BG_js.RULER_THICKNESS,
27482
27471
  className: "fill-primary/20"
27483
27472
  }
27484
27473
  ),
27485
27474
  ticks.map((tick, i) => {
27486
- const tickHeight = tick.isMajor ? chunkP3T4E6JQ_js.RULER_THICKNESS * 0.6 : chunkP3T4E6JQ_js.RULER_THICKNESS * 0.3;
27475
+ const tickHeight = tick.isMajor ? chunkBXACB3BG_js.RULER_THICKNESS * 0.6 : chunkBXACB3BG_js.RULER_THICKNESS * 0.3;
27487
27476
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
27488
27477
  /* @__PURE__ */ jsxRuntime.jsx(
27489
27478
  "line",
27490
27479
  {
27491
27480
  x1: tick.position,
27492
- y1: chunkP3T4E6JQ_js.RULER_THICKNESS,
27481
+ y1: chunkBXACB3BG_js.RULER_THICKNESS,
27493
27482
  x2: tick.position,
27494
- y2: chunkP3T4E6JQ_js.RULER_THICKNESS - tickHeight,
27483
+ y2: chunkBXACB3BG_js.RULER_THICKNESS - tickHeight,
27495
27484
  className: "stroke-gray-400 dark:stroke-gray-500",
27496
27485
  strokeWidth: tick.isMajor ? 1 : 0.5
27497
27486
  }
@@ -27500,8 +27489,8 @@ var HorizontalRuler = React14__default.default.memo(({ ticks, widthPx, highlight
27500
27489
  "text",
27501
27490
  {
27502
27491
  x: tick.position + 2,
27503
- y: chunkP3T4E6JQ_js.RULER_FONT_SIZE + 1,
27504
- fontSize: chunkP3T4E6JQ_js.RULER_FONT_SIZE,
27492
+ y: chunkBXACB3BG_js.RULER_FONT_SIZE + 1,
27493
+ fontSize: chunkBXACB3BG_js.RULER_FONT_SIZE,
27505
27494
  className: "fill-gray-500 dark:fill-gray-400",
27506
27495
  style: { fontFamily: "system-ui, sans-serif" },
27507
27496
  children: tick.label
@@ -27513,11 +27502,11 @@ var HorizontalRuler = React14__default.default.memo(({ ticks, widthPx, highlight
27513
27502
  });
27514
27503
  HorizontalRuler.displayName = "HorizontalRuler";
27515
27504
  var VerticalRuler = React14__default.default.memo(({ ticks, heightPx, highlight }) => {
27516
- return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: chunkP3T4E6JQ_js.RULER_THICKNESS, height: heightPx, className: "block select-none", "aria-hidden": "true", children: [
27505
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: chunkBXACB3BG_js.RULER_THICKNESS, height: heightPx, className: "block select-none", "aria-hidden": "true", children: [
27517
27506
  /* @__PURE__ */ jsxRuntime.jsx(
27518
27507
  "rect",
27519
27508
  {
27520
- width: chunkP3T4E6JQ_js.RULER_THICKNESS,
27509
+ width: chunkBXACB3BG_js.RULER_THICKNESS,
27521
27510
  height: heightPx,
27522
27511
  className: "fill-gray-100 dark:fill-gray-800"
27523
27512
  }
@@ -27525,9 +27514,9 @@ var VerticalRuler = React14__default.default.memo(({ ticks, heightPx, highlight
27525
27514
  /* @__PURE__ */ jsxRuntime.jsx(
27526
27515
  "line",
27527
27516
  {
27528
- x1: chunkP3T4E6JQ_js.RULER_THICKNESS - 0.5,
27517
+ x1: chunkBXACB3BG_js.RULER_THICKNESS - 0.5,
27529
27518
  y1: 0,
27530
- x2: chunkP3T4E6JQ_js.RULER_THICKNESS - 0.5,
27519
+ x2: chunkBXACB3BG_js.RULER_THICKNESS - 0.5,
27531
27520
  y2: heightPx,
27532
27521
  className: "stroke-border",
27533
27522
  strokeWidth: 1
@@ -27538,20 +27527,20 @@ var VerticalRuler = React14__default.default.memo(({ ticks, heightPx, highlight
27538
27527
  {
27539
27528
  x: 0,
27540
27529
  y: highlight.start,
27541
- width: chunkP3T4E6JQ_js.RULER_THICKNESS,
27530
+ width: chunkBXACB3BG_js.RULER_THICKNESS,
27542
27531
  height: Math.max(highlight.end - highlight.start, 1),
27543
27532
  className: "fill-primary/20"
27544
27533
  }
27545
27534
  ),
27546
27535
  ticks.map((tick, i) => {
27547
- const tickWidth = tick.isMajor ? chunkP3T4E6JQ_js.RULER_THICKNESS * 0.6 : chunkP3T4E6JQ_js.RULER_THICKNESS * 0.3;
27536
+ const tickWidth = tick.isMajor ? chunkBXACB3BG_js.RULER_THICKNESS * 0.6 : chunkBXACB3BG_js.RULER_THICKNESS * 0.3;
27548
27537
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
27549
27538
  /* @__PURE__ */ jsxRuntime.jsx(
27550
27539
  "line",
27551
27540
  {
27552
- x1: chunkP3T4E6JQ_js.RULER_THICKNESS,
27541
+ x1: chunkBXACB3BG_js.RULER_THICKNESS,
27553
27542
  y1: tick.position,
27554
- x2: chunkP3T4E6JQ_js.RULER_THICKNESS - tickWidth,
27543
+ x2: chunkBXACB3BG_js.RULER_THICKNESS - tickWidth,
27555
27544
  y2: tick.position,
27556
27545
  className: "stroke-gray-400 dark:stroke-gray-500",
27557
27546
  strokeWidth: tick.isMajor ? 1 : 0.5
@@ -27561,8 +27550,8 @@ var VerticalRuler = React14__default.default.memo(({ ticks, heightPx, highlight
27561
27550
  "text",
27562
27551
  {
27563
27552
  x: 2,
27564
- y: tick.position + chunkP3T4E6JQ_js.RULER_FONT_SIZE + 2,
27565
- fontSize: chunkP3T4E6JQ_js.RULER_FONT_SIZE,
27553
+ y: tick.position + chunkBXACB3BG_js.RULER_FONT_SIZE + 2,
27554
+ fontSize: chunkBXACB3BG_js.RULER_FONT_SIZE,
27566
27555
  className: "fill-gray-500 dark:fill-gray-400",
27567
27556
  style: { fontFamily: "system-ui, sans-serif" },
27568
27557
  children: tick.label
@@ -27582,11 +27571,11 @@ function Ruler({
27582
27571
  onCreateGuideFromRuler
27583
27572
  }) {
27584
27573
  const hTicks = React14.useMemo(
27585
- () => chunkP3T4E6JQ_js.generateTicks(canvasSize.width, editorScale, unit),
27574
+ () => chunkBXACB3BG_js.generateTicks(canvasSize.width, editorScale, unit),
27586
27575
  [canvasSize.width, editorScale, unit]
27587
27576
  );
27588
27577
  const vTicks = React14.useMemo(
27589
- () => chunkP3T4E6JQ_js.generateTicks(canvasSize.height, editorScale, unit),
27578
+ () => chunkBXACB3BG_js.generateTicks(canvasSize.height, editorScale, unit),
27590
27579
  [canvasSize.height, editorScale, unit]
27591
27580
  );
27592
27581
  const hHighlight = React14.useMemo(() => {
@@ -27650,8 +27639,8 @@ function Ruler({
27650
27639
  }
27651
27640
  const rect = rulerEl.getBoundingClientRect();
27652
27641
  const posScaled = e.clientY - rect.top;
27653
- if (posScaled > chunkP3T4E6JQ_js.RULER_THICKNESS) {
27654
- const positionPx = (posScaled - chunkP3T4E6JQ_js.RULER_THICKNESS) / scale;
27642
+ if (posScaled > chunkBXACB3BG_js.RULER_THICKNESS) {
27643
+ const positionPx = (posScaled - chunkBXACB3BG_js.RULER_THICKNESS) / scale;
27655
27644
  if (positionPx >= 0 && positionPx <= canvasSize.height) {
27656
27645
  onCreateGuideFromRuler("h", positionPx);
27657
27646
  }
@@ -27664,8 +27653,8 @@ function Ruler({
27664
27653
  }
27665
27654
  const rect = rulerEl.getBoundingClientRect();
27666
27655
  const posScaled = e.clientX - rect.left;
27667
- if (posScaled > chunkP3T4E6JQ_js.RULER_THICKNESS) {
27668
- const positionPx = (posScaled - chunkP3T4E6JQ_js.RULER_THICKNESS) / scale;
27656
+ if (posScaled > chunkBXACB3BG_js.RULER_THICKNESS) {
27657
+ const positionPx = (posScaled - chunkBXACB3BG_js.RULER_THICKNESS) / scale;
27669
27658
  if (positionPx >= 0 && positionPx <= canvasSize.width) {
27670
27659
  onCreateGuideFromRuler("v", positionPx);
27671
27660
  }
@@ -27688,8 +27677,8 @@ function Ruler({
27688
27677
  style: {
27689
27678
  top: 0,
27690
27679
  left: 0,
27691
- width: chunkP3T4E6JQ_js.RULER_THICKNESS,
27692
- height: chunkP3T4E6JQ_js.RULER_THICKNESS
27680
+ width: chunkBXACB3BG_js.RULER_THICKNESS,
27681
+ height: chunkBXACB3BG_js.RULER_THICKNESS
27693
27682
  }
27694
27683
  }
27695
27684
  ),
@@ -27700,9 +27689,9 @@ function Ruler({
27700
27689
  className: "absolute z-[50] overflow-visible",
27701
27690
  style: {
27702
27691
  top: 0,
27703
- left: chunkP3T4E6JQ_js.RULER_THICKNESS,
27692
+ left: chunkBXACB3BG_js.RULER_THICKNESS,
27704
27693
  width: scaledWidth,
27705
- height: chunkP3T4E6JQ_js.RULER_THICKNESS,
27694
+ height: chunkBXACB3BG_js.RULER_THICKNESS,
27706
27695
  cursor: onCreateGuideFromRuler ? "row-resize" : void 0
27707
27696
  },
27708
27697
  onPointerDown: handleHRulerPointerDown,
@@ -27716,9 +27705,9 @@ function Ruler({
27716
27705
  ref: vRulerRef,
27717
27706
  className: "absolute z-[50] overflow-visible",
27718
27707
  style: {
27719
- top: chunkP3T4E6JQ_js.RULER_THICKNESS,
27708
+ top: chunkBXACB3BG_js.RULER_THICKNESS,
27720
27709
  left: 0,
27721
- width: chunkP3T4E6JQ_js.RULER_THICKNESS,
27710
+ width: chunkBXACB3BG_js.RULER_THICKNESS,
27722
27711
  height: scaledHeight,
27723
27712
  cursor: onCreateGuideFromRuler ? "col-resize" : void 0
27724
27713
  },
@@ -27963,8 +27952,8 @@ function useConnectorCreation({
27963
27952
  setConnectorDragState(null);
27964
27953
  return;
27965
27954
  }
27966
- const startSites = chunkP3T4E6JQ_js.getConnectionSites(startEl.width, startEl.height);
27967
- const endSites = chunkP3T4E6JQ_js.getConnectionSites(endEl.width, endEl.height);
27955
+ const startSites = chunkBXACB3BG_js.getConnectionSites(startEl.width, startEl.height);
27956
+ const endSites = chunkBXACB3BG_js.getConnectionSites(endEl.width, endEl.height);
27968
27957
  const startSite = startSites[connectorDragState.startSiteIndex] ?? startSites[0];
27969
27958
  const endSite = endSites[targetSiteIndex] ?? endSites[0];
27970
27959
  const sx = startEl.x + startSite.x;
@@ -28437,7 +28426,7 @@ function SlideCanvas({
28437
28426
  onAddFreeformShape,
28438
28427
  onEraseInkElement
28439
28428
  });
28440
- const rulerOffset = showRulers ? chunkP3T4E6JQ_js.RULER_THICKNESS : 0;
28429
+ const rulerOffset = showRulers ? chunkBXACB3BG_js.RULER_THICKNESS : 0;
28441
28430
  return /* @__PURE__ */ jsxRuntime.jsx(
28442
28431
  "div",
28443
28432
  {
@@ -28527,7 +28516,7 @@ function SlideCanvas({
28527
28516
  showResizeHandles: isEditableCanvas && selectedElementIdSet.has(element.id) && selectedElementIdSet.size <= 1 && !inlineEditingElementId,
28528
28517
  renderInk: false,
28529
28518
  renderGroups: false,
28530
- adjustmentHandleDescriptor: isEditableCanvas && selectedElement?.id === element.id ? chunkP3T4E6JQ_js.getShapeAdjustmentHandleDescriptor(element) : null,
28519
+ adjustmentHandleDescriptor: isEditableCanvas && selectedElement?.id === element.id ? chunkBXACB3BG_js.getShapeAdjustmentHandleDescriptor(element) : null,
28531
28520
  onResizePointerDown: stableResizePointerDown,
28532
28521
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
28533
28522
  onRotate: stableRotate,
@@ -28567,7 +28556,7 @@ function SlideCanvas({
28567
28556
  showResizeHandles: isEditableCanvas && selectedElementIdSet.has(element.id) && selectedElementIdSet.size <= 1 && !inlineEditingElementId,
28568
28557
  renderInk: true,
28569
28558
  renderGroups: true,
28570
- adjustmentHandleDescriptor: isEditableCanvas && selectedElement?.id === element.id ? chunkP3T4E6JQ_js.getShapeAdjustmentHandleDescriptor(element) : null,
28559
+ adjustmentHandleDescriptor: isEditableCanvas && selectedElement?.id === element.id ? chunkBXACB3BG_js.getShapeAdjustmentHandleDescriptor(element) : null,
28571
28560
  onResizePointerDown: stableResizePointerDown,
28572
28561
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
28573
28562
  onRotate: stableRotate,
@@ -28936,7 +28925,7 @@ function TitleBar(p) {
28936
28925
  const [searchQuery, setSearchQuery] = React14.useState("");
28937
28926
  const [searchFocused, setSearchFocused] = React14.useState(false);
28938
28927
  const searchRef = React14.useRef(null);
28939
- const commandResults = chunkP3T4E6JQ_js.filterCommands(searchQuery, t);
28928
+ const commandResults = chunkBXACB3BG_js.filterCommands(searchQuery, t);
28940
28929
  const handleCommandSelect = React14.useCallback(
28941
28930
  (entry) => {
28942
28931
  p.onCommandSearch?.(entry.command);
@@ -28970,17 +28959,17 @@ function TitleBar(p) {
28970
28959
  document.addEventListener("mousedown", handler);
28971
28960
  return () => document.removeEventListener("mousedown", handler);
28972
28961
  }, []);
28973
- const statusKey = chunkP3T4E6JQ_js.resolveTitleBarStatusKey({
28962
+ const statusKey = chunkBXACB3BG_js.resolveTitleBarStatusKey({
28974
28963
  autosaveState: p.autosaveStatus?.state ?? "idle",
28975
28964
  isDirty: p.isDirty,
28976
28965
  autosaveEnabled: p.autosaveEnabled,
28977
28966
  disabledReason: p.autosaveStatus?.state === "disabled" ? p.autosaveStatus.reason : void 0
28978
28967
  });
28979
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.container, "data-pptx-title-bar": "", children: [
28980
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.logo, "aria-hidden": "true", children: "P" }),
28968
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.container, "data-pptx-title-bar": "", children: [
28969
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.logo, "aria-hidden": "true", children: "P" }),
28981
28970
  editing && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
28982
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.autosaveGroup, children: [
28983
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.autosaveLabel, children: t("pptx.titleBar.autoSave") }),
28971
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.autosaveGroup, children: [
28972
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.autosaveLabel, children: t("pptx.titleBar.autoSave") }),
28984
28973
  /* @__PURE__ */ jsxRuntime.jsx(
28985
28974
  "button",
28986
28975
  {
@@ -28988,32 +28977,32 @@ function TitleBar(p) {
28988
28977
  role: "switch",
28989
28978
  "aria-checked": p.autosaveEnabled,
28990
28979
  onClick: p.onToggleAutosave,
28991
- className: chunkYF6JD4DO_js.cn(
28992
- chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.toggleTrack,
28993
- p.autosaveEnabled ? chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.toggleTrackOn : chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.toggleTrackOff
28980
+ className: chunkLXUMBK2O_js.cn(
28981
+ chunkBXACB3BG_js.TITLE_BAR_CLASSES.toggleTrack,
28982
+ p.autosaveEnabled ? chunkBXACB3BG_js.TITLE_BAR_CLASSES.toggleTrackOn : chunkBXACB3BG_js.TITLE_BAR_CLASSES.toggleTrackOff
28994
28983
  ),
28995
28984
  title: t("pptx.titleBar.toggleAutoSave"),
28996
28985
  "aria-label": t("pptx.titleBar.toggleAutoSave"),
28997
28986
  children: /* @__PURE__ */ jsxRuntime.jsx(
28998
28987
  "span",
28999
28988
  {
29000
- className: chunkYF6JD4DO_js.cn(
29001
- chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.toggleKnob,
29002
- p.autosaveEnabled ? chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.toggleKnobOn : chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.toggleKnobOff
28989
+ className: chunkLXUMBK2O_js.cn(
28990
+ chunkBXACB3BG_js.TITLE_BAR_CLASSES.toggleKnob,
28991
+ p.autosaveEnabled ? chunkBXACB3BG_js.TITLE_BAR_CLASSES.toggleKnobOn : chunkBXACB3BG_js.TITLE_BAR_CLASSES.toggleKnobOff
29003
28992
  )
29004
28993
  }
29005
28994
  )
29006
28995
  }
29007
28996
  ),
29008
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.autosaveLabel, children: t(p.autosaveEnabled ? "pptx.titleBar.autoSaveOn" : "pptx.titleBar.autoSaveOff") })
28997
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.autosaveLabel, children: t(p.autosaveEnabled ? "pptx.titleBar.autoSaveOn" : "pptx.titleBar.autoSaveOff") })
29009
28998
  ] }),
29010
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.separator }),
28999
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.separator }),
29011
29000
  p.onSave && /* @__PURE__ */ jsxRuntime.jsx(
29012
29001
  "button",
29013
29002
  {
29014
29003
  type: "button",
29015
29004
  onClick: p.onSave,
29016
- className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.quickButton,
29005
+ className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.quickButton,
29017
29006
  title: t("pptx.titleBar.save"),
29018
29007
  "aria-label": t("pptx.titleBar.save"),
29019
29008
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSave, { className: "w-3.5 h-3.5" })
@@ -29025,7 +29014,7 @@ function TitleBar(p) {
29025
29014
  type: "button",
29026
29015
  onClick: p.onUndo,
29027
29016
  disabled: !p.canUndo,
29028
- className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.quickButton,
29017
+ className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.quickButton,
29029
29018
  title: p.undoLabel ? t("pptx.toolbar.undoAction", { action: p.undoLabel }) : t("pptx.toolbar.undo"),
29030
29019
  "aria-label": t("pptx.toolbar.undo"),
29031
29020
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuUndo, { className: "w-3.5 h-3.5" })
@@ -29037,41 +29026,41 @@ function TitleBar(p) {
29037
29026
  type: "button",
29038
29027
  onClick: p.onRedo,
29039
29028
  disabled: !p.canRedo,
29040
- className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.quickButton,
29029
+ className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.quickButton,
29041
29030
  title: p.redoLabel ? t("pptx.toolbar.redoAction", { action: p.redoLabel }) : t("pptx.toolbar.redo"),
29042
29031
  "aria-label": t("pptx.toolbar.redo"),
29043
29032
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuRedo, { className: "w-3.5 h-3.5" })
29044
29033
  }
29045
29034
  ),
29046
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.separator })
29035
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.separator })
29047
29036
  ] }),
29048
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.fileGroup, children: [
29049
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.fileName, children: p.fileName || t(chunkP3T4E6JQ_js.TITLE_BAR_DEFAULT_FILE_KEY) }),
29037
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.fileGroup, children: [
29038
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.fileName, children: p.fileName || t(chunkBXACB3BG_js.TITLE_BAR_DEFAULT_FILE_KEY) }),
29050
29039
  editing && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
29051
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.statusDot, "aria-hidden": "true", children: "\u2022" }),
29040
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.statusDot, "aria-hidden": "true", children: "\u2022" }),
29052
29041
  /* @__PURE__ */ jsxRuntime.jsx(
29053
29042
  "span",
29054
29043
  {
29055
- className: chunkYF6JD4DO_js.cn(
29056
- chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.statusText,
29057
- p.autosaveStatus?.state === "error" && p.autosaveEnabled && chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.statusError,
29058
- p.autosaveStatus?.state === "saving" && p.autosaveEnabled && chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.statusSaving
29044
+ className: chunkLXUMBK2O_js.cn(
29045
+ chunkBXACB3BG_js.TITLE_BAR_CLASSES.statusText,
29046
+ p.autosaveStatus?.state === "error" && p.autosaveEnabled && chunkBXACB3BG_js.TITLE_BAR_CLASSES.statusError,
29047
+ p.autosaveStatus?.state === "saving" && p.autosaveEnabled && chunkBXACB3BG_js.TITLE_BAR_CLASSES.statusSaving
29059
29048
  ),
29060
29049
  children: t(statusKey)
29061
29050
  }
29062
29051
  )
29063
29052
  ] })
29064
29053
  ] }),
29065
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.searchWrap, children: (p.mode === "edit" || p.mode === "master") && /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: searchRef, className: "relative w-full max-w-md", children: [
29054
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.searchWrap, children: (p.mode === "edit" || p.mode === "master") && /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: searchRef, className: "relative w-full max-w-md", children: [
29066
29055
  /* @__PURE__ */ jsxRuntime.jsxs(
29067
29056
  "div",
29068
29057
  {
29069
- className: chunkYF6JD4DO_js.cn(
29070
- chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.searchBox,
29058
+ className: chunkLXUMBK2O_js.cn(
29059
+ chunkBXACB3BG_js.TITLE_BAR_CLASSES.searchBox,
29071
29060
  (searchFocused || p.findReplaceOpen) && "text-foreground bg-background"
29072
29061
  ),
29073
29062
  children: [
29074
- /* @__PURE__ */ jsxRuntime.jsx(lu.LuSearch, { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.searchIcon }),
29063
+ /* @__PURE__ */ jsxRuntime.jsx(lu.LuSearch, { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.searchIcon }),
29075
29064
  /* @__PURE__ */ jsxRuntime.jsx(
29076
29065
  "input",
29077
29066
  {
@@ -29128,7 +29117,7 @@ function TitleBar(p) {
29128
29117
  ) })
29129
29118
  ] })
29130
29119
  ] }) }),
29131
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP3T4E6JQ_js.TITLE_BAR_CLASSES.rightSpacer })
29120
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.rightSpacer })
29132
29121
  ] });
29133
29122
  }
29134
29123
  function ViewerToolbarSection(props) {
@@ -29271,7 +29260,7 @@ function ViewerToolbarSection(props) {
29271
29260
  insertHandlers.handleAddTable();
29272
29261
  break;
29273
29262
  case "chart":
29274
- insertHandlers.handleAddChart(chunkP3T4E6JQ_js.DEFAULT_INSERT_CHART_TYPE);
29263
+ insertHandlers.handleAddChart(chunkBXACB3BG_js.DEFAULT_INSERT_CHART_TYPE);
29275
29264
  break;
29276
29265
  case "smartArt":
29277
29266
  dialogs.setIsSmartArtDialogOpen(true);
@@ -29462,7 +29451,7 @@ function ViewerToolbarSection(props) {
29462
29451
  onOpenFile,
29463
29452
  onOpenRecentFile,
29464
29453
  onCreatePresentation: (templateId) => {
29465
- s.setSlides(chunkP3T4E6JQ_js.createBackstagePresentation(templateId));
29454
+ s.setSlides(chunkBXACB3BG_js.createBackstagePresentation(templateId));
29466
29455
  s.setActiveSlideIndex(0);
29467
29456
  s.setSelectedElementId(null);
29468
29457
  s.setSelectedElementIds([]);
@@ -29517,7 +29506,7 @@ function ViewerToolbarSection(props) {
29517
29506
  isCommentsPanelOpen: s.isInspectorPaneOpen,
29518
29507
  slideCommentCount: activeSlide?.comments?.length ?? 0,
29519
29508
  formatPainterActive: s.formatPainterActive,
29520
- canActivateFormatPainter: chunkP3T4E6JQ_js.hasCopyableFormat(selectedElement),
29509
+ canActivateFormatPainter: chunkBXACB3BG_js.hasCopyableFormat(selectedElement),
29521
29510
  onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
29522
29511
  isSelectionPaneOpen: s.isSelectionPaneOpen,
29523
29512
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -29564,13 +29553,6 @@ function ViewerToolbarSection(props) {
29564
29553
  )
29565
29554
  ] });
29566
29555
  }
29567
- function sanitizeMathMl(markup) {
29568
- const purify = DOMPurify__default.default;
29569
- if (typeof purify.sanitize !== "function") {
29570
- return markup;
29571
- }
29572
- return purify.sanitize(markup, { USE_PROFILES: { mathMl: true, svg: true } });
29573
- }
29574
29556
  var TEMPLATES = [
29575
29557
  {
29576
29558
  label: "Fraction",
@@ -29635,9 +29617,9 @@ var TEMPLATES = [
29635
29617
  ];
29636
29618
  var TEMPLATE_MATHML = TEMPLATES.map((tmpl) => {
29637
29619
  try {
29638
- const tmplOmml = chunkP3T4E6JQ_js.convertLatexToOmml(tmpl.latex);
29639
- const raw = chunkP3T4E6JQ_js.convertOmmlToMathMl(tmplOmml);
29640
- return raw ? sanitizeMathMl(raw) : "";
29620
+ const tmplOmml = chunkBXACB3BG_js.convertLatexToOmml(tmpl.latex);
29621
+ const raw = chunkBXACB3BG_js.convertOmmlToMathMl(tmplOmml);
29622
+ return raw ? chunkBXACB3BG_js.sanitizeMathMl(raw) : "";
29641
29623
  } catch {
29642
29624
  return "";
29643
29625
  }
@@ -29649,7 +29631,7 @@ function MathMlPreview({ mathml }) {
29649
29631
  return;
29650
29632
  }
29651
29633
  if (mathml) {
29652
- containerRef.current.innerHTML = sanitizeMathMl(mathml);
29634
+ containerRef.current.innerHTML = chunkBXACB3BG_js.sanitizeMathMl(mathml);
29653
29635
  } else {
29654
29636
  containerRef.current.innerHTML = "";
29655
29637
  }
@@ -29670,12 +29652,12 @@ function EquationEditorDialog({
29670
29652
  existingOmml
29671
29653
  }) {
29672
29654
  const { t } = reactI18next.useTranslation();
29673
- const { panelStyle, handlers: dragHandlers } = chunkYF6JD4DO_js.useModalDismissDrag(onClose);
29655
+ const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onClose);
29674
29656
  const initialLatex = React14.useMemo(() => {
29675
29657
  if (!existingOmml) {
29676
29658
  return "";
29677
29659
  }
29678
- return chunkP3T4E6JQ_js.convertOmmlToLatex(existingOmml);
29660
+ return chunkBXACB3BG_js.convertOmmlToLatex(existingOmml);
29679
29661
  }, [existingOmml]);
29680
29662
  const [latex, setLatex] = React14.useState(initialLatex);
29681
29663
  const deferredLatex = React14.useDeferredValue(latex);
@@ -29692,8 +29674,8 @@ function EquationEditorDialog({
29692
29674
  return { mathml: "", omml: {} };
29693
29675
  }
29694
29676
  try {
29695
- const ommlObj = chunkP3T4E6JQ_js.convertLatexToOmml(deferredLatex);
29696
- const mathmlStr = chunkP3T4E6JQ_js.convertOmmlToMathMl(ommlObj);
29677
+ const ommlObj = chunkBXACB3BG_js.convertLatexToOmml(deferredLatex);
29678
+ const mathmlStr = chunkBXACB3BG_js.convertOmmlToMathMl(ommlObj);
29697
29679
  return { mathml: mathmlStr, omml: ommlObj };
29698
29680
  } catch {
29699
29681
  return { mathml: "", omml: {} };
@@ -29705,7 +29687,7 @@ function EquationEditorDialog({
29705
29687
  }
29706
29688
  let insertOmml = omml;
29707
29689
  try {
29708
- const fresh = chunkP3T4E6JQ_js.convertLatexToOmml(latex);
29690
+ const fresh = chunkBXACB3BG_js.convertLatexToOmml(latex);
29709
29691
  if (fresh && Object.keys(fresh).length > 0) {
29710
29692
  insertOmml = fresh;
29711
29693
  }
@@ -29803,7 +29785,7 @@ function EquationEditorDialog({
29803
29785
  {
29804
29786
  type: "button",
29805
29787
  onClick: () => handleTemplateClick(tmpl.latex),
29806
- className: chunkYF6JD4DO_js.cn(
29788
+ className: chunkLXUMBK2O_js.cn(
29807
29789
  "flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
29808
29790
  latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
29809
29791
  ),
@@ -29859,7 +29841,7 @@ var PREVIEW_ELEMENT_HEIGHT = 340;
29859
29841
  var PREVIEW_TILE_WIDTH = 64;
29860
29842
  var FALLBACK_ITEMS = ["1", "2", "3"];
29861
29843
  function buildPreviewElement(layout) {
29862
- const preset = chunkP3T4E6JQ_js.PRESETS.find((p) => p.layout === layout);
29844
+ const preset = chunkBXACB3BG_js.PRESETS.find((p) => p.layout === layout);
29863
29845
  return {
29864
29846
  id: `smartart-preview-${layout}`,
29865
29847
  type: "smartArt",
@@ -29867,7 +29849,7 @@ function buildPreviewElement(layout) {
29867
29849
  y: 0,
29868
29850
  width: PREVIEW_ELEMENT_WIDTH,
29869
29851
  height: PREVIEW_ELEMENT_HEIGHT,
29870
- smartArtData: chunkP3T4E6JQ_js.buildSmartArtPresetData(layout, preset?.defaultItems ?? FALLBACK_ITEMS)
29852
+ smartArtData: chunkBXACB3BG_js.buildSmartArtPresetData(layout, preset?.defaultItems ?? FALLBACK_ITEMS)
29871
29853
  };
29872
29854
  }
29873
29855
  function getPreviewForLayout(layout) {
@@ -29902,17 +29884,17 @@ function InsertSmartArtDialog({
29902
29884
  onInsert
29903
29885
  }) {
29904
29886
  const { t } = reactI18next.useTranslation();
29905
- const { panelStyle, handlers: dragHandlers } = chunkYF6JD4DO_js.useModalDismissDrag(onClose);
29887
+ const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onClose);
29906
29888
  const [activeCategory, setActiveCategory] = React14.useState("list");
29907
29889
  const [selectedLayout, setSelectedLayout] = React14.useState(null);
29908
29890
  const dialogRef = React14.useRef(null);
29909
29891
  useModalFocus(isOpen, dialogRef, onClose);
29910
- const filteredPresets = chunkP3T4E6JQ_js.PRESETS.filter((p) => p.category === activeCategory);
29892
+ const filteredPresets = chunkBXACB3BG_js.PRESETS.filter((p) => p.category === activeCategory);
29911
29893
  const handleInsert = React14.useCallback(() => {
29912
29894
  if (!selectedLayout) {
29913
29895
  return;
29914
29896
  }
29915
- const preset = chunkP3T4E6JQ_js.PRESETS.find((p) => p.layout === selectedLayout);
29897
+ const preset = chunkBXACB3BG_js.PRESETS.find((p) => p.layout === selectedLayout);
29916
29898
  if (!preset) {
29917
29899
  return;
29918
29900
  }
@@ -29975,7 +29957,7 @@ function InsertSmartArtDialog({
29975
29957
  {
29976
29958
  className: "w-40 border-r border-border py-2",
29977
29959
  "aria-label": t("pptx.insertSmartArt.categories"),
29978
- children: chunkP3T4E6JQ_js.CATEGORIES.map((cat) => /* @__PURE__ */ jsxRuntime.jsx(
29960
+ children: chunkBXACB3BG_js.CATEGORIES.map((cat) => /* @__PURE__ */ jsxRuntime.jsx(
29979
29961
  "button",
29980
29962
  {
29981
29963
  type: "button",
@@ -29983,7 +29965,7 @@ function InsertSmartArtDialog({
29983
29965
  setActiveCategory(cat.id);
29984
29966
  setSelectedLayout(null);
29985
29967
  },
29986
- className: chunkYF6JD4DO_js.cn(
29968
+ className: chunkLXUMBK2O_js.cn(
29987
29969
  "w-full text-left px-3 py-1.5 text-xs transition-colors",
29988
29970
  activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
29989
29971
  ),
@@ -30011,7 +29993,7 @@ function InsertSmartArtDialog({
30011
29993
  onInsert(preset.layout, preset.defaultItems);
30012
29994
  onClose();
30013
29995
  },
30014
- className: chunkYF6JD4DO_js.cn(
29996
+ className: chunkLXUMBK2O_js.cn(
30015
29997
  "flex flex-col items-center gap-1 p-2 rounded border transition-colors",
30016
29998
  selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
30017
29999
  ),
@@ -30041,7 +30023,7 @@ function InsertSmartArtDialog({
30041
30023
  type: "button",
30042
30024
  onClick: handleInsert,
30043
30025
  disabled: !selectedLayout,
30044
- className: chunkYF6JD4DO_js.cn(
30026
+ className: chunkLXUMBK2O_js.cn(
30045
30027
  "px-3 py-1.5 text-xs rounded transition-colors",
30046
30028
  selectedLayout ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
30047
30029
  ),
@@ -30383,16 +30365,16 @@ function ViewerCanvasArea(props) {
30383
30365
  if (mode === "present") {
30384
30366
  presentation.handlePresentationAction(action);
30385
30367
  } else if (action.url) {
30386
- chunkP3T4E6JQ_js.safeOpenUrl(action.url);
30368
+ chunkBXACB3BG_js.safeOpenUrl(action.url);
30387
30369
  }
30388
30370
  },
30389
30371
  [mode, presentation]
30390
30372
  );
30391
30373
  const handleHyperlinkClick = React14.useCallback(
30392
30374
  (url) => {
30393
- if (chunkP3T4E6JQ_js.isPpactionUrl(url)) {
30375
+ if (chunkBXACB3BG_js.isPpactionUrl(url)) {
30394
30376
  if (mode === "present") {
30395
- const parsed = chunkP3T4E6JQ_js.parsePpactionUrl(url);
30377
+ const parsed = chunkBXACB3BG_js.parsePpactionUrl(url);
30396
30378
  if (parsed) {
30397
30379
  const action = {
30398
30380
  action: parsed.action,
@@ -30403,7 +30385,7 @@ function ViewerCanvasArea(props) {
30403
30385
  }
30404
30386
  return;
30405
30387
  }
30406
- chunkP3T4E6JQ_js.safeOpenUrl(url);
30388
+ chunkBXACB3BG_js.safeOpenUrl(url);
30407
30389
  },
30408
30390
  [mode, presentation]
30409
30391
  );
@@ -30430,7 +30412,7 @@ function ViewerCanvasArea(props) {
30430
30412
  s.setActiveSlideIndex((i) => Math.max(0, i - 1));
30431
30413
  }
30432
30414
  }, [mode, presentation, s]);
30433
- const swipe = chunkYF6JD4DO_js.useSwipeNavigation({
30415
+ const swipe = chunkLXUMBK2O_js.useSwipeNavigation({
30434
30416
  enabled: swipeEnabled,
30435
30417
  onNext: handleSwipeNext,
30436
30418
  onPrev: handleSwipePrev
@@ -30891,7 +30873,7 @@ function ThemeColorSchemeEditor({
30891
30873
  onMinorFontChange
30892
30874
  }) {
30893
30875
  const { t } = reactI18next.useTranslation();
30894
- const previewGrid = React14.useMemo(() => chunkP3T4E6JQ_js.buildThemeColorGrid(editColors), [editColors]);
30876
+ const previewGrid = React14.useMemo(() => chunkBXACB3BG_js.buildThemeColorGrid(editColors), [editColors]);
30895
30877
  const handleColorText = React14.useCallback(
30896
30878
  (val) => {
30897
30879
  if (activePickerKey && /^#[0-9a-fA-F]{6}$/.test(val)) {
@@ -30911,15 +30893,15 @@ function ThemeColorSchemeEditor({
30911
30893
  disabled: !canEdit,
30912
30894
  className: `h-6 w-full rounded-sm border transition-colors ${activePickerKey === key ? "border-primary ring-1 ring-primary" : "border-border hover:border-muted-foreground"} disabled:opacity-40 disabled:cursor-not-allowed`,
30913
30895
  style: { backgroundColor: editColors[key] },
30914
- title: `${chunkP3T4E6JQ_js.THEME_COLOR_LABELS[key]}: ${editColors[key]}`,
30915
- "aria-label": `${chunkP3T4E6JQ_js.THEME_COLOR_LABELS[key]}: ${editColors[key]}`,
30896
+ title: `${chunkBXACB3BG_js.THEME_COLOR_LABELS[key]}: ${editColors[key]}`,
30897
+ "aria-label": `${chunkBXACB3BG_js.THEME_COLOR_LABELS[key]}: ${editColors[key]}`,
30916
30898
  onClick: () => onSetActivePickerKey(activePickerKey === key ? null : key)
30917
30899
  }
30918
30900
  ),
30919
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground truncate w-full text-center", children: chunkP3T4E6JQ_js.THEME_COLOR_LABELS[key] })
30901
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground truncate w-full text-center", children: chunkBXACB3BG_js.THEME_COLOR_LABELS[key] })
30920
30902
  ] }, key)) }),
30921
30903
  activePickerKey && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex items-center gap-2 rounded bg-background p-2", children: [
30922
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground min-w-[60px]", children: chunkP3T4E6JQ_js.THEME_COLOR_LABELS[activePickerKey] }),
30904
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground min-w-[60px]", children: chunkBXACB3BG_js.THEME_COLOR_LABELS[activePickerKey] }),
30923
30905
  /* @__PURE__ */ jsxRuntime.jsx(
30924
30906
  "input",
30925
30907
  {
@@ -31217,7 +31199,7 @@ function MobileDismissSheet({
31217
31199
  className,
31218
31200
  children
31219
31201
  }) {
31220
- const { dragY, handlers } = chunkYF6JD4DO_js.useSheetDismissDrag(onClose);
31202
+ const { dragY, handlers } = chunkLXUMBK2O_js.useSheetDismissDrag(onClose);
31221
31203
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31222
31204
  /* @__PURE__ */ jsxRuntime.jsx(
31223
31205
  "button",
@@ -31486,7 +31468,7 @@ function ThemeThumbnail({
31486
31468
  {
31487
31469
  type: "button",
31488
31470
  onClick,
31489
- className: chunkYF6JD4DO_js.cn(
31471
+ className: chunkLXUMBK2O_js.cn(
31490
31472
  "group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
31491
31473
  selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
31492
31474
  ),
@@ -32118,7 +32100,7 @@ function MobileBottomBar({
32118
32100
  {
32119
32101
  type: "button",
32120
32102
  onClick,
32121
- className: chunkYF6JD4DO_js.cn(
32103
+ className: chunkLXUMBK2O_js.cn(
32122
32104
  "relative flex flex-col items-center justify-center gap-0.5 flex-1 min-h-[56px] py-1.5 text-[10px] font-medium transition-colors active:scale-95",
32123
32105
  active ? "text-primary" : "text-muted-foreground hover:text-foreground"
32124
32106
  ),
@@ -32166,7 +32148,7 @@ function MobileChromeOverlay(props) {
32166
32148
  canEdit,
32167
32149
  commentCount
32168
32150
  } = props;
32169
- const { keyboardInset, isKeyboardOpen } = chunkYF6JD4DO_js.useKeyboardInsets();
32151
+ const { keyboardInset, isKeyboardOpen } = chunkLXUMBK2O_js.useKeyboardInsets();
32170
32152
  const activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null;
32171
32153
  const closeAllSheets = () => {
32172
32154
  s.setIsSlidesPaneOpen(false);
@@ -32262,7 +32244,7 @@ function ToggleSwitch({
32262
32244
  {
32263
32245
  type: "button",
32264
32246
  onClick: onToggle,
32265
- className: chunkYF6JD4DO_js.cn(
32247
+ className: chunkLXUMBK2O_js.cn(
32266
32248
  "relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
32267
32249
  enabled ? "bg-primary" : "bg-muted-foreground/30"
32268
32250
  ),
@@ -32272,7 +32254,7 @@ function ToggleSwitch({
32272
32254
  children: /* @__PURE__ */ jsxRuntime.jsx(
32273
32255
  "span",
32274
32256
  {
32275
- className: chunkYF6JD4DO_js.cn(
32257
+ className: chunkLXUMBK2O_js.cn(
32276
32258
  "inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
32277
32259
  enabled ? "translate-x-[18px]" : "translate-x-[3px]"
32278
32260
  )
@@ -32299,7 +32281,7 @@ function SettingsDialog({
32299
32281
  const [activeTab, setActiveTab] = React14.useState("general");
32300
32282
  const [autoSave, setAutoSave] = React14.useState(true);
32301
32283
  const { t } = reactI18next.useTranslation();
32302
- const { panelStyle, handlers: dragHandlers } = chunkYF6JD4DO_js.useModalDismissDrag(onClose);
32284
+ const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onClose);
32303
32285
  const handleKeyDown = React14.useCallback(
32304
32286
  (e) => {
32305
32287
  if (e.key === "Escape") {
@@ -32371,7 +32353,7 @@ function SettingsDialog({
32371
32353
  {
32372
32354
  type: "button",
32373
32355
  onClick: () => setActiveTab(tab.id),
32374
- className: chunkYF6JD4DO_js.cn(
32356
+ className: chunkLXUMBK2O_js.cn(
32375
32357
  "px-3 py-2 text-xs font-medium transition-colors relative",
32376
32358
  activeTab === tab.id ? "text-primary" : "text-muted-foreground hover:text-foreground"
32377
32359
  ),
@@ -32433,10 +32415,10 @@ function SettingsDialog({
32433
32415
  }
32434
32416
  )
32435
32417
  ] }),
32436
- activeTab === "shortcuts" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: chunkYF6JD4DO_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
32418
+ activeTab === "shortcuts" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: chunkLXUMBK2O_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
32437
32419
  "div",
32438
32420
  {
32439
- className: chunkYF6JD4DO_js.cn(
32421
+ className: chunkLXUMBK2O_js.cn(
32440
32422
  "flex items-center justify-between gap-3 rounded px-3 py-2",
32441
32423
  i % 2 === 0 ? "bg-muted/60" : ""
32442
32424
  ),
@@ -32481,7 +32463,7 @@ var PowerPointViewer = React14.forwardRef(
32481
32463
  smartArt3D = false
32482
32464
  } = props;
32483
32465
  React14.useEffect(() => {
32484
- const css = chunkP3T4E6JQ_js.buildUserFontFaceStyles(fonts);
32466
+ const css = chunkBXACB3BG_js.buildUserFontFaceStyles(fonts);
32485
32467
  if (!css) {
32486
32468
  return;
32487
32469
  }
@@ -32502,7 +32484,7 @@ var PowerPointViewer = React14.forwardRef(
32502
32484
  return;
32503
32485
  }
32504
32486
  void (async () => {
32505
- const picked = await chunkP3T4E6JQ_js.openPptxFile();
32487
+ const picked = await chunkBXACB3BG_js.openPptxFile();
32506
32488
  if (picked) {
32507
32489
  setContent(picked.buffer);
32508
32490
  }
@@ -32510,7 +32492,7 @@ var PowerPointViewer = React14.forwardRef(
32510
32492
  }, [hostOpenFile]);
32511
32493
  const handleOpenRecentFile = React14.useCallback((key) => {
32512
32494
  void (async () => {
32513
- const bytes = await chunkP3T4E6JQ_js.readBackstageRecentFile(key);
32495
+ const bytes = await chunkBXACB3BG_js.readBackstageRecentFile(key);
32514
32496
  if (bytes) {
32515
32497
  setContent(bytes);
32516
32498
  }
@@ -32520,8 +32502,8 @@ var PowerPointViewer = React14.forwardRef(
32520
32502
  const [isHeaderFooterOpen, setIsHeaderFooterOpen] = React14.useState(false);
32521
32503
  const [autosaveEnabled, setAutosaveEnabled] = React14.useState(true);
32522
32504
  const [isShareDialogOpen, setIsShareDialogOpen] = React14.useState(false);
32523
- const { reducedMotion, toggleReducedMotion } = chunkYF6JD4DO_js.useReducedMotion();
32524
- const state = chunkYF6JD4DO_js.useViewerState({ content, canEdit });
32505
+ const { reducedMotion, toggleReducedMotion } = chunkLXUMBK2O_js.useReducedMotion();
32506
+ const state = chunkLXUMBK2O_js.useViewerState({ content, canEdit });
32525
32507
  const {
32526
32508
  containerRef,
32527
32509
  mode,
@@ -32536,10 +32518,10 @@ var PowerPointViewer = React14.forwardRef(
32536
32518
  activeSlide,
32537
32519
  selectedElement
32538
32520
  } = state;
32539
- const mobile = chunkYF6JD4DO_js.useIsMobile({ containerRef });
32521
+ const mobile = chunkLXUMBK2O_js.useIsMobile({ containerRef });
32540
32522
  const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
32541
- const resizablePanels = chunkYF6JD4DO_js.useResizablePanels();
32542
- const { gridSpacingPx, visibleSlideIndexes, slideSectionGroups, masterPseudoSlide } = chunkYF6JD4DO_js.useDerivedSlideState({
32523
+ const resizablePanels = chunkLXUMBK2O_js.useResizablePanels();
32524
+ const { gridSpacingPx, visibleSlideIndexes, slideSectionGroups, masterPseudoSlide } = chunkLXUMBK2O_js.useDerivedSlideState({
32543
32525
  slides,
32544
32526
  sections: state.sections,
32545
32527
  customShows: state.customShows,
@@ -32561,11 +32543,11 @@ var PowerPointViewer = React14.forwardRef(
32561
32543
  state.isDrawingRef
32562
32544
  ]
32563
32545
  );
32564
- const zoom = chunkYF6JD4DO_js.useZoomViewport({
32546
+ const zoom = chunkLXUMBK2O_js.useZoomViewport({
32565
32547
  canvasSize,
32566
32548
  selectedElements: state.selectedElements
32567
32549
  });
32568
- const history = chunkYF6JD4DO_js.useEditorHistory({
32550
+ const history = chunkLXUMBK2O_js.useEditorHistory({
32569
32551
  slides,
32570
32552
  canvasSize,
32571
32553
  activeSlideIndex,
@@ -32587,7 +32569,7 @@ var PowerPointViewer = React14.forwardRef(
32587
32569
  setEditTemplateMode: state.setEditTemplateMode,
32588
32570
  setHeaderFooter: state.setHeaderFooter
32589
32571
  });
32590
- const { presentation, annotations, actionSoundHandlerRef } = chunkYF6JD4DO_js.usePresentationSetup({
32572
+ const { presentation, annotations, actionSoundHandlerRef } = chunkLXUMBK2O_js.usePresentationSetup({
32591
32573
  mode,
32592
32574
  slides,
32593
32575
  visibleSlideIndexes,
@@ -32601,7 +32583,7 @@ var PowerPointViewer = React14.forwardRef(
32601
32583
  setSlides: state.setSlides,
32602
32584
  history
32603
32585
  });
32604
- chunkYF6JD4DO_js.useTouchGestures({
32586
+ chunkLXUMBK2O_js.useTouchGestures({
32605
32587
  targetRef: zoom.canvasViewportRef,
32606
32588
  currentScale: zoom.scale,
32607
32589
  callbacks: {
@@ -32623,7 +32605,7 @@ var PowerPointViewer = React14.forwardRef(
32623
32605
  },
32624
32606
  enabled: isTouchDevice
32625
32607
  });
32626
- const dialogs = chunkYF6JD4DO_js.useViewerDialogs({
32608
+ const dialogs = chunkLXUMBK2O_js.useViewerDialogs({
32627
32609
  mode,
32628
32610
  slides,
32629
32611
  activeSlide,
@@ -32664,7 +32646,7 @@ var PowerPointViewer = React14.forwardRef(
32664
32646
  zoom.handleZoomToFit();
32665
32647
  zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
32666
32648
  }, [mode]);
32667
- const editorOps = chunkYF6JD4DO_js.useEditorOperations({
32649
+ const editorOps = chunkLXUMBK2O_js.useEditorOperations({
32668
32650
  state,
32669
32651
  history,
32670
32652
  zoom,
@@ -32696,7 +32678,7 @@ var PowerPointViewer = React14.forwardRef(
32696
32678
  autosaveStatus,
32697
32679
  isEncryptedDialogOpen,
32698
32680
  setIsEncryptedDialogOpen
32699
- } = chunkYF6JD4DO_js.useViewerIntegration({
32681
+ } = chunkLXUMBK2O_js.useViewerIntegration({
32700
32682
  state,
32701
32683
  zoom,
32702
32684
  history,
@@ -33055,7 +33037,7 @@ function CollaborationDocumentSync({
33055
33037
  }
33056
33038
  return bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
33057
33039
  }, []);
33058
- chunkYF6JD4DO_js.useYjsDocumentSync({
33040
+ chunkLXUMBK2O_js.useYjsDocumentSync({
33059
33041
  doc: collab?.doc ?? null,
33060
33042
  slides,
33061
33043
  templateElementsBySlideId,
@@ -33073,13 +33055,13 @@ function CollaborationFollowLayer({
33073
33055
  slideCount
33074
33056
  }) {
33075
33057
  const collab = useCollaboration();
33076
- const { followedClientId, followUser } = chunkYF6JD4DO_js.useFollowMode({
33058
+ const { followedClientId, followUser } = chunkLXUMBK2O_js.useFollowMode({
33077
33059
  collab,
33078
33060
  activeSlideIndex,
33079
33061
  setActiveSlideIndex,
33080
33062
  slideCount
33081
33063
  });
33082
- chunkYF6JD4DO_js.useBroadcastFollower({
33064
+ chunkLXUMBK2O_js.useBroadcastFollower({
33083
33065
  collab,
33084
33066
  activeSlideIndex,
33085
33067
  setActiveSlideIndex,