pptx-react-viewer 2.19.7 → 2.20.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 (108) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +1 -1
  3. package/dist/{AiChatPanel-MAC2Z5SK.js → AiChatPanel-KOKEVIOQ.js} +24 -24
  4. package/dist/AiChatPanel-KOKEVIOQ.js.br +0 -0
  5. package/dist/AiChatPanel-KOKEVIOQ.js.gz +0 -0
  6. package/dist/{AiChatPanel-WVO66CKC.mjs → AiChatPanel-S5UYFWT2.mjs} +4 -4
  7. package/dist/AiChatPanel-S5UYFWT2.mjs.br +0 -0
  8. package/dist/AiChatPanel-S5UYFWT2.mjs.gz +0 -0
  9. package/dist/{Model3DScene-CU4WGIMH.js → Model3DScene-T5372GIJ.js} +2 -2
  10. package/dist/Model3DScene-T5372GIJ.js.br +0 -0
  11. package/dist/Model3DScene-T5372GIJ.js.gz +0 -0
  12. package/dist/{Model3DScene-PTCZUGIT.mjs → Model3DScene-T6QOOVLN.mjs} +1 -1
  13. package/dist/Model3DScene-T6QOOVLN.mjs.br +0 -0
  14. package/dist/Model3DScene-T6QOOVLN.mjs.gz +0 -0
  15. package/dist/{chunk-DZHCLAH3.mjs → chunk-2T7J57AC.mjs} +1 -1
  16. package/dist/chunk-2T7J57AC.mjs.br +0 -0
  17. package/dist/chunk-2T7J57AC.mjs.gz +0 -0
  18. package/dist/{chunk-MVKRI3CZ.js → chunk-6CPUGAK7.js} +2 -0
  19. package/dist/chunk-6CPUGAK7.js.br +0 -0
  20. package/dist/{chunk-MVKRI3CZ.js.gz → chunk-6CPUGAK7.js.gz} +0 -0
  21. package/dist/{chunk-JENKEQZP.js → chunk-AFAAKYYB.js} +1093 -1254
  22. package/dist/chunk-AFAAKYYB.js.br +0 -0
  23. package/dist/chunk-AFAAKYYB.js.gz +0 -0
  24. package/dist/{chunk-V5PW4QCE.js → chunk-BW3ZS73U.js} +178 -172
  25. package/dist/chunk-BW3ZS73U.js.br +0 -0
  26. package/dist/chunk-BW3ZS73U.js.gz +0 -0
  27. package/dist/{chunk-GUGHIQ4P.js → chunk-J56DMNSD.js} +604 -452
  28. package/dist/chunk-J56DMNSD.js.br +0 -0
  29. package/dist/chunk-J56DMNSD.js.gz +0 -0
  30. package/dist/{chunk-SQJBFMEX.mjs → chunk-MZOZNBRO.mjs} +2 -0
  31. package/dist/chunk-MZOZNBRO.mjs.br +0 -0
  32. package/dist/{chunk-SQJBFMEX.mjs.gz → chunk-MZOZNBRO.mjs.gz} +0 -0
  33. package/dist/{chunk-ZPNLWBED.mjs → chunk-QLELFH7A.mjs} +586 -449
  34. package/dist/chunk-QLELFH7A.mjs.br +0 -0
  35. package/dist/chunk-QLELFH7A.mjs.gz +0 -0
  36. package/dist/{chunk-XDF76VFA.js → chunk-SAKMXLW2.js} +382 -379
  37. package/dist/chunk-SAKMXLW2.js.br +0 -0
  38. package/dist/chunk-SAKMXLW2.js.gz +0 -0
  39. package/dist/{chunk-EVM5OFAD.js → chunk-T7OUKBWK.js} +3 -3
  40. package/dist/chunk-T7OUKBWK.js.br +0 -0
  41. package/dist/chunk-T7OUKBWK.js.gz +0 -0
  42. package/dist/{chunk-QZV7XDQG.mjs → chunk-U2UIJRSW.mjs} +25 -19
  43. package/dist/chunk-U2UIJRSW.mjs.br +0 -0
  44. package/dist/chunk-U2UIJRSW.mjs.gz +0 -0
  45. package/dist/{chunk-5BG5BANR.mjs → chunk-XWCN4TGE.mjs} +67 -228
  46. package/dist/chunk-XWCN4TGE.mjs.br +0 -0
  47. package/dist/chunk-XWCN4TGE.mjs.gz +0 -0
  48. package/dist/{chunk-LP3Y4NXE.mjs → chunk-YMNURZ22.mjs} +6 -3
  49. package/dist/chunk-YMNURZ22.mjs.br +0 -0
  50. package/dist/chunk-YMNURZ22.mjs.gz +0 -0
  51. package/dist/i18n.js +4 -4
  52. package/dist/i18n.js.br +0 -0
  53. package/dist/i18n.js.gz +0 -0
  54. package/dist/i18n.mjs +1 -1
  55. package/dist/i18n.mjs.br +0 -0
  56. package/dist/i18n.mjs.gz +0 -0
  57. package/dist/index.js +47 -47
  58. package/dist/index.js.br +0 -0
  59. package/dist/index.js.gz +0 -0
  60. package/dist/index.mjs +6 -6
  61. package/dist/index.mjs.br +0 -0
  62. package/dist/index.mjs.gz +0 -0
  63. package/dist/internals.js +79 -79
  64. package/dist/internals.js.br +0 -0
  65. package/dist/internals.js.gz +0 -0
  66. package/dist/internals.mjs +4 -4
  67. package/dist/internals.mjs.br +0 -0
  68. package/dist/internals.mjs.gz +0 -0
  69. package/dist/pptx-viewer.css +1 -1
  70. package/dist/pptx-viewer.css.br +0 -0
  71. package/dist/pptx-viewer.css.gz +0 -0
  72. package/dist/viewer/index.js +27 -27
  73. package/dist/viewer/index.js.br +0 -0
  74. package/dist/viewer/index.js.gz +0 -0
  75. package/dist/viewer/index.mjs +6 -6
  76. package/dist/viewer/index.mjs.br +0 -0
  77. package/dist/viewer/index.mjs.gz +0 -0
  78. package/package.json +1 -1
  79. package/dist/AiChatPanel-MAC2Z5SK.js.br +0 -0
  80. package/dist/AiChatPanel-MAC2Z5SK.js.gz +0 -0
  81. package/dist/AiChatPanel-WVO66CKC.mjs.br +0 -0
  82. package/dist/AiChatPanel-WVO66CKC.mjs.gz +0 -0
  83. package/dist/Model3DScene-CU4WGIMH.js.br +0 -0
  84. package/dist/Model3DScene-CU4WGIMH.js.gz +0 -0
  85. package/dist/Model3DScene-PTCZUGIT.mjs.br +0 -0
  86. package/dist/Model3DScene-PTCZUGIT.mjs.gz +0 -0
  87. package/dist/chunk-5BG5BANR.mjs.br +0 -0
  88. package/dist/chunk-5BG5BANR.mjs.gz +0 -0
  89. package/dist/chunk-DZHCLAH3.mjs.br +0 -0
  90. package/dist/chunk-DZHCLAH3.mjs.gz +0 -0
  91. package/dist/chunk-EVM5OFAD.js.br +0 -0
  92. package/dist/chunk-EVM5OFAD.js.gz +0 -0
  93. package/dist/chunk-GUGHIQ4P.js.br +0 -0
  94. package/dist/chunk-GUGHIQ4P.js.gz +0 -0
  95. package/dist/chunk-JENKEQZP.js.br +0 -0
  96. package/dist/chunk-JENKEQZP.js.gz +0 -0
  97. package/dist/chunk-LP3Y4NXE.mjs.br +0 -0
  98. package/dist/chunk-LP3Y4NXE.mjs.gz +0 -0
  99. package/dist/chunk-MVKRI3CZ.js.br +0 -0
  100. package/dist/chunk-QZV7XDQG.mjs.br +0 -0
  101. package/dist/chunk-QZV7XDQG.mjs.gz +0 -0
  102. package/dist/chunk-SQJBFMEX.mjs.br +0 -0
  103. package/dist/chunk-V5PW4QCE.js.br +0 -0
  104. package/dist/chunk-V5PW4QCE.js.gz +0 -0
  105. package/dist/chunk-XDF76VFA.js.br +0 -0
  106. package/dist/chunk-XDF76VFA.js.gz +0 -0
  107. package/dist/chunk-ZPNLWBED.mjs.br +0 -0
  108. package/dist/chunk-ZPNLWBED.mjs.gz +0 -0
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkGUGHIQ4P_js = require('./chunk-GUGHIQ4P.js');
3
+ var chunkJ56DMNSD_js = require('./chunk-J56DMNSD.js');
4
4
  var chunk4VNS5WPM_js = require('./chunk-4VNS5WPM.js');
5
5
  var mcp = require('pptx-viewer-mcp');
6
6
  var mcpSchemas = require('pptx-viewer-mcp/schemas');
@@ -14879,7 +14879,7 @@ async function buildSlideMarkdown(slides, slideIndex2, meta3, options = {}) {
14879
14879
  };
14880
14880
  let markdown;
14881
14881
  try {
14882
- const converter = new chunkGUGHIQ4P_js.PptxMarkdownConverter(
14882
+ const converter = new chunkJ56DMNSD_js.PptxMarkdownConverter(
14883
14883
  "",
14884
14884
  {
14885
14885
  sourceName: meta3.title ?? "deck.pptx",
@@ -15471,7 +15471,7 @@ var getTheme = (ctx) => {
15471
15471
  name: theme?.name,
15472
15472
  colorScheme: theme?.colorScheme,
15473
15473
  fontScheme: theme?.fontScheme,
15474
- availablePresets: Object.keys(chunkGUGHIQ4P_js.ThemePresets)
15474
+ availablePresets: Object.keys(chunkJ56DMNSD_js.ThemePresets)
15475
15475
  };
15476
15476
  };
15477
15477
  var readExecutors = {
Binary file
Binary file
@@ -1,5 +1,5 @@
1
- import { translationsEn } from './chunk-SQJBFMEX.mjs';
2
- import { SHAPE_PRESET_DEFS, VIEWER_SHORTCUT_REFERENCE, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, getImageFitStyle, isImageLikeElement, getImageTilingStyle, runMediaCommand, findMediaElementByElementId, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, buildTextBodyLayoutStyle, buildTextBody3DSceneStyle, buildParagraphs, colorWithOpacity, normalizeHexColor, build3DExtrusionData, getComputedFillStyle, getComputedEffectStyle, getComputedStrokeStyle, isStrokeOnlyPresetElement, resolveShapeGeometry, normalizeStrokeDashType, getSvgStrokeDasharray, buildSvgGradientDef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, computeSelectionRect, DEFAULT_FONT_FAMILY, cellStyleToCss, rectToCells, isCellInRect, tableContainerCss, buildChartViewModel, resolveChartKind, chartPreserveAspectRatio, buildNotesPdfBytes, buildSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, getRoundRectRadiusPx2, getResolvedShapeClipPath, mediaFallbackVisual, registerPersistentAudio, resolveAutoFitFontScale, getSubstituteFontFamily, parsePanoseString, hasDistinctScriptFonts, nestedTextDecorationStyle, pieceLetterSpacing, resolveMetricTrackingPx, hollowTextFillStyle, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, apply3dEffects, clampUnitInterval, customGeometryPathsToSvgSubpaths, svgGradientFillRef, computeColumnBoundaries, getTableCellBandStyle, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, cellRunStyle, getChartStylePalette, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, tableCellCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, ooxmlGradientAngleToCssDegrees, chartPartToAttrs, splitRunForMetrics, hexToRgbChannels, segmentByScript, resolveFontForScript } from './chunk-ZPNLWBED.mjs';
1
+ import { translationsEn } from './chunk-MZOZNBRO.mjs';
2
+ import { SHAPE_PRESET_DEFS, VIEWER_SHORTCUT_REFERENCE, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, getImageFitStyle, isImageLikeElement, getImageTilingStyle, runMediaCommand, findMediaElementByElementId, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, buildTextBodyLayoutStyle, buildTextBody3DSceneStyle, buildParagraphs, colorWithOpacity, normalizeHexColor, build3DExtrusionData, getComputedFillStyle, getComputedEffectStyle, getComputedStrokeStyle, isStrokeOnlyPresetElement, resolveShapeGeometry, normalizeStrokeDashType, getSvgStrokeDasharray, buildSvgGradientDef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, computeSelectionRect, DEFAULT_FONT_FAMILY, cellStyleToCss, rectToCells, isCellInRect, tableContainerCss, buildChartViewModel, resolveChartKind, chartPreserveAspectRatio, buildNotesPdfBytes, buildSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, getRoundRectRadiusPx2, getResolvedShapeClipPath, mediaFallbackVisual, registerPersistentAudio, resolveAutoFitFontScale, getSubstituteFontFamily, parsePanoseString, hasDistinctScriptFonts, nestedTextDecorationStyle, pieceLetterSpacing, resolveMetricTrackingPx, hollowTextFillStyle, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, apply3dEffects, clampUnitInterval, customGeometryPathsToSvgSubpaths, svgGradientFillRef, computeColumnBoundaries, getTableCellBandStyle, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, cellRunStyle, getChartStylePalette, computeChartLegendLayout, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, tableCellCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, ooxmlGradientAngleToCssDegrees, chartPartToAttrs, splitRunForMetrics, hexToRgbChannels, segmentByScript, resolveFontForScript } from './chunk-QLELFH7A.mjs';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import React6, { useRef, useState, useEffect, useCallback, useMemo, useLayoutEffect } from 'react';
@@ -3612,7 +3612,6 @@ function renderTableElement(element, textStyle, options) {
3612
3612
  }
3613
3613
  );
3614
3614
  }
3615
- var LEGEND_ITEM_WIDTH = 80;
3616
3615
  function partAttrs(part) {
3617
3616
  return part ? chartPartToAttrs(part) : void 0;
3618
3617
  }
@@ -3626,8 +3625,7 @@ function buildReactChartViewModel(element) {
3626
3625
  if (element.type !== "chart" || !element.chartData) {
3627
3626
  return buildChartViewModel(element);
3628
3627
  }
3629
- const palette = resolveReactPalette(element.chartData);
3630
- const themedElement = {
3628
+ const palette = resolveReactPalette(element.chartData), themedElement = {
3631
3629
  ...element,
3632
3630
  chartData: { ...element.chartData, colorPalette: palette }
3633
3631
  };
@@ -3647,7 +3645,8 @@ function renderPrimitive(prim, key) {
3647
3645
  fill: r.fill,
3648
3646
  rx: r.rx ?? 0,
3649
3647
  opacity: r.opacity ?? 1,
3650
- ...partAttrs(r.part)
3648
+ ...partAttrs(r.part),
3649
+ children: r.title !== void 0 ? /* @__PURE__ */ jsx("title", { children: r.title }) : null
3651
3650
  },
3652
3651
  key
3653
3652
  );
@@ -3678,7 +3677,8 @@ function renderPrimitive(prim, key) {
3678
3677
  strokeWidth: p.strokeWidth,
3679
3678
  fill: p.fill,
3680
3679
  opacity: p.opacity ?? 1,
3681
- ...partAttrs(p.part)
3680
+ ...partAttrs(p.part),
3681
+ children: p.title !== void 0 ? /* @__PURE__ */ jsx("title", { children: p.title }) : null
3682
3682
  },
3683
3683
  key
3684
3684
  );
@@ -3693,7 +3693,8 @@ function renderPrimitive(prim, key) {
3693
3693
  r: c.r,
3694
3694
  fill: c.fill,
3695
3695
  opacity: c.opacity ?? 1,
3696
- ...partAttrs(c.part)
3696
+ ...partAttrs(c.part),
3697
+ children: c.title !== void 0 ? /* @__PURE__ */ jsx("title", { children: c.title }) : null
3697
3698
  },
3698
3699
  key
3699
3700
  );
@@ -3710,7 +3711,8 @@ function renderPrimitive(prim, key) {
3710
3711
  stroke: l.stroke,
3711
3712
  strokeWidth: l.strokeWidth,
3712
3713
  strokeDasharray: l.dashArray,
3713
- opacity: l.opacity ?? 1
3714
+ opacity: l.opacity ?? 1,
3715
+ children: l.title !== void 0 ? /* @__PURE__ */ jsx("title", { children: l.title }) : null
3714
3716
  },
3715
3717
  key
3716
3718
  );
@@ -3726,7 +3728,8 @@ function renderPrimitive(prim, key) {
3726
3728
  strokeWidth: p.strokeWidth,
3727
3729
  opacity: p.opacity ?? 1,
3728
3730
  strokeDasharray: p.dashArray,
3729
- ...partAttrs(p.part)
3731
+ ...partAttrs(p.part),
3732
+ children: p.title !== void 0 ? /* @__PURE__ */ jsx("title", { children: p.title }) : null
3730
3733
  },
3731
3734
  key
3732
3735
  );
@@ -3773,7 +3776,7 @@ function renderText(t, key) {
3773
3776
  );
3774
3777
  }
3775
3778
  function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3776
- const isVerticalLegend = vm.legendAnchor === "start";
3779
+ const legendItems = computeChartLegendLayout(vm);
3777
3780
  return /* @__PURE__ */ jsxs(
3778
3781
  "svg",
3779
3782
  {
@@ -3837,14 +3840,17 @@ function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3837
3840
  vm.categoryLabels.map((lbl, i) => renderText(lbl, `${elementId}-cl-${i}`)),
3838
3841
  vm.primitives.map((prim, i) => renderPrimitive(prim, `${elementId}-p-${i}`)),
3839
3842
  vm.dataLabels.map((dl, i) => renderText(dl, `${elementId}-dl-${i}`)),
3840
- vm.legend.map((entry, i) => {
3841
- const x = isVerticalLegend ? vm.legendX : vm.legendX - vm.legend.length * LEGEND_ITEM_WIDTH / 2 + i * LEGEND_ITEM_WIDTH;
3842
- const y = isVerticalLegend ? vm.legendY + i * 14 : vm.legendY;
3843
- return /* @__PURE__ */ jsxs("g", { transform: `translate(${x.toFixed(1)},${y.toFixed(1)})`, children: [
3844
- /* @__PURE__ */ jsx("rect", { x: 0, y: -7, width: 10, height: 10, rx: 2, fill: entry.color }),
3845
- /* @__PURE__ */ jsx("text", { x: 13, y: 3, fontSize: 9, fill: "#475569", children: entry.label })
3846
- ] }, `${elementId}-lg-${i}`);
3847
- })
3843
+ legendItems.map((item, i) => /* @__PURE__ */ jsxs(
3844
+ "g",
3845
+ {
3846
+ transform: `translate(${item.x.toFixed(1)},${item.y.toFixed(1)})`,
3847
+ children: [
3848
+ /* @__PURE__ */ jsx("rect", { x: 0, y: -7, width: 10, height: 10, rx: 2, fill: item.color }),
3849
+ /* @__PURE__ */ jsx("text", { x: 13, y: 3, fontSize: 9, fill: "#475569", children: item.label })
3850
+ ]
3851
+ },
3852
+ `${elementId}-lg-${i}`
3853
+ ))
3848
3854
  ]
3849
3855
  }
3850
3856
  );
Binary file
Binary file
@@ -1,12 +1,12 @@
1
- import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-DZHCLAH3.mjs';
2
- import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useLayoutSwitching, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-LP3Y4NXE.mjs';
3
- import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-QZV7XDQG.mjs';
4
- import { LOCALE_CATALOG, translationsEn } from './chunk-SQJBFMEX.mjs';
5
- import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, isElementActionable, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, isImageLikeElement, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, ensureChartInteractionStyles, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, themeToCssVars, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, setMasterViewBackgroundColor, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, styleShadowFilter, resolveDrawingShapeNodeId, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, dragValueForPart, withChartPointValue, dragAnchorViewY, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, RIBBON_SHAPE_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, annotationOverlayZIndex, presentationInkPath, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, normalizeSegments, createPlainNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, escapeHtml2, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, buildFontCatalog, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, generateTicks, rulerDragToGuidePosition, getCommentMarkerPosition, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, chartDataChangeType, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, resolveSlideSizeSelection, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, flattenTagCollections, formatCommentTimestamp, clearMotionPath, DIRECTIONAL_PRESETS, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-ZPNLWBED.mjs';
1
+ import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-2T7J57AC.mjs';
2
+ import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useLayoutSwitching, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-YMNURZ22.mjs';
3
+ import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-U2UIJRSW.mjs';
4
+ import { LOCALE_CATALOG, translationsEn } from './chunk-MZOZNBRO.mjs';
5
+ import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, isElementActionable, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, isImageLikeElement, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, ensureChartInteractionStyles, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, themeToCssVars, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, setMasterViewBackgroundColor, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, styleShadowFilter, resolveDrawingShapeNodeId, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, dragValueForPart, withChartPointValue, dragAnchorViewY, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, RIBBON_SHAPE_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, annotationOverlayZIndex, presentationInkPath, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, normalizeSegments, createPlainNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, escapeHtml2, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, buildFontCatalog, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, generateTicks, rulerDragToGuidePosition, getCommentMarkerPosition, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, evenColumnWidths, redistributeColumnWidth, evenRowHeights, chartDataChangeType, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, resolveSlideSizeSelection, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, flattenTagCollections, formatCommentTimestamp, clearMotionPath, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, reorderAnimationTo, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-QLELFH7A.mjs';
6
6
  import React14, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, Suspense, useLayoutEffect, useContext, Fragment as Fragment$1, useDeferredValue } from 'react';
7
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
8
8
  import { useTranslation } from 'react-i18next';
9
- import { LuRotateCw, LuMessageSquare, LuEyeOff, LuHistory, LuTrash2, LuSettings, LuX, LuCalendarDays, LuHash, LuText, LuCast, LuSave, LuUndo, LuRedo, LuSearch, LuShieldCheck, LuPlus, LuPanelLeftClose, LuStickyNote, LuMonitor, LuColumns2, LuPresentation, LuMinus, LuLayers, LuSettings2, LuClock, LuDownload, LuCheck, LuLock, LuEye, LuFileText, LuType, LuLoader, LuShieldAlert, LuSignature, LuInfo, LuTriangleAlert, LuPrinter, LuPenTool, LuBug, LuChevronUp, LuChevronDown, LuUpload, LuWifi, LuWifiOff, LuUsers, LuCopy, LuChevronLeft, LuChevronRight, LuPlay, LuPause, LuZoomOut, LuZoomIn, LuSpellCheck, LuFileDown, LuMenu, LuSparkles, LuShare2, LuPanelLeft, LuPanelRight, LuArrowLeft, LuFolderOpen, LuClipboardPaste, LuScissors, LuPaintbrush, LuSquare, LuImage, LuVideo, LuDatabase, LuAArrowUp, LuAArrowDown, LuRemoveFormatting, LuHighlighter, LuList, LuListOrdered, LuIndentDecrease, LuIndentIncrease, LuReplace, LuMousePointer2, LuShapes, LuPaintBucket, LuPenLine, LuPalette, LuPencil, LuStar, LuMoveRight, LuMousePointerClick, LuClock3, LuMonitorPlay, LuListVideo, LuCaptions, LuCamera, LuEraser, LuRotateCcw, LuCircleHelp, LuBookOpen, LuLanguages, LuGlobe, LuGitCompare, LuMessageSquarePlus, LuLockKeyhole, LuPanelTop, LuLayoutGrid, LuGrid3X3, LuPipette, LuRuler, LuMaximize2, LuCode, LuCaseSensitive, LuTimer, LuGripVertical, LuLoaderCircle, LuBold, LuItalic, LuUnderline, LuStrikethrough, LuLink, LuGrid2X2, LuCopyPlus, LuScan, LuMonitorOff, LuCirclePlay, LuCirclePause, LuArrowLeftRight, LuClipboardCopy, LuWand, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuFilePlus2, LuHouse, LuPackage, LuFileJson, LuBox, LuFileImage, LuUser, LuHardDrive, LuLogIn, LuLayoutTemplate, LuFolderPlus, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignJustify, LuColumns3, LuSpline, LuAlignHorizontalSpaceAround, LuAlignVerticalSpaceAround, LuGroup, LuUngroup, LuMove, LuRadio, LuLockOpen, LuArrowDown, LuArrowUp, LuArrowRight, LuReply, LuBookmark } from 'react-icons/lu';
9
+ import { LuRotateCw, LuMessageSquare, LuEyeOff, LuHistory, LuTrash2, LuSettings, LuX, LuCalendarDays, LuHash, LuText, LuCast, LuSave, LuUndo, LuRedo, LuSearch, LuShieldCheck, LuPlus, LuPanelLeftClose, LuStickyNote, LuMonitor, LuColumns2, LuPresentation, LuMinus, LuSettings2, LuLayers, LuClock, LuDownload, LuCheck, LuLock, LuEye, LuFileText, LuType, LuLoader, LuShieldAlert, LuSignature, LuInfo, LuTriangleAlert, LuPrinter, LuPenTool, LuBug, LuChevronUp, LuChevronDown, LuUpload, LuWifi, LuWifiOff, LuUsers, LuCopy, LuChevronLeft, LuChevronRight, LuPlay, LuPause, LuZoomOut, LuZoomIn, LuSpellCheck, LuFileDown, LuMenu, LuSparkles, LuShare2, LuPanelLeft, LuPanelRight, LuArrowLeft, LuFolderOpen, LuClipboardPaste, LuScissors, LuPaintbrush, LuSquare, LuImage, LuVideo, LuDatabase, LuAArrowUp, LuAArrowDown, LuRemoveFormatting, LuHighlighter, LuList, LuListOrdered, LuIndentDecrease, LuIndentIncrease, LuReplace, LuMousePointer2, LuShapes, LuPaintBucket, LuPenLine, LuPalette, LuPencil, LuStar, LuMoveRight, LuMousePointerClick, LuClock3, LuMonitorPlay, LuListVideo, LuCaptions, LuCamera, LuEraser, LuRotateCcw, LuCircleHelp, LuBookOpen, LuLanguages, LuGlobe, LuGitCompare, LuMessageSquarePlus, LuLockKeyhole, LuPanelTop, LuLayoutGrid, LuGrid3X3, LuPipette, LuRuler, LuMaximize2, LuCode, LuCaseSensitive, LuTimer, LuGripVertical, LuLoaderCircle, LuBold, LuItalic, LuUnderline, LuStrikethrough, LuLink, LuGrid2X2, LuCopyPlus, LuScan, LuMonitorOff, LuCirclePlay, LuCirclePause, LuArrowLeftRight, LuClipboardCopy, LuWand, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuFilePlus2, LuHouse, LuPackage, LuFileJson, LuBox, LuFileImage, LuUser, LuHardDrive, LuLogIn, LuLayoutTemplate, LuFolderPlus, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignJustify, LuColumns3, LuSpline, LuAlignHorizontalSpaceAround, LuAlignVerticalSpaceAround, LuGroup, LuUngroup, LuMove, LuRadio, LuLockOpen, LuArrowDown, LuArrowUp, LuArrowRight, LuReply, LuBookmark } from 'react-icons/lu';
10
10
 
11
11
  var ViewerThemeContext = createContext(void 0);
12
12
  function ViewerThemeProvider({ theme, children }) {
@@ -2574,7 +2574,7 @@ function FailedToLoad() {
2574
2574
  var LazyModel3DScene = React14.lazy(
2575
2575
  async () => {
2576
2576
  try {
2577
- return await import('./Model3DScene-PTCZUGIT.mjs');
2577
+ return await import('./Model3DScene-T6QOOVLN.mjs');
2578
2578
  } catch {
2579
2579
  return { default: FailedToLoad };
2580
2580
  }
@@ -5775,7 +5775,7 @@ function AccountPage() {
5775
5775
  return void 0;
5776
5776
  });
5777
5777
  };
5778
- const version = "2.19.6" ;
5778
+ const version = "2.19.7" ;
5779
5779
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
5780
5780
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
5781
5781
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -19397,12 +19397,9 @@ function useAnimationDragDrop({
19397
19397
  }, []);
19398
19398
  const reorderAnimations = useCallback(
19399
19399
  (sourceIndex, targetIndex) => {
19400
- updateAnimations((anims) => {
19401
- const sorted = [...anims].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
19402
- const [moved] = sorted.splice(sourceIndex, 1);
19403
- sorted.splice(targetIndex, 0, moved);
19404
- return sorted.map((a, i) => ({ ...a, order: i }));
19405
- });
19400
+ updateAnimations(
19401
+ (anims) => reorderAnimationTo(anims, sourceIndex, targetIndex)
19402
+ );
19406
19403
  },
19407
19404
  [updateAnimations]
19408
19405
  );
@@ -19436,18 +19433,9 @@ function useAnimationDragDrop({
19436
19433
  );
19437
19434
  const handleMoveDown = useCallback(
19438
19435
  (animIndex) => {
19439
- updateAnimations((anims) => {
19440
- const sorted = [...anims].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
19441
- if (animIndex >= sorted.length - 1) {
19442
- return anims;
19443
- }
19444
- const temp = sorted[animIndex + 1];
19445
- sorted[animIndex + 1] = sorted[animIndex];
19446
- sorted[animIndex] = temp;
19447
- return sorted.map((a, i) => ({ ...a, order: i }));
19448
- });
19436
+ reorderAnimations(animIndex, animIndex + 1);
19449
19437
  },
19450
- [updateAnimations]
19438
+ [reorderAnimations]
19451
19439
  );
19452
19440
  return {
19453
19441
  dragIndex,
@@ -19698,25 +19686,12 @@ function useAnimationHandlers({
19698
19686
  );
19699
19687
  const showDirectionPicker = hasAnimation && (DIRECTIONAL_PRESETS.has(selectedElementAnimation?.entrance ?? "") || DIRECTIONAL_PRESETS.has(selectedElementAnimation?.exit ?? ""));
19700
19688
  const timelineBarData = useMemo(() => {
19701
- if (sortedAnimations.length === 0) {
19702
- return [];
19703
- }
19704
- let maxEndMs = 0;
19705
- const entries = sortedAnimations.map((anim) => {
19706
- const startMs = anim.delayMs ?? 0;
19707
- const durationMs = anim.durationMs ?? 500;
19708
- const endMs = startMs + durationMs;
19709
- if (endMs > maxEndMs) {
19710
- maxEndMs = endMs;
19711
- }
19712
- return { anim, startMs, durationMs, endMs };
19689
+ const bars = buildAnimationTimelineBars(sortedAnimations);
19690
+ const barsByElementId = new Map(bars.map((bar) => [bar.elementId, bar]));
19691
+ return sortedAnimations.flatMap((anim) => {
19692
+ const bar = barsByElementId.get(anim.elementId);
19693
+ return bar ? [{ anim, leftPercent: bar.leftPercent, widthPercent: bar.widthPercent }] : [];
19713
19694
  });
19714
- const totalMs = Math.max(maxEndMs, 1);
19715
- return entries.map((entry) => ({
19716
- anim: entry.anim,
19717
- leftPercent: entry.startMs / totalMs * 100,
19718
- widthPercent: entry.durationMs / totalMs * 100
19719
- }));
19720
19695
  }, [sortedAnimations]);
19721
19696
  return {
19722
19697
  selectedElementAnimation,
@@ -25732,104 +25707,6 @@ function TextFormatToggle({
25732
25707
  }
25733
25708
  );
25734
25709
  }
25735
-
25736
- // src/viewer/components/inspector/smartart-node-limits.ts
25737
- var LAYOUT_BOUNDS = {
25738
- // A Venn diagram is typically drawn with 2-3 overlapping sets; beyond a
25739
- // handful of circles it becomes unreadable.
25740
- venn: { min: 2, max: 3 },
25741
- // A 2x2 matrix has exactly four quadrants.
25742
- matrix: { min: 4, max: 4 },
25743
- // Pyramids and funnels need at least two tiers to convey a hierarchy.
25744
- pyramid: { min: 2, max: 5 },
25745
- funnel: { min: 2, max: 5 },
25746
- // A target is a small set of concentric rings.
25747
- target: { min: 2, max: 5 },
25748
- // Gears mesh in small clusters.
25749
- gear: { min: 2, max: 3 },
25750
- // Cycles need at least three steps to read as a loop.
25751
- cycle: { min: 3 }
25752
- // Relationship / process / list / hierarchy / timeline are flexible but
25753
- // still need at least one node to exist.
25754
- };
25755
- var DEFAULT_BOUNDS = { min: 1 };
25756
- function getSmartArtNodeBounds(layout) {
25757
- if (!layout) {
25758
- return DEFAULT_BOUNDS;
25759
- }
25760
- return LAYOUT_BOUNDS[layout] ?? DEFAULT_BOUNDS;
25761
- }
25762
- function canAddTopLevelNode(layout, topLevelCount) {
25763
- const { max } = getSmartArtNodeBounds(layout);
25764
- return max === void 0 || topLevelCount < max;
25765
- }
25766
- function canRemoveTopLevelNode(layout, topLevelCount) {
25767
- const { min } = getSmartArtNodeBounds(layout);
25768
- return topLevelCount > min;
25769
- }
25770
- function describeSmartArtBounds(layout) {
25771
- const { min, max } = getSmartArtNodeBounds(layout);
25772
- if (min <= 1 && max === void 0) {
25773
- return void 0;
25774
- }
25775
- if (max === void 0) {
25776
- return `Works best with at least ${min} items.`;
25777
- }
25778
- if (min === max) {
25779
- return `This layout uses exactly ${max} items.`;
25780
- }
25781
- return `Works best with ${min} to ${max} items.`;
25782
- }
25783
-
25784
- // src/viewer/components/inspector/smartart-node-pane-handlers.ts
25785
- function addSiblingAfter(data, nodeId) {
25786
- const next = addSmartArtNode(data, "", nodeId);
25787
- if (next === data) {
25788
- return void 0;
25789
- }
25790
- const idx = next.nodes.findIndex((n) => n.id === nodeId);
25791
- const inserted = idx >= 0 ? next.nodes[idx + 1] : void 0;
25792
- return { data: next, focusNodeId: inserted?.id };
25793
- }
25794
- function removeEmptyNode(data, nodeId) {
25795
- if (data.nodes.length <= 1) {
25796
- return void 0;
25797
- }
25798
- const removedIndex = data.nodes.findIndex((n) => n.id === nodeId);
25799
- const next = removeSmartArtNode(data, nodeId);
25800
- if (next === data) {
25801
- return void 0;
25802
- }
25803
- const focusNode = next.nodes[Math.max(0, removedIndex - 1)];
25804
- return { data: next, focusNodeId: focusNode?.id };
25805
- }
25806
- function demote(data, nodeId) {
25807
- const next = demoteSmartArtNode(data, nodeId);
25808
- return next === data ? void 0 : next;
25809
- }
25810
- function promote(data, nodeId) {
25811
- const next = promoteSmartArtNode(data, nodeId);
25812
- return next === data ? void 0 : next;
25813
- }
25814
- function reorder(data, nodeId, direction) {
25815
- const next = reorderSmartArtNode(data, nodeId, direction);
25816
- return next === data ? void 0 : next;
25817
- }
25818
- function siblingIndex(data, nodeId) {
25819
- const node = data.nodes.find((n) => n.id === nodeId);
25820
- if (!node) {
25821
- return -1;
25822
- }
25823
- const siblings = data.nodes.filter((n) => n.parentId === node.parentId);
25824
- return siblings.findIndex((n) => n.id === nodeId);
25825
- }
25826
- function siblingCount(data, nodeId) {
25827
- const node = data.nodes.find((n) => n.id === nodeId);
25828
- if (!node) {
25829
- return 0;
25830
- }
25831
- return data.nodes.filter((n) => n.parentId === node.parentId).length;
25832
- }
25833
25710
  function ProcessThumb() {
25834
25711
  return /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 48 32", className: "w-full h-full", children: [
25835
25712
  /* @__PURE__ */ jsx("rect", { x: "2", y: "10", width: "10", height: "12", rx: "2", fill: "currentColor", opacity: 0.7 }),
@@ -26282,7 +26159,6 @@ var COLOR_SCHEMES = [
26282
26159
  "monochromatic2"
26283
26160
  ];
26284
26161
  var STYLE_OPTIONS = ["flat", "moderate", "intense"];
26285
- var TREE_CONNECTION_TYPES = /* @__PURE__ */ new Set(["parOf", "presParOf", void 0]);
26286
26162
  function SmartArtPropertiesPanel({
26287
26163
  smartArtData,
26288
26164
  canEdit,
@@ -26392,9 +26268,7 @@ function SmartArtPropertiesPanel({
26392
26268
  };
26393
26269
  const boundsHint = describeSmartArtBounds(layout);
26394
26270
  const addDisabled = !canEdit || !canAddTopLevelNode(layout, topLevelCount);
26395
- const extraConnections = (smartArtData.connections ?? []).filter(
26396
- (c) => !TREE_CONNECTION_TYPES.has(c.type)
26397
- );
26271
+ const extraConnections = classifyExtraConnections(smartArtData);
26398
26272
  const extraConnectionSummary = Array.from(
26399
26273
  new Set(extraConnections.map((c) => c.type ?? "unknown"))
26400
26274
  ).join(", ");
@@ -27177,20 +27051,7 @@ function TablePropertiesPanel({
27177
27051
  "aria-label": preset.label,
27178
27052
  className: "rounded border border-border hover:border-primary overflow-hidden h-10 transition-colors",
27179
27053
  onClick: () => {
27180
- const newRows = td.rows.map((row, ri) => ({
27181
- ...row,
27182
- cells: row.cells.map((cell) => ({
27183
- ...cell,
27184
- style: {
27185
- ...cell.style,
27186
- backgroundColor: ri === 0 && td.firstRowHeader ? preset.headerBg : td.bandedRows && (ri - (td.firstRowHeader ? 1 : 0)) % 2 === 0 ? preset.bandBg : void 0,
27187
- color: ri === 0 && td.firstRowHeader ? preset.headerFg : cell.style?.color,
27188
- bold: ri === 0 && td.firstRowHeader ? true : cell.style?.bold,
27189
- borderColor: preset.borderColor
27190
- }
27191
- }))
27192
- }));
27193
- updateTableData({ rows: newRows });
27054
+ updateTableData({ rows: applyTableStylePreset(td, preset) });
27194
27055
  },
27195
27056
  children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col h-full", children: [
27196
27057
  /* @__PURE__ */ jsx("div", { className: "flex-1", style: { backgroundColor: preset.headerBg } }),
@@ -27211,10 +27072,7 @@ function TablePropertiesPanel({
27211
27072
  className: BTN,
27212
27073
  disabled: !canEdit,
27213
27074
  onClick: () => {
27214
- const even = 1 / colCount;
27215
- updateTableData({
27216
- columnWidths: Array(colCount).fill(even)
27217
- });
27075
+ updateTableData({ columnWidths: evenColumnWidths(colCount) });
27218
27076
  },
27219
27077
  children: t("pptx.table.even")
27220
27078
  }
@@ -27233,24 +27091,9 @@ function TablePropertiesPanel({
27233
27091
  className: "flex-1 accent-primary",
27234
27092
  onChange: (e) => {
27235
27093
  const newPct = Number(e.target.value) / 100;
27236
- const oldPct = td.columnWidths[ci];
27237
- const diff = newPct - oldPct;
27238
- const newWidths = [...td.columnWidths];
27239
- newWidths[ci] = newPct;
27240
- const othersTotal = 1 - oldPct;
27241
- if (othersTotal > 0) {
27242
- for (let j = 0; j < newWidths.length; j++) {
27243
- if (j !== ci) {
27244
- newWidths[j] = Math.max(
27245
- 0.05,
27246
- td.columnWidths[j] - diff * (td.columnWidths[j] / othersTotal)
27247
- );
27248
- }
27249
- }
27250
- }
27251
- const sum = newWidths.reduce((a, b) => a + b, 0);
27252
- const normed = newWidths.map((v) => v / sum);
27253
- updateTableData({ columnWidths: normed });
27094
+ updateTableData({
27095
+ columnWidths: redistributeColumnWidth(td.columnWidths, ci, newPct)
27096
+ });
27254
27097
  }
27255
27098
  }
27256
27099
  ),
@@ -27270,10 +27113,7 @@ function TablePropertiesPanel({
27270
27113
  className: BTN,
27271
27114
  disabled: !canEdit,
27272
27115
  onClick: () => {
27273
- const avg = Math.round(td.rows.reduce((s, r) => s + (r.height ?? 32), 0) / rowCount);
27274
- updateTableData({
27275
- rows: td.rows.map((r) => ({ ...r, height: avg }))
27276
- });
27116
+ updateTableData({ rows: evenRowHeights(td.rows) });
27277
27117
  },
27278
27118
  children: t("pptx.table.even")
27279
27119
  }
@@ -34690,7 +34530,7 @@ ${url}`)) {
34690
34530
  var AiChatPanel = lazy(async () => {
34691
34531
  const [{ useChat }, { default: Panel }] = await Promise.all([
34692
34532
  import('@ai-sdk/react'),
34693
- import('./AiChatPanel-WVO66CKC.mjs')
34533
+ import('./AiChatPanel-S5UYFWT2.mjs')
34694
34534
  ]);
34695
34535
  function BoundAiChatPanel(props) {
34696
34536
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -36154,7 +35994,25 @@ var HeaderFooterPanel = ({
36154
35994
  ] })
36155
35995
  ] }) });
36156
35996
  };
35997
+ function isActionKey(key) {
35998
+ return key === "slides" || key === "insert" || key === "inspector" || key === "comments" || key === "notes";
35999
+ }
36000
+ var LABEL_BY_KEY = {
36001
+ slides: "pptx.sections.slides",
36002
+ insert: "pptx.mobileBar.insert",
36003
+ inspector: "pptx.field.format",
36004
+ comments: "pptx.toolbar.comments",
36005
+ notes: "pptx.notes.title"
36006
+ };
36007
+ var ICON_BY_KEY = {
36008
+ slides: LuLayers,
36009
+ insert: LuPlus,
36010
+ inspector: LuSettings2,
36011
+ comments: LuMessageSquare,
36012
+ notes: LuStickyNote
36013
+ };
36157
36014
  function MobileBottomBar({
36015
+ slideCount,
36158
36016
  onOpenSlides,
36159
36017
  onOpenInsert,
36160
36018
  onOpenInspector,
@@ -36163,54 +36021,38 @@ function MobileBottomBar({
36163
36021
  activeSheet,
36164
36022
  commentCount
36165
36023
  }) {
36166
- const { t } = useTranslation();
36167
- const actions = [
36168
- {
36169
- key: "slides",
36170
- label: "pptx.sections.slides",
36171
- icon: LuLayers,
36172
- onClick: onOpenSlides
36173
- },
36174
- {
36175
- key: "insert",
36176
- label: "pptx.mobileBar.insert",
36177
- icon: LuPlus,
36178
- onClick: onOpenInsert
36179
- },
36180
- {
36181
- key: "inspector",
36182
- label: "pptx.field.format",
36183
- icon: LuSettings2,
36184
- onClick: onOpenInspector
36185
- },
36186
- {
36187
- key: "comments",
36188
- label: "pptx.toolbar.comments",
36189
- icon: LuMessageSquare,
36190
- onClick: onOpenComments,
36191
- badge: commentCount
36192
- },
36193
- {
36194
- key: "notes",
36195
- label: "pptx.notes.title",
36196
- icon: LuStickyNote,
36197
- onClick: onToggleNotes
36198
- }
36199
- ];
36024
+ const { t } = useTranslation(), onClickByKey = {
36025
+ slides: onOpenSlides,
36026
+ insert: onOpenInsert,
36027
+ inspector: onOpenInspector,
36028
+ comments: onOpenComments,
36029
+ notes: onToggleNotes
36030
+ }, actions = buildBarActions({ slideCount }).filter((descriptor) => isActionKey(descriptor.key)).map((descriptor) => {
36031
+ const key = descriptor.key;
36032
+ return {
36033
+ key,
36034
+ label: LABEL_BY_KEY[key],
36035
+ icon: ICON_BY_KEY[key],
36036
+ onClick: onClickByKey[key],
36037
+ disabled: descriptor.disabled,
36038
+ badge: key === "comments" ? commentCount : void 0
36039
+ };
36040
+ });
36200
36041
  return /* @__PURE__ */ jsx(
36201
36042
  "nav",
36202
36043
  {
36203
36044
  "aria-label": t("pptx.mobileBar.ariaLabel"),
36204
36045
  className: "flex items-stretch justify-around border-t border-border bg-secondary/80 backdrop-blur supports-[backdrop-filter]:bg-secondary/60 pb-[max(env(safe-area-inset-bottom),0px)]",
36205
- children: actions.map(({ key, label, icon: Icon, onClick, badge }) => {
36046
+ children: actions.map(({ key, label, icon: Icon, onClick, disabled, badge }) => {
36206
36047
  const active = activeSheet === key;
36207
36048
  return /* @__PURE__ */ jsxs(
36208
36049
  "button",
36209
36050
  {
36210
36051
  type: "button",
36211
36052
  onClick,
36053
+ disabled,
36212
36054
  className: cn(
36213
- "relative flex flex-col items-center justify-center gap-0.5 flex-1 min-h-[56px] py-1.5 text-[10px] font-medium transition-colors active:scale-95",
36055
+ "relative flex flex-col items-center justify-center gap-0.5 flex-1 min-h-[56px] py-1.5 text-[10px] font-medium transition-colors active:scale-95 disabled:opacity-40 disabled:pointer-events-none",
36214
36056
  active ? "text-primary" : "text-muted-foreground hover:text-foreground"
36215
36057
  ),
36216
36058
  "aria-pressed": active,
@@ -36256,15 +36098,11 @@ function MobileChromeOverlay(props) {
36256
36098
  slideSectionGroups,
36257
36099
  canEdit,
36258
36100
  commentCount
36259
- } = props;
36260
- const { keyboardInset, isKeyboardOpen } = useKeyboardInsets();
36261
- const activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null;
36262
- const closeAllSheets = () => {
36101
+ } = props, { keyboardInset, isKeyboardOpen } = useKeyboardInsets(), activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
36263
36102
  s.setIsSlidesPaneOpen(false);
36264
36103
  s.setIsInspectorPaneOpen(false);
36265
36104
  s.setIsSlideNotesCollapsed(true);
36266
- };
36267
- const openSheet = (which) => {
36105
+ }, openSheet = (which) => {
36268
36106
  closeAllSheets();
36269
36107
  switch (which) {
36270
36108
  case "slides":
@@ -36327,6 +36165,7 @@ function MobileChromeOverlay(props) {
36327
36165
  children: /* @__PURE__ */ jsx(
36328
36166
  MobileBottomBar,
36329
36167
  {
36168
+ slideCount: slides.length,
36330
36169
  activeSheet,
36331
36170
  commentCount,
36332
36171
  onOpenSlides: () => s.isSlidesPaneOpen ? s.setIsSlidesPaneOpen(false) : openSheet("slides"),
Binary file
Binary file