pptx-react-viewer 4.33.0 → 4.33.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/{AiChatPanel-47A5ONVT.mjs → AiChatPanel-CYD46SEM.mjs} +1 -1
  3. package/dist/AiChatPanel-CYD46SEM.mjs.br +0 -0
  4. package/dist/AiChatPanel-CYD46SEM.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-FV5ECOV5.js → AiChatPanel-ONHWZEPV.js} +9 -9
  6. package/dist/AiChatPanel-ONHWZEPV.js.br +0 -0
  7. package/dist/AiChatPanel-ONHWZEPV.js.gz +0 -0
  8. package/dist/{chunk-DD3ARHEW.mjs → chunk-2OIJUZD5.mjs} +7 -3
  9. package/dist/chunk-2OIJUZD5.mjs.br +0 -0
  10. package/dist/chunk-2OIJUZD5.mjs.gz +0 -0
  11. package/dist/{chunk-SQUVXHAE.js → chunk-7DGKSEIU.js} +1 -8
  12. package/dist/chunk-7DGKSEIU.js.br +0 -0
  13. package/dist/{chunk-SQUVXHAE.js.gz → chunk-7DGKSEIU.js.gz} +0 -0
  14. package/dist/{chunk-LOBNIIFQ.mjs → chunk-GSMY5BTO.mjs} +4 -4
  15. package/dist/chunk-GSMY5BTO.mjs.br +0 -0
  16. package/dist/chunk-GSMY5BTO.mjs.gz +0 -0
  17. package/dist/{chunk-JL7A7NDD.js → chunk-JHYNVFFS.js} +384 -384
  18. package/dist/chunk-JHYNVFFS.js.br +0 -0
  19. package/dist/chunk-JHYNVFFS.js.gz +0 -0
  20. package/dist/{chunk-WEPZYAB6.mjs → chunk-K4UXDQZ6.mjs} +1 -8
  21. package/dist/chunk-K4UXDQZ6.mjs.br +0 -0
  22. package/dist/{chunk-WEPZYAB6.mjs.gz → chunk-K4UXDQZ6.mjs.gz} +0 -0
  23. package/dist/{chunk-552NAFTD.js → chunk-TVSTM5J5.js} +251 -247
  24. package/dist/chunk-TVSTM5J5.js.br +0 -0
  25. package/dist/chunk-TVSTM5J5.js.gz +0 -0
  26. package/dist/index.js +24 -24
  27. package/dist/index.js.br +0 -0
  28. package/dist/index.js.gz +0 -0
  29. package/dist/index.mjs +3 -3
  30. package/dist/index.mjs.br +0 -0
  31. package/dist/index.mjs.gz +0 -0
  32. package/dist/internals.js +81 -81
  33. package/dist/internals.js.br +0 -0
  34. package/dist/internals.js.gz +0 -0
  35. package/dist/internals.mjs +2 -2
  36. package/dist/internals.mjs.br +0 -0
  37. package/dist/internals.mjs.gz +0 -0
  38. package/dist/viewer/index.js +19 -19
  39. package/dist/viewer/index.js.br +0 -0
  40. package/dist/viewer/index.js.gz +0 -0
  41. package/dist/viewer/index.mjs +3 -3
  42. package/dist/viewer/index.mjs.br +0 -0
  43. package/dist/viewer/index.mjs.gz +0 -0
  44. package/package.json +4 -4
  45. package/dist/AiChatPanel-47A5ONVT.mjs.br +0 -0
  46. package/dist/AiChatPanel-47A5ONVT.mjs.gz +0 -0
  47. package/dist/AiChatPanel-FV5ECOV5.js.br +0 -0
  48. package/dist/AiChatPanel-FV5ECOV5.js.gz +0 -0
  49. package/dist/chunk-552NAFTD.js.br +0 -0
  50. package/dist/chunk-552NAFTD.js.gz +0 -0
  51. package/dist/chunk-DD3ARHEW.mjs.br +0 -0
  52. package/dist/chunk-DD3ARHEW.mjs.gz +0 -0
  53. package/dist/chunk-JL7A7NDD.js.br +0 -0
  54. package/dist/chunk-JL7A7NDD.js.gz +0 -0
  55. package/dist/chunk-LOBNIIFQ.mjs.br +0 -0
  56. package/dist/chunk-LOBNIIFQ.mjs.gz +0 -0
  57. package/dist/chunk-SQUVXHAE.js.br +0 -0
  58. package/dist/chunk-WEPZYAB6.mjs.br +0 -0
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunk552NAFTD_js = require('./chunk-552NAFTD.js');
4
- var chunkSQUVXHAE_js = require('./chunk-SQUVXHAE.js');
3
+ var chunkTVSTM5J5_js = require('./chunk-TVSTM5J5.js');
4
+ var chunk7DGKSEIU_js = require('./chunk-7DGKSEIU.js');
5
5
  var pptx = require('ooxml-ui/pptx');
6
6
  var React99 = 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
- chunk552NAFTD_js.StaticElementRenderer,
310
+ chunkTVSTM5J5_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 } = chunk552NAFTD_js.useModalDismissDrag(onClose);
379
+ const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
380
380
  const [selected, setSelected] = React99.useState(null);
381
381
  const dialogRef = React99.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: chunkSQUVXHAE_js.cn(
462
+ className: chunk7DGKSEIU_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 } = chunk552NAFTD_js.useToolbarVisibility(p.hiddenActions);
726
+ const { isHidden } = chunkTVSTM5J5_js.useToolbarVisibility(p.hiddenActions);
727
727
  const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
728
728
  const controls = React99.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
- chunk552NAFTD_js.playAnimationSound(url);
1059
+ chunkTVSTM5J5_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.33.0" ;
1218
+ const version = "4.33.1" ;
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: chunkSQUVXHAE_js.cn(
1258
+ className: chunk7DGKSEIU_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] = React99.useState("");
1480
1480
  const [recent, setRecent] = React99.useState([]);
1481
- const { isHidden } = chunk552NAFTD_js.useToolbarVisibility(p.hiddenActions);
1481
+ const { isHidden } = chunkTVSTM5J5_js.useToolbarVisibility(p.hiddenActions);
1482
1482
  const exportHidden = isHidden("export");
1483
1483
  React99.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: chunkSQUVXHAE_js.cn("fixed z-50", className),
1711
+ className: chunk7DGKSEIU_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: chunkSQUVXHAE_js.cn(
1737
+ className: chunk7DGKSEIU_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
- chunk552NAFTD_js.StaticElementRenderer,
1811
+ chunkTVSTM5J5_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: chunkSQUVXHAE_js.cn(
2373
+ className: chunk7DGKSEIU_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 = React99.useContext(chunk552NAFTD_js.ViewerOptionsStoreContext);
2428
+ const supplied = React99.useContext(chunkTVSTM5J5_js.ViewerOptionsStoreContext);
2429
2429
  const fallback = React99.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 } = chunk552NAFTD_js.useToolbarVisibility(p.hiddenActions);
2462
+ const { isHidden } = chunkTVSTM5J5_js.useToolbarVisibility(p.hiddenActions);
2463
2463
  const [showsOpen, setShowsOpen] = React99.useState(false);
2464
2464
  const showsRef = React99.useRef(null);
2465
2465
  React99.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, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(element)) {
2543
+ if (!element || !(0, chunk7DGKSEIU_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, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(element)) {
2564
+ if ((0, chunk7DGKSEIU_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, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(element)) {
2577
+ if (element && (0, chunk7DGKSEIU_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, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(element)) {
2593
+ if (element && (0, chunk7DGKSEIU_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 = React99.useCallback(() => {
2830
- if (!element || !(0, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(element)) {
2830
+ if (!element || !(0, chunk7DGKSEIU_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, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(p.selectedElement);
2853
+ const isTextEl = hasSel && p.selectedElement !== null && (0, chunk7DGKSEIU_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, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(p.selectedElement)) {
2863
+ if ((0, chunk7DGKSEIU_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, chunkSQUVXHAE_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, chunkSQUVXHAE_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, chunkSQUVXHAE_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, chunk7DGKSEIU_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, chunk7DGKSEIU_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, chunk7DGKSEIU_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, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(p.selectedElement) ? pptx.textFontSizePtToPx(size) : size
2886
+ fontSize: p.selectedElement && (0, chunk7DGKSEIU_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 = React99.useRef(null);
2995
2995
  const { t } = reactI18next.useTranslation();
2996
- const { dragY, dragging, handlers } = chunk552NAFTD_js.useSheetDismissDrag(onClose);
2996
+ const { dragY, dragging, handlers } = chunkTVSTM5J5_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: chunkSQUVXHAE_js.cn(
3020
+ className: chunk7DGKSEIU_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] = React99.useState("home");
3084
- const { isTabVisible } = chunk552NAFTD_js.useToolbarVisibility(props.hiddenActions);
3084
+ const { isTabVisible } = chunkTVSTM5J5_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: chunkSQUVXHAE_js.cn(
3098
+ className: chunk7DGKSEIU_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] = React99.useState(false);
3365
- const { isHidden } = chunk552NAFTD_js.useToolbarVisibility(props.hiddenActions);
3365
+ const { isHidden } = chunkTVSTM5J5_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, chunkSQUVXHAE_js.dist_exports.hasShapeProperties)(p.selectedElement) ? p.selectedElement.shapeStyle : void 0;
3430
+ const style = p.selectedElement && (0, chunk7DGKSEIU_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 = React99.useMemo(
@@ -3555,7 +3555,7 @@ var TAB_BASE = "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap t
3555
3555
  var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
3556
3556
  function RibbonTabBar(p) {
3557
3557
  const { t } = reactI18next.useTranslation();
3558
- const viewerOptions = chunk552NAFTD_js.useViewerOptionsContext();
3558
+ const viewerOptions = chunkTVSTM5J5_js.useViewerOptionsContext();
3559
3559
  return /* @__PURE__ */ jsxRuntime.jsxs(
3560
3560
  "div",
3561
3561
  {
@@ -3563,7 +3563,7 @@ function RibbonTabBar(p) {
3563
3563
  "data-pptx-chrome": "ribbon-tabs",
3564
3564
  className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
3565
3565
  children: [
3566
- chunkSQUVXHAE_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
3566
+ chunk7DGKSEIU_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
3567
3567
  const selected = p.activeSection === s.id;
3568
3568
  return /* @__PURE__ */ jsxRuntime.jsx(
3569
3569
  "button",
@@ -3573,7 +3573,7 @@ function RibbonTabBar(p) {
3573
3573
  "aria-selected": selected,
3574
3574
  title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
3575
3575
  onClick: () => p.onSelectSection(s.id),
3576
- className: chunkSQUVXHAE_js.cn(
3576
+ className: chunk7DGKSEIU_js.cn(
3577
3577
  TAB_BASE,
3578
3578
  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"
3579
3579
  ),
@@ -3593,7 +3593,7 @@ function RibbonTabBar(p) {
3593
3593
  ...{ [pptx.RIBBON_ADD_IN_TAB_ATTR]: tab.id },
3594
3594
  title: pptx.resolveScreenTip(viewerOptions, tab.label),
3595
3595
  onClick: () => p.onSelectAddIn?.(tab.id),
3596
- className: chunkSQUVXHAE_js.cn(
3596
+ className: chunk7DGKSEIU_js.cn(
3597
3597
  TAB_BASE,
3598
3598
  selected ? `text-foreground ${TAB_UNDERLINE}` : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
3599
3599
  ),
@@ -3614,7 +3614,7 @@ function RibbonTabBar(p) {
3614
3614
  ...{ [pptx.RIBBON_CONTEXTUAL_TAB_ATTR]: id },
3615
3615
  title: pptx.resolveScreenTip(viewerOptions, label),
3616
3616
  onClick: () => p.onSelectContextual(id),
3617
- className: chunkSQUVXHAE_js.cn(
3617
+ className: chunk7DGKSEIU_js.cn(
3618
3618
  TAB_BASE,
3619
3619
  "text-primary",
3620
3620
  selected ? TAB_UNDERLINE : "hover:bg-primary/10"
@@ -3632,9 +3632,9 @@ function RibbonTabBar(p) {
3632
3632
  }
3633
3633
  function TabRowActions(p) {
3634
3634
  const { t } = reactI18next.useTranslation();
3635
- const collab = chunk552NAFTD_js.useCollaboration();
3635
+ const collab = chunkTVSTM5J5_js.useCollaboration();
3636
3636
  const isCollaborating = Boolean(collab && collab.status === "connected");
3637
- const { isHidden } = chunk552NAFTD_js.useToolbarVisibility(p.hiddenActions);
3637
+ const { isHidden } = chunkTVSTM5J5_js.useToolbarVisibility(p.hiddenActions);
3638
3638
  const customization = useViewerCustomizationContext();
3639
3639
  const ref = React99.useRef(null);
3640
3640
  const handlers = React99.useRef(p);
@@ -3689,7 +3689,7 @@ function TabRowActions(p) {
3689
3689
  }
3690
3690
  function TitleBarElement(p) {
3691
3691
  const { t } = reactI18next.useTranslation();
3692
- const options = chunk552NAFTD_js.useViewerOptionsContext();
3692
+ const options = chunkTVSTM5J5_js.useViewerOptionsContext();
3693
3693
  const customization = useViewerCustomizationContext();
3694
3694
  const ref = React99.useRef(null);
3695
3695
  const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
@@ -3762,7 +3762,7 @@ function PresentDropdown({
3762
3762
  {
3763
3763
  type: "button",
3764
3764
  onClick: onPresent,
3765
- className: chunkSQUVXHAE_js.cn(
3765
+ className: chunk7DGKSEIU_js.cn(
3766
3766
  "px-2 py-1 transition-colors",
3767
3767
  isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
3768
3768
  ),
@@ -3775,7 +3775,7 @@ function PresentDropdown({
3775
3775
  {
3776
3776
  type: "button",
3777
3777
  onClick: () => setOpen((prev) => !prev),
3778
- className: chunkSQUVXHAE_js.cn(
3778
+ className: chunk7DGKSEIU_js.cn(
3779
3779
  "inline-flex items-center px-1 transition-colors border-l border-border",
3780
3780
  open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
3781
3781
  ),
@@ -3978,7 +3978,7 @@ function OverflowMenu(p) {
3978
3978
  {
3979
3979
  type: "button",
3980
3980
  onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
3981
- className: chunkSQUVXHAE_js.cn(
3981
+ className: chunk7DGKSEIU_js.cn(
3982
3982
  "p-1.5 rounded transition-colors",
3983
3983
  p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
3984
3984
  ),
@@ -4025,7 +4025,7 @@ function ToolbarPrimaryRow(p) {
4025
4025
  onToggleSidebar,
4026
4026
  onToggleInspector
4027
4027
  } = p;
4028
- const collab = chunk552NAFTD_js.useCollaboration();
4028
+ const collab = chunkTVSTM5J5_js.useCollaboration();
4029
4029
  const customization = useViewerCustomizationContext();
4030
4030
  const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
4031
4031
  const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
@@ -4043,7 +4043,7 @@ function ToolbarPrimaryRow(p) {
4043
4043
  {
4044
4044
  type: "button",
4045
4045
  onClick: onToggleSidebar,
4046
- className: chunkSQUVXHAE_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
4046
+ className: chunk7DGKSEIU_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
4047
4047
  title: t("pptx.toolbar.toggleSlidesPanel"),
4048
4048
  "aria-label": t("pptx.toolbar.toggleSlidesPanel"),
4049
4049
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
@@ -4104,7 +4104,7 @@ function ToolbarPrimaryRow(p) {
4104
4104
  {
4105
4105
  type: "button",
4106
4106
  onClick: onToggleInspector,
4107
- className: chunkSQUVXHAE_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
4107
+ className: chunk7DGKSEIU_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
4108
4108
  title: t("pptx.toolbar.toggleInspector"),
4109
4109
  "aria-label": t("pptx.toolbar.toggleInspector"),
4110
4110
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
@@ -4115,7 +4115,7 @@ function ToolbarPrimaryRow(p) {
4115
4115
  {
4116
4116
  type: "button",
4117
4117
  onClick: p.onToggleAiPanel,
4118
- className: chunkSQUVXHAE_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
4118
+ className: chunk7DGKSEIU_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
4119
4119
  title: t("pptx.toolbar.toggleAiAssistant"),
4120
4120
  "aria-label": t("pptx.toolbar.toggleAiAssistant"),
4121
4121
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
@@ -4126,7 +4126,7 @@ function ToolbarPrimaryRow(p) {
4126
4126
  {
4127
4127
  type: "button",
4128
4128
  onClick: p.onOpenSettings ?? p.onToggleShortcuts,
4129
- className: chunkSQUVXHAE_js.cn(qab, "text-muted-foreground"),
4129
+ className: chunk7DGKSEIU_js.cn(qab, "text-muted-foreground"),
4130
4130
  title: t("pptx.toolbar.settingsShortcuts"),
4131
4131
  "aria-label": t("pptx.toolbar.settings"),
4132
4132
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
@@ -4323,8 +4323,8 @@ function ToolbarLateTabs({
4323
4323
  function Toolbar(p) {
4324
4324
  const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
4325
4325
  const { t } = reactI18next.useTranslation();
4326
- const { isTabVisible } = chunk552NAFTD_js.useToolbarVisibility(p.hiddenActions);
4327
- const viewerOptions = chunk552NAFTD_js.useViewerOptionsContext();
4326
+ const { isTabVisible } = chunkTVSTM5J5_js.useToolbarVisibility(p.hiddenActions);
4327
+ const viewerOptions = chunkTVSTM5J5_js.useViewerOptionsContext();
4328
4328
  const customization = useViewerCustomizationContext();
4329
4329
  const belowInput = React99.useMemo(
4330
4330
  () => ({
@@ -4421,7 +4421,7 @@ function Toolbar(p) {
4421
4421
  {
4422
4422
  type: "button",
4423
4423
  onClick: p.onToggleCompactToolbar,
4424
- className: chunkSQUVXHAE_js.cn(
4424
+ className: chunk7DGKSEIU_js.cn(
4425
4425
  "px-2 py-1 rounded text-[11px] transition-colors mr-1",
4426
4426
  isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
4427
4427
  ),
@@ -4447,7 +4447,7 @@ function Toolbar(p) {
4447
4447
  {
4448
4448
  ref: attachOverflow,
4449
4449
  "data-pptx-chrome": "ribbon-content",
4450
- className: chunkSQUVXHAE_js.cn(
4450
+ className: chunk7DGKSEIU_js.cn(
4451
4451
  // Plain controls stay compact; labelled RibbonGroups opt into stretching.
4452
4452
  // `RibbonGroupScope` wraps controls in a `display: contents` div, so its
4453
4453
  // children are this row's flex items too and must not shrink (a shrunk
@@ -5301,7 +5301,7 @@ function DrawingOverlaySvg({
5301
5301
  onPointerDown,
5302
5302
  onPointerMove,
5303
5303
  onPointerUp,
5304
- children: isStrokeActive && liveStrokeView ? chunk552NAFTD_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
5304
+ children: isStrokeActive && liveStrokeView ? chunkTVSTM5J5_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
5305
5305
  "path",
5306
5306
  {
5307
5307
  d: liveStrokeD,
@@ -5316,7 +5316,7 @@ function DrawingOverlaySvg({
5316
5316
  }
5317
5317
  );
5318
5318
  }
5319
- function GridOverlay({ canvasSize, gridSpacingPx = chunkSQUVXHAE_js.GRID_SIZE, visible }) {
5319
+ function GridOverlay({ canvasSize, gridSpacingPx = chunk7DGKSEIU_js.GRID_SIZE, visible }) {
5320
5320
  const spacing = Math.max(gridSpacingPx, 2);
5321
5321
  const patternId = React99.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
5322
5322
  if (!visible) {
@@ -5880,7 +5880,7 @@ function PictureCropOverlay({
5880
5880
  };
5881
5881
  };
5882
5882
  const { ghost, frame, handles } = overlay;
5883
- const src = chunk552NAFTD_js.imgSrc(element);
5883
+ const src = chunkTVSTM5J5_js.imgSrc(element);
5884
5884
  return /* @__PURE__ */ jsxRuntime.jsxs(
5885
5885
  "div",
5886
5886
  {
@@ -6293,10 +6293,10 @@ function SelectionHandleOverlay({
6293
6293
  position: "absolute",
6294
6294
  left: element.x,
6295
6295
  top: element.y,
6296
- width: Math.max(element.width, chunkSQUVXHAE_js.MIN_ELEMENT_SIZE),
6297
- height: Math.max(element.height, chunkSQUVXHAE_js.MIN_ELEMENT_SIZE),
6298
- ["--pptx-selection-width"]: `${Math.max(element.width, chunkSQUVXHAE_js.MIN_ELEMENT_SIZE)}px`,
6299
- ["--pptx-selection-height"]: `${Math.max(element.height, chunkSQUVXHAE_js.MIN_ELEMENT_SIZE)}px`,
6296
+ width: Math.max(element.width, chunk7DGKSEIU_js.MIN_ELEMENT_SIZE),
6297
+ height: Math.max(element.height, chunk7DGKSEIU_js.MIN_ELEMENT_SIZE),
6298
+ ["--pptx-selection-width"]: `${Math.max(element.width, chunk7DGKSEIU_js.MIN_ELEMENT_SIZE)}px`,
6299
+ ["--pptx-selection-height"]: `${Math.max(element.height, chunk7DGKSEIU_js.MIN_ELEMENT_SIZE)}px`,
6300
6300
  // Every slide element carries an explicit numeric `zIndex` (see
6301
6301
  // `getContainerStyle`), so a sibling with no z-index at all paints
6302
6302
  // at the CSS "z-index: 0" level regardless of DOM order: any
@@ -6308,7 +6308,7 @@ function SelectionHandleOverlay({
6308
6308
  // (marquee z-50, connector overlay z-55/56) to match, well clear of
6309
6309
  // any realistic per-slide element count.
6310
6310
  zIndex: 58,
6311
- transform: chunkSQUVXHAE_js.getElementTransform(element),
6311
+ transform: chunk7DGKSEIU_js.getElementTransform(element),
6312
6312
  transformOrigin: "center",
6313
6313
  // Transparent everywhere a handle button is not, so a click that
6314
6314
  // misses every handle still reaches the shape (or whatever is
@@ -6320,14 +6320,14 @@ function SelectionHandleOverlay({
6320
6320
  onDoubleClick: (e) => onDoubleClick(element.id, e),
6321
6321
  onContextMenu: (e) => onContextMenu(element.id, e),
6322
6322
  children: /* @__PURE__ */ jsxRuntime.jsx(
6323
- chunk552NAFTD_js.ResizeHandles,
6323
+ chunkTVSTM5J5_js.ResizeHandles,
6324
6324
  {
6325
6325
  elementId: element.id,
6326
6326
  adjustmentHandles,
6327
6327
  onResizePointerDown,
6328
6328
  onAdjustmentPointerDown,
6329
6329
  rotation: element.rotation,
6330
- nonRotationTransform: chunkSQUVXHAE_js.getElementTransformWithoutRotation(element),
6330
+ nonRotationTransform: chunk7DGKSEIU_js.getElementTransformWithoutRotation(element),
6331
6331
  onRotate: allow.rotatable ? onRotate : void 0,
6332
6332
  forcePointerEvents: true
6333
6333
  }
@@ -7031,7 +7031,7 @@ function SlideCanvas(props) {
7031
7031
  props.registerInlineEditReader
7032
7032
  ]
7033
7033
  );
7034
- return /* @__PURE__ */ jsxRuntime.jsx(chunk552NAFTD_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
7034
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
7035
7035
  }
7036
7036
  function SlideCanvasContent({
7037
7037
  imagePaste,
@@ -7300,7 +7300,7 @@ function SlideCanvasContent({
7300
7300
  onPointerMove: handleStagePointerMove,
7301
7301
  onPointerUp: handleStagePointerUp,
7302
7302
  children: [
7303
- /* @__PURE__ */ jsxRuntime.jsx(chunk552NAFTD_js.SlideBackgroundImageLayer, { slide: activeSlide }),
7303
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.SlideBackgroundImageLayer, { slide: activeSlide }),
7304
7304
  presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
7305
7305
  /* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
7306
7306
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -7312,7 +7312,7 @@ function SlideCanvasContent({
7312
7312
  }
7313
7313
  ),
7314
7314
  templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
7315
- chunk552NAFTD_js.ElementRenderer,
7315
+ chunkTVSTM5J5_js.ElementRenderer,
7316
7316
  {
7317
7317
  element,
7318
7318
  activeSlide,
@@ -7334,7 +7334,7 @@ function SlideCanvasContent({
7334
7334
  ),
7335
7335
  renderInk: false,
7336
7336
  renderGroups: true,
7337
- adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkSQUVXHAE_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
7337
+ adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk7DGKSEIU_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
7338
7338
  onResizePointerDown: stableResizePointerDown,
7339
7339
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
7340
7340
  onRotate: stableRotate,
@@ -7356,7 +7356,7 @@ function SlideCanvasContent({
7356
7356
  `tpl-${element.id}`
7357
7357
  )),
7358
7358
  activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
7359
- chunk552NAFTD_js.ElementRenderer,
7359
+ chunkTVSTM5J5_js.ElementRenderer,
7360
7360
  {
7361
7361
  element,
7362
7362
  activeSlide,
@@ -7378,7 +7378,7 @@ function SlideCanvasContent({
7378
7378
  ),
7379
7379
  renderInk: true,
7380
7380
  renderGroups: true,
7381
- adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkSQUVXHAE_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
7381
+ adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk7DGKSEIU_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
7382
7382
  onResizePointerDown: stableResizePointerDown,
7383
7383
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
7384
7384
  onRotate: stableRotate,
@@ -7422,7 +7422,7 @@ function SlideCanvasContent({
7422
7422
  editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7423
7423
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
7424
7424
  /* @__PURE__ */ jsxRuntime.jsx(
7425
- chunk552NAFTD_js.ElementRenderer,
7425
+ chunkTVSTM5J5_js.ElementRenderer,
7426
7426
  {
7427
7427
  element: editingMember.member,
7428
7428
  activeSlide,
@@ -7457,11 +7457,11 @@ function SlideCanvasContent({
7457
7457
  `group-member-edit-${editingMember.member.id}`
7458
7458
  )
7459
7459
  ] }),
7460
- selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunkSQUVXHAE_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
7460
+ selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunk7DGKSEIU_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
7461
7461
  SelectionHandleOverlay,
7462
7462
  {
7463
7463
  element: selectedElement,
7464
- adjustmentHandles: chunkSQUVXHAE_js.getShapeAdjustmentHandleDescriptors(selectedElement),
7464
+ adjustmentHandles: chunk7DGKSEIU_js.getShapeAdjustmentHandleDescriptors(selectedElement),
7465
7465
  onResizePointerDown: stableResizePointerDown,
7466
7466
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
7467
7467
  onRotate: stableRotate,
@@ -7575,7 +7575,7 @@ function LoadingState({ className }) {
7575
7575
  role: "status",
7576
7576
  "aria-live": "polite",
7577
7577
  "aria-atomic": "true",
7578
- className: chunkSQUVXHAE_js.cn(
7578
+ className: chunk7DGKSEIU_js.cn(
7579
7579
  "h-full w-full flex items-center justify-center text-muted-foreground",
7580
7580
  className
7581
7581
  ),
@@ -7598,7 +7598,7 @@ function ErrorState({ className, error }) {
7598
7598
  {
7599
7599
  role: "alert",
7600
7600
  "aria-live": "assertive",
7601
- className: chunkSQUVXHAE_js.cn(
7601
+ className: chunk7DGKSEIU_js.cn(
7602
7602
  "h-full w-full flex items-center justify-center p-6 text-center text-red-400",
7603
7603
  className
7604
7604
  ),
@@ -7629,7 +7629,7 @@ function ShortcutPanel({ isOpen, onClose }) {
7629
7629
  }
7630
7630
  )
7631
7631
  ] }),
7632
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkSQUVXHAE_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
7632
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunk7DGKSEIU_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
7633
7633
  "div",
7634
7634
  {
7635
7635
  className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
@@ -7689,14 +7689,14 @@ function AccessibilityPanel({
7689
7689
  "aria-label": t("pptx.accessibility.reduceMotion"),
7690
7690
  "aria-checked": reducedMotion ?? false,
7691
7691
  onClick: onToggleReducedMotion,
7692
- className: chunkSQUVXHAE_js.cn(
7692
+ className: chunk7DGKSEIU_js.cn(
7693
7693
  "relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
7694
7694
  reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
7695
7695
  ),
7696
7696
  children: /* @__PURE__ */ jsxRuntime.jsx(
7697
7697
  "span",
7698
7698
  {
7699
- className: chunkSQUVXHAE_js.cn(
7699
+ className: chunk7DGKSEIU_js.cn(
7700
7700
  "inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
7701
7701
  reducedMotion ? "translate-x-4" : "translate-x-0.5"
7702
7702
  )
@@ -7715,7 +7715,7 @@ function AccessibilityPanel({
7715
7715
  "div",
7716
7716
  {
7717
7717
  role: "listitem",
7718
- className: chunkSQUVXHAE_js.cn(
7718
+ className: chunk7DGKSEIU_js.cn(
7719
7719
  "flex items-start gap-2 rounded px-2 py-1.5 text-xs",
7720
7720
  /* Severity-based background and text colouring */
7721
7721
  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"
@@ -7875,7 +7875,7 @@ function ResizeHandle({
7875
7875
  {
7876
7876
  role: "separator",
7877
7877
  "aria-orientation": direction,
7878
- className: chunkSQUVXHAE_js.cn(
7878
+ className: chunk7DGKSEIU_js.cn(
7879
7879
  // Outer container: generous hit area for easy clicking.
7880
7880
  // The visible indicator is rendered via the inner pseudo-element (::after).
7881
7881
  "relative flex-shrink-0 z-20 group",
@@ -7886,7 +7886,7 @@ function ResizeHandle({
7886
7886
  children: /* @__PURE__ */ jsxRuntime.jsx(
7887
7887
  "div",
7888
7888
  {
7889
- className: chunkSQUVXHAE_js.cn(
7889
+ className: chunk7DGKSEIU_js.cn(
7890
7890
  "absolute transition-colors",
7891
7891
  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"
7892
7892
  )
@@ -7905,14 +7905,14 @@ function SlideThumbnailImpl({
7905
7905
  }) {
7906
7906
  const safeCanvasWidth = Math.max(canvasSize.width, 1);
7907
7907
  const safeCanvasHeight = Math.max(canvasSize.height, 1);
7908
- const width = previewWidth ?? chunkSQUVXHAE_js.SLIDE_NAV_THUMBNAIL_WIDTH;
7908
+ const width = previewWidth ?? chunk7DGKSEIU_js.SLIDE_NAV_THUMBNAIL_WIDTH;
7909
7909
  const scale = width / safeCanvasWidth;
7910
7910
  const previewHeight = pptx.editorThumbnailHeight(safeCanvasWidth, safeCanvasHeight, width);
7911
7911
  const previewElements = pptx.buildPreviewElements(slide, templateElements);
7912
7912
  const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
7913
7913
  const { t } = reactI18next.useTranslation();
7914
7914
  const transitionLabel = slide.transition ? (() => {
7915
- const opt = chunkSQUVXHAE_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
7915
+ const opt = chunk7DGKSEIU_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
7916
7916
  return opt ? t(opt.i18nKey) : slide.transition.type;
7917
7917
  })() : void 0;
7918
7918
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -7938,7 +7938,7 @@ function SlideThumbnailImpl({
7938
7938
  ...pptx.deviceStrokeStageStyle(scale)
7939
7939
  },
7940
7940
  children: [
7941
- /* @__PURE__ */ jsxRuntime.jsx(chunk552NAFTD_js.SlideBackgroundImageLayer, { slide }),
7941
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.SlideBackgroundImageLayer, { slide }),
7942
7942
  slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsxRuntime.jsx(
7943
7943
  "div",
7944
7944
  {
@@ -7948,7 +7948,7 @@ function SlideThumbnailImpl({
7948
7948
  }
7949
7949
  ),
7950
7950
  previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
7951
- chunk552NAFTD_js.StaticElementRenderer,
7951
+ chunkTVSTM5J5_js.StaticElementRenderer,
7952
7952
  {
7953
7953
  element,
7954
7954
  activeSlide: slide,
@@ -8504,7 +8504,7 @@ function SectionHeader({
8504
8504
  /* @__PURE__ */ jsxRuntime.jsx(
8505
8505
  lu.LuChevronDown,
8506
8506
  {
8507
- className: chunkSQUVXHAE_js.cn(
8507
+ className: chunk7DGKSEIU_js.cn(
8508
8508
  "h-3 w-3 flex-shrink-0 transition-transform",
8509
8509
  isCollapsed ? "-rotate-90" : "rotate-0"
8510
8510
  )
@@ -8655,7 +8655,7 @@ function LazyThumbnailInner({
8655
8655
  }
8656
8656
  var LazyThumbnail = React99__default.default.memo(LazyThumbnailInner);
8657
8657
  function declaredSectionFacts(groups, sectionId) {
8658
- const declared = groups.filter((group) => group.id !== chunkSQUVXHAE_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunkSQUVXHAE_js.UNGROUPED_SECTION_ID).map((group) => group.id);
8658
+ const declared = groups.filter((group) => group.id !== chunk7DGKSEIU_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunk7DGKSEIU_js.UNGROUPED_SECTION_ID).map((group) => group.id);
8659
8659
  return {
8660
8660
  isDeclared: declared.includes(sectionId),
8661
8661
  index: declared.indexOf(sectionId),
@@ -8740,7 +8740,7 @@ function SlideItemInner({
8740
8740
  "data-pptx-chrome": "slide-row",
8741
8741
  "aria-describedby": cue.labelId,
8742
8742
  "data-pptx-slide-hidden": cue.marker,
8743
- className: chunkSQUVXHAE_js.cn(
8743
+ className: chunk7DGKSEIU_js.cn(
8744
8744
  "group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
8745
8745
  isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
8746
8746
  isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
@@ -8762,7 +8762,7 @@ function SlideItemInner({
8762
8762
  /* @__PURE__ */ jsxRuntime.jsx(
8763
8763
  "span",
8764
8764
  {
8765
- className: chunkSQUVXHAE_js.cn(
8765
+ className: chunk7DGKSEIU_js.cn(
8766
8766
  "text-[10px] tabular-nums text-right select-none w-full",
8767
8767
  isActive ? "text-primary font-medium" : "text-muted-foreground"
8768
8768
  ),
@@ -8785,7 +8785,7 @@ function SlideItemInner({
8785
8785
  /* @__PURE__ */ jsxRuntime.jsxs(
8786
8786
  "div",
8787
8787
  {
8788
- className: chunkSQUVXHAE_js.cn(
8788
+ className: chunk7DGKSEIU_js.cn(
8789
8789
  "relative shrink-0 overflow-hidden border transition-colors bg-white",
8790
8790
  isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
8791
8791
  ),
@@ -8984,7 +8984,7 @@ function SlidesPaneSidebar({
8984
8984
  tableStyleContext
8985
8985
  }) {
8986
8986
  const { t } = reactI18next.useTranslation();
8987
- const collab = chunk552NAFTD_js.useCollaboration();
8987
+ const collab = chunkTVSTM5J5_js.useCollaboration();
8988
8988
  const slideRefs = React99.useRef(/* @__PURE__ */ new Map());
8989
8989
  const renameInputRef = React99.useRef(null);
8990
8990
  const slidePresenceMap = React99.useMemo(() => {
@@ -9009,7 +9009,7 @@ function SlidesPaneSidebar({
9009
9009
  () => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
9010
9010
  [canvasSize.width, canvasSize.height, previewWidth]
9011
9011
  );
9012
- const showSectionHeaders = sectionGroups.some((group) => group.id !== chunkSQUVXHAE_js.DEFAULT_SECTION_GROUP_ID);
9012
+ const showSectionHeaders = sectionGroups.some((group) => group.id !== chunk7DGKSEIU_js.DEFAULT_SECTION_GROUP_ID);
9013
9013
  const {
9014
9014
  collapsedSections,
9015
9015
  renamingSectionId,
@@ -9079,7 +9079,7 @@ function SlidesPaneSidebar({
9079
9079
  [sectionGroups, showSectionHeaders, effectiveCollapsed]
9080
9080
  );
9081
9081
  const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
9082
- const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunk552NAFTD_js.useVirtualizedSlides({
9082
+ const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkTVSTM5J5_js.useVirtualizedSlides({
9083
9083
  totalItems: shouldVirtualize ? flatItems.length : 0,
9084
9084
  itemHeight: estimatedItemHeight
9085
9085
  });
@@ -9336,7 +9336,7 @@ function HandoutMasterPanel({
9336
9336
  {
9337
9337
  type: "button",
9338
9338
  "aria-pressed": slidesPerPage === count,
9339
- className: chunkSQUVXHAE_js.cn(
9339
+ className: chunk7DGKSEIU_js.cn(
9340
9340
  "px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
9341
9341
  slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
9342
9342
  ),
@@ -9454,7 +9454,7 @@ function SlideMastersList({
9454
9454
  ref: isMasterActive ? activeRef : void 0,
9455
9455
  "aria-pressed": isMasterActive,
9456
9456
  "aria-label": master.name || t("pptx.master.master"),
9457
- className: chunkSQUVXHAE_js.cn(
9457
+ className: chunk7DGKSEIU_js.cn(
9458
9458
  "group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
9459
9459
  isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
9460
9460
  ),
@@ -9471,7 +9471,7 @@ function SlideMastersList({
9471
9471
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
9472
9472
  "span",
9473
9473
  {
9474
- className: chunkSQUVXHAE_js.cn(
9474
+ className: chunk7DGKSEIU_js.cn(
9475
9475
  "text-[10px] font-medium",
9476
9476
  isMasterActive ? "text-amber-400" : "text-muted-foreground"
9477
9477
  ),
@@ -9490,7 +9490,7 @@ function SlideMastersList({
9490
9490
  ref: isLayoutActive ? activeRef : void 0,
9491
9491
  "aria-pressed": isLayoutActive,
9492
9492
  "aria-label": layout.name || t("pptx.master.layout"),
9493
- className: chunkSQUVXHAE_js.cn(
9493
+ className: chunk7DGKSEIU_js.cn(
9494
9494
  "group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
9495
9495
  isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
9496
9496
  ),
@@ -9507,7 +9507,7 @@ function SlideMastersList({
9507
9507
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
9508
9508
  "span",
9509
9509
  {
9510
- className: chunkSQUVXHAE_js.cn(
9510
+ className: chunk7DGKSEIU_js.cn(
9511
9511
  "text-[9px]",
9512
9512
  isLayoutActive ? "text-primary" : "text-muted-foreground"
9513
9513
  ),
@@ -9599,7 +9599,7 @@ function MasterViewSidebar({
9599
9599
  type: "button",
9600
9600
  role: "tab",
9601
9601
  "aria-selected": masterViewTab === tab.key,
9602
- className: chunkSQUVXHAE_js.cn(
9602
+ className: chunk7DGKSEIU_js.cn(
9603
9603
  "flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
9604
9604
  masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
9605
9605
  ),
@@ -10102,7 +10102,7 @@ function SectionBlock({
10102
10102
  /* @__PURE__ */ jsxRuntime.jsx(
10103
10103
  lu.LuChevronDown,
10104
10104
  {
10105
- className: chunkSQUVXHAE_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
10105
+ className: chunk7DGKSEIU_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
10106
10106
  }
10107
10107
  ),
10108
10108
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
@@ -10151,7 +10151,7 @@ function SlideCardImpl({
10151
10151
  return /* @__PURE__ */ jsxRuntime.jsxs(
10152
10152
  "div",
10153
10153
  {
10154
- className: chunkSQUVXHAE_js.cn(
10154
+ className: chunk7DGKSEIU_js.cn(
10155
10155
  "group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
10156
10156
  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",
10157
10157
  slide.hidden && "opacity-40"
@@ -10174,7 +10174,7 @@ function SlideCardImpl({
10174
10174
  /* @__PURE__ */ jsxRuntime.jsx(
10175
10175
  "span",
10176
10176
  {
10177
- className: chunkSQUVXHAE_js.cn(
10177
+ className: chunk7DGKSEIU_js.cn(
10178
10178
  "text-[11px] font-medium px-0.5",
10179
10179
  isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
10180
10180
  ),
@@ -10916,7 +10916,7 @@ function ReadingViewStage({
10916
10916
  "div",
10917
10917
  {
10918
10918
  className: "absolute inset-0",
10919
- style: { backgroundColor: chunkSQUVXHAE_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
10919
+ style: { backgroundColor: chunk7DGKSEIU_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
10920
10920
  }
10921
10921
  ),
10922
10922
  slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
@@ -10935,7 +10935,7 @@ function ReadingViewStage({
10935
10935
  className: "absolute left-0 top-0 origin-top-left",
10936
10936
  style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
10937
10937
  children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
10938
- chunk552NAFTD_js.StaticElementRenderer,
10938
+ chunkTVSTM5J5_js.StaticElementRenderer,
10939
10939
  {
10940
10940
  element,
10941
10941
  activeSlide: slide,
@@ -11147,7 +11147,7 @@ function renderRichNotesSegments(segments) {
11147
11147
  if (segment.style.fontFamily) {
11148
11148
  style.fontFamily = segment.style.fontFamily;
11149
11149
  }
11150
- if (segment.style.hyperlink && chunkSQUVXHAE_js.isUrlSafe(segment.style.hyperlink)) {
11150
+ if (segment.style.hyperlink && chunk7DGKSEIU_js.isUrlSafe(segment.style.hyperlink)) {
11151
11151
  const safeHref = segment.style.hyperlink;
11152
11152
  style.color = "#4a9eff";
11153
11153
  style.textDecoration = "underline";
@@ -11160,7 +11160,7 @@ function renderRichNotesSegments(segments) {
11160
11160
  style,
11161
11161
  onClick: (e) => {
11162
11162
  e.preventDefault();
11163
- chunkSQUVXHAE_js.safeOpenUrl(safeHref);
11163
+ chunk7DGKSEIU_js.safeOpenUrl(safeHref);
11164
11164
  },
11165
11165
  children: segment.text
11166
11166
  },
@@ -11509,7 +11509,7 @@ function useSlideNotes({
11509
11509
  const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
11510
11510
  if (href && (e.ctrlKey || e.metaKey)) {
11511
11511
  e.preventDefault();
11512
- chunkSQUVXHAE_js.safeOpenUrl(href);
11512
+ chunk7DGKSEIU_js.safeOpenUrl(href);
11513
11513
  }
11514
11514
  }, []);
11515
11515
  return {
@@ -11590,7 +11590,7 @@ function SlideNotesPanel({
11590
11590
  });
11591
11591
  const hasNotes = draft.trim().length > 0;
11592
11592
  const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
11593
- const { dragY, handlers: dragHandlers } = chunk552NAFTD_js.useSheetDismissDrag(onToggle);
11593
+ const { dragY, handlers: dragHandlers } = chunkTVSTM5J5_js.useSheetDismissDrag(onToggle);
11594
11594
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11595
11595
  isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
11596
11596
  "button",
@@ -11606,7 +11606,7 @@ function SlideNotesPanel({
11606
11606
  {
11607
11607
  ref: rootRef,
11608
11608
  "data-pptx-chrome": "notes",
11609
- className: chunkSQUVXHAE_js.cn(
11609
+ className: chunk7DGKSEIU_js.cn(
11610
11610
  "flex flex-col border-t border-border/60 bg-background select-none",
11611
11611
  // On mobile, hide the entire notes strip when collapsed: the
11612
11612
  // MobileBottomBar's Notes button is the entry point instead.
@@ -11970,7 +11970,7 @@ function SlideDiffRow({
11970
11970
  return /* @__PURE__ */ jsxRuntime.jsxs(
11971
11971
  "div",
11972
11972
  {
11973
- className: chunkSQUVXHAE_js.cn(
11973
+ className: chunk7DGKSEIU_js.cn(
11974
11974
  "rounded-lg border transition-colors",
11975
11975
  isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
11976
11976
  ),
@@ -11984,7 +11984,7 @@ function SlideDiffRow({
11984
11984
  children: [
11985
11985
  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" }),
11986
11986
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
11987
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkSQUVXHAE_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
11987
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk7DGKSEIU_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
11988
11988
  diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
11989
11989
  diff.changes.length,
11990
11990
  " ",
@@ -11994,7 +11994,7 @@ function SlideDiffRow({
11994
11994
  isResolved && /* @__PURE__ */ jsxRuntime.jsx(
11995
11995
  "span",
11996
11996
  {
11997
- className: chunkSQUVXHAE_js.cn(
11997
+ className: chunk7DGKSEIU_js.cn(
11998
11998
  "text-[10px] font-medium",
11999
11999
  accepted ? "text-green-400" : "text-muted-foreground"
12000
12000
  ),
@@ -12022,7 +12022,7 @@ function SlideDiffRow({
12022
12022
  /* @__PURE__ */ jsxRuntime.jsx(
12023
12023
  "div",
12024
12024
  {
12025
- className: chunkSQUVXHAE_js.cn(
12025
+ className: chunk7DGKSEIU_js.cn(
12026
12026
  "rounded border overflow-hidden",
12027
12027
  diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
12028
12028
  ),
@@ -12727,7 +12727,7 @@ function DocumentPropertiesDialog({
12727
12727
  const handleClose = React99.useCallback(() => {
12728
12728
  onClose();
12729
12729
  }, [onClose]);
12730
- const { panelStyle, handlers: dragHandlers } = chunk552NAFTD_js.useModalDismissDrag(handleClose);
12730
+ const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(handleClose);
12731
12731
  if (!isOpen) {
12732
12732
  return null;
12733
12733
  }
@@ -13324,7 +13324,7 @@ function PresentationSubtitleBar({
13324
13324
  }) {
13325
13325
  const { t } = reactI18next.useTranslation();
13326
13326
  const language = pptx.subtitleRecognitionLanguage(
13327
- pptx.subtitleSettingsFromOptions(chunk552NAFTD_js.useViewerOptionsContext()),
13327
+ pptx.subtitleSettingsFromOptions(chunkTVSTM5J5_js.useViewerOptionsContext()),
13328
13328
  typeof navigator === "undefined" ? "en-US" : navigator.language
13329
13329
  );
13330
13330
  const [captionText, setCaptionText] = React99.useState("");
@@ -13492,7 +13492,7 @@ function ScaledSlidePreviewImpl({
13492
13492
  {
13493
13493
  className: "absolute inset-0",
13494
13494
  style: {
13495
- backgroundColor: chunkSQUVXHAE_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
13495
+ backgroundColor: chunk7DGKSEIU_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
13496
13496
  }
13497
13497
  }
13498
13498
  ),
@@ -13518,7 +13518,7 @@ function ScaledSlidePreviewImpl({
13518
13518
  ...pptx.deviceStrokeStageStyle(scale)
13519
13519
  },
13520
13520
  children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
13521
- chunk552NAFTD_js.StaticElementRenderer,
13521
+ chunkTVSTM5J5_js.StaticElementRenderer,
13522
13522
  {
13523
13523
  element,
13524
13524
  activeSlide: slide,
@@ -14235,7 +14235,7 @@ function getElementDisplayName(element, index) {
14235
14235
  if (element.name && element.name.trim().length > 0) {
14236
14236
  return element.name.trim();
14237
14237
  }
14238
- if ((0, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(element) && element.text && element.text.trim().length > 0) {
14238
+ if ((0, chunk7DGKSEIU_js.dist_exports.hasTextProperties)(element) && element.text && element.text.trim().length > 0) {
14239
14239
  return element.text.trim().slice(0, 32);
14240
14240
  }
14241
14241
  const label = TYPE_LABELS[element.type] ?? "Object";
@@ -14408,7 +14408,7 @@ function SelectionPane({
14408
14408
  setDragIndex(null);
14409
14409
  setDragOverIndex(null);
14410
14410
  },
14411
- className: chunkSQUVXHAE_js.cn(
14411
+ className: chunk7DGKSEIU_js.cn(
14412
14412
  "flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
14413
14413
  isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
14414
14414
  dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
@@ -14462,13 +14462,13 @@ function SelectionPane({
14462
14462
  }
14463
14463
  var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
14464
14464
  var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
14465
- var ENTRANCE_PRESETS = chunkSQUVXHAE_js.ANIMATION_PRESET_OPTIONS.filter(
14465
+ var ENTRANCE_PRESETS = chunk7DGKSEIU_js.ANIMATION_PRESET_OPTIONS.filter(
14466
14466
  (o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
14467
14467
  );
14468
- var EXIT_PRESETS = chunkSQUVXHAE_js.ANIMATION_PRESET_OPTIONS.filter(
14468
+ var EXIT_PRESETS = chunk7DGKSEIU_js.ANIMATION_PRESET_OPTIONS.filter(
14469
14469
  (o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
14470
14470
  );
14471
- var EMPHASIS_PRESETS = chunkSQUVXHAE_js.ANIMATION_PRESET_OPTIONS.filter(
14471
+ var EMPHASIS_PRESETS = chunk7DGKSEIU_js.ANIMATION_PRESET_OPTIONS.filter(
14472
14472
  (o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
14473
14473
  );
14474
14474
  var TIMING_CURVE_OPTIONS = [
@@ -14634,7 +14634,7 @@ function AnimationTimelineSection({
14634
14634
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
14635
14635
  "div",
14636
14636
  {
14637
- className: chunkSQUVXHAE_js.cn(
14637
+ className: chunk7DGKSEIU_js.cn(
14638
14638
  "absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
14639
14639
  animationTypeColor(bar.anim),
14640
14640
  bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
@@ -14663,7 +14663,7 @@ function AnimationTimelineSection({
14663
14663
  onDragLeave: handleDragLeave,
14664
14664
  onDrop: (e) => handleDrop(index, e),
14665
14665
  title: t("pptx.animation.nativeEffectHint"),
14666
- className: chunkSQUVXHAE_js.cn(
14666
+ className: chunk7DGKSEIU_js.cn(
14667
14667
  "flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
14668
14668
  "bg-muted/20 text-muted-foreground/70",
14669
14669
  isDragOver && "border-t-2 border-primary"
@@ -14702,7 +14702,7 @@ function AnimationTimelineSection({
14702
14702
  onDragEnd: handleDragEnd,
14703
14703
  onMouseEnter: () => handleAnimationHover(anim),
14704
14704
  onMouseLeave: handleAnimationHoverEnd,
14705
- className: chunkSQUVXHAE_js.cn(
14705
+ className: chunk7DGKSEIU_js.cn(
14706
14706
  "flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
14707
14707
  isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
14708
14708
  isDragging && "opacity-40",
@@ -14834,7 +14834,7 @@ function EffectSoundRow({
14834
14834
  }
14835
14835
  const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
14836
14836
  if (asset) {
14837
- chunk552NAFTD_js.playAnimationSound(asset.dataUrl);
14837
+ chunkTVSTM5J5_js.playAnimationSound(asset.dataUrl);
14838
14838
  }
14839
14839
  };
14840
14840
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -15009,7 +15009,7 @@ function useAnimationPreview({
15009
15009
  }) {
15010
15010
  const handleAnimationHover = React99.useCallback((anim) => {
15011
15011
  if (anim.motionPath) {
15012
- chunkSQUVXHAE_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
15012
+ chunk7DGKSEIU_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
15013
15013
  durationMs: anim.durationMs,
15014
15014
  delayMs: anim.delayMs,
15015
15015
  timingCurve: anim.timingCurve
@@ -15020,19 +15020,19 @@ function useAnimationPreview({
15020
15020
  if (!preset || preset === "none") {
15021
15021
  return;
15022
15022
  }
15023
- chunkSQUVXHAE_js.startPreviewAnimation(anim.elementId, preset, {
15023
+ chunk7DGKSEIU_js.startPreviewAnimation(anim.elementId, preset, {
15024
15024
  direction: anim.direction,
15025
15025
  durationMs: anim.durationMs ?? 500,
15026
15026
  timingCurve: anim.timingCurve
15027
15027
  });
15028
15028
  }, []);
15029
- const handleAnimationHoverEnd = React99.useCallback(() => chunkSQUVXHAE_js.stopPreviewAnimation(), []);
15029
+ const handleAnimationHoverEnd = React99.useCallback(() => chunk7DGKSEIU_js.stopPreviewAnimation(), []);
15030
15030
  const handlePreviewClick = React99.useCallback(() => {
15031
15031
  if (!selectedElementAnimation) {
15032
15032
  return;
15033
15033
  }
15034
15034
  if (selectedElementAnimation.motionPath) {
15035
- chunkSQUVXHAE_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
15035
+ chunk7DGKSEIU_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
15036
15036
  durationMs: selectedElementAnimation.durationMs,
15037
15037
  delayMs: selectedElementAnimation.delayMs,
15038
15038
  timingCurve: selectedElementAnimation.timingCurve
@@ -15043,7 +15043,7 @@ function useAnimationPreview({
15043
15043
  if (!preset || preset === "none") {
15044
15044
  return;
15045
15045
  }
15046
- chunkSQUVXHAE_js.startPreviewAnimation(selectedElementId, preset, {
15046
+ chunk7DGKSEIU_js.startPreviewAnimation(selectedElementId, preset, {
15047
15047
  direction: selectedElementAnimation.direction,
15048
15048
  durationMs: selectedElementAnimation.durationMs ?? 500,
15049
15049
  timingCurve: selectedElementAnimation.timingCurve
@@ -15277,8 +15277,8 @@ function useAnimationHandlers({
15277
15277
  if (!el) {
15278
15278
  return anim.elementId.slice(0, 8);
15279
15279
  }
15280
- const text = (0, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
15281
- return text || chunkSQUVXHAE_js.getElementLabel(el);
15280
+ const text = (0, chunk7DGKSEIU_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
15281
+ return text || chunk7DGKSEIU_js.getElementLabel(el);
15282
15282
  },
15283
15283
  [activeSlide.elements]
15284
15284
  );
@@ -15288,8 +15288,8 @@ function useAnimationHandlers({
15288
15288
  if (!el) {
15289
15289
  return id.slice(0, 8);
15290
15290
  }
15291
- const text = (0, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
15292
- return text || chunkSQUVXHAE_js.getElementLabel(el);
15291
+ const text = (0, chunk7DGKSEIU_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
15292
+ return text || chunk7DGKSEIU_js.getElementLabel(el);
15293
15293
  }).join(", "),
15294
15294
  [activeSlide.elements]
15295
15295
  );
@@ -15346,7 +15346,7 @@ function AnimationPanel({
15346
15346
  onUpdateSlide
15347
15347
  }) {
15348
15348
  const { t } = reactI18next.useTranslation();
15349
- const { viewportWidth } = chunk552NAFTD_js.useIsMobile();
15349
+ const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
15350
15350
  const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
15351
15351
  const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
15352
15352
  const handlers = useAnimationHandlers({
@@ -15474,7 +15474,7 @@ function AnimationPanel({
15474
15474
  type: "button",
15475
15475
  disabled: !canEdit,
15476
15476
  style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
15477
- className: chunkSQUVXHAE_js.cn(
15477
+ className: chunk7DGKSEIU_js.cn(
15478
15478
  "flex items-center justify-center rounded border transition-colors",
15479
15479
  isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
15480
15480
  ),
@@ -15552,7 +15552,7 @@ function AnimationPanel({
15552
15552
  style: fieldStyle,
15553
15553
  children: [
15554
15554
  /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
15555
- activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkSQUVXHAE_js.getElementLabel(el) }, el.id))
15555
+ activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunk7DGKSEIU_js.getElementLabel(el) }, el.id))
15556
15556
  ]
15557
15557
  }
15558
15558
  )
@@ -15700,7 +15700,7 @@ function ActionTargetFields({
15700
15700
  type: "text",
15701
15701
  disabled: !canEdit,
15702
15702
  "aria-label": t(urlLabelKey),
15703
- className: chunkSQUVXHAE_js.cn(INPUT2, "w-full"),
15703
+ className: chunk7DGKSEIU_js.cn(INPUT2, "w-full"),
15704
15704
  placeholder: "https://...",
15705
15705
  value: url ?? "",
15706
15706
  onChange: (e) => onChange({ url: e.target.value })
@@ -15714,7 +15714,7 @@ function ActionTargetFields({
15714
15714
  type: "number",
15715
15715
  disabled: !canEdit,
15716
15716
  "aria-label": t("pptx.action.gotoSlide"),
15717
- className: chunkSQUVXHAE_js.cn(INPUT2, "w-full"),
15717
+ className: chunk7DGKSEIU_js.cn(INPUT2, "w-full"),
15718
15718
  placeholder: t("pptx.action.slideNumberPlaceholder"),
15719
15719
  min: 1,
15720
15720
  max: slideCount,
@@ -15736,7 +15736,7 @@ function ActionTargetFields({
15736
15736
  "data-testid": "pptx-action-custom-show",
15737
15737
  disabled: !canEdit,
15738
15738
  "aria-label": t("pptx.hyperlink.customShowLabel"),
15739
- className: chunkSQUVXHAE_js.cn(INPUT2, "w-full"),
15739
+ className: chunk7DGKSEIU_js.cn(INPUT2, "w-full"),
15740
15740
  value: customShowId ?? "",
15741
15741
  onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
15742
15742
  children: [
@@ -15769,11 +15769,11 @@ function ActionSettingsPanel({
15769
15769
  onUpdateElement
15770
15770
  }) {
15771
15771
  const { t } = reactI18next.useTranslation();
15772
- const clickAction = selectedElement.actionClick ? (0, chunkSQUVXHAE_js.dist_exports.pptxActionToElementAction)(selectedElement.actionClick, "click") : void 0;
15773
- const hoverAction = selectedElement.actionHover ? (0, chunkSQUVXHAE_js.dist_exports.pptxActionToElementAction)(selectedElement.actionHover, "hover") : void 0;
15772
+ const clickAction = selectedElement.actionClick ? (0, chunk7DGKSEIU_js.dist_exports.pptxActionToElementAction)(selectedElement.actionClick, "click") : void 0;
15773
+ const hoverAction = selectedElement.actionHover ? (0, chunk7DGKSEIU_js.dist_exports.pptxActionToElementAction)(selectedElement.actionHover, "hover") : void 0;
15774
15774
  const updateAction = (trigger, type, patch) => {
15775
15775
  const ea = { trigger, type, ...patch };
15776
- const pa = (0, chunkSQUVXHAE_js.dist_exports.elementActionToPptxAction)(ea);
15776
+ const pa = (0, chunk7DGKSEIU_js.dist_exports.elementActionToPptxAction)(ea);
15777
15777
  if (trigger === "click") {
15778
15778
  onUpdateElement({ actionClick: pa });
15779
15779
  } else {
@@ -15858,7 +15858,7 @@ function ActionTriggerSection({
15858
15858
  {
15859
15859
  disabled: !canEdit,
15860
15860
  "aria-label": label,
15861
- className: chunkSQUVXHAE_js.cn(INPUT2, "w-full"),
15861
+ className: chunk7DGKSEIU_js.cn(INPUT2, "w-full"),
15862
15862
  value: effectiveType,
15863
15863
  onChange: (e) => changeType(e.target.value),
15864
15864
  children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
@@ -16246,7 +16246,7 @@ function ChartDataGrid({
16246
16246
  }) {
16247
16247
  const { t } = reactI18next.useTranslation();
16248
16248
  const highlightRef = React99.useRef(null);
16249
- const { viewportWidth } = chunk552NAFTD_js.useIsMobile();
16249
+ const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
16250
16250
  const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
16251
16251
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
16252
16252
  const rowHeaderClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10 bg-card" : "";
@@ -17603,8 +17603,8 @@ function ChartUserShapeOptions({
17603
17603
  }
17604
17604
  function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
17605
17605
  const chartData = selectedElement.chartData;
17606
- const followDataPoint = chunk552NAFTD_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
17607
- const { selection: partSelection } = chunk552NAFTD_js.useChartPartSelection();
17606
+ const followDataPoint = chunkTVSTM5J5_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
17607
+ const { selection: partSelection } = chunkTVSTM5J5_js.useChartPartSelection();
17608
17608
  const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
17609
17609
  const title = chartData?.title;
17610
17610
  const chartType = chartData?.chartType;
@@ -17818,40 +17818,40 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
17818
17818
  [chartData, selectedElement, replaceChartData]
17819
17819
  );
17820
17820
  const setAxisLogScale = React99.useCallback(
17821
- (axisType, opts) => applyChartOp((el) => (0, chunkSQUVXHAE_js.dist_exports.setChartAxisLogScale)(el, axisType, opts)),
17821
+ (axisType, opts) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartAxisLogScale)(el, axisType, opts)),
17822
17822
  [applyChartOp]
17823
17823
  );
17824
17824
  const setAxisTitleStyle = React99.useCallback(
17825
- (axisType, edit) => applyChartOp((el) => (0, chunkSQUVXHAE_js.dist_exports.setChartAxisTitleStyle)(el, axisType, edit)),
17825
+ (axisType, edit) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartAxisTitleStyle)(el, axisType, edit)),
17826
17826
  [applyChartOp]
17827
17827
  );
17828
17828
  const setGridlineStyle = React99.useCallback(
17829
- (axisType, which, edit) => applyChartOp((el) => (0, chunkSQUVXHAE_js.dist_exports.setChartAxisGridlineStyle)(el, axisType, which, edit)),
17829
+ (axisType, which, edit) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartAxisGridlineStyle)(el, axisType, which, edit)),
17830
17830
  [applyChartOp]
17831
17831
  );
17832
17832
  const setSeriesMarker = React99.useCallback(
17833
- (index, marker) => applyChartOp((el) => (0, chunkSQUVXHAE_js.dist_exports.setChartSeriesMarker)(el, index, marker)),
17833
+ (index, marker) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartSeriesMarker)(el, index, marker)),
17834
17834
  [applyChartOp]
17835
17835
  );
17836
17836
  const setSeriesType = React99.useCallback(
17837
- (index, seriesType) => applyChartOp((el) => (0, chunkSQUVXHAE_js.dist_exports.setChartSeriesChartType)(el, index, seriesType)),
17837
+ (index, seriesType) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartSeriesChartType)(el, index, seriesType)),
17838
17838
  [applyChartOp]
17839
17839
  );
17840
17840
  const setPointFill = React99.useCallback(
17841
- (seriesIndex, pointIndex, color) => applyChartOp((el) => (0, chunkSQUVXHAE_js.dist_exports.setChartDataPointFill)(el, seriesIndex, pointIndex, color)),
17841
+ (seriesIndex, pointIndex, color) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartDataPointFill)(el, seriesIndex, pointIndex, color)),
17842
17842
  [applyChartOp]
17843
17843
  );
17844
17844
  const setPointExplosion = React99.useCallback(
17845
- (seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0, chunkSQUVXHAE_js.dist_exports.setChartDataPointExplosion)(el, seriesIndex, pointIndex, explosion)),
17845
+ (seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartDataPointExplosion)(el, seriesIndex, pointIndex, explosion)),
17846
17846
  [applyChartOp]
17847
17847
  );
17848
17848
  const setPointMarker = React99.useCallback(
17849
- (seriesIndex, pointIndex, marker) => applyChartOp((el) => (0, chunkSQUVXHAE_js.dist_exports.setChartDataPointMarker)(el, seriesIndex, pointIndex, marker)),
17849
+ (seriesIndex, pointIndex, marker) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartDataPointMarker)(el, seriesIndex, pointIndex, marker)),
17850
17850
  [applyChartOp]
17851
17851
  );
17852
17852
  const setPointLabel = React99.useCallback(
17853
17853
  (seriesIndex, pointIndex, text) => applyChartOp(
17854
- (el) => (0, chunkSQUVXHAE_js.dist_exports.setChartDataPointLabel)(el, seriesIndex, pointIndex, text !== null ? { text } : null)
17854
+ (el) => (0, chunk7DGKSEIU_js.dist_exports.setChartDataPointLabel)(el, seriesIndex, pointIndex, text !== null ? { text } : null)
17855
17855
  ),
17856
17856
  [applyChartOp]
17857
17857
  );
@@ -18119,17 +18119,17 @@ function OleEditorDialog({
18119
18119
  const kind = descriptor.contentTab.kind;
18120
18120
  const load = async () => {
18121
18121
  if (kind === "sheet") {
18122
- const value = await (0, chunkSQUVXHAE_js.dist_exports.getOleSheetGrid)(element);
18122
+ const value = await (0, chunk7DGKSEIU_js.dist_exports.getOleSheetGrid)(element);
18123
18123
  if (!cancelled) {
18124
18124
  setGrid(value);
18125
18125
  }
18126
18126
  } else if (kind === "document") {
18127
- const value = await (0, chunkSQUVXHAE_js.dist_exports.getOleDocumentParagraphs)(element);
18127
+ const value = await (0, chunk7DGKSEIU_js.dist_exports.getOleDocumentParagraphs)(element);
18128
18128
  if (!cancelled) {
18129
18129
  setParagraphs(value);
18130
18130
  }
18131
18131
  } else if (kind === "deck") {
18132
- const value = await (0, chunkSQUVXHAE_js.dist_exports.getOleNestedDeckDetail)(element);
18132
+ const value = await (0, chunk7DGKSEIU_js.dist_exports.getOleNestedDeckDetail)(element);
18133
18133
  if (!cancelled) {
18134
18134
  setDeckSlides(value);
18135
18135
  }
@@ -18155,9 +18155,9 @@ function OleEditorDialog({
18155
18155
  const handleCellEdit = React99.useCallback(
18156
18156
  async (row, col, value) => {
18157
18157
  try {
18158
- const updated = await (0, chunkSQUVXHAE_js.dist_exports.applyOleSheetCellEdit)(element, { row, col, value });
18158
+ const updated = await (0, chunk7DGKSEIU_js.dist_exports.applyOleSheetCellEdit)(element, { row, col, value });
18159
18159
  commit(updated);
18160
- const refreshed = await (0, chunkSQUVXHAE_js.dist_exports.getOleSheetGrid)(updated);
18160
+ const refreshed = await (0, chunk7DGKSEIU_js.dist_exports.getOleSheetGrid)(updated);
18161
18161
  if (mountedRef.current) {
18162
18162
  setGrid(refreshed);
18163
18163
  }
@@ -18172,9 +18172,9 @@ function OleEditorDialog({
18172
18172
  const handleParagraphEdit = React99.useCallback(
18173
18173
  async (index, text) => {
18174
18174
  try {
18175
- const updated = await (0, chunkSQUVXHAE_js.dist_exports.applyOleDocumentParagraphEdit)(element, index, text);
18175
+ const updated = await (0, chunk7DGKSEIU_js.dist_exports.applyOleDocumentParagraphEdit)(element, index, text);
18176
18176
  commit(updated);
18177
- const refreshed = await (0, chunkSQUVXHAE_js.dist_exports.getOleDocumentParagraphs)(updated);
18177
+ const refreshed = await (0, chunk7DGKSEIU_js.dist_exports.getOleDocumentParagraphs)(updated);
18178
18178
  if (mountedRef.current) {
18179
18179
  setParagraphs(refreshed);
18180
18180
  }
@@ -18189,14 +18189,14 @@ function OleEditorDialog({
18189
18189
  const handleDeckElementEdit = React99.useCallback(
18190
18190
  async (slideIndex, deckElementId, text) => {
18191
18191
  try {
18192
- const updated = await (0, chunkSQUVXHAE_js.dist_exports.applyOleNestedDeckElementTextEdit)(
18192
+ const updated = await (0, chunk7DGKSEIU_js.dist_exports.applyOleNestedDeckElementTextEdit)(
18193
18193
  element,
18194
18194
  slideIndex,
18195
18195
  deckElementId,
18196
18196
  text
18197
18197
  );
18198
18198
  commit(updated);
18199
- const refreshed = await (0, chunkSQUVXHAE_js.dist_exports.getOleNestedDeckDetail)(updated);
18199
+ const refreshed = await (0, chunk7DGKSEIU_js.dist_exports.getOleNestedDeckDetail)(updated);
18200
18200
  if (mountedRef.current) {
18201
18201
  setDeckSlides(refreshed);
18202
18202
  }
@@ -18212,7 +18212,7 @@ function OleEditorDialog({
18212
18212
  async (file) => {
18213
18213
  try {
18214
18214
  const bytes = new Uint8Array(await file.arrayBuffer());
18215
- const updated = await (0, chunkSQUVXHAE_js.dist_exports.replaceOleFile)(element, bytes, file.name);
18215
+ const updated = await (0, chunk7DGKSEIU_js.dist_exports.replaceOleFile)(element, bytes, file.name);
18216
18216
  commit(updated);
18217
18217
  if (mountedRef.current) {
18218
18218
  onClose();
@@ -18361,7 +18361,7 @@ function ConnectorArrowsSection({
18361
18361
  },
18362
18362
  disabled: !canEdit,
18363
18363
  className: SELECT_CLS2,
18364
- children: chunkSQUVXHAE_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18364
+ children: chunk7DGKSEIU_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18365
18365
  }
18366
18366
  )
18367
18367
  ] }, end);
@@ -18385,7 +18385,7 @@ function ConnectorArrowsSection({
18385
18385
  },
18386
18386
  disabled: !canEdit,
18387
18387
  className: SELECT_CLS2,
18388
- children: chunkSQUVXHAE_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18388
+ children: chunk7DGKSEIU_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18389
18389
  }
18390
18390
  )
18391
18391
  ] }),
@@ -18404,7 +18404,7 @@ function ConnectorArrowsSection({
18404
18404
  },
18405
18405
  disabled: !canEdit,
18406
18406
  className: SELECT_CLS2,
18407
- children: chunkSQUVXHAE_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18407
+ children: chunk7DGKSEIU_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18408
18408
  }
18409
18409
  )
18410
18410
  ] })
@@ -18484,7 +18484,7 @@ function OlePropertiesPanel({
18484
18484
  ] }),
18485
18485
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
18486
18486
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.type") }),
18487
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0, chunkSQUVXHAE_js.dist_exports.getOleObjectTypeLabel)(ole.oleObjectType) })
18487
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0, chunk7DGKSEIU_js.dist_exports.getOleObjectTypeLabel)(ole.oleObjectType) })
18488
18488
  ] }),
18489
18489
  ole.fileName && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
18490
18490
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.fileName") }),
@@ -18495,7 +18495,7 @@ function OlePropertiesPanel({
18495
18495
  /* @__PURE__ */ jsxRuntime.jsx(
18496
18496
  "span",
18497
18497
  {
18498
- className: chunkSQUVXHAE_js.cn(
18498
+ className: chunk7DGKSEIU_js.cn(
18499
18499
  "inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
18500
18500
  ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
18501
18501
  ),
@@ -18563,7 +18563,7 @@ function LayerOrderButtons({
18563
18563
  "button",
18564
18564
  {
18565
18565
  type: "button",
18566
- className: chunkSQUVXHAE_js.cn("flex-1", BTN2),
18566
+ className: chunk7DGKSEIU_js.cn("flex-1", BTN2),
18567
18567
  disabled: !canEdit,
18568
18568
  onClick: () => onMoveLayer("forward"),
18569
18569
  children: "\u2191 Forward"
@@ -18573,7 +18573,7 @@ function LayerOrderButtons({
18573
18573
  "button",
18574
18574
  {
18575
18575
  type: "button",
18576
- className: chunkSQUVXHAE_js.cn("flex-1", BTN2),
18576
+ className: chunk7DGKSEIU_js.cn("flex-1", BTN2),
18577
18577
  disabled: !canEdit,
18578
18578
  onClick: () => onMoveLayer("backward"),
18579
18579
  children: "\u2193 Backward"
@@ -18597,7 +18597,7 @@ function ArtisticEffectsGallery({
18597
18597
  {
18598
18598
  type: "button",
18599
18599
  disabled: !canEdit,
18600
- className: chunkSQUVXHAE_js.cn(
18600
+ className: chunk7DGKSEIU_js.cn(
18601
18601
  "flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
18602
18602
  isActive ? "border-primary bg-primary/10" : "border-border"
18603
18603
  ),
@@ -18659,7 +18659,7 @@ function ColorChangeSection({
18659
18659
  DebouncedColorInput,
18660
18660
  {
18661
18661
  disabled: !canEdit,
18662
- value: chunkSQUVXHAE_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
18662
+ value: chunk7DGKSEIU_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
18663
18663
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
18664
18664
  onCommit: (hex) => updateEffects({
18665
18665
  clrChange: {
@@ -18677,7 +18677,7 @@ function ColorChangeSection({
18677
18677
  DebouncedColorInput,
18678
18678
  {
18679
18679
  disabled: !canEdit || Boolean(cc.clrToTransparent),
18680
- value: chunkSQUVXHAE_js.normalizeHexColor(cc.clrTo, "#000000"),
18680
+ value: chunk7DGKSEIU_js.normalizeHexColor(cc.clrTo, "#000000"),
18681
18681
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
18682
18682
  onCommit: (hex) => updateEffects({
18683
18683
  clrChange: {
@@ -18737,7 +18737,7 @@ function ColorWashSection({
18737
18737
  DebouncedColorInput,
18738
18738
  {
18739
18739
  disabled: !canEdit,
18740
- value: chunkSQUVXHAE_js.normalizeHexColor(wash.color, "#0066cc"),
18740
+ value: chunk7DGKSEIU_js.normalizeHexColor(wash.color, "#0066cc"),
18741
18741
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
18742
18742
  onCommit: (hex) => updateEffects({
18743
18743
  colorWash: { color: hex, opacity: wash.opacity ?? 40 }
@@ -18840,8 +18840,8 @@ function DuotonePanel({
18840
18840
  }
18841
18841
  });
18842
18842
  }, [effects, onUpdateElement]);
18843
- const shadowColor = chunkSQUVXHAE_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
18844
- const highlightColor = chunkSQUVXHAE_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
18843
+ const shadowColor = chunk7DGKSEIU_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
18844
+ const highlightColor = chunk7DGKSEIU_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
18845
18845
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
18846
18846
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
18847
18847
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -18872,7 +18872,7 @@ function DuotonePanel({
18872
18872
  ] }),
18873
18873
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
18874
18874
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
18875
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunk552NAFTD_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
18875
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkTVSTM5J5_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
18876
18876
  "button",
18877
18877
  {
18878
18878
  type: "button",
@@ -19010,7 +19010,7 @@ function ImageCropSection({
19010
19010
  onUpdateElement
19011
19011
  }) {
19012
19012
  const { t } = reactI18next.useTranslation();
19013
- if (!(0, chunkSQUVXHAE_js.dist_exports.isImageLikeElement)(selectedElement)) {
19013
+ if (!(0, chunk7DGKSEIU_js.dist_exports.isImageLikeElement)(selectedElement)) {
19014
19014
  return null;
19015
19015
  }
19016
19016
  const croppable = pptx.cropResetState(selectedElement, canEdit, true).enabled;
@@ -19027,7 +19027,7 @@ function ImageCropSection({
19027
19027
  max: MAX_CROP_PERCENT,
19028
19028
  disabled: !croppable,
19029
19029
  className: "accent-primary",
19030
- value: Math.round(chunkSQUVXHAE_js.clampCropValue(selectedElement[key]) * 100),
19030
+ value: Math.round(chunk7DGKSEIU_js.clampCropValue(selectedElement[key]) * 100),
19031
19031
  onChange: (e) => onUpdateElement({
19032
19032
  [key]: Number(e.target.value) / 100
19033
19033
  })
@@ -19091,7 +19091,7 @@ function ImagePropertiesPanel({
19091
19091
  {
19092
19092
  rows: 2,
19093
19093
  disabled: !canEdit,
19094
- className: chunkSQUVXHAE_js.cn(INPUT2, "resize-none text-[11px]"),
19094
+ className: chunk7DGKSEIU_js.cn(INPUT2, "resize-none text-[11px]"),
19095
19095
  value: selectedElement.altText ?? "",
19096
19096
  onChange: (e) => onUpdateElement({
19097
19097
  altText: e.target.value
@@ -20031,7 +20031,7 @@ function AccessibilityTextSection({
20031
20031
  rows: 2,
20032
20032
  disabled: !canEdit,
20033
20033
  placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
20034
- className: chunkSQUVXHAE_js.cn(INPUT2, "resize-none text-[11px]"),
20034
+ className: chunk7DGKSEIU_js.cn(INPUT2, "resize-none text-[11px]"),
20035
20035
  value: fields.altText,
20036
20036
  onChange: (e) => onUpdateElement({ altText: e.target.value })
20037
20037
  }
@@ -20045,7 +20045,7 @@ function AccessibilityTextSection({
20045
20045
  type: "text",
20046
20046
  disabled: !canEdit,
20047
20047
  placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
20048
- className: chunkSQUVXHAE_js.cn(INPUT2, "text-[11px]"),
20048
+ className: chunk7DGKSEIU_js.cn(INPUT2, "text-[11px]"),
20049
20049
  value: fields.title,
20050
20050
  onChange: (e) => onUpdateElement({ title: e.target.value })
20051
20051
  }
@@ -20161,7 +20161,7 @@ var SHADOW_EFFECT_CONFIGS = [
20161
20161
  angle = (Math.atan2(offsetY, offsetX) * 180 / Math.PI + 360) % 360;
20162
20162
  }
20163
20163
  return {
20164
- shadowColor: chunkSQUVXHAE_js.normalizeHexColor(s?.shadowColor, "#000000"),
20164
+ shadowColor: chunk7DGKSEIU_js.normalizeHexColor(s?.shadowColor, "#000000"),
20165
20165
  shadowOpacity: s?.shadowOpacity ?? 0.35,
20166
20166
  shadowBlur: s?.shadowBlur ?? 6,
20167
20167
  shadowAngle: angle,
@@ -20177,7 +20177,7 @@ var SHADOW_EFFECT_CONFIGS = [
20177
20177
  key: "sc",
20178
20178
  label: "Shadow Color",
20179
20179
  type: "color",
20180
- read: (s) => chunkSQUVXHAE_js.normalizeHexColor(s?.shadowColor, "#000000"),
20180
+ read: (s) => chunk7DGKSEIU_js.normalizeHexColor(s?.shadowColor, "#000000"),
20181
20181
  write: (v) => ({ shadowColor: String(v) })
20182
20182
  },
20183
20183
  {
@@ -20313,7 +20313,7 @@ var SHADOW_EFFECT_CONFIGS = [
20313
20313
  label: "Inner Shadow",
20314
20314
  isOn: (s) => Boolean(s?.innerShadowColor) && s?.innerShadowColor !== "transparent",
20315
20315
  onEnable: (s) => ({
20316
- innerShadowColor: chunkSQUVXHAE_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
20316
+ innerShadowColor: chunk7DGKSEIU_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
20317
20317
  innerShadowOpacity: s?.innerShadowOpacity ?? 0.5,
20318
20318
  innerShadowBlur: s?.innerShadowBlur ?? 5,
20319
20319
  innerShadowOffsetX: s?.innerShadowOffsetX ?? 0,
@@ -20325,7 +20325,7 @@ var SHADOW_EFFECT_CONFIGS = [
20325
20325
  key: "isc",
20326
20326
  label: "Color",
20327
20327
  type: "color",
20328
- read: (s) => chunkSQUVXHAE_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
20328
+ read: (s) => chunk7DGKSEIU_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
20329
20329
  write: (v) => ({ innerShadowColor: String(v) })
20330
20330
  },
20331
20331
  {
@@ -20835,7 +20835,7 @@ function ColorPickerRow({
20835
20835
  pushColor(color);
20836
20836
  };
20837
20837
  const handleEyedropper = async () => {
20838
- const color = await chunkSQUVXHAE_js.openNativeEyeDropper();
20838
+ const color = await chunk7DGKSEIU_js.openNativeEyeDropper();
20839
20839
  if (color) {
20840
20840
  commit(color);
20841
20841
  }
@@ -20918,9 +20918,9 @@ function GradientStopRow({
20918
20918
  "input",
20919
20919
  {
20920
20920
  type: "color",
20921
- value: chunkSQUVXHAE_js.normalizeHexColor(stop2.color, "#3b82f6"),
20921
+ value: chunk7DGKSEIU_js.normalizeHexColor(stop2.color, "#3b82f6"),
20922
20922
  onChange: (e) => {
20923
- const hex = chunkSQUVXHAE_js.normalizeHexColor(e.target.value, "#3b82f6");
20923
+ const hex = chunk7DGKSEIU_js.normalizeHexColor(e.target.value, "#3b82f6");
20924
20924
  patchStop({ color: hex, colorRef: void 0 });
20925
20925
  pushColor(hex);
20926
20926
  },
@@ -21045,7 +21045,7 @@ function FillAdvancedControls({
21045
21045
  onClick: () => onUpdateGradientStops([
21046
21046
  ...gradientStops,
21047
21047
  {
21048
- color: chunkSQUVXHAE_js.normalizeHexColor(style?.fillColor, chunkSQUVXHAE_js.DEFAULT_FILL_COLOR),
21048
+ color: chunk7DGKSEIU_js.normalizeHexColor(style?.fillColor, chunk7DGKSEIU_js.DEFAULT_FILL_COLOR),
21049
21049
  position: 50,
21050
21050
  opacity: 1
21051
21051
  }
@@ -21059,9 +21059,9 @@ function FillAdvancedControls({
21059
21059
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
21060
21060
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
21061
21061
  /* @__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) => {
21062
- const fgColor = chunkSQUVXHAE_js.normalizeHexColor(style?.fillColor, chunkSQUVXHAE_js.DEFAULT_FILL_COLOR);
21063
- const bgColor = chunkSQUVXHAE_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
21064
- const svgPattern = chunkSQUVXHAE_js.getPatternSvg(opt.value, fgColor, bgColor);
21062
+ const fgColor = chunk7DGKSEIU_js.normalizeHexColor(style?.fillColor, chunk7DGKSEIU_js.DEFAULT_FILL_COLOR);
21063
+ const bgColor = chunk7DGKSEIU_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
21064
+ const svgPattern = chunk7DGKSEIU_js.getPatternSvg(opt.value, fgColor, bgColor);
21065
21065
  const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
21066
21066
  return /* @__PURE__ */ jsxRuntime.jsx(
21067
21067
  "button",
@@ -21094,7 +21094,7 @@ function FillAdvancedControls({
21094
21094
  {
21095
21095
  label: t("pptx.fillAdvanced.foregroundColor"),
21096
21096
  prefix: "pattern-fg",
21097
- value: chunkSQUVXHAE_js.normalizeHexColor(style?.fillColor, chunkSQUVXHAE_js.DEFAULT_FILL_COLOR),
21097
+ value: chunk7DGKSEIU_js.normalizeHexColor(style?.fillColor, chunk7DGKSEIU_js.DEFAULT_FILL_COLOR),
21098
21098
  disabled: isLine,
21099
21099
  onChange: (color) => onUpdateShapeStyle({ fillMode: "pattern", fillColor: color })
21100
21100
  }
@@ -21104,7 +21104,7 @@ function FillAdvancedControls({
21104
21104
  {
21105
21105
  label: t("pptx.fillAdvanced.backgroundColor"),
21106
21106
  prefix: "pattern-bg",
21107
- value: chunkSQUVXHAE_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
21107
+ value: chunk7DGKSEIU_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
21108
21108
  disabled: isLine,
21109
21109
  onChange: (color) => onUpdateShapeStyle({
21110
21110
  fillMode: "pattern",
@@ -21171,11 +21171,11 @@ function QuickStylesGallery({
21171
21171
  onUpdateShapeStyle
21172
21172
  }) {
21173
21173
  const { t } = reactI18next.useTranslation();
21174
- const { viewportWidth } = chunk552NAFTD_js.useIsMobile();
21174
+ const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
21175
21175
  const swatchMinHeight = pptx.getDensePanelTouchTargetPx(viewportWidth);
21176
21176
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
21177
21177
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: t("pptx.shape.quickStyles") }),
21178
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children: chunkSQUVXHAE_js.SHAPE_QUICK_STYLES.map((qs, idx) => /* @__PURE__ */ jsxRuntime.jsx(
21178
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children: chunk7DGKSEIU_js.SHAPE_QUICK_STYLES.map((qs, idx) => /* @__PURE__ */ jsxRuntime.jsx(
21179
21179
  "button",
21180
21180
  {
21181
21181
  type: "button",
@@ -21202,7 +21202,7 @@ function StrokeEffectsSection({
21202
21202
  {
21203
21203
  label: t("pptx.inspector.stroke"),
21204
21204
  prefix: "stroke",
21205
- value: chunkSQUVXHAE_js.normalizeHexColor(style?.strokeColor, chunkSQUVXHAE_js.DEFAULT_STROKE_COLOR),
21205
+ value: chunk7DGKSEIU_js.normalizeHexColor(style?.strokeColor, chunk7DGKSEIU_js.DEFAULT_STROKE_COLOR),
21206
21206
  selectedRef: style?.strokeColorRef,
21207
21207
  onChange: onSetStrokeColor
21208
21208
  }
@@ -21265,7 +21265,7 @@ function StrokeEffectsSection({
21265
21265
  strokeDash: e.target.value
21266
21266
  }),
21267
21267
  className: SEL,
21268
- children: chunkSQUVXHAE_js.STROKE_DASH_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
21268
+ children: chunk7DGKSEIU_js.STROKE_DASH_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
21269
21269
  }
21270
21270
  )
21271
21271
  ] }),
@@ -21355,10 +21355,10 @@ function FillStrokeProperties({
21355
21355
  return;
21356
21356
  }
21357
21357
  if (nextMode === "gradient") {
21358
- const existing = chunkSQUVXHAE_js.sanitizeGradientStops(style?.fillGradientStops);
21358
+ const existing = chunk7DGKSEIU_js.sanitizeGradientStops(style?.fillGradientStops);
21359
21359
  const stops = existing.length >= 2 ? existing : [
21360
21360
  {
21361
- color: chunkSQUVXHAE_js.normalizeHexColor(style?.fillColor, chunkSQUVXHAE_js.DEFAULT_FILL_COLOR),
21361
+ color: chunk7DGKSEIU_js.normalizeHexColor(style?.fillColor, chunk7DGKSEIU_js.DEFAULT_FILL_COLOR),
21362
21362
  position: 0,
21363
21363
  opacity: 1
21364
21364
  },
@@ -21383,7 +21383,7 @@ function FillStrokeProperties({
21383
21383
  onUpdateShapeStyle({ fillMode: "solid" });
21384
21384
  };
21385
21385
  const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
21386
- { color: chunkSQUVXHAE_js.DEFAULT_FILL_COLOR, position: 0 },
21386
+ { color: chunk7DGKSEIU_js.DEFAULT_FILL_COLOR, position: 0 },
21387
21387
  { color: "#ffffff", position: 100 }
21388
21388
  ];
21389
21389
  const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
@@ -21410,7 +21410,7 @@ function FillStrokeProperties({
21410
21410
  {
21411
21411
  label: t("pptx.fill.fill"),
21412
21412
  prefix: "fill",
21413
- value: chunkSQUVXHAE_js.normalizeHexColor(style?.fillColor, chunkSQUVXHAE_js.DEFAULT_FILL_COLOR),
21413
+ value: chunk7DGKSEIU_js.normalizeHexColor(style?.fillColor, chunk7DGKSEIU_js.DEFAULT_FILL_COLOR),
21414
21414
  selectedRef: style?.fillColorRef,
21415
21415
  disabled: line,
21416
21416
  onChange: onSetFillColor
@@ -21494,7 +21494,7 @@ function Text3DProperties({
21494
21494
  "input",
21495
21495
  {
21496
21496
  type: "color",
21497
- value: chunkSQUVXHAE_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
21497
+ value: chunk7DGKSEIU_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
21498
21498
  onChange: (e) => {
21499
21499
  update3d({ extrusionColor: e.target.value });
21500
21500
  pushColor(e.target.value);
@@ -21685,7 +21685,7 @@ function AdvancedTextFormatting({
21685
21685
  "input",
21686
21686
  {
21687
21687
  type: "color",
21688
- value: chunkSQUVXHAE_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
21688
+ value: chunk7DGKSEIU_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
21689
21689
  onChange: (e) => {
21690
21690
  onUpdateTextStyle({ highlightColor: e.target.value });
21691
21691
  pushColor(e.target.value);
@@ -21989,7 +21989,7 @@ function TextEffectsPanel({
21989
21989
  "input",
21990
21990
  {
21991
21991
  type: "color",
21992
- value: chunkSQUVXHAE_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
21992
+ value: chunk7DGKSEIU_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
21993
21993
  onChange: (e) => {
21994
21994
  onUpdateTextStyle({ textShadowColor: e.target.value });
21995
21995
  pushColor(e.target.value);
@@ -22096,7 +22096,7 @@ function TextEffectsPanel({
22096
22096
  "input",
22097
22097
  {
22098
22098
  type: "color",
22099
- value: chunkSQUVXHAE_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
22099
+ value: chunk7DGKSEIU_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
22100
22100
  onChange: (e) => {
22101
22101
  onUpdateTextStyle({ textGlowColor: e.target.value });
22102
22102
  pushColor(e.target.value);
@@ -22195,7 +22195,7 @@ function TextAdvancedSections({
22195
22195
  canEdit,
22196
22196
  onUpdateTextStyle
22197
22197
  }) {
22198
- if (!(0, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(selectedElement)) {
22198
+ if (!(0, chunk7DGKSEIU_js.dist_exports.hasTextProperties)(selectedElement)) {
22199
22199
  return null;
22200
22200
  }
22201
22201
  const ts = selectedElement.textStyle;
@@ -22224,22 +22224,22 @@ function ShapeTextPanels({
22224
22224
  }) {
22225
22225
  const { t } = reactI18next.useTranslation();
22226
22226
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
22227
- (0, chunkSQUVXHAE_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
22227
+ (0, chunk7DGKSEIU_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
22228
22228
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
22229
22229
  /* @__PURE__ */ jsxRuntime.jsx(
22230
22230
  WebSelect,
22231
22231
  {
22232
22232
  value: selectedElement.shapeType || "rect",
22233
22233
  disabled: !canEdit,
22234
- className: chunkSQUVXHAE_js.cn(INPUT2, "w-full"),
22234
+ className: chunk7DGKSEIU_js.cn(INPUT2, "w-full"),
22235
22235
  onChange: (e) => onUpdateElement({
22236
22236
  shapeType: e.target.value
22237
22237
  }),
22238
- children: chunkSQUVXHAE_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
22238
+ children: chunk7DGKSEIU_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
22239
22239
  }
22240
22240
  )
22241
22241
  ] }),
22242
- (0, chunkSQUVXHAE_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-fill-stroke": true, "data-pptx-inspector-section": "fill-stroke", children: [
22242
+ (0, chunk7DGKSEIU_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-fill-stroke": true, "data-pptx-inspector-section": "fill-stroke", children: [
22243
22243
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.fillStroke", "Fill & Stroke") }),
22244
22244
  /* @__PURE__ */ jsxRuntime.jsx(
22245
22245
  FillStrokeProperties,
@@ -22247,7 +22247,7 @@ function ShapeTextPanels({
22247
22247
  selectedElement,
22248
22248
  selectedShapeStyle: selectedElement.shapeStyle,
22249
22249
  selectedShapeType: selectedElement.shapeType,
22250
- selectedGradientStops: chunkSQUVXHAE_js.sanitizeGradientStops(
22250
+ selectedGradientStops: chunk7DGKSEIU_js.sanitizeGradientStops(
22251
22251
  selectedElement.shapeStyle?.fillGradientStops
22252
22252
  ),
22253
22253
  canEdit,
@@ -22257,7 +22257,7 @@ function ShapeTextPanels({
22257
22257
  }
22258
22258
  )
22259
22259
  ] }),
22260
- (0, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-text-card": true, children: [
22260
+ (0, chunk7DGKSEIU_js.dist_exports.hasTextProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-text-card": true, children: [
22261
22261
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.text.title", "Text") }),
22262
22262
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5 text-[11px]", children: [
22263
22263
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -22283,7 +22283,7 @@ function ShapeTextPanels({
22283
22283
  {
22284
22284
  disabled: !canEdit,
22285
22285
  ariaLabel: "Text Color",
22286
- value: chunkSQUVXHAE_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
22286
+ value: chunk7DGKSEIU_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
22287
22287
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
22288
22288
  onCommit: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 })
22289
22289
  }
@@ -22375,7 +22375,7 @@ function TextFormatToggle({
22375
22375
  {
22376
22376
  type: "button",
22377
22377
  disabled,
22378
- className: chunkSQUVXHAE_js.cn(
22378
+ className: chunk7DGKSEIU_js.cn(
22379
22379
  "px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
22380
22380
  italic && "italic",
22381
22381
  underline && "underline",
@@ -22533,7 +22533,7 @@ var THUMB_COMPONENTS = {
22533
22533
  chevron: ChevronThumb,
22534
22534
  bending: BendingThumb
22535
22535
  };
22536
- var LAYOUT_DESCRIPTORS = chunkSQUVXHAE_js.dist_exports.SWITCHABLE_LAYOUT_TYPES.map((type) => ({
22536
+ var LAYOUT_DESCRIPTORS = chunk7DGKSEIU_js.dist_exports.SWITCHABLE_LAYOUT_TYPES.map((type) => ({
22537
22537
  type,
22538
22538
  i18nKey: `pptx.smartart.category.${type}`
22539
22539
  }));
@@ -22561,7 +22561,7 @@ function SmartArtLayoutSwitcher({
22561
22561
  type: "button",
22562
22562
  "data-testid": `smartart-layout-${type}`,
22563
22563
  disabled: !canEdit,
22564
- className: chunkSQUVXHAE_js.cn(
22564
+ className: chunk7DGKSEIU_js.cn(
22565
22565
  "flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
22566
22566
  "text-[9px] leading-tight",
22567
22567
  isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
@@ -22640,7 +22640,7 @@ function SmartArtNodeStyleControls({
22640
22640
  disabled: !canEdit,
22641
22641
  "aria-label": `Bold ${label}`,
22642
22642
  "aria-pressed": bold,
22643
- className: chunkSQUVXHAE_js.cn(
22643
+ className: chunk7DGKSEIU_js.cn(
22644
22644
  EMPHASIS_BTN,
22645
22645
  "font-bold",
22646
22646
  bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
@@ -22656,7 +22656,7 @@ function SmartArtNodeStyleControls({
22656
22656
  disabled: !canEdit,
22657
22657
  "aria-label": `Italic ${label}`,
22658
22658
  "aria-pressed": italic,
22659
- className: chunkSQUVXHAE_js.cn(
22659
+ className: chunk7DGKSEIU_js.cn(
22660
22660
  EMPHASIS_BTN,
22661
22661
  "italic",
22662
22662
  italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
@@ -22695,7 +22695,7 @@ function SmartArtNodeRow({
22695
22695
  "div",
22696
22696
  {
22697
22697
  role: "listitem",
22698
- className: chunkSQUVXHAE_js.cn(
22698
+ className: chunk7DGKSEIU_js.cn(
22699
22699
  "rounded border bg-background/60 p-1.5",
22700
22700
  isChild ? "border-border/60 ml-4" : "border-border"
22701
22701
  ),
@@ -22710,7 +22710,7 @@ function SmartArtNodeRow({
22710
22710
  "data-testid": "smartart-node-text",
22711
22711
  disabled: !canEdit,
22712
22712
  "aria-label": label,
22713
- className: chunkSQUVXHAE_js.cn(INPUT2, "flex-1 text-[11px] py-0.5"),
22713
+ className: chunk7DGKSEIU_js.cn(INPUT2, "flex-1 text-[11px] py-0.5"),
22714
22714
  value: text,
22715
22715
  onChange: (e) => onChangeText(nodeId, e.target.value),
22716
22716
  onKeyDown: (e) => onKeyDown(e, nodeId),
@@ -22759,7 +22759,7 @@ function SmartArtNodeRow({
22759
22759
  {
22760
22760
  type: "button",
22761
22761
  disabled: !canEdit || removeDisabled,
22762
- className: chunkSQUVXHAE_js.cn(MINI_BTN, "hover:text-red-400"),
22762
+ className: chunk7DGKSEIU_js.cn(MINI_BTN, "hover:text-red-400"),
22763
22763
  onClick: () => onRemove(nodeId),
22764
22764
  "aria-label": `Remove ${label}`,
22765
22765
  title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
@@ -22802,7 +22802,7 @@ function SmartArtStyleControls({
22802
22802
  disabled: !canEdit,
22803
22803
  "data-testid": "smartart-color-scheme",
22804
22804
  "aria-label": t("pptx.smartart.colorScheme"),
22805
- className: chunkSQUVXHAE_js.cn(INPUT2, "w-full"),
22805
+ className: chunk7DGKSEIU_js.cn(INPUT2, "w-full"),
22806
22806
  value: colorScheme,
22807
22807
  onChange: (e) => onChangeColorScheme(e.target.value),
22808
22808
  children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
@@ -22817,7 +22817,7 @@ function SmartArtStyleControls({
22817
22817
  type: "button",
22818
22818
  disabled: !canEdit,
22819
22819
  "aria-pressed": style === s,
22820
- className: chunkSQUVXHAE_js.cn(
22820
+ className: chunk7DGKSEIU_js.cn(
22821
22821
  "flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
22822
22822
  style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
22823
22823
  ),
@@ -22863,7 +22863,7 @@ function SmartArtPropertiesPanel({
22863
22863
  const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
22864
22864
  newData,
22865
22865
  newData.layout,
22866
- chunk552NAFTD_js.resolveSmartArtDataPalette(newData),
22866
+ chunkTVSTM5J5_js.resolveSmartArtDataPalette(newData),
22867
22867
  newData.style ?? "flat",
22868
22868
  "inspector",
22869
22869
  box
@@ -22874,10 +22874,10 @@ function SmartArtPropertiesPanel({
22874
22874
  applySmartArtData({ ...smartArtData, ...patch });
22875
22875
  };
22876
22876
  const handleUpdateNodeText = (nodeId, text) => {
22877
- applySmartArtData((0, chunkSQUVXHAE_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text));
22877
+ applySmartArtData((0, chunk7DGKSEIU_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text));
22878
22878
  };
22879
22879
  const handleChangeNodeStyle = (nodeId, patch) => {
22880
- const next = (0, chunkSQUVXHAE_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, patch);
22880
+ const next = (0, chunk7DGKSEIU_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, patch);
22881
22881
  if (next !== smartArtData) {
22882
22882
  applySmartArtData(next);
22883
22883
  }
@@ -22886,17 +22886,17 @@ function SmartArtPropertiesPanel({
22886
22886
  if (!pptx.canAddTopLevelNode(layout, topLevelCount)) {
22887
22887
  return;
22888
22888
  }
22889
- applySmartArtData((0, chunkSQUVXHAE_js.dist_exports.addSmartArtNodeAsChild)(smartArtData));
22889
+ applySmartArtData((0, chunk7DGKSEIU_js.dist_exports.addSmartArtNodeAsChild)(smartArtData));
22890
22890
  };
22891
22891
  const addSubItem = (parentId) => {
22892
- applySmartArtData((0, chunkSQUVXHAE_js.dist_exports.addSmartArtNodeAsChild)(smartArtData, parentId, "Sub-item"));
22892
+ applySmartArtData((0, chunk7DGKSEIU_js.dist_exports.addSmartArtNodeAsChild)(smartArtData, parentId, "Sub-item"));
22893
22893
  };
22894
22894
  const removeNode = (nodeId) => {
22895
22895
  const isTopLevel = !nodes.find((n) => n.id === nodeId)?.parentId;
22896
22896
  if (isTopLevel && !pptx.canRemoveTopLevelNode(layout, topLevelCount)) {
22897
22897
  return;
22898
22898
  }
22899
- applySmartArtData((0, chunkSQUVXHAE_js.dist_exports.removeSmartArtNode)(smartArtData, nodeId));
22899
+ applySmartArtData((0, chunk7DGKSEIU_js.dist_exports.removeSmartArtNode)(smartArtData, nodeId));
22900
22900
  };
22901
22901
  const moveNode = (nodeId, direction) => {
22902
22902
  const next = pptx.reorder(smartArtData, nodeId, direction);
@@ -23052,7 +23052,7 @@ function TableDataGrid({
23052
23052
  }) {
23053
23053
  const { t } = reactI18next.useTranslation();
23054
23054
  const grid = pptx.buildTableDataGrid(tableElement);
23055
- const { viewportWidth } = chunk552NAFTD_js.useIsMobile();
23055
+ const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
23056
23056
  const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
23057
23057
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
23058
23058
  const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
@@ -23464,7 +23464,7 @@ function TableCellColorField({
23464
23464
  disabled,
23465
23465
  onCommit
23466
23466
  }) {
23467
- const hex = chunkSQUVXHAE_js.normalizeHexColor(value, fallback);
23467
+ const hex = chunk7DGKSEIU_js.normalizeHexColor(value, fallback);
23468
23468
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
23469
23469
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
23470
23470
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -23575,7 +23575,7 @@ function TableCellFormattingPanel({
23575
23575
  {
23576
23576
  type: "button",
23577
23577
  disabled: !canEdit,
23578
- className: chunkSQUVXHAE_js.cn(
23578
+ className: chunk7DGKSEIU_js.cn(
23579
23579
  "px-2 py-1 rounded text-[11px] transition-colors",
23580
23580
  cls,
23581
23581
  cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
@@ -23594,7 +23594,7 @@ function TableCellFormattingPanel({
23594
23594
  {
23595
23595
  type: "button",
23596
23596
  disabled: !canEdit,
23597
- className: chunkSQUVXHAE_js.cn(
23597
+ className: chunk7DGKSEIU_js.cn(
23598
23598
  "px-2 py-1 rounded text-[11px] transition-colors",
23599
23599
  cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
23600
23600
  ),
@@ -23612,7 +23612,7 @@ function TableCellFormattingPanel({
23612
23612
  {
23613
23613
  type: "button",
23614
23614
  disabled: !canEdit,
23615
- className: chunkSQUVXHAE_js.cn(
23615
+ className: chunk7DGKSEIU_js.cn(
23616
23616
  "px-2 py-1 rounded text-[11px] transition-colors",
23617
23617
  cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
23618
23618
  ),
@@ -23635,7 +23635,7 @@ function TableCellFormattingPanel({
23635
23635
  DebouncedColorInput,
23636
23636
  {
23637
23637
  disabled: !canEdit,
23638
- value: chunkSQUVXHAE_js.normalizeHexColor(cs[colorKey], "#374151"),
23638
+ value: chunk7DGKSEIU_js.normalizeHexColor(cs[colorKey], "#374151"),
23639
23639
  className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
23640
23640
  onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
23641
23641
  }
@@ -23645,7 +23645,7 @@ function TableCellFormattingPanel({
23645
23645
  {
23646
23646
  type: "number",
23647
23647
  disabled: !canEdit,
23648
- className: chunkSQUVXHAE_js.cn(INPUT2, "w-14"),
23648
+ className: chunk7DGKSEIU_js.cn(INPUT2, "w-14"),
23649
23649
  min: 0,
23650
23650
  max: 10,
23651
23651
  value: cs[widthKey] ?? 1,
@@ -23661,7 +23661,7 @@ function TableCellFormattingPanel({
23661
23661
  {
23662
23662
  type: "button",
23663
23663
  disabled: !canEdit,
23664
- className: chunkSQUVXHAE_js.cn(BTN2, "text-center"),
23664
+ className: chunk7DGKSEIU_js.cn(BTN2, "text-center"),
23665
23665
  onClick: () => {
23666
23666
  const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
23667
23667
  if (newRows) {
@@ -23676,7 +23676,7 @@ function TableCellFormattingPanel({
23676
23676
  {
23677
23677
  type: "button",
23678
23678
  disabled: !canEdit,
23679
- className: chunkSQUVXHAE_js.cn(BTN2, "text-center"),
23679
+ className: chunk7DGKSEIU_js.cn(BTN2, "text-center"),
23680
23680
  onClick: () => {
23681
23681
  const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
23682
23682
  if (newRows) {
@@ -23691,7 +23691,7 @@ function TableCellFormattingPanel({
23691
23691
  {
23692
23692
  type: "button",
23693
23693
  disabled: !canEdit,
23694
- className: chunkSQUVXHAE_js.cn(BTN2, "text-center"),
23694
+ className: chunk7DGKSEIU_js.cn(BTN2, "text-center"),
23695
23695
  onClick: () => {
23696
23696
  const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
23697
23697
  if (newRows) {
@@ -23877,7 +23877,7 @@ function TableStyleEditor({
23877
23877
  const { t } = reactI18next.useTranslation();
23878
23878
  const themeColorMap = useThemeColorMap();
23879
23879
  const [activeStyleId, setActiveStyleId] = React99.useState(
23880
- styleId ? (0, chunkSQUVXHAE_js.dist_exports.normalizeTableStyleGuid)(styleId) : ""
23880
+ styleId ? (0, chunk7DGKSEIU_js.dist_exports.normalizeTableStyleGuid)(styleId) : ""
23881
23881
  );
23882
23882
  const [selectedPart, setSelectedPart] = React99.useState("wholeTbl");
23883
23883
  const entry = activeStyleId ? styleMap?.[activeStyleId] : void 0;
@@ -23898,8 +23898,8 @@ function TableStyleEditor({
23898
23898
  return;
23899
23899
  }
23900
23900
  const nextMap = { ...styleMap ?? {} };
23901
- const created = (0, chunkSQUVXHAE_js.dist_exports.createTableStyleEntry)(nextMap, { styleName: name, basedOn: entry });
23902
- (0, chunkSQUVXHAE_js.dist_exports.addTableStyleToMap)(nextMap, created);
23901
+ const created = (0, chunk7DGKSEIU_js.dist_exports.createTableStyleEntry)(nextMap, { styleName: name, basedOn: entry });
23902
+ (0, chunk7DGKSEIU_js.dist_exports.addTableStyleToMap)(nextMap, created);
23903
23903
  onStyleMapChange(nextMap);
23904
23904
  setActiveStyleId(created.styleId);
23905
23905
  onAssignStyle?.(created.styleId);
@@ -23909,7 +23909,7 @@ function TableStyleEditor({
23909
23909
  return;
23910
23910
  }
23911
23911
  const nextMap = { ...styleMap };
23912
- (0, chunkSQUVXHAE_js.dist_exports.deleteTableStyleFromMap)(nextMap, entry.styleId);
23912
+ (0, chunk7DGKSEIU_js.dist_exports.deleteTableStyleFromMap)(nextMap, entry.styleId);
23913
23913
  onStyleMapChange(nextMap);
23914
23914
  onDeleteStyle(entry.styleId);
23915
23915
  onClose();
@@ -23963,7 +23963,7 @@ function TablePropertiesPanel({
23963
23963
  const updateMergeRows = (rows) => {
23964
23964
  const tableData = { ...td, rows };
23965
23965
  const updates = { tableData };
23966
- const rawXml = (0, chunkSQUVXHAE_js.dist_exports.updateMergeAttrsInRawXml)(tableElement, tableData);
23966
+ const rawXml = (0, chunk7DGKSEIU_js.dist_exports.updateMergeAttrsInRawXml)(tableElement, tableData);
23967
23967
  if (rawXml) {
23968
23968
  updates.rawXml = rawXml;
23969
23969
  }
@@ -24029,7 +24029,7 @@ function TablePropertiesPanel({
24029
24029
  ] }),
24030
24030
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
24031
24031
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
24032
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkSQUVXHAE_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
24032
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunk7DGKSEIU_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
24033
24033
  "button",
24034
24034
  {
24035
24035
  type: "button",
@@ -24257,7 +24257,7 @@ function ElementInspectorBody({
24257
24257
  box: { width: selectedElement.width, height: selectedElement.height }
24258
24258
  }
24259
24259
  ),
24260
- (0, chunkSQUVXHAE_js.dist_exports.isImageLikeElement)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsx(
24260
+ (0, chunk7DGKSEIU_js.dist_exports.isImageLikeElement)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsx(
24261
24261
  ImagePropertiesPanel,
24262
24262
  {
24263
24263
  selectedElement,
@@ -24422,7 +24422,7 @@ function CommentMentionTextarea({
24422
24422
  "data-testid": "pptx-comment-mention-option",
24423
24423
  role: "option",
24424
24424
  "aria-selected": index === safeHighlighted,
24425
- className: chunkSQUVXHAE_js.cn(
24425
+ className: chunk7DGKSEIU_js.cn(
24426
24426
  "block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
24427
24427
  index === safeHighlighted && "bg-accent"
24428
24428
  ),
@@ -24545,7 +24545,7 @@ function InspectorCommentRow({
24545
24545
  return /* @__PURE__ */ jsxRuntime.jsxs(
24546
24546
  "div",
24547
24547
  {
24548
- className: chunkSQUVXHAE_js.cn(
24548
+ className: chunk7DGKSEIU_js.cn(
24549
24549
  "rounded border border-border bg-card p-2",
24550
24550
  depth > 0 && "ml-3 border-l-2 border-l-primary/40"
24551
24551
  ),
@@ -24558,7 +24558,7 @@ function InspectorCommentRow({
24558
24558
  t("pptx.comments.resolved")
24559
24559
  ] })
24560
24560
  ] }),
24561
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkSQUVXHAE_js.formatCommentTimestamp(comment.createdAt) })
24561
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunk7DGKSEIU_js.formatCommentTimestamp(comment.createdAt) })
24562
24562
  ] }),
24563
24563
  comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
24564
24564
  "button",
@@ -24566,12 +24566,12 @@ function InspectorCommentRow({
24566
24566
  type: "button",
24567
24567
  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",
24568
24568
  title: t("pptx.comments.commentingOn", {
24569
- element: chunkSQUVXHAE_js.getElementLabel(targetElement)
24569
+ element: chunk7DGKSEIU_js.getElementLabel(targetElement)
24570
24570
  }),
24571
24571
  onClick: () => onSelectElement(targetElement.id),
24572
24572
  children: [
24573
24573
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
24574
- chunkSQUVXHAE_js.getElementLabel(targetElement)
24574
+ chunk7DGKSEIU_js.getElementLabel(targetElement)
24575
24575
  ]
24576
24576
  }
24577
24577
  ) : /* @__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") })),
@@ -24640,7 +24640,7 @@ function InspectorCommentRow({
24640
24640
  "button",
24641
24641
  {
24642
24642
  type: "button",
24643
- className: chunkSQUVXHAE_js.cn(
24643
+ className: chunk7DGKSEIU_js.cn(
24644
24644
  "inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
24645
24645
  comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
24646
24646
  ),
@@ -24783,7 +24783,7 @@ function InspectorCommentsSection({
24783
24783
  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: [
24784
24784
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
24785
24785
  t("pptx.comments.commentingOn", {
24786
- element: chunkSQUVXHAE_js.getElementLabel(selectedElement)
24786
+ element: chunk7DGKSEIU_js.getElementLabel(selectedElement)
24787
24787
  })
24788
24788
  ] }),
24789
24789
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -24794,7 +24794,7 @@ function InspectorCommentsSection({
24794
24794
  authors: commentAuthors,
24795
24795
  rows: 2,
24796
24796
  placeholder: selectedElement ? t("pptx.comments.addOnElement", {
24797
- element: chunkSQUVXHAE_js.getElementLabel(selectedElement)
24797
+ element: chunk7DGKSEIU_js.getElementLabel(selectedElement)
24798
24798
  }) : t("pptx.comments.addPlaceholder"),
24799
24799
  className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
24800
24800
  onChange: onSetCommentDraft,
@@ -24807,7 +24807,7 @@ function InspectorCommentsSection({
24807
24807
  type: "button",
24808
24808
  onClick: onAddComment,
24809
24809
  disabled: !commentDraft.trim(),
24810
- className: chunkSQUVXHAE_js.cn(
24810
+ className: chunk7DGKSEIU_js.cn(
24811
24811
  "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]!",
24812
24812
  commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
24813
24813
  ),
@@ -24821,7 +24821,7 @@ function InspectorCommentsSection({
24821
24821
  ] });
24822
24822
  }
24823
24823
  function elementLabel(element) {
24824
- const text = (0, chunkSQUVXHAE_js.dist_exports.hasTextProperties)(element) ? (element.text || "").slice(0, 24) : void 0;
24824
+ const text = (0, chunk7DGKSEIU_js.dist_exports.hasTextProperties)(element) ? (element.text || "").slice(0, 24) : void 0;
24825
24825
  return text || element.type;
24826
24826
  }
24827
24827
  function InspectorElementsTab({
@@ -24848,13 +24848,13 @@ function InspectorElementsTab({
24848
24848
  };
24849
24849
  if (!activeSlide) {
24850
24850
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
24851
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkSQUVXHAE_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24851
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk7DGKSEIU_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24852
24852
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
24853
24853
  ] });
24854
24854
  }
24855
24855
  const elements = activeSlide.elements || [];
24856
24856
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
24857
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkSQUVXHAE_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24857
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk7DGKSEIU_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24858
24858
  [...elements].reverse().map((el, reversedIndex) => {
24859
24859
  const index = elements.length - 1 - reversedIndex;
24860
24860
  const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
@@ -24862,7 +24862,7 @@ function InspectorElementsTab({
24862
24862
  "div",
24863
24863
  {
24864
24864
  title: `${el.type} - ${el.id}`,
24865
- className: chunkSQUVXHAE_js.cn(
24865
+ className: chunk7DGKSEIU_js.cn(
24866
24866
  "flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
24867
24867
  selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
24868
24868
  ),
@@ -24899,7 +24899,7 @@ function InspectorPaneHeader({
24899
24899
  onClose
24900
24900
  }) {
24901
24901
  const { t } = reactI18next.useTranslation();
24902
- const { viewportWidth } = chunk552NAFTD_js.useIsMobile();
24902
+ const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
24903
24903
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
24904
24904
  const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
24905
24905
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -24922,7 +24922,7 @@ function InspectorPaneHeader({
24922
24922
  type: "button",
24923
24923
  title: t(labelKey),
24924
24924
  style: touchBtnStyle,
24925
- className: chunkSQUVXHAE_js.cn(
24925
+ className: chunk7DGKSEIU_js.cn(
24926
24926
  "flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
24927
24927
  activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
24928
24928
  ),
@@ -25036,7 +25036,7 @@ function CustomPropertiesBlock({
25036
25036
  "button",
25037
25037
  {
25038
25038
  type: "button",
25039
- className: chunkSQUVXHAE_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
25039
+ className: chunk7DGKSEIU_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
25040
25040
  onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
25041
25041
  children: "\xD7"
25042
25042
  }
@@ -25364,7 +25364,7 @@ function PresentationSettingsCard({
25364
25364
  min: 1,
25365
25365
  max: 16,
25366
25366
  disabled: !canEdit,
25367
- className: chunkSQUVXHAE_js.cn(INPUT2, "w-20"),
25367
+ className: chunk7DGKSEIU_js.cn(INPUT2, "w-20"),
25368
25368
  value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
25369
25369
  onChange: (e) => onUpdate({
25370
25370
  printProperties: pptx.withSlidesPerPage(
@@ -25452,14 +25452,14 @@ function SlideThemeOverridePanel({
25452
25452
  const translate = React99.useCallback((key) => t(key), [t]);
25453
25453
  const override = activeSlide?.clrMapOverride;
25454
25454
  const isOverrideActive = override !== void 0;
25455
- const targetSlotOptions = React99.useMemo(() => [...chunkSQUVXHAE_js.dist_exports.THEME_COLOR_SCHEME_KEYS], []);
25455
+ const targetSlotOptions = React99.useMemo(() => [...chunk7DGKSEIU_js.dist_exports.THEME_COLOR_SCHEME_KEYS], []);
25456
25456
  const commitOverride = React99.useCallback(
25457
25457
  (nextOverride) => {
25458
25458
  if (!activeSlide || !theme?.colorScheme) {
25459
25459
  onUpdateSlide({ clrMapOverride: nextOverride });
25460
25460
  return;
25461
25461
  }
25462
- const nextSlide = (0, chunkSQUVXHAE_js.dist_exports.applyThemeOverrideToSlide)(activeSlide, theme.colorScheme, nextOverride);
25462
+ const nextSlide = (0, chunk7DGKSEIU_js.dist_exports.applyThemeOverrideToSlide)(activeSlide, theme.colorScheme, nextOverride);
25463
25463
  onUpdateSlide({
25464
25464
  clrMapOverride: nextSlide.clrMapOverride,
25465
25465
  backgroundColor: nextSlide.backgroundColor,
@@ -25472,8 +25472,8 @@ function SlideThemeOverridePanel({
25472
25472
  (enabled) => {
25473
25473
  if (enabled) {
25474
25474
  const defaultMap = {};
25475
- for (const key of chunkSQUVXHAE_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
25476
- defaultMap[key] = chunkSQUVXHAE_js.dist_exports.DEFAULT_COLOR_MAP[key];
25475
+ for (const key of chunk7DGKSEIU_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
25476
+ defaultMap[key] = chunk7DGKSEIU_js.dist_exports.DEFAULT_COLOR_MAP[key];
25477
25477
  }
25478
25478
  commitOverride(defaultMap);
25479
25479
  } else {
@@ -25486,9 +25486,9 @@ function SlideThemeOverridePanel({
25486
25486
  (alias, targetSlot) => {
25487
25487
  const current = override ?? {};
25488
25488
  const next = { ...current, [alias]: targetSlot };
25489
- for (const key of chunkSQUVXHAE_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
25489
+ for (const key of chunk7DGKSEIU_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
25490
25490
  if (!next[key]) {
25491
- next[key] = chunkSQUVXHAE_js.dist_exports.DEFAULT_COLOR_MAP[key];
25491
+ next[key] = chunk7DGKSEIU_js.dist_exports.DEFAULT_COLOR_MAP[key];
25492
25492
  }
25493
25493
  }
25494
25494
  commitOverride(next);
@@ -25520,8 +25520,8 @@ function SlideThemeOverridePanel({
25520
25520
  ),
25521
25521
  t("pptx.themeOverride.enableOverride")
25522
25522
  ] }),
25523
- isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: chunkSQUVXHAE_js.dist_exports.COLOR_MAP_ALIAS_KEYS.map((alias) => {
25524
- const currentTarget = override[alias] ?? chunkSQUVXHAE_js.dist_exports.DEFAULT_COLOR_MAP[alias];
25523
+ isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: chunk7DGKSEIU_js.dist_exports.COLOR_MAP_ALIAS_KEYS.map((alias) => {
25524
+ const currentTarget = override[alias] ?? chunk7DGKSEIU_js.dist_exports.DEFAULT_COLOR_MAP[alias];
25525
25525
  const resolvedHex = resolveSlotColor(currentTarget);
25526
25526
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-[11px]", children: [
25527
25527
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-24 truncate text-muted-foreground", title: ALIAS_LABELS[alias], children: ALIAS_LABELS[alias] }),
@@ -25600,7 +25600,7 @@ function TransitionPreview({
25600
25600
  const { t } = reactI18next.useTranslation();
25601
25601
  const durationMs = transition.durationMs ?? 500;
25602
25602
  const animations = React99.useMemo(
25603
- () => chunk552NAFTD_js.getSlideTransitionAnimations(
25603
+ () => chunkTVSTM5J5_js.getSlideTransitionAnimations(
25604
25604
  transition.type,
25605
25605
  durationMs,
25606
25606
  transition.direction,
@@ -25669,7 +25669,7 @@ function TransitionPreview({
25669
25669
  ]
25670
25670
  }
25671
25671
  ),
25672
- /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk552NAFTD_js.SLIDE_TRANSITION_KEYFRAMES })
25672
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkTVSTM5J5_js.SLIDE_TRANSITION_KEYFRAMES })
25673
25673
  ] });
25674
25674
  }
25675
25675
  var DEFAULT_DURATION_MS = 320;
@@ -25686,13 +25686,13 @@ function SlideTransitionSection({
25686
25686
  return null;
25687
25687
  }
25688
25688
  const transitionType = activeSlide.transition?.type ?? "none";
25689
- const validDirections = chunkSQUVXHAE_js.dist_exports.TRANSITION_VALID_DIRECTIONS[transitionType];
25689
+ const validDirections = chunk7DGKSEIU_js.dist_exports.TRANSITION_VALID_DIRECTIONS[transitionType];
25690
25690
  const hasDirections = validDirections !== void 0 && validDirections.length > 0;
25691
25691
  const usesOrientation = pptx.TRANSITION_ORIENTATION_TYPES.has(transitionType);
25692
25692
  const isWheel = transitionType === "wheel";
25693
25693
  const isMorph = transitionType === "morph";
25694
- const patternOptions = chunkSQUVXHAE_js.dist_exports.TRANSITION_PATTERN_OPTIONS[transitionType];
25695
- const hasThruBlk = chunkSQUVXHAE_js.dist_exports.TRANSITION_THRUBLK_TYPES.has(transitionType);
25694
+ const patternOptions = chunk7DGKSEIU_js.dist_exports.TRANSITION_PATTERN_OPTIONS[transitionType];
25695
+ const hasThruBlk = chunk7DGKSEIU_js.dist_exports.TRANSITION_THRUBLK_TYPES.has(transitionType);
25696
25696
  return /* @__PURE__ */ jsxRuntime.jsxs(
25697
25697
  "div",
25698
25698
  {
@@ -25712,7 +25712,7 @@ function SlideTransitionSection({
25712
25712
  type: e.target.value
25713
25713
  }),
25714
25714
  className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
25715
- children: chunkSQUVXHAE_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
25715
+ children: chunk7DGKSEIU_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
25716
25716
  }
25717
25717
  )
25718
25718
  ] }),
@@ -25928,7 +25928,7 @@ function TagsSection({
25928
25928
  "button",
25929
25929
  {
25930
25930
  type: "button",
25931
- className: chunkSQUVXHAE_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
25931
+ className: chunk7DGKSEIU_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
25932
25932
  title: t("pptx.tags.deleteTag"),
25933
25933
  onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
25934
25934
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
@@ -26057,7 +26057,7 @@ function PresentationPropertiesPanel({
26057
26057
  canEdit
26058
26058
  }
26059
26059
  ),
26060
- activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkSQUVXHAE_js.cn(CARD2, "space-y-1"), children: [
26060
+ activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk7DGKSEIU_js.cn(CARD2, "space-y-1"), children: [
26061
26061
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
26062
26062
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
26063
26063
  activeSlide.elements?.length ?? 0,
@@ -26078,14 +26078,14 @@ function SlideBackgroundPanel({
26078
26078
  const { t } = reactI18next.useTranslation();
26079
26079
  const bgImageInputRef = React99.useRef(null);
26080
26080
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
26081
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkSQUVXHAE_js.cn(CARD2, "space-y-2"), children: [
26081
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk7DGKSEIU_js.cn(CARD2, "space-y-2"), children: [
26082
26082
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
26083
26083
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
26084
26084
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
26085
26085
  /* @__PURE__ */ jsxRuntime.jsx(
26086
26086
  DebouncedColorInput,
26087
26087
  {
26088
- value: chunkSQUVXHAE_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
26088
+ value: chunk7DGKSEIU_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
26089
26089
  disabled: !canEdit,
26090
26090
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
26091
26091
  onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
@@ -26124,7 +26124,7 @@ function SlideBackgroundPanel({
26124
26124
  "button",
26125
26125
  {
26126
26126
  type: "button",
26127
- className: chunkSQUVXHAE_js.cn(BTN2, "flex-1 text-center"),
26127
+ className: chunk7DGKSEIU_js.cn(BTN2, "flex-1 text-center"),
26128
26128
  disabled: !canEdit,
26129
26129
  onClick: () => bgImageInputRef.current?.click(),
26130
26130
  children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
@@ -26157,7 +26157,7 @@ function SlideBackgroundPanel({
26157
26157
  "button",
26158
26158
  {
26159
26159
  type: "button",
26160
- className: chunkSQUVXHAE_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
26160
+ className: chunk7DGKSEIU_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
26161
26161
  disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
26162
26162
  onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
26163
26163
  children: t("pptx.slideBackground.clearBackground")
@@ -26201,14 +26201,14 @@ function TemplateBackgroundCard({
26201
26201
  t("pptx.master.layout"),
26202
26202
  t("pptx.master.master")
26203
26203
  );
26204
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkSQUVXHAE_js.cn(CARD2, "space-y-2"), children: [
26204
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk7DGKSEIU_js.cn(CARD2, "space-y-2"), children: [
26205
26205
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
26206
26206
  rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
26207
26207
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
26208
26208
  /* @__PURE__ */ jsxRuntime.jsx(
26209
26209
  DebouncedColorInput,
26210
26210
  {
26211
- value: chunkSQUVXHAE_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
26211
+ value: chunk7DGKSEIU_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
26212
26212
  disabled: !canEdit,
26213
26213
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
26214
26214
  onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
@@ -26221,7 +26221,7 @@ function TemplateBackgroundCard({
26221
26221
  /* @__PURE__ */ jsxRuntime.jsx(
26222
26222
  DebouncedColorInput,
26223
26223
  {
26224
- value: chunkSQUVXHAE_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
26224
+ value: chunk7DGKSEIU_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
26225
26225
  disabled: !canEdit,
26226
26226
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
26227
26227
  onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
@@ -26332,7 +26332,7 @@ function InspectorPane(props) {
26332
26332
  } = props;
26333
26333
  const hasSelection = selectedElement !== null;
26334
26334
  const { t } = reactI18next.useTranslation();
26335
- const { dragY, handlers: dragHandlers } = chunk552NAFTD_js.useSheetDismissDrag(onClose);
26335
+ const { dragY, handlers: dragHandlers } = chunkTVSTM5J5_js.useSheetDismissDrag(onClose);
26336
26336
  const {
26337
26337
  animationPanelHeight,
26338
26338
  effectiveThemeOptions,
@@ -26354,7 +26354,7 @@ function InspectorPane(props) {
26354
26354
  "div",
26355
26355
  {
26356
26356
  "data-pptx-chrome": "inspector",
26357
- className: chunkSQUVXHAE_js.cn(
26357
+ className: chunk7DGKSEIU_js.cn(
26358
26358
  // Shared styles
26359
26359
  "bg-background flex flex-col text-xs text-foreground shadow-xl",
26360
26360
  // Mobile: absolute bottom sheet overlay sized via dvh so it
@@ -26745,7 +26745,7 @@ function PresentationTouchControls({
26745
26745
  hideNavigation = false
26746
26746
  }) {
26747
26747
  const { t } = reactI18next.useTranslation();
26748
- const { isTouchDevice } = chunk552NAFTD_js.useIsMobile();
26748
+ const { isTouchDevice } = chunkTVSTM5J5_js.useIsMobile();
26749
26749
  if (!isTouchDevice) {
26750
26750
  return null;
26751
26751
  }
@@ -27050,13 +27050,13 @@ function PrintPreview({
27050
27050
  }) {
27051
27051
  const { t } = reactI18next.useTranslation();
27052
27052
  const pages = React99.useMemo(
27053
- () => chunkSQUVXHAE_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
27053
+ () => chunk7DGKSEIU_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
27054
27054
  [slideIndices, slidesPerPage, orientation]
27055
27055
  );
27056
- const printable = React99.useMemo(() => chunkSQUVXHAE_js.getPrintableArea(orientation), [orientation]);
27056
+ const printable = React99.useMemo(() => chunk7DGKSEIU_js.getPrintableArea(orientation), [orientation]);
27057
27057
  const visiblePages = pages.slice(0, maxPages);
27058
27058
  const isThreePerPage = slidesPerPage === 3;
27059
- const noteLineCount = chunkSQUVXHAE_js.generateNoteLineCount();
27059
+ const noteLineCount = chunk7DGKSEIU_js.generateNoteLineCount();
27060
27060
  const scaledW = printable.width * PREVIEW_SCALE3;
27061
27061
  const scaledH = printable.height * PREVIEW_SCALE3;
27062
27062
  const noteAreaFraction = 0.5;
@@ -27391,11 +27391,11 @@ function PrintDialog({
27391
27391
  defaultFrameSlides
27392
27392
  }) {
27393
27393
  const { t } = reactI18next.useTranslation();
27394
- const { panelStyle, handlers: dragHandlers } = chunk552NAFTD_js.useModalDismissDrag(onClose);
27395
- const { viewportWidth } = chunk552NAFTD_js.useIsMobile();
27394
+ const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
27395
+ const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
27396
27396
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
27397
27397
  const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
27398
- const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunk552NAFTD_js.useViewerOptionsContext());
27398
+ const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkTVSTM5J5_js.useViewerOptionsContext());
27399
27399
  const [printWhat, setPrintWhat] = React99.useState(printOptionDefaults?.printWhat ?? "slides");
27400
27400
  const [orientation, setOrientation] = React99.useState("landscape");
27401
27401
  const [colorMode, setColorMode] = React99.useState(
@@ -27898,14 +27898,14 @@ function BroadcastDialog({
27898
27898
  defaultServerUrl
27899
27899
  }) {
27900
27900
  const { t } = reactI18next.useTranslation();
27901
- const collab = chunk552NAFTD_js.useCollaboration();
27901
+ const collab = chunkTVSTM5J5_js.useCollaboration();
27902
27902
  const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
27903
27903
  const [roomId, setRoomId] = React99.useState("");
27904
27904
  const [userName, setUserName] = React99.useState("");
27905
27905
  const [serverUrl, setServerUrl] = React99.useState("");
27906
27906
  const [copied, setCopied] = React99.useState(false);
27907
27907
  const dialogRef = React99.useRef(null);
27908
- const { panelStyle, handlers: dragHandlers } = chunk552NAFTD_js.useModalDismissDrag(onClose);
27908
+ const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
27909
27909
  useModalFocus(open, dialogRef, onClose);
27910
27910
  React99.useEffect(() => {
27911
27911
  if (open && !isBroadcasting) {
@@ -28208,7 +28208,7 @@ function ActiveSessionView({
28208
28208
  onCopyRoomId,
28209
28209
  onStopCollaboration
28210
28210
  }) {
28211
- const { t } = reactI18next.useTranslation(), viewerOptions = chunk552NAFTD_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({
28211
+ const { t } = reactI18next.useTranslation(), viewerOptions = chunkTVSTM5J5_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({
28212
28212
  localUserName: activeCollaboration?.userName ?? collab.config.userName,
28213
28213
  localUserInitials: viewerOptions.general.userInitials,
28214
28214
  localUserColor: collab.config.userColor,
@@ -28307,7 +28307,7 @@ function StartSessionForm({
28307
28307
  onRetry
28308
28308
  }) {
28309
28309
  const { t } = reactI18next.useTranslation();
28310
- const { viewportWidth } = chunk552NAFTD_js.useIsMobile();
28310
+ const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
28311
28311
  const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
28312
28312
  const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
28313
28313
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
@@ -28441,7 +28441,7 @@ function ShareDialog({
28441
28441
  defaultUserName,
28442
28442
  defaultServerUrl
28443
28443
  }) {
28444
- const collab = chunk552NAFTD_js.useCollaboration();
28444
+ const collab = chunkTVSTM5J5_js.useCollaboration();
28445
28445
  const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
28446
28446
  const { t } = reactI18next.useTranslation();
28447
28447
  const [roomId, setRoomId] = React99.useState(defaultRoomId ?? "");
@@ -28451,9 +28451,9 @@ function ShareDialog({
28451
28451
  const [invitation, setInvitation] = React99.useState("");
28452
28452
  const [copied, setCopied] = React99.useState(false);
28453
28453
  const dialogRef = React99.useRef(null);
28454
- const { panelStyle, handlers: dragHandlers } = chunk552NAFTD_js.useModalDismissDrag(onClose);
28454
+ const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
28455
28455
  useModalFocus(open, dialogRef, onClose);
28456
- const { viewportWidth, viewportHeight } = chunk552NAFTD_js.useIsMobile();
28456
+ const { viewportWidth, viewportHeight } = chunkTVSTM5J5_js.useIsMobile();
28457
28457
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
28458
28458
  const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
28459
28459
  const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
@@ -28736,12 +28736,12 @@ function HyperlinkEditDialog({
28736
28736
  onCancel
28737
28737
  }) {
28738
28738
  const { t } = reactI18next.useTranslation();
28739
- const { panelStyle, handlers: dragHandlers } = chunk552NAFTD_js.useModalDismissDrag(onCancel);
28739
+ const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onCancel);
28740
28740
  const inputRef = React99.useRef(null);
28741
- const detectedType = chunk552NAFTD_js.detectTargetType(initialUrl, initialAction);
28742
- const emailParts = chunk552NAFTD_js.parseEmailUrl(initialUrl || "");
28743
- const detectedSlide = chunk552NAFTD_js.parseSlideFromUrl(initialUrl, initialAction);
28744
- const detectedVerb = initialAction ? chunk552NAFTD_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
28741
+ const detectedType = chunkTVSTM5J5_js.detectTargetType(initialUrl, initialAction);
28742
+ const emailParts = chunkTVSTM5J5_js.parseEmailUrl(initialUrl || "");
28743
+ const detectedSlide = chunkTVSTM5J5_js.parseSlideFromUrl(initialUrl, initialAction);
28744
+ const detectedVerb = initialAction ? chunkTVSTM5J5_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
28745
28745
  const [targetType, setTargetType] = React99.useState(detectedType);
28746
28746
  const [url, setUrl] = React99.useState(
28747
28747
  detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
@@ -28772,7 +28772,7 @@ function HyperlinkEditDialog({
28772
28772
  actionVerb
28773
28773
  });
28774
28774
  };
28775
- const tabCls = (active) => chunkSQUVXHAE_js.cn(
28775
+ const tabCls = (active) => chunk7DGKSEIU_js.cn(
28776
28776
  "px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
28777
28777
  active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
28778
28778
  );
@@ -29009,7 +29009,7 @@ function ViewerBottomPanels({
29009
29009
  notesStyle,
29010
29010
  onNotesHeightChange
29011
29011
  }) {
29012
- const { isHidden } = chunk552NAFTD_js.useToolbarVisibility(hiddenActions);
29012
+ const { isHidden } = chunkTVSTM5J5_js.useToolbarVisibility(hiddenActions);
29013
29013
  const customization = useViewerCustomizationContext();
29014
29014
  const showNotes = pptx.isPanelVisible(customization, "notes");
29015
29015
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -29355,7 +29355,7 @@ function ViewerToolbarSection(props) {
29355
29355
  [activeSlide, propertyHandlers]
29356
29356
  );
29357
29357
  const scopedLayoutOptions = React99__default.default.useMemo(
29358
- () => chunk552NAFTD_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
29358
+ () => chunkTVSTM5J5_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
29359
29359
  [s.layoutOptions, activeSlide]
29360
29360
  );
29361
29361
  const handleResetSlide = React99.useCallback(() => {
@@ -29759,7 +29759,7 @@ function ViewerToolbarSection(props) {
29759
29759
  isCommentsPanelOpen: s.isInspectorPaneOpen,
29760
29760
  slideCommentCount: activeSlide?.comments?.length ?? 0,
29761
29761
  formatPainterActive: s.formatPainterActive,
29762
- canActivateFormatPainter: chunkSQUVXHAE_js.hasCopyableFormat(selectedElement),
29762
+ canActivateFormatPainter: chunk7DGKSEIU_js.hasCopyableFormat(selectedElement),
29763
29763
  onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
29764
29764
  isSelectionPaneOpen: s.isSelectionPaneOpen,
29765
29765
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -29846,7 +29846,7 @@ function EquationEditorDialog({
29846
29846
  existingOmml
29847
29847
  }) {
29848
29848
  const { t } = reactI18next.useTranslation();
29849
- const { panelStyle, handlers: dragHandlers } = chunk552NAFTD_js.useModalDismissDrag(onClose);
29849
+ const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
29850
29850
  const initialLatex = React99.useMemo(() => {
29851
29851
  if (!existingOmml) {
29852
29852
  return "";
@@ -29968,7 +29968,7 @@ function EquationEditorDialog({
29968
29968
  {
29969
29969
  type: "button",
29970
29970
  onClick: () => handleTemplateClick(tmpl.latex),
29971
- className: chunkSQUVXHAE_js.cn(
29971
+ className: chunk7DGKSEIU_js.cn(
29972
29972
  "flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
29973
29973
  latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
29974
29974
  ),
@@ -30034,7 +30034,7 @@ function getPreviewForLayout(layout) {
30034
30034
  transform: `scale(${scale})`,
30035
30035
  transformOrigin: "top left"
30036
30036
  },
30037
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk552NAFTD_js.SmartArtRenderer, { element: pptx.buildSmartArtPreviewElement(layout) })
30037
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.SmartArtRenderer, { element: pptx.buildSmartArtPreviewElement(layout) })
30038
30038
  }
30039
30039
  )
30040
30040
  }
@@ -30046,7 +30046,7 @@ function InsertSmartArtDialog({
30046
30046
  onInsert
30047
30047
  }) {
30048
30048
  const { t } = reactI18next.useTranslation();
30049
- const { panelStyle, handlers: dragHandlers } = chunk552NAFTD_js.useModalDismissDrag(onClose);
30049
+ const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
30050
30050
  const [activeCategory, setActiveCategory] = React99.useState("list");
30051
30051
  const [selectedLayout, setSelectedLayout] = React99.useState(null);
30052
30052
  const dialogRef = React99.useRef(null);
@@ -30127,7 +30127,7 @@ function InsertSmartArtDialog({
30127
30127
  setActiveCategory(cat.id);
30128
30128
  setSelectedLayout(null);
30129
30129
  },
30130
- className: chunkSQUVXHAE_js.cn(
30130
+ className: chunk7DGKSEIU_js.cn(
30131
30131
  "w-full text-left px-3 py-1.5 text-xs transition-colors",
30132
30132
  activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
30133
30133
  ),
@@ -30155,7 +30155,7 @@ function InsertSmartArtDialog({
30155
30155
  onInsert(preset.layout, preset.defaultItems);
30156
30156
  onClose();
30157
30157
  },
30158
- className: chunkSQUVXHAE_js.cn(
30158
+ className: chunk7DGKSEIU_js.cn(
30159
30159
  "flex flex-col items-center gap-1 p-2 rounded border transition-colors",
30160
30160
  selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
30161
30161
  ),
@@ -30652,11 +30652,11 @@ function PresentationStage({
30652
30652
  })
30653
30653
  },
30654
30654
  children: [
30655
- /* @__PURE__ */ jsxRuntime.jsx(chunk552NAFTD_js.SlideBackgroundImageLayer, { slide: activeSlide }),
30655
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.SlideBackgroundImageLayer, { slide: activeSlide }),
30656
30656
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
30657
30657
  presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
30658
30658
  templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
30659
- chunk552NAFTD_js.ElementRenderer,
30659
+ chunkTVSTM5J5_js.ElementRenderer,
30660
30660
  {
30661
30661
  element,
30662
30662
  activeSlide,
@@ -30693,7 +30693,7 @@ function PresentationStage({
30693
30693
  `tpl-${element.id}`
30694
30694
  )),
30695
30695
  activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
30696
- chunk552NAFTD_js.ElementRenderer,
30696
+ chunkTVSTM5J5_js.ElementRenderer,
30697
30697
  {
30698
30698
  element,
30699
30699
  activeSlide,
@@ -30814,8 +30814,8 @@ function ViewerCanvasArea(props) {
30814
30814
  aiCanvasActive = false
30815
30815
  } = props;
30816
30816
  const { t } = reactI18next.useTranslation();
30817
- const { isHidden } = chunk552NAFTD_js.useToolbarVisibility(hiddenActions);
30818
- const viewerOptions = chunk552NAFTD_js.useViewerOptionsContext();
30817
+ const { isHidden } = chunkTVSTM5J5_js.useToolbarVisibility(hiddenActions);
30818
+ const viewerOptions = chunkTVSTM5J5_js.useViewerOptionsContext();
30819
30819
  const outlineAuthoring = useOutlineAuthoring({
30820
30820
  state: s,
30821
30821
  updateElement: canvasHandlers.handleUpdateSmartArtElement,
@@ -30844,7 +30844,7 @@ function ViewerCanvasArea(props) {
30844
30844
  ${url}`)) {
30845
30845
  return;
30846
30846
  }
30847
- chunkSQUVXHAE_js.safeOpenUrl(url);
30847
+ chunk7DGKSEIU_js.safeOpenUrl(url);
30848
30848
  },
30849
30849
  [viewerOptions, t]
30850
30850
  );
@@ -30865,9 +30865,9 @@ ${url}`)) {
30865
30865
  );
30866
30866
  const handleHyperlinkClick = React99.useCallback(
30867
30867
  (url) => {
30868
- if (chunkSQUVXHAE_js.isPpactionUrl(url)) {
30868
+ if (chunk7DGKSEIU_js.isPpactionUrl(url)) {
30869
30869
  if (mode === "present") {
30870
- const parsed = chunkSQUVXHAE_js.parsePpactionUrl(url);
30870
+ const parsed = chunk7DGKSEIU_js.parsePpactionUrl(url);
30871
30871
  if (parsed) {
30872
30872
  const action = {
30873
30873
  action: parsed.action,
@@ -30952,7 +30952,7 @@ ${url}`)) {
30952
30952
  s.setActiveSlideIndex((i) => Math.max(0, i - 1));
30953
30953
  }
30954
30954
  }, [mode, presentation, s]);
30955
- const swipe = chunk552NAFTD_js.useSwipeNavigation({
30955
+ const swipe = chunkTVSTM5J5_js.useSwipeNavigation({
30956
30956
  enabled: swipeEnabled,
30957
30957
  onNext: handleSwipeNext,
30958
30958
  onPrev: handleSwipePrev
@@ -31026,7 +31026,7 @@ ${url}`)) {
31026
31026
  ),
31027
31027
  children: (stageScale) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31028
31028
  presentation.transitionOverlay && slides[presentation.transitionOverlay.outgoingSlideIndex] && /* @__PURE__ */ jsxRuntime.jsx(
31029
- chunk552NAFTD_js.PresentationTransitionOverlay,
31029
+ chunkTVSTM5J5_js.PresentationTransitionOverlay,
31030
31030
  {
31031
31031
  outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
31032
31032
  templateElements,
@@ -31137,14 +31137,14 @@ ${url}`)) {
31137
31137
  outlineAuthoring,
31138
31138
  collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31139
31139
  /* @__PURE__ */ jsxRuntime.jsx(
31140
- chunk552NAFTD_js.RemoteSelectionOverlay,
31140
+ chunkTVSTM5J5_js.RemoteSelectionOverlay,
31141
31141
  {
31142
31142
  elements: effectiveSlide?.elements ?? [],
31143
31143
  activeSlideIndex
31144
31144
  }
31145
31145
  ),
31146
31146
  /* @__PURE__ */ jsxRuntime.jsx(
31147
- chunk552NAFTD_js.CollaborationCursorOverlay,
31147
+ chunkTVSTM5J5_js.CollaborationCursorOverlay,
31148
31148
  {
31149
31149
  activeSlideIndex,
31150
31150
  canvasWidth: canvasSize.width,
@@ -31284,7 +31284,7 @@ function useTableStyleMapHandlers(input) {
31284
31284
  var AiChatPanel = React99.lazy(async () => {
31285
31285
  const [{ useChat }, { default: Panel }] = await Promise.all([
31286
31286
  import('@ai-sdk/react'),
31287
- import('./AiChatPanel-FV5ECOV5.js')
31287
+ import('./AiChatPanel-ONHWZEPV.js')
31288
31288
  ]);
31289
31289
  function BoundAiChatPanel(props) {
31290
31290
  return /* @__PURE__ */ jsxRuntime.jsx(Panel, { ...props, useChat });
@@ -31445,7 +31445,7 @@ function MobileDismissSheet({
31445
31445
  children
31446
31446
  }) {
31447
31447
  const { t } = reactI18next.useTranslation();
31448
- const { dragY, handlers } = chunk552NAFTD_js.useSheetDismissDrag(onClose);
31448
+ const { dragY, handlers } = chunkTVSTM5J5_js.useSheetDismissDrag(onClose);
31449
31449
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31450
31450
  /* @__PURE__ */ jsxRuntime.jsx(
31451
31451
  "button",
@@ -31714,7 +31714,7 @@ function ThemeThumbnail({
31714
31714
  {
31715
31715
  type: "button",
31716
31716
  onClick,
31717
- className: chunkSQUVXHAE_js.cn(
31717
+ className: chunk7DGKSEIU_js.cn(
31718
31718
  "group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
31719
31719
  selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
31720
31720
  ),
@@ -31900,7 +31900,7 @@ function ViewerSidePanels(props) {
31900
31900
  const customization = useViewerCustomizationContext();
31901
31901
  const inspectorOpen = (mode === "edit" || mode === "master") && s.isInspectorPaneOpen && pptx.isPanelVisible(customization, "inspector");
31902
31902
  const currentBuiltInTheme = BUILT_IN_THEMES.find(
31903
- (candidate) => (0, chunkSQUVXHAE_js.dist_exports.themeColorSchemesEqual)(s.theme?.colorScheme, candidate.colorScheme)
31903
+ (candidate) => (0, chunk7DGKSEIU_js.dist_exports.themeColorSchemesEqual)(s.theme?.colorScheme, candidate.colorScheme)
31904
31904
  ) ?? null;
31905
31905
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31906
31906
  inspectorOpen && onResizeRight && /* @__PURE__ */ jsxRuntime.jsx(ResizeHandle, { direction: "horizontal", onResize: onResizeRight }),
@@ -32186,7 +32186,7 @@ function ViewerMainContent(props) {
32186
32186
  );
32187
32187
  const layoutGalleryAnchorRef = React99.useRef(null);
32188
32188
  const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
32189
- return /* @__PURE__ */ jsxRuntime.jsx(chunk552NAFTD_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
32189
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
32190
32190
  showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
32191
32191
  /* @__PURE__ */ jsxRuntime.jsx(
32192
32192
  SlidesPaneSidebar,
@@ -32676,7 +32676,7 @@ function MobileChromeOverlay(props) {
32676
32676
  slideSectionGroups,
32677
32677
  canEdit,
32678
32678
  commentCount
32679
- } = props, { keyboardInset, isKeyboardOpen } = chunk552NAFTD_js.useKeyboardInsets(), activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
32679
+ } = props, { keyboardInset, isKeyboardOpen } = chunkTVSTM5J5_js.useKeyboardInsets(), activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
32680
32680
  s.setIsSlidesPaneOpen(false);
32681
32681
  s.setIsInspectorPaneOpen(false);
32682
32682
  s.setIsSlideNotesCollapsed(true);
@@ -32882,7 +32882,7 @@ function AddinTable({
32882
32882
  "tr",
32883
32883
  {
32884
32884
  onClick: () => onSelect(row.id),
32885
- className: chunkSQUVXHAE_js.cn(
32885
+ className: chunk7DGKSEIU_js.cn(
32886
32886
  "cursor-pointer border-b border-border/40 transition-colors",
32887
32887
  selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
32888
32888
  ),
@@ -32949,18 +32949,18 @@ function ControlRow({
32949
32949
  onOptionChange: emitChange
32950
32950
  }) {
32951
32951
  const { t } = reactI18next.useTranslation();
32952
- const { viewportWidth } = chunk552NAFTD_js.useIsMobile();
32952
+ const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
32953
32953
  const fieldMinHeight = pptx.getDensePanelTouchTargetPx(viewportWidth);
32954
32954
  const value = readValue(options, control);
32955
32955
  const label = t(control.labelKey);
32956
32956
  const info = control.infoKey ? /* @__PURE__ */ jsxRuntime.jsx(InfoTip, { text: t(control.infoKey) }) : null;
32957
- const rowClass = chunkSQUVXHAE_js.cn("flex items-center justify-between gap-3 py-1.5", control.indent && "pl-6");
32957
+ const rowClass = chunk7DGKSEIU_js.cn("flex items-center justify-between gap-3 py-1.5", control.indent && "pl-6");
32958
32958
  const rowStyle = { minHeight: fieldMinHeight };
32959
32959
  const locked = control.readOnly === true;
32960
32960
  const lockedTitle = locked ? t("pptx.options.lockedByHost") : void 0;
32961
32961
  const onOptionChange = locked ? IGNORE_CHANGE : emitChange;
32962
32962
  if (control.kind === "toggle") {
32963
- return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: chunkSQUVXHAE_js.cn(rowClass, "cursor-pointer select-none"), style: rowStyle, children: [
32963
+ return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: chunk7DGKSEIU_js.cn(rowClass, "cursor-pointer select-none"), style: rowStyle, children: [
32964
32964
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-foreground", children: [
32965
32965
  label,
32966
32966
  info
@@ -33112,7 +33112,7 @@ function CommandList({
33112
33112
  role: "option",
33113
33113
  "aria-selected": selectedId === id,
33114
33114
  onClick: () => onSelect(id),
33115
- className: chunkSQUVXHAE_js.cn(
33115
+ className: chunk7DGKSEIU_js.cn(
33116
33116
  "flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
33117
33117
  selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
33118
33118
  ),
@@ -33256,7 +33256,7 @@ function OptionsRibbonPane({
33256
33256
  return /* @__PURE__ */ jsxRuntime.jsxs(
33257
33257
  "label",
33258
33258
  {
33259
- className: chunkSQUVXHAE_js.cn(
33259
+ className: chunk7DGKSEIU_js.cn(
33260
33260
  "flex items-center gap-2 rounded px-2 py-1.5",
33261
33261
  isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
33262
33262
  ),
@@ -33290,7 +33290,7 @@ function OptionsRibbonPane({
33290
33290
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
33291
33291
  "div",
33292
33292
  {
33293
- className: chunkSQUVXHAE_js.cn(
33293
+ className: chunk7DGKSEIU_js.cn(
33294
33294
  "flex items-center justify-between gap-3 rounded px-3 py-2",
33295
33295
  i % 2 === 0 ? "bg-muted/60" : ""
33296
33296
  ),
@@ -33311,7 +33311,7 @@ async function exportAiChatLogs(options) {
33311
33311
  chats,
33312
33312
  { format: options?.format, detailed: options?.detailed, now: options?.now },
33313
33313
  (filename, content, mime) => {
33314
- chunk552NAFTD_js.downloadBlob(new Blob([content], { type: mime }), filename);
33314
+ chunkTVSTM5J5_js.downloadBlob(new Blob([content], { type: mime }), filename);
33315
33315
  }
33316
33316
  );
33317
33317
  }
@@ -33419,7 +33419,7 @@ function SettingsAppearanceTab({
33419
33419
  type: "button",
33420
33420
  onClick: () => onSelectTheme(entry.key),
33421
33421
  "aria-pressed": isActive,
33422
- className: chunkSQUVXHAE_js.cn(
33422
+ className: chunk7DGKSEIU_js.cn(
33423
33423
  "flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
33424
33424
  isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
33425
33425
  ),
@@ -33436,7 +33436,7 @@ function SettingsAppearanceTab({
33436
33436
  /* @__PURE__ */ jsxRuntime.jsx(
33437
33437
  "span",
33438
33438
  {
33439
- className: chunkSQUVXHAE_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
33439
+ className: chunk7DGKSEIU_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
33440
33440
  children: t(entry.labelKey)
33441
33441
  }
33442
33442
  )
@@ -33516,7 +33516,7 @@ function SettingsLanguageTab({
33516
33516
  type: "button",
33517
33517
  onClick: () => onSelectLocale(locale.code),
33518
33518
  "aria-pressed": isActive,
33519
- className: chunkSQUVXHAE_js.cn(
33519
+ className: chunk7DGKSEIU_js.cn(
33520
33520
  "flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
33521
33521
  isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
33522
33522
  ),
@@ -33556,8 +33556,8 @@ function SettingsDialog({
33556
33556
  const [activeTabId, setActiveTabId] = React99.useState("general");
33557
33557
  const { t } = reactI18next.useTranslation();
33558
33558
  const customization = useViewerCustomizationContext();
33559
- const { panelStyle, handlers: dragHandlers } = chunk552NAFTD_js.useModalDismissDrag(onClose);
33560
- const { viewportWidth, viewportHeight } = chunk552NAFTD_js.useIsMobile();
33559
+ const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
33560
+ const { viewportWidth, viewportHeight } = chunkTVSTM5J5_js.useIsMobile();
33561
33561
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
33562
33562
  const navBtnStyle = { minHeight: touchTargetPx, minWidth: touchTargetPx };
33563
33563
  const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
@@ -33665,7 +33665,7 @@ function SettingsDialog({
33665
33665
  onClick: () => setActiveTabId(tab.id),
33666
33666
  "aria-current": currentTabId === tab.id,
33667
33667
  style: navBtnStyle,
33668
- className: chunkSQUVXHAE_js.cn(
33668
+ className: chunk7DGKSEIU_js.cn(
33669
33669
  "flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
33670
33670
  currentTabId === tab.id ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
33671
33671
  ),
@@ -33680,7 +33680,7 @@ function SettingsDialog({
33680
33680
  onClick: () => setActiveTabId(AI_TAB_ID),
33681
33681
  "aria-current": aiActive,
33682
33682
  style: navBtnStyle,
33683
- className: chunkSQUVXHAE_js.cn(
33683
+ className: chunk7DGKSEIU_js.cn(
33684
33684
  "flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
33685
33685
  aiActive ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
33686
33686
  ),
@@ -33826,7 +33826,7 @@ function ViewerOptionsProvider({
33826
33826
  store,
33827
33827
  children
33828
33828
  }) {
33829
- return /* @__PURE__ */ jsxRuntime.jsx(chunk552NAFTD_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunk552NAFTD_js.ViewerOptionsContext.Provider, { value: options, children }) });
33829
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.ViewerOptionsContext.Provider, { value: options, children }) });
33830
33830
  }
33831
33831
  function useAiBridge(input) {
33832
33832
  const ref = React99.useRef(input);
@@ -34147,7 +34147,7 @@ function useMasterViewCrud(input) {
34147
34147
  if (id === "renameLayout" || id === "renameMaster") {
34148
34148
  const master = slideMasters[target.masterIndex];
34149
34149
  const current = id === "renameLayout" ? master?.layouts?.[target.layoutIndex ?? -1]?.name ?? "" : master?.name ?? "";
34150
- const next = chunk552NAFTD_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
34150
+ const next = chunkTVSTM5J5_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
34151
34151
  if (!next) {
34152
34152
  return;
34153
34153
  }
@@ -34608,7 +34608,7 @@ var PowerPointViewer = React99.forwardRef(
34608
34608
  }
34609
34609
  })();
34610
34610
  }, []);
34611
- const { optionsStore, options: viewerOptions } = chunk552NAFTD_js.useViewerOptions();
34611
+ const { optionsStore, options: viewerOptions } = chunkTVSTM5J5_js.useViewerOptions();
34612
34612
  const custom = useViewerCustomization(customization, legacyHiddenActions, optionsStore);
34613
34613
  const { resolved: customizationResolved, hiddenActions } = custom;
34614
34614
  const aiEnabled = Boolean(ai) && pptx.isFeatureEnabled(customizationResolved, "ai");
@@ -34622,8 +34622,8 @@ var PowerPointViewer = React99.forwardRef(
34622
34622
  const handleEnableEditing = React99.useCallback(() => {
34623
34623
  setProtectedViewOverridden(true);
34624
34624
  }, []);
34625
- const readOnlyRec = chunk552NAFTD_js.useReadOnlyRecommendationState(content);
34626
- const compatToastsState = chunk552NAFTD_js.useCompatibilityToastsState();
34625
+ const readOnlyRec = chunkTVSTM5J5_js.useReadOnlyRecommendationState(content);
34626
+ const compatToastsState = chunkTVSTM5J5_js.useCompatibilityToastsState();
34627
34627
  const [notesBarHeight, setNotesBarHeight] = React99.useState(0);
34628
34628
  const runProgramNoticesState = useRunProgramNoticesState();
34629
34629
  const [collaborationReadOnly, setCollaborationReadOnly] = React99.useState(Boolean(collaboration));
@@ -34638,8 +34638,8 @@ var PowerPointViewer = React99.forwardRef(
34638
34638
  filePath
34639
34639
  });
34640
34640
  const [isShareDialogOpen, setIsShareDialogOpen] = React99.useState(false);
34641
- const { reducedMotion, toggleReducedMotion } = chunk552NAFTD_js.useReducedMotion();
34642
- const state = chunk552NAFTD_js.useViewerState({ content, canEdit });
34641
+ const { reducedMotion, toggleReducedMotion } = chunkTVSTM5J5_js.useReducedMotion();
34642
+ const state = chunkTVSTM5J5_js.useViewerState({ content, canEdit });
34643
34643
  const {
34644
34644
  containerRef,
34645
34645
  mode,
@@ -34664,7 +34664,7 @@ var PowerPointViewer = React99.forwardRef(
34664
34664
  [state.recentColors, pushColor]
34665
34665
  );
34666
34666
  const themeColorMapValue = React99.useMemo(
34667
- () => state.theme?.colorScheme ? (0, chunkSQUVXHAE_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
34667
+ () => state.theme?.colorScheme ? (0, chunk7DGKSEIU_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
34668
34668
  [state.theme?.colorScheme]
34669
34669
  );
34670
34670
  const settings = React99.useMemo(
@@ -34751,16 +34751,16 @@ var PowerPointViewer = React99.forwardRef(
34751
34751
  }
34752
34752
  }, [settings, optionsStore]);
34753
34753
  const handleClearOptionsCache2 = useAutosaveCacheMaintenance(viewerOptions);
34754
- const mobile = chunk552NAFTD_js.useIsMobile();
34754
+ const mobile = chunkTVSTM5J5_js.useIsMobile();
34755
34755
  const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
34756
- const resizablePanels = chunk552NAFTD_js.useResizablePanels();
34756
+ const resizablePanels = chunkTVSTM5J5_js.useResizablePanels();
34757
34757
  const {
34758
34758
  gridSpacingPx,
34759
34759
  visibleSlideIndexes,
34760
34760
  slideSectionGroups,
34761
34761
  masterPseudoSlide,
34762
34762
  authoredRange
34763
- } = chunk552NAFTD_js.useDerivedSlideState({
34763
+ } = chunkTVSTM5J5_js.useDerivedSlideState({
34764
34764
  slides,
34765
34765
  sections: state.sections,
34766
34766
  customShows: state.customShows,
@@ -34785,7 +34785,7 @@ var PowerPointViewer = React99.forwardRef(
34785
34785
  state.cropSessionRef
34786
34786
  ]
34787
34787
  );
34788
- const zoom = chunk552NAFTD_js.useZoomViewport({
34788
+ const zoom = chunkTVSTM5J5_js.useZoomViewport({
34789
34789
  canvasSize,
34790
34790
  selectedElements: state.selectedElements,
34791
34791
  fitPadding: props.fitPadding,
@@ -34795,7 +34795,7 @@ var PowerPointViewer = React99.forwardRef(
34795
34795
  const markDocumentDirty = React99.useCallback(() => {
34796
34796
  setIsDirty(true);
34797
34797
  }, [setIsDirty]);
34798
- const history = chunk552NAFTD_js.useEditorHistory({
34798
+ const history = chunkTVSTM5J5_js.useEditorHistory({
34799
34799
  slides,
34800
34800
  canvasSize,
34801
34801
  activeSlideIndex,
@@ -34821,7 +34821,7 @@ var PowerPointViewer = React99.forwardRef(
34821
34821
  setEditTemplateMode: state.setEditTemplateMode,
34822
34822
  setHeaderFooter: state.setHeaderFooter
34823
34823
  });
34824
- const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunk552NAFTD_js.usePresentationSetup({
34824
+ const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkTVSTM5J5_js.usePresentationSetup({
34825
34825
  mode,
34826
34826
  slides,
34827
34827
  visibleSlideIndexes,
@@ -34896,7 +34896,7 @@ ${url}`)
34896
34896
  loading,
34897
34897
  error
34898
34898
  ]);
34899
- chunk552NAFTD_js.useTouchGestures({
34899
+ chunkTVSTM5J5_js.useTouchGestures({
34900
34900
  targetRef: zoom.canvasViewportRef,
34901
34901
  currentScale: zoom.scale,
34902
34902
  callbacks: {
@@ -34918,7 +34918,7 @@ ${url}`)
34918
34918
  },
34919
34919
  enabled: isTouchDevice
34920
34920
  });
34921
- const dialogs = chunk552NAFTD_js.useViewerDialogs({
34921
+ const dialogs = chunkTVSTM5J5_js.useViewerDialogs({
34922
34922
  mode,
34923
34923
  slides,
34924
34924
  activeSlide,
@@ -34967,7 +34967,7 @@ ${url}`)
34967
34967
  zoom.handleZoomToFit();
34968
34968
  zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
34969
34969
  }, [mode]);
34970
- const editorOps = chunk552NAFTD_js.useEditorOperations({
34970
+ const editorOps = chunkTVSTM5J5_js.useEditorOperations({
34971
34971
  state,
34972
34972
  history,
34973
34973
  zoom,
@@ -35009,7 +35009,7 @@ ${url}`)
35009
35009
  setIsEncryptedDialogOpen,
35010
35010
  handlerRef,
35011
35011
  loadVersion
35012
- } = chunk552NAFTD_js.useViewerIntegration({
35012
+ } = chunkTVSTM5J5_js.useViewerIntegration({
35013
35013
  transformCommittedText: (text) => pptx.applyAutoCorrect(text, viewerOptions.proofing),
35014
35014
  state,
35015
35015
  zoom,
@@ -35083,7 +35083,7 @@ ${url}`)
35083
35083
  updateThemeFontScheme: themeHandlers.handleUpdateThemeFontScheme
35084
35084
  });
35085
35085
  const ribbonScope = useRibbonScopeToken();
35086
- const viewPreferencesSync = chunk552NAFTD_js.useViewPreferencesSync({
35086
+ const viewPreferencesSync = chunkTVSTM5J5_js.useViewPreferencesSync({
35087
35087
  loadVersion,
35088
35088
  viewProperties: state.viewProperties,
35089
35089
  setViewProperties: state.setViewProperties,
@@ -35121,7 +35121,7 @@ ${url}`)
35121
35121
  },
35122
35122
  [state]
35123
35123
  );
35124
- const layoutSwitching = chunk552NAFTD_js.useLayoutSwitching({
35124
+ const layoutSwitching = chunkTVSTM5J5_js.useLayoutSwitching({
35125
35125
  handler: handlerRef.current,
35126
35126
  slides,
35127
35127
  activeSlideIndex,
@@ -35217,7 +35217,7 @@ ${url}`)
35217
35217
  "data-pptx-editor-chrome": "",
35218
35218
  ...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
35219
35219
  "aria-busy": loading,
35220
- className: chunkSQUVXHAE_js.cn(
35220
+ className: chunk7DGKSEIU_js.cn(
35221
35221
  "h-full w-full bg-background text-foreground relative",
35222
35222
  ...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
35223
35223
  ),
@@ -35608,8 +35608,8 @@ ${url}`)
35608
35608
  // Nothing previously provided it, so every one of those consumers was
35609
35609
  // silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
35610
35610
  // the user changed in the Options dialog.
35611
- /* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunk552NAFTD_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
35612
- chunk552NAFTD_js.CollaborationProvider,
35611
+ /* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
35612
+ chunkTVSTM5J5_js.CollaborationProvider,
35613
35613
  {
35614
35614
  config: collaboration,
35615
35615
  canvasWidth: canvasSize.width,
@@ -35667,7 +35667,7 @@ ${url}`)
35667
35667
  );
35668
35668
  PowerPointViewer.displayName = "PowerPointViewer";
35669
35669
  function CollaborationStatusStrip() {
35670
- const collab = chunk552NAFTD_js.useCollaboration();
35670
+ const collab = chunkTVSTM5J5_js.useCollaboration();
35671
35671
  if (!collab) {
35672
35672
  return null;
35673
35673
  }
@@ -35691,8 +35691,8 @@ function CollaborationDocumentSync({
35691
35691
  deckSaveState,
35692
35692
  onReadOnlyChange
35693
35693
  }) {
35694
- const collab = chunk552NAFTD_js.useCollaboration();
35695
- chunk552NAFTD_js.useCollaborationDocumentSync({
35694
+ const collab = chunkTVSTM5J5_js.useCollaboration();
35695
+ chunkTVSTM5J5_js.useCollaborationDocumentSync({
35696
35696
  collaboration: collab,
35697
35697
  slides,
35698
35698
  templateElementsBySlideId,
@@ -35711,14 +35711,14 @@ function CollaborationFollowLayer({
35711
35711
  setActiveSlideIndex,
35712
35712
  slideCount
35713
35713
  }) {
35714
- const collab = chunk552NAFTD_js.useCollaboration();
35715
- const { followedClientId, followUser } = chunk552NAFTD_js.useFollowMode({
35714
+ const collab = chunkTVSTM5J5_js.useCollaboration();
35715
+ const { followedClientId, followUser } = chunkTVSTM5J5_js.useFollowMode({
35716
35716
  collab,
35717
35717
  activeSlideIndex,
35718
35718
  setActiveSlideIndex,
35719
35719
  slideCount
35720
35720
  });
35721
- chunk552NAFTD_js.useBroadcastFollower({
35721
+ chunkTVSTM5J5_js.useBroadcastFollower({
35722
35722
  collab,
35723
35723
  activeSlideIndex,
35724
35724
  setActiveSlideIndex,