pptx-react-viewer 4.48.0 → 4.49.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 (43) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/{chunk-5FAX7F3O.js → chunk-2ZXXHNNR.js} +218 -276
  3. package/dist/chunk-2ZXXHNNR.js.br +0 -0
  4. package/dist/chunk-2ZXXHNNR.js.gz +0 -0
  5. package/dist/{chunk-JKZNL6HP.js → chunk-ME5QRTVS.js} +33 -57
  6. package/dist/chunk-ME5QRTVS.js.br +0 -0
  7. package/dist/chunk-ME5QRTVS.js.gz +0 -0
  8. package/dist/{chunk-H7JRMKYC.mjs → chunk-YKLL2Z33.mjs} +100 -158
  9. package/dist/chunk-YKLL2Z33.mjs.br +0 -0
  10. package/dist/chunk-YKLL2Z33.mjs.gz +0 -0
  11. package/dist/{chunk-JHQHAO43.mjs → chunk-Z62JFXMZ.mjs} +34 -58
  12. package/dist/chunk-Z62JFXMZ.mjs.br +0 -0
  13. package/dist/chunk-Z62JFXMZ.mjs.gz +0 -0
  14. package/dist/index.js +22 -22
  15. package/dist/index.js.br +0 -0
  16. package/dist/index.js.gz +0 -0
  17. package/dist/index.mjs +2 -2
  18. package/dist/index.mjs.br +0 -0
  19. package/dist/index.mjs.gz +0 -0
  20. package/dist/internals.js +80 -80
  21. package/dist/internals.js.br +0 -0
  22. package/dist/internals.js.gz +0 -0
  23. package/dist/internals.mjs +1 -1
  24. package/dist/internals.mjs.br +0 -0
  25. package/dist/internals.mjs.gz +0 -0
  26. package/dist/pptx-viewer.css +1 -1
  27. package/dist/pptx-viewer.css.br +0 -0
  28. package/dist/pptx-viewer.css.gz +0 -0
  29. package/dist/viewer/index.js +17 -17
  30. package/dist/viewer/index.js.br +0 -0
  31. package/dist/viewer/index.js.gz +0 -0
  32. package/dist/viewer/index.mjs +2 -2
  33. package/dist/viewer/index.mjs.br +0 -0
  34. package/dist/viewer/index.mjs.gz +0 -0
  35. package/package.json +3 -3
  36. package/dist/chunk-5FAX7F3O.js.br +0 -0
  37. package/dist/chunk-5FAX7F3O.js.gz +0 -0
  38. package/dist/chunk-H7JRMKYC.mjs.br +0 -0
  39. package/dist/chunk-H7JRMKYC.mjs.gz +0 -0
  40. package/dist/chunk-JHQHAO43.mjs.br +0 -0
  41. package/dist/chunk-JHQHAO43.mjs.gz +0 -0
  42. package/dist/chunk-JKZNL6HP.js.br +0 -0
  43. package/dist/chunk-JKZNL6HP.js.gz +0 -0
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkJKZNL6HP_js = require('./chunk-JKZNL6HP.js');
3
+ var chunkME5QRTVS_js = require('./chunk-ME5QRTVS.js');
4
4
  var chunkJAI42EXQ_js = require('./chunk-JAI42EXQ.js');
5
5
  var pptx = require('ooxml-ui/pptx');
6
6
  var React107 = require('react');
@@ -309,7 +309,7 @@ function SlideTemplatePreview({
309
309
  transformOrigin: "top left"
310
310
  },
311
311
  children: previewSlide.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
312
- chunkJKZNL6HP_js.StaticElementRenderer,
312
+ chunkME5QRTVS_js.StaticElementRenderer,
313
313
  {
314
314
  element,
315
315
  activeSlide: previewSlide,
@@ -378,7 +378,7 @@ function SlideTemplateGalleryDialog({
378
378
  scheme
379
379
  }) {
380
380
  const { t } = reactI18next.useTranslation();
381
- const { panelStyle, handlers: dragHandlers } = chunkJKZNL6HP_js.useModalDismissDrag(onClose);
381
+ const { panelStyle, handlers: dragHandlers } = chunkME5QRTVS_js.useModalDismissDrag(onClose);
382
382
  const [selected, setSelected] = React107.useState(null);
383
383
  const dialogRef = React107.useRef(null);
384
384
  useModalFocus(isOpen, dialogRef, onClose);
@@ -872,7 +872,7 @@ function MobileSheet({
872
872
  }) {
873
873
  const sheetRef = React107.useRef(null);
874
874
  const { t } = reactI18next.useTranslation();
875
- const { dragY, dragging, handlers } = chunkJKZNL6HP_js.useSheetDismissDrag(onClose);
875
+ const { dragY, dragging, handlers } = chunkME5QRTVS_js.useSheetDismissDrag(onClose);
876
876
  useModalFocus(open, sheetRef, onClose);
877
877
  if (!open) {
878
878
  return null;
@@ -1140,7 +1140,7 @@ function WebHomeControls({
1140
1140
  function ShapeArrangeExtras(p) {
1141
1141
  const commands = useShapeFormatContext();
1142
1142
  const crop = commands?.crop;
1143
- const { isHidden } = chunkJKZNL6HP_js.useToolbarVisibility(p.hiddenActions);
1143
+ const { isHidden } = chunkME5QRTVS_js.useToolbarVisibility(p.hiddenActions);
1144
1144
  const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
1145
1145
  const controls = React107.useMemo(
1146
1146
  () => pptx.arrangeShapeHomeControls({
@@ -1475,7 +1475,7 @@ function TransitionsSection(p) {
1475
1475
  case "soundPreview": {
1476
1476
  const url = pptx.ribbonTransitionStockSoundUrl(transition);
1477
1477
  if (url) {
1478
- chunkJKZNL6HP_js.playAnimationSound(url);
1478
+ chunkME5QRTVS_js.playAnimationSound(url);
1479
1479
  }
1480
1480
  break;
1481
1481
  }
@@ -1678,7 +1678,7 @@ function AccountPage() {
1678
1678
  return void 0;
1679
1679
  });
1680
1680
  };
1681
- const version = "4.48.0" ;
1681
+ const version = "4.49.0" ;
1682
1682
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
1683
1683
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
1684
1684
  /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -1942,7 +1942,7 @@ function FileSection(p) {
1942
1942
  const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
1943
1943
  const [query, setQuery] = React107.useState("");
1944
1944
  const [recent, setRecent] = React107.useState([]);
1945
- const { isHidden } = chunkJKZNL6HP_js.useToolbarVisibility(p.hiddenActions);
1945
+ const { isHidden } = chunkME5QRTVS_js.useToolbarVisibility(p.hiddenActions);
1946
1946
  const exportHidden = isHidden("export");
1947
1947
  const storage = useViewerStorage();
1948
1948
  React107.useEffect(() => {
@@ -2291,7 +2291,7 @@ function LayoutArtwork({
2291
2291
  backgroundColor
2292
2292
  };
2293
2293
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
2294
- chunkJKZNL6HP_js.StaticElementRenderer,
2294
+ chunkME5QRTVS_js.StaticElementRenderer,
2295
2295
  {
2296
2296
  element,
2297
2297
  activeSlide: slide,
@@ -2741,7 +2741,7 @@ function SlideShowOptions({
2741
2741
  }
2742
2742
  function SubtitleSettingsControl() {
2743
2743
  const { t } = reactI18next.useTranslation();
2744
- const supplied = React107.useContext(chunkJKZNL6HP_js.ViewerOptionsStoreContext);
2744
+ const supplied = React107.useContext(chunkME5QRTVS_js.ViewerOptionsStoreContext);
2745
2745
  const fallback = React107.useRef(null);
2746
2746
  if (!supplied) {
2747
2747
  fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
@@ -2775,7 +2775,7 @@ function SubtitleSettingsControl() {
2775
2775
  }
2776
2776
  function SlideShowSection(p) {
2777
2777
  const { t } = reactI18next.useTranslation();
2778
- const { isHidden } = chunkJKZNL6HP_js.useToolbarVisibility(p.hiddenActions);
2778
+ const { isHidden } = chunkME5QRTVS_js.useToolbarVisibility(p.hiddenActions);
2779
2779
  const [showsOpen, setShowsOpen] = React107.useState(false);
2780
2780
  const showsRef = React107.useRef(null);
2781
2781
  React107.useEffect(() => {
@@ -3314,7 +3314,7 @@ function MobileMenuSheet(props) {
3314
3314
  const { t } = reactI18next.useTranslation();
3315
3315
  const { open, onClose } = props;
3316
3316
  const [active, setActive] = React107.useState("home");
3317
- const { isTabVisible } = chunkJKZNL6HP_js.useToolbarVisibility(props.hiddenActions);
3317
+ const { isTabVisible } = chunkME5QRTVS_js.useToolbarVisibility(props.hiddenActions);
3318
3318
  return /* @__PURE__ */ jsxRuntime.jsx(
3319
3319
  MobileSheet,
3320
3320
  {
@@ -3604,7 +3604,7 @@ function MobileToolbar(props) {
3604
3604
  const { t } = reactI18next.useTranslation();
3605
3605
  const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
3606
3606
  const [menuOpen, setMenuOpen] = React107.useState(false);
3607
- const { isHidden } = chunkJKZNL6HP_js.useToolbarVisibility(props.hiddenActions);
3607
+ const { isHidden } = chunkME5QRTVS_js.useToolbarVisibility(props.hiddenActions);
3608
3608
  const showEdit = mode === "edit" || mode === "master";
3609
3609
  const hidden = [];
3610
3610
  if (isHidden("undo")) {
@@ -3651,7 +3651,7 @@ function MobileToolbar(props) {
3651
3651
  }
3652
3652
  function ChartSelectionStrip() {
3653
3653
  const { t } = reactI18next.useTranslation();
3654
- const commands = chunkJKZNL6HP_js.useChartFormatContext();
3654
+ const commands = chunkME5QRTVS_js.useChartFormatContext();
3655
3655
  const chart = commands?.chart;
3656
3656
  const chartData = chart?.type === "chart" ? chart.chartData : void 0;
3657
3657
  const controls = React107.useMemo(
@@ -3682,7 +3682,7 @@ function PictureSizeStrip({
3682
3682
  hiddenActions
3683
3683
  }) {
3684
3684
  const crop = useShapeFormatContext()?.crop;
3685
- const { isHidden } = chunkJKZNL6HP_js.useToolbarVisibility(hiddenActions);
3685
+ const { isHidden } = chunkME5QRTVS_js.useToolbarVisibility(hiddenActions);
3686
3686
  const controls = React107.useMemo(
3687
3687
  () => pptx.pictureSizeHomeControls({
3688
3688
  editable: Boolean(crop),
@@ -3855,7 +3855,7 @@ var TAB_BASE = "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap t
3855
3855
  var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
3856
3856
  function RibbonTabBar(p) {
3857
3857
  const { t } = reactI18next.useTranslation();
3858
- const viewerOptions = chunkJKZNL6HP_js.useViewerOptionsContext();
3858
+ const viewerOptions = chunkME5QRTVS_js.useViewerOptionsContext();
3859
3859
  return /* @__PURE__ */ jsxRuntime.jsxs(
3860
3860
  "div",
3861
3861
  {
@@ -3932,9 +3932,9 @@ function RibbonTabBar(p) {
3932
3932
  }
3933
3933
  function TabRowActions(p) {
3934
3934
  const { t } = reactI18next.useTranslation();
3935
- const collab = chunkJKZNL6HP_js.useCollaboration();
3935
+ const collab = chunkME5QRTVS_js.useCollaboration();
3936
3936
  const isCollaborating = Boolean(collab && collab.status === "connected");
3937
- const { isHidden } = chunkJKZNL6HP_js.useToolbarVisibility(p.hiddenActions);
3937
+ const { isHidden } = chunkME5QRTVS_js.useToolbarVisibility(p.hiddenActions);
3938
3938
  const customization = useViewerCustomizationContext();
3939
3939
  const ref = React107.useRef(null);
3940
3940
  const handlers = React107.useRef(p);
@@ -3989,7 +3989,7 @@ function TabRowActions(p) {
3989
3989
  }
3990
3990
  function TitleBarElement(p) {
3991
3991
  const { t } = reactI18next.useTranslation();
3992
- const options = chunkJKZNL6HP_js.useViewerOptionsContext();
3992
+ const options = chunkME5QRTVS_js.useViewerOptionsContext();
3993
3993
  const customization = useViewerCustomizationContext();
3994
3994
  const ref = React107.useRef(null);
3995
3995
  const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
@@ -4325,7 +4325,7 @@ function ToolbarPrimaryRow(p) {
4325
4325
  onToggleSidebar,
4326
4326
  onToggleInspector
4327
4327
  } = p;
4328
- const collab = chunkJKZNL6HP_js.useCollaboration();
4328
+ const collab = chunkME5QRTVS_js.useCollaboration();
4329
4329
  const customization = useViewerCustomizationContext();
4330
4330
  const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
4331
4331
  const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
@@ -4615,8 +4615,8 @@ function ToolbarLateTabs({
4615
4615
  function Toolbar(p) {
4616
4616
  const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
4617
4617
  const { t } = reactI18next.useTranslation();
4618
- const { isTabVisible } = chunkJKZNL6HP_js.useToolbarVisibility(p.hiddenActions);
4619
- const viewerOptions = chunkJKZNL6HP_js.useViewerOptionsContext();
4618
+ const { isTabVisible } = chunkME5QRTVS_js.useToolbarVisibility(p.hiddenActions);
4619
+ const viewerOptions = chunkME5QRTVS_js.useViewerOptionsContext();
4620
4620
  const customization = useViewerCustomizationContext();
4621
4621
  const belowInput = React107.useMemo(
4622
4622
  () => ({
@@ -5602,7 +5602,7 @@ function DrawingOverlaySvg({
5602
5602
  onPointerDown,
5603
5603
  onPointerMove,
5604
5604
  onPointerUp,
5605
- children: isStrokeActive && liveStrokeView ? chunkJKZNL6HP_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
5605
+ children: isStrokeActive && liveStrokeView ? chunkME5QRTVS_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
5606
5606
  "path",
5607
5607
  {
5608
5608
  d: liveStrokeD,
@@ -6181,7 +6181,7 @@ function PictureCropOverlay({
6181
6181
  };
6182
6182
  };
6183
6183
  const { ghost, frame, handles } = overlay;
6184
- const src = chunkJKZNL6HP_js.imgSrc(element);
6184
+ const src = chunkME5QRTVS_js.imgSrc(element);
6185
6185
  return /* @__PURE__ */ jsxRuntime.jsxs(
6186
6186
  "div",
6187
6187
  {
@@ -6357,7 +6357,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
6357
6357
  }
6358
6358
  );
6359
6359
  }
6360
- var HorizontalRuler = /* @__PURE__ */ chunkJKZNL6HP_js.withDisplayName(
6360
+ var HorizontalRuler = /* @__PURE__ */ chunkME5QRTVS_js.withDisplayName(
6361
6361
  /* @__PURE__ */ React107__default.default.memo(HorizontalRulerView),
6362
6362
  "HorizontalRuler"
6363
6363
  );
@@ -6431,7 +6431,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
6431
6431
  }
6432
6432
  );
6433
6433
  }
6434
- var VerticalRuler = /* @__PURE__ */ chunkJKZNL6HP_js.withDisplayName(
6434
+ var VerticalRuler = /* @__PURE__ */ chunkME5QRTVS_js.withDisplayName(
6435
6435
  /* @__PURE__ */ React107__default.default.memo(VerticalRulerView),
6436
6436
  "VerticalRuler"
6437
6437
  );
@@ -6625,7 +6625,7 @@ function SelectionHandleOverlay({
6625
6625
  onDoubleClick: (e) => onDoubleClick(element.id, e),
6626
6626
  onContextMenu: (e) => onContextMenu(element.id, e),
6627
6627
  children: /* @__PURE__ */ jsxRuntime.jsx(
6628
- chunkJKZNL6HP_js.ResizeHandles,
6628
+ chunkME5QRTVS_js.ResizeHandles,
6629
6629
  {
6630
6630
  elementId: element.id,
6631
6631
  adjustmentHandles,
@@ -7336,7 +7336,7 @@ function SlideCanvas(props) {
7336
7336
  props.registerInlineEditReader
7337
7337
  ]
7338
7338
  );
7339
- return /* @__PURE__ */ jsxRuntime.jsx(chunkJKZNL6HP_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
7339
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkME5QRTVS_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
7340
7340
  }
7341
7341
  function SlideCanvasContent({
7342
7342
  imagePaste,
@@ -7605,7 +7605,7 @@ function SlideCanvasContent({
7605
7605
  onPointerMove: handleStagePointerMove,
7606
7606
  onPointerUp: handleStagePointerUp,
7607
7607
  children: [
7608
- /* @__PURE__ */ jsxRuntime.jsx(chunkJKZNL6HP_js.SlideBackgroundImageLayer, { slide: activeSlide }),
7608
+ /* @__PURE__ */ jsxRuntime.jsx(chunkME5QRTVS_js.SlideBackgroundImageLayer, { slide: activeSlide }),
7609
7609
  presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
7610
7610
  /* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
7611
7611
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -7617,7 +7617,7 @@ function SlideCanvasContent({
7617
7617
  }
7618
7618
  ),
7619
7619
  templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
7620
- chunkJKZNL6HP_js.ElementRenderer,
7620
+ chunkME5QRTVS_js.ElementRenderer,
7621
7621
  {
7622
7622
  element,
7623
7623
  activeSlide,
@@ -7661,7 +7661,7 @@ function SlideCanvasContent({
7661
7661
  `tpl-${element.id}`
7662
7662
  )),
7663
7663
  activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
7664
- chunkJKZNL6HP_js.ElementRenderer,
7664
+ chunkME5QRTVS_js.ElementRenderer,
7665
7665
  {
7666
7666
  element,
7667
7667
  activeSlide,
@@ -7727,7 +7727,7 @@ function SlideCanvasContent({
7727
7727
  editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7728
7728
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
7729
7729
  /* @__PURE__ */ jsxRuntime.jsx(
7730
- chunkJKZNL6HP_js.ElementRenderer,
7730
+ chunkME5QRTVS_js.ElementRenderer,
7731
7731
  {
7732
7732
  element: editingMember.member,
7733
7733
  activeSlide,
@@ -8049,41 +8049,11 @@ function ExportProgressModal({
8049
8049
  onCancel
8050
8050
  }) {
8051
8051
  const { t } = reactI18next.useTranslation();
8052
- if (!isOpen) {
8053
- return null;
8054
- }
8055
- const clampedProgress = pptx.clampPercent(progress);
8056
- return /* @__PURE__ */ jsxRuntime.jsx(
8057
- "div",
8058
- {
8059
- style: { zIndex: 1200 },
8060
- className: "fixed inset-0 flex items-center justify-center bg-black/60 backdrop-blur-sm",
8061
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-96 max-w-[calc(100%-2rem)] rounded-xl border border-border bg-background p-6 shadow-2xl", children: [
8062
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 text-sm font-semibold text-foreground", children: title }),
8063
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-3 h-2.5 w-full overflow-hidden rounded-full bg-accent", children: /* @__PURE__ */ jsxRuntime.jsx(
8064
- "div",
8065
- {
8066
- className: "h-full rounded-full bg-primary transition-all duration-300 ease-out",
8067
- style: { width: `${clampedProgress}%` }
8068
- }
8069
- ) }),
8070
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 flex items-center justify-between text-xs text-muted-foreground", children: [
8071
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: statusMessage ?? t("pptx.export.processing") }),
8072
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "tabular-nums", children: [
8073
- clampedProgress,
8074
- "%"
8075
- ] })
8076
- ] }),
8077
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(
8078
- DialogFooter,
8079
- {
8080
- actions: [{ id: "cancel", label: t("pptx.export.cancel") }],
8081
- onAction: onCancel
8082
- }
8083
- ) })
8084
- ] })
8085
- }
8052
+ const ref = useWebControl(
8053
+ { open: isOpen, title, progress, status: statusMessage, translate: t },
8054
+ { "export-cancel": () => onCancel() }
8086
8055
  );
8056
+ return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-export-progress", { ref });
8087
8057
  }
8088
8058
  function StatusBar(p) {
8089
8059
  const { t } = reactI18next.useTranslation();
@@ -8229,7 +8199,7 @@ function SlideThumbnailImpl({
8229
8199
  ...pptx.deviceStrokeStageStyle(scale)
8230
8200
  },
8231
8201
  children: [
8232
- /* @__PURE__ */ jsxRuntime.jsx(chunkJKZNL6HP_js.SlideBackgroundImageLayer, { slide }),
8202
+ /* @__PURE__ */ jsxRuntime.jsx(chunkME5QRTVS_js.SlideBackgroundImageLayer, { slide }),
8233
8203
  slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsxRuntime.jsx(
8234
8204
  "div",
8235
8205
  {
@@ -8239,7 +8209,7 @@ function SlideThumbnailImpl({
8239
8209
  }
8240
8210
  ),
8241
8211
  previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
8242
- chunkJKZNL6HP_js.StaticElementRenderer,
8212
+ chunkME5QRTVS_js.StaticElementRenderer,
8243
8213
  {
8244
8214
  element,
8245
8215
  activeSlide: slide,
@@ -8417,7 +8387,7 @@ function ContextMenu(props) {
8417
8387
  const { t } = reactI18next.useTranslation();
8418
8388
  const customization = useViewerCustomizationContext();
8419
8389
  const shapeFormat = useShapeFormatContext();
8420
- const chartFormat = chunkJKZNL6HP_js.useChartFormatContext();
8390
+ const chartFormat = chunkME5QRTVS_js.useChartFormatContext();
8421
8391
  const open = Boolean(contextMenuState) && mode === "edit";
8422
8392
  const handlers = {
8423
8393
  ...contextMenuHandlers(props, shapeFormat),
@@ -9332,7 +9302,7 @@ function SlidesPaneSidebar({
9332
9302
  tableStyleContext
9333
9303
  }) {
9334
9304
  const { t } = reactI18next.useTranslation();
9335
- const collab = chunkJKZNL6HP_js.useCollaboration();
9305
+ const collab = chunkME5QRTVS_js.useCollaboration();
9336
9306
  const slideRefs = React107.useRef(/* @__PURE__ */ new Map());
9337
9307
  const renameInputRef = React107.useRef(null);
9338
9308
  const slidePresenceMap = React107.useMemo(() => {
@@ -9427,7 +9397,7 @@ function SlidesPaneSidebar({
9427
9397
  [sectionGroups, showSectionHeaders, effectiveCollapsed]
9428
9398
  );
9429
9399
  const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
9430
- const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkJKZNL6HP_js.useVirtualizedSlides({
9400
+ const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkME5QRTVS_js.useVirtualizedSlides({
9431
9401
  totalItems: shouldVirtualize ? flatItems.length : 0,
9432
9402
  itemHeight: estimatedItemHeight
9433
9403
  });
@@ -11311,7 +11281,7 @@ function ReadingViewStage({
11311
11281
  className: "absolute left-0 top-0 origin-top-left",
11312
11282
  style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
11313
11283
  children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
11314
- chunkJKZNL6HP_js.StaticElementRenderer,
11284
+ chunkME5QRTVS_js.StaticElementRenderer,
11315
11285
  {
11316
11286
  element,
11317
11287
  activeSlide: slide,
@@ -11966,7 +11936,7 @@ function SlideNotesPanel({
11966
11936
  });
11967
11937
  const hasNotes = draft.trim().length > 0;
11968
11938
  const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
11969
- const { dragY, handlers: dragHandlers } = chunkJKZNL6HP_js.useSheetDismissDrag(onToggle);
11939
+ const { dragY, handlers: dragHandlers } = chunkME5QRTVS_js.useSheetDismissDrag(onToggle);
11970
11940
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11971
11941
  isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
11972
11942
  "button",
@@ -13103,7 +13073,7 @@ function DocumentPropertiesDialog({
13103
13073
  const handleClose = React107.useCallback(() => {
13104
13074
  onClose();
13105
13075
  }, [onClose]);
13106
- const { panelStyle, handlers: dragHandlers } = chunkJKZNL6HP_js.useModalDismissDrag(handleClose);
13076
+ const { panelStyle, handlers: dragHandlers } = chunkME5QRTVS_js.useModalDismissDrag(handleClose);
13107
13077
  if (!isOpen) {
13108
13078
  return null;
13109
13079
  }
@@ -13700,7 +13670,7 @@ function PresentationSubtitleBar({
13700
13670
  }) {
13701
13671
  const { t } = reactI18next.useTranslation();
13702
13672
  const language = pptx.subtitleRecognitionLanguage(
13703
- pptx.subtitleSettingsFromOptions(chunkJKZNL6HP_js.useViewerOptionsContext()),
13673
+ pptx.subtitleSettingsFromOptions(chunkME5QRTVS_js.useViewerOptionsContext()),
13704
13674
  typeof navigator === "undefined" ? "en-US" : navigator.language
13705
13675
  );
13706
13676
  const [captionText, setCaptionText] = React107.useState("");
@@ -13894,7 +13864,7 @@ function ScaledSlidePreviewImpl({
13894
13864
  ...pptx.deviceStrokeStageStyle(scale)
13895
13865
  },
13896
13866
  children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
13897
- chunkJKZNL6HP_js.StaticElementRenderer,
13867
+ chunkME5QRTVS_js.StaticElementRenderer,
13898
13868
  {
13899
13869
  element,
13900
13870
  activeSlide: slide,
@@ -14920,6 +14890,24 @@ var AFTER_ANIMATION_OPTIONS = [
14920
14890
  { value: "hideAfterAnimation", labelKey: "pptx.animation.afterAnimation.hideAfterAnimation" },
14921
14891
  { value: "hideOnNextClick", labelKey: "pptx.animation.afterAnimation.hideOnNextClick" }
14922
14892
  ];
14893
+ var pushers = /* @__PURE__ */ new WeakMap();
14894
+ function pushCommittedColor(event) {
14895
+ const input = event.currentTarget;
14896
+ pushers.get(input)?.current(input.value);
14897
+ }
14898
+ function useRecentColorCommit() {
14899
+ const { pushColor } = useRecentColors();
14900
+ const pushRef = React107.useRef(pushColor);
14901
+ React107.useEffect(() => {
14902
+ pushRef.current = pushColor;
14903
+ }, [pushColor]);
14904
+ return React107.useCallback((input) => {
14905
+ if (input) {
14906
+ pushers.set(input, pushRef);
14907
+ input.addEventListener("change", pushCommittedColor);
14908
+ }
14909
+ }, []);
14910
+ }
14923
14911
  function AfterAnimationRow({
14924
14912
  action,
14925
14913
  color,
@@ -14929,7 +14917,7 @@ function AfterAnimationRow({
14929
14917
  onColorChange
14930
14918
  }) {
14931
14919
  const { t } = reactI18next.useTranslation();
14932
- const { pushColor } = useRecentColors();
14920
+ const commitRecentColor = useRecentColorCommit();
14933
14921
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
14934
14922
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
14935
14923
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.afterAnimation") }),
@@ -14953,10 +14941,8 @@ function AfterAnimationRow({
14953
14941
  type: "color",
14954
14942
  "aria-label": t("pptx.animation.afterAnimation.color"),
14955
14943
  value: color ?? "#808080",
14956
- onChange: (event) => {
14957
- onColorChange(event.target.value);
14958
- pushColor(event.target.value);
14959
- },
14944
+ ref: commitRecentColor,
14945
+ onChange: (event) => onColorChange(event.target.value),
14960
14946
  disabled: !canEdit,
14961
14947
  className: "h-6 w-10 rounded border border-border bg-transparent p-0"
14962
14948
  }
@@ -15212,7 +15198,7 @@ function EffectSoundRow({
15212
15198
  }
15213
15199
  const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
15214
15200
  if (asset) {
15215
- chunkJKZNL6HP_js.playAnimationSound(asset.dataUrl);
15201
+ chunkME5QRTVS_js.playAnimationSound(asset.dataUrl);
15216
15202
  }
15217
15203
  };
15218
15204
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -15724,7 +15710,7 @@ function AnimationPanel({
15724
15710
  onUpdateSlide
15725
15711
  }) {
15726
15712
  const { t } = reactI18next.useTranslation();
15727
- const { viewportWidth } = chunkJKZNL6HP_js.useIsMobile();
15713
+ const { viewportWidth } = chunkME5QRTVS_js.useIsMobile();
15728
15714
  const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
15729
15715
  const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
15730
15716
  const handlers = useAnimationHandlers({
@@ -16409,7 +16395,7 @@ function ChartAxisStyleOptions({
16409
16395
  onSetGridlineStyle
16410
16396
  }) {
16411
16397
  const { t } = reactI18next.useTranslation();
16412
- const { pushColor } = useRecentColors();
16398
+ const commitRecentColor = useRecentColorCommit();
16413
16399
  const rows = SCALE_AXES.map((row) => ({
16414
16400
  ...row,
16415
16401
  axis: axes?.find((a) => a.axisType === row.type)
@@ -16509,10 +16495,8 @@ function ChartAxisStyleOptions({
16509
16495
  disabled: !canEdit,
16510
16496
  className: "h-6 w-8 cursor-pointer rounded border border-border bg-transparent",
16511
16497
  value: axis.fontColor ?? "#000000",
16512
- onChange: (e) => {
16513
- onSetTitleStyle(type, { fontColor: e.target.value });
16514
- pushColor(e.target.value);
16515
- }
16498
+ ref: commitRecentColor,
16499
+ onChange: (e) => onSetTitleStyle(type, { fontColor: e.target.value })
16516
16500
  }
16517
16501
  )
16518
16502
  ] })
@@ -16535,10 +16519,8 @@ function ChartAxisStyleOptions({
16535
16519
  title: t("pptx.chart.gridlineColor"),
16536
16520
  className: "h-6 w-8 cursor-pointer rounded border border-border bg-transparent",
16537
16521
  value: spPr?.strokeColor ?? "#d9d9d9",
16538
- onChange: (e) => {
16539
- onSetGridlineStyle(type, which, { color: e.target.value });
16540
- pushColor(e.target.value);
16541
- }
16522
+ ref: commitRecentColor,
16523
+ onChange: (e) => onSetGridlineStyle(type, which, { color: e.target.value })
16542
16524
  }
16543
16525
  ),
16544
16526
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -16623,7 +16605,7 @@ function ChartDataGrid({
16623
16605
  }) {
16624
16606
  const { t } = reactI18next.useTranslation();
16625
16607
  const highlightRef = React107.useRef(null);
16626
- const { viewportWidth } = chunkJKZNL6HP_js.useIsMobile();
16608
+ const { viewportWidth } = chunkME5QRTVS_js.useIsMobile();
16627
16609
  const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
16628
16610
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
16629
16611
  const rowHeaderClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10 bg-card" : "";
@@ -16805,7 +16787,7 @@ function ChartDataPointMarkerOptions({
16805
16787
  onSetPointMarker
16806
16788
  }) {
16807
16789
  const { t } = reactI18next.useTranslation();
16808
- const { pushColor } = useRecentColors();
16790
+ const commitRecentColor = useRecentColorCommit();
16809
16791
  const [seriesIndex, setSeriesIndex] = React107.useState(0);
16810
16792
  if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0 || categories.length === 0) {
16811
16793
  return null;
@@ -16892,10 +16874,8 @@ function ChartDataPointMarkerOptions({
16892
16874
  title: t("pptx.chart.markerFill"),
16893
16875
  className: "h-6 w-8 cursor-pointer rounded border border-border bg-transparent",
16894
16876
  value: point2.marker.spPr?.fillColor ?? "#4472c4",
16895
- onChange: (e) => {
16896
- onSetPointMarker(seriesIndex, idx, { fillColor: e.target.value });
16897
- pushColor(e.target.value);
16898
- }
16877
+ ref: commitRecentColor,
16878
+ onChange: (e) => onSetPointMarker(seriesIndex, idx, { fillColor: e.target.value })
16899
16879
  }
16900
16880
  )
16901
16881
  ] })
@@ -16913,7 +16893,7 @@ function ChartDataPointOptions({
16913
16893
  onSetPointLabel
16914
16894
  }) {
16915
16895
  const { t } = reactI18next.useTranslation();
16916
- const { pushColor } = useRecentColors();
16896
+ const commitRecentColor = useRecentColorCommit();
16917
16897
  const [seriesIndex, setSeriesIndex] = React107.useState(0);
16918
16898
  if (series.length === 0 || categories.length === 0) {
16919
16899
  return null;
@@ -16964,10 +16944,8 @@ function ChartDataPointOptions({
16964
16944
  title: t("pptx.chart.pointFill"),
16965
16945
  className: "h-6 w-8 cursor-pointer rounded border border-border bg-transparent",
16966
16946
  value: point2?.spPr?.fillColor ?? activeSeries.color ?? "#4472c4",
16967
- onChange: (e) => {
16968
- onSetPointFill(seriesIndex, idx, e.target.value);
16969
- pushColor(e.target.value);
16970
- }
16947
+ ref: commitRecentColor,
16948
+ onChange: (e) => onSetPointFill(seriesIndex, idx, e.target.value)
16971
16949
  }
16972
16950
  ),
16973
16951
  point2?.spPr?.fillColor && /* @__PURE__ */ jsxRuntime.jsx(
@@ -17254,7 +17232,7 @@ function ChartMarkerOptions({
17254
17232
  onSetMarker
17255
17233
  }) {
17256
17234
  const { t } = reactI18next.useTranslation();
17257
- const { pushColor } = useRecentColors();
17235
+ const commitRecentColor = useRecentColorCommit();
17258
17236
  if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
17259
17237
  return null;
17260
17238
  }
@@ -17313,10 +17291,8 @@ function ChartMarkerOptions({
17313
17291
  disabled: !canEdit,
17314
17292
  className: "h-6 w-8 cursor-pointer rounded border border-border bg-transparent",
17315
17293
  value: marker.spPr?.fillColor ?? "#4472c4",
17316
- onChange: (e) => {
17317
- onSetMarker(i, { fillColor: e.target.value });
17318
- pushColor(e.target.value);
17319
- }
17294
+ ref: commitRecentColor,
17295
+ onChange: (e) => onSetMarker(i, { fillColor: e.target.value })
17320
17296
  }
17321
17297
  )
17322
17298
  ] })
@@ -17335,19 +17311,15 @@ function DebouncedColorInput({
17335
17311
  const [local, setLocal] = React107.useState(value);
17336
17312
  const commitRef = React107.useRef(onCommit);
17337
17313
  commitRef.current = onCommit;
17338
- const { pushColor } = useRecentColors();
17314
+ const commitRecentColor = useRecentColorCommit();
17339
17315
  React107.useEffect(() => {
17340
17316
  setLocal(value);
17341
17317
  }, [value]);
17342
- const handleChange = React107.useCallback(
17343
- (e) => {
17344
- const next = e.target.value;
17345
- setLocal(next);
17346
- commitRef.current(next);
17347
- pushColor(next);
17348
- },
17349
- [pushColor]
17350
- );
17318
+ const handleChange = React107.useCallback((e) => {
17319
+ const next = e.target.value;
17320
+ setLocal(next);
17321
+ commitRef.current(next);
17322
+ }, []);
17351
17323
  return /* @__PURE__ */ jsxRuntime.jsx(
17352
17324
  "input",
17353
17325
  {
@@ -17356,6 +17328,7 @@ function DebouncedColorInput({
17356
17328
  disabled,
17357
17329
  value: local,
17358
17330
  className,
17331
+ ref: commitRecentColor,
17359
17332
  onChange: handleChange
17360
17333
  }
17361
17334
  );
@@ -17980,8 +17953,8 @@ function ChartUserShapeOptions({
17980
17953
  }
17981
17954
  function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
17982
17955
  const chartData = selectedElement.chartData;
17983
- const followDataPoint = chunkJKZNL6HP_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
17984
- const { selection: partSelection } = chunkJKZNL6HP_js.useChartPartSelection();
17956
+ const followDataPoint = chunkME5QRTVS_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
17957
+ const { selection: partSelection } = chunkME5QRTVS_js.useChartPartSelection();
17985
17958
  const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
17986
17959
  const title = chartData?.title;
17987
17960
  const chartType = chartData?.chartType;
@@ -19249,7 +19222,7 @@ function DuotonePanel({
19249
19222
  ] }),
19250
19223
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
19251
19224
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
19252
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkJKZNL6HP_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
19225
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkME5QRTVS_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
19253
19226
  "button",
19254
19227
  {
19255
19228
  type: "button",
@@ -21085,7 +21058,7 @@ function EffectField({
21085
21058
  onUpdate
21086
21059
  }) {
21087
21060
  const { t } = reactI18next.useTranslation();
21088
- const { pushColor } = useRecentColors();
21061
+ const commitRecentColor = useRecentColorCommit();
21089
21062
  const fieldLabel = field.i18nKey ? t(field.i18nKey) : field.label;
21090
21063
  const val = field.read(style);
21091
21064
  const cls = `flex flex-col gap-1 ${field.span2 ? COL2 : ""}`;
@@ -21115,10 +21088,10 @@ function EffectField({
21115
21088
  {
21116
21089
  type: "color",
21117
21090
  value: String(val),
21091
+ ref: commitRecentColor,
21118
21092
  onChange: (e) => {
21119
21093
  const result = field.write(e.target.value, style);
21120
21094
  onUpdate(typeof result === "function" ? result(style) : result);
21121
- pushColor(e.target.value);
21122
21095
  },
21123
21096
  className: `h-8 ${SEL} px-1`
21124
21097
  }
@@ -21212,6 +21185,7 @@ function ColorPickerRow({
21212
21185
  }) {
21213
21186
  const { t } = reactI18next.useTranslation();
21214
21187
  const { pushColor } = useRecentColors();
21188
+ const commitRecentColor = useRecentColorCommit();
21215
21189
  const commit = (color, ref) => {
21216
21190
  onChange(color, ref);
21217
21191
  pushColor(color);
@@ -21231,7 +21205,8 @@ function ColorPickerRow({
21231
21205
  type: "color",
21232
21206
  value,
21233
21207
  disabled,
21234
- onChange: (e) => commit(e.target.value),
21208
+ ref: commitRecentColor,
21209
+ onChange: (e) => onChange(e.target.value),
21235
21210
  className: `h-8 flex-1 ${SEL} px-1 ${DIS}`
21236
21211
  }
21237
21212
  ),
@@ -21289,6 +21264,7 @@ function GradientStopRow({
21289
21264
  }) {
21290
21265
  const { t } = reactI18next.useTranslation();
21291
21266
  const { pushColor } = useRecentColors();
21267
+ const commitRecentColor = useRecentColorCommit();
21292
21268
  const patchStop = (patch) => {
21293
21269
  const next = allStops.map((s, i) => i === index ? { ...s, ...patch } : s);
21294
21270
  onUpdate(next);
@@ -21300,11 +21276,8 @@ function GradientStopRow({
21300
21276
  {
21301
21277
  type: "color",
21302
21278
  value: chunkJAI42EXQ_js.normalizeHexColor(stop2.color, "#3b82f6"),
21303
- onChange: (e) => {
21304
- const hex = chunkJAI42EXQ_js.normalizeHexColor(e.target.value, "#3b82f6");
21305
- patchStop({ color: hex, colorRef: void 0 });
21306
- pushColor(hex);
21307
- },
21279
+ ref: commitRecentColor,
21280
+ onChange: (e) => patchStop({ color: chunkJAI42EXQ_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
21308
21281
  className: "h-7 w-10 rounded border border-border bg-muted"
21309
21282
  }
21310
21283
  ),
@@ -21838,7 +21811,7 @@ function Text3DProperties({
21838
21811
  onUpdateTextStyle
21839
21812
  }) {
21840
21813
  const { t } = reactI18next.useTranslation();
21841
- const { pushColor } = useRecentColors();
21814
+ const commitRecentColor = useRecentColorCommit();
21842
21815
  const t3d = ts?.text3d;
21843
21816
  const hasExtrusion = Boolean(t3d?.extrusionHeight && t3d.extrusionHeight > 0);
21844
21817
  const update3d = (partial) => {
@@ -21885,10 +21858,8 @@ function Text3DProperties({
21885
21858
  {
21886
21859
  type: "color",
21887
21860
  value: chunkJAI42EXQ_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
21888
- onChange: (e) => {
21889
- update3d({ extrusionColor: e.target.value });
21890
- pushColor(e.target.value);
21891
- },
21861
+ ref: commitRecentColor,
21862
+ onChange: (e) => update3d({ extrusionColor: e.target.value }),
21892
21863
  className: COLOR_CLS
21893
21864
  }
21894
21865
  )
@@ -22054,7 +22025,7 @@ function AdvancedTextFormatting({
22054
22025
  numChange
22055
22026
  }) {
22056
22027
  const { t } = reactI18next.useTranslation();
22057
- const { pushColor } = useRecentColors();
22028
+ const commitRecentColor = useRecentColorCommit();
22058
22029
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
22059
22030
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] uppercase tracking-wide text-muted-foreground", children: t("pptx.textProperties.advancedTextHeading") }),
22060
22031
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: BASELINE_TOGGLES.map(([label, baseline]) => /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2 text-foreground", children: [
@@ -22076,10 +22047,8 @@ function AdvancedTextFormatting({
22076
22047
  {
22077
22048
  type: "color",
22078
22049
  value: chunkJAI42EXQ_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
22079
- onChange: (e) => {
22080
- onUpdateTextStyle({ highlightColor: e.target.value });
22081
- pushColor(e.target.value);
22082
- },
22050
+ ref: commitRecentColor,
22051
+ onChange: (e) => onUpdateTextStyle({ highlightColor: e.target.value }),
22083
22052
  disabled: !canEdit,
22084
22053
  className: COLOR_CLS2
22085
22054
  }
@@ -22110,10 +22079,8 @@ function AdvancedTextFormatting({
22110
22079
  {
22111
22080
  type: "color",
22112
22081
  value: ts?.underlineColor || ts?.color || "#000000",
22113
- onChange: (e) => {
22114
- onUpdateTextStyle({ underlineColor: e.target.value });
22115
- pushColor(e.target.value);
22116
- },
22082
+ ref: commitRecentColor,
22083
+ onChange: (e) => onUpdateTextStyle({ underlineColor: e.target.value }),
22117
22084
  className: COLOR_CLS2
22118
22085
  }
22119
22086
  )
@@ -22144,10 +22111,8 @@ function AdvancedTextFormatting({
22144
22111
  {
22145
22112
  type: "color",
22146
22113
  value: ts?.textOutlineColor || "#000000",
22147
- onChange: (e) => {
22148
- onUpdateTextStyle({ textOutlineColor: e.target.value });
22149
- pushColor(e.target.value);
22150
- },
22114
+ ref: commitRecentColor,
22115
+ onChange: (e) => onUpdateTextStyle({ textOutlineColor: e.target.value }),
22151
22116
  className: COLOR_CLS2
22152
22117
  }
22153
22118
  )
@@ -22334,7 +22299,7 @@ function TextEffectsPanel({
22334
22299
  numChange
22335
22300
  }) {
22336
22301
  const { t } = reactI18next.useTranslation();
22337
- const { pushColor } = useRecentColors();
22302
+ const commitRecentColor = useRecentColorCommit();
22338
22303
  const hasShadow = Boolean(
22339
22304
  ts?.textShadowColor || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0
22340
22305
  );
@@ -22380,10 +22345,8 @@ function TextEffectsPanel({
22380
22345
  {
22381
22346
  type: "color",
22382
22347
  value: chunkJAI42EXQ_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
22383
- onChange: (e) => {
22384
- onUpdateTextStyle({ textShadowColor: e.target.value });
22385
- pushColor(e.target.value);
22386
- },
22348
+ ref: commitRecentColor,
22349
+ onChange: (e) => onUpdateTextStyle({ textShadowColor: e.target.value }),
22387
22350
  className: COLOR_CLS2
22388
22351
  }
22389
22352
  )
@@ -22487,10 +22450,8 @@ function TextEffectsPanel({
22487
22450
  {
22488
22451
  type: "color",
22489
22452
  value: chunkJAI42EXQ_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
22490
- onChange: (e) => {
22491
- onUpdateTextStyle({ textGlowColor: e.target.value });
22492
- pushColor(e.target.value);
22493
- },
22453
+ ref: commitRecentColor,
22454
+ onChange: (e) => onUpdateTextStyle({ textGlowColor: e.target.value }),
22494
22455
  className: COLOR_CLS2
22495
22456
  }
22496
22457
  )
@@ -22984,7 +22945,7 @@ function SmartArtNodeStyleControls({
22984
22945
  canEdit,
22985
22946
  onChangeStyle
22986
22947
  }) {
22987
- const { pushColor } = useRecentColors();
22948
+ const commitRecentColor = useRecentColorCommit();
22988
22949
  const bold = Boolean(style?.bold);
22989
22950
  const italic = Boolean(style?.italic);
22990
22951
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -23004,10 +22965,8 @@ function SmartArtNodeStyleControls({
23004
22965
  "aria-label": `Fill colour for ${label}`,
23005
22966
  className: "h-4 w-5 cursor-pointer rounded border border-border bg-transparent p-0 disabled:cursor-not-allowed",
23006
22967
  value: style?.fillColor ?? DEFAULT_FILL,
23007
- onChange: (e) => {
23008
- onChangeStyle(nodeId, { fillColor: e.target.value });
23009
- pushColor(e.target.value);
23010
- }
22968
+ ref: commitRecentColor,
22969
+ onChange: (e) => onChangeStyle(nodeId, { fillColor: e.target.value })
23011
22970
  }
23012
22971
  )
23013
22972
  ] }),
@@ -23021,10 +22980,8 @@ function SmartArtNodeStyleControls({
23021
22980
  "aria-label": `Font colour for ${label}`,
23022
22981
  className: "h-4 w-5 cursor-pointer rounded border border-border bg-transparent p-0 disabled:cursor-not-allowed",
23023
22982
  value: style?.fontColor ?? DEFAULT_FONT,
23024
- onChange: (e) => {
23025
- onChangeStyle(nodeId, { fontColor: e.target.value });
23026
- pushColor(e.target.value);
23027
- }
22983
+ ref: commitRecentColor,
22984
+ onChange: (e) => onChangeStyle(nodeId, { fontColor: e.target.value })
23028
22985
  }
23029
22986
  )
23030
22987
  ] }),
@@ -23258,7 +23215,7 @@ function SmartArtPropertiesPanel({
23258
23215
  const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
23259
23216
  newData,
23260
23217
  newData.layout,
23261
- chunkJKZNL6HP_js.resolveSmartArtDataPalette(newData),
23218
+ chunkME5QRTVS_js.resolveSmartArtDataPalette(newData),
23262
23219
  newData.style ?? "flat",
23263
23220
  "inspector",
23264
23221
  box
@@ -23447,7 +23404,7 @@ function TableDataGrid({
23447
23404
  }) {
23448
23405
  const { t } = reactI18next.useTranslation();
23449
23406
  const grid = pptx.buildTableDataGrid(tableElement);
23450
- const { viewportWidth } = chunkJKZNL6HP_js.useIsMobile();
23407
+ const { viewportWidth } = chunkME5QRTVS_js.useIsMobile();
23451
23408
  const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
23452
23409
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
23453
23410
  const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
@@ -23612,7 +23569,7 @@ function TableCellPatternFill({
23612
23569
  onUpdateCellStyle
23613
23570
  }) {
23614
23571
  const { t } = reactI18next.useTranslation();
23615
- const { pushColor } = useRecentColors();
23572
+ const commitRecentColor = useRecentColorCommit();
23616
23573
  const translate = (key) => t(key);
23617
23574
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
23618
23575
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
@@ -23639,10 +23596,8 @@ function TableCellPatternFill({
23639
23596
  disabled: !canEdit,
23640
23597
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
23641
23598
  value: cellStyle.patternFillForeground ?? "#000000",
23642
- onChange: (e) => {
23643
- onUpdateCellStyle({ patternFillForeground: e.target.value });
23644
- pushColor(e.target.value);
23645
- }
23599
+ ref: commitRecentColor,
23600
+ onChange: (e) => onUpdateCellStyle({ patternFillForeground: e.target.value })
23646
23601
  }
23647
23602
  )
23648
23603
  ] }),
@@ -23655,10 +23610,8 @@ function TableCellPatternFill({
23655
23610
  disabled: !canEdit,
23656
23611
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
23657
23612
  value: cellStyle.patternFillBackground ?? "#FFFFFF",
23658
- onChange: (e) => {
23659
- onUpdateCellStyle({ patternFillBackground: e.target.value });
23660
- pushColor(e.target.value);
23661
- }
23613
+ ref: commitRecentColor,
23614
+ onChange: (e) => onUpdateCellStyle({ patternFillBackground: e.target.value })
23662
23615
  }
23663
23616
  )
23664
23617
  ] })
@@ -23759,7 +23712,7 @@ function GradientControls({
23759
23712
  onUpdateCellStyle
23760
23713
  }) {
23761
23714
  const { t } = reactI18next.useTranslation();
23762
- const { pushColor } = useRecentColors();
23715
+ const commitRecentColor = useRecentColorCommit();
23763
23716
  const stops = cellStyle.gradientFillStops ?? [];
23764
23717
  const gradType = cellStyle.gradientFillType ?? "linear";
23765
23718
  const updateStop = (index, patch) => {
@@ -23816,10 +23769,8 @@ function GradientControls({
23816
23769
  disabled: !canEdit,
23817
23770
  className: "h-6 w-6 rounded border border-border cursor-pointer",
23818
23771
  value: stop2.color,
23819
- onChange: (e) => {
23820
- updateStop(idx, { color: e.target.value });
23821
- pushColor(e.target.value);
23822
- }
23772
+ ref: commitRecentColor,
23773
+ onChange: (e) => updateStop(idx, { color: e.target.value })
23823
23774
  }
23824
23775
  ),
23825
23776
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -25289,7 +25240,7 @@ function InspectorPaneHeader({
25289
25240
  onClose
25290
25241
  }) {
25291
25242
  const { t } = reactI18next.useTranslation();
25292
- const { viewportWidth } = chunkJKZNL6HP_js.useIsMobile();
25243
+ const { viewportWidth } = chunkME5QRTVS_js.useIsMobile();
25293
25244
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
25294
25245
  const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
25295
25246
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -25990,7 +25941,7 @@ function TransitionPreview({
25990
25941
  const { t } = reactI18next.useTranslation();
25991
25942
  const durationMs = transition.durationMs ?? 500;
25992
25943
  const animations = React107.useMemo(
25993
- () => chunkJKZNL6HP_js.getSlideTransitionAnimations(
25944
+ () => chunkME5QRTVS_js.getSlideTransitionAnimations(
25994
25945
  transition.type,
25995
25946
  durationMs,
25996
25947
  transition.direction,
@@ -26059,7 +26010,7 @@ function TransitionPreview({
26059
26010
  ]
26060
26011
  }
26061
26012
  ),
26062
- /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkJKZNL6HP_js.SLIDE_TRANSITION_KEYFRAMES })
26013
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkME5QRTVS_js.SLIDE_TRANSITION_KEYFRAMES })
26063
26014
  ] });
26064
26015
  }
26065
26016
  var DEFAULT_DURATION_MS = 320;
@@ -26722,7 +26673,7 @@ function InspectorPane(props) {
26722
26673
  } = props;
26723
26674
  const hasSelection = selectedElement !== null;
26724
26675
  const { t } = reactI18next.useTranslation();
26725
- const { dragY, handlers: dragHandlers } = chunkJKZNL6HP_js.useSheetDismissDrag(onClose);
26676
+ const { dragY, handlers: dragHandlers } = chunkME5QRTVS_js.useSheetDismissDrag(onClose);
26726
26677
  const {
26727
26678
  animationPanelHeight,
26728
26679
  effectiveThemeOptions,
@@ -27135,7 +27086,7 @@ function PresentationTouchControls({
27135
27086
  hideNavigation = false
27136
27087
  }) {
27137
27088
  const { t } = reactI18next.useTranslation();
27138
- const { isTouchDevice } = chunkJKZNL6HP_js.useIsMobile();
27089
+ const { isTouchDevice } = chunkME5QRTVS_js.useIsMobile();
27139
27090
  if (!isTouchDevice) {
27140
27091
  return null;
27141
27092
  }
@@ -27782,11 +27733,11 @@ function PrintDialog({
27782
27733
  }) {
27783
27734
  const { t } = reactI18next.useTranslation();
27784
27735
  const regionRenderer = useRegionRenderer("dialog.print");
27785
- const { panelStyle, handlers: dragHandlers } = chunkJKZNL6HP_js.useModalDismissDrag(onClose);
27786
- const { viewportWidth } = chunkJKZNL6HP_js.useIsMobile();
27736
+ const { panelStyle, handlers: dragHandlers } = chunkME5QRTVS_js.useModalDismissDrag(onClose);
27737
+ const { viewportWidth } = chunkME5QRTVS_js.useIsMobile();
27787
27738
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
27788
27739
  const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
27789
- const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkJKZNL6HP_js.useViewerOptionsContext());
27740
+ const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkME5QRTVS_js.useViewerOptionsContext());
27790
27741
  const [printWhat, setPrintWhat] = React107.useState(printOptionDefaults?.printWhat ?? "slides");
27791
27742
  const [orientation, setOrientation] = React107.useState("landscape");
27792
27743
  const [colorMode, setColorMode] = React107.useState(
@@ -28303,14 +28254,14 @@ function BroadcastDialog({
28303
28254
  }) {
28304
28255
  const { t } = reactI18next.useTranslation();
28305
28256
  const regionRenderer = useRegionRenderer("dialog.broadcast");
28306
- const collab = chunkJKZNL6HP_js.useCollaboration();
28257
+ const collab = chunkME5QRTVS_js.useCollaboration();
28307
28258
  const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
28308
28259
  const [roomId, setRoomId] = React107.useState("");
28309
28260
  const [userName, setUserName] = React107.useState("");
28310
28261
  const [serverUrl, setServerUrl] = React107.useState("");
28311
28262
  const [copied, setCopied] = React107.useState(false);
28312
28263
  const dialogRef = React107.useRef(null);
28313
- const { panelStyle, handlers: dragHandlers } = chunkJKZNL6HP_js.useModalDismissDrag(onClose);
28264
+ const { panelStyle, handlers: dragHandlers } = chunkME5QRTVS_js.useModalDismissDrag(onClose);
28314
28265
  useModalFocus(open, dialogRef, onClose);
28315
28266
  React107.useEffect(() => {
28316
28267
  if (open && !isBroadcasting) {
@@ -28626,7 +28577,7 @@ function ActiveSessionView({
28626
28577
  onCopyRoomId,
28627
28578
  onStopCollaboration
28628
28579
  }) {
28629
- const { t } = reactI18next.useTranslation(), viewerOptions = chunkJKZNL6HP_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({
28580
+ const { t } = reactI18next.useTranslation(), viewerOptions = chunkME5QRTVS_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({
28630
28581
  localUserName: activeCollaboration?.userName ?? collab.config.userName,
28631
28582
  localUserInitials: viewerOptions.general.userInitials,
28632
28583
  localUserColor: collab.config.userColor,
@@ -28725,7 +28676,7 @@ function StartSessionForm({
28725
28676
  onRetry
28726
28677
  }) {
28727
28678
  const { t } = reactI18next.useTranslation();
28728
- const { viewportWidth } = chunkJKZNL6HP_js.useIsMobile();
28679
+ const { viewportWidth } = chunkME5QRTVS_js.useIsMobile();
28729
28680
  const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
28730
28681
  const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
28731
28682
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
@@ -28859,7 +28810,7 @@ function ShareDialog({
28859
28810
  defaultUserName,
28860
28811
  defaultServerUrl
28861
28812
  }) {
28862
- const collab = chunkJKZNL6HP_js.useCollaboration();
28813
+ const collab = chunkME5QRTVS_js.useCollaboration();
28863
28814
  const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
28864
28815
  const { t } = reactI18next.useTranslation();
28865
28816
  const regionRenderer = useRegionRenderer("dialog.share");
@@ -28870,9 +28821,9 @@ function ShareDialog({
28870
28821
  const [invitation, setInvitation] = React107.useState("");
28871
28822
  const [copied, setCopied] = React107.useState(false);
28872
28823
  const dialogRef = React107.useRef(null);
28873
- const { panelStyle, handlers: dragHandlers } = chunkJKZNL6HP_js.useModalDismissDrag(onClose);
28824
+ const { panelStyle, handlers: dragHandlers } = chunkME5QRTVS_js.useModalDismissDrag(onClose);
28874
28825
  useModalFocus(open, dialogRef, onClose);
28875
- const { viewportWidth, viewportHeight } = chunkJKZNL6HP_js.useIsMobile();
28826
+ const { viewportWidth, viewportHeight } = chunkME5QRTVS_js.useIsMobile();
28876
28827
  const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
28877
28828
  const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
28878
28829
  const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
@@ -29171,12 +29122,12 @@ function HyperlinkEditDialog({
29171
29122
  onCancel
29172
29123
  }) {
29173
29124
  const { t } = reactI18next.useTranslation();
29174
- const { panelStyle, handlers: dragHandlers } = chunkJKZNL6HP_js.useModalDismissDrag(onCancel);
29125
+ const { panelStyle, handlers: dragHandlers } = chunkME5QRTVS_js.useModalDismissDrag(onCancel);
29175
29126
  const inputRef = React107.useRef(null);
29176
- const detectedType = chunkJKZNL6HP_js.detectTargetType(initialUrl, initialAction);
29177
- const emailParts = chunkJKZNL6HP_js.parseEmailUrl(initialUrl || "");
29178
- const detectedSlide = chunkJKZNL6HP_js.parseSlideFromUrl(initialUrl, initialAction);
29179
- const detectedVerb = initialAction ? chunkJKZNL6HP_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
29127
+ const detectedType = chunkME5QRTVS_js.detectTargetType(initialUrl, initialAction);
29128
+ const emailParts = chunkME5QRTVS_js.parseEmailUrl(initialUrl || "");
29129
+ const detectedSlide = chunkME5QRTVS_js.parseSlideFromUrl(initialUrl, initialAction);
29130
+ const detectedVerb = initialAction ? chunkME5QRTVS_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
29180
29131
  const [targetType, setTargetType] = React107.useState(detectedType);
29181
29132
  const [url, setUrl] = React107.useState(
29182
29133
  detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
@@ -29453,7 +29404,7 @@ function ViewerBottomPanels({
29453
29404
  notesStyle,
29454
29405
  onNotesHeightChange
29455
29406
  }) {
29456
- const { isHidden } = chunkJKZNL6HP_js.useToolbarVisibility(hiddenActions);
29407
+ const { isHidden } = chunkME5QRTVS_js.useToolbarVisibility(hiddenActions);
29457
29408
  const customization = useViewerCustomizationContext();
29458
29409
  const showNotes = pptx.isPanelVisible(customization, "notes");
29459
29410
  const notesRenderer = useRegionRenderer("notes");
@@ -29843,7 +29794,7 @@ function ViewerToolbarSection(props) {
29843
29794
  [activeSlide, propertyHandlers]
29844
29795
  );
29845
29796
  const scopedLayoutOptions = React107__default.default.useMemo(
29846
- () => chunkJKZNL6HP_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
29797
+ () => chunkME5QRTVS_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
29847
29798
  [s.layoutOptions, activeSlide]
29848
29799
  );
29849
29800
  const handleResetSlide = React107.useCallback(() => {
@@ -30249,7 +30200,7 @@ function ViewerToolbarSection(props) {
30249
30200
  isMobileInsertOpen: s.isMobileInsertOpen,
30250
30201
  onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
30251
30202
  slideCommentCount: activeSlide?.comments?.length ?? 0,
30252
- reviewComments: chunkJKZNL6HP_js.createReviewCommentsHost({
30203
+ reviewComments: chunkME5QRTVS_js.createReviewCommentsHost({
30253
30204
  state: s,
30254
30205
  activeSlideIndex,
30255
30206
  updateSlides: ops.updateSlides,
@@ -30343,7 +30294,7 @@ function EquationEditorDialog({
30343
30294
  existingOmml
30344
30295
  }) {
30345
30296
  const { t } = reactI18next.useTranslation();
30346
- const { panelStyle, handlers: dragHandlers } = chunkJKZNL6HP_js.useModalDismissDrag(onClose);
30297
+ const { panelStyle, handlers: dragHandlers } = chunkME5QRTVS_js.useModalDismissDrag(onClose);
30347
30298
  const initialLatex = React107.useMemo(() => {
30348
30299
  if (!existingOmml) {
30349
30300
  return "";
@@ -30531,7 +30482,7 @@ function getPreviewForLayout(layout) {
30531
30482
  transform: `scale(${scale})`,
30532
30483
  transformOrigin: "top left"
30533
30484
  },
30534
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkJKZNL6HP_js.SmartArtRenderer, { element: pptx.buildSmartArtPreviewElement(layout) })
30485
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkME5QRTVS_js.SmartArtRenderer, { element: pptx.buildSmartArtPreviewElement(layout) })
30535
30486
  }
30536
30487
  )
30537
30488
  }
@@ -30543,7 +30494,7 @@ function InsertSmartArtDialog({
30543
30494
  onInsert
30544
30495
  }) {
30545
30496
  const { t } = reactI18next.useTranslation();
30546
- const { panelStyle, handlers: dragHandlers } = chunkJKZNL6HP_js.useModalDismissDrag(onClose);
30497
+ const { panelStyle, handlers: dragHandlers } = chunkME5QRTVS_js.useModalDismissDrag(onClose);
30547
30498
  const [activeCategory, setActiveCategory] = React107.useState("list");
30548
30499
  const [selectedLayout, setSelectedLayout] = React107.useState(null);
30549
30500
  const dialogRef = React107.useRef(null);
@@ -31150,11 +31101,11 @@ function PresentationStage({
31150
31101
  })
31151
31102
  },
31152
31103
  children: [
31153
- /* @__PURE__ */ jsxRuntime.jsx(chunkJKZNL6HP_js.SlideBackgroundImageLayer, { slide: activeSlide }),
31104
+ /* @__PURE__ */ jsxRuntime.jsx(chunkME5QRTVS_js.SlideBackgroundImageLayer, { slide: activeSlide }),
31154
31105
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
31155
31106
  presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
31156
31107
  templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
31157
- chunkJKZNL6HP_js.ElementRenderer,
31108
+ chunkME5QRTVS_js.ElementRenderer,
31158
31109
  {
31159
31110
  element,
31160
31111
  activeSlide,
@@ -31191,7 +31142,7 @@ function PresentationStage({
31191
31142
  `tpl-${element.id}`
31192
31143
  )),
31193
31144
  activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
31194
- chunkJKZNL6HP_js.ElementRenderer,
31145
+ chunkME5QRTVS_js.ElementRenderer,
31195
31146
  {
31196
31147
  element,
31197
31148
  activeSlide,
@@ -31313,8 +31264,8 @@ function ViewerCanvasArea(props) {
31313
31264
  aiCanvasActive = false
31314
31265
  } = props;
31315
31266
  const { t } = reactI18next.useTranslation();
31316
- const { isHidden } = chunkJKZNL6HP_js.useToolbarVisibility(hiddenActions);
31317
- const viewerOptions = chunkJKZNL6HP_js.useViewerOptionsContext();
31267
+ const { isHidden } = chunkME5QRTVS_js.useToolbarVisibility(hiddenActions);
31268
+ const viewerOptions = chunkME5QRTVS_js.useViewerOptionsContext();
31318
31269
  const outlineAuthoring = useOutlineAuthoring({
31319
31270
  state: s,
31320
31271
  updateElement: canvasHandlers.handleUpdateSmartArtElement,
@@ -31452,7 +31403,7 @@ ${url}`)) {
31452
31403
  s.setActiveSlideIndex((i) => Math.max(0, i - 1));
31453
31404
  }
31454
31405
  }, [mode, presentation, s]);
31455
- const swipe = chunkJKZNL6HP_js.useSwipeNavigation({
31406
+ const swipe = chunkME5QRTVS_js.useSwipeNavigation({
31456
31407
  enabled: swipeEnabled,
31457
31408
  onNext: handleSwipeNext,
31458
31409
  onPrev: handleSwipePrev
@@ -31532,7 +31483,7 @@ ${url}`)) {
31532
31483
  ),
31533
31484
  children: (stageScale) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31534
31485
  presentation.transitionOverlay && slides[presentation.transitionOverlay.outgoingSlideIndex] && /* @__PURE__ */ jsxRuntime.jsx(
31535
- chunkJKZNL6HP_js.PresentationTransitionOverlay,
31486
+ chunkME5QRTVS_js.PresentationTransitionOverlay,
31536
31487
  {
31537
31488
  outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
31538
31489
  templateElements: [
@@ -31649,14 +31600,14 @@ ${url}`)) {
31649
31600
  outlineAuthoring,
31650
31601
  collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31651
31602
  /* @__PURE__ */ jsxRuntime.jsx(
31652
- chunkJKZNL6HP_js.RemoteSelectionOverlay,
31603
+ chunkME5QRTVS_js.RemoteSelectionOverlay,
31653
31604
  {
31654
31605
  elements: effectiveSlide?.elements ?? [],
31655
31606
  activeSlideIndex
31656
31607
  }
31657
31608
  ),
31658
31609
  /* @__PURE__ */ jsxRuntime.jsx(
31659
- chunkJKZNL6HP_js.CollaborationCursorOverlay,
31610
+ chunkME5QRTVS_js.CollaborationCursorOverlay,
31660
31611
  {
31661
31612
  activeSlideIndex,
31662
31613
  canvasWidth: canvasSize.width,
@@ -31920,7 +31871,7 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
31920
31871
  }
31921
31872
  function ChartFormatPanel() {
31922
31873
  const { t } = reactI18next.useTranslation();
31923
- const commands = chunkJKZNL6HP_js.useChartFormatContext();
31874
+ const commands = chunkME5QRTVS_js.useChartFormatContext();
31924
31875
  const ref = React107.useRef(null);
31925
31876
  const chart = commands?.chart;
31926
31877
  const chartData = chart?.type === "chart" ? chart.chartData : void 0;
@@ -31993,7 +31944,7 @@ function MobileDismissSheet({
31993
31944
  children
31994
31945
  }) {
31995
31946
  const { t } = reactI18next.useTranslation();
31996
- const { dragY, handlers } = chunkJKZNL6HP_js.useSheetDismissDrag(onClose);
31947
+ const { dragY, handlers } = chunkME5QRTVS_js.useSheetDismissDrag(onClose);
31997
31948
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31998
31949
  /* @__PURE__ */ jsxRuntime.jsx(
31999
31950
  "button",
@@ -32733,7 +32684,7 @@ function ViewerMainContent(props) {
32733
32684
  );
32734
32685
  const layoutGalleryAnchorRef = React107.useRef(null);
32735
32686
  const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
32736
- return /* @__PURE__ */ jsxRuntime.jsx(chunkJKZNL6HP_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
32687
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkME5QRTVS_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
32737
32688
  showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
32738
32689
  slidesPaneRenderer ? (
32739
32690
  // The rail's slot (width, collapse, resize handle) stays the viewer's.
@@ -33238,7 +33189,7 @@ function MobileChromeOverlay(props) {
33238
33189
  slideSectionGroups,
33239
33190
  canEdit,
33240
33191
  commentCount
33241
- } = props, { keyboardInset, isKeyboardOpen } = chunkJKZNL6HP_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
33192
+ } = props, { keyboardInset, isKeyboardOpen } = chunkME5QRTVS_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
33242
33193
  s.setIsSlidesPaneOpen(false);
33243
33194
  s.setIsMobileInsertOpen(false);
33244
33195
  s.setIsInspectorPaneOpen(false);
@@ -33340,31 +33291,22 @@ function MobileChromeOverlay(props) {
33340
33291
  function ReadOnlyBanner(p) {
33341
33292
  const { t } = reactI18next.useTranslation();
33342
33293
  const ref = useWebControl(
33294
+ pptx.readOnlyBannerState(
33295
+ p.recommendation,
33296
+ {
33297
+ passwordPromptOpen: p.passwordPromptOpen ?? false,
33298
+ passwordError: p.passwordError ?? null,
33299
+ checkingPassword: p.checkingPassword ?? false
33300
+ },
33301
+ t
33302
+ ),
33343
33303
  {
33344
- kind: p.recommendation.kind ?? null,
33345
- messageKey: p.recommendation.messageKey,
33346
- passwordPromptOpen: p.passwordPromptOpen ?? false,
33347
- passwordError: p.passwordError ?? null,
33348
- checkingPassword: p.checkingPassword ?? false,
33349
- translate: t
33350
- },
33351
- {
33352
- "read-only-request": (event) => {
33353
- const intent = event.detail;
33354
- switch (intent.id) {
33355
- case "editAnyway":
33356
- p.onEditAnyway();
33357
- break;
33358
- case "dismiss":
33359
- p.onDismiss();
33360
- break;
33361
- case "cancelPassword":
33362
- p.onCancelPassword?.();
33363
- break;
33364
- case "submitPassword":
33365
- p.onSubmitPassword?.(intent.password);
33366
- }
33367
- }
33304
+ "read-only-request": (event) => pptx.dispatchReadOnlyBannerIntent(event, {
33305
+ editAnyway: p.onEditAnyway,
33306
+ dismiss: p.onDismiss,
33307
+ cancelPassword: p.onCancelPassword,
33308
+ submitPassword: p.onSubmitPassword
33309
+ })
33368
33310
  }
33369
33311
  );
33370
33312
  return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-read-only-banner", { ref });
@@ -33724,7 +33666,7 @@ async function exportAiChatLogs(options) {
33724
33666
  chats,
33725
33667
  { format: options?.format, detailed: options?.detailed, now: options?.now },
33726
33668
  (filename, content, mime) => {
33727
- chunkJKZNL6HP_js.downloadBlob(new Blob([content], { type: mime }), filename);
33669
+ chunkME5QRTVS_js.downloadBlob(new Blob([content], { type: mime }), filename);
33728
33670
  }
33729
33671
  );
33730
33672
  }
@@ -34066,7 +34008,7 @@ function ViewerOptionsProvider({
34066
34008
  store,
34067
34009
  children
34068
34010
  }) {
34069
- return /* @__PURE__ */ jsxRuntime.jsx(chunkJKZNL6HP_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkJKZNL6HP_js.ViewerOptionsContext.Provider, { value: options, children }) });
34011
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkME5QRTVS_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkME5QRTVS_js.ViewerOptionsContext.Provider, { value: options, children }) });
34070
34012
  }
34071
34013
  function useAiBridge(input) {
34072
34014
  const ref = React107.useRef(input);
@@ -34532,7 +34474,7 @@ function useMasterViewCrud(input) {
34532
34474
  if (id === "renameLayout" || id === "renameMaster") {
34533
34475
  const master = slideMasters[target.masterIndex];
34534
34476
  const current = id === "renameLayout" ? master?.layouts?.[target.layoutIndex ?? -1]?.name ?? "" : master?.name ?? "";
34535
- const next = chunkJKZNL6HP_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
34477
+ const next = chunkME5QRTVS_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
34536
34478
  if (!next) {
34537
34479
  return;
34538
34480
  }
@@ -35047,7 +34989,7 @@ var PowerPointViewerComponent = /* @__PURE__ */ React107.forwardRef(
35047
34989
  },
35048
34990
  [storage]
35049
34991
  );
35050
- const { optionsStore, options: viewerOptions } = chunkJKZNL6HP_js.useViewerOptions();
34992
+ const { optionsStore, options: viewerOptions } = chunkME5QRTVS_js.useViewerOptions();
35051
34993
  const custom = useViewerCustomization(customization, legacyHiddenActions, optionsStore);
35052
34994
  const { resolved: customizationResolved, hiddenActions } = custom;
35053
34995
  const aiEnabled = Boolean(ai) && pptx.isFeatureEnabled(customizationResolved, "ai");
@@ -35061,8 +35003,8 @@ var PowerPointViewerComponent = /* @__PURE__ */ React107.forwardRef(
35061
35003
  const handleEnableEditing = React107.useCallback(() => {
35062
35004
  setProtectedViewOverridden(true);
35063
35005
  }, []);
35064
- const readOnlyRec = chunkJKZNL6HP_js.useReadOnlyRecommendationState(content);
35065
- const compatToastsState = chunkJKZNL6HP_js.useCompatibilityToastsState();
35006
+ const readOnlyRec = chunkME5QRTVS_js.useReadOnlyRecommendationState(content);
35007
+ const compatToastsState = chunkME5QRTVS_js.useCompatibilityToastsState();
35066
35008
  const [notesBarHeight, setNotesBarHeight] = React107.useState(0);
35067
35009
  const runProgramNoticesState = useRunProgramNoticesState();
35068
35010
  const [collaborationReadOnly, setCollaborationReadOnly] = React107.useState(Boolean(collaboration));
@@ -35085,8 +35027,8 @@ var PowerPointViewerComponent = /* @__PURE__ */ React107.forwardRef(
35085
35027
  filePath
35086
35028
  });
35087
35029
  const [isShareDialogOpen, setIsShareDialogOpen] = React107.useState(false);
35088
- const { reducedMotion, toggleReducedMotion } = chunkJKZNL6HP_js.useReducedMotion();
35089
- const state = chunkJKZNL6HP_js.useViewerState({
35030
+ const { reducedMotion, toggleReducedMotion } = chunkME5QRTVS_js.useReducedMotion();
35031
+ const state = chunkME5QRTVS_js.useViewerState({
35090
35032
  content,
35091
35033
  canEdit,
35092
35034
  inspectorInitiallyOpen: props.inspectorInitiallyOpen
@@ -35213,16 +35155,16 @@ var PowerPointViewerComponent = /* @__PURE__ */ React107.forwardRef(
35213
35155
  }
35214
35156
  }, [settings, optionsStore]);
35215
35157
  const handleClearOptionsCache = useAutosaveCacheMaintenance(viewerOptions, storage);
35216
- const mobile = chunkJKZNL6HP_js.useIsMobile();
35158
+ const mobile = chunkME5QRTVS_js.useIsMobile();
35217
35159
  const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
35218
- const resizablePanels = chunkJKZNL6HP_js.useResizablePanels();
35160
+ const resizablePanels = chunkME5QRTVS_js.useResizablePanels();
35219
35161
  const {
35220
35162
  gridSpacingPx,
35221
35163
  visibleSlideIndexes,
35222
35164
  slideSectionGroups,
35223
35165
  masterPseudoSlide,
35224
35166
  authoredRange
35225
- } = chunkJKZNL6HP_js.useDerivedSlideState({
35167
+ } = chunkME5QRTVS_js.useDerivedSlideState({
35226
35168
  slides,
35227
35169
  sections: state.sections,
35228
35170
  customShows: state.customShows,
@@ -35247,7 +35189,7 @@ var PowerPointViewerComponent = /* @__PURE__ */ React107.forwardRef(
35247
35189
  state.cropSessionRef
35248
35190
  ]
35249
35191
  );
35250
- const zoom = chunkJKZNL6HP_js.useZoomViewport({
35192
+ const zoom = chunkME5QRTVS_js.useZoomViewport({
35251
35193
  canvasSize,
35252
35194
  selectedElements: state.selectedElements,
35253
35195
  fitPadding: props.fitPadding,
@@ -35262,7 +35204,7 @@ var PowerPointViewerComponent = /* @__PURE__ */ React107.forwardRef(
35262
35204
  setIsDirty(true);
35263
35205
  onChangeCallback.current?.();
35264
35206
  }, [setIsDirty]);
35265
- const history = chunkJKZNL6HP_js.useEditorHistory({
35207
+ const history = chunkME5QRTVS_js.useEditorHistory({
35266
35208
  slides,
35267
35209
  canvasSize,
35268
35210
  activeSlideIndex,
@@ -35288,7 +35230,7 @@ var PowerPointViewerComponent = /* @__PURE__ */ React107.forwardRef(
35288
35230
  setEditTemplateMode: state.setEditTemplateMode,
35289
35231
  setHeaderFooter: state.setHeaderFooter
35290
35232
  });
35291
- const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkJKZNL6HP_js.usePresentationSetup({
35233
+ const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkME5QRTVS_js.usePresentationSetup({
35292
35234
  mode,
35293
35235
  slides,
35294
35236
  visibleSlideIndexes,
@@ -35363,7 +35305,7 @@ ${url}`)
35363
35305
  loading,
35364
35306
  error
35365
35307
  ]);
35366
- chunkJKZNL6HP_js.useTouchGestures({
35308
+ chunkME5QRTVS_js.useTouchGestures({
35367
35309
  targetRef: zoom.canvasViewportRef,
35368
35310
  currentScale: zoom.scale,
35369
35311
  callbacks: {
@@ -35385,7 +35327,7 @@ ${url}`)
35385
35327
  },
35386
35328
  enabled: isTouchDevice
35387
35329
  });
35388
- const dialogs = chunkJKZNL6HP_js.useViewerDialogs({
35330
+ const dialogs = chunkME5QRTVS_js.useViewerDialogs({
35389
35331
  mode,
35390
35332
  slides,
35391
35333
  activeSlide,
@@ -35434,7 +35376,7 @@ ${url}`)
35434
35376
  zoom.handleZoomToFit();
35435
35377
  zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
35436
35378
  }, [mode]);
35437
- const editorOps = chunkJKZNL6HP_js.useEditorOperations({
35379
+ const editorOps = chunkME5QRTVS_js.useEditorOperations({
35438
35380
  state,
35439
35381
  history,
35440
35382
  zoom,
@@ -35477,7 +35419,7 @@ ${url}`)
35477
35419
  handlerRef,
35478
35420
  viewerApi,
35479
35421
  loadVersion
35480
- } = chunkJKZNL6HP_js.useViewerIntegration({
35422
+ } = chunkME5QRTVS_js.useViewerIntegration({
35481
35423
  transformCommittedText: (text) => pptx.applyAutoCorrect(text, viewerOptions.proofing),
35482
35424
  state,
35483
35425
  zoom,
@@ -35616,7 +35558,7 @@ ${url}`)
35616
35558
  updateElementById: editorOps.ops.updateElementById
35617
35559
  });
35618
35560
  const ribbonScope = useRibbonScopeToken();
35619
- const viewPreferencesSync = chunkJKZNL6HP_js.useViewPreferencesSync({
35561
+ const viewPreferencesSync = chunkME5QRTVS_js.useViewPreferencesSync({
35620
35562
  loadVersion,
35621
35563
  viewProperties: state.viewProperties,
35622
35564
  setViewProperties: state.setViewProperties,
@@ -35658,7 +35600,7 @@ ${url}`)
35658
35600
  },
35659
35601
  [state]
35660
35602
  );
35661
- const layoutSwitching = chunkJKZNL6HP_js.useLayoutSwitching({
35603
+ const layoutSwitching = chunkME5QRTVS_js.useLayoutSwitching({
35662
35604
  handler: handlerRef.current,
35663
35605
  slides,
35664
35606
  activeSlideIndex,
@@ -36170,8 +36112,8 @@ ${url}`)
36170
36112
  // Nothing previously provided it, so every one of those consumers was
36171
36113
  // silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
36172
36114
  // the user changed in the Options dialog.
36173
- /* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerStorageContext.Provider, { value: storage, 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(chunkJKZNL6HP_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
36174
- chunkJKZNL6HP_js.CollaborationProvider,
36115
+ /* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerStorageContext.Provider, { value: storage, 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(chunkME5QRTVS_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
36116
+ chunkME5QRTVS_js.CollaborationProvider,
36175
36117
  {
36176
36118
  config: collaboration,
36177
36119
  canvasWidth: canvasSize.width,
@@ -36227,19 +36169,19 @@ ${url}`)
36227
36169
  slideCount: slides.length
36228
36170
  }
36229
36171
  ),
36230
- /* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunkJKZNL6HP_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
36172
+ /* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunkME5QRTVS_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
36231
36173
  ]
36232
36174
  }
36233
36175
  ) }) }) }) }) }) }) }) })
36234
36176
  );
36235
36177
  }
36236
36178
  );
36237
- var PowerPointViewer2 = /* @__PURE__ */ chunkJKZNL6HP_js.withDisplayName(
36179
+ var PowerPointViewer2 = /* @__PURE__ */ chunkME5QRTVS_js.withDisplayName(
36238
36180
  PowerPointViewerComponent,
36239
36181
  "PowerPointViewer"
36240
36182
  );
36241
36183
  function CollaborationStatusStrip() {
36242
- const collab = chunkJKZNL6HP_js.useCollaboration();
36184
+ const collab = chunkME5QRTVS_js.useCollaboration();
36243
36185
  if (!collab) {
36244
36186
  return null;
36245
36187
  }
@@ -36256,9 +36198,9 @@ function CollaborationStateReporter({
36256
36198
  onChange,
36257
36199
  onStatus
36258
36200
  }) {
36259
- const collab = chunkJKZNL6HP_js.useCollaboration();
36201
+ const collab = chunkME5QRTVS_js.useCollaboration();
36260
36202
  useCollaborationStateReport(collab, onChange);
36261
- chunkJKZNL6HP_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
36203
+ chunkME5QRTVS_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
36262
36204
  return null;
36263
36205
  }
36264
36206
  function CollaborationDocumentSync({
@@ -36272,8 +36214,8 @@ function CollaborationDocumentSync({
36272
36214
  deckSaveState,
36273
36215
  onReadOnlyChange
36274
36216
  }) {
36275
- const collab = chunkJKZNL6HP_js.useCollaboration();
36276
- chunkJKZNL6HP_js.useCollaborationDocumentSync({
36217
+ const collab = chunkME5QRTVS_js.useCollaboration();
36218
+ chunkME5QRTVS_js.useCollaborationDocumentSync({
36277
36219
  collaboration: collab,
36278
36220
  slides,
36279
36221
  templateElementsBySlideId,
@@ -36292,14 +36234,14 @@ function CollaborationFollowLayer({
36292
36234
  setActiveSlideIndex,
36293
36235
  slideCount
36294
36236
  }) {
36295
- const collab = chunkJKZNL6HP_js.useCollaboration();
36296
- const { followedClientId, followUser } = chunkJKZNL6HP_js.useFollowMode({
36237
+ const collab = chunkME5QRTVS_js.useCollaboration();
36238
+ const { followedClientId, followUser } = chunkME5QRTVS_js.useFollowMode({
36297
36239
  collab,
36298
36240
  activeSlideIndex,
36299
36241
  setActiveSlideIndex,
36300
36242
  slideCount
36301
36243
  });
36302
- chunkJKZNL6HP_js.useBroadcastFollower({
36244
+ chunkME5QRTVS_js.useBroadcastFollower({
36303
36245
  collab,
36304
36246
  activeSlideIndex,
36305
36247
  setActiveSlideIndex,