pptx-react-viewer 4.42.0 → 4.42.1

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 (60) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/{AiChatPanel-IDP326YW.mjs → AiChatPanel-R5UTSMXU.mjs} +1 -1
  3. package/dist/AiChatPanel-R5UTSMXU.mjs.br +0 -0
  4. package/dist/AiChatPanel-R5UTSMXU.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-KEVVVR7C.js → AiChatPanel-VI2IQ7XU.js} +9 -9
  6. package/dist/AiChatPanel-VI2IQ7XU.js.br +0 -0
  7. package/dist/AiChatPanel-VI2IQ7XU.js.gz +0 -0
  8. package/dist/{chunk-36H3P2PB.js → chunk-2XVYVT25.js} +383 -383
  9. package/dist/chunk-2XVYVT25.js.br +0 -0
  10. package/dist/chunk-2XVYVT25.js.gz +0 -0
  11. package/dist/{chunk-MNT2CXDI.mjs → chunk-3LIHPZKS.mjs} +22 -22
  12. package/dist/chunk-3LIHPZKS.mjs.br +0 -0
  13. package/dist/chunk-3LIHPZKS.mjs.gz +0 -0
  14. package/dist/{chunk-3PKYNJJG.js → chunk-FKY33ZKL.js} +21 -21
  15. package/dist/chunk-FKY33ZKL.js.br +0 -0
  16. package/dist/chunk-FKY33ZKL.js.gz +0 -0
  17. package/dist/{chunk-QJ4X7Y7S.js → chunk-GLWV52C6.js} +248 -245
  18. package/dist/chunk-GLWV52C6.js.br +0 -0
  19. package/dist/chunk-GLWV52C6.js.gz +0 -0
  20. package/dist/{chunk-MPKUCUHD.mjs → chunk-PZUBHPGJ.mjs} +4 -4
  21. package/dist/chunk-PZUBHPGJ.mjs.br +0 -0
  22. package/dist/chunk-PZUBHPGJ.mjs.gz +0 -0
  23. package/dist/{chunk-EQTNWM5Y.mjs → chunk-UACDKMXF.mjs} +4 -1
  24. package/dist/chunk-UACDKMXF.mjs.br +0 -0
  25. package/dist/chunk-UACDKMXF.mjs.gz +0 -0
  26. package/dist/index.js +24 -24
  27. package/dist/index.js.br +0 -0
  28. package/dist/index.js.gz +0 -0
  29. package/dist/index.mjs +3 -3
  30. package/dist/index.mjs.br +0 -0
  31. package/dist/index.mjs.gz +0 -0
  32. package/dist/internals.js +81 -81
  33. package/dist/internals.js.br +0 -0
  34. package/dist/internals.js.gz +0 -0
  35. package/dist/internals.mjs +2 -2
  36. package/dist/internals.mjs.br +0 -0
  37. package/dist/internals.mjs.gz +0 -0
  38. package/dist/viewer/index.js +19 -19
  39. package/dist/viewer/index.js.br +0 -0
  40. package/dist/viewer/index.js.gz +0 -0
  41. package/dist/viewer/index.mjs +3 -3
  42. package/dist/viewer/index.mjs.br +2 -3
  43. package/dist/viewer/index.mjs.gz +0 -0
  44. package/package.json +8 -8
  45. package/dist/AiChatPanel-IDP326YW.mjs.br +0 -0
  46. package/dist/AiChatPanel-IDP326YW.mjs.gz +0 -0
  47. package/dist/AiChatPanel-KEVVVR7C.js.br +0 -0
  48. package/dist/AiChatPanel-KEVVVR7C.js.gz +0 -0
  49. package/dist/chunk-36H3P2PB.js.br +0 -0
  50. package/dist/chunk-36H3P2PB.js.gz +0 -0
  51. package/dist/chunk-3PKYNJJG.js.br +0 -0
  52. package/dist/chunk-3PKYNJJG.js.gz +0 -0
  53. package/dist/chunk-EQTNWM5Y.mjs.br +0 -0
  54. package/dist/chunk-EQTNWM5Y.mjs.gz +0 -0
  55. package/dist/chunk-MNT2CXDI.mjs.br +0 -0
  56. package/dist/chunk-MNT2CXDI.mjs.gz +0 -0
  57. package/dist/chunk-MPKUCUHD.mjs.br +0 -0
  58. package/dist/chunk-MPKUCUHD.mjs.gz +0 -0
  59. package/dist/chunk-QJ4X7Y7S.js.br +0 -0
  60. package/dist/chunk-QJ4X7Y7S.js.gz +0 -0
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkQJ4X7Y7S_js = require('./chunk-QJ4X7Y7S.js');
4
- var chunk3PKYNJJG_js = require('./chunk-3PKYNJJG.js');
3
+ var chunkGLWV52C6_js = require('./chunk-GLWV52C6.js');
4
+ var chunkFKY33ZKL_js = require('./chunk-FKY33ZKL.js');
5
5
  var pptx = require('ooxml-ui/pptx');
6
6
  var React105 = require('react');
7
7
  var jsxRuntime = require('react/jsx-runtime');
@@ -307,7 +307,7 @@ function SlideTemplatePreview({
307
307
  transformOrigin: "top left"
308
308
  },
309
309
  children: previewSlide.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
310
- chunkQJ4X7Y7S_js.StaticElementRenderer,
310
+ chunkGLWV52C6_js.StaticElementRenderer,
311
311
  {
312
312
  element,
313
313
  activeSlide: previewSlide,
@@ -376,7 +376,7 @@ function SlideTemplateGalleryDialog({
376
376
  scheme
377
377
  }) {
378
378
  const { t } = reactI18next.useTranslation();
379
- const { panelStyle, handlers: dragHandlers } = chunkQJ4X7Y7S_js.useModalDismissDrag(onClose);
379
+ const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onClose);
380
380
  const [selected, setSelected] = React105.useState(null);
381
381
  const dialogRef = React105.useRef(null);
382
382
  useModalFocus(isOpen, dialogRef, onClose);
@@ -459,7 +459,7 @@ function SlideTemplateGalleryDialog({
459
459
  onInsert(spec.id);
460
460
  onClose();
461
461
  },
462
- className: chunk3PKYNJJG_js.cn(
462
+ className: chunkFKY33ZKL_js.cn(
463
463
  "flex flex-col items-center gap-1 p-2 rounded border transition-colors",
464
464
  selected === spec.id ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
465
465
  ),
@@ -868,7 +868,7 @@ function MobileSheet({
868
868
  }) {
869
869
  const sheetRef = React105.useRef(null);
870
870
  const { t } = reactI18next.useTranslation();
871
- const { dragY, dragging, handlers } = chunkQJ4X7Y7S_js.useSheetDismissDrag(onClose);
871
+ const { dragY, dragging, handlers } = chunkGLWV52C6_js.useSheetDismissDrag(onClose);
872
872
  useModalFocus(open, sheetRef, onClose);
873
873
  if (!open) {
874
874
  return null;
@@ -892,7 +892,7 @@ function MobileSheet({
892
892
  "aria-modal": "true",
893
893
  "aria-label": typeof title === "string" ? title : t("pptx.mobileSheet.ariaLabel"),
894
894
  tabIndex: -1,
895
- className: chunk3PKYNJJG_js.cn(
895
+ className: chunkFKY33ZKL_js.cn(
896
896
  "relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
897
897
  "animate-in slide-in-from-bottom duration-200",
898
898
  className
@@ -1136,7 +1136,7 @@ function WebHomeControls({
1136
1136
  function ShapeArrangeExtras(p) {
1137
1137
  const commands = useShapeFormatContext();
1138
1138
  const crop = commands?.crop;
1139
- const { isHidden } = chunkQJ4X7Y7S_js.useToolbarVisibility(p.hiddenActions);
1139
+ const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(p.hiddenActions);
1140
1140
  const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
1141
1141
  const controls = React105.useMemo(
1142
1142
  () => pptx.arrangeShapeHomeControls({
@@ -1471,7 +1471,7 @@ function TransitionsSection(p) {
1471
1471
  case "soundPreview": {
1472
1472
  const url = pptx.ribbonTransitionStockSoundUrl(transition);
1473
1473
  if (url) {
1474
- chunkQJ4X7Y7S_js.playAnimationSound(url);
1474
+ chunkGLWV52C6_js.playAnimationSound(url);
1475
1475
  }
1476
1476
  break;
1477
1477
  }
@@ -1667,7 +1667,7 @@ function AccountPage() {
1667
1667
  return void 0;
1668
1668
  });
1669
1669
  };
1670
- const version = "4.42.0" ;
1670
+ const version = "4.42.1" ;
1671
1671
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
1672
1672
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
1673
1673
  /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -1707,7 +1707,7 @@ function AccountPage() {
1707
1707
  "aria-label": color,
1708
1708
  "aria-pressed": profile.avatarColor === color,
1709
1709
  onClick: () => updateProfile({ avatarColor: color }),
1710
- className: chunk3PKYNJJG_js.cn(
1710
+ className: chunkFKY33ZKL_js.cn(
1711
1711
  "size-7 rounded-full border-2 transition-transform",
1712
1712
  profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
1713
1713
  ),
@@ -1931,7 +1931,7 @@ function FileSection(p) {
1931
1931
  const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
1932
1932
  const [query, setQuery] = React105.useState("");
1933
1933
  const [recent, setRecent] = React105.useState([]);
1934
- const { isHidden } = chunkQJ4X7Y7S_js.useToolbarVisibility(p.hiddenActions);
1934
+ const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(p.hiddenActions);
1935
1935
  const exportHidden = isHidden("export");
1936
1936
  React105.useEffect(() => {
1937
1937
  void pptx.listBackstageRecentFiles(t, p.recentPresentationsCount).then(setRecent);
@@ -2179,7 +2179,7 @@ function RibbonMenu({
2179
2179
  return /* @__PURE__ */ jsxRuntime.jsx(
2180
2180
  "div",
2181
2181
  {
2182
- className: chunk3PKYNJJG_js.cn("fixed z-50", className),
2182
+ className: chunkFKY33ZKL_js.cn("fixed z-50", className),
2183
2183
  style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
2184
2184
  children
2185
2185
  }
@@ -2205,7 +2205,7 @@ function LayoutGalleryMenu(p) {
2205
2205
  type: "button",
2206
2206
  "aria-current": isCurrent ? "true" : void 0,
2207
2207
  title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
2208
- className: chunk3PKYNJJG_js.cn(
2208
+ className: chunkFKY33ZKL_js.cn(
2209
2209
  "relative flex min-w-0 flex-col items-center gap-1 rounded border-2 p-1 text-xs text-foreground transition-colors hover:bg-muted",
2210
2210
  isCurrent ? "border-primary bg-primary/10" : "border-transparent"
2211
2211
  ),
@@ -2279,7 +2279,7 @@ function LayoutArtwork({
2279
2279
  backgroundColor
2280
2280
  };
2281
2281
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
2282
- chunkQJ4X7Y7S_js.StaticElementRenderer,
2282
+ chunkGLWV52C6_js.StaticElementRenderer,
2283
2283
  {
2284
2284
  element,
2285
2285
  activeSlide: slide,
@@ -2674,7 +2674,7 @@ function CustomShowsControls({
2674
2674
  {
2675
2675
  type: "button",
2676
2676
  onClick: onToggleCurrentSlideInActiveShow,
2677
- className: chunk3PKYNJJG_js.cn(
2677
+ className: chunkFKY33ZKL_js.cn(
2678
2678
  "px-2 py-1 rounded text-[11px] transition-colors",
2679
2679
  isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
2680
2680
  ),
@@ -2729,7 +2729,7 @@ function SlideShowOptions({
2729
2729
  }
2730
2730
  function SubtitleSettingsControl() {
2731
2731
  const { t } = reactI18next.useTranslation();
2732
- const supplied = React105.useContext(chunkQJ4X7Y7S_js.ViewerOptionsStoreContext);
2732
+ const supplied = React105.useContext(chunkGLWV52C6_js.ViewerOptionsStoreContext);
2733
2733
  const fallback = React105.useRef(null);
2734
2734
  if (!supplied) {
2735
2735
  fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
@@ -2763,7 +2763,7 @@ function SubtitleSettingsControl() {
2763
2763
  }
2764
2764
  function SlideShowSection(p) {
2765
2765
  const { t } = reactI18next.useTranslation();
2766
- const { isHidden } = chunkQJ4X7Y7S_js.useToolbarVisibility(p.hiddenActions);
2766
+ const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(p.hiddenActions);
2767
2767
  const [showsOpen, setShowsOpen] = React105.useState(false);
2768
2768
  const showsRef = React105.useRef(null);
2769
2769
  React105.useEffect(() => {
@@ -2844,7 +2844,7 @@ function extractFontInfo(element, themeFonts) {
2844
2844
  fontFamily: pptx.resolveDefaultFontFamily(placeholderType, themeFonts),
2845
2845
  fontSize: "24"
2846
2846
  };
2847
- if (!element || !(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element)) {
2847
+ if (!element || !(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element)) {
2848
2848
  return defaults;
2849
2849
  }
2850
2850
  const segStyle = element.textSegments?.[0]?.style;
@@ -2865,7 +2865,7 @@ function getEffectiveTextStyle(element, tableEditorState) {
2865
2865
  if (!element) {
2866
2866
  return void 0;
2867
2867
  }
2868
- if ((0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element)) {
2868
+ if ((0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element)) {
2869
2869
  return element.textStyle;
2870
2870
  }
2871
2871
  if (element.type === "table" && tableEditorState && element.tableData) {
@@ -2878,7 +2878,7 @@ function isTextDecorationFlag(id) {
2878
2878
  return pptx.TEXT_DECORATION_FLAGS.includes(id);
2879
2879
  }
2880
2880
  function textSectionFlags(element, tableEditorState, readSelection) {
2881
- if (element && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element)) {
2881
+ if (element && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element)) {
2882
2882
  const result = readSelection ? pptx.getInlineEditorSelectionResult(element.textSegments) : null;
2883
2883
  const current = result?.kind === "supported" && (!result.snapshot || result.snapshot.elementId === element.id) ? result : null;
2884
2884
  return pptx.getSelectionTextStyleFlags(
@@ -2894,7 +2894,7 @@ function textSectionFlags(element, tableEditorState, readSelection) {
2894
2894
  );
2895
2895
  }
2896
2896
  function textSectionBulletKind(element, tableEditorState) {
2897
- if (element && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element)) {
2897
+ if (element && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element)) {
2898
2898
  const result = pptx.getInlineEditorSelectionResult(element.textSegments, { preserveCaret: true });
2899
2899
  return result.kind === "supported" && (!result.snapshot || result.snapshot.elementId === element.id) ? pptx.selectionBulletKind(element, result.selection, result.snapshot?.textSegments) : pptx.elementBulletKind(element);
2900
2900
  }
@@ -3131,7 +3131,7 @@ function subscribe(onChange) {
3131
3131
  }
3132
3132
  function useParagraphListKind(element) {
3133
3133
  const read = React105.useCallback(() => {
3134
- if (!element || !(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element)) {
3134
+ if (!element || !(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element)) {
3135
3135
  return "none";
3136
3136
  }
3137
3137
  const result = pptx.getInlineEditorSelectionResult(element.textSegments, { preserveCaret: true });
@@ -3154,7 +3154,7 @@ function TextSection(p) {
3154
3154
  const hasSel = Boolean(p.selectedElement);
3155
3155
  const canMut = hasSel && p.canEdit;
3156
3156
  const { fontFamily, fontSize } = extractFontInfo(p.selectedElement, p.themeFonts);
3157
- const isTextEl = hasSel && p.selectedElement !== null && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(p.selectedElement);
3157
+ const isTextEl = hasSel && p.selectedElement !== null && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(p.selectedElement);
3158
3158
  const isTable = hasSel && p.selectedElement?.type === "table";
3159
3159
  const canFormat = isTextEl || isTable;
3160
3160
  const effectiveTs = getEffectiveTextStyle(p.selectedElement, p.tableEditorState);
@@ -3164,15 +3164,15 @@ function TextSection(p) {
3164
3164
  if (!p.canEdit || !canFormat || !p.selectedElement) {
3165
3165
  return;
3166
3166
  }
3167
- if ((0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(p.selectedElement)) {
3167
+ if ((0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(p.selectedElement)) {
3168
3168
  p.onToggleBullets(kind);
3169
3169
  return;
3170
3170
  }
3171
3171
  p.onUpdateTextStyle({ listType: effectiveTs?.listType === kind ? "none" : kind });
3172
3172
  };
3173
- const currentColor = isTextEl && p.selectedElement && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.color ?? p.selectedElement.textStyle?.color ?? "#000000" : effectiveTs?.color ?? "#000000";
3174
- const currentColorThemeRef = isTextEl && p.selectedElement && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.colorRef ?? p.selectedElement.textStyle?.colorRef : void 0;
3175
- const currentHighlight = isTextEl && p.selectedElement && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.highlightColor ?? p.selectedElement.textStyle?.highlightColor ?? "#ffff00" : "#ffff00";
3173
+ const currentColor = isTextEl && p.selectedElement && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.color ?? p.selectedElement.textStyle?.color ?? "#000000" : effectiveTs?.color ?? "#000000";
3174
+ const currentColorThemeRef = isTextEl && p.selectedElement && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.colorRef ?? p.selectedElement.textStyle?.colorRef : void 0;
3175
+ const currentHighlight = isTextEl && p.selectedElement && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.highlightColor ?? p.selectedElement.textStyle?.highlightColor ?? "#ffff00" : "#ffff00";
3176
3176
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3177
3177
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-0.5", ...groupAttr("home.font"), children: [
3178
3178
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", "data-pptx-chrome": "font-controls", children: [
@@ -3187,7 +3187,7 @@ function TextSection(p) {
3187
3187
  customFonts: p.customFontFamilies,
3188
3188
  onFamily: (family) => p.onUpdateTextStyle({ fontFamily: family }),
3189
3189
  onSize: (size) => p.onUpdateTextStyle({
3190
- fontSize: p.selectedElement && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(p.selectedElement) ? pptx.textFontSizePtToPx(size) : size
3190
+ fontSize: p.selectedElement && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(p.selectedElement) ? pptx.textFontSizePtToPx(size) : size
3191
3191
  })
3192
3192
  }
3193
3193
  ),
@@ -3302,7 +3302,7 @@ function MobileMenuSheet(props) {
3302
3302
  const { t } = reactI18next.useTranslation();
3303
3303
  const { open, onClose } = props;
3304
3304
  const [active, setActive] = React105.useState("home");
3305
- const { isTabVisible } = chunkQJ4X7Y7S_js.useToolbarVisibility(props.hiddenActions);
3305
+ const { isTabVisible } = chunkGLWV52C6_js.useToolbarVisibility(props.hiddenActions);
3306
3306
  return /* @__PURE__ */ jsxRuntime.jsx(
3307
3307
  MobileSheet,
3308
3308
  {
@@ -3316,7 +3316,7 @@ function MobileMenuSheet(props) {
3316
3316
  {
3317
3317
  type: "button",
3318
3318
  onClick: () => setActive(active === key ? null : key),
3319
- className: chunk3PKYNJJG_js.cn(
3319
+ className: chunkFKY33ZKL_js.cn(
3320
3320
  "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]",
3321
3321
  active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
3322
3322
  ),
@@ -3591,7 +3591,7 @@ function MobileToolbar(props) {
3591
3591
  const { t } = reactI18next.useTranslation();
3592
3592
  const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
3593
3593
  const [menuOpen, setMenuOpen] = React105.useState(false);
3594
- const { isHidden } = chunkQJ4X7Y7S_js.useToolbarVisibility(props.hiddenActions);
3594
+ const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(props.hiddenActions);
3595
3595
  const showEdit = mode === "edit" || mode === "master";
3596
3596
  const hidden = [];
3597
3597
  if (isHidden("undo")) {
@@ -3638,7 +3638,7 @@ function MobileToolbar(props) {
3638
3638
  }
3639
3639
  function ChartSelectionStrip() {
3640
3640
  const { t } = reactI18next.useTranslation();
3641
- const commands = chunkQJ4X7Y7S_js.useChartFormatContext();
3641
+ const commands = chunkGLWV52C6_js.useChartFormatContext();
3642
3642
  const chart = commands?.chart;
3643
3643
  const chartData = chart?.type === "chart" ? chart.chartData : void 0;
3644
3644
  const controls = React105.useMemo(
@@ -3669,7 +3669,7 @@ function PictureSizeStrip({
3669
3669
  hiddenActions
3670
3670
  }) {
3671
3671
  const crop = useShapeFormatContext()?.crop;
3672
- const { isHidden } = chunkQJ4X7Y7S_js.useToolbarVisibility(hiddenActions);
3672
+ const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(hiddenActions);
3673
3673
  const controls = React105.useMemo(
3674
3674
  () => pptx.pictureSizeHomeControls({
3675
3675
  editable: Boolean(crop),
@@ -3713,7 +3713,7 @@ function DrawingGroup(p) {
3713
3713
  const { recentColors, pushColor } = useRecentColors();
3714
3714
  const themeColors = useThemeColorMap();
3715
3715
  const commands = useRibbonGalleryCommands();
3716
- const style = p.selectedElement && (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(p.selectedElement) ? p.selectedElement.shapeStyle : void 0;
3716
+ const style = p.selectedElement && (0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(p.selectedElement) ? p.selectedElement.shapeStyle : void 0;
3717
3717
  const { onMoveLayer, onMoveLayerToEdge, onSetNewShapeType, onAddShape, onUpdateElementStyle } = p;
3718
3718
  const hasSelection = Boolean(p.selectedElement);
3719
3719
  const controls = React105.useMemo(
@@ -3842,7 +3842,7 @@ var TAB_BASE = "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap t
3842
3842
  var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
3843
3843
  function RibbonTabBar(p) {
3844
3844
  const { t } = reactI18next.useTranslation();
3845
- const viewerOptions = chunkQJ4X7Y7S_js.useViewerOptionsContext();
3845
+ const viewerOptions = chunkGLWV52C6_js.useViewerOptionsContext();
3846
3846
  return /* @__PURE__ */ jsxRuntime.jsxs(
3847
3847
  "div",
3848
3848
  {
@@ -3850,7 +3850,7 @@ function RibbonTabBar(p) {
3850
3850
  "data-pptx-chrome": "ribbon-tabs",
3851
3851
  className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
3852
3852
  children: [
3853
- chunk3PKYNJJG_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
3853
+ chunkFKY33ZKL_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
3854
3854
  const selected = p.activeSection === s.id;
3855
3855
  return /* @__PURE__ */ jsxRuntime.jsx(
3856
3856
  "button",
@@ -3860,7 +3860,7 @@ function RibbonTabBar(p) {
3860
3860
  "aria-selected": selected,
3861
3861
  title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
3862
3862
  onClick: () => p.onSelectSection(s.id),
3863
- className: chunk3PKYNJJG_js.cn(
3863
+ className: chunkFKY33ZKL_js.cn(
3864
3864
  TAB_BASE,
3865
3865
  selected ? s.id === "file" ? "text-white bg-primary/80 rounded-sm" : `text-foreground ${TAB_UNDERLINE}` : s.id === "file" ? "text-primary hover:bg-primary/15 rounded-sm" : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
3866
3866
  ),
@@ -3880,7 +3880,7 @@ function RibbonTabBar(p) {
3880
3880
  ...{ [pptx.RIBBON_ADD_IN_TAB_ATTR]: tab.id },
3881
3881
  title: pptx.resolveScreenTip(viewerOptions, tab.label),
3882
3882
  onClick: () => p.onSelectAddIn?.(tab.id),
3883
- className: chunk3PKYNJJG_js.cn(
3883
+ className: chunkFKY33ZKL_js.cn(
3884
3884
  TAB_BASE,
3885
3885
  selected ? `text-foreground ${TAB_UNDERLINE}` : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
3886
3886
  ),
@@ -3901,7 +3901,7 @@ function RibbonTabBar(p) {
3901
3901
  ...{ [pptx.RIBBON_CONTEXTUAL_TAB_ATTR]: id },
3902
3902
  title: pptx.resolveScreenTip(viewerOptions, label),
3903
3903
  onClick: () => p.onSelectContextual(id),
3904
- className: chunk3PKYNJJG_js.cn(
3904
+ className: chunkFKY33ZKL_js.cn(
3905
3905
  TAB_BASE,
3906
3906
  "text-primary",
3907
3907
  selected ? TAB_UNDERLINE : "hover:bg-primary/10"
@@ -3919,9 +3919,9 @@ function RibbonTabBar(p) {
3919
3919
  }
3920
3920
  function TabRowActions(p) {
3921
3921
  const { t } = reactI18next.useTranslation();
3922
- const collab = chunkQJ4X7Y7S_js.useCollaboration();
3922
+ const collab = chunkGLWV52C6_js.useCollaboration();
3923
3923
  const isCollaborating = Boolean(collab && collab.status === "connected");
3924
- const { isHidden } = chunkQJ4X7Y7S_js.useToolbarVisibility(p.hiddenActions);
3924
+ const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(p.hiddenActions);
3925
3925
  const customization = useViewerCustomizationContext();
3926
3926
  const ref = React105.useRef(null);
3927
3927
  const handlers = React105.useRef(p);
@@ -3976,7 +3976,7 @@ function TabRowActions(p) {
3976
3976
  }
3977
3977
  function TitleBarElement(p) {
3978
3978
  const { t } = reactI18next.useTranslation();
3979
- const options = chunkQJ4X7Y7S_js.useViewerOptionsContext();
3979
+ const options = chunkGLWV52C6_js.useViewerOptionsContext();
3980
3980
  const customization = useViewerCustomizationContext();
3981
3981
  const ref = React105.useRef(null);
3982
3982
  const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
@@ -4049,7 +4049,7 @@ function PresentDropdown({
4049
4049
  {
4050
4050
  type: "button",
4051
4051
  onClick: onPresent,
4052
- className: chunk3PKYNJJG_js.cn(
4052
+ className: chunkFKY33ZKL_js.cn(
4053
4053
  "px-2 py-1 transition-colors",
4054
4054
  isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
4055
4055
  ),
@@ -4062,7 +4062,7 @@ function PresentDropdown({
4062
4062
  {
4063
4063
  type: "button",
4064
4064
  onClick: () => setOpen((prev) => !prev),
4065
- className: chunk3PKYNJJG_js.cn(
4065
+ className: chunkFKY33ZKL_js.cn(
4066
4066
  "inline-flex items-center px-1 transition-colors border-l border-border",
4067
4067
  open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
4068
4068
  ),
@@ -4265,7 +4265,7 @@ function OverflowMenu(p) {
4265
4265
  {
4266
4266
  type: "button",
4267
4267
  onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
4268
- className: chunk3PKYNJJG_js.cn(
4268
+ className: chunkFKY33ZKL_js.cn(
4269
4269
  "p-1.5 rounded transition-colors",
4270
4270
  p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
4271
4271
  ),
@@ -4312,7 +4312,7 @@ function ToolbarPrimaryRow(p) {
4312
4312
  onToggleSidebar,
4313
4313
  onToggleInspector
4314
4314
  } = p;
4315
- const collab = chunkQJ4X7Y7S_js.useCollaboration();
4315
+ const collab = chunkGLWV52C6_js.useCollaboration();
4316
4316
  const customization = useViewerCustomizationContext();
4317
4317
  const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
4318
4318
  const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
@@ -4330,7 +4330,7 @@ function ToolbarPrimaryRow(p) {
4330
4330
  {
4331
4331
  type: "button",
4332
4332
  onClick: onToggleSidebar,
4333
- className: chunk3PKYNJJG_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
4333
+ className: chunkFKY33ZKL_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
4334
4334
  title: t("pptx.toolbar.toggleSlidesPanel"),
4335
4335
  "aria-label": t("pptx.toolbar.toggleSlidesPanel"),
4336
4336
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
@@ -4391,7 +4391,7 @@ function ToolbarPrimaryRow(p) {
4391
4391
  {
4392
4392
  type: "button",
4393
4393
  onClick: onToggleInspector,
4394
- className: chunk3PKYNJJG_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
4394
+ className: chunkFKY33ZKL_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
4395
4395
  title: t("pptx.toolbar.toggleInspector"),
4396
4396
  "aria-label": t("pptx.toolbar.toggleInspector"),
4397
4397
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
@@ -4402,7 +4402,7 @@ function ToolbarPrimaryRow(p) {
4402
4402
  {
4403
4403
  type: "button",
4404
4404
  onClick: p.onToggleAiPanel,
4405
- className: chunk3PKYNJJG_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
4405
+ className: chunkFKY33ZKL_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
4406
4406
  title: t("pptx.toolbar.toggleAiAssistant"),
4407
4407
  "aria-label": t("pptx.toolbar.toggleAiAssistant"),
4408
4408
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
@@ -4413,7 +4413,7 @@ function ToolbarPrimaryRow(p) {
4413
4413
  {
4414
4414
  type: "button",
4415
4415
  onClick: p.onOpenSettings ?? p.onToggleShortcuts,
4416
- className: chunk3PKYNJJG_js.cn(qab, "text-muted-foreground"),
4416
+ className: chunkFKY33ZKL_js.cn(qab, "text-muted-foreground"),
4417
4417
  title: t("pptx.toolbar.settingsShortcuts"),
4418
4418
  "aria-label": t("pptx.toolbar.settings"),
4419
4419
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
@@ -4611,8 +4611,8 @@ function ToolbarLateTabs({
4611
4611
  function Toolbar(p) {
4612
4612
  const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
4613
4613
  const { t } = reactI18next.useTranslation();
4614
- const { isTabVisible } = chunkQJ4X7Y7S_js.useToolbarVisibility(p.hiddenActions);
4615
- const viewerOptions = chunkQJ4X7Y7S_js.useViewerOptionsContext();
4614
+ const { isTabVisible } = chunkGLWV52C6_js.useToolbarVisibility(p.hiddenActions);
4615
+ const viewerOptions = chunkGLWV52C6_js.useViewerOptionsContext();
4616
4616
  const customization = useViewerCustomizationContext();
4617
4617
  const belowInput = React105.useMemo(
4618
4618
  () => ({
@@ -4709,7 +4709,7 @@ function Toolbar(p) {
4709
4709
  {
4710
4710
  type: "button",
4711
4711
  onClick: p.onToggleCompactToolbar,
4712
- className: chunk3PKYNJJG_js.cn(
4712
+ className: chunkFKY33ZKL_js.cn(
4713
4713
  "px-2 py-1 rounded text-[11px] transition-colors mr-1",
4714
4714
  isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
4715
4715
  ),
@@ -4735,7 +4735,7 @@ function Toolbar(p) {
4735
4735
  {
4736
4736
  ref: attachOverflow,
4737
4737
  "data-pptx-chrome": "ribbon-content",
4738
- className: chunk3PKYNJJG_js.cn(
4738
+ className: chunkFKY33ZKL_js.cn(
4739
4739
  // Plain controls stay compact; labelled RibbonGroups opt into stretching.
4740
4740
  // `RibbonGroupScope` wraps controls in a `display: contents` div, so its
4741
4741
  // children are this row's flex items too and must not shrink (a shrunk
@@ -5596,7 +5596,7 @@ function DrawingOverlaySvg({
5596
5596
  onPointerDown,
5597
5597
  onPointerMove,
5598
5598
  onPointerUp,
5599
- children: isStrokeActive && liveStrokeView ? chunkQJ4X7Y7S_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
5599
+ children: isStrokeActive && liveStrokeView ? chunkGLWV52C6_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
5600
5600
  "path",
5601
5601
  {
5602
5602
  d: liveStrokeD,
@@ -5611,7 +5611,7 @@ function DrawingOverlaySvg({
5611
5611
  }
5612
5612
  );
5613
5613
  }
5614
- function GridOverlay({ canvasSize, gridSpacingPx = chunk3PKYNJJG_js.GRID_SIZE, visible }) {
5614
+ function GridOverlay({ canvasSize, gridSpacingPx = chunkFKY33ZKL_js.GRID_SIZE, visible }) {
5615
5615
  const spacing = Math.max(gridSpacingPx, 2);
5616
5616
  const patternId = React105.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
5617
5617
  if (!visible) {
@@ -6175,7 +6175,7 @@ function PictureCropOverlay({
6175
6175
  };
6176
6176
  };
6177
6177
  const { ghost, frame, handles } = overlay;
6178
- const src = chunkQJ4X7Y7S_js.imgSrc(element);
6178
+ const src = chunkGLWV52C6_js.imgSrc(element);
6179
6179
  return /* @__PURE__ */ jsxRuntime.jsxs(
6180
6180
  "div",
6181
6181
  {
@@ -6588,10 +6588,10 @@ function SelectionHandleOverlay({
6588
6588
  position: "absolute",
6589
6589
  left: element.x,
6590
6590
  top: element.y,
6591
- width: Math.max(element.width, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE),
6592
- height: Math.max(element.height, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE),
6593
- ["--pptx-selection-width"]: `${Math.max(element.width, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE)}px`,
6594
- ["--pptx-selection-height"]: `${Math.max(element.height, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE)}px`,
6591
+ width: Math.max(element.width, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE),
6592
+ height: Math.max(element.height, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE),
6593
+ ["--pptx-selection-width"]: `${Math.max(element.width, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE)}px`,
6594
+ ["--pptx-selection-height"]: `${Math.max(element.height, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE)}px`,
6595
6595
  // Every slide element carries an explicit numeric `zIndex` (see
6596
6596
  // `getContainerStyle`), so a sibling with no z-index at all paints
6597
6597
  // at the CSS "z-index: 0" level regardless of DOM order: any
@@ -6603,7 +6603,7 @@ function SelectionHandleOverlay({
6603
6603
  // (marquee z-50, connector overlay z-55/56) to match, well clear of
6604
6604
  // any realistic per-slide element count.
6605
6605
  zIndex: 58,
6606
- transform: chunk3PKYNJJG_js.getElementTransform(element),
6606
+ transform: chunkFKY33ZKL_js.getElementTransform(element),
6607
6607
  transformOrigin: "center",
6608
6608
  // Transparent everywhere a handle button is not, so a click that
6609
6609
  // misses every handle still reaches the shape (or whatever is
@@ -6615,14 +6615,14 @@ function SelectionHandleOverlay({
6615
6615
  onDoubleClick: (e) => onDoubleClick(element.id, e),
6616
6616
  onContextMenu: (e) => onContextMenu(element.id, e),
6617
6617
  children: /* @__PURE__ */ jsxRuntime.jsx(
6618
- chunkQJ4X7Y7S_js.ResizeHandles,
6618
+ chunkGLWV52C6_js.ResizeHandles,
6619
6619
  {
6620
6620
  elementId: element.id,
6621
6621
  adjustmentHandles,
6622
6622
  onResizePointerDown,
6623
6623
  onAdjustmentPointerDown,
6624
6624
  rotation: element.rotation,
6625
- nonRotationTransform: chunk3PKYNJJG_js.getElementTransformWithoutRotation(element),
6625
+ nonRotationTransform: chunkFKY33ZKL_js.getElementTransformWithoutRotation(element),
6626
6626
  onRotate: allow.rotatable ? onRotate : void 0,
6627
6627
  forcePointerEvents: true
6628
6628
  }
@@ -7326,7 +7326,7 @@ function SlideCanvas(props) {
7326
7326
  props.registerInlineEditReader
7327
7327
  ]
7328
7328
  );
7329
- return /* @__PURE__ */ jsxRuntime.jsx(chunkQJ4X7Y7S_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
7329
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
7330
7330
  }
7331
7331
  function SlideCanvasContent({
7332
7332
  imagePaste,
@@ -7595,7 +7595,7 @@ function SlideCanvasContent({
7595
7595
  onPointerMove: handleStagePointerMove,
7596
7596
  onPointerUp: handleStagePointerUp,
7597
7597
  children: [
7598
- /* @__PURE__ */ jsxRuntime.jsx(chunkQJ4X7Y7S_js.SlideBackgroundImageLayer, { slide: activeSlide }),
7598
+ /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.SlideBackgroundImageLayer, { slide: activeSlide }),
7599
7599
  presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
7600
7600
  /* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
7601
7601
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -7607,7 +7607,7 @@ function SlideCanvasContent({
7607
7607
  }
7608
7608
  ),
7609
7609
  templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
7610
- chunkQJ4X7Y7S_js.ElementRenderer,
7610
+ chunkGLWV52C6_js.ElementRenderer,
7611
7611
  {
7612
7612
  element,
7613
7613
  activeSlide,
@@ -7629,7 +7629,7 @@ function SlideCanvasContent({
7629
7629
  ),
7630
7630
  renderInk: false,
7631
7631
  renderGroups: true,
7632
- adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk3PKYNJJG_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
7632
+ adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkFKY33ZKL_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
7633
7633
  onResizePointerDown: stableResizePointerDown,
7634
7634
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
7635
7635
  onRotate: stableRotate,
@@ -7651,7 +7651,7 @@ function SlideCanvasContent({
7651
7651
  `tpl-${element.id}`
7652
7652
  )),
7653
7653
  activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
7654
- chunkQJ4X7Y7S_js.ElementRenderer,
7654
+ chunkGLWV52C6_js.ElementRenderer,
7655
7655
  {
7656
7656
  element,
7657
7657
  activeSlide,
@@ -7673,7 +7673,7 @@ function SlideCanvasContent({
7673
7673
  ),
7674
7674
  renderInk: true,
7675
7675
  renderGroups: true,
7676
- adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk3PKYNJJG_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
7676
+ adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkFKY33ZKL_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
7677
7677
  onResizePointerDown: stableResizePointerDown,
7678
7678
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
7679
7679
  onRotate: stableRotate,
@@ -7717,7 +7717,7 @@ function SlideCanvasContent({
7717
7717
  editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7718
7718
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
7719
7719
  /* @__PURE__ */ jsxRuntime.jsx(
7720
- chunkQJ4X7Y7S_js.ElementRenderer,
7720
+ chunkGLWV52C6_js.ElementRenderer,
7721
7721
  {
7722
7722
  element: editingMember.member,
7723
7723
  activeSlide,
@@ -7752,11 +7752,11 @@ function SlideCanvasContent({
7752
7752
  `group-member-edit-${editingMember.member.id}`
7753
7753
  )
7754
7754
  ] }),
7755
- selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunk3PKYNJJG_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
7755
+ selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunkFKY33ZKL_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
7756
7756
  SelectionHandleOverlay,
7757
7757
  {
7758
7758
  element: selectedElement,
7759
- adjustmentHandles: chunk3PKYNJJG_js.getShapeAdjustmentHandleDescriptors(selectedElement),
7759
+ adjustmentHandles: chunkFKY33ZKL_js.getShapeAdjustmentHandleDescriptors(selectedElement),
7760
7760
  onResizePointerDown: stableResizePointerDown,
7761
7761
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
7762
7762
  onRotate: stableRotate,
@@ -7870,7 +7870,7 @@ function LoadingState({ className }) {
7870
7870
  role: "status",
7871
7871
  "aria-live": "polite",
7872
7872
  "aria-atomic": "true",
7873
- className: chunk3PKYNJJG_js.cn(
7873
+ className: chunkFKY33ZKL_js.cn(
7874
7874
  "h-full w-full flex items-center justify-center text-muted-foreground",
7875
7875
  className
7876
7876
  ),
@@ -7893,7 +7893,7 @@ function ErrorState({ className, error }) {
7893
7893
  {
7894
7894
  role: "alert",
7895
7895
  "aria-live": "assertive",
7896
- className: chunk3PKYNJJG_js.cn(
7896
+ className: chunkFKY33ZKL_js.cn(
7897
7897
  "h-full w-full flex items-center justify-center p-6 text-center text-red-400",
7898
7898
  className
7899
7899
  ),
@@ -7924,7 +7924,7 @@ function ShortcutPanel({ isOpen, onClose }) {
7924
7924
  }
7925
7925
  )
7926
7926
  ] }),
7927
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunk3PKYNJJG_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
7927
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkFKY33ZKL_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
7928
7928
  "div",
7929
7929
  {
7930
7930
  className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
@@ -7984,14 +7984,14 @@ function AccessibilityPanel({
7984
7984
  "aria-label": t("pptx.accessibility.reduceMotion"),
7985
7985
  "aria-checked": reducedMotion ?? false,
7986
7986
  onClick: onToggleReducedMotion,
7987
- className: chunk3PKYNJJG_js.cn(
7987
+ className: chunkFKY33ZKL_js.cn(
7988
7988
  "relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
7989
7989
  reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
7990
7990
  ),
7991
7991
  children: /* @__PURE__ */ jsxRuntime.jsx(
7992
7992
  "span",
7993
7993
  {
7994
- className: chunk3PKYNJJG_js.cn(
7994
+ className: chunkFKY33ZKL_js.cn(
7995
7995
  "inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
7996
7996
  reducedMotion ? "translate-x-4" : "translate-x-0.5"
7997
7997
  )
@@ -8010,7 +8010,7 @@ function AccessibilityPanel({
8010
8010
  "div",
8011
8011
  {
8012
8012
  role: "listitem",
8013
- className: chunk3PKYNJJG_js.cn(
8013
+ className: chunkFKY33ZKL_js.cn(
8014
8014
  "flex items-start gap-2 rounded px-2 py-1.5 text-xs",
8015
8015
  /* Severity-based background and text colouring */
8016
8016
  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"
@@ -8170,7 +8170,7 @@ function ResizeHandle({
8170
8170
  {
8171
8171
  role: "separator",
8172
8172
  "aria-orientation": direction,
8173
- className: chunk3PKYNJJG_js.cn(
8173
+ className: chunkFKY33ZKL_js.cn(
8174
8174
  // Outer container: generous hit area for easy clicking.
8175
8175
  // The visible indicator is rendered via the inner pseudo-element (::after).
8176
8176
  "relative flex-shrink-0 z-20 group",
@@ -8181,7 +8181,7 @@ function ResizeHandle({
8181
8181
  children: /* @__PURE__ */ jsxRuntime.jsx(
8182
8182
  "div",
8183
8183
  {
8184
- className: chunk3PKYNJJG_js.cn(
8184
+ className: chunkFKY33ZKL_js.cn(
8185
8185
  "absolute transition-colors",
8186
8186
  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"
8187
8187
  )
@@ -8200,14 +8200,14 @@ function SlideThumbnailImpl({
8200
8200
  }) {
8201
8201
  const safeCanvasWidth = Math.max(canvasSize.width, 1);
8202
8202
  const safeCanvasHeight = Math.max(canvasSize.height, 1);
8203
- const width = previewWidth ?? chunk3PKYNJJG_js.SLIDE_NAV_THUMBNAIL_WIDTH;
8203
+ const width = previewWidth ?? chunkFKY33ZKL_js.SLIDE_NAV_THUMBNAIL_WIDTH;
8204
8204
  const scale = width / safeCanvasWidth;
8205
8205
  const previewHeight = pptx.editorThumbnailHeight(safeCanvasWidth, safeCanvasHeight, width);
8206
8206
  const previewElements = pptx.buildPreviewElements(slide, templateElements);
8207
8207
  const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
8208
8208
  const { t } = reactI18next.useTranslation();
8209
8209
  const transitionLabel = slide.transition ? (() => {
8210
- const opt = chunk3PKYNJJG_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
8210
+ const opt = chunkFKY33ZKL_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
8211
8211
  return opt ? t(opt.i18nKey) : slide.transition.type;
8212
8212
  })() : void 0;
8213
8213
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -8233,7 +8233,7 @@ function SlideThumbnailImpl({
8233
8233
  ...pptx.deviceStrokeStageStyle(scale)
8234
8234
  },
8235
8235
  children: [
8236
- /* @__PURE__ */ jsxRuntime.jsx(chunkQJ4X7Y7S_js.SlideBackgroundImageLayer, { slide }),
8236
+ /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.SlideBackgroundImageLayer, { slide }),
8237
8237
  slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsxRuntime.jsx(
8238
8238
  "div",
8239
8239
  {
@@ -8243,7 +8243,7 @@ function SlideThumbnailImpl({
8243
8243
  }
8244
8244
  ),
8245
8245
  previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
8246
- chunkQJ4X7Y7S_js.StaticElementRenderer,
8246
+ chunkGLWV52C6_js.StaticElementRenderer,
8247
8247
  {
8248
8248
  element,
8249
8249
  activeSlide: slide,
@@ -8418,7 +8418,7 @@ function ContextMenu(props) {
8418
8418
  const { t } = reactI18next.useTranslation();
8419
8419
  const customization = useViewerCustomizationContext();
8420
8420
  const shapeFormat = useShapeFormatContext();
8421
- const chartFormat = chunkQJ4X7Y7S_js.useChartFormatContext();
8421
+ const chartFormat = chunkGLWV52C6_js.useChartFormatContext();
8422
8422
  const open = Boolean(contextMenuState) && mode === "edit";
8423
8423
  const handlers = {
8424
8424
  ...contextMenuHandlers(props, shapeFormat),
@@ -8853,7 +8853,7 @@ function SectionHeader({
8853
8853
  /* @__PURE__ */ jsxRuntime.jsx(
8854
8854
  lu.LuChevronDown,
8855
8855
  {
8856
- className: chunk3PKYNJJG_js.cn(
8856
+ className: chunkFKY33ZKL_js.cn(
8857
8857
  "h-3 w-3 flex-shrink-0 transition-transform",
8858
8858
  isCollapsed ? "-rotate-90" : "rotate-0"
8859
8859
  )
@@ -9004,7 +9004,7 @@ function LazyThumbnailInner({
9004
9004
  }
9005
9005
  var LazyThumbnail = React105__default.default.memo(LazyThumbnailInner);
9006
9006
  function declaredSectionFacts(groups, sectionId) {
9007
- const declared = groups.filter((group) => group.id !== chunk3PKYNJJG_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunk3PKYNJJG_js.UNGROUPED_SECTION_ID).map((group) => group.id);
9007
+ const declared = groups.filter((group) => group.id !== chunkFKY33ZKL_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunkFKY33ZKL_js.UNGROUPED_SECTION_ID).map((group) => group.id);
9008
9008
  return {
9009
9009
  isDeclared: declared.includes(sectionId),
9010
9010
  index: declared.indexOf(sectionId),
@@ -9089,7 +9089,7 @@ function SlideItemInner({
9089
9089
  "data-pptx-chrome": "slide-row",
9090
9090
  "aria-describedby": cue.labelId,
9091
9091
  "data-pptx-slide-hidden": cue.marker,
9092
- className: chunk3PKYNJJG_js.cn(
9092
+ className: chunkFKY33ZKL_js.cn(
9093
9093
  "group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
9094
9094
  isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
9095
9095
  isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
@@ -9111,7 +9111,7 @@ function SlideItemInner({
9111
9111
  /* @__PURE__ */ jsxRuntime.jsx(
9112
9112
  "span",
9113
9113
  {
9114
- className: chunk3PKYNJJG_js.cn(
9114
+ className: chunkFKY33ZKL_js.cn(
9115
9115
  "text-[10px] tabular-nums text-right select-none w-full",
9116
9116
  isActive ? "text-primary font-medium" : "text-muted-foreground"
9117
9117
  ),
@@ -9134,7 +9134,7 @@ function SlideItemInner({
9134
9134
  /* @__PURE__ */ jsxRuntime.jsxs(
9135
9135
  "div",
9136
9136
  {
9137
- className: chunk3PKYNJJG_js.cn(
9137
+ className: chunkFKY33ZKL_js.cn(
9138
9138
  "relative shrink-0 overflow-hidden border transition-colors bg-white",
9139
9139
  isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
9140
9140
  ),
@@ -9333,7 +9333,7 @@ function SlidesPaneSidebar({
9333
9333
  tableStyleContext
9334
9334
  }) {
9335
9335
  const { t } = reactI18next.useTranslation();
9336
- const collab = chunkQJ4X7Y7S_js.useCollaboration();
9336
+ const collab = chunkGLWV52C6_js.useCollaboration();
9337
9337
  const slideRefs = React105.useRef(/* @__PURE__ */ new Map());
9338
9338
  const renameInputRef = React105.useRef(null);
9339
9339
  const slidePresenceMap = React105.useMemo(() => {
@@ -9358,7 +9358,7 @@ function SlidesPaneSidebar({
9358
9358
  () => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
9359
9359
  [canvasSize.width, canvasSize.height, previewWidth]
9360
9360
  );
9361
- const showSectionHeaders = sectionGroups.some((group) => group.id !== chunk3PKYNJJG_js.DEFAULT_SECTION_GROUP_ID);
9361
+ const showSectionHeaders = sectionGroups.some((group) => group.id !== chunkFKY33ZKL_js.DEFAULT_SECTION_GROUP_ID);
9362
9362
  const {
9363
9363
  collapsedSections,
9364
9364
  renamingSectionId,
@@ -9428,7 +9428,7 @@ function SlidesPaneSidebar({
9428
9428
  [sectionGroups, showSectionHeaders, effectiveCollapsed]
9429
9429
  );
9430
9430
  const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
9431
- const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkQJ4X7Y7S_js.useVirtualizedSlides({
9431
+ const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkGLWV52C6_js.useVirtualizedSlides({
9432
9432
  totalItems: shouldVirtualize ? flatItems.length : 0,
9433
9433
  itemHeight: estimatedItemHeight
9434
9434
  });
@@ -9685,7 +9685,7 @@ function HandoutMasterPanel({
9685
9685
  {
9686
9686
  type: "button",
9687
9687
  "aria-pressed": slidesPerPage === count,
9688
- className: chunk3PKYNJJG_js.cn(
9688
+ className: chunkFKY33ZKL_js.cn(
9689
9689
  "px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
9690
9690
  slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
9691
9691
  ),
@@ -9803,7 +9803,7 @@ function SlideMastersList({
9803
9803
  ref: isMasterActive ? activeRef : void 0,
9804
9804
  "aria-pressed": isMasterActive,
9805
9805
  "aria-label": master.name || t("pptx.master.master"),
9806
- className: chunk3PKYNJJG_js.cn(
9806
+ className: chunkFKY33ZKL_js.cn(
9807
9807
  "group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
9808
9808
  isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
9809
9809
  ),
@@ -9820,7 +9820,7 @@ function SlideMastersList({
9820
9820
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
9821
9821
  "span",
9822
9822
  {
9823
- className: chunk3PKYNJJG_js.cn(
9823
+ className: chunkFKY33ZKL_js.cn(
9824
9824
  "text-[10px] font-medium",
9825
9825
  isMasterActive ? "text-amber-400" : "text-muted-foreground"
9826
9826
  ),
@@ -9839,7 +9839,7 @@ function SlideMastersList({
9839
9839
  ref: isLayoutActive ? activeRef : void 0,
9840
9840
  "aria-pressed": isLayoutActive,
9841
9841
  "aria-label": layout.name || t("pptx.master.layout"),
9842
- className: chunk3PKYNJJG_js.cn(
9842
+ className: chunkFKY33ZKL_js.cn(
9843
9843
  "group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
9844
9844
  isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
9845
9845
  ),
@@ -9856,7 +9856,7 @@ function SlideMastersList({
9856
9856
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
9857
9857
  "span",
9858
9858
  {
9859
- className: chunk3PKYNJJG_js.cn(
9859
+ className: chunkFKY33ZKL_js.cn(
9860
9860
  "text-[9px]",
9861
9861
  isLayoutActive ? "text-primary" : "text-muted-foreground"
9862
9862
  ),
@@ -9948,7 +9948,7 @@ function MasterViewSidebar({
9948
9948
  type: "button",
9949
9949
  role: "tab",
9950
9950
  "aria-selected": masterViewTab === tab.key,
9951
- className: chunk3PKYNJJG_js.cn(
9951
+ className: chunkFKY33ZKL_js.cn(
9952
9952
  "flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
9953
9953
  masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
9954
9954
  ),
@@ -10451,7 +10451,7 @@ function SectionBlock({
10451
10451
  /* @__PURE__ */ jsxRuntime.jsx(
10452
10452
  lu.LuChevronDown,
10453
10453
  {
10454
- className: chunk3PKYNJJG_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
10454
+ className: chunkFKY33ZKL_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
10455
10455
  }
10456
10456
  ),
10457
10457
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
@@ -10500,7 +10500,7 @@ function SlideCardImpl({
10500
10500
  return /* @__PURE__ */ jsxRuntime.jsxs(
10501
10501
  "div",
10502
10502
  {
10503
- className: chunk3PKYNJJG_js.cn(
10503
+ className: chunkFKY33ZKL_js.cn(
10504
10504
  "group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
10505
10505
  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",
10506
10506
  slide.hidden && "opacity-40"
@@ -10523,7 +10523,7 @@ function SlideCardImpl({
10523
10523
  /* @__PURE__ */ jsxRuntime.jsx(
10524
10524
  "span",
10525
10525
  {
10526
- className: chunk3PKYNJJG_js.cn(
10526
+ className: chunkFKY33ZKL_js.cn(
10527
10527
  "text-[11px] font-medium px-0.5",
10528
10528
  isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
10529
10529
  ),
@@ -11293,7 +11293,7 @@ function ReadingViewStage({
11293
11293
  "div",
11294
11294
  {
11295
11295
  className: "absolute inset-0",
11296
- style: { backgroundColor: chunk3PKYNJJG_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
11296
+ style: { backgroundColor: chunkFKY33ZKL_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
11297
11297
  }
11298
11298
  ),
11299
11299
  slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
@@ -11312,7 +11312,7 @@ function ReadingViewStage({
11312
11312
  className: "absolute left-0 top-0 origin-top-left",
11313
11313
  style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
11314
11314
  children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
11315
- chunkQJ4X7Y7S_js.StaticElementRenderer,
11315
+ chunkGLWV52C6_js.StaticElementRenderer,
11316
11316
  {
11317
11317
  element,
11318
11318
  activeSlide: slide,
@@ -11524,7 +11524,7 @@ function renderRichNotesSegments(segments) {
11524
11524
  if (segment.style.fontFamily) {
11525
11525
  style.fontFamily = segment.style.fontFamily;
11526
11526
  }
11527
- if (segment.style.hyperlink && chunk3PKYNJJG_js.isUrlSafe(segment.style.hyperlink)) {
11527
+ if (segment.style.hyperlink && chunkFKY33ZKL_js.isUrlSafe(segment.style.hyperlink)) {
11528
11528
  const safeHref = segment.style.hyperlink;
11529
11529
  style.color = "#4a9eff";
11530
11530
  style.textDecoration = "underline";
@@ -11537,7 +11537,7 @@ function renderRichNotesSegments(segments) {
11537
11537
  style,
11538
11538
  onClick: (e) => {
11539
11539
  e.preventDefault();
11540
- chunk3PKYNJJG_js.safeOpenUrl(safeHref);
11540
+ chunkFKY33ZKL_js.safeOpenUrl(safeHref);
11541
11541
  },
11542
11542
  children: segment.text
11543
11543
  },
@@ -11886,7 +11886,7 @@ function useSlideNotes({
11886
11886
  const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
11887
11887
  if (href && (e.ctrlKey || e.metaKey)) {
11888
11888
  e.preventDefault();
11889
- chunk3PKYNJJG_js.safeOpenUrl(href);
11889
+ chunkFKY33ZKL_js.safeOpenUrl(href);
11890
11890
  }
11891
11891
  }, []);
11892
11892
  return {
@@ -11967,7 +11967,7 @@ function SlideNotesPanel({
11967
11967
  });
11968
11968
  const hasNotes = draft.trim().length > 0;
11969
11969
  const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
11970
- const { dragY, handlers: dragHandlers } = chunkQJ4X7Y7S_js.useSheetDismissDrag(onToggle);
11970
+ const { dragY, handlers: dragHandlers } = chunkGLWV52C6_js.useSheetDismissDrag(onToggle);
11971
11971
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11972
11972
  isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
11973
11973
  "button",
@@ -11983,7 +11983,7 @@ function SlideNotesPanel({
11983
11983
  {
11984
11984
  ref: rootRef,
11985
11985
  "data-pptx-chrome": "notes",
11986
- className: chunk3PKYNJJG_js.cn(
11986
+ className: chunkFKY33ZKL_js.cn(
11987
11987
  "flex flex-col border-t border-border/60 bg-background select-none",
11988
11988
  // On mobile, hide the entire notes strip when collapsed: the
11989
11989
  // MobileBottomBar's Notes button is the entry point instead.
@@ -12347,7 +12347,7 @@ function SlideDiffRow({
12347
12347
  return /* @__PURE__ */ jsxRuntime.jsxs(
12348
12348
  "div",
12349
12349
  {
12350
- className: chunk3PKYNJJG_js.cn(
12350
+ className: chunkFKY33ZKL_js.cn(
12351
12351
  "rounded-lg border transition-colors",
12352
12352
  isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
12353
12353
  ),
@@ -12361,7 +12361,7 @@ function SlideDiffRow({
12361
12361
  children: [
12362
12362
  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" }),
12363
12363
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
12364
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk3PKYNJJG_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
12364
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkFKY33ZKL_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
12365
12365
  diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
12366
12366
  diff.changes.length,
12367
12367
  " ",
@@ -12371,7 +12371,7 @@ function SlideDiffRow({
12371
12371
  isResolved && /* @__PURE__ */ jsxRuntime.jsx(
12372
12372
  "span",
12373
12373
  {
12374
- className: chunk3PKYNJJG_js.cn(
12374
+ className: chunkFKY33ZKL_js.cn(
12375
12375
  "text-[10px] font-medium",
12376
12376
  accepted ? "text-green-400" : "text-muted-foreground"
12377
12377
  ),
@@ -12399,7 +12399,7 @@ function SlideDiffRow({
12399
12399
  /* @__PURE__ */ jsxRuntime.jsx(
12400
12400
  "div",
12401
12401
  {
12402
- className: chunk3PKYNJJG_js.cn(
12402
+ className: chunkFKY33ZKL_js.cn(
12403
12403
  "rounded border overflow-hidden",
12404
12404
  diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
12405
12405
  ),
@@ -13104,7 +13104,7 @@ function DocumentPropertiesDialog({
13104
13104
  const handleClose = React105.useCallback(() => {
13105
13105
  onClose();
13106
13106
  }, [onClose]);
13107
- const { panelStyle, handlers: dragHandlers } = chunkQJ4X7Y7S_js.useModalDismissDrag(handleClose);
13107
+ const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(handleClose);
13108
13108
  if (!isOpen) {
13109
13109
  return null;
13110
13110
  }
@@ -13701,7 +13701,7 @@ function PresentationSubtitleBar({
13701
13701
  }) {
13702
13702
  const { t } = reactI18next.useTranslation();
13703
13703
  const language = pptx.subtitleRecognitionLanguage(
13704
- pptx.subtitleSettingsFromOptions(chunkQJ4X7Y7S_js.useViewerOptionsContext()),
13704
+ pptx.subtitleSettingsFromOptions(chunkGLWV52C6_js.useViewerOptionsContext()),
13705
13705
  typeof navigator === "undefined" ? "en-US" : navigator.language
13706
13706
  );
13707
13707
  const [captionText, setCaptionText] = React105.useState("");
@@ -13869,7 +13869,7 @@ function ScaledSlidePreviewImpl({
13869
13869
  {
13870
13870
  className: "absolute inset-0",
13871
13871
  style: {
13872
- backgroundColor: chunk3PKYNJJG_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
13872
+ backgroundColor: chunkFKY33ZKL_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
13873
13873
  }
13874
13874
  }
13875
13875
  ),
@@ -13895,7 +13895,7 @@ function ScaledSlidePreviewImpl({
13895
13895
  ...pptx.deviceStrokeStageStyle(scale)
13896
13896
  },
13897
13897
  children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
13898
- chunkQJ4X7Y7S_js.StaticElementRenderer,
13898
+ chunkGLWV52C6_js.StaticElementRenderer,
13899
13899
  {
13900
13900
  element,
13901
13901
  activeSlide: slide,
@@ -14612,7 +14612,7 @@ function getElementDisplayName(element, index) {
14612
14612
  if (element.name && element.name.trim().length > 0) {
14613
14613
  return element.name.trim();
14614
14614
  }
14615
- if ((0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element) && element.text && element.text.trim().length > 0) {
14615
+ if ((0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element) && element.text && element.text.trim().length > 0) {
14616
14616
  return element.text.trim().slice(0, 32);
14617
14617
  }
14618
14618
  const label = TYPE_LABELS[element.type] ?? "Object";
@@ -14785,7 +14785,7 @@ function SelectionPane({
14785
14785
  setDragIndex(null);
14786
14786
  setDragOverIndex(null);
14787
14787
  },
14788
- className: chunk3PKYNJJG_js.cn(
14788
+ className: chunkFKY33ZKL_js.cn(
14789
14789
  "flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
14790
14790
  isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
14791
14791
  dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
@@ -14839,13 +14839,13 @@ function SelectionPane({
14839
14839
  }
14840
14840
  var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
14841
14841
  var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
14842
- var ENTRANCE_PRESETS = chunk3PKYNJJG_js.ANIMATION_PRESET_OPTIONS.filter(
14842
+ var ENTRANCE_PRESETS = chunkFKY33ZKL_js.ANIMATION_PRESET_OPTIONS.filter(
14843
14843
  (o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
14844
14844
  );
14845
- var EXIT_PRESETS = chunk3PKYNJJG_js.ANIMATION_PRESET_OPTIONS.filter(
14845
+ var EXIT_PRESETS = chunkFKY33ZKL_js.ANIMATION_PRESET_OPTIONS.filter(
14846
14846
  (o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
14847
14847
  );
14848
- var EMPHASIS_PRESETS = chunk3PKYNJJG_js.ANIMATION_PRESET_OPTIONS.filter(
14848
+ var EMPHASIS_PRESETS = chunkFKY33ZKL_js.ANIMATION_PRESET_OPTIONS.filter(
14849
14849
  (o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
14850
14850
  );
14851
14851
  var TIMING_CURVE_OPTIONS = [
@@ -15012,7 +15012,7 @@ function AnimationTimelineSection({
15012
15012
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
15013
15013
  "div",
15014
15014
  {
15015
- className: chunk3PKYNJJG_js.cn(
15015
+ className: chunkFKY33ZKL_js.cn(
15016
15016
  "absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
15017
15017
  animationTypeColor(bar.anim),
15018
15018
  bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
@@ -15041,7 +15041,7 @@ function AnimationTimelineSection({
15041
15041
  onDragLeave: handleDragLeave,
15042
15042
  onDrop: (e) => handleDrop(index, e),
15043
15043
  title: t("pptx.animation.nativeEffectHint"),
15044
- className: chunk3PKYNJJG_js.cn(
15044
+ className: chunkFKY33ZKL_js.cn(
15045
15045
  "flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
15046
15046
  "bg-muted/20 text-muted-foreground/70",
15047
15047
  isDragOver && "border-t-2 border-primary"
@@ -15080,7 +15080,7 @@ function AnimationTimelineSection({
15080
15080
  onDragEnd: handleDragEnd,
15081
15081
  onMouseEnter: () => handleAnimationHover(anim),
15082
15082
  onMouseLeave: handleAnimationHoverEnd,
15083
- className: chunk3PKYNJJG_js.cn(
15083
+ className: chunkFKY33ZKL_js.cn(
15084
15084
  "flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
15085
15085
  isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
15086
15086
  isDragging && "opacity-40",
@@ -15212,7 +15212,7 @@ function EffectSoundRow({
15212
15212
  }
15213
15213
  const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
15214
15214
  if (asset) {
15215
- chunkQJ4X7Y7S_js.playAnimationSound(asset.dataUrl);
15215
+ chunkGLWV52C6_js.playAnimationSound(asset.dataUrl);
15216
15216
  }
15217
15217
  };
15218
15218
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -15387,7 +15387,7 @@ function useAnimationPreview({
15387
15387
  }) {
15388
15388
  const handleAnimationHover = React105.useCallback((anim) => {
15389
15389
  if (anim.motionPath) {
15390
- chunk3PKYNJJG_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
15390
+ chunkFKY33ZKL_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
15391
15391
  durationMs: anim.durationMs,
15392
15392
  delayMs: anim.delayMs,
15393
15393
  timingCurve: anim.timingCurve
@@ -15398,19 +15398,19 @@ function useAnimationPreview({
15398
15398
  if (!preset || preset === "none") {
15399
15399
  return;
15400
15400
  }
15401
- chunk3PKYNJJG_js.startPreviewAnimation(anim.elementId, preset, {
15401
+ chunkFKY33ZKL_js.startPreviewAnimation(anim.elementId, preset, {
15402
15402
  direction: anim.direction,
15403
15403
  durationMs: anim.durationMs ?? 500,
15404
15404
  timingCurve: anim.timingCurve
15405
15405
  });
15406
15406
  }, []);
15407
- const handleAnimationHoverEnd = React105.useCallback(() => chunk3PKYNJJG_js.stopPreviewAnimation(), []);
15407
+ const handleAnimationHoverEnd = React105.useCallback(() => chunkFKY33ZKL_js.stopPreviewAnimation(), []);
15408
15408
  const handlePreviewClick = React105.useCallback(() => {
15409
15409
  if (!selectedElementAnimation) {
15410
15410
  return;
15411
15411
  }
15412
15412
  if (selectedElementAnimation.motionPath) {
15413
- chunk3PKYNJJG_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
15413
+ chunkFKY33ZKL_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
15414
15414
  durationMs: selectedElementAnimation.durationMs,
15415
15415
  delayMs: selectedElementAnimation.delayMs,
15416
15416
  timingCurve: selectedElementAnimation.timingCurve
@@ -15421,7 +15421,7 @@ function useAnimationPreview({
15421
15421
  if (!preset || preset === "none") {
15422
15422
  return;
15423
15423
  }
15424
- chunk3PKYNJJG_js.startPreviewAnimation(selectedElementId, preset, {
15424
+ chunkFKY33ZKL_js.startPreviewAnimation(selectedElementId, preset, {
15425
15425
  direction: selectedElementAnimation.direction,
15426
15426
  durationMs: selectedElementAnimation.durationMs ?? 500,
15427
15427
  timingCurve: selectedElementAnimation.timingCurve
@@ -15655,8 +15655,8 @@ function useAnimationHandlers({
15655
15655
  if (!el) {
15656
15656
  return anim.elementId.slice(0, 8);
15657
15657
  }
15658
- const text = (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
15659
- return text || chunk3PKYNJJG_js.getElementLabel(el);
15658
+ const text = (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
15659
+ return text || chunkFKY33ZKL_js.getElementLabel(el);
15660
15660
  },
15661
15661
  [activeSlide.elements]
15662
15662
  );
@@ -15666,8 +15666,8 @@ function useAnimationHandlers({
15666
15666
  if (!el) {
15667
15667
  return id.slice(0, 8);
15668
15668
  }
15669
- const text = (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
15670
- return text || chunk3PKYNJJG_js.getElementLabel(el);
15669
+ const text = (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
15670
+ return text || chunkFKY33ZKL_js.getElementLabel(el);
15671
15671
  }).join(", "),
15672
15672
  [activeSlide.elements]
15673
15673
  );
@@ -15724,7 +15724,7 @@ function AnimationPanel({
15724
15724
  onUpdateSlide
15725
15725
  }) {
15726
15726
  const { t } = reactI18next.useTranslation();
15727
- const { viewportWidth } = chunkQJ4X7Y7S_js.useIsMobile();
15727
+ const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
15728
15728
  const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
15729
15729
  const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
15730
15730
  const handlers = useAnimationHandlers({
@@ -15852,7 +15852,7 @@ function AnimationPanel({
15852
15852
  type: "button",
15853
15853
  disabled: !canEdit,
15854
15854
  style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
15855
- className: chunk3PKYNJJG_js.cn(
15855
+ className: chunkFKY33ZKL_js.cn(
15856
15856
  "flex items-center justify-center rounded border transition-colors",
15857
15857
  isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
15858
15858
  ),
@@ -15918,7 +15918,7 @@ function AnimationPanel({
15918
15918
  style: fieldStyle,
15919
15919
  children: [
15920
15920
  /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
15921
- activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunk3PKYNJJG_js.getElementLabel(el) }, el.id))
15921
+ activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkFKY33ZKL_js.getElementLabel(el) }, el.id))
15922
15922
  ]
15923
15923
  }
15924
15924
  )
@@ -16077,7 +16077,7 @@ function ActionTargetFields({
16077
16077
  type: "text",
16078
16078
  disabled: !canEdit,
16079
16079
  "aria-label": t(urlLabelKey),
16080
- className: chunk3PKYNJJG_js.cn(INPUT2, "w-full"),
16080
+ className: chunkFKY33ZKL_js.cn(INPUT2, "w-full"),
16081
16081
  placeholder: "https://...",
16082
16082
  value: url ?? "",
16083
16083
  onChange: (e) => onChange({ url: e.target.value })
@@ -16091,7 +16091,7 @@ function ActionTargetFields({
16091
16091
  type: "number",
16092
16092
  disabled: !canEdit,
16093
16093
  "aria-label": t("pptx.action.gotoSlide"),
16094
- className: chunk3PKYNJJG_js.cn(INPUT2, "w-full"),
16094
+ className: chunkFKY33ZKL_js.cn(INPUT2, "w-full"),
16095
16095
  placeholder: t("pptx.action.slideNumberPlaceholder"),
16096
16096
  min: 1,
16097
16097
  max: slideCount,
@@ -16113,7 +16113,7 @@ function ActionTargetFields({
16113
16113
  "data-testid": "pptx-action-custom-show",
16114
16114
  disabled: !canEdit,
16115
16115
  "aria-label": t("pptx.hyperlink.customShowLabel"),
16116
- className: chunk3PKYNJJG_js.cn(INPUT2, "w-full"),
16116
+ className: chunkFKY33ZKL_js.cn(INPUT2, "w-full"),
16117
16117
  value: customShowId ?? "",
16118
16118
  onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
16119
16119
  children: [
@@ -16146,11 +16146,11 @@ function ActionSettingsPanel({
16146
16146
  onUpdateElement
16147
16147
  }) {
16148
16148
  const { t } = reactI18next.useTranslation();
16149
- const clickAction = selectedElement.actionClick ? (0, chunk3PKYNJJG_js.dist_exports.pptxActionToElementAction)(selectedElement.actionClick, "click") : void 0;
16150
- const hoverAction = selectedElement.actionHover ? (0, chunk3PKYNJJG_js.dist_exports.pptxActionToElementAction)(selectedElement.actionHover, "hover") : void 0;
16149
+ const clickAction = selectedElement.actionClick ? (0, chunkFKY33ZKL_js.dist_exports.pptxActionToElementAction)(selectedElement.actionClick, "click") : void 0;
16150
+ const hoverAction = selectedElement.actionHover ? (0, chunkFKY33ZKL_js.dist_exports.pptxActionToElementAction)(selectedElement.actionHover, "hover") : void 0;
16151
16151
  const updateAction = (trigger, type, patch) => {
16152
16152
  const ea = { trigger, type, ...patch };
16153
- const pa = (0, chunk3PKYNJJG_js.dist_exports.elementActionToPptxAction)(ea);
16153
+ const pa = (0, chunkFKY33ZKL_js.dist_exports.elementActionToPptxAction)(ea);
16154
16154
  if (trigger === "click") {
16155
16155
  onUpdateElement({ actionClick: pa });
16156
16156
  } else {
@@ -16235,7 +16235,7 @@ function ActionTriggerSection({
16235
16235
  {
16236
16236
  disabled: !canEdit,
16237
16237
  "aria-label": label,
16238
- className: chunk3PKYNJJG_js.cn(INPUT2, "w-full"),
16238
+ className: chunkFKY33ZKL_js.cn(INPUT2, "w-full"),
16239
16239
  value: effectiveType,
16240
16240
  onChange: (e) => changeType(e.target.value),
16241
16241
  children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
@@ -16623,7 +16623,7 @@ function ChartDataGrid({
16623
16623
  }) {
16624
16624
  const { t } = reactI18next.useTranslation();
16625
16625
  const highlightRef = React105.useRef(null);
16626
- const { viewportWidth } = chunkQJ4X7Y7S_js.useIsMobile();
16626
+ const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
16627
16627
  const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
16628
16628
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
16629
16629
  const rowHeaderClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10 bg-card" : "";
@@ -17980,8 +17980,8 @@ function ChartUserShapeOptions({
17980
17980
  }
17981
17981
  function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
17982
17982
  const chartData = selectedElement.chartData;
17983
- const followDataPoint = chunkQJ4X7Y7S_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
17984
- const { selection: partSelection } = chunkQJ4X7Y7S_js.useChartPartSelection();
17983
+ const followDataPoint = chunkGLWV52C6_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
17984
+ const { selection: partSelection } = chunkGLWV52C6_js.useChartPartSelection();
17985
17985
  const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
17986
17986
  const title = chartData?.title;
17987
17987
  const chartType = chartData?.chartType;
@@ -18195,40 +18195,40 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
18195
18195
  [chartData, selectedElement, replaceChartData]
18196
18196
  );
18197
18197
  const setAxisLogScale = React105.useCallback(
18198
- (axisType, opts) => applyChartOp((el) => (0, chunk3PKYNJJG_js.dist_exports.setChartAxisLogScale)(el, axisType, opts)),
18198
+ (axisType, opts) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartAxisLogScale)(el, axisType, opts)),
18199
18199
  [applyChartOp]
18200
18200
  );
18201
18201
  const setAxisTitleStyle = React105.useCallback(
18202
- (axisType, edit) => applyChartOp((el) => (0, chunk3PKYNJJG_js.dist_exports.setChartAxisTitleStyle)(el, axisType, edit)),
18202
+ (axisType, edit) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartAxisTitleStyle)(el, axisType, edit)),
18203
18203
  [applyChartOp]
18204
18204
  );
18205
18205
  const setGridlineStyle = React105.useCallback(
18206
- (axisType, which, edit) => applyChartOp((el) => (0, chunk3PKYNJJG_js.dist_exports.setChartAxisGridlineStyle)(el, axisType, which, edit)),
18206
+ (axisType, which, edit) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartAxisGridlineStyle)(el, axisType, which, edit)),
18207
18207
  [applyChartOp]
18208
18208
  );
18209
18209
  const setSeriesMarker = React105.useCallback(
18210
- (index, marker) => applyChartOp((el) => (0, chunk3PKYNJJG_js.dist_exports.setChartSeriesMarker)(el, index, marker)),
18210
+ (index, marker) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartSeriesMarker)(el, index, marker)),
18211
18211
  [applyChartOp]
18212
18212
  );
18213
18213
  const setSeriesType = React105.useCallback(
18214
- (index, seriesType) => applyChartOp((el) => (0, chunk3PKYNJJG_js.dist_exports.setChartSeriesChartType)(el, index, seriesType)),
18214
+ (index, seriesType) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartSeriesChartType)(el, index, seriesType)),
18215
18215
  [applyChartOp]
18216
18216
  );
18217
18217
  const setPointFill = React105.useCallback(
18218
- (seriesIndex, pointIndex, color) => applyChartOp((el) => (0, chunk3PKYNJJG_js.dist_exports.setChartDataPointFill)(el, seriesIndex, pointIndex, color)),
18218
+ (seriesIndex, pointIndex, color) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartDataPointFill)(el, seriesIndex, pointIndex, color)),
18219
18219
  [applyChartOp]
18220
18220
  );
18221
18221
  const setPointExplosion = React105.useCallback(
18222
- (seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0, chunk3PKYNJJG_js.dist_exports.setChartDataPointExplosion)(el, seriesIndex, pointIndex, explosion)),
18222
+ (seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartDataPointExplosion)(el, seriesIndex, pointIndex, explosion)),
18223
18223
  [applyChartOp]
18224
18224
  );
18225
18225
  const setPointMarker = React105.useCallback(
18226
- (seriesIndex, pointIndex, marker) => applyChartOp((el) => (0, chunk3PKYNJJG_js.dist_exports.setChartDataPointMarker)(el, seriesIndex, pointIndex, marker)),
18226
+ (seriesIndex, pointIndex, marker) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartDataPointMarker)(el, seriesIndex, pointIndex, marker)),
18227
18227
  [applyChartOp]
18228
18228
  );
18229
18229
  const setPointLabel = React105.useCallback(
18230
18230
  (seriesIndex, pointIndex, text) => applyChartOp(
18231
- (el) => (0, chunk3PKYNJJG_js.dist_exports.setChartDataPointLabel)(el, seriesIndex, pointIndex, text !== null ? { text } : null)
18231
+ (el) => (0, chunkFKY33ZKL_js.dist_exports.setChartDataPointLabel)(el, seriesIndex, pointIndex, text !== null ? { text } : null)
18232
18232
  ),
18233
18233
  [applyChartOp]
18234
18234
  );
@@ -18496,17 +18496,17 @@ function OleEditorDialog({
18496
18496
  const kind = descriptor.contentTab.kind;
18497
18497
  const load = async () => {
18498
18498
  if (kind === "sheet") {
18499
- const value = await (0, chunk3PKYNJJG_js.dist_exports.getOleSheetGrid)(element);
18499
+ const value = await (0, chunkFKY33ZKL_js.dist_exports.getOleSheetGrid)(element);
18500
18500
  if (!cancelled) {
18501
18501
  setGrid(value);
18502
18502
  }
18503
18503
  } else if (kind === "document") {
18504
- const value = await (0, chunk3PKYNJJG_js.dist_exports.getOleDocumentParagraphs)(element);
18504
+ const value = await (0, chunkFKY33ZKL_js.dist_exports.getOleDocumentParagraphs)(element);
18505
18505
  if (!cancelled) {
18506
18506
  setParagraphs(value);
18507
18507
  }
18508
18508
  } else if (kind === "deck") {
18509
- const value = await (0, chunk3PKYNJJG_js.dist_exports.getOleNestedDeckDetail)(element);
18509
+ const value = await (0, chunkFKY33ZKL_js.dist_exports.getOleNestedDeckDetail)(element);
18510
18510
  if (!cancelled) {
18511
18511
  setDeckSlides(value);
18512
18512
  }
@@ -18532,9 +18532,9 @@ function OleEditorDialog({
18532
18532
  const handleCellEdit = React105.useCallback(
18533
18533
  async (row, col, value) => {
18534
18534
  try {
18535
- const updated = await (0, chunk3PKYNJJG_js.dist_exports.applyOleSheetCellEdit)(element, { row, col, value });
18535
+ const updated = await (0, chunkFKY33ZKL_js.dist_exports.applyOleSheetCellEdit)(element, { row, col, value });
18536
18536
  commit(updated);
18537
- const refreshed = await (0, chunk3PKYNJJG_js.dist_exports.getOleSheetGrid)(updated);
18537
+ const refreshed = await (0, chunkFKY33ZKL_js.dist_exports.getOleSheetGrid)(updated);
18538
18538
  if (mountedRef.current) {
18539
18539
  setGrid(refreshed);
18540
18540
  }
@@ -18549,9 +18549,9 @@ function OleEditorDialog({
18549
18549
  const handleParagraphEdit = React105.useCallback(
18550
18550
  async (index, text) => {
18551
18551
  try {
18552
- const updated = await (0, chunk3PKYNJJG_js.dist_exports.applyOleDocumentParagraphEdit)(element, index, text);
18552
+ const updated = await (0, chunkFKY33ZKL_js.dist_exports.applyOleDocumentParagraphEdit)(element, index, text);
18553
18553
  commit(updated);
18554
- const refreshed = await (0, chunk3PKYNJJG_js.dist_exports.getOleDocumentParagraphs)(updated);
18554
+ const refreshed = await (0, chunkFKY33ZKL_js.dist_exports.getOleDocumentParagraphs)(updated);
18555
18555
  if (mountedRef.current) {
18556
18556
  setParagraphs(refreshed);
18557
18557
  }
@@ -18566,14 +18566,14 @@ function OleEditorDialog({
18566
18566
  const handleDeckElementEdit = React105.useCallback(
18567
18567
  async (slideIndex, deckElementId, text) => {
18568
18568
  try {
18569
- const updated = await (0, chunk3PKYNJJG_js.dist_exports.applyOleNestedDeckElementTextEdit)(
18569
+ const updated = await (0, chunkFKY33ZKL_js.dist_exports.applyOleNestedDeckElementTextEdit)(
18570
18570
  element,
18571
18571
  slideIndex,
18572
18572
  deckElementId,
18573
18573
  text
18574
18574
  );
18575
18575
  commit(updated);
18576
- const refreshed = await (0, chunk3PKYNJJG_js.dist_exports.getOleNestedDeckDetail)(updated);
18576
+ const refreshed = await (0, chunkFKY33ZKL_js.dist_exports.getOleNestedDeckDetail)(updated);
18577
18577
  if (mountedRef.current) {
18578
18578
  setDeckSlides(refreshed);
18579
18579
  }
@@ -18589,7 +18589,7 @@ function OleEditorDialog({
18589
18589
  async (file) => {
18590
18590
  try {
18591
18591
  const bytes = new Uint8Array(await file.arrayBuffer());
18592
- const updated = await (0, chunk3PKYNJJG_js.dist_exports.replaceOleFile)(element, bytes, file.name);
18592
+ const updated = await (0, chunkFKY33ZKL_js.dist_exports.replaceOleFile)(element, bytes, file.name);
18593
18593
  commit(updated);
18594
18594
  if (mountedRef.current) {
18595
18595
  onClose();
@@ -18738,7 +18738,7 @@ function ConnectorArrowsSection({
18738
18738
  },
18739
18739
  disabled: !canEdit,
18740
18740
  className: SELECT_CLS2,
18741
- children: chunk3PKYNJJG_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18741
+ children: chunkFKY33ZKL_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18742
18742
  }
18743
18743
  )
18744
18744
  ] }, end);
@@ -18762,7 +18762,7 @@ function ConnectorArrowsSection({
18762
18762
  },
18763
18763
  disabled: !canEdit,
18764
18764
  className: SELECT_CLS2,
18765
- children: chunk3PKYNJJG_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18765
+ children: chunkFKY33ZKL_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18766
18766
  }
18767
18767
  )
18768
18768
  ] }),
@@ -18781,7 +18781,7 @@ function ConnectorArrowsSection({
18781
18781
  },
18782
18782
  disabled: !canEdit,
18783
18783
  className: SELECT_CLS2,
18784
- children: chunk3PKYNJJG_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18784
+ children: chunkFKY33ZKL_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18785
18785
  }
18786
18786
  )
18787
18787
  ] })
@@ -18861,7 +18861,7 @@ function OlePropertiesPanel({
18861
18861
  ] }),
18862
18862
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
18863
18863
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.type") }),
18864
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0, chunk3PKYNJJG_js.dist_exports.getOleObjectTypeLabel)(ole.oleObjectType) })
18864
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0, chunkFKY33ZKL_js.dist_exports.getOleObjectTypeLabel)(ole.oleObjectType) })
18865
18865
  ] }),
18866
18866
  ole.fileName && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
18867
18867
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.fileName") }),
@@ -18872,7 +18872,7 @@ function OlePropertiesPanel({
18872
18872
  /* @__PURE__ */ jsxRuntime.jsx(
18873
18873
  "span",
18874
18874
  {
18875
- className: chunk3PKYNJJG_js.cn(
18875
+ className: chunkFKY33ZKL_js.cn(
18876
18876
  "inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
18877
18877
  ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
18878
18878
  ),
@@ -18940,7 +18940,7 @@ function LayerOrderButtons({
18940
18940
  "button",
18941
18941
  {
18942
18942
  type: "button",
18943
- className: chunk3PKYNJJG_js.cn("flex-1", BTN2),
18943
+ className: chunkFKY33ZKL_js.cn("flex-1", BTN2),
18944
18944
  disabled: !canEdit,
18945
18945
  onClick: () => onMoveLayer("forward"),
18946
18946
  children: "\u2191 Forward"
@@ -18950,7 +18950,7 @@ function LayerOrderButtons({
18950
18950
  "button",
18951
18951
  {
18952
18952
  type: "button",
18953
- className: chunk3PKYNJJG_js.cn("flex-1", BTN2),
18953
+ className: chunkFKY33ZKL_js.cn("flex-1", BTN2),
18954
18954
  disabled: !canEdit,
18955
18955
  onClick: () => onMoveLayer("backward"),
18956
18956
  children: "\u2193 Backward"
@@ -18974,7 +18974,7 @@ function ArtisticEffectsGallery({
18974
18974
  {
18975
18975
  type: "button",
18976
18976
  disabled: !canEdit,
18977
- className: chunk3PKYNJJG_js.cn(
18977
+ className: chunkFKY33ZKL_js.cn(
18978
18978
  "flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
18979
18979
  isActive ? "border-primary bg-primary/10" : "border-border"
18980
18980
  ),
@@ -19036,7 +19036,7 @@ function ColorChangeSection({
19036
19036
  DebouncedColorInput,
19037
19037
  {
19038
19038
  disabled: !canEdit,
19039
- value: chunk3PKYNJJG_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
19039
+ value: chunkFKY33ZKL_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
19040
19040
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
19041
19041
  onCommit: (hex) => updateEffects({
19042
19042
  clrChange: {
@@ -19054,7 +19054,7 @@ function ColorChangeSection({
19054
19054
  DebouncedColorInput,
19055
19055
  {
19056
19056
  disabled: !canEdit || Boolean(cc.clrToTransparent),
19057
- value: chunk3PKYNJJG_js.normalizeHexColor(cc.clrTo, "#000000"),
19057
+ value: chunkFKY33ZKL_js.normalizeHexColor(cc.clrTo, "#000000"),
19058
19058
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
19059
19059
  onCommit: (hex) => updateEffects({
19060
19060
  clrChange: {
@@ -19114,7 +19114,7 @@ function ColorWashSection({
19114
19114
  DebouncedColorInput,
19115
19115
  {
19116
19116
  disabled: !canEdit,
19117
- value: chunk3PKYNJJG_js.normalizeHexColor(wash.color, "#0066cc"),
19117
+ value: chunkFKY33ZKL_js.normalizeHexColor(wash.color, "#0066cc"),
19118
19118
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
19119
19119
  onCommit: (hex) => updateEffects({
19120
19120
  colorWash: { color: hex, opacity: wash.opacity ?? 40 }
@@ -19217,8 +19217,8 @@ function DuotonePanel({
19217
19217
  }
19218
19218
  });
19219
19219
  }, [effects, onUpdateElement]);
19220
- const shadowColor = chunk3PKYNJJG_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
19221
- const highlightColor = chunk3PKYNJJG_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
19220
+ const shadowColor = chunkFKY33ZKL_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
19221
+ const highlightColor = chunkFKY33ZKL_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
19222
19222
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
19223
19223
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
19224
19224
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -19249,7 +19249,7 @@ function DuotonePanel({
19249
19249
  ] }),
19250
19250
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
19251
19251
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
19252
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkQJ4X7Y7S_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
19252
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkGLWV52C6_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
19253
19253
  "button",
19254
19254
  {
19255
19255
  type: "button",
@@ -19387,7 +19387,7 @@ function ImageCropSection({
19387
19387
  onUpdateElement
19388
19388
  }) {
19389
19389
  const { t } = reactI18next.useTranslation();
19390
- if (!(0, chunk3PKYNJJG_js.dist_exports.isImageLikeElement)(selectedElement)) {
19390
+ if (!(0, chunkFKY33ZKL_js.dist_exports.isImageLikeElement)(selectedElement)) {
19391
19391
  return null;
19392
19392
  }
19393
19393
  const croppable = pptx.cropResetState(selectedElement, canEdit, true).enabled;
@@ -19404,7 +19404,7 @@ function ImageCropSection({
19404
19404
  max: MAX_CROP_PERCENT,
19405
19405
  disabled: !croppable,
19406
19406
  className: "accent-primary",
19407
- value: Math.round(chunk3PKYNJJG_js.clampCropValue(selectedElement[key]) * 100),
19407
+ value: Math.round(chunkFKY33ZKL_js.clampCropValue(selectedElement[key]) * 100),
19408
19408
  onChange: (e) => onUpdateElement({
19409
19409
  [key]: Number(e.target.value) / 100
19410
19410
  })
@@ -19468,7 +19468,7 @@ function ImagePropertiesPanel({
19468
19468
  {
19469
19469
  rows: 2,
19470
19470
  disabled: !canEdit,
19471
- className: chunk3PKYNJJG_js.cn(INPUT2, "resize-none text-[11px]"),
19471
+ className: chunkFKY33ZKL_js.cn(INPUT2, "resize-none text-[11px]"),
19472
19472
  value: selectedElement.altText ?? "",
19473
19473
  onChange: (e) => onUpdateElement({
19474
19474
  altText: e.target.value
@@ -20408,7 +20408,7 @@ function AccessibilityTextSection({
20408
20408
  rows: 2,
20409
20409
  disabled: !canEdit,
20410
20410
  placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
20411
- className: chunk3PKYNJJG_js.cn(INPUT2, "resize-none text-[11px]"),
20411
+ className: chunkFKY33ZKL_js.cn(INPUT2, "resize-none text-[11px]"),
20412
20412
  value: fields.altText,
20413
20413
  onChange: (e) => onUpdateElement({ altText: e.target.value })
20414
20414
  }
@@ -20422,7 +20422,7 @@ function AccessibilityTextSection({
20422
20422
  type: "text",
20423
20423
  disabled: !canEdit,
20424
20424
  placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
20425
- className: chunk3PKYNJJG_js.cn(INPUT2, "text-[11px]"),
20425
+ className: chunkFKY33ZKL_js.cn(INPUT2, "text-[11px]"),
20426
20426
  value: fields.title,
20427
20427
  onChange: (e) => onUpdateElement({ title: e.target.value })
20428
20428
  }
@@ -20538,7 +20538,7 @@ var SHADOW_EFFECT_CONFIGS = [
20538
20538
  angle = (Math.atan2(offsetY, offsetX) * 180 / Math.PI + 360) % 360;
20539
20539
  }
20540
20540
  return {
20541
- shadowColor: chunk3PKYNJJG_js.normalizeHexColor(s?.shadowColor, "#000000"),
20541
+ shadowColor: chunkFKY33ZKL_js.normalizeHexColor(s?.shadowColor, "#000000"),
20542
20542
  shadowOpacity: s?.shadowOpacity ?? 0.35,
20543
20543
  shadowBlur: s?.shadowBlur ?? 6,
20544
20544
  shadowAngle: angle,
@@ -20554,7 +20554,7 @@ var SHADOW_EFFECT_CONFIGS = [
20554
20554
  key: "sc",
20555
20555
  label: "Shadow Color",
20556
20556
  type: "color",
20557
- read: (s) => chunk3PKYNJJG_js.normalizeHexColor(s?.shadowColor, "#000000"),
20557
+ read: (s) => chunkFKY33ZKL_js.normalizeHexColor(s?.shadowColor, "#000000"),
20558
20558
  write: (v) => ({ shadowColor: String(v) })
20559
20559
  },
20560
20560
  {
@@ -20690,7 +20690,7 @@ var SHADOW_EFFECT_CONFIGS = [
20690
20690
  label: "Inner Shadow",
20691
20691
  isOn: (s) => Boolean(s?.innerShadowColor) && s?.innerShadowColor !== "transparent",
20692
20692
  onEnable: (s) => ({
20693
- innerShadowColor: chunk3PKYNJJG_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
20693
+ innerShadowColor: chunkFKY33ZKL_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
20694
20694
  innerShadowOpacity: s?.innerShadowOpacity ?? 0.5,
20695
20695
  innerShadowBlur: s?.innerShadowBlur ?? 5,
20696
20696
  innerShadowOffsetX: s?.innerShadowOffsetX ?? 0,
@@ -20702,7 +20702,7 @@ var SHADOW_EFFECT_CONFIGS = [
20702
20702
  key: "isc",
20703
20703
  label: "Color",
20704
20704
  type: "color",
20705
- read: (s) => chunk3PKYNJJG_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
20705
+ read: (s) => chunkFKY33ZKL_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
20706
20706
  write: (v) => ({ innerShadowColor: String(v) })
20707
20707
  },
20708
20708
  {
@@ -21215,7 +21215,7 @@ function ColorPickerRow({
21215
21215
  pushColor(color);
21216
21216
  };
21217
21217
  const handleEyedropper = async () => {
21218
- const color = await chunk3PKYNJJG_js.openNativeEyeDropper();
21218
+ const color = await chunkFKY33ZKL_js.openNativeEyeDropper();
21219
21219
  if (color) {
21220
21220
  commit(color);
21221
21221
  }
@@ -21298,9 +21298,9 @@ function GradientStopRow({
21298
21298
  "input",
21299
21299
  {
21300
21300
  type: "color",
21301
- value: chunk3PKYNJJG_js.normalizeHexColor(stop2.color, "#3b82f6"),
21301
+ value: chunkFKY33ZKL_js.normalizeHexColor(stop2.color, "#3b82f6"),
21302
21302
  onChange: (e) => {
21303
- const hex = chunk3PKYNJJG_js.normalizeHexColor(e.target.value, "#3b82f6");
21303
+ const hex = chunkFKY33ZKL_js.normalizeHexColor(e.target.value, "#3b82f6");
21304
21304
  patchStop({ color: hex, colorRef: void 0 });
21305
21305
  pushColor(hex);
21306
21306
  },
@@ -21425,7 +21425,7 @@ function FillAdvancedControls({
21425
21425
  onClick: () => onUpdateGradientStops([
21426
21426
  ...gradientStops,
21427
21427
  {
21428
- color: chunk3PKYNJJG_js.normalizeHexColor(style?.fillColor, chunk3PKYNJJG_js.DEFAULT_FILL_COLOR),
21428
+ color: chunkFKY33ZKL_js.normalizeHexColor(style?.fillColor, chunkFKY33ZKL_js.DEFAULT_FILL_COLOR),
21429
21429
  position: 50,
21430
21430
  opacity: 1
21431
21431
  }
@@ -21439,9 +21439,9 @@ function FillAdvancedControls({
21439
21439
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
21440
21440
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
21441
21441
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-8 gap-1 max-h-48 overflow-y-auto rounded border border-border p-2", children: PATTERN_PRESET_OPTIONS.map((opt) => {
21442
- const fgColor = chunk3PKYNJJG_js.normalizeHexColor(style?.fillColor, chunk3PKYNJJG_js.DEFAULT_FILL_COLOR);
21443
- const bgColor = chunk3PKYNJJG_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
21444
- const svgPattern = chunk3PKYNJJG_js.getPatternSvg(opt.value, fgColor, bgColor);
21442
+ const fgColor = chunkFKY33ZKL_js.normalizeHexColor(style?.fillColor, chunkFKY33ZKL_js.DEFAULT_FILL_COLOR);
21443
+ const bgColor = chunkFKY33ZKL_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
21444
+ const svgPattern = chunkFKY33ZKL_js.getPatternSvg(opt.value, fgColor, bgColor);
21445
21445
  const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
21446
21446
  return /* @__PURE__ */ jsxRuntime.jsx(
21447
21447
  "button",
@@ -21474,7 +21474,7 @@ function FillAdvancedControls({
21474
21474
  {
21475
21475
  label: t("pptx.fillAdvanced.foregroundColor"),
21476
21476
  prefix: "pattern-fg",
21477
- value: chunk3PKYNJJG_js.normalizeHexColor(style?.fillColor, chunk3PKYNJJG_js.DEFAULT_FILL_COLOR),
21477
+ value: chunkFKY33ZKL_js.normalizeHexColor(style?.fillColor, chunkFKY33ZKL_js.DEFAULT_FILL_COLOR),
21478
21478
  disabled: isLine,
21479
21479
  onChange: (color) => onUpdateShapeStyle({ fillMode: "pattern", fillColor: color })
21480
21480
  }
@@ -21484,7 +21484,7 @@ function FillAdvancedControls({
21484
21484
  {
21485
21485
  label: t("pptx.fillAdvanced.backgroundColor"),
21486
21486
  prefix: "pattern-bg",
21487
- value: chunk3PKYNJJG_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
21487
+ value: chunkFKY33ZKL_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
21488
21488
  disabled: isLine,
21489
21489
  onChange: (color) => onUpdateShapeStyle({
21490
21490
  fillMode: "pattern",
@@ -21551,11 +21551,11 @@ function QuickStylesGallery({
21551
21551
  onUpdateShapeStyle
21552
21552
  }) {
21553
21553
  const { t } = reactI18next.useTranslation();
21554
- const { viewportWidth } = chunkQJ4X7Y7S_js.useIsMobile();
21554
+ const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
21555
21555
  const swatchMinHeight = pptx.getDensePanelTouchTargetPx(viewportWidth);
21556
21556
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
21557
21557
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: t("pptx.shape.quickStyles") }),
21558
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children: chunk3PKYNJJG_js.SHAPE_QUICK_STYLES.map((qs, idx) => /* @__PURE__ */ jsxRuntime.jsx(
21558
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children: chunkFKY33ZKL_js.SHAPE_QUICK_STYLES.map((qs, idx) => /* @__PURE__ */ jsxRuntime.jsx(
21559
21559
  "button",
21560
21560
  {
21561
21561
  type: "button",
@@ -21582,7 +21582,7 @@ function StrokeEffectsSection({
21582
21582
  {
21583
21583
  label: t("pptx.inspector.stroke"),
21584
21584
  prefix: "stroke",
21585
- value: chunk3PKYNJJG_js.normalizeHexColor(style?.strokeColor, chunk3PKYNJJG_js.DEFAULT_STROKE_COLOR),
21585
+ value: chunkFKY33ZKL_js.normalizeHexColor(style?.strokeColor, chunkFKY33ZKL_js.DEFAULT_STROKE_COLOR),
21586
21586
  selectedRef: style?.strokeColorRef,
21587
21587
  onChange: onSetStrokeColor
21588
21588
  }
@@ -21645,7 +21645,7 @@ function StrokeEffectsSection({
21645
21645
  strokeDash: e.target.value
21646
21646
  }),
21647
21647
  className: SEL,
21648
- children: chunk3PKYNJJG_js.STROKE_DASH_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
21648
+ children: chunkFKY33ZKL_js.STROKE_DASH_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
21649
21649
  }
21650
21650
  )
21651
21651
  ] }),
@@ -21735,10 +21735,10 @@ function FillStrokeProperties({
21735
21735
  return;
21736
21736
  }
21737
21737
  if (nextMode === "gradient") {
21738
- const existing = chunk3PKYNJJG_js.sanitizeGradientStops(style?.fillGradientStops);
21738
+ const existing = chunkFKY33ZKL_js.sanitizeGradientStops(style?.fillGradientStops);
21739
21739
  const stops = existing.length >= 2 ? existing : [
21740
21740
  {
21741
- color: chunk3PKYNJJG_js.normalizeHexColor(style?.fillColor, chunk3PKYNJJG_js.DEFAULT_FILL_COLOR),
21741
+ color: chunkFKY33ZKL_js.normalizeHexColor(style?.fillColor, chunkFKY33ZKL_js.DEFAULT_FILL_COLOR),
21742
21742
  position: 0,
21743
21743
  opacity: 1
21744
21744
  },
@@ -21763,7 +21763,7 @@ function FillStrokeProperties({
21763
21763
  onUpdateShapeStyle({ fillMode: "solid" });
21764
21764
  };
21765
21765
  const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
21766
- { color: chunk3PKYNJJG_js.DEFAULT_FILL_COLOR, position: 0 },
21766
+ { color: chunkFKY33ZKL_js.DEFAULT_FILL_COLOR, position: 0 },
21767
21767
  { color: "#ffffff", position: 100 }
21768
21768
  ];
21769
21769
  const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
@@ -21790,7 +21790,7 @@ function FillStrokeProperties({
21790
21790
  {
21791
21791
  label: t("pptx.fill.fill"),
21792
21792
  prefix: "fill",
21793
- value: chunk3PKYNJJG_js.normalizeHexColor(style?.fillColor, chunk3PKYNJJG_js.DEFAULT_FILL_COLOR),
21793
+ value: chunkFKY33ZKL_js.normalizeHexColor(style?.fillColor, chunkFKY33ZKL_js.DEFAULT_FILL_COLOR),
21794
21794
  selectedRef: style?.fillColorRef,
21795
21795
  disabled: line,
21796
21796
  onChange: onSetFillColor
@@ -21874,7 +21874,7 @@ function Text3DProperties({
21874
21874
  "input",
21875
21875
  {
21876
21876
  type: "color",
21877
- value: chunk3PKYNJJG_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
21877
+ value: chunkFKY33ZKL_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
21878
21878
  onChange: (e) => {
21879
21879
  update3d({ extrusionColor: e.target.value });
21880
21880
  pushColor(e.target.value);
@@ -22065,7 +22065,7 @@ function AdvancedTextFormatting({
22065
22065
  "input",
22066
22066
  {
22067
22067
  type: "color",
22068
- value: chunk3PKYNJJG_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
22068
+ value: chunkFKY33ZKL_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
22069
22069
  onChange: (e) => {
22070
22070
  onUpdateTextStyle({ highlightColor: e.target.value });
22071
22071
  pushColor(e.target.value);
@@ -22369,7 +22369,7 @@ function TextEffectsPanel({
22369
22369
  "input",
22370
22370
  {
22371
22371
  type: "color",
22372
- value: chunk3PKYNJJG_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
22372
+ value: chunkFKY33ZKL_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
22373
22373
  onChange: (e) => {
22374
22374
  onUpdateTextStyle({ textShadowColor: e.target.value });
22375
22375
  pushColor(e.target.value);
@@ -22476,7 +22476,7 @@ function TextEffectsPanel({
22476
22476
  "input",
22477
22477
  {
22478
22478
  type: "color",
22479
- value: chunk3PKYNJJG_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
22479
+ value: chunkFKY33ZKL_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
22480
22480
  onChange: (e) => {
22481
22481
  onUpdateTextStyle({ textGlowColor: e.target.value });
22482
22482
  pushColor(e.target.value);
@@ -22578,7 +22578,7 @@ function TextAdvancedSections({
22578
22578
  canEdit,
22579
22579
  onUpdateTextStyle
22580
22580
  }) {
22581
- if (!(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(selectedElement)) {
22581
+ if (!(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(selectedElement)) {
22582
22582
  return null;
22583
22583
  }
22584
22584
  const ts = selectedElement.textStyle;
@@ -22607,22 +22607,22 @@ function ShapeTextPanels({
22607
22607
  }) {
22608
22608
  const { t } = reactI18next.useTranslation();
22609
22609
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
22610
- (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
22610
+ (0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
22611
22611
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
22612
22612
  /* @__PURE__ */ jsxRuntime.jsx(
22613
22613
  WebSelect,
22614
22614
  {
22615
22615
  value: selectedElement.shapeType || "rect",
22616
22616
  disabled: !canEdit,
22617
- className: chunk3PKYNJJG_js.cn(INPUT2, "w-full"),
22617
+ className: chunkFKY33ZKL_js.cn(INPUT2, "w-full"),
22618
22618
  onChange: (e) => onUpdateElement({
22619
22619
  shapeType: e.target.value
22620
22620
  }),
22621
- children: chunk3PKYNJJG_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
22621
+ children: chunkFKY33ZKL_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
22622
22622
  }
22623
22623
  )
22624
22624
  ] }),
22625
- (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-fill-stroke": true, "data-pptx-inspector-section": "fill-stroke", children: [
22625
+ (0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-fill-stroke": true, "data-pptx-inspector-section": "fill-stroke", children: [
22626
22626
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.fillStroke", "Fill & Stroke") }),
22627
22627
  /* @__PURE__ */ jsxRuntime.jsx(
22628
22628
  FillStrokeProperties,
@@ -22630,7 +22630,7 @@ function ShapeTextPanels({
22630
22630
  selectedElement,
22631
22631
  selectedShapeStyle: selectedElement.shapeStyle,
22632
22632
  selectedShapeType: selectedElement.shapeType,
22633
- selectedGradientStops: chunk3PKYNJJG_js.sanitizeGradientStops(
22633
+ selectedGradientStops: chunkFKY33ZKL_js.sanitizeGradientStops(
22634
22634
  selectedElement.shapeStyle?.fillGradientStops
22635
22635
  ),
22636
22636
  canEdit,
@@ -22640,7 +22640,7 @@ function ShapeTextPanels({
22640
22640
  }
22641
22641
  )
22642
22642
  ] }),
22643
- (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-text-card": true, children: [
22643
+ (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-text-card": true, children: [
22644
22644
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.text.title", "Text") }),
22645
22645
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5 text-[11px]", children: [
22646
22646
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -22666,7 +22666,7 @@ function ShapeTextPanels({
22666
22666
  {
22667
22667
  disabled: !canEdit,
22668
22668
  ariaLabel: "Text Color",
22669
- value: chunk3PKYNJJG_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
22669
+ value: chunkFKY33ZKL_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
22670
22670
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
22671
22671
  onCommit: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 })
22672
22672
  }
@@ -22758,7 +22758,7 @@ function TextFormatToggle({
22758
22758
  {
22759
22759
  type: "button",
22760
22760
  disabled,
22761
- className: chunk3PKYNJJG_js.cn(
22761
+ className: chunkFKY33ZKL_js.cn(
22762
22762
  "px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
22763
22763
  italic && "italic",
22764
22764
  underline && "underline",
@@ -22916,7 +22916,7 @@ var THUMB_COMPONENTS = {
22916
22916
  chevron: ChevronThumb,
22917
22917
  bending: BendingThumb
22918
22918
  };
22919
- var LAYOUT_DESCRIPTORS = chunk3PKYNJJG_js.dist_exports.SWITCHABLE_LAYOUT_TYPES.map((type) => ({
22919
+ var LAYOUT_DESCRIPTORS = chunkFKY33ZKL_js.dist_exports.SWITCHABLE_LAYOUT_TYPES.map((type) => ({
22920
22920
  type,
22921
22921
  i18nKey: `pptx.smartart.category.${type}`
22922
22922
  }));
@@ -22944,7 +22944,7 @@ function SmartArtLayoutSwitcher({
22944
22944
  type: "button",
22945
22945
  "data-testid": `smartart-layout-${type}`,
22946
22946
  disabled: !canEdit,
22947
- className: chunk3PKYNJJG_js.cn(
22947
+ className: chunkFKY33ZKL_js.cn(
22948
22948
  "flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
22949
22949
  "text-[9px] leading-tight",
22950
22950
  isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
@@ -23023,7 +23023,7 @@ function SmartArtNodeStyleControls({
23023
23023
  disabled: !canEdit,
23024
23024
  "aria-label": `Bold ${label}`,
23025
23025
  "aria-pressed": bold,
23026
- className: chunk3PKYNJJG_js.cn(
23026
+ className: chunkFKY33ZKL_js.cn(
23027
23027
  EMPHASIS_BTN,
23028
23028
  "font-bold",
23029
23029
  bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
@@ -23039,7 +23039,7 @@ function SmartArtNodeStyleControls({
23039
23039
  disabled: !canEdit,
23040
23040
  "aria-label": `Italic ${label}`,
23041
23041
  "aria-pressed": italic,
23042
- className: chunk3PKYNJJG_js.cn(
23042
+ className: chunkFKY33ZKL_js.cn(
23043
23043
  EMPHASIS_BTN,
23044
23044
  "italic",
23045
23045
  italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
@@ -23078,7 +23078,7 @@ function SmartArtNodeRow({
23078
23078
  "div",
23079
23079
  {
23080
23080
  role: "listitem",
23081
- className: chunk3PKYNJJG_js.cn(
23081
+ className: chunkFKY33ZKL_js.cn(
23082
23082
  "rounded border bg-background/60 p-1.5",
23083
23083
  isChild ? "border-border/60 ml-4" : "border-border"
23084
23084
  ),
@@ -23093,7 +23093,7 @@ function SmartArtNodeRow({
23093
23093
  "data-testid": "smartart-node-text",
23094
23094
  disabled: !canEdit,
23095
23095
  "aria-label": label,
23096
- className: chunk3PKYNJJG_js.cn(INPUT2, "flex-1 text-[11px] py-0.5"),
23096
+ className: chunkFKY33ZKL_js.cn(INPUT2, "flex-1 text-[11px] py-0.5"),
23097
23097
  value: text,
23098
23098
  onChange: (e) => onChangeText(nodeId, e.target.value),
23099
23099
  onKeyDown: (e) => onKeyDown(e, nodeId),
@@ -23142,7 +23142,7 @@ function SmartArtNodeRow({
23142
23142
  {
23143
23143
  type: "button",
23144
23144
  disabled: !canEdit || removeDisabled,
23145
- className: chunk3PKYNJJG_js.cn(MINI_BTN, "hover:text-red-400"),
23145
+ className: chunkFKY33ZKL_js.cn(MINI_BTN, "hover:text-red-400"),
23146
23146
  onClick: () => onRemove(nodeId),
23147
23147
  "aria-label": `Remove ${label}`,
23148
23148
  title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
@@ -23185,7 +23185,7 @@ function SmartArtStyleControls({
23185
23185
  disabled: !canEdit,
23186
23186
  "data-testid": "smartart-color-scheme",
23187
23187
  "aria-label": t("pptx.smartart.colorScheme"),
23188
- className: chunk3PKYNJJG_js.cn(INPUT2, "w-full"),
23188
+ className: chunkFKY33ZKL_js.cn(INPUT2, "w-full"),
23189
23189
  value: colorScheme,
23190
23190
  onChange: (e) => onChangeColorScheme(e.target.value),
23191
23191
  children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
@@ -23200,7 +23200,7 @@ function SmartArtStyleControls({
23200
23200
  type: "button",
23201
23201
  disabled: !canEdit,
23202
23202
  "aria-pressed": style === s,
23203
- className: chunk3PKYNJJG_js.cn(
23203
+ className: chunkFKY33ZKL_js.cn(
23204
23204
  "flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
23205
23205
  style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
23206
23206
  ),
@@ -23246,7 +23246,7 @@ function SmartArtPropertiesPanel({
23246
23246
  const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
23247
23247
  newData,
23248
23248
  newData.layout,
23249
- chunkQJ4X7Y7S_js.resolveSmartArtDataPalette(newData),
23249
+ chunkGLWV52C6_js.resolveSmartArtDataPalette(newData),
23250
23250
  newData.style ?? "flat",
23251
23251
  "inspector",
23252
23252
  box
@@ -23257,10 +23257,10 @@ function SmartArtPropertiesPanel({
23257
23257
  applySmartArtData({ ...smartArtData, ...patch });
23258
23258
  };
23259
23259
  const handleUpdateNodeText = (nodeId, text) => {
23260
- applySmartArtData((0, chunk3PKYNJJG_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text));
23260
+ applySmartArtData((0, chunkFKY33ZKL_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text));
23261
23261
  };
23262
23262
  const handleChangeNodeStyle = (nodeId, patch) => {
23263
- const next = (0, chunk3PKYNJJG_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, patch);
23263
+ const next = (0, chunkFKY33ZKL_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, patch);
23264
23264
  if (next !== smartArtData) {
23265
23265
  applySmartArtData(next);
23266
23266
  }
@@ -23269,17 +23269,17 @@ function SmartArtPropertiesPanel({
23269
23269
  if (!pptx.canAddTopLevelNode(layout, topLevelCount)) {
23270
23270
  return;
23271
23271
  }
23272
- applySmartArtData((0, chunk3PKYNJJG_js.dist_exports.addSmartArtNodeAsChild)(smartArtData));
23272
+ applySmartArtData((0, chunkFKY33ZKL_js.dist_exports.addSmartArtNodeAsChild)(smartArtData));
23273
23273
  };
23274
23274
  const addSubItem = (parentId) => {
23275
- applySmartArtData((0, chunk3PKYNJJG_js.dist_exports.addSmartArtNodeAsChild)(smartArtData, parentId, "Sub-item"));
23275
+ applySmartArtData((0, chunkFKY33ZKL_js.dist_exports.addSmartArtNodeAsChild)(smartArtData, parentId, "Sub-item"));
23276
23276
  };
23277
23277
  const removeNode = (nodeId) => {
23278
23278
  const isTopLevel = !nodes.find((n) => n.id === nodeId)?.parentId;
23279
23279
  if (isTopLevel && !pptx.canRemoveTopLevelNode(layout, topLevelCount)) {
23280
23280
  return;
23281
23281
  }
23282
- applySmartArtData((0, chunk3PKYNJJG_js.dist_exports.removeSmartArtNode)(smartArtData, nodeId));
23282
+ applySmartArtData((0, chunkFKY33ZKL_js.dist_exports.removeSmartArtNode)(smartArtData, nodeId));
23283
23283
  };
23284
23284
  const moveNode = (nodeId, direction) => {
23285
23285
  const next = pptx.reorder(smartArtData, nodeId, direction);
@@ -23435,7 +23435,7 @@ function TableDataGrid({
23435
23435
  }) {
23436
23436
  const { t } = reactI18next.useTranslation();
23437
23437
  const grid = pptx.buildTableDataGrid(tableElement);
23438
- const { viewportWidth } = chunkQJ4X7Y7S_js.useIsMobile();
23438
+ const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
23439
23439
  const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
23440
23440
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
23441
23441
  const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
@@ -23847,7 +23847,7 @@ function TableCellColorField({
23847
23847
  disabled,
23848
23848
  onCommit
23849
23849
  }) {
23850
- const hex = chunk3PKYNJJG_js.normalizeHexColor(value, fallback);
23850
+ const hex = chunkFKY33ZKL_js.normalizeHexColor(value, fallback);
23851
23851
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
23852
23852
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
23853
23853
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -23958,7 +23958,7 @@ function TableCellFormattingPanel({
23958
23958
  {
23959
23959
  type: "button",
23960
23960
  disabled: !canEdit,
23961
- className: chunk3PKYNJJG_js.cn(
23961
+ className: chunkFKY33ZKL_js.cn(
23962
23962
  "px-2 py-1 rounded text-[11px] transition-colors",
23963
23963
  cls,
23964
23964
  cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
@@ -23977,7 +23977,7 @@ function TableCellFormattingPanel({
23977
23977
  {
23978
23978
  type: "button",
23979
23979
  disabled: !canEdit,
23980
- className: chunk3PKYNJJG_js.cn(
23980
+ className: chunkFKY33ZKL_js.cn(
23981
23981
  "px-2 py-1 rounded text-[11px] transition-colors",
23982
23982
  cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
23983
23983
  ),
@@ -23995,7 +23995,7 @@ function TableCellFormattingPanel({
23995
23995
  {
23996
23996
  type: "button",
23997
23997
  disabled: !canEdit,
23998
- className: chunk3PKYNJJG_js.cn(
23998
+ className: chunkFKY33ZKL_js.cn(
23999
23999
  "px-2 py-1 rounded text-[11px] transition-colors",
24000
24000
  cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
24001
24001
  ),
@@ -24018,7 +24018,7 @@ function TableCellFormattingPanel({
24018
24018
  DebouncedColorInput,
24019
24019
  {
24020
24020
  disabled: !canEdit,
24021
- value: chunk3PKYNJJG_js.normalizeHexColor(cs[colorKey], "#374151"),
24021
+ value: chunkFKY33ZKL_js.normalizeHexColor(cs[colorKey], "#374151"),
24022
24022
  className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
24023
24023
  onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
24024
24024
  }
@@ -24028,7 +24028,7 @@ function TableCellFormattingPanel({
24028
24028
  {
24029
24029
  type: "number",
24030
24030
  disabled: !canEdit,
24031
- className: chunk3PKYNJJG_js.cn(INPUT2, "w-14"),
24031
+ className: chunkFKY33ZKL_js.cn(INPUT2, "w-14"),
24032
24032
  min: 0,
24033
24033
  max: 10,
24034
24034
  value: pptx.inspectorNumber(cs[widthKey], 1),
@@ -24044,7 +24044,7 @@ function TableCellFormattingPanel({
24044
24044
  {
24045
24045
  type: "button",
24046
24046
  disabled: !canEdit,
24047
- className: chunk3PKYNJJG_js.cn(BTN2, "text-center"),
24047
+ className: chunkFKY33ZKL_js.cn(BTN2, "text-center"),
24048
24048
  onClick: () => {
24049
24049
  const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
24050
24050
  if (newRows) {
@@ -24059,7 +24059,7 @@ function TableCellFormattingPanel({
24059
24059
  {
24060
24060
  type: "button",
24061
24061
  disabled: !canEdit,
24062
- className: chunk3PKYNJJG_js.cn(BTN2, "text-center"),
24062
+ className: chunkFKY33ZKL_js.cn(BTN2, "text-center"),
24063
24063
  onClick: () => {
24064
24064
  const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
24065
24065
  if (newRows) {
@@ -24074,7 +24074,7 @@ function TableCellFormattingPanel({
24074
24074
  {
24075
24075
  type: "button",
24076
24076
  disabled: !canEdit,
24077
- className: chunk3PKYNJJG_js.cn(BTN2, "text-center"),
24077
+ className: chunkFKY33ZKL_js.cn(BTN2, "text-center"),
24078
24078
  onClick: () => {
24079
24079
  const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
24080
24080
  if (newRows) {
@@ -24260,7 +24260,7 @@ function TableStyleEditor({
24260
24260
  const { t } = reactI18next.useTranslation();
24261
24261
  const themeColorMap = useThemeColorMap();
24262
24262
  const [activeStyleId, setActiveStyleId] = React105.useState(
24263
- styleId ? (0, chunk3PKYNJJG_js.dist_exports.normalizeTableStyleGuid)(styleId) : ""
24263
+ styleId ? (0, chunkFKY33ZKL_js.dist_exports.normalizeTableStyleGuid)(styleId) : ""
24264
24264
  );
24265
24265
  const [selectedPart, setSelectedPart] = React105.useState("wholeTbl");
24266
24266
  const entry = activeStyleId ? styleMap?.[activeStyleId] : void 0;
@@ -24281,8 +24281,8 @@ function TableStyleEditor({
24281
24281
  return;
24282
24282
  }
24283
24283
  const nextMap = { ...styleMap ?? {} };
24284
- const created = (0, chunk3PKYNJJG_js.dist_exports.createTableStyleEntry)(nextMap, { styleName: name, basedOn: entry });
24285
- (0, chunk3PKYNJJG_js.dist_exports.addTableStyleToMap)(nextMap, created);
24284
+ const created = (0, chunkFKY33ZKL_js.dist_exports.createTableStyleEntry)(nextMap, { styleName: name, basedOn: entry });
24285
+ (0, chunkFKY33ZKL_js.dist_exports.addTableStyleToMap)(nextMap, created);
24286
24286
  onStyleMapChange(nextMap);
24287
24287
  setActiveStyleId(created.styleId);
24288
24288
  onAssignStyle?.(created.styleId);
@@ -24292,7 +24292,7 @@ function TableStyleEditor({
24292
24292
  return;
24293
24293
  }
24294
24294
  const nextMap = { ...styleMap };
24295
- (0, chunk3PKYNJJG_js.dist_exports.deleteTableStyleFromMap)(nextMap, entry.styleId);
24295
+ (0, chunkFKY33ZKL_js.dist_exports.deleteTableStyleFromMap)(nextMap, entry.styleId);
24296
24296
  onStyleMapChange(nextMap);
24297
24297
  onDeleteStyle(entry.styleId);
24298
24298
  onClose();
@@ -24346,7 +24346,7 @@ function TablePropertiesPanel({
24346
24346
  const updateMergeRows = (rows) => {
24347
24347
  const tableData = { ...td, rows };
24348
24348
  const updates = { tableData };
24349
- const rawXml = (0, chunk3PKYNJJG_js.dist_exports.updateMergeAttrsInRawXml)(tableElement, tableData);
24349
+ const rawXml = (0, chunkFKY33ZKL_js.dist_exports.updateMergeAttrsInRawXml)(tableElement, tableData);
24350
24350
  if (rawXml) {
24351
24351
  updates.rawXml = rawXml;
24352
24352
  }
@@ -24412,7 +24412,7 @@ function TablePropertiesPanel({
24412
24412
  ] }),
24413
24413
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
24414
24414
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
24415
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunk3PKYNJJG_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
24415
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkFKY33ZKL_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
24416
24416
  "button",
24417
24417
  {
24418
24418
  type: "button",
@@ -24640,7 +24640,7 @@ function ElementInspectorBody({
24640
24640
  box: { width: selectedElement.width, height: selectedElement.height }
24641
24641
  }
24642
24642
  ),
24643
- (0, chunk3PKYNJJG_js.dist_exports.isImageLikeElement)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsx(
24643
+ (0, chunkFKY33ZKL_js.dist_exports.isImageLikeElement)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsx(
24644
24644
  ImagePropertiesPanel,
24645
24645
  {
24646
24646
  selectedElement,
@@ -24805,7 +24805,7 @@ function CommentMentionTextarea({
24805
24805
  "data-testid": "pptx-comment-mention-option",
24806
24806
  role: "option",
24807
24807
  "aria-selected": index === safeHighlighted,
24808
- className: chunk3PKYNJJG_js.cn(
24808
+ className: chunkFKY33ZKL_js.cn(
24809
24809
  "block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
24810
24810
  index === safeHighlighted && "bg-accent"
24811
24811
  ),
@@ -24928,7 +24928,7 @@ function InspectorCommentRow({
24928
24928
  return /* @__PURE__ */ jsxRuntime.jsxs(
24929
24929
  "div",
24930
24930
  {
24931
- className: chunk3PKYNJJG_js.cn(
24931
+ className: chunkFKY33ZKL_js.cn(
24932
24932
  "rounded border border-border bg-card p-2",
24933
24933
  depth > 0 && "ml-3 border-l-2 border-l-primary/40"
24934
24934
  ),
@@ -24942,7 +24942,7 @@ function InspectorCommentRow({
24942
24942
  t("pptx.comments.resolved")
24943
24943
  ] })
24944
24944
  ] }),
24945
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunk3PKYNJJG_js.formatCommentTimestamp(comment.createdAt) })
24945
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkFKY33ZKL_js.formatCommentTimestamp(comment.createdAt) })
24946
24946
  ] }),
24947
24947
  comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
24948
24948
  "button",
@@ -24950,12 +24950,12 @@ function InspectorCommentRow({
24950
24950
  type: "button",
24951
24951
  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",
24952
24952
  title: t("pptx.comments.commentingOn", {
24953
- element: chunk3PKYNJJG_js.getElementLabel(targetElement)
24953
+ element: chunkFKY33ZKL_js.getElementLabel(targetElement)
24954
24954
  }),
24955
24955
  onClick: () => onSelectElement(targetElement.id),
24956
24956
  children: [
24957
24957
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
24958
- chunk3PKYNJJG_js.getElementLabel(targetElement)
24958
+ chunkFKY33ZKL_js.getElementLabel(targetElement)
24959
24959
  ]
24960
24960
  }
24961
24961
  ) : /* @__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") })),
@@ -25024,7 +25024,7 @@ function InspectorCommentRow({
25024
25024
  "button",
25025
25025
  {
25026
25026
  type: "button",
25027
- className: chunk3PKYNJJG_js.cn(
25027
+ className: chunkFKY33ZKL_js.cn(
25028
25028
  "inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
25029
25029
  comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
25030
25030
  ),
@@ -25167,7 +25167,7 @@ function InspectorCommentsSection({
25167
25167
  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: [
25168
25168
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
25169
25169
  t("pptx.comments.commentingOn", {
25170
- element: chunk3PKYNJJG_js.getElementLabel(selectedElement)
25170
+ element: chunkFKY33ZKL_js.getElementLabel(selectedElement)
25171
25171
  })
25172
25172
  ] }),
25173
25173
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -25178,7 +25178,7 @@ function InspectorCommentsSection({
25178
25178
  authors: commentAuthors,
25179
25179
  rows: 2,
25180
25180
  placeholder: selectedElement ? t("pptx.comments.addOnElement", {
25181
- element: chunk3PKYNJJG_js.getElementLabel(selectedElement)
25181
+ element: chunkFKY33ZKL_js.getElementLabel(selectedElement)
25182
25182
  }) : t("pptx.comments.addPlaceholder"),
25183
25183
  className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
25184
25184
  onChange: onSetCommentDraft,
@@ -25191,7 +25191,7 @@ function InspectorCommentsSection({
25191
25191
  type: "button",
25192
25192
  onClick: onAddComment,
25193
25193
  disabled: !commentDraft.trim(),
25194
- className: chunk3PKYNJJG_js.cn(
25194
+ className: chunkFKY33ZKL_js.cn(
25195
25195
  "w-full inline-flex items-center justify-center gap-1 rounded px-2 py-1 text-[11px] font-medium transition-colors max-md:min-h-[44px]!",
25196
25196
  commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
25197
25197
  ),
@@ -25205,7 +25205,7 @@ function InspectorCommentsSection({
25205
25205
  ] });
25206
25206
  }
25207
25207
  function elementLabel(element) {
25208
- const text = (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element) ? (element.text || "").slice(0, 24) : void 0;
25208
+ const text = (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element) ? (element.text || "").slice(0, 24) : void 0;
25209
25209
  return text || element.type;
25210
25210
  }
25211
25211
  function InspectorElementsTab({
@@ -25232,13 +25232,13 @@ function InspectorElementsTab({
25232
25232
  };
25233
25233
  if (!activeSlide) {
25234
25234
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
25235
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk3PKYNJJG_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
25235
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkFKY33ZKL_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
25236
25236
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
25237
25237
  ] });
25238
25238
  }
25239
25239
  const elements = activeSlide.elements || [];
25240
25240
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
25241
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk3PKYNJJG_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
25241
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkFKY33ZKL_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
25242
25242
  [...elements].reverse().map((el, reversedIndex) => {
25243
25243
  const index = elements.length - 1 - reversedIndex;
25244
25244
  const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
@@ -25246,7 +25246,7 @@ function InspectorElementsTab({
25246
25246
  "div",
25247
25247
  {
25248
25248
  title: `${el.type} - ${el.id}`,
25249
- className: chunk3PKYNJJG_js.cn(
25249
+ className: chunkFKY33ZKL_js.cn(
25250
25250
  "flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
25251
25251
  selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
25252
25252
  ),
@@ -25283,7 +25283,7 @@ function InspectorPaneHeader({
25283
25283
  onClose
25284
25284
  }) {
25285
25285
  const { t } = reactI18next.useTranslation();
25286
- const { viewportWidth } = chunkQJ4X7Y7S_js.useIsMobile();
25286
+ const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
25287
25287
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
25288
25288
  const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
25289
25289
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -25306,7 +25306,7 @@ function InspectorPaneHeader({
25306
25306
  type: "button",
25307
25307
  title: t(labelKey),
25308
25308
  style: touchBtnStyle,
25309
- className: chunk3PKYNJJG_js.cn(
25309
+ className: chunkFKY33ZKL_js.cn(
25310
25310
  "flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
25311
25311
  activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
25312
25312
  ),
@@ -25420,7 +25420,7 @@ function CustomPropertiesBlock({
25420
25420
  "button",
25421
25421
  {
25422
25422
  type: "button",
25423
- className: chunk3PKYNJJG_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
25423
+ className: chunkFKY33ZKL_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
25424
25424
  onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
25425
25425
  children: "\xD7"
25426
25426
  }
@@ -25748,7 +25748,7 @@ function PresentationSettingsCard({
25748
25748
  min: 1,
25749
25749
  max: 16,
25750
25750
  disabled: !canEdit,
25751
- className: chunk3PKYNJJG_js.cn(INPUT2, "w-20"),
25751
+ className: chunkFKY33ZKL_js.cn(INPUT2, "w-20"),
25752
25752
  value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
25753
25753
  onChange: (e) => onUpdate({
25754
25754
  printProperties: pptx.withSlidesPerPage(
@@ -25836,14 +25836,14 @@ function SlideThemeOverridePanel({
25836
25836
  const translate = React105.useCallback((key) => t(key), [t]);
25837
25837
  const override = activeSlide?.clrMapOverride;
25838
25838
  const isOverrideActive = override !== void 0;
25839
- const targetSlotOptions = React105.useMemo(() => [...chunk3PKYNJJG_js.dist_exports.THEME_COLOR_SCHEME_KEYS], []);
25839
+ const targetSlotOptions = React105.useMemo(() => [...chunkFKY33ZKL_js.dist_exports.THEME_COLOR_SCHEME_KEYS], []);
25840
25840
  const commitOverride = React105.useCallback(
25841
25841
  (nextOverride) => {
25842
25842
  if (!activeSlide || !theme?.colorScheme) {
25843
25843
  onUpdateSlide({ clrMapOverride: nextOverride });
25844
25844
  return;
25845
25845
  }
25846
- const nextSlide = (0, chunk3PKYNJJG_js.dist_exports.applyThemeOverrideToSlide)(activeSlide, theme.colorScheme, nextOverride);
25846
+ const nextSlide = (0, chunkFKY33ZKL_js.dist_exports.applyThemeOverrideToSlide)(activeSlide, theme.colorScheme, nextOverride);
25847
25847
  onUpdateSlide({
25848
25848
  clrMapOverride: nextSlide.clrMapOverride,
25849
25849
  backgroundColor: nextSlide.backgroundColor,
@@ -25856,8 +25856,8 @@ function SlideThemeOverridePanel({
25856
25856
  (enabled) => {
25857
25857
  if (enabled) {
25858
25858
  const defaultMap = {};
25859
- for (const key of chunk3PKYNJJG_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
25860
- defaultMap[key] = chunk3PKYNJJG_js.dist_exports.DEFAULT_COLOR_MAP[key];
25859
+ for (const key of chunkFKY33ZKL_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
25860
+ defaultMap[key] = chunkFKY33ZKL_js.dist_exports.DEFAULT_COLOR_MAP[key];
25861
25861
  }
25862
25862
  commitOverride(defaultMap);
25863
25863
  } else {
@@ -25870,9 +25870,9 @@ function SlideThemeOverridePanel({
25870
25870
  (alias, targetSlot) => {
25871
25871
  const current = override ?? {};
25872
25872
  const next = { ...current, [alias]: targetSlot };
25873
- for (const key of chunk3PKYNJJG_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
25873
+ for (const key of chunkFKY33ZKL_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
25874
25874
  if (!next[key]) {
25875
- next[key] = chunk3PKYNJJG_js.dist_exports.DEFAULT_COLOR_MAP[key];
25875
+ next[key] = chunkFKY33ZKL_js.dist_exports.DEFAULT_COLOR_MAP[key];
25876
25876
  }
25877
25877
  }
25878
25878
  commitOverride(next);
@@ -25904,8 +25904,8 @@ function SlideThemeOverridePanel({
25904
25904
  ),
25905
25905
  t("pptx.themeOverride.enableOverride")
25906
25906
  ] }),
25907
- isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: chunk3PKYNJJG_js.dist_exports.COLOR_MAP_ALIAS_KEYS.map((alias) => {
25908
- const currentTarget = override[alias] ?? chunk3PKYNJJG_js.dist_exports.DEFAULT_COLOR_MAP[alias];
25907
+ isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: chunkFKY33ZKL_js.dist_exports.COLOR_MAP_ALIAS_KEYS.map((alias) => {
25908
+ const currentTarget = override[alias] ?? chunkFKY33ZKL_js.dist_exports.DEFAULT_COLOR_MAP[alias];
25909
25909
  const resolvedHex = resolveSlotColor(currentTarget);
25910
25910
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-[11px]", children: [
25911
25911
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-24 truncate text-muted-foreground", title: ALIAS_LABELS[alias], children: ALIAS_LABELS[alias] }),
@@ -25984,7 +25984,7 @@ function TransitionPreview({
25984
25984
  const { t } = reactI18next.useTranslation();
25985
25985
  const durationMs = transition.durationMs ?? 500;
25986
25986
  const animations = React105.useMemo(
25987
- () => chunkQJ4X7Y7S_js.getSlideTransitionAnimations(
25987
+ () => chunkGLWV52C6_js.getSlideTransitionAnimations(
25988
25988
  transition.type,
25989
25989
  durationMs,
25990
25990
  transition.direction,
@@ -26053,7 +26053,7 @@ function TransitionPreview({
26053
26053
  ]
26054
26054
  }
26055
26055
  ),
26056
- /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkQJ4X7Y7S_js.SLIDE_TRANSITION_KEYFRAMES })
26056
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkGLWV52C6_js.SLIDE_TRANSITION_KEYFRAMES })
26057
26057
  ] });
26058
26058
  }
26059
26059
  var DEFAULT_DURATION_MS = 320;
@@ -26070,13 +26070,13 @@ function SlideTransitionSection({
26070
26070
  return null;
26071
26071
  }
26072
26072
  const transitionType = activeSlide.transition?.type ?? "none";
26073
- const validDirections = chunk3PKYNJJG_js.dist_exports.TRANSITION_VALID_DIRECTIONS[transitionType];
26073
+ const validDirections = chunkFKY33ZKL_js.dist_exports.TRANSITION_VALID_DIRECTIONS[transitionType];
26074
26074
  const hasDirections = validDirections !== void 0 && validDirections.length > 0;
26075
26075
  const usesOrientation = pptx.TRANSITION_ORIENTATION_TYPES.has(transitionType);
26076
26076
  const isWheel = transitionType === "wheel";
26077
26077
  const isMorph = transitionType === "morph";
26078
- const patternOptions = chunk3PKYNJJG_js.dist_exports.TRANSITION_PATTERN_OPTIONS[transitionType];
26079
- const hasThruBlk = chunk3PKYNJJG_js.dist_exports.TRANSITION_THRUBLK_TYPES.has(transitionType);
26078
+ const patternOptions = chunkFKY33ZKL_js.dist_exports.TRANSITION_PATTERN_OPTIONS[transitionType];
26079
+ const hasThruBlk = chunkFKY33ZKL_js.dist_exports.TRANSITION_THRUBLK_TYPES.has(transitionType);
26080
26080
  return /* @__PURE__ */ jsxRuntime.jsxs(
26081
26081
  "div",
26082
26082
  {
@@ -26096,7 +26096,7 @@ function SlideTransitionSection({
26096
26096
  type: e.target.value
26097
26097
  }),
26098
26098
  className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
26099
- children: chunk3PKYNJJG_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
26099
+ children: chunkFKY33ZKL_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
26100
26100
  }
26101
26101
  )
26102
26102
  ] }),
@@ -26312,7 +26312,7 @@ function TagsSection({
26312
26312
  "button",
26313
26313
  {
26314
26314
  type: "button",
26315
- className: chunk3PKYNJJG_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
26315
+ className: chunkFKY33ZKL_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
26316
26316
  title: t("pptx.tags.deleteTag"),
26317
26317
  onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
26318
26318
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
@@ -26441,7 +26441,7 @@ function PresentationPropertiesPanel({
26441
26441
  canEdit
26442
26442
  }
26443
26443
  ) }),
26444
- activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunk3PKYNJJG_js.cn(CARD2, "space-y-1"), children: [
26444
+ activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunkFKY33ZKL_js.cn(CARD2, "space-y-1"), children: [
26445
26445
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
26446
26446
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
26447
26447
  activeSlide.elements?.length ?? 0,
@@ -26462,14 +26462,14 @@ function SlideBackgroundPanel({
26462
26462
  const { t } = reactI18next.useTranslation();
26463
26463
  const bgImageInputRef = React105.useRef(null);
26464
26464
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
26465
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk3PKYNJJG_js.cn(CARD2, "space-y-2"), children: [
26465
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkFKY33ZKL_js.cn(CARD2, "space-y-2"), children: [
26466
26466
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
26467
26467
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
26468
26468
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
26469
26469
  /* @__PURE__ */ jsxRuntime.jsx(
26470
26470
  DebouncedColorInput,
26471
26471
  {
26472
- value: chunk3PKYNJJG_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
26472
+ value: chunkFKY33ZKL_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
26473
26473
  disabled: !canEdit,
26474
26474
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
26475
26475
  onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
@@ -26508,7 +26508,7 @@ function SlideBackgroundPanel({
26508
26508
  "button",
26509
26509
  {
26510
26510
  type: "button",
26511
- className: chunk3PKYNJJG_js.cn(BTN2, "flex-1 text-center"),
26511
+ className: chunkFKY33ZKL_js.cn(BTN2, "flex-1 text-center"),
26512
26512
  disabled: !canEdit,
26513
26513
  onClick: () => bgImageInputRef.current?.click(),
26514
26514
  children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
@@ -26541,7 +26541,7 @@ function SlideBackgroundPanel({
26541
26541
  "button",
26542
26542
  {
26543
26543
  type: "button",
26544
- className: chunk3PKYNJJG_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
26544
+ className: chunkFKY33ZKL_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
26545
26545
  disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
26546
26546
  onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
26547
26547
  children: t("pptx.slideBackground.clearBackground")
@@ -26585,14 +26585,14 @@ function TemplateBackgroundCard({
26585
26585
  t("pptx.master.layout"),
26586
26586
  t("pptx.master.master")
26587
26587
  );
26588
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk3PKYNJJG_js.cn(CARD2, "space-y-2"), children: [
26588
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkFKY33ZKL_js.cn(CARD2, "space-y-2"), children: [
26589
26589
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
26590
26590
  rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
26591
26591
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
26592
26592
  /* @__PURE__ */ jsxRuntime.jsx(
26593
26593
  DebouncedColorInput,
26594
26594
  {
26595
- value: chunk3PKYNJJG_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
26595
+ value: chunkFKY33ZKL_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
26596
26596
  disabled: !canEdit,
26597
26597
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
26598
26598
  onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
@@ -26605,7 +26605,7 @@ function TemplateBackgroundCard({
26605
26605
  /* @__PURE__ */ jsxRuntime.jsx(
26606
26606
  DebouncedColorInput,
26607
26607
  {
26608
- value: chunk3PKYNJJG_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
26608
+ value: chunkFKY33ZKL_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
26609
26609
  disabled: !canEdit,
26610
26610
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
26611
26611
  onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
@@ -26716,7 +26716,7 @@ function InspectorPane(props) {
26716
26716
  } = props;
26717
26717
  const hasSelection = selectedElement !== null;
26718
26718
  const { t } = reactI18next.useTranslation();
26719
- const { dragY, handlers: dragHandlers } = chunkQJ4X7Y7S_js.useSheetDismissDrag(onClose);
26719
+ const { dragY, handlers: dragHandlers } = chunkGLWV52C6_js.useSheetDismissDrag(onClose);
26720
26720
  const {
26721
26721
  animationPanelHeight,
26722
26722
  effectiveThemeOptions,
@@ -26738,7 +26738,7 @@ function InspectorPane(props) {
26738
26738
  "div",
26739
26739
  {
26740
26740
  "data-pptx-chrome": "inspector",
26741
- className: chunk3PKYNJJG_js.cn(
26741
+ className: chunkFKY33ZKL_js.cn(
26742
26742
  // Shared styles
26743
26743
  "bg-background flex flex-col text-xs text-foreground shadow-xl",
26744
26744
  // Mobile: absolute bottom sheet overlay sized via dvh so it
@@ -27129,7 +27129,7 @@ function PresentationTouchControls({
27129
27129
  hideNavigation = false
27130
27130
  }) {
27131
27131
  const { t } = reactI18next.useTranslation();
27132
- const { isTouchDevice } = chunkQJ4X7Y7S_js.useIsMobile();
27132
+ const { isTouchDevice } = chunkGLWV52C6_js.useIsMobile();
27133
27133
  if (!isTouchDevice) {
27134
27134
  return null;
27135
27135
  }
@@ -27434,13 +27434,13 @@ function PrintPreview({
27434
27434
  }) {
27435
27435
  const { t } = reactI18next.useTranslation();
27436
27436
  const pages = React105.useMemo(
27437
- () => chunk3PKYNJJG_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
27437
+ () => chunkFKY33ZKL_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
27438
27438
  [slideIndices, slidesPerPage, orientation]
27439
27439
  );
27440
- const printable = React105.useMemo(() => chunk3PKYNJJG_js.getPrintableArea(orientation), [orientation]);
27440
+ const printable = React105.useMemo(() => chunkFKY33ZKL_js.getPrintableArea(orientation), [orientation]);
27441
27441
  const visiblePages = pages.slice(0, maxPages);
27442
27442
  const isThreePerPage = slidesPerPage === 3;
27443
- const noteLineCount = chunk3PKYNJJG_js.generateNoteLineCount();
27443
+ const noteLineCount = chunkFKY33ZKL_js.generateNoteLineCount();
27444
27444
  const scaledW = printable.width * PREVIEW_SCALE3;
27445
27445
  const scaledH = printable.height * PREVIEW_SCALE3;
27446
27446
  const noteAreaFraction = 0.5;
@@ -27776,11 +27776,11 @@ function PrintDialog({
27776
27776
  }) {
27777
27777
  const { t } = reactI18next.useTranslation();
27778
27778
  const regionRenderer = useRegionRenderer("dialog.print");
27779
- const { panelStyle, handlers: dragHandlers } = chunkQJ4X7Y7S_js.useModalDismissDrag(onClose);
27780
- const { viewportWidth } = chunkQJ4X7Y7S_js.useIsMobile();
27779
+ const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onClose);
27780
+ const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
27781
27781
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
27782
27782
  const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
27783
- const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkQJ4X7Y7S_js.useViewerOptionsContext());
27783
+ const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkGLWV52C6_js.useViewerOptionsContext());
27784
27784
  const [printWhat, setPrintWhat] = React105.useState(printOptionDefaults?.printWhat ?? "slides");
27785
27785
  const [orientation, setOrientation] = React105.useState("landscape");
27786
27786
  const [colorMode, setColorMode] = React105.useState(
@@ -28297,14 +28297,14 @@ function BroadcastDialog({
28297
28297
  }) {
28298
28298
  const { t } = reactI18next.useTranslation();
28299
28299
  const regionRenderer = useRegionRenderer("dialog.broadcast");
28300
- const collab = chunkQJ4X7Y7S_js.useCollaboration();
28300
+ const collab = chunkGLWV52C6_js.useCollaboration();
28301
28301
  const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
28302
28302
  const [roomId, setRoomId] = React105.useState("");
28303
28303
  const [userName, setUserName] = React105.useState("");
28304
28304
  const [serverUrl, setServerUrl] = React105.useState("");
28305
28305
  const [copied, setCopied] = React105.useState(false);
28306
28306
  const dialogRef = React105.useRef(null);
28307
- const { panelStyle, handlers: dragHandlers } = chunkQJ4X7Y7S_js.useModalDismissDrag(onClose);
28307
+ const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onClose);
28308
28308
  useModalFocus(open, dialogRef, onClose);
28309
28309
  React105.useEffect(() => {
28310
28310
  if (open && !isBroadcasting) {
@@ -28620,7 +28620,7 @@ function ActiveSessionView({
28620
28620
  onCopyRoomId,
28621
28621
  onStopCollaboration
28622
28622
  }) {
28623
- const { t } = reactI18next.useTranslation(), viewerOptions = chunkQJ4X7Y7S_js.useViewerOptionsContext(), statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400", statusIcon = collab.status === "connected" || collab.status === "connecting" ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifi, { className: "w-4 h-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifiOff, { className: "w-4 h-4" }), sessionUsers = pptx.buildActiveSessionUsers({
28623
+ const { t } = reactI18next.useTranslation(), viewerOptions = chunkGLWV52C6_js.useViewerOptionsContext(), statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400", statusIcon = collab.status === "connected" || collab.status === "connecting" ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifi, { className: "w-4 h-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifiOff, { className: "w-4 h-4" }), sessionUsers = pptx.buildActiveSessionUsers({
28624
28624
  localUserName: activeCollaboration?.userName ?? collab.config.userName,
28625
28625
  localUserInitials: viewerOptions.general.userInitials,
28626
28626
  localUserColor: collab.config.userColor,
@@ -28719,7 +28719,7 @@ function StartSessionForm({
28719
28719
  onRetry
28720
28720
  }) {
28721
28721
  const { t } = reactI18next.useTranslation();
28722
- const { viewportWidth } = chunkQJ4X7Y7S_js.useIsMobile();
28722
+ const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
28723
28723
  const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
28724
28724
  const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
28725
28725
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
@@ -28853,7 +28853,7 @@ function ShareDialog({
28853
28853
  defaultUserName,
28854
28854
  defaultServerUrl
28855
28855
  }) {
28856
- const collab = chunkQJ4X7Y7S_js.useCollaboration();
28856
+ const collab = chunkGLWV52C6_js.useCollaboration();
28857
28857
  const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
28858
28858
  const { t } = reactI18next.useTranslation();
28859
28859
  const regionRenderer = useRegionRenderer("dialog.share");
@@ -28864,9 +28864,9 @@ function ShareDialog({
28864
28864
  const [invitation, setInvitation] = React105.useState("");
28865
28865
  const [copied, setCopied] = React105.useState(false);
28866
28866
  const dialogRef = React105.useRef(null);
28867
- const { panelStyle, handlers: dragHandlers } = chunkQJ4X7Y7S_js.useModalDismissDrag(onClose);
28867
+ const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onClose);
28868
28868
  useModalFocus(open, dialogRef, onClose);
28869
- const { viewportWidth, viewportHeight } = chunkQJ4X7Y7S_js.useIsMobile();
28869
+ const { viewportWidth, viewportHeight } = chunkGLWV52C6_js.useIsMobile();
28870
28870
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
28871
28871
  const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
28872
28872
  const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
@@ -29165,12 +29165,12 @@ function HyperlinkEditDialog({
29165
29165
  onCancel
29166
29166
  }) {
29167
29167
  const { t } = reactI18next.useTranslation();
29168
- const { panelStyle, handlers: dragHandlers } = chunkQJ4X7Y7S_js.useModalDismissDrag(onCancel);
29168
+ const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onCancel);
29169
29169
  const inputRef = React105.useRef(null);
29170
- const detectedType = chunkQJ4X7Y7S_js.detectTargetType(initialUrl, initialAction);
29171
- const emailParts = chunkQJ4X7Y7S_js.parseEmailUrl(initialUrl || "");
29172
- const detectedSlide = chunkQJ4X7Y7S_js.parseSlideFromUrl(initialUrl, initialAction);
29173
- const detectedVerb = initialAction ? chunkQJ4X7Y7S_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
29170
+ const detectedType = chunkGLWV52C6_js.detectTargetType(initialUrl, initialAction);
29171
+ const emailParts = chunkGLWV52C6_js.parseEmailUrl(initialUrl || "");
29172
+ const detectedSlide = chunkGLWV52C6_js.parseSlideFromUrl(initialUrl, initialAction);
29173
+ const detectedVerb = initialAction ? chunkGLWV52C6_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
29174
29174
  const [targetType, setTargetType] = React105.useState(detectedType);
29175
29175
  const [url, setUrl] = React105.useState(
29176
29176
  detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
@@ -29201,7 +29201,7 @@ function HyperlinkEditDialog({
29201
29201
  actionVerb
29202
29202
  });
29203
29203
  };
29204
- const tabCls = (active) => chunk3PKYNJJG_js.cn(
29204
+ const tabCls = (active) => chunkFKY33ZKL_js.cn(
29205
29205
  "px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
29206
29206
  active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
29207
29207
  );
@@ -29447,7 +29447,7 @@ function ViewerBottomPanels({
29447
29447
  notesStyle,
29448
29448
  onNotesHeightChange
29449
29449
  }) {
29450
- const { isHidden } = chunkQJ4X7Y7S_js.useToolbarVisibility(hiddenActions);
29450
+ const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(hiddenActions);
29451
29451
  const customization = useViewerCustomizationContext();
29452
29452
  const showNotes = pptx.isPanelVisible(customization, "notes");
29453
29453
  const notesRenderer = useRegionRenderer("notes");
@@ -29837,7 +29837,7 @@ function ViewerToolbarSection(props) {
29837
29837
  [activeSlide, propertyHandlers]
29838
29838
  );
29839
29839
  const scopedLayoutOptions = React105__default.default.useMemo(
29840
- () => chunkQJ4X7Y7S_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
29840
+ () => chunkGLWV52C6_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
29841
29841
  [s.layoutOptions, activeSlide]
29842
29842
  );
29843
29843
  const handleResetSlide = React105.useCallback(() => {
@@ -30242,14 +30242,14 @@ function ViewerToolbarSection(props) {
30242
30242
  isMobileInsertOpen: s.isMobileInsertOpen,
30243
30243
  onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
30244
30244
  slideCommentCount: activeSlide?.comments?.length ?? 0,
30245
- reviewComments: chunkQJ4X7Y7S_js.createReviewCommentsHost({
30245
+ reviewComments: chunkGLWV52C6_js.createReviewCommentsHost({
30246
30246
  state: s,
30247
30247
  activeSlideIndex,
30248
30248
  updateSlides: ops.updateSlides,
30249
30249
  markDirty: history.markDirty
30250
30250
  }),
30251
30251
  formatPainterActive: s.formatPainterActive,
30252
- canActivateFormatPainter: chunk3PKYNJJG_js.hasCopyableFormat(selectedElement),
30252
+ canActivateFormatPainter: chunkFKY33ZKL_js.hasCopyableFormat(selectedElement),
30253
30253
  onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
30254
30254
  isSelectionPaneOpen: s.isSelectionPaneOpen,
30255
30255
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -30336,7 +30336,7 @@ function EquationEditorDialog({
30336
30336
  existingOmml
30337
30337
  }) {
30338
30338
  const { t } = reactI18next.useTranslation();
30339
- const { panelStyle, handlers: dragHandlers } = chunkQJ4X7Y7S_js.useModalDismissDrag(onClose);
30339
+ const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onClose);
30340
30340
  const initialLatex = React105.useMemo(() => {
30341
30341
  if (!existingOmml) {
30342
30342
  return "";
@@ -30458,7 +30458,7 @@ function EquationEditorDialog({
30458
30458
  {
30459
30459
  type: "button",
30460
30460
  onClick: () => handleTemplateClick(tmpl.latex),
30461
- className: chunk3PKYNJJG_js.cn(
30461
+ className: chunkFKY33ZKL_js.cn(
30462
30462
  "flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
30463
30463
  latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
30464
30464
  ),
@@ -30524,7 +30524,7 @@ function getPreviewForLayout(layout) {
30524
30524
  transform: `scale(${scale})`,
30525
30525
  transformOrigin: "top left"
30526
30526
  },
30527
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkQJ4X7Y7S_js.SmartArtRenderer, { element: pptx.buildSmartArtPreviewElement(layout) })
30527
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.SmartArtRenderer, { element: pptx.buildSmartArtPreviewElement(layout) })
30528
30528
  }
30529
30529
  )
30530
30530
  }
@@ -30536,7 +30536,7 @@ function InsertSmartArtDialog({
30536
30536
  onInsert
30537
30537
  }) {
30538
30538
  const { t } = reactI18next.useTranslation();
30539
- const { panelStyle, handlers: dragHandlers } = chunkQJ4X7Y7S_js.useModalDismissDrag(onClose);
30539
+ const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onClose);
30540
30540
  const [activeCategory, setActiveCategory] = React105.useState("list");
30541
30541
  const [selectedLayout, setSelectedLayout] = React105.useState(null);
30542
30542
  const dialogRef = React105.useRef(null);
@@ -30617,7 +30617,7 @@ function InsertSmartArtDialog({
30617
30617
  setActiveCategory(cat.id);
30618
30618
  setSelectedLayout(null);
30619
30619
  },
30620
- className: chunk3PKYNJJG_js.cn(
30620
+ className: chunkFKY33ZKL_js.cn(
30621
30621
  "w-full text-left px-3 py-1.5 text-xs transition-colors",
30622
30622
  activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
30623
30623
  ),
@@ -30645,7 +30645,7 @@ function InsertSmartArtDialog({
30645
30645
  onInsert(preset.layout, preset.defaultItems);
30646
30646
  onClose();
30647
30647
  },
30648
- className: chunk3PKYNJJG_js.cn(
30648
+ className: chunkFKY33ZKL_js.cn(
30649
30649
  "flex flex-col items-center gap-1 p-2 rounded border transition-colors",
30650
30650
  selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
30651
30651
  ),
@@ -31143,11 +31143,11 @@ function PresentationStage({
31143
31143
  })
31144
31144
  },
31145
31145
  children: [
31146
- /* @__PURE__ */ jsxRuntime.jsx(chunkQJ4X7Y7S_js.SlideBackgroundImageLayer, { slide: activeSlide }),
31146
+ /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.SlideBackgroundImageLayer, { slide: activeSlide }),
31147
31147
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
31148
31148
  presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
31149
31149
  templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
31150
- chunkQJ4X7Y7S_js.ElementRenderer,
31150
+ chunkGLWV52C6_js.ElementRenderer,
31151
31151
  {
31152
31152
  element,
31153
31153
  activeSlide,
@@ -31184,7 +31184,7 @@ function PresentationStage({
31184
31184
  `tpl-${element.id}`
31185
31185
  )),
31186
31186
  activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
31187
- chunkQJ4X7Y7S_js.ElementRenderer,
31187
+ chunkGLWV52C6_js.ElementRenderer,
31188
31188
  {
31189
31189
  element,
31190
31190
  activeSlide,
@@ -31306,8 +31306,8 @@ function ViewerCanvasArea(props) {
31306
31306
  aiCanvasActive = false
31307
31307
  } = props;
31308
31308
  const { t } = reactI18next.useTranslation();
31309
- const { isHidden } = chunkQJ4X7Y7S_js.useToolbarVisibility(hiddenActions);
31310
- const viewerOptions = chunkQJ4X7Y7S_js.useViewerOptionsContext();
31309
+ const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(hiddenActions);
31310
+ const viewerOptions = chunkGLWV52C6_js.useViewerOptionsContext();
31311
31311
  const outlineAuthoring = useOutlineAuthoring({
31312
31312
  state: s,
31313
31313
  updateElement: canvasHandlers.handleUpdateSmartArtElement,
@@ -31337,7 +31337,7 @@ function ViewerCanvasArea(props) {
31337
31337
  ${url}`)) {
31338
31338
  return;
31339
31339
  }
31340
- chunk3PKYNJJG_js.safeOpenUrl(url);
31340
+ chunkFKY33ZKL_js.safeOpenUrl(url);
31341
31341
  },
31342
31342
  [viewerOptions, t]
31343
31343
  );
@@ -31358,9 +31358,9 @@ ${url}`)) {
31358
31358
  );
31359
31359
  const handleHyperlinkClick = React105.useCallback(
31360
31360
  (url) => {
31361
- if (chunk3PKYNJJG_js.isPpactionUrl(url)) {
31361
+ if (chunkFKY33ZKL_js.isPpactionUrl(url)) {
31362
31362
  if (mode === "present") {
31363
- const parsed = chunk3PKYNJJG_js.parsePpactionUrl(url);
31363
+ const parsed = chunkFKY33ZKL_js.parsePpactionUrl(url);
31364
31364
  if (parsed) {
31365
31365
  const action = {
31366
31366
  action: parsed.action,
@@ -31445,7 +31445,7 @@ ${url}`)) {
31445
31445
  s.setActiveSlideIndex((i) => Math.max(0, i - 1));
31446
31446
  }
31447
31447
  }, [mode, presentation, s]);
31448
- const swipe = chunkQJ4X7Y7S_js.useSwipeNavigation({
31448
+ const swipe = chunkGLWV52C6_js.useSwipeNavigation({
31449
31449
  enabled: swipeEnabled,
31450
31450
  onNext: handleSwipeNext,
31451
31451
  onPrev: handleSwipePrev
@@ -31525,7 +31525,7 @@ ${url}`)) {
31525
31525
  ),
31526
31526
  children: (stageScale) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31527
31527
  presentation.transitionOverlay && slides[presentation.transitionOverlay.outgoingSlideIndex] && /* @__PURE__ */ jsxRuntime.jsx(
31528
- chunkQJ4X7Y7S_js.PresentationTransitionOverlay,
31528
+ chunkGLWV52C6_js.PresentationTransitionOverlay,
31529
31529
  {
31530
31530
  outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
31531
31531
  templateElements,
@@ -31636,14 +31636,14 @@ ${url}`)) {
31636
31636
  outlineAuthoring,
31637
31637
  collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31638
31638
  /* @__PURE__ */ jsxRuntime.jsx(
31639
- chunkQJ4X7Y7S_js.RemoteSelectionOverlay,
31639
+ chunkGLWV52C6_js.RemoteSelectionOverlay,
31640
31640
  {
31641
31641
  elements: effectiveSlide?.elements ?? [],
31642
31642
  activeSlideIndex
31643
31643
  }
31644
31644
  ),
31645
31645
  /* @__PURE__ */ jsxRuntime.jsx(
31646
- chunkQJ4X7Y7S_js.CollaborationCursorOverlay,
31646
+ chunkGLWV52C6_js.CollaborationCursorOverlay,
31647
31647
  {
31648
31648
  activeSlideIndex,
31649
31649
  canvasWidth: canvasSize.width,
@@ -31783,7 +31783,7 @@ function useTableStyleMapHandlers(input) {
31783
31783
  var AiChatPanel = React105.lazy(async () => {
31784
31784
  const [{ useChat }, { default: Panel }] = await Promise.all([
31785
31785
  import('@ai-sdk/react'),
31786
- import('./AiChatPanel-KEVVVR7C.js')
31786
+ import('./AiChatPanel-VI2IQ7XU.js')
31787
31787
  ]);
31788
31788
  function BoundAiChatPanel(props) {
31789
31789
  return /* @__PURE__ */ jsxRuntime.jsx(Panel, { ...props, useChat });
@@ -31907,7 +31907,7 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
31907
31907
  }
31908
31908
  function ChartFormatPanel() {
31909
31909
  const { t } = reactI18next.useTranslation();
31910
- const commands = chunkQJ4X7Y7S_js.useChartFormatContext();
31910
+ const commands = chunkGLWV52C6_js.useChartFormatContext();
31911
31911
  const ref = React105.useRef(null);
31912
31912
  const chart = commands?.chart;
31913
31913
  const chartData = chart?.type === "chart" ? chart.chartData : void 0;
@@ -31980,7 +31980,7 @@ function MobileDismissSheet({
31980
31980
  children
31981
31981
  }) {
31982
31982
  const { t } = reactI18next.useTranslation();
31983
- const { dragY, handlers } = chunkQJ4X7Y7S_js.useSheetDismissDrag(onClose);
31983
+ const { dragY, handlers } = chunkGLWV52C6_js.useSheetDismissDrag(onClose);
31984
31984
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31985
31985
  /* @__PURE__ */ jsxRuntime.jsx(
31986
31986
  "button",
@@ -32249,7 +32249,7 @@ function ThemeThumbnail({
32249
32249
  {
32250
32250
  type: "button",
32251
32251
  onClick,
32252
- className: chunk3PKYNJJG_js.cn(
32252
+ className: chunkFKY33ZKL_js.cn(
32253
32253
  "group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
32254
32254
  selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
32255
32255
  ),
@@ -32435,7 +32435,7 @@ function ViewerSidePanels(props) {
32435
32435
  const customization = useViewerCustomizationContext();
32436
32436
  const inspectorOpen = (mode === "edit" || mode === "master") && s.isInspectorPaneOpen && pptx.isPanelVisible(customization, "inspector");
32437
32437
  const currentBuiltInTheme = BUILT_IN_THEMES.find(
32438
- (candidate) => (0, chunk3PKYNJJG_js.dist_exports.themeColorSchemesEqual)(s.theme?.colorScheme, candidate.colorScheme)
32438
+ (candidate) => (0, chunkFKY33ZKL_js.dist_exports.themeColorSchemesEqual)(s.theme?.colorScheme, candidate.colorScheme)
32439
32439
  ) ?? null;
32440
32440
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
32441
32441
  inspectorOpen && onResizeRight && /* @__PURE__ */ jsxRuntime.jsx(ResizeHandle, { direction: "horizontal", onResize: onResizeRight }),
@@ -32720,7 +32720,7 @@ function ViewerMainContent(props) {
32720
32720
  );
32721
32721
  const layoutGalleryAnchorRef = React105.useRef(null);
32722
32722
  const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
32723
- return /* @__PURE__ */ jsxRuntime.jsx(chunkQJ4X7Y7S_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
32723
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
32724
32724
  showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
32725
32725
  slidesPaneRenderer ? (
32726
32726
  // The rail's slot (width, collapse, resize handle) stays the viewer's.
@@ -33225,7 +33225,7 @@ function MobileChromeOverlay(props) {
33225
33225
  slideSectionGroups,
33226
33226
  canEdit,
33227
33227
  commentCount
33228
- } = props, { keyboardInset, isKeyboardOpen } = chunkQJ4X7Y7S_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
33228
+ } = props, { keyboardInset, isKeyboardOpen } = chunkGLWV52C6_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
33229
33229
  s.setIsSlidesPaneOpen(false);
33230
33230
  s.setIsMobileInsertOpen(false);
33231
33231
  s.setIsInspectorPaneOpen(false);
@@ -33433,7 +33433,7 @@ function AddinTable({
33433
33433
  "tr",
33434
33434
  {
33435
33435
  onClick: () => onSelect(row.id),
33436
- className: chunk3PKYNJJG_js.cn(
33436
+ className: chunkFKY33ZKL_js.cn(
33437
33437
  "cursor-pointer border-b border-border/40 transition-colors",
33438
33438
  selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
33439
33439
  ),
@@ -33512,7 +33512,7 @@ function CommandList({
33512
33512
  role: "option",
33513
33513
  "aria-selected": selectedId === id,
33514
33514
  onClick: () => onSelect(id),
33515
- className: chunk3PKYNJJG_js.cn(
33515
+ className: chunkFKY33ZKL_js.cn(
33516
33516
  "flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
33517
33517
  selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
33518
33518
  ),
@@ -33656,7 +33656,7 @@ function OptionsRibbonPane({
33656
33656
  return /* @__PURE__ */ jsxRuntime.jsxs(
33657
33657
  "label",
33658
33658
  {
33659
- className: chunk3PKYNJJG_js.cn(
33659
+ className: chunkFKY33ZKL_js.cn(
33660
33660
  "flex items-center gap-2 rounded px-2 py-1.5",
33661
33661
  isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
33662
33662
  ),
@@ -33690,7 +33690,7 @@ function OptionsRibbonPane({
33690
33690
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
33691
33691
  "div",
33692
33692
  {
33693
- className: chunk3PKYNJJG_js.cn(
33693
+ className: chunkFKY33ZKL_js.cn(
33694
33694
  "flex items-center justify-between gap-3 rounded px-3 py-2",
33695
33695
  i % 2 === 0 ? "bg-muted/60" : ""
33696
33696
  ),
@@ -33711,7 +33711,7 @@ async function exportAiChatLogs(options) {
33711
33711
  chats,
33712
33712
  { format: options?.format, detailed: options?.detailed, now: options?.now },
33713
33713
  (filename, content, mime) => {
33714
- chunkQJ4X7Y7S_js.downloadBlob(new Blob([content], { type: mime }), filename);
33714
+ chunkGLWV52C6_js.downloadBlob(new Blob([content], { type: mime }), filename);
33715
33715
  }
33716
33716
  );
33717
33717
  }
@@ -33819,7 +33819,7 @@ function SettingsAppearanceTab({
33819
33819
  type: "button",
33820
33820
  onClick: () => onSelectTheme(entry.key),
33821
33821
  "aria-pressed": isActive,
33822
- className: chunk3PKYNJJG_js.cn(
33822
+ className: chunkFKY33ZKL_js.cn(
33823
33823
  "flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
33824
33824
  isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
33825
33825
  ),
@@ -33836,7 +33836,7 @@ function SettingsAppearanceTab({
33836
33836
  /* @__PURE__ */ jsxRuntime.jsx(
33837
33837
  "span",
33838
33838
  {
33839
- className: chunk3PKYNJJG_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
33839
+ className: chunkFKY33ZKL_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
33840
33840
  children: t(entry.labelKey)
33841
33841
  }
33842
33842
  )
@@ -33916,7 +33916,7 @@ function SettingsLanguageTab({
33916
33916
  type: "button",
33917
33917
  onClick: () => onSelectLocale(locale.code),
33918
33918
  "aria-pressed": isActive,
33919
- className: chunk3PKYNJJG_js.cn(
33919
+ className: chunkFKY33ZKL_js.cn(
33920
33920
  "flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
33921
33921
  isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
33922
33922
  ),
@@ -34053,7 +34053,7 @@ function ViewerOptionsProvider({
34053
34053
  store,
34054
34054
  children
34055
34055
  }) {
34056
- return /* @__PURE__ */ jsxRuntime.jsx(chunkQJ4X7Y7S_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkQJ4X7Y7S_js.ViewerOptionsContext.Provider, { value: options, children }) });
34056
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.ViewerOptionsContext.Provider, { value: options, children }) });
34057
34057
  }
34058
34058
  function useAiBridge(input) {
34059
34059
  const ref = React105.useRef(input);
@@ -34497,7 +34497,7 @@ function useMasterViewCrud(input) {
34497
34497
  if (id === "renameLayout" || id === "renameMaster") {
34498
34498
  const master = slideMasters[target.masterIndex];
34499
34499
  const current = id === "renameLayout" ? master?.layouts?.[target.layoutIndex ?? -1]?.name ?? "" : master?.name ?? "";
34500
- const next = chunkQJ4X7Y7S_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
34500
+ const next = chunkGLWV52C6_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
34501
34501
  if (!next) {
34502
34502
  return;
34503
34503
  }
@@ -34995,7 +34995,7 @@ var PowerPointViewer = React105.forwardRef(
34995
34995
  }
34996
34996
  })();
34997
34997
  }, []);
34998
- const { optionsStore, options: viewerOptions } = chunkQJ4X7Y7S_js.useViewerOptions();
34998
+ const { optionsStore, options: viewerOptions } = chunkGLWV52C6_js.useViewerOptions();
34999
34999
  const custom = useViewerCustomization(customization, legacyHiddenActions, optionsStore);
35000
35000
  const { resolved: customizationResolved, hiddenActions } = custom;
35001
35001
  const aiEnabled = Boolean(ai) && pptx.isFeatureEnabled(customizationResolved, "ai");
@@ -35009,8 +35009,8 @@ var PowerPointViewer = React105.forwardRef(
35009
35009
  const handleEnableEditing = React105.useCallback(() => {
35010
35010
  setProtectedViewOverridden(true);
35011
35011
  }, []);
35012
- const readOnlyRec = chunkQJ4X7Y7S_js.useReadOnlyRecommendationState(content);
35013
- const compatToastsState = chunkQJ4X7Y7S_js.useCompatibilityToastsState();
35012
+ const readOnlyRec = chunkGLWV52C6_js.useReadOnlyRecommendationState(content);
35013
+ const compatToastsState = chunkGLWV52C6_js.useCompatibilityToastsState();
35014
35014
  const [notesBarHeight, setNotesBarHeight] = React105.useState(0);
35015
35015
  const runProgramNoticesState = useRunProgramNoticesState();
35016
35016
  const [collaborationReadOnly, setCollaborationReadOnly] = React105.useState(Boolean(collaboration));
@@ -35025,8 +35025,8 @@ var PowerPointViewer = React105.forwardRef(
35025
35025
  filePath
35026
35026
  });
35027
35027
  const [isShareDialogOpen, setIsShareDialogOpen] = React105.useState(false);
35028
- const { reducedMotion, toggleReducedMotion } = chunkQJ4X7Y7S_js.useReducedMotion();
35029
- const state = chunkQJ4X7Y7S_js.useViewerState({
35028
+ const { reducedMotion, toggleReducedMotion } = chunkGLWV52C6_js.useReducedMotion();
35029
+ const state = chunkGLWV52C6_js.useViewerState({
35030
35030
  content,
35031
35031
  canEdit,
35032
35032
  inspectorInitiallyOpen: props.inspectorInitiallyOpen
@@ -35063,7 +35063,7 @@ var PowerPointViewer = React105.forwardRef(
35063
35063
  [state.recentColors, pushColor]
35064
35064
  );
35065
35065
  const themeColorMapValue = React105.useMemo(
35066
- () => state.theme?.colorScheme ? (0, chunk3PKYNJJG_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
35066
+ () => state.theme?.colorScheme ? (0, chunkFKY33ZKL_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
35067
35067
  [state.theme?.colorScheme]
35068
35068
  );
35069
35069
  const settings = React105.useMemo(
@@ -35150,16 +35150,16 @@ var PowerPointViewer = React105.forwardRef(
35150
35150
  }
35151
35151
  }, [settings, optionsStore]);
35152
35152
  const handleClearOptionsCache2 = useAutosaveCacheMaintenance(viewerOptions);
35153
- const mobile = chunkQJ4X7Y7S_js.useIsMobile();
35153
+ const mobile = chunkGLWV52C6_js.useIsMobile();
35154
35154
  const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
35155
- const resizablePanels = chunkQJ4X7Y7S_js.useResizablePanels();
35155
+ const resizablePanels = chunkGLWV52C6_js.useResizablePanels();
35156
35156
  const {
35157
35157
  gridSpacingPx,
35158
35158
  visibleSlideIndexes,
35159
35159
  slideSectionGroups,
35160
35160
  masterPseudoSlide,
35161
35161
  authoredRange
35162
- } = chunkQJ4X7Y7S_js.useDerivedSlideState({
35162
+ } = chunkGLWV52C6_js.useDerivedSlideState({
35163
35163
  slides,
35164
35164
  sections: state.sections,
35165
35165
  customShows: state.customShows,
@@ -35184,7 +35184,7 @@ var PowerPointViewer = React105.forwardRef(
35184
35184
  state.cropSessionRef
35185
35185
  ]
35186
35186
  );
35187
- const zoom = chunkQJ4X7Y7S_js.useZoomViewport({
35187
+ const zoom = chunkGLWV52C6_js.useZoomViewport({
35188
35188
  canvasSize,
35189
35189
  selectedElements: state.selectedElements,
35190
35190
  fitPadding: props.fitPadding,
@@ -35194,7 +35194,7 @@ var PowerPointViewer = React105.forwardRef(
35194
35194
  const markDocumentDirty = React105.useCallback(() => {
35195
35195
  setIsDirty(true);
35196
35196
  }, [setIsDirty]);
35197
- const history = chunkQJ4X7Y7S_js.useEditorHistory({
35197
+ const history = chunkGLWV52C6_js.useEditorHistory({
35198
35198
  slides,
35199
35199
  canvasSize,
35200
35200
  activeSlideIndex,
@@ -35220,7 +35220,7 @@ var PowerPointViewer = React105.forwardRef(
35220
35220
  setEditTemplateMode: state.setEditTemplateMode,
35221
35221
  setHeaderFooter: state.setHeaderFooter
35222
35222
  });
35223
- const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkQJ4X7Y7S_js.usePresentationSetup({
35223
+ const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkGLWV52C6_js.usePresentationSetup({
35224
35224
  mode,
35225
35225
  slides,
35226
35226
  visibleSlideIndexes,
@@ -35295,7 +35295,7 @@ ${url}`)
35295
35295
  loading,
35296
35296
  error
35297
35297
  ]);
35298
- chunkQJ4X7Y7S_js.useTouchGestures({
35298
+ chunkGLWV52C6_js.useTouchGestures({
35299
35299
  targetRef: zoom.canvasViewportRef,
35300
35300
  currentScale: zoom.scale,
35301
35301
  callbacks: {
@@ -35317,7 +35317,7 @@ ${url}`)
35317
35317
  },
35318
35318
  enabled: isTouchDevice
35319
35319
  });
35320
- const dialogs = chunkQJ4X7Y7S_js.useViewerDialogs({
35320
+ const dialogs = chunkGLWV52C6_js.useViewerDialogs({
35321
35321
  mode,
35322
35322
  slides,
35323
35323
  activeSlide,
@@ -35366,7 +35366,7 @@ ${url}`)
35366
35366
  zoom.handleZoomToFit();
35367
35367
  zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
35368
35368
  }, [mode]);
35369
- const editorOps = chunkQJ4X7Y7S_js.useEditorOperations({
35369
+ const editorOps = chunkGLWV52C6_js.useEditorOperations({
35370
35370
  state,
35371
35371
  history,
35372
35372
  zoom,
@@ -35409,7 +35409,7 @@ ${url}`)
35409
35409
  handlerRef,
35410
35410
  viewerApi,
35411
35411
  loadVersion
35412
- } = chunkQJ4X7Y7S_js.useViewerIntegration({
35412
+ } = chunkGLWV52C6_js.useViewerIntegration({
35413
35413
  transformCommittedText: (text) => pptx.applyAutoCorrect(text, viewerOptions.proofing),
35414
35414
  state,
35415
35415
  zoom,
@@ -35536,7 +35536,7 @@ ${url}`)
35536
35536
  updateElementById: editorOps.ops.updateElementById
35537
35537
  });
35538
35538
  const ribbonScope = useRibbonScopeToken();
35539
- const viewPreferencesSync = chunkQJ4X7Y7S_js.useViewPreferencesSync({
35539
+ const viewPreferencesSync = chunkGLWV52C6_js.useViewPreferencesSync({
35540
35540
  loadVersion,
35541
35541
  viewProperties: state.viewProperties,
35542
35542
  setViewProperties: state.setViewProperties,
@@ -35574,7 +35574,7 @@ ${url}`)
35574
35574
  },
35575
35575
  [state]
35576
35576
  );
35577
- const layoutSwitching = chunkQJ4X7Y7S_js.useLayoutSwitching({
35577
+ const layoutSwitching = chunkGLWV52C6_js.useLayoutSwitching({
35578
35578
  handler: handlerRef.current,
35579
35579
  slides,
35580
35580
  activeSlideIndex,
@@ -35684,7 +35684,7 @@ ${url}`)
35684
35684
  "data-pptx-editor-chrome": "",
35685
35685
  ...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
35686
35686
  "aria-busy": loading,
35687
- className: chunk3PKYNJJG_js.cn(
35687
+ className: chunkFKY33ZKL_js.cn(
35688
35688
  "h-full w-full bg-background text-foreground relative",
35689
35689
  ...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
35690
35690
  ),
@@ -36079,8 +36079,8 @@ ${url}`)
36079
36079
  // Nothing previously provided it, so every one of those consumers was
36080
36080
  // silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
36081
36081
  // the user changed in the Options dialog.
36082
- /* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerRegionBaseContext.Provider, { value: regionBase, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunkQJ4X7Y7S_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
36083
- chunkQJ4X7Y7S_js.CollaborationProvider,
36082
+ /* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerRegionBaseContext.Provider, { value: regionBase, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
36083
+ chunkGLWV52C6_js.CollaborationProvider,
36084
36084
  {
36085
36085
  config: collaboration,
36086
36086
  canvasWidth: canvasSize.width,
@@ -36129,7 +36129,7 @@ ${url}`)
36129
36129
  slideCount: slides.length
36130
36130
  }
36131
36131
  ),
36132
- /* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunkQJ4X7Y7S_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
36132
+ /* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
36133
36133
  ]
36134
36134
  }
36135
36135
  ) }) }) }) }) }) }) })
@@ -36138,7 +36138,7 @@ ${url}`)
36138
36138
  );
36139
36139
  PowerPointViewer.displayName = "PowerPointViewer";
36140
36140
  function CollaborationStatusStrip() {
36141
- const collab = chunkQJ4X7Y7S_js.useCollaboration();
36141
+ const collab = chunkGLWV52C6_js.useCollaboration();
36142
36142
  if (!collab) {
36143
36143
  return null;
36144
36144
  }
@@ -36162,8 +36162,8 @@ function CollaborationDocumentSync({
36162
36162
  deckSaveState,
36163
36163
  onReadOnlyChange
36164
36164
  }) {
36165
- const collab = chunkQJ4X7Y7S_js.useCollaboration();
36166
- chunkQJ4X7Y7S_js.useCollaborationDocumentSync({
36165
+ const collab = chunkGLWV52C6_js.useCollaboration();
36166
+ chunkGLWV52C6_js.useCollaborationDocumentSync({
36167
36167
  collaboration: collab,
36168
36168
  slides,
36169
36169
  templateElementsBySlideId,
@@ -36182,14 +36182,14 @@ function CollaborationFollowLayer({
36182
36182
  setActiveSlideIndex,
36183
36183
  slideCount
36184
36184
  }) {
36185
- const collab = chunkQJ4X7Y7S_js.useCollaboration();
36186
- const { followedClientId, followUser } = chunkQJ4X7Y7S_js.useFollowMode({
36185
+ const collab = chunkGLWV52C6_js.useCollaboration();
36186
+ const { followedClientId, followUser } = chunkGLWV52C6_js.useFollowMode({
36187
36187
  collab,
36188
36188
  activeSlideIndex,
36189
36189
  setActiveSlideIndex,
36190
36190
  slideCount
36191
36191
  });
36192
- chunkQJ4X7Y7S_js.useBroadcastFollower({
36192
+ chunkGLWV52C6_js.useBroadcastFollower({
36193
36193
  collab,
36194
36194
  activeSlideIndex,
36195
36195
  setActiveSlideIndex,