pptx-react-viewer 4.14.0 → 4.16.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 (136) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/{AiChatPanel-WQUOEVQB.mjs → AiChatPanel-5Z4BYP7S.mjs} +4 -4
  3. package/dist/AiChatPanel-5Z4BYP7S.mjs.br +0 -0
  4. package/dist/AiChatPanel-5Z4BYP7S.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-PULXQTFJ.js → AiChatPanel-DHLJ6LKF.js} +28 -28
  6. package/dist/AiChatPanel-DHLJ6LKF.js.br +0 -0
  7. package/dist/AiChatPanel-DHLJ6LKF.js.gz +0 -0
  8. package/dist/{Model3DScene-6MYHPE5N.js → Model3DScene-AXT5KCUX.js} +2 -2
  9. package/dist/Model3DScene-AXT5KCUX.js.br +0 -0
  10. package/dist/Model3DScene-AXT5KCUX.js.gz +0 -0
  11. package/dist/{Model3DScene-HZG33BWN.mjs → Model3DScene-N36X5Z2Z.mjs} +1 -1
  12. package/dist/Model3DScene-N36X5Z2Z.mjs.br +0 -0
  13. package/dist/Model3DScene-N36X5Z2Z.mjs.gz +0 -0
  14. package/dist/{chunk-WSYKEPW6.mjs → chunk-BTTAYCGK.mjs} +904 -1201
  15. package/dist/chunk-BTTAYCGK.mjs.br +0 -0
  16. package/dist/chunk-BTTAYCGK.mjs.gz +0 -0
  17. package/dist/{chunk-E6VYR3GM.js → chunk-BZNYI5U6.js} +866 -820
  18. package/dist/chunk-BZNYI5U6.js.br +0 -0
  19. package/dist/chunk-BZNYI5U6.js.gz +0 -0
  20. package/dist/{chunk-55OLQ7HS.mjs → chunk-CJSIEITL.mjs} +3 -0
  21. package/dist/chunk-CJSIEITL.mjs.br +0 -0
  22. package/dist/chunk-CJSIEITL.mjs.gz +0 -0
  23. package/dist/{chunk-XWO367ZG.js → chunk-FVLBN45Z.js} +5 -5
  24. package/dist/chunk-FVLBN45Z.js.br +0 -0
  25. package/dist/chunk-FVLBN45Z.js.gz +0 -0
  26. package/dist/{chunk-AJTFPTSN.mjs → chunk-MFGRRONU.mjs} +2 -2
  27. package/dist/chunk-MFGRRONU.mjs.br +0 -0
  28. package/dist/chunk-MFGRRONU.mjs.gz +0 -0
  29. package/dist/{chunk-UWVRB4Z5.mjs → chunk-MJ6LTUJ3.mjs} +3437 -1237
  30. package/dist/chunk-MJ6LTUJ3.mjs.br +0 -0
  31. package/dist/chunk-MJ6LTUJ3.mjs.gz +0 -0
  32. package/dist/{chunk-DI4YTG3J.js → chunk-QAVJDYB2.js} +197 -197
  33. package/dist/chunk-QAVJDYB2.js.br +0 -0
  34. package/dist/chunk-QAVJDYB2.js.gz +0 -0
  35. package/dist/{chunk-EPMT65EN.mjs → chunk-QLUA63T3.mjs} +54 -9
  36. package/dist/chunk-QLUA63T3.mjs.br +0 -0
  37. package/dist/chunk-QLUA63T3.mjs.gz +0 -0
  38. package/dist/{chunk-RK5UV5HL.js → chunk-UVK2WBCU.js} +2047 -2344
  39. package/dist/chunk-UVK2WBCU.js.br +0 -0
  40. package/dist/chunk-UVK2WBCU.js.gz +0 -0
  41. package/dist/{chunk-ECKXYCP3.mjs → chunk-WRQ7K3DG.mjs} +1 -1
  42. package/dist/chunk-WRQ7K3DG.mjs.br +0 -0
  43. package/dist/chunk-WRQ7K3DG.mjs.gz +0 -0
  44. package/dist/{chunk-HIYK7HPX.js → chunk-XEYB25ZT.js} +3 -0
  45. package/dist/chunk-XEYB25ZT.js.br +0 -0
  46. package/dist/chunk-XEYB25ZT.js.gz +0 -0
  47. package/dist/{chunk-6ZR27XTL.js → chunk-XZUIS3VB.js} +3454 -1242
  48. package/dist/chunk-XZUIS3VB.js.br +0 -0
  49. package/dist/chunk-XZUIS3VB.js.gz +0 -0
  50. package/dist/i18n/de.cjs +3 -0
  51. package/dist/i18n/de.cjs.br +0 -0
  52. package/dist/i18n/de.cjs.gz +0 -0
  53. package/dist/i18n/de.mjs +3 -0
  54. package/dist/i18n/de.mjs.br +0 -0
  55. package/dist/i18n/de.mjs.gz +0 -0
  56. package/dist/i18n/es.cjs +3 -0
  57. package/dist/i18n/es.cjs.br +0 -0
  58. package/dist/i18n/es.cjs.gz +0 -0
  59. package/dist/i18n/es.mjs +3 -0
  60. package/dist/i18n/es.mjs.br +0 -0
  61. package/dist/i18n/es.mjs.gz +0 -0
  62. package/dist/i18n/fr.cjs +3 -0
  63. package/dist/i18n/fr.cjs.br +0 -0
  64. package/dist/i18n/fr.cjs.gz +0 -0
  65. package/dist/i18n/fr.mjs +3 -0
  66. package/dist/i18n/fr.mjs.br +0 -0
  67. package/dist/i18n/fr.mjs.gz +0 -0
  68. package/dist/i18n/zh-CN.cjs +3 -0
  69. package/dist/i18n/zh-CN.cjs.br +0 -0
  70. package/dist/i18n/zh-CN.cjs.gz +0 -0
  71. package/dist/i18n/zh-CN.mjs +3 -0
  72. package/dist/i18n/zh-CN.mjs.br +0 -0
  73. package/dist/i18n/zh-CN.mjs.gz +0 -0
  74. package/dist/i18n.js +4 -4
  75. package/dist/i18n.js.br +0 -0
  76. package/dist/i18n.js.gz +0 -0
  77. package/dist/i18n.mjs +1 -1
  78. package/dist/i18n.mjs.br +0 -0
  79. package/dist/i18n.mjs.gz +0 -0
  80. package/dist/index.d.ts +329 -267
  81. package/dist/index.js +63 -63
  82. package/dist/index.js.br +0 -0
  83. package/dist/index.js.gz +0 -0
  84. package/dist/index.mjs +6 -6
  85. package/dist/index.mjs.br +0 -0
  86. package/dist/index.mjs.gz +0 -0
  87. package/dist/internals.d.ts +643 -573
  88. package/dist/internals.js +105 -105
  89. package/dist/internals.js.br +0 -0
  90. package/dist/internals.js.gz +0 -0
  91. package/dist/internals.mjs +4 -4
  92. package/dist/internals.mjs.br +0 -0
  93. package/dist/internals.mjs.gz +0 -0
  94. package/dist/pptx-viewer.css +1 -1
  95. package/dist/pptx-viewer.css.br +0 -0
  96. package/dist/pptx-viewer.css.gz +0 -0
  97. package/dist/viewer/index.d.ts +196 -136
  98. package/dist/viewer/index.js +27 -27
  99. package/dist/viewer/index.js.br +0 -0
  100. package/dist/viewer/index.js.gz +0 -0
  101. package/dist/viewer/index.mjs +6 -6
  102. package/dist/viewer/index.mjs.br +0 -0
  103. package/dist/viewer/index.mjs.gz +0 -0
  104. package/package.json +2 -2
  105. package/dist/AiChatPanel-PULXQTFJ.js.br +0 -0
  106. package/dist/AiChatPanel-PULXQTFJ.js.gz +0 -0
  107. package/dist/AiChatPanel-WQUOEVQB.mjs.br +0 -0
  108. package/dist/AiChatPanel-WQUOEVQB.mjs.gz +0 -0
  109. package/dist/Model3DScene-6MYHPE5N.js.br +0 -0
  110. package/dist/Model3DScene-6MYHPE5N.js.gz +0 -0
  111. package/dist/Model3DScene-HZG33BWN.mjs.br +0 -0
  112. package/dist/Model3DScene-HZG33BWN.mjs.gz +0 -0
  113. package/dist/chunk-55OLQ7HS.mjs.br +0 -0
  114. package/dist/chunk-55OLQ7HS.mjs.gz +0 -0
  115. package/dist/chunk-6ZR27XTL.js.br +0 -0
  116. package/dist/chunk-6ZR27XTL.js.gz +0 -0
  117. package/dist/chunk-AJTFPTSN.mjs.br +0 -0
  118. package/dist/chunk-AJTFPTSN.mjs.gz +0 -0
  119. package/dist/chunk-DI4YTG3J.js.br +0 -0
  120. package/dist/chunk-DI4YTG3J.js.gz +0 -0
  121. package/dist/chunk-E6VYR3GM.js.br +0 -0
  122. package/dist/chunk-E6VYR3GM.js.gz +0 -0
  123. package/dist/chunk-ECKXYCP3.mjs.br +0 -0
  124. package/dist/chunk-ECKXYCP3.mjs.gz +0 -0
  125. package/dist/chunk-EPMT65EN.mjs.br +0 -0
  126. package/dist/chunk-EPMT65EN.mjs.gz +0 -0
  127. package/dist/chunk-HIYK7HPX.js.br +0 -0
  128. package/dist/chunk-HIYK7HPX.js.gz +0 -0
  129. package/dist/chunk-RK5UV5HL.js.br +0 -0
  130. package/dist/chunk-RK5UV5HL.js.gz +0 -0
  131. package/dist/chunk-UWVRB4Z5.mjs.br +0 -0
  132. package/dist/chunk-UWVRB4Z5.mjs.gz +0 -0
  133. package/dist/chunk-WSYKEPW6.mjs.br +0 -0
  134. package/dist/chunk-WSYKEPW6.mjs.gz +0 -0
  135. package/dist/chunk-XWO367ZG.js.br +0 -0
  136. package/dist/chunk-XWO367ZG.js.gz +0 -0
package/dist/index.d.ts CHANGED
@@ -13500,189 +13500,6 @@ interface CollaborationLivePatcher {
13500
13500
  /** Drop pending work, cancel timers and detach the doc. */
13501
13501
  dispose: () => void;
13502
13502
  }
13503
- /**
13504
- * A font supplied by the host application. The package never ships fonts:
13505
- * applications provide a licensed URL, data URL, or blob URL for their users.
13506
- */
13507
- interface ViewerFontSource {
13508
- family: string;
13509
- src: string;
13510
- format?: 'truetype' | 'opentype' | 'woff' | 'woff2';
13511
- weight?: string | number;
13512
- style?: 'normal' | 'italic';
13513
- }
13514
- //#endregion
13515
- //#region src/render/presentation-file-kinds.d.ts
13516
- /**
13517
- * presentation-file-kinds: the one place that answers "can the viewer open
13518
- * this file?" and "what should the saved copy be called?".
13519
- *
13520
- * ## Why this is a shared decision and not five allow-lists
13521
- *
13522
- * The loader reads more formats than any single UI advertises. Legacy binary
13523
- * `.ppt` (PowerPoint 97-2003) is the sharp example: `PptxHandler.load()` has
13524
- * detected the OLE compound-file container and converted the binary deck
13525
- * through the regular pptx pipeline for some time, but the product kept saying
13526
- * it was unsupported, and a picker that filters the extension out makes a
13527
- * working loader unreachable in practice. Whenever the loader learns a format,
13528
- * exactly one list has to change.
13529
- *
13530
- * ## Read many, write several
13531
- *
13532
- * Input is a superset of output. We READ `.pptx`, `.ppsx`, `.pptm`, `.potx`,
13533
- * legacy binary `.ppt` and portable `pptx-viewer-json`; we WRITE the OpenXML
13534
- * family plus legacy binary `.ppt` (via `packages/core/src/core/ppt/writer/`,
13535
- * a real MS-PPT/OLE2 encoder, not a stub). `savedPresentationFileName`
13536
- * REPLACES the source extension with the extension of the format actually
13537
- * being written rather than keeping the source's: a deck opened as
13538
- * `report.pptx` and saved back as `.ppt` (or vice versa) must have its name
13539
- * agree with its bytes, which is the kind of mismatch PowerPoint itself
13540
- * refuses to open.
13541
- *
13542
- * This module deliberately imports nothing, so any layer (render, export, a
13543
- * binding, a host app) can depend on it without risking an import cycle.
13544
- *
13545
- * @module render/presentation-file-kinds
13546
- */
13547
- /**
13548
- * Extensions the built-in file picker offers, in the order it offers them.
13549
- *
13550
- * `.ppt` is in the list because the loader genuinely handles it, not as a
13551
- * courtesy: see `packages/core/src/core/ppt/` and the `ppt-import` integration
13552
- * suite, which asserts a `.ppt` loads to the same model as the `.pptx` it was
13553
- * exported from.
13554
- */
13555
- declare const PRESENTATION_OPEN_EXTENSIONS: readonly ['.pptx', '.ppsx', '.pptm', '.potx', '.ppt', '.json'];
13556
- /** Comma-separated `accept` attribute for a presentation file input. */
13557
- declare const PPTX_OPEN_ACCEPT: string;
13558
- /**
13559
- * True when a picked / dropped file's name looks like something the loader can
13560
- * open. Use this instead of a hand-rolled `endsWith` chain: a drop handler that
13561
- * disagrees with the picker's `accept` list is a format that is supported by
13562
- * mouse but not by drag, which is how `.ppt` stayed invisible.
13563
- *
13564
- * Extension-only, by design. The real answer comes from the container sniff in
13565
- * `PptxHandler.load()`; this is only the cheap pre-filter a drop target needs
13566
- * before it hands bytes to the loader.
13567
- */
13568
- declare function isSupportedPresentationFile(name: string | null | undefined): boolean;
13569
- /**
13570
- * True for the binary PowerPoint 97-2003 family. `.ppt` itself is now also a
13571
- * SAVE target (see {@link SavedPresentationFormat}); `.pps`/`.pot` (97-2003
13572
- * show/template) remain read-only siblings sharing the same record format.
13573
- */
13574
- declare function isLegacyBinaryPresentation(name: string | null | undefined): boolean;
13575
- /** The formats the save path can produce. */
13576
- type SavedPresentationFormat = 'pptx' | 'ppsx' | 'pptm' | 'ppt';
13577
- /**
13578
- * The stem of a presentation file name: directories and any loadable extension
13579
- * removed. `C:\decks\report.ppt` becomes `report`; a name with no recognised
13580
- * extension is kept whole, so `Untitled Presentation` survives intact rather
13581
- * than losing everything after its last dot.
13582
- */
13583
- declare function presentationBaseName(sourceName: string | null | undefined, fallback?: string): string;
13584
- /**
13585
- * The name a saved copy should be offered under: the source stem plus the
13586
- * extension of the format actually being written.
13587
- *
13588
- * This is what turns `report.ppt` into `report.pptx` on a regular Save As,
13589
- * and `report.pptx` into `report.ppt` when the user explicitly picks the
13590
- * PowerPoint 97-2003 format. Keeping the source extension would mislabel the
13591
- * bytes either way.
13592
- */
13593
- declare function savedPresentationFileName(sourceName: string | null | undefined, format?: SavedPresentationFormat): string;
13594
- //#endregion
13595
- //#region src/render/editor-keymap.d.ts
13596
- /** A logical editor command produced by one key press. */
13597
- type EditorKeyActionName = 'undo' | 'redo' | 'copy' | 'cut' | 'paste' | 'duplicate' | 'delete' | 'selectAll' | 'group' | 'ungroup' | 'nudge' | 'prevSlide' | 'nextSlide' | 'escape' | 'find' | 'findReplace' | 'toggleShortcuts' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'increaseFontSize' | 'decreaseFontSize' | 'copyFormat' | 'pasteFormat' | 'newSlide' | 'hyperlink' | 'clearFormatting' | 'cycleSelectionNext' | 'cycleSelectionPrev' | 'pasteSpecial';
13598
- //#endregion
13599
- //#region src/render/merge-shapes/merge-shapes-menu.d.ts
13600
- /** The right-click command id for each operation. */
13601
- type MergeShapesCommandId = 'merge-union' | 'merge-combine' | 'merge-fragment' | 'merge-intersect' | 'merge-subtract';
13602
- /** Every command a canvas context menu can offer, in no particular order. */
13603
- type ContextMenuCommandId = 'copy' | 'cut' | 'paste' | 'duplicate' | 'edit-text' | 'edit-points' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'ai-ask' | 'ai-fix' | 'comment' | 'hyperlink' | 'table-insert-row-above' | 'table-insert-row-below' | 'table-delete-row' | 'table-insert-col-left' | 'table-insert-col-right' | 'table-delete-col' | 'table-merge-selected' | 'table-merge-right' | 'table-merge-down' | 'table-split' | 'group' | 'ungroup' | 'crop' | MergeShapesCommandId | 'save-as-picture' | 'edit-alt-text' | 'size-and-position' | 'format-shape' | 'delete';
13604
- //#endregion
13605
- //#region src/render/canvas-context-menu-commands.d.ts
13606
- /**
13607
- * The right-click menu for the empty slide canvas (no element under the
13608
- * cursor), as distinct from {@link ./context-menu-commands}'s per-element menu.
13609
- *
13610
- * Right-clicking empty canvas used to do nothing at all in every binding: React
13611
- * and Vue both bailed out early (`getElementIdFromEvent` returns `null`, so the
13612
- * handler just returns) rather than opening a menu, and the other three never
13613
- * wired a handler for it either. PowerPoint offers Paste, Layout, Reset,
13614
- * Format Background and view toggles (Grid and Guides, Ruler) from this menu;
13615
- * this module is the one list every binding renders instead of five omissions.
13616
- *
13617
- * @module render/canvas-context-menu-commands
13618
- */
13619
- /** Every command the empty-canvas context menu can offer, in no particular order. */
13620
- type CanvasContextMenuCommandId = 'paste' | 'layout' | 'reset-slide' | 'format-background' | 'grid-and-guides' | 'ruler';
13621
- //#endregion
13622
- //#region src/render/insert-chart.d.ts
13623
- /**
13624
- * Dropdown ids for the insert-chart menu. Distinct from `PptxChartType`
13625
- * because PowerPoint offers Column (vertical) and Bar (horizontal) as two
13626
- * entries over the same underlying `'bar'` chart type, and because `'pareto'`
13627
- * has no `PptxChartType` of its own: it is a dropdown entry that resolves to
13628
- * `type: 'histogram'` (see docs/guide/limitations.md's ChartEx row) with a
13629
- * frequency-plus-cumulative-percentage default shape. The other six ChartEx
13630
- * ids (`histogram` through `regionMap`) map one-to-one onto their chart type.
13631
- */
13632
- type InsertChartKind = 'column' | 'bar' | 'line' | 'pie' | 'doughnut' | 'area' | 'scatter' | 'histogram' | 'pareto' | 'funnel' | 'treemap' | 'sunburst' | 'boxWhisker' | 'regionMap';
13633
- /** In-memory clipboard payload stored when an element is copied or cut. */
13634
- interface ElementClipboardPayload {
13635
- element: PptxElement;
13636
- isTemplate: boolean;
13637
- }
13638
- //#endregion
13639
- //#region src/render/image-file-insertion.d.ts
13640
- /**
13641
- * Decode a local image File/Blob into a centred element, fitting the slide
13642
- * without upscaling. Dimensions are slide pixels; image bytes are preserved.
13643
- *
13644
- * Resolves null for unsupported/unreadable images, invalid bounds, cancellation,
13645
- * or unavailable browser APIs. Importing this module is safe outside a browser.
13646
- * No slide, selection, history, clipboard, or network state is changed. The
13647
- * caller must still validate its document/slide destination before committing.
13648
- */
13649
- declare function createImageElementFromFile(file: Blob, canvasSize: CanvasSize$1, signal?: AbortSignal): Promise<ImagePptxElement | null>;
13650
- //#endregion
13651
- //#region src/render/editor-image-paste.d.ts
13652
- /** A currently editable slide. Return null while loading or outside canvas editing. */
13653
- interface EditorImagePasteTarget {
13654
- documentId: object;
13655
- slideId: string;
13656
- canvasSize: CanvasSize$1;
13657
- }
13658
- interface EditorImagePasteOptions {
13659
- getCanvas(): HTMLElement | null;
13660
- getTarget(): EditorImagePasteTarget | null;
13661
- /** Use the normal editor command so selection, dirty state and Undo stay consistent. */
13662
- insertElement(element: ImagePptxElement): void;
13663
- }
13664
- //#endregion
13665
- //#region src/render/zoom-return-navigation.d.ts
13666
- /**
13667
- * The navigation-relevant fields of a Zoom click target, independent of
13668
- * `zoomType`.
13669
- *
13670
- * `returnToParent` is already resolved to its EFFECTIVE value here (not the
13671
- * raw, possibly-`undefined` `ZoomPptxElement`/`SummaryZoomTarget` field):
13672
- * `CT_ZoomObjectProperties/@returnToParent` (MS-PPTX) is `<xsd:attribute
13673
- * name="returnToParent" type="xsd:boolean" use="optional" default="true"/>`,
13674
- * so an ABSENT attribute means true, not false. Core deliberately stores
13675
- * `undefined` rather than fabricating `true` (so a round-trip never invents
13676
- * an attribute the source never had), which makes `Boolean(x)` the wrong way
13677
- * to read it; the two `resolve*NavigationTarget` functions below are the only
13678
- * place that distinction should be made.
13679
- */
13680
- interface ZoomNavigationTarget {
13681
- targetSlideIndex: number;
13682
- targetSectionId?: string;
13683
- returnToParent: boolean;
13684
- transitionDurationMs?: number;
13685
- }
13686
13503
  type BackstagePage = 'home' | 'new' | 'open' | 'info' | 'save' | 'saveAs' | 'print' | 'share' | 'export' | 'close' | 'account' | 'options';
13687
13504
  //#endregion
13688
13505
  //#region src/render/backstage-cards.d.ts
@@ -13699,52 +13516,6 @@ type BackstagePage = 'home' | 'new' | 'open' | 'info' | 'save' | 'saveAs' | 'pri
13699
13516
  */
13700
13517
  type BackstageCardId = 'protect' | 'inspect' | 'embedFonts' | 'signatures' | 'versionHistory' | 'saveAsPptx' | 'saveAsPpsx' | 'saveAsPptm' | 'saveAsPpt' | 'pdf' | 'png' | 'video' | 'gif' | 'json' | 'copyImage' | 'print' | 'share';
13701
13518
  //#endregion
13702
- //#region src/render/account.d.ts
13703
- /** Local-only display profile shown in File > Account. Never sent anywhere; purely cosmetic. */
13704
- interface ViewerProfile {
13705
- displayName: string;
13706
- /** CSS color for the avatar bubble background, e.g. `'#c2431f'`. */
13707
- avatarColor: string;
13708
- /** Single character shown in the avatar bubble. Derived from `displayName` when omitted. */
13709
- initial?: string;
13710
- }
13711
- declare const DEFAULT_VIEWER_PROFILE: ViewerProfile;
13712
- /** Suggested avatar color swatches for the Account profile editor. */
13713
- declare const AVATAR_COLOR_SWATCHES: readonly string[];
13714
- /** Derive the avatar-bubble initial from a profile, falling back to `'?'` for an empty name. */
13715
- declare function resolveProfileInitial(profile: ViewerProfile): string;
13716
- /**
13717
- * Optional hook point for hosts that want to wire a real sign-in flow into
13718
- * File > Account. Disabled by default: the Account page renders nothing
13719
- * extra unless a host explicitly opts in by passing `enabled: true`.
13720
- * See docs/guide for wiring instructions.
13721
- */
13722
- interface AccountAuthConfig {
13723
- enabled: boolean;
13724
- onSignIn: () => void;
13725
- signedInUser?: {
13726
- name: string;
13727
- email?: string;
13728
- avatarUrl?: string;
13729
- };
13730
- }
13731
- interface LocalStorageUsageSummary {
13732
- /** Number of presentations with a local autosave/recovery snapshot. */
13733
- presentationCount: number;
13734
- /** Total bytes across every stored snapshot. */
13735
- totalBytes: number;
13736
- }
13737
- /** Summarize local (IndexedDB) storage usage for the Account > Storage & Privacy panel. */
13738
- declare function getLocalStorageUsageSummary(): Promise<LocalStorageUsageSummary>;
13739
- /**
13740
- * Delete every locally stored presentation/recovery snapshot and persisted
13741
- * viewer preference (theme/locale/profile). Irreversible; callers should
13742
- * confirm with the user before invoking this.
13743
- */
13744
- declare function clearAllLocalViewerData(): Promise<void>;
13745
- /** Persist an updated profile via the shared viewer-prefs store. */
13746
- declare function saveViewerProfile(profile: ViewerProfile): void;
13747
- //#endregion
13748
13519
  //#region src/render/toolbar-actions.d.ts
13749
13520
  /**
13750
13521
  * Toolbar action / ribbon-tab visibility: a single, framework-agnostic
@@ -13778,6 +13549,39 @@ type ToolbarActionId = ToolbarButtonId | ToolbarTabId;
13778
13549
  */
13779
13550
  type RibbonContextualTabId = 'shapeFormat' | 'pictureFormat' | 'tableDesign' | 'chartDesign' | 'smartArtDesign';
13780
13551
  //#endregion
13552
+ //#region src/render/canvas-context-menu-commands.d.ts
13553
+ /**
13554
+ * The right-click menu for the empty slide canvas (no element under the
13555
+ * cursor), as distinct from {@link ./context-menu-commands}'s per-element menu.
13556
+ *
13557
+ * Right-clicking empty canvas used to do nothing at all in every binding: React
13558
+ * and Vue both bailed out early (`getElementIdFromEvent` returns `null`, so the
13559
+ * handler just returns) rather than opening a menu, and the other three never
13560
+ * wired a handler for it either. PowerPoint offers Paste, Layout, Reset,
13561
+ * Format Background and view toggles (Grid and Guides, Ruler) from this menu;
13562
+ * this module is the one list every binding renders instead of five omissions.
13563
+ *
13564
+ * @module render/canvas-context-menu-commands
13565
+ */
13566
+ /** Every command the empty-canvas context menu can offer, in no particular order. */
13567
+ type CanvasContextMenuCommandId = 'paste' | 'layout' | 'reset-slide' | 'format-background' | 'grid-and-guides' | 'ruler';
13568
+ //#endregion
13569
+ //#region src/render/merge-shapes/merge-shapes-menu.d.ts
13570
+ /** The right-click command id for each operation. */
13571
+ type MergeShapesCommandId = 'merge-union' | 'merge-combine' | 'merge-fragment' | 'merge-intersect' | 'merge-subtract';
13572
+ /** Every command a canvas context menu can offer, in no particular order. */
13573
+ type ContextMenuCommandId = 'copy' | 'cut' | 'paste' | 'duplicate' | 'edit-text' | 'edit-points' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'ai-ask' | 'ai-fix' | 'comment' | 'hyperlink' | 'table-insert-row-above' | 'table-insert-row-below' | 'table-delete-row' | 'table-insert-col-left' | 'table-insert-col-right' | 'table-delete-col' | 'table-merge-selected' | 'table-merge-right' | 'table-merge-down' | 'table-split' | 'group' | 'ungroup' | 'crop' | MergeShapesCommandId | 'save-as-picture' | 'edit-alt-text' | 'size-and-position' | 'format-shape' | 'delete';
13574
+ /** Every command the Edit Points right-click menu can offer. */
13575
+ type EditPointsCommandId = 'add-point' | 'delete-point' | 'delete-segment' | 'open-path' | 'close-path' | 'smooth-point' | 'straight-point' | 'corner-point' | 'straight-segment' | 'curved-segment' | 'exit';
13576
+ //#endregion
13577
+ //#region src/render/edit-points/freeform-tool-geometry.d.ts
13578
+ /** The two click-to-place drawing tools. */
13579
+ type FreeformToolKind = 'freeformShape' | 'curve';
13580
+ //#endregion
13581
+ //#region src/render/editor-keymap.d.ts
13582
+ /** A logical editor command produced by one key press. */
13583
+ type EditorKeyActionName = 'undo' | 'redo' | 'copy' | 'cut' | 'paste' | 'duplicate' | 'delete' | 'selectAll' | 'group' | 'ungroup' | 'nudge' | 'prevSlide' | 'nextSlide' | 'escape' | 'find' | 'findReplace' | 'toggleShortcuts' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'increaseFontSize' | 'decreaseFontSize' | 'copyFormat' | 'pasteFormat' | 'newSlide' | 'hyperlink' | 'clearFormatting' | 'cycleSelectionNext' | 'cycleSelectionPrev' | 'pasteSpecial';
13584
+ //#endregion
13781
13585
  //#region src/render/options/viewer-options.d.ts
13782
13586
  /**
13783
13587
  * Full PowerPoint "File > Options" parity model.
@@ -13854,6 +13658,8 @@ interface ViewerSaveOptions {
13854
13658
  clearCacheOnClose: boolean;
13855
13659
  }
13856
13660
  interface ViewerAccessibilityOptions {
13661
+ /** Browser speech-recognition language; automatic follows the browser language. */
13662
+ subtitleLanguage?: string;
13857
13663
  showAccessibilityStatus: boolean;
13858
13664
  feedbackWithSound: boolean;
13859
13665
  soundScheme: FeedbackSoundScheme;
@@ -13935,43 +13741,8 @@ interface ViewerOptions {
13935
13741
  trust: ViewerTrustOptions;
13936
13742
  }
13937
13743
  type ViewerOptionsGroupId = keyof ViewerOptions;
13938
- type ViewerOptionPrimitive = boolean | number | string;
13939
- type StoredViewerOptions = { [G in ViewerOptionsGroupId]?: Partial<ViewerOptions[G]>; };
13940
- //#endregion
13941
- //#region src/render/viewer-prefs-storage.d.ts
13942
- /**
13943
- * `localStorage`-backed viewer chrome preferences (theme/locale/profile),
13944
- * shared by every binding.
13945
- *
13946
- * This is the persistence layer behind File > Options' Appearance/Language
13947
- * tabs and File > Account's profile editor when a host doesn't supply its
13948
- * own `onThemeChange`/`onLocaleChange`/`onProfileChange` callbacks - i.e. the
13949
- * "standalone" fallback path. Hosts that do wire those callbacks own
13950
- * persistence themselves and this module is never touched.
13951
- */
13952
- declare const VIEWER_PREFS_STORAGE_KEY = "pptx-viewer-prefs";
13953
- interface StoredViewerPrefs {
13954
- /** Key into the shared `THEME_CATALOG` (or a host-supplied `availableThemes` catalog). */
13955
- themeKey?: string;
13956
- /** Locale code, e.g. `'fr'`. */
13957
- localeCode?: string;
13958
- /** Local-only display profile shown in File > Account. */
13959
- profile?: ViewerProfile;
13960
- /** Sparse File > Options diff against `DEFAULT_VIEWER_OPTIONS`. */
13961
- options?: StoredViewerOptions;
13962
- }
13963
- /** Read all persisted viewer preferences. Returns `{}` when unavailable, unset, or corrupt. */
13964
- declare function readStoredViewerPrefs(): StoredViewerPrefs;
13965
- /** Merge `patch` into the persisted viewer preferences. Silently no-ops when storage is unavailable. */
13966
- declare function writeStoredViewerPrefs(patch: Partial<StoredViewerPrefs>): void;
13967
- /** Remove all persisted viewer preferences. Silently no-ops when storage is unavailable. */
13968
- declare function clearStoredViewerPrefs(): void;
13969
- /** Every command the Edit Points right-click menu can offer. */
13970
- type EditPointsCommandId = 'add-point' | 'delete-point' | 'delete-segment' | 'open-path' | 'close-path' | 'smooth-point' | 'straight-point' | 'corner-point' | 'straight-segment' | 'curved-segment' | 'exit';
13971
- //#endregion
13972
- //#region src/render/edit-points/freeform-tool-geometry.d.ts
13973
- /** The two click-to-place drawing tools. */
13974
- type FreeformToolKind = 'freeformShape' | 'curve';
13744
+ type ViewerOptionPrimitive = boolean | number | string;
13745
+ type StoredViewerOptions = { [G in ViewerOptionsGroupId]?: Partial<ViewerOptions[G]>; };
13975
13746
  //#endregion
13976
13747
  //#region src/render/options/viewer-options-controls.d.ts
13977
13748
  /**
@@ -13980,6 +13751,25 @@ type FreeformToolKind = 'freeformShape' | 'curve';
13980
13751
  */
13981
13752
  type ViewerOptionsTabId = 'general' | 'proofing' | 'save' | 'language' | 'accessibility' | 'advanced' | 'ribbon' | 'quickAccess' | 'addIns' | 'trust';
13982
13753
  //#endregion
13754
+ //#region src/render/customization/host-menu-commands.d.ts
13755
+ /** Snapshot of the slide on which the host command was offered. */
13756
+ interface HostCanvasMenuContext {
13757
+ slideIndex: number;
13758
+ }
13759
+ /** Effective selection, including a single right-clicked element. */
13760
+ interface HostElementMenuContext extends HostCanvasMenuContext {
13761
+ elementIds: readonly string[];
13762
+ }
13763
+ /** Plain text labels work identically in every framework. */
13764
+ interface HostMenuCommand<C> {
13765
+ id: string;
13766
+ label: string;
13767
+ /** Default: a separate group above the built-in commands. */
13768
+ group?: 'top' | 'bottom';
13769
+ disabled?: boolean | ((context: C) => boolean);
13770
+ onSelect: (context: C) => void;
13771
+ }
13772
+ //#endregion
13983
13773
  //#region src/render/customization/ribbon-control-catalog.d.ts
13984
13774
  declare const RIBBON_CONTROL_CATALOG: {
13985
13775
  readonly home: {
@@ -14561,6 +14351,9 @@ interface BackstageCustomization {
14561
14351
  }
14562
14352
  /** Right-click menu customisation. */
14563
14353
  interface ContextMenuCustomization {
14354
+ /** Additional host commands, independent of the viewer's AI connection. */
14355
+ extraElementCommands?: readonly HostMenuCommand<HostElementMenuContext>[];
14356
+ extraCanvasCommands?: readonly HostMenuCommand<HostCanvasMenuContext>[];
14564
14357
  /** Entries to remove from the element (right-click on a shape) menu. */
14565
14358
  hiddenElementCommands?: readonly ContextMenuCommandId[];
14566
14359
  /** Entries to remove from the empty-canvas menu. */
@@ -14682,6 +14475,8 @@ interface ResolvedCustomization {
14682
14475
  hiddenBackstagePages: ReadonlySet<BackstagePage>;
14683
14476
  hiddenBackstageCards: ReadonlySet<BackstageCardId>;
14684
14477
  hiddenElementCommands: ReadonlySet<ContextMenuCommandId>;
14478
+ extraElementCommands: NonNullable<ViewerCustomization['contextMenu']>['extraElementCommands'];
14479
+ extraCanvasCommands: NonNullable<ViewerCustomization['contextMenu']>['extraCanvasCommands'];
14685
14480
  hiddenCanvasCommands: ReadonlySet<CanvasContextMenuCommandId>;
14686
14481
  hiddenEditPointsCommands: ReadonlySet<EditPointsCommandId>;
14687
14482
  hiddenDrawingTools: ReadonlySet<ViewerDrawingToolId>;
@@ -14743,6 +14538,248 @@ interface ViewerCustomizationApi {
14743
14538
  setFeatureEnabled(feature: ViewerFeatureId, enabled: boolean): void;
14744
14539
  setDialogAvailable(dialog: ViewerDialogId, available: boolean): void;
14745
14540
  }
14541
+ /**
14542
+ * A font supplied by the host application. The package never ships fonts:
14543
+ * applications provide a licensed URL, data URL, or blob URL for their users.
14544
+ */
14545
+ interface ViewerFontSource {
14546
+ family: string;
14547
+ src: string;
14548
+ format?: 'truetype' | 'opentype' | 'woff' | 'woff2';
14549
+ weight?: string | number;
14550
+ style?: 'normal' | 'italic';
14551
+ }
14552
+ //#endregion
14553
+ //#region src/render/presentation-file-kinds.d.ts
14554
+ /**
14555
+ * presentation-file-kinds: the one place that answers "can the viewer open
14556
+ * this file?" and "what should the saved copy be called?".
14557
+ *
14558
+ * ## Why this is a shared decision and not five allow-lists
14559
+ *
14560
+ * The loader reads more formats than any single UI advertises. Legacy binary
14561
+ * `.ppt` (PowerPoint 97-2003) is the sharp example: `PptxHandler.load()` has
14562
+ * detected the OLE compound-file container and converted the binary deck
14563
+ * through the regular pptx pipeline for some time, but the product kept saying
14564
+ * it was unsupported, and a picker that filters the extension out makes a
14565
+ * working loader unreachable in practice. Whenever the loader learns a format,
14566
+ * exactly one list has to change.
14567
+ *
14568
+ * ## Read many, write several
14569
+ *
14570
+ * Input is a superset of output. We READ `.pptx`, `.ppsx`, `.pptm`, `.potx`,
14571
+ * legacy binary `.ppt` and portable `pptx-viewer-json`; we WRITE the OpenXML
14572
+ * family plus legacy binary `.ppt` (via `packages/core/src/core/ppt/writer/`,
14573
+ * a real MS-PPT/OLE2 encoder, not a stub). `savedPresentationFileName`
14574
+ * REPLACES the source extension with the extension of the format actually
14575
+ * being written rather than keeping the source's: a deck opened as
14576
+ * `report.pptx` and saved back as `.ppt` (or vice versa) must have its name
14577
+ * agree with its bytes, which is the kind of mismatch PowerPoint itself
14578
+ * refuses to open.
14579
+ *
14580
+ * This module deliberately imports nothing, so any layer (render, export, a
14581
+ * binding, a host app) can depend on it without risking an import cycle.
14582
+ *
14583
+ * @module render/presentation-file-kinds
14584
+ */
14585
+ /**
14586
+ * Extensions the built-in file picker offers, in the order it offers them.
14587
+ *
14588
+ * `.ppt` is in the list because the loader genuinely handles it, not as a
14589
+ * courtesy: see `packages/core/src/core/ppt/` and the `ppt-import` integration
14590
+ * suite, which asserts a `.ppt` loads to the same model as the `.pptx` it was
14591
+ * exported from.
14592
+ */
14593
+ declare const PRESENTATION_OPEN_EXTENSIONS: readonly ['.pptx', '.ppsx', '.pptm', '.potx', '.ppt', '.json'];
14594
+ /** Comma-separated `accept` attribute for a presentation file input. */
14595
+ declare const PPTX_OPEN_ACCEPT: string;
14596
+ /**
14597
+ * True when a picked / dropped file's name looks like something the loader can
14598
+ * open. Use this instead of a hand-rolled `endsWith` chain: a drop handler that
14599
+ * disagrees with the picker's `accept` list is a format that is supported by
14600
+ * mouse but not by drag, which is how `.ppt` stayed invisible.
14601
+ *
14602
+ * Extension-only, by design. The real answer comes from the container sniff in
14603
+ * `PptxHandler.load()`; this is only the cheap pre-filter a drop target needs
14604
+ * before it hands bytes to the loader.
14605
+ */
14606
+ declare function isSupportedPresentationFile(name: string | null | undefined): boolean;
14607
+ /**
14608
+ * True for the binary PowerPoint 97-2003 family. `.ppt` itself is now also a
14609
+ * SAVE target (see {@link SavedPresentationFormat}); `.pps`/`.pot` (97-2003
14610
+ * show/template) remain read-only siblings sharing the same record format.
14611
+ */
14612
+ declare function isLegacyBinaryPresentation(name: string | null | undefined): boolean;
14613
+ /** The formats the save path can produce. */
14614
+ type SavedPresentationFormat = 'pptx' | 'ppsx' | 'pptm' | 'ppt';
14615
+ /**
14616
+ * The stem of a presentation file name: directories and any loadable extension
14617
+ * removed. `C:\decks\report.ppt` becomes `report`; a name with no recognised
14618
+ * extension is kept whole, so `Untitled Presentation` survives intact rather
14619
+ * than losing everything after its last dot.
14620
+ */
14621
+ declare function presentationBaseName(sourceName: string | null | undefined, fallback?: string): string;
14622
+ /**
14623
+ * The name a saved copy should be offered under: the source stem plus the
14624
+ * extension of the format actually being written.
14625
+ *
14626
+ * This is what turns `report.ppt` into `report.pptx` on a regular Save As,
14627
+ * and `report.pptx` into `report.ppt` when the user explicitly picks the
14628
+ * PowerPoint 97-2003 format. Keeping the source extension would mislabel the
14629
+ * bytes either way.
14630
+ */
14631
+ declare function savedPresentationFileName(sourceName: string | null | undefined, format?: SavedPresentationFormat): string;
14632
+ //#endregion
14633
+ //#region src/render/insert-chart.d.ts
14634
+ /**
14635
+ * Dropdown ids for the insert-chart menu. Distinct from `PptxChartType`
14636
+ * because PowerPoint offers Column (vertical) and Bar (horizontal) as two
14637
+ * entries over the same underlying `'bar'` chart type, and because `'pareto'`
14638
+ * has no `PptxChartType` of its own: it is a dropdown entry that resolves to
14639
+ * `type: 'histogram'` (see docs/guide/limitations.md's ChartEx row) with a
14640
+ * frequency-plus-cumulative-percentage default shape. The other six ChartEx
14641
+ * ids (`histogram` through `regionMap`) map one-to-one onto their chart type.
14642
+ */
14643
+ type InsertChartKind = 'column' | 'bar' | 'line' | 'pie' | 'doughnut' | 'area' | 'scatter' | 'histogram' | 'pareto' | 'funnel' | 'treemap' | 'sunburst' | 'boxWhisker' | 'regionMap';
14644
+ /** In-memory clipboard payload stored when an element is copied or cut. */
14645
+ interface ElementClipboardPayload {
14646
+ element: PptxElement;
14647
+ isTemplate: boolean;
14648
+ }
14649
+ //#endregion
14650
+ //#region src/render/image-file-insertion.d.ts
14651
+ /**
14652
+ * Decode a local image File/Blob into a centred element, fitting the slide
14653
+ * without upscaling. Dimensions are slide pixels; image bytes are preserved.
14654
+ *
14655
+ * Resolves null for unsupported/unreadable images, invalid bounds, cancellation,
14656
+ * or unavailable browser APIs. Importing this module is safe outside a browser.
14657
+ * No slide, selection, history, clipboard, or network state is changed. The
14658
+ * caller must still validate its document/slide destination before committing.
14659
+ */
14660
+ declare function createImageElementFromFile(file: Blob, canvasSize: CanvasSize$1, signal?: AbortSignal): Promise<ImagePptxElement | null>;
14661
+ //#endregion
14662
+ //#region src/render/editor-image-paste.d.ts
14663
+ /** A currently editable slide. Return null while loading or outside canvas editing. */
14664
+ interface EditorImagePasteTarget {
14665
+ documentId: object;
14666
+ slideId: string;
14667
+ canvasSize: CanvasSize$1;
14668
+ }
14669
+ interface EditorImagePasteOptions {
14670
+ getCanvas(): HTMLElement | null;
14671
+ getTarget(): EditorImagePasteTarget | null;
14672
+ /** Use the normal editor command so selection, dirty state and Undo stay consistent. */
14673
+ insertElement(element: ImagePptxElement): void;
14674
+ }
14675
+ //#endregion
14676
+ //#region src/render/zoom-return-navigation.d.ts
14677
+ /**
14678
+ * The navigation-relevant fields of a Zoom click target, independent of
14679
+ * `zoomType`.
14680
+ *
14681
+ * `returnToParent` is already resolved to its EFFECTIVE value here (not the
14682
+ * raw, possibly-`undefined` `ZoomPptxElement`/`SummaryZoomTarget` field):
14683
+ * `CT_ZoomObjectProperties/@returnToParent` (MS-PPTX) is `<xsd:attribute
14684
+ * name="returnToParent" type="xsd:boolean" use="optional" default="true"/>`,
14685
+ * so an ABSENT attribute means true, not false. Core deliberately stores
14686
+ * `undefined` rather than fabricating `true` (so a round-trip never invents
14687
+ * an attribute the source never had), which makes `Boolean(x)` the wrong way
14688
+ * to read it; the two `resolve*NavigationTarget` functions below are the only
14689
+ * place that distinction should be made.
14690
+ */
14691
+ interface ZoomNavigationTarget {
14692
+ targetSlideIndex: number;
14693
+ targetSectionId?: string;
14694
+ returnToParent: boolean;
14695
+ transitionDurationMs?: number;
14696
+ }
14697
+ interface SubtitleSettings {
14698
+ spokenLanguage: string;
14699
+ }
14700
+ interface SubtitleSettingsLabels {
14701
+ title: string;
14702
+ language: string;
14703
+ browserLanguage: string;
14704
+ description: string;
14705
+ apply: string;
14706
+ cancel: string;
14707
+ }
14708
+ //#endregion
14709
+ //#region src/render/account.d.ts
14710
+ /** Local-only display profile shown in File > Account. Never sent anywhere; purely cosmetic. */
14711
+ interface ViewerProfile {
14712
+ displayName: string;
14713
+ /** CSS color for the avatar bubble background, e.g. `'#c2431f'`. */
14714
+ avatarColor: string;
14715
+ /** Single character shown in the avatar bubble. Derived from `displayName` when omitted. */
14716
+ initial?: string;
14717
+ }
14718
+ declare const DEFAULT_VIEWER_PROFILE: ViewerProfile;
14719
+ /** Suggested avatar color swatches for the Account profile editor. */
14720
+ declare const AVATAR_COLOR_SWATCHES: readonly string[];
14721
+ /** Derive the avatar-bubble initial from a profile, falling back to `'?'` for an empty name. */
14722
+ declare function resolveProfileInitial(profile: ViewerProfile): string;
14723
+ /**
14724
+ * Optional hook point for hosts that want to wire a real sign-in flow into
14725
+ * File > Account. Disabled by default: the Account page renders nothing
14726
+ * extra unless a host explicitly opts in by passing `enabled: true`.
14727
+ * See docs/guide for wiring instructions.
14728
+ */
14729
+ interface AccountAuthConfig {
14730
+ enabled: boolean;
14731
+ onSignIn: () => void;
14732
+ signedInUser?: {
14733
+ name: string;
14734
+ email?: string;
14735
+ avatarUrl?: string;
14736
+ };
14737
+ }
14738
+ interface LocalStorageUsageSummary {
14739
+ /** Number of presentations with a local autosave/recovery snapshot. */
14740
+ presentationCount: number;
14741
+ /** Total bytes across every stored snapshot. */
14742
+ totalBytes: number;
14743
+ }
14744
+ /** Summarize local (IndexedDB) storage usage for the Account > Storage & Privacy panel. */
14745
+ declare function getLocalStorageUsageSummary(): Promise<LocalStorageUsageSummary>;
14746
+ /**
14747
+ * Delete every locally stored presentation/recovery snapshot and persisted
14748
+ * viewer preference (theme/locale/profile). Irreversible; callers should
14749
+ * confirm with the user before invoking this.
14750
+ */
14751
+ declare function clearAllLocalViewerData(): Promise<void>;
14752
+ /** Persist an updated profile via the shared viewer-prefs store. */
14753
+ declare function saveViewerProfile(profile: ViewerProfile): void;
14754
+ //#endregion
14755
+ //#region src/render/viewer-prefs-storage.d.ts
14756
+ /**
14757
+ * `localStorage`-backed viewer chrome preferences (theme/locale/profile),
14758
+ * shared by every binding.
14759
+ *
14760
+ * This is the persistence layer behind File > Options' Appearance/Language
14761
+ * tabs and File > Account's profile editor when a host doesn't supply its
14762
+ * own `onThemeChange`/`onLocaleChange`/`onProfileChange` callbacks - i.e. the
14763
+ * "standalone" fallback path. Hosts that do wire those callbacks own
14764
+ * persistence themselves and this module is never touched.
14765
+ */
14766
+ declare const VIEWER_PREFS_STORAGE_KEY = "pptx-viewer-prefs";
14767
+ interface StoredViewerPrefs {
14768
+ /** Key into the shared `THEME_CATALOG` (or a host-supplied `availableThemes` catalog). */
14769
+ themeKey?: string;
14770
+ /** Locale code, e.g. `'fr'`. */
14771
+ localeCode?: string;
14772
+ /** Local-only display profile shown in File > Account. */
14773
+ profile?: ViewerProfile;
14774
+ /** Sparse File > Options diff against `DEFAULT_VIEWER_OPTIONS`. */
14775
+ options?: StoredViewerOptions;
14776
+ }
14777
+ /** Read all persisted viewer preferences. Returns `{}` when unavailable, unset, or corrupt. */
14778
+ declare function readStoredViewerPrefs(): StoredViewerPrefs;
14779
+ /** Merge `patch` into the persisted viewer preferences. Silently no-ops when storage is unavailable. */
14780
+ declare function writeStoredViewerPrefs(patch: Partial<StoredViewerPrefs>): void;
14781
+ /** Remove all persisted viewer preferences. Silently no-ops when storage is unavailable. */
14782
+ declare function clearStoredViewerPrefs(): void;
14746
14783
  //#endregion
14747
14784
  //#region src/render/viewport-fit.d.ts
14748
14785
  /** Unscaled CSS pixels reserved on each side of the ordinary viewer viewport. */
@@ -14759,6 +14796,31 @@ interface ViewportFitOptions {
14759
14796
  }
14760
14797
  /** The element fields an Edit Points commit writes. */
14761
14798
  type EditPointsElementPatch = Pick<ShapePptxElement, 'x' | 'y' | 'width' | 'height' | 'shapeType' | 'shapeAdjustments' | 'pathData' | 'pathWidth' | 'pathHeight' | 'customGeometryPaths' | 'customGeometryRawData' | 'customGeometryAdjustHandlesXY' | 'customGeometryAdjustHandlesPolar' | 'customGeometryConnectionSites' | 'customGeometryTextRect'>;
14799
+ type ThemeEditorLabels = Record<string, string>;
14800
+ //#endregion
14801
+ //#region src/web-components/theme-editor.d.ts
14802
+ interface PptxUiThemeEditorElement extends HTMLElement {
14803
+ theme: PptxTheme | undefined;
14804
+ labels: ThemeEditorLabels;
14805
+ disabled: boolean;
14806
+ }
14807
+ declare global {
14808
+ interface HTMLElementTagNameMap {
14809
+ 'pptx-ui-theme-editor': PptxUiThemeEditorElement;
14810
+ }
14811
+ }
14812
+ //#endregion
14813
+ //#region src/web-components/subtitle-settings.d.ts
14814
+ interface PptxUiSubtitleSettingsElement extends HTMLElement {
14815
+ settings: SubtitleSettings;
14816
+ labels: SubtitleSettingsLabels;
14817
+ languageDisabled: boolean;
14818
+ }
14819
+ declare global {
14820
+ interface HTMLElementTagNameMap {
14821
+ 'pptx-ui-subtitle-settings': PptxUiSubtitleSettingsElement;
14822
+ }
14823
+ }
14762
14824
  //#endregion
14763
14825
  //#region src/web-components/select-value.d.ts
14764
14826
  /** Public DOM shape used by all bindings; the element is not a native select. */
@@ -15991,4 +16053,4 @@ declare function SlideTemplatePreview({ templateId, scheme }: SlideTemplatePrevi
15991
16053
  declare function renderToCanvas(element: HTMLElement, options?: Partial<Options>): Promise<HTMLCanvasElement>;
15992
16054
 
15993
16055
  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, LOCALE_CATALOG, OPTIONS_PAGE_IDS, OPTIONS_SECTION_IDS, OPTIONS_SETTING_IDS, PPTX_OPEN_ACCEPT, PRESENTATION_OPEN_EXTENSIONS, PowerPointViewer, RIBBON_TAB_IDS, SLIDE_TEMPLATES, SlideCanvas, SlideTemplateGalleryDialog, SlideTemplatePreview, THEME_CATALOG, TOOLBAR_BUTTON_IDS, Toolbar, VIEWER_DIALOG_IDS, VIEWER_EXPORT_FORMAT_IDS, VIEWER_FEATURE_IDS, VIEWER_PANEL_IDS, VIEWER_PREFS_STORAGE_KEY, ViewerThemeProvider, buildSlideTemplateContent, buildSlideTemplateSlide, clearAllLocalViewerData, clearStoredViewerPrefs, createImageElementFromFile, defaultCssVars, defaultRadius, defaultThemeColors, describeCollaborationShellState, getAnimationInitialStyle, getLocalStorageUsageSummary, isLegacyBinaryPresentation, isSupportedPresentationFile, presentationBaseName, readStoredViewerPrefs, renderToCanvas, resolveProfileInitial, resolveThemeCatalogEntry, saveViewerProfile, savedPresentationFileName, themeToCssVars, useViewerBuildingBlocks, useViewerTheme, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, writeStoredViewerPrefs };
15994
- export type { AccountAuthConfig, BackstageCustomization, CollaborationConfig, CollaborationContextValue, CollaborationShellState, ContextMenuCustomization, ElementUpdate, ElementUpdateOptions, ExternalCollaborationAwareness, ExternalCollaborationSession, ExternalCollaborationSnapshot, KeyboardCustomization, LocalStorageUsageSummary, LocaleCatalogEntry, OptionsCustomization, OptionsPageId, OptionsSectionId, OptionsSettingId, OptionsSettingValues, PowerPointViewerAPI, PowerPointViewerHandle, PowerPointViewerProps, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiToolName, PptxAiWritePolicy, ResolvedCustomization, RibbonCustomization, SavedPresentationFormat, ShortcutChord, SlideCanvasProps, SlideTemplateGalleryDialogProps, SlideTemplateId, SlideTemplatePreviewProps, SlideTemplateSpec, StoredViewerPrefs, ThemeCatalogEntry, ToolbarActionId, ToolbarButtonId, ToolbarProps, ToolbarTabId, UseViewerBuildingBlocksInput, ViewerBuildingBlocksResult, ViewerCustomization, ViewerCustomizationApi, ViewerDialogId, ViewerExportFormatId, ViewerFeatureId, ViewerMode, ViewerPanelId, ViewerProfile, ViewerTheme, ViewerThemeColors, ViewportFitOptions, ViewportFitPadding };
16056
+ export type { AccountAuthConfig, BackstageCustomization, CollaborationConfig, CollaborationContextValue, CollaborationShellState, ContextMenuCustomization, ElementUpdate, ElementUpdateOptions, ExternalCollaborationAwareness, ExternalCollaborationSession, ExternalCollaborationSnapshot, HostCanvasMenuContext, HostElementMenuContext, HostMenuCommand, KeyboardCustomization, LocalStorageUsageSummary, LocaleCatalogEntry, OptionsCustomization, OptionsPageId, OptionsSectionId, OptionsSettingId, OptionsSettingValues, PowerPointViewerAPI, PowerPointViewerHandle, PowerPointViewerProps, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiToolName, PptxAiWritePolicy, ResolvedCustomization, RibbonCustomization, SavedPresentationFormat, ShortcutChord, SlideCanvasProps, SlideTemplateGalleryDialogProps, SlideTemplateId, SlideTemplatePreviewProps, SlideTemplateSpec, StoredViewerPrefs, ThemeCatalogEntry, ToolbarActionId, ToolbarButtonId, ToolbarProps, ToolbarTabId, UseViewerBuildingBlocksInput, ViewerBuildingBlocksResult, ViewerCustomization, ViewerCustomizationApi, ViewerDialogId, ViewerExportFormatId, ViewerFeatureId, ViewerMode, ViewerPanelId, ViewerProfile, ViewerTheme, ViewerThemeColors, ViewportFitOptions, ViewportFitPadding };