pptx-react-viewer 3.13.0 → 3.15.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 (146) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/{AiChatPanel-E53JJRZX.js → AiChatPanel-7CWOJ3PS.js} +32 -32
  3. package/dist/AiChatPanel-7CWOJ3PS.js.br +0 -0
  4. package/dist/AiChatPanel-7CWOJ3PS.js.gz +0 -0
  5. package/dist/{AiChatPanel-JTXC5WWH.mjs → AiChatPanel-TBIAQSZ7.mjs} +11 -11
  6. package/dist/AiChatPanel-TBIAQSZ7.mjs.br +0 -0
  7. package/dist/AiChatPanel-TBIAQSZ7.mjs.gz +0 -0
  8. package/dist/{Area3DChartScene-JQ2VU73H.mjs → Area3DChartScene-6FFBYPHF.mjs} +1 -1
  9. package/dist/Area3DChartScene-6FFBYPHF.mjs.br +0 -0
  10. package/dist/Area3DChartScene-6FFBYPHF.mjs.gz +0 -0
  11. package/dist/{Area3DChartScene-J7G54OH4.js → Area3DChartScene-ZJYR6K66.js} +2 -2
  12. package/dist/Area3DChartScene-ZJYR6K66.js.br +0 -0
  13. package/dist/Area3DChartScene-ZJYR6K66.js.gz +0 -0
  14. package/dist/{Bar3DChartScene-5HC7LYBH.mjs → Bar3DChartScene-42MWINQX.mjs} +1 -1
  15. package/dist/Bar3DChartScene-42MWINQX.mjs.br +0 -0
  16. package/dist/Bar3DChartScene-42MWINQX.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-JV3A2P6O.js → Bar3DChartScene-JP3BXEZW.js} +2 -2
  18. package/dist/Bar3DChartScene-JP3BXEZW.js.br +0 -0
  19. package/dist/Bar3DChartScene-JP3BXEZW.js.gz +0 -0
  20. package/dist/{Line3DChartScene-7SN7TVKQ.js → Line3DChartScene-JK3AELXZ.js} +2 -2
  21. package/dist/Line3DChartScene-JK3AELXZ.js.br +0 -0
  22. package/dist/Line3DChartScene-JK3AELXZ.js.gz +0 -0
  23. package/dist/{Line3DChartScene-4ZAOOU7U.mjs → Line3DChartScene-YVCSJMWK.mjs} +1 -1
  24. package/dist/Line3DChartScene-YVCSJMWK.mjs.br +0 -0
  25. package/dist/Line3DChartScene-YVCSJMWK.mjs.gz +0 -0
  26. package/dist/{Model3DScene-GQANXXQD.js → Model3DScene-N6UIMN7T.js} +2 -2
  27. package/dist/Model3DScene-N6UIMN7T.js.br +0 -0
  28. package/dist/Model3DScene-N6UIMN7T.js.gz +0 -0
  29. package/dist/{Model3DScene-GWIBUQ2U.mjs → Model3DScene-OXWSYHHK.mjs} +1 -1
  30. package/dist/{Model3DScene-GWIBUQ2U.mjs.br → Model3DScene-OXWSYHHK.mjs.br} +0 -0
  31. package/dist/Model3DScene-OXWSYHHK.mjs.gz +0 -0
  32. package/dist/{PieChart3DScene-QPFDRMEA.js → PieChart3DScene-Q2Z3ECL4.js} +2 -2
  33. package/dist/PieChart3DScene-Q2Z3ECL4.js.br +0 -0
  34. package/dist/PieChart3DScene-Q2Z3ECL4.js.gz +0 -0
  35. package/dist/{PieChart3DScene-RDTOLFTD.mjs → PieChart3DScene-XK4ETZJC.mjs} +1 -1
  36. package/dist/PieChart3DScene-XK4ETZJC.mjs.br +0 -0
  37. package/dist/PieChart3DScene-XK4ETZJC.mjs.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-5JQCRWA5.mjs → SurfaceChart3DScene-KNWMKMOL.mjs} +1 -1
  39. package/dist/SurfaceChart3DScene-KNWMKMOL.mjs.br +0 -0
  40. package/dist/SurfaceChart3DScene-KNWMKMOL.mjs.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-JLYGC7QU.js → SurfaceChart3DScene-ULBUIF7T.js} +2 -2
  42. package/dist/SurfaceChart3DScene-ULBUIF7T.js.br +0 -0
  43. package/dist/SurfaceChart3DScene-ULBUIF7T.js.gz +0 -0
  44. package/dist/{chunk-TWUAZRCG.js → chunk-5KAMDV37.js} +143233 -141589
  45. package/dist/chunk-5KAMDV37.js.br +0 -0
  46. package/dist/chunk-5KAMDV37.js.gz +0 -0
  47. package/dist/{chunk-PKHTTHA2.mjs → chunk-6547ZWC7.mjs} +323 -171
  48. package/dist/chunk-6547ZWC7.mjs.br +0 -0
  49. package/dist/chunk-6547ZWC7.mjs.gz +0 -0
  50. package/dist/{chunk-HB7DJENT.mjs → chunk-AT4BJKON.mjs} +1 -1
  51. package/dist/chunk-AT4BJKON.mjs.br +0 -0
  52. package/dist/chunk-AT4BJKON.mjs.gz +0 -0
  53. package/dist/{chunk-M7SNS3DQ.mjs → chunk-C4Q4WYAJ.mjs} +275 -127
  54. package/dist/chunk-C4Q4WYAJ.mjs.br +0 -0
  55. package/dist/chunk-C4Q4WYAJ.mjs.gz +0 -0
  56. package/dist/{chunk-IVCYND7A.js → chunk-GLY4OPMY.js} +167 -167
  57. package/dist/chunk-GLY4OPMY.js.br +0 -0
  58. package/dist/chunk-GLY4OPMY.js.gz +0 -0
  59. package/dist/{chunk-Y3SA5H5H.mjs → chunk-J7Q7AGN7.mjs} +1 -1
  60. package/dist/chunk-J7Q7AGN7.mjs.br +0 -0
  61. package/dist/chunk-J7Q7AGN7.mjs.gz +0 -0
  62. package/dist/{chunk-H3GHGSGW.js → chunk-LAB7WX2N.js} +700 -551
  63. package/dist/chunk-LAB7WX2N.js.br +0 -0
  64. package/dist/chunk-LAB7WX2N.js.gz +0 -0
  65. package/dist/{chunk-UGVPKJSU.js → chunk-Q6CSZ7VM.js} +1568 -1416
  66. package/dist/chunk-Q6CSZ7VM.js.br +0 -0
  67. package/dist/chunk-Q6CSZ7VM.js.gz +0 -0
  68. package/dist/{chunk-G2Z7QULX.js → chunk-VVJTEFGP.js} +5 -5
  69. package/dist/chunk-VVJTEFGP.js.br +0 -0
  70. package/dist/chunk-VVJTEFGP.js.gz +0 -0
  71. package/dist/{chunk-TS2DHMBS.mjs → chunk-YNTZCMRI.mjs} +143222 -141589
  72. package/dist/chunk-YNTZCMRI.mjs.br +0 -0
  73. package/dist/chunk-YNTZCMRI.mjs.gz +0 -0
  74. package/dist/index.d.ts +54 -1
  75. package/dist/index.js +45 -45
  76. package/dist/index.js.br +0 -0
  77. package/dist/index.js.gz +0 -0
  78. package/dist/index.mjs +5 -5
  79. package/dist/index.mjs.br +0 -0
  80. package/dist/index.mjs.gz +0 -0
  81. package/dist/internals.d.ts +88 -2
  82. package/dist/internals.d.ts.map +1 -1
  83. package/dist/internals.js +78 -78
  84. package/dist/internals.js.br +0 -0
  85. package/dist/internals.js.gz +0 -0
  86. package/dist/internals.mjs +3 -3
  87. package/dist/internals.mjs.br +0 -0
  88. package/dist/internals.mjs.gz +0 -0
  89. package/dist/pptx-viewer.css +1 -1
  90. package/dist/pptx-viewer.css.br +0 -0
  91. package/dist/pptx-viewer.css.gz +0 -0
  92. package/dist/viewer/index.d.ts +54 -1
  93. package/dist/viewer/index.js +26 -26
  94. package/dist/viewer/index.js.br +0 -0
  95. package/dist/viewer/index.js.gz +0 -0
  96. package/dist/viewer/index.mjs +5 -5
  97. package/dist/viewer/index.mjs.br +0 -0
  98. package/dist/viewer/index.mjs.gz +0 -0
  99. package/package.json +3 -1
  100. package/dist/AiChatPanel-E53JJRZX.js.br +0 -0
  101. package/dist/AiChatPanel-E53JJRZX.js.gz +0 -0
  102. package/dist/AiChatPanel-JTXC5WWH.mjs.br +0 -0
  103. package/dist/AiChatPanel-JTXC5WWH.mjs.gz +0 -0
  104. package/dist/Area3DChartScene-J7G54OH4.js.br +0 -0
  105. package/dist/Area3DChartScene-J7G54OH4.js.gz +0 -0
  106. package/dist/Area3DChartScene-JQ2VU73H.mjs.br +0 -0
  107. package/dist/Area3DChartScene-JQ2VU73H.mjs.gz +0 -0
  108. package/dist/Bar3DChartScene-5HC7LYBH.mjs.br +0 -0
  109. package/dist/Bar3DChartScene-5HC7LYBH.mjs.gz +0 -0
  110. package/dist/Bar3DChartScene-JV3A2P6O.js.br +0 -0
  111. package/dist/Bar3DChartScene-JV3A2P6O.js.gz +0 -0
  112. package/dist/Line3DChartScene-4ZAOOU7U.mjs.br +0 -0
  113. package/dist/Line3DChartScene-4ZAOOU7U.mjs.gz +0 -0
  114. package/dist/Line3DChartScene-7SN7TVKQ.js.br +0 -0
  115. package/dist/Line3DChartScene-7SN7TVKQ.js.gz +0 -0
  116. package/dist/Model3DScene-GQANXXQD.js.br +0 -0
  117. package/dist/Model3DScene-GQANXXQD.js.gz +0 -0
  118. package/dist/Model3DScene-GWIBUQ2U.mjs.gz +0 -0
  119. package/dist/PieChart3DScene-QPFDRMEA.js.br +0 -0
  120. package/dist/PieChart3DScene-QPFDRMEA.js.gz +0 -0
  121. package/dist/PieChart3DScene-RDTOLFTD.mjs.br +0 -0
  122. package/dist/PieChart3DScene-RDTOLFTD.mjs.gz +0 -0
  123. package/dist/SurfaceChart3DScene-5JQCRWA5.mjs.br +0 -0
  124. package/dist/SurfaceChart3DScene-5JQCRWA5.mjs.gz +0 -0
  125. package/dist/SurfaceChart3DScene-JLYGC7QU.js.br +0 -0
  126. package/dist/SurfaceChart3DScene-JLYGC7QU.js.gz +0 -0
  127. package/dist/chunk-G2Z7QULX.js.br +0 -0
  128. package/dist/chunk-G2Z7QULX.js.gz +0 -0
  129. package/dist/chunk-H3GHGSGW.js.br +0 -0
  130. package/dist/chunk-H3GHGSGW.js.gz +0 -0
  131. package/dist/chunk-HB7DJENT.mjs.br +0 -0
  132. package/dist/chunk-HB7DJENT.mjs.gz +0 -0
  133. package/dist/chunk-IVCYND7A.js.br +0 -0
  134. package/dist/chunk-IVCYND7A.js.gz +0 -0
  135. package/dist/chunk-M7SNS3DQ.mjs.br +0 -0
  136. package/dist/chunk-M7SNS3DQ.mjs.gz +0 -0
  137. package/dist/chunk-PKHTTHA2.mjs.br +0 -0
  138. package/dist/chunk-PKHTTHA2.mjs.gz +0 -0
  139. package/dist/chunk-TS2DHMBS.mjs.br +0 -0
  140. package/dist/chunk-TS2DHMBS.mjs.gz +0 -0
  141. package/dist/chunk-TWUAZRCG.js.br +0 -0
  142. package/dist/chunk-TWUAZRCG.js.gz +0 -0
  143. package/dist/chunk-UGVPKJSU.js.br +0 -0
  144. package/dist/chunk-UGVPKJSU.js.gz +0 -0
  145. package/dist/chunk-Y3SA5H5H.mjs.br +0 -0
  146. package/dist/chunk-Y3SA5H5H.mjs.gz +0 -0
@@ -1,7 +1,7 @@
1
- import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-HB7DJENT.mjs';
2
- import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, ViewerOptionsContext, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, safePrompt, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, syncSelectionHandleOverlay, playAnimationSound } from './chunk-M7SNS3DQ.mjs';
3
- import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getImageSurfaceStyle, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getImageSurfaceMaskStyle, 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, STROKE_DASH_OPTIONS } from './chunk-Y3SA5H5H.mjs';
4
- import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, connectorWrapperTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, buildTextStyleOverrideCss, isElementRendered, resolveElementAriaAttributes, getImageEffectsOpacity, getImageEffectsFilter, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, resolveSlideSizeSelection, buildDeckSaveOptions, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, getEffectStyleSource, getBevelLightingSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, strokeOutlineViewBox, getElementTransform, resolveRevealedSmartArtNodes, resolveRevealedDrawingShapes, buildSmartArtA11y, canDrillDown, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, readEditableText, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, subscribeBarFacePicturePixelSamples, getBarFacePicturePixelSampleVersion, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, buildInkGroupStrokes, getInkReplayStyles, INK_REPLAY_KEYFRAMES, buildContentPartStrokes, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, themeToCssVars, shouldClearAutosaveCacheOnClose, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, elementIdSelector, 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, resolveRevealedDrawingShapeNodeIds, styleShadowFilter, buildChromeStyle, modelDataToBlobUrl, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, getInlineEditorSelection, findChartPartTarget, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, collectCoherent3DOffNodeIds, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, hasGlyphEnvelope, buildGlyphEnvelope, getWarpPath, isWedgeCalloutPresetShape, isElementActionable, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, resolveScreenTip, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, 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, clampPercent2, resolveDefaultPrintSettings, 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, advanceChartMarkDrag, advanceChartValueDrag, buildChartMarkDragGeometry, beginChartMarkDrag, beginChartValueDrag, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, getFragmentedTransitionDescriptor, SLIDE_TRANSITION_KEYFRAMES, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, 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, withChartPointValue, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_SHAPE_SWATCHES, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, readSoundFileAsDataUrl, applyTransitionSoundFile, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, applyTransitionStockSound, transitionStockSoundId, getEffectSoundAsset, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, getElementTransformWithoutRotation, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, buildLiveInkStrokeView, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, hasTiltData, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, hideChartSeries, restoreFilteredSeries, setDataLabelsRangeCache, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, shouldShowAccessibilitySection, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, EFFECT_SOUND_CATALOGUE, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, resolveDisplayedChartType, CHART_TYPE_OPTIONS, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyOleSheetCellEdit, getOleSheetGrid, applyOleDocumentParagraphEdit, getOleDocumentParagraphs, applyOleNestedDeckElementTextEdit, getOleNestedDeckDetail, replaceOleFile, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, createTableStyleEntry, addTableStyleToMap, deleteTableStyleFromMap, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, switchSmartArtLayout, mediaTrimEndMsFromSeconds, validateMediaTrimRange, SHAPE_QUICK_STYLES, quickStyleSwatchCss, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-TS2DHMBS.mjs';
1
+ import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-AT4BJKON.mjs';
2
+ import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, ViewerOptionsContext, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, safePrompt, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, getGlyphOutline, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, syncSelectionHandleOverlay, playAnimationSound } from './chunk-C4Q4WYAJ.mjs';
3
+ import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getImageSurfaceStyle, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getImageSurfaceMaskStyle, 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, STROKE_DASH_OPTIONS } from './chunk-J7Q7AGN7.mjs';
4
+ import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, connectorWrapperTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, buildTextStyleOverrideCss, isElementRendered, resolveElementAriaAttributes, getImageEffectsOpacity, getImageEffectsFilter, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, resolveSlideSizeSelection, buildDeckSaveOptions, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, getEffectStyleSource, getBevelLightingSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, strokeOutlineViewBox, getElementTransform, resolveRevealedSmartArtNodes, resolveRevealedDrawingShapes, buildSmartArtA11y, canDrillDown, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, readEditableText, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, subscribeBarFacePicturePixelSamples, getBarFacePicturePixelSampleVersion, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, buildInkGroupStrokes, getInkReplayStyles, INK_REPLAY_KEYFRAMES, buildContentPartStrokes, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, themeToCssVars, shouldClearAutosaveCacheOnClose, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, getDensePanelTouchTargetPx, shouldStickyActionRow, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, elementIdSelector, 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, resolveRevealedDrawingShapeNodeIds, styleShadowFilter, buildChromeStyle, modelDataToBlobUrl, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, getInlineEditorSelection, findChartPartTarget, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, collectCoherent3DOffNodeIds, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, hasGlyphEnvelope, buildGlyphEnvelope, getWarpPath, isWedgeCalloutPresetShape, isElementActionable, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, resolveScreenTip, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, 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, clampPercent2, resolveDefaultPrintSettings, 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, advanceChartMarkDrag, advanceChartValueDrag, buildChartMarkDragGeometry, beginChartMarkDrag, beginChartValueDrag, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, getFragmentedTransitionDescriptor, SLIDE_TRANSITION_KEYFRAMES, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, MIN_TOUCH_TARGET_PX, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, 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, withChartPointValue, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_SHAPE_SWATCHES, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, readSoundFileAsDataUrl, applyTransitionSoundFile, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, applyTransitionStockSound, transitionStockSoundId, getEffectSoundAsset, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, getElementTransformWithoutRotation, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, buildLiveInkStrokeView, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, hasTiltData, elementLockTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, hideChartSeries, restoreFilteredSeries, setDataLabelsRangeCache, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, shouldShowAccessibilitySection, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, EFFECT_SOUND_CATALOGUE, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, resolveDisplayedChartType, CHART_TYPE_OPTIONS, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyOleSheetCellEdit, getOleSheetGrid, applyOleDocumentParagraphEdit, getOleDocumentParagraphs, applyOleNestedDeckElementTextEdit, getOleNestedDeckDetail, replaceOleFile, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, createTableStyleEntry, addTableStyleToMap, deleteTableStyleFromMap, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, switchSmartArtLayout, mediaTrimEndMsFromSeconds, validateMediaTrimRange, SHAPE_QUICK_STYLES, quickStyleSwatchCss, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-YNTZCMRI.mjs';
5
5
  import { LOCALE_CATALOG, translationsEn } from './chunk-HMX3MQR7.mjs';
6
6
  import React20, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, Suspense, useLayoutEffect, useContext, useSyncExternalStore, useId, Fragment as Fragment$1, useDeferredValue } from 'react';
7
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -514,7 +514,7 @@ function FailedToLoad() {
514
514
  var LazyArea3DChartScene = React20.lazy(
515
515
  async () => {
516
516
  try {
517
- return await import('./Area3DChartScene-JQ2VU73H.mjs');
517
+ return await import('./Area3DChartScene-6FFBYPHF.mjs');
518
518
  } catch {
519
519
  return { default: FailedToLoad };
520
520
  }
@@ -583,7 +583,7 @@ function FailedToLoad2() {
583
583
  var LazyBar3DChartScene = React20.lazy(
584
584
  async () => {
585
585
  try {
586
- return await import('./Bar3DChartScene-5HC7LYBH.mjs');
586
+ return await import('./Bar3DChartScene-42MWINQX.mjs');
587
587
  } catch {
588
588
  return { default: FailedToLoad2 };
589
589
  }
@@ -686,7 +686,7 @@ function FailedToLoad3() {
686
686
  var LazyLine3DChartScene = React20.lazy(
687
687
  async () => {
688
688
  try {
689
- return await import('./Line3DChartScene-4ZAOOU7U.mjs');
689
+ return await import('./Line3DChartScene-YVCSJMWK.mjs');
690
690
  } catch {
691
691
  return { default: FailedToLoad3 };
692
692
  }
@@ -755,7 +755,7 @@ function FailedToLoad4() {
755
755
  var LazyPieChart3DScene = React20.lazy(
756
756
  async () => {
757
757
  try {
758
- return await import('./PieChart3DScene-RDTOLFTD.mjs');
758
+ return await import('./PieChart3DScene-XK4ETZJC.mjs');
759
759
  } catch {
760
760
  return { default: FailedToLoad4 };
761
761
  }
@@ -822,7 +822,7 @@ function FailedToLoad5() {
822
822
  var LazySurfaceChart3DScene = React20.lazy(
823
823
  async () => {
824
824
  try {
825
- return await import('./SurfaceChart3DScene-5JQCRWA5.mjs');
825
+ return await import('./SurfaceChart3DScene-KNWMKMOL.mjs');
826
826
  } catch {
827
827
  return { default: FailedToLoad5 };
828
828
  }
@@ -3181,7 +3181,7 @@ function FailedToLoad6() {
3181
3181
  var LazyModel3DScene = React20.lazy(
3182
3182
  async () => {
3183
3183
  try {
3184
- return await import('./Model3DScene-GWIBUQ2U.mjs');
3184
+ return await import('./Model3DScene-OXWSYHHK.mjs');
3185
3185
  } catch {
3186
3186
  return { default: FailedToLoad6 };
3187
3187
  }
@@ -4428,6 +4428,9 @@ function EnvelopeGlyph({
4428
4428
  glyph,
4429
4429
  tspanProps
4430
4430
  }) {
4431
+ if (glyph.outlinePath) {
4432
+ return /* @__PURE__ */ jsx("path", { d: glyph.outlinePath, fill: tspanProps.fill });
4433
+ }
4431
4434
  if (!glyph.slices || glyph.slices.length <= 1) {
4432
4435
  return /* @__PURE__ */ jsx("text", { x: glyph.x, y: glyph.y, transform: glyph.transform, ...tspanProps, children: glyph.char });
4433
4436
  }
@@ -4527,7 +4530,8 @@ function WarpedText({
4527
4530
  warpAdj,
4528
4531
  warpAdj2,
4529
4532
  paraIdx,
4530
- lineCount
4533
+ lineCount,
4534
+ getGlyphOutline
4531
4535
  );
4532
4536
  return /* @__PURE__ */ jsx(
4533
4537
  EnvelopeLine,
@@ -6706,7 +6710,7 @@ function AccountPage() {
6706
6710
  return void 0;
6707
6711
  });
6708
6712
  };
6709
- const version = "3.12.0" ;
6713
+ const version = "3.14.0" ;
6710
6714
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
6711
6715
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
6712
6716
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -9683,7 +9687,8 @@ function MobileSheet({
9683
9687
  "aria-label": "Close",
9684
9688
  onPointerDown: (event) => event.stopPropagation(),
9685
9689
  onClick: onClose,
9686
- className: "inline-flex h-8 w-8 items-center justify-center rounded text-xl text-muted-foreground hover:bg-accent hover:text-foreground",
9690
+ style: { minWidth: MIN_TOUCH_TARGET_PX, minHeight: MIN_TOUCH_TARGET_PX },
9691
+ className: "inline-flex items-center justify-center rounded text-xl text-muted-foreground hover:bg-accent hover:text-foreground",
9687
9692
  children: "\xD7"
9688
9693
  }
9689
9694
  )
@@ -20460,8 +20465,8 @@ function SelectionPane({
20460
20465
  }
20461
20466
  );
20462
20467
  }
20463
- var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px]";
20464
- var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px]";
20468
+ var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
20469
+ var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
20465
20470
  var ENTRANCE_PRESETS = ANIMATION_PRESET_OPTIONS.filter(
20466
20471
  (o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
20467
20472
  );
@@ -21297,6 +21302,9 @@ function AnimationPanel({
21297
21302
  onUpdateSlide
21298
21303
  }) {
21299
21304
  const { t } = useTranslation();
21305
+ const { viewportWidth } = useIsMobile();
21306
+ const directionBtnPx = Math.max(28, getDensePanelTouchTargetPx(viewportWidth));
21307
+ const fieldStyle = { minHeight: getDensePanelTouchTargetPx(viewportWidth) };
21300
21308
  const handlers = useAnimationHandlers({
21301
21309
  selectedElement,
21302
21310
  activeSlide,
@@ -21334,6 +21342,7 @@ function AnimationPanel({
21334
21342
  "button",
21335
21343
  {
21336
21344
  type: "button",
21345
+ style: { minHeight: getDensePanelTouchTargetPx(viewportWidth) },
21337
21346
  className: "flex items-center gap-1 text-[10px] text-primary hover:text-primary/80 transition-colors",
21338
21347
  onClick: handlePreviewClick,
21339
21348
  title: t("pptx.animation.preview"),
@@ -21354,6 +21363,7 @@ function AnimationPanel({
21354
21363
  onChange: handleEntranceChange,
21355
21364
  disabled: !canEdit,
21356
21365
  className: SELECT_CLS,
21366
+ style: fieldStyle,
21357
21367
  children: [
21358
21368
  /* @__PURE__ */ jsx("option", { value: "none", children: t("pptx.animation.none") }),
21359
21369
  ENTRANCE_PRESETS.map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: t(`pptx.animation.preset.${o.value}`) }, o.value))
@@ -21371,6 +21381,7 @@ function AnimationPanel({
21371
21381
  onChange: handleEmphasisChange,
21372
21382
  disabled: !canEdit,
21373
21383
  className: SELECT_CLS,
21384
+ style: fieldStyle,
21374
21385
  children: [
21375
21386
  /* @__PURE__ */ jsx("option", { value: "none", children: t("pptx.animation.none") }),
21376
21387
  EMPHASIS_PRESETS.map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: t(`pptx.animation.preset.${o.value}`) }, o.value))
@@ -21388,6 +21399,7 @@ function AnimationPanel({
21388
21399
  onChange: handleExitChange,
21389
21400
  disabled: !canEdit,
21390
21401
  className: SELECT_CLS,
21402
+ style: fieldStyle,
21391
21403
  children: [
21392
21404
  /* @__PURE__ */ jsx("option", { value: "none", children: t("pptx.animation.none") }),
21393
21405
  EXIT_PRESETS.map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: t(`pptx.animation.preset.${o.value}`) }, o.value))
@@ -21414,8 +21426,9 @@ function AnimationPanel({
21414
21426
  {
21415
21427
  type: "button",
21416
21428
  disabled: !canEdit,
21429
+ style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
21417
21430
  className: cn(
21418
- "flex items-center justify-center w-7 h-7 rounded border transition-colors",
21431
+ "flex items-center justify-center rounded border transition-colors",
21419
21432
  isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
21420
21433
  ),
21421
21434
  onClick: () => handleDirectionChange(opt.value),
@@ -21436,6 +21449,7 @@ function AnimationPanel({
21436
21449
  onChange: handleSequenceChange,
21437
21450
  disabled: !canEdit,
21438
21451
  className: SELECT_CLS,
21452
+ style: fieldStyle,
21439
21453
  children: SEQUENCE_OPTIONS.map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
21440
21454
  }
21441
21455
  )
@@ -21472,6 +21486,7 @@ function AnimationPanel({
21472
21486
  onChange: handleTriggerChange,
21473
21487
  disabled: !canEdit,
21474
21488
  className: SELECT_CLS,
21489
+ style: fieldStyle,
21475
21490
  children: TRIGGER_OPTIONS.map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
21476
21491
  }
21477
21492
  )
@@ -21486,6 +21501,7 @@ function AnimationPanel({
21486
21501
  onChange: handleTriggerShapeChange,
21487
21502
  disabled: !canEdit,
21488
21503
  className: SELECT_CLS,
21504
+ style: fieldStyle,
21489
21505
  children: [
21490
21506
  /* @__PURE__ */ jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
21491
21507
  activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsx("option", { value: el.id, children: getElementLabel(el) }, el.id))
@@ -21505,7 +21521,8 @@ function AnimationPanel({
21505
21521
  disabled: !canEdit,
21506
21522
  value: selectedElementAnimation?.durationMs ?? 450,
21507
21523
  onChange: handleDurationChange,
21508
- className: INPUT_CLS
21524
+ className: INPUT_CLS,
21525
+ style: fieldStyle
21509
21526
  }
21510
21527
  )
21511
21528
  ] }),
@@ -21521,7 +21538,8 @@ function AnimationPanel({
21521
21538
  disabled: !canEdit,
21522
21539
  value: selectedElementAnimation?.delayMs ?? 0,
21523
21540
  onChange: handleDelayChange,
21524
- className: INPUT_CLS
21541
+ className: INPUT_CLS,
21542
+ style: fieldStyle
21525
21543
  }
21526
21544
  )
21527
21545
  ] }),
@@ -21535,6 +21553,7 @@ function AnimationPanel({
21535
21553
  onChange: handleTimingCurveChange,
21536
21554
  disabled: !canEdit,
21537
21555
  className: SELECT_CLS,
21556
+ style: fieldStyle,
21538
21557
  children: TIMING_CURVE_OPTIONS.map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
21539
21558
  }
21540
21559
  )
@@ -21551,7 +21570,8 @@ function AnimationPanel({
21551
21570
  disabled: !canEdit,
21552
21571
  value: selectedElementAnimation?.repeatCount ?? 1,
21553
21572
  onChange: handleRepeatCountChange,
21554
- className: INPUT_CLS
21573
+ className: INPUT_CLS,
21574
+ style: fieldStyle
21555
21575
  }
21556
21576
  )
21557
21577
  ] }),
@@ -21565,6 +21585,7 @@ function AnimationPanel({
21565
21585
  onChange: handleRepeatModeChange,
21566
21586
  disabled: !canEdit,
21567
21587
  className: SELECT_CLS,
21588
+ style: fieldStyle,
21568
21589
  children: REPEAT_MODE_OPTIONS.map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
21569
21590
  }
21570
21591
  )
@@ -21587,8 +21608,8 @@ var INSPECTOR_TABS = [
21587
21608
  ];
21588
21609
  var HEADING = "text-[11px] uppercase tracking-wide text-muted-foreground";
21589
21610
  var CARD = "rounded border border-border bg-card p-2 space-y-2";
21590
- var INPUT = "flex-1 bg-muted border border-border rounded px-1.5 py-0.5 w-full";
21591
- var BTN = "rounded bg-muted hover:bg-accent px-2 py-1 text-[11px] transition-colors";
21611
+ var INPUT = "flex-1 bg-muted border border-border rounded px-1.5 py-0.5 w-full max-md:min-h-[44px]!";
21612
+ var BTN = "rounded bg-muted hover:bg-accent px-2 py-1 text-[11px] transition-colors max-md:min-h-[44px]! max-md:min-w-[44px]!";
21592
21613
  var POS_FIELDS = [
21593
21614
  ["X", "x"],
21594
21615
  ["Y", "y"],
@@ -21806,8 +21827,8 @@ function ActionTriggerSection({
21806
21827
  // src/viewer/components/inspector/chart-panel-constants.ts
21807
21828
  var HEADING2 = "text-[11px] uppercase tracking-wide text-muted-foreground";
21808
21829
  var CARD2 = "rounded border border-border bg-card p-2 space-y-2";
21809
- var INPUT2 = "flex-1 bg-muted border border-border rounded px-1.5 py-0.5 w-full";
21810
- var BTN2 = "rounded bg-muted hover:bg-accent px-2 py-1 text-[11px] transition-colors";
21830
+ var INPUT2 = "flex-1 bg-muted border border-border rounded px-1.5 py-0.5 w-full max-md:min-h-[44px]!";
21831
+ var BTN2 = "rounded bg-muted hover:bg-accent px-2 py-1 text-[11px] transition-colors max-md:min-h-[44px]!";
21811
21832
  var CELL_INPUT = "bg-muted border border-border rounded px-1 py-0.5 text-[11px] w-full text-center";
21812
21833
  var GROUPING_OPTIONS = [
21813
21834
  { value: "clustered", labelKey: "pptx.chart.groupingClustered" },
@@ -22301,6 +22322,11 @@ function ChartDataGrid({
22301
22322
  }) {
22302
22323
  const { t } = useTranslation();
22303
22324
  const highlightRef = useRef(null);
22325
+ const { viewportWidth } = useIsMobile();
22326
+ const gridPlan = getDenseGridLayoutPlan(viewportWidth);
22327
+ const touchTargetPx = getDensePanelTouchTargetPx(viewportWidth);
22328
+ const rowHeaderClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10 bg-card" : "";
22329
+ const iconBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
22304
22330
  useEffect(() => {
22305
22331
  highlightRef.current?.scrollIntoView({ block: "nearest", inline: "nearest" });
22306
22332
  }, [highlightCell?.seriesIndex, highlightCell?.pointIndex]);
@@ -22315,7 +22341,8 @@ function ChartDataGrid({
22315
22341
  "button",
22316
22342
  {
22317
22343
  type: "button",
22318
- className: BTN2,
22344
+ className: `${BTN2} inline-flex items-center justify-center`,
22345
+ style: iconBtnStyle,
22319
22346
  title: t("pptx.chart.addCategory"),
22320
22347
  onClick: onAddCategory,
22321
22348
  children: [
@@ -22328,7 +22355,8 @@ function ChartDataGrid({
22328
22355
  "button",
22329
22356
  {
22330
22357
  type: "button",
22331
- className: BTN2,
22358
+ className: `${BTN2} inline-flex items-center justify-center`,
22359
+ style: iconBtnStyle,
22332
22360
  title: t("pptx.chart.addSeries"),
22333
22361
  onClick: onAddSeries,
22334
22362
  children: [
@@ -22345,35 +22373,45 @@ function ChartDataGrid({
22345
22373
  "th",
22346
22374
  {
22347
22375
  "aria-label": t("pptx.chart.categories"),
22348
- className: "text-muted-foreground p-0.5 text-left min-w-[60px]"
22376
+ className: `text-muted-foreground p-0.5 text-left ${rowHeaderClass}`,
22377
+ style: { minWidth: gridPlan.minCellWidthPx }
22349
22378
  }
22350
22379
  ),
22351
- series.map((s, si) => /* @__PURE__ */ jsx("th", { className: "p-0.5 font-normal min-w-[72px]", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5", children: [
22352
- /* @__PURE__ */ jsx(
22353
- "input",
22354
- {
22355
- type: "text",
22356
- disabled: !canEdit,
22357
- ref: isSeriesHighlight(si) ? highlightRef : null,
22358
- className: `${CELL_INPUT}${isSeriesHighlight(si) ? highlightClass : ""}`,
22359
- value: s.name,
22360
- onChange: (e) => onUpdateSeries(si, { name: e.target.value })
22361
- }
22362
- ),
22363
- canEdit && series.length > 1 && /* @__PURE__ */ jsx(
22364
- "button",
22365
- {
22366
- type: "button",
22367
- className: "text-muted-foreground hover:text-red-400 shrink-0",
22368
- title: t("pptx.chart.removeSeries"),
22369
- onClick: () => onRemoveSeries(si),
22370
- children: /* @__PURE__ */ jsx(LuTrash2, { className: "w-3 h-3" })
22371
- }
22372
- )
22373
- ] }) }, si))
22380
+ series.map((s, si) => /* @__PURE__ */ jsx(
22381
+ "th",
22382
+ {
22383
+ className: "p-0.5 font-normal",
22384
+ style: { minWidth: gridPlan.minCellWidthPx },
22385
+ children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5", children: [
22386
+ /* @__PURE__ */ jsx(
22387
+ "input",
22388
+ {
22389
+ type: "text",
22390
+ disabled: !canEdit,
22391
+ ref: isSeriesHighlight(si) ? highlightRef : null,
22392
+ className: `${CELL_INPUT}${isSeriesHighlight(si) ? highlightClass : ""}`,
22393
+ value: s.name,
22394
+ onChange: (e) => onUpdateSeries(si, { name: e.target.value })
22395
+ }
22396
+ ),
22397
+ canEdit && series.length > 1 && /* @__PURE__ */ jsx(
22398
+ "button",
22399
+ {
22400
+ type: "button",
22401
+ className: "text-muted-foreground hover:text-red-400 shrink-0 inline-flex items-center justify-center",
22402
+ style: iconBtnStyle,
22403
+ title: t("pptx.chart.removeSeries"),
22404
+ onClick: () => onRemoveSeries(si),
22405
+ children: /* @__PURE__ */ jsx(LuTrash2, { className: "w-3 h-3" })
22406
+ }
22407
+ )
22408
+ ] })
22409
+ },
22410
+ si
22411
+ ))
22374
22412
  ] }) }),
22375
22413
  /* @__PURE__ */ jsx("tbody", { children: categories.map((cat, ci) => /* @__PURE__ */ jsxs("tr", { children: [
22376
- /* @__PURE__ */ jsx("td", { className: "p-0.5", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5", children: [
22414
+ /* @__PURE__ */ jsx("td", { className: `p-0.5 ${rowHeaderClass}`, children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5", children: [
22377
22415
  /* @__PURE__ */ jsx(
22378
22416
  "input",
22379
22417
  {
@@ -22388,7 +22426,8 @@ function ChartDataGrid({
22388
22426
  "button",
22389
22427
  {
22390
22428
  type: "button",
22391
- className: "text-muted-foreground hover:text-red-400 shrink-0",
22429
+ className: "text-muted-foreground hover:text-red-400 shrink-0 inline-flex items-center justify-center",
22430
+ style: iconBtnStyle,
22392
22431
  title: t("pptx.chart.removeCategory"),
22393
22432
  onClick: () => onRemoveCategory(ci),
22394
22433
  children: /* @__PURE__ */ jsx(LuTrash2, { className: "w-3 h-3" })
@@ -22638,7 +22677,7 @@ function ChartDataPointOptions({
22638
22677
  type: "button",
22639
22678
  disabled: !canEdit,
22640
22679
  title: t("pptx.chart.pointFillClear"),
22641
- className: "text-muted-foreground hover:text-foreground",
22680
+ className: "text-muted-foreground hover:text-foreground max-md:min-w-[44px]! max-md:min-h-[44px]! inline-flex items-center justify-center",
22642
22681
  onClick: () => onSetPointFill(seriesIndex, idx, null),
22643
22682
  children: "\xD7"
22644
22683
  }
@@ -24152,6 +24191,13 @@ function OleEditorDialog({
24152
24191
  const [deckSlides, setDeckSlides] = useState(void 0);
24153
24192
  const [loading, setLoading] = useState(false);
24154
24193
  const [saveError, setSaveError] = useState(false);
24194
+ const mountedRef = useRef(true);
24195
+ useEffect(
24196
+ () => () => {
24197
+ mountedRef.current = false;
24198
+ },
24199
+ []
24200
+ );
24155
24201
  useEffect(() => {
24156
24202
  if (!isOpen || !descriptor.contentTab) {
24157
24203
  return;
@@ -24200,9 +24246,13 @@ function OleEditorDialog({
24200
24246
  const updated = await applyOleSheetCellEdit(element, { row, col, value });
24201
24247
  commit(updated);
24202
24248
  const refreshed = await getOleSheetGrid(updated);
24203
- setGrid(refreshed);
24249
+ if (mountedRef.current) {
24250
+ setGrid(refreshed);
24251
+ }
24204
24252
  } catch {
24205
- setSaveError(true);
24253
+ if (mountedRef.current) {
24254
+ setSaveError(true);
24255
+ }
24206
24256
  }
24207
24257
  },
24208
24258
  [element, commit]
@@ -24213,9 +24263,13 @@ function OleEditorDialog({
24213
24263
  const updated = await applyOleDocumentParagraphEdit(element, index, text);
24214
24264
  commit(updated);
24215
24265
  const refreshed = await getOleDocumentParagraphs(updated);
24216
- setParagraphs(refreshed);
24266
+ if (mountedRef.current) {
24267
+ setParagraphs(refreshed);
24268
+ }
24217
24269
  } catch {
24218
- setSaveError(true);
24270
+ if (mountedRef.current) {
24271
+ setSaveError(true);
24272
+ }
24219
24273
  }
24220
24274
  },
24221
24275
  [element, commit]
@@ -24231,9 +24285,13 @@ function OleEditorDialog({
24231
24285
  );
24232
24286
  commit(updated);
24233
24287
  const refreshed = await getOleNestedDeckDetail(updated);
24234
- setDeckSlides(refreshed);
24288
+ if (mountedRef.current) {
24289
+ setDeckSlides(refreshed);
24290
+ }
24235
24291
  } catch {
24236
- setSaveError(true);
24292
+ if (mountedRef.current) {
24293
+ setSaveError(true);
24294
+ }
24237
24295
  }
24238
24296
  },
24239
24297
  [element, commit]
@@ -24244,9 +24302,13 @@ function OleEditorDialog({
24244
24302
  const bytes = new Uint8Array(await file.arrayBuffer());
24245
24303
  const updated = await replaceOleFile(element, bytes, file.name);
24246
24304
  commit(updated);
24247
- onClose();
24305
+ if (mountedRef.current) {
24306
+ onClose();
24307
+ }
24248
24308
  } catch {
24249
- setSaveError(true);
24309
+ if (mountedRef.current) {
24310
+ setSaveError(true);
24311
+ }
24250
24312
  }
24251
24313
  },
24252
24314
  [element, commit, onClose]
@@ -24347,7 +24409,7 @@ function OleEditorDialog({
24347
24409
  }
24348
24410
 
24349
24411
  // src/viewer/components/inspector/element-properties-constants.ts
24350
- var SELECT_CLS2 = "bg-muted border border-border rounded px-2 py-1";
24412
+ var SELECT_CLS2 = "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!";
24351
24413
  var BTN_CLS = "inline-flex items-center justify-center gap-1 rounded bg-muted hover:bg-accent px-2 py-1";
24352
24414
  var END_LABEL_KEYS = {
24353
24415
  Start: {
@@ -26664,7 +26726,7 @@ var VISUAL_EFFECT_CONFIGS = [
26664
26726
 
26665
26727
  // src/viewer/components/inspector/FillStrokeHelpers.tsx
26666
26728
  var EFFECT_CONFIGS = [...SHADOW_EFFECT_CONFIGS, ...VISUAL_EFFECT_CONFIGS];
26667
- var SEL2 = "bg-muted border border-border rounded px-2 py-1";
26729
+ var SEL2 = "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!";
26668
26730
  var NUM2 = SEL2;
26669
26731
  var RNG = "accent-primary";
26670
26732
  var SWATCH = "h-4 w-4 rounded border border-border";
@@ -26838,8 +26900,9 @@ function ColorPickerRow({
26838
26900
  {
26839
26901
  type: "button",
26840
26902
  disabled,
26841
- className: "h-8 w-8 flex items-center justify-center rounded border border-border bg-muted hover:bg-accent disabled:opacity-40 disabled:cursor-not-allowed transition-colors",
26903
+ className: "h-8 w-8 max-md:h-11 max-md:w-11 flex items-center justify-center rounded border border-border bg-muted hover:bg-accent disabled:opacity-40 disabled:cursor-not-allowed transition-colors",
26842
26904
  title: t("pptx.fillStroke.eyedropperTooltip"),
26905
+ "aria-label": t("pptx.fillStroke.eyedropperTooltip"),
26843
26906
  onClick: (e) => {
26844
26907
  e.preventDefault();
26845
26908
  void handleEyedropper();
@@ -27150,6 +27213,8 @@ function QuickStylesGallery({
27150
27213
  onUpdateShapeStyle
27151
27214
  }) {
27152
27215
  const { t } = useTranslation();
27216
+ const { viewportWidth } = useIsMobile();
27217
+ const swatchMinHeight = getDensePanelTouchTargetPx(viewportWidth);
27153
27218
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
27154
27219
  /* @__PURE__ */ jsx("span", { className: LBL2, children: t("pptx.shape.quickStyles") }),
27155
27220
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-6 gap-1", children: SHAPE_QUICK_STYLES.map((qs, idx) => /* @__PURE__ */ jsx(
@@ -27158,8 +27223,8 @@ function QuickStylesGallery({
27158
27223
  type: "button",
27159
27224
  title: qs.name,
27160
27225
  "aria-label": qs.name,
27161
- className: "h-7 w-full rounded border border-border hover:border-primary transition-colors",
27162
- style: quickStyleSwatchCss(qs),
27226
+ className: "w-full rounded border border-border hover:border-primary transition-colors",
27227
+ style: { ...quickStyleSwatchCss(qs), minHeight: swatchMinHeight },
27163
27228
  onClick: () => onUpdateShapeStyle(qs.style)
27164
27229
  },
27165
27230
  idx
@@ -27241,7 +27306,7 @@ function StrokeEffectsSection({
27241
27306
  onChange: (e) => onUpdateShapeStyle({
27242
27307
  strokeDash: e.target.value
27243
27308
  }),
27244
- className: "bg-muted border border-border rounded px-2 py-1",
27309
+ className: SEL2,
27245
27310
  children: STROKE_DASH_OPTIONS.map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
27246
27311
  }
27247
27312
  )
@@ -27254,7 +27319,7 @@ function StrokeEffectsSection({
27254
27319
  type: "button",
27255
27320
  title: t(opt.i18nKey),
27256
27321
  "aria-label": t(opt.i18nKey),
27257
- className: `h-10 px-2 rounded border transition-all ${(style?.compoundLine || "sng") === opt.value ? "border-primary bg-accent" : "border-border hover:border-primary/50"}`,
27322
+ className: `h-10 max-md:h-11 px-2 rounded border transition-all ${(style?.compoundLine || "sng") === opt.value ? "border-primary bg-accent" : "border-border hover:border-primary/50"}`,
27258
27323
  onClick: () => onUpdateShapeStyle({
27259
27324
  compoundLine: opt.value
27260
27325
  }),
@@ -27419,7 +27484,7 @@ function FillStrokeProperties({
27419
27484
  ] })
27420
27485
  ] });
27421
27486
  }
27422
- var INPUT_CLS2 = "bg-muted border border-border rounded px-2 py-1";
27487
+ var INPUT_CLS2 = "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!";
27423
27488
  var COLOR_CLS = "h-8 bg-muted border border-border rounded px-1";
27424
27489
  function Text3DProperties({
27425
27490
  ts,
@@ -27609,7 +27674,7 @@ function BevelSection({
27609
27674
  ] })
27610
27675
  ] });
27611
27676
  }
27612
- var INPUT_CLS3 = "bg-muted border border-border rounded px-2 py-1";
27677
+ var INPUT_CLS3 = "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!";
27613
27678
  var COLOR_CLS2 = "h-8 bg-muted border border-border rounded px-1";
27614
27679
  var UNDERLINE_STYLES = [
27615
27680
  ["sng", "Single"],
@@ -28146,7 +28211,7 @@ function TextWarpGallery({
28146
28211
  "button",
28147
28212
  {
28148
28213
  type: "button",
28149
- className: "flex w-full items-center justify-between text-[11px] uppercase tracking-wide text-muted-foreground",
28214
+ className: "flex w-full items-center justify-between text-[11px] uppercase tracking-wide text-muted-foreground max-md:min-h-[44px]!",
28150
28215
  onClick: () => setExpanded(!expanded),
28151
28216
  children: [
28152
28217
  /* @__PURE__ */ jsx("span", { children: t("pptx.textWarp.title") }),
@@ -28366,7 +28431,7 @@ function TextFormatToggle({
28366
28431
  type: "button",
28367
28432
  disabled,
28368
28433
  className: cn(
28369
- "px-2 py-1 rounded text-[11px] transition-colors",
28434
+ "px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
28370
28435
  italic && "italic",
28371
28436
  underline && "underline",
28372
28437
  active ? "bg-primary text-white" : "bg-muted hover:bg-accent"
@@ -29050,6 +29115,11 @@ function TableDataGrid({
29050
29115
  }) {
29051
29116
  const { t } = useTranslation();
29052
29117
  const grid = buildTableDataGrid(tableElement);
29118
+ const { viewportWidth } = useIsMobile();
29119
+ const gridPlan = getDenseGridLayoutPlan(viewportWidth);
29120
+ const touchTargetPx = getDensePanelTouchTargetPx(viewportWidth);
29121
+ const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
29122
+ const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
29053
29123
  if (grid.rowCount === 0 || grid.colCount === 0) {
29054
29124
  return null;
29055
29125
  }
@@ -29067,7 +29137,8 @@ function TableDataGrid({
29067
29137
  "button",
29068
29138
  {
29069
29139
  type: "button",
29070
- className: BTN,
29140
+ className: `${BTN} inline-flex items-center justify-center`,
29141
+ style: touchBtnStyle,
29071
29142
  title: t("pptx.tableDataEditor.addRowTitle"),
29072
29143
  onClick: () => commit(appendTableElementRow(tableElement)),
29073
29144
  children: t("pptx.tableDataEditor.addRowLabel")
@@ -29077,7 +29148,8 @@ function TableDataGrid({
29077
29148
  "button",
29078
29149
  {
29079
29150
  type: "button",
29080
- className: BTN,
29151
+ className: `${BTN} inline-flex items-center justify-center`,
29152
+ style: touchBtnStyle,
29081
29153
  disabled: !grid.canRemoveRow,
29082
29154
  title: t("pptx.tableDataEditor.removeRowTitle"),
29083
29155
  onClick: () => commit(removeLastTableElementRow(tableElement)),
@@ -29088,7 +29160,8 @@ function TableDataGrid({
29088
29160
  "button",
29089
29161
  {
29090
29162
  type: "button",
29091
- className: BTN,
29163
+ className: `${BTN} inline-flex items-center justify-center`,
29164
+ style: touchBtnStyle,
29092
29165
  title: t("pptx.tableDataEditor.addColumnTitle"),
29093
29166
  onClick: () => commit(appendTableElementColumn(tableElement)),
29094
29167
  children: t("pptx.tableDataEditor.addColumnLabel")
@@ -29098,7 +29171,8 @@ function TableDataGrid({
29098
29171
  "button",
29099
29172
  {
29100
29173
  type: "button",
29101
- className: BTN,
29174
+ className: `${BTN} inline-flex items-center justify-center`,
29175
+ style: touchBtnStyle,
29102
29176
  disabled: !grid.canRemoveColumn,
29103
29177
  title: t("pptx.tableDataEditor.removeColumnTitle"),
29104
29178
  onClick: () => commit(removeLastTableElementColumn(tableElement)),
@@ -29109,7 +29183,13 @@ function TableDataGrid({
29109
29183
  ] }),
29110
29184
  /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col text-[11px] w-max min-w-full", role: "grid", children: [
29111
29185
  /* @__PURE__ */ jsxs("div", { className: "flex", role: "row", children: [
29112
- /* @__PURE__ */ jsx("div", { className: `${HEADER_CELL} flex-none w-10`, "aria-hidden": "true" }),
29186
+ /* @__PURE__ */ jsx(
29187
+ "div",
29188
+ {
29189
+ className: `${HEADER_CELL} flex-none w-10 ${stickyGutterClass}`,
29190
+ "aria-hidden": "true"
29191
+ }
29192
+ ),
29113
29193
  grid.colIndices.map((colIndex) => /* @__PURE__ */ jsxs(
29114
29194
  "div",
29115
29195
  {
@@ -29121,7 +29201,8 @@ function TableDataGrid({
29121
29201
  "button",
29122
29202
  {
29123
29203
  type: "button",
29124
- className: REMOVE_BTN,
29204
+ className: `${REMOVE_BTN} inline-flex items-center justify-center`,
29205
+ style: touchBtnStyle,
29125
29206
  "aria-label": t("pptx.tableDataEditor.removeColumnN", {
29126
29207
  number: colIndex + 1
29127
29208
  }),
@@ -29136,22 +29217,30 @@ function TableDataGrid({
29136
29217
  ))
29137
29218
  ] }),
29138
29219
  grid.rows.map((row) => /* @__PURE__ */ jsxs("div", { className: "flex", role: "row", children: [
29139
- /* @__PURE__ */ jsxs("div", { className: `${HEADER_CELL} flex-none w-10`, role: "rowheader", children: [
29140
- /* @__PURE__ */ jsx("span", { children: row.rowIndex + 1 }),
29141
- canEdit && grid.canRemoveRow && /* @__PURE__ */ jsx(
29142
- "button",
29143
- {
29144
- type: "button",
29145
- className: REMOVE_BTN,
29146
- "aria-label": t("pptx.tableDataEditor.removeRowN", {
29147
- number: row.rowIndex + 1
29148
- }),
29149
- title: t("pptx.tableDataEditor.removeRowN", { number: row.rowIndex + 1 }),
29150
- onClick: () => commit(removeTableElementRow(tableElement, row.rowIndex)),
29151
- children: "\xD7"
29152
- }
29153
- )
29154
- ] }),
29220
+ /* @__PURE__ */ jsxs(
29221
+ "div",
29222
+ {
29223
+ className: `${HEADER_CELL} flex-none w-10 ${stickyGutterClass}`,
29224
+ role: "rowheader",
29225
+ children: [
29226
+ /* @__PURE__ */ jsx("span", { children: row.rowIndex + 1 }),
29227
+ canEdit && grid.canRemoveRow && /* @__PURE__ */ jsx(
29228
+ "button",
29229
+ {
29230
+ type: "button",
29231
+ className: `${REMOVE_BTN} inline-flex items-center justify-center`,
29232
+ style: touchBtnStyle,
29233
+ "aria-label": t("pptx.tableDataEditor.removeRowN", {
29234
+ number: row.rowIndex + 1
29235
+ }),
29236
+ title: t("pptx.tableDataEditor.removeRowN", { number: row.rowIndex + 1 }),
29237
+ onClick: () => commit(removeTableElementRow(tableElement, row.rowIndex)),
29238
+ children: "\xD7"
29239
+ }
29240
+ )
29241
+ ]
29242
+ }
29243
+ ),
29155
29244
  row.cells.map((cell) => /* @__PURE__ */ jsx(
29156
29245
  "div",
29157
29246
  {
@@ -30008,7 +30097,7 @@ function TablePropertiesPanel({
30008
30097
  disabled: !canEdit,
30009
30098
  title: preset.label,
30010
30099
  "aria-label": preset.label,
30011
- className: "rounded border border-border hover:border-primary overflow-hidden h-10 transition-colors",
30100
+ className: "rounded border border-border hover:border-primary overflow-hidden h-10 max-md:h-11 transition-colors",
30012
30101
  onClick: () => {
30013
30102
  updateTableData({ rows: applyTableStylePreset(td, preset) });
30014
30103
  },
@@ -30167,7 +30256,7 @@ function ElementInspectorBody({
30167
30256
  onClick: handleToggleLock,
30168
30257
  disabled: !canEdit,
30169
30258
  title: isLocked ? t("pptx.inspector.unlock") : t("pptx.inspector.lock"),
30170
- className: "p-1 rounded hover:bg-accent disabled:opacity-40 disabled:cursor-not-allowed transition-colors",
30259
+ className: "p-1 rounded hover:bg-accent disabled:opacity-40 disabled:cursor-not-allowed transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]! flex items-center justify-center",
30171
30260
  "aria-pressed": isLocked,
30172
30261
  children: isLocked ? /* @__PURE__ */ jsx(LuLock, { className: "w-3.5 h-3.5 text-amber-400" }) : /* @__PURE__ */ jsx(LuLockOpen, { className: "w-3.5 h-3.5 text-muted-foreground" })
30173
30262
  }
@@ -30779,7 +30868,7 @@ function InspectorCommentsSection({
30779
30868
  onClick: onAddComment,
30780
30869
  disabled: !commentDraft.trim(),
30781
30870
  className: cn(
30782
- "w-full inline-flex items-center justify-center gap-1 rounded px-2 py-1 text-[11px] font-medium transition-colors",
30871
+ "w-full inline-flex items-center justify-center gap-1 rounded px-2 py-1 text-[11px] font-medium transition-colors max-md:min-h-[44px]!",
30783
30872
  commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
30784
30873
  ),
30785
30874
  children: [
@@ -30870,14 +30959,18 @@ function InspectorPaneHeader({
30870
30959
  onClose
30871
30960
  }) {
30872
30961
  const { t } = useTranslation();
30962
+ const { viewportWidth } = useIsMobile();
30963
+ const touchTargetPx = getDensePanelTouchTargetPx(viewportWidth);
30964
+ const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
30873
30965
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2 px-3 py-2 border-b border-border", children: [
30874
30966
  /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1 rounded bg-muted p-0.5", children: INSPECTOR_TABS.map(({ key, label, icon: Icon }) => /* @__PURE__ */ jsxs(
30875
30967
  "button",
30876
30968
  {
30877
30969
  type: "button",
30878
30970
  title: label,
30971
+ style: touchBtnStyle,
30879
30972
  className: cn(
30880
- "flex items-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
30973
+ "flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
30881
30974
  activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
30882
30975
  ),
30883
30976
  onClick: () => onSetActiveTab(key),
@@ -30894,7 +30987,8 @@ function InspectorPaneHeader({
30894
30987
  type: "button",
30895
30988
  onClick: onClose,
30896
30989
  title: t("pptx.common.close"),
30897
- className: "p-1 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",
30990
+ style: touchBtnStyle,
30991
+ className: "flex items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",
30898
30992
  children: /* @__PURE__ */ jsx(LuX, { className: "w-4 h-4" })
30899
30993
  }
30900
30994
  )
@@ -31659,7 +31753,7 @@ function SlideTransitionSection({
31659
31753
  onChange: (e) => onTransitionChange({
31660
31754
  type: e.target.value
31661
31755
  }),
31662
- className: "bg-muted border border-border rounded px-2 py-1",
31756
+ className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
31663
31757
  children: SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
31664
31758
  }
31665
31759
  )
@@ -31729,7 +31823,7 @@ function SlideTransitionSection({
31729
31823
  onTransitionChange({ durationMs });
31730
31824
  }
31731
31825
  },
31732
- className: "bg-muted border border-border rounded px-2 py-1"
31826
+ className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!"
31733
31827
  }
31734
31828
  )
31735
31829
  ] }),
@@ -31744,7 +31838,7 @@ function SlideTransitionSection({
31744
31838
  onChange: (e) => onTransitionChange({
31745
31839
  speed: e.target.value
31746
31840
  }),
31747
- className: "bg-muted border border-border rounded px-2 py-1",
31841
+ className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
31748
31842
  children: TRANSITION_SPEED_OPTIONS.map((option) => /* @__PURE__ */ jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
31749
31843
  }
31750
31844
  )
@@ -31760,7 +31854,7 @@ function SlideTransitionSection({
31760
31854
  onChange: (e) => onTransitionChange({
31761
31855
  morphOption: e.target.value
31762
31856
  }),
31763
- className: "bg-muted border border-border rounded px-2 py-1",
31857
+ className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
31764
31858
  children: TRANSITION_MORPH_OPTIONS.map((option) => /* @__PURE__ */ jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
31765
31859
  }
31766
31860
  )
@@ -33920,6 +34014,10 @@ function PrintDialog({
33920
34014
  }) {
33921
34015
  const { t } = useTranslation();
33922
34016
  const { panelStyle, handlers: dragHandlers } = useModalDismissDrag(onClose);
34017
+ const { viewportWidth } = useIsMobile();
34018
+ const touchTargetPx = getDensePanelTouchTargetPx(viewportWidth);
34019
+ const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
34020
+ const footerBtnStyle = { minHeight: touchTargetPx };
33923
34021
  const printOptionDefaults = resolveDefaultPrintSettings(useViewerOptionsContext());
33924
34022
  const [printWhat, setPrintWhat] = useState(printOptionDefaults?.printWhat ?? "slides");
33925
34023
  const [orientation, setOrientation] = useState("landscape");
@@ -34017,6 +34115,9 @@ function PrintDialog({
34017
34115
  "div",
34018
34116
  {
34019
34117
  style: panelStyle,
34118
+ role: "dialog",
34119
+ "aria-modal": "true",
34120
+ "aria-label": t("pptx.print.title"),
34020
34121
  className: "w-[780px] max-h-[90vh] rounded-xl border border-border bg-background shadow-2xl flex flex-col max-md:fixed max-md:inset-x-0 max-md:bottom-0 max-md:top-auto max-md:w-full max-md:max-w-none max-md:max-h-[88dvh] max-md:rounded-t-2xl max-md:rounded-b-none max-md:border-x-0 max-md:border-b-0 max-md:pb-[max(env(safe-area-inset-bottom),0px)]",
34021
34122
  children: [
34022
34123
  /* @__PURE__ */ jsxs(
@@ -34034,14 +34135,15 @@ function PrintDialog({
34034
34135
  {
34035
34136
  type: "button",
34036
34137
  onClick: onClose,
34037
- className: "p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground transition-colors",
34138
+ style: closeBtnStyle,
34139
+ className: "p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground transition-colors inline-flex items-center justify-center",
34038
34140
  children: /* @__PURE__ */ jsx(LuX, { className: "w-4 h-4" })
34039
34141
  }
34040
34142
  )
34041
34143
  ]
34042
34144
  }
34043
34145
  ),
34044
- /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto px-5 py-4 flex gap-5", children: [
34146
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto px-5 py-4 flex gap-5 max-md:flex-col", children: [
34045
34147
  /* @__PURE__ */ jsx(
34046
34148
  PrintSettingsPanel,
34047
34149
  {
@@ -34065,7 +34167,7 @@ function PrintDialog({
34065
34167
  activeSlideIndex
34066
34168
  }
34067
34169
  ),
34068
- printWhat === "handouts" && /* @__PURE__ */ jsx("div", { className: "w-[230px] shrink-0 border-l border-border pl-4 overflow-y-auto", children: /* @__PURE__ */ jsx(
34170
+ printWhat === "handouts" && /* @__PURE__ */ jsx("div", { className: "w-[230px] shrink-0 border-l border-border pl-4 overflow-y-auto max-md:w-full max-md:border-l-0 max-md:border-t max-md:pl-0 max-md:pt-3", children: /* @__PURE__ */ jsx(
34069
34171
  PrintPreview,
34070
34172
  {
34071
34173
  slideIndices: previewSlideIndices,
@@ -34074,7 +34176,7 @@ function PrintDialog({
34074
34176
  frameSlides
34075
34177
  }
34076
34178
  ) }),
34077
- printWhat === "notes" && /* @__PURE__ */ jsx("div", { className: "w-[230px] shrink-0 border-l border-border pl-4 overflow-y-auto", children: /* @__PURE__ */ jsx(
34179
+ printWhat === "notes" && /* @__PURE__ */ jsx("div", { className: "w-[230px] shrink-0 border-l border-border pl-4 overflow-y-auto max-md:w-full max-md:border-l-0 max-md:border-t max-md:pl-0 max-md:pt-3", children: /* @__PURE__ */ jsx(
34078
34180
  NotesPagePreview,
34079
34181
  {
34080
34182
  slideIndices: previewSlideIndices,
@@ -34094,6 +34196,7 @@ function PrintDialog({
34094
34196
  {
34095
34197
  type: "button",
34096
34198
  onClick: onClose,
34199
+ style: footerBtnStyle,
34097
34200
  className: "px-4 py-2 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-accent transition-colors",
34098
34201
  children: t("pptx.common.cancel")
34099
34202
  }
@@ -34103,6 +34206,7 @@ function PrintDialog({
34103
34206
  {
34104
34207
  type: "button",
34105
34208
  onClick: handlePrint,
34209
+ style: footerBtnStyle,
34106
34210
  className: "px-4 py-2 text-sm rounded-lg bg-primary text-white hover:bg-primary/90 transition-colors flex items-center gap-1.5",
34107
34211
  children: [
34108
34212
  /* @__PURE__ */ jsx(LuPrinter, { className: "w-3.5 h-3.5" }),
@@ -34865,6 +34969,8 @@ function StartSessionForm({
34865
34969
  onRetry
34866
34970
  }) {
34867
34971
  const { t } = useTranslation();
34972
+ const { viewportWidth } = useIsMobile();
34973
+ const tabBtnStyle = { minHeight: getDensePanelTouchTargetPx(viewportWidth) };
34868
34974
  const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
34869
34975
  return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
34870
34976
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-1 rounded-lg bg-muted p-1", role: "tablist", children: ["create", "join"].map((candidate) => /* @__PURE__ */ jsx(
@@ -34874,6 +34980,7 @@ function StartSessionForm({
34874
34980
  role: "tab",
34875
34981
  "aria-selected": mode === candidate,
34876
34982
  onClick: () => onModeChange(candidate),
34983
+ style: tabBtnStyle,
34877
34984
  className: `rounded-md px-3 py-1.5 text-[12px] font-medium transition-colors ${mode === candidate ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"}`,
34878
34985
  children: t(candidate === "create" ? "pptx.share.createSession" : "pptx.share.joinSession")
34879
34986
  },
@@ -34919,7 +35026,8 @@ function StartSessionForm({
34919
35026
  value: invitation,
34920
35027
  onChange: (event) => onInvitationChange(event.target.value),
34921
35028
  placeholder: t("pptx.share.invitationPlaceholder"),
34922
- className: "w-full px-3 py-1.5 rounded border border-border bg-background text-foreground text-[13px] placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary"
35029
+ className: "w-full px-3 py-1.5 rounded border border-border bg-background text-foreground text-[13px] placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary",
35030
+ style: tabBtnStyle
34923
35031
  }
34924
35032
  ),
34925
35033
  /* @__PURE__ */ jsx("p", { className: "text-[11px] text-muted-foreground", children: t("pptx.share.invitationHint") })
@@ -34935,7 +35043,8 @@ function StartSessionForm({
34935
35043
  onChange: (e) => onRoomIdChange(e.target.value),
34936
35044
  readOnly: preconfigured,
34937
35045
  placeholder: t("pptx.share.sessionPlaceholder"),
34938
- className: `w-full px-3 py-1.5 rounded border border-border bg-background text-foreground text-[13px] placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary${inputReadOnlyClass}`
35046
+ className: `w-full px-3 py-1.5 rounded border border-border bg-background text-foreground text-[13px] placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary${inputReadOnlyClass}`,
35047
+ style: tabBtnStyle
34939
35048
  }
34940
35049
  ),
34941
35050
  /* @__PURE__ */ jsx("p", { className: "text-[11px] text-muted-foreground", children: t("pptx.share.sessionHint") })
@@ -34952,7 +35061,8 @@ function StartSessionForm({
34952
35061
  onChange: (e) => onUserNameChange(e.target.value),
34953
35062
  readOnly: preconfigured,
34954
35063
  placeholder: t("pptx.share.namePlaceholder"),
34955
- className: `w-full px-3 py-1.5 rounded border border-border bg-background text-foreground text-[13px] placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary${inputReadOnlyClass}`
35064
+ className: `w-full px-3 py-1.5 rounded border border-border bg-background text-foreground text-[13px] placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary${inputReadOnlyClass}`,
35065
+ style: tabBtnStyle
34956
35066
  }
34957
35067
  )
34958
35068
  ] }),
@@ -34968,7 +35078,8 @@ function StartSessionForm({
34968
35078
  onChange: (e) => onServerUrlChange(e.target.value),
34969
35079
  readOnly: preconfigured,
34970
35080
  placeholder: t("pptx.share.serverPlaceholder"),
34971
- className: `w-full px-3 py-1.5 rounded border border-border bg-background text-foreground text-[13px] placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary${inputReadOnlyClass}`
35081
+ className: `w-full px-3 py-1.5 rounded border border-border bg-background text-foreground text-[13px] placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary${inputReadOnlyClass}`,
35082
+ style: tabBtnStyle
34972
35083
  }
34973
35084
  )
34974
35085
  ] }),
@@ -35004,6 +35115,10 @@ function ShareDialog({
35004
35115
  const dialogRef = useRef(null);
35005
35116
  const { panelStyle, handlers: dragHandlers } = useModalDismissDrag(onClose);
35006
35117
  useModalFocus(open, dialogRef, onClose);
35118
+ const { viewportWidth, viewportHeight } = useIsMobile();
35119
+ const touchTargetPx = getDensePanelTouchTargetPx(viewportWidth);
35120
+ const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
35121
+ const stickyFooterClass = shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
35007
35122
  useEffect(() => {
35008
35123
  if (activeCollaboration) {
35009
35124
  setRoomId(activeCollaboration.roomId);
@@ -35068,7 +35183,8 @@ function ShareDialog({
35068
35183
  {
35069
35184
  type: "button",
35070
35185
  onClick: onClose,
35071
- className: "text-muted-foreground hover:text-foreground text-lg leading-none",
35186
+ style: touchBtnStyle,
35187
+ className: "text-muted-foreground hover:text-foreground text-lg leading-none inline-flex items-center justify-center",
35072
35188
  "aria-label": t("pptx.share.close"),
35073
35189
  children: "\xD7"
35074
35190
  }
@@ -35103,27 +35219,35 @@ function ShareDialog({
35103
35219
  onRetry: collab?.retry
35104
35220
  }
35105
35221
  ) }),
35106
- /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2 px-5 py-3 border-t border-border", children: [
35107
- /* @__PURE__ */ jsx(
35108
- "button",
35109
- {
35110
- type: "button",
35111
- onClick: onClose,
35112
- className: "px-3 py-1.5 rounded bg-muted hover:bg-accent text-[12px] text-foreground transition-colors",
35113
- children: isActive ? t("pptx.share.close") : t("pptx.share.cancel")
35114
- }
35115
- ),
35116
- !isActive && /* @__PURE__ */ jsx(
35117
- "button",
35118
- {
35119
- type: "button",
35120
- disabled: !canStart,
35121
- onClick: handleStartSharing,
35122
- className: "px-3 py-1.5 rounded bg-primary hover:bg-primary/90 text-[12px] text-white transition-colors disabled:opacity-40 disabled:cursor-not-allowed",
35123
- children: t(mode === "join" ? "pptx.share.joinSession" : "pptx.share.startSharing")
35124
- }
35125
- )
35126
- ] })
35222
+ /* @__PURE__ */ jsxs(
35223
+ "div",
35224
+ {
35225
+ className: `flex justify-end gap-2 px-5 py-3 border-t border-border ${stickyFooterClass}`,
35226
+ children: [
35227
+ /* @__PURE__ */ jsx(
35228
+ "button",
35229
+ {
35230
+ type: "button",
35231
+ onClick: onClose,
35232
+ style: touchBtnStyle,
35233
+ className: "px-3 py-1.5 rounded bg-muted hover:bg-accent text-[12px] text-foreground transition-colors inline-flex items-center justify-center",
35234
+ children: isActive ? t("pptx.share.close") : t("pptx.share.cancel")
35235
+ }
35236
+ ),
35237
+ !isActive && /* @__PURE__ */ jsx(
35238
+ "button",
35239
+ {
35240
+ type: "button",
35241
+ disabled: !canStart,
35242
+ onClick: handleStartSharing,
35243
+ style: touchBtnStyle,
35244
+ className: "px-3 py-1.5 rounded bg-primary hover:bg-primary/90 text-[12px] text-white transition-colors disabled:opacity-40 disabled:cursor-not-allowed inline-flex items-center justify-center",
35245
+ children: t(mode === "join" ? "pptx.share.joinSession" : "pptx.share.startSharing")
35246
+ }
35247
+ )
35248
+ ]
35249
+ }
35250
+ )
35127
35251
  ]
35128
35252
  }
35129
35253
  )
@@ -37913,7 +38037,7 @@ function useTableStyleMapHandlers(input) {
37913
38037
  var AiChatPanel = lazy(async () => {
37914
38038
  const [{ useChat }, { default: Panel }] = await Promise.all([
37915
38039
  import('@ai-sdk/react'),
37916
- import('./AiChatPanel-JTXC5WWH.mjs')
38040
+ import('./AiChatPanel-TBIAQSZ7.mjs')
37917
38041
  ]);
37918
38042
  function BoundAiChatPanel(props) {
37919
38043
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -39953,12 +40077,15 @@ function ControlRow({
39953
40077
  onOptionChange
39954
40078
  }) {
39955
40079
  const { t } = useTranslation();
40080
+ const { viewportWidth } = useIsMobile();
40081
+ const fieldMinHeight = getDensePanelTouchTargetPx(viewportWidth);
39956
40082
  const value = readValue(options, control);
39957
40083
  const label = t(control.labelKey);
39958
40084
  const info = control.infoKey ? /* @__PURE__ */ jsx(InfoTip, { text: t(control.infoKey) }) : null;
39959
40085
  const rowClass = cn("flex items-center justify-between gap-3 py-1.5", control.indent && "pl-6");
40086
+ const rowStyle = { minHeight: fieldMinHeight };
39960
40087
  if (control.kind === "toggle") {
39961
- return /* @__PURE__ */ jsxs("label", { className: cn(rowClass, "cursor-pointer select-none"), children: [
40088
+ return /* @__PURE__ */ jsxs("label", { className: cn(rowClass, "cursor-pointer select-none"), style: rowStyle, children: [
39962
40089
  /* @__PURE__ */ jsxs("span", { className: "text-sm text-foreground", children: [
39963
40090
  label,
39964
40091
  info
@@ -39975,7 +40102,7 @@ function ControlRow({
39975
40102
  ] });
39976
40103
  }
39977
40104
  if (control.kind === "select") {
39978
- return /* @__PURE__ */ jsxs("div", { className: rowClass, children: [
40105
+ return /* @__PURE__ */ jsxs("div", { className: rowClass, style: rowStyle, children: [
39979
40106
  /* @__PURE__ */ jsxs("span", { className: "text-sm text-foreground", children: [
39980
40107
  label,
39981
40108
  info
@@ -39984,6 +40111,7 @@ function ControlRow({
39984
40111
  "select",
39985
40112
  {
39986
40113
  "aria-label": label,
40114
+ style: { minHeight: fieldMinHeight },
39987
40115
  className: "max-w-[55%] rounded border border-border bg-background px-2 py-1 text-xs text-foreground",
39988
40116
  value: typeof value === "string" ? value : "",
39989
40117
  onChange: (event) => onOptionChange(control.group, control.key, event.target.value),
@@ -39993,7 +40121,7 @@ function ControlRow({
39993
40121
  ] });
39994
40122
  }
39995
40123
  if (control.kind === "number") {
39996
- return /* @__PURE__ */ jsxs("div", { className: rowClass, children: [
40124
+ return /* @__PURE__ */ jsxs("div", { className: rowClass, style: rowStyle, children: [
39997
40125
  /* @__PURE__ */ jsxs("span", { className: "text-sm text-foreground", children: [
39998
40126
  label,
39999
40127
  info
@@ -40004,6 +40132,7 @@ function ControlRow({
40004
40132
  {
40005
40133
  type: "number",
40006
40134
  "aria-label": label,
40135
+ style: { minHeight: fieldMinHeight },
40007
40136
  className: "w-20 rounded border border-border bg-background px-2 py-1 text-right text-xs text-foreground",
40008
40137
  min: control.min,
40009
40138
  max: control.max,
@@ -40021,7 +40150,7 @@ function ControlRow({
40021
40150
  ] })
40022
40151
  ] });
40023
40152
  }
40024
- return /* @__PURE__ */ jsxs("div", { className: rowClass, children: [
40153
+ return /* @__PURE__ */ jsxs("div", { className: rowClass, style: rowStyle, children: [
40025
40154
  /* @__PURE__ */ jsxs("span", { className: "text-sm text-foreground", children: [
40026
40155
  label,
40027
40156
  info
@@ -40031,6 +40160,7 @@ function ControlRow({
40031
40160
  {
40032
40161
  type: "text",
40033
40162
  "aria-label": label,
40163
+ style: { minHeight: fieldMinHeight },
40034
40164
  className: "w-48 max-w-[55%] rounded border border-border bg-background px-2 py-1 text-xs text-foreground",
40035
40165
  maxLength: control.maxLength,
40036
40166
  value: typeof value === "string" ? value : "",
@@ -40542,6 +40672,12 @@ function SettingsDialog({
40542
40672
  const [activeTabId, setActiveTabId] = useState("general");
40543
40673
  const { t } = useTranslation();
40544
40674
  const { panelStyle, handlers: dragHandlers } = useModalDismissDrag(onClose);
40675
+ const { viewportWidth, viewportHeight } = useIsMobile();
40676
+ const touchTargetPx = getDensePanelTouchTargetPx(viewportWidth);
40677
+ const navBtnStyle = { minHeight: touchTargetPx, minWidth: touchTargetPx };
40678
+ const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
40679
+ const footerBtnStyle = { minHeight: touchTargetPx };
40680
+ const stickyFooterClass = shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
40545
40681
  const snapshotRef = useRef(null);
40546
40682
  const wasOpenRef = useRef(false);
40547
40683
  useEffect(() => {
@@ -40617,7 +40753,8 @@ function SettingsDialog({
40617
40753
  {
40618
40754
  type: "button",
40619
40755
  onClick: onClose,
40620
- className: "rounded p-1 transition-colors hover:bg-accent",
40756
+ style: closeBtnStyle,
40757
+ className: "rounded p-1 transition-colors hover:bg-accent inline-flex items-center justify-center",
40621
40758
  "aria-label": t("pptx.settings.close"),
40622
40759
  children: /* @__PURE__ */ jsx(LuX, { className: "h-4 w-4 text-muted-foreground" })
40623
40760
  }
@@ -40638,8 +40775,9 @@ function SettingsDialog({
40638
40775
  type: "button",
40639
40776
  onClick: () => setActiveTabId(tab.id),
40640
40777
  "aria-current": activeTabId === tab.id,
40778
+ style: navBtnStyle,
40641
40779
  className: cn(
40642
- "block w-full whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
40780
+ "flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
40643
40781
  activeTabId === tab.id ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
40644
40782
  ),
40645
40783
  children: t(tab.labelKey)
@@ -40652,8 +40790,9 @@ function SettingsDialog({
40652
40790
  type: "button",
40653
40791
  onClick: () => setActiveTabId(AI_TAB_ID),
40654
40792
  "aria-current": activeTabId === AI_TAB_ID,
40793
+ style: navBtnStyle,
40655
40794
  className: cn(
40656
- "block w-full whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
40795
+ "flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
40657
40796
  activeTabId === AI_TAB_ID ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
40658
40797
  ),
40659
40798
  children: t("pptx.ai.settingsSectionTitle")
@@ -40746,37 +40885,46 @@ function SettingsDialog({
40746
40885
  }
40747
40886
  ) })
40748
40887
  ] }),
40749
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2 border-t border-border/60 px-5 py-3", children: [
40750
- /* @__PURE__ */ jsx(
40751
- "button",
40752
- {
40753
- type: "button",
40754
- onClick: () => onResetOptions(),
40755
- className: "rounded border border-border px-3 py-1.5 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
40756
- children: t("pptx.options.resetAll")
40757
- }
40758
- ),
40759
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
40760
- /* @__PURE__ */ jsx(
40761
- "button",
40762
- {
40763
- type: "button",
40764
- onClick: handleCancel,
40765
- className: "rounded border border-border px-4 py-1.5 text-xs text-foreground transition-colors hover:bg-accent",
40766
- children: t("pptx.common.cancel")
40767
- }
40768
- ),
40769
- /* @__PURE__ */ jsx(
40770
- "button",
40771
- {
40772
- type: "button",
40773
- onClick: onClose,
40774
- className: "rounded bg-primary px-4 py-1.5 text-xs font-medium text-primary-foreground transition-colors hover:bg-primary/90",
40775
- children: t("pptx.common.ok")
40776
- }
40777
- )
40778
- ] })
40779
- ] })
40888
+ /* @__PURE__ */ jsxs(
40889
+ "div",
40890
+ {
40891
+ className: `flex items-center justify-between gap-2 border-t border-border/60 px-5 py-3 ${stickyFooterClass}`,
40892
+ children: [
40893
+ /* @__PURE__ */ jsx(
40894
+ "button",
40895
+ {
40896
+ type: "button",
40897
+ onClick: () => onResetOptions(),
40898
+ style: footerBtnStyle,
40899
+ className: "rounded border border-border px-3 py-1.5 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
40900
+ children: t("pptx.options.resetAll")
40901
+ }
40902
+ ),
40903
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
40904
+ /* @__PURE__ */ jsx(
40905
+ "button",
40906
+ {
40907
+ type: "button",
40908
+ onClick: handleCancel,
40909
+ style: footerBtnStyle,
40910
+ className: "rounded border border-border px-4 py-1.5 text-xs text-foreground transition-colors hover:bg-accent",
40911
+ children: t("pptx.common.cancel")
40912
+ }
40913
+ ),
40914
+ /* @__PURE__ */ jsx(
40915
+ "button",
40916
+ {
40917
+ type: "button",
40918
+ onClick: onClose,
40919
+ style: footerBtnStyle,
40920
+ className: "rounded bg-primary px-4 py-1.5 text-xs font-medium text-primary-foreground transition-colors hover:bg-primary/90",
40921
+ children: t("pptx.common.ok")
40922
+ }
40923
+ )
40924
+ ] })
40925
+ ]
40926
+ }
40927
+ )
40780
40928
  ]
40781
40929
  }
40782
40930
  )
@@ -41695,6 +41843,10 @@ var PowerPointViewer = forwardRef(
41695
41843
  // instead of silently downgrading it; the explicit ppi presets still
41696
41844
  // scale proportionally from that baseline. Mirrors the other bindings.
41697
41845
  imageExportScale: 2 * resolveImageResolutionScale(viewerOptions),
41846
+ // GIF/video export's shared `resolveExportCaptureDecision` derives its
41847
+ // own baseline from this raw multiplier instead of reusing
41848
+ // `imageExportScale` outright; see `useExportMediaHandlers.ts`.
41849
+ imageResolutionScale: resolveImageResolutionScale(viewerOptions),
41698
41850
  mode,
41699
41851
  slides,
41700
41852
  activeSlide,