pptx-react-viewer 4.29.0 → 4.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +37 -36
  3. package/dist/{AiChatPanel-6EIOUV7J.mjs → AiChatPanel-42FL4CPM.mjs} +1 -1
  4. package/dist/AiChatPanel-42FL4CPM.mjs.br +0 -0
  5. package/dist/AiChatPanel-42FL4CPM.mjs.gz +0 -0
  6. package/dist/{AiChatPanel-AK6X4NJD.js → AiChatPanel-6VWCT6NE.js} +9 -9
  7. package/dist/AiChatPanel-6VWCT6NE.js.br +0 -0
  8. package/dist/AiChatPanel-6VWCT6NE.js.gz +0 -0
  9. package/dist/{chunk-6YOFWVII.mjs → chunk-GXMGJ5A3.mjs} +7 -12
  10. package/dist/chunk-GXMGJ5A3.mjs.br +0 -0
  11. package/dist/chunk-GXMGJ5A3.mjs.gz +0 -0
  12. package/dist/{chunk-EW45F35P.mjs → chunk-KRXS36RB.mjs} +5 -11
  13. package/dist/chunk-KRXS36RB.mjs.br +0 -0
  14. package/dist/chunk-KRXS36RB.mjs.gz +0 -0
  15. package/dist/{chunk-K3EGXT6W.js → chunk-MFGD7XVJ.js} +248 -254
  16. package/dist/chunk-MFGD7XVJ.js.br +0 -0
  17. package/dist/chunk-MFGD7XVJ.js.gz +0 -0
  18. package/dist/{chunk-CTL42ZRR.js → chunk-RHNJ4IU2.js} +31 -40
  19. package/dist/chunk-RHNJ4IU2.js.br +0 -0
  20. package/dist/chunk-RHNJ4IU2.js.gz +0 -0
  21. package/dist/{chunk-7JMO6R6B.js → chunk-XKV2QDAO.js} +387 -392
  22. package/dist/chunk-XKV2QDAO.js.br +0 -0
  23. package/dist/chunk-XKV2QDAO.js.gz +0 -0
  24. package/dist/{chunk-VI575UU6.mjs → chunk-ZIBAN7RL.mjs} +32 -41
  25. package/dist/chunk-ZIBAN7RL.mjs.br +0 -0
  26. package/dist/chunk-ZIBAN7RL.mjs.gz +0 -0
  27. package/dist/index.d.ts +5 -0
  28. package/dist/index.js +24 -24
  29. package/dist/index.js.br +0 -0
  30. package/dist/index.js.gz +0 -0
  31. package/dist/index.mjs +3 -3
  32. package/dist/index.mjs.br +0 -0
  33. package/dist/index.mjs.gz +0 -0
  34. package/dist/internals.js +81 -81
  35. package/dist/internals.js.br +0 -0
  36. package/dist/internals.js.gz +0 -0
  37. package/dist/internals.mjs +2 -2
  38. package/dist/internals.mjs.br +0 -0
  39. package/dist/internals.mjs.gz +0 -0
  40. package/dist/viewer/index.d.ts +5 -0
  41. package/dist/viewer/index.js +19 -19
  42. package/dist/viewer/index.js.br +0 -0
  43. package/dist/viewer/index.js.gz +0 -0
  44. package/dist/viewer/index.mjs +3 -3
  45. package/dist/viewer/index.mjs.br +0 -0
  46. package/dist/viewer/index.mjs.gz +0 -0
  47. package/package.json +3 -3
  48. package/dist/AiChatPanel-6EIOUV7J.mjs.br +0 -0
  49. package/dist/AiChatPanel-6EIOUV7J.mjs.gz +0 -0
  50. package/dist/AiChatPanel-AK6X4NJD.js.br +0 -0
  51. package/dist/AiChatPanel-AK6X4NJD.js.gz +0 -0
  52. package/dist/chunk-6YOFWVII.mjs.br +0 -0
  53. package/dist/chunk-6YOFWVII.mjs.gz +0 -0
  54. package/dist/chunk-7JMO6R6B.js.br +0 -0
  55. package/dist/chunk-7JMO6R6B.js.gz +0 -0
  56. package/dist/chunk-CTL42ZRR.js.br +0 -0
  57. package/dist/chunk-CTL42ZRR.js.gz +0 -0
  58. package/dist/chunk-EW45F35P.mjs.br +0 -0
  59. package/dist/chunk-EW45F35P.mjs.gz +0 -0
  60. package/dist/chunk-K3EGXT6W.js.br +0 -0
  61. package/dist/chunk-K3EGXT6W.js.gz +0 -0
  62. package/dist/chunk-VI575UU6.mjs.br +0 -0
  63. package/dist/chunk-VI575UU6.mjs.gz +0 -0
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkK3EGXT6W_js = require('./chunk-K3EGXT6W.js');
4
- var chunkCTL42ZRR_js = require('./chunk-CTL42ZRR.js');
3
+ var chunkMFGD7XVJ_js = require('./chunk-MFGD7XVJ.js');
4
+ var chunkRHNJ4IU2_js = require('./chunk-RHNJ4IU2.js');
5
5
  var pptx = require('ooxml-ui/pptx');
6
6
  var React97 = 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
- chunkK3EGXT6W_js.StaticElementRenderer,
310
+ chunkMFGD7XVJ_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 } = chunkK3EGXT6W_js.useModalDismissDrag(onClose);
379
+ const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
380
380
  const [selected, setSelected] = React97.useState(null);
381
381
  const dialogRef = React97.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: chunkCTL42ZRR_js.cn(
462
+ className: chunkRHNJ4IU2_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
  ),
@@ -723,7 +723,7 @@ function WebHomeControls({
723
723
  function ShapeArrangeExtras(p) {
724
724
  const commands = useShapeFormatContext();
725
725
  const crop = commands?.crop;
726
- const { isHidden } = chunkK3EGXT6W_js.useToolbarVisibility(p.hiddenActions);
726
+ const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(p.hiddenActions);
727
727
  const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
728
728
  const controls = React97.useMemo(
729
729
  () => pptx.arrangeShapeHomeControls({
@@ -1056,7 +1056,7 @@ function TransitionsSection(p) {
1056
1056
  case "soundPreview": {
1057
1057
  const url = pptx.ribbonTransitionStockSoundUrl(transition);
1058
1058
  if (url) {
1059
- chunkK3EGXT6W_js.playAnimationSound(url);
1059
+ chunkMFGD7XVJ_js.playAnimationSound(url);
1060
1060
  }
1061
1061
  break;
1062
1062
  }
@@ -1215,7 +1215,7 @@ function AccountPage() {
1215
1215
  return void 0;
1216
1216
  });
1217
1217
  };
1218
- const version = "4.29.0" ;
1218
+ const version = "4.30.0" ;
1219
1219
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
1220
1220
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
1221
1221
  /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -1255,7 +1255,7 @@ function AccountPage() {
1255
1255
  "aria-label": color,
1256
1256
  "aria-pressed": profile.avatarColor === color,
1257
1257
  onClick: () => updateProfile({ avatarColor: color }),
1258
- className: chunkCTL42ZRR_js.cn(
1258
+ className: chunkRHNJ4IU2_js.cn(
1259
1259
  "size-7 rounded-full border-2 transition-transform",
1260
1260
  profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
1261
1261
  ),
@@ -1478,7 +1478,7 @@ function FileSection(p) {
1478
1478
  const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
1479
1479
  const [query, setQuery] = React97.useState("");
1480
1480
  const [recent, setRecent] = React97.useState([]);
1481
- const { isHidden } = chunkK3EGXT6W_js.useToolbarVisibility(p.hiddenActions);
1481
+ const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(p.hiddenActions);
1482
1482
  const exportHidden = isHidden("export");
1483
1483
  React97.useEffect(() => {
1484
1484
  void pptx.listBackstageRecentFiles(t, p.recentPresentationsCount).then(setRecent);
@@ -1708,7 +1708,7 @@ function RibbonMenu({
1708
1708
  return /* @__PURE__ */ jsxRuntime.jsx(
1709
1709
  "div",
1710
1710
  {
1711
- className: chunkCTL42ZRR_js.cn("fixed z-50", className),
1711
+ className: chunkRHNJ4IU2_js.cn("fixed z-50", className),
1712
1712
  style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
1713
1713
  children
1714
1714
  }
@@ -1734,7 +1734,7 @@ function LayoutGalleryMenu(p) {
1734
1734
  type: "button",
1735
1735
  "aria-current": isCurrent ? "true" : void 0,
1736
1736
  title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
1737
- className: chunkCTL42ZRR_js.cn(
1737
+ className: chunkRHNJ4IU2_js.cn(
1738
1738
  "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",
1739
1739
  isCurrent ? "border-primary bg-primary/10" : "border-transparent"
1740
1740
  ),
@@ -1808,7 +1808,7 @@ function LayoutArtwork({
1808
1808
  backgroundColor
1809
1809
  };
1810
1810
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
1811
- chunkK3EGXT6W_js.StaticElementRenderer,
1811
+ chunkMFGD7XVJ_js.StaticElementRenderer,
1812
1812
  {
1813
1813
  element,
1814
1814
  activeSlide: slide,
@@ -2370,7 +2370,7 @@ function CustomShowsControls({
2370
2370
  {
2371
2371
  type: "button",
2372
2372
  onClick: onToggleCurrentSlideInActiveShow,
2373
- className: chunkCTL42ZRR_js.cn(
2373
+ className: chunkRHNJ4IU2_js.cn(
2374
2374
  "px-2 py-1 rounded text-[11px] transition-colors",
2375
2375
  isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
2376
2376
  ),
@@ -2425,7 +2425,7 @@ function SlideShowOptions({
2425
2425
  }
2426
2426
  function SubtitleSettingsControl() {
2427
2427
  const { t } = reactI18next.useTranslation();
2428
- const supplied = React97.useContext(chunkK3EGXT6W_js.ViewerOptionsStoreContext);
2428
+ const supplied = React97.useContext(chunkMFGD7XVJ_js.ViewerOptionsStoreContext);
2429
2429
  const fallback = React97.useRef(null);
2430
2430
  if (!supplied) {
2431
2431
  fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
@@ -2459,7 +2459,7 @@ function SubtitleSettingsControl() {
2459
2459
  }
2460
2460
  function SlideShowSection(p) {
2461
2461
  const { t } = reactI18next.useTranslation();
2462
- const { isHidden } = chunkK3EGXT6W_js.useToolbarVisibility(p.hiddenActions);
2462
+ const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(p.hiddenActions);
2463
2463
  const [showsOpen, setShowsOpen] = React97.useState(false);
2464
2464
  const showsRef = React97.useRef(null);
2465
2465
  React97.useEffect(() => {
@@ -2540,7 +2540,7 @@ function extractFontInfo(element, themeFonts) {
2540
2540
  fontFamily: pptx.resolveDefaultFontFamily(placeholderType, themeFonts),
2541
2541
  fontSize: "24"
2542
2542
  };
2543
- if (!element || !(0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(element)) {
2543
+ if (!element || !(0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element)) {
2544
2544
  return defaults;
2545
2545
  }
2546
2546
  const segStyle = element.textSegments?.[0]?.style;
@@ -2561,7 +2561,7 @@ function getEffectiveTextStyle(element, tableEditorState) {
2561
2561
  if (!element) {
2562
2562
  return void 0;
2563
2563
  }
2564
- if ((0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(element)) {
2564
+ if ((0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element)) {
2565
2565
  return element.textStyle;
2566
2566
  }
2567
2567
  if (element.type === "table" && tableEditorState && element.tableData) {
@@ -2574,7 +2574,7 @@ function isTextDecorationFlag(id) {
2574
2574
  return pptx.TEXT_DECORATION_FLAGS.includes(id);
2575
2575
  }
2576
2576
  function textSectionFlags(element, tableEditorState, readSelection) {
2577
- if (element && (0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(element)) {
2577
+ if (element && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element)) {
2578
2578
  const result = readSelection ? pptx.getInlineEditorSelectionResult(element.textSegments) : null;
2579
2579
  const current = result?.kind === "supported" && (!result.snapshot || result.snapshot.elementId === element.id) ? result : null;
2580
2580
  return pptx.getSelectionTextStyleFlags(
@@ -2590,7 +2590,7 @@ function textSectionFlags(element, tableEditorState, readSelection) {
2590
2590
  );
2591
2591
  }
2592
2592
  function textSectionBulletKind(element, tableEditorState) {
2593
- if (element && (0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(element)) {
2593
+ if (element && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element)) {
2594
2594
  const result = pptx.getInlineEditorSelectionResult(element.textSegments, { preserveCaret: true });
2595
2595
  return result.kind === "supported" && (!result.snapshot || result.snapshot.elementId === element.id) ? pptx.selectionBulletKind(element, result.selection, result.snapshot?.textSegments) : pptx.elementBulletKind(element);
2596
2596
  }
@@ -2827,7 +2827,7 @@ function subscribe(onChange) {
2827
2827
  }
2828
2828
  function useParagraphListKind(element) {
2829
2829
  const read = React97.useCallback(() => {
2830
- if (!element || !(0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(element)) {
2830
+ if (!element || !(0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element)) {
2831
2831
  return "none";
2832
2832
  }
2833
2833
  const result = pptx.getInlineEditorSelectionResult(element.textSegments, { preserveCaret: true });
@@ -2850,7 +2850,7 @@ function TextSection(p) {
2850
2850
  const hasSel = Boolean(p.selectedElement);
2851
2851
  const canMut = hasSel && p.canEdit;
2852
2852
  const { fontFamily, fontSize } = extractFontInfo(p.selectedElement, p.themeFonts);
2853
- const isTextEl = hasSel && p.selectedElement !== null && (0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(p.selectedElement);
2853
+ const isTextEl = hasSel && p.selectedElement !== null && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(p.selectedElement);
2854
2854
  const isTable = hasSel && p.selectedElement?.type === "table";
2855
2855
  const canFormat = isTextEl || isTable;
2856
2856
  const effectiveTs = getEffectiveTextStyle(p.selectedElement, p.tableEditorState);
@@ -2860,15 +2860,15 @@ function TextSection(p) {
2860
2860
  if (!p.canEdit || !canFormat || !p.selectedElement) {
2861
2861
  return;
2862
2862
  }
2863
- if ((0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(p.selectedElement)) {
2863
+ if ((0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(p.selectedElement)) {
2864
2864
  p.onToggleBullets(kind);
2865
2865
  return;
2866
2866
  }
2867
2867
  p.onUpdateTextStyle({ listType: effectiveTs?.listType === kind ? "none" : kind });
2868
2868
  };
2869
- const currentColor = isTextEl && p.selectedElement && (0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.color ?? p.selectedElement.textStyle?.color ?? "#000000" : effectiveTs?.color ?? "#000000";
2870
- const currentColorThemeRef = isTextEl && p.selectedElement && (0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.colorRef ?? p.selectedElement.textStyle?.colorRef : void 0;
2871
- const currentHighlight = isTextEl && p.selectedElement && (0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.highlightColor ?? p.selectedElement.textStyle?.highlightColor ?? "#ffff00" : "#ffff00";
2869
+ const currentColor = isTextEl && p.selectedElement && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.color ?? p.selectedElement.textStyle?.color ?? "#000000" : effectiveTs?.color ?? "#000000";
2870
+ const currentColorThemeRef = isTextEl && p.selectedElement && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.colorRef ?? p.selectedElement.textStyle?.colorRef : void 0;
2871
+ const currentHighlight = isTextEl && p.selectedElement && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.highlightColor ?? p.selectedElement.textStyle?.highlightColor ?? "#ffff00" : "#ffff00";
2872
2872
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2873
2873
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-0.5", ...groupAttr("home.font"), children: [
2874
2874
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", "data-pptx-chrome": "font-controls", children: [
@@ -2883,7 +2883,7 @@ function TextSection(p) {
2883
2883
  customFonts: p.customFontFamilies,
2884
2884
  onFamily: (family) => p.onUpdateTextStyle({ fontFamily: family }),
2885
2885
  onSize: (size) => p.onUpdateTextStyle({
2886
- fontSize: p.selectedElement && (0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(p.selectedElement) ? pptx.textFontSizePtToPx(size) : size
2886
+ fontSize: p.selectedElement && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(p.selectedElement) ? pptx.textFontSizePtToPx(size) : size
2887
2887
  })
2888
2888
  }
2889
2889
  ),
@@ -2993,7 +2993,7 @@ function MobileSheet({
2993
2993
  }) {
2994
2994
  const sheetRef = React97.useRef(null);
2995
2995
  const { t } = reactI18next.useTranslation();
2996
- const { dragY, dragging, handlers } = chunkK3EGXT6W_js.useSheetDismissDrag(onClose);
2996
+ const { dragY, dragging, handlers } = chunkMFGD7XVJ_js.useSheetDismissDrag(onClose);
2997
2997
  useModalFocus(open, sheetRef, onClose);
2998
2998
  if (!open) {
2999
2999
  return null;
@@ -3017,7 +3017,7 @@ function MobileSheet({
3017
3017
  "aria-modal": "true",
3018
3018
  "aria-label": typeof title === "string" ? title : t("pptx.mobileSheet.ariaLabel"),
3019
3019
  tabIndex: -1,
3020
- className: chunkCTL42ZRR_js.cn(
3020
+ className: chunkRHNJ4IU2_js.cn(
3021
3021
  "relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
3022
3022
  "animate-in slide-in-from-bottom duration-200",
3023
3023
  className
@@ -3081,7 +3081,7 @@ function MobileMenuSheet(props) {
3081
3081
  const { t } = reactI18next.useTranslation();
3082
3082
  const { open, onClose } = props;
3083
3083
  const [active, setActive] = React97.useState("home");
3084
- const { isTabVisible } = chunkK3EGXT6W_js.useToolbarVisibility(props.hiddenActions);
3084
+ const { isTabVisible } = chunkMFGD7XVJ_js.useToolbarVisibility(props.hiddenActions);
3085
3085
  return /* @__PURE__ */ jsxRuntime.jsx(
3086
3086
  MobileSheet,
3087
3087
  {
@@ -3095,7 +3095,7 @@ function MobileMenuSheet(props) {
3095
3095
  {
3096
3096
  type: "button",
3097
3097
  onClick: () => setActive(active === key ? null : key),
3098
- className: chunkCTL42ZRR_js.cn(
3098
+ className: chunkRHNJ4IU2_js.cn(
3099
3099
  "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]",
3100
3100
  active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
3101
3101
  ),
@@ -3362,7 +3362,7 @@ function MobileToolbar(props) {
3362
3362
  const { t } = reactI18next.useTranslation();
3363
3363
  const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
3364
3364
  const [menuOpen, setMenuOpen] = React97.useState(false);
3365
- const { isHidden } = chunkK3EGXT6W_js.useToolbarVisibility(props.hiddenActions);
3365
+ const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(props.hiddenActions);
3366
3366
  const showEdit = mode === "edit" || mode === "master";
3367
3367
  const hidden = [];
3368
3368
  if (isHidden("undo")) {
@@ -3427,7 +3427,7 @@ function DrawingGroup(p) {
3427
3427
  const { recentColors, pushColor } = useRecentColors();
3428
3428
  const themeColors = useThemeColorMap();
3429
3429
  const commands = useRibbonGalleryCommands();
3430
- const style = p.selectedElement && (0, chunkCTL42ZRR_js.dist_exports.hasShapeProperties)(p.selectedElement) ? p.selectedElement.shapeStyle : void 0;
3430
+ const style = p.selectedElement && (0, chunkRHNJ4IU2_js.dist_exports.hasShapeProperties)(p.selectedElement) ? p.selectedElement.shapeStyle : void 0;
3431
3431
  const { onMoveLayer, onMoveLayerToEdge, onSetNewShapeType, onAddShape, onUpdateElementStyle } = p;
3432
3432
  const hasSelection = Boolean(p.selectedElement);
3433
3433
  const controls = React97.useMemo(
@@ -3530,7 +3530,7 @@ var TAB_BASE = "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap t
3530
3530
  var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
3531
3531
  function RibbonTabBar(p) {
3532
3532
  const { t } = reactI18next.useTranslation();
3533
- const viewerOptions = chunkK3EGXT6W_js.useViewerOptionsContext();
3533
+ const viewerOptions = chunkMFGD7XVJ_js.useViewerOptionsContext();
3534
3534
  return /* @__PURE__ */ jsxRuntime.jsxs(
3535
3535
  "div",
3536
3536
  {
@@ -3538,7 +3538,7 @@ function RibbonTabBar(p) {
3538
3538
  "data-pptx-chrome": "ribbon-tabs",
3539
3539
  className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
3540
3540
  children: [
3541
- chunkCTL42ZRR_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
3541
+ chunkRHNJ4IU2_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
3542
3542
  const selected = p.activeSection === s.id;
3543
3543
  return /* @__PURE__ */ jsxRuntime.jsx(
3544
3544
  "button",
@@ -3548,7 +3548,7 @@ function RibbonTabBar(p) {
3548
3548
  "aria-selected": selected,
3549
3549
  title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
3550
3550
  onClick: () => p.onSelectSection(s.id),
3551
- className: chunkCTL42ZRR_js.cn(
3551
+ className: chunkRHNJ4IU2_js.cn(
3552
3552
  TAB_BASE,
3553
3553
  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"
3554
3554
  ),
@@ -3569,7 +3569,7 @@ function RibbonTabBar(p) {
3569
3569
  ...{ [pptx.RIBBON_CONTEXTUAL_TAB_ATTR]: id },
3570
3570
  title: pptx.resolveScreenTip(viewerOptions, label),
3571
3571
  onClick: () => p.onSelectContextual(id),
3572
- className: chunkCTL42ZRR_js.cn(
3572
+ className: chunkRHNJ4IU2_js.cn(
3573
3573
  TAB_BASE,
3574
3574
  "text-primary",
3575
3575
  selected ? TAB_UNDERLINE : "hover:bg-primary/10"
@@ -3587,9 +3587,9 @@ function RibbonTabBar(p) {
3587
3587
  }
3588
3588
  function TabRowActions(p) {
3589
3589
  const { t } = reactI18next.useTranslation();
3590
- const collab = chunkK3EGXT6W_js.useCollaboration();
3590
+ const collab = chunkMFGD7XVJ_js.useCollaboration();
3591
3591
  const isCollaborating = collab && collab.status === "connected";
3592
- const { isHidden } = chunkK3EGXT6W_js.useToolbarVisibility(p.hiddenActions);
3592
+ const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(p.hiddenActions);
3593
3593
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 pr-1", children: [
3594
3594
  p.onEnterRehearsalMode && !isHidden("record") && /* @__PURE__ */ jsxRuntime.jsxs(
3595
3595
  "button",
@@ -3610,7 +3610,7 @@ function TabRowActions(p) {
3610
3610
  {
3611
3611
  type: "button",
3612
3612
  onClick: p.onOpenShareDialog,
3613
- className: chunkCTL42ZRR_js.cn(
3613
+ className: chunkRHNJ4IU2_js.cn(
3614
3614
  "relative inline-flex items-center gap-1 px-2.5 py-1 rounded-sm text-[11px] font-medium transition-colors whitespace-nowrap",
3615
3615
  isCollaborating ? "bg-green-600 hover:bg-green-500 text-white" : "bg-primary hover:bg-primary/90 text-white"
3616
3616
  ),
@@ -3626,7 +3626,7 @@ function TabRowActions(p) {
3626
3626
  }
3627
3627
  function TitleBarElement(p) {
3628
3628
  const { t } = reactI18next.useTranslation();
3629
- const options = chunkK3EGXT6W_js.useViewerOptionsContext();
3629
+ const options = chunkMFGD7XVJ_js.useViewerOptionsContext();
3630
3630
  const customization = useViewerCustomizationContext();
3631
3631
  const ref = React97.useRef(null);
3632
3632
  const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
@@ -3699,7 +3699,7 @@ function PresentDropdown({
3699
3699
  {
3700
3700
  type: "button",
3701
3701
  onClick: onPresent,
3702
- className: chunkCTL42ZRR_js.cn(
3702
+ className: chunkRHNJ4IU2_js.cn(
3703
3703
  "px-2 py-1 transition-colors",
3704
3704
  isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
3705
3705
  ),
@@ -3712,7 +3712,7 @@ function PresentDropdown({
3712
3712
  {
3713
3713
  type: "button",
3714
3714
  onClick: () => setOpen((prev) => !prev),
3715
- className: chunkCTL42ZRR_js.cn(
3715
+ className: chunkRHNJ4IU2_js.cn(
3716
3716
  "inline-flex items-center px-1 transition-colors border-l border-border",
3717
3717
  open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
3718
3718
  ),
@@ -3915,7 +3915,7 @@ function OverflowMenu(p) {
3915
3915
  {
3916
3916
  type: "button",
3917
3917
  onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
3918
- className: chunkCTL42ZRR_js.cn(
3918
+ className: chunkRHNJ4IU2_js.cn(
3919
3919
  "p-1.5 rounded transition-colors",
3920
3920
  p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
3921
3921
  ),
@@ -3962,7 +3962,7 @@ function ToolbarPrimaryRow(p) {
3962
3962
  onToggleSidebar,
3963
3963
  onToggleInspector
3964
3964
  } = p;
3965
- const collab = chunkK3EGXT6W_js.useCollaboration();
3965
+ const collab = chunkMFGD7XVJ_js.useCollaboration();
3966
3966
  const customization = useViewerCustomizationContext();
3967
3967
  const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
3968
3968
  const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
@@ -3981,7 +3981,7 @@ function ToolbarPrimaryRow(p) {
3981
3981
  {
3982
3982
  type: "button",
3983
3983
  onClick: onToggleSidebar,
3984
- className: chunkCTL42ZRR_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
3984
+ className: chunkRHNJ4IU2_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
3985
3985
  title: t("pptx.toolbar.toggleSlidesPanel"),
3986
3986
  "aria-label": t("pptx.toolbar.toggleSlidesPanel"),
3987
3987
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
@@ -3993,7 +3993,7 @@ function ToolbarPrimaryRow(p) {
3993
3993
  {
3994
3994
  type: "button",
3995
3995
  onClick: p.onToggleComments,
3996
- className: chunkCTL42ZRR_js.cn(
3996
+ className: chunkRHNJ4IU2_js.cn(
3997
3997
  qab,
3998
3998
  "relative max-md:hidden",
3999
3999
  p.isCommentsPanelOpen ? "text-foreground" : "text-muted-foreground"
@@ -4060,7 +4060,7 @@ function ToolbarPrimaryRow(p) {
4060
4060
  {
4061
4061
  type: "button",
4062
4062
  onClick: onToggleInspector,
4063
- className: chunkCTL42ZRR_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
4063
+ className: chunkRHNJ4IU2_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
4064
4064
  title: t("pptx.toolbar.toggleInspector"),
4065
4065
  "aria-label": t("pptx.toolbar.toggleInspector"),
4066
4066
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
@@ -4071,7 +4071,7 @@ function ToolbarPrimaryRow(p) {
4071
4071
  {
4072
4072
  type: "button",
4073
4073
  onClick: p.onToggleAiPanel,
4074
- className: chunkCTL42ZRR_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
4074
+ className: chunkRHNJ4IU2_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
4075
4075
  title: t("pptx.toolbar.toggleAiAssistant"),
4076
4076
  "aria-label": t("pptx.toolbar.toggleAiAssistant"),
4077
4077
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
@@ -4082,7 +4082,7 @@ function ToolbarPrimaryRow(p) {
4082
4082
  {
4083
4083
  type: "button",
4084
4084
  onClick: p.onOpenSettings ?? p.onToggleShortcuts,
4085
- className: chunkCTL42ZRR_js.cn(qab, "text-muted-foreground"),
4085
+ className: chunkRHNJ4IU2_js.cn(qab, "text-muted-foreground"),
4086
4086
  title: t("pptx.toolbar.settingsShortcuts"),
4087
4087
  "aria-label": t("pptx.toolbar.settings"),
4088
4088
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
@@ -4279,8 +4279,8 @@ function ToolbarLateTabs({
4279
4279
  function Toolbar(p) {
4280
4280
  const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
4281
4281
  const { t } = reactI18next.useTranslation();
4282
- const { isTabVisible } = chunkK3EGXT6W_js.useToolbarVisibility(p.hiddenActions);
4283
- const viewerOptions = chunkK3EGXT6W_js.useViewerOptionsContext();
4282
+ const { isTabVisible } = chunkMFGD7XVJ_js.useToolbarVisibility(p.hiddenActions);
4283
+ const viewerOptions = chunkMFGD7XVJ_js.useViewerOptionsContext();
4284
4284
  const customization = useViewerCustomizationContext();
4285
4285
  const belowInput = React97.useMemo(
4286
4286
  () => ({
@@ -4362,7 +4362,7 @@ function Toolbar(p) {
4362
4362
  {
4363
4363
  type: "button",
4364
4364
  onClick: p.onToggleCompactToolbar,
4365
- className: chunkCTL42ZRR_js.cn(
4365
+ className: chunkRHNJ4IU2_js.cn(
4366
4366
  "px-2 py-1 rounded text-[11px] transition-colors mr-1",
4367
4367
  isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
4368
4368
  ),
@@ -4388,7 +4388,7 @@ function Toolbar(p) {
4388
4388
  {
4389
4389
  ref: attachOverflow,
4390
4390
  "data-pptx-chrome": "ribbon-content",
4391
- className: chunkCTL42ZRR_js.cn(
4391
+ className: chunkRHNJ4IU2_js.cn(
4392
4392
  // Plain controls stay compact; labelled RibbonGroups opt into stretching.
4393
4393
  // `RibbonGroupScope` wraps controls in a `display: contents` div, so its
4394
4394
  // children are this row's flex items too and must not shrink (a shrunk
@@ -5241,7 +5241,7 @@ function DrawingOverlaySvg({
5241
5241
  onPointerDown,
5242
5242
  onPointerMove,
5243
5243
  onPointerUp,
5244
- children: isStrokeActive && liveStrokeView ? chunkK3EGXT6W_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
5244
+ children: isStrokeActive && liveStrokeView ? chunkMFGD7XVJ_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
5245
5245
  "path",
5246
5246
  {
5247
5247
  d: liveStrokeD,
@@ -5256,7 +5256,7 @@ function DrawingOverlaySvg({
5256
5256
  }
5257
5257
  );
5258
5258
  }
5259
- function GridOverlay({ canvasSize, gridSpacingPx = chunkCTL42ZRR_js.GRID_SIZE, visible }) {
5259
+ function GridOverlay({ canvasSize, gridSpacingPx = chunkRHNJ4IU2_js.GRID_SIZE, visible }) {
5260
5260
  const spacing = Math.max(gridSpacingPx, 2);
5261
5261
  const patternId = React97.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
5262
5262
  if (!visible) {
@@ -5820,7 +5820,7 @@ function PictureCropOverlay({
5820
5820
  };
5821
5821
  };
5822
5822
  const { ghost, frame, handles } = overlay;
5823
- const src = chunkK3EGXT6W_js.imgSrc(element);
5823
+ const src = chunkMFGD7XVJ_js.imgSrc(element);
5824
5824
  return /* @__PURE__ */ jsxRuntime.jsxs(
5825
5825
  "div",
5826
5826
  {
@@ -6233,10 +6233,10 @@ function SelectionHandleOverlay({
6233
6233
  position: "absolute",
6234
6234
  left: element.x,
6235
6235
  top: element.y,
6236
- width: Math.max(element.width, chunkCTL42ZRR_js.MIN_ELEMENT_SIZE),
6237
- height: Math.max(element.height, chunkCTL42ZRR_js.MIN_ELEMENT_SIZE),
6238
- ["--pptx-selection-width"]: `${Math.max(element.width, chunkCTL42ZRR_js.MIN_ELEMENT_SIZE)}px`,
6239
- ["--pptx-selection-height"]: `${Math.max(element.height, chunkCTL42ZRR_js.MIN_ELEMENT_SIZE)}px`,
6236
+ width: Math.max(element.width, chunkRHNJ4IU2_js.MIN_ELEMENT_SIZE),
6237
+ height: Math.max(element.height, chunkRHNJ4IU2_js.MIN_ELEMENT_SIZE),
6238
+ ["--pptx-selection-width"]: `${Math.max(element.width, chunkRHNJ4IU2_js.MIN_ELEMENT_SIZE)}px`,
6239
+ ["--pptx-selection-height"]: `${Math.max(element.height, chunkRHNJ4IU2_js.MIN_ELEMENT_SIZE)}px`,
6240
6240
  // Every slide element carries an explicit numeric `zIndex` (see
6241
6241
  // `getContainerStyle`), so a sibling with no z-index at all paints
6242
6242
  // at the CSS "z-index: 0" level regardless of DOM order: any
@@ -6248,7 +6248,7 @@ function SelectionHandleOverlay({
6248
6248
  // (marquee z-50, connector overlay z-55/56) to match, well clear of
6249
6249
  // any realistic per-slide element count.
6250
6250
  zIndex: 58,
6251
- transform: chunkCTL42ZRR_js.getElementTransform(element),
6251
+ transform: chunkRHNJ4IU2_js.getElementTransform(element),
6252
6252
  transformOrigin: "center",
6253
6253
  // Transparent everywhere a handle button is not, so a click that
6254
6254
  // misses every handle still reaches the shape (or whatever is
@@ -6260,14 +6260,14 @@ function SelectionHandleOverlay({
6260
6260
  onDoubleClick: (e) => onDoubleClick(element.id, e),
6261
6261
  onContextMenu: (e) => onContextMenu(element.id, e),
6262
6262
  children: /* @__PURE__ */ jsxRuntime.jsx(
6263
- chunkK3EGXT6W_js.ResizeHandles,
6263
+ chunkMFGD7XVJ_js.ResizeHandles,
6264
6264
  {
6265
6265
  elementId: element.id,
6266
6266
  adjustmentHandles,
6267
6267
  onResizePointerDown,
6268
6268
  onAdjustmentPointerDown,
6269
6269
  rotation: element.rotation,
6270
- nonRotationTransform: chunkCTL42ZRR_js.getElementTransformWithoutRotation(element),
6270
+ nonRotationTransform: chunkRHNJ4IU2_js.getElementTransformWithoutRotation(element),
6271
6271
  onRotate: allow.rotatable ? onRotate : void 0,
6272
6272
  forcePointerEvents: true
6273
6273
  }
@@ -6970,7 +6970,7 @@ function SlideCanvas(props) {
6970
6970
  props.registerInlineEditReader
6971
6971
  ]
6972
6972
  );
6973
- return /* @__PURE__ */ jsxRuntime.jsx(chunkK3EGXT6W_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
6973
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
6974
6974
  }
6975
6975
  function SlideCanvasContent({
6976
6976
  imagePaste,
@@ -7237,7 +7237,7 @@ function SlideCanvasContent({
7237
7237
  onPointerMove: handleStagePointerMove,
7238
7238
  onPointerUp: handleStagePointerUp,
7239
7239
  children: [
7240
- /* @__PURE__ */ jsxRuntime.jsx(chunkK3EGXT6W_js.SlideBackgroundImageLayer, { slide: activeSlide }),
7240
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.SlideBackgroundImageLayer, { slide: activeSlide }),
7241
7241
  presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
7242
7242
  /* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
7243
7243
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -7249,7 +7249,7 @@ function SlideCanvasContent({
7249
7249
  }
7250
7250
  ),
7251
7251
  templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
7252
- chunkK3EGXT6W_js.ElementRenderer,
7252
+ chunkMFGD7XVJ_js.ElementRenderer,
7253
7253
  {
7254
7254
  element,
7255
7255
  activeSlide,
@@ -7271,7 +7271,7 @@ function SlideCanvasContent({
7271
7271
  ),
7272
7272
  renderInk: false,
7273
7273
  renderGroups: true,
7274
- adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkCTL42ZRR_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
7274
+ adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkRHNJ4IU2_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
7275
7275
  onResizePointerDown: stableResizePointerDown,
7276
7276
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
7277
7277
  onRotate: stableRotate,
@@ -7293,7 +7293,7 @@ function SlideCanvasContent({
7293
7293
  `tpl-${element.id}`
7294
7294
  )),
7295
7295
  activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
7296
- chunkK3EGXT6W_js.ElementRenderer,
7296
+ chunkMFGD7XVJ_js.ElementRenderer,
7297
7297
  {
7298
7298
  element,
7299
7299
  activeSlide,
@@ -7315,7 +7315,7 @@ function SlideCanvasContent({
7315
7315
  ),
7316
7316
  renderInk: true,
7317
7317
  renderGroups: true,
7318
- adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkCTL42ZRR_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
7318
+ adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkRHNJ4IU2_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
7319
7319
  onResizePointerDown: stableResizePointerDown,
7320
7320
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
7321
7321
  onRotate: stableRotate,
@@ -7359,7 +7359,7 @@ function SlideCanvasContent({
7359
7359
  editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7360
7360
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
7361
7361
  /* @__PURE__ */ jsxRuntime.jsx(
7362
- chunkK3EGXT6W_js.ElementRenderer,
7362
+ chunkMFGD7XVJ_js.ElementRenderer,
7363
7363
  {
7364
7364
  element: editingMember.member,
7365
7365
  activeSlide,
@@ -7394,11 +7394,11 @@ function SlideCanvasContent({
7394
7394
  `group-member-edit-${editingMember.member.id}`
7395
7395
  )
7396
7396
  ] }),
7397
- selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunkCTL42ZRR_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
7397
+ selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunkRHNJ4IU2_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
7398
7398
  SelectionHandleOverlay,
7399
7399
  {
7400
7400
  element: selectedElement,
7401
- adjustmentHandles: chunkCTL42ZRR_js.getShapeAdjustmentHandleDescriptors(selectedElement),
7401
+ adjustmentHandles: chunkRHNJ4IU2_js.getShapeAdjustmentHandleDescriptors(selectedElement),
7402
7402
  onResizePointerDown: stableResizePointerDown,
7403
7403
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
7404
7404
  onRotate: stableRotate,
@@ -7512,7 +7512,7 @@ function LoadingState({ className }) {
7512
7512
  role: "status",
7513
7513
  "aria-live": "polite",
7514
7514
  "aria-atomic": "true",
7515
- className: chunkCTL42ZRR_js.cn(
7515
+ className: chunkRHNJ4IU2_js.cn(
7516
7516
  "h-full w-full flex items-center justify-center text-muted-foreground",
7517
7517
  className
7518
7518
  ),
@@ -7535,7 +7535,7 @@ function ErrorState({ className, error }) {
7535
7535
  {
7536
7536
  role: "alert",
7537
7537
  "aria-live": "assertive",
7538
- className: chunkCTL42ZRR_js.cn(
7538
+ className: chunkRHNJ4IU2_js.cn(
7539
7539
  "h-full w-full flex items-center justify-center p-6 text-center text-red-400",
7540
7540
  className
7541
7541
  ),
@@ -7566,7 +7566,7 @@ function ShortcutPanel({ isOpen, onClose }) {
7566
7566
  }
7567
7567
  )
7568
7568
  ] }),
7569
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkCTL42ZRR_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
7569
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkRHNJ4IU2_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
7570
7570
  "div",
7571
7571
  {
7572
7572
  className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
@@ -7626,14 +7626,14 @@ function AccessibilityPanel({
7626
7626
  "aria-label": t("pptx.accessibility.reduceMotion"),
7627
7627
  "aria-checked": reducedMotion ?? false,
7628
7628
  onClick: onToggleReducedMotion,
7629
- className: chunkCTL42ZRR_js.cn(
7629
+ className: chunkRHNJ4IU2_js.cn(
7630
7630
  "relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
7631
7631
  reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
7632
7632
  ),
7633
7633
  children: /* @__PURE__ */ jsxRuntime.jsx(
7634
7634
  "span",
7635
7635
  {
7636
- className: chunkCTL42ZRR_js.cn(
7636
+ className: chunkRHNJ4IU2_js.cn(
7637
7637
  "inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
7638
7638
  reducedMotion ? "translate-x-4" : "translate-x-0.5"
7639
7639
  )
@@ -7652,7 +7652,7 @@ function AccessibilityPanel({
7652
7652
  "div",
7653
7653
  {
7654
7654
  role: "listitem",
7655
- className: chunkCTL42ZRR_js.cn(
7655
+ className: chunkRHNJ4IU2_js.cn(
7656
7656
  "flex items-start gap-2 rounded px-2 py-1.5 text-xs",
7657
7657
  /* Severity-based background and text colouring */
7658
7658
  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"
@@ -7812,7 +7812,7 @@ function ResizeHandle({
7812
7812
  {
7813
7813
  role: "separator",
7814
7814
  "aria-orientation": direction,
7815
- className: chunkCTL42ZRR_js.cn(
7815
+ className: chunkRHNJ4IU2_js.cn(
7816
7816
  // Outer container: generous hit area for easy clicking.
7817
7817
  // The visible indicator is rendered via the inner pseudo-element (::after).
7818
7818
  "relative flex-shrink-0 z-20 group",
@@ -7823,7 +7823,7 @@ function ResizeHandle({
7823
7823
  children: /* @__PURE__ */ jsxRuntime.jsx(
7824
7824
  "div",
7825
7825
  {
7826
- className: chunkCTL42ZRR_js.cn(
7826
+ className: chunkRHNJ4IU2_js.cn(
7827
7827
  "absolute transition-colors",
7828
7828
  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"
7829
7829
  )
@@ -7842,14 +7842,14 @@ function SlideThumbnailImpl({
7842
7842
  }) {
7843
7843
  const safeCanvasWidth = Math.max(canvasSize.width, 1);
7844
7844
  const safeCanvasHeight = Math.max(canvasSize.height, 1);
7845
- const width = previewWidth ?? chunkCTL42ZRR_js.SLIDE_NAV_THUMBNAIL_WIDTH;
7845
+ const width = previewWidth ?? chunkRHNJ4IU2_js.SLIDE_NAV_THUMBNAIL_WIDTH;
7846
7846
  const scale = width / safeCanvasWidth;
7847
7847
  const previewHeight = pptx.editorThumbnailHeight(safeCanvasWidth, safeCanvasHeight, width);
7848
7848
  const previewElements = pptx.buildPreviewElements(slide, templateElements);
7849
7849
  const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
7850
7850
  const { t } = reactI18next.useTranslation();
7851
7851
  const transitionLabel = slide.transition ? (() => {
7852
- const opt = chunkCTL42ZRR_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
7852
+ const opt = chunkRHNJ4IU2_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
7853
7853
  return opt ? t(opt.i18nKey) : slide.transition.type;
7854
7854
  })() : void 0;
7855
7855
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -7874,7 +7874,7 @@ function SlideThumbnailImpl({
7874
7874
  transformOrigin: "top left"
7875
7875
  },
7876
7876
  children: [
7877
- /* @__PURE__ */ jsxRuntime.jsx(chunkK3EGXT6W_js.SlideBackgroundImageLayer, { slide }),
7877
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.SlideBackgroundImageLayer, { slide }),
7878
7878
  slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsxRuntime.jsx(
7879
7879
  "div",
7880
7880
  {
@@ -7884,7 +7884,7 @@ function SlideThumbnailImpl({
7884
7884
  }
7885
7885
  ),
7886
7886
  previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
7887
- chunkK3EGXT6W_js.StaticElementRenderer,
7887
+ chunkMFGD7XVJ_js.StaticElementRenderer,
7888
7888
  {
7889
7889
  element,
7890
7890
  activeSlide: slide,
@@ -8440,7 +8440,7 @@ function SectionHeader({
8440
8440
  /* @__PURE__ */ jsxRuntime.jsx(
8441
8441
  lu.LuChevronDown,
8442
8442
  {
8443
- className: chunkCTL42ZRR_js.cn(
8443
+ className: chunkRHNJ4IU2_js.cn(
8444
8444
  "h-3 w-3 flex-shrink-0 transition-transform",
8445
8445
  isCollapsed ? "-rotate-90" : "rotate-0"
8446
8446
  )
@@ -8591,7 +8591,7 @@ function LazyThumbnailInner({
8591
8591
  }
8592
8592
  var LazyThumbnail = React97__default.default.memo(LazyThumbnailInner);
8593
8593
  function declaredSectionFacts(groups, sectionId) {
8594
- const declared = groups.filter((group) => group.id !== chunkCTL42ZRR_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunkCTL42ZRR_js.UNGROUPED_SECTION_ID).map((group) => group.id);
8594
+ const declared = groups.filter((group) => group.id !== chunkRHNJ4IU2_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunkRHNJ4IU2_js.UNGROUPED_SECTION_ID).map((group) => group.id);
8595
8595
  return {
8596
8596
  isDeclared: declared.includes(sectionId),
8597
8597
  index: declared.indexOf(sectionId),
@@ -8676,7 +8676,7 @@ function SlideItemInner({
8676
8676
  "data-pptx-chrome": "slide-row",
8677
8677
  "aria-describedby": cue.labelId,
8678
8678
  "data-pptx-slide-hidden": cue.marker,
8679
- className: chunkCTL42ZRR_js.cn(
8679
+ className: chunkRHNJ4IU2_js.cn(
8680
8680
  "group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
8681
8681
  isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
8682
8682
  isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
@@ -8698,7 +8698,7 @@ function SlideItemInner({
8698
8698
  /* @__PURE__ */ jsxRuntime.jsx(
8699
8699
  "span",
8700
8700
  {
8701
- className: chunkCTL42ZRR_js.cn(
8701
+ className: chunkRHNJ4IU2_js.cn(
8702
8702
  "text-[10px] tabular-nums text-right select-none w-full",
8703
8703
  isActive ? "text-primary font-medium" : "text-muted-foreground"
8704
8704
  ),
@@ -8721,7 +8721,7 @@ function SlideItemInner({
8721
8721
  /* @__PURE__ */ jsxRuntime.jsxs(
8722
8722
  "div",
8723
8723
  {
8724
- className: chunkCTL42ZRR_js.cn(
8724
+ className: chunkRHNJ4IU2_js.cn(
8725
8725
  "relative shrink-0 overflow-hidden border transition-colors bg-white",
8726
8726
  isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
8727
8727
  ),
@@ -8920,7 +8920,7 @@ function SlidesPaneSidebar({
8920
8920
  tableStyleContext
8921
8921
  }) {
8922
8922
  const { t } = reactI18next.useTranslation();
8923
- const collab = chunkK3EGXT6W_js.useCollaboration();
8923
+ const collab = chunkMFGD7XVJ_js.useCollaboration();
8924
8924
  const slideRefs = React97.useRef(/* @__PURE__ */ new Map());
8925
8925
  const renameInputRef = React97.useRef(null);
8926
8926
  const slidePresenceMap = React97.useMemo(() => {
@@ -8945,7 +8945,7 @@ function SlidesPaneSidebar({
8945
8945
  () => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
8946
8946
  [canvasSize.width, canvasSize.height, previewWidth]
8947
8947
  );
8948
- const showSectionHeaders = sectionGroups.some((group) => group.id !== chunkCTL42ZRR_js.DEFAULT_SECTION_GROUP_ID);
8948
+ const showSectionHeaders = sectionGroups.some((group) => group.id !== chunkRHNJ4IU2_js.DEFAULT_SECTION_GROUP_ID);
8949
8949
  const {
8950
8950
  collapsedSections,
8951
8951
  renamingSectionId,
@@ -9015,7 +9015,7 @@ function SlidesPaneSidebar({
9015
9015
  [sectionGroups, showSectionHeaders, effectiveCollapsed]
9016
9016
  );
9017
9017
  const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
9018
- const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkK3EGXT6W_js.useVirtualizedSlides({
9018
+ const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkMFGD7XVJ_js.useVirtualizedSlides({
9019
9019
  totalItems: shouldVirtualize ? flatItems.length : 0,
9020
9020
  itemHeight: estimatedItemHeight
9021
9021
  });
@@ -9272,7 +9272,7 @@ function HandoutMasterPanel({
9272
9272
  {
9273
9273
  type: "button",
9274
9274
  "aria-pressed": slidesPerPage === count,
9275
- className: chunkCTL42ZRR_js.cn(
9275
+ className: chunkRHNJ4IU2_js.cn(
9276
9276
  "px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
9277
9277
  slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
9278
9278
  ),
@@ -9390,7 +9390,7 @@ function SlideMastersList({
9390
9390
  ref: isMasterActive ? activeRef : void 0,
9391
9391
  "aria-pressed": isMasterActive,
9392
9392
  "aria-label": master.name || t("pptx.master.master"),
9393
- className: chunkCTL42ZRR_js.cn(
9393
+ className: chunkRHNJ4IU2_js.cn(
9394
9394
  "group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
9395
9395
  isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
9396
9396
  ),
@@ -9407,7 +9407,7 @@ function SlideMastersList({
9407
9407
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
9408
9408
  "span",
9409
9409
  {
9410
- className: chunkCTL42ZRR_js.cn(
9410
+ className: chunkRHNJ4IU2_js.cn(
9411
9411
  "text-[10px] font-medium",
9412
9412
  isMasterActive ? "text-amber-400" : "text-muted-foreground"
9413
9413
  ),
@@ -9426,7 +9426,7 @@ function SlideMastersList({
9426
9426
  ref: isLayoutActive ? activeRef : void 0,
9427
9427
  "aria-pressed": isLayoutActive,
9428
9428
  "aria-label": layout.name || t("pptx.master.layout"),
9429
- className: chunkCTL42ZRR_js.cn(
9429
+ className: chunkRHNJ4IU2_js.cn(
9430
9430
  "group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
9431
9431
  isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
9432
9432
  ),
@@ -9443,7 +9443,7 @@ function SlideMastersList({
9443
9443
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
9444
9444
  "span",
9445
9445
  {
9446
- className: chunkCTL42ZRR_js.cn(
9446
+ className: chunkRHNJ4IU2_js.cn(
9447
9447
  "text-[9px]",
9448
9448
  isLayoutActive ? "text-primary" : "text-muted-foreground"
9449
9449
  ),
@@ -9535,7 +9535,7 @@ function MasterViewSidebar({
9535
9535
  type: "button",
9536
9536
  role: "tab",
9537
9537
  "aria-selected": masterViewTab === tab.key,
9538
- className: chunkCTL42ZRR_js.cn(
9538
+ className: chunkRHNJ4IU2_js.cn(
9539
9539
  "flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
9540
9540
  masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
9541
9541
  ),
@@ -10038,7 +10038,7 @@ function SectionBlock({
10038
10038
  /* @__PURE__ */ jsxRuntime.jsx(
10039
10039
  lu.LuChevronDown,
10040
10040
  {
10041
- className: chunkCTL42ZRR_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
10041
+ className: chunkRHNJ4IU2_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
10042
10042
  }
10043
10043
  ),
10044
10044
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
@@ -10087,7 +10087,7 @@ function SlideCardImpl({
10087
10087
  return /* @__PURE__ */ jsxRuntime.jsxs(
10088
10088
  "div",
10089
10089
  {
10090
- className: chunkCTL42ZRR_js.cn(
10090
+ className: chunkRHNJ4IU2_js.cn(
10091
10091
  "group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
10092
10092
  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",
10093
10093
  slide.hidden && "opacity-40"
@@ -10110,7 +10110,7 @@ function SlideCardImpl({
10110
10110
  /* @__PURE__ */ jsxRuntime.jsx(
10111
10111
  "span",
10112
10112
  {
10113
- className: chunkCTL42ZRR_js.cn(
10113
+ className: chunkRHNJ4IU2_js.cn(
10114
10114
  "text-[11px] font-medium px-0.5",
10115
10115
  isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
10116
10116
  ),
@@ -10852,7 +10852,7 @@ function ReadingViewStage({
10852
10852
  "div",
10853
10853
  {
10854
10854
  className: "absolute inset-0",
10855
- style: { backgroundColor: chunkCTL42ZRR_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
10855
+ style: { backgroundColor: chunkRHNJ4IU2_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
10856
10856
  }
10857
10857
  ),
10858
10858
  slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
@@ -10871,7 +10871,7 @@ function ReadingViewStage({
10871
10871
  className: "absolute left-0 top-0 origin-top-left",
10872
10872
  style: { width, height, transform: `scale(${scale})` },
10873
10873
  children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
10874
- chunkK3EGXT6W_js.StaticElementRenderer,
10874
+ chunkMFGD7XVJ_js.StaticElementRenderer,
10875
10875
  {
10876
10876
  element,
10877
10877
  activeSlide: slide,
@@ -11083,7 +11083,7 @@ function renderRichNotesSegments(segments) {
11083
11083
  if (segment.style.fontFamily) {
11084
11084
  style.fontFamily = segment.style.fontFamily;
11085
11085
  }
11086
- if (segment.style.hyperlink && chunkCTL42ZRR_js.isUrlSafe(segment.style.hyperlink)) {
11086
+ if (segment.style.hyperlink && chunkRHNJ4IU2_js.isUrlSafe(segment.style.hyperlink)) {
11087
11087
  const safeHref = segment.style.hyperlink;
11088
11088
  style.color = "#4a9eff";
11089
11089
  style.textDecoration = "underline";
@@ -11096,7 +11096,7 @@ function renderRichNotesSegments(segments) {
11096
11096
  style,
11097
11097
  onClick: (e) => {
11098
11098
  e.preventDefault();
11099
- chunkCTL42ZRR_js.safeOpenUrl(safeHref);
11099
+ chunkRHNJ4IU2_js.safeOpenUrl(safeHref);
11100
11100
  },
11101
11101
  children: segment.text
11102
11102
  },
@@ -11445,7 +11445,7 @@ function useSlideNotes({
11445
11445
  const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
11446
11446
  if (href && (e.ctrlKey || e.metaKey)) {
11447
11447
  e.preventDefault();
11448
- chunkCTL42ZRR_js.safeOpenUrl(href);
11448
+ chunkRHNJ4IU2_js.safeOpenUrl(href);
11449
11449
  }
11450
11450
  }, []);
11451
11451
  return {
@@ -11526,7 +11526,7 @@ function SlideNotesPanel({
11526
11526
  });
11527
11527
  const hasNotes = draft.trim().length > 0;
11528
11528
  const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
11529
- const { dragY, handlers: dragHandlers } = chunkK3EGXT6W_js.useSheetDismissDrag(onToggle);
11529
+ const { dragY, handlers: dragHandlers } = chunkMFGD7XVJ_js.useSheetDismissDrag(onToggle);
11530
11530
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11531
11531
  isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
11532
11532
  "button",
@@ -11542,7 +11542,7 @@ function SlideNotesPanel({
11542
11542
  {
11543
11543
  ref: rootRef,
11544
11544
  "data-pptx-chrome": "notes",
11545
- className: chunkCTL42ZRR_js.cn(
11545
+ className: chunkRHNJ4IU2_js.cn(
11546
11546
  "flex flex-col border-t border-border/60 bg-background select-none",
11547
11547
  // On mobile, hide the entire notes strip when collapsed: the
11548
11548
  // MobileBottomBar's Notes button is the entry point instead.
@@ -11906,7 +11906,7 @@ function SlideDiffRow({
11906
11906
  return /* @__PURE__ */ jsxRuntime.jsxs(
11907
11907
  "div",
11908
11908
  {
11909
- className: chunkCTL42ZRR_js.cn(
11909
+ className: chunkRHNJ4IU2_js.cn(
11910
11910
  "rounded-lg border transition-colors",
11911
11911
  isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
11912
11912
  ),
@@ -11920,7 +11920,7 @@ function SlideDiffRow({
11920
11920
  children: [
11921
11921
  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" }),
11922
11922
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
11923
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkCTL42ZRR_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
11923
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkRHNJ4IU2_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
11924
11924
  diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
11925
11925
  diff.changes.length,
11926
11926
  " ",
@@ -11930,7 +11930,7 @@ function SlideDiffRow({
11930
11930
  isResolved && /* @__PURE__ */ jsxRuntime.jsx(
11931
11931
  "span",
11932
11932
  {
11933
- className: chunkCTL42ZRR_js.cn(
11933
+ className: chunkRHNJ4IU2_js.cn(
11934
11934
  "text-[10px] font-medium",
11935
11935
  accepted ? "text-green-400" : "text-muted-foreground"
11936
11936
  ),
@@ -11958,7 +11958,7 @@ function SlideDiffRow({
11958
11958
  /* @__PURE__ */ jsxRuntime.jsx(
11959
11959
  "div",
11960
11960
  {
11961
- className: chunkCTL42ZRR_js.cn(
11961
+ className: chunkRHNJ4IU2_js.cn(
11962
11962
  "rounded border overflow-hidden",
11963
11963
  diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
11964
11964
  ),
@@ -12663,7 +12663,7 @@ function DocumentPropertiesDialog({
12663
12663
  const handleClose = React97.useCallback(() => {
12664
12664
  onClose();
12665
12665
  }, [onClose]);
12666
- const { panelStyle, handlers: dragHandlers } = chunkK3EGXT6W_js.useModalDismissDrag(handleClose);
12666
+ const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(handleClose);
12667
12667
  if (!isOpen) {
12668
12668
  return null;
12669
12669
  }
@@ -13260,7 +13260,7 @@ function PresentationSubtitleBar({
13260
13260
  }) {
13261
13261
  const { t } = reactI18next.useTranslation();
13262
13262
  const language = pptx.subtitleRecognitionLanguage(
13263
- pptx.subtitleSettingsFromOptions(chunkK3EGXT6W_js.useViewerOptionsContext()),
13263
+ pptx.subtitleSettingsFromOptions(chunkMFGD7XVJ_js.useViewerOptionsContext()),
13264
13264
  typeof navigator === "undefined" ? "en-US" : navigator.language
13265
13265
  );
13266
13266
  const [captionText, setCaptionText] = React97.useState("");
@@ -13428,7 +13428,7 @@ function ScaledSlidePreviewImpl({
13428
13428
  {
13429
13429
  className: "absolute inset-0",
13430
13430
  style: {
13431
- backgroundColor: chunkCTL42ZRR_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
13431
+ backgroundColor: chunkRHNJ4IU2_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
13432
13432
  }
13433
13433
  }
13434
13434
  ),
@@ -13453,7 +13453,7 @@ function ScaledSlidePreviewImpl({
13453
13453
  transformOrigin: "top left"
13454
13454
  },
13455
13455
  children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
13456
- chunkK3EGXT6W_js.StaticElementRenderer,
13456
+ chunkMFGD7XVJ_js.StaticElementRenderer,
13457
13457
  {
13458
13458
  element,
13459
13459
  activeSlide: slide,
@@ -14170,7 +14170,7 @@ function getElementDisplayName(element, index) {
14170
14170
  if (element.name && element.name.trim().length > 0) {
14171
14171
  return element.name.trim();
14172
14172
  }
14173
- if ((0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(element) && element.text && element.text.trim().length > 0) {
14173
+ if ((0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element) && element.text && element.text.trim().length > 0) {
14174
14174
  return element.text.trim().slice(0, 32);
14175
14175
  }
14176
14176
  const label = TYPE_LABELS[element.type] ?? "Object";
@@ -14343,7 +14343,7 @@ function SelectionPane({
14343
14343
  setDragIndex(null);
14344
14344
  setDragOverIndex(null);
14345
14345
  },
14346
- className: chunkCTL42ZRR_js.cn(
14346
+ className: chunkRHNJ4IU2_js.cn(
14347
14347
  "flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
14348
14348
  isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
14349
14349
  dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
@@ -14397,13 +14397,13 @@ function SelectionPane({
14397
14397
  }
14398
14398
  var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
14399
14399
  var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
14400
- var ENTRANCE_PRESETS = chunkCTL42ZRR_js.ANIMATION_PRESET_OPTIONS.filter(
14400
+ var ENTRANCE_PRESETS = chunkRHNJ4IU2_js.ANIMATION_PRESET_OPTIONS.filter(
14401
14401
  (o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
14402
14402
  );
14403
- var EXIT_PRESETS = chunkCTL42ZRR_js.ANIMATION_PRESET_OPTIONS.filter(
14403
+ var EXIT_PRESETS = chunkRHNJ4IU2_js.ANIMATION_PRESET_OPTIONS.filter(
14404
14404
  (o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
14405
14405
  );
14406
- var EMPHASIS_PRESETS = chunkCTL42ZRR_js.ANIMATION_PRESET_OPTIONS.filter(
14406
+ var EMPHASIS_PRESETS = chunkRHNJ4IU2_js.ANIMATION_PRESET_OPTIONS.filter(
14407
14407
  (o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
14408
14408
  );
14409
14409
  var TIMING_CURVE_OPTIONS = [
@@ -14569,7 +14569,7 @@ function AnimationTimelineSection({
14569
14569
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
14570
14570
  "div",
14571
14571
  {
14572
- className: chunkCTL42ZRR_js.cn(
14572
+ className: chunkRHNJ4IU2_js.cn(
14573
14573
  "absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
14574
14574
  animationTypeColor(bar.anim),
14575
14575
  bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
@@ -14598,7 +14598,7 @@ function AnimationTimelineSection({
14598
14598
  onDragLeave: handleDragLeave,
14599
14599
  onDrop: (e) => handleDrop(index, e),
14600
14600
  title: t("pptx.animation.nativeEffectHint"),
14601
- className: chunkCTL42ZRR_js.cn(
14601
+ className: chunkRHNJ4IU2_js.cn(
14602
14602
  "flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
14603
14603
  "bg-muted/20 text-muted-foreground/70",
14604
14604
  isDragOver && "border-t-2 border-primary"
@@ -14637,7 +14637,7 @@ function AnimationTimelineSection({
14637
14637
  onDragEnd: handleDragEnd,
14638
14638
  onMouseEnter: () => handleAnimationHover(anim),
14639
14639
  onMouseLeave: handleAnimationHoverEnd,
14640
- className: chunkCTL42ZRR_js.cn(
14640
+ className: chunkRHNJ4IU2_js.cn(
14641
14641
  "flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
14642
14642
  isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
14643
14643
  isDragging && "opacity-40",
@@ -14769,7 +14769,7 @@ function EffectSoundRow({
14769
14769
  }
14770
14770
  const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
14771
14771
  if (asset) {
14772
- chunkK3EGXT6W_js.playAnimationSound(asset.dataUrl);
14772
+ chunkMFGD7XVJ_js.playAnimationSound(asset.dataUrl);
14773
14773
  }
14774
14774
  };
14775
14775
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -14944,7 +14944,7 @@ function useAnimationPreview({
14944
14944
  }) {
14945
14945
  const handleAnimationHover = React97.useCallback((anim) => {
14946
14946
  if (anim.motionPath) {
14947
- chunkCTL42ZRR_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
14947
+ chunkRHNJ4IU2_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
14948
14948
  durationMs: anim.durationMs,
14949
14949
  delayMs: anim.delayMs,
14950
14950
  timingCurve: anim.timingCurve
@@ -14955,19 +14955,19 @@ function useAnimationPreview({
14955
14955
  if (!preset || preset === "none") {
14956
14956
  return;
14957
14957
  }
14958
- chunkCTL42ZRR_js.startPreviewAnimation(anim.elementId, preset, {
14958
+ chunkRHNJ4IU2_js.startPreviewAnimation(anim.elementId, preset, {
14959
14959
  direction: anim.direction,
14960
14960
  durationMs: anim.durationMs ?? 500,
14961
14961
  timingCurve: anim.timingCurve
14962
14962
  });
14963
14963
  }, []);
14964
- const handleAnimationHoverEnd = React97.useCallback(() => chunkCTL42ZRR_js.stopPreviewAnimation(), []);
14964
+ const handleAnimationHoverEnd = React97.useCallback(() => chunkRHNJ4IU2_js.stopPreviewAnimation(), []);
14965
14965
  const handlePreviewClick = React97.useCallback(() => {
14966
14966
  if (!selectedElementAnimation) {
14967
14967
  return;
14968
14968
  }
14969
14969
  if (selectedElementAnimation.motionPath) {
14970
- chunkCTL42ZRR_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
14970
+ chunkRHNJ4IU2_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
14971
14971
  durationMs: selectedElementAnimation.durationMs,
14972
14972
  delayMs: selectedElementAnimation.delayMs,
14973
14973
  timingCurve: selectedElementAnimation.timingCurve
@@ -14978,7 +14978,7 @@ function useAnimationPreview({
14978
14978
  if (!preset || preset === "none") {
14979
14979
  return;
14980
14980
  }
14981
- chunkCTL42ZRR_js.startPreviewAnimation(selectedElementId, preset, {
14981
+ chunkRHNJ4IU2_js.startPreviewAnimation(selectedElementId, preset, {
14982
14982
  direction: selectedElementAnimation.direction,
14983
14983
  durationMs: selectedElementAnimation.durationMs ?? 500,
14984
14984
  timingCurve: selectedElementAnimation.timingCurve
@@ -15212,8 +15212,8 @@ function useAnimationHandlers({
15212
15212
  if (!el) {
15213
15213
  return anim.elementId.slice(0, 8);
15214
15214
  }
15215
- const text = (0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
15216
- return text || chunkCTL42ZRR_js.getElementLabel(el);
15215
+ const text = (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
15216
+ return text || chunkRHNJ4IU2_js.getElementLabel(el);
15217
15217
  },
15218
15218
  [activeSlide.elements]
15219
15219
  );
@@ -15223,8 +15223,8 @@ function useAnimationHandlers({
15223
15223
  if (!el) {
15224
15224
  return id.slice(0, 8);
15225
15225
  }
15226
- const text = (0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
15227
- return text || chunkCTL42ZRR_js.getElementLabel(el);
15226
+ const text = (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
15227
+ return text || chunkRHNJ4IU2_js.getElementLabel(el);
15228
15228
  }).join(", "),
15229
15229
  [activeSlide.elements]
15230
15230
  );
@@ -15281,7 +15281,7 @@ function AnimationPanel({
15281
15281
  onUpdateSlide
15282
15282
  }) {
15283
15283
  const { t } = reactI18next.useTranslation();
15284
- const { viewportWidth } = chunkK3EGXT6W_js.useIsMobile();
15284
+ const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
15285
15285
  const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
15286
15286
  const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
15287
15287
  const handlers = useAnimationHandlers({
@@ -15409,7 +15409,7 @@ function AnimationPanel({
15409
15409
  type: "button",
15410
15410
  disabled: !canEdit,
15411
15411
  style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
15412
- className: chunkCTL42ZRR_js.cn(
15412
+ className: chunkRHNJ4IU2_js.cn(
15413
15413
  "flex items-center justify-center rounded border transition-colors",
15414
15414
  isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
15415
15415
  ),
@@ -15487,7 +15487,7 @@ function AnimationPanel({
15487
15487
  style: fieldStyle,
15488
15488
  children: [
15489
15489
  /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
15490
- activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkCTL42ZRR_js.getElementLabel(el) }, el.id))
15490
+ activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkRHNJ4IU2_js.getElementLabel(el) }, el.id))
15491
15491
  ]
15492
15492
  }
15493
15493
  )
@@ -15635,7 +15635,7 @@ function ActionTargetFields({
15635
15635
  type: "text",
15636
15636
  disabled: !canEdit,
15637
15637
  "aria-label": t(urlLabelKey),
15638
- className: chunkCTL42ZRR_js.cn(INPUT2, "w-full"),
15638
+ className: chunkRHNJ4IU2_js.cn(INPUT2, "w-full"),
15639
15639
  placeholder: "https://...",
15640
15640
  value: url ?? "",
15641
15641
  onChange: (e) => onChange({ url: e.target.value })
@@ -15649,7 +15649,7 @@ function ActionTargetFields({
15649
15649
  type: "number",
15650
15650
  disabled: !canEdit,
15651
15651
  "aria-label": t("pptx.action.gotoSlide"),
15652
- className: chunkCTL42ZRR_js.cn(INPUT2, "w-full"),
15652
+ className: chunkRHNJ4IU2_js.cn(INPUT2, "w-full"),
15653
15653
  placeholder: t("pptx.action.slideNumberPlaceholder"),
15654
15654
  min: 1,
15655
15655
  max: slideCount,
@@ -15671,7 +15671,7 @@ function ActionTargetFields({
15671
15671
  "data-testid": "pptx-action-custom-show",
15672
15672
  disabled: !canEdit,
15673
15673
  "aria-label": t("pptx.hyperlink.customShowLabel"),
15674
- className: chunkCTL42ZRR_js.cn(INPUT2, "w-full"),
15674
+ className: chunkRHNJ4IU2_js.cn(INPUT2, "w-full"),
15675
15675
  value: customShowId ?? "",
15676
15676
  onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
15677
15677
  children: [
@@ -15704,11 +15704,11 @@ function ActionSettingsPanel({
15704
15704
  onUpdateElement
15705
15705
  }) {
15706
15706
  const { t } = reactI18next.useTranslation();
15707
- const clickAction = selectedElement.actionClick ? (0, chunkCTL42ZRR_js.dist_exports.pptxActionToElementAction)(selectedElement.actionClick, "click") : void 0;
15708
- const hoverAction = selectedElement.actionHover ? (0, chunkCTL42ZRR_js.dist_exports.pptxActionToElementAction)(selectedElement.actionHover, "hover") : void 0;
15707
+ const clickAction = selectedElement.actionClick ? (0, chunkRHNJ4IU2_js.dist_exports.pptxActionToElementAction)(selectedElement.actionClick, "click") : void 0;
15708
+ const hoverAction = selectedElement.actionHover ? (0, chunkRHNJ4IU2_js.dist_exports.pptxActionToElementAction)(selectedElement.actionHover, "hover") : void 0;
15709
15709
  const updateAction = (trigger, type, patch) => {
15710
15710
  const ea = { trigger, type, ...patch };
15711
- const pa = (0, chunkCTL42ZRR_js.dist_exports.elementActionToPptxAction)(ea);
15711
+ const pa = (0, chunkRHNJ4IU2_js.dist_exports.elementActionToPptxAction)(ea);
15712
15712
  if (trigger === "click") {
15713
15713
  onUpdateElement({ actionClick: pa });
15714
15714
  } else {
@@ -15793,7 +15793,7 @@ function ActionTriggerSection({
15793
15793
  {
15794
15794
  disabled: !canEdit,
15795
15795
  "aria-label": label,
15796
- className: chunkCTL42ZRR_js.cn(INPUT2, "w-full"),
15796
+ className: chunkRHNJ4IU2_js.cn(INPUT2, "w-full"),
15797
15797
  value: effectiveType,
15798
15798
  onChange: (e) => changeType(e.target.value),
15799
15799
  children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
@@ -16181,7 +16181,7 @@ function ChartDataGrid({
16181
16181
  }) {
16182
16182
  const { t } = reactI18next.useTranslation();
16183
16183
  const highlightRef = React97.useRef(null);
16184
- const { viewportWidth } = chunkK3EGXT6W_js.useIsMobile();
16184
+ const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
16185
16185
  const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
16186
16186
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
16187
16187
  const rowHeaderClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10 bg-card" : "";
@@ -17538,8 +17538,8 @@ function ChartUserShapeOptions({
17538
17538
  }
17539
17539
  function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
17540
17540
  const chartData = selectedElement.chartData;
17541
- const followDataPoint = chunkK3EGXT6W_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
17542
- const { selection: partSelection } = chunkK3EGXT6W_js.useChartPartSelection();
17541
+ const followDataPoint = chunkMFGD7XVJ_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
17542
+ const { selection: partSelection } = chunkMFGD7XVJ_js.useChartPartSelection();
17543
17543
  const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
17544
17544
  const title = chartData?.title;
17545
17545
  const chartType = chartData?.chartType;
@@ -17753,40 +17753,40 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
17753
17753
  [chartData, selectedElement, replaceChartData]
17754
17754
  );
17755
17755
  const setAxisLogScale = React97.useCallback(
17756
- (axisType, opts) => applyChartOp((el) => (0, chunkCTL42ZRR_js.dist_exports.setChartAxisLogScale)(el, axisType, opts)),
17756
+ (axisType, opts) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartAxisLogScale)(el, axisType, opts)),
17757
17757
  [applyChartOp]
17758
17758
  );
17759
17759
  const setAxisTitleStyle = React97.useCallback(
17760
- (axisType, edit) => applyChartOp((el) => (0, chunkCTL42ZRR_js.dist_exports.setChartAxisTitleStyle)(el, axisType, edit)),
17760
+ (axisType, edit) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartAxisTitleStyle)(el, axisType, edit)),
17761
17761
  [applyChartOp]
17762
17762
  );
17763
17763
  const setGridlineStyle = React97.useCallback(
17764
- (axisType, which, edit) => applyChartOp((el) => (0, chunkCTL42ZRR_js.dist_exports.setChartAxisGridlineStyle)(el, axisType, which, edit)),
17764
+ (axisType, which, edit) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartAxisGridlineStyle)(el, axisType, which, edit)),
17765
17765
  [applyChartOp]
17766
17766
  );
17767
17767
  const setSeriesMarker = React97.useCallback(
17768
- (index, marker) => applyChartOp((el) => (0, chunkCTL42ZRR_js.dist_exports.setChartSeriesMarker)(el, index, marker)),
17768
+ (index, marker) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartSeriesMarker)(el, index, marker)),
17769
17769
  [applyChartOp]
17770
17770
  );
17771
17771
  const setSeriesType = React97.useCallback(
17772
- (index, seriesType) => applyChartOp((el) => (0, chunkCTL42ZRR_js.dist_exports.setChartSeriesChartType)(el, index, seriesType)),
17772
+ (index, seriesType) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartSeriesChartType)(el, index, seriesType)),
17773
17773
  [applyChartOp]
17774
17774
  );
17775
17775
  const setPointFill = React97.useCallback(
17776
- (seriesIndex, pointIndex, color) => applyChartOp((el) => (0, chunkCTL42ZRR_js.dist_exports.setChartDataPointFill)(el, seriesIndex, pointIndex, color)),
17776
+ (seriesIndex, pointIndex, color) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartDataPointFill)(el, seriesIndex, pointIndex, color)),
17777
17777
  [applyChartOp]
17778
17778
  );
17779
17779
  const setPointExplosion = React97.useCallback(
17780
- (seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0, chunkCTL42ZRR_js.dist_exports.setChartDataPointExplosion)(el, seriesIndex, pointIndex, explosion)),
17780
+ (seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartDataPointExplosion)(el, seriesIndex, pointIndex, explosion)),
17781
17781
  [applyChartOp]
17782
17782
  );
17783
17783
  const setPointMarker = React97.useCallback(
17784
- (seriesIndex, pointIndex, marker) => applyChartOp((el) => (0, chunkCTL42ZRR_js.dist_exports.setChartDataPointMarker)(el, seriesIndex, pointIndex, marker)),
17784
+ (seriesIndex, pointIndex, marker) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartDataPointMarker)(el, seriesIndex, pointIndex, marker)),
17785
17785
  [applyChartOp]
17786
17786
  );
17787
17787
  const setPointLabel = React97.useCallback(
17788
17788
  (seriesIndex, pointIndex, text) => applyChartOp(
17789
- (el) => (0, chunkCTL42ZRR_js.dist_exports.setChartDataPointLabel)(el, seriesIndex, pointIndex, text !== null ? { text } : null)
17789
+ (el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartDataPointLabel)(el, seriesIndex, pointIndex, text !== null ? { text } : null)
17790
17790
  ),
17791
17791
  [applyChartOp]
17792
17792
  );
@@ -18054,17 +18054,17 @@ function OleEditorDialog({
18054
18054
  const kind = descriptor.contentTab.kind;
18055
18055
  const load = async () => {
18056
18056
  if (kind === "sheet") {
18057
- const value = await (0, chunkCTL42ZRR_js.dist_exports.getOleSheetGrid)(element);
18057
+ const value = await (0, chunkRHNJ4IU2_js.dist_exports.getOleSheetGrid)(element);
18058
18058
  if (!cancelled) {
18059
18059
  setGrid(value);
18060
18060
  }
18061
18061
  } else if (kind === "document") {
18062
- const value = await (0, chunkCTL42ZRR_js.dist_exports.getOleDocumentParagraphs)(element);
18062
+ const value = await (0, chunkRHNJ4IU2_js.dist_exports.getOleDocumentParagraphs)(element);
18063
18063
  if (!cancelled) {
18064
18064
  setParagraphs(value);
18065
18065
  }
18066
18066
  } else if (kind === "deck") {
18067
- const value = await (0, chunkCTL42ZRR_js.dist_exports.getOleNestedDeckDetail)(element);
18067
+ const value = await (0, chunkRHNJ4IU2_js.dist_exports.getOleNestedDeckDetail)(element);
18068
18068
  if (!cancelled) {
18069
18069
  setDeckSlides(value);
18070
18070
  }
@@ -18090,9 +18090,9 @@ function OleEditorDialog({
18090
18090
  const handleCellEdit = React97.useCallback(
18091
18091
  async (row, col, value) => {
18092
18092
  try {
18093
- const updated = await (0, chunkCTL42ZRR_js.dist_exports.applyOleSheetCellEdit)(element, { row, col, value });
18093
+ const updated = await (0, chunkRHNJ4IU2_js.dist_exports.applyOleSheetCellEdit)(element, { row, col, value });
18094
18094
  commit(updated);
18095
- const refreshed = await (0, chunkCTL42ZRR_js.dist_exports.getOleSheetGrid)(updated);
18095
+ const refreshed = await (0, chunkRHNJ4IU2_js.dist_exports.getOleSheetGrid)(updated);
18096
18096
  if (mountedRef.current) {
18097
18097
  setGrid(refreshed);
18098
18098
  }
@@ -18107,9 +18107,9 @@ function OleEditorDialog({
18107
18107
  const handleParagraphEdit = React97.useCallback(
18108
18108
  async (index, text) => {
18109
18109
  try {
18110
- const updated = await (0, chunkCTL42ZRR_js.dist_exports.applyOleDocumentParagraphEdit)(element, index, text);
18110
+ const updated = await (0, chunkRHNJ4IU2_js.dist_exports.applyOleDocumentParagraphEdit)(element, index, text);
18111
18111
  commit(updated);
18112
- const refreshed = await (0, chunkCTL42ZRR_js.dist_exports.getOleDocumentParagraphs)(updated);
18112
+ const refreshed = await (0, chunkRHNJ4IU2_js.dist_exports.getOleDocumentParagraphs)(updated);
18113
18113
  if (mountedRef.current) {
18114
18114
  setParagraphs(refreshed);
18115
18115
  }
@@ -18124,14 +18124,14 @@ function OleEditorDialog({
18124
18124
  const handleDeckElementEdit = React97.useCallback(
18125
18125
  async (slideIndex, deckElementId, text) => {
18126
18126
  try {
18127
- const updated = await (0, chunkCTL42ZRR_js.dist_exports.applyOleNestedDeckElementTextEdit)(
18127
+ const updated = await (0, chunkRHNJ4IU2_js.dist_exports.applyOleNestedDeckElementTextEdit)(
18128
18128
  element,
18129
18129
  slideIndex,
18130
18130
  deckElementId,
18131
18131
  text
18132
18132
  );
18133
18133
  commit(updated);
18134
- const refreshed = await (0, chunkCTL42ZRR_js.dist_exports.getOleNestedDeckDetail)(updated);
18134
+ const refreshed = await (0, chunkRHNJ4IU2_js.dist_exports.getOleNestedDeckDetail)(updated);
18135
18135
  if (mountedRef.current) {
18136
18136
  setDeckSlides(refreshed);
18137
18137
  }
@@ -18147,7 +18147,7 @@ function OleEditorDialog({
18147
18147
  async (file) => {
18148
18148
  try {
18149
18149
  const bytes = new Uint8Array(await file.arrayBuffer());
18150
- const updated = await (0, chunkCTL42ZRR_js.dist_exports.replaceOleFile)(element, bytes, file.name);
18150
+ const updated = await (0, chunkRHNJ4IU2_js.dist_exports.replaceOleFile)(element, bytes, file.name);
18151
18151
  commit(updated);
18152
18152
  if (mountedRef.current) {
18153
18153
  onClose();
@@ -18296,7 +18296,7 @@ function ConnectorArrowsSection({
18296
18296
  },
18297
18297
  disabled: !canEdit,
18298
18298
  className: SELECT_CLS2,
18299
- children: chunkCTL42ZRR_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18299
+ children: chunkRHNJ4IU2_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18300
18300
  }
18301
18301
  )
18302
18302
  ] }, end);
@@ -18320,7 +18320,7 @@ function ConnectorArrowsSection({
18320
18320
  },
18321
18321
  disabled: !canEdit,
18322
18322
  className: SELECT_CLS2,
18323
- children: chunkCTL42ZRR_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18323
+ children: chunkRHNJ4IU2_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18324
18324
  }
18325
18325
  )
18326
18326
  ] }),
@@ -18339,7 +18339,7 @@ function ConnectorArrowsSection({
18339
18339
  },
18340
18340
  disabled: !canEdit,
18341
18341
  className: SELECT_CLS2,
18342
- children: chunkCTL42ZRR_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18342
+ children: chunkRHNJ4IU2_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18343
18343
  }
18344
18344
  )
18345
18345
  ] })
@@ -18419,7 +18419,7 @@ function OlePropertiesPanel({
18419
18419
  ] }),
18420
18420
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
18421
18421
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.type") }),
18422
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0, chunkCTL42ZRR_js.dist_exports.getOleObjectTypeLabel)(ole.oleObjectType) })
18422
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0, chunkRHNJ4IU2_js.dist_exports.getOleObjectTypeLabel)(ole.oleObjectType) })
18423
18423
  ] }),
18424
18424
  ole.fileName && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
18425
18425
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.fileName") }),
@@ -18430,7 +18430,7 @@ function OlePropertiesPanel({
18430
18430
  /* @__PURE__ */ jsxRuntime.jsx(
18431
18431
  "span",
18432
18432
  {
18433
- className: chunkCTL42ZRR_js.cn(
18433
+ className: chunkRHNJ4IU2_js.cn(
18434
18434
  "inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
18435
18435
  ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
18436
18436
  ),
@@ -18498,7 +18498,7 @@ function LayerOrderButtons({
18498
18498
  "button",
18499
18499
  {
18500
18500
  type: "button",
18501
- className: chunkCTL42ZRR_js.cn("flex-1", BTN2),
18501
+ className: chunkRHNJ4IU2_js.cn("flex-1", BTN2),
18502
18502
  disabled: !canEdit,
18503
18503
  onClick: () => onMoveLayer("forward"),
18504
18504
  children: "\u2191 Forward"
@@ -18508,7 +18508,7 @@ function LayerOrderButtons({
18508
18508
  "button",
18509
18509
  {
18510
18510
  type: "button",
18511
- className: chunkCTL42ZRR_js.cn("flex-1", BTN2),
18511
+ className: chunkRHNJ4IU2_js.cn("flex-1", BTN2),
18512
18512
  disabled: !canEdit,
18513
18513
  onClick: () => onMoveLayer("backward"),
18514
18514
  children: "\u2193 Backward"
@@ -18532,7 +18532,7 @@ function ArtisticEffectsGallery({
18532
18532
  {
18533
18533
  type: "button",
18534
18534
  disabled: !canEdit,
18535
- className: chunkCTL42ZRR_js.cn(
18535
+ className: chunkRHNJ4IU2_js.cn(
18536
18536
  "flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
18537
18537
  isActive ? "border-primary bg-primary/10" : "border-border"
18538
18538
  ),
@@ -18594,7 +18594,7 @@ function ColorChangeSection({
18594
18594
  DebouncedColorInput,
18595
18595
  {
18596
18596
  disabled: !canEdit,
18597
- value: chunkCTL42ZRR_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
18597
+ value: chunkRHNJ4IU2_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
18598
18598
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
18599
18599
  onCommit: (hex) => updateEffects({
18600
18600
  clrChange: {
@@ -18612,7 +18612,7 @@ function ColorChangeSection({
18612
18612
  DebouncedColorInput,
18613
18613
  {
18614
18614
  disabled: !canEdit || Boolean(cc.clrToTransparent),
18615
- value: chunkCTL42ZRR_js.normalizeHexColor(cc.clrTo, "#000000"),
18615
+ value: chunkRHNJ4IU2_js.normalizeHexColor(cc.clrTo, "#000000"),
18616
18616
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
18617
18617
  onCommit: (hex) => updateEffects({
18618
18618
  clrChange: {
@@ -18672,7 +18672,7 @@ function ColorWashSection({
18672
18672
  DebouncedColorInput,
18673
18673
  {
18674
18674
  disabled: !canEdit,
18675
- value: chunkCTL42ZRR_js.normalizeHexColor(wash.color, "#0066cc"),
18675
+ value: chunkRHNJ4IU2_js.normalizeHexColor(wash.color, "#0066cc"),
18676
18676
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
18677
18677
  onCommit: (hex) => updateEffects({
18678
18678
  colorWash: { color: hex, opacity: wash.opacity ?? 40 }
@@ -18775,8 +18775,8 @@ function DuotonePanel({
18775
18775
  }
18776
18776
  });
18777
18777
  }, [effects, onUpdateElement]);
18778
- const shadowColor = chunkCTL42ZRR_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
18779
- const highlightColor = chunkCTL42ZRR_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
18778
+ const shadowColor = chunkRHNJ4IU2_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
18779
+ const highlightColor = chunkRHNJ4IU2_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
18780
18780
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
18781
18781
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
18782
18782
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -18807,7 +18807,7 @@ function DuotonePanel({
18807
18807
  ] }),
18808
18808
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
18809
18809
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
18810
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkK3EGXT6W_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
18810
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkMFGD7XVJ_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
18811
18811
  "button",
18812
18812
  {
18813
18813
  type: "button",
@@ -18945,7 +18945,7 @@ function ImageCropSection({
18945
18945
  onUpdateElement
18946
18946
  }) {
18947
18947
  const { t } = reactI18next.useTranslation();
18948
- if (!(0, chunkCTL42ZRR_js.dist_exports.isImageLikeElement)(selectedElement)) {
18948
+ if (!(0, chunkRHNJ4IU2_js.dist_exports.isImageLikeElement)(selectedElement)) {
18949
18949
  return null;
18950
18950
  }
18951
18951
  const croppable = pptx.cropResetState(selectedElement, canEdit, true).enabled;
@@ -18962,7 +18962,7 @@ function ImageCropSection({
18962
18962
  max: MAX_CROP_PERCENT,
18963
18963
  disabled: !croppable,
18964
18964
  className: "accent-primary",
18965
- value: Math.round(chunkCTL42ZRR_js.clampCropValue(selectedElement[key]) * 100),
18965
+ value: Math.round(chunkRHNJ4IU2_js.clampCropValue(selectedElement[key]) * 100),
18966
18966
  onChange: (e) => onUpdateElement({
18967
18967
  [key]: Number(e.target.value) / 100
18968
18968
  })
@@ -19026,7 +19026,7 @@ function ImagePropertiesPanel({
19026
19026
  {
19027
19027
  rows: 2,
19028
19028
  disabled: !canEdit,
19029
- className: chunkCTL42ZRR_js.cn(INPUT2, "resize-none text-[11px]"),
19029
+ className: chunkRHNJ4IU2_js.cn(INPUT2, "resize-none text-[11px]"),
19030
19030
  value: selectedElement.altText ?? "",
19031
19031
  onChange: (e) => onUpdateElement({
19032
19032
  altText: e.target.value
@@ -19966,7 +19966,7 @@ function AccessibilityTextSection({
19966
19966
  rows: 2,
19967
19967
  disabled: !canEdit,
19968
19968
  placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
19969
- className: chunkCTL42ZRR_js.cn(INPUT2, "resize-none text-[11px]"),
19969
+ className: chunkRHNJ4IU2_js.cn(INPUT2, "resize-none text-[11px]"),
19970
19970
  value: fields.altText,
19971
19971
  onChange: (e) => onUpdateElement({ altText: e.target.value })
19972
19972
  }
@@ -19980,7 +19980,7 @@ function AccessibilityTextSection({
19980
19980
  type: "text",
19981
19981
  disabled: !canEdit,
19982
19982
  placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
19983
- className: chunkCTL42ZRR_js.cn(INPUT2, "text-[11px]"),
19983
+ className: chunkRHNJ4IU2_js.cn(INPUT2, "text-[11px]"),
19984
19984
  value: fields.title,
19985
19985
  onChange: (e) => onUpdateElement({ title: e.target.value })
19986
19986
  }
@@ -20096,7 +20096,7 @@ var SHADOW_EFFECT_CONFIGS = [
20096
20096
  angle = (Math.atan2(offsetY, offsetX) * 180 / Math.PI + 360) % 360;
20097
20097
  }
20098
20098
  return {
20099
- shadowColor: chunkCTL42ZRR_js.normalizeHexColor(s?.shadowColor, "#000000"),
20099
+ shadowColor: chunkRHNJ4IU2_js.normalizeHexColor(s?.shadowColor, "#000000"),
20100
20100
  shadowOpacity: s?.shadowOpacity ?? 0.35,
20101
20101
  shadowBlur: s?.shadowBlur ?? 6,
20102
20102
  shadowAngle: angle,
@@ -20112,7 +20112,7 @@ var SHADOW_EFFECT_CONFIGS = [
20112
20112
  key: "sc",
20113
20113
  label: "Shadow Color",
20114
20114
  type: "color",
20115
- read: (s) => chunkCTL42ZRR_js.normalizeHexColor(s?.shadowColor, "#000000"),
20115
+ read: (s) => chunkRHNJ4IU2_js.normalizeHexColor(s?.shadowColor, "#000000"),
20116
20116
  write: (v) => ({ shadowColor: String(v) })
20117
20117
  },
20118
20118
  {
@@ -20248,7 +20248,7 @@ var SHADOW_EFFECT_CONFIGS = [
20248
20248
  label: "Inner Shadow",
20249
20249
  isOn: (s) => Boolean(s?.innerShadowColor) && s?.innerShadowColor !== "transparent",
20250
20250
  onEnable: (s) => ({
20251
- innerShadowColor: chunkCTL42ZRR_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
20251
+ innerShadowColor: chunkRHNJ4IU2_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
20252
20252
  innerShadowOpacity: s?.innerShadowOpacity ?? 0.5,
20253
20253
  innerShadowBlur: s?.innerShadowBlur ?? 5,
20254
20254
  innerShadowOffsetX: s?.innerShadowOffsetX ?? 0,
@@ -20260,7 +20260,7 @@ var SHADOW_EFFECT_CONFIGS = [
20260
20260
  key: "isc",
20261
20261
  label: "Color",
20262
20262
  type: "color",
20263
- read: (s) => chunkCTL42ZRR_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
20263
+ read: (s) => chunkRHNJ4IU2_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
20264
20264
  write: (v) => ({ innerShadowColor: String(v) })
20265
20265
  },
20266
20266
  {
@@ -20770,7 +20770,7 @@ function ColorPickerRow({
20770
20770
  pushColor(color);
20771
20771
  };
20772
20772
  const handleEyedropper = async () => {
20773
- const color = await chunkCTL42ZRR_js.openNativeEyeDropper();
20773
+ const color = await chunkRHNJ4IU2_js.openNativeEyeDropper();
20774
20774
  if (color) {
20775
20775
  commit(color);
20776
20776
  }
@@ -20853,9 +20853,9 @@ function GradientStopRow({
20853
20853
  "input",
20854
20854
  {
20855
20855
  type: "color",
20856
- value: chunkCTL42ZRR_js.normalizeHexColor(stop2.color, "#3b82f6"),
20856
+ value: chunkRHNJ4IU2_js.normalizeHexColor(stop2.color, "#3b82f6"),
20857
20857
  onChange: (e) => {
20858
- const hex = chunkCTL42ZRR_js.normalizeHexColor(e.target.value, "#3b82f6");
20858
+ const hex = chunkRHNJ4IU2_js.normalizeHexColor(e.target.value, "#3b82f6");
20859
20859
  patchStop({ color: hex, colorRef: void 0 });
20860
20860
  pushColor(hex);
20861
20861
  },
@@ -20980,7 +20980,7 @@ function FillAdvancedControls({
20980
20980
  onClick: () => onUpdateGradientStops([
20981
20981
  ...gradientStops,
20982
20982
  {
20983
- color: chunkCTL42ZRR_js.normalizeHexColor(style?.fillColor, chunkCTL42ZRR_js.DEFAULT_FILL_COLOR),
20983
+ color: chunkRHNJ4IU2_js.normalizeHexColor(style?.fillColor, chunkRHNJ4IU2_js.DEFAULT_FILL_COLOR),
20984
20984
  position: 50,
20985
20985
  opacity: 1
20986
20986
  }
@@ -20994,9 +20994,9 @@ function FillAdvancedControls({
20994
20994
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
20995
20995
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
20996
20996
  /* @__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) => {
20997
- const fgColor = chunkCTL42ZRR_js.normalizeHexColor(style?.fillColor, chunkCTL42ZRR_js.DEFAULT_FILL_COLOR);
20998
- const bgColor = chunkCTL42ZRR_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
20999
- const svgPattern = chunkCTL42ZRR_js.getPatternSvg(opt.value, fgColor, bgColor);
20997
+ const fgColor = chunkRHNJ4IU2_js.normalizeHexColor(style?.fillColor, chunkRHNJ4IU2_js.DEFAULT_FILL_COLOR);
20998
+ const bgColor = chunkRHNJ4IU2_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
20999
+ const svgPattern = chunkRHNJ4IU2_js.getPatternSvg(opt.value, fgColor, bgColor);
21000
21000
  const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
21001
21001
  return /* @__PURE__ */ jsxRuntime.jsx(
21002
21002
  "button",
@@ -21029,7 +21029,7 @@ function FillAdvancedControls({
21029
21029
  {
21030
21030
  label: t("pptx.fillAdvanced.foregroundColor"),
21031
21031
  prefix: "pattern-fg",
21032
- value: chunkCTL42ZRR_js.normalizeHexColor(style?.fillColor, chunkCTL42ZRR_js.DEFAULT_FILL_COLOR),
21032
+ value: chunkRHNJ4IU2_js.normalizeHexColor(style?.fillColor, chunkRHNJ4IU2_js.DEFAULT_FILL_COLOR),
21033
21033
  disabled: isLine,
21034
21034
  onChange: (color) => onUpdateShapeStyle({ fillMode: "pattern", fillColor: color })
21035
21035
  }
@@ -21039,7 +21039,7 @@ function FillAdvancedControls({
21039
21039
  {
21040
21040
  label: t("pptx.fillAdvanced.backgroundColor"),
21041
21041
  prefix: "pattern-bg",
21042
- value: chunkCTL42ZRR_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
21042
+ value: chunkRHNJ4IU2_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
21043
21043
  disabled: isLine,
21044
21044
  onChange: (color) => onUpdateShapeStyle({
21045
21045
  fillMode: "pattern",
@@ -21106,11 +21106,11 @@ function QuickStylesGallery({
21106
21106
  onUpdateShapeStyle
21107
21107
  }) {
21108
21108
  const { t } = reactI18next.useTranslation();
21109
- const { viewportWidth } = chunkK3EGXT6W_js.useIsMobile();
21109
+ const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
21110
21110
  const swatchMinHeight = pptx.getDensePanelTouchTargetPx(viewportWidth);
21111
21111
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
21112
21112
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: t("pptx.shape.quickStyles") }),
21113
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children: chunkCTL42ZRR_js.SHAPE_QUICK_STYLES.map((qs, idx) => /* @__PURE__ */ jsxRuntime.jsx(
21113
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children: chunkRHNJ4IU2_js.SHAPE_QUICK_STYLES.map((qs, idx) => /* @__PURE__ */ jsxRuntime.jsx(
21114
21114
  "button",
21115
21115
  {
21116
21116
  type: "button",
@@ -21137,7 +21137,7 @@ function StrokeEffectsSection({
21137
21137
  {
21138
21138
  label: t("pptx.inspector.stroke"),
21139
21139
  prefix: "stroke",
21140
- value: chunkCTL42ZRR_js.normalizeHexColor(style?.strokeColor, chunkCTL42ZRR_js.DEFAULT_STROKE_COLOR),
21140
+ value: chunkRHNJ4IU2_js.normalizeHexColor(style?.strokeColor, chunkRHNJ4IU2_js.DEFAULT_STROKE_COLOR),
21141
21141
  selectedRef: style?.strokeColorRef,
21142
21142
  onChange: onSetStrokeColor
21143
21143
  }
@@ -21200,7 +21200,7 @@ function StrokeEffectsSection({
21200
21200
  strokeDash: e.target.value
21201
21201
  }),
21202
21202
  className: SEL,
21203
- children: chunkCTL42ZRR_js.STROKE_DASH_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
21203
+ children: chunkRHNJ4IU2_js.STROKE_DASH_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
21204
21204
  }
21205
21205
  )
21206
21206
  ] }),
@@ -21290,10 +21290,10 @@ function FillStrokeProperties({
21290
21290
  return;
21291
21291
  }
21292
21292
  if (nextMode === "gradient") {
21293
- const existing = chunkCTL42ZRR_js.sanitizeGradientStops(style?.fillGradientStops);
21293
+ const existing = chunkRHNJ4IU2_js.sanitizeGradientStops(style?.fillGradientStops);
21294
21294
  const stops = existing.length >= 2 ? existing : [
21295
21295
  {
21296
- color: chunkCTL42ZRR_js.normalizeHexColor(style?.fillColor, chunkCTL42ZRR_js.DEFAULT_FILL_COLOR),
21296
+ color: chunkRHNJ4IU2_js.normalizeHexColor(style?.fillColor, chunkRHNJ4IU2_js.DEFAULT_FILL_COLOR),
21297
21297
  position: 0,
21298
21298
  opacity: 1
21299
21299
  },
@@ -21318,7 +21318,7 @@ function FillStrokeProperties({
21318
21318
  onUpdateShapeStyle({ fillMode: "solid" });
21319
21319
  };
21320
21320
  const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
21321
- { color: chunkCTL42ZRR_js.DEFAULT_FILL_COLOR, position: 0 },
21321
+ { color: chunkRHNJ4IU2_js.DEFAULT_FILL_COLOR, position: 0 },
21322
21322
  { color: "#ffffff", position: 100 }
21323
21323
  ];
21324
21324
  const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
@@ -21345,7 +21345,7 @@ function FillStrokeProperties({
21345
21345
  {
21346
21346
  label: t("pptx.fill.fill"),
21347
21347
  prefix: "fill",
21348
- value: chunkCTL42ZRR_js.normalizeHexColor(style?.fillColor, chunkCTL42ZRR_js.DEFAULT_FILL_COLOR),
21348
+ value: chunkRHNJ4IU2_js.normalizeHexColor(style?.fillColor, chunkRHNJ4IU2_js.DEFAULT_FILL_COLOR),
21349
21349
  selectedRef: style?.fillColorRef,
21350
21350
  disabled: line,
21351
21351
  onChange: onSetFillColor
@@ -21429,7 +21429,7 @@ function Text3DProperties({
21429
21429
  "input",
21430
21430
  {
21431
21431
  type: "color",
21432
- value: chunkCTL42ZRR_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
21432
+ value: chunkRHNJ4IU2_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
21433
21433
  onChange: (e) => {
21434
21434
  update3d({ extrusionColor: e.target.value });
21435
21435
  pushColor(e.target.value);
@@ -21620,7 +21620,7 @@ function AdvancedTextFormatting({
21620
21620
  "input",
21621
21621
  {
21622
21622
  type: "color",
21623
- value: chunkCTL42ZRR_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
21623
+ value: chunkRHNJ4IU2_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
21624
21624
  onChange: (e) => {
21625
21625
  onUpdateTextStyle({ highlightColor: e.target.value });
21626
21626
  pushColor(e.target.value);
@@ -21924,7 +21924,7 @@ function TextEffectsPanel({
21924
21924
  "input",
21925
21925
  {
21926
21926
  type: "color",
21927
- value: chunkCTL42ZRR_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
21927
+ value: chunkRHNJ4IU2_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
21928
21928
  onChange: (e) => {
21929
21929
  onUpdateTextStyle({ textShadowColor: e.target.value });
21930
21930
  pushColor(e.target.value);
@@ -22031,7 +22031,7 @@ function TextEffectsPanel({
22031
22031
  "input",
22032
22032
  {
22033
22033
  type: "color",
22034
- value: chunkCTL42ZRR_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
22034
+ value: chunkRHNJ4IU2_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
22035
22035
  onChange: (e) => {
22036
22036
  onUpdateTextStyle({ textGlowColor: e.target.value });
22037
22037
  pushColor(e.target.value);
@@ -22130,7 +22130,7 @@ function TextAdvancedSections({
22130
22130
  canEdit,
22131
22131
  onUpdateTextStyle
22132
22132
  }) {
22133
- if (!(0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(selectedElement)) {
22133
+ if (!(0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(selectedElement)) {
22134
22134
  return null;
22135
22135
  }
22136
22136
  const ts = selectedElement.textStyle;
@@ -22159,22 +22159,22 @@ function ShapeTextPanels({
22159
22159
  }) {
22160
22160
  const { t } = reactI18next.useTranslation();
22161
22161
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
22162
- (0, chunkCTL42ZRR_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
22162
+ (0, chunkRHNJ4IU2_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
22163
22163
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
22164
22164
  /* @__PURE__ */ jsxRuntime.jsx(
22165
22165
  WebSelect,
22166
22166
  {
22167
22167
  value: selectedElement.shapeType || "rect",
22168
22168
  disabled: !canEdit,
22169
- className: chunkCTL42ZRR_js.cn(INPUT2, "w-full"),
22169
+ className: chunkRHNJ4IU2_js.cn(INPUT2, "w-full"),
22170
22170
  onChange: (e) => onUpdateElement({
22171
22171
  shapeType: e.target.value
22172
22172
  }),
22173
- children: chunkCTL42ZRR_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
22173
+ children: chunkRHNJ4IU2_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
22174
22174
  }
22175
22175
  )
22176
22176
  ] }),
22177
- (0, chunkCTL42ZRR_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-fill-stroke": true, "data-pptx-inspector-section": "fill-stroke", children: [
22177
+ (0, chunkRHNJ4IU2_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-fill-stroke": true, "data-pptx-inspector-section": "fill-stroke", children: [
22178
22178
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.fillStroke", "Fill & Stroke") }),
22179
22179
  /* @__PURE__ */ jsxRuntime.jsx(
22180
22180
  FillStrokeProperties,
@@ -22182,7 +22182,7 @@ function ShapeTextPanels({
22182
22182
  selectedElement,
22183
22183
  selectedShapeStyle: selectedElement.shapeStyle,
22184
22184
  selectedShapeType: selectedElement.shapeType,
22185
- selectedGradientStops: chunkCTL42ZRR_js.sanitizeGradientStops(
22185
+ selectedGradientStops: chunkRHNJ4IU2_js.sanitizeGradientStops(
22186
22186
  selectedElement.shapeStyle?.fillGradientStops
22187
22187
  ),
22188
22188
  canEdit,
@@ -22192,7 +22192,7 @@ function ShapeTextPanels({
22192
22192
  }
22193
22193
  )
22194
22194
  ] }),
22195
- (0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-text-card": true, children: [
22195
+ (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-text-card": true, children: [
22196
22196
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.text.title", "Text") }),
22197
22197
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5 text-[11px]", children: [
22198
22198
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -22218,7 +22218,7 @@ function ShapeTextPanels({
22218
22218
  {
22219
22219
  disabled: !canEdit,
22220
22220
  ariaLabel: "Text Color",
22221
- value: chunkCTL42ZRR_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
22221
+ value: chunkRHNJ4IU2_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
22222
22222
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
22223
22223
  onCommit: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 })
22224
22224
  }
@@ -22310,7 +22310,7 @@ function TextFormatToggle({
22310
22310
  {
22311
22311
  type: "button",
22312
22312
  disabled,
22313
- className: chunkCTL42ZRR_js.cn(
22313
+ className: chunkRHNJ4IU2_js.cn(
22314
22314
  "px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
22315
22315
  italic && "italic",
22316
22316
  underline && "underline",
@@ -22468,7 +22468,7 @@ var THUMB_COMPONENTS = {
22468
22468
  chevron: ChevronThumb,
22469
22469
  bending: BendingThumb
22470
22470
  };
22471
- var LAYOUT_DESCRIPTORS = chunkCTL42ZRR_js.dist_exports.SWITCHABLE_LAYOUT_TYPES.map((type) => ({
22471
+ var LAYOUT_DESCRIPTORS = chunkRHNJ4IU2_js.dist_exports.SWITCHABLE_LAYOUT_TYPES.map((type) => ({
22472
22472
  type,
22473
22473
  i18nKey: `pptx.smartart.category.${type}`
22474
22474
  }));
@@ -22496,7 +22496,7 @@ function SmartArtLayoutSwitcher({
22496
22496
  type: "button",
22497
22497
  "data-testid": `smartart-layout-${type}`,
22498
22498
  disabled: !canEdit,
22499
- className: chunkCTL42ZRR_js.cn(
22499
+ className: chunkRHNJ4IU2_js.cn(
22500
22500
  "flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
22501
22501
  "text-[9px] leading-tight",
22502
22502
  isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
@@ -22575,7 +22575,7 @@ function SmartArtNodeStyleControls({
22575
22575
  disabled: !canEdit,
22576
22576
  "aria-label": `Bold ${label}`,
22577
22577
  "aria-pressed": bold,
22578
- className: chunkCTL42ZRR_js.cn(
22578
+ className: chunkRHNJ4IU2_js.cn(
22579
22579
  EMPHASIS_BTN,
22580
22580
  "font-bold",
22581
22581
  bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
@@ -22591,7 +22591,7 @@ function SmartArtNodeStyleControls({
22591
22591
  disabled: !canEdit,
22592
22592
  "aria-label": `Italic ${label}`,
22593
22593
  "aria-pressed": italic,
22594
- className: chunkCTL42ZRR_js.cn(
22594
+ className: chunkRHNJ4IU2_js.cn(
22595
22595
  EMPHASIS_BTN,
22596
22596
  "italic",
22597
22597
  italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
@@ -22630,7 +22630,7 @@ function SmartArtNodeRow({
22630
22630
  "div",
22631
22631
  {
22632
22632
  role: "listitem",
22633
- className: chunkCTL42ZRR_js.cn(
22633
+ className: chunkRHNJ4IU2_js.cn(
22634
22634
  "rounded border bg-background/60 p-1.5",
22635
22635
  isChild ? "border-border/60 ml-4" : "border-border"
22636
22636
  ),
@@ -22645,7 +22645,7 @@ function SmartArtNodeRow({
22645
22645
  "data-testid": "smartart-node-text",
22646
22646
  disabled: !canEdit,
22647
22647
  "aria-label": label,
22648
- className: chunkCTL42ZRR_js.cn(INPUT2, "flex-1 text-[11px] py-0.5"),
22648
+ className: chunkRHNJ4IU2_js.cn(INPUT2, "flex-1 text-[11px] py-0.5"),
22649
22649
  value: text,
22650
22650
  onChange: (e) => onChangeText(nodeId, e.target.value),
22651
22651
  onKeyDown: (e) => onKeyDown(e, nodeId),
@@ -22694,7 +22694,7 @@ function SmartArtNodeRow({
22694
22694
  {
22695
22695
  type: "button",
22696
22696
  disabled: !canEdit || removeDisabled,
22697
- className: chunkCTL42ZRR_js.cn(MINI_BTN, "hover:text-red-400"),
22697
+ className: chunkRHNJ4IU2_js.cn(MINI_BTN, "hover:text-red-400"),
22698
22698
  onClick: () => onRemove(nodeId),
22699
22699
  "aria-label": `Remove ${label}`,
22700
22700
  title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
@@ -22737,7 +22737,7 @@ function SmartArtStyleControls({
22737
22737
  disabled: !canEdit,
22738
22738
  "data-testid": "smartart-color-scheme",
22739
22739
  "aria-label": t("pptx.smartart.colorScheme"),
22740
- className: chunkCTL42ZRR_js.cn(INPUT2, "w-full"),
22740
+ className: chunkRHNJ4IU2_js.cn(INPUT2, "w-full"),
22741
22741
  value: colorScheme,
22742
22742
  onChange: (e) => onChangeColorScheme(e.target.value),
22743
22743
  children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
@@ -22752,7 +22752,7 @@ function SmartArtStyleControls({
22752
22752
  type: "button",
22753
22753
  disabled: !canEdit,
22754
22754
  "aria-pressed": style === s,
22755
- className: chunkCTL42ZRR_js.cn(
22755
+ className: chunkRHNJ4IU2_js.cn(
22756
22756
  "flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
22757
22757
  style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
22758
22758
  ),
@@ -22798,7 +22798,7 @@ function SmartArtPropertiesPanel({
22798
22798
  const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
22799
22799
  newData,
22800
22800
  newData.layout,
22801
- chunkK3EGXT6W_js.resolveSmartArtDataPalette(newData),
22801
+ chunkMFGD7XVJ_js.resolveSmartArtDataPalette(newData),
22802
22802
  newData.style ?? "flat",
22803
22803
  "inspector",
22804
22804
  box
@@ -22809,10 +22809,10 @@ function SmartArtPropertiesPanel({
22809
22809
  applySmartArtData({ ...smartArtData, ...patch });
22810
22810
  };
22811
22811
  const handleUpdateNodeText = (nodeId, text) => {
22812
- applySmartArtData((0, chunkCTL42ZRR_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text));
22812
+ applySmartArtData((0, chunkRHNJ4IU2_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text));
22813
22813
  };
22814
22814
  const handleChangeNodeStyle = (nodeId, patch) => {
22815
- const next = (0, chunkCTL42ZRR_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, patch);
22815
+ const next = (0, chunkRHNJ4IU2_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, patch);
22816
22816
  if (next !== smartArtData) {
22817
22817
  applySmartArtData(next);
22818
22818
  }
@@ -22821,17 +22821,17 @@ function SmartArtPropertiesPanel({
22821
22821
  if (!pptx.canAddTopLevelNode(layout, topLevelCount)) {
22822
22822
  return;
22823
22823
  }
22824
- applySmartArtData((0, chunkCTL42ZRR_js.dist_exports.addSmartArtNodeAsChild)(smartArtData));
22824
+ applySmartArtData((0, chunkRHNJ4IU2_js.dist_exports.addSmartArtNodeAsChild)(smartArtData));
22825
22825
  };
22826
22826
  const addSubItem = (parentId) => {
22827
- applySmartArtData((0, chunkCTL42ZRR_js.dist_exports.addSmartArtNodeAsChild)(smartArtData, parentId, "Sub-item"));
22827
+ applySmartArtData((0, chunkRHNJ4IU2_js.dist_exports.addSmartArtNodeAsChild)(smartArtData, parentId, "Sub-item"));
22828
22828
  };
22829
22829
  const removeNode = (nodeId) => {
22830
22830
  const isTopLevel = !nodes.find((n) => n.id === nodeId)?.parentId;
22831
22831
  if (isTopLevel && !pptx.canRemoveTopLevelNode(layout, topLevelCount)) {
22832
22832
  return;
22833
22833
  }
22834
- applySmartArtData((0, chunkCTL42ZRR_js.dist_exports.removeSmartArtNode)(smartArtData, nodeId));
22834
+ applySmartArtData((0, chunkRHNJ4IU2_js.dist_exports.removeSmartArtNode)(smartArtData, nodeId));
22835
22835
  };
22836
22836
  const moveNode = (nodeId, direction) => {
22837
22837
  const next = pptx.reorder(smartArtData, nodeId, direction);
@@ -22987,7 +22987,7 @@ function TableDataGrid({
22987
22987
  }) {
22988
22988
  const { t } = reactI18next.useTranslation();
22989
22989
  const grid = pptx.buildTableDataGrid(tableElement);
22990
- const { viewportWidth } = chunkK3EGXT6W_js.useIsMobile();
22990
+ const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
22991
22991
  const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
22992
22992
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
22993
22993
  const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
@@ -23399,7 +23399,7 @@ function TableCellColorField({
23399
23399
  disabled,
23400
23400
  onCommit
23401
23401
  }) {
23402
- const hex = chunkCTL42ZRR_js.normalizeHexColor(value, fallback);
23402
+ const hex = chunkRHNJ4IU2_js.normalizeHexColor(value, fallback);
23403
23403
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
23404
23404
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
23405
23405
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -23444,12 +23444,7 @@ function TableCellFormattingPanel({
23444
23444
  }
23445
23445
  return {
23446
23446
  ...row,
23447
- cells: row.cells.map((c, ci) => {
23448
- if (ci !== columnIndex) {
23449
- return c;
23450
- }
23451
- return { ...c, style: { ...cs, ...updates } };
23452
- })
23447
+ cells: row.cells.map((c, ci) => ci === columnIndex ? pptx.withCellStyle(c, updates) : c)
23453
23448
  };
23454
23449
  });
23455
23450
  onUpdateTableData({ rows: newRows });
@@ -23515,7 +23510,7 @@ function TableCellFormattingPanel({
23515
23510
  {
23516
23511
  type: "button",
23517
23512
  disabled: !canEdit,
23518
- className: chunkCTL42ZRR_js.cn(
23513
+ className: chunkRHNJ4IU2_js.cn(
23519
23514
  "px-2 py-1 rounded text-[11px] transition-colors",
23520
23515
  cls,
23521
23516
  cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
@@ -23534,7 +23529,7 @@ function TableCellFormattingPanel({
23534
23529
  {
23535
23530
  type: "button",
23536
23531
  disabled: !canEdit,
23537
- className: chunkCTL42ZRR_js.cn(
23532
+ className: chunkRHNJ4IU2_js.cn(
23538
23533
  "px-2 py-1 rounded text-[11px] transition-colors",
23539
23534
  cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
23540
23535
  ),
@@ -23552,7 +23547,7 @@ function TableCellFormattingPanel({
23552
23547
  {
23553
23548
  type: "button",
23554
23549
  disabled: !canEdit,
23555
- className: chunkCTL42ZRR_js.cn(
23550
+ className: chunkRHNJ4IU2_js.cn(
23556
23551
  "px-2 py-1 rounded text-[11px] transition-colors",
23557
23552
  cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
23558
23553
  ),
@@ -23575,7 +23570,7 @@ function TableCellFormattingPanel({
23575
23570
  DebouncedColorInput,
23576
23571
  {
23577
23572
  disabled: !canEdit,
23578
- value: chunkCTL42ZRR_js.normalizeHexColor(cs[colorKey], "#374151"),
23573
+ value: chunkRHNJ4IU2_js.normalizeHexColor(cs[colorKey], "#374151"),
23579
23574
  className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
23580
23575
  onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
23581
23576
  }
@@ -23585,7 +23580,7 @@ function TableCellFormattingPanel({
23585
23580
  {
23586
23581
  type: "number",
23587
23582
  disabled: !canEdit,
23588
- className: chunkCTL42ZRR_js.cn(INPUT2, "w-14"),
23583
+ className: chunkRHNJ4IU2_js.cn(INPUT2, "w-14"),
23589
23584
  min: 0,
23590
23585
  max: 10,
23591
23586
  value: cs[widthKey] ?? 1,
@@ -23601,7 +23596,7 @@ function TableCellFormattingPanel({
23601
23596
  {
23602
23597
  type: "button",
23603
23598
  disabled: !canEdit,
23604
- className: chunkCTL42ZRR_js.cn(BTN2, "text-center"),
23599
+ className: chunkRHNJ4IU2_js.cn(BTN2, "text-center"),
23605
23600
  onClick: () => {
23606
23601
  const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
23607
23602
  if (newRows) {
@@ -23616,7 +23611,7 @@ function TableCellFormattingPanel({
23616
23611
  {
23617
23612
  type: "button",
23618
23613
  disabled: !canEdit,
23619
- className: chunkCTL42ZRR_js.cn(BTN2, "text-center"),
23614
+ className: chunkRHNJ4IU2_js.cn(BTN2, "text-center"),
23620
23615
  onClick: () => {
23621
23616
  const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
23622
23617
  if (newRows) {
@@ -23631,7 +23626,7 @@ function TableCellFormattingPanel({
23631
23626
  {
23632
23627
  type: "button",
23633
23628
  disabled: !canEdit,
23634
- className: chunkCTL42ZRR_js.cn(BTN2, "text-center"),
23629
+ className: chunkRHNJ4IU2_js.cn(BTN2, "text-center"),
23635
23630
  onClick: () => {
23636
23631
  const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
23637
23632
  if (newRows) {
@@ -23817,7 +23812,7 @@ function TableStyleEditor({
23817
23812
  const { t } = reactI18next.useTranslation();
23818
23813
  const themeColorMap = useThemeColorMap();
23819
23814
  const [activeStyleId, setActiveStyleId] = React97.useState(
23820
- styleId ? (0, chunkCTL42ZRR_js.dist_exports.normalizeTableStyleGuid)(styleId) : ""
23815
+ styleId ? (0, chunkRHNJ4IU2_js.dist_exports.normalizeTableStyleGuid)(styleId) : ""
23821
23816
  );
23822
23817
  const [selectedPart, setSelectedPart] = React97.useState("wholeTbl");
23823
23818
  const entry = activeStyleId ? styleMap?.[activeStyleId] : void 0;
@@ -23838,8 +23833,8 @@ function TableStyleEditor({
23838
23833
  return;
23839
23834
  }
23840
23835
  const nextMap = { ...styleMap ?? {} };
23841
- const created = (0, chunkCTL42ZRR_js.dist_exports.createTableStyleEntry)(nextMap, { styleName: name, basedOn: entry });
23842
- (0, chunkCTL42ZRR_js.dist_exports.addTableStyleToMap)(nextMap, created);
23836
+ const created = (0, chunkRHNJ4IU2_js.dist_exports.createTableStyleEntry)(nextMap, { styleName: name, basedOn: entry });
23837
+ (0, chunkRHNJ4IU2_js.dist_exports.addTableStyleToMap)(nextMap, created);
23843
23838
  onStyleMapChange(nextMap);
23844
23839
  setActiveStyleId(created.styleId);
23845
23840
  onAssignStyle?.(created.styleId);
@@ -23849,7 +23844,7 @@ function TableStyleEditor({
23849
23844
  return;
23850
23845
  }
23851
23846
  const nextMap = { ...styleMap };
23852
- (0, chunkCTL42ZRR_js.dist_exports.deleteTableStyleFromMap)(nextMap, entry.styleId);
23847
+ (0, chunkRHNJ4IU2_js.dist_exports.deleteTableStyleFromMap)(nextMap, entry.styleId);
23853
23848
  onStyleMapChange(nextMap);
23854
23849
  onDeleteStyle(entry.styleId);
23855
23850
  onClose();
@@ -23903,7 +23898,7 @@ function TablePropertiesPanel({
23903
23898
  const updateMergeRows = (rows) => {
23904
23899
  const tableData = { ...td, rows };
23905
23900
  const updates = { tableData };
23906
- const rawXml = (0, chunkCTL42ZRR_js.dist_exports.updateMergeAttrsInRawXml)(tableElement, tableData);
23901
+ const rawXml = (0, chunkRHNJ4IU2_js.dist_exports.updateMergeAttrsInRawXml)(tableElement, tableData);
23907
23902
  if (rawXml) {
23908
23903
  updates.rawXml = rawXml;
23909
23904
  }
@@ -23969,7 +23964,7 @@ function TablePropertiesPanel({
23969
23964
  ] }),
23970
23965
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
23971
23966
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
23972
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkCTL42ZRR_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
23967
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkRHNJ4IU2_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
23973
23968
  "button",
23974
23969
  {
23975
23970
  type: "button",
@@ -24197,7 +24192,7 @@ function ElementInspectorBody({
24197
24192
  box: { width: selectedElement.width, height: selectedElement.height }
24198
24193
  }
24199
24194
  ),
24200
- (0, chunkCTL42ZRR_js.dist_exports.isImageLikeElement)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsx(
24195
+ (0, chunkRHNJ4IU2_js.dist_exports.isImageLikeElement)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsx(
24201
24196
  ImagePropertiesPanel,
24202
24197
  {
24203
24198
  selectedElement,
@@ -24362,7 +24357,7 @@ function CommentMentionTextarea({
24362
24357
  "data-testid": "pptx-comment-mention-option",
24363
24358
  role: "option",
24364
24359
  "aria-selected": index === safeHighlighted,
24365
- className: chunkCTL42ZRR_js.cn(
24360
+ className: chunkRHNJ4IU2_js.cn(
24366
24361
  "block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
24367
24362
  index === safeHighlighted && "bg-accent"
24368
24363
  ),
@@ -24485,7 +24480,7 @@ function InspectorCommentRow({
24485
24480
  return /* @__PURE__ */ jsxRuntime.jsxs(
24486
24481
  "div",
24487
24482
  {
24488
- className: chunkCTL42ZRR_js.cn(
24483
+ className: chunkRHNJ4IU2_js.cn(
24489
24484
  "rounded border border-border bg-card p-2",
24490
24485
  depth > 0 && "ml-3 border-l-2 border-l-primary/40"
24491
24486
  ),
@@ -24498,7 +24493,7 @@ function InspectorCommentRow({
24498
24493
  t("pptx.comments.resolved")
24499
24494
  ] })
24500
24495
  ] }),
24501
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkCTL42ZRR_js.formatCommentTimestamp(comment.createdAt) })
24496
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkRHNJ4IU2_js.formatCommentTimestamp(comment.createdAt) })
24502
24497
  ] }),
24503
24498
  comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
24504
24499
  "button",
@@ -24506,12 +24501,12 @@ function InspectorCommentRow({
24506
24501
  type: "button",
24507
24502
  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",
24508
24503
  title: t("pptx.comments.commentingOn", {
24509
- element: chunkCTL42ZRR_js.getElementLabel(targetElement)
24504
+ element: chunkRHNJ4IU2_js.getElementLabel(targetElement)
24510
24505
  }),
24511
24506
  onClick: () => onSelectElement(targetElement.id),
24512
24507
  children: [
24513
24508
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
24514
- chunkCTL42ZRR_js.getElementLabel(targetElement)
24509
+ chunkRHNJ4IU2_js.getElementLabel(targetElement)
24515
24510
  ]
24516
24511
  }
24517
24512
  ) : /* @__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") })),
@@ -24580,7 +24575,7 @@ function InspectorCommentRow({
24580
24575
  "button",
24581
24576
  {
24582
24577
  type: "button",
24583
- className: chunkCTL42ZRR_js.cn(
24578
+ className: chunkRHNJ4IU2_js.cn(
24584
24579
  "inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
24585
24580
  comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
24586
24581
  ),
@@ -24723,7 +24718,7 @@ function InspectorCommentsSection({
24723
24718
  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: [
24724
24719
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
24725
24720
  t("pptx.comments.commentingOn", {
24726
- element: chunkCTL42ZRR_js.getElementLabel(selectedElement)
24721
+ element: chunkRHNJ4IU2_js.getElementLabel(selectedElement)
24727
24722
  })
24728
24723
  ] }),
24729
24724
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -24734,7 +24729,7 @@ function InspectorCommentsSection({
24734
24729
  authors: commentAuthors,
24735
24730
  rows: 2,
24736
24731
  placeholder: selectedElement ? t("pptx.comments.addOnElement", {
24737
- element: chunkCTL42ZRR_js.getElementLabel(selectedElement)
24732
+ element: chunkRHNJ4IU2_js.getElementLabel(selectedElement)
24738
24733
  }) : t("pptx.comments.addPlaceholder"),
24739
24734
  className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
24740
24735
  onChange: onSetCommentDraft,
@@ -24747,7 +24742,7 @@ function InspectorCommentsSection({
24747
24742
  type: "button",
24748
24743
  onClick: onAddComment,
24749
24744
  disabled: !commentDraft.trim(),
24750
- className: chunkCTL42ZRR_js.cn(
24745
+ className: chunkRHNJ4IU2_js.cn(
24751
24746
  "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]!",
24752
24747
  commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
24753
24748
  ),
@@ -24761,7 +24756,7 @@ function InspectorCommentsSection({
24761
24756
  ] });
24762
24757
  }
24763
24758
  function elementLabel(element) {
24764
- const text = (0, chunkCTL42ZRR_js.dist_exports.hasTextProperties)(element) ? (element.text || "").slice(0, 24) : void 0;
24759
+ const text = (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element) ? (element.text || "").slice(0, 24) : void 0;
24765
24760
  return text || element.type;
24766
24761
  }
24767
24762
  function InspectorElementsTab({
@@ -24788,13 +24783,13 @@ function InspectorElementsTab({
24788
24783
  };
24789
24784
  if (!activeSlide) {
24790
24785
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
24791
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkCTL42ZRR_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24786
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkRHNJ4IU2_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24792
24787
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
24793
24788
  ] });
24794
24789
  }
24795
24790
  const elements = activeSlide.elements || [];
24796
24791
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
24797
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkCTL42ZRR_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24792
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkRHNJ4IU2_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24798
24793
  [...elements].reverse().map((el, reversedIndex) => {
24799
24794
  const index = elements.length - 1 - reversedIndex;
24800
24795
  const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
@@ -24802,7 +24797,7 @@ function InspectorElementsTab({
24802
24797
  "div",
24803
24798
  {
24804
24799
  title: `${el.type} - ${el.id}`,
24805
- className: chunkCTL42ZRR_js.cn(
24800
+ className: chunkRHNJ4IU2_js.cn(
24806
24801
  "flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
24807
24802
  selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
24808
24803
  ),
@@ -24839,7 +24834,7 @@ function InspectorPaneHeader({
24839
24834
  onClose
24840
24835
  }) {
24841
24836
  const { t } = reactI18next.useTranslation();
24842
- const { viewportWidth } = chunkK3EGXT6W_js.useIsMobile();
24837
+ const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
24843
24838
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
24844
24839
  const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
24845
24840
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -24862,7 +24857,7 @@ function InspectorPaneHeader({
24862
24857
  type: "button",
24863
24858
  title: t(labelKey),
24864
24859
  style: touchBtnStyle,
24865
- className: chunkCTL42ZRR_js.cn(
24860
+ className: chunkRHNJ4IU2_js.cn(
24866
24861
  "flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
24867
24862
  activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
24868
24863
  ),
@@ -24976,7 +24971,7 @@ function CustomPropertiesBlock({
24976
24971
  "button",
24977
24972
  {
24978
24973
  type: "button",
24979
- className: chunkCTL42ZRR_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
24974
+ className: chunkRHNJ4IU2_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
24980
24975
  onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
24981
24976
  children: "\xD7"
24982
24977
  }
@@ -25304,7 +25299,7 @@ function PresentationSettingsCard({
25304
25299
  min: 1,
25305
25300
  max: 16,
25306
25301
  disabled: !canEdit,
25307
- className: chunkCTL42ZRR_js.cn(INPUT2, "w-20"),
25302
+ className: chunkRHNJ4IU2_js.cn(INPUT2, "w-20"),
25308
25303
  value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
25309
25304
  onChange: (e) => onUpdate({
25310
25305
  printProperties: pptx.withSlidesPerPage(
@@ -25392,14 +25387,14 @@ function SlideThemeOverridePanel({
25392
25387
  const translate = React97.useCallback((key) => t(key), [t]);
25393
25388
  const override = activeSlide?.clrMapOverride;
25394
25389
  const isOverrideActive = override !== void 0;
25395
- const targetSlotOptions = React97.useMemo(() => [...chunkCTL42ZRR_js.dist_exports.THEME_COLOR_SCHEME_KEYS], []);
25390
+ const targetSlotOptions = React97.useMemo(() => [...chunkRHNJ4IU2_js.dist_exports.THEME_COLOR_SCHEME_KEYS], []);
25396
25391
  const commitOverride = React97.useCallback(
25397
25392
  (nextOverride) => {
25398
25393
  if (!activeSlide || !theme?.colorScheme) {
25399
25394
  onUpdateSlide({ clrMapOverride: nextOverride });
25400
25395
  return;
25401
25396
  }
25402
- const nextSlide = (0, chunkCTL42ZRR_js.dist_exports.applyThemeOverrideToSlide)(activeSlide, theme.colorScheme, nextOverride);
25397
+ const nextSlide = (0, chunkRHNJ4IU2_js.dist_exports.applyThemeOverrideToSlide)(activeSlide, theme.colorScheme, nextOverride);
25403
25398
  onUpdateSlide({
25404
25399
  clrMapOverride: nextSlide.clrMapOverride,
25405
25400
  backgroundColor: nextSlide.backgroundColor,
@@ -25412,8 +25407,8 @@ function SlideThemeOverridePanel({
25412
25407
  (enabled) => {
25413
25408
  if (enabled) {
25414
25409
  const defaultMap = {};
25415
- for (const key of chunkCTL42ZRR_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
25416
- defaultMap[key] = chunkCTL42ZRR_js.dist_exports.DEFAULT_COLOR_MAP[key];
25410
+ for (const key of chunkRHNJ4IU2_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
25411
+ defaultMap[key] = chunkRHNJ4IU2_js.dist_exports.DEFAULT_COLOR_MAP[key];
25417
25412
  }
25418
25413
  commitOverride(defaultMap);
25419
25414
  } else {
@@ -25426,9 +25421,9 @@ function SlideThemeOverridePanel({
25426
25421
  (alias, targetSlot) => {
25427
25422
  const current = override ?? {};
25428
25423
  const next = { ...current, [alias]: targetSlot };
25429
- for (const key of chunkCTL42ZRR_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
25424
+ for (const key of chunkRHNJ4IU2_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
25430
25425
  if (!next[key]) {
25431
- next[key] = chunkCTL42ZRR_js.dist_exports.DEFAULT_COLOR_MAP[key];
25426
+ next[key] = chunkRHNJ4IU2_js.dist_exports.DEFAULT_COLOR_MAP[key];
25432
25427
  }
25433
25428
  }
25434
25429
  commitOverride(next);
@@ -25460,8 +25455,8 @@ function SlideThemeOverridePanel({
25460
25455
  ),
25461
25456
  t("pptx.themeOverride.enableOverride")
25462
25457
  ] }),
25463
- isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: chunkCTL42ZRR_js.dist_exports.COLOR_MAP_ALIAS_KEYS.map((alias) => {
25464
- const currentTarget = override[alias] ?? chunkCTL42ZRR_js.dist_exports.DEFAULT_COLOR_MAP[alias];
25458
+ isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: chunkRHNJ4IU2_js.dist_exports.COLOR_MAP_ALIAS_KEYS.map((alias) => {
25459
+ const currentTarget = override[alias] ?? chunkRHNJ4IU2_js.dist_exports.DEFAULT_COLOR_MAP[alias];
25465
25460
  const resolvedHex = resolveSlotColor(currentTarget);
25466
25461
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-[11px]", children: [
25467
25462
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-24 truncate text-muted-foreground", title: ALIAS_LABELS[alias], children: ALIAS_LABELS[alias] }),
@@ -25540,7 +25535,7 @@ function TransitionPreview({
25540
25535
  const { t } = reactI18next.useTranslation();
25541
25536
  const durationMs = transition.durationMs ?? 500;
25542
25537
  const animations = React97.useMemo(
25543
- () => chunkK3EGXT6W_js.getSlideTransitionAnimations(
25538
+ () => chunkMFGD7XVJ_js.getSlideTransitionAnimations(
25544
25539
  transition.type,
25545
25540
  durationMs,
25546
25541
  transition.direction,
@@ -25609,7 +25604,7 @@ function TransitionPreview({
25609
25604
  ]
25610
25605
  }
25611
25606
  ),
25612
- /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkK3EGXT6W_js.SLIDE_TRANSITION_KEYFRAMES })
25607
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkMFGD7XVJ_js.SLIDE_TRANSITION_KEYFRAMES })
25613
25608
  ] });
25614
25609
  }
25615
25610
  var DEFAULT_DURATION_MS = 320;
@@ -25626,13 +25621,13 @@ function SlideTransitionSection({
25626
25621
  return null;
25627
25622
  }
25628
25623
  const transitionType = activeSlide.transition?.type ?? "none";
25629
- const validDirections = chunkCTL42ZRR_js.dist_exports.TRANSITION_VALID_DIRECTIONS[transitionType];
25624
+ const validDirections = chunkRHNJ4IU2_js.dist_exports.TRANSITION_VALID_DIRECTIONS[transitionType];
25630
25625
  const hasDirections = validDirections !== void 0 && validDirections.length > 0;
25631
25626
  const usesOrientation = pptx.TRANSITION_ORIENTATION_TYPES.has(transitionType);
25632
25627
  const isWheel = transitionType === "wheel";
25633
25628
  const isMorph = transitionType === "morph";
25634
- const patternOptions = chunkCTL42ZRR_js.dist_exports.TRANSITION_PATTERN_OPTIONS[transitionType];
25635
- const hasThruBlk = chunkCTL42ZRR_js.dist_exports.TRANSITION_THRUBLK_TYPES.has(transitionType);
25629
+ const patternOptions = chunkRHNJ4IU2_js.dist_exports.TRANSITION_PATTERN_OPTIONS[transitionType];
25630
+ const hasThruBlk = chunkRHNJ4IU2_js.dist_exports.TRANSITION_THRUBLK_TYPES.has(transitionType);
25636
25631
  return /* @__PURE__ */ jsxRuntime.jsxs(
25637
25632
  "div",
25638
25633
  {
@@ -25652,7 +25647,7 @@ function SlideTransitionSection({
25652
25647
  type: e.target.value
25653
25648
  }),
25654
25649
  className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
25655
- children: chunkCTL42ZRR_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
25650
+ children: chunkRHNJ4IU2_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
25656
25651
  }
25657
25652
  )
25658
25653
  ] }),
@@ -25868,7 +25863,7 @@ function TagsSection({
25868
25863
  "button",
25869
25864
  {
25870
25865
  type: "button",
25871
- className: chunkCTL42ZRR_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
25866
+ className: chunkRHNJ4IU2_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
25872
25867
  title: t("pptx.tags.deleteTag"),
25873
25868
  onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
25874
25869
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
@@ -25997,7 +25992,7 @@ function PresentationPropertiesPanel({
25997
25992
  canEdit
25998
25993
  }
25999
25994
  ),
26000
- activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkCTL42ZRR_js.cn(CARD2, "space-y-1"), children: [
25995
+ activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkRHNJ4IU2_js.cn(CARD2, "space-y-1"), children: [
26001
25996
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
26002
25997
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
26003
25998
  activeSlide.elements?.length ?? 0,
@@ -26018,14 +26013,14 @@ function SlideBackgroundPanel({
26018
26013
  const { t } = reactI18next.useTranslation();
26019
26014
  const bgImageInputRef = React97.useRef(null);
26020
26015
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
26021
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkCTL42ZRR_js.cn(CARD2, "space-y-2"), children: [
26016
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkRHNJ4IU2_js.cn(CARD2, "space-y-2"), children: [
26022
26017
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
26023
26018
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
26024
26019
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
26025
26020
  /* @__PURE__ */ jsxRuntime.jsx(
26026
26021
  DebouncedColorInput,
26027
26022
  {
26028
- value: chunkCTL42ZRR_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
26023
+ value: chunkRHNJ4IU2_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
26029
26024
  disabled: !canEdit,
26030
26025
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
26031
26026
  onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
@@ -26064,7 +26059,7 @@ function SlideBackgroundPanel({
26064
26059
  "button",
26065
26060
  {
26066
26061
  type: "button",
26067
- className: chunkCTL42ZRR_js.cn(BTN2, "flex-1 text-center"),
26062
+ className: chunkRHNJ4IU2_js.cn(BTN2, "flex-1 text-center"),
26068
26063
  disabled: !canEdit,
26069
26064
  onClick: () => bgImageInputRef.current?.click(),
26070
26065
  children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
@@ -26097,7 +26092,7 @@ function SlideBackgroundPanel({
26097
26092
  "button",
26098
26093
  {
26099
26094
  type: "button",
26100
- className: chunkCTL42ZRR_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
26095
+ className: chunkRHNJ4IU2_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
26101
26096
  disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
26102
26097
  onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
26103
26098
  children: t("pptx.slideBackground.clearBackground")
@@ -26141,14 +26136,14 @@ function TemplateBackgroundCard({
26141
26136
  t("pptx.master.layout"),
26142
26137
  t("pptx.master.master")
26143
26138
  );
26144
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkCTL42ZRR_js.cn(CARD2, "space-y-2"), children: [
26139
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkRHNJ4IU2_js.cn(CARD2, "space-y-2"), children: [
26145
26140
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
26146
26141
  rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
26147
26142
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
26148
26143
  /* @__PURE__ */ jsxRuntime.jsx(
26149
26144
  DebouncedColorInput,
26150
26145
  {
26151
- value: chunkCTL42ZRR_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
26146
+ value: chunkRHNJ4IU2_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
26152
26147
  disabled: !canEdit,
26153
26148
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
26154
26149
  onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
@@ -26161,7 +26156,7 @@ function TemplateBackgroundCard({
26161
26156
  /* @__PURE__ */ jsxRuntime.jsx(
26162
26157
  DebouncedColorInput,
26163
26158
  {
26164
- value: chunkCTL42ZRR_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
26159
+ value: chunkRHNJ4IU2_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
26165
26160
  disabled: !canEdit,
26166
26161
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
26167
26162
  onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
@@ -26272,7 +26267,7 @@ function InspectorPane(props) {
26272
26267
  } = props;
26273
26268
  const hasSelection = selectedElement !== null;
26274
26269
  const { t } = reactI18next.useTranslation();
26275
- const { dragY, handlers: dragHandlers } = chunkK3EGXT6W_js.useSheetDismissDrag(onClose);
26270
+ const { dragY, handlers: dragHandlers } = chunkMFGD7XVJ_js.useSheetDismissDrag(onClose);
26276
26271
  const {
26277
26272
  animationPanelHeight,
26278
26273
  effectiveThemeOptions,
@@ -26294,7 +26289,7 @@ function InspectorPane(props) {
26294
26289
  "div",
26295
26290
  {
26296
26291
  "data-pptx-chrome": "inspector",
26297
- className: chunkCTL42ZRR_js.cn(
26292
+ className: chunkRHNJ4IU2_js.cn(
26298
26293
  // Shared styles
26299
26294
  "bg-background flex flex-col text-xs text-foreground shadow-xl",
26300
26295
  // Mobile: absolute bottom sheet overlay sized via dvh so it
@@ -26685,7 +26680,7 @@ function PresentationTouchControls({
26685
26680
  hideNavigation = false
26686
26681
  }) {
26687
26682
  const { t } = reactI18next.useTranslation();
26688
- const { isTouchDevice } = chunkK3EGXT6W_js.useIsMobile();
26683
+ const { isTouchDevice } = chunkMFGD7XVJ_js.useIsMobile();
26689
26684
  if (!isTouchDevice) {
26690
26685
  return null;
26691
26686
  }
@@ -26990,13 +26985,13 @@ function PrintPreview({
26990
26985
  }) {
26991
26986
  const { t } = reactI18next.useTranslation();
26992
26987
  const pages = React97.useMemo(
26993
- () => chunkCTL42ZRR_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
26988
+ () => chunkRHNJ4IU2_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
26994
26989
  [slideIndices, slidesPerPage, orientation]
26995
26990
  );
26996
- const printable = React97.useMemo(() => chunkCTL42ZRR_js.getPrintableArea(orientation), [orientation]);
26991
+ const printable = React97.useMemo(() => chunkRHNJ4IU2_js.getPrintableArea(orientation), [orientation]);
26997
26992
  const visiblePages = pages.slice(0, maxPages);
26998
26993
  const isThreePerPage = slidesPerPage === 3;
26999
- const noteLineCount = chunkCTL42ZRR_js.generateNoteLineCount();
26994
+ const noteLineCount = chunkRHNJ4IU2_js.generateNoteLineCount();
27000
26995
  const scaledW = printable.width * PREVIEW_SCALE3;
27001
26996
  const scaledH = printable.height * PREVIEW_SCALE3;
27002
26997
  const noteAreaFraction = 0.5;
@@ -27331,11 +27326,11 @@ function PrintDialog({
27331
27326
  defaultFrameSlides
27332
27327
  }) {
27333
27328
  const { t } = reactI18next.useTranslation();
27334
- const { panelStyle, handlers: dragHandlers } = chunkK3EGXT6W_js.useModalDismissDrag(onClose);
27335
- const { viewportWidth } = chunkK3EGXT6W_js.useIsMobile();
27329
+ const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
27330
+ const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
27336
27331
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
27337
27332
  const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
27338
- const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkK3EGXT6W_js.useViewerOptionsContext());
27333
+ const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkMFGD7XVJ_js.useViewerOptionsContext());
27339
27334
  const [printWhat, setPrintWhat] = React97.useState(printOptionDefaults?.printWhat ?? "slides");
27340
27335
  const [orientation, setOrientation] = React97.useState("landscape");
27341
27336
  const [colorMode, setColorMode] = React97.useState(
@@ -27838,14 +27833,14 @@ function BroadcastDialog({
27838
27833
  defaultServerUrl
27839
27834
  }) {
27840
27835
  const { t } = reactI18next.useTranslation();
27841
- const collab = chunkK3EGXT6W_js.useCollaboration();
27836
+ const collab = chunkMFGD7XVJ_js.useCollaboration();
27842
27837
  const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
27843
27838
  const [roomId, setRoomId] = React97.useState("");
27844
27839
  const [userName, setUserName] = React97.useState("");
27845
27840
  const [serverUrl, setServerUrl] = React97.useState("");
27846
27841
  const [copied, setCopied] = React97.useState(false);
27847
27842
  const dialogRef = React97.useRef(null);
27848
- const { panelStyle, handlers: dragHandlers } = chunkK3EGXT6W_js.useModalDismissDrag(onClose);
27843
+ const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
27849
27844
  useModalFocus(open, dialogRef, onClose);
27850
27845
  React97.useEffect(() => {
27851
27846
  if (open && !isBroadcasting) {
@@ -28148,7 +28143,7 @@ function ActiveSessionView({
28148
28143
  onCopyRoomId,
28149
28144
  onStopCollaboration
28150
28145
  }) {
28151
- const { t } = reactI18next.useTranslation(), viewerOptions = chunkK3EGXT6W_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({
28146
+ const { t } = reactI18next.useTranslation(), viewerOptions = chunkMFGD7XVJ_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({
28152
28147
  localUserName: activeCollaboration?.userName ?? collab.config.userName,
28153
28148
  localUserInitials: viewerOptions.general.userInitials,
28154
28149
  localUserColor: collab.config.userColor,
@@ -28247,7 +28242,7 @@ function StartSessionForm({
28247
28242
  onRetry
28248
28243
  }) {
28249
28244
  const { t } = reactI18next.useTranslation();
28250
- const { viewportWidth } = chunkK3EGXT6W_js.useIsMobile();
28245
+ const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
28251
28246
  const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
28252
28247
  const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
28253
28248
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
@@ -28381,7 +28376,7 @@ function ShareDialog({
28381
28376
  defaultUserName,
28382
28377
  defaultServerUrl
28383
28378
  }) {
28384
- const collab = chunkK3EGXT6W_js.useCollaboration();
28379
+ const collab = chunkMFGD7XVJ_js.useCollaboration();
28385
28380
  const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
28386
28381
  const { t } = reactI18next.useTranslation();
28387
28382
  const [roomId, setRoomId] = React97.useState(defaultRoomId ?? "");
@@ -28391,9 +28386,9 @@ function ShareDialog({
28391
28386
  const [invitation, setInvitation] = React97.useState("");
28392
28387
  const [copied, setCopied] = React97.useState(false);
28393
28388
  const dialogRef = React97.useRef(null);
28394
- const { panelStyle, handlers: dragHandlers } = chunkK3EGXT6W_js.useModalDismissDrag(onClose);
28389
+ const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
28395
28390
  useModalFocus(open, dialogRef, onClose);
28396
- const { viewportWidth, viewportHeight } = chunkK3EGXT6W_js.useIsMobile();
28391
+ const { viewportWidth, viewportHeight } = chunkMFGD7XVJ_js.useIsMobile();
28397
28392
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
28398
28393
  const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
28399
28394
  const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
@@ -28676,12 +28671,12 @@ function HyperlinkEditDialog({
28676
28671
  onCancel
28677
28672
  }) {
28678
28673
  const { t } = reactI18next.useTranslation();
28679
- const { panelStyle, handlers: dragHandlers } = chunkK3EGXT6W_js.useModalDismissDrag(onCancel);
28674
+ const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onCancel);
28680
28675
  const inputRef = React97.useRef(null);
28681
- const detectedType = chunkK3EGXT6W_js.detectTargetType(initialUrl, initialAction);
28682
- const emailParts = chunkK3EGXT6W_js.parseEmailUrl(initialUrl || "");
28683
- const detectedSlide = chunkK3EGXT6W_js.parseSlideFromUrl(initialUrl, initialAction);
28684
- const detectedVerb = initialAction ? chunkK3EGXT6W_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
28676
+ const detectedType = chunkMFGD7XVJ_js.detectTargetType(initialUrl, initialAction);
28677
+ const emailParts = chunkMFGD7XVJ_js.parseEmailUrl(initialUrl || "");
28678
+ const detectedSlide = chunkMFGD7XVJ_js.parseSlideFromUrl(initialUrl, initialAction);
28679
+ const detectedVerb = initialAction ? chunkMFGD7XVJ_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
28685
28680
  const [targetType, setTargetType] = React97.useState(detectedType);
28686
28681
  const [url, setUrl] = React97.useState(
28687
28682
  detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
@@ -28712,7 +28707,7 @@ function HyperlinkEditDialog({
28712
28707
  actionVerb
28713
28708
  });
28714
28709
  };
28715
- const tabCls = (active) => chunkCTL42ZRR_js.cn(
28710
+ const tabCls = (active) => chunkRHNJ4IU2_js.cn(
28716
28711
  "px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
28717
28712
  active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
28718
28713
  );
@@ -28949,7 +28944,7 @@ function ViewerBottomPanels({
28949
28944
  notesStyle,
28950
28945
  onNotesHeightChange
28951
28946
  }) {
28952
- const { isHidden } = chunkK3EGXT6W_js.useToolbarVisibility(hiddenActions);
28947
+ const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(hiddenActions);
28953
28948
  const customization = useViewerCustomizationContext();
28954
28949
  const showNotes = pptx.isPanelVisible(customization, "notes");
28955
28950
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -29295,7 +29290,7 @@ function ViewerToolbarSection(props) {
29295
29290
  [activeSlide, propertyHandlers]
29296
29291
  );
29297
29292
  const scopedLayoutOptions = React97__default.default.useMemo(
29298
- () => chunkK3EGXT6W_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
29293
+ () => chunkMFGD7XVJ_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
29299
29294
  [s.layoutOptions, activeSlide]
29300
29295
  );
29301
29296
  const handleResetSlide = React97.useCallback(() => {
@@ -29699,7 +29694,7 @@ function ViewerToolbarSection(props) {
29699
29694
  isCommentsPanelOpen: s.isInspectorPaneOpen,
29700
29695
  slideCommentCount: activeSlide?.comments?.length ?? 0,
29701
29696
  formatPainterActive: s.formatPainterActive,
29702
- canActivateFormatPainter: chunkCTL42ZRR_js.hasCopyableFormat(selectedElement),
29697
+ canActivateFormatPainter: chunkRHNJ4IU2_js.hasCopyableFormat(selectedElement),
29703
29698
  onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
29704
29699
  isSelectionPaneOpen: s.isSelectionPaneOpen,
29705
29700
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -29786,7 +29781,7 @@ function EquationEditorDialog({
29786
29781
  existingOmml
29787
29782
  }) {
29788
29783
  const { t } = reactI18next.useTranslation();
29789
- const { panelStyle, handlers: dragHandlers } = chunkK3EGXT6W_js.useModalDismissDrag(onClose);
29784
+ const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
29790
29785
  const initialLatex = React97.useMemo(() => {
29791
29786
  if (!existingOmml) {
29792
29787
  return "";
@@ -29908,7 +29903,7 @@ function EquationEditorDialog({
29908
29903
  {
29909
29904
  type: "button",
29910
29905
  onClick: () => handleTemplateClick(tmpl.latex),
29911
- className: chunkCTL42ZRR_js.cn(
29906
+ className: chunkRHNJ4IU2_js.cn(
29912
29907
  "flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
29913
29908
  latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
29914
29909
  ),
@@ -29974,7 +29969,7 @@ function getPreviewForLayout(layout) {
29974
29969
  transform: `scale(${scale})`,
29975
29970
  transformOrigin: "top left"
29976
29971
  },
29977
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkK3EGXT6W_js.SmartArtRenderer, { element: pptx.buildSmartArtPreviewElement(layout) })
29972
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.SmartArtRenderer, { element: pptx.buildSmartArtPreviewElement(layout) })
29978
29973
  }
29979
29974
  )
29980
29975
  }
@@ -29986,7 +29981,7 @@ function InsertSmartArtDialog({
29986
29981
  onInsert
29987
29982
  }) {
29988
29983
  const { t } = reactI18next.useTranslation();
29989
- const { panelStyle, handlers: dragHandlers } = chunkK3EGXT6W_js.useModalDismissDrag(onClose);
29984
+ const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
29990
29985
  const [activeCategory, setActiveCategory] = React97.useState("list");
29991
29986
  const [selectedLayout, setSelectedLayout] = React97.useState(null);
29992
29987
  const dialogRef = React97.useRef(null);
@@ -30067,7 +30062,7 @@ function InsertSmartArtDialog({
30067
30062
  setActiveCategory(cat.id);
30068
30063
  setSelectedLayout(null);
30069
30064
  },
30070
- className: chunkCTL42ZRR_js.cn(
30065
+ className: chunkRHNJ4IU2_js.cn(
30071
30066
  "w-full text-left px-3 py-1.5 text-xs transition-colors",
30072
30067
  activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
30073
30068
  ),
@@ -30095,7 +30090,7 @@ function InsertSmartArtDialog({
30095
30090
  onInsert(preset.layout, preset.defaultItems);
30096
30091
  onClose();
30097
30092
  },
30098
- className: chunkCTL42ZRR_js.cn(
30093
+ className: chunkRHNJ4IU2_js.cn(
30099
30094
  "flex flex-col items-center gap-1 p-2 rounded border transition-colors",
30100
30095
  selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
30101
30096
  ),
@@ -30590,11 +30585,11 @@ function PresentationStage({
30590
30585
  })
30591
30586
  },
30592
30587
  children: [
30593
- /* @__PURE__ */ jsxRuntime.jsx(chunkK3EGXT6W_js.SlideBackgroundImageLayer, { slide: activeSlide }),
30588
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.SlideBackgroundImageLayer, { slide: activeSlide }),
30594
30589
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
30595
30590
  presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
30596
30591
  templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
30597
- chunkK3EGXT6W_js.ElementRenderer,
30592
+ chunkMFGD7XVJ_js.ElementRenderer,
30598
30593
  {
30599
30594
  element,
30600
30595
  activeSlide,
@@ -30631,7 +30626,7 @@ function PresentationStage({
30631
30626
  `tpl-${element.id}`
30632
30627
  )),
30633
30628
  activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
30634
- chunkK3EGXT6W_js.ElementRenderer,
30629
+ chunkMFGD7XVJ_js.ElementRenderer,
30635
30630
  {
30636
30631
  element,
30637
30632
  activeSlide,
@@ -30752,8 +30747,8 @@ function ViewerCanvasArea(props) {
30752
30747
  aiCanvasActive = false
30753
30748
  } = props;
30754
30749
  const { t } = reactI18next.useTranslation();
30755
- const { isHidden } = chunkK3EGXT6W_js.useToolbarVisibility(hiddenActions);
30756
- const viewerOptions = chunkK3EGXT6W_js.useViewerOptionsContext();
30750
+ const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(hiddenActions);
30751
+ const viewerOptions = chunkMFGD7XVJ_js.useViewerOptionsContext();
30757
30752
  const outlineAuthoring = useOutlineAuthoring({
30758
30753
  state: s,
30759
30754
  updateElement: canvasHandlers.handleUpdateSmartArtElement,
@@ -30782,7 +30777,7 @@ function ViewerCanvasArea(props) {
30782
30777
  ${url}`)) {
30783
30778
  return;
30784
30779
  }
30785
- chunkCTL42ZRR_js.safeOpenUrl(url);
30780
+ chunkRHNJ4IU2_js.safeOpenUrl(url);
30786
30781
  },
30787
30782
  [viewerOptions, t]
30788
30783
  );
@@ -30803,9 +30798,9 @@ ${url}`)) {
30803
30798
  );
30804
30799
  const handleHyperlinkClick = React97.useCallback(
30805
30800
  (url) => {
30806
- if (chunkCTL42ZRR_js.isPpactionUrl(url)) {
30801
+ if (chunkRHNJ4IU2_js.isPpactionUrl(url)) {
30807
30802
  if (mode === "present") {
30808
- const parsed = chunkCTL42ZRR_js.parsePpactionUrl(url);
30803
+ const parsed = chunkRHNJ4IU2_js.parsePpactionUrl(url);
30809
30804
  if (parsed) {
30810
30805
  const action = {
30811
30806
  action: parsed.action,
@@ -30890,7 +30885,7 @@ ${url}`)) {
30890
30885
  s.setActiveSlideIndex((i) => Math.max(0, i - 1));
30891
30886
  }
30892
30887
  }, [mode, presentation, s]);
30893
- const swipe = chunkK3EGXT6W_js.useSwipeNavigation({
30888
+ const swipe = chunkMFGD7XVJ_js.useSwipeNavigation({
30894
30889
  enabled: swipeEnabled,
30895
30890
  onNext: handleSwipeNext,
30896
30891
  onPrev: handleSwipePrev
@@ -30964,7 +30959,7 @@ ${url}`)) {
30964
30959
  ),
30965
30960
  children: (stageScale) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
30966
30961
  presentation.transitionOverlay && slides[presentation.transitionOverlay.outgoingSlideIndex] && /* @__PURE__ */ jsxRuntime.jsx(
30967
- chunkK3EGXT6W_js.PresentationTransitionOverlay,
30962
+ chunkMFGD7XVJ_js.PresentationTransitionOverlay,
30968
30963
  {
30969
30964
  outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
30970
30965
  templateElements,
@@ -31075,14 +31070,14 @@ ${url}`)) {
31075
31070
  outlineAuthoring,
31076
31071
  collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31077
31072
  /* @__PURE__ */ jsxRuntime.jsx(
31078
- chunkK3EGXT6W_js.RemoteSelectionOverlay,
31073
+ chunkMFGD7XVJ_js.RemoteSelectionOverlay,
31079
31074
  {
31080
31075
  elements: effectiveSlide?.elements ?? [],
31081
31076
  activeSlideIndex
31082
31077
  }
31083
31078
  ),
31084
31079
  /* @__PURE__ */ jsxRuntime.jsx(
31085
- chunkK3EGXT6W_js.CollaborationCursorOverlay,
31080
+ chunkMFGD7XVJ_js.CollaborationCursorOverlay,
31086
31081
  {
31087
31082
  activeSlideIndex,
31088
31083
  canvasWidth: canvasSize.width,
@@ -31222,7 +31217,7 @@ function useTableStyleMapHandlers(input) {
31222
31217
  var AiChatPanel = React97.lazy(async () => {
31223
31218
  const [{ useChat }, { default: Panel }] = await Promise.all([
31224
31219
  import('@ai-sdk/react'),
31225
- import('./AiChatPanel-AK6X4NJD.js')
31220
+ import('./AiChatPanel-6VWCT6NE.js')
31226
31221
  ]);
31227
31222
  function BoundAiChatPanel(props) {
31228
31223
  return /* @__PURE__ */ jsxRuntime.jsx(Panel, { ...props, useChat });
@@ -31383,7 +31378,7 @@ function MobileDismissSheet({
31383
31378
  children
31384
31379
  }) {
31385
31380
  const { t } = reactI18next.useTranslation();
31386
- const { dragY, handlers } = chunkK3EGXT6W_js.useSheetDismissDrag(onClose);
31381
+ const { dragY, handlers } = chunkMFGD7XVJ_js.useSheetDismissDrag(onClose);
31387
31382
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31388
31383
  /* @__PURE__ */ jsxRuntime.jsx(
31389
31384
  "button",
@@ -31652,7 +31647,7 @@ function ThemeThumbnail({
31652
31647
  {
31653
31648
  type: "button",
31654
31649
  onClick,
31655
- className: chunkCTL42ZRR_js.cn(
31650
+ className: chunkRHNJ4IU2_js.cn(
31656
31651
  "group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
31657
31652
  selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
31658
31653
  ),
@@ -31838,7 +31833,7 @@ function ViewerSidePanels(props) {
31838
31833
  const customization = useViewerCustomizationContext();
31839
31834
  const inspectorOpen = (mode === "edit" || mode === "master") && s.isInspectorPaneOpen && pptx.isPanelVisible(customization, "inspector");
31840
31835
  const currentBuiltInTheme = BUILT_IN_THEMES.find(
31841
- (candidate) => (0, chunkCTL42ZRR_js.dist_exports.themeColorSchemesEqual)(s.theme?.colorScheme, candidate.colorScheme)
31836
+ (candidate) => (0, chunkRHNJ4IU2_js.dist_exports.themeColorSchemesEqual)(s.theme?.colorScheme, candidate.colorScheme)
31842
31837
  ) ?? null;
31843
31838
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31844
31839
  inspectorOpen && onResizeRight && /* @__PURE__ */ jsxRuntime.jsx(ResizeHandle, { direction: "horizontal", onResize: onResizeRight }),
@@ -32124,7 +32119,7 @@ function ViewerMainContent(props) {
32124
32119
  );
32125
32120
  const layoutGalleryAnchorRef = React97.useRef(null);
32126
32121
  const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
32127
- return /* @__PURE__ */ jsxRuntime.jsx(chunkK3EGXT6W_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
32122
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
32128
32123
  showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
32129
32124
  /* @__PURE__ */ jsxRuntime.jsx(
32130
32125
  SlidesPaneSidebar,
@@ -32614,7 +32609,7 @@ function MobileChromeOverlay(props) {
32614
32609
  slideSectionGroups,
32615
32610
  canEdit,
32616
32611
  commentCount
32617
- } = props, { keyboardInset, isKeyboardOpen } = chunkK3EGXT6W_js.useKeyboardInsets(), activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
32612
+ } = props, { keyboardInset, isKeyboardOpen } = chunkMFGD7XVJ_js.useKeyboardInsets(), activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
32618
32613
  s.setIsSlidesPaneOpen(false);
32619
32614
  s.setIsInspectorPaneOpen(false);
32620
32615
  s.setIsSlideNotesCollapsed(true);
@@ -32820,7 +32815,7 @@ function AddinTable({
32820
32815
  "tr",
32821
32816
  {
32822
32817
  onClick: () => onSelect(row.id),
32823
- className: chunkCTL42ZRR_js.cn(
32818
+ className: chunkRHNJ4IU2_js.cn(
32824
32819
  "cursor-pointer border-b border-border/40 transition-colors",
32825
32820
  selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
32826
32821
  ),
@@ -32887,18 +32882,18 @@ function ControlRow({
32887
32882
  onOptionChange: emitChange
32888
32883
  }) {
32889
32884
  const { t } = reactI18next.useTranslation();
32890
- const { viewportWidth } = chunkK3EGXT6W_js.useIsMobile();
32885
+ const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
32891
32886
  const fieldMinHeight = pptx.getDensePanelTouchTargetPx(viewportWidth);
32892
32887
  const value = readValue(options, control);
32893
32888
  const label = t(control.labelKey);
32894
32889
  const info = control.infoKey ? /* @__PURE__ */ jsxRuntime.jsx(InfoTip, { text: t(control.infoKey) }) : null;
32895
- const rowClass = chunkCTL42ZRR_js.cn("flex items-center justify-between gap-3 py-1.5", control.indent && "pl-6");
32890
+ const rowClass = chunkRHNJ4IU2_js.cn("flex items-center justify-between gap-3 py-1.5", control.indent && "pl-6");
32896
32891
  const rowStyle = { minHeight: fieldMinHeight };
32897
32892
  const locked = control.readOnly === true;
32898
32893
  const lockedTitle = locked ? t("pptx.options.lockedByHost") : void 0;
32899
32894
  const onOptionChange = locked ? IGNORE_CHANGE : emitChange;
32900
32895
  if (control.kind === "toggle") {
32901
- return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: chunkCTL42ZRR_js.cn(rowClass, "cursor-pointer select-none"), style: rowStyle, children: [
32896
+ return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: chunkRHNJ4IU2_js.cn(rowClass, "cursor-pointer select-none"), style: rowStyle, children: [
32902
32897
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-foreground", children: [
32903
32898
  label,
32904
32899
  info
@@ -33050,7 +33045,7 @@ function CommandList({
33050
33045
  role: "option",
33051
33046
  "aria-selected": selectedId === id,
33052
33047
  onClick: () => onSelect(id),
33053
- className: chunkCTL42ZRR_js.cn(
33048
+ className: chunkRHNJ4IU2_js.cn(
33054
33049
  "flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
33055
33050
  selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
33056
33051
  ),
@@ -33194,7 +33189,7 @@ function OptionsRibbonPane({
33194
33189
  return /* @__PURE__ */ jsxRuntime.jsxs(
33195
33190
  "label",
33196
33191
  {
33197
- className: chunkCTL42ZRR_js.cn(
33192
+ className: chunkRHNJ4IU2_js.cn(
33198
33193
  "flex items-center gap-2 rounded px-2 py-1.5",
33199
33194
  isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
33200
33195
  ),
@@ -33228,7 +33223,7 @@ function OptionsRibbonPane({
33228
33223
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
33229
33224
  "div",
33230
33225
  {
33231
- className: chunkCTL42ZRR_js.cn(
33226
+ className: chunkRHNJ4IU2_js.cn(
33232
33227
  "flex items-center justify-between gap-3 rounded px-3 py-2",
33233
33228
  i % 2 === 0 ? "bg-muted/60" : ""
33234
33229
  ),
@@ -33249,7 +33244,7 @@ async function exportAiChatLogs(options) {
33249
33244
  chats,
33250
33245
  { format: options?.format, detailed: options?.detailed, now: options?.now },
33251
33246
  (filename, content, mime) => {
33252
- chunkK3EGXT6W_js.downloadBlob(new Blob([content], { type: mime }), filename);
33247
+ chunkMFGD7XVJ_js.downloadBlob(new Blob([content], { type: mime }), filename);
33253
33248
  }
33254
33249
  );
33255
33250
  }
@@ -33357,7 +33352,7 @@ function SettingsAppearanceTab({
33357
33352
  type: "button",
33358
33353
  onClick: () => onSelectTheme(entry.key),
33359
33354
  "aria-pressed": isActive,
33360
- className: chunkCTL42ZRR_js.cn(
33355
+ className: chunkRHNJ4IU2_js.cn(
33361
33356
  "flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
33362
33357
  isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
33363
33358
  ),
@@ -33374,7 +33369,7 @@ function SettingsAppearanceTab({
33374
33369
  /* @__PURE__ */ jsxRuntime.jsx(
33375
33370
  "span",
33376
33371
  {
33377
- className: chunkCTL42ZRR_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
33372
+ className: chunkRHNJ4IU2_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
33378
33373
  children: t(entry.labelKey)
33379
33374
  }
33380
33375
  )
@@ -33454,7 +33449,7 @@ function SettingsLanguageTab({
33454
33449
  type: "button",
33455
33450
  onClick: () => onSelectLocale(locale.code),
33456
33451
  "aria-pressed": isActive,
33457
- className: chunkCTL42ZRR_js.cn(
33452
+ className: chunkRHNJ4IU2_js.cn(
33458
33453
  "flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
33459
33454
  isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
33460
33455
  ),
@@ -33494,8 +33489,8 @@ function SettingsDialog({
33494
33489
  const [activeTabId, setActiveTabId] = React97.useState("general");
33495
33490
  const { t } = reactI18next.useTranslation();
33496
33491
  const customization = useViewerCustomizationContext();
33497
- const { panelStyle, handlers: dragHandlers } = chunkK3EGXT6W_js.useModalDismissDrag(onClose);
33498
- const { viewportWidth, viewportHeight } = chunkK3EGXT6W_js.useIsMobile();
33492
+ const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
33493
+ const { viewportWidth, viewportHeight } = chunkMFGD7XVJ_js.useIsMobile();
33499
33494
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
33500
33495
  const navBtnStyle = { minHeight: touchTargetPx, minWidth: touchTargetPx };
33501
33496
  const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
@@ -33603,7 +33598,7 @@ function SettingsDialog({
33603
33598
  onClick: () => setActiveTabId(tab.id),
33604
33599
  "aria-current": currentTabId === tab.id,
33605
33600
  style: navBtnStyle,
33606
- className: chunkCTL42ZRR_js.cn(
33601
+ className: chunkRHNJ4IU2_js.cn(
33607
33602
  "flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
33608
33603
  currentTabId === tab.id ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
33609
33604
  ),
@@ -33618,7 +33613,7 @@ function SettingsDialog({
33618
33613
  onClick: () => setActiveTabId(AI_TAB_ID),
33619
33614
  "aria-current": aiActive,
33620
33615
  style: navBtnStyle,
33621
- className: chunkCTL42ZRR_js.cn(
33616
+ className: chunkRHNJ4IU2_js.cn(
33622
33617
  "flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
33623
33618
  aiActive ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
33624
33619
  ),
@@ -33764,7 +33759,7 @@ function ViewerOptionsProvider({
33764
33759
  store,
33765
33760
  children
33766
33761
  }) {
33767
- return /* @__PURE__ */ jsxRuntime.jsx(chunkK3EGXT6W_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkK3EGXT6W_js.ViewerOptionsContext.Provider, { value: options, children }) });
33762
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.ViewerOptionsContext.Provider, { value: options, children }) });
33768
33763
  }
33769
33764
  function useAiBridge(input) {
33770
33765
  const ref = React97.useRef(input);
@@ -34085,7 +34080,7 @@ function useMasterViewCrud(input) {
34085
34080
  if (id === "renameLayout" || id === "renameMaster") {
34086
34081
  const master = slideMasters[target.masterIndex];
34087
34082
  const current = id === "renameLayout" ? master?.layouts?.[target.layoutIndex ?? -1]?.name ?? "" : master?.name ?? "";
34088
- const next = chunkK3EGXT6W_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
34083
+ const next = chunkMFGD7XVJ_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
34089
34084
  if (!next) {
34090
34085
  return;
34091
34086
  }
@@ -34544,7 +34539,7 @@ var PowerPointViewer = React97.forwardRef(
34544
34539
  }
34545
34540
  })();
34546
34541
  }, []);
34547
- const { optionsStore, options: viewerOptions } = chunkK3EGXT6W_js.useViewerOptions();
34542
+ const { optionsStore, options: viewerOptions } = chunkMFGD7XVJ_js.useViewerOptions();
34548
34543
  const custom = useViewerCustomization(customization, legacyHiddenActions, optionsStore);
34549
34544
  const { resolved: customizationResolved, hiddenActions } = custom;
34550
34545
  const aiEnabled = Boolean(ai) && pptx.isFeatureEnabled(customizationResolved, "ai");
@@ -34558,8 +34553,8 @@ var PowerPointViewer = React97.forwardRef(
34558
34553
  const handleEnableEditing = React97.useCallback(() => {
34559
34554
  setProtectedViewOverridden(true);
34560
34555
  }, []);
34561
- const readOnlyRec = chunkK3EGXT6W_js.useReadOnlyRecommendationState(content);
34562
- const compatToastsState = chunkK3EGXT6W_js.useCompatibilityToastsState();
34556
+ const readOnlyRec = chunkMFGD7XVJ_js.useReadOnlyRecommendationState(content);
34557
+ const compatToastsState = chunkMFGD7XVJ_js.useCompatibilityToastsState();
34563
34558
  const [notesBarHeight, setNotesBarHeight] = React97.useState(0);
34564
34559
  const runProgramNoticesState = useRunProgramNoticesState();
34565
34560
  const [collaborationReadOnly, setCollaborationReadOnly] = React97.useState(Boolean(collaboration));
@@ -34574,8 +34569,8 @@ var PowerPointViewer = React97.forwardRef(
34574
34569
  filePath
34575
34570
  });
34576
34571
  const [isShareDialogOpen, setIsShareDialogOpen] = React97.useState(false);
34577
- const { reducedMotion, toggleReducedMotion } = chunkK3EGXT6W_js.useReducedMotion();
34578
- const state = chunkK3EGXT6W_js.useViewerState({ content, canEdit });
34572
+ const { reducedMotion, toggleReducedMotion } = chunkMFGD7XVJ_js.useReducedMotion();
34573
+ const state = chunkMFGD7XVJ_js.useViewerState({ content, canEdit });
34579
34574
  const {
34580
34575
  containerRef,
34581
34576
  mode,
@@ -34599,7 +34594,7 @@ var PowerPointViewer = React97.forwardRef(
34599
34594
  [state.recentColors, pushColor]
34600
34595
  );
34601
34596
  const themeColorMapValue = React97.useMemo(
34602
- () => state.theme?.colorScheme ? (0, chunkCTL42ZRR_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
34597
+ () => state.theme?.colorScheme ? (0, chunkRHNJ4IU2_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
34603
34598
  [state.theme?.colorScheme]
34604
34599
  );
34605
34600
  const settings = React97.useMemo(
@@ -34686,16 +34681,16 @@ var PowerPointViewer = React97.forwardRef(
34686
34681
  }
34687
34682
  }, [settings, optionsStore]);
34688
34683
  const handleClearOptionsCache2 = useAutosaveCacheMaintenance(viewerOptions);
34689
- const mobile = chunkK3EGXT6W_js.useIsMobile();
34684
+ const mobile = chunkMFGD7XVJ_js.useIsMobile();
34690
34685
  const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
34691
- const resizablePanels = chunkK3EGXT6W_js.useResizablePanels();
34686
+ const resizablePanels = chunkMFGD7XVJ_js.useResizablePanels();
34692
34687
  const {
34693
34688
  gridSpacingPx,
34694
34689
  visibleSlideIndexes,
34695
34690
  slideSectionGroups,
34696
34691
  masterPseudoSlide,
34697
34692
  authoredRange
34698
- } = chunkK3EGXT6W_js.useDerivedSlideState({
34693
+ } = chunkMFGD7XVJ_js.useDerivedSlideState({
34699
34694
  slides,
34700
34695
  sections: state.sections,
34701
34696
  customShows: state.customShows,
@@ -34720,7 +34715,7 @@ var PowerPointViewer = React97.forwardRef(
34720
34715
  state.cropSessionRef
34721
34716
  ]
34722
34717
  );
34723
- const zoom = chunkK3EGXT6W_js.useZoomViewport({
34718
+ const zoom = chunkMFGD7XVJ_js.useZoomViewport({
34724
34719
  canvasSize,
34725
34720
  selectedElements: state.selectedElements,
34726
34721
  fitPadding: props.fitPadding,
@@ -34730,7 +34725,7 @@ var PowerPointViewer = React97.forwardRef(
34730
34725
  const markDocumentDirty = React97.useCallback(() => {
34731
34726
  setIsDirty(true);
34732
34727
  }, [setIsDirty]);
34733
- const history = chunkK3EGXT6W_js.useEditorHistory({
34728
+ const history = chunkMFGD7XVJ_js.useEditorHistory({
34734
34729
  slides,
34735
34730
  canvasSize,
34736
34731
  activeSlideIndex,
@@ -34756,7 +34751,7 @@ var PowerPointViewer = React97.forwardRef(
34756
34751
  setEditTemplateMode: state.setEditTemplateMode,
34757
34752
  setHeaderFooter: state.setHeaderFooter
34758
34753
  });
34759
- const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkK3EGXT6W_js.usePresentationSetup({
34754
+ const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkMFGD7XVJ_js.usePresentationSetup({
34760
34755
  mode,
34761
34756
  slides,
34762
34757
  visibleSlideIndexes,
@@ -34798,7 +34793,7 @@ var PowerPointViewer = React97.forwardRef(
34798
34793
  onSetActiveCustomShowId: state.setActiveCustomShowId,
34799
34794
  onAddRunProgramNotice: runProgramNoticesState.addNotice
34800
34795
  });
34801
- chunkK3EGXT6W_js.useTouchGestures({
34796
+ chunkMFGD7XVJ_js.useTouchGestures({
34802
34797
  targetRef: zoom.canvasViewportRef,
34803
34798
  currentScale: zoom.scale,
34804
34799
  callbacks: {
@@ -34820,7 +34815,7 @@ var PowerPointViewer = React97.forwardRef(
34820
34815
  },
34821
34816
  enabled: isTouchDevice
34822
34817
  });
34823
- const dialogs = chunkK3EGXT6W_js.useViewerDialogs({
34818
+ const dialogs = chunkMFGD7XVJ_js.useViewerDialogs({
34824
34819
  mode,
34825
34820
  slides,
34826
34821
  activeSlide,
@@ -34869,7 +34864,7 @@ var PowerPointViewer = React97.forwardRef(
34869
34864
  zoom.handleZoomToFit();
34870
34865
  zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
34871
34866
  }, [mode]);
34872
- const editorOps = chunkK3EGXT6W_js.useEditorOperations({
34867
+ const editorOps = chunkMFGD7XVJ_js.useEditorOperations({
34873
34868
  state,
34874
34869
  history,
34875
34870
  zoom,
@@ -34911,7 +34906,7 @@ var PowerPointViewer = React97.forwardRef(
34911
34906
  setIsEncryptedDialogOpen,
34912
34907
  handlerRef,
34913
34908
  loadVersion
34914
- } = chunkK3EGXT6W_js.useViewerIntegration({
34909
+ } = chunkMFGD7XVJ_js.useViewerIntegration({
34915
34910
  transformCommittedText: (text) => pptx.applyAutoCorrect(text, viewerOptions.proofing),
34916
34911
  state,
34917
34912
  zoom,
@@ -34985,7 +34980,7 @@ var PowerPointViewer = React97.forwardRef(
34985
34980
  updateThemeFontScheme: themeHandlers.handleUpdateThemeFontScheme
34986
34981
  });
34987
34982
  const ribbonScope = useRibbonScopeToken();
34988
- const viewPreferencesSync = chunkK3EGXT6W_js.useViewPreferencesSync({
34983
+ const viewPreferencesSync = chunkMFGD7XVJ_js.useViewPreferencesSync({
34989
34984
  loadVersion,
34990
34985
  viewProperties: state.viewProperties,
34991
34986
  setViewProperties: state.setViewProperties,
@@ -35023,7 +35018,7 @@ var PowerPointViewer = React97.forwardRef(
35023
35018
  },
35024
35019
  [state]
35025
35020
  );
35026
- const layoutSwitching = chunkK3EGXT6W_js.useLayoutSwitching({
35021
+ const layoutSwitching = chunkMFGD7XVJ_js.useLayoutSwitching({
35027
35022
  handler: handlerRef.current,
35028
35023
  slides,
35029
35024
  activeSlideIndex,
@@ -35119,7 +35114,7 @@ var PowerPointViewer = React97.forwardRef(
35119
35114
  "data-pptx-editor-chrome": "",
35120
35115
  ...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
35121
35116
  "aria-busy": loading,
35122
- className: chunkCTL42ZRR_js.cn(
35117
+ className: chunkRHNJ4IU2_js.cn(
35123
35118
  "h-full w-full bg-background text-foreground relative",
35124
35119
  ...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
35125
35120
  ),
@@ -35303,7 +35298,7 @@ var PowerPointViewer = React97.forwardRef(
35303
35298
  ] }) })
35304
35299
  }
35305
35300
  ),
35306
- mode !== "present" && /* @__PURE__ */ jsxRuntime.jsx(
35301
+ mode !== "present" && rootOptions.showCompatibilityToasts && /* @__PURE__ */ jsxRuntime.jsx(
35307
35302
  CompatibilityToasts,
35308
35303
  {
35309
35304
  toasts: compatToastsState.toasts,
@@ -35510,8 +35505,8 @@ var PowerPointViewer = React97.forwardRef(
35510
35505
  // Nothing previously provided it, so every one of those consumers was
35511
35506
  // silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
35512
35507
  // the user changed in the Options dialog.
35513
- /* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunkK3EGXT6W_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
35514
- chunkK3EGXT6W_js.CollaborationProvider,
35508
+ /* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
35509
+ chunkMFGD7XVJ_js.CollaborationProvider,
35515
35510
  {
35516
35511
  config: collaboration,
35517
35512
  canvasWidth: canvasSize.width,
@@ -35569,7 +35564,7 @@ var PowerPointViewer = React97.forwardRef(
35569
35564
  );
35570
35565
  PowerPointViewer.displayName = "PowerPointViewer";
35571
35566
  function CollaborationStatusStrip() {
35572
- const collab = chunkK3EGXT6W_js.useCollaboration();
35567
+ const collab = chunkMFGD7XVJ_js.useCollaboration();
35573
35568
  if (!collab) {
35574
35569
  return null;
35575
35570
  }
@@ -35593,8 +35588,8 @@ function CollaborationDocumentSync({
35593
35588
  deckSaveState,
35594
35589
  onReadOnlyChange
35595
35590
  }) {
35596
- const collab = chunkK3EGXT6W_js.useCollaboration();
35597
- chunkK3EGXT6W_js.useCollaborationDocumentSync({
35591
+ const collab = chunkMFGD7XVJ_js.useCollaboration();
35592
+ chunkMFGD7XVJ_js.useCollaborationDocumentSync({
35598
35593
  collaboration: collab,
35599
35594
  slides,
35600
35595
  templateElementsBySlideId,
@@ -35613,14 +35608,14 @@ function CollaborationFollowLayer({
35613
35608
  setActiveSlideIndex,
35614
35609
  slideCount
35615
35610
  }) {
35616
- const collab = chunkK3EGXT6W_js.useCollaboration();
35617
- const { followedClientId, followUser } = chunkK3EGXT6W_js.useFollowMode({
35611
+ const collab = chunkMFGD7XVJ_js.useCollaboration();
35612
+ const { followedClientId, followUser } = chunkMFGD7XVJ_js.useFollowMode({
35618
35613
  collab,
35619
35614
  activeSlideIndex,
35620
35615
  setActiveSlideIndex,
35621
35616
  slideCount
35622
35617
  });
35623
- chunkK3EGXT6W_js.useBroadcastFollower({
35618
+ chunkMFGD7XVJ_js.useBroadcastFollower({
35624
35619
  collab,
35625
35620
  activeSlideIndex,
35626
35621
  setActiveSlideIndex,