pptx-react-viewer 4.30.0 → 4.30.2

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 (63) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/{AiChatPanel-6VWCT6NE.js → AiChatPanel-7XZQQZ4P.js} +9 -9
  3. package/dist/AiChatPanel-7XZQQZ4P.js.br +0 -0
  4. package/dist/AiChatPanel-7XZQQZ4P.js.gz +0 -0
  5. package/dist/{AiChatPanel-42FL4CPM.mjs → AiChatPanel-XI272UTZ.mjs} +1 -1
  6. package/dist/AiChatPanel-XI272UTZ.mjs.br +0 -0
  7. package/dist/AiChatPanel-XI272UTZ.mjs.gz +0 -0
  8. package/dist/{chunk-MFGD7XVJ.js → chunk-355ICDU6.js} +259 -249
  9. package/dist/chunk-355ICDU6.js.br +0 -0
  10. package/dist/chunk-355ICDU6.js.gz +0 -0
  11. package/dist/{chunk-ZIBAN7RL.mjs → chunk-ATGP75C4.mjs} +35 -16
  12. package/dist/chunk-ATGP75C4.mjs.br +0 -0
  13. package/dist/chunk-ATGP75C4.mjs.gz +0 -0
  14. package/dist/{chunk-KRXS36RB.mjs → chunk-CHZJORUW.mjs} +16 -6
  15. package/dist/chunk-CHZJORUW.mjs.br +0 -0
  16. package/dist/chunk-CHZJORUW.mjs.gz +0 -0
  17. package/dist/{chunk-XKV2QDAO.js → chunk-QLGDQED2.js} +1329 -1321
  18. package/dist/chunk-QLGDQED2.js.br +0 -0
  19. package/dist/chunk-QLGDQED2.js.gz +0 -0
  20. package/dist/{chunk-RHNJ4IU2.js → chunk-XRFJ7TAF.js} +34 -15
  21. package/dist/chunk-XRFJ7TAF.js.br +0 -0
  22. package/dist/chunk-XRFJ7TAF.js.gz +0 -0
  23. package/dist/{chunk-GXMGJ5A3.mjs → chunk-YHJRKGJD.mjs} +77 -69
  24. package/dist/chunk-YHJRKGJD.mjs.br +0 -0
  25. package/dist/chunk-YHJRKGJD.mjs.gz +0 -0
  26. package/dist/index.js +24 -24
  27. package/dist/index.js.br +0 -0
  28. package/dist/index.js.gz +0 -0
  29. package/dist/index.mjs +3 -3
  30. package/dist/index.mjs.br +0 -0
  31. package/dist/index.mjs.gz +0 -0
  32. package/dist/internals.js +81 -81
  33. package/dist/internals.js.br +0 -0
  34. package/dist/internals.js.gz +0 -0
  35. package/dist/internals.mjs +2 -2
  36. package/dist/internals.mjs.br +0 -0
  37. package/dist/internals.mjs.gz +0 -0
  38. package/dist/pptx-viewer.css +1 -1
  39. package/dist/pptx-viewer.css.br +0 -0
  40. package/dist/pptx-viewer.css.gz +0 -0
  41. package/dist/viewer/index.js +19 -19
  42. package/dist/viewer/index.js.br +0 -0
  43. package/dist/viewer/index.js.gz +0 -0
  44. package/dist/viewer/index.mjs +3 -3
  45. package/dist/viewer/index.mjs.br +0 -0
  46. package/dist/viewer/index.mjs.gz +0 -0
  47. package/package.json +3 -3
  48. package/dist/AiChatPanel-42FL4CPM.mjs.br +0 -0
  49. package/dist/AiChatPanel-42FL4CPM.mjs.gz +0 -0
  50. package/dist/AiChatPanel-6VWCT6NE.js.br +0 -0
  51. package/dist/AiChatPanel-6VWCT6NE.js.gz +0 -0
  52. package/dist/chunk-GXMGJ5A3.mjs.br +0 -0
  53. package/dist/chunk-GXMGJ5A3.mjs.gz +0 -0
  54. package/dist/chunk-KRXS36RB.mjs.br +0 -0
  55. package/dist/chunk-KRXS36RB.mjs.gz +0 -0
  56. package/dist/chunk-MFGD7XVJ.js.br +0 -0
  57. package/dist/chunk-MFGD7XVJ.js.gz +0 -0
  58. package/dist/chunk-RHNJ4IU2.js.br +0 -0
  59. package/dist/chunk-RHNJ4IU2.js.gz +0 -0
  60. package/dist/chunk-XKV2QDAO.js.br +0 -0
  61. package/dist/chunk-XKV2QDAO.js.gz +0 -0
  62. package/dist/chunk-ZIBAN7RL.mjs.br +0 -0
  63. package/dist/chunk-ZIBAN7RL.mjs.gz +0 -0
Binary file
Binary file
@@ -1846,7 +1846,9 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1846
1846
  // An unstroked element must occupy EXACTLY its authored box, so the
1847
1847
  // selection/hover affordance is an `outline` (see `ElementRenderer`) and
1848
1848
  // the border collapses to 0 rather than to a transparent 1px.
1849
- borderWidth: stroke.borderWidth,
1849
+ // On screen the painted width never drops under one device pixel (shared
1850
+ // `device-pixel-stroke`); an unstroked element keeps a plain `0`.
1851
+ borderWidth: stroke.borderWidth > 0 ? stroke.cssBorderWidth : 0,
1850
1852
  borderColor: animatesStroke ? void 0 : stroke.borderColor,
1851
1853
  borderStyle: stroke.borderStyle,
1852
1854
  // Inherited SVG presentation properties: written on the container so the
@@ -1908,7 +1910,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1908
1910
  ...base,
1909
1911
  backgroundColor: "transparent",
1910
1912
  borderWidth: 0,
1911
- borderTopWidth: geometry.strokeWidth,
1913
+ borderTopWidth: pptx.screenStrokeWidth(geometry.strokeWidth),
1912
1914
  borderTopColor: stroke.borderColor,
1913
1915
  borderTopStyle: stroke.borderStyle ?? "solid"
1914
1916
  };
@@ -2006,7 +2008,11 @@ function strokeStrands(d, keyBase, ctx) {
2006
2008
  strokeLinejoin: ctx.lineJoin,
2007
2009
  strokeMiterlimit: ctx.miterLimit,
2008
2010
  vectorEffect: "non-scaling-stroke",
2009
- style: offset !== 0 ? { transform: `translate(0, ${offset}px)` } : void 0
2011
+ style: {
2012
+ // Never under one device pixel on screen (shared `device-pixel-stroke`).
2013
+ strokeWidth: pptx.screenStrokeWidth(Math.max(ctx.widths[idx] ?? ctx.strokeWidth, 1)),
2014
+ transform: offset !== 0 ? `translate(0, ${offset}px)` : void 0
2015
+ }
2010
2016
  },
2011
2017
  `${keyBase}-s${idx}`
2012
2018
  ));
@@ -2090,6 +2096,7 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2090
2096
  const height = Math.max(element.height, 1);
2091
2097
  const rim = Math.max(Math.min(height * 0.16, 28), 6);
2092
2098
  const stroke = Math.max(strokeWidth, 1);
2099
+ const screenStroke = { strokeWidth: pptx.screenStrokeWidth(stroke) };
2093
2100
  return /* @__PURE__ */ jsxRuntime.jsxs(
2094
2101
  "svg",
2095
2102
  {
@@ -2108,7 +2115,8 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2108
2115
  stroke: strokeWidth > 0 ? strokePaint : "none",
2109
2116
  strokeWidth: stroke,
2110
2117
  strokeDasharray: dashArray,
2111
- vectorEffect: "non-scaling-stroke"
2118
+ vectorEffect: "non-scaling-stroke",
2119
+ style: screenStroke
2112
2120
  }
2113
2121
  ),
2114
2122
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2122,7 +2130,8 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2122
2130
  stroke: strokeWidth > 0 ? strokePaint : "none",
2123
2131
  strokeWidth: stroke,
2124
2132
  strokeDasharray: dashArray,
2125
- vectorEffect: "non-scaling-stroke"
2133
+ vectorEffect: "non-scaling-stroke",
2134
+ style: screenStroke
2126
2135
  }
2127
2136
  ),
2128
2137
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2136,7 +2145,8 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2136
2145
  stroke: strokeWidth > 0 ? strokePaint : "none",
2137
2146
  strokeWidth: stroke,
2138
2147
  strokeDasharray: dashArray,
2139
- vectorEffect: "non-scaling-stroke"
2148
+ vectorEffect: "non-scaling-stroke",
2149
+ style: screenStroke
2140
2150
  }
2141
2151
  )
2142
2152
  ]
@@ -2188,7 +2198,8 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2188
2198
  stroke: strokePaint,
2189
2199
  strokeWidth: strokeWidth * 2,
2190
2200
  strokeDasharray: dashArray,
2191
- vectorEffect: "non-scaling-stroke"
2201
+ vectorEffect: "non-scaling-stroke",
2202
+ style: { strokeWidth: `calc(2 * ${pptx.screenStrokeWidth(strokeWidth)})` }
2192
2203
  }
2193
2204
  )
2194
2205
  }
@@ -2231,7 +2242,8 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2231
2242
  stroke: strokeWidth > 0 ? strokePaint : "none",
2232
2243
  strokeWidth,
2233
2244
  strokeDasharray: dashArray,
2234
- vectorEffect: "non-scaling-stroke"
2245
+ vectorEffect: "non-scaling-stroke",
2246
+ style: { strokeWidth: pptx.screenStrokeWidth(strokeWidth) }
2235
2247
  }
2236
2248
  )
2237
2249
  ]
@@ -2278,7 +2290,8 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2278
2290
  y2: 0,
2279
2291
  stroke: strokePaint,
2280
2292
  strokeWidth: lineStroke,
2281
- vectorEffect: "non-scaling-stroke"
2293
+ vectorEffect: "non-scaling-stroke",
2294
+ style: { strokeWidth: pptx.screenStrokeWidth(lineStroke) }
2282
2295
  }
2283
2296
  ),
2284
2297
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2291,7 +2304,8 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2291
2304
  strokeDasharray: dashArray,
2292
2305
  strokeLinecap: "round",
2293
2306
  strokeLinejoin: "round",
2294
- vectorEffect: "non-scaling-stroke"
2307
+ vectorEffect: "non-scaling-stroke",
2308
+ style: { strokeWidth: pptx.screenStrokeWidth(lineStroke) }
2295
2309
  }
2296
2310
  )
2297
2311
  ]
@@ -2356,6 +2370,7 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2356
2370
  vectorEffect: "non-scaling-stroke",
2357
2371
  style: {
2358
2372
  pointerEvents: "none",
2373
+ strokeWidth: pptx.screenStrokeWidth(Math.max(widths[idx] ?? strokeWidth, 1)),
2359
2374
  ...offset !== 0 ? { transform: `translate(0, ${offset}px)` } : {}
2360
2375
  }
2361
2376
  },
@@ -2367,8 +2382,6 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2367
2382
  }
2368
2383
  return null;
2369
2384
  }
2370
-
2371
- // src/viewer/utils/table-cell-fill.tsx
2372
2385
  function parseGradientFillCss(gradFill) {
2373
2386
  if (!gradFill) {
2374
2387
  return void 0;
@@ -2543,7 +2556,11 @@ function parseCellBorders(cellProperties) {
2543
2556
  if (color) {
2544
2557
  const opacity = pptx.parseDrawingColorOpacity(ln["a:solidFill"]);
2545
2558
  const key = `${edge.prefix}`;
2546
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${pptx.colorWithOpacity(color, opacity)}`;
2559
+ borderStyle[key] = pptx.screenBorder(
2560
+ widthPx,
2561
+ cssBorderStyle,
2562
+ pptx.colorWithOpacity(color, opacity)
2563
+ );
2547
2564
  }
2548
2565
  }
2549
2566
  return borderStyle;
@@ -2893,7 +2910,8 @@ function TableCellDiagonalBorders({
2893
2910
  x2: "100%",
2894
2911
  y2: "100%",
2895
2912
  stroke: diag.diagDownColor,
2896
- strokeWidth: diag.diagDownWidth
2913
+ strokeWidth: diag.diagDownWidth,
2914
+ style: { strokeWidth: pptx.screenStrokeWidth(diag.diagDownWidth) }
2897
2915
  }
2898
2916
  ),
2899
2917
  hasUp && /* @__PURE__ */ jsxRuntime.jsx(
@@ -2904,7 +2922,8 @@ function TableCellDiagonalBorders({
2904
2922
  x2: "100%",
2905
2923
  y2: "0",
2906
2924
  stroke: diag.diagUpColor,
2907
- strokeWidth: diag.diagUpWidth
2925
+ strokeWidth: diag.diagUpWidth,
2926
+ style: { strokeWidth: pptx.screenStrokeWidth(diag.diagUpWidth) }
2908
2927
  }
2909
2928
  )
2910
2929
  ]
Binary file
Binary file
@@ -1,11 +1,11 @@
1
- import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, Rendering3DFlagsContext, CollaborationProvider, useCollaboration, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, SlideBackgroundImageLayer, StaticElementRenderer, safePrompt, scopeLayoutOptionsToActiveSlide, ChartPartSelectionProvider, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, ViewerOptionsStoreContext, ViewerOptionsContext, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, RemoteSelectionOverlay, CollaborationCursorOverlay, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, ElementRenderer, InlineCollaborationContext, SmartArtRenderer, downloadBlob, playAnimationSound, ResizeHandles, imgSrc, renderStrokeView, useChartPartSelection, DUOTONE_PRESETS, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, resolveSmartArtDataPalette } from './chunk-KRXS36RB.mjs';
2
- import { ANIMATION_PRESET_OPTIONS, dist_exports, cn, SLIDE_NAV_THUMBNAIL_WIDTH, SLIDE_TRANSITION_OPTIONS, normalizeHexColor, hasCopyableFormat, DEFAULT_SECTION_GROUP_ID, safeOpenUrl, isPpactionUrl, parsePpactionUrl, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, TOOLBAR_SECTIONS, isUrlSafe, computeHandoutLayout, getPrintableArea, generateNoteLineCount, UNGROUPED_SECTION_ID, getShapeAdjustmentHandleDescriptors, isConnectorOrLineElement, GRID_SIZE, getElementTransformWithoutRotation, getElementTransform, MIN_ELEMENT_SIZE, getElementLabel, TABLE_STYLE_PRESETS, SHAPE_PRESETS, sanitizeGradientStops, formatCommentTimestamp, clampCropValue, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, DEFAULT_FILL_COLOR, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, SHAPE_QUICK_STYLES, getPatternSvg, DEFAULT_STROKE_COLOR, STROKE_DASH_OPTIONS, openNativeEyeDropper } from './chunk-ZIBAN7RL.mjs';
3
- import { EMPTY_RESOLVED_CUSTOMIZATION, ANIMATION_DIRECTION_LABEL_KEYS, compileEquationTemplateMathMl, resolveViewerRootOptions, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, isFeatureEnabled, isDialogAvailable, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, isPanelVisible, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, RULER_THICKNESS, RULER_FONT_SIZE, editorThumbnailHeight, buildPreviewElements, deriveSlideFieldContext, hiddenSlideCue, EDITOR_THUMBNAIL_WIDTH, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, themeToCssVars, createCustomizationController, resolveEffectiveHiddenActions, listAutosaveSnapshots, resolveExpiredAutosaveSnapshots, deleteAutosaveSnapshot, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, EDITOR_CHROME_CSS, ribbonCustomizationCss, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, PASTE_SPECIAL_OPTIONS, findCanvasElementNode, getDensePanelTouchTargetPx, shouldStickyActionRow, customizeOptionsTabs, VIEWER_OPTIONS_TABS, isOptionsPageVisible, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, canCropElement, cropSessionChanged, cancelCropUpdate, startCropSession, homeLaunchers, attachRibbonOverflow, editorThumbnailWidth, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, resolvePresentationAction, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, resolveEditPointsAvailability, isCurrentLayout, observeElementHeight, EXPANDED_MAX_HEIGHT, resolveStatusBarSave, statusBarViewMode, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, 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, cropModeKeyAction, buildTitleBarState, resolveScreenTip, visibleContextualTabs, resolveActiveRibbonTab, contextualTabLabelKey, RIBBON_CONTEXTUAL_TAB_ATTR, TAB_ROW_ACTION_CLASSES, customizeBackstageNav, BACKSTAGE_NAV, listBackstageRecentFiles, BACKSTAGE_BACK_CLASSES, BACKSTAGE_NAV_CLASSES, FREEFORM_TOOL_IDS, isDrawingToolVisible, textFontSizePtToPx, withHomeGalleries, drawingHomeControls, homeGalleryControls, homeGalleryApply, shapeOutlineChange, shapeFillChange, editingHomeControls, arrangeHomeControls, arrangePainterHomeControls, arrangeAlignAction, DESIGN_RIBBON_GROUPS, DESIGN_RIBBON_COMMANDS, designCommandState, FIXED_TAB_GALLERIES, CONTEXTUAL_TAB_GROUPS, editorThumbnailStep, resolveSlidePaneClick, SLIDE_VIRTUALIZATION_THRESHOLD, buildSectionContextMenuEntries, buildSlidePaneContextMenuEntries, slidePaneViewItems, isEditPointsEnabled, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, PRESENTER_NAVIGATOR_LABEL_KEYS, getPresentationContextMenuSections, CONTEXT_MENU_PRESENTATION_LAYER, presentationViewItems, subtitleRecognitionLanguage, subtitleSettingsFromOptions, getSpeechRecognitionCtor, mergeCaptionResults, customizeContextMenuEntries, buildContextMenuEntries, contextMenuViewItems, customizeCanvasContextMenuEntries, buildCanvasContextMenuEntries, buildLayoutPreviewGeometry, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, themeEditorLabels, resolveNotesSegments, defaultRichEnabled, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX as INDENT_PX$1, buildNotesPrintHtml, MIN_TOUCH_TARGET_PX, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, sanitizeMathMl, computeAllNotesPages, getNotesPrintableArea, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, createSlideSorterState, sorterSelectionIndexes, selectSorterSlide, applySorterAction, slideSorterPasteIndexes, sorterGridColumns, sorterMenuContext, buildSlideSorterContextMenuEntries, slideSorterContextMenuLabel, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, presenterConsoleAction, presenterConsoleViewState, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, customizeBackstageCards, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, clipboardHomeControls, slidesHomeControls, resolveDefaultFontFamily, textFontSizePxToPt, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, fontPickerHomeControls, fontHomeControls, nextToggleValue, RIBBON_GROUP_ATTR, paragraphHomeAlign, paragraphHomeControls, paragraphHomeAction, arrangeShapeHomeControls, strokeWidthOf, canSetStrokeWidth, canUngroupSelection, canGroupSelection, parseCropValue, buildRibbonGallery, readRibbonTransitionDraft, SLIDE_SHOW_COMMAND_GROUPS, RECORD_COMMAND_GROUPS, buildReviewRibbon, HELP_RIBBON_COMMANDS, galleryTextLabel, sectionAddAfterSlideIndex, masterViewPseudoSlide, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, parentSelection, slideSpaceElement, isGroupMember, motionPathFor, setMotionPath, shouldShowElementHandles, computeAnchoredPopupPosition, applyTableStyleDelete, applyTableStyleMapChange, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, SLIDE_TEMPLATES, getSelectionTextStyleFlags, TEXT_DECORATION_FLAGS, applyRibbonGalleryItem, ribbonTransitionsDraftPatch, ribbonTransitionUpdates, ribbonTransitionsSoundChange, ribbonTransitionStockSoundUrl, playSlideTransitionPreview, playAnimationRibbonPreview, SLIDE_SHOW_OPTIONS, createViewerOptionsStore, subtitleSettingsLabels, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, buildChartQuickActionsDescriptor, applyChartElementToggle, CHART_QUICK_ACTION_BUTTON_SIZE, applyChartStylePreset, hideChartSeries, restoreFilteredSeries, buildCropOverlay, CROP_HANDLE_ARIA_KEY, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, canEditElementPoints, MERGE_SHAPES_MENU_ITEMS, hasMultipleSelectedTableCells, isElementLocked, mergeSlideTransition, slideBackgroundClearState, slideBackgroundClearPatch, effectiveDirection, TRIGGER_OPTIONS, effectiveTimingCurve, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildSlideTemplateContent, updateSubtitleSettings, buildFreeformShapeElement, buildLiveInkStrokeView, beginCropDrag, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, FreeformToolSession, attachOverlayKeyboard, EditPointsSession, EDIT_POINTS_STYLE, elementLockTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setDataLabelsRangeCache, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, imageResetPatch, imageResetState, canInteractWithElement, buildOleObjectNamePatch, shouldShowAccessibilitySection, withFrameSlides, withSlidesPerPage, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, setTrigger, setTriggerBookmark, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, directionValuesFor, buildAnimationTimelineBars, motionPathPresetIdForPath, MOTION_PATH_FAMILIES, motionPathPresetsByFamily, motionPathPresetLabelKey, motionPathFamilyLabelKey, EFFECT_SOUND_CATALOGUE, listMediaBookmarkOptions, selectedBookmarkOptionValue, hasTiltData, toElementAxes, dragCropHandle, panCropImage, clientToSlidePoint, EDIT_POINTS_TARGET_ATTR, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, resolveDisplayedChartType, CHART_TYPE_OPTIONS, chartDataLabelsTogglePatch, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, seriesColorClearState, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSiblingAfter, removeEmptyNode, demote, promote, reorder, cropResetState, cropResetPatch, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimResetState, mediaTrimEndMsFromAbsoluteMs, mediaTrimResetPatch, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, getEffectSoundAsset, animationEffectLabel, overlayPointerInput, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, withCellStyle, LBL as LBL$1, SEL as SEL$1, FILL_MODE_OPTIONS as FILL_MODE_OPTIONS$1, SECTION_HEADING, NUM as NUM$1, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, smartArtLayoutSwitchPatch, rebuildDrawingShapesIfCleared, mediaTrimEndMsFromSeconds, validateMediaTrimRange, quickStyleSwatchCss, OFFICE_COLOR_SWATCHES, PATTERN_PRESET_OPTIONS as PATTERN_PRESET_OPTIONS$1, COMPOUND_LINE_OPTIONS as COMPOUND_LINE_OPTIONS$1, LINE_JOIN_OPTIONS as LINE_JOIN_OPTIONS$1, LINE_CAP_OPTIONS as LINE_CAP_OPTIONS$1, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS as GRADIENT_TYPE_OPTIONS$1, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, toggleText3dExtrusion, BEVEL_PRESETS, cropFit, cropFill, cropToAspectRatio } from 'ooxml-ui/pptx';
1
+ import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, Rendering3DFlagsContext, CollaborationProvider, useCollaboration, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, SlideBackgroundImageLayer, StaticElementRenderer, safePrompt, scopeLayoutOptionsToActiveSlide, ChartPartSelectionProvider, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, ViewerOptionsStoreContext, ViewerOptionsContext, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, RemoteSelectionOverlay, CollaborationCursorOverlay, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, ElementRenderer, InlineCollaborationContext, SmartArtRenderer, downloadBlob, playAnimationSound, ResizeHandles, imgSrc, renderStrokeView, useChartPartSelection, DUOTONE_PRESETS, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, resolveSmartArtDataPalette } from './chunk-CHZJORUW.mjs';
2
+ import { ANIMATION_PRESET_OPTIONS, dist_exports, cn, SLIDE_NAV_THUMBNAIL_WIDTH, SLIDE_TRANSITION_OPTIONS, normalizeHexColor, hasCopyableFormat, DEFAULT_SECTION_GROUP_ID, safeOpenUrl, isPpactionUrl, parsePpactionUrl, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, TOOLBAR_SECTIONS, isUrlSafe, computeHandoutLayout, getPrintableArea, generateNoteLineCount, UNGROUPED_SECTION_ID, getShapeAdjustmentHandleDescriptors, isConnectorOrLineElement, GRID_SIZE, getElementTransformWithoutRotation, getElementTransform, MIN_ELEMENT_SIZE, getElementLabel, TABLE_STYLE_PRESETS, SHAPE_PRESETS, sanitizeGradientStops, formatCommentTimestamp, clampCropValue, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, DEFAULT_FILL_COLOR, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, SHAPE_QUICK_STYLES, getPatternSvg, DEFAULT_STROKE_COLOR, STROKE_DASH_OPTIONS, openNativeEyeDropper } from './chunk-ATGP75C4.mjs';
3
+ import { EMPTY_RESOLVED_CUSTOMIZATION, ANIMATION_DIRECTION_LABEL_KEYS, compileEquationTemplateMathMl, resolveViewerRootOptions, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, isFeatureEnabled, isDialogAvailable, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, isPanelVisible, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, RULER_THICKNESS, RULER_FONT_SIZE, editorThumbnailHeight, buildPreviewElements, deriveSlideFieldContext, deviceStrokeStageStyle, hiddenSlideCue, EDITOR_THUMBNAIL_WIDTH, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, themeToCssVars, createCustomizationController, resolveEffectiveHiddenActions, listAutosaveSnapshots, resolveExpiredAutosaveSnapshots, deleteAutosaveSnapshot, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, EDITOR_CHROME_CSS, ribbonCustomizationCss, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, PASTE_SPECIAL_OPTIONS, findCanvasElementNode, getDensePanelTouchTargetPx, shouldStickyActionRow, customizeOptionsTabs, VIEWER_OPTIONS_TABS, isOptionsPageVisible, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, canCropElement, cropSessionChanged, cancelCropUpdate, startCropSession, homeLaunchers, attachRibbonOverflow, editorThumbnailWidth, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, resolvePresentationAction, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, resolveEditPointsAvailability, isCurrentLayout, observeElementHeight, EXPANDED_MAX_HEIGHT, resolveStatusBarSave, statusBarViewMode, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, 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, cropModeKeyAction, buildTitleBarState, resolveScreenTip, visibleContextualTabs, resolveActiveRibbonTab, contextualTabLabelKey, RIBBON_CONTEXTUAL_TAB_ATTR, buildTabRowActionsState, TAB_ROW_ACTION_CLASSES, tabRowActionsAttributes, customizeBackstageNav, BACKSTAGE_NAV, listBackstageRecentFiles, BACKSTAGE_BACK_CLASSES, BACKSTAGE_NAV_CLASSES, FREEFORM_TOOL_IDS, isDrawingToolVisible, textFontSizePtToPx, withHomeGalleries, drawingHomeControls, homeGalleryControls, homeGalleryApply, shapeOutlineChange, shapeFillChange, editingHomeControls, arrangeHomeControls, arrangePainterHomeControls, arrangeAlignAction, DESIGN_RIBBON_GROUPS, DESIGN_RIBBON_COMMANDS, designCommandState, FIXED_TAB_GALLERIES, CONTEXTUAL_TAB_GROUPS, editorThumbnailStep, resolveSlidePaneClick, SLIDE_VIRTUALIZATION_THRESHOLD, buildSectionContextMenuEntries, buildSlidePaneContextMenuEntries, slidePaneViewItems, isEditPointsEnabled, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, PRESENTER_NAVIGATOR_LABEL_KEYS, getPresentationContextMenuSections, CONTEXT_MENU_PRESENTATION_LAYER, presentationViewItems, subtitleRecognitionLanguage, subtitleSettingsFromOptions, getSpeechRecognitionCtor, mergeCaptionResults, customizeContextMenuEntries, buildContextMenuEntries, contextMenuViewItems, customizeCanvasContextMenuEntries, buildCanvasContextMenuEntries, buildLayoutPreviewGeometry, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, themeEditorLabels, resolveNotesSegments, defaultRichEnabled, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX as INDENT_PX$1, buildNotesPrintHtml, MIN_TOUCH_TARGET_PX, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, sanitizeMathMl, computeAllNotesPages, getNotesPrintableArea, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, createSlideSorterState, sorterSelectionIndexes, selectSorterSlide, applySorterAction, slideSorterPasteIndexes, sorterGridColumns, sorterMenuContext, buildSlideSorterContextMenuEntries, slideSorterContextMenuLabel, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, presenterConsoleAction, presenterConsoleViewState, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, customizeBackstageCards, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, clipboardHomeControls, slidesHomeControls, resolveDefaultFontFamily, textFontSizePxToPt, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, fontPickerHomeControls, fontHomeControls, nextToggleValue, RIBBON_GROUP_ATTR, paragraphHomeAlign, paragraphHomeControls, paragraphHomeAction, arrangeShapeHomeControls, strokeWidthOf, canSetStrokeWidth, canUngroupSelection, canGroupSelection, parseCropValue, buildRibbonGallery, readRibbonTransitionDraft, SLIDE_SHOW_COMMAND_GROUPS, RECORD_COMMAND_GROUPS, buildReviewRibbon, HELP_RIBBON_COMMANDS, galleryTextLabel, sectionAddAfterSlideIndex, masterViewPseudoSlide, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, parentSelection, slideSpaceElement, isGroupMember, motionPathFor, setMotionPath, shouldShowElementHandles, computeAnchoredPopupPosition, applyTableStyleDelete, applyTableStyleMapChange, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, SLIDE_TEMPLATES, getSelectionTextStyleFlags, TEXT_DECORATION_FLAGS, applyRibbonGalleryItem, ribbonTransitionsDraftPatch, ribbonTransitionUpdates, ribbonTransitionsSoundChange, ribbonTransitionStockSoundUrl, playSlideTransitionPreview, playAnimationRibbonPreview, SLIDE_SHOW_OPTIONS, createViewerOptionsStore, subtitleSettingsLabels, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, buildChartQuickActionsDescriptor, applyChartElementToggle, CHART_QUICK_ACTION_BUTTON_SIZE, applyChartStylePreset, hideChartSeries, restoreFilteredSeries, buildCropOverlay, CROP_HANDLE_ARIA_KEY, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, canEditElementPoints, MERGE_SHAPES_MENU_ITEMS, hasMultipleSelectedTableCells, isElementLocked, mergeSlideTransition, slideBackgroundClearState, slideBackgroundClearPatch, effectiveDirection, TRIGGER_OPTIONS, effectiveTimingCurve, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildSlideTemplateContent, updateSubtitleSettings, buildFreeformShapeElement, buildLiveInkStrokeView, beginCropDrag, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, FreeformToolSession, attachOverlayKeyboard, EditPointsSession, EDIT_POINTS_STYLE, elementLockTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setDataLabelsRangeCache, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, imageResetPatch, imageResetState, canInteractWithElement, buildOleObjectNamePatch, shouldShowAccessibilitySection, withFrameSlides, withSlidesPerPage, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, setTrigger, setTriggerBookmark, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, directionValuesFor, buildAnimationTimelineBars, motionPathPresetIdForPath, MOTION_PATH_FAMILIES, motionPathPresetsByFamily, motionPathPresetLabelKey, motionPathFamilyLabelKey, EFFECT_SOUND_CATALOGUE, listMediaBookmarkOptions, selectedBookmarkOptionValue, hasTiltData, toElementAxes, dragCropHandle, panCropImage, clientToSlidePoint, EDIT_POINTS_TARGET_ATTR, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, resolveDisplayedChartType, CHART_TYPE_OPTIONS, chartDataLabelsTogglePatch, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, seriesColorClearState, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSiblingAfter, removeEmptyNode, demote, promote, reorder, cropResetState, cropResetPatch, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimResetState, mediaTrimEndMsFromAbsoluteMs, mediaTrimResetPatch, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, getEffectSoundAsset, animationEffectLabel, overlayPointerInput, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, withCellStyle, LBL as LBL$1, SEL as SEL$1, FILL_MODE_OPTIONS as FILL_MODE_OPTIONS$1, SECTION_HEADING, NUM as NUM$1, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, smartArtLayoutSwitchPatch, rebuildDrawingShapesIfCleared, mediaTrimEndMsFromSeconds, validateMediaTrimRange, quickStyleSwatchCss, OFFICE_COLOR_SWATCHES, PATTERN_PRESET_OPTIONS as PATTERN_PRESET_OPTIONS$1, COMPOUND_LINE_OPTIONS as COMPOUND_LINE_OPTIONS$1, LINE_JOIN_OPTIONS as LINE_JOIN_OPTIONS$1, LINE_CAP_OPTIONS as LINE_CAP_OPTIONS$1, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS as GRADIENT_TYPE_OPTIONS$1, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, toggleText3dExtrusion, BEVEL_PRESETS, cropFit, cropFill, cropToAspectRatio } from 'ooxml-ui/pptx';
4
4
  export { THEME_CATALOG, defaultCssVars, defaultRadius, defaultThemeColors, resolveThemeCatalogEntry, themeToCssVars, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius } from 'ooxml-ui/pptx';
5
- import React97, { createContext, lazy, forwardRef, useEffect, useState, useCallback, useMemo, useRef, useLayoutEffect, useSyncExternalStore, useId, useContext, useDeferredValue, Suspense, useReducer, Fragment as Fragment$1 } from 'react';
5
+ import React98, { createContext, lazy, forwardRef, useEffect, useState, useCallback, useMemo, useRef, useLayoutEffect, useSyncExternalStore, useId, useContext, useDeferredValue, Suspense, useReducer, Fragment as Fragment$1 } from 'react';
6
6
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
7
7
  import { useTranslation } from 'react-i18next';
8
- import { LuArrowDown, LuArrowUp, LuArrowRight, LuArrowLeft, LuArrowDownRight, LuArrowDownLeft, LuArrowUpRight, LuArrowUpLeft, LuMessageSquare, LuEyeOff, LuHistory, LuSettings, LuX, LuCalendarDays, LuClock, LuHash, LuFileText, LuText, LuCast, LuShieldCheck, LuPlus, LuPanelLeftClose, LuDownload, LuTrash2, LuCheck, LuLock, LuEye, LuType, LuLoader, LuShieldAlert, LuSignature, LuInfo, LuTriangleAlert, LuPrinter, LuPenTool, LuBug, LuChevronUp, LuChevronDown, LuUpload, LuWifi, LuWifiOff, LuUsers, LuCopy, LuMinus, LuChevronLeft, LuChevronRight, LuPlay, LuPause, LuPanelLeft, LuPanelRight, LuSparkles, LuShare2, LuFolderOpen, LuPalette, LuSearch, LuCaseSensitive, LuReplace, LuGripVertical, LuLoaderCircle, LuGrid2X2, LuStickyNote, LuList, LuClipboardCopy, LuPaintbrush, LuShapes, LuLayoutGrid, LuWand, LuPresentation, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuSave, LuFilePlus2, LuHouse, LuFileJson, LuBox, LuVideo, LuFileImage, LuDatabase, LuClock3, LuUser, LuHardDrive, LuLogIn, LuMove, LuCopyPlus, LuClipboardPaste, LuMonitor, LuRadio, LuCaptions, LuImage, LuFilter, LuLayers, LuSettings2, LuLockOpen, LuPencil, LuReply, LuMoveRight, LuRotateCw, LuScissors, LuBookmark, LuPipette } from 'react-icons/lu';
8
+ import { LuArrowDown, LuArrowUp, LuArrowRight, LuArrowLeft, LuArrowDownRight, LuArrowDownLeft, LuArrowUpRight, LuArrowUpLeft, LuMessageSquare, LuEyeOff, LuHistory, LuSettings, LuX, LuCalendarDays, LuClock, LuHash, LuFileText, LuText, LuCast, LuShieldCheck, LuPlus, LuPanelLeftClose, LuDownload, LuTrash2, LuCheck, LuLock, LuEye, LuType, LuLoader, LuShieldAlert, LuSignature, LuInfo, LuTriangleAlert, LuPrinter, LuPenTool, LuBug, LuChevronUp, LuChevronDown, LuUpload, LuWifi, LuWifiOff, LuUsers, LuCopy, LuMinus, LuChevronLeft, LuChevronRight, LuPlay, LuPause, LuPanelLeft, LuPanelRight, LuSparkles, LuFolderOpen, LuPalette, LuSearch, LuCaseSensitive, LuReplace, LuGripVertical, LuLoaderCircle, LuGrid2X2, LuStickyNote, LuList, LuClipboardCopy, LuPaintbrush, LuShapes, LuLayoutGrid, LuWand, LuPresentation, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuShare2, LuSave, LuFilePlus2, LuHouse, LuFileJson, LuBox, LuVideo, LuFileImage, LuDatabase, LuClock3, LuUser, LuHardDrive, LuLogIn, LuMove, LuCopyPlus, LuClipboardPaste, LuMonitor, LuRadio, LuCaptions, LuImage, LuFilter, LuLayers, LuSettings2, LuLockOpen, LuPencil, LuReply, LuMoveRight, LuRotateCw, LuScissors, LuBookmark, LuPipette } from 'react-icons/lu';
9
9
  import { createPortal } from 'react-dom';
10
10
  import { LOCALE_CATALOG } from 'ooxml-ui/pptx/i18n';
11
11
  import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs as exportAiChatLogs$1, applyElementUpdate } from 'ooxml-ui/pptx/ai';
@@ -713,7 +713,7 @@ function WebHomeControls({
713
713
  host.addEventListener("home-popup", listener);
714
714
  return () => host.removeEventListener("home-popup", listener);
715
715
  }, [onPopup]);
716
- return React97.createElement(`pptx-ui-ribbon-home-${family}`, { ref });
716
+ return React98.createElement(`pptx-ui-ribbon-home-${family}`, { ref });
717
717
  }
718
718
  function ShapeArrangeExtras(p) {
719
719
  const commands = useShapeFormatContext();
@@ -1210,7 +1210,7 @@ function AccountPage() {
1210
1210
  return void 0;
1211
1211
  });
1212
1212
  };
1213
- const version = "4.30.0" ;
1213
+ const version = "4.30.2" ;
1214
1214
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
1215
1215
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
1216
1216
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -3583,8 +3583,35 @@ function RibbonTabBar(p) {
3583
3583
  function TabRowActions(p) {
3584
3584
  const { t } = useTranslation();
3585
3585
  const collab = useCollaboration();
3586
- const isCollaborating = collab && collab.status === "connected";
3586
+ const isCollaborating = Boolean(collab && collab.status === "connected");
3587
3587
  const { isHidden } = useToolbarVisibility(p.hiddenActions);
3588
+ const customization = useViewerCustomizationContext();
3589
+ const ref = useRef(null);
3590
+ const handlers = useRef(p);
3591
+ handlers.current = p;
3592
+ const state = buildTabRowActionsState({
3593
+ translate: (key, params) => t(key, params),
3594
+ showComments: Boolean(p.onToggleComments) && isFeatureEnabled(customization, "comments"),
3595
+ commentsOpen: Boolean(p.isCommentsPanelOpen),
3596
+ commentCount: p.slideCommentCount ?? 0,
3597
+ showShare: !isHidden("share"),
3598
+ isCollaborating,
3599
+ collaboratorCount: collab?.connectedCount ?? 0
3600
+ });
3601
+ useEffect(() => {
3602
+ const host = ref.current;
3603
+ if (!host) {
3604
+ return;
3605
+ }
3606
+ const comments = () => handlers.current.onToggleComments?.();
3607
+ const share = () => handlers.current.onOpenShareDialog?.();
3608
+ host.addEventListener("comments-toggle", comments);
3609
+ host.addEventListener("share-request", share);
3610
+ return () => {
3611
+ host.removeEventListener("comments-toggle", comments);
3612
+ host.removeEventListener("share-request", share);
3613
+ };
3614
+ }, []);
3588
3615
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 pr-1", children: [
3589
3616
  p.onEnterRehearsalMode && !isHidden("record") && /* @__PURE__ */ jsxs(
3590
3617
  "button",
@@ -3600,21 +3627,12 @@ function TabRowActions(p) {
3600
3627
  ]
3601
3628
  }
3602
3629
  ),
3603
- !isHidden("share") && /* @__PURE__ */ jsxs(
3604
- "button",
3630
+ /* @__PURE__ */ jsx(
3631
+ "pptx-ui-ribbon-actions",
3605
3632
  {
3606
- type: "button",
3607
- onClick: p.onOpenShareDialog,
3608
- className: cn(
3609
- "relative inline-flex items-center gap-1 px-2.5 py-1 rounded-sm text-[11px] font-medium transition-colors whitespace-nowrap",
3610
- isCollaborating ? "bg-green-600 hover:bg-green-500 text-white" : "bg-primary hover:bg-primary/90 text-white"
3611
- ),
3612
- title: isCollaborating ? t("pptx.toolbar.sharingUsers", { count: collab.connectedCount }) : t("pptx.toolbar.share"),
3613
- "aria-label": t("pptx.toolbar.share"),
3614
- children: [
3615
- /* @__PURE__ */ jsx(LuShare2, { className: "w-3 h-3" }),
3616
- /* @__PURE__ */ jsx("span", { children: isCollaborating ? t("pptx.toolbar.sharingCount", { count: collab.connectedCount }) : t("pptx.toolbar.share") })
3617
- ]
3633
+ ref,
3634
+ "data-pptx-chrome": "tab-row-actions",
3635
+ ...tabRowActionsAttributes(state)
3618
3636
  }
3619
3637
  )
3620
3638
  ] });
@@ -3961,7 +3979,6 @@ function ToolbarPrimaryRow(p) {
3961
3979
  const customization = useViewerCustomizationContext();
3962
3980
  const showSlidesToggle = isPanelVisible(customization, "slidesPane");
3963
3981
  const showInspectorToggle = isPanelVisible(customization, "inspector");
3964
- const showComments = isFeatureEnabled(customization, "comments");
3965
3982
  const showShare = isDialogAvailable(customization, "share");
3966
3983
  const showSettings = isDialogAvailable(customization, "options");
3967
3984
  const qab = "p-1 max-md:p-2 max-md:min-h-[40px] max-md:min-w-[40px] rounded-sm transition-colors hover:bg-accent/60 disabled:opacity-40 disabled:cursor-not-allowed active:scale-90 active:opacity-70";
@@ -3983,24 +4000,6 @@ function ToolbarPrimaryRow(p) {
3983
4000
  }
3984
4001
  ),
3985
4002
  /* @__PURE__ */ jsx("div", { className: "flex-1 min-w-2 max-md:min-w-1" }),
3986
- (mode === "edit" || mode === "master") && showComments && /* @__PURE__ */ jsxs(
3987
- "button",
3988
- {
3989
- type: "button",
3990
- onClick: p.onToggleComments,
3991
- className: cn(
3992
- qab,
3993
- "relative max-md:hidden",
3994
- p.isCommentsPanelOpen ? "text-foreground" : "text-muted-foreground"
3995
- ),
3996
- title: t("pptx.toolbar.comments"),
3997
- "aria-label": t("pptx.toolbar.comments"),
3998
- children: [
3999
- /* @__PURE__ */ jsx(LuMessageSquare, { className: ics }),
4000
- (p.slideCommentCount ?? 0) > 0 && /* @__PURE__ */ jsx("span", { className: "absolute -top-0.5 -right-0.5 flex items-center justify-center w-3.5 h-3.5 rounded-full bg-primary text-[8px] text-white leading-none", children: p.slideCommentCount })
4001
- ]
4002
- }
4003
- ),
4004
4003
  collab && showShare && (collab.status === "connected" || collab.status === "connecting") && collab.remoteUsers.length > 0 && /* @__PURE__ */ jsx(
4005
4004
  "button",
4006
4005
  {
@@ -4349,6 +4348,9 @@ function Toolbar(p) {
4349
4348
  {
4350
4349
  onEnterRehearsalMode: p.canEdit ? p.onEnterRehearsalMode : void 0,
4351
4350
  onOpenShareDialog: p.onOpenShareDialog,
4351
+ onToggleComments: p.onToggleComments,
4352
+ isCommentsPanelOpen: p.isCommentsPanelOpen,
4353
+ slideCommentCount: p.slideCommentCount,
4352
4354
  hiddenActions: p.hiddenActions
4353
4355
  }
4354
4356
  ),
@@ -4825,7 +4827,7 @@ function ChartQuickActionsOverlay({
4825
4827
  "data-export-ignore": "true",
4826
4828
  style: { position: "absolute", left: 0, top: 0, zIndex: 59 },
4827
4829
  onMouseDown: (e) => e.stopPropagation(),
4828
- children: descriptor.buttons.map((button) => /* @__PURE__ */ jsxs(React97.Fragment, { children: [
4830
+ children: descriptor.buttons.map((button) => /* @__PURE__ */ jsxs(React98.Fragment, { children: [
4829
4831
  /* @__PURE__ */ jsx(
4830
4832
  "button",
4831
4833
  {
@@ -4845,7 +4847,7 @@ function ChartQuickActionsOverlay({
4845
4847
  transformOrigin: "top left"
4846
4848
  },
4847
4849
  className: "flex items-center justify-center rounded bg-white border border-gray-300 shadow-sm hover:bg-gray-100 text-gray-700",
4848
- children: React97.createElement(ICONS3[button.id], { className: "size-3.5" })
4850
+ children: React98.createElement(ICONS3[button.id], { className: "size-3.5" })
4849
4851
  }
4850
4852
  ),
4851
4853
  open === button.id && button.id === "elements" && /* @__PURE__ */ jsxs(
@@ -5991,7 +5993,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
5991
5993
  }
5992
5994
  );
5993
5995
  }
5994
- var HorizontalRuler = React97.memo(HorizontalRulerView);
5996
+ var HorizontalRuler = React98.memo(HorizontalRulerView);
5995
5997
  HorizontalRuler.displayName = "HorizontalRuler";
5996
5998
  function VerticalRulerView({ ticks, heightPx, highlight }) {
5997
5999
  return /* @__PURE__ */ jsxs(
@@ -6063,7 +6065,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
6063
6065
  }
6064
6066
  );
6065
6067
  }
6066
- var VerticalRuler = React97.memo(VerticalRulerView);
6068
+ var VerticalRuler = React98.memo(VerticalRulerView);
6067
6069
  VerticalRuler.displayName = "VerticalRuler";
6068
6070
  function Ruler({
6069
6071
  canvasSize,
@@ -7206,6 +7208,8 @@ function SlideCanvasContent({
7206
7208
  width: canvasSize.width,
7207
7209
  height: canvasSize.height,
7208
7210
  transform: `scale(${zoom.editorScale})`,
7211
+ // One device pixel in slide px: thin strokes stay visible on screen.
7212
+ ...deviceStrokeStageStyle(zoom.editorScale),
7209
7213
  transformOrigin: "top left",
7210
7214
  ["--pptx-handle-inverse-scale"]: 1 / zoom.editorScale,
7211
7215
  // Motion-path keyframes translate by a fraction of the SLIDE, so
@@ -7866,7 +7870,8 @@ function SlideThumbnailImpl({
7866
7870
  width: safeCanvasWidth,
7867
7871
  height: safeCanvasHeight,
7868
7872
  transform: `scale(${scale})`,
7869
- transformOrigin: "top left"
7873
+ transformOrigin: "top left",
7874
+ ...deviceStrokeStageStyle(scale)
7870
7875
  },
7871
7876
  children: [
7872
7877
  /* @__PURE__ */ jsx(SlideBackgroundImageLayer, { slide }),
@@ -7941,7 +7946,7 @@ function slideThumbnailPropsEqual(prev, next) {
7941
7946
  }
7942
7947
  return true;
7943
7948
  }
7944
- var SlideThumbnail = React97.memo(SlideThumbnailImpl, slideThumbnailPropsEqual);
7949
+ var SlideThumbnail = React98.memo(SlideThumbnailImpl, slideThumbnailPropsEqual);
7945
7950
  function tableCell(props) {
7946
7951
  const { selectedElement, tableEditorState } = props;
7947
7952
  if (selectedElement?.type !== "table" || tableEditorState === null) {
@@ -8584,7 +8589,7 @@ function LazyThumbnailInner({
8584
8589
  }
8585
8590
  ) });
8586
8591
  }
8587
- var LazyThumbnail = React97.memo(LazyThumbnailInner);
8592
+ var LazyThumbnail = React98.memo(LazyThumbnailInner);
8588
8593
  function declaredSectionFacts(groups, sectionId) {
8589
8594
  const declared = groups.filter((group) => group.id !== DEFAULT_SECTION_GROUP_ID && group.id !== UNGROUPED_SECTION_ID).map((group) => group.id);
8590
8595
  return {
@@ -8752,7 +8757,7 @@ function SlideItemInner({
8752
8757
  }
8753
8758
  );
8754
8759
  }
8755
- var SlideItem = React97.memo(SlideItemInner);
8760
+ var SlideItem = React98.memo(SlideItemInner);
8756
8761
  function useSlidePaneCallbacks(onMoveSlide, onRenameSection, onToggleSectionCollapse) {
8757
8762
  const [collapsedSections, setCollapsedSections] = useState({});
8758
8763
  const [renamingSectionId, setRenamingSectionId] = useState(null);
@@ -10165,7 +10170,7 @@ function arePropsEqual(prev, next) {
10165
10170
  }
10166
10171
  return true;
10167
10172
  }
10168
- var SlideCard = React97.memo(SlideCardImpl, arePropsEqual);
10173
+ var SlideCard = React98.memo(SlideCardImpl, arePropsEqual);
10169
10174
  var ICON_CLASS = "h-3.5 w-3.5 text-muted-foreground";
10170
10175
  function SorterContextMenu({
10171
10176
  x,
@@ -10864,7 +10869,7 @@ function ReadingViewStage({
10864
10869
  "div",
10865
10870
  {
10866
10871
  className: "absolute left-0 top-0 origin-top-left",
10867
- style: { width, height, transform: `scale(${scale})` },
10872
+ style: { width, height, transform: `scale(${scale})`, ...deviceStrokeStageStyle(scale) },
10868
10873
  children: elements.map((element, index) => /* @__PURE__ */ jsx(
10869
10874
  StaticElementRenderer,
10870
10875
  {
@@ -11478,8 +11483,8 @@ function SlideNotesPanel({
11478
11483
  onHeightChange
11479
11484
  }) {
11480
11485
  const { t } = useTranslation();
11481
- const rootRef = React97.useRef(null);
11482
- React97.useEffect(() => {
11486
+ const rootRef = React98.useRef(null);
11487
+ React98.useEffect(() => {
11483
11488
  const el = rootRef.current;
11484
11489
  if (!el || !onHeightChange) {
11485
11490
  return void 0;
@@ -13322,9 +13327,9 @@ function PresentationSubtitleBar({
13322
13327
  function renderNotesSegments(segments) {
13323
13328
  return notesSegmentsToSpans(segments).map((span) => {
13324
13329
  if (span.kind === "break") {
13325
- return React97.createElement("br", { key: span.key });
13330
+ return React98.createElement("br", { key: span.key });
13326
13331
  }
13327
- return React97.createElement(
13332
+ return React98.createElement(
13328
13333
  "span",
13329
13334
  { key: span.key, style: span.style },
13330
13335
  span.text
@@ -13445,7 +13450,8 @@ function ScaledSlidePreviewImpl({
13445
13450
  width: safeCanvasWidth,
13446
13451
  height: safeCanvasHeight,
13447
13452
  transform: `scale(${scale})`,
13448
- transformOrigin: "top left"
13453
+ transformOrigin: "top left",
13454
+ ...deviceStrokeStageStyle(scale)
13449
13455
  },
13450
13456
  children: previewElements.map((element, index) => /* @__PURE__ */ jsx(
13451
13457
  StaticElementRenderer,
@@ -13499,7 +13505,7 @@ function scaledSlidePreviewPropsEqual(prev, next) {
13499
13505
  }
13500
13506
  return true;
13501
13507
  }
13502
- var ScaledSlidePreview = React97.memo(ScaledSlidePreviewImpl, scaledSlidePreviewPropsEqual);
13508
+ var ScaledSlidePreview = React98.memo(ScaledSlidePreviewImpl, scaledSlidePreviewPropsEqual);
13503
13509
  function PresenterNotesRail({
13504
13510
  slides,
13505
13511
  current,
@@ -14727,7 +14733,7 @@ function EffectSoundRow({
14727
14733
  onPickStock
14728
14734
  }) {
14729
14735
  const { t } = useTranslation();
14730
- const fileInputRef = React97.useRef(null);
14736
+ const fileInputRef = React98.useRef(null);
14731
14737
  const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
14732
14738
  const handleSelectChange = (event) => {
14733
14739
  const value = event.target.value;
@@ -18299,7 +18305,7 @@ function ConnectorArrowsSection({
18299
18305
  ["Start", "End"].map((end) => {
18300
18306
  const widthKey = end === "Start" ? "connectorStartArrowWidth" : "connectorEndArrowWidth";
18301
18307
  const lengthKey = end === "Start" ? "connectorStartArrowLength" : "connectorEndArrowLength";
18302
- return /* @__PURE__ */ jsxs(React97.Fragment, { children: [
18308
+ return /* @__PURE__ */ jsxs(React98.Fragment, { children: [
18303
18309
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
18304
18310
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t(END_LABEL_KEYS[end].width) }),
18305
18311
  /* @__PURE__ */ jsx(
@@ -21224,7 +21230,7 @@ function StrokeEffectsSection({
21224
21230
  ] }),
21225
21231
  EFFECT_CONFIGS.map((cfg) => {
21226
21232
  const on = cfg.isOn(style);
21227
- return /* @__PURE__ */ jsxs(React97.Fragment, { children: [
21233
+ return /* @__PURE__ */ jsxs(React98.Fragment, { children: [
21228
21234
  /* @__PURE__ */ jsxs("label", { className: `inline-flex items-center gap-2 text-foreground ${COL2}`, children: [
21229
21235
  /* @__PURE__ */ jsx(
21230
21236
  WebCheckbox,
@@ -22079,7 +22085,7 @@ function TextWarpGallery({
22079
22085
  onUpdateTextStyle
22080
22086
  }) {
22081
22087
  const { t } = useTranslation();
22082
- const [expanded, setExpanded] = React97.useState(false);
22088
+ const [expanded, setExpanded] = React98.useState(false);
22083
22089
  const currentPreset = ts?.textWarpPreset || "textNoShape";
22084
22090
  return /* @__PURE__ */ jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
22085
22091
  /* @__PURE__ */ jsxs(
@@ -22722,7 +22728,7 @@ function SmartArtStyleControls({
22722
22728
  onChangeStyle
22723
22729
  }) {
22724
22730
  const { t } = useTranslation();
22725
- const translate = React97.useCallback((key) => t(key), [t]);
22731
+ const translate = React98.useCallback((key) => t(key), [t]);
22726
22732
  return /* @__PURE__ */ jsxs(Fragment, { children: [
22727
22733
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
22728
22734
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.smartart.colorScheme") }),
@@ -22777,9 +22783,9 @@ function SmartArtPropertiesPanel({
22777
22783
  const nodes = smartArtData.nodes ?? [];
22778
22784
  const layout = smartArtData.resolvedLayoutType;
22779
22785
  const topLevelCount = nodes.filter((n) => !n.parentId).length;
22780
- const inputRefs = React97.useRef(/* @__PURE__ */ new Map());
22781
- const pendingFocusId = React97.useRef(null);
22782
- React97.useEffect(() => {
22786
+ const inputRefs = React98.useRef(/* @__PURE__ */ new Map());
22787
+ const pendingFocusId = React98.useRef(null);
22788
+ React98.useEffect(() => {
22783
22789
  const id = pendingFocusId.current;
22784
22790
  if (id) {
22785
22791
  inputRefs.current.get(id)?.focus();
@@ -24385,7 +24391,7 @@ function CommentBody({ text, mentions, className }) {
24385
24391
  index
24386
24392
  ) : (
24387
24393
  // eslint-disable-next-line react/no-array-index-key -- segments are positional
24388
- /* @__PURE__ */ jsx(React97.Fragment, { children: segment.text }, index)
24394
+ /* @__PURE__ */ jsx(React98.Fragment, { children: segment.text }, index)
24389
24395
  )
24390
24396
  ) });
24391
24397
  }
@@ -25901,7 +25907,7 @@ function PresentationPropertiesPanel({
25901
25907
  onUpdateTagCollections
25902
25908
  }) {
25903
25909
  const { t } = useTranslation();
25904
- const handleTransitionChange = React97.useCallback(
25910
+ const handleTransitionChange = React98.useCallback(
25905
25911
  (updates) => {
25906
25912
  onUpdateSlide({
25907
25913
  transition: mergeSlideTransition(activeSlide?.transition, updates)
@@ -29284,7 +29290,7 @@ function ViewerToolbarSection(props) {
29284
29290
  },
29285
29291
  [activeSlide, propertyHandlers]
29286
29292
  );
29287
- const scopedLayoutOptions = React97.useMemo(
29293
+ const scopedLayoutOptions = React98.useMemo(
29288
29294
  () => scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
29289
29295
  [s.layoutOptions, activeSlide]
29290
29296
  );
@@ -30570,6 +30576,8 @@ function PresentationStage({
30570
30576
  height: safeHeight,
30571
30577
  transform: `scale(${scale})`,
30572
30578
  transformOrigin: "top left",
30579
+ // One device pixel in slide px: thin strokes stay visible on screen.
30580
+ ...deviceStrokeStageStyle(scale),
30573
30581
  // Motion-path keyframes translate by a fraction of the SLIDE, so
30574
30582
  // the stage publishes its own size for those calc() offsets.
30575
30583
  "--pptx-slide-w": `${safeWidth}px`,
@@ -31212,7 +31220,7 @@ function useTableStyleMapHandlers(input) {
31212
31220
  var AiChatPanel = lazy(async () => {
31213
31221
  const [{ useChat }, { default: Panel }] = await Promise.all([
31214
31222
  import('@ai-sdk/react'),
31215
- import('./AiChatPanel-42FL4CPM.mjs')
31223
+ import('./AiChatPanel-XI272UTZ.mjs')
31216
31224
  ]);
31217
31225
  function BoundAiChatPanel(props) {
31218
31226
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
Binary file
Binary file