pptx-react-viewer 3.17.0 → 3.18.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 (225) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +33 -31
  3. package/dist/{AiChatPanel-4LKH44IE.mjs → AiChatPanel-DDZC6IRK.mjs} +4 -4
  4. package/dist/AiChatPanel-DDZC6IRK.mjs.br +0 -0
  5. package/dist/AiChatPanel-DDZC6IRK.mjs.gz +0 -0
  6. package/dist/{AiChatPanel-VWVGQ5DD.js → AiChatPanel-T2QSCUQR.js} +25 -25
  7. package/dist/AiChatPanel-T2QSCUQR.js.br +0 -0
  8. package/dist/AiChatPanel-T2QSCUQR.js.gz +0 -0
  9. package/dist/{Area3DChartScene-D7GSJGPQ.js → Area3DChartScene-WEU2MP3B.js} +2 -2
  10. package/dist/Area3DChartScene-WEU2MP3B.js.br +0 -0
  11. package/dist/Area3DChartScene-WEU2MP3B.js.gz +0 -0
  12. package/dist/{Area3DChartScene-X5SM67PZ.mjs → Area3DChartScene-WTKQDHC7.mjs} +1 -1
  13. package/dist/Area3DChartScene-WTKQDHC7.mjs.br +0 -0
  14. package/dist/Area3DChartScene-WTKQDHC7.mjs.gz +0 -0
  15. package/dist/{Bar3DChartScene-M72WQW5Y.js → Bar3DChartScene-25G6TG53.js} +2 -2
  16. package/dist/Bar3DChartScene-25G6TG53.js.br +0 -0
  17. package/dist/Bar3DChartScene-25G6TG53.js.gz +0 -0
  18. package/dist/{Bar3DChartScene-HWIFFGI3.mjs → Bar3DChartScene-A5ICLHXS.mjs} +1 -1
  19. package/dist/{Bar3DChartScene-HWIFFGI3.mjs.br → Bar3DChartScene-A5ICLHXS.mjs.br} +0 -0
  20. package/dist/Bar3DChartScene-A5ICLHXS.mjs.gz +0 -0
  21. package/dist/{GLTFLoader-374ZNTXW.mjs → GLTFLoader-IWJFC4XI.mjs} +54 -16
  22. package/dist/GLTFLoader-IWJFC4XI.mjs.br +0 -0
  23. package/dist/GLTFLoader-IWJFC4XI.mjs.gz +0 -0
  24. package/dist/{GLTFLoader-Q7BHCGAW.js → GLTFLoader-KY7AYPMX.js} +178 -140
  25. package/dist/GLTFLoader-KY7AYPMX.js.br +0 -0
  26. package/dist/GLTFLoader-KY7AYPMX.js.gz +0 -0
  27. package/dist/{Line3DChartScene-7MPZWVF3.mjs → Line3DChartScene-ARCDLHXQ.mjs} +1 -1
  28. package/dist/Line3DChartScene-ARCDLHXQ.mjs.br +0 -0
  29. package/dist/Line3DChartScene-ARCDLHXQ.mjs.gz +0 -0
  30. package/dist/{Line3DChartScene-YOZEEQZ3.js → Line3DChartScene-WRZ52Z2Z.js} +2 -2
  31. package/dist/Line3DChartScene-WRZ52Z2Z.js.br +0 -0
  32. package/dist/Line3DChartScene-WRZ52Z2Z.js.gz +0 -0
  33. package/dist/{Model3DScene-5IJSNGDZ.js → Model3DScene-JGUG5NPX.js} +2 -2
  34. package/dist/Model3DScene-JGUG5NPX.js.br +0 -0
  35. package/dist/Model3DScene-JGUG5NPX.js.gz +0 -0
  36. package/dist/{Model3DScene-57LVY5QW.mjs → Model3DScene-PBKBL2YU.mjs} +1 -1
  37. package/dist/Model3DScene-PBKBL2YU.mjs.br +0 -0
  38. package/dist/Model3DScene-PBKBL2YU.mjs.gz +0 -0
  39. package/dist/OrbitControls-2XOMWUVE.mjs +3 -0
  40. package/dist/OrbitControls-2XOMWUVE.mjs.br +0 -0
  41. package/dist/OrbitControls-2XOMWUVE.mjs.gz +0 -0
  42. package/dist/OrbitControls-CGYUF3BY.js +12 -0
  43. package/dist/OrbitControls-CGYUF3BY.js.br +0 -0
  44. package/dist/OrbitControls-CGYUF3BY.js.gz +0 -0
  45. package/dist/{PieChart3DScene-UBI6X66Q.js → PieChart3DScene-S25DNSRS.js} +2 -2
  46. package/dist/PieChart3DScene-S25DNSRS.js.br +0 -0
  47. package/dist/PieChart3DScene-S25DNSRS.js.gz +0 -0
  48. package/dist/{PieChart3DScene-WD5B6NP3.mjs → PieChart3DScene-ZNKXS62H.mjs} +1 -1
  49. package/dist/{PieChart3DScene-WD5B6NP3.mjs.br → PieChart3DScene-ZNKXS62H.mjs.br} +0 -0
  50. package/dist/PieChart3DScene-ZNKXS62H.mjs.gz +0 -0
  51. package/dist/{SmartArt3DScene-ODKCGJBO.mjs → SmartArt3DScene-QZGIABOK.mjs} +2 -2
  52. package/dist/SmartArt3DScene-QZGIABOK.mjs.br +0 -0
  53. package/dist/SmartArt3DScene-QZGIABOK.mjs.gz +0 -0
  54. package/dist/{SmartArt3DScene-BK7QN3WT.js → SmartArt3DScene-T236GYUT.js} +33 -33
  55. package/dist/SmartArt3DScene-T236GYUT.js.br +0 -0
  56. package/dist/SmartArt3DScene-T236GYUT.js.gz +0 -0
  57. package/dist/{SurfaceChart3DScene-JZGU6BBD.mjs → SurfaceChart3DScene-EBT7RPCX.mjs} +1 -1
  58. package/dist/SurfaceChart3DScene-EBT7RPCX.mjs.br +0 -0
  59. package/dist/SurfaceChart3DScene-EBT7RPCX.mjs.gz +0 -0
  60. package/dist/{SurfaceChart3DScene-JGNPYQ32.js → SurfaceChart3DScene-LXBC3HMV.js} +2 -2
  61. package/dist/SurfaceChart3DScene-LXBC3HMV.js.br +0 -0
  62. package/dist/SurfaceChart3DScene-LXBC3HMV.js.gz +0 -0
  63. package/dist/{chunk-KVXB22D3.js → chunk-2LTTSFLD.js} +5 -5
  64. package/dist/chunk-2LTTSFLD.js.br +0 -0
  65. package/dist/chunk-2LTTSFLD.js.gz +0 -0
  66. package/dist/{chunk-23PW4Y4R.mjs → chunk-2OCTGK4L.mjs} +6 -110
  67. package/dist/chunk-2OCTGK4L.mjs.br +0 -0
  68. package/dist/chunk-2OCTGK4L.mjs.gz +0 -0
  69. package/dist/{chunk-EDMJYVCS.mjs → chunk-3KKPRPVE.mjs} +128 -143
  70. package/dist/chunk-3KKPRPVE.mjs.br +0 -0
  71. package/dist/chunk-3KKPRPVE.mjs.gz +0 -0
  72. package/dist/{chunk-B4QYQLZU.js → chunk-3N6AC4HA.js} +1122 -693
  73. package/dist/chunk-3N6AC4HA.js.br +0 -0
  74. package/dist/chunk-3N6AC4HA.js.gz +0 -0
  75. package/dist/{chunk-7YOA4HNP.mjs → chunk-5S3A6HL3.mjs} +121 -42
  76. package/dist/chunk-5S3A6HL3.mjs.br +0 -0
  77. package/dist/chunk-5S3A6HL3.mjs.gz +0 -0
  78. package/dist/{chunk-72LYFUGL.js → chunk-6R2EUDJQ.js} +1412 -1427
  79. package/dist/chunk-6R2EUDJQ.js.br +0 -0
  80. package/dist/chunk-6R2EUDJQ.js.gz +0 -0
  81. package/dist/{chunk-XBMKFZVP.mjs → chunk-7TAWW5QQ.mjs} +1120 -694
  82. package/dist/chunk-7TAWW5QQ.mjs.br +0 -0
  83. package/dist/chunk-7TAWW5QQ.mjs.gz +0 -0
  84. package/dist/{chunk-3AJ54EAB.js → chunk-BRJN3ZMG.js} +11 -1
  85. package/dist/chunk-BRJN3ZMG.js.br +0 -0
  86. package/dist/{chunk-3AJ54EAB.js.gz → chunk-BRJN3ZMG.js.gz} +0 -0
  87. package/dist/{chunk-QTGCOL5H.mjs → chunk-GNRVDNCV.mjs} +1707 -435
  88. package/dist/chunk-GNRVDNCV.mjs.br +0 -0
  89. package/dist/chunk-GNRVDNCV.mjs.gz +0 -0
  90. package/dist/{chunk-6C2WYLZY.js → chunk-IXS7DALE.js} +45 -39
  91. package/dist/chunk-IXS7DALE.js.br +0 -0
  92. package/dist/chunk-IXS7DALE.js.gz +0 -0
  93. package/dist/{chunk-NJ3WCYYG.js → chunk-LJ46KXUV.js} +179 -283
  94. package/dist/chunk-LJ46KXUV.js.br +0 -0
  95. package/dist/chunk-LJ46KXUV.js.gz +0 -0
  96. package/dist/{chunk-HMX3MQR7.mjs → chunk-MQUTXOET.mjs} +11 -2
  97. package/dist/chunk-MQUTXOET.mjs.br +0 -0
  98. package/dist/{chunk-HMX3MQR7.mjs.gz → chunk-MQUTXOET.mjs.gz} +0 -0
  99. package/dist/{chunk-3CBDTD46.mjs → chunk-MV2GCDBR.mjs} +8 -2
  100. package/dist/chunk-MV2GCDBR.mjs.br +0 -0
  101. package/dist/chunk-MV2GCDBR.mjs.gz +0 -0
  102. package/dist/{chunk-4SPZ5IZN.js → chunk-V32F4I45.js} +1713 -439
  103. package/dist/chunk-V32F4I45.js.br +0 -0
  104. package/dist/chunk-V32F4I45.js.gz +0 -0
  105. package/dist/{chunk-3UGVURWU.js → chunk-WGBXO4LM.js} +576 -497
  106. package/dist/chunk-WGBXO4LM.js.br +0 -0
  107. package/dist/chunk-WGBXO4LM.js.gz +0 -0
  108. package/dist/{chunk-7YJBRPCT.mjs → chunk-WRO37U2O.mjs} +1 -1
  109. package/dist/chunk-WRO37U2O.mjs.br +0 -0
  110. package/dist/chunk-WRO37U2O.mjs.gz +0 -0
  111. package/dist/i18n.js +4 -4
  112. package/dist/i18n.js.br +0 -0
  113. package/dist/i18n.js.gz +0 -0
  114. package/dist/i18n.mjs +1 -1
  115. package/dist/i18n.mjs.br +0 -0
  116. package/dist/i18n.mjs.gz +0 -0
  117. package/dist/index.d.ts +2 -0
  118. package/dist/index.js +47 -47
  119. package/dist/index.js.br +0 -0
  120. package/dist/index.js.gz +0 -0
  121. package/dist/index.mjs +6 -6
  122. package/dist/index.mjs.br +0 -0
  123. package/dist/index.mjs.gz +0 -0
  124. package/dist/internals.d.ts +18 -0
  125. package/dist/internals.d.ts.map +1 -1
  126. package/dist/internals.js +79 -79
  127. package/dist/internals.js.br +0 -0
  128. package/dist/internals.js.gz +0 -0
  129. package/dist/internals.mjs +4 -4
  130. package/dist/internals.mjs.br +0 -0
  131. package/dist/internals.mjs.gz +0 -0
  132. package/dist/pptx-viewer.css +1 -1
  133. package/dist/pptx-viewer.css.br +0 -0
  134. package/dist/pptx-viewer.css.gz +0 -0
  135. package/dist/three.module-LGUV2LI6.mjs +2 -0
  136. package/dist/three.module-LGUV2LI6.mjs.br +0 -0
  137. package/dist/three.module-LGUV2LI6.mjs.gz +0 -0
  138. package/dist/{three.module-GNNNRIMK.js → three.module-YZ4M24WM.js} +454 -442
  139. package/dist/three.module-YZ4M24WM.js.br +0 -0
  140. package/dist/three.module-YZ4M24WM.js.gz +0 -0
  141. package/dist/{useViewerBuildingBlocks-DkUGmlkP.d.ts → useViewerBuildingBlocks-4Tj6P8Fm.d.ts} +3 -1
  142. package/dist/useViewerBuildingBlocks-4Tj6P8Fm.d.ts.map +1 -0
  143. package/dist/viewer/index.js +27 -27
  144. package/dist/viewer/index.js.br +0 -0
  145. package/dist/viewer/index.js.gz +0 -0
  146. package/dist/viewer/index.mjs +6 -6
  147. package/dist/viewer/index.mjs.br +0 -0
  148. package/dist/viewer/index.mjs.gz +0 -0
  149. package/package.json +3 -3
  150. package/dist/AiChatPanel-4LKH44IE.mjs.br +0 -0
  151. package/dist/AiChatPanel-4LKH44IE.mjs.gz +0 -0
  152. package/dist/AiChatPanel-VWVGQ5DD.js.br +0 -0
  153. package/dist/AiChatPanel-VWVGQ5DD.js.gz +0 -0
  154. package/dist/Area3DChartScene-D7GSJGPQ.js.br +0 -0
  155. package/dist/Area3DChartScene-D7GSJGPQ.js.gz +0 -0
  156. package/dist/Area3DChartScene-X5SM67PZ.mjs.br +0 -0
  157. package/dist/Area3DChartScene-X5SM67PZ.mjs.gz +0 -0
  158. package/dist/Bar3DChartScene-HWIFFGI3.mjs.gz +0 -0
  159. package/dist/Bar3DChartScene-M72WQW5Y.js.br +0 -0
  160. package/dist/Bar3DChartScene-M72WQW5Y.js.gz +0 -0
  161. package/dist/GLTFLoader-374ZNTXW.mjs.br +0 -0
  162. package/dist/GLTFLoader-374ZNTXW.mjs.gz +0 -0
  163. package/dist/GLTFLoader-Q7BHCGAW.js.br +0 -0
  164. package/dist/GLTFLoader-Q7BHCGAW.js.gz +0 -0
  165. package/dist/Line3DChartScene-7MPZWVF3.mjs.br +0 -0
  166. package/dist/Line3DChartScene-7MPZWVF3.mjs.gz +0 -0
  167. package/dist/Line3DChartScene-YOZEEQZ3.js.br +0 -0
  168. package/dist/Line3DChartScene-YOZEEQZ3.js.gz +0 -0
  169. package/dist/Model3DScene-57LVY5QW.mjs.br +0 -0
  170. package/dist/Model3DScene-57LVY5QW.mjs.gz +0 -0
  171. package/dist/Model3DScene-5IJSNGDZ.js.br +0 -0
  172. package/dist/Model3DScene-5IJSNGDZ.js.gz +0 -0
  173. package/dist/OrbitControls-SMYCPLXO.js +0 -12
  174. package/dist/OrbitControls-SMYCPLXO.js.br +0 -3
  175. package/dist/OrbitControls-SMYCPLXO.js.gz +0 -0
  176. package/dist/OrbitControls-ZTGHPI5G.mjs +0 -3
  177. package/dist/OrbitControls-ZTGHPI5G.mjs.br +0 -0
  178. package/dist/OrbitControls-ZTGHPI5G.mjs.gz +0 -0
  179. package/dist/PieChart3DScene-UBI6X66Q.js.br +0 -0
  180. package/dist/PieChart3DScene-UBI6X66Q.js.gz +0 -0
  181. package/dist/PieChart3DScene-WD5B6NP3.mjs.gz +0 -0
  182. package/dist/SmartArt3DScene-BK7QN3WT.js.br +0 -0
  183. package/dist/SmartArt3DScene-BK7QN3WT.js.gz +0 -0
  184. package/dist/SmartArt3DScene-ODKCGJBO.mjs.br +0 -0
  185. package/dist/SmartArt3DScene-ODKCGJBO.mjs.gz +0 -0
  186. package/dist/SurfaceChart3DScene-JGNPYQ32.js.br +0 -0
  187. package/dist/SurfaceChart3DScene-JGNPYQ32.js.gz +0 -0
  188. package/dist/SurfaceChart3DScene-JZGU6BBD.mjs.br +0 -0
  189. package/dist/SurfaceChart3DScene-JZGU6BBD.mjs.gz +0 -0
  190. package/dist/chunk-23PW4Y4R.mjs.br +0 -0
  191. package/dist/chunk-23PW4Y4R.mjs.gz +0 -0
  192. package/dist/chunk-3AJ54EAB.js.br +0 -0
  193. package/dist/chunk-3CBDTD46.mjs.br +0 -0
  194. package/dist/chunk-3CBDTD46.mjs.gz +0 -0
  195. package/dist/chunk-3UGVURWU.js.br +0 -0
  196. package/dist/chunk-3UGVURWU.js.gz +0 -0
  197. package/dist/chunk-4SPZ5IZN.js.br +0 -0
  198. package/dist/chunk-4SPZ5IZN.js.gz +0 -0
  199. package/dist/chunk-6C2WYLZY.js.br +0 -0
  200. package/dist/chunk-6C2WYLZY.js.gz +0 -0
  201. package/dist/chunk-72LYFUGL.js.br +0 -0
  202. package/dist/chunk-72LYFUGL.js.gz +0 -0
  203. package/dist/chunk-7YJBRPCT.mjs.br +0 -0
  204. package/dist/chunk-7YJBRPCT.mjs.gz +0 -0
  205. package/dist/chunk-7YOA4HNP.mjs.br +0 -0
  206. package/dist/chunk-7YOA4HNP.mjs.gz +0 -0
  207. package/dist/chunk-B4QYQLZU.js.br +0 -0
  208. package/dist/chunk-B4QYQLZU.js.gz +0 -0
  209. package/dist/chunk-EDMJYVCS.mjs.br +0 -0
  210. package/dist/chunk-EDMJYVCS.mjs.gz +0 -0
  211. package/dist/chunk-HMX3MQR7.mjs.br +0 -0
  212. package/dist/chunk-KVXB22D3.js.br +0 -0
  213. package/dist/chunk-KVXB22D3.js.gz +0 -0
  214. package/dist/chunk-NJ3WCYYG.js.br +0 -0
  215. package/dist/chunk-NJ3WCYYG.js.gz +0 -0
  216. package/dist/chunk-QTGCOL5H.mjs.br +0 -0
  217. package/dist/chunk-QTGCOL5H.mjs.gz +0 -0
  218. package/dist/chunk-XBMKFZVP.mjs.br +0 -0
  219. package/dist/chunk-XBMKFZVP.mjs.gz +0 -0
  220. package/dist/three.module-AC7ESV4W.mjs +0 -2
  221. package/dist/three.module-AC7ESV4W.mjs.br +0 -0
  222. package/dist/three.module-AC7ESV4W.mjs.gz +0 -0
  223. package/dist/three.module-GNNNRIMK.js.br +0 -0
  224. package/dist/three.module-GNNNRIMK.js.gz +0 -0
  225. package/dist/useViewerBuildingBlocks-DkUGmlkP.d.ts.map +0 -1
Binary file
Binary file
@@ -1,6 +1,6 @@
1
- import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, DEFAULT_TEXT_FONT_SIZE, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, buildPdfFromTiledImageData, buildNotesPdf, GRID_SIZE } from './chunk-23PW4Y4R.mjs';
2
- import { GlyphOutlineFontCache, createGlyphOutlineLookup, DEFAULT_VIEWER_OPTIONS, TOOLBAR_TABS, MIN_TOUCH_TARGET_PX, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createPresenceProjector, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, createActiveAnimationGroup, cancelBuildReveal, clearPlaybackTimers, PresentationAnimationController, resolveMediaTimeNodeElementIds, advanceMainSequence, playGroup, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, createPresenterShowGuard, firstShowSlideIndex, attachPresentationVisibilityPause, presentationEntrySlideIndex, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, findInSlides, applyFindReplacements, visibleTemplateElements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, createPresentationLoadResources, collectMediaElements, resolveMediaElementSource, collectImagePaths, applyImagePathPatches, resolveTableCellImageUrls, resolveTableStyleImageUrls, partitionTemplateElements, seedRecentColors, resolveAuthoredCustomShowId, buildInitialGuides, readOnlyRecommendation, compatibilityWarningToasts, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, hasTextProperties, remapTextToSegments, updateMasterViewElement, isTemplateElementId, updateElement, hasShapeProperties, getInlineEditorSelection, applyListStyleUpdate, setPendingSelectionRestore, applyStyleToSelectedSegments, updateTextSegmentStyle, applyCaseTransformToSegments, transformTextCase, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, canInteractWithElement, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, resolveImageResolutionScale, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, describeFontEmbedding, isMobileViewport, resolveAuthoredSlideRange, mayLeaveSlideShow, stopAllPersistentAudio, guidePxToEmu, buildSaveSlides, buildDeckSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, shouldProbeAutosaveRecovery, probeAutosaveRecovery, acceptAutosaveRecovery, discardAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, collectReferencedFontFamilies, resolveGoogleWebfontHref, selectGoogleWebfontFamilies, fetchGoogleWebfontOutlineBytes, mapSlideShowStartKey, mapEditorKey, isEditorTextInputTarget, prepareElementForInsertion, createViewerOptionsStore, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, detectTouchDevice, detectOrientation, deriveViewportBreakpoints, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, scopeLayoutOptionsToSlide, checkModifyPassword, viewerPreferencesFromViewProperties, DEFAULT_VIEWER_PREFERENCES, viewPropertiesPatchFromPreferences, openPptxFile, readBackstageRecentFile, isActionHidden, buildInlineTextCommitPatch, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, savedPresentationFileName, downloadBlob, exportDeckJson, groupElements, generateElementId, makeCloneId, ungroupElements, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, mapPresentationWheel, openPendingPrintWindow, computeColorFilter, filterHiddenSlideIndices, computeSlideIndices, buildPrintDocument, finishPrintWindow, buildPrintHtmlDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, reResolveElementColors, resolveViewportFitOptions, calculateViewportFit, scheduleAutoAdvanceChain, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, resolveTransitionSoundAction, runPresentationAction, safeOpenUrl, buildRunProgramNotice, toggleStageElementMedia, resolveOleVerbTarget, downloadDataUrl, openUrlInNewTab, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, resolveExportCaptureDecision, recordProgressPercent, computeGridSpacingPx, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, resolveHistoryDepth, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, replyToCommentInList, removeTableElementColumn, insertTableElementColumn, removeTableElementRow, insertTableElementRow, updateCellTextStyleInRawXml, setCellText, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, GIF_POST_CAPTURE_MAX_SIDE, encodeGif, rasterResultToPngBlob, rasterizeElementTiles, placeTileOnPage, PDF_SLIDES_PAGE_WIDTH_PT, PDF_SLIDES_PAGE_HEIGHT_PT, canvasToJpegData, rasterizeElementTiledToCanvas, isPpactionUrl, parsePpactionUrl, resolvePresentationAction, ACTION_BUTTON_PRESETS, elementActionToPptxAction, isUrlSafe, buildSmartArtPresetData, classifyMediaType, computeSnapToShape, publishLiveGeometry, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, clampGifDimensions, rasterizeElement, shouldConfirmExternalHyperlink, applyResize, lockResizeAspect, snapBoxToGrid, applyMotionPathPreset } from './chunk-QTGCOL5H.mjs';
3
- import { translationsEn } from './chunk-HMX3MQR7.mjs';
1
+ import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, DEFAULT_TEXT_FONT_SIZE, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, buildPdfFromTiledImageData, buildNotesPdf, GRID_SIZE } from './chunk-2OCTGK4L.mjs';
2
+ import { GlyphOutlineFontCache, createGlyphOutlineLookup, DEFAULT_VIEWER_OPTIONS, TOOLBAR_TABS, MIN_TOUCH_TARGET_PX, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createPresenceProjector, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, createActiveAnimationGroup, cancelBuildReveal, clearPlaybackTimers, PresentationAnimationController, resolveMediaTimeNodeElementIds, advanceMainSequence, playGroup, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, createPresenterShowGuard, firstShowSlideIndex, attachPresentationVisibilityPause, presentationEntrySlideIndex, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, findInSlides, applyFindReplacements, visibleTemplateElements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, createPresentationLoadResources, collectMediaElements, resolveMediaElementSource, collectImagePaths, applyImagePathPatches, resolveTableCellImageUrls, resolveTableStyleImageUrls, partitionTemplateElements, seedRecentColors, resolveAuthoredCustomShowId, buildInitialGuides, readOnlyRecommendation, compatibilityWarningToasts, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, hasTextProperties, remapTextToSegments, updateMasterViewElement, isTemplateElementId, updateElement, hasShapeProperties, applyTextStyleUpdate, getInlineEditorSelection, setPendingSelectionRestore, toggleSelectionBullets, applyCaseTransformToSegments, transformTextCase, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, canInteractWithElement, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, resolveImageResolutionScale, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, describeFontEmbedding, isMobileViewport, resolveAuthoredSlideRange, mayLeaveSlideShow, stopAllPersistentAudio, guidePxToEmu, buildSaveSlides, buildDeckSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, shouldProbeAutosaveRecovery, probeAutosaveRecovery, acceptAutosaveRecovery, discardAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, collectReferencedFontFamilies, resolveGoogleWebfontHref, selectGoogleWebfontFamilies, fetchGoogleWebfontOutlineBytes, mapSlideShowStartKey, mapEditorKey, isEditorTextInputTarget, prepareElementForInsertion, createViewerOptionsStore, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, detectTouchDevice, detectOrientation, deriveViewportBreakpoints, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, scopeLayoutOptionsToSlide, checkModifyPassword, viewerPreferencesFromViewProperties, DEFAULT_VIEWER_PREFERENCES, viewPropertiesPatchFromPreferences, openPptxFile, readBackstageRecentFile, isActionHidden, buildInlineTextCommitPatch, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, savedPresentationFileName, downloadBlob, exportDeckJson, groupElements, generateElementId, makeCloneId, ungroupElements, alignElements, distributeElements, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, mapPresentationWheel, openPendingPrintWindow, computeColorFilter, filterHiddenSlideIndices, computeSlideIndices, buildPrintDocument, finishPrintWindow, buildPrintHtmlDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, reResolveElementColors, resolveViewportFitOptions, calculateViewportFit, scheduleAutoAdvanceChain, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, resolveTransitionSoundAction, runPresentationAction, safeOpenUrl, buildRunProgramNotice, toggleStageElementMedia, resolveOleVerbTarget, downloadDataUrl, openUrlInNewTab, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, resolveExportCaptureDecision, recordProgressPercent, computeGridSpacingPx, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, resolveHistoryDepth, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, replyToCommentInList, removeTableElementColumn, insertTableElementColumn, removeTableElementRow, insertTableElementRow, updateCellTextStyleInRawXml, setCellText, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, GIF_POST_CAPTURE_MAX_SIDE, encodeGif, rasterResultToPngBlob, rasterizeElementTiles, placeTileOnPage, PDF_SLIDES_PAGE_WIDTH_PT, PDF_SLIDES_PAGE_HEIGHT_PT, canvasToJpegData, rasterizeElementTiledToCanvas, isPpactionUrl, parsePpactionUrl, resolvePresentationAction, ACTION_BUTTON_PRESETS, elementActionToPptxAction, isUrlSafe, buildSmartArtPresetData, classifyMediaType, computeSnapToShape, publishLiveGeometry, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, clampGifDimensions, rasterizeElement, shouldConfirmExternalHyperlink, applyResize, lockResizeAspect, snapBoxToGrid, applyMotionPathPreset, bringForward, sendBackward, bringToFront, sendToBack } from './chunk-GNRVDNCV.mjs';
3
+ import { translationsEn } from './chunk-MQUTXOET.mjs';
4
4
  import { createContext, useRef, useState, useEffect, useCallback, useMemo, useLayoutEffect, useContext, useImperativeHandle, useSyncExternalStore } from 'react';
5
5
  import { useTranslation } from 'react-i18next';
6
6
 
@@ -471,6 +471,40 @@ function useSheetDismissDrag(onClose, threshold = 120) {
471
471
  handlers: { onPointerDown, onPointerMove, onPointerUp, onPointerCancel: onPointerUp }
472
472
  };
473
473
  }
474
+ var POLL_INTERVAL_MS = 16;
475
+ function usePointerReleaseWakeup(hasActivePointerInteraction) {
476
+ const [pointerReleaseNonce, setPointerReleaseNonce] = useState(0);
477
+ const gateRef = useRef(hasActivePointerInteraction);
478
+ const timerRef = useRef(null);
479
+ useEffect(() => {
480
+ gateRef.current = hasActivePointerInteraction;
481
+ }, [hasActivePointerInteraction]);
482
+ const deferUntilPointerReleased = useCallback(() => {
483
+ if (timerRef.current !== null) {
484
+ return;
485
+ }
486
+ const poll = () => {
487
+ if (gateRef.current()) {
488
+ timerRef.current = setTimeout(poll, POLL_INTERVAL_MS);
489
+ return;
490
+ }
491
+ timerRef.current = null;
492
+ setPointerReleaseNonce((previous) => previous + 1);
493
+ };
494
+ timerRef.current = setTimeout(poll, POLL_INTERVAL_MS);
495
+ }, []);
496
+ useEffect(() => {
497
+ return () => {
498
+ if (timerRef.current !== null) {
499
+ clearTimeout(timerRef.current);
500
+ timerRef.current = null;
501
+ }
502
+ };
503
+ }, []);
504
+ return { pointerReleaseNonce, deferUntilPointerReleased };
505
+ }
506
+
507
+ // src/viewer/hooks/useEditorHistory.ts
474
508
  var DEFAULT_MAX_HISTORY_ENTRIES = 120;
475
509
  function serializeDocument(snapshot) {
476
510
  return JSON.stringify({
@@ -511,6 +545,9 @@ function useEditorHistory(input) {
511
545
  const [undoLabel, setUndoLabel] = useState(void 0);
512
546
  const [redoLabel, setRedoLabel] = useState(void 0);
513
547
  const [editCommitNonce, setEditCommitNonce] = useState(0);
548
+ const { pointerReleaseNonce, deferUntilPointerReleased } = usePointerReleaseWakeup(
549
+ hasActivePointerInteraction
550
+ );
514
551
  const updateHistoryAvailability = useCallback(() => {
515
552
  setCanUndo(historyPastRef.current.length > 0);
516
553
  setCanRedo(historyFutureRef.current.length > 0);
@@ -648,9 +685,10 @@ function useEditorHistory(input) {
648
685
  return;
649
686
  }
650
687
  if (hasActivePointerInteraction()) {
688
+ deferUntilPointerReleased();
651
689
  return;
652
690
  }
653
- const cheapHash = `${pointerCommitNonce}|${editCommitNonce}|${slides.length}|${activeSlideIndex}|${canvasSize.width}x${canvasSize.height}|${slides.map((s) => `${s.id}:${s.elements.length}`).join("/")}`;
691
+ const cheapHash = `${pointerCommitNonce}|${editCommitNonce}|${pointerReleaseNonce}|${slides.length}|${activeSlideIndex}|${canvasSize.width}x${canvasSize.height}|${slides.map((s) => `${s.id}:${s.elements.length}`).join("/")}`;
654
692
  if (cheapHash === lastCheapHashRef.current) {
655
693
  return;
656
694
  }
@@ -690,12 +728,14 @@ function useEditorHistory(input) {
690
728
  buildHistorySnapshot,
691
729
  canvasSize.height,
692
730
  canvasSize.width,
731
+ deferUntilPointerReleased,
693
732
  editCommitNonce,
694
733
  error,
695
734
  hasActivePointerInteraction,
696
735
  loading,
697
736
  maxHistoryEntries,
698
737
  pointerCommitNonce,
738
+ pointerReleaseNonce,
699
739
  slides,
700
740
  updateHistoryAvailability
701
741
  ]);
@@ -2967,6 +3007,15 @@ function useFindReplace({
2967
3007
  const [findMatchCase, setFindMatchCase] = useState(false);
2968
3008
  const [findResults, setFindResults] = useState([]);
2969
3009
  const [findResultIndex, setFindResultIndex] = useState(-1);
3010
+ const pendingRefindRef = useRef(false);
3011
+ useEffect(() => {
3012
+ if (findReplaceOpen) {
3013
+ return;
3014
+ }
3015
+ setFindResults([]);
3016
+ setFindResultIndex(-1);
3017
+ pendingRefindRef.current = false;
3018
+ }, [findReplaceOpen]);
2970
3019
  const performFind = useCallback(() => {
2971
3020
  const results = findInSlides(slides, findQuery, { matchCase: findMatchCase });
2972
3021
  if (!findQuery) {
@@ -3013,15 +3062,22 @@ function useFindReplace({
3013
3062
  return;
3014
3063
  }
3015
3064
  applyReplacements([findResults[findResultIndex]]);
3016
- setTimeout(performFind, 0);
3017
- }, [findResults, findResultIndex, applyReplacements, performFind]);
3065
+ pendingRefindRef.current = true;
3066
+ }, [findResults, findResultIndex, applyReplacements]);
3018
3067
  const handleReplaceAll = useCallback(() => {
3019
3068
  if (findResults.length === 0) {
3020
3069
  return;
3021
3070
  }
3022
3071
  applyReplacements(findResults);
3023
- setTimeout(performFind, 0);
3024
- }, [findResults, applyReplacements, performFind]);
3072
+ pendingRefindRef.current = true;
3073
+ }, [findResults, applyReplacements]);
3074
+ useEffect(() => {
3075
+ if (!pendingRefindRef.current) {
3076
+ return;
3077
+ }
3078
+ pendingRefindRef.current = false;
3079
+ performFind();
3080
+ }, [performFind]);
3025
3081
  useEffect(() => {
3026
3082
  const handler = (event) => {
3027
3083
  const { action } = mapEditorKey(event, {
@@ -4414,38 +4470,46 @@ function useElementOperations(input) {
4414
4470
  }
4415
4471
  const isLiveEditing = selectedElement.id === inlineEditingElementId;
4416
4472
  const currentSegments = liveTextSegments();
4417
- const inlineSel = getInlineEditorSelection(currentSegments);
4418
- if (updates.listType) {
4419
- const result = applyListStyleUpdate(
4420
- { ...selectedElement, textSegments: currentSegments },
4421
- updates,
4422
- inlineSel
4423
- );
4424
- setPendingSelectionRestore(result.selection);
4425
- updateSelectedElement({
4426
- ...result.patch,
4427
- ...isLiveEditing ? { text: inlineEditingText } : {}
4428
- });
4473
+ const { patch, newSelection } = applyTextStyleUpdate(
4474
+ selectedElement,
4475
+ updates,
4476
+ getInlineEditorSelection(currentSegments),
4477
+ currentSegments
4478
+ );
4479
+ if (newSelection) {
4480
+ setPendingSelectionRestore(newSelection);
4481
+ }
4482
+ updateSelectedElement({
4483
+ ...patch,
4484
+ ...isLiveEditing ? { text: inlineEditingText } : {}
4485
+ });
4486
+ },
4487
+ [
4488
+ selectedElement,
4489
+ updateSelectedElement,
4490
+ inlineEditingElementId,
4491
+ inlineEditingText,
4492
+ liveTextSegments
4493
+ ]
4494
+ );
4495
+ const toggleSelectedBullets = useCallback(
4496
+ (kind) => {
4497
+ if (!selectedElement || !hasTextProperties(selectedElement)) {
4429
4498
  return;
4430
4499
  }
4431
- if (inlineSel && currentSegments) {
4432
- const { newSegments: newSegments2, newSelection } = applyStyleToSelectedSegments(
4433
- currentSegments,
4434
- inlineSel,
4435
- updates
4436
- );
4500
+ const isLiveEditing = selectedElement.id === inlineEditingElementId;
4501
+ const currentSegments = liveTextSegments();
4502
+ const { patch, newSelection } = toggleSelectionBullets(
4503
+ selectedElement,
4504
+ kind,
4505
+ getInlineEditorSelection(currentSegments),
4506
+ currentSegments
4507
+ );
4508
+ if (newSelection) {
4437
4509
  setPendingSelectionRestore(newSelection);
4438
- updateSelectedElement({
4439
- textSegments: newSegments2,
4440
- ...isLiveEditing ? { text: inlineEditingText } : {}
4441
- });
4442
- return;
4443
4510
  }
4444
- const newTextStyle = { ...selectedElement.textStyle, ...updates };
4445
- const newSegments = currentSegments?.map((seg) => updateTextSegmentStyle(seg, updates));
4446
4511
  updateSelectedElement({
4447
- textStyle: newTextStyle,
4448
- textSegments: newSegments,
4512
+ ...patch,
4449
4513
  ...isLiveEditing ? { text: inlineEditingText } : {}
4450
4514
  });
4451
4515
  },
@@ -4552,6 +4616,7 @@ function useElementOperations(input) {
4552
4616
  updateSelectedElement,
4553
4617
  updateSelectedShapeStyle,
4554
4618
  updateSelectedTextStyle,
4619
+ toggleSelectedBullets,
4555
4620
  updateSelectedTextCase,
4556
4621
  updateSlides,
4557
4622
  activeElements,
@@ -6285,10 +6350,23 @@ function useGroupAlignLayerHandlers(input) {
6285
6350
  effectiveSelectedIds,
6286
6351
  selectedElements,
6287
6352
  elementLookup,
6353
+ canvasSize,
6354
+ editTemplateMode = false,
6288
6355
  setSelectedElementIds,
6289
6356
  ops,
6290
6357
  history
6291
6358
  } = input;
6359
+ const updateElementsOwning = (elementId, updater) => {
6360
+ if (editTemplateMode && !isTemplateElementId(elementId)) {
6361
+ ops.updateSlides(
6362
+ (prev) => prev.map(
6363
+ (slide, index) => index === activeSlideIndex ? { ...slide, elements: updater(slide.elements) } : slide
6364
+ )
6365
+ );
6366
+ return;
6367
+ }
6368
+ ops.updateActiveElements(updater);
6369
+ };
6292
6370
  const handleGroupElements = () => {
6293
6371
  const ids = effectiveSelectedIds;
6294
6372
  if (ids.length < 2 || !activeSlide) {
@@ -6339,14 +6417,11 @@ function useGroupAlignLayerHandlers(input) {
6339
6417
  history.markDirty();
6340
6418
  };
6341
6419
  const handleAlignElements = (align) => {
6342
- if (selectedElements.length < 2) {
6343
- return;
6344
- }
6345
6420
  const edge = ALIGN_EDGE_BY_KEY[align];
6346
- if (!edge) {
6421
+ if (!edge || selectedElements.length === 0) {
6347
6422
  return;
6348
6423
  }
6349
- const positions = alignElements(selectedElements, edge);
6424
+ const positions = alignElements(selectedElements, edge, { slideSize: canvasSize });
6350
6425
  for (const [id, pos] of positions) {
6351
6426
  const el = elementLookup.get(id);
6352
6427
  if (!el) {
@@ -6381,7 +6456,8 @@ function useGroupAlignLayerHandlers(input) {
6381
6456
  return;
6382
6457
  }
6383
6458
  const id = selectedElement.id;
6384
- ops.updateActiveElements(
6459
+ updateElementsOwning(
6460
+ id,
6385
6461
  (els) => direction === "forward" ? bringForward(els, id) : direction === "backward" ? sendBackward(els, id) : els
6386
6462
  );
6387
6463
  history.markDirty();
@@ -6391,7 +6467,8 @@ function useGroupAlignLayerHandlers(input) {
6391
6467
  return;
6392
6468
  }
6393
6469
  const id = selectedElement.id;
6394
- ops.updateActiveElements(
6470
+ updateElementsOwning(
6471
+ id,
6395
6472
  (els) => direction === "front" ? bringToFront(els, id) : sendToBack(els, id)
6396
6473
  );
6397
6474
  history.markDirty();
@@ -9247,6 +9324,7 @@ function useEditorOperations(input) {
9247
9324
  selectedElementIdSet: state.selectedElementIdSet,
9248
9325
  elementLookup: state.elementLookup,
9249
9326
  editTemplateMode: state.editTemplateMode,
9327
+ canvasSize,
9250
9328
  clipboardPayload: state.clipboardPayload,
9251
9329
  setClipboardPayload: state.setClipboardPayload,
9252
9330
  setSelectedElementIds: state.setSelectedElementIds,
@@ -11321,6 +11399,7 @@ function buildToolbarProps(input) {
11321
11399
  onOpenReadingView: () => s.setShowReadingView(true),
11322
11400
  onOpenOutlineView: () => s.setShowOutlineView(true),
11323
11401
  onUpdateTextStyle: ops.updateSelectedTextStyle,
11402
+ onToggleBullets: ops.toggleSelectedBullets,
11324
11403
  onTransformTextCase: ops.updateSelectedTextCase,
11325
11404
  isOverflowMenuOpen: s.isOverflowMenuOpen,
11326
11405
  onSetOverflowMenuOpen: s.setIsOverflowMenuOpen,
Binary file
Binary file