pptx-react-viewer 4.46.0 → 4.47.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 (126) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +3 -0
  3. package/dist/{AiChatPanel-Z5VHI4WA.mjs → AiChatPanel-6S4LWXGM.mjs} +2 -2
  4. package/dist/AiChatPanel-6S4LWXGM.mjs.br +0 -0
  5. package/dist/AiChatPanel-6S4LWXGM.mjs.gz +0 -0
  6. package/dist/{AiChatPanel-TGZQBH3L.js → AiChatPanel-IEM43TTZ.js} +10 -10
  7. package/dist/AiChatPanel-IEM43TTZ.js.br +0 -0
  8. package/dist/AiChatPanel-IEM43TTZ.js.gz +0 -0
  9. package/dist/{Model3DScene-5HLXSIIK.js → Model3DScene-CCIG67DJ.js} +1 -1
  10. package/dist/Model3DScene-CCIG67DJ.js.br +0 -0
  11. package/dist/Model3DScene-CCIG67DJ.js.gz +0 -0
  12. package/dist/{Model3DScene-MSC4LEKG.mjs → Model3DScene-NUJH2UKM.mjs} +1 -1
  13. package/dist/Model3DScene-NUJH2UKM.mjs.br +0 -0
  14. package/dist/Model3DScene-NUJH2UKM.mjs.gz +0 -0
  15. package/dist/{chunk-FBN7UFW2.mjs → chunk-BVQSH5SS.mjs} +36 -43
  16. package/dist/chunk-BVQSH5SS.mjs.br +0 -0
  17. package/dist/chunk-BVQSH5SS.mjs.gz +0 -0
  18. package/dist/{chunk-UQFIRJGG.mjs → chunk-HDOR67HF.mjs} +226 -119
  19. package/dist/chunk-HDOR67HF.mjs.br +0 -0
  20. package/dist/chunk-HDOR67HF.mjs.gz +0 -0
  21. package/dist/{chunk-VJZJESNT.js → chunk-MA2BI7LX.js} +45 -61
  22. package/dist/chunk-MA2BI7LX.js.br +0 -0
  23. package/dist/chunk-MA2BI7LX.js.gz +0 -0
  24. package/dist/{chunk-AMXSOQRH.js → chunk-MRSGNERC.js} +401 -292
  25. package/dist/chunk-MRSGNERC.js.br +0 -0
  26. package/dist/chunk-MRSGNERC.js.gz +0 -0
  27. package/dist/{chunk-CLHUOZSY.mjs → chunk-OWZSRPAH.mjs} +244 -160
  28. package/dist/chunk-OWZSRPAH.mjs.br +0 -0
  29. package/dist/chunk-OWZSRPAH.mjs.gz +0 -0
  30. package/dist/{chunk-W2IMY5SY.js → chunk-PIRHQTI4.js} +0 -2
  31. package/dist/chunk-PIRHQTI4.js.br +0 -0
  32. package/dist/chunk-PIRHQTI4.js.gz +0 -0
  33. package/dist/{chunk-2J3467IB.js → chunk-SSANGQ35.js} +546 -462
  34. package/dist/chunk-SSANGQ35.js.br +0 -0
  35. package/dist/chunk-SSANGQ35.js.gz +0 -0
  36. package/dist/{chunk-Q3DHYOLK.mjs → chunk-UV2HVMKZ.mjs} +1 -2
  37. package/dist/chunk-UV2HVMKZ.mjs.br +0 -0
  38. package/dist/chunk-UV2HVMKZ.mjs.gz +0 -0
  39. package/dist/i18n.js +1 -1
  40. package/dist/i18n.js.br +2 -2
  41. package/dist/i18n.js.gz +0 -0
  42. package/dist/i18n.mjs +1 -1
  43. package/dist/i18n.mjs.br +1 -1
  44. package/dist/i18n.mjs.gz +0 -0
  45. package/dist/index.d.ts +42 -5
  46. package/dist/index.js +25 -25
  47. package/dist/index.js.br +0 -0
  48. package/dist/index.js.gz +0 -0
  49. package/dist/index.mjs +4 -4
  50. package/dist/index.mjs.br +0 -0
  51. package/dist/index.mjs.gz +0 -0
  52. package/dist/internals.d.ts +66 -7
  53. package/dist/internals.js +82 -82
  54. package/dist/internals.js.br +0 -0
  55. package/dist/internals.js.gz +0 -0
  56. package/dist/internals.mjs +3 -3
  57. package/dist/internals.mjs.br +0 -0
  58. package/dist/internals.mjs.gz +0 -0
  59. package/dist/pptx-viewer-canvas.css +2 -0
  60. package/dist/pptx-viewer-canvas.css.br +0 -0
  61. package/dist/pptx-viewer-canvas.css.gz +0 -0
  62. package/dist/pptx-viewer.css +1 -1
  63. package/dist/pptx-viewer.css.br +0 -0
  64. package/dist/pptx-viewer.css.gz +0 -0
  65. package/dist/{three.module-JPZUM7AI.mjs → three.module-EBJVANGB.mjs} +1 -1
  66. package/dist/three.module-EBJVANGB.mjs.br +0 -0
  67. package/dist/three.module-EBJVANGB.mjs.gz +0 -0
  68. package/dist/{three.module-RIUI7P3J.js → three.module-MBFHAT6M.js} +1 -1
  69. package/dist/three.module-MBFHAT6M.js.br +0 -0
  70. package/dist/three.module-MBFHAT6M.js.gz +0 -0
  71. package/dist/viewer/index.d.ts +44 -9
  72. package/dist/viewer/index.js +20 -20
  73. package/dist/viewer/index.js.br +0 -0
  74. package/dist/viewer/index.js.gz +0 -0
  75. package/dist/viewer/index.mjs +4 -4
  76. package/dist/viewer/index.mjs.br +0 -0
  77. package/dist/viewer/index.mjs.gz +0 -0
  78. package/dist/{y-webrtc-CCA4HVZZ.mjs → y-webrtc-2H7UYAQD.mjs} +1 -1
  79. package/dist/y-webrtc-2H7UYAQD.mjs.br +0 -0
  80. package/dist/y-webrtc-2H7UYAQD.mjs.gz +0 -0
  81. package/dist/{y-webrtc-MB5ZXFBA.js → y-webrtc-DVPQNFLL.js} +5 -5
  82. package/dist/y-webrtc-DVPQNFLL.js.br +0 -0
  83. package/dist/y-webrtc-DVPQNFLL.js.gz +0 -0
  84. package/dist/{y-websocket-JQQZVAMX.js → y-websocket-TN4OKPXQ.js} +1 -1
  85. package/dist/y-websocket-TN4OKPXQ.js.br +0 -0
  86. package/dist/y-websocket-TN4OKPXQ.js.gz +0 -0
  87. package/dist/{y-websocket-SCLLNICY.mjs → y-websocket-WORVRRQS.mjs} +1 -1
  88. package/dist/y-websocket-WORVRRQS.mjs.br +0 -0
  89. package/dist/y-websocket-WORVRRQS.mjs.gz +0 -0
  90. package/package.json +7 -5
  91. package/dist/AiChatPanel-TGZQBH3L.js.br +0 -0
  92. package/dist/AiChatPanel-TGZQBH3L.js.gz +0 -0
  93. package/dist/AiChatPanel-Z5VHI4WA.mjs.br +0 -0
  94. package/dist/AiChatPanel-Z5VHI4WA.mjs.gz +0 -0
  95. package/dist/Model3DScene-5HLXSIIK.js.br +0 -0
  96. package/dist/Model3DScene-5HLXSIIK.js.gz +0 -0
  97. package/dist/Model3DScene-MSC4LEKG.mjs.br +0 -0
  98. package/dist/Model3DScene-MSC4LEKG.mjs.gz +0 -0
  99. package/dist/chunk-2J3467IB.js.br +0 -0
  100. package/dist/chunk-2J3467IB.js.gz +0 -0
  101. package/dist/chunk-AMXSOQRH.js.br +0 -0
  102. package/dist/chunk-AMXSOQRH.js.gz +0 -0
  103. package/dist/chunk-CLHUOZSY.mjs.br +0 -0
  104. package/dist/chunk-CLHUOZSY.mjs.gz +0 -0
  105. package/dist/chunk-FBN7UFW2.mjs.br +0 -0
  106. package/dist/chunk-FBN7UFW2.mjs.gz +0 -0
  107. package/dist/chunk-Q3DHYOLK.mjs.br +0 -0
  108. package/dist/chunk-Q3DHYOLK.mjs.gz +0 -0
  109. package/dist/chunk-UQFIRJGG.mjs.br +0 -0
  110. package/dist/chunk-UQFIRJGG.mjs.gz +0 -0
  111. package/dist/chunk-VJZJESNT.js.br +0 -0
  112. package/dist/chunk-VJZJESNT.js.gz +0 -0
  113. package/dist/chunk-W2IMY5SY.js.br +0 -0
  114. package/dist/chunk-W2IMY5SY.js.gz +0 -0
  115. package/dist/three.module-JPZUM7AI.mjs.br +0 -0
  116. package/dist/three.module-JPZUM7AI.mjs.gz +0 -0
  117. package/dist/three.module-RIUI7P3J.js.br +0 -0
  118. package/dist/three.module-RIUI7P3J.js.gz +0 -0
  119. package/dist/y-webrtc-CCA4HVZZ.mjs.br +0 -0
  120. package/dist/y-webrtc-CCA4HVZZ.mjs.gz +0 -0
  121. package/dist/y-webrtc-MB5ZXFBA.js.br +0 -0
  122. package/dist/y-webrtc-MB5ZXFBA.js.gz +0 -0
  123. package/dist/y-websocket-JQQZVAMX.js.br +0 -0
  124. package/dist/y-websocket-JQQZVAMX.js.gz +0 -0
  125. package/dist/y-websocket-SCLLNICY.mjs.br +0 -0
  126. package/dist/y-websocket-SCLLNICY.mjs.gz +0 -0
Binary file
Binary file
@@ -25,7 +25,6 @@ var __copyProps = (to, from, except, desc) => {
25
25
  }
26
26
  return to;
27
27
  };
28
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
29
28
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
30
29
  // If the importer is in node compatibility mode or this is not an ESM
31
30
  // file that has been converted to a CommonJS file using a Babel-
@@ -35,4 +34,4 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
35
34
  mod
36
35
  ));
37
36
 
38
- export { __commonJS, __reExport, __require, __toESM };
37
+ export { __commonJS, __require, __toESM };
Binary file
Binary file
package/dist/i18n.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- require('./chunk-W2IMY5SY.js');
3
+ require('./chunk-PIRHQTI4.js');
4
4
  var i18n = require('ooxml-ui/pptx/i18n');
5
5
 
6
6
 
package/dist/i18n.js.br CHANGED
@@ -1,2 +1,2 @@
1
- ����ƞ-qK��wl`��b��]�@��k�����/4#؄$���P��T�B� �^ޅ�t]����~�R�m&�A��'c��_��>��q��:�
2
- p����R��M3,|#*
1
+ ����tc/����b�h`��bdc'/��z 9��_hF� I6�6�(Y�6�n<�� W�#z��k\o����6�� p�o����q��I)�q��z�p���k[��ğN�߈
2
+ FC����qH�Q�{ŧ�-�_���M�׎Qg���Y�4G���h�S�</�;?NSMn\ U9���E�j�vp
package/dist/i18n.js.gz CHANGED
Binary file
package/dist/i18n.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import './chunk-Q3DHYOLK.mjs';
1
+ import './chunk-UV2HVMKZ.mjs';
2
2
  export { LOCALE_CATALOG, keyToLabel, translationsEn } from 'ooxml-ui/pptx/i18n';
package/dist/i18n.mjs.br CHANGED
@@ -1,3 +1,3 @@
1
- �7�import './chunk-Q3DHYOLK.mjs';
1
+ �7�import './chunk-UV2HVMKZ.mjs';
2
2
  export { LOCALE_CATALOG, keyToLabel, translationsEn } from 'ooxml-ui/pptx/i18n';
3
3
  
package/dist/i18n.mjs.gz CHANGED
Binary file
package/dist/index.d.ts CHANGED
@@ -1,16 +1,16 @@
1
1
  import * as React$1 from 'react';
2
2
  import React$1__default from 'react';
3
3
  import * as ooxml_ui_pptx from 'ooxml-ui/pptx';
4
- import { CollaborationRole, CollaborationConfig, ViewportFitOptions, ViewerFontSource, CanvasSize, ViewerTheme, ThemeCatalogEntry, AccountAuthConfig, CollaborationInput, ToolbarActionId, RibbonAddInTab, ViewerCustomization, PowerPointViewerAPI, ViewerCustomizationApi, CollaborationLivePatcher, InlineListReadResult, EditorImagePasteOptions, ViewerMode, RulerUnit, ElementAnimationState, ShapeAdjustmentHandleDescriptor, InlineTextEditSnapshot, ZoomNavigationTarget, FieldSubstitutionContext, EditPointsCommandId, EditPointsElementPatch, FreeformToolKind, ElementClipboardPayload, AnimationApplyGroup, InsertChartKind, ChangeCaseMode, SlideTemplateId, ReviewCommentsHost, CollaborationShellState } from 'ooxml-ui/pptx';
4
+ import { CollaborationRole, CollaborationConfig, ViewportFitOptions, ViewerFontSource, CanvasSize, DocumentStorage, ViewerAutosaveStatus, AutosaveRecord, ConnectionStatus, ViewerTheme, ThemeCatalogEntry, AccountAuthConfig, CollaborationInput, ToolbarActionId, RibbonAddInTab, ViewerCustomization, PowerPointViewerAPI, ViewerCustomizationApi, CollaborationLivePatcher, InlineListReadResult, EditorImagePasteOptions, ViewerMode, RulerUnit, ElementAnimationState, ShapeAdjustmentHandleDescriptor, InlineTextEditSnapshot, ZoomNavigationTarget, FieldSubstitutionContext, EditPointsCommandId, EditPointsElementPatch, FreeformToolKind, ElementClipboardPayload, AnimationApplyGroup, InsertChartKind, ChangeCaseMode, SlideTemplateId, ReviewCommentsHost, CollaborationShellState } from 'ooxml-ui/pptx';
5
5
  export { AVATAR_COLOR_SWATCHES, AccountAuthConfig, BACKSTAGE_CARD_IDS, BACKSTAGE_PAGE_IDS, BackstageCustomization, CANVAS_CONTEXT_MENU_COMMAND_IDS, CollaborationConfig, CollaborationShellState, ContextMenuCustomization, DEFAULT_VIEWER_PROFILE, EDITOR_SHORTCUT_ACTION_IDS, ELEMENT_CONTEXT_MENU_COMMAND_IDS, ElementUpdate, ElementUpdateOptions, ExternalCollaborationAwareness, ExternalCollaborationSession, ExternalCollaborationSnapshot, HostCanvasMenuContext, HostElementMenuContext, HostMenuCommand, KeyboardCustomization, LocalStorageUsageSummary, OPTIONS_PAGE_IDS, OPTIONS_SECTION_IDS, OPTIONS_SETTING_IDS, OptionsCustomization, OptionsPageId, OptionsSectionId, OptionsSettingId, OptionsSettingValues, PPTX_OPEN_ACCEPT, PRESENTATION_OPEN_EXTENSIONS, PowerPointViewerAPI, RIBBON_TAB_IDS, ResolvedCustomization, RibbonCustomization, SLIDE_TEMPLATES, SavedPresentationFormat, ShortcutChord, SlideTemplateId, SlideTemplateSpec, StoredViewerPrefs, THEME_CATALOG, TOOLBAR_BUTTON_IDS, ThemeCatalogEntry, ToolbarActionId, ToolbarButtonId, ToolbarTabId, VIEWER_DIALOG_IDS, VIEWER_EXPORT_FORMAT_IDS, VIEWER_FEATURE_IDS, VIEWER_PANEL_IDS, VIEWER_PREFS_STORAGE_KEY, ViewerCustomization, ViewerCustomizationApi, ViewerDialogId, ViewerExportFormatId, ViewerFeatureId, ViewerMode, ViewerPanelId, ViewerProfile, ViewerTheme, ViewerThemeColors, ViewportFitOptions, ViewportFitPadding, buildSlideTemplateContent, buildSlideTemplateSlide, clearAllLocalViewerData, clearStoredViewerPrefs, createImageElementFromFile, defaultCssVars, defaultRadius, defaultThemeColors, describeCollaborationShellState, getLocalStorageUsageSummary, isLegacyBinaryPresentation, isSupportedPresentationFile, presentationBaseName, readStoredViewerPrefs, resolveProfileInitial, resolveThemeCatalogEntry, saveViewerProfile, savedPresentationFileName, themeToCssVars, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, writeStoredViewerPrefs } from 'ooxml-ui/pptx';
6
6
  import { LocaleCatalogEntry } from 'ooxml-ui/pptx/i18n';
7
7
  export { LOCALE_CATALOG, LocaleCatalogEntry } from 'ooxml-ui/pptx/i18n';
8
+ import { PptxCoreProperties, PptxAnimationPreset, PptxNativeAnimation, PptxSlide, PptxElement, TextStyle, InkPptxElement, ShapePptxElement, PptxAction, PptxComment, PptxElementAnimation, ConnectorPptxElement, ParsedTableStyleMap, PptxTheme, ShapeStyle, PptxLayoutOption, PptxLayoutPreview, PptxCustomShow, PptxSlideTransition, PptxPresentationProperties } from 'ooxml-core/pptx';
8
9
  import { CollaborationWriteBackState, CollaborationState } from 'ooxml-core/collab';
9
10
  export { CollaborationState } from 'ooxml-core/collab';
10
11
  import { PptxAiConfig } from 'ooxml-ui/pptx/ai';
11
12
  export { PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiToolName, PptxAiWritePolicy } from 'ooxml-ui/pptx/ai';
12
13
  import { Doc } from 'yjs';
13
- import { PptxAnimationPreset, PptxNativeAnimation, PptxSlide, PptxElement, TextStyle, InkPptxElement, ShapePptxElement, PptxAction, PptxComment, PptxElementAnimation, ConnectorPptxElement, ParsedTableStyleMap, PptxTheme, ShapeStyle, PptxLayoutOption, PptxLayoutPreview, PptxCustomShow, PptxSlideTransition, PptxPresentationProperties } from 'ooxml-core/pptx';
14
14
  import { Options } from 'html2canvas-pro';
15
15
 
16
16
  //#region src/viewer/types-core.d.ts
@@ -50,7 +50,7 @@ declare function useViewerTheme(): ViewerTheme | undefined;
50
50
  //#endregion
51
51
  //#region src/viewer/hooks/collaboration/types.d.ts
52
52
  /** Connection lifecycle states for the Yjs WebSocket provider. */
53
- type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'error';
53
+ type ConnectionStatus$1 = 'disconnected' | 'connecting' | 'connected' | 'error';
54
54
  /**
55
55
  * Presence data broadcast to other participants.
56
56
  * Cursor position is relative to the slide canvas (0..canvasWidth, 0..canvasHeight).
@@ -80,7 +80,7 @@ interface UserPresence {
80
80
  /** Value exposed by `CollaborationContext`. */
81
81
  interface CollaborationContextValue {
82
82
  /** Current WebSocket connection status. */
83
- status: ConnectionStatus;
83
+ status: ConnectionStatus$1;
84
84
  /** Presence data for all remote users (excludes the local user). */
85
85
  remoteUsers: UserPresence[];
86
86
  /** Broadcast the local user's presence state. */
@@ -185,7 +185,7 @@ interface PowerPointViewerProps extends ViewportFitOptions {
185
185
  * and canvas size.
186
186
  */
187
187
  onLoad?: (detail: ViewerLoadDetail) => void;
188
- /** Fired once per distinct load failure, with a human-readable message. */
188
+ /** Fired once per distinct load failure, and for each failed Save / Save As, with a human-readable message. */
189
189
  onError?: (message: string) => void;
190
190
  /**
191
191
  * Host override for the File ▸ Open action. When provided, the built-in
@@ -196,6 +196,12 @@ interface PowerPointViewerProps extends ViewportFitOptions {
196
196
  onOpenFile?: () => void;
197
197
  /** Whether editing actions are enabled */
198
198
  canEdit?: boolean;
199
+ /**
200
+ * Makes the deck read-only (default `false`). It is the inverse of the edit switch: true wins
201
+ * over it, false only lifts this restriction, so editing still needs the edit switch and
202
+ * is never granted over a collaboration `viewer` role or `capabilities.edit`.
203
+ */
204
+ readOnly?: boolean;
199
205
  /**
200
206
  * Recovery autosave: after an edit the deck is re-serialised (always as a
201
207
  * plain, unencrypted package, because recovery has no password) and stashed
@@ -218,6 +224,35 @@ interface PowerPointViewerProps extends ViewportFitOptions {
218
224
  * "Save AutoRecover information every N minutes" (two minutes by default).
219
225
  */
220
226
  autosaveIntervalMs?: number;
227
+ /**
228
+ * Host-owned storage (`DocumentStorage` from `ooxml-core/embedding`). When set,
229
+ * Save and Save As hand the bytes to `storage.save()` instead of downloading
230
+ * them, and recovery autosave snapshots go to the storage's recovery methods
231
+ * (`readRecovery` / `writeRecovery` / `clearRecovery`) instead of IndexedDB
232
+ * when it provides them.
233
+ */
234
+ storage?: DocumentStorage;
235
+ /** Fired with the serialised deck each time a recovery autosave snapshot is written. */
236
+ onAutosave?: (content: Uint8Array) => void;
237
+ /** Fired when the user enables or disables autosave (title bar or File > Options). */
238
+ onAutosaveToggle?: (enabled: boolean) => void;
239
+ /** Fired on every autosave lifecycle transition (`idle`, `saving`, `saved`, `error`). */
240
+ onAutosaveStatus?: (status: ViewerAutosaveStatus) => void;
241
+ /**
242
+ * Fired when a recovery snapshot left by a previous session is found for this deck. The
243
+ * built-in recovery prompt is shown as well.
244
+ */
245
+ onAutosaveRecovery?: (record: AutosaveRecord) => void;
246
+ /** Fired after any committed document edit (move, resize, text, undo, redo, ...). */
247
+ onChange?: () => void;
248
+ /** Fired with the changed fields when the user saves the document properties dialog. */
249
+ onPropertiesChange?: (updates: Partial<PptxCoreProperties>) => void;
250
+ /** Fired with the new speaker-notes text when the user edits the notes of a slide. */
251
+ onNotesUpdate?: (notes: string) => void;
252
+ /** Fired when presentation (slide show) mode is entered (`true`) or left (`false`). */
253
+ onPresentationChange?: (presenting: boolean) => void;
254
+ /** Fired on every collaboration connection-status transition. */
255
+ onCollaborationStatus?: (status: ConnectionStatus) => void;
221
256
  /** Optional class name */
222
257
  className?: string;
223
258
  /**
@@ -640,6 +675,8 @@ interface ToolbarProps {
640
675
  onExportGif: () => void;
641
676
  onExportJson: () => void;
642
677
  onOpenShareDialog?: () => void;
678
+ /** File > Save (the backstage Save item): reported to host storage as `save`, not Save As. */
679
+ onSave?: () => void;
643
680
  onSaveAsPptx: () => void;
644
681
  onSaveAsPpsx: () => void;
645
682
  onSaveAsPptm: () => void;
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunk2J3467IB_js = require('./chunk-2J3467IB.js');
4
- var chunkAMXSOQRH_js = require('./chunk-AMXSOQRH.js');
5
- var chunkVJZJESNT_js = require('./chunk-VJZJESNT.js');
6
- require('./chunk-W2IMY5SY.js');
3
+ var chunkSSANGQ35_js = require('./chunk-SSANGQ35.js');
4
+ var chunkMRSGNERC_js = require('./chunk-MRSGNERC.js');
5
+ var chunkMA2BI7LX_js = require('./chunk-MA2BI7LX.js');
6
+ require('./chunk-PIRHQTI4.js');
7
7
  var pptx = require('ooxml-ui/pptx');
8
8
  var i18n = require('ooxml-ui/pptx/i18n');
9
9
 
@@ -11,87 +11,87 @@ var i18n = require('ooxml-ui/pptx/i18n');
11
11
 
12
12
  Object.defineProperty(exports, "PowerPointViewer", {
13
13
  enumerable: true,
14
- get: function () { return chunk2J3467IB_js.PowerPointViewer; }
14
+ get: function () { return chunkSSANGQ35_js.PowerPointViewer; }
15
15
  });
16
16
  Object.defineProperty(exports, "SlideCanvas", {
17
17
  enumerable: true,
18
- get: function () { return chunk2J3467IB_js.SlideCanvas; }
18
+ get: function () { return chunkSSANGQ35_js.SlideCanvas; }
19
19
  });
20
20
  Object.defineProperty(exports, "SlideTemplateGalleryDialog", {
21
21
  enumerable: true,
22
- get: function () { return chunk2J3467IB_js.SlideTemplateGalleryDialog; }
22
+ get: function () { return chunkSSANGQ35_js.SlideTemplateGalleryDialog; }
23
23
  });
24
24
  Object.defineProperty(exports, "SlideTemplatePreview", {
25
25
  enumerable: true,
26
- get: function () { return chunk2J3467IB_js.SlideTemplatePreview; }
26
+ get: function () { return chunkSSANGQ35_js.SlideTemplatePreview; }
27
27
  });
28
28
  Object.defineProperty(exports, "THEME_CATALOG", {
29
29
  enumerable: true,
30
- get: function () { return chunk2J3467IB_js.THEME_CATALOG; }
30
+ get: function () { return chunkSSANGQ35_js.THEME_CATALOG; }
31
31
  });
32
32
  Object.defineProperty(exports, "Toolbar", {
33
33
  enumerable: true,
34
- get: function () { return chunk2J3467IB_js.Toolbar; }
34
+ get: function () { return chunkSSANGQ35_js.Toolbar; }
35
35
  });
36
36
  Object.defineProperty(exports, "ViewerThemeProvider", {
37
37
  enumerable: true,
38
- get: function () { return chunk2J3467IB_js.ViewerThemeProvider; }
38
+ get: function () { return chunkSSANGQ35_js.ViewerThemeProvider; }
39
39
  });
40
40
  Object.defineProperty(exports, "defaultCssVars", {
41
41
  enumerable: true,
42
- get: function () { return chunk2J3467IB_js.defaultCssVars; }
42
+ get: function () { return chunkSSANGQ35_js.defaultCssVars; }
43
43
  });
44
44
  Object.defineProperty(exports, "defaultRadius", {
45
45
  enumerable: true,
46
- get: function () { return chunk2J3467IB_js.defaultRadius; }
46
+ get: function () { return chunkSSANGQ35_js.defaultRadius; }
47
47
  });
48
48
  Object.defineProperty(exports, "defaultThemeColors", {
49
49
  enumerable: true,
50
- get: function () { return chunk2J3467IB_js.defaultThemeColors; }
50
+ get: function () { return chunkSSANGQ35_js.defaultThemeColors; }
51
51
  });
52
52
  Object.defineProperty(exports, "resolveThemeCatalogEntry", {
53
53
  enumerable: true,
54
- get: function () { return chunk2J3467IB_js.resolveThemeCatalogEntry; }
54
+ get: function () { return chunkSSANGQ35_js.resolveThemeCatalogEntry; }
55
55
  });
56
56
  Object.defineProperty(exports, "themeToCssVars", {
57
57
  enumerable: true,
58
- get: function () { return chunk2J3467IB_js.themeToCssVars; }
58
+ get: function () { return chunkSSANGQ35_js.themeToCssVars; }
59
59
  });
60
60
  Object.defineProperty(exports, "useViewerTheme", {
61
61
  enumerable: true,
62
- get: function () { return chunk2J3467IB_js.useViewerTheme; }
62
+ get: function () { return chunkSSANGQ35_js.useViewerTheme; }
63
63
  });
64
64
  Object.defineProperty(exports, "vermilionDarkColors", {
65
65
  enumerable: true,
66
- get: function () { return chunk2J3467IB_js.vermilionDarkColors; }
66
+ get: function () { return chunkSSANGQ35_js.vermilionDarkColors; }
67
67
  });
68
68
  Object.defineProperty(exports, "vermilionDarkTheme", {
69
69
  enumerable: true,
70
- get: function () { return chunk2J3467IB_js.vermilionDarkTheme; }
70
+ get: function () { return chunkSSANGQ35_js.vermilionDarkTheme; }
71
71
  });
72
72
  Object.defineProperty(exports, "vermilionLightColors", {
73
73
  enumerable: true,
74
- get: function () { return chunk2J3467IB_js.vermilionLightColors; }
74
+ get: function () { return chunkSSANGQ35_js.vermilionLightColors; }
75
75
  });
76
76
  Object.defineProperty(exports, "vermilionLightTheme", {
77
77
  enumerable: true,
78
- get: function () { return chunk2J3467IB_js.vermilionLightTheme; }
78
+ get: function () { return chunkSSANGQ35_js.vermilionLightTheme; }
79
79
  });
80
80
  Object.defineProperty(exports, "vermilionRadius", {
81
81
  enumerable: true,
82
- get: function () { return chunk2J3467IB_js.vermilionRadius; }
82
+ get: function () { return chunkSSANGQ35_js.vermilionRadius; }
83
83
  });
84
84
  Object.defineProperty(exports, "renderToCanvas", {
85
85
  enumerable: true,
86
- get: function () { return chunkAMXSOQRH_js.renderToCanvas; }
86
+ get: function () { return chunkMRSGNERC_js.renderToCanvas; }
87
87
  });
88
88
  Object.defineProperty(exports, "useViewerBuildingBlocks", {
89
89
  enumerable: true,
90
- get: function () { return chunkAMXSOQRH_js.useViewerBuildingBlocks; }
90
+ get: function () { return chunkMRSGNERC_js.useViewerBuildingBlocks; }
91
91
  });
92
92
  Object.defineProperty(exports, "getAnimationInitialStyle", {
93
93
  enumerable: true,
94
- get: function () { return chunkVJZJESNT_js.getAnimationInitialStyle; }
94
+ get: function () { return chunkMA2BI7LX_js.getAnimationInitialStyle; }
95
95
  });
96
96
  Object.defineProperty(exports, "AVATAR_COLOR_SWATCHES", {
97
97
  enumerable: true,
package/dist/index.js.br CHANGED
Binary file
package/dist/index.js.gz CHANGED
Binary file
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
- export { PowerPointViewer, SlideCanvas, SlideTemplateGalleryDialog, SlideTemplatePreview, THEME_CATALOG, Toolbar, ViewerThemeProvider, defaultCssVars, defaultRadius, defaultThemeColors, resolveThemeCatalogEntry, themeToCssVars, useViewerTheme, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius } from './chunk-CLHUOZSY.mjs';
2
- export { renderToCanvas, useViewerBuildingBlocks } from './chunk-UQFIRJGG.mjs';
3
- export { getAnimationInitialStyle } from './chunk-FBN7UFW2.mjs';
4
- import './chunk-Q3DHYOLK.mjs';
1
+ export { PowerPointViewer, SlideCanvas, SlideTemplateGalleryDialog, SlideTemplatePreview, THEME_CATALOG, Toolbar, ViewerThemeProvider, defaultCssVars, defaultRadius, defaultThemeColors, resolveThemeCatalogEntry, themeToCssVars, useViewerTheme, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius } from './chunk-OWZSRPAH.mjs';
2
+ export { renderToCanvas, useViewerBuildingBlocks } from './chunk-HDOR67HF.mjs';
3
+ export { getAnimationInitialStyle } from './chunk-BVQSH5SS.mjs';
4
+ import './chunk-UV2HVMKZ.mjs';
5
5
  export { AVATAR_COLOR_SWATCHES, BACKSTAGE_CARD_IDS, BACKSTAGE_PAGE_IDS, CANVAS_CONTEXT_MENU_COMMAND_IDS, DEFAULT_VIEWER_PROFILE, EDITOR_SHORTCUT_ACTION_IDS, ELEMENT_CONTEXT_MENU_COMMAND_IDS, OPTIONS_PAGE_IDS, OPTIONS_SECTION_IDS, OPTIONS_SETTING_IDS, PPTX_OPEN_ACCEPT, PRESENTATION_OPEN_EXTENSIONS, RIBBON_TAB_IDS, SLIDE_TEMPLATES, TOOLBAR_BUTTON_IDS, VIEWER_DIALOG_IDS, VIEWER_EXPORT_FORMAT_IDS, VIEWER_FEATURE_IDS, VIEWER_PANEL_IDS, VIEWER_PREFS_STORAGE_KEY, buildSlideTemplateContent, buildSlideTemplateSlide, clearAllLocalViewerData, clearStoredViewerPrefs, createImageElementFromFile, describeCollaborationShellState, getLocalStorageUsageSummary, isLegacyBinaryPresentation, isSupportedPresentationFile, presentationBaseName, readStoredViewerPrefs, resolveProfileInitial, saveViewerProfile, savedPresentationFileName, writeStoredViewerPrefs } from 'ooxml-ui/pptx';
6
6
  export { LOCALE_CATALOG } from 'ooxml-ui/pptx/i18n';
package/dist/index.mjs.br CHANGED
Binary file
package/dist/index.mjs.gz CHANGED
Binary file
@@ -1,4 +1,4 @@
1
- import { CollaborationRole, CollaborationConfig, PowerPointViewerAPI, ViewerCustomizationApi, ShapeAdjustmentHandleDescriptor, ChangeCaseMode, ResolvedKeyboardCustomization, FindResult, EditorImagePasteOptions, InsertChartKind, PasteSpecialFormat, SlidePasteRequest, SlideTemplateId, MorphTransitionPlan, ElementAnimationState, ZoomNavigationTarget, PresentationSnapshot, ViewerMode, ShapeAdjustmentDragState, InlineTextEditSnapshot, InlineListReadResult, FreeformToolKind, CollaborationLivePatcher, SlideSizeEmu, ElementClipboardPayload, CropSession, FontEmbeddingDescriptor, MasterViewTarget, ViewportFitOptions, CollaborationInput, ToolbarActionId, CollaborationShellState, AnimationApplyGroup, ReviewCommentsHost, RulerUnit, FieldSubstitutionContext, EditPointsCommandId, EditPointsElementPatch, PresentationPointerTool, RunProgramNotice, BorrowedCollaborationAwareness, CollabLoadOrigin, AuthoredSlideRange, FragmentedLayer, PrintSettings, ThemeEditorEdit, CompareResult, ReadOnlyRecommendation, CompatibilityWarningToast, DeviceOrientation, ResolvedCustomization, DeckSavePurpose, ZoomExcursion, TouchGestureCallbacks, ViewerOptionsStore, ViewerOptions, AutosaveRecoveryPrompt, VirtualizedRange, ToolbarTabId } from 'ooxml-ui/pptx';
1
+ import { CollaborationRole, CollaborationConfig, PowerPointViewerAPI, ViewerCustomizationApi, ShapeAdjustmentHandleDescriptor, ChangeCaseMode, ResolvedKeyboardCustomization, FindResult, EditorImagePasteOptions, InsertChartKind, PasteSpecialFormat, SlidePasteRequest, SlideTemplateId, MorphTransitionPlan, ElementAnimationState, ZoomNavigationTarget, PresentationSnapshot, DocumentStorage, ViewerMode, ShapeAdjustmentDragState, InlineTextEditSnapshot, InlineListReadResult, FreeformToolKind, CollaborationLivePatcher, SlideSizeEmu, ElementClipboardPayload, CropSession, FontEmbeddingDescriptor, MasterViewTarget, ViewportFitOptions, CollaborationInput, ToolbarActionId, CollaborationShellState, AnimationApplyGroup, ReviewCommentsHost, RulerUnit, FieldSubstitutionContext, EditPointsCommandId, EditPointsElementPatch, PresentationPointerTool, RunProgramNotice, BorrowedCollaborationAwareness, CollabLoadOrigin, AuthoredSlideRange, DocumentSaveReason, FragmentedLayer, PrintSettings, ThemeEditorEdit, CompareResult, ReadOnlyRecommendation, CompatibilityWarningToast, DeviceOrientation, ResolvedCustomization, AutosaveRecord, DeckSavePurpose, ZoomExcursion, TouchGestureCallbacks, ViewerAutosaveStatus, ViewerOptionsStore, ViewerOptions, AutosaveRecoveryPrompt, VirtualizedRange, ToolbarTabId } from 'ooxml-ui/pptx';
2
2
  export { CINEMATIC_TRANSITION_KEYFRAMES, CollaborationConfig, DEFAULT_MORPH_DURATION_MS, DEFAULT_TRANSITION_DURATION_MS, DeviceOrientation, EASE, INSTANT, MOBILE_BREAKPOINT, P14_TRANSITION_KEYFRAMES, P14_TRANSITION_KEYFRAMES_2, P14_TRANSITION_KEYFRAMES_ALL, RANDOM_ELIGIBLE_TYPES, ResolvedDirection, ResolvedDirection8, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_KEYFRAMES_CSS, SlideTransitionAnimations, TABLET_BREAKPOINT, TRANSITION_SPEED_DURATION_MS, TouchGestureCallbacks, VirtualizedRange, WHEEL_SPOKE_COUNTS, computeVirtualRange, getCinematicTransitionAnimations, getP14TransitionAnimations, getSlideTransitionAnimations, resolveDirection, resolveDirection8, resolveOrientation, resolveSlideTransition, resolveTransitionDurationMs, resolveWheelSpokeCount } from 'ooxml-ui/pptx';
3
3
  import { PptxSlide, PptxElement, PptxElementAnimation, TextStyle, PptxHeaderFooter, ShapeStyle, PptxCommentMention, SmartArtLayout, InkPptxElement, ShapePptxElement, MergeShapeOperation, PptxSlideTransition, PptxAction, PptxSlideMaster, PptxModernCommentAuthor, PptxTheme, ParsedTableStyleMap, PptxThemeOption, PptxCustomShow, PptxSection, PptxPresentationProperties, PptxViewProperties, PptxNotesMaster, PptxHandoutMaster, PptxCustomProperty, PptxTagCollection, PptxCoreProperties, PptxAppProperties, PptxEmbeddedFont, MasterViewTab, PptxSlideLayout, PptxHandler, PptxLayoutOption, PptxLayoutPreview, PptxComment, ConnectorPptxElement, PptxThemePreset, PptxThemeColorScheme, PptxThemeFontScheme, PptxData, PptxHandlerSaveOptions, PptxSaveFormat, TextSegment, PptxModifyVerifier } from 'ooxml-core/pptx';
4
4
  import { CollaborationWriteBackState } from 'ooxml-core/collab';
@@ -96,7 +96,7 @@ interface EditorHistorySnapshot {
96
96
  //#endregion
97
97
  //#region src/viewer/hooks/collaboration/types.d.ts
98
98
  /** Connection lifecycle states for the Yjs WebSocket provider. */
99
- type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'error';
99
+ type ConnectionStatus$1 = 'disconnected' | 'connecting' | 'connected' | 'error';
100
100
  /**
101
101
  * Presence data broadcast to other participants.
102
102
  * Cursor position is relative to the slide canvas (0..canvasWidth, 0..canvasHeight).
@@ -126,7 +126,7 @@ interface UserPresence {
126
126
  /** Value exposed by `CollaborationContext`. */
127
127
  interface CollaborationContextValue {
128
128
  /** Current WebSocket connection status. */
129
- status: ConnectionStatus;
129
+ status: ConnectionStatus$1;
130
130
  /** Presence data for all remote users (excludes the local user). */
131
131
  remoteUsers: UserPresence[];
132
132
  /** Broadcast the local user's presence state. */
@@ -363,6 +363,8 @@ interface ToolbarProps {
363
363
  onExportGif: () => void;
364
364
  onExportJson: () => void;
365
365
  onOpenShareDialog?: () => void;
366
+ /** File > Save (the backstage Save item): reported to host storage as `save`, not Save As. */
367
+ onSave?: () => void;
366
368
  onSaveAsPptx: () => void;
367
369
  onSaveAsPpsx: () => void;
368
370
  onSaveAsPptm: () => void;
@@ -2218,6 +2220,8 @@ interface UseAutosaveInput {
2218
2220
  * `resolveAutosaveActivation`, NOT the raw title-bar toggle.
2219
2221
  */
2220
2222
  enabled?: boolean;
2223
+ /** Host storage; its recovery methods replace IndexedDB when it has them. */
2224
+ storage?: DocumentStorage;
2221
2225
  /**
2222
2226
  * The values a snapshot is built from, read fresh on each tick.
2223
2227
  *
@@ -2229,6 +2233,8 @@ interface UseAutosaveInput {
2229
2233
  * whenever it is unsure. Omit it and every tick writes, as before.
2230
2234
  */
2231
2235
  getChangeSources?: () => readonly unknown[];
2236
+ /** Called with the serialised deck after each snapshot is written (the host's `onAutosave`). */
2237
+ onSaved?: ((data: Uint8Array) => void) | undefined;
2232
2238
  }
2233
2239
  interface UseAutosaveResult {
2234
2240
  /** Current autosave status for display in the StatusBar. */
@@ -2494,7 +2500,7 @@ interface UseYjsProviderInput {
2494
2500
  }
2495
2501
  interface UseYjsProviderResult {
2496
2502
  /** Current WebSocket connection status. */
2497
- status: ConnectionStatus;
2503
+ status: ConnectionStatus$1;
2498
2504
  /** The Yjs awareness instance (null until connected). */
2499
2505
  awareness: Awareness | null;
2500
2506
  /** The Yjs document (null until initialised). */
@@ -3082,6 +3088,10 @@ interface UseExportHandlersInput {
3082
3088
  activeSlide: PptxSlide | undefined;
3083
3089
  activeSlideIndex: number;
3084
3090
  filePath: string | undefined;
3091
+ /** Host `storage` prop: Save / Save As go to `storage.save()` instead of a download. */
3092
+ storage?: DocumentStorage | undefined;
3093
+ /** A Save / Save As failed (serialising, or the host's storage rejected). */
3094
+ onSaveError?: ((error: unknown) => void) | undefined;
3085
3095
  canvasStageRef: RefObject<HTMLDivElement | null>;
3086
3096
  setActiveSlideIndex: Dispatch<SetStateAction<number>>;
3087
3097
  /**
@@ -3138,7 +3148,13 @@ interface ExportHandlersResult {
3138
3148
  handleExportVideo: () => Promise<void>;
3139
3149
  handleExportGif: () => Promise<void>;
3140
3150
  handleExportJson: () => void;
3141
- handleSaveAsFormat: (format: PptxSaveFormat) => Promise<void>;
3151
+ /**
3152
+ * Writes `format`. `reason` is the command that ran (Save As by default); resolves false when
3153
+ * nothing was saved (no deck yet, or the save or the host's storage failed).
3154
+ */
3155
+ handleSaveAsFormat: (format: PptxSaveFormat, reason?: DocumentSaveReason) => Promise<boolean | void>;
3156
+ /** File > Save: writes `.pptx`, reported to host storage as `save`. */
3157
+ handleSave: () => void;
3142
3158
  handleSaveAsPptx: () => void;
3143
3159
  handleSaveAsPpsx: () => void;
3144
3160
  handleSaveAsPptm: () => void;
@@ -3233,6 +3249,10 @@ interface UsePropertyHandlersInput {
3233
3249
  setIsDirty: React.Dispatch<React.SetStateAction<boolean>>;
3234
3250
  ops: ElementOperations;
3235
3251
  history: EditorHistoryResult;
3252
+ /** The host's `onPropertiesChange`: the fields a document-properties edit changed. */
3253
+ onPropertiesChange?: ((updates: Partial<PptxCoreProperties>) => void) | undefined;
3254
+ /** The host's `onNotesUpdate`: the new speaker-notes text of the active slide. */
3255
+ onNotesUpdate?: ((notes: string) => void) | undefined;
3236
3256
  }
3237
3257
  interface PropertyHandlersResult {
3238
3258
  handleUpdateNotes: (text: string, segments?: TextSegment[]) => void;
@@ -3343,6 +3363,10 @@ interface UseRecoveryDetectionInput {
3343
3363
  * an earlier configuration left behind. Defaults to true.
3344
3364
  */
3345
3365
  autosaveAllowed?: boolean;
3366
+ /** Host storage; the snapshot is read from its recovery methods when it has them. */
3367
+ storage?: DocumentStorage;
3368
+ /** Called with the stored record when a recovery snapshot is offered (the host's `onAutosaveRecovery`). */
3369
+ onOffered?: ((record: AutosaveRecord) => void) | undefined;
3346
3370
  /** Load the recovered bytes into the viewer. */
3347
3371
  onRestore?: (bytes: Uint8Array) => void;
3348
3372
  /** Legacy behaviour: also open the Version History panel when one is found. */
@@ -3453,6 +3477,10 @@ interface UseIOHandlersInput {
3453
3477
  activeSlideIndex: number;
3454
3478
  canvasSize: CanvasSize$1;
3455
3479
  filePath: string | undefined;
3480
+ /** Host `storage` prop, forwarded to the Save / Save As handlers. */
3481
+ storage?: DocumentStorage | undefined;
3482
+ /** Reports a failed Save / Save As to the host and the user. */
3483
+ onSaveError?: ((error: unknown) => void) | undefined;
3456
3484
  history: EditorHistoryResult;
3457
3485
  ops: ElementOperations;
3458
3486
  zoom: {
@@ -3472,6 +3500,10 @@ interface UseIOHandlersInput {
3472
3500
  serializeForRecovery: () => Promise<Uint8Array | null>;
3473
3501
  setContent: React$1.Dispatch<React$1.SetStateAction<ArrayBuffer | Uint8Array | null>>;
3474
3502
  onContentChange: ((content: Uint8Array) => void) | undefined;
3503
+ /** The host's `onPropertiesChange` (document-properties edits). */
3504
+ onPropertiesChange?: ((updates: Partial<PptxCoreProperties>) => void) | undefined;
3505
+ /** The host's `onNotesUpdate` (speaker-notes edits). */
3506
+ onNotesUpdate?: ((notes: string) => void) | undefined;
3475
3507
  /** File > Options > Advanced > "Image Size and Quality" raster-scale multiplier. */
3476
3508
  imageExportScale?: number;
3477
3509
  /**
@@ -3505,6 +3537,10 @@ interface UseContentLifecycleInput {
3505
3537
  * Options > Save AutoRecover cadence > 120s default).
3506
3538
  */
3507
3539
  autosaveIntervalMs?: number;
3540
+ /** Host `storage` prop: recovery snapshots go to its recovery methods when it has them. */
3541
+ storage?: DocumentStorage;
3542
+ /** The host's `onAutosave`: called with the bytes of each recovery snapshot written. */
3543
+ onAutosave?: ((data: Uint8Array) => void) | undefined;
3508
3544
  /**
3509
3545
  * File > Fonts > "Embed fonts in the file". Forwarded to `useSerialize`, so
3510
3546
  * turning it off actually strips the embedded font data on the next save.
@@ -3607,6 +3643,10 @@ interface UseViewerIntegrationInput {
3607
3643
  * verdict (host `autosave` prop as a ceiling, title-bar toggle inside it).
3608
3644
  */
3609
3645
  autosaveEnabled: boolean;
3646
+ /** Host `storage` prop: Save goes to it, and so do recovery snapshots when it keeps them. */
3647
+ storage?: DocumentStorage;
3648
+ /** A Save / Save As failed: report it to the host and the user. */
3649
+ onSaveError?: (error: unknown) => void;
3610
3650
  /**
3611
3651
  * Whether the host permits autosave at all. Only the recovery prompt needs
3612
3652
  * this separately from `autosaveEnabled`: a user who merely switched the
@@ -3665,6 +3705,18 @@ interface UseViewerIntegrationInput {
3665
3705
  onZoomChange: ((zoom: number) => void) | undefined;
3666
3706
  onSelectionChange: ((ids: string[]) => void) | undefined;
3667
3707
  onSlideCountChange: ((count: number) => void) | undefined;
3708
+ /** The host's `onAutosave`: bytes of each recovery snapshot written. */
3709
+ onAutosave?: ((content: Uint8Array) => void) | undefined;
3710
+ /** The host's `onAutosaveStatus`: every autosave lifecycle transition. */
3711
+ onAutosaveStatus?: ((status: ViewerAutosaveStatus) => void) | undefined;
3712
+ /** The host's `onAutosaveRecovery`: a recovery snapshot was offered. */
3713
+ onAutosaveRecovery?: ((record: AutosaveRecord) => void) | undefined;
3714
+ /** The host's `onPropertiesChange`: a document-properties edit. */
3715
+ onPropertiesChange?: ((updates: Partial<PptxCoreProperties>) => void) | undefined;
3716
+ /** The host's `onNotesUpdate`: a speaker-notes edit. */
3717
+ onNotesUpdate?: ((notes: string) => void) | undefined;
3718
+ /** The host's `onPresentationChange`: slide show mode entered or left. */
3719
+ onPresentationChange?: ((presenting: boolean) => void) | undefined;
3668
3720
  /** Host UI customisation helpers, spread onto the imperative handle. */
3669
3721
  customizationApi?: ViewerCustomizationApi;
3670
3722
  /** Resolved host UI customisation, read by the keyboard shortcuts. */
@@ -3994,6 +4046,10 @@ interface UseExportSaveAsInput {
3994
4046
  /** Separated master/layout (template) elements, merged back at save time. */
3995
4047
  templateElementsBySlideId: Record<string, PptxElement[]>;
3996
4048
  filePath: string | undefined;
4049
+ /** Host `storage` prop: when set, the saved bytes go to `storage.save()`, not a download. */
4050
+ storage?: DocumentStorage | undefined;
4051
+ /** Reports a failed Save / Save As (serialising, or the host's storage rejected). */
4052
+ onSaveError?: ((error: unknown) => void) | undefined;
3997
4053
  /** `useSerialize`'s callback: the one place save options are assembled. */
3998
4054
  serializeSlides: SerializeSlides;
3999
4055
  /** Presentation-level state, carried into the deck-JSON export document. */
@@ -4020,7 +4076,10 @@ interface UseExportSaveAsInput {
4020
4076
  }
4021
4077
  interface ExportSaveAsResult {
4022
4078
  handleExportJson: () => void;
4023
- handleSaveAsFormat: (format: PptxSaveFormat) => Promise<void>;
4079
+ /** Resolves false when nothing was saved (no deck yet, or the save or the host's storage failed). */
4080
+ handleSaveAsFormat: (format: PptxSaveFormat, reason?: DocumentSaveReason) => Promise<boolean | void>;
4081
+ /** File > Save: `.pptx`, reported to host storage as `save`. */
4082
+ handleSave: () => void;
4024
4083
  handleSaveAsPptx: () => void;
4025
4084
  handleSaveAsPpsx: () => void;
4026
4085
  handleSaveAsPptm: () => void;
@@ -4551,4 +4610,4 @@ interface FragmentedTransitionLayerProps {
4551
4610
  declare function FragmentedTransitionLayer({ layer, slide, templateElements, canvasSize, scale, zIndex, layerName }: FragmentedTransitionLayerProps): React$1.ReactElement;
4552
4611
 
4553
4612
  export { FragmentedTransitionLayer, MIN_TOUCH_TARGET, MorphTransitionOverlay, PresentationTransitionOverlay, SlideLayer, computeToolbarVisibility, useAnimationPlayback, useAnnotationHandlers, useAudienceMode, useAutosave, useBroadcastFollower, useCanvasInteractions, useClipboardHandlers, useCollaborativeHistory, useCollaborativeState, useComments, useContentLifecycle, useDerivedElementState, useDerivedSlideState, useDialogCustomShows, useEditorHistory, useEditorOperations, useElementManipulation, useElementOperations, useExportHandlers, useExportSaveAs, useFindReplace, useFollowMode, useFontInjection, useGroupAlignLayerHandlers, useIOHandlers, useInsertElements, useIsMobile, useKeyboardInsets, useKeyboardShortcutWiring, useKeyboardShortcuts, useLayoutSwitching, useLoadContent, useMergeShapesHandler, useModalDismissDrag, usePointerHandlers, usePresenceTracking, usePresentationAnnotations, usePresentationKeyboard, usePresentationMode, usePresentationSetup, usePresenterWindow, usePrintHandlers, usePropertyHandlers, useRecoveryDetection, useReducedMotion, useRehearsalTimings, useResizablePanels, useSectionOperations, useSerialize, useSheetDismissDrag, useSlideManagement, useSlideNavigation, useSwipeNavigation, useTableOperations, useThemeHandlers, useThemeSwitching, useToolbarVisibility, useTouchGestures, useViewerBuildingBlocks, useViewerCoreState, useViewerDialogs, useViewerIntegration, useViewerOptions, useViewerState, useViewerUIState, useVirtualizedSlides, useYjsDocumentSync, useYjsProvider, useZoomNavigation, useZoomViewport };
4554
- export type { AnnotationHandlersResult, AnnotationStroke, AutosaveStatus, CanvasInteractionHandlers, CollaborationContextValue, ConnectionStatus, ContentLifecycleResult, DerivedElementState, DerivedSlideState, EditorHistoryInput, EditorHistoryResult, EditorOperationsResult, ElementManipulationHandlers, ElementOperations, ExportHandlersResult, ExportSaveAsResult, FragmentedTransitionLayerProps, IOHandlersResult, InsertElementHandlers, LayoutSwitchingResult, MergeShapesHandlerInput, MergeShapesHandlers, ModalDismissDrag, ModalDismissDragHandlers, MorphTransitionOverlayProps, PresentationSetupResult, PresentationTool, PresentationTransitionOverlayProps, PrintHandlersResult, PropertyHandlersResult, SectionOperations, SheetDismissDrag, SheetDismissDragHandlers, SlideLayerProps, SlideManagementHandlers, TableOperationHandlers, ThemeHandlersResult, ThemeSwitchingResult, ToolbarVisibility, UseAnimationPlaybackInput, UseAnimationPlaybackResult, UseAnnotationHandlersInput, UseAutosaveInput, UseAutosaveResult, UseBroadcastFollowerInput, UseCanvasInteractionsInput, UseCollaborativeHistoryInput, UseCollaborativeHistoryResult, UseCollaborativeStateInput, UseContentLifecycleInput, UseDerivedElementStateInput, UseDerivedSlideStateInput, UseDialogCustomShowsInput, UseDialogCustomShowsResult, UseEditorOperationsInput, UseElementManipulationInput, UseElementOperationsInput, UseExportHandlersInput, UseExportSaveAsInput, UseFollowModeInput, UseFollowModeResult, UseFontInjectionInput, UseIOHandlersInput, UseInsertElementsInput, UseIsMobileResult, UseKeyboardInsetsResult, UseKeyboardShortcutWiringInput, UseKeyboardShortcutsInput, UseLayoutSwitchingInput, UseLoadContentInput, UseLoadContentResult, UsePointerHandlersInput, UsePresenceTrackingInput, UsePresenceTrackingResult, UsePresentationAnnotationsResult, UsePresentationSetupInput, UsePresenterWindowInput, UsePresenterWindowResult, UsePrintHandlersInput, UsePropertyHandlersInput, UseRecoveryDetectionInput, UseReducedMotionResult, UseRehearsalTimingsInput, UseRehearsalTimingsResult, UseResizablePanelsResult, UseSectionOperationsInput, UseSerializeInput, UseSlideManagementInput, UseSlideNavigationInput, UseSlideNavigationResult, UseSwipeNavigationInput, UseSwipeNavigationResult, UseTableOperationsInput, UseThemeHandlersInput, UseThemeSwitchingInput, UseTouchGesturesInput, UseViewerBuildingBlocksInput, UseViewerCoreStateInput, UseViewerDialogsInput, UseViewerIntegrationInput, UseViewerOptionsResult, UseViewerStateInput, UseYjsDocumentSyncInput, UseYjsProviderInput, UseYjsProviderResult, UseZoomNavigationInput, UseZoomNavigationResult, UserPresence, ViewerBuildingBlocksResult, ViewerCoreState, ViewerDialogsResult, ViewerIntegrationResult, ViewerState, ViewerUIState, VirtualizedSlidesOptions, VirtualizedSlidesResult };
4613
+ export type { AnnotationHandlersResult, AnnotationStroke, AutosaveStatus, CanvasInteractionHandlers, CollaborationContextValue, ConnectionStatus$1 as ConnectionStatus, ContentLifecycleResult, DerivedElementState, DerivedSlideState, EditorHistoryInput, EditorHistoryResult, EditorOperationsResult, ElementManipulationHandlers, ElementOperations, ExportHandlersResult, ExportSaveAsResult, FragmentedTransitionLayerProps, IOHandlersResult, InsertElementHandlers, LayoutSwitchingResult, MergeShapesHandlerInput, MergeShapesHandlers, ModalDismissDrag, ModalDismissDragHandlers, MorphTransitionOverlayProps, PresentationSetupResult, PresentationTool, PresentationTransitionOverlayProps, PrintHandlersResult, PropertyHandlersResult, SectionOperations, SheetDismissDrag, SheetDismissDragHandlers, SlideLayerProps, SlideManagementHandlers, TableOperationHandlers, ThemeHandlersResult, ThemeSwitchingResult, ToolbarVisibility, UseAnimationPlaybackInput, UseAnimationPlaybackResult, UseAnnotationHandlersInput, UseAutosaveInput, UseAutosaveResult, UseBroadcastFollowerInput, UseCanvasInteractionsInput, UseCollaborativeHistoryInput, UseCollaborativeHistoryResult, UseCollaborativeStateInput, UseContentLifecycleInput, UseDerivedElementStateInput, UseDerivedSlideStateInput, UseDialogCustomShowsInput, UseDialogCustomShowsResult, UseEditorOperationsInput, UseElementManipulationInput, UseElementOperationsInput, UseExportHandlersInput, UseExportSaveAsInput, UseFollowModeInput, UseFollowModeResult, UseFontInjectionInput, UseIOHandlersInput, UseInsertElementsInput, UseIsMobileResult, UseKeyboardInsetsResult, UseKeyboardShortcutWiringInput, UseKeyboardShortcutsInput, UseLayoutSwitchingInput, UseLoadContentInput, UseLoadContentResult, UsePointerHandlersInput, UsePresenceTrackingInput, UsePresenceTrackingResult, UsePresentationAnnotationsResult, UsePresentationSetupInput, UsePresenterWindowInput, UsePresenterWindowResult, UsePrintHandlersInput, UsePropertyHandlersInput, UseRecoveryDetectionInput, UseReducedMotionResult, UseRehearsalTimingsInput, UseRehearsalTimingsResult, UseResizablePanelsResult, UseSectionOperationsInput, UseSerializeInput, UseSlideManagementInput, UseSlideNavigationInput, UseSlideNavigationResult, UseSwipeNavigationInput, UseSwipeNavigationResult, UseTableOperationsInput, UseThemeHandlersInput, UseThemeSwitchingInput, UseTouchGesturesInput, UseViewerBuildingBlocksInput, UseViewerCoreStateInput, UseViewerDialogsInput, UseViewerIntegrationInput, UseViewerOptionsResult, UseViewerStateInput, UseYjsDocumentSyncInput, UseYjsProviderInput, UseYjsProviderResult, UseZoomNavigationInput, UseZoomNavigationResult, UserPresence, ViewerBuildingBlocksResult, ViewerCoreState, ViewerDialogsResult, ViewerIntegrationResult, ViewerState, ViewerUIState, VirtualizedSlidesOptions, VirtualizedSlidesResult };