pptx-react-viewer 4.74.0 → 4.75.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 (98) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -1
  3. package/dist/{AiChatPanel-PLQ3NBTK.js → AiChatPanel-4V7QB5Z3.js} +19 -19
  4. package/dist/AiChatPanel-4V7QB5Z3.js.br +0 -0
  5. package/dist/AiChatPanel-4V7QB5Z3.js.gz +0 -0
  6. package/dist/{AiChatPanel-E7CJSTW7.mjs → AiChatPanel-6ML3VLIX.mjs} +1 -1
  7. package/dist/AiChatPanel-6ML3VLIX.mjs.br +0 -0
  8. package/dist/AiChatPanel-6ML3VLIX.mjs.gz +0 -0
  9. package/dist/ai.js +2 -2
  10. package/dist/ai.js.br +0 -0
  11. package/dist/ai.js.gz +0 -0
  12. package/dist/ai.mjs +1 -1
  13. package/dist/ai.mjs.br +0 -0
  14. package/dist/ai.mjs.gz +0 -0
  15. package/dist/{chunk-XG4WSJ4O.js → chunk-3AZ6ESJU.js} +203 -203
  16. package/dist/chunk-3AZ6ESJU.js.br +0 -0
  17. package/dist/chunk-3AZ6ESJU.js.gz +0 -0
  18. package/dist/{chunk-P2COO2QO.js → chunk-6GFSF2ML.js} +65 -13
  19. package/dist/chunk-6GFSF2ML.js.br +0 -0
  20. package/dist/chunk-6GFSF2ML.js.gz +0 -0
  21. package/dist/{chunk-CRC3V4UG.mjs → chunk-AZLOOFU2.mjs} +1 -1
  22. package/dist/chunk-AZLOOFU2.mjs.br +0 -0
  23. package/dist/chunk-AZLOOFU2.mjs.gz +0 -0
  24. package/dist/{chunk-SQ7OASDY.mjs → chunk-DE4Y5F4T.mjs} +40 -44
  25. package/dist/chunk-DE4Y5F4T.mjs.br +0 -0
  26. package/dist/chunk-DE4Y5F4T.mjs.gz +0 -0
  27. package/dist/chunk-FFTZYNL4.mjs +2 -0
  28. package/dist/chunk-FFTZYNL4.mjs.br +6 -0
  29. package/dist/chunk-FFTZYNL4.mjs.gz +0 -0
  30. package/dist/chunk-LWGPHJHC.js +151 -0
  31. package/dist/chunk-LWGPHJHC.js.br +0 -0
  32. package/dist/chunk-LWGPHJHC.js.gz +0 -0
  33. package/dist/{chunk-LVEFHZ76.js → chunk-MU3BIZ2U.js} +1 -1
  34. package/dist/chunk-MU3BIZ2U.js.br +0 -0
  35. package/dist/chunk-MU3BIZ2U.js.gz +0 -0
  36. package/dist/{chunk-FBSPQYRE.mjs → chunk-N3YK2BCA.mjs} +61 -14
  37. package/dist/chunk-N3YK2BCA.mjs.br +0 -0
  38. package/dist/chunk-N3YK2BCA.mjs.gz +0 -0
  39. package/dist/chunk-P2IEKYVG.js +29 -0
  40. package/dist/chunk-P2IEKYVG.js.br +0 -0
  41. package/dist/chunk-P2IEKYVG.js.gz +0 -0
  42. package/dist/{chunk-D4WC35PL.js → chunk-RJRDE3C2.js} +594 -599
  43. package/dist/chunk-RJRDE3C2.js.br +0 -0
  44. package/dist/chunk-RJRDE3C2.js.gz +0 -0
  45. package/dist/{chunk-JZE6BORE.mjs → chunk-RMEWSJZU.mjs} +1 -1
  46. package/dist/chunk-RMEWSJZU.mjs.br +0 -0
  47. package/dist/chunk-RMEWSJZU.mjs.gz +0 -0
  48. package/dist/chunk-Y53EC3JU.mjs +27 -0
  49. package/dist/chunk-Y53EC3JU.mjs.br +0 -0
  50. package/dist/chunk-Y53EC3JU.mjs.gz +0 -0
  51. package/dist/index.d.ts +24 -18
  52. package/dist/index.js +126 -126
  53. package/dist/index.js.br +0 -0
  54. package/dist/index.js.gz +0 -0
  55. package/dist/index.mjs +6 -6
  56. package/dist/index.mjs.br +0 -0
  57. package/dist/index.mjs.gz +0 -0
  58. package/dist/internals.js +82 -81
  59. package/dist/internals.js.br +0 -0
  60. package/dist/internals.js.gz +0 -0
  61. package/dist/internals.mjs +3 -2
  62. package/dist/internals.mjs.br +0 -0
  63. package/dist/internals.mjs.gz +0 -0
  64. package/dist/no-i18next.d.ts +1299 -0
  65. package/dist/no-i18next.js +251 -0
  66. package/dist/no-i18next.js.br +0 -0
  67. package/dist/no-i18next.js.gz +0 -0
  68. package/dist/no-i18next.mjs +6 -0
  69. package/dist/no-i18next.mjs.br +0 -0
  70. package/dist/no-i18next.mjs.gz +0 -0
  71. package/dist/viewer/index.d.ts +24 -18
  72. package/dist/viewer/index.js +25 -24
  73. package/dist/viewer/index.js.br +0 -0
  74. package/dist/viewer/index.js.gz +0 -0
  75. package/dist/viewer/index.mjs +5 -4
  76. package/dist/viewer/index.mjs.br +0 -0
  77. package/dist/viewer/index.mjs.gz +0 -0
  78. package/package.json +9 -4
  79. package/dist/AiChatPanel-E7CJSTW7.mjs.br +0 -0
  80. package/dist/AiChatPanel-E7CJSTW7.mjs.gz +0 -0
  81. package/dist/AiChatPanel-PLQ3NBTK.js.br +0 -0
  82. package/dist/AiChatPanel-PLQ3NBTK.js.gz +0 -0
  83. package/dist/chunk-CRC3V4UG.mjs.br +0 -0
  84. package/dist/chunk-CRC3V4UG.mjs.gz +0 -0
  85. package/dist/chunk-D4WC35PL.js.br +0 -0
  86. package/dist/chunk-D4WC35PL.js.gz +0 -0
  87. package/dist/chunk-FBSPQYRE.mjs.br +0 -0
  88. package/dist/chunk-FBSPQYRE.mjs.gz +0 -0
  89. package/dist/chunk-JZE6BORE.mjs.br +0 -0
  90. package/dist/chunk-JZE6BORE.mjs.gz +0 -0
  91. package/dist/chunk-LVEFHZ76.js.br +0 -0
  92. package/dist/chunk-LVEFHZ76.js.gz +0 -0
  93. package/dist/chunk-P2COO2QO.js.br +0 -0
  94. package/dist/chunk-P2COO2QO.js.gz +0 -0
  95. package/dist/chunk-SQ7OASDY.mjs.br +0 -0
  96. package/dist/chunk-SQ7OASDY.mjs.gz +0 -0
  97. package/dist/chunk-XG4WSJ4O.js.br +0 -0
  98. package/dist/chunk-XG4WSJ4O.js.gz +0 -0
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkLVEFHZ76_js = require('./chunk-LVEFHZ76.js');
4
- var chunkXG4WSJ4O_js = require('./chunk-XG4WSJ4O.js');
5
- var chunkP2COO2QO_js = require('./chunk-P2COO2QO.js');
3
+ var chunkMU3BIZ2U_js = require('./chunk-MU3BIZ2U.js');
4
+ var chunk3AZ6ESJU_js = require('./chunk-3AZ6ESJU.js');
5
+ var chunk6GFSF2ML_js = require('./chunk-6GFSF2ML.js');
6
6
  var pptx = require('ooxml-ui/pptx');
7
7
  var React108 = require('react');
8
8
  var jsxRuntime = require('react/jsx-runtime');
@@ -10,8 +10,8 @@ var lu = require('react-icons/lu');
10
10
  var reactDom = require('react-dom');
11
11
  var pptx$1 = require('ooxml-core/pptx');
12
12
  var host = require('ooxml-ui/pptx/ai/host');
13
- var i18n$1 = require('ooxml-core/i18n');
14
- var i18n = require('ooxml-ui/pptx/i18n');
13
+ var i18n = require('ooxml-core/i18n');
14
+ var i18n$1 = require('ooxml-ui/pptx/i18n');
15
15
 
16
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
17
 
@@ -58,12 +58,12 @@ function SlideThumbnailImpl({
58
58
  const layout = pptx.slideThumbnailLayout(
59
59
  safeCanvasWidth,
60
60
  safeCanvasHeight,
61
- previewWidth ?? chunkP2COO2QO_js.SLIDE_NAV_THUMBNAIL_WIDTH
61
+ previewWidth ?? chunk6GFSF2ML_js.SLIDE_NAV_THUMBNAIL_WIDTH
62
62
  );
63
63
  const { height: previewHeight, scale } = layout;
64
64
  const previewElements = pptx.buildPreviewElements(slide, templateElements);
65
65
  const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
66
- const { t } = chunkP2COO2QO_js.useTranslation();
66
+ const { t } = chunk6GFSF2ML_js.useTranslation();
67
67
  const transitionBadge = pptx.slideThumbnailTransitionBadge(slide, t);
68
68
  return /* @__PURE__ */ jsxRuntime.jsxs(
69
69
  "div",
@@ -89,9 +89,9 @@ function SlideThumbnailImpl({
89
89
  ...pptx.deviceStrokeStageStyle(scale)
90
90
  },
91
91
  children: [
92
- /* @__PURE__ */ jsxRuntime.jsx(chunkXG4WSJ4O_js.SlideBackgroundImageLayer, { slide }),
92
+ /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.SlideBackgroundImageLayer, { slide }),
93
93
  previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
94
- chunkXG4WSJ4O_js.StaticElementRenderer,
94
+ chunk3AZ6ESJU_js.StaticElementRenderer,
95
95
  {
96
96
  element,
97
97
  activeSlide: slide,
@@ -156,7 +156,7 @@ function AvatarCircle({
156
156
  avatar,
157
157
  isLocal
158
158
  }) {
159
- const { t } = chunkP2COO2QO_js.useTranslation();
159
+ const { t } = chunk6GFSF2ML_js.useTranslation();
160
160
  const initials = getInitials(name);
161
161
  const title = isLocal ? t("pptx.collaboration.youLabel", { name }) : name;
162
162
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -191,7 +191,7 @@ function UserAvatarBar({
191
191
  status,
192
192
  maxVisible = 5
193
193
  }) {
194
- const { t } = chunkP2COO2QO_js.useTranslation();
194
+ const { t } = chunk6GFSF2ML_js.useTranslation();
195
195
  if (status === "disconnected" || status === "error") {
196
196
  return null;
197
197
  }
@@ -265,7 +265,7 @@ function CollaborationStatusIndicator({
265
265
  connectedCount,
266
266
  onRetry
267
267
  }) {
268
- const { t } = chunkP2COO2QO_js.useTranslation();
268
+ const { t } = chunk6GFSF2ML_js.useTranslation();
269
269
  const style = STATUS_STYLES[status];
270
270
  return /* @__PURE__ */ jsxRuntime.jsxs(
271
271
  "div",
@@ -306,7 +306,7 @@ function FollowModeBar({
306
306
  followedClientId,
307
307
  onFollow
308
308
  }) {
309
- const { t } = chunkP2COO2QO_js.useTranslation();
309
+ const { t } = chunk6GFSF2ML_js.useTranslation();
310
310
  if (presences.length === 0) {
311
311
  return null;
312
312
  }
@@ -411,7 +411,7 @@ function SectionContextMenu({
411
411
  onAddSection,
412
412
  onClose
413
413
  }) {
414
- const { t } = chunkP2COO2QO_js.useTranslation();
414
+ const { t } = chunk6GFSF2ML_js.useTranslation();
415
415
  React108.useEffect(() => {
416
416
  const onKeyDown = (event) => {
417
417
  if (event.key === "Escape") {
@@ -512,7 +512,7 @@ function SectionHeader({
512
512
  /* @__PURE__ */ jsxRuntime.jsx(
513
513
  lu.LuChevronDown,
514
514
  {
515
- className: chunkP2COO2QO_js.cn(
515
+ className: chunk6GFSF2ML_js.cn(
516
516
  "h-3 w-3 flex-shrink-0 transition-transform",
517
517
  isCollapsed ? "-rotate-90" : "rotate-0"
518
518
  )
@@ -587,7 +587,7 @@ function SlideContextMenu({
587
587
  onAddSection,
588
588
  onClose
589
589
  }) {
590
- const { t } = chunkP2COO2QO_js.useTranslation();
590
+ const { t } = chunk6GFSF2ML_js.useTranslation();
591
591
  const selected = state.selectedIndexes;
592
592
  const selectedSlides = selected.map((i) => slides[i]).filter((s) => Boolean(s));
593
593
  const entries = pptx.buildSlidePaneContextMenuEntries({
@@ -692,7 +692,7 @@ function LazyThumbnailInner({
692
692
  }
693
693
  var LazyThumbnail = /* @__PURE__ */ React108__default.default.memo(LazyThumbnailInner);
694
694
  function declaredSectionFacts(groups, sectionId) {
695
- const declared = groups.filter((group) => group.id !== chunkP2COO2QO_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunkP2COO2QO_js.UNGROUPED_SECTION_ID).map((group) => group.id);
695
+ const declared = groups.filter((group) => group.id !== chunk6GFSF2ML_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunk6GFSF2ML_js.UNGROUPED_SECTION_ID).map((group) => group.id);
696
696
  return {
697
697
  isDeclared: declared.includes(sectionId),
698
698
  index: declared.indexOf(sectionId),
@@ -749,7 +749,7 @@ function SlideItemInner({
749
749
  onDrop,
750
750
  slideRef
751
751
  }) {
752
- const { t } = chunkP2COO2QO_js.useTranslation();
752
+ const { t } = chunk6GFSF2ML_js.useTranslation();
753
753
  const isHidden = Boolean(slide.hidden);
754
754
  const cue = pptx.hiddenSlideCue(slide.hidden, "rail", slideIndex);
755
755
  const handleContextMenu = React108.useCallback(
@@ -777,7 +777,7 @@ function SlideItemInner({
777
777
  "data-pptx-chrome": "slide-row",
778
778
  "aria-describedby": cue.labelId,
779
779
  "data-pptx-slide-hidden": cue.marker,
780
- className: chunkP2COO2QO_js.cn(
780
+ className: chunk6GFSF2ML_js.cn(
781
781
  "group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
782
782
  isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
783
783
  isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
@@ -799,7 +799,7 @@ function SlideItemInner({
799
799
  /* @__PURE__ */ jsxRuntime.jsx(
800
800
  "span",
801
801
  {
802
- className: chunkP2COO2QO_js.cn(
802
+ className: chunk6GFSF2ML_js.cn(
803
803
  "text-[10px] tabular-nums text-right select-none w-full",
804
804
  isActive ? "text-primary font-medium" : "text-muted-foreground"
805
805
  ),
@@ -822,7 +822,7 @@ function SlideItemInner({
822
822
  /* @__PURE__ */ jsxRuntime.jsxs(
823
823
  "div",
824
824
  {
825
- className: chunkP2COO2QO_js.cn(
825
+ className: chunk6GFSF2ML_js.cn(
826
826
  "relative shrink-0 overflow-hidden border transition-colors bg-white",
827
827
  isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
828
828
  ),
@@ -1020,8 +1020,8 @@ function SlidesPaneSidebar({
1020
1020
  fieldContext,
1021
1021
  tableStyleContext
1022
1022
  }) {
1023
- const { t } = chunkP2COO2QO_js.useTranslation();
1024
- const collab = chunkXG4WSJ4O_js.useCollaboration();
1023
+ const { t } = chunk6GFSF2ML_js.useTranslation();
1024
+ const collab = chunk3AZ6ESJU_js.useCollaboration();
1025
1025
  const slideRefs = React108.useRef(/* @__PURE__ */ new Map());
1026
1026
  const renameInputRef = React108.useRef(null);
1027
1027
  const slidePresenceMap = React108.useMemo(() => {
@@ -1046,7 +1046,7 @@ function SlidesPaneSidebar({
1046
1046
  () => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
1047
1047
  [canvasSize.width, canvasSize.height, previewWidth]
1048
1048
  );
1049
- const showSectionHeaders = sectionGroups.some((group) => group.id !== chunkP2COO2QO_js.DEFAULT_SECTION_GROUP_ID);
1049
+ const showSectionHeaders = sectionGroups.some((group) => group.id !== chunk6GFSF2ML_js.DEFAULT_SECTION_GROUP_ID);
1050
1050
  const {
1051
1051
  collapsedSections,
1052
1052
  renamingSectionId,
@@ -1116,7 +1116,7 @@ function SlidesPaneSidebar({
1116
1116
  [sectionGroups, showSectionHeaders, effectiveCollapsed]
1117
1117
  );
1118
1118
  const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
1119
- const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkXG4WSJ4O_js.useVirtualizedSlides({
1119
+ const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunk3AZ6ESJU_js.useVirtualizedSlides({
1120
1120
  totalItems: shouldVirtualize ? flatItems.length : 0,
1121
1121
  itemHeight: estimatedItemHeight
1122
1122
  });
@@ -1400,7 +1400,7 @@ function SlideTemplatePreview({
1400
1400
  transformOrigin: "top left"
1401
1401
  },
1402
1402
  children: previewSlide.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
1403
- chunkXG4WSJ4O_js.StaticElementRenderer,
1403
+ chunk3AZ6ESJU_js.StaticElementRenderer,
1404
1404
  {
1405
1405
  element,
1406
1406
  activeSlide: previewSlide,
@@ -1468,8 +1468,8 @@ function SlideTemplateGalleryDialog({
1468
1468
  onInsert,
1469
1469
  scheme
1470
1470
  }) {
1471
- const { t } = chunkP2COO2QO_js.useTranslation();
1472
- const { panelStyle, handlers: dragHandlers } = chunkXG4WSJ4O_js.useModalDismissDrag(onClose);
1471
+ const { t } = chunk6GFSF2ML_js.useTranslation();
1472
+ const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
1473
1473
  const [selected, setSelected] = React108.useState(null);
1474
1474
  const dialogRef = React108.useRef(null);
1475
1475
  useModalFocus(isOpen, dialogRef, onClose);
@@ -1554,7 +1554,7 @@ function SlideTemplateGalleryDialog({
1554
1554
  onInsert(spec.id);
1555
1555
  onClose();
1556
1556
  },
1557
- className: chunkP2COO2QO_js.cn(
1557
+ className: chunk6GFSF2ML_js.cn(
1558
1558
  "flex flex-col items-center gap-1 p-2 rounded border transition-colors",
1559
1559
  selected === spec.id ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
1560
1560
  ),
@@ -1764,7 +1764,7 @@ function nowLocalInputValue() {
1764
1764
  return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}T${pad(now.getHours())}:${pad(now.getMinutes())}`;
1765
1765
  }
1766
1766
  function DateTimeFieldDialog(p) {
1767
- const { t } = chunkP2COO2QO_js.useTranslation();
1767
+ const { t } = chunk6GFSF2ML_js.useTranslation();
1768
1768
  const [datePickerValue, setDatePickerValue] = React108.useState(nowLocalInputValue);
1769
1769
  const [dateFormat, setDateFormat] = React108.useState("locale");
1770
1770
  const confirmDatePicker = React108.useCallback(() => {
@@ -1870,7 +1870,7 @@ function useViewerCustomizationContext() {
1870
1870
  return React108.useContext(ViewerCustomizationContext);
1871
1871
  }
1872
1872
  function InsertSection(p) {
1873
- const { t } = chunkP2COO2QO_js.useTranslation();
1873
+ const { t } = chunk6GFSF2ML_js.useTranslation();
1874
1874
  const customization = useViewerCustomizationContext();
1875
1875
  const ref = React108.useRef(null);
1876
1876
  const [datePickerOpen, setDatePickerOpen] = React108.useState(false);
@@ -2019,8 +2019,8 @@ function MobileSheet({
2019
2019
  headerRight
2020
2020
  }) {
2021
2021
  const sheetRef = React108.useRef(null);
2022
- const { t } = chunkP2COO2QO_js.useTranslation();
2023
- const { dragY, dragging, handlers } = chunkXG4WSJ4O_js.useSheetDismissDrag(onClose);
2022
+ const { t } = chunk6GFSF2ML_js.useTranslation();
2023
+ const { dragY, dragging, handlers } = chunk3AZ6ESJU_js.useSheetDismissDrag(onClose);
2024
2024
  useModalFocus(open, sheetRef, onClose);
2025
2025
  if (!open) {
2026
2026
  return null;
@@ -2044,7 +2044,7 @@ function MobileSheet({
2044
2044
  "aria-modal": "true",
2045
2045
  "aria-label": typeof title === "string" ? title : t("pptx.mobileSheet.ariaLabel"),
2046
2046
  tabIndex: -1,
2047
- className: chunkP2COO2QO_js.cn(
2047
+ className: chunk6GFSF2ML_js.cn(
2048
2048
  "relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
2049
2049
  "animate-in slide-in-from-bottom duration-200",
2050
2050
  className
@@ -2091,7 +2091,7 @@ function MobileSheet({
2091
2091
  ] });
2092
2092
  }
2093
2093
  function MobileInsertSheet(p) {
2094
- const { t } = chunkP2COO2QO_js.useTranslation();
2094
+ const { t } = chunk6GFSF2ML_js.useTranslation();
2095
2095
  const close = () => p.onCloseMobileInsert?.();
2096
2096
  const customization = useViewerCustomizationContext();
2097
2097
  const [dateOpen, setDateOpen] = React108.useState(false);
@@ -2167,7 +2167,7 @@ function MobileInsertSheet(p) {
2167
2167
  ] });
2168
2168
  }
2169
2169
  function AnimationsSection(p) {
2170
- const { t } = chunkP2COO2QO_js.useTranslation();
2170
+ const { t } = chunk6GFSF2ML_js.useTranslation();
2171
2171
  const ref = React108.useRef(null);
2172
2172
  const [previewActive, setPreviewActive] = React108.useState(false);
2173
2173
  const timer = React108.useRef(void 0);
@@ -2248,7 +2248,7 @@ function WebHomeControls({
2248
2248
  onPopup,
2249
2249
  layoutArtwork
2250
2250
  }) {
2251
- const { t } = chunkP2COO2QO_js.useTranslation();
2251
+ const { t } = chunk6GFSF2ML_js.useTranslation();
2252
2252
  const ref = React108.useRef(null);
2253
2253
  React108.useEffect(() => {
2254
2254
  if (ref.current) {
@@ -2289,7 +2289,7 @@ function WebHomeControls({
2289
2289
  function ShapeArrangeExtras(p) {
2290
2290
  const commands = useShapeFormatContext();
2291
2291
  const crop = commands?.crop;
2292
- const { isHidden } = chunkXG4WSJ4O_js.useToolbarVisibility(p.hiddenActions);
2292
+ const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
2293
2293
  const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
2294
2294
  const controls = React108.useMemo(
2295
2295
  () => pptx.arrangeShapeHomeControls({
@@ -2340,7 +2340,7 @@ function ShapeArrangeExtras(p) {
2340
2340
  return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "arrange-shape", controls, onRequest: request });
2341
2341
  }
2342
2342
  function ArrangeSection(p) {
2343
- const { t } = chunkP2COO2QO_js.useTranslation();
2343
+ const { t } = chunk6GFSF2ML_js.useTranslation();
2344
2344
  const {
2345
2345
  onAlignElements,
2346
2346
  onDistributeElements,
@@ -2447,7 +2447,7 @@ function RibbonGallery({
2447
2447
  tagControl = true,
2448
2448
  onCommand
2449
2449
  }) {
2450
- const { t } = chunkP2COO2QO_js.useTranslation();
2450
+ const { t } = chunk6GFSF2ML_js.useTranslation();
2451
2451
  const ref = React108.useRef(null);
2452
2452
  const commands = useRibbonGalleryCommands();
2453
2453
  const context = commands?.context;
@@ -2582,7 +2582,7 @@ function WebRibbonToggle({
2582
2582
  );
2583
2583
  }
2584
2584
  function TransitionsSection(p) {
2585
- const { t } = chunkP2COO2QO_js.useTranslation();
2585
+ const { t } = chunk6GFSF2ML_js.useTranslation();
2586
2586
  const ref = React108.useRef(null);
2587
2587
  const draft = React108.useMemo(() => pptx.readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
2588
2588
  const transition = p.activeSlide?.transition;
@@ -2624,7 +2624,7 @@ function TransitionsSection(p) {
2624
2624
  case "soundPreview": {
2625
2625
  const url = pptx.ribbonTransitionStockSoundUrl(transition);
2626
2626
  if (url) {
2627
- chunkXG4WSJ4O_js.playAnimationSound(url);
2627
+ chunk3AZ6ESJU_js.playAnimationSound(url);
2628
2628
  }
2629
2629
  break;
2630
2630
  }
@@ -2643,7 +2643,7 @@ function TransitionsSection(p) {
2643
2643
  return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-transitions", { ref });
2644
2644
  }
2645
2645
  function DesignSection(p) {
2646
- const { t } = chunkP2COO2QO_js.useTranslation();
2646
+ const { t } = chunk6GFSF2ML_js.useTranslation();
2647
2647
  const actions = {
2648
2648
  "design.themes.browseThemes": p.onToggleThemeGallery,
2649
2649
  "design.themes.editTheme": p.onToggleThemeEditor,
@@ -2706,7 +2706,7 @@ function useRecentColors() {
2706
2706
  return React108.useContext(RecentColorsContext);
2707
2707
  }
2708
2708
  function DrawSection(p) {
2709
- const { t } = chunkP2COO2QO_js.useTranslation();
2709
+ const { t } = chunk6GFSF2ML_js.useTranslation();
2710
2710
  const { pushColor, recentColors } = useRecentColors();
2711
2711
  const ref = React108.useRef(null);
2712
2712
  React108.useEffect(() => {
@@ -2804,7 +2804,7 @@ var AccountAuthContext = /* @__PURE__ */ React108.createContext(
2804
2804
  );
2805
2805
  var cardClass = "border border-border bg-card p-6 text-card-foreground";
2806
2806
  function AccountPage() {
2807
- const { t } = chunkP2COO2QO_js.useTranslation();
2807
+ const { t } = chunk6GFSF2ML_js.useTranslation();
2808
2808
  const accountAuth = React108.useContext(AccountAuthContext);
2809
2809
  const storage = useViewerStorage();
2810
2810
  const cloud = useViewerCloudFiles();
@@ -2832,7 +2832,7 @@ function AccountPage() {
2832
2832
  refreshUsage();
2833
2833
  setTimeout(() => setCleared(false), 4e3);
2834
2834
  };
2835
- const version = "4.74.0" ;
2835
+ const version = "4.75.0" ;
2836
2836
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
2837
2837
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
2838
2838
  /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -2872,7 +2872,7 @@ function AccountPage() {
2872
2872
  "aria-label": color,
2873
2873
  "aria-pressed": profile.avatarColor === color,
2874
2874
  onClick: () => updateProfile({ avatarColor: color }),
2875
- className: chunkP2COO2QO_js.cn(
2875
+ className: chunk6GFSF2ML_js.cn(
2876
2876
  "size-7 rounded-full border-2 transition-transform",
2877
2877
  profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
2878
2878
  ),
@@ -2947,7 +2947,7 @@ function BackstageAction(props) {
2947
2947
  ] });
2948
2948
  }
2949
2949
  function BackstageNewGallery(props) {
2950
- const { t } = chunkP2COO2QO_js.useTranslation();
2950
+ const { t } = chunk6GFSF2ML_js.useTranslation();
2951
2951
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2952
2952
  /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mt-7 text-[17px] font-semibold", children: t("pptx.backstage.newHeading") }),
2953
2953
  /* @__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(
@@ -2973,7 +2973,7 @@ function BackstageNewGallery(props) {
2973
2973
  ] });
2974
2974
  }
2975
2975
  function BackstageRecentList(props) {
2976
- const { t } = chunkP2COO2QO_js.useTranslation();
2976
+ const { t } = chunk6GFSF2ML_js.useTranslation();
2977
2977
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 border-t border-border", children: [
2978
2978
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_120px_90px] px-3 py-2 text-[11px] font-semibold text-muted-foreground", children: [
2979
2979
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: t("pptx.backstage.columnName") }),
@@ -3027,7 +3027,7 @@ function BackstageCards({
3027
3027
  props,
3028
3028
  run
3029
3029
  }) {
3030
- const { t } = chunkP2COO2QO_js.useTranslation();
3030
+ const { t } = chunk6GFSF2ML_js.useTranslation();
3031
3031
  const handlers = {
3032
3032
  protect: props.onOpenPasswordProtection,
3033
3033
  inspect: props.onOpenDocumentProperties,
@@ -3089,7 +3089,7 @@ function BackstageNavIcon({ page }) {
3089
3089
  return Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-[17px] shrink-0", "aria-hidden": "true" }) : null;
3090
3090
  }
3091
3091
  function FileSection(p) {
3092
- const { t, locale } = chunkP2COO2QO_js.useTranslation();
3092
+ const { t, locale } = chunk6GFSF2ML_js.useTranslation();
3093
3093
  const [requestedPage, setRequestedPage] = React108.useState("home");
3094
3094
  const customization = useViewerCustomizationContext();
3095
3095
  const nav = pptx.backstageNavEntries(pptx.BACKSTAGE_NAV, customization);
@@ -3097,7 +3097,7 @@ function FileSection(p) {
3097
3097
  const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
3098
3098
  const [query, setQuery] = React108.useState("");
3099
3099
  const [recent, setRecent] = React108.useState([]);
3100
- const { isHidden } = chunkXG4WSJ4O_js.useToolbarVisibility(p.hiddenActions);
3100
+ const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
3101
3101
  const exportHidden = isHidden("export");
3102
3102
  const storage = useViewerStorage();
3103
3103
  const cloud = useViewerCloudFiles();
@@ -3366,7 +3366,7 @@ function RibbonMenu({
3366
3366
  return /* @__PURE__ */ jsxRuntime.jsx(
3367
3367
  "div",
3368
3368
  {
3369
- className: chunkP2COO2QO_js.cn("fixed z-50", className),
3369
+ className: chunk6GFSF2ML_js.cn("fixed z-50", className),
3370
3370
  style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
3371
3371
  children
3372
3372
  }
@@ -3376,7 +3376,7 @@ var THUMB_WIDTH = 128;
3376
3376
  var THUMB_HEIGHT = 72;
3377
3377
  var MAX_PREVIEW_ELEMENTS = 100;
3378
3378
  function LayoutGalleryMenu(p) {
3379
- const { t } = chunkP2COO2QO_js.useTranslation();
3379
+ const { t } = chunk6GFSF2ML_js.useTranslation();
3380
3380
  return /* @__PURE__ */ jsxRuntime.jsx(RibbonMenu, { anchorRef: p.anchorRef, className: "flex flex-col w-[620px] pt-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
3381
3381
  "div",
3382
3382
  {
@@ -3392,7 +3392,7 @@ function LayoutGalleryMenu(p) {
3392
3392
  type: "button",
3393
3393
  "aria-current": isCurrent ? "true" : void 0,
3394
3394
  title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
3395
- className: chunkP2COO2QO_js.cn(
3395
+ className: chunk6GFSF2ML_js.cn(
3396
3396
  "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",
3397
3397
  isCurrent ? "border-primary bg-primary/10" : "border-transparent"
3398
3398
  ),
@@ -3466,7 +3466,7 @@ function LayoutArtwork({
3466
3466
  backgroundColor
3467
3467
  };
3468
3468
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
3469
- chunkXG4WSJ4O_js.StaticElementRenderer,
3469
+ chunk3AZ6ESJU_js.StaticElementRenderer,
3470
3470
  {
3471
3471
  element,
3472
3472
  activeSlide: slide,
@@ -3741,7 +3741,7 @@ function WebRibbonSection({
3741
3741
  return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-section", { ref });
3742
3742
  }
3743
3743
  function ReviewSection(p) {
3744
- const { t } = chunkP2COO2QO_js.useTranslation();
3744
+ const { t } = chunk6GFSF2ML_js.useTranslation();
3745
3745
  const [activeCommentId, setActiveCommentId] = React108.useState(null);
3746
3746
  React108.useEffect(() => pptx.trackActiveComment(document, setActiveCommentId), []);
3747
3747
  const host = p.commentsHost;
@@ -3801,7 +3801,7 @@ function SlideShowOptions({
3801
3801
  children
3802
3802
  }) {
3803
3803
  const ref = React108.useRef(null);
3804
- const { t } = chunkP2COO2QO_js.useTranslation();
3804
+ const { t } = chunk6GFSF2ML_js.useTranslation();
3805
3805
  React108.useLayoutEffect(() => {
3806
3806
  if (!ref.current) {
3807
3807
  return;
@@ -3820,8 +3820,8 @@ function SlideShowOptions({
3820
3820
  return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-slide-show-options", { ref, children });
3821
3821
  }
3822
3822
  function SubtitleSettingsControl() {
3823
- const { t } = chunkP2COO2QO_js.useTranslation();
3824
- const supplied = React108.useContext(chunkXG4WSJ4O_js.ViewerOptionsStoreContext);
3823
+ const { t } = chunk6GFSF2ML_js.useTranslation();
3824
+ const supplied = React108.useContext(chunk3AZ6ESJU_js.ViewerOptionsStoreContext);
3825
3825
  const fallback = React108.useRef(null);
3826
3826
  if (!supplied) {
3827
3827
  fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
@@ -3854,8 +3854,8 @@ function SubtitleSettingsControl() {
3854
3854
  );
3855
3855
  }
3856
3856
  function SlideShowSection(p) {
3857
- const { t } = chunkP2COO2QO_js.useTranslation();
3858
- const { isHidden } = chunkXG4WSJ4O_js.useToolbarVisibility(p.hiddenActions);
3857
+ const { t } = chunk6GFSF2ML_js.useTranslation();
3858
+ const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
3859
3859
  const actions = {
3860
3860
  "slideShow.startSlideShow.fromBeginning": p.onPresentFromBeginning ?? (() => p.onSetMode("present")),
3861
3861
  "slideShow.startSlideShow.fromCurrent": p.onPresent,
@@ -4099,7 +4099,7 @@ function FontFormatGroup(p) {
4099
4099
  return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font", controls, onRequest: request });
4100
4100
  }
4101
4101
  function FontPickerGroup(p) {
4102
- const { t } = chunkP2COO2QO_js.useTranslation();
4102
+ const { t } = chunk6GFSF2ML_js.useTranslation();
4103
4103
  const { enabled, fontFamily, fontSize, themeFonts, embeddedFonts, customFonts } = p;
4104
4104
  const { onFamily, onSize } = p;
4105
4105
  const controls = React108.useMemo(
@@ -4122,7 +4122,7 @@ function FontPickerGroup(p) {
4122
4122
  return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font-picker", controls, onRequest: request });
4123
4123
  }
4124
4124
  function ParagraphGroup(p) {
4125
- const { t } = chunkP2COO2QO_js.useTranslation();
4125
+ const { t } = chunk6GFSF2ML_js.useTranslation();
4126
4126
  const { canMut, canFormat, effectiveTs, onUpdateTextStyle, onToggleBullets } = p;
4127
4127
  const commands = useRibbonGalleryCommands();
4128
4128
  const align = pptx.paragraphHomeAlign(effectiveTs?.align);
@@ -4223,7 +4223,7 @@ function useParagraphListKind(element) {
4223
4223
  return React108.useSyncExternalStore(subscribe, read, readServer);
4224
4224
  }
4225
4225
  function TextSection(p) {
4226
- const { t } = chunkP2COO2QO_js.useTranslation();
4226
+ const { t } = chunk6GFSF2ML_js.useTranslation();
4227
4227
  const hasSel = Boolean(p.selectedElement);
4228
4228
  const canMut = hasSel && p.canEdit;
4229
4229
  const { fontFamily, fontSize } = extractFontInfo(p.selectedElement, p.themeFonts);
@@ -4299,7 +4299,7 @@ function TextSection(p) {
4299
4299
  ] });
4300
4300
  }
4301
4301
  function ViewSection(p) {
4302
- const { t } = chunkP2COO2QO_js.useTranslation();
4302
+ const { t } = chunk6GFSF2ML_js.useTranslation();
4303
4303
  const ref = React108.useRef(null);
4304
4304
  React108.useEffect(() => {
4305
4305
  const host = ref.current;
@@ -4372,10 +4372,10 @@ var MENU_ITEMS = [
4372
4372
  { key: "file", label: "pptx.ribbon.tab.file", icon: lu.LuFile }
4373
4373
  ];
4374
4374
  function MobileMenuSheet(props) {
4375
- const { t } = chunkP2COO2QO_js.useTranslation();
4375
+ const { t } = chunk6GFSF2ML_js.useTranslation();
4376
4376
  const { open, onClose } = props;
4377
4377
  const [active, setActive] = React108.useState("home");
4378
- const { isTabVisible } = chunkXG4WSJ4O_js.useToolbarVisibility(props.hiddenActions);
4378
+ const { isTabVisible } = chunk3AZ6ESJU_js.useToolbarVisibility(props.hiddenActions);
4379
4379
  return /* @__PURE__ */ jsxRuntime.jsx(
4380
4380
  MobileSheet,
4381
4381
  {
@@ -4389,7 +4389,7 @@ function MobileMenuSheet(props) {
4389
4389
  {
4390
4390
  type: "button",
4391
4391
  onClick: () => setActive(active === key ? null : key),
4392
- className: chunkP2COO2QO_js.cn(
4392
+ className: chunk6GFSF2ML_js.cn(
4393
4393
  "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]",
4394
4394
  active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
4395
4395
  ),
@@ -4664,10 +4664,10 @@ function MobileSectionBody({
4664
4664
  }
4665
4665
  }
4666
4666
  function MobileToolbar(props) {
4667
- const { t } = chunkP2COO2QO_js.useTranslation();
4667
+ const { t } = chunk6GFSF2ML_js.useTranslation();
4668
4668
  const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
4669
4669
  const [menuOpen, setMenuOpen] = React108.useState(false);
4670
- const { isHidden } = chunkXG4WSJ4O_js.useToolbarVisibility(props.hiddenActions);
4670
+ const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(props.hiddenActions);
4671
4671
  const showEdit = mode === "edit" || mode === "master";
4672
4672
  const hidden = [];
4673
4673
  if (isHidden("undo")) {
@@ -4713,8 +4713,8 @@ function MobileToolbar(props) {
4713
4713
  ] });
4714
4714
  }
4715
4715
  function ChartSelectionStrip() {
4716
- const { t } = chunkP2COO2QO_js.useTranslation();
4717
- const commands = chunkXG4WSJ4O_js.useChartFormatContext();
4716
+ const { t } = chunk6GFSF2ML_js.useTranslation();
4717
+ const commands = chunk3AZ6ESJU_js.useChartFormatContext();
4718
4718
  const chart = commands?.chart;
4719
4719
  const chartData = chart?.type === "chart" ? chart.chartData : void 0;
4720
4720
  const controls = React108.useMemo(
@@ -4745,7 +4745,7 @@ function PictureSizeStrip({
4745
4745
  hiddenActions
4746
4746
  }) {
4747
4747
  const crop = useShapeFormatContext()?.crop;
4748
- const { isHidden } = chunkXG4WSJ4O_js.useToolbarVisibility(hiddenActions);
4748
+ const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(hiddenActions);
4749
4749
  const controls = React108.useMemo(
4750
4750
  () => pptx.pictureSizeHomeControls({
4751
4751
  editable: Boolean(crop),
@@ -4762,7 +4762,7 @@ function PictureSizeStrip({
4762
4762
  return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "picture-size", controls, onRequest: request });
4763
4763
  }
4764
4764
  function useTranslateOr() {
4765
- const { t } = chunkP2COO2QO_js.useTranslation();
4765
+ const { t } = chunk6GFSF2ML_js.useTranslation();
4766
4766
  return (key, fallback) => pptx.galleryTextLabel(t, key, fallback);
4767
4767
  }
4768
4768
  function ContextualTabSection({
@@ -4785,7 +4785,7 @@ function ContextualTabSection({
4785
4785
  )) });
4786
4786
  }
4787
4787
  function DrawingGroup(p) {
4788
- const { t } = chunkP2COO2QO_js.useTranslation();
4788
+ const { t } = chunk6GFSF2ML_js.useTranslation();
4789
4789
  const { recentColors, pushColor } = useRecentColors();
4790
4790
  const themeColors = useThemeColorMap();
4791
4791
  const commands = useRibbonGalleryCommands();
@@ -4871,7 +4871,7 @@ function DrawingGroup(p) {
4871
4871
  ] });
4872
4872
  }
4873
4873
  function EditingSection(p) {
4874
- const { t } = chunkP2COO2QO_js.useTranslation();
4874
+ const { t } = chunk6GFSF2ML_js.useTranslation();
4875
4875
  const { onToggleFindReplace, onSelectAll } = p;
4876
4876
  const controls = React108.useMemo(
4877
4877
  () => pptx.editingHomeControls({ selectAll: Boolean(onSelectAll) }),
@@ -4917,8 +4917,8 @@ function RibbonAddInSection({ tab }) {
4917
4917
  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";
4918
4918
  var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
4919
4919
  function RibbonTabBar(p) {
4920
- const { t } = chunkP2COO2QO_js.useTranslation();
4921
- const viewerOptions = chunkXG4WSJ4O_js.useViewerOptionsContext();
4920
+ const { t } = chunk6GFSF2ML_js.useTranslation();
4921
+ const viewerOptions = chunk3AZ6ESJU_js.useViewerOptionsContext();
4922
4922
  return /* @__PURE__ */ jsxRuntime.jsxs(
4923
4923
  "div",
4924
4924
  {
@@ -4926,7 +4926,7 @@ function RibbonTabBar(p) {
4926
4926
  "data-pptx-chrome": "ribbon-tabs",
4927
4927
  className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
4928
4928
  children: [
4929
- chunkP2COO2QO_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
4929
+ chunk6GFSF2ML_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
4930
4930
  const selected = p.activeSection === s.id;
4931
4931
  return /* @__PURE__ */ jsxRuntime.jsx(
4932
4932
  "button",
@@ -4936,7 +4936,7 @@ function RibbonTabBar(p) {
4936
4936
  "aria-selected": selected,
4937
4937
  title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
4938
4938
  onClick: () => p.onSelectSection(s.id),
4939
- className: chunkP2COO2QO_js.cn(
4939
+ className: chunk6GFSF2ML_js.cn(
4940
4940
  TAB_BASE,
4941
4941
  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"
4942
4942
  ),
@@ -4956,7 +4956,7 @@ function RibbonTabBar(p) {
4956
4956
  ...{ [pptx.RIBBON_ADD_IN_TAB_ATTR]: tab.id },
4957
4957
  title: pptx.resolveScreenTip(viewerOptions, tab.label),
4958
4958
  onClick: () => p.onSelectAddIn?.(tab.id),
4959
- className: chunkP2COO2QO_js.cn(
4959
+ className: chunk6GFSF2ML_js.cn(
4960
4960
  TAB_BASE,
4961
4961
  selected ? `text-foreground ${TAB_UNDERLINE}` : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
4962
4962
  ),
@@ -4977,7 +4977,7 @@ function RibbonTabBar(p) {
4977
4977
  ...{ [pptx.RIBBON_CONTEXTUAL_TAB_ATTR]: id },
4978
4978
  title: pptx.resolveScreenTip(viewerOptions, label),
4979
4979
  onClick: () => p.onSelectContextual(id),
4980
- className: chunkP2COO2QO_js.cn(
4980
+ className: chunk6GFSF2ML_js.cn(
4981
4981
  TAB_BASE,
4982
4982
  "text-primary",
4983
4983
  selected ? TAB_UNDERLINE : "hover:bg-primary/10"
@@ -4994,10 +4994,10 @@ function RibbonTabBar(p) {
4994
4994
  );
4995
4995
  }
4996
4996
  function TabRowActions(p) {
4997
- const { t } = chunkP2COO2QO_js.useTranslation();
4998
- const collab = chunkXG4WSJ4O_js.useCollaboration();
4997
+ const { t } = chunk6GFSF2ML_js.useTranslation();
4998
+ const collab = chunk3AZ6ESJU_js.useCollaboration();
4999
4999
  const isCollaborating = Boolean(collab && collab.status === "connected");
5000
- const { isHidden } = chunkXG4WSJ4O_js.useToolbarVisibility(p.hiddenActions);
5000
+ const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
5001
5001
  const customization = useViewerCustomizationContext();
5002
5002
  const ref = React108.useRef(null);
5003
5003
  const handlers = React108.useRef(p);
@@ -5051,8 +5051,8 @@ function TabRowActions(p) {
5051
5051
  ] });
5052
5052
  }
5053
5053
  function TitleBarElement(p) {
5054
- const { t } = chunkP2COO2QO_js.useTranslation();
5055
- const options = chunkXG4WSJ4O_js.useViewerOptionsContext();
5054
+ const { t } = chunk6GFSF2ML_js.useTranslation();
5055
+ const options = chunk3AZ6ESJU_js.useViewerOptionsContext();
5056
5056
  const customization = useViewerCustomizationContext();
5057
5057
  const ref = React108.useRef(null);
5058
5058
  const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
@@ -5117,7 +5117,7 @@ function CustomShowsControls({
5117
5117
  onDeleteActiveCustomShow,
5118
5118
  onToggleCurrentSlideInActiveShow
5119
5119
  }) {
5120
- const { t } = chunkP2COO2QO_js.useTranslation();
5120
+ const { t } = chunk6GFSF2ML_js.useTranslation();
5121
5121
  if (customShows.length > 0) {
5122
5122
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5123
5123
  sep,
@@ -5172,7 +5172,7 @@ function CustomShowsControls({
5172
5172
  {
5173
5173
  type: "button",
5174
5174
  onClick: onToggleCurrentSlideInActiveShow,
5175
- className: chunkP2COO2QO_js.cn(
5175
+ className: chunk6GFSF2ML_js.cn(
5176
5176
  "px-2 py-1 rounded text-[11px] transition-colors",
5177
5177
  isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
5178
5178
  ),
@@ -5211,7 +5211,7 @@ function PresentDropdown({
5211
5211
  onToggleSubtitles,
5212
5212
  showSubtitles
5213
5213
  }) {
5214
- const { t } = chunkP2COO2QO_js.useTranslation();
5214
+ const { t } = chunk6GFSF2ML_js.useTranslation();
5215
5215
  const [open, setOpen] = React108.useState(false);
5216
5216
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
5217
5217
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-stretch rounded border border-border bg-muted text-xs overflow-hidden", children: [
@@ -5220,7 +5220,7 @@ function PresentDropdown({
5220
5220
  {
5221
5221
  type: "button",
5222
5222
  onClick: onPresent,
5223
- className: chunkP2COO2QO_js.cn(
5223
+ className: chunk6GFSF2ML_js.cn(
5224
5224
  "px-2 py-1 transition-colors",
5225
5225
  isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
5226
5226
  ),
@@ -5233,7 +5233,7 @@ function PresentDropdown({
5233
5233
  {
5234
5234
  type: "button",
5235
5235
  onClick: () => setOpen((prev) => !prev),
5236
- className: chunkP2COO2QO_js.cn(
5236
+ className: chunk6GFSF2ML_js.cn(
5237
5237
  "inline-flex items-center px-1 transition-colors border-l border-border",
5238
5238
  open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
5239
5239
  ),
@@ -5361,7 +5361,7 @@ function ModeSwitcher({
5361
5361
  onToggleSubtitles,
5362
5362
  showSubtitles
5363
5363
  }) {
5364
- const { t } = chunkP2COO2QO_js.useTranslation();
5364
+ const { t } = chunk6GFSF2ML_js.useTranslation();
5365
5365
  if (mode === "master") {
5366
5366
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1.5", children: [
5367
5367
  /* @__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") }),
@@ -5399,7 +5399,7 @@ var EXPORT_CARD_OF = {
5399
5399
  copyImg: "copyImage"
5400
5400
  };
5401
5401
  function OverflowMenu(p) {
5402
- const { t } = chunkP2COO2QO_js.useTranslation();
5402
+ const { t } = chunk6GFSF2ML_js.useTranslation();
5403
5403
  const customization = useViewerCustomizationContext();
5404
5404
  const offered = (k) => {
5405
5405
  const card = EXPORT_CARD_OF[k];
@@ -5436,7 +5436,7 @@ function OverflowMenu(p) {
5436
5436
  {
5437
5437
  type: "button",
5438
5438
  onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
5439
- className: chunkP2COO2QO_js.cn(
5439
+ className: chunk6GFSF2ML_js.cn(
5440
5440
  "p-1.5 rounded transition-colors",
5441
5441
  p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
5442
5442
  ),
@@ -5474,7 +5474,7 @@ function OverflowMenu(p) {
5474
5474
  ] });
5475
5475
  }
5476
5476
  function ToolbarPrimaryRow(p) {
5477
- const { t } = chunkP2COO2QO_js.useTranslation();
5477
+ const { t } = chunk6GFSF2ML_js.useTranslation();
5478
5478
  const {
5479
5479
  mode,
5480
5480
  canEdit,
@@ -5483,7 +5483,7 @@ function ToolbarPrimaryRow(p) {
5483
5483
  onToggleSidebar,
5484
5484
  onToggleInspector
5485
5485
  } = p;
5486
- const collab = chunkXG4WSJ4O_js.useCollaboration();
5486
+ const collab = chunk3AZ6ESJU_js.useCollaboration();
5487
5487
  const customization = useViewerCustomizationContext();
5488
5488
  const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
5489
5489
  const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
@@ -5503,7 +5503,7 @@ function ToolbarPrimaryRow(p) {
5503
5503
  {
5504
5504
  type: "button",
5505
5505
  onClick: onToggleSidebar,
5506
- className: chunkP2COO2QO_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
5506
+ className: chunk6GFSF2ML_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
5507
5507
  title: t("pptx.toolbar.toggleSlidesPanel"),
5508
5508
  "aria-label": t("pptx.toolbar.toggleSlidesPanel"),
5509
5509
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
@@ -5564,7 +5564,7 @@ function ToolbarPrimaryRow(p) {
5564
5564
  {
5565
5565
  type: "button",
5566
5566
  onClick: onToggleInspector,
5567
- className: chunkP2COO2QO_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
5567
+ className: chunk6GFSF2ML_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
5568
5568
  title: t("pptx.toolbar.toggleInspector"),
5569
5569
  "aria-label": t("pptx.toolbar.toggleInspector"),
5570
5570
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
@@ -5575,7 +5575,7 @@ function ToolbarPrimaryRow(p) {
5575
5575
  {
5576
5576
  type: "button",
5577
5577
  onClick: p.onToggleAiPanel,
5578
- className: chunkP2COO2QO_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
5578
+ className: chunk6GFSF2ML_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
5579
5579
  title: t("pptx.toolbar.toggleAiAssistant"),
5580
5580
  "aria-label": t("pptx.toolbar.toggleAiAssistant"),
5581
5581
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
@@ -5586,7 +5586,7 @@ function ToolbarPrimaryRow(p) {
5586
5586
  {
5587
5587
  type: "button",
5588
5588
  onClick: p.onOpenSettings ?? p.onToggleShortcuts,
5589
- className: chunkP2COO2QO_js.cn(qab, "text-muted-foreground"),
5589
+ className: chunk6GFSF2ML_js.cn(qab, "text-muted-foreground"),
5590
5590
  title: t("pptx.toolbar.settingsShortcuts"),
5591
5591
  "aria-label": t("pptx.toolbar.settings"),
5592
5592
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
@@ -5630,7 +5630,7 @@ function useContextualRibbonTab(selectedElement, customization, onFallback) {
5630
5630
  return { visible, active, fellBack, select: setChosen };
5631
5631
  }
5632
5632
  function HelpSection(p) {
5633
- const { t } = chunkP2COO2QO_js.useTranslation();
5633
+ const { t } = chunk6GFSF2ML_js.useTranslation();
5634
5634
  const groups = pptx.buildHelpRibbon(t, {
5635
5635
  options: pptx.isDialogAvailable(useViewerCustomizationContext(), "options")
5636
5636
  });
@@ -5650,7 +5650,7 @@ function HelpSection(p) {
5650
5650
  return /* @__PURE__ */ jsxRuntime.jsx(WebRibbonSection, { groups, onCommand: request });
5651
5651
  }
5652
5652
  function RecordSection(props) {
5653
- const { t } = chunkP2COO2QO_js.useTranslation();
5653
+ const { t } = chunk6GFSF2ML_js.useTranslation();
5654
5654
  const request = (id) => {
5655
5655
  if (id === "record.record.fromBeginning") {
5656
5656
  props.onRecordFromBeginning();
@@ -5783,9 +5783,9 @@ function ToolbarLateTabs({
5783
5783
  }
5784
5784
  function Toolbar(p) {
5785
5785
  const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
5786
- const { t } = chunkP2COO2QO_js.useTranslation();
5787
- const { isTabVisible } = chunkXG4WSJ4O_js.useToolbarVisibility(p.hiddenActions);
5788
- const viewerOptions = chunkXG4WSJ4O_js.useViewerOptionsContext();
5786
+ const { t } = chunk6GFSF2ML_js.useTranslation();
5787
+ const { isTabVisible } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
5788
+ const viewerOptions = chunk3AZ6ESJU_js.useViewerOptionsContext();
5789
5789
  const customization = useViewerCustomizationContext();
5790
5790
  const belowInput = React108.useMemo(
5791
5791
  () => ({
@@ -5883,7 +5883,7 @@ function Toolbar(p) {
5883
5883
  {
5884
5884
  type: "button",
5885
5885
  onClick: p.onToggleCompactToolbar,
5886
- className: chunkP2COO2QO_js.cn(
5886
+ className: chunk6GFSF2ML_js.cn(
5887
5887
  "px-2 py-1 rounded text-[11px] transition-colors mr-1",
5888
5888
  isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
5889
5889
  ),
@@ -5909,7 +5909,7 @@ function Toolbar(p) {
5909
5909
  {
5910
5910
  ref: attachOverflow,
5911
5911
  "data-pptx-chrome": "ribbon-content",
5912
- className: chunkP2COO2QO_js.cn(
5912
+ className: chunk6GFSF2ML_js.cn(
5913
5913
  // Plain controls stay compact; labelled RibbonGroups opt into stretching.
5914
5914
  // `RibbonGroupScope` wraps controls in a `display: contents` div, so its
5915
5915
  // children are this row's flex items too and must not shrink (a shrunk
@@ -6099,7 +6099,7 @@ function Toolbar(p) {
6099
6099
  );
6100
6100
  }
6101
6101
  function CanvasGuides({ guides, onDeleteGuide, onStartGuideDrag }) {
6102
- const { t } = chunkP2COO2QO_js.useTranslation();
6102
+ const { t } = chunk6GFSF2ML_js.useTranslation();
6103
6103
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: guides.map((guide) => /* @__PURE__ */ jsxRuntime.jsx(
6104
6104
  "div",
6105
6105
  {
@@ -6311,7 +6311,7 @@ function ChartQuickActionsOverlay({
6311
6311
  scale: stageScale = 1,
6312
6312
  onUpdateElement
6313
6313
  }) {
6314
- const { t } = chunkP2COO2QO_js.useTranslation();
6314
+ const { t } = chunk6GFSF2ML_js.useTranslation();
6315
6315
  const [open, setOpen] = React108.useState(null);
6316
6316
  const hostRef = React108.useRef(null);
6317
6317
  React108.useEffect(() => {
@@ -6482,7 +6482,7 @@ function CommentMarkersOverlay({
6482
6482
  canvasSize,
6483
6483
  onCommentMarkerClick
6484
6484
  }) {
6485
- const { t } = chunkP2COO2QO_js.useTranslation(), half = pptx.COMMENT_MARKER_SIZE / 2, markers = pptx.buildCommentMarkers(
6485
+ const { t } = chunk6GFSF2ML_js.useTranslation(), half = pptx.COMMENT_MARKER_SIZE / 2, markers = pptx.buildCommentMarkers(
6486
6486
  comments,
6487
6487
  canvasSize.width,
6488
6488
  canvasSize.height,
@@ -6526,7 +6526,7 @@ function ConnectorEndpointOverlay({
6526
6526
  canvasStageRef,
6527
6527
  onUpdateElement
6528
6528
  }) {
6529
- const { t } = chunkP2COO2QO_js.useTranslation();
6529
+ const { t } = chunk6GFSF2ML_js.useTranslation();
6530
6530
  const [drag, setDrag] = React108.useState(null);
6531
6531
  const candidates = React108.useMemo(
6532
6532
  () => pptx.collectConnectorSiteCandidates(elements.filter((el) => el.id !== connector.id)),
@@ -6762,7 +6762,7 @@ function DrawingOverlaySvg({
6762
6762
  onPointerDown,
6763
6763
  onPointerMove,
6764
6764
  onPointerUp,
6765
- children: isStrokeActive && liveStrokeView ? chunkXG4WSJ4O_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
6765
+ children: isStrokeActive && liveStrokeView ? chunk3AZ6ESJU_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
6766
6766
  "path",
6767
6767
  {
6768
6768
  d: liveStrokeD,
@@ -6777,7 +6777,7 @@ function DrawingOverlaySvg({
6777
6777
  }
6778
6778
  );
6779
6779
  }
6780
- function GridOverlay({ canvasSize, gridSpacingPx = chunkP2COO2QO_js.GRID_SIZE, visible }) {
6780
+ function GridOverlay({ canvasSize, gridSpacingPx = chunk6GFSF2ML_js.GRID_SIZE, visible }) {
6781
6781
  const spacing = Math.max(gridSpacingPx, 2);
6782
6782
  const patternId = React108.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
6783
6783
  if (!visible) {
@@ -6805,7 +6805,7 @@ function MotionPathOverlay({
6805
6805
  canEdit,
6806
6806
  onChangePath
6807
6807
  }) {
6808
- const { t } = chunkP2COO2QO_js.useTranslation();
6808
+ const { t } = chunk6GFSF2ML_js.useTranslation();
6809
6809
  const dragRef = React108.useRef(null);
6810
6810
  const frame = {
6811
6811
  originX: element.x + element.width / 2,
@@ -6919,7 +6919,7 @@ function MotionPathOverlay({
6919
6919
  );
6920
6920
  }
6921
6921
  function EditPointsMenu({ menu, onRun }) {
6922
- const { t } = chunkP2COO2QO_js.useTranslation();
6922
+ const { t } = chunk6GFSF2ML_js.useTranslation();
6923
6923
  const stop2 = (event) => event.stopPropagation();
6924
6924
  return /* @__PURE__ */ jsxRuntime.jsx(
6925
6925
  "div",
@@ -6965,7 +6965,7 @@ function EditPointsOverlay({
6965
6965
  onCommit,
6966
6966
  onExit
6967
6967
  }) {
6968
- const { t } = chunkP2COO2QO_js.useTranslation();
6968
+ const { t } = chunk6GFSF2ML_js.useTranslation();
6969
6969
  const [, rerender] = React108.useReducer((n) => n + 1, 0);
6970
6970
  const svgRef = React108.useRef(null);
6971
6971
  const latest = React108.useRef({ onCommit, onExit });
@@ -7121,7 +7121,7 @@ function FreeformToolOverlay({
7121
7121
  onCommit,
7122
7122
  onCancel
7123
7123
  }) {
7124
- const { t } = chunkP2COO2QO_js.useTranslation();
7124
+ const { t } = chunk6GFSF2ML_js.useTranslation();
7125
7125
  const [, rerender] = React108.useReducer((n) => n + 1, 0);
7126
7126
  const svgRef = React108.useRef(null);
7127
7127
  const latest = React108.useRef({ onCommit, onCancel });
@@ -7264,7 +7264,7 @@ function PictureCropOverlay({
7264
7264
  onUpdate,
7265
7265
  onContextMenu
7266
7266
  }) {
7267
- const { t } = chunkP2COO2QO_js.useTranslation();
7267
+ const { t } = chunk6GFSF2ML_js.useTranslation();
7268
7268
  const overlay = pptx.buildCropOverlay(element, scale);
7269
7269
  const dragRef = React108.useRef(null);
7270
7270
  const latest = React108.useRef({ scale, onUpdate });
@@ -7312,7 +7312,7 @@ function PictureCropOverlay({
7312
7312
  };
7313
7313
  };
7314
7314
  const { ghost, frame, handles } = overlay;
7315
- const src = chunkXG4WSJ4O_js.imgSrc(element);
7315
+ const src = chunk3AZ6ESJU_js.imgSrc(element);
7316
7316
  return /* @__PURE__ */ jsxRuntime.jsxs(
7317
7317
  "div",
7318
7318
  {
@@ -7488,7 +7488,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
7488
7488
  }
7489
7489
  );
7490
7490
  }
7491
- var HorizontalRuler = /* @__PURE__ */ chunkXG4WSJ4O_js.withDisplayName(
7491
+ var HorizontalRuler = /* @__PURE__ */ chunk3AZ6ESJU_js.withDisplayName(
7492
7492
  /* @__PURE__ */ React108__default.default.memo(HorizontalRulerView),
7493
7493
  "HorizontalRuler"
7494
7494
  );
@@ -7562,7 +7562,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
7562
7562
  }
7563
7563
  );
7564
7564
  }
7565
- var VerticalRuler = /* @__PURE__ */ chunkXG4WSJ4O_js.withDisplayName(
7565
+ var VerticalRuler = /* @__PURE__ */ chunk3AZ6ESJU_js.withDisplayName(
7566
7566
  /* @__PURE__ */ React108__default.default.memo(VerticalRulerView),
7567
7567
  "VerticalRuler"
7568
7568
  );
@@ -7729,10 +7729,10 @@ function SelectionHandleOverlay({
7729
7729
  position: "absolute",
7730
7730
  left: element.x,
7731
7731
  top: element.y,
7732
- width: Math.max(element.width, chunkP2COO2QO_js.MIN_ELEMENT_SIZE),
7733
- height: Math.max(element.height, chunkP2COO2QO_js.MIN_ELEMENT_SIZE),
7734
- ["--pptx-selection-width"]: `${Math.max(element.width, chunkP2COO2QO_js.MIN_ELEMENT_SIZE)}px`,
7735
- ["--pptx-selection-height"]: `${Math.max(element.height, chunkP2COO2QO_js.MIN_ELEMENT_SIZE)}px`,
7732
+ width: Math.max(element.width, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE),
7733
+ height: Math.max(element.height, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE),
7734
+ ["--pptx-selection-width"]: `${Math.max(element.width, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE)}px`,
7735
+ ["--pptx-selection-height"]: `${Math.max(element.height, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE)}px`,
7736
7736
  // Every slide element carries an explicit numeric `zIndex` (see
7737
7737
  // `getContainerStyle`), so a sibling with no z-index at all paints
7738
7738
  // at the CSS "z-index: 0" level regardless of DOM order: any
@@ -7744,7 +7744,7 @@ function SelectionHandleOverlay({
7744
7744
  // (marquee z-50, connector overlay z-55/56) to match, well clear of
7745
7745
  // any realistic per-slide element count.
7746
7746
  zIndex: 58,
7747
- transform: chunkP2COO2QO_js.getElementTransform(element),
7747
+ transform: chunk6GFSF2ML_js.getElementTransform(element),
7748
7748
  transformOrigin: "center",
7749
7749
  // Transparent everywhere a handle button is not, so a click that
7750
7750
  // misses every handle still reaches the shape (or whatever is
@@ -7756,14 +7756,14 @@ function SelectionHandleOverlay({
7756
7756
  onDoubleClick: (e) => onDoubleClick(element.id, e),
7757
7757
  onContextMenu: (e) => onContextMenu(element.id, e),
7758
7758
  children: /* @__PURE__ */ jsxRuntime.jsx(
7759
- chunkXG4WSJ4O_js.ResizeHandles,
7759
+ chunk3AZ6ESJU_js.ResizeHandles,
7760
7760
  {
7761
7761
  elementId: element.id,
7762
7762
  adjustmentHandles,
7763
7763
  onResizePointerDown,
7764
7764
  onAdjustmentPointerDown,
7765
7765
  rotation: element.rotation,
7766
- nonRotationTransform: chunkP2COO2QO_js.getElementTransformWithoutRotation(element),
7766
+ nonRotationTransform: chunk6GFSF2ML_js.getElementTransformWithoutRotation(element),
7767
7767
  onRotate: allow.rotatable ? onRotate : void 0,
7768
7768
  forcePointerEvents: true
7769
7769
  }
@@ -8467,7 +8467,7 @@ function SlideCanvas(props) {
8467
8467
  props.registerInlineEditReader
8468
8468
  ]
8469
8469
  );
8470
- return /* @__PURE__ */ jsxRuntime.jsx(chunkXG4WSJ4O_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
8470
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
8471
8471
  }
8472
8472
  function SlideCanvasContent({
8473
8473
  imagePaste,
@@ -8740,7 +8740,7 @@ function SlideCanvasContent({
8740
8740
  onPointerMove: handleStagePointerMove,
8741
8741
  onPointerUp: handleStagePointerUp,
8742
8742
  children: [
8743
- /* @__PURE__ */ jsxRuntime.jsx(chunkXG4WSJ4O_js.SlideBackgroundImageLayer, { slide: activeSlide }),
8743
+ /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.SlideBackgroundImageLayer, { slide: activeSlide }),
8744
8744
  presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
8745
8745
  /* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
8746
8746
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -8752,7 +8752,7 @@ function SlideCanvasContent({
8752
8752
  }
8753
8753
  ),
8754
8754
  templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
8755
- chunkXG4WSJ4O_js.ElementRenderer,
8755
+ chunk3AZ6ESJU_js.ElementRenderer,
8756
8756
  {
8757
8757
  element,
8758
8758
  activeSlide,
@@ -8775,7 +8775,7 @@ function SlideCanvasContent({
8775
8775
  ),
8776
8776
  renderInk: false,
8777
8777
  renderGroups: true,
8778
- adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkP2COO2QO_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
8778
+ adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk6GFSF2ML_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
8779
8779
  onResizePointerDown: stableResizePointerDown,
8780
8780
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
8781
8781
  onRotate: stableRotate,
@@ -8797,7 +8797,7 @@ function SlideCanvasContent({
8797
8797
  `tpl-${element.id}`
8798
8798
  )),
8799
8799
  activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
8800
- chunkXG4WSJ4O_js.ElementRenderer,
8800
+ chunk3AZ6ESJU_js.ElementRenderer,
8801
8801
  {
8802
8802
  element,
8803
8803
  activeSlide,
@@ -8820,7 +8820,7 @@ function SlideCanvasContent({
8820
8820
  ),
8821
8821
  renderInk: true,
8822
8822
  renderGroups: true,
8823
- adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkP2COO2QO_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
8823
+ adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk6GFSF2ML_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
8824
8824
  onResizePointerDown: stableResizePointerDown,
8825
8825
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
8826
8826
  onRotate: stableRotate,
@@ -8864,7 +8864,7 @@ function SlideCanvasContent({
8864
8864
  editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
8865
8865
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
8866
8866
  /* @__PURE__ */ jsxRuntime.jsx(
8867
- chunkXG4WSJ4O_js.ElementRenderer,
8867
+ chunk3AZ6ESJU_js.ElementRenderer,
8868
8868
  {
8869
8869
  element: editingMember.member,
8870
8870
  activeSlide,
@@ -8899,11 +8899,11 @@ function SlideCanvasContent({
8899
8899
  `group-member-edit-${editingMember.member.id}`
8900
8900
  )
8901
8901
  ] }),
8902
- selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunkP2COO2QO_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
8902
+ selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunk6GFSF2ML_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
8903
8903
  SelectionHandleOverlay,
8904
8904
  {
8905
8905
  element: selectedElement,
8906
- adjustmentHandles: chunkP2COO2QO_js.getShapeAdjustmentHandleDescriptors(selectedElement),
8906
+ adjustmentHandles: chunk6GFSF2ML_js.getShapeAdjustmentHandleDescriptors(selectedElement),
8907
8907
  onResizePointerDown: stableResizePointerDown,
8908
8908
  onAdjustmentPointerDown: stableAdjustmentPointerDown,
8909
8909
  onRotate: stableRotate,
@@ -9010,14 +9010,14 @@ function SlideCanvasContent({
9010
9010
  );
9011
9011
  }
9012
9012
  function LoadingState({ className, fontProgress }) {
9013
- const { t } = chunkP2COO2QO_js.useTranslation();
9013
+ const { t } = chunk6GFSF2ML_js.useTranslation();
9014
9014
  return /* @__PURE__ */ jsxRuntime.jsx(
9015
9015
  "div",
9016
9016
  {
9017
9017
  role: "status",
9018
9018
  "aria-live": "polite",
9019
9019
  "aria-atomic": "true",
9020
- className: chunkP2COO2QO_js.cn(
9020
+ className: chunk6GFSF2ML_js.cn(
9021
9021
  "h-full w-full flex items-center justify-center text-muted-foreground",
9022
9022
  className
9023
9023
  ),
@@ -9043,7 +9043,7 @@ function ErrorState({ className, error }) {
9043
9043
  {
9044
9044
  role: "alert",
9045
9045
  "aria-live": "assertive",
9046
- className: chunkP2COO2QO_js.cn(
9046
+ className: chunk6GFSF2ML_js.cn(
9047
9047
  "h-full w-full flex items-center justify-center p-6 text-center text-red-400",
9048
9048
  className
9049
9049
  ),
@@ -9052,7 +9052,7 @@ function ErrorState({ className, error }) {
9052
9052
  );
9053
9053
  }
9054
9054
  function ShortcutPanel({ isOpen, onClose }) {
9055
- const { t } = chunkP2COO2QO_js.useTranslation();
9055
+ const { t } = chunk6GFSF2ML_js.useTranslation();
9056
9056
  if (!isOpen) {
9057
9057
  return null;
9058
9058
  }
@@ -9074,7 +9074,7 @@ function ShortcutPanel({ isOpen, onClose }) {
9074
9074
  }
9075
9075
  )
9076
9076
  ] }),
9077
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkP2COO2QO_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
9077
+ /* @__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(
9078
9078
  "div",
9079
9079
  {
9080
9080
  className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
@@ -9096,7 +9096,7 @@ function AccessibilityPanel({
9096
9096
  reducedMotion,
9097
9097
  onToggleReducedMotion
9098
9098
  }) {
9099
- const { t } = chunkP2COO2QO_js.useTranslation();
9099
+ const { t } = chunk6GFSF2ML_js.useTranslation();
9100
9100
  if (!isOpen) {
9101
9101
  return null;
9102
9102
  }
@@ -9134,14 +9134,14 @@ function AccessibilityPanel({
9134
9134
  "aria-label": t("pptx.accessibility.reduceMotion"),
9135
9135
  "aria-checked": reducedMotion ?? false,
9136
9136
  onClick: onToggleReducedMotion,
9137
- className: chunkP2COO2QO_js.cn(
9137
+ className: chunk6GFSF2ML_js.cn(
9138
9138
  "relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
9139
9139
  reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
9140
9140
  ),
9141
9141
  children: /* @__PURE__ */ jsxRuntime.jsx(
9142
9142
  "span",
9143
9143
  {
9144
- className: chunkP2COO2QO_js.cn(
9144
+ className: chunk6GFSF2ML_js.cn(
9145
9145
  "inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
9146
9146
  reducedMotion ? "translate-x-4" : "translate-x-0.5"
9147
9147
  )
@@ -9160,7 +9160,7 @@ function AccessibilityPanel({
9160
9160
  "div",
9161
9161
  {
9162
9162
  role: "listitem",
9163
- className: chunkP2COO2QO_js.cn(
9163
+ className: chunk6GFSF2ML_js.cn(
9164
9164
  "flex items-start gap-2 rounded px-2 py-1.5 text-xs",
9165
9165
  /* Severity-based background and text colouring */
9166
9166
  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"
@@ -9188,7 +9188,7 @@ function ExportProgressModal({
9188
9188
  statusMessage,
9189
9189
  onCancel
9190
9190
  }) {
9191
- const { t } = chunkP2COO2QO_js.useTranslation();
9191
+ const { t } = chunk6GFSF2ML_js.useTranslation();
9192
9192
  const ref = useWebControl(
9193
9193
  { open: isOpen, title, progress, status: statusMessage, translate: t },
9194
9194
  { "export-cancel": () => onCancel() }
@@ -9196,7 +9196,7 @@ function ExportProgressModal({
9196
9196
  return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-export-progress", { ref });
9197
9197
  }
9198
9198
  function StatusBar(p) {
9199
- const { t } = chunkP2COO2QO_js.useTranslation();
9199
+ const { t } = chunk6GFSF2ML_js.useTranslation();
9200
9200
  const ref = React108.useRef(null);
9201
9201
  React108.useEffect(() => {
9202
9202
  const host = ref.current;
@@ -9278,7 +9278,7 @@ function ResizeHandle({
9278
9278
  {
9279
9279
  role: "separator",
9280
9280
  "aria-orientation": direction,
9281
- className: chunkP2COO2QO_js.cn(
9281
+ className: chunk6GFSF2ML_js.cn(
9282
9282
  // Outer container: generous hit area for easy clicking.
9283
9283
  // The visible indicator is rendered via the inner pseudo-element (::after).
9284
9284
  "relative flex-shrink-0 z-20 group",
@@ -9289,7 +9289,7 @@ function ResizeHandle({
9289
9289
  children: /* @__PURE__ */ jsxRuntime.jsx(
9290
9290
  "div",
9291
9291
  {
9292
- className: chunkP2COO2QO_js.cn(
9292
+ className: chunk6GFSF2ML_js.cn(
9293
9293
  "absolute transition-colors",
9294
9294
  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"
9295
9295
  )
@@ -9378,10 +9378,10 @@ function contextMenuHandlers(props, shapeFormat = null) {
9378
9378
  }
9379
9379
  function ContextMenu(props) {
9380
9380
  const { contextMenuState, mode, onClose } = props;
9381
- const { t } = chunkP2COO2QO_js.useTranslation();
9381
+ const { t } = chunk6GFSF2ML_js.useTranslation();
9382
9382
  const customization = useViewerCustomizationContext();
9383
9383
  const shapeFormat = useShapeFormatContext();
9384
- const chartFormat = chunkXG4WSJ4O_js.useChartFormatContext();
9384
+ const chartFormat = chunk3AZ6ESJU_js.useChartFormatContext();
9385
9385
  const open = Boolean(contextMenuState) && mode === "edit";
9386
9386
  const handlers = {
9387
9387
  ...contextMenuHandlers(props, shapeFormat),
@@ -9457,7 +9457,7 @@ function canvasContextMenuHandlers(props) {
9457
9457
  }
9458
9458
  function CanvasContextMenu(props) {
9459
9459
  const { canvasContextMenuState, mode, onClose } = props;
9460
- const { t } = chunkP2COO2QO_js.useTranslation();
9460
+ const { t } = chunk6GFSF2ML_js.useTranslation();
9461
9461
  const customization = useViewerCustomizationContext();
9462
9462
  const open = Boolean(canvasContextMenuState) && mode === "edit";
9463
9463
  const handlers = canvasContextMenuHandlers(props);
@@ -9520,7 +9520,7 @@ function FindReplacePanel({
9520
9520
  onReplaceAll,
9521
9521
  onClose
9522
9522
  }) {
9523
- const { t } = chunkP2COO2QO_js.useTranslation();
9523
+ const { t } = chunk6GFSF2ML_js.useTranslation();
9524
9524
  const searchInputRef = React108.useRef(null);
9525
9525
  React108.useEffect(() => {
9526
9526
  searchInputRef.current?.focus();
@@ -9711,7 +9711,7 @@ function HandoutMasterPanel({
9711
9711
  onSlidesPerPageChange,
9712
9712
  onBackgroundChange
9713
9713
  }) {
9714
- const { t } = chunkP2COO2QO_js.useTranslation();
9714
+ const { t } = chunk6GFSF2ML_js.useTranslation();
9715
9715
  if (!handoutMaster) {
9716
9716
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-4 text-center text-xs text-muted-foreground", children: t("pptx.master.noHandoutMaster") });
9717
9717
  }
@@ -9723,7 +9723,7 @@ function HandoutMasterPanel({
9723
9723
  {
9724
9724
  type: "button",
9725
9725
  "aria-pressed": slidesPerPage === count,
9726
- className: chunkP2COO2QO_js.cn(
9726
+ className: chunk6GFSF2ML_js.cn(
9727
9727
  "px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
9728
9728
  slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
9729
9729
  ),
@@ -9766,7 +9766,7 @@ function NotesMasterPanel({
9766
9766
  notesMaster,
9767
9767
  onBackgroundChange
9768
9768
  }) {
9769
- const { t } = chunkP2COO2QO_js.useTranslation();
9769
+ const { t } = chunk6GFSF2ML_js.useTranslation();
9770
9770
  const placeholderLabels = React108.useMemo(() => {
9771
9771
  if (!notesMaster?.placeholders) {
9772
9772
  return [];
@@ -9828,7 +9828,7 @@ function SlideMastersList({
9828
9828
  React108.useEffect(() => {
9829
9829
  activeRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
9830
9830
  }, [activeMasterIndex, activeLayoutIndex]);
9831
- const { t } = chunkP2COO2QO_js.useTranslation();
9831
+ const { t } = chunk6GFSF2ML_js.useTranslation();
9832
9832
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9833
9833
  slideMasters.map((master, masterIdx) => {
9834
9834
  const isMasterActive = masterIdx === activeMasterIndex && activeLayoutIndex === null;
@@ -9841,7 +9841,7 @@ function SlideMastersList({
9841
9841
  ref: isMasterActive ? activeRef : void 0,
9842
9842
  "aria-pressed": isMasterActive,
9843
9843
  "aria-label": master.name || t("pptx.master.master"),
9844
- className: chunkP2COO2QO_js.cn(
9844
+ className: chunk6GFSF2ML_js.cn(
9845
9845
  "group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
9846
9846
  isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
9847
9847
  ),
@@ -9858,7 +9858,7 @@ function SlideMastersList({
9858
9858
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
9859
9859
  "span",
9860
9860
  {
9861
- className: chunkP2COO2QO_js.cn(
9861
+ className: chunk6GFSF2ML_js.cn(
9862
9862
  "text-[10px] font-medium",
9863
9863
  isMasterActive ? "text-amber-400" : "text-muted-foreground"
9864
9864
  ),
@@ -9877,7 +9877,7 @@ function SlideMastersList({
9877
9877
  ref: isLayoutActive ? activeRef : void 0,
9878
9878
  "aria-pressed": isLayoutActive,
9879
9879
  "aria-label": layout.name || t("pptx.master.layout"),
9880
- className: chunkP2COO2QO_js.cn(
9880
+ className: chunk6GFSF2ML_js.cn(
9881
9881
  "group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
9882
9882
  isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
9883
9883
  ),
@@ -9894,7 +9894,7 @@ function SlideMastersList({
9894
9894
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
9895
9895
  "span",
9896
9896
  {
9897
- className: chunkP2COO2QO_js.cn(
9897
+ className: chunk6GFSF2ML_js.cn(
9898
9898
  "text-[9px]",
9899
9899
  isLayoutActive ? "text-primary" : "text-muted-foreground"
9900
9900
  ),
@@ -9938,7 +9938,7 @@ function MasterViewSidebar({
9938
9938
  onSlidesBackgroundChange
9939
9939
  }) {
9940
9940
  const scrollRef = React108.useRef(null);
9941
- const { t } = chunkP2COO2QO_js.useTranslation();
9941
+ const { t } = chunk6GFSF2ML_js.useTranslation();
9942
9942
  const slidesBackground = pptx.masterViewBackgroundColor(
9943
9943
  { slideMasters },
9944
9944
  { tab: "slides", masterIndex: activeMasterIndex, layoutIndex: activeLayoutIndex }
@@ -9986,7 +9986,7 @@ function MasterViewSidebar({
9986
9986
  type: "button",
9987
9987
  role: "tab",
9988
9988
  "aria-selected": masterViewTab === tab.key,
9989
- className: chunkP2COO2QO_js.cn(
9989
+ className: chunk6GFSF2ML_js.cn(
9990
9990
  "flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
9991
9991
  masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
9992
9992
  ),
@@ -10088,7 +10088,7 @@ function NotesMasterCanvas({
10088
10088
  notesText,
10089
10089
  slideNumber
10090
10090
  }) {
10091
- const { t } = chunkP2COO2QO_js.useTranslation();
10091
+ const { t } = chunk6GFSF2ML_js.useTranslation();
10092
10092
  const pageWidth = notesCanvasSize?.width ?? DEFAULT_NOTES_WIDTH;
10093
10093
  const pageHeight = notesCanvasSize?.height ?? DEFAULT_NOTES_HEIGHT;
10094
10094
  const scale = React108.useMemo(() => {
@@ -10348,7 +10348,7 @@ function HandoutMasterCanvas({
10348
10348
  slideThumbnails,
10349
10349
  pageNumber
10350
10350
  }) {
10351
- const { t } = chunkP2COO2QO_js.useTranslation();
10351
+ const { t } = chunk6GFSF2ML_js.useTranslation();
10352
10352
  const slideAspect = 4 / 3;
10353
10353
  const scale = React108.useMemo(() => {
10354
10354
  const scaleX = canvasSize.width / PAGE_WIDTH;
@@ -10489,7 +10489,7 @@ function SectionBlock({
10489
10489
  /* @__PURE__ */ jsxRuntime.jsx(
10490
10490
  lu.LuChevronDown,
10491
10491
  {
10492
- className: chunkP2COO2QO_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
10492
+ className: chunk6GFSF2ML_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
10493
10493
  }
10494
10494
  ),
10495
10495
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
@@ -10533,12 +10533,12 @@ function SlideCardImpl({
10533
10533
  onDragLeave,
10534
10534
  onDrop
10535
10535
  }) {
10536
- const { t } = chunkP2COO2QO_js.useTranslation();
10536
+ const { t } = chunk6GFSF2ML_js.useTranslation();
10537
10537
  const cue = pptx.hiddenSlideCue(slide.hidden, "sorter", index);
10538
10538
  return /* @__PURE__ */ jsxRuntime.jsxs(
10539
10539
  "div",
10540
10540
  {
10541
- className: chunkP2COO2QO_js.cn(
10541
+ className: chunk6GFSF2ML_js.cn(
10542
10542
  "group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
10543
10543
  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",
10544
10544
  slide.hidden && "opacity-40"
@@ -10561,7 +10561,7 @@ function SlideCardImpl({
10561
10561
  /* @__PURE__ */ jsxRuntime.jsx(
10562
10562
  "span",
10563
10563
  {
10564
- className: chunkP2COO2QO_js.cn(
10564
+ className: chunk6GFSF2ML_js.cn(
10565
10565
  "text-[11px] font-medium px-0.5",
10566
10566
  isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
10567
10567
  ),
@@ -10630,7 +10630,7 @@ function SorterContextMenu({
10630
10630
  onToggleHide,
10631
10631
  onClose
10632
10632
  }) {
10633
- const { t } = chunkP2COO2QO_js.useTranslation();
10633
+ const { t } = chunk6GFSF2ML_js.useTranslation();
10634
10634
  const menuX = Math.max(8, Math.min(x, window.innerWidth - 220));
10635
10635
  const menuY = Math.max(8, Math.min(y, window.innerHeight - 300));
10636
10636
  const entries = pptx.buildSlideSorterContextMenuEntries({
@@ -10985,7 +10985,7 @@ function SlideSorterOverlay({
10985
10985
  onToggleHideSlides,
10986
10986
  onClose
10987
10987
  }) {
10988
- const { t } = chunkP2COO2QO_js.useTranslation();
10988
+ const { t } = chunk6GFSF2ML_js.useTranslation();
10989
10989
  const state = useSlideSorterState({
10990
10990
  slides,
10991
10991
  templateElementsBySlideId,
@@ -11231,7 +11231,7 @@ function OutlineViewOverlay({
11231
11231
  bumpHistory,
11232
11232
  onClose
11233
11233
  }) {
11234
- const { t } = chunkP2COO2QO_js.useTranslation();
11234
+ const { t } = chunk6GFSF2ML_js.useTranslation();
11235
11235
  const { rows, containerRef, run, onRowKeyDown } = useOutlineView({
11236
11236
  slides,
11237
11237
  canvasSize,
@@ -11322,7 +11322,7 @@ function ReadingViewStage({
11322
11322
  "div",
11323
11323
  {
11324
11324
  className: "absolute inset-0",
11325
- style: { backgroundColor: chunkP2COO2QO_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
11325
+ style: { backgroundColor: chunk6GFSF2ML_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
11326
11326
  }
11327
11327
  ),
11328
11328
  slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
@@ -11341,7 +11341,7 @@ function ReadingViewStage({
11341
11341
  className: "absolute left-0 top-0 origin-top-left",
11342
11342
  style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
11343
11343
  children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
11344
- chunkXG4WSJ4O_js.StaticElementRenderer,
11344
+ chunk3AZ6ESJU_js.StaticElementRenderer,
11345
11345
  {
11346
11346
  element,
11347
11347
  activeSlide: slide,
@@ -11422,7 +11422,7 @@ function ReadingViewOverlay({
11422
11422
  activeSlideIndex,
11423
11423
  onExit
11424
11424
  }) {
11425
- const { t } = chunkP2COO2QO_js.useTranslation();
11425
+ const { t } = chunk6GFSF2ML_js.useTranslation();
11426
11426
  const { state, viewportRef, scale, run } = useReadingView({
11427
11427
  slideCount: slides.length,
11428
11428
  canvasSize,
@@ -11553,7 +11553,7 @@ function renderRichNotesSegments(segments) {
11553
11553
  if (segment.style.fontFamily) {
11554
11554
  style.fontFamily = segment.style.fontFamily;
11555
11555
  }
11556
- if (segment.style.hyperlink && chunkP2COO2QO_js.isUrlSafe(segment.style.hyperlink)) {
11556
+ if (segment.style.hyperlink && chunk6GFSF2ML_js.isUrlSafe(segment.style.hyperlink)) {
11557
11557
  const safeHref = segment.style.hyperlink;
11558
11558
  style.color = "#4a9eff";
11559
11559
  style.textDecoration = "underline";
@@ -11566,7 +11566,7 @@ function renderRichNotesSegments(segments) {
11566
11566
  style,
11567
11567
  onClick: (e) => {
11568
11568
  e.preventDefault();
11569
- chunkP2COO2QO_js.safeOpenUrl(safeHref);
11569
+ chunk6GFSF2ML_js.safeOpenUrl(safeHref);
11570
11570
  },
11571
11571
  children: segment.text
11572
11572
  },
@@ -11590,7 +11590,7 @@ function NotesPrintDialog({
11590
11590
  onClose,
11591
11591
  notesStyle
11592
11592
  }) {
11593
- const { t } = chunkP2COO2QO_js.useTranslation();
11593
+ const { t } = chunk6GFSF2ML_js.useTranslation();
11594
11594
  const printFrameRef = React108.useRef(null);
11595
11595
  const handlePrint = React108.useCallback(() => {
11596
11596
  const iframe = printFrameRef.current;
@@ -11648,7 +11648,7 @@ function NotesPrintDialog({
11648
11648
  ] }) });
11649
11649
  }
11650
11650
  function NotesToolbar(p) {
11651
- const { t } = chunkP2COO2QO_js.useTranslation();
11651
+ const { t } = chunk6GFSF2ML_js.useTranslation();
11652
11652
  const ref = React108.useRef(null);
11653
11653
  React108.useEffect(() => {
11654
11654
  const host = ref.current;
@@ -11915,7 +11915,7 @@ function useSlideNotes({
11915
11915
  const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
11916
11916
  if (href && (e.ctrlKey || e.metaKey)) {
11917
11917
  e.preventDefault();
11918
- chunkP2COO2QO_js.safeOpenUrl(href);
11918
+ chunk6GFSF2ML_js.safeOpenUrl(href);
11919
11919
  }
11920
11920
  }, []);
11921
11921
  return {
@@ -11952,7 +11952,7 @@ function SlideNotesPanel({
11952
11952
  notesStyle,
11953
11953
  onHeightChange
11954
11954
  }) {
11955
- const { t } = chunkP2COO2QO_js.useTranslation();
11955
+ const { t } = chunk6GFSF2ML_js.useTranslation();
11956
11956
  const rootRef = React108__default.default.useRef(null);
11957
11957
  React108__default.default.useEffect(() => {
11958
11958
  const el = rootRef.current;
@@ -11996,7 +11996,7 @@ function SlideNotesPanel({
11996
11996
  });
11997
11997
  const hasNotes = draft.trim().length > 0;
11998
11998
  const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
11999
- const { dragY, handlers: dragHandlers } = chunkXG4WSJ4O_js.useSheetDismissDrag(onToggle);
11999
+ const { dragY, handlers: dragHandlers } = chunk3AZ6ESJU_js.useSheetDismissDrag(onToggle);
12000
12000
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12001
12001
  isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
12002
12002
  "button",
@@ -12012,7 +12012,7 @@ function SlideNotesPanel({
12012
12012
  {
12013
12013
  ref: rootRef,
12014
12014
  "data-pptx-chrome": "notes",
12015
- className: chunkP2COO2QO_js.cn(
12015
+ className: chunk6GFSF2ML_js.cn(
12016
12016
  "flex flex-col border-t border-border/60 bg-background select-none",
12017
12017
  // On mobile, hide the entire notes strip when collapsed: the
12018
12018
  // MobileBottomBar's Notes button is the entry point instead.
@@ -12196,7 +12196,7 @@ function VersionHistoryPanel({
12196
12196
  onClose,
12197
12197
  onRestore
12198
12198
  }) {
12199
- const { t } = chunkP2COO2QO_js.useTranslation();
12199
+ const { t } = chunk6GFSF2ML_js.useTranslation();
12200
12200
  const [versions, setVersions] = React108.useState([]);
12201
12201
  const [loading, setLoading] = React108.useState(false);
12202
12202
  const [restoringKey, setRestoringKey] = React108.useState(null);
@@ -12342,7 +12342,7 @@ function SlideDiffRow({
12342
12342
  onAccept,
12343
12343
  onReject
12344
12344
  }) {
12345
- const { t } = chunkP2COO2QO_js.useTranslation();
12345
+ const { t } = chunk6GFSF2ML_js.useTranslation();
12346
12346
  const [expanded, setExpanded] = React108.useState(diff.status === "changed");
12347
12347
  const statusLabel = (() => {
12348
12348
  switch (diff.status) {
@@ -12376,7 +12376,7 @@ function SlideDiffRow({
12376
12376
  return /* @__PURE__ */ jsxRuntime.jsxs(
12377
12377
  "div",
12378
12378
  {
12379
- className: chunkP2COO2QO_js.cn(
12379
+ className: chunk6GFSF2ML_js.cn(
12380
12380
  "rounded-lg border transition-colors",
12381
12381
  isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
12382
12382
  ),
@@ -12390,7 +12390,7 @@ function SlideDiffRow({
12390
12390
  children: [
12391
12391
  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" }),
12392
12392
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
12393
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP2COO2QO_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
12393
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk6GFSF2ML_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
12394
12394
  diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
12395
12395
  diff.changes.length,
12396
12396
  " ",
@@ -12400,7 +12400,7 @@ function SlideDiffRow({
12400
12400
  isResolved && /* @__PURE__ */ jsxRuntime.jsx(
12401
12401
  "span",
12402
12402
  {
12403
- className: chunkP2COO2QO_js.cn(
12403
+ className: chunk6GFSF2ML_js.cn(
12404
12404
  "text-[10px] font-medium",
12405
12405
  accepted ? "text-green-400" : "text-muted-foreground"
12406
12406
  ),
@@ -12428,7 +12428,7 @@ function SlideDiffRow({
12428
12428
  /* @__PURE__ */ jsxRuntime.jsx(
12429
12429
  "div",
12430
12430
  {
12431
- className: chunkP2COO2QO_js.cn(
12431
+ className: chunk6GFSF2ML_js.cn(
12432
12432
  "rounded border overflow-hidden",
12433
12433
  diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
12434
12434
  ),
@@ -12495,7 +12495,7 @@ function ComparePanel({
12495
12495
  onRejectSlide,
12496
12496
  onAcceptAll
12497
12497
  }) {
12498
- const { t } = chunkP2COO2QO_js.useTranslation();
12498
+ const { t } = chunk6GFSF2ML_js.useTranslation();
12499
12499
  const [accepted, setAccepted] = React108.useState({});
12500
12500
  const [rejected, setRejected] = React108.useState({});
12501
12501
  const handleAccept = React108.useCallback(
@@ -12624,7 +12624,7 @@ function PasswordProtectionDialog({
12624
12624
  onSetPassword,
12625
12625
  onRemovePassword
12626
12626
  }) {
12627
- const { t } = chunkP2COO2QO_js.useTranslation();
12627
+ const { t } = chunk6GFSF2ML_js.useTranslation();
12628
12628
  const [password, setPassword] = React108.useState("");
12629
12629
  const [confirmPassword, setConfirmPassword] = React108.useState("");
12630
12630
  const [showPassword, setShowPassword] = React108.useState(false);
@@ -12840,7 +12840,7 @@ function DocumentPropertiesCustomTab({
12840
12840
  customProperties,
12841
12841
  onUpdate
12842
12842
  }) {
12843
- const { t } = chunkP2COO2QO_js.useTranslation();
12843
+ const { t } = chunk6GFSF2ML_js.useTranslation();
12844
12844
  const handleAdd = React108.useCallback(() => {
12845
12845
  onUpdate([...customProperties, { name: "", value: "", type: "lpwstr" }]);
12846
12846
  }, [customProperties, onUpdate]);
@@ -13042,7 +13042,7 @@ function DocumentPropertiesStatisticsTab({
13042
13042
  onUpdateAppProperties,
13043
13043
  canEdit
13044
13044
  }) {
13045
- const { t } = chunkP2COO2QO_js.useTranslation();
13045
+ const { t } = chunk6GFSF2ML_js.useTranslation();
13046
13046
  const handleEditableChange = React108.useCallback(
13047
13047
  (key, value) => {
13048
13048
  onUpdateAppProperties({ [key]: value });
@@ -13082,7 +13082,7 @@ function DocumentPropertiesDialog({
13082
13082
  onClose,
13083
13083
  onSave
13084
13084
  }) {
13085
- const { t } = chunkP2COO2QO_js.useTranslation();
13085
+ const { t } = chunk6GFSF2ML_js.useTranslation();
13086
13086
  const [activeTab, setActiveTab] = React108.useState("summary");
13087
13087
  const [draftCore, setDraftCore] = React108.useState({});
13088
13088
  const [draftCustom, setDraftCustom] = React108.useState([]);
@@ -13133,7 +13133,7 @@ function DocumentPropertiesDialog({
13133
13133
  const handleClose = React108.useCallback(() => {
13134
13134
  onClose();
13135
13135
  }, [onClose]);
13136
- const { panelStyle, handlers: dragHandlers } = chunkXG4WSJ4O_js.useModalDismissDrag(handleClose);
13136
+ const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(handleClose);
13137
13137
  if (!isOpen) {
13138
13138
  return null;
13139
13139
  }
@@ -13270,7 +13270,7 @@ function FontEmbeddingPanel({
13270
13270
  onClose,
13271
13271
  onToggleEmbedFonts
13272
13272
  }) {
13273
- const { t } = chunkP2COO2QO_js.useTranslation();
13273
+ const { t } = chunk6GFSF2ML_js.useTranslation();
13274
13274
  const [availableFamilies, setAvailableFamilies] = React108.useState(/* @__PURE__ */ new Set());
13275
13275
  const [scanning, setScanning] = React108.useState(false);
13276
13276
  const [scanned, setScanned] = React108.useState(false);
@@ -13398,7 +13398,7 @@ function DigitalSignaturesDialog({
13398
13398
  hasSignatures,
13399
13399
  signatureCount
13400
13400
  }) {
13401
- const { t } = chunkP2COO2QO_js.useTranslation();
13401
+ const { t } = chunk6GFSF2ML_js.useTranslation();
13402
13402
  if (!isOpen) {
13403
13403
  return null;
13404
13404
  }
@@ -13470,7 +13470,7 @@ function SignatureStatusBadge({
13470
13470
  signatureCount,
13471
13471
  onClick
13472
13472
  }) {
13473
- const { t } = chunkP2COO2QO_js.useTranslation();
13473
+ const { t } = chunk6GFSF2ML_js.useTranslation();
13474
13474
  if (!hasSignatures || signatureCount === 0) {
13475
13475
  return null;
13476
13476
  }
@@ -13496,7 +13496,7 @@ function SignatureStrippedDialog({
13496
13496
  onConfirm,
13497
13497
  onCancel
13498
13498
  }) {
13499
- const { t } = chunkP2COO2QO_js.useTranslation();
13499
+ const { t } = chunk6GFSF2ML_js.useTranslation();
13500
13500
  if (!isOpen) {
13501
13501
  return null;
13502
13502
  }
@@ -13565,7 +13565,7 @@ function EncryptedFileDialog({
13565
13565
  isOpen,
13566
13566
  onClose
13567
13567
  }) {
13568
- const { t } = chunkP2COO2QO_js.useTranslation();
13568
+ const { t } = chunk6GFSF2ML_js.useTranslation();
13569
13569
  if (!isOpen) {
13570
13570
  return null;
13571
13571
  }
@@ -13712,7 +13712,7 @@ function PresentationAudienceEffects({ snapshot }) {
13712
13712
  ] });
13713
13713
  }
13714
13714
  function PresentationEndOverlay({ onExit }) {
13715
- const { t } = chunkP2COO2QO_js.useTranslation();
13715
+ const { t } = chunk6GFSF2ML_js.useTranslation();
13716
13716
  return /* @__PURE__ */ jsxRuntime.jsx(
13717
13717
  "button",
13718
13718
  {
@@ -13728,9 +13728,9 @@ function PresentationSubtitleBar({
13728
13728
  visible,
13729
13729
  onCaptionChange
13730
13730
  }) {
13731
- const { t } = chunkP2COO2QO_js.useTranslation();
13731
+ const { t } = chunk6GFSF2ML_js.useTranslation();
13732
13732
  const language = pptx.subtitleRecognitionLanguage(
13733
- pptx.subtitleSettingsFromOptions(chunkXG4WSJ4O_js.useViewerOptionsContext()),
13733
+ pptx.subtitleSettingsFromOptions(chunk3AZ6ESJU_js.useViewerOptionsContext()),
13734
13734
  typeof navigator === "undefined" ? "en-US" : navigator.language
13735
13735
  );
13736
13736
  const [captionText, setCaptionText] = React108.useState("");
@@ -13807,7 +13807,7 @@ function renderNotesSegments(segments) {
13807
13807
  });
13808
13808
  }
13809
13809
  function PresenterConsoleToolbar(p) {
13810
- const { t } = chunkP2COO2QO_js.useTranslation();
13810
+ const { t } = chunk6GFSF2ML_js.useTranslation();
13811
13811
  const ref = useWebControl(
13812
13812
  { ...pptx.presenterConsoleViewState(p.snapshot, p.audienceOpen), translate: t },
13813
13813
  {
@@ -13898,7 +13898,7 @@ function ScaledSlidePreviewImpl({
13898
13898
  {
13899
13899
  className: "absolute inset-0",
13900
13900
  style: {
13901
- backgroundColor: chunkP2COO2QO_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
13901
+ backgroundColor: chunk6GFSF2ML_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
13902
13902
  }
13903
13903
  }
13904
13904
  ),
@@ -13924,7 +13924,7 @@ function ScaledSlidePreviewImpl({
13924
13924
  ...pptx.deviceStrokeStageStyle(scale)
13925
13925
  },
13926
13926
  children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
13927
- chunkXG4WSJ4O_js.StaticElementRenderer,
13927
+ chunk3AZ6ESJU_js.StaticElementRenderer,
13928
13928
  {
13929
13929
  element,
13930
13930
  activeSlide: slide,
@@ -13970,7 +13970,7 @@ function PresenterNotesRail({
13970
13970
  onMove,
13971
13971
  onUpdateNotes
13972
13972
  }) {
13973
- const { t } = chunkP2COO2QO_js.useTranslation();
13973
+ const { t } = chunk6GFSF2ML_js.useTranslation();
13974
13974
  const slide = slides[current];
13975
13975
  const nextSlide = pptx.nextPresentedSlide(slides, current, activeCustomShow, authoredRange);
13976
13976
  const notesText = slide?.notes ?? "";
@@ -14095,7 +14095,7 @@ function PresenterNotesRail({
14095
14095
  ] });
14096
14096
  }
14097
14097
  function PresenterSlideNavigator(props) {
14098
- const { t } = chunkP2COO2QO_js.useTranslation();
14098
+ const { t } = chunk6GFSF2ML_js.useTranslation();
14099
14099
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${pptx.PRESENTER_CONSOLE_CLASSES.navigator} text-foreground`, children: [
14100
14100
  /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-4 flex items-center justify-between border-b border-border pb-4", children: [
14101
14101
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
@@ -14237,7 +14237,7 @@ function PresenterView({
14237
14237
  onSwapDisplays,
14238
14238
  onUpdateNotes
14239
14239
  }) {
14240
- const { t } = chunkP2COO2QO_js.useTranslation();
14240
+ const { t } = chunk6GFSF2ML_js.useTranslation();
14241
14241
  const [now, setNow] = React108.useState(Date.now());
14242
14242
  React108.useEffect(() => {
14243
14243
  const interval = window.setInterval(() => setNow(Date.now()), 1e3);
@@ -14394,7 +14394,7 @@ function MobilePresenterView({
14394
14394
  onMovePresentationSlide,
14395
14395
  onExit
14396
14396
  }) {
14397
- const { t } = chunkP2COO2QO_js.useTranslation();
14397
+ const { t } = chunk6GFSF2ML_js.useTranslation();
14398
14398
  const [now, setNow] = React108.useState(Date.now());
14399
14399
  React108.useEffect(() => {
14400
14400
  const interval = window.setInterval(() => setNow(Date.now()), 1e3);
@@ -14507,7 +14507,7 @@ function RehearseTimingsHud({
14507
14507
  paused,
14508
14508
  onTogglePause
14509
14509
  }) {
14510
- const { t } = chunkP2COO2QO_js.useTranslation();
14510
+ const { t } = chunk6GFSF2ML_js.useTranslation();
14511
14511
  const [tick, setTick] = React108.useState(0);
14512
14512
  React108.useEffect(() => {
14513
14513
  if (paused) {
@@ -14555,7 +14555,7 @@ function RehearseTimingsSummary({
14555
14555
  onSave,
14556
14556
  onDiscard
14557
14557
  }) {
14558
- const { t } = chunkP2COO2QO_js.useTranslation();
14558
+ const { t } = chunk6GFSF2ML_js.useTranslation();
14559
14559
  const totalMs = Object.values(recordedTimings).reduce((sum, ms) => sum + ms, 0);
14560
14560
  const sortedEntries = Object.entries(recordedTimings).map(([idx, ms]) => ({ slideIndex: Number(idx), ms })).sort((a, b) => a.slideIndex - b.slideIndex);
14561
14561
  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: [
@@ -14639,7 +14639,7 @@ function SelectionPane({
14639
14639
  markDirty,
14640
14640
  onClose
14641
14641
  }) {
14642
- const { t } = chunkP2COO2QO_js.useTranslation();
14642
+ const { t } = chunk6GFSF2ML_js.useTranslation();
14643
14643
  const activeSlide = slides[activeSlideIndex];
14644
14644
  const elements = activeSlide?.elements ?? [];
14645
14645
  const [editingId, setEditingId] = React108.useState(null);
@@ -14794,7 +14794,7 @@ function SelectionPane({
14794
14794
  setDragIndex(null);
14795
14795
  setDragOverIndex(null);
14796
14796
  },
14797
- className: chunkP2COO2QO_js.cn(
14797
+ className: chunk6GFSF2ML_js.cn(
14798
14798
  "flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
14799
14799
  isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
14800
14800
  dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
@@ -14848,13 +14848,13 @@ function SelectionPane({
14848
14848
  }
14849
14849
  var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
14850
14850
  var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
14851
- var ENTRANCE_PRESETS = /* @__PURE__ */ chunkP2COO2QO_js.ANIMATION_PRESET_OPTIONS.filter(
14851
+ var ENTRANCE_PRESETS = /* @__PURE__ */ chunk6GFSF2ML_js.ANIMATION_PRESET_OPTIONS.filter(
14852
14852
  (o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
14853
14853
  );
14854
- var EXIT_PRESETS = /* @__PURE__ */ chunkP2COO2QO_js.ANIMATION_PRESET_OPTIONS.filter(
14854
+ var EXIT_PRESETS = /* @__PURE__ */ chunk6GFSF2ML_js.ANIMATION_PRESET_OPTIONS.filter(
14855
14855
  (o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
14856
14856
  );
14857
- var EMPHASIS_PRESETS = /* @__PURE__ */ chunkP2COO2QO_js.ANIMATION_PRESET_OPTIONS.filter(
14857
+ var EMPHASIS_PRESETS = /* @__PURE__ */ chunk6GFSF2ML_js.ANIMATION_PRESET_OPTIONS.filter(
14858
14858
  (o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
14859
14859
  );
14860
14860
  var TIMING_CURVE_OPTIONS = [
@@ -14955,7 +14955,7 @@ function AfterAnimationRow({
14955
14955
  onActionChange,
14956
14956
  onColorChange
14957
14957
  }) {
14958
- const { t } = chunkP2COO2QO_js.useTranslation();
14958
+ const { t } = chunk6GFSF2ML_js.useTranslation();
14959
14959
  const commitRecentColor = useRecentColorCommit();
14960
14960
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
14961
14961
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -15006,7 +15006,7 @@ function AnimationTimelineSection({
15006
15006
  canEdit,
15007
15007
  handlers
15008
15008
  }) {
15009
- const { t } = chunkP2COO2QO_js.useTranslation();
15009
+ const { t } = chunk6GFSF2ML_js.useTranslation();
15010
15010
  const effectLabel = (anim) => pptx.animationEffectLabel(anim, (key) => t(key));
15011
15011
  const {
15012
15012
  sortedAnimations,
@@ -15037,7 +15037,7 @@ function AnimationTimelineSection({
15037
15037
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
15038
15038
  "div",
15039
15039
  {
15040
- className: chunkP2COO2QO_js.cn(
15040
+ className: chunk6GFSF2ML_js.cn(
15041
15041
  "absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
15042
15042
  animationTypeColor(bar.anim),
15043
15043
  bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
@@ -15066,7 +15066,7 @@ function AnimationTimelineSection({
15066
15066
  onDragLeave: handleDragLeave,
15067
15067
  onDrop: (e) => handleDrop(index, e),
15068
15068
  title: t("pptx.animation.nativeEffectHint"),
15069
- className: chunkP2COO2QO_js.cn(
15069
+ className: chunk6GFSF2ML_js.cn(
15070
15070
  "flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
15071
15071
  "bg-muted/20 text-muted-foreground/70",
15072
15072
  isDragOver && "border-t-2 border-primary"
@@ -15105,7 +15105,7 @@ function AnimationTimelineSection({
15105
15105
  onDragEnd: handleDragEnd,
15106
15106
  onMouseEnter: () => handleAnimationHover(anim),
15107
15107
  onMouseLeave: handleAnimationHoverEnd,
15108
- className: chunkP2COO2QO_js.cn(
15108
+ className: chunk6GFSF2ML_js.cn(
15109
15109
  "flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
15110
15110
  isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
15111
15111
  isDragging && "opacity-40",
@@ -15166,7 +15166,7 @@ function BookmarkTriggerRow({
15166
15166
  style,
15167
15167
  onChange
15168
15168
  }) {
15169
- const { t } = chunkP2COO2QO_js.useTranslation();
15169
+ const { t } = chunk6GFSF2ML_js.useTranslation();
15170
15170
  const options = pptx.listMediaBookmarkOptions(elements);
15171
15171
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
15172
15172
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.trigger.bookmarkLabel") }),
@@ -15199,7 +15199,7 @@ function EffectSoundRow({
15199
15199
  onPick,
15200
15200
  onPickStock
15201
15201
  }) {
15202
- const { t } = chunkP2COO2QO_js.useTranslation();
15202
+ const { t } = chunk6GFSF2ML_js.useTranslation();
15203
15203
  const fileInputRef = React108__default.default.useRef(null);
15204
15204
  const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
15205
15205
  const handleSelectChange = (event) => {
@@ -15237,7 +15237,7 @@ function EffectSoundRow({
15237
15237
  }
15238
15238
  const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
15239
15239
  if (asset) {
15240
- chunkXG4WSJ4O_js.playAnimationSound(asset.dataUrl);
15240
+ chunk3AZ6ESJU_js.playAnimationSound(asset.dataUrl);
15241
15241
  }
15242
15242
  };
15243
15243
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -15290,7 +15290,7 @@ function MotionPathRow({
15290
15290
  canEdit,
15291
15291
  onChange
15292
15292
  }) {
15293
- const { t } = chunkP2COO2QO_js.useTranslation();
15293
+ const { t } = chunk6GFSF2ML_js.useTranslation();
15294
15294
  const presetId = pptx.motionPathPresetIdForPath(motionPath);
15295
15295
  const isCustom = Boolean(motionPath) && !presetId;
15296
15296
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -15412,7 +15412,7 @@ function useAnimationPreview({
15412
15412
  }) {
15413
15413
  const handleAnimationHover = React108.useCallback((anim) => {
15414
15414
  if (anim.motionPath) {
15415
- chunkP2COO2QO_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
15415
+ chunk6GFSF2ML_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
15416
15416
  durationMs: anim.durationMs,
15417
15417
  delayMs: anim.delayMs,
15418
15418
  timingCurve: anim.timingCurve
@@ -15423,19 +15423,19 @@ function useAnimationPreview({
15423
15423
  if (!preset || preset === "none") {
15424
15424
  return;
15425
15425
  }
15426
- chunkP2COO2QO_js.startPreviewAnimation(anim.elementId, preset, {
15426
+ chunk6GFSF2ML_js.startPreviewAnimation(anim.elementId, preset, {
15427
15427
  direction: anim.direction,
15428
15428
  durationMs: anim.durationMs ?? 500,
15429
15429
  timingCurve: anim.timingCurve
15430
15430
  });
15431
15431
  }, []);
15432
- const handleAnimationHoverEnd = React108.useCallback(() => chunkP2COO2QO_js.stopPreviewAnimation(), []);
15432
+ const handleAnimationHoverEnd = React108.useCallback(() => chunk6GFSF2ML_js.stopPreviewAnimation(), []);
15433
15433
  const handlePreviewClick = React108.useCallback(() => {
15434
15434
  if (!selectedElementAnimation) {
15435
15435
  return;
15436
15436
  }
15437
15437
  if (selectedElementAnimation.motionPath) {
15438
- chunkP2COO2QO_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
15438
+ chunk6GFSF2ML_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
15439
15439
  durationMs: selectedElementAnimation.durationMs,
15440
15440
  delayMs: selectedElementAnimation.delayMs,
15441
15441
  timingCurve: selectedElementAnimation.timingCurve
@@ -15446,7 +15446,7 @@ function useAnimationPreview({
15446
15446
  if (!preset || preset === "none") {
15447
15447
  return;
15448
15448
  }
15449
- chunkP2COO2QO_js.startPreviewAnimation(selectedElementId, preset, {
15449
+ chunk6GFSF2ML_js.startPreviewAnimation(selectedElementId, preset, {
15450
15450
  direction: selectedElementAnimation.direction,
15451
15451
  durationMs: selectedElementAnimation.durationMs ?? 500,
15452
15452
  timingCurve: selectedElementAnimation.timingCurve
@@ -15681,7 +15681,7 @@ function useAnimationHandlers({
15681
15681
  return anim.elementId.slice(0, 8);
15682
15682
  }
15683
15683
  const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
15684
- return text || chunkP2COO2QO_js.getElementLabel(el);
15684
+ return text || chunk6GFSF2ML_js.getElementLabel(el);
15685
15685
  },
15686
15686
  [activeSlide.elements]
15687
15687
  );
@@ -15692,7 +15692,7 @@ function useAnimationHandlers({
15692
15692
  return id.slice(0, 8);
15693
15693
  }
15694
15694
  const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
15695
- return text || chunkP2COO2QO_js.getElementLabel(el);
15695
+ return text || chunk6GFSF2ML_js.getElementLabel(el);
15696
15696
  }).join(", "),
15697
15697
  [activeSlide.elements]
15698
15698
  );
@@ -15748,8 +15748,8 @@ function AnimationPanel({
15748
15748
  canEdit,
15749
15749
  onUpdateSlide
15750
15750
  }) {
15751
- const { t } = chunkP2COO2QO_js.useTranslation();
15752
- const { viewportWidth } = chunkXG4WSJ4O_js.useIsMobile();
15751
+ const { t } = chunk6GFSF2ML_js.useTranslation();
15752
+ const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
15753
15753
  const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
15754
15754
  const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
15755
15755
  const handlers = useAnimationHandlers({
@@ -15877,7 +15877,7 @@ function AnimationPanel({
15877
15877
  type: "button",
15878
15878
  disabled: !canEdit,
15879
15879
  style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
15880
- className: chunkP2COO2QO_js.cn(
15880
+ className: chunk6GFSF2ML_js.cn(
15881
15881
  "flex items-center justify-center rounded border transition-colors",
15882
15882
  isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
15883
15883
  ),
@@ -15943,7 +15943,7 @@ function AnimationPanel({
15943
15943
  style: fieldStyle,
15944
15944
  children: [
15945
15945
  /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
15946
- activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkP2COO2QO_js.getElementLabel(el) }, el.id))
15946
+ activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunk6GFSF2ML_js.getElementLabel(el) }, el.id))
15947
15947
  ]
15948
15948
  }
15949
15949
  )
@@ -16087,7 +16087,7 @@ function ActionTargetFields({
16087
16087
  returnAfter,
16088
16088
  onChange
16089
16089
  }) {
16090
- const { t } = chunkP2COO2QO_js.useTranslation();
16090
+ const { t } = chunk6GFSF2ML_js.useTranslation();
16091
16091
  const urlLabelKey = URL_LABEL_KEY[type];
16092
16092
  if (urlLabelKey) {
16093
16093
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -16096,7 +16096,7 @@ function ActionTargetFields({
16096
16096
  type: "text",
16097
16097
  disabled: !canEdit,
16098
16098
  "aria-label": t(urlLabelKey),
16099
- className: chunkP2COO2QO_js.cn(INPUT2, "w-full"),
16099
+ className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
16100
16100
  placeholder: "https://...",
16101
16101
  value: url ?? "",
16102
16102
  onChange: (e) => onChange({ url: e.target.value })
@@ -16110,7 +16110,7 @@ function ActionTargetFields({
16110
16110
  type: "number",
16111
16111
  disabled: !canEdit,
16112
16112
  "aria-label": t("pptx.action.gotoSlide"),
16113
- className: chunkP2COO2QO_js.cn(INPUT2, "w-full"),
16113
+ className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
16114
16114
  placeholder: t("pptx.action.slideNumberPlaceholder"),
16115
16115
  min: 1,
16116
16116
  max: slideCount,
@@ -16132,7 +16132,7 @@ function ActionTargetFields({
16132
16132
  "data-testid": "pptx-action-custom-show",
16133
16133
  disabled: !canEdit,
16134
16134
  "aria-label": t("pptx.hyperlink.customShowLabel"),
16135
- className: chunkP2COO2QO_js.cn(INPUT2, "w-full"),
16135
+ className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
16136
16136
  value: customShowId ?? "",
16137
16137
  onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
16138
16138
  children: [
@@ -16164,7 +16164,7 @@ function ActionSettingsPanel({
16164
16164
  customShows,
16165
16165
  onUpdateElement
16166
16166
  }) {
16167
- const { t } = chunkP2COO2QO_js.useTranslation();
16167
+ const { t } = chunk6GFSF2ML_js.useTranslation();
16168
16168
  const clickAction = selectedElement.actionClick ? pptx$1.pptxActionToElementAction(selectedElement.actionClick, "click") : void 0;
16169
16169
  const hoverAction = selectedElement.actionHover ? pptx$1.pptxActionToElementAction(selectedElement.actionHover, "hover") : void 0;
16170
16170
  const updateAction = (trigger, type, patch) => {
@@ -16240,7 +16240,7 @@ function ActionTriggerSection({
16240
16240
  onChangeType,
16241
16241
  onChangeTarget
16242
16242
  }) {
16243
- const { t } = chunkP2COO2QO_js.useTranslation();
16243
+ const { t } = chunk6GFSF2ML_js.useTranslation();
16244
16244
  const [pendingType, setPendingType] = React108.useState(void 0);
16245
16245
  const effectiveType = pptx.resolveActionType(pendingType, activeType);
16246
16246
  const changeType = (type) => {
@@ -16254,7 +16254,7 @@ function ActionTriggerSection({
16254
16254
  {
16255
16255
  disabled: !canEdit,
16256
16256
  "aria-label": label,
16257
- className: chunkP2COO2QO_js.cn(INPUT2, "w-full"),
16257
+ className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
16258
16258
  value: effectiveType,
16259
16259
  onChange: (e) => changeType(e.target.value),
16260
16260
  children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
@@ -16282,7 +16282,7 @@ var AXIS_ROWS = [
16282
16282
  { type: "catAx", labelKey: "pptx.chart.categoryAxis", hasScale: false }
16283
16283
  ];
16284
16284
  function ChartAxisOptions({ axes, canEdit, onUpdateAxis }) {
16285
- const { t } = chunkP2COO2QO_js.useTranslation();
16285
+ const { t } = chunk6GFSF2ML_js.useTranslation();
16286
16286
  const rows = AXIS_ROWS.map((row) => ({
16287
16287
  ...row,
16288
16288
  axis: axes?.find((a) => a.axisType === row.type)
@@ -16427,7 +16427,7 @@ function ChartAxisStyleOptions({
16427
16427
  onSetTitleStyle,
16428
16428
  onSetGridlineStyle
16429
16429
  }) {
16430
- const { t } = chunkP2COO2QO_js.useTranslation();
16430
+ const { t } = chunk6GFSF2ML_js.useTranslation();
16431
16431
  const commitRecentColor = useRecentColorCommit();
16432
16432
  const rows = SCALE_AXES.map((row) => ({
16433
16433
  ...row,
@@ -16599,7 +16599,7 @@ function ChartComboTypeOptions({
16599
16599
  canEdit,
16600
16600
  onSetSeriesType
16601
16601
  }) {
16602
- const { t } = chunkP2COO2QO_js.useTranslation();
16602
+ const { t } = chunk6GFSF2ML_js.useTranslation();
16603
16603
  if (!COMBO_SUPPORTED_TYPES.has(chartType) || series.length < 2) {
16604
16604
  return null;
16605
16605
  }
@@ -16628,7 +16628,7 @@ function ChartDataLabelOptions({
16628
16628
  canEdit,
16629
16629
  onUpdateStyle
16630
16630
  }) {
16631
- const { t } = chunkP2COO2QO_js.useTranslation();
16631
+ const { t } = chunk6GFSF2ML_js.useTranslation();
16632
16632
  if (!style?.hasDataLabels) {
16633
16633
  return null;
16634
16634
  }
@@ -16676,7 +16676,7 @@ function ChartDataPointMarkerOptions({
16676
16676
  canEdit,
16677
16677
  onSetPointMarker
16678
16678
  }) {
16679
- const { t } = chunkP2COO2QO_js.useTranslation();
16679
+ const { t } = chunk6GFSF2ML_js.useTranslation();
16680
16680
  const commitRecentColor = useRecentColorCommit();
16681
16681
  const [seriesIndex, setSeriesIndex] = React108.useState(0);
16682
16682
  if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0 || categories.length === 0) {
@@ -16782,7 +16782,7 @@ function ChartDataPointOptions({
16782
16782
  onSetPointExplosion,
16783
16783
  onSetPointLabel
16784
16784
  }) {
16785
- const { t } = chunkP2COO2QO_js.useTranslation();
16785
+ const { t } = chunk6GFSF2ML_js.useTranslation();
16786
16786
  const commitRecentColor = useRecentColorCommit();
16787
16787
  const [seriesIndex, setSeriesIndex] = React108.useState(0);
16788
16788
  if (series.length === 0 || categories.length === 0) {
@@ -16884,7 +16884,7 @@ function ChartDataSheet({
16884
16884
  highlightCell,
16885
16885
  onChange
16886
16886
  }) {
16887
- const { t } = chunkP2COO2QO_js.useTranslation();
16887
+ const { t } = chunk6GFSF2ML_js.useTranslation();
16888
16888
  const ref = React108.useRef(null);
16889
16889
  React108.useLayoutEffect(() => {
16890
16890
  if (ref.current) {
@@ -16915,7 +16915,7 @@ function ChartDisplayOptions({
16915
16915
  hasGridlines,
16916
16916
  onToggleGridlines
16917
16917
  }) {
16918
- const { t } = chunkP2COO2QO_js.useTranslation();
16918
+ const { t } = chunk6GFSF2ML_js.useTranslation();
16919
16919
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
16920
16920
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.chart.display") }),
16921
16921
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
@@ -16992,7 +16992,7 @@ function ChartErrorBarOptions({
16992
16992
  canEdit,
16993
16993
  onSetErrorBars
16994
16994
  }) {
16995
- const { t } = chunkP2COO2QO_js.useTranslation();
16995
+ const { t } = chunk6GFSF2ML_js.useTranslation();
16996
16996
  if (!ERROR_BAR_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
16997
16997
  return null;
16998
16998
  }
@@ -17072,7 +17072,7 @@ function ChartFilteredSeriesOptions({
17072
17072
  onRestoreSeries,
17073
17073
  onSetDataLabelsRangeCache
17074
17074
  }) {
17075
- const { t } = chunkP2COO2QO_js.useTranslation();
17075
+ const { t } = chunk6GFSF2ML_js.useTranslation();
17076
17076
  const filteredSeries = chartData.filteredSeries ?? [];
17077
17077
  const seriesWithRange = chartData.series.map((series, index) => ({ series, index })).filter(({ series }) => series.dataLabelOptions?.dataLabelsRange);
17078
17078
  if (filteredSeries.length === 0 && seriesWithRange.length === 0 && chartData.series.length <= 1) {
@@ -17152,7 +17152,7 @@ function ChartMarkerOptions({
17152
17152
  canEdit,
17153
17153
  onSetMarker
17154
17154
  }) {
17155
- const { t } = chunkP2COO2QO_js.useTranslation();
17155
+ const { t } = chunk6GFSF2ML_js.useTranslation();
17156
17156
  const commitRecentColor = useRecentColorCommit();
17157
17157
  if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
17158
17158
  return null;
@@ -17261,7 +17261,7 @@ function ChartSeriesColorOptions({
17261
17261
  onSetColor,
17262
17262
  onToggleSecondaryAxis
17263
17263
  }) {
17264
- const { t } = chunkP2COO2QO_js.useTranslation();
17264
+ const { t } = chunk6GFSF2ML_js.useTranslation();
17265
17265
  const series = chartData.series;
17266
17266
  if (series.length === 0) {
17267
17267
  return null;
@@ -17311,7 +17311,7 @@ function ChartSubtypeOptions({
17311
17311
  canEdit,
17312
17312
  onUpdateChartData
17313
17313
  }) {
17314
- const { t } = chunkP2COO2QO_js.useTranslation();
17314
+ const { t } = chunk6GFSF2ML_js.useTranslation();
17315
17315
  if (chartData.chartType !== "bar3D" && chartData.chartType !== "radar" && chartData.chartType !== "surface") {
17316
17316
  return null;
17317
17317
  }
@@ -17377,7 +17377,7 @@ function ChartTrendlineOptions({
17377
17377
  canEdit,
17378
17378
  onSetTrendline
17379
17379
  }) {
17380
- const { t } = chunkP2COO2QO_js.useTranslation();
17380
+ const { t } = chunk6GFSF2ML_js.useTranslation();
17381
17381
  if (!TRENDLINE_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
17382
17382
  return null;
17383
17383
  }
@@ -17450,7 +17450,7 @@ function ChartTypeSelector({
17450
17450
  onUpdateChartData,
17451
17451
  onTitleChange
17452
17452
  }) {
17453
- const { t } = chunkP2COO2QO_js.useTranslation();
17453
+ const { t } = chunk6GFSF2ML_js.useTranslation();
17454
17454
  const supportsGrouping = GROUPING_SUPPORTED_TYPES.has(chartType);
17455
17455
  const displayedType = pptx.resolveDisplayedChartType(chartData);
17456
17456
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
@@ -17531,7 +17531,7 @@ function RotationField({
17531
17531
  canEdit,
17532
17532
  onRotationPatch
17533
17533
  }) {
17534
- const { t } = chunkP2COO2QO_js.useTranslation();
17534
+ const { t } = chunk6GFSF2ML_js.useTranslation();
17535
17535
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
17536
17536
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.chart.userShapeRotation") }),
17537
17537
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -17553,7 +17553,7 @@ function FlipFields({
17553
17553
  canEdit,
17554
17554
  onFlipPatch
17555
17555
  }) {
17556
- const { t } = chunkP2COO2QO_js.useTranslation();
17556
+ const { t } = chunk6GFSF2ML_js.useTranslation();
17557
17557
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
17558
17558
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 cursor-pointer", children: [
17559
17559
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -17592,7 +17592,7 @@ function ChartUserShapePositionFields({
17592
17592
  onRotationPatch,
17593
17593
  onFlipPatch
17594
17594
  }) {
17595
- const { t } = chunkP2COO2QO_js.useTranslation();
17595
+ const { t } = chunk6GFSF2ML_js.useTranslation();
17596
17596
  const update = (patch) => onPatch(row.path, patch);
17597
17597
  if (row.depth === 0) {
17598
17598
  const from = row.from;
@@ -17716,7 +17716,7 @@ function ChartUserShapeOptions({
17716
17716
  canEdit,
17717
17717
  onUpdateChartData
17718
17718
  }) {
17719
- const { t } = chunkP2COO2QO_js.useTranslation();
17719
+ const { t } = chunk6GFSF2ML_js.useTranslation();
17720
17720
  const shapes = chartData.userShapes;
17721
17721
  const rows = pptx.listChartUserShapeRows(shapes);
17722
17722
  const kindLabel = (kind) => {
@@ -17874,8 +17874,8 @@ function ChartUserShapeOptions({
17874
17874
  }
17875
17875
  function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
17876
17876
  const chartData = selectedElement.chartData;
17877
- const followDataPoint = chunkXG4WSJ4O_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
17878
- const { selection: partSelection } = chunkXG4WSJ4O_js.useChartPartSelection();
17877
+ const followDataPoint = chunk3AZ6ESJU_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
17878
+ const { selection: partSelection } = chunk3AZ6ESJU_js.useChartPartSelection();
17879
17879
  const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
17880
17880
  const title = chartData?.title;
17881
17881
  const chartType = chartData?.chartType;
@@ -18313,7 +18313,7 @@ function OleEditorDialog({
18313
18313
  element,
18314
18314
  onUpdateElement
18315
18315
  }) {
18316
- const { t } = chunkP2COO2QO_js.useTranslation();
18316
+ const { t } = chunk6GFSF2ML_js.useTranslation();
18317
18317
  const dialogRef = React108.useRef(null);
18318
18318
  const fileInputRef = React108.useRef(null);
18319
18319
  const descriptor = pptx.buildOleEditDialogDescriptor(element);
@@ -18561,7 +18561,7 @@ function ConnectorArrowsSection({
18561
18561
  onUpdateShapeStyle,
18562
18562
  markDirty
18563
18563
  }) {
18564
- const { t } = chunkP2COO2QO_js.useTranslation();
18564
+ const { t } = chunk6GFSF2ML_js.useTranslation();
18565
18565
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
18566
18566
  ["Start", "End"].map((end) => {
18567
18567
  const key = end === "Start" ? "connectorStartArrow" : "connectorEndArrow";
@@ -18580,7 +18580,7 @@ function ConnectorArrowsSection({
18580
18580
  },
18581
18581
  disabled: !canEdit,
18582
18582
  className: SELECT_CLS2,
18583
- children: chunkP2COO2QO_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18583
+ children: chunk6GFSF2ML_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18584
18584
  }
18585
18585
  )
18586
18586
  ] }, end);
@@ -18604,7 +18604,7 @@ function ConnectorArrowsSection({
18604
18604
  },
18605
18605
  disabled: !canEdit,
18606
18606
  className: SELECT_CLS2,
18607
- children: chunkP2COO2QO_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18607
+ children: chunk6GFSF2ML_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18608
18608
  }
18609
18609
  )
18610
18610
  ] }),
@@ -18623,7 +18623,7 @@ function ConnectorArrowsSection({
18623
18623
  },
18624
18624
  disabled: !canEdit,
18625
18625
  className: SELECT_CLS2,
18626
- children: chunkP2COO2QO_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18626
+ children: chunk6GFSF2ML_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
18627
18627
  }
18628
18628
  )
18629
18629
  ] })
@@ -18654,7 +18654,7 @@ function ConnectorPanel({
18654
18654
  function GroupInfoPanel({
18655
18655
  selectedElement
18656
18656
  }) {
18657
- const { t } = chunkP2COO2QO_js.useTranslation();
18657
+ const { t } = chunk6GFSF2ML_js.useTranslation();
18658
18658
  if (selectedElement.type !== "group") {
18659
18659
  return null;
18660
18660
  }
@@ -18669,7 +18669,7 @@ function OlePropertiesPanel({
18669
18669
  canEdit,
18670
18670
  onUpdateElement
18671
18671
  }) {
18672
- const { t } = chunkP2COO2QO_js.useTranslation();
18672
+ const { t } = chunk6GFSF2ML_js.useTranslation();
18673
18673
  const [isEditorOpen, setIsEditorOpen] = React108.useState(false);
18674
18674
  if (selectedElement.type !== "ole") {
18675
18675
  return null;
@@ -18714,7 +18714,7 @@ function OlePropertiesPanel({
18714
18714
  /* @__PURE__ */ jsxRuntime.jsx(
18715
18715
  "span",
18716
18716
  {
18717
- className: chunkP2COO2QO_js.cn(
18717
+ className: chunk6GFSF2ML_js.cn(
18718
18718
  "inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
18719
18719
  ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
18720
18720
  ),
@@ -18767,7 +18767,7 @@ function LayerOrderButtons({
18767
18767
  "button",
18768
18768
  {
18769
18769
  type: "button",
18770
- className: chunkP2COO2QO_js.cn("flex-1", BTN2),
18770
+ className: chunk6GFSF2ML_js.cn("flex-1", BTN2),
18771
18771
  disabled: !canEdit,
18772
18772
  onClick: () => onMoveLayer("forward"),
18773
18773
  children: "\u2191 Forward"
@@ -18777,7 +18777,7 @@ function LayerOrderButtons({
18777
18777
  "button",
18778
18778
  {
18779
18779
  type: "button",
18780
- className: chunkP2COO2QO_js.cn("flex-1", BTN2),
18780
+ className: chunk6GFSF2ML_js.cn("flex-1", BTN2),
18781
18781
  disabled: !canEdit,
18782
18782
  onClick: () => onMoveLayer("backward"),
18783
18783
  children: "\u2193 Backward"
@@ -18791,7 +18791,7 @@ function ArtisticEffectsGallery({
18791
18791
  canEdit,
18792
18792
  updateEffects
18793
18793
  }) {
18794
- const { t } = chunkP2COO2QO_js.useTranslation();
18794
+ const { t } = chunk6GFSF2ML_js.useTranslation();
18795
18795
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
18796
18796
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.artisticEffects") }),
18797
18797
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: pptx.ARTISTIC_EFFECTS.map(([effectName, tKey, cssFilter]) => {
@@ -18801,7 +18801,7 @@ function ArtisticEffectsGallery({
18801
18801
  {
18802
18802
  type: "button",
18803
18803
  disabled: !canEdit,
18804
- className: chunkP2COO2QO_js.cn(
18804
+ className: chunk6GFSF2ML_js.cn(
18805
18805
  "flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
18806
18806
  isActive ? "border-primary bg-primary/10" : "border-border"
18807
18807
  ),
@@ -18836,7 +18836,7 @@ function ColorChangeSection({
18836
18836
  canEdit,
18837
18837
  updateEffects
18838
18838
  }) {
18839
- const { t } = chunkP2COO2QO_js.useTranslation();
18839
+ const { t } = chunk6GFSF2ML_js.useTranslation();
18840
18840
  const cc = fx?.clrChange;
18841
18841
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
18842
18842
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
@@ -18863,7 +18863,7 @@ function ColorChangeSection({
18863
18863
  DebouncedColorInput,
18864
18864
  {
18865
18865
  disabled: !canEdit,
18866
- value: chunkP2COO2QO_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
18866
+ value: chunk6GFSF2ML_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
18867
18867
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
18868
18868
  onCommit: (hex) => updateEffects({
18869
18869
  clrChange: {
@@ -18881,7 +18881,7 @@ function ColorChangeSection({
18881
18881
  DebouncedColorInput,
18882
18882
  {
18883
18883
  disabled: !canEdit || Boolean(cc.clrToTransparent),
18884
- value: chunkP2COO2QO_js.normalizeHexColor(cc.clrTo, "#000000"),
18884
+ value: chunk6GFSF2ML_js.normalizeHexColor(cc.clrTo, "#000000"),
18885
18885
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
18886
18886
  onCommit: (hex) => updateEffects({
18887
18887
  clrChange: {
@@ -18918,7 +18918,7 @@ function ColorWashSection({
18918
18918
  canEdit,
18919
18919
  updateEffects
18920
18920
  }) {
18921
- const { t } = chunkP2COO2QO_js.useTranslation();
18921
+ const { t } = chunk6GFSF2ML_js.useTranslation();
18922
18922
  const wash = fx?.colorWash;
18923
18923
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
18924
18924
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
@@ -18941,7 +18941,7 @@ function ColorWashSection({
18941
18941
  DebouncedColorInput,
18942
18942
  {
18943
18943
  disabled: !canEdit,
18944
- value: chunkP2COO2QO_js.normalizeHexColor(wash.color, "#0066cc"),
18944
+ value: chunk6GFSF2ML_js.normalizeHexColor(wash.color, "#0066cc"),
18945
18945
  className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
18946
18946
  onCommit: (hex) => updateEffects({
18947
18947
  colorWash: { color: hex, opacity: wash.opacity ?? 40 }
@@ -19018,7 +19018,7 @@ function DuotonePanel({
19018
19018
  canEdit,
19019
19019
  onUpdateElement
19020
19020
  }) {
19021
- const { t } = chunkP2COO2QO_js.useTranslation();
19021
+ const { t } = chunk6GFSF2ML_js.useTranslation();
19022
19022
  const effects = "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0;
19023
19023
  const commitDuotone = React108.useCallback(
19024
19024
  (color1, color2) => {
@@ -19039,8 +19039,8 @@ function DuotonePanel({
19039
19039
  }
19040
19040
  });
19041
19041
  }, [effects, onUpdateElement]);
19042
- const shadowColor = chunkP2COO2QO_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
19043
- const highlightColor = chunkP2COO2QO_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
19042
+ const shadowColor = chunk6GFSF2ML_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
19043
+ const highlightColor = chunk6GFSF2ML_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
19044
19044
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
19045
19045
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
19046
19046
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -19071,7 +19071,7 @@ function DuotonePanel({
19071
19071
  ] }),
19072
19072
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
19073
19073
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
19074
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkXG4WSJ4O_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
19074
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunk3AZ6ESJU_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
19075
19075
  "button",
19076
19076
  {
19077
19077
  type: "button",
@@ -19107,7 +19107,7 @@ function ImageAdjustmentsPanel({
19107
19107
  canEdit,
19108
19108
  onUpdateElement
19109
19109
  }) {
19110
- const { t } = chunkP2COO2QO_js.useTranslation();
19110
+ const { t } = chunk6GFSF2ML_js.useTranslation();
19111
19111
  const effects = React108.useMemo(
19112
19112
  () => "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0,
19113
19113
  [selectedElement]
@@ -19208,7 +19208,7 @@ function ImageCropSection({
19208
19208
  canEdit,
19209
19209
  onUpdateElement
19210
19210
  }) {
19211
- const { t } = chunkP2COO2QO_js.useTranslation();
19211
+ const { t } = chunk6GFSF2ML_js.useTranslation();
19212
19212
  if (!pptx$1.isImageLikeElement(selectedElement)) {
19213
19213
  return null;
19214
19214
  }
@@ -19226,7 +19226,7 @@ function ImageCropSection({
19226
19226
  max: MAX_CROP_PERCENT,
19227
19227
  disabled: !croppable,
19228
19228
  className: "accent-primary",
19229
- value: Math.round(chunkP2COO2QO_js.clampCropValue(selectedElement[key]) * 100),
19229
+ value: Math.round(chunk6GFSF2ML_js.clampCropValue(selectedElement[key]) * 100),
19230
19230
  onChange: (e) => onUpdateElement({
19231
19231
  [key]: Number(e.target.value) / 100
19232
19232
  })
@@ -19273,7 +19273,7 @@ function ImagePropertiesPanel({
19273
19273
  canEdit,
19274
19274
  onUpdateElement
19275
19275
  }) {
19276
- const { t } = chunkP2COO2QO_js.useTranslation();
19276
+ const { t } = chunk6GFSF2ML_js.useTranslation();
19277
19277
  const fx = selectedElement.imageEffects;
19278
19278
  const updateEffects = (patch) => {
19279
19279
  onUpdateElement({
@@ -19290,7 +19290,7 @@ function ImagePropertiesPanel({
19290
19290
  {
19291
19291
  rows: 2,
19292
19292
  disabled: !canEdit,
19293
- className: chunkP2COO2QO_js.cn(INPUT2, "resize-none text-[11px]"),
19293
+ className: chunk6GFSF2ML_js.cn(INPUT2, "resize-none text-[11px]"),
19294
19294
  value: selectedElement.altText ?? "",
19295
19295
  onChange: (e) => onUpdateElement({
19296
19296
  altText: e.target.value
@@ -19478,7 +19478,7 @@ function InspectorFields({
19478
19478
  liveTarget,
19479
19479
  livePatch
19480
19480
  }) {
19481
- const { t } = chunkP2COO2QO_js.useTranslation();
19481
+ const { t } = chunk6GFSF2ML_js.useTranslation();
19482
19482
  const views = pptx.resolveInspectorSections(sections, target);
19483
19483
  const change = (sectionId, fieldId, raw) => {
19484
19484
  const patch = pptx.inspectorFieldPatch(sections, sectionId, fieldId, target, raw);
@@ -19706,7 +19706,7 @@ function MediaInspector({
19706
19706
  durationSeconds,
19707
19707
  onUpdateElement
19708
19708
  }) {
19709
- const { t } = chunkP2COO2QO_js.useTranslation();
19709
+ const { t } = chunk6GFSF2ML_js.useTranslation();
19710
19710
  const trimStartMs = element.trimStartMs ?? 0;
19711
19711
  const trimEndMs = element.trimEndMs ?? 0;
19712
19712
  const durationMs = durationSeconds * 1e3;
@@ -19936,7 +19936,7 @@ function MediaPlaybackBookmarks({
19936
19936
  onUpdateElement,
19937
19937
  onSeekTo
19938
19938
  }) {
19939
- const { t } = chunkP2COO2QO_js.useTranslation();
19939
+ const { t } = chunk6GFSF2ML_js.useTranslation();
19940
19940
  const [newBookmarkLabel, setNewBookmarkLabel] = React108.useState("");
19941
19941
  const volumePercent = Math.round((element.volume ?? 1) * 100);
19942
19942
  const handleAddBookmark = React108.useCallback(() => {
@@ -20186,7 +20186,7 @@ function MediaPropertiesPanel({
20186
20186
  canEdit,
20187
20187
  onUpdateElement
20188
20188
  }) {
20189
- const { t } = chunkP2COO2QO_js.useTranslation();
20189
+ const { t } = chunk6GFSF2ML_js.useTranslation();
20190
20190
  const mediaRef = React108.useRef(null);
20191
20191
  const [isPlaying, setIsPlaying] = React108.useState(false);
20192
20192
  const [currentTime, setCurrentTime] = React108.useState(0);
@@ -20420,7 +20420,7 @@ function AccessibilityTextSection({
20420
20420
  canEdit,
20421
20421
  onUpdateElement
20422
20422
  }) {
20423
- const { t } = chunkP2COO2QO_js.useTranslation();
20423
+ const { t } = chunk6GFSF2ML_js.useTranslation();
20424
20424
  const fields = pptx.getNonVisualDescriptionFields(selectedElement);
20425
20425
  if (!fields.showAltText && !fields.showTitle) {
20426
20426
  return null;
@@ -20435,7 +20435,7 @@ function AccessibilityTextSection({
20435
20435
  rows: 2,
20436
20436
  disabled: !canEdit,
20437
20437
  placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
20438
- className: chunkP2COO2QO_js.cn(INPUT2, "resize-none text-[11px]"),
20438
+ className: chunk6GFSF2ML_js.cn(INPUT2, "resize-none text-[11px]"),
20439
20439
  value: fields.altText,
20440
20440
  onChange: (e) => onUpdateElement({ altText: e.target.value })
20441
20441
  }
@@ -20449,7 +20449,7 @@ function AccessibilityTextSection({
20449
20449
  type: "text",
20450
20450
  disabled: !canEdit,
20451
20451
  placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
20452
- className: chunkP2COO2QO_js.cn(INPUT2, "text-[11px]"),
20452
+ className: chunk6GFSF2ML_js.cn(INPUT2, "text-[11px]"),
20453
20453
  value: fields.title,
20454
20454
  onChange: (e) => onUpdateElement({ title: e.target.value })
20455
20455
  }
@@ -20477,7 +20477,7 @@ function RecentColorsRow({
20477
20477
  disabled,
20478
20478
  onCommit
20479
20479
  }) {
20480
- const { t } = chunkP2COO2QO_js.useTranslation();
20480
+ const { t } = chunk6GFSF2ML_js.useTranslation();
20481
20481
  const { recentColors, pushColor } = useRecentColors();
20482
20482
  const shown = recentColors.length > 0;
20483
20483
  const ref = React108.useRef(null);
@@ -20519,7 +20519,7 @@ function ThemeColorSwatchGrid({
20519
20519
  selectedHex,
20520
20520
  onPick
20521
20521
  }) {
20522
- const { t } = chunkP2COO2QO_js.useTranslation();
20522
+ const { t } = chunk6GFSF2ML_js.useTranslation();
20523
20523
  const themeColorMap = useThemeColorMap();
20524
20524
  const columns = React108.useMemo(
20525
20525
  () => pptx.buildThemeColorSwatchGrid(themeColorMap, (key, params) => t(key, params)),
@@ -20566,7 +20566,7 @@ function SelectRow({
20566
20566
  options,
20567
20567
  onChange
20568
20568
  }) {
20569
- const { t } = chunkP2COO2QO_js.useTranslation();
20569
+ const { t } = chunk6GFSF2ML_js.useTranslation();
20570
20570
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `flex flex-col gap-1 ${span2 ? COL2 : ""}`, children: [
20571
20571
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: label }),
20572
20572
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -20590,14 +20590,14 @@ function ColorPickerRow({
20590
20590
  onChange,
20591
20591
  styleChange
20592
20592
  }) {
20593
- const { t } = chunkP2COO2QO_js.useTranslation();
20593
+ const { t } = chunk6GFSF2ML_js.useTranslation();
20594
20594
  const { pushColor } = useRecentColors();
20595
20595
  const commit = (color, ref) => {
20596
20596
  onChange(color, ref);
20597
20597
  pushColor(color);
20598
20598
  };
20599
20599
  const handleEyedropper = async () => {
20600
- const color = await chunkP2COO2QO_js.openNativeEyeDropper();
20600
+ const color = await chunk6GFSF2ML_js.openNativeEyeDropper();
20601
20601
  if (color) {
20602
20602
  commit(color);
20603
20603
  }
@@ -20670,7 +20670,7 @@ function GradientStopRow({
20670
20670
  onUpdate,
20671
20671
  allStops
20672
20672
  }) {
20673
- const { t } = chunkP2COO2QO_js.useTranslation();
20673
+ const { t } = chunk6GFSF2ML_js.useTranslation();
20674
20674
  const { pushColor } = useRecentColors();
20675
20675
  const commitRecentColor = useRecentColorCommit();
20676
20676
  const patchStop = (patch) => {
@@ -20683,9 +20683,9 @@ function GradientStopRow({
20683
20683
  "input",
20684
20684
  {
20685
20685
  type: "color",
20686
- value: chunkP2COO2QO_js.normalizeHexColor(stop2.color, "#3b82f6"),
20686
+ value: chunk6GFSF2ML_js.normalizeHexColor(stop2.color, "#3b82f6"),
20687
20687
  ref: commitRecentColor,
20688
- onChange: (e) => patchStop({ color: chunkP2COO2QO_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
20688
+ onChange: (e) => patchStop({ color: chunk6GFSF2ML_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
20689
20689
  className: "h-7 w-10 rounded border border-border bg-muted"
20690
20690
  }
20691
20691
  ),
@@ -20760,7 +20760,7 @@ function FillAdvancedControls({
20760
20760
  onUpdateGradientStops,
20761
20761
  onSetFillColor: _onSetFillColor
20762
20762
  }) {
20763
- const { t } = chunkP2COO2QO_js.useTranslation();
20763
+ const { t } = chunk6GFSF2ML_js.useTranslation();
20764
20764
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20765
20765
  showGradient && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20766
20766
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -20814,7 +20814,7 @@ function FillAdvancedControls({
20814
20814
  onClick: () => onUpdateGradientStops([
20815
20815
  ...gradientStops,
20816
20816
  {
20817
- color: chunkP2COO2QO_js.normalizeHexColor(style?.fillColor, chunkP2COO2QO_js.DEFAULT_FILL_COLOR),
20817
+ color: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
20818
20818
  position: 50,
20819
20819
  opacity: 1
20820
20820
  }
@@ -20828,9 +20828,9 @@ function FillAdvancedControls({
20828
20828
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
20829
20829
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
20830
20830
  /* @__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) => {
20831
- const fgColor = chunkP2COO2QO_js.normalizeHexColor(style?.fillColor, chunkP2COO2QO_js.DEFAULT_FILL_COLOR);
20832
- const bgColor = chunkP2COO2QO_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
20833
- const svgPattern = chunkP2COO2QO_js.getPatternSvg(opt.value, fgColor, bgColor);
20831
+ const fgColor = chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR);
20832
+ const bgColor = chunk6GFSF2ML_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
20833
+ const svgPattern = chunk6GFSF2ML_js.getPatternSvg(opt.value, fgColor, bgColor);
20834
20834
  const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
20835
20835
  return /* @__PURE__ */ jsxRuntime.jsx(
20836
20836
  "button",
@@ -20863,7 +20863,7 @@ function FillAdvancedControls({
20863
20863
  {
20864
20864
  label: t("pptx.fillAdvanced.foregroundColor"),
20865
20865
  prefix: "pattern-fg",
20866
- value: chunkP2COO2QO_js.normalizeHexColor(style?.fillColor, chunkP2COO2QO_js.DEFAULT_FILL_COLOR),
20866
+ value: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
20867
20867
  disabled: isLine,
20868
20868
  onChange: (color) => onUpdateShapeStyle(patternForeground(color)),
20869
20869
  styleChange: patternForeground
@@ -20874,7 +20874,7 @@ function FillAdvancedControls({
20874
20874
  {
20875
20875
  label: t("pptx.fillAdvanced.backgroundColor"),
20876
20876
  prefix: "pattern-bg",
20877
- value: chunkP2COO2QO_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
20877
+ value: chunk6GFSF2ML_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
20878
20878
  disabled: isLine,
20879
20879
  onChange: (color) => onUpdateShapeStyle(patternBackground(color)),
20880
20880
  styleChange: patternBackground
@@ -20939,7 +20939,7 @@ var QUICK_STYLES = pptx.buildQuickStylesGallery();
20939
20939
  function QuickStylesGallery({
20940
20940
  onUpdateShapeStyle
20941
20941
  }) {
20942
- const { t } = chunkP2COO2QO_js.useTranslation();
20942
+ const { t } = chunk6GFSF2ML_js.useTranslation();
20943
20943
  const ref = React108.useRef(null);
20944
20944
  React108.useLayoutEffect(() => {
20945
20945
  const gallery = ref.current;
@@ -20976,14 +20976,14 @@ function StrokeEffectsSection({
20976
20976
  onUpdateShapeStyle,
20977
20977
  onSetStrokeColor
20978
20978
  }) {
20979
- const { t } = chunkP2COO2QO_js.useTranslation();
20979
+ const { t } = chunk6GFSF2ML_js.useTranslation();
20980
20980
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20981
20981
  /* @__PURE__ */ jsxRuntime.jsx(
20982
20982
  ColorPickerRow,
20983
20983
  {
20984
20984
  label: t("pptx.inspector.stroke"),
20985
20985
  prefix: "stroke",
20986
- value: chunkP2COO2QO_js.normalizeHexColor(style?.strokeColor, chunkP2COO2QO_js.DEFAULT_STROKE_COLOR),
20986
+ value: chunk6GFSF2ML_js.normalizeHexColor(style?.strokeColor, chunk6GFSF2ML_js.DEFAULT_STROKE_COLOR),
20987
20987
  selectedRef: style?.strokeColorRef,
20988
20988
  onChange: onSetStrokeColor,
20989
20989
  styleChange: (hex, current) => pptx.shapeOutlineChange(hex, void 0, current)
@@ -21026,7 +21026,7 @@ function FillStrokeProperties({
21026
21026
  onSetFillColor,
21027
21027
  onSetStrokeColor
21028
21028
  }) {
21029
- const { t } = chunkP2COO2QO_js.useTranslation();
21029
+ const { t } = chunk6GFSF2ML_js.useTranslation();
21030
21030
  const line = isLineish(selectedElement, selectedShapeType);
21031
21031
  const style = selectedShapeStyle;
21032
21032
  const handleFillModeChange = (nextMode) => {
@@ -21042,10 +21042,10 @@ function FillStrokeProperties({
21042
21042
  return;
21043
21043
  }
21044
21044
  if (nextMode === "gradient") {
21045
- const existing = chunkP2COO2QO_js.sanitizeGradientStops(style?.fillGradientStops);
21045
+ const existing = chunk6GFSF2ML_js.sanitizeGradientStops(style?.fillGradientStops);
21046
21046
  const stops = existing.length >= 2 ? existing : [
21047
21047
  {
21048
- color: chunkP2COO2QO_js.normalizeHexColor(style?.fillColor, chunkP2COO2QO_js.DEFAULT_FILL_COLOR),
21048
+ color: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
21049
21049
  position: 0,
21050
21050
  opacity: 1
21051
21051
  },
@@ -21070,7 +21070,7 @@ function FillStrokeProperties({
21070
21070
  onUpdateShapeStyle({ fillMode: "solid" });
21071
21071
  };
21072
21072
  const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
21073
- { color: chunkP2COO2QO_js.DEFAULT_FILL_COLOR, position: 0 },
21073
+ { color: chunk6GFSF2ML_js.DEFAULT_FILL_COLOR, position: 0 },
21074
21074
  { color: "#ffffff", position: 100 }
21075
21075
  ];
21076
21076
  const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
@@ -21097,7 +21097,7 @@ function FillStrokeProperties({
21097
21097
  {
21098
21098
  label: t("pptx.fill.fill"),
21099
21099
  prefix: "fill",
21100
- value: chunkP2COO2QO_js.normalizeHexColor(style?.fillColor, chunkP2COO2QO_js.DEFAULT_FILL_COLOR),
21100
+ value: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
21101
21101
  selectedRef: style?.fillColorRef,
21102
21102
  disabled: line,
21103
21103
  onChange: onSetFillColor,
@@ -21135,7 +21135,7 @@ function Text3DProperties({
21135
21135
  ts,
21136
21136
  onUpdateTextStyle
21137
21137
  }) {
21138
- const { t } = chunkP2COO2QO_js.useTranslation();
21138
+ const { t } = chunk6GFSF2ML_js.useTranslation();
21139
21139
  const commitRecentColor = useRecentColorCommit();
21140
21140
  const t3d = ts?.text3d;
21141
21141
  const hasExtrusion = Boolean(t3d?.extrusionHeight && t3d.extrusionHeight > 0);
@@ -21182,7 +21182,7 @@ function Text3DProperties({
21182
21182
  "input",
21183
21183
  {
21184
21184
  type: "color",
21185
- value: chunkP2COO2QO_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
21185
+ value: chunk6GFSF2ML_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
21186
21186
  ref: commitRecentColor,
21187
21187
  onChange: (e) => update3d({ extrusionColor: e.target.value }),
21188
21188
  className: COLOR_CLS
@@ -21349,7 +21349,7 @@ function AdvancedTextFormatting({
21349
21349
  onUpdateTextStyle,
21350
21350
  numChange
21351
21351
  }) {
21352
- const { t } = chunkP2COO2QO_js.useTranslation();
21352
+ const { t } = chunk6GFSF2ML_js.useTranslation();
21353
21353
  const commitRecentColor = useRecentColorCommit();
21354
21354
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
21355
21355
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] uppercase tracking-wide text-muted-foreground", children: t("pptx.textProperties.advancedTextHeading") }),
@@ -21371,7 +21371,7 @@ function AdvancedTextFormatting({
21371
21371
  "input",
21372
21372
  {
21373
21373
  type: "color",
21374
- value: chunkP2COO2QO_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
21374
+ value: chunk6GFSF2ML_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
21375
21375
  ref: commitRecentColor,
21376
21376
  onChange: (e) => onUpdateTextStyle({ highlightColor: e.target.value }),
21377
21377
  disabled: !canEdit,
@@ -21513,7 +21513,7 @@ function TextReflectionSection({
21513
21513
  onUpdateTextStyle,
21514
21514
  numChange
21515
21515
  }) {
21516
- const { t } = chunkP2COO2QO_js.useTranslation();
21516
+ const { t } = chunk6GFSF2ML_js.useTranslation();
21517
21517
  const hasReflection = Boolean(ts?.textReflection);
21518
21518
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
21519
21519
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2 text-foreground", children: [
@@ -21621,7 +21621,7 @@ function TextEffectsPanel({
21621
21621
  onUpdateTextStyle,
21622
21622
  numChange
21623
21623
  }) {
21624
- const { t } = chunkP2COO2QO_js.useTranslation();
21624
+ const { t } = chunk6GFSF2ML_js.useTranslation();
21625
21625
  const commitRecentColor = useRecentColorCommit();
21626
21626
  const hasShadow = Boolean(
21627
21627
  ts?.textShadowColor || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0
@@ -21667,7 +21667,7 @@ function TextEffectsPanel({
21667
21667
  "input",
21668
21668
  {
21669
21669
  type: "color",
21670
- value: chunkP2COO2QO_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
21670
+ value: chunk6GFSF2ML_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
21671
21671
  ref: commitRecentColor,
21672
21672
  onChange: (e) => onUpdateTextStyle({ textShadowColor: e.target.value }),
21673
21673
  className: COLOR_CLS2
@@ -21772,7 +21772,7 @@ function TextEffectsPanel({
21772
21772
  "input",
21773
21773
  {
21774
21774
  type: "color",
21775
- value: chunkP2COO2QO_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
21775
+ value: chunk6GFSF2ML_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
21776
21776
  ref: commitRecentColor,
21777
21777
  onChange: (e) => onUpdateTextStyle({ textGlowColor: e.target.value }),
21778
21778
  className: COLOR_CLS2
@@ -21822,7 +21822,7 @@ function TextWarpGallery({
21822
21822
  ts,
21823
21823
  onUpdateTextStyle
21824
21824
  }) {
21825
- const { t } = chunkP2COO2QO_js.useTranslation();
21825
+ const { t } = chunk6GFSF2ML_js.useTranslation();
21826
21826
  const [expanded, setExpanded] = React108__default.default.useState(false);
21827
21827
  const currentPreset = ts?.textWarpPreset || "textNoShape";
21828
21828
  const descriptor = React108.useMemo(() => pptx.buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
@@ -21903,7 +21903,7 @@ function ShapeTextPanels({
21903
21903
  onUpdateElementStyle,
21904
21904
  onUpdateTextStyle
21905
21905
  }) {
21906
- const { t } = chunkP2COO2QO_js.useTranslation();
21906
+ const { t } = chunk6GFSF2ML_js.useTranslation();
21907
21907
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
21908
21908
  pptx$1.hasShapeProperties(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
21909
21909
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
@@ -21912,11 +21912,11 @@ function ShapeTextPanels({
21912
21912
  {
21913
21913
  value: selectedElement.shapeType || "rect",
21914
21914
  disabled: !canEdit,
21915
- className: chunkP2COO2QO_js.cn(INPUT2, "w-full"),
21915
+ className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
21916
21916
  onChange: (e) => onUpdateElement({
21917
21917
  shapeType: e.target.value
21918
21918
  }),
21919
- children: chunkP2COO2QO_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
21919
+ 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))
21920
21920
  }
21921
21921
  )
21922
21922
  ] }),
@@ -21928,7 +21928,7 @@ function ShapeTextPanels({
21928
21928
  selectedElement,
21929
21929
  selectedShapeStyle: selectedElement.shapeStyle,
21930
21930
  selectedShapeType: selectedElement.shapeType,
21931
- selectedGradientStops: chunkP2COO2QO_js.sanitizeGradientStops(
21931
+ selectedGradientStops: chunk6GFSF2ML_js.sanitizeGradientStops(
21932
21932
  selectedElement.shapeStyle?.fillGradientStops
21933
21933
  ),
21934
21934
  canEdit,
@@ -21964,7 +21964,7 @@ function ShapeTextPanels({
21964
21964
  {
21965
21965
  disabled: !canEdit,
21966
21966
  "aria-label": "Text Color",
21967
- value: chunkP2COO2QO_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
21967
+ value: chunk6GFSF2ML_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
21968
21968
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
21969
21969
  onApply: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 }),
21970
21970
  patch: textColorPatch
@@ -22055,7 +22055,7 @@ function TextFormatToggle({
22055
22055
  {
22056
22056
  type: "button",
22057
22057
  disabled,
22058
- className: chunkP2COO2QO_js.cn(
22058
+ className: chunk6GFSF2ML_js.cn(
22059
22059
  "px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
22060
22060
  italic && "italic",
22061
22061
  underline && "underline",
@@ -22224,7 +22224,7 @@ function SmartArtLayoutSwitcher({
22224
22224
  canEdit,
22225
22225
  onUpdateSmartArt
22226
22226
  }) {
22227
- const { t } = chunkP2COO2QO_js.useTranslation();
22227
+ const { t } = chunk6GFSF2ML_js.useTranslation();
22228
22228
  const currentLayout = smartArtData.resolvedLayoutType ?? "list";
22229
22229
  const handleLayoutSwitch = (newLayout) => {
22230
22230
  if (!canEdit || newLayout === currentLayout) {
@@ -22243,7 +22243,7 @@ function SmartArtLayoutSwitcher({
22243
22243
  type: "button",
22244
22244
  "data-testid": `smartart-layout-${type}`,
22245
22245
  disabled: !canEdit,
22246
- className: chunkP2COO2QO_js.cn(
22246
+ className: chunk6GFSF2ML_js.cn(
22247
22247
  "flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
22248
22248
  "text-[9px] leading-tight",
22249
22249
  isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
@@ -22270,7 +22270,7 @@ function SmartArtStyleControls({
22270
22270
  onChangeColorScheme,
22271
22271
  onChangeStyle
22272
22272
  }) {
22273
- const { t } = chunkP2COO2QO_js.useTranslation();
22273
+ const { t } = chunk6GFSF2ML_js.useTranslation();
22274
22274
  const translate = React108__default.default.useCallback((key) => t(key), [t]);
22275
22275
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
22276
22276
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
@@ -22281,7 +22281,7 @@ function SmartArtStyleControls({
22281
22281
  disabled: !canEdit,
22282
22282
  "data-testid": "smartart-color-scheme",
22283
22283
  "aria-label": t("pptx.smartart.colorScheme"),
22284
- className: chunkP2COO2QO_js.cn(INPUT2, "w-full"),
22284
+ className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
22285
22285
  value: colorScheme,
22286
22286
  onChange: (e) => onChangeColorScheme(e.target.value),
22287
22287
  children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
@@ -22296,7 +22296,7 @@ function SmartArtStyleControls({
22296
22296
  type: "button",
22297
22297
  disabled: !canEdit,
22298
22298
  "aria-pressed": style === s,
22299
- className: chunkP2COO2QO_js.cn(
22299
+ className: chunk6GFSF2ML_js.cn(
22300
22300
  "flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
22301
22301
  style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
22302
22302
  ),
@@ -22322,14 +22322,14 @@ function SmartArtPropertiesPanel({
22322
22322
  onUpdateElement,
22323
22323
  box
22324
22324
  }) {
22325
- const { t } = chunkP2COO2QO_js.useTranslation();
22325
+ const { t } = chunk6GFSF2ML_js.useTranslation();
22326
22326
  const { pushColor } = useRecentColors();
22327
22327
  const paneRef = React108__default.default.useRef(null);
22328
22328
  const applySmartArtData = (newData) => {
22329
22329
  const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
22330
22330
  newData,
22331
22331
  newData.layout,
22332
- chunkXG4WSJ4O_js.resolveSmartArtDataPalette(newData),
22332
+ chunk3AZ6ESJU_js.resolveSmartArtDataPalette(newData),
22333
22333
  newData.style ?? "flat",
22334
22334
  "inspector",
22335
22335
  box
@@ -22400,9 +22400,9 @@ function TableDataGrid({
22400
22400
  canEdit,
22401
22401
  onUpdateElement
22402
22402
  }) {
22403
- const { t } = chunkP2COO2QO_js.useTranslation();
22403
+ const { t } = chunk6GFSF2ML_js.useTranslation();
22404
22404
  const grid = pptx.buildTableDataGrid(tableElement);
22405
- const { viewportWidth } = chunkXG4WSJ4O_js.useIsMobile();
22405
+ const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
22406
22406
  const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
22407
22407
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
22408
22408
  const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
@@ -22566,7 +22566,7 @@ function TableCellPatternFill({
22566
22566
  canEdit,
22567
22567
  onUpdateCellStyle
22568
22568
  }) {
22569
- const { t } = chunkP2COO2QO_js.useTranslation();
22569
+ const { t } = chunk6GFSF2ML_js.useTranslation();
22570
22570
  const commitRecentColor = useRecentColorCommit();
22571
22571
  const translate = (key) => t(key);
22572
22572
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
@@ -22621,7 +22621,7 @@ function TableCellAdvancedFill({
22621
22621
  canEdit,
22622
22622
  onUpdateCellStyle
22623
22623
  }) {
22624
- const { t } = chunkP2COO2QO_js.useTranslation();
22624
+ const { t } = chunk6GFSF2ML_js.useTranslation();
22625
22625
  const fillMode = cellStyle.fillMode ?? "solid";
22626
22626
  const handleFillModeChange = (mode) => {
22627
22627
  const next = mode;
@@ -22709,7 +22709,7 @@ function GradientControls({
22709
22709
  canEdit,
22710
22710
  onUpdateCellStyle
22711
22711
  }) {
22712
- const { t } = chunkP2COO2QO_js.useTranslation();
22712
+ const { t } = chunk6GFSF2ML_js.useTranslation();
22713
22713
  const commitRecentColor = useRecentColorCommit();
22714
22714
  const stops = cellStyle.gradientFillStops ?? [];
22715
22715
  const gradType = cellStyle.gradientFillType ?? "linear";
@@ -22807,7 +22807,7 @@ function TableCellColorField({
22807
22807
  disabled,
22808
22808
  onCommit
22809
22809
  }) {
22810
- const hex = chunkP2COO2QO_js.normalizeHexColor(value, fallback);
22810
+ const hex = chunk6GFSF2ML_js.normalizeHexColor(value, fallback);
22811
22811
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
22812
22812
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
22813
22813
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -22837,7 +22837,7 @@ function TableCellFormattingPanel({
22837
22837
  onUpdateTableData,
22838
22838
  onUpdateMergeRows
22839
22839
  }) {
22840
- const { t } = chunkP2COO2QO_js.useTranslation();
22840
+ const { t } = chunk6GFSF2ML_js.useTranslation();
22841
22841
  const { rowIndex, columnIndex } = tableEditorState;
22842
22842
  const cell = td.rows[rowIndex]?.cells[columnIndex];
22843
22843
  if (!cell) {
@@ -22915,7 +22915,7 @@ function TableCellFormattingPanel({
22915
22915
  {
22916
22916
  type: "button",
22917
22917
  disabled: !canEdit,
22918
- className: chunkP2COO2QO_js.cn(
22918
+ className: chunk6GFSF2ML_js.cn(
22919
22919
  "px-2 py-1 rounded text-[11px] transition-colors",
22920
22920
  cls,
22921
22921
  cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
@@ -22934,7 +22934,7 @@ function TableCellFormattingPanel({
22934
22934
  {
22935
22935
  type: "button",
22936
22936
  disabled: !canEdit,
22937
- className: chunkP2COO2QO_js.cn(
22937
+ className: chunk6GFSF2ML_js.cn(
22938
22938
  "px-2 py-1 rounded text-[11px] transition-colors",
22939
22939
  cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
22940
22940
  ),
@@ -22952,7 +22952,7 @@ function TableCellFormattingPanel({
22952
22952
  {
22953
22953
  type: "button",
22954
22954
  disabled: !canEdit,
22955
- className: chunkP2COO2QO_js.cn(
22955
+ className: chunk6GFSF2ML_js.cn(
22956
22956
  "px-2 py-1 rounded text-[11px] transition-colors",
22957
22957
  cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
22958
22958
  ),
@@ -22975,7 +22975,7 @@ function TableCellFormattingPanel({
22975
22975
  DebouncedColorInput,
22976
22976
  {
22977
22977
  disabled: !canEdit,
22978
- value: chunkP2COO2QO_js.normalizeHexColor(cs[colorKey], "#374151"),
22978
+ value: chunk6GFSF2ML_js.normalizeHexColor(cs[colorKey], "#374151"),
22979
22979
  className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
22980
22980
  onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
22981
22981
  }
@@ -22985,7 +22985,7 @@ function TableCellFormattingPanel({
22985
22985
  {
22986
22986
  type: "number",
22987
22987
  disabled: !canEdit,
22988
- className: chunkP2COO2QO_js.cn(INPUT2, "w-14"),
22988
+ className: chunk6GFSF2ML_js.cn(INPUT2, "w-14"),
22989
22989
  min: 0,
22990
22990
  max: 10,
22991
22991
  value: pptx.inspectorNumber(cs[widthKey], 1),
@@ -23001,7 +23001,7 @@ function TableCellFormattingPanel({
23001
23001
  {
23002
23002
  type: "button",
23003
23003
  disabled: !canEdit,
23004
- className: chunkP2COO2QO_js.cn(BTN2, "text-center"),
23004
+ className: chunk6GFSF2ML_js.cn(BTN2, "text-center"),
23005
23005
  onClick: () => {
23006
23006
  const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
23007
23007
  if (newRows) {
@@ -23016,7 +23016,7 @@ function TableCellFormattingPanel({
23016
23016
  {
23017
23017
  type: "button",
23018
23018
  disabled: !canEdit,
23019
- className: chunkP2COO2QO_js.cn(BTN2, "text-center"),
23019
+ className: chunk6GFSF2ML_js.cn(BTN2, "text-center"),
23020
23020
  onClick: () => {
23021
23021
  const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
23022
23022
  if (newRows) {
@@ -23031,7 +23031,7 @@ function TableCellFormattingPanel({
23031
23031
  {
23032
23032
  type: "button",
23033
23033
  disabled: !canEdit,
23034
- className: chunkP2COO2QO_js.cn(BTN2, "text-center"),
23034
+ className: chunk6GFSF2ML_js.cn(BTN2, "text-center"),
23035
23035
  onClick: () => {
23036
23036
  const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
23037
23037
  if (newRows) {
@@ -23050,7 +23050,7 @@ function TableStyleEditorFields({
23050
23050
  canEdit,
23051
23051
  onEdit
23052
23052
  }) {
23053
- const { t } = chunkP2COO2QO_js.useTranslation();
23053
+ const { t } = chunk6GFSF2ML_js.useTranslation();
23054
23054
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
23055
23055
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
23056
23056
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.tableStyleEditor.fillSection") }),
@@ -23155,7 +23155,7 @@ function BorderSideRow({
23155
23155
  canEdit,
23156
23156
  onEdit
23157
23157
  }) {
23158
- const { t } = chunkP2COO2QO_js.useTranslation();
23158
+ const { t } = chunk6GFSF2ML_js.useTranslation();
23159
23159
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-[11px]", children: [
23160
23160
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 shrink-0 text-muted-foreground", children: t(pptx.TABLE_STYLE_BORDER_SIDE_LABEL_KEYS[side]) }),
23161
23161
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -23212,7 +23212,7 @@ function TableStyleEditor({
23212
23212
  onAssignStyle,
23213
23213
  onClose
23214
23214
  }) {
23215
- const { t } = chunkP2COO2QO_js.useTranslation();
23215
+ const { t } = chunk6GFSF2ML_js.useTranslation();
23216
23216
  const themeColorMap = useThemeColorMap();
23217
23217
  const [activeStyleId, setActiveStyleId] = React108.useState(
23218
23218
  styleId ? pptx$1.normalizeTableStyleGuid(styleId) : ""
@@ -23304,7 +23304,7 @@ function TablePropertiesPanel({
23304
23304
  onTableStyleMapChange,
23305
23305
  onDeleteTableStyle
23306
23306
  }) {
23307
- const { t } = chunkP2COO2QO_js.useTranslation();
23307
+ const { t } = chunk6GFSF2ML_js.useTranslation();
23308
23308
  const [showStyleEditor, setShowStyleEditor] = React108.useState(false);
23309
23309
  const td = tableElement.tableData;
23310
23310
  if (!td) {
@@ -23386,7 +23386,7 @@ function TablePropertiesPanel({
23386
23386
  ] }),
23387
23387
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
23388
23388
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
23389
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkP2COO2QO_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
23389
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunk6GFSF2ML_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
23390
23390
  "button",
23391
23391
  {
23392
23392
  type: "button",
@@ -23534,7 +23534,7 @@ function ElementInspectorBody({
23534
23534
  onUpdateTextStyle,
23535
23535
  onMoveLayer
23536
23536
  }) {
23537
- const { t } = chunkP2COO2QO_js.useTranslation();
23537
+ const { t } = chunk6GFSF2ML_js.useTranslation();
23538
23538
  const isLocked = pptx.isElementLocked(selectedElement);
23539
23539
  const handleToggleLock = () => {
23540
23540
  if (!canEdit) {
@@ -23684,7 +23684,7 @@ function CommentMentionTextarea({
23684
23684
  className,
23685
23685
  ariaLabel
23686
23686
  }) {
23687
- const { t } = chunkP2COO2QO_js.useTranslation();
23687
+ const { t } = chunk6GFSF2ML_js.useTranslation();
23688
23688
  const textareaRef = React108.useRef(null);
23689
23689
  const [caret, setCaret] = React108.useState(value.length);
23690
23690
  const [highlighted, setHighlighted] = React108.useState(0);
@@ -23773,7 +23773,7 @@ function CommentMentionTextarea({
23773
23773
  "data-testid": "pptx-comment-mention-option",
23774
23774
  role: "option",
23775
23775
  "aria-selected": index === safeHighlighted,
23776
- className: chunkP2COO2QO_js.cn(
23776
+ className: chunk6GFSF2ML_js.cn(
23777
23777
  "block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
23778
23778
  index === safeHighlighted && "bg-accent"
23779
23779
  ),
@@ -23820,7 +23820,7 @@ function InspectorCommentReplyForm({
23820
23820
  onSubmit,
23821
23821
  onCancel
23822
23822
  }) {
23823
- const { t } = chunkP2COO2QO_js.useTranslation();
23823
+ const { t } = chunk6GFSF2ML_js.useTranslation();
23824
23824
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 space-y-1.5 pl-3 border-l-2 border-l-primary/40", children: [
23825
23825
  /* @__PURE__ */ jsxRuntime.jsx(
23826
23826
  CommentMentionTextarea,
@@ -23886,7 +23886,7 @@ function InspectorCommentRow({
23886
23886
  onSelectElement,
23887
23887
  depth = 0
23888
23888
  }) {
23889
- const { t } = chunkP2COO2QO_js.useTranslation();
23889
+ const { t } = chunk6GFSF2ML_js.useTranslation();
23890
23890
  const isEditing = editingCommentId === comment.id;
23891
23891
  const isReplying = replyingToCommentId === comment.id;
23892
23892
  const replyDraft = replyDraftByCommentId[comment.id] ?? "";
@@ -23896,7 +23896,7 @@ function InspectorCommentRow({
23896
23896
  return /* @__PURE__ */ jsxRuntime.jsxs(
23897
23897
  "div",
23898
23898
  {
23899
- className: chunkP2COO2QO_js.cn(
23899
+ className: chunk6GFSF2ML_js.cn(
23900
23900
  "rounded border border-border bg-card p-2",
23901
23901
  depth > 0 && "ml-3 border-l-2 border-l-primary/40"
23902
23902
  ),
@@ -23910,7 +23910,7 @@ function InspectorCommentRow({
23910
23910
  t("pptx.comments.resolved")
23911
23911
  ] })
23912
23912
  ] }),
23913
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkP2COO2QO_js.formatCommentTimestamp(comment.createdAt) })
23913
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunk6GFSF2ML_js.formatCommentTimestamp(comment.createdAt) })
23914
23914
  ] }),
23915
23915
  comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
23916
23916
  "button",
@@ -23918,12 +23918,12 @@ function InspectorCommentRow({
23918
23918
  type: "button",
23919
23919
  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",
23920
23920
  title: t("pptx.comments.commentingOn", {
23921
- element: chunkP2COO2QO_js.getElementLabel(targetElement)
23921
+ element: chunk6GFSF2ML_js.getElementLabel(targetElement)
23922
23922
  }),
23923
23923
  onClick: () => onSelectElement(targetElement.id),
23924
23924
  children: [
23925
23925
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
23926
- chunkP2COO2QO_js.getElementLabel(targetElement)
23926
+ chunk6GFSF2ML_js.getElementLabel(targetElement)
23927
23927
  ]
23928
23928
  }
23929
23929
  ) : /* @__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") })),
@@ -23992,7 +23992,7 @@ function InspectorCommentRow({
23992
23992
  "button",
23993
23993
  {
23994
23994
  type: "button",
23995
- className: chunkP2COO2QO_js.cn(
23995
+ className: chunk6GFSF2ML_js.cn(
23996
23996
  "inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
23997
23997
  comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
23998
23998
  ),
@@ -24098,7 +24098,7 @@ function InspectorCommentsSection({
24098
24098
  onSubmitReply,
24099
24099
  onSelectElement
24100
24100
  }) {
24101
- const { t } = chunkP2COO2QO_js.useTranslation();
24101
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24102
24102
  const HEADING_CLS = "text-[11px] uppercase tracking-wide text-muted-foreground";
24103
24103
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
24104
24104
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
@@ -24135,7 +24135,7 @@ function InspectorCommentsSection({
24135
24135
  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: [
24136
24136
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
24137
24137
  t("pptx.comments.commentingOn", {
24138
- element: chunkP2COO2QO_js.getElementLabel(selectedElement)
24138
+ element: chunk6GFSF2ML_js.getElementLabel(selectedElement)
24139
24139
  })
24140
24140
  ] }),
24141
24141
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -24146,7 +24146,7 @@ function InspectorCommentsSection({
24146
24146
  authors: commentAuthors,
24147
24147
  rows: 2,
24148
24148
  placeholder: selectedElement ? t("pptx.comments.addOnElement", {
24149
- element: chunkP2COO2QO_js.getElementLabel(selectedElement)
24149
+ element: chunk6GFSF2ML_js.getElementLabel(selectedElement)
24150
24150
  }) : t("pptx.comments.addPlaceholder"),
24151
24151
  className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
24152
24152
  onChange: onSetCommentDraft,
@@ -24159,7 +24159,7 @@ function InspectorCommentsSection({
24159
24159
  type: "button",
24160
24160
  onClick: onAddComment,
24161
24161
  disabled: !commentDraft.trim(),
24162
- className: chunkP2COO2QO_js.cn(
24162
+ className: chunk6GFSF2ML_js.cn(
24163
24163
  "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]!",
24164
24164
  commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
24165
24165
  ),
@@ -24184,7 +24184,7 @@ function InspectorElementsTab({
24184
24184
  onSelectElement,
24185
24185
  onUpdateSlide
24186
24186
  }) {
24187
- const { t } = chunkP2COO2QO_js.useTranslation();
24187
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24188
24188
  const toggleHidden = (elementId2) => {
24189
24189
  const elements2 = activeSlide?.elements;
24190
24190
  if (!canEdit || !elements2) {
@@ -24200,13 +24200,13 @@ function InspectorElementsTab({
24200
24200
  };
24201
24201
  if (!activeSlide) {
24202
24202
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
24203
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkP2COO2QO_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24203
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk6GFSF2ML_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24204
24204
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
24205
24205
  ] });
24206
24206
  }
24207
24207
  const elements = activeSlide.elements || [];
24208
24208
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
24209
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkP2COO2QO_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24209
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk6GFSF2ML_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24210
24210
  [...elements].reverse().map((el, reversedIndex) => {
24211
24211
  const index = elements.length - 1 - reversedIndex;
24212
24212
  const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
@@ -24214,7 +24214,7 @@ function InspectorElementsTab({
24214
24214
  "div",
24215
24215
  {
24216
24216
  title: `${el.type} - ${el.id}`,
24217
- className: chunkP2COO2QO_js.cn(
24217
+ className: chunk6GFSF2ML_js.cn(
24218
24218
  "flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
24219
24219
  selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
24220
24220
  ),
@@ -24250,8 +24250,8 @@ function InspectorPaneHeader({
24250
24250
  onSetActiveTab,
24251
24251
  onClose
24252
24252
  }) {
24253
- const { t } = chunkP2COO2QO_js.useTranslation();
24254
- const { viewportWidth } = chunkXG4WSJ4O_js.useIsMobile();
24253
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24254
+ const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
24255
24255
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
24256
24256
  const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
24257
24257
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -24274,7 +24274,7 @@ function InspectorPaneHeader({
24274
24274
  type: "button",
24275
24275
  title: t(labelKey),
24276
24276
  style: touchBtnStyle,
24277
- className: chunkP2COO2QO_js.cn(
24277
+ className: chunk6GFSF2ML_js.cn(
24278
24278
  "flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
24279
24279
  activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
24280
24280
  ),
@@ -24334,7 +24334,7 @@ function CustomPropertiesBlock({
24334
24334
  canEdit,
24335
24335
  onUpdate
24336
24336
  }) {
24337
- const { t } = chunkP2COO2QO_js.useTranslation();
24337
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24338
24338
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
24339
24339
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
24340
24340
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.documentProperties.custom.heading") }),
@@ -24388,7 +24388,7 @@ function CustomPropertiesBlock({
24388
24388
  "button",
24389
24389
  {
24390
24390
  type: "button",
24391
- className: chunkP2COO2QO_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
24391
+ className: chunk6GFSF2ML_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
24392
24392
  onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
24393
24393
  children: "\xD7"
24394
24394
  }
@@ -24401,7 +24401,7 @@ function NotesHandoutCard({
24401
24401
  notesMaster,
24402
24402
  handoutMaster
24403
24403
  }) {
24404
- const { t } = chunkP2COO2QO_js.useTranslation();
24404
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24405
24405
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
24406
24406
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.notesHandoutHeading") }),
24407
24407
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px] text-muted-foreground", children: [
@@ -24438,7 +24438,7 @@ function DocumentPropertiesCard({
24438
24438
  onUpdateAppProperties,
24439
24439
  onUpdateCustomProperties
24440
24440
  }) {
24441
- const { t } = chunkP2COO2QO_js.useTranslation();
24441
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24442
24442
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
24443
24443
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.documentHeading") }),
24444
24444
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px] text-muted-foreground", children: [
@@ -24492,7 +24492,7 @@ function DocumentPropertiesCard({
24492
24492
  function SlideSizeRescalePrompt({
24493
24493
  onChoose
24494
24494
  }) {
24495
- const { t } = chunkP2COO2QO_js.useTranslation();
24495
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24496
24496
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 rounded border border-border bg-muted/40 p-2 text-[11px]", children: [
24497
24497
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: t("pptx.slideSize.rescaleTitle") }),
24498
24498
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: t("pptx.slideSize.rescaleDescription") }),
@@ -24534,7 +24534,7 @@ function SlideSizeCard({
24534
24534
  onUpdateSlideSize,
24535
24535
  hasContent
24536
24536
  }) {
24537
- const { t } = chunkP2COO2QO_js.useTranslation();
24537
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24538
24538
  const selection = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize });
24539
24539
  const presetDisabled = !canEdit || !onUpdateSlideSize;
24540
24540
  const [pendingSize, setPendingSize] = React108.useState(null);
@@ -24645,7 +24645,7 @@ function PresentationSettingsCard({
24645
24645
  canEdit,
24646
24646
  onUpdate
24647
24647
  }) {
24648
- const { t } = chunkP2COO2QO_js.useTranslation();
24648
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24649
24649
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${CARD2} pptx-editor-presentation-card`, children: [
24650
24650
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideInspector.presentation") }),
24651
24651
  /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "presentation-fields", className: "space-y-1.5 text-[11px]", children: [
@@ -24716,7 +24716,7 @@ function PresentationSettingsCard({
24716
24716
  min: 1,
24717
24717
  max: 16,
24718
24718
  disabled: !canEdit,
24719
- className: chunkP2COO2QO_js.cn(INPUT2, "w-20"),
24719
+ className: chunk6GFSF2ML_js.cn(INPUT2, "w-20"),
24720
24720
  value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
24721
24721
  onChange: (e) => onUpdate({
24722
24722
  printProperties: pptx.withSlidesPerPage(
@@ -24737,7 +24737,7 @@ function ThemeSelectorCard({
24737
24737
  canEdit,
24738
24738
  onApplyTheme
24739
24739
  }) {
24740
- const { t } = chunkP2COO2QO_js.useTranslation();
24740
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24741
24741
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
24742
24742
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.themeHeading") }),
24743
24743
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
@@ -24800,7 +24800,7 @@ function SlideThemeOverridePanel({
24800
24800
  canEdit,
24801
24801
  onUpdateSlide
24802
24802
  }) {
24803
- const { t } = chunkP2COO2QO_js.useTranslation();
24803
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24804
24804
  const translate = React108.useCallback((key) => t(key), [t]);
24805
24805
  const override = activeSlide?.clrMapOverride;
24806
24806
  const isOverrideActive = override !== void 0;
@@ -24907,7 +24907,7 @@ function DirectionPicker({
24907
24907
  disabled,
24908
24908
  onChange
24909
24909
  }) {
24910
- const { t } = chunkP2COO2QO_js.useTranslation();
24910
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24911
24911
  if (directions.length <= 3) {
24912
24912
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: directions.map((dir) => /* @__PURE__ */ jsxRuntime.jsx(
24913
24913
  "button",
@@ -24949,10 +24949,10 @@ function TransitionPreview({
24949
24949
  const previewRef = React108.useRef(null);
24950
24950
  const [playing, setPlaying] = React108.useState(false);
24951
24951
  const [animKey, setAnimKey] = React108.useState(0);
24952
- const { t } = chunkP2COO2QO_js.useTranslation();
24952
+ const { t } = chunk6GFSF2ML_js.useTranslation();
24953
24953
  const durationMs = transition.durationMs ?? 500;
24954
24954
  const animations = React108.useMemo(
24955
- () => chunkXG4WSJ4O_js.getSlideTransitionAnimations(
24955
+ () => chunk3AZ6ESJU_js.getSlideTransitionAnimations(
24956
24956
  transition.type,
24957
24957
  durationMs,
24958
24958
  transition.direction,
@@ -25021,7 +25021,7 @@ function TransitionPreview({
25021
25021
  ]
25022
25022
  }
25023
25023
  ),
25024
- /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkXG4WSJ4O_js.SLIDE_TRANSITION_KEYFRAMES })
25024
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk3AZ6ESJU_js.SLIDE_TRANSITION_KEYFRAMES })
25025
25025
  ] });
25026
25026
  }
25027
25027
  var DEFAULT_DURATION_MS = 320;
@@ -25033,7 +25033,7 @@ function SlideTransitionSection({
25033
25033
  canEdit = true,
25034
25034
  onTransitionChange
25035
25035
  }) {
25036
- const { t } = chunkP2COO2QO_js.useTranslation();
25036
+ const { t } = chunk6GFSF2ML_js.useTranslation();
25037
25037
  if (!activeSlide) {
25038
25038
  return null;
25039
25039
  }
@@ -25064,7 +25064,7 @@ function SlideTransitionSection({
25064
25064
  type: e.target.value
25065
25065
  }),
25066
25066
  className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
25067
- children: chunkP2COO2QO_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
25067
+ children: chunk6GFSF2ML_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
25068
25068
  }
25069
25069
  )
25070
25070
  ] }),
@@ -25222,7 +25222,7 @@ function TagsSection({
25222
25222
  onUpdateTagCollections,
25223
25223
  canEdit
25224
25224
  }) {
25225
- const { t } = chunkP2COO2QO_js.useTranslation();
25225
+ const { t } = chunk6GFSF2ML_js.useTranslation();
25226
25226
  const [collapsed, setCollapsed] = React108.useState(true);
25227
25227
  const allTags = pptx.flattenTagCollections(tagCollections);
25228
25228
  const updateTag = (colIdx, tagIdx, field, newValue) => {
@@ -25280,7 +25280,7 @@ function TagsSection({
25280
25280
  "button",
25281
25281
  {
25282
25282
  type: "button",
25283
- className: chunkP2COO2QO_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
25283
+ className: chunk6GFSF2ML_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
25284
25284
  title: t("pptx.tags.deleteTag"),
25285
25285
  onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
25286
25286
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
@@ -25322,7 +25322,7 @@ function PresentationPropertiesPanel({
25322
25322
  tagCollections,
25323
25323
  onUpdateTagCollections
25324
25324
  }) {
25325
- const { t } = chunkP2COO2QO_js.useTranslation();
25325
+ const { t } = chunk6GFSF2ML_js.useTranslation();
25326
25326
  const handleTransitionChange = React108__default.default.useCallback(
25327
25327
  (updates) => {
25328
25328
  onUpdateSlide({
@@ -25409,7 +25409,7 @@ function PresentationPropertiesPanel({
25409
25409
  canEdit
25410
25410
  }
25411
25411
  ) }),
25412
- activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunkP2COO2QO_js.cn(CARD2, "space-y-1"), children: [
25412
+ activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunk6GFSF2ML_js.cn(CARD2, "space-y-1"), children: [
25413
25413
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
25414
25414
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
25415
25415
  activeSlide.elements?.length ?? 0,
@@ -25427,17 +25427,17 @@ function SlideBackgroundPanel({
25427
25427
  onSetTemplateBackground,
25428
25428
  onGetTemplateBackgroundColor
25429
25429
  }) {
25430
- const { t } = chunkP2COO2QO_js.useTranslation();
25430
+ const { t } = chunk6GFSF2ML_js.useTranslation();
25431
25431
  const bgImageInputRef = React108.useRef(null);
25432
25432
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
25433
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkP2COO2QO_js.cn(CARD2, "space-y-2"), children: [
25433
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk6GFSF2ML_js.cn(CARD2, "space-y-2"), children: [
25434
25434
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
25435
25435
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
25436
25436
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
25437
25437
  /* @__PURE__ */ jsxRuntime.jsx(
25438
25438
  DebouncedColorInput,
25439
25439
  {
25440
- value: chunkP2COO2QO_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
25440
+ value: chunk6GFSF2ML_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
25441
25441
  disabled: !canEdit,
25442
25442
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
25443
25443
  onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
@@ -25476,7 +25476,7 @@ function SlideBackgroundPanel({
25476
25476
  "button",
25477
25477
  {
25478
25478
  type: "button",
25479
- className: chunkP2COO2QO_js.cn(BTN2, "flex-1 text-center"),
25479
+ className: chunk6GFSF2ML_js.cn(BTN2, "flex-1 text-center"),
25480
25480
  disabled: !canEdit,
25481
25481
  onClick: () => bgImageInputRef.current?.click(),
25482
25482
  children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
@@ -25509,7 +25509,7 @@ function SlideBackgroundPanel({
25509
25509
  "button",
25510
25510
  {
25511
25511
  type: "button",
25512
- className: chunkP2COO2QO_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
25512
+ className: chunk6GFSF2ML_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
25513
25513
  disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
25514
25514
  onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
25515
25515
  children: t("pptx.slideBackground.clearBackground")
@@ -25546,21 +25546,21 @@ function TemplateBackgroundCard({
25546
25546
  onSetTemplateBackground,
25547
25547
  onGetTemplateBackgroundColor
25548
25548
  }) {
25549
- const { t } = chunkP2COO2QO_js.useTranslation();
25549
+ const { t } = chunk6GFSF2ML_js.useTranslation();
25550
25550
  const rows = pptx.resolveTemplateBackgroundRows(
25551
25551
  activeSlide,
25552
25552
  slideMasters,
25553
25553
  t("pptx.master.layout"),
25554
25554
  t("pptx.master.master")
25555
25555
  );
25556
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkP2COO2QO_js.cn(CARD2, "space-y-2"), children: [
25556
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk6GFSF2ML_js.cn(CARD2, "space-y-2"), children: [
25557
25557
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
25558
25558
  rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
25559
25559
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
25560
25560
  /* @__PURE__ */ jsxRuntime.jsx(
25561
25561
  DebouncedColorInput,
25562
25562
  {
25563
- value: chunkP2COO2QO_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
25563
+ value: chunk6GFSF2ML_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
25564
25564
  disabled: !canEdit,
25565
25565
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
25566
25566
  onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
@@ -25573,7 +25573,7 @@ function TemplateBackgroundCard({
25573
25573
  /* @__PURE__ */ jsxRuntime.jsx(
25574
25574
  DebouncedColorInput,
25575
25575
  {
25576
- value: chunkP2COO2QO_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
25576
+ value: chunk6GFSF2ML_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
25577
25577
  disabled: !canEdit,
25578
25578
  className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
25579
25579
  onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
@@ -25683,8 +25683,8 @@ function InspectorPane(props) {
25683
25683
  panelWidth
25684
25684
  } = props;
25685
25685
  const hasSelection = selectedElement !== null;
25686
- const { t } = chunkP2COO2QO_js.useTranslation();
25687
- const { dragY, handlers: dragHandlers } = chunkXG4WSJ4O_js.useSheetDismissDrag(onClose);
25686
+ const { t } = chunk6GFSF2ML_js.useTranslation();
25687
+ const { dragY, handlers: dragHandlers } = chunk3AZ6ESJU_js.useSheetDismissDrag(onClose);
25688
25688
  const {
25689
25689
  animationPanelHeight,
25690
25690
  effectiveThemeOptions,
@@ -25706,7 +25706,7 @@ function InspectorPane(props) {
25706
25706
  "div",
25707
25707
  {
25708
25708
  "data-pptx-chrome": "inspector",
25709
- className: chunkP2COO2QO_js.cn(
25709
+ className: chunk6GFSF2ML_js.cn(
25710
25710
  // Shared styles
25711
25711
  "bg-background flex flex-col text-xs text-foreground shadow-xl",
25712
25712
  // Mobile: absolute bottom sheet overlay sized via dvh so it
@@ -26037,7 +26037,7 @@ function PresentationAnnotationOverlay({
26037
26037
  );
26038
26038
  }
26039
26039
  function PresentationToolbar(p) {
26040
- const { t } = chunkP2COO2QO_js.useTranslation();
26040
+ const { t } = chunk6GFSF2ML_js.useTranslation();
26041
26041
  const ref = useWebControl(
26042
26042
  {
26043
26043
  current: p.currentSlideIndex,
@@ -26096,8 +26096,8 @@ function PresentationTouchControls({
26096
26096
  onEndPresentation,
26097
26097
  hideNavigation = false
26098
26098
  }) {
26099
- const { t } = chunkP2COO2QO_js.useTranslation();
26100
- const { isTouchDevice } = chunkXG4WSJ4O_js.useIsMobile();
26099
+ const { t } = chunk6GFSF2ML_js.useTranslation();
26100
+ const { isTouchDevice } = chunk3AZ6ESJU_js.useIsMobile();
26101
26101
  if (!isTouchDevice) {
26102
26102
  return null;
26103
26103
  }
@@ -26179,7 +26179,7 @@ function KeepAnnotationsDialog({
26179
26179
  onKeep,
26180
26180
  onDiscard
26181
26181
  }) {
26182
- const { t } = chunkP2COO2QO_js.useTranslation();
26182
+ const { t } = chunk6GFSF2ML_js.useTranslation();
26183
26183
  if (!isOpen) {
26184
26184
  return null;
26185
26185
  }
@@ -26227,7 +26227,7 @@ function PasteSpecialDialog({
26227
26227
  onCancel,
26228
26228
  onConfirm
26229
26229
  }) {
26230
- const { t } = chunkP2COO2QO_js.useTranslation();
26230
+ const { t } = chunk6GFSF2ML_js.useTranslation();
26231
26231
  const [selected, setSelected] = React108.useState("keep-source-formatting");
26232
26232
  if (!isOpen) {
26233
26233
  return null;
@@ -26285,7 +26285,7 @@ function PasteOptionsToolbar({
26285
26285
  onChoose,
26286
26286
  onDismiss
26287
26287
  }) {
26288
- const { t } = chunkP2COO2QO_js.useTranslation();
26288
+ const { t } = chunk6GFSF2ML_js.useTranslation();
26289
26289
  const [rect, setRect] = React108.useState(null);
26290
26290
  React108.useEffect(() => {
26291
26291
  const node = elementId2 ? pptx.findCanvasElementNode(document, elementId2, { canvasOnly: true }) : null;
@@ -26312,7 +26312,7 @@ function NotesPagePreview({
26312
26312
  frameSlides,
26313
26313
  maxPages = 3
26314
26314
  }) {
26315
- const { t } = chunkP2COO2QO_js.useTranslation();
26315
+ const { t } = chunk6GFSF2ML_js.useTranslation();
26316
26316
  const pages = React108.useMemo(() => pptx.computeAllNotesPages(slideIndices), [slideIndices]);
26317
26317
  const printable = React108.useMemo(() => pptx.getNotesPrintableArea(), []);
26318
26318
  const visiblePages = pages.slice(0, maxPages);
@@ -26400,15 +26400,15 @@ function PrintPreview({
26400
26400
  frameSlides,
26401
26401
  maxPages = 3
26402
26402
  }) {
26403
- const { t } = chunkP2COO2QO_js.useTranslation();
26403
+ const { t } = chunk6GFSF2ML_js.useTranslation();
26404
26404
  const pages = React108.useMemo(
26405
- () => chunkP2COO2QO_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
26405
+ () => chunk6GFSF2ML_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
26406
26406
  [slideIndices, slidesPerPage, orientation]
26407
26407
  );
26408
- const printable = React108.useMemo(() => chunkP2COO2QO_js.getPrintableArea(orientation), [orientation]);
26408
+ const printable = React108.useMemo(() => chunk6GFSF2ML_js.getPrintableArea(orientation), [orientation]);
26409
26409
  const visiblePages = pages.slice(0, maxPages);
26410
26410
  const isThreePerPage = slidesPerPage === 3;
26411
- const noteLineCount = chunkP2COO2QO_js.generateNoteLineCount();
26411
+ const noteLineCount = chunk6GFSF2ML_js.generateNoteLineCount();
26412
26412
  const scaledW = printable.width * PREVIEW_SCALE3;
26413
26413
  const scaledH = printable.height * PREVIEW_SCALE3;
26414
26414
  const noteAreaFraction = 0.5;
@@ -26506,7 +26506,7 @@ function PrintSettingsPanel({
26506
26506
  totalSlides,
26507
26507
  activeSlideIndex
26508
26508
  }) {
26509
- const { t } = chunkP2COO2QO_js.useTranslation();
26509
+ const { t } = chunk6GFSF2ML_js.useTranslation();
26510
26510
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-5 min-w-0", children: [
26511
26511
  /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
26512
26512
  /* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-xs font-medium text-muted-foreground mb-2 uppercase tracking-wide", children: t("pptx.print.printWhat") }),
@@ -26742,13 +26742,13 @@ function PrintDialog({
26742
26742
  defaultSlidesPerPage,
26743
26743
  defaultFrameSlides
26744
26744
  }) {
26745
- const { t } = chunkP2COO2QO_js.useTranslation();
26745
+ const { t } = chunk6GFSF2ML_js.useTranslation();
26746
26746
  const regionRenderer = useRegionRenderer("dialog.print");
26747
- const { panelStyle, handlers: dragHandlers } = chunkXG4WSJ4O_js.useModalDismissDrag(onClose);
26748
- const { viewportWidth } = chunkXG4WSJ4O_js.useIsMobile();
26747
+ const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
26748
+ const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
26749
26749
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
26750
26750
  const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
26751
- const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkXG4WSJ4O_js.useViewerOptionsContext());
26751
+ const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunk3AZ6ESJU_js.useViewerOptionsContext());
26752
26752
  const [printWhat, setPrintWhat] = React108.useState(printOptionDefaults?.printWhat ?? "slides");
26753
26753
  const [orientation, setOrientation] = React108.useState("landscape");
26754
26754
  const [colorMode, setColorMode] = React108.useState(
@@ -26932,7 +26932,7 @@ function ShowOptionsFieldset({
26932
26932
  draft,
26933
26933
  update
26934
26934
  }) {
26935
- const { t } = chunkP2COO2QO_js.useTranslation();
26935
+ const { t } = chunk6GFSF2ML_js.useTranslation();
26936
26936
  return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
26937
26937
  /* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showOptions") }),
26938
26938
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
@@ -26990,7 +26990,7 @@ function ShowSlidesFieldset({
26990
26990
  slideCount,
26991
26991
  customShows
26992
26992
  }) {
26993
- const { t } = chunkP2COO2QO_js.useTranslation();
26993
+ const { t } = chunk6GFSF2ML_js.useTranslation();
26994
26994
  return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
26995
26995
  /* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showSlides") }),
26996
26996
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
@@ -27100,7 +27100,7 @@ function SetUpSlideShowDialog({
27100
27100
  customShows,
27101
27101
  slideCount
27102
27102
  }) {
27103
- const { t } = chunkP2COO2QO_js.useTranslation();
27103
+ const { t } = chunk6GFSF2ML_js.useTranslation();
27104
27104
  const [draft, setDraft] = React108.useState({
27105
27105
  ...properties
27106
27106
  });
@@ -27236,16 +27236,16 @@ function BroadcastDialog({
27236
27236
  defaultUserName,
27237
27237
  defaultServerUrl
27238
27238
  }) {
27239
- const { t } = chunkP2COO2QO_js.useTranslation();
27239
+ const { t } = chunk6GFSF2ML_js.useTranslation();
27240
27240
  const regionRenderer = useRegionRenderer("dialog.broadcast");
27241
- const collab = chunkXG4WSJ4O_js.useCollaboration();
27241
+ const collab = chunk3AZ6ESJU_js.useCollaboration();
27242
27242
  const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
27243
27243
  const [roomId, setRoomId] = React108.useState("");
27244
27244
  const [userName, setUserName] = React108.useState("");
27245
27245
  const [serverUrl, setServerUrl] = React108.useState("");
27246
27246
  const [copied, setCopied] = React108.useState(false);
27247
27247
  const dialogRef = React108.useRef(null);
27248
- const { panelStyle, handlers: dragHandlers } = chunkXG4WSJ4O_js.useModalDismissDrag(onClose);
27248
+ const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
27249
27249
  useModalFocus(open, dialogRef, onClose);
27250
27250
  React108.useEffect(() => {
27251
27251
  if (open && !isBroadcasting) {
@@ -27404,7 +27404,7 @@ function StartBroadcastForm({
27404
27404
  onUserNameChange,
27405
27405
  onServerUrlChange
27406
27406
  }) {
27407
- const { t } = chunkP2COO2QO_js.useTranslation();
27407
+ const { t } = chunk6GFSF2ML_js.useTranslation();
27408
27408
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
27409
27409
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-muted-foreground leading-relaxed", children: t("pptx.broadcast.description") }),
27410
27410
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
@@ -27480,7 +27480,7 @@ function ActiveBroadcastView({
27480
27480
  onCopyUrl,
27481
27481
  onStopBroadcast
27482
27482
  }) {
27483
- const { t } = chunkP2COO2QO_js.useTranslation();
27483
+ const { t } = chunk6GFSF2ML_js.useTranslation();
27484
27484
  const statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400";
27485
27485
  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" });
27486
27486
  const viewerCount = collab.remoteUsers.filter((u) => u.role === "viewer").length;
@@ -27561,7 +27561,7 @@ function ActiveSessionView({
27561
27561
  onCopyRoomId,
27562
27562
  onStopCollaboration
27563
27563
  }) {
27564
- const { t } = chunkP2COO2QO_js.useTranslation(), viewerOptions = chunkXG4WSJ4O_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({
27564
+ const { t } = chunk6GFSF2ML_js.useTranslation(), viewerOptions = chunk3AZ6ESJU_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({
27565
27565
  localUserName: activeCollaboration?.userName ?? collab.config.userName,
27566
27566
  localUserInitials: viewerOptions.general.userInitials,
27567
27567
  localUserColor: collab.config.userColor,
@@ -27659,8 +27659,8 @@ function StartSessionForm({
27659
27659
  connectionFailed,
27660
27660
  onRetry
27661
27661
  }) {
27662
- const { t } = chunkP2COO2QO_js.useTranslation();
27663
- const { viewportWidth } = chunkXG4WSJ4O_js.useIsMobile();
27662
+ const { t } = chunk6GFSF2ML_js.useTranslation();
27663
+ const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
27664
27664
  const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
27665
27665
  const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
27666
27666
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
@@ -27794,9 +27794,9 @@ function ShareDialog({
27794
27794
  defaultUserName,
27795
27795
  defaultServerUrl
27796
27796
  }) {
27797
- const collab = chunkXG4WSJ4O_js.useCollaboration();
27797
+ const collab = chunk3AZ6ESJU_js.useCollaboration();
27798
27798
  const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
27799
- const { t } = chunkP2COO2QO_js.useTranslation();
27799
+ const { t } = chunk6GFSF2ML_js.useTranslation();
27800
27800
  const regionRenderer = useRegionRenderer("dialog.share");
27801
27801
  const [roomId, setRoomId] = React108.useState(defaultRoomId ?? "");
27802
27802
  const [userName, setUserName] = React108.useState(defaultUserName ?? "");
@@ -27805,9 +27805,9 @@ function ShareDialog({
27805
27805
  const [invitation, setInvitation] = React108.useState("");
27806
27806
  const [copied, setCopied] = React108.useState(false);
27807
27807
  const dialogRef = React108.useRef(null);
27808
- const { panelStyle, handlers: dragHandlers } = chunkXG4WSJ4O_js.useModalDismissDrag(onClose);
27808
+ const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
27809
27809
  useModalFocus(open, dialogRef, onClose);
27810
- const { viewportWidth, viewportHeight } = chunkXG4WSJ4O_js.useIsMobile();
27810
+ const { viewportWidth, viewportHeight } = chunk3AZ6ESJU_js.useIsMobile();
27811
27811
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
27812
27812
  const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
27813
27813
  const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
@@ -27980,7 +27980,7 @@ function HyperlinkTabContent({
27980
27980
  inputCls,
27981
27981
  onEnterConfirm
27982
27982
  }) {
27983
- const { t } = chunkP2COO2QO_js.useTranslation();
27983
+ const { t } = chunk6GFSF2ML_js.useTranslation();
27984
27984
  const handleEnterKey = (e) => {
27985
27985
  if (e.key === "Enter") {
27986
27986
  onEnterConfirm();
@@ -28105,13 +28105,13 @@ function HyperlinkEditDialog({
28105
28105
  onConfirm,
28106
28106
  onCancel
28107
28107
  }) {
28108
- const { t } = chunkP2COO2QO_js.useTranslation();
28109
- const { panelStyle, handlers: dragHandlers } = chunkXG4WSJ4O_js.useModalDismissDrag(onCancel);
28108
+ const { t } = chunk6GFSF2ML_js.useTranslation();
28109
+ const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onCancel);
28110
28110
  const inputRef = React108.useRef(null);
28111
- const detectedType = chunkXG4WSJ4O_js.detectTargetType(initialUrl, initialAction);
28112
- const emailParts = chunkXG4WSJ4O_js.parseEmailUrl(initialUrl || "");
28113
- const detectedSlide = chunkXG4WSJ4O_js.parseSlideFromUrl(initialUrl, initialAction);
28114
- const detectedVerb = initialAction ? chunkXG4WSJ4O_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
28111
+ const detectedType = chunk3AZ6ESJU_js.detectTargetType(initialUrl, initialAction);
28112
+ const emailParts = chunk3AZ6ESJU_js.parseEmailUrl(initialUrl || "");
28113
+ const detectedSlide = chunk3AZ6ESJU_js.parseSlideFromUrl(initialUrl, initialAction);
28114
+ const detectedVerb = initialAction ? chunk3AZ6ESJU_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
28115
28115
  const [targetType, setTargetType] = React108.useState(detectedType);
28116
28116
  const [url, setUrl] = React108.useState(
28117
28117
  detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
@@ -28142,7 +28142,7 @@ function HyperlinkEditDialog({
28142
28142
  actionVerb
28143
28143
  });
28144
28144
  };
28145
- const tabCls = (active) => chunkP2COO2QO_js.cn(
28145
+ const tabCls = (active) => chunk6GFSF2ML_js.cn(
28146
28146
  "px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
28147
28147
  active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
28148
28148
  );
@@ -28390,7 +28390,7 @@ function ViewerBottomPanels({
28390
28390
  notesStyle,
28391
28391
  onNotesHeightChange
28392
28392
  }) {
28393
- const { isHidden } = chunkXG4WSJ4O_js.useToolbarVisibility(hiddenActions);
28393
+ const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(hiddenActions);
28394
28394
  const customization = useViewerCustomizationContext();
28395
28395
  const showNotes = pptx.isPanelVisible(customization, "notes");
28396
28396
  const notesRenderer = useRegionRenderer("notes");
@@ -28521,7 +28521,7 @@ function ViewerInspector({
28521
28521
  onPreviewElement,
28522
28522
  elementById
28523
28523
  }) {
28524
- const { t } = chunkP2COO2QO_js.useTranslation();
28524
+ const { t } = chunk6GFSF2ML_js.useTranslation();
28525
28525
  const regionRenderer = useRegionRenderer("inspector");
28526
28526
  const liveEdit = onPreviewElement ? {
28527
28527
  element: selectedElement,
@@ -28736,7 +28736,7 @@ function ViewerToolbarSection(props) {
28736
28736
  onSetSnapToShape,
28737
28737
  onSetShowGuides
28738
28738
  } = props;
28739
- const { t } = chunkP2COO2QO_js.useTranslation();
28739
+ const { t } = chunk6GFSF2ML_js.useTranslation();
28740
28740
  const customization = useViewerCustomizationContext();
28741
28741
  const handleAddAnimation = React108.useCallback(
28742
28742
  (preset, group) => {
@@ -28789,7 +28789,7 @@ function ViewerToolbarSection(props) {
28789
28789
  [activeSlide, propertyHandlers]
28790
28790
  );
28791
28791
  const scopedLayoutOptions = React108__default.default.useMemo(
28792
- () => chunkXG4WSJ4O_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
28792
+ () => chunk3AZ6ESJU_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
28793
28793
  [s.layoutOptions, activeSlide]
28794
28794
  );
28795
28795
  const handleResetSlide = React108.useCallback(() => {
@@ -29196,14 +29196,14 @@ function ViewerToolbarSection(props) {
29196
29196
  isMobileInsertOpen: s.isMobileInsertOpen,
29197
29197
  onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
29198
29198
  slideCommentCount: activeSlide?.comments?.length ?? 0,
29199
- reviewComments: chunkXG4WSJ4O_js.createReviewCommentsHost({
29199
+ reviewComments: chunk3AZ6ESJU_js.createReviewCommentsHost({
29200
29200
  state: s,
29201
29201
  activeSlideIndex,
29202
29202
  updateSlides: ops.updateSlides,
29203
29203
  markDirty: history.markDirty
29204
29204
  }),
29205
29205
  formatPainterActive: s.formatPainterActive,
29206
- canActivateFormatPainter: chunkP2COO2QO_js.hasCopyableFormat(selectedElement),
29206
+ canActivateFormatPainter: chunk6GFSF2ML_js.hasCopyableFormat(selectedElement),
29207
29207
  onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
29208
29208
  isSelectionPaneOpen: s.isSelectionPaneOpen,
29209
29209
  onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
@@ -29312,14 +29312,14 @@ function CustomShowsDialog({
29312
29312
  onRun,
29313
29313
  onClose
29314
29314
  }) {
29315
- const { t } = chunkP2COO2QO_js.useTranslation();
29315
+ const { t } = chunk6GFSF2ML_js.useTranslation();
29316
29316
  const controller = React108.useMemo(
29317
29317
  () => pptx.createCustomShowsController(customShows, activeCustomShowId),
29318
29318
  // A fresh draft per open: the host mounts this only while the dialog is open.
29319
29319
  // eslint-disable-next-line react-hooks/exhaustive-deps
29320
29320
  []
29321
29321
  );
29322
- chunkXG4WSJ4O_js.useController(controller);
29322
+ chunk3AZ6ESJU_js.useController(controller);
29323
29323
  const view = controller.view(slides);
29324
29324
  const [active, setActive] = React108.useState(activeCustomShowId ?? "");
29325
29325
  const pickerValue = view.shows.some(({ id }) => id === active) ? active : "";
@@ -29598,8 +29598,8 @@ function EquationEditorDialog({
29598
29598
  onInsert,
29599
29599
  existingOmml
29600
29600
  }) {
29601
- const { t } = chunkP2COO2QO_js.useTranslation();
29602
- const { panelStyle, handlers: dragHandlers } = chunkXG4WSJ4O_js.useModalDismissDrag(onClose);
29601
+ const { t } = chunk6GFSF2ML_js.useTranslation();
29602
+ const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
29603
29603
  const initialLatex = React108.useMemo(() => {
29604
29604
  if (!existingOmml) {
29605
29605
  return "";
@@ -29721,7 +29721,7 @@ function EquationEditorDialog({
29721
29721
  {
29722
29722
  type: "button",
29723
29723
  onClick: () => handleTemplateClick(tmpl.latex),
29724
- className: chunkP2COO2QO_js.cn(
29724
+ className: chunk6GFSF2ML_js.cn(
29725
29725
  "flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
29726
29726
  latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
29727
29727
  ),
@@ -29786,7 +29786,7 @@ function InsertSmartArtDialog({
29786
29786
  onInsert
29787
29787
  }) {
29788
29788
  const ref = React108.useRef(null);
29789
- const { t } = chunkP2COO2QO_js.useTranslation();
29789
+ const { t } = chunk6GFSF2ML_js.useTranslation();
29790
29790
  React108.useLayoutEffect(() => {
29791
29791
  if (ref.current) {
29792
29792
  ref.current.translateLabel = t;
@@ -29810,7 +29810,7 @@ function InsertChartDialog({
29810
29810
  onInsert
29811
29811
  }) {
29812
29812
  const ref = React108.useRef(null);
29813
- const { t } = chunkP2COO2QO_js.useTranslation();
29813
+ const { t } = chunk6GFSF2ML_js.useTranslation();
29814
29814
  React108.useLayoutEffect(() => {
29815
29815
  if (ref.current) {
29816
29816
  ref.current.translateLabel = t;
@@ -30317,11 +30317,11 @@ function PresentationStage({
30317
30317
  })
30318
30318
  },
30319
30319
  children: [
30320
- /* @__PURE__ */ jsxRuntime.jsx(chunkXG4WSJ4O_js.SlideBackgroundImageLayer, { slide: activeSlide }),
30320
+ /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.SlideBackgroundImageLayer, { slide: activeSlide }),
30321
30321
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
30322
30322
  presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
30323
30323
  templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
30324
- chunkXG4WSJ4O_js.ElementRenderer,
30324
+ chunk3AZ6ESJU_js.ElementRenderer,
30325
30325
  {
30326
30326
  element,
30327
30327
  activeSlide,
@@ -30359,7 +30359,7 @@ function PresentationStage({
30359
30359
  `tpl-${element.id}`
30360
30360
  )),
30361
30361
  activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
30362
- chunkXG4WSJ4O_js.ElementRenderer,
30362
+ chunk3AZ6ESJU_js.ElementRenderer,
30363
30363
  {
30364
30364
  element,
30365
30365
  activeSlide,
@@ -30412,7 +30412,7 @@ function PresentationStage({
30412
30412
  function noop() {
30413
30413
  }
30414
30414
  function PresentationContextMenu(p) {
30415
- const { t } = chunkP2COO2QO_js.useTranslation();
30415
+ const { t } = chunk6GFSF2ML_js.useTranslation();
30416
30416
  const sections = pptx.getPresentationContextMenuSections({
30417
30417
  seeAllSlides: Boolean(p.onSeeAllSlides),
30418
30418
  presenterView: Boolean(p.onShowPresenterView),
@@ -30471,7 +30471,7 @@ function PresentationTransitionMount({
30471
30471
  templateElementsBySlideId
30472
30472
  );
30473
30473
  return /* @__PURE__ */ jsxRuntime.jsx(
30474
- chunkXG4WSJ4O_js.PresentationTransitionOverlay,
30474
+ chunk3AZ6ESJU_js.PresentationTransitionOverlay,
30475
30475
  {
30476
30476
  outgoingSlide,
30477
30477
  templateElements: templates.outgoing,
@@ -30516,9 +30516,9 @@ function ViewerCanvasArea(props) {
30516
30516
  aiHighlightOverlay,
30517
30517
  aiCanvasActive = false
30518
30518
  } = props;
30519
- const { t } = chunkP2COO2QO_js.useTranslation();
30520
- const { isHidden } = chunkXG4WSJ4O_js.useToolbarVisibility(hiddenActions);
30521
- const viewerOptions = chunkXG4WSJ4O_js.useViewerOptionsContext();
30519
+ const { t } = chunk6GFSF2ML_js.useTranslation();
30520
+ const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(hiddenActions);
30521
+ const viewerOptions = chunk3AZ6ESJU_js.useViewerOptionsContext();
30522
30522
  const outlineAuthoring = useOutlineAuthoring({
30523
30523
  state: s,
30524
30524
  updateElement: canvasHandlers.handleUpdateSmartArtElement,
@@ -30564,9 +30564,9 @@ function ViewerCanvasArea(props) {
30564
30564
  );
30565
30565
  const handleHyperlinkClick = React108.useCallback(
30566
30566
  (url) => {
30567
- if (chunkP2COO2QO_js.isPpactionUrl(url)) {
30567
+ if (chunk6GFSF2ML_js.isPpactionUrl(url)) {
30568
30568
  if (mode === "present") {
30569
- const parsed = chunkP2COO2QO_js.parsePpactionUrl(url);
30569
+ const parsed = chunk6GFSF2ML_js.parsePpactionUrl(url);
30570
30570
  if (parsed) {
30571
30571
  const action = {
30572
30572
  action: parsed.action,
@@ -30651,7 +30651,7 @@ function ViewerCanvasArea(props) {
30651
30651
  s.setActiveSlideIndex((i) => Math.max(0, i - 1));
30652
30652
  }
30653
30653
  }, [mode, presentation, s]);
30654
- const swipe = chunkXG4WSJ4O_js.useSwipeNavigation({
30654
+ const swipe = chunk3AZ6ESJU_js.useSwipeNavigation({
30655
30655
  enabled: swipeEnabled,
30656
30656
  onNext: handleSwipeNext,
30657
30657
  onPrev: handleSwipePrev
@@ -30837,14 +30837,14 @@ function ViewerCanvasArea(props) {
30837
30837
  outlineAuthoring,
30838
30838
  collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
30839
30839
  /* @__PURE__ */ jsxRuntime.jsx(
30840
- chunkXG4WSJ4O_js.RemoteSelectionOverlay,
30840
+ chunk3AZ6ESJU_js.RemoteSelectionOverlay,
30841
30841
  {
30842
30842
  elements: effectiveSlide?.elements ?? [],
30843
30843
  activeSlideIndex
30844
30844
  }
30845
30845
  ),
30846
30846
  /* @__PURE__ */ jsxRuntime.jsx(
30847
- chunkXG4WSJ4O_js.CollaborationCursorOverlay,
30847
+ chunk3AZ6ESJU_js.CollaborationCursorOverlay,
30848
30848
  {
30849
30849
  activeSlideIndex,
30850
30850
  canvasWidth: canvasSize.width,
@@ -31081,8 +31081,8 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
31081
31081
  ] });
31082
31082
  }
31083
31083
  function ChartFormatPanel() {
31084
- const { t } = chunkP2COO2QO_js.useTranslation();
31085
- const commands = chunkXG4WSJ4O_js.useChartFormatContext();
31084
+ const { t } = chunk6GFSF2ML_js.useTranslation();
31085
+ const commands = chunk3AZ6ESJU_js.useChartFormatContext();
31086
31086
  const ref = React108.useRef(null);
31087
31087
  const chart = commands?.chart;
31088
31088
  const chartData = chart?.type === "chart" ? chart.chartData : void 0;
@@ -31117,7 +31117,7 @@ function ChartFormatPanel() {
31117
31117
  return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-chart-format-pane", { ref, "data-testid": "chart-format-pane" });
31118
31118
  }
31119
31119
  function ThemeEditorPanel({ theme, canEdit, onApply, onClose }) {
31120
- const { t } = chunkP2COO2QO_js.useTranslation();
31120
+ const { t } = chunk6GFSF2ML_js.useTranslation();
31121
31121
  const ref = React108.useRef(null);
31122
31122
  React108.useEffect(() => {
31123
31123
  const node = ref.current;
@@ -31154,8 +31154,8 @@ function MobileDismissSheet({
31154
31154
  className,
31155
31155
  children
31156
31156
  }) {
31157
- const { t } = chunkP2COO2QO_js.useTranslation();
31158
- const { dragY, handlers } = chunkXG4WSJ4O_js.useSheetDismissDrag(onClose);
31157
+ const { t } = chunk6GFSF2ML_js.useTranslation();
31158
+ const { dragY, handlers } = chunk3AZ6ESJU_js.useSheetDismissDrag(onClose);
31159
31159
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31160
31160
  /* @__PURE__ */ jsxRuntime.jsx(
31161
31161
  "button",
@@ -31424,7 +31424,7 @@ function ThemeThumbnail({
31424
31424
  {
31425
31425
  type: "button",
31426
31426
  onClick,
31427
- className: chunkP2COO2QO_js.cn(
31427
+ className: chunk6GFSF2ML_js.cn(
31428
31428
  "group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
31429
31429
  selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
31430
31430
  ),
@@ -31455,7 +31455,7 @@ function ThemeGallery({
31455
31455
  onApplyTheme,
31456
31456
  onImportTheme
31457
31457
  }) {
31458
- const { t } = chunkP2COO2QO_js.useTranslation();
31458
+ const { t } = chunk6GFSF2ML_js.useTranslation();
31459
31459
  const [selectedTheme, setSelectedTheme] = React108.useState(currentTheme ?? null);
31460
31460
  const fileInputRef = React108.useRef(null);
31461
31461
  React108.useEffect(() => {
@@ -31592,8 +31592,8 @@ function ViewerSidePanels(props) {
31592
31592
  aiBridge,
31593
31593
  aiPanel
31594
31594
  } = props;
31595
- const aiAssistant = chunkLVEFHZ76_js.aiAssistants.resolve(aiConfig);
31596
- const AiPanel = aiAssistant?.panel ?? chunkLVEFHZ76_js.AiChatPanelLazy;
31595
+ const aiAssistant = chunkMU3BIZ2U_js.aiAssistants.resolve(aiConfig);
31596
+ const AiPanel = aiAssistant?.panel ?? chunkMU3BIZ2U_js.AiChatPanelLazy;
31597
31597
  const handleSetSlideSize = (size, rescaleMode) => {
31598
31598
  if (rescaleMode && s.slideSizeEmu) {
31599
31599
  s.setSlides(pptx.scaleSlidesForSizeChange(slides, s.slideSizeEmu, size, rescaleMode));
@@ -31899,7 +31899,7 @@ function ViewerMainContent(props) {
31899
31899
  );
31900
31900
  const layoutGalleryAnchorRef = React108.useRef(null);
31901
31901
  const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
31902
- return /* @__PURE__ */ jsxRuntime.jsx(chunkXG4WSJ4O_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
31902
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
31903
31903
  showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31904
31904
  slidesPaneRenderer ? (
31905
31905
  // The rail's slot (width, collapse, resize handle) stays the viewer's.
@@ -32109,7 +32109,7 @@ function AutosaveRecoveryDialog({
32109
32109
  onDiscard,
32110
32110
  busy = false
32111
32111
  }) {
32112
- const { t } = chunkP2COO2QO_js.useTranslation();
32112
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32113
32113
  if (!prompt) {
32114
32114
  return null;
32115
32115
  }
@@ -32165,7 +32165,7 @@ function CompatibilityToasts({
32165
32165
  rightInset = 0,
32166
32166
  bottomInset = 0
32167
32167
  }) {
32168
- const { t } = chunkP2COO2QO_js.useTranslation();
32168
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32169
32169
  const ref = useWebControl(
32170
32170
  { toasts, rightInset, bottomInset, translate: t },
32171
32171
  {
@@ -32210,7 +32210,7 @@ function HeaderFooterPanel({
32210
32210
  onApplyToCurrent,
32211
32211
  onClose
32212
32212
  }) {
32213
- const { t } = chunkP2COO2QO_js.useTranslation();
32213
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32214
32214
  const showDateTime = headerFooter.hasDateTime ?? false;
32215
32215
  const dateTimeAuto = headerFooter.dateTimeAuto ?? false;
32216
32216
  const showDateText = pptx.isHeaderFooterDateTextVisible(headerFooter);
@@ -32351,7 +32351,7 @@ function HeaderFooterPanel({
32351
32351
  ] }) });
32352
32352
  }
32353
32353
  function MobileBottomBar(p) {
32354
- const { t } = chunkP2COO2QO_js.useTranslation();
32354
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32355
32355
  const handlers = {
32356
32356
  slides: p.onOpenSlides,
32357
32357
  insert: p.onOpenInsert,
@@ -32377,7 +32377,7 @@ function MobileSlidesSheet({
32377
32377
  onClose,
32378
32378
  ...sidebar
32379
32379
  }) {
32380
- const { t } = chunkP2COO2QO_js.useTranslation();
32380
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32381
32381
  return /* @__PURE__ */ jsxRuntime.jsx(
32382
32382
  MobileSheet,
32383
32383
  {
@@ -32404,7 +32404,7 @@ function MobileChromeOverlay(props) {
32404
32404
  slideSectionGroups,
32405
32405
  canEdit,
32406
32406
  commentCount
32407
- } = props, { keyboardInset, isKeyboardOpen } = chunkXG4WSJ4O_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
32407
+ } = props, { keyboardInset, isKeyboardOpen } = chunk3AZ6ESJU_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
32408
32408
  s.setIsSlidesPaneOpen(false);
32409
32409
  s.setIsMobileInsertOpen(false);
32410
32410
  s.setIsInspectorPaneOpen(false);
@@ -32504,7 +32504,7 @@ function MobileChromeOverlay(props) {
32504
32504
  ] });
32505
32505
  }
32506
32506
  function ReadOnlyBanner(p) {
32507
- const { t } = chunkP2COO2QO_js.useTranslation();
32507
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32508
32508
  const ref = useWebControl(
32509
32509
  pptx.readOnlyBannerState(
32510
32510
  p.recommendation,
@@ -32538,7 +32538,7 @@ function RibbonCustomizationStyle({
32538
32538
  return /* @__PURE__ */ jsxRuntime.jsx("style", { "data-pptx-ribbon-customization": "", children: css });
32539
32539
  }
32540
32540
  function RunProgramNotices({ notices, onDismiss }) {
32541
- const { t } = chunkP2COO2QO_js.useTranslation();
32541
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32542
32542
  if (notices.length === 0) {
32543
32543
  return null;
32544
32544
  }
@@ -32596,14 +32596,14 @@ function AddinTable({
32596
32596
  selectedId,
32597
32597
  onSelect
32598
32598
  }) {
32599
- const { t } = chunkP2COO2QO_js.useTranslation();
32599
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32600
32600
  return /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
32601
32601
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-1 text-xs font-semibold text-foreground", children: title }),
32602
32602
  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(
32603
32603
  "tr",
32604
32604
  {
32605
32605
  onClick: () => onSelect(row.id),
32606
- className: chunkP2COO2QO_js.cn(
32606
+ className: chunk6GFSF2ML_js.cn(
32607
32607
  "cursor-pointer border-b border-border/40 transition-colors",
32608
32608
  selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
32609
32609
  ),
@@ -32618,7 +32618,7 @@ function AddinTable({
32618
32618
  ] });
32619
32619
  }
32620
32620
  function OptionsAddInsPane({ addinStatus }) {
32621
- const { t } = chunkP2COO2QO_js.useTranslation();
32621
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32622
32622
  const [selectedId, setSelectedId] = React108.useState(null);
32623
32623
  const rows = pptx.resolveViewerAddinRows(addinStatus);
32624
32624
  const active = rows.filter((row) => row.active);
@@ -32661,7 +32661,7 @@ function CommandList({
32661
32661
  selectedId,
32662
32662
  onSelect
32663
32663
  }) {
32664
- const { t } = chunkP2COO2QO_js.useTranslation();
32664
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32665
32665
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
32666
32666
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-xs font-medium text-muted-foreground", children: title }),
32667
32667
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -32682,7 +32682,7 @@ function CommandList({
32682
32682
  role: "option",
32683
32683
  "aria-selected": selectedId === id,
32684
32684
  onClick: () => onSelect(id),
32685
- className: chunkP2COO2QO_js.cn(
32685
+ className: chunk6GFSF2ML_js.cn(
32686
32686
  "flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
32687
32687
  selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
32688
32688
  ),
@@ -32700,7 +32700,7 @@ function OptionsQuickAccessPane({
32700
32700
  onQuickAccessCommandsChange,
32701
32701
  onResetQuickAccess
32702
32702
  }) {
32703
- const { t } = chunkP2COO2QO_js.useTranslation();
32703
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32704
32704
  const [selectedAvailable, setSelectedAvailable] = React108.useState(null);
32705
32705
  const [selectedCurrent, setSelectedCurrent] = React108.useState(null);
32706
32706
  const current = options.quickAccess.commandIds;
@@ -32814,7 +32814,7 @@ function OptionsRibbonPane({
32814
32814
  onRibbonTabHiddenChange,
32815
32815
  onResetRibbon
32816
32816
  }) {
32817
- const { t } = chunkP2COO2QO_js.useTranslation();
32817
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32818
32818
  const hidden = new Set(options.ribbon.hiddenTabIds);
32819
32819
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
32820
32820
  /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
@@ -32826,7 +32826,7 @@ function OptionsRibbonPane({
32826
32826
  return /* @__PURE__ */ jsxRuntime.jsxs(
32827
32827
  "label",
32828
32828
  {
32829
- className: chunkP2COO2QO_js.cn(
32829
+ className: chunk6GFSF2ML_js.cn(
32830
32830
  "flex items-center gap-2 rounded px-2 py-1.5",
32831
32831
  isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
32832
32832
  ),
@@ -32860,7 +32860,7 @@ function OptionsRibbonPane({
32860
32860
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
32861
32861
  "div",
32862
32862
  {
32863
- className: chunkP2COO2QO_js.cn(
32863
+ className: chunk6GFSF2ML_js.cn(
32864
32864
  "flex items-center justify-between gap-3 rounded px-3 py-2",
32865
32865
  i % 2 === 0 ? "bg-muted/60" : ""
32866
32866
  ),
@@ -32881,12 +32881,12 @@ async function exportAiChatLogs(options) {
32881
32881
  chats,
32882
32882
  { format: options?.format, detailed: options?.detailed, now: options?.now },
32883
32883
  (filename, content, mime) => {
32884
- chunkXG4WSJ4O_js.downloadBlob(new Blob([content], { type: mime }), filename);
32884
+ chunk3AZ6ESJU_js.downloadBlob(new Blob([content], { type: mime }), filename);
32885
32885
  }
32886
32886
  );
32887
32887
  }
32888
32888
  function SettingsAiTab({ store }) {
32889
- const { t } = chunkP2COO2QO_js.useTranslation();
32889
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32890
32890
  const activeStore = React108.useMemo(() => store ?? host.createChatHistoryStore(), [store]);
32891
32891
  const [chatCount, setChatCount] = React108.useState(null);
32892
32892
  const [detailed, setDetailed] = React108.useState(true);
@@ -32978,7 +32978,7 @@ function SettingsAppearanceTab({
32978
32978
  themes,
32979
32979
  onSelectTheme
32980
32980
  }) {
32981
- const { t } = chunkP2COO2QO_js.useTranslation();
32981
+ const { t } = chunk6GFSF2ML_js.useTranslation();
32982
32982
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: themes.map((entry) => {
32983
32983
  const isActive = entry.key === activeThemeKey;
32984
32984
  const previewBackground = entry.theme?.colors?.background ?? "#0b0f19";
@@ -32989,7 +32989,7 @@ function SettingsAppearanceTab({
32989
32989
  type: "button",
32990
32990
  onClick: () => onSelectTheme(entry.key),
32991
32991
  "aria-pressed": isActive,
32992
- className: chunkP2COO2QO_js.cn(
32992
+ className: chunk6GFSF2ML_js.cn(
32993
32993
  "flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
32994
32994
  isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
32995
32995
  ),
@@ -33006,7 +33006,7 @@ function SettingsAppearanceTab({
33006
33006
  /* @__PURE__ */ jsxRuntime.jsx(
33007
33007
  "span",
33008
33008
  {
33009
- className: chunkP2COO2QO_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
33009
+ className: chunk6GFSF2ML_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
33010
33010
  children: t(entry.labelKey)
33011
33011
  }
33012
33012
  )
@@ -33021,7 +33021,7 @@ function SettingsCustomFontsSection({
33021
33021
  families,
33022
33022
  onRegistered
33023
33023
  }) {
33024
- const { t } = chunkP2COO2QO_js.useTranslation();
33024
+ const { t } = chunk6GFSF2ML_js.useTranslation();
33025
33025
  const inputRef = React108.useRef(null);
33026
33026
  const [error, setError] = React108.useState(false);
33027
33027
  const handleFile = async (file) => {
@@ -33086,7 +33086,7 @@ function SettingsLanguageTab({
33086
33086
  type: "button",
33087
33087
  onClick: () => onSelectLocale(locale.code),
33088
33088
  "aria-pressed": isActive,
33089
- className: chunkP2COO2QO_js.cn(
33089
+ className: chunk6GFSF2ML_js.cn(
33090
33090
  "flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
33091
33091
  isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
33092
33092
  ),
@@ -33125,7 +33125,7 @@ function OpenSettingsDialog({
33125
33125
  customFontFamilies = NO_CUSTOM_FONT_FAMILIES,
33126
33126
  onCustomFontRegistered
33127
33127
  }) {
33128
- const { t } = chunkP2COO2QO_js.useTranslation();
33128
+ const { t } = chunk6GFSF2ML_js.useTranslation();
33129
33129
  const viewerCustomization = useViewerCustomizationContext();
33130
33130
  const customization = React108.useMemo(
33131
33131
  () => languageSelectable ? viewerCustomization : {
@@ -33234,7 +33234,7 @@ function ViewerOptionsProvider({
33234
33234
  store,
33235
33235
  children
33236
33236
  }) {
33237
- return /* @__PURE__ */ jsxRuntime.jsx(chunkXG4WSJ4O_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkXG4WSJ4O_js.ViewerOptionsContext.Provider, { value: options, children }) });
33237
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.ViewerOptionsContext.Provider, { value: options, children }) });
33238
33238
  }
33239
33239
  function useAiBridge(input) {
33240
33240
  const ref = React108.useRef(input);
@@ -33317,7 +33317,7 @@ function useAiPanelController(input) {
33317
33317
  getSelectedElement: () => inputRef.current.selectedElement
33318
33318
  })
33319
33319
  );
33320
- const state = chunkXG4WSJ4O_js.useController(controller);
33320
+ const state = chunk3AZ6ESJU_js.useController(controller);
33321
33321
  React108.useEffect(() => () => controller.dispose(), [controller]);
33322
33322
  const liveFocusTargets = React108.useMemo(
33323
33323
  () => host.computeFocusTargets({ activeSlideIndex, selectedElementIds, selectedElementId }),
@@ -33550,7 +33550,7 @@ function useMasterViewCrud(input) {
33550
33550
  forgetHistory,
33551
33551
  pushToast
33552
33552
  } = input;
33553
- const { t } = chunkP2COO2QO_js.useTranslation();
33553
+ const { t } = chunk6GFSF2ML_js.useTranslation();
33554
33554
  const data = React108.useMemo(
33555
33555
  () => ({ slides, slideMasters }),
33556
33556
  [slides, slideMasters]
@@ -33937,26 +33937,39 @@ function useViewerCustomization(customization, legacyHiddenActions, optionsStore
33937
33937
  return { resolved, api: controller.api, hiddenActions };
33938
33938
  }
33939
33939
  var NO_LOCALES = [];
33940
- var toCatalogEntry = (code) => i18n.LOCALE_CATALOG.find((entry) => entry.code === code) ?? { code, label: code, nativeLabel: code };
33940
+ var BUILT_IN_CONTROLS = {
33941
+ localeCode: "en",
33942
+ locales: NO_LOCALES,
33943
+ selectLocale: () => {
33944
+ },
33945
+ languageSelectable: false
33946
+ };
33947
+ var toCatalogEntry = (code) => i18n$1.LOCALE_CATALOG.find((entry) => entry.code === code) ?? { code, label: code, nativeLabel: code };
33941
33948
  function useHostLanguage({
33942
33949
  defaultLocale,
33943
33950
  availableLocales,
33944
33951
  onLocaleChange
33945
33952
  }) {
33946
- const { t, i18n } = chunkP2COO2QO_js.useHostI18next();
33953
+ const host = chunk6GFSF2ML_js.useRegisteredHostI18next();
33954
+ const t = host?.t;
33955
+ const i18n = host?.i18n;
33956
+ const readsInstance = i18n !== void 0;
33947
33957
  const [localeCode, setLocaleCode] = React108.useState(
33948
33958
  () => defaultLocale ?? pptx.readStoredViewerPrefs().localeCode ?? "en"
33949
33959
  );
33950
33960
  React108.useEffect(() => {
33951
- if (localeCode !== "en" && !onLocaleChange) {
33952
- void i18n.changeLanguage(localeCode);
33961
+ if (i18n && localeCode !== "en" && !onLocaleChange) {
33962
+ void i18n.changeLanguage?.(localeCode);
33953
33963
  }
33954
- }, []);
33964
+ }, [readsInstance]);
33955
33965
  const locales = React108.useMemo(() => {
33956
33966
  if (availableLocales) {
33957
33967
  return availableLocales;
33958
33968
  }
33959
- const registeredCodes = i18n.options.resources ? Object.keys(i18n.options.resources) : i18n.languages ?? ["en"];
33969
+ if (!i18n) {
33970
+ return NO_LOCALES;
33971
+ }
33972
+ const registeredCodes = i18n.options?.resources ? Object.keys(i18n.options.resources) : Array.isArray(i18n.languages) ? i18n.languages : ["en"];
33960
33973
  return registeredCodes.map(toCatalogEntry);
33961
33974
  }, [availableLocales, i18n]);
33962
33975
  const selectLocale = React108.useCallback(
@@ -33964,18 +33977,21 @@ function useHostLanguage({
33964
33977
  setLocaleCode(code);
33965
33978
  if (onLocaleChange) {
33966
33979
  onLocaleChange(code);
33967
- } else {
33968
- void i18n.changeLanguage(code);
33980
+ } else if (i18n) {
33981
+ void i18n.changeLanguage?.(code);
33969
33982
  pptx.writeStoredViewerPrefs({ localeCode: code });
33970
33983
  }
33971
33984
  },
33972
33985
  [onLocaleChange, i18n]
33973
33986
  );
33974
- const language = i18n.resolvedLanguage ?? i18n.language ?? localeCode;
33975
- const state = React108.useMemo(() => ({ t, locale: language }), [t, language]);
33987
+ const language = i18n ? chunk6GFSF2ML_js.hostInstanceLanguage(i18n) ?? localeCode : "en";
33988
+ const state = React108.useMemo(
33989
+ () => t ? { t, locale: language } : chunk6GFSF2ML_js.BUILT_IN_ENGLISH,
33990
+ [t, language]
33991
+ );
33976
33992
  const controls = React108.useMemo(
33977
- () => ({ localeCode, locales, selectLocale, languageSelectable: true }),
33978
- [localeCode, locales, selectLocale]
33993
+ () => readsInstance ? { localeCode, locales, selectLocale, languageSelectable: true } : BUILT_IN_CONTROLS,
33994
+ [readsInstance, localeCode, locales, selectLocale]
33979
33995
  );
33980
33996
  return { state, controls };
33981
33997
  }
@@ -33983,13 +33999,13 @@ function useProvidedLanguage({
33983
33999
  availableLocales,
33984
34000
  onLocaleChange
33985
34001
  }) {
33986
- const state = React108.useContext(chunkP2COO2QO_js.PptxI18nContext);
34002
+ const state = React108.useContext(chunk6GFSF2ML_js.PptxI18nContext);
33987
34003
  const { locale } = state;
33988
34004
  const locales = availableLocales ?? NO_LOCALES;
33989
34005
  const controls = React108.useMemo(
33990
34006
  () => ({
33991
34007
  // `fr-CA` selects an offered `fr`: the host's locale need not be one of the codes.
33992
- localeCode: i18n$1.normalizeLocale(
34008
+ localeCode: i18n.normalizeLocale(
33993
34009
  locale,
33994
34010
  locales.map((entry) => entry.code),
33995
34011
  locale
@@ -34003,20 +34019,25 @@ function useProvidedLanguage({
34003
34019
  return { state, controls };
34004
34020
  }
34005
34021
  function provideLanguage({ state, controls }, children) {
34006
- return /* @__PURE__ */ jsxRuntime.jsx(chunkP2COO2QO_js.ViewerI18nContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(chunkP2COO2QO_js.ViewerLocaleControlsContext.Provider, { value: controls, children }) });
34022
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk6GFSF2ML_js.ViewerI18nContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(chunk6GFSF2ML_js.ViewerLocaleControlsContext.Provider, { value: controls, children }) });
34007
34023
  }
34008
34024
  function HostLanguageRoot({ children, ...props }) {
34009
34025
  return provideLanguage(useHostLanguage(props), children);
34010
34026
  }
34027
+ function BuiltInLanguageRoot({ children }) {
34028
+ return provideLanguage({ state: chunk6GFSF2ML_js.BUILT_IN_ENGLISH, controls: BUILT_IN_CONTROLS }, children);
34029
+ }
34011
34030
  function ProvidedLanguageRoot({ children, ...props }) {
34012
34031
  return provideLanguage(useProvidedLanguage(props), children);
34013
34032
  }
34014
34033
  function ViewerI18nRoot(props) {
34015
- const Root = React108.useContext(chunkP2COO2QO_js.PptxI18nContext) ? ProvidedLanguageRoot : HostLanguageRoot;
34034
+ const [readsHost] = React108.useState(() => chunk6GFSF2ML_js.registeredHostI18next() !== null);
34035
+ const FromHost = readsHost ? HostLanguageRoot : BuiltInLanguageRoot;
34036
+ const Root = React108.useContext(chunk6GFSF2ML_js.PptxI18nContext) ? ProvidedLanguageRoot : FromHost;
34016
34037
  return /* @__PURE__ */ jsxRuntime.jsx(Root, { ...props });
34017
34038
  }
34018
34039
  function useViewerLocaleControls() {
34019
- return React108.useContext(chunkP2COO2QO_js.ViewerLocaleControlsContext);
34040
+ return React108.useContext(chunk6GFSF2ML_js.ViewerLocaleControlsContext);
34020
34041
  }
34021
34042
  var NO_RIBBON_ADD_INS = [];
34022
34043
  var NO_FILE_PROVIDERS = [];
@@ -34095,7 +34116,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34095
34116
  limits
34096
34117
  } = props;
34097
34118
  const cloudDocument = React108.useMemo(() => pptx.createCloudDocumentController(), []);
34098
- const cloudFile = chunkXG4WSJ4O_js.useController(cloudDocument).file;
34119
+ const cloudFile = chunk3AZ6ESJU_js.useController(cloudDocument).file;
34099
34120
  const {
34100
34121
  storage: viewerStorage,
34101
34122
  fileName,
@@ -34109,7 +34130,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34109
34130
  filePath: hostFilePath
34110
34131
  });
34111
34132
  const saveProgress = React108.useMemo(() => pptx.createSaveProgressController(), []);
34112
- const saveProgressState = chunkXG4WSJ4O_js.useController(saveProgress);
34133
+ const saveProgressState = chunk3AZ6ESJU_js.useController(saveProgress);
34113
34134
  const storage = React108.useMemo(
34114
34135
  () => viewerStorage ? saveProgress.wrap(viewerStorage) : viewerStorage,
34115
34136
  [viewerStorage, saveProgress]
@@ -34151,7 +34172,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34151
34172
  (current) => current.includes(family) ? current : [...current, family]
34152
34173
  );
34153
34174
  }, []);
34154
- const { t } = chunkP2COO2QO_js.useTranslation();
34175
+ const { t } = chunk6GFSF2ML_js.useTranslation();
34155
34176
  const {
34156
34177
  localeCode,
34157
34178
  locales: resolvedLocales,
@@ -34208,7 +34229,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34208
34229
  },
34209
34230
  [hostStorage, cloudDocument]
34210
34231
  );
34211
- const { optionsStore, options: viewerOptions } = chunkXG4WSJ4O_js.useViewerOptions();
34232
+ const { optionsStore, options: viewerOptions } = chunk3AZ6ESJU_js.useViewerOptions();
34212
34233
  const custom = useViewerCustomization(
34213
34234
  customization,
34214
34235
  legacyHiddenActions,
@@ -34228,8 +34249,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34228
34249
  const handleEnableEditing = React108.useCallback(() => {
34229
34250
  setProtectedViewOverridden(true);
34230
34251
  }, []);
34231
- const readOnlyRec = chunkXG4WSJ4O_js.useReadOnlyRecommendationState(content);
34232
- const compatToastsState = chunkXG4WSJ4O_js.useCompatibilityToastsState();
34252
+ const readOnlyRec = chunk3AZ6ESJU_js.useReadOnlyRecommendationState(content);
34253
+ const compatToastsState = chunk3AZ6ESJU_js.useCompatibilityToastsState();
34233
34254
  const [notesBarHeight, setNotesBarHeight] = React108.useState(0);
34234
34255
  const runProgramNoticesState = useRunProgramNoticesState();
34235
34256
  const [collaborationReadOnly, setCollaborationReadOnly] = React108.useState(Boolean(collaboration));
@@ -34252,8 +34273,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34252
34273
  filePath
34253
34274
  });
34254
34275
  const [isShareDialogOpen, setIsShareDialogOpen] = React108.useState(false);
34255
- const { reducedMotion, toggleReducedMotion } = chunkXG4WSJ4O_js.useReducedMotion();
34256
- const state = chunkXG4WSJ4O_js.useViewerState({
34276
+ const { reducedMotion, toggleReducedMotion } = chunk3AZ6ESJU_js.useReducedMotion();
34277
+ const state = chunk3AZ6ESJU_js.useViewerState({
34257
34278
  content,
34258
34279
  canEdit,
34259
34280
  inspectorInitiallyOpen: props.inspectorInitiallyOpen
@@ -34380,16 +34401,16 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34380
34401
  }
34381
34402
  }, [settings, optionsStore]);
34382
34403
  const handleClearOptionsCache = useAutosaveCacheMaintenance(viewerOptions, storage);
34383
- const mobile = chunkXG4WSJ4O_js.useIsMobile();
34404
+ const mobile = chunk3AZ6ESJU_js.useIsMobile();
34384
34405
  const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
34385
- const resizablePanels = chunkXG4WSJ4O_js.useResizablePanels();
34406
+ const resizablePanels = chunk3AZ6ESJU_js.useResizablePanels();
34386
34407
  const {
34387
34408
  gridSpacingPx,
34388
34409
  visibleSlideIndexes,
34389
34410
  slideSectionGroups,
34390
34411
  masterPseudoSlide,
34391
34412
  authoredRange
34392
- } = chunkXG4WSJ4O_js.useDerivedSlideState({
34413
+ } = chunk3AZ6ESJU_js.useDerivedSlideState({
34393
34414
  slides,
34394
34415
  sections: state.sections,
34395
34416
  customShows: state.customShows,
@@ -34414,7 +34435,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34414
34435
  state.cropSessionRef
34415
34436
  ]
34416
34437
  );
34417
- const zoom = chunkXG4WSJ4O_js.useZoomViewport({
34438
+ const zoom = chunk3AZ6ESJU_js.useZoomViewport({
34418
34439
  canvasSize,
34419
34440
  selectedElements: state.selectedElements,
34420
34441
  fitPadding: props.fitPadding,
@@ -34430,7 +34451,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34430
34451
  onChangeCallback.current?.();
34431
34452
  }, [setIsDirty]);
34432
34453
  const restoreHistoryThemeRef = React108.useRef(void 0);
34433
- const history = chunkXG4WSJ4O_js.useEditorHistory({
34454
+ const history = chunk3AZ6ESJU_js.useEditorHistory({
34434
34455
  slides,
34435
34456
  canvasSize,
34436
34457
  activeSlideIndex,
@@ -34459,7 +34480,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34459
34480
  setEditTemplateMode: state.setEditTemplateMode,
34460
34481
  setHeaderFooter: state.setHeaderFooter
34461
34482
  });
34462
- const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkXG4WSJ4O_js.usePresentationSetup({
34483
+ const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunk3AZ6ESJU_js.usePresentationSetup({
34463
34484
  mode,
34464
34485
  slides,
34465
34486
  visibleSlideIndexes,
@@ -34538,7 +34559,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34538
34559
  loading,
34539
34560
  error
34540
34561
  ]);
34541
- chunkXG4WSJ4O_js.useTouchGestures({
34562
+ chunk3AZ6ESJU_js.useTouchGestures({
34542
34563
  targetRef: zoom.canvasViewportRef,
34543
34564
  currentScale: zoom.scale,
34544
34565
  callbacks: {
@@ -34560,7 +34581,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34560
34581
  },
34561
34582
  enabled: isTouchDevice
34562
34583
  });
34563
- const dialogs = chunkXG4WSJ4O_js.useViewerDialogs({
34584
+ const dialogs = chunk3AZ6ESJU_js.useViewerDialogs({
34564
34585
  mode,
34565
34586
  slides,
34566
34587
  activeSlide,
@@ -34588,7 +34609,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34588
34609
  history,
34589
34610
  embeddedFontFamilies: state.embeddedFonts.map((font) => font.name)
34590
34611
  });
34591
- chunkXG4WSJ4O_js.useClearSelectionOnSlideChange(state, activeSlideIndex);
34612
+ chunk3AZ6ESJU_js.useClearSelectionOnSlideChange(state, activeSlideIndex);
34592
34613
  const zoomBeforePresentRef = React108.useRef(null);
34593
34614
  React108.useEffect(() => {
34594
34615
  if (mode !== "present") {
@@ -34606,7 +34627,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34606
34627
  zoom.handleZoomToFit();
34607
34628
  zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
34608
34629
  }, [mode]);
34609
- const editorOps = chunkXG4WSJ4O_js.useEditorOperations({
34630
+ const editorOps = chunk3AZ6ESJU_js.useEditorOperations({
34610
34631
  state,
34611
34632
  history,
34612
34633
  zoom,
@@ -34651,7 +34672,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34651
34672
  handlerRef,
34652
34673
  viewerApi,
34653
34674
  loadVersion
34654
- } = chunkXG4WSJ4O_js.useViewerIntegration({
34675
+ } = chunk3AZ6ESJU_js.useViewerIntegration({
34655
34676
  transformCommittedText: (text, previous) => pptx.applyAutoCorrectToEdit(text, previous, viewerOptions.proofing),
34656
34677
  state,
34657
34678
  zoom,
@@ -34796,7 +34817,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34796
34817
  updateElementById: editorOps.ops.updateElementById
34797
34818
  });
34798
34819
  const ribbonScope = useRibbonScopeToken();
34799
- const viewPreferencesSync = chunkXG4WSJ4O_js.useViewPreferencesSync({
34820
+ const viewPreferencesSync = chunk3AZ6ESJU_js.useViewPreferencesSync({
34800
34821
  loadVersion,
34801
34822
  viewProperties: state.viewProperties,
34802
34823
  setViewProperties: state.setViewProperties,
@@ -34847,7 +34868,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34847
34868
  },
34848
34869
  [state]
34849
34870
  );
34850
- const layoutSwitching = chunkXG4WSJ4O_js.useLayoutSwitching({
34871
+ const layoutSwitching = chunk3AZ6ESJU_js.useLayoutSwitching({
34851
34872
  handler: handlerRef.current,
34852
34873
  slides,
34853
34874
  activeSlideIndex,
@@ -34966,7 +34987,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
34966
34987
  "data-pptx-editor-chrome": "",
34967
34988
  ...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
34968
34989
  "aria-busy": loading,
34969
- className: chunkP2COO2QO_js.cn(
34990
+ className: chunk6GFSF2ML_js.cn(
34970
34991
  "h-full w-full bg-background text-foreground relative",
34971
34992
  ...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
34972
34993
  ),
@@ -35368,8 +35389,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
35368
35389
  // Nothing previously provided it, so every one of those consumers was
35369
35390
  // silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
35370
35391
  // the user changed in the Options dialog.
35371
- /* @__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(chunkXG4WSJ4O_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
35372
- chunkXG4WSJ4O_js.CollaborationProvider,
35392
+ /* @__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(chunk3AZ6ESJU_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
35393
+ chunk3AZ6ESJU_js.CollaborationProvider,
35373
35394
  {
35374
35395
  config: collaboration,
35375
35396
  canvasWidth: canvasSize.width,
@@ -35426,19 +35447,19 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
35426
35447
  slideCount: slides.length
35427
35448
  }
35428
35449
  ),
35429
- /* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunkXG4WSJ4O_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
35450
+ /* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
35430
35451
  ]
35431
35452
  }
35432
35453
  ) }) }) }) }) }) }) }) }) })
35433
35454
  );
35434
35455
  }
35435
35456
  );
35436
- var PowerPointViewer2 = /* @__PURE__ */ chunkXG4WSJ4O_js.withDisplayName(
35457
+ var PowerPointViewer2 = /* @__PURE__ */ chunk3AZ6ESJU_js.withDisplayName(
35437
35458
  PowerPointViewerComponent,
35438
35459
  "PowerPointViewer"
35439
35460
  );
35440
35461
  function CollaborationStatusStrip() {
35441
- const collab = chunkXG4WSJ4O_js.useCollaboration();
35462
+ const collab = chunk3AZ6ESJU_js.useCollaboration();
35442
35463
  if (!collab) {
35443
35464
  return null;
35444
35465
  }
@@ -35455,9 +35476,9 @@ function CollaborationStateReporter({
35455
35476
  onChange,
35456
35477
  onStatus
35457
35478
  }) {
35458
- const collab = chunkXG4WSJ4O_js.useCollaboration();
35479
+ const collab = chunk3AZ6ESJU_js.useCollaboration();
35459
35480
  useCollaborationStateReport(collab, onChange);
35460
- chunkXG4WSJ4O_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
35481
+ chunk3AZ6ESJU_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
35461
35482
  return null;
35462
35483
  }
35463
35484
  function CollaborationDocumentSync({
@@ -35472,8 +35493,8 @@ function CollaborationDocumentSync({
35472
35493
  onReadOnlyChange,
35473
35494
  history
35474
35495
  }) {
35475
- const collab = chunkXG4WSJ4O_js.useCollaboration();
35476
- chunkXG4WSJ4O_js.useCollaborationDocumentSync({
35496
+ const collab = chunk3AZ6ESJU_js.useCollaboration();
35497
+ chunk3AZ6ESJU_js.useCollaborationDocumentSync({
35477
35498
  collaboration: collab,
35478
35499
  history,
35479
35500
  slides,
@@ -35493,14 +35514,14 @@ function CollaborationFollowLayer({
35493
35514
  setActiveSlideIndex,
35494
35515
  slideCount
35495
35516
  }) {
35496
- const collab = chunkXG4WSJ4O_js.useCollaboration();
35497
- const { followedClientId, followUser } = chunkXG4WSJ4O_js.useFollowMode({
35517
+ const collab = chunk3AZ6ESJU_js.useCollaboration();
35518
+ const { followedClientId, followUser } = chunk3AZ6ESJU_js.useFollowMode({
35498
35519
  collab,
35499
35520
  activeSlideIndex,
35500
35521
  setActiveSlideIndex,
35501
35522
  slideCount
35502
35523
  });
35503
- chunkXG4WSJ4O_js.useBroadcastFollower({
35524
+ chunk3AZ6ESJU_js.useBroadcastFollower({
35504
35525
  collab,
35505
35526
  activeSlideIndex,
35506
35527
  setActiveSlideIndex,
@@ -35519,31 +35540,6 @@ function CollaborationFollowLayer({
35519
35540
  }
35520
35541
  ) }) });
35521
35542
  }
35522
- var asMessageParams = (params) => params;
35523
- function withEnglishFallback(translate) {
35524
- return (key, defaultOrParams) => {
35525
- const params = typeof defaultOrParams === "string" ? { defaultValue: defaultOrParams } : defaultOrParams;
35526
- let text;
35527
- try {
35528
- text = params === void 0 ? translate(key) : translate(key, params);
35529
- } catch {
35530
- text = void 0;
35531
- }
35532
- const found = text && text !== key ? text : i18n.translationsEn[key] ?? params?.defaultValue;
35533
- return typeof found === "string" ? i18n$1.interpolate(found, asMessageParams(params), "double") : i18n.keyToLabel(key);
35534
- };
35535
- }
35536
- function PptxI18nProvider({
35537
- translate,
35538
- locale,
35539
- children
35540
- }) {
35541
- const state = React108.useMemo(
35542
- () => ({ t: withEnglishFallback(translate), locale }),
35543
- [translate, locale]
35544
- );
35545
- return /* @__PURE__ */ jsxRuntime.jsx(chunkP2COO2QO_js.PptxI18nContext.Provider, { value: state, children });
35546
- }
35547
35543
 
35548
35544
  Object.defineProperty(exports, "THEME_CATALOG", {
35549
35545
  enumerable: true,
@@ -35591,7 +35587,6 @@ Object.defineProperty(exports, "vermilionRadius", {
35591
35587
  });
35592
35588
  exports.CollaborationStatusIndicator = CollaborationStatusIndicator;
35593
35589
  exports.PowerPointViewer = PowerPointViewer2;
35594
- exports.PptxI18nProvider = PptxI18nProvider;
35595
35590
  exports.SlideCanvas = SlideCanvas;
35596
35591
  exports.SlideTemplateGalleryDialog = SlideTemplateGalleryDialog;
35597
35592
  exports.SlideTemplatePreview = SlideTemplatePreview;