pptx-react-viewer 4.76.0 → 4.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/{AiChatPanel-6ML3VLIX.mjs → AiChatPanel-7BPX44IR.mjs} +1 -1
  3. package/dist/AiChatPanel-7BPX44IR.mjs.br +0 -0
  4. package/dist/AiChatPanel-7BPX44IR.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-4V7QB5Z3.js → AiChatPanel-YJ5R7PPW.js} +19 -19
  6. package/dist/AiChatPanel-YJ5R7PPW.js.br +0 -0
  7. package/dist/AiChatPanel-YJ5R7PPW.js.gz +0 -0
  8. package/dist/ai.js +2 -2
  9. package/dist/ai.js.br +2 -3
  10. package/dist/ai.js.gz +0 -0
  11. package/dist/ai.mjs +1 -1
  12. package/dist/ai.mjs.br +0 -0
  13. package/dist/ai.mjs.gz +0 -0
  14. package/dist/{chunk-P2IEKYVG.js → chunk-3T5NEBOR.js} +2 -2
  15. package/dist/chunk-3T5NEBOR.js.br +0 -0
  16. package/dist/chunk-3T5NEBOR.js.gz +0 -0
  17. package/dist/{chunk-SEIVQGH5.js → chunk-5CJHRYFK.js} +252 -227
  18. package/dist/chunk-5CJHRYFK.js.br +0 -0
  19. package/dist/chunk-5CJHRYFK.js.gz +0 -0
  20. package/dist/{chunk-6GFSF2ML.js → chunk-AIA7CY5U.js} +4 -29
  21. package/dist/chunk-AIA7CY5U.js.br +0 -0
  22. package/dist/chunk-AIA7CY5U.js.gz +0 -0
  23. package/dist/{chunk-PPOGAZ53.mjs → chunk-I5WQFYAK.mjs} +50 -26
  24. package/dist/chunk-I5WQFYAK.mjs.br +0 -0
  25. package/dist/chunk-I5WQFYAK.mjs.gz +0 -0
  26. package/dist/{chunk-RMEWSJZU.mjs → chunk-J4NOGC3R.mjs} +1 -1
  27. package/dist/chunk-J4NOGC3R.mjs.br +0 -0
  28. package/dist/chunk-J4NOGC3R.mjs.gz +0 -0
  29. package/dist/{chunk-Y53EC3JU.mjs → chunk-JB37G6GW.mjs} +1 -1
  30. package/dist/chunk-JB37G6GW.mjs.br +0 -0
  31. package/dist/chunk-JB37G6GW.mjs.gz +0 -0
  32. package/dist/{chunk-OC4RP2CB.mjs → chunk-MMBLGDHD.mjs} +15 -36
  33. package/dist/chunk-MMBLGDHD.mjs.br +0 -0
  34. package/dist/chunk-MMBLGDHD.mjs.gz +0 -0
  35. package/dist/{chunk-N3YK2BCA.mjs → chunk-N6BJW23K.mjs} +5 -30
  36. package/dist/chunk-N6BJW23K.mjs.br +0 -0
  37. package/dist/chunk-N6BJW23K.mjs.gz +0 -0
  38. package/dist/{chunk-XTYBIJ2S.js → chunk-USEEERPE.js} +584 -605
  39. package/dist/chunk-USEEERPE.js.br +0 -0
  40. package/dist/chunk-USEEERPE.js.gz +0 -0
  41. package/dist/{chunk-MU3BIZ2U.js → chunk-VCNDY7HS.js} +1 -1
  42. package/dist/chunk-VCNDY7HS.js.br +0 -0
  43. package/dist/chunk-VCNDY7HS.js.gz +0 -0
  44. package/dist/index.d.ts +21 -14
  45. package/dist/index.js +29 -29
  46. package/dist/index.js.br +0 -0
  47. package/dist/index.js.gz +0 -0
  48. package/dist/index.mjs +5 -5
  49. package/dist/index.mjs.br +0 -0
  50. package/dist/index.mjs.gz +0 -0
  51. package/dist/internals.d.ts +14 -15
  52. package/dist/internals.js +82 -82
  53. package/dist/internals.js.br +0 -0
  54. package/dist/internals.js.gz +0 -0
  55. package/dist/internals.mjs +3 -3
  56. package/dist/internals.mjs.br +0 -0
  57. package/dist/internals.mjs.gz +0 -0
  58. package/dist/no-i18next.d.ts +21 -14
  59. package/dist/no-i18next.js +28 -28
  60. package/dist/no-i18next.js.br +0 -0
  61. package/dist/no-i18next.js.gz +0 -0
  62. package/dist/no-i18next.mjs +4 -4
  63. package/dist/no-i18next.mjs.br +0 -0
  64. package/dist/no-i18next.mjs.gz +0 -0
  65. package/dist/viewer/index.d.ts +7 -1
  66. package/dist/viewer/index.js +22 -22
  67. package/dist/viewer/index.js.br +0 -0
  68. package/dist/viewer/index.js.gz +0 -0
  69. package/dist/viewer/index.mjs +5 -5
  70. package/dist/viewer/index.mjs.br +0 -0
  71. package/dist/viewer/index.mjs.gz +0 -0
  72. package/package.json +2 -2
  73. package/dist/AiChatPanel-4V7QB5Z3.js.br +0 -0
  74. package/dist/AiChatPanel-4V7QB5Z3.js.gz +0 -0
  75. package/dist/AiChatPanel-6ML3VLIX.mjs.br +0 -0
  76. package/dist/AiChatPanel-6ML3VLIX.mjs.gz +0 -0
  77. package/dist/chunk-6GFSF2ML.js.br +0 -0
  78. package/dist/chunk-6GFSF2ML.js.gz +0 -0
  79. package/dist/chunk-MU3BIZ2U.js.br +0 -0
  80. package/dist/chunk-MU3BIZ2U.js.gz +0 -0
  81. package/dist/chunk-N3YK2BCA.mjs.br +0 -0
  82. package/dist/chunk-N3YK2BCA.mjs.gz +0 -0
  83. package/dist/chunk-OC4RP2CB.mjs.br +0 -0
  84. package/dist/chunk-OC4RP2CB.mjs.gz +0 -0
  85. package/dist/chunk-P2IEKYVG.js.br +0 -0
  86. package/dist/chunk-P2IEKYVG.js.gz +0 -0
  87. package/dist/chunk-PPOGAZ53.mjs.br +0 -0
  88. package/dist/chunk-PPOGAZ53.mjs.gz +0 -0
  89. package/dist/chunk-RMEWSJZU.mjs.br +0 -0
  90. package/dist/chunk-RMEWSJZU.mjs.gz +0 -0
  91. package/dist/chunk-SEIVQGH5.js.br +0 -0
  92. package/dist/chunk-SEIVQGH5.js.gz +0 -0
  93. package/dist/chunk-XTYBIJ2S.js.br +0 -0
  94. package/dist/chunk-XTYBIJ2S.js.gz +0 -0
  95. package/dist/chunk-Y53EC3JU.mjs.br +0 -0
  96. package/dist/chunk-Y53EC3JU.mjs.gz +0 -0
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkMU3BIZ2U_js = require('./chunk-MU3BIZ2U.js');
4
- var chunkSEIVQGH5_js = require('./chunk-SEIVQGH5.js');
5
- var chunk6GFSF2ML_js = require('./chunk-6GFSF2ML.js');
3
+ var chunkVCNDY7HS_js = require('./chunk-VCNDY7HS.js');
4
+ var chunk5CJHRYFK_js = require('./chunk-5CJHRYFK.js');
5
+ var chunkAIA7CY5U_js = require('./chunk-AIA7CY5U.js');
6
6
  var pptx = require('ooxml-ui/pptx');
7
7
  var React108 = require('react');
8
8
  var jsxRuntime = require('react/jsx-runtime');
@@ -59,12 +59,12 @@ function SlideThumbnailImpl({
59
59
  const layout = pptx.slideThumbnailLayout(
60
60
  safeCanvasWidth,
61
61
  safeCanvasHeight,
62
- previewWidth ?? chunk6GFSF2ML_js.SLIDE_NAV_THUMBNAIL_WIDTH
62
+ previewWidth ?? chunkAIA7CY5U_js.SLIDE_NAV_THUMBNAIL_WIDTH
63
63
  );
64
64
  const { height: previewHeight, scale } = layout;
65
65
  const previewElements = pptx.buildPreviewElements(slide, templateElements);
66
66
  const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
67
- const { t } = chunk6GFSF2ML_js.useTranslation();
67
+ const { t } = chunkAIA7CY5U_js.useTranslation();
68
68
  const transitionBadge = pptx.slideThumbnailTransitionBadge(slide, t);
69
69
  return /* @__PURE__ */ jsxRuntime.jsxs(
70
70
  "div",
@@ -90,9 +90,9 @@ function SlideThumbnailImpl({
90
90
  ...pptx.deviceStrokeStageStyle(scale)
91
91
  },
92
92
  children: [
93
- /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.SlideBackgroundImageLayer, { slide }),
93
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.SlideBackgroundImageLayer, { slide }),
94
94
  previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
95
- chunkSEIVQGH5_js.StaticElementRenderer,
95
+ chunk5CJHRYFK_js.StaticElementRenderer,
96
96
  {
97
97
  element,
98
98
  activeSlide: slide,
@@ -161,7 +161,7 @@ function AvatarCircle({
161
161
  avatar,
162
162
  isLocal
163
163
  }) {
164
- const { t } = chunk6GFSF2ML_js.useTranslation();
164
+ const { t } = chunkAIA7CY5U_js.useTranslation();
165
165
  const initials = getInitials(name);
166
166
  const title = isLocal ? t("pptx.collaboration.youLabel", { name }) : name;
167
167
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -196,7 +196,7 @@ function UserAvatarBar({
196
196
  status,
197
197
  maxVisible = 5
198
198
  }) {
199
- const { t } = chunk6GFSF2ML_js.useTranslation();
199
+ const { t } = chunkAIA7CY5U_js.useTranslation();
200
200
  if (status === "disconnected" || status === "error") {
201
201
  return null;
202
202
  }
@@ -270,7 +270,7 @@ function CollaborationStatusIndicator({
270
270
  connectedCount,
271
271
  onRetry
272
272
  }) {
273
- const { t } = chunk6GFSF2ML_js.useTranslation();
273
+ const { t } = chunkAIA7CY5U_js.useTranslation();
274
274
  const style = STATUS_STYLES[status];
275
275
  return /* @__PURE__ */ jsxRuntime.jsxs(
276
276
  "div",
@@ -311,7 +311,7 @@ function FollowModeBar({
311
311
  followedClientId,
312
312
  onFollow
313
313
  }) {
314
- const { t } = chunk6GFSF2ML_js.useTranslation();
314
+ const { t } = chunkAIA7CY5U_js.useTranslation();
315
315
  if (presences.length === 0) {
316
316
  return null;
317
317
  }
@@ -416,7 +416,7 @@ function SectionContextMenu({
416
416
  onAddSection,
417
417
  onClose
418
418
  }) {
419
- const { t } = chunk6GFSF2ML_js.useTranslation();
419
+ const { t } = chunkAIA7CY5U_js.useTranslation();
420
420
  React108.useEffect(() => {
421
421
  const onKeyDown = (event) => {
422
422
  if (event.key === "Escape") {
@@ -517,7 +517,7 @@ function SectionHeader({
517
517
  /* @__PURE__ */ jsxRuntime.jsx(
518
518
  lu.LuChevronDown,
519
519
  {
520
- className: chunk6GFSF2ML_js.cn(
520
+ className: chunkAIA7CY5U_js.cn(
521
521
  "h-3 w-3 flex-shrink-0 transition-transform",
522
522
  isCollapsed ? "-rotate-90" : "rotate-0"
523
523
  )
@@ -592,7 +592,7 @@ function SlideContextMenu({
592
592
  onAddSection,
593
593
  onClose
594
594
  }) {
595
- const { t } = chunk6GFSF2ML_js.useTranslation();
595
+ const { t } = chunkAIA7CY5U_js.useTranslation();
596
596
  const selected = state.selectedIndexes;
597
597
  const selectedSlides = selected.map((i) => slides[i]).filter((s) => Boolean(s));
598
598
  const entries = pptx.buildSlidePaneContextMenuEntries({
@@ -697,7 +697,7 @@ function LazyThumbnailInner({
697
697
  }
698
698
  var LazyThumbnail = /* @__PURE__ */ React108__default.default.memo(LazyThumbnailInner);
699
699
  function declaredSectionFacts(groups, sectionId) {
700
- const declared = groups.filter((group) => group.id !== chunk6GFSF2ML_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunk6GFSF2ML_js.UNGROUPED_SECTION_ID).map((group) => group.id);
700
+ const declared = groups.filter((group) => group.id !== chunkAIA7CY5U_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunkAIA7CY5U_js.UNGROUPED_SECTION_ID).map((group) => group.id);
701
701
  return {
702
702
  isDeclared: declared.includes(sectionId),
703
703
  index: declared.indexOf(sectionId),
@@ -754,7 +754,7 @@ function SlideItemInner({
754
754
  onDrop,
755
755
  slideRef
756
756
  }) {
757
- const { t } = chunk6GFSF2ML_js.useTranslation();
757
+ const { t } = chunkAIA7CY5U_js.useTranslation();
758
758
  const isHidden = Boolean(slide.hidden);
759
759
  const cue = pptx.hiddenSlideCue(slide.hidden, "rail", slideIndex);
760
760
  const handleContextMenu = React108.useCallback(
@@ -782,7 +782,7 @@ function SlideItemInner({
782
782
  "data-pptx-chrome": "slide-row",
783
783
  "aria-describedby": cue.labelId,
784
784
  "data-pptx-slide-hidden": cue.marker,
785
- className: chunk6GFSF2ML_js.cn(
785
+ className: chunkAIA7CY5U_js.cn(
786
786
  "group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
787
787
  isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
788
788
  isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
@@ -804,7 +804,7 @@ function SlideItemInner({
804
804
  /* @__PURE__ */ jsxRuntime.jsx(
805
805
  "span",
806
806
  {
807
- className: chunk6GFSF2ML_js.cn(
807
+ className: chunkAIA7CY5U_js.cn(
808
808
  "text-[10px] tabular-nums text-right select-none w-full",
809
809
  isActive ? "text-primary font-medium" : "text-muted-foreground"
810
810
  ),
@@ -827,7 +827,7 @@ function SlideItemInner({
827
827
  /* @__PURE__ */ jsxRuntime.jsxs(
828
828
  "div",
829
829
  {
830
- className: chunk6GFSF2ML_js.cn(
830
+ className: chunkAIA7CY5U_js.cn(
831
831
  "relative shrink-0 overflow-hidden border transition-colors bg-white",
832
832
  isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
833
833
  ),
@@ -997,11 +997,10 @@ function useSlidePaneCallbacks(onMoveSlide, onRenameSection, onToggleSectionColl
997
997
  var EMPTY_TEMPLATE_ELEMENTS = [];
998
998
  var VIRTUALIZATION_THRESHOLD = pptx.SLIDE_VIRTUALIZATION_THRESHOLD;
999
999
  function SlidesPaneSidebar(props) {
1000
- const errorReporting = React108.useMemo(
1001
- () => ({ onElementRenderError: props.onElementRenderError }),
1002
- [props.onElementRenderError]
1003
- );
1004
- return /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.ElementRenderErrorReportingContext.Provider, { value: errorReporting, children: /* @__PURE__ */ jsxRuntime.jsx(SlidesPaneSidebarContent, { ...props }) });
1000
+ const inherited = React108.useContext(chunk5CJHRYFK_js.ElementRenderErrorReportingContext);
1001
+ const reporter = props.onElementRenderError ?? inherited?.onElementRenderError;
1002
+ const errorReporting = React108.useMemo(() => ({ onElementRenderError: reporter }), [reporter]);
1003
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ElementRenderErrorReportingContext.Provider, { value: errorReporting, children: /* @__PURE__ */ jsxRuntime.jsx(SlidesPaneSidebarContent, { ...props }) });
1005
1004
  }
1006
1005
  function SlidesPaneSidebarContent({
1007
1006
  slides,
@@ -1032,8 +1031,8 @@ function SlidesPaneSidebarContent({
1032
1031
  fieldContext,
1033
1032
  tableStyleContext
1034
1033
  }) {
1035
- const { t } = chunk6GFSF2ML_js.useTranslation();
1036
- const collab = chunkSEIVQGH5_js.useCollaboration();
1034
+ const { t } = chunkAIA7CY5U_js.useTranslation();
1035
+ const collab = chunk5CJHRYFK_js.useCollaboration();
1037
1036
  const slideRefs = React108.useRef(/* @__PURE__ */ new Map());
1038
1037
  const renameInputRef = React108.useRef(null);
1039
1038
  const slidePresenceMap = React108.useMemo(() => {
@@ -1058,7 +1057,7 @@ function SlidesPaneSidebarContent({
1058
1057
  () => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
1059
1058
  [canvasSize.width, canvasSize.height, previewWidth]
1060
1059
  );
1061
- const showSectionHeaders = sectionGroups.some((group) => group.id !== chunk6GFSF2ML_js.DEFAULT_SECTION_GROUP_ID);
1060
+ const showSectionHeaders = sectionGroups.some((group) => group.id !== chunkAIA7CY5U_js.DEFAULT_SECTION_GROUP_ID);
1062
1061
  const {
1063
1062
  collapsedSections,
1064
1063
  renamingSectionId,
@@ -1128,7 +1127,7 @@ function SlidesPaneSidebarContent({
1128
1127
  [sectionGroups, showSectionHeaders, effectiveCollapsed]
1129
1128
  );
1130
1129
  const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
1131
- const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkSEIVQGH5_js.useVirtualizedSlides({
1130
+ const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunk5CJHRYFK_js.useVirtualizedSlides({
1132
1131
  totalItems: shouldVirtualize ? flatItems.length : 0,
1133
1132
  itemHeight: estimatedItemHeight
1134
1133
  });
@@ -1413,7 +1412,7 @@ function SlideTemplatePreview({
1413
1412
  transformOrigin: "top left"
1414
1413
  },
1415
1414
  children: previewSlide.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
1416
- chunkSEIVQGH5_js.StaticElementRenderer,
1415
+ chunk5CJHRYFK_js.StaticElementRenderer,
1417
1416
  {
1418
1417
  element,
1419
1418
  activeSlide: previewSlide,
@@ -1482,8 +1481,8 @@ function SlideTemplateGalleryDialog({
1482
1481
  onInsert,
1483
1482
  scheme
1484
1483
  }) {
1485
- const { t } = chunk6GFSF2ML_js.useTranslation();
1486
- const { panelStyle, handlers: dragHandlers } = chunkSEIVQGH5_js.useModalDismissDrag(onClose);
1484
+ const { t } = chunkAIA7CY5U_js.useTranslation();
1485
+ const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(onClose);
1487
1486
  const [selected, setSelected] = React108.useState(null);
1488
1487
  const dialogRef = React108.useRef(null);
1489
1488
  useModalFocus(isOpen, dialogRef, onClose);
@@ -1568,7 +1567,7 @@ function SlideTemplateGalleryDialog({
1568
1567
  onInsert(spec.id);
1569
1568
  onClose();
1570
1569
  },
1571
- className: chunk6GFSF2ML_js.cn(
1570
+ className: chunkAIA7CY5U_js.cn(
1572
1571
  "flex flex-col items-center gap-1 p-2 rounded border transition-colors",
1573
1572
  selected === spec.id ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
1574
1573
  ),
@@ -1832,7 +1831,7 @@ function nowLocalInputValue() {
1832
1831
  return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}T${pad(now.getHours())}:${pad(now.getMinutes())}`;
1833
1832
  }
1834
1833
  function DateTimeFieldDialog(p) {
1835
- const { t } = chunk6GFSF2ML_js.useTranslation();
1834
+ const { t } = chunkAIA7CY5U_js.useTranslation();
1836
1835
  const [datePickerValue, setDatePickerValue] = React108.useState(nowLocalInputValue);
1837
1836
  const [dateFormat, setDateFormat] = React108.useState("locale");
1838
1837
  const confirmDatePicker = React108.useCallback(() => {
@@ -1938,7 +1937,7 @@ function useViewerCustomizationContext() {
1938
1937
  return React108.useContext(ViewerCustomizationContext);
1939
1938
  }
1940
1939
  function InsertSection(p) {
1941
- const { t } = chunk6GFSF2ML_js.useTranslation();
1940
+ const { t } = chunkAIA7CY5U_js.useTranslation();
1942
1941
  const customization = useViewerCustomizationContext();
1943
1942
  const ref = React108.useRef(null);
1944
1943
  const [datePickerOpen, setDatePickerOpen] = React108.useState(false);
@@ -2087,8 +2086,8 @@ function MobileSheet({
2087
2086
  headerRight
2088
2087
  }) {
2089
2088
  const sheetRef = React108.useRef(null);
2090
- const { t } = chunk6GFSF2ML_js.useTranslation();
2091
- const { dragY, dragging, handlers } = chunkSEIVQGH5_js.useSheetDismissDrag(onClose);
2089
+ const { t } = chunkAIA7CY5U_js.useTranslation();
2090
+ const { dragY, dragging, handlers } = chunk5CJHRYFK_js.useSheetDismissDrag(onClose);
2092
2091
  useModalFocus(open, sheetRef, onClose);
2093
2092
  if (!open) {
2094
2093
  return null;
@@ -2112,7 +2111,7 @@ function MobileSheet({
2112
2111
  "aria-modal": "true",
2113
2112
  "aria-label": typeof title === "string" ? title : t("pptx.mobileSheet.ariaLabel"),
2114
2113
  tabIndex: -1,
2115
- className: chunk6GFSF2ML_js.cn(
2114
+ className: chunkAIA7CY5U_js.cn(
2116
2115
  "relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
2117
2116
  "animate-in slide-in-from-bottom duration-200",
2118
2117
  className
@@ -2159,7 +2158,7 @@ function MobileSheet({
2159
2158
  ] });
2160
2159
  }
2161
2160
  function MobileInsertSheet(p) {
2162
- const { t } = chunk6GFSF2ML_js.useTranslation();
2161
+ const { t } = chunkAIA7CY5U_js.useTranslation();
2163
2162
  const close = () => p.onCloseMobileInsert?.();
2164
2163
  const customization = useViewerCustomizationContext();
2165
2164
  const [dateOpen, setDateOpen] = React108.useState(false);
@@ -2235,7 +2234,7 @@ function MobileInsertSheet(p) {
2235
2234
  ] });
2236
2235
  }
2237
2236
  function AnimationsSection(p) {
2238
- const { t } = chunk6GFSF2ML_js.useTranslation();
2237
+ const { t } = chunkAIA7CY5U_js.useTranslation();
2239
2238
  const ref = React108.useRef(null);
2240
2239
  const [previewActive, setPreviewActive] = React108.useState(false);
2241
2240
  const timer = React108.useRef(void 0);
@@ -2316,7 +2315,7 @@ function WebHomeControls({
2316
2315
  onPopup,
2317
2316
  layoutArtwork
2318
2317
  }) {
2319
- const { t } = chunk6GFSF2ML_js.useTranslation();
2318
+ const { t } = chunkAIA7CY5U_js.useTranslation();
2320
2319
  const ref = React108.useRef(null);
2321
2320
  React108.useEffect(() => {
2322
2321
  if (ref.current) {
@@ -2357,7 +2356,7 @@ function WebHomeControls({
2357
2356
  function ShapeArrangeExtras(p) {
2358
2357
  const commands = useShapeFormatContext();
2359
2358
  const crop = commands?.crop;
2360
- const { isHidden } = chunkSEIVQGH5_js.useToolbarVisibility(p.hiddenActions);
2359
+ const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(p.hiddenActions);
2361
2360
  const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
2362
2361
  const controls = React108.useMemo(
2363
2362
  () => pptx.arrangeShapeHomeControls({
@@ -2408,7 +2407,7 @@ function ShapeArrangeExtras(p) {
2408
2407
  return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "arrange-shape", controls, onRequest: request });
2409
2408
  }
2410
2409
  function ArrangeSection(p) {
2411
- const { t } = chunk6GFSF2ML_js.useTranslation();
2410
+ const { t } = chunkAIA7CY5U_js.useTranslation();
2412
2411
  const {
2413
2412
  onAlignElements,
2414
2413
  onDistributeElements,
@@ -2515,7 +2514,7 @@ function RibbonGallery({
2515
2514
  tagControl = true,
2516
2515
  onCommand
2517
2516
  }) {
2518
- const { t } = chunk6GFSF2ML_js.useTranslation();
2517
+ const { t } = chunkAIA7CY5U_js.useTranslation();
2519
2518
  const ref = React108.useRef(null);
2520
2519
  const commands = useRibbonGalleryCommands();
2521
2520
  const context = commands?.context;
@@ -2650,7 +2649,7 @@ function WebRibbonToggle({
2650
2649
  );
2651
2650
  }
2652
2651
  function TransitionsSection(p) {
2653
- const { t } = chunk6GFSF2ML_js.useTranslation();
2652
+ const { t } = chunkAIA7CY5U_js.useTranslation();
2654
2653
  const ref = React108.useRef(null);
2655
2654
  const draft = React108.useMemo(() => pptx.readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
2656
2655
  const transition = p.activeSlide?.transition;
@@ -2692,7 +2691,7 @@ function TransitionsSection(p) {
2692
2691
  case "soundPreview": {
2693
2692
  const url = pptx.ribbonTransitionStockSoundUrl(transition);
2694
2693
  if (url) {
2695
- chunkSEIVQGH5_js.playAnimationSound(url);
2694
+ chunk5CJHRYFK_js.playAnimationSound(url);
2696
2695
  }
2697
2696
  break;
2698
2697
  }
@@ -2711,7 +2710,7 @@ function TransitionsSection(p) {
2711
2710
  return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-transitions", { ref });
2712
2711
  }
2713
2712
  function DesignSection(p) {
2714
- const { t } = chunk6GFSF2ML_js.useTranslation();
2713
+ const { t } = chunkAIA7CY5U_js.useTranslation();
2715
2714
  const actions = {
2716
2715
  "design.themes.browseThemes": p.onToggleThemeGallery,
2717
2716
  "design.themes.editTheme": p.onToggleThemeEditor,
@@ -2774,7 +2773,7 @@ function useRecentColors() {
2774
2773
  return React108.useContext(RecentColorsContext);
2775
2774
  }
2776
2775
  function DrawSection(p) {
2777
- const { t } = chunk6GFSF2ML_js.useTranslation();
2776
+ const { t } = chunkAIA7CY5U_js.useTranslation();
2778
2777
  const { pushColor, recentColors } = useRecentColors();
2779
2778
  const ref = React108.useRef(null);
2780
2779
  React108.useEffect(() => {
@@ -2872,7 +2871,7 @@ var AccountAuthContext = /* @__PURE__ */ React108.createContext(
2872
2871
  );
2873
2872
  var cardClass = "border border-border bg-card p-6 text-card-foreground";
2874
2873
  function AccountPage() {
2875
- const { t } = chunk6GFSF2ML_js.useTranslation();
2874
+ const { t } = chunkAIA7CY5U_js.useTranslation();
2876
2875
  const accountAuth = React108.useContext(AccountAuthContext);
2877
2876
  const storage = useViewerStorage();
2878
2877
  const cloud = useViewerCloudFiles();
@@ -2900,7 +2899,7 @@ function AccountPage() {
2900
2899
  refreshUsage();
2901
2900
  setTimeout(() => setCleared(false), 4e3);
2902
2901
  };
2903
- const version = "4.76.0" ;
2902
+ const version = "4.77.0" ;
2904
2903
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
2905
2904
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
2906
2905
  /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -2940,7 +2939,7 @@ function AccountPage() {
2940
2939
  "aria-label": color,
2941
2940
  "aria-pressed": profile.avatarColor === color,
2942
2941
  onClick: () => updateProfile({ avatarColor: color }),
2943
- className: chunk6GFSF2ML_js.cn(
2942
+ className: chunkAIA7CY5U_js.cn(
2944
2943
  "size-7 rounded-full border-2 transition-transform",
2945
2944
  profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
2946
2945
  ),
@@ -3015,7 +3014,7 @@ function BackstageAction(props) {
3015
3014
  ] });
3016
3015
  }
3017
3016
  function BackstageNewGallery(props) {
3018
- const { t } = chunk6GFSF2ML_js.useTranslation();
3017
+ const { t } = chunkAIA7CY5U_js.useTranslation();
3019
3018
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3020
3019
  /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mt-7 text-[17px] font-semibold", children: t("pptx.backstage.newHeading") }),
3021
3020
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-5 grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-6", children: pptx.BACKSTAGE_TEMPLATES.map((template) => /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3041,7 +3040,7 @@ function BackstageNewGallery(props) {
3041
3040
  ] });
3042
3041
  }
3043
3042
  function BackstageRecentList(props) {
3044
- const { t } = chunk6GFSF2ML_js.useTranslation();
3043
+ const { t } = chunkAIA7CY5U_js.useTranslation();
3045
3044
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 border-t border-border", children: [
3046
3045
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_120px_90px] px-3 py-2 text-[11px] font-semibold text-muted-foreground", children: [
3047
3046
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: t("pptx.backstage.columnName") }),
@@ -3095,7 +3094,7 @@ function BackstageCards({
3095
3094
  props,
3096
3095
  run
3097
3096
  }) {
3098
- const { t } = chunk6GFSF2ML_js.useTranslation();
3097
+ const { t } = chunkAIA7CY5U_js.useTranslation();
3099
3098
  const handlers = {
3100
3099
  protect: props.onOpenPasswordProtection,
3101
3100
  inspect: props.onOpenDocumentProperties,
@@ -3157,7 +3156,7 @@ function BackstageNavIcon({ page }) {
3157
3156
  return Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-[17px] shrink-0", "aria-hidden": "true" }) : null;
3158
3157
  }
3159
3158
  function FileSection(p) {
3160
- const { t, locale } = chunk6GFSF2ML_js.useTranslation();
3159
+ const { t, locale } = chunkAIA7CY5U_js.useTranslation();
3161
3160
  const [requestedPage, setRequestedPage] = React108.useState("home");
3162
3161
  const customization = useViewerCustomizationContext();
3163
3162
  const nav = pptx.backstageNavEntries(pptx.BACKSTAGE_NAV, customization);
@@ -3165,7 +3164,7 @@ function FileSection(p) {
3165
3164
  const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
3166
3165
  const [query, setQuery] = React108.useState("");
3167
3166
  const [recent, setRecent] = React108.useState([]);
3168
- const { isHidden } = chunkSEIVQGH5_js.useToolbarVisibility(p.hiddenActions);
3167
+ const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(p.hiddenActions);
3169
3168
  const exportHidden = isHidden("export");
3170
3169
  const storage = useViewerStorage();
3171
3170
  const cloud = useViewerCloudFiles();
@@ -3434,7 +3433,7 @@ function RibbonMenu({
3434
3433
  return /* @__PURE__ */ jsxRuntime.jsx(
3435
3434
  "div",
3436
3435
  {
3437
- className: chunk6GFSF2ML_js.cn("fixed z-50", className),
3436
+ className: chunkAIA7CY5U_js.cn("fixed z-50", className),
3438
3437
  style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
3439
3438
  children
3440
3439
  }
@@ -3444,7 +3443,7 @@ var THUMB_WIDTH = 128;
3444
3443
  var THUMB_HEIGHT = 72;
3445
3444
  var MAX_PREVIEW_ELEMENTS = 100;
3446
3445
  function LayoutGalleryMenu(p) {
3447
- const { t } = chunk6GFSF2ML_js.useTranslation();
3446
+ const { t } = chunkAIA7CY5U_js.useTranslation();
3448
3447
  return /* @__PURE__ */ jsxRuntime.jsx(RibbonMenu, { anchorRef: p.anchorRef, className: "flex flex-col w-[620px] pt-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
3449
3448
  "div",
3450
3449
  {
@@ -3460,7 +3459,7 @@ function LayoutGalleryMenu(p) {
3460
3459
  type: "button",
3461
3460
  "aria-current": isCurrent ? "true" : void 0,
3462
3461
  title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
3463
- className: chunk6GFSF2ML_js.cn(
3462
+ className: chunkAIA7CY5U_js.cn(
3464
3463
  "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",
3465
3464
  isCurrent ? "border-primary bg-primary/10" : "border-transparent"
3466
3465
  ),
@@ -3534,7 +3533,7 @@ function LayoutArtwork({
3534
3533
  backgroundColor
3535
3534
  };
3536
3535
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
3537
- chunkSEIVQGH5_js.StaticElementRenderer,
3536
+ chunk5CJHRYFK_js.StaticElementRenderer,
3538
3537
  {
3539
3538
  element,
3540
3539
  activeSlide: slide,
@@ -3809,7 +3808,7 @@ function WebRibbonSection({
3809
3808
  return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-section", { ref });
3810
3809
  }
3811
3810
  function ReviewSection(p) {
3812
- const { t } = chunk6GFSF2ML_js.useTranslation();
3811
+ const { t } = chunkAIA7CY5U_js.useTranslation();
3813
3812
  const [activeCommentId, setActiveCommentId] = React108.useState(null);
3814
3813
  React108.useEffect(() => pptx.trackActiveComment(document, setActiveCommentId), []);
3815
3814
  const host = p.commentsHost;
@@ -3869,7 +3868,7 @@ function SlideShowOptions({
3869
3868
  children
3870
3869
  }) {
3871
3870
  const ref = React108.useRef(null);
3872
- const { t } = chunk6GFSF2ML_js.useTranslation();
3871
+ const { t } = chunkAIA7CY5U_js.useTranslation();
3873
3872
  React108.useLayoutEffect(() => {
3874
3873
  if (!ref.current) {
3875
3874
  return;
@@ -3888,8 +3887,8 @@ function SlideShowOptions({
3888
3887
  return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-slide-show-options", { ref, children });
3889
3888
  }
3890
3889
  function SubtitleSettingsControl() {
3891
- const { t } = chunk6GFSF2ML_js.useTranslation();
3892
- const supplied = React108.useContext(chunkSEIVQGH5_js.ViewerOptionsStoreContext);
3890
+ const { t } = chunkAIA7CY5U_js.useTranslation();
3891
+ const supplied = React108.useContext(chunk5CJHRYFK_js.ViewerOptionsStoreContext);
3893
3892
  const fallback = React108.useRef(null);
3894
3893
  if (!supplied) {
3895
3894
  fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
@@ -3922,8 +3921,8 @@ function SubtitleSettingsControl() {
3922
3921
  );
3923
3922
  }
3924
3923
  function SlideShowSection(p) {
3925
- const { t } = chunk6GFSF2ML_js.useTranslation();
3926
- const { isHidden } = chunkSEIVQGH5_js.useToolbarVisibility(p.hiddenActions);
3924
+ const { t } = chunkAIA7CY5U_js.useTranslation();
3925
+ const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(p.hiddenActions);
3927
3926
  const actions = {
3928
3927
  "slideShow.startSlideShow.fromBeginning": p.onPresentFromBeginning ?? (() => p.onSetMode("present")),
3929
3928
  "slideShow.startSlideShow.fromCurrent": p.onPresent,
@@ -4167,7 +4166,7 @@ function FontFormatGroup(p) {
4167
4166
  return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font", controls, onRequest: request });
4168
4167
  }
4169
4168
  function FontPickerGroup(p) {
4170
- const { t } = chunk6GFSF2ML_js.useTranslation();
4169
+ const { t } = chunkAIA7CY5U_js.useTranslation();
4171
4170
  const { enabled, fontFamily, fontSize, themeFonts, embeddedFonts, customFonts } = p;
4172
4171
  const { onFamily, onSize } = p;
4173
4172
  const controls = React108.useMemo(
@@ -4190,7 +4189,7 @@ function FontPickerGroup(p) {
4190
4189
  return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font-picker", controls, onRequest: request });
4191
4190
  }
4192
4191
  function ParagraphGroup(p) {
4193
- const { t } = chunk6GFSF2ML_js.useTranslation();
4192
+ const { t } = chunkAIA7CY5U_js.useTranslation();
4194
4193
  const { canMut, canFormat, effectiveTs, onUpdateTextStyle, onToggleBullets } = p;
4195
4194
  const commands = useRibbonGalleryCommands();
4196
4195
  const align = pptx.paragraphHomeAlign(effectiveTs?.align);
@@ -4291,7 +4290,7 @@ function useParagraphListKind(element) {
4291
4290
  return React108.useSyncExternalStore(subscribe, read, readServer);
4292
4291
  }
4293
4292
  function TextSection(p) {
4294
- const { t } = chunk6GFSF2ML_js.useTranslation();
4293
+ const { t } = chunkAIA7CY5U_js.useTranslation();
4295
4294
  const hasSel = Boolean(p.selectedElement);
4296
4295
  const canMut = hasSel && p.canEdit;
4297
4296
  const { fontFamily, fontSize } = extractFontInfo(p.selectedElement, p.themeFonts);
@@ -4367,7 +4366,7 @@ function TextSection(p) {
4367
4366
  ] });
4368
4367
  }
4369
4368
  function ViewSection(p) {
4370
- const { t } = chunk6GFSF2ML_js.useTranslation();
4369
+ const { t } = chunkAIA7CY5U_js.useTranslation();
4371
4370
  const ref = React108.useRef(null);
4372
4371
  React108.useEffect(() => {
4373
4372
  const host = ref.current;
@@ -4440,10 +4439,10 @@ var MENU_ITEMS = [
4440
4439
  { key: "file", label: "pptx.ribbon.tab.file", icon: lu.LuFile }
4441
4440
  ];
4442
4441
  function MobileMenuSheet(props) {
4443
- const { t } = chunk6GFSF2ML_js.useTranslation();
4442
+ const { t } = chunkAIA7CY5U_js.useTranslation();
4444
4443
  const { open, onClose } = props;
4445
4444
  const [active, setActive] = React108.useState("home");
4446
- const { isTabVisible } = chunkSEIVQGH5_js.useToolbarVisibility(props.hiddenActions);
4445
+ const { isTabVisible } = chunk5CJHRYFK_js.useToolbarVisibility(props.hiddenActions);
4447
4446
  return /* @__PURE__ */ jsxRuntime.jsx(
4448
4447
  MobileSheet,
4449
4448
  {
@@ -4457,7 +4456,7 @@ function MobileMenuSheet(props) {
4457
4456
  {
4458
4457
  type: "button",
4459
4458
  onClick: () => setActive(active === key ? null : key),
4460
- className: chunk6GFSF2ML_js.cn(
4459
+ className: chunkAIA7CY5U_js.cn(
4461
4460
  "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]",
4462
4461
  active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
4463
4462
  ),
@@ -4732,10 +4731,10 @@ function MobileSectionBody({
4732
4731
  }
4733
4732
  }
4734
4733
  function MobileToolbar(props) {
4735
- const { t } = chunk6GFSF2ML_js.useTranslation();
4734
+ const { t } = chunkAIA7CY5U_js.useTranslation();
4736
4735
  const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
4737
4736
  const [menuOpen, setMenuOpen] = React108.useState(false);
4738
- const { isHidden } = chunkSEIVQGH5_js.useToolbarVisibility(props.hiddenActions);
4737
+ const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(props.hiddenActions);
4739
4738
  const showEdit = mode === "edit" || mode === "master";
4740
4739
  const hidden = [];
4741
4740
  if (isHidden("undo")) {
@@ -4781,8 +4780,8 @@ function MobileToolbar(props) {
4781
4780
  ] });
4782
4781
  }
4783
4782
  function ChartSelectionStrip() {
4784
- const { t } = chunk6GFSF2ML_js.useTranslation();
4785
- const commands = chunkSEIVQGH5_js.useChartFormatContext();
4783
+ const { t } = chunkAIA7CY5U_js.useTranslation();
4784
+ const commands = chunk5CJHRYFK_js.useChartFormatContext();
4786
4785
  const chart = commands?.chart;
4787
4786
  const chartData = chart?.type === "chart" ? chart.chartData : void 0;
4788
4787
  const controls = React108.useMemo(
@@ -4813,7 +4812,7 @@ function PictureSizeStrip({
4813
4812
  hiddenActions
4814
4813
  }) {
4815
4814
  const crop = useShapeFormatContext()?.crop;
4816
- const { isHidden } = chunkSEIVQGH5_js.useToolbarVisibility(hiddenActions);
4815
+ const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(hiddenActions);
4817
4816
  const controls = React108.useMemo(
4818
4817
  () => pptx.pictureSizeHomeControls({
4819
4818
  editable: Boolean(crop),
@@ -4830,7 +4829,7 @@ function PictureSizeStrip({
4830
4829
  return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "picture-size", controls, onRequest: request });
4831
4830
  }
4832
4831
  function useTranslateOr() {
4833
- const { t } = chunk6GFSF2ML_js.useTranslation();
4832
+ const { t } = chunkAIA7CY5U_js.useTranslation();
4834
4833
  return (key, fallback) => pptx.galleryTextLabel(t, key, fallback);
4835
4834
  }
4836
4835
  function ContextualTabSection({
@@ -4853,7 +4852,7 @@ function ContextualTabSection({
4853
4852
  )) });
4854
4853
  }
4855
4854
  function DrawingGroup(p) {
4856
- const { t } = chunk6GFSF2ML_js.useTranslation();
4855
+ const { t } = chunkAIA7CY5U_js.useTranslation();
4857
4856
  const { recentColors, pushColor } = useRecentColors();
4858
4857
  const themeColors = useThemeColorMap();
4859
4858
  const commands = useRibbonGalleryCommands();
@@ -4939,7 +4938,7 @@ function DrawingGroup(p) {
4939
4938
  ] });
4940
4939
  }
4941
4940
  function EditingSection(p) {
4942
- const { t } = chunk6GFSF2ML_js.useTranslation();
4941
+ const { t } = chunkAIA7CY5U_js.useTranslation();
4943
4942
  const { onToggleFindReplace, onSelectAll } = p;
4944
4943
  const controls = React108.useMemo(
4945
4944
  () => pptx.editingHomeControls({ selectAll: Boolean(onSelectAll) }),
@@ -4987,7 +4986,7 @@ var RIBBON_OVERLAY_CLASS = 'absolute inset-x-0 top-full z-[35] border-b border-b
4987
4986
  function RibbonRevealStrip({
4988
4987
  ribbon
4989
4988
  }) {
4990
- const { t } = chunk6GFSF2ML_js.useTranslation();
4989
+ const { t } = chunkAIA7CY5U_js.useTranslation();
4991
4990
  const label = t(pptx.RIBBON_DISPLAY_REVEAL_LABEL_KEY);
4992
4991
  return /* @__PURE__ */ jsxRuntime.jsx(
4993
4992
  "button",
@@ -5006,7 +5005,7 @@ function RibbonDisplayButton({
5006
5005
  ribbon,
5007
5006
  state
5008
5007
  }) {
5009
- const { t } = chunk6GFSF2ML_js.useTranslation();
5008
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5010
5009
  const label = t(pptx.RIBBON_DISPLAY_OPTIONS_LABEL_KEY);
5011
5010
  return /* @__PURE__ */ jsxRuntime.jsx(
5012
5011
  "button",
@@ -5018,7 +5017,7 @@ function RibbonDisplayButton({
5018
5017
  title: label,
5019
5018
  "data-pptx-chrome": "ribbon-display-options",
5020
5019
  onClick: () => ribbon.toggleMenu(),
5021
- className: chunk6GFSF2ML_js.cn(
5020
+ className: chunkAIA7CY5U_js.cn(
5022
5021
  "mx-1 inline-flex h-[22px] w-[22px] shrink-0 items-center justify-center rounded-sm text-muted-foreground hover:bg-accent hover:text-foreground",
5023
5022
  state.menuOpen && "bg-accent text-foreground"
5024
5023
  ),
@@ -5034,7 +5033,7 @@ function RibbonDisplayButton({
5034
5033
  strokeLinecap: "round",
5035
5034
  strokeLinejoin: "round",
5036
5035
  "aria-hidden": "true",
5037
- className: chunk6GFSF2ML_js.cn(state.effectiveMode === "tabs" && "rotate-180"),
5036
+ className: chunkAIA7CY5U_js.cn(state.effectiveMode === "tabs" && "rotate-180"),
5038
5037
  children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m4 6 4 4 4-4" })
5039
5038
  }
5040
5039
  )
@@ -5045,7 +5044,7 @@ function RibbonDisplayMenu({
5045
5044
  ribbon,
5046
5045
  state
5047
5046
  }) {
5048
- const { t } = chunk6GFSF2ML_js.useTranslation();
5047
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5049
5048
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-0", children: /* @__PURE__ */ jsxRuntime.jsx(
5050
5049
  "div",
5051
5050
  {
@@ -5075,7 +5074,7 @@ function RibbonDisplayMenu({
5075
5074
  strokeLinecap: "round",
5076
5075
  strokeLinejoin: "round",
5077
5076
  "aria-hidden": "true",
5078
- className: chunk6GFSF2ML_js.cn("shrink-0", !item.checked && "invisible"),
5077
+ className: chunkAIA7CY5U_js.cn("shrink-0", !item.checked && "invisible"),
5079
5078
  children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m3 8.5 3 3 7-7" })
5080
5079
  }
5081
5080
  ),
@@ -5090,8 +5089,8 @@ function RibbonDisplayMenu({
5090
5089
  var TAB_BASE = "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap transition-colors max-md:min-h-[36px] max-md:px-3";
5091
5090
  var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
5092
5091
  function RibbonTabBar(p) {
5093
- const { t } = chunk6GFSF2ML_js.useTranslation();
5094
- const viewerOptions = chunkSEIVQGH5_js.useViewerOptionsContext();
5092
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5093
+ const viewerOptions = chunk5CJHRYFK_js.useViewerOptionsContext();
5095
5094
  return /* @__PURE__ */ jsxRuntime.jsxs(
5096
5095
  "div",
5097
5096
  {
@@ -5099,7 +5098,7 @@ function RibbonTabBar(p) {
5099
5098
  "data-pptx-chrome": "ribbon-tabs",
5100
5099
  className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
5101
5100
  children: [
5102
- chunk6GFSF2ML_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
5101
+ chunkAIA7CY5U_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
5103
5102
  const selected = p.activeSection === s.id;
5104
5103
  return /* @__PURE__ */ jsxRuntime.jsx(
5105
5104
  "button",
@@ -5110,7 +5109,7 @@ function RibbonTabBar(p) {
5110
5109
  title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
5111
5110
  onClick: () => p.onSelectSection(s.id),
5112
5111
  onDoubleClick: s.id === "file" ? void 0 : () => p.onToggleCollapsed?.(),
5113
- className: chunk6GFSF2ML_js.cn(
5112
+ className: chunkAIA7CY5U_js.cn(
5114
5113
  TAB_BASE,
5115
5114
  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"
5116
5115
  ),
@@ -5131,7 +5130,7 @@ function RibbonTabBar(p) {
5131
5130
  title: pptx.resolveScreenTip(viewerOptions, tab.label),
5132
5131
  onClick: () => p.onSelectAddIn?.(tab.id),
5133
5132
  onDoubleClick: () => p.onToggleCollapsed?.(),
5134
- className: chunk6GFSF2ML_js.cn(
5133
+ className: chunkAIA7CY5U_js.cn(
5135
5134
  TAB_BASE,
5136
5135
  selected ? `text-foreground ${TAB_UNDERLINE}` : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
5137
5136
  ),
@@ -5153,7 +5152,7 @@ function RibbonTabBar(p) {
5153
5152
  title: pptx.resolveScreenTip(viewerOptions, label),
5154
5153
  onClick: () => p.onSelectContextual(id),
5155
5154
  onDoubleClick: () => p.onToggleCollapsed?.(),
5156
- className: chunk6GFSF2ML_js.cn(
5155
+ className: chunkAIA7CY5U_js.cn(
5157
5156
  TAB_BASE,
5158
5157
  "text-primary",
5159
5158
  selected ? TAB_UNDERLINE : "hover:bg-primary/10"
@@ -5170,10 +5169,10 @@ function RibbonTabBar(p) {
5170
5169
  );
5171
5170
  }
5172
5171
  function TabRowActions(p) {
5173
- const { t } = chunk6GFSF2ML_js.useTranslation();
5174
- const collab = chunkSEIVQGH5_js.useCollaboration();
5172
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5173
+ const collab = chunk5CJHRYFK_js.useCollaboration();
5175
5174
  const isCollaborating = Boolean(collab && collab.status === "connected");
5176
- const { isHidden } = chunkSEIVQGH5_js.useToolbarVisibility(p.hiddenActions);
5175
+ const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(p.hiddenActions);
5177
5176
  const customization = useViewerCustomizationContext();
5178
5177
  const ref = React108.useRef(null);
5179
5178
  const handlers = React108.useRef(p);
@@ -5227,8 +5226,8 @@ function TabRowActions(p) {
5227
5226
  ] });
5228
5227
  }
5229
5228
  function TitleBarElement(p) {
5230
- const { t } = chunk6GFSF2ML_js.useTranslation();
5231
- const options = chunkSEIVQGH5_js.useViewerOptionsContext();
5229
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5230
+ const options = chunk5CJHRYFK_js.useViewerOptionsContext();
5232
5231
  const customization = useViewerCustomizationContext();
5233
5232
  const ref = React108.useRef(null);
5234
5233
  const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
@@ -5293,7 +5292,7 @@ function CustomShowsControls({
5293
5292
  onDeleteActiveCustomShow,
5294
5293
  onToggleCurrentSlideInActiveShow
5295
5294
  }) {
5296
- const { t } = chunk6GFSF2ML_js.useTranslation();
5295
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5297
5296
  if (customShows.length > 0) {
5298
5297
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5299
5298
  sep,
@@ -5348,7 +5347,7 @@ function CustomShowsControls({
5348
5347
  {
5349
5348
  type: "button",
5350
5349
  onClick: onToggleCurrentSlideInActiveShow,
5351
- className: chunk6GFSF2ML_js.cn(
5350
+ className: chunkAIA7CY5U_js.cn(
5352
5351
  "px-2 py-1 rounded text-[11px] transition-colors",
5353
5352
  isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
5354
5353
  ),
@@ -5387,7 +5386,7 @@ function PresentDropdown({
5387
5386
  onToggleSubtitles,
5388
5387
  showSubtitles
5389
5388
  }) {
5390
- const { t } = chunk6GFSF2ML_js.useTranslation();
5389
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5391
5390
  const [open, setOpen] = React108.useState(false);
5392
5391
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
5393
5392
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-stretch rounded border border-border bg-muted text-xs overflow-hidden", children: [
@@ -5396,7 +5395,7 @@ function PresentDropdown({
5396
5395
  {
5397
5396
  type: "button",
5398
5397
  onClick: onPresent,
5399
- className: chunk6GFSF2ML_js.cn(
5398
+ className: chunkAIA7CY5U_js.cn(
5400
5399
  "px-2 py-1 transition-colors",
5401
5400
  isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
5402
5401
  ),
@@ -5409,7 +5408,7 @@ function PresentDropdown({
5409
5408
  {
5410
5409
  type: "button",
5411
5410
  onClick: () => setOpen((prev) => !prev),
5412
- className: chunk6GFSF2ML_js.cn(
5411
+ className: chunkAIA7CY5U_js.cn(
5413
5412
  "inline-flex items-center px-1 transition-colors border-l border-border",
5414
5413
  open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
5415
5414
  ),
@@ -5537,7 +5536,7 @@ function ModeSwitcher({
5537
5536
  onToggleSubtitles,
5538
5537
  showSubtitles
5539
5538
  }) {
5540
- const { t } = chunk6GFSF2ML_js.useTranslation();
5539
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5541
5540
  if (mode === "master") {
5542
5541
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1.5", children: [
5543
5542
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center px-2 py-0.5 rounded-sm bg-amber-600/90 text-[10px] text-amber-50", children: t("pptx.mode.masterView") }),
@@ -5575,7 +5574,7 @@ var EXPORT_CARD_OF = {
5575
5574
  copyImg: "copyImage"
5576
5575
  };
5577
5576
  function OverflowMenu(p) {
5578
- const { t } = chunk6GFSF2ML_js.useTranslation();
5577
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5579
5578
  const customization = useViewerCustomizationContext();
5580
5579
  const offered = (k) => {
5581
5580
  const card = EXPORT_CARD_OF[k];
@@ -5612,7 +5611,7 @@ function OverflowMenu(p) {
5612
5611
  {
5613
5612
  type: "button",
5614
5613
  onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
5615
- className: chunk6GFSF2ML_js.cn(
5614
+ className: chunkAIA7CY5U_js.cn(
5616
5615
  "p-1.5 rounded transition-colors",
5617
5616
  p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
5618
5617
  ),
@@ -5650,7 +5649,7 @@ function OverflowMenu(p) {
5650
5649
  ] });
5651
5650
  }
5652
5651
  function ToolbarPrimaryRow(p) {
5653
- const { t } = chunk6GFSF2ML_js.useTranslation();
5652
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5654
5653
  const {
5655
5654
  mode,
5656
5655
  canEdit,
@@ -5659,7 +5658,7 @@ function ToolbarPrimaryRow(p) {
5659
5658
  onToggleSidebar,
5660
5659
  onToggleInspector
5661
5660
  } = p;
5662
- const collab = chunkSEIVQGH5_js.useCollaboration();
5661
+ const collab = chunk5CJHRYFK_js.useCollaboration();
5663
5662
  const customization = useViewerCustomizationContext();
5664
5663
  const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
5665
5664
  const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
@@ -5679,7 +5678,7 @@ function ToolbarPrimaryRow(p) {
5679
5678
  {
5680
5679
  type: "button",
5681
5680
  onClick: onToggleSidebar,
5682
- className: chunk6GFSF2ML_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
5681
+ className: chunkAIA7CY5U_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
5683
5682
  title: t("pptx.toolbar.toggleSlidesPanel"),
5684
5683
  "aria-label": t("pptx.toolbar.toggleSlidesPanel"),
5685
5684
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
@@ -5740,7 +5739,7 @@ function ToolbarPrimaryRow(p) {
5740
5739
  {
5741
5740
  type: "button",
5742
5741
  onClick: onToggleInspector,
5743
- className: chunk6GFSF2ML_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
5742
+ className: chunkAIA7CY5U_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
5744
5743
  title: t("pptx.toolbar.toggleInspector"),
5745
5744
  "aria-label": t("pptx.toolbar.toggleInspector"),
5746
5745
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
@@ -5751,7 +5750,7 @@ function ToolbarPrimaryRow(p) {
5751
5750
  {
5752
5751
  type: "button",
5753
5752
  onClick: p.onToggleAiPanel,
5754
- className: chunk6GFSF2ML_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
5753
+ className: chunkAIA7CY5U_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
5755
5754
  title: t("pptx.toolbar.toggleAiAssistant"),
5756
5755
  "aria-label": t("pptx.toolbar.toggleAiAssistant"),
5757
5756
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
@@ -5762,7 +5761,7 @@ function ToolbarPrimaryRow(p) {
5762
5761
  {
5763
5762
  type: "button",
5764
5763
  onClick: p.onOpenSettings ?? p.onToggleShortcuts,
5765
- className: chunk6GFSF2ML_js.cn(qab, "text-muted-foreground"),
5764
+ className: chunkAIA7CY5U_js.cn(qab, "text-muted-foreground"),
5766
5765
  title: t("pptx.toolbar.settingsShortcuts"),
5767
5766
  "aria-label": t("pptx.toolbar.settings"),
5768
5767
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
@@ -5806,7 +5805,7 @@ function useContextualRibbonTab(selectedElement, customization, onFallback) {
5806
5805
  return { visible, active, fellBack, select: setChosen };
5807
5806
  }
5808
5807
  function HelpSection(p) {
5809
- const { t } = chunk6GFSF2ML_js.useTranslation();
5808
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5810
5809
  const groups = pptx.buildHelpRibbon(t, {
5811
5810
  options: pptx.isDialogAvailable(useViewerCustomizationContext(), "options")
5812
5811
  });
@@ -5826,7 +5825,7 @@ function HelpSection(p) {
5826
5825
  return /* @__PURE__ */ jsxRuntime.jsx(WebRibbonSection, { groups, onCommand: request });
5827
5826
  }
5828
5827
  function RecordSection(props) {
5829
- const { t } = chunk6GFSF2ML_js.useTranslation();
5828
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5830
5829
  const request = (id) => {
5831
5830
  if (id === "record.record.fromBeginning") {
5832
5831
  props.onRecordFromBeginning();
@@ -5959,9 +5958,9 @@ function ToolbarLateTabs({
5959
5958
  }
5960
5959
  function Toolbar(p) {
5961
5960
  const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
5962
- const { t } = chunk6GFSF2ML_js.useTranslation();
5963
- const { isTabVisible } = chunkSEIVQGH5_js.useToolbarVisibility(p.hiddenActions);
5964
- const viewerOptions = chunkSEIVQGH5_js.useViewerOptionsContext();
5961
+ const { t } = chunkAIA7CY5U_js.useTranslation();
5962
+ const { isTabVisible } = chunk5CJHRYFK_js.useToolbarVisibility(p.hiddenActions);
5963
+ const viewerOptions = chunk5CJHRYFK_js.useViewerOptionsContext();
5965
5964
  const customization = useViewerCustomizationContext();
5966
5965
  const belowInput = React108.useMemo(
5967
5966
  () => ({
@@ -5977,7 +5976,7 @@ function Toolbar(p) {
5977
5976
  const contextual = useContextualRibbonTab(p.selectedElement, customization, fallBackHome);
5978
5977
  const addIns = useRibbonAddInTabs(fallBackHome);
5979
5978
  const ribbon = useRibbonDisplayFallback(p.ribbonDisplay);
5980
- const ribbonState = chunkSEIVQGH5_js.useController(ribbon);
5979
+ const ribbonState = chunk5CJHRYFK_js.useController(ribbon);
5981
5980
  const { layout, effectiveMode, peek } = ribbonState;
5982
5981
  const detachOverflow = React108.useRef(null);
5983
5982
  const inspector = React108.useRef({ open: p.isInspectorPaneOpen, toggle: p.onToggleInspector });
@@ -6029,7 +6028,7 @@ function Toolbar(p) {
6029
6028
  "data-ribbon-display": effectiveMode,
6030
6029
  "data-ribbon-peek": peek ? "" : void 0,
6031
6030
  "aria-label": t("pptx.toolbar.presentationToolbarAria"),
6032
- className: chunk6GFSF2ML_js.cn(
6031
+ className: chunkAIA7CY5U_js.cn(
6033
6032
  peekedFullScreen ? RIBBON_PEEK_ROOT_CLASS : "relative z-20 border-b border-border bg-secondary/50 overflow-visible",
6034
6033
  !rootShown && "hidden"
6035
6034
  ),
@@ -6080,7 +6079,7 @@ function Toolbar(p) {
6080
6079
  {
6081
6080
  type: "button",
6082
6081
  onClick: p.onToggleCompactToolbar,
6083
- className: chunk6GFSF2ML_js.cn(
6082
+ className: chunkAIA7CY5U_js.cn(
6084
6083
  "px-2 py-1 rounded text-[11px] transition-colors mr-1",
6085
6084
  isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
6086
6085
  ),
@@ -6110,7 +6109,7 @@ function Toolbar(p) {
6110
6109
  {
6111
6110
  ref: attachOverflow,
6112
6111
  "data-pptx-chrome": "ribbon-content",
6113
- className: chunk6GFSF2ML_js.cn(
6112
+ className: chunkAIA7CY5U_js.cn(
6114
6113
  // Plain controls stay compact; labelled RibbonGroups opt into stretching.
6115
6114
  // `RibbonGroupScope` wraps controls in a `display: contents` div, so its
6116
6115
  // children are this row's flex items too and must not shrink (a shrunk
@@ -6303,7 +6302,7 @@ function Toolbar(p) {
6303
6302
  ] });
6304
6303
  }
6305
6304
  function CanvasGuides({ guides, onDeleteGuide, onStartGuideDrag }) {
6306
- const { t } = chunk6GFSF2ML_js.useTranslation();
6305
+ const { t } = chunkAIA7CY5U_js.useTranslation();
6307
6306
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: guides.map((guide) => /* @__PURE__ */ jsxRuntime.jsx(
6308
6307
  "div",
6309
6308
  {
@@ -6515,7 +6514,7 @@ function ChartQuickActionsOverlay({
6515
6514
  scale: stageScale = 1,
6516
6515
  onUpdateElement
6517
6516
  }) {
6518
- const { t } = chunk6GFSF2ML_js.useTranslation();
6517
+ const { t } = chunkAIA7CY5U_js.useTranslation();
6519
6518
  const [open, setOpen] = React108.useState(null);
6520
6519
  const hostRef = React108.useRef(null);
6521
6520
  React108.useEffect(() => {
@@ -6686,7 +6685,7 @@ function CommentMarkersOverlay({
6686
6685
  canvasSize,
6687
6686
  onCommentMarkerClick
6688
6687
  }) {
6689
- const { t } = chunk6GFSF2ML_js.useTranslation(), half = pptx.COMMENT_MARKER_SIZE / 2, markers = pptx.buildCommentMarkers(
6688
+ const { t } = chunkAIA7CY5U_js.useTranslation(), half = pptx.COMMENT_MARKER_SIZE / 2, markers = pptx.buildCommentMarkers(
6690
6689
  comments,
6691
6690
  canvasSize.width,
6692
6691
  canvasSize.height,
@@ -6730,7 +6729,7 @@ function ConnectorEndpointOverlay({
6730
6729
  canvasStageRef,
6731
6730
  onUpdateElement
6732
6731
  }) {
6733
- const { t } = chunk6GFSF2ML_js.useTranslation();
6732
+ const { t } = chunkAIA7CY5U_js.useTranslation();
6734
6733
  const [drag, setDrag] = React108.useState(null);
6735
6734
  const candidates = React108.useMemo(
6736
6735
  () => pptx.collectConnectorSiteCandidates(elements.filter((el) => el.id !== connector.id)),
@@ -6966,7 +6965,7 @@ function DrawingOverlaySvg({
6966
6965
  onPointerDown,
6967
6966
  onPointerMove,
6968
6967
  onPointerUp,
6969
- children: isStrokeActive && liveStrokeView ? chunkSEIVQGH5_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
6968
+ children: isStrokeActive && liveStrokeView ? chunk5CJHRYFK_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
6970
6969
  "path",
6971
6970
  {
6972
6971
  d: liveStrokeD,
@@ -6981,7 +6980,7 @@ function DrawingOverlaySvg({
6981
6980
  }
6982
6981
  );
6983
6982
  }
6984
- function GridOverlay({ canvasSize, gridSpacingPx = chunk6GFSF2ML_js.GRID_SIZE, visible }) {
6983
+ function GridOverlay({ canvasSize, gridSpacingPx = chunkAIA7CY5U_js.GRID_SIZE, visible }) {
6985
6984
  const spacing = Math.max(gridSpacingPx, 2);
6986
6985
  const patternId = React108.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
6987
6986
  if (!visible) {
@@ -7009,7 +7008,7 @@ function MotionPathOverlay({
7009
7008
  canEdit,
7010
7009
  onChangePath
7011
7010
  }) {
7012
- const { t } = chunk6GFSF2ML_js.useTranslation();
7011
+ const { t } = chunkAIA7CY5U_js.useTranslation();
7013
7012
  const dragRef = React108.useRef(null);
7014
7013
  const frame = {
7015
7014
  originX: element.x + element.width / 2,
@@ -7123,7 +7122,7 @@ function MotionPathOverlay({
7123
7122
  );
7124
7123
  }
7125
7124
  function EditPointsMenu({ menu, onRun }) {
7126
- const { t } = chunk6GFSF2ML_js.useTranslation();
7125
+ const { t } = chunkAIA7CY5U_js.useTranslation();
7127
7126
  const stop2 = (event) => event.stopPropagation();
7128
7127
  return /* @__PURE__ */ jsxRuntime.jsx(
7129
7128
  "div",
@@ -7169,7 +7168,7 @@ function EditPointsOverlay({
7169
7168
  onCommit,
7170
7169
  onExit
7171
7170
  }) {
7172
- const { t } = chunk6GFSF2ML_js.useTranslation();
7171
+ const { t } = chunkAIA7CY5U_js.useTranslation();
7173
7172
  const [, rerender] = React108.useReducer((n) => n + 1, 0);
7174
7173
  const svgRef = React108.useRef(null);
7175
7174
  const latest = React108.useRef({ onCommit, onExit });
@@ -7325,7 +7324,7 @@ function FreeformToolOverlay({
7325
7324
  onCommit,
7326
7325
  onCancel
7327
7326
  }) {
7328
- const { t } = chunk6GFSF2ML_js.useTranslation();
7327
+ const { t } = chunkAIA7CY5U_js.useTranslation();
7329
7328
  const [, rerender] = React108.useReducer((n) => n + 1, 0);
7330
7329
  const svgRef = React108.useRef(null);
7331
7330
  const latest = React108.useRef({ onCommit, onCancel });
@@ -7468,7 +7467,7 @@ function PictureCropOverlay({
7468
7467
  onUpdate,
7469
7468
  onContextMenu
7470
7469
  }) {
7471
- const { t } = chunk6GFSF2ML_js.useTranslation();
7470
+ const { t } = chunkAIA7CY5U_js.useTranslation();
7472
7471
  const overlay = pptx.buildCropOverlay(element, scale);
7473
7472
  const dragRef = React108.useRef(null);
7474
7473
  const latest = React108.useRef({ scale, onUpdate });
@@ -7516,7 +7515,7 @@ function PictureCropOverlay({
7516
7515
  };
7517
7516
  };
7518
7517
  const { ghost, frame, handles } = overlay;
7519
- const src = chunkSEIVQGH5_js.imgSrc(element);
7518
+ const src = chunk5CJHRYFK_js.imgSrc(element);
7520
7519
  return /* @__PURE__ */ jsxRuntime.jsxs(
7521
7520
  "div",
7522
7521
  {
@@ -7692,7 +7691,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
7692
7691
  }
7693
7692
  );
7694
7693
  }
7695
- var HorizontalRuler = /* @__PURE__ */ chunkSEIVQGH5_js.withDisplayName(
7694
+ var HorizontalRuler = /* @__PURE__ */ chunk5CJHRYFK_js.withDisplayName(
7696
7695
  /* @__PURE__ */ React108__default.default.memo(HorizontalRulerView),
7697
7696
  "HorizontalRuler"
7698
7697
  );
@@ -7766,7 +7765,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
7766
7765
  }
7767
7766
  );
7768
7767
  }
7769
- var VerticalRuler = /* @__PURE__ */ chunkSEIVQGH5_js.withDisplayName(
7768
+ var VerticalRuler = /* @__PURE__ */ chunk5CJHRYFK_js.withDisplayName(
7770
7769
  /* @__PURE__ */ React108__default.default.memo(VerticalRulerView),
7771
7770
  "VerticalRuler"
7772
7771
  );
@@ -7933,10 +7932,10 @@ function SelectionHandleOverlay({
7933
7932
  position: "absolute",
7934
7933
  left: element.x,
7935
7934
  top: element.y,
7936
- width: Math.max(element.width, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE),
7937
- height: Math.max(element.height, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE),
7938
- ["--pptx-selection-width"]: `${Math.max(element.width, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE)}px`,
7939
- ["--pptx-selection-height"]: `${Math.max(element.height, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE)}px`,
7935
+ width: Math.max(element.width, chunkAIA7CY5U_js.MIN_ELEMENT_SIZE),
7936
+ height: Math.max(element.height, chunkAIA7CY5U_js.MIN_ELEMENT_SIZE),
7937
+ ["--pptx-selection-width"]: `${Math.max(element.width, chunkAIA7CY5U_js.MIN_ELEMENT_SIZE)}px`,
7938
+ ["--pptx-selection-height"]: `${Math.max(element.height, chunkAIA7CY5U_js.MIN_ELEMENT_SIZE)}px`,
7940
7939
  // Every slide element carries an explicit numeric `zIndex` (see
7941
7940
  // `getContainerStyle`), so a sibling with no z-index at all paints
7942
7941
  // at the CSS "z-index: 0" level regardless of DOM order: any
@@ -7948,7 +7947,7 @@ function SelectionHandleOverlay({
7948
7947
  // (marquee z-50, connector overlay z-55/56) to match, well clear of
7949
7948
  // any realistic per-slide element count.
7950
7949
  zIndex: 58,
7951
- transform: chunk6GFSF2ML_js.getElementTransform(element),
7950
+ transform: chunkAIA7CY5U_js.getElementTransform(element),
7952
7951
  transformOrigin: "center",
7953
7952
  // Transparent everywhere a handle button is not, so a click that
7954
7953
  // misses every handle still reaches the shape (or whatever is
@@ -7960,14 +7959,14 @@ function SelectionHandleOverlay({
7960
7959
  onDoubleClick: (e) => onDoubleClick(element.id, e),
7961
7960
  onContextMenu: (e) => onContextMenu(element.id, e),
7962
7961
  children: /* @__PURE__ */ jsxRuntime.jsx(
7963
- chunkSEIVQGH5_js.ResizeHandles,
7962
+ chunk5CJHRYFK_js.ResizeHandles,
7964
7963
  {
7965
7964
  elementId: element.id,
7966
7965
  adjustmentHandles,
7967
7966
  onResizePointerDown,
7968
7967
  onAdjustmentPointerDown,
7969
7968
  rotation: element.rotation,
7970
- nonRotationTransform: chunk6GFSF2ML_js.getElementTransformWithoutRotation(element),
7969
+ nonRotationTransform: chunkAIA7CY5U_js.getElementTransformWithoutRotation(element),
7971
7970
  onRotate: allow.rotatable ? onRotate : void 0,
7972
7971
  forcePointerEvents: true
7973
7972
  }
@@ -8005,29 +8004,10 @@ function useCanvasEventHandlers({
8005
8004
  onMoveGuide
8006
8005
  }) {
8007
8006
  const elementFindHighlightsMap = React108.useMemo(() => {
8008
- const map = /* @__PURE__ */ new Map();
8009
- if (!findResults || findResults.length === 0 || activeSlideIndex === null) {
8010
- return map;
8007
+ if (!findResults || findResults.length === 0 || activeSlideIndex === void 0) {
8008
+ return /* @__PURE__ */ new Map();
8011
8009
  }
8012
- for (let i = 0; i < findResults.length; i++) {
8013
- const r = findResults[i];
8014
- if (r.slideIndex !== activeSlideIndex) {
8015
- continue;
8016
- }
8017
- if (!map.has(r.elementId)) {
8018
- map.set(r.elementId, /* @__PURE__ */ new Map());
8019
- }
8020
- const elMap = map.get(r.elementId);
8021
- if (!elMap.has(r.segmentIndex)) {
8022
- elMap.set(r.segmentIndex, []);
8023
- }
8024
- elMap.get(r.segmentIndex).push({
8025
- startOffset: r.startOffset,
8026
- length: r.length,
8027
- isCurrent: i === (findResultIndex ?? -1)
8028
- });
8029
- }
8030
- return map;
8010
+ return pptx.findTextHighlightsByElement(findResults, findResultIndex ?? -1, activeSlideIndex);
8031
8011
  }, [findResults, findResultIndex, activeSlideIndex]);
8032
8012
  const selectedBounds = React108.useMemo(() => {
8033
8013
  if (!selectedElement) {
@@ -8671,11 +8651,10 @@ function SlideCanvas(props) {
8671
8651
  props.registerInlineEditReader
8672
8652
  ]
8673
8653
  );
8674
- const errorReporting = React108.useMemo(
8675
- () => ({ onElementRenderError: props.onElementRenderError }),
8676
- [props.onElementRenderError]
8677
- );
8678
- return /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.ElementRenderErrorReportingContext.Provider, { value: errorReporting, children: /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) }) });
8654
+ const inherited = React108.useContext(chunk5CJHRYFK_js.ElementRenderErrorReportingContext);
8655
+ const reporter = props.onElementRenderError ?? inherited?.onElementRenderError;
8656
+ const errorReporting = React108.useMemo(() => ({ onElementRenderError: reporter }), [reporter]);
8657
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ElementRenderErrorReportingContext.Provider, { value: errorReporting, children: /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) }) });
8679
8658
  }
8680
8659
  function SlideCanvasContent({
8681
8660
  imagePaste,
@@ -8948,7 +8927,7 @@ function SlideCanvasContent({
8948
8927
  onPointerMove: handleStagePointerMove,
8949
8928
  onPointerUp: handleStagePointerUp,
8950
8929
  children: [
8951
- /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.SlideBackgroundImageLayer, { slide: activeSlide }),
8930
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.SlideBackgroundImageLayer, { slide: activeSlide }),
8952
8931
  presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
8953
8932
  /* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
8954
8933
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -8960,7 +8939,7 @@ function SlideCanvasContent({
8960
8939
  }
8961
8940
  ),
8962
8941
  templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
8963
- chunkSEIVQGH5_js.ElementRenderer,
8942
+ chunk5CJHRYFK_js.ElementRenderer,
8964
8943
  {
8965
8944
  element,
8966
8945
  activeSlide,
@@ -8983,7 +8962,7 @@ function SlideCanvasContent({
8983
8962
  ),
8984
8963
  renderInk: false,
8985
8964
  renderGroups: true,
8986
- adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk6GFSF2ML_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
8965
+ adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkAIA7CY5U_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
8987
8966
  onResizePointerDown: stableResizePointerDown,
8988
8967
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
8989
8968
  onRotate: stableRotate,
@@ -9005,7 +8984,7 @@ function SlideCanvasContent({
9005
8984
  `tpl-${element.id}`
9006
8985
  )),
9007
8986
  activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
9008
- chunkSEIVQGH5_js.ElementRenderer,
8987
+ chunk5CJHRYFK_js.ElementRenderer,
9009
8988
  {
9010
8989
  element,
9011
8990
  activeSlide,
@@ -9028,7 +9007,7 @@ function SlideCanvasContent({
9028
9007
  ),
9029
9008
  renderInk: true,
9030
9009
  renderGroups: true,
9031
- adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk6GFSF2ML_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
9010
+ adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkAIA7CY5U_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
9032
9011
  onResizePointerDown: stableResizePointerDown,
9033
9012
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
9034
9013
  onRotate: stableRotate,
@@ -9072,7 +9051,7 @@ function SlideCanvasContent({
9072
9051
  editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9073
9052
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
9074
9053
  /* @__PURE__ */ jsxRuntime.jsx(
9075
- chunkSEIVQGH5_js.ElementRenderer,
9054
+ chunk5CJHRYFK_js.ElementRenderer,
9076
9055
  {
9077
9056
  element: editingMember.member,
9078
9057
  activeSlide,
@@ -9107,11 +9086,11 @@ function SlideCanvasContent({
9107
9086
  `group-member-edit-${editingMember.member.id}`
9108
9087
  )
9109
9088
  ] }),
9110
- selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunk6GFSF2ML_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
9089
+ selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunkAIA7CY5U_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
9111
9090
  SelectionHandleOverlay,
9112
9091
  {
9113
9092
  element: selectedElement,
9114
- adjustmentHandles: chunk6GFSF2ML_js.getShapeAdjustmentHandleDescriptors(selectedElement),
9093
+ adjustmentHandles: chunkAIA7CY5U_js.getShapeAdjustmentHandleDescriptors(selectedElement),
9115
9094
  onResizePointerDown: stableResizePointerDown,
9116
9095
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
9117
9096
  onRotate: stableRotate,
@@ -9218,14 +9197,14 @@ function SlideCanvasContent({
9218
9197
  );
9219
9198
  }
9220
9199
  function LoadingState({ className, fontProgress }) {
9221
- const { t } = chunk6GFSF2ML_js.useTranslation();
9200
+ const { t } = chunkAIA7CY5U_js.useTranslation();
9222
9201
  return /* @__PURE__ */ jsxRuntime.jsx(
9223
9202
  "div",
9224
9203
  {
9225
9204
  role: "status",
9226
9205
  "aria-live": "polite",
9227
9206
  "aria-atomic": "true",
9228
- className: chunk6GFSF2ML_js.cn(
9207
+ className: chunkAIA7CY5U_js.cn(
9229
9208
  "h-full w-full flex items-center justify-center text-muted-foreground",
9230
9209
  className
9231
9210
  ),
@@ -9251,7 +9230,7 @@ function ErrorState({ className, error }) {
9251
9230
  {
9252
9231
  role: "alert",
9253
9232
  "aria-live": "assertive",
9254
- className: chunk6GFSF2ML_js.cn(
9233
+ className: chunkAIA7CY5U_js.cn(
9255
9234
  "h-full w-full flex items-center justify-center p-6 text-center text-red-400",
9256
9235
  className
9257
9236
  ),
@@ -9260,7 +9239,7 @@ function ErrorState({ className, error }) {
9260
9239
  );
9261
9240
  }
9262
9241
  function ShortcutPanel({ isOpen, onClose }) {
9263
- const { t } = chunk6GFSF2ML_js.useTranslation();
9242
+ const { t } = chunkAIA7CY5U_js.useTranslation();
9264
9243
  if (!isOpen) {
9265
9244
  return null;
9266
9245
  }
@@ -9282,7 +9261,7 @@ function ShortcutPanel({ isOpen, onClose }) {
9282
9261
  }
9283
9262
  )
9284
9263
  ] }),
9285
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunk6GFSF2ML_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
9264
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkAIA7CY5U_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
9286
9265
  "div",
9287
9266
  {
9288
9267
  className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
@@ -9304,7 +9283,7 @@ function AccessibilityPanel({
9304
9283
  reducedMotion,
9305
9284
  onToggleReducedMotion
9306
9285
  }) {
9307
- const { t } = chunk6GFSF2ML_js.useTranslation();
9286
+ const { t } = chunkAIA7CY5U_js.useTranslation();
9308
9287
  if (!isOpen) {
9309
9288
  return null;
9310
9289
  }
@@ -9342,14 +9321,14 @@ function AccessibilityPanel({
9342
9321
  "aria-label": t("pptx.accessibility.reduceMotion"),
9343
9322
  "aria-checked": reducedMotion ?? false,
9344
9323
  onClick: onToggleReducedMotion,
9345
- className: chunk6GFSF2ML_js.cn(
9324
+ className: chunkAIA7CY5U_js.cn(
9346
9325
  "relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
9347
9326
  reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
9348
9327
  ),
9349
9328
  children: /* @__PURE__ */ jsxRuntime.jsx(
9350
9329
  "span",
9351
9330
  {
9352
- className: chunk6GFSF2ML_js.cn(
9331
+ className: chunkAIA7CY5U_js.cn(
9353
9332
  "inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
9354
9333
  reducedMotion ? "translate-x-4" : "translate-x-0.5"
9355
9334
  )
@@ -9368,7 +9347,7 @@ function AccessibilityPanel({
9368
9347
  "div",
9369
9348
  {
9370
9349
  role: "listitem",
9371
- className: chunk6GFSF2ML_js.cn(
9350
+ className: chunkAIA7CY5U_js.cn(
9372
9351
  "flex items-start gap-2 rounded px-2 py-1.5 text-xs",
9373
9352
  /* Severity-based background and text colouring */
9374
9353
  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"
@@ -9396,7 +9375,7 @@ function ExportProgressModal({
9396
9375
  statusMessage,
9397
9376
  onCancel
9398
9377
  }) {
9399
- const { t } = chunk6GFSF2ML_js.useTranslation();
9378
+ const { t } = chunkAIA7CY5U_js.useTranslation();
9400
9379
  const ref = useWebControl(
9401
9380
  { open: isOpen, title, progress, status: statusMessage, translate: t },
9402
9381
  { "export-cancel": () => onCancel() }
@@ -9404,7 +9383,7 @@ function ExportProgressModal({
9404
9383
  return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-export-progress", { ref });
9405
9384
  }
9406
9385
  function StatusBar(p) {
9407
- const { t } = chunk6GFSF2ML_js.useTranslation();
9386
+ const { t } = chunkAIA7CY5U_js.useTranslation();
9408
9387
  const ref = React108.useRef(null);
9409
9388
  React108.useEffect(() => {
9410
9389
  const host = ref.current;
@@ -9486,7 +9465,7 @@ function ResizeHandle({
9486
9465
  {
9487
9466
  role: "separator",
9488
9467
  "aria-orientation": direction,
9489
- className: chunk6GFSF2ML_js.cn(
9468
+ className: chunkAIA7CY5U_js.cn(
9490
9469
  // Outer container: generous hit area for easy clicking.
9491
9470
  // The visible indicator is rendered via the inner pseudo-element (::after).
9492
9471
  "relative flex-shrink-0 z-20 group",
@@ -9497,7 +9476,7 @@ function ResizeHandle({
9497
9476
  children: /* @__PURE__ */ jsxRuntime.jsx(
9498
9477
  "div",
9499
9478
  {
9500
- className: chunk6GFSF2ML_js.cn(
9479
+ className: chunkAIA7CY5U_js.cn(
9501
9480
  "absolute transition-colors",
9502
9481
  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"
9503
9482
  )
@@ -9586,10 +9565,10 @@ function contextMenuHandlers(props, shapeFormat = null) {
9586
9565
  }
9587
9566
  function ContextMenu(props) {
9588
9567
  const { contextMenuState, mode, onClose } = props;
9589
- const { t } = chunk6GFSF2ML_js.useTranslation();
9568
+ const { t } = chunkAIA7CY5U_js.useTranslation();
9590
9569
  const customization = useViewerCustomizationContext();
9591
9570
  const shapeFormat = useShapeFormatContext();
9592
- const chartFormat = chunkSEIVQGH5_js.useChartFormatContext();
9571
+ const chartFormat = chunk5CJHRYFK_js.useChartFormatContext();
9593
9572
  const open = Boolean(contextMenuState) && mode === "edit";
9594
9573
  const handlers = {
9595
9574
  ...contextMenuHandlers(props, shapeFormat),
@@ -9665,7 +9644,7 @@ function canvasContextMenuHandlers(props) {
9665
9644
  }
9666
9645
  function CanvasContextMenu(props) {
9667
9646
  const { canvasContextMenuState, mode, onClose } = props;
9668
- const { t } = chunk6GFSF2ML_js.useTranslation();
9647
+ const { t } = chunkAIA7CY5U_js.useTranslation();
9669
9648
  const customization = useViewerCustomizationContext();
9670
9649
  const open = Boolean(canvasContextMenuState) && mode === "edit";
9671
9650
  const handlers = canvasContextMenuHandlers(props);
@@ -9728,7 +9707,7 @@ function FindReplacePanel({
9728
9707
  onReplaceAll,
9729
9708
  onClose
9730
9709
  }) {
9731
- const { t } = chunk6GFSF2ML_js.useTranslation();
9710
+ const { t } = chunkAIA7CY5U_js.useTranslation();
9732
9711
  const searchInputRef = React108.useRef(null);
9733
9712
  React108.useEffect(() => {
9734
9713
  searchInputRef.current?.focus();
@@ -9919,7 +9898,7 @@ function HandoutMasterPanel({
9919
9898
  onSlidesPerPageChange,
9920
9899
  onBackgroundChange
9921
9900
  }) {
9922
- const { t } = chunk6GFSF2ML_js.useTranslation();
9901
+ const { t } = chunkAIA7CY5U_js.useTranslation();
9923
9902
  if (!handoutMaster) {
9924
9903
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-4 text-center text-xs text-muted-foreground", children: t("pptx.master.noHandoutMaster") });
9925
9904
  }
@@ -9931,7 +9910,7 @@ function HandoutMasterPanel({
9931
9910
  {
9932
9911
  type: "button",
9933
9912
  "aria-pressed": slidesPerPage === count,
9934
- className: chunk6GFSF2ML_js.cn(
9913
+ className: chunkAIA7CY5U_js.cn(
9935
9914
  "px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
9936
9915
  slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
9937
9916
  ),
@@ -9974,7 +9953,7 @@ function NotesMasterPanel({
9974
9953
  notesMaster,
9975
9954
  onBackgroundChange
9976
9955
  }) {
9977
- const { t } = chunk6GFSF2ML_js.useTranslation();
9956
+ const { t } = chunkAIA7CY5U_js.useTranslation();
9978
9957
  const placeholderLabels = React108.useMemo(() => {
9979
9958
  if (!notesMaster?.placeholders) {
9980
9959
  return [];
@@ -10036,7 +10015,7 @@ function SlideMastersList({
10036
10015
  React108.useEffect(() => {
10037
10016
  activeRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
10038
10017
  }, [activeMasterIndex, activeLayoutIndex]);
10039
- const { t } = chunk6GFSF2ML_js.useTranslation();
10018
+ const { t } = chunkAIA7CY5U_js.useTranslation();
10040
10019
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10041
10020
  slideMasters.map((master, masterIdx) => {
10042
10021
  const isMasterActive = masterIdx === activeMasterIndex && activeLayoutIndex === null;
@@ -10049,7 +10028,7 @@ function SlideMastersList({
10049
10028
  ref: isMasterActive ? activeRef : void 0,
10050
10029
  "aria-pressed": isMasterActive,
10051
10030
  "aria-label": master.name || t("pptx.master.master"),
10052
- className: chunk6GFSF2ML_js.cn(
10031
+ className: chunkAIA7CY5U_js.cn(
10053
10032
  "group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
10054
10033
  isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
10055
10034
  ),
@@ -10066,7 +10045,7 @@ function SlideMastersList({
10066
10045
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
10067
10046
  "span",
10068
10047
  {
10069
- className: chunk6GFSF2ML_js.cn(
10048
+ className: chunkAIA7CY5U_js.cn(
10070
10049
  "text-[10px] font-medium",
10071
10050
  isMasterActive ? "text-amber-400" : "text-muted-foreground"
10072
10051
  ),
@@ -10085,7 +10064,7 @@ function SlideMastersList({
10085
10064
  ref: isLayoutActive ? activeRef : void 0,
10086
10065
  "aria-pressed": isLayoutActive,
10087
10066
  "aria-label": layout.name || t("pptx.master.layout"),
10088
- className: chunk6GFSF2ML_js.cn(
10067
+ className: chunkAIA7CY5U_js.cn(
10089
10068
  "group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
10090
10069
  isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
10091
10070
  ),
@@ -10102,7 +10081,7 @@ function SlideMastersList({
10102
10081
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
10103
10082
  "span",
10104
10083
  {
10105
- className: chunk6GFSF2ML_js.cn(
10084
+ className: chunkAIA7CY5U_js.cn(
10106
10085
  "text-[9px]",
10107
10086
  isLayoutActive ? "text-primary" : "text-muted-foreground"
10108
10087
  ),
@@ -10146,7 +10125,7 @@ function MasterViewSidebar({
10146
10125
  onSlidesBackgroundChange
10147
10126
  }) {
10148
10127
  const scrollRef = React108.useRef(null);
10149
- const { t } = chunk6GFSF2ML_js.useTranslation();
10128
+ const { t } = chunkAIA7CY5U_js.useTranslation();
10150
10129
  const slidesBackground = pptx.masterViewBackgroundColor(
10151
10130
  { slideMasters },
10152
10131
  { tab: "slides", masterIndex: activeMasterIndex, layoutIndex: activeLayoutIndex }
@@ -10194,7 +10173,7 @@ function MasterViewSidebar({
10194
10173
  type: "button",
10195
10174
  role: "tab",
10196
10175
  "aria-selected": masterViewTab === tab.key,
10197
- className: chunk6GFSF2ML_js.cn(
10176
+ className: chunkAIA7CY5U_js.cn(
10198
10177
  "flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
10199
10178
  masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
10200
10179
  ),
@@ -10296,7 +10275,7 @@ function NotesMasterCanvas({
10296
10275
  notesText,
10297
10276
  slideNumber
10298
10277
  }) {
10299
- const { t } = chunk6GFSF2ML_js.useTranslation();
10278
+ const { t } = chunkAIA7CY5U_js.useTranslation();
10300
10279
  const pageWidth = notesCanvasSize?.width ?? DEFAULT_NOTES_WIDTH;
10301
10280
  const pageHeight = notesCanvasSize?.height ?? DEFAULT_NOTES_HEIGHT;
10302
10281
  const scale = React108.useMemo(() => {
@@ -10556,7 +10535,7 @@ function HandoutMasterCanvas({
10556
10535
  slideThumbnails,
10557
10536
  pageNumber
10558
10537
  }) {
10559
- const { t } = chunk6GFSF2ML_js.useTranslation();
10538
+ const { t } = chunkAIA7CY5U_js.useTranslation();
10560
10539
  const slideAspect = 4 / 3;
10561
10540
  const scale = React108.useMemo(() => {
10562
10541
  const scaleX = canvasSize.width / PAGE_WIDTH;
@@ -10697,7 +10676,7 @@ function SectionBlock({
10697
10676
  /* @__PURE__ */ jsxRuntime.jsx(
10698
10677
  lu.LuChevronDown,
10699
10678
  {
10700
- className: chunk6GFSF2ML_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
10679
+ className: chunkAIA7CY5U_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
10701
10680
  }
10702
10681
  ),
10703
10682
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
@@ -10741,12 +10720,12 @@ function SlideCardImpl({
10741
10720
  onDragLeave,
10742
10721
  onDrop
10743
10722
  }) {
10744
- const { t } = chunk6GFSF2ML_js.useTranslation();
10723
+ const { t } = chunkAIA7CY5U_js.useTranslation();
10745
10724
  const cue = pptx.hiddenSlideCue(slide.hidden, "sorter", index);
10746
10725
  return /* @__PURE__ */ jsxRuntime.jsxs(
10747
10726
  "div",
10748
10727
  {
10749
- className: chunk6GFSF2ML_js.cn(
10728
+ className: chunkAIA7CY5U_js.cn(
10750
10729
  "group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
10751
10730
  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",
10752
10731
  slide.hidden && "opacity-40"
@@ -10769,7 +10748,7 @@ function SlideCardImpl({
10769
10748
  /* @__PURE__ */ jsxRuntime.jsx(
10770
10749
  "span",
10771
10750
  {
10772
- className: chunk6GFSF2ML_js.cn(
10751
+ className: chunkAIA7CY5U_js.cn(
10773
10752
  "text-[11px] font-medium px-0.5",
10774
10753
  isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
10775
10754
  ),
@@ -10838,7 +10817,7 @@ function SorterContextMenu({
10838
10817
  onToggleHide,
10839
10818
  onClose
10840
10819
  }) {
10841
- const { t } = chunk6GFSF2ML_js.useTranslation();
10820
+ const { t } = chunkAIA7CY5U_js.useTranslation();
10842
10821
  const menuX = Math.max(8, Math.min(x, window.innerWidth - 220));
10843
10822
  const menuY = Math.max(8, Math.min(y, window.innerHeight - 300));
10844
10823
  const entries = pptx.buildSlideSorterContextMenuEntries({
@@ -11193,7 +11172,7 @@ function SlideSorterOverlay({
11193
11172
  onToggleHideSlides,
11194
11173
  onClose
11195
11174
  }) {
11196
- const { t } = chunk6GFSF2ML_js.useTranslation();
11175
+ const { t } = chunkAIA7CY5U_js.useTranslation();
11197
11176
  const state = useSlideSorterState({
11198
11177
  slides,
11199
11178
  templateElementsBySlideId,
@@ -11439,7 +11418,7 @@ function OutlineViewOverlay({
11439
11418
  bumpHistory,
11440
11419
  onClose
11441
11420
  }) {
11442
- const { t } = chunk6GFSF2ML_js.useTranslation();
11421
+ const { t } = chunkAIA7CY5U_js.useTranslation();
11443
11422
  const { rows, containerRef, run, onRowKeyDown } = useOutlineView({
11444
11423
  slides,
11445
11424
  canvasSize,
@@ -11531,7 +11510,7 @@ function ReadingViewStage({
11531
11510
  "div",
11532
11511
  {
11533
11512
  className: "absolute inset-0",
11534
- style: { backgroundColor: chunk6GFSF2ML_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
11513
+ style: { backgroundColor: chunkAIA7CY5U_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
11535
11514
  }
11536
11515
  ),
11537
11516
  slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
@@ -11550,7 +11529,7 @@ function ReadingViewStage({
11550
11529
  className: "absolute left-0 top-0 origin-top-left",
11551
11530
  style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
11552
11531
  children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
11553
- chunkSEIVQGH5_js.StaticElementRenderer,
11532
+ chunk5CJHRYFK_js.StaticElementRenderer,
11554
11533
  {
11555
11534
  element,
11556
11535
  activeSlide: slide,
@@ -11632,7 +11611,7 @@ function ReadingViewOverlay({
11632
11611
  activeSlideIndex,
11633
11612
  onExit
11634
11613
  }) {
11635
- const { t } = chunk6GFSF2ML_js.useTranslation();
11614
+ const { t } = chunkAIA7CY5U_js.useTranslation();
11636
11615
  const { state, viewportRef, scale, run } = useReadingView({
11637
11616
  slideCount: slides.length,
11638
11617
  canvasSize,
@@ -11763,7 +11742,7 @@ function renderRichNotesSegments(segments) {
11763
11742
  if (segment.style.fontFamily) {
11764
11743
  style.fontFamily = segment.style.fontFamily;
11765
11744
  }
11766
- if (segment.style.hyperlink && chunk6GFSF2ML_js.isUrlSafe(segment.style.hyperlink)) {
11745
+ if (segment.style.hyperlink && chunkAIA7CY5U_js.isUrlSafe(segment.style.hyperlink)) {
11767
11746
  const safeHref = segment.style.hyperlink;
11768
11747
  style.color = "#4a9eff";
11769
11748
  style.textDecoration = "underline";
@@ -11776,7 +11755,7 @@ function renderRichNotesSegments(segments) {
11776
11755
  style,
11777
11756
  onClick: (e) => {
11778
11757
  e.preventDefault();
11779
- chunk6GFSF2ML_js.safeOpenUrl(safeHref);
11758
+ chunkAIA7CY5U_js.safeOpenUrl(safeHref);
11780
11759
  },
11781
11760
  children: segment.text
11782
11761
  },
@@ -11800,7 +11779,7 @@ function NotesPrintDialog({
11800
11779
  onClose,
11801
11780
  notesStyle
11802
11781
  }) {
11803
- const { t } = chunk6GFSF2ML_js.useTranslation();
11782
+ const { t } = chunkAIA7CY5U_js.useTranslation();
11804
11783
  const printFrameRef = React108.useRef(null);
11805
11784
  const handlePrint = React108.useCallback(() => {
11806
11785
  const iframe = printFrameRef.current;
@@ -11858,7 +11837,7 @@ function NotesPrintDialog({
11858
11837
  ] }) });
11859
11838
  }
11860
11839
  function NotesToolbar(p) {
11861
- const { t } = chunk6GFSF2ML_js.useTranslation();
11840
+ const { t } = chunkAIA7CY5U_js.useTranslation();
11862
11841
  const ref = React108.useRef(null);
11863
11842
  React108.useEffect(() => {
11864
11843
  const host = ref.current;
@@ -12125,7 +12104,7 @@ function useSlideNotes({
12125
12104
  const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
12126
12105
  if (href && (e.ctrlKey || e.metaKey)) {
12127
12106
  e.preventDefault();
12128
- chunk6GFSF2ML_js.safeOpenUrl(href);
12107
+ chunkAIA7CY5U_js.safeOpenUrl(href);
12129
12108
  }
12130
12109
  }, []);
12131
12110
  return {
@@ -12162,7 +12141,7 @@ function SlideNotesPanel({
12162
12141
  notesStyle,
12163
12142
  onHeightChange
12164
12143
  }) {
12165
- const { t } = chunk6GFSF2ML_js.useTranslation();
12144
+ const { t } = chunkAIA7CY5U_js.useTranslation();
12166
12145
  const rootRef = React108__default.default.useRef(null);
12167
12146
  React108__default.default.useEffect(() => {
12168
12147
  const el = rootRef.current;
@@ -12206,7 +12185,7 @@ function SlideNotesPanel({
12206
12185
  });
12207
12186
  const hasNotes = draft.trim().length > 0;
12208
12187
  const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
12209
- const { dragY, handlers: dragHandlers } = chunkSEIVQGH5_js.useSheetDismissDrag(onToggle);
12188
+ const { dragY, handlers: dragHandlers } = chunk5CJHRYFK_js.useSheetDismissDrag(onToggle);
12210
12189
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12211
12190
  isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
12212
12191
  "button",
@@ -12222,7 +12201,7 @@ function SlideNotesPanel({
12222
12201
  {
12223
12202
  ref: rootRef,
12224
12203
  "data-pptx-chrome": "notes",
12225
- className: chunk6GFSF2ML_js.cn(
12204
+ className: chunkAIA7CY5U_js.cn(
12226
12205
  "flex flex-col border-t border-border/60 bg-background select-none",
12227
12206
  // On mobile, hide the entire notes strip when collapsed: the
12228
12207
  // MobileBottomBar's Notes button is the entry point instead.
@@ -12406,7 +12385,7 @@ function VersionHistoryPanel({
12406
12385
  onClose,
12407
12386
  onRestore
12408
12387
  }) {
12409
- const { t } = chunk6GFSF2ML_js.useTranslation();
12388
+ const { t } = chunkAIA7CY5U_js.useTranslation();
12410
12389
  const [versions, setVersions] = React108.useState([]);
12411
12390
  const [loading, setLoading] = React108.useState(false);
12412
12391
  const [restoringKey, setRestoringKey] = React108.useState(null);
@@ -12552,7 +12531,7 @@ function SlideDiffRow({
12552
12531
  onAccept,
12553
12532
  onReject
12554
12533
  }) {
12555
- const { t } = chunk6GFSF2ML_js.useTranslation();
12534
+ const { t } = chunkAIA7CY5U_js.useTranslation();
12556
12535
  const [expanded, setExpanded] = React108.useState(diff.status === "changed");
12557
12536
  const statusLabel = (() => {
12558
12537
  switch (diff.status) {
@@ -12586,7 +12565,7 @@ function SlideDiffRow({
12586
12565
  return /* @__PURE__ */ jsxRuntime.jsxs(
12587
12566
  "div",
12588
12567
  {
12589
- className: chunk6GFSF2ML_js.cn(
12568
+ className: chunkAIA7CY5U_js.cn(
12590
12569
  "rounded-lg border transition-colors",
12591
12570
  isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
12592
12571
  ),
@@ -12600,7 +12579,7 @@ function SlideDiffRow({
12600
12579
  children: [
12601
12580
  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" }),
12602
12581
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
12603
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk6GFSF2ML_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
12582
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkAIA7CY5U_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
12604
12583
  diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
12605
12584
  diff.changes.length,
12606
12585
  " ",
@@ -12610,7 +12589,7 @@ function SlideDiffRow({
12610
12589
  isResolved && /* @__PURE__ */ jsxRuntime.jsx(
12611
12590
  "span",
12612
12591
  {
12613
- className: chunk6GFSF2ML_js.cn(
12592
+ className: chunkAIA7CY5U_js.cn(
12614
12593
  "text-[10px] font-medium",
12615
12594
  accepted ? "text-green-400" : "text-muted-foreground"
12616
12595
  ),
@@ -12638,7 +12617,7 @@ function SlideDiffRow({
12638
12617
  /* @__PURE__ */ jsxRuntime.jsx(
12639
12618
  "div",
12640
12619
  {
12641
- className: chunk6GFSF2ML_js.cn(
12620
+ className: chunkAIA7CY5U_js.cn(
12642
12621
  "rounded border overflow-hidden",
12643
12622
  diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
12644
12623
  ),
@@ -12705,7 +12684,7 @@ function ComparePanel({
12705
12684
  onRejectSlide,
12706
12685
  onAcceptAll
12707
12686
  }) {
12708
- const { t } = chunk6GFSF2ML_js.useTranslation();
12687
+ const { t } = chunkAIA7CY5U_js.useTranslation();
12709
12688
  const [accepted, setAccepted] = React108.useState({});
12710
12689
  const [rejected, setRejected] = React108.useState({});
12711
12690
  const handleAccept = React108.useCallback(
@@ -12817,7 +12796,7 @@ function PasswordProtectionDialog({
12817
12796
  onSetPassword,
12818
12797
  onRemovePassword
12819
12798
  }) {
12820
- const { t } = chunk6GFSF2ML_js.useTranslation();
12799
+ const { t } = chunkAIA7CY5U_js.useTranslation();
12821
12800
  const [password, setPassword] = React108.useState("");
12822
12801
  const [confirmPassword, setConfirmPassword] = React108.useState("");
12823
12802
  const [showPassword, setShowPassword] = React108.useState(false);
@@ -13026,7 +13005,7 @@ function DocumentPropertiesCustomTab({
13026
13005
  customProperties,
13027
13006
  onUpdate
13028
13007
  }) {
13029
- const { t } = chunk6GFSF2ML_js.useTranslation();
13008
+ const { t } = chunkAIA7CY5U_js.useTranslation();
13030
13009
  const handleAdd = React108.useCallback(() => {
13031
13010
  onUpdate([...customProperties, { name: "", value: "", type: "lpwstr" }]);
13032
13011
  }, [customProperties, onUpdate]);
@@ -13228,7 +13207,7 @@ function DocumentPropertiesStatisticsTab({
13228
13207
  onUpdateAppProperties,
13229
13208
  canEdit
13230
13209
  }) {
13231
- const { t } = chunk6GFSF2ML_js.useTranslation();
13210
+ const { t } = chunkAIA7CY5U_js.useTranslation();
13232
13211
  const handleEditableChange = React108.useCallback(
13233
13212
  (key, value) => {
13234
13213
  onUpdateAppProperties({ [key]: value });
@@ -13268,7 +13247,7 @@ function DocumentPropertiesDialog({
13268
13247
  onClose,
13269
13248
  onSave
13270
13249
  }) {
13271
- const { t } = chunk6GFSF2ML_js.useTranslation();
13250
+ const { t } = chunkAIA7CY5U_js.useTranslation();
13272
13251
  const [activeTab, setActiveTab] = React108.useState("summary");
13273
13252
  const [draftCore, setDraftCore] = React108.useState({});
13274
13253
  const [draftCustom, setDraftCustom] = React108.useState([]);
@@ -13307,7 +13286,7 @@ function DocumentPropertiesDialog({
13307
13286
  const handleClose = React108.useCallback(() => {
13308
13287
  onClose();
13309
13288
  }, [onClose]);
13310
- const { panelStyle, handlers: dragHandlers } = chunkSEIVQGH5_js.useModalDismissDrag(handleClose);
13289
+ const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(handleClose);
13311
13290
  if (!isOpen) {
13312
13291
  return null;
13313
13292
  }
@@ -13444,7 +13423,7 @@ function FontEmbeddingPanel({
13444
13423
  onClose,
13445
13424
  onToggleEmbedFonts
13446
13425
  }) {
13447
- const { t } = chunk6GFSF2ML_js.useTranslation();
13426
+ const { t } = chunkAIA7CY5U_js.useTranslation();
13448
13427
  const [availableFamilies, setAvailableFamilies] = React108.useState(/* @__PURE__ */ new Set());
13449
13428
  const [scanning, setScanning] = React108.useState(false);
13450
13429
  const [scanned, setScanned] = React108.useState(false);
@@ -13572,7 +13551,7 @@ function DigitalSignaturesDialog({
13572
13551
  hasSignatures,
13573
13552
  signatureCount
13574
13553
  }) {
13575
- const { t } = chunk6GFSF2ML_js.useTranslation();
13554
+ const { t } = chunkAIA7CY5U_js.useTranslation();
13576
13555
  if (!isOpen) {
13577
13556
  return null;
13578
13557
  }
@@ -13644,7 +13623,7 @@ function SignatureStatusBadge({
13644
13623
  signatureCount,
13645
13624
  onClick
13646
13625
  }) {
13647
- const { t } = chunk6GFSF2ML_js.useTranslation();
13626
+ const { t } = chunkAIA7CY5U_js.useTranslation();
13648
13627
  if (!hasSignatures || signatureCount === 0) {
13649
13628
  return null;
13650
13629
  }
@@ -13670,7 +13649,7 @@ function SignatureStrippedDialog({
13670
13649
  onConfirm,
13671
13650
  onCancel
13672
13651
  }) {
13673
- const { t } = chunk6GFSF2ML_js.useTranslation();
13652
+ const { t } = chunkAIA7CY5U_js.useTranslation();
13674
13653
  if (!isOpen) {
13675
13654
  return null;
13676
13655
  }
@@ -13739,7 +13718,7 @@ function EncryptedFileDialog({
13739
13718
  isOpen,
13740
13719
  onClose
13741
13720
  }) {
13742
- const { t } = chunk6GFSF2ML_js.useTranslation();
13721
+ const { t } = chunkAIA7CY5U_js.useTranslation();
13743
13722
  if (!isOpen) {
13744
13723
  return null;
13745
13724
  }
@@ -13886,7 +13865,7 @@ function PresentationAudienceEffects({ snapshot }) {
13886
13865
  ] });
13887
13866
  }
13888
13867
  function PresentationEndOverlay({ onExit }) {
13889
- const { t } = chunk6GFSF2ML_js.useTranslation();
13868
+ const { t } = chunkAIA7CY5U_js.useTranslation();
13890
13869
  return /* @__PURE__ */ jsxRuntime.jsx(
13891
13870
  "button",
13892
13871
  {
@@ -13902,9 +13881,9 @@ function PresentationSubtitleBar({
13902
13881
  visible,
13903
13882
  onCaptionChange
13904
13883
  }) {
13905
- const { t } = chunk6GFSF2ML_js.useTranslation();
13884
+ const { t } = chunkAIA7CY5U_js.useTranslation();
13906
13885
  const language = pptx.subtitleRecognitionLanguage(
13907
- pptx.subtitleSettingsFromOptions(chunkSEIVQGH5_js.useViewerOptionsContext()),
13886
+ pptx.subtitleSettingsFromOptions(chunk5CJHRYFK_js.useViewerOptionsContext()),
13908
13887
  typeof navigator === "undefined" ? "en-US" : navigator.language
13909
13888
  );
13910
13889
  const [captionText, setCaptionText] = React108.useState("");
@@ -13981,7 +13960,7 @@ function renderNotesSegments(segments) {
13981
13960
  });
13982
13961
  }
13983
13962
  function PresenterConsoleToolbar(p) {
13984
- const { t } = chunk6GFSF2ML_js.useTranslation();
13963
+ const { t } = chunkAIA7CY5U_js.useTranslation();
13985
13964
  const ref = useWebControl(
13986
13965
  { ...pptx.presenterConsoleViewState(p.snapshot, p.audienceOpen), translate: t },
13987
13966
  {
@@ -14073,7 +14052,7 @@ function ScaledSlidePreviewImpl({
14073
14052
  {
14074
14053
  className: "absolute inset-0",
14075
14054
  style: {
14076
- backgroundColor: chunk6GFSF2ML_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
14055
+ backgroundColor: chunkAIA7CY5U_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
14077
14056
  }
14078
14057
  }
14079
14058
  ),
@@ -14099,7 +14078,7 @@ function ScaledSlidePreviewImpl({
14099
14078
  ...pptx.deviceStrokeStageStyle(scale)
14100
14079
  },
14101
14080
  children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
14102
- chunkSEIVQGH5_js.StaticElementRenderer,
14081
+ chunk5CJHRYFK_js.StaticElementRenderer,
14103
14082
  {
14104
14083
  element,
14105
14084
  activeSlide: slide,
@@ -14149,7 +14128,7 @@ function PresenterNotesRail({
14149
14128
  onMove,
14150
14129
  onUpdateNotes
14151
14130
  }) {
14152
- const { t } = chunk6GFSF2ML_js.useTranslation();
14131
+ const { t } = chunkAIA7CY5U_js.useTranslation();
14153
14132
  const slide = slides[current];
14154
14133
  const nextSlide = pptx.nextPresentedSlide(slides, current, activeCustomShow, authoredRange);
14155
14134
  const notesText = slide?.notes ?? "";
@@ -14274,7 +14253,7 @@ function PresenterNotesRail({
14274
14253
  ] });
14275
14254
  }
14276
14255
  function PresenterSlideNavigator(props) {
14277
- const { t } = chunk6GFSF2ML_js.useTranslation();
14256
+ const { t } = chunkAIA7CY5U_js.useTranslation();
14278
14257
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${pptx.PRESENTER_CONSOLE_CLASSES.navigator} text-foreground`, children: [
14279
14258
  /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-4 flex items-center justify-between border-b border-border pb-4", children: [
14280
14259
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
@@ -14416,7 +14395,7 @@ function PresenterView({
14416
14395
  onSwapDisplays,
14417
14396
  onUpdateNotes
14418
14397
  }) {
14419
- const { t } = chunk6GFSF2ML_js.useTranslation();
14398
+ const { t } = chunkAIA7CY5U_js.useTranslation();
14420
14399
  const [now, setNow] = React108.useState(Date.now());
14421
14400
  React108.useEffect(() => {
14422
14401
  const interval = window.setInterval(() => setNow(Date.now()), 1e3);
@@ -14573,7 +14552,7 @@ function MobilePresenterView({
14573
14552
  onMovePresentationSlide,
14574
14553
  onExit
14575
14554
  }) {
14576
- const { t } = chunk6GFSF2ML_js.useTranslation();
14555
+ const { t } = chunkAIA7CY5U_js.useTranslation();
14577
14556
  const [now, setNow] = React108.useState(Date.now());
14578
14557
  React108.useEffect(() => {
14579
14558
  const interval = window.setInterval(() => setNow(Date.now()), 1e3);
@@ -14686,7 +14665,7 @@ function RehearseTimingsHud({
14686
14665
  paused,
14687
14666
  onTogglePause
14688
14667
  }) {
14689
- const { t } = chunk6GFSF2ML_js.useTranslation();
14668
+ const { t } = chunkAIA7CY5U_js.useTranslation();
14690
14669
  const [tick, setTick] = React108.useState(0);
14691
14670
  React108.useEffect(() => {
14692
14671
  if (paused) {
@@ -14734,7 +14713,7 @@ function RehearseTimingsSummary({
14734
14713
  onSave,
14735
14714
  onDiscard
14736
14715
  }) {
14737
- const { t } = chunk6GFSF2ML_js.useTranslation();
14716
+ const { t } = chunkAIA7CY5U_js.useTranslation();
14738
14717
  const totalMs = Object.values(recordedTimings).reduce((sum, ms) => sum + ms, 0);
14739
14718
  const sortedEntries = Object.entries(recordedTimings).map(([idx, ms]) => ({ slideIndex: Number(idx), ms })).sort((a, b) => a.slideIndex - b.slideIndex);
14740
14719
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 z-[9999] flex items-center justify-center bg-black/60 backdrop-blur-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full max-w-lg rounded-xl border border-border bg-background shadow-2xl", children: [
@@ -14818,7 +14797,7 @@ function SelectionPane({
14818
14797
  markDirty,
14819
14798
  onClose
14820
14799
  }) {
14821
- const { t } = chunk6GFSF2ML_js.useTranslation();
14800
+ const { t } = chunkAIA7CY5U_js.useTranslation();
14822
14801
  const activeSlide = slides[activeSlideIndex];
14823
14802
  const elements = activeSlide?.elements ?? [];
14824
14803
  const [editingId, setEditingId] = React108.useState(null);
@@ -14973,7 +14952,7 @@ function SelectionPane({
14973
14952
  setDragIndex(null);
14974
14953
  setDragOverIndex(null);
14975
14954
  },
14976
- className: chunk6GFSF2ML_js.cn(
14955
+ className: chunkAIA7CY5U_js.cn(
14977
14956
  "flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
14978
14957
  isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
14979
14958
  dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
@@ -15027,13 +15006,13 @@ function SelectionPane({
15027
15006
  }
15028
15007
  var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
15029
15008
  var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
15030
- var ENTRANCE_PRESETS = /* @__PURE__ */ chunk6GFSF2ML_js.ANIMATION_PRESET_OPTIONS.filter(
15009
+ var ENTRANCE_PRESETS = /* @__PURE__ */ chunkAIA7CY5U_js.ANIMATION_PRESET_OPTIONS.filter(
15031
15010
  (o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
15032
15011
  );
15033
- var EXIT_PRESETS = /* @__PURE__ */ chunk6GFSF2ML_js.ANIMATION_PRESET_OPTIONS.filter(
15012
+ var EXIT_PRESETS = /* @__PURE__ */ chunkAIA7CY5U_js.ANIMATION_PRESET_OPTIONS.filter(
15034
15013
  (o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
15035
15014
  );
15036
- var EMPHASIS_PRESETS = /* @__PURE__ */ chunk6GFSF2ML_js.ANIMATION_PRESET_OPTIONS.filter(
15015
+ var EMPHASIS_PRESETS = /* @__PURE__ */ chunkAIA7CY5U_js.ANIMATION_PRESET_OPTIONS.filter(
15037
15016
  (o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
15038
15017
  );
15039
15018
  var TIMING_CURVE_OPTIONS = [
@@ -15134,7 +15113,7 @@ function AfterAnimationRow({
15134
15113
  onActionChange,
15135
15114
  onColorChange
15136
15115
  }) {
15137
- const { t } = chunk6GFSF2ML_js.useTranslation();
15116
+ const { t } = chunkAIA7CY5U_js.useTranslation();
15138
15117
  const commitRecentColor = useRecentColorCommit();
15139
15118
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
15140
15119
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -15185,7 +15164,7 @@ function AnimationTimelineSection({
15185
15164
  canEdit,
15186
15165
  handlers
15187
15166
  }) {
15188
- const { t } = chunk6GFSF2ML_js.useTranslation();
15167
+ const { t } = chunkAIA7CY5U_js.useTranslation();
15189
15168
  const effectLabel = (anim) => pptx.animationEffectLabel(anim, (key) => t(key));
15190
15169
  const {
15191
15170
  sortedAnimations,
@@ -15216,7 +15195,7 @@ function AnimationTimelineSection({
15216
15195
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
15217
15196
  "div",
15218
15197
  {
15219
- className: chunk6GFSF2ML_js.cn(
15198
+ className: chunkAIA7CY5U_js.cn(
15220
15199
  "absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
15221
15200
  animationTypeColor(bar.anim),
15222
15201
  bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
@@ -15245,7 +15224,7 @@ function AnimationTimelineSection({
15245
15224
  onDragLeave: handleDragLeave,
15246
15225
  onDrop: (e) => handleDrop(index, e),
15247
15226
  title: t("pptx.animation.nativeEffectHint"),
15248
- className: chunk6GFSF2ML_js.cn(
15227
+ className: chunkAIA7CY5U_js.cn(
15249
15228
  "flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
15250
15229
  "bg-muted/20 text-muted-foreground/70",
15251
15230
  isDragOver && "border-t-2 border-primary"
@@ -15284,7 +15263,7 @@ function AnimationTimelineSection({
15284
15263
  onDragEnd: handleDragEnd,
15285
15264
  onMouseEnter: () => handleAnimationHover(anim),
15286
15265
  onMouseLeave: handleAnimationHoverEnd,
15287
- className: chunk6GFSF2ML_js.cn(
15266
+ className: chunkAIA7CY5U_js.cn(
15288
15267
  "flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
15289
15268
  isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
15290
15269
  isDragging && "opacity-40",
@@ -15345,7 +15324,7 @@ function BookmarkTriggerRow({
15345
15324
  style,
15346
15325
  onChange
15347
15326
  }) {
15348
- const { t } = chunk6GFSF2ML_js.useTranslation();
15327
+ const { t } = chunkAIA7CY5U_js.useTranslation();
15349
15328
  const options = pptx.listMediaBookmarkOptions(elements);
15350
15329
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
15351
15330
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.trigger.bookmarkLabel") }),
@@ -15378,7 +15357,7 @@ function EffectSoundRow({
15378
15357
  onPick,
15379
15358
  onPickStock
15380
15359
  }) {
15381
- const { t } = chunk6GFSF2ML_js.useTranslation();
15360
+ const { t } = chunkAIA7CY5U_js.useTranslation();
15382
15361
  const fileInputRef = React108__default.default.useRef(null);
15383
15362
  const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
15384
15363
  const handleSelectChange = (event) => {
@@ -15416,7 +15395,7 @@ function EffectSoundRow({
15416
15395
  }
15417
15396
  const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
15418
15397
  if (asset) {
15419
- chunkSEIVQGH5_js.playAnimationSound(asset.dataUrl);
15398
+ chunk5CJHRYFK_js.playAnimationSound(asset.dataUrl);
15420
15399
  }
15421
15400
  };
15422
15401
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -15469,7 +15448,7 @@ function MotionPathRow({
15469
15448
  canEdit,
15470
15449
  onChange
15471
15450
  }) {
15472
- const { t } = chunk6GFSF2ML_js.useTranslation();
15451
+ const { t } = chunkAIA7CY5U_js.useTranslation();
15473
15452
  const presetId = pptx.motionPathPresetIdForPath(motionPath);
15474
15453
  const isCustom = Boolean(motionPath) && !presetId;
15475
15454
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -15591,7 +15570,7 @@ function useAnimationPreview({
15591
15570
  }) {
15592
15571
  const handleAnimationHover = React108.useCallback((anim) => {
15593
15572
  if (anim.motionPath) {
15594
- chunk6GFSF2ML_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
15573
+ chunkAIA7CY5U_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
15595
15574
  durationMs: anim.durationMs,
15596
15575
  delayMs: anim.delayMs,
15597
15576
  timingCurve: anim.timingCurve
@@ -15602,19 +15581,19 @@ function useAnimationPreview({
15602
15581
  if (!preset || preset === "none") {
15603
15582
  return;
15604
15583
  }
15605
- chunk6GFSF2ML_js.startPreviewAnimation(anim.elementId, preset, {
15584
+ chunkAIA7CY5U_js.startPreviewAnimation(anim.elementId, preset, {
15606
15585
  direction: anim.direction,
15607
15586
  durationMs: anim.durationMs ?? 500,
15608
15587
  timingCurve: anim.timingCurve
15609
15588
  });
15610
15589
  }, []);
15611
- const handleAnimationHoverEnd = React108.useCallback(() => chunk6GFSF2ML_js.stopPreviewAnimation(), []);
15590
+ const handleAnimationHoverEnd = React108.useCallback(() => chunkAIA7CY5U_js.stopPreviewAnimation(), []);
15612
15591
  const handlePreviewClick = React108.useCallback(() => {
15613
15592
  if (!selectedElementAnimation) {
15614
15593
  return;
15615
15594
  }
15616
15595
  if (selectedElementAnimation.motionPath) {
15617
- chunk6GFSF2ML_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
15596
+ chunkAIA7CY5U_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
15618
15597
  durationMs: selectedElementAnimation.durationMs,
15619
15598
  delayMs: selectedElementAnimation.delayMs,
15620
15599
  timingCurve: selectedElementAnimation.timingCurve
@@ -15625,7 +15604,7 @@ function useAnimationPreview({
15625
15604
  if (!preset || preset === "none") {
15626
15605
  return;
15627
15606
  }
15628
- chunk6GFSF2ML_js.startPreviewAnimation(selectedElementId, preset, {
15607
+ chunkAIA7CY5U_js.startPreviewAnimation(selectedElementId, preset, {
15629
15608
  direction: selectedElementAnimation.direction,
15630
15609
  durationMs: selectedElementAnimation.durationMs ?? 500,
15631
15610
  timingCurve: selectedElementAnimation.timingCurve
@@ -15860,7 +15839,7 @@ function useAnimationHandlers({
15860
15839
  return anim.elementId.slice(0, 8);
15861
15840
  }
15862
15841
  const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
15863
- return text || chunk6GFSF2ML_js.getElementLabel(el);
15842
+ return text || chunkAIA7CY5U_js.getElementLabel(el);
15864
15843
  },
15865
15844
  [activeSlide.elements]
15866
15845
  );
@@ -15871,7 +15850,7 @@ function useAnimationHandlers({
15871
15850
  return id.slice(0, 8);
15872
15851
  }
15873
15852
  const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
15874
- return text || chunk6GFSF2ML_js.getElementLabel(el);
15853
+ return text || chunkAIA7CY5U_js.getElementLabel(el);
15875
15854
  }).join(", "),
15876
15855
  [activeSlide.elements]
15877
15856
  );
@@ -15927,8 +15906,8 @@ function AnimationPanel({
15927
15906
  canEdit,
15928
15907
  onUpdateSlide
15929
15908
  }) {
15930
- const { t } = chunk6GFSF2ML_js.useTranslation();
15931
- const { viewportWidth } = chunkSEIVQGH5_js.useIsMobile();
15909
+ const { t } = chunkAIA7CY5U_js.useTranslation();
15910
+ const { viewportWidth } = chunk5CJHRYFK_js.useIsMobile();
15932
15911
  const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
15933
15912
  const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
15934
15913
  const handlers = useAnimationHandlers({
@@ -16056,7 +16035,7 @@ function AnimationPanel({
16056
16035
  type: "button",
16057
16036
  disabled: !canEdit,
16058
16037
  style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
16059
- className: chunk6GFSF2ML_js.cn(
16038
+ className: chunkAIA7CY5U_js.cn(
16060
16039
  "flex items-center justify-center rounded border transition-colors",
16061
16040
  isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
16062
16041
  ),
@@ -16122,7 +16101,7 @@ function AnimationPanel({
16122
16101
  style: fieldStyle,
16123
16102
  children: [
16124
16103
  /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
16125
- activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunk6GFSF2ML_js.getElementLabel(el) }, el.id))
16104
+ activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkAIA7CY5U_js.getElementLabel(el) }, el.id))
16126
16105
  ]
16127
16106
  }
16128
16107
  )
@@ -16266,7 +16245,7 @@ function ActionTargetFields({
16266
16245
  returnAfter,
16267
16246
  onChange
16268
16247
  }) {
16269
- const { t } = chunk6GFSF2ML_js.useTranslation();
16248
+ const { t } = chunkAIA7CY5U_js.useTranslation();
16270
16249
  const urlLabelKey = URL_LABEL_KEY[type];
16271
16250
  if (urlLabelKey) {
16272
16251
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -16275,7 +16254,7 @@ function ActionTargetFields({
16275
16254
  type: "text",
16276
16255
  disabled: !canEdit,
16277
16256
  "aria-label": t(urlLabelKey),
16278
- className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
16257
+ className: chunkAIA7CY5U_js.cn(INPUT2, "w-full"),
16279
16258
  placeholder: "https://...",
16280
16259
  value: url ?? "",
16281
16260
  onChange: (e) => onChange({ url: e.target.value })
@@ -16289,7 +16268,7 @@ function ActionTargetFields({
16289
16268
  type: "number",
16290
16269
  disabled: !canEdit,
16291
16270
  "aria-label": t("pptx.action.gotoSlide"),
16292
- className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
16271
+ className: chunkAIA7CY5U_js.cn(INPUT2, "w-full"),
16293
16272
  placeholder: t("pptx.action.slideNumberPlaceholder"),
16294
16273
  min: 1,
16295
16274
  max: slideCount,
@@ -16311,7 +16290,7 @@ function ActionTargetFields({
16311
16290
  "data-testid": "pptx-action-custom-show",
16312
16291
  disabled: !canEdit,
16313
16292
  "aria-label": t("pptx.hyperlink.customShowLabel"),
16314
- className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
16293
+ className: chunkAIA7CY5U_js.cn(INPUT2, "w-full"),
16315
16294
  value: customShowId ?? "",
16316
16295
  onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
16317
16296
  children: [
@@ -16343,7 +16322,7 @@ function ActionSettingsPanel({
16343
16322
  customShows,
16344
16323
  onUpdateElement
16345
16324
  }) {
16346
- const { t } = chunk6GFSF2ML_js.useTranslation();
16325
+ const { t } = chunkAIA7CY5U_js.useTranslation();
16347
16326
  const clickAction = selectedElement.actionClick ? pptx$1.pptxActionToElementAction(selectedElement.actionClick, "click") : void 0;
16348
16327
  const hoverAction = selectedElement.actionHover ? pptx$1.pptxActionToElementAction(selectedElement.actionHover, "hover") : void 0;
16349
16328
  const updateAction = (trigger, type, patch) => {
@@ -16419,7 +16398,7 @@ function ActionTriggerSection({
16419
16398
  onChangeType,
16420
16399
  onChangeTarget
16421
16400
  }) {
16422
- const { t } = chunk6GFSF2ML_js.useTranslation();
16401
+ const { t } = chunkAIA7CY5U_js.useTranslation();
16423
16402
  const [pendingType, setPendingType] = React108.useState(void 0);
16424
16403
  const effectiveType = pptx.resolveActionType(pendingType, activeType);
16425
16404
  const changeType = (type) => {
@@ -16433,7 +16412,7 @@ function ActionTriggerSection({
16433
16412
  {
16434
16413
  disabled: !canEdit,
16435
16414
  "aria-label": label,
16436
- className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
16415
+ className: chunkAIA7CY5U_js.cn(INPUT2, "w-full"),
16437
16416
  value: effectiveType,
16438
16417
  onChange: (e) => changeType(e.target.value),
16439
16418
  children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
@@ -16461,7 +16440,7 @@ var AXIS_ROWS = [
16461
16440
  { type: "catAx", labelKey: "pptx.chart.categoryAxis", hasScale: false }
16462
16441
  ];
16463
16442
  function ChartAxisOptions({ axes, canEdit, onUpdateAxis }) {
16464
- const { t } = chunk6GFSF2ML_js.useTranslation();
16443
+ const { t } = chunkAIA7CY5U_js.useTranslation();
16465
16444
  const rows = AXIS_ROWS.map((row) => ({
16466
16445
  ...row,
16467
16446
  axis: axes?.find((a) => a.axisType === row.type)
@@ -16606,7 +16585,7 @@ function ChartAxisStyleOptions({
16606
16585
  onSetTitleStyle,
16607
16586
  onSetGridlineStyle
16608
16587
  }) {
16609
- const { t } = chunk6GFSF2ML_js.useTranslation();
16588
+ const { t } = chunkAIA7CY5U_js.useTranslation();
16610
16589
  const commitRecentColor = useRecentColorCommit();
16611
16590
  const rows = SCALE_AXES.map((row) => ({
16612
16591
  ...row,
@@ -16778,7 +16757,7 @@ function ChartComboTypeOptions({
16778
16757
  canEdit,
16779
16758
  onSetSeriesType
16780
16759
  }) {
16781
- const { t } = chunk6GFSF2ML_js.useTranslation();
16760
+ const { t } = chunkAIA7CY5U_js.useTranslation();
16782
16761
  if (!COMBO_SUPPORTED_TYPES.has(chartType) || series.length < 2) {
16783
16762
  return null;
16784
16763
  }
@@ -16807,7 +16786,7 @@ function ChartDataLabelOptions({
16807
16786
  canEdit,
16808
16787
  onUpdateStyle
16809
16788
  }) {
16810
- const { t } = chunk6GFSF2ML_js.useTranslation();
16789
+ const { t } = chunkAIA7CY5U_js.useTranslation();
16811
16790
  if (!style?.hasDataLabels) {
16812
16791
  return null;
16813
16792
  }
@@ -16855,7 +16834,7 @@ function ChartDataPointMarkerOptions({
16855
16834
  canEdit,
16856
16835
  onSetPointMarker
16857
16836
  }) {
16858
- const { t } = chunk6GFSF2ML_js.useTranslation();
16837
+ const { t } = chunkAIA7CY5U_js.useTranslation();
16859
16838
  const commitRecentColor = useRecentColorCommit();
16860
16839
  const [seriesIndex, setSeriesIndex] = React108.useState(0);
16861
16840
  if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0 || categories.length === 0) {
@@ -16961,7 +16940,7 @@ function ChartDataPointOptions({
16961
16940
  onSetPointExplosion,
16962
16941
  onSetPointLabel
16963
16942
  }) {
16964
- const { t } = chunk6GFSF2ML_js.useTranslation();
16943
+ const { t } = chunkAIA7CY5U_js.useTranslation();
16965
16944
  const commitRecentColor = useRecentColorCommit();
16966
16945
  const [seriesIndex, setSeriesIndex] = React108.useState(0);
16967
16946
  if (series.length === 0 || categories.length === 0) {
@@ -17063,7 +17042,7 @@ function ChartDataSheet({
17063
17042
  highlightCell,
17064
17043
  onChange
17065
17044
  }) {
17066
- const { t } = chunk6GFSF2ML_js.useTranslation();
17045
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17067
17046
  const ref = React108.useRef(null);
17068
17047
  React108.useLayoutEffect(() => {
17069
17048
  if (ref.current) {
@@ -17094,7 +17073,7 @@ function ChartDisplayOptions({
17094
17073
  hasGridlines,
17095
17074
  onToggleGridlines
17096
17075
  }) {
17097
- const { t } = chunk6GFSF2ML_js.useTranslation();
17076
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17098
17077
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
17099
17078
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.chart.display") }),
17100
17079
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
@@ -17171,7 +17150,7 @@ function ChartErrorBarOptions({
17171
17150
  canEdit,
17172
17151
  onSetErrorBars
17173
17152
  }) {
17174
- const { t } = chunk6GFSF2ML_js.useTranslation();
17153
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17175
17154
  if (!ERROR_BAR_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
17176
17155
  return null;
17177
17156
  }
@@ -17251,7 +17230,7 @@ function ChartFilteredSeriesOptions({
17251
17230
  onRestoreSeries,
17252
17231
  onSetDataLabelsRangeCache
17253
17232
  }) {
17254
- const { t } = chunk6GFSF2ML_js.useTranslation();
17233
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17255
17234
  const filteredSeries = chartData.filteredSeries ?? [];
17256
17235
  const seriesWithRange = chartData.series.map((series, index) => ({ series, index })).filter(({ series }) => series.dataLabelOptions?.dataLabelsRange);
17257
17236
  if (filteredSeries.length === 0 && seriesWithRange.length === 0 && chartData.series.length <= 1) {
@@ -17331,7 +17310,7 @@ function ChartMarkerOptions({
17331
17310
  canEdit,
17332
17311
  onSetMarker
17333
17312
  }) {
17334
- const { t } = chunk6GFSF2ML_js.useTranslation();
17313
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17335
17314
  const commitRecentColor = useRecentColorCommit();
17336
17315
  if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
17337
17316
  return null;
@@ -17440,7 +17419,7 @@ function ChartSeriesColorOptions({
17440
17419
  onSetColor,
17441
17420
  onToggleSecondaryAxis
17442
17421
  }) {
17443
- const { t } = chunk6GFSF2ML_js.useTranslation();
17422
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17444
17423
  const series = chartData.series;
17445
17424
  if (series.length === 0) {
17446
17425
  return null;
@@ -17490,7 +17469,7 @@ function ChartSubtypeOptions({
17490
17469
  canEdit,
17491
17470
  onUpdateChartData
17492
17471
  }) {
17493
- const { t } = chunk6GFSF2ML_js.useTranslation();
17472
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17494
17473
  if (chartData.chartType !== "bar3D" && chartData.chartType !== "radar" && chartData.chartType !== "surface") {
17495
17474
  return null;
17496
17475
  }
@@ -17556,7 +17535,7 @@ function ChartTrendlineOptions({
17556
17535
  canEdit,
17557
17536
  onSetTrendline
17558
17537
  }) {
17559
- const { t } = chunk6GFSF2ML_js.useTranslation();
17538
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17560
17539
  if (!TRENDLINE_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
17561
17540
  return null;
17562
17541
  }
@@ -17629,7 +17608,7 @@ function ChartTypeSelector({
17629
17608
  onUpdateChartData,
17630
17609
  onTitleChange
17631
17610
  }) {
17632
- const { t } = chunk6GFSF2ML_js.useTranslation();
17611
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17633
17612
  const supportsGrouping = GROUPING_SUPPORTED_TYPES.has(chartType);
17634
17613
  const displayedType = pptx.resolveDisplayedChartType(chartData);
17635
17614
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
@@ -17710,7 +17689,7 @@ function RotationField({
17710
17689
  canEdit,
17711
17690
  onRotationPatch
17712
17691
  }) {
17713
- const { t } = chunk6GFSF2ML_js.useTranslation();
17692
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17714
17693
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
17715
17694
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.chart.userShapeRotation") }),
17716
17695
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -17732,7 +17711,7 @@ function FlipFields({
17732
17711
  canEdit,
17733
17712
  onFlipPatch
17734
17713
  }) {
17735
- const { t } = chunk6GFSF2ML_js.useTranslation();
17714
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17736
17715
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
17737
17716
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 cursor-pointer", children: [
17738
17717
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -17771,7 +17750,7 @@ function ChartUserShapePositionFields({
17771
17750
  onRotationPatch,
17772
17751
  onFlipPatch
17773
17752
  }) {
17774
- const { t } = chunk6GFSF2ML_js.useTranslation();
17753
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17775
17754
  const update = (patch) => onPatch(row.path, patch);
17776
17755
  if (row.depth === 0) {
17777
17756
  const from = row.from;
@@ -17895,7 +17874,7 @@ function ChartUserShapeOptions({
17895
17874
  canEdit,
17896
17875
  onUpdateChartData
17897
17876
  }) {
17898
- const { t } = chunk6GFSF2ML_js.useTranslation();
17877
+ const { t } = chunkAIA7CY5U_js.useTranslation();
17899
17878
  const shapes = chartData.userShapes;
17900
17879
  const rows = pptx.listChartUserShapeRows(shapes);
17901
17880
  const kindLabel = (kind) => {
@@ -18053,8 +18032,8 @@ function ChartUserShapeOptions({
18053
18032
  }
18054
18033
  function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
18055
18034
  const chartData = selectedElement.chartData;
18056
- const followDataPoint = chunkSEIVQGH5_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
18057
- const { selection: partSelection } = chunkSEIVQGH5_js.useChartPartSelection();
18035
+ const followDataPoint = chunk5CJHRYFK_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
18036
+ const { selection: partSelection } = chunk5CJHRYFK_js.useChartPartSelection();
18058
18037
  const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
18059
18038
  const title = chartData?.title;
18060
18039
  const chartType = chartData?.chartType;
@@ -18492,7 +18471,7 @@ function OleEditorDialog({
18492
18471
  element,
18493
18472
  onUpdateElement
18494
18473
  }) {
18495
- const { t } = chunk6GFSF2ML_js.useTranslation();
18474
+ const { t } = chunkAIA7CY5U_js.useTranslation();
18496
18475
  const dialogRef = React108.useRef(null);
18497
18476
  const fileInputRef = React108.useRef(null);
18498
18477
  const descriptor = pptx.buildOleEditDialogDescriptor(element);
@@ -18740,7 +18719,7 @@ function ConnectorArrowsSection({
18740
18719
  onUpdateShapeStyle,
18741
18720
  markDirty
18742
18721
  }) {
18743
- const { t } = chunk6GFSF2ML_js.useTranslation();
18722
+ const { t } = chunkAIA7CY5U_js.useTranslation();
18744
18723
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
18745
18724
  ["Start", "End"].map((end) => {
18746
18725
  const key = end === "Start" ? "connectorStartArrow" : "connectorEndArrow";
@@ -18759,7 +18738,7 @@ function ConnectorArrowsSection({
18759
18738
  },
18760
18739
  disabled: !canEdit,
18761
18740
  className: SELECT_CLS2,
18762
- children: chunk6GFSF2ML_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18741
+ children: chunkAIA7CY5U_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18763
18742
  }
18764
18743
  )
18765
18744
  ] }, end);
@@ -18783,7 +18762,7 @@ function ConnectorArrowsSection({
18783
18762
  },
18784
18763
  disabled: !canEdit,
18785
18764
  className: SELECT_CLS2,
18786
- children: chunk6GFSF2ML_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18765
+ children: chunkAIA7CY5U_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18787
18766
  }
18788
18767
  )
18789
18768
  ] }),
@@ -18802,7 +18781,7 @@ function ConnectorArrowsSection({
18802
18781
  },
18803
18782
  disabled: !canEdit,
18804
18783
  className: SELECT_CLS2,
18805
- children: chunk6GFSF2ML_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18784
+ children: chunkAIA7CY5U_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18806
18785
  }
18807
18786
  )
18808
18787
  ] })
@@ -18833,7 +18812,7 @@ function ConnectorPanel({
18833
18812
  function GroupInfoPanel({
18834
18813
  selectedElement
18835
18814
  }) {
18836
- const { t } = chunk6GFSF2ML_js.useTranslation();
18815
+ const { t } = chunkAIA7CY5U_js.useTranslation();
18837
18816
  if (selectedElement.type !== "group") {
18838
18817
  return null;
18839
18818
  }
@@ -18848,7 +18827,7 @@ function OlePropertiesPanel({
18848
18827
  canEdit,
18849
18828
  onUpdateElement
18850
18829
  }) {
18851
- const { t } = chunk6GFSF2ML_js.useTranslation();
18830
+ const { t } = chunkAIA7CY5U_js.useTranslation();
18852
18831
  const [isEditorOpen, setIsEditorOpen] = React108.useState(false);
18853
18832
  if (selectedElement.type !== "ole") {
18854
18833
  return null;
@@ -18893,7 +18872,7 @@ function OlePropertiesPanel({
18893
18872
  /* @__PURE__ */ jsxRuntime.jsx(
18894
18873
  "span",
18895
18874
  {
18896
- className: chunk6GFSF2ML_js.cn(
18875
+ className: chunkAIA7CY5U_js.cn(
18897
18876
  "inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
18898
18877
  ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
18899
18878
  ),
@@ -18946,7 +18925,7 @@ function LayerOrderButtons({
18946
18925
  "button",
18947
18926
  {
18948
18927
  type: "button",
18949
- className: chunk6GFSF2ML_js.cn("flex-1", BTN2),
18928
+ className: chunkAIA7CY5U_js.cn("flex-1", BTN2),
18950
18929
  disabled: !canEdit,
18951
18930
  onClick: () => onMoveLayer("forward"),
18952
18931
  children: "\u2191 Forward"
@@ -18956,7 +18935,7 @@ function LayerOrderButtons({
18956
18935
  "button",
18957
18936
  {
18958
18937
  type: "button",
18959
- className: chunk6GFSF2ML_js.cn("flex-1", BTN2),
18938
+ className: chunkAIA7CY5U_js.cn("flex-1", BTN2),
18960
18939
  disabled: !canEdit,
18961
18940
  onClick: () => onMoveLayer("backward"),
18962
18941
  children: "\u2193 Backward"
@@ -18970,7 +18949,7 @@ function ArtisticEffectsGallery({
18970
18949
  canEdit,
18971
18950
  updateEffects
18972
18951
  }) {
18973
- const { t } = chunk6GFSF2ML_js.useTranslation();
18952
+ const { t } = chunkAIA7CY5U_js.useTranslation();
18974
18953
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
18975
18954
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.artisticEffects") }),
18976
18955
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: pptx.ARTISTIC_EFFECTS.map(([effectName, tKey, cssFilter]) => {
@@ -18980,7 +18959,7 @@ function ArtisticEffectsGallery({
18980
18959
  {
18981
18960
  type: "button",
18982
18961
  disabled: !canEdit,
18983
- className: chunk6GFSF2ML_js.cn(
18962
+ className: chunkAIA7CY5U_js.cn(
18984
18963
  "flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
18985
18964
  isActive ? "border-primary bg-primary/10" : "border-border"
18986
18965
  ),
@@ -19015,7 +18994,7 @@ function ColorChangeSection({
19015
18994
  canEdit,
19016
18995
  updateEffects
19017
18996
  }) {
19018
- const { t } = chunk6GFSF2ML_js.useTranslation();
18997
+ const { t } = chunkAIA7CY5U_js.useTranslation();
19019
18998
  const cc = fx?.clrChange;
19020
18999
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
19021
19000
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
@@ -19042,7 +19021,7 @@ function ColorChangeSection({
19042
19021
  DebouncedColorInput,
19043
19022
  {
19044
19023
  disabled: !canEdit,
19045
- value: chunk6GFSF2ML_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
19024
+ value: chunkAIA7CY5U_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
19046
19025
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
19047
19026
  onCommit: (hex) => updateEffects({
19048
19027
  clrChange: {
@@ -19060,7 +19039,7 @@ function ColorChangeSection({
19060
19039
  DebouncedColorInput,
19061
19040
  {
19062
19041
  disabled: !canEdit || Boolean(cc.clrToTransparent),
19063
- value: chunk6GFSF2ML_js.normalizeHexColor(cc.clrTo, "#000000"),
19042
+ value: chunkAIA7CY5U_js.normalizeHexColor(cc.clrTo, "#000000"),
19064
19043
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
19065
19044
  onCommit: (hex) => updateEffects({
19066
19045
  clrChange: {
@@ -19097,7 +19076,7 @@ function ColorWashSection({
19097
19076
  canEdit,
19098
19077
  updateEffects
19099
19078
  }) {
19100
- const { t } = chunk6GFSF2ML_js.useTranslation();
19079
+ const { t } = chunkAIA7CY5U_js.useTranslation();
19101
19080
  const wash = fx?.colorWash;
19102
19081
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
19103
19082
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
@@ -19120,7 +19099,7 @@ function ColorWashSection({
19120
19099
  DebouncedColorInput,
19121
19100
  {
19122
19101
  disabled: !canEdit,
19123
- value: chunk6GFSF2ML_js.normalizeHexColor(wash.color, "#0066cc"),
19102
+ value: chunkAIA7CY5U_js.normalizeHexColor(wash.color, "#0066cc"),
19124
19103
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
19125
19104
  onCommit: (hex) => updateEffects({
19126
19105
  colorWash: { color: hex, opacity: wash.opacity ?? 40 }
@@ -19197,7 +19176,7 @@ function DuotonePanel({
19197
19176
  canEdit,
19198
19177
  onUpdateElement
19199
19178
  }) {
19200
- const { t } = chunk6GFSF2ML_js.useTranslation();
19179
+ const { t } = chunkAIA7CY5U_js.useTranslation();
19201
19180
  const effects = "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0;
19202
19181
  const commitDuotone = React108.useCallback(
19203
19182
  (color1, color2) => {
@@ -19218,8 +19197,8 @@ function DuotonePanel({
19218
19197
  }
19219
19198
  });
19220
19199
  }, [effects, onUpdateElement]);
19221
- const shadowColor = chunk6GFSF2ML_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
19222
- const highlightColor = chunk6GFSF2ML_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
19200
+ const shadowColor = chunkAIA7CY5U_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
19201
+ const highlightColor = chunkAIA7CY5U_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
19223
19202
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
19224
19203
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
19225
19204
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -19250,7 +19229,7 @@ function DuotonePanel({
19250
19229
  ] }),
19251
19230
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
19252
19231
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
19253
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkSEIVQGH5_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
19232
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunk5CJHRYFK_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
19254
19233
  "button",
19255
19234
  {
19256
19235
  type: "button",
@@ -19286,7 +19265,7 @@ function ImageAdjustmentsPanel({
19286
19265
  canEdit,
19287
19266
  onUpdateElement
19288
19267
  }) {
19289
- const { t } = chunk6GFSF2ML_js.useTranslation();
19268
+ const { t } = chunkAIA7CY5U_js.useTranslation();
19290
19269
  const effects = React108.useMemo(
19291
19270
  () => "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0,
19292
19271
  [selectedElement]
@@ -19387,7 +19366,7 @@ function ImageCropSection({
19387
19366
  canEdit,
19388
19367
  onUpdateElement
19389
19368
  }) {
19390
- const { t } = chunk6GFSF2ML_js.useTranslation();
19369
+ const { t } = chunkAIA7CY5U_js.useTranslation();
19391
19370
  if (!pptx$1.isImageLikeElement(selectedElement)) {
19392
19371
  return null;
19393
19372
  }
@@ -19405,7 +19384,7 @@ function ImageCropSection({
19405
19384
  max: MAX_CROP_PERCENT,
19406
19385
  disabled: !croppable,
19407
19386
  className: "accent-primary",
19408
- value: Math.round(chunk6GFSF2ML_js.clampCropValue(selectedElement[key]) * 100),
19387
+ value: Math.round(chunkAIA7CY5U_js.clampCropValue(selectedElement[key]) * 100),
19409
19388
  onChange: (e) => onUpdateElement({
19410
19389
  [key]: Number(e.target.value) / 100
19411
19390
  })
@@ -19452,7 +19431,7 @@ function ImagePropertiesPanel({
19452
19431
  canEdit,
19453
19432
  onUpdateElement
19454
19433
  }) {
19455
- const { t } = chunk6GFSF2ML_js.useTranslation();
19434
+ const { t } = chunkAIA7CY5U_js.useTranslation();
19456
19435
  const fx = selectedElement.imageEffects;
19457
19436
  const updateEffects = (patch) => {
19458
19437
  onUpdateElement({
@@ -19469,7 +19448,7 @@ function ImagePropertiesPanel({
19469
19448
  {
19470
19449
  rows: 2,
19471
19450
  disabled: !canEdit,
19472
- className: chunk6GFSF2ML_js.cn(INPUT2, "resize-none text-[11px]"),
19451
+ className: chunkAIA7CY5U_js.cn(INPUT2, "resize-none text-[11px]"),
19473
19452
  value: selectedElement.altText ?? "",
19474
19453
  onChange: (e) => onUpdateElement({
19475
19454
  altText: e.target.value
@@ -19657,7 +19636,7 @@ function InspectorFields({
19657
19636
  liveTarget,
19658
19637
  livePatch
19659
19638
  }) {
19660
- const { t } = chunk6GFSF2ML_js.useTranslation();
19639
+ const { t } = chunkAIA7CY5U_js.useTranslation();
19661
19640
  const views = pptx.resolveInspectorSections(sections, target);
19662
19641
  const change = (sectionId, fieldId, raw) => {
19663
19642
  const patch = pptx.inspectorFieldPatch(sections, sectionId, fieldId, target, raw);
@@ -19885,7 +19864,7 @@ function MediaInspector({
19885
19864
  durationSeconds,
19886
19865
  onUpdateElement
19887
19866
  }) {
19888
- const { t } = chunk6GFSF2ML_js.useTranslation();
19867
+ const { t } = chunkAIA7CY5U_js.useTranslation();
19889
19868
  const trimStartMs = element.trimStartMs ?? 0;
19890
19869
  const trimEndMs = element.trimEndMs ?? 0;
19891
19870
  const durationMs = durationSeconds * 1e3;
@@ -20115,7 +20094,7 @@ function MediaPlaybackBookmarks({
20115
20094
  onUpdateElement,
20116
20095
  onSeekTo
20117
20096
  }) {
20118
- const { t } = chunk6GFSF2ML_js.useTranslation();
20097
+ const { t } = chunkAIA7CY5U_js.useTranslation();
20119
20098
  const [newBookmarkLabel, setNewBookmarkLabel] = React108.useState("");
20120
20099
  const volumePercent = Math.round((element.volume ?? 1) * 100);
20121
20100
  const handleAddBookmark = React108.useCallback(() => {
@@ -20365,7 +20344,7 @@ function MediaPropertiesPanel({
20365
20344
  canEdit,
20366
20345
  onUpdateElement
20367
20346
  }) {
20368
- const { t } = chunk6GFSF2ML_js.useTranslation();
20347
+ const { t } = chunkAIA7CY5U_js.useTranslation();
20369
20348
  const mediaRef = React108.useRef(null);
20370
20349
  const [isPlaying, setIsPlaying] = React108.useState(false);
20371
20350
  const [currentTime, setCurrentTime] = React108.useState(0);
@@ -20599,7 +20578,7 @@ function AccessibilityTextSection({
20599
20578
  canEdit,
20600
20579
  onUpdateElement
20601
20580
  }) {
20602
- const { t } = chunk6GFSF2ML_js.useTranslation();
20581
+ const { t } = chunkAIA7CY5U_js.useTranslation();
20603
20582
  const fields = pptx.getNonVisualDescriptionFields(selectedElement);
20604
20583
  if (!fields.showAltText && !fields.showTitle) {
20605
20584
  return null;
@@ -20614,7 +20593,7 @@ function AccessibilityTextSection({
20614
20593
  rows: 2,
20615
20594
  disabled: !canEdit,
20616
20595
  placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
20617
- className: chunk6GFSF2ML_js.cn(INPUT2, "resize-none text-[11px]"),
20596
+ className: chunkAIA7CY5U_js.cn(INPUT2, "resize-none text-[11px]"),
20618
20597
  value: fields.altText,
20619
20598
  onChange: (e) => onUpdateElement({ altText: e.target.value })
20620
20599
  }
@@ -20628,7 +20607,7 @@ function AccessibilityTextSection({
20628
20607
  type: "text",
20629
20608
  disabled: !canEdit,
20630
20609
  placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
20631
- className: chunk6GFSF2ML_js.cn(INPUT2, "text-[11px]"),
20610
+ className: chunkAIA7CY5U_js.cn(INPUT2, "text-[11px]"),
20632
20611
  value: fields.title,
20633
20612
  onChange: (e) => onUpdateElement({ title: e.target.value })
20634
20613
  }
@@ -20656,7 +20635,7 @@ function RecentColorsRow({
20656
20635
  disabled,
20657
20636
  onCommit
20658
20637
  }) {
20659
- const { t } = chunk6GFSF2ML_js.useTranslation();
20638
+ const { t } = chunkAIA7CY5U_js.useTranslation();
20660
20639
  const { recentColors, pushColor } = useRecentColors();
20661
20640
  const shown = recentColors.length > 0;
20662
20641
  const ref = React108.useRef(null);
@@ -20698,7 +20677,7 @@ function ThemeColorSwatchGrid({
20698
20677
  selectedHex,
20699
20678
  onPick
20700
20679
  }) {
20701
- const { t } = chunk6GFSF2ML_js.useTranslation();
20680
+ const { t } = chunkAIA7CY5U_js.useTranslation();
20702
20681
  const themeColorMap = useThemeColorMap();
20703
20682
  const columns = React108.useMemo(
20704
20683
  () => pptx.buildThemeColorSwatchGrid(themeColorMap, (key, params) => t(key, params)),
@@ -20745,7 +20724,7 @@ function SelectRow({
20745
20724
  options,
20746
20725
  onChange
20747
20726
  }) {
20748
- const { t } = chunk6GFSF2ML_js.useTranslation();
20727
+ const { t } = chunkAIA7CY5U_js.useTranslation();
20749
20728
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `flex flex-col gap-1 ${span2 ? COL2 : ""}`, children: [
20750
20729
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: label }),
20751
20730
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -20769,14 +20748,14 @@ function ColorPickerRow({
20769
20748
  onChange,
20770
20749
  styleChange
20771
20750
  }) {
20772
- const { t } = chunk6GFSF2ML_js.useTranslation();
20751
+ const { t } = chunkAIA7CY5U_js.useTranslation();
20773
20752
  const { pushColor } = useRecentColors();
20774
20753
  const commit = (color, ref) => {
20775
20754
  onChange(color, ref);
20776
20755
  pushColor(color);
20777
20756
  };
20778
20757
  const handleEyedropper = async () => {
20779
- const color = await chunk6GFSF2ML_js.openNativeEyeDropper();
20758
+ const color = await chunkAIA7CY5U_js.openNativeEyeDropper();
20780
20759
  if (color) {
20781
20760
  commit(color);
20782
20761
  }
@@ -20849,7 +20828,7 @@ function GradientStopRow({
20849
20828
  onUpdate,
20850
20829
  allStops
20851
20830
  }) {
20852
- const { t } = chunk6GFSF2ML_js.useTranslation();
20831
+ const { t } = chunkAIA7CY5U_js.useTranslation();
20853
20832
  const { pushColor } = useRecentColors();
20854
20833
  const commitRecentColor = useRecentColorCommit();
20855
20834
  const patchStop = (patch) => {
@@ -20862,9 +20841,9 @@ function GradientStopRow({
20862
20841
  "input",
20863
20842
  {
20864
20843
  type: "color",
20865
- value: chunk6GFSF2ML_js.normalizeHexColor(stop2.color, "#3b82f6"),
20844
+ value: chunkAIA7CY5U_js.normalizeHexColor(stop2.color, "#3b82f6"),
20866
20845
  ref: commitRecentColor,
20867
- onChange: (e) => patchStop({ color: chunk6GFSF2ML_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
20846
+ onChange: (e) => patchStop({ color: chunkAIA7CY5U_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
20868
20847
  className: "h-7 w-10 rounded border border-border bg-muted"
20869
20848
  }
20870
20849
  ),
@@ -20939,7 +20918,7 @@ function FillAdvancedControls({
20939
20918
  onUpdateGradientStops,
20940
20919
  onSetFillColor: _onSetFillColor
20941
20920
  }) {
20942
- const { t } = chunk6GFSF2ML_js.useTranslation();
20921
+ const { t } = chunkAIA7CY5U_js.useTranslation();
20943
20922
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20944
20923
  showGradient && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20945
20924
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -20993,7 +20972,7 @@ function FillAdvancedControls({
20993
20972
  onClick: () => onUpdateGradientStops([
20994
20973
  ...gradientStops,
20995
20974
  {
20996
- color: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
20975
+ color: chunkAIA7CY5U_js.normalizeHexColor(style?.fillColor, chunkAIA7CY5U_js.DEFAULT_FILL_COLOR),
20997
20976
  position: 50,
20998
20977
  opacity: 1
20999
20978
  }
@@ -21007,9 +20986,9 @@ function FillAdvancedControls({
21007
20986
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
21008
20987
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
21009
20988
  /* @__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) => {
21010
- const fgColor = chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR);
21011
- const bgColor = chunk6GFSF2ML_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
21012
- const svgPattern = chunk6GFSF2ML_js.getPatternSvg(opt.value, fgColor, bgColor);
20989
+ const fgColor = chunkAIA7CY5U_js.normalizeHexColor(style?.fillColor, chunkAIA7CY5U_js.DEFAULT_FILL_COLOR);
20990
+ const bgColor = chunkAIA7CY5U_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
20991
+ const svgPattern = chunkAIA7CY5U_js.getPatternSvg(opt.value, fgColor, bgColor);
21013
20992
  const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
21014
20993
  return /* @__PURE__ */ jsxRuntime.jsx(
21015
20994
  "button",
@@ -21042,7 +21021,7 @@ function FillAdvancedControls({
21042
21021
  {
21043
21022
  label: t("pptx.fillAdvanced.foregroundColor"),
21044
21023
  prefix: "pattern-fg",
21045
- value: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
21024
+ value: chunkAIA7CY5U_js.normalizeHexColor(style?.fillColor, chunkAIA7CY5U_js.DEFAULT_FILL_COLOR),
21046
21025
  disabled: isLine,
21047
21026
  onChange: (color) => onUpdateShapeStyle(patternForeground(color)),
21048
21027
  styleChange: patternForeground
@@ -21053,7 +21032,7 @@ function FillAdvancedControls({
21053
21032
  {
21054
21033
  label: t("pptx.fillAdvanced.backgroundColor"),
21055
21034
  prefix: "pattern-bg",
21056
- value: chunk6GFSF2ML_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
21035
+ value: chunkAIA7CY5U_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
21057
21036
  disabled: isLine,
21058
21037
  onChange: (color) => onUpdateShapeStyle(patternBackground(color)),
21059
21038
  styleChange: patternBackground
@@ -21118,7 +21097,7 @@ var QUICK_STYLES = pptx.buildQuickStylesGallery();
21118
21097
  function QuickStylesGallery({
21119
21098
  onUpdateShapeStyle
21120
21099
  }) {
21121
- const { t } = chunk6GFSF2ML_js.useTranslation();
21100
+ const { t } = chunkAIA7CY5U_js.useTranslation();
21122
21101
  const ref = React108.useRef(null);
21123
21102
  React108.useLayoutEffect(() => {
21124
21103
  const gallery = ref.current;
@@ -21155,14 +21134,14 @@ function StrokeEffectsSection({
21155
21134
  onUpdateShapeStyle,
21156
21135
  onSetStrokeColor
21157
21136
  }) {
21158
- const { t } = chunk6GFSF2ML_js.useTranslation();
21137
+ const { t } = chunkAIA7CY5U_js.useTranslation();
21159
21138
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
21160
21139
  /* @__PURE__ */ jsxRuntime.jsx(
21161
21140
  ColorPickerRow,
21162
21141
  {
21163
21142
  label: t("pptx.inspector.stroke"),
21164
21143
  prefix: "stroke",
21165
- value: chunk6GFSF2ML_js.normalizeHexColor(style?.strokeColor, chunk6GFSF2ML_js.DEFAULT_STROKE_COLOR),
21144
+ value: chunkAIA7CY5U_js.normalizeHexColor(style?.strokeColor, chunkAIA7CY5U_js.DEFAULT_STROKE_COLOR),
21166
21145
  selectedRef: style?.strokeColorRef,
21167
21146
  onChange: onSetStrokeColor,
21168
21147
  styleChange: (hex, current) => pptx.shapeOutlineChange(hex, void 0, current)
@@ -21205,7 +21184,7 @@ function FillStrokeProperties({
21205
21184
  onSetFillColor,
21206
21185
  onSetStrokeColor
21207
21186
  }) {
21208
- const { t } = chunk6GFSF2ML_js.useTranslation();
21187
+ const { t } = chunkAIA7CY5U_js.useTranslation();
21209
21188
  const line = isLineish(selectedElement, selectedShapeType);
21210
21189
  const style = selectedShapeStyle;
21211
21190
  const handleFillModeChange = (nextMode) => {
@@ -21221,10 +21200,10 @@ function FillStrokeProperties({
21221
21200
  return;
21222
21201
  }
21223
21202
  if (nextMode === "gradient") {
21224
- const existing = chunk6GFSF2ML_js.sanitizeGradientStops(style?.fillGradientStops);
21203
+ const existing = chunkAIA7CY5U_js.sanitizeGradientStops(style?.fillGradientStops);
21225
21204
  const stops = existing.length >= 2 ? existing : [
21226
21205
  {
21227
- color: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
21206
+ color: chunkAIA7CY5U_js.normalizeHexColor(style?.fillColor, chunkAIA7CY5U_js.DEFAULT_FILL_COLOR),
21228
21207
  position: 0,
21229
21208
  opacity: 1
21230
21209
  },
@@ -21249,7 +21228,7 @@ function FillStrokeProperties({
21249
21228
  onUpdateShapeStyle({ fillMode: "solid" });
21250
21229
  };
21251
21230
  const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
21252
- { color: chunk6GFSF2ML_js.DEFAULT_FILL_COLOR, position: 0 },
21231
+ { color: chunkAIA7CY5U_js.DEFAULT_FILL_COLOR, position: 0 },
21253
21232
  { color: "#ffffff", position: 100 }
21254
21233
  ];
21255
21234
  const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
@@ -21276,7 +21255,7 @@ function FillStrokeProperties({
21276
21255
  {
21277
21256
  label: t("pptx.fill.fill"),
21278
21257
  prefix: "fill",
21279
- value: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
21258
+ value: chunkAIA7CY5U_js.normalizeHexColor(style?.fillColor, chunkAIA7CY5U_js.DEFAULT_FILL_COLOR),
21280
21259
  selectedRef: style?.fillColorRef,
21281
21260
  disabled: line,
21282
21261
  onChange: onSetFillColor,
@@ -21314,7 +21293,7 @@ function Text3DProperties({
21314
21293
  ts,
21315
21294
  onUpdateTextStyle
21316
21295
  }) {
21317
- const { t } = chunk6GFSF2ML_js.useTranslation();
21296
+ const { t } = chunkAIA7CY5U_js.useTranslation();
21318
21297
  const commitRecentColor = useRecentColorCommit();
21319
21298
  const t3d = ts?.text3d;
21320
21299
  const hasExtrusion = Boolean(t3d?.extrusionHeight && t3d.extrusionHeight > 0);
@@ -21361,7 +21340,7 @@ function Text3DProperties({
21361
21340
  "input",
21362
21341
  {
21363
21342
  type: "color",
21364
- value: chunk6GFSF2ML_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
21343
+ value: chunkAIA7CY5U_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
21365
21344
  ref: commitRecentColor,
21366
21345
  onChange: (e) => update3d({ extrusionColor: e.target.value }),
21367
21346
  className: COLOR_CLS
@@ -21528,7 +21507,7 @@ function AdvancedTextFormatting({
21528
21507
  onUpdateTextStyle,
21529
21508
  numChange
21530
21509
  }) {
21531
- const { t } = chunk6GFSF2ML_js.useTranslation();
21510
+ const { t } = chunkAIA7CY5U_js.useTranslation();
21532
21511
  const commitRecentColor = useRecentColorCommit();
21533
21512
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
21534
21513
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] uppercase tracking-wide text-muted-foreground", children: t("pptx.textProperties.advancedTextHeading") }),
@@ -21550,7 +21529,7 @@ function AdvancedTextFormatting({
21550
21529
  "input",
21551
21530
  {
21552
21531
  type: "color",
21553
- value: chunk6GFSF2ML_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
21532
+ value: chunkAIA7CY5U_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
21554
21533
  ref: commitRecentColor,
21555
21534
  onChange: (e) => onUpdateTextStyle({ highlightColor: e.target.value }),
21556
21535
  disabled: !canEdit,
@@ -21692,7 +21671,7 @@ function TextReflectionSection({
21692
21671
  onUpdateTextStyle,
21693
21672
  numChange
21694
21673
  }) {
21695
- const { t } = chunk6GFSF2ML_js.useTranslation();
21674
+ const { t } = chunkAIA7CY5U_js.useTranslation();
21696
21675
  const hasReflection = Boolean(ts?.textReflection);
21697
21676
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
21698
21677
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2 text-foreground", children: [
@@ -21800,7 +21779,7 @@ function TextEffectsPanel({
21800
21779
  onUpdateTextStyle,
21801
21780
  numChange
21802
21781
  }) {
21803
- const { t } = chunk6GFSF2ML_js.useTranslation();
21782
+ const { t } = chunkAIA7CY5U_js.useTranslation();
21804
21783
  const commitRecentColor = useRecentColorCommit();
21805
21784
  const hasShadow = Boolean(
21806
21785
  ts?.textShadowColor || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0
@@ -21846,7 +21825,7 @@ function TextEffectsPanel({
21846
21825
  "input",
21847
21826
  {
21848
21827
  type: "color",
21849
- value: chunk6GFSF2ML_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
21828
+ value: chunkAIA7CY5U_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
21850
21829
  ref: commitRecentColor,
21851
21830
  onChange: (e) => onUpdateTextStyle({ textShadowColor: e.target.value }),
21852
21831
  className: COLOR_CLS2
@@ -21951,7 +21930,7 @@ function TextEffectsPanel({
21951
21930
  "input",
21952
21931
  {
21953
21932
  type: "color",
21954
- value: chunk6GFSF2ML_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
21933
+ value: chunkAIA7CY5U_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
21955
21934
  ref: commitRecentColor,
21956
21935
  onChange: (e) => onUpdateTextStyle({ textGlowColor: e.target.value }),
21957
21936
  className: COLOR_CLS2
@@ -22001,7 +21980,7 @@ function TextWarpGallery({
22001
21980
  ts,
22002
21981
  onUpdateTextStyle
22003
21982
  }) {
22004
- const { t } = chunk6GFSF2ML_js.useTranslation();
21983
+ const { t } = chunkAIA7CY5U_js.useTranslation();
22005
21984
  const [expanded, setExpanded] = React108__default.default.useState(false);
22006
21985
  const currentPreset = ts?.textWarpPreset || "textNoShape";
22007
21986
  const descriptor = React108.useMemo(() => pptx.buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
@@ -22082,7 +22061,7 @@ function ShapeTextPanels({
22082
22061
  onUpdateElementStyle,
22083
22062
  onUpdateTextStyle
22084
22063
  }) {
22085
- const { t } = chunk6GFSF2ML_js.useTranslation();
22064
+ const { t } = chunkAIA7CY5U_js.useTranslation();
22086
22065
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
22087
22066
  pptx$1.hasShapeProperties(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
22088
22067
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
@@ -22091,11 +22070,11 @@ function ShapeTextPanels({
22091
22070
  {
22092
22071
  value: selectedElement.shapeType || "rect",
22093
22072
  disabled: !canEdit,
22094
- className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
22073
+ className: chunkAIA7CY5U_js.cn(INPUT2, "w-full"),
22095
22074
  onChange: (e) => onUpdateElement({
22096
22075
  shapeType: e.target.value
22097
22076
  }),
22098
- children: chunk6GFSF2ML_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
22077
+ children: chunkAIA7CY5U_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
22099
22078
  }
22100
22079
  )
22101
22080
  ] }),
@@ -22107,7 +22086,7 @@ function ShapeTextPanels({
22107
22086
  selectedElement,
22108
22087
  selectedShapeStyle: selectedElement.shapeStyle,
22109
22088
  selectedShapeType: selectedElement.shapeType,
22110
- selectedGradientStops: chunk6GFSF2ML_js.sanitizeGradientStops(
22089
+ selectedGradientStops: chunkAIA7CY5U_js.sanitizeGradientStops(
22111
22090
  selectedElement.shapeStyle?.fillGradientStops
22112
22091
  ),
22113
22092
  canEdit,
@@ -22143,7 +22122,7 @@ function ShapeTextPanels({
22143
22122
  {
22144
22123
  disabled: !canEdit,
22145
22124
  "aria-label": "Text Color",
22146
- value: chunk6GFSF2ML_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
22125
+ value: chunkAIA7CY5U_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
22147
22126
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
22148
22127
  onApply: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 }),
22149
22128
  patch: textColorPatch
@@ -22234,7 +22213,7 @@ function TextFormatToggle({
22234
22213
  {
22235
22214
  type: "button",
22236
22215
  disabled,
22237
- className: chunk6GFSF2ML_js.cn(
22216
+ className: chunkAIA7CY5U_js.cn(
22238
22217
  "px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
22239
22218
  italic && "italic",
22240
22219
  underline && "underline",
@@ -22403,7 +22382,7 @@ function SmartArtLayoutSwitcher({
22403
22382
  canEdit,
22404
22383
  onUpdateSmartArt
22405
22384
  }) {
22406
- const { t } = chunk6GFSF2ML_js.useTranslation();
22385
+ const { t } = chunkAIA7CY5U_js.useTranslation();
22407
22386
  const currentLayout = smartArtData.resolvedLayoutType ?? "list";
22408
22387
  const handleLayoutSwitch = (newLayout) => {
22409
22388
  if (!canEdit || newLayout === currentLayout) {
@@ -22422,7 +22401,7 @@ function SmartArtLayoutSwitcher({
22422
22401
  type: "button",
22423
22402
  "data-testid": `smartart-layout-${type}`,
22424
22403
  disabled: !canEdit,
22425
- className: chunk6GFSF2ML_js.cn(
22404
+ className: chunkAIA7CY5U_js.cn(
22426
22405
  "flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
22427
22406
  "text-[9px] leading-tight",
22428
22407
  isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
@@ -22449,7 +22428,7 @@ function SmartArtStyleControls({
22449
22428
  onChangeColorScheme,
22450
22429
  onChangeStyle
22451
22430
  }) {
22452
- const { t } = chunk6GFSF2ML_js.useTranslation();
22431
+ const { t } = chunkAIA7CY5U_js.useTranslation();
22453
22432
  const translate = React108__default.default.useCallback((key) => t(key), [t]);
22454
22433
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
22455
22434
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
@@ -22460,7 +22439,7 @@ function SmartArtStyleControls({
22460
22439
  disabled: !canEdit,
22461
22440
  "data-testid": "smartart-color-scheme",
22462
22441
  "aria-label": t("pptx.smartart.colorScheme"),
22463
- className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
22442
+ className: chunkAIA7CY5U_js.cn(INPUT2, "w-full"),
22464
22443
  value: colorScheme,
22465
22444
  onChange: (e) => onChangeColorScheme(e.target.value),
22466
22445
  children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
@@ -22475,7 +22454,7 @@ function SmartArtStyleControls({
22475
22454
  type: "button",
22476
22455
  disabled: !canEdit,
22477
22456
  "aria-pressed": style === s,
22478
- className: chunk6GFSF2ML_js.cn(
22457
+ className: chunkAIA7CY5U_js.cn(
22479
22458
  "flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
22480
22459
  style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
22481
22460
  ),
@@ -22501,14 +22480,14 @@ function SmartArtPropertiesPanel({
22501
22480
  onUpdateElement,
22502
22481
  box
22503
22482
  }) {
22504
- const { t } = chunk6GFSF2ML_js.useTranslation();
22483
+ const { t } = chunkAIA7CY5U_js.useTranslation();
22505
22484
  const { pushColor } = useRecentColors();
22506
22485
  const paneRef = React108__default.default.useRef(null);
22507
22486
  const applySmartArtData = (newData) => {
22508
22487
  const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
22509
22488
  newData,
22510
22489
  newData.layout,
22511
- chunkSEIVQGH5_js.resolveSmartArtDataPalette(newData),
22490
+ chunk5CJHRYFK_js.resolveSmartArtDataPalette(newData),
22512
22491
  newData.style ?? "flat",
22513
22492
  "inspector",
22514
22493
  box
@@ -22579,9 +22558,9 @@ function TableDataGrid({
22579
22558
  canEdit,
22580
22559
  onUpdateElement
22581
22560
  }) {
22582
- const { t } = chunk6GFSF2ML_js.useTranslation();
22561
+ const { t } = chunkAIA7CY5U_js.useTranslation();
22583
22562
  const grid = pptx.buildTableDataGrid(tableElement);
22584
- const { viewportWidth } = chunkSEIVQGH5_js.useIsMobile();
22563
+ const { viewportWidth } = chunk5CJHRYFK_js.useIsMobile();
22585
22564
  const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
22586
22565
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
22587
22566
  const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
@@ -22745,7 +22724,7 @@ function TableCellPatternFill({
22745
22724
  canEdit,
22746
22725
  onUpdateCellStyle
22747
22726
  }) {
22748
- const { t } = chunk6GFSF2ML_js.useTranslation();
22727
+ const { t } = chunkAIA7CY5U_js.useTranslation();
22749
22728
  const commitRecentColor = useRecentColorCommit();
22750
22729
  const translate = (key) => t(key);
22751
22730
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
@@ -22800,7 +22779,7 @@ function TableCellAdvancedFill({
22800
22779
  canEdit,
22801
22780
  onUpdateCellStyle
22802
22781
  }) {
22803
- const { t } = chunk6GFSF2ML_js.useTranslation();
22782
+ const { t } = chunkAIA7CY5U_js.useTranslation();
22804
22783
  const fillMode = cellStyle.fillMode ?? "solid";
22805
22784
  const handleFillModeChange = (mode) => {
22806
22785
  const next = mode;
@@ -22888,7 +22867,7 @@ function GradientControls({
22888
22867
  canEdit,
22889
22868
  onUpdateCellStyle
22890
22869
  }) {
22891
- const { t } = chunk6GFSF2ML_js.useTranslation();
22870
+ const { t } = chunkAIA7CY5U_js.useTranslation();
22892
22871
  const commitRecentColor = useRecentColorCommit();
22893
22872
  const stops = cellStyle.gradientFillStops ?? [];
22894
22873
  const gradType = cellStyle.gradientFillType ?? "linear";
@@ -22986,7 +22965,7 @@ function TableCellColorField({
22986
22965
  disabled,
22987
22966
  onCommit
22988
22967
  }) {
22989
- const hex = chunk6GFSF2ML_js.normalizeHexColor(value, fallback);
22968
+ const hex = chunkAIA7CY5U_js.normalizeHexColor(value, fallback);
22990
22969
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
22991
22970
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
22992
22971
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -23016,7 +22995,7 @@ function TableCellFormattingPanel({
23016
22995
  onUpdateTableData,
23017
22996
  onUpdateMergeRows
23018
22997
  }) {
23019
- const { t } = chunk6GFSF2ML_js.useTranslation();
22998
+ const { t } = chunkAIA7CY5U_js.useTranslation();
23020
22999
  const { rowIndex, columnIndex } = tableEditorState;
23021
23000
  const cell = td.rows[rowIndex]?.cells[columnIndex];
23022
23001
  if (!cell) {
@@ -23094,7 +23073,7 @@ function TableCellFormattingPanel({
23094
23073
  {
23095
23074
  type: "button",
23096
23075
  disabled: !canEdit,
23097
- className: chunk6GFSF2ML_js.cn(
23076
+ className: chunkAIA7CY5U_js.cn(
23098
23077
  "px-2 py-1 rounded text-[11px] transition-colors",
23099
23078
  cls,
23100
23079
  cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
@@ -23113,7 +23092,7 @@ function TableCellFormattingPanel({
23113
23092
  {
23114
23093
  type: "button",
23115
23094
  disabled: !canEdit,
23116
- className: chunk6GFSF2ML_js.cn(
23095
+ className: chunkAIA7CY5U_js.cn(
23117
23096
  "px-2 py-1 rounded text-[11px] transition-colors",
23118
23097
  cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
23119
23098
  ),
@@ -23131,7 +23110,7 @@ function TableCellFormattingPanel({
23131
23110
  {
23132
23111
  type: "button",
23133
23112
  disabled: !canEdit,
23134
- className: chunk6GFSF2ML_js.cn(
23113
+ className: chunkAIA7CY5U_js.cn(
23135
23114
  "px-2 py-1 rounded text-[11px] transition-colors",
23136
23115
  cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
23137
23116
  ),
@@ -23154,7 +23133,7 @@ function TableCellFormattingPanel({
23154
23133
  DebouncedColorInput,
23155
23134
  {
23156
23135
  disabled: !canEdit,
23157
- value: chunk6GFSF2ML_js.normalizeHexColor(cs[colorKey], "#374151"),
23136
+ value: chunkAIA7CY5U_js.normalizeHexColor(cs[colorKey], "#374151"),
23158
23137
  className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
23159
23138
  onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
23160
23139
  }
@@ -23164,7 +23143,7 @@ function TableCellFormattingPanel({
23164
23143
  {
23165
23144
  type: "number",
23166
23145
  disabled: !canEdit,
23167
- className: chunk6GFSF2ML_js.cn(INPUT2, "w-14"),
23146
+ className: chunkAIA7CY5U_js.cn(INPUT2, "w-14"),
23168
23147
  min: 0,
23169
23148
  max: 10,
23170
23149
  value: pptx.inspectorNumber(cs[widthKey], 1),
@@ -23180,7 +23159,7 @@ function TableCellFormattingPanel({
23180
23159
  {
23181
23160
  type: "button",
23182
23161
  disabled: !canEdit,
23183
- className: chunk6GFSF2ML_js.cn(BTN2, "text-center"),
23162
+ className: chunkAIA7CY5U_js.cn(BTN2, "text-center"),
23184
23163
  onClick: () => {
23185
23164
  const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
23186
23165
  if (newRows) {
@@ -23195,7 +23174,7 @@ function TableCellFormattingPanel({
23195
23174
  {
23196
23175
  type: "button",
23197
23176
  disabled: !canEdit,
23198
- className: chunk6GFSF2ML_js.cn(BTN2, "text-center"),
23177
+ className: chunkAIA7CY5U_js.cn(BTN2, "text-center"),
23199
23178
  onClick: () => {
23200
23179
  const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
23201
23180
  if (newRows) {
@@ -23210,7 +23189,7 @@ function TableCellFormattingPanel({
23210
23189
  {
23211
23190
  type: "button",
23212
23191
  disabled: !canEdit,
23213
- className: chunk6GFSF2ML_js.cn(BTN2, "text-center"),
23192
+ className: chunkAIA7CY5U_js.cn(BTN2, "text-center"),
23214
23193
  onClick: () => {
23215
23194
  const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
23216
23195
  if (newRows) {
@@ -23229,7 +23208,7 @@ function TableStyleEditorFields({
23229
23208
  canEdit,
23230
23209
  onEdit
23231
23210
  }) {
23232
- const { t } = chunk6GFSF2ML_js.useTranslation();
23211
+ const { t } = chunkAIA7CY5U_js.useTranslation();
23233
23212
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
23234
23213
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
23235
23214
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.tableStyleEditor.fillSection") }),
@@ -23334,7 +23313,7 @@ function BorderSideRow({
23334
23313
  canEdit,
23335
23314
  onEdit
23336
23315
  }) {
23337
- const { t } = chunk6GFSF2ML_js.useTranslation();
23316
+ const { t } = chunkAIA7CY5U_js.useTranslation();
23338
23317
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-[11px]", children: [
23339
23318
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 shrink-0 text-muted-foreground", children: t(pptx.TABLE_STYLE_BORDER_SIDE_LABEL_KEYS[side]) }),
23340
23319
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -23391,7 +23370,7 @@ function TableStyleEditor({
23391
23370
  onAssignStyle,
23392
23371
  onClose
23393
23372
  }) {
23394
- const { t } = chunk6GFSF2ML_js.useTranslation();
23373
+ const { t } = chunkAIA7CY5U_js.useTranslation();
23395
23374
  const themeColorMap = useThemeColorMap();
23396
23375
  const [activeStyleId, setActiveStyleId] = React108.useState(
23397
23376
  styleId ? pptx$1.normalizeTableStyleGuid(styleId) : ""
@@ -23483,7 +23462,7 @@ function TablePropertiesPanel({
23483
23462
  onTableStyleMapChange,
23484
23463
  onDeleteTableStyle
23485
23464
  }) {
23486
- const { t } = chunk6GFSF2ML_js.useTranslation();
23465
+ const { t } = chunkAIA7CY5U_js.useTranslation();
23487
23466
  const [showStyleEditor, setShowStyleEditor] = React108.useState(false);
23488
23467
  const td = tableElement.tableData;
23489
23468
  if (!td) {
@@ -23565,7 +23544,7 @@ function TablePropertiesPanel({
23565
23544
  ] }),
23566
23545
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
23567
23546
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
23568
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunk6GFSF2ML_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
23547
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkAIA7CY5U_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
23569
23548
  "button",
23570
23549
  {
23571
23550
  type: "button",
@@ -23713,7 +23692,7 @@ function ElementInspectorBody({
23713
23692
  onUpdateTextStyle,
23714
23693
  onMoveLayer
23715
23694
  }) {
23716
- const { t } = chunk6GFSF2ML_js.useTranslation();
23695
+ const { t } = chunkAIA7CY5U_js.useTranslation();
23717
23696
  const isLocked = pptx.isElementLocked(selectedElement);
23718
23697
  const handleToggleLock = () => {
23719
23698
  if (!canEdit) {
@@ -23863,7 +23842,7 @@ function CommentMentionTextarea({
23863
23842
  className,
23864
23843
  ariaLabel
23865
23844
  }) {
23866
- const { t } = chunk6GFSF2ML_js.useTranslation();
23845
+ const { t } = chunkAIA7CY5U_js.useTranslation();
23867
23846
  const textareaRef = React108.useRef(null);
23868
23847
  const [caret, setCaret] = React108.useState(value.length);
23869
23848
  const [highlighted, setHighlighted] = React108.useState(0);
@@ -23952,7 +23931,7 @@ function CommentMentionTextarea({
23952
23931
  "data-testid": "pptx-comment-mention-option",
23953
23932
  role: "option",
23954
23933
  "aria-selected": index === safeHighlighted,
23955
- className: chunk6GFSF2ML_js.cn(
23934
+ className: chunkAIA7CY5U_js.cn(
23956
23935
  "block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
23957
23936
  index === safeHighlighted && "bg-accent"
23958
23937
  ),
@@ -23999,7 +23978,7 @@ function InspectorCommentReplyForm({
23999
23978
  onSubmit,
24000
23979
  onCancel
24001
23980
  }) {
24002
- const { t } = chunk6GFSF2ML_js.useTranslation();
23981
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24003
23982
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 space-y-1.5 pl-3 border-l-2 border-l-primary/40", children: [
24004
23983
  /* @__PURE__ */ jsxRuntime.jsx(
24005
23984
  CommentMentionTextarea,
@@ -24065,7 +24044,7 @@ function InspectorCommentRow({
24065
24044
  onSelectElement,
24066
24045
  depth = 0
24067
24046
  }) {
24068
- const { t } = chunk6GFSF2ML_js.useTranslation();
24047
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24069
24048
  const isEditing = editingCommentId === comment.id;
24070
24049
  const isReplying = replyingToCommentId === comment.id;
24071
24050
  const replyDraft = replyDraftByCommentId[comment.id] ?? "";
@@ -24075,7 +24054,7 @@ function InspectorCommentRow({
24075
24054
  return /* @__PURE__ */ jsxRuntime.jsxs(
24076
24055
  "div",
24077
24056
  {
24078
- className: chunk6GFSF2ML_js.cn(
24057
+ className: chunkAIA7CY5U_js.cn(
24079
24058
  "rounded border border-border bg-card p-2",
24080
24059
  depth > 0 && "ml-3 border-l-2 border-l-primary/40"
24081
24060
  ),
@@ -24089,7 +24068,7 @@ function InspectorCommentRow({
24089
24068
  t("pptx.comments.resolved")
24090
24069
  ] })
24091
24070
  ] }),
24092
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunk6GFSF2ML_js.formatCommentTimestamp(comment.createdAt) })
24071
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkAIA7CY5U_js.formatCommentTimestamp(comment.createdAt) })
24093
24072
  ] }),
24094
24073
  comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
24095
24074
  "button",
@@ -24097,12 +24076,12 @@ function InspectorCommentRow({
24097
24076
  type: "button",
24098
24077
  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",
24099
24078
  title: t("pptx.comments.commentingOn", {
24100
- element: chunk6GFSF2ML_js.getElementLabel(targetElement)
24079
+ element: chunkAIA7CY5U_js.getElementLabel(targetElement)
24101
24080
  }),
24102
24081
  onClick: () => onSelectElement(targetElement.id),
24103
24082
  children: [
24104
24083
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
24105
- chunk6GFSF2ML_js.getElementLabel(targetElement)
24084
+ chunkAIA7CY5U_js.getElementLabel(targetElement)
24106
24085
  ]
24107
24086
  }
24108
24087
  ) : /* @__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") })),
@@ -24171,7 +24150,7 @@ function InspectorCommentRow({
24171
24150
  "button",
24172
24151
  {
24173
24152
  type: "button",
24174
- className: chunk6GFSF2ML_js.cn(
24153
+ className: chunkAIA7CY5U_js.cn(
24175
24154
  "inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
24176
24155
  comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
24177
24156
  ),
@@ -24277,7 +24256,7 @@ function InspectorCommentsSection({
24277
24256
  onSubmitReply,
24278
24257
  onSelectElement
24279
24258
  }) {
24280
- const { t } = chunk6GFSF2ML_js.useTranslation();
24259
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24281
24260
  const HEADING_CLS = "text-[11px] uppercase tracking-wide text-muted-foreground";
24282
24261
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
24283
24262
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
@@ -24314,7 +24293,7 @@ function InspectorCommentsSection({
24314
24293
  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: [
24315
24294
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
24316
24295
  t("pptx.comments.commentingOn", {
24317
- element: chunk6GFSF2ML_js.getElementLabel(selectedElement)
24296
+ element: chunkAIA7CY5U_js.getElementLabel(selectedElement)
24318
24297
  })
24319
24298
  ] }),
24320
24299
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -24325,7 +24304,7 @@ function InspectorCommentsSection({
24325
24304
  authors: commentAuthors,
24326
24305
  rows: 2,
24327
24306
  placeholder: selectedElement ? t("pptx.comments.addOnElement", {
24328
- element: chunk6GFSF2ML_js.getElementLabel(selectedElement)
24307
+ element: chunkAIA7CY5U_js.getElementLabel(selectedElement)
24329
24308
  }) : t("pptx.comments.addPlaceholder"),
24330
24309
  className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
24331
24310
  onChange: onSetCommentDraft,
@@ -24338,7 +24317,7 @@ function InspectorCommentsSection({
24338
24317
  type: "button",
24339
24318
  onClick: onAddComment,
24340
24319
  disabled: !commentDraft.trim(),
24341
- className: chunk6GFSF2ML_js.cn(
24320
+ className: chunkAIA7CY5U_js.cn(
24342
24321
  "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]!",
24343
24322
  commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
24344
24323
  ),
@@ -24363,7 +24342,7 @@ function InspectorElementsTab({
24363
24342
  onSelectElement,
24364
24343
  onUpdateSlide
24365
24344
  }) {
24366
- const { t } = chunk6GFSF2ML_js.useTranslation();
24345
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24367
24346
  const toggleHidden = (elementId2) => {
24368
24347
  const elements2 = activeSlide?.elements;
24369
24348
  if (!canEdit || !elements2) {
@@ -24379,13 +24358,13 @@ function InspectorElementsTab({
24379
24358
  };
24380
24359
  if (!activeSlide) {
24381
24360
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
24382
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk6GFSF2ML_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24361
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkAIA7CY5U_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24383
24362
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
24384
24363
  ] });
24385
24364
  }
24386
24365
  const elements = activeSlide.elements || [];
24387
24366
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
24388
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk6GFSF2ML_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24367
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkAIA7CY5U_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24389
24368
  [...elements].reverse().map((el, reversedIndex) => {
24390
24369
  const index = elements.length - 1 - reversedIndex;
24391
24370
  const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
@@ -24393,7 +24372,7 @@ function InspectorElementsTab({
24393
24372
  "div",
24394
24373
  {
24395
24374
  title: `${el.type} - ${el.id}`,
24396
- className: chunk6GFSF2ML_js.cn(
24375
+ className: chunkAIA7CY5U_js.cn(
24397
24376
  "flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
24398
24377
  selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
24399
24378
  ),
@@ -24429,8 +24408,8 @@ function InspectorPaneHeader({
24429
24408
  onSetActiveTab,
24430
24409
  onClose
24431
24410
  }) {
24432
- const { t } = chunk6GFSF2ML_js.useTranslation();
24433
- const { viewportWidth } = chunkSEIVQGH5_js.useIsMobile();
24411
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24412
+ const { viewportWidth } = chunk5CJHRYFK_js.useIsMobile();
24434
24413
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
24435
24414
  const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
24436
24415
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -24453,7 +24432,7 @@ function InspectorPaneHeader({
24453
24432
  type: "button",
24454
24433
  title: t(labelKey),
24455
24434
  style: touchBtnStyle,
24456
- className: chunk6GFSF2ML_js.cn(
24435
+ className: chunkAIA7CY5U_js.cn(
24457
24436
  "flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
24458
24437
  activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
24459
24438
  ),
@@ -24513,7 +24492,7 @@ function CustomPropertiesBlock({
24513
24492
  canEdit,
24514
24493
  onUpdate
24515
24494
  }) {
24516
- const { t } = chunk6GFSF2ML_js.useTranslation();
24495
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24517
24496
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
24518
24497
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
24519
24498
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.documentProperties.custom.heading") }),
@@ -24567,7 +24546,7 @@ function CustomPropertiesBlock({
24567
24546
  "button",
24568
24547
  {
24569
24548
  type: "button",
24570
- className: chunk6GFSF2ML_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
24549
+ className: chunkAIA7CY5U_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
24571
24550
  onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
24572
24551
  children: "\xD7"
24573
24552
  }
@@ -24580,7 +24559,7 @@ function NotesHandoutCard({
24580
24559
  notesMaster,
24581
24560
  handoutMaster
24582
24561
  }) {
24583
- const { t } = chunk6GFSF2ML_js.useTranslation();
24562
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24584
24563
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
24585
24564
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.notesHandoutHeading") }),
24586
24565
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px] text-muted-foreground", children: [
@@ -24617,7 +24596,7 @@ function DocumentPropertiesCard({
24617
24596
  onUpdateAppProperties,
24618
24597
  onUpdateCustomProperties
24619
24598
  }) {
24620
- const { t } = chunk6GFSF2ML_js.useTranslation();
24599
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24621
24600
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
24622
24601
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.documentHeading") }),
24623
24602
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px] text-muted-foreground", children: [
@@ -24671,7 +24650,7 @@ function DocumentPropertiesCard({
24671
24650
  function SlideSizeRescalePrompt({
24672
24651
  onChoose
24673
24652
  }) {
24674
- const { t } = chunk6GFSF2ML_js.useTranslation();
24653
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24675
24654
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 rounded border border-border bg-muted/40 p-2 text-[11px]", children: [
24676
24655
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: t("pptx.slideSize.rescaleTitle") }),
24677
24656
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: t("pptx.slideSize.rescaleDescription") }),
@@ -24713,7 +24692,7 @@ function SlideSizeCard({
24713
24692
  onUpdateSlideSize,
24714
24693
  hasContent
24715
24694
  }) {
24716
- const { t } = chunk6GFSF2ML_js.useTranslation();
24695
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24717
24696
  const selection = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize });
24718
24697
  const presetDisabled = !canEdit || !onUpdateSlideSize;
24719
24698
  const [pendingSize, setPendingSize] = React108.useState(null);
@@ -24824,7 +24803,7 @@ function PresentationSettingsCard({
24824
24803
  canEdit,
24825
24804
  onUpdate
24826
24805
  }) {
24827
- const { t } = chunk6GFSF2ML_js.useTranslation();
24806
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24828
24807
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${CARD2} pptx-editor-presentation-card`, children: [
24829
24808
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideInspector.presentation") }),
24830
24809
  /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "presentation-fields", className: "space-y-1.5 text-[11px]", children: [
@@ -24895,7 +24874,7 @@ function PresentationSettingsCard({
24895
24874
  min: 1,
24896
24875
  max: 16,
24897
24876
  disabled: !canEdit,
24898
- className: chunk6GFSF2ML_js.cn(INPUT2, "w-20"),
24877
+ className: chunkAIA7CY5U_js.cn(INPUT2, "w-20"),
24899
24878
  value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
24900
24879
  onChange: (e) => onUpdate({
24901
24880
  printProperties: pptx.withSlidesPerPage(
@@ -24916,7 +24895,7 @@ function ThemeSelectorCard({
24916
24895
  canEdit,
24917
24896
  onApplyTheme
24918
24897
  }) {
24919
- const { t } = chunk6GFSF2ML_js.useTranslation();
24898
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24920
24899
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
24921
24900
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.themeHeading") }),
24922
24901
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
@@ -24979,7 +24958,7 @@ function SlideThemeOverridePanel({
24979
24958
  canEdit,
24980
24959
  onUpdateSlide
24981
24960
  }) {
24982
- const { t } = chunk6GFSF2ML_js.useTranslation();
24961
+ const { t } = chunkAIA7CY5U_js.useTranslation();
24983
24962
  const translate = React108.useCallback((key) => t(key), [t]);
24984
24963
  const override = activeSlide?.clrMapOverride;
24985
24964
  const isOverrideActive = override !== void 0;
@@ -25086,7 +25065,7 @@ function DirectionPicker({
25086
25065
  disabled,
25087
25066
  onChange
25088
25067
  }) {
25089
- const { t } = chunk6GFSF2ML_js.useTranslation();
25068
+ const { t } = chunkAIA7CY5U_js.useTranslation();
25090
25069
  if (directions.length <= 3) {
25091
25070
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: directions.map((dir) => /* @__PURE__ */ jsxRuntime.jsx(
25092
25071
  "button",
@@ -25128,10 +25107,10 @@ function TransitionPreview({
25128
25107
  const previewRef = React108.useRef(null);
25129
25108
  const [playing, setPlaying] = React108.useState(false);
25130
25109
  const [animKey, setAnimKey] = React108.useState(0);
25131
- const { t } = chunk6GFSF2ML_js.useTranslation();
25110
+ const { t } = chunkAIA7CY5U_js.useTranslation();
25132
25111
  const durationMs = transition.durationMs ?? 500;
25133
25112
  const animations = React108.useMemo(
25134
- () => chunkSEIVQGH5_js.getSlideTransitionAnimations(
25113
+ () => chunk5CJHRYFK_js.getSlideTransitionAnimations(
25135
25114
  transition.type,
25136
25115
  durationMs,
25137
25116
  transition.direction,
@@ -25200,7 +25179,7 @@ function TransitionPreview({
25200
25179
  ]
25201
25180
  }
25202
25181
  ),
25203
- /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkSEIVQGH5_js.SLIDE_TRANSITION_KEYFRAMES })
25182
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk5CJHRYFK_js.SLIDE_TRANSITION_KEYFRAMES })
25204
25183
  ] });
25205
25184
  }
25206
25185
  var DEFAULT_DURATION_MS = 320;
@@ -25212,7 +25191,7 @@ function SlideTransitionSection({
25212
25191
  canEdit = true,
25213
25192
  onTransitionChange
25214
25193
  }) {
25215
- const { t } = chunk6GFSF2ML_js.useTranslation();
25194
+ const { t } = chunkAIA7CY5U_js.useTranslation();
25216
25195
  if (!activeSlide) {
25217
25196
  return null;
25218
25197
  }
@@ -25243,7 +25222,7 @@ function SlideTransitionSection({
25243
25222
  type: e.target.value
25244
25223
  }),
25245
25224
  className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
25246
- children: chunk6GFSF2ML_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
25225
+ children: chunkAIA7CY5U_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
25247
25226
  }
25248
25227
  )
25249
25228
  ] }),
@@ -25401,7 +25380,7 @@ function TagsSection({
25401
25380
  onUpdateTagCollections,
25402
25381
  canEdit
25403
25382
  }) {
25404
- const { t } = chunk6GFSF2ML_js.useTranslation();
25383
+ const { t } = chunkAIA7CY5U_js.useTranslation();
25405
25384
  const [collapsed, setCollapsed] = React108.useState(true);
25406
25385
  const allTags = pptx.flattenTagCollections(tagCollections);
25407
25386
  const updateTag = (colIdx, tagIdx, field, newValue) => {
@@ -25459,7 +25438,7 @@ function TagsSection({
25459
25438
  "button",
25460
25439
  {
25461
25440
  type: "button",
25462
- className: chunk6GFSF2ML_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
25441
+ className: chunkAIA7CY5U_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
25463
25442
  title: t("pptx.tags.deleteTag"),
25464
25443
  onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
25465
25444
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
@@ -25501,7 +25480,7 @@ function PresentationPropertiesPanel({
25501
25480
  tagCollections,
25502
25481
  onUpdateTagCollections
25503
25482
  }) {
25504
- const { t } = chunk6GFSF2ML_js.useTranslation();
25483
+ const { t } = chunkAIA7CY5U_js.useTranslation();
25505
25484
  const handleTransitionChange = React108__default.default.useCallback(
25506
25485
  (updates) => {
25507
25486
  onUpdateSlide({
@@ -25588,7 +25567,7 @@ function PresentationPropertiesPanel({
25588
25567
  canEdit
25589
25568
  }
25590
25569
  ) }),
25591
- activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunk6GFSF2ML_js.cn(CARD2, "space-y-1"), children: [
25570
+ activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunkAIA7CY5U_js.cn(CARD2, "space-y-1"), children: [
25592
25571
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
25593
25572
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
25594
25573
  activeSlide.elements?.length ?? 0,
@@ -25606,17 +25585,17 @@ function SlideBackgroundPanel({
25606
25585
  onSetTemplateBackground,
25607
25586
  onGetTemplateBackgroundColor
25608
25587
  }) {
25609
- const { t } = chunk6GFSF2ML_js.useTranslation();
25588
+ const { t } = chunkAIA7CY5U_js.useTranslation();
25610
25589
  const bgImageInputRef = React108.useRef(null);
25611
25590
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
25612
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk6GFSF2ML_js.cn(CARD2, "space-y-2"), children: [
25591
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkAIA7CY5U_js.cn(CARD2, "space-y-2"), children: [
25613
25592
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
25614
25593
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
25615
25594
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
25616
25595
  /* @__PURE__ */ jsxRuntime.jsx(
25617
25596
  DebouncedColorInput,
25618
25597
  {
25619
- value: chunk6GFSF2ML_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
25598
+ value: chunkAIA7CY5U_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
25620
25599
  disabled: !canEdit,
25621
25600
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
25622
25601
  onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
@@ -25655,7 +25634,7 @@ function SlideBackgroundPanel({
25655
25634
  "button",
25656
25635
  {
25657
25636
  type: "button",
25658
- className: chunk6GFSF2ML_js.cn(BTN2, "flex-1 text-center"),
25637
+ className: chunkAIA7CY5U_js.cn(BTN2, "flex-1 text-center"),
25659
25638
  disabled: !canEdit,
25660
25639
  onClick: () => bgImageInputRef.current?.click(),
25661
25640
  children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
@@ -25688,7 +25667,7 @@ function SlideBackgroundPanel({
25688
25667
  "button",
25689
25668
  {
25690
25669
  type: "button",
25691
- className: chunk6GFSF2ML_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
25670
+ className: chunkAIA7CY5U_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
25692
25671
  disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
25693
25672
  onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
25694
25673
  children: t("pptx.slideBackground.clearBackground")
@@ -25725,21 +25704,21 @@ function TemplateBackgroundCard({
25725
25704
  onSetTemplateBackground,
25726
25705
  onGetTemplateBackgroundColor
25727
25706
  }) {
25728
- const { t } = chunk6GFSF2ML_js.useTranslation();
25707
+ const { t } = chunkAIA7CY5U_js.useTranslation();
25729
25708
  const rows = pptx.resolveTemplateBackgroundRows(
25730
25709
  activeSlide,
25731
25710
  slideMasters,
25732
25711
  t("pptx.master.layout"),
25733
25712
  t("pptx.master.master")
25734
25713
  );
25735
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk6GFSF2ML_js.cn(CARD2, "space-y-2"), children: [
25714
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkAIA7CY5U_js.cn(CARD2, "space-y-2"), children: [
25736
25715
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
25737
25716
  rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
25738
25717
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
25739
25718
  /* @__PURE__ */ jsxRuntime.jsx(
25740
25719
  DebouncedColorInput,
25741
25720
  {
25742
- value: chunk6GFSF2ML_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
25721
+ value: chunkAIA7CY5U_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
25743
25722
  disabled: !canEdit,
25744
25723
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
25745
25724
  onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
@@ -25752,7 +25731,7 @@ function TemplateBackgroundCard({
25752
25731
  /* @__PURE__ */ jsxRuntime.jsx(
25753
25732
  DebouncedColorInput,
25754
25733
  {
25755
- value: chunk6GFSF2ML_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
25734
+ value: chunkAIA7CY5U_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
25756
25735
  disabled: !canEdit,
25757
25736
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
25758
25737
  onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
@@ -25862,8 +25841,8 @@ function InspectorPane(props) {
25862
25841
  panelWidth
25863
25842
  } = props;
25864
25843
  const hasSelection = selectedElement !== null;
25865
- const { t } = chunk6GFSF2ML_js.useTranslation();
25866
- const { dragY, handlers: dragHandlers } = chunkSEIVQGH5_js.useSheetDismissDrag(onClose);
25844
+ const { t } = chunkAIA7CY5U_js.useTranslation();
25845
+ const { dragY, handlers: dragHandlers } = chunk5CJHRYFK_js.useSheetDismissDrag(onClose);
25867
25846
  const {
25868
25847
  animationPanelHeight,
25869
25848
  effectiveThemeOptions,
@@ -25885,7 +25864,7 @@ function InspectorPane(props) {
25885
25864
  "div",
25886
25865
  {
25887
25866
  "data-pptx-chrome": "inspector",
25888
- className: chunk6GFSF2ML_js.cn(
25867
+ className: chunkAIA7CY5U_js.cn(
25889
25868
  // Shared styles
25890
25869
  "bg-background flex flex-col text-xs text-foreground shadow-xl",
25891
25870
  // Mobile: absolute bottom sheet overlay sized via dvh so it
@@ -26216,7 +26195,7 @@ function PresentationAnnotationOverlay({
26216
26195
  );
26217
26196
  }
26218
26197
  function PresentationToolbar(p) {
26219
- const { t } = chunk6GFSF2ML_js.useTranslation();
26198
+ const { t } = chunkAIA7CY5U_js.useTranslation();
26220
26199
  const ref = useWebControl(
26221
26200
  {
26222
26201
  current: p.currentSlideIndex,
@@ -26275,8 +26254,8 @@ function PresentationTouchControls({
26275
26254
  onEndPresentation,
26276
26255
  hideNavigation = false
26277
26256
  }) {
26278
- const { t } = chunk6GFSF2ML_js.useTranslation();
26279
- const { isTouchDevice } = chunkSEIVQGH5_js.useIsMobile();
26257
+ const { t } = chunkAIA7CY5U_js.useTranslation();
26258
+ const { isTouchDevice } = chunk5CJHRYFK_js.useIsMobile();
26280
26259
  if (!isTouchDevice) {
26281
26260
  return null;
26282
26261
  }
@@ -26358,7 +26337,7 @@ function KeepAnnotationsDialog({
26358
26337
  onKeep,
26359
26338
  onDiscard
26360
26339
  }) {
26361
- const { t } = chunk6GFSF2ML_js.useTranslation();
26340
+ const { t } = chunkAIA7CY5U_js.useTranslation();
26362
26341
  if (!isOpen) {
26363
26342
  return null;
26364
26343
  }
@@ -26406,7 +26385,7 @@ function PasteSpecialDialog({
26406
26385
  onCancel,
26407
26386
  onConfirm
26408
26387
  }) {
26409
- const { t } = chunk6GFSF2ML_js.useTranslation();
26388
+ const { t } = chunkAIA7CY5U_js.useTranslation();
26410
26389
  const [selected, setSelected] = React108.useState("keep-source-formatting");
26411
26390
  if (!isOpen) {
26412
26391
  return null;
@@ -26464,7 +26443,7 @@ function PasteOptionsToolbar({
26464
26443
  onChoose,
26465
26444
  onDismiss
26466
26445
  }) {
26467
- const { t } = chunk6GFSF2ML_js.useTranslation();
26446
+ const { t } = chunkAIA7CY5U_js.useTranslation();
26468
26447
  const [rect, setRect] = React108.useState(null);
26469
26448
  React108.useEffect(() => {
26470
26449
  const node = elementId2 ? pptx.findCanvasElementNode(document, elementId2, { canvasOnly: true }) : null;
@@ -26491,7 +26470,7 @@ function NotesPagePreview({
26491
26470
  frameSlides,
26492
26471
  maxPages = 3
26493
26472
  }) {
26494
- const { t } = chunk6GFSF2ML_js.useTranslation();
26473
+ const { t } = chunkAIA7CY5U_js.useTranslation();
26495
26474
  const pages = React108.useMemo(() => pptx.computeAllNotesPages(slideIndices), [slideIndices]);
26496
26475
  const printable = React108.useMemo(() => pptx.getNotesPrintableArea(), []);
26497
26476
  const visiblePages = pages.slice(0, maxPages);
@@ -26579,15 +26558,15 @@ function PrintPreview({
26579
26558
  frameSlides,
26580
26559
  maxPages = 3
26581
26560
  }) {
26582
- const { t } = chunk6GFSF2ML_js.useTranslation();
26561
+ const { t } = chunkAIA7CY5U_js.useTranslation();
26583
26562
  const pages = React108.useMemo(
26584
- () => chunk6GFSF2ML_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
26563
+ () => chunkAIA7CY5U_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
26585
26564
  [slideIndices, slidesPerPage, orientation]
26586
26565
  );
26587
- const printable = React108.useMemo(() => chunk6GFSF2ML_js.getPrintableArea(orientation), [orientation]);
26566
+ const printable = React108.useMemo(() => chunkAIA7CY5U_js.getPrintableArea(orientation), [orientation]);
26588
26567
  const visiblePages = pages.slice(0, maxPages);
26589
26568
  const isThreePerPage = slidesPerPage === 3;
26590
- const noteLineCount = chunk6GFSF2ML_js.generateNoteLineCount();
26569
+ const noteLineCount = chunkAIA7CY5U_js.generateNoteLineCount();
26591
26570
  const scaledW = printable.width * PREVIEW_SCALE3;
26592
26571
  const scaledH = printable.height * PREVIEW_SCALE3;
26593
26572
  const noteAreaFraction = 0.5;
@@ -26685,7 +26664,7 @@ function PrintSettingsPanel({
26685
26664
  totalSlides,
26686
26665
  activeSlideIndex
26687
26666
  }) {
26688
- const { t } = chunk6GFSF2ML_js.useTranslation();
26667
+ const { t } = chunkAIA7CY5U_js.useTranslation();
26689
26668
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-5 min-w-0", children: [
26690
26669
  /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
26691
26670
  /* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-xs font-medium text-muted-foreground mb-2 uppercase tracking-wide", children: t("pptx.print.printWhat") }),
@@ -26921,13 +26900,13 @@ function PrintDialog({
26921
26900
  defaultSlidesPerPage,
26922
26901
  defaultFrameSlides
26923
26902
  }) {
26924
- const { t } = chunk6GFSF2ML_js.useTranslation();
26903
+ const { t } = chunkAIA7CY5U_js.useTranslation();
26925
26904
  const regionRenderer = useRegionRenderer("dialog.print");
26926
- const { panelStyle, handlers: dragHandlers } = chunkSEIVQGH5_js.useModalDismissDrag(onClose);
26927
- const { viewportWidth } = chunkSEIVQGH5_js.useIsMobile();
26905
+ const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(onClose);
26906
+ const { viewportWidth } = chunk5CJHRYFK_js.useIsMobile();
26928
26907
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
26929
26908
  const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
26930
- const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkSEIVQGH5_js.useViewerOptionsContext());
26909
+ const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunk5CJHRYFK_js.useViewerOptionsContext());
26931
26910
  const [printWhat, setPrintWhat] = React108.useState(printOptionDefaults?.printWhat ?? "slides");
26932
26911
  const [orientation, setOrientation] = React108.useState("landscape");
26933
26912
  const [colorMode, setColorMode] = React108.useState(
@@ -27111,7 +27090,7 @@ function ShowOptionsFieldset({
27111
27090
  draft,
27112
27091
  update
27113
27092
  }) {
27114
- const { t } = chunk6GFSF2ML_js.useTranslation();
27093
+ const { t } = chunkAIA7CY5U_js.useTranslation();
27115
27094
  return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
27116
27095
  /* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showOptions") }),
27117
27096
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
@@ -27169,7 +27148,7 @@ function ShowSlidesFieldset({
27169
27148
  slideCount,
27170
27149
  customShows
27171
27150
  }) {
27172
- const { t } = chunk6GFSF2ML_js.useTranslation();
27151
+ const { t } = chunkAIA7CY5U_js.useTranslation();
27173
27152
  return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
27174
27153
  /* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showSlides") }),
27175
27154
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
@@ -27272,7 +27251,7 @@ function SetUpSlideShowDialog({
27272
27251
  customShows,
27273
27252
  slideCount
27274
27253
  }) {
27275
- const { t } = chunk6GFSF2ML_js.useTranslation();
27254
+ const { t } = chunkAIA7CY5U_js.useTranslation();
27276
27255
  const [draft, setDraft] = React108.useState({
27277
27256
  ...properties
27278
27257
  });
@@ -27408,16 +27387,16 @@ function BroadcastDialog({
27408
27387
  defaultUserName,
27409
27388
  defaultServerUrl
27410
27389
  }) {
27411
- const { t } = chunk6GFSF2ML_js.useTranslation();
27390
+ const { t } = chunkAIA7CY5U_js.useTranslation();
27412
27391
  const regionRenderer = useRegionRenderer("dialog.broadcast");
27413
- const collab = chunkSEIVQGH5_js.useCollaboration();
27392
+ const collab = chunk5CJHRYFK_js.useCollaboration();
27414
27393
  const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
27415
27394
  const [roomId, setRoomId] = React108.useState("");
27416
27395
  const [userName, setUserName] = React108.useState("");
27417
27396
  const [serverUrl, setServerUrl] = React108.useState("");
27418
27397
  const [copied, setCopied] = React108.useState(false);
27419
27398
  const dialogRef = React108.useRef(null);
27420
- const { panelStyle, handlers: dragHandlers } = chunkSEIVQGH5_js.useModalDismissDrag(onClose);
27399
+ const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(onClose);
27421
27400
  useModalFocus(open, dialogRef, onClose);
27422
27401
  React108.useEffect(() => {
27423
27402
  if (open && !isBroadcasting) {
@@ -27576,7 +27555,7 @@ function StartBroadcastForm({
27576
27555
  onUserNameChange,
27577
27556
  onServerUrlChange
27578
27557
  }) {
27579
- const { t } = chunk6GFSF2ML_js.useTranslation();
27558
+ const { t } = chunkAIA7CY5U_js.useTranslation();
27580
27559
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
27581
27560
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-muted-foreground leading-relaxed", children: t("pptx.broadcast.description") }),
27582
27561
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
@@ -27652,7 +27631,7 @@ function ActiveBroadcastView({
27652
27631
  onCopyUrl,
27653
27632
  onStopBroadcast
27654
27633
  }) {
27655
- const { t } = chunk6GFSF2ML_js.useTranslation();
27634
+ const { t } = chunkAIA7CY5U_js.useTranslation();
27656
27635
  const statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400";
27657
27636
  const 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" });
27658
27637
  const viewerCount = collab.remoteUsers.filter((u) => u.role === "viewer").length;
@@ -27733,7 +27712,7 @@ function ActiveSessionView({
27733
27712
  onCopyRoomId,
27734
27713
  onStopCollaboration
27735
27714
  }) {
27736
- const { t } = chunk6GFSF2ML_js.useTranslation(), viewerOptions = chunkSEIVQGH5_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({
27715
+ const { t } = chunkAIA7CY5U_js.useTranslation(), viewerOptions = chunk5CJHRYFK_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({
27737
27716
  localUserName: activeCollaboration?.userName ?? collab.config.userName,
27738
27717
  localUserInitials: viewerOptions.general.userInitials,
27739
27718
  localUserColor: collab.config.userColor,
@@ -27831,8 +27810,8 @@ function StartSessionForm({
27831
27810
  connectionFailed,
27832
27811
  onRetry
27833
27812
  }) {
27834
- const { t } = chunk6GFSF2ML_js.useTranslation();
27835
- const { viewportWidth } = chunkSEIVQGH5_js.useIsMobile();
27813
+ const { t } = chunkAIA7CY5U_js.useTranslation();
27814
+ const { viewportWidth } = chunk5CJHRYFK_js.useIsMobile();
27836
27815
  const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
27837
27816
  const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
27838
27817
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
@@ -27966,9 +27945,9 @@ function ShareDialog({
27966
27945
  defaultUserName,
27967
27946
  defaultServerUrl
27968
27947
  }) {
27969
- const collab = chunkSEIVQGH5_js.useCollaboration();
27948
+ const collab = chunk5CJHRYFK_js.useCollaboration();
27970
27949
  const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
27971
- const { t } = chunk6GFSF2ML_js.useTranslation();
27950
+ const { t } = chunkAIA7CY5U_js.useTranslation();
27972
27951
  const regionRenderer = useRegionRenderer("dialog.share");
27973
27952
  const [roomId, setRoomId] = React108.useState(defaultRoomId ?? "");
27974
27953
  const [userName, setUserName] = React108.useState(defaultUserName ?? "");
@@ -27977,9 +27956,9 @@ function ShareDialog({
27977
27956
  const [invitation, setInvitation] = React108.useState("");
27978
27957
  const [copied, setCopied] = React108.useState(false);
27979
27958
  const dialogRef = React108.useRef(null);
27980
- const { panelStyle, handlers: dragHandlers } = chunkSEIVQGH5_js.useModalDismissDrag(onClose);
27959
+ const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(onClose);
27981
27960
  useModalFocus(open, dialogRef, onClose);
27982
- const { viewportWidth, viewportHeight } = chunkSEIVQGH5_js.useIsMobile();
27961
+ const { viewportWidth, viewportHeight } = chunk5CJHRYFK_js.useIsMobile();
27983
27962
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
27984
27963
  const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
27985
27964
  const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
@@ -28152,7 +28131,7 @@ function HyperlinkTabContent({
28152
28131
  inputCls,
28153
28132
  onEnterConfirm
28154
28133
  }) {
28155
- const { t } = chunk6GFSF2ML_js.useTranslation();
28134
+ const { t } = chunkAIA7CY5U_js.useTranslation();
28156
28135
  const handleEnterKey = (e) => {
28157
28136
  if (e.key === "Enter") {
28158
28137
  onEnterConfirm();
@@ -28277,12 +28256,12 @@ function HyperlinkEditDialog({
28277
28256
  onConfirm,
28278
28257
  onCancel
28279
28258
  }) {
28280
- const { t } = chunk6GFSF2ML_js.useTranslation();
28281
- const { panelStyle, handlers: dragHandlers } = chunkSEIVQGH5_js.useModalDismissDrag(onCancel);
28259
+ const { t } = chunkAIA7CY5U_js.useTranslation();
28260
+ const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(onCancel);
28282
28261
  const inputRef = React108.useRef(null);
28283
- const detectedType = chunkSEIVQGH5_js.detectHyperlinkTargetType(initialUrl, initialAction);
28284
- const emailParts = chunkSEIVQGH5_js.parseHyperlinkEmailUrl(initialUrl || "");
28285
- const detectedSlide = chunkSEIVQGH5_js.parseHyperlinkSlideNumber(initialUrl, initialAction);
28262
+ const detectedType = chunk5CJHRYFK_js.detectHyperlinkTargetType(initialUrl, initialAction);
28263
+ const emailParts = chunk5CJHRYFK_js.parseHyperlinkEmailUrl(initialUrl || "");
28264
+ const detectedSlide = chunk5CJHRYFK_js.parseHyperlinkSlideNumber(initialUrl, initialAction);
28286
28265
  const detectedVerb = initialAction ? pptx.HYPERLINK_ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
28287
28266
  const [targetType, setTargetType] = React108.useState(detectedType);
28288
28267
  const [url, setUrl] = React108.useState(
@@ -28314,7 +28293,7 @@ function HyperlinkEditDialog({
28314
28293
  actionVerb
28315
28294
  });
28316
28295
  };
28317
- const tabCls = (active) => chunk6GFSF2ML_js.cn(
28296
+ const tabCls = (active) => chunkAIA7CY5U_js.cn(
28318
28297
  "px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
28319
28298
  active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
28320
28299
  );
@@ -28562,7 +28541,7 @@ function ViewerBottomPanels({
28562
28541
  notesStyle,
28563
28542
  onNotesHeightChange
28564
28543
  }) {
28565
- const { isHidden } = chunkSEIVQGH5_js.useToolbarVisibility(hiddenActions);
28544
+ const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(hiddenActions);
28566
28545
  const customization = useViewerCustomizationContext();
28567
28546
  const showNotes = pptx.isPanelVisible(customization, "notes");
28568
28547
  const notesRenderer = useRegionRenderer("notes");
@@ -28693,7 +28672,7 @@ function ViewerInspector({
28693
28672
  onPreviewElement,
28694
28673
  elementById
28695
28674
  }) {
28696
- const { t } = chunk6GFSF2ML_js.useTranslation();
28675
+ const { t } = chunkAIA7CY5U_js.useTranslation();
28697
28676
  const regionRenderer = useRegionRenderer("inspector");
28698
28677
  const liveEdit = onPreviewElement ? {
28699
28678
  element: selectedElement,
@@ -28909,10 +28888,10 @@ function ViewerToolbarSection(props) {
28909
28888
  onSetShowGuides,
28910
28889
  ribbonDisplay
28911
28890
  } = props;
28912
- const { t } = chunk6GFSF2ML_js.useTranslation();
28891
+ const { t } = chunkAIA7CY5U_js.useTranslation();
28913
28892
  const customization = useViewerCustomizationContext();
28914
28893
  const ribbon = useRibbonDisplayFallback(ribbonDisplay);
28915
- const ribbonLayout = chunkSEIVQGH5_js.useController(ribbon).layout;
28894
+ const ribbonLayout = chunk5CJHRYFK_js.useController(ribbon).layout;
28916
28895
  const handleAddAnimation = React108.useCallback(
28917
28896
  (preset, group) => {
28918
28897
  if (!selectedElement || !activeSlide) {
@@ -28964,7 +28943,7 @@ function ViewerToolbarSection(props) {
28964
28943
  [activeSlide, propertyHandlers]
28965
28944
  );
28966
28945
  const scopedLayoutOptions = React108__default.default.useMemo(
28967
- () => chunkSEIVQGH5_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
28946
+ () => chunk5CJHRYFK_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
28968
28947
  [s.layoutOptions, activeSlide]
28969
28948
  );
28970
28949
  const handleResetSlide = React108.useCallback(() => {
@@ -29372,14 +29351,14 @@ function ViewerToolbarSection(props) {
29372
29351
  isMobileInsertOpen: s.isMobileInsertOpen,
29373
29352
  onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
29374
29353
  slideCommentCount: activeSlide?.comments?.length ?? 0,
29375
- reviewComments: chunkSEIVQGH5_js.createReviewCommentsHost({
29354
+ reviewComments: chunk5CJHRYFK_js.createReviewCommentsHost({
29376
29355
  state: s,
29377
29356
  activeSlideIndex,
29378
29357
  updateSlides: ops.updateSlides,
29379
29358
  markDirty: history.markDirty
29380
29359
  }),
29381
29360
  formatPainterActive: s.formatPainterActive,
29382
- canActivateFormatPainter: chunk6GFSF2ML_js.hasCopyableFormat(selectedElement),
29361
+ canActivateFormatPainter: chunkAIA7CY5U_js.hasCopyableFormat(selectedElement),
29383
29362
  onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
29384
29363
  isSelectionPaneOpen: s.isSelectionPaneOpen,
29385
29364
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -29488,14 +29467,14 @@ function CustomShowsDialog({
29488
29467
  onRun,
29489
29468
  onClose
29490
29469
  }) {
29491
- const { t } = chunk6GFSF2ML_js.useTranslation();
29470
+ const { t } = chunkAIA7CY5U_js.useTranslation();
29492
29471
  const controller = React108.useMemo(
29493
29472
  () => pptx.createCustomShowsController(customShows, activeCustomShowId),
29494
29473
  // A fresh draft per open: the host mounts this only while the dialog is open.
29495
29474
  // eslint-disable-next-line react-hooks/exhaustive-deps
29496
29475
  []
29497
29476
  );
29498
- chunkSEIVQGH5_js.useController(controller);
29477
+ chunk5CJHRYFK_js.useController(controller);
29499
29478
  const view = controller.view(slides);
29500
29479
  const [active, setActive] = React108.useState(activeCustomShowId ?? "");
29501
29480
  const pickerValue = view.shows.some(({ id }) => id === active) ? active : "";
@@ -29774,8 +29753,8 @@ function EquationEditorDialog({
29774
29753
  onInsert,
29775
29754
  existingOmml
29776
29755
  }) {
29777
- const { t } = chunk6GFSF2ML_js.useTranslation();
29778
- const { panelStyle, handlers: dragHandlers } = chunkSEIVQGH5_js.useModalDismissDrag(onClose);
29756
+ const { t } = chunkAIA7CY5U_js.useTranslation();
29757
+ const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(onClose);
29779
29758
  const initialLatex = React108.useMemo(() => {
29780
29759
  if (!existingOmml) {
29781
29760
  return "";
@@ -29897,7 +29876,7 @@ function EquationEditorDialog({
29897
29876
  {
29898
29877
  type: "button",
29899
29878
  onClick: () => handleTemplateClick(tmpl.latex),
29900
- className: chunk6GFSF2ML_js.cn(
29879
+ className: chunkAIA7CY5U_js.cn(
29901
29880
  "flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
29902
29881
  latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
29903
29882
  ),
@@ -29962,7 +29941,7 @@ function InsertSmartArtDialog({
29962
29941
  onInsert
29963
29942
  }) {
29964
29943
  const ref = React108.useRef(null);
29965
- const { t } = chunk6GFSF2ML_js.useTranslation();
29944
+ const { t } = chunkAIA7CY5U_js.useTranslation();
29966
29945
  React108.useLayoutEffect(() => {
29967
29946
  if (ref.current) {
29968
29947
  ref.current.translateLabel = t;
@@ -29986,7 +29965,7 @@ function InsertChartDialog({
29986
29965
  onInsert
29987
29966
  }) {
29988
29967
  const ref = React108.useRef(null);
29989
- const { t } = chunk6GFSF2ML_js.useTranslation();
29968
+ const { t } = chunkAIA7CY5U_js.useTranslation();
29990
29969
  React108.useLayoutEffect(() => {
29991
29970
  if (ref.current) {
29992
29971
  ref.current.translateLabel = t;
@@ -30384,10 +30363,10 @@ function useStageAnimationTriggers(root, slide, triggers, onStageClick) {
30384
30363
  };
30385
30364
  }
30386
30365
  function PresentationStage(props) {
30387
- const inherited = React108.useContext(chunkSEIVQGH5_js.ElementRenderErrorReportingContext);
30366
+ const inherited = React108.useContext(chunk5CJHRYFK_js.ElementRenderErrorReportingContext);
30388
30367
  const reporter = props.onElementRenderError ?? inherited?.onElementRenderError;
30389
30368
  const errorReporting = React108.useMemo(() => ({ onElementRenderError: reporter }), [reporter]);
30390
- return /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.ElementRenderErrorReportingContext.Provider, { value: errorReporting, children: /* @__PURE__ */ jsxRuntime.jsx(PresentationStageContent, { ...props }) });
30369
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ElementRenderErrorReportingContext.Provider, { value: errorReporting, children: /* @__PURE__ */ jsxRuntime.jsx(PresentationStageContent, { ...props }) });
30391
30370
  }
30392
30371
  function PresentationStageContent({
30393
30372
  activeSlide,
@@ -30499,11 +30478,11 @@ function PresentationStageContent({
30499
30478
  })
30500
30479
  },
30501
30480
  children: [
30502
- /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.SlideBackgroundImageLayer, { slide: activeSlide }),
30481
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.SlideBackgroundImageLayer, { slide: activeSlide }),
30503
30482
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
30504
30483
  presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
30505
30484
  templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
30506
- chunkSEIVQGH5_js.ElementRenderer,
30485
+ chunk5CJHRYFK_js.ElementRenderer,
30507
30486
  {
30508
30487
  element,
30509
30488
  activeSlide,
@@ -30541,7 +30520,7 @@ function PresentationStageContent({
30541
30520
  `tpl-${element.id}`
30542
30521
  )),
30543
30522
  activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
30544
- chunkSEIVQGH5_js.ElementRenderer,
30523
+ chunk5CJHRYFK_js.ElementRenderer,
30545
30524
  {
30546
30525
  element,
30547
30526
  activeSlide,
@@ -30594,7 +30573,7 @@ function PresentationStageContent({
30594
30573
  function noop() {
30595
30574
  }
30596
30575
  function PresentationContextMenu(p) {
30597
- const { t } = chunk6GFSF2ML_js.useTranslation();
30576
+ const { t } = chunkAIA7CY5U_js.useTranslation();
30598
30577
  const sections = pptx.getPresentationContextMenuSections({
30599
30578
  seeAllSlides: Boolean(p.onSeeAllSlides),
30600
30579
  presenterView: Boolean(p.onShowPresenterView),
@@ -30653,7 +30632,7 @@ function PresentationTransitionMount({
30653
30632
  templateElementsBySlideId
30654
30633
  );
30655
30634
  return /* @__PURE__ */ jsxRuntime.jsx(
30656
- chunkSEIVQGH5_js.PresentationTransitionOverlay,
30635
+ chunk5CJHRYFK_js.PresentationTransitionOverlay,
30657
30636
  {
30658
30637
  outgoingSlide,
30659
30638
  templateElements: templates.outgoing,
@@ -30698,9 +30677,9 @@ function ViewerCanvasArea(props) {
30698
30677
  aiHighlightOverlay,
30699
30678
  aiCanvasActive = false
30700
30679
  } = props;
30701
- const { t } = chunk6GFSF2ML_js.useTranslation();
30702
- const { isHidden } = chunkSEIVQGH5_js.useToolbarVisibility(hiddenActions);
30703
- const viewerOptions = chunkSEIVQGH5_js.useViewerOptionsContext();
30680
+ const { t } = chunkAIA7CY5U_js.useTranslation();
30681
+ const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(hiddenActions);
30682
+ const viewerOptions = chunk5CJHRYFK_js.useViewerOptionsContext();
30704
30683
  const outlineAuthoring = useOutlineAuthoring({
30705
30684
  state: s,
30706
30685
  updateElement: canvasHandlers.handleUpdateSmartArtElement,
@@ -30746,9 +30725,9 @@ function ViewerCanvasArea(props) {
30746
30725
  );
30747
30726
  const handleHyperlinkClick = React108.useCallback(
30748
30727
  (url) => {
30749
- if (chunk6GFSF2ML_js.isPpactionUrl(url)) {
30728
+ if (chunkAIA7CY5U_js.isPpactionUrl(url)) {
30750
30729
  if (mode === "present") {
30751
- const parsed = chunk6GFSF2ML_js.parsePpactionUrl(url);
30730
+ const parsed = chunkAIA7CY5U_js.parsePpactionUrl(url);
30752
30731
  if (parsed) {
30753
30732
  const action = {
30754
30733
  action: parsed.action,
@@ -30833,7 +30812,7 @@ function ViewerCanvasArea(props) {
30833
30812
  s.setActiveSlideIndex((i) => Math.max(0, i - 1));
30834
30813
  }
30835
30814
  }, [mode, presentation, s]);
30836
- const swipe = chunkSEIVQGH5_js.useSwipeNavigation({
30815
+ const swipe = chunk5CJHRYFK_js.useSwipeNavigation({
30837
30816
  enabled: swipeEnabled,
30838
30817
  onNext: handleSwipeNext,
30839
30818
  onPrev: handleSwipePrev
@@ -31019,14 +30998,14 @@ function ViewerCanvasArea(props) {
31019
30998
  outlineAuthoring,
31020
30999
  collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31021
31000
  /* @__PURE__ */ jsxRuntime.jsx(
31022
- chunkSEIVQGH5_js.RemoteSelectionOverlay,
31001
+ chunk5CJHRYFK_js.RemoteSelectionOverlay,
31023
31002
  {
31024
31003
  elements: effectiveSlide?.elements ?? [],
31025
31004
  activeSlideIndex
31026
31005
  }
31027
31006
  ),
31028
31007
  /* @__PURE__ */ jsxRuntime.jsx(
31029
- chunkSEIVQGH5_js.CollaborationCursorOverlay,
31008
+ chunk5CJHRYFK_js.CollaborationCursorOverlay,
31030
31009
  {
31031
31010
  activeSlideIndex,
31032
31011
  canvasWidth: canvasSize.width,
@@ -31263,8 +31242,8 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
31263
31242
  ] });
31264
31243
  }
31265
31244
  function ChartFormatPanel() {
31266
- const { t } = chunk6GFSF2ML_js.useTranslation();
31267
- const commands = chunkSEIVQGH5_js.useChartFormatContext();
31245
+ const { t } = chunkAIA7CY5U_js.useTranslation();
31246
+ const commands = chunk5CJHRYFK_js.useChartFormatContext();
31268
31247
  const ref = React108.useRef(null);
31269
31248
  const chart = commands?.chart;
31270
31249
  const chartData = chart?.type === "chart" ? chart.chartData : void 0;
@@ -31299,7 +31278,7 @@ function ChartFormatPanel() {
31299
31278
  return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-chart-format-pane", { ref, "data-testid": "chart-format-pane" });
31300
31279
  }
31301
31280
  function ThemeEditorPanel({ theme, canEdit, onApply, onClose }) {
31302
- const { t } = chunk6GFSF2ML_js.useTranslation();
31281
+ const { t } = chunkAIA7CY5U_js.useTranslation();
31303
31282
  const ref = React108.useRef(null);
31304
31283
  React108.useEffect(() => {
31305
31284
  const node = ref.current;
@@ -31336,8 +31315,8 @@ function MobileDismissSheet({
31336
31315
  className,
31337
31316
  children
31338
31317
  }) {
31339
- const { t } = chunk6GFSF2ML_js.useTranslation();
31340
- const { dragY, handlers } = chunkSEIVQGH5_js.useSheetDismissDrag(onClose);
31318
+ const { t } = chunkAIA7CY5U_js.useTranslation();
31319
+ const { dragY, handlers } = chunk5CJHRYFK_js.useSheetDismissDrag(onClose);
31341
31320
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31342
31321
  /* @__PURE__ */ jsxRuntime.jsx(
31343
31322
  "button",
@@ -31606,7 +31585,7 @@ function ThemeThumbnail({
31606
31585
  {
31607
31586
  type: "button",
31608
31587
  onClick,
31609
- className: chunk6GFSF2ML_js.cn(
31588
+ className: chunkAIA7CY5U_js.cn(
31610
31589
  "group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
31611
31590
  selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
31612
31591
  ),
@@ -31637,7 +31616,7 @@ function ThemeGallery({
31637
31616
  onApplyTheme,
31638
31617
  onImportTheme
31639
31618
  }) {
31640
- const { t } = chunk6GFSF2ML_js.useTranslation();
31619
+ const { t } = chunkAIA7CY5U_js.useTranslation();
31641
31620
  const [selectedTheme, setSelectedTheme] = React108.useState(currentTheme ?? null);
31642
31621
  const fileInputRef = React108.useRef(null);
31643
31622
  React108.useEffect(() => {
@@ -31774,8 +31753,8 @@ function ViewerSidePanels(props) {
31774
31753
  aiBridge,
31775
31754
  aiPanel
31776
31755
  } = props;
31777
- const aiAssistant = chunkMU3BIZ2U_js.aiAssistants.resolve(aiConfig);
31778
- const AiPanel = aiAssistant?.panel ?? chunkMU3BIZ2U_js.AiChatPanelLazy;
31756
+ const aiAssistant = chunkVCNDY7HS_js.aiAssistants.resolve(aiConfig);
31757
+ const AiPanel = aiAssistant?.panel ?? chunkVCNDY7HS_js.AiChatPanelLazy;
31779
31758
  const handleSetSlideSize = (size, rescaleMode) => {
31780
31759
  if (rescaleMode && s.slideSizeEmu) {
31781
31760
  s.setSlides(pptx.scaleSlidesForSizeChange(slides, s.slideSizeEmu, size, rescaleMode));
@@ -32081,7 +32060,7 @@ function ViewerMainContent(props) {
32081
32060
  );
32082
32061
  const layoutGalleryAnchorRef = React108.useRef(null);
32083
32062
  const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
32084
- return /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
32063
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
32085
32064
  showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
32086
32065
  slidesPaneRenderer ? (
32087
32066
  // The rail's slot (width, collapse, resize handle) stays the viewer's.
@@ -32291,7 +32270,7 @@ function AutosaveRecoveryDialog({
32291
32270
  onDiscard,
32292
32271
  busy = false
32293
32272
  }) {
32294
- const { t } = chunk6GFSF2ML_js.useTranslation();
32273
+ const { t } = chunkAIA7CY5U_js.useTranslation();
32295
32274
  if (!prompt) {
32296
32275
  return null;
32297
32276
  }
@@ -32347,7 +32326,7 @@ function CompatibilityToasts({
32347
32326
  rightInset = 0,
32348
32327
  bottomInset = 0
32349
32328
  }) {
32350
- const { t } = chunk6GFSF2ML_js.useTranslation();
32329
+ const { t } = chunkAIA7CY5U_js.useTranslation();
32351
32330
  const ref = useWebControl(
32352
32331
  { toasts, rightInset, bottomInset, translate: t },
32353
32332
  {
@@ -32392,7 +32371,7 @@ function HeaderFooterPanel({
32392
32371
  onApplyToCurrent,
32393
32372
  onClose
32394
32373
  }) {
32395
- const { t } = chunk6GFSF2ML_js.useTranslation();
32374
+ const { t } = chunkAIA7CY5U_js.useTranslation();
32396
32375
  const showDateTime = headerFooter.hasDateTime ?? false;
32397
32376
  const dateTimeAuto = headerFooter.dateTimeAuto ?? false;
32398
32377
  const showDateText = pptx.isHeaderFooterDateTextVisible(headerFooter);
@@ -32533,7 +32512,7 @@ function HeaderFooterPanel({
32533
32512
  ] }) });
32534
32513
  }
32535
32514
  function MobileBottomBar(p) {
32536
- const { t } = chunk6GFSF2ML_js.useTranslation();
32515
+ const { t } = chunkAIA7CY5U_js.useTranslation();
32537
32516
  const handlers = {
32538
32517
  slides: p.onOpenSlides,
32539
32518
  insert: p.onOpenInsert,
@@ -32559,7 +32538,7 @@ function MobileSlidesSheet({
32559
32538
  onClose,
32560
32539
  ...sidebar
32561
32540
  }) {
32562
- const { t } = chunk6GFSF2ML_js.useTranslation();
32541
+ const { t } = chunkAIA7CY5U_js.useTranslation();
32563
32542
  return /* @__PURE__ */ jsxRuntime.jsx(
32564
32543
  MobileSheet,
32565
32544
  {
@@ -32586,7 +32565,7 @@ function MobileChromeOverlay(props) {
32586
32565
  slideSectionGroups,
32587
32566
  canEdit,
32588
32567
  commentCount
32589
- } = props, { keyboardInset, isKeyboardOpen } = chunkSEIVQGH5_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
32568
+ } = props, { keyboardInset, isKeyboardOpen } = chunk5CJHRYFK_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
32590
32569
  s.setIsSlidesPaneOpen(false);
32591
32570
  s.setIsMobileInsertOpen(false);
32592
32571
  s.setIsInspectorPaneOpen(false);
@@ -32686,7 +32665,7 @@ function MobileChromeOverlay(props) {
32686
32665
  ] });
32687
32666
  }
32688
32667
  function ReadOnlyBanner(p) {
32689
- const { t } = chunk6GFSF2ML_js.useTranslation();
32668
+ const { t } = chunkAIA7CY5U_js.useTranslation();
32690
32669
  const ref = useWebControl(
32691
32670
  pptx.readOnlyBannerState(
32692
32671
  p.recommendation,
@@ -32720,7 +32699,7 @@ function RibbonCustomizationStyle({
32720
32699
  return /* @__PURE__ */ jsxRuntime.jsx("style", { "data-pptx-ribbon-customization": "", children: css });
32721
32700
  }
32722
32701
  function RunProgramNotices({ notices, onDismiss }) {
32723
- const { t } = chunk6GFSF2ML_js.useTranslation();
32702
+ const { t } = chunkAIA7CY5U_js.useTranslation();
32724
32703
  if (notices.length === 0) {
32725
32704
  return null;
32726
32705
  }
@@ -32778,14 +32757,14 @@ function AddinTable({
32778
32757
  selectedId,
32779
32758
  onSelect
32780
32759
  }) {
32781
- const { t } = chunk6GFSF2ML_js.useTranslation();
32760
+ const { t } = chunkAIA7CY5U_js.useTranslation();
32782
32761
  return /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
32783
32762
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-1 text-xs font-semibold text-foreground", children: title }),
32784
32763
  rows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-2 py-1 text-xs italic text-muted-foreground", children: t("pptx.options.addIns.description") }) : /* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full border-collapse text-left", children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((row) => /* @__PURE__ */ jsxRuntime.jsxs(
32785
32764
  "tr",
32786
32765
  {
32787
32766
  onClick: () => onSelect(row.id),
32788
- className: chunk6GFSF2ML_js.cn(
32767
+ className: chunkAIA7CY5U_js.cn(
32789
32768
  "cursor-pointer border-b border-border/40 transition-colors",
32790
32769
  selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
32791
32770
  ),
@@ -32800,7 +32779,7 @@ function AddinTable({
32800
32779
  ] });
32801
32780
  }
32802
32781
  function OptionsAddInsPane({ addinStatus }) {
32803
- const { t } = chunk6GFSF2ML_js.useTranslation();
32782
+ const { t } = chunkAIA7CY5U_js.useTranslation();
32804
32783
  const [selectedId, setSelectedId] = React108.useState(null);
32805
32784
  const rows = pptx.resolveViewerAddinRows(addinStatus);
32806
32785
  const active = rows.filter((row) => row.active);
@@ -32843,7 +32822,7 @@ function CommandList({
32843
32822
  selectedId,
32844
32823
  onSelect
32845
32824
  }) {
32846
- const { t } = chunk6GFSF2ML_js.useTranslation();
32825
+ const { t } = chunkAIA7CY5U_js.useTranslation();
32847
32826
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
32848
32827
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-xs font-medium text-muted-foreground", children: title }),
32849
32828
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -32864,7 +32843,7 @@ function CommandList({
32864
32843
  role: "option",
32865
32844
  "aria-selected": selectedId === id,
32866
32845
  onClick: () => onSelect(id),
32867
- className: chunk6GFSF2ML_js.cn(
32846
+ className: chunkAIA7CY5U_js.cn(
32868
32847
  "flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
32869
32848
  selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
32870
32849
  ),
@@ -32882,7 +32861,7 @@ function OptionsQuickAccessPane({
32882
32861
  onQuickAccessCommandsChange,
32883
32862
  onResetQuickAccess
32884
32863
  }) {
32885
- const { t } = chunk6GFSF2ML_js.useTranslation();
32864
+ const { t } = chunkAIA7CY5U_js.useTranslation();
32886
32865
  const [selectedAvailable, setSelectedAvailable] = React108.useState(null);
32887
32866
  const [selectedCurrent, setSelectedCurrent] = React108.useState(null);
32888
32867
  const current = options.quickAccess.commandIds;
@@ -32996,7 +32975,7 @@ function OptionsRibbonPane({
32996
32975
  onRibbonTabHiddenChange,
32997
32976
  onResetRibbon
32998
32977
  }) {
32999
- const { t } = chunk6GFSF2ML_js.useTranslation();
32978
+ const { t } = chunkAIA7CY5U_js.useTranslation();
33000
32979
  const hidden = new Set(options.ribbon.hiddenTabIds);
33001
32980
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
33002
32981
  /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
@@ -33008,7 +32987,7 @@ function OptionsRibbonPane({
33008
32987
  return /* @__PURE__ */ jsxRuntime.jsxs(
33009
32988
  "label",
33010
32989
  {
33011
- className: chunk6GFSF2ML_js.cn(
32990
+ className: chunkAIA7CY5U_js.cn(
33012
32991
  "flex items-center gap-2 rounded px-2 py-1.5",
33013
32992
  isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
33014
32993
  ),
@@ -33042,7 +33021,7 @@ function OptionsRibbonPane({
33042
33021
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
33043
33022
  "div",
33044
33023
  {
33045
- className: chunk6GFSF2ML_js.cn(
33024
+ className: chunkAIA7CY5U_js.cn(
33046
33025
  "flex items-center justify-between gap-3 rounded px-3 py-2",
33047
33026
  i % 2 === 0 ? "bg-muted/60" : ""
33048
33027
  ),
@@ -33063,12 +33042,12 @@ async function exportAiChatLogs(options) {
33063
33042
  chats,
33064
33043
  { format: options?.format, detailed: options?.detailed, now: options?.now },
33065
33044
  (filename, content, mime) => {
33066
- chunkSEIVQGH5_js.downloadBlob(new Blob([content], { type: mime }), filename);
33045
+ chunk5CJHRYFK_js.downloadBlob(new Blob([content], { type: mime }), filename);
33067
33046
  }
33068
33047
  );
33069
33048
  }
33070
33049
  function SettingsAiTab({ store }) {
33071
- const { t } = chunk6GFSF2ML_js.useTranslation();
33050
+ const { t } = chunkAIA7CY5U_js.useTranslation();
33072
33051
  const activeStore = React108.useMemo(() => store ?? host.createChatHistoryStore(), [store]);
33073
33052
  const [chatCount, setChatCount] = React108.useState(null);
33074
33053
  const [detailed, setDetailed] = React108.useState(true);
@@ -33160,7 +33139,7 @@ function SettingsAppearanceTab({
33160
33139
  themes,
33161
33140
  onSelectTheme
33162
33141
  }) {
33163
- const { t } = chunk6GFSF2ML_js.useTranslation();
33142
+ const { t } = chunkAIA7CY5U_js.useTranslation();
33164
33143
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: themes.map((entry) => {
33165
33144
  const isActive = entry.key === activeThemeKey;
33166
33145
  const previewBackground = entry.theme?.colors?.background ?? "#0b0f19";
@@ -33171,7 +33150,7 @@ function SettingsAppearanceTab({
33171
33150
  type: "button",
33172
33151
  onClick: () => onSelectTheme(entry.key),
33173
33152
  "aria-pressed": isActive,
33174
- className: chunk6GFSF2ML_js.cn(
33153
+ className: chunkAIA7CY5U_js.cn(
33175
33154
  "flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
33176
33155
  isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
33177
33156
  ),
@@ -33188,7 +33167,7 @@ function SettingsAppearanceTab({
33188
33167
  /* @__PURE__ */ jsxRuntime.jsx(
33189
33168
  "span",
33190
33169
  {
33191
- className: chunk6GFSF2ML_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
33170
+ className: chunkAIA7CY5U_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
33192
33171
  children: t(entry.labelKey)
33193
33172
  }
33194
33173
  )
@@ -33203,7 +33182,7 @@ function SettingsCustomFontsSection({
33203
33182
  families,
33204
33183
  onRegistered
33205
33184
  }) {
33206
- const { t } = chunk6GFSF2ML_js.useTranslation();
33185
+ const { t } = chunkAIA7CY5U_js.useTranslation();
33207
33186
  const inputRef = React108.useRef(null);
33208
33187
  const [error, setError] = React108.useState(false);
33209
33188
  const handleFile = async (file) => {
@@ -33268,7 +33247,7 @@ function SettingsLanguageTab({
33268
33247
  type: "button",
33269
33248
  onClick: () => onSelectLocale(locale.code),
33270
33249
  "aria-pressed": isActive,
33271
- className: chunk6GFSF2ML_js.cn(
33250
+ className: chunkAIA7CY5U_js.cn(
33272
33251
  "flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
33273
33252
  isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
33274
33253
  ),
@@ -33307,7 +33286,7 @@ function OpenSettingsDialog({
33307
33286
  customFontFamilies = NO_CUSTOM_FONT_FAMILIES,
33308
33287
  onCustomFontRegistered
33309
33288
  }) {
33310
- const { t } = chunk6GFSF2ML_js.useTranslation();
33289
+ const { t } = chunkAIA7CY5U_js.useTranslation();
33311
33290
  const viewerCustomization = useViewerCustomizationContext();
33312
33291
  const customization = React108.useMemo(
33313
33292
  () => languageSelectable ? viewerCustomization : {
@@ -33416,7 +33395,7 @@ function ViewerOptionsProvider({
33416
33395
  store,
33417
33396
  children
33418
33397
  }) {
33419
- return /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.ViewerOptionsContext.Provider, { value: options, children }) });
33398
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ViewerOptionsContext.Provider, { value: options, children }) });
33420
33399
  }
33421
33400
  function useAiBridge(input) {
33422
33401
  const ref = React108.useRef(input);
@@ -33499,7 +33478,7 @@ function useAiPanelController(input) {
33499
33478
  getSelectedElement: () => inputRef.current.selectedElement
33500
33479
  })
33501
33480
  );
33502
- const state = chunkSEIVQGH5_js.useController(controller);
33481
+ const state = chunk5CJHRYFK_js.useController(controller);
33503
33482
  React108.useEffect(() => () => controller.dispose(), [controller]);
33504
33483
  const liveFocusTargets = React108.useMemo(
33505
33484
  () => host.computeFocusTargets({ activeSlideIndex, selectedElementIds, selectedElementId }),
@@ -33732,7 +33711,7 @@ function useMasterViewCrud(input) {
33732
33711
  forgetHistory,
33733
33712
  pushToast
33734
33713
  } = input;
33735
- const { t } = chunk6GFSF2ML_js.useTranslation();
33714
+ const { t } = chunkAIA7CY5U_js.useTranslation();
33736
33715
  const data = React108.useMemo(
33737
33716
  () => ({ slides, slideMasters }),
33738
33717
  [slides, slideMasters]
@@ -34132,7 +34111,7 @@ function useHostLanguage({
34132
34111
  availableLocales,
34133
34112
  onLocaleChange
34134
34113
  }) {
34135
- const host = chunk6GFSF2ML_js.useRegisteredHostI18next();
34114
+ const host = chunkAIA7CY5U_js.useRegisteredHostI18next();
34136
34115
  const t = host?.t;
34137
34116
  const i18n = host?.i18n;
34138
34117
  const readsInstance = i18n !== void 0;
@@ -34166,9 +34145,9 @@ function useHostLanguage({
34166
34145
  },
34167
34146
  [onLocaleChange, i18n]
34168
34147
  );
34169
- const language = i18n ? chunk6GFSF2ML_js.hostInstanceLanguage(i18n) ?? localeCode : "en";
34148
+ const language = i18n ? chunkAIA7CY5U_js.hostInstanceLanguage(i18n) ?? localeCode : "en";
34170
34149
  const state = React108.useMemo(
34171
- () => t ? { t, locale: language } : chunk6GFSF2ML_js.BUILT_IN_ENGLISH,
34150
+ () => t ? { t, locale: language } : chunkAIA7CY5U_js.BUILT_IN_ENGLISH,
34172
34151
  [t, language]
34173
34152
  );
34174
34153
  const controls = React108.useMemo(
@@ -34181,7 +34160,7 @@ function useProvidedLanguage({
34181
34160
  availableLocales,
34182
34161
  onLocaleChange
34183
34162
  }) {
34184
- const state = React108.useContext(chunk6GFSF2ML_js.PptxI18nContext);
34163
+ const state = React108.useContext(chunkAIA7CY5U_js.PptxI18nContext);
34185
34164
  const { locale } = state;
34186
34165
  const locales = availableLocales ?? NO_LOCALES;
34187
34166
  const controls = React108.useMemo(
@@ -34201,25 +34180,25 @@ function useProvidedLanguage({
34201
34180
  return { state, controls };
34202
34181
  }
34203
34182
  function provideLanguage({ state, controls }, children) {
34204
- return /* @__PURE__ */ jsxRuntime.jsx(chunk6GFSF2ML_js.ViewerI18nContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(chunk6GFSF2ML_js.ViewerLocaleControlsContext.Provider, { value: controls, children }) });
34183
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkAIA7CY5U_js.ViewerI18nContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(chunkAIA7CY5U_js.ViewerLocaleControlsContext.Provider, { value: controls, children }) });
34205
34184
  }
34206
34185
  function HostLanguageRoot({ children, ...props }) {
34207
34186
  return provideLanguage(useHostLanguage(props), children);
34208
34187
  }
34209
34188
  function BuiltInLanguageRoot({ children }) {
34210
- return provideLanguage({ state: chunk6GFSF2ML_js.BUILT_IN_ENGLISH, controls: BUILT_IN_CONTROLS }, children);
34189
+ return provideLanguage({ state: chunkAIA7CY5U_js.BUILT_IN_ENGLISH, controls: BUILT_IN_CONTROLS }, children);
34211
34190
  }
34212
34191
  function ProvidedLanguageRoot({ children, ...props }) {
34213
34192
  return provideLanguage(useProvidedLanguage(props), children);
34214
34193
  }
34215
34194
  function ViewerI18nRoot(props) {
34216
- const [readsHost] = React108.useState(() => chunk6GFSF2ML_js.registeredHostI18next() !== null);
34195
+ const [readsHost] = React108.useState(() => chunkAIA7CY5U_js.registeredHostI18next() !== null);
34217
34196
  const FromHost = readsHost ? HostLanguageRoot : BuiltInLanguageRoot;
34218
- const Root = React108.useContext(chunk6GFSF2ML_js.PptxI18nContext) ? ProvidedLanguageRoot : FromHost;
34197
+ const Root = React108.useContext(chunkAIA7CY5U_js.PptxI18nContext) ? ProvidedLanguageRoot : FromHost;
34219
34198
  return /* @__PURE__ */ jsxRuntime.jsx(Root, { ...props });
34220
34199
  }
34221
34200
  function useViewerLocaleControls() {
34222
- return React108.useContext(chunk6GFSF2ML_js.ViewerLocaleControlsContext);
34201
+ return React108.useContext(chunkAIA7CY5U_js.ViewerLocaleControlsContext);
34223
34202
  }
34224
34203
  var NO_RIBBON_ADD_INS = [];
34225
34204
  var NO_FILE_PROVIDERS = [];
@@ -34232,7 +34211,7 @@ var PowerPointViewerComponent = /* @__PURE__ */ React108.forwardRef(
34232
34211
  defaultLocale: props.defaultLocale,
34233
34212
  availableLocales: props.availableLocales,
34234
34213
  onLocaleChange: props.onLocaleChange,
34235
- children: /* @__PURE__ */ jsxRuntime.jsx(PowerPointViewerBody, { ...props, ref })
34214
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ElementRenderErrorScope, { onElementRenderError: props.onElementRenderError, children: /* @__PURE__ */ jsxRuntime.jsx(PowerPointViewerBody, { ...props, ref }) })
34236
34215
  }
34237
34216
  );
34238
34217
  }
@@ -34300,7 +34279,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34300
34279
  limits
34301
34280
  } = props;
34302
34281
  const cloudDocument = React108.useMemo(() => pptx.createCloudDocumentController(), []);
34303
- const cloudFile = chunkSEIVQGH5_js.useController(cloudDocument).file;
34282
+ const cloudFile = chunk5CJHRYFK_js.useController(cloudDocument).file;
34304
34283
  const {
34305
34284
  storage: viewerStorage,
34306
34285
  fileName,
@@ -34314,7 +34293,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34314
34293
  filePath: hostFilePath
34315
34294
  });
34316
34295
  const saveProgress = React108.useMemo(() => pptx.createSaveProgressController(), []);
34317
- const saveProgressState = chunkSEIVQGH5_js.useController(saveProgress);
34296
+ const saveProgressState = chunk5CJHRYFK_js.useController(saveProgress);
34318
34297
  const storage = React108.useMemo(
34319
34298
  () => viewerStorage ? saveProgress.wrap(viewerStorage) : viewerStorage,
34320
34299
  [viewerStorage, saveProgress]
@@ -34356,7 +34335,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34356
34335
  (current) => current.includes(family) ? current : [...current, family]
34357
34336
  );
34358
34337
  }, []);
34359
- const { t } = chunk6GFSF2ML_js.useTranslation();
34338
+ const { t } = chunkAIA7CY5U_js.useTranslation();
34360
34339
  const {
34361
34340
  localeCode,
34362
34341
  locales: resolvedLocales,
@@ -34413,7 +34392,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34413
34392
  },
34414
34393
  [hostStorage, cloudDocument]
34415
34394
  );
34416
- const { optionsStore, options: viewerOptions } = chunkSEIVQGH5_js.useViewerOptions();
34395
+ const { optionsStore, options: viewerOptions } = chunk5CJHRYFK_js.useViewerOptions();
34417
34396
  const custom = useViewerCustomization(
34418
34397
  customization,
34419
34398
  legacyHiddenActions,
@@ -34433,8 +34412,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34433
34412
  const handleEnableEditing = React108.useCallback(() => {
34434
34413
  setProtectedViewOverridden(true);
34435
34414
  }, []);
34436
- const readOnlyRec = chunkSEIVQGH5_js.useReadOnlyRecommendationState(content);
34437
- const compatToastsState = chunkSEIVQGH5_js.useCompatibilityToastsState();
34415
+ const readOnlyRec = chunk5CJHRYFK_js.useReadOnlyRecommendationState(content);
34416
+ const compatToastsState = chunk5CJHRYFK_js.useCompatibilityToastsState();
34438
34417
  const [notesBarHeight, setNotesBarHeight] = React108.useState(0);
34439
34418
  const runProgramNoticesState = useRunProgramNoticesState();
34440
34419
  const [collaborationReadOnly, setCollaborationReadOnly] = React108.useState(Boolean(collaboration));
@@ -34457,8 +34436,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34457
34436
  filePath
34458
34437
  });
34459
34438
  const [isShareDialogOpen, setIsShareDialogOpen] = React108.useState(false);
34460
- const { reducedMotion, toggleReducedMotion } = chunkSEIVQGH5_js.useReducedMotion();
34461
- const state = chunkSEIVQGH5_js.useViewerState({
34439
+ const { reducedMotion, toggleReducedMotion } = chunk5CJHRYFK_js.useReducedMotion();
34440
+ const state = chunk5CJHRYFK_js.useViewerState({
34462
34441
  content,
34463
34442
  canEdit,
34464
34443
  inspectorInitiallyOpen: props.inspectorInitiallyOpen
@@ -34591,16 +34570,16 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34591
34570
  }
34592
34571
  }, [settings, optionsStore]);
34593
34572
  const handleClearOptionsCache = useAutosaveCacheMaintenance(viewerOptions, storage);
34594
- const mobile = chunkSEIVQGH5_js.useIsMobile();
34573
+ const mobile = chunk5CJHRYFK_js.useIsMobile();
34595
34574
  const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
34596
- const resizablePanels = chunkSEIVQGH5_js.useResizablePanels();
34575
+ const resizablePanels = chunk5CJHRYFK_js.useResizablePanels();
34597
34576
  const {
34598
34577
  gridSpacingPx,
34599
34578
  visibleSlideIndexes,
34600
34579
  slideSectionGroups,
34601
34580
  masterPseudoSlide,
34602
34581
  authoredRange
34603
- } = chunkSEIVQGH5_js.useDerivedSlideState({
34582
+ } = chunk5CJHRYFK_js.useDerivedSlideState({
34604
34583
  slides,
34605
34584
  sections: state.sections,
34606
34585
  customShows: state.customShows,
@@ -34625,7 +34604,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34625
34604
  state.cropSessionRef
34626
34605
  ]
34627
34606
  );
34628
- const zoom = chunkSEIVQGH5_js.useZoomViewport({
34607
+ const zoom = chunk5CJHRYFK_js.useZoomViewport({
34629
34608
  canvasSize,
34630
34609
  selectedElements: state.selectedElements,
34631
34610
  fitPadding: props.fitPadding,
@@ -34644,7 +34623,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34644
34623
  onChangeCallback.current?.();
34645
34624
  }, [setIsDirty]);
34646
34625
  const restoreHistoryThemeRef = React108.useRef(void 0);
34647
- const history = chunkSEIVQGH5_js.useEditorHistory({
34626
+ const history = chunk5CJHRYFK_js.useEditorHistory({
34648
34627
  slides,
34649
34628
  canvasSize,
34650
34629
  activeSlideIndex,
@@ -34673,7 +34652,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34673
34652
  setEditTemplateMode: state.setEditTemplateMode,
34674
34653
  setHeaderFooter: state.setHeaderFooter
34675
34654
  });
34676
- const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkSEIVQGH5_js.usePresentationSetup({
34655
+ const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunk5CJHRYFK_js.usePresentationSetup({
34677
34656
  mode,
34678
34657
  slides,
34679
34658
  visibleSlideIndexes,
@@ -34752,7 +34731,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34752
34731
  loading,
34753
34732
  error
34754
34733
  ]);
34755
- chunkSEIVQGH5_js.useTouchGestures({
34734
+ chunk5CJHRYFK_js.useTouchGestures({
34756
34735
  targetRef: zoom.canvasViewportRef,
34757
34736
  currentScale: zoom.scale,
34758
34737
  callbacks: {
@@ -34774,7 +34753,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34774
34753
  },
34775
34754
  enabled: isTouchDevice
34776
34755
  });
34777
- const dialogs = chunkSEIVQGH5_js.useViewerDialogs({
34756
+ const dialogs = chunk5CJHRYFK_js.useViewerDialogs({
34778
34757
  mode,
34779
34758
  slides,
34780
34759
  activeSlide,
@@ -34802,7 +34781,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34802
34781
  history,
34803
34782
  embeddedFontFamilies: state.embeddedFonts.map((font) => font.name)
34804
34783
  });
34805
- chunkSEIVQGH5_js.useClearSelectionOnSlideChange(state, activeSlideIndex);
34784
+ chunk5CJHRYFK_js.useClearSelectionOnSlideChange(state, activeSlideIndex);
34806
34785
  const zoomBeforePresentRef = React108.useRef(null);
34807
34786
  React108.useEffect(() => {
34808
34787
  if (mode !== "present") {
@@ -34820,7 +34799,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34820
34799
  zoom.handleZoomToFit();
34821
34800
  zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
34822
34801
  }, [mode]);
34823
- const editorOps = chunkSEIVQGH5_js.useEditorOperations({
34802
+ const editorOps = chunk5CJHRYFK_js.useEditorOperations({
34824
34803
  state,
34825
34804
  history,
34826
34805
  zoom,
@@ -34865,7 +34844,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34865
34844
  handlerRef,
34866
34845
  viewerApi,
34867
34846
  loadVersion
34868
- } = chunkSEIVQGH5_js.useViewerIntegration({
34847
+ } = chunk5CJHRYFK_js.useViewerIntegration({
34869
34848
  transformCommittedText: (text, previous) => pptx.applyAutoCorrectToEdit(text, previous, viewerOptions.proofing),
34870
34849
  state,
34871
34850
  zoom,
@@ -35018,7 +34997,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
35018
34997
  updateElementById: editorOps.ops.updateElementById
35019
34998
  });
35020
34999
  const ribbonScope = useRibbonScopeToken();
35021
- const viewPreferencesSync = chunkSEIVQGH5_js.useViewPreferencesSync({
35000
+ const viewPreferencesSync = chunk5CJHRYFK_js.useViewPreferencesSync({
35022
35001
  loadVersion,
35023
35002
  viewProperties: state.viewProperties,
35024
35003
  setViewProperties: state.setViewProperties,
@@ -35069,7 +35048,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
35069
35048
  },
35070
35049
  [state]
35071
35050
  );
35072
- const layoutSwitching = chunkSEIVQGH5_js.useLayoutSwitching({
35051
+ const layoutSwitching = chunk5CJHRYFK_js.useLayoutSwitching({
35073
35052
  handler: handlerRef.current,
35074
35053
  slides,
35075
35054
  activeSlideIndex,
@@ -35188,7 +35167,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
35188
35167
  "data-pptx-editor-chrome": "",
35189
35168
  ...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
35190
35169
  "aria-busy": loading,
35191
- className: chunk6GFSF2ML_js.cn(
35170
+ className: chunkAIA7CY5U_js.cn(
35192
35171
  "h-full w-full bg-background text-foreground relative",
35193
35172
  ...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
35194
35173
  ),
@@ -35591,8 +35570,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
35591
35570
  // Nothing previously provided it, so every one of those consumers was
35592
35571
  // silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
35593
35572
  // the user changed in the Options dialog.
35594
- /* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerStorageContext.Provider, { value: hostStorage, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCloudFilesContext.Provider, { value: cloudFiles, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerRegionBaseContext.Provider, { value: regionBase, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
35595
- chunkSEIVQGH5_js.CollaborationProvider,
35573
+ /* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerStorageContext.Provider, { value: hostStorage, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCloudFilesContext.Provider, { value: cloudFiles, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerRegionBaseContext.Provider, { value: regionBase, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
35574
+ chunk5CJHRYFK_js.CollaborationProvider,
35596
35575
  {
35597
35576
  config: collaboration,
35598
35577
  canvasWidth: canvasSize.width,
@@ -35649,19 +35628,19 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
35649
35628
  slideCount: slides.length
35650
35629
  }
35651
35630
  ),
35652
- /* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
35631
+ /* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
35653
35632
  ]
35654
35633
  }
35655
35634
  ) }) }) }) }) }) }) }) }) })
35656
35635
  );
35657
35636
  }
35658
35637
  );
35659
- var PowerPointViewer2 = /* @__PURE__ */ chunkSEIVQGH5_js.withDisplayName(
35638
+ var PowerPointViewer2 = /* @__PURE__ */ chunk5CJHRYFK_js.withDisplayName(
35660
35639
  PowerPointViewerComponent,
35661
35640
  "PowerPointViewer"
35662
35641
  );
35663
35642
  function CollaborationStatusStrip() {
35664
- const collab = chunkSEIVQGH5_js.useCollaboration();
35643
+ const collab = chunk5CJHRYFK_js.useCollaboration();
35665
35644
  if (!collab) {
35666
35645
  return null;
35667
35646
  }
@@ -35678,9 +35657,9 @@ function CollaborationStateReporter({
35678
35657
  onChange,
35679
35658
  onStatus
35680
35659
  }) {
35681
- const collab = chunkSEIVQGH5_js.useCollaboration();
35660
+ const collab = chunk5CJHRYFK_js.useCollaboration();
35682
35661
  useCollaborationStateReport(collab, onChange);
35683
- chunkSEIVQGH5_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
35662
+ chunk5CJHRYFK_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
35684
35663
  return null;
35685
35664
  }
35686
35665
  function CollaborationDocumentSync({
@@ -35695,8 +35674,8 @@ function CollaborationDocumentSync({
35695
35674
  onReadOnlyChange,
35696
35675
  history
35697
35676
  }) {
35698
- const collab = chunkSEIVQGH5_js.useCollaboration();
35699
- chunkSEIVQGH5_js.useCollaborationDocumentSync({
35677
+ const collab = chunk5CJHRYFK_js.useCollaboration();
35678
+ chunk5CJHRYFK_js.useCollaborationDocumentSync({
35700
35679
  collaboration: collab,
35701
35680
  history,
35702
35681
  slides,
@@ -35716,14 +35695,14 @@ function CollaborationFollowLayer({
35716
35695
  setActiveSlideIndex,
35717
35696
  slideCount
35718
35697
  }) {
35719
- const collab = chunkSEIVQGH5_js.useCollaboration();
35720
- const { followedClientId, followUser } = chunkSEIVQGH5_js.useFollowMode({
35698
+ const collab = chunk5CJHRYFK_js.useCollaboration();
35699
+ const { followedClientId, followUser } = chunk5CJHRYFK_js.useFollowMode({
35721
35700
  collab,
35722
35701
  activeSlideIndex,
35723
35702
  setActiveSlideIndex,
35724
35703
  slideCount
35725
35704
  });
35726
- chunkSEIVQGH5_js.useBroadcastFollower({
35705
+ chunk5CJHRYFK_js.useBroadcastFollower({
35727
35706
  collab,
35728
35707
  activeSlideIndex,
35729
35708
  setActiveSlideIndex,